zuordnung cache hauptspeicher wie wirken cache und hsp-organisation zusammen? wie kann ich...
TRANSCRIPT
Zuordnung CacheHauptspeicher
Wie wirken Cache und HSP-Organisation zusammen?
Wie kann ich ermitteln, was in den Cache geladen wird?
Copyright © 2009
Rainer [email protected]
Warum Caches?
Hauptspeicher zu langsam Cache zu teuer Lösung: Teilmenge in Cache halten!
zeitliche Lokalitäträumliche Lokalität
Organisation des Hauptspeichers
Beispielarchitektur Konzeptionell linearer
Adressraum Hauptspeichermatrix Adressdekoder für
Zeilen Spalten
.
.
.
.
.
.
Cache Speicher ähnlich organisiert
.
.
.
.
.
.
Cache Hauptspeicher
Zugriff auf ein Datum
.
.
.
.
.
.
Auswahl Zeile
Übertrag in Registerfür Wortselektion
Auswahl des gewünschtenSpeicherwortes
CPU-Register
Laden in CPU-Register
Zugriff auf ein Datum – Cache!
.
.
.
.
.
.
Auswahl Zeile
Auswahl des gewünschtenSpeicherwortes
Übertragin Cache
Laden in CPU-Register
CPU-Register
Aufteilung der phys. Adresse
Etikett (Tag) Index Wortbits
Beispiel:
20 Bit Adresse (1 MB), 1K Cache, Blockgröße 8 Byte
19 0
3 Bit
1024/8 Bytes =128 Einträge
Werte von0 bis 7
Speicher hat 1024 mal1024 Bytes
7 Bit
2310 9
10 Bit
Wortbits…
.
.
.
.
.
.
CPU-Register
Wortbits sind immer 0!
Innerhalb der Zeile wirdmit Wortbits adresiert!
Adressierung im Cache
.
.
.
.
.
.
CPU-Register
Tag Index
Beispielrechnung
Etikett (Tag) Index Wortbits
19 02310 9
4 F 6 D 2Adresse
0100 1111 0110 1101 0010
1. In Binär umwandeln!
2. Einzelne Bitfelder abtragen!
Beispielrechnung
Etikett (Tag) Index Wortbits
19 02310 9
4 F 6 D 2Adresse
0100 1111 0110 1101 0010
1. In Binär umwandeln!
010
2. Einzelne Bitfelder abtragen!
Beispielrechnung
Etikett (Tag) Index Wortbits
19 02310 9
4 F 6 D 2Adresse
0100 1111 0110 1101 0010
1. In Binär umwandeln!
010
2. Einzelne Bitfelder abtragen!
10 1101
Beispielrechnung
Etikett (Tag) Index Wortbits
19 02310 9
4 F 6 D 2Adresse
0100 1111 0110 1101 0010
1. In Binär umwandeln!
010
2. Einzelne Bitfelder abtragen!
10 110101 0011 1101
Beispielrechnung
Etikett (Tag) Index Wortbits
19 02310 9
4 F 6 D 2Adresse
0100 1111 0110 1101 0010
01010 110101 0011 1101
Die Cache-Line beginnt aufAdresse 4F6D0.
Es muss nämlich zu Anfangder Cache-Line adressiert werden,die Wortbits werden daher auf 0 gesetzt.
Ein Cache Miss…
.
.
.
.
.
.
Zugriff auf 4F6D2
Index10 1101
Tag: 00 1101 1000
ungleich 01 0011 1101
Cache-Miss!
Also Cache-Line lesen…
.
.
.
.
.
.
Übertragin Cache
Zugriff auf 4F6D2
Auswahl Zeile 4F6D0
Tag auf 01 0011 1101 setzen
Weiter wie bei Cache-Hit…
.
.
.
.
.
.
Auswahl des gewünschtenSpeicherwortes 010
Laden in CPU-Register
CPU-Register
Zugriff auf 4F6D2
Fazit
Es wird immer eine ganze Cache-Line geladen
Die Adresse der Cache-Line erhält man, indem man die Wortbits auf 0 setzt
Bei assoziativen Caches ist Cache-Speicher n-fach je Index vorhanden