L1- vs. L2- vs. L3-Cache: Unterschiede im Überblick

L1-, L2- und L3-Cache bilden eine mehrstufige Cache-Hierarchie, die nach Nähe zum CPU-Kern geordnet ist: Je näher, desto kleiner und schneller, je weiter entfernt, desto größer und langsamer. Bei typischen PC- und Server-CPUs liegen die üblichen Werte für L1 bei einigen zehn KB und wenigen Zyklen, für L2 bei einigen hundert KB bis einigen MB und zehn bis zwanzig Zyklen und für L3 bei einigen MB bis einigen zehn MB und einigen zehn Zyklen. L1 und L2 sind meist pro Kern vorhanden, L3 wird von mehreren Kernen gemeinsam genutzt. Ein Zugriff auf den DRAM-Hauptspeicher dauert einige hundert Zyklen, daher soll diese Hierarchie möglichst viele Zugriffe abfangen.

MerkmalL1-CacheL2-CacheL3-Cache
Verhältnis zu den KernenJedem Kern exklusiv zugeordnetMeist pro Kern privat. Es gibt auch Designs, bei denen sich wenige Kerne einen L2 teilenVon mehreren Kernen gemeinsam genutzt (ganzer Chip oder ein Kern-Cluster)
Kapazität (übliche Werte bei PC- und Server-CPUs)Je etwa 32 bis 64 KB für Befehle und DatenEtwa 256 KB bis einige MB pro KernEinige MB bis einige zehn MB für den ganzen Chip
Latenz (übliche Werte)Etwa 3 bis 5 ZyklenEtwa 10 bis 20 ZyklenEtwa 30 bis 70 Zyklen. Je weiter vom Kern entfernt, desto länger
Befehle und DatenGetrennt (I-Cache und D-Cache)Gemeinsam (Unified Cache)Gemeinsam (Unified Cache)
DesignschwerpunktKurze Trefferzeit. Wird in der Pipeline in jedem Zyklus genutztFängt L1-Fehlzugriffe ab und verringert die Miss-PenaltyVerringert Hauptspeicherzugriffe und ermöglicht den Datenaustausch zwischen Kernen
Ziel bei einem FehlzugriffL2L3Hauptspeicher (DRAM)
AdressierungMeist virtuell indiziert, physisch getaggt (VIPT)Physische AdressenPhysische Adressen
InklusivitätOberste Ebene. Ob ihr Inhalt in tieferen Ebenen enthalten ist, hängt von deren Strategie abJe nach Design inklusiv, nicht inklusiv usw.Inklusiv erleichtert die Eingrenzung von Kohärenzprüfungen. Es gibt auch exklusive Designs ohne Duplikate sowie nicht inklusive
Physische AnordnungIm Kern, direkt neben den AusführungseinheitenDirekt außerhalb des Kerns, als Teil des Kerns angeordnetMeist in Slices pro Kern aufgeteilt und über ein Ring- oder Mesh-Netzwerk verbunden
ZeilengrößeÜblich sind 64 ByteÜblich sind 64 ByteÜblich sind 64 Byte

Die Zahlenwerte sind typische Größenordnungen und variieren je nach Prozessgeneration und Produkt.

Wann welche Variante?

L1-Cache
Der nächstgelegene Cache, der bei jedem Befehlsabruf und jedem Load/Store genutzt wird. Er wirkt am besten, wenn häufig genutzte Daten auf einen kleinen Bereich konzentriert und die zeitliche Lokalität erhöht wird.
L2-Cache
Fängt Arbeitsdaten ab, die nicht in den L1 passen. Er wirkt besonders gut, wenn die Arbeitsdaten etwa durch Loop Blocking auf einige hundert KB bis einige MB begrenzt werden.
L3-Cache
Wirkt, wenn mehrere Kerne Daten gemeinsam nutzen oder große Datenmengen verarbeitet werden, die nicht in die kernprivaten Caches passen. Da er sich die Kapazität mit anderen Kernen teilt, wird er von gleichzeitig laufenden Programmen beeinflusst.

Häufige Fragen

