next up previous contents index
Next: 2.3 Explizite Synchronisation Up: 2.2 Atomare Bestandteile und Previous: Beispiel: Programmlauf auf der

2.2.1 Annahmen zum Prozessormodell

  In den meisten Registerbasierten CPU's sind die elementaren Maschinenoperationen  oft atomar. Genauer werden wir folgende Annahmen machen.

  1. Die Werte der Grunddatentypen  (INTEGER, REAL, ...) werden als atomare Programmteile geladen bzw. geschrieben.
  2. Werte werden in Register  geladen, dann dort bearbeitet und schließlich wieder gespeichert.
  3. Jeder Prozeß hat seinen eigenen Registersatz.  (realisiert durch eigene Prozessoren, verschiedene Registersätze oder Kontextswitch).
  4. Zwischenergebnisse  werden im lokalen Speicher gehalten (eigene Register oder eigener Stack )

Diese Annahmen sind oft bei CPU's mit parallelen Ausführungseinheiten für Berechnungen und Adressdekodierungen nicht erfüllt, aber es ist sichergestellt, daß das die obigen Annahmen aus Programmsicht erfüllt sind. Zum Beispiel auf der KSR1 gilt folgendes:

Für die Programmierung von Parallelrechnern ergeben sich somit folgende Konsequenzen:

  1. Keine Annahmen über den zeitlichen Ablauf der Operationen machen!
    Alle Abhängigkeiten explizit abwarten.
  2. Falls in einem Programmteil keine globalen Variablen gelesen oder geschrieben werden, ist der Programmteil atomar.
  3. Falls bei der Auswertung eines Ausdrucks eine einzige globale Variable nur einmal gelesen oder geschrieben wird, ist die Auswertung atomar.
  4. Die Zuweisung zu einer lokalen Variablen x:= expr ist atomar, falls die Auswertung von expr atomar ist.
  5. Die Zuweisung zu einer globalen Variablen x:= expr ist atomar, falls die Auswertung von expr nur lokale Variablen benötigt oder die enthaltenen globalen Variablen nicht von einem anderen Prozeß beschrieben werden.
Zum Beispiel sind die Auswertungen in der Matrix Multiplikation atomar, da die Elemente der Matrizen A und B nur gelesen werden, die Variable s jeweils lokal deklariert ist und die Elemente der Matrix C nur einmal geschrieben werden.


next up previous contents index
Next: 2.3 Explizite Synchronisation Up: 2.2 Atomare Bestandteile und Previous: Beispiel: Programmlauf auf der

parallel@rz.uni-mannheim.de
Mon Okt 28 14:38:25 PST 1996