您现在的位置是:首页 > 产业研究

浅谈龙芯LoongArch自主指令集

火烧 2021-03-27 00:00:00 产业研究 1053
本文深入解析龙芯LoongArch自主指令集的设计理念与技术特点,涵盖指令格式优化、二进制翻译技术、软件生态兼容及扩展能力,展现其在自主指令集领域的创新与优势。

  3A5000基于龙芯自主定义的LoongArch,自3A5000之后,龙芯就与MIPS彻底分道扬镳,没有任何关系了。这里着重介绍一下LoongArch。  

1.jpg

  过去这些年,国内CPU公司引进过X86、ARM、Power、SPARC等指令集,但始终没能建立起自己的Wintel,原因就在于始终保持着一种跟生态的心态,而且在软件上的投入严重不足。如今,国际大环境的变化使购买国外指令集授权充满了不确定因素,在这种情况下,开发自主指令集是规避风险的良策。  

2.png

  当然,自主定义指令集存在一个问题,那就是软件生态压力巨大,而龙芯的LoongArch则采用二进制翻译的方式实现兼容。LoongArch的指令系统在设计时,以先进性、扩展性、兼容性为目标,融合了X86、ARM、MIPS、RISC-V指令系统的主要功能,定义专门产生EFLAG结果的运算类指令加速X86、ARM架构下独有的EFLAG值模拟,设计浮点寄存器的栈访问模式加速X87浮点协处理器指令的模拟,实现RISC-V中丰富的同步指令。  

3.png

  LoongArch 是全新的指令集,包含基础指令 337 条、虚拟机扩展 10 条、二进制翻译扩展 176 条、128 位向量扩展 1024 条、256 位向量扩展 1018 条,共计 2565 条原生指令。  

4.png

  LoongArch 的"指令格式"是 MIPS 的超集,仍为RISC且兼容MIPS指令格式,但二进制不同。相对于MIPS,摒弃了部分不适合现代CPU的指令,又做了大量改进和扩展。重新设计的指令格式可以包含更多的指令槽,有利于以后的长远发展。

  MIPS只有3种指令格式,LoongArch重新设计了指令格式 ,使可用的格式多达10种 ,其包含3种无立即数格式和7种有立即数格式。例如单条指令支持的立即数从MIPS的最大16位扩展到最大24位,分支跳转偏移也从64K扩展到1M字节,以及寻址空间从固定分段改变为单一平面等,都有效减少了编译结果的目标指令条数和访存次数,提高了效能。  

5.png

  LoongArch 仍为RISC指令集,32位定长指令、32个通用寄存器、32个浮点/向量寄存器。取消转移指令延迟槽,直接跳转指令的目标地址相对PC计算,增加相对转移偏移量。新增将PC作为源操作数的运算指令。

  龙芯还提供基于 LoongArch 的 Linux 操作系统,在此操作系统中除了运行原生的 LoongArch 程序,还能通过翻译的方式兼容 MIPS、x86、ARM、RISC-V 这几种指令集的 Linux 程序。  

6.png

  使用LoongArch翻译任何指令时大致流程都相同,只是随着指令系统的差异而在效率上也会有所差异。其中MIPS尽管二进制编码与LoongArch不同,但大部分LoongArch基础指令仍与MIPS相似,因此翻译开销极小。对ARM和RISC-V的翻译效率也比x86更高。龙芯还会提供以LoongArch为目标架构的编译器,已知编译器已经实现把 MIPS 汇编代码编译为 LoongArch 二进制,内嵌MIPS汇编的C/C++源代码甚至不用修改就能编译。  

7.png

  

8.png

  

9.png

  另外,官方PPT里还有几个亮点:

  一是已完成龙芯 GS132、GS264、GS464 三大系列 IP 核指令系统修改。

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

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

  四是权威第三方机构对 LoongArch指令系统进行知识产权分析,2020年底完成国内部分,2021年完成国际部分。

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

10.png

  

11.png

  

12.png

  

13.png

  很显然,龙芯是希望短期兼容MIPS遗留生态过度,建设自己的软件生态,建立中国版的Wintel。龙芯的目标宏伟,实现难度很大,但如果做成了,对产业安全和国家安全的积极作用是异常巨大。

相关文章

  • 龙芯3B6600媲美12代酷睿
  • 一个时代的落幕,意味着另一个时代的诞生
  • 釜底抽薪放大招:完犊子了?好像真的要完犊子了
  • 对“国产CPU发展应自主研发核心技术,建立自主生态”的理解
  • 民族的脊梁、毛主席的好学生——胡伟武!中国人都应该知道他伟大的事迹!
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码