- RISC-V體系結構編程與實踐(第2版)
- 笨叔
- 2471字
- 2024-09-23 17:55:58
1.2 RISC-V體系結構介紹
1.2.1 RISC-V體系結構
RISC-V體系結構包括指令集規范和體系結構規范以及眾多的擴展規范,這些都由RISC-V基金會審閱與發布。RISC-V體系結構具有如下特點。
● 對學術界和工業界完全開放。
● 真正適合硬件實現的指令集體系結構,而不是一個模擬或者二進制翻譯的指令集體系結構。
● 屬于通用的指令集體系結構,而不是針對某個特定微體系結構的實現。
● 擁有實現最小整數的指令集,作為基礎指令集,可以用于教學。在此基礎上還能實現眾多可選擴展指令,以支持通用軟件的開發。
● 支持IEEE 754浮點標準。
● 支持眾多擴展指令集。
● 支持32位及64位地址空間。
● 支持多核及異構體系結構。
● 支持可選的壓縮指令編碼,用以提高性能和能源效率并優化靜態代碼。
● 支持虛擬化擴展。
● 支持可伸縮矢量指令擴展(參見GitHub上的“Working draft of the proposed RISC-V V vector extension”)。
RISC-V支持32位指令集和64位指令集。本書重點介紹64位指令集。
1.2.2 采用RISC-V體系結構的常見處理器
下面介紹市面上常見的采用RISC-V體系結構的處理器。
1.SiFive FU740處理器
SiFive公司基于RISC-V體系結構開發了商業化64位處理器芯片,廣受RISC-V開發者喜愛的HiFive Unmatched開發板便基于該處理器芯片。
FU740處理器內置1個S7處理器內核以及4個U7處理器內核。其中,S7處理器內核用于系統監控,U7處理器內核用于計算和應用。FU740處理器框架如圖1.1所示。
FU740處理器具有如下特性。
● 完全兼容RISC-V體系結構規范。
● 屬于64位RISC-V處理器內核。
● 具有32KB L1指令高速緩存。
● 具有32KB L1數據高速緩存。
● 支持8個物理內存保護區。
● 支持128KB大小的L2高速緩存。
● 內置處理器內核本地中斷控制器(Core-Local Interrupt Controller,CLINT)。
● 支持平臺級別的中斷控制器(Platform-Level Interrupt Controller,PLIC),最多支持128個外設中斷和7級中斷優先級。

圖1.1 FU740處理器框架
2.香山處理器
香山處理器是由中國科學院計算技術研究所的香山處理器團隊推出的高性能64位開源處理器。它的體系結構以湖的名稱命名,第一版體系結構代號是“雁棲湖”,第二版體系結構代號是“南湖”。
1.2.3 RISC-V體系結構中的基本概念
本小節介紹RISC-V體系結構中的一些基本概念。
● 執行環境接口(Execution Environment Interface,EEI):包括程序的初始狀態、CPU的類型和數量、支持的S(Supervisor)模式、內存和I/O區域的可訪問性與屬性、在每個CPU上執行指令的行為以及任何異常(包括中斷、系統調用)的處理等。常見的RISC-V執行環境接口包括Linux應用程序二進制接口(Application Binary Interface,ABI)以及RISC-V管理員二進制接口(Supervisor Binary Interface,SBI)。一個RISC-V執行環境接口可以由純硬件、純軟件或者軟硬件結合實現,示例如下。
◇ 裸機程序:程序直接通過ABI訪問硬件資源,如圖1.2(a)所示。
◇ 操作系統:提供U(User)模式的執行環境并復用到物理處理器線程中,同時提供虛擬內存機制。它在操作系統與管理員執行環境(Supervisor Execution Environment,SEE)之間提供一層SBI,對所有RISC-V硬件平臺中共性的功能做了抽象,為操作系統訪問M(Machine)模式的硬件資源提供服務,如圖1.2(b)所示。
◇ 虛擬化:為客戶操作系統提供多個特權模式的執行環境。每個客戶操作系統通過SBI訪問虛擬化管理程序,如圖1.2(c)所示。此外,虛擬化管理程序可以通過虛擬機監控程序二進制接口(Hypervisor Binary Interface,HBI)訪問虛擬機監控程序執行環境(Hypervisor Execution Environment,HEE)中的硬件資源。
● 模擬器:在主機上模擬RISC-V的用戶模式以及特權模式的執行環境。
● 硬件線程(Hart):一個處理器執行線程,在執行環境中自主獲取和執行RISC-V指令資源的硬件單元,類似于x86體系結構中的超線程(Hyper-Threading,HT)以及ARMv8體系結構中的處理機(processing element)。SMT(Surface Mount Technology, 表面安裝技術)讓同一個處理器內核上的多個線程同步執行并共享處理器的執行資源。假設一個RISC-V處理器實現了超線程技術,那么一個處理器內核就有多個硬件線程,不過目前商用的RISC-V處理器還沒有實現超線程技術。

