Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik 1 - HS 2017 Übung 11 Datum: 21. 22. 12. 2017 Virtueller Speicher 1 Performanz Gehen Sie von einem virtuellen Speichersystem mit TLB aber ohne Cache aus. Falls ein Datenzugriff zu einem TLB-Miss führt, wird die entsprechende Instruktion unterbrochen (eine TLB-Miss-Ausnahme wird ausgelöst) und der TLB-Miss behoben. Dann erfolgt eine Wiederholung der Instruktion. Falls eine Instruktion zu einem Seitenfehler führt, wird sie unterbrochen (eine Page-Fault-Ausnahme wird ausgelöst) und die Bearbeitung des Seitenfehlers wird durchgeführt, die auch den entsprechenden Eintrag im TLB anpasst. Anschliessend wird die Instruktion wiederholt. Es sind folgende Variablen und Daten gegeben: Zugriffs- und Suchzeit im TLB: s = 5ns TLB-Missrate: m = 0.02 Mittlere Zugriffszeit zum Hauptspeicher: h = 10ns Mittlere TLB-Miss-Bearbeitungszeit: o = 100ns Seitenfehlerrate: p = 10 6 Mittlere Seitenfehler-Bearbeitungszeit: f = 1ms (a) Bestimmen Sie zunächst allgemein die effektive Speicherzugriffszeit. Setzen Sie dann die gegebenen werte ein. (b) Gehen Sie jetzt davon aus, dass aufeinanderfolgende Zugriffe auf den virtuellen Speicher unabhängig voneinander sind und zufällig auf eine der möglichen Adressen erfolgen. Die Seitengröße ist 2 12 Byte, der physikalische Adressraum beträgt 2 29 Byte und der virtuelle Adressraum beträgt 2 32 Byte. Der TLB enthält 2 12 Seiteneinträge. Bestimmen Sie die TLB-Missrate, die Seitenfehlerrate und die effektive Speicherzugriffszeit in diesem Fall. 1
2 TLB, Seitentabelle und Cache Ein Speichersystem hat die folgenden Eigenschaften: Es existiert nur ein Prozess. Der Speicher ist byteadressiert, jeder Zugriff liefert ein einzelnes Byte. Die virtuelle Adresse hat eine Länge von 32 Bit. Der physikalische Speicher ist 2 26 Byte gross. Eine Seite enthält 2 12 Byte. Der Cache hat 2 10 Zeilen und ist 4-fach assoziativ (4-way set associative) mit einer Block- Datengrösse von 8 Byte. (a) Wie viele Bytes Nutzdaten kann der Cache speichern? (b) Betrachten Sie, wie die CPU die 32 Bit Adressen mit Hilfe von Seitentabelle und Cache verarbeitet. Welche Bits der virtuellen Adresse werden benutzt um die Seitennummer zu bestimmen, welche für den Seitenoffset? Welche Bits der physikalischen Adresse werden benutzt um die Seitennummer zu bestimmen, welche für den Seitenoffset? Wie werden die Bits der physikalischen Adresse für die Cacheadressierung aufgeteilt? (c) Wieviele virtuellen Seiten sind in der Seitentabelle enthalten? Wie viele Bits hat eine Seitentabelle wenn Speicher für alle Zeilen der Seitentabelle allokiert wird? (d) Was ist die grösste Zahl von Tabelleneinträgen, die zu irgendeinem Zeitpunkt ihr Valid-Bit auf 1 gesetzt haben können? (e) Wieviele Blöcke des virtuellen Adressraums konkurrieren um die Blöcke in einer Cache-Zeile? (f) Betrachten Sie die virtuelle Adresse 0x510861. In wie vielen unterschiedlichen Blöcken im Cache könnten die Daten gespeichert sein (geben Sie auch die entsprechende(n) Cachezeile(n) an)? 3 TLB, Seitentabelle und Cache Wir betrachten ein Speichersystem mit einem TLB und einem L1 Datencache: Der Speicher wird byteweise adressiert, jeder Zugriff erfolgt also auf ein einziges Byte. Die virtuelle Adresse umfasst 14 Bit, die physikalische Adresse umfasst 12 Bit. Die Grösse einer Seite beträgt 64 Byte. Der TLB ist 2-fach assoziativ (two-way set associative) mit insgesamt 4 Zeilen. Der L1 Datencache ist direkt abgebildet (direct mapped) mit 16 Zeilen und eine Blockgrösse von 4 Byte. Zu einem bestimmten Zeitpunkt im Ablauf haben die Seitentabelle (nur die ersten 16 Einträge sind gezeigt), der TLB und der Cache die folgenden Inhalte. bedeutet die physikalische Seitennummer (physical page number), bedeutet die virtuelle Seitennummer (virtual page number) und alle Zahlen sind in hexadezimaler Schreibweise angegeben. Leere Einträge bedeuten, dass der Inhalt nicht relevant für die Aufgabenstellung ist. 2
TLB: Index Tag Valid Tag Valid 0 05 0 12 42 1 1 02 20 1 04 32 1 2 01 22 1 07 0 3 01 22 1 02 0 Seitentabelle: Valid 00 01 02 1 02 03 1 03 04 05 06 22 1 07 22 1 Valid 08 09 20 1 0a 0b 0c 0d 04 1 0e 0f Cache: Index Tag Valid Byte[0] Byte[1] Byte[2] Byte[3] 0 00 1 de ad f a ce 1 31 2 24 1 02 13 e1 de 3 22 1 22 23 e2 2e 4 21 5 22 6 18 7 22 1 9a 01 00 de 8 20 9 22 1 83 1a 09 ce a 20 1 0d 1f f 1 d0 b 3a c 3f d 24 1 be f b 57 02 e 23 f 22 1 cf 7a 9b a0 Für jeweils gegebene virtuelle Adressen sollen Sie die folgenden Tabellen ergänzen. Beachten Sie, dass sich nicht alle Einträge mit den vorliegenden Angaben ermitteln lassen. (a) Als Vorbereitung bestimmen Sie zunächst, wie die virtuelle Adresse in die virtuelle Seitennummer und den Seitenoffset aufgeteilt wird. Bestimmen Sie zudem, welche Bits den bilden und welche den. Für die physikalische Adresse bestimmen Sie die Aufteilung in die physikalische Seitennummer und den Seitenoffset. Bestimmen Sie zudem, welche Bits den, den und den bilden. (b) Virtuelle Adresse: 0x0268 Virtuelle Adresse: 13 12 3
(c) Virtuelle Adresse: 0x0197 Virtuelle Adresse: 13 12 (d) Virtuelle Adresse: 0x035e Virtuelle Adresse: 13 12 4
(e) Virtuelle Adresse: 0x021a Virtuelle Adresse: 13 12 5