Compartir a través de


Funcionamiento de la emulación de en ARM

La emulación hace que el ecosistema enriquecido de aplicaciones de Windows esté disponible en Arm, por lo que puede ejecutar las aplicaciones que le interesan sin modificaciones en la aplicación. La emulación es transparente para usted y forma parte de Windows; no requiere que se instalen componentes adicionales.

Windows 11 en Arm admite la emulación de aplicaciones x86 y x64. El rendimiento se mejora con la introducción del nuevo emulador Prism en Windows 11 24H2. Windows 10 en Arm también admite emulación, pero solo para aplicaciones x86.

Prism

Prism es el nuevo emulador incluido con Windows 11 24H2. En comparación con la tecnología de emulación anterior incluida en Windows, incluye optimizaciones significativas que mejoran el rendimiento y reducen el uso de CPU de las aplicaciones bajo emulación.

Prism está optimizado y optimizado específicamente para procesadores Qualcomm Desktop. Algunas características de rendimiento dentro de Prism requieren características de hardware solo disponibles en la serie Intune X, pero Prism está disponible para todos los windows 11 compatibles en dispositivos Arm con Windows 11 24H2.

Funcionamiento de la emulación

La emulación funciona como un simulador de software, compilando bloques Just-In-Time de instrucciones x86 en instrucciones arm64 con optimizaciones para mejorar el rendimiento del código Arm64 emitido.

Un servicio almacena en caché estos bloques de código traducidos para reducir la sobrecarga de la traducción de instrucciones y permite la optimización cuando el código se ejecuta de nuevo. Las memorias caché se generan para cada módulo para que otras aplicaciones puedan usarlas en el primer inicio.

Para las aplicaciones x86, la capa WOW64 de Windows permite que el código x86 se ejecute en la versión Arm64 de Windows, al igual que permite que el código x86 se ejecute en la versión x64 de Windows. Esto significa que las aplicaciones x86 de Arm están protegidas con el sistema de archivos y la redirección del registro.

En el caso de las aplicaciones x64, no hay ninguna capa WOW64 y ninguna carpeta o registro independiente de archivos binarios del sistema de Windows. En su lugar, los archivos binarios del sistema se compilan como archivos ARM64X PE que se pueden cargar en procesos x64 y Arm64 desde la misma ubicación sin necesidad de redireccionamiento del sistema de archivos. Esto significa que las aplicaciones x64 pueden acceder a todo el sistema operativo, tanto el sistema de archivos como el registro, sin necesidad de código especial.

Tenga en cuenta que la emulación solo admite código en modo de usuario y no admite controladores. Los componentes del modo kernel deben compilarse como Arm64.

Detección de emulación

Una aplicación x86 o x64 no sabe que se ejecuta en un equipo Windows en ARM, a menos que llame a API específicas diseñadas para transmitir información sobre el host ARM64, como IsWoW64Process2. Las aplicaciones bajo emulación que consultan los detalles del procesador, incluidos los metadatos o las funcionalidades de características, reciben detalles correspondientes al procesador virtual emulado. Por motivos de compatibilidad, la API GetNativeSystemInfo también devuelve detalles de procesador emulados cuando se ejecuta desde una aplicación bajo emulación.

Para las aplicaciones que buscan detectar las funcionalidades de emulación del sistema operativo, use la API GetMachineTypeAttributes.

Actualización para admitir una versión de Arm de la aplicación

Ejecutar la aplicación bajo emulación en dispositivos Arm es un excelente punto de partida; la aplicación se beneficia de las mejoras de rendimiento nativas y las cualidades únicas de los dispositivos con Arm cuando se reconstruye para añadir compatibilidad con Arm.

Para obtener instrucciones sobre cómo crear una versión de Arm de las aplicaciones y qué ventajas, desafíos y opciones de herramientas intervienen, consulte Incorporación de compatibilidad de Arm a la aplicación de Windows. En este artículo también se describe la compatibilidad disponible para crear una versión de Arm de la aplicación y las dependencias relacionadas.