知识卡片

函数交织用异构执行单元隐藏延迟

专业/工作 · 552.h

内容

函数交织把两个需要先后执行的算法拆成小步骤交替下发,让它们尽量使用CPU里不同的执行资源同时推进——比如AES用AES-NI专用电路计算,SHA1用另一套标量指令计算,两者互不抢占同一份硬件资源,于是可以在时间上重叠执行,其中一个算法的延迟被另一个算法的计算过程”藏”了起来。如果两个算法本身对数据流顺序要求很严格(如RC4和MD5),单独执行会限制指令级并行度,交织后反而能榨出更多可并行的空间;但如果两个算法用的是同一套资源(都用SSE指令),则会因为寄存器争用而收效有限。发散:这体现了一个更普适的调度思想——只要两个任务用的是不同的硬件资源,把它们交错执行几乎是免费的性能提升,性能优化的关键往往不是”谁先谁后”,而是”谁和谁能同时用不同的资源”。

参考来源

《Linux开源存储全栈详解从Ceph到容器存储》第4章《存储加速》