- RISC:表示精簡指令集
- RISC-V:伯克利發明的指令集架構,屬於RISC類型
2.1 簡單就是美—RISC-V架構的設計哲學
設計哲學:大道至簡,簡單、直接、可靠
2.1.1 無病一身輕—架構的篇幅
RISC-V架構文檔分為指令集文檔與特權架構文檔,各一百來頁。
2.1.2 能屈能伸—模塊化的指令集
RISC-V架構短小精悍,將不同部分模塊化,可以通過一套統一的架構滿足不同的應用。用戶可以根據需求選擇不同的模塊進行組合。
2.1.3 濃縮的都是精華—指令的數量
基本指令數目僅有40多條
2.2 RISC-V 指令集架構簡介
2.2.1 模塊化的指令子集
RISC-V基本要求是I字母表示基本整數指令子集必須實現,其他指令子集為可選模塊。
- “IMAFD”稱為通用組合,用G表示。RV32G表示RV32IMAFD。
- 字母E表示“嵌入式”架構,可以進一步減小面積、降低功耗。
- 追求小面積、低功耗的嵌入式場景可以選擇RV32EC架構,大型的64位架構可以選擇RV64G。
2.2.2 可配置的通用寄存器組
- 整數通用寄存器組無論是RV32,REV64等,都包含32個寄存器,不同的是位寬。用於嵌入式的RV32E包含16個通用寄存器。
- 對於上述寄存器組,整數寄存器0被預留為常數0,其余寄存器為普通通用整數寄存器。
- 若添加F和D模塊,則需增加一組浮點寄存器,一組32個。F模塊為單精度浮點指令,寄存器位寬要求32,若進一步支持D模塊,寄存器位寬需要64。
2.2.3 規整的指令編碼
RISC-V的指令集中寄存器索引位置固定,對於譯碼器來說可以非常快速的獲取寄存器索引從而讀取相應數據進行運算
2.2.4 簡潔的存儲器訪問指令
- RISC-V架構使用load/store指令訪問存儲器,其他普通指令無法訪問存儲器。
- RISC-V對於地址對齊訪問和非對齊訪問都支持,但支持小端模式。
- RISC-V架構的存儲器讀寫指令不支持地址自增自減。
- RISC-V架構采用松散存儲器模型(Relaxed Memory Model),對於訪問不同地址的存儲器讀寫指令的執行順序不做要求,除非使用明確的存儲器屏障指令(Fence)加以屏蔽。
2.2.5 高效的分支跳轉指令
- 兩條無條件跳轉指令。jal用於子程序調用,jalr用於子程序返回指令。
- 六條條件跳轉指令,RISC-V采用一條指令完成整數比較和跳轉操作。
- 對於沒有配備硬件分支預測的低端CPU,RISC-V明確要求采用默認的靜態分支預測機制,並且編譯器也按照這種機制來生成匯編代碼,可以保證性能。
2.2.6 簡介的子程序調用
程序調用子函數過程
- 進入子函數前需要保存現場,即用store指令將通用寄存器組內的值存到系統存儲器的堆棧區。
- 退出子函數后需要恢復現場,將之前存的通用寄存器組內的值從堆棧區讀出來。
RISC-V不采用“一次讀多個寄存器指令”“一次寫多個寄存器指令”。對於“保護現場”“恢復現場”指令數目有要求的場景,可以采用公用的程序庫。
2.2.7 無條件碼執行
早期的RISC架構發明了帶條件碼的指令,例如指令編碼前幾位為條件碼,條件碼對應為真指令才被執行。
RISC-V對於任何條件判斷都采用普通電容待條件分支跳轉,不采用條件碼,條件碼會使硬件設計變復雜。
2.2.8 無分支延遲槽
MIPS架構具有分支延遲槽,在分支跳轉指令后緊跟若干指令,不受分支跳轉指令影響一定執行。
RISC-V放棄分支延遲槽,現代高性能處理器的分支預測算法效果更好。
2.2.9 零開銷硬件循環
一半for循環會由編譯器翻譯為若干條加法指令和分支跳轉指令,而硬件循環是通過寄存器計數來進行循環。這種方式可以減少匯編指令條數,提高性能。
RISC-V架構為了化簡硬件設計,不采用零開銷硬件循環。
2.2.10 簡潔的運算指令
RISC-V架構對於運算指令錯誤(如溢出、除零等)不產生異常,而是產生某個特殊的默認值,同時設置某些狀態寄存器的狀態位。
RISC-V推薦軟件通過其他方法來找到這些錯誤。
2.2.11 優雅的壓縮指令子集
16位壓縮指令由32位指令中的信息壓縮重排獲得,每條16位指令都能找到其一一對應的原始32位指令。
2.2.12 特權模式
RISC-V定義三種工作模式,也稱特權模式
- 機器模式:Machine Mode ,必選模式
- 監督模式:Supervisor Mode ,可選模式
- 用戶模式:User Mode ,可選模式
2.2.13 CSR寄存器
Control and Status Register,用於配置和記錄一些運行狀態。CSR寄存器的訪問采用專門指令。
2.2.14 中斷和異常
2.2.15 矢量指令子集
2.2.16 自定制指令擴展
RISC-V預留了編碼空間用於用戶自定義擴展
2.2.17 總結與比較
RISC-V的特點在於極簡、模塊化以及可定制擴展,由於這些特性RISC-V可構建適用於任何領域的微處理器。