指令流水线用于将指令分为几步以并行方式执行指令。当我在调试器中暂停执行时,我只能看到eip寄存器的位置,而不能看到当前的流水线状态。有办法找出答案吗?

#1 楼

不,调试器会顺序查看代码,而CPU可能会在执行代码之前即时对其进行重新排序,甚至一次执行多个指令。即使是像Bochs这样的模拟器也是如此。另一方面,Simics可能会实现一些与实际情况更加相符的东西,但我对此表示怀疑。作为执行方面的明智选择,即使性能会大不相同,它也应与单周期实现相同。 。

如果您想要一个工具来分析整个流程中uOP的进度,请寻找诸如Marss86之类的东西,它可以模拟到uOp级别,并让您了解进展在管道中至少要模拟它们的架构。请注意,x86管道有多种实现方式,您选择的模拟器可能会也可能不会实现您要定位的确切模拟器。

评论


cb88答案的附录:您也可以看看cachegrind和callgrind,它们正在模拟给定体系结构上代码的执行。如果检测这些工具的代码,则可能会获得有关管道状态的一些信息。但是,正如cb88所说,您可能没有实现您要定位的确切目标。

–恐怖
13年5月22日在9:22