Pasar al contenido

MMX

Referencia de arquitecturaFeex

MMX es una extensión temprana de instrucciones de enteros empaquetados para x86 que utiliza registros de 64 bits que comparten almacenamiento arquitectónico con el archivo de registros de coma flotante de x87. Ese estado compartido es importante al mezclar código.

Lo que necesita saber

MMX es una extensión temprana de instrucciones de enteros empaquetados para x86 que utiliza registros de 64 bits que comparten almacenamiento arquitectónico con el archivo de registros de coma flotante de x87. Ese estado compartido es importante al mezclar código.

Cómo funciona

Las operaciones MMX tratan un registro de 64 bits como elementos enteros empaquetados. Los nombres de los registros MMX actúan como alias del almacenamiento de registros x87 en lugar de proporcionar un estado vectorial moderno e independiente. EMMS marca el estado de las etiquetas de x87 como vacío tras el uso de MMX para que el código x87 posterior pueda utilizar la pila de coma flotante correctamente.

Dónde resulta útil

El software multimedia heredado puede usar MMX para aritmética de bytes con saturación. El código nuevo suele utilizar en su lugar XMM o recursos vectoriales más amplios, evitando la interacción de estados entre MMX y x87. Los binarios existentes aún pueden contener MMX incluso en un procesador mucho más nuevo.

Cómo comprobar la compatibilidad y la habilitación

El bit 23 de CPUID.01H:EDX enumera MMX. Para depurar código heredado, inspeccione tanto la secuencia real de instrucciones como su tratamiento de EMMS/estado. Un indicador de capacidad no puede garantizar que una rutina siga correctamente la convención de llamada.

Una función SIMD describe instrucciones, no núcleos adicionales. La forma de la instrucción determina el ancho de los elementos, el signo, el redondeo, la alineación y qué vías interactúan. El software debe preservar el estado de los registros de la ABI y utilizar un entorno de ejecución admitido.

Lo que la función no establece

MMX es SIMD de enteros, no ejecución de propósito general de 64 bits ni compatibilidad con x86-64. No implica SSE ni extensiones posteriores. Omitir la limpieza al mezclar MMX y x87 puede causar problemas de corrección ajenos a si la CPU admite o no las instrucciones.

Compatibilidad y rendimiento en la práctica

Los nombres posteriores de la familia SSE tienen bits de características independientes. Para un binario implementado, inspeccione el conjunto mínimo completo de características, incluidos los paquetes de bibliotecas y el código de inicio. Una alternativa solo es útil si no se ejecuta ninguna instrucción no admitida antes del paso de selección.

Lista de comprobación práctica para la verificación

  1. Registre el modelo exacto de procesador o plataforma, así como las versiones de la aplicación, el sistema operativo y el entorno de ejecución involucrados. Conserve la redacción del error o requisito real.
  2. Consulte la referencia del fabricante para ese modelo exacto y, a continuación, inspeccione la capacidad efectiva y el estado habilitado en el entorno donde se ejecuta el programa.
  3. Compare cada requisito del binario o backend seleccionado. Una función con nombre similar, un alias o una etiqueta de tecnología general no son suficientes.
  4. Confirme que la aplicación haya seleccionado la implementación prevista. Utilice sus diagnósticos documentados y una alternativa compatible cuando no se cumplan los requisitos.
  5. Realice un cambio admitido a la vez y repita la misma carga de trabajo. Mantenga disponibles la configuración original y la vía de recuperación.

Si la función aparece listada pero el software no puede usarla

Comience con el componente exacto que falla. Una base de datos de hardware describe la capacidad registrada; el sistema operativo o el hipervisor pueden exponer un entorno efectivo diferente. Un error de instrucción no válida también requiere investigar la instrucción que generó el fallo y la compilación del binario en sí, ya que la corrupción o una instrucción no compatible no relacionada pueden producir un síntoma similar.

Instale la versión de la aplicación, controlador o entorno de ejecución compatible con la plataforma exacta, y utilice la compilación de referencia o de contingencia documentada por el fabricante si es necesario. Una actualización de software no puede crear una instrucción de la que el procesador carece. Los cambios de firmware y directivas de seguridad deben seguir el procedimiento del fabricante del sistema y un plan de recuperación, en lugar de una fórmula de optimización genérica.

Fuentes y alcance de esta explicación

Intel 64 and IA-32 Architectures Software Developer's Manual · psABI x86-64: niveles de arquitectura y microarquitectura del procesador

Estas referencias establecen el comportamiento arquitectónico y los requisitos de software. No verifican de forma independiente cada valor de función en la página de un modelo de hardware vinculado. Para conocer la compatibilidad de un modelo, consulte las pruebas del fabricante en dicha página y compruebe la configuración efectiva del sistema. Este artículo no proporciona una prueba de rendimiento, certificación ni fecha de revisión independiente.

Fuentes y verificación

Titularidad editorial: Feex. No se registra ninguna fecha de revisión independiente. Cómo investigamos.

¿Fue útil este artículo?

Un sí o un no es suficiente. Elija un motivo si lo desea o agregue una breve nota.

¿Fue útil este artículo?