RISC-V基本介绍
文章目錄
- 前言
- 一、命名規(guī)范
- 二、模塊化ISA
- 三、一些概念
- 1. 指令格式
- 2. 寄存器
- 3. 特權(quán)級別
- 4. CSR(控制和狀態(tài)寄存器)
- 四、學習資料
- 1. 官方資料
- 2. 開發(fā)參考
- 總結(jié)
前言
RISC-V作為目前大火的開源指令集架構(gòu)有著自己的獨特魅力,本文將對其基本情況進行介紹,給大家留一個初步印象。
關(guān)于指令集的概念大家可以參看:什么是指令集架構(gòu)ISA【從處理器談起】
RISC-V念作 “risk-five”,代表著 Berkeley 所研發(fā)的第五代精簡指令集。它是一款高質(zhì)量、免許可證、開放的RISC ISA(指令集架構(gòu)),是一套由RISC-V基金會維護的標準,適用于所有類型的計算系統(tǒng)。開源的RISC-V打破了ARM、x86架構(gòu)的技術(shù)壁壘,便于開發(fā)者進行開發(fā),目前國內(nèi)外都在流行該架構(gòu)。
一、命名規(guī)范
我們在實現(xiàn)基于RISCV架構(gòu)的處理器時,根據(jù)應用場景的需要我們可以選擇只實現(xiàn)架構(gòu)中的部分指令,或者對于處理器的位寬有不同的選擇。我們需要根據(jù)一些命名規(guī)范來對選擇的RISCV子架構(gòu)進行命名。以方便讓用戶馬上了解這款處理器是基于怎樣的子架構(gòu)開發(fā)的。
RISCV ISA 命名格式:RV[###][abc……xyz]
- RV:用于標識 RISC-V 體系架構(gòu)的前綴,即 RISC-V的縮寫。
- [###]:{32, 64, 128} 用于標識處理器的位寬,也就是處理器的寄存器的寬度(單位為 bit)
- [abc…xyz]:標識該處理器支持的指令集模塊集合。(指令模塊的含義在下面會介紹)
如RV32IMA,RV64GC。
二、模塊化ISA
RISC-V采用模塊化的指令集,易于擴展、組裝。
RISCV ISA = 1 個基本整數(shù)指令集(I) + 多個可選的擴展指令集
其中唯一強制要求實現(xiàn)的基礎(chǔ)指令集,其他指令集都是可選的擴展模塊。RISC-V 允許在實現(xiàn)中以可選的形式實現(xiàn)其他標準化和非標準化的指令集擴展。
RISC-V指令集模塊包括
【注:特定組合“IMAFD”被稱為 “通用(General)”組合,用英文字母 G 表示】
其他的擴展指令集還包括“B”標準擴展:位操作、“E”標準擴展:嵌入式、“H”特權(quán)態(tài)架構(gòu)擴展:支持管理程序(Hypervisor)、“J”標準擴展:動態(tài)翻譯語言、“L”標準擴展:十進制浮點、“N”標準擴展:用戶態(tài)中斷、“P”標準擴展:封裝的單指令多數(shù)據(jù)(Packed-SIMD)指令、“Q”標準擴展:四精度浮點。
RV32I指令集有47條指令,能夠滿足現(xiàn)代操作系統(tǒng)運行的基本要求,47條指令按照功能可以分為如下幾類。
- 整數(shù)運算指令:實現(xiàn)算術(shù)、邏輯、比較等運算。
- 分支轉(zhuǎn)移指令:實現(xiàn)條件轉(zhuǎn)移、無條件轉(zhuǎn)移等運算,并且沒有延遲槽。
- 加載存儲指令:實現(xiàn)字節(jié)、半字、字的加載、存儲操作,采用的都是寄存器相對尋址方式。
- 控制與狀態(tài)寄存器訪問指令:實現(xiàn)對系統(tǒng)控制與狀態(tài)寄存器的原子讀-寫、原子讀-修改、原子讀-清零等操作。
- 系統(tǒng)調(diào)用指令:實現(xiàn)系統(tǒng)調(diào)用、調(diào)試等功能。
三、一些概念
1. 指令格式
RISC-V具有非常工整的指令格式,所有基礎(chǔ)指令的格式可以分為以下四種,指令長度為32位,在“C”標準擴展中,指令長度被壓縮到16位:
規(guī)整的指令格式有利于處理器中的控制器對于二進制指令的解碼。符合“越規(guī)整,越簡單”的設(shè)計理念。
還有兩種特殊的指令格式:SB型和UJ型,兩種格式都只包含一條指令。
具體基本的RISCV的匯編語言和機器語言的對應表如下所示:
2. 寄存器
RISC-V 的 Unprivileged Specification 定義了 32 個通用寄存器以及一個 PC
-
對RV32I/RV64I/RV128I都一樣
-
如果實現(xiàn)支持 F/D 擴展則需要額外支持 32個浮點(Float
Point)寄存器。 -
RV32E(E表示嵌入式系統(tǒng))將32個通用寄存器縮減為16個。
每個寄存器具體編程時有特定的用途以及各自的別名,如下表:
3. 特權(quán)級別
RISC-V 的 Privileged Specification 定義了四個特權(quán)級別(privilege level),以下特權(quán)等級由高到低排列。
機器級別(M):RISC-V中hart(hardware thread,硬件線程,hart相當于核)可以執(zhí)行的最高權(quán)限模式。在M模式下運行的hart對內(nèi)存,I/O和一些對于啟動和配置系統(tǒng)來說必要的底層功能有著完全的使用權(quán)。因此它是唯一所有標準RISC-V
處理器都必須實現(xiàn)的權(quán)限模式。實際上普通的RISC-V微控制器僅支持M模式。
超級監(jiān)管者級別(H):為了支持虛擬機監(jiān)視器。
監(jiān)管者級別(S):旨在支持現(xiàn)代類Unix操作系統(tǒng),如Linux,FreeBSD和Windows。
用戶級別(U):用于運行應用程序,適用于安全嵌入式系統(tǒng)。
任何時候,一個RISC-V硬件線程(hart)是運行在某個特權(quán)級上的,這個特權(quán)級由CSR(control and status register,控制和狀態(tài)寄存器)配置。
4. CSR(控制和狀態(tài)寄存器)
不同的特權(quán)級別下時分別對應各自的一套Registers(CSR),用于控制和獲取相應特權(quán)級別下的處理器工作狀態(tài)。在高級別的特權(quán)級別下,可以訪問低級別的CSR,譬如Machine Level下可以訪問Supervisor/User Level的CSR;但反之不可以。
標準RISC-V ISA設(shè)置了一個12位的編碼空間(csr[11:0])作為CSR地址,可用于4096個CSR。根據(jù)約定,CSR地址的高4位(csr[11:8])用于編碼CSR根據(jù)特權(quán)級讀寫的可訪問性。其中最高2位(csr[11:10])指示這個寄存器是否是可以讀/寫(如只讀是11)。后面2位(csr[9:8])指示了能夠訪問這個CSR所需要的最低特權(quán)級(如上表中,監(jiān)管者模式是01)。
RISC-V定義了專門用于操作CSR的指令,且定義了特定的指令可以用于在不同特權(quán)級別之間進行切換(稱為trap)。
一個hart(硬件線程)通常在U-mode下運行應用程序,直到某些自陷(trap,例如一個管理員調(diào)用或者一個定時器中斷)強制切換到一個自陷處理函數(shù)(trap handler)。提升特權(quán)級別的自陷稱為垂直自陷(vertical trap),而保持在同樣特權(quán)級別的自陷稱為水平自陷(horizontal trap)。
例如,下表是已被分配的用戶級別(U)的CSR地址:
特權(quán)級別的切換對應于操作系統(tǒng)中用戶態(tài)到內(nèi)核態(tài)的切換,在內(nèi)核態(tài)中才可以進行系統(tǒng)調(diào)用。
四、學習資料
1. 官方資料
在RISC-V官網(wǎng)上可以下載基礎(chǔ)的ISA手冊及特權(quán)手冊:https://riscv.org/technical/specifications/
開發(fā)者在開發(fā)前需要閱讀架構(gòu)規(guī)范。官方的github主頁是:https://github.com/riscv。
2. 開發(fā)參考
RISC-V只是定義了一套指令集架構(gòu)規(guī)范,沒有具體實現(xiàn)的代碼,需要開發(fā)者根據(jù)該架構(gòu)手冊,通過使用硬件描述語言如VHDL編程來具體實現(xiàn)基于RISC-V的處理器,再移植到滿足RISC-V需求的硬件平臺(處理器芯片或開發(fā)板)上去。
使用RISC-V架構(gòu)的同時,還要配套開發(fā)相應的編譯器gcc以及調(diào)試器如openOCD。
同時RISC-V官方提供了兼容性測試代碼,可以測試每一條指令的運行結(jié)果,驗證開發(fā)者的核是否實現(xiàn)了RISC-V規(guī)范。
目前基于RISC-V架構(gòu)的開源處理器有很多,既有標量處理器Rocket,也有超標量處理器BOOM,還有面向嵌入式領(lǐng)域的Z-scale、PicoRV32等。具體有哪些開源處理器項目可以參見:RISC-V架構(gòu)總結(jié)1,開源代碼在github上也有很多。
可供學習的一個簡單RISC-V核是tinyrisc。該項目實現(xiàn)的是一個單核32位的小型RISC-V處理器核,采用verilog語言編寫
總結(jié)
RISCV由于其開源性,被大家廣泛使用,我們在需要特定的處理器時也可以采用RISCV架構(gòu)自行開發(fā)。同時RISCV具有低功耗的特點,適合嵌入式開發(fā)。
總結(jié)
以上是生活随笔為你收集整理的RISC-V基本介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python pi表示_python 算
- 下一篇: 数字滤波器matlab仿真_模拟IC笔记