Arm 给 Linux 内核加了 TLBID:核心越多,TLB 失效越该省着点做

Arm 这周往 Linux 内核提交了一组初始补丁,为即将推出的 TLBI Domains(TLBID)做支持。发现这件事的是 Phoronix。补丁本身不大,说的是怎么让高核心数处理器做 TLB 失效时别那么费劲。

TLB 是处理器缓存虚拟地址到物理地址转换结果的地方。当内核要让一部分地址映射失效,通常得向多个核心广播 TLB 失效指令。核心一多,每次都全系统广播,同步和通信的开销就上来了。

TLBID 想改的正是这一点:让内核只对部分核心发指令,而不是每回都覆盖整台机器。具体做法是根据进程实际跑过的核心,向这些核心发 TLBI,只让相关的 CPU 清理自己的 TLB。

Arm 给 Linux 内核加了 TLBID:核心越多,TLB 失效越该省着点做(图1)

它盯上的是高核心数的 Arm 服务器处理器。那种把工作负载摊在几十上百个核心上跑的场合,少做没必要的全系统失效,能省下核心之间的同步开销。不过到目前,Arm 没有公布 TLBID 的性能测试数据,实际能涨多少还不清楚,得等硬件和软件都跑起来才知道。

内核之外,Arm64 的 TLBID 还得编译器配合。眼下的工作依赖 LLVM 23 及更新版本,或者 GNU Binutils 2.46 及更新版本,才能生成对应指令。

补丁现在还停在早期开发阶段。架构规范、编译器、内核支持这几样得一起往前走,搭载 TLBID 的处理器才谈得上真正用上更细粒度的失效机制。

参考来源:IT之家、Phoronix

加载中~

本文转自网络,如有侵权请联系邮箱:Administrator@systame.cn