PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : CacheVergleich AMD / INTEL


Tiamat
2009-06-20, 10:25:46
Hi,
AMD zeigt sich bei der Angabe ihrer Cache-Hierarchie ja stets informativ, z.b beim Phenom :

L1-Cache : 64kb 2-fach Assoziativ
L2-Cache :512kb 16-fach Assoziativ

Leider finde ich bei Intel nur die Cache-Größe nicht die Assoziativität.
Kennt da jemand entsprechende Angaben für neuere Intel-Cpus.

Haben die was zu verstecken, oder warum fehlt da stets die Angabe ?
Würde mich echt mal interessieren, da wir uns in der Vorlesung mit Speicherarchitekturen beschäftigt haben.

Gruß
Tiamat

KiLLERHOLiC
2009-06-20, 11:06:51
Beim Hardwareluxx (http://www.hardwareluxx.de/index.php/artikel/hardware/prozessoren/2150-intel-core2-duo-und-extreme-im-test.html) findet man angaben zur ersten Generation der Core 2 CPUs.

S940
2009-06-20, 11:10:41
Einfach einen (guten) Nehalem Review lesen, z.B:

This L3 cache is the last level of a fundamentally reworked cache hierarchy. Although not clearly marked in the image above, inside of each core is a 32 kB L1 instruction cache, a 32 kB L1 data cache (it's 8-way set associative), and a dedicated 256 kB L2 cache (also 8-way set associative). Outside of the cores is the L3, which is much larger at 8 MB and smarter (16-way associative) than the L2s.
http://techreport.com/articles.x/15818

Eventuell gabs hier mal ne Linksammlung zum Nehalmen Start, schau mal in der Suchfunktion nach.

ciao

Alex

Spasstiger
2009-06-20, 11:22:58
CPU-Z kann die Cache-Assoziativitäten aller x86-Intel-Prozessoren anzeigen, also muss es irgendwo eine Datenbank geben. Hier mal einige Modelle im CPU-Z-Überblick:
http://www.pcgameshardware.de/aid,663616/Intel-Core-2-Sieben-CPUs-im-Cache-Test/CPU/Test/?page=2

Bei meinem Core 2 Duo E4300 (Conroe-2M) sind genau wie beim E4400 der PCGH alle Caches laut CPU-Z (http://www.abload.de/img/cache9n65.png) 8-fach assoziativ, was sich nicht mit der Angabe bei Hardwareluxx (16-fach) deckt. Allerdings macht 8-fach mehr Sinn, denn wenn man den ursprünglich 4 MiB großen, 16-fach assoziativen L2-Cache einfach auf die Hälfte beschneidet, bleibt halt eine 8-fache Assoziativität übrig.

Was in Bezug auf die Cache-Hierarchie noch interessant ist:
AMD verwendet beim Phenom (I/II) einen L2-exklusiven L3-Cache. D.h. dass die Inhalte im L2 unabhängig von den Inhalten im L3-Cache sein können. Nur wenn sich ein Kern schlafen legt, wird der Inhalt des L2-Caches in den L3-Cache kopiert, damit andere Kerne darauf zugreifen können. Beim Core i7 dagegen sind die L2- und die L3-Caches stets synchronisiert (L2-inklusiver L3-Cache). Alles was sich im L2-Cache befindet, befindet sich auch im L3-Cache. Der Vorteil dabei ist, dass alle Kerne stets nur im L3-Cache suchen müssen, wenn sie Daten der anderen Kerne benötigen. Beim Phenom dagegen müssen die Kerne unter Umständen zusätzlich noch im L2-Cache eines anderes Kerns suchen.
Der Nachteil der Intel-Methode ist natürlich, dass der L2- und der L3-Cache in Summe effektiv nie größer als 8 MiB sind, obwohl 9 MiB physikalisch vorhanden sind. Beim Phenom II sind der L2- und der L3-Cache in Summe effektiv bis zu 8 MiB groß, was der physikalisch vorhandenen Menge entspricht.

S940
2009-06-20, 12:03:42
Beim Phenom II sind der L2- und der L3-Cache in Summe effektiv bis zu 8 MiB groß, was der physikalisch vorhandenen Menge entspricht.
Erbsenzähl:
Was meinst Du mit "effektiv" ? Das hört sich für mich so an, als ob ein Kern 8 MB nützen könnte.

Mehr als max. 6,5 MB kann ein Kern aber logischerweise nicht nützen, mit den 3 andren L2s kann ein 4ter Kern nichts anfangen.
Beim Phenom dagegen müssen die Kerne unter Umständen zusätzlich noch im L2-Cache eines anderes Kerns suchen.
Beim Phenom muss gar keiner suchen, da es keine Mehrprozessor-Phenom Systeme gibt ;D

Aber im Ernst, beim Opteron hat AMD das Problem nun mit der Rev. D behoben:
http://www.golem.de/0902/65427.html

ciao

Alex

P.S: Übrigens auch interessant, bei AsRock gibts BIOS Optionen, mut der man den L3 exklusiv einem einzigen Kern zuordnen kann. Leider stürzen dann Test/BenchProgramme ab :(

Spasstiger
2009-06-20, 12:10:30
Mehr als max. 6,5 MB kann ein Kern aber logischerweise nicht nützen, mit den 3 andren L2s kann ein 4te Kern nichts anfangen.
So wie ich das verstanden habe, kann ein Kern beim Phenom auch Daten aus dem L2-Cache eines anderen Kerns beziehen.
Außerdem weiß ich nicht, was an meiner Formulierung "bis zu" so schwer zu verstehen war. Ich achte wirklich schon bei jedem Wort drauf, das Richtige zu schreiben, um Erbsenzählern wie dir keine Angriffsfläche zu geben. Aber ich habe das Gefühl, dass dann erst recht die Erbsenzähler kommen, weil sie viel Text sehen und nicht lesen können ...

S940
2009-06-20, 12:15:53
Huch, wieso gleich so böse, schlecht geschlafen, Katerstimmung ?

Ob da "bis zu" steht, ändert nichts am Problem / die Sache mit dem L2 hast Du falsch verstanden, der Datenaustausch erfolgt über den L3, ansonsten bräuchte man den ja nicht, da würde man die 8MB Cachezellen ansonsten in 2MB L2 pro Kern aufteilen, das brächte mehr ^^

Maximal gibts für einen Kern "bis zu" 6,5 MB, mehr geht nicht. "Bis zu" weil der L3 ja auch noch für die andren 3 Kerne da ist, außer man hat ein AsRock Board mit obiger BIOS Option.

ciao

Alex

Spasstiger
2009-06-20, 12:28:56
Ob da "bis zu" steht, ändert nichts am Problem / die Sache mit dem L2 hast Du falsch verstanden, der Datenaustausch erfolgt über den L3, ansonsten bräuchte man den ja nicht, da würde man die 8MB Cachezellen ansonsten in 2MB L2 pro Kern aufteilen, das brächte mehr ^^
In der PCGH stand das anders. Und wenn es so wäre, wie du es schreibst, warum hat Intel dann keinen L2-exklusiven L3-Cache? Macht ja dann keinen Sinn, darauf zu verzichten.

Maximal gibts für einen Kern "bis zu" 6,5 MB, mehr geht nicht.
Ich hab an keiner Stelle was von "für einen Kern" geschrieben. Sofern nicht näher spezifiziert, galten meine Aussagen für den gesamten Prozessor.

/EDIT: Wenn ich mal annehme, dass du richtig liegst, dann hätte ein Kern eines Core i7 bis zu 7,25 MiB zur Verfügung, oder? Und Verwendung aller vier Kerne sinds sowohl beim Phenom als auch beim Core i7 bis zu 8 MiB.

BlackBirdSR
2009-06-20, 12:44:28
In der PCGH stand das anders. Und wenn es so wäre, wie du es schreibst, warum hat Intel dann keinen L2-exklusiven L3-Cache? Macht ja dann keinen Sinn, darauf zu verzichten.


Ich hab an keiner Stelle was von "für einen Kern" geschrieben. Sofern nicht näher spezifiziert, galten meine Aussagen für den gesamten Prozessor.

/EDIT: Wenn ich mal annehme, dass du richtig liegst, dann hätte ein Kern eines Core i7 bis zu 7,25 MiB zur Verfügung, oder? Und Verwendung aller vier Kerne sinds sowohl beim Phenom als auch beim Core i7 bis zu 8 MiB.

Ob ich der PCGHW da trauen würde?
Beim Phenom liegen im L3-Cache nur Daten die aus dem L2 ausgeschlossen wurden. Werden diese wieder benötigt, dann werden diese direkt in den L1 geladen und gelöscht. Eine Ausnahme bilden Situationen, in denen 2 oder mehr Kerne auf die Daten im L3-Cache zugreifen könnten. Dann wird eine Kopie erzeugt und behalten. Der L2-Cache jeder CPU dient nur als Auschluss-Puffer für Daten aus dem L1 des Kerns, ist also sehr speziell pro Kern. Änderungen an Daten in einem L2-Cache, die auch bei anderen Kernen im L2-Cache liegen, werden jedoch sofort für jeden Kern aktualisiert.
Ein Zugriff anderer Kerne auf den L2-Cache eines Kerns ist IMO nicht vorgesehen.

S940
2009-06-20, 12:59:20
In der PCGH stand das anders.
Uhhhh ...

also wenn Du mir jetzt ein AMD pdf als Quelle oder wenigstens nen heise Link genannt hättest ok .. aber PCGH ... ne Du ... zwar besser als ComputerBild, aber das wars dann schon.

Und wenn es so wäre, wie du es schreibst, warum hat Intel dann keinen L2-exklusiven L3-Cache? Macht ja dann keinen Sinn, darauf zu verzichten.
Öhm ... was hat den exklusiv/inklusiv mit der L2/L3 Aufteilung zu tun ?
Das sind 2 Paar Schuhe, unterschiedliche Designanforderungen und Entscheidungen.

a) mehr L2 pro Kern oder L3 für alle:
Hab ich oben ja schon angedeutet, L3 nimmt man zum schnelleren Datenaustausch zwischen mehreren Kernen. Und/oder als zusätzliche Pufferstufe zum RAM, dann muss der L3 aber sehr groß sein um den zusätzlichen Latenzverlust aufzuwiegen.
Die 2 MB des Phenom1 waren mMn zu wenig.

b)inklusive vs. exklusive:
Tja inklusive vereinfacht die Cacheverwalten in Mehrprozessorsystemen, dafür verbrät man aber einiges an Die Fläche. Die kommenden 32nm Intel 6 Kerner bekommen angeblich 512kB L2 Cache, macht bei 6 Kernen nach Adam Riese 3 MB vergeudeter L3. Bleiben von spekulierten 12MB L3 effektiv 9MB übrig.

Der Probefilter (HT Assist) bei AMD kostet zwar auch L3, aber man ist dabei eben flexibler. Bei den Phenoms/1P Systemen braucht man das Teil überhaupt nicht, kann also aus dem Vollen schöpfen, bei 2P/4P oder gar 8P Systemen kann man den Probe Filter dann auf 1/2/4 MB einstellen. Wobei 1 MB erst einmal reichen werden, es ist eben nicht nötig alle L1/L2 Daten *komplett* zu puffern, wie das Intel notgedrungen handhabt.

Das Ganze ist ein Trade-Off zwischen Logik (Probe Filter) + Flexibilität vs. Cachegröße und einfachem Design.

Warum man sich jeweils für eine Variante entscheidet hängt von vielen Faktoren ab. Früher, in 65nm Zeiten, zählte dazu sicherlich auch die relativ große Cachezellengröße von AMD. Intel baut(e) viel bessre/dichter gepackte Cachezellen. Cache ware bei AMD also teurer = wichtigeres Kriterium, als bei Intel.

Ist jetzt aber in 45nm bereits besser geworden und in 32nm ist IBM/AMD nach den aktuellen Zahlen der Prototypendesigns sogar einen Hauch besser.

Bin gespannt, wie das AMD im Bulldozer handhabt. Man könnte eigentlich auf IBMs eDRAM für einen (sehr eng) gepackten L3 Cache zurückgreifen, was dann für inklusive L3 spräche. Aber wenn der Chip so kommt wie er in den Patenten beschrieben wird (2 getrennte L1 D$ Caches / 1 I$ Cache pro Kern), macht das inklusive Design eigentlich wieder keinen Sinn mehr.
Ausserdem hat man ja jetzt die Probe Filter Technik fertig in der Schublade ...

Edit:
Ich hab an keiner Stelle was von "für einen Kern" geschrieben. Sofern nicht näher spezifiziert, galten meine Aussagen für den gesamten Prozessor.Jo, deswegen habe ich geschrieben, was Du mit "effektiv" meintest. "Effektiv" bedeutet für mich "nutzbar", wobei man bei "nutzbar" dann Unterscheiden muss zw. 1 Kern/Thread oder mehrere Kerne/Threads. Wenn Du jetzt den gesamten Prozessor, also alle Kerne meintest, ist das ok. Ich wollte das aber noch deutlicher haben, da sich viele Leser wohl kaum so genau auskennen :)

/EDIT: Wenn ich mal annehme, dass du richtig liegst, dann hätte ein Kern eines Core i7 bis zu 7,25 MiB zur Verfügung, oder? Und Verwendung aller vier Kerne sinds sowohl beim Phenom als auch beim Core i7 bis zu 8 MiB.
Jo so siehts aus, wenn Du das so darstellen willst. Ich würde dazu noch die Gesamtcachegröße in eine Übersicht mitaufnehmen:


Cache----------------------------------K10 -------------i7----

Gesamtgrößen (ohne L1)-----------------8MB -----------9MB ---
nutzbar (alle Kerne, ohne L1)------------8MB -----------8MB ---
nutzbar (pro Kern oL1)-----------------6,5MB-----------7,25MB---

Der Unterschied ist jetzt der, dass man bei der Gesamtgröße die Caches addiert, bei der Nutzgröße bei Intel aber substrahieren muss.

ciao

Alex
P.S: AMDs L3 ist übrigens nicht 100% exklusiv, der kann auch Daten haben, die in L2s liegen, aber er muss die eben *nicht* vorhalten.

BlackBirdSR
2009-06-20, 13:06:09
Alex
P.S: AMDs L3 ist übrigens nicht 100% exklusiv, der kann auch Daten haben, die in L2s liegen, aber er muss die eben *nicht* vorhalten.

Etwas genauer wäre zu sagen, der L3-Cache kann Daten enthalten, die im L1-Cache liegen, da der L2 ein reiner Victim-Cache ist und niemals vom Speicher oder L3 befüllt wird.

S940
2009-06-20, 13:22:49
Etwas genauer wäre zu sagen, der L3-Cache kann Daten enthalten, die im L1-Cache liegen, da der L2 ein reiner Victim-Cache ist und niemals vom Speicher oder L3 befüllt wird.
Jein, Deine Erklärungen stimmen auf alle Fälle - für einen Kern.

Aber wenn Du an 4 Kerne und 4 L2s denkst, könnte es passieren, dass ein Kern Daten/Instruktionen in den L3 evakuiert, die noch im L2 eines andren Kerns liegen könnten :)

