Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


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

1 Kap 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.

2 Kap 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.

3 Kap Virtueller Speicher und Cache: Unterschiede Virtueller Speicher 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

4 Kap 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.

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

6 Kap 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

7 Kap 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 2 20 Einträge? Problem? Lösung?

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

9 Kap 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.

10 Kap 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?

11 Kap 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!)

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

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

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

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

16 Kap 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) Verbunden mit Adress Bus 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. Systembus Prozessor (CPU) Haupt- speicher MARMDR ALU Steuerwerk rewe

17 Kap Befehlsholen (Instruction Fetch) 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 t1: MAR <- PC; t2: MBR <- M[MAR]; PC <- PC +1; t3: IR <- MBR ; (tx = Takt) oder t1: MAR <- PC ; t2: MBR <- M[MAR]; t3: PC <- PC +1; IR <- MBR; Zustand vorher: Adresse des nächsten Befehls ist in PC Zustand nachher: MBR ist wieder frei


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

Ähnliche Präsentationen


Google-Anzeigen