«上一篇 下一篇»
  计算机工程  2021, Vol. 47 Issue (2): 261-267, 284  DOI: 10.19678/j.issn.1000-3428.0057141
0

引用本文  

李雨倩, 焦继业, 刘有耀, 等. 嵌入式RISC-V乱序执行处理器的研究与设计[J]. 计算机工程, 2021, 47(2), 261-267, 284. DOI: 10.19678/j.issn.1000-3428.0057141.
LI Yuqian, JIAO Jiye, LIU Youyao, et al. Research and Design of Embedded RISC-V Out-of-Order Execution Processor[J]. Computer Engineering, 2021, 47(2), 261-267, 284. DOI: 10.19678/j.issn.1000-3428.0057141.

基金项目

国家自然科学基金(61874087)

作者简介

李雨倩(1994-), 女, 硕士研究生, 主研方向为嵌入式系统;
焦继业, 高级工程师;
刘有耀, 副教授;
郝振和, 硕士研究生

文章历史

收稿日期:2020-01-06
修回日期:2020-02-17
嵌入式RISC-V乱序执行处理器的研究与设计
李雨倩1 , 焦继业2 , 刘有耀1 , 郝振和2     
1. 西安邮电大学 电子工程学院, 西安 710121;
2. 西安邮电大学 计算机学院, 西安 710121
摘要:为满足嵌入式设备小面积高性能的需求,设计一种基于开源RISC-V指令集的32位可综合乱序处理器。处理器包括分支预测、相关性处理等关键技术,支持RISC-V基本整数运算、乘除法以及压缩指令集。采用具有顺序单发射、乱序执行、乱序写回等特性的三级流水线结构,运用哈佛体系结构及AHB总线协议,可满足并行访问指令与数据的需求。在Artix-7(XC7A35T-L1CSG324I)FPGA开发板上以50 MHz时钟频率完成功能验证,测试功耗为7.9 mW。实验结果表明,在SMIC 110 nm的ASIC技术节点上进行综合分析,并在同等条件下与ARM Cortex-M3等处理器进行对比,该系统面积减少64%,功耗降低0.57 mW,可用于小面积低功耗的嵌入式领域。
关键词RISC-V指令集    嵌入式应用    乱序处理器    微体系结构    三级流水线    
Research and Design of Embedded RISC-V Out-of-Order Execution Processor
LI Yuqian1 , JIAO Jiye2 , LIU Youyao1 , HAO Zhenhe2     
1. School of Electronic Engineering, Xi'an University of Posts & Telecommunications, Xi'an 710121, China;
2. School of Computer Science and Technology, Xi'an University of Posts & Telecommunications, Xi'an 710121, China
Abstract: In order to meet the high performance and small area requirements of embedded devices, this paper designs and implements a 32-bit integrated out-of-order processor based on open source RISC-V instruction set.The processor includes the design of key technologies such as branch prediction and correlation processing, supporting basic integer operations, multiplication, division and compressed instruction set of RISC-V.It adopts a 3-stage assembly line structure that is characterized by sequential single transmission, out-of-order execution, out-of-order write-back, etc.By taking the AHB bus protocol for on-chip bus and using Harvard architecture, the demands of parallel access to instructions and data can be met.The functional verification is completed on the ARTIX-7 (XC7A35T-L1CSG324i)FPGA development board with a clock frequency of 50 MHz, and the test power consumption is 7.9 mW.The experimental results is comprehensively analyzed on the SMIC 110 nm ASIC technology node, and compared with ARM Cortex-M3 processors under the same conditions.Results show that the system area is reduced by 64% and power consumption reduced by 0.57 mW, which demonstrates that it can be used in embedded devices that require small area and low power consumption.
Key words: RISC-V instruction set    embedded application    out-of-order processor    microarchitecture    three-stage assembly line    
0 概述

嵌入式处理器目前已用于低功耗应用的各个领域,随着小型嵌入式设备(如物联网边缘设备)的广泛使用,对嵌入式系统功能、速度、资源等要求越来越高[1-3]。同时,增长较快的物联网市场具有长尾化特性,拥有众多细分市场,对于功耗有较高的要求[4-6]。处理器是物联网设备的核心部件,特别是嵌入式物联网设备对处理器有实时性的要求,对软件生态的依赖相对较低,应用需求也不尽相同,因此,迫切需要一种能够根据自身需求可定制的RISC指令集架构[7]

