Fork me on GitHub

x86,ARM,MIPS区别与辨析

​ 辨析 x86, ARM, MIPS 的一篇短文,参考网络一些资料整理如下。

简要介绍。

x86

​ x86 泛指 x86-64 架构,因为 x86-64 完全兼容x86。早期x86是CISC的代表,后来引入RISC理念,指令模块化,是 CISC 加 部分RISC的架构。

​ 产品:

  • Intel:至强,酷睿,奔腾,赛扬和凌动
  • AMD:锐龙,apu

ARM

​ ARM基于RISC,发展过程中引入了部分 CISC ,是 RISC 加部分 CISC 的技术架构。ARM的专利在ARM公司中,许多公司都需要拿到ARM公司的授权,然后开发出自己的芯片。

MIPS

​ MIPS基于RISC,学院派 CPU ,授权门槛低,用其做 MIPS 的衍生架构。主要用在嵌入式领域,如路由器。最活跃的是中国的龙芯,龙芯的loogisa 是MIPS 的拓展。

​区别与联系

  • ARM、MIPS性能和 x86差距很大,但是ARM 便宜且功耗低,MIPS 纯计算能力强。

  • ARM只涉及低功耗处理器,Intel的强项是涉及超高性能的台式机和服务器处理器。

  • 64位计算

    • 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位计算的需求后,于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核,根据具体的需要决定如何使用这些核。在后台同步邮件的时候,不需要高速的乱序执行,仅在玩复杂游戏的时候需要。在合适的时间使用合适的核。