掌桥专利:专业的专利平台
掌桥专利
首页

一种基于RISC-V架构的高性能嵌入式处理器

文献发布时间:2024-01-17 01:26:37


一种基于RISC-V架构的高性能嵌入式处理器

技术领域

本发明属于计算机部件技术领域,涉及一种基于RISC-V架构的高性能嵌入式处理器。

背景技术

目前,IoT和移动处理器领域,应用最为广泛的是基于ARM架构的处理器,在性能要求不高的领域,以Cortex-M系列的处理器核为主,在有一定性能要求的领域,以Cortex-A系列的处理器核为主。在RISC-V社区中,也存在着一些开源的处理器核。伯克利大学开发了基于RISC-V架构的Rocket-Chip[9]和BOOM两个处理器核心,它们都是64位的RISC-V处理器,前者是一个5级顺序流水,后者是一个高性能超标量乱序处理器,它们分别同ARM的Cortex-A5和Cortex-A9相比,使用更小的芯片面积,拥有更低的功耗,更高的性能。此外,工业界也发布了很多的开源的RISC-V处理器内核,例如,芯来科技的蜂鸟E200,阿里巴巴的玄铁C910。蜂鸟E200是一款性能较低的微控制器,可用于对性能要求不高的场景,中国专利申请CN202210221774.1提出了一种RISC-V处理器设计的参考模型,具有六级流水线以及双指令译码发射,乱序执行的特点以及分支预测的功能。

基于ARM指令集架构的处理器面临一个很大的问题:ARM架构不是一个开源架构,如果使用这些处理器核,需要向ARM公司支付较高的授权费用。且这些处理器具有较差的灵活性,不具备模块化可扩展指令集的特点。现有的RISC-V处理器设计方案中,Rocket-Chip和BOOM使用的访存总线是由伯克利大学提出的Tilelink总线,然而目前主流的SOC片上互联总线是AMBA系列总线,采用Tilelink总线不利于连接现有的IP,增加了集成第三方SoC的难度,玄铁C910是一款相对复杂的高性能嵌入式处理器,它可以运行Android操作系统。但对于一些不需要运行类似于Linux或者Android,且同时需要处理大量数据的场景,例如硬盘控制器或南桥逻辑控制器,E200和C910就不能有效支持,E200的性能较低,不适用于该场景,而C910包含了很多并不需要用到的功能,会造成芯片面积的浪费,徒增芯片成本。

中国专利申请CN202210221774.1提出的参考设计中,仅提出了一种典型的超标量的微架构参考,该参考设计中对影响处理器核关键性能的访存部件,采用顺序执行的策略,该策略导致某一条指令被阻塞以后,后续指令同样被阻塞。导致了流水线有了大量的空泡,降低了执行效率。同时该参考设计也没用考虑集成外设的扩展性,没有对常用的AMBA总线协议的支持。在实现的方法学视角来看,该专利中没有提及如何验证和评估所提出的参考设计,在现实工程的使用场景中一款处理器需要配套的验证工具和性能评估工具。

发明内容

为解决上述技术问题,本发明的目的是提供一种基于RISC-V架构的高性能嵌入式处理器,该处理器采用了指令的动态分支预测技术,指令乱序执行技术,支持访存指令部分乱序,有较强的性能,且占有较小的面积,同时兼容AXI协议方便做外设扩展及SOC集成。可应用于对处理器性能要求较高,且无需运行类似于Linux或其它复杂操作系统的场景。

本发明提供一种基于RISC-V架构的高性能嵌入式处理器,包括:取指令模块、指令队列、指令解码模块、发射模块、功能执行模块、指令重排序队列和寄存器堆栈;所述取指令模块、指令队列、指令解码模块、发射模块和功能执行模块依次连接,指令重排序队列分别和发射模块、功能执行模块以及寄存器堆栈连接,寄存器堆栈与发射模块连接;

所述取指令模块,用于生成取指令地址并根据生成的取指令地址从指令缓存中读取指令,再将读取到的指令写到指令队列中;

所述指令队列,用于存放取指令模块读取到的指令;

所述指令解码模块,用于提取指令的操作信息、源寄存器操作数和目标寄存器操作数,并将这些信息传递给发射模块;

所述发射模块,用于根据源寄存器操作数从指令重排序队列或寄存器堆栈中读取相应的源寄存器操作数的值,并根据发射策略将满足发射要求的指令的源寄存器操作数的值、操作信息和目标寄存器操作数发射到功能执行模块;

