一种用于粗粒度多核计算系统的分支处理模块及其分支处理机制转让专利

申请号 : CN201610645196.9

文献号 : CN106293642B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 宋宇鲲李浩洋张多利杜高明蒋雯

申请人 : 合肥工业大学

摘要 :

本发明公开了一种用于粗粒度多核计算系统的分支处理模块及其分支处理机制,其特征是:粗粒度多核计算系统包括片上网络、主控制单元、存储器单元、接口单元和多种功能单元;主控制单元在确认分支预测错误后,可以立即开始分支预测错误恢复,并提前终止已经发射的错误指令的执行,使系统恢复正常工作状态;功能单元在确认分支预测错误后,可以立即结束当前运算任务,恢复空闲状态,释放控制权,等待正确任务的下发。本发明能够在发现分支预测错误时在极短时间内纠正错误,减少由于分支预测错误带来的性能损失,从而进一步增强分支预测对系统性能的提升,使计算系统达到更高的工作效率。

权利要求 :

1.一种用于粗粒度多核计算系统的分支处理模块,所述粗粒度多核计算系统是基于片上网络的通信架构,所述片上网络包括:片上网络状态层、片上网络配置层和片上网络数据层;

所述粗粒度多核计算系统中设置有主控制单元、存储器单元;

所述主控制单元包括:取指模块、解码模块、寄存器重命名模块、调度器模块、发射模块、写回模块、提交模块、空闲虚拟寄存器队列、空闲物理寄存器队列、空闲功能单元队列和寄存器重命名映射表模块;

所述取指模块包括:程序指针PC;

所述解码模块包括:程序指针接口和若干通用寄存器;

所述调度器模块包括:指令窗口存储器;

所述提交模块包括:重定序缓冲区;

所述寄存器重命名映射表模块包括:前端表格和后端表格;其特征是:

在所述粗粒度多核计算系统的主控制单元内还设置有分支处理模块;

所述分支处理模块包括:检查点表格、功能单元状态表;

所述检查点表格内包含:分支指令的任务编号、分支预测结果和缓存程序指针;

所述功能单元状态表内包含:各个功能单元的任务编号;

所述取指模块收到所述调度器模块的指令读取信号时,根据所述程序指针PC从所述存储器单元中取出任务指令发送给解码模块;

所述解码模块判定所述任务指令为分支指令时,对所述分支指令进行预测,得到分支预测结果;再通过所述程序指针接口获取所述程序指针PC,并对所述程序指针PC的数值执行所述任务指令内包含的指针运算操作后,将运算结果作为缓存程序指针,并将所述缓存程序指针连同所述解码模块中的通用寄存器数值、分支预测结果一同存入所述任务指令内,从而得到更新后的任务指令;

所述寄存器重命名模块判定更新后的任务指令为分支指令时,将所述更新后的任务指令进行重组打包后,分别发送给所述分支处理模块内的检查点表格和所述提交模块内的重定序缓冲区;

所述提交模块检测到所述重定序缓冲区的头部为分支指令时,查询所述检查点表格,若检查点表格为空,则提交所述重定序缓冲区的头部分支指令;若检查点表格非空,则将所述重定序缓冲区的头部分支指令的任务编号与检查点表格首项的任务编号进行比较,若分支指令的任务编号较小,则提交所述重定序缓冲区的头部分支指令;否则,循环查询和比较提交条件,直到满足提交条件后再提交所述重定序缓冲区的头部分支指令;

所述分支处理模块接收到所述更新后的任务指令时,将其填入所述检查点表格中,并始终将检查点表格的首项作为当前分支指令;

所述分支处理模块通过所述片上网络状态层接收当前分支指令的正确跳转结果;并判断所述正确跳转结果与所述分支预测结果是否相同,若相同,则表示分支预测正确,从所述检查点表格头部移除所述当前分支指令,后续项目均向前移动一项;若不相同,则表示分支预测错误,所述分支处理模块向所述取指模块、所述解码模块、所述寄存器重命名模块、所述调度器模块、所述发射模块、所述提交模块和所述寄存器重命名映射表模块均发送分支恢复信号;

当所述取指模块、所述解码模块、所述寄存器重命名模块和所述调度器模块收到分支恢复信号时,若自身处在空闲状态,则相应模块立即进入各自的分支恢复状态;否则,相应模块等待空闲状态后再进入分支恢复状态;

当所述发射模块收到分支恢复信号时,若自身处在空闲状态时,则立即进入分支恢复状态;若处在底层任务指令请求状态或底层任务指令填充状态时,则等待当前状态结束后立即转入功能单元释放状态后再进入分支恢复状态;若处在其他状态,则继续执行发射操作,直到自身处在空闲状态或底层任务指令请求状态或底层任务指令填充状态;

当所述发射模块处于功能单元释放状态,所述发射模块释放掉所述当前分支指令请求的所有功能单元、所有虚拟寄存器和所有物理寄存器,并将所有功能单元、所有虚拟寄存器和所有物理寄存器分别重新送回所述空闲功能单元队列、所述空闲物理寄存器队列和所述空闲虚拟寄存器队列中;

当所述取指模块、所述解码模块、所述寄存器重命名模块、所述调度器模块和所述发射模块均已进入分支恢复状态时,所述分支处理模块生成开始恢复信号,并将所述检查点表格中的当前分支指令的缓存程序指针发送给解码模块,同时,控制提交模块将重定序缓冲区中保存的通用寄存器数值发送给解码模块;

所述分支处理模块依次检索所述功能单元状态表中各个功能单元的任务编号,对所述任务编号大于所述当前分支指令任务编号的功能单元通过所述片上网络配置层下发提前结束信息用于释放相应功能单元;

所述主控制单元在接收到片上网络状态层传来的各个功能单元发送的功能单元释放信息后,将相应功能单元释放信息中所包含的功能单元编号加入所述空闲功能单元队列中;

所述解码模块收到所述分支处理模块传来的缓存程序指针和提交模块传来的通用寄存器数值后,将所述通用寄存器数值写入解码模块中的通用寄存器,同时将所述缓存程序指针通过所述程序指针接口发送给所述取指模块;

所述取指模块收到所述解码模块传来的缓存程序指针,并用于覆盖所述程序指针PC;

所述调度器模块检测到所述开始恢复信号后,检索所述指令窗口存储器中的全部任务指令,将任务编号大于所述当前分支指令的任务编号的项目置为无效,同时发送调度器模块恢复完成信号给分支处理模块;

所述提交模块检测到所述开始恢复信号后,检索所述重定序缓冲区,将任务编号大于当前分支指令任务编号的任务指令中作为输出寄存器的虚拟寄存器和物理寄存器选出,并分别送入所述空闲虚拟寄存器队列和所述空闲物理寄存器队列,并将重定序缓冲区的写入指针移动到当前分支指令处,同时发送提交模块恢复完成信号给分支处理模块;

