Speicher - Fachbereich Informatik

Vorlesung Rechnerarchitektur
Speicher
V 1.2
Speicheranbindung früher und heute
Bei der MU0 wurde der Speicher in einem Taktzyklus gelesen und
geschrieben
Dieses Verhalten war für ältere Rechner charakteristisch und stimmt auch
noch heute für zahlreiche (kleine) Mikrocontroller
Aus der Vorlesung TGI wissen wir:
 Es gibt SRAM (speichert mit FFs) und DRAM (speichert mit
Kapazität),
 DRAM wird z.B. mit einem Speichertakt von 133 MHz ausgelesen
(bei DDR3-1333 wie er für PCs üblich ist)
Aktuelle Prozessoren arbeiten aber z.B. mit einer Taktrate von 3 GHz,
selbst Prozessoren in Mobiltelefonen erreichen heutzutage mehr als 1
GHz – Wie passt das zusammen?
SRAM ist zwar schneller als DRAM, aber eben auch sehr viel teurer –
mehrere Gbyte mit SRAM zu realisieren
wäre unerschwinglich
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
2
Prinzip der Lokalität
Programme greifen auf einen “kleinen Adressbereich” zu
Temporäre Lokalität (temporal locality)
 Tendenz zur Wiederverwendung zuvor bereits genutzter
Datenelemente (DE)
 z.B. Instruktionen in einer Schleife, Schleifenvariablen
Räumliche Lokalität (spatial locality)
 Tendenz auf DE's zuzugreifen, die in der Nähe von bereits
zugegriffenen DE liegen.
 z.B. sequenzielle Instruktionen, Felder
Es wäre vorteilhaft, wenn wir die Lokalität ausnutzen könnten, um
schneller auf den Speicher zuzugreifen / Daten verarbeiten zu können
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
3
Der Cache
Cache-Speicher sind Pufferspeicher, die diese Lokalität ausnutzen
Zeitlich / räumlich lokale Daten werden bei Caches im schnellen SRAM
vorgehalten, damit die CPU schnell zugreifen kann, der Cache ist
jedoch sehr viel kleiner als der gesamte Speicher, der weiterhin aus
DRAM besteht
Insgesamt ergibt sich (je nach Anwendung) eine deutlich höhere
Leistung bei nur geringfügig höheren Kosten
Caches bilden nach den Registern die nächste Stufe der
Speicherhierarchie
Wir schauen uns zunächst die Speicherhierarchie genauer an,
dann betrachten wir genauer, wie Caches funktionieren und was es für
Arten von Caches gibt
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
4
Speicherhierarchie
In Rechnern werden sehr unterschiedliche Arten von Speichern eingesetzt, die sich
stark in Preis und Leistung unterscheiden.  Speicherhierarchie
teuer
schnell
billig
langsam groß
klein
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
5
Speicherhierarchie
Register
Register
32
32 Register
Register
128
128 Byte
Byte
<< 1ns
1ns
Level
Level 11 Cache
Cache
8-32
8-32
KByte
KByte
wenige
wenige ns
ns
Level
Level 22 Cache
Cache
einige
einige 100
100
KByte
KByte
einige
einige
10
10 ns
ns
Hauptspeicher
Hauptspeicher
MByte
MByte
bis
bis GByte
GByte
60
60 ns
ns
Flash
Flash Speicher
Speicher
(z.B.
(z.B. USB
USB Sticks)
Sticks)
einige
einige GByte
GByte
250
250 µs
µs
Festplatte
Festplatte
einige
einige 100
100
GByte
GByte
10
10 ms
ms
Static RAM (SRAM)
 0.5ns – 2.5ns
 $2000 – $5000 per GB
Dynamic RAM (DRAM)
 50ns – 70ns
 $20 – $75 per GB
Festplatte
 5ms – 20ms
 $0.20 – $2 per GB
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
6
Speicherhierarchie und das Ausnutzen der Lokalität
Alles wird auf der Festplatte / FlashRAM gespeichert
Kopiere (zugegriffenen) Speicher und benachbarte Elemente von der
Festplatte zu (kleinerem) Dynamic RAM (DRAM) Speicher
 Benötigt periodisches Auffrischen (Millisekunden) aufgrund von
Leckströmen (kl. Energiebedarf auch bei Ruhestrom)
 sehr hohe Datendichte auf einer kleinen Chipfläche
 Vergleichsweise billig
 Hauptspeicher
