华为海思Kirin 960芯片:细看其性能与功耗
2018-06-06 06:10:37 来源:网络整理 作者:秋军
写在前面
趁着这波华为P10闪存事件的火热,咱来说说华为最新的麒麟960芯片。这篇文章是编译自AnandTech——其实一两个月之前就已经开始翻了,不过工作很忙一直到今天下午才搞定。
之所以编译海思Kirin 960芯片评测,倒不是因为华为最近站在风口浪尖,而是这颗芯片的确在某些方面表现得很有趣。因为Kirin 950被证明是华为历史上最成功的SoC——尤其是950能够以最高频率(两颗大核心)持续几乎无限制运行,说明其最高频率甚至都没到热平衡拐点,这是不多见的。
Kirin 960如何也就更让人更期待了。这篇文章很长,虽然并非纯技术流,看完全文依旧需要耐心。这里总结几个有趣的点:
1.Kirin 960总体性能肯定是比950更好的,但效能相对差了点。不过两颗大核以最高频率依旧能坚挺十几分钟,虽然比不上950,但也算十分优秀;
2.Kirin 960的功耗更高,这有点奇怪,因为A73核心理应比A72更省电才对;具体是什么原因,请从文章中找;
3.Kirin 960虽然功耗更高,但是Mate 9这款手机的续航表现却比Mate 8更好,所以很有趣;具体是什么原因,请从文章中找;
4.Kirin 960的Mali-G71 GPU性能综合表现达到或超过骁龙820/821的Adreno 530;
(补充:针对这一项,我这里提醒一下,仔细看成绩就会发现,峰值性能下Kirin 960的GPU是以骁龙821 GPU的两倍功耗才换来了接近的帧率。但以更低功率运行时,Kirin 960的GPU性能表现也并不差,且其实际游戏中的性能稳定性表现也是不错的,虽然的确还是以更高的功耗换来的。)
5.但Kirin 960所用的这颗GPU,被AnandTech认为是他们评测过有史以来效能最差没有之一;且马力全开时的功率高到离谱;
就我个人观点,海思在Kirin 960之上是付出了看得到的努力的,即便可能由于工艺制程,以及为了飙峰值性能而存在一些问题,但其各方面的努力和表现都不该被一言带过。而且海思的处理器从早年的性能孱弱到如今,已经有了飞跃式的进步,海思已非当年的海思。最后再说一句:Kirin 960采用16FFC工艺可能并非海思所愿,引用一句高人的话,能让台积电叫爸爸的就只有苹果而已,更何况还有高通这个大客户在,Kirin 960只能在妥协中求生。
另外我也期望借这篇文章让更多对手机感兴趣的同学能够进一步沉迷到数据和理论的世界中。需要指出的是,译文对“效能”和“能效”这两个词进行了混用,表达同一个意思,即能耗的效率。但请注意,能效(Efficiency)需要与“能耗”(或功耗, Power/Energy)和“性能”(Performance)进行区分。
原本我想对各部分评测项作更为详细的一些解释,但实在没这个时间就作罢了。值得一提的是最新的华为P10也采用麒麟960 SoC,不过这篇Kirin 960的评测仅基于Mate 9——考虑到Mate 9的屏幕也明显更大,P10可能未必会有Mate 9这样的CPU稳定性表现。
以下是这篇文章的全文编译,文章原标题:《HiSilicon Kirin 960: A Closer Look at Performance and Power》 。如有编译错误,还请不吝指教。

海思Kirin 950对于华为来说的确是个出色的产品,不少华为旗舰手机都用上了这了95x SoC,包括Mate 8、P9和P9 Plus,以及荣耀8。其big.LITTLE组合方式包括四个A72与四个A53 CPU核心,采用台积电的16nm FF+ FinFET工艺制程,在性能和功耗方面表现出色。可以说,这是我们所见ARM IP实现最棒的产品之一。
950这么成功,我们也就很想知道Kirin 960的提升究竟如何了。我们在针对华为Mate 9(首款采用Kirin 960芯片)的测试中提到了它与Mate 8及其Kirin 950 SoC诸多方面的对比。在这篇文章中,我们会再做挖掘,回答一些遗留的问题:A73、A72和其他CPU核心之间的IPC(IPC是指每一时钟周期内执行了多少指令)对比如何?A73微架构变化对于存储性能有着怎样的影响?CPU效能是否提升?新增的GPU核心功耗如何?

