64 位移动处理器在 2013 年首次亮相,而苹果 iOS 系统则是首个支持 64 位计算的移动操作系统。有意思的是,从最近的消息了解,苹果将有可能在 iOS 11 正式放弃对 32 位应用程序的支持,正式完成对 64 位生态系统的完全过渡。其实这是 iOS 10.3 测试版一个错误信息无意间爆的料,当用户尝试运行 32 位应用程序,系统竟然告诉用户无法在未来版本中运行,开发者需改进适配,正是这点让人浮想联翩。在 iOS 平台上,苹果已经不止一次提供类似的暗示了,并非常希望开发者仅提供 64 位应用程序。例如说,去年年底的时候,苹果从 App Store 移除了一定数量应用程序,理由是不兼容,并向开发者发送电子邮件,提醒他们应用程序开发必须以 64 位为基础。 通常来说,我们不太会在意系统或手机是 32 位还是 64 位,毕竟新设备总是能够同时兼容 32 位和 64 位应用程序。但是,考虑到苹果总是能对谷歌移动生态系统产生一定的影响,就有必要来讨论一下,为何苹果要做出这样的举动,而 Android 是否应该效仿。
32 位和 64 位首先要简单的了解一下 32 位和 64 位的背景。32 位和 64 位一般是指 CPU 的通用寄存器位宽,相对于 32 位而言, 64 位的 CPU 位宽增加一倍,使其能够处理更多更精确的数据,因此有一定加快数据处理的作用,特别是负载的情况下。再通俗来讲,32 位和 64 位就是四车道和八车道的区别,在拥堵的晚高峰,八车道速度显然更快。 当然了,64 位可寻址范围大大扩展,32 位系统最大支持内存为 4G。另外,32 位系统和 64 位系统需要安装支持相应软件模式下的操作系统和驱动软件,也就是 32 位只能安装 32 位,64 位安装 64 位的软件,但可兼容 32 位运算。 回到 ARM 处理器的话题上。ARM 从 32 位 ARMv7-A 到 32 位 / 64 位 ARMv8-A 的转变过程中,引入了大量的新指令以便增强功能,也就是 AArch64 指令集。但为了保证 ARMv8 能够向后兼容,AMR 在架构设计上仍保留了现有的 AArch32 和 Thumb-32 指令集。虽然这就意味着 CPU 核心管线部分需要进行更多设计,占用更多极其有限的芯片空间,但确保了这些传统指令也能够与新硬件一起工作。 需要注意的是,单个应用程序使用过长中,完全不可能同时使用 ARMv7 和 ARMv8 两种执行状态,因为 AArch64 与 AArch32 和 Thumb-32 指令集之间没有任何交互操作。因此,直接以 AArch64 指令集和 ARMv8 处理器为基础编写的应用程序,无法在 ARMv7 Cortex-A 系列处理器上运行。不过,以 ARMv7 Cortex-A 处理器为基础编写的应用程序,仍可以在 ARMv8 处理器上运行,毕竟可通过保留的 AArch32 和 Thumb-32 执行状态运行。 其实说白了,如果苹果真那么做的话,像 iPhone 5 这款以 ARMv7 处理器为基础的机子,将无法升级到 iOS 11 操作系统。
苹果为何执意转向 64 位苹果放弃对 32 位应用程序的支持表明,未来将完全拥抱 AArch64 执行状态,其硬件处理器和软件 iOS 系统,还有应用程序的设计,所有都将只适用于 AArch64 指令集功能。好处自然不少,包括更大的寻址范围支持更大的内存,简化汇编程序,双精度浮点及更先进的 SIMD 运算,以及高达 3 至 10 倍的加速硬件加密性能等。 不过,开发者和开发商将无法再使用 AArch32 和 Thumb-32 指令集,因为必须更新应用程序。当然了,除了迫使开发人员利用全新 64 位架构的最新特性之外,这也十分有利于苹果更出色的完成下一代 CPU 的设计工作。苹果有出色的芯片设计团队,而且一直在规划放弃对旧架构的支持,完全可以借此尽可能多地释放芯片空间,降低制造成本,或者将释放的空间加以利用,加强 CPU、GPU 及其余部分,或引入更加先进的一些功能。 我们不清楚苹果如何设计下一代芯片,或许会是为 64 位进一步优化 CPU,而不一定是全部转为 64 位,保留部分传统硬件所需的 32 位指令,不会强行破坏与 ARM 签署的许可协议。因为 ARM 通常要求基于其授权架构的 CPU 设计,务必支持全部指令集,若遵守这一规定的话,苹果的芯片同样需要保留对 AArch32 和 Thumb-32 的支持,如此一来才能通过 ARM 的一致性测试。 不过,ARM 自己提倡灵活性设计,例如 Cortex-A32 就是基于 32 位版本的 ARMv8 架构设计,没有十分明确哪些指令集是强制性要求,这就相当于留给苹果更多的发挥空间。
那么,Android 阵营应该跟风?有利有弊,而且也并非完全不可行,若是基于上述相同的原因,只要谷歌和智能手机芯片开发商(如高通和联发科)联手,软件和硬件上共同合作也能实现。但不可否认的是,Android 生态圈比苹果大很多,分布有大量不同的硬件配置,若立即执行同样的转变相信很难迅速组织起来,甚至在此过程中可能被迫中断。 尽管如此,理论上谷歌也可以从软件方面做类似的事情,强制要求所有 Google Play 商店的应用程序转移到 64 位版本。不过,这同样需要一个长期的过渡时间,虽然今天入门级的智能手机和平板电脑都已经装备了 64 位 处理器,但是依然依赖于大量的 32 位应用程序,而且真正完美兼容 64 位指令集的并不是很多,一旦放弃向后兼容后果不堪设想。 讲真的,Android 生态圈完全迁移到 64 位不太靠谱。例如说,许多 Android 车载娱乐系统仍基于 ARMv7 处理器打造。再看智能手表,包括华为、索尼和 LG 的手表,均搭载了 32 位的 ARM Cortex-A7 处理器设计。另外,谷歌最近公布的 Android Things 物联网平台,其开发板的芯片也并没有兼容 64 位的应用程序。 那 Android 阵营没办法全面过渡到单一的 64 位计算了?并非如此,只是可以预见,未来 Android 依然提供 32 位的支持,这是最两全其美的解决方案。
|