Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme.

Ähnliche Präsentationen


Präsentation zum Thema: "4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme."—  Präsentation transkript:

1 4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme in Overlays, die auf der Festplatte gespeichert waren und dynamisch ein- und ausgelagert wurden. Problem: Programmierer muss Programme in kleine, modulare Teile aufspalten und das Rein- und Auslagern organisieren. Kap. 4.1

2 Virtueller Speicher und Cache: Gemeinsamkeiten
Virtueller Speicher (VS) Ziel: Programmcode, Daten und Laufzeitkeller dürfen zusammen größer sein als der verfügbare Arbeitsspeicher. VS spiegelt einen (fast) beliebig großen Arbeitsspeicher von (fast) dessen Geschwindigkeit vor. Betriebssystem hält die “benötigten” Speicherbereiche im Arbeitsspeicher. Die anderen Bereiche liegen auf der Festplatte. Bei Zugriff auf fehlenden Bereich: Laden und Ersetzen einer Seite (page). Profitiert von Lokalität des Verhaltens. Cache Cache spiegelt einen schnellen Speicher von der Größe des Arbeitsspeichers vor. Cache-Verwaltung hält “benötigte” Speicherblöcke im Cache. Die anderen Blöcke liegen im Arbeitsspeicher. Bei Zugriff auf fehlende Adresse: Laden und Ersetzen eines Speicherblocks. Profitiert von Lokalität des Verhaltens. Kap. 4.1

3 Virtueller Speicher und Cache: Unterschiede
zwei Arten von Adressen: logische (virtuelle) Adressen im Programm physikalische Adressen für Speicherzellen Übersetzung logische  physikalische Adressen bei jedem Zugriff Cache identische Adressen für Speicherzellen in Cache und Arbeitsspeicher, Cache ist “transparent” für den Programmierer Kap. 4.1

4 Virtueller Speicher: Organisation
Virtueller und physischer Adressraum werden aufgeteilt in Blöcke gleicher Größe, im virtuellen Speicher Seiten (pages), im physischen Speicher Rahmen (frames) genannt. Ein Rahmen kann also eine Seite aufnehmen. Eine Seite ist die Einheit der Speicherbelegung und des Austauschs. Typische Seitengrößen: 2 – 16 KB. Kap. 4.1

5 Adressierung z.B. bei virtuellen 32-Bit-Adressen
(d.h. 4-GB virtueller Adressraum) und Seitengröße s = 4096 Bytes: virtuelle Adresse: page = (virtuelle) Seitennummer offset = Distanzadresse page offset  je Prozess maximal 220 Seiten à 4096 Bytes Kap. 4.1

6 Seitentabelle Für jeden aktiven Prozess verwaltet das Betriebssystem
eine Seitentabelle. Für jede Seite des Prozesses gibt es einen Tabelleneintrag mit Inhalt: 1 Bit, resident, welches angibt, ob Seite im Hauptspeicher, 1 Bit, dirty, welches angibt, ob Inhalt verändert wurde, falls Seite im Hauptspeicher ist: Rahmennummer falls Seite nicht im Hauptspeicher ist: Plattenspeicheradresse weitere Information über Speicherschutz Kap. 4.1

7 Seitentabellen Register PTR zeigt auf die Basisadresse der Seitentabelle. p-ter Eintrag enthält Basisadresse, frame, des Rahmens für die Seite p, wenn Seite p im Speicher ist. *(PTR+p) zeigt auf Rahmen mit Basisadresse frame Adress-Übersetzung: address_map(p,d) { pa = *(PTR+p)+d; return pa } Die Seitentabelle für eine Adressraum von 4GByte bei einer Seitengröße von 4KByte hat 220 Einträge? Problem? Lösung? Pro Eintrag 4 Byte, dann 4MByte Kap. 4.1

8 Übersetzung: virtuelle in physische Adressen
Hauptspeicher page offset Seitentabelle frame frame offset Jeder Speicherzugriff braucht eine Indirektion und eine Addition. Aufwendig! Kap. 4.1

9 Seitenaustausch (Demand paging)
Seiten werden geladen, wenn gebraucht Bit resident, in der Seitentabelle gibt an, ob Seite aktuelle geladen ist Seitenfehler passiert bei Zugriff auf nicht geladene Seite address_map(p, w) { if (resident(*(PTR+p))) { pa = *(PTR+p)+w; return pa; } else page_fault; } Wird fehlende Seite geladen, muss evtl. eine Seite verdrängt werden  Ersetzungsstrategie, z.B. LRU. Ist in der verdrängten Seite das dirty Bit gesetzt, muss die Seite zurück geschrieben werden. Kap. 4.1

