Зависимость от данных


Зависимость данных в информатике — это ситуация, в которой оператор программы (инструкция) ссылается на данные предыдущего оператора. В теории компиляторов метод, используемый для обнаружения зависимостей между операторами (или инструкциями), называется анализом зависимостей .

Предполагая оператор и , зависит от если:

Зависимость потока, также известная как зависимость данных, истинная зависимость или чтение после записи (RAW), возникает, когда инструкция зависит от результата предыдущей инструкции:

Инструкция 3 действительно зависит от инструкции 2, так как конечное значение C зависит от обновления инструкции B. Инструкция 2 действительно зависит от инструкции 1, так как конечное значение B зависит от обновления инструкции A. Поскольку инструкция 3 действительно зависит после инструкции 2, а инструкция 2 действительно зависит от инструкции 1, инструкция 3 также действительно зависит от инструкции 1. Таким образом, параллелизм на уровне инструкций в этом примере невозможен.[1]

Антизависимость, также известная как запись после чтения (WAR), возникает, когда инструкции требуется значение, которое впоследствии обновляется. В следующем примере инструкция 2 антизависима от инструкции 3 — порядок этих инструкций нельзя изменить, и они не могут выполняться параллельно (возможно, изменяя порядок инструкций), так как это повлияет на конечное значение A.