プログラム互換性のトラブルシューティング ツール (Arm)
また、Arm 搭載 PC にはアプリケーションの互換性が十分に備わっており、変更されていない既存の x86 win32 アプリケーションを実行できます。 Arm アプリはエミュレーションされずにネイティブで実行されますが、x86 および x64 アプリはエミュレーション下で実行されます。
ただし、エミュレーションによって実行される最適化が、最善のユーザー エクスペリエンスにつながらない場合があります。 プログラム互換性のトラブルシューティング ツールを使用すると、x86 または x64 アプリのエミュレーション設定を切り替えることができます。これによって、既定の最適化の使用を減らし、互換性の向上を図ることができます。
プログラム互換性のトラブルシューティング ツールの開始
プログラム互換性のトラブルシューティング ツールは、どの Windows PC でも同様に手動で起動します。実行可能ファイル (.exe) を右クリックし、[互換性のトラブルシューティング] を選択します。 次に、推奨される互換性設定を使用してプログラムをテスト実行する [推奨される設定を試す] か、実際に気付いた特定の問題に基づいて互換性設定を選択する [プログラムのトラブルシューティング] を選択します。
[プログラムのトラブルシューティング] を選択した場合は、以下のオプションを選択できます。
- 以前のバージョンの Windows で動作したプログラムをインストールまたは実行できなくなった
- プログラムは開くが正しく表示されない
- プログラムから追加のアクセス許可が求められる
- 上記以外の問題がある
すべてのオプションによって、すべての Windows デスクトップ PC に適用可能または適用される設定が有効になります。 さらに、1 番目、2 番目、4 番目のオプションでは、エミュレーション設定 [Disable application cache
] および [Disable hybrid execution mode
] が適用されます。 (エミュレーション設定の説明については、下の表を参照してください。)
エミュレーション設定の切り替え
警告
エミュレーション設定を変更すると、アプリケーションが予期せずクラッシュする場合や、まったく起動しなくなる場合があります。
エミュレーション設定を切り替えるには、実行可能ファイルを右クリックして [プロパティ] を選択します。
ARM の [互換性] タブに、[Windows 10 on ARM] または [Windows 11 on ARM] というタイトルのセクションが表示されます。[エミュレーション設定の変更] を選択して、[エミュレーションのプロパティ] ウィンドウを開きます。
この [エミュレーションのプロパティ] ウィンドウでは、2 つの方法でエミュレーション設定を変更できます。 事前定義されたエミュレーション設定のグループを選択する方法と、[詳細設定を使用する] オプションを選択して個別の設定を選択する方法があります。
以下のエミュレーション設定では、品質を優先したパフォーマンスの最適化が軽減されます。これらの設定は、Windows on Arm での実行時に x86 または x64 アプリの互換性をテストする試みに使用できます。
[詳細設定を使用する] を選択し、この表の説明に従って個々の設定を選択します。
エミュレーション設定 | 結果 |
---|---|
アプリケーション キャッシュを無効にする | オペレーティング システムは、コンパイル済みのコード ブロックをキャッシュすることにより、以降の実行におけるエミュレーション オーバーヘッドを軽減します。 この設定では、エミュレーターの実行時にすべてのアプリ コードを再コンパイルする必要があります。 |
ハイブリッド実行モードを無効にする | Compiled Hybrid Portable Executable (CHPE) バイナリは、パフォーマンスを向上させるネイティブ Arm64 コードを含む x86 互換バイナリですが、一部のアプリとは互換性がない可能性があります。 この設定では、x86 専用バイナリの使用が強制されます。 |
追加の軽量エミュレーション保護 | 揮発性メタデータなどに影響を与える包括的な更新。エミュレーションで x86 または x64 アプリを実行する際のパフォーマンスを左右する可能性があります。 |
厳密な自己変更コードのサポート | これを有効にすると、自己変更コードがエミュレーションで正しくサポートされるようになります。 特に一般的な自己変更コード シナリオには、エミュレーターの既定の動作で対応しています。 このオプションを有効にすると、実行時に自己修正コードのパフォーマンスが大幅に低下します。 |
RWX ページのパフォーマンス最適化を無効にする | この最適化により、読み取り可能、書き込み可能、および実行可能 (RWX) ページでのコードのパフォーマンスが向上しますが、一部のアプリとは互換性がない場合があります。 |
JIT 最適化を無効にする (x64 アプリのみ) | 現在これは使用されておらず、今後のバージョンのトラブルシューティング ツールで削除される予定です。 |
浮動小数点の最適化を無効にする (x64 アプリのみ) | この設定では、x87 浮動小数点が完全な 80 ビット精度でエミュレートされますが、パフォーマンス コストがかかります。 x87 は、一部の古い x86 プロセッサで使用される浮動小数点コプロセッサであり、浮動小数点演算の実行には、32 ビットまたは 64 ビット形式よりも高い精度の 80 ビット浮動小数点形式が使用されます。 |
アプリケーションが複数の CPU コアを使用する方法を変更し、高速、厳密なマルチコア動作、非常に厳密な動作、または強制的なシングル コア動作を選択することもできます。 互換性の問題が発生した場合は、これらの設定を使用して、Windows on Arm の実行時にアプリ エミュレーションをテストします。
これらの設定により、エミュレーション中にアプリのコア間でメモリ アクセスを同期するために使用されるメモリ バリアの数が変わります。 [高速] は既定のモードですが、[厳密] オプションまたは [非常に厳密] オプションを使用すると、バリアの数が増えます。 その場合はアプリの速度が低下しますが、アプリ エラーのリスクが軽減されます。 [シングルコア] オプションでは、すべてのバリアが取り除かれますが、すべてのアプリ スレッドが強制的に単一コアで実行されます。
特定の設定を変更することで問題が解決した場合は、ぜひ詳細をメール (woafeedback@microsoft.com) でお知らせください。皆様のフィードバックは、今後の参考にさせていただきます。
Windows on Arm