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