亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取方法與流程

文檔序號:12463705閱讀:278來源:國知局
面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取方法與流程

本發(fā)明涉及高性能計(jì)算的技術(shù)領(lǐng)域,具體涉及一種面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取方法,面向非規(guī)則數(shù)據(jù)密集應(yīng)用基于共享緩存實(shí)現(xiàn)線程數(shù)據(jù)的存取。



背景技術(shù):

現(xiàn)有的數(shù)據(jù)預(yù)取方法都依賴于密集數(shù)據(jù)訪問的規(guī)律性。面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取(Group Thread Prefetching,GTP)方法設(shè)計(jì)的主要目的是為復(fù)雜的非規(guī)律密集數(shù)據(jù)訪問提供一種有效的數(shù)據(jù)預(yù)取策略,廣泛地應(yīng)用于高性能計(jì)算與分布式計(jì)算領(lǐng)域,如信號處理程序、流體力學(xué)計(jì)算、生物信息計(jì)算、社會學(xué)統(tǒng)籌問題計(jì)算等。簡單地說,GTP方法通過在線剖析技術(shù)為非規(guī)則數(shù)據(jù)密集應(yīng)用在多核處理器環(huán)境下分析出訪存和計(jì)算延遲特征,該特征決定了輔助線程能夠隱藏的訪存延遲比例。根據(jù)訪存延遲比例分配預(yù)取數(shù)據(jù)群組,避免無用數(shù)據(jù)預(yù)取和緩存污染。

非規(guī)則數(shù)據(jù)密集應(yīng)用中通常采用復(fù)雜的數(shù)據(jù)存儲結(jié)構(gòu),例如鏈?zhǔn)綌?shù)據(jù)存儲結(jié)構(gòu)。一方面,復(fù)雜的數(shù)據(jù)存儲結(jié)構(gòu)使得數(shù)據(jù)訪問不具備時(shí)間局部性特征和空間局部性特征,傳統(tǒng)的硬件預(yù)取技術(shù)無法準(zhǔn)確預(yù)測預(yù)取數(shù)據(jù)地址,其有效性難以保證。另一方面,復(fù)雜的數(shù)據(jù)存儲結(jié)構(gòu)中,數(shù)據(jù)間常存在依賴和約束關(guān)系,傳統(tǒng)的軟件預(yù)取技術(shù)無法提前發(fā)出數(shù)據(jù)預(yù)取請求,難以做到及時(shí)預(yù)取。面向非規(guī)則數(shù)據(jù)密集應(yīng)用的預(yù)取技術(shù)能夠有效解除數(shù)據(jù)間的依賴和約束關(guān)系,達(dá)到有效地預(yù)取。

線程預(yù)取技術(shù)是用來隱藏多核平臺中訪存延遲的有效方法,目前已經(jīng)在數(shù)據(jù)密集應(yīng)用程序中得到了廣泛應(yīng)用。線程預(yù)取技術(shù)使用一個(gè)專門線程輔助主線程提前把數(shù)據(jù)取到高速緩存中。目前,輔助線程預(yù)取技術(shù)以提高預(yù)取準(zhǔn)確率和時(shí)效性為目的,研究的著重點(diǎn)主要集中在輔助線程構(gòu)造、輔助線程啟動和觸發(fā)、輔助線程與主線程間的同步機(jī)制幾個(gè)方面。在面向非規(guī)則數(shù)據(jù)密集應(yīng)用時(shí),輔助線程不能總是領(lǐng)先于主線程執(zhí)行或輔助線程領(lǐng)先于主線程執(zhí)行的太多,導(dǎo)致輔助線程不能及時(shí)地給主線程提供有用的數(shù)據(jù)。GTP方法根據(jù)輔助線程能夠隱藏的訪存延遲比例分配預(yù)取數(shù)據(jù)群組,達(dá)到盡早發(fā)出預(yù)取請求、避免無用數(shù)據(jù)預(yù)取和提高預(yù)取時(shí)效性的目的。

