Gcc 当优化armv8a与armv7a的霓虹灯代码时,我应该知道什么?

Gcc 当优化armv8a与armv7a的霓虹灯代码时,我应该知道什么?,gcc,optimization,arm,neon,Gcc,Optimization,Arm,Neon,我有使用SSE的经验,并且研究ARM平台是否有优化技巧,或者它是否最终正确地利用了指令延迟和吞吐量 我试着比较armv8a和armv7a,但到目前为止,我的搜索结果告诉我,这两个单位非常相似,我错了吗 我能找到的几件事是: armv8a具有标量霓虹灯操作 armv8a霓虹灯与CPU共享状态标志 armv8a具有更宽的寄存器和新指令 可以使用具有快速路径的单周期MAC链 问题的一些细节: 哪种类型的armv8a执行速度快 什么样的armv8a结构执行缓慢,应该避免 armv8a NEON提供了什么

我有使用SSE的经验,并且研究ARM平台是否有优化技巧,或者它是否最终正确地利用了指令延迟和吞吐量

我试着比较armv8a和armv7a,但到目前为止,我的搜索结果告诉我,这两个单位非常相似,我错了吗

我能找到的几件事是:

  • armv8a具有标量霓虹灯操作
  • armv8a霓虹灯与CPU共享状态标志
  • armv8a具有更宽的寄存器和新指令
  • 可以使用具有快速路径的单周期MAC链 问题的一些细节:

  • 哪种类型的armv8a执行速度快
  • 什么样的armv8a结构执行缓慢,应该避免
  • armv8a NEON提供了什么优化技术(除了具有快速路径的Mac链之外,还有什么其他的吗?)
  • armv7a霓虹灯与armv8a霓虹灯相比如何
  • 在为这两种体系结构(armv7a、armv8a)编写高性能代码的方式上是否存在实质性差异
  • 是否存在快速armv7a代码在armv8a上执行缓慢的可能性(反之亦然)?一些例子
  • Snapdragon 810以何种方式影响上述所有方面
  • 对定点优化和浮点优化都感兴趣


    我使用gcc arm linux gnueabihf编译器。

    中的v7和v8之间有一个很好的比较,这里有一些有用的信息,我收集到的是ARMv8与ARMv7之间的变化:1)在arm和NEON寄存器之间移动数据没有额外的延迟。2) 32“Q”和32“R”寄存器允许更具创造性的优化。3) 不再需要手动预取。4) 32位和64位代码在SD810上的性能似乎相似,5)NVidia K1 Denver使用定制Cortex-A57内核,在相同的时钟速度下,其性能比SD810快约50%(更好的无序执行和流水线AFAIK)。