Микропроцессоры Intel Pentium III

Хотя суперкомпьютеры, работающие с векторами, появились еще в 1976 году, поддержку векторных операций в вычислительных архитектурах тогда нельзя было считать модой. Мода - это то, что "носят" миллионы. Поэтому для компьютерных систем моду могут задавать только ПК.

С анонсом расширения системы команд ММХ процессоры Intel и персональные компьютеры на их основе стали поддерживать векторные операции над целочисленными аргументами для ускорения обработки мультимедийной и графической информации.

Потребности в векторной обработке, в частности, для задач трехмерной графики и мультимедиа, не ограничиваются работой с целочисленными операндами. Применение векторов, то есть архитектуры SIMD (Single Instruction - Multiple Data, один поток команд - множество потоков данных), для операций с плавающей запятой было не так давно осуществлено в микропроцессорах AMD K6-2 в рамках архитектуры 3DNow!. Аналогичное расширение системы команд корпорацией Intel, известное ранее под кодовым названием KNI (Katmai New Instractions), было реализовано в микропроцессорах семейства Pentium III.

Вслед за анонсом Pentium III в феврале этого года, в конце апреля Intel представила новую информацию об индексах производительности этих микропроцессоров. За время, прошедшее после анонса, в прессе появилось много публикаций, посвященных этой теме. ПК с Pentium III уже активно предлагаются отечественным покупателям. Теперь, когда Intel окончательно взяла на вооружение векторизацию работы и с целочисленными операндами, и с числами с плавающей запятой, можно говорить об окончательной победе "векторной моды".

Рассмотрим расширение KNI, получившее официальное название Streaming SIMD Extensions, как и сами новые микропроцессоры Pentium III и Pentium III Xeon.

Изменения в архитектуре Intel x86

C одной стороны, ничего кардинально нового по сравнению с другими микропроцессорами в KNI нет. Основные функциональные расширения связаны с поддержкой 70 новых команд SIMD-архитектуры, в том числе с введением команд предварительной выборки в кэш (prefetch). C другой стороны, конкретная реализация KNI в Pentium III может дать Intel преимущества перед AMD K6-2/3.

Набор SIMD-команд в Pentium III выглядит более богатым, чем в 3DNow!. В архитектуре Pentium III появилось восемь новых 128-разрядных регистров. Их введение дает Intel преимущества перед AMD K6-2/3 и позволяет одновременно выполнять команды, работающие с целочисленными операндами, операндами с плавающей запятой или MMX-операндами. Новые SIMD-команды включают как операции с плавающей запятой, так и новые операции над короткими целыми числами, то есть прямое расширение ММХ-команд.

В наборе SIMD-команд с плавающей запятой в Pentium III представлены, в частности, умножение, деление, извлечение квадратного корня, преобразования к целым числам и обратно, и т.п. В 128-разрядных регистрах Pentium III помещается по четыре компонента вектора с плавающей запятой.

Дополнительные операции с SIMD-типами данных включают, в частности, доступ к отдельным элементам векторов и их переупорядочение. В качестве примера приложения, где эффективно применение четырехкомпонентных векторов, Intel приводит трехмерную анимацию: информация о цвете и геометрические данные удобно представить именно в виде четырехкомпонентных массивов.

Что касается пиковой производительности Pentium III на операциях с плавающей запятой одинарной точности, то этот процессор выдает один векторный результат за такт, соответственно производительность вчетверо больше тактовой частоты. В AMD K6-2 векторы являются двухкомпонентными, однако там имеется два исполнительных конвейера, и поэтому его пиковая производительность также в четыре раза больше тактовой частоты.

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

Обратимся теперь к командам предварительной выборки в кэш. Подобные команды давно имеются в RISC-процессорах, в том числе в MIPS R10000. Появились они и в AMD K6-2. В Pentium III предусмотрено несколько вариантов операции prefetch, отличающихся деталями управления поведением кэшей. Кроме того, выборка может осуществляться как в первичный, так и во вторичный кэш. По мнению автора, подобная гибкость выгодно отличает KNI.

Идеи применения предварительной выборки в кэш проистекают из хорошо известной проблемы отставания пропускной способности оперативной памяти от производительности процессора. Когда процессор обращается в кэш, данных там может не оказаться.

Команды типа prefetch как раз и призваны исключить задержки, возникающие при непопадании в кэш и ожидании процессором данных из оперативной памяти. Поскольку кэш является неблокирующимся, можно выполнить команду предварительной загрузки строки кэша, не останавливая работу процессора. Лишь само приложение знает, когда и какие ему понадобятся данные. Явное применение команд предварительной загрузки строки кэша в идеальном случае позволяет добиться того, чтобы данные всегда оказывались в кэше до обращения к ним.

