用漫画来认识原理,ARM多核处理的DynamlQ技术

 

“行动处理器随着技术演进而愈来愈强大,像ARM就推出了新技术DynamlQ,比先前的big.LITTLE技术更能灵活运用每一个核心,并能以不同的时脉运作。本篇文章将用可爱图片的方式,来介绍复杂的技术原理,让有兴趣的朋友们能在趣味中了解什么是DynamlQ技术~”

 

行动处理器除了追求效能的提升外,增加运算效率也是重要的关键。先前ARM 较广为人知的是big.LITTLE大小核技术,不过随着技术的演进,今年ARM在big.LITTLE基础上,推出了新的DynamIQ。单一Cluster内可有8个核心,且可由不同架构、时脉的核心组成,提升了运作效率与配置的弹性,现在我们利用简单的图片来说明DynamIQ的运作原理吧!

▲DynamIQ支援多颗不同架构的处理器,也能让处理器在不同时脉下运作,继big.LITTLE之后的新运算架构。

 

用龙舟来比喻核心技术

如果用龙舟来比喻ARM的DynamIQ与先前的big.LITTLE技术,我们把龙舟当成Cluster、船员当成核心,先前的big.LITTLE龙舟上最多只能有4位船员,而且每个船员都必须一样的身材(核心架构),划船时若多位船员一起划船时,每个人都要出力均等(时脉同步),不能有人慢慢划有人快快划。

但到了新的DynamIQ技术时,每艘龙舟(Cluster)上可以有8位高矮胖瘦(架构)不同的船员(核心),而且当划船前进的时候,每个船员可以依照指令出不同的力(时脉不须同步),且船员可依照指令睡觉(关闭)、休息(休眠)或划船(运作),配置​​的弹性比起big.LITTLE高很多。不过龙舟终究只是个比喻,是用比较轻松的方式解说DynamIQ的原理,实际运作会考虑的细节更多。

举实例来说,当你正在捷运上玩手机游戏,此时需提供一定的效能让前端正在玩的游戏顺顺跑,因此会将大核心皆开启运作,如果在家用VR或是很吃系统效能的App时就可能同时开启大小核心,以输出最高效能为优先事项。另一方面,当你手机闲置的时候,系统就会自动将较耗电的大核心关闭或休眠,转让小核心进行背景运作,此时重视的则是节省电力消耗,让手机续航力提升。

▲DynamIQ支援单一Cluster内8个不同架构的核心,并能以不同的时脉运作。

 

混搭、弹性调度的DynamIQ

如果要用简单的词来描述DynamIQ,那么应该就是混搭与弹性。过往为了运作上的协同作业与效率,Cluster搭配上大多会尽量简单化,big.LITTLE技术运作时也有时脉同步、架构统一等框架限制。因此后续改进的DynamIQ在big.LITTLE技术上延伸,提升了单一Cluster的核心数量,核心架构不需相同,运作时脉也能有更细微的调配。

省电与高效能听起来是很冲突的需求,然而透过DynamIQ技术,单一Cluster内可以允许高效能核心与省电核心混搭,不需要像过往开启复数Cluster才能达到类似的作用,让运作弹性、硬体配置更具弹性。此外,过往受限于核心同步时脉,实作上增加不少的门槛。 DynamIQ允许单一Cluster内核心以不同时脉运作,以1.0GHz到1.7​​GHz间以100MHz的频率差​​运作。

▲DynamIQ big.LITTLE透过共享记忆体等机制,减少切换延迟并增加运作效率。

 

减少切换延迟、增加运作弹性

如先前所述,虽然big.LITTLE提供了设计与运作上的弹性,但对于现在重视高效能与超长续航力的行动装置来说,big.LITTLE的限制让处理器无法榨出完全的效能,可能会碰到无法合理分配效能的状况。因此DynamIQ在设计上修改了过往的限制,放宽核心、时脉等限制,有助于设计出更具效能与功耗的产品。

除了运作弹性增加之外,在状态切换的延迟也得以大幅下降。 DynamIQ使用了硬体控制式功率状态自动切换机制,可让核心在关闭、休眠、运作3种状态间快速切换,并减少切换时的延迟。这不仅使得运作效率提升,也因为切换延迟降低,能源效率得以提升,提供了装置更好的节能性。

 
Follow 我们的Page,每天追踪科技新闻!

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

硬体控看过来,带你了解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,每天追踪科技新闻!

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

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


 

