PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cache


Gast
2004-11-22, 16:01:09
Kann mir einer den Unterschied zwischen lv1 und lv2 Cache erklären?

GloomY
2004-11-22, 16:07:31
Kann mir einer den Unterschied zwischen lv1 und lv2 Cache erklären?Unterschied? Naja, der eine ist meist kleiner und schneller, der andere größer und langsamer.

Ein Cache muss mehrere Eigenschaften erfüllen: Er muss schnell sein (Zugriffszeit) und dabei noch möglichst oft die angeforderten Daten enthalten. Das lässt sich oftmals nicht gleichzeitig durch einen Cache realisieren. Würde man einen einzigen großen Cache bauen (hohe Hit-Rate), dann wäre dieser zu langsam. Ein kleiner Cache ist zwar schnell, aber er trifft eben nicht so häufig wie ein großer.

Daher verwendet man einen kleinen schnelle(re)n und einen größeren langsamen Cache und erreicht beide Ziele recht gut damit.


Andere Unterscheidungsmerkmale sind Assotiativität (beim größeren meist höher, da Hit-Rate wichtig ist), Größe der Cache Lines, Anbindung uvm.

Frag' einfach, wenn du genaueres wissen willst :)

BlackBirdSR
2004-11-22, 16:29:39
Kann mir einer den Unterschied zwischen lv1 und lv2 Cache erklären?

In Hinsicht auf die Praxis wäre noch zu erwähnen, dass der L2 Cache meist nicht zum CPU Kern selbst gezählt wird. Er kann deshalb realtiv leicht vergrößert oder verkleinert werden.

Wenn man am L1 Cache solche Änderungen durchführen will, ist das schon ein größerer Aufwand.

avalanche
2004-11-22, 17:57:54
Mh... wie wird 'n Cache eigentlich aufgebaut? Aus irgend'ner speziellen Flip-Flop-Abart (wäre so mein erster Gedanke...)

Was ist (möglichst genau, 'ne ungefähre Vorstellung gibt ja das Wort schon) mit Assoziativität gemeint?

GloomY
2004-11-22, 20:08:52
Mh... wie wird 'n Cache eigentlich aufgebaut? Aus irgend'ner speziellen Flip-Flop-Abart (wäre so mein erster Gedanke...)

Was ist (möglichst genau, 'ne ungefähre Vorstellung gibt ja das Wort schon) mit Assoziativität gemeint?Die Speicherzelle an sich ist ein Flip-Flop aus (meist) 6 Transistoren. Dazu kommt noch ein bisschen Steuerlogik, um diese auch alle ansprechen zu könnnen.


Die Assotiativität ist die Anzahl der "Orte", an denen sich die Daten einer bestimmten Adresse befinden kann. Das Auffinden geht so:

Da man immer n Byte zusammenhängende Daten in einer Line speichert, benutzt man die am weitesten rechts stehenden (least significant) Bits aus, um darin auszuwählen. Die dann weiter links stehenden Bits der Adresse werden zur Satz-Auswahl verwendet. Dann prüft man für jede Cacheline in diesem ausgesuchten Satz den Tag (Rest der Adresse). Bei Übereinstimmung eines Tags einer Cacheline hat man einen Cache-Hit, bei keiner Übereinstimmung einen Cache-Miss.
Bei einem Hit benutzt man dann wie angesprochen die am weitesten rechts stehenden Bits zur "Navigierung" innerhalb der Cacheline und wählt damit die entsprechenden Daten aus.

Beispiel:

64 kiB Cache, Line Size 64 Byte, 2-fach assotiativ;

Es exisiteren dort 64 kiB / 64 Byte = 1024 Cache Lines mit je 64 Byte. Diese 1024 Cachelines werden in 2 "Ways" mit je 512 Lines unterteillt. Man hat also 512 Sätze à 2 Lines à 64 Byte.

Die zu prüfende Adresse teilt man so ein (zufällig Kombination von 1 und 0):
0 1 1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 0 1 0 1
Tag | Index | Offset |Das Offset beträgt 6 Bit, weil die Cacheline 64 Byte groß ist (2^6=64). Der Index ist 9 Bit groß, weil es 2^10 Sätze gibt mit je zwei Lines, also ln ((2^10) / 2) = 9. Der Rest der Adresse ist wie gesagt der Tag.

Zuerst wählt man das Set mit der Nummer 011101001 aus (das was bei "Index") steht. Darin befinden sich zwei Cachelines (zweifach assotiativ) mit jeweiligem Tag. Bei diesen prüft man den gespeicherten Tag mit dem Tag der gefragten Adresse. Stimmt dieser überein, dann hat man einen Hit und wählt mit dem Offset innerhalb dieser Line die Daten aus.


P.S.: virtuelle Speicherverwaltung habe ich jetzt mal der Einfachheit halber außen vor gelassen.

avalanche
2004-11-22, 21:09:23
Das entspricht ziemlich gut dem, was ich haben wollte ;)
Zur virtuellen Speicherverwaltung würden dann z.B. Verfahren gehören, die den Aufwand beim "Durchlaufen" von sehr komplexen Sets/bzw. Caches mit hoher Assoziativität gering halten sollen? Wenn nicht, gibt's das? Wenn ich da total falsch liege, dann lohnt sich eine große Erklärung kaum...