我正在分析Agner Fog's "Optimizing subroutines in assembly language: An optimization guide for x86 platforms"。 特别是我试图理解第12.7章。还有一个我无法理解的问题。作者写道:
PM处理器中的指令解码遵循4-1-1模式。 (融合)的模式 例12.6b中循环中每条指令的μops为2-2-2-2-2-1-1-1。这不是最佳的, 解码需要6个时钟周期。这不仅仅是退休时间,所以我们可以 得出结论,指令解码是例12.6b中的瓶颈。总执行 时间是每次迭代6个时钟周期或每个计算的Y [i]值3个时钟周期。
答案 0 :(得分:4)
CPU的前端可以在一个时钟周期内解码多个(宏)指令。每个宏指令解码为1个或多个微操作(μop)。 4-1-1模式的含义是第一个并行解码器可以处理解码到最多4μs的复杂指令。但是第二个和第三个并行解码器只能处理每个解码为1μs的指令(如果不满意,它们不会使用该指令)。
解码为2μs的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)