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

基于RISC架构的微处理器、控制方法和芯片

文献发布时间:2024-01-17 01:15:20


基于RISC架构的微处理器、控制方法和芯片

技术领域

本发明涉及集成电路技术领域,尤其是涉及一种基于RISC架构的微处理器、控制方法和芯片。

背景技术

流水线级数是RISC架构的微处理器的一个重要指标,且流水线级数代表了一条指令需要执行的时钟周期个数。

相关技术中,微处理器具备多级流水线、分支预测单元和Cache,但是多级流水线会造成微处理器占用面积大,分支预测单元和Cache会引起指令执行的时间不确定,难以满足小型化和指令执行时间精确化的设计需求。

发明内容

本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种基于RISC架构的微处理器,能够构建小型化和指令执行时间精确化的微处理器。

本发明还提出一种基于RISC架构的微处理器控制方法。

本发明还提出一种基于RISC架构的芯片。

第一方面,本发明的一个实施例提供了基于RISC架构的微处理器,包括:

指令读取模块,所述指令读取模块用于读取待处理指令集中的指令;

数据存储模块,所述数据存储模块用于存储待处理数据;

寄存模块,所述寄存模块连接所述指令读取模块,用于寄存所述指令读取模块读取的所述待处理指令集;

指令解码模块,所述指令解码模块电连接所述寄存模块,用于对所述待处理指令集进行解码得到目标指令集,根据所述目标指令集中的当前执行指令确定当前执行功能信息,并分发所述当前执行功能信息;

指令执行模块,所述指令执行模块电连接所述指令解码模块,用于接收所述当前执行功能信息,根据所述当前执行功能信息从所述数据存储模块中读取所述待处理数据,并根据所述当前执行功能信息的处理逻辑对所述待处理数据进行处理得到处理结果,将所述处理结果存入所述数据存储模块。

本发明实施例的基于RISC架构的微处理器至少具有如下有益效果:当需要进行指令执行时,指令读取模块读取待处理指令集中的指令,并将待处理指令集寄存于寄存模块中,通过指令解码模块读取出寄存模块的待处理数据,再将待处理指令集解码得到目标指令集,根据目标指令集中的当前执行指令确定当前执行功能信息,将当前功能信息发送至指令执行模块,指令执行模块根据当前执行功能信息从数据存储模块读取出待处理数据,并根据当前执行功能信息对待处理数据进行处理得到处理结果,最后将处理结果存入到数据存储模块。由此可知,构建的微处理器仅通过少量模块完成指令执行,且执行过程为单向过程,没有涉及到分支预测单元和Cache,所以不存在因预测导致执行时间不准确的问题,使得执行时间准确,同时指令执行的过程简化以减少模块设置,进而减少芯片的占用面积。

根据本发明的另一些实施例的基于RISC架构的微处理器,所述微处理器的1个时钟周期包括:上升沿,高电平半周期、下降沿和低电平半周期,所述指令读取模块在所述上升沿时触发,且所述指令读取模块在所述高电平半周期读取所述指令,所述寄存模块在所述下降沿时接收并寄存来自所述指令读取模块的所述指令,所述指令解码模块、所述数据存储模块和所述指令执行模块在所述低电平半周期内依次完成解码、数据输出和指令执行动作,以使处理一条指令的时长为1个时钟周期;

或者,

所述微处理器的1个时钟周期包括:下降沿,低电平半周期、上升沿和高电平半周期,所述指令读取模块在所述下降沿时触发,且所述指令读取模块在所述低电平半周期读取所述指令,所述寄存模块在所述上升沿时接收并寄存来自所述指令读取模块的所述指令,所述指令解码模块、所述数据存储模块和所述指令执行模块在所述低电平半周期内依次完成解码、数据输出和指令执行动作在所述高电平半周期执行,以使处理一条指令的时长为1个时钟周期。

根据本发明的另一些实施例的基于RISC架构的微处理器,所述指令读取模块包括:

第一指令存储器,所述第一指令存储器用于存储编译后的待处理指令集;

地址生成单元,所述地址生成单元电连接所述第一指令存储器,用于生成所述当前执行指令的指令地址信息,并将所述指令地址信息发送至所述第一指令存储器;

指令提取接口,所述指令提取接口电连接所述第一指令存储器,用于发送指令提取请求至所述第一指令存储器,以使所述第一指令存储器根据所述指令提取请求和所述指令地址信息返回所述待处理指令集。

根据本发明的另一些实施例的基于RISC架构的微处理器,所述寄存模块,包括:

地址寄存器,所述地址寄存器电连接所述地址生成单元,用于存储所述指令地址信息;

指令寄存器,所述指令寄存器电连接所述第一指令存储器,用于存储所述第一指令存储器返回的所述待处理指令集。

根据本发明的另一些实施例的基于RISC架构的微处理器,所述指令读取模块在所述高电平半周期读取所述指令,所述地址寄存器、所述指令寄存器在所述下降沿时触发以接收并寄存来自所述指令读取模块的所述指令,所述指令解码模块、所述数据存储模块和所述指令执行模块在所述低电平半周期内依次完成解码、数据输出和指令执行动作,以使处理一条指令的时长为1个时钟周期。

根据本发明的另一些实施例的基于RISC架构的微处理器,所述待处理指令集包括:基础指令集和/或功能指令集:所述功能指令集包括以下至少一种:乘除法指令集、压缩指令集和原子指令集,所述基础指令集包括:加载存储指令。

