Übung 10

Institut für
Technische Informatik und
Kommunikationsnetze
Prof. L. Thiele
Technische Informatik 1 - HS 2015
Übung 10
Datum:
17. – 18. 12. 2015
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
Parameterwerte 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 212
Byte, der physikalische Adressraum beträgt 229 Byte und der virtuelle Adressraum beträgt 232
Byte. Der TLB enthält 212 Seiteneinträge.
Bestimmen Sie die TLB-Missrate, die Seitenfehlerrate und die effektive Speicherzugriffszeit in diesem Fall.
1
2
Seitenfehler
Betrachten Sie das folgende 2-dimensionale Array int X[32][32], wobei eine Integer-Variable 8 Byte
belegt. Gehen Sie weiterhin davon aus, dass das Array X so gespeichert ist, dass X[0][1] im virtuellen
Adressraum direkt auf X[0][0] folgt.
Die Ersetzungsstrategie für fehlende Seiten ist LRU. Der physikalische Speicher enthält 4 Seiten mit einer
Grösse von je 512 Byte. Zu Beginn enthält der physikalische Speicher keine gültigen Seiten.
Weiteris sind die folgende zwei Code-Fragmente gegeben:
/* Fragment 2: */
for (int i=0; i < 32; i++)
for (int j=0; j < 32; j++)
X[i][j]++;
/* Fragment 1: */
for (int j=0; j < 32; j++)
for (int i=0; i < 32; i++)
X[i][j]++;
Welches Code-Fragment liefert die wenigsten Seitenfehler? Bestimmen Sie die Zahl der Seitenfehler für
jedes Code-Fragment.
3
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 226 Byte gross. Eine
Seite enthält 212 Byte.
• Der Cache hat 210 Zeilen und ist 4-fach assoziativ (4-way set associative) mit einer Blockgrösse
von 8 Byte.
(a) Wie viele Bytes Nutzdaten kann der Cache speichern?
(b) Betrachten Sie, wie die 32 Bit Adressen die CPU mit Hilfe von Seitentabelle und Cache verarbeitet
werden. i 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
mindestens?
(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 Orten im Cache
könnten die Daten gespeichert sein (geben Sie auch die entsprechende(n) Cachezeile(n) an)?
2
4
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 is 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 bestimmte Zeitpunkt im Ablauf haben die Seitentabelle (nur die ersten 16 Einträge sind
gezeigt), der TLB und der Cache die folgenden Inhalte. PPN bedeutet die physikalische Seitennummer
(physical page number), VPN 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.
TLB:
Index
0
1
2
3
Tag
05
02
01
01
Seitentabelle:
VPN PPN
00
01
02
02
03
03
04
05
06
22
07
22
PPN
20
22
22
Valid
1
1
1
1
Valid
0
1
1
1
Tag
12
04
07
02
PPN
42
32
VPN
08
09
0a
0b
0c
0d
0e
0f
Valid
1
1
0
0
PPN
Valid
20
1
04
1
3
Cache:
Index
0
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f
Tag
00
31
24
22
21
22
18
22
20
22
20
3a
3f
24
23
22
Valid
1
Block[0]
de
Block[1]
ad
Block[2]
fa
Block[3]
ce
1
1
02
22
13
23
e1
e2
de
2e
1
9a
01
00
de
1
1
83
0d
1a
1f
09
f1
ce
d0
1
be
fb
57
02
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 TLB-Index bilden und
welche den TLB-Tag. Für die physikalische Adresse bestimmen Sie die Aufteilung in die physikalische Seitennummer und den Seitenoffset. Bestimmen Sie zudem, welche Bits den Blockoffset, den
Cacheindex und den Cachetag bilden.
(b) Virtuelle Adresse: 0x0268 Virtuelle Adresse:
13
12
11
10
9
8
7
6
5
4
3
1
0
Übersetzung der virtuellen Adresse:
Parameter
Wert
VPN
TLB-Index
TLB-Tag
TLB-Hit (j/n)
Seitenfehler (j/n)
PPN
Physikalische Adresse:
11
10
9
8
Daten:
Parameter
Blockoffset
Cacheindex
Cachetag
Cachehit (j/n)
resultierendes Datenbyte
7
6
5
4
Wert
4
3
2
2
1
0
(c) Virtuelle Adresse: 0x0197 Virtuelle Adresse:
13
12
11
10
9
8
7
6
5
4
3
1
0
4
3
1
0
4
3
2
1
0
2
1
0
2
1
0
Übersetzung der virtuellen Adresse:
Parameter
Wert
VPN
TLB-Index
TLB-Tag
TLB-Hit (j/n)
Seitenfehler (j/n)
PPN
Physikalische Adresse:
11
10
9
8
7
Daten:
Parameter
Blockoffset
Cacheindex
Cachetag
Cachehit (j/n)
resultierendes Datenbyte
6
5
4
3
2
Wert
(d) Virtuelle Adresse: 0x035e Virtuelle Adresse:
13
12
11
10
9
8
7
6
5
Übersetzung der virtuellen Adresse:
Parameter
Wert
VPN
TLB-Index
TLB-Tag
TLB-Hit (j/n)
Seitenfehler (j/n)
PPN
Physikalische Adresse:
11
10
9
8
7
Daten:
Parameter
Blockoffset
Cacheindex
Cachetag
Cachehit (j/n)
resultierendes Datenbyte
6
5
4
3
2
Wert
(e) Virtuelle Adresse: 0x021a Virtuelle Adresse:
13
12
11
10
9
8
7
6
5
5
Übersetzung der virtuellen Adresse:
Parameter
Wert
VPN
TLB-Index
TLB-Tag
TLB-Hit (j/n)
Seitenfehler (j/n)
PPN
Physikalische Adresse:
11
10
9
8
Daten:
Parameter
Blockoffset
Cacheindex
Cachetag
Cachehit (j/n)
resultierendes Datenbyte
7
6
5
4
Wert
6
3
2
1
0