MMX
# MMX

L'MMX è un instruction set SIMD, creato da Intel ed introdotto per la prima volta con i microprocessori Pentium MMX. Deriva da un oggetto simile incluso nell'i860. L'MMX è stato supportato in seguito dalla maggior parte dei processori IA-32 di Intel e di altri produttori.

Si è supposto che MMX fosse l'acronimo di MultiMedia eXtensions o di Multiple Math eXtension, sebbene ufficialmente Intel non abbia mai specificato il significato della sigla.

Per semplificare la progettazione gli ingegneri Intel decisero di preservare la vecchia architettura alla quale venne aggiunta l'unità MMX che operava tramite un cambio di contesto del processore. L'unità MMX utilizza i registri IA-32 della FPU. Questa infelice scelta progettuale impediva di utilizzare istruzioni in virgola mobile e istruzioni MMX contemporaneamente. Quando il processore incontrava istruzioni per la FPU doveva salvare i dati MMX per eseguire le istruzioni dell'FPU. Per massimizzare le prestazioni i programmatori utilizzavano il processore in uno solo dei due modi possibili, isolando le parti MMX che venivano eseguite in modo esclusivo in modo da evitare il più possibile i lenti cambi di contesto.

Un altro difetto delle istruzioni MMX è che erano istruzioni in grado di operare solo su dati interi. I registri a 64 bit della FPU venivano utilizzati per memorizzare 2 dati a 32 bit oppure 4 dati a 16 bit o 8 dati a 8 bit. Nell'architettura del i860 l'utilizzo di questi vettori formati da dati interi era sensato dato che questi vettori venivano utilizzati per la grafica 2D e 3D. Ma nei personal computer moderni la grafica viene gestita dalla scheda grafica e quindi il mancato supporto delle operazioni in virgola mobile rappresenta una grave mancanza.

Intel successivamente decise di espandere le istruzioni MMX e sviluppò le istruzioni SSE. Queste istruzioni erano anch'esse istruzioni SIMD ma supportavano operazioni in virgola mobile e utilizzavano registri separati a 128 bit. Questo consentiva l'utilizzo delle istruzioni SSE in contemporanea con la FPU e rappresentava un notevole miglioramento alle istruzioni MMX. Le istruzioni SSE vennero successivamente estese con le SSE2, poi le SSE3 e le SSE4 . Supportare questi set di istruzioni implica il supporto del MMX per retrocompatibilità.

L'azienda concorrente AMD implementò nei suoi processori le istruzioni MMX espandendole, chiamando il suo set di istruzioni 3DNow!.