根据本发明的另一些实施例的基于RISC架构的微处理器,若所述待处理指令集为第一指令集,所述第一指令集包括以下至少一种:基础指令集、乘除法指令集、压缩指令集;所述指令读取模块在所述上升沿触发以读取所述指令,所述寄存模块在所述下降沿触发以接收并寄存所述指令,所述数据存储模块在所述低电平半周期输出所述待处理数据以供所述指令执行模块使用,且所述指令在所述低电平半周期执行后,在下一个上升沿时所述处理结果存回所述数据存储模块,以使处理一条指令的时长为1个时钟周期。

根据本发明的另一些实施例的基于RISC架构的微处理器,若所述待处理指令集为第二指令集,所述第二指令集包括以下至少一种:原子指令集、加载存储指令;所述指令读取模块在所述上升沿触发以读取所述指令,在所述下降沿将所述指令存入所述寄存模块,在第一个时钟周期的低电平半周期内所述指令解码模块对所述指令解码,且所述数据存储模块在第一个时钟周期的所述低电平半周期至第二时钟周期运行并输出所述待处理数据以供所述指令执行模块使用,在第三个时钟周期的上升沿所述指令执行模块输出的所述处理结果存入所述数据存储模块,以使处理一条指令的时长为至少2个时钟周期。

根据本发明的另一些实施例的基于RISC架构的微处理器,所述指令执行模块包括:

加载存储单元,所述加载存储单元电连接所述指令解码模块,用于根据所述当前执行功能信息从所述数据存储模块中读取所述待处理数据;

运算功能执行单元,所述运算功能执行单元电连接所述加载存储单元和所述指令解码模块,用于根据所述当前执行功能信息的逻辑功能对所述待处理数据进行处理得到所述处理结果;

所述加载存储单元还用于将所述处理结果存入所述数据存储模块。

根据本发明的另一些实施例的基于RISC架构的微处理器,若所述待处理指令集包括:压缩指令集;所述基于RISC架构的微处理器还包括:

压缩指令解码模块,所述压缩指令解码模块电连接所述第一指令存储器和所述指令寄存器之间,用于将所述压缩指令集进行解码处理。

根据本发明的另一些实施例的基于RISC架构的微处理器,所述微处理器的1个时钟周期包括:上升沿、高电平半周期、下降沿和低电平半周期,所述指令读取模块在所述上升沿时触发,且所述指令读取模块和所述压缩指令解码模块在所述高电平半周期内依次完成所述指令的读取、解码;所述寄存模块在所述下降沿时触发以接收并寄存所述压缩指令解码模块的所述指令,所述指令解码模块、所述数据存储模块和所述指令执行模块在所述低电平半周期内依次完成解码、数据输出和指令执行动作,以使处理一条指令的时长为1个时钟周期;

或者,

所述微处理器的1个时钟周期包括:下降沿、低电平半周期、上升沿和高电平半周期,所述指令读取模块在所述下降沿时触发,且所述指令读取模块和所述压缩指令解码模块在所述低电平半周期内依次完成所述指令的读取、解码,所述寄存模块在所述上升沿时触发以接收并存储所述压缩指令解码模块的所述指令,所述指令解码模块、所述数据存储模块和所述指令执行模块在所述低电平半周期内依次完成解码、数据输出和指令执行动作,以使处理一条指令的时长为1个时钟周期。

根据本发明的另一些实施例的基于RISC架构的微处理器,所述指令执行模块还包括:

自定义指令执行单元,所述自定义指令执行单元电连接所述指令解码模块,用于执行自定义指令得到执行结果;

所述加载存储单元还用于将所述执行结果存入所述数据存储模块。

根据本发明的另一些实施例的基于RISC架构的微处理器,所述数据存储模块包括:

第一数据存储器,所述第一数据存储器电连接所述加载存储单元,用于在所述待处理指令集为所述第二指令集时发送所述待处理数据并存储所述处理结果;其中,所述第一数据存储器具有确定性的响应时间;

寄存器堆,所述寄存器堆电连接所述加载存储单元和所述运算功能执行单元,用于在所述待处理指令集为所述第二指令集时通过所述加载存储单元接收所述第一数据存储器的待处理数据,或者将所述处理结果通过所述加载存储单元存入所述第一数据存储器;所述寄存器堆还用于在所述待处理指令集为所述第一指令集时,向所述运算功能执行单元发送所述待处理数据,并存储所述处理结果;

或者,所述数据存储模块包括:

第二共享数据存储器,所述第二共享数据存储器电连接所述加载存储单元,用于在所述待处理指令集为所述第二指令集时发送所述待处理数据并存储所述处理结果;其中,所述第二共享数据存储器与外部微处理器共享;

寄存器堆,所述寄存器堆电连接所述加载存储单元和所述运算功能执行单元,用于在所述待处理指令集为所述第二指令集时通过所述加载存储单元接收所述第二共享数据存储器的待处理数据,或者将所述处理结果通过所述加载存储单元存入所述第二共享数据存储器;所述寄存器堆还用于在所述待处理指令集为所述第一指令集时,向所述运算功能执行单元发送所述待处理数据,并存储所述处理结果。

第二方面,本发明的一个实施例提供了基于RISC架构的微处理器控制方法,应用于所述基于RISC架构的微处理器,所述方法包括:

指令读取模块生成指令地址信息,根据所述指令地址信息读取待处理指令集中的指令,并将所述待处理指令集寄存于寄存模块;

指令解码模块对所述寄存模块的所述待处理指令集进行解码得到目标指令集,根据所述目标指令集的当前执行指令确定当前执行功能信息,将所述当前执行功能信息分发至指令执行模块;

所述指令执行模块根据所述执行功能信息从数据存储模块读取待处理数据,并根据所述当前执行功能信息的处理逻辑对所述待处理数据进行处理得到处理结果,将所述处理结果存储至所述数据存储模块。

