ТЕХНИЧЕСКИЙ ОБЗОР
57 инструкций набора MMX помогут преодолеть барьеры быстродействия
Несмотря на постоянный рост тактовой частоты, процессоры корпорации Intel страдали от низкой производительности в мультимедиа-приложениях. Чтобы преодолеть этот барьер, Intel создала MMX - набор из 57 новых инструкций для систем X86, ориентированный на ускорение вычислений в мультимедиа-операциях. Это самое большое усовершенствование набора команд X86 после дебюта процессора 386 в октябре 1985 г.
В прошлом разработчики ПО в основном игнорировали новые инструкции, которые сопровождали появление таких процессоров, как Pentium и 486. Во многом это объяснялось тем, что их использование было связано с трудностями и, за исключением многопроцессорных систем, мало что давало разработчику. Однако, поскольку все больше и больше приложений используют типы данных мультимедиа, способность приложения превзойти конкурентов по производительности становится важным фактором, влияющим на продажи.
MMX - это не первый набор команд, предназначенный для мультимедиа. В 1996 г. фирма Sun Microsystems представила рабочую станцию, основанную на процессоре UltraSPARC с поддержкой набора Visual Instruction Set, а компания Hewlett-Packard производит рабочие станции начального уровня, которые могут "на лету" декодировать полнокадровое видео MPEG-1 с помощью разработанного HP набора команд MAX-1.
Системы, использующие версию Pentium с поддержкой MMX (кодовое название P55C), должны появиться в I квартале, а поддерживающая его версия Pentium Pro (кодовое название Klamath) - в первой половине 1997 г. Как ожидается, несколько позже за ними последуют продукты фирмы Advanced Micro Devices, заключившей с Intel лицензионное соглашение. Конкурирующий с Klamath процессор M2 корпорации Cyrix, который тоже должен появиться в первом полугодии 1997 г., также будет включать мультимедиа-расширения, совместимые с MMX на уровне двоичного кода.
Ожидается, что MMX-версии Pentium быстро заменят существующие модели, как это произошло с другими процессорами Intel. Компания пока не сообщила цены новых моделей.
Хотя добавление этих новых инструкций может привести к существенным улучшениям по сравнению с сегодняшними процессорами Pentium и Pentium Pro, архитектура MMX спроектирована так, чтобы не затрагивать существующие операционные системы или ПО. Вместо этого будущие приложения будут обнаруживать присутствие процессора с поддержкой MMX, проверяя значение CPUID, а затем обращаться к драйверу устройства или модели API, позволяющим использовать эту технологию.
Чтобы определить новый набор команд и сделать их полезными для пользователей, Intel сотрудничала с разработчиками ПО - сначала для того, чтобы определить проблемы, ограничивающие производительность существующих мультимедиа-приложений, а затем для того, чтобы убедить разработчиков писать программы, использующие преимущества нового набора команд.
Уговорить разработчиков оптимизировать ПО для нового набора команд - более сложная задача, потому что для разработчиков это означает дополнительные затраты. Тем не менее Intel уже заручилась поддержкой нескольких разработчиков, из которых особенно заслуживают упоминания корпорация Microsoft и фирма Adobe Systems. Программный интерфейс Microsoft Direct-3D уже поддерживает MMX.
Что было сделано
Исследование современных мультимедиа-приложений выявило, что они обладают такими общими характеристиками, как небольшие типы данных, короткие, часто повторяющиеся циклы, частые операции умножения и сложения, алгоритмы с интенсивными вычислениями и операции с высокой степенью параллельности. Чтобы оптимизировать архитектуру для этих типов данных, Intel создала новые инструкции, восемь 64-разрядных регистров и четыре новых типа данных, а также применила технологию выполнения инструкций SIMD (Single Instruction, Multiple Data - одна инструкция, несколько наборов данных).
SIMD является стержнем новой архитектуры, обеспечивая средства оптимизации для параллельных операций в мультимедиа-приложениях. Технология SIMD позволяет каждой из новых инструкций одновременно работать с несколькими значениями, что особенно ценно для таких работающих в реальном времени приложений, как воспроизведение видео.
Четыре новых типа данных - это упакованный байт (packed byte), упакованное слово (packed word), упакованное двойное слово (packed doubleword) и четверное слово (quadword). Каждый из них представляет собой упакованное целое число с фиксированной точкой, причем несколько целых слов упаковываются в восемь 64-разрядных MMX-регистров. Упакованный байт содержит восемь байт, упакованное слово - четыре 16-разрядных слова, упакованное двойное слово - два 32-разрядных слова, и все они упаковываются в одно 64-разрядное значение. Помещая это значение в один регистр, MMX может одновременно изменять восемь байт данных.
Несмотря на то, что в MMX-процессоре можно адресовать восемь новых имен 64-разрядных регистров, новые физические регистры добавлены не были. Вместо этого MMX-регистры отображаются на восемь 80-разрядных регистров, которые уже входят в состав устройства для вычислений с плавающей точкой (FPU) процессора. Хотя очевидным недостатком такого подхода является потеря восьми регистров FPU во время выполнения MMX-инструкций, Intel благодаря этому не создала нового состояния и тем самым избавила разработчиков ПО от необходимости переписывать операционные системы и приложения для того, чтобы они работали на MMX-процессорах.
Однако приложения не могут одновременно использовать MMX и FPU. Поскольку большинство приложений никогда не использует FPU, это не должно вызвать больших проблем. В ситуациях, требующих как FPU, так и MMX (например, отрисовка трехмерных сцен), разработчикам нужно будет заботиться о максимальной производительности кода. С помощью MMX процедура могла бы помечать все регистры FPU как занятые, так что любые FPU-инструкции будут вызывать исключение. Команду EMMS можно использовать для восстановления регистров, чтобы инструкция FPU могла завершиться.
Для повышения производительности Pentium, Pentium Pro и конкурирующие с ними процессоры широко применяют прогнозирование ветвления (branch prediction). Однако, хотя это прогнозирование и может сильно увеличить производительность, оно может вызывать и большие потери, особенно на Klamath, которому на восстановление после неверно предсказанного ветвления требуется в среднем 15 тактовых циклов.
Майкл Кейтон
Со старшим аналитиком Майклом Кейтоном можно связаться по адресу: michael_caton@zd.com.
Intel оптимизирует инструкции MMX для небольших типов данных
+------------------------------+---------------+----------+---------------------------------------------------------------------------+
|Категория |Мнемоника* | Число |Описание |
| | | кодов | |
| | | операции | |
+------------------------------+---------------+----------+---------------------------------------------------------------------------+
|Арифметика |PADD [B,W,D] | 3 |Сложение с переносом (wrap-around) на [байт, слово, двойное слово] |
| |PADDS [B,W] | 2 |Сложение знаковое с переполнением [байт, слово] |
| |PADDUS [B,W] | 2 |Сложение беззнаковое с переполнением [байт, слово] |
| |PSUB [B,W,D] | 3 |Вычитание с переносом [байт, слово, двойное слово] |
| |PSUBS [B,W] | 2 |Вычитание знаковое с переполнением [байт, слово] |
| |PSUBUS [B,W] | 2 |Вычитание беззнаковое с переполнением [байт, слово] |
| |PMULHW | 1 |Упакованное умножение слов с выбором старших битов |
| |PMULLW | 1 |Упакованное умножение слов с выбором младших битов |
| |PMADDWD | 1 |Упакованное умножение слов со сложением полученных пар |
+------------------------------+---------------+----------+---------------------------------------------------------------------------+
|Сравнение |PCMPEQ [B,W,D] | 3 |Упакованное сравнение [байт, слово, двойное слово] по отношению єравноЄ |
| |PCMPGT [B,W,D] | 3 |Упакованное сравнение [байт, слово, двойное слово] по отношению єбольшеЄ |
+------------------------------+---------------+----------+---------------------------------------------------------------------------+
|Передача данных |MOV [D,Q] | 4 |Переместить [двойное слово, четверное слово] в MMX-регистр или из |
| | | |MMX-регистра |
+------------------------------+---------------+----------+---------------------------------------------------------------------------+
|Управление состоянием FPU и |EMMS | 1 |Очистить состояние MMX |
|MMX | | | |
+------------------------------+---------------+----------+---------------------------------------------------------------------------+
* Если инструкция поддерживает несколько типов данных - байт (B), слово (W), двойное слово (D) или четверное слово (Q), эти типы приводятся в скобках.
Источник: Intel.
Художественный талант
Архитектура MMX особенно хорошо подходит для графических данных, которые обычно определяются с помощью 8-разрядных величин.