Wo genau befinden sich L1-, L2- und L3-Caches im Computer?

40213
Bob

Wo genau befinden sich L1-, L2- und L3-Caches im Computer?

Ich weiß, wir verwenden Cache, um die Leistung zu erhöhen, indem Sie DATA und INSTRUCTIONS aus dem Cache statt aus dem Hauptspeicher auswählen.

Im Folgenden sind meine Fragen

  1. Wo genau L1 Cache liegt? . ist auf dem CPU-Chip?
  2. Wo genau befindet sich der L2-Cache?

  3. Wo genau befindet sich der L3-Cache? ist auf der Hauptplatine?

Ich denke, die neuesten SMP-Prozessoren verwenden 3-Level-Caches, um die Hierarchie der Cache-Ebenen und ihre Architektur zu verstehen.

27
Die genaue Hierarchie variiert zwischen verschiedenen Prozessoren. Um die Cache-Hierarchie auf Ihrem eigenen Computer herauszufinden, können Sie das Dienstprogramm CoreInfo.exe von SysInternal verwenden (http://technet.microsoft.com/en-us/sysinternals/cc835722.aspx). vor 13 Jahren 1
Je größer der Cache ist (L3> L2> 1), desto weiter entfernt befindet er sich vom Kern selbst (z. B. ist die Zugriffslatenz auf L3 höher als bei L1). vor 13 Jahren 2

6 Antworten auf die Frage

44
Hennes

Beginnen wir damit:

Ich denke, die neuesten SMP-Prozessoren verwenden 3-Level-Caches, um die Hierarchie der Cache-Ebenen und ihre Architektur zu verstehen.

Um Caches zu verstehen, müssen Sie einige Dinge wissen:

Eine CPU hat Register. Werte darin können direkt verwendet werden. Nichts ist schneller.

Es können jedoch keine unendlichen Register zu einem Chip hinzugefügt werden. Diese Dinge nehmen Platz ein. Wenn wir den Chip größer machen, wird er teurer. Das liegt zum einen daran, dass wir einen größeren Chip (mehr Silizium) benötigen, aber auch, weil die Anzahl der Chips mit Problemen zunimmt.

(Bild ein imaginärer Wafer mit 500 cm 2. Ich schneide 10 Chips davon, jeder Chip 50 cm 2 groß. Einer von ihnen ist kaputt. Ich verwende ihn und ich habe 9 Chips übrig. Jetzt nehme ich den gleichen Wafer und schneide 100 Chips davon, jeder zehnmal so klein, einer davon, wenn er kaputt ist. Ich verwerfe den zerbrochenen Chip, und ich habe noch 99 funktionierende Chips. Das ist ein Bruchteil des Verlusts, den ich sonst hätte haben müssen Chips müsste ich höhere Preise verlangen (mehr als nur den Preis für das zusätzliche Silizium)

Dies ist einer der Gründe, warum wir kleine, erschwingliche Chips wollen.

Je näher sich der Cache an der CPU befindet, desto schneller kann auf ihn zugegriffen werden.

Dies ist auch leicht zu erklären; Elektrische Signale bewegen sich in der Nähe der Lichtgeschwindigkeit. Das ist zwar schnell, aber immerhin eine endliche Geschwindigkeit. Moderne CPU arbeiten mit GHz-Takten. Das geht auch schnell. Wenn ich eine 4-GHz-CPU nehme, kann sich ein elektrisches Signal etwa 7,5 cm pro Takt bewegen. Das sind 7,5 cm in gerader Linie. (Chips sind alles andere als gerade Verbindungen). In der Praxis benötigen Sie deutlich weniger als 7,5 cm, da die Chips keine Zeit haben, um die angeforderten Daten zu präsentieren und das Signal zurückzusenden.

Unterm Strich möchten wir, dass der Cache so nah wie möglich ist. Was bedeutet große Chips.

Diese beiden müssen ausgewogen sein (Leistung vs. Kosten).

Wo befinden sich die L1-, L2- und L3-Caches in einem Computer?

Unter der Annahme, dass nur PC-Hardware verwendet wird (Mainframes sind ziemlich unterschiedlich, einschließlich der Leistungs-Kosten-Kosten-Balance).

IBM XT
Das ursprüngliche 4,77-MHz-Modul: Kein Cache. Die CPU greift direkt auf den Speicher zu. Ein Lesen aus dem Speicher würde diesem Muster folgen:

  • Die CPU legt die Adresse, die sie lesen möchte, auf den Speicherbus und setzt das Leseflag
  • Der Speicher legt die Daten auf dem Datenbus ab.
  • Die CPU kopiert die Daten vom Datenbus in ihre internen Register.

80286 (1982)
Noch kein Cache. Der Speicherzugriff war für die Versionen mit niedrigerer Geschwindigkeit (6 MHz) kein großes Problem, aber das schnellere Modell lief bis zu 20 MHz und musste beim Zugriff auf den Speicher häufig verzögert werden.

Sie erhalten dann ein Szenario wie dieses:

  • Die CPU legt die Adresse, die sie lesen möchte, auf den Speicherbus und setzt das Leseflag
  • Der Speicher beginnt, die Daten auf den Datenbus zu legen. Die CPU wartet.
  • Der Speicher ist fertig mit dem Abrufen der Daten und ist jetzt auf dem Datenbus stabil.
  • Die CPU kopiert die Daten vom Datenbus in ihre internen Register.

Dies ist ein zusätzlicher Schritt beim Warten auf den Speicher. Auf einem modernen System, das problemlos 12 Schritte umfassen kann, haben wir einen Cache .

80386 : (1985)
Die CPUs werden schneller. Sowohl pro Takt als auch bei höheren Taktraten.
RAM wird schneller, aber nicht so viel schneller als CPUs.
Als Ergebnis werden mehr Wartezustände benötigt. Einige Motherboards umgehen dies, indem Cache Hinzufügen (das wäre 1 sein st Level - Cache) auf dem Motherboard.

Ein Lesen aus dem Speicher beginnt nun mit einer Prüfung, ob sich die Daten bereits im Cache befinden. Wenn ja, wird es aus dem viel schnelleren Cache gelesen. Wenn nicht das gleiche Verfahren wie beim 80286

80486 : (1989)
Dies ist die erste CPU dieser Generation, die auf der CPU etwas Cache hat.
Es handelt sich um einen einheitlichen 8-KB-Cache, der für Daten und Anweisungen verwendet wird.

Um diese Zeit wird es üblich, 256 KB schneller statischer Speicher auf dem Motherboard als 2 setzte nd Level - Cache. So 1 st - Level - Cache in der CPU, 2 nd Level - Cache auf dem Motherboard.

486-Motherboard mit CPU-Position und 2. Level-Cache markiert

80586 (1993)
Der 586 oder Pentium-1 verwendet einen Split-Level-1-Cache. Jeweils 8 KB für Daten und Anweisungen. Der Cache wurde so aufgeteilt, dass die Daten- und Anweisungscaches individuell auf ihre spezifische Verwendung abgestimmt werden konnten. Sie haben noch eine kleine, aber sehr schnell 1 st Cache in der Nähe der CPU und einen größeren, aber langsamer 2 nd - Cache auf dem Motherboard. (In einer größeren Entfernung).

Im gleichen Pentium-1-Bereich produzierte Intel den Pentium Pro ('80686'). Je nach Modell hatte dieser Chip einen On-Board-Cache mit 256 KB, 512 KB oder 1 MB. Es war auch viel teurer, was mit dem folgenden Bild leicht zu erklären ist.

Bild einer Pentium Pro-CPU, 256 KB Cache-Modell

Beachten Sie, dass die Hälfte des Speicherplatzes im Chip vom Cache belegt wird. Und dies ist für das 256-KB-Modell. Technisch war mehr Cache möglich, und einige Modelle wurden mit 512 KB und 1 MB Cache erstellt. Der Marktpreis dafür war hoch.

Beachten Sie auch, dass dieser Chip zwei Chips enthält. Eine mit der tatsächlichen CPU und 1 st Cache und einer zweiten Düse mit 256 KB 2 nd - Cache.

Pentium-2

Das Pentium 2 ist ein Pentium-Pro-Core. Aus wirtschaftlichen Gründen kein 2 nd ist Cache in der CPU. Stattdessen, was für CPU (und 1 aa CPU uns eine Platine mit separaten Chips verkauft st Cache) und 2 nd - Cache.

Da die Technologie fortschreitet und wir beginnen Chips mit kleineren Komponenten setzen schafft es den 2 setzt finanziell möglich wird nd Cache zurück in den aktuellen CPU - Den. Es gibt jedoch immer noch eine Spaltung. Sehr schnelle 1 st Cache kuschelte sich an die CPU auf. Mit einer 1 st Cache pro CPU - Kern und eine größere, aber weniger schnell 2 nd Cache neben den Kern.

Bild eines Pentiums 2 'CPU' (sowohl mit als auch ohne Abdeckung)

Pentium-3
Pentium-4
Dies ändert sich nicht für Pentium-3 oder Pentium-4.

Um diese Zeit haben wir ein praktisches Limit erreicht, wie schnell wir CPUs takten können. Ein 8086 oder ein 80286 benötigte keine Kühlung. Ein Pentium-4, das mit 3,0 GHz betrieben wird, erzeugt so viel Wärme und verbraucht so viel Energie, dass es praktischer wird, zwei separate CPUs auf die Hauptplatine zu setzen, anstatt eine schnelle.

(Zwei 2,0-GHz-CPUs würden weniger Strom verbrauchen als eine identische 3,0-GHz-CPU, könnten jedoch mehr Arbeit leisten).

Dies kann auf drei Arten gelöst werden:

  1. Machen Sie die CPUs effizienter, damit sie mehr mit der gleichen Geschwindigkeit arbeiten.
  2. Verwenden Sie mehrere CPUs
  3. Verwenden Sie mehrere CPUs in einem "Chip".

1) Ist ein fortlaufender Prozess. Es ist nicht neu und wird nicht aufhören.

2) Wurde früh erledigt (z. B. mit zwei Pentium-1-Motherboards und dem NX-Chipsatz). Bisher war dies die einzige Möglichkeit, einen schnelleren PC zu bauen.

