为啥arm架构比x86 x64省电?

烧音箱


嵌入式系统

消费者计算趋势一方面推动了功耗敏感型移动x86处理器(例如Intel Atom和Celeron)的出现,另一方面又推动了利用Cortex-A系列等内核的基于性能的基于Arm的处理器的出现。对于嵌入式系统开发人员而言,这意味着在开始一个新项目时,现在有更多选择来选择最佳平台(图1)。

但是,选择越多,选择过程就越复杂。此外,尽管传统的软件方法已将Arm项目引向Linux,而将X86项目引向Windows,但是针对ARM处理器的嵌入式Windows®操作系统和针对x86的轻量级Linux发行版也意味着,与以往相比,这种划分没有那么明显。

从开发人员的角度来看,有充分的理由继续使用经过验证的成功公式。同样,评估未尝试的选项也可以创建令人惊讶的新产品,这些新产品具有出乎意料的功能。

RISC与CISC

Arm处理器的起源可以追溯到1980年代中期,它基于Advanced RISC Machines(ARM)开发的精简指令集计算机(RISC)架构。

RISC处理器致力于将指令的多样性保持在最低限度同时还要使这些指令尽可能简单。每个时钟周期执行一条指令,这确保了可预测的处理并简化了流水线之类的加速技术。简单的指令只需要很少的硅晶体管,从而使芯片设计者可以自由地优化诸如成本和功耗之类的参数。另一方面,由于要选择的指令较少,每个时钟周期只有一条指令,因此需要大量指令才能完成给定任务。对于CISC处理器可以更轻松,快速地处理的复杂工作负载,这可能导致对RAM的严重依赖以及执行时间的降低。

x86家族始于1978年,最初是16位8086微处理器。它们被称为CISC(复杂指令集计算)处理器。与RISC不同,CISC指令可以执行复杂的任务,需要执行多个周期。这些可以包括浮点数学计算和图形处理指令。就每个程序的指令数量而言,CISC可以非常高效,与RISC相比,对代码存储和RAM的需求更低。另一方面,CISC处理器必须包含更多的晶体管来处理指令的复杂性。

x86已成为用于描述与Intel 8086及其后续产品兼容的CPU指令集的通用术语,包括台式机和笔记本电脑中常用的Atom,Celeron,Pentium和Core iX处理器。

性能和功耗

由于按照RISC设计原则在管芯上制造晶体管的强度较低,并且速度相对较低,因此ARM磁芯可以实现高效率,因此在低功耗设计中表现出色。基于ARM的处理器的典型最大功耗小于5W,并且具有许多封装,包括GPU,外围设备和内存。

英特尔内核由于复杂性的增加,往往比ARM内核消耗更多的功率。针对物联网和嵌入式用例的英特尔处理器的功耗通常从最小6W到大约30W。

对于要求不高的应用程序或需要较少命令的应用程序, Arm可以独立使用。但是,更复杂的应用程序(例如涉及高分辨率,高端图形或流数据的应用程序)可能更适合x86处理器。随着x86处理器有更多处理可用功率,任务可以更快地完成,并且当接收到更高优先级的中断不暂停,这最终提高了系统的可靠性并降低了软件崩溃。

ARM或x86是否最适合产品寿命?

按照PC市场的模式,x86处理器在过去的5/7年生命周期中已被替换对于工业和医疗领域的许多嵌入式产品而言,这并不是理想的选择。英特尔最近宣布其打算支持工业CPU达15年。

现在,这使x86架构与基于Arm的处理器处于同一类,后者通常具有超过10年的保证生产寿命

什么时间开发?技术支持如何?

为嵌入式项目选择最佳平台时,还应考虑对适当的开发工具和工程技能的任何现有投资。从理论上讲,开发在x86处理器上运行的软件应该是相对容易的杠杆工具,并支持PC软件开发。提供了专门为嵌入式开发而创建的IDE和编译器。使用基于Arm的硬件的开发人员将更有可能需要优化其软件,使其仅包含基本要素并相应地集成/优化驱动程序。制造商提供的可用开发工具,驱动程序和技术支持的质量,可能会极大地影响完成此操作的时间和成本。


你看我独角兽吗


这个问题可以扩展为:为什么arm架构的芯片都那么省电!


引言

最初的ARM架构被设计成即使是一个相对简单的指令译码器,也能以架构允许的最大速度运行。

后来的ARM版本有稍微复杂一点的指令解码逻辑,但是每条指令都是一个或两个单词长。

在x86架构上,指令可以是1字节长,也可以是14字节长。

在设计最初的x86架构时,指令是按顺序执行的,而且每个指令都需要多个周期才能执行。

如果执行一条指令需要三个周期,那么找到下一条指令的起始点也需要三个周期。

另一方面,现在人们很难忍受x86代码运行得那么慢了。


设计能够快速运行x86指令的硬件是有可能的

20年前,你可能会认为复杂的指令解码会限制x86的速度,但事实并非如此。

x86架构要求英特尔和其他芯片制造商,包括一些相当复杂的转换和缓存逻辑,以便一段代码第一次运行时,就转换成易于解码的形式。

如果代码再次运行,则可以跳过转换。可纵然是非常快的芯片,这些逻辑也消耗能量。

相对而言,许多低功耗ARM芯片的前端逻辑要少得多。

x86有这么缓存转换性能,arm比不上;可是,没有了额外技能加身的x86,比arm要逊色的多。


说说功耗

在低功耗的应用中,ARM处理器一直是首选,现在仍然是首选。

比较功耗并不是一件简单的事情。操作系统、RAM大小和类型、闪存和使用的接口等方面需要与处理器的影响分开。

