專利名稱:基于加權控制流圖的前瞻線程劃分方法
技術領域:
本發明涉及基于加權控制流圖(WCFG)的前瞻線程劃分方法,屬于計算機技術領域。
背景技術:
隨著單片多核處理器(CMP)的發展,多核技術已經在許多應用方面都得到普及。但是,由于現在的大部分軟件都采用串行模式,因此如何充分發揮CMP的優勢來加速串行程序的執行已成為眾多應用領域共同關注的問題。
線程級前瞻(Thread-Level Speculation, TLS)技術在不確定的情況下,提前創建并推測執行一些將來需要執行的線程,通過前瞻執行和相應的前瞻錯誤檢測機制,可以去除冗余的數據同步、發現并維護真正的數據相關,從而降低線程劃分的難度,提高程序的執行效率,使得在多核上加速傳統上難以手工或自動并行化的串行程序成為可能。高效的線程劃分方法離不開線程級前瞻執行的支持。另外線程的劃分又需要編譯和體系結構的緊密配合,這是因為借助編譯過程的一些優化策略可以降低線程劃分復雜度,而體系結構不僅是承接線程劃分結果實現線程級并行的載體,而且其中的一些參數,線程控制和前瞻執行的延遲開銷等也是線程劃分時確定啟發式規則的重要依據。同時,線程劃分的過程中也要兼顧線程的體積,線程間的控制和數據相關性,線程間的訪存負載平衡等。只有體積相近,控制和數據相關性小,負載均衡的線程才能發揮多線程系統的性能。
發明內容
本發明目的在于針對現有技術存在問題,提供一種相對較好的前瞻線程劃分方法——基于加權控制流圖的前瞻線程劃分方法,該方法能夠將編譯與體系結構緊密結合,并使得劃分后的前瞻線程體積相近,控制和數據相關性小,能夠充分利用多核處理器的資源,提聞并行程序的執行效率。為了達到上述目的,本發明的構思是在建立加權控制流圖前后進行多次優化,排除不適合并行化的循環和過程調用,這樣最后在提取可執行的候選線程的時候就能夠獲得并行度很高的前瞻線程,整個劃分過程將宏觀和微觀有機結合,經過劃分后的前瞻線程能夠充分的發揮單片多核(CMP)的性能。根據發明的構思,本發明采用下述技術方案
I、本發明公開了一種基于加權控制流圖的前瞻線程劃分方法,其特征在于操作步驟如
下
(1)自上而下掃描原串行程序,找出程序中所有的過程調用;
(2)對步驟(I)中找出的所有的過程調用進行處理,對不符合要求的過程調用插入到原來的串行程序中直接運行;
(3)根據profiling信息對步驟(2)中處理后的串行程序建立加權控制流T;(4)自上而下遍歷整個復加權控制流圖T,找出圖中所有的循環區域;
(5)對步驟(4)中找出的所有的循環進行處理,對不符合要求的循環直接插入到串行程序中直接運行,并將符合要求的循環歸結為一個單入口單出口的節點,由此可形成超控制流圖F;
(6)根據染色法從超控制流圖F中提取可執行的前瞻線程。2、根據權利要求I所述的一種基于加權控制流圖的前瞻線程劃分方法,其特征在于上述步驟(2)中所述的對步驟(I)中找出的所有的過程調用進行處理,其具體處理步驟如下
(21)規定候選線程的體積下限L0WER_UMIT及其上限UPPER_UMIT,并提取出所有的過程調用。 (22)對于體積小于候選線程體積下限L0WER_UMIT的過程調用,則將其函數體直接插入到原來的串行程序中直接運行;
(23)對于體積大于候選線程體積上限UPPER_UMIT的過程調用,則應該對其進行適當前瞻劃分,使其能夠成為多個可以并行執行的線程。3、根據權利要求I所述的一種基于加權控制流圖的前瞻線程劃分方法,其特征在于上述步驟(5)中所述的對步驟(4)中遍歷出的所有循環進行處理,其具體處理步驟如下
(51)自上而下遍歷整個加權控制流圖T,提取出所有的循環或者循環區域;
(52)判斷所有的循環或者循環區域是否適合并行化,若不符合則將其直接插入到原來的串行程序中直接運行。4、根據權利要求I所述的一種基于加權控制流圖的前瞻線程劃分方法,其特征在于上述步驟(6)中,利用染色法從超控制流圖F中提取可執行的前瞻線程,其具體處理步驟如下
(61)在有向圖F中選擇一個沒有前驅的頂點并輸出;
(62)規定若圖中的某一個頂點被選為線程,那么與它相鄰的頂點便不能再作為線程;
(63)刪除已輸出的頂點以及與該頂點相鄰的其它頂點和邊;
(64)重復上述三個步驟,直到找出所有的可執行的候選線程。本發明基于WCFG的前瞻線程劃分方法與已有技術相比較,具有如下顯而易見的突出實質性特點和顯著優點該方法能夠將編譯和體系結構的緊密配合,兼顧了線程的體積,線程間的控制和數據相關性,線程間的訪存負載平衡等。另外在建立線程描述方法時,考慮到了程序的profiling信息,這可使線程劃分很容易定位程序中執行頻率最高的部分進行劃分和優化。而對于自身難以解決的問題,借助硬件技術給予了相應的解決。
通過以下對本發明基于WCFG的前瞻線程劃分方法的實例結合其附圖的描述,可以進一步理解本發明的目的、具體結構特征和優點。其中附圖為
圖I是基于WCFG的前瞻線程劃分方法的流程圖。圖2是圖I中步驟2的過程調用的處理流程圖。圖3是圖I中步驟5的循環的處理流程圖。圖4是圖I中步驟3建立的串行程序加權控制流圖T。
圖5表示的是從串行程序的加權控制流圖T到串行程序的超控制流圖F的推導過程,圖5中的圖(b)是推倒后的超控制流圖F。圖6是圖I中步驟6可執行候選線程的提取過程圖。
具體實施例方式本實施例所述方案的應用環境是面向多核處理器的線程級并行執行環境,本實施例不限定所述技術方案應用環境中多核處理器架構和線程劃分方式。下面結合說明書附圖和具體實施方式
對本發明作進一步詳細的說明。實施例一 參照圖1,本基于加權控制流圖的前瞻線程劃分方法,其特征在于操作步驟如下
(1)自上而下掃描原串行程序,找出程序中所有的過程調用;
(2)對步驟(I)中找出的所有的過程調用進行處理,對不符合要求的過程調用插入到原來的串行程序中直接運行;
(3)根據profiling信息對步驟(2)中處理后的串行程序建立加權控制流T;
(4)自上而下遍歷整個復加權控制流圖T,找出圖中所有的循環區域;
(5)對步驟(4)中找出的所有的循環進行處理,對不符合要求的循環直接插入到串行程序中直接運行,并將符合要求的循環歸結為一個單入口單出口的節點,由此可形成超控制流圖F;
(6)根據染色法從超控制流圖F中提取可執行的前瞻線程。實施例二
本實施例與實施例一基本相同,特別之處如下
上述步驟(2)中所述的對步驟(I)中找出的所有的過程調用進行處理,其具體處理步驟如下
(21)規定候選線程的體積下限L0WER_UMIT及其上限UPPER_UMIT,并提取出所有的過程調用;
(22)對于體積小于候選線程體積下限L0WER_UMIT的過程調用,則將其函數體直接插入到原來的串行程序中直接運行;
(23)對于體積大于候選線程體積上限UPPER_UMIT的過程調用,則應該對其進行適當前瞻劃分,使其能夠成為多個可以并行執行的線程。3、根據權利要求I所述的一種基于加權控制流圖的前瞻線程劃分方法,其特征在于上述步驟(5)中所述的對步驟(4)中遍歷出的所有循環進行處理,其具體處理步驟如下
(51)自上而下遍歷整個加權控制流圖T,提取出所有的循環或者循環區域;
(52)判斷所有的循環或者循環區域是否適合并行化,若不符合則將其直接插入到原來的串行程序中直接運行。4、根據權利要求I所述的一種基于加權控制流圖的前瞻線程劃分方法,其特征在于上述步驟(6)中,利用染色法從超控制流圖F中提取可執行的前瞻線程,其具體處理步驟如下
(61)在有向圖F中選擇一個沒有前驅的頂點并輸出;
(62)規定若圖中的某一個頂點被選為線程,那么與它相鄰的頂點便不能再作為線程;(63)刪除已輸出的頂點以及與該頂點相鄰的其它頂點和邊;
(64)重復上述三個步驟,直到找出所有的可執行的候選線程。實施例三
參照圖1,本發明的一種基于加權控制流圖的前瞻線程劃分方法,其具體操作步驟如 下
步驟101、針對需要劃分的串行程序進行搜索,提取出所有函數的過程調用。步驟102、對步驟101中提取出的所有過程調用進行處理,對不符合要求的過程調用插入到原來的串行程序中直接運行,具體步驟如下
步驟1021、掃描遍歷原串行程序,提取出所有的過程調用,并建立集合P={P」Pi表示串行程序中第i個過程調用};
步驟1022、判斷集合P中的每個過程調用是否符合要求,符合跳轉到步驟1023,不符合則跳轉到步驟1024 ;
步驟1023、針對過程調用的體積小于線程體積下線L0WER_UMIT的,則將其插入到原來的串行程序中直接運行。步驟1024、判斷集合P中的過程調用是否掃描完畢,沒有過程調用則結束,否則直接跳轉到步驟1022。步驟103、對上述處理過的串行程序,再根據profiling信息,建立加權控制流圖T,如圖4所示。步驟104、自上而下遍歷整個加權控制流圖T,搜索出所有的循環,并建立集合L =ILi I Li表示WCFG中的第i個循環或第i個循環區域}。步驟105、對集合L中的所有元素進行處理,將不適合并行化的循環直接插入到串行程序中直接運行,對符合要求的循環將其歸結為一個帶有單入口單出口的節點,掃描完集合L中的所有元素后,再由加權控制流圖T推導出超控制流圖F,推導過程如圖5所示。參照圖3,其具體操作步驟如下
步驟1051、自上而下遍歷加權控制流圖T,提取出所有的循環,并建立集合L = ILiI Li表示WCFG中的第i個循環或第i個循環區域};
步驟1052、判斷L中的每一個循環是否符合并行化的要求,不符合則跳轉到步驟1053,符合要求的循環則跳轉到步驟1054 ;
步驟1053、對于不符合要求的循環則將其直接插入到串行程序中直接運行,如圖4所示,區域I不符合要求,則將其直接插入到串行程序中,并將其從T中刪除,之后再跳轉到步驟 1055 ;
步驟1054、對于符合要求的循環則將其歸結為一個具有單入口單出口的節點,如圖5所示,區域2是符合要求的循環,則可將其歸結會具有單出口單入口的節點B,之后再跳轉到步驟1055 ;
步驟1055、判斷集合L中是否還有待處理的循環或者區域,若不存在則跳轉到步驟1056,若存在則跳轉到步驟1052 ;
步驟1056、經過上述步驟處理后,則可建立一個新的超控制流圖F,如圖5中的圖
(b)所示。步驟106、根據染色法,從超控制流圖F中提取出最終可執行的前瞻線程。參照圖6,其具體操作步驟如下
步驟1061、圖6中的圖(a)與圖5中的圖(b)是同一個圖形,利用染色法,我們可以首先選擇一個沒有前驅的頂點并輸出(如果圖中的一個頂點被選為線程,那么與它相鄰的頂點便不能再作為線程),之后再從圖(a)中刪除與該頂點相鄰的頂點及邊,可形成新的圖形圖(b)。步驟1062、從圖(b)中,再次選擇一個沒有前驅的頂點8,之后再從圖(b)中刪除與頂點8相鄰的頂點及邊,可形成新的圖形圖(C)。步驟1063、從圖(C)中,再次選擇一個沒有前驅的頂點9,之后再從圖(C)中刪除與頂點9相鄰的頂點及邊,可形成新的圖形圖(d)。步驟1064、從圖(d)中,再次選擇一個沒有前驅的頂點15,之后再從圖(d)中刪除 與頂點15相鄰的頂點及邊,至此可形成一個可執行前瞻線程集合ST={1,8,9,15},劃分結束。以上對基于WCFG的前線線程劃分方法進行了詳細的介紹,本文結合說明書附圖和具體的實施例進行闡述只是用于幫助理解本發明的核心思想;同時對于本領域的一般技術人員,依據本發明的方法和思想,在具體實施方式
和應用范圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。
權利要求
1.基于加權控制流圖的前瞻線程劃分方法,其特征在于操作步驟如下 (1)自上而下掃描原串行程序,找出程序中所有的過程調用; (2)對步驟(I)中找出的所有的過程調用進行處理,對不符合要求的過程調用插入到原來的串行程序中直接運行; (3)根據profiling信息對步驟(2)中處理后的串行程序建立加權控制流T; (4)自上而下遍歷整個復加權控制流圖T,找出圖中所有的循環區域; (5)對步驟(4)中找出的所有的循環進行處理,對不符合要求的循環直接插入到串行程序中直接運行,并將符合要求的循環歸結為一個單入口單出口的節點,由此可形成超控制流圖F; (6)根據染色法從超控制流圖F中提取可執行的前瞻線程。
2.根據權利要求I所述的一種基于加權控制流圖的前瞻線程劃分方法,其特征在于上述步驟(2)中所述的對步驟(I)中找出的所有的過程調用進行處理,其具體處理步驟如下 (21)規定候選線程的體積下限LOWER_UMIT及其上限UPPER_UMIT,并提取出所有的過程調用; (22)對于體積小于候選線程體積下限LOWER_UMIT的過程調用,則將其函數體直接插入到原來的串行程序中直接運行; (23)對于體積大于候選線程體積上限UPPER_UMIT的過程調用,則應該對其進行適當前瞻劃分,使其能夠成為多個可以并行執行的線程。
3.根據權利要求I所述的一種基于加權控制流圖的前瞻線程劃分方法,其特征在于上述步驟(5)中所述的對步驟(4)中遍歷出的所有循環進行處理,其具體處理步驟如下 (51)自上而下遍歷整個加權控制流圖T,提取出所有的循環或者循環區域; (52)判斷所有的循環或者循環區域是否適合并行化,若不符合則將其直接插入到原來的串行程序中直接運行。
4.根據權利要求I所述的一種基于加權控制流圖的前瞻線程劃分方法,其特征在于上述步驟(6)中,利用染色法從超控制流圖F中提取可執行的前瞻線程,其具體處理步驟如下 (61)在有向圖F中選擇一個沒有前驅的頂點并輸出; (62)規定若圖中的某一個頂點被選為線程,那么與它相鄰的頂點便不能再作為線程; (63)刪除已輸出的頂點以及與該頂點相鄰的其它頂點和邊; (64)重復上述三個步驟,直到找出所有的可執行的候選線程。
全文摘要
本發明公開了一種基于加權控制流圖的前瞻線程劃分方法。本方法的操作步驟如下(1)自上而下掃描原串行程序;(2)對步驟(1)中找出的所有的過程調用進行處理;(3)根據profiling信息對步驟(2)中處理后的串行程序建立加權控制流圖T;(4)自上而下遍歷整個復加權控制流圖T,找出圖中所有的循環區域;(5)對步驟(4)中找出的所有的循環進行處理;(6)根據染色法從超控制流圖F中提取出可執行的前瞻線程。本發明的方法兼顧了線程的體積,線程間的控制和數據相關性,線程間的訪存負載均衡,對于自身難以解決的問題,借助硬件技術都給予了相應的解決,方法充分利用了計算機的資源,提高了程序的執行效率。
文檔編號G06F9/38GK102968295SQ20121049145
公開日2013年3月13日 申請日期2012年11月28日 優先權日2012年11月28日
發明者李川, 楊洪斌, 吳悅 申請人:上海大學