事件選擇器編碼表 20 描述了可用的事件選擇器編碼。根據(jù) mhpmeventX[7:0]中編碼的事件類字段,將事件分類為類??梢酝ㄟ^為給定事件類別設(shè)置相應的事件掩碼位來對一個或多個事件進行編程。事件選擇器編碼為 0表示“無意義”。任何選定事件發(fā)生時,多個事件都會導致計數(shù)器遞增。
對任何事件類可寫的事件掩碼位對所有類都是可寫的。設(shè)置與表 20中定義的事件不對應的事件掩碼位對當前實現(xiàn)沒有影響。但是,未來的實現(xiàn)可能會在該編碼空間中定義新事件,因此不建議將不受支持的值編程到 mhpmevent寄存器中。
Combining Events
直接計算每個事件是常見的用法。此外,可以使用這些事件的組合來計算新的、獨特的事件。例如,要確定來自數(shù)據(jù)存儲器子系統(tǒng)的每次加載的平均周期數(shù),可以對一個計數(shù)器進行編程以計算“數(shù)據(jù)高速緩存/DTIM繁忙”,并對另一個計數(shù)器進行編程以計算“已退出的整數(shù)加載指令”。然后,簡單地將“數(shù)據(jù)高速緩存/DTIM繁忙”周期計數(shù)除以“整數(shù)加載指令退休”指令計數(shù),結(jié)果就是每條指令加載周期的平均周期時間。
了解組合的事件類型很重要;具體來說,事件類型計算發(fā)生次數(shù),事件類型計算周期。
計數(shù)使能寄存器32位計數(shù)器使能寄存器 mcounteren 和 scounteren 控制硬件性能監(jiān)控計數(shù)器在下一個最低特權(quán)模式下的可用性。
這些寄存器中的設(shè)置僅控制可訪問性。讀取或?qū)懭脒@些啟用寄存器的行為不會影響底層計數(shù)器,這些計數(shù)器在不可訪問時會繼續(xù)遞增。
當 mcounteren 寄存器中的任何位清零時,在 S 模式下執(zhí)行時嘗試讀取周期、時間、指令退出或 hpmcounterX寄存器將導致非法指令異常。當這些位中的一個被設(shè)置時,在下一個實現(xiàn)的特權(quán)模式 S 模式下允許訪問相應的寄存器。
在 U 模式下執(zhí)行時,scounteren 寄存器中的相同位位置類似地控制對這些寄存器的訪問。如果允許 S-mode 訪問計數(shù)器寄存器并且在scounteren 中設(shè)置了相應的位,則也允許 U-mode 訪問該寄存器。
mcounteren 和 scounteren 是 WARL寄存器。任何位都可能包含硬連線值零,表示在低特權(quán)模式下執(zhí)行時,讀取相應計數(shù)器將導致非法指令異常。
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1372瀏覽量
40289 -
Linux
+關(guān)注
關(guān)注
87文章
11304瀏覽量
209497 -
編碼
+關(guān)注
關(guān)注
6文章
942瀏覽量
54829 -
選擇器
+關(guān)注
關(guān)注
0文章
108瀏覽量
14539
發(fā)布評論請先 登錄
相關(guān)推薦
評論