專利名稱:基于代碼復制超級塊的程序執(zhí)行優(yōu)化方法
技術(shù)領域:
本發(fā)明涉及的是一種計算機技術(shù)領域的方法,具體是一種二進制系統(tǒng)中的基于代 碼復制超級塊的程序執(zhí)行優(yōu)化方法。
背景技術(shù):
動態(tài)二進制翻譯是虛擬執(zhí)行技術(shù)中應用最為廣泛的方法,是為遺留代碼提供移植 可能性和提高軟件的平臺適應性的一種有效手段,它在不需要可執(zhí)行程序的源代碼的情況 下,可以動態(tài)地將源機器平臺上的二進制程序經(jīng)過轉(zhuǎn)換,運行于其他目標機器平臺上。對于 動態(tài)二進制翻譯器自身而言,執(zhí)行性能是一個非常重要的衡量指標。所謂執(zhí)行性能是指,以 源程序在原架構(gòu)下運行的效率為參照,其在動態(tài)二進制翻譯器提供的運行環(huán)境下的效率損 失度越低,翻譯器的執(zhí)行性能越好。為了提高動態(tài)二進制翻譯器的性能,動態(tài)翻譯器采用很多原本在編譯領域被廣泛 采用的策略和方法,鑒于動態(tài)二進制翻譯與編譯技術(shù)相比缺少源代碼資源的特性,所以也 發(fā)展出來了動態(tài)二進制領域所特有的優(yōu)化技術(shù)和方法。其中被廣泛采用的有超級塊生成技 術(shù)、鏈接技術(shù)等。在動態(tài)二進制領域,因為沒有源代碼,對程序所進行的優(yōu)化等所需要的大 部分信息都是通過程序的剖分信息來獲取的。一般來說,在動態(tài)二進制領域,對源程序的翻譯,執(zhí)行,優(yōu)化等操作都是以源程序 的基本塊為單位進行的。所謂基本塊,是指僅有一個入口,并且以跳轉(zhuǎn),返回等指令結(jié)束的 一組指令序列。程序從基本塊的入口開始執(zhí)行,然后,最終在基本塊的出口跳出,并跳到另 外一個基本塊的入口繼續(xù)執(zhí)行指令序列。程序的剖分信息的獲取就是以基本塊為單位進行 的,包括基本塊的執(zhí)行次數(shù),跳轉(zhuǎn)地址等等一系列信息。所謂超級塊,根據(jù)已獲取的剖分信 息,按一定的規(guī)則挑選指定的幾個基本塊序列重新組合,形成的更長的指令序列,用以提高 程序的性能。它除了比基本塊長以外,還兼有多個出口的特性。剖分信息的分類,主要有如下三種1、基于基本塊的信息收集,也就是基本塊運行特性信息的收集,基本上局限于基 本塊的運行次數(shù),和跳轉(zhuǎn)目標塊等粗略信息。雖說它收集的信息較為粗略,但是,它給系統(tǒng) 的開銷比較小,所以,它在性能要求比較高的動態(tài)的系統(tǒng)中應用的比較多。2、基于邊的信息收集,S卩,以一個基本塊以及隨后的基本塊組合而成的邊為基本 的信息收集單位?;谶叺男畔⑹占然趬K的要豐富一些,也能更好的描述程序的行為 特征。但是,隨之而來的也是對系統(tǒng)帶來的開銷也是比較大的。3、基于路徑的信息收集。根據(jù)程序的控制流圖進行,以單條執(zhí)行路徑為單位進行 信息收集。這樣的信息收集方式可以最接近程序真實的描述程序的行為特征。但是,它所付 出的代價也是最大的.由于它龐大的系統(tǒng)開銷,在動態(tài)二進制翻譯器中,基本上不被采用.對于有中間語言的動態(tài)二進制翻譯器來說,比如valgrind,UQDBT,構(gòu)造超級塊都 傾向于在自身定義的中間語言,利用程序收集的信息,結(jié)合特定的算法進行。然后,再集中 放到后端翻譯成目標代碼。一般的有中間語言的超級塊構(gòu)造方法流程如下
1)利用上所述的三種種類信息收集方法,對信息進行采集。一般來說,一個翻譯好 的基本塊對應有一個對象對它的信息進行維護。通過上述的三種方法收集的信息一般來說 是存放在各自的對象中。2)當滿足一定的條件,比如達到閾值等,程序就會觸發(fā)超級塊的構(gòu)造例程,因為有 中間語言,所以,程序就先把一個一個的源程序基本塊經(jīng)過一定的處理,比如跳轉(zhuǎn)反轉(zhuǎn)等, 按照一定的算法翻譯成一個大的中間語言程序塊,然后在翻譯成一個大的目標程序塊,也 就是超級塊。3)最后就是程序跳到翻譯好的目標程序超級塊進行執(zhí)行。經(jīng)對現(xiàn)有文獻檢索發(fā)現(xiàn),中國專利文獻號CN101387970A,
公開日2009_3_18,記載 了一種“利用剖分信息生成超級塊的方法”,該技術(shù)詳細介紹了二進制翻譯領域中Crossbit 的構(gòu)造超級塊的一般流程。但是該技術(shù)有一個不容忽視的問題在構(gòu)造超級塊的過程中,當 一個基本塊在多個超級塊中都是被需要時,勢必會造成除了只有一個被利用外,另外的超 級塊都因為缺少當前塊而被中間截斷,產(chǎn)生多個較短超級塊,或者基本塊碎片。另經(jīng)檢索發(fā)現(xiàn),中國專利文獻號CN101488096A,
公開日2009_7_22,記載了一種 “利用出入邊關系的部分信息構(gòu)建超級塊的方法”,該技術(shù)采用的是基于入邊和出邊的部分 信息來構(gòu)造超級塊的方法,但是該方法在構(gòu)造超級塊的過程中容易產(chǎn)生重復,從而使得基 本塊的數(shù)量龐大。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)的上述不足,提供一種基于代碼復制超級塊的程 序執(zhí)行優(yōu)化方法,通過基本塊代碼復制來生成超級塊,使得基本塊的長度變長,基本塊的數(shù) 量減少,從而提高生成的超級塊的質(zhì)量,且可移植性好。本發(fā)明是通過以下技術(shù)方案實現(xiàn)的,本發(fā)明通過將程序劃分后插入探測指令并構(gòu) 造得到中間語言超級塊,然后設置生成中間語言超級塊的平衡機制參數(shù)并進行篩選指導處 理;并將中間語言超級塊翻譯成目標超級塊,供二進制翻譯器執(zhí)行,具體包括以下步驟第一步,對程序指令進行劃分處理,得到若干基本塊。所述的劃分處理是指將第i個跳轉(zhuǎn)指令和第i + Ι個跳轉(zhuǎn)指令之間的指令序列作 為一個基本塊,其中i表示程序中跳轉(zhuǎn)指令序號,它是從1開始到整個程序中跳轉(zhuǎn)指令個 數(shù)之間的正整數(shù)。第二步,在每個基本塊的頭部插入一個探測指令。所述的探測指令是探測構(gòu)造超級塊的頭塊或者是觸發(fā)構(gòu)造超級塊例程。第三步,構(gòu)造中間語言超級塊,并實時記錄該中間語言超級塊所對應的參數(shù)。所述的構(gòu)造中間語言超級塊是指當一個基本塊的探測指令觸發(fā)構(gòu)造超級塊歷程 的時候,程序?qū)⑼ㄟ^查詢系統(tǒng)記錄的信息,找到符合條件的中間語言塊,并將跳轉(zhuǎn)指令部分 進行一定的處理后,羅列到一起,形成一個中間語言超級塊。所述的參數(shù)包括基本塊被共享的次數(shù)、超級塊被共享的次數(shù)、超級塊嵌套的含有 超級塊的層數(shù)、超級塊中自體成員基本塊的重復次數(shù)之和以及當前正在構(gòu)造的超級塊中的 自體成員超級塊的重復次數(shù)之和。第四步,設置生成中間語言超級塊的平衡機制參數(shù)并進行篩選指導處理;
4
所述的平衡機制參數(shù)包括添加超級塊探測代碼標示、超級塊嵌套層數(shù)參數(shù)、基本 塊的重復頻度、自體基本塊重復頻度和超級塊重復頻度。所述的篩選指導處理包括以下步驟1)在每一個基本塊在翻譯系統(tǒng)的記錄對象中,增加相應的域,用來記錄上述參 數(shù);2)指定的域設定相應的閾值,閾值的設定因程序行為特性的不同會有所不同;3)在構(gòu)造中間語言超級塊的時候?qū)⑵胶鈾C制參數(shù)進行監(jiān)控,更新;4)基本塊或超級塊進行加入探測代碼或者構(gòu)造中間語言超級塊的過程中,當參數(shù) 違反設定的閾值條件時終止當前操作。第五步,將中間語言超級塊作為一個翻譯單位一次性翻譯成目標超級塊,然后存 儲于內(nèi)存指定位置并記錄該目標超級塊的內(nèi)存地址,最后將二進制翻譯器將該內(nèi)存地址作 為函數(shù)入口并直接跳轉(zhuǎn)到該內(nèi)存地址處執(zhí)行目標超級塊所對應的二進制指令,實現(xiàn)程序執(zhí) 行優(yōu)化。與傳統(tǒng)技術(shù)相比,本發(fā)明優(yōu)勢主要體現(xiàn)在,1)從第一條超級塊內(nèi)部指令開始,到最 終一條跳出指令內(nèi)存地址跨度比較大;2)從第一條指令開始到最后一條指令結(jié)束,此超級 塊中含有重復的基本塊序列,也即在內(nèi)存中表現(xiàn)為兩條緊挨的跳轉(zhuǎn)指令之間的指令序列會 在超級塊中重復出現(xiàn);3)從第一條指令開始到最后一條指令結(jié)束,此超級塊中含有重復的 超級塊序列,也即在內(nèi)存中表現(xiàn)為兩條非緊挨的跳轉(zhuǎn)指令之間的指令序列會在超級塊中重 復出現(xiàn);4)在整個內(nèi)存空間來看,基本塊,超級塊的整體數(shù)量比較少,內(nèi)存中指令存放的比 較集中,當然因為長度變長了,相應的整個程序塊所占用的內(nèi)存空間也比傳統(tǒng)的方法要大 一些5)對于機器的指令讀取來說,因為超級塊長度長了,程序會更長時間地停留在超級塊 內(nèi)部,從而其中央處理器的緩存的性能會有所提升,指令的讀取的本地性表現(xiàn)更好。本發(fā)明技術(shù)效果包括程序因此而改善了代碼的本地性,程序的執(zhí)行流也更加流 暢,性能獲取了 0. 5% -3%的性能提升,超級塊長度增長最長可以達到2個基本塊的長度, 換成指令21. 7條,碎片的數(shù)量減少最多可以達到25.5%,而最多2. 25%內(nèi)存膨脹率是可以 接受的。
圖1共享塊代碼復制示意圖。圖2基于代碼拷貝超級塊A的構(gòu)造例程及內(nèi)存布局示意圖。
具體實施例方式下面對本發(fā)明的實施例作詳細說明,本實施例在以本發(fā)明技術(shù)方案為前提下進行 實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施 例。如圖1所示,圖中,a,b,c…1為基本塊或者超級塊,el和e2分別為塊e的兩個代 碼拷貝。圖1左側(cè),基本塊e或超級塊e被兩條路徑共享,現(xiàn)有的構(gòu)造策略,只能產(chǎn)生一個 包含e的超級塊,而另外一條路徑將因為缺少e而被截斷。通過代碼復制,產(chǎn)生兩個基本塊 el和e2,分別放在兩個超級塊中,從而產(chǎn)生兩個較長的超級塊,否則,因為其中一個超級塊被從中間截斷,而產(chǎn)生較多碎片。如圖2所示,超級塊C是已經(jīng)構(gòu)造好的超級塊放在內(nèi)存中,當前正在被超級塊A的 構(gòu)造過程中,對它或它的成員塊的變量進行檢測,更新,和設定。因為之前構(gòu)造的超級塊C 含有基本塊m,那么成員基本塊m對應的變量repeatjime遞增;超級塊B在超級塊C中 已經(jīng)存在,那么超級塊B的對應變量super_ri5peat_time遞增,同時超級塊A對應的變量 inner_loop進行累加;基本塊η在自體中存在,超級塊A對應的變量self_repeat_time 進行遞增操作;超級塊q在自體中出現(xiàn)重復,那超級塊A的對應變量self^superjijpeat time進行遞增操作,并且對超級塊A的irmer_l00p變量進行遞增操作。Crossbit是一個動態(tài)二進制翻譯系統(tǒng),它可以將不同體系結(jié)構(gòu)的指令實現(xiàn)動態(tài)翻 譯和優(yōu)化。現(xiàn)有的Crossbit已經(jīng)實現(xiàn)了一個基本的超級塊生成方法,也完成了塊之間的鏈 接。程序大部分時間是在翻譯后的塊之間執(zhí)行。但是,因為生成的超級塊經(jīng)常因為基本塊 共享的問題而截斷,平均長度比較短,導致了程序運行的本地性不好,所以,實現(xiàn)一個代碼 復制的機制來增長超級塊的長度,是很有必要的。在現(xiàn)有的超級塊生成方法的基礎上,允許 代碼拷貝,并對代碼拷貝的策略進行了一定的細化。在具體介紹前先稍微介紹下用到的監(jiān)控變量所代表的意義repeat_time 表示基本塊在多個超級塊中被共享的次數(shù),比如超級塊A,B同時含 有基本塊m,那么它的Mpeatjime值就是2。super_repeat_time 表示超級塊在多個超級塊中被共享的次數(shù),跟r印eat_time 意義基本雷同。inner_loop 表示指定的超級塊嵌套的含有超級塊的innerjoop加1后的總和, 比如,超級塊A內(nèi)部含有兩個超級塊B和C,而B含有1個超級塊M,C內(nèi)部全部是基本塊,M 內(nèi)部全部是基本塊,那么B的irmerjoop值就是1,C的irmerjoop值就是O,A的irmer_ loop 值就是(1+1)+ (0+1) = 3。self_i^peat_time 超級塊中自體成員基本塊的重復次數(shù)之和。它的值的獲取 是利用當前正要被添加的成員基本塊的信息來檢索整個超級塊的成員鏈表,遇到一個相同 的就對當前被構(gòu)造超級塊的self^Mpeatjime進行遞增操作。比如,一個超級塊A含有 基本塊m-n-o-p-m-o這樣一個序列,那么在構(gòu)造的過程中,m, η, ο, ρ被先后添加,對self_ repeat_time值沒有影響,當添加下一個m的時候,self_repeat_time遞增,添加ο的時候, 再次遞增,那么該超級塊A的self_repeat_time值就是2。self_super_repeat_time 記錄當前正在構(gòu)造的超級塊中的自體成員超級塊的重 復次數(shù)之和。它的值的獲取類似于Self_i^peat_time,這里不在贅述。首先是剖分的過程,在Crossbit中剖分過程主要有如下步驟1、以基本塊為單位劃分程序,通常以一個跳轉(zhuǎn)指令開始,以一個跳轉(zhuǎn)指令結(jié)束的 指令序列。2、在每個基本塊的開頭插入探測指令,本例中插入的完成當前基本塊執(zhí)行次數(shù)的 計數(shù)指令,如果執(zhí)行的次數(shù)達到一定的閾值那么此基本塊就作為將要被構(gòu)造的超級塊的頭 塊,程序沒有執(zhí)行當前被探測到的頭塊,就觸發(fā)構(gòu)造超級塊例程也即跳轉(zhuǎn)到構(gòu)造超級塊例 程,等構(gòu)造完成超級塊后,在跳到構(gòu)造成功的超級塊執(zhí)行。Crossbit構(gòu)造超級塊的方法, 對構(gòu)造好的超級塊不進行探測,這里對超級塊還要進行一定程度的探測,如果當前構(gòu)造的
6super_repeat_time達到了指定的閾值,那么就在翻譯生成最終的超級塊的頭部就不插入 探測指令,否則,插入探測指令,繼續(xù)檢測當前構(gòu)造超級塊運行的熱度。代碼具體見步驟4。3、當進入執(zhí)行超級塊例程的時候,每一個按照超級塊的構(gòu)造方法或者算法是被需 要的基本塊,它都有對應一個初始值為0的repeatjime變量,對這個值進行遞增操作。如 果是超級塊,那么對它的初始值為0的SUper_ri5peat_time變量進行遞增操作,并且對當前 正在構(gòu)造的超級塊的初始值為0的LINNER_L00P值進行遞增。4、內(nèi)存膨脹與超級塊構(gòu)造之間的平衡機制。為了保證代碼復制不會帶來很大的內(nèi) 存膨脹問題。本例中通過三個方面進行內(nèi)存膨脹的控制。4. 1)對是否添加超級塊探測代碼的判定。如果,無限制的添加超級塊探測代碼, 那么超級塊構(gòu)造機制會不斷的將超級塊嵌套的添加到新的超級塊中,這樣將會帶來非常龐 大的內(nèi)存膨脹,但是,如果對生成的超級塊不進行探測,那么將排除類似于小且短但頻繁調(diào) 用的函數(shù)作為較大規(guī)模超級塊的一部分的情況。通過設定一個閾值來判定是否添加探測代 碼。MAX_REPEAT的值選的越大,那么嵌套含有當前超級塊的新超級塊越多。If(super_repeat_time < SUPER_MAX_REPEAT){...//探測代碼}//也即,如果此超級塊在多個更大超級塊中重復的次數(shù)沒有超過MAX_REPEAT次, 就進行對此超級塊探測4. 2)超級塊嵌套的限定。一個超級塊是熱代碼,那么它極有可能被別的塊所調(diào)用, 從而被超級塊構(gòu)造機制所探測到,嵌套的構(gòu)造新的超級塊。如果,出現(xiàn)極端情況,嵌套調(diào)用 的層數(shù)過多,那么導致生成極大的超級塊,導致內(nèi)存的極度膨脹。于是要有一個機制來保證 這樣的情況不會發(fā)生。If(super_repeat_time > 0)//當前要被添加的塊是超級塊{up_inner_loop() ;//當前正在被添加超級塊設置為已經(jīng)嵌套了一層超級塊//對inner_loop變量進行遞增操作}Set_inner_loop () ;//記錄當前正在被構(gòu)造的超級塊的inner_loop值,也即 對遞增后的成員超級塊的irmerjoop值進行累加If(inner_loop > MAX_INNERL00P){Break ;//如果當前要被加入超級塊的超級塊嵌套了很多次,那么就終 止;}4. 3)基本塊的重復限定。通常一個比較熱的基本塊會被多個超級塊共享,但是,在實驗中,通?;緣K重復出現(xiàn)在多個超級塊中,次數(shù)達到一定的閾值的時候,它所帶來的性 能提升比起來它所帶來的內(nèi)存膨脹率變得不是很明顯。所以需要設定一個閾值進行設定。If(repeat_time > MAX_REPEAT){break ;H如果一個塊出現(xiàn)在過多的超級塊中,那么就終止;}4.4)對自體重復基本塊或者超級塊進行的限定。有些超級塊在構(gòu)造過程當中,下 一個需要的基本塊會是自己當前已經(jīng)構(gòu)造進去的基本塊。情況不是很多,但對個別程序的 性能有比較大影響。對它進行限定的時候,要對之前的r印eatjime變量進行減操作。如 果是超級塊就將變量改成對應的超級塊變量即可。代碼如下For(int i = 0 ;i < chain。 size() ;i++){if (spc = = chain [i])self_repeat_time++ ;repeat_time—;}//循環(huán)遍歷當前超級塊隊列,如果是當前基本塊重復出現(xiàn)過,就對自體重復基本 塊self_i^peat_time遞增,并將記錄超級塊間的r印eat_time進行遞減,以保證r印eat_ time記錄的是超級塊間的重復,而不包括自體重復;對生成好的中間語言超級塊進行一定的優(yōu)化處理,比如跳轉(zhuǎn)執(zhí)行反轉(zhuǎn),剔除冗余 指令。返回中間語言超級塊翻譯成可以在本地機器執(zhí)行的目標超級塊并且執(zhí)行。不同的程序,其行為特性不一樣,所以,對于本發(fā)明中采用的閾值也都是不一樣 的,在本實施例中,采用的閾值都是2-10之間的數(shù)字,SUPER_MAX_REPEAT設為8,MAX_ INNERL00P 設為 3 等。在本實施例中用BENCH INT2000測試用例進行測試,實驗數(shù)據(jù)表明采用本發(fā)明改 進后的系統(tǒng)相較于原來的超級塊構(gòu)造方法,獲得了的性能提升,超級塊的平均長 度增長了 1個,最多接近兩個;超級塊包含的指令條數(shù)最多增加了 21. 7條,平均增加了 15 條;而總共的超級塊碎片數(shù)量最多減少了 25%,最少減少了 11%。對于內(nèi)存膨脹方面,平均 來講僅僅是使得系統(tǒng)產(chǎn)生了 2%平均內(nèi)存膨脹率,是可以接受的。
權(quán)利要求
一種基于代碼復制超級塊的程序執(zhí)行優(yōu)化方法,其特征在于,通過將程序劃分后插入探測指令并構(gòu)造得到中間語言超級塊,然后設置生成中間語言超級塊的平衡機制參數(shù)并進行篩選指導處理;并將中間語言超級塊翻譯成目標超級塊,供二進制翻譯器執(zhí)行。
2.根據(jù)權(quán)利要求1所述的基于代碼復制超級塊的程序執(zhí)行優(yōu)化方法,其特征是,所述 的程序執(zhí)行優(yōu)化方法包括以下步驟第一步,對程序指令進行劃分處理,得到若干基本塊;第二步,在每個基本塊的頭部插入一個探測指令;第三步,構(gòu)造中間語言超級塊,并實時記錄該中間語言超級塊所對應的參數(shù);第四步,設置生成中間語言超級塊的平衡機制參數(shù)并進行篩選指導處理;第五步,將中間語言超級塊作為一個翻譯單位一次性翻譯成目標超級塊,然后存儲于 內(nèi)存指定位置并記錄該目標超級塊的內(nèi)存地址,最后將二進制翻譯器將該內(nèi)存地址作為函 數(shù)入口并直接跳轉(zhuǎn)到該內(nèi)存地址處執(zhí)行目標超級塊所對應的二進制指令,實現(xiàn)程序執(zhí)行優(yōu) 化。
3.根據(jù)權(quán)利要求1或2所述的基于代碼復制超級塊的程序執(zhí)行優(yōu)化方法,其特征是,所 述的劃分是指將第i個跳轉(zhuǎn)指令和第i+Ι個跳轉(zhuǎn)指令之間的指令序列作為一個基本塊,其 中i表示程序中跳轉(zhuǎn)指令序號,它是從1開始到整個程序中跳轉(zhuǎn)指令個數(shù)之間的正整數(shù)。
4.根據(jù)權(quán)利要求1或2所述的基于代碼復制超級塊的程序執(zhí)行優(yōu)化方法,其特征是,所 述的探測指令是探測構(gòu)造超級塊的頭塊或者是觸發(fā)構(gòu)造超級塊例程。
5.根據(jù)權(quán)利要求1或2所述的基于代碼復制超級塊的程序執(zhí)行優(yōu)化方法,其特征是,所 述的構(gòu)造中間語言超級塊是指當一個基本塊的探測指令觸發(fā)構(gòu)造超級塊歷程的時候,程 序?qū)⑼ㄟ^查詢系統(tǒng)記錄的信息,找到符合條件的中間語言塊,并將跳轉(zhuǎn)指令部分進行一定 的處理后,羅列到一起,形成一個中間語言超級塊。
6.根據(jù)權(quán)利要求1或2所述的基于代碼復制超級塊的程序執(zhí)行優(yōu)化方法,其特征是,所 述的參數(shù)包括基本塊被共享的次數(shù)、超級塊被共享的次數(shù)、超級塊嵌套的含有超級塊的層 數(shù)、超級塊中自體成員基本塊的重復次數(shù)之和以及當前正在構(gòu)造的超級塊中的自體成員超 級塊的重復次數(shù)之和。
7.根據(jù)權(quán)利要求1或2所述的基于代碼復制超級塊的程序執(zhí)行優(yōu)化方法,其特征是,所 述的平衡機制參數(shù)包括添加超級塊探測代碼標示、超級塊嵌套層數(shù)參數(shù)、基本塊的重復頻 度、自體基本塊重復頻度和超級塊重復頻度。
8.根據(jù)權(quán)利要求1或2所述的基于代碼復制超級塊的程序執(zhí)行優(yōu)化方法,其特征是,所 述的篩選指導處理包括以下步驟1)在每一個基本塊在翻譯系統(tǒng)的記錄對象中,增加相應的域,用來記錄上述參數(shù);2)指定的域設定相應的閾值,閾值的設定因程序行為特性的不同會有所不同;3)在構(gòu)造中間語言超級塊的時候?qū)⑵胶鈾C制參數(shù)進行監(jiān)控,更新;4)基本塊或超級塊進行加入探測代碼或者構(gòu)造中間語言超級塊的過程中,當參數(shù)違反 設定的閾值條件時終止當前操作。
全文摘要
一種計算機技術(shù)領域的基于代碼復制超級塊的程序執(zhí)行優(yōu)化方法,通過將程序劃分后插入探測指令并構(gòu)造得到中間語言超級塊,然后設置生成中間語言超級塊的平衡機制參數(shù)并進行篩選指導處理;并將中間語言超級塊翻譯成目標超級塊,供二進制翻譯器執(zhí)行。本發(fā)明通過基本塊代碼復制來生成超級塊,使得基本塊的長度變長,基本塊的數(shù)量減少,從而提高生成的超級塊的質(zhì)量,且可移植性好。
文檔編號G06F9/45GK101923481SQ201010278538
公開日2010年12月22日 申請日期2010年9月11日 優(yōu)先權(quán)日2010年9月11日
發(fā)明者劉博 , 張俊, 管海兵, 鄧海鵬, 陳凱 申請人:上海交通大學