分类 处理器系统 下的文章

在读某篇文章的时候提到了乱序处理器的执行架构,其中有一个instruction commit/retire的概念没能很好地理解。后来在Wikipedia上看到了一段简短的文字(参见 https://en.wikipedia.org/wiki/Instruction_window ),有了一个初步的认识,在此记录一下。

首先是instruction window指令窗口(同ROB,Re-Order Buffer,重排序缓冲区)的概念。根据介绍,乱序执行模型实际上是一种整体上顺序、局部乱序的执行模型,允许处理器在执行某一指令时试探性地执行接下来的一些指令。为了确保尽可能大的预测有效率,处于乱序执行中的指令必须等待自己的操作数就绪才可以执行。

由于试探性执行的结果可能出现错误,而后需要通过状态回滚来撤销错误的执行操作,所以处于试探性执行阶段的指令需要单都标记出来,这便是指令窗口。处在指令窗口中的指令都处于执行中的状态,既可能是在正常按顺序执行,也可能是在乱序执行技术下提前执行。出于硬件设计合理性、执行效率等因素考虑,允许处于乱序执行状态下的指令数应该是有限的,也就意味着指令窗口是有大小限制的。

如果指令窗口中的指令执行结果确认无误,则可以提交执行结果,离开指令窗口,这个动作在英语中就称作instruction commit/retire。此时,下一条指令可以进入指令窗口,开始执行。