Архитектура современных ЭВМ Конвейеризация Маркова Валентина Петровна [email protected] Городничев Максим Александрович [email protected] Кафедра Параллельных вычислительных технологий ФПМИ НГТУ 2016 Что такое конвейеризация? Конвейеризация – это техника, в результате которой задача или команда разбивается на некоторое число подзадач, которые выполняются последовательно. Каждая подкоманда выполняется на своем логическом устройстве. Все логические устройства (ступени) соединяются последовательно таким образом, что выход i-ой ступени связан с входом (i+1)ой ступени, все ступени работают одновременно. Множество ступеней называется конвейером. Выигрыш во времени достигается при выполнении нескольких задач за счет параллельной работы ступеней, вовлекая на каждом такте новую задачу или команду. Схема конвейера команды Два способа передачи информации Работа конвейера Работа конвейера Ступени Все ступени конвейера активны Латентность конвейера Запись результата 1 2 3 4 5 2 3 4 5 6 2 3 4 5 6 2 3 4 5 6 3 4 5 6 1 Вычисление операции 1 Выборка операндов Выборка операндов Выборка команды 1 1 2 8 8 7 7 7 7 7 6 8 8 8 9 9 9 9 9 Время Пример Пример Пример Что тормозит работу конвейера? • Зависимости по данным • Конфликты по ресурсам • Зависимости по управлению, вызванные командами перехода Зависимости по данным • Существенные зависимости (RAW) (data forwarding) • Несущественные зависимости (WAW, WAR) (динамическое отображение логических ресурсов на физические) Конвейер Пример. Статическое состояние конвейера Зависимость RAW Что происходит на конвейере? Forwarding Зависимости по управлению • Вычисление исполнительного адреса на степени декодирования. • Использование буфера адреса перехода (BTB, Branch Target Buffer). • Буферы предвыборки. • Предсказание переходов (статический и динамический способы). Буфер адреса перехода Буфер BTB это кэш-память, в которой хранятся исполнительные адреса точек перехода нескольких последних команд, для которых переход имел место. Перед выборкой очередной команды ее адрес сравнивается с адресами команд, которые записаны в BTB. – Буфер адреса перехода Команда, на которую ссылка в BTB отсутствует, определяется стандартным образом. Если это команда перехода, то ее исполнительный адрес заносится в BTB, при условии, что команда завершилась переходом. При замещении в BTB используется алгоритм LRU. Предсказание переходов Идея ПП заключается в том, что до момента выполнения команды УП или сразу после ее поступления на конвейер делается предположение о наиболее вероятном ее исходе. при этом вычисления не останавливаются. При ошибочном предсказании перехода, конвейер необходимо вернуть в прежнее состояние (очистка конвейера) и выполнить загрузку команд с верного адреса. Способы предсказания перехода • Статический (учитывает априорную информацию о программе: анализ кода, профилирование). • Динамический (учитывает предысторию выполнения программы, она записывается в таблицу истории переходов (Branch History Table (BHT)). Строка таблицы для команды УП содержится целевой адрес и бит, который указывает, был ли сделан переход, когда команда встретилась последний раз. Если прогноз не верен, то бит в таблице меняется. Аппаратная сложность конвейера • G – аппаратная сложность неконвейеризованного устройства • L – сложность фиксатора • k – количество ступеней Cost pipe kL G Временная сложность конвейера • • • T – временная сложность неконвейеризованного устройства S – задержка фиксатора и накладные расходы k – количество ступеней T nk Speed up Tk k (n 1) BW pipe 1 s T k Какова должна быть длина конвейера? Оптимальная длина конвейера Пример умножения Алгоритм деления Пример деления Архитектуры с параллелизмом на уровне команд Два класса • Суперскалярные процессоры • Процессоры с длинным командным словом Динамическое исполнение команд в суперскалярном процессоре • Предсказание ветвлений (переходов) (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; Устройство Out-Of-Order execution • Планирование и распределение микроопераций • Выполнение микроопераций и запоминание их результатов временно в буфере ROB. Блок упорядоченного завершения • Запись результатов обратно во внешние архитектурные регистры, постоянная запись данных, если это необходимо. • Изъятие микроопераций из буфера ROB. Блок упорядоченного завершения • Блок упорядоченного завершения отражает результаты выполнения микроопераций в изменениях состояния архитектурных (логических) регистров, внешней памяти и портов. Назначение блока – сохранение последовательной модели исполнения программы при реальном параллельном выполнении команд и условном выполнении команд ветвления. • Рассматриваются логическое и физическое состояния процессора. Физическое состояние изменяется немедленно по завершении очередной команды. Логическое состояние изменяется, когда ясен результат условно исполненных команд. Упрощенная схема процессора