Definition

Parallele Verarbeitung (Parallel Processing)

Was ist Parallele Verarbeitung (Parallel Processing)?

Wenn zwei oder mehr Prozessoren (CPUs) gleichzeitig unterschiedliche Teile einer Aufgabe bearbeiten, wird diese Methode als Parallelverarbeitung (Parallel Processing) bezeichnet und so wird die Verarbeitungszeit verkürzt. Sobald mehr als eine CPU oder Mehrkernprozessoren vorhanden sind, ist die Parallelverarbeitung möglich.

Mehrkernprozessoren sind IC-Chips (Integrated Circuit, Integrierter Schaltkreis), die zwei oder mehr Prozessoren enthalten, um eine bessere Leistung, einen geringeren Stromverbrauch und eine effizientere Verarbeitung mehrerer Aufgaben zu erreichen. Diese Multi-Core-Konfigurationen sind vergleichbar mit mehreren, separaten Prozessoren, die im selben Computer installiert sind. Vier bis acht Kerne sind üblich in Consumer-Geräten, höhere Konfigurationen, bis zu 24 Kerne, sind für anspruchsvollere Aufgaben im Einsatz.

Parallele Verarbeitung wird häufig zur Ausführung komplexer Aufgaben und Berechnungen verwendet. Data Scientists nutzen die Parallele Verarbeitung häufig für rechen- und datenintensive Aufgaben.

Wie funktioniert Parallelverarbeitung?

Typischerweise teilt ein Informatiker eine komplexe Aufgabe mit einem Softwarewerkzeug in mehrere Teile auf und ordnet jedes Teil einem Prozessor zu, dann löst jeder Prozessor seinen Teil und die Daten werden von einem Softwarewerkzeug wieder zusammengesetzt, um die Lösung zu lesen oder die Aufgabe auszuführen.

In der Regel arbeitet jeder Prozessor normal und führt die Operationen wie angewiesen aus, indem er Daten aus dem Speicher des Computers entnimmt. Die Software übernimmt auch die Kommunikation zwischen den Prozessoren, so dass sie bei Änderungen der Datenwerte synchron halten können. Computer mit nur einem Prozessor oder einem Prozessorkern können noch immer parallel verarbeiten, wenn sie zu einem Cluster vernetzt sind.

Welche Arten von Parallelverarbeitung gibt es?

Es gibt mehrere Arten der parallelen Verarbeitung. Zwei der am häufigsten verwendeten Arten sind SIMD und MIMD. SIMD oder Single Instruction Multiple Data (ein Befehl, mehrfache Daten), ist eine Form der parallelen Verarbeitung, bei der ein Computer zwei oder mehr Prozessoren demselben Befehlssatz folgen lässt, während jeder Prozessor unterschiedliche Daten verarbeitet. SIMD wird in der Regel zur Big-Data-Analyse verwendet, die auf den gleichen spezifizierten Benchmarks basieren.

MIMD, oder Multiple Instruction Multiple Data (mehrfache Befehle, mehrfache Daten), ist eine weitere verbreitete Form der parallelen Verarbeitung, bei der jeder Computer jeweils zwei oder mehr eigene Prozessoren ausführt und die CPUs verschiedene Datensätze verarbeiten.

Eine andere, weniger verbreitete Art der Parallelverarbeitung umfasst MISD, Multiple Instruction Single Data (mehrfache Befehle, einfache Daten), bei der jeder Prozessor einen anderen Algorithmus mit denselben Eingabedaten verwendet.

Serielle und parallele Verarbeitung im Vergleich

Während bei der parallelen Verarbeitung kann das System mehrere Aufgaben zeitgleich erledigen kann, wird bei der seriellen Verarbeitung (sequentielle Verarbeitung genannt) jeweils nur eine Aufgabe mit einem Prozessor erledigt. Wenn ein Computer mehrere zugewiesene Aufgaben erledigen muss, wird er jeweils nur eine Aufgabe auf einmal ausführen. Wenn ein Computer mit serieller Verarbeitung eine komplexe Aufgabe erledigen muss, dauert das im Vergleich zu einem Parallelprozessor in der Regel länger.

Historie der Parallelverarbeitung

Auf den ersten Computern lief immer nur ein Programm zur gleichen Zeit. Wer ein rechenintensives Programm ausführen wollte, das eine Stunde benötigte und ein Tape kopieren wollte, was ebenfalls eine Stunde dauert, der musste zwei Stunden warten. Eine frühe Form der parallelen Verarbeitung erlaubte das verschachtelte Ausführen beider Programme zusammen. Der Computer startete eine E/A-Operation (Eingang/Ausgang, Input/Output, I/O), und während er auf den Abschluss der Operation wartete, führte er das prozessorintensive Programm aus. Die Gesamtausführungszeit für die beiden genannten Jobs würde mit dieser Technologie dann etwas mehr als eine Stunde betragen.

Die nächste Verbesserung war der Multiprogrammbetrieb. In einem Multiprogrammiersystem durften mehrere von Benutzern eingereichte Programme den Prozessor jeweils nur für kurze Zeit benutzen. Für die Benutzer sah das so aus, als ob alle Programme gleichzeitig ausgeführt wurden. In diesen Systemen traten zunächst Probleme mit Ressourcenkonflikten auf. Explizite Anfragen nach Ressourcen führten zu einem Deadlock, bei dem zeitgleiche Anfragen nach Ressourcen den Zugriff von Programmen auf die Ressource blockierten. Der Wettbewerb um Ressourcen auf Maschinen ohne Tie-Breaking-Anweisungen führte zur sogenannten Critical Section Routine.

