06.06.2014 Aufrufe

Grundlagen der Informatik III Wintersemester 2010/2011 – 15 ...

Grundlagen der Informatik III Wintersemester 2010/2011 – 15 ...

Grundlagen der Informatik III Wintersemester 2010/2011 – 15 ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!