所述寄存器重命名映射表模块检测到所述开始恢复信号后,将所述后端表格的内容复制到所述前端表格内,用于覆盖所述前端表格的原有内容,然后将重定序缓冲区中任务编号小于当前分支指令任务编号的任务指令中的体系寄存器AR与虚拟寄存器VR的映射关系更新到前端表格中,同时发送寄存器重命名映射表模块恢复完成信号给分支处理模块;

所述分支处理模块收到所述调度器模块恢复完成信号、所述提交模块恢复完成信号和所述寄存器重命名映射表模块恢复完成信号后,分别发送分支处理结束信号给所述取指模块、所述解码模块、所述寄存器重命名模块、所述调度器模块、所述发射模块、所述提交模块,并清空所述检查点表格;

所述取指模块、所述解码模块、所述寄存器重命名模块、所述调度器模块、所述发射模块和所述提交模块接收到所述分支处理模块发送的分支处理结束信号,各自回到空闲状态,从而完成分支预测恢复过程。

2.一种用于粗粒度多核计算系统的分支处理机制,所述粗粒度多核计算系统是基于片上网络的通信架构,所述片上网络包括:片上网络状态层、片上网络配置层和片上网络数据层;

所述粗粒度多核计算系统包括:主控制单元、存储器单元和多种功能单元;所述多种功能单元包括:分支恢复模块、状态层接口、数据层接口、配置层接口;

所述主控制单元包括:取指模块、解码模块、寄存器重命名模块、调度器模块、发射模块、写回模块、提交模块、分支处理模块、空闲虚拟寄存器队列、空闲物理寄存器队列、空闲功能单元队列和寄存器重命名映射表模块;

所述取指模块包括:程序指针PC;

所述解码模块包括:程序指针接口和若干通用寄存器;

所述调度器模块包括:指令窗口存储器;

所述提交模块包括:重定序缓冲区;

所述寄存器重命名映射表模块包括:前端表格和后端表格;其特征是:所述分支处理机制是按如下步骤进行:步骤1、在所述主控制单元中设置检查点表格、功能单元状态表;所述检查点表格内包含:分支指令的任务编号、分支预测结果和缓存程序指针;所述功能单元状态表内包含:各个功能单元的任务编号;

步骤2、所述取指模块收到所述调度器模块的指令读取信号时,根据所述程序指针PC从所述存储器单元中取出任务指令发送给解码模块;

步骤3、所述解码模块判定所述任务指令为分支指令时,对所述分支指令进行预测,得到分支预测结果;再通过所述程序指针接口获取所述程序指针PC,并对所述程序指针PC的数值执行所述任务指令内包含的指针运算操作后,将运算结果作为缓存程序指针,并将所述缓存程序指针连同所述解码模块中的通用寄存器数值、分支预测结果一同存入所述任务指令内,从而得到更新后的任务指令;

步骤4、所述寄存器重命名模块判定更新后的任务指令为分支指令时,将所述更新后的任务指令进行重组打包后,发送给所述提交模块内的重定序缓冲区,同时写入检查点表格,并始终将检查点表格的首项作为当前分支指令;

步骤5、所述提交模块检测到所述重定序缓冲区的头部为分支指令时,查询所述检查点表格,若检查点表格为空,则提交所述重定序缓冲区的头部分支指令;若检查点表格非空,则将所述重定序缓冲区的头部分支指令的任务编号与检查点表格首项的任务编号进行比较,若分支指令的任务编号较小,则提交所述重定序缓冲区的头部分支指令;否则,循环查询和比较提交条件,直到满足提交条件后再提交所述重定序缓冲区的头部分支指令;

步骤6、主控制单元通过所述片上网络状态层接收当前分支指令的正确跳转结果;并判断所述正确跳转结果与所述分支预测结果是否相同,若相同,则表示分支预测正确,从所述检查点表格头部移除所述当前分支指令,后续项目均向前移动一项;若不相同,则表示分支预测错误,并产生分支恢复信号;

步骤7、所述取指模块、所述解码模块、所述寄存器重命名模块和所述调度器模块检测到分支恢复信号时,若自身处在空闲状态,则相应模块立即进入各自的分支恢复状态;否则,相应模块等待空闲状态后再进入分支恢复状态;

所述发射模块检测到所述分支恢复信号时,若自身处在空闲状态时,则立即进入分支恢复状态;若处在底层任务指令请求状态或底层任务指令填充状态时,则等待当前状态结束后立即转入功能单元释放状态后再进入分支恢复状态;若处在其他状态,则继续执行发射操作,直到自身处在空闲状态或底层任务指令请求状态或底层任务指令填充状态;

当所述发射模块处于功能单元释放状态时,所述发射模块释放掉所述当前分支指令请求的所有功能单元、所有虚拟寄存器和所有物理寄存器,并将所有功能单元、所有虚拟寄存器和所有物理寄存器分别重新送回所述空闲功能单元队列、所述空闲物理寄存器队列和所述空闲虚拟寄存器队列中;

步骤8、当所述取指模块、所述解码模块、所述寄存器重命名模块、所述调度器模块和所述发射模块均已进入分支恢复状态时,所述主控制单元生成开始恢复信号,并控制所述检查点表格中的当前分支指令的缓存程序指针发送给解码模块,同时,控制提交模块将重定序缓冲区中保存的通用寄存器数值发送给解码模块;

步骤9、所述主控制单元依次检索所述功能单元状态表中各个功能单元的任务编号,对所述任务编号大于所述当前分支指令任务编号的功能单元通过所述片上网络配置层下发提前结束信息用于释放相应功能单元;

步骤10、所述粗粒度多核计算系统中的各个功能模块根据所述提前结束信息,分别利用提前释放机制得到各个功能单元的功能单元释放信息后,并发送给所述主控制单元;

步骤11、所述主控制单元在接收到片上网络状态层传来的各个功能单元发送的功能单元释放信息后,将相应功能单元释放信息中所包含的功能单元编号加入所述空闲功能单元队列中;

步骤12、所述解码模块收到所述缓存程序指针和提交模块传来的通用寄存器数值后,将所述通用寄存器数值写入解码模块中的通用寄存器,同时将所述缓存程序指针通过所述程序指针接口发送给所述取指模块;

步骤13、所述取指模块收到所述解码模块传来的缓存程序指针,并用于覆盖所述程序指针PC;

步骤14、所述调度器模块检测到所述开始恢复信号后,检索所述指令窗口存储器中的全部任务指令,将任务编号大于所述当前分支指令的任务编号的项目置为无效,同时产生调度器模块恢复完成信号;

