Compartilhar via


Como funciona a emulação no Arm

A emulação disponibiliza o rico ecossistema de aplicativos do Windows no Arm, permitindo que os usuários executem os aplicativos de seu interesse sem nenhuma modificação no aplicativo. A emulação é transparente para o usuário e faz parte do Windows; Não requer a instalação de componentes adicionais.

O Windows 11 no Arm oferece suporte à emulação de aplicativos x86 e x64 e o desempenho foi aprimorado com a introdução do novo emulador Prism no Windows 11 24H2. O Windows 10 no Arm também dá suporte à emulação, mas apenas para aplicativos x86.

Prism

Prism é o novo emulador incluído no Windows 11 24H2. Em relação à 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 em emulação.

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

Como funciona a emulação

A emulação funciona como um simulador de software, compilando blocos just-in-time 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 possibilitar a otimização quando o código for 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 redirecionamento do sistema de arquivos e do registro.

Para aplicativos x64, não há nenhuma 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 dá suporte apenas ao código do modo de usuário e não dá suporte a drivers; todos os componentes do modo kernel devem ser compilados como Arm64.

Detectando emulação

Um aplicativo x86 ou x64 não saberá que está em execução em um Windows no PC Arm, a menos que chame APIs específicas projetadas para transmitir conhecimento do host Arm64, como IsWoW64Process2. Os aplicativos em emulação que consultam detalhes do processador, incluindo metadados ou recursos de recursos, receberão detalhes correspondentes ao processador virtual emulado. Por motivos de compatibilidade, a API GetNativeSystemInfo também retornará detalhes do processador emulado quando executada em um aplicativo em emulação.

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

Atualizando para dar suporte a uma versão do Arm do seu aplicativo

Embora ter seu aplicativo executado em emulação em dispositivos Arm seja um ótimo lugar para começar, seu aplicativo se beneficiará dos ganhos de desempenho nativos e das qualidades exclusivas dos dispositivos com tecnologia Arm se você recompilar para adicionar suporte ao Arm ao seu aplicativo.

Consulte Adicionar suporte do Arm ao seu aplicativo do Windows para obter diretrizes sobre como criar uma versão do Arm de seus aplicativos e que tipo de vantagens, desafios e ferramentas podem estar envolvidos, bem como suporte disponível para criar uma versão do Arm do seu aplicativo (e quaisquer dependências relacionadas).