iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0

評價模擬器

在介紹模擬器種類時有和大家科普模擬器根據目的不同會有不同的實現方式,而這些實現方式也會影響模擬器的模擬速度,模擬經度,模擬準確度等,因此在最後下了一個結論:要評價模擬器是很難的。

而其實在過去也有學者思考過這個問題,在A Survey of Computer Architecture Simulation Techniques and Tools一文中就有提到這個現象,同時他提出了六大指標可以用來評價模擬器的好壞,而今天由於要搭夜車南下,比較沒有辦法像原先計畫的建立環境,正好就來向大家介紹分為哪六種指標。

評價模擬器的六大指標

Eeck hout將模擬器分為下列四項來進行評價,分別為準確度(accuracy), 執行時間(evaluation time), 開發時間(development time)及覆蓋率(coverage),而Ayaz Akram在此之上提出了用來評價模擬器的六大指標,分別為準確度(accuracy), 執行效能(performance), 模擬精細度(level of details), 開發者友善度(easiness of development), 開發彈性 (flexibility)以及 使用者友善度 (user friendliness).

  • 準確度
    • 準確度顧名思義,指的是模擬器與模擬目標在某個項度上有多接近,Ayaz Akram這裡的準確度特別指時間上的準度(performance accuracy),但我認為可以包含行為準度以及時間準度甚至能耗準度。例如說先前提過的時序模擬器準確度就會行為模擬器來的較高,因為他與模擬目標更為接近;有一派做法會將硬體描述語言透過工具直接轉換成C語言等模擬方式,這種作法就會有極高的準確度。
  • 執行效能
    • 執行效能指的是模擬器執行時間,這裡可能要特別注意區分模擬器速度與模擬出來的模擬目標的執行速度雖然都可稱為performance,但背後的物理意義不同。一般來說模擬的執行效能會和準確度成反比,行為模擬器一般會有較高的準確度,而像QEMU那樣的動態轉譯則能有更高的執行效能。
  • 模擬精細度
    • 模擬精細度指的是模擬器包含了硬體的多少細節,可能與準確度會有點混淆,但準確度可以是透過額外的手段得出,例如設計一套模擬器,可以透過行為模擬器的指令log去進行時序上的分析,儘管準確度可能可以調整到很高,但卻沒有實際模擬對象的流水線行為,沒辦法反映其背後的硬體架構。
  • 開發者友善度
    • 開發者友善度注重在對於開發者維護、建立、除錯等友善度,例如說是否提供debugger功能可以快速的除錯,有沒有提供完整的log等等。
  • 彈性
    • 彈性不同於開發者友善度,注重的點在於說對於開發者來說,我要新增一個新的功能時的友善程度,例如說我今天想要以不同的分支預測器進行分支預測,是否容易修改。又或者今天指令集產生變動,新增一個CSR等,能夠越容易進行修改的彈性越大。
    • 另一方面,作者也提到彈性包含是否提供足夠的選項給使用者,例如說我作為使用者今天想要調整記憶體大小,記憶體之間的延遲時間等等,對於使用者來說進行功能上等修改時能夠越方便則代表彈性越高,例如說可以不用重新編一整份模擬器等。
  • 使用者友善度
    • 使用者友善度則會根據使用者使用模擬器的目的而由所不同,例如說對於想要學習模擬器的人來說,越容易去學習的就是越友善的。而對於想要修改不同的組態進行實驗的用戶來說,是否提供簡單的修改方式,又或者是是否提供一次大量進行模擬的方法,是否能夠加快模擬的運行等都是考量使用者友善度的重點。

Spike, QEMU, Gem5

我們可以試著套用Ayaz Akram的六大指標來分析前面提過的三種模擬器/仿真器,以下取每項的頭文字作為簡稱。事先聲明,這個部分是筆者個人的想法與使用經驗,如果有讀者覺得認知有所出入的也歡迎在底下留言讓我知道,考量到上述六點,我會給Spike, QEMU, Gem5這三種模擬器以下的評價

Spike : 準確度A-,執行效能P+++,模擬精細度L-,開發者友善度E+++,彈性F,使用者友善度U+

Spike作為Risc-V官方的模擬器,除了因為是功能模擬器而註定沒辦法準確度太高外其他部分都有不錯的評價,特別是他將每個指令分別單個標頭檔的形式區分開來的形式對於開發者來說可以很方便的新增指令,且也支援基本的debug,倒出log等功能,但由於Spike開發的時間較早,因此會有像是BBL,RISC-V fesvr等後續可能被OPENSBI等取代的功能。

QEMU : 準確度A-,執行效能P+++++,模擬精細度L-,開發者友善度E,彈性F+,使用者友善度U++

QEMU同樣的由於是仿真器,因此注定在準確度、精細度上會稍差一點,但其在執行速度上的優越表現足以彌補這部分的缺點,而且QEMU本身支援多種不同的ISA,也能夠透過Option選擇MMU, No-MMU等選項,對於User來說無疑是功能相當強大的一套工具。而缺點也正是因為它太過強大,所以學習成本稍高,例如說今天想要在QEMU上新增一個指令時會需要考慮到要怎麼翻譯成對應的本機指令,開發難度較高。

Gem5 : 準確度A,執行效能P+,模擬精細度L+,開發者友善度E+++,彈性F+++,使用者友善度U+++

Gem5作為三者中唯一可以進行時間模擬的模擬器,無疑是在準確度、模擬精細度上要亮眼許多,而作為代價執行效能就遜色不少。不過Gem5本身有一套自己的ISA描述語言,可以很輕鬆的新增指令,且也具備相當大的彈性,內建的分支預測器、處理器架構、不同的記憶體類型對於使用者來說也相當方便,因此在友善度及彈性上有不錯的分數,同時Gem5還支援先前有提過的Checkpoint系統,可以快速地回到某個時間點進行模擬。


碎碎念 : 今天回老家所以稍晚更新,明天會依照計畫開始構思模擬器的規格及建立環境。


上一篇
Day 6 - Gem5, 學習處理器架構的好平台
下一篇
Day 8 - Another Little RISC-V ISA Simulator
系列文
從零開始的RISC-V ISA Simulator (Another Little RISC-V ISA Simulator)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言