Arm PC 上の Windows では、 Prism を使用したエミュレーションで x86 および x64 アプリケーションを実行できます。 Prism には、エミュレーションが高速でパフォーマンスが高く、優れたユーザー エクスペリエンスを実現するための多くの最適化が含まれています。
既定では、Prism はパフォーマンスの最適化とアプリの互換性の最適なバランスを取ります。 アプリで Prism で実行されている互換性の問題が発生する一般的でない場合、Windows には、Prism がアプリに使用する動作と最適化を調整するために使用できるオプションのエミュレーション設定が用意されています。 これらの設定を変更すると、一般にパフォーマンスを犠牲にして、アプリケーションの互換性が向上する可能性があります。
Warnung
エミュレーション設定を変更すると、アプリケーションが予期せずクラッシュしたり、まったく起動しなかったりする可能性があります。
エミュレーション設定を開く
エミュレーション設定にアクセスするには、アプリの実行可能ファイルを右クリックし、[ プロパティ] を選択します。
Arm で Windows を使用する場合、[ 互換性 ] タブには、Windows on Arm というタイトルのセクションが含まれます。 [ エミュレーション設定の変更 ] を選択して、[Arm エミュレーション設定] ウィンドウを開きます。
以前のエミュレーターの動作の復元
Windows on Arm は、時間の経過と同時に改善され、進化し続けています。 アプリケーションで問題が発生したが、以前のバージョンの Windows on Arm で動作していた場合、Prism の動作を以前のバージョンの Windows on Arm と一致するようにオーバーライドすると、問題が解決される可能性があります。
x64 エミュレーション機能を非表示にする
このオプションを選択すると、x86 アプリケーションでは、このデバイスで x64 コードを実行できないことが確認されます。 このオプションは、Arm 上の Windows 10 に存在していたエミュレーターのアプリのサポートを模倣します。
新しいエミュレートされた CPU 機能を非表示にする
Windows 11 24H2 以降では、Prism は以前のバージョンの Windows on Arm でサポートされていない追加の CPU 機能をサポートしています。 これらの機能には、AVX と AVX2 のほか、BMI、FMA、F16C、およびその他の関連する x86 命令セット拡張機能が含まれます。
アプリに対してこのオプションを選択すると、エミュレーターは、以前のバージョンの Prism に存在していた CPU 機能サポートのレベルに戻ります。
32 ビット x86 アプリの場合、このオプションは、 新しいエミュレートされた CPU 機能を表示するオプションに置き換えられます。 既定では、Prism は前述の CPU 機能を 32 ビット x86 アプリに公開しません。 このオプションを選択すると、32 ビット x86 アプリで更新された CPU 機能セットを検出して使用できます。
エミュレーションの設定
[Arm エミュレーション設定] ウィンドウには、エミュレーション設定を変更する 2 つの方法があります。 エミュレーション設定の定義済みのグループを選択するか、[ 詳細設定の使用 ] オプションを選択して、個々の設定を選択および選択できます。
エミュレーション設定の 4 つの定義済みグループは次のとおりです。
- 既定値
- Safe
- 高
- 非常に厳格
デフォルトからセーフから厳格に移行すると、追加のエミュレーション設定が設定され、互換性が向上する可能性があります。
[詳細設定の使用] を選択した場合は、アプリケーションで複数の CPU コアを使用する方法を変更できます。高速、厳密なマルチコア操作、非常に厳密な操作、またはシングルコア操作の強制を選択できます。
マルチコア設定では、Prism がメモリ バリアを使用して、エミュレーション中にアプリのコア間でメモリ アクセスを同期する方法が変更されます。 Fast は既定のモードであり、ほとんどのアプリに最適なバランスです。 厳格で非常に厳格なオプションにより、バリアの数が増え、アプリの速度が低下しますが、アプリ エラーのリスクが軽減されます。 シングルコア オプションを使用すると、すべてのバリアが削除されますが、同期の必要性を回避するために、すべてのアプリ スレッドが 1 つのコアで強制的に実行されます。
残りのエミュレーション設定については、この表で説明します。
| エミュレーション設定 | 結果 |
|---|---|
| アプリケーション キャッシュを無効にする | オペレーティング システムは、コンパイル済みのコード ブロックをキャッシュして、後続の実行時のエミュレーション オーバーヘッドを減らします。 この設定では、エミュレーターで実行時にすべてのアプリ コードを再コンパイルする必要があります。 |
| ハイブリッド実行モードを無効にする (x86 アプリのみ) | コンパイル済みハイブリッド ポータブル実行可能ファイル (CHPE) バイナリは、パフォーマンスを向上させるためにネイティブ Arm64 コードを含む x86 互換バイナリですが、一部のアプリと互換性がない可能性があります。 この設定では、純粋な x86 専用バイナリを優先して、これらのハイブリッド バイナリの使用を無効にします。 |
| その他の軽量エミュレーション保護 | この設定により、Prism はバイナリ内の 揮発性メタデータ の存在を無視します。 |
| 厳密な自己変更コードのサポート | エミュレーションで自己変更コードが正しくサポートされるようにするには、この設定を有効にします。 最も一般的な自己変更コード シナリオは、既定のエミュレーター動作でカバーされます。 このオプションを選択すると、実行中の自己変更コードのパフォーマンスが大幅に低下します。 |
| RWX ページのパフォーマンス最適化を無効にする | この設定では、読み取り可能、書き込み可能、実行可能 (RWX) ページでのコードのパフォーマンスを向上させる最適化が無効になりますが、一部のアプリと互換性がない可能性があります。 |
| 浮動小数点の最適化を無効にする | x87 は x86 命令セット拡張機能であり、主に一部の古い x86 ソフトウェアで浮動小数点演算を実行するために使用され、x87 を使用するほとんどの sofware では必要ない、より高精度の 80 ビット浮動小数点形式を使用できます。 このオプションを選択すると、Prism では、パフォーマンスを犠牲にして、64 ビット近似ではなく、完全な 80 ビット精度が使用されます。 |
Windows on Arm