x86体系结构是否专门设计为与键盘一起使用,而ARM希望可以移动?两者之间的主要区别是什么?
x86体系结构是否专门设计为与键盘一起使用,而ARM希望可以移动?两者之间的主要区别是什么?
Answers:
ARM
是RISC(精简指令集计算)体系结构,x86
而是CISC(复杂指令集计算)体系结构。
这两个方面的核心区别在于,ARM指令仅在寄存器上运行,而一些指令用于将数据从内存中加载和保存到内存中,而x86也可以直接在内存上运行。直到v8为止,ARM都是本机32位体系结构,与其他字节相比,它更喜欢四字节操作。
因此,ARM是一种更简单的体系结构,从而导致了较小的硅片面积和许多省电功能,而x86在功耗和生产方面都成为了野兽。
关于“ x86体系结构是否专门设计用于在ARM期望可移动的同时使用键盘? ”的问题。x86
并非专门设计ARM
用于手机键盘。但是,再次由于核心体系结构的选择,实际上x86还具有直接使用指令,IO
而ARM没有。但是,对于专用的IO总线(如USB),对此类功能的需求也在消失。
如果您需要引用的文档,这是《Cortex-A系列程序员指南(4.0)》讲述了RISC和CISC体系结构之间的区别:
ARM处理器是精简指令集计算机(RISC)处理器。
复杂指令集计算机(CISC)处理器(如x86)具有丰富的指令集,能够用一条指令完成复杂的事情。这样的处理器通常具有大量的内部逻辑,这些逻辑将机器指令解码为内部操作序列(微码)。
相比之下,RISC体系结构具有较少数量的通用指令,这些指令可以用更少的晶体管执行,从而使硅更便宜,更省电。像其他RISC体系结构一样,ARM内核具有大量的通用寄存器,并且许多指令在一个周期内执行。它具有简单的寻址模式,其中所有加载/存储地址均可从寄存器内容和指令字段中确定。
ARM公司还提供了一篇名为《体系结构,处理器和设备开发》的文章,描述了这些术语如何应用于其业务。
比较指令集架构的示例:
例如,如果您在应用程序中需要某种按字节的内存比较块(由编译器生成,跳过详细信息),则这可能是这样的 x86
repe cmpsb /* repeat while equal compare string bytewise */
而在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 */
这应该给您提示RISC和CISC指令集在复杂性上有何不同。
多年来,ARM在功耗方面都具有相当大的优势,这使其对各种电池供电的设备都具有吸引力,这两者都不是键盘或移动电话专用的。
就实际差异而言:ARM拥有更多的寄存器,早在Intel添加它之前就支持大多数指令的谓词,并且长期以来采用了各种技术(如果愿意,可以将它们称为“技巧”)以节省几乎所有可能的功耗。
两种编码指令的编码方式也存在很大差异。英特尔使用相当复杂的可变长度编码,其中一条指令可以占用1到15个字节的任何位置。这允许程序很小,但是使指令解码相对困难(例如:并行快速解码指令更像是一场噩梦)。
ARM有两种不同的指令编码模式:ARM和THUMB。在ARM模式下,您可以访问所有指令,并且编码非常简单并且可以快速解码。不幸的是,ARM模式代码往往相当大,因此程序占用的内存大约是Intel代码的两倍是很常见的。拇指模式试图减轻这种情况。它仍然使用相当常规的指令编码,但是将大多数指令从32位减少到16位,例如通过减少寄存器数量,从大多数指令中消除谓词以及减小分支范围。至少在我的经验,这仍然没有通常会很尽管x86代码可以实现密集的编码,但是它相当接近,并且解码仍然相当简单明了。较低的代码密度意味着您通常至少需要更多的内存和(通常更严重的)更大的缓存才能获得等效的性能。
一次,英特尔更加注重速度,而不是功耗。他们开始主要在笔记本电脑上强调功耗。对于笔记本电脑,它们的典型功率目标是在相当小的笔记本电脑上达到6瓦左右。最近(多最近),他们已经开始瞄准移动设备(手机,平板电脑等)对于这个市场,他们正在寻找一对夫妇瓦左右最多。他们的做法似乎做得很好,尽管他们的方法与ARM的方法大不相同,强调了ARM主要强调微体系结构的制造技术(考虑到ARM销售设计并将制造权留给其他人,这不足为奇)。
但是,根据情况,CPU的能耗通常比其功耗更重要。至少在我使用这些术语时,功耗是指(或多或少)瞬时的功耗。但是,能耗会根据速度进行归一化,因此,例如,如果CPU A消耗1瓦2秒钟执行一项工作,CPU B消耗2瓦1秒钟执行一项工作,则两个CPU的总消耗量相同耗电(两瓦特秒)来完成这项工作,但是使用CPU B,您得到的结果要快两倍。
ARM处理器在功耗方面往往表现出色。因此,如果您需要的东西几乎总是需要处理器的“在场”,而实际上并没有做很多工作,那么它们可以很好地解决问题。例如,如果您在进行视频会议,则需要收集几毫秒的数据,对其进行压缩,发送,从其他人接收数据,对其进行解压缩,进行回放并重复。即使是一个非常快的处理器也不能花很多时间在睡眠上,因此对于这样的任务,ARM确实表现出色。
英特尔的处理器(尤其是其Atom处理器,实际上是为低功耗应用而设计的)在能耗方面极具竞争力。当它们以接近全速的速度运行时,它们将比大多数ARM处理器消耗更多的功率-但是它们还可以很快完成工作,因此可以更快地回到睡眠状态。结果,它们可以将良好的电池寿命与良好的性能结合在一起。
因此,在将两者进行比较时,您必须谨慎对待自己的测量,以确保它反映出您真正关心的内容。ARM在功耗方面做得很好,但是根据情况,您可能会比即时功耗更关心能耗。
杰里·科芬(Jerry Coffin)第一段的补充。即,ARM设计可降低功耗。
该公司ARM
仅许可CPU技术。他们不制造物理芯片。这使其他公司可以添加各种外围技术,通常称为SOC或片上系统。设备是平板电脑,手机还是车载娱乐系统。这使芯片供应商可以针对特定应用定制其余的芯片。这还有其他好处,
ARM
通过AMBA支持SOC供应商,允许SOC实施者购买现成的第三方模块;如以太网,内存和中断控制器。其他一些CPU平台也支持此功能,例如MIPS,但是MIPS并不那么注重功耗。
所有这些对手持/电池操作设计都是有益的。周围有些很好。还ARM
具有电池供电设备的历史;苹果牛顿,Psion组织者。该PDA的软件基础结构被一些公司利用创造的智能手机类设备。虽然,重新发明GUI并用于智能手机的人们获得了更大的成功。
Open source
工具集的兴起operating systems
也促进了各种SOC
芯片的发展。一个封闭的组织在尝试支持可用于ARM的所有各种设备时会遇到问题。两种最受欢迎的蜂窝平台Andriod和OSx / IOS基于Linux和FreeBSD,Mach和NetBSD操作系统。 Open Source
帮助SOC
供应商为其芯片组提供软件支持。
希望为什么x86被用作键盘是不言而喻的。它具有软件,更重要的是,人们受过培训以使用该软件。 Netwinder是ARM
最初为键盘设计的一种系统。另外,制造商目前正在将ARM64用于服务器市场。在24/7数据中心中,功率/热量是一个问题。
因此,我想说围绕这些芯片生长的生态系统与低功耗等功能同样重要。 ARM
在一段时间内(1980年代中后期),人们一直在努力寻求低功耗,高性能的计算,并且他们中有很多人。
注1:多个芯片需要总线驱动器以已知电压相互通信并驱动。同样,通常,单独的芯片需要支持电容器和其他功率组件,这些电容器可以在SOC系统中共享。
ARM就像意大利跑车:
x86就像美国的肌肉车:
总结:x86基于1974年的设计,在直线上表现不错(但消耗大量燃料)。手臂消耗很少的燃料,不会降低拐角(分支)的速度。
隐喻过来,这里有一些真正的区别。
ARM体系结构最初是为Acorn个人计算机(请参阅Acorn Archimedes,大约1987年,和RiscPC)设计的,它们与基于x86的IBM PC模型一样,都是基于键盘的个人计算机。仅后来的ARM实施主要针对移动和嵌入式市场领域。
最初,与英特尔x86开发人员相比,可以由规模较小的工程团队(请参阅Berkeley RISC)来设计性能大致相当的简单RISC CPU 。
但是,如今,最快的ARM芯片具有由大型工程团队设计的非常复杂的多问题无序指令分发单元,而x86内核可能具有由指令翻译单元提供的RISC内核之类的东西。
因此,两种体系结构之间的任何当前差异都与开发团队针对的产品壁ni的特定市场需求有关。(随机意见:ARM可能会从嵌入式应用程序中获得更多许可费,而嵌入式应用程序往往受到更大的功能和成本限制。而且英特尔需要在PC和服务器上保持性能优势以提高其利润率。因此,您会看到不同的实现优化。)