科工力量:龙芯发布自主指令系统,彻底抛弃MIPS

2021-04-26 09:55:51 332

观察者网

发布时间: 04-2008:01上海观察者信息技术有限公司官方帐号,优质创作者

【文/科工力量专栏作者 铁流】

日前,龙芯发布自主指令系统(LoongArch),在国内CPU公司争相引进X86、ARM、Power、SPARC、RISC-V等指令集的情形下,龙芯推出自主指令系统架构显得异常特立独行。

过去这些年,国内CPU公司引进英特尔、AMD、IBM、ARM、VIA、高通等公司的CPU,但始终没能建立起自己的Wintel,原因就在于始终保持着一种跟随心态,缺乏独立自主的决心和毅力。随着国际大环境风云变幻,特别是经过特朗普和拜登的教育,构建自主可控的信息技术体系和产业生态已成为共识,龙芯在此时发布自主指令系统架构可谓是恰逢其时。

龙芯自主指令系统是全新指令集

CPU指令系统是计算机的软硬件界面,是CPU所执行的软件指令的二进制编码格式规范。

目前,国际上曾经具有一定影响力的指令集有X86、MIPS、ARM、Power、Alpha、SPARC、RISC-V等,这些指令集都是舶来品,真正由国内自主研发的只有LoongArch和SW64。SW64是申威CPU的指令集,由国内单位自主研发,神威太湖之光超算的芯片SW26010就是基于SW64设计的。过去,龙芯基于MIPS指令集添加指令发展出LoongISA,本次的龙芯自主指令系统则与MIPS完全没有关系,是完全自主研发的全新指令集。

MIPS是全球第一种商用的RISC指令集,由于“历史悠久”,指令系统中有部分不适应当前软硬件设计技术发展趋势的陈旧内容,龙芯摒弃了传统指令系统中令人诟病的部分,吸纳了近年来指令系统设计领域诸多先进的技术发展成果。例如单条指令支持的立即数从MIPS的最大16位扩展到最大24位,分支跳转偏移也从64K扩展到1M字节,以及寻址空间从固定分段改变为单一平面等,有效减少了编译结果的目标指令条数和访存次数,提高了效能。

由于LoongArch指令设计上更加优化,在把源码编译为目标程序后的指令数量上甚至比x86略有优势。在Coremark的测试中,程序运行过程中执行的指令总数LoongArch为MIPS的83%,相当于运行效率提高了20%。在类型更加多样的测试中,综合测试结果,LoongArch平均比MIPS快12%,说明全新设计的LoongArch是成功的,可以为CPU带来大幅的性能提升。

另外,LoongArch设计时充分考虑兼容生态需求,融合了各国际主流指令系统的主要功能特性,操作系统中除了运行原生的 LoongArch程序,还能通过翻译的方式兼容MIPS、x86、ARM、RISC-V 这几种指令集的 Linux 程序。根据官方公布的PPT,在翻译X86时,运行效率可以达到80%。

2020年,龙芯委托国内第三方知名知识产权评估机构对龙芯基础架构进行深入细致的知识产权评估,将LoongArch与ALPHA、ARM、MIPS、POWER、RISC-V、X86等国际上主要指令系统有关资料和几万件专利进行深入对比分析。2021年1月,针对被评估的基础架构版本该评估机构认为:

1)LoongArch在指令系统设计、指令格式、指令编码、寻址模式等方面进行了自主设计。(2)LoongArch指令系统手册在章节结构、指令说明结构和指令内容表达方面与上述国际上主要指令系统存在明显区别。(3)未发现LoongArch基础架构对上述国际主要指令系统中国专利的侵权风险。

自主CPU的两个维度:自主指令系统、自主完成前端后端设计

