乱序访存机制下的顺序向量调度方法与流程
未命名
10-08
阅读:88
评论:0

1.本发明属于芯片领域,具体涉及乱序访存机制下的顺序向量调度方法。
背景技术:
2.cpu中运行的指令按照其功能分为以下几类:运算类指令、程序流控制类指令、数据传送类指令和输入输出类指令,其中数据传送类指令包括寄存器-寄存器、寄存器-存储器之间的数据传送,其中寄存器-存储器之间的数据传送称之为访存指令。
3.为了提高性能,目前处理器都采用了乱序执行的技术,即后续指令在发射队列中就绪后可以先于前序指令执行,以提高指令的执行效率,对于访存指令同样采用了乱序的方法,但是由于地址依赖和寄存器依赖的缘故,因为存在依赖关系的指令序列不能乱序执行,所以需要额外的检测逻辑来保证,对于标量访存指令,一条指令只会访问一个数据,涉及一个寄存器和一个地址,检测逻辑相对比较简单,而对于向量访存指令,每条指令需要访问多笔数据,就会涉及到多个寄存器和多个地址,检测逻辑就会非常复杂,由此可见向量访存指令不适合乱序执行。所以对于标量-标量、标量-向量之间是采用了乱序执行的方法,但是向量访存指令还是顺序执行,由于一条向量访存指令可能需要执行多笔,如果此时有更老的标量访存指令就绪了,向量访存指令会阻挡标量访存指令比较长时间,所以当向量访存指令执行期间若发现有更老的标量访存指令就绪了,会优先执行标量访存指令。
4.如上所述,当向量访存指令执行期间有在先的标量访存指令准备就绪,会优先执行标量访存指令,但是向量访存指令会拆分出多笔操作,假如已经拆分到最后一笔发现有在先的指令已就绪,如果整个向量访存指令都清除掉去执行标量,则前面向量的执行都浪费了。
技术实现要素:
5.本发明的目的在于提供一种方法将向量的执行状态保存起来以供指令重新开始执行时从发生重做的地方开始执行,而不是从头开始执行,提高处理效率。
6.为了达到上述目的,本发明采用如下技术方案:
7.乱序访存机制下的顺序向量调度方法,包括如下步骤:
8.(1)访存指令存放在访存指令发射队列中,当访存指令为向量访存指令时,向量访存指令的操作数就绪后同时发射到访存流水线和向量译码单元;
9.(2)向量访存指令经过向量译码单元译码后存放至向量写回缓存中等待数据的拼接和写回;
10.(3)访存流水线包括若干个执行阶段和写回阶段,向量访存指令在访存流水线中按顺序执行,在写回阶段将数据写至向量写回缓存,然后写回至向量寄存器;
11.(4)执行阶段1的向量访存指令发射至地址拆分单元,地址拆分单元将向量访存指令进行拆分后送至执行阶段1,同时地址拆分单元将拆分信息暂存入重做队列并标记;
12.(5)当任何一个执行阶段接收到重做信号时,先将信息记录在发射队列,然后待重
新发射至访存流水线的执行阶段1时读取重做队列信息,从被标记的向量访存指令拆分开始重做,当重做队列为空时,重做完成。
13.当向量指令执行过程发生中断的时候最近的几笔拆分暂存在重做队列内,访存流水线优先执行就绪的标量访存指令或者向量访存指令,执行完毕后,访存流水线读取重做队列的信息,从中断点继续执行。
14.优选的,步骤(2)中,向量译码单元用于对输入的向量访存指令进行译码,获得必要的指令信息,包括指令类型、向量源操作数寄存器号和向量目的寄存器号。
15.优选的,步骤(3)中,执行阶段有三个,执行阶段1进行地址计算,执行阶段2进行存储器访问,执行阶段3进行数据获取,写回阶段进行数据的写回。执行阶段的数量没有要求,一般为三个。
16.优选的,步骤(3)中,执行阶段1从访存指令发射队列获得访存指令的基地址和偏移量,得到第一笔拆分地址。
17.优选的,步骤(4)中,地址拆分单元根据向量访存指令的信息进行剩余的拆分,得到余下的拆分地址。向量访存指令的部分信息如第几笔从向量译码单元获取。
18.优选的,步骤(4)中,重做队列的深度为执行阶段最多重做笔数。
19.优选的,步骤(5)中,触发重做信号的情况包括但不限于
20.a.在后的向量访存指令已经进入访存流水线执行,但是在先的标量访存指令就绪;
21.b.访存流水线中缓存已满。
22.优选的,步骤(5)中,地址拆分单元内设有状态机控制重做机制,初始时状态机为空闲状态,当向量访存指令开始拆分后进入拆分状态,当向量访存指令发出需要重做的信号后,状态机从拆分状态进入停顿状态,等向量访存指令再次下发下来时,读取重做队列的信息,当重做队列为空时,重做完成,若该笔拆分为最后一笔,则状态机进入空闲状态,若不是最后一笔,则进入拆分状态继续拆分。
23.优选的,步骤(5)中,访存流水线每个执行阶段均设有计数器,在发生重做的时候更新该计数器,然后在每次成功再次执行后对计数器进行递减,直至计数器为0后重做完成。
24.优选的,步骤(1)中,当访存指令为标量时,标量访存指令的操作数就绪后发射到访存流水线,标量访存指令在访存流水线的写回阶段进行数据写回至标量寄存器。
25.由于采用上述技术方案,本发明具有以下有益效果:
26.1、向量指令执行被中断后再次执行时不需要完全从头开始执行,可以从被打断的那笔拆分开始执行,这样即保证了在先标量指令可以优先执行,又不会浪费前面已经执行完成的向量拆分。
27.2、当向量指令执行发生中断的时候将发生中断的该笔拆分暂存至重做队列内,访存流水线优先执行就绪的标量访存指令或者向量访存指令,执行完毕后,访存流水线读取重做队列的信息,从中断点继续执行,提高执行效率。
28.3、不影响原有标量访存指令执行过程,且更大程度复用了原有访存单元执行过程,减少了硬件资源开销。
附图说明
29.下面通过附图对本发明作进一步说明。
30.图1为本发明中乱序访存机制下的顺序向量调度方法的流程图。
31.图2为本发明中状态机三种状态的示意图。
具体实施方式
32.如图1所示的乱序访存机制下的顺序向量调度方法,包括如下步骤:
33.(1)访存指令存放在访存指令发射队列中,当访存指令为向量访存指令时,向量访存指令的操作数就绪后同时发射到访存流水线和向量译码单元。
34.(2)向量访存指令经过向量译码单元译码后存放至向量写回缓存中等待数据的拼接和写回,向量译码单元用于对输入的向量访存指令进行译码,获得必要的指令信息,包括指令类型、向量源操作数寄存器号和向量目的寄存器号。
35.(3)访存流水线包括若三个执行阶段和写回阶段,执行阶段1进行地址计算,执行阶段2进行存储器访问,执行阶段3进行数据获取,写回阶段进行数据的写回,向量访存指令在访存流水线中按顺序执行,在写回阶段将数据写至向量写回缓存,然后写回至向量寄存器,执行阶段1从访存指令发射队列获得访存指令的基地址和偏移量,得到第一笔拆分地址。
36.(4)执行阶段1的向量访存指令发射至地址拆分单元地址拆分单元根据向量访存指令的信息进行剩余的拆分,得到余下的拆分地址后送至执行阶段1,同时地址拆分单元将拆分信息暂存入重做队列并标记。
37.(5)当任何一个执行阶段接收到重做信号时,先将信息记录在发射队列,然后重新发射至访存流水线的执行阶段1时读取重做队列信息,从被标记的向量访存指令开始重做,当重做队列为空时,重做完成。
38.对于同一条指令,在不同的执行阶段需要重做的笔数不同。如果在执行阶段1的指令需要重做,只需要重做一笔,而如果在执行阶段2的指令需要重做则需要重做两笔,例如下面指令序列,s1表示执行阶段1,s2表示执行阶段2,s3表示执行阶段3,s4表示写回阶段:
39.inst0_0表示inst0的第一笔拆分,如果inst0_0在t0时刻需要重做,则只需要重做这一笔,如果在t1时刻inst0发生了重做信号,那么第二笔拆分即inst0_1已经进入了执行阶段1,所以就需要重做这两笔,而如果在t2时刻inst0需要重做,这时候第二笔拆分inst0_1进入了执行阶段2,而第三笔拆分即inst0_2也进入了执行阶段1,所以就需要重做三笔。
[0040][0041]
但是若执行阶段3和执行阶段2不是同一条指令,执行阶段3的指令需要重做,那么执行阶段3的指令和执行阶段2的指令重做的数目就不同,例如下面指令序列:
[0042]
inst0_7表示inst0的第8笔拆分,inst1_0表示inst1的第1笔拆分,若在t1时刻
inst0的第8笔需要重做,则在执行阶段1的inst0_7需要重做一笔,在执行阶段2的inst1_0也需要重做一笔,这就需要在重做的时候告诉指令队列需要重做的指令编号及需要重做的次数。
[0043][0044]
最极端的情况是执行阶段3发生重做信号,而执行阶段3、执行阶段2和执行阶段1都是不同指令,比如上述的inst1只需要拆分一笔,上述序列会变成如下情况:
[0045]
若在t2时刻inst0需要重做,在执行阶段3的inst0、执行阶段2的inst1和执行阶段1的inst2都只需要重做一笔,如下所示:
[0046][0047]
执行阶段2发生重做的情况如下:
[0048]
1、执行阶段1和执行阶段2是同一条指令,重做两笔。
[0049]
2、执行阶段1和执行阶段2是不同指令,两条指令各重做一笔。
[0050]
执行阶段3发生重做情况如下:
[0051]
1、执行阶段1、执行阶段2和执行阶段3是同一条指令,重做三笔。
[0052]
2、执行阶段2和执行阶段3是同一条指令,执行阶段1是不同指令,执行阶段3的指令重做两笔,执行阶段1的指令重做一笔。
[0053]
3、执行阶段1、执行阶段2和执行阶段3均是不同指令,三条指令各重做一笔。
[0054]
重做队列的深度为执行阶段最多重做笔数。重做队列的深度取决于最多会重做几笔,当向量指令每一笔拆分完成后,该笔拆分的地址、元素索引等信息就会更新为下一笔拆分所需要的信息,因此需要这几笔重做,每一笔重做的信息都需要保存,本实施例的情况是最多需要重做三笔,所以重做队列的深度是3。
[0055]
当向量指令执行发生中断的时候将发生中断的该笔拆分保存起来,以用于再次执行时可以从中断点开始执行,由于发生中断的时间未知,不能等中断后再保存,因为前面执行完成的拆分信息已经更新,所以每笔拆分都需要将该笔信息保存到队列中,过程如下:
[0056]
1、第一笔拆分保存至队列1中。
[0057]
2、第二笔拆分保存至队列2中。
[0058]
3、第三笔拆分保存至队列3中。
[0059]
4、第四笔拆分保存至队列1中,依次循环,重做队列保存着最近的3笔拆分。
[0060]
步骤(5)中,触发重做信号的情况包括但不限于
[0061]
a.在后的向量访存指令已经进入访存流水线执行,但是在先的标量访存指令就绪;
[0062]
b.访存流水线中缓存已满。
[0063]
如图1和图2所示,地址拆分单元内设有状态机控制重做机制,初始时状态机为空闲状态,当向量访存指令开始拆分后进入拆分状态,当向量访存指令发出需要重做的信号后,状态机从拆分状态进入停顿状态,等向量访存指令再次下发下来时,读取重做队列的信息,当重做队列为空时,重做完成,若该笔拆分为最后一笔,则状态机进入空闲状态,若不是最后一笔,则进入拆分状态继续拆分。
[0064]
如图1所示,步骤(5)中,由于会出现重做次数不同的情况,发生重做的时候就需要知道重做的次数,因此访存流水线每个执行阶段均设有计数器,在发生重做的时候更新该计数器,然后在每次成功再次执行后对计数器进行递减,直至计数器为0后重做完成。
[0065]
当访存指令为标量访存指令时,标量访存指令的操作数就绪后发射到访存流水线,标量访存指令在访存流水线的写回阶段进行数据写回至标量寄存器。
[0066]
以上仅为本发明的具体实施例,但本发明的技术特征并不局限于此。任何以本发明为基础,为解决基本相同的技术问题,实现基本相同的技术效果,所作出地简单变化、等同替换或者修饰等,皆涵盖于本发明的保护范围之中。
技术特征:
1.乱序访存机制下的顺序向量调度方法,其特征在于,包括如下步骤:(1)访存指令存放在访存指令发射队列中,当访存指令为向量访存指令时,向量访存指令的操作数就绪后同时发射到访存流水线和向量译码单元;(2)向量访存指令经过向量译码单元译码后存放至向量写回缓存中等待数据的拼接和写回;(3)访存流水线包括若干个执行阶段和写回阶段,向量访存指令在访存流水线中按顺序执行,在写回阶段将数据写至向量写回缓存,然后写回至向量寄存器;(4)执行阶段1的向量访存指令发射至地址拆分单元,地址拆分单元将向量访存指令进行拆分后送至执行阶段1,同时地址拆分单元将拆分信息暂存入重做队列并标记;(5)当任何一个执行阶段接收到重做信号时,先将信息记录在发射队列,然后重新发射至访存流水线的执行阶段1时读取重做队列信息,从被标记的向量访存指令拆分开始重做,当重做队列为空时,重做完成。2.根据权利要求1所述乱序访存机制下的顺序向量调度方法,其特征在于:步骤(2)中,向量译码单元用于对输入的向量访存指令进行译码,获得必要的指令信息,包括指令类型、向量源操作数寄存器号和向量目的寄存器号。3.根据权利要求1所述乱序访存机制下的顺序向量调度方法,其特征在于:步骤(3)中,执行阶段有三个,执行阶段1进行地址计算,执行阶段2进行存储器访问,执行阶段3进行数据获取,写回阶段进行数据的写回。4.根据权利要求3所述乱序访存机制下的顺序向量调度方法,其特征在于:步骤(3)中,执行阶段1从访存指令发射队列获得访存指令的基地址和偏移量,得到第一笔拆分地址。5.根据权利要求4所述乱序访存机制下的顺序向量调度方法,其特征在于:步骤(4)中,地址拆分单元根据向量访存指令的信息进行剩余的拆分,得到余下的拆分地址。6.根据权利要求1所述乱序访存机制下的顺序向量调度方法,其特征在于:步骤(4)中,重做队列的深度为执行阶段最多重做笔数。7.根据权利要求1所述乱序访存机制下的顺序向量调度方法,其特征在于:步骤(5)中,触发重做信号的情况包括但不限于a.在后的向量访存指令已经进入访存流水线执行,但是在先的标量访存指令就绪;b.访存流水线中缓存已满。8.根据权利要求1所述乱序访存机制下的顺序向量调度方法,其特征在于:步骤(5)中,地址拆分单元内设有状态机控制重做机制,初始时状态机为空闲状态,当向量访存指令开始拆分后进入拆分状态,当向量访存指令发出需要重做的信号后,状态机从拆分状态进入停顿状态,等向量访存指令再次下发下来时,读取重做队列的信息,当重做队列为空时,重做完成,若该笔拆分为最后一笔,则状态机进入空闲状态,若不是最后一笔,则进入拆分状态继续拆分。9.根据权利要求8所述乱序访存机制下的顺序向量调度方法,其特征在于:步骤(5)中,访存流水线每个执行阶段均设有计数器,在发生重做的时候更新该计数器,然后在每次成功再次执行后对计数器进行递减,直至计数器为0后重做完成。10.根据权利要求1所述乱序访存机制下的顺序向量调度方法,其特征在于:步骤(1)中,当访存指令为标量时,标量访存指令的操作数就绪后发射到访存流水线,标量访存指令
在访存流水线的写回阶段进行数据写回至标量寄存器。
技术总结
本发明公开了乱序访存机制下的顺序向量调度方法,设置了重做队列,当向量指令执行发生中断的时候将最近的几笔拆分暂存至重做队列内,访存流水线优先执行就绪的标量访存指令或者向量访存指令,执行完毕后,访存流水线读取重做队列的信息,从中断点继续执行,提高执行效率。行效率。行效率。
技术研发人员:李甜甜 费晓龙 陈昊文 魏定彦
受保护的技术使用者:进迭时空(杭州)科技有限公司
技术研发日:2023.05.29
技术公布日:2023/10/6
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/