处理器实测评估新论文

从此前网站搬运过来的,原始发布时间是2014年8月28日

8月25日的时候,extremetech上贴出来一篇文章,是介绍Wisconsin大学的一篇处理器性能/功耗对比评估的paper(目前我不能从IEEE、ACM以及google scholar上检索到这片文章。从介绍来看,我觉得该文章就是发表在2013年HPCA会议上的那篇论文的后续工作)。Wisconsin这个组工作做的非常细致,但与我们的工作相比,还是存在一些差异的:

  • 评估方法:Wisconsin的系列论文都是走实测常见benchmark的路子,没有涉及针对处理器微结构探索的成分,所以局限在评估上。我们的工具一方面可以对现有处理器流水线结构和微架构做研究,另一方面还可以通过解析模型实现快速的架构设计空间探索工作;
  • 评估对象:Wisconsin团队主要针对ARM Cortex-A系列处理器和Intel/AMD的高端-嵌入式处理器。而这篇文章还引入的龙芯2F作为对比对象。此外,Wisconsin评估的软件benchmark主要是传统的处理器性能测试集,而我们是针对Android应用的。
  • 评估指标:Wisconsin主要关注性能、功耗和能效比。我们在此之外还关注软件算法的设计与优化,也就是说如何在固定处理器硬件架构上更好的设计软件框架。

下面我们根据ExtremeTech上这篇文章具体分析下Winsoncon团队的新成果:

微结构参数

下面是该论文评估的SoC平台,包括Intel Atom系列、ARM Cortex-A系列以及龙芯2F系列处理器为核心的SoC。覆盖较全,但遗憾在于:没有对兼容ARM指令集的高通、苹果以及NVidia处理器的对比,也没有对MIPS官方处理器硬核处理器以及君正jz47xx系列处理器的分析。

Table2-640x333.png

这里提到了我们此前关注过的ARM Cortex系列revision版本之间差异的问题:其中A9已经到了R4版,A15也已经到了R3版。但就我了解不同版本之间性能的差异主要还是体现在后端设计上,也就是更好的关键路径控制以及功耗控制。对于微架构本身的调整可能并不多,前端设计的更新也主要是修bug(比如早期A9的PMU模块bug)以及配合后端优化的逻辑调整。

实验设置与建模

被测的benchmark来自于CoreMark、Webkit和SPEC。实测评估方法上,Wisconsin仍然延续了:功耗数据在SoC级别实测获取,性能数据依赖于多种profling技术的方案。OS支持方面,上述处理器的评测平台都是基于Linux 2.6 LTS,当然各自会有不同的patch(唯一的区别在于A15的OS,由于存在兼容性的问题,A15的Linux kernel选择的是Linux 3.8)。GCC均选择4.4,并配合O3的优化选项,并关闭所有架构相关优化参数。由于被测程序均没有大量SIMD指令,所以实验中使能了自动矢量化编译器优化。

实测结果

执行时间对比

ExecutionTime-640x377.png

小结一下上面的数据:从执行时间上看:

  • A8的顺序执行模式对IPC的影响非常显著,此外A8没有硬件浮点单元,使得其SPEC FP测试程序被甩开了一大截;
  • A15性能非常惹眼,综合性能已经超过AMD x86架构的Bobcat,特别是在Mobile和SPEC浮定点测试中。此外,A15与Atom的竞争也非常有价值,我们看到除了浮点测试以外,顺序执行版本的Atom同样表现出非常有竞争力的性能(不知道Atom通过什么架构能够做到,想到了Tegra K1 Denver的做法,一身的冷汗);
  • A9的性能居于中游,符合其2发射的中端超标量处理器定位。将其与A15对比,就能很清楚的看到:流水线宽度的增加,以及相应微结构队列入口数目的提升,的确可以大幅增加系统的IPC,从而提升SPEC浮定点性能。从这点看来,至少到宽度为3的时候,指令集并行度的可挖掘度还没有被完全开发出来;
  • 龙芯2F的表现相当的悲剧。除了Mobile测试之外,大部分测试都表现出比A15差2-3倍的性能。特别是龙芯2F的浮点成绩相当糟糕。

平均功耗对比

AveragePower.png