鑒于目前研究的線程預(yù)取技術(shù),其輔助線程構(gòu)造方式不適合用于訪問依賴的非規(guī)則數(shù)據(jù)密集應(yīng)用,在現(xiàn)有的技術(shù)中還沒有面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取方法。



技術(shù)實(shí)現(xiàn)要素:

為了解決現(xiàn)有非規(guī)則數(shù)據(jù)密集應(yīng)用中數(shù)據(jù)間的依賴性和約束性,本發(fā)明提出一種面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取方法,基于共享緩存為非規(guī)則數(shù)據(jù)密集應(yīng)用構(gòu)建群組式預(yù)取線程,保障數(shù)據(jù)預(yù)取的有效性。

為了解決上述技術(shù)問題,本發(fā)明的技術(shù)方案是:一種面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取方法,采用在線剖析技術(shù)獲取非規(guī)則數(shù)據(jù)密集應(yīng)用的執(zhí)行時(shí)特征,確定合理的預(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ù)訪問延遲之和(TdmTim) 的關(guān)系;

D) 當(dāng)TC<(TdmTim)時(shí),基于理想情況下確定合理的預(yù)取率R=(TCTim -Tdm)/2;當(dāng)TC≥(TdmTim)時(shí),預(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ù)取信號。

所述執(zhí)行行為特征包括頻繁發(fā)生共享緩存L2 Cache失效行為的各個(gè)熱點(diǎn)循環(huán)所在的函數(shù)名稱、各熱點(diǎn)循環(huán)的CPU時(shí)鐘消耗情況、共享緩存L2 Cache失效情況和預(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的值。

所述獲得評估測試程序的熱點(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í)行時(shí)非停機(jī)狀態(tài)花費(fèi)的機(jī)器周期CLKT,事件MEM_LOAD_RETIRED.L2_MISS的值為程序執(zhí)行訪存行為時(shí)共享緩存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的值。

一種面向非規(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ī)制選取模塊相連接。

所述預(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ā)出時(shí)機(jī)。

本發(fā)明的有益效果:本發(fā)明使用在線分析器獲取非規(guī)則數(shù)據(jù)密集應(yīng)用的執(zhí)行行為特征;基于非規(guī)則數(shù)據(jù)密集應(yīng)用的執(zhí)行延遲特征確定合理的預(yù)取率,并利用切片技術(shù)基于預(yù)取率構(gòu)建群組式預(yù)取線程;通過標(biāo)志位向預(yù)取線程發(fā)出預(yù)取開始信號和預(yù)取停止信號。本發(fā)明基于片上多核處理器環(huán)境中面向非規(guī)則數(shù)據(jù)密集應(yīng)用執(zhí)行數(shù)據(jù)預(yù)取,能確保及時(shí)準(zhǔn)確地發(fā)出預(yù)取請求,減少無用數(shù)據(jù)預(yù)取和線程之間的共享資源競爭,預(yù)取線程構(gòu)建能量消耗較低,并具有較好的實(shí)用性和靈活性。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明的原理框圖。

圖2為本發(fā)明平臺處理器的結(jié)構(gòu)圖。

圖3為本發(fā)明測試程序MST熱點(diǎn)循環(huán)執(zhí)行的行為特征。

具體實(shí)施方式

下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

一種面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取方法,采用在線剖析技術(shù)和多線程技術(shù)實(shí)現(xiàn)群組式預(yù)取,適應(yīng)于非規(guī)則數(shù)據(jù)密集應(yīng)用的特點(diǎn)。本發(fā)明在輔助線程構(gòu)建前在線剖析非規(guī)則數(shù)據(jù)密集應(yīng)用的訪存和計(jì)算延遲的特征,且標(biāo)識出循環(huán)依賴數(shù)據(jù)訪問和非循環(huán)依賴數(shù)據(jù)訪問,實(shí)現(xiàn)了基于訪存延遲比例的群組式預(yù)取。

本發(fā)明是基于并行多線程理論提出的,其理論基礎(chǔ)概述如下:

一. 基于片上多核處理器的多線程技術(shù)

片上多核處理器CMP(Chip Multi-Processor)最初是由斯坦福大學(xué)的研究人員在20世紀(jì)90年代提出的,其主要思想是利用豐富的晶體管資源在單個(gè)芯片上集成多個(gè)處理器核,通過多核并行執(zhí)行的方式開發(fā)指令級和線程級的并行度,提高程序的性能。CMP挖掘了指令級和線程級的并行性,使得處理器性能顯著提高。

基于CMP的輔助線程數(shù)據(jù)預(yù)取方法通過把主線程與輔助線程綁定到同一個(gè)處理器上的相鄰CPU核上運(yùn)行,使輔助線程提前把主線程所需數(shù)據(jù)預(yù)取到共享低級緩存中,隱藏主線程的防存延遲。由于同一個(gè)處理器的不同CPU核擁有各自的執(zhí)行單元和L1 Cache,而輔助線程和主線程各自運(yùn)行在獨(dú)立的CPU核上,因此,輔助線程對主線程的負(fù)面影響很小。

對于片上多核處理器的多線程技術(shù)可以定義以下難解問題:

1)線程構(gòu)建問題。在選擇代碼片斷構(gòu)建并行線程時(shí)都參照一些準(zhǔn)則。

2)線程的觸發(fā)和啟動問題。線程構(gòu)建后,還需要選擇合適的觸發(fā)點(diǎn)以便在適當(dāng)?shù)臅r(shí)機(jī)觸發(fā)和啟動線程進(jìn)行執(zhí)行。

3)線程間的同步機(jī)制問題。并行線程一旦被觸發(fā)和啟動,執(zhí)行時(shí)必須保持同步。

二.非規(guī)則數(shù)據(jù)訪存特征剖析

Intel VTune性能分析器是專門為Intel x86 和Intel x64系列處理器定制的軟件性能在線分析器。Intel VTune性能分析器可以進(jìn)行多方面的代碼剖析,剖析結(jié)果可以顯示如“訪存儲訪問所消耗的時(shí)間”這樣的細(xì)節(jié)數(shù)據(jù),并且可以將剖析數(shù)據(jù)定位到特定的指令行上。

對于非規(guī)則數(shù)據(jù)訪存特征剖析定義以下術(shù)語:

定義1. 循環(huán)依賴數(shù)據(jù)訪問延遲Tdm是熱點(diǎn)循環(huán)中循環(huán)依賴數(shù)據(jù)的平均訪存延遲。

定義2. 非循環(huán)依賴數(shù)據(jù)訪問延遲Tim是熱點(diǎn)循環(huán)中非循環(huán)依賴數(shù)據(jù)的平均訪存延遲。

定義3. 計(jì)算延遲TC是單次熱點(diǎn)循環(huán)中的平均計(jì)算延遲。

定義4. 預(yù)取率R 是輔助線程訪存操作占總訪存操作的比率。

在線剖析技術(shù)先使用VTune性能分析器獲取非規(guī)則數(shù)據(jù)密集應(yīng)用的執(zhí)行時(shí)特征,包括頻繁發(fā)生共享緩存L2 Cache失效行為的各個(gè)熱點(diǎn)循環(huán)所在的函數(shù)名稱、各熱點(diǎn)循環(huán)的CPU時(shí)鐘消耗情況、共享緩存L2 Cache失效情況和訪存情況,然后選擇共享緩存L2 Cache失效情況嚴(yán)重的熱點(diǎn)循環(huán)作為進(jìn)一步分析的目標(biāo),再利用VTune性能分析器獲取其熱點(diǎn)循環(huán)的相對延遲信息,包括計(jì)算延遲TC、循環(huán)依賴數(shù)據(jù)訪問延遲Tdm和非循環(huán)依賴數(shù)據(jù)訪問延遲Tim。

三. 群組式預(yù)取線程構(gòu)建

