回答

2

性能監視器計數器(PMC)不需要初始化,當軟件需要使用該功能時,需要對其進行編程(或設置)。

CPU在復位後不會對PMC做任何事情,至少在架構上不可見(即對程序員可見)。

引導加載程序不處理這種事情。

它是一個處理PMC的內核模塊,因爲它們是模型特定寄存器(MSR),只能通過特權(例如rdmsr,wrmsr)訪問指令(即它們需要代碼在內核空間中運行) 。 然後,內核模塊可以通過操作系統接口或通過允許指令rdpmc由非特權代碼執行(儘管它只允許讀取已經設置的計數器)來向用戶空間程序公開功能。


要了解更多關於PMC的信息,請參見Intel Manual 3B, Chapter 18

+0

IIRC,內核可以啓用對perf性能計數器的直接用戶空間訪問。 (也就是說,設置這樣的[RDPMC指令](http://www.felixcloutier.com/x86/RDPMC.html)在用戶空間中工作) –

+0

@PeterCordes如果我沒有錯,用戶空間程序只能使用'rdpmc'進行閱讀。但值得一提的是,謝謝! –

+0

我還沒有手動使用RDPMC,但是我認爲它只是用於讀取實際的計數器。要選擇你想讓他們算什麼,我認爲你需要WRMSR。儘管如此,這對於非常低的開銷測量就足夠了,甚至比RDTSC還要低。 (你可以對核心時鐘週期進行計數,而不是掛鐘參考週期。) –