Files
2025-06-20 12:48:16 +03:00

3.4 KiB
Raw Blame History

Определение динамического планирования. Принципы реализации динамического планирования.

Динамическое планирование (неупорядоченное исполнение, out-of-order execution) - аппаратный механизм переупорядочивания (изменения порядка исполнения инструкций) во время исполнения.

  • Не может преодолеть истинные зависимости данных, но пытается сократить или даже предотвратить простои.
  • Позволяет обрабатывать случаи, когда зависимости между инструкциями неизвестны во время компиляции.

Концепции:

  • Инструкциям разрешается исполняться неупорядоченно, как только становятся доступны их операнды.
  • Разрешение инструкциям неупорядоченно завершаться.

Реализация динамического планирования:

  • Ступень декодирования инструкций ID делится на 2 ступени:

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

    Зависимости под данными записываются по мере того, как инструкции выдаются (динамически создается эквивалент графа зависимостей для множества инструкций, которые находятся в ЦП)

    1. Чтение операндов - ожидание разрешения конфликтов данных, если они есть, и последующее чтение операндов по мере их доступности. Может происходить в порядке, отличном от указанного в программе.
  • На ступени выборки инструкции IF производится выборка дополнительной инструкции в специальный регистр или нескольких инструкций в очередь в каждом такте.

  • Увеличивается число функциональных устройств для исполнения большего числа инструкций на ступени EX без структурных конфликтов.

  • Два подхода к реализации:

    1. Табло (Scoreboard), 1963.
    2. Алгоритм Томасуло, 1966.

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