一种基于依赖网格的指令级并行调度方法_5

文档序号:8380727阅读:来源:国知局
处理;否则,执行步骤②;
②用一个二重循环遍历指令依赖网格instnGroupsForUnits,外层循环从第二行开始依次遍历各行,内层循环依次遍历各列,内层循环中循环执行步骤③、④;
③用一个循环遍历单元格保存的指令集合curSet中的各指令对象,在循环中依次执行步骤④;
④用一个循环遍历指令所依赖的其他指令,找出这些指令的数据依赖优先级值中最大的那一个值作为maxG,其中如果没有依赖指令,则maxG为-1 ;然后令aimG=maxG+l,如果aimG小于指令数据依赖优先级值对应的组号,则将指令移动到同一列中aimG值对应行的指令子组中,并修改此指令的数据依赖优先级值为aimGroupIndex,然后在指令集合curSet中将此指令对象删除。
[0066]上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
【主权项】
1.一种基于依赖网格的指令级并行调度方法,其特征在于,步骤包括: 1)获取目标基本块中指令之间的数据依赖关系以及各指令所对应的功能单元的信息,根据所述数据依赖关系设置并计算各指令的数据依赖优先级值; 2)按所述数据依赖优先级值以及功能单元划分各指令,将划分得到的结果按网格形式进行存储,建立得到指令与数据依赖优先级、功能单元之间依赖关系的依赖网格; 3)按照步骤2)得到的依赖网格中指令的数据依赖优先级、指令与功能单元之间的关系进行指令间的并行性分析。
2.根据权利要求1所述的基于依赖网格的指令级并行调度方法,其特征在于,所述步骤I)中获取各指令所对应的功能单元的信息的具体实施步骤为:查询目标基本块中所有已确定对应物理功能单元的第一目标指令,并获取每条所述第一目标指令对应的物理功能单元的信息;查找基本块中所有未确定对应物理功能单元的第二目标指令,并获取每条所述第二目标指令对应的多种组合功能单元的信息,所述组合功能单元为由所述第二目标指令对应的所有物理功能单元所构成的可能组合。
3.根据权利要求2所述的基于依赖网格的指令级并行调度方法,其特征在于,步骤2)的具体实施步骤为: 2.1)遍历各指令,并将各指令按照数据依赖优先级划分为多个指令组; 2.2)遍历所述步骤2.1)得到的各指令组,将各指令组中所有已确定对应物理功能单元的第一目标指令按照所对应的所述物理功能单元进行划分,得到多个第一指令子组;将各指令组中所有未确定对应物理功能单元的第二目标指令按照所对应的所述组合功能单元进行划分,得到多个第二指令子组; 2.3)构建一个用于存储所述指令子组的二维表结构,所述二维表中行向量对应指令的各数据依赖优先级,每行的行号对应数据依赖优先级值,列向量分为对应各物理功能单元的第一部分、对应各组合功能单元的第二部分,每个数据依赖优先级值与一个物理功能单元或组合功能单元对应所述二维表的一个网格单元格;将各所述第一指令子组按照数据依赖优先级值、物理功能单元分别保存至所述二维表的第一部分各网格单元格中,将各所述第二指令子组按照数据依赖优先级、组合功能单元分别保存至所述二维表的第二部分各网格单元格中,由所述二维表的第一部分、第二部分构成指令与数据依赖优先级、功能单元之间依赖关系的依赖网格。
4.根据权利要求3所述的基于依赖网格的指令级并行调度方法,其特征在于,步骤1.0中计算各指令的数据依赖优先级值的具体实施步骤为: 1.1)分别为各指令定义一个数据依赖优先级值并初始化为O ; 1.2)从第二条指令开始,依次遍历基本块中各条指令计算对应的数据依赖优先级值,每条指令计算时,按逆序遍历从当前指令的前一条指令开始到首条指令的所有目标指令,判断目标指令中是否存在与当前指令有依赖关系的依赖指令,如果有这样的依赖指令,将查找到的所有所述依赖指令中最大的数据依赖优先级值加I后作为当前指令的数据依赖优先级值。
5.根据权利要求4所述的基于依赖网格的指令级并行调度方法,其特征在于,所述步骤1.2)中查找出所有与当前指令有依赖关系的指令的具体实施步骤为: 1.21)将当前指令中任意一个源变量作为目标源变量,在当前指令之前的所有指令中查找出对目标源变量进行最后一次定值的指令,得到目标源变量的最后一次定值指令,并将所述最后一次定值指令作为一条与当前指令有依赖关系的依赖指令; 1.22)取下一个源变量作为目标源变量,重复执行步骤1.21),直至完成对当前指令中所有源变量的最后一次定值指令的查找,得到所有与当前指令有依赖关系的依赖指令。
6.根据权利要求1?5任意一项所述的基于依赖网格的指令级并行调度方法,其特征在于,步骤3)后还包括依赖网格动态调整步骤4),具体实施步骤为: 4.1)当所述依赖网格中处于最高数据依赖优先级的待移除指令在本拍将被移除时,将所述待移除指令作为当前目标指令,并将所述待移除指令所对应的数据依赖优先级作为当前参照数据依赖优先级,转入执行步骤4.2); 4.2)在所述依赖网络的数据依赖优先级比所述参照数据依赖优先级低一级的对应行中,查找出与所述当前目标指令有依赖关系的所有依赖指令作为待调整指令,并分别获取每条所述待调整指令对应的所述依赖指令中最大数据依赖优先级值,将获取得到的各所述最大数据依赖优先级值加I后分别作为对应所述待调整指令调整后的数据依赖优先级值;然后将所述待调整指令按照调整后的数据依赖优先级值调整到依赖网格中对应的位置,转入执行步骤4.3); 4.3)以调整后的指令作为当前目标指令,并将所述调整后的指令的优先级作为当前参照数据依赖优先级,返回执行步骤4.2),直至执行到没有指令被调整或者到达最小的数据依赖优先级对应的那一行。
7.根据权利要求1?5任意一项所述的基于依赖网格描述的指令级并行调度方法,其特征在于,所述步骤3)中并行性分析具体包括识别指令之间逻辑并行性步骤,具体实施步骤为:获取所述依赖网格中处于目标数据依赖优先级的所有指令,得到与目标数据依赖优先级对应逻辑时间点的所有并行指令。
8.根据权利要求7所述的基于依赖网格描述的指令级并行调度方法,其特征在于,所述步骤3)中并行性分析具体还包括识别功能单元候选指令集合步骤,具体实施步骤为:获取所述依赖网格中对应目标功能单元且处于目标数据依赖优先级的所有指令,得到目标功能单元在目标数据依赖优先级所对应的逻辑时间点的候选指令集合。
9.根据权利要求8所述的基于依赖网格描述的指令级并行调度方法,其特征在于,所述步骤3)中并行性分析具体还包括获取目标执行单元工作量步骤,具体实施步骤为:统计所述依赖网格中对应目标功能单元处于各数据依赖优先级的所有指令,得到目标执行单元在各逻辑时间点的工作量;统计所述依赖网格中对应目标功能单元的所有指令,得到目标执行单元的总工作量。
10.根据权利要求9所述的基于依赖网格描述的指令级并行调度方法,其特征在于,所述步骤3)中并行性分析具体还包括功能单元关联性分析步骤,具体实施步骤为:在所述依赖网络中,查找所有与目标功能单元对应的指令具有依赖关系的依赖指令,将查找到的依赖指令对应的功能单元作为与所述目标功能单元具有关联关系的关联功能单元;统计查找到的所述关联功能单元的数量,得到所述目标功能单元的关联功能单元量。
【专利摘要】本发明公开一种基于依赖网格的指令级并行调度方法,步骤包括:1)获取目标基本块中指令之间的数据依赖关系以及各指令所对应的功能单元的信息,根据数据依赖关系设置并计算各指令的数据依赖优先级值;2)按数据依赖优先级值以及功能单元划分各指令,将划分得到的结果按网格形式进行存储,建立得到指令与数据依赖优先级、功能单元之间依赖关系的依赖网格;3)按照步骤2)得到的依赖网格中指令的数据依赖优先级、指令与功能单元之间的关系进行指令间的并行性分析。本发明结合数据依赖关系和功能单元分配关系,能够同时描述指令间的并行关系以及与硬件结构之间的相关性,具有实现方法简单、适用范围广、指令级并行度高的优点。
【IPC分类】G06F9-38
【公开号】CN104699464
【申请号】CN201510135304
【发明人】陈书明, 胡勇华, 孙海燕, 王霁, 扈啸
【申请人】中国人民解放军国防科学技术大学
【公开日】2015年6月10日
【申请日】2015年3月26日
当前第5页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1