在单核时代,Cortex A8架构是绝对的主流。作为ARM官方设计的产品,虽然Cortex A8和Cortex A9都基于ARM v7指令 集架构,但是它们之间依然有很多的不同点,其中最重要,也是用户最能感觉到的,是一项叫做乱序执行的功能。虽然Cortex A8和Cortex A9都 支持同时执行两条指令,但是只有Cortex A9支持乱序执行能力,这个功能究竟是什么意思?
我们知道,计算机程序,都是由一条一条的指令组成的。这些指令有很多种功能,有的是把数据从一个地方复制到另一个地方,有的是做数学运算,有的负责 判断某一个条件,有的负责从一处跳转到另一处。编译器会把所程序员写出的程序编译成一条一条顺序的指令,就像电器的使用指南一样,让处理器遵照它去做。为 了方便理解,我们假设一个程序的内容是做一份考试卷,执行的过程是先做完选择题,再做完问答题;做选择题的条件是要有铅笔去涂答题卡,而做问答题的条件则 是要有钢笔去写答题纸。
如果你忘了带铅笔,那么为了完成考卷,就必须要等到邻座的做完了选择题,你找他借来铅笔,才能继续自己的考卷,这样就耽误了时间。对于一颗标准处理 器而言,很多时候都会遇到这类“没有带铅笔”的情况,比如需要访问的数据在内存里,这就需要处理器通知内存管理器,让内存管理器去把数据调入处理器,才能 继续执行这一条指令。由于处理器内部的时钟延迟是纳秒级别,而内存的运行频率则有数十纳秒的延迟,两者之间差了许多倍,因此处理器一般需要消耗很长的等待 时间,才能继续开始工作,最终的结果就是性能下降。 这时候,乱序执行就派上用场了。一个程序的指令都是有严格的逻辑顺序的,但是所谓的
乱序执行,就可以打破这种原本的指令顺序,在逻辑允许的范围内以一种新的顺序去执行程序。如果继续用考试的例子,那就是这样:
虽然编译器生成的考试指南告诉你,要先做完选择题,再去做问答题,但懂得变通的人会在没有铅笔的时候先去做问答题,这样就节省了大量的时间。支持乱 序执行的处理器也懂得这样去“变通”,在遇到需要等待的指令时,如果后面的指令并不需要等待这条指令的结果,那么就可以先跳过这条指令,去执行后面的指 令,大大节约等待时间,提升程序性能。当然,乱序执行并不是没有条件的,它要求被乱序的指令之间不存在严格的相关性。例如
假设问答题里需要选择题的结果, 那么你就不能跳过选择题去做问答题,只能老老实实去等邻座的铅笔了。
OOO能有效节约指令的执行时间
那么回头来看看Scorpion核心。这个核心是高通在单核时代设计出来的,虽然也是基于ARM v7指令集架构,但在具体设计上属于高通自己的实 现,与Cortex A8相比有很多区别,其中最重要的就是高通为Scorpion核心引入了部分的乱序执行能力。所谓部分的,就是说在某些特定指令序列 下,Scorpion可以实现乱序的效果,Cortex A8则不行。在单核时代正是由于这点,高通的处理器核心在很多测试中的表现都要稍好于 Cortex A8,但是当双核时代来临后,大家都升级到了支持完整的乱序执行的Cortex A9核心,而高通则依然沿用老旧的Scorpion核心, 当年的优势就成为了现在的劣势。
不仅如此,在纯执行能力上,Scorpion面对Cortex A9也处于劣势。根据高通提供的数据,同样在1000MHz的频率 下,Cortex A8的执行能力为2000DMIPS(可以简单认为是每1周期执行两条指令),Scorpion比它要高一些,为2100DMIPS, 但是Cortex A9则高达2500DMIPS,领先Scorpion接近20%。虽然高通试图通过超频20%的方式弥补这个差距,但是在单线程性能 上,还是被竞争对手甩开了不小的距离,毕竟乱序执行的能力在很多应用中可以获得的性能提升远远不是这200MHz的频率可以弥补的,而且更高的频率也会抵 消Scorpion核心在省电上的特点。这点在后面的测试里也可以看出来。
英特尔给出的CPU性能参考
当然,Scorpion核心也不是没有自己的优势。作为高通自行设计的核心实现,它在一些方面有着超出ARM官方Cortex A系列的地方,例如 它的二级缓存是直接连在两颗CPU上,而不是通过AXI总线共享的,在带宽和延迟上有着自己的优势。但是整体而言,Scorpion作为上一代核心,在新 一代Cortex A9双核的面前还是显得比较孱弱的。 最后,我们给这些处理器的核心架构作个评分(考虑到默认频率): Tegra 2 ★★★★ OMAP4430 ★★★★ MSM8x60 ★★★ Exynos 4210 ★★★★★
较量项目二:处理器核心的协同作战能力
可能多处理器架构这个词对于不少读者而言都是很陌生的,很多人可能从来都没注意到过这方面的东西。所谓多处理器架构,就是说多颗处理器以何种模式共 同运行,以怎样的方式合作执行程序。在PC领域,这个概念并不重要,因为大家看到的多处理器(多核心处理器也可以看作制作在一个芯片上的多处理器),在逻 辑架构上都是一样的,那就是同步多处理器,英文为Synchronous Multi-Processors,缩写为SMP(不是对称多处理器的那个SMP)。但是在多处理器体系刚刚出现的阶段,曾经也有过很多不同的逻辑架构, 而在目前的手机市场上就恰恰存在着不采用SMP架构的多处理器,那就是高通的MSM8x60。
与SMP不同,高通所采用的架构名为ASMP,即异步多处理器架构。所谓同步和异步,差距并不是简单的两个字,在具体实现上的区别非常大。但是在此我们并不需要了解它们之间学术上的区别,我们只从最粗略的角度来看一下这两种架构的工作方式。