производительность в Celeron и других процессорах с архитектурой P6? Для
этого в них используется суперскалярная обработка, то есть обработка с
многопотоковым конвейером команд, когда процессор может выполнять
больше 1 команды за такт (CPI < 1, или – IPC > 1).
Фактически в суперскалярном процессоре несколько потоков проходят
через несколько исполнительных устройств, а остальные ступени так или
иначе работают с одним потоком. Для согласования разных скоростей
потоков декодирования, выборки, трансляции в RISC - подобные инструкции,
переупорядочивания и потоков в исполнительных устройствах применяют
различные очереди инструкций (буферы FIFO), которые есть у каждого из
исполнительных устройств.
Необходимо отметить, что в суперскалярных процессорах происходит
сложное и нетривиальное преобразование последовательного потока команд
исходной программы в параллельный поток триад (операция + операнды +
назначение результата), параллельно продвигающихся по очередям команд в
исполнительные устройства. Процессор ограничен в возможностях такого
преобразования, а также в возможностях спекулятивного исполнения
(подготовки загрузки альтернативных ветвей ветвления) и прогнозирования
ветвлений размером т.н. «окна исполнения», то есть той частью
программного кода, который процессор «видит» в процессе выполнения в
данном такте. Все это ограничивает возможности распараллеливания потоков
команд до величин порядка 6-8 (что тоже в принципе неплохо).
В процессорах с длинным командным словом (Very Long Instruction
Word) используется альтернативный суперскалярной обработке принцип
распараллеливания последовательного алгоритма. В основном вся тяжесть
планирования загрузки большого числа исполнительных устройств в таком
процессоре (а у него блочное операционное устройство) ложится на
программиста, или – на оптимизирующий компилятор. В процессор
поступают уже сформированные триады для всех исполнительных устройств,
так что ему только остается выполнять эти длинные команды. В результате он
не ограничен размером окна исполнения, так как и программист, и
компилятор видят весь код программы, и могут извлечь из него
максимальный параллелизм.
Такой подход позволяет достичь принципиально более высокой
производительности (например, тестирование процессоров Itanium с
архитектурой IA-64, использующей принципы VLIW, указывает на 10-
кратное ускорение при выполнении ряда вычислений), но такие процессоры
обладают и рядом недостатков:
- в целом менее эффективная загрузка исполнительных устройств, так
как не всегда можно сформировать достаточное количество команд
для параллельного исполнения;