MMX (utasításkészlet) - MMX (instruction set)

Pentium MMX -el

MMX egy egyedi utasítás több adat ( SIMD ) utasításkészlet architektúra által tervezett Intel bevezette január 8-án, 1997 a Pentium P5 (mikroarchitektúra) alapú vonal mikroprocesszorok , neve „Pentium MMX technológia”. Az Intel i860 -on és a korábbi Intel i750 video pixeles processzoron bemutatott hasonló egységből alakult ki . Az MMX egy processzor-kiegészítő képesség , amelyet 1997-től az Intel és más gyártók támogatnak az IA-32 processzorokon.

A New York Times a kezdeti nyomást, beleértve a Super Bowl- reklámokat is, úgy írta le , mint "a fényes multimédiás termékek új generációjára, beleértve a videotelefonokat és a 3D-s videojátékokat".

Az MMX -t később az Intel és mások több programja is kiterjesztette: 3DNow! , Streaming SIMD Extensions (SSE), és az Advanced Vector Extensions (AVX) folyamatos felülvizsgálatai .

Áttekintés

Elnevezés

Az MMX hivatalosan egy értelmetlen inicializmus, amelyet az Intel védjegye ; nem hivatalosan, a kezdőbetűket különböző módon magyarázták, hogy állnak

  • MultiMedia eXtension ,
  • Több Math eXtension , vagy
  • Matrix Math eXtension .

Az Advanced Micro Devices (AMD), az Intellel folytatott számos bírósági csatája során, az Intel marketinganyagait készítette, jelezve, hogy az MMX a "Matrix Math Extensions". Mivel a kezdőbetű nem védjegy, ez az Intel védjegyének érvénytelenítésére tett kísérlet. 1995 -ben az Intel keresetet nyújtott be az AMD és a Cyrix Corp. ellen az MMX védjegyével való visszaélés miatt. Az AMD és az Intel megegyeztek, az AMD az MMX -et az Intel tulajdonában álló védjegyként ismerte el, az Intel pedig az AMD -nek adta meg az MMX védjegy technológiai névként való használatát, de nem processzornevet.

Műszaki információk

Pentium II processzor MMX technológiával

Az MMX nyolc processzorregisztert határoz meg , az MM0 -tól MM7 -ig, és az ezeken működő műveleteket. Minden regiszter 64 bit széles, és használható 64 bites egész számok vagy több kisebb egész szám tárolására „csomagolt” formátumban: egy utasítás ezután két 32 bites, négy 16 bites vagy nyolc 8 bites egész számok egyszerre.

Az MMX csak egész műveleteket biztosít. Eredeti fejlesztéskor az Intel i860 esetében értelmes volt az egész számok használata (mind a 2D, mind a 3D számítások megkövetelték), de mivel a grafikus kártyák, amelyek sokat tettek ebből, általánossá váltak, a CPU -ban lévő egész SIMD némileg feleslegessé vált a grafikus alkalmazások számára. Alternatív megoldásként az MMX telítési aritmetikai műveletei jelentősen felgyorsíthatják egyes digitális jelfeldolgozó alkalmazásokat.

A meglévő operációs rendszerek kontextusváltási mechanizmusaival való kompatibilitási problémák elkerülése érdekében az MMX regiszterek a meglévő x87 lebegőpontos egység (FPU) regiszterek álnevei , amelyeket a kontextusváltók már mentenének és visszaállítanának. Ellentétben a x87 nyilvántartások, amelyek úgy viselkednek, mint egy halom , a MMX regiszterek mindegyike közvetlenül címezhető (random access).

A lebegőpontos veremmel kapcsolatos bármely művelet hatással lehet az MMX regiszterekre és fordítva, így ez az álnevesítés megnehezíti a lebegőpontos és SIMD műveletek végrehajtását ugyanazon a programon. A teljesítmény maximalizálása érdekében a szoftverek gyakran kizárólag az egyik vagy másik üzemmódban használták a processzort, és a lehető leghamarabb elhalasztották a köztük lévő viszonylag lassú kapcsolást.

