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