Тату-зависимость
- 1 year ago
- 0
- 0
Зависимость данных в информатике — это ситуация , в которой очередная команда программы зависит от какой-либо предыдущей команды. В теории компиляции техника обнаружения зависимости называется .
Существует три типа зависимостей: зависимости по данным, зависимости по именам и зависимости по управлению.
Будем говорить, что команда 2 зависит по данным от команды 1, если выполняется хотя бы одно из следующих условий:
Если команды зависимы по данным, то они не могут выполняться одновременно. этих команд требует создания некоторой машины с внутренними схемами блокировок конвейера , обеспечивающих устранение перекрытия. В машине без , компилятор не может спланировать зависимые команды так, чтобы они полностью совмещались. В противном случае программа не будет выполняться правильно.
Следующий тип зависимостей — зависимости по . Эти зависимости возникают при использовании командами одного и того же имени ( регистра , ячейки памяти), но при отсутствии передачи данных между командами. Можно выделить два типа зависимости по именам между командами 1 и 2:
Эти два типа зависимостей являются зависимостями по именам, так как в отличие от зависимости по данным, в них отсутствует передача данных от одной команды к другой. Значит команды, связанные зависимостью по именам, могут выполняться вместе, если имя ячейки памяти , используемое в командах, изменяется так, что команды не конфликтуют. Переименование регистров может выполняться статически компилятором , а также динамически аппаратными средствами.
Последний тип зависимостей — зависимости по управлению. Они определяют порядок команд по отношению к команде условного перехода . В результате чего команды, не являющиеся командами перехода, выполняются только когда они должны выполняться. Каждая команда в программе является зависимой по управлению от некоторого набора условных переходов. В общем случае, эти зависимости по управлению должны сохраняться.
Имеются два ограничения, связанные с зависимостями по управлению: