知识卡片

rte_memcpy的对齐优化术

专业/工作 · 1106.e

内容

内存拷贝看似没有算法难度,但rte_memcpy的性能秘密全在”如何对齐”上:非对齐的Load/Store往往要多花时钟周期,所以rte_memcpy优先保证Store地址对齐;在对非对齐Load惩罚更重的平台(如Sandy Bridge)上,还会连Load地址也一起对齐,代价是多读一条首尾冗余数据、再用移位指令拼出对齐结果,用一条多余的Load换后续所有Load/Store都跑在对齐的最优路径上。这说明同样用SIMD搬数据,真正决定性能的往往不是”用不用SIMD”,而是数据摆放的姿势。

参考来源

《深入浅出DPDK》第3章《并行计算》