在嵌入式领域中,ARM架构的处理器占据着主导地位,当前多数嵌入式处理器都基于ARM架构。ARM系列处理器通常只能做标准化设计,很难实现差异化处理。例如最常用的Cortex-M3和Cortex-M4处理器,Cortex-M3相比于Cortex-M0增加了除法,Cortex-M4相比于Cortex-M3增加了分支预测和浮点单元。ARM在提升处理器性能的同时,面积大幅增加。

现有的嵌入式微处理器多采用顺序单发射、顺序执行和顺序写回的方式,在保证处理器性能情况下势必会牺牲面积,制约了处理器性能面积比[8]。本文通过分析当前嵌入式处理器领域存在的问题,根据RISC-V指令集的特点,设计一款32位高性能低功耗的乱序执行处理器支持RV32ICM指令集架构。使用乱序执行方式降低处理器的面积,在保证处理器性能的情况下提高性能面积比。针对处理器运行速度的需求,系统采用并发方式执行指令,支持不同类型指令并行执行。为降低并行化开销,使用小面积低功耗的乘除法模块,并采用面积较小的缓存结构以平衡性能、硬件资源与代码大小。

1 RISC-V指令集

RISC-V(Reduced Instruction Set Computer-Five)作为一种开放自由的指令集体系结构,可以针对不同的应用灵活组合指令集进行芯片设计,满足从嵌入式设备到服务器等不同领域的处理器设计需求[9-10]

RISC-V是一种新兴的开源指令集,没有专利限制,具有简洁的指令格式、模块化的指令集、可定制扩展、无条件码和分支延迟槽等优点,简化了RISC-V处理器的设计[11]。国内外已有众多高校和企业对RISC-V指令集进行研发,阿里平头哥在2019年7月发布了高性能RISC-V架构处理器玄铁910;兆易创新也在2019年8月发布了一款基于RISC-V的32位通用MCU芯片GD32VF103系列。

RISC-V ISA由一个基本的整数指令集“I”和丰富的可选扩展组成,扩展用单个字母表示,例如“M”(整数乘法和除法)、“A”(原子指令)、“C”(压缩指令)等。其中整数集有3种不同的配置,分别具有32位、64位和128位数据宽度:RV32I,RV64I和RV128I,RV32E配置本质上是轻量级RV32I,其寄存器数量更少[12]。设计者可以选择实现具有定制扩展的指令子集,通过这些指令集的组合或者扩展以满足应用需求,同时可以降低资源开销和功耗。文献[13]较全面地描述了RISC-V指令集。RISC-V指令集在嵌入式设计领域具有较大的优势和广泛的应用前景,随着高性能处理器的不断开发和应用,RISC-V指令集被更广泛地应用于高性能低功耗等领域。

2 处理器架构

乱序执行结构可加快处理器执行速度,提高系统运行速度[14]。本文设计了适用于微控制器的三级流水线结构,即“取指”“执行”和“写回”,具有顺序单发射、乱序执行和乱序写回的特点。图 1所示为三级流水线架构。

Download:
图 1 三级流水线架构 Fig. 1 Three-stage assembly line architecture
2.1 取指阶段 2.1.1 取指及生成PC

图 1所示,取指位于流水线的第1阶段。取指阶段从指令存储器中顺序取出指令存入IR寄存器,执行阶段从IR中取指令继续执行。在本文设计中,取指模块使用一个32位寄存器保存当前的PC值,顺序取指时下一个PC通过当前指令的位宽判断,若当前指令为16位指令时PC+2,当前指令为32位时PC+4。分支指令采用分支预测模块得到的跳转地址作为新的PC值,分支预测失败时使用执行阶段返回的正确的PC值。分支预测采用静态分支预测技术,根据当前指令的跳转方向预测指令是否发生跳转。对取得的指令在同一周期进行部分译码,判断指令是分支指令还是非分支指令,若是分支指令则需要得到分支指令的具体信息,通过得到的分支指令跳转地址偏移量和分支预测的结果生成PC值。

2.1.2 指令访问及AHB总线通道

取指模块作为总线系统中的主设备单元负责产生取指地址和相关控制信号。本文设计取指以及访存模块采用AHB总线接口协议,可方便集成ARM系列处理器中已经成熟的各种IP核[15]