本发明实施例的基于RISC架构的微处理器控制方法至少具有如下有益效果:当需要进行指令执行时,指令读取模块读取待处理指令集中的指令,并将待处理指令集寄存于寄存模块中,通过指令解码模块读取出寄存模块的待处理指令集,再将待处理指令集解码得到目标指令集,根据目标指令集中的当前执行指令确定当前执行功能信息,将当前功能信息发送至指令执行模块,指令执行模块根据当前执行功能信息从数据存储模块读取出待处理数据,并根据当前执行功能信息对待处理数据进行处理得到处理结果,最后将处理结果存入到数据存储模块。由此可知,构建的微处理器仅通过少量模块完成指令执行,且执行过程为单向过程,没有涉及到分支预测单元和Cache,所以没有因为预测导致执行时间不准确问题,使得执行时间准确,且执行时间缩短简化模块设置,以减少芯片占用面积。

根据本发明的另一些实施例的基于RISC架构的微处理器控制方法,所述微处理器的1个时钟周期包括:上升沿,高电平半周期、下降沿和低电平半周期,所述方法还包括:

在上升沿时,所述指令读取模块触发,且所述指令读取模块在高电平半周期读取所述指令;

在下降沿时,所述寄存模块接收并寄存来自所述指令读取模块的所述指令,所述指令解码模块、所述数据存储模块和所述指令执行模块在低电平半周期内依次完成解码、数据输出和指令执行动作;

或者,

在下降沿时,所述指令读取模块触发,且所述指令读取模块在低电平半周期读取所述指令;

在上升沿时,所述寄存模块接收并寄存来自所述指令读取模块的所述指令,所述指令解码模块、所述数据存储模块和所述指令执行模块在高电平半周期内依次完成解码、数据输出和指令执行动作。

第三方面,本发明的一个实施例提供了基于RISC架构的芯片,包括:

基于RISC架构的微处理器,所述基于RISC架构的微处理器如第一方面所述的基于RISC架构的微处理器;

外围电路,所述外围电路与所述微处理器电性连接。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书以及附图中所特别指出的结构来实现和获得。

附图说明

图1是本发明实施例中基于RISC架构的微处理器的一具体实施例模块框图;

图2是本发明实施例中基于RISC架构的微处理器的另一具体实施例模块框图;

图3是本发明实施例中基于RISC架构的微处理器中指令执行的流程示意图;

图4是本发明实施例中基础指令集、压缩指令集、乘除法指令集和自定义指令集完成指令执行的时序图;

图5是本发明实施例中原子指令集和加载存储指令完成指令执行的时序图;

图6是本发明实施例中基于RISC架构的微处理器控制方法的一具体实施例的流程示意图;

图7是本发明实施例中基于RISC架构的微处理器控制方法的另一具体实施例的流程示意图;

图8是本发明实施例中基于RISC架构的微处理器控制方法的另一具体实施例的流程示意图。

说明书附图标记:100、指令读取模块;110、第一指令存储器;120、地址生成单元;130、指令提取接口;210、第一数据存储器;220、第二共享数据存储器;230、寄存器堆;300、寄存模块;310、地址寄存器;320、指令寄存器;400、指令解码模块;500、指令执行模块;510、加载存储单元;520、运算功能执行单元;530、自定义指令执行单元;600、压缩指令解码模块。

具体实施方式

以下将结合实施例对本发明的构思及产生的技术效果进行清楚、完整地描述,以充分地理解本发明的目的、特征和效果。显然,所描述的实施例只是本发明的一部分实施例,而不是全部实施例,基于本发明的实施例,本领域的技术人员在不付出创造性劳动的前提下所获得的其他实施例,均属于本发明保护的范围。

在本发明的描述中,如果涉及到方位描述,例如“上”、“下”、“前”、“后”、“左”、“右”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。如果某一特征被称为“设置”、“固定”、“连接”、“安装”在另一个特征,它可以直接设置、固定、连接在另一个特征上,也可以间接地设置、固定、连接、安装在另一个特征上。

在本发明实施例的描述中,如果涉及到“若干”,其含义是一个以上,如果涉及到“多个”,其含义是两个以上,如果涉及到“大于”、“小于”、“超过”,均应理解为不包括本数,如果涉及到“以上”、“以下”、“以内”,均应理解为包括本数。如果涉及到“第一”、“第二”,应当理解为用于区分技术特征,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。

下面对名词进行解释:

RISC(Reduced Instruction Set Computer-RISC,精简指令集计算机):是一种CPU设计策略,其基于这样的解释:简化指令集与微处理器架构结合后可提供更高的性能,该微处理器架构能够通过每条指令使用一些微处理器周期来执行指令。RISC是一种使用高度优化的指令集的微处理器架构。RISC则相反,以每个程序的指令数为代价减少了每条指令的周期。流水线化是RISC的独特功能之一。它通过以流水线方式重叠执行多条指令来执行。

RISC-V:RISC-V是基于精简指令集计算(RISC)原理建立的开放指令集架构(ISA),V表示为第五代RISC(精简指令集计算机),表示此前已经四代RISC处理器原型芯片。

RISC-V指令集是一个开源的指令集架构,基于RISC-V指令集可以设计实现各种RISC-V处理器芯片。其中,流水线级作RISC-V处理器芯片的一个重要指标。

相关技术中,RISC-V处理器芯片主要有2级流水线、5级流水线,2级流水线代表完成一条指令需要执行2个时钟周期,5级流水线代表完成一条指令需要执行5个时钟周期。在多级流水线实现中,往往需要对分支指令的跳转方向、跳转目标进行预测,这种预测会引起指令执行时间的不确定性。另一方面,处理器需要从指令RAM中提取指令,从数据RAM读写数据,这个过程使用Cache、片上总线技术的话,也会引起指令执行时间不确定问题。

例如,Ariane是一种常见的RISC-V处理器芯片。

Ariane的流水线级数是5级,也即一条指令需要5个时钟周期执行,且在Ariane内部存在分支预测单元(BHT/RAS/BTB),所以分支预测单元会输出分支预测成功和分支预测失败两种结果,那么在分支预测成功和分支预测失败的两种情况下指令执行的时间都不一样,所以指令执行时间也存在不确定性。Ariane内部还存在Cache,在Cache预测成功与Cache预测失败这两种情况下,指令执行时间不一样,同样存在不确定性。因此,Ariane为了提高性能增加了分支预测单元和Cache,这两个模块会引起指令执行时间不确定,不能适用于对指令执行时间确定的场景,另外流水线级数越高导致芯片占用面积越大,不适用对于芯片面积有约束的设备。

越来越多的设备需要具备编程能力,且编程能力通过一个处理器核来实现,且部分设备对于芯片占用面积存在约束,而且对于指令执行周期也存在准确性要求。因此,如何构建一款能够满足芯片面积小且指令执行时间确定的微处理器,成为亟待解决的问题。

基于此,本发明申请公开了一种基于RISC架构的微处理器、控制方法和芯片,通过构建包含指令读取模块、数据存储模块、寄存模块、指令解码模块、指令执行模块的微处理器,当需要执行指令时,由指令读取模块读取待处理指令集,再通过寄存模块寄存待处理指令集,指令解码模块将待处理指令集进行解码处理得到目标指令集,并确定目标指令集中的当前执行指令对应的当前执行功能信息,以分发当前执行功能信息到指令执行模块,然后指令执行模块根据当前执行功能信息提取出数据存储模块的待处理数据进行处理,以得到处理结果,并将处理结果存入数据存储模块。由此可知,整个指令处理流程没有涉及到分支预测,且没有采用Cache进行预测,整个指令处理流程都是单向实现,所以指令执行时间准确。而且,仅采用5个模块,所以减少运行模块,降低芯片占用面积。

请参照图1,图1示出了基于RISC架构的微处理器的模块框图,基于RISC架构的微处理器包括:指令读取模块100、数据存储模块(图中未示出)、寄存模块300、指令解码模块400和指令执行模块500,指令读取模块100用于读取待处理指令集中的指令;数据存储模块用于存储待处理数据;寄存模块300连接指令读取模块100,用于寄存指令读取模块100读取的待处理指令集;指令解码模块400电连接寄存模块300,用于对待处理指令集进行解码得到目标指令集,根据目标指令集中的当前执行指令确定当前执行功能信息,并分发当前执行功能信息;指令执行模块500电连接指令解码模块400,用于接收当前执行功能信息,根据当前执行功能信息从数据存储模块中读取待处理数据,并根据当前执行功能信息的处理逻辑对待处理数据进行处理得到处理结果,将处理结果存入数据存储模块。

当需要进行指令执行时,指令读取模块100读取待处理指令集中的指令,并将待处理指令集寄存于寄存模块300中,通过指令解码模块400读取出寄存模块300的待处理指令集,再将待处理指令集解码得到目标指令集,根据目标指令集中的当前执行指令确定当前执行功能信息,再将当前功能执行信息发送至指令执行模块500,指令执行模块500根据当前执行功能信息从数据存储模块读取出待处理数据,并根据当前执行功能信息对待处理数据进行处理得到处理结果,最后将处理结果存入到数据存储模块。由此可知,构建的微处理器仅通过少量模块完成指令执行,且执行过程为单向过程,没有涉及到分支预测单元和Cache,所以没有因为预测导致执行时间不准确问题,使得指令的执行时间准确。同时指令的执行时间缩短以减少模块设置从而减少芯片占用面积。

需要说明的是,上述指令读取模块100、数据存储模块、寄存模块300、指令解码模块400和指令执行模块500的过程为1条指令的执行过程。但是在程序执行过程,程序包括多条指令,所以指令读取模块100在程序执行过程会读取整个程序的待处理指令集,且待处理指令集为一个程序需要处理的指令集。但是一个时钟周期指令读取模块100只读取一条指令,完成指令解码后,再由指令执行模块500根据目标指令集中当前执行指令对应的执行功能信息对待处理数据完成相对应的操作,再读取下一条指令进行处理,以此类推,直至整个程序的待处理指令集中的指令处理完毕。因此,在一些实施例中,本发明提供的方案在一个时钟周期完成一条指令执行,直至整个程序执行完成后,完成待处理指令集的读取与执行。

在一些实施例中,指令读取模块100、数据存储模块、寄存模块300、指令解码模块400和指令执行模块500完成一条指令的执行需要1个时钟周期。其中,1个时钟周期包括上升沿、高电平半周期、下降沿和低电平半周期。指令读取模块100在上升沿时触发,且指令读取模块100在高电平半周期读取指令,寄存模块300在下降沿时接收并寄存来自指令读取模块100的指令,指令解码模块400、数据存储模块和指令执行模块500在低电平半周期内依次完成解码、数据输出和指令执行动作,以使处理一条指令的时长为1个时钟周期。

在一个实施例中,微处理器的1个时钟周期包括:下降沿,低电平半周期、上升沿和高电平半周期,指令读取模块100在下降沿时触发,且指令读取模块100在低电平半周期读取指令,寄存模块300在上升沿时接收并寄存来自指令读取模块100的指令,指令解码模块400、数据存储模块和指令执行模块500在高电平半周期内依次完成解码、数据输出和指令执行动作,以使处理一条指令的时长为1个时钟周期。

