LoongArch 有感

2022-03-21 15:35:26 浏览数 (1)

胡伟武老师在最近的报告中透露了龙芯新架构的一些相关信息。

经过十多年的发展,龙芯将抛弃MIPS指令集,转而使用LoongArch 指令集。 > > LoongArch是全新的指令集。包含基础指令 337 条、虚拟机扩展 10 条、二进制翻译扩展 176 条、128位向量扩展 1024 条、256 位向量扩展 1018 条,共计 2565 条原生指令。 > > MIPS、X86、ARM、Risc-V都将通过二进制模拟来运行,不再原生支持。区别只是MIPS与LoongArch近似度较高,效率会高一些。

今天在工作的时候也用了一台 3B4000 的物理机解决一些兼容性问题,就想谈一下自己的想法。

首先:这是一个好事,但不一定有很很好的结果。松禾资本的董事郭琤琤在《国产替代:沸腾的十年大潮》中说 ”我们要的是真实的替代,不要伟大的备胎“ ,但目前国内芯片厂家 Loongson(MIPS)、Arm(鲲鹏、飞腾)、X86、申威等架构共同发展的前提下,上层应用确实好不起来。我在的公司,麒麟软件,服务器部门每天都有上百个不同架构的兼容性问题等待解决。相比一个全新、兼容其他架构的新架构来讲,短时间一个成熟的架构发展生态,发展自己的编译器、优化编译器性能会更好。

并不是一个自主的架构才是安全可控的。(我瞎说的

所以现在首要的问题就是,我们真的要用一个新的架构去兼容原有架构?忍受百分之80、70的性能转换吗。这是第一个问题。第二个问题是,如果我们跑原生应用?别傻了除了龙芯和不涉及指令集的通用应用,谁会专门开发一个呢,当然有迁移工具可以另算。

其他的是龙芯本身的研发实力,作为一个看龙芯Linux内核解析而粉龙芯的萌新,我实在忍受不了龙芯羸弱的性能,龙芯的服务器,性能还可能不如你手上的一台手机。一方面是落后的架构、极低的主频,另一方面是老旧的内核、极差的软件生态、几乎没有任何优化的GCC。

经常遇到的问题就是,默认的编译参数不能跑,改成了 -arch=mips64 能跑了,但是也用不到龙芯的扩展指令集?‍?。

龙芯目前主要维护的内核是3.10版本,这个版本的驱动很老旧,一些新的特性也不支持,作为系统发行方(我们),我们不得不将龙芯的补丁一个个迁移到目前4.19的主线版本,更不用谈现在的5.x版本了,当一个新的架构出来后,可能我们还要多一个困境,就是对LoongArch迁移补丁。

龙芯一直在做各种库的迁移工作,但作为一个软件实力确实一般,人数有限的小公司,这是很难应对各种行业专业软件、软件库的性能需求的。基于一个成熟的、可定制的架构看起来会好很多,当然指的是生态更为统一的ARM这种。

倘若可以通过兼容运行Windows,arm,估计也很少有厂商去真的这么干,通过虚拟化来实现服务器跑Windows给瘦客户机使用倒是一个方向,但龙芯目前单核性能低,内存延迟高、总线带宽低、核数少,这又是一个短期无法实现的目标。

最后提一点点其他的感想:

最近也在给鲲鹏平台做兼容性测试,华为的文档、架构迁移工具、架构迁移性能优化工具都很全面,但即便是这样,面对国内众多发行版和各个不同版本还会有很多问题产生,这样零散的发展不是一件很好的事情,好在最近uos的出现让软件这边稍微统一一点,我还是很希望cpu这边也能稍微统一,作为备胎和替代物,真的没有很多经历和试错的机会。还有就是软件,希望有志之士都能为Linux平台软件的开发、架构迁移出一份力。

0 人点赞