Mindegyik 64 bites MMX regisztrálja megfelel a mantissza része egy 80-bites x87 regiszter. Az x87 regiszterek felső 16 bitje így használaton kívül marad az MMX-ben, és ezek a bitek mindegyike eggyel van beállítva, így nem szám ( NaN ) adattípusok vagy végtelenek a lebegőpontos ábrázolásban. Ezt a szoftverek használhatják annak eldöntésére, hogy egy adott regiszter tartalma lebegőpontos vagy SIMD adatnak szánt-e.

Szoftver támogatás

Az MMX szoftvertámogatása lassan fejlődött. Intel C Compiler és a kapcsolódó fejlesztési eszközök megszerzésének intrinsics utalva, MMX utasításokat, és az Intel kiadta a könyvtárak közös vectorized algoritmusok használatával MMX. Mind az Intel, mind a Metrowerks megkísérelte az automatikus vektorizálást fordítóiban, de a C programozási nyelvű műveletek rosszul lettek leképezve az MMX utasításkészletre és az egyedi algoritmusokra 2000 óta jellemzően még mindig assembly nyelven kellett írni .

Utódok

Az AMD, a versengő x86 mikroprocesszor -gyártó, továbbfejlesztette az Intel MMX -jét saját 3DNow -jával! utasításkészlet. A 3DNow leginkább arról ismert, hogy egyetlen pontos (32 bites) lebegőpontos támogatást ad a SIMD utasításkészlethez, többek között egész és általánosabb fejlesztések mellett.

Az MMX után az Intel következő nagy x86 -os bővítménye a Streaming SIMD Extensions (SSE) volt, amelyet 1999 -ben mutattak be a Pentium III családdal, nagyjából egy évvel az AMD 3DNow! vezették be.

Az SSE orvosolta az MMX alapvető hiányosságait (képtelenség összekeverni a SIMD opciókat bármilyen lebegőpontos opcióval) új 128 bites széles nyilvántartási fájl (XMM0 – XMM7) és új SIMD utasítás létrehozásával. A 3DNow! -Hoz hasonlóan az SSE kizárólag az egypontos lebegőpontos műveletekre összpontosított (32 bites); az egész SIMD műveleteket továbbra is az MMX regiszter és az utasításkészlet segítségével hajtották végre. Az új XMM regiszterfájl azonban lehetővé tette az SSE SIMD műveletek szabad keverését MMX vagy x87 FPU opciókkal.

A Streaming SIMD Extensions 2 ( SSE2 ), amelyet a Pentium 4- gyel mutattak be, tovább bővítette az x86 SIMD utasításkészletet egész számmal (8/16/32 bit) és dupla pontosságú lebegőpontos adatszolgáltatással az XMM regiszterfájlhoz. Az SSE2 lehetővé tette az MMX műveleti kódok ( opkódok ) számára az XMM regiszter operandusok használatát, amelyet a későbbi SSE felülvizsgálatok még szélesebb körű YMM és ZMM regiszterekre is kiterjesztettek.

MMX a beágyazott alkalmazásokban

Intel és Marvell Technology Group „s XScale mikroprocesszor mag kezdve PXA270 tartalmaznak SIMD utasításkészlet architektúra kiterjesztése a ARM architektúra lényege elemzi Intel Wireless MMX Technology (iwMMXt) mely funkciók hasonlóak az IA-32 MMX kiterjesztése. Aritmetikai és logikai műveleteket biztosít 64 bites egész számokon, amelyekben a szoftver két 32 bites, négy 16 bites vagy nyolc 8 bites műveletet hajthat végre egy utasításban. A kiterjesztés 16 64 bites adatregisztert és 8 32 bites vezérlőregisztert tartalmaz. Az összes regiszter a szabványos ARM architektúra koprocesszoros leképezési mechanizmusán keresztül érhető el. Az iwMMXt 0 és 1 társprocesszorokat foglal el, és néhány opkódja ütközik a korábbi lebegőpontos kiterjesztés, az FPA opkódjaival.

A Marvell ARM processzorainak későbbi verziói támogatják a vezeték nélküli MMX (WMMX) és a vezeték nélküli MMX2 (WMMX2) opkódokat.

Lásd még

Hivatkozások

Külső linkek