CN113656074B - 一种risc架构处理器及其并行流水线结构设计方法 - Google Patents
一种risc架构处理器及其并行流水线结构设计方法 Download PDFInfo
- Publication number
- CN113656074B CN113656074B CN202111208194.0A CN202111208194A CN113656074B CN 113656074 B CN113656074 B CN 113656074B CN 202111208194 A CN202111208194 A CN 202111208194A CN 113656074 B CN113656074 B CN 113656074B
- Authority
- CN
- China
- Prior art keywords
- instruction
- pipeline
- processor
- instructions
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000013461 design Methods 0.000 title abstract description 19
- 230000015654 memory Effects 0.000 claims abstract description 137
- 239000000872 buffer Substances 0.000 claims abstract description 81
- 230000008569 process Effects 0.000 claims description 14
- 230000000903 blocking effect Effects 0.000 claims description 8
- 230000008571 general function Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 25
- 230000007704 transition Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000000737 periodic effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明公开一种RISC架构处理器及其并行流水线结构设计方法,涉及处理器技术领域。所述处理器包括:指令存储器,其读取数据位宽是指令位宽的n倍;处理器内核,包括不参与流水线的取指令部件、不包含取指令的流水线部件和用于存储n条指令的一组指令缓存器,取指令部件和流水线部件组成并行流水线结构;取指令部件在每n个时钟周期读取一次指令存储器,每次在n个时钟周期内从指令存储器取出至少1条至多n条指令,在第n个时钟周期结束之前将指令存入指令缓存器;流水线部件在每个时钟周期从指令缓存器中取出一条指令,并对所述指令进行指令译码、指令执行、存储器访问或数据回写的流水线操作。通过本发明实施例,可以降低处理器的成本和设计难度。
Description
技术领域
本发明涉及处理器技术领域,尤其涉及一种RISC架构处理器及其并行流水线结构设计方法。
背景技术
随着集成电路技术的发展,集成电路的工艺越来越先进,器件速度也变得越来越快,处理器的性能也越来越高。
目前的处理器中,根据指令集的技术特点上大致分成两大种类架构:复杂指令集处理器(Complex Instruction Set Computing,CISC)和精简指令集处理器(ReducedInstruction Set Computing,RISC)。RISC架构的指令集系统相对简单,只需要实现有限的常用且比较简单的指令,其他的复杂操作通过编译技术由多条指令组合完成。
但是,随着RISC架构的处理器的性能也越来越高,处理器中各种功能单元部件性能的提高步伐并不一致,其取决于不同类型器件之间的差异,同时也受电路原理制约,导致在同一工艺条件下有些功能单元部件的性能可能落后于其他功能单元部件;特别是存储器的速度一般而言是处理器中的短板,其中又以非易失性存储器的速度最慢;而处理器中一般情况下会将非易失性存储器用作指令存储器。
为了弥补指令读取速度过慢的问题通常采用高速大容量的SRAM(Static RandomAccess Memory,静态随机存取存储器)作为指令缓存器;但是在低端嵌入式微处理器中内置大容量的指令缓存器会导致处理器的成本大幅上升,同时也大大增加了处理器电路的设计和生产难度。
发明内容
本发明实施例旨在提供一种RISC架构处理器及其并行流水线结构设计方法,可以使处理器在使用速度较慢的存储器作为指令存储时仍能匹配处理器中其他速度比较快的硬件电路,以实现不受存储器速度限制的流水线设计,无需使用高速大容量的SRAM作为指令缓存器,降低处理器的成本和设计难度,特别适用于低成本嵌入式微处理器领域。
为解决上述技术问题,本发明实施例提供以下技术方案:一种RISC架构处理器,所述处理器包括:处理器内核和指令存储器;其中:
所述指令存储器的读取数据位宽是指令位宽的n倍,其中指令存储器的读取周期小于n倍处理器时钟周期;其中,n≥2;
所述处理器内核包括不参与流水线的取指令部件、不包含取指令的流水线部件和用于存储n条指令的一组指令缓存器,所述取指令部件和所述流水线部件组成并行流水线结构,所述处理器内核使所述取指令部件和流水线部件并行工作;
所述取指令部件,用于在每n个时钟周期读取一次指令存储器,每次在n个时钟周期内从指令存储器取出至少1条至多n条指令,并在第n个时钟周期结束之前将取出的指令存入指令缓存器;
所述流水线部件,用于在每个时钟周期从指令缓存器中取出一条指令,并对所述指令进行指令译码、指令执行、存储器访问或者数据回写的流水线操作。
可选地,所述流水线部件包括四级流水线,第一级为指令译码级,第二级为指令执行级,第三级为存储器访问级,第四级为数据回写级。
可选地,所述处理器内核还包括若干个通用功能寄存器;所述指令译码级,用于在每个时钟周期从指令缓存器中取出一条指令进行译码处理,并根据译码结果读取所述通用功能寄存器的数据。
可选地,所述指令执行级,用于在每个时钟周期执行一条指令。
可选地,所述处理器还包括数据存储器;所述存储器访问级,用于在每个时钟周期完成一次访问所述数据存储器。
可选地,所述数据回写级,用于在每个时钟周期将指令执行完成的结果或从数据存储器读取出的结果写入通用功能寄存器。
可选地,所述处理器在工作时,在不同的情况下有不同的工作状态,包括:
第一种工作状态:从第一个时钟开始,所述取指令部件IF从指令存储器中读取指令,完成读取指令后得到n条指令并存入指令缓存器;流水线部件在第n个时钟之前都处于等待状态。
第二种工作状态:流水线部件开始工作,每个时钟从指令缓存器中取得一条指令并执行;与此同时,取指令部件并行地在每n个时钟从指令存储器中读取一次指令并填充到指令缓存器。
第三种工作状态:流水线部件在指令执行过程中发生资源冲突或在执行多时钟周期指令导致流水线阻塞,流水线进入阻塞等待状态,取指令部件相应地延长读取时钟,直到流水线阻塞状态消除,流水线继续正常执行后序指令。
第四种工作状态:流水线部件在执行指令过程中发生程序跳转,指令在数据回写级阶段执行跳转操作,该跳转操作取消了流水线中正在运行的后序指令操作,同时更新了取指令部件中的指令地址,取指令部件的取指令的操作时钟周期清零,重新计算取新指令的时钟周期,如果跳转地址为n的整数倍则转换到第一种工作状态,如果跳转地址为n的非整数倍则转换到第五种工作状态。
第五种工作状态:流水线部件执行完跳转操作后,如果跳转地址为n的非整数倍,则所述取指令部件在n个时钟周期后读取到少于n条的指令并存入指令缓存器中。
第六种工作状态:指令缓存器中存储的指令数为m,其中m<n,每个时钟周期流水线部件从指令缓存器中取出1条指令执行操作,当经过m个时钟后周期,指令缓存器中存储的指令完全被取出,在下一个时钟周期流水线进入无操作等待状态,直到第n个时钟周期后,取指令部件将n条指令存入指令缓存器后,处理器内核的并行流水线结构切换到第二种工作状态。
为解决上述技术问题,本发明实施例还提供以下技术方案:一种RISC架构处理器的并行流水线结构设计方法,应用于本发明任一实施例所述的一种RISC架构处理器,所述处理器包括:指令存储器和处理器内核;其中,所述方法包括:
S1、设置指令存储器的读取数据位宽是指令位宽的n倍,其中指令存储器的读取周期小于n倍处理器时钟周期;其中,n≥2;
S2、在处理器内核设置不参与流水线的取指令部件、不包含取指令的流水线部件和用于存储n条指令的一组指令缓存器,所述取指令部件和所述流水线部件组成并行流水线结构,所述处理器内核使所述取指令部件和流水线部件并行工作;
S3、取指令部件在每n个时钟周期读取一次指令存储器,每次在n个时钟周期内从指令存储器取出至少1条至多n条指令,并在第n个时钟周期结束之前将取出的指令存入指令缓存器;
S4、流水线部件在每个时钟周期从指令缓存器中取出一条指令,并对所述指令进行指令译码、指令执行、存储器访问或者数据回写的流水线操作。
与现有技术相比较,本发明实施例提供的一种RISC架构处理器及其并行流水线结构设计方法,在本实施例中,通过所述处理器包括处理器内核和指令存储器;其中:所述指令存储器的读取数据位宽是指令位宽的n倍(n≥2),其中指令存储器的读取周期小于n倍处理器时钟周期;所述处理器内核包括不参与流水线的取指令部件、不包含取指令的流水线部件和用于存储n条指令的一组指令缓存器,所述取指令部件和所述流水线部件组成并行流水线结构,所述处理器内核使所述取指令部件和流水线部件并行工作;所述取指令部件在每n个时钟周期读取一次指令存储器,每次在n个时钟周期内从指令存储器取出至少1条至多n条指令,并在第n个时钟周期结束之前将取出的指令存入指令缓存器;所述流水线部件,用于在每个时钟周期从指令缓存器中取出一条指令,并对所述指令进行指令译码、指令执行、存储器访问或者数据回写的流水线操作。从而提供一种基于RISC架构处理器包括并行流水线结构,将传统的流水线结构的取指令级与其他流水线级分开为并行结构,将取指令级置于取指令部件中,其他流水线级置于流水线部件中,所述取指令部件和所述流水线部件组成并行流水线结构,所述处理器内核使所述取指令部件和流水线部件并行工作;取指令部件的取指令级通过周期性独立操作每次读取多条指令并储存到指令缓存器中,流水线部件的其他流水线级并行地从指令缓存器中提取指令保持流水线执行指令,通过这种并行流水线结构以实现与传统的串行流水线结构一样的处理器功能,从而可以使处理器在使用速度较慢的存储器作为指令存储时仍能匹配处理器中其他速度比较快的硬件电路,以实现不受存储器速度限制的流水线设计,无需使用高速大容量的SRAM作为指令缓存器,降低处理器的成本和设计难度,特别适用于低成本嵌入式微处理器领域。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本发明提供的一种RISC架构处理器的结构示意图。
图2是本发明提供的一种RISC架构处理器的另一结构示意图。
图3是本发明提供一种RISC架构处理器中处理器内核的取指令部件与流水线部件构成并行流水线结构的示意图。
图4是本发明提供一种RISC架构处理器中处理器内核的取指令部件从指令存储器中读取指令的工作状态示意图。
图5是本发明提供一种RISC架构处理器中处理器内核的流水线部件在指令执行过程中没有发生资源冲突或执行多时钟周期指令情况下的工作状态示意图。
图6是本发明提供一种RISC架构处理器中处理器内核的流水线部件在指令执行过程中发生资源冲突情况下的工作状态示意图。
图7是本发明提供一种RISC架构处理器中处理器内核的流水线部件在执行多时钟周期指令导致流水线阻塞情况下的工作状态示意图。
图8是本发明提供一种RISC架构处理器中处理器内核的流水线部件在指令执行过程中发生程序跳转情况下的工作状态示意图。
图9是本发明提供一种RISC架构处理器中处理器内核的取指令部件完成读取指令存储器后得到少于n条指令并存入指令缓存器后的工作状态示意图。
图10是本发明提供一种RISC架构处理器中处理器内核的取指令部件存入指令缓存器少于n条指令后流水线部件的工作状态示意图。
图11是本发明提供一种RISC架构处理器中处理器内核的取指令部件和流水线部件构成的并行流水线结构的工作状态示意图。
图12是本发明提供一种RISC架构处理器的并行流水线设计方法的流程示意图。
具体实施方式
为了便于理解本发明,下面结合附图和具体实施例,对本发明进行更详细的说明。需要说明的是,当元件被表述“固定于”另一个元件,它可以直接在另一个元件上、或者其间可以存在一个或多个居中的元件。当一个元件被表述“连接”另一个元件,它可以是直接连接到另一个元件、或者其间可以存在一个或多个居中的元件。本说明书所使用的术语“上”、“下”、“内”、“外”、“底部”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性。
除非另有定义,本说明书所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本说明书中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是用于限制本发明。本说明书所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
此外,下面所描述的本发明不同实施例中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
在一个实施例中,如图1所示,本发明提供一种RISC架构处理器,所述处理器包括:处理器内核1和指令存储器2;其中:
所述指令存储器2的读取数据位宽是指令位宽的n倍,其中指令存储器的读取周期小于n倍处理器时钟周期;其中,n≥2;
所述处理器内核1包括不参与流水线的取指令部件11、不包含取指令的流水线部件12和用于存储n条指令的一组指令缓存器13,所述取指令部件11和所述流水线部件12组成并行流水线结构,所述处理器内核使所述取指令部件11和流水线部件12并行工作;
所述取指令部件11,用于在每n个时钟周期读取一次指令存储器2,每次在n个时钟周期内从指令存储器2取出至少1条至多n条指令,并在第n个时钟周期结束之前将取出的指令存入指令缓存器13;
所述流水线部件12,用于在每个时钟周期从指令缓存器13中取出一条指令,并对所述指令进行指令译码、指令执行、存储器访问或者数据回写的流水线操作。
在本实施例中,通过所述处理器包括处理器内核和指令存储器;其中:所述指令存储器的读取数据位宽是指令位宽的n倍,其中指令存储器的读取周期小于n倍处理器时钟周期;所述处理器内核包括不参与流水线的取指令部件、不包含取指令的流水线部件和用于存储n条指令的一组指令缓存器,所述取指令部件和所述流水线部件组成并行流水线结构,所述处理器内核使所述取指令部件和流水线部件并行工作;所述取指令部件在每n个时钟周期读取一次指令存储器,每次在n个时钟周期内从指令存储器取出至少1条至多n条指令,并在第n个时钟周期结束之前将取出的指令存入指令缓存器;所述流水线部件,用于在每个时钟周期从指令缓存器中取出一条指令,并对所述指令进行指令译码、指令执行、存储器访问或者数据回写的流水线操作。从而提供一种基于RISC架构处理器包括并行流水线结构,将传统的流水线结构的取指令级与其他流水线级分开为并行结构,将取指令级置于取指令部件中,其他流水线级置于流水线部件中,所述取指令部件和所述流水线部件组成并行流水线结构,所述处理器内核使所述取指令部件和流水线部件并行工作;取指令部件的取指令级通过周期性独立操作每次读取多条指令并储存到指令缓存器中,流水线部件的其他流水线级并行地从指令缓存器中提取指令保持流水线执行指令,通过这种并行流水线结构以实现与传统的串行流水线结构一样的处理器功能,从而可以使处理器在使用速度较慢的存储器作为指令存储时仍能匹配处理器中其他速度比较快的硬件电路,以实现不受存储器速度限制的流水线设计,无需使用高速大容量的SRAM作为指令缓存器,降低处理器的成本和设计难度,特别适用于低成本嵌入式微处理器领域。
在一个实施例中,如图2所示,所述处理器内核1还包括若干个通用功能寄存器14,所述通用功能寄存器用于存储数据。
在一个实施例中,如图1和图2所示,所述处理器还包括数据存储器3,所述数据存储器3用于存储数据。
在一个实施例中,如图3所示,是本发明提供一种RISC架构处理器中处理器内核的取指令部件与流水线部件构成并行流水线结构的示意图。
在图3中,所述处理器内核1包括不参与流水线的取指令部件(IF)11和不包含取指令的流水线部件12,所述取指令部件(IF)11和所述流水线部件12组成并行流水线结构B(如图3中的虚线框所示),所述处理器内核1使所述取指令部件(IF)11和流水线部件12并行工作。
所述取指令部件(IF)11,在每n个时钟周期读取一次指令存储器2,每次在n个时钟周期内从指令存储器2取出至少1条至多n条指令,并在第n个时钟周期结束之前将取出的指令存入指令缓存器13。
所述流水线部件12,用于在每个时钟周期从指令缓存器中取出一条指令,并对所述指令进行指令译码、指令执行、存储器访问或者数据回写的流水线操作。所述流水线部件12包括四级流水线,第一级为指令译码级RF,第二级为指令执行级EX,第三级为存储器访问级MEM,第四级为数据回写级WB。其中:
所述指令译码级RF,用于在每个时钟周期从指令缓存器中取出一条指令进行译码处理,并根据译码结果读取通用功能寄存器的数据。
所述指令执行级EX,用于在每个时钟周期执行一条指令。
所述存储器访问级MEM,用于在每个时钟周期完成一次访问数据存储器3。
所述数据回写级WB,用于在每个时钟周期将指令执行完成的结果或从数据存储器3读取出的结果写入通用功能寄存器。
上述所述处理器内核的并行流水线结构,在不同的情况下有不同的工作状态,具体如下:
第一种工作状态1:如图4所示是本发明提供一种RISC架构处理器中处理器内核的取指令部件从指令存储器中读取指令的工作状态示意图。
在图4中,从第一个时钟周期开始,所述取指令部件IF从指令存储器中读取指令。
因为指令存储器的速度低于处理器的速度,指令存储器与处理器的关系如下式(1)所示:
((n-1) * Tcpu) <Tmem< (n * Tcpu) ……(1)
上式(1)中,Tcpu为处理器的时钟周期,Tmem为指令存储器的时钟周期。
所以,所述取指令部件IF需要n个时钟周期才能成功地从指令存储器中读取一次指令。所述取指令部件IF在第n个时钟周期结束前成功地从指令存储器中读取得到n条指令,并将读取得到n条指令存放到指令缓存器中。此时,流水线部件在第n个时钟周期之前都处于等待状态。
第二种工作状态2:如图5所示是本发明提供一种RISC架构处理器中处理器内核的流水线部件在指令执行过程中没有发生资源冲突或执行多时钟周期指令情况下的工作状态示意图。
在图5中,流水线部件开始工作,每个时钟周期从指令缓存器中取得一条指令并执行;与此同时,取指令部件并行地在每n个时钟周期从指令存储器中读取一次指令并填充到指令缓存器。因此,在没有发生指令地址跳转和流水线冲突的情况下,处理器能不间断地在每个时钟周期执行一条指令,在这种工作状态下,取指令部件的n个时钟周期等于处理器的n个时钟周期。
第三种工作状态3:如图6所示是本发明提供一种RISC架构处理器中处理器内核的流水线部件在指令执行过程中发生资源冲突情况下的工作状态示意图。
如图7所示是本发明提供一种RISC架构处理器中处理器内核的流水线部件在执行多时钟周期指令导致流水线阻塞情况下的工作状态示意图。
在图6中,流水线部件因为在指令执行过程中发生资源冲突,流水线进入阻塞等待状态,取指令部件相应地延长读取时钟周期,直到流水线阻塞状态消除,流水线继续正常执行后序指令。因为取指令部件延长了相应个数的阻塞时钟周期,所以在流水线部件执行n条指令的相同时钟周期数内取指令部件读取n条指令,两个部件之间达到了指令数平衡。
在图7中,流水线部件因为在指令执行过程中遇到执行多时钟周期指令的情况,流水线进入阻塞等待状态,取指令部件相应地延长读取时钟周期,直到流水线阻塞状态消除,流水线继续正常执行后序指令。因为取指令部件延长了相应个数的阻塞时钟周期,所以在流水线部件执行n条指令的相同时钟周期数内取指令部件读取n条指令,两个部件之间达到了指令数平衡。
第四种工作状态4:如图8所示是本发明提供一种RISC架构处理器中处理器内核的流水线部件在指令执行过程中发生程序跳转情况下的工作状态示意图。
在图8中,流水线部件在执行指令过程中发生程序跳转,指令在数据回写级WB阶段执行跳转操作,该跳转操作取消了流水线中正在运行的后序指令操作,同时更新了取指令部件中的指令地址,取指令部件的取指令的操作时钟周期清零,重新计算取新指令的时钟周期,如果跳转地址为n的整数倍则转换到第一种工作状态1,如果跳转地址为n的非整数倍则转换到第五种工作状态。
第五种工作状态5:如图9所示是本发明提供一种RISC架构处理器中处理器内核的取指令部件完成读取指令存储器后得到少于n条指令并存入指令缓存器后的工作状态示意图。
在图9中,流水线部件执行完跳转操作后,如果跳转地址为n的非整数倍,则因为取指令部件的读指令地址与位宽是n倍指令宽度的指令存储器的物理地址之间为非对齐状态,所以取指令部件在n个时钟周期后读取到少于n条的指令并存入指令缓存器中。取指令部件在此次操作完成后下一次的读取地址自然地变为了n的整数倍。
第六种工作状态6:如图10所示是本发明提供一种RISC架构处理器中处理器内核的取指令部件存入指令缓存器少于n条指令后流水线部件的工作状态示意图。
在图10中,指令缓存器中存储的指令数为m,其中m<n,每个时钟周期流水线部件从指令缓存器中取出1条指令执行操作,当经过m个时钟后周期,指令缓存器中存储的指令已经完全被取出,同时因为取指令部件需要n个时钟周期才能取得新一组指令存入指令缓存器,所以在下一个时钟周期流水线无法获得新指令,只能进入无操作等待状态。直到第n个时钟周期后,取指令部件将n条指令存入指令缓存器后,处理器内核的并行流水线结构切换到第二种工作状态2。
上述所述处理器内核的并行流水线结构,通过采用增加指令存储器的单次读取数据位宽,同时通过并行地独立运行取指令部件和流水线部件以达到指令读取数在累计时钟周期情况下与流水线执行指令数平衡,就能实现只采用一个非常小容量的指令缓存来解决指令存储器速度过慢影响处理器速度的问题。
以下以一个具体的实施案,对本发明的技术方案作进一步的描述,但本发明并不限于这些实施案例。
如图11所示,一种RISC架构处理器,所述处理器采用180nm工艺,所述处理器包括:处理器内核和指令存储器;其中:所述指令存储器采用Flash存储器(闪存,Flash Memory)或OTP(One Time Programmable,一次性可编程)型存储器,设所述指令存储器的访问时间为Tmem,其中,25ns <Tmem< 30ns为典型值。
处理器的时钟频率设计目标是100MHz,则可以得出时钟周期Tcpu为10ns。
根据指令存储器与处理器的以下关系式(1),可以计算得出n=3。
((n-1) * Tcpu) <Tmem< (n * Tcpu) ……(1)
所以,所述指令存储器的读取数据位宽是指令位宽的3倍,其中指令存储器的读取周期小于3倍处理器时钟周期。所述指令存储器可以采用3倍指令位宽的1个Flash或OTP型存储器,也可以用3个与指令位宽相等的Flash或OTP型存储器并行组成。
如图11所示,取指令部件每3个时钟周期读取一次指令存储器,每次花费3个时钟周期从指令存储器中读取出1、2或3条指令,在每次读取成功后在第3个时钟周期结束前将读取的指令存入指令缓存器。流水线部件在每个时钟周期从指令缓存器中取出1条指令执行。具体的执行过程与上述的工作状态1至工作状态4相同,可以参考上述的工作状态1至工作状态4,在此不再赘述。
基于同一构思,在一个实施例中,如图12所示,本发明提供一种RISC架构处理器的并行流水线结构设计方法,应用于如上述任一实施例所述的一种RISC架构处理器,所述处理器包括:指令存储器和处理器内核;其中,所述方法包括:
S1、设置指令存储器的读取数据位宽是指令位宽的n倍(n≥2),其中指令存储器的读取周期小于n倍处理器时钟周期;
S2、在处理器内核设置不参与流水线的取指令部件、不包含取指令的流水线部件和用于存储n条指令的一组指令缓存器,所述取指令部件和所述流水线部件组成并行流水线结构,所述处理器内核使所述取指令部件和流水线部件并行工作;
S3、取指令部件在每n个时钟周期读取一次指令存储器,每次在n个时钟周期内从指令存储器取出至少1条至多n条指令,并在第n个时钟周期结束之前将取出的指令存入指令缓存器;
S4、流水线部件在每个时钟周期从指令缓存器中取出一条指令,并对所述指令进行指令译码、指令执行、存储器访问或者数据回写的流水线操作。
在本实施例中,通过所述处理器包括处理器内核和指令存储器;其中:设置指令存储器的读取数据位宽是指令位宽的n倍(n≥2),其中指令存储器的读取周期小于n倍处理器时钟周期;在处理器内核设置不参与流水线的取指令部件、不包含取指令的流水线部件和用于存储n条指令的一组指令缓存器,所述取指令部件和所述流水线部件组成并行流水线结构,所述处理器内核使所述取指令部件和流水线部件并行工作;取指令部件在每n个时钟周期读取一次指令存储器,每次在n个时钟周期内从指令存储器取出至少1条至多n条指令,并在第n个时钟周期结束之前将取出的指令存入指令缓存器;流水线部件在每个时钟周期从指令缓存器中取出一条指令,并对所述指令进行指令译码、指令执行、存储器访问或者数据回写的流水线操作。从而提供一种基于RISC架构处理器的并行流水线结构设计方法,将传统的流水线结构的取指令级与其他流水线级分开为并行结构,将取指令级置于取指令部件中,其他流水线级置于流水线部件中,所述取指令部件和所述流水线部件组成并行流水线结构,所述处理器内核使所述取指令部件和流水线部件并行工作;取指令部件的取指令级通过周期性独立操作每次读取多条指令并储存到指令缓存器中,流水线部件的其他流水线级并行地从指令缓存器中提取指令保持流水线执行指令,通过这种并行流水线结构以实现与传统的串行流水线结构一样的处理器功能,从而可以使处理器在使用速度较慢的存储器作为指令存储时仍能匹配处理器中其他速度比较快的硬件电路,以实现不受存储器速度限制的流水线设计,无需使用高速大容量的SRAM作为指令缓存器,降低处理器的成本和设计难度,特别适用于低成本嵌入式微处理器领域。
在一个实施例中,所述步骤S2中,所述处理器内核包括不参与流水线的取指令部件IF和不包含取指令的流水线部件,所述取指令部件IF和所述流水线部件组成并行流水线结构,所述处理器内核使所述取指令部件IF和流水线部件并行工作。
所述流水线部件包括四级流水线,第一级为指令译码级RF,第二级为指令执行级EX,第三级为存储器访问级MEM,第四级为数据回写级WB。
所述步骤S4中,所述流水线部件在每个时钟周期从指令缓存器中取出一条指令,并对所述指令进行指令译码、指令执行、存储器访问或者数据回写的流水线操作;包括:
所述指令译码级RF在每个时钟周期从指令缓存器中取出一条指令进行译码处理,并根据译码结果读取通用功能寄存器的数据。
所述指令执行级EX在每个时钟周期执行一条指令。
所述存储器访问级MEM在每个时钟周期完成一次访问数据存储器3。
所述数据回写级WB在每个时钟周期将指令执行完成的结果或从数据存储器3读取出的结果写入通用功能寄存器。
上述所述处理器内核的并行流水线结构,在不同的情况下有不同的工作状态,具体如下:
第一种工作状态1:如图4所示是本发明提供一种RISC架构处理器中处理器内核的取指令部件从指令存储器中读取指令的工作状态示意图。
在图4中,从第一个时钟周期开始,所述取指令部件IF从指令存储器中读取指令。
因为指令存储器的速度低于处理器的速度,指令存储器与处理器的关系如下式(1)所示:
((n-1) * Tcpu) <Tmem< (n * Tcpu) ……(1)
上式(1)中,Tcpu为处理器的时钟周期,Tmem为指令存储器的时钟周期。
所以,所述取指令部件IF需要n个时钟周期才能成功地从指令存储器中读取一次指令。所述取指令部件IF在第n个时钟周期结束前成功地从指令存储器中读取得到n条指令,并将读取得到n条指令存放到指令缓存器中。此时,流水线部件在第n个时钟周期之前都处于等待状态。
第二种工作状态2:如图5所示是本发明提供一种RISC架构处理器中处理器内核的流水线部件在指令执行过程中没有发生资源冲突或执行多时钟周期指令情况下的工作状态示意图。
在图5中,流水线部件开始工作,每个时钟周期从指令缓存器中取得一条指令并执行;与此同时,取指令部件并行地在每n个时钟周期从指令存储器中读取一次指令并填充到指令缓存器。因此,在没有发生指令地址跳转和流水线冲突的情况下,处理器能不间断地在每个时钟周期执行一条指令,在这种工作状态下,取指令部件的n个时钟周期等于处理器的n个时钟周期。
第三种工作状态3:如图6所示是本发明提供一种RISC架构处理器中处理器内核的流水线部件在指令执行过程中发生资源冲突情况下的工作状态示意图。
如图7所示是本发明提供一种RISC架构处理器中处理器内核的流水线部件在执行多时钟周期指令导致流水线阻塞情况下的工作状态示意图。
在图6中,流水线部件因为在指令执行过程中发生资源冲突,流水线进入阻塞等待状态,取指令部件相应地延长读取时钟周期,直到流水线阻塞状态消除,流水线继续正常执行后序指令。因为取指令部件延长了相应个数的阻塞时钟周期,所以在流水线部件执行n条指令的相同时钟周期数内取指令部件读取n条指令,两个部件之间达到了指令数平衡。
在图7中,流水线部件因为在指令执行过程中遇到执行多时钟周期指令的情况,流水线进入阻塞等待状态,取指令部件相应地延长读取时钟周期,直到流水线阻塞状态消除,流水线继续正常执行后序指令。因为取指令部件延长了相应个数的阻塞时钟周期,所以在流水线部件执行n条指令的相同时钟周期数内取指令部件读取n条指令,两个部件之间达到了指令数平衡。
第四种工作状态4:如图8所示是本发明提供一种RISC架构处理器中处理器内核的流水线部件在指令执行过程中发生程序跳转情况下的工作状态示意图。
在图8中,流水线部件在执行指令过程中发生程序跳转,指令在数据回写级WB阶段执行跳转操作,该跳转操作取消了流水线中正在运行的后序指令操作,同时更新了取指令部件中的指令地址,取指令部件的取指令的操作时钟周期清零,重新计算取新指令的时钟周期,如果跳转地址为n的整数倍则转换到第一种工作状态1,如果跳转地址为n的非整数倍则转换到第五种工作状态。
第五种工作状态5:如图9所示是本发明提供一种RISC架构处理器中处理器内核的取指令部件完成读取指令存储器后得到少于n条指令并存入指令缓存器后的工作状态示意图。
在图9中,流水线部件执行完跳转操作后,如果跳转地址为n的非整数倍,则因为取指令部件的读指令地址与位宽是n倍指令宽度的指令存储器的物理地址之间为非对齐状态,所以取指令部件在n个时钟周期后读取到少于n条的指令并存入指令缓存器中。取指令部件在此次操作完成后下一次的读取地址自然地变为了n的整数倍。
第六种工作状态6:如图10所示是本发明提供一种RISC架构处理器中处理器内核的取指令部件存入指令缓存器少于n条指令后流水线部件的工作状态示意图。
在图10中,指令缓存器中存储的指令数为m,其中m<n,每个时钟周期流水线部件从指令缓存器中取出1条指令执行操作,当经过m个时钟后周期,指令缓存器中存储的指令已经完全被取出,同时因为取指令部件需要n个时钟周期才能取得新一组指令存入指令缓存器,所以在下一个时钟周期流水线无法获得新指令,只能进入无操作等待状态。直到第n个时钟周期后,取指令部件将n条指令存入指令缓存器后,处理器内核的并行流水线结构切换到第二种工作状态2。
上述处理器内核的并行流水线结构,通过采用增加指令存储器的单次读取数据位宽,同时通过并行地独立运行取指令部件和流水线部件以达到指令读取数在累计时钟周期情况下与流水线执行指令数平衡,从而实现只采用一个非常小容量的指令缓存来解决指令存储器速度过慢影响处理器速度的问题。
需要说明的是,上述方法实施例与处理器实施例属于同一构思,其具体实现过程详见处理器实施例,且处理实施例中的技术特征在所述方法实施例中均对应适用,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (13)
1.一种RISC架构处理器,其特征在于,所述处理器包括:处理器内核和指令存储器;其中:
所述指令存储器的读取数据位宽是指令位宽的n倍,其中指令存储器的读取周期小于n倍处理器时钟周期;其中,n≥2;
所述处理器内核包括不参与流水线的取指令部件、不包含取指令的流水线部件和用于存储n条指令的一组指令缓存器,所述取指令部件和所述流水线部件组成并行流水线结构,所述处理器内核使所述取指令部件和流水线部件并行工作;
所述取指令部件,用于在每n个时钟周期读取一次指令存储器,每次在n个时钟周期内从指令存储器取出至少1条至多n条指令,并在第n个时钟周期结束之前将取出的指令存入指令缓存器;
所述流水线部件,用于在每个时钟周期从指令缓存器中取出一条指令,并对所述指令进行指令译码、指令执行、存储器访问或者数据回写的流水线操作。
2.根据权利要求1所述的处理器,其特征在于,所述流水线部件包括四级流水线,第一级为指令译码级,第二级为指令执行级,第三级为存储器访问级,第四级为数据回写级。
3.根据权利要求2所述的处理器,其特征在于,所述处理器内核还包括若干个通用功能寄存器;所述指令译码级,用于在每个时钟周期从指令缓存器中取出一条指令进行译码处理,并根据译码结果读取所述通用功能寄存器的数据。
4.根据权利要求3所述的处理器,其特征在于,所述指令执行级,用于在每个时钟周期执行一条指令。
5.根据权利要求4所述的处理器,其特征在于,所述处理器还包括数据存储器;所述存储器访问级,用于在每个时钟周期完成一次访问所述数据存储器。
6.根据权利要求5所述的处理器,其特征在于,所述数据回写级,用于在每个时钟周期将指令执行完成的结果或从数据存储器读取出的结果写入通用功能寄存器。
7.根据权利要求6所述的处理器,其特征在于,所述处理器在工作时,在不同的情况下有不同的工作状态,包括:
第一种工作状态:从第一个时钟开始,所述取指令部件从指令存储器中读取指令,完成读取指令后得到n条指令并存入指令缓存器;流水线部件在第n个时钟之前都处于等待状态。
8.根据权利要求7所述的处理器,其特征在于,第二种工作状态:流水线部件开始工作,每个时钟从指令缓存器中取得一条指令并执行;与此同时,取指令部件并行地在每n个时钟从指令存储器中读取一次指令并填充到指令缓存器。
9.根据权利要求8所述的处理器,其特征在于,第三种工作状态:流水线部件在指令执行过程中发生资源冲突或在执行多时钟周期指令导致流水线阻塞,流水线进入阻塞等待状态,取指令部件相应地延长读取时钟,直到流水线阻塞状态消除,流水线继续正常执行后序指令。
10.根据权利要求9所述的处理器,其特征在于,第四种工作状态:流水线部件在执行指令过程中发生程序跳转,指令在数据回写级阶段执行跳转操作,该跳转操作取消了流水线中正在运行的后序指令操作,同时更新了取指令部件中的指令地址,取指令部件的取指令的操作时钟周期清零,重新计算取新指令的时钟周期,如果跳转地址为n的整数倍则转换到第一种工作状态,如果跳转地址为n的非整数倍则转换到第五种工作状态。
11.根据权利要求10所述的处理器,其特征在于,第五种工作状态:流水线部件执行完跳转操作后,如果跳转地址为n的非整数倍,则所述取指令部件在n个时钟周期后读取到少于n条的指令并存入指令缓存器中。
12.根据权利要求11所述的处理器,其特征在于,第六种工作状态:指令缓存器中存储的指令数为m,其中m<n,每个时钟周期流水线部件从指令缓存器中取出1条指令执行操作,当经过m个时钟后周期,指令缓存器中存储的指令完全被取出,在下一个时钟周期流水线进入无操作等待状态,直到第n个时钟周期后,取指令部件将n条指令存入指令缓存器后,处理器内核的并行流水线结构切换到第二种工作状态。
13.一种RISC架构处理器的并行流水线结构设计方法,其特征在于,应用于如权利要求1至12任一项所述的一种RISC架构处理器,所述处理器包括:指令存储器和处理器内核;其中,所述方法包括:
设置指令存储器的读取数据位宽是指令位宽的n倍,其中指令存储器的读取周期小于n倍处理器时钟周期;其中,n≥2;
在处理器内核设置不参与流水线的取指令部件、不包含取指令的流水线部件和用于存储n条指令的一组指令缓存器,所述取指令部件和所述流水线部件组成并行流水线结构,所述处理器内核使所述取指令部件和流水线部件并行工作;
取指令部件在每n个时钟周期读取一次指令存储器,每次在n个时钟周期内从指令存储器取出至少1条至多n条指令,并在第n个时钟周期结束之前将取出的指令存入指令缓存器;
流水线部件在每个时钟周期从指令缓存器中取出一条指令,并对所述指令进行指令译码、指令执行、存储器访问或者数据回写的流水线操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111208194.0A CN113656074B (zh) | 2021-10-18 | 2021-10-18 | 一种risc架构处理器及其并行流水线结构设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111208194.0A CN113656074B (zh) | 2021-10-18 | 2021-10-18 | 一种risc架构处理器及其并行流水线结构设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113656074A CN113656074A (zh) | 2021-11-16 |
CN113656074B true CN113656074B (zh) | 2022-02-08 |
Family
ID=78494603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111208194.0A Active CN113656074B (zh) | 2021-10-18 | 2021-10-18 | 一种risc架构处理器及其并行流水线结构设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113656074B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6112298A (en) * | 1996-12-20 | 2000-08-29 | Texas Instruments Incorporated | Method for managing an instruction execution pipeline during debugging of a data processing system |
CN101989193A (zh) * | 2010-11-05 | 2011-03-23 | 青岛海信信芯科技有限公司 | 微控制器及其指令执行方法 |
CN104575585A (zh) * | 2015-01-15 | 2015-04-29 | 西安华芯半导体有限公司 | 一种dram扩展结构及dram扩展方法 |
CN104834483A (zh) * | 2015-05-11 | 2015-08-12 | 江苏宏云技术有限公司 | 一种提升嵌入式mcu性能的实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109918130A (zh) * | 2019-01-24 | 2019-06-21 | 中山大学 | 一种具有快速数据旁路结构的四级流水线risc-v处理器 |
-
2021
- 2021-10-18 CN CN202111208194.0A patent/CN113656074B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6112298A (en) * | 1996-12-20 | 2000-08-29 | Texas Instruments Incorporated | Method for managing an instruction execution pipeline during debugging of a data processing system |
CN101989193A (zh) * | 2010-11-05 | 2011-03-23 | 青岛海信信芯科技有限公司 | 微控制器及其指令执行方法 |
CN104575585A (zh) * | 2015-01-15 | 2015-04-29 | 西安华芯半导体有限公司 | 一种dram扩展结构及dram扩展方法 |
CN104834483A (zh) * | 2015-05-11 | 2015-08-12 | 江苏宏云技术有限公司 | 一种提升嵌入式mcu性能的实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113656074A (zh) | 2021-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6269439B1 (en) | Signal processor having pipeline processing that supresses the deterioration of processing efficiency and method of the same | |
EP1886216B1 (en) | Controlling out of order execution pipelines using skew parameters | |
US20140101415A1 (en) | Reducing data hazards in pipelined processors to provide high processor utilization | |
US6223278B1 (en) | Method and apparatus for floating point (FP) status word handling in an out-of-order (000) Processor Pipeline | |
JP2010532063A (ja) | 条件命令を無条件命令および選択命令へと拡張する方法およびシステム | |
US7971040B2 (en) | Method and device for saving and restoring a set of registers of a microprocessor in an interruptible manner | |
US20060259741A1 (en) | Controlling out of order execution pipelines issue tagging | |
JP2003108368A (ja) | 並列演算プロセッサ、その演算制御方法及びプログラム | |
CN101194228B (zh) | 执行微处理器和微控制器的子例行程序的快速返回的装置 | |
KR100983135B1 (ko) | 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법 | |
JP2008107983A (ja) | キャッシュメモリ | |
JP3790626B2 (ja) | デュアルワードまたは複数命令をフェッチしかつ発行する方法および装置 | |
EP1193594B1 (en) | Register renaming apparatus and processor | |
US5504923A (en) | Parallel processing with improved instruction misalignment detection | |
JP3725547B2 (ja) | 限定ラン分岐予測 | |
CN113656074B (zh) | 一种risc架构处理器及其并行流水线结构设计方法 | |
EP0279953B1 (en) | Computer system having mixed macrocode and microcode instruction execution | |
US20100100711A1 (en) | Data processor device and methods thereof | |
JP3182591B2 (ja) | マイクロプロセッサ | |
JP2008071061A (ja) | 情報処理装置 | |
JP3915019B2 (ja) | Vliwプロセッサ、プログラム生成装置、および記録媒体 | |
US5649226A (en) | Processor having multiple instruction registers | |
US20050114626A1 (en) | Very long instruction word architecture | |
US8275978B1 (en) | Execution of conditional branch instruction specifying branch point operand to be stored in jump stack with branch destination for jumping to upon matching program counter value | |
JP3512707B2 (ja) | マイクロコンピュータ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |