1: http://www.javashuo.com/article/p-oenlxcpt-mg.html 2: https://blog.csdn.net/zoomdy/article/details/79580772 3: http://www.javashuo.com/article/p-exhndssw-kc.html編程
4: RISC-V相關的開源項目 https://blog.csdn.net/u013710265/article/details/70332671框架
和RISC-V相關的有以下一些開源項目: 工具鏈 一、riscv-tools - 基本上全部RISC-V相關工具鏈、仿真器、測試的宏項目,包含如下的項目 riscv-gnu-toolchain - GNU工具鏈 riscv-gcc - GCC 編譯器 riscv-binutils-gdb - 二進制工具(連接器,彙編器等)、GDB 調試工具 riscv-glibc - GNU C標準庫實現 riscv-isa-sim - Spike週期精確指令集模擬器 riscv-llvm -LLVM編譯器框架 riscv-clang - 基於LLVM框架的C編譯器 riscv-opcodes - RISC-V操做碼信息和轉換腳本 riscv-tests - RISC-V指令集測試用例 riscv-fesvr - 用於實如今上位機和CPU之間通訊機制的庫 riscv-pk - 提供一個運行RISC-V可執行文件運行的最簡的程序運行環境,同時提供一個最簡單的bootloader 二、riscv-qemu - 一個支持RISC-V的CPU和系統模擬器工具
CPU核開源實現 先講一下UC Berkeley的發起RISC-V項目的團隊所設計的兼容RISC-V指令集的CPU核,對於這個團隊我簡稱ucb-bar。必需要提的是,爲了設計一個新的指令集,須要不斷的嘗試各類可能的處理器設計組合。 Chisel是UC Berkeley開發的一門「硬件構建語言」。從功能上講,chisel能夠將你描述的硬件(寫的代碼)轉化爲等價的可綜合的Verilog HDL代碼或時等價的C++仿真模型。用Verilog你走設計流程變爲ASIC或燒錄到FPGA上,也能夠Simulation。C++主要用於週期精確的功能級仿真,能夠也能夠輸出波形圖,主要優勢是在用作仿真的時候比Verilog仿真快10倍,又可以很方便的和其餘語言的庫集成。其餘的優勢包括chisel支持面向對象,經過OO,能夠極大的複用和擴充先有的代碼,本質上是提升了可複用性。還有一點,Chisel實際上是基於Scala的一種擴展或者DSL,因此從Scala帶來的一個優勢就是代碼巨簡潔無比,連線巨簡單。最後,若是你仍是不明白,那你就這麼理解,你再用chisel描述硬件的時候,你是在寫生成代碼的代碼(注:「代碼」這個詞在這裏是不妥的用法)。 因此,ucb-bar團隊的全部處理器所有是用chisel寫的,rocket-chip是RISC-V開發的核心團隊開發的基於chisel等一系列工具的Generator,在這個框架下,你能夠方便的開發你想要的RISC-V處理器,同時還提供調試工具、工具鏈、DRAM仿真模型等等一系列的基礎設施。 因此先介紹基於rocket-chip(或者說chisel)的CPU覈實現 一、ucb-bar/rocket - ucb-bar最主要的實現能夠被配置成各類你像要的樣子 二、ucb-bar/zscale - 簡單的3級流水線RV32I CPU,目前已經基本中止開發 ucb-bar/vscale - 就是把zscale編程verilog讓你用,由於你懶得學chisel 三、ucb-bar/riscv-boom - 亂序執行CPU,RV64G CPU 四、ucb-bar/riscv-sodor - 教育用途的各類流水線級數實現,實用意義不大測試
注意:以上這些庫都須要在rocket-chip這個框架下才能被正確構建和使用。.net
下面介紹非chisel的RISC-V CPU實現(排名不分前後): 一、pulp-platform/pulpino - Silde - ETHZ 和 University of Bologna合做開發的面向微控制器領域的RISC-V CPU 包含自定義的一些指令集(硬件循環、DSP等) 比較早的支持RVC也就是壓縮指令集 對標ARM Cortex-M系列設計