Kirin 960是首款采用ARM最新A73 CPU核心的SoC,而Kirin 950先前也是首款采用ARM A72的SoC。其CPU核心频率相比Kirin 950略微提升:四个A53核心从1.81GHz提升到1.84GHz,四个A73核心则从(先前A72的)2.30GHz提升到2.36GHz。其最高频率相较Kirin 955 A72核心的2.52GHz要低,比ARM针对16nm设定的2.8GHz也更低。海思如此限制CPU频率的选择很有趣,也很慎重,这大概可以让GPU规模更大。
我们先前已经深度探讨了A73微架构,这里只对其中的一些重点进行总结。A73源自A17,并不属于A15/A57/A72 Austin家族。也就是说,A72和A73之间有着更为本质的区别,而并非只有小幅更新,尤其是在CPU前端。
最大的不同在于decoder(解码器)带宽缩减,相较A72的3-wide变成了2-wide。从纸面上来看这似乎是个降级,不过A72的取指块未能持续令decoder工作满载,所以A73缩减指令解码阶段对实际性能的影响可能并不会很大。
在许多情况下,A73的指令分配吞吐实际相较A72有提升。A73更短的流水线减少了前端延迟,针对decoder少了1-2个周期,解码绝大部分指令只需要1个周期,取指阶段不到1个周期。L1指令缓存在尺寸上翻倍,针对更佳的吞吐做了优化,取指块的改进能够减少指令Bubble。ARM还说A73采用全新的、更为准确的分支预测器,以及更大的BTAC(分支目标地址缓存)结构和用于加速分支预测的64-entry "micro-BTAC"。

另外前端还有其他的一些变化,所以总的来说A73相较A72已经有了不小的变化,两者采用的也是不同的设计理念。Austin家族(A72)以工业和低功耗服务器应用及移动领域为目标市场,而A73则特别着重于移动市场——power和area在设计中都有着更高的优先级。ARM表示,A73相比A72(相同工艺、相同频率)功耗低20%-30%,至多变小了25%(相同工艺,相同性能目标)。
至于Kirin 960的GPU,海思显然更着力于其性能。其前代SoC,如Kirin 950/955,都由于采用四核Mali而饱受诟病,三星Exynos SoC采用八核乃至十二核Mali核心,高通则为其Adreno GPU注入了更多的ALU资源。这其实不应该被过度苛责,因为Kirin 950的Mali-T880MP4 GPU是能够胜任绝大部分游戏的,而且是以可接受的帧率;实际上Mate 8(Kirin 950)、三星Galaxy S7 edge(骁龙820)以及Galaxy S7(Exyno 8890)在到达热平衡状态(译者注:就是稳定状态)时,彼此之间的实际性能差异是很小的。
不管是否为了回应那些批评的声音,还是为了针对VR/AR这样的未来场景做准备,海思极大增强了其Kirin 960的GPU峰值性能。Kirin 960不仅是首款采用ARM最新Mali-G71 GPU的SoC,其峰值频率已经达到1037MHz,相较950更小的GPU高出15%,核心数增加到8个。

Mali-G71采用ARM最新的Bifrost微架构,从先前依赖于ILP(指令级并行)的SIMD ISA,转向了当代桌面GPU架构那样TLP(线程级并行)的标量ISA。这里不打算做深度讲解,不过总的来说,这种变化实现了shader核心的优化利用,增强了吞吐和性能。ARM先前的Midgard微架构需要从一个单线程释放4条指令,并同时执行获取单个shader核心的完全利用——要持续如此是有难度的。相较而言,Bifrost能够在一个shader core之上将4个独立的线程组合起来,从每个执行一条单线程,这与当代图形和计算负载需求更为吻合。
我们已经了解了Kirin 960的设计初衷——期望CPU获得更高的效率,GPU则提供更出色的峰值性能,另外我们也对海思在硬件方面的变化做了些总结。接下来就一起来看看Kirin 960相比950/955与其他SoC,在性能与功耗方面的表现究竟如何。
CPU性能
首先通过一些合成测试(synthetic test)来看A73的整数和浮点运算IPC。随后我们再看看存储(memory)系统的变化是如何影响其延迟和带宽的。最终,在完成更低级别的测试之后,我们会看到华为Mate 9及其Kirin 960 SoC在跑真实负载的时候又是如何。
首先用SPECint2000来看A73的整数运算性能,SPECint2000是SPEC CPU2000基准测试的整数运算组成部分,由Standard Performance Evaluation Corporation公司开发。这份单线程测试成绩,可让我们对比竞品CPU微架构的IPC。下面这些得分不能作为很正规的参考数据,原本需要SPEC的监督,不过我们尽量选择合适的测试,令测试通过我们的内部认证。

SPECint2000测试得分,括号里的数字表示Kirin 960在这项测试中的成绩相较相应处理器更优或更糟百分之多少,以下同
Kirin 960的A73 CPU相比Kirin 950的A72平均快了11%。除了前文探讨前端改进,和接下来会提到的存储系统改进,A73的整型流水线也做了一些调整。A72有3个整数ALU,其中两个简单ALU,针对基本运算,例如加法和移位;还有一个专门的多周期ALU,针对复杂运算,如乘法、除法和乘法累加——而A73仅有2个整数运算ALU,负责基本和复杂运算。这对性能存在多方面的影响。比如说,A73的其中一个ALU处理除法时,仅有一个ALU能够处理乘法,所以如果执行乘法或者除法的话没什么大问题;不过如果一个ALU被一个多周期指令占用,便不能像A72专门的流水线那样执行简单指令了,这会造成性能方面的损失。乘法累加运算则要求A73的两条流水线,导致类似的性能损失。但也不尽然,执行并行运算或者采用某些其他复杂指令的工作负载,A73之上可能会产生相较A72双倍的执行吞吐。
需要注意的是,上面这张表并没有考虑到CPU频率方面的差异。Kirin 960的频率相比Kirin 950和骁龙821的优势不到3%,所以这个数字还是比较好比的,但和Exynos 7420比起来频率就高出12%了。下面这张表即消除了频率方面的差异做对比,将SPECint2000得分除以CPU频率,令IPC对比更直观。

