Datenabhängigkeit
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:
- a = b + c
- 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:
- a = b + c
- b = d + 1
- Ausgabeabhängigkeit (output dependence, write-after-write) besteht, wenn beide Anweisungen in die gleiche Variable schreiben.[1] Beispiel:
- a = b + c
- 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
- ↑ a b c John L. Hennessy; David A. Patterson: Computer Architecture: a quantitative approach (3rd ed.). Morgan Kaufmann, 2003, ISBN 1-55860-724-2.