Конфликты и задержки при использовании конвейера возникают по разным причинам, среди которых:
- Структурные конфликты. ru.wikipedia.org dit.isuct.ru Возникают, когда аппаратура не может поддерживать все возможные комбинации одновременно выполняемых команд. ru.wikipedia.org Часто происходят, когда некоторый функциональный блок не полностью конвейеризован. ru.wikipedia.org Например, если в процессоре единый конвейер памяти для данных и команд, то команда с обращением к памяти данных вступает в конфликт с более поздней командой. ru.wikipedia.org
- Конфликты по данным. ru.wikipedia.org dit.isuct.ru Возникают, когда при совмещении команд в конвейере проявляется зависимость команды от результатов предыдущей. ru.wikipedia.org Такие конфликты появляются, когда конвейер изменяет порядок обращений считывания/записи к операндам так, что он отличается от порядка, который существует для последовательно выполняемых команд в процессоре без конвейера. ru.wikipedia.org
- Конфликты по управлению. ru.wikipedia.org intuit.ru Возникают при конвейерном выполнении условных передач управления и других команд, которые изменяют значение программного счётчика. ru.wikipedia.org Одна из возможных причин таких конфликтов — задержка поступления очередной команды, например, из-за промаха при попытке выборки команды из кэш-памяти. vital.lib.tsu.ru
Если на одной из ступеней конвейера возникает затор и работа не завершается за один такт, то весь конвейер останавливается в ожидании завершения процесса. vital.lib.tsu.ru Если такие ситуации возникают достаточно часто, то снижается производительность компьютера. vital.lib.tsu.ru