Wie stellt die CPU eine Datenanforderung über TLBs und Caches?

Ich beobachte die letzten Intel-Mikroarchitekturen (Nehalem / SB / IB und Haswell). Ich versuche herauszufinden, was passiert (auf einer ziemlich vereinfachten Ebene), wenn eine Datenanfrage gestellt wird. Bisher habe ich diese grobe Idee:

Die Ausführungs-Engine fordert Daten an"Memory Control" fragt das L1-DTLB abWenn das oben Gesagte fehlschlägt, wird der L2-TLB jetzt abgefragt

An diesem Punkt können zwei Dinge passieren, ein Fehlschlag oder ein Treffer:

Wenn es ein Treffer ist, versucht die CPU L1D / L2 / L3-Caches, Seitentabellen und dann Hauptspeicher / Festplatte in dieser Reihenfolge?

Wenn es ein Fehler ist, fordert die CPU den (integrierten Speichercontroller?) Auf, die im RAM gespeicherte Seitentabelle zu überprüfen (habe ich die Rolle des IMC dort korrekt erhalten?).

Wenn jemand eine Reihe von Aufzählungspunkten bearbeiten / bereitstellen könnte, die einen grundlegenden "Überblick" über die von der CPU ausgeführten Datenanforderungen, einschließlich der

L1 DTLB (Daten-TLB)L2-TLB (Daten- + Anweisungs-TLB)L1D Cache (Datencache)L2-Cache (Daten- + Anweisungs-Cache)L3-Cache (Daten- + Anweisungs-Cache)Der Teil der CPU, der den Zugriff auf den Hauptspeicher steuertSeitentabelle

es wäre sehr dankbar. Ich habe einige nützliche Bilder gefunden:

http://www.realworldtech.com/wp-content/uploads/2012/10/haswell-41.pnghttp://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Intel_Core2_arch.svg/1052px-Intel_Core2_arch.svg.png

Aber sie haben die Interaktion zwischen den TLBs und den Caches nicht wirklich voneinander getrennt.

UPDATE: Hab das oben so geändert wie ichdenken Ich verstehe jetzt. Der TLB erhält nur die physikalische Adresse von der virtuellen. Wenn es einen Fehler gibt, sind wir in Schwierigkeiten und müssen die Seitentabelle überprüfen. Bei einem Treffer durchlaufen wir einfach die Speicherhierarchie, beginnend mit dem L1D-Cache.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage