1.一种面向非规则数据密集应用的群组式线程预取方法,其特征在于,采用在线剖析技术获取非规则数据密集应用的执行时特征,确定合理的预取率构建群组式预取线程实现有效数据预取,其步骤如下:
包括非规则数据访存特征剖析、群组式预取线程构建及线程预取中同步机制的确立;
所述非规则数据访存特征剖析包括:
A)使用VTUNE性能分析器获取非规则数据密集应用的执行行为特征;
B)使用VTUNE性能分析器获取热点循环相对延迟的计算延迟TC、循环依赖数据访问延迟Tdm和非循环依赖数据访问延迟Tim值;
所述群组式预取线程构建包括:
C) 判断计算延迟TC和循环依赖数据访问延迟与非循环依赖数据访问延迟之和(Tdm+Tim) 的关系;
D) 当TC<(Tdm+Tim)时,基于理想情况下确定合理的预取率R=(TC+Tim -Tdm)/2;当TC≥(Tdm+Tim)时,预取率R 值等于1;
E) 利用切片技术基于预取率R 构建群组式预取线程;
所述线程预取中同步机制的确立包括:
F) 在主线程热点循环入口处设置标志位flag为1,向预取线程发出信号,通知预取线程开始预取工作;在主线程热点循环出口处设置标志位flag为0,向预取线程发送暂停信号,通知预取线程暂停预取,等待下一次预取信号。
2.根据权利要求1所述的面向非规则数据密集应用的群组式线程预取方法,其特征在于,所述执行行为特征包括频繁发生共享缓存L2 Cache失效行为的各个热点循环所在的函数名称、各热点循环的CPU时钟消耗情况、共享缓存L2 Cache失效情况和预取平台访存情况。
3.根据权利要求1或2所述的面向非规则数据密集应用的群组式线程预取方法,其特征在于,所述使用VTUNE性能分析器获取热点循环相对延迟的计算延迟TC、循环依赖数据访问延迟Tdm和非循环依赖数据访问延迟Tim值的方法是:VTUNE性能分析器分析程序源代码,找出频繁发生缓存失效行为的热点循环,并分析热点循环执行的访存计算延迟特征,获得评估测试程序的热点循环相对延迟的循环依赖数据访问延迟Tdm、非循环依赖数据访问延迟Tim与计算延迟TC的值。
4.根据权利要求3所述的面向非规则数据密集应用的群组式线程预取方法,其特征在于,所述获得评估测试程序的热点循环相对延迟的循环依赖数据访问延迟Tdm、非循环依赖数据访问延迟Tim与计算延迟TC的值的方法步骤为:VTUNE性能分析器测试程序中热点循环的执行行为,得到行为事件CPU_CLK_UNHALTED.CORE和MEM_LOAD_RETIRED.L2_MISS的值和其在测试程序热点循环中的分布情况,其中,事件CPU_CLK_UNHALTED.CORE的值为程序执行时非停机状态花费的机器周期CLKT,事件MEM_LOAD_RETIRED.L2_MISS的值为程序执行访存行为时共享缓存L2 Cache 缺失次数;VTUNE性能分析器识别热点循环中的循环依赖数据访问操作和非循环依赖数据访问操作,分辨事件CPU_CLK_UNHALTED.CORE和事件MEM_LOAD_RETIRED.L2_MISS对应语句执行的是访存操作还是非访存操作;累加执行非访存操作语句的CPU_CLK_UNHALTED.CORE的百分比,得到所有非访存操作消耗的CPU_CLK_UNHALTED.CORE百分比,其与CLKT的积为计算延迟TC的值;累加循环依赖数据访问语句和非循环依赖数据访问语句的CPU_CLK_UNHALTED.CORE百分比,所有循环依赖数据访问操作消耗的CPU_CLK_UNHALTED.CORE百分比与CLKT的积为循环依赖数据访问延迟Tdm,所有非循环依赖数据访问操作消耗的CPU_CLK_UNHALTED.CORE百分比与CLKT的积为非循环依赖数据访问延迟Tim的值。
5.一种面向非规则数据密集应用的群组式线程预取系统,其特征在于,包括预取率确定模块、群组式预取线程构建模块、预取同步机制选取模块和有效预取距离选取模块,预取率确定模块、有效预取距离选取模块分别与群组式预取线程构建模块相连接,群组式预取线程构建模块与预取同步机制选取模块相连接。
6.根据权利要求5所述的面向非规则数据密集应用的群组式线程预取系统,其特征在于,所述预取率确定模块利用VTUNE性能分析器分析程序源代码,找出频繁发生缓存失效行为的热点循环,并分析热点循环执行的访存计算延迟特征,获取计算延迟TC、循环依赖数据访问延迟Tdm和非循环依赖数据访问延迟Tim的值,从而确定预取率R;群组式预取线程构建模块:根据预取率R,利用切片技术基于预取率构建群组式预取线程;预取同步机制选取模块:在主线程热点循环入口处设置标志位flag为1,向预取线程发出信号,通知预取线程开始预取工作;在主线程热点循环出口处设置标志位flag为0,向预取线程发送暂停信号,通知预取线程暂停预取,等待下一次预取信号;有效预取距离选取模块基于热点循环访存计算延迟特征为群组式预取策略选取有效预取距离,控制预取请求的发出时机。