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. SS 2012 Grundlagen der Rechnerarchitektur Speicher 53
Beobachtung für jeden Speicherzugriff Virtueller Speicher ist aufwendiger als direkter physikalischer Zugriff Erst nachschlagen der Page im Speicher. Dann Zugriff auf den Speicher. Wie kann man das soweit wie möglich beschleunigen? Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 SS 2012 Grundlagen der Rechnerarchitektur Speicher 54
Der Translation Lookaside Buffer (TLB) Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 SS 2012 Grundlagen der Rechnerarchitektur Speicher 55
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. Prozess 1 Page Prozess 2 SS 2012 Grundlagen der Rechnerarchitektur Speicher 56
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. SS 2012 Grundlagen der Rechnerarchitektur Speicher 57
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. SS 2012 Grundlagen der Rechnerarchitektur Speicher 58
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) SS 2012 Grundlagen der Rechnerarchitektur Speicher 59
Parallelität und Caches SS 2012 Grundlagen der Rechnerarchitektur Speicher 60
Cache Kohärenz Problem CPU 1 (oder Core 1) CPU 2 (oder Core 2) Cache 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 SS 2012 Grundlagen der Rechnerarchitektur Speicher 61
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) SS 2012 Grundlagen der Rechnerarchitektur Speicher 62
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. Busaktivität Inhalt des Caches von CPU A Inhalt des Caches von CPU B 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 Prozessoraktivität Speicherinhalt für X Wie wird das Invalidieren technisch erreicht? Snooping: Jeder Cache Controller überwacht den gemeinsamen Bus, ob auf einen eigenen gecachten Inhalt geschrieben wird. 0 SS 2012 Grundlagen der Rechnerarchitektur Speicher 63
Zusammenfassung und Literatur SS 2012 Grundlagen der Rechnerarchitektur Speicher 64
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 Cachegünstig durchlaufen, Prefetching) SS 2012 Grundlagen der Rechnerarchitektur Speicher 65
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 SS 2012 Grundlagen der Rechnerarchitektur Speicher 66