RISC-V是什麼?人人都能使用的開放指令集
RISC-V(唸作「risk-five」)是一套「指令集」,規定CPU能執行哪些指令,以及這些指令用0和1怎麼寫。它的規格公開,任何人都能不付授權費,就設計並販售遵循這套規格的CPU,這是它最大的特點。RISC-V在2010年從美國加州大學柏克萊分校開始。現在廣泛用在微控制器,以及GPU內部負責整體控制的小型CPU等地方。
這篇文章可以了解
- 指令集是什麼,為什麼說它是軟體與CPU之間的「約定」
- x86、Arm、RISC-V的差異(特別是誰能做CPU、費用怎麼付)
- RISC-V「基本+自選擴充」的架構
- 用在哪裡,以及「免費」的真正意思與課題
前提知識:如果知道CPU是「一個一個執行用0和1寫成的簡單指令的零件」,會比較容易讀。
生活中的例子
電子DIY常會用到一種附Wi-Fi的小型微控制器板。其中部分產品的CPU,是依照RISC-V這套指令集運作的。NVIDIA的GPU裡,也有遵循RISC-V的小型CPU。硬碟和SSD的製造商,也宣布了把控制用的CPU改成RISC-V的方針。
這些都是從產品外面看不到的地方。所以就算聽過這個名字,很多人可能也沒什麼概念。本文會先確認「指令集」是什麼,再來看RISC-V新在哪裡。
指令集是軟體與CPU之間的「約定」
CPU是一個一個執行「相加」「比較」「從記憶體讀取」這類簡單指令的零件。指令不是用文字寫的,而是用0和1的排列(機器碼)寫成。詳細說明請看「CPU是什麼?」。
有哪些指令,各用0和1的什麼排列來表示。這個約定稱為「指令集」,正式名稱是指令集架構(ISA)。指令集也規定了CPU內部小型存放位置的數量,以及指令的長度等。
重要的是,指令集只決定「做什麼」,不決定「用什麼電路來實現」。電路怎麼做,由做CPU的公司自由設計。因此只要遵循同一套指令集,不論是小型微控制器還是高效能CPU,都能執行同樣的機器碼程式。細節條件會在後面的章節說明。
三種代表性的指令集,以及「使用權」的差異
現在廣泛使用的指令集,代表是x86、Arm、RISC-V這3種。它們在技術上也有差異,但最大的差異是「誰能在什麼條件下做CPU」。
x86是從Intel在1978年發表的8086延續下來的指令集。許多Windows電腦和伺服器都使用它。做x86 CPU的,主要是Intel和AMD這2家公司。其他公司不能自由製造、販售x86的CPU。
Arm是英國Arm公司擁有的指令集。Arm公司把使用這套指令集的權利授權給其他公司,收取的費用是主要收入。根據Arm公司的年度報告,授權方式主要有2種。一種是授權Arm公司做好的CPU設計圖。另一種是只授權使用指令集,由對方自己設計CPU。無論哪一種,都要支付簽約的費用(授權費),以及每出貨1顆晶片的使用費(權利金)。
RISC-V的規格書公開,任何人都能免費閱讀。設計並販售遵循RISC-V的CPU,也不必向管理規格的組織支付授權費或權利金。像這樣公開讓任何人使用的規格,稱為「開放標準」。不過,「RISC-V」的名稱和標誌是管理組織的商標,用在產品上另有規定。
| x86 | Arm | RISC-V | |
|---|---|---|---|
| 決定規格的是 | Intel、AMD | Arm公司 | RISC-V International(由會員討論) |
| 能做CPU的公司 | 主要是Intel和AMD | 與Arm公司簽約的公司 | 任何人 |
| 指令集的使用費 | 不開放給其他公司 | 授權費和權利金 | 不需要 |
這張表大略整理了商業模式的差異。技術面的比較,整理在「ARM、RISC-V、x86的差異」的表格中。
RISC-V從哪裡來?
RISC-V在2010年5月,從加州大學柏克萊分校開始。它是Krste Asanović教授與研究生Yunsup Lee、Andrew Waterman所開始的研究的一部分。做研究和上課時,常常想自由修改CPU的內部,並公開結果。但是既有的指令集,不能自由修改,也不能散布修改後的版本。
名稱中的「RISC」是一種設計理念:限縮指令的種類,讓每個指令都單純、格式一致。單純的指令,電路比較好做,也比較容易快速執行。相反地,讓1個指令做很多工作的理念稱為CISC,x86屬於這一邊。差異整理在「RISC與CISC的差異」的表格中。
在RISC的指令集中,讀寫記憶體只用專用的指令來做。計算則在CPU內部的小型存放位置(暫存器)之間進行。這種方式稱為載入儲存架構,Arm和RISC-V都採用。每個指令的工作單純又一致,所以電路容易依序處理。
「V」是羅馬數字的5。柏克萊分校從1981年發表的RISC-I開始,延續了好幾代的RISC研究。根據規格書的說明,RISC-V相當於其中第5代的主要設計。
2014年,Asanović教授和David Patterson教授發表了「指令集應該是自由的」報告。2015年,培育規格的組織RISC-V Foundation成立,許多企業加入。這個組織在2020年3月於瑞士成為法人,改為現在的名稱RISC-V International。它是非營利組織,規格由會員討論決定。
在「小小的基本」上自選「擴充」
RISC-V的設計最顯眼的地方,是把指令集像零件一樣組合使用。作為基礎的是小型的「基本指令集」,只有整數計算、記憶體讀寫和分支。分支是指依條件選擇下一個要執行的指令。有處理32位元數字的RV32I,以及64位元的RV64I。依照規格書的算法,RV32I的指令只有40個。
在這個基本之上,只把需要的功能當作「擴充指令集」選擇加入。每種擴充都有一個英文字母的名稱。代表性的如下。
- M:整數的乘法、除法(不包含在基本指令集裡)
- A:讀寫時不會中途被打斷的指令。讓多個核心(執行指令的電路)處理同一份資料時也不會出錯
- F、D:含小數的數字計算。F是標準精度,D是它的2倍精度
- C:把常用的指令,寫成16位元的短格式,而不是一般的32位元
- V:對大量資料一次做相同的計算(向量擴充,2021年正式通過)
像C這樣把指令寫短的形式,稱為壓縮指令。根據規格書,一般可以把50~60%的指令換成短格式。結果程式的大小可以縮小25~30%。在記憶容量小的微控制器上,這個差距的效果很大。
CPU有哪些擴充,看名稱就知道。例如後面會介紹的Espressif ESP32-C3,是「RV32IMC」。意思是在32位元的基本之上,加了M(乘法、除法)和C(短指令)。此外,規格中也預留了空間,讓各公司放入自己的專屬指令。可以加入AI計算等,專門針對特定工作的指令。
用在哪裡?
RISC-V最先普及的地方,是在產品內負責固定工作的小型CPU。這類CPU從外面看不到,而且1台機器裡往往有好幾個。由於數量多,不必按顆支付使用費的好處就特別明顯。
- 儲存裝置的控制:Western Digital在2017年宣布,要把產品控制用的核心逐步改成RISC-V。當時,該公司每年使用的核心超過10億個。2018年12月,又宣布公開自家設計、用於SSD等產品的RISC-V核心「SweRV」。
- 微控制器:Espressif在2020年11月發表了微控制器ESP32-C3。這是具備Wi-Fi和藍牙通訊功能的產品。CPU是32位元的RISC-V,最高以160 MHz運作。
- GPU內部的控制:GPU內部有負責整體控制的小型CPU。NVIDIA從2010年代中期起,把它從自家專屬的方式改成RISC-V。根據2024年RISC-V會議上的演講,1顆晶片裡大約有10~40個RISC-V核心。
現在許多晶片,都是把CPU和計算、通訊等電路整合在一起的SoC(系統單晶片)。在這類晶片中,RISC-V已經以「配角」CPU的身分被大量使用。
另一方面,作為電腦和手機的「主角」CPU,RISC-V才剛起步。2025年2月,筆記型電腦Framework Laptop 13用的RISC-V主機板開始販售。不過廠商自己也說明,它是「給開發者用的,不是給一般使用者用的」。
指令集公開,CPU的設計圖不一定公開
這裡先把2個容易混淆的東西分開。指令集是「做什麼」的約定,CPU的設計圖則是「用什麼電路實現」。在「CPU是什麼?」一文中,把執行指令的一整套電路稱為「核心」。業界也把這套電路的設計圖稱為「核心」。RISC-V公開的是指令集,核心的設計圖則屬於做它的公司。
實際上,RISC-V的核心大多是不公開的產品。例如SiFive,是開創RISC-V的柏克萊分校3人在2015年成立的公司。它把自家核心的設計圖,收費授權給其他公司。做法和Arm相似,但不必支付指令集本身的使用費。根據報導,NVIDIA GPU裡的核心,也是該公司自己設計的。
另一方面,也有連設計圖都公開的核心。例如由英國非營利組織lowRISC接手開發的Ibex,以及由OpenHW組織管理的CVA6。和軟體世界的「開放原始碼」一樣,任何人都能閱讀、使用、改良其內容。也就是說,「RISC-V晶片」中,既有內部不公開的,也有公開的。
最大的課題,是軟體的累積
就算有CPU,沒有對應這套指令集的軟體也派不上用場。需要作業系統、編譯器、常用的程式零件集(函式庫)和應用程式。x86和Arm累積了數十年的軟體,以及讓軟體跑得更快的調校。這些軟體和工具,加上支撐它們的人和公司,整體稱為「生態系」。
RISC-V用的軟體,也逐漸齊全。例如,Debian是以Linux為基礎的代表性作業系統發行版之一。Debian在2025年8月的版本中,首次把64位元的RISC-V列為正式支援的對象。不過,電腦和手機上許多人使用的應用程式,還沒有全部到位。
可以自由選擇擴充,在軟體方面也會變成弱點。因為每顆CPU擁有的擴充不同,就很難做出「任何RISC-V CPU都能執行的軟體」。因此RISC-V International依用途,規定了「至少要有這些」的擴充組合。2024年10月,正式通過了名為「RVA23」的組合。對象是執行完整作業系統的64位元CPU。
常見的誤解
誤解:RISC-V是免費的,所以RISC-V晶片也能免費做出來
實際上,免費的只有使用指令集這套「約定」的權利。要設計遵循它的CPU電路、進行驗證、在工廠製造,都需要龐大的費用。如果向其他公司借用核心的設計圖,也要付那筆費用。正確的說法是:少了指令集的使用費,成本會降低,設計的自由度也會提高。
誤解:RISC的指令單純,所以比較慢(或是,因為是RISC所以比較快)
實際上,比起RISC或CISC,CPU的速度更受電路做法、快取大小和製造技術影響。美國威斯康辛大學麥迪遜分校2013年的研究,實際量測了Arm和x86的CPU。結論是,效能和功耗的差異,可以用設計的不同來解釋,而不是指令集的種類。現在的x86 CPU,會在內部把複雜的指令拆成單純的動作來執行。不能說「因為是RISC-V所以快或慢」,必須逐一比較產品。
誤解:只要是RISC-V的CPU,都能執行同樣的軟體
實際上,只用基本指令的軟體可以執行,但用到擴充的軟體,只能在具備該擴充的CPU上執行。例如用到V(向量)的軟體,在沒有V的小型微控制器上無法執行。此外還有作業系統和周邊零件的差異。前一章提到的RVA23這類組合規定,就是為了減少這個問題。
從數字來看
| 項目 | 數字 | 補充 |
|---|---|---|
| RISC-V的起點 | 2010年5月 | 柏克萊分校。RISC研究始於1981年的RISC-I |
| RV32I(基本)的指令數 | 40個 | 依規格書的算法。暫存器有32個 |
| C擴充讓程式縮小的幅度 | 縮小25~30% | 規格書的參考值 |
| Western Digital轉換的規模 | 每年超過10億個 | 2017年宣布時 |
| NVIDIA 1顆晶片中的RISC-V核心 | 約10~40個 | 2024年的演講 |
| 管理組織在瑞士成為法人 | 2020年3月 | RISC-V International |
40個這個數字,表示指令集的「基本」有多小。x86花了數十年不斷增加指令,雖然依算法而定,但指令的種類遠比這多。RISC-V原本是為了大學的研究和教學而做的。因為基本很小,也很適合當作學生從零開始設計CPU的教材。
進一步學習
- 用表格看差異:ARM、RISC-V、x86的差異、RISC與CISC的差異
- 下一步的用語:壓縮指令、載入儲存架構、原子指令(A擴充的指令)、IEEE 754(F、D擴充所遵循的小數表示方式)
- RISC-V常用在微控制器上,了解它的原理:「微控制器是什麼?」
- 程式變成特定指令集機器碼的過程:「編譯器是什麼?」
- 自己設計晶片、把製造交給其他公司的分工模式:「晶圓代工是什麼?」