Transcript Anzeigen

Prozessor
E/AGeräte
Leitwerk
Speicher
Rechenwerk
Verbindungsnetzwerk
E/A-Steuerungen
(controller)
E/A-Einheiten
4.4 Speicherarchitektur
Universität Dortmund
Mehrprozess-System
(Multitasking, Multiprocessing)
In realen Rechnern meist mehrere „Programme“ gespeichert.
Ausführbare Programme heißen Prozesse oder tasks.
Prozessen wird durch einen dispatcher (z.TL. scheduler
genannt) Rechenzeit auf dem Prozessor zugeteilt.
Dispatcher schaltet zwischen Ausführung von Prozessen um
(context switch). Bei context switch werden alle Register
- des anzuhaltenden Prozesses in einen ihm zugeordneten
Datenblock (process control block, PCB) gerettet &
- die des zu fortzuführenden Prozesses aus seinem PCB
geladen.
Prozessen wird suggeriert, Prozessor gehöre ihnen allein
(bis auf Zeitverhalten).
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 2 -
Universität Dortmund
Context switch
Prozessor
Speicher
PCB A
Register
A
B PCB B
Ausführung
A
B
A
B
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 3 -
Universität Dortmund
Speicherverwaltung
Unterscheidung zwischen den Adressen, welche
der Prozessor generiert und jenen, mit denen
der physikalische Speicher adressiert wird.
Prozessor
Speicher
Def.: Prozessadressen bzw. virtuelle Adressen sind die
effektiven Adressen nach Ausführung aller dem
Assemblerprogrammierer sichtbaren
Adressmodifikationen, d.h. die von einem Prozess
dem Rechner angebotenen Adressen.
Def.: Maschinenadressen, reale Adressen bzw.
physikalische Adressen sind die zur Adressierung
der realen Speicher verwendeten Adressen.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 4 -
Universität Dortmund
Memory Management Unit (MMU)
MMU ist für das Umrechnen der Adressen verantwortlich.
Beispiel Motorola
Daten/Befehle
Prozessor
MC 68020
Kontrolle
virtuelle
Adressen
MMU
68851
Speicher
reale
Adressen
Adressbits (7:0)
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 5 -
Universität Dortmund
4.4.1.1 Identität
Bei einfachen Systemen sind reale und
virtuelle Adressen identisch („memory
management without swapping or
paging“).
Prozessor
Speicher
Adressraum durch real vorhandenen
Speicher beschränkt.
Kommt v.a. bei eingebetteten Systemen
(Fahrzeugelektronik, Handys usw.) vor,
weniger bei PCs und Workstations.
0
Sehr einfache Systeme:
- Aufteilung in Systembereich und
Benutzerprogramm ( SPIM)
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
system
user
user
system
Speicher - 6 -
Lücken?
SPIM
Universität Dortmund
Einteilung in Laufbereiche (core partitions)
Adressbereich der
Prozesse zusammenhängend im virtuellen und
im realen Adressraum.
Compiler adressieren
Befehle ab Adresse 0.
Beim Laden muss auf alle
Adressen Anfangsadresse
der Partition addiert
werden.  Identifikation
von Adressen im
übersetzten Programm!
Prozesse
Betriebssystem
Partition 1
Partition 2
1,2
4
5
4,5
Partition 3
3
Partition 4
6,7,8
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Jeweils ein Prozess im Speicher,
die übrigen auf der Platte.
Aus Aufwandsgründen statt flexibler Speicherzuteilung an
Prozesse feste Partitionierung des Speichers.
Speicher - 7 -
Universität Dortmund
Speicherschutz durch Grenzregister
möglich
Betriebssystem
Z.Tl. nur Zugriff auf
durch Grenzregister
begrenzten
Speicherbereich erlaubt
( Speicherschutz);
Grenzregister werden
bei context switch
umgeladen.
Prozesse
Partition 1
1,2
Partition 2
4,5
Partition 3
3
Partition 4
6,7,8
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 8 -
Universität Dortmund
Was tun, wenn Prozesse mehr Speicher benötigen?
(1)
Man könnte Partitionen verschmelzen, wenn Prozesse mit
dem Speicher der zugeteilten Partition nicht auskommen.
Aus Aufwandsgründen selten realisiert.
Betriebssystem
Prozesse
Partition 1
1,2
Partition 2
4,5
Partition 3
3
Platte
Partition 4
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 9 -
Universität Dortmund
Was tun, wenn Prozesse mehr Speicher benötigen?
(2)
Verschieben von Prozessen im Speicher nicht möglich, da Adressen
angepasst werden müssten, andere Informationen nicht.
Im Speicher sind Adressen und andere Informationen ununterscheidbar
Betriebssystem
Aus demselben
Grund kann nur
der gesamte Inhalt
einer Partition auf
die Platte ausgelagert werden
(swapping) und
an dieselbe Stelle
zurückgeschrieben
werden.
Partition 1
f
Partition 2
Partition 3
0x010101FF
0x23040501
pointer (Adresse)
integer
Partition 4
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 10 -
Universität Dortmund
Einsatzbereiche
• Sehr einfache Rechner,
eingebettete Systeme (Handys,
Fahrzeugelektronik).
• Systeme, bei denen die
Programme von vornherein alle
bekannt sind.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 11 -
Universität Dortmund
Beurteilung
Nachteile:
• Sehr starke „externe Fragmentierung“
(Speicherbereiche bleiben ungenutzt).
• Adressraum durch real vorhandenen Speicher
beschränkt.
• Man muss den Speicherbedarf von
Applikationen recht genau kennen, um eine
möglichst passende Speichergröße zuzuweisen.
• Risiko des Prozessabbruchs, wenn Speicher
nicht ausreicht.
 Gründe für bessere Verfahren.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 12 -