3) Erfordert CPUs, bei denen mehrere "CPU-Kern" in einen einzigen Chip eingebaut sind. (Wir haben diese CPU dann als Dual-Core-CPU bezeichnet, um die Verwirrung zu erhöhen. Vielen Dank für das Marketing :)

Heutzutage bezeichnen wir die CPU nur als "Kern", um Verwirrung zu vermeiden.

Sie erhalten jetzt Chips wie das Pentium-D (Duo), bei dem es sich im Grunde um zwei Pentium-4-Kerne auf demselben Chip handelt.

Frühes Pentium-D (2 P4-Kerne)

Erinnern Sie sich an das Bild des alten Pentium-Pro? Mit der riesigen Cache-Größe?
Sehen Sie die zwei großen Bereiche in diesem Bild?

Es stellt sich heraus, dass wir diese zwei teilen können nd Cache zwischen den beiden CPU - Kerne. Geschwindigkeit würde sinken leicht, aber ein 512KiB geteilt 2 nd Cache ist oft schneller als das Hinzufügen von zwei unabhängigen 2 nd Level - Caches der halben Größe.

Das ist wichtig für deine Frage.

Dies bedeutet, dass, wenn Sie etwas von einem CPU-Kern lesen und später versuchen, es von einem anderen Kern zu lesen, der den gleichen Cache verwendet, mit dem Sie einen Cache-Treffer erzielen. Auf den Speicher muss nicht zugegriffen werden.

