硬体控看过来,带你了解iPhone处理器为何这么强大? (Part3)


 

“继上一篇Part2,了解Apple处理器强在可以平行处理更多的指令后,本篇文章继续深入Apple处理器A7在迈入64位元后,到底又替Apple处理器增强哪些地方,让之后的A11处理器可以强到破表?”

 
没看过上一篇请点这里:硬体控看过来,带你了解iPhone处理器为何这么强大? (Part2)
 
Apple从2013年九月iPhone 5S的心脏A7「Cyclone」开始迈进64位元的世界,也以此为起点,Apple Ax应用处理器开始展现惊世骇俗的效能优势,从2015年六月赶尽杀绝32位元应用程式,直到今年的iOS 11中止支援32位元处理器(意思就是只回朔支援到iPhone 5S),更是深具重大意义的里程碑。

64位元是为了破除高效能架构障碍

但64位元运算真的有这么神奇吗?当然不是,真正有举足轻重影响的,是ARM指令集扩充到64位元时,「顺便」带来的革新,特别是移除了打造高效能微架构的重大障碍。

要提高处理器效能,不外乎增加每个时脉周期可处理的指令数:

提高时脉,对于行动装置来说,这几乎是难以考虑的选项。
增加同时可以平行处理的指令数量,像硬体指令排程的超纯量(Superscalar)和编译器决定如何「一个萝卜一个坑」的超长指令集(VLIW)。
接着,提高管线效率,特别是当发生同时执行的指令,要存取相同暂存器而强碰时,就需要以「暂存器更名机制」为中心的「非循序指令执行」来解决。
前面有提到,电脑有别于计算器的最大差别,在于「条件判断的能力」。

你可将电脑程式的正常执行流程,想像成一个「棋盘」,以一个角落当做起点,对角线的角落作为终点,在棋盘上反覆移动,不限制前进或后退。如发生条件判断的分支(Branch),或无条件判断的跳跃(Jump),就会变更指令流,并且中断指令管线的运作,特别是必须先等待条件判断的执行结果,才能决定该分支是否发生的分支,对效能的伤害尤其明显。

所以某些指令集就具备了所谓「引述执行(Predicaton)」的能力,包含32位元的ARM指令集。一个在一般指令集的简单条件判断(相信各位一定看得懂):

beq ra, label // if (ra) = 0, branch to ‘label’
or rb, rb, rc // else move (rb) into rc

改用具备引述执行的条件搬移指令,一行就解决了,避开了分支指令,也无须启动分支预测机制。讲的直白一点,就是把所有相关工作打包起来送作堆,一次搞定。

cmovne ra, rb, rc

这对追求高度平行化的指令集,有着莫大的吸引力,所以也不外乎多数超长指令集(VLIW)电脑,都具备这样的能力,包含Intel的IA-64(Itanium),连x86从Pentium Pro开始也有cmov体系指令,只是因种种因素不那么实用,而逐渐边缘化了。

引述执行Predication的缺点

但天底下没有白吃的午餐,先不提「事后」才支援引述执行的困难度,引述执行不但会增加处理器的工作量,更会提高指令管线前端的复杂度,不仅不利于提升时脉,更会影响非循序指令执行引擎的设计,因为暂存器重新更名机制要「替身」的资料就更多了。很讽刺的,原本寄望可以提高指令平行化的引述执行,竟然反过来变成了打造高效能微架构的麻烦制造者。

64位元的ARMv8-A取消4位元引述执行(Predication)码,将省下的指令编码位元数,挪为倍增资料暂存器之用,不但降低了发生暂存器相依的机率,一并解除实作更高效率非循序指令集执行的紧箍咒,更是「在指令集扩充之路上,设法搬移未来微架构路障」的经典案例,这远比整数逻辑运算暂存器和记忆体平面定址空间扩充到64位元还重要上百倍。

苹果看到的64位元大未来

基于未来性,Apple也很早就把重心放在64位元效能,根据某些实际的指令排程输出率测试,Apple兼具32/64位元相容性的Ax应用处理器,64位元的指令输出量,就几乎是32位元的足足两倍,例如每个时脉可输出6个64位元指令,32位元就会腰斩。当然,Apple自家晶片亦具备极度优异的记忆体效能,A10X改弦易彻走向大型化L2快取,也隐约透露出些有趣的弦外之音,这就有赖前P.A.Semi团队的功力了。

问题又来了,那为何A11会强到破表?

有没有想起来,iOS 11已纯粹对应64位元环境?那A11为何还要硬扛着相容32位元ARM指令集的包袱呢?伺服器导向的Qualcomm Centriq 2400就是「纯64位元」ARM处理器。少了后顾之忧,自然就可以把所有电晶体预算砸到刀口上,效能自然好,这就是Apple同时掌握全部软硬体的天然优势。

最后,不提A11,光A10每个时脉最多可同时输出4个整数、2个浮点和2个记忆体载入,就已经很接近IBM Power7的水准,几乎是其他ARM对手的两倍,真是吓死人了。 A11有多可怕?我们以后再研究,谢谢收看。
 
Follow 我们的Page,每天追踪科技新闻!

