在对此答案的评论中,Kortuk提出了ARM的优势是什么。我首先在答案中添加了一些论点,但是我认为这个问题很有趣,以至于本身就是一个问题,因此有可能提供更多答案。
在对此答案的评论中,Kortuk提出了ARM的优势是什么。我首先在答案中添加了一些论点,但是我认为这个问题很有趣,以至于本身就是一个问题,因此有可能提供更多答案。
Answers:
性能是优势之一。作为32位处理器,它在DMIPS方面(几乎)胜过所有8位控制器。核心也经历了几代人的读取优化。
这些优化不仅显示在性能数字上,而且还显示在功耗上。与上一代相比,最新的内核将其DMIPS / mW比提高了一倍(另请参见此答案)。
与许多其他微控制器相比,ARM的制造商数量众多,而且制造商均可提供ARM ,每种产品都有许多版本可供选择,并具有片上外设,存储器和封装的不同组合。恰当的例子:恩智浦提供不少于35个带有片上以太网的控制器。
ARM是价格不贵 ; ARM可能是第一个突破1美元壁垒的32位控制器。
这种组合的性能,广泛的产品和低成本使它这样,你根本无法忽视ARM:
分析公司Linley Group的研究显示,2005年,约98%的手机在其主板上使用至少一个ARM设计的内核。(来源)
尚未提及的一点:1908年,一个名叫PL罗伯逊先生的家伙发明了一种新的改进的螺丝头和螺丝刀。他想成为唯一为他的设计制造螺丝和螺丝刀的人。几十年后,一个叫亨利·菲利普斯先生的人提出了另一种设计方案。与罗伯逊先生不同,菲利普斯先生对许可他的设计更感兴趣,而不是生产螺丝和螺丝刀。
同样,在1970年代,索尼想出了一项叫做Betamax的技术。JVC提出了一种叫做VHS的方法。索尼对生产VCR感兴趣。JVC对许可更感兴趣。
这里似乎有一种模式。(注:一段时间以来,英特尔确实获得了其80x86技术的许可,但几十年来,它一直更加致力于开发内部使用的技术。)
为所有供应商的ARM开发相同的硬件/软件。您只需购买JLINK / ULINK和一些Keil IDE,就可以使用它来开发,仿真和调试星球上几乎所有的ARM。
转向新的芯片供应商时无需学习新架构=>更少的供应商锁定=>更多的竞争=>更低的价格
在现代技术流程(0.18um及以下)中,ARM内核是如此之小,以至于将其牺牲为8位内核将无法节省任何可见的价格。因此,之所以选择标准的高性能而廉价的架构。
性能-只有使用ARM,您才能拥有32 * 32-> 32的单时钟乘法,并且对32 * 32-> 64的硬件支持以及1美元以下设备的除法(例如,低端STM32)
ARM不太贪婪,并且不收取不合理的许可证费用,因此制造商可以生产廉价的微型计算机。
由于以下原因,我将重点放在中型ARM处理器上:
全面的Linux支持
这意味着设备驱动程序几乎是免费的。我已经完成了足够的USB主机和设备代码,我不再想要这样做了。我也对尝试将TCP / IP添加到随机处理器平台并不感到很兴奋(尽管LwIP / uIP并不那么糟糕)。我什至从未尝试过Wi-Fi,真正的蓝牙堆栈,网络摄像头等。使用Linux意味着可以轻松地与许多设备通讯。
我也对Linux设备驱动程序的编写如此合理和容易感到惊讶。在完成一些Windows设备驱动程序之后,Linux是一个梦想。(公平地说,自从我这样做以来,Windows驱动程序框架已经有了很大的改进。)
该软件平台也很棒。我得到了SSL加密,文件系统,远程管理,简单的应用程序更新(通过文件复制而不是复杂的Bootloader)等等。哦,还有很多现有的实用程序(如果您需要完成某些工作)。
它也是免版税的,并且比说封闭源WinCE平台要容易得多。(并不是说我真的是一个开源理想主义者……对我来说,这都是非常实际的理由。)
能量消耗
这基本上是其他人的评论的重复,但这对我来说是一个很大的因素。我当前的454 MHz ARM平台功耗为1/2瓦,最大CPU为1瓦。使用x86甚至无法接近。
这几乎就是我的推理。我认为方程式不会很快改变。
ARM经历了一个进步:
ARM体系结构允许非常快速地执行一些相当复杂的操作-远远快于任何其他芯片。例如(使用ARM7-TDMI):
ldrh r0,[r10,#ADDR_BUS_OFS]; 读取目标系统地址总线(13位) ldrb r1,[r9,r0,lsr#8]; 使用高位在处理程序表中查找地址 添加pc,r9,r1 lsl#2; 转到适当的处理程序
每个处理程序都存储为一个字节,从表开始算起,该字节给出了地址位移的1/4。最终结果是,一旦获取了地址总线的内容,就使用32字节的跳转表,仅需六个周期(两条指令)即可根据检索到的高五位跳转到处理程序。
对应的THUMB代码更像是:
; 假设我们不需要r6 / r7进行其他操作,则将它们从r9 / r10重新分配 ldrh r0,[r7,#ADDR_BUS_OFS] mov r1,r0 lsr r1,r1,#8; THUMB要求源和目的地要相同 ldrb r1,[r6,r1] lsl r1,r1,#1; 如果目标地址是全字对齐的,可以使用左移二 添加pc,r1
从代码密度的角度来看,这很好,因为指令仅是原始指令的一半,但是在获取之后将花费九个周期,而不是六个。在被监视的总线将以自己的速度运行的应用程序中,无论ARM是否已设法对其进行处理,更快的ARM指令都是一大优势。
顺便说一句,Thumb2与Thumb二进制兼容,这有助于使用较早的工具,但是这意味着它与原始ARM相比,在某些方面做不到。例如,在ARM中,可以使用大约每2位3条指令“旋转”保存在四个寄存器中的8x8位图:
movs r0,r4,lsl#25; 将LSB的高位放入C,然后将下一位放入N orrcs r6,#0x00000001 orrmi r6,#0x00000100
在Thumb2中,有必要添加明确的条件指令:
movs r0,r4,lsl#25; 将LSB的高位放入C,然后将下一位放入N itcs orrcs r6,#0x00000001 Itmi orrmi r6,#0x00000100
与ARM相比,时间和空间效率净减少了33%;这可能是最坏的Thumb代码示例不如ARM高效的示例,即使那样也不是太可怕了。
与ARM相比,Thumb2的另一个小缺点:在ARM代码中,所有指令均始于全字边界,从而便于进行静态分析。在Thumb2中,指令可以任意地从半字边界开始,也可以跨越全字边界。因此,静态分析可能会困难得多。
有点历史了,橡子希望在1980年代为一台新计算机使用一个定制的CPU(例如带有内置的内存控件等)(8位6502限制了它们的功能)。他们与Intel进行了交谈,但是Intel不会向他们授予CPU许可。
因此,Acorn设计了一个非常简单的RISC CPU,但由于他们不是CPU制造商,因此愿意将其许可给任何人(并且需要他们所能获得的所有快钱!)。(我相信CPU是第一次工作,部分是因为它是如此简单,而且设计师在剑桥大学期间也创造了很多研究型CPU。)
多年来,CPU设计变得越来越容易包含在客户芯片设计中。
芯片制造商感到自己不是竞争对手,因此从Acorn那里获得了安全许可。也没有人认为他们会去竞争对手的家乡,而就像Acorn在剑桥一样(真正的人!)。(有机会去剑桥进行“事实调查”旅行,以访问橡子在任何时候都会影响期权的卖空……)
包括Acorn Risc Machine CPU在内的许多设计都是针对嵌入式系统的,因此功耗非常重要。还为Acorn Risc Machine CPU创建了便宜又好的开发工具。
因此,当手机开始需要带有嵌入式CPU的定制芯片时,Acorn被重命名为ARM,其余的就是历史了。(也许还有一点,其他CPU主要由美国控制,但移动设备首先在欧洲成为普通设备)
(这是否使您和IBM的一个未知的小团队使您想起Microsoft和Dos?)
ARM是当时(现在仍然是)执行许多任务的最佳CPU之一,这一事实也有所帮助-但是仅具有“最佳” CPU设计是不够的。
除了技术问题之外,ARM还有很多非技术原因。 但是快速的答案是:不是Intel(或x86)。
如果您看一下现在在CPU研发上投入的资金,它们基本上可以分为两个阵营:ARM和Intel。(我忽略了小型MCU,而将AMD与Intel混为一谈。)投入PowerPC,MIPS,SPARC和其他大型CPU的资金很少。仅有ARM和Intel仍然存在。
使用Intel和其他x86 CPU,您将获得大量的遗留行李。例如,您需要芯片组,BIOS和其他东西。即使CPU具有超级节能功能,那些其他设备也往往会降低系统的重量,使其变得更大,更耗电且更昂贵。仅使用Intel CPU开发PCB是一个大问题,然后您必须与BIOS供应商等进行谈判。更糟糕的是,许多芯片组,BIOS,视频芯片等供应商根本不希望与年销量不低于一百万台的小型企业开展业务。
使用ARM,您就不必再负担了。芯片来源很多,从微控制器产品到多核怪兽。您不需要处理BIOS许可(这很像去二手车销售员)。制造商和供应商通常对您很友好。
将ARM7 / ARM9与MIPS IV进行比较,除了已经提到的许可问题之外,没有什么其他优势。MIPS指令集的内部结构和内部总线使其在某些类型的设计中具有优越的性能(每成本成本)。这就是为什么许多Wi-Fi路由器使用MIPS内核而不是ARM内核的原因。
由于ARM内核主要应用于手持设备,因此ASIC增加了更多的功率控制功能,而MIPS则更多地关注每个周期的性能而不是更低的功率。RISC优于Intel x86 的好处是另一番讨论。