ARM架构是什么东西,不用ARM不行吗?

手机用户3282769145


ARM架构本身属于一种芯片图纸设计方案,这个方案里包括芯片的逻辑算法和技术架构等版权,不同于英特尔X86架构芯片,ARM公司不负责制造芯片,而是通过向其它客户提供架构授权等方式来赚取利润,其中包括基本架构授权和高级架构授权等模式,像苹果和高通这样的大客户花高价买的授权等级较高,因此可以自行对芯片进行修改优化。

如今手机和平板等便携式设备基本都是使用的ARM架构处理器,主要是因为ARM架构相比传统X86架构芯片指令集相对精简,不需要太大的芯片面积就可以达到不错的性能,而且ARM架构效率很高,只需要很低的功耗就可以达到不错的性能,可以说是目前最适合在移动设备上使用的处理器芯片,英特尔虽说也曾想进军手机芯片行业,但是X86架构先天不适合小型设备,不是功耗大就是性能差,以失败而告终。

由于ARM的架构授权模式,这几年又赶上手机产品的热潮,业界很多公司正好也需要芯片,于是ARM就与很多公司产生了合作关系,比如高通,苹果和三星等等,这些公司不需要再从零开始设计芯片,最多只需要进行一些优化和改进,节省了大量时间和成本,同时随着ARM芯片主导业界,系统和软件开发者们对ARM架构芯片优化已经非常成熟,如果此时有别的公司使用其它架构芯片的话很难做到适配,即使效能不错,但是没有系统和软件支持也就没有市场可言了。


嘟嘟聊数码


    ARM是手机处理器的设计图纸,占领了95%以上的智能手机市场,高通、苹果、华为、MTK的处理器无一例外的基于ARM架构,只是修改的程度不同而已,所以不用ARM架构还真不行。下文具体说一说。

    1、ARM是什么东西?

    ARM是全球知名的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑采用了ARM架构。ARM不生产自己的芯片,只出售芯片的图纸,根据授权的方式不同分为指令集授权、软核授权、硬核授权。ARM是一家英国公司,2016年被日本软银收购。

    ARM架构的处理器采用了RISC精简指令,功耗非常低,适合作为智能设备的处理器。ARM处理器的功耗可以做到1W以下,而X86架构的的i7处理器满载时功耗达到100W以上。因此,ARM架构的处理器几乎统治了所有的手机手机处理器,高通、苹果、华为、三星、MTK的处理器无一例外的基于ARM架构。

    前段时间,ARM公司响应美国的“禁售令”终止了与华为的业务往来,由于华为购买了ARMv8永久授权,短时间影响不大。如果ARM对于华为授权长期处于停止状态,华为无法获取ARMv9架构,那么会导致华为芯片性能提升停滞,在高端芯片领域缺乏竞争力。


    2、为什么离不开ARM?

    经过多年的发展,ARM架构处理器的“生态”已经形成,生态不是一朝一夕能够形成的。半导体是一个国际合作行业,如果缺乏生态,那么再好的指令集也无法在市场上获取成功。如果华为自己设计了一个指令集,但是没有业界大佬使用你的指令集,周边配套设备不齐全,那么就无法形成“生态”,intel的Atom处理器进军智能设备处理器失败了,就是因为“生态”的原因。所以,从这个方面来说,各大芯片设计厂商也来不开ARM。


    总之,ARM已经占据了智能设备处理器95%以上的市场,芯片的设计、制造几乎都围绕着ARM,形成了ARM生态,所以离开ARM“另起炉灶”是一件非常困难的事情。


Geek视界


互联网的基本架构是美国科学家在英语的基础上,借助数学、通讯学、信息学等搭建起来的,ARM是无数科学家经过长时间的研发而创新出来的,这不仅包含了科学家们的心血,还包括从古希腊开始的神学、数学、哲学和科学体系,是无法另起炉灶的,也是轻易改不掉的。

这就好比房子的承重墙和大梁都建好了,无论后期怎么装修,房子的框架是无法改变的。

做操作系统尤如面点师蒸馒头,再伟大的面点师,首先需要合格的面粉,而面粉在整个生产过程中有不同层次的安全生产标准和规范:种子、种植、收割……,然后脱壳、加工……每一道工序都符合安全标准,只有这样,面点师才能拿到安全卫生的面粉去蒸出合格的馒头。

