计算机体系结构 35:独立性能研究
计算机体系结构 35:独立性能研究
核心问题
矩阵行遍历比列遍历快,能否直接归因为“连续访问更适合缓存”?一个可证伪的性能研究需要保留输入、正确性、编译路径、原始重复样本和替代解释。改变行跨度的 padding 对照尤其重要:逻辑元素数几乎不变,列遍历时间却可能大幅变化。
附件:35-performance-archive.json和原始验收记录。
范围与证据等级
证据等级为真机测量,但只指 2026-09-22 已归档的 arm64 macOS 原生墙钟样本。记录使用 Apple Clang 21.0.0,包含 192 个正式样本。当前 Linux x86-64 clone 缺少原始样本目录,只能校验已提交记录的 SHA-256 和关键字段,不能把本轮检查称为重新测量。
历史实验没有 PMU、固定频率、核心绑定或频率与温度数据,宿主是否裸机也未确认。结果不能定位 cache、TLB、预取器或 DRAM 各自贡献。
核心案例:padding 推翻单变量解释
O3 的 2048×2048 矩阵中,stride 2048 的列/行配对耗时比中位数为 35.6196;每行增加一个 padding 元素后,stride 变为 2049,比值降到 8.5251。逻辑求和目标不变,物理行跨度改变。
这个对照否定“总工作集字节数足以解释全部差异”的说法,却没有单独证明 cache set conflict。padding 同时改变地址映射、页内偏移以及预取器看到的模式,需要硬件计数器或更细的控制实验才能拆分机制。
禁止向量化时,小矩阵 64×64 的列/行配对比中位数只有 1.2175。大矩阵结果不能外推为所有尺寸上的固定倍率。O3 的向量化报告还需结合运行分支阅读:行内核进入 SIMD 路径,四个列遍历输入走标量步长加载。
模式:用最小扰动挑战瓶颈假设
1 | |
padding、对齐和分块实验都能采用这个结构。对照若同时改变多个机制,只能排除旧解释,不能自动确认某个新解释。
验收结果
python3 examples/computer-architecture/run_batch.py 34-35 退出 0,校验归档记录中 192 样本、三个中位比值和未采 PMU 的边界,并保存来源哈希。当前 clone 没有重跑 arm64 二进制,也没有生成新的 x86 性能结论。
练习
设计一个只改变起始对齐、不改变行跨度的对照,它能排除哪些解释?
为什么编译器报告“循环可向量化”不足以证明某组运行输入进入了向量路径?
模式速查
| 观察 | 最小后续证据 | 暂时不能声称 |
|---|---|---|
| padding 改变耗时 | 地址映射与硬件事件 | 已确认 cache conflict |
| O3 更快 | 实际分支和反汇编 | 所有路径都向量化 |
| 192 个墙钟样本 | 原始分布与顺序 | 跨机器普遍倍率 |






