Information Technology Reference
In-Depth Information
den Tag-Vergleich jedoch mit realen Adressen durchzuführen (b und c), wie dies
z.B. im UltraSPARC III Cu von Sun realisiert ist [172].
MMU
TLB
Prozessor
b
a
vadr. radr.
c
Speicher
reale Adresse
Cache
virtuelle Adresse
Daten
Daten
Bild 2.65. Dynamische Adressumsetzung durch eine Speicherverwaltungseinheit. Der Cache wird
entweder mit realen (b) oder virtuellen Adressen (c) angesprochen
In Bild 2.65 sind der Prozessor, der Cache und der Hauptspeicher über einen einzel-
nen Pfad miteinander gekoppelt. Wie in Abschnitt 2.3.1 beschrieben, werden oft
separate L1-Caches für Befehle und Daten verwendet. Es ist daher naheliegend,
Speicherverwaltungseinheiten ebenfalls separat für Befehle und Daten zu realisie-
ren. Wegen der unterschiedlichen Anforderungen, die dabei auftreten, können die
beiden Speicherpfade natürlich auch asymetrisch aufgebaut sein. So besitzt der
MIPS64 20Kc von MIPS [106] z.B. einen virtuell adressierten Befehls- und einen
real adressierten Datencache, was sinnvoll ist, weil auf Befehle ausschließlich
lesend, auf Daten jedoch auch schreibend zugegriffen wird. Daher ist explizit nur
dafür Sorge zu tragen, dass die Inhalte unterschiedlicher Datencaches in einem
Mehrprozessorsystem konsistent zueinander bleiben. Wie bereits beschrieben, ist
dies einfacher, wenn man einen Cache real adressiert. Nachfolgend werden die
Organisationsformen von Speicherverwaltungseinheiten diskutiert. Für eine detail-
liertere Abhandlung der Thematik sei der Leser noch auf [46], für eine Beschrei-
bung der Bedeutung für Betriebssysteme auf [164] verwiesen.
Segmentierung (segmentation)
Bei der Segmentierung verwaltet man den Hauptspeicher in logischen Einheiten,
z.B. Programmcode, Daten oder Konstanten. Die als Segmente bezeichneten Ein-
heiten werden mit Hilfe einer Segmentnummer eindeutig identifiziert. Bei einem
Zugriff wird die in der virtuellen Adresse codierte Segmentnummer mit Hilfe einer
Segmenttabelle in eine reale Segmentbasis gewandelt und so der Speicherbereich
adressiert, der der korrespondierenden logischen Einheit zugeordnet ist. Auf die
Speicherzelle erfolgt der Zugriff schließlich relativ zur Segmentbasis , wobei man als
Offset die in der virtuellen Adresse codierte Bytenummer verwendet.
Die Wirkungsweise einer segmentierenden Speicherverwaltung ist in Bild 2.66 dar-
gestellt. Durch Addition der Segmentnummer und der normalerweise in einem
Register gehaltenen Segmenttabellenbasisadresse (Basis) wird der für den Zugriff
benötigte Deskriptor ermittelt 1 (a). In ihm sind neben der Segmentbasis die Größe
des Segments ( Limit ) und die für Zugriffe zu berücksichtigenden Attribute gespei-
Search WWH ::




Custom Search