Konvergenz paralleler Architekturen

Parallele Maschinen wurden mit mehreren unterschiedlichen Architekturen entwickelt. In diesem Abschnitt werden wir verschiedene parallele Computerarchitekturen und die Art ihrer Konvergenz diskutieren.

Kommunikationsarchitektur

Die parallele Architektur erweitert die herkömmlichen Konzepte der Computerarchitektur um die Kommunikationsarchitektur. Die Computerarchitektur definiert kritische Abstraktionen (wie Benutzer-System-Grenzen und Hardware-Software-Grenzen) und die Organisationsstruktur, während die Kommunikationsarchitektur die grundlegenden Kommunikations- und Synchronisationsoperationen definiert. Es befasst sich auch mit der Organisationsstruktur.

Das Programmiermodell ist die oberste Ebene. Anwendungen werden im Programmiermodell geschrieben. Parallele Programmiermodelle umfassen -

  • Gemeinsamer Adressraum
  • Nachrichtenübermittlung
  • Datenparallele Programmierung

Shared addressDas Programmieren ist wie das Verwenden eines schwarzen Bretts, an dem man mit einer oder mehreren Personen kommunizieren kann, indem man Informationen an einem bestimmten Ort veröffentlicht, die von allen anderen Personen geteilt werden. Die individuelle Aktivität wird koordiniert, indem notiert wird, wer welche Aufgabe erledigt.

Message passing ist wie ein Telefonanruf oder ein Brief, bei dem ein bestimmter Empfänger Informationen von einem bestimmten Absender erhält.

Data parallelProgrammierung ist eine organisierte Form der Zusammenarbeit. Hier führen mehrere Personen gleichzeitig eine Aktion für einzelne Elemente eines Datensatzes aus und tauschen Informationen global aus.

Geteilte Erinnerung

Shared Memory Multiprozessoren sind eine der wichtigsten Klassen paralleler Maschinen. Es bietet einen besseren Durchsatz bei Workloads mit mehreren Programmen und unterstützt parallele Programme.

In diesem Fall ermöglichen alle Computersysteme einem Prozessor und einem Satz von E / A-Controllern, über eine Hardwareverbindung auf eine Sammlung von Speichermodulen zuzugreifen. Die Speicherkapazität wird durch Hinzufügen von Speichermodulen erhöht, und die E / A-Kapazität wird durch Hinzufügen von Geräten zum E / A-Controller oder durch Hinzufügen eines zusätzlichen E / A-Controllers erhöht. Die Verarbeitungskapazität kann erhöht werden, indem auf die Verfügbarkeit eines schnelleren Prozessors gewartet wird oder indem weitere Prozessoren hinzugefügt werden.

Alle Ressourcen sind um einen zentralen Speicherbus herum organisiert. Über den Buszugriffsmechanismus kann jeder Prozessor auf jede physikalische Adresse im System zugreifen. Da alle Prozessoren von allen Speicherorten gleich weit entfernt sind, ist die Zugriffszeit oder Latenz aller Prozessoren an einem Speicherort gleich. Das nennt mansymmetric multiprocessor.

Message-Passing-Architektur

Die Nachrichtenübermittlungsarchitektur ist auch eine wichtige Klasse paralleler Maschinen. Es bietet Kommunikation zwischen Prozessoren als explizite E / A-Operationen. In diesem Fall wird die Kommunikation auf E / A-Ebene anstelle des Speichersystems kombiniert.

In der Nachrichtenübermittlungsarchitektur wird die Benutzerkommunikation unter Verwendung von Betriebssystem- oder Bibliotheksaufrufen ausgeführt, die viele Aktionen auf niedrigerer Ebene ausführen, einschließlich der tatsächlichen Kommunikationsoperation. Infolgedessen besteht ein Abstand zwischen dem Programmiermodell und den Kommunikationsoperationen auf der Ebene der physischen Hardware.