如果面没发好或者碱放多了导致馒头又粘又黄,这是面点师的责任。而选种、种植小麦,包括是选择杂交还是转基因,就不是面点师可以决定和完成的了。


芯片、操作系统等网络科技产品都是如此,每个层面都有不同的设计和器件主题,相应有不同的标准、配套和链接,各层次之间相互支撑、相互配合,但是不能相互替代。

在世界上所有的操作系统中,要么一支独秀(IOS);要么百花齐放(android )。而之前的什么塞班系统、windows phone等,技术上都是完美无暇,但却败于市场! 操作系统成功好坏与否,不是做出来就成功了,而是很多很多人用了以后都说行,才算是走在成功的路上!

所以,成功在事后,不在现在,更不在话下!操作系统还真不是一个大而全问题,而是一个产业链问题! 华为作为一个硬件公司,很难在芯片和系统领域有任何大的作为!

(未完待续-)



当下,总会有一些无知者天天臆想天开!如果真正的能够独立的创造一个新的系统出来,离开了几十家合作伙伴还行?要我说,除非你用中文写代码,编程序,否则,别说自己独立创造出了什么系统!

即便是别人没有完全断供什么,也不意味着别人怕你什么?自己取得了胜利。试想,如果安卓系统全部断网、互联网全部断网,你还真的能活?但道义上却不能如此无情,这才是市场精神的本质!

据有关专家认为,“鸿蒙”是否能取代Android成功率极低,最主要难题在于两点。


首先,如果要用“鸿蒙”取代Android,人们一般使用的文件、音频、视频由于格式不同,未必能于新系统开启。

简单说,要连接外面世界,“鸿蒙”首先要开发大量转换器将Android可读的文件进行转换,世界上通用文件的格式成千上万,这几乎是海量的工作。

其次,最重要一点是,Android系统几乎占据了手机市场99%份额,大量软件都是基于Android开发,涵括了生活各个层面。

一个新的系统基本上没有软件支持再强也只算是一部功能机,现在通行的在Android上用的软件,数量之多简直难以计算,要软件商重新开发另一套去支持“鸿蒙”,也属于不可能任务。

建议华为先把电脑键盘的字母排序改变一下,如果能够改革成功,并被世上大部分电脑所接受。我绝对认为华为的鸿蒙系统可行。

否则,也只能算是个喊喊而已的摆拍吧! 这绝对不是贬低自己,而是认知世界,即“知止而后能定,由戒生定,由定开慧”!不是蛮干,而是要开慧呀!

风浪过后,还有几个人会再去关心“鸿蒙”呢?也许冷静、协调、智斗才是更高的智慧。面对着与己相关的系统快慢和兼容,有几个人不是先把自己的利益和便捷放在首位呢?


(未完待续二)


定慧堂


技术细节我也不懂,给你说二个比喻吧。

你去四儿子店买车了,出门才发现,有车没公路?你该怎么办?请专业搬家公司,把车搬回家,放家里看吧。

第二个例子,可能更贴切。

天空很自由吧?天高任鸟飞……

要是没空管……有几个敢飞上天的?

ARM就是空管!


全利88


难道离开哪一个人或哪个公司地球就不会转吗?中国市埸这么大由国家家政府主导计划经济建立一个在中国及友好国家范围內建立一套类似,ARM架构不行吗?近20亿人口的大市埸!偏要相信西方的ARM,只要好用易懂就行!因为美帝西方逼着我们国家单干!相信华为公司好样的!说不定几年后,咱设计的架构生态即便宜又市场大,西方又要向我们国家标准靠拢!


平286578216


我理解的是,arm架构类似一道题的公式,然后下游企业为解过程。

你可以不用公式,那么你自己创造公式。

可能有点不确切,而且是,题的公式,还要很多人去解,没人用的公式,大家都不去套,那就去没用的公式。

小学水平哈😂


我不是天使lala


ARM架构,曾称进阶精简指令集机器(Advanced RISC Machine)更早称作Acorn RISC Machine,是一个32位精简指令集(RISC)处理器架构。还有基于ARM设计的派生产品,重要产品包括Marvell的XScale架构和德州仪器的OMAP系列。

ARM家族占比所有32位嵌入式处理器的75%,成为占全世界最多数的32位架构。

ARM处理器广泛使用在嵌入式系统设计,低耗电节能,非常适用移动通讯领域。消费性电子产品,例如可携式装置(PDA、移动电话、多媒体播放器、掌上型电子游戏,和计算机),电脑外设(硬盘、桌上型路由器),甚至导弹的弹载计算机等军用设施。

