日前,外媒报道MIPS Technologies宣布将放弃继续设计MIPS处理器,转向了RISC-V。在MIPS加盟RISC-V阵营后,有人鼓吹龙芯要完,但事实上,这完全是不了解龙芯具体情况的臆测。特别是在龙芯开发自主指令集LoongArch之后,已经在指令集方面走上了独立自主道路。铁流认为,MIPS投RISC-V,对于龙芯而言,是新征程的开始。
MIPS投RISC-V对龙芯无影响
在MIPS加盟RISC-V阵营后,有观点鼓吹龙芯要完,但事实上,这完全是不了解龙芯具体情况的臆测,是拿ARM阵营CPU公司的情况硬生生往龙芯身上套用。
由于MIPS学院风很重,在技术授权上比较开放。技术上的开放一方面使MIPS在学院派中颇受青睐,很多大学至今依然在使用MIPS进行教学,另一方面,客户可以自由添加指令集,而这直接导致MIPS的生态破碎化。
ARM则在商业上比较开放,但在技术上卡的非常严格,在ARM32时代,ARM仅对苹果、高通等不超过5家公司授权过ARM32指令集,而且禁止客户修改、添加指令,其他的一律是IP核授权。诚然,ARM64在授权方面比ARM32开放很多,但价格异常昂贵,还有很多附加条款,比如使用范围局限于服务器CPU,禁止修改添加指令等等。ARM在技术授权方面比MIPS更加保守,但恰恰是这种保守的举措,比如禁止客户修改、添加指令等条款使ARM避免了MIPS生态破碎化的命运。
目前,市场上绝大多数ARM芯片都是从ARM购买的公版架构,高通、联发科、麒麟、展锐的手机芯片基本都是IP授权。以麒麟为例,从最早的K3开始,到最新的麒麟9000,在过去十年中,麒麟芯片的CPU核全部从ARM购买。
由于手机芯片厂商在CPU上高度依赖ARM,一旦无法买到ARM的最新IP,那就意味着在技术迭代中落后。以麒麟芯片为例,当年美国制裁时,BBC就爆料ARM内部文件,称ARM断绝了和HW的技术合作。之后的麒麟990则继续使用麒麟980上的A76,而竞争对手的芯片则用上了A77。最近,麒麟9000用上了A77,竞争对手已经用上了A78。
相比之下,龙芯则不存在这方面的问题,由于龙芯的IP从头开始就是自主研发,历经二十年先后研发了GS132、GS132e、GS232、GS232e/GS264、GS464、GS464e、GS464V等数代CPU核,以及一些未正式命名的小改版本(3A2000和3A3000虽然都是基于GS464e,但其实是两个版本,IPC提升了15%;3A4000和3A5000在公开资料里都是GS464v,但其实连指令集都不一样,完全是两个版本,IPC提升在15%以上),基于这些CPU核又研发了几十款CPU。由于龙芯实现了核心IP完全自主设计,这使龙芯并不依赖MIPS的IP,因此,MIPS是否继续研发MIPS处理器,对龙芯毫无影响。相对于众多ARM阵营手机芯片厂商需要持续从ARM那里购买IP才能保证技术迭代,龙芯本来就不需要从MIPS购买IP核。
龙芯的目标就是完全自主可控
早期,龙芯基于MIPS设计CPU,之后不断添加指令,在十多年里,龙芯基于MIPS进行添加了1000多条指令形成了LoongISA,龙芯3A4000以前的处理器,都是基于LoongISA。
不过,MIPS毕竟是一家美国公司,即便获得了MIPS永久授权,一旦发生紧急情况,还是存在未知风险。加上MIPS是第一款商用RISC处理器,由于一直保持向下兼容,积累了很多历史包袱,很多被人诟病的问题由于保持兼容的原因一直未修改。在技术飞速发展的大背景下,仅仅基于MIPS进行添加指令已经无法满足龙芯的需求。在外在风险和内在需求的双重刺激下,龙芯开发自主指令集LoongArch。
由于不少人怀疑LoongArch又是龙芯基于MIPS魔改,铁流特意向一位中科院计算所研究员求证,获得的回复是“LoongArch自定义指令集,通过二进制翻译技术兼容MIPS”。该研究员是RISC-V的支持者,为RISC-V在中国的推广做出了巨大贡献。有鉴于这位研究员与龙芯没有任何利益关系,其表态可靠性极高。
至于有网友怀疑LoongArch是龙芯拿出来危机公关的言论,其实只要稍微对龙芯有一点了解就可以粉碎这个谣言。因为3A5000就是基于LoongArch设计,且已经有样片,将在2021年投放市场,从确定新指令集到基于新指令将设计一款CPU,再到完成流片,需要漫长的周期,龙芯不可能在几年前就预测到MIPS将于2021年3月宣布投身RISC-V。很显然,LoongArch是龙芯筹谋已久的成果,绝非某些厂商用来应对危机公关的“按揭开源”产品。
由于采用了LoongArch,彻底杜绝了MIPS指令集一些饱受诟病的问题,龙芯自定义指令有一些比MIPS指令更优秀,代码执行效率更高,因而在局部(并非全部都更好)出现了二进制翻译后,不仅没有性能损失,反而性能比直接用MIPS还要好的情况。为此,铁流咨询了行业人士,获得的回复是“二进制翻译领域,翻译后效率超过100%,这个是有先例的”。
一位开发者告知:LoongArch和MIPS没有关系了,新指令集LoongArch基本和MIPS可以一一对应,当前loongArch已经非常成熟了,经过了一年的磨合,基本所有的包都编译好了,debian的系统和我们常用的ubuntu系统一样,apt-get install安装就可以了,感觉不到是新的指令集。
从龙芯最初基于MIPS添加指令,到发展出基于MIPS的LoongISA,再到最新的LoongArch,龙芯的目的是非常明确的,也是显而易见的,那就是尽一切可能掌握主导权,坚定不移走自主之路。
3A5000是龙芯开启指令集自主的里程碑
在过去这些年,无论是Imagination,还是Wave Computing都没有在MIPS投入多少资源,都只是在拿MIPS的IP赚钱,尽可能榨取MIPS的剩余价值,主要精力分别放在各自的主营业务——GPU和AI芯片上。直接的结果就是MIPS的CPU发展非常慢,如今,龙芯3A4000的性能已经大幅超越了MIPS CPU,龙芯3A5000则在裸CPU性能上相对于龙芯3A4000进一步提升50%至60%,堪称当下最好的自主CPU。
Imagination、Wave Computing在硬件上是如此,在软件上亦是如此。就软件生态方面,由于过去这些年Imagination、Wave Computing的不作为,其实很多方面已经是龙芯挑大梁了。
在龙芯对很多软件进行移植优化的时候,也不忘同时带上其他MIPS处理器的支持,在v8,OpenJDK等JIT虚拟机中,龙芯都已经成为了整个MIPS架构的代码维护者。半年前UOS也把Loongson内核与x86内核、ARM内核并列,其中一项更新是增加了对龙芯3A4000的支持。
过去,龙芯在MIPS的软件生态方面已经获得了一定的主导地位。龙芯完成了.NET的移植,成为了Java运行环境OpenJDK 13的一大贡献者,现在维护着上游MIPS架构和龙芯扩展的代码。诸多多媒体库,例如FFmpeg,libvpx,OpenH264,libyuv等,都已经由龙芯针对自己的MMI以及MIPS的MSA等向量指令进行优化并提交给上游。有些库支持龙芯扩展指令甚至比支持MIPS的扩展指令还早。Linux内核的上游也一样被龙芯生态链成员维护着。龙芯在开源软件方面已经获得了一定的发言与控制权。
MIPS原本的生态绝大部分已经是历史,龙芯如今的软件生态主要是来自龙芯自己维护的各种开源项目,以及国内各家软件开发商对产品的移植,本质上已经不能再称为MIPS软件生态,而应当称为龙芯生态。事实上,在移植一些软件的时候,已经要区分龙芯版本和MIPS版本了。
LoongArch是龙芯筹划多年的产品,这一点从LoongArch在3A5000 CPU完成流片后才亮相就可能看出来。龙芯确立LoongArch之后,龙芯和MIPS已经分道扬镳,毫无关系了。对于龙芯而言,无论MIPS存在与否,都不影响龙芯独立自主建生态,龙芯过去是这么做的,现在依然这么做,未来还是这么做。
过去几年中,龙芯是全球还在发展MIPS高性能处理器的玩家,在龙芯退出MIPS,立起LoongArch大旗之后,龙芯3A4000极有可能被定格为最强MIPS处理器。在失去龙芯这个玩家,MIPS投奔RISC-V后,MIPS也将成为历史。LoongArch是独立生态的基本点,3A5000则是龙芯开启LoongArch新征程的里程碑。