文章目錄
-
- 基礎例程
-
- 1.CPU基礎知識
-
- 1.1 ISA 指令集架構
- 1.2 常見ISA
- 2.RISC-V基礎知識
-
- 2.1 子產品化的指令子集
- 2.2 RISC-V編碼器特點
- 2.3 RISC-V工具鍊
- 2.4 RISC-V實作簡介
- 3.蜂鳥E203處理器設計
-
- 3.1 設計原則
- 3.2 處理器核心
- 3.3 代碼風格
- 4.指令流水線設計
-
- 4.1 經典五級流水線設計
- 4.2 蜂鳥
- 5.存儲器架構
-
- 5.1 存儲器相關指令
- 5.2 存儲器子系統結構
- 5.3 ICB總線
- 6.異常和中斷
-
- 6.1 中斷定義
- 7.低功耗與可拓展性處理器
-
- 4.1 經典五級流水線設計
- 8.實戰開發
-
- 8.1 測試
基礎例程
1.CPU基礎知識
1.1 ISA 指令集架構
- 架構:抽象層,軟體無需做任何修改便可完全運作在任何一款遵循同一抽象層标準的處理器上。如:RISC-V x86
- 微架構:處理器具體的硬體實作。如:Intel AMD
- 精簡指令集架構RISC
常見的有:RICV-V ARM
1.2 常見ISA
- x86 CISC:由8086發展而來
- power RISC:IBM 高端伺服器
- ARM:英國,IP授權
- RISC-V 新的希望 www.riscv.org www.rvmcu.com
2.RISC-V基礎知識
2.1 子產品化的指令子集
- 可配置的通用寄存器組:通用寄存器個數、通用寄存器寬度、浮點寄存器組
- 規整的指令編碼:通用寄存器索引位置不變(4種資料類型)
- 簡介的存儲器通路指令:load&store、僅支援小端格式、不支援位址自增/自減模式、采用松散存儲器模式
- 高效的分支跳轉指令:2條無條件跳轉指令、6條帶條件跳轉指令、采用預設的靜态分支預測機制
- 優雅的壓縮指令子集
- 自定義指令擴充
常見的有:RICV-V ARM
2.2 RISC-V編碼器特點
K.I.S.S
- 簡潔的子程式調用
- 簡潔的運算指令
- 無條件碼執行
- 無分支延遲槽
- 無零開銷硬體循環指令
硬體搭台,軟體唱戲。hhhhhhh
2.3 RISC-V工具鍊
- riscv-tools: spike
- riscv-gnu-toolchain: riscv-gcc
2.4 RISC-V實作簡介
- rocket core:面積和功耗遠小于ARM-A7 chisel語言
- boom core:超标量亂序發射、亂序執行的處理器核
- freedom soc: lowrisc soc 硬體界的Linux hhh
3.蜂鳥E203處理器設計
3.1 設計原則
- 子產品化核可重用i選哪個
- 面積最小化 資料通路
- 結構簡單化
- 性能不追求極端:性能提倡夠用就行 最高能效比
從子產品到SoC,從硬體到軟體,從運作到調試的完整解決方案
圖1
3.2 處理器核心
圖2
3.3 代碼風格
Verilog RTL
- 使用标準的DFF子產品例化生成寄存器
- 用assign 代替 if-else case(因為這倆 1優先級非并行,2不能傳遞不定态)
- 在資料通路上可使用不帶reset的寄存器,隻在控制通路上使用帶reset的寄存器
- 信号名定義 注意使用英文縮寫
- clk rst信号 禁止被用于其他的任何邏輯功能,隻作為接入DFF的時鐘和複位信号
4.指令流水線設計
4.1 經典五級流水線設計
- 取指IF
- 譯碼ID
- 執行EX
- 訪存MEM:可能空閑
- 寫回WB
4.2 蜂鳥
變長的流水線
- 取值
簡化
預測機制:BPU RAS
連續取址:Mini-decode simple-BPU 生成下一條待取指令的PC
simple-BPU
最簡單的靜态預測 BTFN
JARL進行了一定優化
ICB總線
非對齊指令取址:剩餘緩存 leftover buffer
- 執行
譯碼decode 組合邏輯
整數通用寄存器組 integer-regfile
CSR寄存器 處理器内部寄存器,使用其自身位址編碼空間
通路采用專用的CSR讀寫指令
指令發射派遣 dispatch
valid-ready握手(解決資源沖突)
資料沖突:RAW WAR WAW
ALU單元
普通ALU運算 訪存位址生成 分支預測解析 CSR讀寫控制 多周期乘除法器
共享一份實際的運算資料通路
- 傳遞
隻用管:分支預測錯誤 和 中斷與異常 造成的後續取消
- 寫回
長指令寫回仲裁:(OITF 先入先出的FIFO)順序發射 亂序執行 順序寫回
混合機制 三種
5.存儲器架構
5.1 存儲器相關指令
load&store
"A"擴充指令
Fence指令 ~.I
5.2 存儲器子系統結構
- AGU
ALU的以一個子單元,共享資料運算通路
通過ICB總線與LSU互動
- LSU
兩組輸入ICB總線接口:AGU EAI(高優先級)
三組輸出ICB總線接口:ITCM DTCM BIU
通過寫回接口将結果寫回
出現通路異常,則傳送異常給傳遞子產品
- ICTM
64位單口SRAM 大小和及位址可配置(需要位寬轉換)
優先級:IFU>LSU>外部通路
- DTCM
32位單口SRAM 大小和及位址可配置
優先級:LSU>外部通路
5.3 ICB總線
6.異常和中斷
廣義異常(包含中斷)
6.1 中斷定義
1. external interrupt
2. timer interrupt
3. software interrupt
4. debug interrupt
外部》軟體》計時器
RISC-V 預設無法支援中斷嵌套;可通過關斷控制位實作軟體嵌套
7.低功耗與可拓展性處理器
4.1 經典五級流水線設計
1.系統層面并不在程式中顯示,隻在工藝上實作
DSA 專用領域架構(與異構不同 如CPU+GPU)
EAI接口 協處理器
8.實戰開發
8.1 測試
hbird-e203-soc子產品
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiclRnblN2XjlGcjAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL0cGVOhXVU5keRpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxQjN0ETNzETMyEzNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
實戰