Warum wird der L1-Cache nicht größer gemacht?

Mit wachsender Kapazität werden Speicherzellen-Arrays und Leitungen länger, und die Trefferzeit steigt. Der L1 wird in der Pipeline in jedem Zyklus genutzt, daher wirkt sich schon ein Zyklus Verzögerung stark auf die Leistung aus. Deshalb bleibt der L1 bei einigen zehn KB, und große Kapazität wird in L2 und L3 bereitgestellt. Bei VIPT begrenzt zudem das Verhältnis von Seitengröße und Assoziativität die Kapazität.

Warum wird nur der L1 in Befehls- und Datencache getrennt?

In der Pipeline wird in jedem Zyklus ein Befehl abgerufen, während ein anderer Befehl Daten liest oder schreibt. Bei getrennten Caches sind beide Zugriffe gleichzeitig möglich, und jeder Cache kann passend ausgelegt werden. Ab L2 sinkt die Zugriffshäufigkeit, daher ist dort ein gemeinsamer Cache üblich, dessen Kapazität flexibel genutzt werden kann.

Was ist besser: inklusiv oder exklusiv?

Beides hat Vor- und Nachteile. Bei inklusiven Caches ist der Inhalt der oberen Ebene stets auch in der unteren vorhanden, sodass Anfragen anderer Kerne allein anhand der unteren Ebene beantwortet werden können; durch die Duplikate sinkt jedoch die effektive Kapazität. Exklusive Caches haben keine Duplikate und nutzen die Gesamtkapazität effizient, doch Zeilenverschiebungen und Kohärenzverwaltung werden komplexer. Die Wahl richtet sich nach Kernanzahl und Cache-Größe.

Gelten die Kapazitäten und Zyklenzahlen der Tabelle für alle CPUs?

Nein, es sind übliche Werte für PC- und Server-CPUs. Sie hängen von Designgeneration, Taktfrequenz, Kernanzahl und Chipaufbau ab. Viele Mikrocontroller für eingebettete Systeme haben keinen L2 oder L3, umgekehrt gibt es CPUs mit gestapelten Cache-Chips für einen größeren L3. Die tatsächlichen Werte lassen sich mit Leistungszählern oder Programmen zur Messung der Speicherlatenz ermitteln.

Verständnis prüfen

Welche Speicherhierarchie eines üblichen Computers ist nach absteigender Zugriffsgeschwindigkeit richtig geordnet?

  1. ASSD → Hauptspeicher → L2-Cache → L1-Cache → Register
  2. BHauptspeicher → Register → SSD → L1-Cache
  3. CRegister → L1-Cache → L2-Cache → Hauptspeicher (DRAM) → SSD
Antwort und Erläuterung anzeigen

Antwort: C. Register → L1-Cache → L2-Cache → Hauptspeicher (DRAM) → SSD

Je näher an der CPU, desto schneller und kleiner ist der Speicher, je weiter entfernt, desto langsamer, größer und günstiger. Richtwerte: Register unter einem Takt, L1 etwa 1 ns (einige zehn KB), L2 einige ns (einige MB), L3 einige zehn ns (einige zehn MB), DRAM etwa 100 ns (einige zehn GB), SSD einige zehn bis 100 µs (einige TB). Indem häufig benutzte Daten in schnellen Ebenen gehalten werden, wird insgesamt ein schneller und großer Speicher kostengünstig realisiert.

Was ist der Hauptvorteil eines L1-Caches, der in einen Befehlscache (I-Cache) und einen Datencache (D-Cache) aufgeteilt ist?

  1. ABefehle und Daten kollidieren auch bei gleichen Adressen nicht, und die Kapazität erscheint doppelt so groß
  2. BDas Holen von Befehlen und das Lesen und Schreiben von Daten können im selben Takt parallel erfolgen
  3. CDa Befehle nicht überschrieben werden, kann auf den D-Cache verzichtet werden
Antwort und Erläuterung anzeigen

Antwort: B. Das Holen von Befehlen und das Lesen und Schreiben von Daten können im selben Takt parallel erfolgen

