8051 与 AndesCoreTM 的软件差异与移植
1. 8051 与 AndesCoreTM
本文将介绍使用 8051 与 AndesCore™差异事项,并对两种 CPU 系统相关事 项做说明,后面再介绍从 8051 移植到 AndesCore™上注意事项,举中断向量表 及异常处理函数的例子说明差异及移植,最后简要介绍 AndesCore™在 MCU 应 用的三款CPU:N705,N801 和 N968A。
2. 8051 与 AndesCoreTM 常见差异事项
2.1. 位宽的差异
位宽是指处理器一次执行指令的数据带宽。8051 是 8 位宽的处理器, 而 AndesCore™是 32 位宽的处理器,支持 32 位与 16 位的混合指令集,位数越宽, 在数据的处理方面就更有效率。
8051 指令例子:
MOV A, Rn ; 寄存器传送到累加
INC A ; 累加器加 1
AndesCore™指令例子:
1. 32 位指令
MOVI Rt, imm20s ; 将一个立即数 imm20s 赋于寄存器 Rt
ADDI Rt, Ra, imm15s ; 将一个立即数 imm15s 与 Ra 相加结果赋于 Rt
2. 16 位指令: 在操作数范围较小时,可以被编译成 16 位指令
MOVI55 Rt5, imm5s ;
ADDI333 Rt3, Ra3, imm3u ;
2.2. 指令差异
8051 汇编语言共有 111 条指令集,AndeStar™的 V3m 指令集有 157 条, AndeStar™的 V3 指令集有 200 多条,两种 CPU 的指令集大概可以分为以下几 类:算术运算,如加,减,乘,除等操作;数据传送,如数据在寄存器,内存间 的传送,赋值等;逻辑跳转,如函数呼叫,无条件跳转,条件跳转,中断返回等; 在 AndesCore™中还有特权模式的指令部分,关于两种指令集的具体差别,可 以分别参考对应的指令集介绍文档。
2.3. 地址空间映像差异
AndesCore™使用 memory map 方式映像地址空间,主要有两种,内存的空 间映射,如其中的 RAM 或 ROM 地址,它们用于存放程序运行时的代码和数据, 在 AndesCore™上代码在 link 后,程序运行的代码和数据地址会最终确定, Andes 提供了一个简便的 link script 工具 sag,可以很方便的对系统中可用的内 存空间进行分配设定。
另一个是外设所对应的地址空间,可以通过查看 SoC 对应的手册了解对应的 外设映射的空间范围及相应的使用方法。
2.4. 堆栈设置差异
8051 的堆栈的起始位置是固定的(部分衍生 8051 可以做程序设定),它通 常固定在片内的 RAM 中,8051 内存空间有限,非常小,程序中所使用的变量 存放于特定的数据空间中,并不会放在堆栈空间,所以在 8051 中所需要的堆栈 空间很小。而对于 AndesCore™来说,堆栈可以设置在任意合适的 RAM 上。程 序运行时所有的局部变量都存放在堆栈中,只需要确保在设计系统的时候有足够 的堆栈空间。在 AndesCore™中有$sp 寄存器表示栈顶位置,这需要在系统上电 或者是系统 reset 后初始化时进行设置。
2.5. 代码和数据的存储差异
在 8051 系列单片机中,数据存储区可以分为内部数据存储区以及外部数据 存储区。
内部数据存储区有几个区别:data,bdata,idata。
data : 片内 RAM 直接寻址区。bdata: 片内 RAM 位寻址区。idata: 片内 RAM
间接寻址区。
外部数据存储区又有:xdata,pdata。
xdata 和 pdata:是外部存储区,有些芯片会带有 XRAM。
在有些开发工具中,如 Keil,可以通过设置存储模式来处理,存储模式决定 了默认的存储器类型,此存储器类型将应用于函数参数,局部变量和定义时未包含 存储器类型的变量。
SMALL 所有的变量存放在片内 RAM(data 区间)
COMPACT 所有的变量存放在外部存储区(pdata 区间)
LARGE 所有的变量存放在外部存储区(xdata 区间)
AndesCore™以内存映射的方式,内存空间不会有特别的限制,就是说不会 像 8051 那样需放在某处区间,这样的设计更方便灵活,允许程序代码和数据在 可用的空间里自由放置。
有时候需要将某段代码或者数据存放在指定的位置上,在 8051 中,可以在 代码中使用"at"关键字,但该关键字是 8051 中所特有的,会造成可移植性和维 护的问题,在 AndesCore™上,提供了一种简便的 link script 工具,如上所提到 的 sag 工具,在 C 代码中使用 GNU 标准的语法格式,在 link 之后相应的代码和 数据将存放于指定的位置,这样可以避免在代码中使用"at"该平台相关的属性设 置。
2.6. 数据类型及对齐差异
8051 和 AndesCore™是不同类型的 CPU,它们所使用的数据类型所对应的宽 度也不同,如下表所示:
Type AndesCore™8051Noteschar8-bit signed8-bit signedshort16-bit16-bitint32-bit16-bitint is smaller on 8051long32-bit32-bitlong long64-bitN/Afloat32-bit32-bitdouble64-bit32-bit8051 has no 64-bit floating point typelong double64-bitN/A
在链接完成后数据通常都会按照本身的属性对齐,比如 int 类型则会 4 bytes对齐,short 则会 2 bytes 对齐。这样的存放方式可以提高 CPU 对数据读取时的 效率。虽然 AndesCore™是 32bit 的 CPU, 在只需要 8bit 和 16bit 的数据时能 节省存储空间,但在处理 16bit 和 32bit 的数据上则有更高效。
在 8051 中有 sbit 关键字用于设置对特殊功能寄存器 SFR 的直接访问,8051的特殊功能寄存器分布在内存地址 0x80 到 0xFF 处,如下表:
F8HFFHF0HB *F7HE8HEFHE0hACC *E7HD8HDFHD0HPSW *D7HC8HT2CON *RCAP2LRCAP2HTL2TH2CFHC0hC7HB8HIP *BFHB0hP3 *B7HA8hIE *AFHA0HP2 *A7H98HSCON *SBUF9FH90HP1 *97H88hTCON *TMODTL0TL1TH0TH18FH80HP0 *SPDPLDPHPCON87H
sbit 是 8051 扩展的变量类型,非标准 C 语法,移植的时候需要将其修改成标准 C 操作语法,另外在 AndesCore™中,所有的寄存器都是单独存在的,不 会占用内存的空间。
2.7. 指针使用差异
8051 中两种类型的指针,分别是存储器指针和通用指针,通用指针由 3 个字 节组成,第一个字节用来指明对应的内存类型,所以这种类型的指针类型占用空 间更大也更慢,存储器指针只能用来访问指定类型的存储器空间。
通用指针:
通用指针的声明和标准 C 语言中一样
char *s; /* string ptr */
int *numptr; /* int ptr */ long *state; /* long ptr */
存储器指针:
char data *str; /* ptr to string in data */
int xdata *numtab; /* ptr to int(s) in xdata */
而在 AndesCore™上指针不会有这方面的限制,它是一个 32bit 的数据,普通的寄存 器就 可以 存放指针 内容 ,可 以访问到 系统 4G 范围内的 空间 (N705,N801 地址空间只有 16M,N968A 以上的 CPU 地址空间可达 4G)。
2.8. 函数声明差异
在 8051 中由于堆栈空间有限,如果有函数是可重入的,需要在函数声明的 时候用关 键字 reentrant 做说明。 8051 的中断处理 函数则 需要 使用关键字 interrupt 声明,中断处理函数有时也需要用 using 关键字指明哪一寄存器组会被 使用到。
在 AndesCore™中,都采用标准的 C 语法,在声明函数时并不需要这些附加 的声明。AndesCore™遵行底层的 ABI 机制,编译器处理底层的寄存器及堆栈相 关机制。对于上层用户来说是透明的。
加入微信
更多内涵 你懂的 !
搜索微信公众号:电子产品世界
或用微信扫描二维码:
Copyright ©2000-2015 ELECTRONIC ENGINEERING & PRODUCT WORLD. All rights reserved.
进入 32 位时代,谁能成为下一个8051
RISC-V架构在极短的时间内便引起了业界的高度关注,从众多反应快速的小公司到实力雄厚的巨头公司(如NVIDIA、西部数据等)均开始使用RISC-V架构开发产品。“旧时王谢堂前燕,飞入寻常百姓家”,在摩尔定律逐步逼近极限的今天,开放的RISC-V架构的诞生,催生出了一轮新的CPU创新热潮。
RISC-V在全世界范围内的兴起与风靡,在国内也引起了广泛的关注,当前国内的众多院校与公司都开始研究并使用RISC-V架构,将其用于学术或者工程项目中。尤其是在深嵌入式领域,无论是硬件处理器核,还是软件工具链,RISC-V架构处理器已经具备了替代传统商用深嵌入式处理器(譬如ARM Cortex-M处理器)的能力。但是由于RISC-V诞生时间太短,在很多方面亟需系统而翔实的中文资料来帮助初学者快速掌握这一门新兴的处理器架构。今天的介绍的《RISC-V架构与嵌入式开发快速入门》是一本介绍RISC-V架构嵌入式开发的入门书籍。
本书的姊妹版《手把手教你设计CPU——RISC-V处理器篇》已经出版,提供了一个非常高效的超低功耗开源RISC-V处理器学习案例——蜂鸟E203,并对其进行了全方面剖析和讲解,解决了在CPU硬件设计方面中文资料欠缺的问题。
但是,有关RISC-V嵌入式软件开发方面的中文资料仍然欠缺,体现在如下方面。
目前的RISC-V文档是英文原版的指令集手册,虽然此文档非常精简短小,但是该文档比较专业,处理器架构研究不深的读者难以理解。因此,学习者最好有对RISC-V指令集架构介绍的中文资料。对于RISC-V的软件开发工具链,包括嵌入式和Windows软件开发工具的下载和使用方法、简单嵌入式开发平台的搭建等,也没有很好的中文资料系统介绍。对于RISC-V的汇编语言开发、典型的RISC-V嵌入式开发平台和环境的使用、典型示例程序等,也没有很好的中文资料系统介绍。
综上,虽然部分专业人士已经能够娴熟地使用RISC-V进行嵌入式开发,但是初学者却无从下手。为了促进RISC-V在国内的普及,尤其是被广大初学者接受和快速入门,本书将分享和总结一些使用RISC-V进行嵌入式开发的相关技术和经验,主要面向对RISC-V感兴趣的入门用户,包括嵌入式软件开发和硬件设计人员。
本文通过几个轻松的话题,讨论一下CPU的基本知识以及深嵌入式领域的趣事。
磨刀不误砍柴工——CPU 基础知识介绍
CPU,全称为中央处理器单元,简称为处理器,是一个不算年轻的概念。早在20世纪60年代便已诞生了第一款CPU。
请注意区分“处理器”和“处理器核”,以及“CPU”和“Core”的概念。严格来说,“处理器核”和“Core”是指处理器内部最核心的部分,是真正的处理器内核;而“处理器”和“CPU”往往是一个完整的SoC,包含了处理器内核和其他的设备或者存储器。但是在现实中大多数文章往往不会严格地遵循两者的差别,时常混用,因此读者需要根据上下文自行甄别体会具体的含义。
经过几十年的发展,到今天已经相继诞生或消亡过了几十种不同的CPU架构。表1-1为近几十年来知名CPU架构的诞生时间表。什么是CPU架构?下面让我们来探讨区分CPU的主要标准:CPU的灵魂—指令集架构(Instruction Set Architecture,ISA)。
表1-1 知名CPU架构的诞生时间表
1.1.1 ISA—CPU的灵魂
指令集,顾名思义是一组指令的集合,而指令是指处理器进行操作的最小单元(譬如加减乘除操作或者读/写存储器数据)。
指令集架构,有时简称为“架构”或者称为“处理器架构”。有了指令集架构,便可以使用不同的处理器硬件实现方案来设计不同性能的处理器。处理器的具体硬件实现方案称为微架构(Microarchitecture)。虽然不同的微架构实现可能造成性能与成本的差异,但是,软件无须做任何修改便可以完全运行在任何一款遵循同一指令集架构实现的处理器上。因此,指令集架构可以理解为一个抽象层,如图1-1所示。该抽象层构成处理器底层硬件与运行于其上的软件之间的桥梁与接口,也是现在计算机处理器中重要的一个抽象层。
图1-1 指令集架构示意图
为了让软件程序员能够编写底层的软件,指令集架构不仅仅是一组指令的集合,它还要定义任何软件程序员需要了解的硬件信息,包括支持的数据类型、存储器(Memory)、寄存器状态、寻址模式和存储器模型等。如图1-2所示,IBM 360指令集架构是第一个里程碑式的指令集架构,它第一次实现了软件在不同IBM硬件机器上的可移植性。
图1-2 IBM 360架构指令集图卡
综上可见,指令集架构才是区分不同CPU的主要标准,这也是Intel和AMD公司多年来分别推出了几十款不同的CPU芯片产品的原因。虽然来自于两个不同的公司,但是它们仍被统称为x86架构CPU。
1.1.2 CISC与RISC
指令集架构主要分为复杂指令集(Complex Instruction Set Computer,CISC)和精简指令集(Reduced Instruction Set Computer,RISC),两者的主要区别如下。
CISC不仅包含了处理器常用的指令,还包含了许多不常用的特殊指令。其指令数目比较多,所以称为复杂指令集。 RISC只包含处理器常用的指令,而对于不常用的操作,则通过执行多条常用指令的方式来达到同样的效果。由于其指令数目比较精简,所以称为精简指令集。
在CPU诞生的早期,CISC曾经是主流,因为其可以使用较少的指令完成更多的操作。但是随着指令集的发展,越来越多的特殊指令被添加到CISC指令集中,CISC的诸多缺点开始显现出来。譬如:
典型程序的运算过程中所使用到的80%指令,只占所有指令类型的20%,也就是说,CISC指令集定义的指令,只有20%被经常使用到,而有80%则很少被用到。那些很少被用到的特殊指令尤其让CPU设计变得极为复杂,大大增加了硬件设计的时间成本与面积开销。
基于以上原因,自从RISC诞生之后,基本上所有现代指令集架构都选择使用RISC架构。
1.1.3 32位与64位架构
除了CISC与RISC之分,处理器指令集架构的位数也是一个重要的概念。通俗来讲,处理器架构的位数是指通用寄存器的宽度,其决定了寻址范围的大小、数据运算能力的强弱。譬如32位架构的处理器,其通用寄存器的宽度为32位,能够寻址的范围为232Byte,即4GB的寻址空间,运算指令可以操作的操作数为32位。
注意: 处理器指令集架构的宽度和指令的编码长度无任何关系。并不是说64位架构的指令长度为64位(这是一个常见的误区)。从理论上来讲,指令本身的编码长度越短越好,因为可以节省代码的存储空间。因此即便在64位的架构中,也大量存在16位编码的指令,且基本上很少出现过64位长的指令编码。
综上所述,在不考虑任何实际成本和实现技术的前提下,理论上来讲:
通用寄存器的宽度,即指令集架构的位数越多越好,因为这样可以带来更大的寻址范围和更强的运算能力。指令编码的长度越短越好,因为这样可以更加节省代码的存储空间。常见的架构位数分为8位、16位、32位和64位。早期的单片机以8位和16位为主,譬如知名的8051单片机是使用广泛的8位架构。•目前主流的嵌入式微处理器均在向32位架构转移。对此内容感兴趣的读者可以在互联网上搜索作者曾在媒体上发表的文章《进入32位时代,谁能成为下一个8051》。目前主流的移动手持、个人计算机和服务器领域,均使用64位架构。
1.1.4 ISA众生相
第1.1.1节中提到,经过几十年的发展,全世界范围内至今已经相继诞生或消亡过了几十种不同的指令集架构。下面将针对几款比较知名的指令集架构加以论述。
注意: 下列章节中列举的信息来自于本书成书时的公开信息,非官方正式信息,请读者以最新官方信息为准。
1.x86
x86是由Intel公司推出的一种复杂指令集(CISC),于1978年推出的Intel 8086处理器中首度出现,如图1-3所示。8086在3年后为IBM所选用,之后Intel与微软公司结成了所谓的Windows-Intel(Wintel)商业联盟,垄断了个人计算机(Personal Computer,PC)软硬件平台至今几十年而获得了丰厚的利润。x86架构也因此几乎成为了个人计算机的标准处理器架构,而Intel的广告标志更是深入人心,如图1-4所示。
图1-3 Intel 8086处理器
图1-4 Intel Inside广告标语
除Intel之外最成功的制造商之一为AMD。Intel与AMD公司是现今主要的x86处理器芯片提供商。其他公司也曾经制造过x86架构的处理器,包括Cyrix(为VIA所收购)、NEC、IBM、IDT以及Transmeta。
x86架构由Intel与AMD共同经过数代的发展,相继从最初的16位架构发展到如今的64位架构。在x86架构刚诞生的时代,CISC还是业界主流,因此,x86架构是具有代表性的可变指令长度的CISC指令架构。虽然之后RISC已经取代CISC成为现代指令集架构的主流,但是,由于Intel公司的巨大成功以及为了维护软件的向后兼容性,x86作为一种CISC架构被一直保留下来。事实上,Intel公司通过内部“微码化”的方法克服掉了CISC架构的部分缺点,加上Intel高超的CPU设计水平与工艺制造水平,使得x86处理器一直保持着旺盛的战斗力,不断刷新个人计算机处理器芯片性能的极限。所谓“微码化”是指将复杂的CISC指令先用硬件解码器翻译成对应的内部简单指令(微码)序列,然后送给处理器流水线执行的方法,使得x86的处理器核也变成了一种RISC的形式,从而能够借鉴RISC架构的优点。不过,额外的硬件解码器同样也会带来额外的复杂度与面积开销,这是x86架构作为一种CISC架构不得不付出的代价。
x86架构不仅在个人计算机领域取得了统治性的地位,还在服务器市场取得了巨大成功。相比x86架构,IBM的Power架构和Sun的SPARC架构都曾有着很明显的性能优势,也曾占据着相当可观的服务器市场。但是Intel采用仅提供处理器芯片而不直接生产服务器的策略,利用广大的第三方服务器生产商,结合Wintel的强大软硬件联盟,成功地将从处理器芯片到服务器系统一手包办的IBM与Sun公司击败。至今x86架构占据了超过90%的服务器市场。
2.SPARC
1985年,Sun公司设计出SPARC指令集架构,全称为“可扩充处理器架构(Scalable Processor ARChitecture,SPARC)”,是一种非常有代表性的高性能RISC架构。之后,Sun公司和TI公司合作开发了基于该架构的处理器芯片。SPARC处理器为Sun公司赢得了当时高端处理器市场的领先地位。1995年,Sun公司推出了UltraSPARC处理器,开始进入64位架构。SPARC架构设计的出发点是服务于工作站,它被应用在Sun、富士通等制造的大型服务器上,如图 1-5 所示。1989年SPARC还作为独立的公司而成立,其目的是向外界推广SPARC,以及为该架构进行兼容性测试。Oracle收购Sun公司之后,SPARC架构归Oracle所有。
由于SPARC架构是面向服务器领域而设计的,其最大的特点是拥有一个大型的寄存器窗口,SPARC架构的处理器需要实现从72到640个之多的通用寄存器,每个寄存器宽度为64位,组成一系列的寄存器组,称为寄存器窗口。这种寄存器窗口的架构由于可以切换不同的寄存器组快速地响应函数调用与返回,因此能够带来非常高的性能,但是这种架构由于功耗面积代价太大而并不适用于PC与嵌入式领域处理器。
图1-5 基于SPARC架构的服务器
前面提到了Sun公司在服务器领域与Intel竞争逐渐落败,因此,SPARC架构在服务器领域的份额也逐步缩减。而SPARC架构又不适用于PC与嵌入式领域,使得其局面十分尴尬。
SPARC架构应用的另外一个比较知名的领域是航天领域。由于美国的航天星载系统中普遍使用的Power架构,欧洲太空局为了独立发展自己的航天能力而选择了开发基于SPARC架构的LEON处理器,并对其进行了抗辐射加固设计,使之能够应用于航天环境中。
值得强调的是,欧洲太空局选择在航天领域使用SPARC架构并不代表SPARC架构特别适用于航天领域,而是因为SPARC在当时是一种相对开放的架构。SPARC架构也更罔谈垄断或占据航天领域的优势地位,因为从本质上来讲,航天领域处理器对于指令集架构本身并无特殊要求,其需求的主要特性是提供工艺上的加固单元和硬件系统的容错性处理(为了防止外太空强辐射造成电路失常)。因此,很多的航天处理器也采用了其他的处理器架构,譬如目前新开发的很多航天处理器也在使用新的ARM或者RISC-V架构(有关RISC-V架构见第1.5节)。
2017年9月,Oracle公司宣布正式放弃硬件业务,自然也包括了收购自Sun的SPARC处理器,至此,SPARC处理器可以说正式退出了历史舞台。此消息一经发出,引起了很多业内人士的惋惜,感兴趣的读者请在网络上自行搜索文章《再见SPARC处理器,再见Sun》。
3.MIPS
MIPS(Microprocessor without Interlocked Piped Stages Architecture)亦为Millions of Instructions Per Second的相关语,是一种简洁、优化的RISC架构。MIPS可以说是出身名门,由斯坦福大学的Hennessy教授(计算机体系结构领域泰斗之一)领导的研究小组研制开发。
由于MIPS是经典的RISC架构,因此是如今除了ARM之外被人耳熟能详的RISC架构。最早的MIPS架构是32位,最新的版本已有64位。
自从1981年由MIPS科技公司开发并授权后,MIPS架构曾经作为最受欢迎RISC架构被广泛应用在许多电子产品、网络设备、个人娱乐装置与商业装置上。它曾经在嵌入式设备与消费领域里占据很大的份额,如SONY、Nintendo的游戏机、Cisco的路由器和SGI超级计算机都有MIPS的身影。
但是由于一些商业运作的原因,MIPS被同属RISC阵营的ARM后来居上。2013年MIPS被英国公司Imagination Technologies收购,可惜的是,MIPS被Imagination收购后,非但没有发展,反而日渐衰落。2017年Imagination自身出现危机而整体寻求出售,MIPS再次面临被出售的命运。
4.Power
Power架构是IBM开发的一种RISC架构指令集。1980年IBM推出了全球第一台基于RISC架构的原型机,证明RISC相比CISC在高性能领域优势明显。1994年IBM基于此推出PowerPC604处理器,其强大的性能在当时处于全球领先地位。
基于Power架构的IBM Power服务器系统在可靠性、可用性和可维护性等方面表现出色,使得 IBM从芯片到系统所设计的整机方案有着独有的优势。Power架构的处理器在超算、银行金融、大型企业的高端服务器等多个方面应用十分成功。IBM至今仍在不断开发新的Power架构处理器:
2013年,IBM宣布了新一代服务器处理器Power8。Power8的核心数量达12个,而且每个核心都支持8线程,总线程多达96个。它采用了8派发、10发射、16级流水线的设计,各项规格均强大得令人惊叹。2016年IBM公司公布了其Power9处理器,IBM于2017年推出Power9拥有24个计算核心,是Power8芯片的两倍。IBM计划在2020年推出Power10,2023年推出Power11处理器。
5.Alpha
Alpha也称为 Alpha AXP,是一种64位的RISC指令集架构,由DEC公司设计开发,被用于DEC自己的工作站和服务器中。
Alpha是一款优秀的处理器,它不仅是最早跨过GHz的企业级处理器,而且还是最早计划采用双核,甚至是多核架构的处理器。然而,Alpha芯片和采用此芯片的服务器并没有得到整个市场的认同,只有少数人选择了Alpha服务器。据称其价格高昂、安装复杂,部署实施远远超过一般企业IT管理人员所能承受的难度。2001年,康柏收购DEC之后,逐步将其全部64位服务器系列产品转移到Intel的安腾处理器架构之上。2004年,惠普收购康柏,从此Alpha架构逐渐淡出了人们的视野。
6.ARM
由于ARM架构过于声名显赫,后续会有专门的小节重点论述ARM,在此不单独论述。
7.ARC
ARC架构处理器是Synopsys公司推出的32位RISC结构微处理器系列IP。ARC处理器的IP产品线覆盖了从低端到高端各个领域的嵌入式处理器,如图1-6所示。
图1-6 ARC处理器IP系列
ARC架构处理器以极高的能效比见长,出色的硬件微架构使得ARC处理器的各项指标均令人印象深刻。ARC处理器IP以追求功耗效率比(DMIPS/mW)和面积效率比(DMIPS/mm2)最优化为目标,以满足嵌入式市场对微处理器产品日益提高的效能要求。
ARC处理器的另外一个最大的特点是其高度可配置性,可通过增加或删除功能模块,满足不同的应用需求,通过配置不同属性实现快速系统集成,做到“量体裁衣”。
ARC是除了ARM之外的全球第二大嵌入式处理器IP供应商,全球已有超过170家客户使用Synopsys ARC处理器,这些客户每年总共产出高达15亿块基于ARC的芯片。
8.Andes
Andes架构处理器是我国台湾的晶心(Andes)公司推出的一系列32位RISC架构处理器IP。据2016年的统计数字,采用Andes指令集架构的系统芯片出货量超过4.3亿颗,总累计出货量超过19亿颗。2017年,Andes发布最新一代的AndeStar™处理器架构,成为商用主流CPU IP公司中第一家纳入开放RISC-V 指令集架构的公司。
9.C-Sky
C-SKY架构处理器是由我国杭州中天微系统有限公司开发的一系列32位高性能低功耗嵌入式处理器IP。杭州中天是国内CPU IP公司的翘楚,C-SKY系列嵌入式CPU核,具有低功耗、高性能、高代码密度、易使用等特点。
1.1.5 CPU的领域之分
本节将对CPU的不同应用领域加以探讨。在传统的计算机体系结构分类中,处理器应用分为3个领域——服务器领域、PC领域和嵌入式领域。
服务器领域在早期还存在着多种不同的架构呈群雄分立之势,不过,由于Intel公司商业策略上的成功,目前Intel的x86处理器芯片几乎成为了这个领域的霸主。PC领域本身是由Windows/Intel软硬件组合发展而壮大,因此,x86架构是目前PC领域的垄断者。传统的嵌入式领域所指范畴非常广泛,是处理器除了服务器和PC领域之外的主要应用领域。所谓“嵌入式”是指在很多芯片中,其所包含的处理器就像嵌入在里面不为人知一样。
近年来随着各种新技术新领域的进一步发展,嵌入式领域本身也被发展成了几个不同的子领域而产生了分化。
首先是随着智能手机(Mobile Smart Phone)和手持设备(Mobile Device)的发展,移动(Mobile)领域逐渐发展成了规模匹敌甚至超过PC领域的一个独立领域,其主要由ARM的Cortex-A系列处理器架构所垄断。Mobile领域的处理器由于需要加载Linux操作系统,同时涉及复杂的软件生态,因此和PC领域一样具有对软件生态的严重依赖。目前既然ARM Cortex-A系列已经取得了绝对的统治地位,其他的处理器架构很难再进入该领域。其次是实时(Real Time)嵌入式领域。该领域相对而言没有那么严重的软件依赖性,因此没有形成绝对的垄断,但是由于ARM处理器IP商业推广的成功,目前仍然以ARM的处理器架构占大多数市场份额,其他处理器架构譬如Synopsys ARC等也有不错的市场成绩。最后是深嵌入式领域。该领域更像前面所指的传统嵌入式领域。该领域的需求量非常之大,但往往注重低功耗、低成本和高能效比,无须加载像Linux这样的大型应用操作系统,软件大多是需要定制的裸机程序或者简单的实时操作系统,因此对软件生态的依赖性相对比较低。在该领域很难形成绝对的垄断,但是由于ARM处理器IP商业推广的成功,目前仍然以ARM的Cortex-M处理器占据大多数市场份额,其他的架构譬如Synopsys ARC和Andes等也有非常不错的表现。
表1-2是对目前CPU典型应用领域及其主流的架构进行的总结。
表1-2 处理器的应用领域及主流架构
综上所述,由于移动(Mobile)领域崛起成为一个独立的分类领域,现在通常所指的嵌入式领域往往是指深嵌入式领域或者实时嵌入式领域。说到此处,我们就不得不提及一位前辈“老炮儿”—8051内核。
1.1.6 8位时代的传奇“前辈”——8051
说起8051内核,熟悉嵌入式领域的朋友,几乎无人不知无人不晓。8051作为一款诞生了数十年之久的微处理器内核,在8位嵌入式微处理器内核领域,它是当之无愧的传奇“前辈”。
自从Intel于1980年为嵌入式系统开发Intel MCS-51(通常简称 8051)单芯片微控制器(简称单片机)至今,8051内核架构已经走过将近40个年头。Intel还以专利转让的形式把8051内核转让给了许多其他半导体公司,这些公司进一步发展出不同型号基于8051内核的微控制器芯片,因此形成了一个庞大的8051家族。
几十年发展下来的庞大的用户群和生态环境,以及多年来众多备受肯定的成功产品,可以说8051内核几乎成为8位微处理器内核的业界标杆。8051内核架构在1998年失去专利保护,久经沙场的它再次迸发出强大的二次生命力,各种形式的8051架构MCU(微控制器Microcontroller Unit)进一步涌入市场,各种基于8051内核的芯片产品层出不穷,各种免费版本的8051内核IP也可以从各种渠道获取。
当然由于8051内核并没有一个统一的组织和标准进行管理,所以也存在着体系结构混乱,各种增强型复杂多样的问题。虽然时常也都自称为8051内核,但是其实各有差别,琳琅满目让人难以分辨。但是这丝毫不影响8051内核的经典地位,时至今日,虽然目前微处理器内核正在经历着向32位架构迁移的大趋势,但是8051内核仍然有着举足轻重的地位,在大量的MCU、数模混合信号芯片、SoC芯片中仍能看到8051内核的身影,并且在相当长的时间内,在适合8位架构处理器内核的应用领域中都将继续使用8051内核,可以说是“廉颇虽老,尚能饭也”。
8051内核能在嵌入式领域取得如此成功的地位,可以归功于如下几个方面的原因。
广泛的被认知度,简单的体系结构。没有知识产权的限制,商业和开源的版本众多,非常适合中小型芯片公司采用。庞大的用户群以及相应的生态系统。成熟且免费的软件工具链支持。
尽管如此,8051作为一款诞生了接近40年的8位CISC(复杂指令集)架构内核,虽然是“老骥伏枥,壮心不已”,但是由于其性能低下,寻址范围受限,已经难以适应更多的新兴应用领域。随着IoT的发展和崛起,虽然嵌入式领域对于处理器内核的需求更加井喷,但是更多的是开始采用32位架构,且很多传统的8位应用领域也在开始向着32位架构迁移。
1.1.7 IoT的崛起——32位时代的到来
物联网(Internet of Things,IoT)这个概念的提出和全面进入人们的视线其实并不久远,应该IoT说是时下最热点的技术应用领域之一。即便近一年来火爆的AI风头更劲,但是IoT也是AI的基础支撑技术,以智能家居和智能城市为例,IoT终端设备支撑和AI的边缘智能计算便是很重要的两项技术基础设施,IoT与AI呈现出相辅相成进一步提速发展之势。根据麦肯锡全球机构的最新报告预测,全球物联网市场规模可望在2025年以前达到11万亿美元,这意味着物联网将有潜力在2025年时达到约11%的全球经济占有率。
物联网的新兴应用需要使用到性能更高的32位架构微处理器内核。以MCU为例,工业物联网、可穿戴式装置和智能家居为目前MCU市场的主要驱动力,而32位架构更是当前驱动MCU成长的重要领域。以智能家居为例,智能家居中的有些应用需要更精确的测量和控制、更好的能效,都需要有更复杂的数学模型和运算,这就要求MCU的运算速度大幅提升,以满足能耗和运算的需求。32位MCU执行效能更佳,能够满足众多物联网应用对数据处理能力要求,能够兼顾物联网的低功耗和高性能要求。有分析称,从2015年统计数据来看,全年全球32位MCU的出货量就已经超过4/8/16位MCU的总和。
谈及32位架构微处理器内核,就难以绕开该领域的“学霸”ARM Cortex-M了。
无敌是多么寂寞——ARM 统治着的世界
ARM(Advanced RISC Machines)是一家诞生于英国的处理器设计与软件公司,总部位于英国的剑桥,其主要业务是设计ARM架构的处理器,同时提供与ARM处理器相关的配套软件,各种SoC系统IP、物理 IP、GPU、视频和显示等产品。
虽然在普通人眼中,ARM公司的知名度远没有Intel公司的辨识度高,甚至不如华为、高通、苹果、联发科和三星等这些厂商那般耳熟能详。但是,ARM架构处理器却以“润物细无声”的方式渗透到我们生活中的每个角落。从我们每天日常使用的电视、手机、平板电脑以及手环、手表等电子产品,到不起眼的遥控器、智能灯和充电器等我们想到和想不到的方方面面,均有ARM架构处理器的身影。在白色家电、工业控制与汽车电子领域,ARM架构处理器更是无处不在;乃至我们熟知桌面PC、服务器和超级计算机领域,ARM架构也在朝其渗透。可以说,ARM架构处理器统治着这些领域,支撑着我们这个世界的运行。
1.2.1 独乐乐与众乐乐——ARM公司的盈利模式
ARM公司虽然设计开发基于ARM架构的处理器核,但是商业模式并不是直接生产处理器芯片,而是作为知识产权(Intellectual Property,IP)供应商,转让授权许可给其合作伙伴。目前,全世界有几十家大的半导体公司都使用ARM公司的授权,从ARM公司购买其设计的ARM处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM处理器芯片进入市场。
至此,我们提到了若干名词“ARM架构”“ARM架构处理器”或“ARM处理器”“ARM处理器芯片”“芯片”。为了能够阐述清楚其彼此的关系,并理解ARM公司的商业模式,下面通过一个形象的比喻加以阐述。
假设将“生产芯片”比喻为“制造一辆汽车”,我们知道在市场上有几十家品牌汽车生产商,譬如“大众”“丰田”“本田”等。那么芯片领域也有众多的芯片生产商,譬如“高通”“联发科”“三星”“德州仪器”等。有的芯片是以处理器的功能为主,我们称为“处理器芯片”,有的芯片中的处理器只是辅助的功能,我们称之为“普通芯片”或“芯片”。
就像每一辆汽车都需要一台发动机,汽车生产商需要向其他的发动机生产商采购发动机一样。每一款芯片都需要一个或者多个处理器,因此“高通”“联发科”“三星”“德州仪器”等芯片生产商需要采购处理器,于是他们可以从ARM公司采购处理器。
所谓“ARM架构”就好像是发动机的设计图样一样,是由ARM公司发明并专利保护的“处理器架构”,ARM公司基于此架构设计的处理器便是“ARM架构处理器”或“ARM处理器”。ARM由于主要以IP的形式授权其处理器,因此常称为“ARM处理器IP”。通过直接授权“ARM处理器IP”给其他的芯片生产商(合作伙伴),这便是ARM公司的主要盈利模式。
芯片公司每设计一款芯片,如果购买了ARM公司提供的“ARM处理器IP”,芯片公司需要支付一笔前期授权费(Upfront License Fee),之后,如果该芯片被大规模生产销售,则每卖出一片芯片均需要按其售价向ARM公司支付一定比例(譬如售价的1%~2%)的版税(Royalty Fee)。
由于ARM架构占据了绝大多数的市场份额,形成了完整的软件生态环境,在移动和嵌入式领域的芯片厂商,购买ARM处理器IP几乎成为这些厂商的首选。
就像有些有实力的汽车生产商可以自己设计制造发动机一样。有实力的芯片公司也想自己设计处理器,因此有3个选择。
第1个选择:自己发明一种处理器架构。第2个选择:购买其他商业公司的“非ARM架构”处理器IP。第3个选择:购买ARM公司的“ARM架构授权”而不是直接购买“ARM处理器IP”,自己定制开发基于ARM架构的处理器。
在前面的章节,我们曾经阐述了处理器架构及其衍生出的软件生态环境的重要性,探讨了为什么“非ARM架构”无法取得如ARM般巨大的成功,因此上述“第1个选择”和“第2个选择”在ARM架构占主导(譬如移动手持设备)的领域具有极大的风险。那么“第3个选择”便成为了这些有实力的芯片公司的几乎唯一选择。
就像汽车公司可以购买发动机公司的图样,然后按照自己的产品需求深度定制其发动机一样。芯片公司也可以通过购买ARM公司的“ARM架构授权”,按照自己的产品需求深度定制其自己的处理器。转让“ARM架构授权”给其他的芯片生产商(合作伙伴),这便是ARM公司的另外一种盈利模式。
使用这种自主研发处理器的芯片在大规模生产销售后无需向ARM公司逐片支付版税,从而达到降低产品成本和提高产品差异性的效果。
只有实力最为雄厚的芯片公司才具备购买“ARM架构授权”的能力。首先,因为ARM架构授权价格极其昂贵(高达千万美元量级),远远高于直接购买“ARM处理器IP”所需的前期授权费;其次,深度定制其自研处理器需要攻克极高的技术难度与投入高昂的研发成本。目前有能力坚持做到这一点的也仅有“苹果”“高通”“华为”等巨头。
综上可以看出,“ARM架构处理器”可以分为两种。
由ARM公司开发并出售的IP,也俗称为公版ARM。由芯片公司基于ARM架构授权自主开发的私有内核,也俗称为定制自研ARM。
相对应的,ARM公司的主要盈利模式也可以分为两种。
授权“ARM处理器IP”给其他的芯片生产商(合作伙伴),收取对应的前期授权费(Upfront License Fee),以及量产后的版税。转让“ARM架构授权”给其他的芯片生产商(合作伙伴),收取对应的架构授权费。ARM公司的强大之处便在于其与众多合作伙伴一起构建了强大的ARM阵营,如图1-7所示。全世界目前几乎大多数主流芯片公司都直接或者间接地在使用ARM架构处理器。 图1-7 ARM公司合作伙伴图谱
ARM公司自2004年推出ARMv7内核架构时,便摒弃了以往“ARM+数字”这种处理器命名方法(之前的处理器统称经典处理器系列),启用Cortex来命名,并将Cortex系列细分为3大类,如图1-8所示。
图1-8 Cortex-A/R/M系列
Cortex-A:面向性能密集型系统的应用处理器核。Cortex-R:面向实时应用的高性能核。Cortex-M:面向各类嵌入式应用的微控制器核。其中,Cortex-A系列与Cortex-M系列的成功尤其引人瞩目。接下来的章节将对Cortex-M系列与Cortex-A系列的成功分别加以详细论述。
1.2.2 小个子有大力量——无处不在的Cortex-M系列
Cortex-M是一组用于低功耗微控制器领域的32位RISC处理器系列,包括Cortex-M0、Cortex-M0+、Cortex-M1、Cortex-M3、Cortex-M4(F)、Cortex-M7(F)、Cortex-M23和Cortex-M33(F)。如果Cortex-M4 / M7 / M33处理器包含了硬件浮点运算单元(FPU),也称为Cortex-M4F/M7F/M33F。表1-3列出了Cortex-M系列各处理器的发布时间和特点。
表1-3 ARM Cortex-M系列各处理器发布时间和特点
Cortex-M的应用场景虽然不像Cortex-A系列那样光芒四射,但是其应用的嵌入式领域需求量巨大。有数据显示,2018年物联网设备的数量将会超过移动设备,到了2021年,我们将会拥有18亿台PC、86亿台移动设备和157亿台物联网设备。譬如有一些物联网设备可能需要在几年的时间里运转,而且仅依靠自身所带的电池,Cortex-M0 由于其体积非常之小而且功耗极低,就非常适合这类产品,比如传感器。而Cortex-M3是Cortex产品家族中最为广泛使用的一款芯片,它本身的体积也非常小,可以广泛应用于各种各样嵌入智能设备,比如智能路灯、智能家居温控器和智能灯泡等。2009年Cortex-M0这款超低功耗的32位处理器问世后,打破了一系列的授权记录,成了各制造商竞相争夺的香饽饽,仅9个月时间,就有15家厂商与ARM签约。至今全球已有超过60家公司获得了ARM Cortex-M的授权,我国仅大陆地区厂商也有近十家。Cortex-M3与Cortex-M0的合计出货量已经超过200亿片,其中有一半的出货是在过去几年完成的,据称每30分钟的出货量就可以达到25万片。
Cortex-M另一个取得巨大成功的领域便是微控制器(Microcontroller Unit,MCU)。随着越来越多的电子厂商不断为物联网(IoT)推出新产品,全球微控制器(MCU)市场出货量出现巨大成长动能,且呈现出量价齐升的情况。据市场调研机构预测,2016~2020年全球微控制器(MCU)出货量与销售额将持续创新高。
在ARM推出Cortex-M之前,全球主要的几个MCU芯片公司大多采用8位、16位内核或者其自有的32位架构的处理器。ARM推出Cortex-M处理器之后,迅速受到市场青睐,一些主流MCU供应商开始选择这款内核生产MCU。
2007年6月,ST推出基于ARM Cortex-M3处理器核的STM32 F1系列MCU使之大放光芒。 2009年3月,恩智浦半导体NXP率先推出了第一款基于ARM Cortex-M0处理器的LPC1100系列MCU。2010年8月,飞思卡尔半导体Freescale(2015年被NXP并购)率先推出了第一款基于ARM Cortex-M4处理器的Kinetis K系列MCU。2012年11月,恩智浦半导体NXP继续率先推出了第一款基于ARM Cortex-M0+处理器的LPC800系列MCU。2014年9月,意法半导体ST率先推出了第一款基于ARM Cortex-M7处理器的STM32 F7系列MCU。
各家供应商采用Cortex-M处理器核加之以自己特别的开发,在市场中提供差异化的MCU产品,有些产品专注最佳能效、最高性能,而有些产品则专门应用于某些细分市场。
至今,主要的MCU厂商中几乎都有使用ARM 的Cortex-M内核的产品线。可以肯定地说,Cortex-M之于32位MCU就如同8051(受到众多供应商支持的工业标准内核)之于8位MCU。未来Cortex-M系列的MCU产品替代传统的8051或其他专用架构是大势所趋。甚至有声音表示:“未来,MCU产品将不再按8位、16位和32位来分,而是会按照M0核、M3核以及M4核等ARM内核的种类来分。”作者不得不替非ARM架构的商业处理器厂商们拊膺长叹:“既生瑜,何生亮啊。”
1.2.3 移动王者——Cortex-A系列在手持设备领域的巨大成功
Cortex-A是一组用于高性能低功耗应用处理器领域的32位和64位RISC处理器系列。32位架构的处理器包括Cortex-A5、Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A12、Cortex-A15、Cortex-A17和Cortex-A32。64位架构的包括 ARM Cortex-A35、ARM Cortex-A53、ARM Cortex-A57、ARM Cortex-A72和 ARM Cortex-A73。Cortex-A、Cortex-M和Cortex-R架构的最大区别是前者包含了存储器管理单元(Memory Management Unit,MMU),因此可以支持操作系统的运行。
ARM在2005年向市场推出Cortex-A8处理器,是第一款支持 ARMv7-A 架构的处理器。在当时的主流工艺下,Cortex-A8处理器的速率可以在600MHz~1GHz的范围调节,能够满足那些需要工作在300mW以下的功耗优化的移动设备的要求,以及满足那些需要2000 Dhrystone MIPS的性能优化的消费类应用的要求。当 Cortex-A8 在2008 年投入批量生产时,高带宽无线连接(3G)已经问世,大屏幕也用于移动设备,Cortex-A8 芯片的推出正好赶上了智能手机大发展的滥觞。
推出Cortex-A8 之后不久,ARM 又推出了首款支持ARMv7-A架构的多核处理器Cortex-A9。Cortex-A9 利用硬件模块来管理CPU集群中1~4个核的高速缓存一致性,加入了一个外部二级高速缓存。在2011年年底和2012年年初,当移动SoC设计人员可以采用多个核之后,性能得到进一步提升。旗舰级高端智能手机迅速切换到4核Cortex-A9。除了开启了多核性能大门之外,与Cortex-A8相比,每个Cortex-A9处理器的单时钟周期指令吞吐量提高了大约25%。这个性能的提升是在保持相似功耗和芯片面积的前提下,通过缩短流水线并乱序执行,以及在流水线早期阶段集成NEON SIMD和浮点功能而实现的。
如果说Cortex-A8牛刀小试让ARM初尝甜头,那么Cortex-A9则催生了智能手机的井喷期,Cortex-A9几乎成了当时智能手机的标配,大量的智能手机采用了该内核,ARM为此挣了个盆满钵盈。自此,ARM便开始了它开挂的“下饺子”模式,以平均每年一款或多款的速度疯狂推出各款不同的Cortex-A处理器,迅速拉开与竞争对手的差距。具体ARM Cortex-A系列各处理器的发布时间和特点,见表1-4。
表1-4 ARM Cortex-A系列各处理器发布时间和特点
ARM推出Cortex-A系列各款处理器的速度之快、之多,显示了其研发机器的超强生产力,由于其推出的处理器型号太多、太快,阿拉伯数字都不够用了,如表1-4所示,其型号的编号规则逐渐令作者都傻傻分不清了。同时,由于其推出的处理器型号太多、太快,乃至于令众多授权ARMv7/8-A架构进行自研处理器的巨头都疲于奔命。在Cortex-A8/A9时代,多家有实力的巨头均选择授权ARMv7/8-A架构进行自研处理器以差异化其产品并降低成本。这些巨头包括高通、苹果、Marvell、博通、三星、TI以及LG等。作者便曾经在其中的一家巨头供职担任CPU高级设计工程师,开发其自研的Cortex-A系列高性能处理器。如前所述,研发一款高性能的应用处理器需要解决挑战极高的技术难题以及投入数年时间,而当ARM以年均一款新品之势席卷市场时,使得自研处理器没有能够来得及推出便已过时。
众巨头们纷纷弃甲丢盔,相继有TI、博通、Marvell和LG等巨头放弃了自研处理器业务。乃至自研处理器做的最为成功的高通(以其Snapdragon系列应用处理器风靡市场)也在其中低端SoC产品中放弃了自研处理器转而采购ARM的Cortex-A系列处理器,仅在高端SoC中保留了自研的处理器。值得一提的是,由于中国的巨大市场与产业支持,在巨头们放弃自研处理器的趋势下,中国的华为与展讯逆势而上,开始授权ARMv8-A架构进行自研处理器的研发,并取得了令人欣喜的成果。
Cortex-A系列的巨大成功彻底地奠定了ARM在移动领域的统治地位。由于Cortex-A系列的先机与成功,ARM架构在移动领域构筑了城宽池阔的软件生态环境。至今,ARM架构已经应用到全球85%的智能移动设备中,其中有超过95%的智能手机都基于ARM的设计,基本上使得其他架构的处理器失去了进入该领域的可能性。ARM携Cortex-A系列移动领域一统江山,就如坦格利安人驾着喷火的巨头征服维斯特洛大陆般如入无人之境。ARM除了一步步提升Cortex架构性能之余,也找到了很多“志同道合”的伙伴,比如高通、谷歌和微软等,并与合作伙伴们形成了强大的生态联盟。携此余威,传统x86架构的PC与服务器领域就成为了ARM的下一步发展目标。有道是“驱巨兽鼎定移动地,Cortex-A剑指服务区”。预知后事如何,且听下节分解。
1.2.4 进击的巨人——ARM进军PC与服务器领域的雄心
PC与服务器市场是一个超千亿规模的大蛋糕,而这个市场长时间由另外一个巨头Intel把持,同为x86阵营的AMD常年屈居老二,分享着有限的蛋糕份额。Intel在此领域的巨大成功,是其丰厚盈利的主要来源。
上一节提到ARM剑指PC与服务器领域,谷歌ChromeBook就是ARM挥师PC市场的先行军,在(海外的)入门级市场受到了广泛好评,ARM处理器可以帮助此类设备变得更轻、更省电。微软对ARM的支持同样给力,2016年12月举行的WinHEC 2016大会上,微软与高通宣布将采用下一代骁龙处理器(基于ARM架构)的移动计算终端上支持Windows 10系统,微软演示了搭载骁龙820处理器的笔记本运行Windows 10,骁龙820在4GB存储器支撑下(性能可以和Intel i3媲美),一台Windows 10企业版系统笔记本能够流畅地运行Edge、外接绘图板、观看高清视频、使用PS定向滤镜等,同时支持多任务后台。
2017年,高通宣布正在对其自研骁龙835进行优化,将这款处理器扩展到运行Windows 10的移动PC当中,而搭载骁龙835的Windows 10移动PC计划在2017年第四季度推出。除此之外,在数据中心领域,高通也与微软达成了合作,未来运行Windows Server的服务器也可以搭载高通10nm Centriq处理器,这也是业内首款10nm服务器处理器。微软还宣布将在未来的Windows 10 RedStone 3当中正式提供ARM设备对完整版Windows 10的兼容支持,这意味着基于ARM处理器的设备可以运行x86程序,跨平台融合正式到来。
至此,我们已经介绍ARM公司及其ARM架构的强大之处,了解了Cortex-M处理器在嵌入式领域内的巨大成功,Cortex-A处理器在移动领域内的王者之位,甚至于在PC与服务器领域内的雄心。
1.2.5 游戏终结者之ARM
至此,我们已经介绍ARM公司及其ARM架构的强大之处,了解了Cortex-M处理器在嵌入式领域内的巨大成功,Cortex-A处理器在移动领域内的王者之位,甚至于在PC与服务器领域内的雄心。
2016年7月,日本软银集团以约243亿英镑(约合320亿美元)和高达43%的溢价收购ARM公司。软银高价收购ARM也是因为ARM正在成为智能硬件和物联网设备的标配。在收购ARM公司时,软银CEO孙正义曾表示:“这是我们有史以来最重要的收购,软银集团正在捕捉物联网带来的每一个机遇,ARM则非常符合软银的这一战略,期待ARM成为软银物联网战略前进的重要支柱。”之后,孙正义更表示:“未来20年内,ARM架构芯片的年出货量将达到1万亿颗,ARM能够立刻收集所有实时数据”。
似乎ARM即将统治这个世界,毫无疑问地成为32位嵌入式处理器领域的下一个8051了。然而就在此时,RISC-V走向了台前。
东边日出西边雨,道是无晴却有晴——RISC-V 登场
RISC-V架构主要由美国加州大学伯克利分校(简称伯克利)的Krste Asanovic教授、Andrew Waterman和Yunsup Lee等开发人员于2010年发明,并且得到了计算机体系结构领域的泰斗David Patterson的大力支持。伯克利的开发人员之所以发明一套新的指令集架构,而不是使用成熟的x86或者ARM架构,是因为这些架构经过多年的发展变得极为复杂和冗繁,并且存在着高昂的专利和架构授权问题。并且修改ARM处理器的RTL代码是不被支持的,而x86处理器的源代码根本不可能获得到。其他的开源架构(譬如SPARC、OpenRISC)均有着或多或少的问题(第2章将详细论述)。有感于计算机体系结构和指令集架构已经过数十年的发展非常成熟,但是像伯克利这样的研究机构竟然“无米下锅”(选择不出合适的指令集架构供其使用)。伯克利的教授与研发人员决定发明一种全新的、简单且开放免费的指令集架构,于是RISC-V架构诞生了。
有关RISC-V的诞生,有兴趣的读者可以自行到网络中查阅文章《伯克利希望将RISC-V开源架构推向主流》。RISC-V(英文读作“risk-five”),是一种全新的指令集架构。“V”包含两层意思,一是这是Berkeley从RISC I开始设计的第五代指令集架构;二是它代表了变化(Va r i a t i o n)和向量(Vectors)。
经过几年的开发,伯克利为RISC-V架构开发出了完整的软件工具链以及若干开源的处理器实例,得到越来越多的人的关注。2016年,RISC-V基金会(Foundation)正式成立开始运作。RISC-V基金会是一个非营利性组织,负责维护标准的RISC-V指令集手册与架构文档,并推动RISC-V架构的发展。
RISC-V架构的目标如下。成为一种完全开放的指令集,可以被任何学术机构或商业组织所自由使用。成为一种真正适合硬件实现且稳定的标准指令集。
RISC-V基金会负责维护标准的RISC-V架构文档和编译器等CPU所需的软件工具链,任何组织和个人可以随时在RISC-V基金会网站上免费下载(无须注册)。RISC-V的推出以及基金会的成立,受到了学术界与工业界的巨大欢迎。著名的科技行业分析公司Linley Group 将RISC-V评为“2016年最佳技术”,如图1-9所示。
图1-9 RISC-V架构标志图
开放而免费的RISC-V架构诞生,不仅对于高校与研究机构是个好消息,为前期资金缺乏的创业公司、成本极其敏感的产品、对现有软件生态依赖不大的领域,都提供了另外一种选择,而且得到了业界主要科技公司的拥戴,包括谷歌、惠普、Oracle和西部数据等硅谷巨头都是RISC-V基金会的创始会员,如图1-10所示。众多的芯片公司已经开始使用(譬如,三星、英伟达等)或者计划使用RISC-V开发其自有的处理器用于其产品。
图1-10 RISC-V基金会创始会员,铂金、金、银级会员图谱
RISC-V基金会组织每年举行两次公开的专题讨论会(Wo r k s h o p),以促进RISC-V阵营的交流与发展,任何组织和个人均可以从RISC-V基金会的网站上下载到每次Workshop上演示的PPT与文档。RISC-V第六次Workshop于2017年5月在中国的上海交通大学举办,如图1-11所示,吸引了大批的中国公司和爱好者参与。
图1-11 上海交通大学举办的RISC-V第六次Workshop
由于许多现在主流的计算机体系结构英文教材(譬如,计算机体系结构量化研究方法、计算机组成与设计等)的作者本身也是RISC-V架构的发起者,因此这些英文教材都相继推出了以RISC-V架构为基础的新版本教材,如图1-12所示。这意味着美国的大多数高校都将开始采用RISC-V作为教学范例,也意味着若干年后的高校毕业生都将对RISC-V架构非常熟知。
但是,一款指令集架构(ISA)最终能否取得成功,很大程度上取决于软件生态环境。罗马不是一天建成的,x86与ARM架构经过多年的经营,构建了城宽池阔的软件生态环境,可以说是兵精粮足,非常强大。因此,作者认为RISC-V架构在短时间内还无法对x86和ARM架构形成撼动。但是随着越来越多的公司和项目开始采用RISC-V架构的处理器,相信RISC-V的软件生态也会逐步壮大起来。
图1-12 经典教材计算机组成与设计最新版本
本节虽然陈述了若干RISC-V蓬勃发展的具体案例,但是由于RISC-V阵营正在快速地向前发展,可能在本书成书时,RISC-V阵营又诞生了更加令人欣喜的案例,请读者自行查阅互联网更新见闻。
RISC-V 和其他开放架构有何不同
如果仅从“免费”或“开放”这两点来评判,RISC-V架构并不是第一个做到免费或开放的处理器架构。
下面将通过论述几个具有代表性的开放架构,来分析RISC-V架构的不同之处以及为什么其他开放架构没能取得足够的成功。
1.4.1 “平民英雄”—OpenRISC
OpenRISC是OpenCores组织提供的基于GPL协议的开放源代码RISC处理器,它具有以下特点。
采用免费开放的32/64位 RISC架构。•用Verilog HDL(硬件描述语言)实现了基于该架构的处理器源代码。具有完整的工具链。
OpenRISC被应用到很多公司的项目中,可以说,OpenRISC是应用非常广泛的一种开源处理器实现。
OpenRISC的不足之处在于其侧重实现一种开源的CPU Core,而非立足于定义一种开放的指令集架构,因此其架构的发展不够完整。指令集的定义也不具备RISC-V架构的优点,更没有上升到成立专门的基金会组织的高度。OpenRISC更多被认为是一个开源的处理器核,而非一种优美的指令集架构。此外,OpenRISC的许可证为GPL,这意味着所有的指令集改动都必须开源(而RISC-V则无此约束)。
1.4.2 “豪门显贵”—SPARC
SPARC架构作为经典的RISC微处理器架构之一,于1985年由Sun公司所设计。SPARC也是SPARC国际公司的注册商标之一,SPARC公司于1989年成立,目的是向外界推广SPARC架构以及为该架构进行兼容性测试。该公司为了推广SPARC的生态系统,将标准开放,并授权予多家生产商使用,包括德州仪器、Cypress半导体和富士通等。由于SPARC架构也对外完全开放,因此也出现了完全开放源码的LEON处理器(见第1.1.4节的介绍)。不仅如此,Sun公司还于1994年推动SPARC v8架构成为IEEE标准(IEEE Standard 1754-1994)。
由于SPARC架构的初衷是面向服务器领域,其最大的特点是拥有一个大型的寄存器窗口,符合SPARC架构的处理器需要实现从72到640个之多的通用寄存器,每个寄存器宽度为64bit,组成一系列的寄存器组,称为寄存器窗口。这种寄存器窗口的架构,由于可以切换不同的寄存器组快速地响应函数调用与返回,因此能够产生非常高的性能,但是这种架构功耗面积代价太大,而并不适用于PC与嵌入式领域处理器。而SPARC架构也不具备模块化的特点,使用户无法裁剪和选择,很难作为一种通用的处理器架构对商用的x86和ARM架构形成替代。设计这种超大服务器CPU芯片又非普通公司与个人所能完成,而有能力设计这种大型CPU的公司也没有必要投入巨大的成本来挑战x86的统治地位。随着Sun公司的衰弱,SPARC架构现在基本上退出了人们的视野。
1.4.3 “名校优生”——RISC-V
多年来在CPU领域已经出现过多个免费或开放的架构,很多高校也在科研项目中推出过多种指令集架构。因此当作者第一次听说RISC-V时,以为又是一个玩具,或纯粹学术性质的科研项目而不以为意。
而作者在通读了RISC-V的架构文档以后,不禁为其先进的设计理念所折服。同时,RISC-V架构的各种优点也得到了众多专业人士的青睐、好评,众多商业公司相继加盟,并且2016年RISC-V基金会的正式启动在业界引起了不小的影响。如此种种,使得RISC-V成为至今为止最具革命性意义的开放处理器架构。
有兴趣的读者可以自行到网络中查阅文章《RISC-V登场,Intel和ARM会怕吗》《直指移动芯片市场,开源的处理器指令集架构发布》和《三星开发RISC-V架构自主CPU内核》。
结语:进入 32 位时代,谁能成为深嵌入式领域的下一个 8051?
本文系统地论述了CPU的基本知识,也简述了ARM的如何强大以及开放RISC-V架构的诞生。一言以蔽之,开放而免费RISC-V架构使得任何公司与个人均可受用,极大地降低了CPU设计的准入门槛。有了RISC-V架构,CPU将不再是“权贵的游戏”,有道是:“旧时王谢堂前燕,飞入寻常百姓家”—每个公司和个人都可以依照RISC-V标准设计自己的处理器。
原本“学霸”ARM Cortex-M将毫无疑问地成为8051的接班人而掌管深嵌入式领域的32位时代。但是不期而至的新生RISC-V却自带光环,让这场游戏出现了一丝变数。
前文中总结了传奇“老炮儿”8051的先进事迹,分析了它的几个成功因素。在此,我们将其归纳为表格,并且将ARM Cortex-M与RISC-V进行横向对比,如表1-5所示。
表1-5 ARM Cortex-M和RISC-V对比8051的成功因素
对于软件的依赖相对比较低。并且,虽然RISC-V资历非常浅,但是其架构在开放至今很短的时间内取得了令人惊异的发展速度,越来越多的公司和项目开始采用RISC-V架构的处理器,相信RISC-V的软件生态也会逐步壮大起来。
从另一方面来说,ARM作为商业架构下的处理器IP,具有如下缺点:不能够进行差异化定制,不具备可扩展性,受私有知识产权保护,指令集架构需要支付商业授权费用等。这些缺点在开放的RISC-V架构中都不存在,可谓是后生可畏。
是商业巨擘ARM将彻底统治这个世界?还是自由战士RISC-V将别开生面?谁又能最终成为32位时代深嵌入式领域内的下一个8051?作者认为,世界需要ARM,同时也需要一个开放而标准的指令集RISC-V,因此,二者都将拥有其不同的生态系统和用户群体,共荣共生互为补充,构建出一幅更加繁华的景象。
《RISC-V架构与嵌入式开发快速入门》
胡振波 著
本书是一本介绍RISC-V架构嵌入式开发的入门书籍,以通俗的语言系统介绍了嵌入式开发的基础知识和RISC-V架构的内容,力求帮助读者快速掌握RISC-V架构的嵌入式开发技术。
本书共分为两部分。第一部分为第1~14章,基本涵盖了使用RISC-V架构进行嵌入式开发所需的所有关键知识。第二部分为附录部分,详细介绍了RISC-V指令集架构,辅以作者加入的背景知识解读和注解,以便于读者理解。
相关问答
(MultiplyandAccumulate)EngineTheC 8051 F120/1/2/3andC 805 ...[最佳回答]1.4.16x16MAC(MultiplyandAccumulate)Engine16×16的Mac(乘以和积累)发动机TheC8051F120/1/2/3andC80...
...ntheResetsignalofPLCentersthe 8051 ,theOuter_Interru_作业帮[最佳回答]模式,其最大切削力可以保存在FIFO的(咯[22]);如果plc_cyc=0它指的是机器,在手工模式,最大切削力数据将被丢弃.此外,当复位信号控制器进入8051...
基于plc的混凝土搅拌站控制系统的相关英文资料?1.ConcreteBatchingPlant--ClassificationGB/T10171-1988混凝土搅拌站(楼)分类2.ConcreteBatchingPlant--Specif...
求C 8051 F300内部温度传感器的驱动程序,确定可用的给100财富...[最佳回答]结果出来了,具体结果用来干什么你自己看着办。//系统时钟频率为24.5MHz的内部振荡器。//采用片内基准电压VREF=3.0V,向AD0BUSY写1启动转...//系...
英语翻译翻译:"请输入一个数字,我会告诉你,这是奇数还是偶数"...[回答]Pleasekeyinanumber,I'lltellyouwhetherit'saoddnumberoraevennumber.输入的话,个人认为是k...
小辣椒手机售后服务部在哪里呢?-ZOL问答alicedandan亲你是软件问题要收费的如果你是硬件问题也要收费的有用(0)回复qwe601586你好,中兴N1D是N1的升级版。中兴N1D重新做了更加优秀的设计,整个...
台式电脑每次开机都要按f9怎么处理-ZOL问答4、重新启动系统,进入BIOS设置中,发现软驱设置为1.44M了,但实际上机箱内并无软驱,将此项设置为NONE后,故障排除。曾经有很多人问过这样的问题,下面把此类问题做...
英语翻译各位顾客及服务员请注意!酒店内突发紧急情况,请所有...[回答]Dearcustomsandattendantattentionplease!Hotelunexpectedemergency,pleaseallstaff,Pleaseallp...
【初二英语作文Helpingothersmakesmehappy帮助别人使我快乐...[回答]Afterclass,thestudentstoplayontheground,theplaygroundislively,skip,someclassmateshavepl...
盆友们,有没有人能告诉我:郑州商业级光电收发模块封装,光...[回答]它结合一个高性能2.4GHzDSSS(直接序列扩频)射频收发器核心和一颗工业级小巧高效的8051控制器。CC2430的设计结合了8Kbyte的RAM及强大的外围模块,并...