08.03.2014 Aufrufe

Parallelität und Pipelines

Parallelität und Pipelines

Parallelität und Pipelines

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.

Technische Gr<strong>und</strong>lagen<br />

der Informatik – Kapitel 9<br />

Prof. Dr. Sorin A. Huss<br />

Fachbereich Informatik<br />

TU Darmstadt


Kapitel 9: Themen<br />

• Parallelität<br />

• <strong>Pipelines</strong><br />

• Mikroarchitektur<br />

Fortgeschrittene Verfahren<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Parallelität<br />

• Zwei Arten von Parallelität<br />

• Räumliche Parallelität<br />

• Vervielfachte Hardware bearbeitet mehrere Aufgaben gleichzeitig<br />

• Zeitliche Parallelität<br />

• Aufgabe wird in mehrere Unteraufgaben aufgeteilt<br />

• Unteraufgaben werden parallel ausgeführt<br />

• Beispiel: Fließbandprinzip bei Autofertigung<br />

• Nur eine Station für einen Arbeitsschritt<br />

• Aber alle unterschiedlichen Arbeitsschritte für mehrere Autos werden parallel ausgeführt<br />

• Auch genannt: Pipelining<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Parallelität: Gr<strong>und</strong>legende Begriffe<br />

• Einige Definitionen:<br />

• Datensatz: Vektor aus Eingabewerten, die zu einem Vektor aus<br />

Ausgabewerten bearbeitet werden<br />

• Latenz: Zeit von der Eingabe eines Datensatzes bis zur Ausgabe der<br />

zugehörigen Ergebnisse<br />

• Durchsatz: Die Anzahl von Datensätzen die pro Zeiteinheit bearbeitet werden<br />

können<br />

• Parallelität erhöht Durchsatz<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Beispiel: Plätzchen backen<br />

• Weihnachtszeit steht vor der Tür, also rechtzeitig anfangen!<br />

• Annahmen<br />

• Genug Teig ist fertig<br />

• 5 Minuten um ein Blech mit Teig zu bestücken<br />

• 15 Minuten Backzeit<br />

• Vorgehensweise<br />

• Ein Blech nach dem anderen vorbereiten <strong>und</strong> backen<br />

Latenz =<br />

Durchsatz =<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Beispiel: Plätzchen backen (seriell)<br />

• Weihnachtszeit steht vor der Tür, also rechtzeitig anfangen!<br />

• Annahmen<br />

• Genug Teig ist fertig<br />

• 5 Minuten um ein Blech mit Teig zu bestücken<br />

• 15 Minuten Backzeit<br />

• Vorgehensweise<br />

• Ein Blech nach dem anderen vorbereiten <strong>und</strong> backen<br />

Latenz<br />

= 5 + 15 = 20 Minuten = 1/3 h<br />

Durchsatz = 1 Blech alle 20 Minuten = 3 Bleche/h<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Beispiel: Plätzchen backen (parallel)<br />

• Gleiche Annahmen wie eben<br />

• 5 Minuten Blech bestücken, 15 Minuten Backen<br />

• Alternative Vorgehensweisen<br />

• Räumliche Parallelität: Zwei Bäcker (Ben & Alyssa), jeder mit einem eigenen Ofen<br />

• Zeitliche Parallelität: Aufteilen der Keksherstellung in Unteraufgaben<br />

• Blech bestücken<br />

• Backen<br />

• Nächstes Blech bestücken, während erstes noch im Ofen gebacken wird<br />

• Latenz <strong>und</strong> Durchsatz?<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Räumliche Parallelität<br />

Latenz:<br />

Zeit bis zum<br />

Fertigwerden des ersten Bleches<br />

0 5 10 15 20 25 30 35 40 45 50<br />

Räumliche<br />

Parallelität<br />

Blech 1<br />

Blech 2<br />

Blech 3<br />

Blech 4<br />

Ben 1 Ben 1<br />

Alyssa 1 Alyssa 1<br />

Ben 2 Ben 2<br />

Alyssa 2 Alyssa 2<br />

