Heim > häufiges Problem > Was ist Cache?

Was ist Cache?

青灯夜游
Freigeben: 2022-11-25 11:48:13
Original
32076 Leute haben es durchsucht

Cache ist ein Hochgeschwindigkeitsspeicher mit geringer Kapazität zwischen der Zentraleinheit und dem Hauptspeicher. Er besteht im Allgemeinen aus Hochgeschwindigkeits-SRAM und ist auf die CPU ausgerichtet wird eingeführt, um die Verbindung zwischen der CPU und dem Hauptspeicher zu verringern oder zu beseitigen. Die Auswirkungen von Geschwindigkeitsunterschieden zwischen Speichern auf die Systemleistung. Die Cache-Kapazität ist klein, aber schnell, die Speichergeschwindigkeit ist niedrig, aber die Kapazität ist groß. Durch die Optimierung des Planungsalgorithmus wird die Leistung des Systems erheblich verbessert.

Was ist Cache?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Dell G3-Computer.

Was ist Cache?

Cache-Speicher: Cache-Speicher in einem Computer ist ein kleiner, aber schneller Speicher, der sich zwischen der CPU und dem Hauptspeicher DRAM (Dynamic Random Access Memory) befindet und normalerweise aus SRAM (Static) besteht Direktzugriffsspeicher).

Was ist Cache?

Wie in Abbildung 3.28 gezeigt, ist der Cache ein Speicher mit geringer Kapazität zwischen der CPU und dem Hauptspeicher M2, aber die Zugriffsgeschwindigkeit ist schneller als die des Hauptspeichers und die Kapazität ist viel kleiner als die des Hauptspeichers. Der Cache kann der CPU Anweisungen und Daten mit hoher Geschwindigkeit bereitstellen und so die Programmausführung beschleunigen. Aus funktionaler Sicht handelt es sich um einen Pufferspeicher des Hauptspeichers, der aus Hochgeschwindigkeits-SRAM besteht. Im Streben nach hoher Geschwindigkeit sind alle Funktionen, einschließlich der Verwaltung, in Hardware implementiert und daher für Programmierer transparent.

Mit der Weiterentwicklung der Halbleitergeräteintegration können derzeit Caches und CPUs mit geringer Kapazität in denselben Chip integriert werden, und ihre Arbeitsgeschwindigkeit liegt nahe an der Geschwindigkeit der CPU, wodurch ein Cache-System mit zwei oder mehr Ebenen entsteht .

Funktion des Cache

Die Funktion des Cache besteht darin, die Rate der CPU-Dateneingabe und -ausgabe zu erhöhen. Die Cache-Kapazität ist klein, aber schnell, die Speichergeschwindigkeit ist niedrig, aber die Kapazität ist groß. Durch die Optimierung des Planungsalgorithmus wird die Leistung des Systems erheblich verbessert, als ob die Speichersystemkapazität dem Speicher entspricht und die Zugriffsgeschwindigkeit ähnlich ist der Cache.

Die Geschwindigkeit der CPU ist viel höher als die des Speichers. Wenn die CPU direkt auf Daten aus dem Speicher zugreift, muss sie eine gewisse Zeit warten, während der Cache einen Teil der von der CPU gespeicherten Daten speichern kann gerade verwendet oder recycelt, wenn die CPU diesen Teil der Daten erneut verwenden muss. Er kann direkt aus dem Cache aufgerufen werden, wodurch wiederholter Zugriff auf Daten vermieden, die Wartezeit der CPU verkürzt und somit die Effizienz des Systems verbessert wird . Der Cache ist in L1Cache (Level-1-Cache) und L2Cache (Level-2-Cache) unterteilt, der hauptsächlich in die CPU integriert ist, während L2Cache auf dem Motherboard oder der CPU integriert ist.

Grundprinzipien des Caches

