基于现场可编程门阵列的处理器内核及其运行方法论文和设计-徐庆嵩

全文摘要

本发明公开一种基于现场可编程门阵列的处理器内核及其运行方法。该处理器内核包括输入输出模块、译码模块和执行模块;输入输出模块用于作为处理器内核统一连接核外设备以传输数据和指令的唯一传输接口,根据核外设备的地址信号与核外设备进行传输操作,核外设备包括指令存储器和数据存储器;译码模块用于对输入输出模块从指令存储器读取的指令进行译码操作,产生译码结果;执行模块用于根据译码结果进行处理操作。本技术方案把输入输出模块作为处理器内核统一连接核外设备以传输数据和指令的唯一传输接口,对输入输出模块进行统一传输逻辑控制,减少逻辑资源的使用,降低内核设计难度,可简化内核结构,降低内核功耗。

主设计要求

1.一种基于现场可编程门阵列的处理器内核,其特征在于,包括输入输出模块、译码模块和执行模块;输入输出模块用于作为处理器内核统一连接核外设备以传输数据和指令的唯一传输接口,根据核外设备的地址信号与核外设备进行传输操作,核外设备包括指令存储器和数据存储器;核外设备统一编号、统一编址;译码模块用于对输入输出模块从指令存储器读取的指令进行译码操作,产生译码结果;执行模块用于根据译码结果进行处理操作;其中,所述输入输出模块包括地址寄存器、数据有效寄存器、输出数据寄存器、数据字节有效寄存器和输入数据寄存器;所述输入输出模块具体用于:当执行输出操作时,在数据有效寄存器中写入的输出数据有效信号为第二值,在地址寄存器中写入核外设备的地址信号,在输出数据寄存器中写入输出数据,在数据字节有效寄存器写入输出数据的字节有效信号,以使地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器中读取输出数据;当执行输入操作时,在数据有效寄存器中写入的输出数据有效信号为第一值,在地址寄存器中写入核外设备的地址信号,以使地址信号对应核外设备把输入指令或输入数据写入输入数据寄存器中。

设计方案

1.一种基于现场可编程门阵列的处理器内核,其特征在于,包括输入输出模块、译码模块和执行模块;

输入输出模块用于作为处理器内核统一连接核外设备以传输数据和指令的唯一传输接口,根据核外设备的地址信号与核外设备进行传输操作,核外设备包括指令存储器和数据存储器;核外设备统一编号、统一编址;

译码模块用于对输入输出模块从指令存储器读取的指令进行译码操作,产生译码结果;

执行模块用于根据译码结果进行处理操作;

其中,所述输入输出模块包括地址寄存器、数据有效寄存器、输出数据寄存器、数据字节有效寄存器和输入数据寄存器;

所述输入输出模块具体用于:

当执行输出操作时,在数据有效寄存器中写入的输出数据有效信号为第二值,在地址寄存器中写入核外设备的地址信号,在输出数据寄存器中写入输出数据,在数据字节有效寄存器写入输出数据的字节有效信号,以使地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器中读取输出数据;

当执行输入操作时,在数据有效寄存器中写入的输出数据有效信号为第一值,在地址寄存器中写入核外设备的地址信号,以使地址信号对应核外设备把输入指令或输入数据写入输入数据寄存器中。

2.根据权利要求1所述的处理器内核,其特征在于,所述处理器内核使用有限状态机控制指令处理流程,有限状态机的状态类型包括读指令状态、译码状态、获取操作数和指令类型状态、执行状态、以及寄存器写回状态;

当有限状态机的状态类型为读指令状态时,控制输入输出模块进行读指令操作;

当有限状态机的状态类型为译码状态时,控制译码模块进行译码操作;

当有限状态机的状态类型为获取操作数和指令类型状态时,控制执行模块进行获取操作数和指令类型操作;

当有限状态机的状态类型为执行状态时,控制执行模块进行执行操作;

当有限状态机的状态类型为寄存器写回状态时,控制执行模块进行寄存器写回操作。

3.根据权利要求1所述的处理器内核,其特征在于,所述执行模块具体用于接收译码模块产生的指令类型、源寄存器编号、目的寄存器编号和立即数,获取源寄存器编号对应通用寄存器中相应位置的值作为源操作数,根据指令类型确定有限状态机的执行状态的子状态,执行该子状态对应的处理操作;

其中,执行状态的子状态包括算术逻辑运算状态、读操作状态、写操作状态、条件分支状态、以及无条件跳转状态,这些子状态分别对应算术逻辑运算操作、读操作、写操作、条件分支操作、以及无条件跳转操作。

4.根据权利要求3所述的处理器内核,其特征在于,所述执行模块包括寄存器组管理单元、寄存器写回单元、算术逻辑单元和输入输出管理单元,寄存器组管理单元设有通用寄存器和程序指针寄存器;

所述执行该子状态对应的处理操作,包括:

当执行算术逻辑运算操作时,把源操作数和立即数传递到算术逻辑单元进行运算,将运算的结果保存到目的寄存器编号对应通用寄存器中;

当执行条件分支操作时,把源操作数和立即数传递到算术逻辑单元进行运算,根据运算的结果确定程序指针下一步的跳转偏移量,读取程序指针寄存器中的程序指针的值,由算术逻辑单元根据程序指针的值和跳转偏移量计算跳转后的程序指针的值,通过寄存器写回单元把跳转后的程序指针的值写回程序指针寄存器中;

当执行无条件跳转操作时,把源操作数或立即数作为程序指针下一步的跳转偏移量,读取程序指针寄存器中的程序指针的值,由算术逻辑单元根据程序指针的值和跳转偏移量计算跳转后的程序指针的值,通过寄存器写回单元把跳转后的程序指针的值写回程序指针寄存器中;

当执行写操作时,通过输入输出管理单元把在输入输出模块的数据有效寄存器中写入的输出数据有效信号置为第二值,在输入输出模块的地址寄存器中写入核外设备的地址信号,在输入输出模块的输出数据寄存器中写入输出数据,在输入输出模块的数据字节有效寄存器写入输出数据的字节有效信号,以使地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器中读取输出数据;把输入输出模块返回的操作结果保存到目的寄存器编号对应通用寄存器中;

当执行读操作时,在输入输出模块的地址寄存器中写入核外设备的地址信号,以使地址信号对应核外设备把输入指令或输入数据写入输入输出模块的输入数据寄存器中;把输入输出模块返回的操作结果保存到目的寄存器编号对应通用寄存器中。

5.根据权利要求1所述的处理器内核,其特征在于,所述处理器内核还包括中断管理模块,中断管理模块包括中断使能寄存器、中断等待寄存器、中断返回地址寄存器和中断空闲状态寄存器;

中断管理模块用于,当收到中断请求信号时,将中断请求信号与中断使能寄存器中的值进行比较,判断中断请求信号是否处于使能状态;若否,屏蔽所述中断请求信号;若是,将中断等待寄存器中所述中断请求信号对应位置的值置为第二值;

若根据中断空闲状态寄存器确认当前没有中断请求信号在处理,在当前指令执行结束后,将当前程序指针保存到中断返回地址寄存器中,将中断空闲状态寄存器的值置为第一值,将执行模块的寄存器组管理单元的通用寄存器中的当前值保存到栈空间,把当前程序指针跳转到中断处理函数入口,执行中断等待寄存器中的值对应的中断函数;在执行中断函数后,通过栈空间的当前值还原中断执行前的现场,将中断空闲状态寄存器的值置为第二值,根据所述中断返回地址寄存器中的当前程序指针跳转到中断执行前的下一条指令。