请参照图2,图2中的“CLK”波形为时钟波形,且图2示出1个时钟周期,在一些实施例中,1个时钟周期分为高电平半周期和低电平半周期,高电平半周期和低电平半周期分别执行不同的逻辑功能。其中,若指令读取模块100在上升沿触发,且指令读取模块100在高电平半周期读取指令,寄存模块300在下降沿触发,且指令解码模块400、数据存储模块和指令执行模块500在低电平半周期内依次完成解码、数据输出和指令执行动作。由此可知,微处理器完成1条指令需要1个时钟周期,从而提高了指令执行的实时性。因此,通过构建单周期的微处理器,不仅可以满足单周期指令执行设备的需求,还能够简化指令执行流程以减少模块设置,减少微处理器的芯片面积,使得微处理器小巧灵活,方便使用。

请参照图1,在一些实施例中,指令读取模块100包括第一指令存储器110、地址生成单元120和指令提取接口130。第一指令存储器110用于存储编译后的待处理指令集;地址生成单元120电连接第一指令存储器110,用于生成当前执行指令的指令地址信息,并将指令地址信息发送至第一指令存储器110;指令提取接口130电连接第一指令存储器110,用于发送指令提取请求至第一指令存储器110,以使第一指令存储器110根据指令提取请求和指令地址信息返回待处理指令集。

具体地,第一指令存储器110也称为L1指令RAM,当高级语言编写的软件经过编译器编译后生成二进制文件,这个二进制文件包含待处理指令集,且L1指令RAM存储待处理指令集。地址生成单元120和指令提取接口130组合成的功能为指令读取功能,用于读取L1指令RAM中的待处理指令集,且待处理指令集按照顺序执行指令流。在上升沿时,地址生成单元120生成下一条待执行指令的地址,也即当前执行指令的指令地址,得到指令地址信息,同时指令提取接口130生成指令提取请求,地址生成单元120将指令地址信息发送至第一指令存储器110,指令提取接口130将指令提取请求发送至第一指令存储器110。第一指令存储器110根据指令提取请求和指令地址信息提取出对应的待处理指令集,并将待处理指令集返回至寄存模块300。因此,通过设置第一指令存储器110、地址生成单元120和指令提取接口130,以完成待处理指令集的提取,使得待处理指令集提取更加简易。

在一些实施例中,寄存模块300包括:地址寄存器310和指令寄存器320,地址寄存器310电连接地址生成单元120,用于存储指令地址信息;指令寄存器320电连接第一指令存储器110,用于存储第一指令存储器110返回的待处理指令集。

具体地,地址寄存器310也称为PC寄存器,指令寄存器320为inst_data寄存器,PC寄存器和inst_data寄存器为CLK负沿驱动的寄存器,也即在下降沿时PC寄存器和inst_data寄存器驱动。PC寄存器将地址生成单元120生成的指令地址信息存储,以便于指令执行模块500需要使用指令地址信息时再从PC寄存器中读取。inst_data寄存器将第一指令存储器110返回的待处理指令集进行存储,以便于后面的指令解码模块400调取以使用。因此,通过设置PC寄存器和inst_data寄存器能够完成指令地址信息和待处理指令集的寄存,以便于后续处理直接从PC寄存器和inst_data寄存器读取地址或者指令。

在一些实施例中,指令读取模块100在高电平半周期读取指令,地址寄存器310、指令寄存器320在下降沿时触发以接收并寄存来自指令读取模块100的指令,指令解码模块400、数据存储模块和指令执行模块500在低电平半周期内依次完成解码、数据输出和指令执行动作,以使处理一条指令的时长为1个时钟周期。

需要说明的是,PC寄存器和inst_data寄存器设置于微处理器内,目的是在微处理器内部打断组合逻辑路径,降低SoC(System on Chip,系统级芯片,也为本实施例中的微处理器)集成时出现组合逻辑环的风险。其中,组合逻辑环是指不经过任何时序逻辑(寄存器等),而直接将组合逻辑电路的输出信号反馈到其输入节点而形成的环路。若出现组合逻辑环会让微处理器的稳定性,因此,通过PC寄存器和inst_data寄存器设置于微处理器内降低微处理器出现组合逻辑换的风险,以提高微处理器的稳定性。

在一些实施例中,待处理指令集包括:基础指令集和/或功能指令集,功能指令集包括以下至少一种:乘除法指令集、压缩指令集和原子指令集,基础指令集包括:加载存储指令。

具体地,基于RISC架构的微处理器支持I/M/C/A四条指令集,基础指令集为I指令集,乘除法指令集为M指令集,压缩指令集为C指令集,原子指令集为A指令集。因此,微处理器可以实现I指令集,不实现M/C/A指令集;也可以实现I指令集和C指令集,不支持M/A指令集;或者微处理器可以同时实现支持I/M/C/A四条指令集。其中,对于微处理器实现支持I/M/C/A四条指令集可以自动选择,此处不再赘述。

其中,由于压缩指令集需要展开成等价的基础指令集,所以需要判断待处理指令集中是否包含压缩指令集。若待处理指令集包括压缩指令集,则需要对压缩指令集展开。基于RISC架构的微处理器还包括:压缩指令解码模块600,压缩指令解码模块600电连接第一指令存储器110和指令寄存器320之间,用于将压缩指令集进行解码处理。压缩指令解码模块600对压缩指令集进行解码以展开成基础指令集的形式。因此,第一指令存储器110返回的压缩指令集至压缩指令解码模块600,压缩指令解码模块600解码后再将解码后的压缩指令集存入到寄存模块300,使得压缩指令集能够被解码成基础指令集形式,便于后续的指令解码处理。