所述功能执行模块,包括多个执行单元,根据指令的操作信息将指令发送到相应的执行单元,并将执行结果写回到指令重排序队列,以及更新寄存器映射表;

所述指令重排序队列,用于将功能执行模块乱序返回的执行结果按照进入指令队列的顺序退休。

在本发明的基于RISC-V架构的高性能嵌入式处理器中,所述取指令模块包括三级流水线,三级流水线包括:分支预测器、程序计数器生成单元和指令地址生成单元;

所述程序计数器生成单元,用于更新程序计数器的值,作为备选指令地址;

所述分支预测器,用于根据程序计数器的值,预测下一周期的跳转方向和跳转地址;

所述指令地址生成单元,用于根据跳转方向选择备选指令地址或跳转地址作为取指令地址。

在本发明的基于RISC-V架构的高性能嵌入式处理器中,所述指令队列是一个同步FIFO的结构,每一项存储的内容包括32bit的指令数据、分支预测的结果、取指令时的异常信息、指令对应的程序计数器的值。

在本发明的基于RISC-V架构的高性能嵌入式处理器中,所述指令解码模块包括:解码组合逻辑单元和寄存器映射表;

所述解码组合逻辑单元,用于对指令进行解码得到指令的操作信息和目标寄存器操作数,指令的操作信息包括指令类型以及指令类型对应的执行单元的控制信息;

所述寄存器映射表,用于查询指令中源寄存器操作数是否已准备好,以及目前源寄存器操作数的值时所保存的位置。

在本发明的基于RISC-V架构的高性能嵌入式处理器中,所述发射模块包括:操作数读取单元、发射队列和写指令排序队列;

所述操作数读取单元用于根据源寄存器操作数从指令重排序队列或寄存器堆栈中读取相应的源寄存器操作数的值,并将每条指令的源寄存器操作数的值、操作信息和目标寄存器操作数发送给发射队列和写指令排序队列;

所述发射队列根据发射策略将满足发射要求的指令的源寄存器操作数的值、操作信息和目标寄存器操作数发射到功能执行模块;

所述写指令排序队列判断操作数读取单元发送的指令信息是否为写指令,若是写指令则进行存储;

所述发射队列根据写指令排序队列中写指令的顺序按序发射写指令、乱序发射写指令之间读指令。

在本发明的基于RISC-V架构的高性能嵌入式处理器中,所述发射策略具体为:

(1)分支指令、算术逻辑运算指令、乘除法指令和控制状态寄存器指令,只要指令所需操作数准备好,即读取到源寄存器操作数的值,就将该指令发射出去;

(2)存储器写指令按指令写入发射队列的顺序发射;

(3)夹在两条存储器写指令之间的存储器读指令,只要指令所需操作数准备好,就将该指令发射出去;

(4)多条操作数都已经准备好的指令,按指令进入发射队列的顺序进行发射。

在本发明的基于RISC-V架构的高性能嵌入式处理器中,所述功能执行模块包括:分支指令执行单元、算术逻辑运算指令执行单元、乘除法指令执行单元、存储器读写指令执行单元、和控制状态寄存器指令执行单元;

所述逻辑运算单元用于执行加减运算和逻辑运算指令;所述乘除法单元用于执行乘除法指令;所述读写指令执行单元用于执行读写内存指令;所述分支指令执行单元用于执行分支指令;所述控制状态寄存器指令执行单元用于执行状态寄存器读写指令。

在本发明的基于RISC-V架构的高性能嵌入式处理器中,所述指令重排序队列模块用于暂存功能模块的返回值和保证指令的按顺序退休;同时也用于异常处理、更新寄存器映射表、更新寄存器堆栈。

在本发明的基于RISC-V架构的高性能嵌入式处理器中,所述寄存器堆栈用于保存指令退休后,RISC-V指令集中规定的32个逻辑寄存器的值。

本发明的一种基于RISC-V架构的高性能嵌入式处理器,代号为FRV232,在芯片的面积、功耗和性能之间进行了折中,利用寄存器重命名和乱序执行技术有效地提高了性能,并结合RISC-V精简指令的优势,以较小的面积实现了较高的性能,它强于RISC-V社区中单发射的顺序处理器,可以被应用于硬盘控制器,南桥系统控制器,以及其他对性能和面积都有一定要求的场景。

附图说明

图1是本发明的一种基于RISC-V架构的高性能嵌入式处理器整体结构图;

图2是取指令模块的结构框图;