每MHz的得分情况,分数更高越好
抛开A73和A72在微架构方面的实质性差异,A73的整数IPC只比A72高了11%,这应该是改进和妥协双方此消彼长的结果。假设ARM宣称的功耗降低是真的,那么这个结果就不差了。
而A73和A57之间的差距就增加到了29%。高通自己的Kryo核心整数性能落后于ARM A73和A72核心,和A57的IPC类似。

升级版Geekbench 4有了新的整数运算测试项目。和SPECint2000结果类似,我们看到Kirin 960相比Kirin 950在多个测试项中表现出5%-15%的提升,但无法一概而论。Kirin 960实际上在某些测试中比Kirin 950更慢;在Canny和直方图均衡(Histogram Equalization)测试项中,A73甚至比Exynos 7420的A57还要慢。在JPEG、PDF渲染(PDF Rendering)和相机测试(Camera)中,也落后于高通的Kryo。Kirin 960表现不错的项目HMTL5 Parse、HTML5 DOM和SQLite都是比较普通的工作任务,在真实使用中应该会有不错的表现。

上面这张图考虑到了CPU频率方面的差异,要直接比较IPC会更直观。总体看来,在这组任务中,A73相比A72仅提升了4%,相比A57则提升了12%——相比SPECint2000略低。不过从不同幅度变化来看,从Dijikstra的33.5%到Canny的16.1%,很难笼统地说A73的整数运算性能比A72好或差。
高通Kryo CPU虽然在不少Geekbench整数型测试项中有不错的成绩,但再度落后于A57。其总分受到了LLVM和HTML5 DOM悲剧性能表现的影响。
其中也加上了ARM A53的成绩——A73的整数IPC总体高出1.7-2倍,这就解释了为什么相较有2-4个大核心(A73/A72/A57)的SoC,八核A53 SoC要慢得多,尤其是在网页浏览的时候。

除了SPPF和Speech Recognition测试项例外,Kirin 960在Geekbench 4的浮点运算方面相比Kirin 950略慢。这就有点奇怪了,因为ARM宣称,A73的NEON执行单元相比A72的设计几乎没什么变化,特定指令减少延迟,提升NEON性能5%。另外考虑A73前端延迟更低,而且还提升了读取块和存储子系统,这个结果就更奇怪了。有可能是,部分测试得分受到A73解码阶段缩减的影响,不过测试都比较复杂,所以不能一概而论。不知其他SoC厂商的A73实施方案测试结果是否也会如此。

如果考虑CPU频率,Kirin 960的A73浮点IPC总体相较A72弱了3%-5%,但比A57强大约3%。这个成绩是各浮点子项得分取几何平均数,还是符合预期的。
在浮点运算表现方面,高通定制的Kryo核心显然是很抢眼的。虽说整数IPC都还没有ARM的A57出色,但在Geekbench 4中浮点IPC比A72高23%,尤其在Gaussian Blur和HDR测试项中有很强的表现。
存储性能
ARM在A73的存储系统(memory system,译者注:需要指出,memory并不是指内存,memory是个更宽泛的概念,Register寄存器、Cache缓存等都属于memory)方面进行了多项改进。L1缓存容量都有提升,指令缓存(I-cache)从48KB(A72)增加到64KB,数据缓存(D-cache)则容量翻翻到64KB。A73还有其他一些改进,比如取指的加强,这应该也能加强缓存性能。
A73和A72一样也有2个AGU(地址生成单元),不过先前A72的每个AGU专门用来进行load和store操作,而A73的这两个AGU分别都能进行load和store操作,这应该能够提升进入主系统存储的发射率。

Kirin 960更大的64KB L1缓存延迟1.27ns,Kirin 950为1.74ns,提升27%——这个值相较两颗CPU频率2.6%的变化,表明A73的L1缓存的确是有提升的。L2缓存延迟原本应该是一样的,不过Kirin 960相比950在访问内存(main memory)时延迟有27%的提升,这应该是受惠于CPU部分更低的延迟。
存储带宽结果比较明确,Kirin 960在L1缓存读取带宽方面,相比Kirin 950提升最高30%,不过L1写入带宽更低,差距差不多也是这个值。Kirin 960的L2缓存带宽在读和写的带宽方面都更低,差距最多可达30%。














闽公网安备 35020302000061号