目前大多数RISC-V处理器所使用大面积紧耦合数据和指令存储器占用了较大的芯片面积,嵌入式设备中将增加处理器的成本[16-17]。因此,为实现快速取指挂载了指令Cache等高速存储器,指令可以通过总线系统从外部存储器(Icache)进行读取。

2.2 执行阶段 2.2.1 译码与指令派遣

译码与执行位于流水线的第2阶段。执行阶段将取指阶段存储在IR寄存器的指令进行译码和执行;译码模块可得到指令的操作类型、寄存器索引和立即数等信息。执行模块主要完成简单算术运算(ALU)、乘/除法(MulDiv)、访存指令的地址生成(AGU)、分支预测解析等任务。

译码模块主要由组合逻辑组成,在指令格式中,通过opcode将指令分组,指令的最低两位作为判断32位和16位指令的依据,funct部分可以判断指令的具体功能,立即数进行符号扩展为32位。根据指令的编码规则对指令进行译码,按照指令功能可生成3组指令信息,将指令信息派遣到ALU、Muldiv或AGU模块完成运算。RISC-V指令都是单操作数或两操作数指令并且写回策略每次只写回一条指令,因此,相关寄存器文件支持两个读端口和一个写端口操作。指令派遣流程如图 2所示。

Download:
图 2 指令派遣流程 Fig. 2 Command dispatch procedure

生成乘除法单元所需的信息总线(Info Bus)代码如下:

wire muldiv_op = rv32_op & rv32_func7_0000001;

