欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

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

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

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


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