解码指令模式
Pattern of decoding instruction
我正在分析Agner Fog's
"Optimizing subroutines in assembly language: An optimization guide for x86 platforms"。
特别是我试图理解第 12.7 章。还有一个我无法理解的问题。作者写道:
Instruction decoding in the PM processor follows the 4-1-1 pattern. The pattern of (fused)
μops for each instruction in the loop in example 12.6b is 2-2-2-2-2-1-1-1. This is not optimal,
and it will take 6 clock cycles to decode. This is more than the retirement time, so we can
conclude that instruction decoding is the bottleneck in example 12.6b. The total execution
time is 6 clock cycles per iteration or 3 clock cycles per calculated Y[i] value.
- 指令解码遵循 4-1-1 模式是什么意思,如何知道它?
- 循环模式为 2-2-2-2-2-1-1-1。好的,但我不知道为什么解码需要 6 个周期。为什么?
CPU的前端可以在一个时钟周期内解码多个(宏)指令。每条宏指令解码为 1 个或多个微操作 (μops)。 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)
我正在分析Agner Fog's "Optimizing subroutines in assembly language: An optimization guide for x86 platforms"。 特别是我试图理解第 12.7 章。还有一个我无法理解的问题。作者写道:
Instruction decoding in the PM processor follows the 4-1-1 pattern. The pattern of (fused) μops for each instruction in the loop in example 12.6b is 2-2-2-2-2-1-1-1. This is not optimal, and it will take 6 clock cycles to decode. This is more than the retirement time, so we can conclude that instruction decoding is the bottleneck in example 12.6b. The total execution time is 6 clock cycles per iteration or 3 clock cycles per calculated Y[i] value.
- 指令解码遵循 4-1-1 模式是什么意思,如何知道它?
- 循环模式为 2-2-2-2-2-1-1-1。好的,但我不知道为什么解码需要 6 个周期。为什么?
CPU的前端可以在一个时钟周期内解码多个(宏)指令。每条宏指令解码为 1 个或多个微操作 (μops)。 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)