Суперскалярный процессор

реклама
Архитектуры с
параллелизмом на
уровне команд
Два класса
• Суперскалярные процессоры
• Процессоры с длинным командным словом
Динамическое исполнение
команд в суперскалярном
процессоре
• Предсказание ветвлений (переходов)
(branch prediction).
• Переименование регистров, чтобы
удалить зависимости между данными и
регистрами, невидимые компилятору
(register renaming).
• Спекулятивное исполнение
предсказанных переходов (speculative
execution of predicted branches)
• Исполнение команд вне порядка (out-oforder instruction execution)
Как реализован конвейер?
• Устройство предварительной
обработки инструкций в
порядке их следования в
программном коде (front end).
• Исполнение вне порядка (Out-OfOrder execution).
• Блок упорядоченного
завершения (In-order retirement).
Упрощенная схема
процессора
Устройство front end
• Предсказание следующей инструкции.
Используются два алгоритма предсказания
переходов. Динамический алгоритм работает
на стадии выборки. Статический алгоритм
работает на стадии декодирования.
Статический алгоритм использует правила:
-- безусловные переходы выполняются,
-- условные переходы назад выполняются,
-- переходы вперед не выполняются (это
соответствует обычному циклу).
Предсказание следующей
инструкции
История поведения условных переходов
хранятся в таблицах
• BHT (Branch History Table) и
• BTB (Branch Target Buffer).
Устройства аналогично устройству
КЭШа, только вместо данных в BHT
хранится история поведения условных
переходов, а в BTB хранится результат
предсказания.
Двубитный предсказатель
Гибридный предсказатель
История
локального
поведения
(BHT)
1024 х 10bit
Локальный
предсказатель
1024 х 3bit
Глобальный
предсказатель
4096 х 2bit
Выбор
предсказателя
Program
Counter
Предсказание
История работы
Устройство front end
• Выборка потока инструкций.
• Декодирование инструкций в
микрооперации.
• Переименование внешних регистров.
• Размещение ВУ и запоминание
статуса каждой микрооперации в
переупорядочивающем буфере
(Reorder buffer (ROB)) в исходном
порядке инструкций.
Переименования регистров
• Переименование регистров основано на динамическом
отображении логических ресурсов в физические (аппаратные)
ресурсы процессора. Отображение номеров логических регистров
в номера физических регистров хранится в таблице подстановки
(lookup table) ((таблица псевдонимов регистров (RAT))). Строки
таблицы обновляются после декодирования каждой команды.
Очередной результат записывается в новый физический регистр,
но значение каждого логического регистра запоминается, чтобы
легко восстановиться в случае неправильного предсказания
направления условного перехода или прерывания команды из-за
возникновения исключительной ситуации.
•
Когда команда создает новое значение для логического
регистра, физический ресурс, в который помещается это значение,
получает имя. Последующие команды, использующие это
значение, снабжаются именем физического ресурса. Эта
процедура называется переименованием регистров. Таким
образом, в результате переименования с одним логическим
ресурсом может быть связано несколько значений в различных
физических ресурсах.
Пример переименования
регистров
(1)
(2)
(3)
(4)
a
b
a
d
=
=
=
=
x
a
a
a
+ f;
* z;
+ v;
* b;
a = x + f;
b = a * z;
a1 = a + v;
d = a1 * b;
Каждый МОП может проходить через
следующие стадии:
в очереди планировщика, но ещё не готов
к исполнению;
2 -- готов к исполнению (все аргументы операции
вычислены);
3 -- запущен на исполнение (диспетчеризован);
4 -- исполнен и ждёт отставки либо отмены
спекулятивной ветви;
5 -- находится в процессе отставки.
1
-- находится
Устройство Out-Of-Order
execution
• Планирование и распределение
микроопераций
• Выполнение микроопераций и
запоминание их результатов
временно в буфере ROB.
Блок упорядоченного
завершения
• Запись результатов обратно во
внешние архитектурные регистры,
постоянная запись данных, если это
необходимо.
• Изъятие микроопераций из буфера
ROB.
Блок упорядоченного
завершения
• Блок упорядоченного завершения отражает
результаты выполнения микроопераций в
изменениях состояния архитектурных (логических) регистров, внешней памяти и портов.
Назначение блока – сохранение последовательной модели исполнения программы при
реальном параллельном выполнении команд и
условном выполнении команд ветвления.
• Рассматриваются логическое и физическое
состояния процессора. Физическое состояние
изменяется немедленно по завершении очередной
команды. Логическое состояние изменяется, когда
ясен результат условно исполненных команд.
Pentium III
Alpha 21264
Athlon
Opteron
Гипертранспорт
Скачать