• Keine Ergebnisse gefunden

Schreiben von Pages

N/A
N/A
Protected

Academic year: 2022

Aktie "Schreiben von Pages"

Copied!
14
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Schreiben von Pages

Schreiben einer Page in den Swap‐Space ist sehr teuer (kostet  millionen von CPU‐Zyklen).

Write‐Through‐Strategie (siehe Abschnitt über Caching) ist hier 

somit nicht sinnvoll. Eine sinnvolle Strategie ist Write‐Back, d.h. nur,  wenn die Seite von einer anderen in den Swap‐Space verdrängt 

wird, wird diese auch in den Swap‐Space geschrieben.

Auch das ist immer noch gleich so teuer, kommt aber seltener vor.

Muss man eine verdrängte Seite eigentlich immer zurückschreiben? 

Nur, wenn diese verändert wurde.

CPU muss bei jedem schreibenden Zugriff auf eine Page in der Page‐

Table ein Dirty‐Bit setzen.

(2)

Beobachtung für jeden Speicherzugriff

Virtueller Speicher ist aufwendiger als direkter physikalischer Zugriff

• Erst nachschlagen der Page im Speicher.

• Dann Zugriff auf den Speicher.

(3)

Der Translation‐Lookaside‐Buffer (TLB)

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012

(4)

Protection mittels virtuellem Speicher

Virtueller Speicher erlaubt, dass mehrere Prozesse auf denselben  physikalischen Speicher zugreifen.

Es ist unter Umständen sinnvoll, den Speicherbereich vor  Schreibzugriff zu schützen.

TLB und Page‐Table speichern ein extra RW‐Bit.

(1) Wer setzt dieses RW‐Bit? (2) Wie setzt man dieses Bit?

Zu (1): Ein Betriebssystem‐Prozess.

Zu (2): Einfache Maschineninstruktionen?

Problem: Jeder kann dann das Bit setzen.

Page

Prozess 1 Prozess 2

(5)

Betriebsmodi einer CPU

Häufig zwei unterschiedliche Betriebsmodi:

• Normaler Betriebsmodus

• Kernel‐ (oder auch Supervisor)‐Mode

CPU erlaubt die Ausführung bestimmter Maschinen‐Instruktionen  nur im Kernel‐Mode.

Page‐Tables werden im physikalischen Speicher abgelegt, auf den  kein anderer virtueller Adressraum zeigt.

Wie erreicht man den Kernel‐Mode? Es muss verhindert werden,  dass jeder die CPU in diesen Modus versetzen kann.

Üblicher Weg: System‐Call.

Erinnerung: damit kann man eine Betriebssystemfunktion aufrufen.

Mit System‐Call wird eine Exception ausgelöst und an eine 

Speicherstelle gesprungen, die nur in Kernel‐Mode zugreifbar ist.

(6)

Was passiert bei einem Page‐Fault noch?

Aktueller Prozess kann die Instruktion, die den Page‐Fault ausgelöst  hat, nicht weiter ausführen.

Betriebssystem kann einem anderen Prozess die CPU zur Verfügung  stellen.

Sobald die Page geladen ist, kann dem ursprünglichen Prozess die  CPU wieder zur Verfügung gestellt werden.

Hierzu muss der ursprüngliche Prozesskontext wieder hergestellt  werden; unter anderem natürlich der PC auf die Instruktion gesetzt  werden, die den Page‐Fault verursacht hatte.

(7)

Randbemerkung: Segmentierung

Bisher haben wir feste Blockgrößen betrachtet. Es gibt auch ein  Konzept mit variablen Blockgrößen: Segmentierung.

Adresse besteht aus Segment‐Nummer und Segment‐Offset:

Anfang kann auf einen beliebigen Startpunkt im Speicher zeigen.

Die physikalische Adresse ergibt sich aus Anfang + Offset.

Segmente können beliebig lang sein; benötigt auch „Bounds‐Check“.

Bildquelle: http://de.wikipedia.org/wiki/Segmentierung_(Speicherverwaltung)

(8)

Parallelität und Caches

(9)

Cache‐Kohärenz‐Problem

CPU 1 (oder Core 1) Cache

CPU 2 (oder Core 2) Cache

Speicher

Zeitschritt Event Cache‐Inhalt für  CPU A

Cache‐Inhalt für  CPU B

Speicherinhalt  für Adresse X

0 0

1 CPU 1 liest X 0 0

2 CPU 2 liest X 0 0 0

3 CPU 1 speichert  1 nach X

1 0 1

(10)

Wann gilt ein Cache als kohärent?

1. Lesen von Speicherstelle X nach schreiben in Speicherstelle X  sollte den geschriebenen Wert zurück geben, wenn kein 

weiterer Prozess auf die Stelle X geschrieben hat.

2. Nachdem ein Prozess in Speicherstelle X geschrieben hat, sollte 

„nach einer gewissen Zeit“ jeder Prozess den geschriebenen  Wert in X vorfinden.

3. Zwei Schreiboperationen von zwei Prozessen in die 

Speicherstelle X sollte von jedem Prozess in der gleichen  Reihenfolge gesehen werden. (Schreiben ist serialisiert)

(11)

Wie erreicht man Kohärenz?

Write‐Invalidate‐Protokoll: Wenn ein Prozess in einen Speicherstelle schreibt wird  die Speicherstelle in den Caches aller anderen Prozesse invalidiert.

Wie wird das Invalidieren technisch erreicht? Snooping: Jeder Cache‐Controller  überwacht den gemeinsamen Bus, ob auf einen eigenen gecachten Inhalt 

geschrieben wird.

Prozessor‐

aktivität

Busaktivität Inhalt des  Caches von  CPU A

Inhalt des  Caches von  CPU B

Speicher‐

inhalt für X 0

CPU A liest X Cache‐Miss für X 0 0

CPU B liest X Cache‐Miss für X 0 0 0

CPU A schreibt  1 nach X

Cache‐

Invalidierung für X

1 1

CPU B liest X Cache‐Miss für X 1 1 1

(12)

Zusammenfassung und Literatur

(13)

Zusammenfassung

• Cache‐Ziel: Speicher so groß wie auf unterstem Level  aber annähernd so schnell wie auf höchstem Level.

• Warum funktionieren Caches überhaupt so gut? 

Lokalitätsprinzip.

• Virtueller Speicher ist prinzipiell das selbe wie ein  Cache. Auch hier gelten dieselben Cache‐Prinzipien  (z.B. Lokalität)

• Insgesamt ergibt sich eine Hierarchie von Caches.

• Caches sind prinzipiell vor der Software unsichtbar. 

Dennoch ist es sinnvoll diese in der Software zu  beachten (z.B. Speicherblöcke in Schleifen Cache‐

günstig durchlaufen, Prefetching) 

(14)

Literatur

[PattersonHennessy2012] David A. Patterson und  John L. Hennessy, „Computer Organization and  Design“, Fourth Edition, 2012

5.1 Introduction

5.2 The Basics of Caches

5.3 Measuring and Improving Cache Performance 5.4 Virtual Memory

5.8 Parallelism and Memory Hierarchies: Cache 

Coherence

Referenzen

ÄHNLICHE DOKUMENTE

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and

SS 2012 Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur ‐

Bildquelle: Symbole kopiert aus David A. Patterson und John L. Hennessy, „Computer Organization and

[PattersonHennessy2012] David A. Patterson und  John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012. 2.4 Signed and Unsigned

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth

Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and

SS 2012 Bildquelle: David A. Patterson und John L. Hennessy, „Computer Organization and Design“, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur ‐