ТЕХНИЧЕСКИЙ ОБЗОР

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-разрядных величин.

Версия для печати