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