Табло - Scoreboarding

Табло - это централизованный метод, впервые использованный в CDC 6600 компьютер для динамического планирования конвейера, чтобы инструкции могли выполняться не по порядку, когда нет конфликтов и доступно оборудование.[1]

На табло зависимости данных каждой инструкции регистрируются. Инструкции выпускаются только тогда, когда табло определяет отсутствие конфликтов с ранее выданными и неполными инструкциями. Если инструкция остановлена ​​из-за того, что ее продолжение небезопасно, табло отслеживает поток выполнения инструкций до тех пор, пока не будут устранены все зависимости, прежде чем будет выпущена остановленная инструкция.

Этапы

Инструкции декодируются по порядку и проходят следующие четыре этапа.

  1. Проблема: Система проверяет, какие регистры будут прочитаны и записаны этой инструкцией. Эта информация запоминается, поскольку она понадобится на следующих этапах. Во избежание выходных зависимостей (WAW - Запись после записи) инструкция останавливается до тех пор, пока инструкции, намеревающиеся записать в тот же регистр, не будут выполнены. Команда также приостанавливается, когда требуемые функциональные блоки в настоящее время заняты.
  2. Читать операнды: После того, как инструкция была выдана и правильно назначена требуемому аппаратному модулю, инструкция ожидает, пока все операнды не станут доступными. Эта процедура разрешает зависимости чтения (RAW - Чтение после записи), потому что регистры, которые предназначены для записи другой инструкцией, не рассматриваются имеется в наличии пока они не будут написаны.
  3. Исполнение: Когда все операнды выбраны, функциональный блок начинает свое выполнение. После того, как результат будет готов, на табло сообщается.
  4. Результат записи: На этом этапе результат должен быть записан в регистр назначения. Однако эта операция откладывается до тех пор, пока более ранние инструкции - которые намереваются читать регистры, в которые эта инструкция хочет записать - не завершат свои читать операнды сцена. Таким образом, так называемые зависимости данных (ВОЙНА - Запись после прочтения) можно адресовать.

Структура данных

Для контроля выполнения инструкций на табло есть три таблицы состояния:

  • Статус инструкции: Указывает для каждой выполняемой инструкции, на каком из четырех этапов она находится.
  • Состояние функционального блока: Указывает состояние каждого функционального блока. Каждая функциональная единица поддерживает 9 полей в таблице:
    • Занят: указывает, используется ли устройство или нет
    • Операция: операция, выполняемая в отряде (например, MUL, DIV или MOD)
    • Fя: Регистр назначения
    • Fj, Fk: Номера регистров источника
    • Qj, Qk: Функциональные блоки, которые будут производить исходные регистры Fj, Fk
    • рjk: Флаги, указывающие, когда 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 с Регистрация переименования.

Смотрите также

Рекомендации

  1. ^ Торнтон, Джеймс Э. (1965). «Параллельная работа в управляющих данных 6600». Материалы осенней совместной компьютерной конференции 27–29 октября 1964 г., часть II: высокоскоростные компьютерные системы.. AFIPS '64. Сан-Франциско, Калифорния: ACM. С. 33–40. Дои:10.1145/1464039.1464045.
  • Гленфорд Майерс, "Регистрация табло на микросхеме микропроцессора", Патент США 4891753

внешняя ссылка