游民星空 > 新闻中心 > 正文

全方位深度解析iPhone 5S所有技术改进

2013-09-29 11:53:33 来源:weiphone 作者:lydia_emyeu 编辑:听风飞舞 浏览:loading

迎来 64 位:

  iPhone 5s 发布前,我听说苹果自主设计的 A7 SoC 将迎来 64 位。最初我不全信这一传闻,毕竟从一个稳定的架构转移到 64 位不是那么容易,不值得冒险。显然,我的观点是错误的。

  在 PC 领域,多数用户已经对过渡到 64 位不再陌生,因为早在 2003 年 AMD 就宣告个人电脑正式进入 64 位时代。当时过渡的最大动机是增强内存寻址能力,从 32 位的 4GB 到 64 位的 16 EB。但是没必要支持最大的 16EB 内存,所以 AMD 的 x86-64 进用了 48 位于特定的内存地址(256TB)。从 x86 过渡到 x86-64 也带来小幅的性能提升。

  对于 ARM 来说,过渡到 64 位的动机也是一样的:更大的内存。记得 ARM 和他们的合作伙伴曾希望能吞掉一部分英特尔高利润的服务器业务,这就非常需要 64 位的支持。ARM 已推出它的两个 64 位架构:Cortex A57 和 Cortex A53,ARMv8 ISA 自然就成了 32 位 ARMv7 新的一代。

  跟 AMD 的 x86-64 不同,ARM 是带着一个新的 ISA 过渡到 64 位,而不是直接扩展旧的指令集。新的指令集叫做 A64,向下兼容 32位格式的指令集叫做 A32。单独一块微处理器就能同时支持这两种指令集,正如 ARMv8 那样拥有两种执行状态:AArch32 和 AArch64。当异常产生时,这两种执行状态能够切换/中端。换句话说,虽然 A64 是一个新的指令集,但你仍可以运行旧代码,当然,还需要一个支持 A64 的操作系统。在 A32 操作系统上无法运行 A64。也有可能仅设计一个 A64/AArch 64 的架构,某些服务器厂商或许会考虑使用,因为对他们来说向下兼容没多大意义。

  Cyclone 完全可以执行 ARMv8 的 AArch32 和 AArch64 状态。考虑到苹果肯定会向下兼容现有的 iOS 应用,采用 ARMv8 的架构是非常合理的选择。

  苹果过渡到 64 位并不是想扩大内存地址空间。以下是各代 iPhone 内存大小的发展趋势图,从图中我们可以看出,苹果并不着急扩大内存。

游民星空

  苹果总是隔代才增加内存。从 iPhone 4s 到 iPhone 5,苹果已经增加过内存了,所以 iPhone 5s 的内存跟 iPhone 5 一样,是 1GB 的 LPDDR3。现在可以预测 iPhone 6(或者 iPad 5)的内存可能会增加到 2GB。从内存寻址能力的角度来看,苹果最快也要到 2015 年才需要 64 位,但现在苹果把硬件的需求足足提前了两年。

  其实仔细想想,现在也是开始过渡到 64 位的时候了。最新的 Xcode 测试版和 LLVM 编译器都已经向 ARMv8 兼容。从 iOS 7 正式发布之后开始,所有的应用程序都是 64 位。到 2015/2016 年,苹果开始碰到 32 位寻址能力的烦恼,不仅仅是操作系统的过渡,还有大量的应用程序都已经为 64 位开发。所以说苹果这次不像是提前,他们一向能把握好时机。ARM 阵营的其他厂商明天才会用上 ARMv8。

  现在苹果的心思并不在扩大内存地址空间上。既然 A64 是一个全新的指令集,它还带来许多其他的好处。类似于 x86-64 的过渡,向 A64 的过渡也带来通用寄存器数量的增加。ARMv7 有 15 个通用寄存器,ARMv8/A64 有 31 个,而且每个都是 64 位的。所有 31 个寄存器都能同时访问。增加寄存器数量可以减少寄存器的压力,也直接影响着性能。

  ARMv8 还加倍增加了 FP/NEON 寄存器(从 16 个增加到 32 个),还增加了寄存器的位宽,从 64 位增加到 128 位。支持 128 位寄存器能长远改善 SIMD 性能。然而,单词加倍寄存器数量只能小幅提升性能,加倍增加每个寄存器的大小才能很大程度改善性能。

  ARMv8 还添加了新的加密指令,用于 AES 硬件计算和 SHA1/SHA256 算法。这些硬件 AES/SHA 指令具有大幅度提升性能的潜力,就像我们几年前在英特尔 CPU 看到的 AES-NI。新的高级 SIMD 指令和 AES/SHA 指令真正是设计来带动新一波的 iOS 应用程序。

  许多 A64 指令模式也可以兼容 32位运算,而 A32 执行状态也添加了新的指令,所以为 ARMv8 编写的 AArch32 应用可能无法向下兼容。不过所有 ARMv7 和 32 位 Thumb 代码可以在 ARMv8 正常运行。

  软件方面,iOS 7 以及所有原生应用都已开发兼容 AArch64。事实上,iPhone 5s 启动时都没有用到 AArch32。Safari、Mail,所有原生应用都已经是 64 位。

游民星空

  同时运行 A32 和 A64 应用的体验是流畅的,在实际使用中,你很难分辨出是同时运行了两种执行状态,还是只在 64 位运行。

  我在运行当前的 32 位 ARMv7 应用程序时没有遇到向下兼容的问题。从一位终端用户的角度来看,过渡到 64 位一点困扰都没有。

游民星空

64位性能提升:

  新的 ARMv8 A64 指令和更大的寄存器空间能给性能带来多大影响?首先我们看看整数运算性能

游民星空

  AES 和 SHA1 的提升是 ARMv8 新加密指令的直接结果。尤其是 AES 测试结果显示几乎达到一个数量级的性能改善。这种结果就跟我们在 PC 领域看到的英特尔 AES-NI 带来的提升一样。Dijkstra 的结果是唯一的后退。其他几项测试结果有小幅的提升。 总的来说,A7 在性能上已经很不错了。

  如果整数运算测试结果看起来不错,那么浮点运算测试的结果就更好了:

游民星空

  因为有了 DP SIMD,ARMv8 的 DGEMM 运算速度有了非常大的提升。同时,增加了的寄存器空间也使 SFFT 获得不小的提升。结论是?要运行 64 位绝对需要更大的内存。

A7 和 OS X:

  在测试 A7 性能之前,我曾猜测苹果率先迎来 64 位的移动芯片,唯一目的是为未来部署到更大的机器做准备。如果是在几年前,苹果与英特尔的合作关系会让我对自己的猜测深信不疑。不过现在我就没那么肯定了。

  老实说,苹果继续自主投资和开发 SoC 的原因是没人能胜任这份工作。直到最近才出现能跟苹果竞争的 GPU,而 A7 在 CPU 方面都已经相当于英特尔的 Bay Trail。不过在 Mac 方面,A7 跟 英特尔的 Haswell 还是有很大差距的。我不认为苹果能在短期内拉近移动芯片跟桌面芯片的距离,但是我们不怀疑未来苹果有这样的能力。

上一页 1 2 3 4 5 6 7 8 9 10 11 下一页
友情提示:支持键盘左右键“← →”翻页
游民星空APP
随时掌握游戏情报
code
休闲娱乐
综合热点资讯
单机游戏下载
好物推荐
游民星空联运游戏