1. PMCCFILTR_EL0, Performance Monitors Cycle Count Filter Register
作用
????決定循環(huán)計數(shù)器PMCCNTR_EL0的增長模式
位圖
-
RES0
保留位 -
P, bit[31]
0b0 計算EL1中的周期
0b1 不計算EL1中的周期
如果實現(xiàn)了EL3的話抽兆,那么是否在EL1進(jìn)行計數(shù)將會進(jìn)一步的由NSK位進(jìn)行控制 -
U, bit[30]
0b0 計算EL0中的周期
0b1 不計算EL0中的周期
如果實現(xiàn)了EL3的話誊酌,那么是否在EL0進(jìn)行計數(shù)將會進(jìn)一步的由NSU位進(jìn)行控制 -
NSK, bit[29]
在實現(xiàn)了EL3的情況下:如果值與P相同則計算EL1中的周期,否則不纬乍。 -
NSU, bit[28]
在實現(xiàn)了EL3的情況下:如果值與U相同則計算EL0中的周期,否則不过蹂。 -
NSH, bit[27]
在實現(xiàn)了EL2的情況下:
0b0 不計算EL2中的周期
0b1 計算EL2中的周期
如果實現(xiàn)了EL2和EL3的話族檬,那么是否在EL2進(jìn)行計數(shù)將會進(jìn)一步的由SH位進(jìn)行控制 -
M, bi[26]
在實現(xiàn)了EL3的情況下:如果值與P相同則計算EL3中的周期,否則不呼奢。 -
SH, bi[24]
在實現(xiàn)了EL3和FEAT_SEL2的情況下:如果值與NSH不相同則計算EL2中的周期宜雀,否則不。
讀MRS/寫MSR
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1110 | 0b1111 | 0b111 |
2. PMCCNTR_EL0, Performance Monitors Cycle Count Register
作用
????統(tǒng)計進(jìn)程的時鐘周期
????只有實現(xiàn)了FEAT_PMUv3握础,此計數(shù)器才存在辐董。并且PMCCNTR的計數(shù)還會受到時鐘頻率的改變的影響,例如時鐘被WFI和WFE指令暫停了禀综。
位圖
-
CCNT, bits[63:0]
可以每一個時鐘周期計數(shù)一次简烘,也可以每64個時鐘周期計數(shù)一次,具體由PMCR_EL0.D控制
如果給PMCR_EL0.C設(shè)為1的話可以重置此計數(shù)器為0
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1001 | 0b1101 | 0b000 |
3. PMCEID0_EL0, Performance Monitors Common Event Identification register 0
作用
????表明哪些通用架構(gòu)事件和通用微架構(gòu)事件被實現(xiàn)/計數(shù)定枷,PMU事件編號從0x0000到0x001F和0x4000到0x401F
位圖
-
IDhi<n>, bit[n+32], for n = 31 to 0
只有實現(xiàn)了FEAT_PMUv3p1孤澎,這些位才有效,對應(yīng)事件0x4000+n
0b0 該位代表的事件沒有實現(xiàn)或不會被計數(shù)
0b1 該位代表的事件被實現(xiàn)了且會被計數(shù) -
ID<n>, bit[n], for n = 31 to 0
對應(yīng)事件0x0000+n
0b0 該位代表的事件沒有實現(xiàn)或不會被計數(shù)
0b1 該位代表的事件被實現(xiàn)了且會被計數(shù)
只讀
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1001 | 0b1100 | 0b110 |
4. PMCEID1_EL0, Performance Monitors Common Event Identification register 1
作用
????表明哪些通用架構(gòu)事件和通用微架構(gòu)事件被實現(xiàn)/計數(shù)欠窒,PMU事件編號從0x0020到0x003F和0x4020到0x403F
位圖
-
IDhi<n>, bit[n+32], for n = 31 to 0
只有實現(xiàn)了FEAT_PMUv3p1覆旭,這些位才有效,對應(yīng)事件0x4020+n
0b0 該位代表的事件沒有實現(xiàn)或不會被計數(shù)
0b1 該位代表的事件被實現(xiàn)了且會被計數(shù) -
ID<n>, bit[n], for n = 31 to 0
對應(yīng)事件0x0020+n
0b0 該位代表的事件沒有實現(xiàn)或不會被計數(shù)
0b1 該位代表的事件被實現(xiàn)了且會被計數(shù)
只讀
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1001 | 0b1100 | 0b111 |
5. PMCNTENCLR_EL0, Performance Monitors Count Enable Clear register
作用
????可以使計數(shù)器去使能岖妄。直接讀的話表明哪些計數(shù)器使能了型将。
位圖
-
RES0
保留位 -
C, bit[31]
0b0 讀:表明PMCCNTR未使能。寫:無意義。
0b1 讀:表明PMCCNTR使能了。寫:PMCCNTR去使能咽块。(這里寫1龙助,到clr寄存器里面的值最后應(yīng)該是0) -
Pn, bit[n], for n = 30 to 0
0b0 讀:表明PMEVCNTR<n>_EL0未使能。寫:無意義。
0b1 讀:表明PMEVCNTR<n>_EL0使能了。寫:PMEVCNTR<n>_EL0去使能。
注:當(dāng)EL2在當(dāng)前安全狀態(tài)下實現(xiàn)并啟用時恬惯,則在EL1和EL0中,N是MDCR_EL2.HPMN中的值亚茬。否則N是PMCR_EL0.N的值酪耳。且如果N小于31,則[N,30]的位都是RAZ/WI(Read-As-Zero/Writes Ignored)的。
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1001 | 0b1100 | 0b010 |
6. PMCNTENSET_EL0, Performance Monitors Count Enable Set register
作用
????使能計數(shù)器碗暗。直接讀的話表明哪些計數(shù)器使能了颈将。
位圖
-
RES0
保留位 -
C, bit[31]
0b0 讀:表明PMCCNTR未使能。寫:無意義言疗。
0b1 讀:表明PMCCNTR使能了晴圾。寫:使能PMCCNTR。(這里寫1噪奄,到set寄存器里面的值最后應(yīng)該是1死姚,注意與clr寄存器的區(qū)別) -
Pn, bit[n], for n = 30 to 0
0b0 讀:表明PMEVCNTR<n>_EL0未使能。寫:無意義勤篮。
0b1 讀:表明PMEVCNTR<n>_EL0使能了都毒。寫:使能PMEVCNTR<n>_EL0。
注:當(dāng)EL2在當(dāng)前安全狀態(tài)下實現(xiàn)并啟用時碰缔,則在EL1和EL0中账劲,N是MDCR_EL2.HPMN中的值。否則N是PMCR_EL0.N的值金抡。且如果N小于31瀑焦,則[N,30]的位都是RAZ/WI(Read-As-Zero/Writes Ignored)的。
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1001 | 0b1100 | 0b001 |
7. PMCR_EL0, Performance Monitors Control Register
作用
????描述了性能監(jiān)控的實現(xiàn)細(xì)節(jié)梗肝,包括實現(xiàn)的計數(shù)器的數(shù)量榛瓮、用來配置和控制計數(shù)器等。
位圖
-
RES0
保留 -
FZS, bit[32]
只有實現(xiàn)了FEAT_SPEv1p2的情況下這個位才有意義
全稱Freeze-on-SPE event(freeze on Statistical Profiling Buffer Management event)
0b0 不要凍結(jié)統(tǒng)計分析緩沖區(qū)管理事件统捶。
0b1 事件計數(shù)器在統(tǒng)計分析緩沖區(qū)管理事件之后不計數(shù)榆芦。(需要PMBLIMITR_EL1.{PMFZ,E} == {1,1}和PMBSR_EL1.S == 1)
如果實現(xiàn)了EL2的情況下,這個位只影響編號0到MDCR_EL2.HPMN-1的計數(shù)器喘鸟,而MDCR_EL2.HPMN到PMCR_EL0.N-1的計數(shù)器(MDCR_EL2.HPMN小于PMCR_EL0.N的時候)以及PMCCNTR不受影響 -
IMP, bits[31:24]
IMP,Implementer code驻右。
只讀字段什黑,且不建議使用此字段。
只有在FEAT_PMUv3p7沒有實現(xiàn)的情況下這個字段才有意義堪夭,否則是RAZ的愕把。
值為0,則IDCODE是保留字段森爽,并且軟件必須使用MIDR_EL1來標(biāo)識PE恨豁。
值為其他,這個字段和IDCODE一起標(biāo)識PMU是由軟件實現(xiàn)的爬迟。實現(xiàn)的代碼由arm分配橘蜜。且非零值的含義和MIDR_EL1.Implementer一樣。 -
IDCODE, bits[23:16]
IDCODE,Identification code计福。
只讀字段跌捆,且不建議使用此字段。
只有在PMCR_EL0.IMP != 0x00時此字段才有意義 -
N, bits[15:11]
只讀字段
表示實現(xiàn)了多少個pmu事件計數(shù)器象颖,取值范圍是0b00000-0b11111
當(dāng)實現(xiàn)了并使能了EL2的情況下佩厚,在EL1和EL0下讀取此值,返回的是MDCR_EL2.HPMN的值说订。 -
FZO, bit[9]
FZO抄瓦,F(xiàn)reeze-on-overflow。
只有在實現(xiàn)了FEAT_PMUv3p7的情況下此位才有意義陶冷,否則為保留字段
0b0 在發(fā)生溢出時也不暫停計數(shù)器
0b1 在PMOVSCLR_EL0[(N-1):0]非零的情況下钙姊,暫停事件計數(shù)器。
如果實現(xiàn)了EL2埃叭,且MDCR_EL2.HPMN小于PMCR_EL0.N的情況下摸恍,此位忽略PMOVSCLR_EL0[(PMCR_EL0.N-1):MDCR_EL2.HPMN]的非零,且編號從MDCR_EL2.HPMN到PMCR_EL0.N的事件計數(shù)器不受影響赤屋。
PMCCNTR不收此位影響立镶。 -
LP, bit[7]
只有在實現(xiàn)了FEAT_PMUv3p5的情況下此位才有意義,否則為保留字段
此位決定溢出標(biāo)識寄存器什么時候記錄事件計數(shù)器發(fā)生了無符號溢出类早。
0b0 導(dǎo)致PMEVCNTR<n>_EL0[31:0]溢出時
0b1 導(dǎo)致PMEVCNTR<n>_EL0[63:0]溢出時
這里n的大小取決于EL2的實現(xiàn)媚媒,以及MDCR_EL2.HPMN和PMCR_EL0.N的大小。 -
LC, bit[6]
只有在EL0支持AArch32的情況下此位才有意義涩僻,否則為保留字段
此位決定溢出標(biāo)識寄存器什么時候記錄PMCCNTR發(fā)生了無符號溢出缭召。
0b0 導(dǎo)致PMEVCNTR<n>_EL0[31:0]溢出時
0b1 導(dǎo)致PMEVCNTR<n>_EL0[63:0]溢出時
Arm不建議使用0b0 -
DP, bit[5]
此位只有在實現(xiàn)了EL3或者(FEAT_PMUv3p1和EL2都實現(xiàn))的情況下才有意義,否則為保留字段逆日。
0b0 無影響
0b1 當(dāng)[0..(MDCR_EL2.HPMN-1)]的事件計數(shù)器被禁用時嵌巷,PMCCNTR被禁用 -
X, bit[4]
export
此位只有實現(xiàn)了PMU事件導(dǎo)出總線的情況下才有意義,否則為RAZ/WI的
在已經(jīng)實現(xiàn)的PMU事件導(dǎo)出總線中啟用事件導(dǎo)出功能
0b0 不導(dǎo)出事件
0b1 當(dāng)計數(shù)沒有被禁止時導(dǎo)出事件 -
D, bit[3]
只有在EL0支持AArch32的情況下此位才有意義室抽,否則為保留字段
0b0 控制PMCCNTR每一個時鐘周期計數(shù)一次
0b1 控制PMCCNTR每64個時鐘周期計數(shù)一次
當(dāng)PMCR_EL0.LC == 1時搪哪,此位無效且PMCCNTR每一個時鐘周期計數(shù)一次
Arm不建議使用0b1 -
C, bit[2]
此位是WO/RAZ
0b0 無影響
0b1 重置PMCCNTR為0
重置PMCCNTR為0不影響對應(yīng)的PMCCNTR的溢出標(biāo)識位。
如果實現(xiàn)了FEAT_PMUv3p5坪圾,PMCR_EL0.LC的影響會被忽略晓折,則bit[63:0]會被重置。 -
P, bit[1]
此位是WO/RAZ
0b0 無影響
0b1 重置當(dāng)前異常等級下可訪問的所有事件計數(shù)器為0兽泄,不包括PMCCNTR
在EL0或者EL1下:如果實現(xiàn)并使能了EL2漓概,且MDCR_EL2.HPMN小于PMCR_EL0.N的話,則此位寫0b1對[MDCR_EL2.HPMN..(PMCR_EL0.N-1)]沒影響病梢,否則重置所有計數(shù)器胃珍。
在EL2和EL3下:此位寫0b1直接重置所有計數(shù)器
重置為0不影響對應(yīng)的計數(shù)器的溢出標(biāo)識位。
如果實現(xiàn)了FEAT_PMUv3p5,MDCR_EL2.HLP和PMCR_EL0.LP的影響會被忽略堂鲜,則所有計數(shù)器的bit[63:0]會被重置栈雳。 -
E, bit[0]
0b0 所有計數(shù)器[0..(PMN-1)],包括PMCCNTR都是不可用的
0b1 所有計數(shù)器[0..(PMN-1)]缔莲,包括PMCCNTR都由PMCNTENSET_EL0來使能哥纫。
如果實現(xiàn)了EL2,則:PMN = HDCR.HPMN(EL2是AArch32)痴奏;PMN = MDCR_EL2.HPMN(EL2是AArch64)蛀骇;PMN < PMCR_EL0.N的話,此位對[PMN..(PMCR_EL0.N-1)]沒有影響读拆。
如果沒有實現(xiàn)EL2擅憔,則PMN = PMCR_EL0.N。
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1001 | 0b1100 | 0b000 |
8. PMEVCNTR<n>_EL0, Performance Monitors Event Count Registers, n = 0 - 30
作用
????用來事件計數(shù)的計數(shù)器檐晕,n從0到30
位圖
-
Bits
如果實現(xiàn)了FEAT_PMUv3p5暑诸,則是[63:0],否則為[31:0]辟灰,多余的是保留位
訪問
????可以直接訪問計數(shù)器n个榕,也可以將PMSELR_EL0.SEL置為n,然后通過PMXEVCNTR_EL0間接訪問芥喇。
????如果訪問的時候用的n的值大于實現(xiàn)的計數(shù)器的數(shù)量的話西采,此行為將會是未定義的行為。
????EL0想要訪問的話继控,取決于PMUSERENR_EL0.{ER,EN}
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1110 | 0b10:n[4:3] | n[2:0] |
這里假設(shè)要訪問的是編號為7的計數(shù)器械馆,對應(yīng)的五位二進(jìn)制是00111,所以上訴的n[4:3]就是00武通,n[2:0]就是111
9. PMEVTYPER<n>_EL0, Performance Monitors Event Type Registers, n = 0 - 30
作用
????事件類型寄存器n用來配置對應(yīng)的計數(shù)器n霹崎。功能類似于PMCCFILTR_EL0對PMCCNTR的控制一樣。
位圖
-
MT, bit[25]
只有當(dāng)實現(xiàn)了FEAT_MTPMU(見ID_AA64DFR0_EL1.MTPMU)或?qū)崿F(xiàn)了一個定義的多線程PMU擴(kuò)展時此位才有效冶忱,否則為保留位
0b0 僅在控制PE上進(jìn)行事件計數(shù)
0b1 對來自任何在級別1及以上的仿畸,且與當(dāng)前PE具有相同親和性的PE的事件進(jìn)行計數(shù) -
evtCount[15:10], bits[15:10]
只有實現(xiàn)了FEAT_PMUv3p1時,此字段才有意義朗和,否則為保留字段
此時擴(kuò)展到字段[9:0],詳情見[9:0] -
evtCount[9:0], bits[9:0]
記錄要計數(shù)的事件編號
軟件必須要使用PE支持的事件來編程此字段簿晓。
(沒看懂這字段的含義眶拉,讀者可以自行查閱Arm手冊) -
其他
其他位的功能都和PMCCFILTR_EL0一樣,不再贅述
訪問
????可以直接訪問計數(shù)器n憔儿,也可以將PMSELR_EL0.SEL置為n忆植,然后通過PMXEVTYPER_EL0間接訪問。
????如果訪問的時候用的n的值大于實現(xiàn)的計數(shù)器的數(shù)量的話,此行為將會是未定義的行為朝刊。
????EL0想要訪問的話耀里,取決于PMUSERENR_EL0.{ER,EN}。
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1110 | 0b11:n[4:3] | n[2:0] |
10. PMINTENCLR_EL1, Performance Monitors Interrupt Enable Clear register
作用
????禁用計數(shù)器的溢出中斷請求功能
位圖
-
RES0
保留位 -
C. bit[31]
0b0 讀:表示PMCCNTR溢出中斷請求被禁用拾氓;寫:無影響
0b1 讀:表示PMCCNTR溢出中斷請求啟用冯挎;寫:禁用PMCCNTR溢出中斷請求 -
P<n>, bit[n], for n = 30 to 0
0b0 讀:表示PMEVCNTR<n>_EL0溢出中斷請求被禁用;寫:無影響
0b1 讀:表示PMEVCNTR<n>_EL0溢出中斷請求啟用咙鞍;寫:禁用PMEVCNTR<n>_EL0溢出中斷請求
當(dāng)實現(xiàn)并使能了EL2房官,則在EL1中N的值是MDCR_EL2.HPMN,否則N是PMCR_EL0.N续滋。如果N小于31翰守,則[30:N]是RAZ/WI的。
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b000 | 0b1001 | 0b1110 | 0b010 |
11. PMINTENSET_EL1, Performance Monitors Interrupt Enable Set register
作用
????使能計數(shù)器的溢出中斷請求功能
位圖
-
RES0
保留位 -
C. bit[31]
0b0 讀:表示PMCCNTR溢出中斷請求被禁用疲酌;寫:無影響
0b1 讀:表示PMCCNTR溢出中斷請求啟用蜡峰;寫:使能PMCCNTR溢出中斷請求 -
P<n>, bit[n], for n = 30 to 0
0b0 讀:表示PMEVCNTR<n>_EL0溢出中斷請求被禁用;寫:無影響
0b1 讀:表示PMEVCNTR<n>_EL0溢出中斷請求啟用朗恳;寫:使能PMEVCNTR<n>_EL0溢出中斷請求
當(dāng)實現(xiàn)并使能了EL2湿颅,則在EL1中N的值是MDCR_EL2.HPMN,否則N是PMCR_EL0.N僻肖。如果N小于31肖爵,則[30:N]是RAZ/WI的。
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b000 | 0b1001 | 0b1110 | 0b001 |
12. PMMIR_EL1, Performance Monitors Machine Identification Register
作用
????描述特定于軟件實現(xiàn)的性能監(jiān)視器參數(shù)臀脏。
????僅當(dāng)實現(xiàn)FEAT_PMUv3p4時劝堪,此寄存器才存在。否則揉稚,對PMMI_EL1的直接訪問是未定義的秒啦。
位圖
-
RES0
保留位 -
BUS_WIDTH, bits[19:16]
總線寬度。表明每個BUS_ACCESS事件相關(guān)的字節(jié)數(shù)搀玖。對應(yīng)取值如下:
0b0000 信息不可用
0b0011-0b1100余境,每增加一,字節(jié)數(shù)翻倍灌诅,0b0011表示4字節(jié)芳来,0b1100表示2048字節(jié),其他值是保留值猜拾。
每次傳輸都達(dá)到此字節(jié)數(shù)即舌。但是訪問可能小于總線寬度。
(沒看懂挎袜,讀者可自行查閱Arm手冊) -
BUS_SLOTS, bits[15:8]
總線計數(shù)顽聂。當(dāng)此字段為非零時肥惭,BUS_ACCESS事件在單個BUS_CERS周期中可能遞增的最大值為此值。 -
SLOTS, bits[7:0]
操作寬度紊搪。STALL_SLOT事件在單個周期中可能遞增的最大值蜜葱。如果未實現(xiàn)STALL_SLOT事件,則此字段可能為RAZ耀石。
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b000 | 0b1001 | 0b1110 | 0b110 |
13. PMOVSCLR_EL0, Performance Monitors Overflow Flag Status Clear Register
作用
????保存有計數(shù)器溢出的狀態(tài)標(biāo)識牵囤。寫此寄存器可以重置溢出狀態(tài)。
位圖
-
RES0
保留位 -
C, bit[31]
0b0 讀:自上一次這個位被重置以來娶牌,PMCCNTR計數(shù)器沒有溢出奔浅;寫:無影響
0b1 讀:自上一次這個位被重置以來,PMCCNTR計數(shù)器溢出了诗良;寫:重置此位為0汹桦。 -
P<n>, bit[n], for n = 30 to 0
0b0 讀:自上一次這個位被重置以來,PMEVCNTR<n>_EL0沒有溢出鉴裹;寫:無影響
0b1 讀:自上一次這個位被重置以來舞骆,PMEVCNTR<n>_EL0計數(shù)器溢出了;寫:重置此位為0径荔。
當(dāng)實現(xiàn)并使能了EL2督禽,則在EL1和EL0中N的值是MDCR_EL2.HPMN,否則N是PMCR_EL0.N总处。如果N小于31狈惫,則[30:N]是RAZ/WI的。
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1001 | 0b1100 | 0b011 |
14. PMOVSSET_EL0, Performance Monitors Overflow Flag Status Set register
作用
????當(dāng)對應(yīng)計數(shù)器溢出時鹦马,設(shè)置對應(yīng)的位胧谈,表明溢出
位圖
-
RES0
保留位 -
C, bit[31]
0b0 讀:自上一次這個位被重置以來,PMCCNTR計數(shù)器沒有溢出荸频;寫:無影響
0b1 讀:自上一次這個位被重置以來菱肖,PMCCNTR計數(shù)器溢出了;寫:置為1旭从。 -
P<n>, bit[n], for n = 30 to 0
0b0 讀:自上一次這個位被重置以來稳强,PMEVCNTR<n>_EL0沒有溢出;寫:無影響
0b1 讀:自上一次這個位被重置以來和悦,PMEVCNTR<n>_EL0計數(shù)器溢出了退疫;寫:重為1。
當(dāng)實現(xiàn)并使能了EL2鸽素,則在EL1和EL0中N的值是MDCR_EL2.HPMN蹄咖,否則N是PMCR_EL0.N。如果N小于31付鹿,則[30:N]是RAZ/WI的澜汤。
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1001 | 0b1110 | 0b011 |
15. PMSELR_EL0, Performance Monitors Event Counter Selection Register
作用
????用來選擇對應(yīng)編號的計數(shù)器。
????可以和PMXEVCNTR_EL0一起配合使用舵匾,來決定選擇的計數(shù)器的值俊抵。
????也可以和PMXEVTYPER_EL0一起配合使用,來決定選擇的計數(shù)器的計數(shù)事件坐梯,計數(shù)模式等徽诲。
位圖
-
RES0
保留位 -
SEL, bits[4:0]
取值為0b00000到0b11111,其中0b11111代表計數(shù)器PMCCNTR吵血,其余的代表PMEVCNTR<n>_EL0谎替。
當(dāng)值為0b11111:則讀寫PMXEVTYPER_EL0,實際上是在讀寫PMCCFILTR_EL0
當(dāng)值為剩下的:則讀寫PMXEVTYPER_EL0蹋辅,實際上是在讀寫PMEVTYPER<n>_EL0
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1001 | 0b1100 | 0b101 |
16. PMSWINC_EL0, Performance Monitors Software Increment register
作用
????當(dāng)某個PMEVCNTR<n>_EL0計數(shù)器被配置用來作為計算軟件自增事件(事件編號0x00)的計數(shù)器時钱贯,將它的計數(shù)增加一。
位圖
-
RES0
保留位 -
P<n>, bit[n], for n = 30 to 0
0b0 無影響侦另,寫操作被忽略
0b1 如果有某個已經(jīng)使能的計數(shù)器被配置來計算軟件自增事件的秩命,則給那個計數(shù)器增加一,否則無影響褒傅,寫操作被忽略弃锐。
當(dāng)實現(xiàn)并使能了EL2,則在EL1和EL0中N的值是MDCR_EL2.HPMN殿托,否則N是PMCR_EL0.N霹菊。如果N小于31,則[30:N]是WI的支竹。
只寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1001 | 0b1100 | 0b100 |
17. PMUSERENR_EL0, Performance Monitors User Enable Register
作用
????決定EL0是否可以訪問性能監(jiān)視器
位圖
-
RES0
保留位 -
ER, bit[3]
Event counter Read旋廷。EL0對事件計數(shù)器的訪問會被trap到EL1或者EL2(實現(xiàn)并使能了EL2,且HCR_EL2.TGE是1)
0b0 當(dāng)PMUSERENR_EL0.EN也是0時唾戚,EL0讀取PMXEVCNTR_EL0和PMEVCNTR<n>_EL0會被trap柳洋。
0b1 覆蓋PMUSERENR_EL0.EN并使能:在EL0對PMXEVCNTR_EL0和PMEVCNTR<n>_EL0的只讀功能;在EL0對PMSELR_EL0的讀寫能力叹坦;在EL0對PMSELR的讀寫能力熊镣。 -
CR, bit[2]
Cycle counter Read。EL0對PMCCNTR的訪問會被trap到EL1或者EL2(實現(xiàn)并使能了EL2募书,且HCR_EL2.TGE是1)
0b0 當(dāng)PMUSERENR_EL0.EN也是0時绪囱,EL0讀取PMCCNTR會被trap。
0b1 覆蓋PMUSERENR_EL0.EN并使能:在EL0對PMCCNTR的讀寫能力莹捡。 -
SW, bit[2]
EL0對軟件自增的寫操作會被trap到EL1或者EL2(實現(xiàn)并使能了EL2鬼吵,且HCR_EL2.TGE是1)
0b0 當(dāng)PMUSERENR_EL0.EN也是0時,EL0寫PMSWINC_EL0會被trap篮赢。
0b1 覆蓋PMUSERENR_EL0.EN并使能:在EL0對PMSWINC_EL0的寫能力齿椅。 -
EN, bit[0]
0b0 制EL0訪問寄存器會被trap琉挖,除非被PMUSERENR_EL0.{ER, CR, SW}覆蓋
0b1 在EL0,軟件可以訪問所有指定的寄存器涣脚。
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1001 | 0b1110 | 0b000 |
18. PMXEVCNTR_EL0, Performance Monitors Selected Event Count Register
作用
????讀或者寫某個計數(shù)器示辈,計數(shù)器是由PMSELR_EL0.SEL的值決定的
位圖
????如果實現(xiàn)了FEAT_PMUv3p5
????否則為
-
RES0
保留位 -
PMEVCNTR<n>
對應(yīng)于由PMSELR_EL0.SEL決定的計數(shù)器的值
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1001 | 0b1101 | 0b010 |
19. PMXEVTYPER_EL0, Performance Monitors Selected Event Type Register
作用
????讀或者寫PMEVTYPER<n>_EL0或者PMCCFILTR_EL0,由PMSELR_EL0.SEL選擇的計數(shù)器決定遣蚀。
位圖
-
RES0
保留位 -
Event type register or PMCCFILTR_EL0
值為0-30矾麻,此寄存器映射的是PMEVTYPER<n>_EL0
值為31,此寄存器映射的是PMCCFILTR_EL0
讀寫
op0 | op1 | CRn | CRm | op2 |
---|---|---|---|---|
0b11 | 0b011 | 0b1001 | 0b1101 | 0b001 |