http://www.jianshu.com/p/fa7e11321cd8

inside

高通骁龙

 刚入手了SONY Xperia Z5 Premium,其CPU采用了争(fa)议(re)较大的骁龙(Snapdragon )810,那就借此机会谈谈关于桌面CPU和移动CPU的一些东西吧。从小就比较喜欢数码比较多,买了很多这方面的书和杂志,但是对于绝大多数数码设备的核心CPU详细的一些技术参数也只是浅尝辄止未尝深究。上大学以后,关注数码动态不多了,反而更加想去了解之前不怎么探究的微观参数了。好吧,我也不是科班出身,只是凭着爱好不断地追寻和了解,所以下文只是个人的一些看法与总结,多多交流多多批评!
 忽然觉得自己这点知识储备居然要论述这么大的一个问题,还是有点头痛啊。我们电力系统分析老师在课上有句话我感觉说的特别好,「你要给别人一滴水,首先你要有一桶水」。那么在下面我主要是以学习笔记的形式来展现吧,希望能和大家共同探讨,共同提高!发现错误请一定要指出!

一 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的工艺了,敬请期待!

------------------------分割线------------------------

本文援引了很多的数据、观点、资料,若有侵权,立删!

部分参考资料:
《电的旅程:探索人类驾驭电子的历史过程》(张大凯)湖南科技出版社
《浪潮之巅》(吴军)电子工业出版社
《支撑处理器的技术:永无止境地追求速度的世界》(Hisa Ando,李剑 译)电子工业出版社 本文很多资料都出自于此,五星推荐!
2016旗舰芯谁争锋?高通骁龙820、三星Exynos 8890、华为麒麟950还是MTK:
http://www.cnbeta.com/articles/449055.htm
骁龙810+10=骁龙820? 才不是那么简单呢!这是高通的自我救赎:
http://weibo.com/p/1001603892308377533736
四核成主流:七大主流平板处理器解析:
http://www.cnmo.com/pad/231340.html
写在骁龙820和Exynos 8890之前:手机cpu浅谈:
http://post.smzdm.com/p/396980/
ARM处理器全解析:A8/A9/A15都是什么?:
http://news.mydrivers.com/1/250/250003_all.htm#2
关于CPU、指令集、架构、芯片的一些科普:
http://zhuanlan.zhihu.com/xpenrynidea/19893066
三星大杀器“猫鼬” 骁龙820哭晕在厕所:
http://www.pcpop.com/doc/1/1121/1121698.shtml

浅谈关于CPU的架构和工艺(1)相关推荐

  1. 浅谈多核CPU、多线程与并行计算

    浅谈多核CPU.多线程与并行计算 xiaofei0859 2017-05-09 17:07:11  3646  收藏 展开 0.前言 笔者用过MPI和C#线程池,参加过比赛,有所感受,将近一年来,对多 ...

  2. 深入浅谈,CPU设计原理

    首先,声明这是一篇转载文,这篇文章是,从卡饭论坛 看到的一篇文章<深入浅谈,CPU设计原理>,是一篇连载,文章,卡饭论坛,是我高中的时候,经常去的论坛,里面有很多好的文章,推荐给大家.也许 ...

  3. 【ZZ】浅谈大型web系统架构 | 菜鸟教程

    浅谈大型web系统架构 http://www.runoob.com/w3cnote/large-scale-web-system-architecture.html 转载于:https://www.c ...

  4. 五分钟DBA:浅谈伪分布式数据库架构

    [IT168 技术]12月25日消息,2010互联网行业技术研讨峰会今日在上海华东理工大学召开.本次峰会以"互联网行业应用最佳实践"为主题,定位于互联网架构设计.应用开发.应用运维 ...

  5. 浅谈ARM Cortex-M系列架构——架构篇

    浅谈ARM Cortex-M系列架构文章 浅谈ARM Cortex-M系列架构--指令集 目录 前言 1.操作状态 2.操作模式 二.寄存器 1.通用目的寄存器 2.R13,栈指针(SP) 3.R14 ...

  6. 浅谈空冷器系统在压缩机工艺中的应用

    浅谈空冷器系统在压缩机工艺中的应用 1.工艺作用.工艺流程.工艺参数 空冷器与压缩机一一对应,以压缩机Z201A为例: (1)正常工况:当压缩机出口温度TIT202A 超过60 度(可现场调节)时,关 ...

  7. 阿里浅谈大型项目前端架构设计

    1.综合 我在2年之前,写过一篇中小型项目的前端架构浅谈. 随着能力的上升,以及在阿里巴巴工作的经验,是时候写一篇大型项目的前端架构分析了. 本篇文章不会更多侧重于具体技术实现,而是尝试从更高角度出发 ...

  8. 浅谈BPM和SOA架构下的电子政务系统

    摘  要:面对我国电子政务建设中存在的若干问题,为了实现政府由"管理型"向"服务型"转变,本文提出,未来的电子政务系统采用以服务驱动为核心的SOA技术架构将更能 ...

  9. 浅谈全区全服架构的SNS游戏后台

    首先说下分区分服和全区全服的概念,查了一下资料,没有找到合适的定义.说下自己的理解:所有游戏服务器都有玩家数据库,如果以数据库为单位划分Set,单Set如果能承载超过10万的同时在线,可以认为是全区全 ...

最新文章

  1. CSS设置超出表格的内容用省略号显示
  2. java改写weka中的算法_用Eclipse在Weka中嵌入新算法
  3. 微信小程序,前端大梦想(七)
  4. Java技巧: 根据网址查询DNS/IP地址
  5. c++语言int最大值,c++ 关于如何获取int型的最大值
  6. 第二层$.get()、$.post() 方法使用(三)
  7. attiny13a程序实例_关于ATtiny13A的一段程序
  8. java类全路径简写_[JAVA] JAVA 类路径
  9. 基于OpenCV实现------图像的转置
  10. [POJ 2503] Babelfish【二分查找】
  11. 有没有用过苹果手机的人,使用后放弃苹果
  12. 连表查询 个人感觉就是根据笛卡尔积产生的数据后 每条去匹配如果 匹配成功那么就筛选出来...
  13. knockout.js的学习笔记3
  14. sip协议详解(三)
  15. hive执行出现问题:Ended Job = job_1667594872527_3123 with errors Error during job, obtaining debugging info
  16. 网易滑块识别-通用滑块识别
  17. AForge学习笔记(4):AForge.Genetic
  18. 认计算机电源,电脑硬件认识之什么是电脑的电源[图文]
  19. NCX SQL编程规范
  20. pythonif语句怎么换行输入_李沁和李易峰演的电视剧叫什么名字

热门文章

  1. R语言dplyr包summarise_all函数计算dataframe数据中所有数值数据列的均值和中位数、使用sapply筛选数值数据列(Summarize all Numeric Variables
  2. [附源码]计算机毕业设计JAVA社区空巢老人关爱服务平台
  3. android 4g lte,Turn on 4G LTE Settings | 4G Mobile Network | csl
  4. 在解决计算机主机,开机之后显示器黑屏无信号输入,但电脑主机一直在运行的解决方法...
  5. python3.9下载_Python-3.9下载_Python下载_Python最新版_5分享
  6. 2021年熔化焊接与热切割复审考试及熔化焊接与热切割
  7. 阿里巴巴最新最全 800 道 Java 后端面试大全(值得收藏)
  8. java \\u \u 转换
  9. 基于嵌入式STT-MRAM的架构方案
  10. Rockchip_DRM_Panel_Porting_Guide