Zeit<br />

Bestücken<br />

Backen<br />

Legende<br />

Latenz =<br />

Durchsatz =<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Räumliche Parallelität<br />

Latenz:<br />

Zeit bis zum<br />

Fertigwerden des ersten Bleches<br />

0 5 10 15 20 25 30 35 40 45 50<br />

Räumliche<br />

Parallelität<br />

Blech 1<br />

Blech 2<br />

Blech 3<br />

Blech 4<br />

Ben 1 Ben 1<br />

Alyssa 1 Alyssa 1<br />

Ben 2 Ben 2<br />

Alyssa 2 Alyssa 2<br />

Zeit<br />

Bestücken<br />

Backen<br />

Legende<br />

Latenz<br />

= 5 + 15 = 20 Minuten = 1/3 h<br />

Durchsatz = 2 Bleche alle 20 Minuten = 6 Bleche/h<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Zeitliche Parallelität<br />

Latenz:<br />

Zeit bis zum Fertigwerden<br />

des ersten Blechs<br />

0 5 10 15 20 25 30 35 40 45 50<br />

Zeitliche<br />

Parallelität<br />

Tray 1<br />

Tray 2<br />

Tray 3<br />

Ben 1 Ben 1<br />

Ben 2 Ben 2<br />

Ben 3 Ben 3<br />

Zeit<br />

Latenz =<br />

Durchsatz =<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Zeitliche Parallelität<br />

Latenz:<br />

Zeit bis zum Fertigwerden<br />

des ersten Blechs<br />

0 5 10 15 20 25 30 35 40 45 50<br />

Zeitliche<br />

Parallelität<br />

Tray 1<br />

Tray 2<br />

Tray 3<br />

Ben 1 Ben 1<br />

Ben 2 Ben 2<br />

Ben 3 Ben 3<br />

Zeit<br />

Latenz<br />

= 5 + 15 = 20 Minuten = 1/3 h<br />

Durchsatz = 1 Blech alle 15 Minuten = 4 Bleche/h<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Kombination<br />

• Zeitliche <strong>und</strong> räumliche Parallelität können miteinander kombiniert<br />

werden<br />

• Hier:<br />

• Zwei Bäcker <strong>und</strong> Öfen<br />

• Nächstes Blech bestücken während vorheriges Blech gebacken wird<br />

• Latenz = 20 Minuten<br />

• Durchsatz = 8 Bleche/h<br />

Nun zurück zur Digitaltechnik…<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Schaltung ohne Pipelining<br />

• Kritischer Pfad durch Elemente 2, 3, 4: 9 ns<br />

• t setup = 0,2 ns <strong>und</strong> t pcq =0,3 ns T c = 9+0,2+0,3 = 9,5 ns<br />

• Latenz = 9,5ns ; Durchsatz = 1 / 9,5ns = 105 MHz<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Schaltung mit zweistufiger Pipeline<br />

Stufe 1: Stufe 2:<br />

• Stufe 1: 3+2+0,2+0,3 = 5,5 ns<br />

• T c = 5,5 ns<br />

• Latenz = 2 Takte = 11 ns<br />

• Durchsatz = 1 / 5,5 ns = 182 MHz<br />

Stufe 2: 4+0,2+0,3 = 4,5 ns<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Schaltung mit dreistufiger Pipeline<br />

Stufe 1: Stufe 2: Stufe 3:<br />

• T c = 4,5ns<br />

• Latenz = 3 Takte = 13,5 ns<br />

• Durchsatz = 1 / 4,5 ns = 222 MHz<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Diskussion Pipelining<br />

• Mehr <strong>Pipelines</strong>tufen<br />

• Höherer Durchsatz (mehr Ergebnisse pro Zeiteinheit)<br />

• Aber auch höhere Latenz (d. h. länger warten auf das erste Ergebnis)<br />

• Lohnt sich nur, wenn viele Datensätze bearbeitet werden müssen<br />

• Klappt aber nicht immer<br />

• Problem: Abhängigkeiten<br />

