Top Qs
Línea de tiempo
Chat
Contexto
MMX
De Wikipedia, la enciclopedia libre
Remove ads
MMX es un conjunto de instrucciones SIMD diseñado por Intel e introducido en 1997 en sus microprocesadores Pentium MMX. Fue desarrollado a partir de un set introducido en el Intel i860. Ha sido soportado por la mayoría de fabricantes de microprocesadores x86 desde entonces.
Fue presentado como un acrónimo de MultiMedia eXtension o Multiple Math o Matrix Math eXtension, pero oficialmente solo es un juego de consonantes sin significado, usado con la única intención de poder poner cortapisas legales de marca registrada a los desarrollos de terceros que trataran de usarlo.
Remove ads
Historia
Resumir
Contexto
Denominación
MMX es oficialmente una sigla sin sentido[1] registrada por Intel;[2] extraoficialmente, las iniciales se han explicado de diversas maneras como si representaran
Advanced Micro Devices (AMD), durante uno de sus numerosos litigios con Intel, presentó material de marketing de Intel que indicaba que MMX significaba "Matrix Math Extensions". Dado que una sigla no puede registrarse como marca, este fue un intento de invalidar la marca registrada de Intel. En 1995, Intel demandó a AMD y Cyrix Corp. por uso indebido de su marca registrada MMX. AMD e Intel llegaron a un acuerdo: AMD reconoció MMX como 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.[5]
Detalles técnicos

MMX define ocho registros de procesador, denominados MM0 a MM7, y las operaciones que los operan. Cada registro tiene 64 bits de ancho y puede almacenar enteros de 64 bits o varios enteros menores en formato comprimido: una instrucción puede aplicarse a dos enteros de 32 bits, cuatro enteros de 16 bits u ocho enteros de 8 bits a la vez.[6]
MMX solo ofrece operaciones con enteros. Cuando se desarrolló originalmente para el Intel i860, el uso de cálculos con enteros tenía sentido (tanto los cálculos 2D como 3D lo requerían), pero a medida que se popularizaron las tarjetas gráficas que realizaban gran parte de este proceso, el SIMD entero en la CPU se volvió algo redundante para las aplicaciones gráficas. Por otro lado, las operaciones aritméticas de saturación en MMX podían acelerar significativamente algunas aplicaciones de procesamiento de señales digitales.
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 coma 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.[7] Para maximizar el rendimiento, el software a menudo utilizaba el procesador exclusivamente en un modo u otro, postergando 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 establecen 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 determinar si el contenido de un registro dado se considera como datos de punto flotante o SIMD.
Soporte de software
El soporte de software para MMX se desarrolló lentamente.[8] El compilador C de Intel y las herramientas de desarrollo relacionadas obtuvieron funciones intrínsecas para invocar instrucciones MMX, e Intel lanzó bibliotecas de algoritmos vectorizados comunes que utilizan 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 adaptaban bien al conjunto de instrucciones MMX, y a partir del año 2000, los algoritmos personalizados generalmente aún debían escribirse en lenguaje ensamblador.[7]
Remove ads
Descripción
Resumir
Contexto

MMX agregó 8 nuevos registros a la arquitectura, conocidos como MM0 al MM7 (en adelante llamados MMn). En realidad, estos nuevos registros son meros alias de los registros de la pila de la FPU x87. Por ello cualquier cosa que se haga con la pila de la FPU afecta a los registros MMX. A diferencia de la pila de coma flotante, los registros MMn son fijos en vez de relativos, por lo que pueden accederse aleatoriamente.
Cada uno de los registros MMn es un número entero de 64 bits. Sin embargo, uno de los conceptos principales del juego de instrucciones MMX es el concepto del tipo de datos compactados (packed data types), que significa en lugar de usar el registro completo para un solo número entero de 64 bits (palabra cuádruple o quadword), se puede usar para almacenar dos enteros de 32 bits (palabra doble o doubleword), cuatro enteros de 16 bits (palabra o word) u ocho enteros de 8 bits (byte u octeto).
Para simplificar el diseño y evitar modificar el sistema operativo para preservar el estado adicional a través de los interruptores de contexto, MMX reutiliza los ocho registros existentes de la FPU. Por ello es muy difícil trabajar con la FPU y MMX a la vez. Para maximizar el rendimiento, los programadores deben utilizar el procesador exclusivamente en un modo o el otro, retrasando todo lo posible el lento paso de un modo a otro.
Remove ads
Legado
Resumir
Contexto
AMD, un proveedor de microprocesadores x86 competidor, mejoró el MMX de Intel con su propio conjunto de instrucciones 3DNow!. 3DNow es conocido por añadir compatibilidad con operaciones de punto flotante de precisión simple (32 bits) al conjunto de instrucciones SIMD, entre otras mejoras para enteros y otros tipos de sistemas.
Tras MMX, la siguiente extensión importante de Intel para x86 fueron las Extensiones Streaming SIMD (SSE), introducidas con la familia Pentium III[9] en 1999,[10] aproximadamente un año después del lanzamiento de 3DNow! de AMD.
SSE solucionó las principales deficiencias de MMX (la imposibilidad de combinar operaciones SIMD de enteros con operaciones de punto flotante) mediante la creación de un nuevo archivo de registro de 128 bits (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 enteros se seguían realizando utilizando el registro y el conjunto de instrucciones MMX. Sin embargo, el nuevo archivo de registro XMM permitía combinar libremente las operaciones SIMD de SSE con operaciones MMX o FPU x87.
Las Extensiones de Streaming SIMD 2 (SSE2), introducidas con el Pentium 4, ampliaron aún más el conjunto de instrucciones SIMD x86 con compatibilidad con enteros (8/16/32 bits) y datos de coma flotante de doble precisión para el archivo de registro XMM. SSE2 también permitió que los códigos de operación MMX (códigos de operación) utilizaran operandos de registro XMM, ampliados 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 arquitectura ARM, denominada Intel Wireless MMX Technology (iwMMXt), cuyas funciones son similares a las de la extensión IA-32 MMX.[11][12][13] Esta extensión permite realizar operaciones aritméticas y lógicas con números enteros de 64 bits, en las 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 mediante el mecanismo estándar de mapeo de coprocesadores de arquitectura ARM. 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 anterior extensión de punto flotante, FPA.
Las versiones posteriores de los procesadores ARM de Marvell admiten códigos de operación Wireless MMX (WMMX) y Wireless MMX2 (WMMX2).
Remove ads
Referencias
Véase también
Enlaces externos
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads