Beispiel 6)
Ein 4-way Set-Associative Cache ist ein Cache, der aus Sets zu je 4 Blöcken besteht. Jeder dieser Blöcke hat laut Angabe 16 Byte
Man kann sich dies als Zeilen mit 4 Blöcken vorstellen, wie im Bild. Dies wird gemacht, um schneller parallel den Speicher verarbeiten zu können. Die Speicheradressen werden hierbei nacheinander in die einzelnen Cache-Blöcke gelegt, und zwar Adresse 1 in Block 1, Adresse 2 in Block 2 usw. Durch die parallele Arbeit gewinnt man an Performance.
a)
Ein Cache-Set ist also eine Zeile des Caches, bei einem 4-way Cache sind das 4 Blöcke. Laut Angabe hat der gesamte Cache 16Kbyte, ein Block hat 16Byte. Der gesamte Cache hat also 1024 (16KByte = 16384Byte / 16 Byte) Blöcke. Wenn in einer Zeile 4 Blöcke drin sind, sind das 256 Zeilen.
b) Hier wirds etwas komplizierter:
Wir wissen bereits, dass ein Cache-Block 16Byte groß ist. Daraus ergibt sich der Offset, der ist nämlich so groß, dass 16Byte einzeln (pro Byte) adressiert werden können. Das heißt, er ist 4Bit (2^4 = 16) groß.
Die Länge des Tags lässt sich anhand der Tabelle in c) ablesen. Hier sind als Tag etwa "DE0", "003", "3FF" und "7E8" aufgeführt. Dies sind offensichtlich HEX-Ziffern. Nun muss man wissen dass eine HEX-Ziffer immer 4Bit (2^4 = 16) Wertebereich hat, da sie ja 16 Zustände annehmen kann (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F). 3 HEX-Ziffern hintereinander sind also 4Bit + 4Bit + 4Bit = 12Bit. Das Tag ist 12Bit lang.
Der Index ist damit nun der verbleibende Teil der Adresse. Laut Angabe sind die Adressen 24Bit lang, der Tag 12Bit und der Offset 4Bit. Damit muss der Index 8Bit (24-12-4) lang sein.
d) fehlt
e)
Hierbei rechnet man die Anzahl der Adressen (24Bit) durch die Anzahl der Zeilen des Caches. Es gibt 2^24 Adressen und 256 Zeilen, das sind also 16777216 / 256 = 65536 oder 2^24 / 2^8 = 2^16
Bookmarks