[趨勢情報] 關於RISC-V和開源處理器的一些解讀

發佈日期:2020/03/13

文章來源:中國開放指令生態聯盟

本文導讀

近日,網路上出現對RISC-V與開源處理器存在誤讀的文章,讓一些讀者產生困惑。本文將對處理器的指令集、微架構實現與開源模式等概念以及和RISC-V的聯繫等進行解讀,希望能幫助廣大讀者更好地理解RISC-V與開源處理器。以下為幾個要點:

  • 指令集規範(Specification)和處理器實現(Implementation)是兩個不同層次的概念,要區分開。指令集(ISA)是規範標準,往往用一本書或幾張紙來記錄描述,而處理器實現是基於指令集規範完成的原始程式碼。RISC-V是一個指令集規範。
  • 我們可以基於x86/ARM/ RISC-V指令集,進行處理器微架構設計和實現形成原始程式碼,並通過流片最終形成晶片產品。其中指令集規範與處理器實現的智慧財產權是獨立的,不能混為一談。(詳見第二、三節)
  • “RISC-V是開源的”表示指令集規範是開源、開放和免費的(open and free),這與x86與ARM指令集有本質不同,但並不是指具體的處理器實現也都是開源免費的。
  • 基於RISC-V指令集規範,既可以由開源社區來開發開源免費版的處理器實現(如Berkeley開發的Rocket核等),也可以有商業公司開發收費授權版的處理器實現(如平頭哥玄鐵910、芯來N200核與優矽渭河WH-32核等)。(詳見第三節)
一、關於近期一篇網路文章的分析
近日,網路上出現一篇文章《RISC-V董事長攤牌了,RISC-V不是開源處理器》[1][2],對RISC-V與開源處理器存在一些誤讀,讓一些讀者產生困惑。以下針對該文中提到的一些觀點進行解讀:

疑問1:文中提到“RISC-V基金會主席Krste Asanovic澄清了‘RISC-V不是開源的’”,是否屬實?

Krste Asanovic 在文章中闡述的是:a)RISC-V是指令集,不是處理器;b)RISC-V不止可以用來做開源處理器,也可以做商用處理器。而 “RISC-V是開源的”這一點從始至終沒有改變。一般人對於“開源”的理解,就是公開可獲得並且可以免費使用的代碼或資料。從這個角度來講,RISC-V作為一套指令集規範,雖然沒有原始程式碼,但它本身確實是開放並且免費的(open and free),這無論對於開源的RISC-V處理器,還是商用的RISC-V處理器都是一樣。所以”RISC-V是開源的”這個結論是沒有疑問的。

此外,RISC-V不僅本身開源,其與整個開源晶片生態的關係也非常緊密。雖不能說所有基於RISC-V的專案都是開源的(其中一部分是做商用處理器和軟體的),但至少都是深度參與和使用開源(處理器晶片或軟體)的,甚至可以說RISC-V在特定場景下可以代表整個開源晶片生態。

疑問2:基於RISC-V設計的處理器,是否以後需要付費使用呢?

作為一個開放自由免費的指令集,RISC-V支援多種模式的微結構設計(詳見本文第三節)。人們既可以基於RISC-V做開源處理器設計,也可以做成商用的處理器(不開源出來,自己賣或者用)。正是RISC-V開放自由的特性,成就了晶片產業的百家爭鳴。RISC-V基金會只負責RISC-V指令集規範,既不做微架構設計,也不生產晶片。設計和生產什麼樣的晶片是其它企業來做的,跟基金會沒有關係,開不開源,收不收錢,也跟基金會沒關係。Krste Asanovic只是想告訴大家,RISC-V不止可以做開源處理器,也可以做商業處理器,並非所有的RISC-V處理器都是開源免費的。【注:這裡的開源和商業只是從是否開放和收費上來說的,兩者性能是可以做到等同的】

疑問3:RISC-V源於美國,是否有被管制的風險?

RISC-V指令集是一套開放開源、自由免費的介面規範,並不會受美國管制的影響。但是,基於RISC-V開發的處理器是以商品形式存在的,故而美國企業研製的RISC-V處理器會受到美國出口管制。而美國以外的企業(包括歐洲、中國等)自主研製的RISC-V處理器,則不算是美國商品,故不受美國出口管制條例限制。舉例如平頭哥自研的RISC-V處理器玄鐵910,便不受美國的出口管制影響。

此外,歷史上TCP/IP協議與如今的RISC-V頗為相似。TCP/IP協議受美國國防部高級研究計畫局(DARPA, Defense Advanced Research Projects Agency)資助研發,是開放標準的典範。世界各地基於該協議構建起今天連接幾十億人的Internet,而中國基於TCP/IP協定構建網路,這並沒有受到美國的出口管制;中國企業基於TCP/IP研製的交換機與路由器,也並不受到美國的出口管制。

最後,2019年11月RISC-V基金會宣佈將會把總部搬到瑞士[3],也正是在釋放資訊,向全世界傳達RISC-V堅持開放自由、堅持為全世界服務的理念。

二、什麼是指令集,指令集有什麼作用?
指令集(ISA):指令集是軟體和硬體之間的介面,是一套標準規範(以文檔的形式發佈),並不具備實體,我們可以根據這套規範去設計處理器晶片和對應的軟體系統,並最終形成產品。常見指令集如x86(常見於桌面和伺服器)、ARM(常見於移動嵌入式、手機平板等)、RISC-V(異軍突起的開放指令集)等[4]。