然而,一般的规则是,ARM在关闭处理器和等待唤醒的模式和可能性方面非常强大。这种空闲模式是指操作系统正在运行,但只等待输入(例如来自鼠标、键盘或应用程序的输入)。

X86处理器的预期功耗大约为1瓦特。在i.MX6处理器的功耗将是这个数字的一半。

此外,ARM高端部分得益于少数状态/模式,这些 状态/模式 (states/modes)的功耗低至100mW,而不牺牲合理快速唤醒的可能性。

低功耗有许多优点。

手持式和电池供电的产品,将受益于增加电池寿命。做产品设计则可以使用更小的电池。由于需要更小的冷却装置,材料清单、BOM成本和产品尺寸可能会进一步减少。


写在最后

天下武功,唯快不破!小而快而全的arm架构普及也得益于其自身设计上的权衡。

Happy coding :)


我是@程序员小助手,持续分享编程故事,欢迎关注。

程序员小助手


1、设计理念不同

最好的性能和最低的功耗就犹如鱼和熊掌不能兼得,X86从诞生之初就是为了高性能而诞生的。所以,X86在设计之初就是为了高性能目标,自然省电就放在比较低的位置了。而ARM则是以低功耗为出发点的,自然省电是最重要的。下面看看在CPU设计阶段和功耗相关的有几个要素:

①、运行频率(时钟信号)

时钟信号每变化一次,芯片里面的门电路自然必须加电压做一次0/1切换,同时,需要执行的指令或者I/0操作都可以在这个时钟周期里调入CPU执行。而这一切就需要消耗电能。所以,时钟信号变化越快,不管你有没有指令调入CPU执行,CPU都在高速运转待命。就好比跑车发动机保持高转速待命。这里说的时钟信号变化就是CPU运行频率。所以,

设计的运行频率越高,自然功耗越大

X86处理器设计之初就是为了高性能,省电只是兼顾。所以,它的最高运行频率都很高。而且每个内核都一样。当然,为了兼顾省电,也设计有动态频率功能。intel的睿频就是这样的功能,它在电脑普通使用时会降低频率省电,在繁忙时时,升高频率使用。但它设计的起点频率就不低,毕竟电脑的不繁忙(普通使用)和手机的不繁忙(待机)是两个概念。


ARM处理器设计之初就是为了更省电,毕竟嵌入式等设备并不会要求非常高的性能。所以,ARM处理器特意设计了大核、小核共同使用。当设备运行不繁忙时,小核工作,大核心休息。当设备运行繁忙时,大核心和小核心可以一起工作。这样设计可以大大降低功耗。所以就算ARM的大核的运行频率很高,使用到机会却不多。

②、模块待机省电

我们都知道X86处理器在处理乱序执行能力方面远高于ARM处理器。因为,用户使用电脑的操作是非常随机,根本无法预测的。所以,X86芯片在设计时,为了满足这种特性,加强了乱序指令的执行,这就导致了一个耗电问题。这样必须保持处理器的所有子模块都在开启状态,不能随便进入关闭状态来省电。只有当用户按下休眠或者待机键时,才可以让CPU部分子模块进入关闭状态。


ARM处理器就不同了,嵌入式设备通常功能比较单一。就算是现在功能强大的手机,也只有那么小的屏幕,同一时间段都还是比较简单。所以,ARM没必要为了加强乱序指令处理能力。因为用到它的时候不多。如果玩复杂游戏时需要用到,ARM也考虑到了,就将乱序处理执行的事交给大核处理就行了。这样,就可以做到平时使用很省电了。


★在芯片设计时,除了这些考虑,还有浮点运算、单指令多数据等等一系列复杂运算。X86都把它设计到处理器里面了,使得X86处理器的结构变得比较复杂,自然更耗电很多。而ARM则没有,很多复杂的指令都转换成简单指令来处理,因为这些指令在嵌入式设备里用到时间不多。所以,ARM处理器结构比较简单。

2、制程工艺也有差别

众所周知,制程工艺的纳米数越低,性能越高,功耗越低。目前中高端手机上的ARM处理器都已经到7nm,5nm制程工艺了。而英特尔的X86处理器依然还在14nm、10nm徘徊,功耗自然也比较高。而AMD最新的X86 CPU,已经采用台积电7nm制程,功耗明显就下来很多。当然,前面讲的X86 芯片设计目标是高性能,也使得同样制程,X86芯片依然会更耗电一些。

3、ARM的高性能CPU,功耗一样很高

ARM处理器一旦设计方向往高性能发展,功耗同样很高,甚至超过英特尔。下面我们看看近期ARM的高性能服务器CPU。

  • 2017年高通也发布过一款10nm服务器Centriq 2400芯片。采用10nm工艺,48个核心。性能也很强劲,但功耗TDP也飙升到120W。
  • 2019年华为的鲲鹏920也是ARM架构的服务器CPU。里面集成64个核心。广泛用于华为泰山服务器。功耗TDP也高达200W
  • 2020年3月,安晟培 半导体公司发布了Ampere Altra处理器。它是一个搭载了80个内核的服务器CPU,性能要在数据中心芯片领域向英特尔和AMD发起挑战。但是功耗TDP也直接飙升到210W

总结

总之,ARM和X86、X64从设计开始就朝着不同的方向设计的。ARM是朝着低功耗去设计的,X86、X64都是朝着高性能去设计的。所以,ARM的能耗自然就比X86、X64更少,但是,如果ARM也走高性能路线,功耗一样会非常高。看看高通、华为、安晟培 的服务器CPU就知道了。


分享到:


相關文章: