Assembly 关于arm指令定时

Assembly 关于arm指令定时,assembly,arm,timing,neon,Assembly,Arm,Timing,Neon,在arm网站上,提供了Cortex-a9处理器的指令定时。 对于每个指令(具体来说,我指的是NEON矢量指令),计时是 以如下所示格式的表格给出(以VADD指令为例): 我有点明白桌子想说什么。例如,值为3的结果表示 此指令的结果将在第3次循环时可用,然后根据需要提供其他指令 根据本指令的结果,可以顺利使用结果而不会出现失速 但我的问题是: 这个循环数什么时候开始计数?它在指令之后算吗 发行了什么 此外,正如我所知,问题是一个步骤,当指令被发送到处理器后执行 指令被提取和解码,那么为什么解码和

在arm网站上,提供了Cortex-a9处理器的指令定时。

对于每个指令(具体来说,我指的是NEON矢量指令),计时是 以如下所示格式的表格给出(以VADD指令为例):

我有点明白桌子想说什么。例如,值为3的结果表示 此指令的结果将在第3次循环时可用,然后根据需要提供其他指令 根据本指令的结果,可以顺利使用结果而不会出现失速

但我的问题是:

这个循环数什么时候开始计数?它在指令之后算吗 发行了什么

此外,正如我所知,问题是一个步骤,当指令被发送到处理器后执行 指令被提取和解码,那么为什么解码和提取周期不显示在屏幕上 那就坐桌子吧?这是非常重要的信息,因为我需要知道获取和解码周期 能够知道我需要等待多少个周期才能顺利执行一条指令,这取决于 上一条指令的结果


一个清晰和准确的回应或一个地方,以查找它将高度赞赏

在复杂的流水线处理器(如A9)上使用计时表确实是一项艰巨而忘恩负义的任务。最好使用模拟,因为这些表格提供了该指令所需时间的绝对理论最小值,所以它与现实的相关性较低。因为您需要考虑缓存中的内容和其他类似的外部性

无论如何,这是我对这张桌子的理解。由于Cortex A9支持无序执行,因此获取和解码周期并不重要。这就是为什么他们从发行时间开始计算。你可以自己添加提取和解码周期,但是你必须考虑先前的指令和内存障碍之类的东西来精确地计算它们。 上表显示,此指令的最短发布时间为1个周期。因此,源值必须在下一个循环(循环2)中可用,以避免失速。在源结果显示后,该指令只需一个周期即可运行,因此,如果CPU中存在转发路径,则下一条指令可能会使用该结果。但是,需要另外3个周期(直到第6周期)才能将结果提交到寄存器文件,在寄存器文件中保证任何指令都可以访问结果


底线是,在理想情况下,执行此指令可能需要1到6个周期。无缓存等待,无内存障碍等。

非常感谢ooga修改我的帖子错误!
NAME    FORMAT    Cycle      Source    Result    Writeback 
VADD    Dd,Dn,Dm  1          -,2,2     3         6