Az MMX ( Multi média Extensions - multimedia extensions ) az Intel által kifejlesztett kiegészítő SIMD utasításkészlet kereskedelmi neve, amelyet először 1997-ben vezettek be a Pentium MMX processzorvonal mellett . Az utasításkészletet úgy tervezték, hogy felgyorsítsa a streaming audio- és videoadatok kódolási/dekódolási folyamatát. Ez az i860 mikroprocesszorban javasolt technológiák továbbfejlesztése [1] . Az izraeli haifai Intel laboratóriumában fejlesztették ki az 1990 - es évek első felében [2] [3] .
Mára az 1997-ben bemutatott MMX utasításkészlet őszintén szólva elavult, és már régóta felváltották az SSE és az AVX különféle verziói . A fejlesztési eszközökben azonban formálisan továbbra is támogatott; azonban a használat ritkasága miatt a megvalósítás számos hibával küzd. Ezért vannak javaslatok az LLVM fordítók népszerű készletéből való eltávolítására [4] .
Az MMX kiterjesztés nyolc 64 bites nyilvános regisztert tartalmaz (MM0-MM7). A meglévő operációs rendszerek processzorkörnyezetváltási módszereivel való kompatibilitás érdekében az Intel nyolc MMX regisztert kénytelen volt a processzorszoftver modelljében nyolc FPU regiszter mantisszával kombinálni . Hardverben ezek különböző eszközök lehetnek, de a programozó szempontjából ugyanazok a regiszterek. Így nem használhatja egyszerre a matematikai társprocesszort és az MMX parancsokat.
Az MMX technológia utasításai 64 bites teljes hosszúságú csoportokba ( vektorok ) vagy egyedi 64 bites szavakba csomagolt egész adatokat dolgoznak fel. Az ilyen adatok a memóriában vagy nyolc MMX regiszterben tárolhatók.
Az MMX technológia parancsai a következő adattípusokkal működnek:
Az MMX parancsok szintaxisa a következő: instruction [dest, src] Itt az utasítás a parancs neve, a dest a kimeneti operandus, az src a bemeneti operandus.
A parancsrendszert 57 utasítás alkotja, amelyek lehetővé teszik több adatelem párhuzamos feldolgozását [5] . A legtöbb parancsnak van egy utótagja , amely meghatározza az adattípust és a használt aritmetikát:
Az utasítások következő csoportjai különböztethetők meg [5] :
Az MMX utasítások végrehajtása nem változtatja meg az FPU állapotszó feltételjelzőit, kivéve a TOP mezőt. Az MMX regiszterek név szerint közvetlenül elérhetők, ellentétben az FPU regiszterekkel, amelyek egy verembe vannak rendezve, amelynek tetejét az FPU állapotszó TOP mezője határozza meg. Ebben az esetben a TOP mező alaphelyzetbe áll minden MMX utasítás végrehajtása után. Az MMX utasítások végrehajtása bármely processzor módban lehetséges [5] .
Az Intel XScale processzorcsalád a PXA270 modelltől kezdve az IA-32 MMX kiterjesztéshez hasonlóan iwMMXt nevű kiegészítést tartalmaz az ARM utasításkészlethez.
x86 processzor utasításkészletek | |
---|---|
Intel | |
AMD | |
Cyrix |