• Beispiel Kekse: Erstmal schauen, wie ein Blech geworden ist, bevor das<br />

nächste bestückt wird<br />

• Wurde intensiv im 7. Kapitel behandelt (Prozessorarchitektur)<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Mikroarchitektur: Fortgeschrittene Verfahren<br />

• Tiefe <strong>Pipelines</strong><br />

• Sprungvorhersage<br />

• Superskalare Prozessoren<br />

• Out-of-Order Prozessoren<br />

• Umbenennen von Registern<br />

• SIMD<br />

• Multithreading<br />

• Multiprozessoren<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Tiefe <strong>Pipelines</strong><br />

• Üblicherweise 10-20 Stufen<br />

• Ausnahmen<br />

• Fehlkonstruktionen (Intel P4, >30 Stufen)<br />

• Anwendungsspezifische Spezialprozessoren (ggf. H<strong>und</strong>erte von Stufen)<br />

• Grenzen für Pipeline-Tiefe<br />

• Pipeline Hazards<br />

• Zusätzlicher Zeitaufwand für sequentielle Schaltungen<br />

• Elektrische Leistungsaufnahme <strong>und</strong> Energiebedarf<br />

• Kosten<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Sprungvorhersage<br />

• Idealer Pipelined-Prozessor: CPI = 1<br />

• Fehler der Sprungvorhersage erhöht CPI<br />

• Statische Sprungvorhersage:<br />

• Prüfe Sprungrichtung (vorwärts oder rückwärts)<br />

• Falls rückwärts: Sage “Springen” vorher<br />

• Sonst: Sage “Nicht Springen” vorher<br />

• Dynamische Sprungvorhersage:<br />

• Führe Historie der letzten (einige H<strong>und</strong>ert) Verzweigungen in Branch Target<br />

Buffer, speichert:<br />

• Sprungziel<br />

• Wurde Sprung das letzte Mal / die letzten Male genommen?<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Beispiel: Sprungvorhersage<br />

add $s1, $0, $0 # sum = 0<br />

add $s0, $0, $0 # i = 0<br />

addi $t0, $0, 10 # $t0 = 10<br />

for:<br />

beq $s0, $t0, done # falls i == 10, springe<br />

add $s1, $s1, $s0 # sum = sum + i<br />

addi $s0, $s0, 1 # inkrementiere i<br />

j for<br />

done:<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


1-Bit Sprungvorhersage<br />

• Speichert, ob die Verzweigung das letzte Mal genommen wurde<br />

• … <strong>und</strong> sagt genau dieses Verhalten für das aktuelle Mal vorher<br />

• Fehlvorhersagen<br />

• Einmal bei Austritt aus der Schleife bei Schleifenende<br />

• Dann wieder bei erneutem Eintritt in Schleife<br />

add $s1, $0, $0 # sum = 0<br />

add $s0, $0, $0 # i = 0<br />

addi $t0, $0, 10 # $t0 = 10<br />

for:<br />

beq $s0, $t0, done # falls i == 10, springe<br />

add $s1, $s1, $s0 # sum = sum + i<br />

addi $s0, $s0, 1 # inkrementiere i<br />

j for<br />

done:<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


2-Bit Sprungvorhersage<br />

• Falsche Vorhersage nur beim letzten Sprung aus Schleife heraus<br />

strongly<br />

taken<br />

taken<br />

predict<br />

taken<br />

weakly<br />

taken<br />

weakly<br />

not taken<br />

taken<br />

predict taken predict taken<br />

taken<br />

taken<br />

taken<br />

not taken<br />

taken<br />

predict<br />

not taken<br />

strongly<br />

not taken<br />

taken<br />

add $s1, $0, $0 # sum = 0<br />

add $s0, $0, $0 # i = 0<br />

addi $t0, $0, 10 # $t0 = 10<br />

for:<br />

beq $s0, $t0, done # falls i == 10, springe<br />

add $s1, $s1, $s0 # sum = sum + i<br />

addi $s0, $s0, 1 # inkrementiere i<br />

j for<br />

done:<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Superskalare Mikroarchitektur<br />

