5.1.2.1 软件流水线基础 5.1.2.1 软件流水线基础:当编译器“看走眼”时,我们如何亲手把 循环的依赖链剪断? 你有没有过这样的时刻—— 在嵌入式 DSP 上跑一段 FIR 滤波器核心循环,理论吞吐该是 1.2 GOPS,实测却卡在 380 MIPS; 在 ARM Cortex-A76 上优化图像卷积内核, 全开了,但 显示 占比高达 47%; 或者更扎心一点:你把循环展开到 16 路、手动向量化、甚至用 告诉编译器“这个指针绝对不重叠”,结果生成的汇编里, 和 还是像老式打字机一样,一拍一拍地串行敲着——中间插着三四个空指令周期( ),仿佛编译器在对你冷笑:“我信你个鬼。” 这不是你的代码写得不够狠。