指令集|龙芯彭飞:LoongArch 的自主与兼容( 二 )


目前基于自主 CPU 的发展情况是怎么样?

指令集|龙芯彭飞:LoongArch 的自主与兼容
文章插图

左图是龙芯 3A5000 芯片结构图,这里每一个方块其实都是一个 IP,这些 IP 都是完全自主设计、自主演进,左下角罗列了芯片里面的 IP 核。
右上角反映了近十年自主 CPU 的发展速度,第一代 3A1000 跑分是 2-3 分,经过近十年的快速迭代,现在能达到 30 分(目前国际主流 CPU 跑分在 20-40 分之间)。右下角图片是芯片产业里性能提升的曲线,可以看到,前几年呈现线性快速增长,越往后增长越缓慢,龙芯CPU也即将达到性能增长的顶端。
指令集是信息产业绕不过去的话题,前面提到,我国不可能基于国外的指令系统构建自己的产业生态体系,就像中国人可以用英语阅读和写作,但是用英语构建我们国家的文化体系、构建民族文化是不可能的。
另一方面,应该如何考虑指令集的自主和兼容性?过去十几年,业界一直在争论这个问题,兼容性和自主性孰优孰劣?兼容有兼容的好处,可以直接利用现有生态里的软件产品,有现成的生态,一开始发展速度可能会快一些,但最大的问题是受制于人。
那么,我们能否做到既自主又兼容的指令系统?从龙芯过去二十年的发展来看,这是可以做到的,重点是要打造“3+3+3”的核心能力。一是三大编译器,GCC、LLVM、GOLANG。二是三个虚拟机,Java、JavaScript、.NET。三是三个翻译器,实现对 MIPS、X86、ARM 的二进制翻译,直接运行其应用软件。
目前,龙芯中科推出了自主指令系统 LoongArch ,包括基础架构部分和向量指令、虚拟化、二进制翻译等扩展部分,近2000条指令,是充分考虑兼容的指令系统。
LoongArch的特点主要表现在两个维度:一是用户态,二是核心态。LoongArch 是一个精简指令系统,32 位长指令、32 个通用寄存器、32 个浮点寄存器。用户态是给编译器、程序设计者使用。核心态在内存管理、控制寄存器的数量、规格都进行了大量的创新性设计,是符合现代操作系统的设计。
我们对 LoongArch 的性能进行了测试,在相同 IP下,一个用 MIPS 指令集,一个用 LoongArch 指令集,可以看到,动态指令数下降了 15% 到 20%,总体性能提升了 12% 左右。
LoongArch 指令系统能够支持二进制翻译,融合了 X86、ARM、MIPS、RISC-V 指令系统的主要功能特性。
自主指令系统的生态是如何构建的。龙芯中科推出了二进制翻译器,又称 LAT 翻译体系。最底层是 LoongArch 架构的芯片,再往上是操作系统,操作系统往上有几个维度:基于 LoongArch 的原生 Linux 应用,比如说本地化的办公、音视频的应用。
同时,龙芯中科推出了三个翻译器 :MIPS 应用往 LoongArch 上翻译,ARM应用 往 LoongArch上翻译,X86应用 往 LoongArch 上翻译,未来希望能够做到:从MIPS 翻译过来百分之百性能不损失,从ARM 翻译过来90% 性能不损失,从X86 翻译过来做到 80%的性能不损失。
目前,Photoshop、微信、一些游戏都可以在国产平台上很好地运行,生态是有保障的,包括一些主流的 Linux 应用框架都可以原生支持。国产操作系统厂商统信和麒麟也都推出了对应的国产操作系统版本。
关于 LoongArch 平台的 AI 计算,龙芯中科构建了全域异购 AI 硬件支撑体系,龙芯 CPU +GP GPU、龙芯CPU+ASIC、龙芯CPU+FGPA分别应用于通用 AI 计算和专用AI计算。软件方面,龙芯中科构建多层级AI软件生态体系,包括系统支撑、计算框架、算法模型层级,AI 领域有完整的解决方案。
目前围绕龙芯中科的产业合作伙伴已经有上千家,通过一系列的措施,包括标准建设、开源软件建设、解决方案提供、安全体系、产品认证、人才培养、出版书籍等,从多个维度构建 LoongArch 产业生态体系。
同时,LoongArch 正在构建技术产业联盟,在联盟里与产业合作伙伴实现知识产权的共享,一起打造一套生态。希望在2025年消除指令系统之间的壁垒。
谢谢大家。