Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
© Lothar ThieleComputer Engineering and Networks Laboratory
Technische Informatik6 – Speicherhierarchie
6 ‐ 2
Ebenen der Speicherhierarchie
CD/DVD/Magnetband
Programm, Compiler1‐8 Bytes, 1 Taktzyklus
Cache Steuerung (Hardware)16‐128 Bytes, 10‐1000 Taktzyklen
Betriebssystem (Software)4000 ‐ 64000 Bytes, 10M‐100 M Taktzyklen
Anwendungsprogramm (Software)Mbytes, ‐
verantwortlich für ÜbertragungBlockgrösse Zugriffszeit schneller
grösser
Hauptspeicher
Cache Architektur
virtueller Speicher
sekundärer Speicher
6 ‐ 3
Cache Kohärenz
6 ‐ 4
Cache Kohärenz: Snooping ProtokollAlle Prozessoren beobachten Datenübertragungen zwischen jedem Cache und dem gemeinsamen Speicher.
6 ‐ 5
Cache Kohärenz: Write invalidate/Write through
Das Zustandsdiagramm ist auf eine Cachezeile von Prozessor P bezogen. Speicherung des Zustands durch ein Bit pro Cachezeile.
invalid valid
RM
WM
SHW
RH
WM
RH: Read HitRM: Read MissWH: Write HitWM: Write MissSHW: Snoop Hit on Write
Cache Line FillWrite Cache and Memory
RM
WH
Block, in den von einem anderemProzessor geschrieben wird,ist in der Cachezeile
Auffüllen der Cachezeileaus dem Hauptspeicher
Speichern in die Cachezeileund in den Hauptspeicher
verursacht durchZugriff auf einenanderen Cache(remote cache)
6 ‐ 6
Cache Kohärenz: MESIWeit verbreitetes Write Invalidate Protokoll für Zurückkopieren (write back): MESI (Modified, Exclusive, Shared, Invalid).
Modified: Es gibt nur eine Cachekopie mit Schreibberechtigung, Cacheinhalt stimmt nicht mit Hauptspeicher überein.
Exclusive: Es gibt nur eine Cachekopie mit Schreibberechtigung, Cacheinhalt stimmt mit Hauptspeicher überein.
Shared: Kein Prozessor hat Schreibberechtigung, Cacheinhalt stimmt mit Hauptspeicher überein.
Invalid: Jeder Zugriff führt zu einem Miss.
6 ‐ 7
Cache Kohärenz : MESI•Lokale Cache Operationen
modified
RH: Read HitRMS: Read Miss SharedRME: Read Miss ExclusiveWH: Write HitWM: Write MissSHW: Snoop Hit on Intent-to-ModifySHRM: Snoop Hit on Read Miss
Cache Line FillLine CopybackIntent-to-Modify
invalid
shared
exclusive
WH
RMS
RH
RH
WM
RME
RMS
RMSRME
WM
RMS
WMWH
RME
RME
WHRH
WM
Block ist in keinemanderen Cache
Block ist in einem anderenCache “exclusive”, “modified”oder “shared”.
6 ‐ 8
Cache Kohärenz : MESI•Remote Cache Operationen
invalid
shared
exclusive
SHW
SHW
SHRM
SHW
modified
SHRM
RH: Read HitRMS: Read Miss SharedRME: Read Miss ExclusiveWH: Write HitWM: Write MissSHW: Snoop Hit on Intent-to-ModifySHRM: Snoop Hit on Read Miss
Cache Line FillLine CopybackIntent-to-Modify
6 ‐ 9
6 ‐ 10
Virtueller Speicher
6 ‐ 11
Ebenen der Speicherhierarchie
CD/DVD/Magnetband
Programm, Compiler1‐8 Bytes, 1 Taktzyklus
Cache Steuerung (Hardware)16‐128 Bytes, 10‐1000 Taktzyklen
Betriebssystem (Software)4000 ‐ 64000 Bytes, 10M‐100 M Taktzyklen
Anwendungsprogramm (Software)Mbytes, ‐
verantwortlich für ÜbertragungBlockgrösse Zugriffszeit schneller
grösser
Hauptspeicher
Cache Architektur
virtueller Speicher
sekundärer Speicher
6 ‐ 12
Prozess«Prozess»: Die Instanz eines Programms, die vom Prozessor zu einem gewissen Zeitpunkt mit konkreten Eingabedaten ausgeführt wird. Ein Prozess besteht ausdem zugehörigen Programm‐Code sowie dem derzeitigen Zustand.
Eigenschaften: Ein Prozess hat seinen eigenen
privaten Adressraum. Zu seinem Zustand gehören zum
Beispiel die Prozessor‐Register, der Programmzähler und Daten.
In Kapitel 7 werden wir uns genauer mit der (quasi)‐parallelen Abarbeitungmehrerer Prozesse beschäftigen.
typischer Adressraum eines Prozesses
Stack
Text
Static data
Dynamic data
0000 0000hex
7FFF FFFFhex
6 ‐ 13
Gründe für die Verwendung virtueller Speicher
1. Manche Prozesse passen einschliesslich ihrer Daten nicht in den Hauptspeicher.
2. Viele Betriebssysteme erlauben die (quasi) gleichzeitige Ausführung mehrerer unabhängiger Prozesse, die jeweils ihren eigenen Adressraum (Bereich der Speicheradressen, auf die der Prozess zugreifen kann) haben. Falls nur ein Prozess den Hauptspeicher besetzt, kann ein Prozesswechsel zu
erheblichen Startzeiten (Zeit, bis die erste Instruktion ausgeführt wird) führen. Damit alle Prozesse in den Hauptspeicher passen, müsste er sehr gross sein. Der Adressraum eines Prozesses sollte vom Zugriff anderer Prozesse geschützt
werden (unabhängige Adressräume).
6 ‐ 14
Virtueller Speicher ‐ Grundprinzipien
6 ‐ 15
6 ‐ 16
Grundprinzip
virtuelleSeite
physikalischeSeite
Adressraum eines Prozessesaus der Sichteines Prozesses
Adressraum aus der Sichtvon Hauptspeicher undsekundärem Speicher
Jeder Prozess hatseine eigene, privateAdressübersetzung
6 ‐ 17
Virtueller Speicher vs. CacheCache
Die verschiedenen Cacheblöcke gehören üblicherweise zum gleichen Prozess. Cache‐Misses werden von der Hardware gelöst.
Virtueller Speicher Ein Speicherblock wird als Seite (page) bezeichnet, ein Miss als Seitenfehler (page
fault). Ein Prozess kann quasi gleichzeitig mit anderen Prozessen ausgeführt werden.
Prozesse haben voneinander unabhängige virtuelle Speicherbereiche. Die Adressumsetzung (virtueller auf physikalischer Adressraum) erfolgt durch
Hardware und Software. Seitenfehler werden über Software gelöst.
6 ‐ 18
Adressabbildung
Adressierung innerhalbeiner Seite
Abbildung von virtueller Seiteauf physikalischeSeite.
Seitengrösse 212 Byte = 4 KBytemaximale Zahl physikalischer Seiten 218maximale Zahl virtueller Seiten 220;
adressierbarer physikalischer Speicher 1 GByteGrösse des virtuellen Adressraums 4 GByte
6 ‐ 19
ImplementierungsalternativenWo kann eine Seite (ein Block) platziert werden, wie wird sie gefunden ?
Üblicherweise vollassoziative Platzierung da die Kosten zur Beseitigung eines Seitenfehlers sehr hoch sind (10 – 100 Millionen Taktzyklen).
Auffinden einer Seite im Hauptspeicher erfolgt üblicherweise über eine Tabelle (Seitentabelle), die virtuelle auf physikalische Adressen abbildet.
Jeder Prozess besitzt seine eigene Seitentabelle.
Welche Seite (welcher Block) sollte bei einem Miss ersetzt werden ? Üblicherweise LRU (least recently used, am längsten unbenutzt) oder eine
Annäherung mit weniger Speicher‐ und Rechenaufwand.
Was geschieht beim Schreiben einer Seite (eines Blocks) ? Zurückkopieren, da das Schreiben in den sekundären Speicher zu lange dauert und
zudem Seitenfehler im Vergleich zu Cache‐Misses selten sind.
6 ‐ 20
Seitentabelle
Jeder Prozess besitzt seine eigeneSeitentabelle. Zunächst gehen wir davon aus, dass die Seitentabellen im Hauptspeichergespeichert sind.Im Beispiel besitzt eine Seitentabelle220 Einträge.
Zeiger auf die Seitentabelle desderzeit ausgeführten Prozesses.
Eine Zeile der Seitentabelle enthältüblicherweise noch Bits, dieInformationen über Zugriffsrechteenthalten.
zumindest istnoch ein “dirty bit” notwendig
6 ‐ 21
6 ‐ 22
SeitenfehlerWie wird ein Seitenfehler erkannt?
Das Valid‐Bit in der Seitentabelle ist ‘0’. Eine Unterbrechung des Prozessablaufs wird erzeugt und die Kontrolle an das
Betriebssystem übergeben. Es ist verantwortlich für die gesamte Prozessorganisation und somit auch für die Organisation des virtuellen Speichers.
Wo ist die Seite im sekundären Speicher? Betriebssystem unterhält eine Datenstruktur, in der diese Information enthalten
ist. Diese Information kann auch in die Seitentabelle integriert sein.Welche Seite im Hauptspeicher wird ersetzt?
Üblicherweise wird eine Annäherung an LRU (least recently used) benutzt: Ein Referenz‐Bit für eine Seite wird auf ‘1’ gesetzt, falls die Seite benutzt wird (genaue Erklärung folgt später).
Wann wird die zu ersetzende Seite in den sekundären Speicher kopiert? Falls in die Seite geschrieben wurde; dies wird durch ein Dirty‐Bit signalisiert.
6 ‐ 23
Eine Seite wird in den sekundären Speichergeschrieben, falls sie ersetzt wird und sie zuvor beschrieben wurde (Dirty =‘1’).
Seitenfehler
Bei einem Seitenfehler wird eine gültige Seite(Valid = ‘1’) mit Ref = ‘0’ ersetzt ‐> später genauer.
6 ‐ 24
Performanz ‐ SeitenfehlerAnnahmen:
Die Architektur besitzt keinen Cache. Falls der Zugriff auf die Seitentabelle zu einem Seitenfehler führt, dann wird er
zunächst behoben und dann erfolgt ein neuer Zugriff auf die Seitentabelle. Seitenfehler‐Rate: p mit 0 p 1 . Falls p == 0 dann gibt es keine Seitenfehler; falls
p==1 dann ist jeder Zugriff ein Seitenfehler. Mittlere Zugriffszeit zum Hauptspeicher: h Mittlere Seitenfehler‐Bearbeitungszeit: f
Effektive Speicherzugriffszeit (Effective Access Time EAT):EAT = 2 • h + p • (h + f)
in jedem Fall erfolgt der Zugriff auf die Seitentabelle (imHauptspeicher) und der Zugriff auf die gesuchten Daten.
erster Zugriff auf die Seitentabelle (Fehlerwird danach festgestellt) sowie Beheben des Fehlers.
6 ‐ 25
Rechenbeispiel – Performanz SeitenfehlerSpeicherzugriffszeit 200 NanosekundenMittlere Seitenfehler‐Bearbeitungszeit 8 MillisekundenSeitenfehler‐Rate 10‐3
EAT = 2 • 200 ns + p • (8 ms + 200 ns) = 400 ns + 8000 ns + 0.2 ns = 8400.2 ns
Für p = 10‐3 beträgt die EAT also etwa 8.4 µs. Dies ist eine Verlangsamung etwa um den Faktor 42 gegenüber einem direkten
Speicherzugriff.
Wie hoch ist die effektive Speicherzugriffszeit?
6 ‐ 26
Problem 1: Grösse der SeitentabelleBeispiel für einen Prozess:
32 Bit virtueller Adressraum, Seitengrösse 212 Byte, 4 Bytes pro Tabelleneintrag:Zahl der Einträge = 232 / 212 = 220 ; Grösse der Tabelle = 220 * 22 Bytes = 4 Mbyte
Eigentlich müssten die Seitentabellen aller Prozesse im Hauptspeicher liegen.
Möglichkeiten der Abhilfe: Durch geeignete Datenstrukturen wird die Seitentabelle effizienter gespeichert. Als
Beispiel sehen wir uns die hierarchische Speicherung an. Die Verwaltung aller Tabellen wird in einem Prozess ausgeführt, der Teil des
Betriebssystems ist. Dieser Prozess verwendet ebenfalls einen virtuellen Adressraum, d.h. die Seitentabellen sind ihrerseits auf virtuelle Seiten aufgeteilt und können im sekundären Speicher liegen.
6 ‐ 27
Hierarchischer Aufbau einer Seitentabelle
Die Seitentabelle wird in Teiltabellen (innere Seitentabellen) aufgeteilt.
Ziel: Es werden lediglich diejenigen inneren Seitentabellen (inner page table) gespeichert, die tatsächlich genutzten virtuellen Speicherbereichen zugeordnet sind.
Die äussere Seitentabelle enthält Einträge, die auf die inneren Seitentabellen zeigen.
Vorteil: Für ungenutzte virtuelle Speicherbereiche ist nicht notwendigerweise eine innere Seitentabelle erforderlich.
•inner page •table
•outer page •table
inner pagetables
6 ‐ 28
Beispiel – Zweistufige Seitentabelle
Annahmen: • Seitengrösse 4kB• 4 Bytes pro Eintrag in der
«inner page table»
physikalischeSeite: 4 kB
210 Zeilen
210 Zeilen
6 ‐ 29
6 ‐ 30
Problem 2: Aufwändige ErsetzungsstrategieWelche Seite soll ersetzt werden, falls keine freie physikalische Seite verfügbar ist? Ziel: Algorithmus, der zu einer kleinen Zahl von Seitenfehlern führt. Problem: LRU (least recently used) ist aufwändig, da jeweils die physikalische Seite
bestimmt werden muss, die am längsten unbenutzt ist. Eine mögliche Lösung: Approximation mittels Referenz‐Bit («second chance»):
Jede Seite erhält ein Referenz‐Bit. Falls eine Seite benutzt wird, wird Ref=‘1’ gesetzt. Ein Zeiger auf die Einträge der Seitentabelle wird definiert. Die folgende Schritt wird bei jedem Seitenfehler so oft durchgeführt, bis eine Seite
ersetzt wird: Falls der Zeiger auf eine Seite mit ‘0’ zeigt, dann diese Seite ersetzen, das Referenz‐Bit auf
‘1’ setzen und den Zeiger inkrementieren (auf die nächste gültige Seite zeigen, zirkulär). Falls der Zeiger auf eine Seite mit ‘1’ zeigt, dann das Referenz‐Bit auf ‘0’ setzen und den
Zeiger inkrementieren (auf die nächste gültige Seite zeigen, zirkulär).
6 ‐ 31
Problem 2: Aufwändige ErsetzungsstrategieSeitenfehler:
diese Seitewirdersetzt
1
6 ‐ 32