樂鑫C3對接鴻蒙芯片樂鑫深圳代理商RISC-V指令集/寄存器等概述,RISC-V 基金會發布了 RISC-V 架構,定義了指令集、寄存器組、特權模式和異常事件處理機制等。RISC-V 指令集采用模塊化結構,由基本指令集和擴展指令集組成,用字母表示指令集模塊。
1.指令集
整數指令集是 RISC-V 基本指令集模塊,用字母“I”表示,是所有 RISC-V 處理器中強制要求的指令集模塊。樂鑫C3對接鴻蒙芯片樂鑫深圳代理商RV32I、RV64I 和 RV128I分別表示 32 位、64 位和128位 RISC-V 整數指令集。RV32E 是 RV321 的簡化指令集,為嵌人式系統而設計,以減少所使用的通用寄存器數量。RISC-V主要擴展模塊有乘法與除法指令(M)、原子操作指令(A)、單精度浮點指令(F)、雙精度浮點指令(D)和壓縮指令(C)等。通常模塊“I”“M”“A”“F”和“D”的特定組合“IMAFD”稱為通用組合,用英文字母“G”表示。例如,RV32G 與 RV32IMAFD 相同,RV64G 與RV64IMAFD 相同。設計 RISCV 處理器時,可以根據不同應用場景的需求,選擇一個基礎指令集模塊和多個擴展指令集模塊的組合。除了上述模塊外,十進制浮點(Decimal Float Point,L)、位操作(B)、封裝的單指令多數據(Packaged-SIMD,P)、向量(V)和事務性內存(Transactional Memory,等指令集模塊在完善中。
2.寄存器
RV321支持32個通用奇存器,每個寄存器均為 32 位,寄存器 0 恒為0,其他31個寄存器 xl~x31是可以任意讀/寫的通用寄存器。樂鑫C3對接鴻蒙芯片樂鑫深圳代理商RV64I同樣支持 32 個通用寄存器,寄存器 x0 恒為 0,但每個通用存器 64 位。為了使匯編程序更容易閱讀,匯編程序中經常采用應用程序二進制接口協議(Application Binary Interface,ABI)所定義的寄存器名稱。表 列出了32 個通用寄存器及其在 ABI 協議中對應的名稱。
寄存器名稱 ABI 名稱 說明
x0 zero 恒定值 0
xl ra 程序返回地址
x2 sP ??臻g指針
x3 gp 全局變量空間指針(基地址)
x4 tp 線程變量空間指針(基地址)
x5~x7 t0~t2 臨時寄存器
x8,x9 s0 ,sl 保存寄存器(函數調用時保存數據)
xl0~x17 a0~a7 函數參數寄存器(函數參數傳遞)
x18~x27 s2~s11 保存寄存器(函數調用時保存數據)
x28~x31 t3~t6 臨時寄存器
編寫匯編程序時,可以不受 ABI 協議名稱的限制,根據需要使用通用寄存器例如,可以使用函數參數寄存器 a0~a7 保存臨時變量。“F”“D”和“Q”三個浮點指令集擴展模塊支持 32 個通用浮點寄存器 f0~f31,所支持的通用浮點寄存器寬度分別為 32 位、64 位和 128 位。RISC-V 處理器架構定義了一組控制和狀態寄存器(Control and Status Regis-ter,CSR)用于記錄處理器內核運行狀態,以及管理處理器內核中的功能單元。樂鑫C3對接鴻蒙芯片樂鑫深圳代理商CSR是Hart 內部寄存器,使用 12 位獨立空間地址編碼。CSR 空間獨立于處理器存儲空間,使用特定的 CSR 指令進行訪問。RV32 內核中,CSR 寄存器的寬度是 32 位。不同于 ARM 處理器,RISC-V 采用獨立的程序指針寄存器 PC。在執行指令過程中 PC 自動變化,不能使用通用寄存器訪問指令直接修改 PC 寄存器的值。
3.特權模式
RISC-V 處理器架構定義了處理器的特權模式:特權模式(Privileged Mode)和非特權模式(Unprivileged Mode)。特權模式包括機器模式(Machine Mode,M)、管理員模式(Supervisor Mode,S)和超級管理員模式(Hypervisor Mode,H)。非特權模式指用戶模式或應用模式(User/Application Mode,S)。表 4.3 列出了不同模式的特權等級(Privilege Level),其中,機器模式的特權等級是 3,高;用戶模式的特權等級是 0,低。
RISC-V架構特權模式及等級
等級 編碼 名稱 縮寫
0 00 用戶/應用模式(User/Application Mode) U
1 01 管理員模式(Supervisor Mode) S
2 10 超級管理員模式(Hypervisor Mode) H
3 11 機器模式(Machine Mode) M
RISCV架構不要求所有 RISC-V 處理器同時支持這 4 種特權模式。樂鑫C3對接鴻蒙芯片樂鑫深圳代理商RISC-V處理器的可選特權模式組合。設計處理器時,可面向不同的應用,選擇支持的模式組合。簡單微控制器可以僅支持機器模式(M)。如果需要支持虛擬機則必須選擇支持所有 4 種特權模式的組合。
RISC-V處理器支持的模式
模式數量 支持模式 目標應用
1 M 簡單嵌人式系統
2 M、U 安全嵌入式系統
3 M、S、U 支持 UnixLinux、Windows 等操作系統
4 M、H、S、U 支持虛擬機系統
RISC-V處理器內核(Hart)復位后自動進入機器模式(M)。異常事件以及改寫特定的控制和狀態寄存器(Control and Status Registers,CSR)可以改變處理器內核的特權模式。程序可以在處理器內核的不同特權模式下運行。在不同特權模式下,運行程序訪問處理器資源的權限不一樣。樂鑫C3對接鴻蒙芯片樂鑫深圳代理商機器模式(M)是所有 RISC-V 處理器唯一必須實現的特權模式。在機器模式下所運行的程序權限高,支持處理器的所有指令,可以訪問處理器內全部資源。用戶模式(U)是可選模式,權限低。在用戶模式下運行的程序僅可以訪問處理器內部限定的資源。
管理員模式(S)是可選模式,旨在支持類 Unix 操作系統,如 Linux,FreeBSD利Windows 等。管理員模式訪問資源的權限比用戶模式高,但比機器模式低。超級管理員模式(H)是可選模式,其有僅次于機器模式的權限,支持虛擬機管度功能。
4.異常與中斷
在執行程序指令流時,處理器內核必須能夠響應和處理異常事件(Excepmia Events)。處理器內核通過異常處理機制響應異常事件,并能夠暫停和恢復被異常件中斷的程序。廣義地講,將處理器運行時影響程序正常運行過程的所有事件都稱為“異常”,而不管這些事件是來源于處理器的內部還是外部。廣義“異常(Exception)”常被分為狹義“異常”和“中斷(Interrupt)”。狹義“異常”通常指處理器內核的錯誤事件,或者由處理器的專有指令生成的事件。后者又稱為“軟中斷”或“內陷(Trap)”。“中斷”通常指來自處理器內核外部的事件。中斷由與處理器相連的特定物理信號的電平變化產生。本文后面所提及的“異常”指狹義的“異常”。
RISC-V 處理器架構定義了一套相對簡單的中斷和異常處理機制。通過 CSR 寄存器,處理器內核能夠更加方便、靈活地管理異常和中斷處理過程。樂鑫C3對接鴻蒙芯片樂鑫深圳代理商RISC-V 處理器架構還允許處理器設計者根據應用需求定制和擴展中斷和異常處理功能。