1.一種面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取方法,其特征在于,采用在線剖析技術(shù)獲取非規(guī)則數(shù)據(jù)密集應(yīng)用的執(zhí)行時特征,確定合理的預(yù)取率構(gòu)建群組式預(yù)取線程實(shí)現(xiàn)有效數(shù)據(jù)預(yù)取,其步驟如下:
包括非規(guī)則數(shù)據(jù)訪存特征剖析、群組式預(yù)取線程構(gòu)建及線程預(yù)取中同步機(jī)制的確立;
所述非規(guī)則數(shù)據(jù)訪存特征剖析包括:
A)使用VTUNE性能分析器獲取非規(guī)則數(shù)據(jù)密集應(yīng)用的執(zhí)行行為特征;
B)使用VTUNE性能分析器獲取熱點(diǎn)循環(huán)相對延遲的計(jì)算延遲TC、循環(huán)依賴數(shù)據(jù)訪問延遲Tdm和非循環(huán)依賴數(shù)據(jù)訪問延遲Tim值;
所述群組式預(yù)取線程構(gòu)建包括:
C) 判斷計(jì)算延遲TC和循環(huán)依賴數(shù)據(jù)訪問延遲與非循環(huán)依賴數(shù)據(jù)訪問延遲之和(Tdm+Tim) 的關(guān)系;
D) 當(dāng)TC<(Tdm+Tim)時,基于理想情況下確定合理的預(yù)取率R=(TC+Tim -Tdm)/2;當(dāng)TC≥(Tdm+Tim)時,預(yù)取率R 值等于1;
E) 利用切片技術(shù)基于預(yù)取率R 構(gòu)建群組式預(yù)取線程;
所述線程預(yù)取中同步機(jī)制的確立包括:
F) 在主線程熱點(diǎn)循環(huán)入口處設(shè)置標(biāo)志位flag為1,向預(yù)取線程發(fā)出信號,通知預(yù)取線程開始預(yù)取工作;在主線程熱點(diǎn)循環(huán)出口處設(shè)置標(biāo)志位flag為0,向預(yù)取線程發(fā)送暫停信號,通知預(yù)取線程暫停預(yù)取,等待下一次預(yù)取信號。
2.根據(jù)權(quán)利要求1所述的面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取方法,其特征在于,所述執(zhí)行行為特征包括頻繁發(fā)生共享緩存L2 Cache失效行為的各個熱點(diǎn)循環(huán)所在的函數(shù)名稱、各熱點(diǎn)循環(huán)的CPU時鐘消耗情況、共享緩存L2 Cache失效情況和預(yù)取平臺訪存情況。
3.根據(jù)權(quán)利要求1或2所述的面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取方法,其特征在于,所述使用VTUNE性能分析器獲取熱點(diǎn)循環(huán)相對延遲的計(jì)算延遲TC、循環(huán)依賴數(shù)據(jù)訪問延遲Tdm和非循環(huán)依賴數(shù)據(jù)訪問延遲Tim值的方法是:VTUNE性能分析器分析程序源代碼,找出頻繁發(fā)生緩存失效行為的熱點(diǎn)循環(huán),并分析熱點(diǎn)循環(huán)執(zhí)行的訪存計(jì)算延遲特征,獲得評估測試程序的熱點(diǎn)循環(huán)相對延遲的循環(huán)依賴數(shù)據(jù)訪問延遲Tdm、非循環(huán)依賴數(shù)據(jù)訪問延遲Tim與計(jì)算延遲TC的值。
4.根據(jù)權(quán)利要求3所述的面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取方法,其特征在于,所述獲得評估測試程序的熱點(diǎn)循環(huán)相對延遲的循環(huán)依賴數(shù)據(jù)訪問延遲Tdm、非循環(huán)依賴數(shù)據(jù)訪問延遲Tim與計(jì)算延遲TC的值的方法步驟為:VTUNE性能分析器測試程序中熱點(diǎn)循環(huán)的執(zhí)行行為,得到行為事件CPU_CLK_UNHALTED.CORE和MEM_LOAD_RETIRED.L2_MISS的值和其在測試程序熱點(diǎn)循環(huán)中的分布情況,其中,事件CPU_CLK_UNHALTED.CORE的值為程序執(zhí)行時非停機(jī)狀態(tài)花費(fèi)的機(jī)器周期CLKT,事件MEM_LOAD_RETIRED.L2_MISS的值為程序執(zhí)行訪存行為時共享緩存L2 Cache 缺失次數(shù);VTUNE性能分析器識別熱點(diǎn)循環(huán)中的循環(huán)依賴數(shù)據(jù)訪問操作和非循環(huán)依賴數(shù)據(jù)訪問操作,分辨事件CPU_CLK_UNHALTED.CORE和事件MEM_LOAD_RETIRED.L2_MISS對應(yīng)語句執(zhí)行的是訪存操作還是非訪存操作;累加執(zhí)行非訪存操作語句的CPU_CLK_UNHALTED.CORE的百分比,得到所有非訪存操作消耗的CPU_CLK_UNHALTED.CORE百分比,其與CLKT的積為計(jì)算延遲TC的值;累加循環(huán)依賴數(shù)據(jù)訪問語句和非循環(huán)依賴數(shù)據(jù)訪問語句的CPU_CLK_UNHALTED.CORE百分比,所有循環(huán)依賴數(shù)據(jù)訪問操作消耗的CPU_CLK_UNHALTED.CORE百分比與CLKT的積為循環(huán)依賴數(shù)據(jù)訪問延遲Tdm,所有非循環(huán)依賴數(shù)據(jù)訪問操作消耗的CPU_CLK_UNHALTED.CORE百分比與CLKT的積為非循環(huán)依賴數(shù)據(jù)訪問延遲Tim的值。
5.一種面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取系統(tǒng),其特征在于,包括預(yù)取率確定模塊、群組式預(yù)取線程構(gòu)建模塊、預(yù)取同步機(jī)制選取模塊和有效預(yù)取距離選取模塊,預(yù)取率確定模塊、有效預(yù)取距離選取模塊分別與群組式預(yù)取線程構(gòu)建模塊相連接,群組式預(yù)取線程構(gòu)建模塊與預(yù)取同步機(jī)制選取模塊相連接。
6.根據(jù)權(quán)利要求5所述的面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取系統(tǒng),其特征在于,所述預(yù)取率確定模塊利用VTUNE性能分析器分析程序源代碼,找出頻繁發(fā)生緩存失效行為的熱點(diǎn)循環(huán),并分析熱點(diǎn)循環(huán)執(zhí)行的訪存計(jì)算延遲特征,獲取計(jì)算延遲TC、循環(huán)依賴數(shù)據(jù)訪問延遲Tdm和非循環(huán)依賴數(shù)據(jù)訪問延遲Tim的值,從而確定預(yù)取率R;群組式預(yù)取線程構(gòu)建模塊:根據(jù)預(yù)取率R,利用切片技術(shù)基于預(yù)取率構(gòu)建群組式預(yù)取線程;預(yù)取同步機(jī)制選取模塊:在主線程熱點(diǎn)循環(huán)入口處設(shè)置標(biāo)志位flag為1,向預(yù)取線程發(fā)出信號,通知預(yù)取線程開始預(yù)取工作;在主線程熱點(diǎn)循環(huán)出口處設(shè)置標(biāo)志位flag為0,向預(yù)取線程發(fā)送暫停信號,通知預(yù)取線程暫停預(yù)取,等待下一次預(yù)取信號;有效預(yù)取距離選取模塊基于熱點(diǎn)循環(huán)訪存計(jì)算延遲特征為群組式預(yù)取策略選取有效預(yù)取距離,控制預(yù)取請求的發(fā)出時機(jī)。