FB18 - Das Forum für Informatik

fb18.de / Bachelorstudieng / PM Technische Informatik

RS Zusatzaufgaben Lehmann, Blatt 8

RS Zusatzaufgaben Lehmann, Blatt 8 2007-02-10 02:21
s01iD
Bin leider einer derjenigen, die das Zusatzblatt von Lehmann machen dürfen.
Habe alle Aufgaben lösen können, bis auf die erste, die da lautet:

Gegeben sei ein Hauptspeicher mit [img]http://mokrates.de/cgi-bin/texstring?2%5E1%5E8[/img] Byte, die Größe eines Cacheblocks betrage 64 Byte.
Der Cache ist als mengenassoziativer Cache ausgelegt mit einer Mengenzahl von 3. Insge-samt kann der Cache 96 Cacheblöcke aufnehmen. Berechnen Sie in welcher Cachemenge die folgenden Byte gespeichert werden: 23412, 85113, 146244, 261305. Wie unterteilt sich eine Hauptspeicheradresse in Tag, Index und Rest?

Wie berechne ich nun die Cachemenge worin die Byte gespeichert werden?
Einfach 23412 modulo 64?
Bloß wozu sind dann die die Größe des Hauptspeichers und die Mengenzahl gegeben? Nur zur Verwirrung?

Und wie wird die Hauptspeicheradresse dann unterteilt?

Ich hoffe ihr könnt mir helfen. Vielen Dank im Voraus!

Re: RS Zusatzaufgaben Lehmann, Blatt 8 2007-02-20 16:02
Anonymer User
Für deine Abgabe ists zwar leider etwas spät, die Frage bereitet mir aber auch ein paar Probleme:

Ein mengenassoziativer (set associative) Cache wird ja in Sets aufgeteilt, wobei jedes Set N Cachezeilen hat.
In unserem Beispiel, sollte ich das richtig verstanden haben, haben wir einen Speicher mit 2^18 = 262.144 Byte und einen Cache mit 6.144 Byte ( 96 (aufnehmbare Cacheblöcke) * 64 Byte (Größe eines Cacheblocks)).
Da wir für N nun 3 gegeben haben, hat unser Cache 32 Sets (96 / 3).
Somit haben wir je 8192 Speicheradressen (2^18 / 32).
Um nun zu berechnen, in welcher Cachemenge die gegebenen Byte gespeichert werden, muss man einfach nur diese durch 8192 teilen.

Ist das so korrekt, oder doch totaler Schwachsinn?
Ich will nicht behaupten, dass das richtig ist, aber ein anderer Weg hat sich mir gerade nicht ergeben.

Re: RS Zusatzaufgaben Lehmann, Blatt 8 2007-02-20 20:16
Anonymer User
Hmm, weiß da keiner ne Antwort zu, oder ist das so einfach, dass sich nur mir die Lösung offenbart?

RE: RS Zusatzaufgaben Lehmann, Blatt 8 2007-03-28 04:27
Anonymer User
push,
hat jemand die aufgabe gemacht?

RE: RS Zusatzaufgaben Lehmann, Blatt 8 2007-03-28 09:53
Anonymer User
Hallo Leute,

beim mengenassozitiven/n-assoziativen Cache ist es so dass es n Möglichkeiten gibt die Adresse abzulegen. Die Identifikation des richtigen Blocks findet dann über das TAG und den Index (Nr. des Sets) statt. D.h. für einen Chache mit der Mengenzahl 3 gibt es drei Stellen an denen abgelegt werden kann.

Bsp:
Adresse 85113
Cacheblockanzahl 96
Sets 3

Mögliche Adressen für 85113 sind:
85113 mod (96/3) = 25
Das bedeutet das die Adresse im 25. Block aller 3 Sets auftauchen kann.

Ich hoffe das ist richtig.
Hier noch ein Link:
Wikipedia - Chache Organisation

Grüße

RE: RS Zusatzaufgaben Lehmann, Blatt 8 2007-03-28 09:55
Anonymer User
Das bedeutet das die Adresse im 25. Block aller 3 Sets auftauchen kann.

In einem der drei Sets meine ich. Durch die Berechnung ist das meines Erachtens im Vorfeld aber nicht abzuleiten.

RE: RS Zusatzaufgaben Lehmann, Blatt 8 2007-03-28 12:51
TriPhoenix
Leider hast du eines vergessen, nämlich dass ein Teil der Adresse vorher schon rausfällt, da ein Cacheblock ja immer 64 Bytes auf einmal aufnehmen kann.

Schaun wir nochmal an, was die Aufgabenstellung alles verrät und was wir haben:

Hauptspeicher: 2^18 Bytes
Cacheblock: 64 Bytes (=2^6 Bytes)
Adresse: 85113
Cacheblöcke: 96
Blöcke pro Menge: 3
Daraus haben wir dann auch, dass es 96/3=32 verschiedene Mengen gibt, jede davon enthält 3 Cacheblöcke.

Nun können wir uns anschauen, wie denn bestimmt wird, in welchem Cacheblock diese Adresse landet:

Da ein Block 2^6 Bytes enthält, fallen 6 Bits einer jeden Adresse INNERHALB eines Cacheblocks, sind also für die Betrachtung, in welchen Block es geht, relativ egal. Dann haben wir 2^5 verschiedene Mengen, also können wir durch 5 Bit ausdrücken, in welche Menge das ganze reingeht. Da der Hauptspeicher 2^18 Bytes hat, ist jede Adresse 18 Bit lang, es bleiben dann also noch 18-5-6=7 Bits für das Tag übrig. Die Bits der Adresse teilen sich dann also so auf:

Bits 0-5: Adresse innerhalb eines Blockes
Bits 6-10: Index, also Nummer der Menge
Bits 11-17: Tag

Wenn wir jetzt unsere Adresse mal nehmen, kommen wir also da hin:

85113 = 0101001 10001 111001
Adresse innerhalb des Blockes = 111001 = 57
Index (Nummer der Menge) = 10001 = 17
Tag = 0101001 = 41

Wenn wir diese Adresse laden, wäre das im Cache also in der 17ten Menge in einem der drei dort vorhandenen Cacheblöcke. Welcher der drei das nun ist kann man so nicht sagen, da das davon abhängt was vorher schon so dadrin stand. Wir wissen nur, dass es der Cacheblock sein muss, der das Tag 41 hat.

RE: RS Zusatzaufgaben Lehmann, Blatt 8 2007-03-28 16:33
Anonymer User
Danke für die Antwort,

ich habe aber noch nicht ganz verstanden wie du es hinkriegst die Hauptspeicheradresse aufzuschlüsseln - denn dort werden aus Bytes auf einmal Bits. Wäre echt nett wenn du das kurz erläutern könntest.

Ich habe im Informatik Handbuch von Hanser für den n-assoziativen Cache eine Variante mit Modulo gefunden:

N = Anzahl Cacheblöcke; n=Mengenzahl; B=Block; M=Anzahl Sets

M = N/n -> B mod M = Set in welchem abgelegt wird.

Gruß