Rec hnerarc hitektur I Speic herarc hitektur 9

Werbung
e
e
I
TeI rgs
=1
D
C
D
C
=
9.1 Speicher übersicht
T
9 Speicherarchitektur
I
TeI rgs
=1
D
C
D
C
=
Inhalt
T
Inhalt
Anforderungen an Speicher
Punkt
9
9.1
9.2
9.3
9.4
9.5
9.6
Persistente Speicherung:
Die Speicherzustände sind zeitlich stabil und reproduzierbar.
Die Speicherzustände bleiben auch ohne Energieversorgung erhalten.
Veränderbarkeit und Lesbarkeit:
Der Speicherzustand ist zu jedem beliebigen Zeitpunkt lesbar und je nach
Anwendung ein- oder mehrmalig oder beliebig oft ver änderbar.
Auswählbarkeit:
Die Speicherzustände sind einzeln auswählbar, ansprechbar und eindeutig
unterscheidbar.
Inhalt
Speicherarchitektur
Speicherübersicht
Speicherhierarchie
Registersatz
Cache-Speicher
Hauptspeicher
Virtueller Speicher
Folie
2
2
8
15
25
??
??
Bündelung:
Mehrere Speicherzustände sind zu einer Einheit, einem Block
zusammengefasst und nur gemeinsam ansprechbar, lesbar oder änderbar.
RA I
e
Rechnerarchitektur I
3/ 97
D
C
D
C
=
Rechnerarchitektur I
1/ 97
I
TeI rgs
=1
RA I
9.1 Speicher übersicht
T
9 Speicherarchitektur
9 Speicherarchitektur
=1
D
C
I
2/ 97
e
Rechnerarchitektur I
C
RA I
D
Unterteilung nach physikalischer Haupteigenschaft (speichern, lesen, schreiben)
T
- elektrostatisch
- elektrodynamisch
- ferromagnetisch
- ferroelektrisch
=
Halbleiter
Speicherprinzip:
TeI
Ferritkern
Magnetblasen
Magnettrommel
Magnetband
Magnetplatte
Magnetkarte
Rechnerarchitektur I
Speicherarchitektur
elektronisch
R.G. Spallek
Mikrofilm
CD-ROM
DVD
MO-Disk
Holographie
magnetisch
Rechnerarchitektur I
Nockenwalze
Lochkarte
Lochstreifen
optisch
Dresden, 2004
RA I
mechanisch
Technische Universität Dresden
Institut für Technische Informatik
Speicher
[email protected]
9.1 Speicherübersicht
e
e
I
TeI rgs
=1
D
C
D
C
=
9.1 Speicher übersicht
T
I
TeI rgs
=1
D
C
D
C
=
9 Speicherarchitektur
T
Halbleiterspeicher
Zugriffsart
sequentiell
wahlfrei (RAM)
inhaltsbezogen
SAM
(FIFO - LIFO)
Änderbarkeit
CAM
(Cache)
beliebig oft lesbar
programmierbar
beliebig oft lesbar
nicht änderbar
beliebig oft lesbar
und schreibbar
PROM (RMM)
ROM
MROM
RAM (RWM)
Löschbarkeit
Strahlung
EPROM
elektrisch
EEPROM Flash EEPROM
Speicherzelle:
Zusammenfassung von Speicherelementen, kleinste ansprechbare Einheit.
Zugriffsbreite:
paralleler Zugriff auf mehrere Speicherzellen gleichzeitig (Bit, Byte, Wort, ...).
Speicherwort:
Feste Anzahl von Speicherzellen, die gleichzeitig als Block aus dem Speicher
gelesen bzw. in ihn geschrieben werden kann (typisch 1 Wort).
non-volatile
statisch
dynamisch
NVRAM
SRAM
DRAM
Speicherkapazität:
Anzahl der effektiv nutzbaren Speicherzellen.
Ansteuerung:
taktsynchrone oder asynchrone Ansteuerung des Speichers.
Alle ROM-Typen sind nonvolatile
RA I
e
Rechnerarchitektur I
=1
D
C
D
C
=
7/ 97
T
RA I
e
I
TeI rgs
9.1 Speicher übersicht
9 Speicherarchitektur
Rechnerarchitektur I
=1
D
C
D
C
=
T
9.1 Speicher übersicht
9 Speicherarchitektur
Eigenschaften von Speichern
Refreshzeit(Refresh Time):
Zeit zum Auffrischen des Speichers (nach einem Zugriff bzw. zyklisch)
Zugriffszeit (Access Time):
minimale Zeit (Latenz) für einen Lese-/Schreibzugriff (Adresse → Datum)
Zykluszeit (Cycle Time):
minimale Zeit zwischen zwei aufeinanderfolgenden Lese-/Schreibzugriffen
(einschließlich Auffrischen)
Auffrischen (Refresh):
Bei Speichern mit destruktivem Lesen bzw. bei dynamischen Speichern muss
der Speicherinhalt nach dem Lesen bzw. zyklisch wieder aufgefrischt werden.
Speicherbandbreite:
maximale Datenmenge pro Zeiteinheit bzgl. der Lese-/Schreibzugriffe
Rechnerarchitektur I
5/ 97
I
TeI rgs
Zeitverhalten von Speichern
RA I
9 Speicherarchitektur
Speicherelement:
realisiert (physikalisch) die Speicherzustände (meist binär).
Permanenz
blockweise
9.1 Speicher übersicht
Komponenten von Speichern
6/ 97
Zugriffsart:
sequentiell, strukturiert
SAM (Serial Adressable Memory)
inhaltsbezogen, assoziativ
CAM (Content Adressable Memory)
wahlfrei adressierbar
RAM (Random Access Memory)
Änderbarkeit:
fester Inhalt, nur lesbar
ROM (Read Only Memory)
einmalig programmierbar, nur lesbar
PROM (Programmable ROM)
meist lesbar, mehrmalig schreibbar
RMM (Read Mostly Memory)
mehrmalig programmierbar, löschbar, nur lesbar EPROM (Erasable PROM)
beliebig oft les- und schreibbar
RWM (Read Write Memory)
Persistenz, Zeitverhalten:
statisch, flüchtig
SRAM (Static RAM)
dynamisch, flüchtig
DRAM (Dynamic RAM)
auch bei Spannungswegfall nicht flüchtig
NVRAM (Non-volatile RAM)
RA I
Rechnerarchitektur I
4/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
I
TeI rgs
=1
D
C
D
C
=
Speicherorganisation
T
Konfliktlösung: Speicherkapazität ⇔ Zugriffszeit
Technisch/Technologisches Problem
Speicherkapazität ⇔ Speicherzugriffszeit
Lösung unter Ausnutzung des Lokalitätsprinzips:
• Häufig benötigte Daten werden im nahen kleinen und schnellen Speicher
Speicher mit kurzen Zugriffszeiten lassen sich nur mit relativ geringer Kapazit ät
und mit hohem Kostenaufwand realisieren.
gehalten (als Kopien der Originaldaten).
• Seltener benötigte Daten werden im fernen großen, jedoch langsamen
Dagegen lassen sich Speicher mit großer Kapazit ät nur mit relativ langen
Zugriffszeiten kostengünstig realisieren.
Speicher gehalten.
• Reicht die Kapazität des kleinen schnellen Speichers nicht mehr aus, so
Mit der Entfernung von der CPU wachsen die Zugriffszeit und die Kapazit ät der
Speicher gleichermaßen, die Realisierungskosten pro Byte sinken dagegen.
werden nicht mehr benötigte Daten in den großen langsamen Speicher
ausgelagert und die neu benötigten Daten aus diesem nachgeladen.
Zielstellung:
⇒ Aufbau einer Speicherhierarchie, Bildung von Hierarchieebenen
• Erhöhung der Speicherbandbreite und Verringerung der Zugriffszeiten bei
Blockprinzip:
Der Austausch der Daten zwischen den einzelnen Hierachieebenen erfolgt nicht
einzeln, sondern zusammengefaßt zu Blöcken (effektiverer Datentransfer).
RA I
e
Rechnerarchitektur I
11/ 97
=1
D
C
D
C
=
gleichgroßer oder größerer Speicherkapazität (Realisierungsfrage).
• Minimierung der Speicherkosten/Byte Speicherkapazit ät (Kostenfrage).
RA I
e
I
TeI rgs
Speicherorganisation
T
Speicherorganisation
T
Rechnerarchitektur I
9/ 97
I
TeI rgs
=1
D
C
D
C
=
9.2 Speicherhierarchie
T
Lokalitätsprinzip des Speichers
9 Speicherarchitektur
9.2 Speicherhierarchie
Zeitliche Lokalität:
Nach einem Speicherzugriff ist die Wahrscheinlichkeit hoch, daß in einem der
nächsten Befehle ein erneuter Zugriff den selben Speicherplatz erfolgt.
Örtliche Lokalität:
Nach einem Speicherzugriff ist die Wahrscheinlichkeit hoch, daß in einem der
nächsten Befehle ein Zugriff auf einen benachbarten Speicherplatz erfolgt.
Kapazität (Bytes)
Zugriffszeit
CPU
Ursachen zum Lokalitätsprinzip:
Befehle: Sequentieller Befehlsstrom, Programmschleifen, Unterprogrammen,
Abspeicherung in Bibliotheken . . .
Daten: Zusammenhängende Datenstrukturen, Speicherzuteilung,
Variablenanordnung durch Compiler . . .
Register
256 . . . 4K
0.3ns . . . 1ns
Caches
128K . . . 4M
1ns . . . 5ns
Primärspeicher
(Hauptspeicher)
128M . . . 4G
50ns . . . 70ns
Sekundärspeicher
(Plattenspeicher)
10G . . . 500G
5ns . . . 12ms
50G . . .
60s . . .
Archivspeicher
(CD, MO, DVD, Platten, Bänder)
90/10 Regel beim Speicher
90% aller Speicherzugriffe erfolgen auf nur 10% der Speicherplätze.
RA I
Rechnerarchitektur I
10/ 97
RA I
Rechnerarchitektur I
8/ 97
e
=1
D
C
D
C
=
e
I
TeI rgs
T
9.3 Registersatz
I
TeI rgs
=1
D
C
D
C
=
9 Speicherarchitektur
9.3 Registersatz
Grundbegriffe der Speicherhierarchie
Register:
Block: Kleinster zusammenhängender Bereich, der zwischen den Hierarchieebenen transferiert, ausgetauscht wird (nicht notwendig gleich groß).
Blockrahmen (Frame): Bereich der höheren Hierarchieebene in den ein Block
eingelagert, transferiert werden kann.
Blocktransfer: Blockaustausch zwischen zwei Hierarchieebenen (Burst, . . . ).
Treffer (Hit): Die gesuchten Daten befinden sich in einem Blockrahmen der
höheren Hierarchieebene und sind aktuell.
Trefferrate (Hit Rate): Relative Trefferanzahl bezogen auf die Gesamtzugriffe.
Fehlzugriff (Miss): Die gesuchten Daten wurden nicht in einem Blockrahmen
der höheren Hierarchieebene gefunden bzw. sind nicht aktuell, kein Treffer.
Fehlerrate (Miss Rate): Relative Fehleranzahl (= 1 - Trefferrate).
Fehlerzuschlag (Miss Penalty): Zeit, die bei einem Fehlzugriff zus ätzlich bis
zur Erlangung der Daten benötigt wird.
SRAM-Speicher (Flipflop-Kette) innerhalb der CPU (mit CPU-Takt getaktet),
Nutzung als Universalregister oder als Spezialregister (Registertypen, . . . ),
Sondrefunktionen, auch verteilt innerhalb der CPU (Hilfsregister, . . . ),
Realisierung in verschiedenen Datenformaten (Halbwort, Word, . . . ),
Nutzung zur Rechnersteuerung (Befehlszähler, Statusregister, . . . ).
•
•
•
•
•
Registersatz:
fest organisierter Satz von Registern innerhalb der CPU (8, 16, 32, . . . ),
Operandenspeicherung, Registerspeicher der ALU (Daten, Adressen, . . . ),
Register werden nicht adressiert, sondern direkt ausgew ählt (Multiplexer),
werden als Multiport-RAM ausgeführt (z.B. 2 Leseprots + 1 Schreibport, . . . ),
aufwendige Hardware-Realisierung (Registerfenster, Schattenregister, . . . ).
•
•
•
•
•
RA I
e
Rechnerarchitektur I
15/ 97
=1
D
C
D
C
=
RA I
e
I
TeI rgs
Speicherorganisation
T
Speicherorganisation
T
Rechnerarchitektur I
13/ 97
I
TeI rgs
=1
D
C
D
C
=
Speicherorganisation
T
Probleme der Speicherhierarchie
Speicherhierarchie – Blockprinzip
Abbildungsproblem:
Wie erfolgt die Abbildung der Blöcke einer Ebene auf die der nächst höheren?
Identifikationsproblem:
Wie werden die gesuchten Daten (Blöcke) lokalisiert und identifiziert?
Ersetzungsproblem:
Welcher Block wird beim Nachladen eines neuen ersetzt und wie?
Aktualisierungsproblem:
Wann und wie erfolgt die Aktualisierung der Blöcke in den einzelnen Ebenen
bei der Veränderung von Daten in einem Block?
Konsistenzproblem (Kohärenzproblem):
Die Daten der Blöcke einer Hierarchieebene sind konsistent in den Bl öcken
aller niederen Ebenen enthalten (Datenkonsistenz über alle Ebenen – mit
Ausnahme des Registersatzes) ⇒ Aktualisierungsproblem.
Hierarchieebenen
RA I
Rechnerarchitektur I
14/ 97
CPU
Cache
HS
HD
Registersatz
Pufferspeicher
Primärspeicher
Sekundärspeicher
Block
Blockrahmen
Blocktransfer
Kapazität / Zugriffszeit
Speicherbandbreite
Unterschiedliche Blockgrößen zwischen den Hierarchieebenen sind möglich.
RA I
Rechnerarchitektur I
12/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
9.3 Registersatz
T
I
TeI rgs
=1
D
C
D
C
=
9 Speicherarchitektur
9.3 Registersatz
T
Registerfenster – Fenster fester Grösse
9 Speicherarchitektur
Die primären Register des Pentium II
allgemeine Datenregister
Fenster 3
Fenster 2
Fenster 0
Fenster 1
Fenster 0
globale Register
Fenster überlappend
RA I
e
D
C
T
EAX
Kodesegment
CS
Basisregister
BH
BL
EBX
Stapelsegment
SS
Zählregister
CH
CL
ECX
Datensegment
DS
Datenregister
DH
DL
EDX
Extrasegment
ES
freie Verf ¨ugung
FS
freie Verf ¨ugung
GS
16 15
ESI
Zielindex
EDI
Basiszeiger
EBP
31
19/ 97
D
C
0
Befehlszeiger
EIP
Statusregister
31
EFLAGS
0
17/ 97
I
D
C
=
15
Rechnerarchitektur I
TeI rgs
=1
ESP
0
RA I
e
9 Speicherarchitektur
T
9.3 Registersatz
9 Speicherarchitektur
Übersicht Registersatz
Globale, lokale Register (global, local register):
Unterteilung des Registersatzes in globale und lokale Register (z.B.
Variablenübergabe bei Unterprogrammtechnik).
Registerfenster (register window):
Unterteilung eines großen Registersatzes durch Registerfenster (kostante,
variable Fenstergröße, überlappende, disjunkte Fenster). Lokalisierung des
aktuellen Fensters durch Fensterzeiger (Current Window Pointer, CW P), der
im Statusregister gespeichert wird (Reduktion des Registeradreßraumes).
Schattenregister (shadow register):
Nutzung eines weiteren Registersatzes im Hintergrund (z.B. für spekulative
Befehlsabarbeitung von Programmverzweigungen).
Registerumbenennung (register renaming):
Umbenennen von Registern ohne den Inhalt zu transportieren (z.B. bei
Ausführungs- oder Datenkonflikten in der Verarbeitungseinheit).
Rechnerarchitektur I
0
Quellindex
Erweiterungen des Registersatzes
RA I
8 7
Stapelzeiger
Fenster disjunkt
9.3 Registersatz
AL
Zeiger- und Indexregister
I
D
C
=
AH
31
globale Register
Rechnerarchitektur I
TeI rgs
=1
lokale Register
Fenster 1
lokale Register
Fenster 2
Segmentregister
Akkumulator
18/ 97
Registersatz
Datenregister (data register)
Ganzzahlenregister (integer register)
Gleitkommaregister (floating point register)
Adreßregister (address register)
Basisregister (pointer register)
Indexregister (displacement register)
Segmentregister (segment register)
Spezialregister (special purpose register)
Programmzähler (programm counter, PC)
Folgebefehl (instruction pointer, IP)
Statusregister (status register)
Basisregister (vector base register)
Stackregister (stack pointer)
Hilfsregister (auxiliary register)
RA I
Rechnerarchitektur I
Bei RISC zusammengefaßt
zum Universal-Registersatz
(general purpose register)
⇒ GPR-Architektur
16/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
I
TeI rgs
=1
D
C
D
C
=
Registerspeicher
T
Stapelspeicher, Stack, Kellerspeicher
Die allgemeinen Register der UltraSPARC II V9
• SAM-Speicher (Serial Addressable Memory) nach dem LIFO-Prinzip (Last In
First Out). Als Hardware-Stack innerhalb der CPU oder als Software-Stack im
Hauptspeicher realisierbar. Des Stack, Stapel, w ächst immer nach unten.
Der Stapelzeiger (Stack Pointer, SP) zeigt immer auf das Stapelende, letzte
aktuelle Daten. Die Daten im Stack können nicht direkt adressiert werden.
PUSH – Dekrementieren (erniedrigen) des Stack Pointers und Speichern der
Daten auf den Stack (pre decrement).
POP – Lesen der Daten vom Stack und anschließendes Inkrementieren
(erhöhen) des Stack Pointers (post increment).
Nutzung des Stack zur effektiven Abspeicherung bzw. Zwischenspeicherung
von Daten: Prozessorstatus, Unterprogrammparameter, rekursive
Programme, Unterbrechungsroutinen, . . .
Stack-Typen: system stack, data stack, user stack, programm stack, . . .
•
•
•
•
•
RA I
e
Rechnerarchitektur I
23/ 97
=1
D
C
D
C
=
RA I
e
I
TeI rgs
Registerspeicher
T
Registerspeicher
T
Register
Andere Bezeichnung
Funktion
R0
G0
Fest auf 0 verdrahtet; Speicheroperationen darauf werden ignoriert.
R1 - R7
G1 - G7
Hält globale Variablen
R8 - R13
O0 - O5
Hält Parameter f ¨ur die
aufzurufende Prozedur
R14
SP
Stapelzeiger
R15
O7
Arbeitsregister
R16 - R23
L0 - L7
Hält lokale Variablen f ¨ur
die laufende Prozedur
R24 - R29
I0 - I5
Hält ankommende Parameter
R30
FP
Zeiger auf die Basis des laufenden
Stapelrahmens
R31
I7
Hält die R ¨uckgabeadresse f ¨ur
die laufende Prozedur
Rechnerarchitektur I
21/ 97
I
TeI rgs
=1
D
C
D
C
=
9.3 Registersatz
T
Registerfenster mit konstanter Größe (UltraSPARC II V9)
9 Speicherarchitektur
Registerfenster – Fenster variabler Grösse
R31
in
lokale Register
R24
R23
local
Fenster 2
R31
out
R24
R23
local
R16
R15
Current Window Pointer (CW P)
R8
aktuelles
in
global
Fenster 0
local
out
globale Register
Registerfenster
RA I
R24
R23
R16
R15
R7
R0
Fenster 1
R31
out
Rechnerarchitektur I
i-2
i
folgendes
i+1
Fenster 0
globale Register
R8
i-1
Fenster 1
Fenster überlappend
i+2
22/ 97
RA I
Rechnerarchitektur I
lokale Register
R8
letztes
Fenster 2
in
lokale Register
R16
R15
globale Register
Fenster disjunkt
20/ 97
e
=1
D
C
D
C
=
e
I
TeI rgs
T
9.4 Cache-Speicher
I
TeI rgs
=1
D
C
D
C
=
9 Speicherarchitektur
9.4 Cache-Speicher
T
Cache-Eigenschaften
• CAM-Speicher (Content Addressable Memory) als Pufferspeicher zur
Struktur:
Ein Cache-Eintrag besteht aus dem Datenblock (Cache-Line, ⇒ Blockprinzip)
und dessen Adresse, Adressteil als Tag (Etikett) sowie Statusinformationen.
Sichtbarkeit:
Transparent (nicht sichtbar im Befehlssatz) oder nicht transparent (sichtbar,
wird durch den Befehlssatz gesteuert, z.B. Laden, Invalidieren, . . . ).
Adressraum:
Realer Adressraum (realer Cache) oder virtueller (virtueller Cache).
Architektur:
Befehle und Daten gemeinsam (Unified Cache) oder getrennt (Split Cache).
Organisation:
Lösung der Probleme der Speicherhierarchie: Abbildung, Identifikation,
Ersetzung, Aktualisierung, Konsistenz, Kohärenz.
RA I
e
Rechnerarchitektur I
=1
D
C
D
C
=
27/ 97
T
9.4 Cache-Speicher
9 Speicherarchitektur
Überbrückung bzw. Anpassung stark unterschiedlicher Zugriffszeiten (z.B.
Prozessorregister – Hauptspeicher – Festplatte).
Der Cache arbeitet inhaltsorientiert, ist nicht direkt adressierbar. Der
Vergleich mit dem Inhalt kann auch maskiert erfolgen (Ausblenden einzelner
Bits). Ein Cache-Zugriff ist nicht immer eindeutig.
Im Cache werden nur Kopien der aktuellen Speicherinhalte der darunter
liegenden Hierarchieebene abgebildet. Die aktuellen Daten einer
Hierarchieebene befinden sich auch immer in allen darunter liegenden.
Zur Überbrückung sehr großer Differenzen in der Zugriffszeit bzw. im
Datendurchsatz können auch mehrere Caches hintereinander geschaltet
werden (Primary Cache, Secondary Cache, . . . ).
Der Cache-Speicher kann sich mit auf dem CPU-Chip befinden (On-Chip
Cache) oder extern (Off-Chip Cache).
•
•
•
•
RA I
e
I
TeI rgs
Rechnerarchitektur I
=1
D
C
I
D
C
=
Registerspeicher
T
Verwaltung des Stapelspeichers
Adreßspeicher (Tag-RAM):
Hauptspeicheradresse bzw. Adreßteil des Datenblockes (Cache-Line).
Valid-Bit: Cache-Inhalt bzgl. der Adresse ist aktuell, gültig.
Dirty-Bit: Cache- und Hauptspeicherinhalt der Adresse sind nicht konsistent.
Datenspeicher (Data-RAM):
Datenblöcke (Cache-Line): Blöcke des Cache-Speichers, ⇒ Blockprinzip.
Datenblockgröße (Cache-Line-Size): Blockgröße in Worten (Byte).
Cache-Treffer (Cache-Hit):
Daten / Befehle aktuell im Cache gefunden.
Trefferrate (Hit-Rate): Maß für die Effizienz des Caches.
Stapel, Stack
Bottom of Stack (BOS)
Daten
(Hauptspeicheradressen)
(post increment)
lesen (POP)
Stack Pointer (SP)
(Stapelzeiger)
aktuell
Stapelrichtung
schreiben (PUSH)
(pre decrement)
Cache-Fehlzugriff (Cache-Miss):
Daten / Befehle nicht im Cache gefunden bzw. nicht aktuell.
Fehlerrate (Miss-Rate): 1 - Trefferrate.
Fehlerzuschlag (Miss-Penalty): Zugriffszeit nach Cache-Fehlzugriff.
Rechnerarchitektur I
25/ 97
TeI rgs
Cache-Begriffe
RA I
9 Speicherarchitektur
9.4 Cache-Speicher
Top of Stack (T OS)
26/ 97
RA I
Rechnerarchitektur I
24/ 97
e
I
TeI rgs
=1
D
C
D
C
=
9.4 Cache-Speicher
T
I
TeI rgs
=1
D
C
D
C
=
9 Speicherarchitektur
9.4 Cache-Speicher
T
(Daten)
D-Cache
CPU
Befehle
(separate Lokalitäten)
Adressen
e
Cache
I+D
D
C
Tag-Vergleich
Tag
für Daten und Befehle
(überlagerte Lokalitäten)
Rechnerarchitektur I
31/ 97
9.4 Cache-Speicher
T
9 Speicherarchitektur
V D
Tag-RAM
RA I
e
I
D
C
=
B
Unified Cache, gemeinsam
HS
TeI rgs
=1
W
Princeton - Architektur
Daten / Befehle
RA I
Cache-Tag
Split Cache, getrennt
für Daten und Befehle
Daten
CPU
Hauptspeicheradresse
Byte-Adresse
(Befehle)
I-Cache
Harvard - Architektur
D
C
9.4 Cache-Speicher
Struktur des Cache-Speichers (Übersicht)
Adreß-Bus
reale Adressen
virtueller
Cache
Cache-Speicher
Adresse
realer
Cache
Komparator
HS
Daten-Speicher
CPU
Realer Cache
- schnell, Cache und MMU nebenläufig
- langsam, Adressen durch MMU
- direkter I/O-Cache-Transfer
- Invalidierung bei Prozeßwechsel,
möglich, da reale Adressen
notwendig, da gleiche Adressen möglich
- besondere Eignung als Befehls-Cache,
- für Snooping geeignet,
da 1:1 Adreß-Daten-Abbildung
da Rückschreiben entfällt
30/ 97
Data-RAM
9 Speicherarchitektur
Adreßumsetzung
Maske
Rechnerarchitektur I
Cache-Line
Wort 0
I
Daten
RA I
Wort 1
29/ 97
T
MMU
Virtueller Cache
Wort 2
Cache-Adreßraum
virtuelle Adressen
CPU
Wort 3
Rechnerarchitektur I
D
C
=
Data-Frame
Hit ∧ Valid
TeI rgs
=1
1. Adreßzerlegung: Tag, Wort, Byte
2. Tag-Vergleich und Valid-Auswertung
3. Bei Hit und Valid Cache-Line-Auswahl
4. Wort-Auswahl aus Cache-Line
5. Byte-Auswahl aus Wort (außerhalb)
Dirty-Bit
Daten-Adressen
Valid-Bit
Befehls-Adressen
9 Speicherarchitektur
Cache-Struktur
Wort-Adresse
Cache-Architektur
Adresse (Tag)
Daten (Cache-Line)
Hauptspeicher
e
Adreß-Speicher
Daten-Bus
RA I
Rechnerarchitektur I
28/ 97
e
I
TeI rgs
=1
D
C
D
C
=
9.4 Cache-Speicher
T
I
TeI rgs
=1
D
C
D
C
=
9 Speicherarchitektur
9.4 Cache-Speicher
T
Beispiel – Voll Assoziativer Cache (8-fach assoziativ)
Hauptspeicheradresse
Tag
31
HS
W B
4
28
2
0
Byte-Adresse (im Wort)
Abbildung:
Wort-Adresse (in Cache-Line)
f beliebig
2
2
V D
Cache-Line
Data-Frame
7
6
Line-Auswahl 5
4
3
2
1
0
Rahmenzahl r
Block b
32
32
32
Rahmen f
Cache-Hit
8 parallele 28-bit Komparatoren
=
Tag
32
Valid-Hit
32
&
Cache
3
2
1
0
Wort-Auswahl
voll assoziativ
Tag-Hit
RA I
e
Rechnerarchitektur I
D
C
D
C
=
35/ 97
T
RA I
e
I
TeI rgs
=1
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
(8 x 4 x 4 byte)
Satz
9.4 Cache-Speicher
9 Speicherarchitektur
=1
D
C
Abbildung
identisch
Abbildung
Cache
3
2
1
0
Abbildung:
in einem Satz
f := b mod r
Wegauswahl w
beliebig
Weg w
Cache
1
0
direkt abgebildet
3
3
2
1
0
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
n-Wege Satz-assoziativ
33/ 97
9.4 Cache-Speicher
T
9 Speicherarchitektur
Cache-Architektur mit drei Ebenen
Voll Assoziativer Cache (Fully-Associative Cache)
Ein Speicherblock kann sich in einem beliebigen Cache-Frame befinden
(k Cache-Frame (Cache-Line) ⇒ k-fach assoziativ).
⇒ sehr gute Trefferrate, komplizierte Hardware-Realisierung, langsam
(k voll-parallele Komparatoren für die gesamte Tag-Breite).
L1
I-Cache
Adreß-Bus
Direkt Abgebildeter Cache (Direct-Mapped Cache)
Ein Speicherblock kann sich nur in einem bestimmten Cache-Frame
befinden, durch den Index-Teil der Adresse festgelegt (⇒ einfach assoziativ).
⇒ schlechte Trefferrate, einfache Hardware-Realisierung, schnell
(Ping Pong Effekt (Cache Trashing) - ständiges Daten-Ein- und -Auslagern).
CPU
34/ 97
L2
Cache
L3
Cache
HS
Daten-Bus
L1
D-Cache
k-Wege Satz-Assoziativer Cache (k-Way Set-Associative)
Kann als parallele Anordnung von k direkt abgebildeten Caches verstanden
werden, Sätze durch Index-Teil der Adresse festgelegt (⇒ k-fach assoziativ).
⇒ Kompromis aus direkt abgebildeten und voll assoziativen Cache.
Rechnerarchitektur I
f := b mod r
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
I
D
C
=
HS
HS
Abbildung:
Rechnerarchitektur I
TeI rgs
Cache-Assoziativität
RA I
9 Speicherarchitektur
Cache-Organisation – Abbildungsproblem
Satz s
e
Level 1 (L1)
Split Cache
RA I
Rechnerarchitektur I
On-Chip Caches
Level 2 (L2)
Unified Cache
Off-Chip Cache
Level 3 (L3)
Unified Cache
32/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
9.4 Cache-Speicher
T
=1
D
C
D
C
9.4 Cache-Speicher
T
Cache-Organisation – Identifikationsproblem
Hauptspeicheradresse
I
Tag
31
Offset
7
25
W B
4
2
Byte-Adresse (im Wort)
0
Index-Adresse
HS-Adresse : n bit
n − i bit
o
b
0
3
Index : i − o bit
Byte : b bit
Wort : o − b bit
Offset : o bit
e
=1
D
C
RA I
9 Speicherarchitektur
=1
i
o
2
0
i − o Offsetgröße: o
Indexgröße:
Cache-Line-Size: 2o byte (2o−2 Worte zu 4 byte)
Cache
Index
Tag
..
.
0
Rechnerarchitektur I
9.4 Cache-Speicher
7
25
..
.
0
t
i−o
2
. −1
..
m
..
.
Data-RAM
3
Satz
Rechnerarchitektur I
W B
4
2
Byte-Adresse (im Wort)
0
Wort-Adresse (in Cache-Line)
Tag
V D
..
Cache-Line
m
3
2
1
0
2
Data-Frame
32
..
.
Cache-Frame
2
7
6
Line-Auswahl 5
4
3
2
1
0
7
6
5
4
3
2
1
0
0
i−o
2
. −1
Cache-Line
0
9 Speicherarchitektur
(8 x 4 x 4 byte)
25-bit Komparator
0
Wort-Adresse
RA I
37/ 97
m
m
..
.
Tag-Hit
Index-Adresse
..
.
1
Tag t
32
Wort-Auswahl
I
2i−o−1
Abbildung
2i−o−1
3
2
1
0
&
D
C
31
t +1
Datenblöcke mit gleicher Cache-Frame Position
Datenblock mit Tag-Übereinstimmung
Data-Frame
Valid-Hit
=
Hauptspeicheradresse
Tag
I
2n−i−1
W B
Cache-Line
Line-Auswahl
T
Index-Adresse
n-1
I
D
C
=
1
2
Beispiel – Direkt Abgebildeter Cache (einfach assoziativ)
Hauptspeicher (gefaltet)
Tag-Adresse
Tag
2
(8 x 4 x 4 byte)
7
TeI rgs
Beispiel – Abbildung: Cache - Speicher
Hauptspeicheradresse
V D
2x
e
9.4 Cache-Speicher
T
Tag
25-bit Komparator
I
D
C
=
0
7
6
5
4
3
2
1
0
39/ 97
TeI rgs
1
Satz
Tag: Adreßteil zum assoziativen Vergleich im Cache-Tag-RAM.
Index: Satzauswahl (Set) im Cache (Vollassoziativer Cache ⇒ kein Index).
Offset: Bestimmt die Blockgröße im Cache-Data-RAM (Cache-Line-Size).
Wort: Wort-Adresse innerhalb eines Datenblockes (Cache-Line).
Byte: Byte-Adresse innerhalb eines Wortes.
Rechnerarchitektur I
0
Weg
Cache-Hit
i
Weg
Cache-Hit
n−1
RA I
Wort-Adresse (in Cache-Line)
Index Wort Byte
Tag
Tag :
9 Speicherarchitektur
Beispiel – 2-Wege Satz-Assoziativer Cache (2-fach assoziativ)
Aufteilung des Hauptspeicheradresse in Tag, Index und Offset (Wort und Byte):
Hauptspeicheradresse
I
TeI rgs
=
9 Speicherarchitektur
38/ 97
RA I
Rechnerarchitektur I
32
32
Valid-Hit
=
32
32
&
Wort-Auswahl
Tag-Hit
36/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
9.4 Cache-Speicher
T
I
TeI rgs
=1
D
C
D
C
=
9 Speicherarchitektur
Cache Lese-Strategie (Read Strategy)
Treffer (Read-Hit)
1. Adressen
hit
Cache
CPU
3.
Cache
CPU
Daten
4.
Daten
Welche Cache-Line wird beim Nachladen eines mehrfach assoziativen Caches
verdrängt, ersetzt (beim direkt abgebildeten Cache kein Ersetzungsproblem)?
LRU (Least Recently Used):
Ersetze am längsten nicht mehr benutzte Cache-Line . Für die Entscheidung
ist eine Referenzstatistik erforderlich (UC - Utilization Counter).
HS
Zufallsprinzip (RANDOM):
Ersetze eine Cache-Line nach dem Zufallsprinzip (Pseudo-Zufallszahlen).
3.
1. Cache und HS adressieren
1. Cache und HS adressieren
2. Cache-Hit, HS-Zugriff abbrechen
2. Cache-Miss, HS-Zugriff fortsetzen
3. Lesen der Daten aus dem Cache
3. Verdrängen einer Cache-Line
FIFO (First In First Out):
Ersetze älteste geladene Cache-Line (erfordert Ladestatistik).
LFU (Least Frequently Used):
Ersetze am wenigsten benutzte Cache-Line (erfordert Benutzungsstatistik).
(Ersetzungsproblem, Castoff)
4. Cache-Line aus HS in Cache laden
Round Robbin : Ersetze Cache-Line in vorher festgelegter Reihenfolge.
5. Lesen der Daten aus dem Cache
RA I
e
Rechnerarchitektur I
=1
D
C
Optimal (Perfect): Ersetze in Zukunft nicht mehr ben ötigte Cache-Line.
RA I
e
D
C
=
43/ 97
I
TeI rgs
9.4 Cache-Speicher
T
9 Speicherarchitektur
41/ 97
=1
D
C
I
D
C
=
9.4 Cache-Speicher
T
9 Speicherarchitektur
Größe der Cache-Line und des Cache-Data-RAM
Datenkonsistenz und Datenkohärenz
Cache-Line-Size (clz): clz = 2o byte
Wann werden welche Daten im Cache oder und im Hauptspeicher aktualisiert?
Konsistenz:
Sowohl der Cache als auch der Hauptspeicher enthalten stets die identischen
aktuellen Daten. Alle untergeordneten Hierarchieebenen enthalten stets auch
die Daten aller übergeordneten Ebenen in identischer Form.
Kohärenz:
Der CPU werden immer die aktuellen Daten bereitgestellt, unabh ängig
davon, ob sie im Cache oder im Hauptspeicher stehen. Auf veraltete Daten
(Stale Data) darf nicht zugegriffen werden (⇒ Konsistenzabschw ächung).
Problemfälle:
- Auslagern, Rückschreiben in untergeordnete Hierarchieebenen (Castoff).
- Mehrere Master im System (CPU und DMAC, Direct Memory Access).
Rechnerarchitektur I
Rechnerarchitektur I
TeI rgs
Cache-Organisation – Aktualisierungsproblem
RA I
9 Speicherarchitektur
Cache-Organisation – Ersetzungsploblem
Fehlzugriff (Read-Miss)
1. Adressen
miss
HS
9.4 Cache-Speicher
T
42/ 97
oder
clz = 2o−b Worte mit 2b byte
Cache-Data-RAM (cdr):
Voll assoziativer Cache (k-fach assoziativ):
cdr = k · clz
(k - Assoziativität)
Direkt abgebildeter Cache (einfach assoziativ):
cdr = 2i−o · clz
(i − o - Index)
k-Wege Satz-assoziativer Cache (k direkt abgebildete Caches parallel):
cdr = k · 2i−o · clz
(k - Assoziativität, i − o - Index)
⇒ Optimierung der Größe der Cache-Line und des Cache-Data-RAM
RA I
Rechnerarchitektur I
40/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
9.4 Cache-Speicher
T
Überlagerungsstrukturen (Overlays)
Write-Allocate
1. Adressen
miss
• das Programm ist grösser als der physikalische Speicher
• Zerlegung des Programms in Teile, Überlagerungen (Overlays)
Cache
CPU
• Abspeicherung der Überlagerungen auf dem Sekundärspeicher (Festplatte)
• Laden und Ausführen der ersten Überlagerung, des Hauptprogramms
Daten
• Nachladen der weiter benötigten Überlagerungen
(Überschreiben alter Überlagerungen) entsprechend Überlagerungstabelle
→ Der gesammte Überlagerungsprozess wird durch den Programmierer, das
Write-Around (No-Write-Allocate)
1. Adressen
miss
HS
4.
3.
2. Cache-Miss, HS-Zugriff fortsetzen
3. Verdrängen einer Cache-Line
3. Schreiben der Daten in den HS
(Cache wird nicht geladen)
Write-Allocate mit Write-Back
Write-Around mit Write-Through
Weiter analog Treffer (Write-Hit), typisch:
e
=1
D
C
D
C
=
RA I
e
I
TeI rgs
Virtueller Speicher
T
Einprogrammbetrieb
Daten
1. Cache und HS adressieren
4. Cache-Line aus HS in Cache laden
47/ 97
HS
2. Cache-Miss, HS-Zugriff fortsetzen
(Ersetzungsproblem, Castoff)
Rechnerarchitektur I
Cache
CPU
1. Cache und HS adressieren
Nutzerprogramm gesteuert und verwaltet
RA I
9 Speicherarchitektur
Fehler (Write-Miss) Cache Schreib-Strategie (Write Strategy)
Rechnerarchitektur I
45/ 97
I
TeI rgs
=1
D
C
D
C
=
9.4 Cache-Speicher
T
9 Speicherarchitektur
Treffer (Write-Hit) Cache Schreib-Strategie (Write Strategy)
• die maximale Programmgrösse wird durch den verfügbaren physikalischen
Speicher begrenzt
Write-Back, Copy-Back (WB)
1. Adressen
hit
Write-Through (WT)
1. Adressen
hit
• nur ein Programm, Nutzer möglich (single user mode)
Cache
CPU
HS
Cache
CPU
HS
• Laden und Ausführen des Programms auf eine bestimmte definierte Adresse
3.
→ Organisation des Ladens und Abarbeitens durch den
Programmierer/Operator
5.
1. Cache und HS adressieren
2. Cache-Hit
2. Cache-Hit
3. Schreiben der Daten in den Cache
3. Schreiben der Daten in den Cache
(Schreibpuffer, Write-Buffer)
Gerätetreiber (BIOS)
⇒ Zeitaufwendig aber konsistent
Benutzerprogramm
Daten
1. Cache und HS adressieren
4. HS unverzüglich aktualisieren
RAM
0
3.
0
RAM
4.
ROM
FF...
Rechnerarchitektur I
RA I
Betriebsystem
ROM
0
FF...
RAM
FF...
Daten
46/ 97
RA I
Rechnerarchitektur I
4. Setzen des Dirty-Bit
5. HS bei Verdrängung aktualisieren
⇒ Probleme mit Daten-Konsistenz
44/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Virtueller Speicher
T
Mehrprogrammbetrieb mit variabler Partitionierung
Swapping
Unter Swapping (Ein-/Auslagerung) wird bei Timesharing-Systemen das
Verschieben ganzer Prozesse (Programme) zwischen prim ären und sekundären
Speicher (Hauptspeicher-Festplatte) verstanden.
(IBM-OS/MVT Multiprogramming with a Variable number of Tasks, 1971)
Anzahl und Grösse der Prozesse innerhalb des Hauptspeichers variieren
ständig.
• Definition eines Swap-Bereiches auf der Festplatte
• Allokation von Swap-Partitionen im Swap-Bereich (analog
→ Nutzung variabler Partitionen (feste Partitionen sind uneffektiv bzgl.
Hauptspeicherpartitionierung)
Speicherplatzausnutzung)
• Ein- und Auslagerung von Prozessen als Transfer zwischen Hauptspeicherund Swap-Partitionen
• dynamisch variierende Anzahl, Anordnung und Gr össe der Partitionen
• dynamisch Speicherallokation durch Prozesse gesteuert
• Berücksichtigung von wachsenden bzw. schrumpfenden Speicherbereichen,
Partitionen
→ Speicherallokation der Prozesse ändert sich ständig
RA I
e
Rechnerarchitektur I
51/ 97
D
C
D
C
=
RA I
e
I
TeI rgs
=1
Ursachen, Notwendigkeit für Swapping:
• es gibt mehr Prozesse als mögliche Speicherpartitionen
(zu kleiner Hauptspeicher)
• Prozesse mit langen Wartezeiten (z.B. auf E/A-Geräte)
• inaktive Prozesse
Virtueller Speicher
T
=1
D
C
D
C
=
Realisierung von Mehrprogrammsystemen
• Unterteilung der Abarbeitungszeit in Zeitscheiben (timesharing-Systeme)
Relokation:
512 K
256 K
128 K
Parition 2
Programm 1
Parition 1
Programm 3
Parition 0
Betriebssystem
0
Hauptspeicher
RA I
Rechnerarchitektur I
Virtueller Speicher
T
Mehrprogrammbetrieb (multiprogramming)
(IBM-360-OS/MFT Multiprogramming with a Fixed number of Tasks, 1966)
Programm 2
49/ 97
I
TeI rgs
Mehrprogrammbetrieb mit fester Speicherpartitionierung
Parition 3
Rechnerarchitektur I
• Unterteilung des Hauptspeichers in Bereiche (Partitionierung)
Adresstransformation
(Verschiebung entsprechend
Partitionsanfang) beim Laden
der Programme oder in
Hardware (Basisregister)
→ Abarbeitung mehrerer Programme (Prozesse) gleichzeitig, parallel (innerhalb
einer Zeitscheibe nur je ein Prozess)
• Einbenutzersysteme (single user mode) ein Nutzer mit mehreren
Programmen
Schutz:
• Mehrbenutzersysteme (multi user mode) mehrere Nutzer mit vielen
Adressüberprüfung während der
Laufzeit (Hardware)
• zu den Nutzerprozessen parallele Abarbeitung von
Programmen
Betriebssystemprozessen, Treibern, E/A ...
50/ 97
RA I
Rechnerarchitektur I
48/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Virtueller Speicher
T
Virtueller Speicher
Virtueller Speicher
Zielstellung:
• Vergrösserung des nutzbaren Adressraumes weit über den des technisch
Seite
Seite
Seite
Seite
Seite
Seite
Seite
Paging
Segmentierung
Blöcke (Seiten)
gleicher Größe
Blöcke (Segmente)
unterschiedliche Größe
verfügbaren Hauptspeichers hinaus
Segment
Unterstützung mehrerer getrennter Adressr äume
•
•
•
•
•
Segment
Segmente
Seite
Seite
Seite
Seite
Seite
Realisierung ”beliebig“ teilbarer und nutzbarer Adressr äume
Trennung von einzelnen Prozessen bzgl. Zugriffsrechte, Schutzmechanismen
gemeinsame Nutzung von Prozessen bzw. Speicherbereichen
Effektive Einbeziehung des Sekundärspeichers (Festplatte),
kurze Lade- und Speicherzeiten
• Entlastung des Programmieren von aufwendiger Adressrechnung,
Segmentierung mit Paging
Overlayprozess, Partitionierung, Verwaltungsaufgaben
zusätzliche Unterteilung der Segmente in Seiten
RA I
e
Rechnerarchitektur I
D
C
D
C
=
RA I
e
I
TeI rgs
=1
55/ 97
Virtueller Speicher
T
Rechnerarchitektur I
53/ 97
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Fragmentation
Grundkonzept des Virtuellen Speicher
Interne Fragmentation:
Programmgrösse und Partitionsgrösse stimmen nicht überein
→ Partitionen fester Grösse enthalten Freiräume, Löcher
• Trennung von Adressraum (address space) und Speicheradressen
(physikalischer Speicher)
• Einführung eines oder mehrerer beliebig grosser virtueller Adressr äume
• Unterteilung des virtuellen und des physikalischen Adressraumes in Bl öcke
gleicher oder variabler Grösse
• Adressumsetzung (address translation) zwischen virtuellen und
physikalischen Adressen durch Tabellen
Externe Fragmentation:
Prozessgrösse ändert sich während der Abarbeitung (wachsen, schrumpfen),
Prozesse werden ein- und ausgelagert
→ zwischen Partitionen variabler Grösse entstehen Freiräume, Löcher
• Nutzung des Sekundärspeichers für Ein- und Auslagerungen
Defragmentierung (Speicherverdichtung):
Verschiebung aller Prozesse im Speicher zur Vermeidung
von externer Fragmentation (zeitaufwendig)
• Automatische Realisierung der gesamten Prozessaufteilung,
Speicherzuordnung, Adresstransformation, Umlagerungen,
durch die Hardware und das Betriebssystem,
für den Nutzer völlig transparent
RA I
Rechnerarchitektur I
54/ 97
RA I
Rechnerarchitektur I
52/ 97
e
I
TeI rgs
D
C
Seite 4
Seite 3
12 k
Seite 2
8k
Adress-Abbildung
virtuell (logisch)
59/ 97
Virtueller Speicher
Segmentierung (Blockorientiert)
Basisadresse
log.-Adressen
virtuell (logisch)
Rechnerarchitektur I
0
I
D
C
Virtueller Speicher
T
virt. Adresse
phy. Adresse
Adressimpuls
Adressimpuls
MMU
Speicher
HOLD
ABORT
Daten
768
767
Adress-Abbildung
D
C
=
Blockgrenzen
1535
1
0
57/ 97
TeI rgs
=1
Segment n
physikalisch
Rechnerarchitektur I
CPU
2303
1792
2
1
0
Adress-Abbildung
Zusammenwirken von CPU und MMU zur Berechnung der
physikalischer Adressen
Blockgrenzen
0 Block-Nr.
RA I
e
I
D
C
T
0
virtuell (logisch)
physikalisch
TeI rgs
170
0
Rechnerarchitektur I
2
1
0
Segment 1
170
Seitenrahmen 0
0k
Segment 0
200
Seitenrahmen 1
4k
Seite 0
0
525
356
355
Seitenrahmen 2
8k
Seite 1
4k
Seitenrahmen 3
Basisadresse
Seite 5
12 k
RA I
Segmentgrösse variabel
phy.-Adressen
Seite 6
16 k
D
C
Virtueller Speicher
Segmentierung
Segment n
log.-Adressen
Seite 7
20 k
=
D
C
Seite 8
24 k
=1
D
C
T
4k Byte
Seitengrösse:
Seitenrahmenanzahl: l
212 · l Byte
phys. Speicher:
Seite 9
28 k
e
=1
Paging
32 k
RA I
I
TeI rgs
=
Virtueller Speicher
T
Segment 1
D
C
=
Segment 0
=1
log.-Adressen
e
Block-Nr.
8
7
6
5
4
3
2
1
0
physikalisch
58/ 97
RA I
Rechnerarchitektur I
56/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
I
TeI rgs
=1
D
C
D
C
=
Fragmentierung
T
Virtueller Speicher
T
Fragmentierung bei Paging
Seitenadressierung, Paging (1)
• Zuordnung eines für jeden Prozess gesonderten virtuellen Adressraumes
Seite 3
Seite 2
frei
Seite 1
Seite 0
extern
(virtual address space) mit der Adresse 0 beginnend
Seite (vergrössert)
Seite 4
Seite 2
• Unterteilung des virtuellen Adressraumes in Blöcke gleicher Grösse
(Seiten, Pages)
Seite 1
• Die Seitengrösse entspricht immer einer Potenz von 2
Seite 0
(z.B. 4 Kbyte, 4 Mbyte)
intern
• Unterteilung des physikalischen Adressraumes in Bl öcke der gleichen Grösse
wie beim virtuellen Adressraum (Seitenrähmen, Page Frames)
• Die Seitemrähmen des physikalischen Adressraumes können jeweils genau
eine Seite des virtuellen aufnehmen
RA I
e
Rechnerarchitektur I
63/ 97
e
I
TeI rgs
=1
D
C
D
C
=
RA I
Virtueller Speicher
T
Seitenadressierung, Paging (2)
Rechnerarchitektur I
61/ 97
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Virtueller Speicher
log. Adressen
2m − 1
• Unterteilung der virtuellen und physikalischen Adressen in Seitennummer
(Pagenumber) bzw. Seitenrahmennummer und Seitenoffset (Page Offset)
• Realisierung der Abbildung virtuelle → physikalische Adresse
Adressraum
m-bit
virtuell (logisch):
physikalisch (real): n-bit
(Address Translation) durch eine Seitentabelle (Page Table)
Sekundärspeicher
die Memory Managemant Unit (MMU) und wird durch das Betriebssystem
unterstützt
Zuordnungstabelle
virt.
phy.
• Die Seitenadressierung erfolgt automatisch, für den Nutzer transparent.
Programmierung ohne Berücksichtigung von Paging mit
”virtuellen“ Adressen
RA I
Rechnerarchitektur I
0
RA I
Primärspeicher
HS
0
virtuell (logisch)
62/ 97
2n − 1
phy. Adressen
• Die Adressabbildung virtuell → physikalisch erfolgt hardwarem ässig durch
Rechnerarchitektur I
Adress-Abbildung
physikalisch (real)
60/ 97
e
I
TeI rgs
=1
D
C
D
C
=
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Virtueller Speicher
T
Typische Seitentabelleneinträge
Beispiel für Seitentabelle
Mögliche Abbildung von einen Virtuellen Speicher mit 16 Seiten auf einen
Arbeitsspeicher mit 8 Seitenrahmen.
• Seitenrahmennummer (physikalischer Speicher)
Seite
• Verfügbarkeit (Present/Absent-Bit)
Seite 15
Seite 14
Seite 13
Seite 12
Seite 11
Seite 10
Seite 9
Seite 8
Seite 7
Seite 6
Seite 5
Seite 4
Seite 3
Seite 2
Seite 1
Seite 0
64 k
• Schutz (Privileg)
...
• Verändert (Dirty-Bit)
• Referenziert (Accessed)
4k
0
virt. Speicher
• Caching
RA I
e
Rechnerarchitektur I
67/ 97
D
C
D
C
=
RA I
e
I
TeI rgs
=1
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
Virtueller Speicher
T
Seite
20
Seitenrahmen
7
6
5
4
3
2
1
0
Seitentabelle
32 k
Virtuelle Seite 14
Virtuelle Seite 3
Virtuelle Seite 8
Virtuelle Seite 6
=1
D
C
phys. Speicher
Rechnerarchitektur I
65/ 97
I
D
C
=
4k
0
Virtueller Speicher
T
Adressabbildung mit Seitentabelle
reale Adresse
Offset
Seitenrahmen
0
6
0
7
0
0
5
3
0
1
0
0
4
0
2
0
TeI rgs
Adressabbildung bei Paging
virtuelle Adresse
P
0
1
0
0
0
0
0
1
0
1
0
0
1
0
0
0
...
e
Seitenrahmen
1. Suchen der virtuellen Seite in der Seitentabelle
→ Adressierung der Seitentabelle mit der Seitennummer
Offset
12
2. Herauslesen der Seitenrahmennummer aus der Seitentabelle
3. Zusammenfügen von Seitenrahmennummer und Seitenoffset ergibt die
physikalische Adresse im Speicher
Seitentabelle
P
Seitenrahmen
20
Befindet sich die gesuchte Seite nicht in einem Seitenrahmen des
physikalischen Speichers (Present/Absent-Bit ist 0), so ist diese Seite durch das
Betriebssystem nachzuladen und die Seitentabelle zu aktualisieren.
220 − 1
Basisadresse
0
Seitentabelle enthält die Seitenrähmen der Seiten die sich im phys. Speicher befinden
(Seite → Seitenrahmen).
P: Present/Absent-Bit
(1 = Vorhanden im Hauptspeicher /
0 = Fehlt im Hauptspeicher)
RA I
Rechnerarchitektur I
66/ 97
virtuell
Seitennummer + Offset
Seitentabelle
−→
physikalisch
Seiterahmennummer + Offset
→ Ersetzen der Seitenummer duch die Seitenrahmennummer
RA I
Rechnerarchitektur I
64/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Virtueller Speicher
T
Privater Adressraum pro Prozess (Nutzer)
Optimierung der Seitengrösse
grössere Seiten
Prozess 3
• höhere interne Fragmentation
(ungenutzte Speicherbereiche innerhalb der Seiten)
Prozess 2
• höherer Aufwand beim Nachladen von Seiten (Seitenfehler)
Prozess 1
kleinere Seiten
Seitentabellen
virtuell
physikalisch
• grössere Seitentabellen (mehr Seitentabelleneinträge)
• grösserer Adressabbildungsaufwnd (aufwendigere MMU)
→ Implementierung von verschiedenen Seitengrössen
RA I
e
Rechnerarchitektur I
D
C
D
C
=
T
RA I
e
I
TeI rgs
=1
71/ 97
Virtueller Speicher
Rechnerarchitektur I
I
TeI rgs
=1
D
C
D
C
=
69/ 97
T
Virtueller Speicher
→ Enthält keine Information über die Lage der Seite im Sekund ärspeicher
Forderungen und Grösse linearer Seitentabellen
(Festplatte), wird durch das Betriebssystem organisiert
Forderungen
• Realisierung grosser umfangreicher Seitentabellen für jeden Prozess
getrennt, mit Schutzfunktionen, ...
• sehr schneller Adressabbildung (kleine Latenzzeiten)
• Realisierung von gemeinsamen Speicher (Shared Memory)
Grösse
m-bit virt. Adressraum, s-bit Seitengrösse, k-byte Seitentabelleneintrag
→ (2m−s · k)-byte Grösse einer Seitentabelle
Beispiel
• 32-bit virt. Adressraum, 12-bit Seitengrösse, 4-byte Seitentabelleneintrag
→ 4-Mbyte Seitentabellengrösse für jeden Prozess
• 64-bit virt. Adressraum, 20-bit Seitengrösse, 8-byte Seitentabelleneintrag
RA I
Rechnerarchitektur I
70/ 97
RA I
Rechnerarchitektur I
68/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Virtueller Speicher
T
Adressabbildung mit Invertierter Seitentabelle
virtuelle Adresse
Zweistufige Seitenadressierung
reale Adresse
Seite
Offset
20
virtuelle Adresse (lineare)
Seitenrahmen
Offset
Directory
12
Seite
10
10
reale Adresse
Offset
Seitenrahmen
Offset
12
Invertierte Seitentabelle
Seite
Seitenrahmen
Seitentabellen Verzeichnis
20
l
Seitensuche
Hashtabelle
e
0
D
C
Rechnerarchitektur I
75/ 97
2 −1
2 −1
0
0
RA I
e
I
D
C
=
Virtueller Speicher
T
Rechnerarchitektur I
=1
D
C
D
C
=
31
22 21
viele und grosse virtuelle Adressräume → viele und grosse Seitentabellen
(hoher Speicherbedarf und grosse Latenzzeiten).
Aber, nur eine kleine Menge an virtuellen Seiten werden wiklich genutzt.
Offset
12 11
Virtueller Speicher
T
Effektivierung der Adressabbildung
virtuelle Adresse (lineare)
Seite
73/ 97
I
TeI rgs
Darstellung bei der Zweistufigen Steitenadressierung
Directory
20
Seitenrahmen
10
l : Seitenrahmenanzahl
TeI rgs
=1
P
10
Invertierte Seitentabelle enthält nur Seiten die sich in Seitenrähmen
des phys. Speicher befinden (Seitenrahmen → Seite).
RA I
Seitentabelle
Seitentabelle
0
Auswege
• effiziente Abspeicherung der Seitentabellen, nur genutzter Bereich
• Vergrösserung der Seiten (Verringerung der Seitenanzahl)
SeitentabellenVerzeichnis
phys. Speicher
• mehrstufige Seitentabellen
• invertierte Seitentabellen (Mashing Methode)
Seitentabellen
• caching der Tabelleneinträge (Translation Lookaside Buffers, TLB)
RA I
Rechnerarchitektur I
74/ 97
RA I
Rechnerarchitektur I
72/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Virtueller Speicher
T
Translation Lookaside Buffers (TLB)
Virtuelle Speicheradressierung beim UltraSPARC-II V9
virtuelle Adresse
8K-byte Virtuelle Seite
8K-byte Physikalische Seite
reale Adresse
Seite
Page Offset
Offset
Seitenrahmen
Offset
Page Offset
64K-byte Virtuelle Seite
Page Offset
64K-byte Phys. Seite
TLB
Page Offset
V R W D
512K-byte Virtuelle Seite
Tag (Seite)
Seitenrahmen
Page Offset
512K-byte Phys. Seite
Page Offset
4M-byte Virtuelle Seite
Page Offset
4M-byte PS
Page Offset
Hit ?
RA I
e
40
22
19
16
13
Rechnerarchitektur I
D
C
RA I
e
I
D
C
=
V = Valid R = Read W = Write D = Dirty
79/ 97
TeI rgs
=1
0
Virtueller Speicher
T
Rechnerarchitektur I
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Virtuelle Speicheradressierung beim SPARC V8
virtuelle Adresse
Beispiel für Invertierte Seitentabelle
reale Adresse
Index 1 Index 2 Index 3
Offset
Seitenrahmen
Mögliche Abbildung von einen Arbeitsspeicher mit 8 Seitenrahmen auf einen
Virtuellen Speicher mit 16 Seiten.
Offset
64 k
Tabellenverzeichnis
Tabellenverzeichnis
Seitentabelle
Contexttabelle
...
Root Pointer
Level-1
Level-2
Level-3
4k
0
Seite 15
Seite 14
Seite 13
Seite 12
Seite 11
Seite 10
Seite 9
Seite 8
Seite 7
Seite 6
Seite 5
Seite 4
Seite 3
Seite 2
Seite 1
Seite 0
virt. Speicher
RA I
Rechnerarchitektur I
77/ 97
78/ 97
RA I
Rechnerarchitektur I
Seite
6
8
3
10
-
Seitenrahmen
7
6
5
4
3
2
1
0
Inv. Seitentabelle
Seitenrahmen
7
6
5
4
3
2
1
0
32 k
Virtuelle Seite 6
Virtuelle Seite 8
Virtuelle Seite 3
Virtuelle Seite 10
...
63
4k
0
phys. Speicher
76/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Virtueller Speicher
T
Darstellung der Segmentadressierung
Segmentierung
virtuelle Adresse
Segment
31
1. unterschiedliche Inhalte
2. dynamische Segmentlängenänderung
3. verschiedene Segmentlängen
Offset
16 15
0
16k
8k
12k
Segment
reale
Adresse
Segmenttabelle
variabler Bereich
4k
Segmentanfang
0
phys. Speicher
RA I
e
Rechnerarchitektur I
83/ 97
e
I
TeI rgs
=1
D
C
D
C
=
RA I
Virtueller Speicher
T
Segment
=1
D
C
Stack
Segment 0
Segment 1
Segment 2
Rechnerarchitektur I
81/ 97
I
D
C
=
Virtueller Speicher
T
Virtuelle Speicheradressierung beim UltraSPARC-II V9
reale Adresse
Virtuelle Adresse
Offset
Physikalische Adresse
Seite
63
32
24
8
Daten
TeI rgs
Adressabbildung bei Segmentierung
virtuelle Adresse
Code
Segmenttabelle
Segmentlänge
ITLB
Offset
n n-1
4 Seitengrößen:
8 KB : n = 13
0
64 KB : n = 16
512 KB : n = 19
4 MB : n = 22
Seitenrahmen
40
Offset
n n-1
0
32
Basisadresse
28 − 1
TLB-Hit
DTLB
TLB-Miss
Basisadresse
TLB-Miss:
Software f ¨ullt die TLB
mit Inhalt vom TSB cache auf
(Hardware unterst ¨utzt Adressrechnung)
0
Segmenttabelle enthält Segmentlänge und Basisadresse der Segmente
die sich im phys. Speicher befinden (Segment → Basisadresse).
RA I
Rechnerarchitektur I
TSB
TSB = Translation Storage Buffer
82/ 97
RA I
Rechnerarchitektur I
80/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
=1
D
C
D
C
Virtueller Speicher
T
Adressabbildung bei Segmentierung mit
Segmentnummerregister
virtuelle Adresse
I
TeI rgs
=
Virtueller Speicher
T
Adressabbildung bei Segmentierung (Blockorientiert)
virtuelle Adresse
Segment
reale Adresse
8
Offset
reale Adresse
Block
Offset
16
Offset
8
24
32
32
Zugriffsart
Segmenttabelle
Segmenttabelle
Segmentnummerregister
Segmentlänge
Basisadresse
32
Segmentlänge
24
Basisadresse
28 − 1
2n − 1
n
0
0
RA I
e
Rechnerarchitektur I
87/ 97
e
I
TeI rgs
=1
D
C
D
C
=
RA I
Virtueller Speicher
T
Rechnerarchitektur I
85/ 97
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Darstellung der Segmentadressierung (Blockorientiert)
Fragmentierung bei Segmentierung
virtuelle Adresse
Offset
Block
24 23
8 7
0
Blockgrenzen
Segment 2
frei
Segment 1
Segmenttabelle
reale
Adresse
Segment
Segment
Segment
31
frei
Segment 0
extern
intern
Segmentanfang
phys. Speicher
RA I
Rechnerarchitektur I
86/ 97
RA I
Rechnerarchitektur I
84/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Virtueller Speicher
T
Speicherverwaltungsformate beim Pentium II
RPL
base
D/B bit
DPL
G
Limit
S bit
P
RA I
e
Requested Priviledge Level
(RPL, Bits 0,1: 0 = highest , 3 = lowest)
Definiert die Startadresse des Segments innerhalb
des linearen Adressraums.
Gibt an, ob die Adressierung 16 oder 32 bit betr ägt.
Gibt die Zugriffsrechte der Segmente an.
Granularität,gibt die kleinste Einheit bzgl. der Segmentgr össe an.
(1 byte oder 4 KByte).
Definiert die Grösse des Segments.
Gibt an, ob das Segment ein Data oder ein Code oder
ein Stack Segment ist.
Zeigt an, ob ein Segment im Hauptspeicher present ist.
Rechnerarchitektur I
91/ 97
e
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Segment Selektor
(Segment Selector)
2-Byte
15
3 21
D
C
I
D
C
=
Virtueller Speicher
T
Zweistufige Adressabbildung durch Kombination von
Segmentierung und Paging
Segment
Base Address
23 ... 16
Segment
reale Adresse
Seite
10
Offset
10
Seitenrahmen
31
Limit 0 ... 15
0
Page Frame Address 31 ... 12
31
P P
P
U R
P
0 A C W
S
D T S W
AVL
12 11
A = Accessed
RW = Read/Write
Offset
12
Seitentabelle
Segmenttabelle
Page Frame Address 31 ... 12
PS = Page Size
US = User/Supervisor
Rechnerarchitektur I
=1
0
A Segment
Segment
V
P DPL S
Limit
Type
L 19 ... 16
Base 0 ... 15
RA I
89/ 97
virtuelle Adresse
Segment
Base Address
31 ... 24
D
G /
B
31
24 23 22
2019
16 15 14 13 12 11
8 7
G = Granularity
D/B = Default Operation Size
AVL = Available for Use
P = Segment Present DPL = Descriptor Privilege Size
S
= Descriptor Type
Seitentabelleneintrag
(Page Table Entry)
4-Byte
Rechnerarchitektur I
TeI rgs
TI = Table Indicator
RPL = Requestor Privilege Level
T
RPL
I
Index
Segmenttabelleneintrag
(Segment Descriptor)
8-Byte
Seitenverzeichniseintrag
(Page Directory Entry)
4-Byte
RA I
9
PCD = Cache Disable
P
= Present
9
P
Basisadresse
210 − 1
210 − 1
0
0
20
Seitenrahmen
PWT = Write Through
D
= Dirty
P P
D A C W
D T
AVL
12 11
7 6 5 4 3 2 1 0
Segmentlänge
R
P
W
6 5 4 3 2 1 0
90/ 97
RA I
Rechnerarchitektur I
88/ 97
e
e
I
TeI rgs
=1
D
C
D
C
=
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Physikalischer Cache
log. Adresse
Virtueller Speicher
T
Virtuelle Speicheradressierung beim Pentium II
phy. Adresse
virtuelle Adresse
MMU
Seitenrahmen
CPU
Cache
lineare Adresse
Offset
Directory
Seite
reale Adresse
Offset
Seitenrahmen
Offset
Speicher
Daten
Segmenttabelle
Segementierung
RA I
e
Rechnerarchitektur I
95/ 97
e
I
TeI rgs
=1
D
C
D
C
=
RA I
Virtueller Speicher
T
D
C
Zweistufige Seitenadressierung
93/ 97
I
D
C
=
Seitentabelle
Rechnerarchitektur I
TeI rgs
=1
Tabellenverzeichnis
Virtueller Speicher
T
Virtueller Cache
log. Adresse
A
phy. Adresse
MMU
CPU
D
Speicher
Cache
PCD
PS
PWT
P
Daten
RW
US
RA I
Rechnerarchitektur I
94/ 97
RA I
Wird vom Prozessor gesetzt, wenn eine read/write Operation
auf die entsprechende Seite erfolgt.
Wird vom Prozessor gesetzt, wenn eine write Operation
auf die entsprechende Seite erfolgt.
Zeigt an welche Daten der Seite in den Cache geladen werden.
Gibt an, ob die Seitengrösse 4 KByte oder 4 MByte beträgt.
Gibt die Cache-Strategie an, ob write-through oder write-back
Gibt an, ob die Seitentabelle oder die Seite
im Hauptspeicher ist.
Für ”user-level“ Seiten, gibt an ob die Seite read-only
oder read/write Rechte besitzt.
Gibt an, ob die Seite nur für das Betriebssystem
oder für Betriebssystem und Anwendungen verfügbar ist.
Rechnerarchitektur I
92/ 97
e
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
UltraSPARC-I Adressierungsmechanismus
Sign-extended
31-bit virtual page number
14-bit data cache index
13-bit context ID
Virtually indexed,
physically tagged,
direct-mapped
16-Kbyte,
L1 data cache
64-entry, fully associative
instruction TLB
64-entry, fully associative
data TLB
Tag
compare
(cache
hit/miss)
13-bit page offset
Physically indexed,
phsically tagged,
pseudo 2-way set
associative, 16Kbyte
L1 instruction cache
Page frame number
13-bit instruction cache index
8-bit ASI
Tag: page frame number
Cache data
RA I
e
Rechnerarchitektur I
97/ 97
I
TeI rgs
=1
D
C
D
C
=
Virtueller Speicher
T
Pentium II Adressierungsmechanismus
16-bit segment selector
32-bit segment offset
Local and global
descriptor tables
20-bit virtual page no.
32-entry, 4-way
instruction TLB
64-entry,
4-way data TLB
Tag
compare
(cache
hit/miss)
12-bit page offset
16-Kbyte, 4-way
data cache
16-Kbyte, 4-way
instruction cache
Page frame number
Tag: page frame number
Cache data
RA I
Rechnerarchitektur I
96/ 97
Herunterladen