In einer Pipeline wird in jedem Takt ein Befehl geholt, während ein anderer Befehl Daten liest oder schreibt. Ist L1 in Befehls- und Datenteil aufgeteilt, können beide Zugriffe parallel erfolgen, ohne um den Port eines einzigen Caches zu konkurrieren, und es lassen sich jeweils der Eigenschaft angepasste Konfigurationen wählen. Die Kapazität verdoppelt sich dadurch nicht, die Gesamtkapazität wird nur aufgeteilt. Da Daten stets gelesen und geschrieben werden, kann auf den D-Cache nicht verzichtet werden. Ab L2 werden Befehle und Daten üblicherweise gemeinsam gehalten.

Was ist die Hauptaufgabe des L2-Caches bei einem mehrstufigen Cache, in dem der L2-Cache unterhalb des L1-Caches liegt?

  1. AMit einer schnelleren Trefferzeit als L1 die Misses von L1 selbst zu beseitigen
  2. BGrößer und langsamer als L1 zu sein, aber die Miss-Penalty von L1 zu verkleinern
  3. CAnstelle des Hauptspeichers stets alle Daten des Programms zu halten
Antwort und Erläuterung anzeigen

Antwort: B. Größer und langsamer als L1 zu sein, aber die Miss-Penalty von L1 zu verkleinern

L1 wird auf Geschwindigkeit ausgelegt und klein gebaut, sodass es in gewissem Maß Misses gibt. L2 ist größer als L1 und hat zwar eine längere Trefferzeit, ist aber viel schneller als der Hauptspeicher; es fängt viele der L1-Misses ab und verringert die Miss-Penalty von L1 stärker, als wenn der Zugriff bis zum Hauptspeicher ginge. Es ist nicht schneller als L1 und kann L1-Misses nicht beseitigen. Seine Kapazität ist viel kleiner als die des Hauptspeichers, und es kann nicht alle Daten halten.

  1. Welche Aussage zur Inklusiv-Methode, bei der ein unterer Cache (z. B. L2) den gesamten Inhalt des oberen Caches (L1) enthält, ist richtig?
  2. Was geschieht im Allgemeinen mit der Trefferzeit, wenn die Cache-Kapazität erhöht wird, und welche Begründung ist richtig?
  3. Der L1-Cache hat eine Trefferzeit von 1 ns und eine Miss-Rate von 5 %, der L2-Cache eine Trefferzeit von 10 ns und eine lokale Miss-Rate von 20 %, der Hauptspeicher eine Zugriffszeit von 100 ns. Wie groß ist die mittlere Speicherzugriffszeit?

Übungsfragen zu Speicherhierarchie und Leistung

Wichtige Begriffe erklärt

Cache-Speicher
Schneller, kleiner Speicher in der Nähe der CPU. Er hält häufig benötigte Daten und überbrückt den Geschwindigkeitsunterschied zum Hauptspeicher. Er besteht überwiegend aus SRAM.
Mittlere Speicherzugriffszeit (AMAT)
Durchschnittliche Dauer eines Speicherzugriffs. Berechnet als Trefferzeit + Fehlzugriffsrate × Fehlzugriffsstrafe; grundlegende Kennzahl zum Vergleich der Cache-Leistung.
Miss Penalty
Zusätzliche Zeit, die bei einem Cache-Fehlzugriff zum Holen der Daten aus der darunterliegenden Ebene anfällt. Sie ergibt sich aus der Zugriffszeit der unteren Ebene und der Übertragungszeit der Zeile.
Cache-Kohärenz
Mechanismus in Mehrkern-CPUs, der die Konsistenz sicherstellt, wenn mehrere Kerne Daten derselben Adresse in ihren Caches halten. Schreibt ein Kern, werden z. B. die veralteten Kopien in anderen Kernen für ungültig erklärt.
Zeitliche Lokalität
Eigenschaft, dass auf einmal zugegriffene Daten oder Befehle bald wieder zugegriffen wird. Beispiel sind in Schleifen wiederholt genutzte Variablen; einer der Gründe, warum Caches wirken.

Verwandte Vergleiche