5.10.1. Конфликты по данным
Конфликт по данным – это ситуация когда процессор останавливается из-за отсутствия данных в некотором последующем блоке конвейера в связи с незавершенностью одной из фаз команды на предыдущем шаге. Примером такого «торможения» может служить длительность выполнения команды сложения. Как правило, данная операция требует ожидания распространения переноса от младших разрядов к старшим. При большой длине операндов это время может колебаться в достаточно широких пределах, что и будет определять неравномерность работы конвейера. Для разрешения данной ситуации в систему должны вводиться сигналы маркеров, оповещающие каждый предыдущий блок конвейера о завершении операций в последующем.
Другой пример
конфликта по данным характеризует
ситуацию, возникающую при использовании
нескольких регистров, участвующих в
операции. Предположим, что значение
,
а программа пользователя требует
выполнения преобразований:

где умножение выполняется за 1 такт.
При последовательном
выполнении операций результат будет
равен
.
В параллельном режиме имеем диаграмму
вычислений:

В данном случае возникает конфликт «чтение при не записи». Конфликтная ситуация преодолевается за счет задержки устройством управления времени отработки фазы Е2 второй команды на один такт.
Другой вариант преодоления конфликтов по данным предполагает структурную реорганизацию конвейера. При этом в систему включаются дополнительные регистры и связи и в случае возникновения конфликта «чтение при не записи» результаты выполнения команды I1 передаются не в ЗУ конвейера, а непосредственно следующей команде.

В ходе трансляции
команды I2
компьютер определяет зависимость вида
,
в связи с чем, в конвейере устанавливается
коммутация, определяющая одновременно
с фазой
передачу содержимого буферного регистра
3 фазе
или
командыI2.
В некоторых системах зависимость между данными в различных подсистемах конвейера может быть устранена программными методами. При этом на этапе компиляции в проблемных местах вставляется команда NOP, что и устраняет конфликтную ситуацию задачи.
Рассмотренные методы устранения конфликтов указывают на тесную взаимосвязь и взаимообратное действие уровней развития аппаратуры и программного обеспечения. Если функции по преодолению конфликтов берет на себя компилятор, то сложность аппаратной части процессора существенно стандартизируется. Если же функции ПО реализованы в недостаточной мере, то архитектура процессора усложняется за счет модернизации операционного устройства и схем управления внутренним интерфейсом.
5.10.2. Побочные эффекты
При конвейерных вычислениях не исключены ситуации, когда команда изменяет не только содержимое регистра, заданного как приемник результата, но и ряд вспомогательных регистров процессора. Например, в ходе обработки массивов информации используется автоинкрементная или автодекрементная адресация. При этом наряду с образованием новых данных изменяется содержимое адресных регистров. Такая ситуация получила название побочного эффекта.
В некоторых случаях
побочные эффекты могут не влиять на ход
вычислений в конвейере, так как в фазе
выполнения
ряд действий легко совмещается. Однако
существует достаточно много функций,
совмещение которых принципиально
невозможно. В частности, широко известен
побочный эффект являющийся функцией
установки флагов. Учитывая, что признаки
устанавливаются по результатам
выполненных действий, возникают трудности
в использовании флагов при выполнении
ряда команд в конвейерной системе. Так,
в случае сложения операндов двойной
длины, возникает необходимость учета
флага переноса между регистрами как
это показано на рис.5.52.

RG1
+ RG3
При отработке команды АDD W вначале выполняется сложение
а
RG2 +RG4+С0.

Значение переноса анализируется в фазе D2, а формируется в конце фазы E1, таким образом, в начале фазы Е2 идет запоминание С0, и фиксируется неопределенность вида «побочный эффект» от установки флагов.
Побочный эффект от длительности установки флагов следует учитывать также при отработке команд условных переходов в программе и команд условного перехода к подпрограммам. Что касается других типов преобразований, то побочные эффекты возникают в операциях со стеком и при реализации сложных режимов адресации.
