iPhone 5s 配备 64 位的 A7 芯片,对比 Android 阵营,这是绝对领先优势吗?

— 看到一堆不沾边的评论,忍不住写了点。

唉,你们就不能抽空看一眼 Apple A7 的所谓 64 位到底是怎么回事再来写吗?

ARMv8-A introduces 64-bit architecture support to the ARM architecture and includes:
64-bit general purpose registers, SP (stack pointer) and PC (program counter)
64-bit data processing and extended virtual addressing
Two main execution states:
AArch64 – The 64-bit execution state including exception model, memory model, programmers’ model and instruction set support for that state
AArch32 – The 32-bit execution state including exception model, memory model, programmers’ model and instruction set support for that state

简单点说,处理器的内存I/O和计算单元现在都可以在与32位时相同时钟周期内处理2倍的数据,如果软件优化得当,真正能发挥出这个优势,在其它条件相当的情况下是能有2倍的性能呀。

64位地址空间带来的大内存也是很有用的,想想在 iPad 上跑 iWork、iMovie 啥的,你在 iMac 上要多少内存才能耍得舒服呀?

事实上,除了上面这种直接由 32->64 产生的好处,在 64 位架构设计时都会引入新的执行模式,相对于 32 位保护模式,X86_64 的 Long 模式就大大简化了 CPU 的编程模型,这也有利于优化处理器硬件执行速度,软件层面的优化相对也更容易。ARMv8-A 的 A64 模式使用 32 位固定长度指令,指令解码表更为简洁,相信硬件实现上指令解码速度也会更快,对于 pipeline 的优化、甚至预取指令队列的命中率优化都有好处。

此外,ARMv8-A 的 A64 模式对于浮点处理和 SIMD 都做了增强,128位寄存器更多,SIMD 能做双精度运算等,利用得当的话,也能产生显著的性能提升。

另外,ARMv8-A 在指令集里直接支持 AES / SHA-1 / SHA-256 运算了。

我理解 ARMv8-A 其实是为服务器市场准备的,其绝对运算性能跟 X86_64 距离还很大,但是在低功耗条件下性能非常突出,用在 iDevice 上也算发挥强项了。单从硬件上看,ARMv8-A 在性能上确实有把 ARMv7-A 远远甩开的潜力。再加上 Apple 在软件上的优化能力,这个速度、能耗优势真是非常可观。

Android 移到 ARMv8-A 是迟早的事儿,不过要内核、驱动都跟上,系统库稳定下来,主要的开发者跟进,这时间就长了。

所以,是绝对领先优势吗?目前,是的。

Leave a Reply

Your email address will not be published. Required fields are marked *