Warum werden in modernen CPUs mehrere Cache-Ebenen verwendet?

Warum werden in modernen CPUs mehrere Cache-Ebenen verwendet?

Ich habe kürzlich etwas über Prozessoren (vor allem Multiprozessoren) gelesen und bin auf das Konzept von mehrstufigen Caches gestoßen. Diese Designs verfügen in diesem Fall über mehrere Cache-Ebenen, um die Leistung zu steigern.

Ich konnte jedoch nicht herausfinden, wie ein zusätzlicher Cache die Leistung des Prozessors erhöht. Warum erhöht man nicht einfach stattdessen die Größe der vorhandenen Caches?

Antwort1

Die Verwendung mehrerer Cache-Ebenen ist teilweise ein Mechanismus zur Koordination von Mehrkernprozessoren und teilweise ein Kompromiss zwischen Preis und Leistung.

In einem Prozessor mit mehreren Kernen hat jeder Kern seinen eigenen L1-Cache. Dadurch kann der Kern vom Cache lesen und in den Cache schreiben, ohne sich Sorgen über Interferenzen mit anderen Kernen machen zu müssen. Die Kerne benötigen jedoch gemeinsamen Speicher, damit sie bestimmte Informationen problemlos austauschen können. Der L2-Cache wird von allen Kernen gemeinsam genutzt und dient daher als eine Art gemeinsamer Speicherplatz, in dem Informationen für alle Threads verfügbar sind.

Der Unterschied zwischen den L2- und L3-Caches ist der Kompromiss. Caches bestehen aus statischem RAM oder SRAM. Dies unterscheidet sich vom dynamischen RAM (DRAM), aus dem Ihr Hauptspeicher besteht. Dynamisches RAM muss regelmäßig „aufgefrischt“ werden, d. h. mit der Zeit verlieren DRAM-Zellen ihren Wert, sofern sie nicht gelesen und dann neu geschrieben werden. Ihr Speichercontroller führt dies automatisch aus, aber jedes Mal, wenn der Speichercontroller dies tun muss (tausende Male pro Sekunde), kann er keine Werte für den Prozessor lesen/schreiben, bis dies abgeschlossen ist. Dies verlangsamt den DRAM. SRAM hat diese Einschränkung nicht, SRAM behält seinen Wert unbegrenzt, solange es über Betriebsstrom verfügt, was es viel schneller macht. Ihre Caches (sowohl L2 als auch L3) bestehen also aus SRAM. Das Problem ist, dass SRAMsehrteuer; während 4 GB Hochgeschwindigkeits-DRAM etwas kostspielig, aber erschwinglich sind, liegen 4 GB SRAM deutlich außerhalb Ihrer Preisklasse.

Wenn sich ein Prozessorhersteller also dazu entschließt, mehr SRAM in das Design einzubauen, wird es merklich teurer. SRAM gibt es in mehreren Geschwindigkeiten, und wie zu erwarten ist schnelleres SRAM teurer als langsameres SRAM. Der Hersteller Ihres Prozessors hat also versucht, ihn für beide Geschwindigkeiten zu optimieren.GeschwindigkeitUndkostendurch die Verwendung sowohl eines schnelleren als auch eines langsameren SRAM. Der Prozessor ist dann so ausgelegt, dass er die am meisten benötigten Werte in den schnelleren Cache (L2) und die weniger benötigten Informationen in einen langsameren Cache (L3) legt. Durch sorgfältiges Verwalten dieses Speichers im Mikrocode des Prozessors entsteht ein ausgeglichener Kompromiss: Es gibt mehr Cache und ein Teil des Cache (hoffentlich der Cache, den der Prozessor am meisten benötigt) ist sehr schnell.

Zusammenfassend lässt sich also sagen, dass Prozessoren mehrstufige Caches haben, um die Kapazität des Prozessorcaches zu erhöhen, ohne den Preis des Prozessors drastisch zu erhöhen. Diese sorgfältige Mischung ermöglicht schnellere und günstigere Prozessoren.

Antwort2

Mehrstufige Caches stellen in erster Linie einen Kompromiss zwischen Kapazität und Zugriffskosten (sowohl Latenz/Zeit als auch Energie) dar.

Es kann hilfreich sein, es mit dem Kauf eines Werkzeugs zu vergleichen. Der Gang zum örtlichen Baumarkt (vergleichbar mit L1-Cache) wäre schnell und würde weniger Energie verbrauchen, aber der örtliche Baumarkt ist klein und hat das gesuchte Werkzeug wahrscheinlich nicht. Der Gang zum großen Baumarkt (vergleichbar mit L2-Cache) kostet mehr Zeit und Energie (er ist weiter weg und die Suche nach dem Werkzeug dauert länger), aber das Werkzeug ist wahrscheinlicher vorrätig. Wenn nicht einmal der große Baumarkt das Werkzeug hat, kann man zum Lager des Herstellers gehen (vergleichbar mit dem Hauptspeicher), wo das Werkzeug mit ziemlicher Sicherheit vorhanden ist. Wenn nicht einmal das Lager das Werkzeug hat, muss man mit einer noch längeren Wartezeit rechnen, bis die Fabrik des Herstellers (vergleichbar mit der Festplatte) mehr von dem Werkzeug produziert.

Wenn man neben einem Baumarkt wohnt (der über einen sehr großen L1-Cache verfügt), könnte man Zeit sparen, wenn die Vielfalt der gesuchten Hardware-Vorräte groß wäre (einige PA-RISC-Prozessoren für kommerzielle Workloads taten dies), aber normalerweise wird nur eine geringe Vielfalt an Vorräten verwendet, sodass ein kleiner Laden vor Ort den Artikel sehr wahrscheinlich auf Lager hat (hohe Wahrscheinlichkeit eines Cache-Treffers) und ein häufig verwendeter Artikel lässt sich in einem kleineren Laden schneller finden.

Wie jcrawfordor erwähnt hat, bietet die gemeinsame Nutzung einer Cache-Ebene durch mehrere Kerne einige Vorteile, da hierdurch die wiederholte Speicherung desselben Speicherinhalts vermieden wird, eine ungleichmäßige Nutzung der Speicherkapazität möglich ist (z. B. könnte ein Kern bei einem gemeinsam genutzten L2-Speicher den gesamten L2-Speicher verwenden, während der Kern bei L2-Caches pro Kern auf seinen eigenen L2-Cache beschränkt wäre) und die Kommunikation zwischen den Kernen vereinfacht und beschleunigt wird (bei einem L1-Fehler würde ohnehin auf den gleichen L2-Speicher zugegriffen, und es wäre nicht erforderlich zu prüfen, ob andere L2-Caches die Daten hätten).

(Ähnliche Vorteile der gemeinsamen Nutzung können in Bezug auf einen L2- und separaten L1-Befehls- und Daten-Caches gelten, eine solche gemeinsame Nutzung von Inhalten wird jedoch normalerweise vermieden (d. h. eine Cache-Zeile weist normalerweise nur Code oder Daten auf) und, mit Ausnahme weniger gebräuchlicher Aktionen wie selbstmodifizierendem Code und JIT-Kompilierung, findet selten eine Kommunikation zwischen einem Befehls-Cache und einem Daten-Cache statt.)

Das Teilen hat jedoch einen Mehraufwand. Man könnte es mit dem Einkaufen in einem Kaufhaus vergleichen. Je mehr Kunden das Geschäft nutzen, desto wahrscheinlicher ist es, dass sich an einer beliebigen Kasse eine Schlange bildet (vergleichbar mit Banken in einem L2-Cache). Außerdem führt der gemeinsame Eingang/Ausgang zu Verzögerungen (vergleichbar mit Arbitrierungsverzögerungen für den Cache-Zugriff). Das Bereitstellen mehrerer Türen kann einen höheren Durchsatz unterstützen, erhöht jedoch die zur Auswahl einer Tür erforderliche Zeit. Der Auswahlmehraufwand kann extrem gering (aber nicht nicht vorhanden) sein, wenn niemand sonst das Geschäft betritt/verlässt, aber wenn im Geschäft viel los ist, wird die Auswahl der Tür komplexer. Wenn man davon ausgeht, dass im Geschäft viel los sein wird, kann ein Teil der Entscheidungsverzögerung vermieden werden. aber es wäre schneller, einfach die bequemste Tür zu verwenden, wenn der Laden nicht ausgelastet ist (in ähnlicher Weise könnte ein Cache beispielsweise die zusätzliche Zeit benötigen, um einen Puffer zuzuweisen, der die Speicheranforderungsinformationen enthält, selbst wenn ein solcher Puffer nicht erforderlich wäre, wenn der Cache nicht ausgelastet ist – ohne eine solche Optimierung würden, wenn der Cache ausgelastet ist, die beiden Schritte zum Bestimmen, ob der Cache ausgelastet ist, und zum Zuweisen eines Puffereintrags nacheinander ausgeführt, sodass die Gesamtzeit die Summe der beiden Schritte wäre; wenn der Cache jedoch nicht ausgelastet ist, wird der Schritt der Pufferzuweisung vermieden).

Die gemeinsame Nutzung kann aufgrund der begrenzten Assoziativität eines Caches auch die Häufigkeit von Konfliktfehlern erhöhen und zu schlechten Cache-Ersatzentscheidungen führen (z. B. würde ein Kern, der ein Streaming-Zugriffsmuster mit geringer Datenwiederverwendung verwendet, dazu neigen, Kapazitäten zu verwenden, die ein anderer Kern mit häufiger Datenwiederverwendung besser nutzen könnte). Es gibt Techniken, um solche Nachteile zu reduzieren, aber sie erhöhen die Komplexität und verursachen andere Kosten.

Antwort3

Die näheren Caches sind viel kleiner.Hier ist ein bisschen darüber, ich kann nichts über die Geschwindigkeit finden, aber sie ist wahrscheinlich (es ist sinnlos und teuer, darüber nachzudenken) auf die Geschwindigkeit des Prozessors oder der Hauptplatine beschränkt.

Es gibt drei Ebenen: CPU-Cache (zwei in einem Single-Core), RAM (sekundär) und Festplatten (tertiär).

Antwort4

Prozessoren haben einen mehrstufigen Cache wie L1, L2 und L3.

L1 ist der schnellste Cache, aber auch der teuerste. L2 kommt als Zweiter und wird am meisten diskutiert. Und danach kommt L3, das nach L2 kommt.

Je schneller der Cache, desto schneller kann der Prozessor die Daten daraus lesen und darin schreiben.

Unternehmen müssen jedoch bei jedem Prozessor eine Entscheidung zwischen Leistung und Kosten treffen und daher Multilevel-Cache in Prozessoren einbauen, die ihrem Preis entsprechen.

verwandte Informationen