Sicherlich ein Spezialfall, aber für Instruktionen könnte das schon häufiger passieren, oder wie siehst Du das ?

ciao

Alex

mrt
2009-06-20, 13:57:30
Daten sind generell nur dann parallel in L1/L2 und L3 wenn ein anderer Kern die selben Daten brauchen könnte, sonst ist der L3 auch ein gewöhlicher Victimcache

=Floi=
2009-06-20, 20:57:48
um zurück zum startthema zu kommen. das kann man so nicht direkt vergleichen. bei intel zählt die breite und bei amd war es eher umgekehrt!

http://www.forum-3dcenter.org/vbulletin/showthread.php?t=448447&highlight=assoziativ

BlackBirdSR
2009-06-20, 22:38:06
Jein, Deine Erklärungen stimmen auf alle Fälle - für einen Kern.

Aber wenn Du an 4 Kerne und 4 L2s denkst, könnte es passieren, dass ein Kern Daten/Instruktionen in den L3 evakuiert, die noch im L2 eines andren Kerns liegen könnten :)

Sicherlich ein Spezialfall, aber für Instruktionen könnte das schon häufiger passieren, oder wie siehst Du das ?

ciao

Alex

Ja natürlich ist das dann die logische Konsequenz. Schließlich müssen die Daten irgendwann vom L1 in den L2. Sollte eigentlich mit inbegriffen sein, sorry für die undeutliche Aussage.

