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独占.
关键字:ARM X86 功耗差别
引用地址:
ARM和X86功耗差别的深层原因探讨
推荐阅读最新更新时间:2024-03-16 14:49
ARM汇编中B跳转指令和LDR跳转的区别
B跳转指令是代码位置无关的,经过汇编后会替换为当前PC值加(减)一个修正值,不管这条指令是在哪一个地址执行,都能跳转到指定的位置。 B只能在当前PC的32M范围内跳转,LDR只能在当前PC的4KB(0xfff范围)跳转。 LDR PC,=xxx指令将向PC直接装载一个标号xxx的值,但标号经过编译后将被替换为一个与RO相对应的值,这样无论指令在何处执行都能跳转到一个指定的位置。 以AT91SAM9260 的启动代码片段为例,0x10000000为Flash基址,0x20000000为SDRAM基址: 其中ENTRY为起点,也就是说这条代码的偏移为0.设
[单片机]
视频监控中ARM与DSP的HPI接口设计
1 引言 随着网络技术、图像处理技术及嵌入式技术日趋成熟,视频监控技术得到广泛的应用。银行、工厂、政府、学校等部门,都设置有监控系统。尤其是在国际上一系列恐怖事件后,人们更感到监控系统的重要。而且要求视频监控设备有高清晰的视频效果的同时,还能对现场进行实时控制。所以,此类设备不但要有更高的数据处理能力和处理精度,还要有强大的系统控制、管理能力以及高速的网络数据传输速率。 目前,市面上主流的视频监控设备,大致可以分成两类,一是基于通用微处理器,二是基于数字信号处理器DSP。两种芯片在功能上有各自的特点,通用芯片适用于系统控制、管理和信息通讯等,DSP芯片则更适合执行复杂的数字计算、音视频数据处理等。若两种芯片协同工作,
[单片机]
ARM针对台积电40与28纳米制程拓展处理器优化包解决方案
2012年4月18日,中国上海——ARM今日宣布针对台湾积体电路制造股份有限公司(以下简称:台积电)的40与28纳米制程,大幅拓展用于一系列ARM Cortex™ 处理器的全新处理器优化包(POP)解决方案。未来,至少会有9款针对Cortex-A5、Cortex-A7、Cortex-A9与Cortex-A15处理器核心的最新处理器优化包推出。处理器优化包作为ARM全面实现策略中的重要一环,能让ARM的合作伙伴突破功耗、性能与面积优化等限制,迅速完成单核、双核与四核实现。同时,这一解决方案可帮助降低基于Cortex处理器的系统级芯片(SoC)的开发风险并缩短产品上市时间,合作伙伴最快只需六周便可开发出具有竞争力的产品。 在28
[单片机]
东芝推出TXZ+TM族高级系列新款M3H组ARM® Cortex®-M3微控制器
对消费产品与工业设备的主控装置以及电机控制进行优化 中国上海,2022年4月26日——东芝电子元件及存储装置株式会社(“东芝”)今日宣布,已开始 量产M3H组的21款新微控制器 ,M3H组是TXZ+™族高级系列的新成员,采用40nm工艺制造。M3H组内置ARM® Cortex®-M3内核,运行速度高达120MHz,最高可集成512KB代码闪存和32KB数据闪存,具有10万次的写入周期寿命。此外,新款微控制器还提供了丰富的接口与电机控制选项,例如UART、I2C、编码器和可编程电机控制。M3H组器件广泛适用于包括电机、家用电器和工业设备在内的众多应用。 为了应对消费类设备的多样性,新款M3H组产品用UART、TSPI、
[嵌入式]
采用ARM嵌入式微处理器的VGA显示技术分析
目前很多SOC厂商的微处理器芯片都集成了LCD控制器,如三星公司的S3C2410.S3C2440,Intel的Xscale系列等。大多数嵌入式系统也采用流行的LCD显示技术。但是在需要大屏幕显示、对分辨率要求不高的场合,如车间、厂房,采用大屏幕LCD则成本过高。另一方面,VGA显示技术因为技术发展成熟,成本低廉,仍在被大量使用,直到今天它仍是所有显示终端最为成熟的标准接口。如果让嵌入式处理器直接支持VGA显示器,则能很大地利用现有资源,节约系统成本。 1 基于S3C2440的VGA显示技术分析 通过分析VGA显示技术的时序逻辑与S3C2440内部集成LCD控制器驱动TFT LCD的时序逻辑,找出它们的共同点,分析在S3C244
[单片机]
arm linux 从入口到start_kernel 代码分析 - 4
3. 创建页表 通过前面的两步,我们已经确定了processor type 和 machine type. 此时,一些特定寄存器的值如下所示: r8 = machine info (struct machine_desc的基地址) r9 = cpu id (通过cp15协处理器获得的cpu id) r10 = procinfo (struct proc_info_list的基地址) 创建页表是通过函数 __create_page_tables 来实现的. 这里,我们使用的是arm的L1主页表,L1主页表也称为段页表(section page table) L1 主页表将4 GB
[单片机]
ARM9中LDR SP , = 4*1024 / LDR SP , = 0x34000000 的分析
reset: ldr sp, = 4*1024 @ SP=4096,设置栈指针,后面会调用C函数,调用C前需要设好栈 bl disable_watch_dog @ 关闭WATCHDOG,否则CPU会不断复位 bl clock_init @ 设置MPLL,改变FCLK、HCLK、PCLK bl memsetup @ 设置存储控制器以使用SDRAM bl copy_steppingstone_to_sdram @ 复制代码到SDRAM中 ldr pc, =on_sdram @ 跳到SDRAM中继续执行 on_sdram: msr
[单片机]
基于嵌入式ARM Linux步进电机驱动程序的设计
0 引言 随着激光雕刻机的不断发展和改进,嵌入式Linux的激光雕刻机比CNC(Computer numerical control)激光雕刻的优势不断显现,它大幅度提高了处理能力,方便了设计开发,节约了成本,是未来经济型激光雕刻机发展的趋势。而嵌入式ARM(Advanced RISC Machines)Linux步进电机驱动是实现激光雕刻的核心。 嵌入式开发过程中,经常需要为特定设备开发驱动程序。这些驱动程序的编写和编译与PC上的Linux驱动开发相比存在明显的差异,需要考虑的因素较多,实现过程较为复杂。本文以Samsung公司的友善之譬S3C2440开发板为例,探讨如何使用嵌入式Linux开发字符设备驱动程序来驱动步进
[单片机]