5.2. Konzepte der Speicheradressierung

Die Konfiguration von Platten, Köpfen und Zugriffsarmen macht es möglich, den Kopf über jedem Teil jeder Oberfläche jeglicher Platte im Speichergerät zu positionieren. Dies reicht jedoch nicht aus, um die Speicherkapazität voll auszunutzen. Es bedarf daher einer Methode, bei der Adressen an einheitlich große Teile des verfügbaren Speichers vergeben werden können.

Hierbei ist noch einen letzter Aspekt in diesem Prozess zu beachten. Berücksichtigen Sie alle Tracks in den vielen Zylindern eines herkömmlichen Massenspeichergerätes. Da die Tracks verschiedene Durchmesser haben, variiert auch deren Umfang. Wenn daher Speicher nur auf den Tracklevel adressiert werden würde, so würde jeder Track eine andere Menge an Daten besitzen — Track #0 (nahe dem Mittelpunkt der Platte) würde z.B. 10 827 Bytes enthalten während Track #1 258 (nahe der Außenkante der Platte) 15 382 Bytes enthalten würde.

Die Lösung ist, die Tracks in mehrere Sektoren oder Blöcke von gleichgroßen (meistens 512 Bytes) Speichersegmenten zu unterteilen. Das Ergebnis ist eine feste Anzahl von Sektoren pro Track[1].

Ein Nebeneffekt dabei ist, dass jeder Track ungenutzten Speicherplatz enthält — nämlich den Platz zwischen den Sektoren. Trotz der konstanten Anzahl der Sektoren pro Track unterscheidet sich die Größe des ungenutzten Speicherplatzes — relativ wenig ungenutzter Speicherplatz in den inneren Tracks und sehr viel mehr in den äußeren Tracks. In jedem Fall ist ungenutzter Platz eine Verschwendung, da allfällige Daten hierauf nicht gespeichert werden können.

Der Vorteil der Versetzung dieses ansonsten verschwendeten Speicherplatzes ist jedoch, dass die effektive Adressierung des Speichers auf einem Massenspeichergerät möglich ist. Es gibt zwei Methoden für die Adressierung — Geometrie-basierte Adressierung und Block-basierte Adressierung.

5.2.1. Geometrie-basierte Adressierung

Der Begriff Geometrie-basierte Adressierung bezieht sich auf die Tatsache, dass Massenspeichergeräte Daten an einem bestimmten physikalischen Ort auf dem Speichermedium speichern. Im Falle der hier beschriebenen Geräte bezieht sich dies auf drei spezielle Dinge, die einen bestimmten Punkt auf der Platte des Geräts definieren:

Die folgenden Abschnitte behandeln wie eine hypothetische Adresse einen bestimmten physikalischen Ort auf dem Speichermedium beschreiben kann.

5.2.1.1. Zylinder

Wie bereits erwähnt, bezeichnet der Zylinder eine bestimmte Position des Zugriffsarms (und dadurch der Lese/Schreib-Köpfe). In dem wir einen bestimmten Zylinder angeben, eliminieren wir alle anderen Zylinder und reduzieren somit die Suche auf einen einzigen Track für jede Oberfläche im Massenspeichergerät.

ZylinderKopfSektor
1014XX

Tabelle 5-1. Speicher-Adressierung

Unter Tabelle 5-1 wurde der erste Teil einer Geometrie-basierten Adresse bereits ausgefüllt. Die beiden anderen Komponenten dieser Adresse — Kopf und Sektor — bleiben unspezifiziert.

5.2.1.2. Kopf

Auch wenn wir genaugenommen eine bestimmte Platte auswählen, da jede Oberfläche einen Lese/Schreib-Kopf zugewiesen hat, ist es einfacher, dies als Interaktion mit einem bestimmten Kopf zu betrachten. Die Elektronik des Gerätes wählt in der Tat einen Kopf aus und — da alle anderen nicht ausgewählt sind — interagiert nur mit dem ausgewählten Kopf für die Dauer des I/O-Betriebes. Alle anderen Tracks, aus denen der aktuelle Zylinder besteht, wurden nunmehr eliminiert.

ZylinderKopfSektor
10142X

Tabelle 5-2. Speicher-Adressierung

Unter Tabelle 5-2 wurden die ersten beide Teile einer Geometrie-basierten Adresse bereits ausgefüllt. Eine letzte Komponente dieser Adresse — der Sektor — ist noch unbestimmt.

5.2.1.3. Sektor

Indem wir einen bestimmten Sektor angeben, ist die Adressierung vollständig und hat den gewünschten Datenblock eindeutig identifiziert.

ZylinderKopfSektor
1014212

Tabelle 5-3. Speicher-Adressierung

Unter Tabelle 5-3 wurde die vollständige Geometrie-basierte Adresse bereits ausgefüllt. Diese Adresse identifiziert den Ort eines bestimmten Blockes unter allen anderen Blöcken auf diesem Gerät.

5.2.1.4. Probleme bei Geometrie-basierter Adressierung

Während Geometrie-basierte Adressierung relativ unkompliziert ist, gibt es einen mehrdeutigen Bereich, der problematisch werden kann. Die Doppeldeutigkeit liegt in der Nummerierung von Zylindern, Köpfen und Sektoren.

Es ist wahr, dass jede Geometrie-basierte Adresse einen bestimmten Datenblock eindeutig identifiziert; dies gilt jedoch nur, wenn die Nummerierung von Zylindern, Köpfen und Sektoren nicht geändert wird. Ändert sich die Nummerierung (wenn sich zum Beispiel die Hardware/Software für das Speichergerät ändert), ändert sich somit auch das Mapping zwischen Geometrie-basierten Adressen und den zugehörigen Datenblöcken, was ein Zugreifen auf die gewünschten Daten unmöglich macht.

Aufgrund dieser möglichen Mehrdeutigkeit wurde ein anderer Ansatz für die Adressierung entwickelt. Der nächste Abschnitt beschreibt dies eingehender.

5.2.2. Block-basierte Adressierung

Block-basierte Adressierung ist wesentlich unkomplizierter als Geometrie-basierte Adressierung. Bei der Block-basierten Adressierung wird jedem Block eine einzigartige Nummer gegeben. Diese Nummer wird vom Computer zum Massenspeichermedium weitergeleitet, welches dann intern die Umwandlung in eine Geometrie-basierte Adresse, die vom Schaltkreis des Geräts benötigt wird, durchführt.

Da die Umwandlung in eine Geometrie-basierte Adresse immer vom Gerät selbst durchgeführt wird, ist diese auch immer konsistent und eliminiert somit das Problem, das der Vergabe von Geometrie-basierten Adressen inhärent ist.

Fußnoten

[1]

Während frühere Massenspeichergeräte die gleiche Anzahl von Sektoren für jeden Track verwendeten, teilen neuere Geräte die Zylinder in verschiedene "Zonen" auf, bei denen jede Zone eine unterschiedliche Anzahl von Sekunden pro Track hat. Der Grund hierfür ist das Ausnutzen des zusätzlichen Speicherplatzes zwischen den Sektoren in den äußeren Zylindern, bei denen mehr ungenutzter Speicherplatz zwischen den Sektoren vorhanden ist.