ARM与X86 CPU架构对比区别

CISC(复杂指令集计算机)和RISC(精简指令集计算机)是当前CPU的两种架构。它们的区别在于不同的CPU设计理念和方法。早期的CPU全部是CISC架构,它的设计目的是  CISC要用最少的机器语言指令来完成所需的计算任务。RISC和CISC是设计制造微处理器的两种典型技术,虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效的目的,但采用的方法不同,因此,在很多方面差异很大.

x86架构采用CISC,而ARM采用RISC。

ARM成立于1991年,是一家出售IP(技术知识产权)的公司,所谓的技术知识产权,就有点像是卖房屋的结构设计图,至于要怎修改,哪边开窗户,以及要怎加盖其它的花园,就看买了设计图的厂商自己决定。

而ARM的架构是采用RISC架构,如同它的名称一样,Advanced RISC
Machines,RISC架构在当初的PC架构争霸战虽然败给Intel所主导的x86处理器架构,却默默在另外的领域成长壮大;小从硬盘转速控制、电信基地台的计算、汽车喷射引擎的控制、音响系统、相机引擎,大到电动机具的控制等等,都能够看见采用ARM授权架构处理器的身影。

而有了设计图,当然还要有把设计图实现的厂商,而这些就是ARM架构的授权客户群。包括:

TI OMAP、Qualcomm Snapdragon、三星的蜂鸟(Hummingbird)、猎户座(Orion)、飞思卡尔(Freescale)的i.MX,或是ST-Ericsson的应用处理器、Freescale、联发科、Telechip、新岸线等。

X86是英特尔Intel首先开发制造的一种微处理器体系结构的泛称,包括Intel8086、80186、80286、80386以及80486以86结尾系列,英特尔统治整个CPU产业链长达数十年。但是,Intel以增加处理器本身复杂度作为代价,去换取更高的性能,但集成的指令集数量越来越多,给硬件带来的负荷也就越来越大,无形中增加了功耗和设计难度。

ARM(Advanced RISC
Machines)公司是苹果、Acorn、VLSI、Technology等公司的合资企业。ARM采用将芯片的设计方案授权(licensing)给其他公司生产的模式,在世界范围结成了超过100个的合作伙伴(Partners),将封闭设计的Intel公司变成全民公敌。ARM处理器非常适用于移动通信领域,具有低成本、高性能和低耗电的特性,ARM的高性价比和低耗能在移动市场比英特尔更具优势。

ARM的架构相较于x86有哪些特点?相较于基于CISC的x86架构处理器,由于为了满足电脑产业发展而不断加入指令集,使得处理器日益庞大,但每个指令集用到的频率也越差越大,许多指令到后来已经相当少用,甚至是可以被新的指令所取代。而ARM架构则大幅简化架构,仅保留所需要的指令,可以让整个处理器更为简化,拥有小体积、高效能的特性。

另外,ARM的架构老早就已经作到高密度整合,由于ARM授权的弹性以及核心架构单纯,ARM处理器架构可以很容易与其它专职的特殊核心,像是GPU、多媒体译码核心、基频调制解调器、I/O控制等架构整合,透过SoC(System
On a
Chip,系统单芯片)的方式,一颗小小的ARM架构应用处理器,完成近年x86架构处理器积极跨足的单芯片设计,并且透过各种不同的核心分工各司其职,ARM架构应用处理器的核心负担相较传统x86处理器低上许多,并且因为早前应用处理器的需求就是以低功耗为重点,即便如今效能不断提升,仍是以保有省电的特性为前提发展。

ARM架构的另一个优点,就是*性,只要像ARM买下核心授权,就可以与其它IP公司的方案以及这家授权客户本身的优势技术整合,虽同为同一世代的ARM核心架构,即便频率相同,结果也不同。不过这也使得ARM应用处理器光从基本规格是不一定能看出操作效能的,例如同样隶属高通Snapdragon,频率1GHz的第一世代旗舰QSD8x50甚至不敌频率仅800MHz的第二世代MSM7230。