• Mehrere Instanzen des Datenpfades führen mehrere Instruktionen gleichzeitig<br />

aus<br />

• Etwaige Abhängigkeiten zwischen Instruktionen erschweren jedoch eine<br />

parallele Ausführung<br />

CLK CLK CLK CLK<br />

CLK<br />

PC<br />

A<br />

RD<br />

Instruction<br />

Memory<br />

A1<br />

A2<br />

A3<br />

A4<br />

A5<br />

A6<br />

WD3<br />

WD6<br />

Register<br />

File<br />

RD1<br />

RD4<br />

RD2<br />

RD5<br />

ALUs<br />

A1 RD1<br />

A2 RD2<br />

Data<br />

Memory<br />

WD1<br />

WD2<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Beispiel: Superskalare Ausführung<br />

lw $t0, 40($s0)<br />

add $t1, $t0, $s1<br />

sub $t0, $s2, $s3 Idealer IPC-Wert: 2<br />

and $t2, $s4, $t0 Erreichter IPC-Wert: 2<br />

or $t3, $s5, $s6<br />

sw $s7, 80($t3)<br />

1 2 3 4 5 6 7 8<br />

Time (cycles)<br />

lw $t0, 40($s0)<br />

add $t1, $s1, $s2<br />

IM<br />

lw<br />

add<br />

RF<br />

$s0<br />

40<br />

$s1<br />

$s2<br />

+<br />

+<br />

DM<br />

$t0<br />

$t1<br />

RF<br />

sub $t2, $s1, $s3<br />

and $t3, $s3, $s4<br />

IM<br />

$s1<br />

sub<br />

$t2<br />

$s3 -<br />

RF<br />

DM<br />

$s3<br />

and $t3<br />

$s4 &<br />

RF<br />

or $t4, $s1, $s5<br />

sw $s5, 80($s0)<br />

IM<br />

or<br />

sw<br />

RF<br />

$s1<br />

$s5<br />

$s0<br />

80<br />

|<br />

+<br />

DM<br />

$s5<br />

$t4<br />

RF<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Beispiel: Superskalare Ausführung mit Abhängigkeiten<br />

lw<br />

$t0, 40($s0)<br />

add $t1, $t0, $s1<br />

sub $t0, $s2, $s3 Idealer IPC-Wert: 2,00<br />

and $t2, $s4, $t0 Erreichter IPC-Wert: 6/5 = 1,20<br />

or $t3, $s5, $s6<br />

sw<br />

$s7, 80($t3)<br />

1 2 3 4 5 6 7 8<br />

9<br />

Time (cycles)<br />

lw $t0, 40($s0)<br />

IM<br />

lw<br />

RF<br />

$s0<br />

40<br />

+<br />

DM<br />

$t0<br />

RF<br />

add $t1, $t0, $s1<br />

sub $t0, $s2, $s3<br />

IM<br />

add<br />

sub<br />

RF<br />

$t0<br />

$s1<br />

$s2<br />

$s3<br />

RF<br />

$t0<br />

$s1<br />

$s2<br />

$s3<br />

+<br />

-<br />

DM<br />

$t1<br />

$t0<br />

RF<br />

and $t2, $s4, $t0<br />

or $t3, $s5, $s6<br />

Stall<br />

and<br />

IM<br />

or<br />

IM<br />

and<br />

or<br />

RF<br />

$s4<br />

$t0<br />

$s5<br />

$s6<br />

&<br />

|<br />

DM<br />

$t2<br />

$t3<br />

RF<br />

sw $s7, 80($t3)<br />

IM<br />

sw<br />

RF<br />

$t3<br />

80<br />

+<br />

$s7<br />

DM<br />

RF<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Out-of-Order Mikroarchitektur<br />

• Kann Ausführungsreihenfolge von Instruktion umsortieren<br />

• Sucht im voraus nach parallel startbaren Instruktionen<br />

• Startet Instruktionen in beliebiger Reihenfolge<br />

• Solange keine Abhängigkeiten verletzt werden!<br />

