MMX (conjunto de instrucciones)

Conjunto de instrucciones diseñado por Intel

Pentium con MMX

MMX es una arquitectura de conjunto de instrucciones SIMD ( instrucción única, datos múltiples ) diseñada por Intel , introducida el 8 de enero de 1997 [1] [2] con su línea de microprocesadores basada en Pentium P5 (microarquitectura) , denominada "Pentium con tecnología MMX". [3] Se desarrolló a partir de una unidad similar introducida en el Intel i860 , [4] y anteriormente en el procesador de píxeles de vídeo Intel i750 . MMX es una capacidad complementaria del procesador que es compatible con los procesadores IA-32 de Intel y otros proveedores a partir de 1997. AMD también agregó el conjunto de instrucciones MMX en su procesador K6 . [actualizar]

El New York Times describió el impulso inicial, incluidos los anuncios del Super Bowl , como centrado en "una nueva generación de deslumbrantes productos multimedia, incluidos videoteléfonos y videojuegos 3D". [5]

MMX se ha ampliado posteriormente mediante varios programas de Intel y otros: 3DNow!, Streaming SIMD Extensions (SSE) y revisiones en curso de Advanced Vector Extensions (AVX).

Descripción general

Nombramiento

MMX es oficialmente una sigla sin significado [6] registrada por Intel; [7] extraoficialmente, las iniciales han sido explicadas de diversas maneras como si representaran

  • Extensión multimedia , [1] o
  • Extensión de matemáticas de matrices . [8]

Advanced Micro Devices (AMD), durante una de sus muchas batallas judiciales con Intel, presentó material de marketing de Intel indicando que MMX significaba "Matrix Math Extensions" (extensiones de matriz matemática). [ cita requerida ] Dado que una sigla no puede registrarse como marca, [ cita requerida ] este fue un intento de invalidar la marca registrada de Intel. En 1995, Intel presentó una demanda contra AMD y Cyrix Corp. por uso indebido de su marca registrada MMX. AMD e Intel llegaron a un acuerdo, y AMD reconoció a MMX como una marca registrada propiedad de Intel, e Intel otorgó a AMD los derechos para usar la marca registrada MMX como nombre de tecnología, pero no como nombre de procesador. [9]

Detalles técnicos

Procesador Pentium II con tecnología MMX

MMX define ocho registros de procesador , denominados MM0 a MM7, y las operaciones que se realizan en ellos. Cada registro tiene 64 bits de ancho y se puede utilizar para almacenar números enteros de 64 bits o varios números enteros más pequeños en un formato "comprimido": una instrucción se puede aplicar a dos números enteros de 32 bits, cuatro números enteros de 16 bits u ocho números enteros de 8 bits a la vez. [10]

MMX solo proporciona operaciones con números enteros. Cuando se desarrolló originalmente para el Intel i860 , el uso de matemáticas con números enteros tenía sentido (tanto los cálculos en 2D como en 3D lo requerían), pero a medida que las tarjetas gráficas que hacían gran parte de esto se volvieron comunes, el SIMD de números enteros en la CPU se volvió algo redundante para las aplicaciones gráficas. [ cita requerida ] Alternativamente, las operaciones aritméticas de saturación en MMX podrían [ vago ] acelerar significativamente algunas aplicaciones de procesamiento de señales digitales . [ cita requerida ]

Para evitar problemas de compatibilidad con los mecanismos de cambio de contexto de los sistemas operativos existentes, los registros MMX son alias de los registros de unidad de punto flotante (FPU) x87 existentes , que los cambios de contexto ya 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 trabajar con operaciones de punto flotante y SIMD en el mismo programa. [11] Para maximizar el rendimiento, el software a menudo usaba el procesador exclusivamente en un modo u otro, posponiendo el cambio relativamente lento entre ellos el mayor tiempo posible.