Напомним, что длина строки кэша в Pentium II/III равна 32 байт. Наиболее очевидным применение предварительной выборки выглядит в случае цикла с обработкой элементов массива (A); мы используем "фортраноподобный" синтаксис, поскольку он понятен любому программисту:

prefetch ( A(1) )
DO I=1, N
   prefetch ( A(I+1) )
   обработка A(I)
ENDDO

В этом случае до цикла можно загрузить в кэш первый элемент массива. В цикле перед началом обработки A(I) начинает выбираться следующий элемент массива, который понадобится на следующей итерации цикла, и "на фоне" этой выборки выполняется обработка A(I). В случае, если массив состоит из элементов длиной 32 символа каждый, а его обработка занимает время, достаточное для выполнения команды prefetch, все непопадания в кэш элементов A будут упразднены.

Еще одна новая реализованная в Pentium III команда KNI позволяет однозначно идентифицировать процессор, на котором она выполнена. Напомним, что в IA-32 уже есть команда CPUID, но она выдает тип процессора, а не его, так сказать, "заводской номер". Введение однозначной идентификации процессора наделало много шума, так как пользователи на Западе стали опасаться за свою privacy. С другой стороны, ПК можно однозначно определить и по его Ethernet-адресу (этот способ, конечно, несколько ограничен, ведь не все в мире подсоединено к Ethernet). Как бы то ни было, производители BIOS решили обеспечить возможность включать/отключать выдачу номера процессора на уровне BIOS Setup, хотя, по всей видимости, в программе эту установку можно обойти.

Конкретные реализации и производительность

Для использования KNI нужны компиляторы, способные порождать новые команды, и/или готовые библиотеки модулей. Intel предлагает ассемблер в составе пакета VTune 4.0. Там содержатся, в частности, библиотеки для научно-инженерных применений, а также библиотеки поддержки графических интерфейсов DirectX 6.1, OpenGL и Heidi. Процессоры Pentium III построены, как и Pentium II, по 0,25-микронной технологии и содержат 9,5 млн. транзисторов против 7,5 млн. транзисторов в Pentium II. Тактовые частоты Pentium III/Pentium III Xeon составляют на сегодня 450/500 МГц. Процессоры используют те же разъемы, что и их аналоги из семейства Pentium II, что в принципе допускает применение Pentium III на материнских платах, поддерживающих Pentium II.

Данные о производительности Pentium III на тестах SPEC95 представлены в таблице. Сравнение при одинаковых тактовых частотах показывает, что производительность практически не изменилась. Это объясняется тем, что использованный при тестировании компилятор не порождает команды предварительной выборки в кэш.

Более высокая производительность возможна на приложениях, активно использующих SIMD-команды. Intel cообщает, что в Pentium III/500 МГц по сравнению с Pentium II/450 МГц некоторые операции Adobe Photoshop 5.0 ускоряются в 1,87 раза, а рендеринг в AutoCAD 2000 - в 1,37 раза. Что касается серверных приложений, то Pentium III Xeon, как и Pentium II Xeon, показывает отличные результаты, в частности, на тестах TPC-C и TPC-D, при равном числе процессоров, опережая многих конкурентов из лагеря RISC.

По всей вероятности, самая острая конкуренция ожидает Pentium III на рынке настольных ПК. AMD, вслед за К6-2 выпустившая новые процессоры К6-3 с большим интегрированным двухуровневым работающим на частоте процессора кэшем, предлагает к ним еще внешний кэш емкостью свыше 512 Кбайт - то есть как у Xeon, но гораздо более медленный. На традиционных тестах Winstone эти процессоры при равных тактовых частотах очень близки к Pentium III, хотя отстают от последних при скалярных вычислениях с плавающей запятой. AMD обещает в середине года выпустить процессор К7, где будет кардинально увеличена производительность с плавающей запятой, а также расширить векторные команды 3DNow!.

В любом случае, как говорится, цыплят по осени считают. Рынок микропроцессоров меняется очень быстро, и к осени перед нами наверняка предстанет абсолютно новая расстановка сил.


Михаил Кузьминский - старший научный сотрудник Центра компьютерного обеспечения Института химических исследований РАН. С ним можно связаться по телефону (095) 135-6388.

Кто быстрее?

Сравнительные оценки производительности новых микропроцессоров Intel

Микропроцессор Частота, МГц SPECint95 SPECfp95
Pentium II 450 18,5 13,3
Pentium III 450 18,7 13,7
Pentium III 500 20,6 14,7