Share via


Intel AVX の Windows 7 サポートを有効にする

影響を受けるプラットフォーム

クライアント - Windows 7 SP1
サーバー - Windows Server 2008 R2 SP1

機能への影響

重大度 - 低
頻度 - 低

Description

Intel? Advanced Vector Extensions (AVX) は 、Intel アーキテクチャの 256 ビット SIMD 浮動小数点ベクター拡張です。 これには、命令セットとレジスタ セットの両方に対する拡張機能が含まれています。

Microsoft では、アプリケーションが AVX を含む拡張プロセッサ機能の情報と状態にアクセスして操作できるようにする、XState 関数などのいくつかの API 拡張機能を開発しました。

使用シナリオ

潜在的な影響には、一般的なレベルが 3 つあります。

レベル 1: Intel AVX を直接使用しないアプリケーションでは、ライブラリを呼び出したり、Intel AVX 拡張機能を間接的に使用または生成するコンパイラを使用したりしても、その機能に影響はありません。 これは、アプリケーションの大部分を表します。

レベル 2: Intel AVX 命令セットを明示的に使用する高度なアプリケーションでは、ハードウェア例外が発生すると、AVX レジスタの内容にアクセスして変更できます。 アセンブリ言語で記述されたセクションを含むアプリケーションや実行時にマシン コードを生成するアプリケーション (Just-In-Time コンパイルを使用したマネージ コード ランタイムなど) など、例外時に実行される命令ストリームに関する詳しい知識を意味するため、非常に少数のアプリケーションがこのカテゴリに分類されます。

レベル 3: デバッガー アプリケーションは、デバッグ中のアプリケーションの AVX 状態にアクセスして操作できます。

機能を活用する方法

レベル 1: アプリケーションで Intel AVX を使用するためのアクションは必要ありません。

レベル 2: このカテゴリのアプリケーションには、例外フィルター内から例外時の AVX 状態にアクセスして操作するオプションがあります。 GetExceptionInformation を使用してベース プロセッサ コンテキストを取得した後、フィルターは次のようにする必要があります。

1.CONTEXT_XSTATE フラグの値を確認します。 このフラグは、コンテキスト内に少なくとも 1 つの XState 機能が存在していることを示します。
2. この場合は、 GetXStateFeaturesMask を 呼び出し、返されたマスクの XSTATE_AVX フラグの値をテストします。 これは、コンテキスト内に AVX 状態が存在していることを示します。
3.LocateXStateFeature を呼び出して、AVX 状態が格納されている実際の場所を取得します。

レベル 3: Intel AVX レジスタにアクセスする場合を除き、既存のデバッガー アプリケーションを更新する必要はありません。

1. AVX が有効になっているかどうかを判断するには、デバッガーで次を使用する必要があります。

  • GetEnabledXStateFeatures x86 または x64 プロセッサで有効になっている XState 機能のマスクを取得して、XState プロセッサ機能を使用する前または XState コンテキストを操作する前に、システムに存在する機能と有効になっている機能を決定します

2. AVX が存在し、デバッグ中のアプリケーション (GetThreadContext や SetThreadContext など) から AVX 状態を取得して操作する場合、デバッガーは次を使用する必要があります。

  • 必要なサイズとアラインメントを使用してバッファー内のコンテキスト構造を初期化する InitializeContext 関数
  • コピー元コンテキスト構造 (XState を含む) を初期化された宛先コンテキスト構造にコピーする CopyContext 関数

3. プロセッサ コンテキスト内で AVX 状態をテスト、設定、および検索するには、デバッガーで次を使用する必要があります。

  • コンテキスト構造内の個々の XState 機能のプロセッサ状態へのポインターを取得する LocateXStateFeature
  • コンテキスト構造内で設定された XState 特徴のマスクを返す GetXStateFeaturesMask
  • コンテキスト構造内で設定された XState 機能のマスクを設定する SetXStateFeaturesMask