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 11

Day 11 - TDD, GTest & CTest

為什麼要寫測試 在過去程式人員往往不負責測試,測試由專門的測試人員來負責。但近年來有人提倡測試驅動開發(Test-driven development TDD)...

2023-09-26 ‧ 由 yoga57894 分享
DAY 12

Day 12 - ELF Loader (1 / 2)

ELF今天要來實作ELF Loader,那什麼是ELF呢,我們又為什麼要做ELF Loader呢?ELF指的是可執行與可鏈結格式(Executable and...

2023-09-27 ‧ 由 yoga57894 分享
DAY 13

Day 13 - ELF Loader (2/2)

elf loader今天延續昨天的work,我們要來將elf loader的內容補完,根據昨天的內容,我們要有能力去判斷我們需要的是elf file內的哪一個c...

2023-09-28 ‧ 由 yoga57894 分享
DAY 14

Day 14 - CPU Pipeline

CPU流水線 CPU的五級架構,也稱為五級流水線,是一種用於提高中央處理器(CPU)性能的設計架構,它將指令的執行過程分為五個階段,以實現並行處理。以下是五級流...

2023-09-29 ‧ 由 yoga57894 分享
DAY 15

Day 15 - 在開始刻指令之前-RISC-V ISA Test

指令的測試 在開始實現指令之前,我們一樣要來寫指令的測試。不過指令的測試其實是一件很不容易的事情,例如說我們今天要測試一道ADD指令,在RISC-V裡面的格式為...

2023-09-30 ‧ 由 yoga57894 分享
DAY 16

Day 16 - RISC-V ALU 指令

RV64IMA_zifencei_zicsr 我們先來盤點一下總共要實作的指令有哪些,以及指令的格式有哪些。 在那之前推薦兩個好用的網站,在後續實作時幫助很大,...

2023-10-01 ‧ 由 yoga57894 分享
DAY 17

Day 17 RISC-V R-type ALU implement

今天要來實作R-type ALU,首先我們從RISC-V test裡面挑幾個來當成測資,由於步驟較為繁瑣,這邊簡單的以ADD為範例。 ADD Test /*IS...

2023-10-02 ‧ 由 yoga57894 分享
DAY 18

Day-18 RISC-V I-type ALU implement

昨天完成了R-Type的ALU,今天要來實作I-type。 I-type ALU I-type跟R-type的區別在於說R-type一個是以兩個暫存器內的值做運...

2023-10-03 ‧ 由 yoga57894 分享
DAY 19

Day-19 RISC-V CTRL Instruction implement

RISC-V CTRL INSN 好低,今天來實作CTRL指令。 CTRL指令指的是在程式運行過程中控制程式流程的指令,例如說像分支(branch),就是在你寫...

2023-10-04 ‧ 由 yoga57894 分享
DAY 20

Day 20 - Load/Store實作,用來與記憶體互動的指令們

Load/Store指令 Load/Store指令是RISC-V中用來與記憶體互動的指令,又會根據每次讀取或寫入的大小,是否為有號數不同,分成"L/S...

2023-10-05 ‧ 由 yoga57894 分享