丢掉幻想!龙芯中科将推出LoongArch自主指令集,深度兼容Windows、Linux、Android程序

科学
丢掉幻想!龙芯中科将推出LoongArch自主指令集,深度兼容Windows、Linux、Android程序
麻省理工科技评论 2020-08-19

2020-08-19

胡伟武的最终目标,是建立一个自主且完整的生态。
科学
胡伟武的最终目标,是建立一个自主且完整的生态。

8 月 13 日,在每两年一度的全国计算机体系结构学术年会(ACA2020)上,龙芯中科董事长、中科院计算技术研究所研究员胡伟武作了名为《指令系统的自主与兼容》的特邀报告。

在报告中,他透露了龙芯的新动向——研发既 “自主” 又“兼容”的 LoongArch 指令集。如果最终达成目标,这将是一个自带 “完整” 生态,且中国人能牢牢掌握的体系。

关于该事件的讨论一度登上知乎热榜,一位资深业内人士告诉 DeepTech :“LoongArch 的计划已经提了很长时间,由于近期‘断供’问题形势严峻才特别凸显。其实业内一直想推出中国自有指令集系统,但奈何各方利益交错,长期达不成共识,目前或许是一个契机。”

自主研发 VS 选边站队

美国驴象两党,在很多方面都意见相左,但在对待中国的态度上却少有地达成一致。可以预见,未来,不管特朗普连任与否,都不能幻想美国人的对华政策有较大变化。

目前,“构建独立于 Wintel 体系(Windows+Intel)和 AA 体系(ARM+Android)的安全可控的信息技术体系和产业生态”已经成为国家战略。

要达成这一目的,“芯片”的问题是无法绕过的。而芯片难题又分为两个小点:一是 CPU 的指令集架构,一是生产的工艺制程。本文不谈工艺问题,只谈前者。

指令集架构,又称指令集或指令集体系,是计算机软件运行的基础设施。指令集的指令转换成机器码之后即直接与 CPU 发生交互,是比汇编语言更加底层的封装。

丢掉幻想!龙芯中科将出LoongArch自主指令集,深度兼容主流体系

该指令含义为:将地址 2 的值与常量相加,然后写入到地址 1

目前,仍然活跃在商业领域的指令集分成两大类:以 ARM、RISC-V 及 MIPS 为代表的精简指令集(RISC),以 X86 为代表的复杂指令集(CISC)。这里的精简和复杂可以简单理解为所包含指令数目的多少。

使用 X86 架构的厂商是大名鼎鼎的 Intel 和 AMD,该架构为 Intel 首创,由于历史原因形成了现在的两强局面。值得注意的是,X86 架构基本不再对外授权。

ARM 指令集的产品众多,由于其在功耗方面的优势,几乎所有的智能手机(苹果、安卓)、平板、便携智能设备,都要向 ARM 购买授权,在商业上 ARM 是成功的。目前 ARM 隶属于日本的软银,不过已有传闻 NVIDIA 将收购 ARM,届时 ARM 将归属美国。

RISC-V 比较特殊,属于开源(仅ISA)指令集架构,也就是说 RISC-V 指令集可以自由地用于任何目的,允许任何人设计、制造和销售 RISC-V 芯片和软件,而不必向任何公司支付专利费用。

中国,是最追捧 RISC-V 的国家,没有之一。

追捧到什么程度呢?RISC-V 官网显示,其首席会员一共十名,其中中国公司、组织占了八席,他们分别是:阿里巴巴、晶心科技(台湾省)、华为、中国科学院计算技术研究所、中国科学院软件研究所、RIOS(清华 - 伯克利深圳研究院)、中兴微电子和赛昉科技(SiFive 中国)。

丢掉幻想!龙芯中科将出LoongArch自主指令集,深度兼容主流体系

RISC-V 首席会员

虽然 RISC-V 属于全球性非盈利组织,理论上不会出现被 “卡脖子” 的情况,但该组织的核心管理者基本是美国人,且目前碎片化严重,很多有用高效的指令无法加入到主分支之中。总之,中国想要在这个体系掌握主导权,目前看来暂无可能。

最后,终于要说到龙芯使用的 MIPS。

它依旧属于一家美国公司,龙芯是其最大客户。该公司因战略误判,逐渐衰落,后几经辗转,被多次收购,开发人员也流失严重,目前已经无力进行新产品的开发迭代。不夸张地说,如果没有龙芯,MIPS 已死。但就是这样一家公司,龙芯想要收购接盘,也一直没能得到美国政府的批准。