ARM架构包含了下述RISC特性:

读取/储存 架构

不支援地址不对齐内存存取(ARMv6内核现已支持)

正交指令集(任意存取指令可以任意的寻址方式存取数据Orthogonal instruction set)

大量的16 × 32-bit 寄存器阵列(register file)

固定的32 bits 操作码(opcode)长度,降低编码数量所产生的耗费,减轻解码和流水线化的负担。

大多均为一个CPU周期执行。

为了补强这种简单的设计方式,相较于同时期的处理器如Intel 80286和Motorola 68020,还多加了一些特殊设计:

大部分指令可以条件式地执行,降低在分支时产生的负重,弥补分支预测器(branch predictor)的不足。

算数指令只会在要求时更改条件编码(condition code)

32-bit筒型位移器(barrel shifter)可用来执行大部分的算数指令和寻址计算而不会损失效能

强大的索引寻址模式(addressing mode)

精简但快速的双优先级中断子系统,具有可切换的暂存器组

有个附加在ARM设计中好玩的东西,就是使用一个4-bit 条件编码 在每个指令前头,表示每支指令的执行是否为有条件式的

这大大的减低了在内存存取指令时用到的编码位,换句话说,它避免在对小型叙述如if做分支指令。有个标准的范例引用欧几里得的最大公因子算法:

在C编程语言中,循环为:

int gcd (int i, int j)

{

while (i != j)

if (i > j)

i -= j;

else

j -= i;

return i;

}

在ARM 汇编语言中,循环为:

loop CMP Ri, Rj ; 设定条件为 "NE"(不等於) if (i != j)

; "GT"(大於) if (i > j),

; or "LT"(小於) if (i < j)

SUBGT Ri, Ri, Rj ; 若 "GT"(大於), i = i-j;

SUBLT Rj, Rj, Ri ; 若 "LT"(小於), j = j-i;

BNE loop ; 若 "NE"(不等於),则继续回圈

这避开了then和else子句之间的分支。

另一项指令集的特色是,能将位移(shift)和回转(rotate)等功能并成"资料处理"型的指令(算数、逻辑、和暂存器之间的搬移),因此举例来说,一个C语言的叙述

a += (j << 2);

在ARM之下,可简化成只需一个word和一个cycle即可完成的指令

ADD Ra, Ra, Rj, LSL #2

这结果可让一般的ARM程式变得更加紧密,而不需经常使用内存存取,流水线也可以更有效地使用。即使在ARM以一般认定为慢速的速度下执行,与更复杂的CPU设计相比它仍能执行得不错。

ARM处理器还有一些在其他RISC的架构所不常见到的特色,例如PC-相对寻址(的确在ARM上PC为16个暂存器的其中一个)以及 前递加或后递加的寻址模式。

另外一些注意事项是 ARM 处理器会随着时间,不断地增加它的指令集。某些早期的 ARM 处理器(比ARM7TDMI更早),譬如可能并未具备指令可以读取两 Bytes 的数量,因此,严格来讲,对这些处理器产生程式码时,就不可能处理如 C 语言物件中使用 "volatile short" 的资料型态。

ARM7 和大多数较早的设计具备三阶段的流水线化(Pipeline):提取指令、解码,并执行。较高效能的设计,如 ARM9,则有五阶段的流水线化。提高效能的额外方式,包含一颗较快的加法器,和更广的分支预测逻辑线路。

这个架构使用“协处理器”提供一种非侵入式的方法来延伸指令集,可透过软件下 MCR、MRC、MRRC和MCRR 等指令来对协处理器寻址。协处理器空间逻辑上通常分成16个协处理器,编号分别从 0 至 15 ,而第15号协处理器(CP15)是保留用作某些常用的控制功能,像是使用高速缓存和记忆管理单元运算(若包含于处理器时)。

在 ARM 架构的机器中,周边装置连接处理器的方式,通常透过将装置的实体暂存器对应到 ARM 的内存空间、协处理器空间,或是连接到另外依序接上处理器的装置(如总线)。协处理器的存取延迟较低,所以有些周边装置(例如 XScale 中断控制器)会设计成可透过不同方式存取(透过内存和协处理器)。

Thumb

