Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für...

35
M. Esponda-Argüero Zwei Möglichkeiten die TLB zu aktualisieren 49 Die MMU kümmert sich um alles (Hardware-Lösung) sucht die p-Entry wenn diese nicht da ist, behandelt direkt das TLB-miss zum Schluss wird die neue p-Entry (virt.phys. mapping) in der in das TLB eingetragen. Die TLB wird direkt vom Betriebssystem verwaltet (Software-Lösung) ein TLB-miss verursacht ein Trap und wird vom Betriebssystem behandelt. Das Betriebssystem sucht und ladet die neue p-Entry ins TLB.

Transcript of Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für...

Page 1: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Zwei Möglichkeiten die TLB zu aktualisieren

49

Die MMU kümmert sich um alles (Hardware-Lösung)

• sucht die p-Entry

• wenn diese nicht da ist, behandelt direkt das TLB-miss

• zum Schluss wird die neue p-Entry (virt.→phys. mapping) in der in das TLB eingetragen.

Die TLB wird direkt vom Betriebssystem verwaltet (Software-Lösung)

• ein TLB-miss verursacht ein Trap und wird vom Betriebssystem behandelt.

• Das Betriebssystem sucht und ladet die neue p-Entry ins TLB.

Page 2: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Was passiert, wenn ein Prozess gestartet wird?

50

Prozess (p) = n Seiten

if at least n frames in VM available

allocate n frames for p

load one page of p in main memory

put the entry on the page table of p

. . .

else ???????

Es gibt meistens eine Seitentabelle pro Prozess

Page 3: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

Speicherschutz valid-invalid bit

Mit Hilfe eines Bits pro Frame wird Speicherschutz gewährleistet.

valid = gültiger Speicherzugriff, weil die Adresse im Prozess-Adressraum ist.

invalid = die Adresse ist nicht im Prozess-Adressraum.

Seite 0

Seite 0

Seite 1

Seite 2

Seite 3

Seite 4

Seitentabelle

Seitengröße = 2048Frame-

NummerValid-invalid-

Bit

0

1

2

3

4

5

6

7

.

.

.

0

1

2

3

4

5

6

.

.

.

Seite 000000

10232

Seite 1

Seite 2

Seite 3

Seite 4

M. Esponda-Argüero

1 v

2 v

3 v

5 v

6 v

0 i

0 i

0 i

address-space identifiers (ASIDs)

Page 4: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Verwendung gemeinsamer Seiten (pages)

52

- Besonders gut geeignet für Timesharing-Systeme

- Seiten von gemeinsamen Programmen wie z.B.- Windows-System

- Datenbank-Systeme,

- IPC

- Texteditoren

- Übersetzer, usw.

- müssen immer im gleichen Speicherbereich stehen

- Privater Programmkode und Daten

- kann in beliebigem Speicherbereich stehen

Page 5: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

Verwendung gemeinsamer Seiten (pages) Seitentabelle

von P1

3

4

6

1

3

4

6

2

Seitentabelle von P3

3

4

6

7

Seitentabelle von P2

physikalischerSpeicher

Daten 1

Daten 3

Editor 1

Editor 2

Editor 3

Daten 2

0

1

2

3

4

5

6

7

8

9

10

11

12

Prozess P1

Editor 1Editor 2

Daten 1Editor 3

.

.

.

Prozess P3

Editor 1

Editor 3Editor 2

Daten 3

.

.

.

Prozess P2

Editor 3Editor 2

Editor 1

Daten 2

.

.

.

M. Esponda-Argüero

Page 6: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Seiten von gemeinsamen Bibliotheken

Stapel

Heap

Data

Code

gemeinsame

Bibliotheken ⇒

Stapel

Heap

Data

Code

gemeinsame

Bibliotheken

gemeinsame

Bibliotheken

Verwendung gemeinsamer Seiten (pages)

54

Page 7: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero 55

Struktur von Seitentabellen

Programme werden ständig größer und entsprechend die Seitentabellen auch.

- Die Seitentabellen selber werden in Seiten (pages) geteilt

Es gibt drei Lösungen:

- Hashtabellen werden verwendet

- invertierte Seitentabellen (inverted page table)

Die meisten modernen Rechner stellen einen sehr großen logischen Adressraum zur Verfügung ( bis ).232 264

Wie viele Seiten?232 ⇒ 4GB

4KB= 1,048,576 Seiten

Page 8: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Hierarchische Seitentabellen

56

Moderne Rechner arbeiten mit einem Adressraum zwischen

232 und 264

Seitengröße = 4 KB = 212

Mit einem Adressraum = 232

Beispiel

Tabellengröße = 220 Einträge

Wenn ein Tabelleneintrag = PTE = 4 Bytes

Seitentabelle = 4 MB

zu groß!100 Prozesse = 400 MB nur für die Seitentabellen!

Page 9: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

Hierarchische Seitentabellen

Die Seitentabellen selber werden in Seiten geteilt.

Bildquelle: Silverschatz, Galvin und Gagne

