iT邦幫忙

0

[gem5][simple-rv-vp] 使用 m5ops 來錄製 stats,以及停止模擬

  • 分享至 

  • xImage
  •  

系列文章 : [gem5] 從零開始的 gem5 學習筆記

有時候我們希望錄製效能數據,但是希望只錄進我們感興趣的部分 ( region of interest, ROI ),這時候我們需要某些手法,來讓我們可以排除其他部分。

什麼是 M5Ops ?

M5Ops 是一群特殊的 instruction,當模擬器執行了這一個特殊指令之後,會將控制權轉交給 gem5 模擬器,並且依照 instruction 來執行不同的任務。

例如

  • 馬上停止模擬器
  • 輸出數據效能 …

原理簡述 :

使用 M5ops : exit

https://github.com/TommyWu-fdgkhdkgh/simple-riscv-vp/blob/main/firmware/m5ops.c#L1-L7
→在這一行,firmware 會去執行 m5ops

https://github.com/gem5/gem5/blob/v25.0.0.0/src/sim/pseudo_inst.cc#L178
→之後 gem5 會去執行 m5exit

m5exit(ThreadContext *tc, Tick delay)

這個 function 有一個 64bits 的參數 delay,這個參數會由執行這個 instruction 的 a0 ( 32 bits ), a1 ( 32 bits ) registers 來決定。

因為我不想要 delay,所以才在 firmware 裡面的實作,把 a0 跟 a1 歸零。

使用 M5ops : resetstats

https://github.com/TommyWu-fdgkhdkgh/simple-riscv-vp/blob/main/firmware/dhrystone/dhrystone_main.c#L171
在 dhrystone 運行之前,先把要輸出到 m5out/stats.txt 的數據清成 0。

https://github.com/gem5/gem5/blob/v25.0.0.0/src/sim/pseudo_inst.cc#L314
之後會去執行這個 function,因為希望參數 delay, period 這兩個 64 bits 的參數為 0。
於是需要將 a0 ~ a3 這四個 registers ( 共 128 bits ) 都清成 0。

使用 M5ops : dumpstats

https://github.com/TommyWu-fdgkhdkgh/simple-riscv-vp/blob/main/firmware/dhrystone/dhrystone_main.c#L237
這個指令可以把累積數據輸出到 stats.txt。

使用 M5ops : dumpresetstats
這個指令的意思是把 stats.txt 輸出後,再把累積數據清成 0。

總結

使用 M5Ops,我們可以在運行 ROI ( region of interest, 在這裡是 dhrystone ) 之前,把累積的數據用 resetstats 清空,然後在執行完 dhrystone 後馬上用 dumpstats 把數據輸出,讓我們可以只錄製 ROI 的效能數據,排除開機跟關機的數據。

Reference


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言