Spasstiger
2009-06-21, 14:10:24
Uhhhh ...

also wenn Du mir jetzt ein AMD pdf als Quelle oder wenigstens nen heise Link genannt hättest ok .. aber PCGH ... ne Du ... zwar besser als ComputerBild, aber das wars dann schon.
Naja, die Fachartikel werden oft von externen Experten geschrieben, z.B. hat Demirug hier ausm Forum schon einige Artikel für die PCGH verfasst.

S940
2009-06-21, 14:36:28
Naja, die Fachartikel werden oft von externen Experten geschrieben, z.B. hat Demirug hier ausm Forum schon einige Artikel für die PCGH verfasst.
Das hilft uns hier nicht weiter. Egal wer den Artikel geschrieben hat, er hat entweder Mist gebaut, oder Du hast was beim lesen falsch verstanden.

Die Sachlage ist so wie von BlackBirdSR geschildert, das kann ich Dir auch bestätigen.

Wenn Du mir nicht glaubstst, dann wenigstens BlackBird ;-)

ciao

Alex

Gast
2009-06-21, 14:52:49
Der Unterschied ist jetzt der, dass man bei der Gesamtgröße die Caches addiert, bei der Nutzgröße bei Intel aber substrahieren muss.


nicht ganz, du musst bei intel garnichts subtrahieren, die größe des höchsten cachelevels ist gleichzeitig die gesamtnutzbare cachegröße, sowohl pro kern (zumindest wenn wir bei den monolithischen DIEs bleiben) als auch insgesamt pro CPU.

