0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

龙芯研发出 “自主” 又“兼容”的 LoongArch 指令集

hl5C_deeptechch 来源:DeepTech深科技 作者:DeepTech深科技 2020-09-08 15:14 次阅读

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

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

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

自主研发 VS 选边站队

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

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

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

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

图 | 该指令含义为:将地址 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 中国)。

图 | 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%,而延迟方面的开销几乎没有。

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

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

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

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

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

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

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

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

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

图 | LAT“十九八七”规划

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

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

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

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

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

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

图 | 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 年消除指令系统间的壁垒,达到 “天下大同” 的境界。

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

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

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

后来者的宿命

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

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

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

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

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

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

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

文章出处:【微信公众号:DeepTech深科技】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 龙芯
    +关注

    关注

    2

    文章

    303

    浏览量

    30859

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

文章出处:【微信号:deeptechchina,微信公众号:deeptechchina】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    全国大学生计算机系统能力大赛操作系统设计赛-LoongArch 赛道广东龙芯2K1000LA 平台资料分享

    更新,其中涉及到的新的问题(比如调试),都会在此查阅。目的是为了更方便的解决移植 期间遇到的各种问题。 比赛参考资料 LoongArch架构相关文档 龙芯架构参考手册卷一 计算机体系结构
    发表于 02-04 15:37

    【RISC-V开放架构设计之道|阅读体验】RISC-V基础整数指令集

    第2章 RV32I:RISC-V基础整数指令集 本章重点讲解构成RISC-V基础整数指令集的基本指令指令格式。主要包含寄存器间操作的R型,用于短立即数和取数操作的I型,用于存数操作的
    发表于 01-31 21:10

    risc-v标准指令集如何扩展?

    想问问具体要怎么实现标准指令集的扩展呢?需要修改哪些硬件啊? 每一种指令集扩展是相似的吗?还是需要不一样的步骤呢(比如V扩展、K扩展)?
    发表于 01-21 22:19

    龙芯3a5000和3a3000的区别

    龙芯3a5000和3a3000的区别如下: 龙芯3A5000是面向个人计算机、服务器等信息化领域的通用处理器,基于龙芯自主指令系统(
    的头像 发表于 10-16 16:09 1086次阅读

    迅为LS2K0500开发板动态电源管理龙芯自主指令架构

    CPU 迅为LS2K0500开发板采用龙芯2K0500处理器,基于龙芯自主指令系统 (LoongArch) 架构,片内集成64位LA264处
    发表于 09-28 11:15

    迅为龙芯3A5000_7A2000运行国产Loongnix、银河麒麟、统信UOS以及实时系统翼辉SylixoS系统

    iTOP-3A5000开发板采用全国产龙芯3A500处理器,基于龙芯自主指令系统 (LoongArch)的LA464微结构,并进一步提升频率
    发表于 09-26 10:33

    DLX指令集RISC_CPU_verilog源码分享

    DLX指令集RISC_CPU_verilog源码
    发表于 09-26 07:01

    龙芯“百芯计划”首款芯片发布 由河海大学研发

    近日,在2023中国软件产教融合生态发展研讨会暨中国教育数字化自主化发展论坛”期间,龙芯“百芯计划”首款芯片BX100E-HHU正式发布,该芯片是河海大学基于龙芯LoongArch
    的头像 发表于 08-25 09:18 725次阅读
    <b class='flag-5'>龙芯</b>“百芯计划”首款芯片发布 由河海大学<b class='flag-5'>研发</b>

    请问可以通过nice接口扩展f指令集吗?

    我看了一下说明书,好像nice接口的opcode是固定的,不能与f指令集的互通,需要改什么rtl代码吗?
    发表于 08-11 13:01

    新一代处理器龙芯3A6000成功流片

    龙芯3A6000处理器成功流片,标志着我国自主桌面CPU设计领域取得了重要进展。龙芯3A6000采用了自主指令系统龙架构(
    的头像 发表于 08-04 17:08 1237次阅读

    龙芯3a6000处理器怎么样 龙芯3a6000处理器参数介绍

    龙芯 3A6000 处理器采用龙芯自主指令系统龙架构(LoongArch)。龙架构从顶层架构,到指令
    发表于 08-02 11:09 2737次阅读
    <b class='flag-5'>龙芯</b>3a6000处理器怎么样 <b class='flag-5'>龙芯</b>3a6000处理器参数介绍

    龙芯2K1500工控芯片全球首套控制器成功并网商用

    龙芯中科基于自主LoongArch龙架构指令集龙芯2K1500工控芯片,近日取得重大突破,基于该芯片的全球第一套控制器,经历了142天的不
    的头像 发表于 06-08 16:39 786次阅读
    <b class='flag-5'>龙芯</b>2K1500工控芯片全球首套控制器成功并网商用

    国产CPU有哪些品牌?六大国产CPU大比拼!

    最开始是基于国外的MIPS指令集研发的,后面拓展了LoongISA指令集。后来又研发出了一个真正自主可控的
    的头像 发表于 05-29 16:17 8650次阅读
    国产CPU有哪些品牌?六大国产CPU大比拼!

    鲲鹏、海光、龙芯等六大***在指令集方面的异同

    业界将鲲鹏、飞腾、海光、兆芯、龙芯、申威这六大国产芯片统称为“国产CPU六君子”,那么,他们在指令集授权方面都有哪些异同呢?
    的头像 发表于 05-18 16:04 6770次阅读

    龙芯自主CPU再添147款产品适配成功

    5款、运维管理系统3款、其它产品17款。 适配产品面向政务办公、安全防护、运维监控、财务管理等多个领域。 据了解,2020年龙芯中科自主指令系统LoongArch问世,基于
    的头像 发表于 05-18 14:37 325次阅读