本文试图从处理器的效能功耗比方面分析软件和硬件的决定因素,对于A7芯片是否将改变手机软件的性能,我们拭目以待。
今天有传闻说下个月即将发布的iPhone 5S将采用苹果自主开发的A7处理器,双核,64位,运行速度会比iPhone 5快31%。当人们不断YY下一代iPhone的时候,让我们来看看苹果的软件硬件的生态圈和系统芯片的发展。
苹果最大的一个优势就是自主研发的策略,它从来不会去使用或者购买其他的标准应用处理器,相反却更加专注于应用/服务结构的设计,不会为了兼容其他处理器而折衷。我们可以拿高通的骁龙处理器做对比。数以千计的Android设备都使用骁龙处理器,所以它会在兼容性上考虑很多,而使用苹果A7处理器的设备,最多也就是iPhone、iPad、iPod和iTV,这样苹果就可以去掉更多平台兼容方面的累赘考虑,从而兼顾更多的功能,比如DSP(数字信号处理器)或者图像性能等iOS擅长的方面。
那A7是2核还是4核呢?
现在多核的结构一般有三个主要的决定因素:省电,性能和系统/内存带宽,但对于手机平台来说,效能功耗比(performance per Watt)才是重点。形象点说,多核处理器就像是用4个不同的锅在4个不同的灶台上做饭,相比只使用一个大锅,4个小锅可以让厨师更方便地准备配料,厨师也可以关闭其中几个灶台来省燃气。
软件就是权衡点。A7芯片不仅要管理好各核之间的交流,并且要决定哪些代码在哪个核上进行编译和运行。这个过程会根据软件内部的复杂程度不同而变化。标准的软件设计都没有很好地解决这个内部问题,事实上,大家都知道软件的并行性(software parallelism)一直是现在计算设计领域一个最大的挑战。
这些存在于软件栈结构的挑战,也一直在影响着app的设计、测试、优化和API设计。在操作系统层上开发者必须考虑如何有效地结合驱动器和应用程序,如何在多核的结构里合理地分配空闲堆栈,这些才是赢得效能功耗比之战的关键。
比如Facebook的iOS app,它使用一个主要的线程来驱动UI和管理复杂事件,而使用另一个线程在后台管理计算复杂的任务,比如网络活动和JSON语法解析,但都不会影响到UI驱动线程的速度。
所以可以说不同的核管理不同的线程,而代码不会自己根据处理器芯片的设计自动编译。在操作系统和芯片/驱动器堆栈结构方面,越好的编译器和API设计,越能让开发者优化出更高的效能功耗比。Facebook想要开发更高效的代码,所以他们非常需要一个象具有A7芯片性能的手机平台。
虽然我们也知道苹果在服务提供上并不是最好的,并且它服务市场的份额正在被Google、Spotify、Dropbox等蚕食,但在操作系统层面的硬件/软件设计上,苹果绝对是第一。所以不管是双核还是4核,32位还是64位,对于iPhone 5S和A7芯片,我们可以肯定的一点是苹果都有它的道理,开发者就是喜欢使用苹果的工具,这些优势,相比于Anroid服务层(service-layer)的问题,还是会让苹果在下一代手机平台的性能上处于领先地位。