iT邦幫忙

鐵人檔案

2023 iThome 鐵人賽
回列表
Software Development

從零開始的RISC-V ISA Simulator (Another Little RISC-V ISA Simulator) 系列

RISC-V是正當紅的指令集架構,
同時近年來有許多精巧且優秀的開源RISC-V simulator,
而筆者過去僅有使用或根據simulator現有框架進行修改的經驗,
未曾從無到有進行simulator的實作,也沒有過參與開源專案,
為此希望能透過這次鐵人賽,從目前常見的RISC-V simulator的介紹到透過C++實作。

最終目標為在實作出來的Simulator上並將Linux boot成功。

可能會使用到及介紹到的軟體:
Spike, Qemu, Gem5, BusyBox, SystemC, BuildRoot ....

鐵人鍊成 | 共 30 篇文章 | 3 人訂閱 訂閱系列文 RSS系列文
DAY 21

Day 21 - CSR指令,軟體與硬體的溝通

CSR CSR全名為control system register,是軟體用來與系統溝通的暫存器,在整個RISC-V系統中有許許多多的CSR,每個CSR內各自的...

2023-10-06 ‧ 由 yoga57894 分享
DAY 22

Day 22 - RV64I,64bit架構底下特有的指令實作

今天要來把RV64I才有的指令做完。 RV64IRV64I特有的指令大多是原先32bit的指令因為架構擴展到64bit,因此需要新增32bit的特別型態,例如說...

2023-10-07 ‧ 由 yoga57894 分享
DAY 23

Day 23- System Instruction,與特權系統相關的指令們

System Instruction System Instruction指的是跟系統息息相關的指令,例如前面有敘述過的CSR指令,又或者是今天要介紹的ecal...

2023-10-08 ‧ 由 yoga57894 分享
DAY 24

Day 24 - BuildRoot,一鍵建立Linux Kernel的好方法

BuildRoot BuildRoot是一個建立LinuxKernel的框架,整個BuildRoot是透過Kconfig和Makefile配置的,和編譯Linu...

2023-10-09 ‧ 由 yoga57894 分享
DAY 25

Day 25 - 64bit I-extension,ZiCSR測試及實作完成

今天要把前兩天的技術債補完,分別是System Instruction以及auipc/lui。 lui測試設定imm為1,這樣讀進來的值會是0x1000 TES...

2023-10-10 ‧ 由 yoga57894 分享
DAY 26

Day 26 - RISC-V Atomic指令,確保數據一致的指令

RISC-V A-extension RISC-V的A-extension指的是atomic instruction extension,而atomic ins...

2023-10-11 ‧ 由 yoga57894 分享
DAY 27

Day 27 - RISC-V M Extension , 簡單來說...就是乘除

RISC-V M Extension 與昨天介紹的A Extension不同,M Extension很好理解,就是乘法和除法的指令。之前在介紹I-instruc...

2023-10-12 ‧ 由 yoga57894 分享
DAY 28

Day 28 - 真正執行risc-v test、跑過第一支elf、及regression環境

今天的任務就是要把RISC-V Test跑起來,然後看有哪些錯誤。 RISC-V TEST Pass/Fail判斷 首先我們觀察RISC-V Test發現他最後...

2023-10-13 ‧ 由 yoga57894 分享
DAY 29

Day 29 - Debug, RV64I Test Pass

Regression tool modify & log system 昨天演到RV64I執行時有遇到諸多bug,我們重新修改debug log及scr...

2023-10-14 ‧ 由 yoga57894 分享
DAY 30

Day 30 - 尾聲,以及完賽心得。

最後一天,如同昨天說的,今天至少會把IMA三個extension的test全部通過。 RV64M TEST首先我們先試著透過原先建立好的環境試著跑看看RV64M...

2023-10-15 ‧ 由 yoga57894 分享