MMX (sada instrukcí) - MMX (instruction set)

Pentium s MMX

MMX je architektura instrukčních sad s jednou instrukcí a vícenásobnými daty ( SIMD ) navržená společností Intel , představená 8. ledna 1997 s řadou mikroprocesorů založených na Pentium P5 (mikroarchitektura) s názvem „Pentium s technologií MMX“. Vyvinul se z podobné jednotky, která byla uvedena na procesorech Intel i860 a dřívějších pixelových procesorech Intel i750 . MMX je doplňková funkce procesoru, kterou na procesorech IA-32 podporuje společnost Intel a další prodejci od roku 1997.

The New York Times popsal počáteční tlak, včetně reklam na Super Bowl , jako zaměřený na „novou generaci lesklých multimediálních produktů, včetně videotelefonů a 3-D videoher“.

MMX byl následně rozšířen o několik programů od společnosti Intel a dalších: 3DNow! , Streaming SIMD Extensions (SSE) a probíhající revize Advanced Vector Extensions (AVX).

Přehled

Pojmenování

MMX je oficiálně bezvýznamný initialism ochranná známka společnosti Intel; neoficiálně byly iniciály různě vysvětlovány jako zastání

  • MultiMedia eXtension ,
  • Multiple Math eXtension , nebo
  • Matice Math eXtension .

Společnost Advanced Micro Devices (AMD) během jedné z mnoha soudních bitev se společností Intel vytvořila marketingový materiál od společnosti Intel, který naznačuje, že MMX znamená „Matrix Math Extensions“. Protože inicializmus nelze ochrannou známkou použít, byl to pokus o zneplatnění ochranné známky společnosti Intel. V roce 1995 společnost Intel podala žalobu na AMD a Cyrix Corp. za zneužití její ochranné známky MMX. AMD a Intel se usadili, přičemž AMD uznalo MMX jako ochrannou známku vlastněnou společností Intel a Intel uděluje AMD práva používat ochrannou známku MMX jako název technologie, nikoli však název procesoru.

Technické údaje

Procesor Pentium II s technologií MMX

MMX definuje osm procesorových registrů pojmenovaných MM0 až MM7 a operace, které na nich fungují. Každý registr je široký 64 bitů a lze jej použít k uložení buď 64bitových celých čísel, nebo více menších celých čísel v „zabaleném“ formátu: jednu instrukci pak lze použít na dvě 32bitová celá čísla, čtyři 16bitová celá čísla nebo osm 8bitová celá čísla najednou.

MMX poskytuje pouze celočíselné operace. Když byl původně vyvinut, pro Intel i860 , použití celočíselné matematiky dávalo smysl (vyžadovaly to 2D i 3D výpočty), ale jak se grafické karty, které toho hodně dělaly, staly běžnými, stala se celočíselná SIMD v CPU pro grafické aplikace poněkud nadbytečnou. Alternativně by saturační aritmetické operace v MMX mohly výrazně urychlit některé aplikace pro zpracování digitálního signálu .

Aby se předešlo problémům s kompatibilitou s mechanismy přepínání kontextu ve stávajících operačních systémech, jsou registry MMX aliasy pro existující registry FPU ( x87 floating-point unit ), které by kontextové přepínače již ukládaly a obnovovaly. Na rozdíl od registrů x87, které se chovají jako zásobník , jsou registry MMX každý přímo adresovatelný (náhodný přístup).

Jakákoli operace zahrnující zásobník s plovoucí desetinnou čárkou může také ovlivnit registry MMX a naopak, takže toto aliasing ztěžuje práci s operacemi s pohyblivou řádovou čárkou a SIMD ve stejném programu. Aby byl maximalizován výkon, software často používal procesor výlučně v jednom nebo druhém režimu a relativně pomalé přepínání mezi nimi odkládal na co nejdelší dobu.

Každý 64bitový registr MMX odpovídá mantisové části 80bitového registru x87. Horních 16 bitů registrů x87 se tak v MMX nepoužívá a všechny tyto bity jsou nastaveny na jedničky, což z nich činí datové typy Not a Number ( NaN ) nebo nekonečna v plovoucí desetinné čárce. Toho může software použít k rozhodnutí, zda je obsah daného registru určen jako data s plovoucí desetinnou čárkou nebo data SIMD.

Softwarová podpora

Softwarová podpora pro MMX se vyvíjela pomalu. Kompilátor C společnosti Intel a související vývojové nástroje získaly vnitřní vlastnosti pro vyvolání instrukcí MMX a Intel vydal knihovny běžných vektorových algoritmů využívajících MMX. Intel i Metrowerks se pokusily o automatickou vektorizaci ve svých kompilátorech, ale operace v programovacím jazyce C byly špatně mapovány na instrukční sadu MMX a vlastní algoritmy od roku 2000 obvykle stále musely být psány v jazyce sestavení .

Nástupci

AMD, konkurenční prodejce mikroprocesorů x86 , vylepšil MMX společnosti Intel o vlastní 3DNow! instrukční sada. 3DNow je nejlépe známý pro přidání podpory s plovoucí desetinnou čárkou s jednoduchou přesností (32 bitů) do sady instrukcí SIMD, kromě jiných celočíselných a obecnějších vylepšení.

V návaznosti na MMX bylo další hlavní x86 rozšíření společnosti Intel Streaming SIMD Extensions (SSE), představené s rodinou Pentium III v roce 1999, zhruba rok po AMD 3DNow! byl představen.

SSE vyřešilo základní nedostatky MMX (neschopnost kombinovat celočíselné operace SIMD s operacemi s pohyblivou řádovou čárkou) vytvořením nového souboru 128bitového širokého registru (XMM0 – XMM7) a nových instrukcí pro SIMD. Stejně jako 3DNow! Se SSE zaměřilo výhradně na operace s plovoucí desetinnou čárkou s jednoduchou přesností (32bitové); celočíselné operace SIMD byly stále prováděny pomocí registru MMX a sady instrukcí. Nový registrační soubor XMM však umožňoval libovolné míchání operací SSE SIMD s operacemi MMU nebo x87 FPU.

Streaming SIMD Extensions 2 ( SSE2 ), představený s Pentiem 4 , dále rozšířil instrukční sadu x86 SIMD o celé číslo (8/16/32 bit) a podporu dat s plovoucí desetinnou čárkou s dvojitou přesností pro soubor registru XMM. SSE2 také umožnilo operačním kódům MMX ( operační kódy ) používat operandy registru XMM, rozšířené o ještě širší registry YMM a ZMM pozdějšími revizemi SSE.

MMX ve vestavěných aplikacích

Intel a Marvell s XScale mikroprocesor core počínaje PXA270 obsahovat SIMD instrukční sady architektury rozšíření na ARM architektuře jádra s názvem Intel Wireless MMX Technology (iwMMXt), které funkce jsou podobné těm z IA-32 MMX rozšíření. Poskytuje aritmetické a logické operace na 64bitových celočíselných číslech, ve kterých se software může rozhodnout provést dvě 32bitové, čtyři 16bitové nebo osm 8bitových operací v jedné instrukci. Rozšíření obsahuje 16 datových registrů 64 bitů a osm řídicích registrů 32 bitů. Ke všem registrům se přistupuje prostřednictvím standardního mechanismu mapování koprocesorů architektury ARM. iwMMXt zabírá koprocesory 0 a 1 a některé jeho operační kódy se střetávají s operačními kódy dřívějšího rozšíření s plovoucí desetinnou čárkou, FPA.

Pozdější verze ARM procesorů Marvell podporují bezdrátové operační kódy Wireless MMX (WMMX) i Wireless MMX2 (WMMX2).

Viz také

Reference

externí odkazy