知识卡片

Cache预取的双刃剑

专业/工作 · 1105.b

内容

Cache预取利用时间局部性和空间局部性,在数据被用到之前就悄悄搬进Cache。但硬件预取并非总有益:顺序访问数组时预取能大幅提速,跳跃式访问时硬件识别不出规律,预取不仅无效,还会占用带宽、淘汰掉本该留在Cache里的有效数据,反而拖累性能。DPDK的应对是不完全依赖硬件自动判断,而在收发包路径上显式插入软件预取指令——因为一个报文的处理要经过6次内存读,若不能保证数据都在Cache中,每80个时钟周期处理一包的目标根本无法达成。

参考来源

《深入浅出DPDK》第2章《Cache和内存》