多发射和乱序执行通过循环展开 ----更多可供调度的指令
动态调度流水线:为避免流水线停顿,对指令执行顺序进行重排的硬件技术。
乱序执行: 可以把动态调度流水线看作程序的数据流结构分析。处理器在不违背原有数据流顺序的前提下以某种顺序执行指令,称为乱序执行。这样执行的指令顺序和取指顺序是不同的。
超标量: 高级流水线技术,处理器能够在动态执行时选择指令,并在一个周期内执行一条以上的指令。
可变的指令长度和不确定的执行时间会造成流水线各级不均衡
流水线技术可以提高单周期数据通路的时钟频率。
多发射技术聚焦于降低CPI:每条指令执行周期数。
通过预测来调度和推测执行指令,是降低冒险造成的性能影响的主要技术。
指令发射
根据每个时钟周期能够发射的指令数,处理器可以分为单发射处理器和多发射处理器。 单发射处理器是指每个时钟周期只能发射一条指令。
顺序派遣 乱序发射 乱序执行 乱序写回
超标量处理器,指令经过译码后被顺序派遣到不同的运算单元的等待队列中,在等待队列中可以有多条指令,先把解除了数据依赖性的指令发射到运算单元中开始执行,因此发射是乱序的。
乱序写回会将运算单元执行结果,写到ROB重排序缓冲区。最后由ROB按顺序写回通用寄存器组。
重排序缓冲区
动态调度处理器用来保存指令执行结果的缓冲区。 一旦指令确认被提交,将会把缓冲区的结果写入内存或者寄存器中。
顺序发射 --- 乱序执行 ---顺序写回
多发射处理器 -- 动态调度 ---保留站(发射队列)---寄存器重命名 (解决反相关)---重排序缓冲(暂存指令执行结果)