较新的ARM处理器有一种16-bit指令模式,叫做Thumb,也许跟每个条件式执行指令均耗用4位的情形有关。在Thumb模式下,较小的opcode有更少的功能性。例如,只有分支可以是条件式的,且许多opcode无法存取所有CPU的暂存器。然而,较短的opcode提供整体更佳的编码密度(注:意指程式码在内存中占的空间),即使有些运算需要更多的指令。特别在内存埠或总线宽度限制在32 以下的情形时,更短的Thumb opcode能更有效地使用有限的内存带宽,因而提供比32位程式码更佳的效能。典型的嵌入式硬件仅具有较小的32-bit datapath寻址范围以及其他更窄的16 bits寻址(例如Game Boy Advance)。在这种情形下,通常可行的方案是编译成 Thumb 程式码,并自行最佳化一些使用(非Thumb)32位指令集的CPU相关程式区,因而能将它们置入受限的32-bit总线宽度的内存中。

首颗具备 Thumb 技术的处理器是 ARM7TDMI。所有 ARM9 和后来的家族,包括 XScale 都纳入了 Thumb 技术。

Jazelle

ARM 还开发出一项技术,Jazelle DBX (Direct Bytecode eXecution),允许它们在某些架构的硬件上加速执行Java bytecode,就如其他执行模式般,当呼叫一些无法支援bytecodes的特殊软件时,能提供某些bytecodes的加速执行。它能在现存的ARM与Thumb模式之间互相执行。

首颗具备Jazelle技术的处理器是ARM926EJ-S:Jazelle以一个英文字母'J'标示于CPU名称中。它用来让手机制造商能够加速执行Java ME的游戏和应用程式,也因此促使了这项技术不断地开发。

Thumb-2

Thumb-2 技术首见于 ARM1156 核心 ,并于2003年发表。Thumb-2 扩充了受限的 16-bit Thumb 指令集,以额外的 32-bit 指令让指令集的使用更广泛。因此 Thumb-2 的预期目标是要达到近乎 Thumb 的编码密度,但能表现出近乎 ARM 指令集在 32-bit 内存下的效能。

Thumb-2 至今也从 ARM 和 Thumb 指令集中派生出多种指令,包含位栏(bit-field)操作、分支建表(table branches),和条件执行等功能。

ThumbEE

ThumbEE,也就是所谓的Thumb-2EE,业界称为Jazelle RCT技术,于2005年发表,首见于 Cortex-A8 处理器。ThumbEE 提供从 Thumb-2 而来的一些扩充性,在所处的执行环境(Execution Environment)下,使得指令集能特别适用于执行阶段(Runtime)的编码产生(例如即时编译)。Thumb-2EE 是专为一些语言如 Limbo、Java、C#、Perl 和 Python,并能让 即时编译器 能够输出更小的编译码却不会影响到效能。

ThumbEE 所提供的新功能,包括在每次存取指令时自动检查是否有无效指标,以及一种可以执行阵列范围检查的指令,并能够分支到分类器(handlers),其包含一小部份经常呼叫的编码,通常用于高阶语言功能的实作,例如对一个新物件做内存配置。

NEON

进阶 SIMD 延伸集,业界称为NEON技术,它是一个结合 64 和 128 bit 的 SIMD(Single Instruction Multiple Data 单指令多重数据)指令集,其针对多媒体和讯号处理程式具备标准化加速的能力。NEON 可以在 10 MHz 的 CPU 上执行 MP3 音效解码,且可以执行 13 MHz 频率以下的 GSM AMR (Adaptive Multi-Rate) 语音编码。NEON具有一组广泛的指令集、各自的寄存器阵列,以及独立执行的硬件。NEON 支援 8-, 16-, 32- 和 64-bit 的整数及单精度浮点数据,并以 SIMD 的方式运算,执行图形和游戏处理中关于语音/视讯的部分。SIMD 在 向量超级处理机 中是个决定性的要素,它具备同时多项处理功能。在 NEON 技术中,SIMD 最高可支援到同时 16 个运算。

VFP

VFP 是在协同处理器针对ARM架构的衍生技术。它提供低成本的单精度和倍精度浮点运算能力,并完全相容于ANSI/IEEE Std 754-1985 二进制浮点算数标准。VFP 提供大多数适用于浮点运算的应用,例如PDA、智慧手机、语音压缩与解压、3D图像以及数位音效、打印机、机上盒,和汽车应用等。VFP 架构也支援 SIMD(单指令多重数据)平行化的短向量指令执行。这在图像和讯号处理等应用上,非常有助于降低编码大小并增加输出效率。

