我有SSE的经验,并且搜索ARM平台是否有优化技巧,或者它是否最终正确地利用了指令延迟和吞吐量?
我尝试将armv8a与armv7a NEON进行比较,但到目前为止我的搜索告诉我两个单位非常相似,我错了吗?
我能找到的很少东西是:
- armv8a有标量的NEON操作;
- armv8a NEON与CPU共享状态标志;
- armv8a具有更宽的寄存器和新指令;
- 可以使用具有快速路径的单周期MAC链;
醇>
问题的一些细节:
- 什么样的armv8a NEON构造能够快速执行?
- 什么样的armv8a NEON结构表现缓慢,应该避免?
- armon8提供了哪些优化技术(除了具有快速路径的MAC链之外还有什么其他的东西?)?
- armv7a NEON与armv8a NEON相比如何?
- 在为两种架构(armv7a,armv8a)编写高性能代码的方式上是否存在实质性差异?
- 有没有可能快速armv7a代码在armv8a上执行缓慢(反之亦然)?一些例子?
- Snapdragon 810会以何种方式影响上述所有内容?
醇>
对定点和浮点的优化都感兴趣。
我使用gcc-arm-linux-gnueabihf编译器。