ARM和X86功耗差别的深层原因探讨

ARM和X86功耗的差别一直是个很热的话题.ARM可以做的很低,甚至1瓦都不到.而X86服务器的芯片可以达到100-200瓦,就算是嵌入式处理器Atom系列也需要几瓦.很多人说这是指令集的关系.ARM采用精简指令集,X86采用复杂指令集,前者每条功能简单,单挑指令耗电低.而后者每条指令复杂,单个指令耗电高.但是这种解释很模糊.如果大家都做同样的事情,完成一个大功能,精简指令集需要指令较多,而复杂指令集需要指令少,加起来到底谁耗电多呢.还有,现在处理器普遍采用微指令,大的指令会被拆分成更小的指令,以达到更高的流水线效率.简单指令集的单条微指令和复杂指令集的单条微指令相比的话,情况就更复杂.我手头没有关于比较的具体数据,但是至少前文所列出关于功耗和指令集相关的解释不是很有说服力.

今天碰到一个资深人士,总算找到一个比较合理的解释.

首先,功耗和工艺制程相关. ARM的处理器,不管是哪家,主要是靠台积电等专业制造商生产的.而Intel的是自己的工厂制造的.一般来说后者比前者的工艺领先一代,也就是2-3年.如果同样的设计,造出来的处理器因该是Intel的更紧凑,比如一个是22纳米,一个是28纳米,同样功能肯定是22纳米的耗电更少.

那为什么反而ARM的比X86耗电少得多呢.这就和另外一个因素相关了,那就是设计.

设计又分为前端和后端设计,前端设计体现了处理器的构架,精简指令集和复杂指令集的区别是通过前端设计体现的.后端设计处理电压,时钟等问题,是耗电的直接因素.

先说下后端怎么影响耗电的.我们都学过,晶体管耗电主要两个原因,一个是动态功耗,一个是漏电功耗.动态功耗是指晶体管在输入电压切换的时候产生的耗电,而所有的逻辑功能的0/1切换,归根结底都是时钟信号的切换.如果时钟信号保持不变,那么这部分的功耗就为0.这就是所谓的门控时钟(Clock Gating).而漏电功耗可以通过关掉某个模块的电源来控制(Power Gating).当然,其中任何一项都会使得时钟和电源所控制的模块无法工作.他们的区别在于,门控时钟的恢复时间较短,而电源控制的时间较长.此外,如果条单条指令使用多个模块的功能,在恢复功能的时候,并不是最慢的那个模块的时间,而可能是几个模块时间相加,因为这牵涉到一个上电次序(Power Sequence)的问题,也就是恢复工作时候模块间是有先后次序的,不遵照这个次序,就无法恢复.而遵照这个次序,就会使得总恢复时间很长.所以在后端这块,可以得到一个结论,为了省电,可以关闭一些暂时不会用到的处理器模块.但是也不能轻易的关闭,否则一旦需要,恢复的话会让完成某个指令的时间会很长,总体性能显然降低.此外,子模块的门控时钟和电源开关通常是设计电路时就决定的,对于操作系统是透明的,无法通过软件来优化.

再来看前端.ARM的处理器有个特点,就是乱序执行能力不如X86.换句话说,就是用户在使用电脑的时候,他的操作是随机的,无法预测的,造成了指令也无法预测.X86为了增强对这种情况下的处理能力,加强了乱序指令的执行.此外,X86还增强了单核的多线程能力.这样做的缺点就是,无法很有效的关闭和恢复处理器子模块,因为一旦关闭,恢复起来就很慢,从而造成低性能.为了保持高性能,就不得不让大部分的模块都保持开启, 并且时钟也保持切换.这样做的直接后果就是耗电高.而ARM的指令强在确定次序的执行,并且依靠多核而不是单核多线程来执行.这样容易保持子模块和时钟信号的关闭,显然就更省电.

此外,在操作系统这个级别,个人电脑上通常会开很多线程,而移动平台通常会做优化,只保持必要的线程.这样使得耗电差距进一步加大.当然,如果X86用在移动平台,肯定也会因为线程少而省电.凌动系列(ATOM)专门为这些特性做了优化,在一定程度上降低乱序执行和多线程的处理能力,从而达到省电.

此外,现在移动处理器都是片上系统(SoC)结构,也就是说,处理器之外,图形,视频,音频,网络等功能都在一个芯片里.这些模块的打开与关闭就容易预测的多,并且可以通过软件来控制.这样,整体功耗就更加取决于软件和制造工艺而不是处理机结构.在这点上,X86的处理器占优势,因为Intel的工艺有很大优势,而软件优化只要去做肯定就可以做到.

以上原因我觉得较好的解释了ARM和X86的功耗差别.

现在看看趋势.

