Flynnsche Klassifikation

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Flynnsche Klassifikation
Single
Instruction
Multiple
Instruction
Single
Data
SISD MISD
Multiple
Data
SIMD MIMD

Dieflynnsche Klassifikation[1][2](auchFlynn’sche Taxonomiegenannt) ist eine Unterteilung vonRechnerarchitekturen,welche 1966 vonMichael J. Flynnpubliziert wurde.[3]Dabei werden die Architekturen nach der Anzahl der vorhandenen Befehls-(instruction streams)und Datenströme(data streams)unterteilt. Die verwendeten vierbuchstabigen Abkürzungen SISD, SIMD, MISD und MIMD wurden aus den Anfangsbuchstaben der englischen Beschreibungen abgeleitet, zum Beispiel steht SISD für „SingleInstruction,SingleData “.

SISD (Single Instruction, Single Data)

[Bearbeiten|Quelltext bearbeiten]

Unter SISD-Rechnern versteht man traditionelle Einkernprozessor-Rechner, die ihre Aufgaben sequentiell abarbeiten. SISD-Rechner sind z. B. Personal-Computer (PCs) oder Workstations, welche nach derVon-Neumann-oder derHarvard-Architekturaufgebaut sind. Bei ersterer wird für Befehle und Daten die gleiche Speicheranbindung verwendet, bei letzterer sind sie getrennt.

SIMD (Single Instruction, Multiple Data)

[Bearbeiten|Quelltext bearbeiten]
Schematische Darstellung der SIMD-Architektur

SIMD-Computer, auch bekannt als Array-Prozessoren oderVektorprozessoren,dienen der schnellen Ausführung gleichartiger Rechenoperationen auf mehrere gleichzeitig eintreffende oder zur Verfügung stehende Eingangsdatenströme.

SIMD-fähige Prozessoren eignen sich beispielsweise gut für die Verarbeitung von Bild-, Ton- und Videodaten, weil in diesen Bereichen die zu verarbeitenden Daten meist hochgradig parallelisierbar sind; so sind z. B. bei einemVideoschnittdie Operationen für die vielen einzelnen Bildpunkte identisch. Theoretisch optimal wäre hier die Ausführung durch einen einzigen, auf alle Punkte anzuwendenden Befehl. Des Weiteren sind im Multimedia- und Kommunikationsbereich erforderliche Operationen häufig keine einfachen, einzelnen Operationen, sondern eher umfangreichere Befehlsketten. Das Einblenden eines Bildes vor einem Hintergrund ist beispielsweise ein komplexer Vorgang aus Maskenbildung mittelsXOR,Vorbereitung des Hintergrundes mittelsANDundNOT,sowie der Überlagerung der Teilbilder durchOR.Dieser Anforderung wird durch die Bereitstellung neuer komplexer Befehle entsprochen. So vereinigt z. B. derMMX-BefehlPANDNeine Invertierung und Und-Verknüpfung der Formx=yAND (NOTx).

Viele moderneProzessorarchitekturen(wiePowerPCundx86) beinhalten inzwischen SIMD-Erweiterungen, das heißt spezielle zusätzlicheBefehlssätze,die mit einem Befehlsaufruf gleichzeitig mehrere gleichartige Datensätze verarbeiten.

Allerdings muss man zwischen Befehlen unterscheiden, die lediglich gleichartige Rechenoperationen ausführen und anderen, die bis in den Bereich derDSP-Funktionalität hineinreichen (beispielsweise istAltiVecin dieser Hinsicht wesentlich leistungsfähiger als3DNow).

Bei heutigen Prozessoren sindSingle Instruction Multiple Data-Einheiten Stand der Technik:

Entwickler Prozessorarchitektur SIMD-Einheit
ARM Ltd. ARM32/ ARM64 NEON
IBM (AIM) Power/PowerPC AltiVec/ VSX
Intel u. a. x86(x86-16 /IA-32/x64) 3DNow/SSE/AVX

Siehe auch:

MISD (Multiple Instruction, Single Data)

[Bearbeiten|Quelltext bearbeiten]

Eine Architektur vonGroßrechnernbzw.Supercomputern.Die Zuordnung von Systemen zu dieser Klasse ist schwierig, sie ist deshalb umstritten. Viele sind der Meinung, dass es solche Systeme eigentlich nicht geben dürfte. Man kann aber fehlertolerante Systeme, die redundante Berechnungen ausführen, in diese Klasse einordnen. Ein Beispiel für dieses Prozessorsystem ist einSchachcomputer.

Eine Umsetzung ist dasMakropipelining,bei dem mehrere Recheneinheiten hintereinander geschaltet sind. Eine weitere sindredundanteDatenströme zur Fehlererkennung bzw. -korrektur.

MIMD (Multiple Instruction, Multiple Data)

[Bearbeiten|Quelltext bearbeiten]

Eine Architektur vonGroßrechnernbzw.Supercomputern.MIMD-Computer führen gleichzeitig verschiedene Operationen auf verschieden gearteten Eingangsdatenströmen durch, wobei die Verteilung der Aufgaben an die zur Verfügung stehenden Ressourcen, meistens durch einen oder mehrereProzessorendes Prozessorverbandes, selbst zurLaufzeitdurchgeführt wird. Jeder Prozessor hat Zugriff auf die Daten anderer Prozessoren.

Man unterscheidet eng gekoppelte Systeme und lose gekoppelte Systeme. Eng gekoppelte Systeme sindMehrprozessorsysteme,während lose gekoppelte Systeme Multicomputersysteme sind.

Multiprozessorsysteme teilen sich den vorhandenen Speicher und sind somit also ein Shared-Memory-System. Diese Shared-Memory-Systeme lassen sich weiter inUMA(uniform memory access),NUMA(non-uniform memory access) undCOMA(cache-only memory access) unterteilen.

Man versucht bei MIMD eine Problemstellung durch die Lösung von Teilproblemen in den Griff zu bekommen. Dabei entsteht wiederum das Problem, dass verschiedene Teilstränge des Problems miteinander synchronisiert werden müssen.

Ein Beispiel in diesem Falle wäre das UNIX-Kommandomake.Hier können auch mit mehreren Prozessoren mehrere zusammengehörige Programmcodes gleichzeitig in Maschinensprache übersetzt werden.

Siehe auch:

  • MSIMD,eine Architektur, die sich zwischen den Klassen SIMD und MIMD bewegt
  1. M. Flynn:Some Computer Organizations and Their Effectiveness,IEEE Trans. Comput., Band C-21, S. 948–960, 1972.
  2. Ralph Duncan:A Survey of Parallel Computer Architectures,IEEE Computer. Februar 1990, S. 5–16.
  3. Sigrid Körbler:Parallel Computing – Systemarchitekturen und Methoden der Programmierung,Seite 12.