CN117055959A - 一种基于环形队列的可重构取指系统 - Google Patents
一种基于环形队列的可重构取指系统 Download PDFInfo
- Publication number
- CN117055959A CN117055959A CN202311039722.3A CN202311039722A CN117055959A CN 117055959 A CN117055959 A CN 117055959A CN 202311039722 A CN202311039722 A CN 202311039722A CN 117055959 A CN117055959 A CN 117055959A
- Authority
- CN
- China
- Prior art keywords
- instruction
- queue
- module
- jump
- reconfigurable
- 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.)
- Pending
Links
- 239000000872 buffer Substances 0.000 claims abstract description 31
- 238000011084 recovery Methods 0.000 claims description 21
- 238000000034 method Methods 0.000 claims description 15
- 125000004122 cyclic group Chemical group 0.000 claims description 6
- 230000006870 function Effects 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30069—Instruction skipping instructions, e.g. SKIP
-
- 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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本发明提供了一种基于环形队列的可重构取指系统,包括取指单元,用于向外部指令存储获取I条指令信息,生成跳转指令命中位置向量和压缩指令向量;基于环形队列的可重构指令发射数量指令缓冲区,用于接收取指单元的I条指令信息、跳转指令命中位置向量和压缩指令向量,根据压缩指令向量和跳转指令命中位置向量,将正常指令长度的I条指令信息拆解成有效指令;译码单元,用于获取基于环形队列的可重构指令发射数量指令缓冲区的有效指令进行译码,并根据预设的参数配置对译码的有效指令进行重构,根据重构的指令发射数量调整译码单元的输入与输出的指令数量,进而调整译码单元内部的译码模块数量。本发明能够降低取指系统的复杂度。
Description
技术领域
本发明涉及一种取指系统,尤其是指一种基于环形队列的可重构取指系统。
背景技术
1971年1月,Intel公司的特德霍夫成功研制出了第一个能够实际工作的微处理器4004,它的出现是计算机发展历史上的一个重要里程碑。RISC-V最早是由美国加州大学伯克利分校的Krste教授以及他的学生Andrew Waterman和Yunsup Lee为解决实际项目问题而提出的。而RV32C是RISC-V的压缩指令集扩展,在某些对Flash容量敏感的嵌入式应用中可以添加此扩展指令集。RV32C压缩指令集采用了一种新颖的方法,每条压缩指令必须与一条标准的32位RISC-V指令相对应。在处理器的各类并行技术中,多发射技术是一种在同一周期内处理多条指令的技术。多发射处理器在具有高性能的前提下仍能够保持良好的兼容性,对推动微处理器的发展具有积极作用。压缩指令虽然可以降低指令码长度,但是当多发射技术和压缩指令同时支持的时候,势必会给取指系统增加一定复杂度。
有鉴于此,有必要提出针对支持压缩指令的多发射处理器取指系统进行进一步的改进。
发明内容
本发明所要解决的技术问题是:提供一种基于环形队列的可重构取指系统,降低取指系统的复杂度。
为了解决上述技术问题,本发明采用的技术方案为:一种基于环形队列的可重构取指系统,包括取指单元、基于环形队列的可重构指令发射数量指令缓冲区,以及译码单元;
取指单元用于向外部指令存储获取I条指令信息,生成跳转指令命中位置向量和压缩指令向量;
基于环形队列的可重构指令发射数量指令缓冲区,用于接收取指单元的I条指令信息、跳转指令命中位置向量和压缩指令向量,根据压缩指令向量和跳转指令命中位置向量,将正常指令长度的I条指令信息拆解成有效指令;
译码单元,用于获取基于环形队列的可重构指令发射数量指令缓冲区的有效指令进行译码,并根据预设的参数配置对译码的有效指令进行重构,根据重构的指令发射数量调整译码单元的输入与输出的指令数量,进而调整译码单元内部的译码模块数量。
进一步的,所述取指单元包括分支预测失败恢复模块、跳转指令处理模块、指令地址顺序增长模块及指令地址选择模块;
分支预测失败恢复模块检查后面流水级是否有分支预测失败恢复信号;
若没有检测到分支预测失败恢复信号,则进入跳转指令处理模块,检查是否命中跳转指令,若命中则在输出的指令信息中加入跳转指令命中位置向量;
进入指令地址顺序增长模块,指令地址顺序按指令发射数I和指令宽度顺序增长;
进入指令地址选择模块,根据指令地址选择结果想指令存储发出取指请求,取得I条指令信息,生成压缩指令向量发送给基于环形队列的可重构指令发射数量指令缓冲区。
进一步的,若分支预测失败恢复模块有检测到分支预测失败恢复信号,则直接跳转至指令地址顺序增长模块。
进一步的,若跳转指令处理模块检查没有命中跳转指令,则直接跳转至指令地址顺序增长模块。
进一步的,所述基于环形队列的可重构指令发射数量指令缓冲区包括指令码环形队列模块、指令地址环形队列模块、数据有效性环形队列模块、入队逻辑控制模块和出队逻辑控制模块;
所述入队逻辑控制模块控制每个环形队列的存入,入队逻辑根据指令有效性向量和跳转指令命中位置向量决定;
所述指令码环形队列模块,根据输入的指令码进行处理,按顺序将多个指令码记录在环形队列中,同时根据指令码的内容,生成压缩指令的对应位置;
所述指令地址环形队列模块,根据输入的指令地址进行处理,按顺序将多个地址记录在环形队列中;
所述数据有效性环形队列模块,记录每个位置的指令数据的有效性,仅当该位置数据为有效数据的时候才给予输出;
出队逻辑控制模块控制着每个环形队列的读出,出队逻辑由压缩指令位置决定。
进一步的,所述入队逻辑控制模块被配置为,
接收取指模块发出的请求,查询环形队列是否有2*I个空位区域;
若有,将正常宽度的指令数据和指令信息输入入队逻辑控制模块;
将I个正常宽度的指令数据分解成2*I个压缩指令宽度的数据;
对压缩指令位置向量进行分解,分解出压缩指令;
对跳转指令位置向量进行分解,分解出跳转指令;
定义一个循环变量j,j的初始值为0;
判断j是否小于2*I;
若j小于2*I,则判断是否位置j有效,且位置0到位置j-2不为命中的正常跳转指令,且位置j-1不为压缩的命中跳转指令;
若是,则位置j予以入队,将位置j的指令码和指令地址存入对应环形队列中,该位置数据为有效性置,j=j+1;
继续循环判断j是否小于2*I。
进一步的,若j大于2*I,则直接结束流程;
若位置j无效,或位置0到位置J-2为命中的正常跳转指令,或位置j-1为压缩的命中跳转指令,则直接结束流程。
进一步的,所述出队逻辑控制模块被配置为,
定义一个循环变量m,m的初始值为0;
检查环形队列区域m是否为压缩指令;
若是,则判断m是否小于I;
若是,则输出环形区域m的指令码和指令地址给译码单元,m=m+1;
继续循环判断环形队列区域m是否为压缩指令。
进一步的,若环形队列区域m不是压缩指令,则判断m是否小于I;
若m小于I,则输出环形区域m和环形区域m+1的指令码和指令地址给译码单元,m=m+2;
继续循环判断m是否小于I。
进一步的,若m不小于I,则直接结束流程。
本发明的有益效果在于:基于环形队列的可重构取指系统,可以通过对入队逻辑的控制,将取回的多条指令数据按次序放入环形队列中,通过出队逻辑控制,可以输出可重构的指令数量的指令数据给译码单元,压缩指令不需要拓展成正常长度的指令,降低取指系统的复杂度,取指系统能够适配各种发射情况,提高适配性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的机构获得其他的附图。
图1为本发明实施例的基于环形队列的可重构取指系统结构图;
图2为本发明实施例的取指单元结构图;
图3为本发明实施例的基于环形队列的可重构指令发射数量指令缓冲区结构图;
图4为本发明实施例的取指单元的处理流程图;
图5为本发明实施例的译码单元结构图;
图6为本发明实施例的入队逻辑流程图;
图7为本发明实施例的出队逻辑流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
随着处理器的复杂度上升,指令集系统中有多种指令,以RISC-V指令集为例,图为RISC-V指令的6中基本指令格式。具体介绍如下:R-typed指令是最常用的运算指令,具有三个寄存器地址,每个都用5bit的数表示。指令的操作由7位的opcode、7位的funct7以及3位的funct3共同决定的。R-typed是不包含立即数的所有整数计算指令,一般表示寄存器-寄存器操作的指令;I-typed具有两个寄存器地址和一个立即数,其中一个是源寄存器rs1,一个是目的寄存器rd,指令的高12位是立即数。指令的操作仅由7位的opcode和3位的funct3两者决定。值得注意的是,在执行运算时需要先把12位立即数扩展到32位之后再进行运算。I-typed指令相当于将R-typed指令格式中的一个操作数改为立即数。一般表示短立即数和访存load操作的指令;S-typed的指令功能由7位opcode和3位funct3决定,指令中包含两个源寄存器和指令的imm[31:25]和imm[11:7]构成的一个12位的立即数,在执行指令运算时需要把12位立即数扩展到32位,然后再进行运算,S-typed一般表示访存store操作指令,如存储字(sw)、半字(sh)、字节(sb)等指令;B-typed的指令操作由7位opcode和3位funct3决定,指令中具有两个源寄存器和一个12位的立即数,该立即数构成是指令的第32位是imm[12]、第7位是imm[11]、25到30是imm[10:5]、8到11位是imm[4:1],同样的,在执行运算时需要把12位立即数扩展到32位,然后再进行运算。B-typed一般表示条件跳转操作指令,如相等(beq)、不相等(bne)、大于等于(bge)以及小于(blt)等跳转指令;U-typed的指令操作仅由7位opcode决定,指令中包括一个目的寄存器rd和高20位表示的20位立即数。U-typed一般表示长立即数操作指令,例如lui指令,将立即数左移12位,并将低12位置零,结果写回目的寄存器中;J-typed的指令操作由7位opcode决定,与U-typed一样只有一个目的寄存器rd和一个20位的立即数,但是20位的立即数组成不同,即指令的31位是imm[20]、12到19位是imm[19:12]、20位是imm[11]、21到30位是imm[10:1],J-typed一般表示无条件跳转指令,如jal指令。一般情况下,指令流是按顺序依次处理,因此指令地址为顺序增长,本发明中的指令地址顺序增长模块203便是处理这种常见的指令地址顺序增长的情况,模块内含一个加法器,可以根据发射数量来选择地址增加幅度。
在上述的基本指令中,跳转指令分为条件分支跳转和无条件跳转链接两类指令,条件分支跳转使用的是B-typed格式,无条件跳转中jalr和jal使用的分别是I-typed格式和J-typed格式。本发明中的跳转指令记录模块便是处理这些跳转指令,可以根据记录指令跳转方向和指令跳转目标来给出下一条指令的地址。跳转指令中的条件分支跳转指令需要根据寄存器的值来判断是否跳转,而该寄存器的值又需要在后续的执行级才能获取正确的值,因此在取指阶段预测的分支指令的跳转方向和跳转目标有预测失败的可能,当预测失败的时候,需要从后续的执行单元发起分支指令预测失败恢复请求,将指令流修改为正确的指令,同时冲刷错误执行的指令。因此在处理器取指模块中的分支预测失败恢复模块便是负责接收执行级发过来的恢复请求同时给出正确的指令地址。在本例子中,指令地址的来源一共有三种,指令地址选择模块需要从中根据优先级选择正确的指令地址发送到指令缓存中,进而获取指令码数据。
处理器中流水线将指令执行的过程划分成多个阶段,将不同指令的不同阶段在同一时刻重叠来实现指令并行;而多发射技术则是通过增加逻辑单元,在同一阶段支持多条指令同时工作从而实现指令级并行。多发射相比于单发射具有更宽的数据通路,每个阶段处理器的指令数更多,因此多发射相比于单发射具有更高的数据吞吐率。对于多发射处理器来说,取指系统需要同时取回、并译码多条指令,因此在本发明中在初始化定义重构发射指令数量参数I,该参数可以用于重构基于环形队列的可重构指令发射数量指令缓冲区和译码单元。
如图1所示,本发明的第一实施例为:一种基于环形队列的可重构取指系统,包括取指单元100、基于环形队列的可重构指令发射数量指令缓冲区200,以及译码单元300;
取指单元100用于向外部指令存储获取I条指令信息,生成跳转指令命中位置向量和压缩指令向量;
基于环形队列的可重构指令发射数量指令缓冲区200,用于接收取指单元100的I条指令信息、跳转指令命中位置向量和压缩指令向量,根据压缩指令向量和跳转指令命中位置向量,将正常指令长度的I条指令信息拆解成有效指令;
译码单元300,用于获取基于环形队列的可重构指令发射数量指令缓冲区200的有效指令进行译码,并根据预设的参数配置对译码的有效指令进行重构,根据重构的指令发射数量调整译码单元300的输入与输出的指令数量,进而调整译码单元300内部的译码模块数量。
如图2、图4所示,所述取指单元100包括分支预测失败恢复模块102、跳转指令处理模块103、指令地址顺序增长模块104及指令地址选择模块105;
分支预测失败恢复模块102检查后面流水级是否有分支预测失败恢复信号;
若没有检测到分支预测失败恢复信号,则进入跳转指令处理模块103,检查是否命中跳转指令,若命中则在输出的指令信息中加入跳转指令命中位置向量;
进入指令地址顺序增长模块104,指令地址顺序按指令发射数I和指令宽度顺序增长;
进入指令地址选择模块105,根据指令地址选择结果想指令存储发出取指请求,取得I条指令信息,生成压缩指令向量发送给基于环形队列的可重构指令发射数量指令缓冲区200。
进一步的,若分支预测失败恢复模块102有检测到分支预测失败恢复信号,则直接跳转至指令地址顺序增长模块104。
进一步的,若跳转指令处理模块103检查没有命中跳转指令,则直接跳转至指令地址顺序增长模块104。
如图3所示,所述基于环形队列的可重构指令发射数量指令缓冲区200包括指令码环形队列模块204、指令地址环形队列模块205、数据有效性环形队列模块206、入队逻辑控制模块202和出队逻辑控制模块203;
所述入队逻辑控制模块202控制每个环形队列的存入,入队逻辑根据指令有效性向量和跳转指令命中位置向量决定;
所述指令码环形队列模块204,根据输入的指令码进行处理,按顺序将多个指令码记录在环形队列中,同时根据指令码的内容,生成压缩指令的对应位置;
所述指令地址环形队列模块205,根据输入的指令地址进行处理,按顺序将多个地址记录在环形队列中;
所述数据有效性环形队列模块206,记录每个位置的指令数据的有效性,仅当该位置数据为有效数据的时候才给予输出;
出队逻辑控制模块203控制着每个环形队列的读出,出队逻辑由压缩指令位置决定。
进一步的,所述入队逻辑控制模块202被配置为,
接收取指模块100发出的请求,查询环形队列是否有2*I个空位区域;
若有,将正常宽度的指令数据和指令信息输入入队逻辑控制模块202;
将I个正常宽度的指令数据分解成2*I个压缩指令宽度的数据;
对压缩指令位置向量进行分解,分解出压缩指令;
对跳转指令位置向量进行分解,分解出跳转指令;
定义一个循环变量j,j的初始值为0;
判断j是否小于2*I;
若j小于2*I,则判断是否位置j有效,且位置0到位置j-2不为命中的正常跳转指令,且位置j-1不为压缩的命中跳转指令;
若是,则位置j予以入队,将位置j的指令码和指令地址存入对应环形队列中,该位置数据为有效性置,j=j+1;
继续循环判断j是否小于2*I。
进一步的,若j大于2*I,则直接结束流程;
若位置j无效,或位置0到位置J-2为命中的正常跳转指令,或位置j-1为压缩的命中跳转指令,则直接结束流程。
进一步的,所述出队逻辑控制模块203被配置为,
定义一个循环变量m,m的初始值为0;
检查环形队列区域m是否为压缩指令;
若是,则判断m是否小于I;
若是,则输出环形区域m的指令码和指令地址给译码单元,m=m+1;
继续循环判断环形队列区域m是否为压缩指令。
进一步的,若环形队列区域m不是压缩指令,则判断m是否小于I;
若m小于I,则输出环形区域m和环形区域m+1的指令码和指令地址给译码单元,m=m+2;
继续循环判断m是否小于I。
进一步的,若m不小于I,则直接结束流程。
本方案包括取指单元模块100,基于环形队列的可重构指令发射数量指令缓冲区200以及译码单元300;
取指单元模块100与取指系统外部的指令存储通过总线相连接,总线可以实现取指单元100向指令存储送指令地址并获得指令数据。
所述的取指单元100与基于环形队列的可重构指令发射数量指令缓冲区200通过总线相连接,可以实现将取指单元100取回的I条指令信息、跳转指令命中位置向量和压缩指令向量发送至基于环形队列的可重构指令发射数量指令缓冲区200。
基于环形队列的可重构指令发射数量指令缓冲区200与译码单元300通过自定义总线相连接,自定义总线可以实现基于重构指令发射数量I的数据宽度的总线传输,将基于环形队列的可重构指令发射数量指令缓冲区200中的I个指令数据分别送往译码单元300中的I个译码模块。
具体的,如图5所示,译码单元300包含I个译码模块,其中I为初始化定义的可重构发射指令数量参数,例如在双发射处理器中,I的值应该设置为2,此时译码单元300内共有两个译码模块,即译码模块301和译码模块302,两个译码模块的功能相同,主要工作是从指令码提取执行单元所需要的各个操作数。译码模块301和译码模块302应该根据处理器应用的具体指令集架构设计,例如在RISC-V架构中,将根据RISC-V的指令格式提取对应的寄存器、立即数以及操作码等。
对于多发射处理器而言,每个周期中,取指单元100需要从指令缓存取回超过一条指令信息,而且当处理器支持压缩指令等指令长度不统一的指令集的时候,便需要一个模块来处理取回的多条指令信息。面对压缩指令等长度不统一的指令集,例如RISC-V指令集中的压缩指令为正常指令的一半,这种做法可以大大提高指令密度,加快指令的执行效率。面对这些指令,常规的操作是将其拆分或者填充,转化为常见的指令宽度,这样的做法无疑是实现起来较为简单,但是换来的是处理速度的下降以及资源浪费等等负面影响。
请参照图3,图3为本发明基于环形队列的可重构指令发射数量指令缓冲区结构图。基于环形队列的可重构指令发射数量指令缓冲区200便是同时解决多发射以及压缩指令带来的问题。下面以支持压缩指令的RISC-V指令集架构的双发射处理器为例子,解释基于环形队列的可重构指令发射数量指令缓冲区200的工作原理。对于双发射处理器,取指单元100会一次性送来两条正常指令宽度的指令码,当支持压缩指令时,就有可能出现最多四条压缩指令或者一条正常指令两条压缩指令等情况,甚至可能出现一条压缩指令一条正常指令以及下一条正常指令的前半段指令内容。使用本申请的基于环形队列的可重构指令发射数量指令缓冲区200便可以很好的处理各种可能发生的情况。
基于环形队列的可重构指令发射数量指令缓冲区200的硬件实现请参照图3。在正常的RV64架构的指令集中,在启用虚拟存储情况下,指令地址均为39位;每条指令为4字节,即32比特,因此指令地址的顺序增长为上一个的指令地址加4,可以取回32比特的指令码,压缩指令为加指令地址加2,可以取回16比特的指令码。同理,具体的,以双发射处理器为例,指令地址的顺序增长情况下为上一个指令地址加8,可以取回64比特指令码。因此,可以在基于环形队列的可重构指令发射数量指令缓冲区200中设置8个宽度为16比特的的存储区域存放指令码,可以存放两次取指单元100送来的数据,每次取指单元100最多送来64比特数据;设置8个宽度为39比特的存储区域存放指令地址;设置8个宽度为1的区域用以判断该区域数据是否有效。
如图6所示,每次入队只需要考虑4个区域,每个区域的写入使能由入队逻辑控制。指令码环形队列模块204入队逻辑的核心思想是该位置的指令有效且前面的区域无跳转指令命中跳转记录,原因是只有有效的指令需要被缓冲,且当前面有跳转指令的时候,该位置的值不应该是顺续的指令码,而应该再等下个周期由跳转指令处理模块103给出的指令目标得到的指令码,同时当前面一个区域的指令同时为压缩指令且为命中的跳转指令,该位置也不予入队。具体的,区域0的入队需要当该位置的指令有效;位置1的入队需要当该位置的指令有效且位置0不为压缩的命中跳转指令;位置2的入队需要当该位置的指令有效且位置0不为命中的正常跳转指令且位置1不为压缩的命中跳转指令;位置3的入队需要当该位置的指令有效且位置0、1不为命中的正常跳转指令且位置2不为压缩的命中跳转指令。指令地址环形队列模块205的入队核心思想是将送来的指令首地址进行按顺序递增,写入对应的区域。同时,某个区域予以入队后,还需要在数据有效性环形队列模块206中将该位置设为有效。
如图7所示,本发明基于环形队列的出队逻辑流程图。出队逻辑的核心思想是当总线不堵塞时,将I个数据按顺序输出,每个输出的数据根据指令码环形队列模块204中的每个区域判断该位置是否为压缩指令来确定输出宽度。同时,某个区域予以出队后,还需要在数据有效性环形队列模块206中将该位置设为无效。例如在支持压缩指令的RISC-V指令集架构的双发射处理器中,此时I为2,基于环形队列的可重构指令发射数量指令缓冲区应向译码单元中的2个译码模块发送指令码以及指令地址数据。第1个数据出队时候应该检查指令码环形队列模块204的区域0是否为压缩指令,若区域0为正常指令,则输出的指令码为指令码环形队列模块204区域1和区域0数据的合并,指令地址为指令地址环形队列模块205区域0的值,第2个数据出队时应检查指令码环形队列模块204的区域2是否为压缩指令,若区域2为正常指令,则输出的指令码为指令码环形队列模块204区域3和区域2数据的合并,指令地址为指令地址环形队列模块204区域2的值;若区域0为压缩指令,则输出的指令码为指令码环形队列模块204区域0的数据,指令地址为指令地址环形队列模块204区域0的值,第2个数据出队时应检查指令码环形队列模块204的区域1是否为压缩指令,若区域1为正常指令,则输出的指令码为指令码环形队列模块204区域2和区域1数据的合并,指令地址为指令地址环形队列模块204区域1的值。其他情况同理类推。
本发明实施例的有益效果在于:基于环形队列的可重构取指系统,可以通过对入队逻辑的控制,将取回的多条指令数据按次序放入环形队列中,通过出队逻辑控制,可以输出可重构的指令数量的指令数据给译码单元,压缩指令不需要拓展成正常长度的指令,降低取指系统的复杂度,取指系统能够适配各种发射情况,提高适配性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于环形队列的可重构取指系统,其特征在于,包括取指单元、基于环形队列的可重构指令发射数量指令缓冲区,以及译码单元;
取指单元用于向外部指令存储获取I条指令信息,生成跳转指令命中位置向量和压缩指令向量;
基于环形队列的可重构指令发射数量指令缓冲区,用于接收取指单元的I条指令信息、跳转指令命中位置向量和压缩指令向量,根据压缩指令向量和跳转指令命中位置向量,将正常指令长度的I条指令信息拆解成有效指令;
译码单元,用于获取基于环形队列的可重构指令发射数量指令缓冲区的有效指令进行译码,并根据预设的参数配置对译码的有效指令进行重构,根据重构的指令发射数量调整译码单元的输入与输出的指令数量,进而调整译码单元内部的译码模块数量。
2.如权利要求1所述的基于环形队列的可重构取指系统,其特征在于,所述取指单元包括分支预测失败恢复模块、跳转指令处理模块、指令地址顺序增长模块及指令地址选择模块;
分支预测失败恢复模块检查后面流水级是否有分支预测失败恢复信号;
若没有检测到分支预测失败恢复信号,则进入跳转指令处理模块,检查是否命中跳转指令,若命中则在输出的指令信息中加入跳转指令命中位置向量;
进入指令地址顺序增长模块,指令地址顺序按指令发射数I和指令宽度顺序增长;
进入指令地址选择模块,根据指令地址选择结果想指令存储发出取指请求,取得I条指令信息,生成压缩指令向量发送给基于环形队列的可重构指令发射数量指令缓冲区。
3.如权利要求2所述的基于环形队列的可重构取指系统,其特征在于,若分支预测失败恢复模块有检测到分支预测失败恢复信号,则直接跳转至指令地址顺序增长模块。
4.如权利要求3所述的基于环形队列的可重构取指系统,其特征在于,若跳转指令处理模块检查没有命中跳转指令,则直接跳转至指令地址顺序增长模块。
5.如权利要求1所述的基于环形队列的可重构取指系统,其特征在于,所述基于环形队列的可重构指令发射数量指令缓冲区包括指令码环形队列模块、指令地址环形队列模块、数据有效性环形队列模块、入队逻辑控制模块和出队逻辑控制模块;
所述入队逻辑控制模块控制每个环形队列的存入,入队逻辑根据指令有效性向量和跳转指令命中位置向量决定;
所述指令码环形队列模块,根据输入的指令码进行处理,按顺序将多个指令码记录在环形队列中,同时根据指令码的内容,生成压缩指令的对应位置;
所述指令地址环形队列模块,根据输入的指令地址进行处理,按顺序将多个地址记录在环形队列中;
所述数据有效性环形队列模块,记录每个位置的指令数据的有效性,仅当该位置数据为有效数据的时候才给予输出;
出队逻辑控制模块控制着每个环形队列的读出,出队逻辑由压缩指令位置决定。
6.如权利要求5所述的基于环形队列的可重构取指系统,其特征在于,所述入队逻辑控制模块被配置为,
接收取指模块发出的请求,查询环形队列是否有2*I个空位区域;
若有,将正常宽度的指令数据和指令信息输入入队逻辑控制模块;
将I个正常宽度的指令数据分解成2*I个压缩指令宽度的数据;
对压缩指令位置向量进行分解,分解出压缩指令;
对跳转指令位置向量进行分解,分解出跳转指令;
定义一个循环变量j,j的初始值为0;
判断j是否小于2*I;
若j小于2*I,则判断是否位置j有效,且位置0到位置j-2不为命中的正常跳转指令,且位置j-1不为压缩的命中跳转指令;
若是,则位置j予以入队,将位置j的指令码和指令地址存入对应环形队列中,该位置数据为有效性置,j=j+1;
继续循环判断j是否小于2*I。
7.如权利要求6所述的基于环形队列的可重构取指系统,其特征在于,若j大于2*I,则直接结束流程;
若位置j无效,或位置0到位置J-2为命中的正常跳转指令,或位置j-1为压缩的命中跳转指令,则直接结束流程。
8.如权利要求5所述的基于环形队列的可重构取指系统,其特征在于,所述出队逻辑控制模块被配置为,
定义一个循环变量m,m的初始值为0;
检查环形队列区域m是否为压缩指令;
若是,则判断m是否小于I;
若是,则输出环形区域m的指令码和指令地址给译码单元,m=m+1;
继续循环判断环形队列区域m是否为压缩指令。
9.如权利要求8所述的基于环形队列的可重构取指系统,其特征在于,若环形队列区域m不是压缩指令,则判断m是否小于I;
若m小于I,则输出环形区域m和环形区域m+1的指令码和指令地址给译码单元,m=m+2;
继续循环判断m是否小于I。
10.如权利要求9所述的基于环形队列的可重构取指系统,其特征在于,若m不小于I,则直接结束流程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311039722.3A CN117055959A (zh) | 2023-08-17 | 2023-08-17 | 一种基于环形队列的可重构取指系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311039722.3A CN117055959A (zh) | 2023-08-17 | 2023-08-17 | 一种基于环形队列的可重构取指系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117055959A true CN117055959A (zh) | 2023-11-14 |
Family
ID=88664058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311039722.3A Pending CN117055959A (zh) | 2023-08-17 | 2023-08-17 | 一种基于环形队列的可重构取指系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117055959A (zh) |
-
2023
- 2023-08-17 CN CN202311039722.3A patent/CN117055959A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6968445B2 (en) | Multithreaded processor with efficient processing for convergence device applications | |
JP4986431B2 (ja) | プロセッサ | |
US7434024B2 (en) | SIMD processor with register addressing, buffer stall and methods | |
RU2586589C2 (ru) | Модуль сопроцессора кэша | |
US7487338B2 (en) | Data processor for modifying and executing operation of instruction code according to the indication of other instruction code | |
JP3837289B2 (ja) | 同じ論理的空間を占有する複数のレジスタファイルを含むマイクロプロセッサ | |
US20050138327A1 (en) | VLIW digital signal processor for achieving improved binary translation | |
JP2682264B2 (ja) | プログラムカウンタ装置 | |
EP1974254B1 (en) | Early conditional selection of an operand | |
US20200326940A1 (en) | Data loading and storage instruction processing method and device | |
KR19990082747A (ko) | 압축기억된십진수나눗셈에대한전문밀리코드명령 | |
CN117055959A (zh) | 一种基于环形队列的可重构取指系统 | |
KR102458467B1 (ko) | 벡터 생성 명령 | |
CN111813447B (zh) | 一种数据拼接指令的处理方法和处理装置 | |
US9021238B2 (en) | System for accessing a register file using an address retrieved from the register file | |
AU613232B2 (en) | Wide branch instruction acceleration | |
US7711926B2 (en) | Mapping system and method for instruction set processing | |
US20060015704A1 (en) | Operation apparatus and instruction code executing method | |
CN114281411A (zh) | 指令处理方法、指令执行方法以及处理器 | |
JP2004355477A (ja) | マイクロプロセッサ | |
JPH05250156A (ja) | Riscプロセッサ | |
JPH08110901A (ja) | マイクロプロセッサ | |
KR20000003447A (ko) | 무조건 분기 명령어의 수행 시간을 줄이기 위한 분기 방법 | |
JP2001306318A (ja) | マイクロコンピュータ | |
JP2004326710A (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 |