在一些实施例中,指令读取模块100在上升沿时触发,且指令读取模块和压缩指令解码模块600在高电平半周期内依次完成指令的读取、解码;寄存模块300在下降沿时触发以接收并寄存压缩指令解码模块600的指令,指令解码模块400、数据存储模块和指令执行模块500在低电平半周期内依次完成解码、数据输出和指令执行动作,以使处理一条指令的时长为1个时钟周期。

或者,指令读取模块100在下降沿时触发,且指令读取模块和压缩指令解码模块600在低电平半周期内依次完成指令的读取、解码;寄存模块300在上升沿时触发以接收并寄存压缩指令解码模块600的指令,指令解码模块400、数据存储模块和指令执行模块500在高电平半周期内依次完成解码、数据输出和指令执行动作,以使处理一条指令的时长为1个时钟周期。

需要说明的是,当平衡PC寄存器和inst_data寄存器前后组合逻辑电路时,电路达到最高的时钟频率,也即在inst_data寄存器存储待处理指令集之前,压缩指令解码模块600完成解码,那么微处理器的时钟频率达到最高。

在一些实施例中,指令解码模块400对基础指令集、压缩指令集、乘除法指令集、加载存储指令和原子指令集进行解码,通过解码后得到目标指令集,以根据目标指令集中的当前执行指令确定当前执行功能信息,也即确定当前执行指令需要执行的功能。其中,当前执行功能信息包括:加法功能、减法功能、乘法功能、加载功能和存储功能等。

在一些实施例中,若待处理指令集为第一指令集,第一指令集包括以下至少一种:基础指令集、乘除法指令集、压缩指令集;指令读取模块100在上升沿触发以读取指令,寄存模块300在下降沿触发以接收并寄存指令,数据存储模块在低电平半周期输出待处理数据以供指令执行模块500使用,且待处理指令在低电平半周期执行后,在下一个上升沿时处理结果存回数据存储模块,以使处理一条指令的时长为1个时钟周期。因此,针对基础指令集、乘除法指令集和压缩指令集,以通过不同模块的触发时间和运行时间,使得处理一条指令的时长在1个时钟周期,使得指令执行时间准确。

在一些实施例中,若待处理指令集为第二指令集,第二指令集包括以下至少一种:原子指令集、加载存储指令;指令读取模块100在上升沿触发以读取指令,在下降沿将指令存入寄存模块300,在第一个时钟周期的低电平半周期内指令解码模块400对指令解码,数据存储模块在第一时钟周期的低电平半周期至第二时钟周期运行,并输出待处理数据至指令执行模块500使用,在第三个时钟周期的上升沿指令执行模块500输出的处理结果存入数据存储模块,以使处理一条指令的时长为至少2个时钟周期。因此,对于原子指令集和加载存储指令,以通过控制不同模块的执行时间,完成原子指令集或者加载存储指令的执行时长在至少2个时钟周期。其中,由于在执行原子指令集或者加载存储指令时,可能涉及到数据存储模块中共享的数据存储器,那么涉及到外部数据存储,所以时间难以确定,但是可以确定处理该类指令需要至少2个时钟周期。

在一些实施例中,指令执行模块500包括:加载存储单元510、运算功能执行单元520;加载存储单元510电连接指令解码模块400,用于根据当前执行功能信息从数据存储模块中读取待处理数据;运算功能执行单元520电连接加载存储单元510和指令解码模块400,用于根据当前执行功能信息的逻辑功能对待处理数据进行处理得到处理结果;加载存储单元510还用于将处理结果存入数据存储模块。

具体地,运算功能执行单元520也称为ALU单元,当指令解码模块400确定当前执行功能信息,将当前执行功能信息分发到ALU单元和加载存储单元510,ALU单元负责完成算术逻辑功能执行,例如,加减法、乘除法和移位运算等。加载存储单元510负责从数据存储模块中加载出待处理数据,再通过ALU单元对待处理数据执行当前执行功能信息对应的处理逻辑得到处理结果。其中,处理结果为目标数据,所以处理完成后,加载存储单元510将目标数据存储到数据存储模块中。

在一些实施例中,指令执行模块500还包括自定义指令执行单元530,自定义指令执行单元530电连接指令解码模块400,用于执行自定义指令得到执行结果。其中,对于标准的RISC指令由ALU单元执行,若涉及非标准RISC指令,则由自定义指令执行单元530执行以得到执行结果。其中,指令解码模块400也对自定义指令进行解码后再由自定义指令执行单元530执行。其中,需要增加一个自定义指令扩展接口,外接自定义指令,以便于根据场景需求自行设计、定义非标准的自定义指令,那么自定义指令扩展接口接入自定义指令后,由指令解码模块400解码再由自定义指令执行单元530执行。并且,自定义指令同样可以在1个时钟周期内完成,以提高指令执行的实时性、确定性。

在一些实施例中,数据存储模块包括:第一数据存储器210和寄存器堆230;第一数据存储器210电连接加载存储单元510,用于在待处理指令为第二指令集时发送待处理数据并存储处理结果;其中,第一数据存储器210具有确定性的响应时间;寄存器堆230电连接加载存储单元510和运算功能执行单元520,用于在待处理指令集为第二指令集时通过加载存储单元510接收第一数据存储器210的待处理数据,或者将处理结果通过加载存储单元510存入第一数据存储器210;寄存器堆230还用于在待处理指令集为第一指令集时,向运算功能执行单元520发送待处理数据,并存储处理结果。因此,寄存器堆230连接加载存储单元510和运算功能执行单元520,以根据不同的指令集时采用不同的方式读取待处理数据和存储处理结果。其中,若待处理指令集为第一指令集,寄存器堆230可以直接传输待处理数据至运算功能执行单元520,并存储处理结果。若待处理指令集为第二指令集,寄存器堆230需要通过加载存储单元510读取第一数据存储器210的待处理数据,或者将处理结果通过加载存储单元510存入第一数据存储器210。因此,针对不同指令集,采用不同方式传输数据,实现不同指令集的执行。其中,针对load类指令,寄存器堆230需要通过加载存储单元510读取第一数据存储器210的待处理数据,并将待处理数据存入寄存器堆230。针对store类指令,寄存器堆230的处理结果通过加载存储单元510存入到第一数据存储器210。

在一些实施例中,数据存储模块包括:第二共享数据存储器220和寄存器堆230,第二共享数据存储器220电连接加载存储单元510,用于在待处理指令集为第二指令集时发送待处理数据并存储处理结果;其中,第二共享数据存储器220与外部微处理器共享;寄存器堆230电连接加载存储单元510和运算功能执行单元520,用于在待处理指令集为第二指令集时通过加载存储单元510接收第二共享数据存储器220的待处理数据,或者将处理结果通过加载存储单元510存入第二共享数据存储器220;寄存器堆230还用于在待处理指令集为第一指令集时,向运算功能执行单元520发送待处理数据,并存储处理结果。其中,第二共享数据存储器220为微处理共享的存储器,所以第二共享数据存储器220具备更大的存储空间存储处理结果,且第二共享数据存储器220与多个外部微处理器的寄存器堆230连接,所以第二共享数据存储器220可以提取外部微处理器中寄存器堆230的待处理数据,也可以将处理结果存储到外部微处理器的寄存器堆230,以支持容量更大的数据/结果存储。

具体地,加载存储指令包括:load指令和store指令;当执行load指令时:从寄存器堆230获取待处理数据,利用待处理数据计算出一个地址read_addr,这个地址read_addr通过加载存储单元510发送给第一数据存储器210或者第二共享数据存储器220,从第一数据存储器210或者第二共享数据存储器220获取这个地址对应的待处理数据read_data之后,待处理数据read_data存入寄存器堆230。

执行store指令时,从寄存器堆230获取处理结果,利用处理结果计算出一个地址write_addr,同时还会从寄存器堆230获取一个处理结果write_data,这个地址write_addr和处理结果write_data通过加载存储单元510发送给第一数据存储器210或者第二共享数据存储器220,最终处理结果write_data被写入到第一数据存储器210或者第二共享数据存储器220中地址write_addr所索引的位置。因此,针对加载存储指令,通过不同的路径读取待处理数据,存储处理结果,以完成加载存储指令的执行。

具体地,第一数据存储器210也称为L1数据RAM,第二数据存储器也称为L2共享数据RAM,ALU单元需要对待处理数据进行处理时,ALU单元读取PC寄存器的指令地址信息,然后由加载存储单元510根据加载指令和指令地址信息从L1数据RAM或者L2共享数据RAM中读出对应的待处理数据。加载存储单元510将待处理数据传输至寄存器堆230,或者由寄存器堆230将待处理数据发送至ALU单元,当ALU单元完成待处理数据处理后得到处理结果,也由寄存器堆230将处理结果发送至加载存储单元510,加载存储单元510根据存储指令和指令地址信息将处理结果存入到L1数据RAM或者L2共享数据RAM。因此,通过寄存器堆230、加载存储单元510与L1数据RAM或者L2共享数据RAM交互,以完成数据搬运。

其中,L1数据RAM为处理器核私有,容量小,速度快,具有确定性的响应时间,L2共享数据RAM为多个处理器核共享,容量大,响应时间不确定,一般为几个时钟周期。因此,根据不同数据量读取存储可以采用不同的数据存储器,以增加数据读取存储的选择性,使得数据读取存储更加合理。

需要说明的是,L1数据RAM具有确定性的响应执行时间,但是容量比较小;L2共享数据RAM执行时间不确定,但是容量大,而且可以执行原子指令集;通过设置L1数据RAM和L2共享数据RAM共有的结构,在数据RAM的确定性响应/容量大小之间取得平衡,以在确定性和容量大小这对矛盾上进行优化,提升数据存储的选择性。

在一些实施例中,基于RISC架构的微处理器还包括CSR寄存器,CSR寄存器用于存储整个待处理指令集处理的控制信息、状态信息和全局信息,以便于微处理根据CSR寄存器存储的信息完成待处理指令集的执行。

在一些实施例中,请参照图1和图3,图3示出了不同指令集的执行流程图。当生成指令地址信息后,从L1指令RAM提取出待处理指令集,先判断待处理指令集是否为C指令集。若是,则对C指令集展开成等价的基础指令集,然后在CLK下降沿时,将包括基础指令集的待处理指令集存入到inst_data寄存器,且指令地址信息也在CLK下降沿时存入到PC寄存器。然后对待处理指令集进行解码处理得到目标指令集,并提取出目标指令集中的原子指令集。若目标指令集存在原子指令集或加载存储单元510触发的加载/存储指令,则分到加载存储单元510执行;若没有原子指令集需要进一步判断是否存在自定义指令集,若不存在自定义指令集也不是原子指令集确定为基础指令集和乘除法指令集,将基础指令集和乘除法指令集分发到ALU单元执行;若是自定义指令集,则分发到自定义指令执行单元530执行;最后ALU单元和加载存储单元510执行的处理结果、自定义指令执行单元530执行的执行结果都存入到寄存器堆230中,以完成指令的执行操作。