Universität Dortmund
4.4.1.2 Seiten-Adressierung (paging)
• Einteilung der realen Adressen in Bereiche gleicher Länge
(Seitenrahmen, Kacheln, page frames).
Kacheln
Seiten Prozess 2
0 1 2 3
0 1 2 3 4 5 6 7 8 ..
Seiten Prozess 1
0 1 2 3
Jede
Seite
kann auf
jeder
Kachel
gespeichert
werden.
• Einteilung der virtuellen Adressen in Bereiche konstanter
Länge (Seiten, pages)
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 13 -
Universität Dortmund
Seiten-Adressierung (paging)
Kacheln
0 1 2 3 4 5 6 7 8 ..
Seiten Prozess 1
Seitennr. Offset
Zu jedem Prozess
existiert eine
Tabelle, die
Seitentabelle.
0 1 2 3
0 1 2 3
virtuelle Adresse
Seiten Prozess 2
P1:Seite
Kachel
0
1
1
5
2
7
3
6
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
reale Adresse =
Anfangsadresse der
Kachel + Offset
Speicher - 14 -
Universität Dortmund
Vorteile
• Man muss sich nicht vorab überlegen, welchem
Speicherbereich (text, stack ,heap) man wie viel
Speicher zuweist.
• Jede Kachel des Speichers kann genutzt werden
(keine „externe Fragmentierung“).
• Lücken im virtuellen Adressraum (wie beim SPIM) sind
kein Problem.
• Virtuelle Adressräume aller Prozesse können bei 0
beginnen, nur bei getrennt übersetzten Prozeduren
sind Adressanpassungen erforderlich.
Nachteil ():
• „interne Fragmentierung“ (Seiten nicht unbedingt
gefüllt)
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 15 -
Universität Dortmund
Lücken im virtuellen Adressraum
Bei MIPS-Konvention: Adressbereiche zwischen Stack, Befehls- und
Datenadressen werden meist nicht benutzt.
virtueller Adressraum
Seitentabelle
0
Ungenutzte Seiten- bzw.
Segmentnummern: bei
der bisherigen Methode
werden Tafeleinträge
nicht benutzt!
Befehle
Daten
Stack
unbenutzt
Seitentafel benötigt großen zusammenhäng. Speicherbereich.
 Berücksichtigung von Lücken im virtuellen Adressraum:
nicht für jede mögliche Seite auch Einträge in der Seitentafel!
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 16 -
Universität Dortmund
Organisation der Adressabbildung
Schnelle Umrechnung von virtuellen auf reale Adressen!
Bei zusammenhängenden Adressen und Seitenadressierung:
virtuelle Adresse
Nummer des Worts in der
Seite („Offset“)
Seitennummer
Speicher
....
Seitentafel
-basis
+
Zugriffsrechte,
im Speicher?
Anfangsadressen
der
Kacheln
Seitentabelle
....
-länge
>
&
Reale
Adresse
Überprüfung
Weil Seitengröße immer eine 2er Potenz ist.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 17 -
Universität Dortmund
Hierarchische Seitentabellen
Mehrfache Verzweigung anhand einzelner Adressbits.
Erspart
Speicherung von
Seitentabellen in
manchen Teilen von
Adressbereichen
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 18 -
Universität Dortmund
Invertierte Seitentabelle
Selbst bei hierarchischen Seitentabellen kann ein großer
Speicherbedarf entstehen, v.a. bei großen Adressräumen
 „invertierte Seitentabellen“
virtuelle Adresse
Seitennummer
??
i
Kachel i zugeordnete Seite
# der
Einträge
= # der
Kacheln
Suche durch die gesamte Kacheltabelle wäre zu langsam
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 19 -
Universität Dortmund
Beschleunigung mittels Hashtabellen
virtuelle Adresse
Seitennummer
Tag
Index
Lineare Ketten von Zeigern auf Einträge in der invertierten
Seitentabelle, die zu einem bestimmten Seitenindex gehören
Hashtabelle
Sequentielle Suche nach
passendem Tag in der invertierten
Seitentabelle; kein Treffer, falls
Seite nicht im Speicher.
i
Kachel i zugeordnete Seite
# der
Einträge
= # der
Kacheln
Tradeoff: Laufzeit  Speicherplatz
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 20 -
Universität Dortmund
Sharing (shared libraries)
Einfache Idee: Seiten-Abbildungen mehrerer Prozesse
führen zur selben Kachel
virt. Adressen
Prozess A
0
Xlib 1
2
3
4
Seitentabelle
Prozess A
virt. Adressen
Prozess B
0
1
2
3
Xlib 4
Seitentabelle
Prozess B
realer
Speicher
j ? & …
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
0
1 Xlib
2
3
4
5
6
7
.
.
.
Speicher - 21 -
Universität Dortmund
Idee ist so nicht realisierbar
 Im gemeinsam genutzten Code kommen (virtuelle) Befehlsadressen