ARM的架构之所以在智能手机以及平板能够迅速窜红,苹果iOS装置可说是大功臣,在苹果之前,智能手机在市场上一直载浮载沉,虽然有着号称智能手机平台市占率第一的Nokia
Symbian,以及Windows Mobile、Palm
OS、BlackBerry等系统,不过当时的环境在缺乏行动网络为后盾,在线商店的概念也还未发展成型;一直到苹果以iPhone打响新世代智能手机第一炮后,市场才真正体认到智能手机原来可以是这么容易使用。

iPhone的出现也间接带起市场对于ARM架构应用处理器的需求,不过光是苹果也无法带起市场对于ARM处理器的需求,如WM(WP7)手机与Symbian也纷纷加入新一代智能手机战局,但是真正成为关键的,是Google

Android宣布参战后,其它手机厂商取得一个相较过去成熟的通用智能手机平台,而各厂商又为了进行产品差异化,开始针对ARM架构应用处理器的效能以及硬件支持要求,使得过去发展缓速的ARM架构一下子热络起来,也让ARM架构一夕之间成为火热话题。

GOOGLE的Android系统和苹果的IPAD、IPHONE推出后,ARM架构的电脑系统(特别是在终端方面应用)受到用户的广泛支持和追捧,ARM+Android成为IT、通信领域最热门的话题,众多芯片厂商纷纷推出具有各种独特应用功能基于ARM结构开发的产品,近期最新形成的“异构概念”更成为电脑今后发展主要方向。在IT行业推崇了20多年的“性价比“概念受到根本的动摇和冲击,“适用的才是最好的”已经被越来越多的用户接受。

我们就ARM架构的系统与X86架构系统的特性进行一个系统分析,方便用户在选择系统时进行理性、合理的比价分析。

一、性能:

X86结构的电脑无论如何都比ARM结构的系统在性能方面要快得多、强得多。X86的CPU随便就是1G以上、双核、四核大行其道,通常使用45nm(甚至更高级)制程的工艺进行生产;而ARM方面:CPU通常是几百兆,最近才出现1G左右的CPU,制程通常使用不到65nm制程的工艺,可以说在性能和生产工艺方面ARM根本不是X86结构系统的对手。

但ARM的优势不在于性能强大而在于效率,ARM采用RISC流水线指令集,在完成综合性工作方面根本就处于劣势,而在一些任务相对固定的应用场合其优势就能发挥得淋漓尽致。

二、扩展能力

X86结构的电脑采用“桥”的方式与扩展设备(如:硬盘、内存等)进行连接,而且x86结构的电脑出现了近30年,其配套扩展的设备种类多、价格也比较便宜,所以x86结构的电脑能很容易进行性能扩展,如增加内存、硬盘等。

ARM结构的电脑是通过专用的数据接口使CPU与数据存储设备进行连接,所以ARM的存储、内存等性能扩展难以进行(一般在产品设计时已经定好其内存及数据存储的容量),所以采用ARM结构的系统,一般不考虑扩展。基本奉行“够用就好”的原则。

三、操作系统的兼容性

X86系统由微软及Intel构建的Wintel联盟一统天下,垄断了个人电脑操作系统近30年,形成巨大的用户群,也深深固化了众多用户的使用习惯,同时x86系统在硬件和软件开发方面已经形成统一的标准,几乎所有x86硬件平台都可以直接使用微软的视窗系统及现在流行的几乎所有工具软件,所以x86系统在兼容性方面具有无可比拟的优势。

ARM系统几乎都采用Linux的操作系统,而且几乎所有的硬件系统都要单独构建自己的系统,与其他系统不能兼容,这也导致其应用软件不能方便移植,这一点一直严重制约了ARM系统的发展和应用。GOOGLE开发了开放式的Android系统后,统一了ARM结构电脑的操作系统,使新推出基于ARM结构的电脑系统有了统一的、开放式的、免费的操作系统,为ARM的发展提供了强大的支持和动力。

四、软件开发的方便性及可使用工具的多样性

X86结构的系统推出已经近30年,在此期间,x86电脑经过飞速发展的黄金时期,用户的应用、软件配套、软件开发工具的配套及兼容等工作,已经到达非常成熟甚至可以说是完美的境界。所以使用X86电脑系统不仅有大量的第三方软件可供选择,也有大量的软件编程工具可以帮助您完成您所希望完成的工作。

