首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在编译iPhone应用程序时,armv7相对于armv6的优势是什么?

在编译iPhone应用程序时,armv7相对于armv6的优势是什么?
EN

Stack Overflow用户
提问于 2010-07-23 00:07:56
回答 5查看 45K关注 0票数 67

如果有任何好处的话...在文件里找不到任何确凿的证据。

显然,armv7是为更新版本的iOS而设计的。是不是更快?小一点?在X上更好吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-07-23 00:17:07

更大的区别之一是,armv6架构具有对双精度浮点运算的硬件支持,而armv7仅提供对双精度浮点运算的传统软件支持。

作为补偿,armv7架构有一个“霓虹灯”单元,它为单精度浮点运算提供了令人眼花缭乱的快速硬件支持。

如果你在做任何涉及浮点算术的事情,无论你是单精度还是双精度,你都需要考虑到这一点。如果您使用双精度,但不一定需要该精度,那么在armv7设备上使用单精度可能会获得显著的性能提升。

苹果在今年的一次全球开发者大会上介绍了armv6和armv7之间的许多不同之处,并介绍了加速框架。这些视频应该仍然可以在iTunes上使用(截止到7月10日)。

票数 53
EN

Stack Overflow用户

发布于 2010-07-23 01:26:42

较早的iOS设备(iPhone、iPhone 3G、第一代和第二代iPod touch)的CPU只支持armv6指令集。iPhone 3G S(以及iPad和第三代iPod touch)采用了更新的处理器,也支持armv7指令集。一般来说,armv7在这些较新的处理器上速度更快,建议您在以后的应用程序中至少包含armv7构建(在仅用于iPad的应用程序中,您可能只需要为armv7构建)。

正如Jasarien所指出的,指令集之间最大的区别在于浮点运算。在armv6上,应用程序倾向于使用精简的Thumb指令集来生成更小的二进制文件,但Thumb浮点性能非常糟糕。因此,你需要禁用Thumb是因为你想要更快的浮点计算。在armv7上,Thumb-2指令集不再有此限制,因此苹果公司建议您几乎所有时间都使用它进行编译。

您可以将Thumb构建设置设置为有条件的,以便对较旧的设备关闭,而对较新的设备启用。为此,请转到您的Xcode构建设置并选择Compile for Thumb选项。转到屏幕左下角的菜单,并选择Add Build Setting Condition选项。在新的构建设置条件中,为架构选择ARMv6,关闭Thumb,添加另一个条件,为其架构选择ARMv7,并为其启用Thumb。

根据Stephen Canon的答案here,armv6的硬件支持单精度和双精度浮点运算。我发现单精度算术在这个平台上的性能稍好一些,这可能是因为缓存中可以容纳更多的操作。在armv7上,霓虹灯SIMD浮点单元仅适用于单精度操作,因此单精度操作和双精度操作之间的性能可能存在巨大差异。

有关此主题的其他可能感兴趣的问题包括:

票数 77
EN

Stack Overflow用户

发布于 2010-07-23 05:11:14

对我来说,ARMv7的主要优势是:

  • thumb-2
  • NEON

霓虹灯必须显式编码,你不能通过简单的重新编译来利用它,但如果你能投入时间,它可以将多媒体/游戏操作加速8倍。然而,thumb-2几乎没有任何缺点(与ARMv6上的thumb相反,这使得浮点代码比ARM模式要慢得多)。当然,在ARMv7中添加另一个版本的可执行文件不会减少可执行文件的大小,但它会减少内存、缓存等中的代码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3310907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档