プログラム互換性のトラブルシューティング ツール (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 アプリの互換性をテストする試みに使用できます。

エミュレーション設定の変更のスクリーンショット2

[詳細設定を使用する] を選択し、この表の説明に従って個々の設定を選択します。

エミュレーション設定 結果
アプリケーション キャッシュを無効にする オペレーティング システムは、コンパイル済みのコード ブロックをキャッシュすることにより、以降の実行におけるエミュレーション オーバーヘッドを軽減します。 この設定では、エミュレーターの実行時にすべてのアプリ コードを再コンパイルする必要があります。
ハイブリッド実行モードを無効にする 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) でお知らせください。皆様のフィードバックは、今後の参考にさせていただきます。