Information Technology Reference
In-Depth Information
Befehle oder Daten speichern lassen. Da nicht im Voraus bekannt ist, welche Pro-
gramme gleichzeitig auszuführen sind, kann die Zuordnung der einzelnen Speicher-
bereiche nicht statisch durch den Übersetzer, sondern muss dynamisch zur Laufzeit
oder kurz bevor ein Programm gestartet wird, erfolgen.
Im einfachsten Fall werden z.B. alle absoluten oder indirekten Adressen (nicht
jedoch die befehlszählerrelativen Adressen) zum Zeitpunkt des Ladens eines Pro-
gramms durch Addition mit den Basisadressen für Befehle oder Daten an die aktuel-
len Gegebenheiten angepasst, wobei die zu adaptierenden Adressen in einer speziel-
len, dem Programm angehefteten sog. Relokationstabelle eingetragen sind. Ein
Umstrukturieren des Hauptspeichers, z.B. um Platz für weitere parallel auszufüh-
rende Programme zu schaffen, ist jedoch nur sehr aufwendig durchführbar, da ggf.
die absoluten und indirekten Adressen aller gespeicherten Programme modifiziert
werden müssen. Ein weiterer Nachteil ist, dass jedes Programm auf die für andere
Programme reservierten Speicherbereiche zugreifen kann. Dies sollte aus Gründen
der Systemsicherheit (ein abstürzendes Programm führt zum Absturz des Gesamt-
systems) oder Datensicherheit (ein Programm späht die geheimen Daten eines ande-
ren Programms aus) verhinderbar sein.
Die genannten Nachteile treten nicht auf, wenn eine in Hardware realisierte sog.
Speicherverwaltungseinheit (memory management unit, MMU) zum Einsatz
kommt. Sie ist zwischen Prozessor und Speicher eingefügt und setzt bei jedem
Zugriff dynamisch mit Hilfe von Tabellen die im Programm benutzten sog. virtuel-
len in reale Adressen um (Bild 2.65). Jedem Adressbereich ist dazu ein Tabellenein-
trag zugeordnet, der als Deskriptor ( descriptor ) bezeichnet wird und in dem neben
der jeweils zu verwendenden Abbildungsvorschrift die gültigen Zugriffsrechte, die
Verfügbarkeit des verwalteten Speicherbereichs usw. codiert sind. Um einen verzö-
gerungsfreien Zugriff auf Deskriptoren zu ermöglichen, werden diese in einem
meist vollassoziativ arbeitenden sog. Deskriptorcache ( translation lookaside buffer ,
TLB ) zwischengespeichert. In Fließbandtechnik ist es so möglich, pro Takt eine
reale (im Bild mit a markiert) in eine virtuelle Adresse umzuwandeln (b) und, falls
der entsprechende Hauptspeicherinhalt sich im Cache befindet, pro Takt einen
Zugriff durchzuführen.
Da der Cache logisch gesehen dem Hauptspeicher zugerechnet werden kann, ist es
sinnvoll, ihn mit realen Adressen anzusprechen (b). Allerdings hat dies den Nach-
teil, dass die Latenzzeit eines Zugriffs gleich der Summe der Latenzzeiten für die
Adressumsetzung und den Cache-Zugriff ist. Die Zeit lässt sich verkürzen, indem
der Cache virtuell adressiert wird (c). Jedoch steigert dies signifikant den erforderli-
chen Aufwand, um z.B. den Zugriff parallel arbeitender Prozessoren auf den Cache
zu ermöglichen.
Problematisch ist auch, dass bei einem Prozesswechsel der Cache vollständig
geleert werden muss ( cache-flush ), da es nicht möglich ist zu unterscheiden, zu wel-
chem Prozess ein Cache-Eintrag gehört. Zwar kann die virtuelle Adresse um eine
Prozessnummer ( process identification , PID ) erweitert und so eine eindeutige
Zuordnung erreicht werden, jedoch ist dies mit zusätzlichem Aufwand verbunden.
Als Kompromiss bietet sich an, den Cache mit virtuellen Adressen zu indizieren,
Search WWH ::




Custom Search