Da Programme zwischen CPUs migrieren, können Sie abhängig von der Auslastung, der Anzahl der Kerne und dem Scheduler zusätzliche Leistung erzielen, indem Sie Programme, die dieselben Daten verwenden, an dieselbe CPU (Cache-Treffer unter L1 und niedriger) oder an dieselben CPUs anpinnen L2-Cache gemeinsam nutzen (und somit Fehlschüsse auf L1, aber Treffer auf L2-Cache-Lesevorgänge erhalten).

Auf späteren Modellen sehen Sie daher gemeinsam genutzte Level-2-Caches.

Bild einer offenen Core2-CPU

Wenn Sie für moderne CPUs programmieren, haben Sie zwei Möglichkeiten:

  1. Kümmern Sie sich nicht. Das Betriebssystem sollte in der Lage sein, Dinge zu planen. Der Scheduler hat einen großen Einfluss auf die Leistung des Computers, und die Mitarbeiter haben sich sehr viel Mühe gegeben, dies zu optimieren. Wenn Sie nichts Ungewöhnliches tun oder für ein bestimmtes PC-Modell optimieren, ist der Standard-Scheduler besser geeignet.
  2. Wenn Sie nur ein wenig Leistung benötigen und schnellere Hardware keine Option ist, sollten Sie die Laufflächen belassen, die auf dieselben Daten im selben Core oder auf einem Core mit Zugriff auf einen gemeinsam genutzten Cache zugreifen.


