近來開源架構這話題著實挺火,尤其是RISC-V,感覺哪兒都有它。開源架構早就不是什么新鮮事兒了,丫RISC-V又是打哪兒冒出來的?
同是“開源”,有啥不同?
說起開源指令集,Power和SPARC經常被人們提起,但Power和SPARC從服務器和工作站發展而來,指令集相對龐大。去看看Power的指令手冊[1],900來條指令,用了18頁才寫完,需要非常有實力、財力和積累的廠商才有機會實現。這不明擺著就是打這“開源”的旗號等著你花錢去買“技術轉移”么?SPARC[2]雖沒有Power那么復雜,但是體量也不小。而且這么多年似乎只有Sun/Oracle和少數幾個廠商在玩,在去IOE的大背景和Linux等其他開源系統和數據庫的強勢發展下,領地似乎越來越小。上一代SPARCv8標準的開源核心LEON的確在軍工航天領域被廣泛使用,但在消費類領域卻很少被使用,這值得深思。
開源架構每隔幾年就出一新東西,然后總能帶動起一批國內廠商開發自主創新處理器,但是這次有點不一樣,不一樣在哪兒呢?就是這次國內的RISC-V參與者們很多都是民營私營企業,公司的參與程度也一點兒也不比科研院所差,比如很早就加入基金會里的樂鑫、中天微等,而不像過去都是國家和地方政府資助的幾個獨苗。這個事實的背后必然是深刻的產業和市場化的商業行為。
那RISC-V到底有啥不同呢?模塊兒化不得不提,最簡單的RV32I只有40條指令,想功能多點就用其他指令模塊,像拼積木一樣,用啥拿啥,要啥有啥,沒啥造啥。有點能力的大學生幾個月就能做一個[3],難度下降了,再配合現成的工具鏈啥的,很多有能力廠商都根據自己的需求自己做一個。當然這樣并不意味著RISC-V不能做大型處理器,配合其他指令集模塊,RISC-V可以支持浮點、向量運算、加密等諸多功能。這就是RISC-V最獨到的地方:能伸能縮。
有人說從一個指令集出現到得到成熟廣泛的應用,要十幾年。如果說是實現一個IBM Power或者SPARC或者x86這樣的指令集的CPU的話,我覺得你說的沒錯,沒點兒積累的確起不來。但是RISC-V因為模塊化,因為足夠簡單,因為開源軟件的成熟,因為很早就能提供完整的生態,就真的用短短幾年做出了一些成果。以SiFive為例,去年發布的FE310只是個MCU級別的芯片,今年初就已經推出了4+1核可以運行Linux的SoC。
碎片化還那么重要么?
很多人就擔心碎片化這個問題,在看到了過去ARM和MIPS在碎片化上的得與失,認為RISC-V的碎片化問題會更加嚴重。的確,過去ARM為了防止碎片化,嚴格禁止用戶修改指令集,這的確一定程度上成就了ARM。但是RISC-V解決的思路并不是嚴格限制,像大禹治水一樣,不是到處壘壩,靠的是疏導。這個體現在以下兩個方面:首先,前面提到的模塊化指令集,讓廠商在實現的時候能夠根據自己的需求選擇標準指令集組合,廠商完全沒有必要為不兼容付出額外的成本。其次,指令集里預留好了大量的定制指令空間,指令長度從16比特到1024比特理論上都支持,這些空間就是專門給定制處理器的廠商實現自己的指令集的。這樣一來,基本的軟件都能兼容,遇到定制指令集,廠家提供預先設計好的函數庫就能在很好地保證效率的同時不失兼容性。可以說過去ARM/Intel啥都不讓你做,如今有了RISC-V,妹妹你放心大膽的往前走。
換個角度說,過去在PC時代,我們真心得擔心碎片化帶來的諸多不利影響。如今,在IoT即將迎來爆發的時代,我們需要的是多種多樣的定制化處理器和芯片,來完成數據采集、低功耗、無線通信等諸多不同的工作任務。需求越差異化,開源工具越流行,上層軟件越平臺無關,指令集碎片化所帶來的影響就越小。樂鑫并沒有使用ARM指令集標準的CPU,就能做出今天的成績足以證明碎片化帶來的影響早已經不是主要矛盾。這個趨勢是很明顯的,時代不同了。
指令集設計真不是你想的那么簡單
這時候你又說了,RISC-V架構簡單,面積小功耗低,MIPS不也一樣么?其實啊,在CPU設計里,指令集看似是最簡單的,但其實想把簡單的事情做好才是最難的。一方面,RISC-V生的晚,得算10后,這就能讓它吸取很多前輩失敗的經驗教訓,比如寄存器窗口啊、超長指令字啥的,很多坑都前人都踩過一遍了。還有,別看指令集就是那些個寄存器數量、分支跳轉啊、Load/Store之類的,可要想設計一個又高效,代碼密度又高的指令集可不是那么容易。但目前為止,RISC-V這個“學院派”們做出來的指令集,表現還是很不錯的。就以很重要的指令密度這個指標來講做的和x86_64和ARMv8不相上下[4]。指令集能夠保持高水準,后面廠商的技術能力就不會受到限制,要知道,自身能力才是關鍵。
關于RISC-V的設計水平到底怎樣,David Ditzel應該最有話語權,他曾是早期的SPARC架構師,后創過一公司,叫全美達。當年把Linus和鮑爾默拉一塊兒用RISC架構搞了個X86 CPU,一度讓Intel差點跌落神壇。這哥們兒前幾年評估了RISC-V,越玩兒越覺得這東西不簡單,最后的評測的結果是,和ARM/MIPS/SPARC相比,毫不遜色[5]。之后他就果斷創業開搞高性能RISC-V處理器了。
錢的事兒不能不提
說完技術,就得聊聊錢的事兒了。盡管這些個年Arm為了走量的確降低了門檻,但其實費用也不低,Cortex-M0和Cortex-M3盡管可以用幾萬美元就拿到授權,可是反過來卻要收高昂的版稅,而且還要按照芯片成品價抽,用M0和M3的芯片多為低成本芯片,這版稅直接影響利潤啊。過去,這錢你不交也沒辦法,因為你要是用一些個小眾的CPU,生態是個大問題,ARM背后的整個生態是個重要的背書。但RISC-V看著很快就要改變這個局面,各大第三方廠商都開始紛紛支持RISC-V,從商業指令仿真器到高級調試跟蹤工具應有盡有。蘋果、高通、三星這些廠商很早就買了ARM架構授權,但是你會發現高通和三星很早就加入RISC-V基金會,這些有自研CPU能力的大廠不出5年,我相信就能夠隨著生態系統的全面完善而開始推出自己的RISC-V處理器。
很多人覺得就算架構免費,但是基于這個架構的CPU實現總是要收錢的吧。這話一點兒沒錯,CPU IP廠商針對不同的領域開發CPU然后賣給有意向的客戶,然后收取相應費用。但這是不是說就和Arm這些廠商沒有區別呢?其實不完全是,以SiFive為例,目前的授權費用是30-50萬美元,能得到一個類似M4-M7的核心,但是和ARM的不同的是,只要License Fee,不收版稅。但其實,SiFive CPU Core的基礎Rocket是完全開源的,盡管和商業版本有少量區別,但是對于有一定技術能力的公司,基于這個核心定制出自己的核完全沒有問題。
一個可喜的狀況是,目前市面上已經有大量開源的CPU可供選擇,而且大部分都以非常寬松和商業友好的許可證發布[6]。
二次元的入口在哪?
不論是Intel還是Arm,他們的成功絕不是僅僅因為技術。Intel不只是有傲視群雄的Fab和研發團隊,沒有Wintel聯盟這些商業決策它一樣可能完蛋。Arm做了幾十年的低功耗處理器,可沒有創造性的IP核授權商業模式,也一樣會被打敗。如果說未來會出現下一個在這個領域成功的巨頭,那么它絕不是照搬Intel和ARM的商業模式,一定是因為它商業模式和技術進步上都取得了顯著的優勢才能成功。
記住,你并不需要“取代”Intel或者ARM,一旦你找到了二次元的入口,那么在這個新的次元里,根本就沒有x86和ARM這兩個對象。
過去沒有的”選擇”
多年來的經驗和事實以及研究結果告訴我們,指令集架構和性能的關系并不大,Intel那么多年前的x86指令集今年依然能夠做到業界領先就充分證明了這一點。指令集,是軟件和硬件的接口,在兼容性層面來說是重要的一環;但是從性能來講,越是復雜和高性能的處理器,指令集優劣所帶來的影響就越小。如果能夠認識到這一點,我們就能夠明白RISC-V并沒有也不需要比x86或者ARM有太多技術上的創新,只要給廣大廠商提供了一種選擇就夠了。什么選擇呢,一個集大成者的指令集,能夠充分的吸取過去30-40年的技術進步,并且開放、沒有壁壘、成本趨于0的指令集。RISC是上世紀80年的提出的,相關研究已經無比成熟。站在如今這個摩爾定律幾近終結的點上,我們需要花費更多的精力在DSA架構和敏捷硬件開發上,RISC-V在其中扮演的是助攻的角色。
去翻翻托馬斯·弗里德曼的《世界是平的》這本書吧,“相信開放,別以為壁壘有多少幫助”,ARM、x86、RISC-V仍然會長期共存,但高墻會被抹平。
迅速成熟的生態系統
指令集架構并不昂貴,昂貴的是打通上下的生態系統。OpenRISC面世以來,因為生態系統上沒有高質量的持續的投入,所以10多年來都沒有進入各大工具鏈的主線。RISC-V看似和OpenRISC很像,但從2014年發布這短短的4年里,已經相繼被Linux/gcc/glibc/binutils/gdb/qemu等并入官方主線。RISC-V能夠用僅僅幾年做到OpenRISC十幾年沒做到的,沒有基金會里各個大廠商齊心協力和腳踏實地的推動是不可能做到的。可以說這些大小廠商組成的聯合團隊各自發揮所長,完成了過去IBM和Sun在生態系統上做到的所有工作,否則生態環境不會這么快成熟起來。
有了生態系統的飛速進展,眾多廠商都能夠從中得到好處;活躍的社區和眾多開源核心,又極大的降低了廠商們的開發門檻;廠商的積極參與又能夠繼續推動生態系統的發展,最終形成正反饋。面對一個門檻相對較低的“活著”的指令集,配合迅速成熟中的生態環境,對于很多國內企業來說只要你有需求就有理由參與其中。
RISC-V的正確打開方式
在大眾當中一個非常普遍的誤區和思維定勢是,設計或者生產CPU/MCU芯片應該是一個公司的主營業務,或者說一家用RISC-V的公司一定得是賣CPU/MCU的。可以說,市場上的確需要設計生產用于PC的、手機的以及嵌入式領域應用的MCU,而這也的確是RISC-V的打開方式之一。但是,這只RISC-V是冰山一角,我們能看到很多企業,在自身的領域里,通過在自己的產品或者解決方案中嵌入一個RISC-V CPU來降低成本、提高靈活性,最終提高自身的競爭力。比如NVidia將自己原來自研的處理器,換成了兼容RISC-V的處理器,很快就要進入到下一代顯卡中作為內部控制核心;CEVA為自己的DSP通信解決方案設計了一個用于低功耗的控制處理器;Rambus前不久剛發布的解決方案里用一顆RISC-V CPU實現一個孤立的系統以保護系統安全。
前面的幾個例子闡明了RISC-V的另一種重要的打開方式,那就是幫助各個領域的企業來降低成本、提高靈活性,從而提高企業自身的競爭力,這才是商業的本質。所以,如果說“問正確的問題”是成功的先決條件的話。那么請問問你自己:”作為一家企業,你自身的優勢是什么?RISC-V是否有機會能夠幫助你提高競爭力呢?”
新時代,要有新思路!