- •Суперскалярный процессор
- •Типы суперскалярных процессоров
- •Статический суперскалярный процессор
- •Стадия планирования и группировки инструкций.
- •Достоинства и недостатки
- •Модели статический суперскалярных процессоров.
- •Динамический суперскалярный процессор.
- •Что быстрее динамического суперскалярного процессора?
- •Спекулятивный суперскалярный процессор. (ССП)
- •Этапы исполнения инструкции
- •Стадии записи результата и завершения
- •Изменения в аппаратной схеме
- •Схема ССП
- •Описание работы схемы. Этап планирования.
- •Описание работы схемы.
- •Описание работы схемы. Этап завершения.
- •Такт 0
- •Такт 1
- •Такт 2
- •Такт 3
- •Такт 4
- •Такт 5
- •Такт 6
- •Такт 7
- •Такт 8
- •Такт 9
- •Такт 10
- •Такт 11
- •Такт 17
- •Такт 18
- •Такт 19
- •Такт 20
- •Такт 21
- •Такт 22
- •Такт 23
- •Такт 24
- •Такт 59
- •Такт 60
- •Такт 61
- •Что произойдет если будет сгенерировано исключение?
- •Что обеспечивает выполнение критериев корректного исполнения программы?
- •Ограничения спекуляции.
- •Ограничения планирования инструкций условного перехода.
- •Альтернативный подход к ССП Переименование регистров.
- •Особенности переименования регистров.
Стадии записи результата и завершения
•На стадии записи результата результат работы инструкции помещается в промежуточное хранилище, а не в основной регистровый файл.
•На стадии завершения производиться проверка корректности исполнения инструкции, генерируются исключения, происходит запись результатов из временного хранилища в основной регистровый файл.
Изменения в аппаратной схеме
•Добавлен: буфер упорядочивания (reorder buffer)
–Используется для:
•Хранения результатов работы инструкций между стадией записи результата и стадией завершения.
•Поддержание программного порядка инструкция на стадии завершения.
–Элемент БУ содержат:
•Выполняемую инструкцию: арифметическая, загрузка, сохранение, условный переход.
•Адрес результата инструкции
•Поля для временного хранения результата
инструкции.
•Удален: буфер сохранения.
Схема ССП
Описание работы схемы. Этап планирования.
•Планирование инструкций осуществляется с вершины очереди планирования.
•Для выполнения планирования должна быть доступна СР на требуемом ФУ и ячейка на БУ, если хотя бы один из ресурсов не доступен, то инструкция ожидает в очереди.
•Выборка операндов состоит из трех стадий:
–Проверяются есть ли данные в регистровом файле, если есть переписываются в СР, если нет, то
–Проверяются есть ли данные в БУ, если есть переписываются в СР, если нет, то
–В СР записывается номер ячейки БУ которая содержит инструкцию, которая вычислит этот операнд.
•В файл переименования для результирующего регистра инструкции помещается номер ячейки БУ, которая ее содержит.
Описание работы схемы.
Этап исполнения и записи результат.
•Инструкции запускаются на исполнении по мере готовности их операндов и доступности ФУ.
•По общей шине передается результат инструкции и номер ячейки БУ, которая ее содержит.
•Запись результата производится одновременно во все ожидающие СР и БУ.
•Инструкция загрузки выполняется в две стадии:
–Вычисление адреса.
–Чтение из памяти. Запускается если нет конфликтов с предыдущими инструкциями загрузки и сохранения.
•Инструкция сохранения на этапе исполнения
Описание работы схемы. Этап завершения.
•Инструкция после вычисления результата ожидает в БУ своего завершения.
•Завершаются инструкции, которые находятся на вершину БУ. БУ поддерживает поведение очереди FIFO.
•На этапе завершения:
–Для арифметических инструкции и инструкции загрузки проверяется наличия исключений и если исключений нет, то результат записывается регистровый файл.
–Для инструкции сохранения проверяется наличия исключений и если исключений нет, то результат записывается в память.
–Для инструкции условного перехода проверяется правильно она была предсказана или нет, если да, то инструкция удаляется из БУ, если нет, происходит сброс процессора: очищаются все стадии, на планирование отправляется первая инструкция из правельной ветви.
1.L.D
F6,34(R2)
2.L.D
F2,45(R3)
3.MUL.D
F0,F2,F4
4.SUB.D
F8,F2,F6
5.DIV.D
F10,F0,F6
6.ADD.D
F6,F8,F2
Пример
Допущения
1.Латентность загрузки/сохранения : 2
2.Латентность сложения/вычитания : 2
3.Латентность умножения : 10
4.Латентность деления: 40
5.СР для загрузки/сохранения: 3
6.СР для простых арифм. орпер. : 2
7.СР для сложных арифм. орпер. : 1
8.Reorder Buffer: 3
9.Plan: 2
10.Retain: 2
Такт 0
Instruction status |
|
|
Execution |
Write |
|
|
|
||
Instruction |
j |
k |
Issue complete |
Result Commit |
Load |
Busy Address |
|||
LD |
F6 |
34+ |
R2 |
|
|
|
|
No |
|
|
|
|
|
1 |
|||||
LD |
F2 |
45+ |
R3 |
|
|
|
|
Load |
No |
|
|
|
|
2 |
|||||
MULTD |
F0 |
F2 |
F4 |
|
|
|
|
Load |
No |
|
|
|
|
3 |
|||||
SUBD |
F8 |
F6 |
F2 |
|
|
|
|
|
|
DIVD |
F10 |
F0 |
F6 |
|
|
|
|
|
|
ADDD |
F6 |
F8 |
F2 |
|
|
|
|
RS for |
|
Reservation |
|
|
|
S1 |
S2 |
RS for j |
|
||
Stations |
|
|
|
|
k |
|
|||
|
|
Name Busy |
Op |
Vj |
Vk |
Qj |
Qk |
|
|
|
|
Add1 |
No |
|
|
|
|
|
|
|
|
Add2 |
No |
|
|
|
|
|
|
|
|
Mult1 |
No |
|
|
|
|
|
|
|
|
|
|
Reorder Buffer |
|
|
|
|
|
Clock |
|
|
|
Instr. |
Dst. |
Value |
State |
|
|
Такт 1
Instruction status |
|
|
Execution |
Write |
|
|
|
|
||
Instruction |
j |
k |
Issue complete |
Result Commit |
Load |
Busy |
Address |
|||
LD |
F6 |
34+ |
R2 |
|
|
|
|
Yes |
|
|
1 |
|
|
|
1 |
34(R2) |
|||||
LD |
F2 |
45+ |
R3 |
|
|
|
|
Load |
Yes |
|
1 |
|
|
|
2 |
45(R3) |
|||||
MULTD |
F0 |
F2 |
F4 |
|
|
|
|
Load |
No |
|
|
|
|
|
3 |
|
|||||
SUBD |
F8 |
F6 |
F2 |
|
|
|
|
|
|
|
DIVD |
F10 |
F0 |
F6 |
|
|
|
|
|
|
|
ADDD |
F6 |
F8 |
F2 |
|
|
|
|
RS for |
|
|
Reservation |
|
|
|
S1 |
S2 |
RS for j |
|
|
||
Stations |
|
|
|
|
k |
|
|
|||
|
|
Name Busy |
Op |
Vj |
Vk |
Qj |
Qk |
|
|
|
|
|
Add1 |
No |
|
|
|
|
|
|
|
|
|
Add2 |
No |
|
|
|
|
|
|
|
|
|
Mult1 |
No |
|
|
|
|
|
|
|
|
|
|
|
Reorder Buffer |
|
|
|
|
|
|
Clock |
|
|
|
Instr. |
Dst. |
Value |
State |
|
|
|
Такт 2
Instruction status |
|
|
Execution |
Write |
|
|
|
|
||
Instruction |
j |
k |
Issue complete |
Result Commit |
Load |
Busy |
Address |
|||
LD |
F6 |
34+ |
R2 |
|
|
|
|
Yes |
|
|
1 |
2-- |
|
|
1 |
34(R2) |
|||||
LD |
F2 |
45+ |
R3 |
|
|
|
|
Load |
Yes |
|
1 |
|
|
|
2 |
45(R3) |
|||||
MULTD |
F0 |
F2 |
F4 |
|
|
|
|
Load |
No |
|
2 |
|
|
|
3 |
|
|||||
SUBD |
F8 |
F6 |
F2 |
|
|
|
|
|
|
|
DIVD |
F10 |
F0 |
F6 |
|
|
|
|
|
|
|
ADDD |
F6 |
F8 |
F2 |
|
|
|
|
RS for |
|
|
Reservation |
|
|
|
S1 |
S2 |
RS for j |
|
|
||
Stations |
|
|
|
|
k |
|
|
|||
|
|
Name Busy |
Op |
Vj |
Vk |
Qj |
Qk |
|
|
|
|
|
Add1 |
No |
|
|
|
|
|
|
|
|
|
Add2 |
No |
|
|
|
|
|
|
|
|
|
Mult1 |
Yes |
MULT |
|
#F4 |
Load2 |
|
|
|
|
|
|
|
Reorder Buffer |
|
|
|
|
|
|
Clock |
|
|
|
Instr. |
Dst. |
Value |
State |
|
|
|