圖1.2 執行環境接口
特權級別(privilege level)包括RISC-V處理器提供的3種模式。
● 機器模式(M模式):以M模式運行的代碼通常在本質上是可信的,因為它具有對機器實現的全部訪問權限,常用于管理RISC-V上的安全執行環境。通常在M模式下運行SBI固件,為操作系統提供服務。
● 特權模式(S模式):通常用來運行操作系統的內核,為應用程序提供服務。
● 用戶模式(U模式):特權級別最低,通常用來運行應用程序。
使能了虛擬化擴展后,新增如下特權模式。
● HS模式:把原有的S模式擴展為HS模式,用來運行虛擬化管理程序。
● VS模式:通常用來運行虛擬機操作系統內核。
● VU模式:通常用來運行虛擬機操作系統中的應用程序。
所有硬件的實現必須提供M模式,因為這是唯一可以不受限制地訪問整個機器的資源。簡單的RISC-V系統(如嵌入式系統)只提供M模式,表1.2所示為特權級別使用場景。
表1.2 特權級別使用場景

1.2.4 SBI服務
在RISC-V軟件生態中,RISC-V規范定義了一個SBI規范。SBI對所有RISC-V硬件平臺中共性的功能做了抽象,為運行在S模式下的操作系統或者虛擬機監控程序擴展的特權(Hypervisor- extended Supervisor,HS)模式的虛擬化管理軟件提供統一的服務接口。通常把提供SBI服務的軟件稱為SBI固件,RISC-V軟件生態中比較流行的SBI固件有OpenSBI等。
在現代操作系統體系結構中,內核空間和用戶空間之間多了一個中間層,即系統調用層,它為用戶空間中的應用程序提供硬件抽象接口。SBI與操作系統中的系統調用層非常類似,有如下幾個優點。
● 為運行在低級別的處理器模式提供訪問M模式下的硬件資源(如S模式下的操作系統或者U模式下的應用程序)的抽象接口。
● 保證系統穩定和安全。因為M模式下的處理器具有對系統資源的全部訪問權限,如果某些硬件資源直接開放給S模式和U模式,可能會造成系統的安全問題。
● 可移植性。在不修改源代碼的情況下,讓不同的操作系統或者不同廠商設計的RISC-V系統都能運行。
在沒有使能虛擬化擴展的RISC-V系統(見圖1.3)中,SBI固件運行在M模式下,它為運行在S模式下的操作系統提供SBI調用服務,而運行在S模式下的操作系統則為應用程序提供系統調用服務。

圖1.3 沒有使能虛擬化擴展的RISC-V系統
在使能了虛擬化擴展的RISC-V系統(見圖1.4)中,系統內分成了兩個世界:一個是虛擬化世界,另一個是主機世界。在虛擬化世界中,M模式下的SBI固件可以為虛擬化管理程序提供SBI調用服務。另外, HS模式下的虛擬化管理程序也可以為虛擬機的操作系統提供SBI調用服務。在主機世界中,運行在U模式下的主機的應用程序可以通過系統調用來訪問虛擬化管理程序提供的服務。

圖1.4 使能了虛擬化擴展的RISC-V系統
- Learn Blockchain Programming with JavaScript
- 測試驅動開發:入門、實戰與進階
- 控糖控脂健康餐
- Visual Basic程序設計教程
- Python自然語言處理(微課版)
- Learning Zurb Foundation
- C語言程序設計
- JavaScript程序設計(第2版)
- Getting Started with Python and Raspberry Pi
- Learning Modular Java Programming
- Instant Zurb Foundation 4
- Emotional Intelligence for IT Professionals
- Learning Unreal Engine Game Development
- micro:bit軟件指南
- Unity與C++網絡游戲開發實戰:基于VR、AI與分布式架構