MMX

De Viquipèdia
Dreceres ràpides: navegació, cerca

MMX segons la taxonomia de Flynn és un repertori d'instruccions SIMD dissenyat per Intel, introduït en 1997 en la línia de microprocessadors Pentium, designat com "Pentium amb Tecnologia MMX".[1][2] 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 punt flotant 3DNow!, per combatre MMX. Intel dos anys més tard, implementa l'extensió matemàtica SSE per treballar en punt flotant .

Nomenclatura[modifica | modifica el codi]

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[3]

Detalls tècnics[modifica | modifica el codi]

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 punt flotant (Floating Point, FP) pot també afectar als 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 punt 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 64bits 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 utilitzants 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 punt flotant. Això fa que sigui més fàcil de dir si està treballant està amb dades de punt 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 punt 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 punt 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[modifica | modifica el codi]

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 punt 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 empotrades[modifica | modifica el codi]

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 realitzar operacions amb dos de 32 bit, quatre de 16 bit o vuit de 8 bits en una única instrucció). L'extesió 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 mapeig 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 punt flotant, FPA.

Referències[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]