乱序处理器中访存指令的操作我一直看的不太懂,其中lsq在流水线中是怎么使用的我也不太清楚,今天看了篇论文,讲的是AMD的经典处理器K7,记录一下:
LSU部件可以理解为存储器子系统的最高层,在该部件中包含Load Queue与Store Queue。其中Load Queue与Store Queue之间有着强烈的耦合关系,因此许多处理器系统将其合称为LSQ。在多数处理器的存储器子系统中,LSU是最顶层,也是指令流水线与Cache流水线的联系点。其上接收来自CPU的存储器指令,其下连接着存储器子系统。其主要功能是将来自CPU的存储器请求发送到存储器子系统,并处理其下存储器子系统的应答数据和消息,整个过程如Figure 1所示:
store、load指令的执行过程大致如下:
对于store指令:当ICU分派(dispatch)一个store操作给调度器(scheduler)的时候,调度器立刻放置一个store请求到LSU(当然,如果store操作的数据(store data)此时已经计算了出来的的话,也一同放进LSU。如果此时的store data还没有的话,LSU会时刻监视(snoops)r