Forum: Mikrocontroller und Digitale Elektronik Cacheline


von Pete S. (petesahat)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

wir haben gerade ein kleines Problem mit dem Cache des Coldfire-V4e uP.

Auf dem Bild im Anhang aus dem "MCF5485 ReferenceManual" ist der 4-Wege 
Assoziativspeicher dargestellt.

Unsere Frage:
Wozu dienen bei der Adresse die Bits 0 bis 3? Es würden doch 2Bits 
reichen um aus der Cacheline das richtige Langwort auszuwählen.
(Der Datenbus ist auch 32Bit breit)

Danke schonmal,

Grüße,
Pete

von A.K. (Gast)


Lesenswert?

Eine Cacheline ist hier offensichtlich 16 Bytes gross. Folglich dienen 
A4:A11 zur Auswahl der Cacheline, und A0:3 adressiert das Byte/Wort 
darin. D.h. die Verwaltungseinheit in diesem Cache ist nicht 4 Bytes 
gross sondern 16 Bytes.

von petesahat (Gast)


Angehängte Dateien:

Lesenswert?

> D.h. die Verwaltungseinheit in diesem Cache ist nicht 4 Bytes gross sondern 16 
Bytes.

.. Du meinst wohl 16Bit, wenn ich dich richtig verstanden habe?
Aber dann wär wieder das Problem, dass man mit 16Bit auf einem 32Bit 
Datenbus nicht viel anfangen kann :(


Komischerweise steht in demselben Manual, zwei Seiten davor, dass der 
Tag 21 Bit groß wäre und nicht 19Bit, wie in dem Bild da oben.
(siehe Anhang)

Dann würde es wieder einwandfrei passen:
A31:A11 - Tag
A10:A1  - Index
A1 :A0  - Auswahl des 32Bit Langwortes in der Cacheline

.. ich bin verwirrt

von Pete S. (petesahat)


Lesenswert?

Edit: Tschuldigung, der Index ist nur 9Bit groß. Also:
A31:A11   - Tag
A10:A #2# - Index
A1 :A0    - Auswahl des 32Bit Langwortes in der Cacheline

von A.K. (Gast)


Lesenswert?

Praktisch alle Caches speichern als kleinste unabhängige Einheit ganze 
Blöcke, die um ein Mehrfaches grösser sind als die Wortbreite der 
Maschine. Dieser Cache speichert also keine Maschinenworte zu 32 Bits, 
sondern Blöcke zu 16 Bytes. Was man eine Cacheline nennt. Und was in den 
Bildern so auch deutlich dargestellt ist.

Wenn ein Lesezugriff keinen Treffer im Cache landet, wird eine komplette 
Cacheline aus dem Speicher geladen, und ersetzt eine andere Cacheline. 
Operationen zwischen Cache und Speicher finden in Blöcken statt, den 
Cachelines. Lesend wie schreibend. Nicht in Bytes oder Maschinenworten.

Der Index adressiert folglich Cachelines, nicht Maschinenworte, und 
besteht daher aus A12:A4.

Die Angabe von 21 Tagbits passt zum gezeigten Format, wenn man die 
V(alid) und M(odified) Bits zum Tag mitzählt. Das Tag besteht hier also 
auch A31:A13,V,M.

von A.K. (Gast)


Lesenswert?

Fix: ... Das Tag besteht hier also aus A31:A13,V,M.

von Pete S. (petesahat)


Lesenswert?

Ah, ok, danke. Das mit V und M Bit erklärt die 21Bit Tag-Breite

Was eine Cacheline ist hab ich schon verstanden, aber mein Problem liegt 
wo anders:
In der Cacheline sind 4 Langwörter mit je 32Bit gespeichert.
Angenommen ich habe einen Hit, dann legt der MUX, je nachdem in welchem 
WAY der Hit aufgetreten ist, die Cacheline raus. Und aus dieser wird mit 
den letzten 2 Adressbits das gesuchte Langwort ausgewählt und auf den 
Bus gelegt.

Wozu benötige ich dann die Bits 3..2?? Mit den 4 letzten Adressbits 
könnte ich ja ganze 16 Langwörter aus einer Cacheline auswählen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.