Arm结构的电脑系统因为硬件性能的制约、操作系统的精简、以及系统兼容等问题的制约,造成Arm结构的电脑系统不可能像X86电脑系统那样有众多的编程工具和第三方软件可供选择及使用,ARM的编程语言大多采用C和JAVA。

对这一点的比较,更直接的结论是:基于x86结构电脑系统平台开发软件比arm结构系统更容易、更简单、实际成本也更低,同时更容易找到第三方软件(免去自己开发的时间和成本),而且软件移植更容易。

从以上对比分析,给了我们的一个很清晰的感觉,ARM和X86结构的电脑根本就无法对比,ARM根本就不是X86电脑的的对手。是的,如果只考虑上述几个方面的要数,ARM确实无法与X86电脑竞争,甚至连比较的资格都没有。但是近1、2年,ARM的产品在终端应用特别是手持终端应用飞速发展(如:智能手机、平板电脑等),其销售数量已经远远超出x86结构的电脑销售数量,可见ARM是具有其与X86结构电脑不可对比的优势。该优势就是:功耗.

五、功耗

X86电脑因考虑要适应各种应用的需求,其发展思路是:性能+速度。20多年来x86电脑的速度从原来8088的几M发展到现在随便就是几G,而且还是几核,其速度和性能已经提升了千、万倍,技术进步使x86电脑成为大众生活中不可缺少的一部分。但是x86电脑发展的方向和模式,使其功耗一直居高不下,一台电脑随便就是几百瓦,即使是号称低功耗节能的手提电脑或上网本,也有十几、二十多瓦的功耗,这与ARM结构的电脑就无法相比。

ARM的设计及发展思路是:满足某个特殊方面的应用即可,在某一专项领域是最强的,(哪怕在其他方面一无是处),这样Arm以其不是最强的技术,同样也不是很高级制程的制造工艺,生产出性能不是很强的电脑系统,但在某个专业应用方面则是最好的,特别是在众多终端应用,尤其在移动终端应用上占有绝对优势的统治地位,这个原因就是:功耗。

高功耗导致了一系列X86系统无法解决的问题出现:系统的续航能力弱、体积无法缩小、稳定性差、对使用环境要求高等问题。从这里我们可以看到x86系统与ARM系统是在两个完全不同领域方面的应用,他们之间根本不存在替换性,在服务器、工作站以及其他高性能运算等应用方面,是可以不考虑功耗和使用环境等条件时,X86系统占了优绝对优势;但受功耗、环境等条件制约且工作任务固定的情况下ARM就占有很大的优势,在手持式移动终端领域,X86的功耗更使他英雄毫无用武之地。

但在很多的应用终端领域,现正成为两大阵营争夺的重点,ARM阵营努力增加其性能和系统(特别是操作系统)的通用性,蚕食x86系统的部分终端应用市场;X86阵营努力降低功耗保住其市场,同时侵入手持移动终端市场。

我们今天讨论的重点就是在两大阵营都能可以覆盖的终端应用领域进行对比、分析。这类型的应用一定是终端应用,通常有下面几个特征:

1、系统的工作性质比较固定(如:POS、ATM、车载电脑系统、多媒体广告播放系统、视频监控系统,以及众多的信息接收、控制系统和专业的工控系统等等);

2、应用环境比较恶劣,如:温度变化很大,高温超过40度,低温达零下20度;多尘、潮湿等;

3、有一定的应用数量,但数量不是很大。

这部分的应用领域传统上是由X86结构的低功耗工控机(系统)实现的,但近几年ARM系统的飞速发展,特别是Android操作系统出现后,ARM+Android大有取代x86系统占领(低功耗)终端应用领域的趋势。我们在考虑这种应用对比时根据ARM和X86的特性对比主要还考虑以下以及因数:

1、性能:

如果ARM系统的性能能满足应用需求时,建议尽可能可虑采用ARM结构的产品,否则只能考虑X86的产品。注意在这里我们要强调的是:不要讲两个系统的绝对性能进行比较,而是以能否您的应用特点为标准进行分析。

2、应用数量:

