RISC-V在云端、數據中心、汽車與網絡技術中的頻繁創(chuàng)新和亮相,已經讓這一成長中的ISA一只腳邁入了高性能計算場景。然而缺少強大的性能監(jiān)測工具讓RISC-V的應用優(yōu)化成了問題,尤其是在RISC-V如今不少軟件源于從非原生移植的情況下,運算性能不能發(fā)揮出百分百的實力成了令人頭疼的問題。
與此同時,英特爾和ARM都擁有自己專用的性能監(jiān)控方案,讓開發(fā)者可以發(fā)揮出其硬件的全部效力,但RISC-V仍然依靠定制或廠商特定的方案,而缺少通用性能監(jiān)控軟件工具的完整支持。
Perf對RISC-V的支持
系統(tǒng)級的性能優(yōu)化往往是靠性能剖析和代碼優(yōu)化來實現的,前者是為了尋找性能瓶頸,后者則是為了改善軟件性能,因此這類性能分析/監(jiān)控工具成了處理器開發(fā)時必不可少的軟件。盡管RISC-V的ISA規(guī)范已經定義了硬件性能監(jiān)控(HPM),但總體支持程度上仍未完善。
就以Linux上的性能分析工具Perf為例,該工具可以借助PMU(性能監(jiān)控單元)、tracepoint和內核計數器來分析程序中的硬件事件,比如處理器時鐘周期、指令計數器等,也可以分析一些軟件事件,比如Page Fault等。
Perf分為兩種模式,一種是perf stat,一種是perf record。如今上游Linux的perf雖然已經對RISC-V有了支持,但僅對perf stat有一些基本的支持。比如mcycle這一CSR用于處理器運行的時鐘周期計數,而minstret這一CSR則用于退休指令計數。
RISC-V privileged規(guī)范中,RISC-V定義了幾種特權模式,分別是U-mode(用戶模式)、S-mode(管理員模式)和M-mode(機器模式)。但目前只有在機器模式下才能對這些寄存器進行讀寫,管理員模式下缺乏可寫入的寄存器。
計數器卻又是每時每刻運行中的,所以現在可以做到周期和指令計數,卻無法啟用、禁用和暫停計數器,無法使用任何可編程計數器和事件采樣。不僅如此,RISC-V的perf不僅無法處理計數器溢出,也不支持溢出中斷。雖然市面上很多RISC-V處理器已經考慮到了這一點,采用定制的形式來完成部分任務,比如Esperanto就為自己的ET-SoC-1千核RISC-V處理器加入了商業(yè)級的芯片除錯與性能監(jiān)控能力,但RISC-V規(guī)范本身缺少這些支持,這也就不利于當下RISC-V的開源生態(tài)。
完整的Perf支持缺少了什么?
于是我們現在發(fā)現管理員模式下無法寫入計數器,也無法改變mcountinhibit來直接開啟或停止計數器,也無法改變mhpmcountern來開啟或禁用直接讀取。接著就是沒有中斷指示器,我們不知道哪一個計數器出現了數值溢出,也沒有事件篩選功能。那么針對這些問題的解決方案是什么,哪些措施才能實現完整的Perf支持呢?來自西部數據的Atish Patra在近期的RISC-V峰會上提出了他以及開發(fā)社區(qū)所青睞的答案——SBI PMU擴展和sscofpmf ISA擴展。
SBI PMU擴展將作為一個接口,讓管理員模式下的軟件發(fā)現硬件計數器的細節(jié),針對特定的perf事件來配置硬件計數器,在請求下開始或停止計數器。除此之外,SBI PMU擴展還引入了固件性能計數器來監(jiān)控固件事件,比如未對齊的存取指令數、RFENCE和IPI數等等。如今在RISC-V的SBI 1.0版本中我們也可以看到,PMU擴展已經成了該規(guī)范的一部分。
接著是sscofpmf擴展,ss代表的是特權架構和管理員級的擴展,cofpmf代表的是溢出計數和特權模式篩選。該擴展新增了一個32位的scountovf只讀寄存器,該寄存器存儲的是29個mhpmcounter的第63位(OF),如此一來就能準確快速地判斷究竟是哪個事件的計數器溢出了。這一擴展已經凍結,目前處于審查狀態(tài),預計不久的將來就會批準,來自Linux內核的支持工作也在推進中。
小結
RISC-V作為一個尚處于發(fā)展初期的架構,在某些方面確實還有不及其前輩x86和ARM的地方,我們這次從性能監(jiān)控上就能看出一些端倪,但RISC-V自身的特性也為它帶來了不小的優(yōu)勢。
首先,RISC-V是站在巨人的肩膀上發(fā)展的,它可以有效地規(guī)避以上那些架構走錯的老路。其次,開源開放讓RISC-V有了龐大的社區(qū)支持,像以上這些解決方案,其實已經被多次提及,來自社區(qū)的力量勢必可以讓RISC-V走得更遠。
審核編輯:何安淇
-
監(jiān)測
+關注
關注
2文章
4464瀏覽量
47585 -
RISC-V
+關注
關注
49文章
2967瀏覽量
53640
原文標題:優(yōu)化的關鍵,RISC-V中的性能監(jiān)控
文章出處:【微信號:elecfans,微信公眾號:電子發(fā)燒友網】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
搭載RISC-V芯片Fedora操作系統(tǒng)中,安裝好perf工具之后,輸入pef top -g -e cpu-clock 無法顯示內核函數的符號?
在Fedora系統(tǒng)中打算繪制火焰圖遇到的問題求解
Ubuntu 24.04:“perf stat”報告未計算的事件是怎么回事?
scons使用dist生成的工程缺少文件怎么解決?
請問Finsh可以支持裸機?
打開lvpro缺少vi文件,尋求VIPM來源!!!!
缺少電源濾波器會有哪些變化?
RTsmart源碼編譯錯誤,提醒我缺少文件導致make失敗,為什么?
了解信號完整性的基本原理
完整的Perf支持缺少了什么
評論