Hardware Reference
In-Depth Information
Als Ersetzungsstrategie stehen zur Auswahl random , serial , lru und
pseudolru , wie oben besprochen.
Beim D-Cache und S-Cache, also den Caches, auf die auch schreibend zuge-
griffen wird, lassen sich ferner folgende Parameter konfigurieren:
granularity (Granularitat, Kornigkeit) gibt an, auf wie viele Bytes sich
ein Dirty-Bit bezieht. Ein einzelner MMIX -Befehl kann stets nur Daten in
einem Octa-Byte schreiben. Wenn nun aber eine Cache-Line mehr als ein
Octa-Byte aufnehmen kann, so wird mit einem Speicherbefehl auch nur ei-
nes der Octa-Bytes beschrieben. Damit musste auch nur dieses eine Octa-
Byte als Dirty gekennzeichnet werden. Dies ist aber nur dann moglich,
wenn fur jedes Octa-Byte ein eigenes Dirty-Bit vorhanden ist, was in der
Praxis oft nicht der Fall ist. Wenn nur ein Dirty-Bit pro Cache-Line vor-
handen ist, so fuhrt jeder Castoff gleich zu mehreren Schreibzugriffen auf
den Hauptspeicher - selbst wenn nur ein einziges Octa geandert wurde.
Dieser Parameter beschreibt also die Auflosung der Dirty-Bits.
copyouttime gibt an, wie viele Taktzyklen erforderlich sind, um eine
Cache-Line in den Castoff-Buffer zu kopieren.
Die Aktivitatsdiagramme, die sich mit der in Anhang A.4 vorgestellten Ober-
flache zur Visualisierung erzeugen lassen, geben auch Auskunft uber samtliche
Aktivitaten des Hauptspeichers und der Caches. Unterhalb der Darstellung
der Belegung des Reorder Buffer sind mehrere Spuren, in denen das angezeigt
wird. Abbildung 7.13 zeigt einen kurzen Ausschnitt von 300 Taktzyklen fur
das Programm Quicksort.
Es ist deutlich zu sehen, dass der schreibende Zugriff vom S-Cache auf den
Hauptspeicher abgeschlossen sein muss, bevor umgekehrt der S-Cache vom
Hauptspeicher lesend gefullt werden kann (ganz links). Lesen aus dem Haupt-
speicher bedeutet auch ein gleichzeitiges Fullen von S-Cache und D-Cache.
Gut erkennbar ist auch, dass die Befehlsausfuhrung wahrend dieser lesen-
den Speicherzugriffe ins Stocken gerat (stall) - es ist keine Veranderung im
Reorder Buffer zu beobachten.
Beispiel
Als Beispiel verwenden wir eine sehr haufig ausgefuhrte Aufgabe: Das Kopie-
ren von Zeichenketten. In C steht dazu die Funktion strncpy zur Verfugung.
Diese kopiert die Zeichen einer Zeichenkette von einem Quell- in einen Ziel-
bereich. Allerdings nur bis eine vorgegebene Anzahl an Bytes kopiert oder
Search WWH ::




Custom Search