iT邦幫忙

2023 iThome 鐵人賽

DAY 1
0

提到模擬器,大家會想到什麼呢?

我想應該大部分的人直覺會先想到的是手機模擬器吧,只要在Google搜尋輸入模擬器,最先看到的無非是各大手機模擬器品牌的廣告,內容則是標榜說運行速度最快,最流暢,超高清晰度,支援手把操作等等,透過這些模擬器,玩家們可以在效能較好的電腦上大殺四方,並且可以透過手把及鍵盤實現在手機上很難達到的操作。

但可能很少人知道,在IC設計領域,許多硬體,特別是處理器也都會有人來開發其對應的模擬器,這是為什麼呢? 其實答案跟玩家們需要手機模擬器的原因很像,筆者先在這裡跟大家賣個關子,等到後續的章節就會向大家分享

這系列文章會跟大家簡單介紹硬體模擬器的目的為何,以及各式實現方法的利弊,一直到透過C++去實現一個最簡單可以開啟linux的模擬器。

為什麼想要寫這個主題

RISC-V作為一個開源的處理器架構早已不是個新聞,而大部分的人對於RISC-V通常都是作為使用者的角度去思考,比較不會細究每一個自己撰寫的程式語言最終會被翻成怎樣的機器語言,甚至在硬體的角度上是怎麼實現的,而實現RISC-V的模擬器無疑是在低成本下能跳脫出RISC-V使用者的角色並學習RISC-V架構的方法之一 (相較購買開發版甚至實作硬體,這個成本真的很低)

筆者剛好有一些模擬器操作使用及修改的經驗,因此希望能透過今年鐵人賽的機會跟大家分享RISC-V處理器的模擬器實作,另外一方面是近年來也有許多精簡且高效的RISC-V的開源模擬器,例如以不到萬行程式碼的內容完成有能力開啟linux的模擬器的mini-rv32 “cnlohr/mini-rv32ima“ ,及能夠執行doom等遊戲甚至能輸出音效的rv32emu "sysprog21/rv32emu" 等等,每當看到這些模擬器時,就一直會有想要敲一個自己的模擬器的衝動,為此也藉著鐵人賽來逼著自己在下班時間還能乖乖坐在螢幕前coding。

適合哪些人看

  • 對於處理器底層邏輯有興趣的人
  • 對於RISC-V好奇,想要學習RISC-V指令的人
  • 喜歡模擬器或模擬類遊戲,覺得考慮事情抽象層很有趣的人
  • 想要以軟體進行硬體開發的人

透過這篇文章,我能獲得哪些內容

能對於模擬器有基本認知,瞭解常見模擬手法及優缺點,並實作一個簡單而能開啟linux的64-bit RISC-V模擬器,及模擬器可以具備哪些功能方便操作者及設計者作使用。

本系列文章預計會有的章節

  • 模擬器相關知識科普 (約1~3天)

    • 模擬器與仿真器 (simulator/emulator) 的介紹
    • 常見的模擬器實現方法及優缺點
  • 常見RISC-V模擬器的介紹及使用方法 (約1~3天)

    • 常見的RISC-V模擬器 (Spike, Qemu, Gem5, Verilator)
  • 開發/測試環境搭建 (約1~2天)

    • HelloWorld (cross compiler介紹及riscv toolchain安裝)
    • riscv-test編譯及自動化測試
  • RISC-V指令介紹及模擬器實作 (約15天)

    • 規格定義
    • ELF Loader實現
    • I/M/A 的指令介紹及實現
    • Performance分析工具及優化
  • Linux boot-up (約5天)

    • buildroot簡介及busybox介紹
    • 透過buildroot搭建Linux
    • 完成Linux boot-up

本系列文章不會有的內容

  • RISC-V的前世今生 (有很多大大們說得很好,小弟不獻醜)
  • Linux的介紹 (關於Linux我總是知道的太少XD)
  • MMU實現 (我有想過要但我覺得會做不完......)

參考資料 (新增中)

A Survey of Computer Architecture Simulation Techniques and Tools


碎碎念 : 拖著拖著就到9/16了XD,先期許自己能夠完賽吧~~


下一篇
Day 2 - 關於模擬器和仿真器的二三事
系列文
從零開始的RISC-V ISA Simulator (Another Little RISC-V ISA Simulator)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言