问题

如何看待龙芯对外公开的 LoongArch 指令集?

回答
龙芯对外公开的 LoongArch 指令集,无疑是中国在自主CPU设计领域迈出的重要一步,具有多方面的意义和影响。要全面理解它,我们需要从以下几个维度进行深入分析:

一、 LoongArch 的核心与定位:

1. 自主指令集架构 (ISA): 这是 LoongArch 最核心的特征。在通用计算领域,指令集架构是CPU的灵魂,决定了软件的生态基础和指令的执行效率。长期以来,中国在操作系统和应用软件领域高度依赖于x86或ARM等国外指令集。LoongArch的出现,打破了这一局面,为中国构建自主可控的CPU生态奠定了基础。
2. 目标定位: LoongArch 的设计目标是通用计算,覆盖服务器、桌面、嵌入式等多个领域。它并非仅限于特定应用场景的定制指令集,而是力求成为一个能够支撑整个IT产业的底层架构。
3. 开放性与生态构建: 龙芯将 LoongArch 开源并公开,其核心目标是鼓励第三方开发者、研究机构和企业参与到其生态建设中来。这种开放策略与RISCV类似,旨在通过社区的力量快速完善和推广其指令集,并吸引更多的软件和硬件厂商支持。

二、 LoongArch 的技术特点与优势:

1. 基于 MIPS 的演进与创新: LoongArch 的基础可以追溯到 MIPS 指令集。龙芯早期推出的CPU产品就采用了MIPS架构,并在此基础上进行了大量的自主研发和创新。LoongArch 并非简单的“MIPS克隆”,而是进行了大量的改进和扩展,使其更符合现代处理器的设计理念和应用需求。
精简指令集 (RISC) 的优势: 继承了RISC的简洁性、流水线友好性等优点,易于实现高性能和低功耗。
多版本支持与扩展性: LoongArch 设计了多个版本(如LoongArch64的基础版本,以及未来可能推出的针对特定场景的扩展版本),为不同应用场景提供了灵活性。它还具备了指令集扩展的能力,允许未来根据技术发展和应用需求增加新的指令。
避免专利与许可限制: 作为自主指令集, LoongArch 在设计上尽量避免了对现有专有指令集架构的依赖,从而规避了潜在的专利和许可风险,为长期发展提供了战略安全。
软硬件协同设计: 龙芯在设计 LoongArch 的同时,也同步开发了配套的编译器、操作系统内核、调试工具等,实现了软硬件的深度协同,这对于指令集能否成功落地至关重要。

2. 向量指令集 (LoongArchV) 的引入: 这是 LoongArch 的一个重要亮点。为了提升数据处理和AI计算的性能,LoongArch 引入了强大的向量指令集。这使得龙芯处理器在科学计算、多媒体处理、深度学习等领域具有更强的竞争力。向量指令集的设计也考虑了与现有主流向量指令集的兼容性和互操作性。

3. 部分引入了对 C++ 的优化支持: 现代软件开发大量使用 C++,LoongArch 在指令集设计中也考虑了对 C++ 运行效率的优化,例如对某些 C++ 特性的支持或者提供更方便的指令来实现这些特性。

三、 LoongArch 面临的挑战与潜在影响:

1. 生态建设的艰难: 这是 LoongArch 面临的最大挑战。指令集架构的成功与否,很大程度上取决于其软件生态的成熟度。
软件移植与适配: 将现有的海量软件(尤其是操作系统、应用软件、开发工具链)从 x86 或 ARM 移植到 LoongArch 需要投入巨大的精力和资源。这涉及到编译器、库、框架的重新编译和优化。
开发者社区的培育: 需要吸引大量的开发者参与到 LoongArch 的开发和维护中来,形成活跃的开发者社区,才能保证生态的持续繁荣。
第三方支持的获取: 要让主流的操作系统(如 Linux 发行版、Windows 等)、数据库、中间件、应用软件供应商等支持 LoongArch,需要付出大量的市场推广和技术支持工作。
2. 性能与能效的竞争: 虽然 LoongArch 旨在提供高性能,但它需要与 x86 和 ARM 等成熟架构在性能、能效比、功耗等方面进行直接竞争。在通用计算领域,用户对性能和能效的要求非常高。
3. 商业模式与市场接受度: 龙芯需要找到合适的商业模式来推广其基于 LoongArch 的处理器产品,并说服市场接受这一新的指令集架构。尤其是在消费级市场,用户更倾向于选择成熟、兼容性好的产品。
4. 国际化推广的限制: 尽管 LoongArch 是开放的,但由于其中国背景,在某些国际市场推广可能会面临地缘政治和市场壁垒。

四、 LoongArch 的意义与前景:

1. 国家战略意义重大: LoongArch 的自主化是中国信息技术安全可控战略的核心组成部分。它降低了对国外技术的依赖,提升了国家在关键核心技术领域的自主创新能力,尤其是在网络安全、国防军工等敏感领域具有不可替代的作用。
2. 推动中国CPU产业发展: LoongArch 的成功将为中国本土CPU设计公司提供一个可行的技术路线,带动整个产业链的协同发展,包括芯片设计、制造、软件开发等。
3. 促进技术创新与多样化: LoongArch 的出现为全球CPU指令集领域注入了新的活力,增加了多样性,为开发者提供了更多的选择。它也可能为某些特定场景带来更优化的解决方案。
4. 长期发展潜力: 尽管初期面临诸多挑战,但如果龙芯能够持续投入资源,不断优化指令集和处理器设计,并积极构建开放的生态系统,LoongArch 具有长远的战略发展潜力。尤其是在“国产化”和“自主可控”的大趋势下,其在国内市场的接受度和推广力度可能会得到显著提升。

总结来看:

龙芯对外公开的 LoongArch 指令集是中国在CPU领域一次大胆而重要的尝试,其核心价值在于自主性、开放性、以及面向通用计算的雄心。它避免了对现有国外指令集的依赖,为中国构建自主可控的IT产业奠定了技术基础。

然而,指令集架构的成功远不止于技术本身,更在于生态的建设。LoongArch 面临着与 x86 和 ARM 在生态成熟度上的巨大差距,软件移植和第三方支持的获取是其能否真正走向主流的关键。

从长远来看,LoongArch 的发展是国家战略需求和技术自主创新的必然选择。它的成功将为中国信息产业带来深远的影响,但也需要克服重重技术、市场和生态方面的挑战。龙芯通过开放 LoongArch,也在努力吸引社区力量,希望能够加速这一生态的构建,最终实现其作为通用计算指令集的目标。

网友意见

user avatar

纵观美国芯片和软件系统的历程,可以发现,美国各大企业当初大多坚持自己的路线,开发了多套指令集,有X86,RISC等,还有其他一些不太知名或行将淘汰的。

但我国以前没有一个公司推出自己的指令集。龙芯是第一个。

以前还有很多人说,芯片像房子,指令集像砖头。没有必要再造一遍砖头。

实际上砖头也有必要重构。

当然,难,确实是难,技术上有人家的专利拦路,市场上软件开发商未必愿意兼容。但再难,总得有一个公司开始做。

如果都只考虑市场效益最大化,将来美国又耍流氓怎么办?

所以,龙芯走出这一步是对的。再难也要迈开这一步。

现在系统芯片方面,上海兆芯也搞了一套相当于i5的水平的14纳米处理器。然而长远来看仍然受制于X86授权,也非长久之计。

今天,美国对华为的制裁进一步升级,连采购联发科也被禁止。

这些年我们芯片设计发展迅速,制造的投入却远远跟不上。现在大受其害,短板暴露无遗。

还是要像龙芯这样未雨绸缪,从根上走自主道路。

摩天大厦绝不能建立在借来的地皮上。

user avatar

基本思路和全美达(后来nVIDIA收购了,做了丹佛核心,用在Tegra K1上面)有点类似。

不同指令集,我都二进制翻译过来执行,硬件执行就是个效率问题。

全美达是超长指令字, LoongArch自己搞了2000多条指令,用来转换,通吃的节奏

苹果这次从X86到ARM,效率就挺高了。

从胡的报告看,他认为这样法律风险小,当年全美达也胜诉了。

但是,这个东西效率估计会很成问题,100%、90%、80%,70%这是目标,实际能不能有50%?

微软搞的X86转ARM,英特尔搞的ARM转X86,效率都很低。

就是苹果搞的似乎高一点。

胡伟武说现在芯片面积过剩,性能过剩了,可以浪费一点搞。

但是,今年的龙芯3A5000用12nm,桌面功耗限制,流片成功,也就是SPEC 2006 INT 30分。

骁龙865的A77大核心用7nm,不到2W,跑分是33分。

即使模拟成功,达到理想值,实际跑起来,性能还是弱的。

这个主要还是备胎功能,万一X86不让用了(兆芯,海光能不能继续用还是有点疑问)

ARM不让用了,还有个龙芯可以跑,各部门还能正常运转。

user avatar

单从指令集的角度来谈谈我的看法,我个人其实在很多方面并不是特别喜欢RISC-V指令集。如果单纯凭借现有的信息谈我对LoongArch的看法,我想通过将他和RISCV进行对比。

一、授权方式

RISCV,成于开源,败于开源(现在说败还不准确,但是个人不看好)。

