Как инструкция переупорядочения решает зависимость данных? - PullRequest
0 голосов
/ 18 июня 2020

Недавно я столкнулся с проблемой. Я смотрю видео о зависимости данных. И инструктор говорит, что переупорядочив инструкцию, можно решить проблему зависимости данных. Пример опасности чтения после записи:

A1 <- B1 + C1 
A2 <- A1 + B2 

В этом случае есть две остановки для второй инструкции. Переупорядочивая инструкции:

A2 <- A1 + B2 
A1 <- B1 + C1 

, мы избавляемся от опасности чтения после записи. Технически верно. Но мне интересно, не является ли второй подход логически неправильным и приведет к неправильному результату?

Пожалуйста, поправьте меня, если я ошибаюсь, потому что я новичок в этом.

1 Ответ

0 голосов
/ 18 июня 2020

Вы правы, это изменит результат и не является допустимой оптимизацией, если у вас нет другой информации, которая каким-то образом делает это безопасным. (то есть, что A уже было равно B1 + C1, и в этом случае вам нужно было просто оптимизировать его, а не переупорядочивать).

(я предполагаю, что «A» - это регистр, а A1 / A2 - порядковые номера для Метод Stati c Single Assignment для отслеживания времени жизни значений. Т.е. A2 - это второе значение, которое имеет A.)

Надеюсь, видео, которое вы смотрите, не предлагает этот способ решения проблема для первого случая, просто это другой пример, в котором нет проблемы.

...