跳到主要内容

每周一龙:第 17 期

· 阅读需 8 分钟
WANG Xuerui
🐲龙门客栈打杂的

每周一都为大家报道 LoongArch 社区最前线的第一手新鲜资讯!

如无特别说明,文中提及的日期、时间都为北京时间(UTC+8)。

先「马」再看

本栏目的内容具有一定延续性,将持续追踪报道 LoongArch 领域的重要或长期项目(坑)。

Linux

9 月 23 日,Huacai Chen 向中国时间 9 月 25 日凌晨 tagged 的 Linux v6.6-rc3 推送了一组问题修复与代码清理。 由于此 rc 包含重要的修复工作(见下),建议所有紧跟主线的同学们尽快升级或跟进最新的 linux-next(≥ next-20230925)。

  • 修复了龙架构上一旦启用内核配置项 CONFIG_DEFERRED_STRUCT_PAGE_INIT 则系统无法正常启动的问题。 (对于插了很多内存的机器,此优化可少许提升启动速度。 因此内存插满又喜欢微操的社区开发者们被第一时间坑到了: 龙芯团队极少改动、测试这些不直接与龙芯芯片、软件、出货系统相关的内核配置, 所以未在引发问题的提交所在的 v6.5 开发周期发现问题。)
  • (此变更与龙架构无关但十分重要)回滚了多粒度时间戳(Multi-grained Timestamps)工作。 此优化本意是想降低 NFS(网络文件系统)的性能开销,但实际在其他文件系统上引起了相关的细微 bugs, 因此补丁作者决定推翻此方案从头再来。

9 月 20 日,KVM 维护者 Paolo 在回信中表示: 既然你们已经在准备第 22 版补丁了,到时候可以作为 Pull Request 顺带提了。Huacai Chen 回复说: 如果 v22 没什么更多审查意见的话,等一两周就发。 看上去龙架构 KVM 支持进入 Linux 6.7 指日可待了: 硬件虚拟化,说是服务器、数据中心,甚至家庭多合一 NAS 场景的最基础能力也不为过。 Linux 6.7 是个值得期待的更新。

工具链

gcc

为启用 linker relaxation(链接器松弛)优化,chenglulu 使得 gcc 在构建时如果发现配套的汇编器有 -mrelax 支持,则让成品 gcc 默认关闭 -mexplicit-relocs 选项。 这样做的优化效果可能十分取决于被编译的具体代码,故特别提及,请各位同学升级 gcc 时多多留心并观察一些自己关心的软件、函数的性能与汇编形状是否仍然符合预期。

信息

由于涉及删除一些指令,linker relaxation 能工作的前提是相关指令都聚在一起: 这项工作只能在链接阶段完成,不做此保证会让链接器的复杂度爆炸, 例如需要跟踪每个寄存器的使用情况以防止删除指令导致程序语义变化。 这要求编译器在生成代码时,只用伪指令来表达产生、使用符号地址的动作,不能有控制背后具体指令的自由度。 这就与 -mexplicit-relocs 天然不对付: 打开这个选项就是要让编译器感知、控制这些具体指令, 进而得以利用更多优化机会,也更有助于指令调度。

因为 linker relaxation 与相关指令的更佳调度在现有条件下无法两全,所以才说不见得是无条件优化,需要十分留心。

liwei 调整了一些向量优化成本数值。

guojie 优化了几种向量值的构造。

Chenghui Pan 在修测试

D

AOSC 社区的刘子兴为 D 语言的 GCC 前端运行时添加了龙架构支持。 欢迎!

LLVM

当地时间 9 月 19 日,LLVM 17 正式发布。此版本新增了不少龙架构优化,更有完整的 LA64 v1.00 指令汇编、反汇编支持(先前已有报道),建议开发者们只要可行都升级。

最近发现 Clang 17 在带着 -march=la464 编译的时候,可能会想做自动向量化然后不知道怎么生成代码(因为当时还没做;现在似乎也没),导致崩溃。 由于笔者精力有限,欢迎有志之士自告奋勇:笔者会教你怎么查 & 修。

杂闻播报

近日,著名工具链维护者之一、LLVM LLD 的原作者 Rui Ueyama さん发布了 mold 2.2。 mold 是他基于多年的链接器开发经验重新设计的现代化、高性能链接器, 从 2.1 版本起支持龙架构。 为提升 --build-id 计算速度,mold 2.2 换用了 BLAKE3 哈希算法; 这个库有汇编优化空间! 欢迎有志之士为其添加 LSX/LASX 优化。

9 月 20 日,笔者从一封抄送到自己邮箱的通知邮件关注到:openEuler 社区已在着手为其 23.09 系统的内核添加更多龙架构支持。 看邮箱地址,推进此工作的 Hongchen Zhang 是龙芯员工。openEuler 23.09 的内核版本是 6.4, 这意味着上述工单中提到的工作会涉及许多向后移植(backport),在此祝 们少被冲突坑到 😈

张贴栏

本栏目可供张贴公益性质的各种信息。