群組式預(yù)取線程的構(gòu)建目標(biāo)是輔助線程的預(yù)取操作能與主線程的訪存操作或計(jì)算操作完全并行地執(zhí)行、互不干擾,且輔助線程預(yù)取的數(shù)據(jù)都恰好被主線程需要,則主線程將獲得最大的性能收益。理論上,當(dāng)輔助線程的執(zhí)行延遲占熱點(diǎn)循環(huán)執(zhí)行總延遲的一半時(shí),輔助線程與主線程達(dá)到最大程度的并行執(zhí)行,主線程的性能得到最大限度地提高。根據(jù)定義1和定義3,熱點(diǎn)循環(huán)執(zhí)行總延遲為(TCTdmTim),其中,計(jì)算操作的計(jì)算延遲TC由主線程執(zhí)行。當(dāng)輔助線程與主線程并行執(zhí)行時(shí),輔助線程的訪存操作不僅可以與主線程的計(jì)算操作重疊,還可以與主線程的訪存操作重疊。輔助線程與主線程并行執(zhí)行可分兩種情況:

1)當(dāng)0≤TC /(TdmTim)<1,即TC(TdmTim)時(shí),輔助線程的訪存操作一部分與主線程的計(jì)算操作重疊,另一部分與主線程的訪存操作重疊。理想狀態(tài)下,輔助線程與主線程的執(zhí)行完全并行,其執(zhí)行延遲各為熱點(diǎn)循環(huán)總執(zhí)行延遲的一半,即(TCTdmTim)/2。實(shí)際執(zhí)行過程中,主線程的執(zhí)行延遲為TC+(1-R)*Tim,相應(yīng)地輔助線程的執(zhí)行延遲為Tdm+R*Tim。因此,可得到如下等式:

TC+(1-R)*Tim= Tdm+ R *Tim = (TCTdmTim)/2 (1)

計(jì)算后可得預(yù)取率:

R=(TCTim -Tdm)/2 (2)

可以通過剖析程序熱點(diǎn)循環(huán)得到循環(huán)依賴數(shù)據(jù)訪問延遲Tdm、非循環(huán)依賴數(shù)據(jù)訪問延遲Tim與計(jì)算延遲TC的值,從而確定合理的預(yù)取率R 的值。盡管等式(2)是基于理想情況下的預(yù)取率R 確定,但仍為我們合理地選擇預(yù)取率R 的值提供了理論依據(jù)。理想情況下,具有相等工作量的輔助線程與主線程可以完全重疊執(zhí)行,源程序熱點(diǎn)循環(huán)的執(zhí)行時(shí)間將減少至原來的一半;而實(shí)際應(yīng)用中即使輔助線程與主線程的工作量等同,由于系統(tǒng)資源控制的復(fù)雜性,輔助線程與主線程也不可能完全重疊執(zhí)行。

2)當(dāng)TC /(TdmTim)≥1時(shí),程序熱點(diǎn)循環(huán)的訪存延遲占其總執(zhí)行延遲的一小部分,通過線程級并行執(zhí)行,其訪存操作與計(jì)算操作能達(dá)到完全重疊。即使輔助線程選取應(yīng)用程序熱點(diǎn)循環(huán)中頻繁發(fā)生緩存失效的所有取數(shù)指令作為預(yù)取對象,預(yù)取的時(shí)效性也能得到保證。因此預(yù)取率R =1,輔助線程的預(yù)取操作與主線程的計(jì)算操作并行執(zhí)行,主線程的性能達(dá)到最優(yōu)。

四. 線程同步機(jī)制的確立

在輔助線程數(shù)據(jù)預(yù)取中,通常采用線程間同步機(jī)制來控制輔助線程與主線程在執(zhí)行過程中的一致性,保證輔助線程的有效性。輔助線程與主線程間的同步機(jī)制也會給主線程帶來一些負(fù)面影響。一方面,如果同步的頻率過低,輔助線程執(zhí)行的指令區(qū)間離主線程正在執(zhí)行的指令區(qū)間太遠(yuǎn),不僅會造成大量無用的預(yù)取,還會引起緩存污染。另一方面,如果同步的頻率過高,同步的開銷總和超出了輔助線程數(shù)據(jù)預(yù)取的性能收益,那么,程序的實(shí)際執(zhí)行性能將會下降。群組式預(yù)取方法中,主線程熱點(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ù)取信號。

