本文主旨為以下三點:
一是回溯龍芯20年前為何選擇MIPS。
二是介紹龍芯已經成為MIPS生態的維護者和破壞者。
三是分析為何龍芯能夠符合自主標準,而鵬鯤、FT購買ARM授權受制于人。
龍芯當年為何選擇MIPS
在20年前,龍芯最初只是中科院計算所的一個課題組,只有十幾個人和一間40平方的辦公室,研究目標是設計一款能用的CPU。當時如果自己設計一套指令集,將會面對沒有編譯器、沒有操作系統、沒有軟件可用的局面,全部都需要自己開發。
由于資金和人員等條件有限,小小的課題組無法支撐這么大的工程量,當年,胡老師曾經想借鑒Alpha定義一套指令集,但唐老師從現實考慮選擇了MIPS——因為x86無法獲得授權,而當時的ARM還局限于嵌入式,混的還不如MIPS,架構授權昂貴且禁止其他廠商修改添加指令集,MIPS架構授權容易獲得,且MIPS非常學院派,允許自主添加指令集,唐老師當年選擇MIPS是理所當然的。
根據《龍芯的足跡》一書披露,龍芯從MIPS獲得的是永久授權。若MIPS主體不復存在則龍芯不需繼續付費,可以一直兼容MIPS。相對于ARM動輒上億的架構授權費用,MIPS的授權費用堪稱白菜價。
龍芯能夠以如此低的標的獲得MIPS授權,一方面與MIPS行業地位不夠強勢,且非常學院派,架構授權便宜,IP授權昂貴的授權策略有關。另一方面,也是因為龍芯剝離了MIPS的技術支持服務和各種工具軟件,購買的是“純凈版”指令集授權,才能把價格壓至最低。
龍芯的發展過程中,起初是打算借用MIPS已有的軟硬件生態,這與使用ARM授權的國內同行們一樣。但沒有想到MIPS會逐漸淡出主流市場,然而這種出乎意料的發展,反而給了龍芯留下了更大的舞臺。
龍芯之所以堅持MIPS,而沒有像FT那樣從SPARC轉投ARM,主要有以下兩點:
一是龍芯以MIPS架構為基礎構建了自己的擴展指令體系,這些成果無法轉移到封閉的ARM指令集體系中;
二是因為龍芯很窮,付不起ARM的架構授權費。
目前,龍芯成為了MIPS生態的堅定的守衛者,許多開源項目的MIPS分支都逐漸把龍芯作為編譯平臺,龍芯也為MIPS的生態貢獻了大量成果。比如前段時間報道的龍芯對JAVA虛擬機的貢獻度排名全球第五,而它前面的幾家公司都是甲骨文、谷歌這樣的巨無霸。
龍芯是MIPS生態的破壞者
最初,龍芯從只注重CPU研發,然而光有芯片沒有生態顯然是無法在市場立足的,在吃了不少苦頭之后,龍芯逐漸步入重視軟硬件生態建設的路線。
由于MIPS生態本身的衰落,龍芯多年來已經成為了兼容MIPS的唯一的桌面和服務器CPU設計者,在設計兼容MIPS的CPU的公司中,是唯一的桌面和服務器軟硬件生態的建設者。這種尷尬的“領導者”身份使龍芯可以心無旁騖地發展自己的生態,向CPU中添加各種新的指令來提升性能和擴展功能,而不必操心與其它MIPS CPU的兼容性問題。
龍世3A4000龍芯以MIPS R5為基礎,對MIPS基礎指令精選替換,以及自行擴展了1000多條指令,發展出了自己的指令集體系——LoongsonISA。LoongsonISA要比MIPS(216條基礎指令+311條DSP指令)龐大得多,MIPS只它的一個子集。上一代龍芯CPU只兼容MIPS R3,如今兼容R5大概是準備收割MIPS最后的遺產。
龍芯與MIPS的關系,更像是AMD與英特爾的關系。在龍芯對很多軟件進行移植優化的時候,也不忘同時帶上其他MIPS處理器的支持,在v8,OpenJDK等JIT虛擬機中,龍芯都已經成為了整個MIPS架構的代碼維護者。最近UOS也把Loongson內核與x86內核、ARM內核并列,其中一項亮眼的更新是增加了對龍芯3A4000的支持。
龍芯在MIPS的軟件生態方面已經獲得了一定的主導地位。龍芯成為了Java運行環境OpenJDK 13的一大貢獻者,現在維護著上游MIPS架構和龍芯擴展的代碼。諸多多媒體庫,例如FFmpeg,libvpx,OpenH264,libyuv等,都已經由龍芯針對自己的MMI以及MIPS的MSA等向量指令進行優化并提交給上游。有些庫支持龍芯擴展指令甚至比支持MIPS的擴展指令還早。Linux內核的上游也一樣被龍芯生態鏈成員維護著。龍芯在開源軟件方面已經獲得了一定的發言與控制權。
MIPS原本的生態絕大部分已經是歷史,龍芯如今的軟件生態主要是來自龍芯自己維護的各種開源項目,以及國內各家軟件開發商對產品的移植,本質上已經不能再稱為MIPS軟件生態,而應當稱為龍芯生態。事實上,在移植一些軟件的時候,已經要區分龍芯版本和MIPS版本了。
在過去這些年,無論是Imagination,還是Wave Computing都沒有在MIPS投入多少資源,都只是在拿MIPS的IP賺錢,盡可能榨取MIPS的剩余價值,主要精力分別放在各自的主營業務——GPU和AI芯片上。直接的結果就是MIPS的CPU發展非常慢,如今,龍芯3A4000的性能已經大幅超越了MIPS CPU,隨著時間的流逝和龍芯的發展,MIPS的專利會逐步過期,LoongsonISA中的MIPS基礎指令會被龍芯逐步替換,LoongsonISA中龍芯擴展的指令比重會越來越高,當龍芯生態逐步成型,常用軟件普遍支持LoongsonISA后,LoongsonISA則會與MIPS分道揚鑣,從這個角度看,龍芯是MIPS生態的破壞者。
龍芯和MIPS關系類似于AMD和Intel 鵬鯤FT則是ARM陣營打工者
為何龍芯兼容MIPS可以稱為自主路線,而鵬鯤、FT則購買ARM架構授權則會受制于人,鐵流認為,有以下三個原因。
一是能否掌握指令系統發展權。之前介紹過,MIPS本身就是學院派的產物,是第一種商用的精簡指令集,這使得MIPS指令比較“古老”,很多專利已經過期或快過期了。加上MIPS非常學院派,允許其他廠商自主修改或添加指令,這一方面導致MIPS生態破碎化,另一方面也給其他廠商更多自主發展的空間。
經過這些年,龍芯對MIPS的擴展也越來越深入,從最開始的擴展運算訪存以及二進制翻譯指令,到后來的硬件頁表索引以及虛擬化指令,再到現在對基礎指令進行更加高效的替換。3A4000引入的AMO原子操作系列指令代替了MIPS原先的LLSC系列指令,使得應用多線程操作的效率大大提高。PC相對尋址指令則可以解決MIPS當前在PIC/PIE實現方面依賴特殊的“abicall”機制,效率較低的瓶頸。Cpucfg則解決了MIPS平臺下應用無法識別CPU對擴展指令支持的弊病。龍芯在兼容MIPS的同時也在一點點甩掉來自MIPS的歷史包袱,從底層創新。這是其他ARM的附庸想都不敢想的。
相比之下,Arm指令集本身一般不允許客戶隨意擴展,而其官方對指令集的演進擴充流程需要復雜的投票決議,有很長的決策周期,對各種需求無法作出快速響應。即便國內ARM陣營廠商私自添加指令,也存在被解讀為非法指令的風險,不僅無助于性能提升,反而會帶來穩定性問題。不僅僅是指令集,在GIC中斷控制器,PSCI電源管理接口方面Arm也有嚴格的標準限制,廠商的自由度很小。
二是ARM非常強勢,而MIPS非常弱勢。ARM在其建立的產業生態非常強勢,當ARM推出新版本的指令集時,就必須再次購買授權。如果不繼續購買授權,那么當同類CPU的其它公司都升級之后,各家軟件開發商也不會死守在老版本的指令集上不動搖,即使軟件有兼容機制可以在老版指令集的CPU上運行,但新版的指令集肯定有加速某些計算的新指令,這樣即使CPU核心設計水平相當,也無法抵消巨大的性能差距,繼續使用老版本指令集就必然會落后于市場。ARM的陣營唯一特例是蘋果,因為它牢牢掌控了自己的操作系統。假如蘋果把IOS授權給其它廠商,或者蘋果手機也用安卓系統,那么它就會立即失去生態獨立的優勢,泯然于眾人。
造成這種困境的原因就是,ARM指令集的主導權始終在ARM手里,其主流生態基本無可撼動,整個產業鏈都是跟著ARM的步伐走,不可能放棄ARM主流生態。在同類產品中,絕大多數用戶選擇的原則,永遠都是“更新型更先進”。
國內的ARM CPU的一種生存模式,就是建設出國外同行暫時放棄或無力插手的ARM桌面和服務器生態,發展使用ARM指令集的桌面及服務器CPU。付出巨大的努力之后,也許能夠在特定市場上部分替代Intel和AMD,然而由于使用ARM指令集,那么國外同行也能很快設計出用于桌面和服務器的ARM CPU,然后以性能和價格的優勢把國產ARM CPU從公開市場中徹底驅逐出去,竊取勝利的果實,只留下一些受政策保護的小眾市場。驅虎吞狼,又或兔死狗烹。
相比之下,MIPS則非常弱勢,公司已經兩度轉賣,新東家Wave Computing申請破產保護,MIPS已經窮途末路,在可以預見的未來不可能再干涉到龍芯的發展。龍芯當前架構同頻性能已經與AMD 2017年的Zen架構相當,明后年持續改進內核并更換工藝提升頻率就能進一步接近AMD水平,已經不存在性能超越龍芯的MIPS CPU,具有很強的不可替換性,ARM陣營中可能存在的驅虎吞狼、兔死狗烹的問題,對于龍芯而言,完全不存在。
由于MIPS允許其他廠商自主擴展修改指令集,龍芯已經發展出了自己的LoongsonISA,而且在很多方面已經主導了MIPS生態建設。運行于龍芯的系統和軟件一旦使用了龍芯的擴展指令集,就不能在其它的MIPS兼容CPU上直接運行,這也是對自己生態的保護措施。一旦龍芯的自主擴展和修改的指令被產業生態廣泛支持,那么,龍芯與MIPS變成AMD和英特爾的關系將不可避免。
當年,AMD就是趁著英特爾推廣安騰的時候,率先推出了64位指令集,并獲得X86生態的廣泛支持,并最終實現在X86陣營內與英特爾分庭抗禮。AMD成功范例在前,國內很多從業者卻對此視而不見,并強行把龍芯與MIPS關系等同于鵬鯤、FT與ARM的關系,則顯然是非常值得商榷的。
MIPS如果繼續衰敗下去,同時龍芯在硬件和軟件上繼續發展,那么,龍芯和MIPS的關系變成AMD與英特爾的關系只是時間問題。對于那些使用ARM授權的CPU,無論是IP授權,還是架構授權,都無法做到這一點,因為ARM把生態統一性守得太緊,生態碎片化是不被允許的,鵬鯤、FT根本就沒有自主發展的機會。
打個通俗易懂的比方,ARM地位就像漢武帝,哪怕麾下大將再能打,也不可能翻天,只能給漢武帝打工一輩子。運氣差的,被巫蠱之禍(川普制裁)牽連,沒準還要重蹈趙破奴的命運。誠然,現在ARM主要還是英國資本和日本資本,但這兩個都不是中國的好朋友,反而是美國的盟友和小弟。MIPS作為最早商用的RISC指令集,影響力還是有的,地位有點像漢獻帝,但比較弱勢,在這種情況下,龍芯有機會去當董卓或曹操的。
三是MIPS授權成本很低,而ARM授權成本很高。目前,龍芯MIPS授權的費用幾乎就是白菜價,而且隨著Wave Computing申請破產保護,MIPS甚至有成為公共知識(public domain)的可能性,因為如果沒有“白衣騎士”拯救Wave Computing,或收購MIPS,或者因為沒錢賺不去主動交納維護MIPS那些古董專利的專利費,那么,MIPS就成為公共知識,這樣一來,MIPS將成為比RISC-V更加自由開放的體系,龍芯連白菜價的授權費都不用支付了。即便出現新買家,MIPS公司繼續走下坡路的大勢已經是定局,不能對龍芯形成掣肘。
作為對比,ARM授權成本很高,按照授權等級的差異,動輒上數千萬美元,甚至幾億美元,而且還只是一定期限的,到期了要重新談判。ARM的指令集在不斷發展,必須一直買,就構建產業鏈來說,國產ARM廠商只能成為產業鏈的一個打工者,類似于聯想、華為在Wintel體系和AA體系中被剝削,只能賺血汗錢,洋人賺取高額利潤。正是因為眾多廠商無法忍受ARM的貪婪,才有RISC-V在全球興起。可以說,購買ARM昂貴授權這種模式不利于一個產業的長遠發展。而龍芯、申威構建的紅色產業鏈,則不存在這方面的問題。
指令集和操作系統必須牢牢掌握
文末,鐵流引用一位網友的話。要想實現商業上完全的自主可控,必須要牢牢掌握指令集和操作系統,如果一家廠商無法兼顧,那么,退而求其次必須掌握一種。否則就很容易受制于人,當年,Intel 通過指令集升級、知識產權訴訟、技術路線改變等手段消滅了除AMD之外的歷史遺留的所有對手,AMD通過反壟斷茍延殘喘的時候,又憑借自己設計出的AMD64架構在微軟支持下復興,成功倒逼Intel交叉授權。
微軟、谷歌憑借對操作系統的把持而分別統治了桌面和移動生態。蘋果通過對操作系統的封閉,依靠差異化競爭牢牢地在桌面和移動設備中占據了一席之地。
國家要想實現信息化建設的自主可控,那么指令集和操作系統都必須掌握在自己手中。
龍芯如AMD那般發展出了自己的指令集,且在國內軟硬件廠商支持下,成功構筑了基本滿足辦公和日常使用的生態,MIPS的影響力卻已經可以忽略不計。盡管由于資源不足,龍芯發展很艱難,但我認為只要路線是正確的,堅持下去就有希望。
世事變遷造就了龍芯的現狀,從研究CPU設計的課題組,轉變為在市場上艱難求存且默默無聞的小公司,再發展成了自建生態并帶動大批配套企業共同發展的核心企業。龍芯隨著政策的變化而自立,隨著MIPS的衰退而崛起,隨著中美摩擦明朗化而更加重要,隨著20年技術積累而無所畏懼,也是時勢造英雄吧。盡管龍芯體量還很小,但對自己的命運卻能自主可控。
相關文章
「 支持烏有之鄉!」
您的打賞將用于網站日常運行與維護。
幫助我們辦好網站,宣傳紅色文化!
歡迎掃描下方二維碼,訂閱烏有之鄉網刊微信公眾號
