哈嘍,大家好,我是程序員秘書LittleG。
ARM Performance Monitor Unit (PMU) 是一種硬件組件,用于跟蹤和計數(shù)系統(tǒng)中的底層硬件事件。
集成在ARM架構的處理器中,可以用于監(jiān)控和度量處理器及系統(tǒng)性能的關鍵指標,對于性能分析、調試、能耗管理和優(yōu)化軟件性能至關重要。
正文
用途說明:
性能分析:通過監(jiān)測與CPU相關的事件(如執(zhí)行指令數(shù)、捕獲異常數(shù)、時鐘周期數(shù)等),與cache相關的事件(如cache訪問次數(shù)、miss次數(shù)等),以及與TLB(Translation Lookaside Buffer)有關的事件,PMU 可以幫助了解程序的執(zhí)行行為,進而對程序進行性能分析和調優(yōu)。通過測量執(zhí)行時間、指令周期數(shù)、緩存命中率等,幫助識別程序的性能瓶頸。
系統(tǒng)調試:通過跟蹤特定事件的發(fā)生,如中斷延遲、上下文切換頻率,輔助系統(tǒng)級別的調試。
能耗管理:監(jiān)控處理器活動,協(xié)助實現(xiàn)動態(tài)電壓和頻率調整(DVFS),降低能耗。
軟件優(yōu)化:提供數(shù)據(jù)支持,幫助我們針對特定硬件特性優(yōu)化代碼,提升運行效率。
功能組件:
事件計數(shù)器:PMU 包含一組事件計數(shù)器,分為兩類,一類是cycle counter
,用于計數(shù)CYCLES事件;另一類是performance counter
,用于計數(shù)其他類型的事件。在ARMv8
架構中,例如Cortex-A53
,有1個cycle counter和6個performance counters。
控制寄存器:PMU 包含用于控制計數(shù)器的寄存器,可以通過編程配置計數(shù)的事件類型、中斷使能/屏蔽等。
寄存器訪問:PMU 寄存器可以通過特定的系統(tǒng)控制指令訪問,如在ARM架構中,可以通過CP15協(xié)處理器或外部APB接口來編程。
中斷和溢出:當計數(shù)器溢出時,可以產生overflow中斷,PMU硬件會根據(jù)控制寄存器內設置的中斷屏蔽位判斷是否將該中斷發(fā)送給CPU處理。
使用場景
場景1:假設我們要分析一段代碼的性能,特別是想了解cache
的miss
次數(shù),可以按照以下步驟使用PMU:
確定監(jiān)控事件:根據(jù)ARM架構的文檔,找到代表cache miss的事件編碼。
配置PMU:通過編程設置PMU的控制寄存器,選擇相應的事件計數(shù)器,并將其配置為監(jiān)控cache miss事件。
啟動計數(shù):使能PMU硬件和選定的計數(shù)器。
運行代碼:執(zhí)行需要分析的代碼段。
讀取計數(shù)器:代碼執(zhí)行完成后,讀取事件計數(shù)器的值,這個值就是cache miss的次數(shù)。
分析結果:根據(jù)計數(shù)器的值,分析代碼的性能,找出可能的性能瓶頸。
調優(yōu)代碼:根據(jù)分析結果,對代碼進行調優(yōu),比如增加數(shù)據(jù)的局部性,減少cache miss。
場景2:假設發(fā)現(xiàn)有某一款特定應用在某款基于ARM Cortex-A
系列處理器的手機上運行緩慢,想要找出性能瓶頸所在。
確定監(jiān)控事件:首先,需要確定哪些性能指標可能是瓶頸的來源,例如CPU利用率過高、緩存未命中頻繁等。因此,他可能會選擇監(jiān)控“指令周期數(shù)”、“L1緩存未命中次數(shù)”和“CPU周期空閑比例”等事件。
配置PMU:編寫代碼,使用適當?shù)南到y(tǒng)調用來配置PMU。例如,在Linux環(huán)境下,可能使用perf_event_open
系統(tǒng)調用或perf
命令行工具,指定要監(jiān)控的事件和計數(shù)器。
數(shù)據(jù)收集:應用在目標設備上運行時,PMU自動累積選定事件的計數(shù)。開發(fā)者可以在應用運行一段時間后,讀取計數(shù)器的值,或者使用perf record
記錄整個運行過程,之后通過perf report
分析數(shù)據(jù)。
分析與優(yōu)化:分析結果顯示,L1緩存未命中率極高,表明應用頻繁訪問的數(shù)據(jù)未有效利用緩存。開發(fā)者據(jù)此優(yōu)化數(shù)據(jù)訪問模式,比如通過數(shù)據(jù)局部性改善來減少緩存未命中,或者調整算法減少不必要的運算。
驗證改進:優(yōu)化后,再次使用PMU監(jiān)控同樣的性能指標,驗證優(yōu)化措施的效果。如果緩存未命中率顯著下降,且整體應用響應時間縮短,則證明優(yōu)化成功。
下期見~