next up previous
Next: 2.1.4 Klassifikation nach Speicherzugriff Up: 2.1 Klassifikationen Previous: 2.1.2 Hardwareklassifikation

   
2.1.3 Grobklassifikation nach Flynn

Im Jahre 1966 unterschied Michael Flynn [Fly66] parallele Architekturen bzgl. des Datenstroms und des Stromes der Programmanweisungen, so daß sich 4 Formen der Parallelität ergeben.
 
Tabelle 2.1: Flynn Klassifikation (Flynn's taxonomy)
Single Multiple  
Instruction Stream  
SISD MISD Single Data
SIMD MIMD Multiple Stream

SISD :  
Klassische Architektur

SIMD :  
Parallelität auf Anweisungsebene
1.
Die Daten sind über die Prozessoren verteilt, ein Programm wird ''im Gleichschritt'' auf allen Prozessoren abgearbeitet. Meist sehr einfache, dafür aber viele Prozessoren (Prozessorfelder CM2, MasPar).
Ein typisches Problem bei SIMD sind Programmalternativen :
\begin{figure}
\begin{center}
\unitlength0.05\textwidth
\begin{picture}
(8,6)
...
...b]{yes}} \put(6,4.2){\makebox(0,0)[b]{no}}
\end{picture}\end{center}\end{figure}



Liefert der Test ''?'' bei 2 Prozessen der SIMD-Maschine unterschiedliche Ergebnisse (T/F), ändert sich das Struktogramm in

\begin{figure}
\unitlength0.08\textwidth
\begin{picture}
(8,9)
\put(0,4){\lin...
...T''-Proz.}}
\put(6,7.5){\makebox(0,0){''F''-Proz.}}
\end{picture} \end{figure}






,d.h. eigentlich läuft ab :

\begin{figure}
\unitlength0.08\textwidth
\begin{picture}
(9,12)
\put(0,7){\li...
...ector(0,-1){11}} \put(9.2,0.5){\makebox(0,0)[l]{t}}
\end{picture}
\end{figure}




2.
Der Vektorrechner   benutzt das Pipelining derart, daß im Unterschied zum skalaren Rechner die gleiche Befehlssequenzen mit $n$ Datensätzen wiederholt werden. Eine typische Operation ist die SAXPY-Operation $\,\underline{y} := \underline{y} + {\alpha} \underline{x}\,$ in Abb. 2.1, welche auf einen Vektor  $\underline{y}$ den mit der reellen Zahl $\alpha$ skalierten Vektor  $\underline{x}$ addiert. Die Pipeline besteht in diesem Falle aus Addition, Multiplikation, Lade- und Speicheroperationen welche mit den Vektorregistern durchgeführt werden. Nach einem ''Startup'' wird i.a. pro Taktzyklus ein Ergebnis $y_i$ geliefert, obwohl in der skalaren Rechnung mehr Takte notwendig sind.
  
Abbildung 2.1: SAXPY im Vektorrechner
\begin{figure}
\mbox{}\hfill
\unitlength0.026\textwidth
\begin{picture}
(11,22)...
...(7.2,2){\makebox(0,0){$\underline{y}$ }}
\end{picture}\hfill\mbox{}
\end{figure}


Um hohe MFLOP-Raten zu erreichen, müssen die Vektorregister stets gefüllt sein ! Bei Nichtbeachtung dieser Forderung ist der Einsatz des Vektorrechners sinnlos, da nur die skalare Rechenleistung erreicht wird. In nebenstehender Abbildung tritt ein Vektor  $\underline{\alpha}$ auf, welcher nichts anderes als das Auffüllen des entsprechenden Vektorregisters mit dem Skalar $\alpha$ symbolisiert. Dies wird automatisch vom Compiler getan, da der Vektorrechner eigentlich nur die Operation $\,\underline{y} := \underline{y} + \underline{\alpha}^T \circledast \underline{x}\,$ effizient behandeln kann.

Aus der Sicht des Mathematikers im Sinne der Parallelisierung mathematischer Algorithmen beschleunigt der Vektorrechner ''nur'' die sequentiellen Algorithmen ohne etwas an ihnen zu ändern.


MIMD :  
Bedeutet Parallelität auf Programmebene, d.h. jeder Prozessor arbeitet sein eigenes Programm ab. Dies geschieht in der Regel aber nicht unabhängig voneinander, daher unterscheidet man :
1.
konkurrierende Prozesse (gemeinsame Ressourcen)
2.
kommunizierende Prozesse (Datenfluß, Datenaustausch)
Unterscheide
Programm (statisch) :  
Exakte Niederschrift eines Algorithmus

Prozeß (dynamisch) :  
Folge von Aktionen, einzige Annahme: positive Geschwindigkeit.


\begin{figure}[H]
\unitlength0.03\textwidth
\mbox{}\hfill
%%\begin{picture}(5,1...
...ng der Schwie\-rig\-kei\-ten)
\end{minipage}\hfill\mbox{}\\ [1ex]
%
\end{figure}


Oft repräsentiert jeder Prozeß dasselbe Programm, allerdings mit unterschiedlichen Daten.
$\Longrightarrow$ SPMD als Unterklasse der MIMD

SPMD :  
Single Program Multiple Data


next up previous
Next: 2.1.4 Klassifikation nach Speicherzugriff Up: 2.1 Klassifikationen Previous: 2.1.2 Hardwareklassifikation
Gundolf Haase
1998-12-22