Warum hat die Größe des L1-Caches in den letzten 20 Jahren nicht sehr zugenommen?

35

Der Intel i486 verfügt über 8 KB L1-Cache. Der Intel Nehalem verfügt über 32 KB L1-Anweisungscache und 32 KB L1-Datencache pro Kern.

Die Menge an L1-Cache hat sich nicht annähernd mit der Rate erhöht, mit der sich die Taktrate erhöht hat.

Warum nicht?

eleven81
quelle
Sie vergleichen Äpfel mit Orangen. Die Taktraten haben zugenommen, es besteht jedoch kein Zusammenhang mit dem Bedarf an mehr Cache. Nur weil Sie etwas schneller erledigen können, bedeutet dies nicht, dass Sie von einem größeren Eimer profitieren.
Keltari
Übermäßiger Cache und Verwaltungsaufwand können das System verlangsamen. Sie haben den Sweet Spot gefunden und dort soll es bleiben.
Fiasco Labs

Antworten:

17

30 KB Wikipedia-Text sind nicht so hilfreich wie eine Erklärung, warum ein zu großer Cache weniger optimal ist. Wenn der Cache zu groß wird, beginnt die Latenz, um ein Element im Cache zu finden (unter Berücksichtigung von Cache-Fehlern), sich der Latenz zu nähern, in der das Element im Hauptspeicher nachgeschlagen wird. Ich weiß nicht, welche Anteile die CPU-Entwickler anstreben, aber ich denke, es ist etwas Analoges zur 80-20-Richtlinie: Sie möchten Ihre häufigsten Daten 80% der Zeit im Cache finden, die anderen 20 % der Zeit müssen Sie in den Hauptspeicher gehen, um ihn zu finden. (oder was auch immer die von den CPU-Designern beabsichtigten Proportionen sein mögen.)

EDIT: Ich bin sicher, dass es nicht annähernd 80% / 20% ist, also ersetze X und 1-X. :)

JMD
quelle
6
"Wenn der Cache zu groß wird, beginnt die Latenz, um ein Element im Cache zu finden (unter Berücksichtigung von Cache-Fehlern), sich der Latenz zu nähern, in der das Element im Hauptspeicher nachgeschlagen wird." Bist du dir da sicher? Wenn Sie zum Beispiel die Größe des installierten Arbeitsspeichers verdoppeln, erhöht dies sicherlich nicht die Latenz. Warum gilt dies für den Cache? Und warum sollte der L2-Cache mit neuen CPUs größer werden, wenn dies ein Problem ist? Ich bin kein Experte in diesem Bereich, ich möchte es wirklich wissen :)
sYnfo
2
Ich hatte eine ausführliche, ausführliche Beschreibung des Cachings in Software erstellt und festgestellt, wann Ihr Cache ausgewachsen ist und ob er gelöscht / neu erstellt werden sollte. Dann entschied ich, dass ich kein Hardware-Designer bin. :) In beiden Fällen kann die Antwort vermutlich durch das Gesetz der sinkenden Renditen zusammengefasst werden. Dh mehr ist nicht immer besser.
JMD
3
Aufgrund meiner langen Geschichte, in der ich mich mit Hardware auf niedrigem Niveau befasst habe, aber eigentlich kein Designer bin, würde ich sagen, dass die Latenz damit zusammenhängt, wie oft der Cache assoziativ ist, nicht mit der Größe. Ich vermute, dass sich die zusätzlichen Transistoren, die in den Cache gelangen, an anderer Stelle als effektiver für die Gesamtleistung erwiesen haben.
Brian Knoblauch
1
@JMD Mich würde diese Beschreibung trotzdem interessieren;) Obwohl Kommentare wahrscheinlich nicht der beste Ort dafür sind, stimmt das. @Brian Also, wenn ich es richtig verstehe, haben sie beschlossen, weniger Transistoren in den L1-Cache zu legen und gleichzeitig viel mehr in den L2-Cache zu legen, was bedeutend langsamer ist? Bitte nichts für ungut, ich bin nur neugierig :)
sYnfo
10

Ein Faktor ist, dass L1-Abrufe beginnen, bevor die TLB-Übersetzungen abgeschlossen sind, um die Latenz zu verringern. Bei einem ausreichend kleinen und ausreichend hohen Cache sind die Indexbits für den Cache zwischen virtuellen und physischen Adressen gleich. Dies verringert wahrscheinlich die Kosten für die Aufrechterhaltung der Speicherkohärenz mit einem virtuell indizierten, physisch gekennzeichneten Cache.

