Zuordnung CacheHauptspeicher Wie wirken Cache und HSP-Organisation zusammen? Wie kann ich ermitteln, was in den Cache geladen wird? Copyright © 2009 Rainer Gerhards rgerhards@adiscon.com
Warum Caches? Hauptspeicher zu langsam Cache zu teuer Lösung: Teilmenge in Cache halten! zeitliche Lokalität räumliche Lokalität
Organisation des Hauptspeichers Beispielarchitektur Konzeptionell linearer Adressraum Hauptspeichermatrix Adressdekoder für Zeilen Spalten . .
Cache Speicher ähnlich organisiert . Cache Hauptspeicher .
Auswahl des gewünschten Speicherwortes Zugriff auf ein Datum Auswahl des gewünschten Speicherwortes . Auswahl Zeile Übertrag in Register für Wortselektion CPU-Register . Laden in CPU-Register
Zugriff auf ein Datum – Cache! Auswahl des gewünschten Speicherwortes . Übertrag in Cache Laden in CPU-Register CPU-Register . Auswahl Zeile
Aufteilung der phys. Adresse Beispiel: 20 Bit Adresse (1 MB), 1K Cache, Blockgröße 8 Byte 19 10 9 3 2 Etikett (Tag) Index Wortbits 10 Bit 7 Bit 3 Bit Speicher hat 1024 mal 1024 Bytes 1024/8 Bytes = 128 Einträge Werte von 0 bis 7
Wortbits… . Innerhalb der Zeile wird mit Wortbits adresiert! CPU-Register . Wortbits sind immer 0!
Adressierung im Cache Tag Index . CPU-Register .
Beispielrechnung 0100 1111 0110 1101 0010 4 F 6 D 2 Adresse 19 10 9 3 Etikett (Tag) Index Wortbits 0100 1111 0110 1101 0010 1. In Binär umwandeln! 2. Einzelne Bitfelder abtragen! 4 F 6 D 2 Adresse
Beispielrechnung 0100 1111 0110 1101 0010 4 F 6 D 2 Adresse 19 10 9 3 Etikett (Tag) Index Wortbits 010 0100 1111 0110 1101 0010 1. In Binär umwandeln! 2. Einzelne Bitfelder abtragen! 4 F 6 D 2 Adresse
Beispielrechnung 0100 1111 0110 1101 0010 4 F 6 D 2 Adresse 19 10 9 3 Etikett (Tag) Index Wortbits 10 1101 010 0100 1111 0110 1101 0010 1. In Binär umwandeln! 2. Einzelne Bitfelder abtragen! 4 F 6 D 2 Adresse
Beispielrechnung 0100 1111 0110 1101 0010 4 F 6 D 2 Adresse 19 10 9 3 Etikett (Tag) Index Wortbits 01 0011 1101 10 1101 010 0100 1111 0110 1101 0010 1. In Binär umwandeln! 2. Einzelne Bitfelder abtragen! 4 F 6 D 2 Adresse
Beispielrechnung 0100 1111 0110 1101 0010 4 F 6 D 2 Adresse 19 10 9 3 Etikett (Tag) Index Wortbits 01 0011 1101 10 1101 010 Die Cache-Line beginnt auf Adresse 4F6D0. 0100 1111 0110 1101 0010 Es muss nämlich zu Anfang der Cache-Line adressiert werden, die Wortbits werden daher auf 0 gesetzt. 4 F 6 D 2 Adresse
Ein Cache Miss… Zugriff auf 4F6D2 Index 10 1101 . Tag: 00 1101 1000 ungleich 01 0011 1101 Cache-Miss! .
Also Cache-Line lesen… Zugriff auf 4F6D2 . Übertrag in Cache Tag auf 01 0011 1101 setzen . Auswahl Zeile 4F6D0
Weiter wie bei Cache-Hit… Zugriff auf 4F6D2 . Auswahl des gewünschten Speicherwortes 010 Laden in CPU-Register CPU-Register .
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