CPU向量加宽撞上L1容量墙:把私有L2改成软件管理的暂存区,2048位下GEMM提速1.44倍
核心概要
CPU把SIMD向量从512位加宽到2048位时,算力上去了,但L1数据缓存容量没变,数据反复在L1与L2之间搬运,吞吐反而被拖住。CacheFlex用一条轻量ISA扩展把私有L2的一部分路在运行时转成线程私有的暂存内存,让软件直接按槽位读写,绕开地址翻译、组相联标签查找和一致性探测。在gem5上以Armv8-A SVE建模,GEMM核在VL=16时几何平均提速1.44倍、内存子系统能耗降40%;结合FlashAttention的整层推理最高提速1.78倍、能耗降45%,相对L2的面积开销为2.02%。
深度剖析
CPU的向量宽度可以继续加宽,但私有L2缓存第一次能被软件当作可直接寻址的暂存区来用,而不只是硬件管理的缓存。 此前L1数据缓存被固定在32到64 KB,私有L2虽有256 KB到2 MB却因硬件管理的一致性、虚拟内存和缺少ISA支持而无法被软件直接访问。 在gem5的Armv8-A乱序核模型上,用取自ACL的FP16 SVE微内核跑七种GEMM形状,VL=16时几何平均提速1.44倍、内存子系统能耗降40%,而VL=4时只有1.12倍和26%。
暂存区不是另开一块SRAM,而是把L2原有的路在运行时切换成SPM模式,每条缓存行变成一个按路号和组号寻址的槽位。 此前的软件管理存储器要么是专用物理存储,要么把访问留在带标签检查的相联路径上,CacheFlex则复用已有L2容量并让纯SPM访问完全绕开标签与翻译。 在商用12 nm FinFET上做布局后实现,SPM的32项载入队列与48项存储队列占7,084平方微米,L2控制逻辑占1,293平方微米,L2面积仅增0.31%,含队列共2.02%。
跨域数据搬运由一对桥接指令完成,普通内存与SPM之间的读写顺序由两个独立的载入存储队列各自维护。 此前把缓存改成暂存区的方案多依赖用户级DMA或软件自行消解冲突,CacheFlex让硬件在乱序推测执行下处理跨域RAW、WAW和WAR冒险。 spm_cp把普通内存的数据非破坏、非分配地拷入SPM槽位,源行留在原处;spm_wb反向写回并走正常一致性路径,两者都插入普通与SPM两个队列,提交后不等待安装完成。
在整层推理中,暂存区与FlashAttention叠加使用,把选定的K/V分块钉在SPM里跨多个查询块复用。 仅用FlashAttention时,分块仍可能被硬件替换策略悄悄逐出;仅用CacheFlex时,未融合注意力受制于远超L2和SPM的分数矩阵。 LLaMA-3.2-1B与BERT-Base预填充层上,VL=16时长序列下两者结合相对基线提速1.64倍和1.78倍,内存子系统能耗降38%和45%;FlashAttention核级增益在工作集接近或超过L2容量时最高达18.3%。
启示与展望
评估限定在单核、机制层面,目的是隔离CacheFlex对私有缓存层级数据放置与搬运的一阶影响,不与共享资源争用混在一起。工作负载覆盖GEMM与注意力这类主导AI推理预填充阶段的计算密集核,以及LLaMA-3.2-1B和BERT-Base的整层预填充。CacheFlex被描述为与硬件预取互补,收益随向量宽度和峰值算力增长而增大。
评估是单核的,未涉及多核共享资源争用下的表现。整层结果来自gem5建模与12 nm布局后面积功耗数据,不是流片实测。未融合注意力下CacheFlex对注意力本身几乎没有提速,因为分数矩阵远大于L2与SPM。工作集能舒适放进L2时,FlashAttention核级增益最多3.2%,此时放置策略会保留常规缓存模式。设计原则被描述为与ISA无关,但具体实现与评估基于Armv8-A SVE。
