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