[發明專利]輪廓技術編譯的優化方法及裝置在審
| 申請號: | 201310539297.4 | 申請日: | 2013-11-04 |
| 公開(公告)號: | CN104615473A | 公開(公告)日: | 2015-05-13 |
| 發明(設計)人: | 劉穎;黃磊 | 申請(專利權)人: | 華為技術有限公司;中國科學院計算技術研究所 |
| 主分類號: | G06F9/45 | 分類號: | G06F9/45 |
| 代理公司: | 北京同立鈞成知識產權代理有限公司 11205 | 代理人: | 劉芳 |
| 地址: | 518129 廣東*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 輪廓 技術 編譯 優化 方法 裝置 | ||
技術領域
本發明實施例涉及網絡技術,尤其涉及一種輪廓技術編譯的優化方法及裝置。
背景技術
現代優化編譯器的一般做法是采用輪廓(Profiling)技術,輪廓技術是一種用于收集程序運行時信息的重要方法,包括邊輪廓技術(edge?profiling)、跨距輪廓技術(stride?profiling)、值輪廓技術(value?profiling)等多種形式,其中以edge?profiling的應用最為廣泛。
現有的Edge?Profiling方法,是在編譯時生成的控制流圖上,插入可以計算每條邊執行次數、但數目最少的插樁函數;這樣生成的可執行文件將在運行時刻數次調用插樁函數,收集程序的運行時信息并以文件形式保存。圖1為現有的邊輪廓技術中的劃分基本塊示意圖,如圖1所示,在編譯器中,源程序會首先被轉換成中間表示,并在中間表示上劃分基本塊(這里仍然將中間表示表達成C語言的形式),如BB1、BB2等。圖2為現有的邊輪廓技術中的控制流圖及插樁示意圖,如圖2所示,由基本塊構建控制流圖,并給其中的每一條邊標號,并對控制流圖上的主要邊插樁(有些編譯器是對每一條邊都做插樁),即插入函數調用用以計數該條邊的執行次數(Edge?id表示邊的序號),插樁函數如INSTRU1、INSTRU2。
現有的Edge?Profiling方法,由于加入了大量的插樁函數調用,執行效率十分低下。
發明內容
本發明實施例提供一種輪廓技術編譯的優化方法及裝置,以克服現有技術中輪廓技術編譯時執行效率較低的問題。
第一方面,本發明實施例提供一種輪廓技術編譯的優化方法,包括:
在程序控制流圖上劃分出至少兩個區域,將各個區域對應程序包含的插樁函數替換為計數操作;
將所述各個區域對應程序在主線程上執行,執行至一個區域對應程序結束時,啟動至少一個微線程執行所述區域對應程序包含的插樁函數除計數操作外的操作,用于記錄所述區域對應程序執行時的信息;所述微線程與執行下一個區域對應程序的主線程并行執行。
結合第一方面,在第一方面的第一種實現方式中,所述將各個區域對應程序包含的插樁函數替換為計數操作,包括:
在各個區域對應程序的入口處,開辟一個大小為N*2的二維數組空間,所述N為所述各個區域對應程序包含的插樁函數個數的最大值;
將所述二維數組的第i*2個元素賦值為所述程序控制流圖中邊的序號,所述二維數組的第i*2+1個元素用于計數,所述i表示第i個插樁函數,所述i取值為大于等于0且小于等于N。
結合第一方面的第一種實現方式,在第一方面的第二種實現方式中,所述執行至一個區域對應程序結束時,啟動至少一個微線程執行所述區域對應程序的插樁函數除計數操作外的操作,包括:
若所述二維數組的第i*2+1個元素的值不為0,則執行所述插樁函數的次數等于所述第i*2+1個元素的值,所述插樁函數的輸入參數為所述二維數組的第i*2個元素。
結合第一方面的第一、二任意一種實現方式,在第一方面的第三種實現方式中,所述執行至一個區域對應程序結束時,啟動至少一個微線程執行所述區域對應程序的插樁函數除計數操作外的操作,包括:
執行所述區域對應程序的插樁函數結束后,釋放所述二維數組空間。
第二方面,本發明實施例提供一種輪廓技術編譯的優化裝置,包括:
預處理模塊,用于在程序控制流圖上劃分出至少兩個區域,將各個區域對應程序包含的插樁函數替換為計數操作;
處理模塊,用于將所述各個區域對應程序在主線程上執行,執行至一個區域對應程序結束時,啟動至少一個微線程執行所述區域對應程序包含的插樁函數除計數操作外的操作,用于記錄所述區域對應程序執行時的信息;所述微線程與執行下一個區域對應程序的主線程并行執行。
結合第二方面,在第二方面的第一種實現方式中,所述預處理模塊具體用于:
在各個區域對應程序的入口處,開辟一個大小為N*2的二維數組空間,所述N為所述各個區域對應程序包含的插樁函數個數的最大值;
將所述二維數組的第i*2個元素賦值為所述程序控制流圖中邊的序號,所述二維數組的第i*2+1個元素用于計數,所述i表示第i個插樁函數,所述i取值為大于等于0且小于等于N。
結合第二方面的第一種實現方式,在第二方面的第二種實現方式中,所述處理模塊具體用于:
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于華為技術有限公司;中國科學院計算技術研究所,未經華為技術有限公司;中國科學院計算技術研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310539297.4/2.html,轉載請聲明來源鉆瓜專利網。





