基于RISC-V 指令集的处理器及其运行环境设计*
2023-07-21李金凤于德明郭瑞华
李金凤 ,于德明 ,郭瑞华
(沈阳化工大学信息工程学院,辽宁 沈阳 110027)
RISC-V 指令集架构的出现引起了业内的广泛关注,并产生了许多基于RISC-V 指令集架构的处理器设计成果。比如,UCB 设计研发的标量处理器Rocket 以及超标量处理器BOOM,Vector Blox 公司设计的标量处理器ORCA,由苏黎世联邦理工大学和波罗尼亚大学联合设计的超低功耗处理器RI5CY等等[1]。在国内也同样涌现出了诸多RISC-V 架构相关的研究成果,例如芯来科技公司的蜂鸟E200 系列,平头哥公司的无剑、玄铁等等。然而,国内针对RISC-V 的开源处理器的研究使用5 级流水线且加入64 位扩展集的设计方案较少,大多数的设计方案仅考虑功能方面的实现,对于性能的优化略有不足[2]。基于以上背景,课题组在分析了RISC-V 指令集的基础上,采用五级流水线设计RISC-V 处理器,并在Linux 系统上搭建了相应的运行环境。最终完成的基于RISC-V 指令集的64 位五级流水处理器及其运行环境成功运行了CoreMark 测试程序,CoreMark 测试结果为3.38 CoreMark/MHz。
1 处理器的流水线设计
本处理器采用经典的五级流水线,五级分别称为取指(Instruction Fetch, lF)、译码(Instruction Decode, ID)、执行(Execute, EXE)、访存(memory,MEM)、写回(Write back, WB)。处理器整体框图如图1所示。

图1 处理器整体框图
取指阶段主要包括指令计数器模块和取指模块,主要作用是在取指后将指令地址与指令传输到译码级。译码阶段主要包括译码模块和通用寄存器模块,主要作用是将指令译码,使处理器明确本条指令的运算类型、源寄存器、源操作数、目标寄存器等信息。执行阶段主要包括算术逻辑运算模块、控制与状态寄存器模块、访存地址生成模块、乘除法器模块。……