vor, die sich z.B. auf Adressen in diesem Code beziehen.
 Adressen müssen Seitennummern verwenden, die nach Abbildung
auf die realen Adressen über die jeweiligen Seitentafeln wieder auf
den gemeinsam genutzten Bereich verweisen.
 Wenn diese Seitennummern verschieden sind, so können sie nicht
korrekt im Code eingetragen werden (in eine Speicherzelle „passt“
nur eine Seitennummer).
 Nutzen Prozesse gemeinsamen Code, so muss
dieser bei der Seitenadressierung bei allen
beteiligten Prozessen auf dieselben virtuellen
Adressen abgebildet werden.
 Windows nutzt für gemeinsamen Code die obere Hälfte des
Adressbereichs und benutzt Absprachen zur Adressvergabe.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 22 -
Universität Dortmund
Realisierbares Sharing
Shared libraries befinden sich an derselben Stelle des
virtuellen Adressraums
virt. Adressen
Prozess A
0
Xlib 1
2
3
4
Seitentabelle
Prozess A
virt. Adressen
Prozess B
0
Xlib 1
2
3
4
Seitentabelle
Prozess B
realer
Speicher
j 1 & …
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
0
1 Xlib
2
3
4
5
6
7
.
.
.
Speicher - 23 -
Universität Dortmund
Beobachtungen
• Paging in der beschriebenen Form funktioniert ohne
größeren Speicher (Plattenlaufwerk, hard disc (HD)) als
weiteren Speicher.
• Wird bei Systemen ohne HD eingesetzt (in vielen
eingebetteten Systemen).
• Paging bietet Form des Speicherschutzes: Prozesse
können unterschiedliche Rechte zur Nutzung von
Speicherbereichen haben.
• Speicherschutz mittels paging ist grob: Wunsch, durch
verschiedene Prozesse auf Speicheradressen abgebildete
Peripheriegräte mit unterschiedlichen Rechten zu nutzen.
Häufig werden viele Peripheriegeräte auf dieselbe Seite
abgebildet.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 24 -
Universität Dortmund
Demand paging
Wenn größerer und langsamerer Speicher (HD) verfügbar:
Einteilung des Speichers in Bereiche konstanter Länge + automatisches
Auslagern selten benutzter Seiten sowie Einlagern von ausgelagerten
Seiten, wenn auf die entsprechenden Adressen zugegriffen wird.
Kacheln
Seiten Prozess 2
0 1 2 3
0 1 2 3
Platte
0
3
Auslagern einzelner Seiten auf die Platte und
 P. Marwedel,