图3是指令解码模块的结构框图;

图4是寄存器重命名机制示意图;

图5是发射模块的结构框图;

图6是存储器读写指令执行单元的数据通路图;

图7是存储器读写指令执行单元中写请求队列的数据通路图;

图8是本发明的基于RISC-V架构的高性能嵌入式处理器的功能验证的流程图。

具体实施方式

针对现有的开源RISC-V处理器核没有覆盖到的工作场景和不足,本发明设计了一种顺序取指、乱序执行的处理器微架构,代号为FRV232,它支持RISC-V的基本整数指令集,以及M扩展指令集。FRV232采用了指令的动态分支预测技术,指令乱序执行技术,支持访存指令部分乱序,有较强的性能,且占有较小的面积,同时兼容AXI协议方便做外设扩展及SOC集成。可应用于对处理器性能要求较高,且无需运行类似于Linux或其它复杂操作系统的场景。

如图1所示,本发明的一种基于RISC-V架构的高性能嵌入式处理器,包括:取指令模块、指令队列、指令解码模块、发射模块、功能执行模块、指令重排序队列和寄存器堆栈;所述取指令模块、指令队列、指令解码模块、发射模块和功能执行模块依次连接,指令重排序队列分别和发射模块、功能执行模块以及寄存器堆栈连接,寄存器堆栈与发射模块连接。

所述取指令模块,用于生成取指令地址并根据生成的取指令地址从指令缓存中读取指令,再将读取到的指令写到指令队列中;所述指令队列,用于存放取指令模块读取到的指令;所述指令解码模块,用于提取指令的操作信息、源寄存器操作数和目标寄存器操作数,并将这些信息传递给发射模块;所述发射模块,用于根据源寄存器操作数从指令重排序队列或寄存器堆栈中读取相应的源寄存器操作数的值,并根据发射策略将满足发射要求的指令的源寄存器操作数的值、操作信息和目标寄存器操作数发射到功能执行模块;所述功能执行模块,包括多个执行单元,根据指令的操作信息将指令发送到相应的执行单元,并将执行结果写回到指令重排序队列,以及更新寄存器映射表;所述指令重排序队列模块,用于将功能执行模块乱序返回的执行结果按照进入指令队列的顺序退休。

如图2所示,所述取指令模块包括三级流水线,三级流水线包括:分支预测器、程序计数器生成单元和指令地址生成单元。

所述程序计数器生成单元,用于更新程序计数器的值,作为备选指令地址;所述分支预测器,用于根据程序计数器的值,预测下一周期的跳转方向和跳转地址;所述指令地址生成单元,用于根据跳转方向选择备选指令地址或跳转地址作为取指令地址。

一条指令从取指到执行,需要经过很多模块的处理,而一条分支指令的执行是否成功,需要在执行阶段才能确定,如果此时发生分支跳转,那么该分支指令后续的指令,就不能执行,需要被处理器取消掉,发生流水线冲刷,这样会浪费大量的取指带宽。因此,本发明使用了动态分支预测技术,实现了分支预测器,以减少流水线冲刷的次数。在具体实施中,程序计数器生成单元的结果是32bit的地址,将其输出到分支预测器去预测下跳转地址。同时程序计数器的值和跳转地址都送到指令地址生成单元,作为取值指令地址的备选项。

分支预测器的跳转方向输出到指令地址生成单元作为选择取指令地址的条件之一,分支预测器预测的跳转地址输出到程序计数器生成单元,作为生成下一个程序计数器的备选项。如果跳转方向为进行跳转,则将跳转地址作为取指令地址,同时根据跳转地址更新程序计数器的值。如果跳转方向为不跳转,则将程序计数器的值作为取指令地址,同时根据程序执行顺序更新程序计数器的值。

取指令模块根据指令地址生成单元选择的地址去访问指令缓存单元来获得指令数据,并将获得的指令数据、读指令缓存单元产生的异常信息和指令对应的程序计数器写入到指令队列中。

由于各种指令运行的时间都不一样,有一些指令,例如访存指令,可能会运行较长时间,此时处理器的下游模块可能会发生阻塞,从而连带着取指令模块也发生阻塞,为了减轻指令阻塞带来的延迟,本发明中设计了一个指令队列,使得下游模块阻塞时,取指令模块不会立马阻塞,而可以继续运行一段时间。

具体实施时,所述指令队列是一个同步FIFO的结构,每一项存储的内容包括32bit的指令数据、分支预测的结果、取指令时的异常信息、指令对应的程序计数器的值。

