0 votes
Bei einem direktadressierten Cache hat die Berechnung mit den Formeln: Wortadresse/Blockgröße mod #Sätze für den Satz und Wortadresse/Blockgröße div #Sätze für den Tag gut geklappt, jedoch hatte ich dann Probleme bei der Berechnung mit einem 2-way oder 4-way Cache.

Woher weiß ich aber in welchem Block das Wort stehen muss? Z.b bei einem 4-way haben wir 2 Sets mit je 4 Blöcken und je 2 Wörtern. Mit der Formel: Tag mod #Blöcke habe ich die Position des Wortes berechnet, jedoch weiß ich nicht, ob das so richtig ist und wie die Wörter dann in den Block geladen werden.

Als Beispiel: obiges 4-way Cache. Die Zahl 39 wäre laut den Berechnungen in Set 1 im Block 5 und beim DM wäre die Zahl 39 in Set 0 im Block 3.

Macht das Sinn? Wenn ja, woher weiß ich dann welche Wörter noch in den Block geladen werden, wenn ein Block 2 Wörter oder mehr hat?
in * TF "Emb. Sys. and Rob." by (310 points)

1 Answer

0 votes
 
Best answer
Beim direktadressierten Cache kann man die Adresse eines Blockes im Cache direkt ausrechnen, da es nur einen einzigen Platz im Cache für jede Block gibt. Bei satz-assoziativen Caches kann man für eine Blockadresse nur den jeweiligen Satz ausrechnen, der wiederum für jede Bockadresse eindeutig definiert ist. Man kann dann allerdings jeden Block in dem Satz verwenden. Natürlich wird man den nächsten freien Block wählen, sofern es noch einen freien Block im Satz gibt. Andernfalls muss einer der Blöcke im Satz entfernt werden, um Platz für den neuen Block zu schaffen. Hierfür muss man sich einer Replacement-Strategie bedienen, die z.B. den ältesten Block oder den am wenigsten benutzen Block entfernen wird.
by (92.2k points)
selected by

Related questions

Imprint | Privacy Policy
...