“Apple从iPhone一代使用三星处理器,到iPhone5后使用自己开发的A6晶片,至今Apple的处理器已经是远远超过其他人,为何Apple开发的处理器效能这么好?本主题分成Part1~Part3三篇文章来深入讨论Apple Soc究竟厉害在哪~”

 
也差不多是该好好谈谈这「年经」议题的时候了。自从iPhone 5的心脏,终于开始引进自家开发的独特微架构核心,随着世代交替,在越来越多效能评测,对上其他授权现成ARM核心的对手时,展现越来越摧枯拉朽的优势后,每逢搭载新款Apple自家应用处理器的产品问世,各大媒体,总是出现以下的例行标题:

「Apple的晶片实在太快了,众人们都难以置信!」

接着一如往昔,四处冒出单细胞动物反应般的「Apple何时会将Mac换装自家的SoC」深度评论(即使从头到尾看不出什么内涵),下面的读者留言,也跟着鸡同鸭讲的吵成一团。

然后呢?就没有然后了。先直接讲结论:Apple Ax系列应用处理器核心,可以同时执行,或着讲的更精确一点「可平行处理」的指令数,远胜竞争对手,完全是顶级伺服器处理器的等级。

为何少人分析Apple自家处理器的技术细节?

Apple的晶片再厉害,也是和我们生活在同一颗地球上的人类开发出来的产物,奠基于相同时代的半导体制程技术,与观念相近的高速处理器设计原理,万变不离其宗,绝非外星科技,而产品开发背后的技术源流,更是斧凿斑斑,如果你愿意花时间考古的话,想藏也藏不住。

但Apple毕竟就是Apple,不像习惯在学术研讨会发表论文,变相进行技术行销,或着在自家活动公开产品技术细节的IBM Intel AMD nVidia Qualcomm等厂商,对自家打造微架构、总算可以不假外人之手的晶片,几乎守口如瓶,只给行销数据。

反正对Apple来说,他们也不需要让外界得知太多资讯,只要宣称iPhone iPad有很棒的使用者体验,果粉愿意掏钱买单,就功德圆满了,除非有足以用来说嘴的重大技术创新,像A11的Neural Engine类神经网路加速引擎,否则讲太多细节,都是多余的。

所以很多专精于分析处理器架构的媒体工作者和专栏作家,几乎除了介绍TSMC为主的先进制程、历代Apple晶片的方块图(特别专注于比较iPad专用的版本,会比iPhone多出哪些额外的区块),与新款PowerVR绘图核心的性能提升,对于最重要的核心微架构,不得其门而入,通通束手无策,大概勉强比较有看头的,就是某些拆解机器,取下晶片,磨出晶粒照片(Die Photo),然后看图说故事的网站。

当然,我们也有充分的理由相信,Apple晶片的竞争对手,势必拿着电子显微镜,对着晶粒进行巨细靡遗的分析,甚至尝试逆向工程的可能,只是这些见不得光的商业行为,不会也不能公诸于世就是了。

所以就这样束手无策了?才怪!

但这并不代表天底下没有旁敲侧击、判断其设计奥妙的手段,比较专业一点的作法,是自行撰写测试程式码(目前知名网站中,就以Anandtech那篇比较A5和A6的文章最具代表性),去推敲其指令管线深度、执行单元宽度、分支预测强度、记忆体子系统阶层与延迟等等,应用程式开发工具(像LLVM)内的参数,也是可以「挖宝」的好地方。

次而等之的,则是透过跨平台的效能测试程式,去比较不同世代Apple应用处理器与那票Android手机心脏之间的差别,再以找一个资料最公开的晶片,作为评估的基准。难搞的要死、非得自己弄好编译器参数,才可以保证跑完的SPEC CPU,之所以历久不衰,长期兼具学术和商业价值,不外乎可藉由涵盖多种不同应用的子项目,彻底分析处理器的性能特性。

所以当笔者看到效能测试程式的创办人,竟然会讲出「A11晶片实在太快了,让我无法理解的是,为什么Android 阵营看起来好像停滞不前?效能飞跃在哪? 我不清楚到底发生了什么事」的鬼话,当下的情绪反应是极度愤怒的,因为开发效能测试程式的人,最没资格搞不清楚到底发生什么事,难道你们根本不知道你们到底在测试什么吗?还是你们其实对处理器架构完全一如所知,只是要挤出喧哗取众的数字,让使用者自己赛猪公吗?

看来好像真的是这么一回事,所以你才会在这边看到这篇文章。 (待续)
 
续篇:硬体控看过来,带你了解iPhone处理器为何这么强大? (Part2)
 
Follow 我们的Page,每天追踪科技新闻!

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