如果有任何好处的话...在文件里找不到任何确凿的证据。
显然,armv7是为更新版本的iOS而设计的。是不是更快?小一点?在X上更好吗?
发布于 2010-07-23 00:17:07
更大的区别之一是,armv6架构具有对双精度浮点运算的硬件支持,而armv7仅提供对双精度浮点运算的传统软件支持。
作为补偿,armv7架构有一个“霓虹灯”单元,它为单精度浮点运算提供了令人眼花缭乱的快速硬件支持。
如果你在做任何涉及浮点算术的事情,无论你是单精度还是双精度,你都需要考虑到这一点。如果您使用双精度,但不一定需要该精度,那么在armv7设备上使用单精度可能会获得显著的性能提升。
苹果在今年的一次全球开发者大会上介绍了armv6和armv7之间的许多不同之处,并介绍了加速框架。这些视频应该仍然可以在iTunes上使用(截止到7月10日)。
发布于 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浮点单元仅适用于单精度操作,因此单精度操作和双精度操作之间的性能可能存在巨大差异。
有关此主题的其他可能感兴趣的问题包括:
发布于 2010-07-23 05:11:14
对我来说,ARMv7的主要优势是:
霓虹灯必须显式编码,你不能通过简单的重新编译来利用它,但如果你能投入时间,它可以将多媒体/游戏操作加速8倍。然而,thumb-2几乎没有任何缺点(与ARMv6上的thumb相反,这使得浮点代码比ARM模式要慢得多)。当然,在ARMv7中添加另一个版本的可执行文件不会减少可执行文件的大小,但它会减少内存、缓存等中的代码。
https://stackoverflow.com/questions/3310907
复制相似问题