Zusätzlich zum SRAM verfügt der Cache auch über eine Steuerlogik. Befindet sich der Cache außerhalb des CPU-Chips, wird seine Steuerlogik im Allgemeinen mit der Hauptspeicher-Steuerlogik kombiniert, die als Hauptspeicher-/Cache-Controller bezeichnet wird. Wenn sich der Cache innerhalb der CPU befindet, stellt die CPU ihre Steuerlogik bereit. C Der Datenaustausch zwischen CPU und Cache basiert auf Worten, während der Datenaustausch zwischen Cache und Hauptspeicher auf Blöcken basiert. Ein Block besteht aus mehreren Wörtern und hat eine feste Länge. Wenn die CPU ein Wort im Speicher liest, sendet sie die Speicheradresse des Worts an den Cache und den Hauptspeicher. Zu diesem Zeitpunkt bestimmt die Cache-Steuerlogik anhand der Adresse, ob sich das Wort derzeit im Cache befindet: Wenn dies der Fall ist, trifft der Cache zu und das Wort wird sofort an die CPU übertragen. Wenn nicht, fehlt der Cache Der Hauptspeicher-Lesezyklus wird verwendet, um das Wort aus dem Hauptspeicher zu lesen. Der Lesevorgang wird an die CPU gesendet. Gleichzeitig wird der gesamte Datenblock, der dieses Wort enthält, aus dem Hauptspeicher gelesen und an den Cache gesendet.

Was ist Cache?Abbildung 3.29 zeigt das schematische Diagramm des Caches. Nehmen Sie an, dass die Cache-Lesezeit 50 ns und die Hauptspeicher-Lesezeit 250 ns beträgt. Das Speichersystem ist modular aufgebaut und jedem 8K-Modul im Hauptspeicher ist ein Cache mit einer Kapazität von 16 Wörtern zugeordnet. Der Cache ist in 4 Zeilen unterteilt, jede Zeile enthält 4 Wörter (W). Die dem Cache zugewiesene Adresse wird in einem assoziativen Speicher CAM gespeichert, bei dem es sich um einen inhaltsadressierbaren Speicher handelt. Wenn die CPU einen Speicherzugriffsbefehl ausführt, sendet sie die Adresse des Wortes, auf das zugegriffen werden soll, an das CAM; wenn W nicht im Cache ist, wird W vom Hauptspeicher an die CPU übertragen. Gleichzeitig wird eine Datenzeile, die aus vier aufeinanderfolgenden Wörtern mit W besteht, an den Cache gesendet und ersetzt die ursprüngliche Datenzeile im Cache. Hier wird der Ersetzungsalgorithmus durch Hardware-Logikschaltungen implementiert, die stets die Cache-Nutzung verwalten.

Cache-TrefferrateAus CPU-Sicht besteht der Zweck des Hinzufügens von Cache darin, die durchschnittliche Lesezeit des Hauptspeichers im Hinblick auf die Leistung so nah wie möglich an die Cache-Lesezeit heranzuführen. Um dieses Ziel zu erreichen, sollte der Anteil aller Speicherzugriffe, der vom Cache zur Deckung der CPU-Anforderungen erfüllt wird, einen hohen Anteil ausmachen, d. h. die Cache-Trefferquote sollte nahe bei 1 liegen. Das Erreichen dieses Ziels ist aufgrund der Lokalität des Programmzugriffs möglich.

Während der Ausführung eines Programms sei Nc die Gesamtzahl der vom Cache abgeschlossenen Zugriffe, Nₘ die Gesamtzahl der vom Hauptspeicher abgeschlossenen Zugriffe und h als Trefferquote definiert, dann ist h=Nc/( Nc+Nₘ)

Wenn tc die Cache-Zugriffszeit darstellt, wenn ein Treffer auftritt, tₘ die Hauptspeicherzugriffszeit darstellt, wenn ein Fehler auftritt, 1-h die Fehlerrate (fehlende Rate) darstellt, dann die durchschnittliche Zugriffszeit tₐ des Caches/ Hauptspeichersystem ist

tₐ=htc+(1−h)tₘ
Nach dem Login kopieren

