如何分析ARM Neon中两条指令之间停顿的周期数?

时间:2017-06-08 13:33:41

标签: assembly arm neon

例如

    VMUL q0,q1,q2     
    VMUL q1,q0,q2

@VMUL needs 4 cycles for operation & result will be available by 7th cycle 
@next instruction will start only by 7th cycle so 5th, 6th cycle will stalled
@but next instruction need operate only by 2nd cycle of its beginning, 
@so it will start in 6th cycle itself. Result: 5th cycle is stalled 
@this is my understanding from manual.
  1. 我的考虑是否正确?如果没有请纠正。
  2. 现在我想知道在两个指令或整个文件之间停止了多少个周期。如何描述那个?

1 个答案:

答案 0 :(得分:0)

正如评论者所提到的,这是一个微架构特定的问题。许多实现都是专有的和私有的,即使可用,工具也非常昂贵。但是,如果你想测试非常小的数学例程,并且如果ARM-v7 ISA是你的目标,那么有一个基本的“库存”A8的在线模拟器:

http://pulsar.webshaker.net/ccc/index.php?lng=us

这将帮助您了解更老的微架构,如果它表现良好,它可能会在更新的微架构上表现更好。

我也觉得这个工具设计得很好,可以很容易地看到摊位并了解发生了什么。

但是,它主要用于教育目的。如果您需要引用硬数字,并且非常具体针对您的经理或客户,那么我同意其他评论,唯一的方法就是在您要定位的平台上使用完整的真实基准。