Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSA.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.27 Mб
Скачать

Динамическое исполнение команд

Основная идея динамической оптимизации – снятие требования о выполнении команд в строгом порядке. Иначе говоря, предполагается, что в процессе выполнения команд, их порядок может меняться. Обычно это производится расщеплением блока декодирования на две ступени:

  1. Выдача (или декодирование) команды и проверка структурных конфликтов

  2. Чтение операндов (ожидание отсутствия конфликтов по данным и чтение операндов).

В общем случае необходимо строгую последовательность выполнения команд разложить в другую последовательность, чтобы команды могли выполняться параллельно.

CPI (Clock per Instruction). Общий CPI процессора равен CPI идеального конвейера + приостановки из-за RAW, WAR, WAW + приостановки из-за конфликтов по управлению.

Рассмотрим основные методы динамической оптимизации:

Метод

Что снижает

Разворачивание цикла

Приостановки по управлению

Базовое планирование конвейера

Приостановки по RAW

Динамическое планирование с централизованной схемой управления

Приостановки по RAW

Динамическое планирование с переименованием регистров

Приостановки по WAR и WAW

Динамическое прогнозирование переходов

Приостановки по управлению

Выдача нескольких команд в одном такте

Идеальный CPI

Анализ зависимостей компилятором

Идеальный CPI и все приостановки по данным

Программная конвейеризация и планирование трасс

Идеальный CPI и все приостановки по данным

Выполнение по предположению

Приостановки по управлению и все по данным

Динамическое устранение неоднозначности памяти

Приостановки по RAW, связанные с памятью

Разворачивание цикла. Эти методы выполняются либо статически (компилятором), либо динамически аппаратными средствами (во время выполнения). Альтернативный метод – использование векторных команд (оперирует с последовательностями элементарных данных). Эти команды могут выполняться конвейером и иметь относительно большие задержки выполнения, которые, впрочем, могут перекрываться.

Динамическая оптимизация с централизованной схемой обнаружения конфликтов.

  1. Все команды проходят через ступень выдачи результата строго в порядке, предписанном программой (упорядоченная выдача)

  2. Команды могут приостанавливаться и обходить друг друга на ступени чтения операндов.

Задача такой схемы – обеспечить как можно более раннее начало выполнения команд. Все это требует нахождения нескольких команд на стадии выполнения. Достигается это двумя способами:

  1. Реализация в процессоре множества не конвейерных функциональных устройств.

  2. Путем конвейеризации всех функциональных устройств.

Спекулятивное исполнение

Построение любой, желательно оптимизированной, последовательности команд (микрокоманд) строится на методах предсказания (то есть спекулятивно). Примером таких спекуляций являются последовательности команд, которые содержат условный оператор. Процессор вычисляет команды на обоих концах ветвления, результаты вычисления запоминаются как спекулятивные. На некотором этапе последовательность вычислений восстанавливается. Существует несколько вариантов спекулятивного исполнения:

  1. Предикация – одновременное исполнение нескольких ветвей программы вместо предсказания переходов (выполнение наиболее вероятного)

  2. Опережающее чтение данных – загрузка данных в регистры с опережением, до того, как определилось реальное ветвление программы.

Эти две возможности осуществляются комбинированно, то есть при компиляции и при выполнении программы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]