SpeicherSeitentabelle

Seite der Seitentabelle

Seitentabelle

Page 10: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Hierarchische Seitentabellen

58

physikalischer Speicher

0

1

2

3

4

5

6

7

8

9

10

11

12

frame # + d

page frame #. . .

. . .

Seitentabelle der Seitentabelle

page table #

Seitentabellen

frame # d

p1 p2 d

logische Adresse

physikalischer Adresse

Page 11: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero 59

Eine logische Adresse mit 32 Bits wird wie folgt geteilt :

• 22 Bits für die Seitennummer

• 10 Bits für die Verschiebung (Page Offset) Die Seitentabelle selber ist geteilt:

• 12 Bits Seitennummer in der Seitentabelle

• 10 Bits Seiten-Offset innerhalb der Seitentabelle Eine logische Adresse sieht wie folgt aus:

page number page offset

p1 p2 d12 10 10

Beispiel einer zweistufigen Seitenhierarchie

wo p1 der Index in der ersten Seitentabelle und p2 die Verschiebung innerhalb der Seite der äußeren Seitentabelle ist.

Page 12: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Beispiel einer zweistufigen Seitenhierarchie

60

+

+

Seitentabelle

p1 p2 d

Seitentabelle der Seitentabelle

p1

p2

d

Page 13: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Beispiel einer zweistufigen Seitenhierarchie

61

+

+

p1 p2 d

p1

p2

d

CPU

TLB hit

TLB

TLB miss

p1p2 f

+

Page 14: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Beispiel einer dreistufigen Seitenhierarchie

62

ab 264

besser

schlecht!

noch zu groß!

p1 p2 d10 10 12

232 4KB 4KB

Eine gute Teilung ist:

Seitengroße

Page 15: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Seitentabellen mit Hilfe von Hash-Funktionen

63

Werden oft verwendet mit Adressräumen größer als 32 Bits

Eine logische Seitennummer wird mit Hilfe einer Hash-Funktion in

der Seitentabelle abgebildet. An dieser Position der Tabelle hängt

eine verkettete Liste von Elementen, die zur selben Seitennummer

abgebildet werden.

Die logische Seitennummer wird dann mit den Elementen der Liste

verglichen. Wenn die Seitennummer in der Liste ist, wird die

entsprechende Frame-Nummer gewählt.

Page 16: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

Seitentabellen mit Hilfe von Hash-Funktionen

logische Adresse

p d

Hash-Funktion

Hashtabelle

q s p r t u NULL

r d

physikalischerSpeicher

physikalische Adresse

M. Esponda-Argüero

Page 17: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Inverted Page Table

65

Die Prozess ID wird in die Tabelle gespeichert.

Einen Speichereintrag für jede reale Speicherseite.

Es wird insgesamt weniger Speicherplatz für die Prozesstabellen verbraucht, aber die Zeit zum Suchen in der Tabelle wird größer.

Eine Hashtabelle wird verwendet, um die Suche zu beschleunigen.

Nur eine Seitentabelle existiert für das gesamte System.

Beispiele:64-Bit UltraSPARC und PowerPC

Page 18: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Invertierte Seitentabelle

66

CPUphysikalischer

Speicher

pid p

Logische Adresse

Seitentabelle

i d

physikalische Adresse

i

d

pid p

Suche

Page 19: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Invertierte Seitentabelle

67

CPUphysikalischer

Speicher

pid p

Logische Adresse

Seitentabelle

j d

physikalische Adresse

j

d

Hash-Funktion

p pid

Verkettung

Page 20: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Was ist die beste Seitengröße?

68

Nehmen wir an:

p = Länge des logischen Adressraums des Prozesses und

s = Seitenlänge

Dann ist

p/s = Länge der Seitentabelle

s/2 = mittlere Größe des internen Fragments (nur in der letzten Seite)

Der relative Speicherverlust V ist

V = (p/s + s/2)/p

Kleine Seiten kleine interne Fragmente, aber große Seitentabellen

Große Seiten große interne Fragmente, aber kleine Seitentabellen

Daraus folgt durch Minimierung: Optimale Seitengröße = 2p

Page 21: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Page Table Entries (PTEs)

69

Mikroprozessor-Architektur abhängig

V Valid-Bit Befindet sich die Seite im Hauptspeicher?

M Modify-Bit Ist die Seite verändert worden?

R Reference-Bit Ist die Seite verwendet worden (read/written)

prot Protection-Bits Ist die Seite lesbar, veränderbar oder ausführbar?

page frame number Physikalische Adresse im Hauptspeicher (RAM)

Page 22: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Segmentierung

70

Segmentierung ist ein Speicherverwaltungsschema, das die logische Sichtweise des Benutzers unterstützt.

Programme werden in logische Segmente geteilt.

HauptprogrammFunktion

MethodeObjektelokale + globale VariablenDatenstrukturenStandard C-Bibliothek

usw.

Beispiel:

Page 23: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Programm aus der Sichtweise eines Benutzers

