- RISC-V处理器与片上系统设计:基于FPGA与云平台的实验教程
- 陈宏铭 程玉华编著
- 5907字
- 2021-02-26 16:39:15
1.3 RISC-Ⅴ的生态系统
处理器架构的影响力主要是依赖一整套的生态系统,比如,基于x86的Windows操作系统或是基于ARM的Android操作系统。RISC-Ⅴ现在还需要增强生态系统,特别是物联网碎片化的性质,没有一个统一的软件栈生态。RISC-Ⅴ国际协会对此并没有做任何定义,生态系统的搭建由使用者自行发挥。生态系统并非一蹴而就,唯有基于RISC-Ⅴ的微控制器大规模量产,让一般软硬件开发者真正随手可得,相应的软件生态才能建立。用国际协会的方式来运作形成标准是否合适呢?RISC-Ⅴ国际协会全职员工只有3人,工作内容如图1-8所示,他们需要维护指令集的标准、建立黄金参考模型(Golden Model)及维护合规性以避免碎片化的问题。
RISC-Ⅴ的指令集架构是整个生态系统的基础,由RISC-Ⅴ国际协会构建。在此基础上,RISC-Ⅴ国际协会还需要支撑两大社区:一个是RISC-Ⅴ处理器内核与SoC系统的硬件社区,有开源RTL级源码供大家下载,商用授权给芯片设计公司使用,公司内部自主研发不对外开放IP或源代码等。另一个是与用户应用有关的软件社区,开源的软件有开源GCC和LLVM软件,也有公司将软件开源出来,例如,国内的初创公司RT-Thread也加入了开源的行列。商用的软件供应商有编译器大厂IAR等公司,过去这些公司的软件都是支持ARM或MIPS的IP或芯片,现在也参与到兼容RISC-Ⅴ指令集架构的设计中。
目前RISC-Ⅴ指令集主要包括四个可以在RISC-Ⅴ官网下载的文件。指令集分为非特权指令集和特权架构,非特权指令集几乎包括所有指令的定义,除了基本的指令集,还有扩展指令集。RISC-Ⅴ是在标准指令集之上做扩展的指令集架构,基本指令集包括定点指令、存储一致性(RVWMO)、乘法、原子、单精度/双精度/128位浮点等。而扩展指令集则包括32E、128位指令、计数器、LBJTPV扩展等。特权架构说明的是RISC-Ⅴ特权架构的定义,特权架构有用户模式、监督模式和机器模式三种特权级别,另有一个调试接口处于可用的状态和一个刚起步的Trace。
图1-8 RISC-Ⅴ国际协会工作内容
SiFive联合创始人和首席构架师Krste Asanović提到:“RISC-Ⅴ是一个高质量的、无使用许可证的、无版权费的RISC指令集,它最初是来自伯克利的规范,由无营利组织RISC-Ⅴ基金会做标准维护,适合各种类型的计算机系统。从微处理器到超级计算机系统,众多的专有和开源内核可被工业界和学术界快速体验采用,而且还有不断增长的共享软件生态系统支持。”
1.3.1 RISC-Ⅴ的开发板和生态系统
RISC-Ⅴ出自学校,很多研究机构也加入,发展势头越来越猛,在产业界的被接受程度也越来越高。SiFive有两类产品,一类是处理器内核IP,另一类是Freedom SoC平台。在2016年11月,SiFive推出为微控制器、嵌入式产品、物联网和可穿戴等应用而设计的Freedom Everywhere FE310 SoC及HiFive1低功耗开发板(见图1-9);适合机器学习、存储和网络应用的高性能Freedom Unleashed平台;还有人工智能的Freedom Revolution平台作为软件和应用开发使用,产品全面覆盖大中小规模客户。
图1-9 HiFive1低功耗开发板
HiFive1低功耗开发板是基于集成32位E31处理器内核的FE310微控制器,FE310运行速度可达320MHz以上,是市场上速度最快的微控制器之一。FE310的架构设计如图1-10所示,内核是单发射、顺序执行处理器E31,支持RV32IMAC指令集,具有16K的指令缓存,16K的数据SRAM。FE310有多个外设,通过TileLink互连总线将多个外设连接到处理器。主要外设包括以下几类。
●始终上电域(Always-on Domain,AON):始终上电域的意思就是不受处理器核心电源管理的影响,包括实时计数器、看门狗、复位与电源管理等子模块。
●通用输入输出端口(General Purpose Input/Output,GPIO)控制器:通用输入输出端口的每一个引脚都可以设置成输入或者输出,并可以设置是否能够引发中断。FE310的GPIO可以复用为UART、I2C、SPI、PWM等模块。
●平台级中断控制器(Platform-Level Interrupt Control,PLIC):平台级中断控制器用于接受外部的中断信号,然后按照优先级送给处理器,支持52个外部中断源,7个中断优先级。
●调试单元(Debug Unit):调试单元支持外部调试器通过标准JTAG接口进行调试,支持2个硬件断点、观察点。
●QSPI闪存控制器(Quad-SPI):QSPI闪存控制器用于访问SPI闪存,可以支持eXecute-In-Place模式。
FE310作为全球第一款开源的商用RISC-Ⅴ SoC平台,SoC基于RISC-Ⅴ开放式架构,允许开发人员根据其特定的设计需求创建定制的解决方案。Freedom平台使任何公司、发明者或制造商能够利用定制芯片的优势,将专业等级的处理器IP纳入其产品。HiFive1低功耗开发套件可接受Arduino式盾板,从而大幅提升了其对嵌入式设计快速原型开发的可行性。
图1-10 FE310平台的设计框图
开源处理器项目的重要性是毋庸置疑的,SiFive公司已将FE310 RTL原始代码贡献给开源社区,这样可以与开源社区相结合。芯片内部功能的规格定义是可见的,感兴趣的人可以完全看到芯片内部的架构,了解硬件的工作原理与RTL代码的在线状态,让企业或者工程师在FE310的基础上开发自己的定制芯片。
商用芯片源代码的免费开源特性在芯片设计行业中非常罕见,这样做大幅降低了研发定制原型芯片的门槛,使大家可以专注于增量创新,不用从头探索如何构建一颗芯片,加快了迭代周期并重新诠释了芯片定制化产业。SiFive公司实施此项措施是希望鼓励小型系统公司或者芯片设计人员能够在FE310芯片的基础之上定制自己的SoC设计方案,借助RISC-Ⅴ的软件生态在没有芯片的情况下就可以在RISC-Ⅴ上撰写运行自己开发的软件,或者基于RISC-Ⅴ硬件的开源在FPGA平台上开发,极大降低芯片开发的门槛。读者可以通过网址https://github.com/sifive/freedom下载FE310微控制器芯片的RTL代码文件。
图1-11所示的HiFive1 Rev B开发板是HiFive1开发板的升级版本,这个开发板搭载的SoC从第一代的FE310-G000升级到FE310-G002,HiFive1 Rev B开发板与HiFive1开发板最大的区别在于前者增加了一个ESP32模块。ESP32模块可以说是受全球创客、DIY爱好者欢迎的无线通信模块之一,且价格比较实惠。ESP32模块作为FE310-G002处理器的无线调制解调器,具备Wi-Fi和蓝牙的无线连接功能。
升级的FE310-G002增加了对应最新RISC-Ⅴ调试规范0.13版,内置硬件I2C,两个UART的支持,以及在低功耗睡眠模式下对核心电源轨进行电源门控。与原版FE310一样,FE310-G002采用SiFive的高性能E31内核处理器,支持32位RV32IMAC指令集,维持16KB 指令缓存与16KB数据SRAM,寄存器和硬件乘法/除法器。为了连接更多的第三方传感器,FE310芯片第二代版本具有更多外围设备,内置硬件I2C外设和额外的两个UART。此外,USB调试接口也已升级为SEGGER J-Link,支持拖放代码下载。FE310-G002有一个由3.3V供电的始终上电域。由始终上电域控制,1.8V处理器内核电源轨可以在低功耗睡眠模式下关闭,并在检测到唤醒事件时打开。
图1-11 HiFive1 Rev B开发板
SiFive的嵌入式开发板驱动许多RTOS实时操作系统移植,图1-12所示是SiFive公司最近宣布的SiFive Learn Inventor开发系统,承载了一个新版本的FE310-G003芯片,还整合一个带有Wi-Fi和蓝牙功能的ESP32模块。这是一个很好的物联网开发平台,开发者可以用它来和外界交流。利用开源FE310所设计的三代微控制器电性比较见表1-2。SiFive Learn Inventor开发系统的数据紧密集成内存(DTIM)容量比之前的版本大,当处理器调用大量数据时可以直接从DTIM中调用,从而加快读取速度,方便软件工程师开发应用程序。如果要为SiFive Learn Inventor开发板获取免费操作系统,只需到Amazon免费操作系统控制台下载用于SiFive Learn Inventor开发板的免费操作系统即可。
图1-12 SiFive Learn Inventor开发系统
表1-2 利用开源FE310所设计的三代微控制器电性比较
1.3.2 部分RISC-Ⅴ社区生态的支持厂商
经过了50年的发展,IBM 360是现存最老的指令集架构,凭借良好的软件生态控制银行市场,也说明唯有良好的生态才能让指令集持之以恒。在短短几年时间,RISC-Ⅴ社区的演进有很大的变化。图1-13列举了部分RISC-Ⅴ社区生态的支持厂商,SiFive在里面起了很大的作用,包括SiFive Freedom SDK跟SiFive Freedom Studio开发环境,让很多相关的企业有了前进的方向与依据,不需要从头摸索。
图1-13 部分RISC-Ⅴ社区生态的支持厂商
如图1-14所示,SiFive提供的调试软件栈被称为Freedom Studio,这一个完全集成的开发环境,可以在SiFive RISC-Ⅴ平台和内核IP上进行裸机(Bare Metal)嵌入式开发和调试。它基于Eclipse CDT并包含许多SiFive扩展,可为捆绑的命令行工具提供用户友好的界面。SiFive公司所推出的产品Freedom因为崇尚自由的精神,开源了许多内部开发的软硬件让爱好者能公开下载。UltraSoC、Lauterbach、Imperas、SEGGER及IAR都是在嵌入式领域知名的工具链提供商。此外还有丰富的嵌入式操作系统,如FreeRTOS、Zephyr OS,还有国内初创企业RT-Thread。
出自Linux基金会的Zephyr实时操作系统是一个可以用于资源受限和嵌入式系统的小型内核。应用场景从简单的嵌入式环境传感器、可穿戴设备到复杂的嵌入式控制器、智能手表和无线物联网应用程序。Zephyr在RISC-Ⅴ技术的演进过程中做了很多早期的工作,程序移植且运行了将近两年,Zephyr支持的平台包括SiFive HiFive1。Zephyr实时操作系统已经在包括RISC-Ⅴ的8个指令集体系架构上,有160多个受支持的开发板配置。读者可以在网上找到Zephyr SDK,它还附带了基于RISC-Ⅴ GCC的工具链。图1-15所示是市面上的一个基于RISC-Ⅴ的扬声器徽章产品,这也是第一个实际的RISC-Ⅴ上量产品。
图1-14 Freedom Studio的调试界面
图1-15 市面上第一个基于RISC-Ⅴ的扬声器徽章产品
流行的FreeRTOS内核是一个基于微控制器的物联网操作系统,使边缘设备能够安全地连接到亚马逊公司云计算服务平台(Amazon Web Services,AWS),同时使它们易于管理、部署和更新。FreeRTOS由MIT开源许可证提供,可以在多种不同的指令集架构上运行。FreeRTOS已经拥有一系列受支持的微控制器,这些微控制器来自SiFive、TI、NXP、STMicro及Microchip等知名公司。从FreeRTOS 10.2.1版本开始,由官方加入RISC-Ⅴ demo,现在已经可以在FreeRTOS的主要目录树里找得到。FreeRTOS进一步增加一系列面向物联网的库,提供额外的联网和安全性功能,包括对低功耗蓝牙、无线更新和Wi-Fi的支持。最近有很多产品用户宣布使用了FreeRTOS。内核支持RISC-Ⅴ,包括RV32I和RV64I两种版本,提供用户构建具成本效益的智能型设备。
当我们拿到一块开发板,上面搭载的通常都是芯片原厂开发用于嵌入式系统的引导加载程序(U-Boot),一般用于存储管理、CPU和进程管理、文件系统、设备管理和驱动、网络通信,以及系统的引导与初始化、系统调用等的Linux内核(kernel),我们称之为供应商内核。供应商内核一般是基于Linux官方的某个分支进行修改得到的,芯片原厂为了系统的稳定和易于维护,会在这个特定的版本上做长期开发,不会轻易升级内核版本。而Linux官方内核却会以固定的节奏向前演进,我们称这种目前最新的稳定内核版本为upstream Linux内核。至于RISC-Ⅴ Linux内核移植的情况,在一年多前发布了移植到RISC-Ⅴ的upstream Linux内核,这是一个非常重要的时刻,因为这意味着Linux终于真正开始认真对待基于RISC-Ⅴ指令集的软件开发了。
很多操作系统都是在SiFive公司提供的开源硬件上运行的,如图1-16所示是SiFive公司发布的高性能HiFive Unleashed开发板,这是一个面向RISC-Ⅴ开源社区提供的开发板,以帮助推进RISC-Ⅴ软件生态系统。板上功能强大的Freedom U540是世界上第一款支持Linux的多核RISC-Ⅴ处理器,这是一个1.5千兆赫的四核处理器。它是第一个带有RISC-Ⅴ内核芯片的开发板,能运行复杂的Linux操作系统,如Debian Linux,Fedora Linux。许多方案商已经移植了完整的Linux应用程序,非常适合通信、工业、国防、医疗和航空电子市场中的各种应用,其中Fedora是最早出现的RISC-Ⅴ发行版之一,开创了RISC-Ⅴ软件开发的全新时代。
图1-16 高性能HiFive Unleashed开发板
RISC-Ⅴ开源硬件让我们可以观察软件开发的过程,SiFive公司向开源生态系统提供了FPGA开发套件,读者可能在GitHub上都见过或下载过。如今,Debian和Fedora这些操作系统软件包都可以基于SiFive公司的开源硬件设计在FPGA上运行。在2018年举办的FOSDEM大会上展示了SiFive Freedom U540 4核RV64GC SoC和相应的HiFive Unleashed开发板,Debian操作系统也可以在上面正常运行。由此可知,不仅是RISC-Ⅴ处理器IP,基于RISC-Ⅴ的软件生态也在不断完善。RISC-Ⅴ软件技术的快速发展是因为有一大群人在贡献他们的智慧,这也是RISC-Ⅴ发展的真正原因。
1.3.3 芯片设计业界的RISC-Ⅴ产品进展
RISC-Ⅴ是第一个被设计成可以根据具体应用来选择适合的指令集架构。基于RISC-Ⅴ指令集架构可以设计通用微控制器、物联网芯片、家用电器控制器、网络通信芯片和高性能服务器芯片等。图1-17所示为Semico Research最新市场调研报告给出的RISC-Ⅴ内核的增长趋势及主要应用市场预测,预计到2025年,采用RISC-Ⅴ架构的芯片数量将达到624亿个,2018年至2025年的年复合增长率(CAGR)高达146.2%,主要应用市场包括计算机、消费电子、通信、交通和工业,其中物联网应用市场占比最高,约为167亿个内核。
图1-17 RISC-Ⅴ内核的增长趋势及主要应用市场(来源:Semico Research)
作为一个开源的指令集架构,RISC-Ⅴ帮助芯片设计公司有机会避开Intel x86知识产权的壁垒和ARM高昂的芯片授权费用,使全球芯片行业企业对RISC-Ⅴ报以极大的关注。开源RISC-Ⅴ指令集代表的开源硬件产业生态,成为打破当前处理器垄断局面的一股潜在的重要力量,变成人们在2020年关注和讨论的焦点。
在智能移动时代,AloT是RISC-Ⅴ一个很好的切入点,未来市场将会变得非常庞大,基于RISC-Ⅴ的微处理器内核加上AI运算协处理器IP,会在AloT各个细分领域觅得良机。以智能硬件产品为例,其对CPU应用生态和性能的依赖低于个人电脑、手机等产品,但它对CPU的功耗、体积和成本有着极高的敏感度,部分RISC-Ⅴ架构嵌入式CPU具备比同类ARM、x86架构CPU更低的功耗、更小的面积及更低的价格。
关于业界RISC-Ⅴ芯片产品进展情况,西部数据和SiFive合作将把高达每年20亿颗的芯片的潜能转向基于RISC-Ⅴ,逐步完成全线产品向RISC-Ⅴ定制架构的转变,西部数据也推出开源RISC-Ⅴ核SweRV。Microsemi推出基于SiFive核的PolarFire FPGA产品及PolarFire SoC FPGA开发板产品,提供了基于开放式RISC-Ⅴ架构的软IP核。FPGA相关的软件工具链可以使用RISC-Ⅴ处理器内核移植到所有芯片。Microsemi的PolarFire FPGA非常适合于低功耗、低成本的应用,与RISC-Ⅴ架构相结合可被应用于嵌入式和边缘计算,实现实时快速目标检测。
FADU宣布推出基于SiFive 64位E51多核RISC-Ⅴ核心IP的FADU Bravo系列企业级SSD控制器芯片解决方案和系统,推出全球首款基于RISC-Ⅴ的SSD控制器,该控制器可提供市场上最高的IOPS/Watt指标。华米公司推出基于SiFive内核的边缘人工智能计算芯片——黄山一号,其手表和手环已经大批量出货。华米的黄山一号芯片,数据可在设备内运行,避免了云端计算带来的通信延迟。芯片采用的AlwaysOn模块能够自动把传感器数据搬运到SRAM中,并通过神经网络系统,分别进行运算整合,及时反馈运算结果,让功耗大幅降低。可以让智能设备有更长的待机时间,更快的处理速度,更长的使用寿命。
珠海普林芯驰科技所开发的SPV20XX系列智能语音识别芯片,以出色的语音识别能力、前端降噪能力、丰富的系统外设、高性价比为特色,在语音控制领域提供了极具竞争力的芯片方案,方便客户实现单芯片的语音加上触控应用的场景。SPV20XX系列采用RISC-Ⅴ CPU+DSP+NPU三核架构,内置基于人工智能语音识别算法的NPU硬件加速核,通过神经网络对音频信号进行训练学习,提高语音信号的识别能力。RISC-Ⅴ CPU与DSP的代码存储于片上闪存,通过XIP方式执行及四路缓存机制保证程序的高效执行。芯片内置两路模拟麦克风CODEC,扩展I2S/DMIC接受最多支持四路音频信号输入,一路模拟AEC专用输入,用于远场拾音的麦克风阵列方案。内部集成PMU,优化待机功耗,通过语音VAD唤醒。
南京中科微电子开发的CSM32RV20是一款采用RISC-Ⅴ处理器内核的超低功耗微控制器芯片,内核支持RV32IMC指令集。芯片内置多种存储器,如4KB的SRAM、40KB的闪存、512B的EEPROM等,还集成了SPI、I2C、UART、TIMER与多通道ADC等丰富的外设。芯片支持C-JTAG、串口、无线等程序下载方式,可以快速方便地下载应用程序,其中二线CJTAG调试接口方便用户在线调试程序。芯片是专门为低功耗物联网应用而设计的,支持多种低功耗模式。在只剩看门狗和RTC工作的条件下,最低待机电流小于1μA,可保证电池供电的物联网设备长期可靠工作。