3.4 Speicher
187
Hauptspeicheradressen bestehen [212]. Wenn der Cache keine gültige Kopie enthält,
muss die Information aus dem Hauptspeicher automatisch nachgeladen werden.
Caches wurden ursprünglich eingeführt, um eine gute Laufzeiteffizienz zu ermöglichen. Der Name ist von dem französischen Wort cacher (verstecken) abgeleitet,
was darauf deuten soll, dass Programmierer diesen Speicher nicht sehen oder sich
um ihn kümmern müssen, weil die Aktualisierung des Speichers automatisch durch
die Hardware erfolgt. Caches sind allerdings nicht mehr so versteckt, wenn große
Datenmengen adressiert werden. Dies wurde sehr schön von Drepper gezeigt [139].
Drepper analysierte die Ausführungszeiten eines Programms, welches eine lineare Liste von Einträgen durchläuft. Jeder Eintrag enthielt NPAD 64-Bit-Worte sowie
einen 64-Bit-Zeiger auf das Folgeelement. Für einen Pentium P4-Prozessor mit 16
kB Level-1 Cache und 1 MB Level-2 Cache wurden die Ausführungszeiten bestimmt.
Dabei wurden für den Level-1 Cache, den Level-2 Cache und den Hauptspeicher Zugriffszeiten von vier, vierzehn und 200 Taktzyklen angenommen. Abb. 3.43 zeigt die
durchschnittliche Anzahl von Zyklen pro Zugriff auf ein Listenelement als Funktion
der Gesamtgröße der Liste für den Fall NPAD=0. Für kleine Listengrößen reichen vier
Arbeitsmengengröße [Byte]
0
1
2
3
4
5
6
7
8
9
10
2
2
2
2
2
2
2
10
13
16
19
22
25
28
Zyklen/Zugriff
Abb. 3.43 Durchschnittliche Anzahl der Zyklen pro Zugriff für NPAD=0
Zyklen pro Element aus. Dies bedeutet, dass wir fast immer auf den Level-1 Cache
zugreifen, da dieser für diese Listengröße ausreicht. Für größere Listen benötigen
wir acht Zugriffe pro Element. In diesem Fall greifen wir fast immer auf den Level-2
Cache zu. Da der Cache aus Blöcken besteht, die jeweils zwei Listenelemente speichern können, wird im Mittel nur etwa bei jedem zweiten Listenelement wirklich
auf den Cache zugegriffen. Für noch größere Listen steigt die Zugriffszeit auf neun
Zyklen. In diesem Fall ist die Liste größer als der Level-2 Cache, aber das automa-
Précédent

- 209/485

Suivant