欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

利用出入邊關(guān)系的剖分信息構(gòu)建超級(jí)塊的方法

文檔序號(hào):6482347閱讀:280來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):利用出入邊關(guān)系的剖分信息構(gòu)建超級(jí)塊的方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種利用出入邊關(guān)系的剖分信息構(gòu)建超級(jí)塊的方法,具體涉及一種利用在動(dòng)態(tài)二進(jìn)制翻譯器中產(chǎn)生的基于基本塊出邊與入邊之間關(guān)系的剖分信息構(gòu)建超級(jí)塊,優(yōu)化程序性能的方法,屬于二進(jìn)制翻譯技術(shù)領(lǐng)域。
背景技術(shù)
動(dòng)態(tài)二進(jìn)制翻譯是虛擬執(zhí)行技術(shù)中應(yīng)用最為廣泛的方法,是為遺留代碼提供移植可能性和提高軟件的平臺(tái)適應(yīng)性的一種有效手段,它在不需要可執(zhí)行程序的源代碼的情況下,可以動(dòng)態(tài)地將源機(jī)器平臺(tái)上的二進(jìn)制程序經(jīng)過(guò)轉(zhuǎn)換,運(yùn)行于其他目標(biāo)機(jī)器平臺(tái)上。對(duì)于動(dòng)態(tài)二進(jìn)制翻譯器自身而言,執(zhí)行性能是一個(gè)非常重要的衡量指標(biāo)。所謂執(zhí)行性能是指,以源程序在原架構(gòu)下運(yùn)行的效率為參照,其在動(dòng)態(tài)二進(jìn)制翻譯器提供的運(yùn)行環(huán)境下的效率損失度越低,翻譯器的執(zhí)行性能越好。
為提高翻譯器的執(zhí)行性能,動(dòng)態(tài)二進(jìn)制翻譯領(lǐng)域采用了很多原本在編譯技術(shù)中被使用的代碼優(yōu)化策略和方法,同時(shí)又發(fā)展出了一些動(dòng)態(tài)二進(jìn)制翻譯領(lǐng)域獨(dú)特的代碼優(yōu)化技術(shù)。其中,被廣泛采用的有,構(gòu)建超級(jí)塊,鏈接技術(shù)等。值得注意的是,大多數(shù)代碼優(yōu)化技術(shù)都是以獲得源程序的剖分信息為基礎(chǔ),通過(guò)分析這些信息再對(duì)代碼進(jìn)行不同的優(yōu)化。因此,如何獲得源程序的剖分信息以及應(yīng)該獲得哪些信息,對(duì)后續(xù)的代碼優(yōu)化策略的效果起著至關(guān)重要的影響。
就一般而言,在動(dòng)態(tài)二進(jìn)制翻譯領(lǐng)域,對(duì)源程序的翻譯、執(zhí)行或優(yōu)化等操作都是以源程序的基本塊為單位。所謂基本塊是指僅有單入口點(diǎn)和單出口點(diǎn)的一組指令序列,基本塊的入口點(diǎn)僅存在于此基本塊的開(kāi)始,基本塊的出口點(diǎn)僅存在于此基本塊的末尾,程序的執(zhí)行流從此基本塊的入口點(diǎn)進(jìn)入并執(zhí)行塊內(nèi)指令,之后從出口點(diǎn)離開(kāi)。動(dòng)態(tài)二進(jìn)制翻譯領(lǐng)域的剖分信息也是以基本塊為單位進(jìn)行獲取,主要是指源程序在運(yùn)行時(shí)產(chǎn)生的動(dòng)態(tài)信息,包括基本塊的執(zhí)行次數(shù)、基 本塊之間的關(guān)系等。所謂構(gòu)建超級(jí)塊是指根據(jù)已獲取的剖分信息,從現(xiàn)有的基 本塊中挑選若干塊組成基本塊序列,并按某種方式對(duì)這一序列重新組織,提高 程序執(zhí)行性能的優(yōu)化方法。
目前,剖分信息主要有三種類(lèi)型
1、 基于單個(gè)基本塊的剖分信息,即指以單個(gè)基本塊為單位,獲取其動(dòng)態(tài)執(zhí) 行的次數(shù)和其本身的一些屬性。這一類(lèi)型的剖分信息實(shí)現(xiàn)簡(jiǎn)單,執(zhí)行性能損失 較小,能體現(xiàn)單個(gè)基本塊在動(dòng)態(tài)環(huán)境中的某些情況。但是,它的缺點(diǎn)也顯而易 見(jiàn),信息量比較小,基本塊之間相對(duì)獨(dú)立,無(wú)法反映源程序的總體動(dòng)態(tài)情況, 不能為后續(xù)的優(yōu)化策略提供足夠和準(zhǔn)確的信息。
2、 基于邊的剖分信息,即指以某個(gè)基本塊與隨后的基本塊之間的邊為單位, 獲取此邊的執(zhí)行次數(shù)和屬性等信息。此類(lèi)剖分信息相對(duì)與基于單個(gè)基本塊的剖 分信息,信息更為豐富和準(zhǔn)確,能夠基本確定當(dāng)前基本塊和后一基本塊的關(guān)系, 為后續(xù)的優(yōu)化策略提供了額外的信息。但是,就某些特定的優(yōu)化策略而言(比 如,構(gòu)建較優(yōu)的超級(jí)塊),其信息量也顯得不足,因?yàn)榇祟?lèi)剖分信息只能反映 兩個(gè)基本塊之間的關(guān)系,并不能提供更豐富的源程序的動(dòng)態(tài)影像。
3、 基于路徑的剖分信息,是指根據(jù)源程序的控制流結(jié)構(gòu),以單條執(zhí)行流路 徑為單位,多個(gè)基本塊作為單條路徑上的端點(diǎn),記錄單條路徑的執(zhí)行次數(shù)和某 些屬性。這一類(lèi)型的剖分信息所提供的信息最為豐富,能準(zhǔn)確反映出源程序的 動(dòng)態(tài)執(zhí)行情況。然則,基于路徑的剖分信息實(shí)現(xiàn)難度頗大,執(zhí)行性能損失嚴(yán)重, 在動(dòng)態(tài)二進(jìn)制翻譯領(lǐng)域基本不被采用。
從上述的三種剖分信息可以看出,每種類(lèi)型都有其固有的優(yōu)缺點(diǎn),三者的信 息豐富程度呈遞增趨勢(shì),同時(shí),執(zhí)行性能損失度和實(shí)現(xiàn)復(fù)雜度也隨之增加。對(duì) 于前兩種剖分信息,它們的實(shí)現(xiàn)較簡(jiǎn)單,但是提供的信息十分有限,無(wú)法作為 構(gòu)建較優(yōu)超級(jí)塊的基礎(chǔ)。最后一種剖分信息雖然能提供大量的動(dòng)態(tài)信息,其執(zhí) 行性能損失將無(wú)法接受,或者說(shuō),在動(dòng)態(tài)二進(jìn)制翻譯領(lǐng)域,按照此種剖分信息構(gòu)建超級(jí)塊得來(lái)的執(zhí)行性能提高還不足以彌補(bǔ)為獲取這些信息所付出的執(zhí)行性 能損失。
因此需要發(fā)明一種新型的用于動(dòng)態(tài)二進(jìn)制翻譯的剖分信息產(chǎn)生方法,用以描 繪出具體的源程序動(dòng)態(tài)影像,并實(shí)現(xiàn)基于這種新的剖分信息構(gòu)建超級(jí)塊的方法, 以期能得到更大的執(zhí)行性能提高。這一新的剖分信息應(yīng)能滿(mǎn)足以下兩條要求 ①與前兩種剖分信息相比,信息更豐富,為后續(xù)更優(yōu)的超級(jí)塊構(gòu)建策略提供前 提;②與最后一種剖分信息相比,實(shí)現(xiàn)形式大大簡(jiǎn)單化,執(zhí)行性能損失度降低。

