Mehrfachverarbeitung - Multiprocessing

Multiprocessing ist die Verwendung von zwei oder mehr zentralen Verarbeitungseinheiten (CPUs) innerhalb eines einzelnen Computersystems . Der Begriff bezieht sich auch auf die Fähigkeit eines Systems, mehr als einen Prozessor zu unterstützen oder Aufgaben zwischen diesen zu verteilen. Es gibt viele Variationen dieses grundlegenden Themas, und die Definition von Multiprocessing kann je nach Kontext variieren, hauptsächlich abhängig davon, wie CPUs definiert sind ( mehrere Kerne auf einem Chip , mehrere Chips in einem Gehäuse , mehrere Pakete in einer Systemeinheit usw. ).

Gemäß einigen Online-Wörterbüchern ist ein Multiprozessor ein Computersystem mit zwei oder mehr Verarbeitungseinheiten (mehreren Prozessoren), die sich jeweils einen Hauptspeicher und Peripheriegeräte teilen , um gleichzeitig Programme zu verarbeiten. Ein Lehrbuch aus dem Jahr 2009 definierte ein Multiprozessorsystem ähnlich, wobei jedoch darauf hingewiesen wurde, dass die Prozessoren „einen Teil oder alle Speicher- und E/A-Einrichtungen des Systems“ gemeinsam nutzen können; es gab auch eng gekoppeltes System als Synonym.

Auf der Betriebssystemebene, Multiprozessing wird manchmal Bezug zu nehmen auf die Ausführung von mehreren gleichzeitigen verwendeten Prozessen in einem System, wobei jeder Prozess auf einem separaten CPU oder Kern läuft, wie bei einem Augenblick zu einem einzigen Prozess entgegengesetzt. Bei Verwendung mit dieser Definition wird Multiprocessing manchmal mit Multitasking verglichen , das möglicherweise nur einen einzigen Prozessor verwendet, ihn jedoch in Zeitscheiben zwischen Tasks umschaltet (dh ein Time-Sharing-System ). Multiprocessing bedeutet jedoch eine echte parallele Ausführung mehrerer Prozesse unter Verwendung von mehr als einem Prozessor. Multiprocessing bedeutet nicht unbedingt, dass ein einzelner Prozess oder eine einzelne Aufgabe mehr als einen Prozessor gleichzeitig verwendet; der Begriff Parallelverarbeitung wird im Allgemeinen verwendet, um dieses Szenario zu bezeichnen. Andere Autoren ziehen es vor, die Betriebssystemtechniken als Multiprogramming zu bezeichnen und behalten den Begriff Multiprocessing für den Hardwareaspekt vor, mehr als einen Prozessor zu haben. Im Rest dieses Artikels wird Multiprocessing nur in diesem Hardware-Sinn beschrieben.

In Flynns Taxonomie sind Multiprozessoren wie oben definiert MIMD- Maschinen. Da sich der Begriff "Multiprozessor" normalerweise auf eng gekoppelte Systeme bezieht, in denen sich alle Prozessoren den Speicher teilen, sind Multiprozessoren nicht die gesamte Klasse von MIMD-Maschinen, die auch Multicomputersysteme zur Nachrichtenweiterleitung enthalten.

Vorgeschichte

Möglicherweise ist der erste Ausdruck der Idee von Multiprozessing wurde von geschrieben Luigi Federico Menabrea im Jahr 1842, über Charles Babbage ‚s Analytical Engine (wie durch übersetzte Ada Lovelace ):„die Maschine ins Spiel gebracht werden kann , um mehrere Ergebnisse auf dem gleichen geben Zeit, die die ganze Menge der Prozesse stark verkürzen wird."

Schlüsselthemen

Prozessorsymmetrie

In einem Mehrprozessorsystem können alle CPUs gleich sein oder einige können für spezielle Zwecke reserviert sein. Eine Kombination von Überlegungen zum Entwurf von Hardware und Betriebssystemsoftware bestimmt die Symmetrie (oder deren Fehlen) in einem gegebenen System. Zum Beispiel können Hardware- oder Softwareerwägungen erfordern, dass nur eine bestimmte CPU auf alle Hardware-Interrupts reagiert, während alle anderen Arbeiten im System gleichmäßig auf die CPUs verteilt werden können; oder die Ausführung von Kernelmodus-Code kann auf nur eine bestimmte CPU beschränkt sein, während Benutzermodus-Code in jeder Kombination von Prozessoren ausgeführt werden kann. Multiprozessorsysteme sind oft einfacher zu entwerfen, wenn solche Beschränkungen auferlegt werden, aber sie neigen dazu, weniger effizient zu sein als Systeme, in denen alle CPUs verwendet werden.

Systeme, die alle CPUs gleich behandeln, werden als symmetrische Multiprozessorsysteme (SMP) bezeichnet. In Systemen, in denen nicht alle CPUs gleich sind, können Systemressourcen auf verschiedene Weise aufgeteilt werden, einschließlich asymmetrischer Mehrfachverarbeitung (ASMP), nicht gleichförmiger Speicherzugriff (NUMA) und geclusterter Mehrfachverarbeitung.

Master/Slave-Multiprozessorsystem

In einem Master/Slave-Multiprozessorsystem steuert die Master-CPU den Computer und die Slave-CPU(s) führt(en) zugewiesene Aufgaben aus. Die CPUs können hinsichtlich Geschwindigkeit und Architektur völlig unterschiedlich sein. Einige (oder alle) der CPUs können einen gemeinsamen gemeinsamen Bus haben, jede kann auch einen privaten Bus (für private Ressourcen) haben, oder sie können mit Ausnahme eines gemeinsamen Kommunikationsweges isoliert sein. Ebenso können sich die CPUs einen gemeinsamen RAM teilen und/oder einen privaten RAM haben, auf den der/die andere(n) Prozessor(en) nicht zugreifen können. Die Rollen von Master und Slave können von einer CPU zur anderen wechseln.

