Direkt zugeordneter Cache: So bestimmen Sie die Adresszerlegung

550
Arthur Deschamps

Nehmen wir an, ich habe einen adressierbaren 32-Bit-Speicher und einen 4-Kib-Cache mit direktem Mapping. Angenommen, jeder Eintrag (Zeile) des Caches besteht aus einem eindeutigen Wort (32 Bit).

Wir können daraus schließen, dass die Größe des Index 10 Bits beträgt, da 4 * 2 ^ 10 Bytes / 4 = 2 ^ 10 Wörter = 2 ^ 10 Zeilen.

Da es nur ein Wort pro Zeile gibt, gehe ich davon aus, dass wir kein Versatzfeld benötigen. Daher werden die Adressen des Caches folgendermaßen zerlegt:

  • Bits 0 bis 9: Index
  • Bits 10 bis 31: Label

Ist meine Logik irgendwie falsch?

-2
Kann ich für die Leute, die sich abstürzen, einen Grund haben? Vielleicht ein Rat, um meine Frage zu verbessern? Arthur Deschamps vor 6 Jahren 0

2 Antworten auf die Frage

0
Arthur Deschamps

Wir benötigen 2 Bits für den Offset, da ein 32-Bit-Wert 4 Bytes hat und auf jedes Byte möglicherweise einzeln zugegriffen werden kann. Der Offset könnte also 0,1,2 oder 3 sein.

Daher wird eine Adresse durch den direkt abgebildeten Cache auf diese Weise zerlegt:

  • Bits 0 bis 1: Offset
  • Bits 2 bis 11: Index
  • Bits 12 bis 31: Label
0
Lewis Kelsey

Eine Cachezeile besteht normalerweise aus 64 Bytes, die Offset-Bits 0-6 wählen ein Byte in der Zeile aus.