ARM体系结构与x86有何不同?

x86架构专门devise用于键盘而ARM期望移动? 两者之间的主要区别是什么?

ARM是RISC (精简指令集计算)体系结构,而x86是CISC (复杂指令集计算)。

这两者之间的核心区别在于,ARM指令只能在寄存器上运行,只有几条指令用于将数据加载到内存或将数据保存到内存中,而x86也可以直接在内存上运行。 直到第8版,ARM是一个本地的32位体系结构,有利于四字节操作。

所以ARM是一个更简单的架构,从而导致硅片面积小,省电function多,而x86在功耗和生产方面则成为动力兽。

关于“ x86架构专门devise用于键盘而ARM期望移动? ”的问题。 x86不是专门为使用键盘而devise的,不适用于手机的ARM 。 不过,由于核心架构的select,x86实际上也有直接与IO协同工作的指令,而ARM还没有。 但是,使用USB等专用IO总线,对这些function的需求也在消失。

如果您需要引用一个文档,那么Cortex-A系列程序员指南(4.0)讲述了RISC和CISC体系结构之间的区别:

ARM处理器是精简指令集计算机(RISC)处理器。

像x86这样的复杂指令集计算机(CISC)处理器具有丰富的指令集,能够用单个指令完成复杂的任务。 这样的处理器通常具有大量的内部逻辑,将机器指令解码为内部操作序列(微码)。

与之相比,RISC架构的通用指令数量更less,可以用更less的晶体pipe来执行,从而使硅片更便宜,更节能。 像其他RISC架构一样,ARM内核具有大量的通用寄存器,许多指令在一个周期内执行。 它具有简单的寻址模式,所有的加载/存储地址都可以从寄存器内容和指令字段中确定。

ARM公司还提供了一篇名为“ 架构,处理器和设备开发条款”的文章,描述这些条款如何适用于其业务。

一个比较指令集架构的例子:

例如,如果在应用程序中需要某种按字节顺序的内存比较块(由编译器生成,跳过细节),这就是x86样子

 repe cmpsb /* repeat while equal compare string bytewise */ 

而在ARM最短的forms可能看起来像(没有错误检查等)

 top: ldrb r2, [r0, #1]! /* load a byte from address in r0 into r2, increment r0 after */ ldrb r3, [r1, #1]! /* load a byte from address in r1 into r3, increment r1 after */ subs r2, r3, r2 /* subtract r2 from r3 and put result into r2 */ beq top /* branch(/jump) if result is zero */ 

这应该给你一个关于RISC和CISC指令集复杂度不同的提示。

对于键盘和手机都没有特别的要求,除了多年以来ARM在功耗方面有相当大的优势,这对于各种电池供电的设备来说都很有吸引力。

就实际的区别而言:ARM有更多的寄存器,早在Inteljoin之前,大多数指令都支持预测,它有一个“拇指”模式,主要用于提高代码密度(因此程序适合内存less),并且长期(可以称之为“技巧”,如果你愿意的话)几乎可以在任何地方省电。

英特尔一度比功耗更重视速度。 他们开始强调功耗主要在笔记本电脑的背景下。 对于笔记本电脑来说,他们典型的功耗目标是相当小的笔记本电脑6瓦左右。 最近(最近),他们已经开始瞄准移动设备(手机,平板电脑等)。对于这个市场,他们最多只能看几个瓦特。 他们似乎做得相当不错,虽然他们的方法与ARM的有很大的不同,强调ARM主要强调微架构的制造技术(毫不奇怪,考虑到ARM销售devise,而把制造留给别人)。

除了杰里·科芬的第一段。 也就是说,ARMdevise可以降低功耗。

ARM公司,只许可CPU技术。 他们不做实物筹码。 这允许其他公司添加各种外围技术,通常称为SOC或片上系统。 无论设备是平板电脑,手机还是车载娱乐系统。 这使得芯片供应商可以将芯片的其余部分定制为特定的应用。 这还有其他好处,

  1. 降低董事会成本
  2. 功率更低(note1)
  3. 更容易制造
  4. 更小的外形

ARM通过AMBA支持SOC供应商,允许SOC实施者购买现成的第三方模块; 像以太网,内存和中断控制器。 其他一些CPU平台也支持MIPS ,但是MIPS并不像Power那样。

所有这些对手持式/电池供电devise都是有益的。 有些只是很好。 ARM还拥有电池供电设备的历史, 苹果牛顿 , Psion组织者 。 一些公司利用PDA软件基础设施来创build智能手机型设备。 尽pipe那些重新发明了智能手机使用graphics用户界面的人取得了更大的成功。

Open source工具集和operating systems的兴起也促进了各种SOC芯片的发展。 一个封闭的组织可能会尝试支持所有可用于ARM的各种设备。 最stream行的两个移动平台Andriod和OSx / IOS,都是基于Linux和FreeBSD,Mach和NetBSD操作系统的。 Open Source可帮助SOC供应商为其芯片组提供软件支持。

希望为什么x86用于键盘是不言而喻的。 它有软件,更重要的是有经过培训的人使用该软件。 Netwinder是最初为键盘devise的一个ARM系统。 另外,制造商目前正在考虑针对服务器市场的ARM64。 电力/热量是全天候数据中心关心的问题。

所以我想说,围绕这些芯片发展的生态系统与低功耗等特性一样重要。 ARM在一段时间内(80年代中后期)一直在努力实现低功耗,高性能的计算,并且拥有大量的人员。

注1:多个芯片需要总线驱动器以已知的电压和驱动进行相互通信。 而且,通常单独的芯片需要支持电容器和可以在SOC系统中共享的其他功率组件。

ARM架构最初是为Acorn个人电脑而devise的(见Acorn Archimedes ,1987年,和RiscPC ),它们和基于x86的IBM PC机型一样,是基于键盘的个人电脑。 只有以后,ARM的实施主要针对移动和embedded式市场领域。

最初,性能大致相当的简单RISC CPU可以由比英特尔的x86开发人员更小的工程团队devise(请参阅Berkeley RISC )。

但是现在最快的ARM芯片有大型工程团队devise的非常复杂的多问题乱序指令调度单元,x86内核可能有指令翻译单元提供的RISC内核。

所以,目前这两种架构之间的差异更多地与开发团队所针对的产品细分市场的具体市场需求有关。 (随机的观点:ARM可能会从embedded式应用中获得更多的授权费用,而这些费用往往会受到更多的功耗和成本的限制,而且英特尔需要在个人电脑和服务器上保持利润率的性能优势,因此您会看到不同的实现优化。

ARM就像一辆意大利跑车:

  • 平衡良好,引擎良好。 提供良好的加速度和最高的速度。
  • 优秀的追逐,刹车和悬挂。 可以快速停止,可以转弯不减速。

x86就像美国的一辆肌肉车:

  • 大引擎,大燃油泵。 给出优秀的最高速度和加速度,但使用大量的燃料。
  • 可怕的刹车,如果你想减速,你需要在你的日记中预约。
  • 糟糕的转向,你必须放慢脚步。

总之:x86是在60年代devise的,并且在一条直线上很好(但使用了大量的燃料)。 arm使用less量燃料,不会减速的angular落(分支)。