Конвейеризация команд
Существенное повышение производительности МП 80286 по сравнению с базовой моделью семейства стало возможным благодаря внедрению в архитектуру семейства IA32 конвейерной обработки. Конвейеризация позволяет нескольким внутренним блокам МП работать одновременно (табл. 5.1), совмещая дешифрование команды, операции АЛУ, вычисление эффективного адреса и циклы шины нескольких команд. В составе МП 80286 есть 4 конвейерных устройства:
BU (Bus Unit) - шинный блок (считывание из памяти и портов ввода/вывода);
IU (Instruction Unit) - командный блок (дешифрация команд);
EU (Executive Unit) - исполнительный блок (выполнение команд);
AU (Address Unit) - адресный блок (вычисляет все адреса, формирует физический адрес).
Конвейеризация команд в МП 80286
| Микрооперации |
Циклы шины |
Выборка B
команды U
|
N+1 |
N+2 |
|
|
|
| N-1 |
Дешифр. I
команды U
|
N+1 |
N+2 |
|
|
| N-2 |
N-1 |
Форм. адр. A
операнда U
|
N+1 |
N+2 |
|
|
N-2 |
N-1 |
Выборка B
операнда U
|
N+1 |
N+2 |
|
|
N-2 |
N-1 |
Выполнение E
команды U
|
N+1 |
|
|
|
N-2 |
N-1 |
Запись B
результата U
|
Идея конвейеризации была развита в следующих моделях этого семейства. В МП Intel-486 реализован пятиступенчатый конвейер для обработки команд:
PF (Prefetch) - предвыборка команд;
D1 (Instruction Decode) - декодирование команды;
D2 (Address Generate) - формирование адреса;
EX (Execute) - выполнение команды в АЛУ и доступ к кэш-памяти;
WB (Write Back) - обратная запись.
(рис 5.1) Блок-схема архитектуры МП Pentium
Новая микроархитектура процессоров Pentium (рис. 5.1) и более поздних базируется на идее суперскалярной обработки. Под суперскалярностью подразумевается наличие более одного конвейера для обработки команд (в отличие от скалярной - одноконвейерной архитектуры). В МП Pentium команды распределяются по двум независимым исполнительным конвейерам (U и V). Конвейер U может выполнять любые команды семейства IA-32, включая целочисленные команды и команды с плавающей точкой. Конвейер V предназначен для выполнения простых целочисленных команд и некоторых команд с плавающей точкой. Команды могут направляться в каждое из этих устройств одновременно, причем при выдаче устройством управления в одном такте пары команд более сложная команда поступает в конвейер U, а менее сложная - в конвейер V (табл. 5.2). Однако, такая попарная обработка команд (спаривание) возможна только для ограниченного подмножества целочисленных команд. Команды вещественной арифметики не могут запускаться в паре с целочисленными командами. Одновременная выдача двух команд возможна только при отсутствии зависимостей по регистрам.
Конвейеризация команд в МП Pentium
| Этапы конвейеров |
Циклы шины |
| PF | К1 |
К3 |
К5 |
К7 |
|
|
|
|
| К2 |
К4 |
К6 |
К8 |
|
|
|
|
| D1 | |
К1 |
К3 |
К5 |
К7 |
|
|
|
|
К2 |
К4 |
К6 |
К8 |
|
|
|
| D2 | |
|
К1 |
К3 |
К5 |
К7 |
|
|
|
|
К2 |
К4 |
К6 |
К8 |
|
|
| EX | |
|
|
К1 |
К3 |
К5 |
К7 |
|
|
|
|
К2 |
К4 |
К6 |
К8 |
|
| WB | |
|
|
|
К1 |
К3 |
К5 |
К7 |
|
|
|
|
К2 |
К4 |
К6 |
К8 |
Динамическое (спекулятивное) исполнение
Одной из главных особенностей шестого поколения микропроцессоров архитектуры IA32 является динамическое (спекулятивное) исполнение. Под этим термином подразумевается следующая совокупность возможностей:
Глубокое предсказание ветвлений (с вероятностью >90% можно предсказать 10-15 ближайших переходов).
Анализ потока данных (на 20-30 шагов вперед просмотреть программу и определить зависимость команд по данным или ресурсам).
Опережающее исполнение команд (МП P6 может выполнять команды в порядке, отличном от их следования в программе).
Внутренняя организация МП P6 соответствует архитектуре RISC, поэтому блок выборки команд, считав поток инструкций IA-32 из L1 кэша инструкций, декодирует их в серию микроопераций. Поток микроопераций попадает в буфер переупорядочивания (пул инструкций). В нем содержатся как не выполненные пока микрооперации, так и уже выполненные, но еще не повлиявшие на состояние процессора. Для декодирования инструкций предназначены три параллельных дешифратора: два для простых и один для сложных инструкций. Каждая инструкция IA-32 декодируется в 1-4 микрооперации. Микрооперации выполняются пятью параллельными исполнительными устройствами: два для целочисленной арифметики, два для вещественной арифметики и блок интерфейса с памятью. Таким образом, возможно выполнение до пяти микроопераций за такт.
Блок исполнительных устройств способен выбирать инструкции из пула в любом порядке. При этом благодаря блоку предсказания ветвлений возможно выполнение инструкций, следующих за условными переходами. Блок резервирования постоянно отслеживает в пуле инструкций те микрооперации, которые готовы к исполнению (исходные данные не зависят от результата других невыполненных инструкций) и направляет их на свободное исполнительное устройство соответствующего типа. Одно из целочисленных исполнительных устройств дополнительно занимается проверкой правильности предсказания переходов. При обнаружении неправильно предсказанного перехода все микрооперации, следующие за переходом, удаляются из пула и производится заполнение конвейера команд инструкциями по новому адресу.
Взаимная зависимость команд от значения регистров архитектуры IA-32 может требовать ожидания освобождения регистров. Для решения этой проблемы предназначены 40 внутренних регистров общего назначения, используемых в реальных вычислениях.
Блок удаления отслеживает результат спекулятивно выполненных микроопераций. Если микрооперация более не зависит от других микроопераций, ее результат переносится на состояние процессора, и она удаляется из буфера переупорядочивания. Блок удаления подтверждает выполнение инструкций (до трех микроопераций за такт) в порядке их следования в программе, принимая во внимание прерывания, исключения, точки останова и промахи предсказания переходов.
Описанная схема отображена на рис. 5.2.
(рис 5.2) Блок схема микропроцессора Pentium Pro
Вопросы для самоконтроля
Какие блоки составляют конвейер МП 80286?
Какой блок и почему был добавлен в конвейер МП Intel-486?
Что понимают под суперскалярной архитектурой?
Какие способы обработки данных объединяет термин " динамическое исполнение программы"?
В чем состоит внутренняя RISC-архитектура ЦП Pentium Pro?
В работе какого процессора наблюдается отклонение от принципов фон Неймана? В чем это проявляется?
В чем состоит преимущество использования двойной независимой шины?
Что нового появилось в архитектуре процессора Pentium III по сравнению с Pentium MMX?
Какие особенности имеет Net Burst-архитектура?