Архитектуры с параллелизмом на уровне команд Два класса • Суперскалярные процессоры • Процессоры с длинным командным словом Динамическое исполнение команд в суперскалярном процессоре • Предсказание ветвлений (переходов) (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 Гипертранспорт