Grundlagen der Parallelverarbeitung
Formen des Parallelismus
Nebenläufigkeit
Eine Maschine arbeitet nebenläufig, wenn die Objekte vollständig gleichzeitig abgearbeitet werden.
Pipelining
- die Bearbeitung eines Objektes in Teilschritte zerlegt
- diese in einer sequentiellen Folge (Phasen der Pipeline) ausgeführt werden
- Die Phasen der Pipeline können für verschiedene Objekte überlappt abgearbeitet werden
Ebenen der Parallelität
Programmebene
Parallele Verarbeitung verschiedener Programme
Vollständig unabhängige Einheiten
- ohne gemeinsame Daten
- wenig oder keine Kommunikation und Synchronisation
Parallelverarbeitung wird vom Betriebssystem organisiert
Prozessebene (Task-Ebene)
Programm wird in Anzahl parallel ausführbarer Prozesse zerlegt
Prozess:
- schwergewichtiger Prozess (heavy-weighted process)
- Besteht aus vielen sequentiell ausgeführten Befehlen und umfasst eigene Datenbereiche
Synchronisation und Kommunikation
Betriebssystem unterstützt Parallelverarbeitung durch Primitive zur
Prozessverwaltung, Prozess-Synchronisation, Prozesskommunikation
Blockebene
- leichtgewichtige Prozesse (Threads)
- Bestehen jeweils aus sequentiell ausgeführten Befehlen teilen sich gemeinsamen Adressraum
- Synchronisation über Schlossvariablen (mutex), und Bedingungsvariablen (condition variables) oder darauf aufbauenden Synchronisationsmechanismen
- Kommunikation über gemeinsame Daten
- Aufwand für Thread-Erzeugung und-Beendigung, Thread-Wechsel geringer 👏
- Anweisungsblöcke
- Innere und äußere parallele Schleifen
- Verwendung von Microtasking
- Hohes Parallelitätspotential durch parallel ausführbare Schleifeninterationen
- leichtgewichtige Prozesse (Threads)
Anweisungs- oder Befehlsebene
- Parallele Ausführung einzelner Maschinenbefehle oder elementarer Anweisungen
- Optimierende (parallelisierende) Compiler für VLIW-Prozessoren oder Anwendung der Superskalartechnik in superskalaren Mikroprozessoren
- Analyse der sequentiellen Befehlsfolge
- Umordnen und Parallelisieren der Befehle
- Datenflusssprachen und funktionale Programmiersprachen erlauben explizite Spezifikation der Parallelität
Suboperationsebene
- Elementare Anweisung wird durch Compiler oder durch die Maschine in Suboperationen aufgebrochen, die parallel ausgeführt werden
Körnigkeit der Parallelität
Körnigkeit oder Granularität (grain size)
- ergibt sich aus dem Verhältnis von Rechenaufwand zu Kommunikations- oder Synchronisationsaufwand.
- bemisst sich nach der Anzahl der Befehle in einer sequentiellen Befehlsfolge
- grobkörnige (large grained) Parallelität
- Programmebene
- Prozessebene
- Blockebene
- feinkörnige (finely grained) Parallelität
- Anweisungsebene
![截屏2020-06-26 10.15.19](https://raw.githubusercontent.com/EckoTan0804/upic-repo/master/uPic/截屏2020-06-26%2010.15.19.png)