6.根据权利要求5所述的处理器内核,其特征在于,所述中断管理模块还用于,若根据中断空闲状态寄存器确认当前有中断请求信号在处理,等待当前的中断请求信号处理结束,在处理结束后继续处理所述收到的中断请求信号。

7.根据权利要求5所述的处理器内核,其特征在于,所述中断使能寄存器、中断等待寄存器、中断返回地址寄存器设于执行模块的寄存器组管理单元中,与寄存器组管理单元中的通用寄存器和程序指针寄存器统一编号、统一编址、统一读写控制。

8.根据权利要求1所述的处理器内核,其特征在于:所述核外设备还包括外设寄存器。

9.根据权利要求1至8任意一项所述的处理器内核,其特征在于:所述处理器内核为第五代精简指令集架构的处理器内核。

10.一种基于现场可编程门阵列的处理器内核的运行方法,其特征在于,所述处理器内核包括输入输出模块、译码模块和执行模块;

输入输出模块作为处理器内核统一连接核外设备以传输数据和指令的唯一传输接口,根据核外设备的地址信号与核外设备进行传输操作,核外设备包括指令存储器和数据存储器;核外设备统一编号、统一编址;

译码模块对输入输出模块从指令存储器读取的指令进行译码操作,产生译码结果;

执行模块根据译码结果进行处理操作;

其中,所述输入输出模块包括地址寄存器、数据有效寄存器、输出数据寄存器、数据字节有效寄存器和输入数据寄存器;

所述根据核外设备的地址信号与核外设备进行传输操作,包括:

当执行输出操作时,在数据有效寄存器中写入的输出数据有效信号为第二值,在地址寄存器中写入核外设备的地址信号,在输出数据寄存器中写入输出数据,在数据字节有效寄存器写入输出数据的字节有效信号,以使地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器中读取输出数据;

当执行输入操作时,在数据有效寄存器中写入的输出数据有效信号为第一值,在地址寄存器中写入核外设备的地址信号,以使地址信号对应核外设备把输入指令或输入数据写入输入数据寄存器中。

11.根据权利要求10所述的运行方法,其特征在于,所述处理器内核使用有限状态机控制指令处理流程,有限状态机的状态类型包括读指令状态、译码状态、获取操作数和指令类型状态、执行状态、以及寄存器写回状态;

当有限状态机的状态类型为读指令状态时,控制输入输出模块进行读指令操作;

当有限状态机的状态类型为译码状态时,控制译码模块进行译码操作;

当有限状态机的状态类型为获取操作数和指令类型状态时,控制执行模块进行获取操作数和指令类型操作;

当有限状态机的状态类型为执行状态时,控制执行模块进行执行操作;

当有限状态机的状态类型为寄存器写回状态时,控制执行模块进行寄存器写回操作。

12.根据权利要求10所述的运行方法,其特征在于,所述执行模块根据译码结果进行处理操作,包括:执行模块接收译码模块产生的指令类型、源寄存器编号、目的寄存器编号和立即数,获取源寄存器编号对应通用寄存器中相应位置的值作为源操作数,根据指令类型确定有限状态机的执行状态的子状态,执行该子状态对应的处理操作;

其中,执行状态的子状态包括算术逻辑运算状态、读操作状态、写操作状态、条件分支状态、以及无条件跳转状态,这些子状态分别对应算术逻辑运算操作、读操作、写操作、条件分支操作、以及无条件跳转操作。

13.根据权利要求12所述的运行方法,其特征在于,所述执行模块包括寄存器组管理单元、寄存器写回单元、算术逻辑单元和输入输出管理单元,寄存器组管理单元设有通用寄存器和程序指针寄存器;

所述执行该子状态对应的处理操作,包括:

当执行算术逻辑运算操作时,把源操作数和立即数传递到算术逻辑单元进行运算,将运算的结果保存到目的寄存器编号对应通用寄存器中;

当执行条件分支操作时,把源操作数和立即数传递到算术逻辑单元进行运算,根据运算的结果确定程序指针下一步的跳转偏移量,读取程序指针寄存器中的程序指针的值,由算术逻辑单元根据程序指针的值和跳转偏移量计算跳转后的程序指针的值,通过寄存器写回单元把跳转后的程序指针的值写回程序指针寄存器中;

当执行无条件跳转操作时,把源操作数或立即数作为程序指针下一步的跳转偏移量,读取程序指针寄存器中的程序指针的值,由算术逻辑单元根据程序指针的值和跳转偏移量计算跳转后的程序指针的值,通过寄存器写回单元把跳转后的程序指针的值写回程序指针寄存器中;

当执行写操作时,通过输入输出管理单元把在输入输出模块的数据有效寄存器中写入的输出数据有效信号置为第二值,在输入输出模块的地址寄存器中写入核外设备的地址信号,在输入输出模块的输出数据寄存器中写入输出数据,在输入输出模块的数据字节有效寄存器写入输出数据的字节有效信号,以使地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器中读取输出数据;把输入输出模块返回的操作结果保存到目的寄存器编号对应通用寄存器中;

当执行读操作时,在输入输出模块的地址寄存器中写入核外设备的地址信号,以使地址信号对应核外设备把输入指令或输入数据写入输入输出模块的输入数据寄存器中;把输入输出模块返回的操作结果保存到目的寄存器编号对应通用寄存器中。

14.根据权利要求10所述的运行方法,其特征在于,所述处理器内核还包括中断管理模块,中断管理模块包括中断使能寄存器、中断等待寄存器、中断返回地址寄存器和中断空闲状态寄存器;

所述运行方法还包括:

当收到中断请求信号时,将中断请求信号与中断使能寄存器中的值进行比较,判断中断请求信号是否处于使能状态;若否,屏蔽所述中断请求信号;若是,将中断等待寄存器中所述中断请求信号对应位置的值置为第二值;

若根据中断空闲状态寄存器确认当前没有中断请求信号在处理,在当前指令执行结束后,将当前程序指针保存到中断返回地址寄存器中,将中断空闲状态寄存器的值置为第一值,将执行模块的寄存器组管理单元的通用寄存器中的当前值保存到栈空间,把当前程序指针跳转到中断处理函数入口,执行中断等待寄存器中的值对应的中断函数;在执行中断函数后,通过栈空间的当前值还原中断执行前的现场,将中断空闲状态寄存器的值置为第二值,根据所述中断返回地址寄存器中的当前程序指针跳转到中断执行前的下一条指令。

15.根据权利要求14所述的运行方法,其特征在于,所述将中断等待寄存器中所述中断请求信号对应位置的值置为第二值之后,还包括:

若根据中断空闲状态寄存器确认当前有中断请求信号在处理,等待当前的中断请求信号处理结束,在处理结束后继续处理所述收到的中断请求信号。

16.根据权利要求14所述的运行方法,其特征在于,所述中断使能寄存器、中断等待寄存器、中断返回地址寄存器设于执行模块的寄存器组管理单元中,与寄存器组管理单元中的通用寄存器和程序指针寄存器统一编号、统一编址、统一读写控制。

17.根据权利要求10所述的运行方法,其特征在于:所述核外设备还包括外设寄存器。

18.根据权利要求10至17任意一项所述的运行方法,其特征在于:所述处理器内核为第五代精简指令集架构的处理器内核。

设计说明书

