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?
cpu
architecture
cpu-cache
progress
eleven81
quelle
quelle
Antworten:
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. :)
quelle
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.
quelle
Die Cache-Größe wird von vielen Faktoren beeinflusst:
Geschwindigkeit der elektrischen Signale (sollte, wenn nicht die Lichtgeschwindigkeit sein, etwas in der gleichen Größenordnung):
Wirtschaftliche Kosten (Schaltungen auf verschiedenen Cache-Ebenen können unterschiedlich sein und bestimmte Cache-Größen können unwert sein)
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.
quelle
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.)
quelle
Aus dem L1-Cache :
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.
quelle
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.
quelle