如果有任何优势......在文档中找不到任何结论。
显然armv7适用于较新版本的iOS ...它更快吗?小吗? X更好?
答案 0 :(得分:78)
较旧的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指令集不再具有此限制,因此Apple建议您几乎一直使用它进行编译。
您可以将Thumb构建设置设置为有条件,以便旧设备关闭以及更新设备关闭。为此,请转到Xcode构建设置并选择Compile for Thumb选项。转到屏幕左下角的菜单,然后选择添加构建设置条件选项。在新的构建设置条件中,为架构选择ARMv6,为其关闭Thumb,添加另一个条件,为其架构选择ARMv7,并为其启用Thumb。
根据Stephen Canon的回答here,armv6中的硬件支持单精度和双精度浮点运算。我发现单精度算法在这个平台上表现稍好一些,可能是由于更多的操作适合缓存。在armv7上,NEON SIMD浮点 unit仅适用于单精度操作,因此单精度和双精度操作之间的性能差异很大。
可能对此主题感兴趣的其他问题包括:
答案 1 :(得分:54)
更大的区别之一是armv6架构具有双精度浮点运算的硬件支持,而armv7仅为双精度浮点运算提供传统软件支持。
为了补偿,armv7架构有一个“NEON”单元,为单精度浮点运算提供了快速的硬件支持。
如果您正在执行涉及浮点运算的任何事情,无论您是以单精度还是双精度执行此操作,都需要考虑这一点。如果你是以双精度进行,但不一定需要那么精确,那么通过使用单精度,你可以在armv7设备上获得显着的性能提升。
Apple在今年的一次WWDC会议中介绍了armv6和armv7之间的许多不同之处以及对Accelerate框架的介绍。视频仍应在iTunes上提供(截至2010年7月)。答案 2 :(得分:4)
对我而言,ARMv7的主要优点是:
NEON必须明确编码,你不要通过简单的重新编译来利用它,但如果你可以投入时间,它可以将多媒体/游戏操作加速8倍。但是thumb-2几乎是一个免费减少代码大小,几乎没有任何缺点(与ARMv6上的拇指相反,这使得浮点代码比ARM模式慢得多)。当然,在ARMv7中添加另一个版本的可执行文件不会减少可执行文件的大小,但会减少内存,缓存等中的代码。
答案 3 :(得分:3)
如果您希望自己的应用在iPad和所有iPhone / iPod toch型号上运行,则必须为两者编译。较旧的iOS设备使用arm6,而新设备使用arm7。
不能编译其中一个或另一个的唯一原因是应用程序大小减少,因为它只需要一个编译版本的代码。但除非你有一个非常庞大的代码库,否则这个文件大小差异将非常小。
答案 4 :(得分:3)
arm7针对iPod Touch(第三代)和iPhone 3GS及更新版本进行了更优化。在为旧设备构建时,您需要使用“Standard / arm6 + arm7”。在实践中,我的应用程序中没有看到太多的性能差异。
答案 5 :(得分:1)
看看这个链接,它对优势,差异等有很好的描述。
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dht0001a/CHDEFAGB.html