Простои конвейера: рассмотрим пример:
Пример типичного конвейерного конфликта по данным (Data Hazard). В частности это конфликт типа RAW (Read After Write), при котором инструкция пытается прочитать значение регистра до того момента, когда в него будет записано ожидаемое значение.
Существует еще два типа конфликта по данным:
· WAW (Write After Write): текущая инструкция пытается записать значение в регистр до того момента, когда предыдущая инструкция осуществит в него запись;
· WAR (Write After Read): текущая инструкция пытается записать значение в регистр до того, как предыдущая инструкция осуществит его чтение.
Конвейерные конфликты: помимо конфликтов по данным существуют:
· Структурные конфликты
· Конфликты по Управлению
Структурные конфликты – вызваны структурными (аппаратными) особенностями вычислительного ядра. Например, отсутствие многопортового регистрового файла, раздельных запоминающих устройств для кода и данных и т.п., могут приводить к простоям конвейера.
Конфликты по управлению – связаны с принудительным изменением счетчика PC при исполнении инструкций вызова процедур, возврата из процедур, условных и безусловных переходов и т.п.