Das Ziel, das wir verfolgen, ist es, die durchschnittliche Zugriffszeit tₐ des Cache-/Hauptspeichersystems bei geringem Hardwareaufwand möglichst nahe an tc zu bringen. Angenommen, r=tₘ/tc stellt das Verhältnis der Zugriffszeit zwischen Hauptspeicher und Cache dar und e stellt die Zugriffseffizienz dar, dann

e=tc/ta=tc/(htc+(1−h)tm)=1/(h+(1−h)r)=1/(r+(1−r)h)
Nach dem Login kopieren

Aus dieser Formel ist ersichtlich, dass zur Verbesserung der Zugriffseffizienz die Trefferquote h umso näher liegt auf 1, desto besser. Der geeignete r-Wert liegt zwischen 5 und 10 und sollte nicht zu groß sein.

Die Trefferquote h hängt vom Verhalten des Programms, der Cache-Kapazität, der Organisationsmethode und der Blockgröße ab.

Probleme, die beim Design der Cache-Struktur gelöst werden müssen

Aus dem Grundprinzip des Caches geht hervor, dass das Cache-Design zwei Prinzipien folgen muss: Erstens hoffen wir, dass die Cache-Trefferquote so hoch ist wie möglich, was eigentlich nahe bei 1 liegen sollte; Die zweite besteht darin, zu hoffen, dass der Cache für die CPU transparent ist, dh unabhängig davon, ob ein Cache vorhanden ist oder nicht, greift die CPU auf die gleiche Weise auf den Speicher zu und die Software kann darauf zugreifen den Cache, ohne irgendwelche Anweisungen hinzuzufügen. Die Probleme mit der Trefferquote und der Transparenz sind gelöst. Aus Sicht des CPU-Speicherzugriffs wird der Speicher die Kapazität des Hauptspeichers und eine Geschwindigkeit haben, die nahe am Cache liegt. Zu diesem Zweck muss eine bestimmte Hardwareschaltung hinzugefügt werden, um die Steuerfunktion zu vervollständigen, nämlich den Cache-Controller.

Beim Entwerfen der Cache-Struktur müssen mehrere Probleme gelöst werden: ① Wie werden die Inhalte des Hauptspeichers gespeichert, wenn sie in den Cache übertragen werden? ② Wie werden die Informationen im Cache gefunden, wenn auf den Speicher zugegriffen wird? Die im Cache vorhandenen Informationen, wenn der Cache-Speicherplatz nicht ausreicht. ④ Wie kann der Cache-Inhalt neu geschrieben werden?

Unter diesen hängen die ersten beiden Fragen zusammen, d Hauptspeicherinformationen im Cache und wie man die Hauptspeicheradresse in eine Cache-Adresse umwandelt. Im Vergleich zur Hauptspeicherkapazität ist die Cache-Kapazität sehr gering. Der gespeicherte Inhalt ist nur eine Teilmenge des Hauptspeicherinhalts, und der Datenaustausch zwischen Cache und Hauptspeicher erfolgt in Blockeinheiten. Um den Hauptspeicherblock in den Cache zu legen, muss eine Methode verwendet werden, um die Hauptspeicheradresse im Cache zu lokalisieren, was als Adresszuordnung bezeichnet wird. Die physikalische Bedeutung des Wortes „Mapping“ besteht darin, die entsprechende Beziehung zwischen Standorten zu ermitteln und diese mit Hardware umzusetzen. Auf diese Weise wird beim Zugriff der CPU auf den Speicher die Speicheradresse eines von ihr angegebenen Wortes automatisch in eine Cache-Adresse umgewandelt, dh eine Cache-Adresskonvertierung.

Das Cache-Ersetzungsproblem besteht hauptsächlich darin, den Ersetzungsalgorithmus auszuwählen und auszuführen, um den Inhalt im Cache zu ersetzen, wenn der Cache fehlt. Die letzte Frage betrifft die Schreiboperationsstrategie des Caches, die sich auf die Aufrechterhaltung der Konsistenz zwischen Hauptspeicher und Cache während Aktualisierungen konzentriert.

Weitere Informationen zu diesem Thema finden Sie in der Spalte „FAQ“!

Das obige ist der detaillierte Inhalt vonWas ist Cache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage