Was macht den CPU-Cache so viel schneller als den Hauptspeicher? Ich kann einige Vorteile in einem gestuften Cache-System sehen. Es ist sinnvoll, einen kleineren Cache schneller zu durchsuchen. Aber es muss noch mehr geben.
Was macht den CPU-Cache so viel schneller als den Hauptspeicher? Ich kann einige Vorteile in einem gestuften Cache-System sehen. Es ist sinnvoll, einen kleineren Cache schneller zu durchsuchen. Aber es muss noch mehr geben.
Antworten:
Im Falle eines CPU-Cache ist dieser schneller, da er sich auf dem gleichen Chip wie der Prozessor befindet. Mit anderen Worten, die angeforderten Daten müssen nicht an den Prozessor weitergeleitet werden. es ist schon da
Wenn sich der Cache auf einer Festplatte befindet, ist er schneller, weil er sich im Solid-State-Speicher befindet und nicht noch auf den rotierenden Platten.
Im Falle des Caches auf einer Website ist dies schneller, da die Daten bereits aus der Datenbank abgerufen wurden (die sich in einigen Fällen irgendwo auf der Welt befinden kann).
Es geht also hauptsächlich um die Lokalität . Cache eliminiert den Datentransferschritt .
Lokalität ist eine ausgefallene Art, Daten zu beschreiben, die zeitlich oder räumlich "nah beieinander" sind. Das Zwischenspeichern mit einem kleineren, schnelleren (aber im Allgemeinen teureren) Speicher funktioniert, da in der Regel relativ wenige Gesamtdaten die Daten sind, auf die am häufigsten zugegriffen wird.
Weiterer
Lesecache (Computing) auf Wikipedia
Es ist schneller, weil es näher ist und weil es SRAM ist, nicht DRAM.
SRAM ist und kann erheblich schneller als DRAM sein. Die Werte werden statisch gehalten (das S in S RAM), so dass sie nicht aktualisiert werden müssen, was Zyklen wegnimmt. DRAM ist dynamisch, wie kleine wiederaufladbare Batterien. Sie müssen diese regelmäßig aufladen, damit sie nicht abfließen und zu Nullen werden. Dies stiehlt die Zykluszeit zusätzlich dazu, wie Sie auf die Bits usw. zugreifen müssen.
Befindet sich der Prozessor auf dem gleichen Chip oder näher am Prozessor, verringert sich die Umlaufzeit, und sowohl L1 als auch L2 sind aus Sicht des Zugriffs schneller als DRAM.
Auf SRAM kann schneller zugegriffen werden als auf DRAM, und die Caches befinden sich normalerweise auf dem Chip oder näher oder auf schnelleren Bussen als auf dem DRAM, wodurch die Zugriffszeit ebenfalls schneller wird.
Eine Sache, die ausdrücklich erwähnt werden sollte, ist der Einfluss der Lichtgeschwindigkeit. In diesem Video zeigt Grace Hopper ein etwa einen Meter langes Stück Draht, mit dem sich ein elektrisches Signal in einer Nanosekunde * fortbewegen kann. Wenn eine CPU mit 3 GHz arbeitet, bedeutet dies eine Entfernung von 4 Zoll pro Taktzyklus. Dies ist eine harte physikalische Beschränkung der Speicherzugriffsgeschwindigkeiten. Dies ist ein großer Teil der Gründe, warum es möglich ist, in der Nähe der CPU zu sein (wie es der L1-Cache tut) Gedächtnis, um schneller zu sein.
BEARBEITEN * tatsächlich, wie weit Licht im Vakuum wandern kann, die Entfernung durch Kupfer / Silizium ist geringer.
Andere Antworten deckten bereits alle relevanten Bits ab: Lokalität (und die damit verbundenen Datenübertragungskosten, Busbreite und -uhr usw.); Lichtgeschwindigkeit (wiederum verbunden mit den Übertragungskosten sowie der Busbreite und dem Durchsatz); verschiedene Speichertechnologien (SRAM vs. DRAM). All dies im Lichte des Preis-Leistungs-Verhältnisses .
Ein Punkt, der weggelassen wurde und gerade in Darkhoggs Kommentar erwähnt wurde: Größere Caches haben eine bessere Trefferquote, aber eine längere Latenz. Es wurden mehrere Cache-Ebenen eingeführt, um diesen Kompromiss zu beheben.
Zu diesem Punkt gibt es eine hervorragende Frage und Antwort zur electronics SE
Aus den Antworten scheint mir ein hervorzuhebender Punkt zu sein: Die Logik, die alle erforderlichen Operationen für ein Cache-Lesen ausführt, ist nicht so einfach (insbesondere, wenn der Cache satzassoziativ ist, wie die meisten heutigen Caches). Es erfordert Tore und Logik. Also, auch wenn wir Kosten ausschließen und Platz sparen
Wenn jemand versuchen würde, einen lächerlich großen L1-Cache zu implementieren, würde die Logik, die alle erforderlichen Operationen für ein Cache-Lesen ausführt, ebenfalls groß. Irgendwann wäre die Ausbreitungsverzögerung durch all diese Logik zu lang und die Operationen, die zuvor nur einen einzigen Taktzyklus in Anspruch genommen hatten, müssten in mehrere Taktzyklen aufgeteilt werden. Dies erhöht die Latenz.
In den anderen Antworten werden viele gute Punkte angesprochen, aber ein Faktor scheint zu fehlen: die Latenz bei der Adressdecodierung.
Das Folgende ist eine enorme Vereinfachung der Funktionsweise der Speicheradressdecodierung, gibt jedoch eine gute Vorstellung davon, warum große DRAM-Chips im Allgemeinen recht langsam sind.
Wenn der Prozessor auf den Speicher zugreifen muss, sendet er einen Befehl an den Speicherchip, um das spezifische Wort auszuwählen, das er verwenden möchte. Dieser Befehl wird als Spaltenadressauswahl bezeichnet (Zeilenadressen werden vorerst ignoriert). Der Speicherchip muss nun die angeforderte Spalte aktivieren, indem er die Adresse über eine Kaskade von Logikgattern sendet, um einen einzelnen Schreibvorgang durchzuführen, der mit allen Zellen in der Spalte verbunden ist. Abhängig davon, wie es implementiert ist, gibt es eine gewisse Verzögerung für jedes Adressbit, bis das Ergebnis am anderen Ende ausgegeben wird. Dies wird als CAS-Latenzzeit des Speichers bezeichnet. Da diese Bits nacheinander geprüft werden müssen, dauert dieser Vorgang viel länger als ein Prozessorzyklus (auf den normalerweise nur wenige Transistoren nacheinander warten müssen). Es dauert auch viel länger als ein Buszyklus (der normalerweise ein paar Mal langsamer ist als ein Prozessorzyklus). Ein CAS-Befehl auf einem typischen Speicherchip nimmt wahrscheinlich die Größenordnung von 5 ns an (IIRC - es ist eine Weile her, seit ich mir die Zeitabläufe angesehen habe), was mehr als eine Größenordnung langsamer als ein Prozessorzyklus ist.
Glücklicherweise teilen wir Adressen in drei Teile (Spalte, Zeile und Bank) auf, sodass jeder Teil kleiner sein und diese Teile gleichzeitig verarbeiten kann, da sonst die Latenz noch länger wäre.
Der Prozessor-Cache weist dieses Problem jedoch nicht auf. Es ist nicht nur viel kleiner, so dass die Adressübersetzung einfacher ist, es muss auch nicht mehr als ein kleines Fragment der Adresse übersetzt werden (in einigen Varianten überhaupt keine), da es assoziativ ist. Dies bedeutet, dass sich neben jeder zwischengespeicherten Speicherzeile zusätzliche Speicherzellen befinden, die einen Teil (oder die gesamte) Adresse speichern. Dies macht den Cache natürlich noch teurer, aber es bedeutet, dass alle Zellen abgefragt werden können, um zu sehen, ob sie über die bestimmte Speicherzeile verfügen, die wir gleichzeitig benötigen, und dass dann die einzige (hoffentlich), die die richtigen Daten hat, diesen Speicherauszug erstellt auf einen Bus, der den gesamten Speicher mit dem Hauptprozessorkern verbindet. Dies geschieht in weniger als einem Zyklus, weil es viel einfacher ist.
Eine der Philosophien, die ich studiert habe, war das Erreichen des maximalen Durchsatzes bei minimaler Hardwarebewegung, wenn wir über einen Cache-basierten Speicher sprechen, sei es für diesen Zweck ein CPU-Cache, ein Puffer-Cache oder ein Speicher-Cache. Das Grundmotiv ist erreicht, wenn es die geringste oder keine Hardwarebewegung zum Abrufen / Lesen / Schreiben von Daten gibt und die Operation schneller abgeschlossen ist.
Die Datenübertragung von Festplatte -> Hauptspeicher (RAM) (temporärer Speicher) -> CPU-Cache (kleinerer temporärer Speicher in der Nähe der CPU für häufig aufgerufene Daten) -> CPU (Verarbeitung).
Der CPU-Cache ist ein kleinerer, schnellerer Speicherbereich, in dem Kopien der Daten aus den zuletzt verwendeten Hauptspeicherbereichen gespeichert werden.
Der Puffer-Cache ist ein Hauptspeicherbereich, in dem Kopien der Daten von den zuletzt verwendeten Speicherorten gespeichert werden.
Der Browser-Cache ist ein Verzeichnis oder ein ähnlicher Bereich, in dem Kopien der Daten der zuletzt von Benutzern besuchten Websites gespeichert werden.
Referenz: Funktionsweise des Computerspeichers