当前位置: 首页 > 专利查询>浙江大学专利>正文

一种基于超级块的投机并行化方法技术

技术编号:10280928 阅读:238 留言:0更新日期:2014-08-03 02:07
本发明专利技术公开了一种基于超级块的投机并行化方法。将可执行文件中的程序划分为各个超级块;静态分析超级块之间的寄存器的数据依赖;将静态分析得到的反依赖和输出依赖从可执行文件中消除;将静态分析得到的真数据依赖写入可执行文件;将可执行文件中的程序以超级块为调度单位,在多核处理器上投机执行。本发明专利技术消除了超级块之间的寄存器的反依赖和输出依赖,当多核处理器把超级块作为调度单位并且避免存在真数据依赖的多个超级块同时投机地在处理器上执行时,本发明专利技术可以提高程序的并行性,降低处理器调度粒度变细时带来的投机失败的风险。

【技术实现步骤摘要】

本专利技术涉及一种计算机并行化方法,尤其是涉及计算机编译技术和体系结构领域的。
技术介绍
多核处理器是当前计算机处理器的发展趋势,然而程序员并不习惯编写并行的程序。尽管处理器的核心数量越来越多,但在大多数情况下多核处理器并未得到充分利用。超级块是为超长指令字处理器和超标量处理器设计的编译技术。它突破了程序基本块的限制,进一步开发了程序的并行性。目前处理器是以线程为基本的调度单位,调度粒度比超级块要粗,并行性可以进一步挖掘。投机执行是一种硬件技术,它可以让指令乱序执行,同时最终按序完成。在引入超级块作为处理器的基本调度单位的同时,会因为调度粒度变细,从而增加投机失败的风险。
技术实现思路
本专利技术的目的是提供,其能够充分利用多核处理器的多核资源。本专利技术采用的技术方案包括以下步骤: 1)将可执行文件中的程序划分为各个超级块; 2)静态分析超级块之间的寄存器的数据依赖; 3)将静态分析得到的反依赖和输出依赖关系从可执行文件中消除; 4)将静态分析得到的真数据依赖关系写入可执行文件; 5)将可执行文件中的程序以超级块为调度单位在多核处理器上投机执行。所述的步骤2)中的静态分析超级块之间的寄存器的数据依赖具体包括以下步骤: 2.1)扫描各个超级块,汇总其中所有超级块指令中的寄存器读写操作; 2.2)根据步骤2.1)得到的汇总,得到真数据依赖关系、反依赖和输出依赖关系。所述的步骤5)中的多核处理器的各个核之间共享寄存器文件,使得投机执行时存在真数据依赖的多个超级块在多核处理器上不同时执行。本专利技术的有益效果是: 本专利技术消除了超级块之间的寄存器依赖关系。当多核处理器把超级块作为调度单位并且避免存在真数据依赖的多个超级块同时投机地在处理器上执行时,本专利技术可以提高程序的并行性,降低处理器调度粒度变细时带来的投机失败的风险。【附图说明】图1是本专利技术的实现步骤的示意图。图2是本专利技术真数据依赖数据流图的实施示意图。图3是本专利技术将超级块调度到三核心处理器的实施例图。图4是本专利技术实施例的完整过程示意图。【具体实施方式】下面结合附图及具体实施例对本专利技术作进一步详细说明。如图1所示,本专利技术的包括以下步骤: 1)将可执行文件中的程序划分为各个超级块; 2)静态分析超级块之间的寄存器的数据依赖; 3)将静态分析得到的反依赖和输出依赖关系从可执行文件中消除; 4)将静态分析得到的真数据依赖关系写入可执行文件; 5)将可执行文件中的程序以超级块为调度单位在多核处理器上投机执行。步骤2)中的静态分析超级块之间的寄存器的数据依赖具体包括以下步骤: 2.1)扫描各个超级块,汇总其中所有超级块指令中的寄存器读写操作;2.2)根据步骤2.1)得到的汇总,得到表示真数据依赖关系、反依赖和输出依赖关系。步骤5)中的多核处理器的各个核之间共享寄存器文件,方便多个核之间同步寄存器,使得投机执行时存在真数据依赖的多个超级块在多核处理器上不同时执行。本专利技术需要在处理器的核之间作寄存器的同步,因为前后相续的两轮投机执行的超级块的之间,可能存在数据依赖,通过共享寄存器文件进行同步。多核处理器为双核及以上的处理器。超级块之间的数据依赖,可以分为寄存器的数据依赖和内存的数据依赖两类。寄存器的编号在指令中可以直接获取,所以能够通过静态分析而获得超级块之间的寄存器读写依赖关系;至于内存的读写,其地址一般是寄存器基地址加上偏移,基地址往往要运行时才能确定,所以无法通过静态分析获得超级块之间的数据依赖。对于无法静态分析的数据依赖,只能在运行时加以投机,不可避免地就会引入投机失败的风险,因此前面的静态分析,至少获得了超级块之间的寄存器读写依赖关系,避免寄存器的投机读操作,从而减少这一部分的投机风险。对于超级块之间的寄存器的数据依赖,应消除各个超级块之间的反依赖和输出依赖,保留真数据依赖。反依赖也叫读后写WAR依赖,输出依赖也叫写后写WAW依赖,真数据依赖也叫写后读RAW依赖。具体实施中,静态分析数据依赖时,引入数据流图来表示真数据依赖。如图2所示,图中每个方框表示一个超级块,方框内的数字是超级块的序号,方框内的箭头表示箭头始端连接的超级块写入的数据要在箭头末端连接的超级块中读取,即末端的超级块依赖于的始端超级块,即超级块5依赖于超级块2、超级块3和超级块4,超级块2、超级块3和超级块4依赖于超级块I。静态分析后,需要将表示真数据依赖的数据流图写入可执行文件。根据可执行文件中的超级块的数据流图实施超级块的调度,就能避免存在真数据依赖的不同超级块同时执行。本专利技术的实施例: 图3示意了一次把图2所示的超级块在一个至少拥有三个核心的处理器上调度的例子。其中,C1、C2、C3表示处理器的三个核心,B1、B2、B3、B4、B5表示五个超级块,T1、T2、Τ3表示三个时间段。本专利技术实施时,同时运行的超级块之间不存在寄存器数据依赖,并不意味着多个核之间不需要同步寄存器。因为前后相续的两轮投机执行,超级块之间仍旧会存在寄存器数据依赖,而且这些超级块可能分处不同的核上。于是,在每轮投机执行开始之前,需要同步所有处理器核的寄存器数值。举例说明,假设有4个超级块=Bp B1, B2, B3,并且在具有两个核心Q、C1的处理器上运行。第一轮投机执行,B0和B1分别调度到核心处理器的核心Ctl与核心C1上,B0与B1间没有寄存器数据依赖。第二轮投机执行,B2和B3分别调度到核心Ctl与核心C1上,B2与B3之间也没有寄存器数据依赖,所以这种调度符合我们的要求。但是B3读入的某个寄存器r,是由Btl写入的,于是在第二轮投机执行开始之前,我们需要把r的值从核心Ctl同步到核心C1中去。为了减少寄存器同步的时延,在多个核之间共享寄存器文件,并用寄存器重命名的方式来管理。处理器核在投机执行的时候,不得直接写入逻辑寄存器,而写的物理寄存器并不直接对应到逻辑寄存器上,只有在提交时才建立对应。图4示意了本专利技术实施的一个完整的过程,图中的四个从左向右的箭头把图分成五个部分。左起的第一部分是本专利技术需要处理的可执行文件;第二部分对应本专利技术的步骤I)和步骤2),即将可执行文件中的程序划分为各个超级块;静态分析超级块之间的寄存器的数据依赖;第三部分对应本专利技术的步骤3)和步骤4),即将静态分析得到的反依赖和输出依赖从可执行文件中消除,将静态分析得到的真数据依赖写入可执行文件;第四部分和第五部分对应本专利技术的步骤5),即将可执行文件中的程序以超级块为调度单位在多核处理器上投机执行。第四部分是操作系统完成,而第五部分是处理器的工作。第五部分和图3是对应的。上述【具体实施方式】用来解释说明本专利技术,而不是对本专利技术进行限制,在本专利技术的精神和权利要求的保护范围内,对本专利技术作出的任何修改和改变,都落入本专利技术的保护范围。本文档来自技高网...

【技术保护点】
一种基于超级块的投机并行化方法,其特征在于:包括以下步骤:1)将可执行文件中的程序划分为各个超级块;2)静态分析超级块之间的寄存器的数据依赖;3)将静态分析得到的反依赖和输出依赖关系从可执行文件中消除;4)将静态分析得到的真数据依赖关系写入可执行文件;5)将可执行文件中的程序以超级块为调度单位在多核处理器上投机执行。

【技术特征摘要】
1.一种基于超级块的投机并行化方法,其特征在于:包括以下步骤: 1)将可执行文件中的程序划分为各个超级块; 2)静态分析超级块之间的寄存器的数据依赖; 3)将静态分析得到的反依赖和输出依赖关系从可执行文件中消除; 4)将静态分析得到的真数据依赖关系写入可执行文件; 5)将可执行文件中的程序以超级块为调度单位在多核处理器上投机执行。2.根据权利要求1所述的一种基于超级块的投机并行化方法,其特征在于:所...

【专利技术属性】
技术研发人员:李颂元袁明敏孟静磊叶敏娇陈天洲施青松刘莉
申请(专利权)人:浙江大学
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1