苹果Apple Watch智能手表芯片S1详细解析
2015-07-21 22:05:55 cnBeta很多Android Wear 手表使用的都是调制解调器的高通 Snapdragon 400 芯片。而 A7 芯片从散热设计功耗的角度来说是适合智能手表的。Android Wear 手表的电池容量大约为 400 mAh,可续航 1-2 天,但是对于市场来说这些手表太大,这种时候就需要特别针对智能手表的外形和大小设计的 SoC 片上系统。
对于 Apple Watch S1 芯片,目前还没有合适的跑分测试工具,但是从这款设备的拆解我们可以看到,该 SoC 使用的是三星 28nm LP 制程,使用的只可能是 HKMG 或 poly SiON 栅极结构。选择不同的结构功率效率也会不同,因为 HKMG 制程的漏泄功率更小。和使用 20/14nm 制程的成本相比,这两种制程的成本差异并不大,另外参考 TSMC 在 Snapdragon 600 和 800 芯片上从 28LP 制程换成 28HPm 后对电池续航的影响,基本可以确定苹果的这款芯片使用的是 HKMG 制程。
我们也已经知道二进制文件是为手表的 ARMv7k 处理器进行编译,可惜目前关于该指令集架构并没有相关记录。watchOS 是在 iOS/Darwin 的基础上开发出来的,也就是说为了获得存储保护和关键抽象,比如虚拟内存,它需要内存管理单元MMU,这就排除了使用像 ARMv7m 这样的 MCU ISA 的可能性,我们猜测苹果使用的可能是衍生的 ARMv7-A,精简掉不必要的指令,以减小功率消耗。
至于设备的 GPU 就不那么神秘了,从出现在 Apple Watch 中的 PowerVR 驱动器来看,S1使用的可能是 PowerVR Series 5 GPU,具体哪款尚未清楚,有可能是 PowerVR SGX543MP1。不过我更倾向于 PowerVR GX5300,因为它是特别针对穿戴设备优化的 GPU,使用的驱动器也一样。但是不管怎样,在 watchOS 2 到来之前 Apple Watch 都无法原生运行应用这一点来看,我们目前能够深入挖掘的东西很少,而且即使 watchOS 2 发布,图形跑分可能还是不好测试。
接下来我们可以来了解一下 CPU 的分级存储器体系,对于需要优化以确保代码能有足够时间和/或空间局部性来保证代码性能的应用来说,这是一项非常重要的信息。
如图所示, 在 DRAM 28KB 和 64KB 之间有一个非常大的波动变化,因为我们已经清除了 L1 数据缓存的本地最大值,我们基本可以确定 L1 数据缓存大小为32KB,目前市场上很多产品的 L1 数据缓存也在 32 和 64KB 之间。而在 224KB 左右的地方再次出现大变化,我们也可以确定 L2 的数据缓存为 256KB,和目前大型智能手机 CPU 的 1-2MB 共享缓存相比小了很多,但是和 A5 或者 A7 相比则恰好合适。
Apple Watch 的 CPU 最大频率是520 MHz。我们接下来看看它的架构。在关于整数运算这方面,整数添加延迟是一个循环,而整数乘法延迟则是三个循环。但是因为流水线整数乘法的吞吐量能输出一个时钟周期结果。同样的比特移位需要两个周期来完成,而吞吐只需要一个时钟周期。乘法和加法交错吞吐量将只有一半。我们可以猜测这是因为整数加法 block 和整数乘法 block 相同,然而这并没有什么意义,因为从逻辑层面来说,加法和乘法区别太大了。
从数据类型的角度来说,整数只是一个因素,还有布尔值、字符、字符串和不同大小的整数,但是说到十进制,应用程序仍然使用浮点来编译。像这款低功率 CPU,浮点通常比整数慢,因为浮点运算的相关法则比较复杂。
如果你打开的网页的延迟和吞吐时间是针对 Cortex A7 的,你可能猜测它是 Cortex A7,那你可能就猜对了。同时加载存储意味着这些是 XOR 运算,不能以平行方式执行。乘法运算和加法运算也是一样。虽然 Cortex A7 和 Cortex A5 有相同点,但也不能说明为什么可以每时钟周期可增加两次立即值/恒定值和累加寄存器。
从这些数据我们可以确定它就是单核 Cortex A7。虽然只是 Cortex A7 但是最大时钟速度较低,也就是说逻辑设计上相比性能他更重视功率效率。标准电池可以利用某些技术和风格,这些技术实际会影响 2+ GHz 芯片的性能,但是却非常适合使用在 520 MHz 芯片中、从衡量能源效率与性能的角度来说,Cortex A7 是一个有利于 perf/W(Performance per Watt,每瓦性能)的设计,因此我认为未来关键的不同点将在于执行方法,而不是架构。虽然我也希望 Apple Watch 能够使用更为先进的制程,比如 14LPP/16FF+,但是在 Apple Watch 第二代或者第三代出来之前基本都没有这种可能。