Pasar al contenido

XSAVE

Referencia de arquitecturaFeex

XSAVE es el mecanismo extensible de x86 para guardar el estado del procesador, como los registros vectoriales. El soporte de hardware, la habilitación por el SO y los componentes de estado habilitados son aspectos independientes.

Lo que necesita saber

XSAVE es el mecanismo extensible de x86 para guardar el estado del procesador, como los registros vectoriales. El soporte de hardware, la habilitación por el SO y los componentes de estado habilitados son aspectos independientes.

Cómo funciona

La arquitectura XSAVE utiliza una distribución de estados enumerada y máscaras para describir qué componentes se guardan y habilitan. La hoja 0DH de CPUID describe los componentes y tamaños compatibles. XCR0 controla los componentes de estado de usuario elegibles, mientras que OSXSAVE indica al software que el sistema operativo ha habilitado el entorno XSAVE.

Dónde resulta útil

Un entorno de ejecución que decida si puede usar AVX necesita tanto el bit AVX del procesador como el estado XMM/YMM habilitado por el SO. Una implementación de contexto o de señales debe asignar espacio según el estado habilitado, en lugar de asumir que un búfer de tamaño fijo convencional es suficiente.

Cómo comprobar la compatibilidad y la habilitación

Compruebe el bit 26 de CPUID.01H:ECX para XSAVE y el bit 27 para OSXSAVE. Solo entonces utilice XGETBV según lo permitido e inspeccione los bits requeridos de XCR0. Enumere la hoja 0DH para la distribución del estado en vez de codificar un tamaño fijo procedente de otra máquina.

Las funciones de gestión de estado son principalmente responsabilidad del sistema operativo y del entorno de ejecución. Los búferes, las máscaras, los tamaños de los componentes, la alineación y las reglas de restauración deben coincidir con la arquitectura y el modo de ejecución. Guardar solo un subconjunto puede corromper el código que utiliza estado habilitado adicional.

Lo que la función no establece

La compatibilidad con XSAVE no significa por sí misma que AVX, AVX-512 o AMX sean utilizables. No debe utilizarse XGETBV antes de confirmar la compatibilidad necesaria y la habilitación del SO. Las diferentes instrucciones de la familia XSAVE tienen reglas de distribución y enumeración independientes.

Compatibilidad y rendimiento en la práctica

La detección de características a nivel de aplicación debe utilizar una interfaz de tiempo de ejecución mantenida siempre que sea posible. Distinga la compatibilidad de hardware de la habilitación del sistema operativo y, para las características dinámicas, de los permisos del proceso. Una etiqueta de CPU por sí sola no puede determinar que una secuencia arbitraria de guardado/restauración sea correcta.

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 · Linux kernel: using XSTATE features in user space

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.

  • Intel 64 and IA-32 Architectures Software Developer's Manual · Los volúmenes 1 y 2 describen las familias de instrucciones designadas y CPUID; el volumen 3 describe el estado, la paginación, VMX y los controles de protección. La documentación de la arquitectura no establece la compatibilidad con un modelo en particular.
  • Linux kernel: using XSTATE features in user space · Estado de vector habilitado por el sistema operativo, estado de mosaico habilitado dinámicamente, requisitos de pila de señales y flujo de permisos AMX. El comportamiento específico de Linux no es una garantía sobre otro sistema operativo.

¿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?