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

26 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#### Определение динамического планирования. Принципы реализации динамического планирования.
**Динамическое планирование** (неупорядоченное исполнение, out-of-order execution) - аппаратный механизм переупорядочивания (изменения порядка исполнения инструкций) во время исполнения.
- Не может преодолеть истинные зависимости данных, но пытается сократить или даже предотвратить простои.
- Позволяет обрабатывать случаи, когда зависимости между инструкциями неизвестны во время компиляции.
**Концепции:**
- Инструкциям разрешается исполняться неупорядоченно, как только становятся доступны их операнды.
- Разрешение инструкциям неупорядоченно завершаться.
**Реализация динамического планирования:**
- Ступень декодирования инструкций ID делится на 2 ступени:
1. **Выдача** - декодирование инструкций, проверка структурных конфликтов. Всегда выполняется в порядке, указанном в программе.
Зависимости под данными записываются по мере того, как инструкции выдаются (динамически создается эквивалент графа зависимостей для множества инструкций, которые находятся в ЦП)
1. **Чтение операндов** - ожидание разрешения конфликтов данных, если они есть, и последующее чтение операндов по мере их доступности. Может происходить в порядке, отличном от указанного в программе.
- На ступени выборки инструкции IF производится выборка дополнительной инструкции в специальный регистр или нескольких инструкций в очередь в каждом такте.
- Увеличивается число функциональных устройств для исполнения большего числа инструкций на ступени EX без структурных конфликтов.
- Два подхода к реализации:
1) **Табло (Scoreboard)**, 1963.
2) **Алгоритм Томасуло**, 1966.
Будем считать, что стадия выборки выполняется на соответствующем для нее такте, что конфликтов управления у нас не возникает, что выборка всегда успевает поставить нам очередную инструкцию.
Предполагаем, что может быть реализовано несколько исполняющих блоков на стадии исполнения.