Wenn ein Cache -Fehlschlag auftritt - die CPU -Anforderungsanfragen im Cache anfordert, initiiert die Hardware eine Reihe von Schritten, um die Daten aus der nächsten Ebene der Speicherhierarchie abzurufen (normalerweise der Hauptspeicher oder in einigen Fällen noch langsamer Speicher wie eine SSD oder eine Härte). Der Prozess ist komplex, kann aber wie folgt abgebaut werden:
1. Miss Erkennung: Der Cache -Controller erkennt, dass die angeforderten Daten im Cache nicht vorhanden sind. Dies geschieht normalerweise durch einen Vergleich der angeforderten Adresse mit den in den Index- und Tag -Strukturen des Cache gespeicherten Adressen.
2. Forderungsweiterung: Der Cache -Controller sendet eine Anforderung an die nächste Ebene der Speicherhierarchie (Hauptspeicher). Diese Anfrage gibt die Speicheradresse der erforderlichen Daten an.
3. Speicherzugriff: Der Hauptspeicher (oder ein anderer Speicher) empfängt die Anforderung und ruft den angeforderten Datenblock ab. Dies ist der langsamste Teil des Prozesses, da der Zugriff auf Hauptspeicher deutlich langsamer ist als der Zugriff auf den Cache. Die Größe des abgerufenen Datenblocks wird durch die Liniengröße des Cache (oder die Blockgröße) bestimmt. Dieses Abrufen umfasst die Adressübersetzung (konvertieren eine virtuelle Adresse in eine physische Adresse), wenn ein virtueller Speicher verwendet wird.
4. Datenübertragung: Sobald der Datenblock aus dem Hauptspeicher abgerufen wurde, wird er wieder auf den Cache übertragen. Diese Übertragung erfolgt normalerweise in einem dedizierten Bus (z. B. dem Systembus), der für Hochgeschwindigkeitsdatenbewegungen optimiert ist.
5. Cache -Platzierung: Der abgerufene Datenblock wird im Cache platziert. Die Cache-Austauschrichtlinie (z. B. LRU-SELDEN Kürzlich verwendet, FIFO-First-in, First-Out) bestimmt, welcher vorhandene Block im Cache ersetzt wird, wenn der Cache voll ist.
6. CPU -Zugriff: Nachdem die Daten erfolgreich in den Cache geladen wurden, kann die CPU darauf zugreifen. Die CPU wartet während der Schritte 3 und 4, wodurch die CPU die Leistung zum Stillstand bringen und drastisch verringert.
Verschiedene Arten von Fehlern und Handhabung:
Der Umgang mit Cache -Missers kann je nach * Typ * von Miss weiter verfeinert werden:
* obligatorisch (oder kalt) Miss: Dies geschieht, wenn zum ersten Mal auf einen Datenblock zugegriffen wird. Es gibt keine Möglichkeit, diese Fehler zu vermeiden, da die Daten einfach nicht im Cache waren.
* Kapazität Miss: Dies tritt auf, wenn der Cache zu klein ist, um alle Daten zu halten, die die CPU benötigt. Ausgegangene Strategien für das Cache -Management (z. B. größere Caches, verbesserte Ersatzrichtlinien) können Kapazitätsfehlungen mindern.
* Konflikt Miss: Dies tritt auf, wenn mehrere Datenblöcke demselben Cache -Set zugeordnet sind (aufgrund der Art und Weise, wie Adressen in den Cache zugeordnet werden), was zu wiederholten Räumungen führt. Die Verwendung von Techniken wie Set-assoziativ oder vollständig assoziative Caches kann Konfliktfehlungen verringern.
* Kapazität/Konfliktinteraktion: Diese beiden können sich überlappen, was es schwierig macht, sie analysieren zu können.
Hardware -Unterstützung für Miss -Handhabung:
Moderne Hardware verwendet verschiedene Techniken, um die Cache -Miss -Handhabung zu optimieren:
* Vorabsteuchten: Die Hardware lädt Daten proaktiv in den Cache, der voraussichtlich bald benötigt wird, und reduziert zukünftige Missen.
* Caches "Write-Back": Anstatt Daten sofort in einen Schreibvorgang an den Hauptspeicher zurückzuschreiben, speichern Sie modifizierte Daten im Cache und schreiben Sie sie nur dann wieder in den Hauptspeicher, wenn die Cache-Zeile vertrieben wird. Dies reduziert den Speicherverkehr.
* Multi-Level-Caches: Viele Systeme verwenden mehrere Caches (L1, L2, L3 usw.), mit schnelleren, aber kleineren Caches näher an der CPU und langsamer, aber größere Caches weiter entfernt. Diese hierarchische Struktur minimiert den Einfluss von Cache -Missen, indem sie schnellere Caches für häufig zugegriffene Daten verwenden.
* Hardware-verwaltete TLBs (Übersetzungs-Lookaside-Puffer): TLBS-Cache-Seite Tabelle Einträge zur Beschleunigung der virtuellen zu physischen Adressübersetzung und Reduzierung des Overheads, der mit Speicherzugriffszugriffe zugeordnet ist.
Zusammenfassend ist der Handling -Cache -Misses ein komplexer Prozess, der die Hardware -Koordination zwischen CPU, Cache -Controller und Hauptspeicher umfasst. Der effiziente Umgang mit Cache -Misses ist für die Gesamtsystemleistung von entscheidender Bedeutung. Ein Großteil der Verbesserung der CPU -Leistung im Laufe der Jahre wurde von Fortschritten in der Cache -Technologie und der Missbeschwerdenstrategien zurückzuführen.