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

23394
eleven81

Der Intel i486 hat einen L1-Cache von 8 KB. Der Intel Nehalem verfügt über 32 KB L1-Befehls-Cache und 32 KB-L1-Daten-Cache pro Kern.

Die Menge des L1-Caches hat sich nicht annähernd so schnell erhöht wie die Taktrate.

Warum nicht?

28
Sie vergleichen Äpfel mit Orangen. Die Taktraten sind gestiegen, es gibt jedoch keine Korrelation zur Notwendigkeit von mehr Cache. Nur weil Sie etwas schneller machen können, bedeutet das nicht, dass Sie von einem größeren Eimer profitieren. Keltari vor 11 Jahren 0
Überschüssiger Cache und Verwaltungsaufwand können ein System verlangsamen. Sie haben den Sweet Spot gefunden und dort soll es bleiben. Fiasco Labs vor 11 Jahren 0

6 Antworten auf die Frage

13
JMD

30K Wikipedia-Text ist nicht so hilfreich wie eine Erklärung, warum ein zu großer Cache weniger optimal ist. Wenn der Cache zu groß wird, beginnt die Latenzzeit, um ein Element im Cache zu finden (Factoring in Cache-Misses), die Latenzzeit, nach der das Element im Hauptspeicher nachgeschlagen wird. Ich weiß nicht, welche Proportionen CPU-Designer anstreben, aber ich denke, es ist etwas analog zur 80-20-Richtlinie: Sie möchten die am häufigsten verwendeten Daten in 80% der Fälle im Cache und die anderen 20 finden % der Zeit müssen Sie zum Hauptspeicher gehen, um es zu finden. (oder wie auch immer die CPU-Entwickler beabsichtigt sind).

EDIT: Ich bin mir sicher, dass es bei 80% / 20% nicht weit ist, also ersetze X und 1-X. :)

"Wenn der Cache zu groß wird, beginnt die Latenzzeit, um ein Element im Cache zu finden (Factoring in Cache-Misses), die Latenzzeit, in der das Element im Hauptspeicher nachgeschlagen wird." Bist du dir sicher? Durch die Verdoppelung des installierten Arbeitsspeichers wird beispielsweise die Latenz nicht erhöht. Warum sollte dies für den Cache gelten? Und warum sollte der L2-Cache mit neuen CPUs größer werden, wenn dies ein Problem darstellt? Ich bin kein Experte, ich möchte es wirklich wissen :) sYnfo vor 14 Jahren 5
Ich hatte eine lange, ausführliche Beschreibung der Zwischenspeicherung in Software erstellt und gemessen, wann sich der Zwischenspeicher selbst entwickelt hat und neu erstellt werden sollte, aber dann entschied ich, dass es am besten wäre, zuzugeben, dass ich kein Hardware-Designer bin. :) In jedem Fall vermute ich, dass die Antwort durch das Gesetz der sinkenden Renditen zusammengefasst werden kann. Dh mehr ist nicht immer besser. JMD vor 14 Jahren 2
Aus meiner langen Geschichte, in der man mit Hardware auf einem niedrigen Niveau herumfummelt, aber eigentlich kein Designer ist, würde ich sagen, dass die Latenz damit zu tun hat, wie viele Arten der Cache assoziativ ist, nicht die Größe. Meine Vermutung ist, dass die zusätzlichen Transistoren, die in den Cache gehen würden, sich an anderer Stelle als wirksamer für die Gesamtleistung erwiesen haben. Brian Knoblauch vor 14 Jahren 3
@JMD Ich würde mich trotzdem für diese Beschreibung interessieren;) Obwohl Kommentare wahrscheinlich nicht der beste Ort dafür sind, stimmt. @Brian Also, wenn ich es richtig verstehe, haben sie beschlossen, weniger Transistoren in den L1-Cache zu setzen und gleichzeitig viel mehr in L2 einzusetzen, was wesentlich langsamer ist? Bitte nicht beleidigen, ich bin nur neugierig :) sYnfo vor 14 Jahren 1
9
AJW

Ein Faktor ist, dass L1-Abfragen vor dem Abschluss der TLB-Übersetzungen beginnen, um die Latenz zu verringern. Mit einem ausreichend kleinen Cache und einem ausreichend hohen Weg 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.

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

Ich glaube, man kann es einfach zusammenfassen, indem man feststellt, 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 reduziert.

Da die Geschwindigkeit des Prozessors schnell ansteigt, muss der Cache mit der gleichen Größe immer schneller ausgeführt werden, um mit ihm Schritt zu halten. Die Caches können also (in Bezug auf die Geschwindigkeit) erheblich besser sein, nicht aber in Bezug auf die Speicherung.

