龙芯操作系统放弃MIPS指令集就能实现自主可控吗?

语言: CN / TW / HK

经过十多年的发展,龙芯将抛弃MIPS指令集,转而使用LoongArch 指令集。

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

     MIPS、X86、ARM、Risc-V都将通过二进制模拟来运行,不再原生支持。区别只是MIPS与LoongArch近似度较高,效率会高一些。

    那么,龙芯放弃MIPS指令集就能实现自主可控吗?

    一、不同的自主处理器

    我国的自主处理器有很多,主要包括之前使用的MIPS指令集进行扩展的龙芯系列,以前买Alpha,后来去Alpha化的神威SW64系列,换了好几次指令集,目前使用Arm指令集,自己设计处理器架构的飞腾系列,以及后起之秀,使用ARM指令集,初期用ARM公版,后期自己设计的鲲鹏系列。

   这些自主处理器在实际的操作当中存在的差异是比较大的。鲲鹏系列最初完全是用ARM的公版A57、A72公版,IP完全来在于ARM。后期鲲鹏920的架构为自行设计,但是指令集授权来自于ARM。

  飞腾系列和鲲鹏920档次差不多,经过几次指令转换,最后用了ARM的指令集,这两个指令集授权,实际上是存在一定危险性的,虽然号称是长期授权,但是只要ARM一更新指令集,旧的授权就面临执行问题。

  龙芯以前的MIPS扩展也不安全,因为MIPS也在更新指令集,也有可能不授权,龙芯失去MIPS指令集,仅仅靠自己的扩展无法支撑应用。

  神威的SW64是真正自主,去Alpha后完全自己掌握,只是生态比较弱,限于专用领域。

   二、龙芯的LoongArch 指令集

   龙芯的LoongArch 指令集思路,其实和以前的全美达有一点类似。就是通过软件来解决硬件问题。LoongArch摒弃了MIPS部分不适合现代CPU的指令,又做了大量改进和扩展。

    LoongArch 仍为RISC指令集,32位定长指令、32个通用寄存器、32个浮点/向量寄存器。MIPS只有3种指令格式,而LoongArch重新设计了指令格式 ,使可用的格式多达10种 ,其包含3种无立即数格式和7种有立即数格式。

   龙芯提供基于 LoongArch 的 Linux 操作系统,在此操作系统中除了运行原生的 LoongArch 程序,还能通过翻译的方式兼容 MIPS、x86、ARM、RISC-V 这几种指令集的 Linux 程序,只是效率有差异。这样就不存在无软件可用的问题,只是软件会慢一点。

    龙芯的目标是翻译执行 MIPS 效率 100%,翻译执行 ARM效率90%,翻译执行 x86效率80% 、运行Windows下的X86效率70%。

   这样,龙芯的核心设计自己完成,如果指令集自己独立系统,加上自主的工艺制程,那么就完全杜绝了被人卡脖子的可能。而龙芯以兼容方式保留现有生态,鼓励合作企业把软件编译为LoongArch,就可以得到更多的原生程序。就有生态系统。

   必要的时候,可以全面接替其他处理器,保证系统正常运行。

   虽然,性能可能会弱一下,但是先解决了有无问题,算是达到了自主可控。

  三、 设计自主不是完全自主

  龙芯的LoongArch是一个CPU设计的完全自主方案。但是,自主可控不仅有设计部分,还要有制造部分。

   最新的,龙芯3A5000依然要在台积电流片,一旦美国像卡华为一样卡龙芯,龙芯依然不能制造,而是要回到国内比较落后,没有美国技术的90nm生产线上去制造。这样性能会再打一个很大的折扣,很多领域就不能用了。此外,处理器不是单独一个处理器就可以工作了。以前龙芯的主板芯片是AMD的,一卡还是能卡住,不存在自主安全,现在龙芯的总线是AMD的HT总线,一卡也是能卡住的。

  中国在图形芯片上还有很大的缺陷,现在GPU计算基本都是nVIDIA的,一卡也就没有了。

   所以,自主可控这个事情,还有很多工作要做,制造上,主板芯片上,GPU上……。