Page 338 - 《软件学报》2021年第12期
P. 338
4002 Journal of Software 软件学报 Vol.32, No.12, December 2021
3 RISC-V 硬件平台
RISC-V 依托的硬件平台可以含有如下组件.
(1) 带有其他非兼容 RISC-V 核心(如,IP Core)的一个或多个兼容 RISC-V 的处理核心.
(2) 固定功能加速器——这里加速器是指一种不可编程的固定功能单元,或者专用于特定任务的核心.
(3) 各种物理内存结构.
(4) I/O 设备.
(5) 组件通信与交互结构.
从系统的角度看,这些硬件平台组件可以有多种组织形式,从单核心的微控制器到包含数千个节点的集群
(每个节点都是一个共享内存的多核心服务器);甚至可以在小型片上系统(system-on-a-chip,简称 SoC)中组织成
多层多处理器结构,来协助模块化开发或者提供子系统间的安全隔离.
RISC-V 处理器是 RISC-V 硬件平台的主要研究对象,它可以提供相对全面的组件功能和真实的 RISC-V 执
行环境.此外,RISC-V 模拟器能够在软件平台上模拟硬件执行环境,因此虽然自身属于上层 RISC-V 体系,但在研
究中也应被视为 RISC-V 硬件平台的范围.本节将对 RISC-V 处理器和模拟器方面的主要研究成果进行介绍,并
总结其特征和适用性.
3.1 对RISC-V处理器的研究
处理器的设计需要考虑如下问题.
(1) 所支持的指令集.这代表了该处理器能够完成的功能范围,并包含了对于指令执行通路的需求.
(2) 组成指令执行通路的组件.包括算术逻辑单元(arithmetic and logic unit,简称 ALU)、程序计数器
(program counter,简称 PC)、寄存器组、缓存和存储单元等.
(3) 指令的处理方式.包括控制信号、时钟周期、指令流水线等,以及由此衍生出的任务调度、中断/陷入/
异常问题的处理、数据同步等问题.
(4) 对于多核心处理器,还应考虑核心结构(同构或异构)、核间通信等方面的设计.
根据应用场景的不同,RISC-V 处理器可以划分为通用处理器、嵌入式处理器、教学研究用处理器.通用处
理器不针对特定应用场景,因此将支持最全的 RISC-V 指令集和最多的功能,如 SiFive 公司在 2016 年推出的 64
位单发射五级流水线顺序处理器 Rocket [25] .嵌入式处理器特别考虑了资源受限的嵌入式环境,往往需要支持 E
扩展或 C 扩展以优化尺寸,权衡面积和性能需求,如 Zaruba 等人 [26] 在 2019 年实现的有序单发射 64 位微核心
Ariane,支持 RV64GC 指令集.教学研究用处理器通常采用最精简的设计,只包含最基本的、必要的功能,以清晰
地表现处理器的工作流程,如 Lowe-Power 等人 [27] 在 2019 年设计的单周期五级流水线顺序处理器 DINO CPU
以及计算技术研究所包云岗团队在 2020 年公布的单发射九级流水线顺序处理器 NutShell [28] .
经 RISC-V 社区统计 [29] ,目前公开发布并已经提交到社区的 RISC-V 处理器共计 107 种.根据这些处理器支
持指令集的情况以及功能特性,本文按上述分类方法依次总结了其中较有代表性的一些处理器,并给出了相应
的评价.具体内容见表 6~表 8.
从表 6 中可以得知,Rocket、freedom、BOOM 等处理器支持的指令集更加全面,便于对接各类系统,适用性
最为广泛;A70X 自带工具集,开发更方便;SCR5、RiscyOO、XuanTie910 等在性能方面更有优势;DarkRISCV、
NEORV32、AX45、NEOL-V 等更专注于特定结构,可以相应地满足各自特殊的设计需求.
嵌入式处理器的设计关键在于对有限资源的利用能力,或者对于资源受限环境的适应性.从表 7 可以看出,
仅含 M 模式的 SCR1 和 SweRV EH2 可提供最基本的处理能力,相对适应性最强;Hummingbirdv2 E203、SHAKTI
E-CLASS、Ibex 可适用于常规嵌入式环境;PicoRV32、XuanTie E906、CVA6 存在提供更多能力的可能,可以承
担有更高能力要求的环境中的数据处理任务.