AJW
quelle
1
interessanteste Antwort :)
GameDeveloper
1
Ich glaube, das ist der Grund, aber lassen Sie mich die Nummer geben. Die Seitengröße in der x86-Architektur beträgt 4096 Byte. Der Cache möchte den Cache-Bucket auswählen, in dem nach dem Eintrag der Cache-Zeile (64 Byte) gesucht werden soll, bevor die Seitenübersetzung abgeschlossen ist. Es wäre teuer, sich zwischen zu vielen Einträgen in einem Bucket entscheiden zu müssen, daher enthält jeder Bucket nur 8 Einträge. Infolgedessen haben alle teuren x86-CPUs in den letzten zehn Jahren genau 32768 Bytes (512 Cache-Zeilen) in ihrem L1-Daten-Cache.
b_jonas
Da dies so schwer zu erhöhen ist, fügt der CPU eine mittlere Cache-Ebene hinzu, sodass wir jetzt getrennte L2- und L3-Caches haben. Außerdem sind der L1-Code-Cache und der L1-Daten-Cache getrennt, da die CPU weiß, ob sie auf Code oder Daten zugreift.
b_jonas
8

Die Cache-Größe wird von vielen Faktoren beeinflusst:

  1. Geschwindigkeit der elektrischen Signale (sollte, wenn nicht die Lichtgeschwindigkeit sein, etwas in der gleichen Größenordnung):

    • 300 Meter in einer Mikrosekunde.
    • 30 Zentimeter in einer Nanosekunde.
  2. Wirtschaftliche Kosten (Schaltungen auf verschiedenen Cache-Ebenen können unterschiedlich sein und bestimmte Cache-Größen können unwert sein)

    • Das Verdoppeln der Cache-Größe verdoppelt nicht die Leistung (auch wenn die Physik diese Größe zulässt). Bei kleinen Größen bedeutet das Verdoppeln viel mehr als die doppelte Leistung. Bei großen Größen bedeutet das Verdoppeln der Cache-Größe fast keine zusätzliche Leistung.
    • Auf Wikipedia finden Sie eine Tabelle, die zum Beispiel zeigt, wie unworth Caches größer als 1 MB macht (tatsächlich gibt es größere Caches, aber Sie müssen berücksichtigen, dass es sich um Multiprozessor-Kerne handelt.)
    • Für L1-Caches sollte es einige andere Diagramme geben (die von den Anbietern nicht angezeigt werden), die eine geeignete Größe von 64 KB aufweisen.

Wenn sich die Größe des L1-Caches nach 64 KB nicht geändert hat, lag dies daran, dass es nicht mehr wert war. Beachten Sie auch, dass der Cache jetzt eine größere "Kultur" aufweist und viele Programmierer "Cache-freundlichen" Code schreiben und / oder Prefetech-Anweisungen verwenden, um die Latenz zu verringern.

Ich habe einmal versucht, ein einfaches Programm zu erstellen, das auf zufällige Stellen in einem Array (mit mehreren MegaBytes) zugreift: Dieses Programm hat den Computer fast zum Stillstand gebracht, weil bei jedem zufälligen Lesevorgang eine ganze Seite aus dem RAM in den Cache verschoben wurde, und da dies sehr oft so einfach war Das Programm hat die gesamte Bandbreite aufgebraucht und nur noch wenige Ressourcen für das Betriebssystem zur Verfügung gestellt.

Spielentwickler
quelle
6

Ich glaube, man kann es einfach so zusammenfassen, dass der Zugriff umso langsamer ist, je größer der Cache ist. Daher hilft ein größerer Cache einfach nicht, da ein Cache die langsame Buskommunikation zum RAM reduzieren soll.

Da die Geschwindigkeit des Prozessors rapide zugenommen hat, muss der Cache mit der gleichen Größe immer schneller arbeiten, um mit der Geschwindigkeit mithalten zu können. Daher sind die Caches möglicherweise erheblich besser (in Bezug auf die Geschwindigkeit), jedoch nicht in Bezug auf den Speicher.

(Ich bin ein Software-Typ, also ist das hoffentlich nicht so schlimm.)