如果您的应用数量太少,您可能根本不值得独立开发一套应用系统,但如果您的应用数量达到几百甚至过千时,您是值得考虑自己开发一套新的系统的。因为:Arm的开发成本和制造成本相对比较低,如果有几百个以上终端应用,应该可以分摊掉开发成本。

如果选用X86结构的系统,根本不应该考虑单独开发一套专用系统(因为开发成本太高,可能是ARM的10倍),而是在市场上筛选出最接近您需求的产品,以避免高昂的硬件开发成本,和今后的制造成本(如果批次生产的数量不够,排产成本也会很高)。

3、操作系统

ARM的操作系统通常是单独建立一个自己的Linux系统,且系统与系统间不能兼容,这严重制约了Arm的应用扩展,但Android出现后,系统兼容的屏障正逐步消失,促进了系统以及应用软件的兼容,大大扩大了ARM应用软件的的数量同时扩大了其应用空间。

4、功耗以及功耗延伸的系列问题

ARM的优势是功耗低,其实低功耗还意味着:

1)稳定性高:因为功耗越高电子元器件的稳定性和可靠性越差,对低功耗的产品只要选择好外围元件的品质,系统的稳定性不会有太大问题;

2)散热成本低和可以考虑更小的产品体积:对高功耗的产品不可避免要考虑散热问题,而散热设备(或器件)的存在,有制约了产品的体积,对某些场合的应用构成致命的制约。但ARM的功耗<1W,完全不用考虑散热问题。

3)功耗低对供电电源的要求低:几乎所有电子产品,(在同等条件下)功耗越高对电源的要求越高,电源的成本就越高。

4)功耗低电池的续航时间长,这不作详尽解释。

5)功耗低对抗环境伤害的能力强:低功耗产品因为不用考虑散热,可以将产品密封保护起来,但高功耗产品必须散热,甚至需要风扇帮助散热,这样必然使很多的元件和线路裸露在空气中,被空气中的尘埃、湿气、酸碱物质等腐蚀。

5、软件开发成本问题

Arm的操作系统很小(精简)不可能带很多工具,通常基于Arm的软件大多用C或JAVA开发,其成本会比基于X86系统的高。而且对大多数ARM而言,因其操作系统不一样,软件业不能在两个系统中*互换使用,但一般来说:用C或JAVA编写的软件只需在ARM平台的操作系统中编译一下就可以移植过去。

但对Android系统开发的软件,只要能在某台Arm设备中运行,就可以在另一台基于同样系统的设备中运行。

6、硬件的开发成本

ARM实际上在CPU芯片中已经整合了几乎所有功能,几乎所有线路按原理图直接拉出就可以了,需要扩展的部分一般不多,所以其开发成本会比较低,通常三五万就可以了。

但X86的外围线路很多,需要相当经验的工程师,而且还有BIOS等设计,所以X86主板的设计费用会比较高,通常要二三十万。

7、硬件的制造及应用成本

无论Arm或X86主板其制造成本都是由元件和加工费构成,通常一片ARM的主板价格与一片X86主板的价格差不多,但ARM是一片可以独立使用的产品,但x86主板通常还要加上:CPU、内存、硬盘甚至还有显卡。

另外X86还要配上一个电源,这个电源比ARM得电源要贵很多。

所以:明显X86在硬件方面的应用成本比ARM高得多。

总结上面对比,X86系统和ARM系统应该是两个完全不同领域的应用,如果功能单一又受到环境制约的应用,如:POS、ATM、多媒体广告机(现已经有ARM+DSP的产品)、车载电脑终端等应用,应该首先考虑ARM方案,ARM方案与X86相比,其功耗和成本占有很大优势。

安卓支持三类处理器(CPU):ARM、Intel和MIPS。ARM无疑被使用得最为广泛。Intel因为普及于台式机和服务器而被人们所熟知,然而对移动行业影响力相对较小。MIPS在32位和64位嵌入式领域中历史悠久,获得了不少的成功,可目前Android的采用率在三者中最低。

总之,ARM现在是赢家而Intel是ARM的最强对手。那么ARM处理器和Intel处理器到底有何区别?为什么ARM如此受欢迎?你的智能手机或平板电脑用的是什么处理器到底重要不重要?