Cada registro MMX de 64 bits corresponde a la parte de mantisa de un registro x87 de 80 bits. Por lo tanto, los 16 bits superiores de los registros x87 no se utilizan en MMX y todos estos bits se configuran en unos, lo que los convierte en tipos de datos No es un número ( NaN ) o infinitos en la representación de punto flotante. Esto puede ser utilizado por el software para decidir si el contenido de un registro determinado está destinado a ser datos de punto flotante o SIMD.

Soporte de software

El soporte de software para MMX se desarrolló lentamente. [5] El compilador C de Intel y las herramientas de desarrollo relacionadas obtuvieron capacidades intrínsecas para invocar instrucciones MMX e Intel lanzó bibliotecas de algoritmos vectorizados comunes que usaban MMX. Tanto Intel como Metrowerks intentaron la vectorización automática en sus compiladores, pero las operaciones en el lenguaje de programación C no se correspondían bien con el conjunto de instrucciones MMX y, a partir del año 2000, los algoritmos personalizados generalmente todavía tenían que escribirse en lenguaje ensamblador . [11]

Sucesores

AMD, un proveedor de microprocesadores x86 competidor , mejoró el MMX de Intel con su propio conjunto de instrucciones 3DNow !. 3DNow es más conocido por agregar soporte de punto flotante de precisión simple (32 bits) al conjunto de instrucciones SIMD, entre otras mejoras de números enteros y más generales.

Después de MMX, la siguiente extensión x86 importante de Intel fue Streaming SIMD Extensions (SSE), introducida con la familia Pentium III [12] en 1999, [13] aproximadamente un año después de que se introdujera 3DNow! de AMD.

SSE abordó las deficiencias principales de MMX (la imposibilidad de mezclar operaciones SIMD de números enteros con operaciones de punto flotante) creando 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 de números enteros se seguían realizando utilizando el registro MMX y el conjunto de instrucciones. Sin embargo, el nuevo archivo de registro XMM permitió que las operaciones SIMD de SSE se mezclaran libremente con operaciones MMX o FPU x87.

Streaming SIMD Extensions 2 ( SSE2 ), introducido con el Pentium 4 , amplió aún más el conjunto de instrucciones SIMD x86 con compatibilidad con datos de punto flotante de precisión doble y enteros (8/16/32 bits) para el archivo de registro XMM. SSE2 también permitió que los códigos de operación MMX ( opcodes ) utilizaran operandos de registro XMM, que se extendieron a registros YMM y ZMM aún más amplios mediante revisiones posteriores de SSE.

MMX en aplicaciones integradas

El núcleo de microprocesador XScale de Intel y Marvell Technology Group , a partir del 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), cuyas funciones son similares a las de la extensión IA-32 MMX. [14] [15] [16] Proporciona operaciones aritméticas y lógicas sobre números enteros de 64 bits, en las que el software puede optar por realizar en su lugar dos operaciones de 32 bits, cuatro de 16 bits u ocho de 8 bits en una 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 mapeo de coprocesador de arquitectura ARM estándar. iwMMXt ocupa el espacio de los coprocesadores 0 y 1, y algunos de sus códigos de operación entran en conflicto con los códigos de operación de la extensión de punto flotante anterior, FPA. [ cita requerida ]

Las versiones posteriores de los procesadores ARM de Marvell admiten códigos de operación Wireless MMX (WMMX) y Wireless MMX2 (WMMX2).

Véase también

