Понимание алгоритма Томасуло

Итак, я пытаюсь понять алгоритм Томасуло для неупорядоченного выполнения инструкций. Вот что я получил на данный момент:

  • Инструкции извлекаются по порядку и сохраняются в очереди инструкций.

  • Переименование регистра происходит где-то дальше...? Насколько я понимаю, это делается для того, чтобы избежать опасностей WAR/WAW, давая метки регистрам. Скажи, что у тебя есть добавить r1,r2,r3 (1) добавить r3,r5,r6 (2) У вас есть опасность ВОЙНЫ, и вам нужно убедиться, что инструкция (1) считывает старое значение r3 перед добавлением его к r1. Итак, я предполагаю, что в очереди инструкций (?) Аппаратное обеспечение переименовывает регистры, т.е. добавить r1,r2,r3#1 добавить r3 # 2, r5, r6 Или что-то подобное.

  • Инструкции выдаются станциям бронирования. Насколько я понимаю, у каждой функциональной единицы есть свой набор станций резервирования. Но похоже ли это на очередь (FIFO) инструкций для выполнения этого функционального блока, когда операнды с соответствующей маркировкой доступны на общей шине данных?

  • Поскольку инструкции могут заканчиваться в произвольном порядке (не по порядку), и могут поступать новые инструкции...Есть ли что-то вроде этапа, на котором общая шина данных обновляет файл регистров до поступления дополнительных инструкций? Я слышал, что используется буфер переупорядочивания, который в основном сортирует инструкции по порядку (это должно подразумевать, что инструкции имеют какой-то тег), а затем результаты регистрации фиксируются обратно в файле регистрации.

Что меня смущает, так это реализация переименования регистров и структура станций резервирования.

Спасибо за любую помощь.

5
задан JDS 27 June 2012 в 04:29
поделиться