Табло является централизованным метод, впервые использованный в компьютере CDC 6600, для динамического планирования конвейера, чтобы инструкции могли выполняться не по порядку, когда нет конфликтов и оборудование доступно.
На табло, зависимости данных каждой инструкции регистрируются. Инструкции выдаются только тогда, когда табло определяет отсутствие конфликтов с ранее выданными и неполными инструкциями. Если инструкция остановлена из-за того, что ее продолжение небезопасно, табло отслеживает поток выполнения инструкций до тех пор, пока не будут устранены все зависимости, прежде чем будет выпущена остановленная инструкция.
Содержание
- 1 Этапы
- 2 Структура данных
- 3 Алгоритм
- 4 Примечания
- 5 См. Также
- 6 Ссылки
- 7 Внешние ссылки
Этапы
Инструкции декодируются по порядку и проходят следующие четыре этапа.
- Проблема : система проверяет, какие регистры будут прочитаны и записаны этой инструкцией. Эта информация запоминается, поскольку она понадобится на следующих этапах. Чтобы избежать зависимостей вывода (WAW - Запись после записи), инструкция останавливается до тех пор, пока инструкции, намеревающиеся записать в тот же регистр, не будут выполнены. Команда также останавливается, когда требуемые функциональные блоки в настоящее время заняты.
- Чтение операндов : после того, как инструкция была выдана и правильно назначена требуемому аппаратному модулю, инструкция ожидает, пока все операнды не станут доступными. Эта процедура разрешает зависимости чтения (RAW - Чтение после записи), поскольку регистры, которые предназначены для записи другой инструкцией, не считаются доступными, пока они не будут фактически записаны.
- Выполнение : Когда все операнды были получены, функциональный блок начинает свое выполнение. После того, как результат готов, на табло отправляется уведомление.
- Результат записи : На этом этапе результат должен быть записан в регистр назначения. Однако эта операция откладывается до тех пор, пока более ранние инструкции - которые намереваются читать регистры, в которые эта инструкция хочет выполнить запись - не завершат этап чтения операндов. Таким образом могут быть устранены так называемые зависимости данных (WAR - Запись после чтения).
Структура данных
Для управления выполнением инструкций табло поддерживает три таблицы состояния:
- Состояние инструкции : указывает для каждой выполняемой инструкции, на каком из четырех этапов она находится.
- Состояние функционального блока : указывает состояние каждого функционального блока. Каждый функциональный блок поддерживает 9 полей в таблице:
- Занят: указывает, используется ли блок или нет
- Опера: операция, которую нужно выполнить в блоке (например, MUL, DIV или MOD)
- Fi: Регистр назначения
- Fj,Fk: Номера регистров источника
- Qj,Qk: Функциональные блоки, которые будут создавать регистры источника F j, F k
- Rj,Rk: Флаги, указывающие, когда F j, F k готовы и еще не прочитаны.
- Состояние регистра : указывает для каждого регистра, какой функциональный блок будет записывать в него результаты.
Алгоритм
Подробный алгоритм управления табло описан ниже:
function issue (op, dst, src1, src2) wait until (! Busy [FU] AND! Result [dst]); // FU может быть любой функциональной единицей, которая может выполнять операцию op Busy [FU] ← Yes; Op [FU] ← op; F i [FU] ← dst; F j [FU] ← src1; F k [FU] ← src2; Q j [FU] ← Результат [src1]; Q k [FU] ← Результат [src2]; R j [FU] ← Q j [FU] == 0; R k [FU] ← Q k [FU] == 0; Результат [dst] ← FU;
функция read_operands (FU) ждет, пока (R j [FU] AND R k [FU]); R j [FU] ← Нет; R k [FU] ← Нет;
function execute (FU) // Выполняет все, что FU должен делать
function write_back (FU) ждать, пока (∀f {(F j [f] ≠ F i [FU] OR R j [f] = Нет) AND (F k [f] ≠ F i [FU] OR R k [f] = Нет)}) foreach f do, если Q j [f] = FU, то R j [f] ← Да; если Q k [f] = FU, то R k [f] ← Да; Результат [F i [FU]] ← 0; // 0 означает, что никакой FU не генерирует результат регистра RegFile [F i [FU]] ← вычисленное значение; Занято [FU] ← Нет;
Примечания
Метод табло должен останавливать стадию проблемы, когда нет доступной функциональной единицы. В этом случае будущие инструкции, которые потенциально могут быть выполнены, будут ждать, пока структурная опасность не будет устранена. Некоторые другие методы, такие как алгоритм Томасуло, могут избежать структурной опасности, а также разрешить зависимости WAR и WAW с помощью переименования регистров.
См. Также
Ссылки
- Гленфорд Майерс, «Регистрация показателей на микропроцессорной микросхеме», Патент США 4891753
Внешние ссылки
- Динамическое планирование - Табло
- Архитектура компьютера: A Количественный подход, Джон Л. Хеннесси и Дэвид А. Паттерсон
- EECS 252, Выпускник компьютерной архитектуры Lec XX - ТЕМА, Электротехника и компьютерные науки, Беркли, Калифорнийский университет.
- Пример табло