1

我正在分析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 个时钟周期。

  1. 指令解码遵循 4-1-1 模式是什么意思,如何知道?
  2. 循环模式是 2-2-2-2-2-1-1-1。好的,但我不知道为什么解码需要 6 个周期。为什么?
4

1 回答 1

4
  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)
    
于 2016-04-11T18:55:51.800 回答