大家好,
我在A15上编写汇编,发现A8 和A9 Technical Reference Manual 中有一章是将Instruction Cycle Timing,但是在A15的Technical Reference Manual 中没有找到,想问下A8,A9,A15 的ARM指令集的 Instruction Cycle Timing 是一样的吗?
另外,关于neon的 Instruction Cycle Timing 我也只在A8手册Technical Reference Manual 中看到,A8,A9,A15 的neon 指令集的Instruction Cycle Timing也是一样的吗?
A9有公开文档:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0409i/index.html
A15的居我所知是没有这方面的文档的。我推测是因为随着pipeline中很多stage变成out of order,给出指令的Timing已经没有意义。
A9 也是out of order的,但是给出了Timing,另外,这篇文章中ARM NEON optimization
这节中提到了neon指令执行需要几个周期的时间,在这个时间内通过消除数据依赖的方法实现优化,既然这样的话,如果在A15上编写neon汇编,没有neon 指令的Timing,会影响汇编优化效率,这该如何处理
A9与A15两种架人有很多不同,不能说A9是out of order并且给出timing就推出A15也应该有这样的timing。
在优化时,Read after Write依赖是需要消除的。但是根据我的经验,在A15上调整指令的顺序并不会带来性能上的较大的变化。因为A15的性能比较强,即使有RAW依赖,也可以通过其内部的Out of Order,mult-issue来避免性能降低,更不用说WAW,WAR依赖了。你可以试试你看到的文章中的例子在A15的表现,指令调整前后性能应该不会有太大的变化。
根据的你解答,A15的性能很强,做NEON汇编优化时,如果想提升NEON优化效率,有没有什么技巧点需要注意的,因为你说这片文章ARM NEON optimization 中提到的几点对A15 效果不大。
>因为你说这片文章ARM NEON optimization 中提到的几点对A15 效果不大。
我只是说“A15上调整指令的顺序并不会带来性能上的较大的变化”
关于优化方法,我建议在熟悉你要优化的cpu微架构的同时参考neon programmer guide第5章,另外也可以参考csapp第5章。