X86 指令的执行过程和在gem5中的实现?
我正在学习gem5上程序的运行过程。读一些书。但我仍然对程序执行中的各个部分感到困惑。我下面的理解正确吗X86 指令的执行过程和在gem5中的实现?,x86,cpu-architecture,instructions,gem5,micro-architecture,X86,Cpu Architecture,Instructions,Gem5,Micro Architecture,我正在学习gem5上程序的运行过程。读一些书。但我仍然对程序执行中的各个部分感到困惑。我下面的理解正确吗 首先,将计算机指令放在ICache中 计算机CPU控制指令的获取,并将 已将指令提取到指令队列中。那就乘火车吧 指令队列中的指令,并对指令进行解码 进入微操作。这些微操作将发送到 重新排序缓冲区。如果重新排序缓冲区中的微操作 一个加载/存储,它将被发送到加载/存储队列。如果它是一个 加减运算,直接发送 给执行单位。在此过程中,每个执行单元都有一个 为寄存器重命名保留的站。当微操作停止时 完成
我想你说的是x86,因为提到了UOP(微操作)。阅读Agner Fog的Microach PDF,特别是有关Intel Core 2或Nehalem的部分,听起来与您描述的最为相似(没有uop缓存,但在解码和重命名/分配到后端之间有一个解码指令队列进行缓冲。)为那些真正的CPU进行优化涉及到大量前端解码,但是,如果细节与您正在调整的前端解码机制不匹配,您可以跳过该部分。还有中的其他链接,特别是David Kanter的writeups。术语:在英特尔术语中,“问题”=将uop从前端移动到无序后端,再移动到ROB和RS(保留站,又名调度器,您正在调用队列。因此,如果您有单独的FP和整数调度器,UOP在其中等待其输入准备就绪,并有一个免费的执行端口,那么K8/K10可能是更好的模型;Intel使用统一的调度器(直到Skylake?)“调度”=将uop从调度程序发送到执行单元。非x86计算机体系结构教科书通常使用相反的术语。它们从来都不是同义词。另请参见(re:real x86 CPU):,可能是No、
nop
和“消除”uop(无执行单元)进入ROB,没有RS条目,因为实际上不需要执行任何操作。所有操作都进入ROB,这使得从错误推测(如分支或异常)中恢复成为可能.See和.UOP确实需要在ROB和RS中发布执行单元问题。如果两者都已满,前端无法发布它们。但是,如果您还没有阅读Agner Fog的Microach guide对PPro和Nehalem的解释,请立即执行。为了进行比较,介绍了AMD K10使用的每个端口的单独调度程序。它在从ROB到调度程序发出的指令的rms,这可能同样不准确,或者不是一个有用的心智模型。我假设您谈论的是x86,因为提到了uops(微操作)。请阅读Agner Fog的Microach PDF,特别是关于Intel Core 2或Nehalem的部分,听起来与您描述的最为相似(没有uop缓存,但在解码和重命名/分配到后端之间有一个解码指令队列缓冲。)为那些真正的CPU进行优化涉及到对前端解码的大量关注,但如果细节与正在调整的前端解码机制不匹配,则可以跳过该部分。还有中的其他链接,特别是David Kanter的writeups。术语:在英特尔术语中,“问题”=将uop从前端移动到故障后端,再移动到ROB和RS中(保留站,又名调度器,您正在调用队列。因此,如果您有单独的FP和整数调度器,UOP在其中等待其输入准备就绪,并有一个免费的执行端口,那么K8/K10可能是更好的模型;Intel使用统一的调度器(直到Skylake?)“调度”=将uop从调度程序发送到执行单元。非x86计算机体系结构教科书通常使用相反的术语。它们从来都不是同义词。另请参见(re:real x86 CPU):,可能是No、nop
和“消除”uop(无执行单元)进入ROB,没有RS条目,因为实际上不需要执行任何操作。所有操作都进入ROB,这使得从错误推测(如分支或例外)中恢复成为可能。请参阅和。确实需要执行单元的UOP