本发明涉及一种取指系统,尤其是指一种基于环形队列的可重构取指系统。
背景技术:
1、1971年1月,intel公司的特德霍夫成功研制出了第一个能够实际工作的微处理器4004,它的出现是计算机发展历史上的一个重要里程碑。risc-v最早是由美国加州大学伯克利分校的krste教授以及他的学生andrew waterman和yunsup lee为解决实际项目问题而提出的。而rv32c是risc-v的压缩指令集扩展,在某些对flash容量敏感的嵌入式应用中可以添加此扩展指令集。rv32c压缩指令集采用了一种新颖的方法,每条压缩指令必须与一条标准的32位risc-v指令相对应。在处理器的各类并行技术中,多发射技术是一种在同一周期内处理多条指令的技术。多发射处理器在具有高性能的前提下仍能够保持良好的兼容性,对推动微处理器的发展具有积极作用。压缩指令虽然可以降低指令码长度,但是当多发射技术和压缩指令同时支持的时候,势必会给取指系统增加一定复杂度。
2、有鉴于此,有必要提出针对支持压缩指令的多发射处理器取指系统进行进一步的改进。
技术实现思路
1、本发明所要解决的技术问题是:提供一种基于环形队列的可重构取指系统,降低取指系统的复杂度。
2、为了解决上述技术问题,本发明采用的技术方案为:一种基于环形队列的可重构取指系统,包括取指单元、基于环形队列的可重构指令发射数量指令缓冲区,以及译码单元;
3、取指单元用于向外部指令存储获取i条指令信息,生成跳转指令命中位置向量和压缩指令向量;
4、基于环形队列的可重构指令发射数量指令缓冲区,用于接收取指单元的i条指令信息、跳转指令命中位置向量和压缩指令向量,根据压缩指令向量和跳转指令命中位置向量,将正常指令长度的i条指令信息拆解成有效指令;
5、译码单元,用于获取基于环形队列的可重构指令发射数量指令缓冲区的有效指令进行译码,并根据预设的参数配置对译码的有效指令进行重构,根据重构的指令发射数量调整译码单元的输入与输出的指令数量,进而调整译码单元内部的译码模块数量。
6、进一步的,所述取指单元包括分支预测失败恢复模块、跳转指令处理模块、指令地址顺序增长模块及指令地址选择模块;
7、分支预测失败恢复模块检查后面流水级是否有分支预测失败恢复信号;
8、若没有检测到分支预测失败恢复信号,则进入跳转指令处理模块,检查是否命中跳转指令,若命中则在输出的指令信息中加入跳转指令命中位置向量;
9、进入指令地址顺序增长模块,指令地址顺序按指令发射数i和指令宽度顺序增长;
10、进入指令地址选择模块,根据指令地址选择结果想指令存储发出取指请求,取得i条指令信息,生成压缩指令向量发送给基于环形队列的可重构指令发射数量指令缓冲区。
11、进一步的,若分支预测失败恢复模块有检测到分支预测失败恢复信号,则直接跳转至指令地址顺序增长模块。
12、进一步的,若跳转指令处理模块检查没有命中跳转指令,则直接跳转至指令地址顺序增长模块。
13、进一步的,所述基于环形队列的可重构指令发射数量指令缓冲区包括指令码环形队列模块、指令地址环形队列模块、数据有效性环形队列模块、入队逻辑控制模块和出队逻辑控制模块;
14、所述入队逻辑控制模块控制每个环形队列的存入,入队逻辑根据指令有效性向量和跳转指令命中位置向量决定;
15、所述指令码环形队列模块,根据输入的指令码进行处理,按顺序将多个指令码记录在环形队列中,同时根据指令码的内容,生成压缩指令的对应位置;
16、所述指令地址环形队列模块,根据输入的指令地址进行处理,按顺序将多个地址记录在环形队列中;
17、所述数据有效性环形队列模块,记录每个位置的指令数据的有效性,仅当该位置数据为有效数据的时候才给予输出;
18、出队逻辑控制模块控制着每个环形队列的读出,出队逻辑由压缩指令位置决定。
19、进一步的,所述入队逻辑控制模块被配置为,
20、接收取指模块发出的请求,查询环形队列是否有2*i个空位区域;
21、若有,将正常宽度的指令数据和指令信息输入入队逻辑控制模块;
22、将i个正常宽度的指令数据分解成2*i个压缩指令宽度的数据;
23、对压缩指令位置向量进行分解,分解出压缩指令;
24、对跳转指令位置向量进行分解,分解出跳转指令;
25、定义一个循环变量j,j的初始值为0;
26、判断j是否小于2*i;
27、若j小于2*i,则判断是否位置j有效,且位置0到位置j-2不为命中的正常跳转指令,且位置j-1不为压缩的命中跳转指令;
28、若是,则位置j予以入队,将位置j的指令码和指令地址存入对应环形队列中,该位置数据为有效性置,j=j+1;
29、继续循环判断j是否小于2*i。
30、进一步的,若j大于2*i,则直接结束流程;
31、若位置j无效,或位置0到位置j-2为命中的正常跳转指令,或位置j-1为压缩的命中跳转指令,则直接结束流程。
32、进一步的,所述出队逻辑控制模块被配置为,
33、定义一个循环变量m,m的初始值为0;
34、检查环形队列区域m是否为压缩指令;
35、若是,则判断m是否小于i;
36、若是,则输出环形区域m的指令码和指令地址给译码单元,m=m+1;
37、继续循环判断环形队列区域m是否为压缩指令。
38、进一步的,若环形队列区域m不是压缩指令,则判断m是否小于i;
39、若m小于i,则输出环形区域m和环形区域m+1的指令码和指令地址给译码单元,m=m+2;
40、继续循环判断m是否小于i。
41、进一步的,若m不小于i,则直接结束流程。
42、本发明的有益效果在于:基于环形队列的可重构取指系统,可以通过对入队逻辑的控制,将取回的多条指令数据按次序放入环形队列中,通过出队逻辑控制,可以输出可重构的指令数量的指令数据给译码单元,压缩指令不需要拓展成正常长度的指令,降低取指系统的复杂度,取指系统能够适配各种发射情况,提高适配性。
1.一种基于环形队列的可重构取指系统,其特征在于,包括取指单元、基于环形队列的可重构指令发射数量指令缓冲区,以及译码单元;
2.如权利要求1所述的基于环形队列的可重构取指系统,其特征在于,所述取指单元包括分支预测失败恢复模块、跳转指令处理模块、指令地址顺序增长模块及指令地址选择模块;
3.如权利要求2所述的基于环形队列的可重构取指系统,其特征在于,若分支预测失败恢复模块有检测到分支预测失败恢复信号,则直接跳转至指令地址顺序增长模块。
4.如权利要求3所述的基于环形队列的可重构取指系统,其特征在于,若跳转指令处理模块检查没有命中跳转指令,则直接跳转至指令地址顺序增长模块。
5.如权利要求1所述的基于环形队列的可重构取指系统,其特征在于,所述基于环形队列的可重构指令发射数量指令缓冲区包括指令码环形队列模块、指令地址环形队列模块、数据有效性环形队列模块、入队逻辑控制模块和出队逻辑控制模块;
6.如权利要求5所述的基于环形队列的可重构取指系统,其特征在于,所述入队逻辑控制模块被配置为,
7.如权利要求6所述的基于环形队列的可重构取指系统,其特征在于,若j大于2*i,则直接结束流程;
8.如权利要求5所述的基于环形队列的可重构取指系统,其特征在于,所述出队逻辑控制模块被配置为,
9.如权利要求8所述的基于环形队列的可重构取指系统,其特征在于,若环形队列区域m不是压缩指令,则判断m是否小于i;
10.如权利要求9所述的基于环形队列的可重构取指系统,其特征在于,若m不小于i,则直接结束流程。