next up previous
Next: 2.2 Topologien Up: 2.1 Klassifikationen Previous: 2.1.3 Grobklassifikation nach Flynn

   
2.1.4 Klassifikation nach Speicherzugriff

Shared Memory (konkurrierende Prozesse) :  
Speicher, auf den verschiedene Prozesse ''gleichzeitig'' zugreifen, d.h. sie teilen sich den Speicher.
\fbox{$\displaystyle +$ }
Jeder Prozeß kann auf sämtliche Daten zugreifen.
$\Longrightarrow$ Serielles Programm kann ohne größere Schwierigkeiten zum Laufen gebracht werden. Führt in der Regel bei kleinen Prozessorzahlen ( $2\,\ldots\,16$) schnell zu einer ersten Leistungssteigerung.
\fbox{$\displaystyle -$ }
Anwachsen der Zugriffskonflikte (z.B. Bankkonflikte) bei größeren Prozesszahlen. Somit ist die Skalierbarkeit   (d.h. Leistung $\sim$ Prozessanzahl) nicht mehr gewährleistet.
\fbox{$\displaystyle -$ }
Zur Verringerung der Zugriffskonflikte sind sehr leistungsfähige Bussysteme bzw. Zugriffsverwaltungen notwendig.
$\Longrightarrow$ Verteurung des Gesamtsystems.


Distributed Memory (kommunizierende Prozesse) :  
besteht aus Speicherteilen, auf welche im gesamten Programmablauf stets nur jeweils ein Prozeß zugreifen kann. Werden Daten eines anderen Prozesses benötigt kann dies nur über explizite Kommunikation zwischen den Prozessen erfolgen.
\fbox{$\displaystyle +$ }
Keine Zugriffskonflikte bei Datenoperationen (Lokalität).
\fbox{$\displaystyle +$ }
Relativ preiswerte Hardware (sehr leistungsstarke hat aber auch Ihren Preis)
\fbox{$\displaystyle +$ }
Fast beliebig skalierbar.
\fbox{$\displaystyle -$ }
Kein direkter Zugriff auf die Daten anderer Prozesse.
$\Longrightarrow$ Nachrichtenaustausch (Kommunikation) über spezielle Kanäle (Links) notwendig.
$\Longrightarrow$ Serielles Programm ist nicht lauffähig, es werden spezielle parallele Algorithmen benötigt.
  $\mbox{$\bullet$}$
Aufwand für Kommunikation noch vor ca. 20 Jahren vernachlässigt, heute aber ist er mitentscheidend für die Qualität eines parallelen Algorithmus (u.a. Verhältnis Kommunikation zu Arithmetik).
  $\mbox{$\bullet$}$
Geschwindigkeit der Verbindungsnetzwerke von großer Bedeutung.


Distributed Shared Memory (DSM) :  
(auch Virtual Shared Memory) ist der intelligente Versuch eines Kompromisses zwischen Shared und Distributed Memory. Ein dem Distributed Memory aufgesetztes Message-Passing-System simuliert das Vorhandensein eines globalen Shared Memory (KSR: ''Meer von Adressen'', SGI: ''Interconnection fabric'').
\fbox{$\displaystyle +$ }
Auf diesem Speichermodell können serielle Programme sofort zum Laufen gebracht werden. Wenn die benutzen Algorithmen die Lokalität der Daten ausnutzen (d.h. mehrheitlich auf den dem Prozeß zugeordneten Speicher zugreifen) ist auch eine gute Skalierbarkeit erreichbar.
Mittlerweile (Frühjahr 97), hat SGI die Origin2000 mit dem Skalierbaren Symmetrischen Multiprocessing (S2MP) auf den Markt gebracht2.1. Jeder Prozessor dieser Maschine besitzt seinen eigenen lokalen Speicher, für die Gesamtmaschine ist der Gesamtspeicher aber als Shared Memory verfügbar. Möglich wurde dies durch den sehr schnellen Crossbar Switch von Cray (seit 1996 Tochtergesellschaft von SGI).

Bemerkung : Im Rahmen des EUROPORT-Projektes wurden 1995-1997 38 kommerzielle Codes parallelisiert. Bzgl. der Parallelisierbarkeit auf verschiedenen parallelen Programmiermodellen und Parallelrechnern sind interessante Vergleiche verfügbar. Insbesondere zeigte sich, daß ein distributed-memory-Konzept zur Datenlokalität in einem shared-memory Programm auf DSM-Hardware sehr erfolgreich eingesetzt werden kann und derart gestaltete Programme den automatisch parallelisierten im allgemeinen überlegen ist.


next up previous
Next: 2.2 Topologien Up: 2.1 Klassifikationen Previous: 2.1.3 Grobklassifikation nach Flynn
Gundolf Haase
1998-12-22