Архитектура ММХ
Реализация ММХ
Приложения
После Pentium Pro придет Pentium II

В январе к числу "горячих" тем, о которых так любит писать компьютерная пресса, была причислена технология MMX компании Intel. Хотя обсуждение горячих тем, несомненно, процесс весьма "заразный", смею уверить читателя в "неинфекционных" причинах нашего внимания к MMX: она действительно заслуживает подробного рассмотрения в нашей рубрике.

На основании некоторых популярных и чрезмерно восторженных высказываний в ряде западных публикаций, попавших на страницы отечественной прессы, может сложиться впечатление, что технология ММХ непосредственно позволяет разрешить все основные проблемы мультимедиа. Наша цель - рассмотреть, что же такое ММХ на самом деле и в чем ее преимущества, в частности, по отношению к задачам мультимедиа. Вообще считается, что ММХ превратилась в самое значительное расширение архитектуры Intel (IA, Intel Architecture) c момента появления микропроцессоров 80386. И это справедливо, поскольку, грубо говоря, система команд IA за эти годы претерпела весьма незначительные изменения. А с внедрением ММХ сразу добавляется аж 57 новых команд! В то же время "внутренняя реализация" IA подверглась революционным изменениям одновременно с появлением Pentium Pro. По мнению автора, выход на рынок последнего микропроцессора сыграл гораздо более важную, определяющую роль для всего процесса развития микропроцессорных технологий фирмы Intel, и в этом смысле влияние ММХ существенно меньше.

Архитектура ММХ

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

Они действительно являются общими. Введение ММХ, с одной стороны, сохраняет совместимость снизу вверх с уже существующими операционными системами и приложениями, работающими на не имеющих ММХ микропроцессорах Intel. С другой стороны, программное обеспечение, использующее ММХ, будет успешно работать как на Pentium/MMX, так и на Pentium Pro/MMX.

В процессе разработки команд для ММХ специалисты Intel внимательно рассмотрели низкоуровневые особенности мультимедийных приложений. К этим особенностям можно отнести, в частности, применение требующих большого объема вычислений алгоритмов, которые допускают хорошее распараллеливание и частое сочетание умножений с последующим сложением; для них типично использование относительно коротких, многократно повторяющихся циклов; фактическое применение относительно коротких целых чисел (например 8-разрядные пикселы или 16-разрядные аудиоданные).

Проведенный специалистами Intel анализ показал, что было бы эффективно обратиться к хорошо известной в мире суперкомпьютеров архитектуре SIMD (Single Instruction - Multiple Data, "одиночный поток команд - множественный поток данных"), что и было реализовано в ММХ. Позволю себе здесь отвлечься от основной темы и напомнить: в нашей рубрике уже как-то отмечалось, что изучение архитектуры суперкомпьютеров имеет значение не только само по себе, но и как пример того, что может завтра появиться в персональном компьютере на вашем рабочем столе. Мы как в воду глядели - очередное подтверждение этого тезиса не заставило себя долго ждать. Тот, кто сталкивался когда-либо ранее с SIMD, понимает, что типичный пример здесь - работа с векторами. В случае с ММХ, как мы увидим ниже, также можно говорить о некоторых "векторах".

Во избежание путаницы отметим также, что термины "параллельный" и "распараллеливание" в ММХ используются для обозначения параллельности (одновременности) выполнения ряда операций над данными (компонентами вектора, если угодно) в пределах одной команды. В большинстве же случаев в современной литературе, говоря о распараллеливании, имеют в виду одновременное выполнение нескольких команд, например, различными процессорами.

Итак, что же такое технология ММХ? Можно указать на четыре основные ее "составляющие": применение идей SIMD; расширение системы команд; введение в IA четырех новых типов данных; появление 8 новых 64-разрядных ММХ-регистров. Главный признак новых типов данных ММХ - это упакованные в 64-разрядное "квадрослово" целые. Такие 64-разрядные величины могут храниться в ММХ- регистрах. В квадрослово (это - отдельный тип данных) могут помещаться 8 упакованных байтов, 4 упакованных 16-разрядных слова и 2 упакованных 32-разрядных (двойных) слова. Все упакованные величины выступают как целые числа, со знаками или без. Причем во время выполнения ММХ-команды операции над этими упакованными величинами выполняются одновременно, как если бы они были компонентами вектора. В качестве некоего аналога этих типов данных можно указать на упакованное десятичное представление в мэйнфреймах IBM, хорошо знакомое профессионалам, работавшим с ЕС ЭВМ.

Среди 57 добавленных ММХ-команд можно выделить следующие основные группы: арифметические (сложение, вычитание, умножение, арифметический сдвиг, PMADD - умножение со сложением, a=b*c+d - как, скажем, в микропроцессорах MIPS R10000 или HP-PA 80000); сравнение; преобразования к новым типам данных (упаковка/распаковка); логические команды (AND, AND NOT, OR, XOR); команды сдвига; команды пересылки данных, в том числе загрузка в ММХ-регистр и запись в память. Для того чтобы определить, есть ли в микропроцессоре поддержка ММХ, необходимо выдать команду CPUID и посмотреть, установлен ли бит-признак наличия ММХ.

Реализация ММХ

Поскольку в настоящее время выпускаются микропроцессоры Pentium/MMX, а реализация Pentium Pro/MMX только ожидается, мы сконцентрируемся на особенностях ММХ в Pentium, уделяя Pentium Pro/MMX меньше внимания. Основные отличия между Pentium и Pentium Pro в области реализации ММХ относятся, конечно, к структуре конвейеров. Если Pentium - это суперскалярный микропроцессор, способный выполнять до двух целочисленных команд за такт, то Pentium Pro - это микропроцессор с динамическим выполнением команд, в котором "все по-другому". По сравнению с "чистым" Pentium, в Pentium/MMX в целочисленные конвейеры добавляется еще одна стадия. Вообще говоря, при фиксированной тактовой частоте это обычно минус для производительности, поскольку для поддержания высокого темпа вычислений приходится заполнять более длинные конвейеры. Похоже, этот недостаток с лихвой компенсируется другими усовершенствованиями, о которых будет упомянуто ниже.

Прежде всего, в процессорах с ММХ кэши команд и данных первого уровня являются 4-канальными частично ассоциативными с длиной строки 32 байт. Кэш поддерживает механизм обратной записи и использует алгоритм псевдо-LRU для замещения информации. В процессорах Pentium/MMX емкость кэша команд и данных увеличена вдвое - до 16 Кбайт для каждого. При этом кэш данных доступен из обоих целочисленных конвейеров одновременно, если ссылки идут в разные банки кэша (в "чистом" процессоре Pentium этой возможности не было). Вероятно, наряду с увеличением размера кэша это - одна из самых главных причин повышения производительности Pentium/MMX для программ, не использующих ММХ-команды. В Pentium Pro/MMX кэш данных доступен одновременно для команд записи в память и загрузки регистров, если ссылки идут в разные банки кэша. Задержка из-за непопадания в кэш составляет 8 тактов в Pentium/MMX и не менее 10 тактов в Pentium Pro/MMX.

Кроме модернизации кэш-памяти в Pentium/MMX вдвое (с 2 до 4) увеличено число буферов записи, причем они могут использоваться обоими целочисленными конвейерами (в Pentium каждый буфер был приписан к "своему" конвейеру). Наконец, в Pentium/MMX было также усовершенствовано предсказание переходов.

Pentium/MMX содержит 4,5 млн. транзисторов и построен по технологии 0,35 мкм. Он работает с пониженным напряжением, и поэтому его энерговыделение не возросло. В настоящее время поставляются процессоры с тактовой частотой 166 и 200 МГц.

Приложения

Наконец-то мы добрались до главного - до приложений. Какое же отношение ММХ, как расширение IA, имеет к мультимедиа? Как ясно из предыдущего текста, чисто формально - никакого! ММХ - это вовсе не эквивалент какого-нибудь графического акселератора, который ничем, кроме графики, не занимается. ММХ - это достаточно универсальное расширение IA, поднимающее производительность микропроцессоров Intel. Фактически, конечно же, возможности ММХ наиболее эффективно могут быть использованы прежде всего в мультимедийных приложениях. Но сначала следует привести некоторые общие оценки производительности Pentium/MMX. В таблице 1 представлены данные iCOMP - известного внутреннего индекса производительности микропроцессоров Intel.

Таблица 1.
Индекс iCOMP для различных модификаций Pentium.

Процессор
Тактовая частота
iCOMP
Pentium/MMX
200
182
-"-
166
160
Pentium
200
142
-"-
166
127
-"-
150
114
-"-
133
111
-"-
120
100
-"-
100
90
-"-
90
81
-"-
75
67

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

