В результате развития аппаратных средств и быстрого снижения их стоимости средства мультимедиа становятся практически неотъемлемой составляющей большинства ПК. Более того: вместе со средствами телекоммуникации они в самом ближайшем будущем составят основу появления уже не просто ПК или мультимедиа-ПК, но интегрированных информационных центров, а применительно к использованию в быту - развлекательных центров.
Являясь безусловным мировым лидером в области микропроцессоров, корпорация Intel постоянно уделяет внимание и системам мультимедиа, представляющим одно из самых многообещающих направлений развития мирового рынка компьютеров.
Сначала Intel делала упор на аппаратные реализации, разработав на основе технологии DVI (Digital Video Interactive - цифровое интерактивное видео) комплект плат Action Media, но с появлением высокопроизводительных микропроцессоров Pentium решила перенести всю тяжесть вычислений на центральный процессор. Она разработала технологию NSP (Native Sinal Processing - собственная обработка сигналов), эмулирующую типичные команды процессоров цифровой обработки сигналов, а недавно сделала новый шаг в направлении мультимедиа, разработав технологию ММХ (Multimedia Extention - мультимедиа-дополнение). О создании этой технологии на открытии выставки IntermediaWorld 5 марта 1996 г. объявил главный специалист Intel Фред Поллак (см. PC Week/RE №13/96, с. 6). Ее суть состоит в том, что на базе существующего микропроцессора Pentium был разработан новый микропроцессор, пока называемый P55C, который кроме стандартного набора команд Pentium (220 команд) имеет 57 дополнительных команд, специально подобранных для того, чтобы облегчить разработку мультимедиа-приложений и повысить эффективность их работы.
Эта дополнительная система команд появилась после опроса значительного количества фирм - разработчиков мультимедиа-ПО и серьезного анализа их ответов и пожеланий. В основу разработки легли следующие соображения:
- при решении целого класса задач, в первую очередь связанных с обработкой изображений и звука (прямое и обратное косинус-преобразование, двумерная фильтрация, быстрое преобразование Фурье и т. д.), большие (а иногда и просто огромные) объемы данных обрабатываются сравнительно небольшими фрагментами программы (например, действия над матрицами могут состоять из двух-трех десятков операторов, а размеры самих матриц при этом достигают нескольких мегабайтов);
- обрабатываемые данные, как правило, однородны, и над ними совершаются одинаковые операции (например, сложение или умножение матриц), поэтому такие данные можно обрабатывать параллельно.
Для реализации MMX была выбрана технология с использованием метода ОКМД, или SIMD (Single Instruction Multiple Data - один поток команд при множестве потоков данных). 57 новых команд оперируют с 64-разрядными регистрами. При этом используются уже имеющиеся в микропроцессоре регистры для вычислений с плавающей точкой.
Типы данных MMX
В технологии MMX используются целочисленные данные с фиксированной точкой со знаком или без знака. По сравнению со стандартными типами данных для микропроцессора Pentium введены четыре новых типа 64-разрядных данных:
- упакованный байт - восемь байтов, упакованных в одно 64- разрядное число;
- упакованное слово - четыре слова, упакованных в одно 64 разрядное число;
- упакованное двойное слово - два двойных слова, упакованных в одно 64 разрядное число;
- учетверенное слово - 64-разрядное число.
Регистры MMX
Технология MMX позволяет работать с восемью 64-разрядными регистрами общего назначения. Это те же самые регистры, которые используются для вычислений с плавающей точкой. При таком подходе нет нужды вносить изменения в операционную систему, так как обработка этих регистров (например, сохранение регистров при обработке системных прерываний) совпадает с обработкой регистров с плавающей точкой.
Все упомянутые регистры могут использоваться только для действий над данными. Их нельзя использовать для адресации памяти.
Набор команд
Все команды обрабатывают 64-разрядные упакованные данные. Размер обрабатываемых данных (одно-, двухбайтовые и т. д.) определяется типом данных, задаваемым в команде.
В вычислениях при переполнении или потере значимости вместо традиционной арифметики с циклическим переходом (wrap around) используется арифметика с насыщением (saturation arithmetics): при переполнении результат операции равен максимальному значению для этого типа данных, а при потере точности - минимальному значению. Во многих случаях такой подход оказывается весьма полезным. Например, при вычислении цветов изображений цвет останется чисто белым или чисто черным и инверсии цвета не будет.
При выполнении команд MMX в ситуации переполнения и потери точности флаги условий не вырабатываются.
Все команды MMX можно разбить на семь категорий:
- арифметические (четыре действия арифметики; кроме того, для 16-разрядных слов есть специальная команда вычисления суммы произведений);
- сравнение (равно; больше чем);
- преобразование (упаковка и распаковка);
- логические (поразрядно выполняемые инструкции И; И-НЕ; ИЛИ; исключающее ИЛИ);
- сдвиг (логический и арифметический вправо или влево на указанное число разрядов);
- передача данных (32- и 64-разрядная пересылка данных между регистрами целых чисел и регистрами MMX, между регистрами MMX и памятью или между регистрами MMX);
- сброс режима MMX.
Очевидно, что наибольший выигрыш в производительности будет достигнут при обработке однобайтовых величин (наиболее типичны алгоритмы обработки видеоизображений с одним байтом на пиксел) и двухбайтовых (наиболее типичны алгоритмы обработки аудиоинформации).
Однако необходимо помнить, что технология MMX использует регистры, изначально предназначенные для вычислений с плавающей точкой. Поэтому при программировании следует как можно дальше разносить фрагменты программы, работающие с плавающей точкой, и фрагменты, использующие MMX. Если же вы будете попеременно применять оба режима, то вместо выигрыша во времени можно получить совершенно противоположный результат.
Надо также отметить, что пока программировать с использованием технологии MMX можно только на Ассемблере.
Перспективы применения MMX
Понятно, что сфера применения MMX несколько ограничена, хотя и весьма привлекательна. По словам Ф. Поллака, при моделировании и предварительном тестировании систем, использующих эту технологию, прирост производительности в зависимости от приложения составлял от 50 до 400%. При этом максимальный выигрыш достигался при обработке изображений и их сжатии/разуплотнении в режиме 256 цветов (один байт на пиксел). Производительность заметно увеличивалась и при обработке аудиоинформации, так как для представления звука достаточно 16 разрядов (двух байтов).
Можно рассмотреть данный вопрос и в другой плоскости. Так как производительность P55C с дополнительной системой команд весьма высока (а на самом деле просто поразительна), многие алгоритмы, которые раньше реализовались только в программно-аппаратном виде на дополнительных платах, теперь можно выполнять прямо на центральном процессоре. В результате упрощается архитектура многих плат расширения (модемных, MPEG-1, звуковых, фрейм-грабберов и т. д.), а значит, снижается их цена. Следовательно, должна снизиться и общая цена мультимедийного компьютера. Поэтому уже сейчас о готовности использования технологии MMX заявили такие всемирно известные производители аппаратных средств и конечного оборудования, как Compaq, NEC, IBM, Dell, Toshiba, Acer, Gateway2000, Cirrus Logic, Creative Labs, Yamaha System Technology и многие другие.
С другой стороны, использование технологии MMX обещает и повышение эффективности программного обеспечения - трехмерной графики, обработки высококачественного (Hi-Fi) звука, обработки фотоизображений и т. п. Поэтому не остаются в стороне и видные разработчики программного обеспечения: Microsoft, Adobe, Macromedia, IBM, ParaGraph International и т. д.
Отметим еще два важных момента: во-первых, далеко не всем производителям системных плат придется их переделывать - для P55C подходит гнездо №7 под Pentium; во вторых, первая партия P55C будет выпущена в конце 1996 г., а начиная с 1997 г. Intel полностью прекратит выпуск простых процессоров Pentium и перейдет на выпуск P55C. Ожидается, что технология MMX будет реализована и в процессоре Pentium Pro.
Взгляд пессимиста
Чтобы правильно ориентировать читателя, следует рассмотреть и возможные проблемы внедрения технологии MMX.
Рассмотрим состояние современного рынка ПК и комплектующих. Еще год назад доля стоимости микропроцессора в общей стоимости ПК была относительно невелика. Сравните сами: 16 Мб ОЗУ по $40 за 1 Мб составляют $640, жесткий диск 1,3 Гб по $0,7 за 1 Мб - $900; итого уже набежало около $1300. Да еще платы расширения (тоже не очень-то дешевые), монитор, клавиатура. В результате доля стоимости микропроцессора ($300) составляла около 15%, а то и меньше. Теперь ситуация изменилась. Сначала заметно подешевели жесткие диски: даже в Москве жесткий диск емкостью 1,3 Гб стоит менее $300. Совсем недавно в два раза упала цена на память: теперь 16 Мб ОЗУ стоят всего $320; снизились цены и на многие платы расширения. А стоимость микропроцессоров Pentium не только не упала, но и возросла. Понятно, что речь идет уже не о процессорах 66 или 75 МГц, а о 150 и 166 МГц (не говоря уже о Pentium Pro), и по качеству их, конечно, тоже не сравнить. Тем не менее стоимость микропроцессора теперь составляет около 40% стоимости компьютера. В результате пользователь стоит перед дилеммой: покупать компьютер с дорогим Pentium или купить с существенно более дешевым 486 процессором (частотой 100 или 120 МГц) и с платой расширения.
Производители плат расширения также не очень-то заинтересованы в снижении стоимости плат, так как, с одной стороны, им придется вносить существенные изменения в аппаратуру и программное обеспечение, а с другой - их прибыль определяется как процент от стоимости платы и, следовательно, тоже снизится.
Вот еще ряд ситуаций. Все операционные системы современных ПК поддерживают режим многозадачности. Но процессор Pentium, несмотря на его исключительно высокую производительность, все равно не сможет обеспечить режим многозадачности при интенсивных вычислениях. Сейчас при программной реализации MPEG-1 (без специализированной платы) используется практически вся вычислительная мощность Pentium, поэтому о параллельном выполнении какой-либо еще задачи не может быть и речи. Представьте себе, что вы смотрите на компьютере MPEG-ролик и вдруг начал поступать факс. И все это надо обработать в реальном масштабе времени. Очевидно, что либо будет утеряна часть факса, либо у вас ухудшится воспроизведение. Тем-то и хороши дополнительные платы, что они работают независимо от центрального процессора и напрямую общаются с памятью. А что произойдет при реализации MPEG-2, которая требует восьмикратного увеличения производительности? Возможно, именно эти причины и затормозили внедрение технологии NSP. Теперь то же самое может произойти и с MMX.
Отметим и тот факт, что максимальный выигрыш производительности при обработке видеоинформации наступает при использовании одного байта на пиксел (256 цветов). Но давно известно, что для обеспечения хорошего качества изображения надо иметь как минимум 65 тыс. цветов (2 байта на пиксел), а наилучшие результаты дают 16 млн. цветов (3 байта на пиксел). Понятно, что при таком количестве цветов выигрыш в производительности существенно снижается, и, опять-таки, будет трудно обойтись без специальной платы расширения.
Не вызывает большого оптимизма и необходимость использования Ассемблера для программирования MMX, поскольку при этом снижается скорость разработки ПО. Весьма сомнительно, чтобы технологию MMX стали применять разработчики компиляторов, поскольку при разработке высокооптимизирующих компиляторов стремятся использовать самые простые и симметричные команды (интересно, есть ли в природе компилятор, реализующий в генераторе кода не менее 80% уже существующих 220 команд микропроцессора Pentium?). Поэтому можно ожидать лишь создания специальных функций, поддерживающих MMX.
Дополнительную информацию по технологии MMX можно получить в московском представительстве корпорации Intel (факс: 956-4905) или на Web-сервере: http://www.intel.com.
Михаил Гуткин