CPI:处理器执行一条指令需要的周期数
IPC:处理在一个周期内可以执行的指令的个数
超标量处理器简单来说每周期可以执行多于一条的指令,处理器再每周期内最少可以同时执行n条指令,这称为n-way的超标量处理器
普通处理器流水线:
一次只能处理一个指令。
流水线级数的确定是很复杂的事情
流水线优化第一个是合,第二个是拆
指令间的相关性:
1,先写后读RAW,无法回避,是真相关,可以用旁路来解决
2,先读后写WAR,-----可以避免,写别的寄存器
3,先写后写WAW,------可以避免,写别的寄存器
还有一种相关性称为控制相关性-----和分支预测有关
超标量处理器流水线
顺序执行和乱序执行。
scoreboard用来记录流水线中每条指令的执行情况,记录每个逻辑寄存器r0~r31的执行情况
P:pending,表示指令的结果还没有写回到逻辑寄存器中
F:一条指令在哪个FU中执行,在将指令结果进行旁路时会使用这个信息
Result Position:记录一条指令到达FU中流水段中哪个阶段,也是用于旁路。
流水线阶段有:
fetch:从icache取指令,分支预测
decode:识别出指令以及操作数
register renaming:寄存器重命名,逻辑寄存器重命名为物理寄存器,解决waw和war相关性。用旁路俩解决真相关性raw
dispatch:写到发射队列,ROB和store Buffer中
Issue:仲裁电路会从Issue queue中挑选合适的指令送到FU中。还存在唤醒电路,她可以将发射队列中对应的源操作数置为有效状态。两个电路相互配合进行工作,是关键路劲
Register File read:上一阶段选中的指令需要从物理寄存器堆中(Physical Register File,PRF)中读取操作数。端口多,所以不会很快,一个流水阶段。有些源操作数从旁路中得到
Execute:送到对应的FU中,有很多个不同类型的FU
write back:将FU计算结果写道物理寄存器堆。还有一个功能通过旁路网路将计算结果一般送到FU的输入端。旁路网络是影响速度的关键,采用cluster结果,将FU分成不同的组
commit:ROB,将乱序执行的指令拉回到程序中规定的顺序。也对指令产生的异常进行处理,所有的异常都需要等到指令到达流水线的提交阶段才能进行处理,实现异常顺序进行,精确异常