目录
1. 前言
当前,X86和ARM架构是公认的在商业化进程中表现最优秀的两大架构。之前我们已经介绍了X86架构,今天介绍另一个在近十年大火的架构,ARM。
ARM架构,过去称作
进阶精简指令集机器
(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,被广泛地使用在嵌入式系统设计。
由于节能的特点,ARM处理器非常适用于行动通讯领域,符合其主要设计目标为低耗电的特性。
在今日,ARM家族占了所有32位嵌入式处理器75%的比例,使它成为占全世界最多数的32位架构之一。
ARM处理器可以在很多消费性电子产品上看到,从可携式装置(PDA、移动电话、多媒体播放器、掌上型电子游戏,和计算机)到电脑外设(硬盘、桌上型路由器)甚至在导弹的弹载计算机等军用设施中都有他的存在。在此还有一些基于ARM设计的派生产品,重要产品还包括Marvell的XScale架构和德州仪器的OMAP系列。
说的直白一些,ARM相当于移动领域的x86,全球有超过95%的移动设备采用ARM设计架构的处理器。
2.ARM公司发展史
1978年,一家名字叫CPU(Cambridge Processor Unit)的公司在英国剑桥诞生,其创始人是一个名叫Hermann Hauser的奥地利籍物理学博士,还有一个名叫Chris Curry的英国工程师。
CPU公司成立之后,主要从事电子设备设计和制造的业务。他们接到的第一份订单,是制造赌博机的微控制器系统。这个微控制器系统被开发出来后,称之为Acorn System 1。
1979年,他们给公司换了个名字,叫做Acorn Computer Ltd。在Acorn System 1之后,他们又陆续开发了System 2、3、4,还有面向消费者的盒式计算机——Acorn Atom。
到了1981年,公司迎来了一个难得的机遇——英国广播公司BBC打算在整个英国播放一套提高电脑普及水平的节目,他们希望Acorn能生产一款与之配套的电脑。但是Acorn缺少合适的芯片。当时美国国家半导体和摩托罗拉公司的16位芯片售价过高,同时,当时如日中天的英特尔(Intel)拒绝为他们提供相关处理器(80286)的设计资料和样品。
一气之下,Acorn决定自己造芯片。
就这样,Acorn公司的研发人员从美国加州大学伯克利分校找到了一个关于新型处理器的研究——简化指令集,恰好可以满足他们的设计要求。在此基础上,经过多年的艰苦奋斗,来自剑桥大学的计算机科学家Sophie Wilson和Steve Furber最终完成了微处理器的设计。
对于这块芯片,Acorn给它命名为Acorn RISC Machine。这就是大名鼎鼎的“ARM”三个字母的由来。
当时研发出来的第一款处理器芯片的型号,被定为 ARM1。当时ARM1和同时期Intel的80286处理器(也就是常说的286)对比如下:
可以看出来,ARM1和80286各有所长。
但是,就在同一年,1985年10月,英特尔发布了80386。在80386面前,ARM1就只有被吊打的份了。
让ARM直接在性能上和x86系列硬杠,显然是不现实的。ARM有意无意地选择了与Intel不同的设计路线——
Intel持续迈向x86高效能设计,ARM则专注于低成本、低功耗的研发方向。
3.ARM架构发展史
有些人将“指令集体系结构”称为架构,这样就有了ARMv8架构、ARMv7-A架构、ARMv6架构等等,这些都是ARM设计的一些RISC指令集。
所谓指令集体系结构,就是ARM公司推出的一整套的精简指令,它是计算机最低层的命令,比如说应用程序需要从内存读取数据,那么最后就是通过调用ARM设计的指令是实现内存读取。
不过,也有人将ARM7、 ARM9、 ARM11以及Cortex等系列内核也称为架构。譬如,现在ARM主流的架构应该就是智能手机领域的Cortex-A系列架构、工业控制嵌入式领域的Cortex-M系列架构、对稳定性要求高的Cortex-R系列架构等。
值得一提的是,ARM架构在不断演变的同时,仍保持了各个版本之间的兼容性。
那么,为了清楚地表达每个ARM应用实例所使用的指令集,ARM公司定义了几种主要的ARM指令集结构版本,以版本号V1-V8表示。
3.1
ARMv1架构
1985年,ARMv1架构诞生,该版架构只在原型机ARM1出现过,只有26位的寻址空间(64MB),没有用于商业产品。
3.2 ARMv2架构
1986年,ARMv2架构诞生,该版本架构对V1进行了扩展,首颗量产的ARM处理器ARM2就是基于该架构,包含了对32位乘法指令和协处理器指令的支持,但同样仍为26位寻址空间。其后还出现了变种ARMv2a,ARM3即采用了ARMv2a,
是第一片采用Cache的ARM处理器。
3.3 ARMv3架构
1990年,ARMv3架构诞生,第一个采用ARMv3架构的微处理器是ARM6(610)以及ARM7,ARM6作为IP核、独立的处理器、具有片上高速缓存、MMCU和写缓冲的集成CPU,寻址空间增大到32位(4GB)。变种版本有3G和3M。版本3G是不与版本2a相兼容的版本3。版本3M引入了有符号和无符号数乘法和乘加指令。
3.4 ARMv4架构
1993年,ARMv4架构在V3版上作了进一步扩充,是目前应用最广的ARM架构
,ARM7(7TDMI)、ARM8、ARM9(9TDMI)和Strong ARM均采用了该架构。ARM在这个系列中引入了T变种指令集,即处理器可工作在Thumb状态,增加了16位Thumb指令集。V4不再强制要求与26位地址空间兼容,而且还明确了哪些指令会引起未定义指令异常。
3.5 ARMv5架构
1998年,ARMv5架构诞生,在V4版基础上增加了一些新的指令,ARM7(EJ)、ARM9(E)、ARM10(E)和Xscale采用了该架构,这版架构改进了ARM/Thumb状态之间的切换效率。这些新增命令有带有链接和交换的转移BLX指令;计数前导零CLZ指令;BRK中断指令;增加了数字信号处理指令(V5TE版);为协处理器增加更多可选择的指令。此外还引入了DSP指令和支持JAVA。
3.6 ARMv6架构
V6版架构于2001年正式发布,
首先被应用在ARM11处理器。
V6版架构在降低耗电量的同时,还强化了图形处理性能。
它还引进了包括单指令多数据(SIMD) 运算在内的一系列新功能。通过追加有效进行多媒体处理的SIMD(Single Instruction,Multiple Data,单指令多数据)功能,将语音及图像的处理功能提高到了原型机的4倍。此外,还引入了混合16位/32位的Thumb-2指令集和Trust Zone技术。
3.7 ARMv7架构
2004年,ARMv7架构诞生,该版本架构采用了Thumb-2技术,它是在ARM的Thumb代码压缩技术的基础上发展出来的,并且保持了对已存ARM解决方案的完整的代码兼容性。此外,ARMv7还支持改良的运行环境,来迎合不断增加的JIT和DAC技术的使用。
ARMv7架构还包括 NEON™ 技术扩展,可将DSP和媒体处理吞吐量提升高达400%,并提供改进的浮点支持以满足下一代3D图形和游戏以及传统嵌入式控制应用的需要。
从这个时候开始ARM以Cortex来重新命名处理器,Cortex-M3/4/7,Cortex-R4/5/6/7,Cortex-A8/9/5/7/15/17都是基于该架构。
3.8 ARMv6-M架构
2007年,在ARMv6基础上衍生了ARMv6-M架构,该架构是专门为低成本、高性能设备而设计,向以前由8位设备占主导地位的市场提供32位功能强大的解决方案。Cortex-M0/1/0+即采用的该架构。
3.9 ARMv8架构
2011年,ARMv8架构诞生,Cortex-A32/35/53/57/72/73采用的是该架构,这是ARM公司的首款支持64位指令集的处理器架构。
由于ARM处理器的授权内核被广泛用于手机等诸多电子产品,故ARMv8架构作为下一代处理器的核心技术而受到普遍关注。
ARMv8是在32位ARM架构上进行开发的,主要被用于对扩展虚拟地址和64位数据处理技术有更高要求的产品领域。ARMv8是近20年来,ARM架构变动最大的一次。它引入的Execution State、Exception Level、Security State等新特性,已经颠覆了我们对旧的ARM架构的认知。
可以看出,从ARMv7架构开始,ARM的命名方式有所改变。新的处理器家族,改以Cortex命名,并分为三个系列,分别是Cortex-A,Cortex-R,Cortex-M。
Cortex-A |
针对高性能计算。如我们目前手机SoC中常出现的Cortex-A76等 |
Cortex-R |
针对实时操作处理。主要是面向嵌入式实时处理器。在汽车的电子制动系统,工业控制领域等领域比较常见 |
Cortex-M |
专为低功耗、低成本系统设计。目前火热的IoT领域常常见到采用Cortex-M架构的处理器 |
其实,除了上述三大系列之外,还有一个主打安全的Cortex-SC系列(SC:SecurCore),主要用于政府安全芯片。
4. ARM
的
授权模式的确立
ARM 公司本身并不靠自有的设计来制造或出售 CPU ,而是将处理器架构授权给有兴趣的厂家。
1990年,Acorn为了和苹果合作,专门成立了一家合资公司,名叫ARM(Advanced RISC Machines)。苹果投了150万英镑,芯片厂商VLSI投了25万英镑,Acorn本身则以150万英镑的知识产权和12名工程师入股。
在成立后的那几年,ARM业绩平平,工程师们也人心惶惶,害怕随时都会失业。在这个情况下,ARM决定改变他们的产品策略——
他们不再生产芯片,转而以授权的方式,将芯片设计方案转让给其他公司,即“Partnership”开放模式。
没想到正是这种模式,开创了属于ARM的全新时代。
ARM所采取的是IP授权的商业模式,收取一次性技术授权费用和版税提成。具体来说,ARM有三种授权方式:使用层级授权、内核层级授权和架构层级授权。
这三个层级的权限是依次上升的。
使用层级授权是最基本也是最低的授权等级。这就意味着你只能拿别人提供的定义好的IP来嵌入在你的设计中,不能更改人家的IP,也不能借助人家的IP创造自己的基于该IP的封装产品。拥有使用授权的用户只能购买已经封装好的ARM处理器核心,而如果想要实现更多功能和特性,则只能通过增加封装之外的DSP核心的形式来实现(当然,也可以通过对芯片的再封装方法来实现)。由于担心对知识产权保护不力,ARM对很多中国背景的企业均采取这一级别的授权。
内核层级授权指可以以一个内核为基础然后在加上自己的外设,不能改变原有设计,但可以根据自己的需要调整产品的频率、功耗等。比如USART GPIO SPI ADC 等等,最后形成了自己的MCU,比如三星、德州仪器(TI)、博通、飞思卡尔、富士通以及Calxeda等,这些公司并没有权限去对内核进行改造。
架构层级授权是ARM会授权合作厂商使用自己的架构,且可以对ARM架构进行大幅度改造,甚至可以对ARM指令集进行扩展或缩减,方便其根据自己的需要来设计处理器。例如高通的Krait架构和苹果的Swift架构,就是在取得ARM的授权后根据自己的需求设计完成的。
做个很形象的比喻:假设我写了一篇文章,我只授权了你转发,不能更改,不能添油加醋,便是使用层级授权;我授权你可以在文章中引用我的文章,便是内核级授权;我授权你可以拿去修改、重组我的文章,形成一篇新的论文,便是架构层级授权。
注意,某一版本的架构层级授权,通常是永久性的。
如果按照用途来划分得更细一点,ARM的授权模式还包括了比如
学术授权
,
是免费面向高校和科研机构的;比如Design Start,是为了方便半导体企业低成本、低风险、快速了解ARM IP的一种授权模式;
这两种模式下设计出来的芯片不能销售,只能用于内部研究。
还有
多用途授权和终身多用途授权
,以时间为授权效力划分,相对来说比较适合大型企业。而
单用途授权
以用途划分授权效力范围,这种授权模式之下,需要交一笔前期授权费,此后按照每颗芯片收取约2%的版税。这种授权相对来说比较适合创业公司,或者目标明确的特定设计项目。
正是ARM的这种授权模式,极大地降低了自身的研发成本和研发风险。它以风险共担、利益共享的模式,形成了一个以ARM为核心的生态圈,使得低成本创新成为可能。目前ARM在全球拥有大约1000个授权合作、超过300家合作伙伴,但是敢于购买架构授权的,也只有15家。高通Krait、苹果Swift、Marvell都是典型的用户。正是靠着如此众多授权伙伴的支持,ARM处理器才获得了25亿颗的季度出货量,历史总量已经达到500亿颗,可以绕地球12周。
4.1 ARM授权使用方
4.2 基于ARM处理器/微控器的产品
5 ARM全球合作伙伴
基于开放的ARM芯片IP授权,众多厂商共同参与了ARM服务器架构规范标准的制定。
2016年4月,在中国市场,ARM在工信部的牵头下,与戴尔、华为、阿里巴巴等成立了绿色计算产业联盟,正在推动基于ARM架构的服务器。华为、ARM、戴尔、联想、华芯通、电子标准院、新华三、天津飞腾、中国软件、SK海力士、北大、清华、上海交大、中科院计算所、神州数码、沈阳东软、紫光国芯、中国电子、Mellanox、天津麒麟、中国长城、NVIDIA、南京百敖等都是其会员单位。
5.1 ARM 中国芯
ARM看到中国蓬勃发展的市场潜力,于2002年进入中国,和中国的合作伙伴携手共同建设ARM生态。为进入中国市场,ARM公司为中国厂商提供量身定制的服务,帮助其更快和更便宜地申请ARM授权。例如,在中国实施一种称为“IP Access”策略,即用户只要交纳一定的授权费,就可以在众多产品中任意选择自己需要的ARM核,当他们觉得采用某个核不适用时,即使研发展开后也还可以再换另一个。
根据ARM的公开信息显示,截止目前,ARM在中国地区已经有超过200多个合作伙伴,中国客户推出的基于ARM技术的国产SoC(系统级芯片)累计出货量超过160亿颗,现在国内95%的国产芯片都是基于ARM技术的。很多ARM中国合作伙伴所设计的芯片已经在全球物联网、移动乃至云服务器等众多应用领域占据领先地位,成为全球化半导体市场中不容忽视的创新推动力。
ARM已垄断移动芯片市场,并逐渐进入了PC市场,基于该架构将较为容易建立服务器芯片生态,因此也最受重视,目前国产服务器芯片企业当中有
飞腾
和
华为
基于ARM架构研发服务器芯片。
其中华为进展最快,也最具实力,其拥有较为完整的产业链,自主研发ARM核心架构,同时基于自有ARM架构服务器芯片研发服务器产品,并计划与它力推的华为云计算相结合。
当前华为 ARM 架构服务器相关产业产品三类主线:
Hi16 系 列 CPU、鲲鹏系列 ARM CPU 和泰山服务器。2004 年华为就已经开始了 ARM 架构相关芯片的开发,覆盖华为多个产品线,2019年重磅发布自研的鲲鹏920系列高性能处理器,服务器版最多64核,桌面版有4核及8核版。
而从基于ARM架构的具体部署和业务进展维度看,天津飞腾发展较早,其产品线布局、商业化和生态做都还不错,目前已经与400多家国内的软硬件厂商进行了合作,已经初步建立起了相对完整的生态体系。
飞腾处理器诞生于1999年,团队规模从最初的十几人发展到如今500多人,芯片规模从几十万晶体管发展到几百亿晶体管,制程工艺从0.35微米发展到16/14纳米,形成了完整涵盖服务器、桌面和笔记本、嵌入式的高性能CPU产品线。比如FT-2000+/64处理器芯片是面向企业级高性能服务器。
需要指出的是,飞腾与华为一样都是获得了ARM指令集架构的永久性授权,目前其内核也是自主设计的。
按照ARM最新的规划,ARM计划在四年(2017 + 2018 + 2019 + 2020)实现1000亿的芯片发货量(上一个1000亿花了26年),然后冲着1万亿放量努力。
其定位的五大方向除了ARM架构已经占据优势的移动计算,汽车电子,嵌入式芯片,消费电子等,还包括了互联网和服务器基础设施。所以在商业全球化,市场开放化不断加大的的整体环境下去担心ARM服务器厂商的授权被限制的情况大可不必。
此外,获得ARM指令集授权的厂家不单是在计算核与SoC芯片设计上拥有最大的自由度,而且可以根据市场需求对ARM指令集的升级换代提出修改或添加意见,ARM指令集的发展是开放的。随着飞腾、华为、展迅等国内厂家市场占有率不断提高,对ARM指令集发展的话语权将逐步增大,通过市场的成功来实现对上层IP的影响力。
在中国服务器市场,ARM已经有了全套基于服务器芯片的产业链合作伙伴,包括:
KMI、博傲等内核虚拟机固件厂商,中科方德、中标麒麟、普华等操作系统厂商,阿里云、华为云、百度云等云系统合作伙伴,达梦、人大金仓、瑞中数据、神舟通用、南大通用等数据库厂商,东方通、山东中创、金蝶等中间件厂商以及浪潮、联想、曙光、中兴、长城等整机系统厂商,构成了完整的产业生态链,可以实现软件全面国产化。
5.2 ARM在中国的大事记