国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于階段分析的緩存動態(tài)劃分方法和系統(tǒng)的制作方法

      文檔序號:6604976閱讀:172來源:國知局

      專利名稱::一種基于階段分析的緩存動態(tài)劃分方法和系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及多核處理器中共享緩存的動態(tài)劃分
      技術(shù)領(lǐng)域
      ,特別是涉及一種基于階段(phase)分析的緩存(cache)動態(tài)劃分方法和系統(tǒng)。
      背景技術(shù)
      :多核處理器是指單個芯片上集成多個處理器核的處理器。共享cache的多核處理器是指多個處理器核共享使用芯片上的cache。cache是一種芯片上的存儲資源,用以緩存處理器最近使用的數(shù)據(jù),由于cache容量有限,新數(shù)據(jù)會把舊數(shù)據(jù)替換出cache。在共享cache的多核處理器上,目前的替換策略不區(qū)分?jǐn)?shù)據(jù)來源,各處理器核間的數(shù)據(jù)會相互替換,致使處理器核上同時運行的程序會相互干擾性能。Cache劃分技術(shù)是指為同時運行的程序分配共享cache的不同的區(qū)域,以此來消除程序間在cache中的數(shù)據(jù)替換,消除程序間性能干擾,最大效率地發(fā)揮cache的作用。Cache劃分技術(shù)又分為硬件劃分方法和軟件劃分方法兩類。硬件劃分方法是利用額外的硬件收集程序cache需求信息,由區(qū)分?jǐn)?shù)據(jù)所有者的替換策略完成劃分,這類方法目前都是基于模擬器上的研究,沒有實用。軟件劃分方法是利用了操作系統(tǒng)的頁著色技術(shù)將內(nèi)存物理頁按照其地址分成不同顏色的組,為不同進程(程序的動態(tài)執(zhí)行體)分配不同顏色的頁,由于共享cache以物理地址為索引,不同顏色物理頁上的數(shù)據(jù)會存儲到cache的不同區(qū)域,就達(dá)到了為不同程序劃分cache的目的。軟件劃分方法在現(xiàn)有的操作系統(tǒng)和虛擬機上可以實現(xiàn)和應(yīng)用。Cache劃分技術(shù)的核心在于在所有可能的劃分方案中選出最優(yōu)的劃分方案和追求程序性能最大化。為了確定程序在各種Cache劃分下的性能表現(xiàn),基于頁著色的軟件劃分方法需要試探性地運行各種劃分,再從中選取性能較好的劃分。我們定義劃分空間為所有可能劃分方案的集合,軟件動態(tài)劃分方法就是從劃分空間里在線搜索最優(yōu)的過程,即隨著程序的運行不斷試探,根據(jù)性能反饋不斷調(diào)整搜索方向或縮小搜索范圍,逐步逼近最優(yōu)的Cache劃分。軟件動態(tài)劃分方法以固定的時間間隔(后文稱為“時間片”)為單位周期的試探劃分、劃分選優(yōu)、再由當(dāng)前最優(yōu)制定執(zhí)行下一步的搜索策略?,F(xiàn)有軟件動態(tài)劃分方法的搜索策略是不斷試探相鄰的Cache劃分,然后比較性能,最優(yōu)者作為下一次搜索的開始劃分。但該軟件動態(tài)劃分方法存在下面兩方面問題1.通過直接比較各時間片下程序的性能來確定Cache劃分的優(yōu)劣會產(chǎn)生誤判問題。由于程序在運行期間的性能隨時間變化的情況,不是隨機、混亂的,而往往會表現(xiàn)出規(guī)律性,即在程序運行期間會經(jīng)過一系列有序階段(phase),在該階段內(nèi)程序的運行表現(xiàn)相似,階段間差異明顯,而且這些階段會重復(fù)出現(xiàn),這些階段稱之為phase。程序在phase切換時可能有性能變化,如果直接比較不同phase上時間片性能,將會將phase間的性能差異歸因于Cache劃分的不同,從而對Cache劃分優(yōu)劣產(chǎn)生誤判,搜索就偏離最優(yōu)劃分,程序性能未能最大幅度提高;2.當(dāng)程序進入穩(wěn)定的phase時,該軟動態(tài)劃分方法仍然在試探搜索,這種情況下如果已搜索到最優(yōu)Cache劃分,就可以停止搜索,減少搜索帶來的開銷。
      發(fā)明內(nèi)容本發(fā)明的目的在于提供一種基于phase分析的cache動態(tài)劃分方法和系統(tǒng),其能夠明顯提高系統(tǒng)的總體性能,節(jié)省大量開銷。為實現(xiàn)本發(fā)明的目的而提供的一種基于phase分析的Cache動態(tài)劃分方法,包括下列步驟步驟000.啟動決策進程,系統(tǒng)狀態(tài)初始化為搜索狀態(tài)并構(gòu)建靜態(tài)搜索樹;啟動應(yīng)用程序進程;決策進程開始執(zhí)行步驟100到300的循環(huán),直至應(yīng)用程序進程結(jié)束;步驟100.劃分決策模塊讀取采樣數(shù)據(jù),并根據(jù)采樣數(shù)據(jù)識別出程序在當(dāng)前時間片下運行的phase號,并更新歷史記錄;步驟200,劃分決策模塊收集程序的當(dāng)前phase在搜索集下各劃分的性能數(shù)據(jù),根據(jù)phase分析結(jié)果和系統(tǒng)狀態(tài)確定下一時間片的Cache劃分;步驟300.當(dāng)前時間片的決策過程結(jié)束,確定出下一時間片的Cache劃分,再調(diào)用劃分執(zhí)行模塊完成cache劃分。所述步驟000,包括下列步驟步驟010.劃分空間為[l,n],靜態(tài)搜索樹的根結(jié)點為(n/4,n/2,3n/4),搜索步長為n/4,開始構(gòu)造子樹,輸入為中心點C、區(qū)域a[L,H]和步長s,其中中心點c即為根節(jié)點的3個劃分,區(qū)域a為子樹所含劃分范圍的上下界[L,H],將根結(jié)點3個劃分的c、a和s信息加入未構(gòu)造隊列;步驟020.判斷未構(gòu)造隊列是否為空,若是,則結(jié)束構(gòu)造;否則,執(zhí)行步驟030.步驟030.取出未構(gòu)造隊列的第一組構(gòu)造信息中心點C、區(qū)域a[L,H]和步長s,生成結(jié)點(1,c,h),若左右結(jié)點1和h超出區(qū)域則取區(qū)域邊界L和H,否則1=c-s/2,h=c+s/2,s=s/2,若s=1則表示當(dāng)前為葉子結(jié)點;否則將l,c,h的c、a*s加入未構(gòu)造隊列,返回步驟020。所述搜索樹是Cache劃分空間的多級的樹結(jié)構(gòu)表示,樹結(jié)點是有3個劃分的搜索集,同時有3個子結(jié)點,分別對應(yīng)3個搜索方向。所述步驟100,包括下列步驟步驟110,性能采集模塊周期采樣時間片內(nèi)的執(zhí)行PC,采樣周期為100萬條指令;步驟120,建立PC頻率向量,并歸一化;步驟130,在phase的歷史記錄中查找和當(dāng)前頻率向量的曼哈頓距離最近的phase,若該最近曼哈頓距離小于相似度閾值,則判定當(dāng)前時間片程序處于最近曼哈頓距離對應(yīng)的phase;若大于相似度閾值,則判定在當(dāng)前時間片程序進入新的phase,并分配新的phase編號和歷史記錄。所述步驟200,包括下列步驟步驟210.判斷系統(tǒng)狀態(tài);若為搜索狀態(tài),則執(zhí)行步驟220;若為保持狀態(tài),則執(zhí)行步驟250;步驟220若歷史數(shù)據(jù)中已有當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能,執(zhí)行步驟230;否則執(zhí)行步驟240;步驟230從當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能中選出性能最優(yōu)者作為當(dāng)前最優(yōu)Cache劃分;步驟240若歷史數(shù)據(jù)中沒有全部的當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能,則從當(dāng)前搜索集中選出未搜索的Cache劃分為下一時間片的Cache劃分;步驟250.當(dāng)前為保持狀態(tài),若發(fā)現(xiàn)當(dāng)前phase沒有被搜索過而且出現(xiàn)頻率已經(jīng)超過熱度閾值,執(zhí)行步驟260;否則執(zhí)行步驟270;步驟260為當(dāng)前phase構(gòu)造搜索樹,下一時間片的Cache劃分為該搜索樹根結(jié)點上搜索集中離當(dāng)前Cache劃分最近的劃分,并將系統(tǒng)狀態(tài)設(shè)為搜索;步驟270繼續(xù)保持狀態(tài),下一時間片的Cache劃分仍為當(dāng)前Cache劃分。在步驟230中,若當(dāng)前搜索集在搜索樹中處于葉子結(jié)點,則當(dāng)前最優(yōu)Cache劃分為該phase的全局最優(yōu)Cache劃分,系統(tǒng)進入保持最優(yōu)Cache劃分的狀態(tài);否則將當(dāng)前搜索集的當(dāng)前最優(yōu)Cache劃分方向的子結(jié)點設(shè)為新的搜索集,并從新搜索集中選出離當(dāng)前最優(yōu)Cache劃分最近的Cache劃分為下一時間片的Cache劃分。所述步驟260,包括下列步驟步驟261.當(dāng)前劃分c,根結(jié)點搜索集(c-l,c,c+l),開始構(gòu)造孩子結(jié)點,輸入?yún)?shù)為開始點b,區(qū)域a[L,H]和搜索步長s,s的初始值為n/8,開始點為當(dāng)前搜索集各劃分,區(qū)域為子樹對應(yīng)的搜索范圍,將根結(jié)點中的初始開始點c-1和c+1的b、a和s信息加入未構(gòu)造隊列;,開始點在當(dāng)前節(jié)點中的位置決定其子節(jié)點的拓展方向,如c-1就向劃分空間的右邊擴展,擴展的距離就是步長,所以c-1擴展生成的子節(jié)點為(C-1-2S,c-l-s,c-1),c+1生成的擴展節(jié)點為(什1,(+1+8,(3+1+28),擴展范圍即區(qū)域3[1^!1];步驟262.若未構(gòu)造隊列為空,則結(jié)束構(gòu)造;否則開始步驟263;步驟263.取出未構(gòu)造隊列的第一個構(gòu)造信息開始點b、區(qū)域[L,H]和步長s,根據(jù)步長改變條件調(diào)整步長,若b在區(qū)域的右端,生成結(jié)點(b-2s,b-s,b),若在左端,生成(b,b+s,b+2s),若b在區(qū)域中間則生成(b_s,b,b+s),若s為1則表示葉子結(jié)點構(gòu)造完成;否則將新生節(jié)點中非父節(jié)點的劃分的b、a*s加入未構(gòu)造隊列,轉(zhuǎn)到步驟262。為實現(xiàn)本發(fā)明的目的還提供一種基于phase分析的Cache動態(tài)劃分系統(tǒng),所述系統(tǒng),包括初始化模塊、劃分決策模塊、劃分執(zhí)行模塊和性能采樣模塊,其中初始化模塊,將系統(tǒng)狀態(tài)初始化為搜索狀態(tài)并構(gòu)建靜態(tài)搜索樹;同時啟動應(yīng)用程序進程;并觸發(fā)劃分決策模塊、劃分執(zhí)行模塊和性能采樣模塊,直至應(yīng)用程序進程結(jié)束;劃分決策模塊,用于啟動決策進程,收集程序的當(dāng)前phase在搜索集下各劃分的性能數(shù)據(jù),在時間片結(jié)束時根據(jù)phase分析結(jié)果和系統(tǒng)狀態(tài)確定下一時間片的Cache劃分,其余時間都處于休眠狀態(tài);所述劃分執(zhí)行模塊,當(dāng)前時間片的決策過程結(jié)束,確定出下一時間片的Cache劃分,再調(diào)用劃分執(zhí)行模塊完成cache劃分;性能采集模塊,通過讀取處理器硬件性能計數(shù)器,向決策模塊提供性能數(shù)據(jù)和phase分析的輸入。所述初始化模塊,包括搜索樹初始化模塊.劃分空間為[l,n],靜態(tài)搜索樹的根結(jié)點為(n/4,n/2,3n/4),搜索步長為n/4,開始構(gòu)造子樹,輸入為中心點C、區(qū)域a[L,H]和步長s,其中中心點c即為8根節(jié)點的3個劃分,區(qū)域a為子樹所含劃分范圍的上下界[L,H],將根結(jié)點3個劃分的c、a和s信息加入未構(gòu)造隊列;判斷模塊.判斷未構(gòu)造隊列是否為空,若是,則結(jié)束構(gòu)造;否則,觸發(fā)搜索樹構(gòu)造模塊;搜索樹構(gòu)造模塊.取出未構(gòu)造隊列的第一組構(gòu)造信息中心點C、區(qū)域a[L,H]和步長s,生成結(jié)點(1,c,h),若左右結(jié)點1和h超出區(qū)域則取區(qū)域邊界L和H,否則1=c-s/2,h=c+s/2,s=s/2,若s=1則表示當(dāng)前為葉子結(jié)點;否則將l,c,h的C、a*s加入未構(gòu)造隊列,觸發(fā)判斷模塊。所述搜索樹是Cache劃分空間的多級的樹結(jié)構(gòu)表示,樹結(jié)點是有3個劃分的搜索集,同時有3個子結(jié)點,分別對應(yīng)3個搜索方向。所述性能采集模塊,包括PC采樣模塊,周期采樣時間片內(nèi)的執(zhí)行PC,采樣周期為100萬條指令;向量歸一化模塊,建立PC頻率向量,并歸一化;Phase識別模塊,在phase的歷史記錄中查找和當(dāng)前頻率向量的曼哈頓距離最近的phase,若該最近曼哈頓距離小于相似度閾值,則判定當(dāng)前時間片程序處于最近曼哈頓距離對應(yīng)的phase;若大于相似度閾值,則判定在當(dāng)前時間片程序進入新的phase,并分配新的phase編號和歷史記錄。所述劃分決策模塊,包括狀態(tài)判斷模塊.判斷系統(tǒng)狀態(tài);若為搜索狀態(tài),則觸發(fā)搜索模塊;若為保持狀態(tài),則觸發(fā)閾值判斷模塊;搜索模塊,搜索歷史數(shù)據(jù)中是否已有當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能,若有則觸發(fā)選擇模塊;否則觸發(fā)劃分選擇模塊;選擇模塊,從當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能中選出性能最優(yōu)者作為當(dāng)前最優(yōu)Cache劃分;劃分選擇模塊,若歷史數(shù)據(jù)中沒有全部的當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能,則從當(dāng)前搜索集中選出未搜索的Cache劃分為下一時間片的Cache劃分;閾值判斷模塊,當(dāng)前為保持狀態(tài),若發(fā)現(xiàn)當(dāng)前phase沒有被搜索過而且出現(xiàn)頻率已經(jīng)超過熱度閾值,觸發(fā)構(gòu)造模塊;否則觸發(fā)狀態(tài)維持模塊;構(gòu)造模塊,為當(dāng)前phase構(gòu)造搜索樹,下一時間片的Cache劃分為該搜索樹根結(jié)點上搜索集中離當(dāng)前Cache劃分最近的劃分,并將系統(tǒng)狀態(tài)設(shè)為搜索;狀態(tài)維持模塊,繼續(xù)保持狀態(tài),下一時間片的Cache劃分仍為當(dāng)前Cache劃分。在所述選擇模塊中,若當(dāng)前搜索集在搜索樹中處于葉子結(jié)點,則當(dāng)前最優(yōu)Cache劃分為該phase的全局最優(yōu)Cache劃分,系統(tǒng)進入保持最優(yōu)Cache劃分的狀態(tài);否則將當(dāng)前搜索集的當(dāng)前最優(yōu)Cache劃分方向的子結(jié)點設(shè)為新的搜索集,并從新搜索集中選出離當(dāng)前最優(yōu)Cache劃分最近的Cache劃分為下一時間片的Cache劃分。所述構(gòu)造模塊,包括輸入模塊,當(dāng)前劃分C,根結(jié)點搜索集(c-1,c,c+1),開始構(gòu)造孩子結(jié)點,輸入?yún)?shù)為開始點b,區(qū)域a[L,H]和搜索步長s,s的初始值為n/8,開始點為當(dāng)前搜索集各劃分,區(qū)域為子樹對應(yīng)的搜索范圍,將根結(jié)點中的初始開始點c-1和c+1的b、a和s信息加入未構(gòu)造隊列;,開始點在當(dāng)前節(jié)點中的位置決定其子節(jié)點的拓展方向,如c-1就向劃分空間的右邊擴展,擴展的距離就是步長,所以c-1擴展生成的子節(jié)點為(C-1-2S,c-l-s,c-1),c+1生成的擴展節(jié)點為(什1,(+1+8,(3+1+28),擴展范圍即區(qū)域3[1^!1];空項判斷模塊,判斷未構(gòu)造隊列是否為空,若是則結(jié)束構(gòu)造;否則觸發(fā)構(gòu)造子模塊;構(gòu)造子模塊,取出未構(gòu)造隊列的第一個構(gòu)造信息開始點b、區(qū)域[L,H]和步長S,根據(jù)步長改變條件調(diào)整步長,若b在區(qū)域的右端,生成結(jié)點(b_2s,b-s,b),若在左端,生成(b,b+s,b+2s),若b在區(qū)域中間則生成(b-s,b,b+s),若s為1則表示葉子結(jié)點構(gòu)造完成;否則將新生節(jié)點中非父節(jié)點的劃分的b、a和s加入未構(gòu)造隊列,觸發(fā)空項判斷模塊。本發(fā)明的有益效果是1.使用本發(fā)明的基于phase分析的cache動態(tài)劃分方法和系統(tǒng)相對于現(xiàn)有技術(shù)總體性能得到很大改進;2.使用本發(fā)明的基于phase分析的cache動態(tài)劃分方法和系統(tǒng)相對于現(xiàn)有技術(shù)減少的大部分開銷。圖1是本發(fā)明中決策系統(tǒng)的狀態(tài)轉(zhuǎn)換圖;圖2A和圖2B分別是本發(fā)明中初始搜索樹和動態(tài)搜索樹的示意圖;圖3是本發(fā)明的基于phase分析的cache動態(tài)劃分方法的步驟流程圖;圖4是本發(fā)明中初始化搜索樹的步驟流程圖;圖5是本發(fā)明中對數(shù)據(jù)進行采樣并識別phase的步驟流程圖;圖6是本發(fā)明中根據(jù)phase分析結(jié)果和系統(tǒng)狀態(tài)確定下一時間片的Cache劃分的步驟流程圖;圖7是本發(fā)明中為當(dāng)前phase構(gòu)造搜索樹的步驟流程圖;圖8是本發(fā)明的基于phase分析的cache動態(tài)劃分系統(tǒng)的組成示意圖;圖9是本發(fā)明的基于phase分析的cache動態(tài)劃分系統(tǒng)的結(jié)構(gòu)組成圖;圖10是現(xiàn)有技術(shù)中dyn與本發(fā)明的phase的性能改進對比圖;圖11是現(xiàn)有技術(shù)中dyn與本發(fā)明的phase兩種方法在green類程序的遷移開銷對比圖。具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明的一種基于階段(Phase)分析的緩存(cache)動態(tài)劃分方法和系統(tǒng)進行進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明的一種基于phase分析的cache動態(tài)劃分方法和系統(tǒng),通過識別程序運行中的各個phase,并搜索各phase的最優(yōu)cache劃分,即通過比較同一phase上對應(yīng)的各cache劃分的性能來確定該phase的最優(yōu)cache劃分,在確定了phase的最優(yōu)cache劃分后就停止搜索,操作系統(tǒng)保持最優(yōu)cache劃分的狀態(tài)。其能夠減少cache劃分搜索中的誤判,盡快搜索到最優(yōu)cache劃分,司時減少了不必要的搜索,降低了搜索帶來的頁遷移開銷。10下面結(jié)合上述目標(biāo)詳細(xì)介紹本發(fā)明的一種基于phase分析的cache動態(tài)劃分方法,所述方法涉及以下幾方面內(nèi)容1.Phase識別方法本發(fā)明中使用處理器的性能計數(shù)器周期采樣程序執(zhí)行過的指令地址PC(programcounter,用于記錄指令地址的寄存器,用來指指令地址),每個時間片內(nèi)的PC采樣形成一個頻率向量,各頻率向量間的曼哈頓距離就代表各時間片內(nèi)程序運行的相似度。如果兩個時間片的頻率向量間的曼哈頓距離小于相似度閾值,則判定這兩個時間片的程序運行屬于同一phase。主要有4個步驟步驟1周期采樣時間片內(nèi)的執(zhí)行PC,采樣周期為100萬條指令;步驟2建立PC頻率向量,并歸一化;建立PC頻率向量的方法是對時間片內(nèi)采樣到的每個PC,取PC中從第6位開始的5位為向量索引(不使用低5位是為了盡可能使同一基本塊的指令映射到向量的同一位置),將該索引對應(yīng)的向量元素的值加一;歸一化就是將向量中每個元素設(shè)為其值除以時間片內(nèi)PC總數(shù),這樣所有元素和為1.步驟3在phase的歷史記錄中查找和當(dāng)前頻率向量的曼哈頓距離最近的phase,若該最近曼哈頓距離小于相似度閾值,則判定當(dāng)前時間片程序處于最近曼哈頓距離對應(yīng)的phase;若大于相似度閾值,則判定在當(dāng)前時間片程序進入新的phase,并分配新的phase編號和歷史記錄。以下是phase識別過程的偽碼描述1.SPCm=tm(pc0,Pc1,…,ρcn//sampleddatafromperfmon2.forPciinSPCmSPVm[(Pci>>5)&0xlf]++foriinSPVmSPVm[i]/n3.if(max{MD(SPVp,SPVm)ρinPHT}<SIMILARITY_THRESH0LD)phase_idm=q,MD(SPvq,SPVm)==max{MD(SPVp,SPVm)ρinPHT}4.elsePHT(new_phase_id)=SPVmphase_idm=new_phase_id++其中,SPC(SampledPC)采樣PCSPV(SampledPCVector)采樣PC的頻率向量MD(ManhattanDistance)曼哈頓距離,PHT(Phasehistorytable):phase歷史表,記錄已識別的phase其對應(yīng)SPVSIMILARITY_THRESH0LD相似度閾值2.依據(jù)phase行為的決策機制以雙核處理器的cache劃分過程為例,根據(jù)兩道程序phase的行為,分為以下3種處置情況1)當(dāng)兩道程序在最近時間片都沒有發(fā)生phase變化,即二者行為都處于穩(wěn)定狀態(tài)時,就同時對兩道程序分別進行cache劃分選優(yōu),但搜索方向由程序性能改進幅度大的程序確定,即選擇性能改進幅度大的程序的cache劃分作為當(dāng)前的最優(yōu)cache劃分;2)當(dāng)只有一道程序在最近時間片中無phase變化,即該程序的行為處于穩(wěn)定狀態(tài)時,就對該程序進行劃分選優(yōu),并從其最優(yōu)cache劃分的方向開始搜索。3)當(dāng)兩道程序都處于不穩(wěn)定階段,即在最近時間片不斷發(fā)生phase變化,則采取保守策略——不進行劃分選優(yōu)和新的搜索,以避免誤判。3.基于最優(yōu)cache劃分的狀態(tài)轉(zhuǎn)換機制由于搜索時的劃分改變有數(shù)據(jù)遷移的開銷,這些開銷會抵消程序在最優(yōu)cache劃分下運行的性能改進。在對程序進行phase識別后,對已確定出最優(yōu)cache劃分的phase,劃分決策模塊可以停止搜索,系統(tǒng)保持在最優(yōu)cache劃分下運行,直到發(fā)生phase變化。因此本發(fā)明的劃分系統(tǒng)設(shè)有兩個狀態(tài)——搜索狀態(tài)和保持狀態(tài),隨著程序phase的變化系統(tǒng)在兩個狀態(tài)間切換。圖1是本發(fā)明中決策系統(tǒng)的狀態(tài)轉(zhuǎn)換圖,如圖1所示,①到⑥是狀態(tài)轉(zhuǎn)換條件,具體是①有Phase變化,停止搜索;②無phase變化,進一步搜索;③已搜索到各程序當(dāng)前phase的最優(yōu)劃分;④有phase變化:a、舊phase已有最優(yōu)劃分,切換至該劃分;b、新phase的出現(xiàn)頻率未超過熱度閾值;⑤無phase變化,繼續(xù)保持;⑥有程序進入新的穩(wěn)定的phase或未確定最優(yōu)劃分的舊phase。在后面的劃分算法中有相關(guān)的偽碼描述。4.樹結(jié)構(gòu)搜索集的構(gòu)建方法為了盡快搜索到一個phase的最優(yōu)cache劃分,本發(fā)明將雙核處理器(仍以雙核為例)的劃分空間轉(zhuǎn)變?yōu)槎嗉壍臉浣Y(jié)構(gòu)——搜索樹。樹結(jié)點是有3個劃分的搜索集,同時有3個子結(jié)點,分別對應(yīng)3個搜索方向。搜索集代表了劃分空間的搜索目標(biāo)區(qū)域,子結(jié)點的搜索集進一步細(xì)分了父結(jié)點的搜索區(qū)域。搜索從樹的根結(jié)點開始,自上而下地進行當(dāng)?shù)玫絧hase在搜索集內(nèi)3個劃分性能數(shù)據(jù)后,選其中最優(yōu)者對應(yīng)的搜索方向上的子結(jié)點為新的搜索集,搜索范圍逐步縮小,直至葉子結(jié)點處確定出phase的最優(yōu)Cache劃分。這個過程類似于有序序列的折半查找,比順序查找減少了比較次數(shù)。搜索樹分成兩類,一類是初始搜索樹,指從劃分空間的中點開始的搜索樹,在程序開始運行時使用;一類是動態(tài)構(gòu)建搜索樹,指程序運行期間以當(dāng)前劃分為根結(jié)點構(gòu)建的搜索樹,用于對新出現(xiàn)的熱Phase開始進行最優(yōu)Cache劃分的搜索。圖2A和圖2B分別是本發(fā)明中初始搜索樹和動態(tài)搜索樹的示意圖,如圖2A和圖2B所示,雙核劃分Part1=(i,n_i),如,當(dāng)η=16時,劃分有part2=(2,14),part3=(3,13),part14=(14,2),劃分空間為Iparti11<i<15},圖中直接用數(shù)字表示劃分,(2,3,4,5,6,7,8,9,10,11,12,13,14)。下面描述了基于phase分析的cache動態(tài)劃分方法的算法步驟。獨立的劃分決策進程,在每個時間片執(zhí)行一次決策,直到應(yīng)用程序結(jié)束后退出。具體方法是在①處讀取性能采樣數(shù)據(jù),例如采樣PC和程序A和B在某一時間片下的Cache劃分,如果時間片沒有結(jié)束,決策進程會在此處等待;②根據(jù)PC采樣數(shù)據(jù)返回程序A、B上一時間片的phase號,并更新歷史信息。③部分的if-else對應(yīng)決策系統(tǒng)兩個狀態(tài)。當(dāng)處于搜索狀態(tài)時,若已收集到程序A或B的當(dāng)前phase在搜索集下各劃分的性能數(shù)據(jù)④(二者的行為情況可能不同,處理方法前面已經(jīng)說明),就選取best_part,并由此確定下一搜索集⑥或轉(zhuǎn)入保持狀態(tài)⑤;當(dāng)系統(tǒng)處于保持狀態(tài)時,若發(fā)現(xiàn)當(dāng)前phase(無論程序A或B)沒有被搜索過而且出現(xiàn)頻率已經(jīng)超過熱度閾值⑦,就構(gòu)造搜索樹,進入搜索狀態(tài)。所述基于phase分析的cache動態(tài)劃分方法的算法偽碼如下所示12while1if(appsprocessexit)break(I)readingprofilingdata:SPCm,PtTandPc.②phase_idm[A,B]=phase_analyze(SPCm)PPMA[i][phase_icm[A]]=F^;PPM3[i][phasejd館[B]]=P‘③if(sys_stat==SEARCH_STAT)(4)if(AorBiscomparable)best一part=j,PPM[j][phase_idm]=MAX{PPM[k][phase_idm]kincurrent_set}(5)if(current,setiscurrent_tree,sleaf)#best_parthasbeenthebestpartitioninthecurrent—setBPM[phase_idm[A,B]]=best_partsys_stat=H0LD_STAT⑥else:next_set=current_tree_>next_level[best_part.pos],pos={left,mid,right}next_part=next_set[n],ηisthenearestfrombest_partelsenext—part=current—set—>next—partelse:#sys_stat==H0LD_STAT⑦if(phase」dm[AandB]hadbeensearched)next_part=BPM[phase_idm[A,B]]⑦elseif(frequencyofphase_idm[AorB]>H0T_THRESH0LD&&phase_idmnotbeensearched)current_tree=new_tree(current_part)sys_stat=SEARCH_STAT其中,SPC(SampledPC)采樣PCandFJ程序A、B在時間片tm、劃分i時的性能PPM(phasepartitionmatrix)記錄各phase在各劃分下的性能BPM(bestpartitionmatrix)記錄兩道程序各phase同時運行時的最優(yōu)劃分其中系統(tǒng)狀態(tài)(變量sys_stat)有兩個值SEARCH_STAT和H0LD_STAT,分別表示搜索和保持狀態(tài),在搜索到當(dāng)前phase的全局最優(yōu)劃分后,系統(tǒng)狀態(tài)從SEARCH_STAT轉(zhuǎn)換為H0LD_STAT;當(dāng)出現(xiàn)未搜索的phase的熱度(即出現(xiàn)頻率)超過閾值則系統(tǒng)狀態(tài)從H0LD_STAT轉(zhuǎn)為SEARCH_STAT。歷史記錄包括phase號序列、phase的PC頻率向量、phase的性能矩陣。作為一種可實施方式,圖3是本發(fā)明的基于phase分析的cache動態(tài)劃分方法的步驟流程圖,如圖3所示,所述基于phase分析的cache動態(tài)劃分方法,包括下列步驟步驟000.啟動決策進程,系統(tǒng)狀態(tài)初始化為搜索狀態(tài)并構(gòu)建靜態(tài)搜索樹,搜索集為搜索樹的根結(jié)點;啟動應(yīng)用程序進程;決策進程開始執(zhí)行步驟100到300的循環(huán),直至應(yīng)用程序進程結(jié)束;圖4是本發(fā)明中初始化搜索樹的步驟流程圖,如圖4所示,所述步驟000,包括下列步驟步驟010.劃分空間為[l,n],靜態(tài)搜索樹的根節(jié)點為(n/4,n/2,3n/4),搜索步長為n/4,開始構(gòu)造子樹,輸入為中心點C、區(qū)域a[L,H]和步長s,其中中心點c即為根節(jié)點的3個劃分,區(qū)域a為子樹所含劃分范圍的上下界[L,H],將根節(jié)點3個劃分的c、a和s信息加入未構(gòu)造隊列。區(qū)域a[L,H]上下界的確定方法以節(jié)點(i,j,k)為例,中間劃分j對應(yīng)子樹的區(qū)域為其左右鄰居[i,k],左邊劃分i的區(qū)域的上界為其右鄰j,下界分兩種情況,若當(dāng)前節(jié)點為根節(jié)點,下界為劃分空間的下界,若不是根節(jié)點,下界取父親節(jié)點的下界;右邊劃分k的邊界類似,下界為其左鄰,上界分兩種情況,根節(jié)點取劃分空間上界,非根節(jié)點去父親節(jié)點的上界。搜索樹是Cache劃分空間的多級的樹結(jié)構(gòu)表示。樹結(jié)點是有3個劃分的搜索集,同時有3個子結(jié)點,分別對應(yīng)3個搜索方向。對于雙核處理器的劃分Part1=(i,n_i),如,當(dāng)η=16時,劃分有part2=(2,14),part3=(3,13),part14=(14,2),劃分空間為Iparti11<i<15},圖中直接用數(shù)字表示劃分,(2,3,4,5,6,7,8,9,10,11,12,13,14)。搜索樹的結(jié)點,即搜索集,就是3個有序的劃分組,如(4,8,12)。步驟020.判斷未構(gòu)造隊列是否為空,若是,則結(jié)束構(gòu)造;否則,執(zhí)行步驟030.步驟030.取出未構(gòu)造隊列的第一組構(gòu)造信息中心點C、區(qū)域a[L,H]和步長s,生成結(jié)點(1,c,h),若左右結(jié)點1和h超出區(qū)域則取區(qū)域邊界L和H,否則1=c-s/2,h=c+s/2,s=s/2,若s=1則表示當(dāng)前為葉子結(jié)點;否則將l,c,h的c、a和s加入未構(gòu)造隊列,返回步驟020。例當(dāng)η為16,即cache分為16份,劃分空間[1,16],靜態(tài)搜索樹的根結(jié)點為(4,8,12),搜索步長為4,開始構(gòu)造子樹,有3個子樹,輸入為中心點c為4、8、12,區(qū)域a[L,H]分別是中心點4的為[1,8],8的為[4,12],12的為[8,16],,將根結(jié)點3個劃分的[c,a,s]信息加入未構(gòu)造隊列,則未構(gòu)造隊列目前為{[4,[1,8],4],[8,[4,12],4],[12,[8,16],4]};接下來從隊列取第一個元素[4,[1,8],4]構(gòu)造出樹節(jié)點(2,4,6),即(4-4/2,4,4+4/2)再將步長減半,將2、4、6的c、a、s信息加入隊列{[8,[4,12],4],[12,[8,16],4],[2,[1,4],2],[4,[2,6],2],[6,[4,8],2]};接下來隊列元素的[8,[4,12],4],[12,[8,16],4]的處理類似;接著以[2,[1,4],2]為例,構(gòu)造節(jié)點(1,2,3),即(2-2/2,2,2+2/2),再將步長減半,由步長為1可知該節(jié)點為樹的葉子節(jié)點,所以它不會再有子節(jié)點加入未構(gòu)造隊列;這個例子生成的節(jié)點如圖2A的樹的最優(yōu)分支(4,8,12)->(2,4,6)->(1,2,3),只是圖2A的例子的最小劃分為2,葉子節(jié)點是(2,2,3)。這是迭代的過程,直到未構(gòu)造隊列為空,即所有葉子節(jié)點都已生成,不會有新的未處理[c,a,s]。步驟100.劃分決策模塊讀取采樣數(shù)據(jù),并根據(jù)采樣數(shù)據(jù)識別出程序在當(dāng)前時間片下運行的Phase號,并更新歷史記錄(和下文的歷史信息對應(yīng));如果時間片沒有結(jié)束,決策進程會在此處等待。圖5是本發(fā)明中對數(shù)據(jù)進行采樣并識別phase的步驟流程圖,如圖5所示,所述步驟100,包括下列步驟步驟110,性能采集模塊周期采樣時間片內(nèi)的執(zhí)行PC,采樣周期為100萬條指令;步驟120,建立PC頻率向量,并歸一化;頻率向量大小設(shè)為32,取PC中從第6位開始的5位為向量索引(不使用低5位是為了盡可能使同一基本塊的指令映射到向量的同一位置)。步驟130,在phase的歷史記錄中查找和當(dāng)前頻率向量的曼哈頓距離最近的phase,若該最近曼哈頓距離小于相似度閾值,則判定當(dāng)前時間片程序處于最近曼哈頓距離對應(yīng)的phase;若大于相似度閾值,則判定在當(dāng)前時間片程序進入新的phase,并分配新的phase編號和歷史記錄;步驟200,劃分決策模塊收集程序的當(dāng)前phase在搜索集下各劃分的性能數(shù)據(jù),根據(jù)phase分析結(jié)果和系統(tǒng)狀態(tài)確定下一時間片的Cache劃分;圖6是本發(fā)明中根據(jù)phase分析結(jié)果和系統(tǒng)狀態(tài)確定下一時間片的Cache劃分的步驟流程圖,如圖6所示,所述步驟200,包括下列步驟步驟210.判斷系統(tǒng)狀態(tài);若為搜索狀態(tài),則執(zhí)行步驟220;若為保持狀態(tài),則執(zhí)行步驟250;步驟220若歷史數(shù)據(jù)中已有當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能,執(zhí)行步驟230;否則執(zhí)行步驟240;步驟230從當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能中選出性能最優(yōu)者作為當(dāng)前最優(yōu)Cache劃分;若當(dāng)前搜索集在搜索樹中處于葉子結(jié)點,則當(dāng)前最優(yōu)Cache劃分為該phase的全局最優(yōu)Cache劃分,系統(tǒng)進入保持最優(yōu)Cache劃分的狀態(tài),即下一時間片的Cache劃分為該最優(yōu)Cache劃分(若兩道程序的最優(yōu)Cache劃分不一致,參見“2.依據(jù)phase行為的決策機制”處理原則);否則將當(dāng)前搜索集的當(dāng)前最優(yōu)Cache劃分方向的子結(jié)點設(shè)為新的搜索集,并從新搜索集中選出離當(dāng)前最優(yōu)Cache劃分最近的Cache劃分為下一時間片的Cache劃分。(搜索集和搜索樹的解釋參見“4.樹結(jié)構(gòu)搜索集的構(gòu)建方法”)步驟240,若歷史數(shù)據(jù)中沒有全部的當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能,則從當(dāng)前搜索集中選出未搜索的Cache劃分為下一時間片的Cache劃分;步驟250,當(dāng)前為保持狀態(tài),若發(fā)現(xiàn)當(dāng)前phase沒有被搜索過而且出現(xiàn)頻率已經(jīng)超過熱度閾值,執(zhí)行步驟260;否則執(zhí)行步驟270。步驟260,為當(dāng)前phase構(gòu)造搜索樹,下一時間片的Cache劃分為該搜索樹根結(jié)點上搜索集中離當(dāng)前Cache劃分最近的劃分,并將系統(tǒng)狀態(tài)設(shè)為搜索;圖7是本發(fā)明中為當(dāng)前phase構(gòu)造搜索樹的步驟流程圖,如圖7所示,所述步驟260,包括下列步驟步驟261.當(dāng)前劃分c,根結(jié)點搜索集(c-l,c,c+l),開始構(gòu)造孩子結(jié)點,輸入?yún)?shù)15為開始點b,區(qū)域a[L,H]和搜索步長s,s的初始值為n/8,開始點為當(dāng)前搜索集各劃分,區(qū)域為子樹對應(yīng)的搜索范圍;將根結(jié)點中的初始開始點c-1和c+1的b、a和s信息加入未構(gòu)造隊列,開始點在當(dāng)前節(jié)點中的位置決定其子節(jié)點的拓展方向,如c-1就向劃分空間的右邊擴展,擴展的距離就是步長,所以c-1擴展生成的子節(jié)點為(C-1-2S,c-l-s,c-1),c+1生成的擴展節(jié)點為(c+1,c+l+s,c+l+2s)。擴展范圍即區(qū)域a[L,H]。開始點的確定當(dāng)前節(jié)點中的不包含在父節(jié)點中的劃分為開始點。區(qū)域上下界的確定方法以節(jié)點(i,j,k)為例,中間劃分j對應(yīng)子樹的區(qū)域為其左右鄰居[i,k],左邊劃分i的區(qū)域的上界為其右鄰j,下界分兩種情況,若當(dāng)前節(jié)點為根節(jié)點,下界為劃分空間的下界,若不是根節(jié)點,下界取父親節(jié)點的下界;左邊劃分k的邊界類似,下界為其左鄰,上界分兩種情況,根節(jié)點取劃分空間上界,非根節(jié)點去父親節(jié)點的上界。步長改變條件擴展步長根據(jù)開始點b在區(qū)域范圍大小調(diào)整,分3種情況,當(dāng)b在當(dāng)前節(jié)點中間,若b+s和b-S分別不超出上、下邊界則S不變,否則S減半;當(dāng)b為當(dāng)前節(jié)點左邊,若b_2s不超過下界則s不變,否則減半;當(dāng)b為當(dāng)前節(jié)點右邊,若b+2s不超過上界則s不變,否則減半。步驟262.若未構(gòu)造隊列為空,則結(jié)束構(gòu)造;否則開始步驟263;步驟263.取出未構(gòu)造隊列的第一個構(gòu)造信息開始點b、區(qū)域[L,H]和步長s,根據(jù)步長改變條件調(diào)整步長,若b在區(qū)域的右端,生成結(jié)點(b-2s,b-s,b),若在左端,生成(b,b+s,b+2s),若b在區(qū)域中間則生成(b_s,b,b+s),若s為1則表示葉子結(jié)點構(gòu)造完成;否則將新生節(jié)點中非父節(jié)點的劃分的b、a*s加入未構(gòu)造隊列,轉(zhuǎn)到步驟262;步驟270繼續(xù)保持狀態(tài),下一時間片的Cache劃分仍為當(dāng)前Cache劃分。步驟300.當(dāng)前時間片的決策過程結(jié)束,即確定出下一時間片的Cache劃分,再調(diào)用劃分執(zhí)行模塊完成cache劃分。相應(yīng)于本發(fā)明的一種基于phase分析的cache動態(tài)劃分方法,還提供一種基于phase分析的cache動態(tài)劃分系統(tǒng),圖8是本發(fā)明的基于phase分析的cache動態(tài)劃分系統(tǒng)的組成示意圖,圖9是本發(fā)明的基于phase分析的cache動態(tài)劃分系統(tǒng)的結(jié)構(gòu)組成圖,如圖8和圖9所示,所述系統(tǒng),包括劃分決策模塊1、劃分執(zhí)行模塊2和性能profiling模塊3和初始化模塊4,四個模塊的功能和交互接口的示意圖見圖8。劃分決策模塊1,執(zhí)行劃分算法,并運行在獨立于應(yīng)用程序的單獨進程中。用于啟動決策進程,收集程序的當(dāng)前phase在搜索集下各劃分的性能數(shù)據(jù),在時間片結(jié)束時根據(jù)phase分析結(jié)果和系統(tǒng)狀態(tài)確定下一時間片的Cache劃分,其余時間都處于休眠狀態(tài)。所述劃分決策模塊1,包括狀態(tài)判斷模塊11.判斷系統(tǒng)狀態(tài);若為搜索狀態(tài),則觸發(fā)搜索模塊12;若為保持狀態(tài),則觸發(fā)閾值判斷模塊15;搜索模塊12,搜索歷史數(shù)據(jù)中是否已有當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能,若有則觸發(fā)選擇模塊13;否則觸發(fā)劃分選擇模塊14;選擇模塊13,從當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能中選出性能最優(yōu)者作為當(dāng)前最優(yōu)Cache劃分;在所述選擇模塊13中,若當(dāng)前搜索集在搜索樹中處于葉子結(jié)點,則當(dāng)前最優(yōu)Cache劃分為該phase的全局最優(yōu)Cache劃分,系統(tǒng)進入保持最優(yōu)Cache劃分的狀態(tài);否則16將當(dāng)前搜索集的當(dāng)前最優(yōu)Cache劃分方向的子結(jié)點設(shè)為新的搜索集,并從新搜索集中選出離當(dāng)前最優(yōu)Cache劃分最近的Cache劃分為下一時間片的Cache劃分。劃分選擇模塊14,若歷史數(shù)據(jù)中沒有全部的當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能,則從當(dāng)前搜索集中選出未搜索的Cache劃分為下一時間片的Cache劃分;閾值判斷模塊15,當(dāng)前為保持狀態(tài),若發(fā)現(xiàn)當(dāng)前phase沒有被搜索過而且出現(xiàn)頻率已經(jīng)超過熱度閾值,觸發(fā)構(gòu)造模塊16;否則觸發(fā)狀態(tài)維持模塊17;構(gòu)造模塊16,為當(dāng)前phase構(gòu)造搜索樹,下一時間片的Cache劃分為該搜索樹根結(jié)點上搜索集中離當(dāng)前Cache劃分最近的劃分,并將系統(tǒng)狀態(tài)設(shè)為搜索;所述構(gòu)造模塊16,包括輸入模塊161,當(dāng)前劃分c,根結(jié)點搜索集(c-1,c,c+Ι),開始構(gòu)造孩子結(jié)點,輸入?yún)?shù)為開始點b,區(qū)域a[L,H]和搜索步長s,s的初始值為n/8,開始點為當(dāng)前搜索集各劃分,區(qū)域為子樹對應(yīng)的搜索范圍,將根結(jié)點中的初始開始點c-1和c+Ι的b、a和s信息加入未構(gòu)造隊列;,開始點在當(dāng)前節(jié)點中的位置決定其子節(jié)點的拓展方向,如c-1就向劃分空間的右邊擴展,擴展的距離就是步長,所以c-1擴展生成的子節(jié)點為(c-l-2s,c-l-s,c-l),c+1生成的擴展節(jié)點為(。+1,(3+1+8,(3+1+28),擴展范圍即區(qū)域3[1^,!1];空項判斷模塊162,判斷未構(gòu)造隊列是否為空,若是則結(jié)束構(gòu)造;否則觸發(fā)構(gòu)造子模塊163;構(gòu)造子模塊163,取出未構(gòu)造隊列的第一個構(gòu)造信息開始點b、區(qū)域[L,H]和步長s,根據(jù)步長改變條件調(diào)整步長,若b在區(qū)域的右端,生成結(jié)點(b_2s,b-s,b),若在左端,生成(b,b+s,b+2s),若b在區(qū)域中間則生成(b-s,b,b+s),若s為1則表示葉子結(jié)點構(gòu)造完成;否則將新生節(jié)點中非父節(jié)點的劃分的b、3和s加入未構(gòu)造隊列,觸發(fā)空項判斷模塊162。狀態(tài)維持模塊17,繼續(xù)保持狀態(tài),下一時間片的Cache劃分仍為當(dāng)前Cache劃分。所述劃分執(zhí)行模塊2,在Iinux內(nèi)核的物理頁分配和頁遷移部分實現(xiàn)頁著色功能,并對用戶層提供劃分的調(diào)用接口;當(dāng)前時間片的決策過程結(jié)束,確定出下一時間片的Cache劃分,再調(diào)用劃分執(zhí)行模塊完成cache劃分;性能采樣(profiling)模塊3,通過讀取處理器硬件性能計數(shù)器,向決策模塊提供性能數(shù)據(jù)和Phase分析的輸入。所述性能采集模塊3,包括PC采樣模塊31,周期采樣時間片內(nèi)的執(zhí)行PC,采樣周期為100萬條指令;向量歸一化模塊32,建立PC頻率向量,并歸一化;Phase識別模塊33,在phase的歷史記錄中查找和當(dāng)前頻率向量的曼哈頓距離最近的phase,若該最近曼哈頓距離小于相似度閾值,則判定當(dāng)前時間片程序處于最近曼哈頓距離對應(yīng)的phase;若大于相似度閾值,則判定在當(dāng)前時間片程序進入新的phase,并分配新的phase編號和歷史記錄。初始化模塊4,將系統(tǒng)狀態(tài)初始化為搜索狀態(tài)并構(gòu)建靜態(tài)搜索樹;同時啟動應(yīng)用程序進程;并觸發(fā)劃分決策模塊、劃分執(zhí)行模塊和性能采樣模塊,直至應(yīng)用程序進程結(jié)束;所述初始化模塊4,包括搜索樹初始化模塊41.劃分空間為[1,η],靜態(tài)搜索樹的根結(jié)點為(η/4,η/2,3n/4),搜索步長為n/4,開始構(gòu)造子樹,輸入為中心點C、區(qū)域a[L,H]和步長s,其中中心點c即為根節(jié)點的3個劃分,區(qū)域a為子樹所含劃分范圍的上下界[L,H],將根結(jié)點3個劃分的c、a和s信息加入未構(gòu)造隊列;判斷模塊42.判斷未構(gòu)造隊列是否為空,若是,則結(jié)束構(gòu)造;否則,觸發(fā)搜索樹構(gòu)造模塊43;搜索樹構(gòu)造模塊43.取出未構(gòu)造隊列的第一組構(gòu)造信息中心點C、區(qū)域a[L,H]和步長s,生成結(jié)點(1,c,h),若左右結(jié)點1和h超出區(qū)域則取區(qū)域邊界L和H,否則1=c-s/2,h=c+s/2,s=s/2,若s=1則表示當(dāng)前為葉子結(jié)點;否則將l,c,h的c、a和s加入未構(gòu)造隊列,觸發(fā)判斷模塊42。四個模塊協(xié)同工作,組成一個動態(tài)的、反饋的自適應(yīng)系統(tǒng)。上述系統(tǒng)中的各模塊實現(xiàn)的具體操作,在方法部分已經(jīng)詳細(xì)說明,在此不再一一贅述。圖10是現(xiàn)有技術(shù)中dyn與本發(fā)明的phase的性能改進對比圖,如圖10所示,使用本發(fā)明的方法在intel多核處理器的實機上完成的實驗表明,本文的方法比現(xiàn)有動態(tài)方法在吞吐率、加權(quán)加速比和公平加速比上平均有1.7%,2.7%和2.8%的提高,個別程序組的改進高達(dá)4.4%、13%和6%。圖11是現(xiàn)有技術(shù)中dyn與本發(fā)明的phase兩種方法在green類程序的遷移開銷對比圖,如圖11所示,動態(tài)劃分每次調(diào)整劃分都需要將數(shù)據(jù)從舊頁遷移到新頁,我們用遷移頁數(shù)和系統(tǒng)時間來考察這項開銷。由于green類程序多為數(shù)據(jù)集大的浮點程序,每次劃分調(diào)整涉及的物理頁數(shù)目大,遷移的耗時也多。如附圖3,swim和applu在dyn方法下遷移開銷明顯,系統(tǒng)時間占了快7%的運行時間,遷移頁的數(shù)量也150萬以上。由于phase方法在phase內(nèi)部會轉(zhuǎn)入保持狀態(tài),停止了劃分調(diào)整,因而從遷移頁數(shù)和系統(tǒng)時間上都大幅減少。使用phase方法后,swim和applu的系統(tǒng)時間降至運行時間的1.5%以下,頁遷移數(shù)量也降到dyn方法時的1/6以下。本發(fā)明的有益效果在于1.總體性能改進使用本發(fā)明的方法在intel多核處理器的實機上完成的實驗表明,本文的方法比現(xiàn)有動態(tài)方法在吞吐率、加權(quán)加速比和公平加速比上平均有1.7%,2.7%和2.8%的提高(如附圖2),個別程序組的改進高達(dá)4.4%、13%和6%。2.減少的開銷動態(tài)劃分每次調(diào)整劃分都需要將數(shù)據(jù)從舊頁遷移到新頁,我們用遷移頁數(shù)和系統(tǒng)時間來考察這項開銷。由于green類程序多為數(shù)據(jù)集大的浮點程序,每次劃分調(diào)整涉及的物理頁數(shù)目大,遷移的耗時也多。如附圖3,swim和applu在dyn方法下遷移開銷明顯,系統(tǒng)時間占了快7%的運行時間,遷移頁的數(shù)量也150萬以上。由于phase方法在phase內(nèi)部會轉(zhuǎn)入保持狀態(tài),停止了劃分調(diào)整,因而從遷移頁數(shù)和系統(tǒng)時間上都大幅減少。使用Phase方法后,swim和applu的系統(tǒng)時間降至運行時間的1.5%以下,頁遷移數(shù)量也降到dyn方法時的1/6以下。通過結(jié)合附圖對本發(fā)明具體實施例的描述,本發(fā)明的其它方面及特征對本領(lǐng)域的技術(shù)人員而言是顯而易見的。以上對本發(fā)明的具體實施例進行了描述和說明,這些實施例應(yīng)被認(rèn)為其只是示例性的,并不用于對本發(fā)明進行限制,本發(fā)明應(yīng)根據(jù)所附的權(quán)利要求進行解釋。18權(quán)利要求一種基于phase分析的Cache動態(tài)劃分方法,其特征在于,包括下列步驟步驟000.啟動決策進程,系統(tǒng)狀態(tài)初始化為搜索狀態(tài)并構(gòu)建靜態(tài)搜索樹;啟動應(yīng)用程序進程;決策進程開始執(zhí)行步驟100到300的循環(huán),直至應(yīng)用程序進程結(jié)束;步驟100.劃分決策模塊讀取采樣數(shù)據(jù),并根據(jù)采樣數(shù)據(jù)識別出程序在當(dāng)前時間片下運行的phase號,并更新歷史記錄;步驟200,劃分決策模塊收集程序的當(dāng)前phase在搜索集下各劃分的性能數(shù)據(jù),根據(jù)phase分析結(jié)果和系統(tǒng)狀態(tài)確定下一時間片的Cache劃分;步驟300.當(dāng)前時間片的決策過程結(jié)束,確定出下一時間片的Cache劃分,再調(diào)用劃分執(zhí)行模塊完成cache劃分。2.根據(jù)權(quán)利要求1所述的基于phase分析的Cache動態(tài)劃分方法,其特征在于,所述步驟000,包括下列步驟步驟010.劃分空間為[1,n],靜態(tài)搜索樹的根結(jié)點為(η/4,η/2,3η/4),搜索步長為η/4,開始構(gòu)造子樹,輸入為中心點C、區(qū)域a[L,H]和步長s,其中中心點c即為根節(jié)點的3個劃分,區(qū)域a為子樹所含劃分范圍的上下界[L,H],將根結(jié)點3個劃分的c、a和s信息加入未構(gòu)造隊列;步驟020.判斷未構(gòu)造隊列是否為空,若是,則結(jié)束構(gòu)造;否則,執(zhí)行步驟030.步驟030.取出未構(gòu)造隊列的第一組構(gòu)造信息中心點C、區(qū)域a[L,H]和步長s,生成結(jié)點(l,c,h),若左右結(jié)點1和h超出區(qū)域則取區(qū)域邊界L和H,否則1=c-s/2,h=c+s/2,s=s/2,若s=1則表示當(dāng)前為葉子結(jié)點;否則將1,c,h的c、a和s加入未構(gòu)造隊列,返回步驟020。3.根據(jù)權(quán)利要求2所述的基于phase分析的Cache動態(tài)劃分方法,其特征在于,所述搜索樹是Cache劃分空間的多級的樹結(jié)構(gòu)表示,樹結(jié)點是有3個劃分的搜索集,同時有3個子結(jié)點,分別對應(yīng)3個搜索方向。4.根據(jù)權(quán)利要求1所述的基于phase分析的Cache動態(tài)劃分方法,其特征在于,所述步驟100,包括下列步驟步驟110,性能采集模塊周期采樣時間片內(nèi)的執(zhí)行PC,采樣周期為100萬條指令;步驟120,建立PC頻率向量,并歸一化;步驟130,在phase的歷史記錄中查找和當(dāng)前頻率向量的曼哈頓距離最近的phase,若該最近曼哈頓距離小于相似度閾值,則判定當(dāng)前時間片程序處于最近曼哈頓距離對應(yīng)的phase;若大于相似度閾值,則判定在當(dāng)前時間片程序進入新的phase,并分配新的phase編號和歷史記錄。5.根據(jù)權(quán)利要求1所述的基于phase分析的Cache動態(tài)劃分方法,其特征在于,所述步驟200,包括下列步驟步驟210.判斷系統(tǒng)狀態(tài);若為搜索狀態(tài),則執(zhí)行步驟220;若為保持狀態(tài),則執(zhí)行步驟[250;步驟220若歷史數(shù)據(jù)中已有當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能,執(zhí)行步驟230;否則執(zhí)行步驟240;步驟230從當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能中選出性能最優(yōu)者作為當(dāng)前最優(yōu)Cache劃分;步驟240若歷史數(shù)據(jù)中沒有全部的當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能,則從當(dāng)前搜索集中選出未搜索的Cache劃分為下一時間片的Cache劃分;步驟250.當(dāng)前為保持狀態(tài),若發(fā)現(xiàn)當(dāng)前phase沒有被搜索過而且出現(xiàn)頻率已經(jīng)超過熱度閾值,執(zhí)行步驟260;否則執(zhí)行步驟270;步驟260為當(dāng)前phase構(gòu)造搜索樹,下一時間片的Cache劃分為該搜索樹根結(jié)點上搜索集中離當(dāng)前Cache劃分最近的劃分,并將系統(tǒng)狀態(tài)設(shè)為搜索;步驟270繼續(xù)保持狀態(tài),下一時間片的Cache劃分仍為當(dāng)前Cache劃分。6.根據(jù)權(quán)利要求5所述的基于phase分析的Cache動態(tài)劃分方法,其特征在于,在步驟230中,若當(dāng)前搜索集在搜索樹中處于葉子結(jié)點,則當(dāng)前最優(yōu)Cache劃分為該phase的全局最優(yōu)Cache劃分,系統(tǒng)進入保持最優(yōu)Cache劃分的狀態(tài);否則將當(dāng)前搜索集的當(dāng)前最優(yōu)Cache劃分方向的子結(jié)點設(shè)為新的搜索集,并從新搜索集中選出離當(dāng)前最優(yōu)Cache劃分最近的Cache劃分為下一時間片的Cache劃分。7.根據(jù)權(quán)利要求5所述的基于phase分析的Cache動態(tài)劃分方法,其特征在于,所述步驟260,包括下列步驟步驟261.當(dāng)前劃分c,根結(jié)點搜索集(c-l,c,c+l),開始構(gòu)造孩子結(jié)點,輸入?yún)?shù)為開始點b,區(qū)域a[L,H]和搜索步長s,s的初始值為n/8,開始點為當(dāng)前搜索集各劃分,區(qū)域為子樹對應(yīng)的搜索范圍;將根結(jié)點中的初始開始點c-1和c+1的b、a和s信息加入未構(gòu)造隊列,開始點在當(dāng)前節(jié)點中的位置決定其子節(jié)點的拓展方向,如c-1就向劃分空間的右邊擴展,擴展的距離就是步長,所以c-1擴展生成的子節(jié)點為(C-1-2S,c-l-s,c-1),c+1生成的擴展節(jié)點為(c+1,c+l+s,c+l+2s),擴展范圍即區(qū)域a[L,H];步驟262.若未構(gòu)造隊列為空,則結(jié)束構(gòu)造;否則開始步驟263;步驟263.取出未構(gòu)造隊列的第一個構(gòu)造信息開始點b、區(qū)域[L,H]和步長s,根據(jù)步長改變條件調(diào)整步長,若b在區(qū)域的右端,生成結(jié)點(b-2s,b-s,b),若在左端,生成(b,b+s,b+2s),若b在區(qū)域中間則生成(b-s,b,b+s),若s為1則表示葉子結(jié)點構(gòu)造完成;否則將新生節(jié)點中非父節(jié)點的劃分的b、a和s加入未構(gòu)造隊列,轉(zhuǎn)到步驟262。8.一種基于phase分析的Cache動態(tài)劃分系統(tǒng),其特征在于,所述系統(tǒng),包括初始化模塊、劃分決策模塊、劃分執(zhí)行模塊和性能采樣模塊,其中初始化模塊,將系統(tǒng)狀態(tài)初始化為搜索狀態(tài)并構(gòu)建靜態(tài)搜索樹;同時啟動應(yīng)用程序進程;并觸發(fā)劃分決策模塊、劃分執(zhí)行模塊和性能采樣模塊,直至應(yīng)用程序進程結(jié)束;劃分決策模塊,用于啟動決策進程,收集程序的當(dāng)前phase在搜索集下各劃分的性能數(shù)據(jù),在時間片結(jié)束時根據(jù)phase分析結(jié)果和系統(tǒng)狀態(tài)確定下一時間片的Cache劃分,其余時間都處于休眠狀態(tài);所述劃分執(zhí)行模塊,當(dāng)前時間片的決策過程結(jié)束,確定出下一時間片的Cache劃分,再調(diào)用劃分執(zhí)行模塊完成cache劃分;性能采集模塊,通過讀取處理器硬件性能計數(shù)器,向決策模塊提供性能數(shù)據(jù)和Phase分析的輸入。9.根據(jù)權(quán)利要求8所述的基于phase分析的Cache動態(tài)劃分系統(tǒng),其特征在于,所述初始化模塊,包括搜索樹初始化模塊.劃分空間為[l,n],靜態(tài)搜索樹的根結(jié)點為(n/4,n/2,3n/4),搜索步長為n/4,開始構(gòu)造子樹,輸入為中心點C、區(qū)域a[L,H]和步長s,其中中心點c即為根節(jié)點的3個劃分,區(qū)域a為子樹所含劃分范圍的上下界[L,H],將根結(jié)點3個劃分的c、a和s信息加入未構(gòu)造隊列;判斷模塊.判斷未構(gòu)造隊列是否為空,若是,則結(jié)束構(gòu)造;否則,觸發(fā)搜索樹構(gòu)造模塊;搜索樹構(gòu)造模塊.取出未構(gòu)造隊列的第一組構(gòu)造信息中心點C、區(qū)域a[L,H]和步長s,生成結(jié)點(1,c,h),若左右結(jié)點1和h超出區(qū)域則取區(qū)域邊界L和H,否則1=c-s/2,h=c+s/2,s=s/2,若s=1則表示當(dāng)前為葉子結(jié)點;否則將1,c,h的C、3和s加入未構(gòu)造隊列,觸發(fā)判斷模塊。10.根據(jù)權(quán)利要求9所述的基于phase分析的Cache動態(tài)劃分系統(tǒng),其特征在于,所述搜索樹是Cache劃分空間的多級的樹結(jié)構(gòu)表示,樹結(jié)點是有3個劃分的搜索集,同時有3個子結(jié)點,分別對應(yīng)3個搜索方向。11.根據(jù)權(quán)利要求8所述的基于phase分析的Cache動態(tài)劃分系統(tǒng),其特征在于,所述性能采集模塊,包括PC采樣模塊,周期采樣時間片內(nèi)的執(zhí)行PC,采樣周期為100萬條指令;向量歸一化模塊,建立PC頻率向量,并歸一化;Phase識別模塊,在phase的歷史記錄中查找和當(dāng)前頻率向量的曼哈頓距離最近的phase,若該最近曼哈頓距離小于相似度閾值,則判定當(dāng)前時間片程序處于最近曼哈頓距離對應(yīng)的phase;若大于相似度閾值,則判定在當(dāng)前時間片程序進入新的phase,并分配新的phase編號和歷史記錄。12.根據(jù)權(quán)利要求8所述的基于phase分析的Cache動態(tài)劃分系統(tǒng),其特征在于,所述劃分決策模塊,包括狀態(tài)判斷模塊.判斷系統(tǒng)狀態(tài);若為搜索狀態(tài),則觸發(fā)搜索模塊;若為保持狀態(tài),則觸發(fā)閾值判斷模塊;搜索模塊,搜索歷史數(shù)據(jù)中是否已有當(dāng)前Phase在當(dāng)前搜索集中各Cache劃分下的性能,若有則觸發(fā)選擇模塊;否則觸發(fā)劃分選擇模塊;選擇模塊,從當(dāng)前phase在當(dāng)前搜索集中各Cache劃分下的性能中選出性能最優(yōu)者作為當(dāng)前最優(yōu)Cache劃分;劃分選擇模塊,若歷史數(shù)據(jù)中沒有全部的當(dāng)前Phase在當(dāng)前搜索集中各Cache劃分下的性能,則從當(dāng)前搜索集中選出未搜索的Cache劃分為下一時間片的Cache劃分;閾值判斷模塊,當(dāng)前為保持狀態(tài),若發(fā)現(xiàn)當(dāng)前Phase沒有被搜索過而且出現(xiàn)頻率已經(jīng)超過熱度閾值,觸發(fā)構(gòu)造模塊;否則觸發(fā)狀態(tài)維持模塊;構(gòu)造模塊,為當(dāng)前phase構(gòu)造搜索樹,下一時間片的Cache劃分為該搜索樹根結(jié)點上搜索集中離當(dāng)前Cache劃分最近的劃分,并將系統(tǒng)狀態(tài)設(shè)為搜索;狀態(tài)維持模塊,繼續(xù)保持狀態(tài),下一時間片的Cache劃分仍為當(dāng)前Cache劃分。13.根據(jù)權(quán)利要求12所述的基于phase分析的Cache動態(tài)劃分系統(tǒng),其特征在于,在所述選擇模塊中,若當(dāng)前搜索集在搜索樹中處于葉子結(jié)點,則當(dāng)前最優(yōu)Cache劃分為該phase的全局最優(yōu)Cache劃分,系統(tǒng)進入保持最優(yōu)Cache劃分的狀態(tài);否則將當(dāng)前搜索集的當(dāng)前最優(yōu)Cache劃分方向的子結(jié)點設(shè)為新的搜索集,并從新搜索集中選出離當(dāng)前最優(yōu)Cache劃分最近的Cache劃分為下一時間片的Cache劃分。14.根據(jù)權(quán)利要求12所述的基于phase分析的Cache動態(tài)劃分系統(tǒng),其特征在于,所述構(gòu)造模塊,包括輸入模塊,當(dāng)前劃分c,根結(jié)點搜索集(c-1,c,c+1),開始構(gòu)造孩子結(jié)點,輸入?yún)?shù)為開始點b,區(qū)域a[L,H]和搜索步長s,s的初始值為n/8,開始點為當(dāng)前搜索集各劃分,區(qū)域為子樹對應(yīng)的搜索范圍,將根結(jié)點中的初始開始點c-1和c+1的b、a和s信息加入未構(gòu)造隊列;,開始點在當(dāng)前節(jié)點中的位置決定其子節(jié)點的拓展方向,如c-1就向劃分空間的右邊擴展,擴展的距離就是步長,所以c-1擴展生成的子節(jié)點為(C-1-2S,c-l-s,c-1),c+1生成的擴展節(jié)點為(c+1,c+l+s,c+l+2s),擴展范圍即區(qū)域a[L,H];空項判斷模塊,判斷未構(gòu)造隊列是否為空,若是則結(jié)束構(gòu)造;否則觸發(fā)構(gòu)造子模塊;構(gòu)造子模塊,取出未構(gòu)造隊列的第一個構(gòu)造信息開始點b、區(qū)域[L,H]和步長s,根據(jù)步長改變條件調(diào)整步長,若b在區(qū)域的右端,生成結(jié)點(b-2s,b-s,b),若在左端,生成(b,b+s,b+2s),若b在區(qū)域中間則生成(b_s,b,b+s),若s為1則表示葉子結(jié)點構(gòu)造完成;否則將新生節(jié)點中非父節(jié)點的劃分的b、a和s加入未構(gòu)造隊列,觸發(fā)空項判斷模塊。全文摘要本發(fā)明公開了一種基于phase分析的cache動態(tài)劃分方法和系統(tǒng),所述方法,包括下列步驟啟動決策進程,系統(tǒng)狀態(tài)初始化為搜索狀態(tài)并構(gòu)建靜態(tài)搜索樹;啟動應(yīng)用程序進程;決策進程開始執(zhí)行步驟100到300的循環(huán),直至應(yīng)用程序進程結(jié)束;劃分決策模塊讀取采樣數(shù)據(jù),并根據(jù)采樣數(shù)據(jù)識別出程序在當(dāng)前時間片下運行的phase號,并更新歷史記錄;劃分決策模塊收集程序的當(dāng)前phase在搜索集下各劃分的性能數(shù)據(jù),根據(jù)phase分析結(jié)果和系統(tǒng)狀態(tài)確定下一時間片的Cache劃分;當(dāng)前時間片的決策過程結(jié)束,確定出下一時間片的Cache劃分,再調(diào)用劃分執(zhí)行模塊完成cache劃分。文檔編號G06F9/50GK101894048SQ20101021289公開日2010年11月24日申請日期2010年6月28日優(yōu)先權(quán)日2010年5月7日發(fā)明者徐地,李建軍,武成崗,王振江,米偉,賈耀倉申請人:中國科學(xué)院計算技術(shù)研究所
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1