(Ich bin ein Software-Typ, so hoffentlich ist das nicht kläglich falsch)

6
GameDeveloper

Die Cachegröße wird von vielen Faktoren beeinflusst:

  1. Geschwindigkeit elektrischer Signale (sollte, wenn nicht, 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 sind möglicherweise unwürdig)

    • Durch die Verdoppelung der Cachegröße wird die Leistung nicht verdoppelt (selbst wenn die Physik diese Größe zulässt). Bei kleinen Doppeln ergibt sich mehr als die doppelte Leistung. Bei großen Größen ergibt die Verdoppelung der Cachegröße fast keine zusätzliche Leistung.
    • Bei Wikipedia finden Sie ein Diagramm, das beispielsweise 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 Multiprozessorkerne handelt.)
    • Für L1-Caches sollte es einige andere Diagramme (die Anbieter nicht anzeigen) geben, die eine bequeme Größe von 64 KB haben.

Wenn sich die Größe des L1-Caches nach 64 KB nicht geändert hat, liegt dies daran, dass er nicht mehr wert war. Beachten Sie auch, dass es jetzt eine größere "Kultur" für den Cache gibt, und viele Programmierer schreiben "Cache-freundlichen" Code und / oder verwenden Prefetech-Anweisungen, um die Latenzzeit zu reduzieren.

Ich habe einmal versucht, ein einfaches Programm zu erstellen, das auf zufällige Positionen in einem Array (von mehreren MegaBytes) zugreift: Dieses Programm hat den Computer fast eingefroren, weil für jeden zufälligen Lesevorgang eine ganze Seite vom RAM in den Cache verschoben wurde und da dies sehr oft so einfach war Durch das Programm wurde die gesamte Bandbreite ausgelaugt, so dass nur wenige Ressourcen für das Betriebssystem zur Verfügung standen.

3
harrymc

Vom L1-Cache :

Der Cache der Stufe 1 oder der primäre Cache befindet sich in der CPU und wird zum vorübergehenden Speichern von Anweisungen und Daten verwendet, die in Blöcken von 32 Bytes organisiert sind. Primärer Cache ist die schnellste Form des Speichers. Da es mit einer Schnittstelle mit null Wartezustand (Verzögerung) zur Ausführungseinheit des Prozessors in den Chip integriert 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 halten.

Der Anfang 1997 lancierte Intel P55 MMX-Prozessor zeichnete sich durch die Vergrößerung seines Level-1-Caches auf 32 KB aus. Die später in diesem Jahr auf den Markt gebrachten AMD K6- und Cyrix M2-Chips erhöhten die Vorstufe um Level 1-Caches von 64 KB. 64 KB ist die Standardgröße für L1-Cachespeicher geblieben, obwohl verschiedene Multi-Core-Prozessoren dies möglicherweise unterschiedlich nutzen.

