本文主旨为以下三点:
一是回溯龙芯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年技术积累而无所畏惧,也是时势造英雄吧。尽管龙芯体量还很小,但对自己的命运却能自主可控。
相关文章
「 支持!」
您的打赏将用于网站日常运行与维护。
帮助我们办好网站,宣传红色文化!