Wenn wir uns die Spezifikationen eines Prozessors ansehen, fällt unter anderem der Cache-Speicher auf, der sich nicht nur auf allen CPUs, sondern auch auf allen GPUs befindet. In diesem Artikel erklären wir, was der Cache-Speicher in einer einfachen und zugänglichen Sprache ist, damit Sie wissen, wofür dieser Speichertyp auf Ihrem PC vorgesehen ist.
Der Cache-Speicher wurde zuerst in der implementiert Intel 80486, aber seine Ursprünge gehen auf IBM S / 360 zurück, wo die Idee des Cache-Speichers zum ersten Mal implementiert wurde. Heute wegen der Lücke zwischen dem CPU, GPU und andere Prozessoren mit Speicher ist zu einem unverzichtbaren Bestandteil jedes Prozessors geworden.
Warum ist der Cache notwendig?
Cache-Speicher ist aufgrund der Tatsache erforderlich, dass RAM Der Speicher ist zu langsam, als dass eine CPU ihre Anweisungen mit ausreichender Geschwindigkeit ausführen könnte, und wir können ihn nicht mehr beschleunigen. Die Lösung? Fügen Sie dem Prozessor einen internen Speicher hinzu, mit dem Sie die neuesten Daten und Anweisungen vergrößern können.
Das Problem ist, dass dies äußerst komplex ist, da es die Programme selbst dazu zwingt und somit CPU-Zyklen verbraucht. Die Lösung? Erstellen Sie einen Speicher mit einem Mechanismus, der die Daten und Anweisungen kopiert, die der aktuell ausgeführten Daten am nächsten kommen.
Da sich der Cache im Prozessor befindet, führt die CPU die darin enthaltenen Daten viel schneller aus, als wenn sie natürlichen Zugriff auf den RAM hätte.
Wie funktioniert der Cache?
Zuallererst müssen wir bedenken, dass der Cache weder Teil des RAM-Speichers ist noch als solcher funktioniert. Außerdem kann er nicht wie RAM gesteuert werden, wo Programme Speicher belegen und freigeben können, wie es ihnen gefällt, wenn sie ihn benötigen . Der Grund? Der Cache funktioniert völlig unabhängig vom RAM.
Die Aufgabe des Caches besteht darin, die Daten aus dem Speicher in den Prozessor zu verschieben. Das Übliche in einem Programm ist, dass der Code nacheinander ausgeführt wird, dh wenn sich der aktuelle Befehl in Zeile 1000 befindet, befindet sich der nächste in 1001, es sei denn, es handelt sich um einen Sprungbefehl. Die Idee von Caches? Übertragen Sie einen Teil der Daten und Anweisungen in einen internen Speicher des Prozessors.
Wenn die CPU oder GPU nach Daten oder Anweisungen sucht, überprüft sie zunächst den Cache, der dem Prozessor am nächsten liegt, und daher den Cache mit der niedrigsten Stufe, die erhöht werden muss, bis die erwarteten Daten erreicht sind. Die Idee ist, dass Sie nicht auf den Speicher zugreifen müssen.
Cache-Level auf CPU und GPU
In einem Multicore-System mit zwei oder mehr Kernen stellen wir fest, dass alle auf denselben RAM-Speicher zugreifen. Es gibt eine einzige Schnittstelle für den Speicher und mehrere Prozessoren, die um den Zugriff darauf kämpfen. An diesem Punkt muss eine zusätzliche Cache-Ebene erstellt werden, die mit dem Speichercontroller und dies mit den höheren Cache-Ebenen kommuniziert.
Normalerweise haben Multicore-CPUs normalerweise zwei Cache-Ebenen. In einigen Designs handelt es sich jedoch um Cluster, die auf Gruppen mehrerer CPUs mit einem gemeinsam genutzten L2-Cache basieren, den Speicherplatz jedoch mit anderen Clustern teilen, was manchmal die Einbeziehung von Caches erzwingt ein Cache der dritten Ebene.
Obwohl dies nicht üblich ist, werden Level-3-Caches angezeigt, sobald die Speicherschnittstelle einen ausreichend großen Engpass aufweist, sodass das Hinzufügen einer zusätzlichen Ebene in der Hierarchie die Leistung verbessert.
Die Speicherhierarchie
Die Regeln der Speicherhierarchie sind sehr klar, sie beginnen in den Prozessorregistern und enden im langsamsten Speicher derselben und folgen immer denselben Regeln:
- Die aktuelle Hierarchieebene hat mehr Kapazität als die vorherige, aber weniger als die nächste.
- Wenn wir uns von der CPU entfernen, erhöht sich die Latenz der Anweisungen.
- Wenn wir uns von der CPU entfernen, nimmt die Bandbreite mit den Daten ab.
Im speziellen Fall von Cache-Ebenen speichern sie immer kleinere Informationen, enthalten jedoch immer ein Fragment der nächsten Ebene. Der L1-Cache ist also eine Teilmenge der L2-Cache-Daten, die wiederum eine Obermenge der L1-Cache-Daten und gegebenenfalls eine Teilmenge der L3-Cache-Daten ist.
Der Cache der letzten Ebene, der dem Speicher am nächsten liegt, ist jedoch keine Teilmenge des RAM, sondern nur eine Kopie der Speicherseite oder einer Menge davon, die dem Prozessor am nächsten liegt.
Cache Miss oder wenn keine Daten gefunden werden
Eines der größten Leistungsprobleme besteht darin, dass ein Miss-Cache auftritt, der auftritt, wenn Daten auf Cache-Ebene nicht gefunden werden. Dies ist äußerst gefährlich für die Leistung einer außer Betrieb befindlichen CPU, da die Folge viele verlorene Prozessorzyklen sind, für eine außer Betrieb befindliche CPU jedoch nicht weniger gefährlich.
Beim Entwurf einer CPU ist die Tatsache, dass die Gesamtsumme der Suchzeit aller Cache-Fehler in Kombination mit der Suchzeit größer ist als die Suche nach Daten direkt im Cache, ein Fehler. Viele CPU-Designs mussten auf die Designtabelle zurückgreifen, da die Suchzeit länger ist als der Zugriff auf den RAM.
Aus diesem Grund zögern Architekten sehr, einer Architektur zusätzliche Ebenen hinzuzufügen, da dies angesichts einer verbesserten Leistung gerechtfertigt sein muss.
Kohärenz mit der Erinnerung
Da der Cache Kopien von Daten aus dem RAM enthält, es sich jedoch nicht um den RAM selbst handelt, besteht die Gefahr, dass die Daten nicht nur zwischen dem Cache und dem RAM, sondern auch zwischen den verschiedenen Cache-Ebenen, in denen einige getrennt sind, nicht übereinstimmen .
Deshalb sind Mechanismen erforderlich, die für die Aufrechterhaltung der Kohärenz der Daten auf allen Ebenen untereinander verantwortlich sind. Dies setzt die Implementierung eines äußerst komplexen Systems voraus, das mit der Anzahl der Prozessorkerne zunimmt.