MMX

MMX er et IA-32 SIMD instruksjonssett som ble introdusert 22. november 1996 i mikroprosessoren Intel MMX Pentium. MMX har sin opprinnelse i et lignende instruksjons-sett som ble introdusert i Intel i860 i 1989.

Selv om MMX er et meningsløst akronym, har det uoffisielt blitt tolket som MultiMedia eXtension (multimediautvidelse). Intel valgte en meningsløs forkortelse, med den juridiske begrunnelsen at det som varemerke ikke kunne benyttes av AMD eller andre produsenter av x86 kloner. 

AMD på sin side reagerte med å utvikle en forbedret utgave av MMX i sine prosessorer, som de kalte 3DNow!.

MMX består av 57 instruksjoner som akselererer utførelsen av multimedia-operasjoner (lyd og bilde).

MMX tilføyde 8 nye virtuelle registre, kjent som MM0 til MM7, som var aliaser for de 8 allerede eksisterende x87 desimaltallsregistrene. Dette ble gjort for å unngå at eksisterende operativsystemer måtte endres for å dra nytte av instruksjonene ved å mellomlagre data ved kontekst-skifter. Ulempen med dette er at det er vanskelig å arbeide med SIMD og desimaltall samtidig. For å optimalisere ytelsen, må programmerere utsette kontekst-skifter mellom SIMD og desimaltall så lenge som mulig.

I motsetning til desimaltallsregistrene, er MMX-registrene fastsatte (ikke relative), og kan aksesseres når som helst.

Hvert MMn-register inneholder et 64-bit heltall. Dette gjør det mulig for prosessoren å behandle ét 64-bit heltall, to 32-bit heltall, fire 16-bit heltall eller åtte 8-bits heltall i en enkelt operasjon.

Ettersom hvert MMn-register er 64-bit, mens de fysiske registrene er 80-bit, er de 16 øverste bit i hvert register ubrukt i MMX. De settes alle til 1, noe som gjør det enklere å skille mellom desimaltall og MMX-data.

MMX kan øke hastigheten på digital signalbehandling betraktelig. Den store ulempen er at MMX bare opererer med heltall. På den opprinnelige Intel i860 var vektoriserte heltalls-beregninger nødvendige under arbeidet med 2D og 3D bilder. Etterhvert som grafikk-kortene ble mer avanserte, ble grafikken håndtert ved hjelp av vektoriserte desimaltallsberegninger.

Intel XScale inkluderer (fra og med PXA270) en utvidelse av ARM-kjernen som kalles iwMMXt (Intel Wireless MMX Technology). Dette er en MMX-utvidelse med 16 stk 64-bit dataregistre og 8 stk 32-bit kontroll-registre. Alle registrene aksesseres av koprosessor-mekanismen i ARM-arkitekturen. IwMMXt lagres i koprosessorenes 0 og 1 adresserom, og dens opkoder sammenfaller med en tidligere desimaltall-utvidelse kalt Floating Point Accelerator.

Begrensningene ved MMX, og konkurransen fra AMDs 3DNow!,  førte til at Intel utviklet en forbedret SIMD-arkitektur for multimedia kalt SSE.

Se også
3DNow!
SSE
SSE2
SSE3

x86-instruksjoner
SIMD
IT-relaterte introduksjoner i 1996
1996 i USA