Parallelität und Pipelines
Parallelität und Pipelines
Parallelität und Pipelines
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
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.›