两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種線程并行執(zhí)行優(yōu)化方法

文檔序號:6482354閱讀:194來源:國知局
專利名稱:一種線程并行執(zhí)行優(yōu)化方法
技術領域
本發(fā)明涉及計算機領域,提出了一種線程并行執(zhí)行優(yōu)化方法。
背景技術
人類對計算能力無止境的需求促進了硬件技術和軟件技術飛速發(fā)展。自上世紀七十年代 以來,隨著處理器的半導體工藝和體系結構不斷迅速發(fā)展,相適應的軟件設計技術和設計語 言也得到了迅速發(fā)展。由于系統(tǒng)性能的提高,計算機在經(jīng)濟、社會、軍事等各個領域取得了 極大的成功,產(chǎn)生了良好的效益。計算機應用的不斷深化需要計算機系統(tǒng)提供更高的性能, 推動了處理器及相關軟硬件技術研究不斷深入。
由于面臨高功耗和硬件設計異常困難等棘手問題,通過提高主頻和復雜的流水線技術發(fā) 掘指令級并行性己經(jīng)很難進一步提高單處理器的性能。在這樣的背景下,單片多核處理器 (Chip Multi-Processors, CMP)技術成為最受關注的新技術之一。單片多核技術通過在一塊 芯片上集成多個相對簡單的微處理器核心來并行執(zhí)行程序,提高系統(tǒng)性能。利用CMP技術提 高系統(tǒng)性能的關鍵是全面發(fā)揮多個微處理器核心的并行優(yōu)勢。線程級并行(Thread-Level Parallel, TLP)和線程級前瞻(Thread-Level Speculative, TLS)技術通過將串行程序劃分為 若干能夠并行執(zhí)行的線程來實現(xiàn)充分利用CMP多核資源的目的。線程并行層次較高,易于在 源碼級進行設計和實現(xiàn),能夠利用程序的語法和語義結構特征,處理器利用率由此得到了較 大的提高,所以TLP技術并行引起了廣泛的關注。
在串行程序執(zhí)行過程中,處理器不會執(zhí)行不必要的指令,但是線程級并行執(zhí)行技術中卻 并非如此。由于僅僅按照保證程序語義不變和降低線程之間的相關性兩個原則,將串行程序 劃分為若干并行執(zhí)行的線程,而沒有考慮程序具體執(zhí)行環(huán)境對線程執(zhí)行的影響,因而造成了 不必要線程的執(zhí)行。

