【转】arm和x86的区别

来自: https://blog.csdn.net/u012513972/article/details/78349192/

信不信,随便逮住一个人问他知不知道CPU,我想他的答案一定会是肯定的,但是如果你再问他知道ARM和X86架构么?这两者的区别又是什么?绝大多数的人肯定是一脸懵逼。今天小编就带你深入了解CPU的这两大架构:ARM和X86。以后出去装X就靠它了! 
 ## 重温下CPU是什么鬼## 
  *处理单元(CPU)主要由运算器、控制器、寄存器三部分组成,从字面意思看运算器就是起着运算的作用,控制器就是负责发出CPU每条指令所需要的信息,寄存器就是保存运算或者指令的一些临时文件,这样可以保证更高的速度 
  CPU有着处理指令、执行操作、控制时间、处理数据四大作用,打个比喻来说,CPU就像我们的大脑,帮我们完成各种各样的生理活动。因此如果没有 CPU,那么电脑就是一堆废物,无法工作。移动设备其实很复杂,这些CPU需要执行数以百万计的指示,才能使它向我们期待的方向运行,而CPU的速度和功率效率是至关重要的。速度影响用户体验,而效率影响电池寿命。最完美的移动设备是高性能和低功耗相结合。

  要了解X86和ARM,就得先了解复杂指令集(CISC)和精简指令集(RISC) 从CPU发明到现在,有非常多种架构,从我们熟悉的X86、ARM,到不太熟悉的MIPS、IA64,它们之间的差距都非常大。但是如果从最基本的逻辑角度来分类的话,它们可以被分为两大类,即所谓的“复杂指令集”与“精简指令集”系统,也就是经常看到的“CISC”与“RISC”。

  Intel和ARM处理器的第一个区别是,前者使用复杂指令集(CISC),而后者使用精简指令集(RISC)。属于这两种类中的各种架构之间最大的区别,在于它们的设计者考虑问题方式的不同。下面小编分别来介绍:

  x86:Intel一家独大

  提到芯片巨头英特尔,每一个互联网用户应该都不会感到陌生,英特尔的CPU制造技术冠绝全球,但是你知道这家巨头企业是如何发家的么?

  事情要从1978年6月8日说起,Intel发布了一款新型的微处理器“8086”。而这款处理器在新出现时并没有得到什么关注,可是他却创造了一个新的时代。8086意味着x86架构的诞生,而x86作为特定微处理器执行计算机语言的指令集,定义了芯片的基本使用规则。8086也直接带动了Intel成为全球首屈一指的芯片巨头。 
  而x86不仅仅使Intel平步青云,也成为了业界的一种标准。在过去的几十年里,无论是笔记本、服务器、超级计算机还是编写设备,都可以看到x86的身影。而且,x86架构还在通过不同的方法进行改进,无论AMD、VIA都可以通过X86指令集的弹性来对付Intel,迫使x86进行改变。

  通过几十年的技术积累,x86服务器在服务器领域的地位几乎是独孤求败。小巧灵活的x86服务器在市场上应用十分广泛,互联网以及局域网内的文件、打印、通讯、web、电子邮件、数据库以及应用服务等多个领域都可以一展身手。

  x86服务器最大的特色在于可以兼容Windows操作系统,全部都采用了Intel的CPU。而Intel的x86服务器也可以分为两代,最初采用的 80x86系列在发布了产品80486后,Intel对该系列产品进行了重新命名并注册,这也就是现在Intel的Pentium系列,当然,这个系列在中国还有个更响亮的名字,即奔腾系列。

  目前奔腾系列的CPU包括:Pentium、Pentium MMX、Pentium Pro、PII、PII Xeon(至强)、PIII、PIII Xeon、P4 Xeon、Celeron2(赛扬)等。

  x86:40多年一路坚持

  x86老么?从时间上来看,确实老了。x86从1978年至今已经将近40年。可经过各种风云变幻之后,x86依然是服务器行业绝对的领导者,说这样的一个服务器行业领袖已经老去,那无非便是在指摘支撑起整个互联网的服务器行业已老。

  而且,经历了很多代的改进和变革,x86架构服务器依然是最快的架构之一。而且现在x86也是整个行业的标杆,从技术上来看x86从未落后过,只不过是和其他架构的服务器相比差距大小是否被拉近了。

  从指令集架构来看,CISC确实是有些陈旧了。即便是Intel也已经承认,CISC架构确实限制了CPU的发展。在CISC微处理器程序的各条指令相互串联执行,指令操作也需要串行执行,按照这种方式来进行任务执行,其控制当然十分简单,但计算机的整体利用率却被拖了后腿,执行速度相对偏慢。这也是CISC架构为中低档服务器所采用的原因之一。

  复杂指令集是一种伴随着计算机诞生便存在的一种指令集。其拥有较强的处理高级语言的能力,对于提高计算机性能有一定好处。而日趋复杂的指令系统不仅带来的效率的低下,还致使系统结构的复杂性增加,这种复杂性也将导致了CISC的通用性不佳。

  ARM:移动端异军突起

  在PC领域,Intel的CPU一枝独秀。而在移动端呢?那就当属ARM了。ARM全称为Advanced RISC Machine,也就是进阶精简指令集机器。ARM是RISC微处理器的代表作之一,其广泛的在嵌入式系统设计中被使用。而且ARM处理器最大的特点在于节能,这也是其在移动通信领域无人能敌的原因之一。

  打造ARM64位服务器 
  在过去,ARM专注于发展32位架构,在移动端称霸多年,让Intel眼馋不矣。而在PC和服务器领域,Intel的市场也让ARM十分眼红。ARM于 2011年底发布的ARMv8为其首款64位处理器,而戴尔在2013年发布了其首款基于ARM64位构架的服务器,相应的服务器解决方案也被开发出来。 
  专家认为,尽管Intel的x86处理器在服务器领域依然无敌,但64位的ARM构架应该可以找到自己的一席之地,ARM在内存和网络接口同计算核心间的距离会被尽可能的拉近,并借此承载起密度极高的大量计算进程,这种特性与Web服务器及其应用十分契合。

  在服务器领域,Intel的芯片也有很多水土不服的领域,比如内存容量、I/O和处理性能不成比例时,ARM处理器的表现会更加合格。ARM处理器的 ISA复杂程度要低很多,开发成本也要低,相应的,ARM服务器厂商针对这些应用场景所开发的服务器也就拥有了打败Intel的前提条件。而从这些应用环境所切入服务器市场的ARM架构服务器其针对客户也正是x86的原有部分客户。

  而Intel是不会轻易放手的,在服务器领域,其工艺对ARM保持领先,其处理器性能也远高于ARM处理器,可在功耗方面一直是Intel的一个心病。

  此外,Intel也想进军移动端,要打败ARM,在低功耗的服务器领域发力便是一个好的选择。采用了14nm工艺的Xeon-D,其包括的2个1.4G的Broadwell内核和GPU的功耗才仅仅为6W,在性能功耗比方便比ARM要高出不少。

  在2008年,Intel推出了Atom处理器,这款处理器是Intel史上体积最小,功耗最低的处理器,其开创出去便是之中弥补自己在移动计算领域先天不足的问题,而这一领域被ARM霸占多年,在技术和经验中Intel都不占优势,想要打败ARM又谈何容易?

  既然双方都对对方的领域虎视眈眈,那么ARM和Intel的大战绝对是不可避免的。那么想要进入Intel的服务器领域,ARM就需要拿出来真本事了,以其64位元处理器作为基础的芯片设计,功耗低、成本低,具备构架弹性,以这些优势去硬碰Intel又能有几成胜算呢?

  换个角度看,ARM芯片架构具备一定的灵活性,可以实现很多企业的特性需求,比如缓存一致性以及容错和高可用性等,其软件的生态环境成熟度却不及Intel,即便是有了更多的企业关注也未必就能有把握击败Intel,那么又是什么支持这ARM来客场挑战Intel呢?

  ARM与X86大比拼

  从几个方面比较ARM与X86架构Intel和ARM的处理器,除了最本质的复杂指令集(CISC)和精简指令集(RISC)的区别之外,下面我们再从以下几个方面对比下ARM和X86架构。 
  1、制造工艺ARM和Intel处理器的一大区别是ARM从来只是设计低功耗处理器,Intel的强项是设计超高性能的台式机和服务器处理器。

  一直以来,Intel都是台式机的服务器行业的老大。然而进入移动行业时,Intel依然使用和台式机同样的复杂指令集架构,试图将其硬塞入给移动设备使用的体积较小的处理器中。但是Intel i7处理器平均发热率为45瓦。基于ARM的片上系统的发热率最大瞬间峰值大约是3瓦,约为Intel i7处理器的1/15。其最新的Atom系列处理器采用了跟ARM处理器类似的温度控制设计,为此Intel必须使用最新的22纳米制造工艺。

  2、64位计算对于64位计算,ARM和Intel也有一些显著区别。Intel并没有开发64位版本的x86 指令集。64位的指令集名为x86-64(有时简称为x64),实际上是AMD设计开发的。Intel想做64位计算,它知道如果从自己的32位x86架构进化出64位架构,新架构效率会很低,于是它搞了一个新64位处理器项目名为IA64。由此制造出了Itanium系列处理器。

  而 ARM在看到移动设备对64位计算的需求后,于2011年发布了ARMv8 64位架构,这是为了下一代ARM指令集架构工作若干年后的结晶。为了基于原有的原则和指令集,开发一个简明的64位架构,ARMv8使用了两种执行模式,AArch32和AArch64。顾名思义,一个运行32位代码,一个运行64位代码。ARM设计的巧妙之处,是处理器在运行中可以无缝地在两种模式间切换。这意味着64位指令的解码器是全新设计的,不用兼顾32位指令,而处理器依然可以向后兼容。

  3、异构计算ARM的 big.LITTLE架构是一项Intel一时无法复制的创新。在big.LITTLE架构里,处理器可以是不同类型的。传统的双核或者四核处理器中包含同样的2个核或者4个核。一个双核Atom处理器中有两个一模一样的核,提供一样的性能,拥有相同的功耗。ARM通过big.LITTLE向移动设备推出了异构计算。这意味着处理器中的核可以有不同的性能和功耗。当设备正常运行时,使用低功耗核,而当你运行一款复杂的游戏时,使用的是高性能的核。

  这是什么做到的呢?设计处理器的时候,要考虑大量的技术设计的采用与否,这些技术设计决定了处理器的性能以及功耗。在一条指令被解码并准备执行时,Intel和ARM的处理器都使用流水线,就是说解码的过程是并行的。

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

  那为什么反而ARM的比X86耗电少得多呢。这就和另外一个因素相关了,那就是设计。

  设计又分为前端和后端设计,前端设计体现了处理器的构架,精简指令集和复杂指令集的区别是通过前端设计体现的。后端设计处理电压、时钟等问题,是耗电的直接因素。当然,其中任何一项都会使得时钟和电源所控制的模块无法工作。他们的区别在于,门控时钟的恢复时间较短,而电源控制的时间较长。此外,如果条单条指令使用多个模块的功能,在恢复功能的时候,并不是最慢的那个模块的时间,而可能是几个模块时间相加,因为这牵涉到一个上电次序的问题,也就是恢复工作时候模块间是有先后次序的,不遵照这个次序,就无法恢复。而遵照这个次序,就会使得总恢复时间很长。

  所以在后端这块,可以得到一个结论,为了省电,可以关闭一些暂时不会用到的处理器模块。但是也不能轻易的关闭,否则一旦需要,恢复的话会让完成某个指令的时间会很长,总体性能显然降低。此外,子模块的门控时钟和电源开关通常是设计电路时就决定的,对于操作系统是透明的,无法通过软件来优化。

  再来看前端。ARM的处理器有个特点,就是乱序执行能力不如X86。换句话说,就是用户在使用电脑的时候,他的操作是随机的,无法预测的,造成了指令也无法预测。X86为了增强对这种情况下的处理能力,加强了乱序指令的执行。此外,X86还增强了单核的多线程能力。这样做的缺点就是,无法很有效的关闭和恢复处理器子模块,因为一旦关闭,恢复起来就很慢,从而造成低性能。为了保持高性能,就不得不让大部分的模块都保持开启,并且时钟也保持切换。这样做的直接后果就是耗电高。而ARM的指令强在确定次序的执行,并且依靠多核而不是单核多线程来执行。这样容易保持子模块和时钟信号的关闭,显然就更省电。

  ARM和X86现在发展如何?

  关于X86架构和ARM架构这两者谁将统一市场的争执一直都有,但是也有人说这两者根本不具备可比性,X86无法做到 ARM的功耗,而ARM也无法做到X86的性能。现在ARM架构已经具备了进入服务器芯片的能力,众多芯片研发企业纷纷采用ARM架构研发服务器芯片无疑将促进其繁荣, 2015年一款采用ARM架构的Windows 10平板现身,这也是目前曝光的全球首款非X86架构、运行Windows系统的平板产品。

  随着移动网络和互联网融合互通日趋明显,ARM发展后台数据中心已经是大势所趋,所以与其说ARM倒更像是背水一战,无论是ARM还是Intel,双方都没有任何退路可言

上一篇:java获得路径的多种方式


下一篇:ARM与X86架构的对决[整编]