| 

.NET C# Java Javascript Exception

1
Hallo Community,

ich hätte ein paar Fragen zum Thema Prozessor-Caches und darüber hinaus das Bedürfnis nach Bestätigung in einigen Punkten.

Soweit ich das richtig verstanden habe hat ein Prozessor, der mehrere Kerne besitzt auch mehrere Caches, d.h. jeder Kern hat seinen eigenen L1, L2 und L3 Cache (L3 falls vorhanden).
Diese Caches sind organisiert in Mengen und Cache-Lines. Die Anzahl der Mengen in einem Cache beschreibt die Assoziativität des Caches. D.h. bei 3 Mengen heißt der Caches 3-Fach-Assoziativer Cache. Eine Cache-Line (auch Block genannt?) zieht sich über die Mengen (Sets) in einem Cache und ist die kleinste Verwaltungseinheit im Cache (richtig?)

-> Ich verstehe das mit den Mengen nicht. Warum liegt eine Cache-Line auf drei Mengen? Was bedeutet dabei die Assoziativität? Wie heißt dann die Zelle in einer Cache-Line?

Würde mich über einige Anmerkungen sehr freuen.
Danke im Voraus!
News:
05.08.2014
Parallels 47 4
1
Wenn ich das richtig Verstehe wird bei AMDs Bulldozer-Architektur wird der L2-Cache von mehreren Cores pro Modul geteilt.
http://de.wikipedia.org/wiki/AMD_Bulldozer
Tiefer bin ich in die Materie nie eingestiegen, aber vielleicht hilft dir das ein bisschen weiter...
phg 07.08.2014
1 Antwort
2
1. Die Anzahl der Cache Level hat gar nichts mit der Anzahl der Kerne zu tun. Es git Prozessoren mit einem Kern aber mehrern Cache Level aber auch Prozesooren mit sehr vielen Kernen und keinem oder nur wenigen Cache Level.

2. Caches können müssen aber nicht zwischen Kerne geshared werden. Z.B können L1 und L2 jeweils einem Kern zugeordnet sein, der L3 aber von allen Kernen gemeinsam genutzt werden.

3. Cache Lines werden nicht beliebig einem Speicherbereich zugeordnet (assoziiert), sondern der Einfachheithabler (Schelligkeit-) können nur bestimmte Adressen aufnehmen: Z.B. die Cacheline 1011 nur Addressen xxxxxxxx1011. Damit kann es z.B. bei Vergleichen von Speicherbereichen zum gegenseitigen Verdrängen kommen. Dafür gibt es 2-fach Assoziativität, dann kann ein Speicherbereich in einem von 2 Zellen einer CacheLine aufgenommen werden. Bei 4-fach Assoziativität kann ein Speicherbereich in einem von 4 Zellen aufgenommen werden (8-fach, 16-fach entsprechend).

4. Es gibt daher einen Zusammenhang zwischen der Anzahl der Kerne die sich einen Cache teilen dürfen/müssen und der Assoziativität der Cache. Assoziativität darf gerne größer sein als die Anzahl der logischen Kerne (mindestens 2*), damit es nicht zum gegenseitigen Verdrängen kommt,

5. Von 3-Fach Assoziativität habe ich noch nie gehört aber im Allgemeinen muss die Assoziativität nicht unbedingt (2 hoch n) sein. Z.B. hat ein i5-2400 (4 Kerne) einen L3 Cache mit 12-fach Assoziativität. Typisch sind aber 2/4/8/16-fach Assoziativität.
11.08.2014
BeachBlocker 617 3
Anmerkung: Die Anzahl der _Cachelines_ ist aber immer (2 hoch k) sonst wäre die Einfachheit/Schneligkeit nicht gegeben. Zum Beispiel i5-2400 (4 Kerne): 6MB -> 12 Assoziativität * 8k Lines * 64 Bytes; i7-2600 (4 Kerne+HT) -> 8MB = 16 Assoziativität * 8k Lines * 64 Bytes
BeachBlocker 12.08.2014

Stelle deine Parallel-Frage jetzt!