S940
2009-06-21, 15:11:21
nicht ganz, du musst bei intel garnichts subtrahieren, die größe des höchsten cachelevels ist gleichzeitig die gesamtnutzbare cachegröße, sowohl pro kern (zumindest wenn wir bei den monolithischen DIEs bleiben) als auch insgesamt pro CPU.
Jein, substrahieren musst Du bei der Nutzgröße pro Kern, das was gemeint. Man hätte es besser schreiben können, aber aus den Zahlen in der kleinen Tabelle sollte ersichtlich sein, was gemeint ist ;)


ciao

Alex

Wuge
2009-06-21, 20:37:39
Ich versteh den Satz zwar nicht so ganz aber bei Intel muss garnix subtrahiert werden. In dem Grenzfall, bei dem 3 Kerne garnichts tun, hat der eine aktive 8 MByte Cache zur Verfügung.

=Floi=
2009-06-21, 20:41:24
die anderen caches dürften ihren bereich des L2 immer reserviert haben.

Spasstiger
2009-06-21, 22:51:43
die anderen caches dürften ihren bereich des L2 immer reserviert haben.
Vor allem kommt es wohl nicht vor, dass ein Core im normalen Betrieb tatsächlich komplett arbeitslos wird und die Daten in seinem Cache überhaupt nicht mehr braucht.