В качестве примера можно привести наложение одного изображения на другое (Intel приводит в пример девушку, объявляющую прогноз погоды на фоне карты). Эту ситуацию можно описать, например, с применением 16-разрядных пикселов. Тогда четыре таких пиксела в ММХ будут обрабатываться параллельно: ММХ-команда сравнения строит маску для данных, позволяющую отделять девушку от зеленого фона, последующие ММХ-команды AND NOT и NOT используют эту маску для определения, какие пикселы следует отобрать, и все завершается командой "или". Без ММХ пикселы обрабатывались бы последовательно по одному, и к тому же понадобились бы команды условного перехода, что "портит" заполнение конвейеров.

Другой пример - скалярное произведение векторов (вспомните суперкомпьютеры). Эта операция часто используется при обработке аудио- и видеосигналов. Применение команды PMADD и упакованных переменных позволяет реализовать эту операцию тринадцатью командами в Pentium/MMX против 40 в Pentium без ММХ. При этом в четыре раза сокращается число потенциально "нехороших" для эффективной работы кэша команд загрузки в регистры, так как загружаются сразу 64-разрядные величины.

Наконец, пример из области трехмерной графики. При манипулировании трехмерными объектами часто применяются матрицы 4х4, которые многократно умножаются на различные четырехмерные векторы, 3 компонента которых есть х-, y- и z-координаты, а четвертая - данные для коррекции перспективы. При использовании PMADD и 16-разрядных целых одна такая команда может работать со всей строкой матрицы, и типовая операция реализуется за 28 команд против 72 в ММХ. Можно показать также, как применение ММХ позволяет ускорить процесс альфа-смешивания при динамическом переходе от одного изображения к другому (вспомните, например, переход от изображения игрока к изображению "Золотого брейна" в популярной телевизионной передаче "Брейн-ринг"!).

Естественно, для более массового использования возможностей ММХ необходимо, чтобы компиляторы научились порождать ММХ-команды в процессе трансляции. С другой стороны, ясно, что ММХ снимает только часть проблем, относящихся к геометрической обработке изображений. Известно, что для построения сложных высококачественных изображений необходимы интенсивные расчеты с плавающей запятой. Программистам рекомендуется избегать чрезмерного перемешивания команд с плавающей запятой с ММХ-командами, чтобы производительность Pentium/MMX не упала. Это связано с тем, что ММХ-регистры являются "алиасами" регистров с плавающей запятой, и переключение с ММХ-"контекста" на работу с плавающей запятой, или обратно, требует до 50 тактов процессора.

Наконец, для высококачественной графики характерно наличие больших массивов данных, которые надо уметь быстро передавать в обрабатывающие устройства. Для решения этой проблемы в Intel ведутся разработки специального высокоскоростного порта AGP (Accelerated Graphics Port). Следует сказать, что поддержка в микропроцессорах Intel специальных команд, эффективных в мультимедийных приложениях, - это часть общей тенденции. Первой здесь была Sun, добавившая в архитектуру UltraSPARC средства VIS (Visual Instruction Set). В этом же направлении движутся и другие фирмы, в том числе AMD, запланировавшая появление ММХ в будущем микропроцессоре К6. А вообще, эта тенденция является прямым отражением всевозрастающего значения мультимедиа в современных информационных технологиях. Intel, несомненно, лидирует в этом процессе, а ее мультимедийная направленность - это "всерьез и надолго".


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

После Pentium Pro придет Pentium II

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

Системы с процессорами Pentium I, которые раньше назывались Klamath, предназначены для рынка бизнес-систем. Они будут выпускаться уже в первой половине этого года. К моделям нового семейства относятся процессоры с тактовой частотой 233 МГц и 266 МГц, то есть более быстрые, чем модели самого высокого класса в семействе Pentium Pro, имеющие тактовую частоту 200 МГц. Однако недавно было объявлено, что в лабораторных условиях процессоры, имеющие ту же архитектуру, показали быстродействие в 451 МГц.

Помимо множества команд MMX, процессоры Pentium II будут иметь новый формат компоновки, который разработчики Intel назвали картриджем Single Edge Contact (с однорядным расположением контактов).

Картридж SEC не будет совместим с существующими платами Pentium Pro, в которых процессор вставляется в 387-контактный разъем Socket 8. Вместо этого картридж присоединяется к 242-контактному разъему Slot 1. Новая конструкция картриджа потребует от производителей систем создания новых материнских плат, но Intel обещает, что картриджи новой формы она будет применять только по прошествии некоторого времени.

Несколько тайваньских производителей уже получили пробные экземпляры нового процессора, но пока ничего не известно об их планах выпуска новых продуктов, поскольку представители Intel попросили партнеров воздержаться от каких-либо объявлений.

- Терхо Уимонен,
Служба новостей IDG, Тайбэй