跳至內容

XSAVE

架構參考資料Feex

XSAVE 是用於儲存處理器狀態 (例如向量暫存器) 的可延伸 x86 機制。硬體支援、作業系統啟用以及啟用的狀態元件是分開的問題。

您需要瞭解的資訊

XSAVE 是用於儲存處理器狀態 (例如向量暫存器) 的可延伸 x86 機制。硬體支援、作業系統啟用以及啟用的狀態元件是分開的問題。

運作方式

XSAVE 架構使用列舉的狀態配置與遮罩來描述啟用並儲存了哪些元件。CPUID 分頁 0DH 描述了受支援的元件與大小。XCR0 控制合格的使用者狀態元件,而 OSXSAVE 告知軟體作業系統已啟用 XSAVE 環境。

適用場景

決定是否可以使用 AVX 的執行階段同時需要處理器的 AVX 位元與作業系統啟用的 XMM/YMM 狀態。內文或訊號實作必須根據啟用的狀態分配空間,而非假設舊版固定大小的緩衝區已足夠。

如何檢查支援與啟用狀態

檢查 CPUID.01H:ECX 位元 26 是否有 XSAVE,位元 27 是否有 OSXSAVE。僅在符合許可時使用 XGETBV 並檢查所需的 XCR0 位元。列舉分頁 0DH 以取得狀態配置,而非寫死來自另一台機器的大小。

狀態管理功能主要是作業系統與執行階段的責任。緩衝區、遮罩、組件大小、對齊與還原規則必須與架構及執行模式一致。僅儲存子集可能會損毀使用額外已啟用狀態的程式碼。

該功能未涵蓋的範疇

XSAVE 支援本身並不意味著 AVX、AVX-512 或 AMX 可用。在確認所需的支援與作業系統啟用之前,切勿使用 XGETBV。不同 XSAVE 家族指令具有單獨的列舉與配置規則。

實務中的相容性與效能

應用程式層級的功能偵測應盡可能使用維護良好的執行階段介面。區分硬體支援與作業系統啟用,且對於動態功能,還需區分處理程序權限。單憑 CPU 標籤無法確定任意的儲存/還原序列是否正確。

實用驗證檢查清單

  1. 記錄所涉及的確切處理器或平台型號,以及應用程式、OS 和執行階段版本。保留實際錯誤或需求的確切措辭。
  2. 檢查該確切型號的原廠參考資料,然後在程式執行的環境中檢查有效功能和啟用狀態。
  3. 比對所選二進位檔或後端的所有需求。僅憑名稱相似的功能、別名或廣泛的技術標籤是不夠的。
  4. 確認應用程式已選擇預期的實作方式。當需求未獲滿足時,請使用其記載的診斷工具和受支援的後備機制。
  5. 一次進行一項受支援的變更,並重複執行相同的負載。隨時保留原始設定和復原途徑。

如果列出該功能但軟體無法使用

從確切發生失敗的元件著手。硬體資料庫描述的是記錄的硬體能力;作業系統或 Hypervisor 可能呈現不同的有效環境。非法指令錯誤同樣需要調查實際出錯的指令和二進位建置版本,因為損毀或無關的不受支援指令也可能產生類似的症狀。

安裝適用於該確切平台的受支援應用程式、驅動程式或執行階段版本,並在需要時使用廠商記載的基準建置版本或後備建置版本。軟體更新無法無中生有地創造處理器所缺乏的指令。韌體與安全性原則的變更應遵循系統製造商的程序和復原計劃,而非泛用的最佳化偏方。

本說明的來源與範圍

Intel 64 和 IA-32 架構軟體開發者手冊 · Linux 核心:在使用者空間中使用 XSTATE 功能

這些參考資料確立了架構行為和軟體需求。它們不會獨立驗證連結硬體型號頁面上的每個功能數值。有關型號支援,請使用該頁面的製造商實證並檢查有效系統組態。本文不提供效能基準測試、認證或獨立審查日期。

來源與驗證

編輯權限:Feex。未記錄獨立審查日期。 我們的研究方式.

這篇文章實用嗎?

只要回答「是」或「否」即可。您也可以依意願選擇原因,或附上簡短說明。

這篇文章實用嗎?