[發(fā)明專利]優(yōu)化鏈接后代碼的方法和裝置有效
| 申請?zhí)枺?/td> | 02105372.3 | 申請日: | 2002-02-27 |
| 公開(公告)號: | CN1374585A | 公開(公告)日: | 2002-10-16 |
| 發(fā)明(設(shè)計)人: | 蓋德·哈伯;摩舍·克勞斯納;瓦迪姆·埃森博格 | 申請(專利權(quán))人: | 國際商業(yè)機器公司 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45;G06F9/30 |
| 代理公司: | 中國國際貿(mào)易促進委員會專利商標事務(wù)所 | 代理人: | 付建軍 |
| 地址: | 美國*** | 國省代碼: | 暫無信息 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 優(yōu)化 鏈接 代碼 方法 裝置 | ||
技術(shù)領(lǐng)域
本發(fā)明主要涉及計算機代碼的優(yōu)化,以實現(xiàn)更快地運行速度,特別是涉及代碼編譯和鏈接后目標代碼的優(yōu)化。
背景技術(shù)
鏈接后代碼優(yōu)化器主要對全部可執(zhí)行代碼,包括靜態(tài)鏈接庫代碼,進行整體性分析。由于可執(zhí)行代碼將不會重新編譯或重新鏈接,鏈接后優(yōu)化器不必保留編譯器和鏈接器的約定。因此它可以利用優(yōu)化編譯器所無法實現(xiàn)的方式,對編譯單元進行快速優(yōu)化。
同時,鏈接后優(yōu)化器必須處理在編譯時優(yōu)化中不會遇到的困難。優(yōu)化編譯器處理的輸入是以高級語言的形式描述的,通常是源代碼,其語義的定義明確。相比較而言,靜態(tài)鏈接后優(yōu)化工具接收的輸入是低級可執(zhí)行指令(目標代碼)。鏈接后優(yōu)化器必須首先分解目標代碼以便識別其中的數(shù)據(jù)和指令。即使分解后,鏈接后優(yōu)化器也許只能部分地分辨出給定可執(zhí)行代碼的語義,原因如下:·可執(zhí)行目標代碼中的指令和數(shù)據(jù)是混合在一起的,有時不可能將它??們區(qū)分開。通常,有些代碼區(qū)不能被優(yōu)化器明確地區(qū)分為數(shù)據(jù)或代??碼指令。在本專利申請中,這些區(qū)稱作“未分類代碼區(qū)”。·即使對于已知含有代碼指令的完全分類代碼區(qū),程序的語義也常常不能??確定。機器指令在寄存器中執(zhí)行,其中可能包括數(shù)據(jù)信息或存儲器地址。??因此,優(yōu)化器不能確定給定的指令是進行純數(shù)據(jù)計算,還是計算地址以??便程序在以后用來檢索/存儲數(shù)據(jù),或是在程序代碼中完成控制轉(zhuǎn)換。·數(shù)據(jù)元素和它們的類型,如數(shù)組、結(jié)構(gòu)或標量,只能在高級語言中??識別,如C、C++、Pascal等。在鏈接后代碼中,這些元素表現(xiàn)為??任意的數(shù)據(jù)區(qū),而對它們的引用則以任意的地址來處理。因此,在??鏈接后的級別上,不能徹底解決數(shù)據(jù)元素的引用問題。
由于上述因素,程序的代碼語義不可能完全從鏈接后代碼中提取出來,且程序所使用的數(shù)據(jù)和代碼元素間的某些相關(guān)性也不能確定。
Haber等人在論文中提出了處理這些困難的一種方法,論文題為“根據(jù)局部信息的可靠鏈接后優(yōu)化”(Reliable?Post-Link?OptimizationsBased?on?Partial?Information),定向反饋和動態(tài)優(yōu)化專題學術(shù)討論會3會議錄(蒙特瑞,加利福尼亞,2000年12月),第91-100頁,現(xiàn)將該文列在此處以供參考。首先,通過以漸增方式遵循可以在程序中分解的所有控制流路徑,將需優(yōu)化的程序分解為基本塊。基本塊可以標記為代碼、數(shù)據(jù)或未分類(未徹底分析)。代碼塊可根據(jù)它們控制流的特性進一步標記。限定程序的局部分析區(qū)的范圍,使其含有未分類塊,同時解除這些未分類塊在優(yōu)化時對程序其它部分的限制。選定局部分析區(qū)的目的是,即使它們不能進行內(nèi)部優(yōu)化,仍能安全地做為整體重新定位,從而能夠?qū)⒋a做為一個整體重新排序和優(yōu)化。
鏈接后代碼優(yōu)化和重構(gòu)的另一個特點在Henis等人的“大型子系統(tǒng)基于鏈接后優(yōu)化的反饋”(Feedback?Based?Post-Link?Optimizationfor?Large?Subsystems)第二次定向反饋優(yōu)化專題討論會(海法,以色列,1999年11月),第13-20頁;以及Schmidt等人在“操作系統(tǒng)代碼定向簡檔重構(gòu)”(Profile-Directed?Restructuring?of?OperatingSystem?Code)IBM系統(tǒng)雜志37:2(1998),第270-297頁,中進行了描述。現(xiàn)將這些文獻列于此處以供參考。
在程序執(zhí)行過程中,當調(diào)用使用某些寄存器的函數(shù)時,通常有必要在運行該函數(shù)前,將寄存器中的內(nèi)容存儲(保存到存儲器),當該函數(shù)返回后將寄存器的內(nèi)容恢復。為此,編譯器通常將適當?shù)拇鎯χ噶钐砑拥骄幾g代碼中該函數(shù)的前端,并在后端增加相應(yīng)的恢復指令。但是,對函數(shù)的某些調(diào)用來說,有些存儲/恢復指令可能是多余的。例如,當函數(shù)調(diào)用完成后,寄存器被“注銷”時(即在重新使用寄存器前,寄存器中的值被重寫),沒有必要存儲和恢復寄存器的內(nèi)容。因為對于現(xiàn)代高速處理器來說,存儲器的訪問已成為瓶頸,消除這些多余的存儲和恢復操作能夠減少程序的實際運行時間。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于國際商業(yè)機器公司,未經(jīng)國際商業(yè)機器公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/02105372.3/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