综上,X86 不授权,ARM 严格授权,中国此前一直把宝押在 RISC-V 和 MIPS 上。

胡伟武说道,自主和兼容这两条路线已经争论了 15 年,兼容的好处是自带生态,但劣势是处处受制于人,并且会严重阻碍以 “操作系统” 为代表的基础软件软件发展。他认为,我们不可能基于国外的指令系统建立自主生态。

“龙芯曾经选择 MIPS 授权,觉得比较开放,还可以自主加指令,所以走了好多年。本以为可以通过比较弱势的 MIPS 或者基于开源的 RISC-V 来构建自己的生态,但最近发生的很多事情,让我们认识到,即使对方再弱小,也会在商业上对我们造成很大的干扰。”

所以,摆在龙芯面前的恐怕只剩下建立自己的指令集这一条路了。

兼容并济,海纳百川

完全自主,说起来容易,做起来难;做出一款能用产品容易,但做出一款大家都用的产品难。有没有可能既独立自主,又能兼顾现在的主流生态呢?

胡伟武的答案是“有”。就是研发兼容各大指令集架构的自主指令集架构。

胡伟武表示,这条路是完全可行的。

首先,基础软件方面,BIOS(PMON/UEFI)、内核(Linux/VxWorks)的迁移,工作量不大;汇编器及编译器(GCC、LLVM、GOLANG)的工作量是可控的;整个操作系统重新迁移和编译工作量也不大,直接把 MIPS 汇编语言编译成自主指令系统即可。

其次,动态翻译虚拟机方面,Java、JavaScript、.NET 三大虚拟机,龙芯均可独自完成迁移,完成之后可以直接运行各自的应用程序而无须修改。

最后,二进制翻译方面,主要针对 X86、ARM 及 MIPS。QEUM 已经可以实现,关键在于提高其运行效率。

目前,龙芯已经完成了自主指令集的规划,包含基础指令 337 条、虚拟机拓展指令 10 条、二进制翻译扩展指令 176 条、128 位向量扩展 1024 条、256 位向量扩展 1018 条,合计 2565 条。值得注意的是,因增加二进制翻译指令而导致的 CPU 面积和延迟开销几乎可以忽略不计。

胡伟武解释道,二进制翻译硬件支持主要涉及定点运算和访存地址计算,统计数据表明,硬件的开销面积大概增加了 1% 到 2%,而延迟方面的开销几乎没有。

在报告中,胡伟武给这一系列的操作称之为“体系结构翻译”,并作了生动类比。

丢掉幻想!龙芯中科将出LoongArch自主指令集,深度兼容主流体系

语言文化 & 计算机体系结构

他说,我们现在所要达到的效果是语言级翻译,实现难度根据架构而有所不同。

举个例子,将繁体中文翻译成简体中文非常简单,将法文翻译成英文也比较简单,但要把英文翻译成中文相对困难。

技术的发展给二进制翻译带来了新的机遇。第一,硬件资源得到了极大的丰富。晶体管、CPU 性能都出现了过剩的情况。第二,虚拟机技术快速发展。二进制翻译本质上是一种跨指令系统的虚拟机,支持虚拟机的很多基础设施,在二进制翻译体系可以复用。

也许有人会问,二进制翻译固然可以兼容现有的指令集,但会不会存在法律问题呢?

胡伟武认为,目前国际上的确存在不同看法,但美国等发达国家法律普遍认为不构成侵权。历史上,IBM、HP、Intel、Appel、Transmeta、QualComm、NVIDIA 都采用过这个技术来协助推新架构,并且 Transmeta 曾打赢了与 Intel 官司。

在基本谋定了方案之后,龙芯已经开始行动,并已经取得了初步成果。

龙芯的二进制翻译系统名为 LAT(Loongson Architecture Translator)。胡伟武为这个系统定了一个 “十九八七” 的预定目标。

丢掉幻想!龙芯中科将出LoongArch自主指令集,深度兼容主流体系

LAT“十九八七”规划

胡伟武晒出了一张图表,这张表的唯一变量只有指令体系架构,微结构一模一样。

可以看到,仅更换为 LoongArch 指令架构,处理器的定点性能就提升了 16.6%,浮点性能提升了 9.4%。

丢掉幻想!龙芯中科将出LoongArch自主指令集,深度兼容主流体系

LoongArch VS MIPS(SPEC CPU2000 Train 运行时间 FPGA 20MHz)

