Hardware Reference
In-Depth Information
Befehle im ROB
10
5
Taktzyklen
300
1. 2. 3. 4. 5.
Abbildung 7.15. Aktivitatsdiagramm uber 300 Taktzyklen bei Ausfuhrung des
Programms strncpy.mms mit 2-Wege assoziativem Cache. Die mit 1. bis 5. markierten
Vorgange werden im Text naher erlautert
Line als dirty gekennzeichnet ist, muss sie in den Speicher zuruck geschrie-
ben werden.
Dieser Effekt, dass sich gewisse Datenbereiche standig gegenseitig aus dem
Cache verdrangen, ist ein recht haufiges Phanomen. Man spricht von Thra-
shing (englischen to thrash prugeln).
In diesem Beispiel lasst sich dieses Verhalten vermeiden, wenn die Adressen
des Quell- und des Zielbereichs so gewahlt werden, dass sich keine Uber-
schneidung bei der Abbildung auf eine Cache-Line ergibt. Die Lage der Daten
im Speicher lasst sich meist aber nur schwer beeinflussen bzw. daraufhin
uberprufen, ob sie ein solches Thrashing auslost. Gute Compiler konnen die
Parameter des Cache berucksichtigen.
Es erweist sich in diesem Fall als vorteilhaft, assoziativen Cache einzusetzen,
um die Gefahr des Thrashing zu mindern. Betrachten wir also als Nachstes
einen 2-Wege assoziativen Cache. Nun werden die Daten von Quell- und
Zielbereich auf das gleiche Cache-Set abgebildet, konnen innerhalb des Sets
jedoch in unterschiedliche Cache-Lines gelegt werden. Das zugehorige Akti-
vitatsdiagramm zeigt Abbildung 7.15.
Wir sehen folgende Phasen:
1. Daten des Quellbereichs werden in den Cache geschrieben.
2. Daten des Zielbereichs werden in den Cache geschrieben.
3. Nach jedem Schreibvorgang (Zeile 9) wird der Inhalt des Write-Buffers in
den Daten Cache ubertragen. Dies erfolgt insgesamt 16 Mal.
4. Die ersten 16 Werte sind kopiert und die nachsten 16 Bytes werden in das
zweite Cache-Set geladen.
 
Search WWH ::




Custom Search