Referencias

  1. ^ ab "Los fabricantes presentan PCs con el chip MMX de Intel". The New York Times . 9 de enero de 1997. Archivado desde el original el 13 de enero de 2019 . Consultado el 13 de enero de 2019 . La nueva tecnología de extensión multimedia de Intel, llamada MMX, ...
  2. ^ Ch, Rajiv; rasekaran (8 de enero de 1997). «Intel presentará un chip Pentium más rápido». The Washington Post . Archivado desde el original el 14 de enero de 2019. Consultado el 13 de enero de 2019 .
  3. ^ "Procesadores Pentium integrados con tecnología MMX". Intel . Archivado desde el original el 11 de agosto de 2010 . Consultado el 28 de julio de 2007 .
  4. ^ Mittal, Millind; Peleg, Alex; Weiser, Uri (1997). «Descripción general de la arquitectura de la tecnología MMX» (PDF) . Intel Technology Journal . 1 (3). Archivado (PDF) desde el original el 4 de marzo de 2016. Consultado el 29 de octubre de 2015 .
  5. ^ ab Calem, Robert E. (24 de enero de 1997). «MMX de Intel: la tecnología detrás del alboroto». The New York Times . Archivado desde el original el 13 de enero de 2019. Consultado el 13 de enero de 2019 .
  6. ^ Tanaka, Jennifer (16 de febrero de 1997). "A new chip off the block". Newsweek . Archivado desde el original el 31 de agosto de 2019. Consultado el 31 de agosto de 2019. el nombre, que no significa nada.
  7. ^ "Intel | Soluciones para centros de datos, IoT e innovación en PC". Archivado desde el original el 17 de diciembre de 2013 . Consultado el 17 de diciembre de 2013 .
  8. ^ Zhang, Peng (1 de enero de 2010). "CAPÍTULO 5 - Microprocesadores". Tecnología de control industrial avanzada . (12) Tecnología MMX: William Andrew Publishing. págs. 155–214. ISBN 978-1-4377-7807-6. Recuperado el 2 de junio de 2024 .{{cite book}}: Mantenimiento de CS1: ubicación ( enlace )
  9. ^ "Intel y Advance Micro llegan a un acuerdo sobre la marca registrada de un chip". The New York Times . 22 de abril de 1997. Archivado desde el original el 13 de enero de 2019 . Consultado el 13 de enero de 2019 .
  10. ^ Pfeiffer, Joseph J. Jr. (1997). «Microarquitectura MMX de procesadores Pentium con tecnología MMX y microprocesadores Pentium II» (PDF) . Intel Technology Journal . Archivado desde el original (PDF) el 12 de enero de 2011. Consultado el 1 de septiembre de 2017 .
  11. ^ ab Conte, G.; Tommesani, S.; Zanichelli, F. (2000). El largo y tortuoso camino hacia el procesamiento de imágenes de alto rendimiento con MMX/SSE (PDF) . Actas del Taller internacional IEEE sobre arquitecturas informáticas para la percepción de máquinas. Archivado desde el original (PDF) el 28 de enero de 2016.
  12. ^ Kay, Alan S. (26 de febrero de 1999). "Pentium III: Buy the Numbers?" [¿Comprar los números?]. The Washington Post . Archivado desde el original el 15 de abril de 2019. Consultado el 13 de enero de 2019 .
  13. ^ "Salón de la fama de los microprocesadores". Museo Intel . Archivado desde el original el 6 de abril de 2008.
  14. ^ "Intel incorpora la tecnología MMX™ a los dispositivos inalámbricos basados ​​en la arquitectura Intel® Personal Internet Client" . Consultado el 28 de julio de 2022 .
  15. ^ "Intel ofrece procesadores de última generación diseñados específicamente para teléfonos móviles y PDA inalámbricos". Archivado desde el original el 2 de enero de 2012 . Consultado el 28 de julio de 2022 .
  16. ^ "¿La tarjeta CPU integrada PXA270 más pequeña del mundo?". EE Times . 15 de septiembre de 2004. Consultado el 28 de julio de 2022 .
  • Guía de intrínsecos de Intel
  • Documentación del procesador Intel Pentium con tecnología MMX
  • Manual del desarrollador de software IA, vol. 1 (PDF), consulte el capítulo 8 para la programación MMX
Obtenido de "https://es.wikipedia.org/w/index.php?title=MMX_(conjunto_de_instrucciones)&oldid=1243214920"