MMX ( Multi m edia E x tensions - multimediální rozšíření) je komerční název pro další instrukční sadu SIMD vyvinutou společností Intel a poprvé představenou v roce 1997 spolu s řadou procesorů Pentium MMX . Sada instrukcí byla navržena tak, aby urychlila proces kódování / dekódování streamovaných audio a video dat. Jde o vývoj technologií navržených v mikroprocesoru i860 [1] . Vyvinutý v laboratoři Intel v Haifě v Izraeli v první polovině 90. let[2] [3] .
Nyní je instrukční sada MMX, představená v roce 1997, upřímně řečeno zastaralá a byla již dlouho nahrazena různými verzemi SSE a AVX . Stále je však formálně podporován ve vývojových nástrojích; vzhledem k vzácnosti použití však realizace trpí četnými vadami. Proto existují návrhy na jeho odstranění z oblíbené sady kompilátorů LLVM [4] .
Rozšíření MMX zahrnuje osm 64bitových veřejných registrů MM0-MM7. Aby byl Intel kompatibilní s metodami přepínání kontextu procesoru ve stávajících operačních systémech , byl nucen zkombinovat osm registrů MMX s mantisami osmi registrů FPU v softwarovém modelu procesoru . Hardwarově to mohou být různá zařízení, ale z pohledu programátora se jedná o stejné registry. Nemůžete tedy používat matematický koprocesor a příkazy MMX současně.
Instrukce technologie MMX zpracovávají celočíselná data zabalená do skupin ( vektorů ) o celkové délce 64 bitů nebo jednotlivých 64 bitových slov. Taková data mohou být uložena v paměti nebo v osmi MMX registrech.
Příkazy technologie MMX pracují s následujícími datovými typy:
Příkazy MMX mají následující syntaxi: instruction [dest, src] Instrukce je název příkazu, dest je výstupní operand, src je vstupní operand.
Příkazový systém je tvořen 57 instrukcemi, které umožňují paralelně zpracovávat několik datových prvků [5] . Většina příkazů má příponu , která určuje typ dat a použitou aritmetiku:
Lze rozlišit následující skupiny instrukcí [5] :
Provedení instrukcí MMX nemění příznaky stavu FPU stavového slova, s výjimkou pole TOP. K registrům MMX lze přistupovat přímo podle názvu, na rozdíl od registrů FPU, které jsou organizovány na zásobníku s vrcholem definovaným polem TOP stavového slova FPU. V tomto případě je pole TOP resetováno po provedení jakékoli instrukce MMX. Provádění instrukcí MMX je možné v libovolném režimu procesoru [5] .
Rodina procesorů Intel XScale , počínaje modelem PXA270, obsahuje doplněk k instrukční sadě ARM s názvem iwMMXt, podobně jako rozšíření IA-32 MMX.
instrukční sady procesoru x86 | |
---|---|
Intel | |
AMD | |
Cyrix |