分享

有关处理器架构、工艺的必读文章

 leeziyong 2016-06-21


忽然觉得自己这点知识储备居然要论述这么大的一个问题,还是有点头痛啊。我们电力系统分析老师在课上有句话我感觉说的特别好,「你要给别人一滴水,首先你要有一桶水」。那么在下面我主要是以学习笔记的形式来展现吧,希望能和大家共同探讨,共同提高!发现错误请一定要指出!


一、CPU的架构

1.1什么是CPU的架构(Microarchitecture)?

1.1.1 微架构



80286的架构


 CPU的设计是一个系统工程,通常可以分为微结构(学术界喜欢把micro-architecture翻译成“微结构”,传媒上多见“微架构”)、电路,器件,工艺这几大层面,每个层面内部都有很多细分方向,每个方向都有专家去研究,都有专门的工程团队在做。看一下Wikipedia对微架构的定义

在今日,管线资料路径是微架构中最常被使用的资料路径。这种作法也被普遍的用于微处理器,微控制器,以及数位讯号处理器。管线化的结构允许多个指令在同一时间执行,不同的指令在微架构不同的位置执行。管线分有好几个不同的阶段(stage),这些阶段是微架构的基础。这些阶段包含撷取指令,指令解码,执行指令,以及将资料写回。一些结构还包含其他阶段,像是对记忆体做存取的动作。管线是微架构其中一项主要的工作。执行单元也是微架构的基本元件。执行单元包含算术逻辑单元(ALU),浮点运算器(FPU),load/store单元,分支预测,以及SIMD。这些单元在处理器内进行计算。执行单元的数量,他们的latency(记忆体存取资料的时间)及throughput(将资料存到或是读取出记忆体的速度)影响微架构的效能。

 有点不知所以对吧,那就用相对通俗的语言来介绍一下:CPU的架构就是指「接受和处理信号的方式」,也就是说,CPU就是一个工厂,不断的接受到信号,并且处理(运算)这些信号,架构就是在工厂里如何布置那些机器,让机器快速的能够进行以上的那些工序。
 CPU的基本组成单元即为核心(core),而核心的实现方式即被称为微架构。微架构的设计影响核心可以达到的最高频率、核心在一定频率下能执行的运算量、一定工艺水平下核心的能耗水平等等。

1.1.2 微架构的发展历程

 推动计算机性能提升的一个车轮是半导体的微型化,另一个车轮就是微架构的改进,使得单位时间内可执行的指令更多。

1.1.2.1 微架构的发展之路

 微架构的发展历史就是缩短程序运行时间的奋斗史。下面我们来走马观花的看看现代处理器是用的这些主要技术的发展史。

  • 流水线处理

  • 运算器高速化

  • RISC和CISC

  • 超标量执行

  • 乱序执行

  • 分之预测

  • 缓存

  • 多核心

 「流水线处理」就是用流水线方式执行指令,以提高指令的处理速度。计算机是进行计算的机器,拥有各种运算的单元,让这些运算能告诉执行非常重要。
 x86等CISC(Complex Instruction Set Computer,复杂指令计算机)处理器的指令很复杂,很难采用流水线处理。而RISC(Reduced Instruction Set Computer,精简指令集计算机)是容易进行流水线处理的简单指令架构,以在小型硬件上高速运行为目标。可以认为,RISC是为了实现比CISC更优秀的微架构而重新设计的指令架构。
 将流水线处理进一步发展,设置多条流水线,并行处理多条指令,这就是「超标量执行」。但是,如果吓一跳指令会用到当前指令的计算结果,这两条结果就无法并行执行。因此,要改变程序中的指令顺序,先执行能执行的指令,从而提高处理速度,这就是「乱序执行」。此外,遇到条件分支时,尽管不知道接下来要执行哪条指令,但可以进行预测,以提高执行速度,这就是「分支预测」。
 半导体的微型化(下一篇会介绍到)带来了处理器的高速化,但是DRAM内存的主要开发经历放在了如何增大内存容量上,速度提高比较缓慢。因此,处理器访问内存就要花费很长时间,导致整体性能无法提高。而在处理器中设置小容量、高速度的存储器,就能解决内存访问时间过场的问题,这就是「高速缓存」技术。
 像这样,人们实现了众多处理器高速化技术,但实现这些机制需要大量的晶体管,耗电量也相应增大。为此,与其在每个处理器中嵌入越来越多的晶体管提升性能,还不如制作多个适当大小的处理器,这样同样的耗电量能够获得更高的性能,这就是这几年来流行的「多核心」技术。