在 Linux 进程级 MIPS 二进制翻译方面,胡伟武拿出一份专门为本次报告临时跑出的结果,他表示很多软件库还没有完善,优化工作也没有完成。但从结果来看,一两个月能达到这个效果,完成 100% 的预定目标应该不成问题。

丢掉幻想!龙芯中科将出LoongArch自主指令集,深度兼容主流体系

Linux 进程级 MIPS 二进制翻译效果(SPEC CPU2000 Train 运行时间 FPGA 20MHz)

Linux 进程级 X86 二进制翻译效果,同样是未完善的数据,可以看到定点性能达到原生的 44.4%,浮点性能达到原生的 58.5%。虽然,相较 QEMU 这个成绩已经非常不错,但离预定目标的 80% 仍有很大差距。

丢掉幻想!龙芯中科将出LoongArch自主指令集,深度兼容主流体系

Linux 进程级 X86 二进制翻译效果(SPEC CPU2000 Ref 运行时间 龙芯 3A4000 1.8GHz)

在报告中,胡伟武汇报了目前 LoongArch 指令系统的工作进度。

他表示,目前已完成龙芯 GS132、GS264、GS464 三大系列 IP 核指令系统修改。基于 LoongArch 的某龙芯 CPU 已于 2020Q2 交付流片,预计 2020Q4 样片。

基础软件 OS 方面,已经完成 BIOS、编译器的内核改造,可以在 FPGA 平台上运行 SPEC CPU 等复杂应用;正在开展完整操作系统编译工作;正在开展 Java、JavaScript、.NET 虚拟机迁移工作。

二进制翻译系统 LAT 已基本完成开发,开始调试优化。MIPS 和 X86 用户态二进制翻译持续改进中;X86 系统二进制翻译已经基本跑通,最难的地址翻译已经调通。

以上工作争取在 2020 年底前完成。

报告的末尾,他描绘了 LoongArch 的未来规划。

1. 对 LoongArch 指令系统进行知识产权分析。已委托第三方机构进行,预计 2020 年底完成国内部分,2021 年完成国际部分。

2. 组建自主指令系统联盟。龙芯将把 LoongArch 免费开放,并开放 Cortex-A53 以下性能处理器 IP 核,条件是联盟内企业彼此间不能发生指令系统诉讼,期望最终能够形成对第三方的 CPU 防御联盟。同时,还将尝试在高校推广百条指令左右的 LoongArch 小系统。

此外,龙芯也将持续改进二进制翻译的硬件支持和软件优化,争取在 2025 年消除指令系统间的壁垒,达到 “天下大同” 的境界。

丢掉幻想!龙芯中科将出LoongArch自主指令集,深度兼容主流体系

胡伟武出席龙芯中科捐赠仪式(来源:中国科学技术大学)

最后,胡伟武总结道,二进制翻译能解决兼容性问题,但要认清它在战略上属于“过渡方案”,它更多地是为新架构铺路,新架构失败了它会消亡,新架构成功了它也会消亡。

知乎网友 maomaobear 表示了对翻译后程序运行效率的担心:“微软的 X86 转 ARM,英特尔的 ARM 转 X86,效率都很低,就苹果做的看起来高一点。”

龙芯内部人士对此回应:“龙芯做指令集研发快 20 年了,能推出完全自主指令集架构,是积累出来的,不是拍脑袋,写论文出来的。”

后来者的宿命

其实,我们不必为 “卡脖子” 感到悲愤。

在电子计算机领域,包括我国在内的绝大多数国家都是“后来者”,纵观其发展史,几乎可以算是一部美国的国内产业史。

第一台真正意义的电子计算机是美国人于 1937 年发明的;“现代计算机之父”冯 · 诺依曼是美国人;集成电路是美国人做出来的;第一款微处理器是 Intel 推出的;互联网是美国人建立的;第一台桌面电脑、操作系统、鼠标、键盘、硬盘等也均由美国人首创……

在这个过程中,美国涌现出了一大批名垂青史的名字。无数的学者、商人、官员和工程师,让美国成为了先行者。拥有了绝对优势的同时,也为后来者们设立了诸多障碍。

这些障碍,我们有的已经跨了过去,比如锂电池隔膜、比如通讯领域的 5G、比如北斗全球定位系统;有的正在跨越,比如本文的 CPU 指令系统。

不过,我们不必急躁,也无须惊慌。我们不是落后于一朝一夕,也不可能一朝一夕便能赶上。

麻省理工科技评论

From Tech to Deeptech