处理器(CPU)

*处理器(CPU)是你智能设备的大脑。它的任务是通过执行一系列指令来驱动你的设备,包括显示屏、触摸屏、调制解调器等,让一坨塑料金属混合物变成闪亮的智能手机或者平板电脑。

移动设备非常复杂,其中的处理器需要执行数百万行指令才能完成人们希望这些设备去做的事。速度和功耗对处理器来说至关重要。速度影响用户体验,功耗影响电池寿命。完美的移动设备必须有好性能以及低功耗。

这就是为什么选择什么样的处理器很重要。一个超级耗电、反应迟钝的处理器会很快吸干你的电池,而一个考究的、高效的处理器给你带来高性能和长久的电池寿命。

总体而言,ARM和Intel处理器的第一个区别是,前者使用精简指令集(RISC),而后者使用复杂指令集(CISC)。

通俗而言,精简指令集规模较小,更接近原子操作,而复杂指令集规模较大,更加复杂。所谓原子操作,是指每条指令的工作大都可以由处理器在一个操作内完成,例如对两个寄存器做加法。

复杂指令集的指令描述某个意图,但是处理器必须执行3或4个更简单的指令来实现这个意图。例如,可以命令一个复杂指令集处理器对2个数求和,并把结果存入主内存中。为了完成这个命令,处理器首先从地址1中取得第一个数(操作1),然后从地址2中取得另一个数(操作2),然后求和(操作3),等等。

所有的现代处理器都使用一种所谓微指令的概念,这是一个处理器内部的指令集合,用来描述处理器可以做的原子操作。

复杂指令集处理器实际上执行了3条微指令。对精简指令集处理器而言,其指令跟其微指令十分接近,而复杂指令集处理器的指令需要先被转换成一些更精简的微指令(就像前面的复杂指令集处理器做加法的例子中那样)。

也就是说,精简指令集处理器中的解码器(负责告诉处理器到底要干些什么的东东)要简单得多,而简洁意味着高效和低功耗。

制造工艺

ARM和Intel处理器的另外一个主要区别是ARM从来只是设计低功耗处理器。其宗旨是设计低功耗处理器,这是他们的强项。Intel的强项是设计超高性能的台式机和服务器处理器,并且的确做的不错。

Intel是台式机的服务器行业的老大。过去的20年里我所有的PC,笔记本和服务器(除了一个外)用的都是Intel的处理器。然而进入移动行业时,Intel依然使用和台式机同样的复杂指令集架构,试图将其硬塞入给移动设备使用的体积较小的处理器中。

Intel i7处理器平均发热率为45瓦。基于ARM的片上系统(其中包括图形处理器)的发热率最大瞬间峰值大约是3瓦,约为Intel i7处理器的1/15。Intel现如今是个巨头,雇佣了大量的聪明人。

其最新的Atom系列处理器采用了跟ARM处理器类似的温度控制设计,为此Intel必须使用最新的22纳米制造工艺。一般而言,制造工艺的纳米数越小,能量的使用效率越高。ARM处理器使用更低的制造工艺,拥有类似的温控效果。比如,高通晓龙805处理器使用28纳米制造工艺。

64位

对于64位计算,ARM和Intel也有一些显著区别。你知不知道,Intel并没有开发64位版本的x86指令集。这个64位的指令集,名为x86-64(有时简称为x64),实际上是AMD设计开发的。

故事是这样的:Intel想搞64位计算,它知道如果从自己的32位x86架构进化出的64位架构的话,新架构效率会很低,于是它搞了一个新64位处理器项目名为IA64。由此制造出了Itanium系列处理器。

同时AMD知道自己造不出能与IA64兼容的处理器,于是它把x86扩展一下,加入了64位寻址和64位寄存器。最终出来的架构,人称AMD64,成为了64位版本的x86处理器的标准。

IA64项目并不算得上成功,现如今基本被放弃了。Intel最终采用了AMD64。Intel当前给出的移动方案,是采用了AMD开发的64位指令集(有些许差别)的64位处理器。

ARM的故事很不一样:看到移动设备对64位计算的需求后,ARM于2011年发布了ARMv8 64位架构,这是为了下一代ARM指令集架构工作若干年后的结晶。为了基于原有的原则和指令集,开发一个简明的64位架构,ARMv8使用了两种执行模式,AArch32和AArch64。

