Grundlagen der Informatik III Wintersemester 2010/2011 â 15 ...
Grundlagen der Informatik III Wintersemester 2010/2011 â 15 ...
Grundlagen der Informatik III Wintersemester 2010/2011 â 15 ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Grundlagen</strong> <strong>der</strong> <strong>Informatik</strong> <strong>III</strong><br />
<strong>Wintersemester</strong> <strong>2010</strong>/<strong>2011</strong> – <strong>15</strong>. Vorlesung<br />
Dr.-Ing. Wolfgang Heenes<br />
int main() {<br />
printf("Hello, world!");<br />
return 0;<br />
}<br />
msg:<br />
main:<br />
.data<br />
.asciiz "Hello, world!"<br />
.text<br />
.globl main<br />
la $a0,msg<br />
li $v0,4<br />
syscall<br />
jr $ra<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 1
Inhalt<br />
1. Literatur<br />
2. Caches<br />
3. Anschauung <strong>der</strong> Organisation <strong>der</strong> Caches<br />
4. Anordnung <strong>der</strong> Index-Bits<br />
5. Beurteilung <strong>der</strong> Caches<br />
6. Zusammenfassung und Ausblick<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 2
Literatur<br />
[BO10] Bryant, Randal E. und David R. O´Hallaron: Computer Systems - A<br />
Programmer´s Perspective.<br />
Prentice Hall, <strong>2010</strong>.<br />
[PH05] Patterson, David A. und John L. Hennessy: Rechnerorganisation und<br />
-entwurf.<br />
Spektrum Verlag, 2005.<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 3
Caches<br />
◮ Direct-Mapped Cache<br />
◮ Direkte Abbildung eines Blocks 1 an genau einer Stelle im Cache<br />
◮ Genauer: Jede Blockadresse im Speicher wird auf eine einzige Position in <strong>der</strong><br />
oberen Ebene <strong>der</strong> Speicherhierarchie abgebildet ⇒ Ggf. Nachteil bei<br />
Ersetzung<br />
◮ Es gibt zahlreiche Schemata für die Platzierung von Blöcken<br />
◮ 1. Extrem: direkte Abbildung<br />
◮ 2. Extrem: Ein Block kann an je<strong>der</strong> beliebigen Position im Cache platziert werden<br />
◮ Im Folgenden: Assoziative Caches<br />
1 Speicherbereichs<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 4
Vollassoziativer Cache<br />
◮ Kann ein Block an jede beliebige Position im Cache platziert werden, wird<br />
dieses Schema <strong>der</strong> Platzierung auch als vollassoziativ bezeichnet.<br />
◮ Der Cache wird dann als vollassoziativer Cache 2 bezeichnet.<br />
◮ Um einen bestimmmten Block in einem vollassoziativen Cache zu finden,<br />
müssen alle Einträge im Cache durchsucht werden.<br />
◮ Um die Suche (sinnvoll) durchführbar zu machen, erfolgt sie parallel mit je<br />
einem Vergleicher pro Cache-Eintrag.<br />
◮ Diese Vergleicher erhöhen die Hardwarekosten wesentlich, so dass eine<br />
vollassoziative Cache-Organisation nur für Caches mit wenigen Blöcken<br />
sinnvoll ist.<br />
2 fully associative cache<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 5
Satzassoziativer Cache I<br />
◮ Zwischen direkt abbildenden und vollassoziativen Caches gibt es die<br />
Organisationsform des satzassoziativen Caches 3 .<br />
◮ In einem satzassoziativen Cache gibt es eine feste Anzahl von<br />
Speicherplätzen (mindestens 2), auf die ein Block gespeichert werden kann.<br />
◮ Ein satzassoziativer Cache mit n Positionen für einen Block wird als n-fach<br />
satzassoziativer Cache bezeichnet.<br />
◮ Ein n-fach satzassoziativer Cache besteht aus einer Menge von Sätzen, die<br />
aus jeweils n Blöcken bestehen.<br />
◮ Je<strong>der</strong> Block im Speicher wird auf einen eindeutigen Satz im Cache<br />
abgebildet, <strong>der</strong> durch das Indexfeld bestimmt ist ⇒ ein Block kann in jedem<br />
beliebigen Element dieses Satzes plaziert werden.<br />
3 setassociative cache<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 6
Satzassoziativer Cache II<br />
◮ Eine satzassoziative Platzierung kombiniert also die direkt abbildende<br />
Platzierung und eine vollassoziative Platzierung<br />
◮ Ein Block wird also auf einen Satz abgebildet, und dann werden alle Blöcke in<br />
dem Satz auf Übereinstimmung durchsucht.<br />
◮ Weil <strong>der</strong> Block in jedem Element des Satzes plaziert werden kann, müssen<br />
alle Tags aller Elemente des Satzes durchsucht werden<br />
◮ Abbildung<br />
◮ Bei einem direkt abbildenden Cache ist die Position eines Speicherplatzes wie<br />
folgt festgelegt:<br />
(Blocknummer) modulo (Anzahl <strong>der</strong> Cache-Blöcke)<br />
◮ Bei einem satzassoziativen Cache ist <strong>der</strong> Satz, <strong>der</strong> einen Speicherblock enthält<br />
wie folgt festgelegt:<br />
(Blocknummer) modulo (Anzahl <strong>der</strong> Sätze im Cache)<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 7
Anschauung <strong>der</strong> Caches<br />
◮ Position <strong>der</strong> Adresse 12 in den unterschiedlichen Cache-Typen<br />
Abbildung: Quelle: [PH05, S. 406]<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 8
Anschauung <strong>der</strong> Caches<br />
◮ Erklärung: Die Position eines Speicherblocks mit <strong>der</strong> Adresse 12<br />
unterscheidet sich in einem Cache mit 8 Blöcken bei direkt abgebildeter,<br />
satzassoziativer und vollassoziativer Platzierung<br />
◮ Bei <strong>der</strong> direkt abgebildeten Platzierung gibt es nur einen Cache-Block, in dem<br />
Speicherblock 12 gefunden werden kann. Dieser Cache-Block ist angegeben<br />
durch (12 mod 8) = 4.<br />
◮ In einem zweifach satzassoziativen Cache mit 8 Cache-Blöcken gibt es vier<br />
Sätze und <strong>der</strong> Speicherblock 12 muss sich in Satz (12 mod 4) = 0 befinden.<br />
Der Speicherblock kann sich in jedem Element des Satzes befinden.<br />
◮ Bei einer vollassoziativen Platzierung kann <strong>der</strong> Speicherblock mit <strong>der</strong><br />
Blockadresse 12 in jedem <strong>der</strong> acht Cache-Blöcke erscheinen.<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 9
Anschauung <strong>der</strong> Caches<br />
Cache mit 8 Blöcken<br />
Abbildung: Quelle: [PH05, S. 406]<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 10
Anschauung <strong>der</strong> Caches<br />
◮ Erklärung: Die Gesamtgröße des Caches in Blöcken ist gleich <strong>der</strong> Anzahl <strong>der</strong><br />
Sätze mal <strong>der</strong> Assoziativität.<br />
◮ Für eine feste Cache-Größe verringert also eine Vergrößerung <strong>der</strong><br />
Cache-Assoziativität die Anzahl <strong>der</strong> Sätze, während sie die Anzahl <strong>der</strong><br />
Elemente pro Satz erhöht.<br />
◮ Mit acht Blöcken ist ein achtfach satzassoziativer Cache dasselbe wie ein<br />
vollassoziativer Cache.<br />
◮ Vorteil einer erhöhten Assoziativität ist normalerweise eine Verringerung <strong>der</strong><br />
Fehlzugriffsrate<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 11
Zusammenfassung <strong>der</strong> Caches<br />
◮ Ein direkt abbilden<strong>der</strong> Cache entspricht einem einfachen satzassoziativen<br />
Cache<br />
◮ Dabei enthält je<strong>der</strong> Cache-Eintrag einen Block und je<strong>der</strong> Satz besitzt ein<br />
Element.<br />
◮ Ein vollassoziativer Cache <strong>der</strong> Größe m entspricht einem m-fach<br />
satzassoziativen Cache<br />
◮ Er enthält dabei einen Satz mit m Blöcken und ein Eintrag kann sich in jedem<br />
Block innerhalb dieses Satzes befinden.<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 12
Anschauung <strong>der</strong> Organisation <strong>der</strong> Caches<br />
Direct-Mapped<br />
Abbildung: Quelle: [PH05, S. 389]<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 13
Anschauung <strong>der</strong> Organisation <strong>der</strong> Caches<br />
Direct-Mapped<br />
◮ Bei diesem Cache wird <strong>der</strong> untere Teil <strong>der</strong> Adresse verwendet, um einen<br />
Cache-Eintrag auszuwählen, <strong>der</strong> aus einem Datenwort und einem Tag<br />
besteht.<br />
◮ Das Tag für den Cache wird mit dem oberen Teil <strong>der</strong> Adresse verglichen, um<br />
festzustellen, ob <strong>der</strong> Eintrag im Cache <strong>der</strong> angefor<strong>der</strong>ten Adresse entspricht.<br />
◮ Weil <strong>der</strong> Cache 2 10 (o<strong>der</strong> 1024) Wörter enthält und eine Blockgröße von 1<br />
Wort aufweisst, werden 10 Bits verwendet, um den Cache zu indizieren, so<br />
dass 32 - 10 - 2 = 20 Bits bleiben, die mit dem Tag verglichen werden müssen.<br />
Wenn das Tag und die oberen 20 Bits <strong>der</strong> Adresse glecih sind und das<br />
Gültigkeits-Bit (V) gesetzt ist, erzeugt die Anfor<strong>der</strong>ung einen Treffer im Cache<br />
und das Wort wird dem Prozessor bereitgestellt.<br />
◮ An<strong>der</strong>nfalls erfolgt ein Fehlzugriff (Cache Miss)<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 14
Anschauung <strong>der</strong> Organisation <strong>der</strong> Caches<br />
Direct-Mapped vier Wörter pro Zeile<br />
Abbildung: Quelle: [PH05, S. 396]<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | <strong>15</strong>
Anschauung <strong>der</strong> Organisation <strong>der</strong> Caches<br />
Direct-Mapped vier Wörter pro Zeile<br />
◮ Bisher einfache Cache-Organisation: 1 Wort entspricht einer Cache-Zeile<br />
◮ Jetzt: Cache nutzt die räumliche Lokalität aus<br />
◮ Bei jedem Cache Miss werden Blöcke aufeinan<strong>der</strong>folgen<strong>der</strong> Speicherworte in<br />
den Cache übertragen<br />
◮ Ausnutzen <strong>der</strong> räumlichen Lokalität: z. B. Cache-Zeile enthält Speicherworte<br />
◮ Zur Auswahl eines Speicherworts aus <strong>der</strong> Zeile werden weitere Bits benötigt<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 16
Anschauung <strong>der</strong> Organisation <strong>der</strong> Caches<br />
Satzassoziativer Cache<br />
Abbildung: Quelle: [PH05, S. 410]<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 17
Anschauung <strong>der</strong> Organisation <strong>der</strong> Caches<br />
Satzassoziativer Cache<br />
◮ Erklärung: Ein vierfach satzassoziativer Cache benötigt vier Vergleicher und<br />
einen 4:1 Multiplexer<br />
◮ n-fach assoziativ: n Vergleicher (Hardware) notwendig.<br />
◮ Die Vergleicher stellen fest, welcher Block des ausgewählten Satzes mit dem<br />
Tag übereinstimmt.<br />
◮ Anhand <strong>der</strong> Ausgabe des Vergleichers werden die Daten aus einem <strong>der</strong> vier<br />
Blöcke des indizierten Satzes ausgewählt, wofür ein Multiplexer verwendet<br />
wird<br />
◮ Ein Cache Hit wird über die eine O<strong>der</strong>-Verknüpfung ermittelt. Vorher wird über<br />
eine Und-Verknüpfung von Vergleicher und dem Valid-Bit noch geschaut, ob<br />
die zu lesenden Daten auch gültig sind.<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 18
Anordnung <strong>der</strong> Index-Bits I<br />
◮ Z. B. Direct-Mapped Cache<br />
◮ Direkte Abbildung eines Blocks an genau einer Stelle von Speicheradressen<br />
auf einen Cache<br />
◮ Warum werden für den Index (des Sets) <strong>der</strong> Caches die „mittleren“ Bits<br />
benutzt?<br />
◮ Wenn z. B. die MSB 4 als Index benutzt werden, bekommt man einen<br />
zusammenhängenden Speicherbereich, <strong>der</strong> auf dasselbe Cache-Set<br />
abgebildet wird.<br />
◮ Wenn Programm eine gute räumliche Lokalität hat, wird die Abbildung auf den<br />
Cache uneffizient ⇒ s. nächste Folie<br />
4 Most Significant Bit<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 19
Anordnung <strong>der</strong> Index-Bits II<br />
00<br />
01<br />
10<br />
11<br />
4-set cache<br />
0000<br />
0001<br />
0010<br />
0011<br />
0100<br />
0101<br />
0110<br />
0111<br />
1000<br />
1001<br />
1010<br />
1011<br />
1100<br />
1101<br />
1110<br />
1111<br />
High-or<strong>der</strong><br />
bit indexing<br />
0000<br />
0001<br />
0010<br />
0011<br />
0100<br />
0101<br />
0110<br />
0111<br />
1000<br />
1001<br />
1010<br />
1011<br />
1100<br />
1101<br />
1110<br />
1111<br />
Middle-or<strong>der</strong><br />
bit indexing<br />
Set index bits<br />
Abbildung: Quelle: [BO10, S. 640]<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 20
Beurteilung <strong>der</strong> Caches<br />
Begriffe<br />
◮ Treffer (hit): zugegriffene Daten sind in oberer Ebene (nahe beim Prozessor)<br />
◮ Trefferrate: Anteil <strong>der</strong> Speicherzugriffe auf höherer Ebene (level)<br />
◮ Trefferzeit: Zeit, um Treffer festzustellen und auf Datum zuzugreifen<br />
◮ Cache-Fehlzugriff (miss): gesuchte Daten nicht in oberer Ebene<br />
◮ Fehlrate = 1 - Trefferrate<br />
◮ Fehlstrafzeit (Miss Penalty): Zeit, um Block auf eine höhere Ebene und zum<br />
Prozessor zu bringen<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 21
Beurteilung <strong>der</strong> Caches<br />
Behandlung eines Cache-Misses<br />
◮ Situation: Datum ist nicht im Cache vorhanden und muss aus dem<br />
Hauptspeicher geladen werden<br />
◮ Problem: Steuerung muss die Befehlsverarbeitung so lange anhalten, bis die<br />
gesuchten Daten im Cache verfügbar (Stall-Zyklen) sind<br />
◮ Separater Controller lädt die erfor<strong>der</strong>lichen Daten vom Speicher in den Cache<br />
◮ Suche Platz im Cache für neue Daten, Strategie erfor<strong>der</strong>lich<br />
◮ Falls Cache voll ⇒ entferne vorhandene Daten aus dem Cache<br />
◮ Nachladen dauert ein Vielfaches von Cache-Zugriffen,<br />
Nachladezeit/Fehlstrafzeit bezeichnet man als Miss-Penalty<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 22
Beurteilung <strong>der</strong> Caches<br />
Blockorganisation<br />
◮ Ausnutzen <strong>der</strong> räumlichen Lokalität durch Vergrößern <strong>der</strong> Blöcke reduziert<br />
Fehlzugriffe<br />
◮ Je größer die Blöcke desto besser?<br />
◮ Größere Blöcke, damit weniger Blöcke im Cache<br />
◮ Wenige Blöcke präsent, damit steigt Miss-Rate an.<br />
◮ Größere Blöcke: längere Transferzeiten bei Miss<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 23
Beurteilung <strong>der</strong> Caches<br />
Blockorganisation<br />
◮ Quantitative Darstellung<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 24
Beurteilung <strong>der</strong> Caches<br />
Assozativität<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 25
Beurteilung <strong>der</strong> Caches<br />
Assozativität<br />
◮ Erklärung: Die Daten-Cache-Fehlzugrgriffsraten verbessern sich mit<br />
steigen<strong>der</strong> Assoziativität für jede <strong>der</strong> acht Cache-Größen<br />
◮ Während <strong>der</strong> Vorteil von einfacher (direkt abgebildet) hin zu zweifacher<br />
Satzassoziativität wesentlich ist, sind die Zugewinne für weitere<br />
Assoziativitätsgrade kleiner<br />
◮ Beim Schritt von vierfacher zu achtfacher Satzassoziativität ist nur noch wenig<br />
Verbesserung erkennbar.<br />
◮ Kleinere Caches erzielen einen wesentlichen größeren absoluten Vorteil aus<br />
<strong>der</strong> Assoziativität<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 26
Beurteilung <strong>der</strong> Caches<br />
Blockersetzung<br />
◮ Wenn ein Fehlzugriff auftritt, muss entschieden werden, welcher Block<br />
verdrängt wird<br />
◮ Direct-Mapped ist fest vorgegeben<br />
◮ Beim vollassoziativen Cache kommen alle Blöcke in Frage<br />
◮ Beim satzassoziativen Cache kann zwischen den Blöcken im Satz gewählt<br />
werden<br />
◮ Strategien:<br />
◮ Zufällig<br />
◮ LRU-Ersetzung<br />
◮ LRU-Ersetzung ist sehr aufwändig (bei größeren Assoziativitätsgraden)<br />
◮ Schätzung ⇒ LRU Approximation<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 27
Ein intuitives Modell für Speicherhierarchien<br />
Die drei C´s<br />
◮ Die drei C´s dienen zur intuitiven Erklärung des Verhaltens von<br />
Speicherhierarchien<br />
◮ Die Ursachen für Fehlzugriff auf den Cache lassen sich hinsichtlich dreier<br />
Ursachen klassifizieren<br />
◮ Compulsory misses: Fehler bei erstem Zugriffs auf einen Block, <strong>der</strong> noch nie<br />
im Cache war (Kaltstart-Fehler)<br />
◮ Capacity misses: Fehlzugriff, weil <strong>der</strong> Speicher wegen Größenbeschränkung<br />
nicht alle vom Programm verwendeten Blöcke aufnehmen kann. Blöcke<br />
werden ausgelagert und später wie<strong>der</strong> angefor<strong>der</strong>t.<br />
◮ Conflict misses: In direkt abgebildeten o<strong>der</strong> mengen-assoziativen Speichern<br />
konkurrieren Blöcke um dieselbe Blockposition.<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 28
Speicherhierarchie des Intel Pentium P4 und des<br />
AMD Opteron<br />
◮ z. B. Intel Pentium Prozessor, 42 Millionen Transistoren<br />
◮ Aktuell: Core-i7-Serie: Die-Größe: 248 mm 2 bei 1,17 Milliarden Transistoren<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 29
L1- und L2-Caches im Intel Pentium P4 und AMD<br />
Opteron<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 30
Übersicht verschiedener Prozessoren<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 31
Zusammenfassung und Ausblick<br />
◮ Caches<br />
◮ Anordnung <strong>der</strong> Index-Bits<br />
◮ Beurteilung <strong>der</strong> Caches<br />
Nächste Vorlesung behandelt<br />
◮ Pipelining, Busse<br />
7. Dezember <strong>2010</strong> | Technische Universität Darmstadt | Dr.-Ing. Wolfgang Heenes | 32