發(fā)明內(nèi)容
本發(fā)明的目的在于針對(duì)現(xiàn)有技術(shù)的不足和動(dòng)態(tài)二進(jìn)制翻譯器的特點(diǎn),提供一 種利用出入邊關(guān)系的剖分信息構(gòu)建超級(jí)塊的方法,以期能提高源程序在動(dòng)態(tài)二 進(jìn)制翻譯器中的執(zhí)行性能。
為實(shí)現(xiàn)上述目的,本發(fā)明結(jié)合目前存在的剖分信息產(chǎn)生方法的優(yōu)點(diǎn),摒棄了 它們固有的缺點(diǎn),重新設(shè)計(jì)了一種基于基本塊的出邊與入邊關(guān)系的剖分信息, 并實(shí)現(xiàn)了基于這些信息構(gòu)建超級(jí)塊的方法。本發(fā)明依托于動(dòng)態(tài)二進(jìn)制翻譯領(lǐng)域 廣泛使用的鏈接技術(shù),采用動(dòng)態(tài)記錄每個(gè)基本塊執(zhí)行次數(shù)、基本塊中出邊與入 邊的對(duì)應(yīng)關(guān)系,以及對(duì)應(yīng)某條入邊的各條出邊的執(zhí)行次數(shù)的方式,獲取豐富的 剖分信息,并以上述剖分信息為基礎(chǔ),實(shí)現(xiàn)了構(gòu)建超級(jí)塊的方法。
構(gòu)建超級(jí)塊可在兩種情況下進(jìn)行 一種情況是在源程序動(dòng)態(tài)執(zhí)行時(shí),在收 集剖分信息的同時(shí)構(gòu)建超級(jí)塊,稱(chēng)之為動(dòng)態(tài)構(gòu)建;另一種情況是單獨(dú)執(zhí)行一遍
源程序,專(zhuān)門(mén)收集其剖分信息,并將剖分信息和源程序翻譯后的基本塊保存下 來(lái),在靜態(tài)環(huán)境下根據(jù)剖分信息構(gòu)建超級(jí)塊,稱(chēng)之為靜態(tài)構(gòu)建。本發(fā)明只需做 較少修改,即可在這兩種情況下分別使用。
本發(fā)明的利用出入邊關(guān)系的剖分信息構(gòu)建超級(jí)塊的方法的具體步驟如下 1)出入邊關(guān)系的剖分信息架構(gòu)
在動(dòng)態(tài)二進(jìn)制翻譯領(lǐng)域,所謂基本塊的邊,是指執(zhí)行流從一個(gè)基本塊的出口 點(diǎn)離開(kāi),由另一個(gè)基本塊的入口點(diǎn)進(jìn)入,繼續(xù)執(zhí)行操作的形式表示。所謂基本 塊的出邊,是指就當(dāng)前基本塊而言,執(zhí)行流從當(dāng)前基本塊的出口點(diǎn)離開(kāi),進(jìn)入下個(gè)基本塊的邊。所謂基本塊的入邊,是指就當(dāng)前基本塊而言,執(zhí)行流離開(kāi)上 個(gè)基本塊,由當(dāng)前基本塊的入口點(diǎn)進(jìn)入的邊。所謂出入邊關(guān)系的剖分信息,是 指執(zhí)行流通過(guò)當(dāng)前基本塊時(shí),所經(jīng)過(guò)的當(dāng)前基本塊入邊和出邊的對(duì)應(yīng)關(guān)系,以 及這一過(guò)程的執(zhí)行次數(shù)。剖分信息數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)為以入邊為第一索引,出邊為 第二索引的雙重單向鏈表。
2) 出入邊關(guān)系的剖分信息的獲取
i、 實(shí)現(xiàn)一個(gè)剖分信息記錄函數(shù)或獨(dú)立線程,功能是對(duì)當(dāng)前基本塊的出入邊 關(guān)系和這一過(guò)程的發(fā)生次數(shù)進(jìn)行記錄,并保存在當(dāng)前塊的剖分信息數(shù)據(jù)結(jié)構(gòu)中。
ii、 在動(dòng)態(tài)二進(jìn)制翻譯器翻譯某個(gè)基本塊時(shí),在基本塊的開(kāi)頭插入指令,使 此塊在每次執(zhí)行前,都對(duì)一個(gè)記錄此塊的執(zhí)行次數(shù)的統(tǒng)計(jì)變量加一。
iii、 在翻譯器執(zhí)行當(dāng)前基本塊時(shí),根據(jù)動(dòng)態(tài)二進(jìn)制翻譯領(lǐng)域的鏈接技術(shù), 為上一基本塊做鏈接時(shí),在上一基本塊的鏈接項(xiàng)中添加指令,促使此鏈接項(xiàng)在 之后命中后,都會(huì)調(diào)用剖分信息記錄函數(shù)或激活剖分信息記錄線程,為上一基 本塊記錄出入邊關(guān)系的剖分信息。
iv、 在當(dāng)前基本塊第一次被執(zhí)行后,執(zhí)行流將回到翻譯器,翻譯器調(diào)用剖分 信息記錄函數(shù)或激活剖分信息記錄線程,初始化當(dāng)前塊的剖分信息數(shù)據(jù)結(jié)構(gòu)。
3) 設(shè)定構(gòu)建超級(jí)塊的條件①開(kāi)始?jí)K的執(zhí)行次數(shù)需高于事先設(shè)定的開(kāi)始?jí)K 執(zhí)行次數(shù)下限;②各個(gè)超級(jí)塊之間不能有重復(fù)的基本塊存在;③每個(gè)基本塊從 當(dāng)前入邊進(jìn)入,并從相應(yīng)出邊離開(kāi)的執(zhí)行次數(shù)不能低于事先設(shè)定的構(gòu)建邊執(zhí)行 次數(shù)下限;④構(gòu)建的超級(jí)塊塊序列所能包含的基本塊個(gè)數(shù)不能超過(guò)某一上限。
4) 在采用動(dòng)態(tài)構(gòu)建時(shí),某基本塊一旦滿(mǎn)足條件①②,則將此基本塊作為開(kāi) 始?jí)K;在采用靜態(tài)構(gòu)建時(shí),根據(jù)每個(gè)基本塊的執(zhí)行次數(shù),將基本塊按降序排列, 從排序完的第一個(gè)基本塊開(kāi)始,逐個(gè)進(jìn)行判斷是否滿(mǎn)足條件①②,將滿(mǎn)足條件 的基本塊作為開(kāi)始?jí)K。
5) 將開(kāi)始?jí)K記錄為塊序列首個(gè)元素,從開(kāi)始?jí)K的剖分信息中統(tǒng)計(jì)出每個(gè)出 邊的執(zhí)行次數(shù),選擇次數(shù)最多者作為構(gòu)建邊。6) 檢査構(gòu)建邊是否滿(mǎn)足條件③,如滿(mǎn)足,將構(gòu)建邊所指向的基本塊作為當(dāng) 前塊,并將構(gòu)建邊作為當(dāng)前塊的選定入邊;如不滿(mǎn)足,停止此超級(jí)塊構(gòu)建過(guò)程, 跳至步驟8)。
7) 檢查當(dāng)前塊是否滿(mǎn)足條件②以及塊序列是否滿(mǎn)足條件④,如滿(mǎn)足,將當(dāng) 前塊添加至塊序列末尾,根據(jù)當(dāng)前塊的選定入邊,査找當(dāng)前塊的剖分信息,在 選定入邊對(duì)應(yīng)的出邊中選定執(zhí)行次數(shù)最多的出邊,作為繼續(xù)構(gòu)建超級(jí)塊的構(gòu)建 邊,返回步驟6)。
8) 在采用動(dòng)態(tài)構(gòu)建時(shí),根據(jù)所得的塊序列,完成重新組織和優(yōu)化過(guò)程,并 返回步驟4)繼續(xù)構(gòu)建下個(gè)超級(jí)塊的塊序列;在采用靜態(tài)優(yōu)化時(shí),將塊序列保 存,返回步驟4)繼續(xù)構(gòu)建下個(gè)超級(jí)塊的塊序列,等遍歷完所有塊后,再根據(jù)獲 取的所有塊序列,完成重新組織和優(yōu)化過(guò)程。
本發(fā)明的利用出入邊關(guān)系的剖分信息構(gòu)建超級(jí)塊的方法具有實(shí)質(zhì)性進(jìn)步和 顯著的優(yōu)點(diǎn)
① 與基于單個(gè)基本塊的剖分信息、基于邊的剖分信息相比較,基于出入邊關(guān) 系的剖分信息獲得的信息更詳盡準(zhǔn)確,能真實(shí)反映一個(gè)基本塊在整個(gè)源程序中 的執(zhí)行情況,為后續(xù)的超級(jí)塊構(gòu)建過(guò)程提供了足夠的信息;
② 與基于路徑的剖分信息想比較,基于出入邊關(guān)系的剖分信息大大簡(jiǎn)化了實(shí) 現(xiàn)難度,降低了獲得剖分信息過(guò)程所必須付出的執(zhí)行性能損失;
(D為后續(xù)的超級(jí)塊構(gòu)建過(guò)程提供了準(zhǔn)確豐富的信息,使優(yōu)化效果明顯; ④機(jī)制靈活多變,可選擇性的為動(dòng)態(tài)構(gòu)建和靜態(tài)構(gòu)建提供不同程度的信息和
不同強(qiáng)度的優(yōu)化效果。


圖1為本發(fā)明采用的出入邊關(guān)系的剖分信息的數(shù)據(jù)結(jié)構(gòu)圖。
具體實(shí)施例方式
為更好地理解本發(fā)明的技術(shù)方案,以下結(jié)合附圖并通過(guò)具體的實(shí)施例作進(jìn)一 步描述。以下實(shí)施例不構(gòu)成對(duì)本發(fā)明的限定。CrossBit是一個(gè)動(dòng)態(tài)二進(jìn)制翻譯系統(tǒng),它可以為執(zhí)行在多種不同體系結(jié)構(gòu) 的源程序,通過(guò)翻譯和優(yōu)化的方法,提供異構(gòu)架構(gòu)下的執(zhí)行環(huán)境。在目前階段 的Crossbit中,實(shí)現(xiàn)了鏈接技術(shù),并搭建了一個(gè)動(dòng)靜結(jié)合的優(yōu)化執(zhí)行框架。其 中,動(dòng)靜結(jié)合的優(yōu)化執(zhí)行框架是首先在Crossbit上執(zhí)行一遍源程序,之后將翻 譯后的代碼塊和捕獲到的剖分信息保存下來(lái),在靜態(tài)根據(jù)剖分信息對(duì)代碼塊進(jìn) 行優(yōu)化,產(chǎn)生優(yōu)化后代碼和預(yù)測(cè)信息,在下次Crossbit執(zhí)行此源程序時(shí),加載 優(yōu)化過(guò)的代碼和預(yù)測(cè)信息,提高源程序的執(zhí)行性能。為簡(jiǎn)化實(shí)現(xiàn),本實(shí)施例依 托于Crossbit的動(dòng)靜結(jié)合的優(yōu)化執(zhí)行框架實(shí)現(xiàn),同時(shí)依附于鏈接技術(shù)中的鏈接 項(xiàng)進(jìn)行剖分信息的產(chǎn)生,并靜態(tài)構(gòu)建超級(jí)塊。
1)出入邊關(guān)系的剖分信息架構(gòu)
在動(dòng)態(tài)二進(jìn)制翻譯領(lǐng)域,所謂基本塊的邊,是指執(zhí)行流從一個(gè)基本塊的出口 點(diǎn)離開(kāi),由另一個(gè)基本塊的入口點(diǎn)進(jìn)入,繼續(xù)執(zhí)行操作的形式表示。所謂基本 塊的出邊,是指就當(dāng)前基本塊而言,執(zhí)行流從當(dāng)前基本塊的出口點(diǎn)離開(kāi),進(jìn)入 下個(gè)基本塊的邊。所謂基本塊的入邊,是指就當(dāng)前基本塊而言,執(zhí)行流離開(kāi)上 個(gè)基本塊,由當(dāng)前基本塊的入口點(diǎn)進(jìn)入的邊。所謂出入邊關(guān)系的剖分信息,是 指執(zhí)行流通過(guò)當(dāng)前基本塊時(shí),所經(jīng)過(guò)的當(dāng)前基本塊入邊和出邊的對(duì)應(yīng)關(guān)系,以 及這一過(guò)程的執(zhí)行次數(shù)。剖分信息數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)為以入邊為第一索引,出邊為 第二索引的雙重單向鏈表。
2)出入邊關(guān)系的剖分信息的獲取和保存
i、采用雙重單向鏈表結(jié)構(gòu),設(shè)計(jì)出入邊關(guān)系的剖分信息數(shù)據(jù)結(jié)構(gòu),如圖1。 其中,入邊信息框中每一項(xiàng)標(biāo)識(shí)了每條入邊的信息第一個(gè)元素(Pre一SPC)標(biāo) 識(shí)了此入邊的來(lái)源,即用執(zhí)行流中上一基本塊的源程序入口地址(SPC,基本塊 的唯一標(biāo)識(shí))標(biāo)識(shí)此入邊;第二個(gè)元素(Next—pre)是將本基本塊的各個(gè)入邊 鏈接起來(lái)的指針;第三個(gè)元素(Post—chain)是指向此入邊對(duì)應(yīng)的各個(gè)出邊的 鏈表的頭指針。而出邊信息框中,表示了針對(duì)一條入邊,其已經(jīng)經(jīng)過(guò)的出邊的 鏈表,其中每一項(xiàng)標(biāo)識(shí)了一條出邊的信息第一個(gè)元素(Post一SPC)標(biāo)識(shí)了此 出邊的去向,即用執(zhí)行流中下一基本塊的源程序入口地址(SPC)標(biāo)識(shí)此出邊;第二個(gè)元素(Next—post)是將本入邊的各個(gè)出邊鏈接起來(lái)的指針;第三個(gè)元素 (Times)是記錄這一入邊出邊組合執(zhí)行的次數(shù)。
ii、 為簡(jiǎn)化實(shí)現(xiàn),本實(shí)例設(shè)計(jì)了一個(gè)剖分信息記錄函數(shù),功能是對(duì)當(dāng)前基 本塊的入邊出邊組合進(jìn)行初始化并記錄其執(zhí)行次數(shù),函數(shù)命名為collectlnfo。
iii、 為每個(gè)基本塊維護(hù)一個(gè)變量,用以記錄每個(gè)基本塊的執(zhí)行次數(shù),稱(chēng)之 為run—count。在Crossbit翻譯某個(gè)基本塊時(shí),在基本塊的開(kāi)頭插入加一指令, 使此塊在每次執(zhí)行時(shí),都對(duì)一個(gè)自身的run_COunt變量加一。
iv、 在翻譯器執(zhí)行當(dāng)前基本塊時(shí),根據(jù)動(dòng)態(tài)二進(jìn)制翻譯領(lǐng)域的鏈接技術(shù), 為上一基本塊做鏈接時(shí),在上一基本塊的鏈接項(xiàng)中添加指令,促使此鏈接項(xiàng)在 之后命中后,都會(huì)調(diào)用collectlnfo函數(shù),為上一基本塊記錄出入邊關(guān)系的剖 分信息。添加的指令包括①push指令,將此次出邊的SPC作為參數(shù)傳遞;② call指令,調(diào)用collectlnfo函數(shù);③add指令,將調(diào)用返回后的棧指針調(diào)回 原樣,保持調(diào)用前后的棧指針一致性。
v、 在collectlnfo函數(shù)被調(diào)用后,根據(jù)Crossbit提供的全局變量prej)lock (保存了本次調(diào)用collectlnfo的基本塊的上一塊的SPC)確定此次調(diào)用的入邊
的SPC,然后根據(jù)參數(shù)傳遞所得的出邊的SPC,構(gòu)建入邊出邊對(duì)。通過(guò)此入邊出 邊對(duì)查找現(xiàn)存的剖分信息鏈表,如果未找到,則初始化此入邊出邊對(duì),否則將 其的times力口一。
vi、 在當(dāng)前基本塊第一次被執(zhí)行后,執(zhí)行流將回到Crossbit, Crossbit將 甄別返回的原因。如果是因?yàn)橐幚硐到y(tǒng)調(diào)用返回Crossbit,則將全局變量 pre—block置空,開(kāi)始處理系統(tǒng)調(diào)用。否則,Crossbit調(diào)用collectlnfo函數(shù), 初始化當(dāng)前塊的入邊出邊對(duì)的剖分信息,之后將全局變量pre—block置為當(dāng)前 塊。
vii、 當(dāng)源程序執(zhí)行完成,Crossbit將根據(jù)動(dòng)靜結(jié)合的優(yōu)化執(zhí)行框架的實(shí)
現(xiàn)將剖分信息和翻譯后基本塊保存為文件,在進(jìn)入靜態(tài)優(yōu)化階段時(shí)加載使用。 3)設(shè)置構(gòu)建超級(jí)塊的條件①超級(jí)塊開(kāi)始?jí)K的執(zhí)行次數(shù)需高于1000次;
②各個(gè)超級(jí)塊之間不能有重復(fù)的基本塊存在;③每個(gè)基本塊從當(dāng)前入邊進(jìn)入并
10從相應(yīng)出邊離開(kāi)的執(zhí)行次數(shù),即times值大于200次;④超級(jí)塊所能包含的基 本塊個(gè)數(shù)不能超過(guò)100個(gè)。
4) 根據(jù)每個(gè)基本塊的rim—coimt值,將基本塊按降序排列,從排序完的第 一個(gè)基本塊開(kāi)始,逐個(gè)進(jìn)行判斷是否滿(mǎn)足條件①②,將滿(mǎn)足條件的基本塊作為 開(kāi)始?jí)K,進(jìn)行超級(jí)塊構(gòu)建過(guò)程。
5) 將開(kāi)始?jí)K記錄為塊序列首個(gè)元素,開(kāi)始?jí)K的剖分信息中的所有times按 不同的Post—SPC值進(jìn)行統(tǒng)計(jì),選擇次數(shù)最多的Post_SPC作為構(gòu)建邊。
6) 檢査構(gòu)建邊是否滿(mǎn)足條件③,即選定的Post—SPC項(xiàng)的times值是否大 于200,如滿(mǎn)足,將構(gòu)建邊所指向的基本塊作為當(dāng)前塊,并將構(gòu)建邊作為當(dāng)前塊 的選定入邊;如不滿(mǎn)足,停止此超級(jí)塊構(gòu)建過(guò)程,跳至步驟8)。
7) 檢査當(dāng)前塊是否滿(mǎn)足條件②,即檢測(cè)當(dāng)前塊狀態(tài)是否是非0P_SuperblOCk (0P_Superblock表示當(dāng)前塊已包含在某個(gè)超級(jí)塊中,非OP—Superblock表示當(dāng)
前塊可以作為此次構(gòu)建超級(jí)塊的候選塊,由此避免同一個(gè)基本塊被多個(gè)超級(jí)塊 包含),同時(shí)檢査塊序列是否滿(mǎn)足條件④,即檢查當(dāng)前塊序列中的基本塊數(shù)量 是否小于100個(gè),如都滿(mǎn)足,將當(dāng)前塊添加至塊序列末尾,修改當(dāng)前塊狀態(tài)為 OP—Superblock,根據(jù)當(dāng)前塊的選定入邊査找當(dāng)前塊的剖分信息,在選定入邊對(duì) 應(yīng)的出邊中選定執(zhí)行次數(shù)最多的出邊,作為繼續(xù)構(gòu)建超級(jí)塊的構(gòu)建邊,跳至步 驟6);
8) 將塊序列保存,返回步驟4)繼續(xù)構(gòu)建下個(gè)超級(jí)塊的塊序列,等遍歷完 所有塊后,再根據(jù)獲取的所有塊序列,完成重新組織和優(yōu)化過(guò)程。
權(quán)利要求
1、一種利用出入邊關(guān)系的剖分信息構(gòu)建超級(jí)塊的方法,其特征在于包括如下步驟1)定義基本塊的邊為執(zhí)行流從一個(gè)基本塊的出口點(diǎn)離開(kāi),由另一個(gè)基本塊的入口點(diǎn)進(jìn)入,繼續(xù)執(zhí)行操作的形式表示;基本塊的出邊為就當(dāng)前基本塊而言,執(zhí)行流從當(dāng)前基本塊的出口點(diǎn)離開(kāi),進(jìn)入下個(gè)基本塊的邊;基本塊的入邊為就當(dāng)前基本塊而言,執(zhí)行流離開(kāi)上個(gè)基本塊,由當(dāng)前基本塊的入口點(diǎn)進(jìn)入的邊;出入邊關(guān)系的剖分信息為執(zhí)行流通過(guò)當(dāng)前基本塊時(shí),所經(jīng)過(guò)的當(dāng)前基本塊入邊和出邊的對(duì)應(yīng)關(guān)系,以及這一過(guò)程的執(zhí)行次數(shù);剖分信息數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)為以入邊為第一索引,出邊為第二索引的雙重單向鏈表;2)實(shí)現(xiàn)一個(gè)剖分信息記錄函數(shù)或獨(dú)立線程,對(duì)當(dāng)前基本塊的出入邊關(guān)系和這一過(guò)程的發(fā)生次數(shù)進(jìn)行記錄,并保存在當(dāng)前塊的剖分信息數(shù)據(jù)結(jié)構(gòu)中;在動(dòng)態(tài)二進(jìn)制翻譯器翻譯某個(gè)基本塊時(shí),在基本塊的開(kāi)頭插入指令,使此塊在每次執(zhí)行前,對(duì)一個(gè)記錄此塊的執(zhí)行次數(shù)的統(tǒng)計(jì)變量加一;在翻譯器執(zhí)行當(dāng)前基本塊時(shí),根據(jù)動(dòng)態(tài)二進(jìn)制翻譯領(lǐng)域的鏈接技術(shù),為上一基本塊做鏈接時(shí),在上一基本塊的鏈接項(xiàng)中添加指令,使此鏈接項(xiàng)在之后命中后,調(diào)用剖分信息記錄函數(shù)或激活剖分信息記錄線程,為上一基本塊記錄出入邊關(guān)系的剖分信息;在當(dāng)前基本塊第一次被執(zhí)行后,執(zhí)行流回到翻譯器,翻譯器調(diào)用剖分信息記錄函數(shù)或激活剖分信息記錄線程,初始化當(dāng)前塊的剖分信息數(shù)據(jù)結(jié)構(gòu);3)設(shè)定構(gòu)建超級(jí)塊的條件①開(kāi)始?jí)K的執(zhí)行次數(shù)需高于事先設(shè)定的開(kāi)始?jí)K執(zhí)行次數(shù)下限,②各個(gè)超級(jí)塊之間不能有重復(fù)的基本塊存在,③每個(gè)基本塊從當(dāng)前入邊進(jìn)入并從相應(yīng)出邊離開(kāi)的執(zhí)行次數(shù)不能低于事先設(shè)定的構(gòu)建邊執(zhí)行次數(shù)下限,④構(gòu)建的超級(jí)塊塊序列所能包含的基本塊個(gè)數(shù)不能超過(guò)某一上限;4)在采用動(dòng)態(tài)構(gòu)建時(shí),某基本塊一旦滿(mǎn)足條件①②,則將此基本塊作為開(kāi)始?jí)K,在采用靜態(tài)構(gòu)建時(shí),根據(jù)每個(gè)基本塊的執(zhí)行次數(shù),將基本塊按降序排列,從排序完的第一個(gè)基本塊開(kāi)始,逐個(gè)進(jìn)行判斷是否滿(mǎn)足條件①②,將滿(mǎn)足條件的基本塊作為開(kāi)始?jí)K;5)將開(kāi)始?jí)K記錄為塊序列首個(gè)元素,從開(kāi)始?jí)K的剖分信息中統(tǒng)計(jì)出每個(gè)出邊的執(zhí)行次數(shù),選擇次數(shù)最多者作為構(gòu)建邊;6)檢查構(gòu)建邊是否滿(mǎn)足條件③,如滿(mǎn)足,將構(gòu)建邊所指向的基本塊作為當(dāng)前塊,并將構(gòu)建邊作為當(dāng)前塊的選定入邊;如不滿(mǎn)足,停止此超級(jí)塊構(gòu)建過(guò)程,跳至步驟8);7)檢查當(dāng)前塊是否滿(mǎn)足條件②以及塊序列是否滿(mǎn)足條件④,如滿(mǎn)足,將當(dāng)前塊添加至塊序列末尾,根據(jù)當(dāng)前塊的選定入邊查找當(dāng)前塊的剖分信息,在選定入邊對(duì)應(yīng)的出邊中選定執(zhí)行次數(shù)最多的出邊,作為繼續(xù)構(gòu)建超級(jí)塊的構(gòu)建邊,返回步驟6);8)在采用動(dòng)態(tài)構(gòu)建時(shí),根據(jù)所得的塊序列,完成重新組織和優(yōu)化過(guò)程,并返回步驟4)繼續(xù)構(gòu)建下個(gè)超級(jí)塊的塊序列;在采用靜態(tài)優(yōu)化時(shí),將塊序列保存,返回步驟4)繼續(xù)構(gòu)建下個(gè)超級(jí)塊的塊序列,等遍歷完所有塊后,再根據(jù)獲取的所有塊序列,完成重新組織和優(yōu)化過(guò)程。
全文摘要
本發(fā)明涉及一種利用出入邊關(guān)系的剖分信息構(gòu)建超級(jí)塊的方法。在動(dòng)態(tài)二進(jìn)制翻譯器中,采用動(dòng)態(tài)記錄每個(gè)基本塊執(zhí)行次數(shù)、基本塊中出邊與入邊的對(duì)應(yīng)關(guān)系,以及對(duì)應(yīng)某條入邊的各條出邊的執(zhí)行次數(shù)的方式,獲取豐富的剖分信息,并以上述剖分信息為基礎(chǔ)構(gòu)建超級(jí)塊,以?xún)?yōu)化程序性能。本發(fā)明獲得的剖分信息更詳盡準(zhǔn)確,能真實(shí)反映一個(gè)基本塊在整個(gè)源程序中的執(zhí)行情況,降低了獲得剖分信息過(guò)程所必須付出的執(zhí)行性能損失,為后續(xù)的超級(jí)塊構(gòu)建過(guò)程提供了準(zhǔn)確豐富的信息,使優(yōu)化效果明顯;機(jī)制靈活多變,可選擇性的為動(dòng)態(tài)構(gòu)建和靜態(tài)構(gòu)建提供不同程度的信息,獲得不同強(qiáng)度的優(yōu)化效果。
文檔編號(hào)G06F9/45GK101488096SQ20091004635
公開(kāi)日2009年7月22日 申請(qǐng)日期2009年2月19日 優(yōu)先權(quán)日2009年2月19日
發(fā)明者超 徐, 梁阿磊, 管海兵, 鄭舉育, 顧靜輝 申請(qǐng)人:上海交通大學(xué)
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
海安县| 庆阳市| 江都市| 宜良县| 武定县| 衡阳市| 长阳| 杭锦旗| 栾城县| 慈利县| 平舆县| 菏泽市| 英吉沙县| 平潭县| 钦州市| 昌邑市| 徐汇区| 福鼎市| 松原市| 綦江县| 云梦县| 荆州市| 石楼县| 两当县| 莱阳市| 定日县| 祁门县| 罗江县| 察隅县| 三亚市| 布拖县| 延川县| 宝坻区| 康定县| 永宁县| 郁南县| 峡江县| 芷江| 井冈山市| 文山县| 南皮县|