
#百人创作先锋团#RISC-V崛起!三大指令集在计算芯片的应用
指令集架构(Instruction Set Architecture,缩写为ISA),是一组指令的集合,指令是指处理器进行操作的最小单元(譬如加减乘除操作或者读/写存储器数据)。
指令集架构,有时简称为“架构”或者称为“处理器架构”有了指令集架构,便可以使用不同的处理器硬件实现方案来设计不同性能的处理器。处理器的具体硬件实现方案称为微架构(Micro architecture)。虽然不同的微架构实现可能造成性能与成本的差异,但是,软件无须做任何修改便可以完全运行在任何一款遵循同一指令集架构实现的处理器上。因此,指令集架构可以理解为一个抽象层。该抽象层构成处理器底层硬件与运行于其上的软件之间的桥梁与接口,也是现在计算机处理器中重要的一个抽象层。
指令集架构示意图
为了让软件程序员能够编写底层的软件,指令集架构不仅仅是一组指令的集合,它还要定义任何软件程序员需要了解的硬件信息,包括支持的数据类型、存储器(Memory)、寄存器状态、寻址模式和存储器模型等。指令集架构才是区分不同CPU的主要标准,这也是Intel和AMD公司多年来分别推出了几十款不同的CPU芯片产品的原因。虽然来自于两个不同的公司,但是它们仍被统称为x86架构CPU。
指令集架构主要分为复杂指令集(Complex Instruction Set Computer),精简指令集(Reduced Instruction Set Computer ,RISC),两者的主要区别如下。
CISC不仅包含了处理器常用的指令,还包含了许多不常用的特殊指令。其指令数目比较多,所以称为复杂指令集。
RISC只包含处理器常用的指令,而对于不常用的操作,则通过执行多条常用指令的方式来达到同样的效果。由于其指令数目比较精简,所以称为精简指令集。
在CPU诞生的早期,CISC曾经是主流,因为其可以使用较少的指令完成更多的操作。但是随着指令集的发展,越来越多的特殊指令被添加到CISC指令集中,CISC的诸多缺点开始显现出来。譬如:典型程序的运算过程中所使用到的80%指令,只占所有指令类型的20%,也就是说,CISC指令集定义的指令,只有20%被经常使用到,而有80%则很少被用到。那些很少被用到的特殊指令尤其让CPU设计变得极为复杂,大大增加了硬件设计的时间成本与面积开销。基于以上原因,自从RISC诞生之后,基本上所有现代指令集架构都选择使用RISC架构。
除了CISC与RISC之分,处理器指令集架构的位数也是一个重要的概念。通俗来讲,处理器架构的位数是指通用寄存器的宽度,其决定了寻址范围的大小、数据运算能力的强弱。
譬如32位架构的处理器,其通用寄存器的宽度为32位,能够寻址的范围为232,即4GB的寻址空间,运算指令可以操作的操作数为32位。通用寄存器的宽度,即指令集架构的位数越多越好,因为这样可以带来更大的寻址范围和更强的运算能力。指令编码的长度越短越好,因为这样可以更加节省代码的存储空间。常见的架构位数分为8位、16位、32位和64位。目前主流的移动手持、个人计算机和服务器领域,均使用64位架构。
主流CPU指令集划分及设计机构
汽车系统级芯片SoC的核心构成包括CPU、GPU、AI加速器和片上总线及互联。CPU目前主要是ARM架构,X86架构和RISC-V架构。目前ARM架构占据绝大多数市场。
1、x86
x86是由Intel公司推出的一种复杂指令集(CISC),于1978年推出的Intel 8086处理器中首度出现。8086在3年后为IBM所选用,之后Intel与微软公司结成了所谓的Windows-Intel(Wintel)商业联盟,垄断了个人计算机(Personal Computer ,PC)软硬件平台至今几十年而获得了丰厚的利润。x86架构也因此几乎成为了个人计算机的标准处理器架构。
除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公司击败。
特斯拉在2018年推出MCU2.0,使用INTEL ATOM A3950,A3950处理器为四核心,1.6GHz频率,是英特尔的车载高端处理器。Atom 3900系列有多款处理器,从高到低包括Intel Atom x7-A3960、x7-A3950、x7-A3940、x7-A3930。这颗处理器支持所有主要的汽车操作系统,包括Android和Linux。2021年推出MCU3.0,其采用了AMD Ryzen + Navi 23 GPU,Ryzen V180F嵌入式芯片,基于Zen+架构,4核8线程,2MB的L2缓存,4MB的L3缓存。
2、ARM
ARM英文全称Advanced RISC Machines,总部位于英国剑桥。该公司成立于1990年11月,是苹果电脑,Acorn电脑集团和VLSI Technology的合资公司。ARM不制造芯片,也不销售实际的芯片给终端客户,而是通过授权其RISC ISA和处理器设计方案,由合作伙伴生产出各具特色的芯片。ARM公司利用架构授权的模式与伙伴达成双赢,迅速成了全球性的精简指令集微处理器标准的缔造者。
ARM为各种应用场景提供多样化的家族化处理器IP解决方案,覆盖高性能计算、高性能实时、低功耗嵌入式、云端计算、硬件安全和高性能机器学习等场景。ARM的处理器IP授权模式为合作伙伴提供可靠处理器的同时降低芯片开发成本,推动应用的创新。而广泛的合作伙伴丰富了ARM的生态,奠定ARM在智能时代中智能手机、物联网等领域处理器主导地位。
ARM Cortex系列处理器内核是ARM家族中占据处理器IP市场的核心系列。自2004年推出ARMv7内核架构时,便摒弃了以往“ARM+数字”这种处理器命名方法,启用Cortex来命名,并将Cortex系列细分为三大类。
其中,Cortex-A系列面向高性能计算需求、运行丰富操作系统和程序任务的应用领域。例如智能手机、平板电脑、机顶盒、数字电视、路由器和监控SoC芯片等。
Cortex-A目前有A7x系列为代表的性能大核产品线和A5x系列为代表低功耗小核产品线。现代多核SoC为了兼顾性能峰值表现和低功耗,经常同时集成一定数量大核和小核。其中大核运行短时间的高性能需求任务;小核运行低性能需求的任务或者在待机状态支持背景任务运行。目前,除了苹果自研处理器内核以外,以高通、海思、联发科为首的安卓智能机SoC芯片设计企业都采用Cortex-A7x和A5x搭配作为内核集合(cluster)配置。其中,高通和华为会在架构上做不同程度的优化。
相比Cortex-A处理器内核,Cortex-M处理器内核被设计成面积更小,能效比更高。通常这些处理器的流水线很短,设计简单,最高时钟频率很低,功耗表现优异。Cortex-M系列在目前智能互联时代应用前景非常广阔,覆盖智能测量、人机接口设备、汽车和工业控制系统、大型家用电器、消费性产品和医疗器械等应用需求,Cortex-M在目前全球32位MCU市场占据主导地位。
Cortex-R处理器是面向实时应用的高性能处理器系列,运行在比较高的时钟频率,其响应延迟非常低。主要应用于硬盘控制器,汽车传动系统和无线通讯的基带控制等领域。
2020年推出的Cortex X系列是目前ARM移动端定位最高的产品线,开发中在PPAC(性能、功耗、面积、成本)的权衡中,给了性能非常高的比重,代表着ARM公版的最强性能。Cortex X系列并不是一个新产品线,而是从Cortex A系列分化出来的。
3、RISC-V
RISC-V 架构主要由美国加州大学伯克利分校(简称伯克利) 的Krste Asanovic 教授、Andrew Waterman 和Yunsup Lee 等开发人员于2010 年发明,并且得到了计算机体系结构领域的泰斗David Patterson 的大力支持。伯克利的开发人员之所以发明一套新的指令集架构,而不是使用成熟的x86 或者ARM 架构, 是因为这些架构经过多年的发展变得极为复杂和冗繁, 并且存在着高昂的专利和架构授权问题。并且修改ARM 处理器的RTL 代码是不被支持的,而x86 处理器的源代码根本不可能获得到。其他的开源架构(譬如SPARC 、Open RISC)均有着或多或少的问题。有感于计算机体系结构和指令集架构己经过数十年的发展非常成熟,但是像伯克利这样的研究机构竟然“无米下锅”(选择不出合适的指令集架构供其使用〉。伯克利的教授与研发人员决定发明一种全新的、简单且开放免费的指令集架构,于是RISC-V 架构诞生了。
RISC-VC英文读作“risk-five”,是一种全新的指令集架构。“V”包含两层意思,一是这是Berkeley从RISCI开始设计的第五代指令集架构:二是它代表了变化(Variation)和向量(Vectors)。
经过几年的开发,伯克利为RISC-V架构开发除了完整的软件工具链以及若干开源的处理器实例,得到越来越多的人的关注。2016年,RISC-V基金会(Foundation)正式成立开始运作。RISC-V基金会是一个非营利性的组织,负责维护标准的RISC-V指令集手册与架构文挡,并推动RISC-V架构的发展。
RISC-V 架构的目标如下:
▶成为一种完全开放的指令集,可以被任何学术机构或商业组织所自由使用。
▶成为一种真正适合硬件实现且稳定的标准指令集。
RISC-V基金会负责维护标准的RISC-V架构文档和编译器等CPU所需的软件工具链,任何组织和个人可以随时在RISC-V基金会网站上免费下载。
RISC-V架构相比其他成熟的商业架构,最大的不同在于它是一个模块化的架构。因此RISC-V架构不仅短小精悍,而且其不同的部分还能以模块化的方式组织在一起,从而试图通过一套统一的架构满足各种不同的应用。
这种模块化是x86与ARM架构所不具备的。以ARM的架构为例,ARM的架构分为A、R和M,共3个系列,分别针对应用操作系统(Application)、实时(Real-Time)和嵌入式(Embedded)3个领域,彼此之间并不兼容。但是模块化的RISC-V架构能够使得用户灵活地选择不同的模块进行组合,以满足不同的应用场景,可以说是“老少咸宜”。例如针对小面积、低功耗的嵌入式场景,用户可以选择RV32IC组合的指令集,仅使用机器模式(Machine Mode):而针对高性能应用操作系统场景,则可以选择例如RV32IMFDC的指令集,使用机器模式(Machine Mode)与用户模式(User Mode)两种模式。
ARM指令集架构作为目前最成功RISC架构,主导了智能手机和物联网芯片处理器市场。根据英伟达公告,基于ARM架构的芯片已累计出货1800亿颗。ARM架构处理器在智能手机芯片、车载信息芯片、可穿戴设备、物联网微控制器等领域占到90%以上市场份额。90年代,MIPS和Alpha作为知名RISC在与X86竞争计算机市场中失败,又在错过智能终端高速发展的机遇中走向衰弱。2010年发布的RISC-V作为从发明伊始即以开源为最大特色的RISCISA受到全球学界、产业界的高度关注。全球顶级学府、科研机构、芯片巨头纷纷参与,各国政府出台政策支持RISC-V的发展和商业化。RISC-V有望成为X86和ARM之后ISA第三极。
RISC-V正被用于一系列汽车系统:从ASIL-D安全等级控制器和安全协处理器,人工智能加速器,基于氮化镓功率半导体的先进电动汽车电池充电器控制器,甚至用于轻型电动汽车的高压单片电机驱动控制器。
2020年4月,半导体解决方案的主要供应商瑞萨电子公司和SiFive达成合作,共同开发面向汽车应用的下一代高端RISC-V解决方案。
随之,在2020年末,瑞萨借助日本半导体公司NSITEXE推出了集成RISC-V协处理器的汽车MCURH850/U2B。主要用于混合动力ICE和xEV牵引逆变器、高端区域控制、连接网关和车辆运动等相关应用。
英特尔在CES 2022上推出了专为自动驾驶打造的EyeQ Ultra系统集成芯片,Mobileye EyeQ Ultra不包含任何x86内核,而是具有12个RISC-V内核、Arm GPU和DSP。
业界对于RISC-V进军汽车产业也表达出了相当的信心,RISC-V最重要的一件事是它的适应性非常强。可以使用任何算法并加以改进,使其成为定制的解决方案。自动驾驶的软件生态刚刚起步,还未形成桌面Wintel生态、服务器X86/Linux生态、手机/OS/Android/ARM这样的生态壁垒。这也给RISC-V架构提供了切入自动驾驶的窗口期。
文章转载自公众号:智车Robot