Univ.
Dortmund,
Informatik
12, 2006
Rückschreiben
auf
beliebige
Kachel
möglich.
Seiten Prozess 3
0
0 1 2 3 4 5 6 7 8 ..
Seiten Prozess 1
Speicher - 25 -
Universität Dortmund
Paging
Paging ist mehrdeutig:
1. Einteilung des Speichers in
Bereiche konstanter Länge, evtl.
ohne Ein- und Auslagern (z.B.,
weil man Realzeit-Verhalten
erzielen will).
2. Benutzung im Sinne von demand
paging.
Speicher
4
5
Definition 2 ist die Gebräuchlichere.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 26 -
Universität Dortmund
Segmentadressierung (1)
Beispiel:
Zusammenhängenden
Speicherbereichen
(für Befehle, Daten, und den stack)
im Prozessadressenraum
werden zusammenhängende
Bereiche im realen Adressraum
zugeordnet.
Segment 1
(Befehle Prozess 1,
schreibgeschützt)
Segment 2
(Stack Prozess 2)
frei
Segment 4
(Befehle Prozess 2)
Segment 3
(Daten Prozess 1)
S. 5, Stack Proz.1
S. 6, Daten Proz.2
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 27 -
Universität Dortmund
Segmentadressierung (2)
Prozesse adressieren in jedem
Segment ab Adresse 0;
Beispiel:
Segment 1
(Befehle Prozess 1,
schreibgeschützt)
0 0100
Segment 2
(Stack Prozess 2)
0 0230
frei
Segment 4
(Befehle Prozess 2)
0304
0 0390
Segment 3
(Daten Prozess 1)
0 0520
Länge
0 0720
Bei jedem Speicherzugriff wird die
verdeckte Basis des jeweiligen
Segments zur virtuellen Adresse addiert.
S. 5, Stack Proz.1
S. 6, Daten Proz.2
0 0830
Zu jedem Prozess gehört eine Tabelle
der für ihre Segmente zu addierenden
Adressen (verdeckte Basen).
Prozess 2
1
Befehle
0100
0390
Daten
0520
0830
Stack
0720
0230
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Erfordert
Befehlssatz
mit separaten Befehlen für stackZugriffe
Speicher - 28 -
Universität Dortmund
Eigenschaften der Segmentadressierung (1)
• Speicherschutz: Abfrage der
Segmentlänge, R/W/E-Modi
• Beim Laden müssen keine
Adressen angepasst werden,
dies passiert stets zur
Laufzeit.
• Verschieben von Segmenten
ist möglich, da alle Adressen
mittels Änderung der
verdeckten Basis automatisch
angepasst werden.
• Auslagern ganzer Segmente
und Rückschreiben an
beliebige, ausreichend große
Lücke ist möglich.
Strategien zur Suche
einer ausreichend
großen, freien Lücke:
frei
frei
?
first fit
frei
best fit
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 29 -
Universität Dortmund
Eigenschaften der Segmentadressierung (2)
• Segmente können sich ausdehnen. Ist der anschließende
Speicher belegt, so müssen sie umkopiert werden.
• Ein Teil des Speichers außerhalb der Segmente bleibt
unbenutzt (externe Fragmentierung).
• Ggf. müssen Segmente verschoben werden, um
ausreichend große freie Bereiche herzustellen.
frei
?
frei
frei
frei
frei
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 30 -
Universität Dortmund
Adressabbildung bei Segmentadressierung
virtuelle Adresse
Nummer des Worts im
Segment („Offset“)
Segmentnummer
Speicher
....
Segmenttafel-basis
+
Zugriffsrechte,
im Speicher?
Segmenttabelle
SegVerdeckte
ment- Basen
längen
Reale
Adresse
....
-länge
>
+
Überprüfung
>
Fehler?
Bei zusammenhängenden Segmentnummern effizient.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 31 -
Universität Dortmund
2 Formen der Segmentadressierung
 Segmentnummern in separaten Registern
Beispiel: Intel Pentium
Kein Problem mit dem sharing: Segmentregister
müssen nur auf den gemeinsam genutzten Speicher
„zeigen“.
Wird von Microsoft nicht genutzt.
 Segmentnummern sind Teil der Adressen im
Speicher
Beispiel: PowerPC, IBM-Großrechner
Beim sharing dasselbe Problem wie bei
Seitenadressierung
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 32 -
Universität Dortmund
Kombination von Segment- und
Seitenadressierung
Segmentadressierung besitzt:
• Vorteile beim Sharing, wenn Segmentnummern in
Registern gespeichert werden.
• Nachteile durch externe Fragmentierung
 Kombination von Segment- und Seitenadressierung:
• Jedes Segment enthält Seiten, diese wiederum Worte
• Fragmentierung reduziert sich auf interne Fragmentierung
• Jede Kachel kann jede Seite aufnehmen (kein Kopieren)
• Vorteile bei shared libraries
virtuelle Adressen
Segmentnr. Seitennr. Offset
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 33 -
Universität Dortmund
Segmentadressierung mit
Seitenadressierung
virtuelle Adresse
Nummer des Worts
in der Seite („Offset“)
Speicher (derselbe)
Segmentnummer
Seitennummer
....
Zugriffsrechte,
im Speicher?
+
Segmentlängen
Basen
der
Seitentabellen
....
....
....

+
Überprüfung
Seite im
Speicher?
Benutzt?
Beschrieben?
Anfangsadressen der
Kacheln
>
Länge | Basis
der Segmenttafel
Überprüfung
Segmenttafel
Fehler?
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
&
Reale
Adresse
Speicher - 34 -
Universität Dortmund
Adressabbildung beim Intel 386
Segmentnummer
virtuelle Adresse
reale Adresse
12
16
LDT
Seitentabellenverzeichnis
+
&
Seitentabelle
10
10
&
LDTR, Register
für LDTBasisadresse
20
&
Controlregister
CR3
Die Local Descriptor Table LDT benötigt Einträge für den Bereich möglicher
Segmentnummern; Tabellen für unbenutzte Seiten sind nicht erforderlich. Diese
haben selbst wieder die Größe einer Seite. Adressübersetzungs-tabellen
können teilweise auf die Platte ausgelagert werden
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 35 -
Universität Dortmund
4.4.3 Translation Look-Aside Buffer (TLBs)
Seitentabellen und Segmenttabellen im Hauptspeicher:
 Jeder einzelne Zugriff auf einen Befehl oder ein Datum
erfordert zusätzliche Speicherzugriffe zur Umrechnung
von virtuellen in reale Adressen.
 Unakzeptable Verlangsamung der Ausführung.
 Einführung zusätzlicher, kleiner, schneller Hardwarespeicher, welche häufig die benötigten Tabelleneinträge