Send und receiveist die häufigste Kommunikationsoperation auf Benutzerebene im Nachrichtenübermittlungssystem. Senden gibt einen lokalen Datenpuffer (der übertragen werden soll) und einen empfangenden Remote-Prozessor an. Empfangen gibt einen Sendevorgang und einen lokalen Datenpuffer an, in den die übertragenen Daten gestellt werden. Im Sendevorgang wird einidentifier oder ein tag wird an die Nachricht angehängt und die Empfangsoperation gibt die Übereinstimmungsregel wie ein bestimmtes Tag von einem bestimmten Prozessor oder ein beliebiges Tag von einem beliebigen Prozessor an.

Die Kombination eines Sende- und eines passenden Empfangs vervollständigt eine Speicher-zu-Speicher-Kopie. Jedes Ende gibt seine lokale Datenadresse und ein paarweises Synchronisationsereignis an.

Konvergenz

Die Entwicklung der Hardware und Software hat die klare Grenze zwischen dem gemeinsamen Speicher und den Nachrichtenübermittlungslagern überschritten. Das Weiterleiten von Nachrichten und ein gemeinsamer Adressraum repräsentieren zwei unterschiedliche Programmiermodelle. Jedes bietet ein transparentes Paradigma für das Teilen, Synchronisieren und Kommunizieren. Die grundlegenden Maschinenstrukturen haben sich jedoch zu einer gemeinsamen Organisation zusammengeschlossen.

Datenparallele Verarbeitung

Eine andere wichtige Klasse paralleler Maschinen wird verschiedentlich genannt - Prozessor-Arrays, datenparallele Architektur und Maschinen mit mehreren Anweisungen und mehreren Daten. Das Hauptmerkmal des Programmiermodells besteht darin, dass Operationen für jedes Element einer großen regulären Datenstruktur (wie Array oder Matrix) parallel ausgeführt werden können.

Datenparallele Programmiersprachen werden normalerweise erzwungen, indem der lokale Adressraum einer Gruppe von Prozessen angezeigt wird, einer pro Prozessor, der einen expliziten globalen Raum bildet. Da alle Prozessoren miteinander kommunizieren und eine globale Ansicht aller Vorgänge vorhanden ist, kann entweder ein gemeinsamer Adressraum oder die Nachrichtenübermittlung verwendet werden.

Grundlegende Designprobleme

Die Entwicklung eines Programmiermodells kann weder die Effizienz des Computers noch die Entwicklung von Hardware allein steigern. Die Entwicklung der Computerarchitektur kann jedoch die Leistung des Computers beeinflussen. Wir können das Entwurfsproblem verstehen, indem wir uns darauf konzentrieren, wie Programme eine Maschine verwenden und welche grundlegenden Technologien bereitgestellt werden.

In diesem Abschnitt werden wir die Kommunikationsabstraktion und die grundlegenden Anforderungen des Programmiermodells diskutieren.

Kommunikationsabstraktion

Die Kommunikationsabstraktion ist die Hauptschnittstelle zwischen dem Programmiermodell und der Systemimplementierung. Es ist wie der Befehlssatz, der eine Plattform bereitstellt, damit dasselbe Programm auf vielen Implementierungen korrekt ausgeführt werden kann. Operationen auf dieser Ebene müssen einfach sein.

Kommunikationsabstraktion ist wie ein Vertrag zwischen Hardware und Software, der es einander ermöglicht, sich flexibel zu verbessern, ohne die Arbeit zu beeinträchtigen.

Anforderungen an das Programmiermodell

Ein paralleles Programm hat einen oder mehrere Threads, die mit Daten arbeiten. Ein paralleles Programmiermodell definiert, welche Daten die Threads könnenname, welche operations kann für die benannten Daten ausgeführt werden und in welcher Reihenfolge die Operationen folgen.

Um zu bestätigen, dass die Abhängigkeiten zwischen den Programmen erzwungen werden, muss ein paralleles Programm die Aktivität seiner Threads koordinieren.