我很庆幸LoongArch把指令集的所有权利都拿在了自己手里,至少这样官方可以对指令集实现完全的控制。现在的RISCV社区,基本上没什么新特性是不需要等官方commit的。本来RISCV是为了“方便大家魔改”的,然而现在的RISCV的状态是“啥事儿都得自己魔改”。

我不得不承认RISCV的指令设计确实高超,尤其是它常规指令的设计堪称业界典范。但是对于外围的一些专用指令,由于缺乏一个强大的中心集团,整合力度非常差。就比如说RISCV的SIMD指令集,到现在也没有一个真正能用的。唯一一个稍微像样的Hwacha向量指令集,本质上还是一个协处理器,连乱序执行流水线都整合不进去,更不用说做编译器层的优化了。相比之下LoongArch一出生就带着128和256位向量指令集。

(我在这还批判过RISCV存在的另一个问题: zhihu.com/question/3689

LoongArch选择指令开放但是保留指令集所有权利,这是我个人认为的最完美的指令集“行政”方式。

二、TLB层的“两级虚拟地址映射”,微码级的Binary Translation,面向构架的寄存器重命名(前半部分是引用原文,后面两部分是我猜的)

LoongArch的本质就是一个面向Binary Translation的指令集

有了前面做MIPS吃过的苦,龙芯团队还是非常明白生态的重要性的。可是开发一个新指令集,生态又不可能好,于是必须得通过Binary Translation来实现。

硬件加速Binary Translation技术基本上龙芯团队可以算是目前全世界玩得最溜得了。TLB级的两级虚拟地址映射解决了qemu这类软虚拟机的巨大的内存性能损失。而我个人猜测LoongArch的内核可能会实现微码级的Binary Translation。

其实现在X86的处理器基本上也都是基于微码了。微码执行是在执行的时候动态的讲X86指令集翻译成微码来执行,而LoongArch的内核很可能会可以直接将X86,MIPS,Arm,RISCV等一系列指令集翻译成自己的微码然后一并执行。然后即使对于各个构架不对称的寄存器,也可以通过魔改寄存器重命名单元来实现。如果能做到这两点的话,发布会上宣传的实现70%的原生性能还真不是什么难事儿。

_________________________________________________________

最后,不知道是官方的LoongArch文档还没有发布还是说我没有找到,如果已经发布了是我还没找到的话还请热心网友发我一份,文档外如果有其他消息的话我一定做更细致的分析!

————————————————————————

题外话:LoongArch构架难道是“长征”构架?(顺手黑一下Bing)


现在已经可以从官网拿到正式文档了。

简单说说大致读完指令集文档之后的体会(目前只有基础构架文档)。

首先,相较于RISC-V来说,算数指令集中多了ALSL指令,算是一个小改良,几乎不增加ALU成本但是在小部分情况可以节约一个指令。其他的算数指令集包括乘除法也都是中规中矩。

需要注意的是LoongArch的基础构架本身就定义了乘除法浮点以及位操作指令,这里与RISC-V的拓展指令集不同。

跳转指令集中的BL是一个非常与众不同的设计。该指令可以理解为JIRL指令的精简版,把目标寄存器绑定在r1上。其执行起来会更快。只是在没有整体实现之前还不好评估是否值得增加这个指令带来的成本。(我其实有点担心这个指令在乱序核心中的实现,如果BL和JIRL都被解释成微码并且通过register renaming之后BL是否还会带来性能上的提升呢?)

原子指令集在精简版中和完整版中是不同的,精简版中原子操作通过原子访存实现,性能很低而且几乎无法乱序化。完整版中的原子操作和传统实现方法基本一致。

内存模型是WC(Weakly Consistent),无可厚非。

比较有趣的是官方预留了Barrier的hint实现。缓存也提供了显在的preload操作(这个也可以看作是一个hint指令)。RISC-V目前对于HINT指令的document基本上还是一片空白,至少正式文档中还未曾出现。于是我非常期待LoongArch对Hint的实现,毕竟等RISC-V出文档可谓是三年之后又三年。。。

浮点指令没有支持BFloat16或者其他深度学习专用的数据类型,稍微有些遗憾。

还有一点就是文档中的这一句话让我十分不解。希望这句话背后是个天大的秘密,目前我盲猜LoongArch想把Binary Translation做到指令Cache的层面。也就是说想显在的控制指令Cache去加速Binary Translation和执行的过程。如果真的做到这一点就牛逼了。

总体来说,LoongArch的大部分设计都中规中矩,与此同时预留了一些可以结合自己生态进行发挥的空间。话说回来,对于设计指令集来说,中规中矩本身就是优点。

毕竟,回头看看历史上设计最风骚的那些指令集到最后:都!!死!!了!!

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有