2012-05-04 10 views
19

Könnte jemand bitte den Unterschied zwischen einer TLB (Translation Lookaside Buffer) Miss und einer Cache-Miss erklären?TLB vermisst vs Cache-Misses?

Ich glaube, ich fand heraus, TLB bezieht sich auf eine Art virtuellen Speicheradresse, aber ich war nicht allzu klar, was das eigentlich bedeutet?

Ich verstehe Cache-Fehler, wenn ein Speicherblock (die Größe einer Cache-Zeile) in den Cache (L3?) Geladen wird und wenn eine erforderliche Adresse nicht innerhalb der aktuellen Cache-Zeilen gehalten wird - dies ist ein Cache-Miss .

+1

Verstehen Sie Paging http://StackOverflow.com/A/18431262/895245, und sehen Sie den TLB-Abschnitt. –

Antwort

26

Nun, alle heutigen modernen Betriebssysteme verwenden etwas namens virtuellen Speicher. Jede von der CPU erzeugte Adresse ist virtuell. Es gibt Seitentabellen, die solche virtuellen Adressen physikalisch adressieren. Und ein TLB ist nur ein Cache von Seitentabelleneinträgen.

Auf der anderen Seite zwischenspeichert L1, L2, L3 den Inhalt des Cache-Hauptspeichers.

Ein TLB-Fehler tritt auf, wenn das Mapping von virtual memory address => physical memory address für eine von der CPU angeforderte virtuelle Adresse nicht in TLB ist. Dann muss dieser Eintrag aus der Seitentabelle in den TLB geholt werden.

Ein Cache-Fehlschlag auftritt, wenn die CPU etwas erfordert, die nicht im Cache gespeichert ist. Die Daten werden dann im Primärspeicher (RAM) gesucht. Wenn es nicht vorhanden ist, müssen die Daten vom Sekundärspeicher (Festplatte) abgeholt werden.

+0

Was ist der Zweck der virtuellen Speicheradresse und worauf bezieht sich eigentlich immer noch der Hauptspeicher (RAM)? – mezamorphic

+5

Nun, früher 32-Bit-CPUs verwendet, um 32-Bit-Adressen ~ 4 GB adressierbaren Speicher zu generieren. Aber RAM-Betrag war oft weniger als 4 GB. Wenn Sie nun über 1 GB RAM verfügen, können Sie kein Programm ausführen, das mehr als 1 GB adressierbaren Speicher benötigt. Also warum nicht das Programm zu glauben, Sie haben 4 GB RAM? Wo nur ein Bruchteil der Programmdaten im RAM und der Rest in der Festplatte liegt. Das macht der virtuelle Speicher. Sie können alles darüber in diesem [Wikipedia Artikel] (http://en.wikipedia.org/wiki/Virtual_memory) lesen. Aktuelle 64-Bit-CPUs verwenden auch virtuellen Speicher. Nur die Länge der virtuellen Adresse beträgt jetzt 48 Bit. – Hindol

2

Die folgende Sequenz nach dem ersten Befehlsadresse (das heißt virtuelle Adresse) im PC-Laden macht Konzept des TLB und Cache-Miss sehr klar.

Der erste Befehl • den ersten Befehl Zugriff auf

  • den Start PC
  • Zugang iTLBwith VPN von PC extrahiert Nehmen:
  • berechnen PTE Adresse
  • iTLBmiss
  • Invoke iTLBmiss Handler
  • Wenn PTEs in L1-Daten und L2-Caches zwischengespeichert werden, suchen Sie sie mit PTE-Adresse: Sie werden dort auch
  • verpassen
  • Zugriffsseitentabelle im Hauptspeicher: PTE ist ungültig: Seitenfehler
  • Invoke Seitenfehlerbehandler
  • Seitenrahmen zuweisen, Seite von der Festplatte lesen, aktualisieren PTE, Last PTE in ITLB, starten holen • Jetzt haben Sie die physikalische Adresse

  • Zugang Icache:

  • Senden Wiederauffüllanfrage auf höhere Ebenen vermissen: Sie vermissen überall
  • Anfrage senden an die Speichersteuerung (Nordbrücke)
  • Zugriffshauptspeicher
  • Read Cache-Zeile
  • Refill alle Cache-Ebene als die Cache-Zeile zurück in den Prozessor
  • die entsprechende Anweisung aus der Cache-Zeile mit der Block-Extrakt versetzt • Dies ist die längste mögliche Latenzzeit ist in ein Befehl/Daten-Zugriffs

Quelle https://software.intel.com/en-us/articles/recap-virtual-memory-and-cache

0

Als HOW beider Verfahren sind erwähnt. Auf der Note der Leistung stört ein Cache-Miss nicht unbedingt die CPU. Eine kleine Anzahl von Cache-Misses kann unter Verwendung von algorithmischen Vorabholtechniken toleriert werden. Ein TLB-Fehler führt jedoch dazu, dass die CPU zum Stillstand kommt, bis der TLB mit der neuen Adresse aktualisiert wurde. Mit anderen Worten, Prefetching kann einen Cache-Fehltreffer, aber keinen TLB-Fehltreffer maskieren.

+0

Dies ist nicht streng zutreffend. Bei der Out-of-Order-Ausführung und dem Gehen der Hardwareseitentabelle (x86, ARM, einige MIPS Release 5 usw.) kann ein TLB-Fehler den Prozessor nicht sofort zum Stillstand bringen. Darüber hinaus haben wissenschaftliche Arbeiten einen Hardware Prefetch für TLBs vorgeschlagen. Es wäre auch möglich, dass ein Prozessor TLB-Einträge mit einem gewöhnlichen Speicher-Vorabrufbefehl vorfabriziert. –