Технологии MMX : гроссмейстер делает ход конем
Архив
До сих пор программиста, разрабатывающего компьютерную программу, можно было сравнить с шахматистом, у которого в распоряжении 8 пешек, то бишь регистров общего назначения, да пара ладей, символизирующих операции с плавающей точкой. Шахматные знатоки согласятся, что с такой армией уже можно реализовать почти любую стратегическую задачу, однако далеко не всегда это будет делаться эффективно.
Объявление компании Intel о начале массового производства процессоров Pentium c технологией MMX существенно меняет расстановку сил на рынке персональных компьютеров.
Новые команды MMX принципиально отличаются по структуре от уже имеющихся. Некоторые из них настолько необычны, что напрашивается шахматная аналогия в облике новой фигуры - коня, делающего, как известно, замысловатые ходы в виде буквы "Г". Известно, что конь - это весьма грозное оружие в руках опытного шахматиста. Точно так же технология MMX меняет стратегию разработки программного обеспечения. Теперь у профессионального разработчика появилось очень мощное средство, позволяющее выполнять нетрадиционные и сильные ходы, в несколько раз повышающие производительность приложения.
Анатомия MMX
С точки зрения программиста технология MMX представляет собой 57 новых мощных инструкций, предназначенных в первую очередь для ускорения внутрениих ресурсоемких циклов прикладных программ. Обычно эти циклы представляют собой достаточно компактные участки кода, составляющие всего несколько процентов от общего объема программы. В то же время при выполнении задачи они потребляют подавляющую часть ресурсов процессора. Инструкции MMX выполняют одно и то же действие над несколькими элементами данных, используя технологию Single Instruction Multiple Data (SIMD). Одновременно с новыми инструкциями вводятся восемь 64-разрядных регистров. Каждый из регистров может содержать либо одно 64-разрядное слово, либо 2 двойных слова, либо 4 слова, либо 8 байтов. Из сказанного становится понятно, что, например, байтовое сложение можно теперь выполнять пакетами по 8 байтов, что будет примерно в 8 раз быстрее. Но и это еще не все. Среди новых команд имеются такие нестандартные операции, как сложение и вычитание с насыщением, упаковка, распаковка, умножение со сложением, операции сравнения с образованием маски результата. Используя эти возможности, можно достигать еще большего роста производительности.
Рассмотрим пример, аналоги которому можно найте в самых разнообразных приложениях. Допустим, нам необходимо воспроизвести два звуковых эффекта одновременно. Для этого необходимо побайтово сложить оцифрованные значения звука, и если результат "зашкаливает" в ту или иную сторону, то ограничить его по амплитуде.
На языке С фрагмент кода будет выглядеть следующим образом sum = snd1 + snd2;
После компиляции этот участок кода превратится в 7 инструкций процессора x86.
if (sum > 127) sum = 127;
if (sum < -128) sum = -128;
Если же воспользоваться технологией MMX, то весь этот громоздкий код можно заменить одной-единственной инструкцией paddsb mm0,mm1
которая к тому же выполнит эту операцию сразу для пакета из 8 байтов данных. Нетрудно подсчитать, что для данного примера достигается ускорение выполнения примерно в 56 раз!
Другой пример, где инструкции MMX могут дать значительный выигрыш в производительности, - сложение двух изображений с использованием одного из цветов в качестве "прозрачной" маски.
Эта стандартная операция достаточно часто встречается во многих графических приложениях. Голубой цвет фона вокруг космического корабля рассматривается как прозрачный при сложении изображений.
Специальные инструкции сравнения с образованием маски результата позволяют выполнить эту операцию не только пакетами по 8 байтов, но и избежать ветвлений, а значит, и штрафов за их неправильное предсказание. При этом производительность при использовании процессора Pentium с технологией MMX вырастает не менее, чем в два раза.
Искушенный читатель наверняка уже заподозрил неладное. Как существующие приложения и существующая операционная система будут сохранять значения новых 8 регистров MMX, например, при переключении задач, если они ничего об этом не знают? Оказывается, регистры МMX совмещены по расположению с регистрами плавающей точки. Благодаря такому решению регистры MMX полностью вписываются в существующую архитектуру.
Каким образом и как скоро технология MMX повлияет на сложившийся массовый рынок персональных компьютеров? Рассмотрим эту ситуацию с начала с точки зрения оптимиста, а затем скептика.
Радужные перспективы
Компании-разработчики компьютерных игр восприняли технологию MMX с нескрываемым энтузиазмом. Она дает возможность в несколько раз сократить расходы на воспроизведение сложных звуковых эффектов, создавать сложные трехмерные миры с динамической освещенностью. Если до появления технологии MMX пользователь мог лицезреть любимые игры, как правило, в 256 цветах, то с появлением технологии MMX стандартом, очевидно, станет high color, то есть 65 тысяч цветов одновременно. Это придаст невиданный реализм трехмерным мирам с тенями, туманом и полупрозрачностью. В аркадах и стратегиях мягче станет вертикальная и горизонтальная прокрутка, высвободится дополнительное процессорное время, которое можно будет потратить на улучшение алгоритмов искусственного интеллекта.
В выигрыше окажутся все, кто так или иначе связан с мультимедиа. Так, например, компания Adobe объявила, что популярный пакет Photoshop за счет использования технологии MMX будет выполнять операции над изображениями от 2 до 6 раз быстрее, чем на аналогичных машинах без MMX. У любителей посмотреть качественные клипы и фильмы на компьютере раньше был лишь один выбор -- покупать аппаратный ускоритель MPEG. Теперь с этой функцией прекрасно справляется Pentium с MMX и обычной видеокартой. Более того, если обзавестись картой с телевизионным тюнером, можно одновременно работать, скажем, в Excel и смотреть сериал "Секретные материалы" в другом окне.
Новая технология даст толчок к практическому внедрению систем распознавания речи, поскольку затраты на обработку речевого сигнала могут быть снижены в несколько раз. Инструкции MMX прекрасно подходят для реализации цифровых фильтров, дискретного преобразования Фурье, векторных и матричных операций. Наконец, в выигрыше окажутся сетевые приложения и приложения для Internet, написанные на Java.
Проблемы
Сегодня для того, чтобы полноценно использовать инструкции MMX, необходимо низкоуровневое программирование на ассемблере. Едва ли все компании, занимающиеся разработкой программного обеспечения, готовы переквалифицировать своих программистов, понеся при этом дополнительные затраты.
Потребуется также определенное время на реализацию MMX в промышленных компиляторах. Не стоит забывать, что большинство инструкций MMX не имеет соответствующего адекватного представления в языках высокого уровня. Возможно, потребуются новые расширения языка С или даже создание нового языка. И только после появления компиляторов, использующих инструкции MMX, начнется реальное применение технологии. Таким образом, ситуация с MMX едва ли будет сильно отличаться от ситуации с первым 32-разрядным процессором 80386, когда 32-разрядная операционная система появилась спустя много лет.
Кроме того, практическому применению MMX будут сильно мешать конфликты MMX и плавающей точки. Приложение не может одновременно использовать операции с плавающей точкой и MMX-операции. А это означает, что уровень применения MMX в течение довольно длительного времени будет весьма незначительным, особенно в корпоративном секторе.
Реальные преимущества
Доводы как оптимиста, так и пессимиста имеют свои резоны. Технология MMX явно добавляет хлопот компаниям-разработчикам ПО. В то же время это не напрасные хлопоты, поскольку парк установленных компьютеров, в первую очередь в домашнем пользовании, непрерывно растет и технология MMX вполне может стать катализатором этого роста..
Домашний пользователь ощутит преимущество от данной технологии уже в ближайшее время. В этом году выйдут десятки компьютерных игр, использующих преимущества MMX. Большинство компаний-разработчиков мультимедиа, также выпустит в этом году новые улучшенные версии, поддерживающие MMX.
Корпоративный пользователь ощутит преимущества через использование системных драйверов и динамических библиотек, реализующих технологии MPEG, AVI, объемного звука, распознавания речи и других готовых приложений, объем которых будет нарастать в течение этого года.
Компании-разработчики ПО уже сейчас могут получить набор инструментальных средств для использования технологии MMX в своих проектах, а представительство Intel в Москве осуществляет программу поддержки российских разработчиков, обеспечивая их всеми необходимыми материалами и средствами разработки. Получить необходимую информацию об этом можно по адресу http://www.intel.ru, а сведения о разных аспектах этой технологии от разработки до применения и ссылок на поддерживающие MMX-продукты -- на http://mmx.com Недавно вышедшая третья версия популярного инструментария DirectX компании Microsoft уже использует технологию MMX для ускорения трехмерной графики. Загляните на страничку http://www.microsoft.com/mediadev и загрузите этот продукт, если у вас его нет.
И все же наиболее радикальные изменения произойдут несколько позже. Регистры MMX являются 64-разрядными. А это означает, что теперь существует реальная предпосылка к созданию 64-разрядной операционной системы. Кстати, компании Intel и Microsoft недавно объявили о начале работы над этим проектом. Кроме всего прочего, с появлением новой операционной системы, возможно, решится вопорс с регистрами MMX и регистрами плавающей точки.
Так что с появлением технологии MMX, как и конницы на шахматной доске, спектр решаемых задач существенно расширился а мощь значительно возросла. Впрочем, на доске все еще отсутствует несколько ключевых фигур. Долго ли осталось ждать?