技术领域

本发明涉及处理器内核技术领域,尤其涉及一种基于现场可编程门阵列的处理器内核及其运行方法。

背景技术

随着现场可编程门阵列(Field-Programmable Gate Array,FPGA)技术的快速发展,基于FPGA的处理器内核应用越来越广泛,与传统处理器内核相比,基于FPGA的处理器内核具有良好的扩展性,设计人员可根据不同应用场景自由扩展处理器内核的功能,有利于快速设计和重用。

现有的基于FPGA的处理器内核包括取指令模块,数据读写模块,译码模块和执行模块。取指令模块读取核外的指令存储器中的指令,把指令发送到译码模块;数据读写模块读取核外的数据存储器中的数据,把数据写入通用寄存器中,或读取通用寄存器中的数据,把数据写入核外的数据存储器设备中;执行模块根据译码模块的译码结果进行处理操作。现有技术具有取指令模块和数据读写模块两个传输接口,需设计两套传输逻辑分别控制取指令模块和数据读写模块,这需要使用较多逻辑资源,内核设计难度较大。

发明内容

本发明实施例提供一种基于现场可编程门阵列的处理器内核及其运行方法,能够减少逻辑资源的使用,降低内核设计难度。

本发明实施例采用以下技术方案:

第一方面,本发明实施例提供一种基于现场可编程门阵列的处理器内核,包括输入输出模块、译码模块和执行模块;输入输出模块用于作为处理器内核统一连接核外设备以传输数据和指令的唯一传输接口,根据核外设备的地址信号与核外设备进行传输操作,核外设备包括指令存储器和数据存储器;核外设备统一编号、统一编址;译码模块用于对输入输出模块从指令存储器读取的指令进行译码操作,产生译码结果;执行模块用于根据译码结果进行处理操作。

其中,输入输出模块包括地址寄存器、数据有效寄存器、输出数据寄存器、数据字节有效寄存器和输入数据寄存器;

输入输出模块具体用于:

当执行输出操作时,在数据有效寄存器中写入的输出数据有效信号为第二值,在地址寄存器中写入核外设备的地址信号,在输出数据寄存器中写入输出数据,在数据字节有效寄存器写入输出数据的字节有效信号,以使地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器中读取输出数据;

当执行输入操作时,在数据有效寄存器中写入的输出数据有效信号为第一值,在地址寄存器中写入核外设备的地址信号,以使地址信号对应核外设备把输入指令或输入数据写入输入数据寄存器中。

作为可选的实施方式,处理器内核使用有限状态机控制指令处理流程,有限状态机的状态类型包括读指令状态、译码状态、获取操作数和指令类型状态、执行状态、以及寄存器写回状态;

当有限状态机的状态类型为读指令状态时,控制输入输出模块进行读指令操作;当有限状态机的状态类型为译码状态时,控制译码模块进行译码操作;当有限状态机的状态类型为获取操作数和指令类型状态时,控制执行模块进行获取操作数和指令类型操作;当有限状态机的状态类型为执行状态时,控制执行模块进行执行操作;当有限状态机的状态类型为寄存器写回状态时,控制执行模块进行寄存器写回操作。

作为可选的实施方式,执行模块具体用于接收译码模块产生的指令类型、源寄存器编号、目的寄存器编号和立即数,获取源寄存器编号对应通用寄存器中相应位置的值作为源操作数,根据指令类型确定有限状态机的执行状态的子状态,执行该子状态对应的处理操作;其中,执行状态的子状态包括算术逻辑运算状态、读操作状态、写操作状态、条件分支状态、以及无条件跳转状态,这些子状态分别对应算术逻辑运算操作、读操作、写操作、条件分支操作、以及无条件跳转操作。

作为可选的实施方式,执行模块包括寄存器组管理单元、寄存器写回单元、算术逻辑单元和输入输出管理单元,寄存器组管理单元设有通用寄存器和程序指针寄存器;

执行该子状态对应的处理操作,包括:

当执行算术逻辑运算操作时,把源操作数和立即数传递到算术逻辑单元进行运算,将运算的结果保存到目的寄存器编号对应通用寄存器中;

当执行条件分支操作时,把源操作数和立即数传递到算术逻辑单元进行运算,根据运算的结果确定程序指针下一步的跳转偏移量,读取程序指针寄存器中的程序指针的值,由算术逻辑单元根据程序指针的值和跳转偏移量计算跳转后的程序指针的值,通过寄存器写回单元把跳转后的程序指针的值写回程序指针寄存器中;

当执行无条件跳转操作时,把源操作数或立即数作为程序指针下一步的跳转偏移量,读取程序指针寄存器中的程序指针的值,由算术逻辑单元根据程序指针的值和跳转偏移量计算跳转后的程序指针的值,通过寄存器写回单元把跳转后的程序指针的值写回程序指针寄存器中;

当执行写操作时,通过输入输出管理单元把在输入输出模块的数据有效寄存器中写入的输出数据有效信号置为第二值,在输入输出模块的地址寄存器中写入核外设备的地址信号,在输入输出模块的输出数据寄存器中写入输出数据,在输入输出模块的数据字节有效寄存器写入输出数据的字节有效信号,以使地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器中读取输出数据;把输入输出模块返回的操作结果保存到目的寄存器编号对应通用寄存器中;

当执行读操作时,在输入输出模块的地址寄存器中写入核外设备的地址信号,以使地址信号对应核外设备把输入指令或输入数据写入输入输出模块的输入数据寄存器中;把输入输出模块返回的操作结果保存到目的寄存器编号对应通用寄存器中。

作为可选的实施方式,处理器内核还包括中断管理模块,中断管理模块包括中断使能寄存器、中断等待寄存器、中断返回地址寄存器和中断空闲状态寄存器;

中断管理模块用于,当收到中断请求信号时,将中断请求信号与中断使能寄存器中的值进行比较,判断中断请求信号是否处于使能状态;若否,屏蔽中断请求信号;若是,将中断等待寄存器中断请求信号对应位置的值置为第二值;

若根据中断空闲状态寄存器确认当前没有中断请求信号在处理,在当前指令执行结束后,将当前程序指针保存到中断返回地址寄存器中,将中断空闲状态寄存器的值置为第一值,将执行模块的寄存器组管理单元的通用寄存器中的当前值保存到栈空间,把当前程序指针跳转到中断处理函数入口,执行中断等待寄存器中的值对应的中断函数;在执行中断函数后,通过栈空间的当前值还原中断执行前的现场,将中断空闲状态寄存器的值置为第二值,根据中断返回地址寄存器中的当前程序指针跳转到中断执行前的下一条指令。

作为可选的实施方式,中断管理模块还用于,若根据中断空闲状态寄存器确认当前有中断请求信号在处理,等待当前的中断请求信号处理结束,在处理结束后继续处理收到的中断请求信号。

作为可选的实施方式,中断使能寄存器、中断等待寄存器、中断返回地址寄存器设于执行模块的寄存器组管理单元中,与寄存器组管理单元中的通用寄存器和程序指针寄存器统一编号、统一编址、统一读写控制。

作为可选的实施方式,核外设备还包括外设寄存器,外设寄存器、指令存储器和数据存储器统一编号、统一编址。

作为可选的实施方式,处理器内核为第五代精简指令集架构的处理器内核。

第二方面,本发明实施例提供一种基于现场可编程门阵列的处理器内核的运行方法,处理器内核包括输入输出模块、译码模块和执行模块;

输入输出模块作为处理器内核统一连接核外设备以传输数据和指令的唯一传输接口,根据核外设备的地址信号与核外设备进行传输操作,核外设备包括指令存储器和数据存储器;核外设备统一编号、统一编址;译码模块对输入输出模块从指令存储器读取的指令进行译码操作,产生译码结果;执行模块根据译码结果进行处理操作。

作为可选的实施方式,输入输出模块包括地址寄存器、数据有效寄存器、输出数据寄存器、数据字节有效寄存器和输入数据寄存器;

根据核外设备的地址信号与核外设备进行传输操作,包括:

当执行输出操作时,在数据有效寄存器中写入的输出数据有效信号为第二值,在地址寄存器中写入核外设备的地址信号,在输出数据寄存器中写入输出数据,在数据字节有效寄存器写入输出数据的字节有效信号,以使地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器中读取输出数据;

当执行输入操作时,在数据有效寄存器中写入的输出数据有效信号为第一值,在地址寄存器中写入核外设备的地址信号,以使地址信号对应核外设备把输入指令或输入数据写入输入数据寄存器中。其中,输入操作包括对指令存储器的读指令操作或对数据存储器的读数据操作。

作为可选的实施方式,处理器内核使用有限状态机控制指令处理流程,有限状态机的状态类型包括读指令状态、译码状态、获取操作数和指令类型状态、执行状态、以及寄存器写回状态;

当有限状态机的状态类型为读指令状态时,控制输入输出模块进行读指令操作;

当有限状态机的状态类型为译码状态时,控制译码模块进行译码操作;

当有限状态机的状态类型为获取操作数和指令类型状态时,控制执行模块进行获取操作数和指令类型操作;

当有限状态机的状态类型为执行状态时,控制执行模块进行执行操作;

当有限状态机的状态类型为寄存器写回状态时,控制执行模块进行寄存器写回操作。

作为可选的实施方式,执行模块根据译码结果进行处理操作,包括:执行模块接收译码模块产生的指令类型、源寄存器编号、目的寄存器编号和立即数,获取源寄存器编号对应通用寄存器中相应位置的值作为源操作数,根据指令类型确定有限状态机的执行状态的子状态,执行该子状态对应的处理操作;

其中,执行状态的子状态包括算术逻辑运算状态、读操作状态、写操作状态、条件分支状态、以及无条件跳转状态,这些子状态分别对应算术逻辑运算操作、读操作、写操作、条件分支操作、以及无条件跳转操作。

作为可选的实施方式,执行模块包括寄存器组管理单元、寄存器写回单元、算术逻辑单元和输入输出管理单元,寄存器组管理单元设有通用寄存器和程序指针寄存器;

执行该子状态对应的处理操作,包括:

当执行算术逻辑运算操作时,把源操作数和立即数传递到算术逻辑单元进行运算,将运算的结果保存到目的寄存器编号对应通用寄存器中;

当执行条件分支操作时,把源操作数和立即数传递到算术逻辑单元进行运算,根据运算的结果确定程序指针下一步的跳转偏移量,读取程序指针寄存器中的程序指针的值,由算术逻辑单元根据程序指针的值和跳转偏移量计算跳转后的程序指针的值,通过寄存器写回单元把跳转后的程序指针的值写回程序指针寄存器中;

当执行无条件跳转操作时,把源操作数或立即数作为程序指针下一步的跳转偏移量,读取程序指针寄存器中的程序指针的值,由算术逻辑单元根据程序指针的值和跳转偏移量计算跳转后的程序指针的值,通过寄存器写回单元把跳转后的程序指针的值写回程序指针寄存器中;

当执行写操作时,通过输入输出管理单元把在输入输出模块的数据有效寄存器中写入的输出数据有效信号置为第二值,在输入输出模块的地址寄存器中写入核外设备的地址信号,在输入输出模块的输出数据寄存器中写入输出数据,在输入输出模块的数据字节有效寄存器写入输出数据的字节有效信号,以使地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器中读取输出数据;把输入输出模块返回的操作结果保存到目的寄存器编号对应通用寄存器中;

当执行读操作时,在输入输出模块的地址寄存器中写入核外设备的地址信号,以使地址信号对应核外设备把输入指令或输入数据写入输入输出模块的输入数据寄存器中;把输入输出模块返回的操作结果保存到目的寄存器编号对应通用寄存器中。

作为可选的实施方式,处理器内核还包括中断管理模块,中断管理模块包括中断使能寄存器、中断等待寄存器、中断返回地址寄存器和中断空闲状态寄存器;

运行方法还包括:

当收到中断请求信号时,将中断请求信号与中断使能寄存器中的值进行比较,判断中断请求信号是否处于使能状态;若否,屏蔽中断请求信号;若是,将中断等待寄存器中断请求信号对应位置的值置为第二值;

若根据中断空闲状态寄存器确认当前没有中断请求信号在处理,在当前指令执行结束后,将当前程序指针保存到中断返回地址寄存器中,将中断空闲状态寄存器的值置为第一值,将执行模块的寄存器组管理单元的通用寄存器中的当前值保存到栈空间,把当前程序指针跳转到中断处理函数入口,执行中断等待寄存器中的值对应的中断函数;在执行中断函数后,通过栈空间的当前值还原中断执行前的现场,将中断空闲状态寄存器的值置为第二值,根据中断返回地址寄存器中的当前程序指针跳转到中断执行前的下一条指令。

作为可选的实施方式,将中断等待寄存器中断请求信号对应位置的值置为第二值之后,还包括:

若根据中断空闲状态寄存器确认当前有中断请求信号在处理,等待当前的中断请求信号处理结束,在处理结束后继续处理收到的中断请求信号。

作为可选的实施方式,中断使能寄存器、中断等待寄存器、中断返回地址寄存器设于执行模块的寄存器组管理单元中,与寄存器组管理单元中的通用寄存器和程序指针寄存器统一编号、统一编址、统一读写控制。

作为可选的实施方式,核外设备还包括外设寄存器,外设寄存器、指令存储器和数据存储器统一编号、统一编址。

作为可选的实施方式,处理器内核为第五代精简指令集架构的处理器内核。

与现有技术相比,本发明实施例具有以下有益效果:

本技术方案中,把输入输出模块作为处理器内核统一连接核外设备以传输数据和指令的唯一传输接口,连接包括指令存储器和数据存储器在内的核外设备,根据地址信号与核外设备进行读取指令、读写数据等传输操作,处理器内核对输入输出模块进行统一传输逻辑控制,减少逻辑资源的使用,降低内核设计难度;而且,对外只有唯一传输接口,可简化内核结构,优化内核面积,降低内核功耗。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例公开的处理器内核示意图;

图2是本发明实施例公开的输入输出模块示意图;

图3是本发明实施例公开的译码模块示意图;

图4是本发明实施例公开的有限状态机状态转换示意图;

图5是本发明实施例公开的执行模块示意图;

图6是本发明实施例公开的中断管理模块示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

基于FPGA的处理器内核是处理器最重要的组成部分,可由单晶硅制成,用来处理各种操作。

参见图1,是本发明实施例公开的处理器内核示意图。本实施例的基于现场可编程门阵列的处理器内核,包括输入输出模块10、译码模块20和执行模块30;输入输出模块10用于作为处理器内核统一连接核外设备以传输数据和指令的唯一传输接口,根据核外设备的地址信号与核外设备进行传输操作,核外设备包括指令存储器和数据存储器。该传输接口统一连接核外设备,传输由执行模块30处理的各种数据和指令;该传输接口不转发中断相关信号,中断相关信号由中断管理模块40处理。预先对核外设备设置地址信号,输入输出模块10根据该地址信号,就能与地址信号的核外设备进行交互。译码模块20用于对输入输出模块10从指令存储器读取的指令进行译码操作,产生译码结果。执行模块30用于根据译码结果进行处理操作。执行模块30对各种译码结果进行与该译码结果对应的处理操作;除此之外,执行模块30还可以进行各类操作。

本实施例的处理器内核可以包括中断管理模块40;作为另一可选方式,处理器内核可不包括中断管理模块40,中断管理模块40可以设置在处理器内核的外部,中断管理模块40从核外向核内的程序指针寄存器306和执行模块30发送中断相关信号。中断管理模块40用于处理中断相关信号,其可作为中断接口;若中断管理模块40从核外向核内发送中断相关信号,则核内可设置接收该中断相关信号的中断接口。本发明实施例的执行模块30包括通用寄存器305和程序指针寄存器306,在执行模块30的寄存器组管理单元301中设置通用寄存器305和程序指针寄存器306;作为另一可选方式,执行模块30可不包括通用寄存器305和\/或程序指针寄存器306,他们可作为处理器内核中的独立模块。

核外设备指处理器内核的外部设备,可包括在同一个处理器内部且在该处理器内核之外的外部设备、或在处理器外部的外部设备。比如,外部设备包括但不限于:指令存储器、数据存储器、外设寄存器、音频处理器、无线处理器等;此外,当本技术方案应用于多核处理器时,外部设备还可包括在同一处理器内部的与本处理器内核进行数据和\/或指令交互的其他处理器内核。某些核外设备可以由与本处理器内核所属处理器控制,某些核外设备也可以由其他处理器控制。

作为一种可选方式,指令存储器和数据存储器统一编号、统一编址。作为一种可选方式,核外设备还包括外设寄存器,外设寄存器、指令存储器和数据存储器统一编号、统一编址。现有技术中有多套传输逻辑控制多个模块分别连接不同的核外设备,各套逻辑各自独立运行,故不要求核外设备统一编号、统一编址。而本技术方案的输入输出模块10统一连接核外设备,故核外设备统一编号、统一编址,处理器内核实现高效管理核外设备,提高运行效率。

输入输出模块10作为处理器内核统一连接核外设备以传输数据和指令的唯一传输接口,该传输接口传输数据和指令(或称信号),包括从核外的指令存储器中读取指令(或称程序指令),对核外的数据存储器读、写数据(或称运算数据)。需要说明的是,可以把程序指令作为特殊数据,把运算数据作为普通数据,他们均属于存储在存储器相关设备的二进制信息,即把指令存储器中的指令和数据存储器的数据,统称为数据;则输入输出模块10作为处理器内核统一连接核外设备以传输数据和指令的唯一传输接口,可以表述为,输入输出模块10作为处理器内核统一连接核外设备以传输数据的唯一数据传输接口;处理器内核在不同阶段处理的数据,该数据可能包括运算数据和\/或程序指令,处理器内核不同阶段处理的数据是运算数据还是程序指令,这属于现有技术,或本领域技术人员根据现有技术可以得出。

本实施例中,处理器内核可为第五代精简指令集(Reduced Instruction SetComputing FIVE,RISC-V)架构的处理器内核,即处理器内核应用RISC-V架构。RISC-V架构是一种基于精简指令集的开源指令集架构,具有架构简单、模块化设计、易于移植等特点,RISC-V的指令集对外开源,任何人、任何组织可以自由使用RISC-V的指令集,用于RISC-V架构的处理器内核设计和软件开发。本实施例中,处理器内核结合RISC-V架构简单、完全开源的特点,和FPGA可编程、易扩展的特点,具有结构简单、面积小、功耗低、易扩展、易移植等优点,满足各种轻量化、深度嵌入的数据处理需求。

此外,本发明实施例的处理器内核还可应用除第五代外的其他代的精简指令集架构处理器内核。作为一种可选方式,本发明实施例的处理器内核亦可应用复杂指令集(Complex Instruction Set Computing,CISC)架构、显式并行指令集(ExplicitlyParallel Instruction Computing,EPIC)架构、超长指令字指令集(VLIW)架构等其他架构。

作为一个实施方式,处理器内核的运行方法包括:输入输出模块10作为处理器内核统一连接核外设备以传输数据和指令的唯一传输接口,根据核外设备的地址信号与核外设备进行传输操作,核外设备包括指令存储器和数据存储器;译码模块20对输入输出模块10从指令存储器读取的指令进行译码操作,产生译码结果;执行模块30根据译码结果进行处理操作。

上述运行方法的实施方式中,输入输出模块10作为处理器内核统一连接核外设备以传输数据和指令的唯一传输接口,表示本处理器内核只有输入输出模块这个传输接口,可以统一连接核外设备,与核外设备传输数据和指令。根据核外设备的地址信号与核外设备进行传输操作,可以为,预先对核外设备设置地址信号,根据该地址信号就能与地址信号的核外设备进行交互;根据处理器内核在不同的工作阶段,从不同或相同的核外设备中,传输该工作阶段对应的数据和\/或指令,包括但不限于,从核外的指令存储器读取指令,对核外的数据存储器读、写数据。指令存储器和数据存储器可以由独立的两个存储器实现,也可以由同一个具有指令和数据存储功能的存储器实现。执行模块除用于根据译码结果进行处理操作外,还可以用于各类操作。上述运行方法在不同工作阶段,通过输入输出模块,可以仅从指令存储器读取指令,也可以在读取的指令之前或之后,从数据存储器读取数据、或把数据写入数据存储器,这属于现有技术,在此不做赘述;本发明实施例并不限制何时使用输入输出模块传输数据或指令。

处理器内核只有输入输出模块10这个统一连接核外设备以传输数据和指令的唯一传输接口,只需对输入输出模块10进行统一传输逻辑控制,相对于现有技术具有多个不同功能的传输接口而需设计多套传输逻辑,本技术方案只需设计一套传输逻辑,减少FPGA逻辑资源的使用,降低内核设计难度;对外只有唯一传输接口,可简化内核结构,使得内核布局简单,优化内核面积,使得内核面积变小,减小输入功率,使得降低内核功耗。

需要说明的是,本发明实施例对多个模块、单元、寄存器定义了名称,在实施本技术方案时,本领域普通技术人员可对该名称进行修改;只要修改名称后的模块、单元、寄存器的实现功能与本发明实施例的模块、单元、寄存器的实现功能相同或等同,均属于本发明保护的范围。

参见图2,是本发明实施例公开的输入输出模块10示意图。本实施例中,输入输出模块10包括地址寄存器101、数据有效寄存器102、输出数据寄存器103、数据字节有效寄存器104和输入数据寄存器105。

输入输出模块10具体用于:当执行输出操作时,在数据有效寄存器102中写入的输出数据有效信号为第二值,在地址寄存器101中写入核外设备的地址信号,在输出数据寄存器103中写入输出数据,在数据字节有效寄存器104写入输出数据的字节有效信号,以使地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器103中读取输出数据;当执行输入操作时,在数据有效寄存器102中写入的输出数据有效信号为第一值,在地址寄存器101中写入核外设备的地址信号,以使地址信号对应核外设备把输入指令或输入数据写入输入数据寄存器105中。其中,输入操作包括对指令存储器的读指令操作或对数据存储器的读数据操作。这里的第二值为1,第一值为0;当然,作为一个可选实施方式,可根据实际应用场景把第二值、第一值置为其他的值,比如,第二值为0,第一值为1。

当输出数据有效信号为第二值,通知地址信号对应核外设备可以从输出数据寄存器103中读取输出数据;核外设备在读取输出数据时,根据输出数据的字节有效信号进行读取,例如,输出数据的字节有效信号为1,读取输出数据的对应字节,输出数据的字节有效信号为0,不读取输出数据的对应字节。当输出数据有效信号为第一值,地址信号对应核外设备可以把输入数据写入输入数据寄存器105中。

上述地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器中读取输出数据,可以为,地址信号对应核外设备,根据数据字节有效寄存器中的输出数据的字节有效信号,在从输出数据寄存器中,读取输出数据。

上述地址信号对应核外设备把输入指令或输入数据写入输入数据寄存器中,可以为,输入操作为对指令存储器的读指令操作时,地址信号对应指令存储器把输入指令写入输入数据寄存器中,输入操作为对数据存储器的读数据操作时,地址信号对应数据存储器把输入数据写入输入数据寄存器中;除此之外,还可以为,输入操作为对外设寄存器的读数据操作时,地址信号对应外设寄存器把输入数据写入输入数据寄存器中。

上述输入操作包括但不限于对指令存储器的读指令操作或对数据存储器的读数据操作;输入操作还可以包括对其他类型核外设备、比如对外设寄存器的读数据操作等。当执行每一次输入操作时,这一次输入操作可以是读指令操作或读数据操作。在执行若干次输入操作的过程中,可依次执行若干个对指令存储器的读指令操作,或依次执行若干个对数据存储器的读数据操作,或交叉执行若干个读指令操作与读数据操作。

输入输出模块10的各寄存器具有如下功能,地址寄存器101用于存储核外设备的地址信号;数据有效寄存器102用于存储输出数据有效信号;输出数据寄存器103用于存储输出数据;数据字节有效寄存器104用于存储输出数据的字节有效信号;输入数据寄存器105用于存储核外设备的输入数据。

其中,在数据有效寄存器102中写入的输出数据有效信号为第二值,具体的,可以在执行输出操作时,在数据有效寄存器102中写入为第二值的输出数据有效信号;也可以在执行输出操作前,在数据有效寄存器102中写入为第二值的输出数据有效信号。在数据有效寄存器102中写入的输出数据有效信号为第一值,具体的,可以在执行输入操作时,在数据有效寄存器102中写入为第一值的输出数据有效信号,也可以在执行输入操作前,在数据有效寄存器102中写入为第一值的输出数据有效信号。

本实施例中,在输出数据寄存器103中写入输出数据,在数据字节有效寄存器104写入输出数据的字节有效信号,以使地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器103中读取输出数据。当字节有效信号为有效,核外设备读取该字节有效信号对应的输出数据的字节,当字节有效信号为无效,核外设备不读取该字节有效信号对应的输出数据的字节;输出数据的字节有效信号为核外设备提供有效的屏蔽\/使能信息,避免可能发生的误写入操作,保证操作的正确率。

本实施例应用32位的RISC-V指令,输入输出模块10为32位的传输接口;当然,可根据实际应用场景设置输入输出模块10的位宽,模块接口信号对应改变。输入输出模块10根据地址信号确定当前交互的核外设备,若与指令存储器交互,则把读取指令发送给译码模块20,若与数据存储器交互,则在数据存储器与执行模块30之间传输数据。

本实施例的输入输出模块10接口信号如下:

地址信号:位宽为32,为核外存储设备、处理器外部设备等作为目标的核外设备提供读写地址信号。

输出数据有效信号:位宽为1,可以为,在输出操作的输出数据和地址信号准备好后,输出数据有效信号置为1,通知作为目标的地址信号对应核外设备可以读取输出数据。输出操作结束后,作为一种实施方式,输出结束后,输出数据有效信号自动置0;作为另一实施方式,在输入数据时,把输出数据有效信号置0。有效信号置0时,通知核外设备可以执行输入操作。

输出数据信号:位宽为32,是需要写入作为目标的核外设备的输出数据。

输出数据的字节有效信号:位宽为4,输出信号的32位数据分为4个字节,输出数据的字节有效信号的4个位分别用来指示这4个字节的有效性,每1位对应输出数据的1个字节。当输出数据的字节有效信号的某一位为1时,表示其对应输出数据的字节为有效数据,核外设备需要读取输出数据信号中的该字节;当输出数据的字节有效信号的某一位为0时,表示其对应输出数据的字节为无效信号,核外设备不需要读取输出数据信号中的该字节。

输入数据有效信号:位宽为1,当作为目标的核外设备准备好待输入数据后,会发送一个信号,将输入数据有效信号置1,通知处理器内核读取输入数据寄存器105中的数据。

输入数据信号:位宽为32,是作为目标的核外设备发送的输入数据。

作为一个实施方式,输入输出模块10根据核外设备的地址信号与核外设备进行传输操作,包括:当执行输出操作时,在数据有效寄存器102中写入的输出数据有效信号为第二值,在地址寄存器101中写入核外设备的地址信号,在输出数据寄存器103中写入输出数据,在数据字节有效寄存器104写入输出数据的字节有效信号,以使地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器103中读取输出数据;当执行输入操作时,在数据有效寄存器102中写入的输出数据有效信号为第一值,在地址寄存器101中写入核外设备的地址信号,以使地址信号对应核外设备把输入指令或输入数据写入输入数据寄存器105中。其中,输入操作包括对指令存储器的读指令操作或对数据存储器的读数据操作。

本实施例通过设置数据有效寄存器102的值,利用地址寄存器101、数据有效寄存器102、输出数据寄存器103、数据字节有效寄存器104和输入数据寄存器105的配合,控制在某一时刻执行输出或输入操作,采用时分复用的方式对核外设备进行交互,包括对指令存储器进行读取指令、对数据存储器进行读写数据,还可以对外设寄存器进行读写数据,显著降低逻辑资源占用量,优化内核面积。

参见图3,是本发明实施例公开的译码模块20示意图。译码模块20包括输入数据寄存器201、指令类型表和立即数译码逻辑模块202,译码模块20用于接收通过输入输出模块10从指令存储器读取的指令,产生指令类型、源寄存器编号、目的寄存器编号和立即数等译码结果,并把译码结果发送到执行模块30。

本实施例中使用RISC-V的指令集,译码模块20按照RISC-V的指令集编码规则,对读取的指令进行译码操作,先按照编码规则对读取的32位指令进行分割,然后根据操作码的内容确定每个码段的含义和译码方式,最后进行译码和重新组合,从而提取出指令类型、源寄存器编号、目的寄存器编号和立即数等信息。译码模块20和输入输出模块10均可以有自己独立的输入数据寄存器。

参见图4,是本发明实施例公开的有限状态机状态转换示意图。本实施例的处理器内核使用有限状态机控制指令处理流程,有限状态机的状态类型包括读指令状态、译码状态、获取操作数和指令类型状态、执行状态、以及寄存器写回状态;当有限状态机的状态类型为读指令状态时,控制输入输出模块10进行读指令操作;当有限状态机的状态类型为译码状态时,控制译码模块20进行译码操作;当有限状态机的状态类型为获取操作数和指令类型状态时,控制执行模块30进行获取操作数和指令类型操作,该操作可获取操作数、指令类型,还可以获取源寄存器编号、目的寄存器编号等信息;当有限状态机的状态类型为执行状态时,控制执行模块30进行执行操作;当有限状态机的状态类型为寄存器写回状态时,控制执行模块30进行寄存器写回操作。

本实施例基于有限状态机的结构,使用硬件描述语言设计实现。有限状态机分为五个状态类型:读指令状态、译码状态、获取操作数和指令类型状态、执行状态、寄存器写回状态;其中读指令状态由输入输出模块10执行,译码状态由译码模块20执行,获取操作数和指令类型、执行、寄存器写回这三个状态由执行模块30执行;这种架构避免在模块之间使用同步逻辑功能模块,可以提高模块之间的耦合程度,从而显著减少处理器内核的逻辑资源使用量。

参见图5,是本发明实施例公开的执行模块30示意图。本实施例的执行模块30包括寄存器组管理单元301、寄存器写回单元302、算术逻辑单元303和输入输出管理单元304,寄存器组管理单元301设有通用寄存器305和程序指针寄存器306。

执行模块30具体用于接收译码模块20产生的指令类型、源寄存器编号、目的寄存器编号和立即数,获取源寄存器编号对应通用寄存器305中相应位置的值作为源操作数,根据指令类型确定有限状态机的执行状态的子状态,执行该子状态对应的处理操作;其中,执行状态的子状态包括算术逻辑运算状态、读操作状态、写操作状态、条件分支状态、以及无条件跳转状态,这些子状态分别对应算术逻辑运算操作、读操作、写操作、条件分支操作、以及无条件跳转操作。

作为一个可选实施方式,执行该子状态对应的处理操作,包括:

当执行算术逻辑运算操作时,把源操作数和立即数传递到算术逻辑单元303进行运算,将运算的结果保存到目的寄存器编号对应通用寄存器305中;

当执行条件分支操作时,把源操作数和立即数传递到算术逻辑单元303进行运算,根据运算的结果确定程序指针下一步的跳转偏移量,读取程序指针寄存器306中的程序指针的值,由算术逻辑单元303根据程序指针的值和跳转偏移量计算跳转后的程序指针的值,通过寄存器写回单元302把跳转后的程序指针的值写回程序指针寄存器306中;

当执行无条件跳转操作时,把源操作数或立即数作为程序指针下一步的跳转偏移量,读取程序指针寄存器306中的程序指针的值,由算术逻辑单元303根据程序指针的值和跳转偏移量计算跳转后的程序指针的值,通过寄存器写回单元302把跳转后的程序指针的值写回程序指针寄存器306中;

当执行写操作时,通过输入输出管理单元304把在输入输出模块10的数据有效寄存器102中写入的输出数据有效信号置为第二值,在输入输出模块10的地址寄存器101中写入核外设备的地址信号,在输入输出模块10的输出数据寄存器103中写入输出数据,在输入输出模块10的数据字节有效寄存器104写入输出数据的字节有效信号,以使地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器103中读取输出数据;把输入输出模块10返回的操作结果保存到目的寄存器编号对应通用寄存器305中;

当执行读操作时,在输入输出模块10的地址寄存器101中写入核外设备的地址信号,以使地址信号对应核外设备把输入指令或输入数据写入输入输出模块10的输入数据寄存器105中;把输入输出模块10返回的操作结果保存到目的寄存器编号对应通用寄存器305中。

当执行读操作时,若在输出数据结束后,输出数据有效信号自动置0,则不需要通过输入输出管理单元304把在输入输出模块10的数据有效寄存器102中写入的输出数据有效信号置为0(即第一值);若输出数据有效信号没有自动置0,则通过输入输出管理单元304把在输入输出模块10的数据有效寄存器102中写入的输出数据有效信号置为0。

由算术逻辑单元303根据程序指针的值和跳转偏移量计算跳转后的程序指针的值,具体可为,通过算术逻辑单元303,把程序指针的值和跳转偏移量进行相加,把相加值作为跳转后的程序指针的值。需要说明的是,处理器内核的各模块在运行过程中涉及到指令集,比如产生指令类型、源寄存器编号、目的寄存器编号和立即数,把源操作数和立即数传递到算术逻辑单元303进行运算等,其具体运行过程可参考处理器的现有技术,如参考架构规定内容,这里不做赘述。

根据指令类型确定有限状态机的执行状态的子状态,具体可为,预先建立指令类型表,根据指令类型表查询指令类型对应的有限状态机的执行状态的子状态;还可以为,指令类型中包含执行状态的子状态信息,根据指令类型中包含的子状态信息确定有限状态机的执行状态的子状态。

本实施例中,如图4所示把执行状态分为五个子状态,根据指令类型确定有限状态机的执行状态的子状态,执行子状态对应的操作,从而优化执行模块30的处理逻辑,显著减少处理器内核的逻辑资源使用量。需要指出的是,作为一个可选的实施方式,可把状态机分为大于五个类型,或小于五个类型;也可以把有限状态机的执行状态分为大于五个子状态,或小于五个子状态。

执行模块30是处理器内核的核心模块,负责执行算术逻辑运算操作、条件分支操作、无条件跳转操作、通过输入输出模块10完成读操作和写操作等各种处理操作。其中,执行模块30还会处理中断相关指令,比如处理中断返回指令;当执行中断返回指令时,执行程序跳转操作,使程序跳转到中断返回地址寄存器403中数值表示地址的下一条指令的地址,并生成一个中断返回信号,通知中断控制模块当前中断处理已结束。

作为一个实施方式,执行模块30根据译码结果进行处理操作,包括:执行模块30接收译码模块20产生的指令类型、源寄存器编号、目的寄存器编号和立即数,获取源寄存器编号对应通用寄存器305中相应位置的值作为源操作数,根据指令类型确定有限状态机的执行状态的子状态,执行该子状态对应的处理操作,其中,执行状态的子状态包括算术逻辑运算状态、读操作状态、写操作状态、条件分支状态、以及无条件跳转状态,这些子状态分别对应算术逻辑运算操作、读操作、写操作、条件分支操作、以及无条件跳转操作;当执行算术逻辑运算操作时,把源操作数和立即数传递到算术逻辑单元303进行运算,将运算的结果保存到目的寄存器编号对应通用寄存器305中;当执行条件分支操作时,把源操作数和立即数传递到算术逻辑单元303进行运算,根据运算的结果确定程序指针下一步的跳转偏移量,读取程序指针寄存器306中的程序指针的值,由算术逻辑单元303根据程序指针的值和跳转偏移量计算跳转后的程序指针的值,通过寄存器写回单元302把跳转后的程序指针的值写回程序指针寄存器306中;当执行无条件跳转操作时,把源操作数或立即数作为程序指针下一步的跳转偏移量,读取程序指针寄存器306中的程序指针的值,由算术逻辑单元303根据程序指针的值和跳转偏移量计算跳转后的程序指针的值,通过寄存器写回单元302把跳转后的程序指针的值写回程序指针寄存器306中;当执行写操作时,通过输入输出管理单元304把在输入输出模块10的数据有效寄存器102中写入的输出数据有效信号置为第二值,在输入输出模块10的地址寄存器101中写入核外设备的地址信号,在输入输出模块10的输出数据寄存器103中写入输出数据,在输入输出模块10的数据字节有效寄存器104写入输出数据的字节有效信号,以使地址信号对应核外设备根据输出数据的字节有效信号从输出数据寄存器103中读取输出数据;把输入输出模块10返回的操作结果保存到目的寄存器编号对应通用寄存器305中;当执行读操作时,在输入输出模块10的地址寄存器101中写入核外设备的地址信号,以使地址信号对应核外设备把输入指令或输入数据写入输入输出模块10的输入数据寄存器105中;把输入输出模块10返回的操作结果保存到目的寄存器编号对应通用寄存器305中。

本实施例在执行子状态对应的处理操作中,五个子状态对应五个操作,通过寄存器写回单元302、算术逻辑单元303、输入输出管理单元304、寄存器组管理单元301通用寄存器305和程序指针寄存器306的配合,高效完成不同子状态的操作,简化单元\/寄存器之间的运行逻辑,提高内核整体运行效率。

参见图6,是本发明实施例公开的中断管理模块40示意图。本实施例的处理器内核还包括中断管理模块40,中断管理模块40包括中断使能寄存器401、中断等待寄存器402、中断返回地址寄存器403和中断空闲状态寄存器404。

中断管理模块40用于,当收到中断请求信号时,将中断请求信号与中断使能寄存器401中的值进行比较,判断中断请求信号是否处于使能状态;若否,屏蔽中断请求信号;若是,将中断等待寄存器402中断请求信号对应位置的值置为第二值。若根据中断空闲状态寄存器404确认当前没有中断请求信号在处理,在当前指令执行结束后,将当前程序指针保存到中断返回地址寄存器403中,将中断空闲状态寄存器404的值置为第一值,将执行模块30寄存器组管理单元301的通用寄存器305中的当前值保存到栈空间,把当前程序指针跳转到中断处理函数入口,执行中断等待寄存器402中的值对应的中断函数;在执行中断函数后,通过栈空间的当前值还原中断执行前的现场,将中断空闲状态寄存器404的值置为第二值,根据中断返回地址寄存器403中的当前程序指针跳转到中断执行前的下一条指令;从而完成一次中断处理操作。这里的第二值为1,第一值为0;当然,可根据实际应用场景把第二值、第一值置为其他的值。

如果当前处理器内核正在处理中断,则中断空闲状态寄存器404的值为0,否则为1。中断空闲状态寄存器404不可通过指令进行读写操作。根据中断空闲状态寄存器404确认当前没有中断请求信号在处理,具体可为,读取中断空闲状态寄存器404的值,若值为1,则确认当前没有中断请求信号在处理。

作为一个可选实施方式,中断管理模块40还用于,若根据中断空闲状态寄存器404确认当前有中断请求信号在处理,等待当前的中断请求信号处理结束,在处理结束后继续处理收到的中断请求信号。当然,在确认当前有中断请求信号在处理,还可以采用其他方式,比如若接收的中断请求信号为优先信号则优先处理。

作为一个可选实施方式,中断使能寄存器401、中断等待寄存器402、中断返回地址寄存器403设于执行模块30的寄存器组管理单元301中,与寄存器组管理单元301中的通用寄存器305和程序指针寄存器306统一编号、统一编址、统一读写控制。对应RISC-V架构,寄存器组管理单元301设置有32个RISC-V架构的32位通用寄存器305(x0~x31),1个32位程序指针寄存器306,1个32位中断使能寄存器401,1个32位中断返回地址寄存器403,1个32位中断使能寄存器401;中断管理模块40可支持32个中断源的中断请求管理和响应。把中断使能寄存器401、中断等待寄存器402、中断返回地址寄存器403设于执行模块30的寄存器组管理单元301中,并与寄存器组管理单元301中的其他寄存器统一编号、统一编址、统一读写控制,编号与编址是用于管理与控制,统一编号、统一编址、统一读写控制,可优化控制,提高访问速度,提高中断管理的实时性。

本实施例中,中断控制模块实现外部和内部的中断请求信号的实时管理和响应。中断控制模块包括中断使能寄存器401、中断等待寄存器402、中断返回地址寄存器403,为对这三个寄存器进行管理,根据RISC-V架构中保留的编码空间,定义了一组中断控制指令,包括中断使能指令、中断寄存器读写指令、中断返回指令。其中,中断使能指令:通过对中断使能寄存器401的写操作,实现对指定编号的中断进行屏蔽或者使能;比如,可使用中断使能指令将中断请求信号与中断使能寄存器401中的值进行比较。中断寄存器读写指令:读取或修改中断等待寄存器402的值,从而实现一些特定功能;比如,可通过中断寄存器读写指令将中断等待寄存器402中断请求信号对应位置的值置为第二值。中断返回指令:将中断返回地址寄存器403的值传递给程序指针,从而跳转回中断处理之前的位置,可对中断空闲状态寄存器404置1,表示处理器核当前可以接收新的中断请求;比如,可通过中断返回指令将中断空闲状态寄存器404的值置为第二值,将中断返回地址寄存器403的值传递给当前程序指针,跳转到中断执行前的下一条指令。

作为一个实施方式,中断控制模块的运行方法,包括:当收到中断请求信号时,将中断请求信号与中断使能寄存器401中的值进行比较,判断中断请求信号是否处于使能状态;若否,屏蔽中断请求信号;若是,将中断等待寄存器402中断请求信号对应位置的值置为第二值;若根据中断空闲状态寄存器404确认当前没有中断请求信号在处理,在当前指令执行结束后,将当前程序指针保存到中断返回地址寄存器403中,将中断空闲状态寄存器404的值置为第一值,将执行模块30寄存器组管理单元301的通用寄存器305中的当前值保存到栈空间,把当前程序指针跳转到中断处理函数入口,执行中断等待寄存器402中的值对应的中断函数;在执行中断函数后,通过栈空间的当前值还原中断执行前的现场,将中断空闲状态寄存器404的值置为第二值,根据中断返回地址寄存器403中的当前程序指针跳转到中断执行前的下一条指令。

本实施例通过对中断控制模块的中断使能寄存器401、中断等待寄存器402、中断返回地址寄存器403、中断空闲状态寄存器404进行控制,提高中断响应速度,简化中断控制逻辑,为嵌入式开发提供了便利。

以上内容仅为本发明的较佳实施例,对于本领域的普通技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,本说明书内容不应理解为对本发明的限制。

设计图

基于现场可编程门阵列的处理器内核及其运行方法论文和设计

相关信息详情

申请码:申请号:CN201910930708.X

申请日:2019-09-29

公开号:CN110427337A

公开日:2019-11-08

国家:CN

国家/省市:81(广州)

授权编号:CN110427337B

授权时间:20200103

主分类号:G06F 15/76

专利分类号:G06F15/76

范畴分类:40A;

申请人:广东高云半导体科技股份有限公司

第一申请人:广东高云半导体科技股份有限公司

申请人地址:510000 广东省广州市黄埔区科学大道243号1001房

发明人:徐庆嵩;刘锴;刘建华;王铜铜;范召;杜金凤

第一发明人:徐庆嵩

当前权利人:广东高云半导体科技股份有限公司

代理人:肖宇扬;江银会

代理机构:44202

代理机构编号:广州三环专利商标代理有限公司

优先权:关键词:当前状态:审核中

类型名称:外观设计

标签:;  ;  ;  ;  ;  ;  ;  ;  

基于现场可编程门阵列的处理器内核及其运行方法论文和设计-徐庆嵩
下载Doc文档

猜你喜欢