Warum ist der L1-Cache schneller als der L2-Cache?


14

Ich versuche zu verstehen, warum bestimmte CPU-Cache-Speicher schneller sind als andere. Beim Vergleich des Cache-Speichers mit so etwas wie dem Hauptspeicher gibt es Unterschiede im Speichertyp (SRAM gegenüber DRAM) und in der Lokalität (auf dem Chip gegenüber dem Durchqueren eines Speicherbusses), die sich auf die Zugriffsgeschwindigkeit auswirken können. Aber L1 und L2 befinden sich im Allgemeinen auf demselben Chip oder zumindest auf demselben Chip, und ich denke, sie sind derselbe Speichertyp. Warum ist L1 also schneller?


9
Weil es so gebaut ist.
Ignacio Vazquez-Abrams

Es gibt mehrere Möglichkeiten, denselben RAM-Typ zu erstellen. Einige Möglichkeiten führen dazu, dass der Arbeitsspeicher schneller ist als der auf andere Weise erstellte Arbeitsspeicher.
Ignacio Vazquez-Abrams

Der gleiche Grund, warum Ihr DDR-RAM schneller als Ihre Festplatte ...
Hassan789

1
verwandt: Meine Antwort auf und meine SO-Frage zu den Cache-Größen erklären auch einige Gründe für den Kompromiss zwischen Geschwindigkeit und Stromverbrauch bei Caches mit mehreren Ebenen. Grundsätzlich kostet die superschnelle Ausführung eines Caches Leistung und Chipfläche, um mehr parallel zu erledigen, und ist nicht kompatibel mit den großen Größen / der Assoziativität, die Sie in einem Cache der letzten Ebene wünschen.
Peter Cordes

Antworten:


24

Nein, sie sind nicht derselbe RAM-Typ, obwohl sie sich auf demselben Chip befinden, der denselben Herstellungsprozess verwendet.

Von allen Caches muss der L1-Cache die schnellstmögliche Zugriffszeit (niedrigste Latenz) aufweisen, im Vergleich zu der Kapazität, die für eine angemessene Trefferquote erforderlich ist. Aus diesem Grund werden größere Transistoren und breitere Metallspuren verwendet, um Platz und Leistung gegen Geschwindigkeit auszutauschen. Die Caches höherer Ebenen müssen höhere Kapazitäten aufweisen, können sich jedoch eine langsamere Ausführung leisten, sodass kleinere Transistoren verwendet werden, die enger gepackt sind.


3
Das ist, wonach ich suche, danke. Kennen Sie gute Quellen, in denen ich mehr über die Unterschiede lesen kann?
ConditionRacer

Nein, nicht ohne weiteres. Die Details dieser Kompromisse zwischen Raum, Leistung und Zeit sowie die Auswahl der Cache-Kapazität und -architektur hängen sehr eng mit den proprietären Details der Herstellerprozesse zusammen, so dass (wenn überhaupt) nur sehr wenig darüber veröffentlicht wird. Ich kann nur allgemein sprechen.
Dave Tweed

10
L1 ist auch kleiner, was bedeutet, dass die Signalausbreitung weniger Taktzyklen dauert: Oft wird die Größe von L1 als der größte Speicher bestimmt, auf den in 1 (oder 2) Takten zugegriffen werden kann.
Brian Drummond

6
Zusätzlich zu Brian Drummonds Punkt verwendet L1 typischerweise auch einen parallelen Datentag-Zugriff. L2 greift in der Regel zuerst auf Tags zu (um zu bestimmen, in welche Richtung ein Treffer erfolgt), dann auf Daten, wodurch die Latenz erhöht, aber Energie gespart wird (signifikant bei größerer Größe, höherer Assoziativität und höherer Fehlerrate). (Der L2-Zugriff beginnt normalerweise auch, nachdem ein L1-Fehler bestätigt wurde, wodurch die effektive Latenz erhöht wird.)
Paul A. Clayton,

@BrianDrummond - kleiner sowohl in Bezug auf die Drahtlast als auch die Gate-Tiefe (ich denke nicht, dass dies aus Ihrem Kommentar ersichtlich ist).
Sean Houlihane

5

L1 wird normalerweise als Speicher für dekodierte Anweisungen verwendet, während L2 ein allgemeiner Cache für einen einzelnen Kern ist. Je niedriger der Cache ist, desto kleiner ist er und desto schneller ist er normalerweise. Als Faustregel für PC-Prozessoren gilt:

