暸解 RISC-V 命名代碼

RISC-V 指令集架構 (ISA) 開創了絕無僅有的機會。此架構允許開發人員使用各種大小和效能的處理器,從而提供前所未有的軟體相容性。若想利用此相容性,關鍵在於瞭解 RISC-V 核心的命名代碼。

與大多數處理器架構不同,RISC-V 是開放原始碼,開發人員無需取得授權或支付專利費即可使用。此外,ISA 的彈性設計允許開發人員選擇想執行的指令區塊,從而省略不需要的部分,甚至能依需求加入自訂指令。這個架構旨在鼓勵開發具有不同尺寸和效能,但基礎相同的多處理器核心。

透過相同基礎的特點,這些處理器便可在任何功能集中提供高度的軟體相容性。例如,僅執行整數指令集的最小型 RISC-V 處理器程式碼,可在不修改的情況下,便能在具備整數和浮點功能且效能更佳的處理器上執行。當然,使用浮點指令的程式碼無法在僅能處理整數的機器上執行,但也不致於讓處理器崩潰。未執行的指令只會產生非法的指令陷阱。

RISC-V ISA 透過將指令劃分為程式碼不重疊的獨立型指令組來展現出靈活性。這些指令組稱為「標準延伸指令」,ISA 定義了許多這樣的標準延伸指令,提供開發人員可能需要的多數功能。每組標準延伸指令都透過一組字母代碼進行識別。例如,「M」標準延伸指令可將存放在暫存器中的兩個整數相乘或相除。同樣地,「F」標準延伸指令可執行單精度浮點運算。

由於處理器開發人員在實作 RISC-V 核心時,可以混搭標準延伸指令,因此使用者就可能需要仔細閱讀規格表和編程手冊,才能確定他們打算設計的處理器的實際功能。但其實有更簡單的辦法。RISC-V 使用核心編號慣例,使用者能一眼看出該核心的功能。

編號慣例從基本規格開始。RISC-V 定義了四種基本規格:

  • RV32I 具有 32 位元整數指令集,並提供 32 個通用暫存器
  • RV32E 使用 32 位元指令集,適用具有 16 個暫存器的嵌入式應用
  • RV64I 具有 64 位元整數指令集以及 32 個暫存器
  • RV128I 具有 128 位元整數指令集以及 32 個暫存器

這些基本規格定義了一個基本但功能完整的處理器。但多數開發人員會選擇在設計中加入一個以上的標準指令集延伸指令。圖 1 列出了這些標準延伸指令及其識別碼。

圖 1:RISC-V 處理器的標準指令集延伸指令使用字母作為代碼,表示該指令存在於核心編號慣例中。(圖片來源:DigiKey)

完整的 RISC-V 核心名稱,會提供基本規格並在字尾附加其所執行標準延伸指令的字母,如圖 1 的順序排序。因此,使用最少資源的小型 SoC 的名稱可能是 RV32EMAB。這表示,針對嵌入式裝置實作 32 位元整數指令集的核心有 16 個暫存器,另有可執行整數乘法和除法以及原子指令。此核心不支援浮點運算,但可進行位元處理。

因此,如果選擇在設計中使用 RISC-V 晶片,使用者只需查看核心名稱,即可瞭解核心提供哪些功能。舉例來說,SparkFun ElectronicsDEV-15799 FE310 Thing Plus RISC-V 評估板中的處理器,被列為 RV32IMAC 核心 (圖 2)。

圖 2:DEV-15799 評估板的 RISC-V 處理器名稱為 RV32IMAC,表示除了其他功能外,還具有 32 位元整數指令集和 32 個暫存器,另提供原子指令。(圖片來源:SparkFun Electronics)

這表示,此核心具有 32 位元整數指令集和 32 個暫存器,可執行整數乘法和除法、提供原子指令,並支援可將程式碼空間最小化的壓縮 (16 位元) 指令。在此評估板上開發的任何程式碼,都可以在其他任何 RV32I 核心上執行,也具有乘法與累加運算 (MAC) 標準延伸指令。

另外一個例子是 Seeed Technology114991684 Sipeed MAXIX-I RISC-V SoC 模組,其 RISC-V 核心被列為 RV64IMAFDC。此核心有一個 64 位元指令集,可執行整數的乘法和除法,支援原子指令、單精度和雙精度浮點,以及壓縮指令。針對此處理器開發的程式碼,雖然在週邊裝置的記憶體映射等方面需要調整,但應能在任何具有相同核心名稱的 RISC-V 處理器上執行。

結論

只要有了 RISC-V 命名程式碼,使用者就能安心體驗這個強大的架構。只要比對了核心程式碼,使用者便可確保單一處理器上的編程工作,能妥善地移植到其他 RISC-V 處理器。

如果想開始體驗這種架構,建議先閱讀《RISC-V 指南》,其中詳細說明初始設定和數種 RISC-V 評估板的使用方式。

關於作者

Image of Richard A. Quinnell

Richard Quinnell 擔任工程師並從事寫作長達 45 年之久,作品涵蓋的主題包括微控制器、嵌入式系統以及通訊等,且發表於眾多刊物中。成為科技記者前,他有十多年的時間擔任嵌入式系統設計師以及工程專案經理,服務的企業包括約翰霍普金斯大學的應用物體實驗室 (JHU/APL) 等。他擁有電機工程與應用物理領域的學位,之後的研究工作更涵蓋通訊、電腦設計及量子電子學等專業。

More posts by Richard A. Quinnell
 TechForum

Have questions or comments? Continue the conversation on TechForum, Digi-Key's online community and technical resource.

Visit TechForum