Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Intel компаниясымен жасалған нұсқаулар жиынтығы, Intel Pentium және Pentium II процессорларына арналған нұсқаулар жиынтығы.
Instruction set designed by Intel
the instruction set for Intel Pentium and Pentium II processors
MMX – Intel компаниясымен жасалған бір нұсқау, көп дерек (SIMD) нұсқаулар жиынтығы архитектурасы. Ол 1997 жылдың 8 қаңтарында Pentium P5 (микроархитектура) негізіндегі микропроцессорлар тізімімен бірге «Pentium with MMX Technology» деген атпен таныстырылды. Бұл технология Intel i860 және одан бұрын Intel i750 бейне пиксель процессорында қолданылған ұқсас құрылғының негізінде дамытылды. MMX – Intel және басқа өндірушілердің IA 32 процессорларында 1997 жылдан бері қолдау көрсетілетін процессордың қосымша мүмкіндігі. AMD компаниясы да K6 процессорына MMX нұсқаулар жиынтығын қосты. «Нью-Йорк Таймс» газеті алғашқы жарнамалық кампанияны, оның ішінде Супер Боулдағы жарнамаларды «жаңа буынның әсем мультимедиа өнімдеріне, соның ішінде бейне телефондар мен 3D видео ойындарына» бағытталған деп сипаттады. Кейіннен MMX Intel және басқа компаниялармен бірнеше бағдарламалар арқылы кеңейтілді: 3DNow!, Streaming SIMD Extensions (SSE) және Advanced Vector Extensions (AVX) нұсқалары.
MMX is a single instruction, multiple data (SIMD) instruction set architecture designed by Intel, introduced on January 8, 1997 with its Pentium P5 (microarchitecture) based line of microprocessors, named "Pentium with MMX Technology". It developed out of a similar unit introduced on the Intel i860, and earlier the Intel i750 video pixel processor. MMX is a processor supplementary capability that is supported on IA 32 processors by Intel and other vendors as of 1997. AMD also added MMX instruction set in its K6 processor. The New York Times described the initial push, including Super Bowl advertisements, as focused on "a new generation of glitzy multimedia products, including videophones and 3 D video games." MMX has subsequently been extended by several programs by Intel and others: 3DNow!, Streaming SIMD Extensions (SSE), and ongoing revisions of Advanced Vector Extensions (AVX).
Техникалық мәліметтер
MMX сегіз процессорлық регистрді, MM0-ден MM7-ге дейін, және оларда жұмыс істейтін операцияларды анықтайды. Әрбір регистр 64 бит енімен келеді және 64 биттік бүтін сандарды немесе "жинақталған" форматта бірнеше кіші бүтін сандарды сақтауға мүмкіндік береді: бір команданы екі 32 биттік бүтін санға, төрт 16 биттік бүтін санға немесе сегіз 8 биттік бүтін санға бірден қолдануға болады. MMX тек бүтін сандық операцияларды қолдайды. Бастапқыда Intel i860 үшін әзірленген кезде, бүтін сандық математиканы пайдалану орынды болды (өйткені 2D және 3D есептеулер оны қажет етті), бірақ графикалық карталар осы функциялардың көп бөлігін орындағаннан кейін, CPU-дағы бүтін сандық SIMD графикалық қолданбалар үшін азайды. MMX-тегі қанығу арифметикалық операциялары кейбір цифрлық сигналды өңдеу қолданбаларын айтарлықтай жылдамдатуы мүмкін. Қолданыстағы операциялық жүйелердегі контексттік ауысу механизмдерімен қақтығыстарды болдырмау үшін, MMX регистрлері бар x87 жылжымалы нүктелі процессор (FPU) регистрлерінің псевдонимдері болып табылады, оларды контексттік ауысулар сақтап, қалпына келтіреді. x87 регистрлері стек тәрізді жұмыс істейтін болса, MMX регистрлері әрқайсысы тікелей адрестеледі (көп тікелей қол жеткізуге ие). Жылжымалы нүктелі стекке қатысты кез келген операция MMX регистрлеріне де әсер етуі мүмкін, керісінше де орынды, сондықтан бұл псевдоним бір бағдарламада жылжымалы нүктелі және SIMD операцияларымен жұмыс істеуді қиындатады. Оңтайлы өнімділікке қол жеткізу үшін, бағдарламалық жасақтама процессорды көбінесе бір режимде ғана пайдаланады, олардың арасындағы салыстырмалы түрде баяу ауысуды мүмкіндігінше кешіктіреді. Әрбір 64 биттік MMX регистрі 80 биттік x87 регистрінің мантисса бөлігіне сәйкес келеді. x87 регистрлерінің жоғарғы 16 биті MMX-те пайдаланбайды, және осы биттердің барлығы біліктерге орнатылады, оларды сан емес (NaN) дерек түріне немесе жылжымалы нүктелі өрнектемедегі шексіздікке айналдырады. Бұл бағдарламалық жасақтамаға белгілі бір регистрдің мазмұны жылжымалы нүктелі немесе SIMD деректері ретінде қарастырылғанын анықтауға мүмкіндік береді.
MMX defines eight processor registers, named MM0 through MM7, and operations that operate on them. Each register is 64 bits wide and can be used to hold either 64 bit integers, or multiple smaller integers in a "packed" format: one instruction can then be applied to two 32 bit integers, four 16 bit integers, or eight 8 bit integers at once. MMX provides only integer operations. When originally developed, for the Intel i860, the use of integer math made sense (both 2D and 3D calculations required it), but as graphics cards that did much of this became common, integer SIMD in the CPU became somewhat redundant for graphical applications. Alternatively, the saturation arithmetic operations in MMX could significantly speed up some digital signal processing applications. To avoid compatibility problems with the context switch mechanisms in existing operating systems, the MMX registers are aliases for the existing x87 floating point unit (FPU) registers, which context switches would already save and restore. Unlike the x87 registers, which behave like a stack, the MMX registers are each directly addressable (random access). Any operation involving the floating point stack might also affect the MMX registers and vice versa, so this aliasing makes it difficult to work with floating point and SIMD operations in the same program. To maximize performance, software often used the processor exclusively in one mode or the other, deferring the relatively slow switch between them as long as possible. Each 64 bit MMX register corresponds to the mantissa part of an 80 bit x87 register. The upper 16 bits of the x87 registers thus go unused in MMX, and these bits are all set to ones, making them Not a Number (NaN) data types, or infinities in the floating point representation. This can be used by software to decide whether a given register's content is intended as floating point or SIMD data.
Бағдарламалық қамтамасыз ету
MMX бағдарламалық қолдауы баяу дамыды, AMD-нің 3DNow! технологиясы енгізілгеннен шамамен бір жыл өткен соң, 1999 жылы. SSE, MMX-тың негізгі кемшіліктерін (бүтін санды SIMD операцияларын кез келген қозғалатын нүктелі операциялармен қоса алмауы) жаңа 128 биттік кең реестрлік файлды (XMM0–XMM7) және оған арналған жаңа SIMD нұсқауларын жасау арқылы шешті. 3DNow! сияқты, SSE де тек бірлік дәлдіктегі қозғалатын нүктелі операцияларға (32 бит) бағытталды; бүтін санды SIMD операциялары әлі де MMX регистрі мен нұсқаулар жиынтығы арқылы орындалды. Дегенмен, жаңа XMM регистрлік файлы SSE SIMD операцияларын MMX немесе x87 FPU операцияларымен еркін араластыруға мүмкіндік берді. Pentium 4 процессорымен бірге ұсынылған Streaming SIMD Extensions 2 (SSE2) x86 SIMD нұсқаулар жиынтығын бүтін санды (8/16/32 бит) және қос дәлдіктегі қозғалатын нүктелі деректерді XMM регистрлік файлы үшін қолдаумен одан әрі кеңейтті. SSE2 сонымен қатар MMX операциялық кодтарына (опкодтарға) XMM регистрлік аргументтерін пайдалануға мүмкіндік берді, кейінірек SSE жаңартуларында олар YMM және ZMM регистрлеріне дейін кеңейтілді.
Software support for MMX developed slowly. in 1999, roughly a year after AMD's 3DNow! was introduced. SSE addressed the core shortcomings of MMX (inability to mix integer SIMD ops with any floating point ops) by creating a new 128 bit wide register file (XMM0–XMM7) and new SIMD instructions for it. Like 3DNow!, SSE focused exclusively on single precision floating point operations (32 bit); integer SIMD operations were still performed using the MMX register and instruction set. However, the new XMM register file allowed SSE SIMD operations to be freely mixed with either MMX or x87 FPU ops. Streaming SIMD Extensions 2 (SSE2), introduced with the Pentium 4, further extended the x86 SIMD instruction set with integer (8/16/32 bit) and double precision floating point data support for the XMM register file. SSE2 also allowed the MMX operation codes (opcodes) to use XMM register operands, extended to even wider YMM and ZMM registers by later SSE revisions.
Енгізілген қолданбалардағы MMX
Intel және Marvell Technology Group компанияларының PXA270 моделінен басталатын XScale микропроцессорлық ядросы, ARM архитектуралық ядросына Intel Wireless MMX Technology (iwMMXt) деп аталатын SIMD нұсқаулар жиынтығы архитектурасының кеңейтілген нұсқасын қосады, оның мүмкіндіктері IA-32 MMX кеңейтілген нұсқасына ұқсас. Ол 64 биттік бүтін сандармен арифметикалық және логикалық операцияларды жүзеге асыруға мүмкіндік береді, сонда бағдарламалық жасақтама бір нұсқау арқылы екі 32 биттік, төрт 16 биттік немесе сегіз 8 биттік операцияны орындауды таңдай алады. Кеңейтімде 64 биттік 16 дерек тіркелгісі және 32 биттік 8 басқару тіркелгісі бар. Барлық тіркелгістерге стандартты ARM архитектурасының копроцессорлық бейнелеу механизмі арқылы қол жеткізіледі. iwMMXt 0 және 1 копроцессорлар кеңістігін пайдаланады, ал оның кейбір операциялық кодтары (опкодтары) бұрынғы жылжымалы нүктелік кеңейтімнің, FPA-ның операциялық кодтарымен келіспейді. Marvell ARM процессорларының кейінгі нұсқалары сымсыз MMX (WMMX) және сымсыз MMX2 (WMMX2) операциялық кодтарын қолдайды.
Intel's and Marvell Technology Group's XScale microprocessor core starting with PXA270 include an SIMD instruction set architecture extension to the ARM architecture core named Intel Wireless MMX Technology (iwMMXt) which functions are similar to those of the IA 32 MMX extension. It provides arithmetic and logic operations on 64 bit integer numbers, in which the software may choose to instead perform two 32 bit, four 16 bit or eight 8 bit operations in one instruction. The extension contains 16 data registers of 64 bits and eight control registers of 32 bits. All registers are accessed through standard ARM architecture coprocessor mapping mechanism. iwMMXt occupies coprocessors 0 and 1 space, and some of its opcodes clash with the opcodes of the earlier floating point extension, FPA. Later versions of Marvell's ARM processors support both Wireless MMX (WMMX) and Wireless MMX2 (WMMX2) opcodes.