如图3所示,所述指令解码模块包括:解码组合逻辑单元和寄存器映射表。

所述解码组合逻辑单元,用于对指令进行解码得到指令的操作信息和目标寄存器操作数,指令的操作信息包括指令类型以及指令类型对应的执行单元的控制信息;所述寄存器映射表,用于查询指令中源寄存器操作数是否已准备好,以及目前源寄存器操作数的值时所保存的位置。

在具体实施中,寄存器映射表负责寄存器重命名机制的运行,寄存器重命名机制如图4所示,寄存器映射表中存储了RISC-V架构中32个通用寄存器在执行指令时的状态,以及在执行时各个寄存器对应的指令重排序队列编号,即该寄存器在重排序队列中的位置。在寄存器重命名时,指令解码模块先从指令中获取对应源寄存器操作数,再查询该源寄存器操作数的最新值目前存放的位置,并将该信息发送给发射模块,发射模块会用这一信息去从指令重排序队列或寄存器堆栈中读取源寄存器操作数的值,若是从指令重排序队列模块中读取,则需要指令重排序队列编号。寄存器最新的值对应的来源有三个,一个是寄存器堆栈,一个是指令重排序队列,还有可能来自执行单元。

在程序执行时,一条指令在进入发射队列前就完成了寄存器重命名,此时指令的运算结果并未写入指令重排序队列中,因此,在重命名阶段后续的指令有可能读取不到操作数具体的数值,也有可能在读取数值时,相关执行单元正好完成运算。为了让一条指令尽早执行,本发明将执行单元的运算结果也前递到了寄存器重命名阶段,在这一阶段,操作数也有可能从后续的执行部件直接获取。此外,各个执行单元在完成相关指令的运行时,会修改该指令目标寄存器操作数在寄存器映射表中的寄存器状态,并将运算结果写入到指令重排序队列中;指令重排序队列在指令提交时,也会修改寄存器映射表中对应寄存器的映射关系。

如图5所示,所述发射模块包括:操作数读取单元、发射队列和写指令排序队列。

所述操作数读取单元用于根据源寄存器操作数从指令重排序队列或寄存器堆栈中读取相应的源寄存器操作数的值,并将每条指令的源寄存器操作数的值、操作信息和目标寄存器操作数发送给发射队列和写指令排序队列;所述发射队列根据发射策略将满足发射要求的指令的源寄存器操作数的值、操作信息和目标寄存器操作数发射到功能执行模块;所述写指令排序队列判断操作数读取单元发送的指令信息是否为写指令,若是写指令则进行存储,这个队列是先入先出,队首的写指令先被发射,新进入的写指令放到队尾。所述发射队列根据写指令排序队列中写指令的顺序按序发射写指令、乱序发射写指令之间读指令。

在具体实施中,发射队列中存放了针对各个执行单元的控制信息,不同的指令可以控制不同的执行单元,控制信息发射的时机由发射队列中的调度器决定。为了尽可能地提升处理器的性能,所述发射策略具体为:

(1)分支指令、算术逻辑运算指令、乘除法指令和控制状态寄存器指令,只要指令所需源寄存器操作数准备好,即读取到源寄存器操作数的值,就将该指令发射出去;

(2)存储器写指令(Store指令)按指令写入发射队列的顺序发射;

(3)夹在两条存储器写指令之间的存储器读指令(Load指令),只要指令所需操作数准备好,就将该指令发射出去;

(4)多条源寄存器操作数都已经准备好的指令,按指令进入发射队列的顺序进行发射。

为了实现发射队列中的指令,在源寄存器操作数准备好的情况下按指令进入发射队列的顺序发送。本发明采用了一种功耗较低的设计方案,即在发射队列的每个存储单元中存储年龄信息,在指令发射调度器中根据指令的年龄和准备状况等信息进行仲裁,而没有采用移动队列中存储单元在队列的位置的方式来实现这一功能。发射队列中的部分指令可能依赖该指令之前指令的计算结果,这些指令就不能被发射出去,当被依赖指令在执行单元中计算完成后会将计算结果传递回发射队列,用于唤醒相关指令。此外,本发明在发射一条指令时,依赖该指令的后续指令也会被唤醒,虽然此时相关操作数并未准备好,但后续指令在发射到对应执行单元时,所需操作数就已经计算完成,对应的执行单元直接将计算结果传递给该指令的执行单元,这样可以提升处理器的性能,让具有相关性的指令执行的更快。

