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

ARM体系结构与x86有何不同?,x86,arm,X86,Arm,x86体系结构是否专门设计用于在ARM希望移动的情况下使用键盘?这两者之间的主要区别是什么?除了多年来ARM在功耗方面具有相当大的优势这一事实之外,两者都没有键盘或移动设备的特殊之处,这使得ARM对各种电池驱动的设备都很有吸引力 至于实际的区别:ARM有更多的寄存器,在英特尔加入ARM之前很久就支持对大多数指令的预测,并且长期以来采用了各种技术(如果你愿意,可以称之为“技巧”),几乎可以在任何地方节约电能 这两个指令的编码方式也有很大的不同。英特尔使用相当复杂的可变长度编码,其中一条指令可以占用

x86体系结构是否专门设计用于在ARM希望移动的情况下使用键盘?这两者之间的主要区别是什么?

除了多年来ARM在功耗方面具有相当大的优势这一事实之外,两者都没有键盘或移动设备的特殊之处,这使得ARM对各种电池驱动的设备都很有吸引力

至于实际的区别:ARM有更多的寄存器,在英特尔加入ARM之前很久就支持对大多数指令的预测,并且长期以来采用了各种技术(如果你愿意,可以称之为“技巧”),几乎可以在任何地方节约电能

这两个指令的编码方式也有很大的不同。英特尔使用相当复杂的可变长度编码,其中一条指令可以占用1到15字节的任意位置。这使得程序非常小,但使指令解码相对困难(例如:并行快速解码指令更像是一场噩梦)

ARM有两种不同的指令编码模式:ARM和THUMB。在ARM模式下,您可以访问所有指令,编码非常简单,解码速度也非常快。不幸的是,ARM模式的代码往往相当大,因此程序占用的内存通常是英特尔代码的两倍左右。拇指模式试图缓解这种情况。它仍然使用相当常规的指令编码,但将大多数指令从32位减少到16位,例如通过减少寄存器的数量、消除大多数指令的谓词以及减少分支的范围。至少在我的经验中,这通常不会像x86代码那样提供非常密集的编码,但它非常接近,解码仍然相当简单和直接。较低的代码密度意味着您通常需要至少多一点内存和(通常更严重的)更大的缓存来获得同等的性能

英特尔曾一度把重点放在速度上,而不是功耗上。他们开始主要在笔记本电脑方面强调功耗。对于笔记本电脑,他们的典型功率目标是相当小的笔记本电脑的6瓦左右。最近,他们开始瞄准这个市场的移动设备(手机、平板电脑等),他们最多只能看到几瓦。他们似乎在这方面做得很好,尽管他们的方法与ARM的方法有很大不同,他们强调的是制造技术,而ARM主要强调的是微架构(考虑到ARM销售设计,将制造留给其他人,这并不奇怪)

根据具体情况,CPU的能耗通常比功耗更重要。至少在我使用这些术语时,功耗指的是(或多或少)瞬时的功耗。然而,能量消耗对于速度来说是标准化的,因此,如果(例如)CPU A在2秒钟内消耗1瓦特来完成一项工作,而CPU B在1秒钟内消耗2瓦特来完成同一项工作,那么两个CPU在完成该项工作时消耗的总能量(2瓦特秒)是相同的——但是使用CPU B,得到结果的速度是CPU B的两倍

ARM处理器在功耗方面往往表现良好。所以,如果你需要的东西几乎总是需要处理器的“存在”,但实际上没有做很多工作,那么它们可以很好地工作。例如,如果您正在进行视频会议,您将收集几毫秒的数据,压缩数据,发送数据,接收其他人的数据,解压缩数据,播放数据,然后重复。即使是速度非常快的处理器也不能花很多时间睡觉,所以对于这样的任务,ARM做得非常好

英特尔的处理器(特别是其Atom处理器,实际上用于低功耗应用)在能耗方面极具竞争力。当它们接近全速运行时,它们将比大多数ARM处理器消耗更多的能量——但它们也能很快完成工作,因此可以更快地回到睡眠状态。因此,他们可以结合良好的电池寿命和良好的性能

因此,在比较两者时,你必须小心你所衡量的,以确保它反映了你真正关心的东西。ARM在功耗方面做得很好,但根据具体情况,您可能更关心能耗而不是瞬时功耗。

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

在这方面,ARM指令与其他指令的核心区别在于,ARM指令只在寄存器上运行,只有少量指令用于从内存加载和保存数据,而x86指令也可以直接在内存上运行。在v8之前,ARM是一种原生的32位体系结构,支持四字节操作

因此,ARM是一种更简单的体系结构,导致了较小的硅面积和大量的节能功能,而x86在功耗和生产方面都成为了一个电源猛兽

关于问题“x86体系结构是否专门设计用于键盘,而ARM希望是移动的?”
x86
不是专门设计用于移动设备的键盘和ARM。然而,同样由于核心架构的选择,实际上x86也有直接使用
IO
的指令,而ARM没有。然而,对于USB等专用IO总线,对此类功能的需求也在消失

如果您需要引用文档,以下是RISC和CISC体系结构之间的区别:

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

复杂指令集计算机(CISC)处理器,如 x86具有丰富的指令集,能够处理复杂的事情 只有一条指令。这种处理器经常出现
repe cmpsb         /* repeat while equal compare string bytewise */
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                 */