← 完整学习路线

UNIT 48 / 78 · W07-1

缓存行与逻辑 SIMD 的边界

本单元预计 4 核心小时。可以分成多个学习时段,按完整小节推进;停下来时留下输入、命令、结果和下一步。

时间包含阅读、编码与检查,是学习预算而非期限。打开此页只保存阅读位置,不代表通过验收。

01 / READ

先知道自己在观察什么

CPU cache、缓存一致性与 SIMD →

先画4字节元素与64字节教学缓存行,再读一致性、false sharing与SIMD尾部;模型不是硬件计数器。

先备不清楚时,沿章节入口补读;不要依赖翻过页数判断进度。

02 / PREDICT & RUN

先留下自己的预测或独立尝试

手算8个连续元素与步长16元素各覆盖多少教学行,再运行确认1与8。

连续与跨步访问涉及多少行 →
源码下载与编译入口

下载到自己的练习目录。按本节给出的完整命令编译;多文件与driver要求见原任务。需要时查阅文件保存与编译操作 →

25-a.cpp

先保存预测,再核对正文标明的预期或诊断。完整构建、多文件与设备实验按原任务命令执行。

03 / CHANGE ONE THING

通过一个变动看清原因

在副本新增17个连续元素的观察输出,保留原有检查;不要更改模型行大小去贴合本机猜测。

修改后应观察到什么

17个连续4字节元素覆盖2条教学行;原结果仍1与8。

04 / DO IT YOURSELF

换一组条件,独立解决

独立写宽度4的点积逻辑分组,输入双方各5个1,尾部单独处理;长度合同限制0到9。

用这些条件检查自己的实现

  • 五项结果5;长度0、1、4、9的全1输入结果分别为0、1、4、9。
  • 两输入长度不等时拒绝;逻辑分组不声称编译器已生成SIMD指令。
05 / EXPLAIN & CHECK

用证据决定是否进入下一单元

  1. 连续虚拟地址与缓存行访问模式是什么关系?
  2. false sharing为什么可能发生在不同变量之间?

本单元的验收依据

地址模型与尾部测试通过,报告清楚写出假定行大小与逻辑lane数,没有编造cache miss或SIMD加速。

留下自己的代码或推演、测试输入、真实输出和仍不确定的问题。未达到要求时,下一次继续本单元。