上面数据是以A8的平均功耗做归一化的。从上面的数据中,我们也能看到不少非常有意思的现象:

  • A8的平均功耗显然是最出色的,但这是以顺序执行模式换取的,性能的损失非常明显。但对于全志A10这种level的平板SoC而言,A8的低功耗还是存在价值的。我个人觉得未来穿戴式处理器可以回归到顺序执行的A7处理器,因为此类应用中,计算密集型的任务显然不会有手机、平板那么丰富。相反,更多的小核(顺序处理器)不但可以进行更为精细的低功耗处理器,而且还能够充分发挥多核对数据并发度、数据依赖关系交叉的渲染类任务的能效比优势;
  • A9的优势一目了然。A9配置的非常窄的超标量流水线宽度,仅需要40个ROB的支持,提供了效率比非常高的乱序执行效率。也就是说,抛开执行性能来看,受限的乱序执行资源并不会显著提升处理器的性能(当然,其中很可能也有后端工艺优化的贡献)。A9相对于Atom而言,其平均功耗也仅为后者的1/2~1/3,也就是说不能简单的认为乱序执行就一定比顺序执行更为耗能;
  • 龙芯2F与Atom在同一水平。其原因我觉得主要还是在工艺上,也就是其90nm的过时工艺对功耗的开销非常不利。如果从工艺特征尺寸对功耗的scaling效应来说,当2F以45nm工艺实现的话,其功耗很可能降低50%以上。那么其表现将大幅超过Atom。考虑到2F采用了较为激进的4发射结构和512KB的L2 Cache设计,我觉得从功耗角度将2F的架构还是不错的。

裸能耗功耗对比

裸能耗与平均功耗不同,前者还需要考虑完成某项任务(benchmark)的执行时间。是瞬时功耗在时间轴上的积分,因此更能反映处理器的真实电能开销。

AverageEnergy-640x325.png

从上述数据可以看出,一旦同时考虑了性能和平均能耗之后:

  • A9的优势仍然非常明显。不得不说A9选择的受限超标量乱序机制的确可以大幅降低系统完成相同任务的能耗开销。特别是Mobile和SPEC INT两项测试上,A9优秀的平均功耗表现让其获得较大的优势;
  • A15开始失去了其领先价值。本身A15的设计就是偏激进的,但从能耗的角度讲,其表现还是非常显眼的,由于其性能上的巨大优势,弥补了平均功耗上的不足。特别是:未来工艺进一步磨合会带来更为出色的能耗。从这个角度来看,我还是坚持我此前的看法:A15并非是一款失败的产品,而是ARM走向64-bit高性能嵌入式计算的必然铺路石;
  • A8仍然处于中游。目前A8基本上没有新的SoC采用了,所以我们应该更关注A7与即将推出SoC的A14;
  • 龙芯2F表现相对来说就比较差了。当然问题还是出在其90nm的工艺上,设想平均功耗按照工艺scaling能下降40%-50%,则龙芯2F的裸能耗指标应该由于A15,但略逊于A9。

性能-功耗权衡

PowerPerfTrade.png

上面这张图是从性能-功耗的权衡角度考虑的。可以看到Intel的I7由于其高性能的激进设计,在性能和功耗两个维度上都远远区别于其他所有嵌入式处理器产品。而嵌入式处理器产品中,可以认为位于(1BIPS, 3W)点以内是比较合理的取值。如果按照上述标准,显然A15就有些过了,但由于配置了A15的高性能SoC普遍会采用先进的DVFS技术,使得其性能-功耗曲线在普通应用条件下,大幅向右下角偏移。因此对于普通消费者而言,绝大多数情况下是不会体验到如此高昂的能耗代价的。

ISA的意义

ISA对于面积要求极度敏感的处理器(裸die在1-2mm2)或者典型功耗为sub-millwatt级的处理器而言,至关重要。此时RISC明显会由于CISC架构的ISA。除此之外,我们就需要进一步分析ISA对于处理器性能、功耗的实际意义了。

  • CISC架构之所以如此强调复杂的多周期指令,是因为访存操作巨大的延时。RAM的成本将使得系统其他部件的成本忽略不计(这是x86处理器刚刚出现时期的现象,目前显然已经完全不同了,DRAM的价格极其低廉)。
  • 而RISC处理器则由于其降低了设计的复杂性,所以理论上可以把主频飚上去,但现在看来这也发生了变化。无论CISC还是RISC,目前都受限于工艺,也就是硅基半导体面临的物理极限。

从现在的情况看,无论是RISC还是CISC的处理器,其微结构设计都已经开始趋同。从Wisconsin的研究paper看来,由于存在编译器的选择以及优化,不同ISA架构下,执行相同的源码,其动态指令的数目存在非常大的区别。Wisconsin团队认为这是由于分支预测以及cache缺失的不同引起的。

InstructionMix-640x380.png

从上图中,我们就能看到:在执行Tonto和bwaves这两个benchmark时,ARM Cortex系列处理器相对于x86处理器而言,会执行更多的动态指令。而龙芯2F的MIPS32指令集相对来说就还比较正常。但也赶不上x86架构的指令密度以及微结构设计效率。这个角度以前我并没有考虑过,原因是我们自己的研究过分关注ARM Cortex-A系列自身微架构的调整,而缺乏对于其他架构的对比。

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s