一種面向非規(guī)則數(shù)據(jù)密集應(yīng)用的群組式線程預(yù)取方法,采用在線剖析技術(shù)獲取非規(guī)則數(shù)據(jù)密集應(yīng)用的執(zhí)行時(shí)特征,確定合理的預(yù)取率構(gòu)建群組式預(yù)取線程實(shí)現(xiàn)有效數(shù)據(jù)預(yù)取,如圖1所示,其實(shí)施步驟如下:包括非規(guī)則數(shù)據(jù)訪存特征剖析、群組式預(yù)取線程構(gòu)建及線程同步機(jī)制的確立;

所述非規(guī)則數(shù)據(jù)訪存特征剖析包括:

A)使用VTUNE性能分析器獲取非規(guī)則數(shù)據(jù)密集應(yīng)用的執(zhí)行行為特征。

圖2顯示的是Intel Core2 Quad Q6600處理器結(jié)構(gòu)圖。該CMP處理器芯片上共有4個(gè)CPU核,8個(gè)L1 Cache和2個(gè)L2 Cache。每個(gè)CPU核獨(dú)享一個(gè)指令Cache(I-Cache)和一個(gè)數(shù)據(jù)Cache(D-Cache),兩個(gè)CPU核共享一個(gè)數(shù)據(jù)和指令統(tǒng)一緩存L2 Cache。L2 Cache通過總線和主存儲器相聯(lián)。執(zhí)行行為特征包括頻繁發(fā)生共享緩存L2 Cache失效行為的各個(gè)熱點(diǎn)循環(huán)所在的函數(shù)名稱、各熱點(diǎn)循環(huán)的CPU時(shí)鐘消耗情況、共享緩存L2 Cache失效情況和預(yù)取平臺訪存情況。

B)獲取熱點(diǎn)循環(huán)相對延遲的計(jì)算延遲TC、循環(huán)依賴數(shù)據(jù)訪問延遲Tdm和非循環(huán)依賴數(shù)據(jù)訪問延遲Tim值。

數(shù)據(jù)預(yù)取具有一定的投機(jī)性,無用的數(shù)據(jù)預(yù)取將造成總線帶寬的額外占用,因此,預(yù)取對象的選擇影響預(yù)取性能。利用VTUNE性能分析器分析程序源代碼,找出頻繁發(fā)生緩存失效行為的熱點(diǎn)循環(huán),并分析熱點(diǎn)循環(huán)執(zhí)行的訪存計(jì)算延遲特征,在此基礎(chǔ)上確定預(yù)取率R。熱點(diǎn)循環(huán)為原始程序中造成共享緩存L2 Cache失效的主要循環(huán)代碼區(qū)域。

使用VTUNE性能分析器獲得評估測試程序的熱點(diǎn)循環(huán)相對延遲的循環(huán)依賴數(shù)據(jù)訪問延遲Tdm、非循環(huán)依賴數(shù)據(jù)訪問延遲Tim與計(jì)算延遲TC的值。現(xiàn)以基準(zhǔn)測試程序MST為例說明TdmTimTC的獲取過程,VTUNE性能分析器分析后的MST熱點(diǎn)循環(huán)執(zhí)行的行為特征,如圖3所示。

首先,VTUNE性能分析器測試MST熱點(diǎn)循環(huán)的執(zhí)行行為,得到行為事件CPU_CLK_UNHALTED.CORE和MEM_LOAD_RETIRED.L2_MISS的值和其在MST熱點(diǎn)循環(huán)中的分布情況。其中,事件CPU_CLK_UNHALTED.CORE的值為程序執(zhí)行時(shí)非停機(jī)狀態(tài)花費(fèi)的機(jī)器周期CLKT,事件MEM_LOAD_RETIRED.L2_MISS的值為程序執(zhí)行訪存行為時(shí)共享緩存L2 Cache 缺失次數(shù)。

