关于neon单元相关指令集的双发射问题

Arm的大牛,

          咨询个问题。

          我们写了个小程序验证A53上浮点运算的并行度,主体循环是几条寄存器都不存在依赖关系的fmla指令,测试下来发现dual issue(双发射)并不像我们理解的那样,我们原本想在fmla之间插入一些寄存器无相关性的其它neon指令,以达到双发射的效果。

          比如:

        fmla v0.4s, v0.4s, v20.s[0]
        ldr q30,[x1]
        fmla v1.4s, v1.4s, v20.s[1]

         发现插入ldr指令之后,运行时间变长,除非是load到通用寄存器Xn,才不会影响运行时间。

         之后测试插入fadd v22.4s,v22.4s,v23.4s或者str q30,[x1]都是如此。

        我们从 Cortex_A57_Software_Optimization_Guide_external.pdf 文档中得到一些信息

      

ldr使用的L issue

str使用的S issue

fmla使用的F0/F1 issue

按我们对文档的理解,应该可以并发的,可实际测试结果并没有,请帮忙看看我们哪里理解有错误,谢谢。

顺便提下,我们参考的文档是Cortex_A57_Software_Optimization_Guide_external.pdf ,有对应的A53文档吗,我们用的是A53,参考A57的该文档合适吗?