Конвейерные вычисления
Что такое конвейеризация? Конвейеризация – это техника, в результате которой задача или команда разбивается на некоторое число подзадач, которые выполняются последовательно. Каждая подкоманда выполняется на своем логическом устройстве. Все логические устройства (ступени) соединяются последовательно таким образом, что выход i-ой ступени связан с входом (i+1)-ой ступени, все ступени работают одновременно. Множество ступеней называется конвейером. Выигрыш во времени достигается при выполнении нескольких задач за счет параллельной работы ступеней, вовлекая на каждом такте новую задачу или команду.
Работа конвейера Ступени Выборка команды Выборка операндов Вычисление операции Запись результата Время Латентность конвейера 1я команда 2я команда 3я команда Все ступени конвейера активны
Пример
Что тормозит работу конвейера? Зависимости по данным Конфликты по ресурсам Зависимости по управлению, вызванные командами перехода
Зависимости по данным Существенные зависимости (RAW) (data forwarding) Несущественные зависимости (WAW, WAR) (динамическое отображение логических ресурсов на физические)
Конвейер
Пример. Статическое состояние конвейера
Зависимость RAW
Что происходит на конвейере?
Forwarding
Зависимости по управлению Вычисление исполнительного адреса на степени декодирования. Использование буфера адреса перехода (BTB, Branch Target Buffer). Буферы предвыборки. Предсказание переходов (статический и динамический способы).
Аппаратная сложность конвейера G – аппаратная сложность неконвейеризованного устройства L – сложность фиксатора k – количество ступеней
Временная сложность конвейера T – временная сложность неконвейеризованного устройства S – задержка фиксатора и накладные расходы k – количество ступеней
Какова должна быть длина конвейера?
Оптимальная длина конвейера