Moderne CPUs laufen unglaublich schnell; sie können den System-RAM deutlich übertreffen. Dieses Geschwindigkeitsungleichgewicht zwischen CPU und Arbeitsspeicher würde dazu führen, dass Ihr Prozessor oft untätig bleibt und darauf wartet, dass Daten an ihn gesendet werden, damit er einen Prozess fortsetzen kann. Um dies zu verhindern und CPUs immer schneller laufen zu lassen, wird ein CPU-Cache verwendet.
Wie beschleunigt ein CPU-Cache eine CPU?
Der CPU-Cache ist so konzipiert, dass er so schnell wie möglich ist und Daten, die die CPU anfordert, zwischenspeichert. Die Geschwindigkeit des CPU-Cache ist auf drei Arten optimiert: Latenz, Bandbreite und Nähe. Der CPU-Cache arbeitet mit sehr geringen Latenzen, wodurch die Zeit bis zur Rückgabe eines Ergebnisses minimiert wird. Der Intel i9-9900k hat beispielsweise eine Cache-Latenz von 0,8, 2,4 und 11,1 Nanosekunden für den L1-, L2- und L3-Cache. Im Vergleich dazu liegt die Latenz von modernen Hochgeschwindigkeits-RAMs in der Größenordnung von 14 Nanosekunden.
Tipp: Die Cache-Ebenen werden später genauer erklärt, aber einfach gesagt, die unteren Cache-Layer sind schneller, aber teurer, haben also geringere Kapazitäten. Eine Nanosekunde ist eine Milliardstel Sekunde, daher bedeutet eine Latenz von 0,8 Sekunden, dass es weniger als eine Milliardstel Sekunde dauert, um ein Ergebnis zurückzugeben.
In Bezug auf die Bandbreite bietet der CPU-Cache erhebliche Leistungsverbesserungen gegenüber herkömmlichem Speicher und RAM. Die Lesegeschwindigkeiten des L1- und L3-Cache erreichen Spitzenwerte von 2,3 TB/s bzw. 370 GB/s, während die Bandbreite des Arbeitsspeichers typischerweise bei etwa 40 GB/s liegt. Diese erhöhte Bandbreite bedeutet, dass der CPU-Cache Daten viel schneller an die CPU übertragen kann als der RAM.
Um die maximal möglichen Geschwindigkeiten zu erreichen, ist der CPU-Cache tatsächlich in das Silizium des CPU-Die selbst eingebaut. Dadurch wird die Distanz, die elektrische Signale zurücklegen müssen, minimiert und die Latenz so gering wie möglich gehalten. Als beispielsweise der L3-Cache zum ersten Mal vom Motherboard auf den CPU-Die verschoben wurde, konnte der damalige Prozessor (Pentium 4 EE) eine Leistungssteigerung von 10-20% erzielen.
CPU-Cache-Architektur
Moderne CPUs verwenden im Allgemeinen drei CPU-Cache-Schichten mit der Bezeichnung L1-3, wobei Caches mit niedrigeren Nummern näher an den CPU-Kernen liegen, schneller und teurer sind. Jeder einzelne CPU-Kern in einer Multi-Core-CPU verfügt über einen eigenen L1-Cache. Es ist normalerweise in zwei Teile aufgeteilt, die L1I und L1D. Der L1I wird verwendet, um Anweisungen für die CPU zwischenzuspeichern, während L1D verwendet wird, um die Daten zwischenzuspeichern, an denen diese Anweisungen ausgeführt werden sollen.
Jeder CPU-Kern hat typischerweise auch einen eigenen L2-Cache auf einer modernen CPU. Der L2-Cache ist größer und langsamer als der L1-Cache und wird hauptsächlich zum Speichern von Daten verwendet, die sonst nicht in den L2-Cache passen würden. Durch einen dedizierten L2-Cache pro Kern werden Cachekonflikte vermieden. Bei Cache-Konflikten kämpfen verschiedene Kerne darum, Cache-Speicherplatz für ihre eigenen Workloads zu beanspruchen, was dazu führen kann, dass wichtige Daten aus dem Cache gelöscht werden.
Der L3-Cache wird normalerweise von allen CPU-Kernen des Prozessors gemeinsam genutzt. Auch hier ist der L3-Cache langsamer als der L2-Cache, aber billiger und größer. Durch die Bereitstellung eines gemeinsam genutzten Caches ist es möglich, die Datenmenge zu reduzieren, die auf niedrigeren Ebenen des Pro-Core-Cache dupliziert würde.
Tipp: In Cache-Größen hat Intels i9-9900K beispielsweise einen 64 KB L1- und einen 256 KB L2-Cache pro Kern (für insgesamt 512 KB L1 und 2 MB L2) sowie einen 16 MB gemeinsam genutzten L3-Cache.
Wie wird der CPU-Cache verwendet?
Alle Ebenen des CPU-Cache werden verwendet, um die Prozessorleistung zu beschleunigen, indem Daten aus dem RAM zwischengespeichert werden. Wenn eine CPU Daten anfordert, durchsucht sie normalerweise zuerst ihre Cache-Schichten, um die Daten so schnell wie möglich abzurufen. Wenn die Daten in einem Cache-Treffer gefunden werden, kann die CPU ihre Verarbeitung fortsetzen. Wenn die Daten nicht im Cache sind, bei einem sogenannten Cache-Miss, muss die CPU den RAM und dann die Festplatte überprüfen, wenn die Daten nicht vorhanden sind. Die schnelleren Schichten werden immer zuerst auf maximale Leistung überprüft.
Um der CPU zu helfen, die benötigten Daten im Cache zu haben, wenn sie sie benötigt, versucht der Cache, die Daten, die die CPU als nächstes benötigt, vorwegzunehmen. Wenn die CPU beispielsweise einige Daten für ein Bild angefordert hat, versucht sie beim Rendern des Cache möglicherweise, mehr Bilddaten präventiv zwischenzuspeichern, damit sie der CPU so schnell wie möglich zugeführt werden können.