MMX (conjunto de instrucciones)
MMX es una arquitectura de conjunto de instrucciones de instrucción única, datos múltiples (SIMD) diseñada por Intel, presentada el 8 de enero de 1997 con su línea basada en Pentium P5 (microarquitectura). de microprocesadores, denominada "Pentium con tecnología MMX". Se desarrolló a partir de una unidad similar introducida en el Intel i860 y, anteriormente, en el procesador de píxeles de video Intel i750. MMX es una capacidad complementaria del procesador compatible con los procesadores IA-32 de Intel y otros proveedores a partir de 1997.
The New York Times describió el impulso inicial, incluidos los anuncios del Super Bowl, como centrado en "una nueva generación de productos multimedia deslumbrantes, incluidos videoteléfonos y videojuegos en 3D".
MMX se ha ampliado posteriormente con varios programas de Intel y otros: 3DNow!, Streaming SIMD Extensions (SSE) y revisiones continuas de Advanced Vector Extensions (AVX).
Resumen
Nombramiento
MMX es oficialmente una sigla sin sentido registrada por Intel; extraoficialmente, las iniciales se han explicado de diversas formas como sinónimo de
- MultiMedia eXtension,
- EXtensión de matemáticas múltiples, o
- Matrix Math eXtension.
Advanced Micro Devices (AMD), durante una de sus muchas batallas judiciales con Intel, produjo material de marketing de Intel que indicaba que MMX significaba "Matrix Math Extensions". Dado que un inicialismo no puede ser una marca registrada, este fue un intento de invalidar la marca registrada de Intel. En 1995, Intel presentó una demanda contra AMD y Cyrix Corp. por mal uso de su marca comercial MMX. AMD e Intel llegaron a un acuerdo, AMD reconoció a MMX como una marca comercial propiedad de Intel e Intel otorgó a AMD los derechos para usar la marca comercial MMX como nombre de tecnología, pero no como nombre de procesador.
Detalles técnicos
MMX define ocho registros de procesador, denominados MM0 a MM7, y las operaciones que operan en ellos. Cada registro tiene 64 bits de ancho y se puede utilizar para contener enteros de 64 bits o varios enteros más pequeños en un registro "empaquetado" formato: una instrucción se puede aplicar a dos enteros de 32 bits, cuatro enteros de 16 bits u ocho enteros de 8 bits a la vez.
MMX solo proporciona operaciones con números enteros. Cuando se desarrolló originalmente, para el Intel i860, el uso de matemáticas enteras tenía sentido (los cálculos 2D y 3D lo requerían), pero como las tarjetas gráficas que hacían mucho de esto se volvieron comunes, el SIMD entero en la CPU se volvió algo redundante para las aplicaciones gráficas. Alternativamente, las operaciones aritméticas de saturación en MMX podrían acelerar significativamente algunas aplicaciones de procesamiento de señales digitales.
Para evitar problemas de compatibilidad con los mecanismos de cambio de contexto en los sistemas operativos existentes, los registros MMX son alias para los registros de unidad de punto flotante (FPU) x87 existentes, cuyos cambios de contexto ya se guardarían y restaurarían. A diferencia de los registros x87, que se comportan como una pila, los registros MMX son directamente direccionables (acceso aleatorio).
Cualquier operación que involucre la pila de punto flotante también podría afectar los registros MMX y viceversa, por lo que este alias dificulta el trabajo con operaciones de punto flotante y SIMD en el mismo programa. Para maximizar el rendimiento, el software a menudo usaba el procesador exclusivamente en un modo u otro, aplazando el cambio relativamente lento entre ellos tanto como fuera posible.
Cada registro MMX de 64 bits corresponde a la parte de la mantisa de un registro x87 de 80 bits. Los 16 bits superiores de los registros x87 no se usan en MMX, y estos bits se establecen en unos, lo que los convierte en tipos de datos No es un número (NaN), o infinitos en la representación de coma flotante. Esto puede ser utilizado por el software para decidir si el contenido de un registro determinado está destinado a datos de punto flotante o SIMD.
Soporte de software
El soporte de software para MMX se desarrolló lentamente. El Compilador C de Intel y las herramientas de desarrollo relacionadas obtuvieron intrínsecos para invocar instrucciones MMX e Intel lanzó bibliotecas de algoritmos vectorizados comunes utilizando MMX. Tanto Intel como Metrowerks intentaron la vectorización automática en sus compiladores, pero las operaciones en el lenguaje de programación C se correspondían mal con el conjunto de instrucciones MMX y, a partir del año 2000, los algoritmos personalizados todavía tenían que escribirse en lenguaje ensamblador.
Sucesores
AMD, un proveedor de microprocesadores x86 de la competencia, mejoró el MMX de Intel con su propio 3DNow! conjunto de instrucciones. 3DNow es mejor conocido por agregar soporte de punto flotante de precisión simple (32 bits) al conjunto de instrucciones SIMD, entre otras mejoras generales y enteras.
Después de MMX, la siguiente gran extensión x86 de Intel fue Streaming SIMD Extensions (SSE), presentada con la familia Pentium III en 1999, aproximadamente un año después de AMD's 3DNow! Fue presentado.
SSE abordó las principales deficiencias de MMX (incapacidad para combinar operaciones SIMD enteras con operaciones de punto flotante) mediante la creación de un nuevo archivo de registro de 128 bits de ancho (XMM0–XMM7) y nuevas instrucciones SIMD para él. Al igual que 3DNow!, SSE se centró exclusivamente en operaciones de punto flotante de precisión simple (32 bits); Las operaciones SIMD enteras aún se realizaban utilizando el registro MMX y el conjunto de instrucciones. Sin embargo, el nuevo archivo de registro XMM permitió que las operaciones SSE SIMD se combinaran libremente con operaciones MMX o x87 FPU.
Streaming SIMD Extensions 2 (SSE2), introducido con el Pentium 4, amplió aún más el conjunto de instrucciones x86 SIMD con enteros (8/16/32 bits) y soporte de datos de punto flotante de precisión doble para el archivo de registro XMM. SSE2 también permitió que los códigos de operación (códigos de operación) de MMX usaran operandos de registro XMM, extendidos a registros YMM y ZMM aún más amplios por revisiones posteriores de SSE.
MMX en aplicaciones integradas
El núcleo del microprocesador XScale de Intel y Marvell Technology Group, que comienza con PXA270, incluye una extensión de la arquitectura del conjunto de instrucciones SIMD para el núcleo de la arquitectura ARM denominada Intel Wireless MMX Technology (iwMMXt) que Las funciones son similares a las de la extensión IA-32 MMX. Proporciona operaciones aritméticas y lógicas en números enteros de 64 bits, en los que el software puede optar por realizar dos operaciones de 32 bits, cuatro de 16 bits u ocho de 8 bits en una sola instrucción. La extensión contiene 16 registros de datos de 64 bits y ocho registros de control de 32 bits. Se accede a todos los registros a través del mecanismo de asignación de coprocesador de la arquitectura ARM estándar. iwMMXt ocupa el espacio de los coprocesadores 0 y 1, y algunos de sus códigos de operación chocan con los códigos de operación de la extensión de coma flotante anterior, FPA.
Las versiones posteriores de los procesadores ARM de Marvell son compatibles con los códigos de operación Wireless MMX (WMMX) y Wireless MMX2 (WMMX2).
Contenido relacionado
Interferencia entre símbolos
DirectX
Henry Woodward (inventor)