1.1.2.2 指令架构

 指令架构规定了处理器执行指令的方式及执行结果的样子等「处理器的行为」。指令架构只规定了处理器执行什么指令、执行结果如何,但没有规定处理器内部的实现方式。相对于指令架构的,具体的内部硬件结构就是我们上面说的微架构啦。
 在程序运行方面,相同指令架构下可以运行相同的软件,而不同的微架构表现的性能会不同。
 最早的电子计算机的速度大大超过机械式计算机,但是人们注意到,计算变快、处理时间缩短之后,人们在更换程序或键盘输入时,计算机就无所事事了,十分浪费。因此,人们把程序像数据那样加载到内存中运行。进一步,为了让同一程序能在其他计算机上运行,人们设计了虚拟内存,能让需要大量内存的程序的运行不受物理内存容量限制;确立了程序和硬件之间的接口——指令架构
 
 所以说,生产CPU的厂家不断的优化微架构,想不断的提高运行的效率,也就是说指令容易快速地在管线内被撷取,解码与执行,由于指令频繁的被使用,快取便被频繁的使用,这样就使记忆体存取的时间降低当然,架构的升级不一定就是完全是好的,比如今年高通公司采用了ARM公司的big.LITTLE架构,并且用在了其拳头产品骁龙810上,可是……
 我们知道,在最新一级旗舰产品骁龙820已经放弃了 ARM 的官方架构,转而去重新自主设计架构。(坑爹的big.LITTLE
 不过在桌面端,Intel公司有一个著名的战略叫做Tick-Tock,也就是分别在奇数年和偶数年来更新架构和工艺(制程),自从实行这个战略以后,把老对手AMD甩出好几条街,AMD也在自暴自弃,在农企的路上越走越远……

 骁龙 820 集成新型 64 位定架构制 Kryo 。借助完全定制自主设计的 CPU,我们能够更好地实施并优化异构计算架构 —— Qualcomm 中国
 
 如果挑选一款CPU的话,一定要看看他的架构,一般来说,架构越新相对来说是越好!

1.2 移动端的架构?

 我们本可以大声的喊出答案:ARM架构
 但是,最近几年强大的高通已经不满足与ARM的公版架构,转而自行设计微架构,同时,三星也传出消息要设计自己的架构,有趣的是,高通公司的架构名称为环蛇,在Exynos7420上大获成功的三星针锋相对,将下一代自行设计的微架构叫做猫鼬(Mongoose)(环蛇的天敌)。看得出来,三星在2015年将高通骁龙系列按在地上摩擦以后,腰杆变硬许多,胸前的红领巾更加鲜艳了…


猫鼬


 不过现在大多数厂商的处理器芯片还是用着ARM架构的CPU,三星、TI、高通、Nvidia等等。也就是说微架构的研发也是IT产业技术含量最高的领域之一
 话又说回来,即便是有些公司采用了自己的微架构,但是在根本上,还是采用了ARM的架构。为什么这么说呢?
 可能说到这,还没有对ARM进行介绍,也许有些对数码不太感冒的同学已经迷茫了,别急,现在就来引入和介绍ARM公司与ARM架构。ARM有好几个概念,分别是:

  • ARM公司
    ARM是全球领先的半导体知识产权 (IP) 提供商。全世界超过95%的智能手机和平板电脑都采用ARM架构。ARM设计了大量高性价比、耗能低的RISC处理器、相关技术及软件。ARM公司并不像INTEL那样直接将芯片卖给消费者,ARM公司既不生产芯片也不销售芯片,它只出售芯片技术授权:比如我们买了一款三星手机,他采用了三星自己开发的一个手机芯片,这个芯片内部包括了几个部分组成,比如一个负责数据处理的“CPU”,一个负责图形处的“GPU”等,那么,这个负责数据处理运算的“CPU”,正是来自ARM公司设计。

  • ARM架构
    过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。由于节能的特点,ARM处理器非常适用于移动通讯领域,符合其主要设计目标为低耗电的特性。



    ARM微架构


    ARM公司研发的Cortex系列是现在大部分芯片所采用的微架构。

  • ARM体系
    我更喜欢叫它指令集架构,目前典型的有ARMv5 ARMv6 ARMv7以及最新的64位ARM指令集ARMv8等等,这个类似于台式机上的IA32、IA64,他是一个指令集,仅仅定义了机器指令,寄存器结构等等软件开发者可以看到的最底层的东西,是软硬件的接口。

 注意微架构与指令集是两个概念:指令集是CPU选择的语言,而微架构是具体的实现。
补充关于指令集的知识:

CPU执行计算任务时都需要遵从一定的规范,程序在被执行前都需要先翻译为CPU可以理解的语言。这种规范或语言就是指令集(ISA,Instruction Set Architecture)。程序被按照某种指令集的规范翻译为CPU可识别的底层代码的过程叫做编译(compile)。x86、ARM v8、MIPS都是指令集的代号。指令集可以被扩展,如x86增加64位支持就有了x86-64。厂商开发兼容某种指令集的CPU需要指令集专利持有者授权,典型例子如Intel授权AMD,使后者可以开发兼容x86指令集的CPU。



Cortex


 目前市场上很多的CPU,比如水果6s上逆天的A9,三星s6e+上的Exynos 7420(big.LITTLE架构CortexA57+CortexA53),都是厂商兼容ARM指令集而自主研发的微架构,都可以成为是厂商自己研发的CPU。而相对于有些芯片厂商仅仅是在ARM购买微架构来组装芯片就不能被称作CPU研发企业的,比如之前的荣耀上的Kirin920、MX4Pro上的Exynos 5430等等。当然,在上面那个图里也可见看到有为嵌入式设备设计的的Cortex-Mx系列,之前曾经用过的MK60就是基于Cortex-M0架构的一款CPU,继而封装成了一片MCU。


1.3 栗子与展望2016



Vista


 在2015年,移动端CPU是不同寻常的一年。三星在高通的屋檐下待了N多年,今年终于凭借使用7420的s6和s6e打了一个翻身仗(功劳主要在下面要谈到的工艺上,当然和微架构也不无关系),在2015Q3智能手机出货量来看,三星名列第一,并且出货量和市场占有率已经接近苹果iPhone的两倍。2016年三星的智能手机采用自主微架构(猫鼬)的64位芯片Exynos8890,性能及市场表现值得我们期待。



2015Q3


 而在2015年,三星在处理器端的老大哥 高通 的日子真的不好过,由于骁龙810散热问题芯片卖不出去,还要面对骁龙810手机表现甚至不如去年的骁龙801和骁龙805手机的事实,又被中国政府找了麻烦交了罚款。所以2016年,习惯了作为智能手机市场执牛耳者的高通,必然会做出大动作,当然我们也已经知道了,骁龙820已经放弃了 ARM 的官方架构,转而去重新自主设计架构Kyro。希望高通能通过骁龙820横扫810带来的阴霾,打一个漂亮的翻身仗吧,并且能给这个疲软的市场一剂强心针。



Kryo


 那么不禁就要问一问,到底是什么坑了高通的,让我们来举个栗子吧。

关于big.LITTLE



big.LITTLE架构


Mr Big先生主要处理具有挑战性的重任,Little小姐则负责小任务。我们这样比喻,在大扫除的时候,男同学负责提水、抬桌子抬椅子,女同学负责扫地擦黑板。当手机不需要工作时,Big核心和LITTLE核心都可以停下来休息。
基于big.LITTLE技术的八核处理器,并没有将传统内核放在单一的处理器上,而是一分为二,其中一个使用了4个“小核心”,另一个则使用了4个“大核心”,这两个“核心”都有着自己独立的速度和性能。通过两大核心自主运行,搭载Big.little技术的处理器比之前的手机CPU更加高效,毕竟后者只有一个或者两个内核。
当需要用智能手机打开一个网页时,手机就可以用一个大的内核来处理该任务,而小的内核则同时处理其他小任务,比如查看电子邮件、拨打电话等。
ARM解释道,big.LITTLE是一种节能省耗技术,最高性能的ARM CPU核心与最高效的ARM CPU核心相结合,可以以更低的功耗提供最好的工作性能,最快的处理任务速度。

 设想是美好的,可是……A53 的 TDP (设计热功耗)要比 A57 低数倍不止,甚至在低频模式下 A57 的功耗也要比 A53 高,这本来是个合作共赢的好事,不过高通给出的原因是由于采用的ARM Cortex A57核心架构出现了发热问题,这就造成了一个怪现象 A53 性能不够,而 A57 又太费电温度太高。当然不是没有解决办法,对于 A57 这个耗电大户ARM官方的建议是使用 big.LITTLE 大小核切换技术还有更低功耗的 FinFET 晶体管制程。

 「可是,可是,你看看人家三星同样采用这套64位核心架构的Exynos 7420性能却相对稳定呀!其中最重要的原因就是三星采用了自家最新的14nm工艺,而高通采用的而是20nm工艺(下面马上就要讲到工艺啦!)。」
 那么问题就来了,且不说 FinFET 根本上就没几个厂家用上,就 big.LITTLE 这个技术也有不小的问题。在切换大小核的时候甚至会出现毫秒级的延迟,这对手机的体验甚至是致命的。
 不过就算是现在公认的最好采用 big.LITTLE 的 Exynos 7420  也没有解决切换延迟问题,与骁龙801对比切换软件明显会有卡顿,而且四个 A57 同时工作的时候温度很吓人,骁龙810就是最大的受害者,一旦温度上去就要降频这就造成了骁龙810的性能严重下降。
 这不就印证了前面我们曾经谈到的观点吗?「一般来说,架构越新相对来说是越好」。不过在2015年来看,ARM给出的这次公版架构,可是把高通搞得有点晕头转向。
 所以我现在手头上用的Z5P,用着骁龙810,索尼也是拿出了黑科技来镇压。在驱动之家的Z5P评测上的标题是「镇压骁龙810 索尼Z5用上了双热管+硅脂」……



Z5P的双热管 - 1


Z5P的双热管 - 2


1.4 当下的手机市场与总结

Cortex A57性能固然强悍,可是高通却没有驾驭得了。在各个手机厂商搭载了这颗CPU的旗舰手机一个个相继沦为暖手宝的时候,高通只能无奈的推出了骁龙808,也就是减少了两个Cortex A57大核心采用6核方案缓解发热问题。而在三星和高通的巅峰对决之外,MTK很聪明的用了8个Cortex-A53小核心推出自己的旗舰Helio X10继续巩固着自己的中低端市场份额,让骁龙615销量惨淡。Helio X10的稳定性好,性能够用,这也是很多国内千元机市场的首选CPU。
 说到这,大家应该能够感觉得到工艺和架构对于cpu的影响不亚于核心数和频率了。再举个栗子吧,如今主流手机CPU都是六核,八核,联发科甚至开始研发十核了,为什么性能和桌面端CPU还是有一定的差距呢?没错,指令集不一样,核心架构不一样是最根本的原因。复杂指令系统(CISC)和X86、X64的微架构与手机完全不同。手机多核其实应该叫多CPU,将多个CPU芯片封装起来处理不同的事情,就是大家所说的胶水核心,也就是被强行粘在一起的意思。在待机或者空闲的时候,八核的手机也只能用到一至两个核心。而电脑则不同,桌面端的多核处理器是指在一个处理器上集成了多个运算核心,通过相互配合、相互协作可以处理同一件事情,是多个并行的个体封装在了一起。用一句话概括,就是并行处理,双核就是单车道变多车道。这不是说优劣的问题,而是定位的不一样。手机CPU要功耗低、廉价。所以采用ARM架构的CPU,运算能力大大低于电脑CPU的运算能力,同等频率CPU浮点运算能力相差在几千到上万倍。



「火龙」810


同时,还要强调一点,就是现在不能仅仅只看重手机CPU性能,更要看重手机的SoC,CPU、GPU、基带、DSP等等都很重要,在这方面来说,三星已经逐步追赶上高通了。


好吧,写到这里,已经写了不少了,自己也把架构方面的知识复习了一下。那么下面一篇就是要关于CPU的工艺了,敬请期待!


文/别着急我来了(简书作者)
原文链接:http://www.jianshu.com/p/fa7e11321cd8
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多