Wie berechnet man die Anzahl der Tag-, Index- und Offset-Bits verschiedener Caches?


18

Speziell:

1) Ein direkt zugeordneter Cache mit 4096 Blöcken / Zeilen, in denen jeder Block 8 32-Bit-Wörter enthält. Wie viele Bits werden für die Tag- und Indexfelder benötigt, wenn eine 32-Bit-Adresse angenommen wird?

2) Gleiche Frage wie 1), aber für voll assoziativen Cache ?

Korrigieren Sie mich, wenn ich falsch liege:

Tag-Bits = Adressbitlänge - Exponent des Index - Exponent des Offsets?

[Ist der Versatz = 3 aufgrund von 2 ^ 3 = 8 oder ist es 5 von 2 ^ 5 = 32?]


einige erklärungen zu tag, index und offset in cs.stackexchange.com/questions/33818/…
Ran G.

Antworten:


20

Die gestellte Frage ist nicht ganz beantwortbar. Ein Wort wurde als 32-Bit- Wort definiert. Wir müssen wissen, ob das System "byteadressierbar" (Sie können auf einen 8-Bit-Datenblock zugreifen) oder "wortadressierbar" (der kleinste zugängliche Block ist 32-Bit) oder sogar "halbes Wort adressierbar" (der) ist Der kleinste Datenblock, auf den Sie zugreifen können, ist 16 Bit.) Sie müssen dies wissen, um zu wissen, was das niedrigstwertige Bit einer Adresse Ihnen sagt.

Dann arbeiten Sie von unten nach oben. Nehmen wir an , das System ist Byte adressierbar.

Dann enthält jeder Cache- Block 8 Wörter * (4 Bytes / Wort) = 32 = 2 5 Bytes, so dass der Versatz 5 Bits beträgt.

Der Index für einen direkt zugeordneten Cache ist die Anzahl der Blöcke im Cache (in diesem Fall 12 Bits, da 2 12 = 4096).

Dann sind das Tag alle Bits, die übrig sind, wie Sie angegeben haben.

Wenn der Cache assoziativer wird, aber die Größe gleich bleibt, gibt es weniger Indexbits und mehr Tagbits.


Ja, es ist byteadressierbar, aber die Frage, die ich mir angesehen habe, hat es nicht ausdrücklich angegeben
compski

3

Ihre Formel für Tag-Bits ist korrekt.

Ob der Versatz drei oder fünf Bits beträgt, hängt davon ab, ob der Prozessor die Byte- (Oktett-) Adressierung oder die Wortadressierung verwendet. Außerhalb von DSPs verwenden fast alle neueren Prozessoren die Byteadressierung. Daher ist es sicher, die Byteadressierung (und fünf versetzte Bits) zu übernehmen.


Ich wusste nicht, dass es solche Unterschiede gibt, ja, es ist eine Byte-Adressierung
compski

1
Vor der Mitte der 1970er Jahre konnten wir davon ausgehen, dass ein "Wort" die Größe der kleinsten adressierbaren Dateneinheit hatte. Diese Tabelle auf der Wikipedia-Seite über Word ist amüsant (wenn Sie so etwas mögen, (was ich tue.))
Wandering Logic

1

Ich lerne für die Abschlussprüfung des Faches Computersystem, habe eine Weile gegoogelt und diese Frage gefunden. Und dieser Teil der Frage ist verwirrend: "in dem jeder Block 8 32-Bit-Wörter hat". Ein Wort besteht aus 4 Bytes (oder 32 Bits), die Frage muss also nur lauten: "... in dem jeder Block 8 Wörter enthält".

Die Antwort lautet: - Jeder Block hat 32 Bytes (8 Wörter), daher benötigen wir 5 Offset-Bits, um zu bestimmen, welches Byte in jedem Block enthalten ist bestimme welches Set

=> Markierungsbit = 32 - 12 - 5 = 15

Für eine vollständige Assoziation ist die Anzahl der Sätze 1 => kein Indexbit => Tag-Bit = 32 - 0 - 5 = 27


1

In einem vollständig assoziativen Cache befinden sich keine Indexbits. Die Indexbits werden verwendet, um eindeutig zu identifizieren, zu welchem ​​Satz der Block gehört. In einem vollständig assoziativen Cache sind alle Blöcke im Wesentlichen Teil derselben Menge.


-1

im vollen assoziierten Mapping ist der Index 0 b / s, wie Sie sagen, set = 1, also index = log von 1 in base 2 = 0 set offset = log der Blockgröße von byte base 2, also verwenden Sie 8 = 2 ^ 3 oder 32 = 2 ^ 5 tag = 32-0-5 = 27 für direkten Index = 2 ^ 12 = 12 offset = 0 bit tag = 32-12-0 = 20


Ich finde das sehr unmöglich zu lesen. Bitte verwenden Sie eine Interpunktion.
David Richerby
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.