Eine typische SRAM-Zelle besteht aus sechs MOSFETs. Jedes Bit in einem SRAM wird in vier Transistoren (M1, M2, M3, M4) gespeichert, die zwei kreuzgekoppelte Inverter bilden. [Quelle] (http://en.wikipedia.org/wiki/Static_random-access_memory) [Zweite Quelle] (http://www.akkadia.org/drepper/cpumemory.pdf) lukecampbell vor 11 Jahren 0
-3
Zack Barkley

Tatsächlich ist die L1-Cache-Größe der größte Engpass für die Geschwindigkeit in modernen Computern. Die pathetisch kleinen L1-Cachegrößen sind zwar der Sweetspot für den Preis, nicht aber die Leistung. Auf L1-Cache kann auf GHz-Frequenzen zugegriffen werden, genau wie Prozessoroperationen, im Gegensatz zum 400-fachen RAM-Zugriff. Es ist teuer und schwierig in der derzeitigen zweidimensionalen Konstruktion zu implementieren, ist jedoch technisch machbar, und das erste Unternehmen, das dies erfolgreich durchführt, wird Computer 100 Mal schneller haben und immer noch cooler sein, was bei vielen großen Neuerungen eine große Rolle spielen würde und sind derzeit nur durch teure und schwer zu programmierende ASIC / FPGA-Konfigurationen zugänglich. Einige dieser Probleme beziehen sich auf proprietäre / IP-Probleme und die Gier der Unternehmen, die seit Jahrzehnten wo ein minderwertiger und ineffektiver Kader von Ingenieuren die einzigen ist, die Zugang zu den inneren Abläufen haben, und die zumeist Marschbefehle erhalten, um kostenwirksamen, verschleierten protektionistischen Unsinn herauszudrücken. Übermäßig privatisierte Forschung führt immer zu einer solchen technologischen Stagnation oder Drosselung (wie wir es in der Luft- und Raumfahrt und im Automobilbereich der großen Hersteller gesehen haben und bald als Pharma gelten werden). Open Source und eine vernünftigere Patent- und Geschäftsgeheimnisregelung, die den Erfindern und der Öffentlichkeit (und nicht den Chefs und Aktionären des Unternehmens) zugute kommt, würde hier sehr helfen. Es sollte ein Kinderspiel für die Entwicklung sein, viel größere L1-Caches zu erstellen, und dies sollte und könnte vor Jahrzehnten entwickelt worden sein. Wenn wir hätten, wären wir bei Computern und vielen wissenschaftlichen Bereichen, die sie einsetzen würden, viel weiter. und die meist Marschbefehle erhalten, um kostenwirksamen, verschleierten protektionistischen Unsinn herauszudrängen. Übermäßig privatisierte Forschung führt immer zu einer solchen technologischen Stagnation oder Drosselung (wie wir es in der Luft- und Raumfahrt und im Automobilbereich der großen Hersteller gesehen haben und bald als Pharma gelten werden). Open Source und eine vernünftigere Patent- und Geschäftsgeheimnisregelung, die den Erfindern und der Öffentlichkeit (und nicht den Chefs und Aktionären des Unternehmens) zugute kommt, würde hier sehr helfen. Es sollte ein Kinderspiel für die Entwicklung sein, viel größere L1-Caches zu erstellen, und dies sollte und könnte vor Jahrzehnten entwickelt worden sein. Wenn wir hätten, wären wir bei Computern und vielen wissenschaftlichen Bereichen, die sie einsetzen würden, viel weiter. und die meist Marschbefehle erhalten, um kostenwirksamen, verschleierten protektionistischen Unsinn herauszudrängen. Übermäßig privatisierte Forschung führt immer zu einer solchen technologischen Stagnation oder Drosselung (wie wir es in der Luft- und Raumfahrt und im Automobilbereich der großen Hersteller gesehen haben und bald als Pharma gelten werden). Open Source und eine vernünftigere Patent- und Geschäftsgeheimnisregelung, die den Erfindern und der Öffentlichkeit (und nicht den Chefs und Aktionären des Unternehmens) zugute kommt, würde hier sehr helfen. Es sollte ein Kinderspiel für die Entwicklung sein, viel größere L1-Caches zu erstellen, und dies sollte und könnte vor Jahrzehnten entwickelt worden sein. Wenn wir hätten, wären wir bei Computern und vielen wissenschaftlichen Bereichen, die sie einsetzen würden, viel weiter. Übermäßig privatisierte Forschung führt immer zu einer solchen technologischen Stagnation oder Drosselung (wie wir es in der Luft- und Raumfahrt und im Automobilbereich der großen Hersteller gesehen haben und bald als Pharma gelten werden). Open Source und eine vernünftigere Patent- und Geschäftsgeheimnisregelung, die den Erfindern und der Öffentlichkeit (und nicht den Chefs und Aktionären des Unternehmens) zugute kommt, würde hier sehr helfen. Es sollte ein Kinderspiel für die Entwicklung sein, viel größere L1-Caches zu erstellen, und dies sollte und könnte vor Jahrzehnten entwickelt worden sein. Wenn wir hätten, wären wir bei Computern und vielen wissenschaftlichen Bereichen, die sie einsetzen würden, viel weiter. Übermäßig privatisierte Forschung führt immer zu einer solchen technologischen Stagnation oder Drosselung (wie wir es in der Luft- und Raumfahrt und im Automobilbereich der großen Hersteller gesehen haben und bald als Pharma gelten werden). Open Source und eine vernünftigere Patent- und Geschäftsgeheimnisregelung, die den Erfindern und der Öffentlichkeit (und nicht den Chefs und Aktionären des Unternehmens) zugute kommt, würde hier sehr helfen. Es sollte ein Kinderspiel für die Entwicklung sein, viel größere L1-Caches zu erstellen, und dies sollte und könnte vor Jahrzehnten entwickelt worden sein. Wenn wir hätten, wären wir bei Computern und vielen wissenschaftlichen Bereichen, die sie einsetzen würden, viel weiter. Es sollte ein Kinderspiel für die Entwicklung sein, viel größere L1-Caches zu erstellen, und dies sollte und könnte vor Jahrzehnten entwickelt worden sein. Wenn wir hätten, wären wir bei Computern und vielen wissenschaftlichen Bereichen, die sie einsetzen würden, viel weiter. Es sollte ein Kinderspiel für die Entwicklung sein, viel größere L1-Caches zu erstellen, und dies sollte und könnte vor Jahrzehnten entwickelt worden sein. Wenn wir hätten, wären wir bei Computern und vielen wissenschaftlichen Bereichen, die sie einsetzen würden, viel weiter.