Seite 1 von 1

Frage zu Übung 5

Verfasst: 28. Nov 2009 17:33
von jan_k
Hallo,

Die Gesamtgröße (ohne Verwaltungsinformationen) des Caches soll 64 Kilobytes betragen. Heißt das, dass hier der Tag, Index und Validbit nicht mit einbezogen werden?

Die Blockgröße beträgt 1024 Wörter. Wird hierbei jetzt Tag, Index und Validbit mitbetrachtet?

Ist eine Cachezeile immer 32 bit breit?

Re: Frage zu Übung 5

Verfasst: 28. Nov 2009 18:06
von VersuchEs
Hallo,

guck dir 4.40 nochmal genauer an.

Re: Frage zu Übung 5

Verfasst: 30. Nov 2009 15:44
von jan_k
So... nach mehrstündigem Anstarren der Folie 40 hab ich immer noch die gleichen Fragen..
Am besten find ich übrigens die vier Rechtecke auf der Folie ^^ Da wurds gleich viel klarer.

Re: Frage zu Übung 5

Verfasst: 30. Nov 2009 16:18
von SLik_
ok, vllt ein paar worte zum Cache-aufbau, damit es dir klarer wird:

Der Cache ordnet Daten in gewisser Struktur an. Um zu wissen, auf welchen Platz der Struktur du deine Daten schreibst bzw liest wird die Adresse der Daten in Abschnitte unterteilt:
|Tag | Index | Offset | <-- unterteilung
|xxxxxxx|xxxxxx|xxxxxx | <-- eigentliche Adresse in Bit

Durch den Index werden im Prinzip Zeilen markiert. Ist der Cache n-wege assoziativ, dann entspricht n der Anzahl der "Spalten".
Jede Spalte beinhaltet dabei:
einen Datenpart (die Daten, die an der Adresse im übergeordneten Speicher standen) und
einen Adresspart (den Tag)
sowie evtl Zusatzinformationen (valid Bit, dirty Bit).

Wird die Anzahl der Spalten erhöht (also der Cache n-wege assoziativ) heißt das nicht, dass die Zuordnung der Adressen in die Zeilen nach Index sich ändert, sondern nur, dass mehrere Datenblöcke mit selbem Index im Cache gehalten werden können.

Der Datenpart:
.. hat eine Gewisse Größe, nämlich genau 1 "Block", was wiederum einer Gewissen Anzahl an "Wörtern" entspricht. Die Wörter bestehen wiederum aus einer gewissen Anzahl an Byte (oft 4). Worte werden mit dem "Blockoffset" (erster Teil des Offset - also zB bei Blockgröße 8 Worte entsprechend 3Bit) und einzelne Byte mit dem "Byteoffset" (zweiter Teil des Offset - also bei Wortgröße 32Bit=4Byte entsprechend 2Bit) angesprochen; diese Offsets sind im Cache aber nirgends mehr zu finden und beschreiben einfach nur die innere Blockstruktur. Der Cache selbst arbeitet nur mit ganzen Blöcken.

Der Adresspart:
..ist der Rest der Adresse (genannt Tag - also Adresse ohne Index- und Offset-Bits), die zur Identifikation der Daten dient, die im Cache stehen, da ja verschiedene Daten an einem sestimmten Platz im Cache stehen können (nämlich alle mit dem selben Index).

Adresspart sowie Zusatzinformationen werden auch als Verwaltungsinformationen bezeichnet (da sie ja auch nur der Verwaltung des Caches dienen).
Die in der Aufgabenstellung genannten 64kB betreffen also nur Den Datenpart.

Cachegröße = Anz.d.Blöcke*Blockgröße = Anz.d.Blöcke*Anz.d.Wörter*Wortgröße
Anz.d.Blöcke = n(wegeassoziativ) * Anz.d.Zeilen = n(wegeassoziativ) * 2^Anz.IndexBits

Ok ganz schön lang geworden.. hoffe ich konnte halbwegs was erklären und verdeutlichen.

Grüße

Re: Frage zu Übung 5

Verfasst: 30. Nov 2009 23:39
von mister_tt
Vielen Dank für den ausführlichen Beitrag - ein super Text um Caches besser zu verstehen.

Mein weiterer Tipp für alle, die die Übung noch machen müssen: Vergesst die Folien und lest Patterson/Hennesy S. 405 - 410 (mengenassoziativer Cache = satzassoziativer Cache). Danach ist die Übung fast einfach :-)

Re: Frage zu Übung 5

Verfasst: 1. Dez 2009 09:07
von jan_k
Danke Slik! Das war hilfreich! :)