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