2012-06-27 1 views
4

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

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

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

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

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

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

Благодарим за любую помощь.

ответ

4

Алгоритм Tomasulo действительно не привязан к какому-либо конкретному оборудованию, и на самом деле на реальных машинах переименование регистра обычно происходит до того, как инструкции вставляются в очередь команд. Давайте получим пару фундаментальных моментов. Во-первых, регистры, выраженные в вашей программе, являются логическими регистрами. Во-вторых, реальные аппаратные регистры называются физическими регистрами. Алгоритм Томасуло - это просто механизм отображения логических регистров в физические регистры. В реальных машинах обычно есть две таблицы, отображающие логические регистры для физических регистров. Один на этапе переименования и один на этапе фиксации. Там также должно быть больше физических регистров, чем логических. Он работает, по существу, таким образом:

  1. Для каждого логического входа найдите таблицу сопоставления этапа переименования, чтобы узнать, какой физический регистр в настоящее время хранит это значение логического регистра.
  2. Для каждого логического выхода найдите неиспользуемый физический регистр и сопоставьте его с ним. Обновите таблицу отображения сцены переименования. Если физический регистр недоступен, подождите, пока он станет доступным.
  3. На этапе фиксации, когда команда совершена, перепишите старые логические в физические отображения логических выходов команды с новыми сопоставлениями. Свободные физические регистры, которые были частью старых сопоставлений.
  4. Если есть неправильное предсказание (или любой вид сквоша в конвейере), таблица на этапе фиксации перезаписывает таблицу на этапе переименования, и все в промежуточном конвейере сдувается.

Часть о станциях бронирования - это действительно конкретная реализация нестандартного трубопровода и в основном поставляется с физическим регистром. Есть много машин, которые на самом деле не имеют понятия станции бронирования.

Книги Хеннесси и Паттерсона по компьютерной архитектуре - это стандартный учебник по подобным материалам. Я попытался объяснить это как можно проще, но есть буквально тысячи предложений по оптимизации этого материала.

+1

спасибо, я на самом деле читал эту книгу сейчас и медленно понимать, по крайней мере один основной реализации. – JDS

0
  1. Алгоритм Tomasulo не имеет ничего общего с буфером переупорядочения. Цель алгоритма Tomasulo заключается в том, чтобы включить внеуровневое выполнение, в то время как мотивация буфера переупорядочения заключается в реализации точного прерывания.

  2. Общая схема , переименованная в, предоставляет больше физических регистров, чем потребности ISA. В этом случае перед подачей команды в очередь команд имя ее архитектурного регистра (например, r5) было изменено на физическое (например, p19). Однако алгоритм Tomasulo использует другой подход, где регистр инструкции фактически «переименован» в номер части (часть может быть одним слотом/записью в резервной станции или в любом регистре).

Вы можете более подробно в этом слайде:

http://www.slideshare.net/onesuper/understanding-tomasolu-algorithm