exercise-06_aufgabe 7 b)

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

exercise-06_aufgabe 7 b)
Kurze Frage: Wieviele Hex-Zahlen der Daten werden in die Tabelle eingetragen? Zum einen heißt es in der Aufgabenstellung: “Ein Programm liest nacheinander jeweils 4 Byte von den folgenden Adressen:
…”. Zum anderen sind für die Byteadresse 3 Bit eingeteilt 3Bit => 2^3 = 8 => 32 HexZahlen / 8 = 4 Hexzahlen (2 Byte) pro Cachezeile oder hab ich was falsch verstanden?


Gemeint ist wahrscheinlich Aufgabe 7b).

Deine Rechnung ist etwas verwirrend. Eine Cachezeile beinhaltet [m]2³=8[/m] Byte. Die CPU liest in der Aufgabe 4 Byte. Das bedeutet, dass die CPU, würde sie sequentiell und ausgerichtet lesen, zweimal in die gleiche Cachezeile greift, bevor sie die nächste Cachezeile behelligt.


Entschuldigung 7 b) war gemeint. Ich verstehe bloß nicht was du mir damit sagen willst. Wieviele Hex Zahlen müssen denn jetzt in die Daten-Spalte? Zur Abgabe habe ich damals 8 Hex Zahlen in die Cacheblöcke eingefügt. In der Korrektur hieß es: "in der Cachezeile ist nur Platz 8 Byte, nicht 16 -1 P
". Erste Zeile meiner Abgabe:
Menge Block Valid Tag Daten
0 0 1 0x0 00 00 02 00 a4 d5 31


Eine Cachezeile mit 8 Byte kann 16 hexadezimale Ziffern aufnehmen (jeweils zwei Ziffern pro Byte). “nicht 16” ist in der Korrektur in diesem Fall eigentlich falsch und es müsste “nicht 4” heißen, da du als Daten nur [m]00 a4 d5 31[/m] stehen hast, die ja bereits nach Bytes gruppiert sind.

1 „Gefällt mir“

ok danke für die schnelle Antwort. Eine Frage bleibt dann noch: Was hat es mit “Ein Programm liest nacheinander jeweils 4 Byte von den folgenden Adressen: …” auf sich? Welche 4 Byte werden gelesen wenn doch 8 Byte in die Cachezeile eingefügt werden?


Ein Programm liest beispielsweise einen Integer vom Stack. In diesem Fall werden 4 Byte gelesen. Eine Cachezeile ist aber meist größer als ein Integer oder ein Wort. Damit ist es nämlich möglich, die räumliche Lokalität auszunutzen, weil gleich mehr Integer/Wörter auf einmal aus dem Speicher in den Cache geladen werden. Falls die 4 Byte übrigens cachezeilenübergreifend gewesen werden, hätten zwei Cachezeilen geladen werden müssen.