其次,分辨事件CPU_CLK_UNHALTED.CORE和事件MEM_LOAD_RETIRED.L2_MISS對應(yīng)語句執(zhí)行的是訪存操作還是非訪存操作,例如,語句“ent &&”是MEM_LOAD_RETIRED.L2_MISS事件高發(fā)語句,占整個(gè)測試程序的81.7%。很顯然“ent &&”語句執(zhí)行的是訪存操作,而且該語句的CPU_CLK_UNHALTED.CORE占整個(gè)測試程序的74.52%。對于從語義上難以分辨其執(zhí)行行為的語句,緊隨其后的匯編代碼可以幫助分辨它執(zhí)行的是訪存操作還是非訪存操作。

接著,累加執(zhí)行非訪存操作語句的CPU_CLK_UNHALTED.CORE的百分比,得到所有非訪存操作消耗的CPU_CLK_UNHALTED.CORE百分比,即得到計(jì)算延遲TC的值。計(jì)算延遲TC的值為所有非訪存操作消耗的CPU_CLK_UNHALTED.CORE百分比與CLKT的乘積。

然后,VTUNE性能分析器識別熱點(diǎn)循環(huán)中的循環(huán)依賴數(shù)據(jù)訪問操作和非循環(huán)依賴數(shù)據(jù)訪問操作。同上,分別累加循環(huán)依賴數(shù)據(jù)訪問語句和非循環(huán)依賴數(shù)據(jù)訪問語句的CPU_CLK_UNHALTED.CORE百分比,得到所有循環(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ù)訪問延遲Tim的值。

所述群組式預(yù)取線程構(gòu)建包括:

C) 判斷計(jì)算延遲TC和循環(huán)依賴數(shù)據(jù)訪問延遲與非循環(huán)依賴數(shù)據(jù)訪問延遲之和(TdmTim) 的關(guān)系;

D) 當(dāng)TC<(TdmTim)時(shí),基于理想情況下確定合理的預(yù)取率R=(TCTim -Tdm)/2;當(dāng)TC≥(TdmTim)時(shí),預(yù)取率R 值等于1;

E) 利用切片技術(shù)基于預(yù)取率R 構(gòu)建群組式預(yù)取線程。

確定熱點(diǎn)循環(huán)后,編譯器還需要識別哪些指令必須在輔助線程中執(zhí)行,這一過程稱為代碼切片。首先使用程序profile工具VTUNE性能分析器在運(yùn)行時(shí)測試代碼的長延遲的訪存指令,并以profile文件的形式保存下來;其次,編譯器根據(jù)profile文件信息和選定的循環(huán)區(qū)域?qū)⒁A(yù)取的關(guān)鍵指令抽取出來(即根據(jù)預(yù)取率只選擇部分循環(huán)依賴取數(shù)指令),并保留對循環(huán)結(jié)構(gòu)有影響的代碼,刪除其它非關(guān)鍵的代碼,完成切片形成輔助線程的代碼塊;最后,將切片后的代碼移植到輔助線程中,在主線程中插入輔助線程觸發(fā)指令,并在輔助線程和主線程中插入同步代碼塊,保證幫助線程正常而有效的執(zhí)行。

所述線程同步機(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ù)取信號。

在構(gòu)建群組式預(yù)取線程時(shí),在原主線程的熱點(diǎn)循環(huán)入口處設(shè)置標(biāo)志位flag為1,程序執(zhí)行到熱點(diǎn)循環(huán)時(shí)自動觸發(fā)輔助線程執(zhí)行,在原主線程的熱點(diǎn)循環(huán)的出口處設(shè)置標(biāo)志位flag為0,程序執(zhí)行到熱點(diǎn)循環(huán)末尾時(shí)自動停止輔助線程執(zhí)行。當(dāng)flag為0時(shí),輔助線程循環(huán)等待,直至flag=1開始執(zhí)行輔助線程。

一種面向非規(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ī)制選取模塊相連接。預(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ā)出時(shí)機(jī)。預(yù)取距離的取值決定著預(yù)取請求發(fā)出的時(shí)機(jī)。

以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1