在ARM-based处理器中,其他可见的浮点、或 SIMD 的协同处理器还包括了 FPA, FPE, iwMMXt。他们提供类似 VFP 的功能但在opcode层面上来说并不具有相容性。

ARM 公司本身并不靠自有的设计来制造或出售 CPU ,而是将处理器架构授权给有兴趣的厂家。ARM 提供了多样的授权条款,包括售价与散播性等项目。对于授权方来说,ARM 提供了 ARM 内核的整合硬件叙述,包含完整的软件开发工具(编译器、debugger、SDK),以及针对内含 ARM CPU 硅芯片的销售权。对于无晶圆厂的授权方来说,其希望能将 ARM 内核整合到他们自行研发的芯片设计中,通常就仅针对取得一份生产就绪的知识产权内核(IP Core)认证。对这些客户来说,ARM 会释出所选的 ARM 核心的版图,连同抽象模拟模型和测试程式,以协助设计整合和验证。需求更多的客户,包括整合元件制造商(IDM)和晶圆厂家,就选择可合成的RTL(寄存器传输级,如 Verilog)形式来取得处理器的知识产权(IP)。藉著可整合的 RTL,客户就有能力能进行架构上的最佳化与加强。这个方式能让设计者完成额外的设计目标(如高震荡频率、低能量耗损、指令集延伸等)而不会受限于无法更动的电路图。虽然 ARM 并不授予授权方再次出售 ARM 架构本身,但授权方可以任意地出售制品(如芯片元件、评估板、完整系统等)。商用晶圆厂是特殊例子,因为他们不仅授予能出售包含 ARM 内核的硅晶成品,对其它客户来讲,他们通常也保留重制 ARM 内核的权利。

就像大多数 IP 出售方,ARM 依照使用价值来决定 IP 的售价。在架构上而言,更低效能的 ARM 内核比更高效能的内核拥有较低的授权费。以硅芯片实作而言,一颗可整合的内核要比一颗硬件宏(黑箱)内核要来得贵。更复杂的价位问题来讲,持有 ARM 授权的商用晶圆厂(例如韩国三星和日本富士通)可以提供更低的授权价格给他们的晶圆厂客户。透过晶圆厂自有的设计技术,客户可以更低或是免费的ARM预付授权费来取得 ARM 内核。相较于不具备自有设计技术的专门半导体晶圆厂(如台积电和联电),富士通/三星对每片晶圆多收取了两至三倍的费用。对中少量的应用而言,具备设计部门的晶圆厂提供较低的整体价格(透过授权费用的补助)。对于量产而言,由于长期的成本缩减可借由更低的晶圆价格,减少ARM的NRE成本,使得专门的晶圆厂也成了一个更好的选择。

许多半导体公司持有 ARM 授权:Atmel、Broadcom、Cirrus Logic、Freescale(于2004从摩托罗拉公司独立出来)、富士通、英特尔(借由和Digital的控诉调停)、IBM,英飞凌科技,任天堂,恩智浦半导体(于2006年从飞利浦独立出来)、OKI电气工业,三星电子,Sharp,STMicroelectronics,德州仪器 和 VLSI等许多这些公司均拥有各个不同形式的ARM授权。虽然ARM的授权项目由保密合约所涵盖,在智慧财产权工业,ARM是广为人知最昂贵的CPU内核之一。单一的客户产品包含一个基本的 ARM 内核可能就需索取一次高达美金20万的授权费用。而若是牵涉到大量架构上修改,则费用就可能超过千万美元。

目前也有其他很多架构,如X86,powerPC,MIPS,RISC-V,等。现在华为海思用的最后一种,龙芯用的RISC指令集,类似MIPS,你可以看我另外一篇有专门介绍。看发展,RISC-V近几年兴起,估计会大有可为。







飘舞的风信子


原则上安卓APP能运行在任何一种芯片上,只要移植安卓环境到目标芯片上即可。但这是理论上的,实际上不同芯片指令集有差异,如果APP越过JVM运行平台直接调用了底层的一些资源,那这个APP只能在指定芯片上编译运行,一般APP都只适配了ARM,那其它芯片就有兼容性问题。

事实上能跨平台运行的APP并不多,特别是游戏类视频类要用硬件加速的,几乎都不能跨平台运行。

所以,安卓发展到今天,其实是越来越为ARM量身定制了,早已失去了跨平台的优势。

X86 MIPS平台上的安卓几乎已经消声匿迹。


分享到:


相關文章: