跳至內容

RDTSCP

架構參考資料Feex

RDTSCP 會讀取 x86 時間戳記計數器以及具有已定義排序屬性的輔助處理器識別碼數值。它不是完全序列化(serializing)的指令,也不是自動化的基準測試框架。

您需要瞭解的資訊

RDTSCP 會讀取 x86 時間戳記計數器以及具有已定義排序屬性的輔助處理器識別碼數值。它不是完全序列化(serializing)的指令,也不是自動化的基準測試框架。

運作方式

RDTSCP 會在 EDX:EAX 中傳回計數器數值,並在 ECX 中傳回 IA32_TSC_AUX 數值。其排序規則會限制某些先前的操作,但後續的指令可能會在讀取完成前就開始執行,且先前的儲存操作還有額外的可見性考量。正確的隔離(fence)序列取決於測量所預期界定的範圍。

適用場景

當作業系統進行適當設定時,低階計時程式碼可利用輔助數值來協助偵測處理器的切換。穩健的基準測試仍需控制編譯過程、工作負載預熱、中斷、排程、計數器校準以及受排序規範的操作。

如何檢查支援與啟用狀態

CPUID.80000001H:EDX 第 27 位元列舉 RDTSCP。請在實際的作業系統或 Hypervisor 中驗證計數器政策,並搭配所需的隔離指令使用已記錄的計時方法。測量應用程式經過時間時,建議優先使用作業系統的單調時鐘(monotonic clock)。

請根據需求選擇時鐘:經過時間、執行緒 CPU 時間與週期數是不同的測量項目。作業系統的時鐘介面整合了平台政策,而未經處理的原始指令取樣可能會繞過這些政策。

該功能未涵蓋的範疇

支援 RDTSCP 並不能確立不變(invariant)或同步的 TSC 行為。輔助數值的解讀由作業系統定義。在不了解指令排序的情況下直接相減兩個取樣值,測得的區間可能會與預期不符。

實務中的相容性與效能

效能測試還需要正確的編譯器邊界、預熱、具代表性的資料,以及對遷移與排程的理解。重複執行順序不良的測量並不能使其變得準確。回報任何結果時,請同時說明環境與不確定性。

實用驗證檢查清單

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

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

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

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

本說明的來源與範圍

Intel 64 和 IA-32 架構軟體開發者手冊

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

來源與驗證

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

這篇文章實用嗎?

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

這篇文章實用嗎?