Поделиться через


Как работает эмуляция в Arm

Эмуляция делает богатую экосистему приложений Windows доступной в Arm, что позволяет пользователям запускать приложения, которые они заботятся без каких-либо изменений в приложении. Эмуляция является прозрачной для пользователя и является частью Windows; Для установки дополнительных компонентов не требуется.

Windows 11 в Arm поддерживает эмуляцию приложений x86 и x64 и производительности, благодаря внедрению нового эмулятора Prism в Windows 11 24H2. Windows 10 в Arm также поддерживает эмуляцию, но только для приложений x86.

Prism;

Prism — это новый эмулятор, включенный в Windows 11 24H2. Относительно предыдущей технологии эмуляции, включенной в Windows, она включает значительные оптимизации, которые повышают производительность и снижение использования ЦП приложений при эмуляции.

Prism оптимизирован и настроен специально для процессоров Qualcomm Snapdl. Для некоторых функций производительности в Prism требуются аппаратные функции, доступные только в серии Snapscsi X, но Prism доступен для всех поддерживаемых устройств Windows 11 на устройствах Arm с Windows 11 24H2.

Как работает эмуляция

Эмуляция работает в качестве программного симулятора, jit-компиляции блоков инструкций x86 в инструкции Arm64 с оптимизацией для повышения производительности сформированного кода Arm64.

Служба кэширует эти переведенные блоки кода, чтобы сократить затраты на перевод инструкций и разрешить оптимизацию при повторном запуске кода. Кэши создаются для каждого модуля, чтобы другие приложения могли использовать их при первом запуске.

Для приложений x86 уровень WOW64 в Windows позволяет запускать код x86 в Windows версии Arm64 так же, как и код x86 для работы в x64 версии Windows. Это означает, что приложения x86 в Arm защищены с помощью файловой системы и перенаправления реестра.

Для приложений x64 нет уровня WOW64 и нет отдельного реестра или папки системных двоичных файлов Windows. Вместо этого системные двоичные файлы компилируются как файлы PE Arm64X, которые можно загрузить в процессы x64 и Arm64 из одного расположения без необходимости перенаправления файловой системы. Это означает, что приложения x64 могут получить доступ ко всей ОПЕРАЦИОННОй системе, файловой системе и реестру без необходимости в специальном коде.

Обратите внимание, что эмуляция поддерживает только код пользовательского режима и не поддерживает драйверы; все компоненты режима ядра должны быть скомпилированы как Arm64.

Обнаружение эмуляции

Приложение x86 или x64 не будет знать, что оно работает на компьютере Windows на компьютере Arm, если он не вызывает определенные API, предназначенные для передачи знаний узла Arm64, например IsWoW64Process2. Приложения под эмуляцией, запрашивающие сведения о процессоре, включая метаданные или возможности функций, получат сведения, соответствующие эмулированному виртуальному процессору. По соображениям совместимости API GetNativeSystemInfo также возвращает эмулированные сведения о процессоре при выполнении из приложения под эмуляцией.

Для приложений, желающих обнаружить возможности эмуляции операционной системы, используйте API GetMachineTypeAttributes.

Обновление для поддержки версии Arm приложения

Несмотря на то, что приложение выполняется под эмуляцией на устройствах Arm, это отличное место для запуска, ваше приложение получит преимущества от собственных показателей производительности и уникальных качеств устройств с поддержкой Arm при перестроении, чтобы добавить поддержку Arm в приложение.

Дополнительные сведения о том, как создать версию приложения Arm и какие преимущества, проблемы и средства могут быть вовлечены в приложение Windows, а также поддержку создания версии приложения Arm (и любых связанных зависимостей).