de 1 Vorlesung 2 ( A ) PARALLELIT ÄT AUF B ITEBENE : 2. A RCHITEKTUR VON PARALLELRECHNERN • Alle Bits der Wortbreite können potentiell parallel verarbeitet werden Z WEI B ETRACHTUNGSEBENEN SIND M ÖGLICH :: • Entwicklung: 8 −→ 16 −→ 32 −→ 64 Bits • Architektur eines Prozessors • Systemaufbau aus mehreren Prozessoren Slide 3 Wir werden sehen, daß auf beiden Ebenen ähnliche Ansätze zur Parallelität benutzt werden. • Moderne Hardware-Algortihmen für Addition, Multiplikation, etc. sind Parallelalgorithmen (wir werden diese hier nicht näher betrachten) Moderne Rechner, sogar einzelne Mikroprozessoren, kann/sollte man als parallele Systeme betrachten ! 2.1. PARALLELIT ÄT IN • Die Weiterentwicklung ist vorläufig gestoppt, da 64 Bits (vorerst) ausreichende Genauigkeit und Adressraumgröße bieten ( B ) PARALLELIT ÄT DURCH P IPELINING : M OTIVATION : M IKROPROZESSOREN ➀ Steigerung der Taktrate um ca. 30% p.a. ➜ Das Pipelining ist eine der grundlegenden Ideen/Paradigmen, die auch im täglichen Leben reichlich benutzt wird (z.B. von Henry Ford in der Autoindustrie eingeführt) ➁ Steigerung der Performance: ca. 55% – 75% p.a. ➜ Bearbeitung einer Instruktion besteht aus Schritten/Stufen, z.B.: A KTUELLE S TEIGERUNGSRATEN : ➂ Aus 1.< 2. folgt, daß ausser der Taktrate noch weitere, architektonische Faktoren zur Performance-Steigerung beitragen. de 2 Slide 4 • • • • F (fetch): das Laden der nächsten Instruktion D (decode): das Dekodieren dieser Instruktion E (execute): das Ausführen der Instruktion W (write-back): das Schreiben des Resultates V IER PARALLELIT ÄTSEBENEN IM P ROZESSOR : F ➜ (a) Parallelität auf Bitebene D E W ➜ (b) Parallelität durch Pipelining ➜ Üblicherweise führt der Prozessor die Stufen einer Instruktion nacheinander (sequentiell) aus: F1 → D1 → E1 → W1 ➜ (c) Parallelität durch mehrere Funktionseinheiten ➜ (d) Parallelität auf Prozeß- bzw. Thread-Ebene ➜ Auch ein und dieselbe Stufe verschiedener Instruktionen ist häufig nur sequentiell ausführbar: E1 → E2 → E3 → E4 werden im Folgenden einzeln kurz besprochen. c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 1 c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 2 P IPELINING : D IE I DEE ( C ) PARALLELIT ÄT ➜ Möglichkeit der Parallelität bei diesen Abhängigkeiten zwischen den Stufen: gleichzeitig unterschiedliche Stufen mehrerer Instruktionen, z.B.: W1 || E2 || D3 || F4 ➜ Dies erreicht man durch Pipelining ≈ verzahnt-parallele Ausführung, z.B. wie folgt: de 6 • Beim Übersetzen wird Maschinencode erzeugt, der die zeitliche Verteilung von Instruktionen auf FUs angibt • Die Instruktionsworte werden dadurch lang =⇒ Very Long Instruction Word = VLIW • Das ist statisches Scheduling, d.h. vor der Ausführung, im Gegensatz zum Scheduling zur Laufzeit (dynamisch) Slide 7 de 5 F4 D4 E4 F3 D3 E3 W3 F2 D2 E2 W2 D1 E1 W1 3 2 1 F1 F UNKTIONSEINHEITEN ➀ VLIW-Prozessoren (z.B. IA 64) Instruktionen 4 DURCH MEHRERE ➜ Abkürzung FU = Functional Unit ➜ ALUs, FPUs, etc. können parallel zueinander arbeiten ➜ Zwei Prozessorarten, die mehrere FUs benutzen: W4 ➁ Superscalare Prozessoren (z.B. Pentium) • Teile des Maschinencodes werden per Hardware während der Ausführung den FUs zugeteilt, d.h. zur Laufzeit • Dies ist dynamisches Scheduling durch Analyse der bestehenden Datenabhängigkeiten! ➜ Moderne Prozessoren: 2 bis 6 gleichzeitige Instruktionen Zeit 4 Instruktionen brauchen anstatt 4*4=16 lediglich 7 Zeitschritte S UPERSCALARE P ROZESSOREN UND I NSTRUKTIONSFENSTER P IPELINING : B EOBACHTUNGEN ➜ Dynamisches Scheduling kostet viel Overhead (Chipfläche), trotzdem werden z.Zt. superscalare Prozessoren bevorzugt ➜ Der Speedup wächst mit der Anzahl der Instruktionen ➜ Pipelining ist effizient, wenn verschiedene Pipelinestufen etwa gleich lange dauern ➜ Kosten vs. Nutzen: bei ca. 4 absetzbaren Instruktionen ist die Grenze in etwa erreicht (z.B. in Pentium maximal 3) ➜ Die Anzahl der Stufen (in der Praxis: zwischen 2 und 20) bestimmt den Parallelitätsgrad Slide 8 ➜ Prozessoren mit vielen Stufen heißen super-pipelined. ➜ Grenzen für die Stufenanzahl/Parallelitätsgrad: ➜ Korrektheit: Die (funktionale) Semantik des Programms darf durch die parallele Abarbeitung nicht geändert werden • Instruktionen nicht beliebig in gleich große Stufen zerlegbar • Datenabhängigkeiten zwischen Instruktionen ➜ Dies wird vom reorder buffer garantiert: die Ergebnisse werden erst dann in die Register geschrieben, wenn alle vorherige Instruktionen ihre Ergebnisse reingeschrieben haben. • ... und viele andere c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 ➜ Dekodierte Instruktionen werden im sog. Instruktionsfenster abgelegt und, sobald Operanden verfügbar sind, an FU weitergegeben (dispatch) 3 c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 4 de 9 e 10 ( D ) PARALLELIT ÄT AUF P ROZESS - BZW. K LASSIFIZIERUNG T HREADEBENE NACH M. F LYNN [1972] ➜ ➜ ➜ ➜ ➜ Bisher sind wir immer von einem Kontrollfluß ausgegangen ➜ Zusätzliche Möglichkeit: Erhöhung des Parallelitätsgrades durch mehrere Kontrollflüsse ➜ Heutzutage auf Prozessorebene noch selten benutzt, ist Gegenstand aktueller Forschung & Entwicklung ➜ Einschlägige Techniken aus der Parallelprogrammierung (siehe später) werden zunehmend in einzelnen Prozessoren eingesetzt, z.B. HTT - Hyper-Threading Technology von Intel Slide 11 ➜ Siehe “Multithreading” in späteren Kapiteln Eine der ersten Klassifizierungen überhaupt Ist immer noch die meistbenutzte Vorteil: sehr einfach Klassifiziert wird nach zwei Merkmalen: ➀ I ( Instruction): Organisation des Kontrollflusses ➁ D ( Data): Organisation des Datenflusses ➜ Jedes Merkmal kann einen der zwei Werte annehmen: ➀ S: für Single ➁ M: für Multiple ➜ Somit erhält man 4 mögliche Kombinationen: Instruction Data Drei allgemeine Informatik-Aspekte spielen hier eine Rolle: ➜ Statisch vs. Dynamisch (zur Compile- vs. zur Laufzeit) S M S SISD MISD M SIMD MIMD ➜ Nutzen/Optimierung vs. Kosten/Overhead ➜ Korrektheit: Semantik-erhaltende Transformationen 2.2. K LASSIFIZIERUNG VON PARALLELRECHNERN Wir widmen uns nun dem Aufbau von Parallelrechnern durch das Verbinden mehrerer Prozessoren F LYNNSCHE K LASSIFIKATION : SISD Eine (noch intuitive und vage) Definition: Ein Verarbeitungsschritt besteht aus: ➜ Laden einer Instruktion aus dem Programmspeicher Ein Parallelrechner ist eine Ansammlung von Recheneinheiten (Prozessoren), die durch koordinierte Zusammenarbeit komplexe Anwendungen schneller lösen können ➜ Laden angesprochener Daten aus dem Datenspeicher Slide 12 ➜ Anwendung der Instruktion auf die Daten ➜ Zurückspeichern des Resultates Viele Details in dieser Definition bleiben offen: ➜ ➜ ➜ ➜ Anzahl und Komplexität der Recheneinheiten Struktur der Verbindungen zwischen den Prozessoren Art der Koordination ... und vieles mehr Datenspeicher Prozessor Programmspeicher SISD ≈ Klassisches Von-Neumann-Rechnermodell Diese Details werden durch Klassifizierungen festgelegt c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 5 c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 6 F LYNNSCHE K LASSIFIKATION : MIMD F LYNNSCHE K LASSIFIKATION : MISD Ein Verarbeitungsschritt besteht aus: Ein Verarbeitungsschritt besteht aus: ➜ Laden einer Instruktion aus eigenem Programmspeicher ➜ Laden separater Daten ➜ Asynchrone Abarbeitung der jeweiligen Instruktionen ➜ Laden einer Instruktion aus eigenem Programmspeicher ➜ Laden derselben Daten aus dem Datenspeicher ➜ Anwendung verschiedener Instruktionen auf dasselbe Datum e 13 Prozessor 1 Programmspeicher 1 . . . . . . Prozessor n Programmspeicher n Datenspeicher Slide 15 Daten speicher Prozessor 1 Programmspeicher 1 .. . .. . Prozessor n Programmspeicher n MIMD ist das z.Zt. populärste Parallelrechnermodell. Die meisten Parallelrechner sind MIMD-Architekturen, bzw. Hybride, z.B.: MIMD-Maschinen mit SIMD-Knoten Keine der gegenwärtigen Architekturen entspricht genau dem MISD-Modell ⇒ bisher keine praktische Bedeutung F LYNNSCHE K LASSIFIKATION : SIMD V ERGLEICH : SIMD Verarbeitungsschritt: ➜ Laden derselben Instruktion aus (globalem) Programmspeicher ➜ Laden separater Daten aus (gemeinsamem oder verteiltem) Datenspeicher ➜ Synchrone Ausführung der Instruktion auf allen Daten ➜ Beispielanwendung: Seismologie e 14 speicher . .. Slide 16 ➜ SIMD-Rechner benötigen spezialisierte Prozessoren Mehrere realisierte SIMD-Rechner: z.B. Connection Machine (bis ca. 65K Prozessoren), MasPar, etc. bis zur Mitte der 90er BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 • Nachteile SIMD: ➜ Streng synchrone Abarbeitung bremst die Geschwindigkeit ⇒ Statement if (b==0) c=a; else c=a/b; benötigt zur Ausführung zwei Schritte: (1) Ein Teil der Prozessoren berechnet c=a; (2) Anderer Teil berechnet c=a/b. Programmspeicher Prozessor n c 2008 MIMD • Vorteil SIMD: nur ein Kontrollfluß =⇒ einfach zu programmieren, da alle Prozessoren gleichzeitig nur ein Kommando ausführen (oder setzen durch Maskierung aus) Prozessor 1 Daten VS . 7 c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 8 e 17 M ODERNE G RAFIKKAR TEN R ENAISSANCE VON ALS C OPROZESSOR Moderne GPUs verfügen über große Anzahl Shader Einheiten (=SIMD Prozessoren) Idee: Ein Hauptprogramm läuft auf der CPU, parallele Berechnungen werden auf die GPU ausgelagert SIMD Zwei Beispiele für moderne SIMD-Rechner: Slide 19 ➜ PlayStation 3 von Sony! Verwendet den Cell-Prozessor von IBM ➜ Programmierung z.B. mittels CUDA (Compute Unified Device Architecture) von NVIDIA ➜ CUDA ermöglicht Threadprogrammierung auf GPU ➜ Moderne Grafikkarten (GPUs) als SIMD Coprozessor ➜ Programmierer definiert Kernel, z.B. c[threadID]=a[threadID]/b[threadID] ➜ CUDA erzeugt für N Datenelemente N Threads ➜ Threads führen Kernel auf den Shader Einheiten gleichzeitig aus C ELL -P ROZESSOR VON IBM B EISPIEL : N VIDIA G E F ORCE 8800 GTX Hohe Leistung durch 8 Synergistic Processor Elements (SPEs) erreicht: ➜ SPE – vollständiger SIMD-Processor mit 128 Registern je 128 Bit ➜ 4 Floating-point Units + 4 Integer Units, insg. 32 GFlops/GOps ➜ Peak Performance des Prozessors: 32 X 8 SPEs = 256 GFLOPS ➜ Die Parallelisierung für PPEs wird vom Compiler gemacht, Prozessor selbst ändert die Reihenfolge der Instruktionen nicht. ➜ 128 Shader Einheiten mit je 1,35 GHz ➜ Peak Performance: 518 GFLOPS ➜ 768 MB Grafikspeicher Slide 20 e 18 c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 9 c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 10 e 21 K LASSIFIKATION NACH DER O RGANISATION DES S PEICHERS R ECHNER ➀ Physisch (aus der Sicht des Systemarchitekten) : MIT PHYSISCH VER TEILTEM S PEICHER II P ROGRAMMIERMODELL : Parallele und verteilte MIMD-Rechnersysteme ➜ Entspricht dem physischen Aufbau ➜ Expliziter Nachrichtenaustausch (message passing) über das Verbindungsnetzwerk ➜ Komplementäre Sende- und Empfangsbefehle (Send – Receive) Rechner mit virtuell (durch Hardware) gemeinsamem Speicher Multicomputer Speicher ist physisch verteilt Multiprozessoren Speicher ist physisch gemeinsam Slide 23 • Sendebefehl: PA sendet Nachricht m an PB • Empfangsbefehl: PB empfängt Nachricht von PA in Puffer b und bearbeitet den Puffer anschließend ➁ Logisch (aus der Sicht des Programmierers) : H ERAUSFORDERUNG F ÜR P ROGRAMMIERER : Das Programmieren vom expliziten Nachrichtenaustausch ist aufwendig und fehleranfällig, ➜ verteilter Adreßraum ➜ gemeinsamer Adreßraum insb. müssen einzelne Sende- und Empfangsbefehle aufeinander abgestimmt werden. Details dazu – später. Physische und logische Sicht sind zueinander orthogonal ! R ECHNER MIT PHYSISCH VER TEILTEM S PEICHER I H ISTORISCHE E NTWICKLUNG AUFBAU : VON VER TEILTEM S PEICHER I P UNKT- ZU -P UNKT V ERBINDUNG ( IN ERSTEN PARALLELRECHNERN ): ➜ Mehrere Recheneinheiten (Knoten) bestehend aus: Prozessor, lokalem bzw. privatem Speicher, I/O ➜ Verbindungsnetzwerk, das die Knoten durch physische Leitungen verbindet Verbindungsnetzwerk e 22 P = Prozessor Slide 24 ➜ Ein Knoten ist mit einer festen Menge von anderen Knoten durch physische Leitungen (Links) verbunden ➜ Kommunikation nur mit direkten Nachbarn, entfernte Kommunikation durch die Nachbar-Verbindungen realisiert ➜ Gleichzeitiges Senden und Empfangen evtl. möglich ➜ Die Kommunikation wird vom Programmierer explizit organisiert M = lokaler Speicher P P M M ... P M Computer with distributed memory and a hypercube network DATENSPEICHERUNG : ➜ Speicherung und direkter Zugriff auf lokalen Speicher ➜ Zugriff auf Speicher anderer Knoten nur über das Netzwerk, mit “Einverständnis” des Eigentümers c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 11 c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 12 E NTWICKLUNG VON VER TEILTEM S PEICHER II: DMA-C ONTROLLER R ECHNER ➜ DMA = direct memory access ➜ Direkter Datentransfer zwischen lokalem Speicher und I/O-Anschluß: entkoppelt Kommunikation vom Prozessor ➜ Kommunikation zwischen Nachbar-Knoten ist nicht-blockierend: ➜ mehrere Prozessoren ➜ gemeinsamer bzw. globaler Speicher, evtl. in Speichermodulen aufgeteilt, siehe b) ➜ Verbindungsnetzwerk, das die Prozessoren und gemeinsamen Speicher verbindet Slide 27 ➜ Entfernte Kommunikation wird durch Software über Nachbar-Links aufgebaut und dauert relativ lange a) b) P . . . P .. . M P E NTWICKLUNG DMA M M VON VER TEILTEM P Gemeinsamer Speicher S PEICHER III: H ARDWARE -R OUTER R ECHNER ➜ Entfernte Kommunikation wird von Routern (einer pro Knoten) realisiert, was die Zwischenknoten zusätzlich entlastet MIT PHYSISCH GEMEINSAMEM . . . M Speichermodule S PEICHER II P ROGRAMMIERMODELL : ➜ Folge: Entfernungen im Netzerk spielen immer geringere Rolle ➜ Gemeinsame Variablen (shared variables) ➜ Router und Leitungen bilden das eigentliche Netzwerk ➜ Verwendung von Multithreading: mehrere leichtgewichtige Prozesse arbeiten gleichzeitig (mehr dazu später) ➜ Aufgaben des Routers: Pipelining von Nachrichten, Vermeidung von Konflikten und Verklemmungen im Netz ➜ So werden hierarchische Systeme (Cluster ) aufgebaut e 26 P Verbindungsnetzwerk Verbindungsnetzwerk DMA . . . P Parallelrechner mit DMA−Verbindungen zum Netzwerk Verbindungsnetzwerk S PEICHER I AUFBAU : • Sender initiiert die Kommunikation (und arbeitet weiter) • Die Nachricht wird vom DMA im Empfänger gepuffert • Empfänger entnimmt die Nachricht aus dem Puffer e 25 MIT PHYSISCH GEMEINSAMEM Slide 28 ➜ Prozessoren greifen auf gemeinsamen Speicher zu ⇒ Lese- und Schreibkonflikte möglich B EWER TUNG : N N R R N R R = Router R N = Knoten bestehend aus Prozessor und lokalem Speicher N N N R R c 2008 R N R BY P N N R .. + relativ einfache Programmierung (Diskussionsfrage, da Konflikte und Synchronisierungsprobleme möglich) M ... ... Router externe Eingabekanaele S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 + gute Speicherausnutzung: keine Datenreplizierung nötig .. . – Speicherzugriffe aller Prozessoren erfolgen über ein Netzwerk: ⇒ hohe Hardware-Anforderung ⇒ Skalierbarkeit/Erweiterbarkeit des Systems problematisch externe Ausgabekanaele 13 c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 14 SMP – SYMMETRISCHE R ECHNER AUFBAU : ➜ Speicherzugriff über einen Bus (potentieller Flaschenhals) ➜ Kein zusätzlicher privater Speicher, evtl. Prozessor-Caches P1 P2 . . . S PEICHER MIT VIR TUELL GEMEINSAMEM ➜ Physisch: verteilter Speicher, i.d.R. hierarchisch ➜ Logisch: gemeinsamer Adreßraum durch Kohärenzprotokolle (mehr dazu später) ➜ Unterschiedliche Speicherzugriffszeiten in Abhängigkeit von der Speicheradresse ➜ Bezeichnung: NUMA-Maschinen = Non-Uniform Memory Access “Symmetrisch” bedeutet: Alle Prozessoren haben gleiche Funktionalität und gleiche Sicht auf den Gesamtspeicher, insb. gleiche Zugriffsdauer e 29 e 30 M ULTIPROZESSOREN I Slide 31 p P3 p 1 ... 2 p n schnell M1 Cache M2 Mn Cache Cache langsam Bus Verbindungsnetzwerk Speicher SMP – SYMMETRISCHE M ULTIPROZESSOREN II M ETHODEN • Quasi Industrie-Standard seit mehr als 20 Jahren für Hochleistungsserver, z.B. bei Großbanken. Slide 32 • Werden auch als UMA-Maschinen bezeichnet UMA = Uniform Memory Access • Beispiele: SUN Enterprise und SGI Challenge Systeme • Relativ niedrige Anzahl von Prozessoren wegen Skalierbarkeit (Flaschenhals s.o.!), i.d.R.: bis 30-60 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 R EDUKTION DER S PEICHERZUGRIFFSZEITEN ➜ Multithreading: jeder physische Prozessor simuliert eine feste Anzahl von virtuellen Prozessoren (abwechselnd) ⇒ verbirgt die Latenz der Speicherzugriffe E INSATZ VON SMP S : c 2008 ZUR ➜ Cache: kleiner, sehr schneller Speicher zwischen Prozessor und Hauptspeicher; mehr dazu nächste Vorlesung ⇒ Reduktion der transportierten Daten durch Speicherung häufig genutzter Daten im Cache ➜ Beachte: Cache 6= Cash :–) es wird jedoch manchmal Zeichen $ für Cache verwendet. 15 c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 16 CC-NUMA WAS HABEN WIR HEUTE GELERNT ➜ CC-NUMA – Cache-Coherent NUMA (siehe Bild) ➜ Bereits im Prozessor gibt es 4 Ebenen der Parallelität ➜ Der Cache kann Daten aus lokalem und aus virtuell gemeinsamem Speicher aufnehmen ➜ Viele Ideen (Pipelining, Multithreading, etc.) sind an mehreren Ebenen der Parallelität einsetzbar ➜ Die “Richtigkeit” von Daten (Cache-Kohärenz) wird von Hardware gewährleistet ➜ Moderne Prozessoren sind i.d.R. super-pipelined, sowie superscalar oder VLIW ➜ Beispiele: SGI Origin 2000, Cray T3E Slide 35 e 33 P1 P2 C1 C2 ... Pn ➜ Speicher kann gemeinsam, verteilt oder virtuell gemeinsam sein Cn ➜ DMA und Router befreien den Programmierer von expliziter Kommunikations-Organisation M2 M1 ➜ Beim (virtuell) gemeinsamen Speicher spielt die Daten-Kohärenz eine entscheidende Rolle Mn Verbindungsnetzwerk NC-NUMA UND ➜ Flynnsche Klassifizierung unterscheidet 4 Architekturklassen: SISD, MISD, SIMD, MIMD Nächste Vorlesungen: Caches, Kohärenz, Konsistenz, etc. COMA ➜ NC-NUMA = Non-Coherent NUMA: Hardware gewährleistet keine Kohärenz, deshalb enthält der Cache nur Daten der lokalen Speicher oder Variablen, die nur gelesen werden können ➜ Beispiel: Cray T3D – Vorgänger von Cray T3E ➜ COMA = Cache Only Memory Access (z.B. KSR 1/2): der ganze Speicher besteht aus individuellen Caches e 34 Prozessor P1 P2 Cache C1 C2 . . . Pn Cn Verbindungsnetzwerk ➜ Dynamische Speicherzuordnung, hoher Hardwareaufwand c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 17 c 2008 BY S ERGEI G ORLATCH · U NI M ÜNSTER · PARALLELE S YSTEME · VORLESUNG 2 18