Die Vektorverarbeitung war ein weiterer Versuch, die Leistung zu erhöhen, indem man mehr als eine Aufgabe auf einmal erledigte. In diesem Fall wurden den Maschinen Fähigkeiten hinzugefügt, die es einer einzigen Anweisung ermöglichten, zwei Zahlenfelder gleichzeitig zu addieren (oder zu subtrahieren, zu multiplizieren oder anderweitig zu manipulieren). Das war bei bestimmten technischen Anwendungen sinnvoll, bei denen Daten natürlich in Form von Vektoren oder Matrizen vorkamen. In Anwendungen mit weniger geeigneten Daten war die Vektorverarbeitung nicht so wertvoll.

Der nächste Schritt bei der parallelen Verarbeitung war die Einführung von Multiprocessing. In diesen Systemen teilten sich zwei oder mehr Prozessoren die zu erledigende Arbeit. Die frühesten Versionen hatten eine Master/Slave-Konfiguration (heutzutage etablieren sich alternative Begriffe wie Agency/Operatives oder Captain/Conscript). Ein Prozessor (der Master) war so programmiert, dass er für die gesamte Arbeit im System verantwortlich war. Der andere (der Slave) führte nur die Aufgaben aus, die ihm vom Master zugewiesen wurden. Diese Anordnung war notwendig, weil es damals noch keinen Weg gab, Maschinen so zu programmieren, dass sie bei der Verwaltung der Ressourcen des Systems gleichberechtigt zusammenarbeiten konnten.

Symmetric Multiprocessing (SMP) und Massively Parallel Processing (MPP)

Der nächste Schritt in der Evolution ist das Symmetric Multiprocessing (SMP). In einem SMP-System ist jeder Prozessor gleichermaßen fähig und verantwortlich für die Verwaltung des Arbeitsflusses. Ursprünglich war es das Ziel, SMP-Systeme für Programmierer so aussehen zu lassen, als seien sie genau dasselbe wie ein Einzelprozessor. Ingenieure stellten jedoch fest, dass die Systemleistung um 10-20 Prozent gesteigert werden könnte, wenn einige Instruktionen in einer anderen Reihenfolge ausgeführt würden und Programmierer mit der höheren Komplexität schlicht fertig werden mussten. Dieses Problem tritt jedoch nur auf, wenn mehrere Prozessoren gleichzeitig denselben Operanden lesen möchten. Die Frage, wie sich SMP-Maschinen bei gemeinsam genutzten Daten verhalten sollen, ist noch nicht gelöst.

Je mehr Prozessoren in SMP-Systemen zeitgleich arbeiten, desto mehr Daten werden innerhalb des Systems hin- und hergeschoben. Dadurch ist ab einer bestimmten Zahl an Prozessoren – mehreren Dutzend – der Leistungsvorteil durch das Hinzufügen weiterer Prozessoren zu gering, um den zusätzlichen Aufwand zu rechtfertigen. Um das Problem der langen Ausbreitungszeiten zu umgehen, wurde das Message-Passing-System geschaffen. In diesen Systemen senden sich Programme, die Daten austauschen, gegenseitig Nachrichten, um anzukündigen, dass bestimmte Operanden ein neuer Wert zugewiesen wurde. Anstatt diesen neuen Wert an alle Teile eines Systems zu senden, wird der neue Wert nur denjenigen Programmen mitgeteilt, die ihn kennen müssen. Anstelle des gemeinsamen Speichers gibt es ein Netzwerk, das die Übertragung von Nachrichten zwischen Programmen unterstützt. Diese Vereinfachung ermöglicht es Hunderten, ja sogar Tausenden von Prozessoren, in einem System effizient zusammenzuarbeiten. Daher haben solche Systeme den Namen Massively-Parallel-Processing-Systeme (MPP, Massiv-Parallel-Verarbeitend) erhalten.

Je besser sich Probleme in separate, unabhängige Operationen zerlegen lassen, die auf riesigen Datenmengen anzuwenden sind, desto effektiver ist parallele Verarbeitung. Bei Data Mining besteht die Notwendigkeit, eine statische Datenbank mehrfach zu durchsuchen. Künstliche Intelligenz (KI) muss mehrere Alternativen gleichzeitig analysieren, wie bei einer Schachpartie. Häufig sind MPP-Systeme als Cluster von Prozessoren strukturiert. Innerhalb jedes Clusters interagieren die Prozessoren wie in einem SMP-System. Nur zwischen den Clustern werden Nachrichten weitergeleitet. Da Operanden entweder über Nachrichten oder über Speicheradressen angesteuert werden können, werden einige MPP-Systeme als NUMA-Maschinen (Non Uniform Memory Access) bezeichnet.

SMP-Maschinen sind viel einfacher programmierbar als MPP-Maschinen. SMP-Maschinen eignen sich gut für alle Arten von Problemen, vorausgesetzt, die Datenmenge ist nicht zu groß. Für bestimmte Probleme, wie das Data Mining riesiger Datenbanken, sind nur MPP-Systeme geeignet.

Diese Definition wurde zuletzt im Mai 2024 aktualisiert

Erfahren Sie mehr über Serverhardware