最近開源架構的話題又在中國大陸火了,這次是RISC-V。

開源架構並不新鮮,Sparc也開源,Power也開源,MIPS開源支持Android還讓好些人激動了一把,但都是熱鬧了一陣以後就曲終人散了,然後幾年以後再來一輪,媒體再炒一輪。

其實我覺得這一次RISC-V也沒什麼不一樣。

擺上茶水瓜子點心,給大家慢慢講:首先所有推崇RISC-V的文章都在說RISC-V架構簡單,功耗面積低,這其實跟以前誇MIPS沒什麼不同。在CPU設計裡,指令集是其中最簡單最基礎的一部分,可以說,採用RISC架構的指令集都差不多,無非是在暫存器數目、分支跳轉、資料存取等指令方面做一些取捨,達到某種平衡,滿足某些特定需要。

在學院派那兒PK的功耗面積,在工程派眼中離實用還遠的很。做出一個demo和做出真正工程上能用的產品還隔著十萬八千里,而工程上能用距離商業成功又隔了十萬八千里。因為一個指令集就把某種架構誇上天實在沒必要。

少年啊,心態要平穩,不要太浮躁。

開源架構受到追捧隱含的另一個意思是Arm等IP廠商授權太貴,所以總有人揭竿而起要革商業公司的命,用免費打敗收費。這裡面有兩重誤會,我一一道來:

第一個誤會是指令集架構授權和CPU核的授權被刻意模糊了。

Arm的CPU核心授權門檻其實很低,甚至有DesignStart你們可以瞭解一下,基本可以免費取得Cortex-M0和Cortex-M3,一些媒體文章動輒說Arm授權費要千萬美金,錢真有那麼好賺嗎?Arm被孫正義收購的時候營收一年也就10多億美金,這生意絕對說不上大。架構授權的客戶都是財大氣粗玩的起的主兒,如我大蘋果、大高通、大三星等,初創公司完全有很多很便宜的選擇,幹嘛一上手就搞架構授權?刻意強調千萬美金授權不能不說是有意誤導。

第二個誤會則是來自開源社群。

很多人說開源架構免費多好呀,但我要說從架構定義到CPU核實現這中間有很長的路要走,這一部分並不免費,不免費,不免費(重要的事情強調三遍),像SiFive等公司都是要收錢的,與Arm的CPU核授權並無多少區別。把開源解讀為免費恐怕是一個中英文翻譯中的誤會。在開源社群的概念剛剛被引入的時候就有人把Free Software翻譯為免費軟體,但其實更準確的翻譯是自由軟體或開源軟體,開源不等於免費,免費也不等於開源。

開源指的是原始程式碼公開,任何人可以免費取得自行編譯或重新開發,只是要遵循相應的版權協議,像Linux遵循的是GPL協議,用GPL開源協議的程式碼重新開發的軟體也必須開源。免費指的是軟體不收錢,但是不一定開源。大名鼎鼎的Redhat Linux是開源的,但是也不影響Redhat公司靠服務費收錢。

在開源架構社群也是一樣,指令集是開源的,遵循BSD協議,各家開發的產品不是必須要開源回饋給社群。各家公司在這個指令集基礎上開發的自己的CPU核心產品都是要收費的,畢竟開發CPU核心產品也是要投入人力研發的啊,總不能都去做雷鋒吧?

以上這些都是老生常談。開源架構每過幾年就要來一輪,背後其實大家都懂,就是學院派總是要有點新的研究成果,「國外一開源,我們就自主」的風氣決定了,國外有什麼新的指令集架構開源都會在國內激起一陣躁動。但學術不等於商業。

CPU架構從1990年代的10多家到現在以X86和Arm為主,背後其實是更深刻的產業和商業規律在主導。在我看來,有幾下幾個要素:

1.指令集架構創新不具有革命性

有多篇論文分析過指令集架構和性能功耗的關係,結論是指令集的差別與性能和能耗沒有關係,兩者性能的差異是由於需求的不同在硬體設計上的反映,例如指令發射速度、分支預測、亂序執行等方面,提升這些方面的性能需要使用到大量的硬體,使得硬體設計變得更加複雜,並且帶來了更多的能耗。

正如吳軍在《浪潮之巔》中所說,「數量級是判斷一項新技術是革命性還是革新性的關鍵。」Arm處理器功耗相比於x86有了數量級的提升,手機市場又比PC市場出貨量要大一個數量級,這才有了Arm在行動網際網路市場佔據了端側的優勢,取代了x86指令集,也讓架構授權模式為更多玩家所認可。

在開源架構和Arm的PK中,沒有這種數量級上的差異。Arm和RISC-V都是RISC架構的,只是指令集定義的不同,這就決定了不可能從指令集PK中獲得什麼優勢,還是看具體的硬體實現和功能取捨。

2.技術先進性不等於商業成功

每次有人強調新的指令集比原有的指令集要高效的時候我就笑了,大家想想鍵盤配置的故事。現在的QWERT鍵盤配置雖然奇怪,但延續了這麼多年,已經有了強大的慣性,即使有人發明了更高效的鍵盤配置也無法得到廣泛支援。指令集上的故事也是類似。Intel的x86指令集是CISC架構的,曾被人Diss架構臃腫。

歷史上也有多次「x86革命」想取代x86架構,但都因為得不到廣泛的支持最終以失敗告終。巨大的商業利益和強勁的軟硬體的支持可以使得x86架構難以撼動,這些都不是一個簡單的技術問題。

3.指令集架構是一個昂貴的公共品

對學院派來說,能執行軟體跑成Demo發論文就是成功,對商業公司來說則是要完成從指令集定義到CPU微架構的設計,到整個晶片的設計和相應軟體,工具鏈的開發和維護,以及在上面執行的作業系統,豐富的函式程式庫以及應用程式,還需要得到大量使用者認可,這些都不是一朝一夕之功。

設計指令集不難,讓一個指令集得到市場認可很難,而一旦得到認可,人們要遷移的成本也很高,這就是Intel能多年在PC和伺服器市場稱霸的原因。Intel也因為x86指令集的成功獲得了巨大的商業利益。指令集架構這一公共品是如此昂貴,無法通過社區自發成長起來,而必須結合商業公司的力量。Linux也是在Android採用以後才得到了大發展。

...繼續閱讀請連結EDN Taiwan網站