为了实现第(2)、(3)条中存储器读写指令的发射策略,写指令排序队列需要判断发射队列发射的指令是否是写指令,如果不是写指令则正常发射。若是写指令,则判断该写指令是不是写指令排序队列中的队首。若是对首则正常发射,若不是对首则该指令继续等待。若是读指令,则判断该指令的年龄信息是大于写指令排序队列中的队首或小于写指令排序队列中的队首,大于则正常发射,小于则继续等待。

如图1所示,所述功能执行模块包括:分支指令执行单元、算术逻辑运算指令执行单元、乘除法指令执行单元、存储器读写指令执行单元、和控制状态寄存器指令执行单元。

所述逻辑运算单元用于执行加减运算和逻辑运算指令;所述乘除法单元用于执行乘除法指令;所述读写指令执行单元用于执行读写内存指令;所述分支指令执行单元用于执行分支指令;所述控制状态寄存器指令执行单元用于执行状态寄存器读写指令。

如图6所示,存储器读写指令执行单元包含两个访存队列:读请求队列和写请求队列。读请求队列负责调度读内存指令的执行与提交。写请求队列负责调度写内存指令的执行与提交。

存储器读写指令执行单元从发射队列获取存储器读写指令,将存储器读写指令存入对应的访存队列,再将对应的访存队列中的读请求或写请求发送出去,对存储器或外部设备进行读写。

本发明设计了读请求队列和写请求队列,用于存放这些读请求和写请求,以实现存储器读写指令的乱序执行。读写顺序可以有多种实现方案,本发明在复杂度和性能之间进行了折中,选择了写指令顺序访问,写指令之间的读指令乱序访问这一策略,存储器读写指令执行单元将读请求和写请求分别存放在请求队列和请求队列中,并在两个队列中记录了各个读请求和写请求的年龄信息。在读请求队列中,只要队列中的存储单元中的读请求处于就绪状态,且该请求的年龄信息比存储队列队头请求的年龄信息大,读请求队列就会把该读请求发送给对应的缓存接口或外设接口。在写请求队列中,每次都会发送队列的第一个请求,发送的条件是指令重排序队列发出的该请求的退休信号。

读请求和写请求访问的存储空间可能存在相关性,为了提高访存效率,本发明暴露了写请求的地址和数据,读请求在进入读请求队列时,会检查写请求队列中的请求和自身是否有相关性,如果存在多个写请求有相关性,就将离读请求最近的写请求要写入的数据直接作为读请求的结果保存在读请求队列中。实现这一功能对写请求队列的结构设计有特殊的要求,它需要写请求的存储顺序在写请求队列中必须是固定的,图7是存储器读写指令执行单元中写请求队列的数据通路。写请求队列中的每一个请求单元在头部请求发送出去后,都会向头部存储单元方向移动一次,这样可以让所有写请求在队列中按进入队列的顺序进行存储。由于写请求队列不可能一直处于满队列状态,因此,写请求在进入队列时,需要存放到队列中最靠近队列队头的一个存储单元中。

所述指令重排序队列(ROB)用于暂存功能模块的返回值和保证指令的按顺序退休;同时也用于异常处理、更新寄存器映射表、更新寄存器堆栈。

指令重排序队列主要实现原理如下:

(1)向寄存器堆栈和寄存器映射表发送退休请求。ROB按照指令进入发射队列的顺序进行退休,退休的同时需要将对应指令的执行结果写入到寄存器堆栈中,同时还需要去更新寄存器映射表,如果映射表中记录的某个寄存器的ROB标号和要退休的ROB表项的标号相等,那么修改映射表中对应寄存器的类型为ARCH(寄存器堆栈类型)。

如果ROB中的指令有异常或分支预测错误,则暂停取指和解码,由于异常和分支预测错误有可能导致该指令后续的指令也出错,需要将这些指令全部从流水线中flush掉,同时这些指令有可能已经经过了解码,所以可能导致寄存器映射表有错误的更新。本发明采取的恢复方式是,该指令前面的指令正常退休,轮到该异常指令或预测错误指令时,将寄存器映射表中的所有寄存器类型都改为ARCH。

(2)向存储器读写指令执行单元(LSU)发送store指令的退休请求,由于存储读写指令的相关性,store指令除了要按序执行以外(由LSU中的store指令队列来保证),还需要保证其前面的load指令执行完成(WAR),这个顺序是通过ROB来保证的,ROB在轮到一条store指令退休的时候拉高这个请求。

