Seite 1 von 1

Übung 6 : Aufgabe 3 & 5

Verfasst: 18. Mär 2012 12:47
von charfi90
Hallo ,
ich habe zwei Fragen bezüglich der 3 Aufgabe teil c und 5 Aufgabe a
1 Frage: 3-c) wie kann ich wissen ob es Valid bit ist oder nicht?
wie kann man die Tags bits berechnen ?
2: Frage 5-a) wie kann man wissen ob es sich um ein Hit oder miss handelt ?
Vielen Dank
Gruß

Re: Übung 6 : Aufgabe 3 & 5

Verfasst: 18. Mär 2012 13:32
von Kristoffer
Zur 5a) Im ersten Fall (0x9A44) ist es ein miss, da noch nichts im Cache steht. Im zweiten Fall ist die Adresse auch noch nicht im Cache, also wieder ein miss und die Adresse wird die Cache hinzugefügt. Genauso geht das auch im dritten Fall weiter.
Im vierten Fall ist die Adresse auf die zugegriffen wird schon im Cache (Eintrag 2) daher ist es ein Hit und die Adresse wird dem Cache natürlich nicht hinzugefügt.
Genauso geht das dann immer weiter. Dabei ist noch zu beachten, dass es sich um die FIFO Ersetzungsstrategie handelt.

Bei der 3 denke ich, dass das Valid-Bit gesetzt wird, wenn sich die Hauptspeicheradressen im Cache befinden.

Re: Übung 6 : Aufgabe 3 & 5

Verfasst: 18. Mär 2012 13:33
von charfi90
Vielen Dank

Re: Übung 6 : Aufgabe 3 & 5

Verfasst: 18. Mär 2012 15:50
von nairolf
An Aufgabe 3c) hänge ich auch grad.
Kann mir einer erklären, wie sich die einzelnen Spalten zusammensetzen, insbesondere „Data“, bzw. woher man weiß was da am Ende drinnen steht?
Und auch wie man die Tags berechnet?

Re: Übung 6 : Aufgabe 3 & 5

Verfasst: 19. Mär 2012 00:39
von zimpfer
nairolf hat geschrieben:An Aufgabe 3c) hänge ich auch grad.
Kann mir einer erklären, wie sich die einzelnen Spalten zusammensetzen, insbesondere „Data“, bzw. woher man weiß was da am Ende drinnen steht?
Und auch wie man die Tags berechnet?
Eine Speicheradresse (welche ein Byte adressiert) wird zerlegt nach dem Muster Tag|Index|Offset.

Ein Eintrag im Cache beinhaltet immer einen ganzen Block vorgegebener Größe, in diesem Fall 1 Block = 1 Byte. Das heißt der Offset hat Länge 0.
Da es 8 Einträge gibt, brauchst du 3 Indexbits (I) und der Rest ist der Tag (T). --> TTTTT|III
Nun wird die Tabelle "gefüllt" indem du die Speicheradressen zerlegst nach obigem Muster und bereits besetzte Einträge je nach Ersetzungsstrategie evtl. ersetzst: 0x01, 0x02, 0x03, 0x13, 0xF8, 0xF9, 0xAA, 0xCC, 0x57
Dann kommt das Ergebnis wie auf dem Blatt raus. In diesem Fall hast du keinen Offset, sodass du die Adresse der dort gespeicherten Speicherbytes über Zusamensetzen des Tags und des Index errechnest. Damit kommst du z.B. beim ersten Eintrag zu den Speicher(0xF8), denn 0xF8 = 0b(11111)(000) = (Tag)(Index).

Wenn der Block größer als 1 Byte ist, (z.B. 4 Byte pro Block) dann ist der Speicherbereich (Tag)(Index)00 - (Tag)(Index)11

Re: Übung 6 : Aufgabe 3 & 5

Verfasst: 20. Mär 2012 14:50
von willK
Hallo,
wie kann ich denn bei der 5a die Anzahl der Tagging-Bits berechnen?

Danke & Grüße

Re: Übung 6 : Aufgabe 3 & 5

