# MMX

MMX segons la taxonomia de Flynn és un repertori d'instruccions SIMD dissenyat per Intel, introduït el 1997 en la línia de microprocessadors Pentium, designat com "Pentium amb Tecnologia MMX". Es va desenvolupar a partir d'una unitat similar, que es va introduir per primera vegada a l'Intel i860. S'ha suportat en la majoria de microprocessadors posteriors IA-32 per Intel i altres fabricants.
AMD, el competidor d'Intel, implementa el repertori d'instruccions en coma flotant 3DNow!, per combatre MMX. Intel dos anys més tard, implementa l'extensió matemàtica SSE per treballar en coma flotant.

## Nomenclatura

MMX té oficialment un sentit d'acrònim d'una marca registrada per Intel; extraoficialment, les inicials s'han explicat de diverses maneres com MultiMedia eXtension, Multiple Math eXtension, o Matrix Math eXtension.
AMD, durant una de les seves nombroses batalles als tribunals amb Intel, produïdes a partir del material de màrqueting per Intel indicant que MMX era un extensió matemàtica per a matrius ("Matrix Math Extensions"). La idea que està en el seu propi material de màrqueting per a res és una posició de l'empresa Intel, pretén suggerir que és de marca registrada i no pot ser utilitzada per AMD x86 o d'altres fabricants clònics

## Detalls tècnics

MMX afegeix vuit nous registres a l'arquitectura, coneguts com a MM0 fins MM7 (en endavant MMn). Realment, aquests nous "registres" són només un àlies per l'actual pila de registres x87 FPU. Per tant, qualsevol cosa que es faci a la pila de coma flotant (Floating Point, FP) pot també afectar els registres MMX. A diferència de la pila FP, aquests registres MMn es van arreglar, no relativament, per tant aquests són accessibles d'un mode aleatori.
Cada un dels registres MMn pot suportar un enter de 64 bits. Això no obstant, un dels principals conceptes del repertori d'instruccions MMX és el concepte dels tipus de dades empaquetats, la qual cosa significa que en lloc d'utilitzar tot el registre per un enter simple de 64 bits (quadword), es poden utilitzar: dos enters de 32 bits (doubleword), quatre enters de 16 bits (word) o vuit enters de 8 bits(byte).
Per simplificar el disseny i per evitar canviar el sistema operatiu per a preservar l'estat addicional a través dels interruptors de context, MMX reutilitza els vuit registres existents FPU de IA-32. Això fa difícil treballar amb coma flotant i amb dades SIMD al mateix temps. Per augmentar el rendiment, els programadors han d'utilitzar exclusivament el processador en un mode o en un altre, ajornant el canvi, relativament lent entre ells, tant com sigui possible.
També perquè els registres MMX de 64 bits MMn són àlies de pila de la FPU, i cada un dels registres de la pila té una amplada de 80 bits, els 16 bits registres superiors de la pila no utilitzats en MMX, i aquests bits són establerts tots a uns, que el fan semblar com un NaN o infinits des del punt de vista de coma flotant. Això fa que sigui més fàcil de dir si està treballant està amb dades de coma flotant o MMX.
Un altre problema de MMX és que només proporciona operacions per a enters. Cada un dels vuit registres de vectors de 64 bits de MMX, àlies dels vuit registres de coma flotant existents, poden representar dos enters de 32 bits, quatre enters curts de 16 bits, o vuit octets de 8 bits. Quan es va desenvolupar originàriament el i860, va donar sentit la utilització d'un enter vectoritzat (tant 3D com 2D necessitaven aquesta configuració), però com els sistemes es van traslladar a la utilització de targetes gràfiques per fer aquesta tasca MMX va caure a favor, i la unitat de coma flotant vectoritzada va convertir-se en més important. Per un altre cantó, aquestes noves operacions aritmètiques no inclouen operacions de saturació aritmètica, que podien simplificar i accelerar enormement la velocitat d'algunes aplicacions de digital signal processing.

## Successor

Intel avorta les diferències de la tecnologia MMX a través de SSE, una bona expansió del repertori d'instruccions de SIMD amb suport de coma flotant de 32 bits i un conjunt addicional de vectors de registres de 128-bit que faciliten la realització d'operacions SIMD i FPU al mateix temps. SSE es va ampliar al seu torn amb SSE2, que també expandeixen les instruccions MMX per tal que puguin operar en registres XMM de 128 bits (després les extensions SSE poden suportar operacions de dades enteres als registres MMX perquè els nous registres SSE necessiten el del sistema operatiu, fins SSE4, que finalitza aquest suport) i recentment amb SSE4.2, introduïda en Intel Core microarquitectura. Suportar alguns d'aquests repertoris d'instruccions posteriors implica suport per a MMX.

## MMX en aplicacions incrustades

El processador XScale d'Intel començant amb PXA270 inclou una extensió al nucli ARM anomenada iwMMXt les seves funcions són similars a les de l'extensió MMX en IA-32. IwMMXt està a favor de la "Tecnologia sense fils MMX d'Intel". Proporciona l'aritmètica i la lògica de les operacions amb nombres enters de 64 bits (el programari pot decidir fer operacions amb dos de 32 bit, quatre de 16 bits o vuit de 8 bits en una única instrucció). L'extensió conté 16 registres de dades de 64 bits i 8 registres de control de 32 bits. Tots els registres són accessibles per mitjà del mecanisme de mapatge del coprocessador de l'arquitectura ARM. IwMMXt ocupa l'espai dels coprocessadors 0 i 1, i els seus codis d'operació coincideixen amb els codis d'operació de l'anterior extensió de coma flotant, FPA.

## Referències

* ↑ «BDTI - Intel MMX Pentium». Arxivat de l'original el 2007-09-27. [Consulta: 15 desembre 2008].
* ↑ Intel Pentium Processors with MMX™ Technology for Embedded Computing - Overview
* ↑ «Controversy brews over use of MMX moniker - Intel's multimedia extension - Industry Trend or Event». Arxivat de l'original el 2012-07-19. [Consulta: 19 juliol 2012].

## Enllaços externs

* Intel Pentium Processor with MMX Technology Documentation (anglès)
* The MMX Instruction Set Arxivat 2008-06-02 a Wayback Machine. from The Art of Assembly Language Arxivat 2008-06-03 a Wayback Machine. (anglès)
* IA Software Developer's Manual, Vol 1 (PDF) Arxivat 2009-01-24 a Wayback Machine., see chapter 8 for MMX programming (anglès)