本期检索说明

先读取 content/collections/deep-radar 截至 2026-09-04 的全部原文链接,并按 URL、标题与技术问题语义去重。最近 24 小时内发现一项完全达到门槛的 OpenJDK 新材料;为保证至少两篇,回溯最近 7 天后补入一项 9 月 1 日开始公开评审、并在 9 月 4 日继续完成源码与 CI 验证的 rustc 查询缓存实验。

两项修改截至截稿均仍在公开评审中。本文只分析可复核的 PR、源码差异、汇编生成路径和 benchmark,不把它们写成已经进入稳定版的事实。Kotlin、Zig 与 Linux 本窗口内没有发现同时满足实测数据、源码或汇编证据、原理剖析和工程迁移价值的新材料,因此不以发布说明或浅层教程补位。

主题 原始发布日期 一手来源与交叉验证 截稿状态 推荐强度
AArch64 SVE 反向移位消除复制 2026-09-04 21:50(中原标准时间) OpenJDK PR / JBS / C2 AD 规则 / 汇编编码测试 / Panama Vector benchmark Open,未合入 必读
rustc 查询结果迁入统一 arena 2026-09-01 14:24(中原标准时间) Rust PR / 四轮 rustc-perf / 10 个文件的源码差异 / CI Open,已获 reviewer 批准但 CI 仍在复核 推荐

01 · HotSpot:把一次性 shift-count 寄存器直接变成 SVE 结果寄存器

原文与日期: fg1417,2026-09-04 21:50(中原标准时间);OpenJDK PR #32706,对应 JDK-8390115。指令语义与吞吐特征由 Arm Neoverse V1/V2/V3 优化指南及 Panama Vector microbenchmark 交叉验证。

为什么值得读: AArch64 SVE 的普通 LSL/LSR 是破坏性形式,结果覆盖 source。向量 rotate 会展开为左右两次 shift 再 OR,source 必须同时喂给两条 shift;如果第一条指令覆盖 source,寄存器分配器就得先插入一次复制。LSLR/LSRR 的运算本身没有更低延迟,但它们把结果写回 shift-count 操作数,正好复用一个只使用一次的临时向量,从数据流层面消掉复制。

核心技术结论: 指令选择不能只按操作码等价匹配,还要读取操作数的 use-count。补丁保留旧的 vlsl_sve / vlsr_sve 规则处理多次使用的 shift-count,只在 n->in(2)->outcnt() == 1 时选择反向形式;这避免为了少一次 move 而破坏仍被其他节点使用的计数向量。

核心 C2 AD 规则直接表达了这个所有权条件:

C++
instruct vlsrr_sve(vReg dst_shift, vReg src) %{
  predicate(UseSVE > 0 && n->in(2)->outcnt() == 1);
  match(Set dst_shift (URShiftVI src dst_shift));
  format %{ "vlsrr_sve $dst_shift, $dst_shift, $src" %}
  ins_encode %{
    __ sve_lsrr($dst_shift$$FloatRegister,
                __ elemType_to_regVariant(bt),
                ptrue, $src$$FloatRegister);
  %}
%}

相应 MacroAssembler 增加 sve_lslrsve_lsrr 编码,汇编器测试固定验证 lslr z4.s, p4/m, z4.s, z5.slsrr z6.d, p5/m, z6.d, z7.d,因此证据链覆盖了 IR 匹配、寄存器角色、机器指令编码和最终吞吐。

最有价值的实验、源码、benchmark 与汇编细节: Neoverse V1、向量长度 1024、吞吐模式、每项 5 次采样。当前 lslr+lsrr 版本在 masked rotate/shift 上多数提升 5%–14%:IntMaxVector.ROLMaskedShift +14.25%,LongMaxVector.RORMaskedShift +13.49%,ShortMaxVector.ROLMasked +12.43%,ByteMaxVector.RORShift +5.94%。但未 masked 的 IntMaxVector.RORLongMaxVector.ROR 分别回退 5.17% 和 8.49%。

作者又用三组 NOP 布局变体拆解这个反常结果:在 LSLRLSRR 前都补 NOP 后,上述两项变为 +0.61% 与 +0.81%;只在 LSLR 前补 NOP 时为 -0.79% 与 +1.00%。这说明回退主要来自代码布局,而不是反向移位本身的执行代价。不过评审者也明确要求进一步解释“为何一个 NOP 能改变结果”,所以当前最稳妥的结论是:复制消除的主收益已经出现,但未 masked ROR 的布局敏感性尚未完全归因。

在 128-bit SVE 的 Neoverse V2 上,左移原本可选择非破坏性的 NEON 指令,收益自然较小;右移仍使用破坏性 SVE,部分额外 move 又可能被 MOVPRFX fusion 吸收。因此同一条 C2 规则在不同微架构与向量宽度上不会得到相同提升。

适合的工程师背景: 熟悉 HotSpot C2 matcher、AArch64 SVE、Vector API、寄存器分配或正在用 JMH/反汇编解释向量化性能差异的 JVM 工程师。

预计阅读收益: 约 35–50 分钟;可以迁移一套很实用的方法:先把高级 rotate 展开为真实数据流,再用 use-count 判断哪个操作数可以被破坏,最后同时检查汇编、吞吐和代码布局变体,避免把单项 microbenchmark 波动误判成指令语义收益。

02 · rustc:去掉 arena_cache,不等于自动获得更低的编译成本

原文与日期: Zalathar,2026-09-01 14:24(中原标准时间);rust-lang/rust PR #162105。主要性能数据见最终代表性 rustc-perf 对比,评审中的重复测量和源码修订均保留在原 PR。

为什么值得读: arena_cache 很方便:查询框架替调用方把返回值放进专用 arena,并返回与 TyCtxt 同寿命的引用。但对已经能直接在中央 tcx.arena 构造结果的查询,这层专用 arena、类型擦除与缓存 plumbing 可能是重复成本。这个 PR 的价值不在于得到一个漂亮的提速数字,而在于它连续做了多轮性能实验,最终暴露出“小型生命周期重构”的指标噪声、内存改善和指令回退会同时存在。

核心技术结论: 只有结果天然能以借用形式存活到 'tcx 结束时,才能安全移除 arena_cache。补丁把 index_ast 从拥有型 IndexVec 改为中央 arena 中的 &'tcx IndexSlice,把 extra_filename&String 收窄为 &str,把外部 crate 路径改为 &[&Path],并为 OsStrPath 与 typed index slice 增加显式 arena 分配入口。它不是把内存管理删掉,而是把“查询框架隐式拥有结果”改成“provider 在唯一生命周期 arena 中显式构造结果”。

最能说明边界的一段变化是:

Rust
- query index_ast(_: ()) -> &'tcx IndexVec<LocalDefId, Steal<...>> {
-     arena_cache
+ query index_ast(_: ()) -> &'tcx IndexSlice<LocalDefId, Steal<...>> {
      eval_always
      no_hash
  }

+ return tcx.arena.alloc_index_slice_from_iter::<LocalDefId, _, _>(
+     index.into_iter().map(|owner| Steal::new((Arc::clone(&resolver), owner))),
+ );

mir_callgraph_cyclic 还存在提前返回路径,不能简单只在函数末尾 arena.alloc();评审最终选择在两个出口分别分配。这一点很有迁移价值:所有权迁移若只覆盖 happy path,通常会在早退、错误缓存或外部 provider 上留下生命周期裂缝。作者也特别提醒,带 cache_on_diskseparate_provide_extern 的查询还涉及 Decoder/RefDecoder,不能机械批量替换。

最有价值的实验、源码与 benchmark 细节: 四轮 perf run 反复出现同一个 primary instruction 回退:约 +0.3%;secondary 则在不同轮次出现 0.1%–0.2% 回退和最多 5 项、约 -0.1% 至 -0.3% 的改善。代表性一轮中,Max RSS 的 3 个 secondary workload 改善 1.8%–7.8%,均值 -4.4%;cycles 同时出现 1 个 +3.9% 回退和 1 个 -3.4% 改善。bootstrap 从 497.549 秒到 473.199 秒(-4.89%),artifact 从 400.67 MiB 到 400.75 MiB(+0.02%)。另一轮 bootstrap 只改善 0.29%,说明 wall-time 本身噪声很大,不能挑最好的一次当结论。

作者追查后发现,多次测量中唯一与 nalgebra +0.3% 指令回退共同出现的变化,是删除两个未使用的 TypedArena 字段,因此倾向将其判断为过敏或噪声;但 PR 仍没有把回退包装成确定收益。合入前 CI 又在并行前端测试中触发 caller raced calls to put() panic,当前正在复跑以判断是否为无关 flake。也就是说,这篇材料同时展示了性能门槛与并发正确性门槛,结论边界非常完整。

