啟用 Intel AVX 的 Windows 7 支援

受影響的平臺

用戶端 - Windows 7 SP1
伺服器 - Windows Server 2008 R2 SP1

功能影響

嚴重性 - 低
頻率 - 低

描述

Intel 進階向量延伸模組 (AVX) 是 Intel 架構的 256 位 SIMD 浮點向量延伸。 它包含指令集和暫存器集的延伸模組。

Microsoft 已開發一些 API 增強功能,例如 XState 函式,可讓應用程式存取及操作延伸處理器功能資訊和狀態,包括 AVX。

使用案例

潛在影響有三個一般層級。

層級 1: 若應用程式未直接使用 Intel AVX,即使它們呼叫程式庫或使用間接使用或產生 Intel AVX 擴充功能的編譯器,也不會看到其功能的任何影響。 這代表大部分的應用程式。

層級 2: 明確使用 Intel AVX 指令集的進階應用程式,可以在引發硬體例外狀況時存取及變更 AVX 註冊內容。 非常少量的應用程式會落在此類別中,因為它意指例外狀況時執行的指令串流知識,例如以元件語言撰寫的應用程式,或是在執行時間 (產生機器程式碼的應用程式,例如,具有 Just-In-Time 編譯的 Managed 程式碼執行時間) 。

層級 3: 偵錯工具應用程式將能夠存取及操作正在偵錯之應用程式中的 AVX 狀態。

如何運用功能

層級 1: 應用程式不需要採取任何動作,才能使用 Intel AVX。

層級 2: 此類別中的應用程式可以選擇在其例外狀況篩選準則記憶體取及操作 AVX 狀態。 透過 GetExceptionInformation 取得基底處理器內容之後,篩選應該:

1. 檢查 CONTEXT_XSTATE 旗標的值。 此旗標表示內容中至少有一個 XState 功能存在。
2. 如果是這種情況,請呼叫 GetXStateFeaturesMask ,並在傳回的遮罩中測試 XSTATE_AVX 旗標的值。 這表示內容中存在 AVX 狀態。
3. 呼叫 LocateXStateFeature 以擷取儲存 AVX 狀態的實際位置。

層級 3: 除非想要存取 Intel AVX 暫存器,否則不需要更新現有的偵錯工具應用程式:

1. 若要判斷是否已啟用 AVX,偵錯工具應該使用:

  • GetEnabledXStateFeatures 可取得 x86 或 x64 處理器上已啟用 XState 功能的遮罩,以判斷系統上有哪些功能存在並啟用,再使用 XState 處理器功能或嘗試操作 XState 內容

2. 如果 AVX 存在,而且您想要從正在偵錯的應用程式堲取及操作 AVX 狀態 (,例如 GetThreadCoNtext 和 SetThreadCoNtext) ,偵錯工具應該使用:

  • InitializeCoNtext 函式,以初始化緩衝區內具有必要大小和對齊方式的內容結構
  • CopyCoNtext 函式可複製來源內容結構, (包括任何 XState) 至初始化的目的地內容結構

3. 若要測試、設定及找出處理器內容內的 AVX 狀態,偵錯工具應該使用:

  • 找出XStateFeature 以擷取內容結構內個別 XState 功能的處理器狀態指標
  • GetXStateFeaturesMask 可傳回內容結構內設定的 XState 功能遮罩
  • SetXStateFeaturesMask 可設定內容結構內設定 XState 功能的遮罩