x86架构和arm架构处理器分析
时间:11-09
来源:互联网
点击:
在处理器普遍采用微指令,大的指令会被拆分成更小的指令,以达到更高的流水线效率.简单指令集的单条微指令和复杂指令集的单条微指令相比的 话,情况就更复杂.我手头没有关于比较的具体数据,但是至少前文所列出关于功耗和指令集相关的解释不是很有说服力.
今天碰到一个资深人士,总算找到一个比较合理的解释.
首先,功耗和工艺制程相关. 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的功耗差别.
今天碰到一个资深人士,总算找到一个比较合理的解释.
首先,功耗和工艺制程相关. 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的功耗差别.
x86架构arm架构处理 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)