280 likes | 511 Views
Архитектуры с параллелизмом на уровне команд. Два класса. Суперскалярные процессоры Процессоры с длинным командным словом. Динамическое исполнение команд в суперскалярном процессоре. Предсказание ветвлений (переходов) ( branch prediction ).
E N D
Архитектуры с параллелизмом на уровне команд
Два класса • Суперскалярные процессоры • Процессоры с длинным командным словом
Динамическое исполнение командв суперскалярном процессоре • Предсказание ветвлений (переходов) (branch prediction). • Переименование регистров, чтобы удалить зависимости между данными и регистрами, невидимые компилятору (register renaming). • Спекулятивноеисполнениепредсказанныхпереходов (speculativeexecution 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 Глобальный предсказатель 4096 х 2bit Выбор предсказателя Program Counter История работы Предсказание Гибридный предсказатель
Устройство 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.
Блок упорядоченного завершения • Блок упорядоченного завершенияотражаетрезультатывыполнения микроопераций в изменениях состояния архитектурных (логичес-ких) регистров, внешней памяти и портов. Назначение блока – сохранение последователь-ной модели исполненияпрограммыпри реальном параллельном выполнении команд и условном выполнении команд ветвления. • Рассматриваются логическое и физическоесостояния процессора. Физическое состояние изменяется немедленно по завершении очередной команды. Логическое состояние изменяется, когда ясен результат условно исполненных команд.