例如,请参照图1和图4,图4是基础指令集、压缩指令集、乘除法指令集和自定义指令集在1个时钟周期完成指令执行的时序图。其中,Y1对应的线条表征完成基础指令集、压缩指令集、乘除法指令集和自定义指令集的时序,第一虚线LX1为CLK上升沿,第二虚线LX2为CLK下降沿,第三虚线LX3为下个CLK上升沿。若指令地址信息为0x10000,从第一指令存储器110提取出0x10000对应的指令,在CLK下降沿LX2是将指令存入到inst_data寄存器,若指令为0x210113,在CLK下半周期执行后,产生处理结果,并在下一个CLK上升沿LX3时将处理结果写回到寄存器堆230。

请参照图1和图5,图5是原子指令集和加载存储指令的时序图。图5示出了一条访问L1数据RAM的加载指令的例子,需要2个时钟周期。其中,Y2对应线条表征完成加载存储指令、原子指令集的时序,第四虚线LX4为起始时刻的上升沿,第五虚线LX5为第三周期的上升沿。其中,执行原子指令集和加载存储指令需要访问L1数据RAM或L2共享数据RAM。

第四虚线LX4为起始点,在这个时刻读取到一条加载指令为0x210203,半个周期之后加载指令存入inst_data寄存器,同时指令解码模块400开始工作,识别到该指令是加载指令,电平信号拉高。之后指令通过加载功能信息送给加载存储单元510,执行完之后电平信号在第二个时钟上升沿拉高,处理结果在第二个时钟的下降沿被送回来,并在第五虚线LX5时被写入寄存器堆230。因此,通过构建没有分支预测单元、Cache,使得整个指令执行过程单向,那么执行指令时间准确,采用单周期或者至少2个周期就能够完成指令执行,以实现不同类型指令的执行,扩大指令执行范围。

请参照图6,图6为本公开实施例提供的基于RISC架构的微处理器控制方法,应用于基于RISC架构的微处理器,基于RISC架构的微处理器控制方法包括但不限于步骤S601至步骤S603:

步骤S601:指令读取模块生成指令地址信息,根据指令地址信息读取待处理指令集中指令,并将待处理指令集寄存于寄存模块;

步骤S602:指令解码模块对寄存模块的待处理指令集进行解码得到目标指令集,根据目标指令集的当前执行指令确定当前执行功能信息,将当前执行功能信息分发至指令执行模块;

步骤S603:指令执行模块根据执行功能信息从数据存储模块读取待处理数据,并根据当前执行功能信息的处理逻辑对待处理数据进行处理得到处理结果,将处理结果存储至数据存储模块。

在本申请实施例所示意的步骤S601至步骤S603,通过指令读取模块生成指令地址信息后,根据指令地址信息读取待处理指令集中的指令,然后将待处理指令集寄存于寄存模块。然后由指令解码模块从寄存模块读取出待处理指令集,对待处理指令集解码得到目标指令集,以根据目标指令集中当前执行指令确定当前执行功能信息,并将当前执行功能信息分发到指令执行模块。指令执行模块从数据存储模块读取出待处理数据,并根据当前执行功能信息对待处理数据以对应逻辑处理得到处理结果,再将处理结果存入到数据存储模块中。因此,指令的执行过程为单向过程,无需分支预测单元和Cache进行分支预测,那么指令执行时间准确,且相对于分支预测的执行周期减少,指令执行的关联模块设置简化能够缩小芯片面积。

请参照图7和图8,在一些实施例中,微处理器的1个时钟周期包括:上升沿、高电平半周期、下降沿和低电平半周期;基于RISC架构的微处理器控制方法还包括但不限于步骤S701至步骤S702:

步骤S701:在上升沿时,指令读取模块触发,且指令读取模块在高电平半周期读取指令;

步骤S702:在下降沿时,寄存模块接收并寄存来自指令读取模块的指令,指令解码模块、数据存储模块和指令执行模块在低电平半周期内依次完成解码、数据输出和指令执行动作;

或者,

步骤S803:在下降沿时,指令读取模块触发,且指令读取模块在低电平半周期读取指令;

步骤S804:在上升沿时,寄存模块接收并寄存来自指令读取模块的指令,指令解码模块、数据存储模块和指令执行模块在高电平半周期内依次完成解码、数据输出和指令执行动作。

需要说明的是,通过指令读取模块、数据存储模块、寄存模块、指令解码模块和指令执行模块在1个时钟周期完成,使得指令执行时间确定,且仅需要单个周期那么采用的模块更加简化,使得芯片的面积更小,以实现小型化面积设计。

其中,基于RISC架构的微处理器控制方法的具体过程请参照上述基于RISC架构的微处理器,此处不再赘述。

本公开实施例还公开了一种基于RISC架构的芯片,包括:基于RISC架构的微处理器,基于RISC架构的微处理器如上述的基于RISC架构的微处理器;

外围电路,外围电路与微处理器电性连接。

需要说明的是,外围电路可以包括晶振电路、信号处理(如滤波)电路、复位电路等等,在本实施例中对外围电路的设置不做限制。微处理器和外围电路封装在同一集成电路,以便于芯片使用更加方便。

本公开的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“包含”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或装置不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或装置固有的其它步骤或单元。

应当理解,在本公开中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。

应了解,在本公开实施例的描述中,多个(或多项)的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。

在本公开所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行本公开各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

还应了解,本公开实施例提供的各种实施方式可以任意进行组合,以实现不同的技术效果。

以上是对本公开的实施方式的具体说明,但本公开并不局限于上述实施方式,熟悉本领域的技术人员在不违背本公开精神的条件下还可作出种种等同的变形或替换,这些等同的变形或替换均包括在本公开权利要求所限定的范围内。

相关技术
  • 基于RISC-V指令集架构的车用微处理器芯片架构
  • 基于RISC-V核的工业控制及通信芯片架构
技术分类

06120116081910