Andrew Flanagan
quelle
3

Aus dem L1-Cache :

Der Level 1-Cache oder Primär-Cache befindet sich in der CPU und wird zum temporären Speichern von Befehlen und Daten verwendet, die in Blöcken von 32 Bytes organisiert sind. Primärer Cache ist die schnellste Speicherform. Da es in den Chip mit einer Schnittstelle ohne Wartezustand (Verzögerung) zur Ausführungseinheit des Prozessors eingebaut ist, ist seine Größe begrenzt .

SRAM verwendet zwei Transistoren pro Bit und kann Daten ohne externe Unterstützung speichern, solange die Schaltung mit Strom versorgt wird. Dies steht im Gegensatz zum dynamischen RAM (DRAM), das viele Male pro Sekunde aktualisiert werden muss, um seinen Dateninhalt zu speichern.

Der Anfang 1997 eingeführte Intel P55 MMX-Prozessor zeichnete sich durch eine Vergrößerung des Level 1-Caches auf 32 KB aus. Die später in diesem Jahr eingeführten AMD K6- und Cyrix M2-Chips erhöhten den Einsatz weiter, indem sie Level 1-Caches mit 64 KB bereitstellten. 64 KB sind die Standardgröße des L1-Caches geblieben, obwohl verschiedene Mehrkernprozessoren sie möglicherweise unterschiedlich verwenden.

BEARBEITEN: Bitte beachten Sie, dass diese Antwort aus dem Jahr 2009 stammt und sich die CPUs in den letzten 10 Jahren enorm entwickelt haben. Wenn Sie zu diesem Beitrag gekommen sind, nehmen Sie all unsere Antworten hier nicht zu ernst.

Harrymc
quelle
Eine typische SRAM-Zelle besteht aus sechs MOSFETs. Jedes Bit in einem SRAM ist in vier Transistoren (M1, M2, M3, M4) gespeichert, die zwei kreuzgekoppelte Inverter bilden. Quelle Zweite Quelle
Lukecampbell
Dies ist nur eine Beschreibung der Situation und erklärt nichts darüber, warum.
Eonil
@Eonil - Wir könnten nicht das "Warum" beantworten, wenn wir wollten. Eine nachlassende Rendite der Leistung ist jedoch eine vernünftige Erklärung. Als die Frage vor fast einem Jahrzehnt geschrieben wurde, war es viel teurer, die Größe zu erhöhen, ohne einen Leistungstreffer einzubeziehen. Mit dieser Antwort wurde versucht, die beabsichtigte gestellte Frage zumindest zu beantworten.
Ramhound
-4

