Partilhar via


Como funciona a emulação no Arm

A emulação disponibiliza o rico ecossistema de aplicativos do Windows no Arm, para que você possa executar os aplicativos que lhe interessam sem modificações no aplicativo. A emulação é transparente para você e faz parte do Windows; ele não requer nenhum componente extra para ser instalado.

O Windows 11 no Arm suporta a emulação de aplicativos x86 e x64. O desempenho é melhorado com a introdução do novo emulador Prism no Windows 11 24H2. O Windows 10 no Arm também suporta emulação, mas apenas para aplicações x86.

Prisma

Prism é o novo emulador incluído no Windows 11 24H2. Em comparação com a tecnologia de emulação anterior incluída no Windows, ela inclui otimizações significativas que melhoram o desempenho e reduzem o uso da CPU de aplicativos sob emulação.

O Prism é otimizado e ajustado especificamente para processadores Qualcomm Snapdragon. Alguns recursos de desempenho do Prism exigem recursos de hardware disponíveis apenas na série Snapdragon X, mas o Prism está disponível para todos os Windows 11 suportados em dispositivos Arm com Windows 11 24H2.

Como funciona a emulação

Emulação funciona como um simulador de software, compilando just-in-time blocos de instruções x86 em instruções Arm64 com otimizações para melhorar o desempenho do código Arm64 emitido.

Um serviço armazena em cache esses blocos de código traduzidos para reduzir a sobrecarga da tradução de instruções e permitir a otimização quando o código é executado novamente. Os caches são produzidos para cada módulo para que outros aplicativos possam usá-los na primeira inicialização.

Para aplicativos x86, a camada WOW64 do Windows permite que o código x86 seja executado na versão Arm64 do Windows, assim como permite que o código x86 seja executado na versão x64 do Windows. Isso significa que os aplicativos x86 no Arm são protegidos com sistema de arquivos e redirecionamento de registro.

Para aplicativos x64, não há camada WOW64 e nenhum registro ou pasta separada de binários do sistema Windows. Em vez disso, os binários do sistema são compilados como arquivos Arm64X PE que podem ser carregados em processos x64 e Arm64 do mesmo local sem a necessidade de redirecionamento do sistema de arquivos. Isso significa que os aplicativos x64 podem acessar todo o sistema operacional, tanto o sistema de arquivos quanto o registro, sem a necessidade de código especial.

Observe que a emulação suporta apenas o código do modo de usuário e não suporta drivers. Todos os componentes do modo kernel devem ser compilados como Arm64.

Deteção de emulação

Um aplicativo x86 ou x64 não sabe que está sendo executado em um Windows no Arm PC, a menos que chame APIs específicas projetadas para transmitir conhecimento do host Arm64, como IsWoW64Process2. As aplicações em emulação que façam consultas a detalhes do processador, incluindo metadados ou capacidade de características, recebem detalhes do processador virtual emulado. Por motivos de compatibilidade, a API GetNativeSystemInfo também retorna detalhes do processador emulado quando executado a partir de um aplicativo sob emulação.

Para aplicativos que procuram detetar os recursos de emulação do sistema operacional, use a API GetMachineTypeAttributes.

Atualizar para suportar uma versão Arm da sua aplicação

Embora a execução de seu aplicativo sob emulação em dispositivos Arm seja um ótimo lugar para começar, seu aplicativo se beneficia dos ganhos de desempenho nativos e das qualidades exclusivas dos dispositivos alimentados por Arm quando você reconstrói para adicionar suporte Arm.

Para obter orientação sobre como criar uma versão Arm de seus aplicativos e quais vantagens, desafios e opções de ferramentas estão envolvidos, consulte Adicionar suporte Arm ao seu aplicativo do Windows. Este artigo também aborda o suporte disponível para criar uma versão Arm do seu aplicativo e quaisquer dependências relacionadas.