首页 文章

关于手臂指令时间

提问于
浏览
4

在手臂网站上,提供了 Cortex-a9 processor 的指令时间 . Instruction Link

对于每条指令(具体来说,我说的是NEON向量指令),时序在下面显示的格式表中给出(以VADD指令为例):

NAME    FORMAT    Cycle      Source    Result    Writeback 
VADD    Dd,Dn,Dm  1          -,2,2     3         6

我有点理解 table 试图说的话 . 例如,值为3的结果意味着该指令的结果将在第3周期可用,然后根据该指令的结果的其他指令可以平滑地使用结果而不会停顿 .

But My question is:

这个循环次数何时开始计算?发出指令后是否计算在内?

另外,据我所知,问题是在指令被提取并解码后发送到处理器执行的一个步骤,那么为什么解码和获取周期不会出现在表上呢?这是非常重要的信息,因为我需要知道获取和解码周期,以便能够知道我必须等待多少个周期才能平滑地执行取决于前一条指令结果的指令 .

清晰准确的反应或查找的地方将受到高度赞赏!

1 回答

  • 1

    在像A9这样的复杂流水线处理器上使用时序表真的是一项艰难而忘恩负义的任务 . 更好地使用模拟,因为这些表提供了该指令将花费多长时间的绝对理论最小值,它与现实的相关性稍低 . 因为您需要考虑缓存中的内容以及其他类似的外部因素 .

    无论如何,这是我对这张表的理解 . 由于Cortex A9支持乱序执行,因此获取和解码周期无关紧要 . 这就是他们从发布时间算起的原因 . 您可以自己添加提取和解码周期,但是您必须考虑先前指令的效果以及内存屏障等因素来准确计算它们 .

    上表显示该指令的最短发布时间为1个周期 . 因此,源值必须在下一个周期(周期2)中可用,以避免失速 . 在源结果出现之后,该指令仅运行一个周期,因此如果CPU内存在转发路径,则下一条指令可能会使用结果 . 然而,需要另外3个周期(直到第6周期)才能将结果提交到寄存器文件,在该文件中保证任何指令都可以访问结果 .

    底线是这条指令可以在理想情况下执行1到6个周期 . 没有缓存等待,没有内存障碍等 .

相关问题