10 Beschleunigung des Zugriffs
Wie kann man den Aufwand für die Indirektion vermeiden? Cache für die zuletzt zugegriffenen Seitentabelleneinträge, Tanslation Lookaside Buffer, TLB voll assoziativ 8 – 64 Einträge Statt Indirektion durch den Speicher und Addition parallele Suche in TLB, Dauer wenige Zyklen. Hitrate typischerweise bei 99% Laden von (page, frame) bei erstem Zugriff, aber Miss Penalty sehr groß, auf PowerPC 755: 12 reads, 1 write, 520 Zyklen Voraussagbarkeit? Kap. 4.1

11 w = writable bit – für Zugriffsschutz
u page frame w d d = dirty bit w = writable bit – für Zugriffsschutz u = used bit: wird bei Verdrängung eines Eintrags durch einen neu benötigten Eintrags in allen Registern gelöscht und bei der Benutzung eines Eintrags in dessen Register gesetzt. Beim nächsten Verdrängen wird dort verdrängt, wo u nicht gesetzt ist, dabei d in Seitentabelle zurück schreiben!) Wenn u überall gesetzt ist, wird irgendwo verdrängt ! Kap. 4.1

12 Schwankung derSpeicherzugriffszeiten
D-Cache Arbeitsspeicher Seiten- tabelle virtuelle Adresse a b TLB Cache arbeitet mit virtuellen Adressen! Kap. 4.1

13 Schwankung der Speicherzugriffszeiten
Seiten- fehlerer Arbeitsspeicher Seiten- tabelle virtuelle Adresse TLB- Miss Seiten- treffer base +a a b TLB- Hit D-Cache a base + TLB Cache- Hit Cache arbeitet mit physischen Adressen! CPU Kap. 4.1

14 VS-Übergänge und ihre Kosten
lade Seite TLB(a) D-Cache(PT<a> PT(a) PT(a) D-Cache(PT<a> TLB(a) Seitenfehler c tlb lade D-Cache lade TLB PT(a) D-Cache(PT<a> TLB(a) Kap. 4.1

15 VS-Übergänge und ihre Kosten
TLB(a) D-Cache(tr<a>) PT(a) TLB(a) D-Cache(tr<a>) PT(a) lade Seite pf schlechtester Fall übersetze addr + load pte in TLB ma Lade Daten aus Speicher (Daten auch in den D-Cache) bester Fall TLB(a) D-Cache(tr<a>) PT(a) TLB(a) D-Cache(tr<a>) PT(a) cm = ma ch Kap. 4.1

16 Prozessor-Speicher-Schnittstelle
Register: Memory Address Register (MAR) Verbunden mit Adress Bus Gibt Adresse für Laden aus oder Speichern in Speicher an Memory Buffer Register (MBR) enthält Inhalt der geladen wurde oder geschrieben werden soll Signale: writeEnable – gesetzt, wenn MBR an M[MAR] geschrieben werden soll, readEnable – gesetzt, wenn M[MAR] in MBR geladen werden soll. Prozessor (CPU) ALU Steuerwerk MAR MDR re we Systembus Haupt- speicher Kap. 4.1

17 Befehlsholen (Instruction Fetch)
Zustand vorher: Adresse des nächsten Befehls ist in PC t1: MAR <- PC; t2: MBR <- M[MAR]; PC <- PC +1; t3: IR <- MBR; (tx = Takt) oder t3: PC <- PC +1; IR <- MBR; Addresse (MAR) platziert auf Adress-Bus Steuereinheit sendet ReadEnable-Signal Resultat aus dem Speicher erscheint auf dem Datenbus Inhalt des Datenbus wird ins MBR kopiert PC um 1 erhöht (parallel zum Speicherladen) Befehl wird aus MBR ins IR gebracht Zustand nachher: MBR ist wieder frei Kap. 4.1


Herunterladen ppt "4.5 Virtueller Speicher Problemsituation: Programme und Daten sind zu groß für den verfügbaren Arbeitsspeicher Frühere Lösung Aufspaltung der Programme."

Ähnliche Präsentationen


Google-Anzeigen