enthalten.
Diese heißen translation look aside buffer (TLB) oder
auch address translation memory (ATM).
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 36 -
Universität Dortmund
Die 3 Organisationsformen von TLBs
In jedem Fall enthalten die TLBs nur Auszüge aus den
vollständigen Tabellen, die weiterhin im Speicher sind.
Ist die gesuchte Seiten- bzw. Segmentnummer nicht im TLB
enthalten, so muss in der vollständigen Tabelle nachgesehen
werden.
Der Eintrag aus der vollständigen Tabelle verdrängt dann
einen Eintrag aus dem TLB nach einem noch zu
bestimmenden Algorithmus.
Drei Organisationsformen von TLBs:
1. direct mapping,
2. Mengen-assoziative Abbildung (set associative mapping),
3. und Assoziativspeicher (associative mapping).
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 37 -
Universität Dortmund
Direct Mapping
Die Seitennummer oder ein Teil davon adressiert den TLB.
virtuelle Adresse
Seitennummer
Tag
Nummer des Worts in der
Seite („Offset“)
Index
TLB
Tags
Zugriffsrechte,
im Speicher?
Anfangsadressen
der
Kacheln
=
&
Reale
Adresse
Tags gleich?
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 38 -
Universität Dortmund
Aliasing bei direct mapping
virtueller Adressraum
00004
0100
0200
0300
1000
TLB
Alle Seiten, deren Adressen im
Indexteil übereinstimmen, werden
derselben TLB-Zelle (demselben
Namen (Alias)) zugeordnet.
 Teilweise starkes Anwachsen
der Laufzeit.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 39 -
Universität Dortmund
Mengen-assoziative Abbildung
- Prinzip Zu jedem Index-Wert
gibt es n zugeordnete
Plätze, mit n>1.
virtueller Adressraum
oder
TLB
Sofern über die
vollständigen Tabellen im
Hauptspeicher abgebildet
werden muss, wird ein Platz
im TLB überschrieben, z.B.
der am Längsten nicht
benutzte
(least recently used (LRU)Strategie)
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 40 -
Universität Dortmund
Mengen-assoziative Abbildung
- Realisierung Beispiel: Setgrösse n=2
virtuelle Adresse
Seitennummer
Tag
Nummer des Worts in der
Seite („Offset“)
Index
TLB
ZugriffsTags rechte,
im Speicher?
=
Anfangsadressen
der
Kacheln
ZugriffsTags rechte,
im Speicher?
Anfangsadressen
der
Kacheln
=
&
Treffer?
1
Alles ok ?
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Reale Adresse
Speicher - 41 -
Universität Dortmund
Assoziativspeicher, associative mapping
- Prinzip virtueller Adressraum
Der Fall associative
mapping entsteht aus
dem set associative
mapping für „Anzahl
der Bits für den IndexTeil
 0“.