• Abhängigkeiten<br />

• RAW (read after write)<br />

• Spätere Instruktion darf Register erst lesen, nachdem es vorher geschrieben wurde<br />

• WAR (write after read, anti-dependence)<br />

• Spätere Instruktion darf Register erst schreiben, nachdem es vorher gelesen wurde<br />

• WAW (write after write, output dependence)<br />

• Reihenfolge von in Register schreibenden Instruktionen muss eingehalten werden<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Out-of-Order Mikroarchitektur<br />

• Parallelismus auf Instruktionsebene (instruction level parallelism, ILP)<br />

• Anzahl von parallel startbaren Instruktionen (i.d.R. < 3)<br />

• Scoreboard<br />

• Tabelle im Prozessor<br />

• Verwaltet<br />

• Auf Start wartende Instruktionen<br />

• Verfügbare Recheneinheiten (z.B. ALUs)<br />

• Abhängigkeiten<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Beispiel: Out-of-Order Mikroarchitektur<br />

lw<br />

$t0, 40($s0)<br />

add $t1, $t0, $s1<br />

sub $t0, $s2, $s3 Idealer IPC-Wert: 2,0<br />

and $t2, $s4, $t0 Erreichter IPC-Wert: 6/4 = 1,5<br />

or $t3, $s5, $s6<br />

sw<br />

$s7, 80($t3)<br />

1 2 3 4 5 6 7 8<br />

Time (cycles)<br />

lw $t0, 40($s0)<br />

or $t3, $s5, $s6<br />

RAW<br />

sw $s7, 80($t3)<br />

Zwei Takte Latenz<br />

zwischen Laden <strong>und</strong><br />

Verwendung von $t0<br />

RAW<br />

add $t1, $t0, $s1<br />

WAR<br />

sub $t0, $s2, $s3<br />

IM<br />

lw<br />

or<br />

RF<br />

$s0<br />

40<br />

$s5<br />

$s6<br />

+<br />

|<br />

DM<br />

$t0<br />

RF<br />

$t3<br />

$t3<br />

sw $s7<br />

80<br />

+<br />

RF<br />

DM<br />

IM<br />

IM<br />

add<br />

$t0<br />

$s1<br />

+<br />

sub<br />

RF $s2<br />

$s3<br />

-<br />

RF<br />

DM<br />

$t1<br />

RF<br />

$t0<br />

RAW<br />

and $t2, $s4, $t0<br />

IM<br />

and<br />

RF<br />

$s4<br />

$t0<br />

&<br />

DM<br />

$t2<br />

RF<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Umbenennen von Registern<br />

lw $t0, 40($s0)<br />

add $t1, $t0, $s1<br />

sub $t0, $s2, $s3 Idealer IPC-Wert: 2,0<br />

and $t2, $s4, $t0 Erreichter IPC-Wert: 6/3 = 2,0<br />

or $t3, $s5, $s6<br />

sw $s7, 80($t3)<br />

1 2 3 4 5 6 7<br />

Time (cycles)<br />

lw $t0, 40($s0)<br />

sub $r0, $s2, $s3<br />

IM<br />

lw<br />

sub<br />

RF<br />

$s0<br />

40<br />

$s2<br />

$s3<br />

+<br />

-<br />

DM<br />

$t0<br />

$r0<br />

RF<br />

2 Takte RAW RAW<br />

and $t2, $s4, $r0<br />

or $t3, $s5, $s6<br />

IM<br />

and<br />

or<br />

RF<br />

$s4<br />

$r0<br />

$s5<br />

$s6<br />

&<br />

|<br />

DM<br />

$t2<br />

RF<br />

$t3<br />

RAW<br />

add $t1, $t0, $s1<br />

sw $s7, 80($t3)<br />

IM<br />

add<br />

sw<br />

RF<br />

$t0<br />

$s1<br />

$t3<br />

80<br />

+<br />

+<br />

DM<br />

$s7<br />

$t1<br />

RF<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


SIMD<br />

• Single Instruction Multiple Data (SIMD)<br />