71

logischer Adressraum

Hauptprogramm

Symboltabelle

Funktion 1Objekt 2

Stapel

Standard

Bibliothek

Page 24: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Segmentierung aus einer logischen Benutzersichtweise

72

1

3

2

4

Benutzer-Adressraum

1

4

2

3

Physikalischer Adressraum

Page 25: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Segmentierung aus logischer Benutzersichtweise

73

Eine logische Adresse ist ein zweistelliges Tupel:

<Seitennummer, Offset>

Segmenttabelle – Jeder Segmenttabelleneintrag hat:

• Base = Start der physikalischen Adresse des Segments

• im Speicher.

Grenze = Größe des Segments.

Segment Table Base Register (STBR) = Zeiger auf die Segmenttabelle des Speichers.

Segment Table Length Register (STLR) =Anzahl der Segmente, die im Programm verwendet werden.

Eine Segmentnummer s ist legal, wenn s < STLR

Page 26: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Speicherschutz

74

Jeder Segmenteintrag in der Tabelle hat:

validation bit = 0 ⇒ illegales Segment

read/write/execute Zugriffsrechte

Die Segmente haben Schutzbits.

Gemeinsame Codeverwendung auf Segment-Ebene.

Weil Segmente verschiedene Größen haben, ist dynamische Speicherallokation ein Problem.

Page 27: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Hardwareunterstützung für Segmentierung

75

<ja

nein

Ausnahmefehler (trap)

Speicherzugriff

CPU

physikalischer Speicher

s d

+

Segmenttabelle

limit base

s

Page 28: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Hardwareunterstützung für Segmentierung

76

physikalischer Speicher

Segmenttabelle

limit base

logischer Adressraum

Hauptprogramm

Symboltabelle

Funktion 1

Objekt 2Stapel

Standard

Bibliothek

500 40002000 10000

12

34

56

7

1500 6000

.

.

.

.

.

.

Segment 0

Segment 1

Segment 2

Segment 0

Segment 1

Segment 2

1000

3000

4000

4500

6000

7500

Page 29: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Das Intel-Pentium

77

Die Hardware-Architektur des Intel-Pentium-CPU unterstützt pure Segmentierung oder Segmentierung kombiniert mit Paging

Pentium Segmentierung

- Segmente können bis zum 4 GB groß sein.

- Ein Prozess kann maximal 16 Segmente haben.

- Der Speicherraum des Prozesses hat zwei Partitionen

- Erste Partition: private Segmente des Prozesses

- Zweite Partition: gemeinsame Segmente für alle Prozesse

- Information über die Partitionen:

- local descriptor table LDT (Tabelle der ersten Partition)

- global descriptor table GDT (Tabelle der zweiten Partition)

Page 30: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

Pentium-Segmentierung

Von logischer in physikalische Adresse

segment number protectiong

0 = das Segment ist in GDT1 = das Segment ist in LDT

CPU segmentation unit

Physikalischer Speicher

logische Adresse

lineare Adresse

physikalische Adressepaging

unit

offset

selector

13 2

M. Esponda-Argüero

Page 31: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

M. Esponda-Argüero

Pentium Paging-Architektur

79

Dir offset

Seitennummer

10 10

Die Pentium-Architektur erlaubt zwei verschiedene Seitengrößen (4 KB oder 4 MB).

Bei 4 KB-Seitengröße wird ein zweistufiges Seitenschema verwendet.

Page

12

Jeder Prozess hat ein Seitenverzeichnis, das aus

210 32-Bits-Einträgen besteht.

Jeder Eintrag in diesem Verzeichnis zeigt auf eine Seitentabelle,

die wiederum aus 210 32-Bits-Einträgen besteht.

Page 32: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

Pentium Segment- und Paging-Architektur

selector offset

logische Adresse

segment descriptor

descriptor table

lineare Adresse

+

selektiertes Wort

Seitenverzeichnis Seitentabelle Seitenrahmen

Offset

OffsetPageDir

PageDir4 KB page

M. Esponda-Argüero

Page 33: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

Pentium Segment- und Paging-Architektur

selector offset

logische Adresse

segment descriptor

descriptor table

lineare Adresse

+

selektiertes Wort

SeitenverzeichnisSeitenrahmen

Offset

offsetpage directory

Dir 4 MB page

Page 34: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

Linux in Pentium-Systemen

Linux hat eine minimale Segmentierung-Unterstützung.

Nur 6 Segmente

- kernel code

- kernel data

- user code

- user data

- task-state segment (TSS)

- default LDT segment

Globales Verzeichnis Seitentabelle

Dreistufige Seitentabelle in Linux

Mittleres Verzeichnis Offset

Page 35: Zwei Möglichkeiten die TLB zu aktualisieren - Informatik · Nur eine Seitentabelle existiert für das gesamte System. Beispiele: 64-Bit UltraSPARC und PowerPC. M. Esponda-Argüero

Dreistufige Seitenadressierung im Linux

a

a

+

+

+