想看更多英文版文章吗? 点我进去~

硬体控看过来,带你了解iPhone处理器为何这么强大? (Part2)


 

“继上一篇Part1,先基本了解Apple处理器不易被外界摸透的原因后,本篇文章将切入主题,重新阐述电脑与指令集架构,让大家了解效能判断的基准,再来解释为何Apple的处理器可以同时平行多工处理指令。”

 
没看过上一篇请点这里:硬体控看过来,带你了解iPhone处理器为何这么强大? (Part1)
 
前面有提到Apple的Ax系列应用处理器核心,每个时脉周期内可以平行处理更多的指令,那为何Apple可以作到这件事?除了透过并购而来的PASemi团队有其过人之处(他们过去做PowerPC干过的好事足以另外开一个新专题了),这也或多或少跟ARM指令集的演进有所关联,尤其是「64位元」这个经常引起误解的话题。

要重头建立起对效能的判断基准,充分理解近代高效能处理器的众多特性,重新塑造对「电脑」的认知,绝对不可或缺。相信我,放眼在各大科技网站四处留言的科普文青和潮牌果粉,十个之中,大概找不出一个可以好好阐述「什么是电脑」。

电脑与指令集架构

我们先来看看,什么叫做「电脑(计算机)」和「指令集架构」,一步一步的抽丝剥茧,充分理解当代高效能处理器的基本概念与效能瓶颈,保证以下绝对不会让你看到睡着。

先问第一个问题:「电脑(Computer,或叫计算机)」与「计算器(Calculator,像你手边的卡西欧计算机,或手机上的小算盘程式)」,有什么不同?

最大的相异点:电脑具备「进行条件判断」与「变更执行流程」的能力,可依据不同的条件,执行不同的指令,作为人类用来处理讯息的工具。

我们进一步想让电脑「泛用化(General Purpose)」,让应用更有弹性,不限定于固定的用途,需要创造一组「指令集架构(ISA,Instruction Set Architecture)」作为电脑最基础的「语言」,并将所谓的「运算」,转化成一连串指令的执行细节。

讲的抽象一点,指令集在电脑内扮演的角色,是软体和硬体之间的「介面(Interface)」。

理所当然的指令集相容性

今日耳熟能详的「计算机结构」(Computer Architecture),就是由IBM在1964年创造给S/360大型主机用的名词,藉由表示「程式设计者可以看到并使用的指令集」,如同电脑的语言,指令集架构相同的不同电脑,可以执行相同的软体。

这在今天看似理所当然的想法,像Intel和AMD的x86处理器,可以执行用x8​​6指令集所撰写出来的程式码,然后因不同的处理器微架构的特性,在不同的应用,有着截然不同的效能表现,在当时却是非常新奇的观念,因为那时候每种电脑,都拥有不同的指令集,发展一台新电脑,就需要重新撰写软体。可顺畅执行所有软体的处理器,对商业价值的重要性,不言可喻,这就是指令集回溯相容性的威力,同时也是最重要的「资产」。

不过近年来拜ARM此类授权IP商务模式的影响之所赐,越来越多人搞不清楚「指令集架构」和「处理器微架构(Micro Architecture)」的差别,糊里糊涂的就随便把两者送作堆,挤成爆浆撒尿牛丸,所以特此不厌其烦的厘清。

举统治个人电脑市场的80×86为例,前者说穿了是「电脑的基本语言(x86指令集的历代沿革,如i386、MMX、x86-64、SSE、AVX、AVX-512等)」,后者是「执行语言的载具(Intel和AMD一大票微架构code name,像Skylake)」,不能混为一谈。

指令集与微架构互相影响

但「资产」和「包袱」往往是一体两面,在漫长的演化之路上,指令集和微架构并非从此泾渭分明、井水不犯河水、老死不相往来,就像人类平日用来沟通的「语言」 ,其文法规则与逻辑结构,多少可反映出一个社会的风土习俗和「潜在规则」,一套指令集的特性及优缺点,会深深影响着微架构的发展途径与经济效益,两者相互潜移默化,直接或间接反映在「产品」本身的市场竞争力,与指令集未来的扩充发展方向。毕竟处理器是要面对市场竞争的商品,身为「电脑语言」的指令集,也是会因应微架构的发展需求而进化,甚至不惜牺牲相容性,也要丢掉部份的包袱。

电脑的身体是「物理」,灵魂是「数学」,但「经济」才是它存在的原因。假如世界上真有「计算机结构经济学」这门学科(其实某本以计量方法为名的教科书,已经很有这样的味道),注定将聚焦于指令集和微架构之间的互动。

那问题来了,64位元的ARM指令集,究竟带来了哪些突破,而Apple又如何搭上这顺风车,让自家微架构甩开跟竞争对手的差距?更关键的是:Apple同时掌握软体和硬体,究竟在处理器效能竞争中,扮演怎样的角色呢? (待续)
 
续篇:硬体控看过来,带你了解iPhone处理器为何这么强大? (Part3)
 
Follow 我们的Page,每天追踪科技新闻!

想看更多英文版文章吗? 点我进去~