Information Technology Reference
In-Depth Information
dem Hauptspeicher ausgeführt und der Cache ggf. aktualisiert werden, indem ein
Eintrag ausgewählt (Ersetzungsstrategien Seite 153) und der Hauptspeicherblock,
auf den sich der Zugriff bezieht in die entsprechende Zeile geladen wird. Bei Lese-
zugriffen verfährt man hierbei möglichst so, dass zuerst das zu verarbeitende
Datum, im Bild z.B. die zwei grau unterlegten Bytes der ausgewählten untersten
Zeile, gelesen werden. Das Laden der restlichen Bytes geschieht dann parallel, wäh-
rend der Prozessor die Befehlsausführung fortsetzt. Ob dies tatsächlich geschieht, ist
jedoch von zahlreichen technischen Randbedingungen abhängig, wie der Datenbus-
breite, der verwendeten Speichertechnik usw.
Einen Cache mit mehreren Byte breiten Zeilen , wie in Bild 2.59 dargestellt, zu reali-
sieren, hat Vorteile: Im Allgemeinen folgen nämlich auf einen ersten Zugriff mit
großer Wahrscheinlichkeit weitere Zugriffe auf dieselbe oder auf benachbarte Spei-
cherzellen (man bezeichnet dies als örtliche Lokalität ), weshalb sich das vorsorgli-
che Laden einer vollständigen Zeile schnell rentiert [47, 144]. Dies gilt insbeson-
dere, wenn berücksichtigt wird, dass die meist zur Realisierung des Hauptspeichers
verwendeten Bausteine auf einen ersten Zugriff zwar langsam, auf unmittelbar fol-
gende, sich auf benachbarte Speicherzellen beziehende Zugriffe aber sehr schnell
reagieren (n einzelne Bytes werden also langsamer geladen als ein n Byte großer
Block [46]).
Ein weiterer Vorteil ist, dass ein vollassoziativer Cache mit breiten Zeilen einfacher
zu realisieren ist als einer mit schmalen Zeilen, da die Anzahl der benötigten Ver-
gleicher und die Anzahl der zu vergleichenden Bits umso geringer ist, je breiter die
Zeilen sind. - Abschließend sei angemerkt: Der Zugriff auf nicht im Cache ausge-
richtete Daten ist komplizierter als auf im Cache ausgerichtete Daten, da hierbei ggf.
auf zwei unabhängige Zeilen zugegriffen werden muss. Aufwendig sind aus demsel-
ben Grund auch Zugriffe auf Daten, die so breit sind, dass sie nicht in einer einzel-
nen Cache-Zeile Platz finden. Bei der Dimensionierung eines Caches ist dies, auch
in Hinblick auf zukünftige Erweiterungen, zu berücksichtigen.
Bemerkung. Vollassoziative Caches finden wegen des hohen Realisierungsaufwands zur Zwi-
schenspeicherung von Befehlen oder Daten kaum Verwendung. Sie haben jedoch eine gewisse
Bedeutung für die in Speicherverwaltungseinheiten benutzten sog. Deskriptorcaches ( translation
look-aside buffer , TLB , siehe Abschnitt 2.3.2). Zum Beispiel besitzt der UltraSPARC III Cu von
Sun [172] u.a. zwei vollassoziative Deskriptorcaches für jeweils 16 Einträge, mit denen die Adres-
sumsetzung bei Zugriffen auf Befehle bzw. Daten erfolgt. Wegen der geringen Kapazitäten ist die
Realisierung als vollassoziativer Cache hier ohne Probleme möglich.
Direkt zuordnender Cache (direct mapped cache). Beim direkt zuordnenden
Cache geschieht die Lokalisierung eines Eintrags nicht wie beim vollassoziativen
Cache, indem alle Einträge nach einem passenden Tag durchsucht werden, sondern,
indem die Adresse zunächst durch eine Hashfunktion zu einem Zeilenindex (im Bild
Index) gewandelt und damit auf einen herkömmlichen wahlfrei adressierbaren Spei-
cher zugegriffen wird. Da der Cache eine geringere Kapazität als der Hauptspeicher
besitzt, ist die mit der Hashfunktion implementierte Abbildungsvorschrift nicht ein-
deutig, so dass durch einen Tag-Vergleich in einem zweiten Schritt überprüft werden
muss, ob sich das adressierte und als gültig gekennzeichnete Datum tatsächlich im
Cache befindet oder nicht.
Search WWH ::




Custom Search