一直以来,不论是与外商合资的国产CPU,还是购买外商技术授权的国产CPU,以及把外商CPU和自己的ASIC封装在一起的国产CPU均号称符合自主要素,宣传自主研发向政府要政策、要市场。地方政府基于局部利益、短期利益纷纷给这些所谓的国产CPU开绿灯、送政策。然而,在巨额资金的投入下,这些技术引进CPU不仅没能开花结果,反而出了不少幺蛾子,甚至折戟沉沙。之所以出现这些情况,关键还是对自主CPU的定义模糊,地方政府胡乱花钱,盲目引进技术。

铁流认为,自主CPU必须是基于自主指令,自主完成CPU设计。

首先看自主指令系统。过去,一些国内厂商宣称自己获得了ARM v8授权,一些ARM CPU的支持者因此就称国产ARM CPU符合自主要求。半个月前,ARM发布了其下一代芯片架构ARM v9,并声称是10年来最重要的创新,是未来3000亿ARM芯片的基础。在ARM v9发布后,国内购买ARM v8授权的ARM CPU厂商何去何从就是一个问题了。

诚然,关于某些国内厂商能够继续购买ARM v9指令集授权的报道充斥网络,但只要查一下新闻源头可以发现源头是2019年的一篇外媒报道,国内媒体是拿2019年的报道拼接套娃,就ARM官网上关于发布ARM v9的网页看,文末的合作伙伴有谷歌、英伟达、恩智浦、富士通、红帽等国外企业,也有台积电、联发科、OPPO、VIVO、小米等中国企业,然而,一些国内厂商并不在合作伙伴名单内。

退一步说,即便这次侥幸买到了ARM v9授权,那么,将来ARM发布V10、V11、V12......国内ARM CPU企业是不是还要继续买V10、V11、V12授权......如果是这种“买无止境”,那么,国产ARM CPU所标榜的“自主”又从何谈起呢?

因此,自主CPU必须基于自主指令系统,基于ARM授权开发的CPU根基不牢,是在沙滩上建房子,自主性无从谈起。

其次是自主设计。这里的自主设计包含自主完成前端设计和后端设计。芯片设计到流片,基本分两大部分,前端和后端。

前端是RTL design ,根据design specification,做设计,形成verilog 代码,然后用eda tool做 functional verification,反复做迭代修改,直到通过检验。后端设计分两部分,logic design 和physical design。logic design 接受前端的Verilog 文件,用synthesis 工具 生成门级网表,然后再用eda 工具做logic equivalence check,迭代直到通过。physical design 接受门级网表用place&route 软件生成physical layout,并用tools 对layout进行physical verification,包括RC extraction 和 post-layout verification 等等,迭代直到通过。通过后生成GDSII,发送代工厂流片,叫tape-out。

当下,从国外购买各种IP和设计外包是行业常态,比如华为麒麟芯片、紫光虎贲芯片的CPU核、GPU核基本从ARM、Imagination等外商购买,又比如飞腾把后端设计外包给世芯。

之所以出现购买IP和设计外包的情况,根源还是自己基础不牢,技术不扎实,又不愿意一步一个脚印提升技术水平,想要尽快出成绩。而技术提升恰恰是需要循序渐进的,前端设计一代产品更新源代码替换一般不会超过25%,必须一代一代逐代演进。后端设计中的定制模块设计,通常先流一次片,用于验证功能,没有问题,再当做一个模块或者IP集成到芯片中,保证不容易出错,因此,后端需要经验丰富的人,这都是拿钱和流片,以及时间去学习积累出来的,而国内一些CPU公司为了抓住国家政策红利,自然会选择购买IP或外包设计尽快出成绩。

在采用外购的IP,或将设计外包之后,一方面会带来自身技术底子不扎实的问题,一个最明显的现象就是后继乏力,发展后劲不足,比如在CPU的IPC提升上,技术引进CPU明显不如龙芯,于是只能靠采用更先进的台积电工艺来提升性能。另一个是必然带来巨大政治风险,一旦遭遇制裁,后果不堪设想。最近,飞腾被美国列入实体清单,而飞腾的后端设计恰恰外包给了世芯,由于世芯在中国台湾岛内上市,且飞腾是世芯的第一大客户,去年占其业绩比重约39%,世芯在第一时间召开了在线说明会。根据世芯官方消息,飞腾被列入实体清单后,为该公司提供最后阶段设计的世芯后续出货将受阻,而飞腾委托世芯设计及量产制造的尖端制程芯片,已被台积电暂停接单,并待后续调查状况后再行决定。

