流水线技术如何提升计算机架构的性能?
非流水线处理器的性能由指令的周期时间和执行时间表征。在流水线执行的情况下,指令处理在流水线中交错执行,而不是像非流水线处理器那样顺序执行。因此,指令执行时间的概念毫无意义,流水线处理器的深入性能规范需要三个不同的指标:处理器的周期时间以及指令的延迟和重复率值。
周期时间定义了每个阶段完成重要操作所需的时间。处理器的周期时间由最高阶段的最坏情况处理时间指定。
延迟定义了特定指令的结果在流水线中可供后续相关指令访问所需的时间。延迟以周期时间的倍数表示。
如果某条指令的延迟为一个周期,则其结果在下一个周期可供后续的 RAW 相关指令使用。在这种情况下,RAW 相关指令可以无延迟地处理。如果延迟超过一个周期,比如 n 个周期,则紧接着的 RAW 相关指令必须在流水线中被中断 n-1 个周期。
RAW 依赖关系有两种,例如定义-使用依赖关系和加载-使用依赖关系,相应的延迟也有两种,称为定义-使用延迟和加载-使用延迟。
指令的定义-使用延迟是指从解码并发出指令到操作指令的结果在流水线中可供后续 RAW 相关指令使用之间的时间延迟。如果定义使用延迟 (define-use latency) 的值为一个周期,则紧接着的 RAW 相关指令可以在流水线中无任何延迟地处理。
指令的定义使用延迟是指后续 RAW 相关指令必须在流水线中被中断的时间。定义使用延迟比定义使用延迟少一个周期。
术语"加载使用延迟加载使用延迟"与加载指令相关,例如在序列中
load r1, x; ad r5, r1, r2;
在此示例中,加载指令的结果需要作为后续执行指令的源操作数。 加载-使用延迟和加载-使用延迟的概念与定义-使用延迟和定义-使用延迟的解释相同。
并行执行的指令的延迟由流水线的执行阶段决定。可以用图中所示的 PowerPC 603 浮点型 (FP) 流水线来说明这一点。

Power PC 603 分三个阶段处理浮点型加法/减法或乘法。指令获取、解码和发出阶段需要两个周期。随后的执行阶段需要三个周期。在此阶段结束时,运算结果将被转发(绕过)到处理器中的任何请求单元。最后,在完成阶段,结果被写回到架构寄存器文件中。

