08.03.2014 Aufrufe

Parallelität und Pipelines

Parallelität und Pipelines

Parallelität und Pipelines

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.›

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!