顾名思义,一个运行32位代码,一个运行64位代码。ARM设计的巧妙之处,是处理器在运行中可以无缝地在两种模式间切换。这意味着64位指令的解码器是全新设计的,不用兼顾32位指令,而处理器依然可以向后兼容。

异构计算

ARM的big.LITTLE架构是一项Intel一时无法复制的创新。在big.LITTLE架构里,处理器可以是不同类型的。传统的双核或者四核处理器中包含同样的2个核或者4个核。一个双核Atom处理器中有两个一模一样的核,提供一样的性能,拥有相同的功耗。

ARM通过big.LITTLE向移动设备推出了异构计算。这意味着处理器中的核可以有不同的性能和功耗。当设备正常运行时,使用低功耗核,而当你运行一款复杂的游戏是,使用的是高性能的核。

这是什么做到的呢?设计处理器的时候,要考虑大量的技术设计的采用与否,这些技术设计决定了处理器的性能以及功耗。

在一条指令被解码并准备执行时,Intel和ARM的处理器都使用流水线。就是说解码的过程是并行的。

第一步从内存中读取指令,第二步检查和解码指令,第三步执行指令,周而复始。流水线的好处在于,当前指令在第二步的时候,下一条指令已经处于第一步。当前指令在第三步中执行的时候,下一条指令正处于第二步,而下下条指令处于第一步中,如此循环。

为了更快地执行指令,这些流水线可以被设计成允许指令们不按照程序的顺序被执行(乱序执行)。一些巧妙的逻辑结构可以判断下一条指令是否依赖于当前的指令执行的结果。Intel和ARM都提供乱序执行逻辑结构,可想而知,这种结构十分的复杂。复杂意味着更多的功耗。

Intel处理器由设计者们选择是否加入乱序逻辑结构。异构计算则没有这方便的问题。ARM Cortex-A53采用顺序执行,因此功耗低一些。而ARM Cortex-A57使用乱序执行,所以更快但更耗电。采用big.LITTLE架构的处理器可以同时拥有Cortex-A53和Cortex-A57核,根据具体的需要决定如何使用这些核。在后台同步邮件的时候,不需要高速的乱序执行,仅在玩复杂游戏的时候需要。在合适的时间使用合适的核。

原则上,处理器中复杂逻辑结构越多性能越高,越少则效率越高,指令流水线只是其中之一,包括浮点运算单元,单指令多数据逻辑(SIMD)(比如ARM的NEON和Intel的SSE/MMX),以及一级缓存二级缓存。

每种Atom片上系统,Intel仅提供一种方案,而ARM以及芯片合作伙伴提供的芯片则有多种方案可以配置。

兼容性

ARM目前是移动处理器的老大。ARM的合作伙伴们基于ARM的设计向移动和嵌入式市场的出货量已经达500亿片。对于安卓,ARM已然成为标准,这对Intel和MIPS而言是个问题。

尽管安卓的主要编程语言是Java,开发者也可以使用现有的代码(比如C或者C++)去开发应用。这些固定平台的应用通常都编译成ARM处理器的程序,不全都会编译成Intel或者MIPS处理器的程序。

为了解决这个问题,Intel和MIPS要使用特殊的转换软件把ARM的指令转换成他们处理器使用的指令。这当然是会降低性能的。

目前MIPS和Intel声称兼容Play Store里大约90%的应用。对于最受欢迎的150个应用,兼容率是100%。一方面兼容率很高,另一方面表明ARM的主导地位,使得其他的处理器设计者需要提供一个兼容层。

总结

制造处理器是一项复杂的业务。ARM,Intel和MIPS都在不懈努力地向移动设备提供最好的技术,而很明显ARM是老大。拥有着低功耗,简明的64位设计,异构计算,以及作为移动计算的标准,看来ARM必能保持其老大的地位。

上一篇:bzoj 1151: [CTSC2007]动物园zoo


下一篇:朱晔的互联网架构实践心得S2E4:小议微服务的各种玩法(古典、SOA、传统、K8S、ServiceMesh)