计算机体系结构中负载使用延迟的性能是什么?
在本节中,我们关注流水线加载/存储处理的重要性能度量,例如加载-使用延迟。负载使用延迟的值是负载流水线执行的特征属性。较大的负载使用值会严重影响处理器性能,尤其是在超标量处理器中。
负载-使用延迟源于负载-使用依赖性,一种RAW依赖性。如果加载指令的结果不能在适当的时间由流水线访问以供后续指令访问,则加载-使用相关性会引起加载-使用延迟。
ALoad-usedelaycanbehandledeitherstatisticallyordynamically.Ifthestaticresolutionisused,thecompilertriestoinsertasmanyindependentinstructionsasnecessarybetweentheloadinstructionandtheconsumerinstructiontocompensatefortheloaddelay.
MIPScomputers,suchastheR2000andR3000areexamplesofhandlingload-usedelaysbystaticscheduling.Herethecompilerisassumedtoinsertaloaddelayslotafterallloadinstructions.ThisslotisfilledbythecompilereitherwithanindependentinstructionorwiththeNOP.
另一种最常用的处理负载使用延迟的技术是动态调度。在这里,专用硬件负责检测和解决可能损害顺序一致性的危险。通常,负载使用延迟的值取决于缓存的原理布局和实现。
目前大多数处理器的负载使用延迟为一个周期,少数有两个或三个周期,如表所示。有几种处理器消除了负载使用延迟,例如Inteli486、Pentium、SuperSparc和R8000。
当前处理器的负载使用延迟值(以周期为单位)
1
对于传统的标量处理器,一个周期的加载使用延迟是完全可以接受的,因为并行优化的ILP编译器会经常找到独立的指令来填充加载后的插槽。
但是,对于指令发布率为2或更高的超标量处理器,编译器为每个加载指令找到两个、三个、四个或更多独立指令的可能性要小得多。因此,随着超标量处理器负载使用延迟中的指令发布率的增加,成为瓶颈。
根据这些结果,负载使用延迟从一个周期增加到两个或三个周期将大大降低加速。例如,在问题率为4的情况下,与负载使用延迟为1相比,负载使用延迟为2将阻碍性能约30%。尽管这些数字仅对某些参数集有效,但一般的这种趋势是可以预料的。