李 昭,刘有耀,焦继业,潘树朋
(1.西安邮电大学电子工程学院,西安 710100;2.西安邮电大学计算机学院,西安 710100)
传统超标量处理器通过指令级并行(Instruction Level Parallelism,ILP)提升处理器执行性能,为实现推测性执行、精确异常和寄存器回收等功能,引入重排序缓存(Reorder Buffer,ROB)机制[1]。将解码之后的指令按照程序顺序写入ROB 中,每条指令占用ROB 的一个表项,在指令执行阶段一直保存在ROB中,直到提交阶段从ROB 中逐条退休,使程序按顺序更新处理器的状态,保证了在分支预测失败和指令异常时处理器状态的正确。随着集成电路技术的发展,众多领域对处理器性能的要求越来越高,ROB机制的不足也逐渐显现。例如,当ROB head 被长周期执行指令占用时,后续指令就不能从ROB 中退出,即使这些指令独立于长周期执行指令,并且它们已经计算完成,也不允许提交,使得ROB 利用率较低。同时,由于ROB 容量有限,指令持续解码最终会导致ROB 完全填满,无论是否有其他独立的指令,都不能进入发射队列,并且指令执行停滞[2],从而使处理器陷入相当多的周期停顿[3],对处理器性能造成影响。ROB 阻塞问题的产生是由于ROB 遵循指令顺序退出策略影响处理器性能,这些长周期执行指令一方面在多个周期内不可用,可能会长时间阻塞从属指令的执行,另一方面退出缓慢,已执行完的指令会在多个周期内占用关键资源,一旦资源用尽,处理器就会停止获取新指令并最终停顿,导致ROB 等其他硬件资源利用率降低。针对以上问题,需要从提高电路硬件资源利用率以及指令提交控制逻辑等方面进行优化,简单的解决方案是扩大ROB容量以容纳更多的并行指令。……