發(fā)明內容
本發(fā)明要解決的技術問題是提供一種線程并行執(zhí)行優(yōu)化方法,通過減少不必要線程的執(zhí) 行縮短程序執(zhí)行時間,提高處理器利用率。
為達到上述目的,本發(fā)明采用下述技術方案 一種線程并行執(zhí)行優(yōu)化方法,其特征在于具體操作步驟如下
A. 為每一個線程構造線程優(yōu)化結構;
B. 為每一臺處理器構造處理器優(yōu)化結構;
C. 利用步驟A所述的線程優(yōu)化結構和步驟B所述的處理器優(yōu)化結構來優(yōu)化線程并行執(zhí)行。上述步驟A中的線程優(yōu)化結構包括控制部分、線程組編號、線程編號; 上述步驟A中的構造線程優(yōu)化結構的操作步驟如下 Al.為線程優(yōu)化結構分配連續(xù)的9個字節(jié)的內存空間;
A2.使用步驟A1所述的9個字節(jié)中的第l個字節(jié),構造線程優(yōu)化結構中的控制部分; A3.使用步驟Al所述的9個字節(jié)中的第2個到第5個字節(jié),構造線程優(yōu)化結構中的線程 組編號;
A4.使用步驟Al所述的9個字節(jié)中的第6個到第9個字節(jié),構造線程優(yōu)化結構中的線程 編號。
上述步驟A2中的構造線程優(yōu)化結構中的控制部分的操作步驟如下
A21.控制部分的第1個二進制位標識線程并行執(zhí)行是否需要優(yōu)化如果為l,則標識線
程并行執(zhí)行需要優(yōu)化;如果為0,則標識線程并行執(zhí)行不需要優(yōu)化; A22.控制部分的第2個二進制位標識線程是否包含子程序返回指令如果為l,則標識
線程包含子程序返回指令;如果為0,則標識線程不包含子程序返回指令; A23.控制部分的第3個二進制位標識第1個字節(jié)的第2個二進制位為0的線程是否執(zhí)行
如果為l,則標識第1個字節(jié)的第2個二進制位為0的線程停止執(zhí)行;如果為O,則
第1個字節(jié)的第2個二進制位為0的線程執(zhí)行; A24.控制部分的第4個二進制位標識步驟A3所述的線程組中的線程是否為互斥類型
如果為l,則標識線程組中的線程為互斥類型;如果為O,則標識線程組中的線程不
是互斥類型;
A25.控制部分的第5個二進制位標識步驟A3所述的線程組是否包含循環(huán)指令:如果為1, 則標識線程組包含循環(huán)指令;如果為0,則標識線程組不包含循環(huán)指令;
A26.控制部分的第6個二進制位標識步驟A3所述的線程組是否包含循環(huán)中斷指令如 果為l,則標識線程組包含循環(huán)中斷指令;如果為O,則標識線程組不包含循環(huán)中斷 指令;
A27.控制部分的第7個至第8個二進制位預留。
上述步驟A23中的線程組中的線程為互斥類型是指所述線程組在某一次執(zhí)行中有且僅有 一個線程被正確執(zhí)行;
上述步驟A3中的構造線程優(yōu)化結構中的線程組編號的操作步驟如下 A31.按照線程執(zhí)行的順序依次分析;
A32.將所有包含子程序返回指令的線程歸為同一個線程組;
8A33.將屬于同一層跳轉指令范疇內的線程歸為同一個線程組; A34.將位于同一層循環(huán)指令范疇內的線程歸為同一個線程組;
A35.將經(jīng)過步驟A32、 A33、 A34歸類后剩余的每一個線程都歸為一個單獨的線程組; A36.按照線程組執(zhí)行的順序,從0開始由小到大依次為線程組編號; A37.將步驟A35所述線程組編號存儲到步驟A3所述的第2個到第5個字節(jié)中; A38.構造線程優(yōu)化結構中的線程組編號的操作執(zhí)行完畢。
上述步驟A32中的同一層跳轉指令是指執(zhí)行跳轉指令時處理器測試的變量相同。 上述步驟A33中的同一層循環(huán)指令是指執(zhí)行循環(huán)指令時處理器測試的變量相同。 上述步驟A4中的構造線程優(yōu)化結構中的線程編號的操作步驟如下-A41.按照線程組執(zhí)行的順序依次分析;
A42.按照線程組中線程的執(zhí)行順序,從1開始由小到大依次為線程編號;
A43.判斷線程組所在線程優(yōu)化結構中的控制部分的第4個二進制位是否為1,如果為1,
則轉步驟A44;否則轉步驟A45; A44.將線程組內所有線程編號設置為該線程組內線程編號的最大值; A45.將步驟A42和步驟A44所述線程編號存儲在步驟A4所述的第6個到第9個字節(jié)中。 上述步驟B中的處理器優(yōu)化結構是指以線程優(yōu)化結構為元素的動態(tài)數(shù)組。 上述步驟B中的處理器優(yōu)化結構包括動態(tài)分配和動態(tài)回收兩個操作。 上述動態(tài)分配的操作步驟如下
BA1.查找線程所在線程組是否在上述的處理器優(yōu)化結構中,如果是,則轉步驟BA2;否則,
轉步驟BA3; BA2.返回該線程組所在的線程優(yōu)化結構;
BA3.為所述的動態(tài)數(shù)組增加9個字節(jié)作為新增的線程優(yōu)化結構;
BA4.將步驟BA3所述的線程優(yōu)化結構的控制部分的8個二進制位全部設置為0;
BA5.將步驟A3所述的線程組編號存儲到步驟BA3所述的線程優(yōu)化結構的線程組編號中;
BA6.將步驟A3所述的線程編號存儲到步驟BA3所述的線程優(yōu)化結構的線程編號中;
BA7.返回步驟BA3所述的線程優(yōu)化結構。
上述動態(tài)回收的是指將要求刪除的元素從動態(tài)數(shù)組中刪除。
上述步驟C中的優(yōu)化線程并行執(zhí)行的操作步驟如下
Cl.判斷線程是否全部執(zhí)行完畢,如果是,則線程并行執(zhí)行優(yōu)化操作完成;否則轉步驟C2; C2.判斷步驟Cl所述線程的線程優(yōu)化結構中的控制部分的第1個二進制位是否為0,如果為0,則轉步驟C3;否則轉步驟C4; C3.繼續(xù)執(zhí)行該線程,轉步驟C1; C4.執(zhí)行所述的動態(tài)分配的操作;
C5.判斷正在執(zhí)行線程的線程優(yōu)化結構中的控制部分的第2個二進制位是否為1,如果為
1,則轉步驟C6;否則轉步驟C7;
C6.執(zhí)行子程序返回指令線程優(yōu)化操作;
C7.判斷C4返回的線程優(yōu)化結構的控制部分的第3個二進制位設置是否為1,若為1,則
轉步驟C1;否則轉步驟C8;
C8.判斷正在執(zhí)行線程的線程優(yōu)化結構中的控制部分的第4個二進制位是否為1,如果為
1,則轉步驟C9;否則轉步驟C10; C9.執(zhí)行互斥類型線程優(yōu)化操作;
C10.判斷正在執(zhí)行線程的線程優(yōu)化結構中的控制部分的第5個二進制位是否為1,如果為
1,則轉步驟C11;否則轉步驟C3;
Cll.判斷正在執(zhí)行線程的線程優(yōu)化結構中的控制部分的第6個二進制位是否為1,如果為
1,則轉步驟C12;否則轉步驟C3;
C12.執(zhí)行循環(huán)中斷指令線程優(yōu)化操作。
上述步驟C6中的子程序返回指令線程優(yōu)化操作的操作步驟如下
C61.判斷步驟C4所述線程優(yōu)化結構中的線程編號是否小于步驟C3返回的動態(tài)數(shù)組元素
中的線程編號,如果是,則轉步驟C63;否則轉步驟C62; C62.終止該線程執(zhí)行;
C63.將步驟C3返回的動態(tài)數(shù)組元素中的線程編號更換為步驟C4所述的正在執(zhí)行線程的 線程編號;
C64.將C3返回的動態(tài)數(shù)組元素中的控制部分的第3個二進制位設置為1;
C65.判斷其它處理器核正在執(zhí)行線程的線程組編號是否大于步驟C4所述線程的線程組編
號,如果是,則轉C62;否則轉步驟C66; C66.判斷其它處理器核正在執(zhí)行線程的線程組編號是否等于步驟C4所述線程的線程組編
號,且前者的線程編號大于后者的線程編號,如果是,轉步驟C62;否則轉步驟C67; C67.判斷步驟C3返回的線程優(yōu)化結構中的線程編號是否等于0,如果是,則轉步驟C69;
否則子程序返回指令線程優(yōu)化操作結束; C68.執(zhí)行所述的動態(tài)回收的操作,子程序返回指令線程優(yōu)化操作結束。上述步驟C9中的互斥類型線程優(yōu)化操作的操作步驟如下 C91.將C3返回的線程優(yōu)化結構的線程編號減去1;
C92.判斷C3返回的線程優(yōu)化結構的控制部分的第4個二進制位是否為1,若為1,則轉
步驟C93;否則繼續(xù)執(zhí)行該線程并轉步驟C94; C93.停止執(zhí)行該線程
C94.將步驟C3返回的線程優(yōu)化結構的控制部分的第4個二進制位設置為1;
C95.判斷其它處理核正在執(zhí)行線程的線程組編號是否與步驟C7所述線程的線程組編號相
同,如果相同,則轉步驟C96;否則轉步驟C1; C96.停止執(zhí)行步驟C95所述的線程組編號相同的線程
C97.將步驟C3返回的線程優(yōu)化結構的線程編號減去步驟C96停止執(zhí)行線程的數(shù)目; C98.判斷步驟C3返回的線程優(yōu)化結構的線程編號是否等于0,如果是,則轉步驟C99;
否則互斥類型線程優(yōu)化操作結束; C99.執(zhí)行所述的動態(tài)回收的操作,互斥類型線程優(yōu)化操作結束。 上述步驟C12中的循環(huán)指令線程優(yōu)化操作的操作步驟如下
C121.判斷正在執(zhí)行線程的線程優(yōu)化結構中的線程編號是否小于步驟C3返回的線程優(yōu)化
結構的線程編號,如果是,則轉步驟C123;否則轉步驟C122; C122.終止該線程執(zhí)行;
C123.將步驟C3返回的線程優(yōu)化結構的線程編號更換為步驟C121所述的正在執(zhí)行線程的 線程編號;
C124.判斷其它處理器核正在執(zhí)行線程的線程組編號是否與步驟C10所述的線程組編號相
同,如果相同,則轉步驟C125;否則轉步驟C126; C125.判斷其它處理器核正在執(zhí)行線程的線程編號是否大于步驟C10所述的線程編號,如
果是,則轉步驟C122;否則轉步驟C126; C126.判斷步驟C3返回的線程優(yōu)化結構的線程編號是否等于0,如果是,則轉步驟C127;
否則循環(huán)中斷指令線程優(yōu)化操作結束; C127.執(zhí)行所述的動態(tài)回收的操作,循環(huán)中斷指令線程優(yōu)化操作結束。 本發(fā)明與已有技術相比較,具有如下面顯而易見的突出實質性特點和顯著有點本發(fā)明 能夠盡可能減少不必要線程執(zhí)行,縮短程序執(zhí)行時間,提高處理器有效利用率。