Ein frühes Beispiel für ein Master/Slave-Multiprozessorsystem ist der Desktop-Computer Tandy/Radio Shack TRS-80 Model 16 , der im Februar 1982 auf den Markt kam und das Multi-User/Multi-Tasking- Betriebssystem Xenix , Microsofts Version von UNIX (genannt TRS -XENIX). Das Model 16 verfügt über 3 Mikroprozessoren, eine 8-Bit Zilog Z80 CPU mit 4MHz, eine 16-Bit Motorola 68000 CPU mit 6MHz und einen Intel 8021 in der Tastatur. Beim Booten des Systems war der Z-80 der Master und der Xenix-Boot-Prozess initialisierte den Slave 68000 und übertrug dann die Kontrolle auf den 68000, woraufhin die CPUs die Rollen wechselten und der Z-80 zu einem Slave-Prozessor wurde, der für alles zuständig war E/A-Operationen einschließlich Festplatte, Kommunikation, Drucker und Netzwerk sowie Tastatur und integrierter Monitor, während das Betriebssystem und die Anwendungen auf der 68000-CPU liefen. Der Z-80 könnte für andere Aufgaben verwendet werden.

Das frühere TRS-80 Model II , das 1979 veröffentlicht wurde, konnte auch als Multiprozessorsystem betrachtet werden, da es sowohl eine Z-80-CPU als auch einen Intel 8021-Mikroprozessor in der Tastatur hatte. Der 8021 machte das Model II zum ersten Desktop-Computersystem mit einer separaten, abnehmbaren, leichten Tastatur, die über ein einzelnes dünnes flexibles Kabel verbunden war, und wahrscheinlich zur ersten Tastatur, die einen dedizierten Mikroprozessor verwendet, beides Attribute, die später Jahre später von Apple und IBM kopiert wurden .

Befehls- und Datenströme

Bei der Mehrfachverarbeitung können die Prozessoren verwendet werden, um eine einzelne Befehlsfolge in mehreren Kontexten ( Einzelbefehl, Mehrfachdaten oder SIMD, häufig in der Vektorverarbeitung verwendet ), mehrere Befehlsfolgen in einem einzigen Kontext ( Mehrfachbefehl, Einzel -Daten oder MISD, die für Redundanz in ausfallsicheren Systemen verwendet werden und manchmal zur Beschreibung von Pipeline-Prozessoren oder Hyper-Threading verwendet werden ) oder mehrere Befehlsfolgen in mehreren Kontexten ( Mehrfachbefehl, Mehrfachdaten oder MIMD).

Prozessorkopplung

Eng gekoppeltes Multiprozessorsystem

Eng gekoppelte Multiprozessorsysteme enthalten mehrere CPUs, die auf Busebene verbunden sind. Diese CPUs können Zugriff auf einen zentralen gemeinsamen Speicher (SMP oder UMA ) haben oder können an einer Speicherhierarchie mit sowohl lokalem als auch gemeinsamem Speicher (SM) ( NUMA ) teilnehmen. Die IBM p690 Regatta ist ein Beispiel für ein High-End-SMP-System. Intel Xeon Prozessoren dominierten den Multi - Prozessor - Markt für Business - PCs und waren die einzige größere x86 Option bis zur Veröffentlichung von AMD ‚s Opteron Reihe von Prozessoren im Jahr 2004. Beiden Bereiche von Prozessoren ihre eigene Onboard - Cache hatten aber den Zugriff auf gemeinsam genutzten Speicher zur Verfügung gestellt; die Xeon-Prozessoren über eine gemeinsame Pipe und die Opteron-Prozessoren über unabhängige Pfade zum System- RAM .

Chip-Multiprozessoren, auch als Multi-Core- Computing bekannt, beinhalten mehr als einen Prozessor auf einem einzigen Chip und können als die extremste Form von eng gekoppeltem Multiprocessing angesehen werden. Mainframe-Systeme mit mehreren Prozessoren sind oft eng gekoppelt.

Locker gekoppeltes Multiprozessorsystem

Lose gekoppelte Multiprozessorsysteme (oft als Cluster bezeichnet ) basieren auf mehreren Standalone-Einzel- oder Dualprozessor- Common- Computern, die über ein Hochgeschwindigkeits-Kommunikationssystem ( Gigabit-Ethernet ist üblich) miteinander verbunden sind. Ein Linux- Beowulf-Cluster ist ein Beispiel für ein lose gekoppeltes System.

Eng gekoppelte Systeme weisen eine bessere Leistung auf und sind physikalisch kleiner als lose gekoppelte Systeme, erforderten jedoch in der Vergangenheit größere Anfangsinvestitionen und können schnell abschreiben ; Knoten in einem lose gekoppelten System sind in der Regel preiswerte Standardcomputer und können als unabhängige Maschinen nach dem Ausscheiden aus dem Cluster wiederverwendet werden.

Auch der Stromverbrauch spielt eine Rolle. Eng gekoppelte Systeme sind tendenziell viel energieeffizienter als Cluster. Dies liegt daran, dass eine beträchtliche Wirtschaftlichkeit dadurch erzielt werden kann, dass Komponenten in eng gekoppelten Systemen von Anfang an zusammenarbeiten, während lose gekoppelte Systeme Komponenten verwenden, die nicht unbedingt speziell für die Verwendung in solchen Systemen vorgesehen sind.

Lose gekoppelte Systeme haben die Möglichkeit, verschiedene Betriebssysteme oder OS-Versionen auf verschiedenen Systemen auszuführen.

Siehe auch

Verweise