在英特尔手册中,提到了很多性能事件,其中包括“已退役的错误预测分支指令”。在这个上下文中,retired确切意味着什么?需要注意的是,我已经查看了英特尔的性能分析指南,它指出“retired”有一个非常精确的含义(第8页),并参考第7页的图表,但我认为我缺乏理解退役 / 写回涉及的背景知识。这个过程到底是什么,它有什么涉及?
在上下文中,“已退役”表示:指令(microoperation,μop)离开了“退役单元”。这意味着,在无序CPU流水线中,指令最终被执行,并且其结果在体系结构状态中正确可见,就像它们按顺序执行一样。从性能的角度来看,这是您应该检查的数字,以计算实际执行了多少条指令(具有有用的输出)。如果您的上下文是节能,您可以检查有多少指令在OOO管道中开始执行(“ISSUED”计数器或“EXECUTED”计数器),并将该数字与已退役操作的计数进行比较;高差异表明CPU做了很多无用功,使用了过多的动力。退役单元的简短描述在这里:http://users.utcluj.ro/~baruch/book_ssce/SSCE-Intel-Pipeline.pdf 5.4.7.4. 退役单元退役单元将预测执行的微操作结果写入用户可见寄存器,并从重排序缓冲区中删除这些微操作。与保留站一样,退役单元不断检查重排序缓冲区中的微操作状态,寻找已经执行并且不再具有指令池中其他微操作依赖关系的微操作。然后按照原始程序顺序退役完成的微操作。退役单元每个时钟周期可以退役三个微操作(/<--此信息可能已过时/)。在退役微操作时,它将结果写入处理器的寄存器文件和/或内存。结果写入后,该微操作将从重排序缓冲区中删除。更详细的单元信息请参考Agner Fog的《为您的CPU优化》http://www.agner.org/optimize/microarchitecture.pdf第“退役”章节。