Слайд 2Два класса
Суперскалярные процессоры
Процессоры с длинным командным словом
Слайд 4Динамическое исполнение команд в суперскалярном процессоре
Предсказание ветвлений (переходов) (branch prediction).
Переименование регистров, чтобы
удалить зависимости между данными и регистрами, невидимые компилятору (register renaming).
Спекулятивное исполнение предсказанных переходов (speculative execution of predicted branches)
Исполнение команд вне порядка (out-of-order instruction execution)
Слайд 5Как реализован конвейер?
Устройство предварительной обработки инструкций в порядке их следования в программном
коде (front end).
Исполнение вне порядка (Out-Of-Order execution)
Блок упорядоченного завершения (In-order retirement)
Слайд 6Устройство front end
Предсказание следующей инструкции. Используются два алгоритма предсказания переходов. Динамический
алгоритм работает на стадии выборки. Статический алгоритм работает на стадии декодирования, использует правила: безусловные переходы выполняются, условные переходы назад выполняются, переходы вперед не выполняются, это соответствует обычному циклу.
Выборка потока инструкций.
Декодирование инструкций в микрооперации.
Переименование внешних регистров.
Размещение (назначение) вычислительных устройств и запоминание статуса каждой микрооперации в переупорядочивающем буфере (Reorder buffer (ROB)) в исходном порядке инструкций
Слайд 7Пример переименования регистров
(1) a = x + f; a = x + f;
(2) b =
a * z; b = a * z;
(3) a = a + v; a1 = a + v;
(4) d = a * b; d = a1 * b;
Слайд 8Каждый МОП может проходить через следующие стадии:
1. находится в очереди планировщика, но
ещё не готов к исполнению;
2. готов к исполнению (все аргументы операции вычислены);
3. запущен на исполнение (диспетчеризован);
4. исполнен и ждёт отставки либо отмены спекулятивной ветви;
5. находится в процессе отставки.
Слайд 9Устройство Out-Of-Order execution
Планирование и распределение микроопераций
Выполнение микроопераций и запоминание их результатов
временно в буфере ROB.
Слайд 10Блок упорядоченного завершения
Запись результатов обратно во внешние архитектурные регистры, постоянная запись
данных, если это необходимо.
Изъятие микроопераций из буфера ROB.