Verfasst: 20. Mär 2012 15:17
von Volkan
zimpfer hat geschrieben:
nairolf hat geschrieben:An Aufgabe 3c) hänge ich auch grad.
Kann mir einer erklären, wie sich die einzelnen Spalten zusammensetzen, insbesondere „Data“, bzw. woher man weiß was da am Ende drinnen steht?
Und auch wie man die Tags berechnet?
Eine Speicheradresse (welche ein Byte adressiert) wird zerlegt nach dem Muster Tag|Index|Offset.

Ein Eintrag im Cache beinhaltet immer einen ganzen Block vorgegebener Größe, in diesem Fall 1 Block = 1 Byte. Das heißt der Offset hat Länge 0.
Da es 8 Einträge gibt, brauchst du 3 Indexbits (I) und der Rest ist der Tag (T). --> TTTTT|III
Nun wird die Tabelle "gefüllt" indem du die Speicheradressen zerlegst nach obigem Muster und bereits besetzte Einträge je nach Ersetzungsstrategie evtl. ersetzst: 0x01, 0x02, 0x03, 0x13, 0xF8, 0xF9, 0xAA, 0xCC, 0x57
Dann kommt das Ergebnis wie auf dem Blatt raus. In diesem Fall hast du keinen Offset, sodass du die Adresse der dort gespeicherten Speicherbytes über Zusamensetzen des Tags und des Index errechnest. Damit kommst du z.B. beim ersten Eintrag zu den Speicher(0xF8), denn 0xF8 = 0b(11111)(000) = (Tag)(Index).

Wenn der Block größer als 1 Byte ist, (z.B. 4 Byte pro Block) dann ist der Speicherbereich (Tag)(Index)00 - (Tag)(Index)11
Heißt das dass wir dann bei der Aufgabe 4 Blöcke adreessieren, die 16 Byte groß sind?

Re: Übung 6 : Aufgabe 3 & 5

Verfasst: 20. Mär 2012 15:23
von Drno
Zu 5a) Schau dir einfach die Blockgröße an um zu wissen was als Tag noch übrig bleibt.

Re: Übung 6 : Aufgabe 3 & 5

Verfasst: 21. Mär 2012 22:09
von hstr
zimpfer hat geschrieben: Eine Speicheradresse (welche ein Byte adressiert) wird zerlegt nach dem Muster Tag|Index|Offset.

Ein Eintrag im Cache beinhaltet immer einen ganzen Block vorgegebener Größe, in diesem Fall 1 Block = 1 Byte....
Wieso ist hier 1 Block = 1 Byte?
Mir ist insgesamt nicht ganz klar wie man bei dieser Aufgabe auf Offset = 0 kommt. :/

Re: Übung 6 : Aufgabe 3 & 5

Verfasst: 22. Mär 2012 01:45
von zimpfer
Hallo,
wie kann ich denn bei der 5a die Anzahl der Tagging-Bits berechnen?

Danke & Grüße
Die sind einfach der Rest der Adresse, nachdem du Index und Offset bestimmt hast.

Heißt das dass wir dann bei der Aufgabe 4 Blöcke adreessieren, die 16 Byte groß sind?
Du musst unterscheiden zwischen adressieren (also konkrete Bytes lesen) und prüfen, ob ein Eintrag im Cache ist.
Zum Prüfen reicht es zu schauen, ob der Block im Cache ist, zum Laden/Schreiben aus/in eine konkrete Adresse wird byteweise adressiert.
Wieso ist hier 1 Block = 1 Byte?
Mir ist insgesamt nicht ganz klar wie man bei dieser Aufgabe auf Offset = 0 kommt. :/
Das steht in der Aufgabe nicht dabei, weil die uralt ist, normalerweise ist die Blockgröße angegeben.
Dadurch dass im Block nur ein einziges Byte existiert brauchst du auch keinen Offset, um innerhalb eines Blockes alle Bytes zu adresseren, da man nur eine Möglichkeit hat...

Re: Übung 6 : Aufgabe 3 & 5

Verfasst: 22. Mär 2012 07:11
von hstr
Danke!