结语

一种指令系统承载了一个软件生态,如X86指令系统和Windows操作系统形成的Wintel体系,以及ARM指令系统和Android操作系统形成的AA体系。为了可以对接X86和ARM生态,兆芯通过合资的方式使其在中国大陆市场可以销售X86芯片,华为、飞腾、华芯通使用购买指令集授权的方式获得ARM授权,但事实证明,华为、飞腾、华芯通的道路行不通。在ARM的地基上,建不起自主技术体系的高楼大厦。国外CPU厂商以指令系统作为控制生态的手段,需要获得“授权”才能研制与之相兼容的CPU。采用授权指令系统可以研制产品,但不可能形成自主产业生态,就像中国人可以用英文写小说,但不可能基于英文形成中华民族文化。

指令系统是软件生态的起点,只有从指令系统的根源上实现自主,才能打破软件生态发展受制于人的锁链。龙芯自主指令系统的推出是龙芯筹谋已久的成果,绝非某些厂商用来应对危机公关的“按揭开源”产品。因为3A5000就是基于LoongArch设计,且已经有样片,将在2021年投放市场,从确定新指令集到基于新指令集设计一款CPU,再到完成流片,需要漫长的周期。从龙芯最初基于MIPS添加指令,到发展出基于MIPS的LoongISA,再到最新的LoongArch,龙芯的目的是非常明确的,也是显而易见的,那就是尽一切可能掌握主导权,坚定不移走自主之路。

必须说明的是,龙芯和华为、飞腾一样,在当下都很难顶住美国禁令。

诚然,华为和飞腾ARM芯片绝版的最主要原因是失去台积电流片渠道,但两者在设计上都依赖海外技术输入,华为的鲲鹏芯片设计很大程度上得益于华为开设在美国的研究所,而飞腾在后端设计上则外包给世芯,这都是非常危险的,因为美国可以轻易中止技术输入。可以说,华为和飞腾在ARM授权、CPU设计、CPU制造三个环节都被卡脖子。

龙芯虽然已经实现了自主指令系统和CPU自主设计,不需要从国外研究所获取技术,也不需要把后端设计外包给世芯这样的境外厂商,但在流片渠道上同样脆弱。由于在半导体设备、材料、EDA等多方面受制于人,国内尚无法做到全产业链,而美国的实体清单恰恰是“100-1=0”。

当下,最要不得的就是海军自嗨、厉害体、沸腾体。铁流以前反对颅内充血,反对沸腾体,还被指责“站不起来”。

搞笑的是,铁流过去主张低调循序渐进自主指令集、自主设备、自主材料、自主制造建设全产业链的观点时,那些指责铁流“站不起来”的人群又指责铁流这种事情不现实,应当“融入国际主流”。

铁流不禁要问,究竟是谁站不起来!

一些人必须克服“奴才”心态,在评价国产CPU时,应当看国产CPU本身行不行,而不能比谁的“洋爹”发展的好来论英雄。

实践证明,“融入国际主流”并非良策。特朗普和拜登已经用行动说明了一切。当下,龙芯已经基于LoongArch设计出了3A5000,而且基于12nm工艺的3A5000在最关键的单核性能上超越了基于7nm的鲲鹏CPU,这是一个里程碑,是自主技术采用相对落后工艺超越引进技术的里程碑。

在龙芯已经在设计环节实现自主的情况下,希望国内原材料厂商、设备厂商、制造厂商、EDA厂商能够给力,希望软件厂商能够积极移植适配应用软件,最终实现打通芯片设计、制造、封装、测试、原材料、EDA,以及OS、中间件、数据库、应用软件全链条。


电话咨询
产品中心
解决方案
关于我们