Jeder Platz des TLB
kann die VerwaltungsInformation für jede
beliebe Seite
enthalten (kein
aliasing).
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
oder
oder
oder
TLB
Speicher - 42 -
Universität Dortmund
Hardware-mäßige Realisierung mit content-adressable memory (CAM).
Assoziativspeicher, associative mapping
Ein CAM vergleicht den Tag-Bereich aller Zellen gleichzeitig mit dem
Beispiel: 4 Einträge im CAM angelegten Suchwert und liefert im Fall eines Treffers die übrigen
Informationen der betreffenden Zelle.
virtuelle Adresse
Nummer des Worts in der
Seite („Offset“)
Seitennummer
TLB = CAM
Tag
Zugriffsrechte,
im Speicher?
Anfangsadresse Tag
der
Kachel
=
Zugriffsrechte,
im Speicher?
Anfangsadresse Tag
der
Kachel
=
Zugriffsrechte,
im Speicher?
=
Anfangsadresse Tag
der
Kachel
Zugriffsrechte,
im Speicher?
Anfangsadresse
der
Kachel
=
&
1
Treffer?
Alles ok ?
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Reale Adresse
Speicher - 43 -
Universität Dortmund
Anwendung: Memory Management Unit
(MMU) Motorola MC 68851
Daten/Befehle
Prozessor
MC 68020
Kontrolle
virtuelle
Adressen
MMU
68851
Speicher
reale
Adressen
Adressbits (7:0)
Voll-assoziativer TLB mit 64 Einträgen
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 44 -
Universität Dortmund
4.4.4 Caches
Cache =
Speicher, der vor einen größeren, langsamen Speicher
geschaltet wird.
Im weiteren Sinn: Puffer zur Aufnahme häufig benötigter Daten.
Im engeren Sinn: Puffer zwischen Hauptspeicher und
Prozessor.
Prozessor
Cache
(Haupt-/Arbeits-)
Speicher
Ursprung: cacher (frz.): verstecken („versteckter Speicher“).
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 45 -
Universität Dortmund
Ablauf
Organisation von Caches (im engeren Sinn):
• Prüfung anhand der (virtuellen oder realen) Adresse, ob
benötigte Daten im Cache vorhanden sind
(„Treffer“; cache hit).
• Falls nicht (cache miss): Zugriff auf den (Haupt-) Speicher,
Eintrag in den Cache.
Prozessor
(Haupt-/Arbeits-)
Speicher
Cache
lese 0x600 
Adresse Daten
lese 0x400  0x400
9999
9999
5555
0x600 5555
lese 0x600 
5555
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
0x600 5555
Speicher - 46 -
Universität Dortmund
Prüfung auf cache hit: Cache-Zeilen (cache lines).
Such-Einheit im Cache: Cache-Zeile (cache line).
Adresse
tag
Index
Für line size
=4.
Cache-Zeile
=
Weniger tag bits, als wenn man jedem Wort tag bits zuordnen würde.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 47 -
Universität Dortmund
Cache-Blöcke (cache blocks) - 1 Die Blockgröße ist die Anzahl der Worte, die im Fall eines
cache misses aus dem Speicher nachgeladen werden.
Beispiel: (Blockgröße = line size):
0x88C0
0xC
0x88
0x22
0x88
=
4444
5555
7777
9999
5555
7777
9999
miss
Speicher
4444
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 48 -
Universität Dortmund
Cache-Blöcke (cache blocks) - 2 Wenn block size < line size, dann sind zusätzliche
Gültigkeitsbits erforderlich. Beispiel: Blockgröße = line size / 2.
Gültigkeitsbits
Block
0x88C0
0xC
0x88
0x22
1
0x88 0
=
1 7777
0
9999
7777
9999
miss
Speicher
4444
5555
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 49 -
Universität Dortmund
Cache-Blöcke (cache blocks) - 3 Wenn block size > line size, dann werden bei jedem miss
mehrere Zeilen nachgeladen.
Stets wird zuerst das gesuchte Wort, dann der Rest des
Blocks geladen.
Verbindung Speicher/Cache so entworfen, dass der Speicher
durch das zusätzliche Lesen nicht langsamer wird: Methoden
dazu:
1. Schnelles Lesen aufeinanderfolgender Speicherzellen (nibble mode,
block/page mode der Speicher)
2. Interleaving (mehrere Speicher-ICs mit überlappenden Zugriffen)
3. Block-Mode beim Buszugriff, Page-Mode beim Speicherzugriff
4. Fließbandzugriff auf den Speicher (EDO-RAM, SDRAM)
5. breite Speicher, die mehrere Worte parallel übertragen können.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 50 -
Universität Dortmund
Organisationsformen von Caches
• Direct mapping
Für caching von Befehlen besonders sinnvoll, weil bei
Befehlen aliasing sehr unwahrscheinlich ist.
• Set associative mapping
Sehr häufige Organisationsform, mit Set-Größe=2 oder 4,
selten 8.
• Associative mapping
Wegen der Größe eines Caches kommt diese
Organisationsform kaum in Frage.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 51 -
Universität Dortmund
Virtuelle und reale Caches
Virtuelle Caches (schnell)
Prozessor
virtuelle
Adressen
MMU
reale
Adressen
Speicher
reale
Adressen
Speicher
Cache
Daten
Reale Caches (langsamer):
Prozessor
virtuelle
Adressen
MMU
Cache
Daten
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 52 -
Universität Dortmund
Schreibverfahren
Strategien zum Rückschreiben Cache -> (Haupt-) Speicher
1. Write-Through (durchschreiben)
Jeder Schreibvorgang in den Cache führt zu einer
unmittelbaren Aktualisierung des (Haupt-) Speichers
Prozessor
Cache
[0x88C0] := 5555 
Speicher
[0x88C0] := 5555 
0x88C0
0x77C0 5555
4444
0x88C0
5555
4444
Index
Speicher wird Engpass, es sei denn, der Anteil an Schreiboperationen ist
klein oder der (Haupt-) Speicher ist nur wenig langsamer als der Cache.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 53 -
Universität Dortmund
Schreibverfahren
2. Copy-Back, conflicting use write back:
Rückschreiben erfolgt erst, wenn die Cache-Zeile
überschrieben wird.
Prozessor
Cache
[0x88C0]
[0x55C0]
[0x88C0]
:= 3333
5555 
9999
Speicher
[0x88C0] := 9999 
0x55C0 9999
3333
0x77C0
0x88C0
4444
5555
0x88C0
9999
4444
Index
Funktioniert auch bei großen Geschwindigkeitsunterschieden zwischen
Cache und Speicher. Vorkehrungen erforderlich, damit keine veralteten
Werte aus dem Speicher kopiert werden.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 54 -
Universität Dortmund
Realer Cache bei Prozesswechsel
(context switch)
Zu einer bestimmten Adresse im Cache gehört vor und nach
dem Prozesswechsel dieselbe Zelle im Speicher.
Prozessor
lese 0x88D0 
lese 0x88D0 
 3333
 4444
MMU
Cache
lese 0x22B0 
lese 0x11C0 
 3333
 4444
0x22B0 4444
0x11C0 3333
P1
P2
Prozess P1
Prozess P2
Seite
Kachel
Seite
Kachel
0x88D.
0x11C.
0x88D.
0x22B.
Speicher
lese 0x22B0 
lese 0x11C0 
 3333
 4444
0x11C0 3333
0x22B0
4444
 Bei Prozesswechsel