圖1是本發(fā)明中的線程并行優(yōu)化方法的流程2是本發(fā)明中的線程優(yōu)化結構的結構圖 圖3是本發(fā)明中的構造線程組編號的流程圖 圖4是本發(fā)明中的構造線程編號的流程圖 圖5是本發(fā)明中的處理器優(yōu)化結構的動態(tài)分配操作的流程圖 圖6是本發(fā)明中的線程并行執(zhí)行優(yōu)化的流程圖 圖7是本發(fā)明中的子程序返回指令線程優(yōu)化操作的流程圖 圖8是本發(fā)明中的互斥類型線程優(yōu)化操作的流程圖 圖9是本發(fā)明中的循環(huán)中斷指令線程優(yōu)化操作的流程圖
具體實施例方式
本發(fā)明的一個優(yōu)選實施例結合附圖詳述如下
本實施例所述方案的應用環(huán)境是面向多核處理器的線程級并行執(zhí)行環(huán)境,本實施例不限定 所述技術方案應用環(huán)境中多核處理器架構和線程劃分及調度方式。
下面結合說明書附圖和具體實施方式
對本發(fā)明作進一步詳細的說明。 參照圖l,示出了本線程并行優(yōu)化方法的流程圖。 步驟IOI,為每一個線程構造線程優(yōu)化結構; 步驟102,為每一臺處理器構造處理器優(yōu)化結構;
步驟103,利用步驟101構造的線程優(yōu)化結構和步驟102構造的處理器優(yōu)化結構來優(yōu)化結 構優(yōu)化線程并行執(zhí)行。
參照圖2,示出了本實施例中的線程優(yōu)化結構的結構圖。
線程優(yōu)化結構分為控制部分、線程組編號和線程編號三部分,由9個字節(jié)構成。其中,第 l個字節(jié)為控制部分,第2個至第5個字節(jié)為線程組編號,第6個至第9個字節(jié)為線程編號。
標識符201,標識了控制部分的第1個二進制位標識線程并行執(zhí)行是否需要優(yōu)化,如果為 1,則標識線程并行執(zhí)行需要優(yōu)化;如果為O,則標識線程并行執(zhí)行不需要優(yōu)化;
標識符202,標識了控制部分的第2個二進制位標識線程是否包含子程序返回指令,如果 為l,則標識線程包含子程序返回指令;如果為O,則標識線程不包含子程序返回指令;
標識符203,標識了控制部分的第3個二進制位標識第1個字節(jié)的第2個二進制位為0的 線程是否執(zhí)行,如果為l,則標識第1個字節(jié)的第2個二進制位為0的線程停止執(zhí)行;如果 為0,則第1個字節(jié)的第2個二進制位為0的線程執(zhí)行;
標識符204,標識了控制部分的第4個二進制位標識步驟A3所述的線程組中的線程是否 為互斥類型,如果為l,則標識線程組中的線程為互斥類型;如果為O,則標識線程組中的線程不是互斥類型;
標識符205,標識了控制部分的第5個二進制位標識步驟A3所述的線程組是否包含循環(huán) 指令,如果為l,則標識線程組包含循環(huán)指令;如果為O,則標識線程組不包含循環(huán)指令;
標識符206,標識了控制部分的第6個二進制位標識步驟A3所述的線程組是否包含循環(huán) 中斷指令;如果為l,則標識線程組包含循環(huán)中斷指令;如果為O,則標識線程組不包含循環(huán) 中斷指令;
標識符207,標識了控制部分的二進制位預留; 標識符208,標識了控制部分的二進制位預留; 標識符209,標識了線程優(yōu)化結構中的線程組編號; 標識符210,標識了線程優(yōu)化結構中的線程編號。
參照圖3,示出了本實施例中的構造線程組編號的流程圖。 步驟301,按照線程執(zhí)行的順序依次分析;
步驟302,將所有包含子程序返回指令的線程歸為同一個線程組; 本步驟將包含子程序返回指令的所有線程歸為同一個線程組; 步驟303,將屬于同一層跳轉指令范疇內的線程歸為同一個線程組; 步驟304,將位于同一層循環(huán)指令范疇內的線程歸為同一個線程組;
步驟305,將經(jīng)過步驟302、 303、 304歸類后剩余的每一個線程都歸為一個單獨的線程組; 本步驟將剩余的每一個線程都作為一個單獨的線程組,即該線程組中只含有一個線程,
此類線程不需要單獨并行執(zhí)行優(yōu)化,因而此類線程的線程優(yōu)化結構的第1個二進制為0; 步驟306,按照線程組執(zhí)行的順序,從l開始由小到大依次為線程組編號; 步驟307,將步驟306所述線程組編號存儲到線程優(yōu)化結構的第2個到第5個字節(jié)中; 本步驟中的線程優(yōu)化結構的第2個到第5個字節(jié)為線程組編號,因而將構造的線程組編號
存儲在第2個到第5個字節(jié)中。
參照圖4,示出了本實施例中的構造線程編號的流程圖。 步驟401,按照線程組執(zhí)行的順序依次分析;
步驟402,按照線程組中線程的執(zhí)行順序,從l開始由小到大依次為線程編號; 本步驟表明線程組編號是按照線程在線程組中執(zhí)行的順序構造的,線程編號是線程在線程 組內部的編號,在線程組之外是無意義的。步驟403,判斷線程組所在線程優(yōu)化結構中的控制部分的第4個二進制位是否為1,如果 為l,則轉步驟404;否則轉步驟405;
步驟404,將線程組內所有線程編號設置為該線程組內線程編號的最大值;
本步驟針對互斥類型的線程設計。在互斥類型的線程并行執(zhí)行優(yōu)化中,線程組每次執(zhí)行過 程中有且僅有一個線程被正確執(zhí)行,因而當某一個線程正確執(zhí)行時,應當終止其它線程執(zhí)行, 并且回收處理器優(yōu)化結構中分配的空間。但由于線程執(zhí)行順序是不確定的,所以只有該線程 組對應的處理器優(yōu)化結構不再需要時,才能進行動態(tài)回收。本步驟將線程編號設為最大值, 即設為該線程組內線程的數(shù)目每次優(yōu)化該線程組內一個線程執(zhí)行時都將線程編號減1,當 線程編號等于0時,該線程組對應的處理器優(yōu)化結構就可以進行動態(tài)回收操作。
步驟405,將步驟402和步驟404所述線程編號存儲在線程優(yōu)化結構的第6個到第9個字 節(jié)中。
本步驟中的線程優(yōu)化結構的第6個到第9個字節(jié)為線程編號,因而將構造的線程編號存儲 在第6個到第9個字節(jié)中。
參照圖5,示出了本實施例中的處理器優(yōu)化結構的動態(tài)分配操作的流程圖。 步驟501,査找線程所在線程組是否在處理器優(yōu)化結構中,如果是,則轉步驟502;否則, 轉步驟503;
本步驟除了處理器優(yōu)化結構的動態(tài)分配操作外,還包括査詢操作;如果要査詢的線程組 已在處理器優(yōu)化結構中,本步驟返回該線程組所在的線程優(yōu)化結構; 步驟502,返回該線程組所在的線程優(yōu)化結構;
步驟503,為處理器優(yōu)化結構增加9個字節(jié)作為新增的線程優(yōu)化結構; 步驟504,將步驟503所述的線程優(yōu)化結構的控制部分的8個二進制位全部設置為0; 步驟505,將步驟501所述的線程組編號存儲到步驟503所述的線程優(yōu)化結構的線程組編 號中;
步驟506,將步驟501所述的線程編號存儲到步驟503所述的線程優(yōu)化結構的線程編號中; 步驟504、步驟505、步驟506為新增加的線程優(yōu)化結構初始化; 步驟507,返回步驟503所述的線程優(yōu)化結構; 本步驟返回新增的線程優(yōu)化結構。
參照圖6,示出了本實施例中的線程并行執(zhí)行優(yōu)化的流程圖。
步驟601,判斷線程是否全部執(zhí)行完畢,如果是,則線程并行執(zhí)行優(yōu)化操作完成否則轉步驟602;
本步驟判斷線程是否全部執(zhí)行完畢,如果全部執(zhí)行完畢,那么線程并行執(zhí)行優(yōu)化操作也相 應結束。
步驟602,判斷步驟601所述線程的線程優(yōu)化結構中的控制部分的第1個二進制位是否為 0,如果為0,則轉步驟603;否則轉步驟604;
本步驟判斷當前線程是否需要做線程并行執(zhí)行優(yōu)化; 步驟603,繼續(xù)執(zhí)行該線程,轉步驟601;
本步驟表明,如果不做線程并行執(zhí)行優(yōu)化,那么處理器核繼續(xù)執(zhí)行該線程,并繼續(xù)分析下 一條指令是否要做線程并行執(zhí)行優(yōu)化;
步驟604,執(zhí)行處理器優(yōu)化結構的動態(tài)分配操作;
本步驟為當前正在進行線程并行執(zhí)行優(yōu)化的線程動態(tài)分配處理器優(yōu)化結構,如果該線程所 在的線程優(yōu)化結構己存在于處理器優(yōu)化結構,那么只返回該線程優(yōu)化結構;否則為該線程動 態(tài)分配線程優(yōu)化結構所需的空間,并進行初始化;
步驟605,判斷正在執(zhí)行線程的線程優(yōu)化結構中的控制部分的第2個二進制位是否為1, 如果為l,則轉步驟606;否則轉步驟607;
步驟6G6,執(zhí)行子程序返回指令線程優(yōu)化操作;
步驟605、步驟606表示當線程組內的線程包含子程序返回指令時,對線程做執(zhí)行子程序 返回指令線程優(yōu)化操作;
步驟607,判斷步驟604返回的線程優(yōu)化結構的控制部分的第3個二進制位設置是否為1, 若為l,則轉步驟601;否則轉步驟608;
歩驟60S,判斷正在執(zhí)行線程的線程優(yōu)化結構中的控制部分的第4個二進制位是否為1, 如果為l,則轉步驟609:否則轉步驟610;
步驟609,執(zhí)行互斥類型線程優(yōu)化操作;
步驟608、步驟609表示當線程組內的線程為互斥類型時,對線程執(zhí)行互斥類型線程優(yōu)化 操作;
步驟610,判斷正在執(zhí)行線程的線程優(yōu)化結構中的控制部分的第5個二進制位是否為1, 如果為l,則轉步驟611;否則轉步驟603;
本步驟判斷線程是否為由循環(huán)語句劃分而得的;
步驟6U,判斷正在執(zhí)行線程的線程優(yōu)化結構中的控制部分的第6個二進制位是否為1, 如果為l,則轉步驟612;否則轉步驟603;步驟612,執(zhí)行循環(huán)中斷指令線程優(yōu)化操作。
步驟611、步驟612表示當線程組內的線程包含循環(huán)中斷指令時,對線程循環(huán)中斷指令線 程優(yōu)化操作;
參照圖7,示出了本實施例中的子程序返回指令線程優(yōu)化操作的流程圖。
步驟701,判斷步驟C4所述線程優(yōu)化結構中的線程編號是否小于步驟C3返回的線程優(yōu)化 結構中的線程編號,如果是,則轉步驟703;否則轉步驟702;
本步驟判斷當前正在優(yōu)化線程的線程編號是否小于處理器優(yōu)化結構中的線程編號,如果 是,表明執(zhí)行順序在當前線程之前的線程已經(jīng)執(zhí)行,那么當前線程應停止執(zhí)行;
步驟702,終止該線程執(zhí)行;
步驟703,將動態(tài)分配操作返回的線程優(yōu)化結構中的線程編號更換為當前線程的線程編號;
步驟704,將動態(tài)分配操作返回的線程優(yōu)化結構中的控制部分的第3個二進制位設置為1;
步驟705,判斷其它處理器核正在執(zhí)行線程的線程組編號是否大于歩驟C4所述線程的線 程組編號,如果是,則轉702;否則轉步驟706;
步驟706,判斷其它處理器核正在執(zhí)行線程的線程組編號是否等于步驟C4所述線程的線 程組編號,且前者的線程編號大于后者的線程編號,如果是,轉步驟702;否則轉步驟707;
步驟707,判斷動態(tài)分配操作返回的線程優(yōu)化結構中的線程編號是否等于0,如果是,則 轉步驟708;否則子程序返回指令線程優(yōu)化操作結束;
步驟708,執(zhí)行處理器優(yōu)化結構的動態(tài)回收操作,子程序返回指令線程優(yōu)化操作結束。
參照圖8,示出了本實施例中的互斥類型線程優(yōu)化操作的流程圖。 步驟801,將動態(tài)分配操作返回的線程優(yōu)化結構的線程編號減去h
步驟802,判斷動態(tài)分配操作返回的線程優(yōu)化結構的控制部分的第4個二進制位是否為1, 若為l,則轉步驟803;否則繼續(xù)執(zhí)行該線程并轉步驟804; 步驟803,停止執(zhí)行該線程
步驟804,將動態(tài)分配操作返回的線程優(yōu)化結構的控制部分的第4個二進制位設置為1; 步驟805,判斷其它處理核正在執(zhí)行線程的線程組編號是否與步驟C7所述線程的線程組 編號相同,如果相同,則轉步驟806;否則轉步驟808;
步驟806,停止執(zhí)行步驟C805所述的線程組編號相同的線程
步驟807,將動態(tài)分配操作返回的線程優(yōu)化結構的線程編號減去步驟806停止執(zhí)行線程的數(shù)目;
步驟808,判斷動態(tài)分配操作返回的線程優(yōu)化結構的線程編號是否等于0,如果是,則轉 步驟809;否則互斥類型線程優(yōu)化操作結束;
步驟809,執(zhí)行處理器優(yōu)化結構的動態(tài)回收操作,互斥類型線程優(yōu)化操作結束;
參照圖9,示出了本實施例中的循環(huán)中斷指令線程優(yōu)化操作的流程圖。
步驟901,判斷正在執(zhí)行線程的線程優(yōu)化結構中的線程編號是否小于動態(tài)分配操作返回的 線程優(yōu)化結構的線程編號,如果是,則轉步驟C123;否則轉步驟C122;
本步驟判斷當前線程是否需要終止執(zhí)行。如果小于,表明執(zhí)行順序在當前線程之前的線程 已正確執(zhí)行,那么當前線程應停止執(zhí)行;
步驟902,終止該線程執(zhí)行;
步驟903,將動態(tài)分配操作返回的線程優(yōu)化結構的線程編號更換為步驟C121所述的正在 執(zhí)行線程的線程編號;
如果當前線程的線程編號小于處理器優(yōu)化結構中的線程編號,表明應采用當前線程的線程 編號作為優(yōu)化當前線程所在線程組中線程的關鍵點,即如果線程的線程編號大于當前線程的
線程編號,則終止執(zhí)行該線程;
步驟904,判斷其它處理器核正在執(zhí)行線程的線程組編號是否與步驟C10所述的線程組編 號相同,如果相同,則轉步驟C125;否則轉步驟C126;
步驟905,判斷其它處理器核正在執(zhí)行線程的線程編號是否大于步驟C10所述的線程編號, 如果是,則轉步驟C122;否則轉歩驟C126;
步驟906,判斷動態(tài)分配操作返回的線程優(yōu)化結構的線程編號是否等于0,如果是,則轉
步驟C127;否則循環(huán)中斷指令線程優(yōu)化操作結束;
本步驟是判斷當前線程優(yōu)化時是否需要執(zhí)行相應的處理器優(yōu)化結構的回收操作,如果當前
線程所在的線程組已優(yōu)化完畢,則回收處理器優(yōu)化結構中相應的線程優(yōu)化結構所占的空間;
步驟907,執(zhí)行所述的動態(tài)回收操作,循環(huán)中斷指令線程優(yōu)化操作結束。
以上對本多處理器實時任務執(zhí)行功耗優(yōu)化方法,進行了詳細的介紹。本文結合說明書附圖和
具體實施例進行闡述只是用于幫助理解本發(fā)明的方法和核心思想;同時,對于本領域的一般
技術人員,依據(jù)本發(fā)明的方法和思想,在具體實施方式
和應用范圍上均會有改變之處,綜上 所述,本說明書內容不應理解為對本發(fā)明的限制。
權利要求
1. 一種線程并行執(zhí)行優(yōu)化方法,其特征在于具體操作步驟如下A. 為每一個線程構造線程優(yōu)化結構;B. 為每一臺處理器構造處理器優(yōu)化結構;C. 利用步驟A所述的線程優(yōu)化結構和步驟B所述的處理器優(yōu)化結構來優(yōu)化結構優(yōu)化線程并行執(zhí)行。
2. 根據(jù)權利要求1所述的線程并行執(zhí)行優(yōu)化方法,其特征在于所述步驟A中的構造線程優(yōu)化結構的操作步驟如下Al.為線程優(yōu)化結構分配連續(xù)的9個字節(jié)的內存空間;A2.使用步驟Al所述的9個字節(jié)中的第1個字節(jié),構造線程優(yōu)化結構中的控制部分;A3.使用步驟Al所述的9個字節(jié)中的第2個到第5個字節(jié),構造線程優(yōu)化結構中的線程組編號;A4.使用步驟Al所述的9個字節(jié)中的第6個到第9個字節(jié),構造線程優(yōu)化結構中的線程編號。
3. 根據(jù)權利要求2所述的線程并行執(zhí)行優(yōu)化方法,其特征在于所述步驟A2中的構造線程優(yōu)化結構中的控制部分的操作步驟如下A21.控制部分的第1個二進制位標識線程并行執(zhí)行是否需要優(yōu)化如果為l,則標識線程并行執(zhí)行需要優(yōu)化;如果為0,則標識線程并行執(zhí)行不需要優(yōu)化;A22.控制部分的第2個二進制位標識線程是否包含子程序返回指令如果為l,則標識線程包含子程序返回指令;如果為0,則標識線程不包含子程序返回指令;A23.控制部分的第3個二進制位標識第1個字節(jié)的第2個二進制位為0的線程是否執(zhí)行:如果為l,則標識第1個字節(jié)的第2個二進制位為0的線程停止執(zhí)行;如果為O,則第1個字節(jié)的第2個二進制位為0的線程執(zhí)行;A24.控制部分的第4個二進制位標識步驟A3所述的線程組中的線程是否為互斥類型-如果為l,則標識線程組中的線程為互斥類型;如果為0,則標識線程組中的線程不是互斥類型;A25.控制部分的第5個二進制位標識步驟A3所述的線程組是否包含循環(huán)指令如果為1,則標識線程組包含循環(huán)指令如果為0,則標識線程組不包含循環(huán)指令;A26.控制部分的第6個二進制位標識步驟A3所述的線程組是否包含循環(huán)中斷指令如果為l,則標識線程組包含循環(huán)中斷指令;如果為0,則標識線程組不包含循環(huán)中斷指令;A27.控制部分的第7個至第8個二進制位預留。
4. 根據(jù)權利要求3所述的線程并行執(zhí)行優(yōu)化方法,其特征在于所述步驟A23中的線程組中的線程為互斥類型是指所述線程組在某一次執(zhí)行中有且僅有一個線程被正確執(zhí)行。
5. 根據(jù)權利要求2所述的線程并行執(zhí)行優(yōu)化方法,其特征在于所述步驟A3中的構造線程優(yōu)化結構中的線程組編號的操作步驟如下A31 .按照線程執(zhí)行的順序依次分析;A32.將所有包含子程序返回指令的線程歸為同一個線程組;A33.將屬于同一層跳轉指令范疇內的線程歸為同一個線程組;A34.將位于同一層循環(huán)指令范疇內的線程歸為同一個線程組;A35.將經(jīng)過步驟A32、 A33、 A34歸類后剩余的每一個線程都歸為一個單獨的線程組;A36.按照線程組執(zhí)行的順序,從l開始由小到大依次為線程組編號;A37.將步驟A36所述線程組編號存儲到步驟A3所述的第2個到第5個字節(jié)中;A38.構造線程優(yōu)化結構中的線程組編號的操作執(zhí)行完畢。
6. 根據(jù)權利要求5所述的線程并行執(zhí)行優(yōu)化方法,其特征在于所述步驟A32中的同一層跳轉指令是指執(zhí)行跳轉指令時處理器測試的變量相同;所述步驟A33中的同一層循環(huán)指令是指執(zhí)行循環(huán)指令時處理器測試的變量相同。
7. 根據(jù)權利要求2所述的線程并行執(zhí)行優(yōu)化方法,其特征在于所述步驟A4中的構造線程優(yōu)化結構中的線程編號的操作步驟如下A41.按照線程組執(zhí)行的順序依次分析;A42.按照線程組中線程的執(zhí)行順序,從l開始由小到大依次為線程編號;A43.判斷線程組所在線程優(yōu)化結構中的控制部分的第4個二進制位是否為1,如果為1,則轉步驟A44;否則轉步驟A45;A44.將線程組內所有線程編號設置為該線程組內線程編號的最大值;A45.將步驟A42和步驟A44所述線程編號存儲在步驟A4所述的第6個到第9個字節(jié)中。
8. 根據(jù)權利要求1所述的線程并行執(zhí)行優(yōu)化方法,其特征在于所述步驟B中的處理器優(yōu)化結構是指以線程優(yōu)化結構Jl元素的動態(tài)數(shù)組所沐處理器優(yōu)化結構包括動態(tài)分配和動態(tài)回收兩個操作。
9. 根據(jù)權利要求8所述的線程并行執(zhí)行優(yōu)化方法,其特征在于所述的動態(tài)分配的操作步驟如下BA1.査找線程所在線程組是否在所述的處理器優(yōu)化結構中,如果是,則轉步驟BA2;否貝IJ,轉步驟BA3;BA2.返回該線程組所在的線程優(yōu)化結構;BA3.為所述的動態(tài)數(shù)組增加9個字節(jié)作為新增的線程優(yōu)化結構;BA4.將步驟BA3所述的線程優(yōu)化結構的控制部分的8個二進制位全部設覽為0;BA5.將步驟BA1所述的線程組編號存儲到步驟BA3所述的線程優(yōu)化結構的線程組編號中;BA6.將步驟BA1所述的線程編號存儲到步驟BA3所述的線程優(yōu)化結構的線程編號中;BA7.返回步驟BA3所述的線程優(yōu)化結構;所述的動態(tài)回收的操作是指將要求刪除的元素從動態(tài)數(shù)組中刪除。
10. 根據(jù)權利要求9所述的線程并行執(zhí)行優(yōu)化方法,其特征在于所述步驟C中的優(yōu)化線程并行執(zhí)行的操作步驟如下-Cl.判斷線程是否全部執(zhí)行完畢,如果是,則線程并行執(zhí)行優(yōu)化操作完成;否則轉步驟C2;C2.判斷步驟Cl所述線程的線程優(yōu)化結構中的控制部分的第1個二進制位是否為0,如果為0,則轉步驟C3;否則轉步驟C4;C3.繼續(xù)執(zhí)行該線程,轉步驟C1;C4.執(zhí)行所述的動態(tài)分配的操作;C5.判斷正在執(zhí)行線程的線程優(yōu)化結構中的控制部分的第2個二進制位是否為1,如果為1,則轉步驟C6;否則轉步驟C7;C6.執(zhí)行子程序返回指令線程優(yōu)化操作,轉步驟C1;C7.判斷C4返回的線程優(yōu)化結構的控制部分的第3個二進制位設置是否為1,若為l,則轉步驟C1;否則轉步驟C8;C8.判斷正在執(zhí)行線程的線程優(yōu)化結構中的控制部分的第4個二進制位是否為1,如果為1,則轉步驟C9;否則轉步驟C10;C9.執(zhí)行互斥^MMim化操作,轉步驟ci:C10.判斷正在執(zhí)行線程的線程優(yōu)化結構中的控制部分的第5個二進制位是否為1,如果為1,則轉步驟C11;否則轉步驟C3;Cll.判斷正在執(zhí)行線程的線程優(yōu)化結構中的控制部分的第6個二進制位是否為1,如果為1,則轉步驟C12;否則轉步驟C3;C12.執(zhí)行循環(huán)中斷指令線程優(yōu)化操作,轉步驟C1。
11. 根據(jù)權利要求10所述的線程并行執(zhí)行優(yōu)化方法,其特征在于所述步驟C6中的子程序返回指令線程優(yōu)化操作的操作步驟如下C61.判斷步驟C4所述線程優(yōu)化結構中的線程編號是否小于步驟C3返回的線程優(yōu)化結構中的線程編號,如果是,則轉步驟C63;否則轉步驟C62;C62.終止該線程執(zhí)行;C63.將步驟C3返回的線程優(yōu)化結構中的線程編號更換為步驟C4所述的正在執(zhí)行線程的線程編號;C64.將C3返回的線程優(yōu)化結構中的控制部分的第3個二進制位設置為1;C65.判斷其它處理器核正在執(zhí)行線程的線程組編號是否大于步驟C4所述線程的線程組編號,如果是,則轉C62;否則轉步驟C66;C66.判斷其它處理器核正在執(zhí)行線程的線程組編號是否等于步驟C4所述線程的線程組編號,且前者的線程編號大于后者的線程編號,如果是,轉步驟C62;否則轉步驟C67;C67.判斷步驟C3返回的線程優(yōu)化結構中的線程編號是否等于0,如果是,則轉步驟C69;否則子程序返回指令線程優(yōu)化操作結束;C68.執(zhí)行所述的動態(tài)回收的操作,子程序返回指令線程優(yōu)化操作結束。
12. 根據(jù)權利要求10所述的線程并行執(zhí)行優(yōu)化方法,其特征在于所述步驟C9中的互斥類型線程優(yōu)化操作的操作步驟如下C91.將C3返回的線程優(yōu)化結構的線程編號減去1;C92.判斷C3返回的線程優(yōu)化結構的控制部分的第4個二進制位是否為1,若為l,則轉步驟C93;否則繼續(xù)執(zhí)行該線程并轉步驟C94;C93.停止執(zhí)行該線程;C94.將步驟C3返回的線程優(yōu)化結構的控制部分的第4個二進制位設置為1;C95.判斷其它處理核正在執(zhí)行線程的線程組編號是否與步驟C7所述線程的線程組編號相同,如果相同,則轉步驟C96;否則轉步驟C1;C96.停止執(zhí)行步驟C95所述的線程組編號相同的線程C97.將步驟C3返回的線程優(yōu)化結構的線程編號減去步驟C96停止執(zhí)行線程的數(shù)目;C98.判斷步驟C3返回的線程優(yōu)化結構的線程編號是否等于0,如果是,則轉步驟C99;否則互斥類型線程優(yōu)化操作結束;C99.執(zhí)行所述的動態(tài)回收的操作,互斥類型線程優(yōu)化操作結束。
13.根據(jù)權利要求IO所述的線程并行執(zhí)行優(yōu)化方法,其特征在于所述歩驟C12中的循環(huán)中斷指令線程優(yōu)化操作的操作步驟如下-C121.判斷正在執(zhí)行線程的線程優(yōu)化結構中的線程編號是否小于步驟C3返回的線程優(yōu)化結構的線程編號,如果是,則轉步驟C123;否則轉步驟C122;C122.終止該線程執(zhí)行;C123.將步驟C3返回的線程優(yōu)化結構的線程編號更換為步驟C121所述的正在執(zhí)行線程的線程編號;C124.判斷其它處理器核正在執(zhí)行線程的線程組編號是否與步驟C10所述的線程組編號相同,如果相同,則轉步驟C125;否則轉步驟C126;C125.判斷其它處理器核正在執(zhí)行線程的線程編號是否大于步驟C10所述的線程編號,如果是,則轉步驟C122;否則轉步驟C126;C126.判斷步驟C3返回的線程優(yōu)化結構的線程編號是否等于0,如果是,則轉步驟C127;否則循環(huán)中斷指令線程優(yōu)化操作結束;C127.執(zhí)行所述的動態(tài)回收的操作,循環(huán)中斷指令線程優(yōu)化操作結束。
全文摘要
本發(fā)明公開了一種線程并行執(zhí)行優(yōu)化方法。它是利用線程的語義和線程之間的關系優(yōu)化線程并行執(zhí)行。首先為每一線程構造線程優(yōu)化結構,并且為每一臺處理器構造處理器優(yōu)化結構;其次為處理器優(yōu)化結構設計動態(tài)分配和回收操作;接著為每一種類型線程設計線程并行執(zhí)行優(yōu)化操作;最后按照線程優(yōu)化結構的控制部分的含義優(yōu)化線程并行執(zhí)行。本發(fā)明能夠盡可能減少不必要線程執(zhí)行,縮短程序執(zhí)行時間,提高處理器有效利用率。
文檔編號G06F9/38GK101482813SQ20091004649
公開日2009年7月15日 申請日期2009年2月24日 優(yōu)先權日2009年2月24日
發(fā)明者悅 吳, 唐立三, 磊 徐, 楊洪斌, 林劍領, 雷超付 申請人:上海大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
浪卡子县| 杭锦后旗| 缙云县| 昌图县| 大英县| 杭锦后旗| 清流县| 安西县| 朝阳区| 南康市| 普格县| 通道| 湖口县| 白河县| 南丹县| 和田县| 庆阳市| 育儿| 睢宁县| 江油市| 黑水县| 邵阳市| 云浮市| 厦门市| 芜湖市| 房产| 崇左市| 娱乐| 鹰潭市| 衡山县| 五台县| 上饶市| 汝城县| 盐池县| 鲁甸县| 天气| 新巴尔虎左旗| 南安市| 富蕴县| 阿瓦提县| 玛纳斯县|