• Eine Instruktion wird auf mehrere Datenelemente gleichzeitig angewandt<br />

• Häufige Anwendung: Graphik, Multimedia<br />

• Oft: Führe schmale arithmetische Operatione aus<br />

• Auch genannt „gepackte Arithmetik“<br />

• Beispiel: Addiere gleichzeitig vier Bytes<br />

• ALU muss verändert werden<br />

• Kein Übertrag mehr zwischen einzelnen Bytes<br />

padd8 $s2, $s0, $s1<br />

32 24 23 16 15 8 7 0 Bit position<br />

a 2<br />

a 1<br />

a 0<br />

$s0<br />

a 3<br />

b 0<br />

$s1<br />

+<br />

b 2<br />

b 1<br />

b 3<br />

a 0<br />

+ b 0<br />

$s2<br />

a 3<br />

+ b 3<br />

a 2<br />

+ b 2<br />

a 1<br />

+ b 1<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Weitere Mikroarchitekturtechniken<br />

• Multithreading<br />

• Beispiel: Textverarbeitung<br />

• Threads (parallel laufende, weitgehend unabhängige Instruktionsfolgen)<br />

• Texteingabe<br />

• Rechtschreibprüfung<br />

• Drucken<br />

• Multiprozessoren<br />

• Viele weitgehend unabhängige Prozessoren auf einem Chip<br />

• Am weitesten verbreitet heute in Grafikkarten (H<strong>und</strong>erte von Prozessoren)<br />

• Aber auch in Spezialprozessoren, z.B. für UMTS Nachfolger LTE<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Genauer: Multithreading<br />

• Prozesse: Auf dem Computer gleichzeitig laufende Programme<br />

• z.B. Web-Browser, Musik im Hintergr<strong>und</strong>, Textverarbeitung<br />

• Thread: Parallele Ausführung als Teil eines Programmes<br />

• Ein Prozess kann mehrere Threads enthalten<br />

• In konventionellem Prozessor<br />

• Jeweils ein Thread wird ausgeführt<br />

• Wenn eine Thread-Ausführung einen Stall hat (z.B. Warten auf Speicher)<br />

• Sichere Architekturzustand des Threads<br />

• Lade Architekturzustand eines anderen, derzeit inaktiven aber lauffähigen Threads<br />

• Starte neuen Thread<br />

• Vorgang wird Kontextumschaltung (context switching) genannt<br />

• Alle Threads laufen scheinbar gleichzeitig<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Multithreading auf Mikroarchitekturebene<br />

• Mehrere Instanzen des Architekturzustandes im Prozessor<br />

• Mehrere Threads nun gleichzeitig aktiv<br />

• Sobald ein Thread stalled wird sofort ein anderer gestartet<br />

• Kein Sichern/Laden von Architekturzustand mehr<br />

• Falls ein Thread nicht alle Recheneinheiten ausnutzt, kann dies ein anderer Thread tun<br />

• Erhöht nicht den Grad an ILP innerhalb eines Threads<br />

• Erhöht aber Durchsatz des Gesamtsystems mit mehreren Threads<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Multiprozessoren<br />

• Mehrere unabhängige Prozessorkerne mit einem dazwischenliegenden<br />

Kommunikationsnetz<br />

• Arten von Multiprocessing:<br />

• Symmetric multiprocessing (SMT): mehrere gleiche Kerne mit einem gemeinsamen<br />

Speicher<br />

• Asymmetric multiprocessing: unterschiedliche Kerne für unterschiedliche Aufgaben<br />

• Beispiel: CPU in Handy für GUI, DSP für Funksignalverarbeitung<br />

• Auch „heterogene Multiprozessoren“ genannt<br />

• Clusters: Jeder Kern hat seinen eigenen Speicher<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›


Weiterführende Literatur<br />

• Patterson & Hennessy<br />

Computer Architecture: A Quantitative Approach<br />

WS 10/11 | Technische Gr<strong>und</strong>lagen der Informatik - Repository - Prof. Sorin A. Huss | ‹Nr.›

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!