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
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.
> 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
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.