(3)接收功能模块返回的执行结果。功能模块执行完成后需要将结果写回到对应的表项中。寄存器堆栈用于保存指令退休后,RISC-V指令集中规定的32个逻辑寄存器的值。

本发明用两级自适应预测算法来做实现分支预测模块,通过统一保留站的方式实现了乱序单发射、顺序提交的后端流水线,通过分别维持读指令队列和写指令队列的方式来实现存储器读写指令之间的部分乱序。

图8是FRV232功能验证的流程图,从FRV232复位开始,处理器核心每执行完一条指令,验证框架就会先检测处理器核的通用寄存器和系统寄存器是否发生变化,再检测处理器是否发送访存的写请求,如果发生变化,就将处理器核的变化信息和验证模型的正确输出做比对,如果处理器核心的变化结果和验证模型的结果不一致,就说明处理器核的电路设计存在错误。FRV232的验证环境以Modelsim为基本工具,利用验证模型提供的正确运行结果,System Verilog为基本的验证编程语音,实现了图8所示的验证流程。当所有指令运行完毕时,就说明当前的测试用例已经通过,在功能验证阶段,FRV232通过了riscv-test中全部的指令测试用例,以及移植到FRV232上的性能测试用例Dhrystone,通过RISC-V的基础功能用例,一些相对复杂的性能用例,以及访问外设的用例的验证,FRV232功能的正确性得到了有效的保障。

在使用Modelsim进行功能验证后,还需要利用FPGA进一步验证,在FGPA上得到功能验证用例的正确结果,及时发现处理器中的隐藏的错误,初步得到FRV232所需的芯片面积、功耗,并在FPGA上运行性能用例,得到FRV232的性能数据。本发明利用的FPGA平台是Xilinx的NEXYS 4DDR,FPGA芯片的型号是xc7a100tcsg324-1,利用的EDA工具也是由Xilinx提供的Vivado,在利用FPGA进行原型验证时,需要先将处理器中使用到的SRAM替换成FPGA中的BRAM资源,并搭建一个简易的SoC系统,提供基本的外部设备,让FRV232可以正确地在FPGA上运行起来。此外,为了保证原型系统在FPGA上部署的正确性,需要先在vivado平台上做行为级仿真,对已有的验证代码进行了简易的移植。

在经过行为仿真后,利用EDA工具对SOC进行综合,布线并生成用于下载进FPGA芯片的比特文件,在综合后,可以得到FRV232的面积信息,它在NEXYS 4DDR上的面积报告如表1所示。其中查找表资源(LUT)消耗数量为25609,触发器(Flip Flop)消耗数量为11432,f7型和f8型多选器(f7 Mux,f8 Mux)的消耗量分别为1033和130。在时钟为100MHz时序约束下,Vivado对其进行了时序分析,其结果是WNS(Worst Negative Slack)的值为0.01ns,该值为正,表明本发明能在时钟频率为100MHz的约束下稳定运行。在经过行为仿真后,利用EDA工具对SOC进行综合,布线并生成用于下载进FPGA芯片的比特文件,在综合后,可以得到FRV232的面积信息,它在NEXYS 4DDR上的面积报告如表1所示。在时钟为100MHz时序约束下,Vivado对其进行了时序分析,其结果是WNS(Worst Negative Slack)的值为0.01ns,该值为正,表明本设计能在时钟频率为100MHz的约束下稳定运行。

表1FRV232面积开销

最后,将性能用例Dhrystone导入到指令存储器中,并随着综合的比特文件一起下载到FPGA上运行,Dhrystone对FRV232的性能测试结果为1.73DMIPS/MHz,其验证结果和功能验证的结果一致。VexRiscv[16]也是一款支持了RV32IM指令集的开源RISC-V处理器核,它是一个实现了五级流水的标量顺序执行的处理器,和FRV232具有一定的相似性,它的性能数据和FRV232的比对结果如表2所示,其中也同时放置了嵌入式处理器核E201的Dhrystone性能跑分结果。从性能数据来看,同等编译优化情况下,FRV232优于一般的顺序处理器核,能处理对性能有所需求的场景。

表2FRV232和其他开源RISCV处理器的性能比较

以上所述仅为本发明的较佳实施例,并不用以限制本发明的思想,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种基于RISC-V的可重构嵌入式处理器微架构及其工作方法
  • 一种基于RISC-V架构的嵌入式处理器中的程序保护方法及系统
技术分类

06120116212346