wire ['DECINFO_MULDIV_WIDTH-1:0] muldiv_info_bus;

assign muldiv_info_bus['DECINFO_GRP]=' MULDIV;

assign muldiv_info_bus['DECINFO_RV32] = rv32;

assign muldiv_info_bus['MULDIV_MUL] = rv32_mul;

assign muldiv_info_bus['MULDIV_MULH]= rv32_mul;

assign muldiv_info_bus['MULDIV_MULHSU]=rv32_ mulhsu;

assign muldiv_info_bus['MULDIV_MULHU]=rv32_ mulhu;

2.2.2 乱序并行执行单元

执行模块主要由3个功能子单元组成,可实现普通运算、乘除法运算、长指令访存等功能。不同通道的逻辑操作和内存访问相互独立,可实现指令集并行执行以获得更好的性能。普通ALU运算模块完成逻辑运算、加减法、移位等指令;访存地址生成模块完成Load、Store指令的地址生成;乘除法单元完成整数的乘除法运算。

嵌入式处理器的主要挑战就是功能单元利用率低和分段访问的问题,例如乘法和除法单元。图 3所示为RISC-V各类型指令使用频率,数据来源于coremark与dhrystone 2个标准测试程序。由图 3可知,使用频率最高的是基本整数运算指令,乘除法相关指令mul与div使用频率较低。乘除法单元在执行过程中短时间内偶尔被访问,并在相当长时间内保持空闲,长时间的空闲会导致显著的静态功耗。随着晶体管尺寸技术节点和阈值电压的缩小,静态功率的作用变得更加明显[18]。此外,这些利用率低的单元具有更大的面积(即晶体管数量),表明嵌入式系统中静态功耗不断增加。

Download:
图 3 RISC-V指令的使用频率 Fig. 3 Usage frequency of RISC-V instruction

降低并行化开销是提高依赖数据并行计算模型的计算系统能效关键因素之一,尤其是在处理工作负载不平衡和并行区域小的应用时。基于以上分析,本文设计了低功耗、小面积的多周期乘除法模块,该模块仅使用状态机进行控制和选择,节省了硬件开销。乘法器选用Booth设计,除法器使用加减交替法设计。乘法操作按照MULH(返回乘法结果高位)、MUL(返回乘法结果低位)的顺序执行,除法操作按照DIV(返回除法的商)、REM(返回除法的余数)的顺序执行,并将两条指令融合为单一的乘除法操作,仅执行一次乘除法操作。乘除法操作共用一个加法器进行资源复用可减少面积开销,使用加法器进行多次迭代运算可实现乘除法功能。结合单周期和多周期并行执行的设计,可以在减少对流水线运行影响的情况下实现降低并行化开销的目的,减小处理器的面积和降低功耗。

2.3 写回阶段 2.3.1 写回仲裁策略

写回阶段主要由访存模块和写回模块组成。如图 1所示,写回阶段提交来自流水线的指令,将指令的运算结果写回到通用寄存器组中,并更新寄存器文件。因为在执行过程中多周期指令和单周期指令可以并行执行,所以在写回时可能会出现以下3种情况:

1)单周期指令顺序发射执行,在一个时钟周期内完成计算。多周期指令如果和正在执行的单周期指令没有发生数据冲突,则不影响单周期指令的执行,流水线不会产生断流的危害,单周期指令可以顺序写回。

2)多周期指令中乘除法指令和load指令的执行周期有所不同,所以在写回阶段可能发生同时写回到同一寄存器的情况,写回阶段将从长指令FIFO中读出第一条长指令信息,按顺序将第一条指令优先写回。因此,多周期指令属于顺序发射和顺序写回。

3)单周期和多周期指令在同一时期写回时,多周期指令写回的优先级更高,因为多周期指令一定在单周期指令之前发射。因此,如果将单周期与多周期指令统一考虑,则流水线属于顺序发射和乱序写回。

2.3.2 长指令数据访存

为满足CPU并行访问的需求,本文采用哈佛体系结构,即使用分离的指令和数据存储通过独立的总线系统分别访问。数据和指令的访问可以同时进行,可实现快速、无阻塞访问数据。分离的总线使得处理器可以在同一个周期内获得指令字(来自Icache)和操作数(来自Dcache),从而提高了执行速度和数据的吞吐率,减少访存冲突。当CPU访问数据时,需要经过总线控制单元BIU对信号进行译码,如图 4所示,BIU对地址总线lsu2biu_haddr[31:0]进行译码,根据不同的地址选择访问不同的外部模块或数据存储器。

Download:
图 4 总线地址译码逻辑结构 Fig. 4 Logic structure of bus address decoding
3 主要问题处理 3.1 分支预测处理

RISC-V具有简洁的分支跳转指令,包括无条件直接跳转(jal)、无条件间接跳转(jalr)和带条件直接跳转指令3种类型。其中带条件跳转指令将“比较”和“跳转”作为一条指令执行,减少了指令数目,从而简化了硬件设计。

在实际应用程序中,“while”“for”等循环语句使用频繁,循环语句需要用到条件分支指令,因此正确预测分支指令跳转方向和地址将减少流水线断流的危害。本文设计中使用简单的静态分支预测结构,在取指阶段对指令进行部分译码,得到分支指令信息。在条件分支指令中如果向后跳转则预测为跳转,向前跳转预测为不跳转,对于无条件跳转指令jal不需要进行预测直接跳转,在无条件间接跳转指令jalr中,如果rs1为寄存器0,则直接生成PC值;rs1若不是寄存器0,为防止RAW冲突,将暂停取指,等待执行完成后进行跳转。如果在执行阶段的分支预测解析模块通过ALU计算得到的跳转地址与预测结果不符,则会将正确的地址送入取指模块,更新PC值,并产生一个周期的流水线断流。分支预测状态示意图如图 5所示。

Download:
图 5 分支预测状态示意图 Fig. 5 State schematic diagram of branch prediction state
3.2 非对齐指令处理

本文设计支持RISC-V架构扩展压缩子集“C”,当处理器取指遇到地址非对齐的指令时,通常需要两个时钟周期取出一条指令。针对以上问题,使用剩余缓存技术,保存上一次取指没有用完的比特位供下一次使用。对于RV32非对齐情况,取出的32位指令为低16位与上一次取指的高16位,对于压缩指令只使用低16位,高16位暂存于剩余缓存中。

图 6展示了4条待执行指令,其中前3条为16位压缩指令,第4条为32位指令。4条指令均存储在32位指令存储器0x0c-0x14的地址空间,其中第4条指令分开存储在0x10和0x14两个地址。

Download:
图 6 指令编码及对应的数据存储地址 Fig. 6 Instruction coding and corresponding data storage address

表 1为不加剩余缓存的情况,共需要对指令存储器进行5次读取操作。表 2为添加剩余缓存的情况,第1次读取0x0c地址的指令,读出0xc606_c422,将0xc422送入IR寄存器,将0xc606送入剩余缓存寄存器中。第2次不需要读取指令存储器,使用剩余缓存的指令,第4条指令为32位指令,根据PC生成模块PC值会从0x10加2变成0x12,使用剩余缓存数据,剩余缓存为0x1623,判断不是16位指令后PC加2,读取0x14地址的指令,与剩余缓存里的数据组合成32位指令。由上述步骤可知,相同的4条指令不加剩余缓存需要5次读取操作,增加剩余缓存技术只需要读取3次存储器,可加快执行速度。

下载CSV 表 1 不加剩余缓存的情况 Table 1 Situation of without residual cache
下载CSV 表 2 添加剩余缓存的情况 Table 2 Situation of adding remaining cache
3.3 冲突解决

由于指令之间具有数据依赖性,RISC-V流水线可能会发生数据冲突等相关性问题,因此执行过程中需要处理流水线冲突问题。

1)如图 7所示,第2条指令“div t5,ra,sp”需要用到第1条指令“li sp,6”的数据,这会引起RAW问题从而造成数据冲突。本文设计采用数据旁路技术,将第1条指令的计算结果直接送入下一条指令的译码模块。当执行除法指令时,在没有发生数据冲突的情况下,单周期指令可以继续发射、执行,当发生RAW相关性时,在一条相关的指令执行之前插入气泡,暂停流水线的执行。对于多周期指令和单周期指令写回模块发生的WAW相关性,多周期指令优先写回,避免此类冲突的发生。

Download:
图 7 流水线数据的冲突 Fig. 7 Conflict of assembly line data

2)对于除法指令这样的长指令需要多个时钟周期才能完成除法运算,执行阶段可能会出现资源相关,使用握手协议暂停流水线。此外,采用哈佛体系结构,避免取指模块和访存模块发生争用存储器资源的相关冲突。

3)对于转移指令所引发的控制相关,使用分支预测技术减少流水线的断流。

3.4 处理器软件接口

在本文设计中开发了处理器相应的软件接口,包括外设寄存器名称、地址的定义以及外设的驱动代码、中断处理和启动代码等,对嵌入式软件开发人员透明,无需了解处理器内部结构,易于开发,并且ARM系列的软件移植方便。

4 验证与结果分析 4.1 指令集验证

本文使用硬件描述语言Verilog HDL将模块功能以代码来实现,通过开源的RISC-V基准指令集自测试用例,测试处理器是否符合指令集架构。该测试程序是由RISC-V架构开发者为了检测处理器是否符合指令集架构中的定义而编写的测试程序,汇编指令使用宏定义组织成程序点,测试指令集架构中定义的指令。结果表明,RV32ICM指令集所有指令均满足RISC-V指令集架构标准。

4.2 FPGA验证

片上系统(SoC)围绕处理器内核构建,具有一系列外部设备。本文FPGA实验平台为Xilinx Artix-7(XC7A35T-L1CSG324I)开发板,处理器核在50 MHz的时钟频率下进行测试。通过FPGA的软硬件协同仿真,使用该处理器核对外设进行控制,仿真结果满足嵌入式应用需求。此外,在同等环境下对RISC-V开源处理器蜂鸟E203和V-scale[19]处理器进行FPGA测试,表 3为不同处理器的资源利用情况。

下载CSV 表 3 基于FPGA的处理器资源利用情况 Table 3 Resource utilization of processors based on FPGA
4.3 ASIC综合分析

在SMIC 0.11 μm的ASIC(Application Specific Integrated Circuit)技术节点上进行综合分析,进一步对比了Cortex-M3处理器以及开源RISC-V处理器蜂鸟E203、Zero-riscy[19]和V-scale等处理器,并从指令集、架构、性能等方面进行阐述。

1)Cortex-M3为ARM推出的面向标准嵌入式市场的高性能低成本处理器,采用ARM商业指令集架构,并且包含Thumb和Thumb-2两个子集。本文设计以及处理器蜂鸟E203、Zero-riscy和V-scale处理器均采用开源RISC-V指令集架构。RISC-V指令集相对于其他指令集架构更为简洁,例如在带条件分支跳转指令方面,传统处理器需要使用两条独立的指令,第1条指令先使用比较指令,比较的结果被保存到状态寄存器中。第2条指令使用跳转指令,判断前一条指令保存在状态寄存器中的比较结果为真时,则进行跳转。相对而言,RISC-V架构将比较与跳转两个操作放到了一个指令的方式减少了指令的条数,因此在硬件设计上更加简单。在压缩指令方面,ARM系列处理器使用的Thumb指令集,只有最基本指令的简化版本,可以将某些代码压缩20%~30%左右,但是从标准模式到Thumb模式的切换需要增加代码和时间消耗,代码的运行速度降低了约15%[20]。Thumb-2指令集虽无须状态切换,但是与标准的ARM代码相比,需要更多的Thumb-2指令实现相同的功能,额外的指令会使处理速度降低大约15%~20%。在RISC-V中大约50%~60%的指令可以用RVC指令代替,代码的大小可以减少约20%~30%,并且只需要在编译阶段完成,RISC-V的压缩指令和标准指令可以混合使用,无须状态的切换和额外代码开销[21]。因此,RISC-V压缩指令硬件设计更简单,执行效率更高。

