Wie funktionieren CPU-Caches?

Basinator

Lt. Junior Grade
Registriert
Jan. 2009
Beiträge
270
L1: Weniger Daten als L2, schneller als RAM, speichert häufige (?) oder zukünftige (?) zu verarbeitende Daten und Befehle.

L2: Langsamer als L1, dennoch schneller als RAM, ansonsten genauso?

L3: Datenausgleich bei Mehrkernern? Werden die Daten redundant abgelegt oder "nur" verteilt?

Wenn Daten im L1 nicht gefunden werden, wird im L2 geprüft. Wenn dort auch nicht, dann im L3? Was bedeutet Datenkonsistenz?

Vielen Dank!
 
Google und Wiki defekt ?

https://de.wikipedia.org/wiki/Konsistenz_(Datenspeicherung)

Caches und MMU
→ Hauptartikel: Cache

Moderne Prozessoren, die in PCs oder anderen Geräten eingesetzt werden, die eine schnelle Datenverarbeitung benötigen, sind mit sogenannten Caches ausgestattet. Caches sind Zwischenspeicher, die die zuletzt verarbeiteten Daten und Befehle zwischenspeichern und so die rasche Wiederverwendung ermöglichen. Sie stellen die zweite Stufe der Speicherhierarchie dar. Normalerweise besitzt ein Prozessor heutzutage bis zu dreistufige Caches:

Level-1-Cache (L1-Cache): Dieser Cache läuft mit dem Prozessortakt. Er ist sehr klein (etwa 4 bis 256 Kilobyte), dafür aufgrund seiner Position im Prozessorkern selbst sehr schnell abrufbar.
Level-2-Cache (L2-Cache): Der L2-Cache befindet sich meist im Prozessor, aber nicht im Kern selbst. Er umfasst zwischen 64 Kilobyte und 12 Megabyte.
Level-3-Cache (L3-Cache): Bei Mehrkernprozessoren teilen sich die einzelnen Kerne den L3-Cache. Er ist der langsamste der drei Caches, aber auch der größte (bis zu 256 Megabyte).

→ Hauptartikel: Memory Management Unit

Die Memory Management Unit übersetzt virtuelle Adressen in reale, für alle Prozessorkerne gleichzeitig, und stellt die Cache-Kohärenz sicher. Abhängig von ihrer genauen Ansiedlung beinhalten die Cache-Stufen dann entweder virtuelle oder reale Adressen.

https://de.wikipedia.org/wiki/Prozessor
 
Nein, ich habe mir nur dort bereits bedient und wollte jetzt mein Wissen prüfen/geprüft haben.

Ich übe gerade für eine Klassenarbeit nach den Ferien.
 
Zuletzt bearbeitet:
Die Langfassung: Caching und Cachalgorithmen sind kompliziert, was du wissen willst ist die kurzfassung.


Kurzfassung:

Je höher du in der Hirachie Cache/Ram/HDD kommst desto langsamer aber größer, weil billiger wird der Speicher.

L1 Cache ist extrem schnell, und vor allem extrem nah an der ALU um schnellstmöglich Daten zu transferrieren. Gespeichert wird in ihm das was VORRAUSSICHTLICH in den nächsten Takten gebraucht wird. Vorraussichtlich ist das Stichwort was caching schwierig macht. Je nach algorithmus kann das alles mögliche sein.
Meist sind es Register/Speicheraddressen bzw deren Inhalt die in der kurzen Vergangenheit sehr häufig benutzt wurden oder benachbart zu gerade benutzen addressen liegen.

L2 Cache ist das gleiche wie L1 nur etwas langsamer dafür größer...aber auch in ihm werden Daten abgelegt die in Zukunft wohl gebraucht werden könnten.

L3 Cache ist zum Datenaustausch zwischen ALU (CPU Kernen)

Wenn es spezifischer ums Caching geht, musst du dich wohl weiter bei google oder Büchern einlesen, auf Cache lines und cache arten kann ich nicht im detail eingehen
 
Bezüglich Datenkonsistenz: Durch Caching sind Daten zwangsweise mehrfach im System vorhanden, z.B. im L1-Cache und im RAM. Arbeitet nun ein Kern mit den Daten im L1-Cache, können diese verändert werden. Ein anderer Kern, der die gleichen Daten lesen möchte und diese aus dem RAM holen würde, würde damit einen veralteten Datenstand abfragen -> Daten sind nicht konsistent. Es müssen also Mechanismen vorhanden sein, die Derartiges verhindern.
 
Hallo, Vielen Dank!

Dann hatte ich das wohl im Prinzip doch richtig verstanden. Datenkonsistenz bedeutet, dass alle Kerne dieselben Daten zur Verfügung haben?
D. h. Veränderte Daten im L1 von Core 1 -> L3 -> L1 von Core 2?
 
Datenkonsistenz bedeutet, dass alle Kerne dieselben Daten zur Verfügung haben?
Ja und nein. Kohärenz bedeutet tatsächlich, dass das, was CPU 1 schreibt, irgendwann von CPU 2 gelesen werden kann - aber nicht unbedingt sofort, CPU 2 kann und wird einige Takte mit alten Daten rechnen - und Konsistenz stellt gewisse Anforderungen an die Reihenfolge sicher, in der CPU 2 diese Änderungen "sieht". Während der erste Punkt noch recht einfach ist, ist der zweite etwas komplexer und funktioniert z.T. nur, wenn man in der Software diverse Vorkehrungen trifft.