Kopiere (gerade zugegriffenen) Speicher und benachbarte Elemente
von DRAM zu (noch kleinerem) Static RAM Speicher (SRAM)
 Kein Auffrischen notwendig
 Cache Speicher angeschlossen an die CPU
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
7
Agenda
Cache-Speicher, Grundprinzipien
Cache-Organisation
Kenngrößen von Caches
Schreiben von Daten
Lesen von Daten
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
8
Cache-Speicher, Grundprinzipien
1.
Zugriff auf Cache deutlich schneller als
auf Hauptspeicher
2.
CPU kann auf Daten im Cache sehr
schnell zugreifen
3.
Cache viel kleiner als Hauptspeicher
Cacheblock (Cachezeile, cache line): Einheit für
Kopie
Umfasst i.d.R. mehrere Worte
Woher ist bekannt, ob ein Datum im Cache liegt ?
Wo wird nachgeschaut ?
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
9
Cache-Speicher, Grundprinzipien
Anzahl Zeilen eine Potenz von 2
Untere Adressbits als Speicherort
Speicherort wird durch Adresse bestimmt
Direkte Adressierung: nur eine Wahl
(Speicheraddresse) modulo (#Zeilen im Cache)
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
10
Cache-Speicher, Grundprinzipien
Woher ist bekannt, welcher Block im Cachespeicher abgelegt ist ?
Speichern der Blockadresse und der Daten
Nur die oberen Adressbits werden für Blockadresse benötigt
Wird als TAG bezeichnet
Was ist, wenn am Speicherort keine Daten sind ?
Valid bit: 1 = vorhanden, 0 = nicht vorhanden
 Anfangs 0
Beispiel:
Index
V
000
N
001
N
010
N
 direkt abgebildet
011
N
 Anfangszustand ->
100
N
101
N
110
N
111
N
 8 Zeilen, 1 Wort/Zeile
Tag
Data
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
11
Cache-Beispiel:
Wortadresse
Binäre
Adresse
Treffer
Cache Block
22
10 110
Miss
110
Index
V
000
N
001
N
010
N
011
N
100
N
101
N
110
Y
111
N
Tag
Data
10
Mem[10110]
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
12
Cache-Beispiel:
Wortadresse
Binäre
Adresse
Treffer
Cache Block
26
11 010
Miss
010
Index
V
000
N
001
N
010
Y
011
N
100
N
101
N
110
Y
111
N
Tag
Daten
11
Mem[11010]
10
Mem[10110]
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
13
Cache-Beispiel:
Wortadresse
Binäre
Adresse
Treffer
Cache Block
22
10 110
Hit
110
26
11 010
Hit
010
Index
V
000
N
001
N
010
Y
011
N
100
N
101
N
110
Y
111
N
Tag
Daten
11
Mem[11010]
10
Mem[10110]
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
14
Cache-Beispiel:
Wortadresse
Binäre
Adresse
Treffer
Cache Block
16
10 000
Miss
000
3
00 011
Miss
011
16
10 000
Hit
000
Index
V
Tag
Daten
000
Y
10
Mem[10000]
001
N
010
Y
11
Mem[11010]
011
Y
00
Mem[00011]
100
N
101
N
110
Y
10
Mem[10110]
111
N
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
15
Cache-Beispiel:
Wortadresse
Binäre
Adresse
Treffer
Cache Block
18
10 010
Miss
010
Index
V
Tag
Daten
000
Y
10
Mem[10000]
001
N
010
Y
10
Mem[10010]
011
Y
00
Mem[00011]
100
N
101
N
110
Y
10
Mem[10110]
111
N
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
16
Aufteilung der Adresse (1 Wort pro Block)
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
17
Cache-Beispiel mit grösserem Cacheblock
Cache mit 64 Blöcken und 16 Bytes pro Block
Auf welchen Block die Speicheradresse 1200 abgebildet ?
Blockadresse im Speicher: floor(1200/16) = 75
 floor: Abrundungsfunktion
 floor(x): Die größte ganze Zahl, die kleiner oder gleich x ist:
Blocknummer im Cache: 75 modulo 64 = 11
31
10 9
4 3
0
Tag
Index
Offset
22 bits
6 bits
4 bits
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
18
Aufteilung der Adresse (16 Worte pro Block), 256
Cacheblöcke
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
19
Cache-Speicher, Speicheradressierung
Speicheradressierung:
32 Bit Speicheradresse
(232=4 294 967 296 Adressen)
Speicheradressierung:

Speicherwort: 4 Byte (2w)

Speicherzeile: 16 Worte (2n)

Speicherzeilen: 232-n-w =
67 108 864 Zeilen

Anz. Blöcke im Cache: 1024 (2m)

Adress-Tag: 32-(n+m+w) Bits
Cache speichert:

Adress-Tag

Kopie der Speicherzeile
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
20
Cache-Speicher, Speicheradressierung
Wenn Wort aus Hauptspeicher gelesen werden soll, prüft Cache-Logik, ob
Wort bereits im Cache ist cache hit: Trefferrate = Treffer/Zugriffe (hit rate)
Wenn nicht cache miss, dann muss Wort aus dem HS gelesen werden.
Wird gleichzeitig im Cache gespeichert:
Fehlzugriffsrate = 1- Trefferrate, Fehlerzugriffszeit (miss rate/penalty)
Soll ein (verändertes) Wort geschrieben werden, muss dies sowohl im Cache
als auch im HS geschehen write through.
Andere Strategien schreiben nur in Cache und markieren Eintrag (dirty-bit)
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
21
Cache-Organisation: Lesen
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
22
Cache-Organisation:
Direkt abgebildet (Direct mapped): Ein Datenwort kann genau in einem
Eintrag abgelegt sein.
Voll assoziativ (Fully associative ): Ein Datenwort kann in einem
beliebigen Cache-Eintrag abgelegt sein.
Satz-assoziativ (Set associative): Ein Datenwort kann in wenigen
Cache-Einträgen (typischerweise 2 bis 8) abgelegt sein.
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
23
Assoziativer Cache im Vergleich
Adresse 12:
12 mod 8 = 4
Adresse 12:
12 mod 4 = 0
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
24
Direkt abbildender Cache
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
25
Voll assoziativer Cache
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
26
N-fach satzassoziativer Cache
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
27
Assoziativer Cache: Ein Cache mit 8 Daten
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
28
Beispiel: Kleiner Cache aus vier 1-Wort Blöcken
Direkt abgebildet
Cacheindex = Blockadresse modulo 4
5 Fehlzugriffe
Blockadresse
Cache Index
Treffer
Cache Inhalt nach Zugriff
Index 0
Index 1
Index 2
0
0
nein
Mem[0]
8
0
nein
Mem[8]
0
0
nein
Mem[0]
6
2
nein
Mem[0]
Mem[6]
8
0
nein
Mem[8]
Mem[6]
Index 3
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
29
Beispiel: Kleiner Cache aus vier 1-Wort Blöcken
2-fach satzassoziativ
Cacheindex = Blockadresse modulo 2
4 Fehlzugriffe
Blockadresse
Cache
Index
Treffer
Cache Inhalt nach Zugriff
Satz 0
Satz 0
0
0
nein
Mem[0]
8
0
nein
Mem[0]
Mem[8]
0
0
ja
Mem[0]
Mem[8]
6
0
nein
Mem[0]
Mem[6]
8
0
nein
Mem[8]
Mem[6]
Satz 1
Satz 1
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
30
Beispiel: Kleiner Cache aus vier 1-Wort Blöcken
vollassoziativ
Cacheindex = Blockadresse
3 Fehlzugriffe
Blockadresse
Treffer
Cache Inhalt nach Zugriff
Satz 0
Satz 1
Satz 2
0
nein
Mem[0]
8
nein
Mem[0]
Mem[8]
0
ja
Mem[0]
Mem[8]
6
nein
Mem[0]
Mem[8]
Mem[6]
8
ja
Mem[0]
Mem[8]
Mem[6]
Satz 3
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
31
Grad der Assoziativität ?
Höhere Assoziativität verringert die Fehlzugriffsrate
Simulation eines Datencaches mith 64kB, 16-Worte pro Block, SPEC2000
1-fach: 10.3%
2-fach: 8.6%
4-fach: 8.3%
8-fach: 8.1%
Gesamtgrösse des Caches ist abhängig von der gewählten Organisation bei gleicher
Grösse für die Daten (Beispiel)
Simulation http://www.ecs.umass.edu/ece/koren/architecture/
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
32
Betrachtung der Blockgrösse
Grössere Blöcke reduzieren die Fehlzugriffsrate
 aufgrund räumlicher Lokalität
 Fehlzugriffsrate steigt, falls Blockgrosse zu einem wesentlichen Teil
der Cachegrösse wird
 Wenige Blöcke im Cache, grösserer Wettbewerb um Blöcke
Fehlzugriffsaufwand steigt i.d.R. mit grösseren Blöcken
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
33
Cache Kenngrößen
Liegt ein gesuchtes Wort im Cache, erhält man Treffer (hit).
Trefferrate a in Prozent (hit rate).
Liegt gesuchtes Wort nicht im Cache (Fehlzugriff, miss), muss es aus dem
Speicher gelesen werden:
Fehlzugriffsrate (1-a) in Prozent (miss rate).
Zugriffszeit bei Treffer (hit time) ist die Zeit für den Zugriff auf das Element plus
die Zeit um festzustellen, ob der Zugriff ein Treffer (oder ein Fehlzugriff) ist.
Mit Zugriffszeit (hit time) tc eines Wortes im Cache und der Zugriffszeit tm eines
Wortes im Hauptspeicher ist die mittlere Zugriffszeit ta auf ein Wort:
ta = a ∙ tc + (1-a) ∙ tm
Fehlzugriffsaufwand (miss penalty) ist die Zeit, die benötigt wird, um einen
Block von einer unteren Ebene in eine höhere Ebene der Speicherhierarchie zu
laden. Diese beinhaltet die Zeit für die Übertragung des Blocks in die höhere
Ebene, auf der der Fehlzugriff stattgefunden hat, sowie die Zeit für den Zugriff auf
Vorlesung Rechnerarchitektur
den Block durch den Prozessor
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
34
Messen der Cache-Leistung
Komponenten der CPU Zeit
CPU-Ausführungstaktzyklen
 Beinhalten Kosten für Cachetreffer
Speicherstillstandszyklen
 Hauptsächlich aufrund von Cache-Fehlzugriffen
Mit vereinfachenden Annahmen: (weiteres Beispiel)
CPU-Zeit = (CPU-Ausführungszyklen + Speicherstillstandszyklen) x
Taktzykluszeit
Speicherstillstandszyklen = Lesestillstandszyklen + Schreibstillstandszyklen
Lesestillstandszyklen = Leseoperationen / Programm x Lesefehlzugriffsrate x
Lesefehlzugriffsaufwand
Schreibstillstandszyklen = Schreiboperationen / Programm x Schreibfehlzugriffsrate x
Schreibfehlzugriffsaufwand
+ Schreibpufferstillstände
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
35
Cache – Eigenschaften und Ersetzungsstrategien
Ist ein Wort nicht im Cache vorhanden, muss aus Speicher in den Cache geladen
werden.
Bei Direkt abgebildetem Cache ist Zuordnung der Adresse des Wortes zu einer
Cache-Zeile eindeutig.
Beim Assoziativen Cache sind mehrere Strategien möglich:
 Wähle Zeile, auf die am längsten nicht mehr zugegriffen wurde (LRU)
− Einfach für 2-fach, vertretbar für 4-fach, zu aufwändig für höhere
Assoziativität
 Wähle zufällig eine Zeile aus
− Ähnliche Trefferraten wie LRU bei hoher Assoziativität
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
36
Schreiben von Daten
Beim Schreiben von Daten muss sichergestellt sein, dass Daten in Cache und
Hauptspeicher konsistent bleiben.
Mehrere Strategien:
 No-Write: Wort nur in Hauptspeicher (HS) schreiben, nicht in Cache. Zugehörige
Zeile im Cache als ungültig markieren.
➔ langsam, Schreiben in HS, ggf. Lesen aus HS
 Write-Through: Cache- und Hauptspeicher beide schreiben. Cache-Zeile bleibt
gültig. Übliches Verfahren.
➔ langsame Schreibzugriffe.
 Write-Back: Nur Cache-Speicher schreiben, aber Cache-Zeile als modifiziert
(„Dirty“) markieren. Vor Überschreiben der Zeile muss der Inhalt in Hauptspeicher
gesichert werden. Dirty-Bit ist der Cache-Zeile angefügt, wird beim Laden einer
Zeile aus dem HS gelöscht, beim Schreiben eines Wortes in der Cache-Zeile
Vorlesung Rechnerarchitektur
gesetzt.
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
37
Lesen von Daten
Zwei prinzipielle Lese- und Füllstrategien
on demand, demand fetching
Beim ersten Lesen einer Information aus dem Hauptspeicher wird die gesamte
Zeile auch in den Cache übertragen. Benötigte Blöcke, die noch nicht im Cache
liegen, werden nachgeladen. Diese Strategie wird von jedem Cache verwendet
Prädiktiv, prefetch
Es wird versucht, vorherzusagen, welche Speicherzeilen zukünftig gebraucht
werden und diese während Leerlaufphasen schon in den Cache vorgeladen.
Ein zweiter Programmzähler (remote PC) im Cache wird dazu verwendet, den
künftigen Programmverlauf vorherzubestimmen und entsprechende Blöcke
vorzuladen.
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
38
Cache Speicher in der Harvard Architektur
Kopien von
Befehlen
Cache
Adresse
Befehle
Befehle
Adresse
Befehle
Register
Daten
Prozessor
Adresse
Daten
Kopien von
Daten
Adresse
Daten
Cache
Speicher
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
39
Cache-Organisation
Level-1:
16 … 64 kB
Level-2:
512 kB … 1
MB
Level-3:
~ MB SRAM
Um Rechner weiter zu optimieren werden mehrere Cache
Ebenen eingefügt.
kleiner, schneller, teurer ↔ größer, langsamer, billiger
Split-Cache, verbessert Bandbreite und Latenz:
Level-1: Cache für Instruktionen und Daten
Level-2: vereint (unified) für Instruktionen und Daten
Level-3: auf Karten-Ebene (Static RAM)
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
40
Multilevel Cache Auslegung – Beispiel (1):
Gegeben
 CPU Verarbeitung Clocks per Instruktion (CPI) = 1, Taktrate = 4GHz
 Fehlzugriffsrate für Instruktionen = 2%
 Zugriffszeit auf Hauptspeicher = 100ns
Mit nur einem (Primär-)Cache:
 Fehlerzugriffsaufwand = 100ns/0.25ns = 400 Takte
 Effektive CPI = 1 + 0.02 × 400 = 9
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
41
Multilevel Cache Auslegung – Beispiel (2):
L-1 und L-2 Cache (L1: Primärcache, L2: Sekundärcache)
L-2 Cache:
 Zugriffszeit 5ns
 Globale Fehlzugriffsrate zum Hauptspeicher = 0.5%
Fehlzugriff auf L-1 Cache mit L-2 Treffer
 Fehlerzugriffsaufwand = 5ns/0.25ns = 20 Takte
Fehlzugriff auf L-1 Cache und L-2 Cache
 Zusätzl. Fehlerzugriffsaufwand = 400 Takte
CPI = 1 + 0.02 × 20 + 0.005 × 400 = 3.4
Performanzverhältnis = 9/3.4 = 2.6
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
42
Speichermanagement
Kopplung von CPU- und Speicheradresse
Virtuelle und physikalische Adressen
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
43
Speichermanagement
Virtuelle und physikalische Adressen
 Benutzung der Hauptspeichers als Cache für die Festplatte
Kopplung von CPU- und Speicheradresse
Bisher sind wir davon ausgegangen, dass die intern vom Prozessor verwendete
Adresse identisch mit der externen Speicheradresse ist.
Das aber hat Nachteile:
Anpassung der Speicherbelegung eines Programms an die Rechnerkonfiguration
notwendig.
Bei Multitasking Zuweisung eines speziellen Speicherbereichs für jeden Task
nötig.
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
44
Stack-, Heap-, Daten- und Code-Bereich
Größe von Daten- und Code-Bereich
wird beim Übersetzen vom Compiler
ermittelt (feste Größe für ein
Programm).
Stack und Heap besitzen
dynamische Größen, die vom
Programmablauf abhängen.
Stack: z.B. Lokale Variable,
Heap: dynamische Objekte
Der freie Bereich zwischen Stack und Heap sollte immer möglichst groß gewählt
werden um Speicherunterlauf zu vermeiden.
Mögliche Größe hängt aber vom Rechner (Ressourcen) ab.
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
45
Speicherzuweisung bei Multitasking
Bei Multitasking muss beim Start
einer Task ein freier Speicherbereich gesucht und die Task an
diesen Speicherbereich durch
Linken angepasst werden.
Jede Task benötigt einen eigenen
Ausschnitt aus dem gesamten
Adressraum, der nicht von
anderen Tasks verwendet werden
darf.
Wenn ein Task terminiert, entsteht eine Lücke im Speicher.
Passt ein neuer Task nicht genau in diese Lücke, entstehen nach und nach
ungenutzte Speicherfragmente.
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
46
Kopplung CPU- und Speicheradresse
Eine feste Kopplung von CPU-interner Adresse und externer
Speicheradresse verhindert flexible und dynamische Nutzung des
Hauptspeichers.
 Dies ist nur bei Embedded Systemen akzeptabel.
In allen anderen Systemen, welche Flexibilität erfordern, ist die
Entkopplung interner und externer Adressen notwendig, z.B.
Großrechner, Workstations, PC‘s etc.
Entkopplung der CPU-internen (virtuellen) Adresse und der
Speicheradresse (physikalische Adresse) schafft die notwendige
Flexibilität.
Die Umsetzung erfolgt durch eine Hardwareeinheit, diese nennt man
Vorlesung Rechnerarchitektur
Memory Management Unit (MMU)
oder Paging Unit
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
47
virtuelle und physikalische Adresse
Der virtuelle und der
physikalische Speicherbereich
wird in Speicherseiten fester
Größe aufgeteilt ➔ pages
(Kacheln)
Übliche Seitengrößen sind 4 kBytes oder 8 kBytes
(2er Potenzen), aber auch deutlich größere Seiten werden verwendet.
Virtuelle Speicherseiten werden durch die MMU physikalischen Seiten
zugeordnet.
Ist bei Zugriff auf eine virtuelle Seite keine physikalische zugeordnet, liegt ein
Seitenfehler (page fault) vor. Die MMU erzeugt dann in der CPU einen
Interrupt, die Ausnahmebehandlung lädt die fehlende Seite.
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
48
virtuelle Adressierung durch MMU
Physikalischer Adressraum: 15 Bit
Beispiel: eine 32 Bit-Adresse wird
zerlegt in 20 Bit Seiten-Nummer und
12 Bit Offset.
Der Offset ist die Adresse des
gesuchten Byte in der 4096 Byte (212
Bit) großen Seite.
Mit der Seitennummer wird in der
Tabelle die physikalische
Speicherseite gesucht.
Physik. Speicherseite + Offset =
Adresse des Operanden im
Speicher.
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
49
virtuelle Adressierung durch MMU (2)
Die Seitentabelle liegt im physikalischen Speicher, ihre Anfangsadresse ist
im Register Tabellenbasis abgelegt.
Index auf Seitentabelle = Tabellenbasis + Tabellenindex
Adresse Operand = physik. Adresse der Seite + Offset
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
50
Beschleunigung der Adressumsetzung
Sehr grosse Seitentabellen im Hauptspeicher (Beispiel)
Zugriff auf Seitentabelle im physikalischen Speicher und anschließender Zugriff
auf die physikalische Speicherzelle:
Zweifacher Zugriff auf Speicher
langsam!
Lösung: Hardware-Erweiterung
Assoziativspeicher, in dem Paare aus Tabellenindex und zugehöriger
Basisadresse der physikalischen Speicherseite aus vorangegangenen
Zugriffen gespeichert sind.
Translation Lookaside Buffer (TLB)
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
51
Translation-Lookaside-Buffer (TLB)
Virtuelle Adresse wird an TLB angelegt:
Für Tabellenindex ist Eintrag vorhanden ➔ Hit.
Kein Eintrag: Basisadresse für physik. Speicherseite wird aus Seitentabelle
beschafft und im TLB eingetragen.
In beiden Fällen: Physik. Adresse = Basisadresse + Offset
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
52
Translation-Lookaside-Buffer (TLB) (2)
TLB enthält aktuellen Tabellenindex und Seitenbasis.
Fehlt der Eintrag, erfolgt Zugriff auf Seitentabelle über
Hauptspeicher.
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
53
Seitentabelle ohne Translation-Lookaside-Buffer
(TLB)
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
54
Seitentabelle mit Translation-Lookaside-Buffer (TLB)
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
55
Virtuelle Adressierung (Zusammenf.)

Virtuelle Adressierung erlaubt, einen großen Adressraum mit kleinerem
physikalischem Speicher flexibel zu realisieren.

Nur ein Teil der virtuellen Seiten wird im physikalischen Speicher gehalten.

Nicht benötigte Seiten werden auf Festplatte ausgelagert (Page-, Swap-Datei).
Ersetzung erfolgt nach Least Recently Used, FiFo oder anderen Mechanismen.

Benötigte aber nicht vorhandene Seiten werden von der Festplatte nachgeladen
(Paging) und ersetzen „ältere“ Seiten.
Vorlesung Rechnerarchitektur
© Gerhard Raffius, WS 2007-08, h_da - Fachbereich Informatik
56