▲圖1 指令集是軟硬體之間的介面

軟體和硬體的關係恰如螺母和螺釘。把軟體看做是螺母,硬體看做螺釘,那麼指令集(ISA)就是螺母和螺釘之間對接的尺寸規範。螺母和螺釘都按照相同的尺寸(也就是同一個規範)去設計,即使是由不同的廠商來生產,也可以保證最終所有的螺母都能擰到螺釘上。

如圖1所示,指令集向上承載的是整個軟體生態,向下則規範了以處理器晶片為代表的整個硬體生態。根據一份指令集規範,設計一款處理器,其上可以運行同樣遵循該指令集規範所編寫的軟體代碼。故而,我們在提到指令集的時候,有時候也指的是其背後的整個軟硬體生態系統,包括週邊晶片、作業系統、編譯器和諸多應用軟體(瀏覽器、遊戲軟體等)。事實證明,每一種晶片在市場競爭中要取得成功,很大程度上取決於其生態系統。

三、RISC-V和開源處理器之間是什麼關係?
首先,一個處理器晶片包含了三個層次:指令集(ISA)、微結構設計、產品。

  • 指令集(ISA),是規範標準(Specification),常用一本書或幾張紙來記錄描述;
  • 微結構設計,也常被稱為處理器實現(Implementation),是對具體實現,對應的是一種設計方法及其原始程式碼;
  • 產品,是微架構設計的產生實體,比如華為基於ARM指令集和Cotex-A76微架構,設計了麒麟990這款晶片。
▲圖2 指令集、微架構設計和產品之間的關係分析

嚴格意義上來講,“開源”,是“開放原始程式碼”的縮寫,而指令集只是幾張紙,是沒有原始程式碼的。我們通常提到的開源處理器,是指的微架構設計的代碼開源。

如圖2,進一步將指令集標準與架構設計都分為三類:開放免費(Open & Free)、可授權(Licensiable)、封閉(Closed)。於是,我們可以看到,Intel就屬於封閉指令集+封閉設計,ARM屬於可授權指令集+可授權設計,但要獲得授權價格不菲,往往需要上百萬甚至數千萬美元 [5]。 

RISC-V為全世界提供了開放免費指令集+開放免費設計的選擇。根據圖2的第一行,我們可以知道只有先有了開源開放的指令集,才有可能有開源開放的微架構設計,即綠色格子。需要強調的是RISC-V本身是一種標準規範,和C/C++語言規範、POSIX系統調用等這些標準是一樣的。本身是開放的,誰都可以基於這些標準來實現自己的處理器。但有一點需要厘清的是,即使都是基於開源開放指令集(比如RISC-V),也存在三種不同的商業模式,分析圖3第一行,開放免費的指令集(RISC-V)包含了三種模式的微架構設計[5]:

  • 開源模式,Berkeley的Rocket Chip、劍橋大學的lowRISC、蜂鳥E203等RISC-V核將RTL級源碼也開源,這些設計可歸到綠色格子;
  • 授權模式,SiFive公司、晶心科技Andes、阿裡平頭哥的RISC-V核是可以被授權給協力廠商使用,但不開源RTL級源碼,屬於黃色格子;
  • 封閉模式,Google、NVIDIA等企業在內部大量使用RISC-V核作為MCU,但他們不對外開放IP以及原始程式碼,這就屬於紅色格子。
綜上,指令集是開源開放免費的,但是微架構設計既可以選擇開源給大家(開源模式);也可以選擇收費後授權給其它公司去生產(授權模式);也可以不往外授權,自己拿去生產(封閉模式)。RISC-V提供給了大家完全自由開放的選擇。而這裡開源模式的綠色格子,便是我們經常說的基於RISC-V的開源處理器設計。

四、為何要做開源處理器?
開源處理器專案的重要性是毋庸置疑的,它將極大降低晶片開發的週期和門檻,使得大家可以專注于增量創新,而不用從頭去探索構建一顆晶片,加快反覆運算週期,並且借助RISC-V的軟體生態快速推出市場。研發新的開源處理器項目,設定開源主線,獲得更多技術和生態上的優勢,對提升中國RISC-V各企業在國際RISC-V產業界的話語權和主導權,至關重要[6]。

五、引用及參考材料
[1] RISC-V董事長攤牌了: RISC-V不是開源處理器;  
https://www.toutiao.com/a6800643802252968456/

[2] RISC-V is not an “open-source processor”;
https://riscv.org/2020/02/risc-v-is-not-an-open-source-processor-krste-asanovic-chairman-of-the-board-risc-v/

[3] RISC-V 基金會為尋求技術中立,遷址瑞士;
https://www.infoq.cn/article/ko94LqU9lXblLXGVTamQ

[4] 一些關於RISC-V的質疑與解讀;
https://mp.weixin.qq.com/s/4_SFxXygmqRWy3Ce6wUXqQ

[5] 遠景研討會紀要:面向下一代計算的開源晶片與敏捷開發;
http://blog.sciencenet.cn/blog-414166-1192579.html

[6] 開放指令集與開源晶片進展報告;
http://crva.ict.ac.cn/documents/OpenISA-OpenSourceChip-Report.pdf