iT邦幫忙

2022 iThome 鐵人賽

DAY 28
0
Software Development

RISC-V: 深入淺出從入門到放棄系列 第 28

DAY:28 perf(二)在risc-v上的限制

  • 分享至 

  • xImage
  •  
tags: 鐵人賽

0.前言

好的,昨天已經簡單介紹了perf的使用方法,那今天來介紹一些深度的一些問題,也就是過去risc-v架構上使用perf會有一些限制,並不能完整使用perf的功能,至於是哪些呢,就且我慢慢娓娓道來~

1. risc-v相關限制

硬體的監控單元在risc-v稱之為hpm(hardware performance monitor),而在其他架構則稱之為pmu(performance mointor unit),為了方便性筆者這邊還是稱之為hpm,risc-v所缺少的功能,如下:

  1. 開啟/關閉計數器
  2. 計數器溢位時(overlow)所造成的interrupt
  3. 中斷指示器,不可能讓每個計數器,皆有自己的interrupt port,因此需要有個指示器來通知軟體,哪個計數器發生overflow
  4. 寫值到計數器當中,無法在s mode直接寫值到計數器當中

2. 解決方案

接下來會介紹,目前andes所提出的解決方法,明天會介紹目前risc-v所提出來的解決方法。
目前是在 m mode 當中新增6個 CSR,使解決上述所遇到的問題

  • mcounterwen (Machine Counter Write Enable):
    該CSR控制著是否允許 [m|s|u] mode對hpm進行寫入的權限,當相對應的bit被舉起時,才允許,反之不允許,若不允許而嘗試寫值到cycle, time, instret, hpmcounter3, hpmcounter4, hpmcounter5, or hpmcounter6 以上CSR會觸發illegal instruction。
  • mcounterinten ( Machine Counter Interrupt Enable):
    該CSR控制著是否有counter產生overflow interrupt的情況
    當相對應的bit為0表示目前沒有產生overflow interrupt情況,反之有。
  • mcountermask_[m|s|u] (Machine Counter Mask for Machine|Supervisor|User Mode):
    該CSR控制著counter是否能在該mode增加計數。
    當相對應的bit被舉起時,表示該counter無法在該mode繼續增加計數,以mcountermask_m為例,假設第3位bit被舉起,表示該hpmcounter3就不會在m mode增加計數了,其他以此類推~
  • mcounterovf (Machine Counter Overflow Status):
    該CSR控制著是否有counter overflow的情形,當相對應的bit被舉起時,表示有overflow的發生,反之則沒有。

3. 後記

今天說明 risc-v perf 的一些相關限制,以及 andes 是如何解決的,該方法也有被收錄到 linux kernel 當中,具體的實作可以觀賞下方的參考文章,但近期已經被移除了QQ,後來 risc-v 有個統一的方法,想解決的目標是一致的,但該方法不需用使用到如此多的CSR,此外連 hypervisor extension 的情形也有想到了,因此明天就介紹 risc-v 所統一出來的方案吧,也就是新增 Sscofpmf 此 extension,明天見!

reference

Supporting PMUs on RISC-V platforms (二)
Supporting PMUs on RISC-V platforms (三)


上一篇
Day27: 你所應該知道的 perf 介紹及使用
下一篇
DAY29: RISC-V: perf(三) sscofpmf
系列文
RISC-V: 深入淺出從入門到放棄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言