Конвейеризация. Новые возможности микропроцессоров IA-32
Конвейеризация команд
Существенное повышение производительности МП 80286 по сравнению с базовой моделью семейства стало возможным благодаря внедрению в архитектуру семейства IA32 конвейерной обработки. Конвейеризация позволяет нескольким внутренним блокам МП работать одновременно (табл. 5.1), совмещая дешифрование команды, операции АЛУ, вычисление эффективного адреса и циклы шины нескольких команд. В составе МП 80286 есть 4 конвейерных устройства:
- BU (Bus Unit) - шинный блок (считывание из памяти и портов ввода/вывода);
- IU (Instruction Unit) - командный блок (дешифрация команд);
- EU (Executive Unit) - исполнительный блок (выполнение команд);
- AU (Address Unit) - адресный блок (вычисляет все адреса, формирует физический адрес).
Идея конвейеризации была развита в следующих моделях этого семейства. В МП Intel-486 реализован пятиступенчатый конвейер для обработки команд:
- PF (Prefetch) - предвыборка команд;
- D1 (Instruction Decode) - декодирование команды;
- D2 (Address Generate) - формирование адреса;
- EX (Execute) - выполнение команды в АЛУ и доступ к кэш-памяти;
- WB (Write Back) - обратная запись.
Новая микроархитектура процессоров Pentium (рис. 5.1) и более поздних базируется на идее суперскалярной обработки. Под суперскалярностью подразумевается наличие более одного конвейера для обработки команд (в отличие от скалярной - одноконвейерной архитектуры). В МП Pentium команды распределяются по двум независимым исполнительным конвейерам (U и V). Конвейер U может выполнять любые команды семейства IA-32, включая целочисленные команды и команды с плавающей точкой. Конвейер V предназначен для выполнения простых целочисленных команд и некоторых команд с плавающей точкой. Команды могут направляться в каждое из этих устройств одновременно, причем при выдаче устройством управления в одном такте пары команд более сложная команда поступает в конвейер U, а менее сложная - в конвейер V (табл. 5.2). Однако, такая попарная обработка команд (спаривание) возможна только для ограниченного подмножества целочисленных команд. Команды вещественной арифметики не могут запускаться в паре с целочисленными командами. Одновременная выдача двух команд возможна только при отсутствии зависимостей по регистрам.