MMX — это архитектура набора инструкций SIMD ( одна инструкция, несколько данных ) , разработанная Intel , представленная 8 января 1997 года [1] [2] с линейкой микропроцессоров на базе Pentium P5 (микроархитектура) , названной «Pentium с технологией MMX». [3] Она была разработана на основе аналогичного блока, представленного в Intel i860 [4] и ранее в видеопиксельном процессоре Intel i750 . MMX — это дополнительная возможность процессора , которая поддерживается процессорами IA-32 Intel и другими поставщиками с 1997 года . AMD также добавила набор инструкций MMX в свой процессор K6 . [обновлять]
Газета New York Times описала первоначальный толчок, включая рекламу Суперкубка , как нацеленный на «новое поколение блестящих мультимедийных продуктов, включая видеофоны и 3-D видеоигры». [5]
Впоследствии MMX был расширен несколькими программами от Intel и других компаний: 3DNow!, Streaming SIMD Extensions (SSE) и текущими версиями Advanced Vector Extensions (AVX).
MMX — это официально бессмысленная аббревиатура [6], зарегистрированная как торговая марка Intel; [7] неофициально аббревиатура по-разному толкуется как
Advanced Micro Devices (AMD) во время одного из своих многочисленных судебных разбирательств с Intel представила маркетинговый материал Intel, в котором указывалось, что MMX означает «Matrix Math Extensions». [ требуется цитата ] Поскольку аббревиатура не может быть зарегистрирована как торговая марка, [ требуется цитата ] это была попытка признать недействительной торговую марку Intel. В 1995 году Intel подала иск против AMD и Cyrix Corp. за неправомерное использование ее торговой марки MMX. AMD и Intel пришли к соглашению, при этом AMD признала MMX торговой маркой, принадлежащей Intel, а Intel предоставила AMD права на использование торговой марки MMX в качестве названия технологии, но не названия процессора. [9]
MMX определяет восемь регистров процессора , называемых MM0 через MM7, и операции, которые работают с ними. Каждый регистр имеет ширину 64 бита и может использоваться для хранения либо 64-битных целых чисел , либо нескольких меньших целых чисел в «упакованном» формате: одна инструкция затем может быть применена к двум 32-битным целым числам, четырем 16-битным целым числам или восьми 8-битным целым числам одновременно. [10]
MMX обеспечивает только целочисленные операции. При первоначальной разработке для Intel i860 использование целочисленной математики имело смысл (ее требовали как 2D, так и 3D вычисления), но по мере того, как графические карты, которые делали большую часть этого, становились обычными, целочисленный SIMD в ЦП стал несколько избыточным для графических приложений. [ необходима цитата ] В качестве альтернативы, арифметические операции насыщения в MMX могли [ неопределенно ] значительно ускорить некоторые приложения цифровой обработки сигналов . [ необходима цитата ]
Чтобы избежать проблем совместимости с механизмами переключения контекста в существующих операционных системах, регистры MMX являются псевдонимами для существующих регистров блока с плавающей точкой (FPU) x87 , которые переключения контекста уже сохраняют и восстанавливают. В отличие от регистров x87, которые ведут себя как стек , регистры MMX адресуются напрямую (произвольный доступ).
Любая операция, включающая стек с плавающей точкой, может также повлиять на регистры MMX и наоборот, поэтому такое наложение затрудняет работу с операциями с плавающей точкой и SIMD в одной и той же программе. [11] Чтобы максимизировать производительность, программное обеспечение часто использовало процессор исключительно в одном или другом режиме, откладывая относительно медленное переключение между ними как можно дольше.
Каждый 64-битный регистр MMX соответствует части мантиссы 80-битного регистра x87. Таким образом, верхние 16 бит регистров x87 не используются в MMX, и все эти биты устанавливаются в единицы, что делает их типами данных Not a Number ( NaN ) или бесконечностями в представлении с плавающей точкой. Это может использоваться программным обеспечением для определения того, предназначено ли содержимое данного регистра как данные с плавающей точкой или SIMD.
Программная поддержка MMX развивалась медленно. [5] Компилятор C от Intel и связанные с ним инструменты разработки получили встроенные функции для вызова инструкций MMX, и Intel выпустила библиотеки общих векторизованных алгоритмов с использованием MMX. И Intel, и Metrowerks пытались автоматизировать векторизацию в своих компиляторах, но операции на языке программирования C плохо отображались на набор инструкций MMX, и пользовательские алгоритмы по состоянию на 2000 год обычно все еще приходилось писать на языке ассемблера . [11]
AMD, конкурирующий поставщик микропроцессоров x86 , усовершенствовал MMX от Intel с помощью собственного набора инструкций 3DNow !. 3DNow наиболее известен добавлением поддержки чисел с плавающей точкой одинарной точности (32 бита) в набор инструкций SIMD, а также другими целочисленными и более общими усовершенствованиями.
После MMX следующим крупным расширением x86 от Intel стало Streaming SIMD Extensions (SSE), представленное в семействе Pentium III [12] в 1999 году [13] , примерно через год после появления 3DNow! от AMD.
SSE устранил основные недостатки MMX (невозможность смешивать целочисленные операции SIMD с любыми операциями с плавающей точкой), создав новый 128-битный файл регистров (XMM0–XMM7) и новые инструкции SIMD для него. Как и 3DNow!, SSE был сосредоточен исключительно на операциях с плавающей точкой одинарной точности (32-битных); целочисленные операции SIMD по-прежнему выполнялись с использованием регистра MMX и набора инструкций. Однако новый файл регистров XMM позволял свободно смешивать операции SIMD SSE с операциями MMX или x87 FPU.
Потоковые расширения SIMD 2 ( SSE2 ), представленные с Pentium 4 , дополнительно расширили набор инструкций SIMD x86 с поддержкой целочисленных (8/16/32 бит) и данных с плавающей точкой двойной точности для регистрового файла XMM. SSE2 также позволил кодам операций MMX ( опкодам ) использовать операнды регистра XMM, расширенные до еще более широких регистров YMM и ZMM более поздними версиями SSE.
Ядро микропроцессора XScale от Intel и Marvell Technology Group, начиная с PXA270, включает расширение архитектуры набора инструкций SIMD для ядра архитектуры ARM под названием Intel Wireless MMX Technology (iwMMXt), функции которого аналогичны функциям расширения IA-32 MMX. [14] [15] [16] Оно обеспечивает арифметические и логические операции над 64-битными целыми числами, в которых программное обеспечение может выбрать вместо этого выполнение двух 32-битных, четырех 16-битных или восьми 8-битных операций в одной инструкции. Расширение содержит 16 регистров данных по 64 бита и восемь регистров управления по 32 бита. Доступ ко всем регистрам осуществляется через стандартный механизм отображения сопроцессора архитектуры ARM. iwMMXt занимает пространство сопроцессоров 0 и 1, и некоторые из его кодов операций конфликтуют с кодами операций более раннего расширения с плавающей точкой, FPA. [ необходима цитата ]
Более поздние версии процессоров ARM компании Marvell поддерживают как коды операций Wireless MMX (WMMX), так и Wireless MMX2 (WMMX2).
технология расширения мультимедиа от Intel, называемая MMX, ...
имя, которое ничего не обозначает
{{cite book}}
: CS1 maint: местоположение ( ссылка )