Datenabhängigkeit

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 22. September 2011 um 16:08 Uhr durch Aka (Diskussion | Beiträge) (+sort). Sie kann sich erheblich von der aktuellen Version unterscheiden.
Zur Navigation springen Zur Suche springen

Datenabhängigkeit (data dependency) beschreibt in der Informatik die Situation, dass Daten, die von einer Anweisung benutzt werden, auch von einer vorhergehenden Anweisung benutzt werden.

Es wird zwischen folgenden Arten von Datenabhängigkeiten unterschieden:

  • Echte Datenabhängigkeit (true dependence, read-after-write) besteht, wenn eine Anweisung lesend auf das Ergebnis einer vorangehenden Anweisung zugreift.[1] Beispiel:
    1. a = b + c
    2. d = a + 1
  • Gegenabhängigkeit (anti-dependence, write-after-read) besteht, wenn eine Anweisung einen Wert (über-)schreibt, auf den in der vorangehenden Anweisung lesend zugegriffen wird.[1] Beispiel:
    1. a = b + c
    2. b = d + 1
  • Ausgabeabhängigkeit (output dependence, write-after-write) besteht, wenn beide Anweisungen in die gleiche Variable schreiben.[1] Beispiel:
    1. a = b + c
    2. a = d + e

Wenn - wie bei konventionellen Programmen - eine Anweisung nach der anderen ausgeführt wird, stellen Datenabhängigkeiten kein Problem dar.

Bei Prozessoren mit Pipeline-Verarbeitung, die mehrere Anweisungen parallel durchführen, können sie jedoch zu Datenkonflikten führen.

Einzelnachweise

  1. a b c John L. Hennessy; David A. Patterson: Computer Architecture: a quantitative approach (3rd ed.). Morgan Kaufmann, 2003, ISBN 1-55860-724-2.