WikiDer > Табло
Табло - это централизованный метод, впервые использованный в CDC 6600 компьютер для динамического планирования конвейера, чтобы инструкции могли выполняться не по порядку, когда нет конфликтов и доступно оборудование.[1]
На табло зависимости данных каждой инструкции регистрируются. Инструкции выпускаются только тогда, когда табло определяет отсутствие конфликтов с ранее выданными и неполными инструкциями. Если инструкция остановлена из-за того, что ее продолжение небезопасно, табло отслеживает поток выполнения инструкций до тех пор, пока не будут устранены все зависимости, прежде чем будет выпущена остановленная инструкция.
Этапы
Инструкции декодируются по порядку и проходят следующие четыре этапа.
- Проблема: Система проверяет, какие регистры будут прочитаны и записаны этой инструкцией. Эта информация запоминается, поскольку она понадобится на следующих этапах. Во избежание выходных зависимостей (WAW - Запись после записи) инструкция останавливается до тех пор, пока инструкции, намеревающиеся записать в тот же регистр, не будут выполнены. Команда также приостанавливается, когда требуемые функциональные блоки в настоящее время заняты.
- Читать операнды: После того, как инструкция была выдана и правильно назначена требуемому аппаратному модулю, инструкция ожидает, пока все операнды не станут доступными. Эта процедура разрешает зависимости чтения (RAW - Чтение после записи), потому что регистры, которые предназначены для записи другой инструкцией, не рассматриваются имеется в наличии пока они не будут написаны.
- Исполнение: Когда все операнды выбраны, функциональный блок начинает свое выполнение. После того, как результат будет готов, на табло сообщается.
- Результат записи: На этом этапе результат должен быть записан в регистр назначения. Однако эта операция откладывается до тех пор, пока более ранние инструкции - которые намереваются читать регистры, в которые эта инструкция хочет записать - не завершат свои читать операнды сцена. Таким образом, так называемые зависимости данных (ВОЙНА - Запись после прочтения) можно адресовать.
Структура данных
Для контроля выполнения инструкций на табло есть три таблицы состояния:
- Статус инструкции: Указывает для каждой выполняемой инструкции, на каком из четырех этапов она находится.
- Состояние функционального блока: Указывает состояние каждого функционального блока. Каждая функциональная единица поддерживает 9 полей в таблице:
- Занят: указывает, используется ли устройство или нет
- Операция: операция, выполняемая в отряде (например, MUL, DIV или MOD)
- Fя: Регистр назначения
- Fj, Fk: Номера регистров источника
- Qj, Qk: Функциональные блоки, которые будут производить исходные регистры Fj, Fk
- рj,Рk: Флаги, указывающие, когда Fj, Fk готовы и еще не прочитаны.
- Статус регистрации: Указывает для каждого регистра, какой функциональный блок будет записывать в него результаты.
Алгоритм
Подробный алгоритм управления табло представлен ниже:
функция проблема(op, dst, src1, src2) подождите, пока (! Занят [FU] И! Результат [dst]); // FU может быть любым функциональным блоком, который может выполнять операцию op Занят [FU] ← Да; Op [FU] ← op; Fя[FU] ← dst; Fj[FU] ← src1; Fk[FU] ← src2; Qj[FU] ← Результат [src1]; Qk[FU] ← Результат [src2]; рj[FU] ← Qj[FU] == 0; рk[FU] ← Qk[FU] == 0; Результат[dst] ← FU;
функция read_operands (FU) подождите, пока (Rj[FU] И Rk[FU]); рj[FU] ← Нет; рk[FU] ← Нет;
функция выполнять(FU) // Выполняем что угодно FU должен сделать
функция write_back (FU) подождите, пока (∀f {(Fj[f] ≠ Fя[FU] ИЛИ Rj[f] = Нет) И (Fk[f] ≠ Fя[FU] ИЛИ Rk[f] = Нет)}) foreach f do if Qj[f] =FU затем Rj[f] ← Да; если Qk[f] =FU затем Rk[f] ← Да; Результат [Fя[FU]] ← 0; // 0 означает, что никакой FU не генерирует результат регистра RegFile [Fя[FU]] ← вычисленное значение; Занятый[FU] ← Нет;
Замечания
Метод табло должен останавливать стадию выдачи, когда нет доступной функциональной единицы. В этом случае будущие инструкции, которые потенциально могут быть выполнены, будут ждать, пока структурная опасность не будет устранена. Некоторые другие техники, такие как Алгоритм Томасуло может избежать структурной опасности, а также разрешить зависимости WAR и WAW с Регистрация переименования.
Смотрите также
Рекомендации
- ^ Торнтон, Джеймс Э. (1965). «Параллельная работа в управляющих данных 6600». Материалы осенней совместной компьютерной конференции 27–29 октября 1964 г., часть II: высокоскоростные компьютерные системы.. AFIPS '64. Сан-Франциско, Калифорния: ACM. С. 33–40. Дои:10.1145/1464039.1464045.
- Гленфорд Майерс, "Регистрация табло на микросхеме микропроцессора", Патент США 4891753
внешняя ссылка
- Динамическое планирование - Табло
- Компьютерная архитектура: количественный подход, Джон Л. Хеннесси и Дэвид А. Паттерсон
- EECS 252 Высшая компьютерная архитектура Lec XX - ТЕМА, Электротехника и компьютерные науки, Беркли, Калифорнийский университет.
- Пример табло