Arm での x86 エミュレーションのしくみ

x86 アプリのエミュレーションにより、Win32 アプリの豊富なエコシステムが ARM で利用できるようになります。 これにより、既存の x86 win32 アプリを変更せずに実行できる魔法のようなエクスペリエンスがユーザーに提供されます。

ARM バージョンの Windows 10 には、既存の無修正 x86 アプリを ARM デバイスで実行できるようにするエミュレーション テクノロジが搭載されています。 Windows 11は、そのエミュレーションを拡張して、ARM 搭載デバイスで無修正の x64 Windows アプリを実行します。

WOW64 API

x86 アプリ (または x64 アプリ) は、固有の API (IsWoW64Process2) を呼び出さない限り、ARM PC の Windows で実行されていることを認識することもありません。

Windows の WOW64 レイヤーを使うと、ARM64 バージョンの Windows 上で x86 コードを実行できます。 x86 エミュレーションは、パフォーマンスを高める最適化をしつつ x86 命令のブロックを ARM64 命令にコンパイルすることで機能します。 これらの変換されたコード ブロックをキャッシュして、コードが再度実行されたときに命令変換のオーバーヘッドを削減し最適化できるようにするサービスがあります。 キャッシュはモジュールごとに生成されるため、他のアプリで最初の起動時から使用できます。

ARM64 バージョンのアプリをサポートするための更新

ARM デバイスで x64 と x86 をエミュレートする機能は大きな前進ですが、アプリは ARM64 バージョンのアプリをサポートするように更新することで、ネイティブパフォーマンス獲得と ARM64 搭載デバイス固有の特性を活用できる可能性があります。

ARM64 バージョンのアプリを作成する方法や、どのような利点、課題、ツールが関係する可能性があるか、および ARM64 バージョンのアプリ (および関連する依存関係) を作成するためのサポートについては、Windows アプリへの ARM サポートの追加に関する説明を参照してください。