怕自己会忘记,还是放到自己的仓库里面才安心!
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架构处理器功耗差异之前,我们首先要澄清一个常见的误区:即许多人认为功耗差异完全归咎于指令集的不同——ARM采用RISC(Reduced ...
ARM 和 x86 是两种不同的处理器架构,它们在指令集、性能、功耗、成本、稳定性和安全性等方面存在显著差异。 首先,从指令集的角度看,ARM 采用的是精简指令集(RISC),它的设计理念是减少指令数量,优化执行效率...
x86架构由英特尔(Intel)主导,是桌面电脑、笔记本电脑和服务器等传统计算设备的主导技术,而ARM架构则凭借其在移动设备上的低功耗特性,逐渐成为智能手机和平板电脑等移动终端设备的首选技术。 性能方面,x86架构...
ARM以其低功耗和高效率在移动设备市场占据主导地位,而x86则以其高性能和丰富的软件生态在桌面和服务器市场占据优势。理解这些差异有助于为项目选择最合适的处理器。 如何优化ARM代码以降低功耗? 在x86架构上运行...
总的来说,使用ARM-Linux-GCC-4.6.4-arm-x86_64交叉编译器能有效提高嵌入式开发的效率,使开发者能够在强大的开发环境中构建、测试和优化针对ARM架构的Linux应用。安装和使用过程中需留意系统配置、依赖管理和调试...
ARM与X86架构终端特性对比ARM X86架构
放在U盘根目录就可运行的EFI shell(ARM和X86)都可用版本,解压缩后,把EFI文件夹和startup.nsh文件放在U盘的根目录,启动的话需要懂点EFI boot的知识。另外目前的X86平台很多都开启了secure boot的功能,所以不能...
附上使用教程,配上资源链接。实现Genymotion安装arm架构的app。注意事项详见:https://blog.csdn.net/wangyanit/article/details/81366900
X86和ARM的区别 处理器架构是计算机科学中最基本的概念之一,它决定了计算机的性能和功能。在本文中,我们将讨论 X86 和 ARM 两种常见的处理器架构之间的区别。 首先,让我们来讨论什么是架构。架构是一个比较抽象...
首先,我们要理解ARM和X86架构的区别。ARM(Advanced RISC Machines)是一种精简指令集计算机(RISC)架构,常用于移动设备如智能手机和平板电脑,因为它功耗低且性能高效。而X86是英特尔和AMD等公司使用的复杂指令...
本文将深入探讨如何使用`rpmbuild`工具在ARM架构和X86_64架构下分别构建`openssh`和`openssl`的RPM软件包。 首先,让我们了解一下`rpmbuild`。`rpmbuild`是RPM打包系统的一部分,用于创建符合RPM规范的软件包。RPM...
arm-linux-gcc编译器,64位的4.6.4版本,还有4.6~4.9的版本的arm-linuxgcc编译器在我的资源中可以找到
ARM(Advanced RISC Machines)和x86是两种截然不同的处理器架构,它们各自代表了计算机处理器行业的不同发展方向。x86架构源自Intel公司的早期8086处理器,自1978年起,逐渐演变为现代的高性能个人电脑(PC)和...
Android busybox 可执行文件支持arm,arm64,x86,x86_64 版本1.34.1,更多版本见下面链接 https://busybox.net/downloads/binaries/ https://github.com/meefik/busybox
- **市场定位不同**:ARM处理器最初被设计用于嵌入式系统和移动设备,近年来随着智能手机和平板电脑市场的爆发性增长,ARM处理器的需求量急剧增加。x86处理器则主要应用于台式机和笔记本电脑等高性能计算设备。 - **...
### ARM微处理器与x86系列处理器的主要区别 #### 指令集体系结构 - **RISC vs CISC** - **RISC (Reduced Instruction Set Computer)**:ARM处理器采用RISC架构,其特点在于拥有较少数量但功能强大的指令集。这有助...
在这个分享中,提供了适用于Linux环境下的Java 1.8安装包,覆盖了x86、x64和arm三种不同的处理器架构,同时提供了两种安装格式:RPM(Red Hat Package Manager)格式和tar.gz压缩格式。这些文件的详细信息如下: 1....
Dism++ Windows全版本 包含【ARM64 X86 x64】Dism++可以说是一个Dism的GUI版,但是并不依赖Dism,直接基于更底层的CBS(Component Based Servicing Reference)。
arm-linux-gcc编译器,64位的4.7-2013.4版本,还有4.6~4.9的版本的arm-linuxgcc编译器在我的资源中可以找到
在当今的网络通讯技术中,UDP(用户数据报协议)和TCP(传输控制协议)是最基本的两种传输层协议,它们广泛应用于数据在网络中的传输。UDP协议以其简单、高效的特点在众多应用中发挥着重要作用。例如,在网络视频...