Риск по данным обусловлен взаимосвязанностью команд по данным и, в
противоположность структурному риску, является типичной и регулярно
возникающей ситуацией. Рассмотрим этот тип конфликта подробнее.
Пусть две
команды в конвейере Ki
и Kj предусматривают обращение к
одной и той же переменной N, причем
команда Ki предшествует команде Kj. В общем случае между Ki и Kj могут возникнуть
четыре типа ситуации обращения к переменной N:
1) команда Kj читает
N до того, как команда Ki успела записать новое значение N, то есть Kj
ошибочно получит старое значение N вместо нового;
2) команда Kj
записывает новое значение N до того, как команда
Ki успела прочитать N, то есть команда Ki ошибочно получит новое значение N вместо старого;
3) команда Kj записывает новое значение N прежде, чем команда Ki успела записать в качестве N свое значение, то есть N ошибочно содержит i-е значение N вместо j-го.
4) команда Kj читает
N прежде команды Ki.