Ich weiß, dass ich L3-Cache noch nicht erwähnt habe, aber sie unterscheiden sich nicht. Ein L3-Cache funktioniert auf dieselbe Weise. Größer als L2, langsamer als L2. Und es wird oft zwischen Kernen geteilt. Wenn es vorhanden ist, ist es viel größer als der L2-Cache (sonst wäre es nicht sinnvoll) und es wird oft mit allen Kernen gemeinsam genutzt.

modernCPUwithL3.png

Was für ein toller Bericht! lukas.pukenis vor 8 Jahren 0
"aber ein 512 MB gemeinsam genutzter 2. Cache ist" Ich denke, es sind 512 KB. lukas.pukenis vor 8 Jahren 0
so eine ausgezeichnete Antwort! danke für das Teilen von Mann samsamara vor 8 Jahren 0
14
Andrey

Diese Caches sind Interna des Prozessors. Einige werden von Cores gemeinsam genutzt, andere sind von der Implementierung abhängig. Aber alle befinden sich auf dem Chip. Einige Details: Intel Intel® Core ™ i7 Prozessor, hier aufgenommen :

  • Ein 32-KB-Befehl und ein First-Level-Cache (L1) für 32 KB für jeden Kern
  • Ein Second-Level-Cache (L2) für 256 KB für jeden Kern
  • Last-Level-Cache (L3) für 8 MB gemeinsam genutzter Befehl / Daten, der von allen Kernen gemeinsam genutzt wird

Foto des Prozessorchips (leider nicht genau bekannt). Sie können sehen, dass der Cache einen erheblichen Bereich auf dem Chip beansprucht:

alt text

Wenn Sie mit Chip Siliziumchip meinen, kann der letzte Cache-Level außerhalb des Chips liegen. Beispielsweise verwendet IBMs zEC12 (http://en.wikipedia.org/wiki/IBM_zEC12_(microprocessor)) ein Multichip-Modul mit sechs Prozessorchips und zwei gemeinsam genutzte Cache-Chips mit L4-Cache. [Intels Crystal Well] (http://www.anandtech.com/show/6993/intel-iris-pro-5200-graphics-review-core-i74950hq-tested/3) bietet auch einen L4-Off-Chip-Cache (ebenfalls) mit eDRAM). Paul A. Clayton vor 9 Jahren 1
5
Douglas Leeder

In diesen Tagen befinden sich die Caches alle auf dem CPU-Würfel. Früher befanden sie sich manchmal auf der Hauptplatine oder auf der CPU-Tochterplatine, aber ich glaube nicht, dass es derzeit Prozessoren gibt, die Off-Chip-Caches verwenden.

+1 für den ** Teil dieser Tage. In alten Zeiten war es anders. (zB L2-Cache im Motherboard in der Cyrix / Pentium-1-Zeit) Hennes vor 11 Jahren 1
5
Michael Petito

Der Cache ist fast immer auf dem Chip, um einen schnelleren Zugriff zu ermöglichen. Hier ist ein schönes Diagramm, das einen Quad-Core-Intel-Prozessorchip mit hervorgehobenem L3-Cache zeigt. Wenn Sie sich Bilder wie diese eines CPU-Chips anschauen, handelt es sich bei großen, einheitlichen Bereichen normalerweise um Speicherbänke auf dem Chip, die als Cache verwendet werden.

Nehalem Die (http://www.legitreviews.com/article/824/1/)

0
Jas

Ich bin nicht sicher, was das L3 betrifft, aber L1 / L2 befindet sich immer auf der CPU. Hierarchiemäßig ist L1 im Allgemeinen der Befehlscache, L2 und L3 sind Datencaches.

L1 kann ein gemeinsam genutzter Cache (Befehls- und Datencache) sein. Es gibt auch CPUs mit L1-Daten- und L1-Befehls-Cache. Und L2-Cache befindet sich ** nicht immer ** auf der CPU (selbst L1 muss nicht auf der CPU sein, aber ich erinnere mich nur an einen Computer, bei dem dies der Fall war). Hennes vor 11 Jahren 0
0
Qurban Yazdani

L1 befindet sich auf dem CPU-Chip, L2 befindet sich zwischen dem Prozessor und dem Hauptspeicher. Es gibt jedoch einen Punkt zu wissen, dass sich L2 in einigen Systemen auf dem CPU-Chip befindet, während sich in einem anderen System L2 auf der Hauptplatine befindet und L3 konstant ist befindet sich auf dem Chip der Hauptplatine.