2022年6月6日,由工业和信息化部网络安全产业发展中心指导,北京经开区国家信创园和龙芯中科联合主办的“2022年LoongArch生态发展暨通明湖创新应用论坛”在线上召开。会上,龙芯重磅发布了龙芯3C5000服务器处理器,并联合生态伙伴共同发布新一代国产服务器基础软硬件平台。
克服奴才心态,做自己的指令系统
近年来,在国家的重视和支持之下,国产CPU也迎来了快速的发展。华为、飞腾、海光、兆芯、龙芯和申威等则是目前国内为数不多的国产CPU厂商。
但不论是出于自主可控、商业化还是生态方面的考虑,华为、飞腾、海光、兆芯、龙芯和申威一开始都是选择的是利用此前已有的相对成熟的CPU指令集架构。
比如华为、飞腾都选择的是基于ARM公司的ARMv8指令集架构授权来开发自己的CPU;海光、兆芯则分别是通过与AMD和威盛成立合资公司,来获得x86指令集授权开发自己的CPU;龙芯最初是基于MIPS指令,申威则是基于ALPHA指令集。
时至今日,x86和ARM指令集架构仍是最为主流的两大指令集架构,而MIPS、ALPHA、SPARC、POWER等指令集架构都已经走向衰落。
此外,也有正在兴起的新的指令集架构,比如大家熟悉的开源的RISC-V,目前国内也有非常多的芯片厂商在基于RISC-V指令集架构开发自己的CPU。
选择已有的开源的或者可开放授权的CPU指令集架构,则意味着无需从头做起,在可以满足一定的国产自主可控要求的基础上,可以利用已有的软硬件生态,快速得以发展。
不过,在龙芯中科董事长胡伟武看来,不论是x86、ARM、RISC-V,还是龙芯此前采用的MISP指令集架构,都外国的指令集架构,特别是在美国对华贸易战、科技战背景之下,都存在着不可控的风险。
尤其是对于自主可控要求更高的信创产业来说,如果采用基于国外指令集架构的CPU,仍然难以改变核心技术受制于人的局面。
比如,近年来由于美国方面对于国产芯片产业的打压,华为、飞腾、海光、申威等国产CPU厂商均已被美国商务部列入了实体清单,这也使得他们获取新的指令集架构的授权受到了限制。
比如ARM最新的ARMv9架构,国内厂商到目前为止没有一家获得授权。
“指令系统、基础工业(工艺材料和设备)是信息产业的两个最重要基石。基于国外指令系统的信息产业支撑不了中华民族伟大复兴。我们中国人可以用英文来写文章,但不可能基于英文来发展我们自己的民族文化。同样,我们中国人也可以用国外的指令系统做产品,但是我们不能指望用国外的指令系统来做自己的生态。”
胡伟武坦言,龙芯这么多年的发展历程就是一个鲜活的例子。“做跟班是可以的,想超越是不行的。龙芯CPU曾经在MIPS架构里边性能是最高的,在软件生态方面,龙芯也是慢慢成为MIPS领域的主导者,但是MISP觉得龙芯要超过他们则是不允许的。丫鬟拿了一辈子钥匙,也还是丫鬟。所以,我们需要克服奴才心态,做自己的指令系统。”
龙芯中科董事长 胡伟武
胡伟武进一步指出:“我经常在市场上听见有人说龙芯的搞自主指令集架构芯片不行,不如x86和ARM。说x86、ARM指令集架构,才是市场主流,龙芯的怎么可能干的过x86和ARM?这就是一种奴才心态,我们要克服这种奴才心态。”
LoongArch正成为与x86/ARM并列的顶层开源生态系统
其实CPU指令系统的是否需要自主研发,这在多年前就有讨论,至今至少已经有长达15年了。
自主研发有自主研发的好处,但是最大的难题在于生态的建设。而选择采用或兼容国外指令集的优势则是能够直接共享现有的国外指令集的软硬件生态。
龙芯在做了20年之后的选择是,在自主的同时去兼容。
2021年4月,龙芯正式发布了自主指令系统架构LoongArch,在做到了完全的自主可控,拥有完全的自主知识产权的同时,龙芯的LoongArch指令集还实现兼容多种国际主流的指令系统。
胡伟武表示,要做到既完全自主又兼容,需要“2+3+3+2”的十大基础软件能力。即,两大核心软件:BIOS和操作系统内核(含驱动和虚拟化);三大编译器:GCC、LLVM、GOLANG;三大虚拟机:Java、JavaScript、.NET;两大二进制翻译系统:x86和ARM。“我们不光要纵向构建自己的软件生态,横向还能接入x86和ARM。”
“LoongArch指令系统正在与x86、ARM一样成为一个国际主流的指令系统,它以后还会开源,但它跟RISC-V不一样,RISC-V的开源是美国人主导的,而我们LoongArch的开源是我们中国人自己的开源指令系统。虽然过去我们国内曾经有过一些自主研发的指令系统都没成功,但是我相信我们的LoongArch是可以成功的。”胡伟武说道。
据介绍,LoongArch架构已得到国际开源软件界广泛认可与支持,并已向GNU组织申请到ELF Machine编号(258号),即LoongArch的“身份证";Linux内核社区版本也将持续支持龙芯系列CPU和桥片。
Binutils、GDB等基础工具已实现对LoongArch的原生支持,ACPI国际标准中纳入了对LoongArch架构特性的支持;GCC已实现与LoongArch架构的原生支持,LLVM、GO已经初步实现对LoongArch架构的原生社区支持;龙芯与.Net、V8、 Mozilla等社区紧密合作,基于LoongArch架构实现了Java、Javascript、 . Net等三大虚拟机运行环境。
龙芯3C5000服务器处理器发布:16核心性能媲美ARM 64核处理器
2021年7月,龙芯正式发布了首款基于自主研发的指令系统LoongArch的处理器芯片龙芯3A5000,性能实现大幅跨越,代表了我国自主CPU设计领域的最新里程碑成果。
作为首款基于LoongArch指令集系统的龙芯3A5000处理器,主频为2.3GHz-2.5GHz,包含4个处理器核心。每个处理器核心采用64位超标量GS464V自主微结构,包含4个定点单元、2个256位向量运算单元和2个访存单元。
龙芯3A5000集成了2个支持ECC校验的64位DDR4-3200控制器,4个支持多处理器数据一致性的HyperTransport 3.0控制器。
龙芯3A5000支持主要模块时钟动态关闭,主要时钟域动态变频以及主要电压域动态调压等精细化功耗管理功能。
根据龙芯中科公布的国内第三方测试机构的测试结果显示,龙芯3A5000处理器在GCC编译环境下运行SPEC CPU2006的定点、浮点单核Base分值均达到26分以上,四核分值达到80分以上。
基于国产操作系统的龙芯3A5000桌面系统的Unixbench单线程分值达1700分以上,四线程分值达到4200分以上。上述测试分值已经逼近市场主流桌面CPU水平,在国内桌面CPU中处于领先地位。
较上一代龙芯3A4000处理器,龙芯3A5000处理器在保持引脚兼容的基础上,性能提升50%以上,功耗降低30%以上。
据龙芯中科副总裁 张戈介绍,此次发布的龙芯3C5000系列是龙芯面向服务器领域倾力打造的高性能通用处理器,采用全新的龙芯LoongArch自主指令系统,具备超强算力性能卓越的特点,可满足通用计算大型数据中心云计算中心的计算需求。
龙芯中科副总裁 张戈
在芯片设计方面,龙芯3C5000通过封装集成了四个3A5000硅片,形成16核处理器,重点优化多核多路互联效率。
单芯片unixbench分值9500以上,双精度计算能力达560GFlops,16核处理器峰值性能与典型ARM 64核处理器的峰值性能相当,并支持最高16路互连,搭配新一代龙芯7A2000桥片,PCIe吞吐带宽比上一代提升400%以上。可满足通用计算、大型数据中心、云计算中心的计算需求。
此外,龙芯3C5000通过芯片级安全机制可为等保2.0、可信计算、国密算法替代、网络安全漏洞防护等提供CPU级内生支持。
龙芯现阶段的主要矛盾:应用生态
纵观龙芯CPU的发展历程,胡伟武认为,可以分为三个阶段:
在2019年之前,龙芯面临的主要矛盾是CPU性能不足。比如,在2013- 2015年龙芯第一代产品(3A1000、3B1500) 通用处理性能只有市场主流产品的1/10,随后在2016-2018年推出的第二代产品(3A2000、 3A3000) ,3A3000性能是3A1000的4倍,解决了操作系统与硬件结合部的稳定性问题,达到基本可用。
在2019-2021年,龙芯推出了第三代产品(3A4000、3A5000、3C5000) ,尤其是自主LoongArch指令集的3A5000性能达到了3A3000的3倍,相比上一代的3A4000性能也提升了50%以上,功耗降低30%以上,逼近市场主流产品水平,达到了好用的程度。
但是,配套的国产操作系统成为了龙芯当时面临的主要矛盾。当时国内众多“小而散”的国产操作系统开发团队逐渐整合成了统信、麒麟两大国产操作系统团队,各自已有2000-3000人的规模。在这过程中,龙芯需要解决操作系统与硬件结合部的兼容性问题,消除操作系统和硬件的组合“爆炸”。
“我们曾经有一个时期,每个整一个操作系统对每款整机都有适配,现在我们一个操作系统,不管谁的整机,比如只要龙芯CPU装上就能跑。”胡伟武说道。
随着自主LoongArch指令集的3A5000系列的推出,接下来,龙芯还将会推出第四代产品(3A6000、3A7000) ,届时将达到市场主流产品水平。
据胡伟武透露,3A6000将会采用与3A5000相同的制裁工艺(应该是12nm),将主要通过设计优化来提高性能。基于仿真结果,3A6000处理器单核SPEC CPU 2006定点/浮点base分值(GCC)从26/28分提高到35/45分,双DDR4的Stream带宽(峰值51. 2GBps)也将从25GBps提高到38GBps。
随着龙芯CPU性能的不断提高,2022年起龙芯技术平台的主要矛盾也开始转向应用生态。龙芯基础软件工作重点也从操作系统与硬件结合部转向操作系统与应用结合部。
三大举措,构建LoongArch应用生态
对此,龙芯采取了三大举措:一个是夯实基础;二是广泛兼容,不光Linux内部的兼容,还要跟x86和ARM兼容;三是开发自主应用,形成自主编程框架和编程语言。
为此,龙芯除了持续与统信、麒麟等国产操作系统厂商合作之外,还面向信息化应用和工控及终端应用分别推出了龙芯基础版操作系统Loongnix和龙芯基础版操作系统LoongOS。
龙芯还完成了LoongArch基础软件体系(LBF)的建设,已经可以实现原生支持Linux全部主流基础软件和应用环境。也就是说,在Linux平台上,x86、ARM有的,龙芯也有。
当然,Linux平台的开放性也引发了很多应用兼容性问题,包括打包格式不兼容,API环境不兼容,内核升级引起不兼容等等。为了解决这一问题,龙芯推出了龙芯应用兼容框架(LCF)实现跨Linux版本应用兼容。
而为了兼容各种x86、ARM应用,龙芯也推出了自研的x86架构翻译系统(LATX)和ARM架构翻译系统。
胡伟武表示,这里边需要用到很多核心技术:首先LoongArch指令一定要加入一些x86和ARM功能的指令,这样翻译才会高效;其次,要做一个从x86架构到LoongArch架构的高效的二进制翻译器;第三还要模拟出Windows环境来。
据介绍,目前龙芯在兼容x86/Windows应用方面,正按照“3+10+X”的节奏在推进。“3”指的是Windows打印机(Linux平台很多打印机驱动都没有)、IE兼容的浏览器、.NET虚拟机;“10”指的是10个常见的基础应用。
胡伟武表示:“按照3+10+X的节奏,我们第一要把兼容性做好,第二是要把性能优化好,最后再把整个普通通用的平台做好。我觉得也许今年3+10可以做好,明年我们再把X也做好。”
此外,为了解决Linux及Windows生态当中一些用户经常遇到的浏览器问题,龙芯还推出了自主开发的兼容IE的龙芯浏览器。比如,基于IE/Windows系统开发的大量历史应用(各类网页元素及插件)无法在当前的Chrome等浏览器上运行,像很多用户登录网银都会遇到类似的问题。而龙芯浏览器通过插件兼容技术、二进制翻译、网页元素兼容转码等关键技术,实现了对IE应于的兼容。
胡伟武自豪的表示:“我相信全球的Linux平台,只有龙芯浏览器能够顺利的登录咱们的各家网银。所以我经常说生态是做出来的,不是跟出来的,不是说我跟x86兼容,我的生态就肯定好,因为人家的生态也不一定好。”
最后,对于目前国内信创领域出现的,自主CPU和操作系统的整机产品需要无休止的迁移适配问题,龙芯也正在推动自主编程框架和编程语言的建立。
胡伟武指出,自主CPU和国产操作系统的整机产品需要无休止的迁移适配,是因为运行在上面的应用都是基于国外的编程框架写出来的。而Windows、安卓、iOS平台则不存在适配问题,因为他们有自己的编程框架。
胡伟武强调,自主指令系统+自主编程框架是自主软件生态的底座。自主编程框架是自主操作系统的重要特征。目前的国产操作系统都不是真正意义上的自主操作系统,只是开源操作系统的自主发行版。APP开发者使用自主编程框架进行编程才能彻底解决无休止的适配问题。
为了解决这一问题,龙芯计划推出自主龙芯自主编程框架LDF (Loongson appl ication Development Framework) 。据介绍,目前龙芯正在调研Windows、 IOS、 Android编程框架的特征,形成龙芯自主编程框架,争取2023/2024年推出。
“龙芯经过20年的发展,到2021年自主CPU和OS基本完成补课,自主CPU的应用软件生态正变得越来越好。龙芯将在‘十四五’期间努力完成‘三个转变’:从技术‘补课’到生态建设的转变;从政策性市场到开放市场的转变;从跟随性发展的‘必然王国’到自主发展的‘自由王国’的转变。”胡伟武最后总结说到。