bleiben Informationen im
Cache korrekt. Keine
Aktionen erforderlich.
Eintrag 0x11C0 ist nach Rückschalten auf P1 immer noch korrekt.
Einträge 
überleben
evtl.
mehrere
Prozesswechsel!
Caches!
Speicher
- 55 P. Marwedel,
Univ.
Dortmund,
Informatik 12, 2006  Gut für große
Universität Dortmund
Realer Cache bei Seitenfehler
(Seite muss per demand paging eingelagert werden)
Zu einer bestimmten Adresse im Cache gehört vor und nach
dem Aus- & Einlagern von Seiten eine andere Information.
Prozessor
lese 0x77F0 
lese 0x88D0 
 3333
 5555
MMU
Cache
Speicher
lese 0x11C0 
lese 0x11C0 
 3333
 5555
0x11C0 5555
3333
P1
Vor Aus/Einlagern
Nach Aus/Einlagern
Seite
Kachel
Seite
Kachel
0x88D.
0x11C.
0x77F.
0x11C.
0x88D.
 Platte
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
lese 0x11C0 
lese 0x11C0 
 3333
 5555
0x11C0 5555
3333
 Bei Seitenfehlern
müssen alle CacheZeilen, die Kopien der
verdrängten Seite
enthalten, ungültig
erklärt werden.
Speicher - 56 -
Universität Dortmund
Bus snooping (Bus-Lauschen)
 Bei Seitenfehler müssen alle Cache-Zeilen, die Kopien
der verdrängten Seite enthalten, ungültig erklärt werden.
Prozessor
P1
MMU
Cache
0x11C0 3333
Speicher
0x11C0
3333
5555
Cache „lauscht“, ob ein Schreibvorgang in den Speicher eine
Zelle betrifft, von der er eine Kopie hat.
Wenn ja, dann erklärt er diese für ungültig.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 57 -
Universität Dortmund
Gemeinsam genutzte Seiten (sharing)
Kacheln
Seiten Prozess 2
0 1 2 3
0 1 2 3
0 1 2 3 4 5 6 7 8 ..
Seiten Prozess 1
Für gemeinsame Daten oder gemeinsame Befehle:
Eintrag derselben Kachel in mehrere Seitentabellen.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 58 -
Universität Dortmund
Realer Cache bei gemeinsam genutzter Seite
Annahme *: Beide Prozesse benutzen dieselbe virtuelle
Adresse für den gemeinsamen Speicherbereich
Prozessor
lese 0x88D0 
lese 0x88D0 
 3333
 3333
MMU
Cache
lese 0x11C0 
lese 0x11C0 
 3333
 3333
Speicher
lese 0x11C0 
 3333
0x11C0
3333
P1
P2
0x11C0 3333
Prozess P1
Prozess P2
Seite
Kachel
Seite
Kachel
0x88D.
0x11C.
0x88D.
0x11C.
 Nach Prozesswechsel
erhält P2 aus dem Cache
die richtigen Informationen
(unabhängig von *).
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 59 -
Universität Dortmund
Virtueller Cache bei Prozesswechsel
(context switch)
Zu einer bestimmten Adresse im Cache gehört vor und nach
dem Prozesswechsel eine andere Zelle im Speicher.
Prozessor
Cache
MMU
lese 0x88D0 
lese 0x88D0 
 3333
 4444
P1
P2
lese 0x88D0 
lese 0x88D0 
 3333
 4444
lese 0x22B0 
lese 0x11C0 
 3333
 4444
0x11C0 3333
0x22B0
0x88D0
0x88D0 4444
3333
 Bei Prozesswechsel
muss der Cache ungültig
erklärt werden.
Speicher
4444
Prozess P1
Prozess P2
Seite
Kachel
Seite
Kachel
0x88D.
0x11C.
0x88D.
0x22B.
Bei jedem Prozesswechsel gehen alle Informationen im Cache verloren.
 Schlecht
für große
Caches!
Speicher  P. Marwedel,
Univ.
Dortmund, Informatik 12, 2006
60 -
Universität Dortmund
Virtueller Cache bei Seitenfehler
Zu einer bestimmten Adresse im Cache gehört vor und nach
dem Seitenfehler dieselbe Information.
Prozessor
Cache
lese 0x88D0 
lese 0x88D0 
 3333
 3333
MMU
lese 0x88D0 
 3333
Speicher
lese 0x11C0 
 3333
0x11C0
3333
4444
P1
0x88D0 3333
 Bei
Seitenfehlern keine
Aktion im Cache.
Vor Aus-/Einlagern
Nach Aus-/Einlagern
Seite
Kachel
Seite
Kachel
0x88D.
0x11C.
0x77F.
0x11C.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 61 -
Universität Dortmund
Virtueller Cache bei gemeinsam genutzter
Seite (sharing)
Annahme: Beide Prozesse benutzen dieselbe virtuelle
Adresse für den gemeinsamen Speicherbereich
Prozessor
Cache
MMU
lese 0x88D0 
lese 0x88D0 
 3333
 3333
P1
P2
lese 0x88D0 
lese 0x88D0 
 3333
 3333
