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

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

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

目前,国际上曾经具有一定影响力的指令集有XMIPS、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、xARM、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设计。其次是自主设计。这里的自主设计包含自主完成前端设计和后端设计。

芯片设计到流片,基本分两大部分,前端和后端。前端是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或外包设计尽快出成绩。指令系统是软件生态的起点,只有从指令系统的根源上实现自主,才能打破软件生态发展受制于人的锁链。龙芯自主指令系统的推出是龙芯筹谋已久的成果,绝非某些厂商用来应对危机公关的“按揭开源”产品。

因为3A5000就是基于LoongArch设计,且已经有样片,将在2021年投放市场,从确定新指令集到基于新指令集设计一款CPU,再到完成流片,需要漫长的周期。从龙芯最初基于MIPS添加指令,到发展出基于MIPS的LoongISA,再到最新的LoongArch,龙芯的目的是非常明确的,也是显而易见的,那就是尽一切可能掌握主导权,坚定不移走自主之路。必须说明的是,龙芯和华为、飞腾一样,在当下都很难顶住美国禁令。

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

铁流以前反对颅内充血,反对沸腾体,还被指责“站不起来”。搞笑的是,铁流过去主张低调循序渐进自主指令集、自主设备、自主材料、自主制造建设全产业链的观点时,那些指责铁流“站不起来”的人群又指责铁流这种事情不现实,应当“融入国际主流”。一些人必须克服“奴才”心态,在评价国产CPU时,应当看国产CPU本身行不行,而不能比谁的“洋爹”发展的好来论英雄。

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

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

相关文章