X86 架构和 ARM 架构

1.关于x86架构

X86是一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合,X86是由Intel推出的一种复杂指令集,用于控制芯片的运行的程序,现在X86已经广泛运用到了家用PC领域。x86是一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合,X与处理器没有任何关系,它是一个对所有*86系统的简单的通配符定义,例如:i386, 586,奔腾(pentium)。由于早期intel的CPU编号都是如8086,80286来编号,由于这整个系列的CPU都是指令兼容的,所以都用X86来标识所使用的指令集合如今的奔腾,P2,P4,赛扬系列都是支持X86指令系统的,所以都属于X86家族。X86的不足在什么地方?

(1)可变的指令长度   X86指令的长度是不定的,而且有几种不同的格式,结果造成X86 CPU的解码工作非常复杂,为了提高CPU的工作频率,不得不延长CPU中的流水线,而过长的流水线在分支预测出错的情况下,又会带来CPU工作停滞时间较长的弊端。   
(2)寄存器的贫乏   X86指令集架构只有8个通用寄存器,而且实际只能使用6个。这种情况同现代的超标量CPU极不适应,虽然工程师们采用寄存器重命名的技术来弥补这个缺陷,但造成了CPU过于复杂,流水线过长的局面。   
(3)内存访问   X86指令可访问内存地址,而现代RISC CPU则使用LOAD/STORE模式,只有LOAD和STORE指令才能从内存中读取数据到寄存器,所有其他指令只对寄存器中的操作数计算。在目前CPU的速度是内存速度的5倍或5倍以上的情况下,后一种工作模式才是正途。  (4)浮点堆栈   X87 FPU是目前最慢的FPU,主要的原因之一就在于X87指令使用一个操作数堆栈。如果没有足够多的寄存器进行计算,你就不得不使用堆栈来存放数据,这会浪费大量的时间来使用FXCH指令(即把正确的数据放到堆栈的顶部)。   
(5)4GB限制   这似乎不是问题,但是,在6年前,主流PC只有4MB内存,而目前的绝大部分PC装备了64MB以上的内存,是以前的16倍,所以,在下一个十年,PC内存突破1GB绝对不会令人惊讶,而且目前的大型服务器已经使用了1GB以上的内存,突破4GB内存的情况很快就会出现。   
(6)芯片变大   所有用于提高X86 CPU性能的方法,如寄存器重命名、巨大的缓冲器、乱序执行、分支预测、X86指令转化等等,都使CPU的芯片面积变得更大,也限制了工作频率的进一步提高,而额外集成的这些晶体管都只是为了解决X86指令的问题。

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相比,其功耗和成本占有很大优势。

来源:http://www.cnwit.com/bencandy.php?fid=66&id=451

上一篇:【Monkey】Monkey获取包名的方式


下一篇:用Delphi实现网络视频编程