硬体控看过来,带你了解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)」的差别,糊里糊涂的就随便把两者送作堆,挤成爆浆撒尿牛丸,所以特此不厌其烦的厘清。 举统治个人电脑市场的80x86为例,前者说穿了是「电脑的基本语言(x86指令集的历代沿革,如i386、MMX、x86-64、SSE、AVX、AVX-512等)」,后者是「执行语言的载具(Intel和AMD一大票微架构code name,像Skylake)」,不能混为一谈。

指令集与微架构互相影响

但「资产」和「包袱」往往是一体两面,在漫长的演化之路上,指令集和微架构并非从此泾渭分明、井水不犯河水、老死不相往来,就像人类平日用来沟通的「语言」 ,其文法规则与逻辑结构,多少可反映出一个社会的风土习俗和「潜在规则」,一套指令集的特性及优缺点,会深深影响着微架构的发展途径与经济效益,两者相互潜移默化,直接或间接反映在「产品」本身的市场竞争力,与指令集未来的扩充发展方向。毕竟处理器是要面对市场竞争的商品,身为「电脑语言」的指令集,也是会因应微架构的发展需求而进化,甚至不惜牺牲相容性,也要丢掉部份的包袱。 电脑的身体是「物理」,灵魂是「数学」,但「经济」才是它存在的原因。假如世界上真有「计算机结构经济学」这门学科(其实某本以计量方法为名的教科书,已经很有这样的味道),注定将聚焦于指令集和微架构之间的互动。 那问题来了,64位元的ARM指令集,究竟带来了哪些突破,而Apple又如何搭上这顺风车,让自家微架构甩开跟竞争对手的差距?更关键的是:Apple同时掌握软体和硬体,究竟在处理器效能竞争中,扮演怎样的角色呢? (待续)   续篇:硬体控看过来,带你了解iPhone处理器为何这么强大? (Part3)   Follow 我们的Page,每天追踪科技新闻! 想看更多英文版文章吗? 点我进去~