Multi Media Extension
Multi Media Extension (zkratka MMX) je v informatice název rozšíření instrukční sady pro procesory Pentium MMX vytvořená firmou Intel, které byly uvedeny na trh 8. ledna 1997. Rozšíření bylo implementováno i do konkurenčních kompatibilních procesorů (AMD, Cyrix, VIA).
The New York Times popsal počáteční tlak, včetně reklam na Super Bowl, jako zaměřený na „novou generaci pompézních multimediálních produktů, včetně videotelefonů a 3D videoher“.
MMX bylo následně rozšířeno o několik programů od Intelu a dalších: 3DNow!, Streaming SIMD Extensions (SSE) a probíhající revize Advanced Vector Extensions (AVX).
Charakteristika
Pod zkratkou MMX se skrývají dvě zásadní vylepšení architektury procesoru. První vylepšení je velmi jednoduché - došlo ke zvětšení vnitřní L1 cache na dvojnásobek (ze 16 na 32 KB).
Druhé vylepšení je výrazně složitější a důležitější. Technologie umožňuje využít osm 64bitových registrů (MM0 až MM7). Tyto registry využívají technologii SIMD (Single Instruction, Multiple Data) a plně podporují paralelní zpracování dat. Navíc byl standardní soubor 220 strojových instrukcí rozšířen o 57 nových multimediálních instrukcí.
Hlavním omezením technologie MMX je skutečnost, že pracuje pouze s celými čísly. Tento nedostatek prolomila multimediální technologie 3DNow! konkurenční firmy AMD, která byla uvedena na trh 28. května, 1998. Další omezení vyplývá ze skutečnosti, že registry MM0 až MM7 jsou vlastně registry pro zpracování instrukcí v pohyblivé řadové čárce (floating point FP) ST0 až ST7, proto není možné zároveň provádět MMX instrukce a floating point. Pokud programátor chce využít v kódu oba typy operací, musí hodnoty registrů nejprve uložit do paměti a po skončení práce MMX nebo FP je zase obnovit. K tomu slouží instrukce FSAVE a FRSTOR.
Výše uvedené nedostatky odstraňuje novější SIMD sady instrukcí SSE, SSE2 a další.
Některé nové instrukce
- přesuny: MOVD, MOVQ
- aritmetické: PADD, PADDS, PADDUS, PMADD, PMULH, PMULL, PSUB, PSUBS, PSUBUS
- porovnání: PCMPEQ, PCMPGT
- konverzní: PACKSSDW, PACKSSWB, PACKUSWB, PUNPCKH, PUNPCKL
- logické: PAND, PANDN, POR, PXOR
- bitové posuvy: PSLL, PSRA, PSRL
- stavové: EMMS