Буфер ROB можно считать аналогом Instruction Window (окно команд). В каждом регистре буфера хранится следующая информация о микрокоманде:
1. состояние микрокоманды;
2. адрес микрокоманды программы, «породившей» данную микрокоманду;
3. собственно код микрокоманды (определяет действия над операндами);
4. операнды, используемые микрокомандой (если операнды поставляются в микрокоманду другими микрокомандами, то в данной микрокоманде лишь резервируется место для них и сбрасывается соответствующий флаг готовности операнда, тем самым порядок выполнения микрокоманд задается не только и не столько порядком их следования по коду программы, сколько готовность операндов для них);
5. результат (пересылается в ROB только после завершения исполнения микрокоманды).
Микрокоманды, находящиеся в ROB, могут идентифицироваться одним из семи возможных состояний:
1. |
RS – |
Ready for Scheduling; |
2. |
SD – |
Scheduling; |
3. |
DP – |
Dispatching; |
4. |
EX – |
Executing; |
5. |
WB – |
Writing Back to ROB; |
6. |
RR – |
Ready to Retire; |
7. |
RT – |
Retining. |
Микрокоманды поступают в ROB в том порядке, который задается исходной программой, но на исполнение они могут направляться в свободном порядке. Критерием принятия микрокоманды на исполнение является готовность данных (операндов) и доступность необходимых ресурсов (исполнительных (обрабатывающих) блоков).
Определением порядка запуска команд на исполнение занимается блок RS (ReservationStation – блок распределения). RS выбирает микрокоманды, готовые к исполнению, из буфера ROB, распределяет их между исполнительными устройствами и записывает результаты исполнения обратно в регистры ROB.
За один такт RS может обеспечить анализ и распределение до пяти микрокоманд. Число 5 определяется наличием пяти портов, которые связывают RS с исполнительными блоками.
В Pentium Pro используется следующее распределение исполнительных блоков (устройств) по портам:
• порты 0 и 1 используются для микрокоманд обработки данных и обеспечивают связь с блоками ALU и FPU;
• порты 2, 3 и 4 обеспечивают обращение к памяти.
После завершения микрокоманды соответствующий элемент ROB обновляется, а освободившийся исполнительный блок становится доступным для обработки ожидающих микрокоманд.
Заключительные две фазы конвейера осуществляют фиксацию результатов выполнения микрокоманд в нужном порядке. Для этой цели осуществляется просмотр буфера ROB (его хвостовой части) на предмет поиска микрокоманд, завершивших исполнение и готовых к записи результата в память и последующему удалению из ROB.
В связи с тем, что ROB является буфером FIFO, то и удаляются микрокоманды всегда в том порядке, в каком они поступали в буфер и, следовательно, в каком они расположены в программе.
* пересылка результата из регистра с плавающей точкой в память с преобразованием в десятичную форму
* По мнению Павла Семеновича то, что называется RISC-ядром – это обычный микрокомандный уровень, без которого не обойтись в CISC-процессорах при реализации сколь-нибудь сложных машинных команд.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.