Lösungsvorschlag zur 6. Übung, GdI 3

Transcription

Lösungsvorschlag zur 6. Übung, GdI 3
Prof. Frederik Armknecht
Sascha Müller
Daniel Mäurer
Grundlagen der Informatik 3
Wintersemester 09/10
Lösungsvorschlag zur 6. Übung
1 Präsenzübungen
1.1 Schnelltest
a) Caches und virtueller Speicher können folgendermaßen verglichen werden:
2 Die Assoziativität in Caches entspricht der Kachelgröße im virtuellen Speicher.
4 Blöcke und Blockgröße in Caches entsprechen Seiten und Seitengrößen.
4 Der Cache-Index entspricht der Seitennummer.
4 Ein Cache-Miss entspricht einem Seitenfehler (page fault).
2 Caches und virtueller Speicher können nicht sinnvoll verglichen werden.
b) Welche der folgenden Aussagen über virtuellen Speicher, die Seitentabelle und die
Adressabbildung sind richtig?
4 Jeder Prozess besitzt eine eigene Seitentabelle.
2 Jeder Prozess besitzt Lese- und Schreibzugriff auf die Seitentabelle.
2 Die Seitentabelle ordnet jeder physischen Speicherseite die darin enthaltene
virtuelle Speicherseite zu.
2 Die Seitentabelle wird im Hintergrundspeicher gehalten.
4 Die Seitentabelle kann in den Hintergrundspeicher ausgelagert werden.
4 Die Seitentabelle kann mehrstufig sein.
2 Die virtuelle Seitengröße entspricht immer der physischen.
1.2 Caches revisited
Wir betrachten noch einmal einen direkt-abbildenden Cache. Folgende Eigenschaften sind
gegeben:
• 16-Bit Adressgröße
• Blockgröße 256 Bytes
• 16 Cache-Blöcke
a) Ermitteln Sie die Bitbreite von Tag, Index und Blockoffset.
Tag 4 Bit, Blockoffset 8 Bit, Index 4 Bit
b) Ermitteln Sie für die folgenden Zugriffe, ob es sich um Hits oder Misses handelt. Tragen Sie in die untere Tabelle jeweils ein, wie sich der Cacheinhalt verändert. Den ersten Eintrag haben wir für Sie bereits vorgenommen.
Zugriff
Hit/Miss
0x0D3A
Miss
0x0AD0
Hit
0x32C7
Miss
0x017D
Miss
0x1888
Miss
0x0A9C
Miss
0x4F0E
Miss
1
0x2752
Miss
0x6D6A
Miss
0x510B
Miss
0x14B3
Miss
0x78B3
Miss
0x014B
Miss
0x0D8D
Hit
0x0AA3
Hit
Lösungsvorschlag zur 6. Übung
Index
0
1
Valid
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Grundlagen der Informatik 3, WS 09/10
Tag
Daten
x
0
5
0
3
Mem[0x0000 - 0x00FF]
Mem[0x5100 - 0x51FF]
Mem[0x0100 - 0x01FF]
Mem[0x3200 - 0x32FF]
x
1
Mem[0x1400 - 0x14FF]
x
x
2
7
1
Mem[0x2700 - 0x27FF]
Mem[0x7800 - 0x78FF]
Mem[0x1800 - 0x18FF]
x
0
Mem[0x0A00 - 0x0AFF]
x
0
6
Mem[0x0D00 - 0x0DFF]
Mem[0x6D00 - 0x6DFF]
x
4
Mem[0x4F00 - 0x4FFF]
x
c) Wir betrachten nun einen zweifach-assoziativen Cache mit denselben Werten wie
oben (und derselben Gesamtzahl von Cacheblöcken). Welche Bitbreiten ändern sich
hierdurch? Ändert sich die Gesamtgröße des Caches (einschließlich Verwaltungsinformationen)?
Der Cache hat nur noch 8 Zeilen, wodurch der Index nur noch aus 3 Bit besteht und
der Tag ein Bit größer wird.
Der Cache wird insgesamt größer, denn die Tag-Felder werden größer.
d) Inwieweit ist eine solche Variante des Caches „besser“ als die aus Aufgabenteil a)?
Würden sich weitere Verbesserungen ergeben, wenn man einen 16-fach assoziativen
Cache verwenden würde?
Wenn ein Cache eine niedrige Assoziativität hat, kann es sein, dass einige CacheEinträge ungenutzt bleiben (wenn nämlich keine der verwendeten Adressen die
entsprechenden Index-Bits aufweist). Die Wahrscheinlichkeit für so einen Fall ist geringer, wenn es weniger Cache-Zeilen gibt. Somit verbessert sich die Ausnutzung
des Caches mit höherer Assoziativität.
Andererseits steigt hierdurch auch der Aufwand, eine Seite im Cache zu suchen, da
mehr Tag-Felder verglichen werden müssen. Bei schnellen Hardware-Caches wird
hierbei ein paralleler Vergleich der Tags durchgeführt (vgl. Kap. 5, Folie 46). Daher
vergrößert sich der Hardware-Aufwand mit erhöhter Assoziativität, wodurch der
Cache letztlich teurer wird.
1.3 Seitenflattern
Gegeben ist ein System mit virtuellem Speicher und der Seitenersetzungsstrategie LRU. Die
Seitengröße beträgt 4096 Bytes, ein int ist 4 Bytes groß. Die Matrix
int m [256][256];
/* 256 x 256 Matrix */
2
Lösungsvorschlag zur 6. Übung
Grundlagen der Informatik 3, WS 09/10
beginnt mit der zweiten Seite des virtuellen Adressraums (d. h. die virtuelle Adresse von
m[0][0] ist 4096). Beachten Sie, dass Matrizen in C zeilenweise abgespeichert werden.1
Das Programm liegt in der ersten Seite des virtuellen Adressraums.
a)
1
2
3
4
5
for ( i =0; i <=255; i ++){
for ( k =0; k <=255; k ++){
m [ i ][ k ] = 0;
}
}
1
2
3
4
5
for ( i =0; i <=255; i ++){
for ( k =0; k <=255; k ++){
m [ k ][ i ] = 0;
}
}
b)
Einem Prozess stehen zur Ausführung einer dieser beiden Programmvarianten drei physische Speicherseiten zur Verfügung. Das Programm befindet sich bereits in Seite 1, zwei
weitere Seiten sind noch frei.
Wieviele Seitenfehler werden von den beiden Varianten (a) und (b) erzeugt?
Das Programm und die Matrix sind wie folgt im virtuellen Speicher angeordnet:
Adresse
0
Seite
0
4 096
1
8 192
2
Programm
m[0][0]
m[1][0]
m[2][0]
m[3][0]
m[4][0]
..
..
..
..
m[0][255]
m[1][255]
m[2][255]
m[3][255]
...
m[7][255]
12 288
3
...
262 144
64
m[252][0]
...
m[255][255]
Für die Hauptspeicherzugriffe gilt:
1 Bei
der Notation m[i][k] bezeichnet also k den Zeilen- und i den Spaltenindex, wobei alle Elemente einer
Zeile aufeinanderfolgend im Speicher liegen.
3
Lösungsvorschlag zur 6. Übung
Grundlagen der Informatik 3, WS 09/10
Es wird immer abwechselnd auf die Programmseite und eine Matrixseite zugegriffen, d. h.
direkt vor einem Zugriff auf ein Matrixelement findet ein Programmzugriff statt. Aus der
Verwendung der LRU-Strategie und der Tatsache, dass drei Hauptspeicherseiten zur Verfügung stehen, folgt, dass die Programmseite nicht ausgelagert wird. Stattdessen wird
immer diejenige Matrixseite ausgelagert, die vom letzten Matrixzugriff nicht betroffen
war.
a) Es erfolgt ein zeilenweiser Zugriff auf die Matrix. Da eine Matrixseite komplett abgearbeitet wird, muss sie nur genau einmal eingelagert werden. Daher treten 64 Seitenfehler auf.
b) Zugriffsreihenfolge auf die Matrixelemente:
m[0][0]
m[0][1]
m[1][0]
m[2][0]
m[1][1]
m[2][1]
...
m[0][255] m[1][255] m[2][255]
...
...
m[255][0]
m[255][1]
...
m[255][255]
Jeweils nach der Bearbeitung von 4 Matrixelementen tritt ein Seitenfehler auf. Folglich erhält man 256 · 256/4 = 16 384 Seitenfehler.
1.4 Virtueller Speicher
Ein Prozess bestehe aus 5 Seiten im virtuellen Adressraum und habe zwei Kacheln mit den
Adressen A1 und A2 im Hauptspeicher zur Verfügung. Die Referenzreihenfolge auf die virtuellen Seiten sei wie in nachstehender Tabelle angegeben, wobei n l einen Lesezugriff und
n s einen Schreibzugriff auf die n-te Seite bedeutet. Wir nehmen LRU als Seitenersetzungsstrategie an.
a) Führen Sie Buch über die Speicherbelegung, indem Sie die leeren Felder in der Tabelle
wie folgt ausfüllen:
• Unter Seitenfehler sollen Sie eintragen, ob die jeweilige Referenz zu einem Seitenfehler führt (ja) oder nicht (nein).
• Unter A1 und A2 sollen Sie die Seite angeben, die sich nach der Referenz in der
jeweiligen Speicheradresse befindet.
• Unter zurückgeschrieben sollen Sie die Seite angeben, die auf die Platte zurückgeschrieben werden muss. Ist kein Zurückschreiben erforderlich, so tragen sie
„—“ ein.
Referenz
1l
2s
4s
2l
5l
3s
2s
3l
1s
Seitenfehler
ja
ja
ja
nein
ja
ja
ja
nein
ja
A1
1
1
4
4
5
5
2
2
1
4
A2
2
2
2
2
3
3
3
3
zurückgeschrieben
keine
keine
4
2
keine
keine
2
Lösungsvorschlag zur 6. Übung
Grundlagen der Informatik 3, WS 09/10
b) Führen Sie Buch über den Inhalt der Seitentabelle des Prozesses, welche aus einer
P-Spalte (Present-Bit) und einer Adr.-Spalte (physische Speicheradresse) besteht. In
den unteren Tabellen ist zunächst der Zustand der Seitentabelle vor der Ausführung
angegeben. Dabei steht die i-te Zeile jeder Tabelle für die i-te virtuelle Speicherseite.
Tragen Sie für jeden Zugriff nur die Änderungen gegenüber dem jeweiligen Vorzustand
der Tabelle ein.
1l
P
0
0
0
0
0
Adr.
A2
A1
A1
A2
A1
P
1
5l
P
Adr.
P
Adr.
1
A2
3s
P
0
1
0
1
Adr.
A1
2s
A1
Adr.
4s
P
0
Adr.
1
A1
2s
P
Adr.
1
A1
2l
P
3l
P
Adr.
Adr.
1s
P
1
0
Adr.
A1
A2
0
2 Hausübungen
2.1 Adressumrechnung
Für ein Computersystem mit virtuellem Speicher sind die folgenden Daten bekannt:
• 11 Bit Seitenoffset (Byteadressierung)
• 32 virtuelle Seiten
• 8 physische Seiten
a) Wie groß ist der virtuelle Adressraum des Systems?
0,5 Punkte
Der virtuelle Adressraum umfasst 25 · 211 Byte = 64 kB.
b) Wieviel physischen Speicher hat das System?
0,5 Punkte
Der physische Speicher beträgt 23 · 211 Byte = 16 kB.
c) Wieviele Bits werden für die Adressierung der virtuellen Seiten benötigt? 0,5 Punkte
Um 32 virtuelle Seiten zu adressieren werden 5 Bit benötigt.
d) Wieviele Bits werden für die Adressierung der physischen Seiten benötigt?
0,5 Punkte
Um 8 physische Seiten zu adressieren werden 3 Bit benötigt.
5
Lösungsvorschlag zur 6. Übung
Grundlagen der Informatik 3, WS 09/10
e) Betrachten Sie die nachstehende Momentaufnahme der Seitentabelle eines Prozesses.
Geben Sie für die folgenden Zugriffe auf virtuelle Speicheradressen die vom Betriebssystem zu ermittelnde physische Speicheradresse an. Zur Ihrer Hilfe ist auf der nächsten Seite eine Tabelle vorgegeben. Führt der Zugriff zu einem Seitenfehler, so schreiben Sie unter Phys. Adresse einfach „Seitenfehler“.
0x42ed, 0xb84b, 0xaf1e, 0xe6d8, 0x1f2c, 0x1348, 0xa324, 0xe5b6
0xb8ed, 0x4209, 0xa0d3, 0xb81e, 0x5d93, 0x95d7, 0x10db, 0xe11d
Dabei sollen die Zugriffe unabhängig von einander erfolgen. Sie sollen also keine Einoder Auslagerung von Seiten betrachten, so dass sich die Seitentabelle nicht ändert.
8 Punkte
0
1
2
3
4
5
6
7
P
0
0
0
0
0
0
0
0
Seitennr.
7
5
6
3
3
4
4
6
P
1
0
0
0
0
0
0
0
Seitennr.
2
4
7
6
5
2
1
6
Virt. Adresse
0x42ed
0xb84b
0xaf1e
0xe6d8
0x1f2c
0x1348
0xa324
0xe5b6
0xb8ed
0x4209
0xa0d3
0xb81e
0x5d93
0x95d7
0x10db
0xe11d
Seitennr.
8
23
21
28
3
2
20
28
23
8
20
23
11
18
2
28
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
P
0
0
1
0
1
1
0
1
Seitennr.
2
2
1
5
0
5
2
3
Seitenoffset
0x2ed
0x4b
0x71e
0x6d8
0x72c
0x348
0x324
0x5b6
0xed
0x209
0xd3
0x1e
0x593
0x5d7
0xdb
0x11d
6
24
25
26
27
28
29
30
31
Phys. Adresse
0x12ed
0x184b
0x2f1e
0x26d8
Seitenfehler
Seitenfehler
0x324
0x25b6
0x18ed
0x1209
0xd3
0x181e
Seitenfehler
0xdd7
Seitenfehler
0x211d
P
1
0
0
1
1
0
0
0
Seitennr.
7
1
6
6
4
6
4
4