Tatsächlich ist die Größe des L1-Caches der größte Geschwindigkeitsengpass in modernen Computern. Die erbärmlich winzigen L1-Cache-Größen sind zwar der Sweetspot für den Preis, aber nicht für die Leistung. Auf den L1-Cache kann bei GHz-Frequenzen wie bei Prozessoroperationen zugegriffen werden, im Gegensatz zum 400-fach langsameren RAM-Zugriff. Es ist teuer und schwierig, es in das derzeitige zweidimensionale Design zu implementieren, es ist jedoch technisch machbar, und das erste Unternehmen, das es erfolgreich durchführt, wird Computer haben, die hundertmal schneller sind und immer noch kühl laufen, was in vielen Fällen zu bedeutenden Innovationen führen würde Diese sind derzeit nur über teure und schwer zu programmierende ASIC / FPGA-Konfigurationen zugänglich. Einige dieser Probleme haben mit proprietären / IP-Problemen und Unternehmensgier zu tun, die jetzt Jahrzehnte umfassen. wo nur ein magerer und ineffektiver Kader von Ingenieuren Zugang zum Innenleben hat und die meistens den Marschbefehl erhalten, um kosteneffektiven, verschleierten protektionistischen Unsinn herauszudrücken. Übermäßig privatisierte Forschung führt immer zu einer solchen technologischen Stagnation oder Drosselung (wie wir in der Luft- und Raumfahrt und in den Automobilen von den großen Herstellern gesehen haben und bald Pharma sein werden). Open Source und eine vernünftigere Patent- und Geschäftsgeheimnisregelung, die den Erfindern und der Öffentlichkeit zugute kommt (und nicht den Firmenchefs und Aktionären), würden hier sehr helfen. Es sollte ein Kinderspiel für die Entwicklung sein, viel größere L1-Caches zu erstellen, und dies sollte und hätte vor Jahrzehnten entwickelt werden können. Wir wären in Computern und in vielen wissenschaftlichen Bereichen, in denen wir sie einsetzen, viel weiter. und die größtenteils den Marschbefehl erhalten, kosteneffektiven, verschleierten protektionistischen Unsinn herauszudrücken. Übermäßig privatisierte Forschung führt immer zu einer solchen technologischen Stagnation oder Drosselung (wie wir in der Luft- und Raumfahrt und in den Automobilen von den großen Herstellern gesehen haben und bald Pharma sein werden). Open Source und eine vernünftigere Patent- und Geschäftsgeheimnisregelung, die den Erfindern und der Öffentlichkeit zugute kommt (und nicht den Firmenchefs und Aktionären), würden hier sehr helfen. Es sollte ein Kinderspiel für die Entwicklung sein, viel größere L1-Caches zu erstellen, und dies sollte und hätte vor Jahrzehnten entwickelt werden können. Wir wären in Computern und in vielen wissenschaftlichen Bereichen, in denen wir sie einsetzen, viel weiter. und die größtenteils den Marschbefehl erhalten, kosteneffektiven, verschleierten protektionistischen Unsinn herauszudrücken. Übermäßig privatisierte Forschung führt immer zu einer solchen technologischen Stagnation oder Drosselung (wie wir in der Luft- und Raumfahrt und in den Automobilen von den großen Herstellern gesehen haben und bald Pharma sein werden). Open Source und eine vernünftigere Patent- und Geschäftsgeheimnisregelung, die den Erfindern und der Öffentlichkeit zugute kommt (und nicht den Firmenchefs und Aktionären), würden hier sehr helfen. Es sollte ein Kinderspiel für die Entwicklung sein, viel größere L1-Caches zu erstellen, und dies sollte und hätte vor Jahrzehnten entwickelt werden können. Wir wären in Computern und in vielen wissenschaftlichen Bereichen, in denen wir sie einsetzen, viel weiter. Übermäßig privatisierte Forschung führt immer zu einer solchen technologischen Stagnation oder Drosselung (wie wir in der Luft- und Raumfahrt und in den Automobilen von den großen Herstellern gesehen haben und bald Pharma sein werden). Open Source und eine vernünftigere Patent- und Geschäftsgeheimnisregelung, die den Erfindern und der Öffentlichkeit zugute kommt (und nicht den Firmenchefs und Aktionären), würden hier sehr helfen. Es sollte ein Kinderspiel für die Entwicklung sein, viel größere L1-Caches zu erstellen, und dies sollte und hätte vor Jahrzehnten entwickelt werden können. Wir wären in Computern und in vielen wissenschaftlichen Bereichen, in denen wir sie einsetzen, viel weiter. Übermäßig privatisierte Forschung führt immer zu einer solchen technologischen Stagnation oder Drosselung (wie wir in der Luft- und Raumfahrt und in den Automobilen von den großen Herstellern gesehen haben und bald Pharma sein werden). Open Source und eine vernünftigere Patent- und Geschäftsgeheimnisregelung, die den Erfindern und der Öffentlichkeit zugute kommt (und nicht den Firmenchefs und Aktionären), würden hier sehr helfen. Es sollte ein Kinderspiel für die Entwicklung sein, viel größere L1-Caches zu erstellen, und dies sollte und hätte vor Jahrzehnten entwickelt werden können. Wir wären in Computern und in vielen wissenschaftlichen Bereichen, in denen wir sie einsetzen, viel weiter. Es sollte ein Kinderspiel für die Entwicklung sein, viel größere L1-Caches zu erstellen, und dies sollte und hätte vor Jahrzehnten entwickelt werden können. Wir wären in Computern und in vielen wissenschaftlichen Bereichen, in denen wir sie einsetzen, viel weiter. Es sollte ein Kinderspiel für die Entwicklung sein, viel größere L1-Caches zu erstellen, und dies sollte und hätte vor Jahrzehnten entwickelt werden können. Wir wären in Computern und in vielen wissenschaftlichen Bereichen, in denen wir sie einsetzen, viel weiter.

Zack Barkley
quelle