D. h. Veränderte Daten im L1 von Core 1 -> L3 -> L1 von Core 2?
Kommt auf die Architektur an. Das wäre der Idealfall, aber bei AMD werden Daten, die in einem lokalen Cache (L1/L2) als modified oder owned markiert sind (siehe MOESI) und von einem anderen Kern angefordert werden, erstmal in den RAM geschrieben, um dann von da aus geladen zu werden. Deswegen sind die Transport-Delays von einem Kern zum nächsten auch extrem lang.
 
wieso nutzt den amd nicht den l3 cache dazu
Wenn die amd cpu wirklich Daten von l2 cache in den arbeitsspeicher schreibt erklärt das auch die extrem geringere ipc
dagegen spricht das wenn man bei amd die NB OC die ipc steigt
Northbridge in der cpu getaktet gleich wie L3 cache je höher der takt desto mehr ipc
Neben den cpu takt
bsp ein fx8350 hat eine ipc bei 4ghz mit 2ghz NB von 1,18 (ein kern)
OC Nb und cpu takt von 4,4ghz und 2,6-2,8ghz nb hat eine ipc von 1,38 (Ein kern)
Wenn allerdings 4,4ghz und standard nb 2ghz ist ist die ipc dann 1,3 oder weniger
wichtig dabei ist der ramtakt nahe teiler 3 hat also beim bsp wäre das ddr3 1866 =2,8ghz nb
DDr3 1600 = nb 2,4ghz
Schlimm ist wenn der ram langsamer ist als 3 takte der cpu
schneller als 3 takte ist es egal
telier = cpu takt
nun wieso nur ein kern die gesamt performance der cpu ist der Effekt noch deutlicher zu erkennen
leider fehlen mir dazu die Daten
sollte aber zu @stock zu ipc etwa von 7,0 auf 8,5 gehen bei cpu und nb oc sicher bin ich aber nicht.
Im Gegengewicht zu einen amd phenom2 x6 bei 3,8ghz mit 2,4ghz nb etwa 6,6 gegen @stock 5,5, ohne NB oc 6,2, ungerade nb oc 6,4
In einzelkern 3,8ghz habe ich 1,16 ipc bei 4ghz 1,18 etwa dasselbe niveau eines fx8350
aufrüsten zu diesen würde sich lohnen nur geld technisch wäre es sinnlos (außer man bekommt den fürn Fuffi)
bei intel wird die Nb anders an den ram gebunden daher bringt NB OC bei intel nichts
​werte cinebench 11,5 selbst ermittelt amd phenomx6 beim fx8350 aus diversen test und foren post
 
Zuletzt bearbeitet:
VikingGe schrieb:
Kommt auf die Architektur an. Das wäre der Idealfall, aber bei AMD werden Daten, die in einem lokalen Cache (L1/L2) als modified oder owned markiert sind (siehe MOESI) und von einem anderen Kern angefordert werden, erstmal in den RAM geschrieben, um dann von da aus geladen zu werden. Deswegen sind die Transport-Delays von einem Kern zum nächsten auch extrem lang.

Bist du dir da sicher? Bulldozer verfügt ja über einen shared L3-Cache, über den prinzipiell auch (und sehr viel schneller) kommuniziert werden könnte.
 
foxio schrieb:
Bist du dir da sicher? Bulldozer verfügt ja über einen shared L3-Cache, über den prinzipiell auch (und sehr viel schneller) kommuniziert werden könnte.

Laut dem K10- und Family 15h-Optimization Guide läuft das ganze nur dann über den L3, wenn die Software vorher dafür sorgt, dass die veränderten Daten vorher aus dem L1 und L2 rausfliegen (Abschnitt 11.5 respektive 11.6). Dadurch spart man RAM-Bandbreite - die Latenz ist natürlich um ein Vielfaches höher, weil natürlich vorher die ganzen lokalen Caches mit (möglichst sinnvollen) Daten vollgeschrieben werden müssen. Insofern ist das nur für wenige Aufgaben wirklich sinnvoll.

Bei Bulldozer existiert das Problem aber nur bei Datentransfers zwischen verschiedenen Modulen - die beiden Kerne eines einzelnen Moduls haben den geteilten L2 und einen 4kB-Mini-Cache, in dem alle Writes zwischengespeichert werden, bevor sie in den L2 geschrieben werden. Da ist der Datentransfer tatsächlich sehr effizient.

Das Problem ist, dass bei der exklusiven Cache-Hierarchie der AMD-Chips nicht garantiert ist, dass eine Cache Line des L1/L2 auch im L3 zu finden ist - im Gegenteil, meist ist das eher nicht der Fall. Warum man da nicht trotzdem dafür sorgt, dass veränderte Daten erstmal da rein geschrieben werden, weiß ich nicht.

Im Gegengewicht zu einen amd phenom2 x6 bei 3,8ghz mit 2,4ghz nb etwa 6,6 gegen @stock 5,5, ohne NB oc 6,2, ungerade nb oc 6,4
Interessante Werte, gerade beim Cinebench kann ich zwischen 2.0 und 3.0 GHz NB-Takt nämlich längst nicht so einen großen Unterschied feststellen.

Kohärenz = Konsistenz, oder nur verlesen?
Das sind verschiedene Begriffe, das Googlen überlasse ich mal dir.
 
Zurück
Oben