适合的工程师背景: 熟悉 rustc query system、arena allocation、生命周期类型设计,或维护编译器/索引器中“缓存拥有值还是借用值”边界的 Rust 工程师。

预计阅读收益: 约 40–60 分钟;最大的收获是建立一条更严格的重构准则:统一 arena 可以减少专用分配器与类型擦除 plumbing,但必须逐一审计早退、磁盘解码、外部 provider 和并行查询;性能判断则至少要同时看指令数、RSS、cycles、bootstrap 与多轮稳定性。

中国大陆 ToC 硬件价格观察

数据口径

窗口为 2026-08-07 至 2026-09-05,单位人民币。本期对六个固定 SKU 重新采集,无需登录即可复核到 CPU、主板、DRAM、SSD 四类的新快照;GPU 与 HDD 的原页面未返回新的可核验数值,因此保留最近真实点。9 月 5 日新增的“当前最低报价”是采集时可见价格,不冒充价格实际变动日期。折线只连接真实观测,不插值。

中国大陆六类 PC 硬件公开价格事件

类别 固定样本与最新可复核价 30 日窗口内真实走势 建议
CPU Ryzen 7 9800X3D,9/5 ¥2,599 8/21 ¥2,609 → 9/3 ¥2,599 → 9/4 ¥2,597.15 → 9/5 ¥2,599,累计 -0.38% 可按需入手;连续三次报价围绕 ¥2,600 横盘,等待空间有限
GPU MSI RTX 5070 VENTUS 3X 12G,8/29 ¥4,464.34 仍只有 1 个可复核低价点 继续观望;单一亚马逊中国低价无法代表自营渠道,且显存成本仍支撑板卡报价
主板 ASUS TUF B850M-PLUS WIFI7,9/5 ¥1,299 8/31 ¥1,449 → 9/2、9/4、9/5 均 ¥1,299,累计 -10.35% 可入手;降价后连续三次同价,短期已形成稳定平台
DRAM Kingston FURY Beast DDR5-6000 32GB,9/5 ¥3,860 8/7 ¥3,870 → 9/2 ¥3,900 → 9/5 ¥3,860,累计 -0.26% 刚需小量买;回落只有 1.03%,尚不足以确认趋势反转
HDD IronWolf Pro 8TB ST8000NE001,9/1 ¥1,849 仍只有 1 个真实点 观望或容量告警时分批买;样本不足以判断方向
SSD ZHITAI Ti600 2TB,9/5 ¥749 9/2 ¥1,919 → 9/5 ¥749,页面最低价变化 -60.97% 先核对容量选项、店铺与保修再入手;跨度过大,更像渠道/规格选择变化,不能直接视为市场跌幅

价格来源: 9800X3DMSI RTX 5070 VENTUS 3XASUS TUF B850M-PLUS WIFI7Kingston FURY DDR5-6000 32GBIronWolf Pro 8TBZHITAI Ti600 2TB

判断依据

9 月 5 日公开页面显示 9800X3D 京东最低 ¥2,599、B850M-PLUS WIFI7 天猫最低 ¥1,299、Kingston 32GB 京东最低 ¥3,860、Ti600 2TB 天猫最低 ¥749。前三者与历史点连续性较好,可以用于判断横盘或小幅回落;Ti600 的新旧价差高达 ¥1,170,且聚合页同时展示多个容量与渠道,所以只记录价格事件,不把它写成同商家同规格的确定降价。

GPU 仍受显存物料与渠道调价影响,DRAM 也没有形成连续下跌证据;因此这两类不建议囤货或押注快速下跌。主板在明确降价后连续三次维持 ¥1,299,是本期最清晰的可买信号。HDD 仍缺第二个公开同口径点,继续保持“样本不足”,不画虚假趋势线。

本期结论

两篇材料都说明,性能优化常常是“改变结果写到哪里”:C2 把移位结果写进一次性 shift-count 寄存器,从而省掉 source 复制;rustc 把查询结果写进统一 arena,减少专用 cache plumbing。前者已经在多数 SVE microbenchmark 上获得 5%–14% 的明确收益,但仍受代码布局影响;后者则提醒我们,生命周期结构看起来更简洁,不代表每项性能指标都会自动改善。硬件部分本期新增四类真实快照,并对 SSD 的异常大价差保留渠道风险说明。