流水线如何在计算机体系结构中提高性能?
在非流水线处理器中,性能由指令的周期时间和执行时间来表征。在流水线执行的情况下,指令处理在流水线中交错进行,而不是像在非流水线处理器中那样顺序执行。因此,指令执行时间这个概念没有意义,流水线处理器的深入性能规范需要三个不同的度量:处理器的周期时间以及指令的延迟和重复率值。
周期时间定义了每个阶段完成重要操作的可访问时间。处理器的周期时间由最高阶段的最坏情况处理时间决定。
延迟定义了特定指令的结果在流水线中可供后续相关指令访问所需的时间。延迟以周期时间的倍数给出。
如果某个指令的延迟是一个周期,则其结果在下一个周期内可供后续的 RAW 相关指令使用。在这种情况下,RAW 相关指令可以无延迟地处理。如果延迟超过一个周期,例如 n 个周期,则紧随其后的 RAW 相关指令必须在流水线中中断 n-1 个周期。
有两种不同类型的 RAW 依赖关系,例如定义-使用依赖关系和加载-使用依赖关系,并且有两种相应的延迟类型,称为定义-使用延迟和加载-使用延迟。
指令的定义-使用延迟是指解码和发出后到操作指令的结果在流水线中可供后续 RAW 相关指令使用之间的时间延迟。如果定义-使用延迟的值是一个周期,则紧随其后的 RAW 相关指令可以在流水线中无延迟地处理。
指令的定义-使用延迟是指后续 RAW 相关指令必须在流水线中中断的时间。定义-使用延迟比定义-使用延迟少一个周期。
术语加载-使用延迟加载-使用延迟与加载指令相关联,例如在以下序列中
load r1, x; ad r5, r1, r2;
在此示例中,加载指令的结果需要作为后续 ad 中的源操作数。加载-使用延迟和加载-使用延迟的概念与定义-使用延迟和定义-使用延迟的解释方式相同。
并行执行的指令的延迟由流水线的执行阶段确定。它可以用 PowerPC 603 的 FP 流水线来说明,如图所示。
Power PC 603 在三个阶段处理 FP 加法/减法或乘法。指令获取、解码和发出阶段需要两个周期。随后的执行阶段需要三个周期。在此阶段结束时,操作的结果被转发(旁路)到处理器中的任何请求单元。最后,在完成阶段,结果被写回体系结构寄存器文件。