【技术实现步骤摘要】
一种指令调度方法及装置
本专利技术涉及通信领域,尤其涉及一种指令调度方法及装置。
技术介绍
现有技术中,CPU (Central Processing Unit,中央处理器)中的各功能部件通常 是独立并行的,因此编译器基于CPU结构采用指令调度方法提高指令级并行。其中,指令调 度是一种指令并行执行的技术,编译器或者机器硬件通过调整指令的顺序来提高每拍内机 器执行指令的数量,所述拍为编译器在编译源程序时所模拟的机器执行指令的时钟周期。 现有编译技术中通常采用表调度算法来实现指令调度,通常采用一个候选指令队列。具体 的,在进行指令调度时,首先对需要调度的指令构建数据依赖图,该数据依赖图由若干个节 点组成,每个节点代表一条指令,该数据依赖图可以用来表示指令之间的依赖关系。然后计 算各条指令的优先级,接着逐拍对数据依赖图中的指令进行调度。指令调度初始时刻,从 所述数据依赖图中找出入度为零的指令加入到候选指令队列;并将其他候选指令队列置为 空;具体的,每拍的调度方法为:按照指令优先级依次从候选指令队列中选择指令填入指 令槽,并更新候选指令队列;对于未能选择到指令填入的指令槽,填入空操作指令;当调度 完一拍内的指令槽后,更新拍,更新所述候选指令队列,重复上述步骤进行一拍内的调度, 直到数据依赖图中的所有指令都完成调度则结束。 随着多核处理器的出现,多核处理器是由多个单核处理器组成的,其中单核的结 构趋于简单,出现了串行的功能部件的组织形式,甚至是功能部件阵列。如果使用现有技术 中表调度的指令调度方法完成在多核处理器上的指令调度,在执行指 ...
【技术保护点】
一种指令调度方法,应用于指令调度装置,其特征在于,包括:构建数据依赖图;分别从所述数据依赖图中提取k个指令进行调度得到每一拍的m个超长指令字,使得同一拍内的超长指令字之间是并行执行的关系,相邻两拍中后一拍的任一超长指令字的第t个指令槽的指令与前一拍的任一超长指令字的第t+1个指令槽的指令之间不存在依赖关系;其中,0≤k≤m×n,所述n表示一个超长指令字中指令槽的个数,所述n为大于等于1的整数,所述m表示每拍中超长指令字的个数,所述m为大于等于1的整数,所述t为大于等于1小于等于n‑1的整数。
【技术特征摘要】
1. 一种指令调度方法,应用于指令调度装置,其特征在于,包括: 构建数据依赖图; 分别从所述数据依赖图中提取k个指令进行调度得到每一拍的m个超长指令字,使得 同一拍内的超长指令字之间是并行执行的关系,相邻两拍中后一拍的任一超长指令字的第 t个指令槽的指令与前一拍的任一超长指令字的第t+1个指令槽的指令之间不存在依赖关 系; 其中,0 < k < mXn,所述n表示一个超长指令字中指令槽的个数,所述n为大于等于 1的整数,所述m表示每拍中超长指令字的个数,所述m为大于等于1的整数,所述t为大于 等于1小于等于n-1的整数。2. 根据权利要求1所述的方法,其特征在于,在所述分别从所述DAG数据依赖图中提取 k个指令进行调度得到每一拍的m个超长指令字之后,所述方法还包括: 按照所述超长指令字中各个指令的排列顺序执行所述超长指令字中的各个指令。3. 根据权利要求1或2所述的方法,其特征在于, 在构建数据依赖图之后,所述方法还包括: 建立n+1个候选指令队列,所述n+1个候选指令队列分别为第1至第n+1候选指令队 列; 初始化所述n+1个候选指令队列,使所述n+1个候选指令队列均为空。4. 根据权利要求3所述的方法,其特征在于,所述分别从所述数据依赖图中提取k个指 令进行调度得到每一拍的m个超长指令字,使得同一拍内的超长指令字之间是并行执行的 关系,相邻两拍中后一拍的任一超长指令字的第t个指令槽的指令与前一拍的任一超长指 令字的第t+1个指令槽的指令之间不存在依赖关系包括: 在进行第〇拍调度时, 在所述数据依赖图中提取当前入度为零的指令得到第1候选指令队列,所述入度为零 的指令在所述数据依赖图中的没有前驱结点或者其所有前驱结点已被调度; 从所述第1候选指令队列中提取优先级最高且满足时间延迟和资源需求的h个指令分 别放入每个超长指令字的第1个指令槽中,在每个所述超长指令字的第1个指令槽中尚未 填充的指令槽中放入空操作指令,〇 < h < m ; 从所述第1候选指令队列中删除所述h个指令; 在所述数据依赖图中提取新增入度为零的指令得到第2候选指令队列; 执行下述步骤,q初始化为2 ; a. 从所述第1候选指令队列至所述第q候选指令队列中提取h个指令分别放入每个超 长指令字的第q个指令槽中,所述h个指令满足:与第q_l个指令槽中的指令具有真依赖关 系且同时满足时间延迟和资源需求,或,不与所述第q_l个指令槽中的指令具有真依赖关 系,但优先级最高且同时满足时间延迟和资源需求,〇 < m ; b. 在每个超长指令字的第q个指令槽中的未填充的指令槽中放入空操作指令; c. 从所有候选指令队列中删除所述h个指令; d. 使q=q+l,在所述数据依赖图中提取新增的入度为零的指令得到第q候选指令队列, 重复步骤a至d,直至所述第1候选指令队列至所述第q候选指令队列中不存在未调度的指 令或第n+1候选指令队列中的指令被更新。5. 根据权利要求4所述的方法,其特征在于,所述分别从所述数据依赖图中提取k个指 令进行调度得到每一拍的m个超长指令字,使得同一拍内的超长指令字之间是并行执行的 关系,相邻两拍中后一拍的任一超长指令字的第t个指令槽的指令与前一拍的任一超长指 令字的第t+1个指令槽的指令之间不存在依赖关系还包括: 在进行第P拍调度时,P为大于〇的整数, 从所述第2候选指令队列开始,依次将所述第2候选指令队列至所述第n+1候选指令 队列中的指令放入前一个候选指令队列中; 从所述第1候选指令队列中提取优先级最高且满足时间延迟和资源需求的h个指令分 别放入每个超长指令字的第1个指令槽中,在每个所述超长指令字的第1个指令槽中尚未 填充的指令槽中放入空操作指令,〇 < h < m ; 从所述第1候选指令队列中删除所述h个指令; 在所述数据依赖图中提取新增的入度为零的指令得到第2候选指令队列; 执行下述步骤: 执行下述步骤,q初始化为2 ; a. 从所述第1候选指令队列至所述第q候选指令队列中提取h个指令分别放入每个超 长指令字的第q个指令槽中,所述h个指令满足:与第q_l个指令槽中的指令具有真依赖关 系且同时满足时间延迟和资源需求,或,不与所述第q_l个指令槽中的指令具有真依赖关 系,但优先级最高且同时满足时间延迟和资源需求,〇 < m ; b. 在每个超长指令字的第q个指令槽中的未填充的指令槽中放入空操作指令; c. 从所有候选指令队列中删除所述h个指令; d. 使q=q+l,在所述数据依赖图中提取新增的入度为零的指令得到第q候选指令队列, 重复步骤a至d,直至所述第1候选指令队列至所述第q候选指令队列中不存在未调度的指 令或第n+1候选指令队列...
【专利技术属性】
技术研发人员:黄磊,连瑞琦,
申请(专利权)人:华为技术有限公司,中国科学院计算技术研究所,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。