我正在分析Agner Fog的"用汇编语言优化子例程:x86平台的优化指南"。尤其是我正在努力理解第12.7章。还有一个问题我不能理解。作者写道:
PM处理器中的指令解码遵循4-1-1模式。(融合)的模式示例12.6b中循环中每条指令的μops为2-2-2-2-2-1-1-1。这不是最优的,并且解码将花费6个时钟周期。这比退休时间还多,所以我们可以得出结论,指令解码是示例12.6b中的瓶颈。总执行时间是每次迭代6个时钟周期或每个计算的Y[i]值3个时钟周期。
- 指令解码遵循4-1-1模式意味着什么?如何知道它
- 回路模式为2-2-2-2-2-1-1-1。好的,但为什么解码需要6个周期,我不知道。为什么
-
CPU的前端可以在一个时钟周期内解码多个(宏)指令。每个宏指令解码为1个或多个微操作(μ操作)。4-1-1模式意味着第一个并行解码器可以处理解码到4μops的复杂指令。但第二个和第三个并行解码器只能处理每个解码到1μop的指令(如果不满足,它们就不会消耗指令)。
-
解码到2μops的5条指令必须由第一个解码器消耗,然后尾部允许一些并行性。
2 2 2 2 2 1 1 1 (Macro-instruction stream, μops per instruction) ^ x x 4 1 1 (Decode cycle 0) . 2 2 2 2 1 1 1 ^ x x 4 1 1 (Decode cycle 1) . . 2 2 2 1 1 1 ^ x x 4 1 1 (Decode cycle 2) . . . 2 2 1 1 1 ^ x x 4 1 1 (Decode cycle 3) . . . . 2 1 1 1 ^ ^ ^ 4 1 1 (Decode cycle 4) . . . . . . . 1 ^ x x 4 1 1 (Decode cycle 5) . . . . . . . . (Instruction stream fully consumed)