所述提交模块检测到所述开始恢复信号后,检索所述重定序缓冲区,将任务编号大于当前分支指令任务编号的任务指令中作为输出寄存器的虚拟寄存器和物理寄存器选出,并分别送入所述空闲虚拟寄存器队列和所述空闲物理寄存器队列,并将重定序缓冲区的写入指针移动到当前分支指令处,同时产生提交模块恢复完成信号;

所述寄存器重命名映射表模块检测到所述开始恢复信号后,将所述后端表格的内容复制到所述前端表格内,用于覆盖所述前端表格的原有内容,然后将重定序缓冲区中任务编号小于当前分支指令任务编号的任务指令中的体系寄存器AR与虚拟寄存器VR的映射关系更新到前端表格中,同时产生寄存器重命名映射表模块恢复完成信号;

步骤15、所述主控制单元根据所述调度器模块恢复完成信号、所述提交模块恢复完成信号和所述寄存器重命名映射表模块恢复完成信号后,产生分支处理结束信号,并清空所述检查点表格;

步骤16、所述取指模块、所述解码模块、所述寄存器重命名模块、所述调度器模块、所述发射模块和所述提交模块检测到所述分支处理结束信号后,各自回到空闲状态,从而完成分支预测恢复过程。

3.根据权利要求2所述的用于粗粒度多核计算系统的分支处理机制,其特征是,所述步骤10中的提前释放机制是按如下步骤进行:步骤10.1、所述分支恢复模块通过所述配置层接口检测是否接收到所述提前结束信息,若检测到,则进入步骤10.2,否则,返回步骤10.1;

步骤10.2、任一功能单元作为当前功能单元禁止所述数据层接口建立新的数据传输链路;同时检测所述数据层接口是否正在向所述片上网络发送数据,若是,进入步骤10.3,否则进入步骤10.5;

步骤10.3、当前功能单元停止所述数据层接口的数据发送,并立即通过所述数据层接口向目的节点发送结束包;

步骤10.4、若当前功能单元的状态层接口收到片上网络传来的链路撤销信号,则撤销所述片上网络上相应的数据传输链路,并释放所述片上网络上相应的路由节点;否则一直等待链路撤销信号;

步骤10.5、当前功能单元判断所述数据层接口是否正在从所述片上网络接收数据,若是,则进入步骤10.6;否则,进入步骤10.7;

步骤10.6、所述数据层接口等待源节点发送的结束包,若接收到所述结束包,则停止数据接收过程,并发送链路撤销信号;否则一直等待结束包;

步骤10.7、当前功能单元通过所述状态层接口向所述主控制单元发送功能单元释放信息;

步骤10.8、当前功能单元复位到初始状态。

说明书 :

一种用于粗粒度多核计算系统的分支处理模块及其分支处理

机制

技术领域

[0001] 本发明涉及高密度计算和指令动态调度领域,具体地说是一种用于粗粒度多核计算系统的分支预测错误提前处理及其恢复机制。

背景技术

[0002] 多核技术因为低功率消耗、强并行处理能力和优异的计算性能已经成为处理器设计的主流。然而,在多核计算系统运算性能的发挥很大程度上取决于计算系统中的算力能否被最大限度地利用,而通过分支预测的方式提前指令的下发时机,已经被广泛应用于现代超标量处理器中,并被证明为一种有效的提高处理器计算效率的方法和手段。
[0003] 分支预测的性能提升很大程度上取决于分支预测的准确度和分支预测错误时恢复正确工作状态的时间,而对基于片上网络的粗粒度多核计算系统而言,分支预测错误需要很长的时间来恢复系统工作状态,往往由此带来巨大的性能损失。

发明内容