Speicher
lese 0x11C0 
lese 0x11C0 
 3333
 3333
0x11C0 3333
0x88D0
0x88D0 3333
3333
 Der zweite Prozess
füllt den Cache erneut.
Langsam, aber korrekt.
Prozess P1
Prozess P2
Seite
Kachel
Seite
Kachel
0x88D.
0x11C.
0x88D.
0x11C.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 62 -
Universität Dortmund
Virtueller Cache mit PIDs bei Prozesswechsel
(context switch)
Virtuelle Adresse wird um Prozessnummer (process identifier, PID) erweitert. Zu einer bestimmten Adresse im Cache gehört vor und nach dem
Prozesswechsel wieder dieselbe Zelle.
Prozessor
Cache
MMU
lese 0x288D0 
lese 0x188D0 
 3333
 4444
lese 0x288D0 
lese 0x188D0 
 3333
 4444
P1
P2
Speicher
lese 0x22B0 
lese 0x11C0 
 3333
 4444
0x11C0 3333
0x22B0
0x188D0 3333
0x288D0
4444
4444
 Bei Prozesswechsel keine
Aktion im Cache erforderlich.
Prozess P1
Prozess P2
Seite
Kachel
Seite
Kachel
Set associative mapping 
Eintrag für P1 würde erhalten.
 Gut für große Caches!
0x88D.
0x11C.
0x88D.
0x22B.
TLBs in der MMU könnten PIDs nutzen.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 63 -
Universität Dortmund
Virtueller Cache mit PIDs bei Seitenfehler
Zu einer bestimmten Adresse im Cache gehört vor und nach
dem Seitenfehler dieselbe Information.
Prozessor
Cache
lese 0x188D0 
lese 0x188D0 
 3333
 3333
MMU
lese 0x88D0 
 3333
Speicher
lese 0x11C0 
 3333
0x11C0
3333
4444
P1
0x188D0 3333
 Bei
Seitenfehlern keine
Aktion im Cache.
Vor Aus-/Einlagern
Nach Aus-/Einlagern
Seite
Kachel
Seite
Kachel
0x88D.
0x11C.
0x77F.
0x11C.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 64 -
Universität Dortmund
Virtueller Cache mit PIDs
bei gemeinsam genutzter Seite (sharing)
Prozessor
Cache
MMU
[0x188D0]:=7777 
lese 0x288D0 
lese 0x188D0 
 3333
 3333
P1
P2
lese 0x288D0 
lese 0x188D0 
 3333
 3333
0x288D0
0x
188D0 3333
0x188D0
7777
0x288D0 3333
Einträge für P1 und P2
können beide im Cache
existieren (z.B. bei set
associative mapping); sie
werden nicht abgeglichen
 mögliche Inkonsistenz
bzw. Inkohärenz
Speicher
lese 0x11C0 
lese 0x11C0 
 3333
 3333
0x11C0 3333
Prozess P1
Prozess P2
Seite
Kachel
Seite
Kachel
0x88D.
0x11C.
0x88D.
0x11C.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 65 -
Universität Dortmund
Cache-Kohärenz
Realer Cache
Virtueller Cache
mit PIDs
Virtueller Cache
Inhalt nach
Prozesswechsel
gültig
gültig, falls es
ausreichend viele
PIDs gibt
ungültig
Inhalt nach
Seitenfehler
modifizierte
Kachel ungültig
gültig
gültig*
Geschwindigkeit
langsam
schnell
schnell
Automatische
Kohärenz bei
Sharing
ja
nein
ja, aber Code muss
neu geladen
werden.
primäre
Anwendung
große Caches
kleine Caches; Befehlscaches, falls
dynamisches Überschreiben von
Befehlen verboten ist.
* Potenzielle Schwierigkeiten, wenn Cacheinhalte  Hauptspeicherinhalte.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher - 66 -
Universität Dortmund
Systeme mit mehreren Caches
Chip
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Speicher
Realer L2- Cache,
snooping; copy back
Realer L1
Datencache,
write-through
virtueller L1Befehlscache
Beispiel:
Speicher - 67 -
Universität Dortmund
Austauschverfahren
Überschreiben von Einträgen in TLB, Caches, Kacheln:
1. Random- bzw. Zufallsverfahren
Ein zufällig ausgewählter Eintrag wird überschrieben.
2. NRU, not recently used
Einteilung von Einträgen in 4 Klassen:
1. Nicht benutzte, nicht modifizierte Einträge
2. Nicht benutzte, modifizierte Seiten
Benutzt-Kennzeichnung wird nach einiger Zeit zurückgesetzt.
3. Benutzte, nicht modifizierte Seiten
4. Benutzte, modifizierte Seiten
Überschrieben wird ein zufällig ausgewählter Eintrag der niedrigsten
Klasse, die nicht-leer ist.
3. LRU=least recently used
Überschreiben des Eintrags, der am längsten nicht benutzt wurde.
 P. Marwedel, Univ. Dortmund, Informatik 12, 2006
Pentium CacheFilm
Speicher - 68 -