4

Mehrere der Ressourcen, die ich im Internet besucht habe, sind nicht einverstanden, wie gesetzt associative caching funktioniert.Informationen über N-Wege-Set assoziative Cache-Stati

Zum Beispiel Hardware Geheimnisse scheinen es funktioniert wie folgt zu glauben:

Dann wird der Haupt-RAM-Speicher in die gleiche Anzahl von Blöcken in der Cache-Speicher unterteilt ist. Unter Beibehaltung der 512 KB 4-Wege-Set assoziative Beispiel würde die Haupt-RAM in 2.048 Blöcke unterteilt werden, die gleiche Anzahl von Blöcken im Speicher-Cache verfügbar. Jeder Speicherblock ist mit einem Satz von Zeilen im Cache verknüpft, genau wie im direkt zugeordneten Cache.

http://www.hardwaresecrets.com/printpage/481/8

Sie scheinen zu sagen, daß jeder Cache-Block (4-Cache-Zeilen) abbildet, um einen bestimmten Block von zusammenhängenden RAM. Sie sagen, nicht zusammenhängende Blöcke von Systemspeicher (RAM) kann nicht auf den gleichen Cache-Block zuordnen.

Das ist es Bild davon, wie hardwaresecrets denkt, dass es http://www.hardwaresecrets.com/fullimage.php?image=7864

Kontrast, der mit wikipedia Bild von Set-Assoziativ-Cache http://upload.wikimedia.org/wikipedia/commons/9/93/Cache%2Cassociative-fill-both.png funktioniert.

Brown nicht einverstanden ist mit Hardware-Geheimnisse

Überlegen Sie, was, wenn jeder Cache-Zeile hatte zwei Sätze von Feldern passieren könnte: zwei gültige Bits, zwei dirty bits, zwei Tag Felder und zwei Datenfelder. Ein Satz von Feldern konnte Daten für einen Bereich des Hauptspeichers und den anderen für einen anderen Bereich, der zufällig auf die gleiche Cache-Zeile zuordnen.

http://www.spsu.edu/cs/faculty/bbrown/web_lectures/cache/

Das heißt, nicht zusammenhängende Blöcke des Systemspeichers kann Karte auf den gleichen Cache-Block.

Wie werden die Beziehungen zwischen nicht zusammenhängenden Blöcken im Systemspeicher und Cache-Blöcken erstellt? Ich habe irgendwo gelesen, dass diese Beziehungen auf Cache-Schritten basieren, aber ich kann keine Informationen über Cache-Schritte finden, außer dass sie existieren.

Wer hat Recht? Wenn Schreiten tatsächlich verwendet wird, wie funktioniert Schreiten und habe ich den richtigen technischen Namen? Wie finde ich den Schritt für ein bestimmtes System? basiert es auf dem Paging-System? Kann mir jemand auf eine URL verweisen, die detailliert den N-Way-Set-assoziativen Cache erklärt?

siehe auch: http://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Memory/set.html

Antwort

6

Wenn ich Cache-Speicherarchitektur meiner Studenten beibringen, ich mit einem direkt abgebildeten Cache starten. Sobald das verstanden ist, können Sie sich N-Wege-assoziative Caches als parallele Blöcke von direkt zugeordnetem Cache vorstellen.Um zu verstehen, dass beide Zahlen korrekt sind, müssen Sie zunächst den Zweck von Set-Assoc-Caches verstehen.

Sie wurden entwickelt, um das Problem des "Aliasing" in einem direkt zugeordneten Cache zu umgehen, bei dem mehrere Speicherorte einem bestimmten Cache-Eintrag zugeordnet werden können. Dies wird in der Wikipedia-Abbildung veranschaulicht. Statt also einen Cache-Eintrag zu löschen, können wir einen N-Wege-Cache verwenden, um die anderen Alias-Speicherstellen zu speichern.

Tatsächlich wäre das Hardware-Secrets-Diagramm korrekt, wenn man annimmt, dass die Reihenfolge des Ersetzens so ist, dass der erste Chunk des Hauptspeichers Way-1 und dann der zweite Chunk Way-2 usw. zugeordnet wird. Es ist jedoch ebenso möglich, den ersten Teil des Hauptspeichers über mehrere Wege zu verteilen.

Ich hoffe, diese Erklärung hilft!

PS: Zusammenhängende Speicherorte werden nur für eine einzelne Cache-Zeile benötigt, wobei die räumliche Lokalität ausgenutzt wird. Was den letzten Teil Ihrer Frage anbelangt, glaube ich, dass Sie einige verschiedene Konzepte verwirren können.

+0

Wie es die Stücke des Systemspeichers nicht entscheiden, Karte, zu welchen Cache-Blöcken? Wenn ich ein Programm schreibe, wie ermittle ich die Systemspeicherbreite, die mit dem Cache übereinstimmt? –

+0

Der Cache-Speicher entscheidet anhand eines Ersatzalgorithmus. Es verwendet normalerweise eine Form von Pseudo-LRU. Dies wird von der Hardware gehandhabt und es liegt außerhalb Ihrer Kontrolle. Sie können die Cache-Speicherparameter normalerweise aus dem Hardware-Datenblatt oder dem Benutzerhandbuch ermitteln. Es ist selten ein Softwareproblem, es sei denn, Sie verwenden eingebetteten Code, der mit einem sehr engen Zeitbudget ausgeführt werden muss. – sybreon

+0

Es geht mir nicht darum, welche Blöcke des Systemspeichers ausgelöscht werden, sondern welche Blöcke des Systemspeichers auf welche Cacheblöcke abgebildet werden. Das heißt, was ist die Mathematik, die ein x86-Chip verwendet, um zu entscheiden, dass die Systemspeicherplätze 1000, 2000 und 3000 dem Cache-Block 5 zugeordnet werden sollten. Ich schreibe Software, deren Zweck es ist, den Cache zu manipulieren, und damit ist er rein betroffen Cache-Zuordnung Ich habe ein Programm geschrieben, um dieses Mapping durch Experimente zu bestimmen, aber ich möchte einen Artikel oder ein Papier, um meine Ergebnisse zu überprüfen. –

0

Die Ersetzungsrichtlinie entscheidet, wo im Cache eine Kopie eines bestimmten Eintrags des Hauptspeichers abgelegt wird. Wenn die Ersetzungsrichtlinie frei ist, um einen Eintrag im Cache für die Kopie auszuwählen, wird der Cache als vollständig assoziativ bezeichnet. Wenn im anderen Extremfall jeder Eintrag im Hauptspeicher an nur einer Stelle im Cache abgelegt werden kann, wird der Cache direkt zugeordnet. Viele Caches einen Kompromiss implementieren, in dem jeder Eintrag in Haupt Speicher zu einem der N Orten im Cache gehen, und sind als n-Wege assoziativen beschrieben