Dieses Dokument beinhaltet die Ausarbeitung „Parallele Rechnerarchitekturen“ für das Seminar „Spezielle Probleme der Netzwerkorganisation und des Datenschutzes“.
Der Schwerpunkt dieser Arbeit liegt bei den parallelen Rechnerarchitekturen.
Es wird dabei auf die Besonderheiten der einzelnen Architekturen eingegangen und an einzelnen ausgewählten Beispielen näher erklärt.
Darüber hinaus wird auf die Besonderheit bei der Programmierung für parallele Rechnerarchitekturen eingegangen.
Abschließend wird ein kleiner Ausblick auf die nächste Generation gemacht, welches mit einem Fazit zu den parallelen Rechnerarchitekturen abgerundet wird.
Inhaltsverzeichnis
1 Einleitung
1.1 Entwurfskriterien für Rechnerarchitekturen
1.2 Parallelrechner
2 Taxonomie paralleler Computer
2.1 Vorstellung der einzelnen Architekturen
2.2 Erweiterung der Flynn Taxonomie
3 Die Architektur des Speichersystems
4 Kommunikationsmodelle und Verbindungsnetze
4.1 MIMD Systeme im Detail
4.2 Verbindungsnetze
5 Vermittlung und Routing Algorithmen
5.1 Vermittlungsstrategien
5.2 Routing Algorithmus
6 Parallele Programmierung
6.1 Allgemeine Vorgehensweisen
6.2 Codeaufteilung
6.3 Datenaufteilung
6.4 Datenkommunikation
6.5 Fehlermöglichkeiten
7 Zusammenfassung und Fazit
8 Literatur
1 Einleitung
Mit der Entwicklung immer schnellerer Rechnerarchitekturen steigt auch die Anforderung an die Prozessoren. Durch die Neuentwicklungen wurden die Rechenzeiten entscheidend verkürzt.
Bei der Lösung von Problemen spielt auch die Verarbeitung der Probleme in Echtzeit eine sehr wichtige Rolle. Aufgrund der Komplexität der Aufgaben gelingt die Lösung häufig nur durch Einsatz von Mehrprozessorsystemen. Mehrprozessorsysteme erlauben eine Parallelverarbeitung von verschiedenen anfallenden Aufgaben (Tasks). Da die Menschheit immer gewillt ist, stets nach vorne zu streben, versucht sie immer mehr, umfangreichere Probleme lösen zu können. Dies kann man mit dem Einsatz von parallelen Rechnerarchitekturen verwirklichen.
Nicht nur die Rechengeschwindigkeit von parallelen Rechnerarchitekturen, sondern auch die Systemzuverlässigkeit erhöht sich, wenn bei Ausfall eines Rechners die übrigen Rechner in der Lage sind, seine Aufgaben zu übernehmen.
Das spielt bei Echtzeitsystemen eine sehr entscheidende Sicherheitsrolle.
Der klassische von-Neumann-Rechner ist zusammengesetzt aus einem Zentralprozessor, dem Hauptspeicher und einen oder mehren Ein – und Ausgabegeräten. Die Kommunikation findet dabei über einen Bus statt.
Es werden Pufferspeicher (Cache) eingesetzt um die Verarbeitungsleistung zu erhöhen. Diese Rechnerarchitekturen sind aber für die Lösung komplexerer Aufgaben oder der Lösung von Echtzeitproblemen viel zu langsam bzw. besitzen eine zu geringe Speicherkapazität.
In den nächsten Kapiteln werden Entwurfskriterien und eine bekannte Art der Klassifikation von Rechnerarchitekturen etwas genauer erklärt.
Das Ziel soll es sein, einen guten Überblick, über Designkriterien und Verbindungsnetze von parallelen Rechnerarchitekturen zu bekommen.
1.1 Entwurfskriterien für Rechnerarchitekturen
Es wurde in dem vorangegangenen Text schon mehrmals das Wort Rechnerarchitektur verwendet.
Was ist aber eine Rechnerarchitektur und aus was besteht eine solche Architektur?
Unter Rechnerarchitektur versteht man: „Eine Rechnerarchitektur ist bestimmt durch ein Operationsprinzip für die Hardware und die Struktur ihres Aufbaus aus den einzelnen Hardware Betriebsmitteln“ (Bundschuh & Sokolowsky, 1996, S. 5).
In der oben genannten Definition wurde der Begriff Betriebsmittel verwendet.
Betriebsmittel können Prozessoren, Speicher, Verbindungseinrichtungen (Busse, Kanäle, Verbindungsnetzwerke) oder Peripheriegeräte sein.
Bundschuh, beschreibt in seinem Buch, das bestimmte Forderungen optimal erfüllt sein müssen, damit man mit einer Rechnerarchitektur optimal arbeiten kann.
Diese Forderungen können sein:
- Leistung
- Ausfalltoleranz
- Erweiterbarkeit
- Benutzbar
- Wartbarkeit
Nachdem der Begriff Rechnerarchitektur näher durchleuchtet und auch welche Forderung an Rechnerarchitekturen gestellt werden, kommen wir zur nächsten Erklärung, nämlich der der Parallelität.
Parallelität „(v. griech.: pará = entlang, neben + allélon = einander) bedeutet, dass etwas räumlich oder zeitlich neben etwas anderem verläuft, insbesondere speziell in der Informatik den Umstand, dass mehrere Vorgänge unabhängig voneinander stattfinden“ (Wikimedia Foundation Inc 2005d)
Da es in dieser Arbeit ausschließlich um parallele Rechnerarchitekturen geht, kommen wir früher oder später um den Begriff Parallelrechner nicht herum.
Was sind Parallelrechner und wo für werden diese eingesetzt bzw. wer benutzt solche Rechnerarchitekturen?
1.2 Parallelrechner
Ein Parallelrechner besteht aus mehreren CPUs die fast zeitgleich zusammenarbeiten, um ein Problem oder Aufgabe zu lösen
Parallelrechner gehören zur Klasse der Hochleistungsrechner (HPC).
HPC steht für High Performance Computer.
Wer aber benutzt ein HPC? Ein normaler Anwender (Heim-PC) wird sich sicherlich keinen Hochleistungsrechner anschaffen, denn nicht nur der Preis ist zu hoch, sondern auch die Größe eines HPC ist für den Normalverbraucher nicht geeignet.
Bei den HPC handelt es sich immer um Spezialrechner, die nur für eine bestimmte Tätigkeit, wie z.B. der Earth – Simulator, der für die Klimasimulation auf der Erde eingesetzt wird, gebaut wurden.
Der Earth - Simulator hat die Größe eines Fußballplatzes und die Kosten zur Unterhaltung verschlingen mehrere tausend Dollar pro Stunde (siehe nachfolgende Abbildung).
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 1: Der Earth Computer
(Quelle: Earth Simulator Planning and Coordination Office 2005 )
Der Earth - Simulator, der im März 2002 in Betrieb genommen wurde, besitzt eine theoretische Rechenleistung von 35.86 TFlops (LINPACK-Test).
TFlops (Terra - Floating Point Operations per second), ist eine Messgröße, die die Geschwindigkeit von Parallelrechner oder Prozessoren (wissenschaftliche Großrechner) angibt (Wikimedia Foundation Inc 2005a).
Der Linpack-Test ist ein in Fortran (höhere Programmiersprache) geschriebenes Benchmark-Programm, welches die Leistung von Supercomputer anhand von lösen von linearen Gleichungssystemen misst (Wikimedia Foundation Inc 2005c).
Die meisten heute eingesetzten Parallelrechner werden von Forschungszentren, Universitäten, Militär und Geheimdiensten benutzt.
Auf der Internetseite www.top500.org befindet sich ein Ranking über die schnellsten HPC, die zurzeit auf der Welt eingesetzt werden.
Die nachfolgende Tabelle stellt die fünf schnellsten Supercomputer auf der Erde dar (Stand: November 2004). Die Reihenfolge wird von den TFlops bestimmt.
Tabelle 1: Top 5 der Supercomputer
Abbildung in dieser Leseprobe nicht enthalten
Quelle: in Anlehnung an Meuer et. al. 2005
Mit Entwicklung der wissenschaftlichen und technischen Disziplinen steigt auch die Kompliziertheit der Probleme, die zu lösen sind. Es werden komplizierten Anlagen entwickelt, um Simulationen durchzuführen, wie z.B. Crash-Tests, Test von Atomwaffen, in der Gentechnik oder in der Darstellung von Flussströmungen (vgl. Luttermann 2003, S. 24).
Diese Simulationen beruhen auf sehr komplizierten Linear- und Differentialgleichungen.
Diese Gleichungen bestehen aus einer Mehrzahl von Formeln, die teilweise ineinander verschachtelt sind.
Da die klassische von-Neumann-Architektur nicht ausreicht, weder von der Speicherkapazität noch von ihrer Rechenleistung, entwickelte man die parallelen Rechnerarchitekturen. Aufgrund der gestellten Anforderungen an solche Rechensysteme (z.B. Simulationsdarstellung) wurden spezielle Architekturen entwickelt.
2 Taxonomie paralleler Computer
Es wurden im Laufe der Zeit viele verschiedenartige Arten von Parallelenrechnerarchitekturen entwickelt.
Da bestimmte Architekturen dieselben Eigenschaften bzw. Bauformen aufweisen, kam die Frage auf, wie man Parallelerechnerarchitekturen kategorisieren kann.
Die Wissenschaft von der Einteilung von Dingen in Taxa (Gruppen) nennt man Taxonomie.
Viele Fachbereiche verwenden den Begriff der Taxonomie allgemein für ein Klassifikationssystem, eine Systematik oder den Vorgang des Klassifizierens.
Ursprünglich kam der Begriff aus der Biologie und wurde von dem schwedischen Biologen Carl von Linné (1707-1778) geprägt. Er entwickelte ein Klassifizierungssystem, um die Flora und Fauna in bestimmte Kriterien, wie Ordnung, Familie, Gattung und Spezies zu unterteilen (vgl. Wikimedia Foundation Inc 2005f).
Die Gründe für eine Taxonomie liegen auf der Hand, denn damit kann man eine bessere Vergleichbarkeit von Rechnerarchitekturen erlangen.
Es dienen dabei einfache Charakteristika als Klassifikationsbasis.
Ein einfaches qualitatives Maß für die Ähnlichkeit zweier Architekturen kann nach verschiedenen Gesichtspunkten erfolgen (z.B.: Anzahl und Struktur funktioneller Einheiten oder Pipelining und Parallelismus).
Das bekannteste und einfachste Klassifikationsschema stammt von Michael J. Flynn (siehe Tabelle 2).
Sie basiert auf den zwei Konzepten: der Befehls – und der Datenströme.
Tabelle 2: Flynn Taxonomie
Abbildung in dieser Leseprobe nicht enthalten
Quelle: in Anlehnung an, Tannenbaum & Goodman, 2001,S.640
Der Befehlsstrom
Ein System mit n Prozessoren hat n Befehlszähler. Allgemein fasst man ein Leitwerk und das von ihm gesteuerte Rechenwerk als „Prozessor“ zusammen. Jeder Befehlsstrom hat einen eigenen Befehlszähler. Für jeden Befehlsstrom werden unterschiedliche Befehlszähler benutzt, die den jeweils aktuellen Befehl des ihnen zugeordneten Stroms beinhalten (vgl. Zemann, 2004, S. 10).
Der Datenstrom
Ein Datenstrom besteht aus einer Sequenz von Wertetupeln, auf denen Operationen (Befehle) ausgeführt werden (vgl. Zemann 2004, S.11).
In der Tabelle 2, auf Seite 7, werden die Abkürzungen SISD (Single Instruction Stream over a single data stream), SIMD (Single Instruction Stream over multiple data streams), MISD (Multiple instruction streams over a single data stream) und MIMD (Multiple instruction streams over multiple data streams) benutzt.
Diese Synonyme werden in den nachfolgenden Kapiteln näher erklärt.
2.1 Vorstellung der einzelnen Architekturen
Die in der Tabelle 2 aufgezeigten Systemmodelle werden in den nachfolgenden Unterpunkten näher erläutert.
2.1.1 SISD - Modell
Die meisten Rechnerarchitekturen gehören zur Klasse SISD, dahinter verbirgt sich alles, was man mit der von - Neumann - Architektur verbindet. Es zählen dazu die meisten Mikroprozessoren, fast alle Mainframe-Computer und so ziemlich alle Minicomputer der 80er Jahre.
Bei den SISD – Modellen wird ein sequenziell Datenstrom von einem entsprechenden sequenziellen arbeiteten Befehlsstrom abgearbeitet.
Beim Ausführen eines Programms erzeugt ein Leitwerk einen Befehlsstrom.
Befehle werden dann einzeln nacheinander von einem Rechenwerk ausgeführt.
Die untere Abbildung zeigt die klassische von - Neumann - Rechnerarchitektur.
Abbildung in dieser Leseprobe nicht enthalten
Abbildung 2: Die von - Neumann – Rechnerarchitektur
(Quelle: Zemann 2004, S. 14)
2.1.2 SIMD
Die Klasse der SIMD Rechner hat zwei wesentliche Vertreter.
Das sind zum einen Vektor- und zum anderen Arrayprozessoren. Es werden mehrere Datensätze mit einem Befehl verarbeitet, z.B. N Prozessoren führen zu einem Zeitpunkt den gleichen Befehl aber mit unterschiedlichen Daten aus.
SIMD Architekturen entsprechen den typischen Architekturen von Großrechnern bzw. Array-Prozessoren (z.B. Cray 1).
Sie sind dadurch gekennzeichnet, dass sie einen Befehlsstrom auf mehrere gleichzeitig eintreffende Datenströme schneller ausführen. Diese Verteilung eines Befehlsstroms an mehrere Einheiten wird Instruction Broadcasting genannt.
Die Besonderheit liegt darin, dass es nur ein Leitwerk zur Befehlsentschlüsselung gibt.
Das nachfolgende Beispiel soll die Arbeitsweise einer SIMD Architektur verdeutlichen.
Beispiel:
(2 + 10) + (6 + 12) + (2 + 22)
Arbeitsschritte: Nach 1. Takt: liegen drei Zwischenergebnisse vor (12, 18, 24)
Nach 2. Takt: 2 Zwischenergebnisse (30, 24)
Nach 3. Takt: liegt das Gesamtergebnis vor (54)
Wir nehmen drei SIMD-Prozessoren an.
Jeder Prozessor addiert zwei Zahlen. Um die Gesamtsumme aller sechs Zahlen bilden zu können, müssen die einzelnen Prozessoren ihre einzelnen Teilsummen an die anderen Prozessoren übermitteln.
Die Kommunikation der Prozessoren ist daher unerlässlich und erforderlich.
Das Ergebnis bei dieser Architektur würde nach drei Takten feststehen, hingegen würden SISD Rechner erst nach 5 Takten das vollständige Ergebnis liefern.
An dem oben gezeigten Beispiel wird die Schnelligkeit einer SIMD-Architektur gegenüber einer SISD-Architektur sehr gut verdeutlicht.
Die Komponenten können deshalb unabhängig voneinander verarbeitet werden, weil die SIMD-Architekturen auf Vektoren arbeiten.
Jedes Rechenwerk verfügt über eigene bidirektionale Verbindungen zum Hauptspeicher und stellt damit eine Erweiterung des von Neumann-Prinzips dar.
Einzelne Datenprozessoren können von der Verarbeitung einzelner Befehle ausgenommen werden, können aber zeitgleich keinen anderen Befehl ausführen.
Damit sind sie in ihrer Ausführbarkeit relativ begrenzt.
SIMD – Rechner arbeiten streng synchron (lock Stepp synchronity), d.h. alle Tasks starten und terminieren alle zum selben Zeitpunkt. Die Synchronisation ist deshalb so wichtig, weil die nachfolgenden Prozesse mit den Ergebnissen der vorangegangen Prozesse arbeiten und um die Wartezeit zu minimieren. Ohne diesen Abgleich würden Berechnungen keinen Sinn mehr ergeben.
Ein kritischer Punkt bei den SIMD – Rechnern ist dabei die Ein- und Ausgabe, deren Bandbreite ausreichen muss, um die Vielzahl der von den Prozessoren berechneten Daten auszugeben. Daher muss das Verbindungsnetzwerk eine sehr hohe Datenrate (mehr dazu im Kapitel 4.2 auf Seite 17) aufweisen.
Ein normaler (von-Neumann-Rechner) Rechner dient als so genannter Front-End-Rechner, bei der SIMD Architektur, dessen Aufgaben darin bestehen, einen Compiler für die SIMD-Maschine verfügbar zu machen und die Zugriffsverwaltung durch die Benutzer zu organisieren.
Allerdings kann sich der Front-End-Rechner auch an Rechenprozessen beteiligen und sogar Teil des Befehlsprozessors sein.
[...]
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen.