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

use*_*878 154 x86 arm

是否特别设计的x86架构可以与键盘配合使用,而ARM希望是移动设备?两者之间的主要区别是什么?

aus*_*len 263

ARM是一种RISC(精简指令集计算)架构,同时x86CISC(复杂指令集计算)架构.

这方面的核心差异在于ARM指令仅在寄存器上运行,其中有一些指令用于从/向内存加载和保存数据,而x86也可以直接在内存上运行.直到v8 ARM是本机32位架构,比其他架构更倾向于四字节操作.

所以ARM是一种更简单的架构,导致小的硅面积和大量的省电功能,而x86在功耗和生产方面都成为了一种强大的动力.

关于" 是否x86架构专门设计用于键盘而ARM期望移动? "的问题.x86不是专门设计用于键盘也不ARM适用于移动设备.然而,由于核心架构选择,实际上x86也有指令直接使用IO而ARM没有.然而,对于像USB这样的专用IO总线,对这些功能的需求也在消失.

如果需要引用文档,这就是Cortex-A系列程序员指南(4.0)讲述RISC和CISC架构之间的差异:

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

复杂指令集计算机(CISC)处理器,如x86,具有丰富的指令集,能够通过单个指令执行复杂的操作.这样的处理器通常具有大量的内部逻辑,其将机器指令解码为内部操作序列(微代码).

相比之下,RISC架构具有更少数量的通用指令,可以用更少的晶体管执行,从而使硅更便宜且功率效率更高.与其他RISC架构一样,ARM内核具有大量通用寄存器,许多指令在一个周期内执行.它具有简单的寻址模式,其中所有加载/存储地址可以从寄存器内容和指令字段确定.

ARM公司还提供了一篇题为" 体系结构,处理器和设备开发文章"的论文,描述了这些术语如何适用于他们的业务.

比较指令集架构的示例:

例如,如果您需要在应用程序中使用某种字节内存比较块(由编译器生成,跳过详细信息),这就是它的外观. x86

repe cmpsb         /* repeat while equal compare string bytewise */
Run Code Online (Sandbox Code Playgroud)

ARM最短的形式可能看起来像(没有错误检查等)

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                 */
Run Code Online (Sandbox Code Playgroud)

这应该会提示RISC和CISC指令集的复杂程度如何不同.

  • ARMv8-A有一个名为AArch64的64位架构. (8认同)
  • 虽然x86有一些非常强大的指令,但是手臂仍可以在战斗中击败它(如果两者具有相同的时钟速度).这部分是因为arm具有一组良好的寄存器,其中x86花费1/2的时间将数据移入和移出其有限的寄存器组(这对x86-64来说不太正确,它是否有更多的寄存器).部分原因是Arm的简单性为更大的缓存留出了空间,并且所有指令都是有条件的(使缓存丢失更少).并且arm的移动多指令(唯一的非RISC指令)允许它快速移动数据. (7认同)
  • 通过使用更多的寄存器,我可以更快地编写ARM代码,虽然更大.如果我看一下这个实现,x86需要5 + 9×N个时钟,ARM需要4×N个时钟(两个数字都没有缓存未命中).对于此示例,x86在指令字节上得分更高:x86 = 2字节,arm = 16字节.ARM在更现实的测试中得分要好得多,例如在退出循环r2上将有关于字符串是否相等/哪个更大的信息,因此条件代码也是如此.在检查条件代码之前,手臂可以运行其他指令.检查条件代码时,Arm不必分支. (4认同)
  • @JeremyFelix看起来像这样http://stackoverflow.com/questions/13106297/is-arm-cortex-a8-pipeline-13-stage-or-14-stage对于不同类型的指令有不同的管道,即使有重复的.CPU将指令分为微指令,并且可以在管道之间并行运行. (2认同)
  • 您说“虽然x86也可以直接在内存上运行。”但是对于x86(x86-64之前的版本),它的寄存器太少,以至于没有“也”,因此您必须将所有内容都存储在内存中。程序中仅用于移动内容的约½条指令。而在ARM中,几乎不需要任何指令即可移动数据。 (2认同)
  • x86为8位处理器时,增加了特殊的IO指令;只有 64k = 2¹⁶ 字节的可寻址内存。需要有一种方法可以在不使用内存地址的情况下进行 IO。现在x86-64有2⁴⁸≈1000万亿字节(未来可以扩展到2⁶⁴)的地址空间,不需要IO指令。 (2认同)
  • @richard 这比你说的要复杂一些。x86 指令集的寄存器相对较少(x86-64 中的寄存器较多),*但*微处理器往往有*数百个*,并通过寄存器重命名进行优化。此外,虽然 ARM 指令*更大*,但它是三参数设计(x86 是两个参数),因此有时 x86 需要比 ARM 更多的指令(​​与直觉相反,因为 ARM 是 RISC)。(哦,“预测”指的是任何指令上的条件代码功能,在 AArch64 中被删除;还可以在大多数数据操作上自由转换。也可以缩短代码。) (2认同)

Jer*_*fin 88

除了多年来ARM在功耗方面具有相当大的优势,这使得它对各种电池供电的设备都具有吸引力之外,它们都没有任何特定的键盘或移动设备.

就实际差异而言:ARM有更多寄存器,在英特尔添加它之前很久就支持对大多数指令的预测,它具有"拇指"模式,主要用于增加代码密度(因此程序适合较少的内存)并且很长时间都包含在内各种技术(如果你愿意,可称之为"技巧")几乎可以在任何地方节省电力.

英特尔曾一度强调速度而不是功耗.他们开始主要在笔记本电脑的背景下强调功耗.对于笔记本电脑而言,对于相当小的笔记本电脑而言,它们的典型功率目标是大约6瓦.最近(最近),他们已经开始瞄准移动设备(手机,平板电脑等)对于这个市场,他们正在寻找一对夫妇瓦左右最多.虽然他们的方法与ARM大不相同,但他们似乎做得很好,强调制造技术,其中ARM主要强调微架构(考虑到ARM销售设计并将制造留给其他人,这并不奇怪).

  • 因此 ?RISC 需要更多的 RAM,而 CISC 则强调更小的代码大小,并且总体上比 RISC 使用更少的 RAM (2认同)

art*_*ise 37

除了Jerry Coffin的第一段.即ARM设计提供更低的功耗.

该公司ARM仅授权CPU技术.他们不制造物理芯片.这允许其他公司添加各种外围技术,通常称为SOC或片上系统.该设备是平板电脑,手机还是车载娱乐系统.这允许芯片供应商将芯片的其余部分定制到特定应用.这有额外的好处,

  1. 降低电路板成本
  2. 功率降低(注1)
  3. 制造更容易
  4. 更小的外形

ARM支持SOC供应商使用AMBA,允许SOC实施者购买现成的第三方模块; 像以太网,内存和中断控制器.其他一些CPU平台支持这一点,如MIPS,但MIPS并不具备功耗意识.

所有这些都有利于手持/电池供电的设计.有些人在周围都很好.同样,ARM有电池供电设备的历史; Apple Newton,Psion组织者.该PDA的软件基础结构被一些公司利用创造的智能手机类设备.尽管那些重新发明用于智能手机的GUI的人已经取得了更大的成功.

Open source工具集的兴起operating systems也促进了各种SOC芯片的发展.封闭的组织在尝试支持ARM可用的所有各种设备时会遇到问题.最流行的两种移动平台Andriod和OSx/IOS基于LinuxFreeBSD,Mach和NetBSD操作系统. Open Source帮助SOC供应商为其芯片组提供软件支持.

希望,为什么x86用于键盘是不言而喻的.它有软件,更重要的是受过培训的人使用该软件. Netwinder是一个ARM最初为键盘设计的系统.此外,制造商目前正在研究服务器市场的ARM64.电源/热量是24/7数据中心的关注点.

所以我想说围绕这些芯片生长的生态系统与低功耗等功能同样重要. ARM一段时间(1980年代中后期)一直在努力争取低功耗,高性能的计算,并且他们有很多人参与.

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


hot*_*aw2 15

ARM架构最初是为Acorn个人计算机设计的(参见Acorn Archimedes,大约1987年,和RiscPC),它们与基于x86的IBM PC机型一样多,都是基于键盘的个人计算机.只有后来的ARM实施主要针对移动和嵌入式市场.

最初,具有大致相同性能的简单RISC CPU可以由比英特尔x86开发人员更小的工程团队(参见Berkeley RISC)设计.

但是,如今,最快的ARM芯片具有由大型工程团队设计的非常复杂的多发布无序指令调度单元,而x86内核可能具有由指令转换单元馈送的RISC核心.

因此,两种体系结构之间的任何当前差异都与开发团队所针对的产品利基的特定市场需求更相关.(随机意见:ARM可能会从嵌入式应用程序中获得更多的许可证费用,而这些应用程序往往功耗和成本都要大得多.而且英特尔需要在PC和服务器上保持性能优势以获得利润率.因此,您会看到不同的实现优化.)


ctr*_*lor 15

ARM就像一辆意大利跑车:

  • 平衡良好,调整良好,引擎.提供良好的加速度和最高速度.
  • 出色的追逐,制动和悬挂.可以快速停下来,可以在没有减速的情况下转弯.

x86就像一辆美国肌肉车:

  • 大发动机,大燃油泵.提供出色的最高速度和加速度,但使用了大量燃料.
  • 可怕的刹车,如果你想放慢速度,你需要在日记中预约.
  • 可怕的转向,你必须放慢速度到角落.

总结:x86基于1974年的设计,并且在直线上很好(但使用了大量燃料).手臂使用很少的燃料,不会减慢角落(树枝)的速度.


隐喻,这里有一些真正的差异.

  • Arm有更多的寄存器.
  • Arm有很少的专用寄存器,x86是所有专用寄存器(因此移动的东西较少).
  • Arm几乎没有内存访问命令,只有加载/存储寄存器.
  • Arm是我内部设计的哈佛建筑.
  • 手臂简单快速.
  • 臂指令在架构上是单周期的(加载/存储多个除外).
  • 手臂指令通常不止一件事(在一个循环中).
  • 如果需要更多的一条Arm指令,例如x86的循环存储和自动递增,Arm仍然可以在更少的时钟周期内完成.
  • Arm有更多的条件指令.
  • Arm的分支预测器非常简单(如果是无条件或向后然后假设分支,否则假设不是分支),并且在x86中非常非常复杂的那个表现得更好(这里没有足够的空间来解释它,而不是我可以).
  • Arm具有简单一致的指令集(您可以手动编译,并快速学习指令集).

  • 这种类比打破了这样一个事实:意大利跑车在他们可以获得的每一个瞬间都会崩溃,而ARM CPU却没有,而且虽然它可以轻松完成,但你实际上不能*购买*可以做台式机的单个ARM CPU CPU速度,更不用说插座和主板了.:) (5认同)
  • 在性能方面,它直接与一些最大/更快的至强处理器(例如 E5-2690 v3)竞争,但功耗和成本更低。https://www.quora.com/How-do-high-end-ARM-processors-compare-to-Intel-processors-in-terms-of-performance (2认同)
  • 当然,对于数据库和 I/O 服务器等大规模并行工作负载。对于单线程性能,没有人设计过接近 x86 大小的 ARM 内核。没有理由他们不能,只是没有人有。与用于高功率 CPU 内核中的乱序机器的硅量相比,功率和芯片面积的“x86 税”并不大。x86 中肯定有缺陷,但 RISC 有代码密度的缺点(这通常无关紧要,但仍然很重要)。这在 http://realworldtech.com/ 论坛上反复争论。 (2认同)
  • @richard:有很多你“不需要”的东西,但这会增加代码密度。诀窍是平衡解码复杂性与代码大小/指令数量。增加乱序内核的宽度在功耗方面非常昂贵,因此将更多的工作打包到每条指令中是很有价值的。解码复杂度的小幅增加要便宜得多。现代 x86 CPU 已经能够快速解码 x86。(速度不够快,无法保持解码器提供的 4 宽 OOO 内核而不是 uop 缓存或循环缓冲区,当然,功耗也很高。) (2认同)
  • @ Evi1M4chine,它也打破了意大利跑车非常昂贵的事实,而美国的肌肉车相对便宜.肌肉车就是这样,因为它很简单,而像法拉利这样的东西非常复杂.与CISC和RISC完全相反 (2认同)
  • @PeterCordes CISC 与 RISC,与 x86 与 Arm 不同:68000 是 CISC,但与 Arm 的共同点多于 x86。 (2认同)
  • 一般来说,ARM 分支预测并不比 x86 更好。这是一个疯狂的主张。大多数 x86 芯片使用更长的管道,因此需要非常好的分支预测才能获得良好的性能,因此它们使用 TAGE 等具有相当大的 BTB 的算法。https://danluu.com/branch-prediction/。现代 ARM CPU 也大多使用比静态预测更复杂的东西。简单的静态预测(向后 = 进行预测)并不比 x86 更好!如果是的话,x86 就会这么做>.<。如果 ARM 芯片的时钟频率高达 x86,它们将需要更多的流水线级和更好的分支预测...... (2认同)
  • 2019年富士通将推出一款快速ARM处理器。“_Fujitsu A64FX 是世界上最快的新型 Arm 处理器,基于 7nm 构建,每个芯片具有 2.7 TFLOPS 性能,适合高端 HPC 和 AI,他们的目标是到 2021 年创建世界上最快的超级计算机。_”- https://insidehpc.com/2019/01/video-fujitsu-post-k-supercomputer-feature-worlds-fastest-arm-processor/ (2认同)