fbba21eb

Расширение устройства ПТ средствами выполнения по предположению



Рисунок 6.19. Расширение устройства ПТ средствами выполнения по предположению


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

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

Рассмотрим следующий пример:

LD F6, 34(R2)

LD F2, 45(R3)

MULTD F0, F2, F4

SUBD F8, F6, F2

DIVD F10, F0, F6

ADDD F6, F8, F2

Представим, что в приведенном выше примере команда условного перехода BNEZ в первый раз не выполняется (Рисунок 6.20). Тогда команды, предшествующие команде условного перехода, будут просто фиксироваться по мере достижения каждой из них головы буфера переупорядочивания. Когда головы этого буфера достигает команда условного перехода, содержимое буфера просто гасится, и машина начинает выборку команд из другой ветви программы.



Станции резервирования
Имя Занятость Op Vj Vk Qj Qk Назначение
Add1 Нет
Add2 Нет
Add3 Нет
Mult1 Нет MULT Mem[45+Regs[R3]] Regs[F4] #3
Mult2 Да DIV Mem[34+Regs[R2]] #3 #5
Буфер переупорядочивания
Номер Занятость Команда Состояние Место наз-
начения
Значение
1 Нет LD F6,34(R2) Зафиксирована F6 Mem[34+Regs[R2]]
2 Нет LD F2,45(R3) Зафиксирована F2 Mem[45+Regs[R3]]
3 Нет MULTD F0,F2,F4 Запись
результата
F0 #2 x Regs[R4]]
4 Да SUBD F8,F6,F2 Запись
результата
F8 #1 - #2
5 Да DIVD F10,F0,F6 Выполнение F10
6 Да ADD F6,F8,F2 Запись
результата
F6 #4 + #2
Состояние регистров
Поле F0 F2 F4 F6 F8 F10 F12 . . . F30
Порядковый # 3 6 4 5
Знятость Да Нет Нет Да Да Да Нет . . . Нет



Содержание раздела