You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何顺序写入的分块矩阵转置比顺序读取版本更快?

分块矩阵转置性能差异解析与内存优化资料推荐

一、性能差异的核心原因

先明确两个版本的内存访问特征:

版本1:顺序读+跨步写

for (size_t ii = 0; ii < ii_end; ii+=TILE_SIZE) {
    for (size_t jj = 0; jj < jj_end; jj+=TILE_SIZE) {
        for (size_t i = 0; i < TILE_SIZE; i++) {
            for (size_t j = 0; j < TILE_SIZE; j++) {
                out[(jj + j)* n + ii + i] = in[(ii + i) * n + jj + j];
            }
        }
    }
}
  • in是连续顺序读:按矩阵行顺序访问,完美契合CPU预取器工作模式,缓存命中率极高,大幅减少DRAM读操作。
  • out是跨步写:每次写入地址间隔为矩阵维度n,远大于缓存行大小(通常64字节),属于非连续访问。

版本2:跨步读+顺序写

for (size_t ii = 0; ii < ii_end; ii+=TILE_SIZE) {
    for (size_t jj = 0; jj < jj_end; jj+=TILE_SIZE) {
        for (size_t i = 0; i < TILE_SIZE; i++) {
            for (size_t j = 0; j < TILE_SIZE; j++) {
                out[(ii + i)* n + jj + j] = in[(jj + j) * n + ii + i];
            }
        }
    }
}
  • in是跨步读:按矩阵列顺序访问,地址间隔为n,预取器难以有效工作,缓存命中率低于版本1。
  • out是连续顺序写:按矩阵行顺序写入,完全匹配缓存行填充规则,内存控制器可利用突发传输提升带宽利用率。

关键性能差异点

  1. 缓存写策略的影响
    现代CPU缓存采用**写回(Write-Back)**模式:
  • 版本2的连续写:每个缓存行会被完整填充后再一次性写回DRAM,中间写操作都在缓存内完成,延迟极低,且能最大化内存突发传输效率。
  • 版本1的跨步写:每次写入对应不同缓存行,若缓存行未加载,会触发写分配(Write-Allocate)——先从DRAM加载缓存行再执行写操作,额外增加无意义的DRAM读;同时,每个缓存行仅修改少量元素就可能被替换,导致频繁的脏缓存行回写,占用大量内存带宽,且回写延迟无法通过乱序执行有效隐藏。
  1. 写合并的认知误区
    你预期的写合并(Write Combining)主要针对**非缓存区域(如MMIO)**或写直达(Write-Through)模式下的写操作,对写回模式的缓存访问优化作用有限。跨步写的地址分散在不同缓存行,根本无法触发写合并;而连续写的优化核心是缓存行的完整填充与批量回写,并非写合并。

  2. LIKWID统计的局限性
    LIKWID的DRAM_READS/DRAM_WRITES仅统计与DRAM的直接数据传输,但版本1的跨步写带来的写分配操作,若缓存行被快速替换,可能被统计为DRAM读;而版本2的跨步读虽然预取效率低,但分块后TILE内的重复访问会命中缓存,实际DRAM读的额外开销被缓存复用抵消。但性能最终由内存操作的延迟和带宽利用率决定,版本2的连续写在这两点上的优势远大于跨步读的劣势。

二、现代处理器内存子系统优化资料推荐

  • 《计算机体系结构:量化研究方法》(Hennessy & Patterson):经典教材,系统讲解内存层次结构、缓存优化、带宽利用等核心原理,是建立知识体系的必读书。
  • 《Intel 64 and IA-32 Architectures Optimization Reference Manual》:Intel官方手册,针对自家处理器的缓存行为、预取器、内存控制器等细节做了详尽说明,包含大量可直接落地的优化技巧。
  • 《高性能计算编程实战》:偏向实践,通过矩阵运算、循环优化等案例讲解如何优化内存访问模式,提升缓存命中率。
  • 《Cache-Oblivious Algorithms and Data Structures》:深入讲解分块优化的理论基础,理解缓存 oblivious 算法的设计思路,能帮你更灵活地设计分块策略。

内容的提问来源于stack exchange,提问作者Bogi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 15:47:32