[0004] 本发明为了克服现有发明的不足之处,提出了一种用于粗粒度多核计算系统的分支处理模块及其分支处理机制,以期能够使主控制单元在发现分支预测错误时在极短时间内纠正错误,减少由于分支预测错误带来的较大性能损失;使功能单元尽早结束错误的计算任务,并释放控制权,从而进一步增强分支预测对系统性能的提升,使计算系统达到更高的工作效率。
[0005] 本发明为达到上述目的所采用的技术方案是:
[0006] 本发明一种用于粗粒度多核计算系统的分支处理模块,所述粗粒度多核计算系统是基于片上网络的通信架构,所述片上网络包括:片上网络状态层、片上网络配置层和片上网络数据层;
[0007] 所述粗粒度多核计算系统中设置有主控制单元、存储器单元;
[0008] 所述主控制单元包括:取指模块、解码模块、寄存器重命名模块、调度器模块、发射模块、写回模块、提交模块、空闲虚拟寄存器队列、空闲物理寄存器队列、空闲功能单元队列和寄存器重命名映射表模块;
[0009] 所述取指模块包括:程序指针PC;
[0010] 所述解码模块包括:程序指针接口和若干通用寄存器;
[0011] 所述调度器模块包括:指令窗口存储器;
[0012] 所述提交模块包括:重定序缓冲区;
[0013] 所述寄存器重命名映射表模块包括:前端表格和后端表格;其特点是:
[0014] 在所述粗粒度多核计算系统的主控制单元内还设置有分支处理模块;
[0015] 所述分支处理模块包括:检查点表格、功能单元状态表;
[0016] 所述检查点表格内包含:分支指令的任务编号、分支预测结果和缓存程序指针;
[0017] 所述功能单元状态表内包含:各个功能单元的任务编号;
[0018] 所述取指模块收到所述调度器模块的指令读取信号时,根据所述程序指针PC从所述存储器单元中取出任务指令发送给解码模块;
[0019] 所述解码模块判定所述任务指令为分支指令时,对所述分支指令进行预测,得到分支预测结果;再通过所述程序指针接口获取所述程序指针PC,并对所述程序指针PC的数值执行所述任务指令内包含的指针运算操作后,将运算结果作为缓存程序指针,并将所述缓存程序指针连同所述解码模块中的通用寄存器数值、分支预测结果一同存入所述任务指令内,从而得到更新后的任务指令;
[0020] 所述寄存器重命名模块判定更新后的任务指令为分支指令时,将所述更新后的任务指令进行重组打包后,分别发送给所述分支处理模块内的检查点表格和所述提交模块内的重定序缓冲区;
[0021] 所述提交模块检测到所述重定序缓冲区的头部为分支指令时,查询所述检查点表格,若检查点表格为空,则提交所述重定序缓冲区的头部分支指令;若检查点表格非空,则将所述重定序缓冲区的头部分支指令的任务编号与检查点表格首项的任务编号进行比较,若分支指令的任务编号较小,则提交所述重定序缓冲区的头部分支指令;否则,循环查询和比较提交条件,直到满足提交条件后再提交所述重定序缓冲区的头部分支指令;
[0022] 所述分支处理模块接收到所述更新后的任务指令时,将其填入所述检查点表格中,并始终将检查点表格的首项作为当前分支指令;
[0023] 所述分支处理模块通过所述片上网络状态层接收当前分支指令的正确跳转结果;并判断所述正确跳转结果与所述分支预测结果是否相同,若相同,则表示分支预测正确,从所述检查点表格头部移除所述当前分支指令,后续项目均向前移动一项;若不相同,则表示分支预测错误,所述分支处理模块向所述取指模块、所述解码模块、所述寄存器重命名模块、所述调度器模块、所述发射模块、所述提交模块和所述寄存器重命名映射表模块均发送分支恢复信号;
[0024] 当所述取指模块、所述解码模块、所述寄存器重命名模块和所述调度器模块收到分支恢复信号时,若自身处在空闲状态,则相应模块立即进入各自的分支恢复状态;否则,相应模块等待空闲状态后再进入分支恢复状态;
[0025] 当所述发射模块收到分支恢复信号时,若自身处在空闲状态时,则立即进入分支恢复状态;若处在底层任务指令请求状态或底层任务指令填充状态时,则等待当前状态结束后立即转入功能单元释放状态后再进入分支恢复状态;若处在其他状态,则继续执行发射操作,直到自身处在空闲状态或底层任务指令请求状态或底层任务指令填充状态;
[0026] 当所述发射模块处于功能单元释放状态,所述发射模块释放掉所述当前分支指令请求的所有功能单元、所有虚拟寄存器和所有物理寄存器,并将所有功能单元、所有虚拟寄存器和所有物理寄存器分别重新送回所述空闲功能单元队列、所述空闲物理寄存器队列和所述空闲虚拟寄存器队列中;
[0027] 当所述取指模块、所述解码模块、所述寄存器重命名模块、所述调度器模块和所述发射模块均已进入分支恢复状态时,所述分支处理模块生成开始恢复信号,并将所述检查点表格中的当前分支指令的缓存程序指针发送给解码模块,同时,控制提交模块将重定序缓冲区中保存的通用寄存器数值发送给解码模块;
[0028] 所述分支处理模块依次检索所述功能单元状态表中各个功能单元的任务编号,对所述任务编号大于所述当前分支指令任务编号的功能单元通过所述片上网络配置层下发提前结束信息用于释放相应功能单元;
[0029] 所述主控制单元在接收到片上网络状态层传来的各个功能单元发送的功能单元释放信息后,将相应功能单元释放信息中所包含的功能单元编号加入所述空闲功能单元队列中;
[0030] 所述解码模块收到所述分支处理模块传来的缓存程序指针和提交模块传来的通用寄存器数值后,将所述通用寄存器数值写入解码模块中的通用寄存器,同时将所述缓存程序指针通过所述程序指针接口发送给所述取指模块;
[0031] 所述取指模块收到所述解码模块传来的缓存程序指针,并用于覆盖所述程序指针PC;
[0032] 所述调度器模块检测到所述开始恢复信号后,检索所述指令窗口存储器中的全部任务指令,将任务编号大于所述当前分支指令的任务编号的项目置为无效,同时发送调度器模块恢复完成信号给分支处理模块;
[0033] 所述提交模块检测到所述开始恢复信号后,检索所述重定序缓冲区,将任务编号大于当前分支指令任务编号的任务指令中作为输出寄存器的虚拟寄存器和物理寄存器选出,并分别送入所述空闲虚拟寄存器队列和所述空闲物理寄存器队列,并将重定序缓冲区的写入指针移动到当前分支指令处,同时发送提交模块恢复完成信号给分支处理模块;
[0034] 所述寄存器重命名映射表模块检测到所述开始恢复信号后,将所述后端表格的内容复制到所述前端表格内,用于覆盖所述前端表格的原有内容,然后将重定序缓冲区中任务编号小于当前分支指令任务编号的任务指令中的体系寄存器AR与虚拟寄存器VR的映射关系更新到前端表格中,同时发送寄存器重命名映射表模块恢复完成信号给分支处理模块;
[0035] 所述分支处理模块收到所述调度器模块恢复完成信号、所述提交模块恢复完成信号和所述寄存器重命名映射表模块恢复完成信号后,分别发送分支处理结束信号给所述取指模块、所述解码模块、所述寄存器重命名模块、所述调度器模块、所述发射模块、所述提交模块,并清空所述检查点表格;
[0036] 所述取指模块、所述解码模块、所述寄存器重命名模块、所述调度器模块、所述发射模块和所述提交模块接收到所述分支处理模块发送的分支处理结束信号,各自回到空闲状态,从而完成分支预测恢复过程。
[0037] 本发明一种用于粗粒度多核计算系统的分支处理机制,所述粗粒度多核计算系统是基于片上网络的通信架构,所述片上网络包括:片上网络状态层、片上网络配置层和片上网络数据层;
[0038] 所述粗粒度多核计算系统包括:主控制单元、存储器单元和多种功能单元;所述多种功能单元包括:分支恢复模块、状态层接口、数据层接口、配置层接口;
[0039] 所述主控制单元包括:取指模块、解码模块、寄存器重命名模块、调度器模块、发射模块、写回模块、提交模块、分支处理模块、空闲虚拟寄存器队列、空闲物理寄存器队列、空闲功能单元队列和寄存器重命名映射表模块;
[0040] 所述取指模块包括:程序指针PC;
[0041] 所述解码模块包括:程序指针接口和若干通用寄存器;
[0042] 所述调度器模块包括:指令窗口存储器;
[0043] 所述提交模块包括:重定序缓冲区;
[0044] 所述寄存器重命名映射表模块包括:前端表格和后端表格;其特点是:所述分支处理机制是按如下步骤进行:
[0045] 步骤1、在所述主控制单元中设置检查点表格、功能单元状态表;所述检查点表格内包含:分支指令的任务编号、分支预测结果和缓存程序指针;所述功能单元状态表内包含:各个功能单元的任务编号;
[0046] 步骤2、所述取指模块收到所述调度器模块的指令读取信号时,根据所述程序指针PC从所述存储器单元中取出任务指令发送给解码模块;
[0047] 步骤3、所述解码模块判定所述任务指令为分支指令时,对所述分支指令进行预测,得到分支预测结果;再通过所述程序指针接口获取所述程序指针PC,并对所述程序指针PC的数值执行所述任务指令内包含的指针运算操作后,将运算结果作为缓存程序指针,并将所述缓存程序指针连同所述解码模块中的通用寄存器数值、分支预测结果一同存入所述任务指令内,从而得到更新后的任务指令;
[0048] 步骤4、所述寄存器重命名模块判定更新后的任务指令为分支指令时,将所述更新后的任务指令进行重组打包后,发送给所述提交模块内的重定序缓冲区,同时写入检查点表格,并始终将检查点表格的首项作为当前分支指令;
[0049] 步骤5、所述提交模块检测到所述重定序缓冲区的头部为分支指令时,查询所述检查点表格,若检查点表格为空,则提交所述重定序缓冲区的头部分支指令;若检查点表格非空,则将所述重定序缓冲区的头部分支指令的任务编号与检查点表格首项的任务编号进行比较,若分支指令的任务编号较小,则提交所述重定序缓冲区的头部分支指令;否则,循环查询和比较提交条件,直到满足提交条件后再提交所述重定序缓冲区的头部分支指令;
[0050] 步骤6、主控制单元通过所述片上网络状态层接收当前分支指令的正确跳转结果;并判断所述正确跳转结果与所述分支预测结果是否相同,若相同,则表示分支预测正确,从所述检查点表格头部移除所述当前分支指令,后续项目均向前移动一项;若不相同,则表示分支预测错误,并产生分支恢复信号;
[0051] 步骤7、所述取指模块、所述解码模块、所述寄存器重命名模块和所述调度器模块检测到分支恢复信号时,若自身处在空闲状态,则相应模块立即进入各自的分支恢复状态;否则,相应模块等待空闲状态后再进入分支恢复状态;
[0052] 所述发射模块检测到所述分支恢复信号时,若自身处在空闲状态时,则立即进入分支恢复状态;若处在底层任务指令请求状态或底层任务指令填充状态时,则等待当前状态结束后立即转入功能单元释放状态后再进入分支恢复状态;若处在其他状态,则继续执行发射操作,直到自身处在空闲状态或底层任务指令请求状态或底层任务指令填充状态;
[0053] 当所述发射模块处于功能单元释放状态时,所述发射模块释放掉所述当前分支指令请求的所有功能单元、所有虚拟寄存器和所有物理寄存器,并将所有功能单元、所有虚拟寄存器和所有物理寄存器分别重新送回所述空闲功能单元队列、所述空闲物理寄存器队列和所述空闲虚拟寄存器队列中;
[0054] 步骤8、当所述取指模块、所述解码模块、所述寄存器重命名模块、所述调度器模块和所述发射模块均已进入分支恢复状态时,所述主控制单元生成开始恢复信号,并控制所述检查点表格中的当前分支指令的缓存程序指针发送给解码模块,同时,控制提交模块将重定序缓冲区中保存的通用寄存器数值发送给解码模块;
[0055] 步骤9、所述主控制单元依次检索所述功能单元状态表中各个功能单元的任务编号,对所述任务编号大于所述当前分支指令任务编号的功能单元通过所述片上网络配置层下发提前结束信息用于释放相应功能单元;
[0056] 步骤10、所述粗粒度多核计算系统中的各个功能模块根据所述提前结束信息,分别利用提前释放机制得到各个功能单元的功能单元释放信息后,并发送给所述主控制单元;
[0057] 步骤11、所述主控制单元在接收到片上网络状态层传来的各个功能单元发送的功能单元释放信息后,将相应功能单元释放信息中所包含的功能单元编号加入所述空闲功能单元队列中;
[0058] 步骤12、所述解码模块收到所述缓存程序指针和提交模块传来的通用寄存器数值后,将所述通用寄存器数值写入解码模块中的通用寄存器,同时将所述缓存程序指针通过所述程序指针接口发送给所述取指模块;
[0059] 步骤13、所述取指模块收到所述解码模块传来的缓存程序指针,并用于覆盖所述程序指针PC;
[0060] 步骤14、所述调度器模块检测到所述开始恢复信号后,检索所述指令窗口存储器中的全部任务指令,将任务编号大于所述当前分支指令的任务编号的项目置为无效,同时产生调度器模块恢复完成信号;
[0061] 所述提交模块检测到所述开始恢复信号后,检索所述重定序缓冲区,将任务编号大于当前分支指令任务编号的任务指令中作为输出寄存器的虚拟寄存器和物理寄存器选出,并分别送入所述空闲虚拟寄存器队列和所述空闲物理寄存器队列,并将重定序缓冲区的写入指针移动到当前分支指令处,同时产生提交模块恢复完成信号;
[0062] 所述寄存器重命名映射表模块检测到所述开始恢复信号后,将所述后端表格的内容复制到所述前端表格内,用于覆盖所述前端表格的原有内容,然后将重定序缓冲区中任务编号小于当前分支指令任务编号的任务指令中的体系寄存器AR与虚拟寄存器VR的映射关系更新到前端表格中,同时产生寄存器重命名映射表模块恢复完成信号;
[0063] 步骤15、所述主控制单元根据所述调度器模块恢复完成信号、所述提交模块恢复完成信号和所述寄存器重命名映射表模块恢复完成信号后,产生分支处理结束信号,并清空所述检查点表格;
[0064] 步骤16、所述取指模块、所述解码模块、所述寄存器重命名模块、所述调度器模块、所述发射模块和所述提交模块检测到所述分支处理结束信号后,各自回到空闲状态,从而完成分支预测恢复过程。
[0065] 本发明所述的用于粗粒度多核计算系统的分支处理机制的特点也在于,所述步骤10中的提前释放机制是按如下步骤进行:
[0066] 步骤10.1、所述分支恢复模块通过所述配置层接口检测是否接收到所述提前结束信息,若检测到,则进入步骤10.2,否则,返回步骤10.1;
[0067] 步骤10.2、任一功能单元作为当前功能单元禁止所述数据层接口建立新的数据传输链路;同时检测所述数据层接口是否正在向所述片上网络发送数据,若是,进入步骤10.3,否则进入步骤10.5;
[0068] 步骤10.3、当前功能单元停止所述数据层接口的数据发送,并立即通过所述数据层接口向目的节点发送结束包;
[0069] 步骤10.4、若当前功能单元的状态层接口收到片上网络传来的链路撤销信号,则撤销所述片上网络上相应的数据传输链路,并释放所述片上网络上相应的路由节点;否则一直等待链路撤销信号;
[0070] 步骤10.5、当前功能单元判断所述数据层接口是否正在从所述片上网络接收数据,若是,则进入步骤10.6;否则,进入步骤10.7;
[0071] 步骤10.6、所述数据层接口等待源节点发送的结束包,若接收到所述结束包,则停止数据接收过程,并发送链路撤销信号;否则一直等待结束包;
[0072] 步骤10.7、当前功能单元通过所述状态层接口向所述主控制单元发送功能单元释放信息;
[0073] 步骤10.8、当前功能单元复位到初始状态。
[0074] 与现有技术相比,本发明的有益技术效果体现在:
[0075] 1、本发明提供了一种适用于粗粒度多核计算系统的分支处理机制,可以使粗粒度系统在采用分支预测技术遇到分支预测错误时,利用寄存器重命名映射表模块能够顺利回溯到正确执行状态,保证了整个计算系统任务执行的正确性和稳定性,提前了任务指令的下发时间,使粗粒度多核计算系统的算力能够得到充分利用,提高了系统的工作效率;分支预测错误时,主控制单元通过检查点表格能够及时发现,并立即采取措施制止错误指令的继续执行,使计算系统重新回到正确的执行序列,并且通过功能单元状态表能够提前回收分配给错误指令的算力资源的效率,保证了系统的整体工作性能,降低了分支预测错误时系统恢复正常工作状态的代价,也减少了不必要的功率消耗和性能损失。
[0076] 2、本发明通过检查点表格对分支指令设置了跟踪机制,一旦可以判断分支预测结果,就立即进行分支预测判断,而不需要等到该指令到达重定序缓冲区头部时才检测分支预测的正确性,大大提前了对分支预测错误的干预时间,避免了错误指令的进一步下发和执行,从而减小了分支预测错误带来的性能损失代价;为系统主控制单元的不同模块设置了不同的错误恢复机制,对消耗时间比较长的发射模块设置了多级恢复断点,在发射模块处于不同状态时具备不同的分支错误恢复机制,避免了该模块运行到单一恢复断点消耗的时间过长,成为分支错误恢复过程的瓶颈,从而拖慢整个分支错误恢复过程;通过任务编号记录被各个任务使用的功能单元,从而在分支预测错误时有迹可循,能够顺利区分出正确指令和错误指令,方便分支错误恢复时的精细控制;通过重定序缓冲区信息实现虚拟寄存器和物理寄存器的释放,使被错误指令占用的虚拟寄存器和物理寄存器能够迅速被释放,回到空闲虚拟寄存器队列和空闲物理寄存器队列,方便之后正确任务指令的使用。
[0077] 3、本发明为功能单元设计了提前释放机制,在收到主控制单元发来的提前结束信息后,片上网络数据层传输的源节点能够立即终止数据传输,并撤销传输链路,释放路由节点,避免了路由单元的死锁,也避免了粗粒度多核计算系统中等待当次数据传输结束所消耗的巨量时间,使得功能单元不会被错误指令长时间占用而导致正确指令没有足够的算力执行运算;本方案中功能单元的释放使用了计算系统中功能单元的正常释放机制,在保证功能单元释放时间不会过长的前提下,避免了增加额外的逻辑资源开销,也避免了过于激进的释放策略可能带来的冒险。