2)如表 4所示,在结构方面,本文设计的流水线深度与Cortex-M3以及V-scale相同,分为取指、执行、写回三级流水阶段。Cortex-M3和V-sclale处理器是顺序执行处理器,本文设计采用顺序发射、乱序写回的策略减少了流水线的断流。此外,设计了多周期乘除法器,对比Cortex-M3的单周期乘法器和2-12周期除法器具有更小的硬件开销。本文设计与Cortex-M3处理器均采用哈佛结构通过并行访问指令和数据来提高系统运行速度,并且采用了更适用于嵌入式系统的小面积缓存结构。

下载CSV 表 4 不同处理器结构对比 Table 4 Comparison of different processor structure

3)表 5所示为逻辑综合结果对比。将本文设计与Cortex-M3处理器和蜂鸟E203处理器采用相同的工艺环境综合,面积上更具优势,较Cortex-M3小64%,较蜂鸟E203处理器小8%。功耗低于Cortex-M3处理器,略高于蜂鸟E203处理器。在性能方面,通过Dhrystone(DMIPS/MHz)跑分结果可知,本文设计性能与Cortex-M3相近。

下载CSV 表 5 不同处理器基于ASIC技术性能对比 Table 5 Comparison of different processor performance based on ASIC technology
5 结束语

