解码指令模式

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.

  1. 指令解码遵循 4-1-1 模式是什么意思,如何知道它?
  2. 循环模式为 2-2-2-2-2-1-1-1。好的,但我不知道为什么解码需要 6 个周期。为什么?
  1. CPU的前端可以在一个时钟周期内解码多个(宏)指令。每条宏指令解码为 1 个或多个微操作 (μops)。 4-1-1 模式的意思是第一个并行解码器可以处理一个复杂的指令,该指令最多可以解码 4 μops。但是第二个和第三个并行解码器只能处理每个解码到 1 μop 的指令(如果不满足,它们不会消耗指令)。

  2. 解码为 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)