Verständnisfrage TLB

Benutzeravatar
Dennis
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 102
Registriert: 29. Sep 2008 21:15

Verständnisfrage TLB

Beitrag von Dennis »

Hallo Leute,

wir sitzen gerade an der Übung 7 - 1.2 und keiner von uns konnte unsere Frage zufriedenstellend beantworten.

Wo ist der Vorteil des TLB? Wir wissen, dass es sehr viel schneller ist (steht ja überall),
aber in einer Page Table sind doch auch nur "Verknüpfungen" von Virtueller zu Realer Adresse vorhanden.

Ich könnte es mir erklären, dass der TLB einen Cache eingebaut hat und die Inhalte der referenzierten Adressen vorhält während die Pagetable nur Referenzen auf die zu holende Adresse enthält.
Wäre das so korrekt? Meine Kollegen sagen hier jedoch, dass im TLB nichts gespeichert wird - so und da stehen wir nun und sehen den Unterschied zwischen TLB und Pagetable nicht mehr. Hat jemand vielleicht eine kurze Erklärung für die TLB Geschichte?
...fragt stellvertretend für alle Freunde...

Benutzeravatar
Michl
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 293
Registriert: 12. Apr 2009 08:53
Wohnort: Darmstadt

Re: Verständnisfrage TLB

Beitrag von Michl »

der TLB liegt im Cache, die page table im Hauptspeicher. Deswegen sind Abfragen aus der TLB schneller als aus der page table.

robert.n
Nerd
Nerd
Beiträge: 673
Registriert: 29. Sep 2008 19:17

Re: Verständnisfrage TLB

Beitrag von robert.n »

Der TLB ist ein Hardware-Cache auf der CPU (irrsinnig schnell!) für eine kleine Anzahl von Seitentabellen-Einträgen.

Du musst dir folgendes vor Augen führen:
- Jede Instruktion wird aus dem Hauptspeicher abgerufen.
- Viele Instruktionen erfordern einen oder mehrere weitere Zugriffe auf den Hauptspeicher.

Bei jedem Zugriff muss das Mapping von einer virtuellen Seitennummern auf eine physikalische Seitennummer durchgeführt werden.

Wenn jetzt die Seitentabellen ihrerseits im Hauptspeicher liegen und die Mappings auch nur von dort gelesen werden, dann liegt es auf der Hand, dass so ein TLB einen ziemlich großen Vorteil darstellt. (Und offenbar wurde genau dieser Ansatz in den Folien beschrieben.)

(Ein anderer Ansatz ist eine MMU (Memory Management Unit; Hardware-Einheit, die eine Seitentabelle speichert) zwischen CPU und Memory-Bus zu schalten, wie das bei vielen modernen CPUs der Fall ist: dann werden die Mappings nämlich nicht mehr direkt vom Speicher gelesen, sondern können schon vorher durchgeführt werden (sogar noch bevor der Zugriffsbefehl über den Bus gesendet wird). Das Betriebssystem muss sich dann hauptsächlich darum kümmern bei jedem Prozessstart/wechsel die jeweilige Prozess-Seitentabelle in die MMU zu laden und natürlich alle Seitenfehler zu behandeln. Aber auch bei diesem Ansatz bringt der TLB offenbar nochmal eine ordentliche Leistungssteigerung.)

Sehr gut beschrieben in Modern Operation Systems von Tanenbaum, Abschnitt 3.3.

Benutzeravatar
Patr0rc
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 260
Registriert: 8. Feb 2008 11:43

Re: Verständnisfrage TLB

Beitrag von Patr0rc »

Der TLB liegt nicht nur im Cache, er IST ein Cache:
http://en.wikipedia.org/wiki/Translatio ... ide_buffer (siehe erster und zweiter Satz)

Benutzeravatar
m_stoica
Kernelcompilierer
Kernelcompilierer
Beiträge: 473
Registriert: 5. Dez 2008 20:19
Wohnort: Zuhause

Re: Verständnisfrage TLB

Beitrag von m_stoica »

In der Musterlösung zur Aufg 1.2 a) heißt es:
"Wir haben 2^28 Byte Hauptspeicher und 2^30 Byte virtueller Adressraum. Mit einer
Seitengröße von 64 KByte benötigen wir 30 - 16 = 14 Bit für die virtuelle Seitennummer
sowie 28 - 16 = 12 Bit für die physikalische Seitennummer. Insgesamt
werden also 104 = 4 * (14 + 12) Bit für den TLB benötigt."

Hier geht man also davon aus, dass jede TLB Zeile die virtuelle Seitenummer und die physikalische SeitenNUMMER beinhaltet.
In der Vorlesungsfolie heißt es aber: "Jedes Daten-Feld enthält eine physikalische SeitenADRESSE", das wären hier ja 30 Bit und nicht 12.

Was stimmt denn nun?

Grüße,
Michael

robert.n
Nerd
Nerd
Beiträge: 673
Registriert: 29. Sep 2008 19:17

Re: Verständnisfrage TLB

Beitrag von robert.n »

Natürlich wird nur die Seitennummer abgespeichert.

Bereits deshalb, weil der TLB ein Cache für Seitentabelleneinträge ist. Und wenn in denen schon nur die Seitennummern stehen, woher sollen dann die Addressen plötzlich kommen?

Benutzeravatar
Patr0rc
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 260
Registriert: 8. Feb 2008 11:43

Re: Verständnisfrage TLB

Beitrag von Patr0rc »

Ich behaupte, dass die Seitennummer drinsteht und nicht die komplette Adresse. Passt auch zu manchen Bildern, auf denen aus dem TLB die Seitennummer extrahiert und mit dem Offset der virtuellen Adresse zur physikalischen Seitenadresse wird.

Benutzeravatar
Dennis
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 102
Registriert: 29. Sep 2008 21:15

Re: Verständnisfrage TLB

Beitrag von Dennis »

Vielen Dank Leute!
...fragt stellvertretend für alle Freunde...

Antworten

Zurück zu „Archiv“