如何看待龙芯对外公开的LoongArch指令集?:先简单总结一下胡伟武报告中关于LoongArch的内容: 1、LoongArch 是全新的指令集,不是在 MIPS 上:-loongarch,龙芯,
先简单总结一下胡伟武报告中关于LoongArch的内容:
1、LoongArch 是全新的指令集,不是在 MIPS 上做的扩展。包含基础指令 337 条、虚拟机扩展 10 条、二进制翻译扩展 176 条、128 位向量扩展 1024 条、256 位向量扩展 1018 条,共计 2565 条原生指令。相对于MIPS,摒弃了部分不适合现代CPU的指令,又做了大量改进和扩展。例如单条指令支持的立即数从MIPS的最大16位扩展到最大24位,分支跳转偏移也从64K扩展到1M字节,以及寻址空间从固定分段改变为单一平面等,都有效减少了编译结果的目标指令条数和访存次数,提高了效能。
2、LoongArch 仍为RISC指令集,32位定长指令、32个通用寄存器、32个浮点/向量寄存器。MIPS只有3种指令格式,LoongArch重新设计了指令格式 ,使可用的格式多达10种 ,其包含3种无立即数格式和7种有立即数格式。重新设计的指令格式可以包含更多的指令槽,有利于以后的长远发展。LoongArch的指令系统在设计时,以先进性、扩展性、兼容性为目标,其中兼容性是指融合MIPS/x86/ARM指令系统的主要特点,高效支持二进制翻译。
3、龙芯提供基于 LoongArch 的 Linux 操作系统,在此操作系统中除了运行原生的 LoongArch 程序,还能通过翻译的方式兼容 MIPS、x86、ARM、RISC-V 这几种指令集的 Linux 程序。使用LoongArch翻译任何指令时大致流程都相同,只是随着指令系统的差异而在效率上也会有所差异。其中MIPS尽管二进制编码与LoongArch不同,但大部分LoongArch基础指令仍与MIPS相似,因此翻译开销极小。对ARM和RISC-V的翻译效率也比x86更高。龙芯还会提供以LoongArch为目标架构的编译器,已知编译器已经实现把 MIPS 汇编代码编译为 LoongArch 二进制,内嵌MIPS汇编的C/C++源代码甚至不用修改就能编译。
4、龙芯的二进制翻译与 qemu 的软件翻译不同,龙芯是软硬件结合方式。例如对x86标志寄存器的支持、RISC-V原子同步指令的支持、内存地址虚实转换的支持等都有专门的硬件实现。qemu 软件跨体系翻译一般只有 5% ~ 20% 的性能,龙芯的翻译相对于 qemu 在整数运算方面有数倍提升,而在浮点运算方面有数十倍的性能提升,这都是CPU中增加专门的硬件处理带来的性能改善。
5、翻译执行 MIPS 目标为 100% 的原生性能,翻译执行 ARM 目标为 90% 原生性能,翻译执行 x86 目标为 80% 原生性能,并可通过某种方式安装运行 Windows,对 Windows 的整体翻译执行目标为 70% 原生性能。
6、从当前已有的测试结果来看,把 C/C++ 代码编译为 MIPS 和 LoongArch 分别运行测试,LoongArch 比 MIPS 有近 17% 的性能提升,翻译执行 MIPS 平均性能在 100% 左右。
7、龙芯 2020 年之后生产的 CPU 都不再原生支持 MIPS,但因为可以 100% 翻译执行 MIPS,所以以前的 MIPS 生态仍然完全兼容,但以后会以发展 LoongArch 原生生态为主。
8、将会组建自主指令系统联盟,联盟成员免费使用 LoongArch 指令集,联盟成员可以免费获得龙芯的低于 ARM A53 性能的那些CPU核心设计,联盟成员之间不发生指令系统诉讼(防止Intel/ARM等挤进来,它们一旦加入就相当于x86/ARM指令集充公了)。
再说说个人的看法:
龙芯推出LoongArch是有多年准备的,并非仓促而为,二进制翻译部分和向量加速部分,都有10年以上的技术储备。但以前并未下定决心设计自己的指令集,而是想以MIPS为基础发展自己独立生态。但随着时间推移,各种情况发生变化,龙芯的发展路线也必须调整,从而利用多年的积累,推出了独立的指令集LoongArch。不能因为龙芯现在使用LoongArch,就以当下的视角去否定龙芯曾经的MIPS路线,而应该以当时的实际情况去看待当时发生的事情。龙芯并未否定MIPS授权的积极作用,例如MIPS宽松的授权模式促进了龙芯的独立发展,例如不需面对针对MIPS的任何知识产权诉讼。龙芯推出LoongArch也并非完全与MIPS分道扬镳,而是以20年来对MIPS的实现经验做到了平均100%效率的翻译执行MIPS指令,以前及将来的MIPS软件都可以完全兼容,不会因为更换了指令系统就出现生态真空的情况。令龙芯下定决心推出新的指令系统,个人认为有以下的几点原因:
1、时至今日,MIPS的设计显得有些老迈,不能完全适合现代的CPU设计和操作系统,例如对实现睿频不友好、跳转偏移量范围小、部分老旧指令拉低性能等等。MIPS经过龙芯多年扩展,传闻指令槽已经用完,会影响今后的发展。龙芯想要进一步提高性能,就需要对指令系统进行较大改动,并预留足够今后继续扩展的指令槽。事实证明,龙芯对指令系统的重新设计非常成功,在仿真测试中,只是修改了CPU译码部分,其他部分完全没变,LoongArch就比MIPS平均提高了超过16%的性能;
2、MIPS再弱小,也会对龙芯造成很大的干扰。在使用原生MIPS指令集的时候,龙芯无法对外授权自己的扩展指令集,因为作为基础的MIPS指令集龙芯没有权利对第三方授权。龙芯甚至不能公开指令集详细规范的手册,因为会侵犯著作权。以MIPS为基础时,龙芯指令集手册大部分内容只能对着MIPS的指令集手册照抄,即使只有扩展指令集的内容,也不可避免地会引用到MIPS基础指令集的相关说明,这很为难。还有更深层的原因,龙芯大量的扩展指令被用在军方项目中,会有保密的需要,甚至早年开放过的LoongMMI扩展,现在外界也没有了详细的资料。在常规项目中,大量的向量计算只能使用MIPS的MSA指令集,而MSA的详细规范也只能去看MIPS手册,龙芯不能越俎代庖。另外,在当前的国际形势下,使用来自美国的指令集,也会引起客户的疑虑,很难向客户对CPU自主程度进行解释;
3、虽然开源社区对MIPS的贡献越来越少,但相对于龙芯,开源社区更认可MIPS是不争的事实。尽管各种重要的基础软件项目的MIPS分支,几乎已经是龙芯和其合作伙伴们在维护,但使用到龙芯扩展指令的代码却很少。当然这也这龙芯无法公开自己的扩展指令集有很大关系,不能公开指令集的原因上面有提到。总之龙芯用于提升性能的扩展指令几乎没有用武之地,影响了性能的发挥,这也是民间测试往往达不到的龙芯官方分值的重要原因。而使用自己重新设计的指令集,就不需要再考虑代码是否与MIPS标准兼容,也与某些保密项目没有直接关系,不再有其它的顾忌,只要完成了知识产权风险评估,就可以开放完整的指令集手册,易于社区开发人员的参与,形成合力。对开源项目建立新架构的分支,对任何开源项目都能拥有极高的自主权,可以毫无限制地优化代码性能,减少因为软件优化不够而导致CPU性能发挥不好的问题;
4、当年美国宁愿把MIPS剥离,也不准卖给中国,在当时可以理解为美国限制中国发展的常规手段。但近年国际情况的变化加剧,中美对抗已经明朗化,MIPS所有权不在中国,就可能随时变成会爆炸的暗雷。尽管龙芯拥有MIPS的永久授权,但以美国现在不要脸的程度,有可能以龙芯参与军用设备研制为理由,单方面宣布授权取消,那么龙芯的合法性在中国之外就会受到质疑。龙芯必须未雨绸缪,消除隐患;
5、提高独立性,龙芯的核心设计都是自己完成,如果指令集也完全是自己完成的独立系统,加上较老的工艺制程,那么就完全杜绝了被人卡脖子的可能。龙芯长期依赖提高核心设计能力来提高单核性能,能使用老工艺就不使用新工艺 ,这种策略 不但节省了有限的资金,也一定程度上保障了生产制造环节的安全;
6、自建独立软件生态,龙芯的操作系统还是Linux,基础库虽然和其它的Linux一样来自开源,但龙芯上许多的办公软件都是来自国内企业的开发和移植。龙芯以兼容方式保留现有生态,鼓励合作企业把软件编译为LoongArch,就可以得到更高性能的原生程序。且不会出现ARM桌面生态建设的尴尬——国内企业的努力,都是为ARM添砖加瓦,一旦国产ARM无法生产,那么就容易被国外的ARM产品替代,之前的劳动就都成了资敌的笑话。
7、更好的为中国信息安全兜底。保障中国信息安全是龙芯的初衷,也是龙芯20年来坚守的底线 。从3A1000开始,龙芯的新款CPU生产工艺,都堪堪压着国内当时生产能力的底线,可能不完全是因为缺钱 。当前美国越来越疯狂,如果因为某些原因,导致很多部门单位不能再使用x86和arm处理器,那么只要换成可以兼容各种指令集的龙芯,就可以做到连软件都不用修改,工作生产继续进行 ;
8、龙芯开放指令集,并免费提供相当于ARM A53以下性能的IP,既为了助力联盟内企业嵌入式芯片的发展,也能对自己的生态建设起到良好的推动作用。免费IP的举动也会对ARM形成冲击,因为中低端嵌入式CPU用量远远超过手机中用的中高端CPU,ARM的很大一部分收入来源于授权中低端IP。龙芯也是国内唯一一家,能够对外授权指令集和IP的通用CPU企业 ,龙芯的自主可控程度是国产的其它CPU无法企及的 。
9、龙芯翻译执行其它指令集程序的稳定性及性能即使达不到预定目标,也不需要担心。只要能保证对MIPS的兼容性没有问题,那么龙芯的软件生态就与当前没有任何区别,龙芯仍然能在保持现有生态的同时,慢慢建立独立的软硬件生态。因此怀疑指令集翻译的稳定性和效率根本没有意义,即使不兼容x86/ARM或者翻译效率低下,在最差情况下,也可以把使用LoongArch的新款CPU当作一次常规的性能升级。如果指令集翻译基本有效,只要能在龙芯上正常运行部分x86和ARM软件,哪怕只是两三款,也是对龙芯软件生态的有益补充。就算翻译效率低于50%也没有关系,Intel Atom CPU 的性能要比 i3 还低几个等级,它们之间还有奔腾和赛扬,龙芯新款CPU如果性能接近相同核心数量的 i5,那它的 50% 性能肯定比相同核心数量的 Atom 高得多,运行常规办公软件没有压力。何况指令集翻译本身只是过渡的手段,为了增加用户群体,随着龙芯的独立软件生态逐渐强大,指令集翻译就会越来越边缘化,成为锦上添花之举。
一天中什么时候运动减肥效果好抓 小孩能不能练哑铃多大的孩子适合 小孩嘴唇起皮怎么办怎样才能预防 孩子的罗圈腿是怎么形成的三大因 孩子早恋怎么办如何有效疏导孩子 医生婆婆称自己专业孩子的事必须 儿子成人礼送什么礼物好呢给你孩 有孩子的夫妻千万不要离婚对于孩 小孩千万别让老人带的说法正确吗 自卑缺乏安全感的孩子怎么改善 怎么让孩子开口说话 这几个方法 怎么让孩子吃饭 教你如何让孩子 怎么管教不听话的孩子 家长首先 顽皮的孩子怎么管教的 这些方法 叛逆期的孩子怎么管教 引导孩子 孩子性格软弱怎么办 懦弱的性格 孩子性格偏激怎么办 孩子性格偏 孩子性格固执怎么办 家长们不妨 爱惹事的孩子怎么管教 不妨试试 养育优秀的孩子具备特征,家长要 高考数学难出新天际,可有的孩子 “做胎教”和“不做胎教”的孩子 花费十几万只考了302分 妈妈觉得 甘肃作弊考生留下来的疑团,是怎 一举夺魁!高三学生离校时,校领 高考钉子户:26次参加高考,今年 D2809次列车因泥石流脱线!此类 “女儿16岁,学校宿舍里分娩了” 扭曲邪门的内容,频频出现在教科 川渝地区几所大学实力很牛!四川