附图说明

[0078] 图1为本发明所面向的片上粗粒度多核计算系统的结构图;
[0079] 图2为本发明的主控制单元的结构图;
[0080] 图3为本发明主控制单元分支处理模块中的检查点表格示意图;
[0081] 图4为本发明寄存器重命名映射表示意图;
[0082] 图5为本发明主控制单元的分支处理机制流程图;
[0083] 图6为本发明功能单元的提前释放机制流程图。

具体实施方式

[0084] 在本例实施中,一种用于粗粒度多核计算系统的分支处理模块,粗粒度多核计算系统是基于片上网络的通信架构,片上网络包括:片上网络状态层、片上网络配置层和片上网络数据层;
[0085] 粗粒度多核计算系统中设置有主控制单元、存储器单元和多种功能单元,系统结构如图1所示,主控制单元、存储器单元和多种功能单元间通过片上网络进行通信,主控制单元接收任务指令后,通过向存储器单元和多种功能单元发送配置信息,实现对计算系统的任务调度;存储器单元和多种功能单元在接收到主控制单元通过片上网络发来的配置信息后,根据配置信息的内容,完成相应的运算或数据存取操作;
[0086] 主控制单元包括:取指模块、解码模块、寄存器重命名模块、调度器模块、发射模块、写回模块、提交模块、空闲虚拟寄存器队列、空闲物理寄存器队列、空闲功能单元队列、状态层接口和寄存器重命名映射表模块,图2给出了其结构示意图,该单元通过片上网络配置层、片上网络状态层和片上网络数据层实现与粗粒度多核计算系统内的存储器和各种功能单元的数据与信息交换;
[0087] 取指模块包括:程序指针PC和顶层任务指令缓存;
[0088] 解码模块包括:程序指针接口和若干通用寄存器;
[0089] 调度器模块包括:指令窗口存储器;
[0090] 提交模块包括:重定序缓冲区;
[0091] 寄存器重命名映射表模块包括:前端表格和后端表格,如图3所示,两个表格均是以体系寄存器AR的编号为索引,以虚拟寄存器VR的编号为内容;前端表格记录任务指令经过寄存器重命名模块后体系寄存器AR与虚拟寄存器VR的映射关系;后端表格记录截至程序执行到最新在提交模块被提交的任务指令时体系寄存器AR与虚拟寄存器VR的映射关系;
[0092] 在粗粒度多核计算系统的主控制单元内还设置有分支处理模块;
[0093] 分支处理模块包括:检查点表格、功能单元状态表;
[0094] 检查点表格内包含:分支指令的任务编号、分支预测结果和缓存程序指针,如图4所示,该表格中可容纳的项数即为粗粒度多核计算系统最多同时支持处理的分支指令数目;
[0095] 功能单元状态表内包含:各个功能单元的任务编号,每当一个功能单元被某一任务指令使用,该任务指令的任务编号即被写入功能单元状态表中该功能单元的对应项目处;
[0096] 取指模块通过片上网络配置层向存储器发送顶层任务指令请求信息,并通过片上网络数据层接收存储器传来的顶层任务指令,将其缓存到顶层任务指令缓存中;取指模块收到调度器模块的指令读取信号时,根据程序指针PC从顶层任务指令缓存取出任务指令发送给解码模块;
[0097] 解码模块判定任务指令为分支指令时,对分支指令进行预测,得到分支预测结果;再通过程序指针接口获取程序指针PC,并对程序指针PC的数值执行任务指令内包含的指针运算操作后,将运算结果作为缓存程序指针,并将缓存程序指针连同解码模块中的通用寄存器数值、分支预测结果一同存入任务指令内,从而得到更新后的任务指令;解码模块还会为每一条顶层任务指令分配相应的任务编号作为其在主控制单元中调度的唯一标识;
[0098] 寄存器重命名模块判定更新后的任务指令为分支指令时,将更新后的任务指令进行重组打包后,分别发送给分支处理模块内的检查点表格和提交模块内的重定序缓冲区;
[0099] 提交模块检测到重定序缓冲区的头部为分支指令时,查询检查点表格,若检查点表格为空,即为当前粗粒度多核计算系统中不存在尚未确定预测结果的分支指令,则提交重定序缓冲区的头部分支指令;若检查点表格非空,则将重定序缓冲区的头部分支指令的任务编号与检查点表格首项的任务编号进行比较,若分支指令的任务编号较小,则提交重定序缓冲区的头部分支指令;否则,循环查询和比较提交条件,直到满足提交条件后再提交重定序缓冲区的头部分支指令;
[0100] 分支处理模块接收到更新后的任务指令时,将其填入检查点表格中,并始终将检查点表格的首项作为当前分支指令;
[0101] 分支处理模块通过片上网络状态层接收当前分支指令的正确跳转结果;并判断正确跳转结果与分支预测结果是否相同,若相同,则表示分支预测正确,从检查点表格头部移除当前分支指令,后续项目均向前移动一项;若不相同,则表示分支预测错误,分支处理模块向取指模块、解码模块、寄存器重命名模块、调度器模块、发射模块、提交模块和寄存器重命名映射表模块均发送分支恢复信号;
[0102] 当取指模块、解码模块、寄存器重命名模块和调度器模块收到分支恢复信号时,若自身处在空闲状态,则相应模块立即进入各自的分支恢复状态;否则,相应模块等待空闲状态后再进入分支恢复状态;
[0103] 当发射模块收到分支恢复信号时,若自身处在空闲状态时,则立即进入分支恢复状态;若处在底层任务指令请求状态或底层任务指令填充状态时,则等待当前状态结束后立即转入功能单元释放状态后再进入分支恢复状态;若处在其他状态,则继续执行发射操作,直到自身处在空闲状态或底层任务指令请求状态或底层任务指令填充状态;
[0104] 当发射模块处于功能单元释放状态,发射模块释放掉当前分支指令请求的所有功能单元、所有虚拟寄存器和所有物理寄存器,并将所有功能单元、所有虚拟寄存器和所有物理寄存器分别重新送回空闲功能单元队列、空闲物理寄存器队列和空闲虚拟寄存器队列中;
[0105] 当取指模块、解码模块、寄存器重命名模块、调度器模块和发射模块均已进入分支恢复状态时,分支处理模块生成开始恢复信号,并将检查点表格中的当前分支指令的缓存程序指针发送给解码模块,同时,控制提交模块将重定序缓冲区中保存的通用寄存器数值发送给解码模块;
[0106] 分支处理模块依次检索功能单元状态表中各个功能单元的任务编号,任务编号大于当前分支指令任务编号的功能单元即为被分支预测错误产生的无效指令占用的功能单元,对任务编号大于当前分支指令任务编号的功能单元通过片上网络配置层下发提前结束信息用于释放相应功能单元;
[0107] 主控制单元在接收到片上网络状态层传来的各个功能单元发送的功能单元释放信息后,将相应功能单元释放信息中所包含的功能单元编号加入空闲功能单元队列中;
[0108] 解码模块收到分支处理模块传来的缓存程序指针和提交模块传来的通用寄存器数值后,将通用寄存器数值写入解码模块中的通用寄存器,同时将缓存程序指针通过程序指针接口发送给取指模块;
[0109] 取指模块收到解码模块传来的缓存程序指针,由于分支预测错误,传来的缓存程序指针即为当前分支指令的正确跳转方向,将缓存程序指针用于覆盖程序指针PC,此时系统的程序指针即恢复到了当前分支指令被正确执行后的状态;
[0110] 调度器模块检测到开始恢复信号后,检索指令窗口存储器中的全部任务指令,任务指令编号大于当前分支指令的任务编号的项目均是由于分支预测错误产生的无效任务指令,所以将任务编号大于当前分支指令的任务编号的项目置为无效,同时发送调度器模块恢复完成信号给分支处理模块;
[0111] 提交模块检测到开始恢复信号后,检索重定序缓冲区,将任务编号大于当前分支指令任务编号的任务指令中作为输出寄存器的虚拟寄存器和物理寄存器选出,并分别送入空闲虚拟寄存器队列和空闲物理寄存器队列,并将重定序缓冲区的写入指针移动到当前分支指令处,同时发送提交模块恢复完成信号给分支处理模块;
[0112] 寄存器重命名映射表模块检测到开始恢复信号后,将后端表格的内容复制到前端表格内,用于覆盖前端表格的原有内容,即使前端表格的映射关系恢复到了执行完所有已经提交的指令后体系寄存器AR和虚拟寄存器VR的映射关系,然后将重定序缓冲区中任务编号小于当前分支指令任务编号的任务指令中的体系寄存器AR与虚拟寄存器VR的映射关系更新到前端表格中,即使前端表格恢复到了当前分支指令执行前的体系寄存器AR和虚拟寄存器VR的映射关系,从而完成了寄存器重命名映射表的恢复过程,同时发送寄存器重命名映射表模块恢复完成信号给分支处理模块;
[0113] 分支处理模块收到调度器模块恢复完成信号、提交模块恢复完成信号和寄存器重命名映射表模块恢复完成信号后,分别发送分支处理结束信号给取指模块、解码模块、寄存器重命名模块、调度器模块、发射模块、提交模块,并清空检查点表格;
[0114] 取指模块、解码模块、寄存器重命名模块、调度器模块、发射模块和提交模块接收到分支处理模块发送的分支处理结束信号,各自回到空闲状态,从而完成分支预测恢复过程。
[0115] 在本例实施中,一种用于粗粒度多核计算系统的分支处理机制,粗粒度多核计算系统是基于片上网络的通信架构,片上网络包括:片上网络状态层、片上网络配置层和片上网络数据层;
[0116] 粗粒度多核计算系统包括:主控制单元、存储器单元和多种功能单元;多种功能单元包括:分支恢复模块、状态层接口、数据层接口、配置层接口;
[0117] 主控制单元包括:取指模块、解码模块、寄存器重命名模块、调度器模块、发射模块、写回模块、提交模块、分支处理模块、空闲虚拟寄存器队列、空闲物理寄存器队列、空闲功能单元队列和寄存器重命名映射表模块;
[0118] 取指模块包括:程序指针PC;
[0119] 解码模块包括:程序指针接口和若干通用寄存器;
[0120] 调度器模块包括:指令窗口存储器;
[0121] 提交模块包括:重定序缓冲区;
[0122] 寄存器重命名映射表模块包括:前端表格和后端表格;分支处理机制是按如下步骤进行,其中分支处理模块流程图如图5所示,图中流程图包括两个部分,分别是左半部的检查点表格写入部分和右半边的检查点表格查询部分,两个部分通过检查点表格联系起来:
[0123] 步骤1、在主控制单元中设置检查点表格、功能单元状态表;检查点表格内包含:分支指令的任务编号、分支预测结果和缓存程序指针;功能单元状态表内包含:各个功能单元的任务编号;
[0124] 步骤2、取指模块收到调度器模块的指令读取信号时,根据程序指针PC从存储器单元中取出任务指令发送给解码模块;
[0125] 步骤3、解码模块判定任务指令为分支指令时,对分支指令进行预测,得到分支预测结果;再通过程序指针接口获取程序指针PC,并对程序指针PC的数值执行任务指令内包含的指针运算操作后,将运算结果作为缓存程序指针,并将缓存程序指针连同解码模块中的通用寄存器数值、分支预测结果一同存入任务指令内,从而得到更新后的任务指令;
[0126] 步骤4、寄存器重命名模块判定更新后的任务指令为分支指令时,将更新后的任务指令进行重组打包后,发送给提交模块内的重定序缓冲区,同时写入检查点表格,并始终将检查点表格的首项作为当前分支指令;
[0127] 步骤5、提交模块检测到重定序缓冲区的头部为分支指令时,查询检查点表格,若检查点表格为空,则提交重定序缓冲区的头部分支指令;若检查点表格非空,则将重定序缓冲区的头部分支指令的任务编号与检查点表格首项的任务编号进行比较,若分支指令的任务编号较小,则提交重定序缓冲区的头部分支指令;否则,循环查询和比较提交条件,直到满足提交条件后再提交重定序缓冲区的头部分支指令;
[0128] 步骤6、主控制单元通过片上网络状态层接收当前分支指令的正确跳转结果;并判断正确跳转结果与分支预测结果是否相同,若相同,则表示分支预测正确,从检查点表格头部移除当前分支指令,后续项目均向前移动一项;若不相同,则表示分支预测错误,并产生分支恢复信号;
[0129] 步骤7、取指模块、解码模块、寄存器重命名模块和调度器模块检测到分支恢复信号时,若自身处在空闲状态,则相应模块立即进入各自的分支恢复状态;否则,相应模块等待空闲状态后再进入分支恢复状态;
[0130] 发射模块检测到分支恢复信号时,若自身处在空闲状态时,则立即进入分支恢复状态;若处在底层任务指令请求状态或底层任务指令填充状态时,则等待当前状态结束后立即转入功能单元释放状态后再进入分支恢复状态;若处在其他状态,则继续执行发射操作,直到自身处在空闲状态或底层任务指令请求状态或底层任务指令填充状态;
[0131] 当发射模块处于功能单元释放状态时,发射模块释放掉当前分支指令请求的所有功能单元、所有虚拟寄存器和所有物理寄存器,并将所有功能单元、所有虚拟寄存器和所有物理寄存器分别重新送回空闲功能单元队列、空闲物理寄存器队列和空闲虚拟寄存器队列中;
[0132] 步骤8、当取指模块、解码模块、寄存器重命名模块、调度器模块和发射模块均已进入分支恢复状态时,主控制单元生成开始恢复信号,并控制检查点表格中的当前分支指令的缓存程序指针发送给解码模块,同时,控制提交模块将重定序缓冲区中保存的通用寄存器数值发送给解码模块;
[0133] 步骤9、主控制单元依次检索功能单元状态表中各个功能单元的任务编号,对任务编号大于当前分支指令任务编号的功能单元通过片上网络配置层下发提前结束信息用于释放相应功能单元;
[0134] 步骤10、粗粒度多核计算系统中的各个功能模块根据提前结束信息,分别利用提前释放机制得到各个功能单元的功能单元释放信息后,并发送给主控制单元;具体如图6所示:
[0135] 步骤10.1、分支恢复模块通过配置层接口检测是否接收到提前结束信息,若检测到,则进入步骤10.2,否则,返回步骤10.1;
[0136] 步骤10.2、任一功能单元作为当前功能单元禁止数据层接口建立新的数据传输链路;同时检测数据层接口是否正在向片上网络发送数据,若是,进入步骤10.3,否则进入步骤10.5;
[0137] 步骤10.3、当前功能单元停止数据层接口的数据发送,并立即通过数据层接口向目的节点发送结束包;
[0138] 步骤10.4、若当前功能单元的状态层接口收到片上网络传来的链路撤销信号,则撤销片上网络上相应的数据传输链路,并释放片上网络上相应的路由节点;否则一直等待链路撤销信号;
[0139] 步骤10.5、当前功能单元判断数据层接口是否正在从片上网络接收数据,若是,则进入步骤10.6;否则,进入步骤10.7;
[0140] 步骤10.6、数据层接口等待源节点发送的结束包,若接收到结束包,则停止数据接收过程,并发送链路撤销信号;否则一直等待结束包;
[0141] 步骤10.7、当前功能单元通过状态层接口向主控制单元发送功能单元释放信息;
[0142] 步骤10.8、当前功能单元复位到初始状态。
[0143] 步骤11、主控制单元在接收到片上网络状态层传来的各个功能单元发送的功能单元释放信息后,将相应功能单元释放信息中所包含的功能单元编号加入空闲功能单元队列中;
[0144] 步骤12、解码模块收到缓存程序指针和提交模块传来的通用寄存器数值后,将通用寄存器数值写入解码模块中的通用寄存器,同时将缓存程序指针通过程序指针接口发送给取指模块;
[0145] 步骤13、取指模块收到解码模块传来的缓存程序指针,并用于覆盖程序指针PC;
[0146] 步骤14、调度器模块检测到开始恢复信号后,检索指令窗口存储器中的全部任务指令,将任务编号大于当前分支指令的任务编号的项目置为无效,同时产生调度器模块恢复完成信号;
[0147] 提交模块检测到开始恢复信号后,检索重定序缓冲区,将任务编号大于当前分支指令任务编号的任务指令中作为输出寄存器的虚拟寄存器和物理寄存器选出,并分别送入空闲虚拟寄存器队列和空闲物理寄存器队列,并将重定序缓冲区的写入指针移动到当前分支指令处,同时产生提交模块恢复完成信号;
[0148] 寄存器重命名映射表模块检测到开始恢复信号后,将后端表格的内容复制到前端表格内,用于覆盖前端表格的原有内容,然后将重定序缓冲区中任务编号小于当前分支指令任务编号的任务指令中的体系寄存器AR与虚拟寄存器VR的映射关系更新到前端表格中,同时产生寄存器重命名映射表模块恢复完成信号;
[0149] 步骤15、主控制单元根据调度器模块恢复完成信号、提交模块恢复完成信号和寄存器重命名映射表模块恢复完成信号后,产生分支处理结束信号,并清空检查点表格;
[0150] 步骤16、取指模块、解码模块、寄存器重命名模块、调度器模块、发射模块和提交模块检测到分支处理结束信号后,各自回到空闲状态,从而完成分支预测恢复过程。