Was den "copy&paste-Fehler" angeht, so würde ich das nicht sagen. Im Developer Guide kann man halt kein plattes Marketinggeblubber von sich geben, sondern muss die Eier auf den Tisch legen und zeigen was man hat und was nicht. Würde AMD da mit 8 Cores werden, würden Sie sich lächerlich machen, da jedem der das liest klar ist, dass da einfach einige Bestandteile fehlen damit es 8 Cores wären. Für 4 langt es, mehr aber auch nicht.
Die Seite mit den 16MB L3 hättet ihr aber ruhig angeben können
(btw ist die Seite 212)
Und die Antwort auf eure Frage steht eine Seite zuvor :ulgy:
For data, the AMD Family 15h processor has three levels of cache, a16-Kbyte L1 data cache, a 1–
2MB unified L2, and a 16MB or greater L3.
Seite 211
WTF
den Teil da hinten hat doch noch verdammt viele interessante Inhalte. Ich muss wohl doch auch den hinteren Teil mal genau lesen und nicht nur am Anfang alles und dann nur noch die Einführungen
Für mich hört sich das so an, als ob ein BD nicht 8 MB L3 hätte, sondern 16MB L3 Cache bei den 4 Modulern, und halt bis zu 32MB dann bei den Server CPUs. Das wäre schon SEHR krass.
Btw. Ich hab jetzt die Lösung dafür gefunden, was mit "mostly exclusive" gemeint ist. Das war ja ganz am Anfang des Guides SEHR schwammig formuliert.
However, in AMD Family 15h processors, for
purposes of optimizing for multiple readers, multiple cores may generate local copies when they
access the shared L3 cache line. For this reason, the cache is termed “mostly” exclusive.
Das heißt, man kann die Caches noch immer einfach zusammen zählen, und nur wenn Daten von mehreren Threads benutzt werden, werden diese entsprechend im L2 oder L3 einmalig doppelt vorgehalten. Für Const Werte wird dies sicherlich nicht der Fall sein, aber für alle anderen schon.
Kurzes Beispiel:
Wir haben 2 Threads die auf eine Variable zugreifen, und die Threads laufen auf einem Modul. Dann liegt eine Kopie dieses Werts im L2 vor, damit sollte einer der beiden Threads diesen verändern, der andere dies sofort merkt und seine Cacheline dirty setzt.
Wenn wir 2 Threads haben, die auf zwei unterschiedlichen Modulen laufen, ist die Kopie nicht im L2 sondern im L3.
Ich denke soweit ist das klar. Mit 3,4,5,6 etc. Threads bleibt es auch bei jeweils einer Kopie, dann halt immer im L3.
Sehr gut gelöst. Wie ich finde deutlich besser als bei Intel, da man wirklich nur die Daten doppelt vorhält, die wirklich auch doppelt gebraucht werden