ARM和X86功耗差别的深层原因探讨
今天碰到一个资深人士,总算找到一个比较合理的解释.
首先,功耗和工艺制程相关.
那为什么反而ARM的比X86耗电少得多呢.这就和另外一个因素相关了,那就是设计.
设计又分为前端和后端设计,前端设计体现了处理器的构架,精简指令集和复杂指令集的区别是通过前端设计体现的.后端设计处理电压,时钟等问题,是耗电的直接因素.
先说下后端怎么影响耗电的.我们都学过,晶体管耗电主要两个原因,一个是动态功耗,一个是漏电功耗.动态功耗是指晶体管在输入电压切换的时候产生的耗电,而所有的逻辑功能的0/1切换,归根结底都是时钟信号的切换.如果时钟信号保持不变,那么这部分的功耗就为0.这就是所谓的门控时钟(Clock
再来看前端.ARM的处理器有个特点,就是乱序执行能力不如X86.换句话说,就是用户在使用电脑的时候,他的操作是随机的,无法预测的,造成了指令也无法预测.X86为了增强对这种情况下的处理能力,加强了乱序指令的执行.此外,X86还增强了单核的多线程能力.这样做的缺点就是,无法很有效的关闭和恢复处理器子模块,因为一旦关闭,恢复起来就很慢,从而造成低性能.为了保持高性能,就不得不让大部分的模块都保持开启,
此外,在操作系统这个级别,个人电脑上通常会开很多线程,而移动平台通常会做优化,只保持必要的线程.这样使得耗电差距进一步加大.当然,如果X86用在移动平台,肯定也会因为线程少而省电.凌动系列(ATOM)专门为这些特性做了优化,在一定程度上降低乱序执行和多线程的处理能力,从而达到省电.
此外,现在移动处理器都是片上系统(SoC)结构,也就是说,处理器之外,图形,视频,音频,网络等功能都在一个芯片里.这些模块的打开与关闭就容易预测的多,并且可以通过软件来控制.这样,整体功耗就更加取决于软件和制造工艺而不是处理机结构.在这点上,X86的处理器占优势,因为Intel的工艺有很大优势,而软件优化只要去做肯定就可以做到.
以上原因我觉得较好的解释了ARM和X86的功耗差别.
现在看看趋势.
Intel现在积极推进晶体管工艺革新,简化前端设计,所以功耗劣势会逐步减低.再有,随着工艺的进一步发展,以后的移动设备主要功耗会转移到外部设备而非处理器.比如内存,显示屏,通讯模块等.这样,性能会变的越来越重要.不过Intel有个难以跨越的鸿沟,就是成本,为了保持高利润,就算可以降低也不会愿意降低.等到不得不靠降成本维生的那一天,说明技术优势不复存在,公司也快走到头了,只能转型依靠服务和平台来挣钱.这点可以参照思科和华为的竞争史.大胆预测,如果2013之后人类仍旧存在,移动处理器会逐渐分为两个市场,低端ARM把持,高端Intel独占.
评论