本文针对小面积低功耗的嵌入式应用,设计了一款基于RISC-V指令集的32位乱序处理器。从取指、执行、写回3个阶段对流水线的设计进行分析,给出分支预测和数据冲突等问题的应对策略,且RV32ICM指令在测试平台均可验证通过,处理器核在Artix-7开发板实现逻辑功能。实验结果表明,本文系统面积较Cortex-M3减少64%,功耗降低0.57 mW,可应用于小面积高性能的嵌入式领域。目前该处理器已应用到基于RISC-V与Cortex-M0的双核异构系统中,面对嵌入式应用不断多样化和差异化的需求,下一步将面向特定的领域进行扩展,在RISC-V指令集预留的扩展指令空间中分配特定指令,设计协处理器的接口。

参考文献
[1]
RAVEENDRAN A, PATIL V B, SELVAKUMAR D, et al.A RISC-V instruction set processor-micro-architecture design and analysis[C]//Proceedings of 2016 International Conference on VLSI Systems, Architectures, Technology and Applications.Washington D.C., USA: IEEE Press, 2016: 1-7.
[2]
DENNIS D K.Single cycle RISC-V micro architecture processor and its FPGA prototype[C]//Proceedings of the 7th International Symposium on Embedded Computing and System Design.Durgapur, India: [s.n.], 2017: 1-5.
[3]
OH H, PARK J, YANG M, et al.Design of a generic security interface for RISC-V processors and its applications[C]//Proceedings of International SoC Design Conference.Daegu, Korea: [s.n.], 2018: 40-41.
[4]
KELLER B. A RISC-V processor SoC with integrated power management at submicrosecond timescales in 28 nm FD-SOI[J]. IEEE Journal of Solid-State Circuits, 2017, 1: 1863-1875. DOI:10.1109/JSSC.2017.2690859
[5]
MORALES H, DURAN C, ROA E.A low-area direct memory access controller architecture for a RISC-V based low-power microcontroller[C]//Proceedings of the 10th IEEE Latin American Symposium on Circuits & Systems.Armenia, Colombia: [s.n.], 2019: 97-100.
[6]
PANG Xuemin, YU Daojie.Design and application of IP core in SoC technology[C]//Proceedings of IEEE International Symposium on Information Science & Engineering.Washington D.C., USA: IEEE Press, 2010: 71-74.
[7]
RAO Jinli, AO Tianyong, XU Shu, et al. Design exploration of SHA-3 ASIP for IoT on a 32-bit RISC-V processor[J]. IEICE Transactions on Information and Systems, 2018, 101(11): 2698-2705. DOI:10.1587/transinf.2017ICP0019
[8]
RAVEENDRAN A, PATIL V, DESALPHINE V, et al.RISC-V out-of-order data conversion co-processor[C]//Proceedings of International Symposium on VLSI Design & Test.Washington D.C., USA: IEEE Press, 2015: 1-2.
[9]
MORALES H, DURAN C, ROA E.A low-area direct memory access controller architecture for a RISC-V based low-power microcontroller[C]//Proceedings of the 10th Latin American Symposium on Circuits & Systems.Armenia, Colombia: [s.n.], 2019: 97-100.
[10]
DENNIS D K.Single cycle RISC-V micro architecture processor and its FPGA prototype[C]//Proceedings of the 7th International Symposium on Embedded Computing and System Design.Durgapur, India: [s.n.], 2017: 1-5.
[11]
HOLLER R, HASELBERGER D, BALLEK D, et al.Open-source RISC-V processor IP cores for FPGAs-overview and evaluation[C]//Proceedings of the 8th Mediterranean Conference on Embedded Computing.Budva, Montenegro: [s.n.], 2019: 1-6.
[12]
WATERMAN A, LEE Y, PATTERSON D A, et al.The RISC-V instruction set manual, volume I: base user-level ISA[D].Berkeley, USA: University of California, 2011: 1-26.
[13]
WATERMAN A, LEE Y, PATTERSON D A, et al.The RISC-V instruction set manual, volume I: user-level ISA version 2.1[D].Berkeley, USA: University of California, 2016: 111-121.
[14]
PATIL V, RAVEENDRAN A, SOBHA P M, et al.Out of order floating point coprocessor for RISC VISA[C]//Proceedings of the 19th International Symposium on VLSI Design and Test.Washington D.C., USA: IEEE Press, 2015: 1-7.
[15]
DIVEKAR S, TIWARI A.Multichannel AMBA AHB with multiple arbitration technique[C]//Proceedings of International Conference on Communications & Signal Processing.Washington D.C., USA: IEEE Press, 2014: 1854-1858.
[16]
BANAKAR R, STEINKE S, LEE B S, et al.Scratchpad memory: design alternative for cache on-chip memory in embedded systems[C]//Proceedings of 2015 International Conference on Hardware/Software Design and System Synthesis.Washington D.C., USA: IEEE Press, 2002: 73-78.
[17]
DURAN C, RUEDA D L, CASTILLO G, et al.A 32-bit RISC-V AXI4-lite bus-based microcontroller with 10-bit SAR ADC[C]//Proceedings of the 7th IEEE Latin American Symposium on Circuits & Systems.Washington D.C., USA: IEEE Press, 2016: 315-318.
[18]
CHRISTOPHER C, CHIU P F, KRSTE A, et al. BROOM:an open-source out-of-order processor with resilient low-voltage operation in 28 nm CMOS[J]. IEEE Micro, 2019, 39(2): 52-60. DOI:10.1109/MM.2019.2897782
[19]
ASANOVIć K, AVIZIENIS R, BACHRACH J, et al.The rocket chip generator[D].Berkeley, USA: University of California, 2016.
[20]
SUDANTHI C, GHOSH M, WELTON K, et al.Performance analysis of compressed instruction sets on workloads targeted at mobile internet devices[C]//Proceedings of 2009 IEEE International SoC Conference.Washington D.C., USA: IEEE Press, 2009: 215-218.
[21]
PATSIDIS K, KONSTANTINOU D, NICOPOULOS C, et al. A low-cost synthesizable RISC-V dual-issue processor core leveraging the compressed Instruction Set Extension[J]. Microprocessors and Microsystems, 2018, 61: 1-10. DOI:10.1016/j.micpro.2018.05.007