Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...
Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...
Parallele Algorithmen - Ra.informatik.tu-darmstadt.de - Technische ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
2.2.3. Parallel-Pointer Maschinen<br />
In [GK96] haben die Autoren, aufbauend auf Knuths Linking Automat, die Parallel-<br />
Pointer-Maschine (PPM) <strong>de</strong>finiert, um darauf einen Sortieralgorithmus zu mo<strong>de</strong>llieren.<br />
Das Mo<strong>de</strong>ll besitzt mehrere synchronisierte Prozessoren, welche auf einen gemeinsamen<br />
Speicher zugreifen. Der Speicher kann entwe<strong>de</strong>r nach <strong>de</strong>m EREW, <strong>de</strong>m CREW o<strong>de</strong>r <strong>de</strong>m<br />
CRCW Pinzip betrieben wer<strong>de</strong>n. Er ist als gerichteter Graph repräsentiert und erlaubt<br />
nur die Zugriffe, welche durch die Pointer-Maschinen <strong>de</strong>finiert sind.<br />
Innerhalb <strong>de</strong>s Graphen beinhaltet je<strong>de</strong>r Knoten eine konstante Anzahl an Wertefel<strong>de</strong>rn<br />
und eine konstante Anzahl an Pointern zu an<strong>de</strong>ren Knoten.<br />
Prozessoren haben eine konstante Anzahl an Registern, in <strong>de</strong>nen Pointer stehen, welche<br />
einen Zugriff auf <strong>de</strong>n Speicher ermöglichen. Der gesamte Datenaustausch <strong>de</strong>r Prozessoren<br />
geschieht über <strong>de</strong>n gemeinsamen Speicher, es existiert keine an<strong>de</strong>re Kommunikationsmöglichkeit.<br />
Die Prozessoren können <strong>de</strong>n Speicher aktiv modifizieren, in<strong>de</strong>m sie bei<br />
Bedarf in einem Schritt neue Speicherzellen erstellen.<br />
Da die gesamte Ein- und Ausgabe <strong>de</strong>r PPM aus Pointern besteht, ist es wichtig festzulegen,<br />
welche Operationen erlaubt sind und welche nicht. Erlaubte Pointer Operationen<br />
sind:<br />
• Kopieren eines Pointers in ein Pointer-Register <strong>de</strong>s Prozessors.<br />
• Schreiben eines Pointer-Registers-Inhalts <strong>de</strong>s Prozessors in eine Pointer-Speicherzelle<br />
• Vergleichen von zwei Pointer-Registerinhalten auf Äquivalenz<br />
• Lesen <strong>de</strong>s Speicherinhalts, auf <strong>de</strong>n ein Pointer zeigt.<br />
Verboten ist Pointer-Arithmetik wie z. B. in<strong>de</strong>xierte Addressierung. Zusätzlich darf ein<br />
Prozessor auf Werte (nicht auf Pointer) die normalen Arithmetik- und Vergleichsoperationen<br />
ausführen.<br />
2.3. Die Zellularautomaten<br />
Das erste Mal wur<strong>de</strong>n Zellularautomaten von John von Neumann vorgeschlagen, welcher<br />
auf <strong>de</strong>r Suche nach einer selbstreproduzieren<strong>de</strong>n Maschine war. Es gelang ihm,<br />
einen Zellularautomaten anzugeben, welcher mit 29 Zustän<strong>de</strong>n fähig war, sich selbst zu<br />
reproduzieren. Später wur<strong>de</strong> dieser Automat von Signorini auf einer SIMD-Maschine<br />
implementiert ([Sig89]).<br />
Schon von Neumann zeigte, dass man mit <strong>de</strong>m Zellularautomaten je<strong>de</strong> beliebige Turingmaschine<br />
simulieren kann. Dieser Beweis wird beispielsweise in [Sar00] und [ARS71]<br />
nachvollzogen. [Sar00] bietet zu<strong>de</strong>m eine gute Übersicht über die Entwicklung von Zellularautomaten.<br />
18