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