Gast
2009-06-22, 16:36:07
die anderen caches dürften ihren bereich des L2 immer reserviert haben.

Es gibt keinen "ihren" bereich, der L3 ist 16x assoziativ und die position der daten im cache wird von der speicheradresse bestimmt und nicht vom kern der darauf zugreift.

Vor allem kommt es wohl nicht vor, dass ein Core im normalen Betrieb tatsächlich komplett arbeitslos wird und die Daten in seinem Cache überhaupt nicht mehr braucht.

Bei den neueren CPUs können sich ja einzelne kerne schlafen legen, also so ganz unwahrscheinlich ist das auch wieder nicht.

Spasstiger
2009-06-22, 16:45:38
Bei den neueren CPUs können sich ja einzelne kerne schlafen legen, also so ganz unwahrscheinlich ist das auch wieder nicht.
Aber die Daten aus dem Cache benötigen sie nach dem Reaktivieren wahrscheinlich wieder. Das Betriebssystem beschäftig ja in der Regel alle Kerne im Wechsel, so dass sich die Kerne in sehr kurzen idle-Phasen zwar schlafen legen, aber direkt danach wieder weiterarbeiten und z.B. den Programmcode aus dem Cache benötigen.

Coda
2009-06-22, 17:02:45
In CPU-Clock-Cycles sind das Ewigkeiten zwischen den Wechseln die das Betriebssystem durchführt, deshalb kann man das fast ignorieren.

Linux tut das z.B. alle 10ms, das sind 30.000.000 Takte bei einer 3Ghz-CPU.

Gast
2009-06-22, 19:28:26
Aber die Daten aus dem Cache benötigen sie nach dem Reaktivieren wahrscheinlich wieder. Das Betriebssystem beschäftig ja in der Regel alle Kerne im Wechsel, so dass sich die Kerne in sehr kurzen idle-Phasen zwar schlafen legen, aber direkt danach wieder weiterarbeiten und z.B. den Programmcode aus dem Cache benötigen.

Unwahrscheinlich, vor allem aufgrund des von dir beschriebenen verhaltens der betriebssysteme. Wenn nach der schlafphase ein anderer thread oder gar prozess dort läuft braucht er mit ziemlicher sicherheit auch andere daten.