Intel现在积极推进晶体管工艺革新,简化前端设计,所以功耗劣势会逐步减低.再有,随着工艺的进一步发展,以后的移动设备主要功耗会转移到外部设备而非处理器.比如内存,显示屏,通讯模块等.这样,性能会变的越来越重要.不过Intel有个难以跨越的鸿沟,就是成本,为了保持高利润,就算可以降低也不会愿意降低.等到不得不靠降成本维生的那一天,说明技术优势不复存在,公司也快走到头了,只能转型依靠服务和平台来挣钱.这点可以参照思科和华为的竞争史.大胆预测,如果2013之后人类仍旧存在,移动处理器会逐渐分为两个市场,低端ARM把持,高端Intel独占.

转自CSDN移动平台-开发平台论坛

ARM和X86功耗差别的深层原因探讨的更多相关文章

  1. ARM与X86 CPU架构对比区别

    CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法.早期的CPU全部是CISC架构,它的设计目的是  CISC要用最少的机器语言 ...

  2. ARM和X86架构

    重温下CPU是什么 中央处理单元(CPU)主要由运算器.控制器.寄存器三部分组成.运算器起着运算的作用,控制器负责发出CPU每条指令所需要的信息,寄存器保存运算或者指令的一些临时文件以保证更高的速度. ...

  3. 【转】深入了解CPU两大架构ARM与X86

    来自:https://blog.csdn.net/u014641018/article/details/53484565 重温下CPU是什么 中央处理单元(CPU)主要由运算器.控制器.寄存器三部分组 ...

  4. 【转】arm和x86的区别

    来自: https://blog.csdn.net/u012513972/article/details/78349192/ 信不信,随便逮住一个人问他知不知道CPU,我想他的答案一定会是肯定的,但是 ...

  5. ARM与X86架构的对决[整编]

    CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法.早期的CPU全部是CISC架构,它的设计目的是  CISC要用最少的机器语言 ...

  6. 【转】普及一下ARM和X86的区别,鉴于ATOM已经入驻手机,AMD也会…

    这里简单来谈一下,ARM和X86之间为什么不太具有可比性的问题.要搞清楚这个问题首先要明白什么是架构,之前也有很多人提到了架构不同,但架构是什么意思?它是一个比较抽象的概念,不太容易用几句话就解释清楚 ...

  7. ARM与x86 CPU架构对比

    CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法.早期的CPU全部是CISC架构,它的设计目的是CISC要用最少的机器语言指令 ...

  8. ARM与X86 CPU架构区别

    CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构.它们的区别在于不同的CPU设计理念和方法.早期的CPU全部是CISC架构,它的设计目的是 CISC要用最少的机器语言指 ...

  9. ARM和x86的区别

    CPU的指令集从主流的体系结构上分为精简指令集(RISC)和复杂指令集(CISC).嵌入式系统中的主流处理器——ARM处理器,所使用的就是精简指 令集.而桌面领域的处理器大部分使用的是复杂指令集,比如 ...

随机推荐

  1. 工作中小知识点汇总(c#)

    1.OOP 实体与数据库字段转换(注意 此时实体字段必须和数据库中查询的字段列名相同) list = ModelExtend.GetByDataTablePart<EZRate>(ds.T ...

  2. LeetCode_Length of Last Word

    Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the l ...

  3. Slack 开源替代品 Rocket.Chat(聊天,文件上传等等)

    Rocket.Chat 是特性最丰富的 Slack 开源替代品之一. 主要功能:群组聊天,直接通信,私聊群,桌面通知,媒体嵌入,链接预览,文件上传,语音/视频 聊天,截图等等. Rocket.Chat ...

  4. Qt 框架的图形性能高(OpenGL上的系统效率高),网络性能低,开发效率高,Quick是可以走硬件加速——Qt中分为好几套图形系统,差不多代表了2D描画的发展史。最经典的软描画系统

    -----图形性能部分-----Qt的widgets部分,运行时的图像渲染性能是一般的,因为大部分的界面内容都是Qt自绘,没有走硬件加速,也就是说很多图形内容都是CPU算出来的.但是widgets底层 ...

  5. VS2010下WPF开发ARCGIS ENGINE 10的带Ribbon控件项目

    原文 http://blog.sina.com.cn/s/blog_47522f7f0100nq5t.html 题目好长,但是集目前最新的工具于一身..VS是最新的2010版,不过用的是.net3.5 ...

  6. WebStorm JavaScript 开发神器

    WebStorm 百度百科 http://baike.baidu.com/view/5443872.htm?fr=aladdin

  7. |,&,<<,>>运算符

    << 位移运算符(>>相反了) /* * 题目: 2 << 3 = 10000 = 16 * 解答: 2向左移动三位,就变成了10000 * 十进制 二进制 * 2 ...

  8. More is better(并差集)

    More is better Time Limit : 5000/1000ms (Java/Other)   Memory Limit : 327680/102400K (Java/Other) To ...

  9. 有二级目录的IIS配置

    当项目配置文件中配置了二级目录时,如下: <!--二级目录地址--> <add key="SecondCatalog" value="/hotel&qu ...

  10. Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作

    详细的Spring MVC框架搭配在这个连接中: Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 这篇主 ...