L1-Cache: Zugriff auf 2-3 Taktzyklen

L2-Cache: ~ 10-Takt-Zugriff

L3 Cache: ~ 20-30 Taktzyklen

Das Design des L1-Caches sollte so sein, dass die Trefferrate maximiert wird (die Wahrscheinlichkeit, dass sich die gewünschte Befehlsadresse oder Datenadresse im Cache befindet), während die Cache-Latenz so gering wie möglich gehalten wird. Intel verwendet einen L1-Cache mit einer Latenz von 3 Zyklen. Der L2-Cache wird von einem oder mehreren L1-Caches gemeinsam genutzt und ist häufig sehr viel größer. Während der L1-Cache darauf ausgelegt ist, die Trefferquote zu maximieren, ist der L2-Cache darauf ausgelegt, die Fehlerstrafe (die Verzögerung, die auftritt, wenn ein L1-Fehler auftritt) zu minimieren. Für Chips mit L3-Caches ist der Zweck spezifisch für das Design des Chips. Für Intel kamen L3-Caches erstmals 2002 in 4-Wege-Multiprozessorsystemen (Pentium 4 Xeon MP-Prozessoren) zum Einsatz. L3-Caches reduzierten in diesem Sinne Verzögerungen in Multithread-Umgebungen erheblich und entlasteten den FSB. Damals,

Zitat stammt hier von „Pinhedd der“ Antwort.


1
L1 wird im Allgemeinen auch für Daten verwendet, aber es ist wahr, dass L1-Daten und L1-Anweisungen häufig getrennt sind, während L2 gemeinsam genutzt wird: programmers.stackexchange.com/questions/44731/… (ein Grund für die gemeinsame Nutzung besteht darin, dass es mehrere Möglichkeiten gibt ).
Guy Sirton

1
Es ist üblich, dass Prozessoren separate Befehls- und Datencaches auf der L1-Ebene haben. Sicherlich für spätere x86- und SPARC-Chips. Einige L1-Anweisungs-Caches speichern keine dekodierten Anweisungen. Der Pentium 4 speicherte decodierte Anweisungen, aber dann kehrte Intel zu normalen I-Caches zurück und fügte kürzlich decodierte Anweisungs-Caches wieder in ihre Chips ein.
Craig S. Anderson

3

Es gibt mehrere Gründe, warum die Geschwindigkeit umgekehrt proportional zur Größe ist. Das erste, woran ich denke, ist die physische Dominanz von Leitern, bei der die Signalausbreitung auf einen Faktor der Lichtgeschwindigkeit beschränkt ist. Ein Vorgang kann so lange dauern, wie ein elektrisches Signal erforderlich ist, um die längste Strecke innerhalb der Speicherkarte und zurück zurückzulegen. Ein anderer verwandter Grund ist die Trennung von Taktdomänen. Jede CPU verfügt über einen eigenen Taktgenerator, der es der CPU ermöglicht, mit Multi-GHz-Takten zu arbeiten. Der Level-1-Cache wird mit der CPU-Uhr synchronisiert, die die schnellste im System ist. Level-2-Cache hingegen muss viele CPUs bedienen und wird in einer anderen (langsameren) Taktdomäne ausgeführt. Nicht nur der L2-Takt, der langsamer ist (größere Kachel), sondern auch das Überschreiten einer Taktbereichsgrenze führt zu einer weiteren Verzögerung. Dann gibt es natürlich die Fan-Out-Probleme (bereits erwähnt).


1

Neben den inhärenten Leistungsmerkmalen spielt auch die Lokalität eine Rolle (L1 ist näher an der CPU). Nach dem, was jeder Programmierer über Speicher wissen sollte :

Es ist interessant zu bemerken, dass für den L2-Cache auf dem Chip ein großer Teil (wahrscheinlich sogar der größte Teil) der Zugriffszeit durch Drahtverzögerungen verursacht wird. Dies ist eine physikalische Einschränkung, die sich nur mit zunehmender Cache-Größe verschlechtern kann. Nur das Prozessschrumpfen (z. B. von 60 nm für Merom auf 45 nm für Penryn in Intels Aufstellung) kann diese Zahlen verbessern.


Ich denke, dass dies meistens dort zutrifft, wo die Caches groß sind - Dies gilt nicht für alle Prozessortypen (obwohl die Drahtverzögerung erheblich ist).
Sean Houlihane
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.