智能硬件

龙芯彭飞LoongArch 的自主与兼容

雷峰网按:2021 年 12 月 9 日-2021 年 12 月 11 日,2021 第六届全球人工智能大会(GAIR 2021)于深圳正式召开。历经五年,见证数次潮水的转向,成为目前为止粤港澳大湾区人工智能领域规模最大、规格最高的学术、工业和投资领域跨界盛会。

在大会第二天举办的“集成电路高峰论坛:国产高端芯片之路”上,汇聚来自学术界、产业界和投资界的 15 位大咖,共同探讨了国产高端芯片的实力以及 RISC-V 带给中国芯片的机会。

CPU 是一个复杂系统,在我们国家追求自主性的过程中,牵涉到三个维度的自主性,包括基于自主 IP 核的芯片设计、基于自主指令系统的软件生态,以及基于自主材料设备的生产工艺。

一个芯片里集成大量的 IP 核,IP 核是否自主设计是最基础的维度。指令集系统承载着软件生态,软件生态控制着产业体系,而产业体系是最大的卡脖子环节,基于国外指令集不可能发展自主的信息产业体系。由此,自主性显得十分重要。

彭飞指出,中国一定要下定决心构建独立于 Wintel 体系和 AA 体系之外的自主的信息技术体系和产业生态体系。

前两大生态体系——X86 的生态体系和 ARM 的生态体系——是美国主导的信息化生态体系,未来要有基于我国的指令系统、国产的操作系统形成的,和这两个生态体系平行的一套生态体系。

除了自主性,指令集的兼容性也很重要。龙芯中科基于二十年的CPU研制和生态建设积累推出的 LoongArch 指令系统,充分考虑兼容生态的需求,融合 X86、 ARM 等国际主流指令系统的主要功能特性,并依托龙芯研发团队在二进制翻译方面十余年的技术积累创新,可实现跨指令平台应用兼容,从而达到融合生态的目的。

以下是彭飞在 GAIR 2021 的演讲内容,雷峰网(公众号:雷峰网)进行了不改变原意的编辑整理:

今天从 CPU 的角度介绍一下基于指令集的国内发展现状。CPU 是一个复杂系统,在我们国家追求自主性的过程中,主要牵涉到三个维度的自主性:

1、自主 IP 核。

一个芯片会集成大量的 IP 核,CPU、GPU 仅是其中一个 IP 核,IP核是否能自主设计是考虑自主性最基础的维度。

2、基于自主指令系统的软件生态。

指令集是芯片对外的接口,同时是承载上面软件生态的体系基础。

过去,全世界基本上是基于两大生态体系:一是基于 Windows+Intel,X86 架构的产业生态体系;二是 AA 体系,就是ARM+Android,ARM 架构的产业生态体系,分别在桌面服务器、移动设备领域构建出了两大体系。我们国家要打造第三套信息化体系。

2020 年,龙芯中科正式推出了自主指令系统 LoongArch,不包括国外任何授权,是跟 X86、ARM 平行的指令系统。

3、自主材料的设备工艺自主性。

现在外界常说的“卡脖子”问题,“卡”得最严重的就是这个维度。为什么会出现这种情况?

可能有两方面原因:一是我国没有承接国外先进的产业转移。集成电路起源于美国,当集成电路生产,从美国向外产业转移的时候,有的转移到日本、转移到韩国,有的转移到我们国家的,但没有转移到中国。

另一个是过去国家集成电路设计相对比较薄弱,不能通过设计带动工艺的发展。不过,这几年我国芯片设计能力有了大幅提升,通过芯片设计带动整个工艺快速发展,从行业发展来看,虽然还有差距,但相信再过五到十年,这个差距可以补齐。

在 70 年代,美国硅谷的各种芯片蓬勃发展,当时芯片设计还不是美国一家独大,日本、欧洲、韩国都有芯片设计能力。Intel 曾在 70 年代向日本公司授权,让其采用兼容 Intel 的架构设计 CPU,这些 CPU 既便宜又好用,后来还反销到美国。1986 年,美国挥起了制裁的大棒。

回顾那段历史可以发现,美国制裁他国高端芯片的发展并不新鲜,历史在反复上演。为什么会出现这样的情况?

当时日本犯了一个最大错误,就是只重视 CPU 产品的研发,忽视生态主导权。如果一直做生态里某一款产品,会难以实现超越。因此,掌握生态主导权极其重要。

1982 年,NEC 生产的个人 PC 用的是 Intel 的芯片,1985 年换成了自研芯片,1986 年又换回去了。为什么?因为制裁失去了生态的主导权,这给我们很大的启示。

中国一定要下定决心构建自己的信息化生态体系,前两大生态体系,X86 的生态体系和 ARM 的生态体系是美国主导的信息化生态体系。希望未来基于我们自己的指令系统、国产操作系统形成和这两个生态体系平行的一套生态体系,它是产业的基础,在别人的基础上盖房子总是不牢靠的。

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

左图是龙芯 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年消除指令系统之间的壁垒。

谢谢大家。