Flynnsche Klassifikation

Befehsstrom: Folge von Maschinenbefehlen, die vom Leitwerk an das Rechenwerk weitergeleitet werden.

Datenstrom: Daten werden zwischen Speicher und Prozessorregistern übertragen

SISD: Single Instruction Stream, Single Data Stream: Enstpricht dem Von-Neumann-Rechner

SIMD: Erweiterung des von-Neumann-Rechners. Ein Befehl kann auf mehreren Rechenwerken verarbeitet werden. (zB. GPU)

MISD: Mehrere Leitwerke steuern die Bearbeitung eines Datenstroms. (zB. fehlertolerante Systeme, redundante Berechnungen)

MIMD: Mehrere Befehl und Datenströme, Meist Zusammenschluss von SISD Rechnern. (zB. Multiprozessorsystem)

Parallele Rechnerarchitekturen

Motivation: Steigerung der Taktrate eines einzelnen Prozessors bringt keine nennenswerte Leistungssteigerung mehr.

Shared Memory Systeme:

Implizite Kommunikation/Datenverteilung. Programmierung mit OpenMP/Java-Threads.

SMP - Symmetric Multi Processing: Gemeinsamer Hauptspeicher limitiert, zB. Intel Woodcrest

Cache-Kohärenz: Es muss sichergestellt werden, dass die Cacheblöche der einzelnen Prozessoren synchron bleiben.

ccNUMA: cache-coherent Non-Uniform Memory Architecture: Geteilter Hauptspeicher für Prozessoren(gruppen). zB. AMD Opteron

Distributed Memory Systeme:

Explizite Kommunikation/Datenverteilung. Programmierung mit MPI

Kommunikation erfolgt via Message Passing.

Amdahl's Law

Zeitverbrauch bei 1 CPU: $T(1)$
Zeitverbrauch bei p CPUs: $T(p)$
Speedup S: $S(p)=\frac{T(1)}{T(p)}$
Effizienz E: $E(p)=\frac{S(p)}{p}$

Idealfall: $S(p) = p$, $E(p) = 1$

Amdahl's Law besagt, dass der Speedup begrenzt ist, durch den nicht-parallelisierbaren Teil eines Progammes.