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

異步線程重組方法及基于該方法的SIMT處理器與流程

文檔序號(hào):12176659閱讀:384來源:國(guó)知局
異步線程重組方法及基于該方法的SIMT處理器與流程

本發(fā)明涉及到計(jì)算機(jī)架構(gòu)領(lǐng)域,提供了一種異步線程重組方法及基于該方法的SIMT處理器。



背景技術(shù):

SIMT(Single Instruction Multiple Thread)是并行計(jì)算中的一種常見執(zhí)行模型。SIMT處理器中包含一個(gè)或多個(gè)SIMD(Single Instruction Multiple Data)陣列。每個(gè)SIMD陣列由大量結(jié)構(gòu)相同的處理單元組成。在同一時(shí)鐘周期內(nèi),SIMD陣列內(nèi)的所有處理單元處理不同的數(shù)據(jù),但必須執(zhí)行相同的指令。這是SIMD執(zhí)行方式的限制。在SIMT處理器上執(zhí)行的并行程序包含大量線程,這些線程被劃分為若干線程組交替執(zhí)行。在每個(gè)時(shí)鐘周期,SIMT處理器中的調(diào)度器選擇一個(gè)線程組,將其安排到空閑的SIMD陣列上執(zhí)行。SIMD陣列中的每個(gè)處理單元負(fù)責(zé)執(zhí)行該線程組中的一個(gè)線程。

當(dāng)同一線程組內(nèi)的線程所處理的任務(wù)存在差異時(shí),SIMD陣列內(nèi)的處理單元無法全部同時(shí)工作,導(dǎo)致SIMT處理器的處理能力不能得到最大利用。任務(wù)差異性包括但不限于:執(zhí)行條件指令時(shí)判斷結(jié)果的差異、執(zhí)行訪存指令時(shí)訪存地址的差異、任務(wù)總執(zhí)行時(shí)間的差異。以條件指令判斷結(jié)果的差異為例,線程組內(nèi)的線程根據(jù)判斷結(jié)果的不同而執(zhí)行不同的指令。由于SIMD執(zhí)行方式的限制,判斷結(jié)果為真的線程對(duì)應(yīng)的處理單元和判斷結(jié)果為假的線程對(duì)應(yīng)的處理單元因執(zhí)行不同的指令而無法同時(shí)工作。SIMD陣列需要先執(zhí)行判斷結(jié)果為真的線程,再執(zhí)行判斷結(jié)果為假的線程。在此過程中,SIMD陣列中總存在部分處理單元閑置,其處理能力不能得到最大利用。當(dāng)線程組內(nèi)的線程存在訪存地址差異和任務(wù)總執(zhí)行時(shí)間之間的差異時(shí),也會(huì)出現(xiàn)類似的問題。

解決上述問題的一種可行思路是線程重組。當(dāng)SIMT處理器執(zhí)行到存在任務(wù)差異性的指令時(shí),線程重組在不同線程組之間交換線程,將不存在任務(wù)差異性的線程安排在同一線程組。這樣,在執(zhí)行這些線程組時(shí)SIMD陣列中的所有處理單元可以同時(shí)工作。然而,現(xiàn)有的線程重組技術(shù)在交換線程前要求線程組之間進(jìn)行同步。僅當(dāng)所有線程組均執(zhí)行到待線程重組的指令后,線程重組才能開始交換線程。在SIMT處理器上,同步操作會(huì)帶來SIMD陣列的額外停頓,存在不可忽視的性能開銷。



技術(shù)實(shí)現(xiàn)要素:

發(fā)明目的:針對(duì)上述現(xiàn)有技術(shù)存在的問題和不足,本發(fā)明的目的是提供一種異步線程重組方法及基于該方法的SIMT處理器,在不進(jìn)行線程組同步的情況下,通過線程重組消除線程組內(nèi)任務(wù)差異性,從而避免SIMD陣列中處理單元的閑置,使SIMT處理器的處理能力得到更充分利用。

技術(shù)方案:為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采用的技術(shù)方案為一種異步線程重組方法,用于SIMT處理器,該SIMT處理器包含:存儲(chǔ)有當(dāng)前SIMT處理器上執(zhí)行的線程組的線程組池、負(fù)責(zé)在每個(gè)時(shí)鐘周期從線程組池中選取一個(gè)就緒的線程組將其分配到一個(gè)空閑的SIMD陣列上執(zhí)行一條指令的調(diào)度器、一個(gè)或多個(gè)負(fù)責(zé)執(zhí)行線程組指令的SIMD陣列、用于存儲(chǔ)線程組以及與該線程組相對(duì)應(yīng)信息的線程組槽和用于生成線程重組方案的重組緩沖區(qū);

其中,該線程重組方案為線程重組后每個(gè)線程組中包含的線程;

其中,該重組緩沖區(qū)由若干重組隊(duì)列組成;該重組隊(duì)列存儲(chǔ)的信息有位于重組隊(duì)列中的線程對(duì)應(yīng)的指令PC值、位于重組隊(duì)列中的線程的任務(wù)屬性和任務(wù)屬性相同的線程;

其中,該線程組槽包含存儲(chǔ)當(dāng)前時(shí)刻線程組中包含的線程和存儲(chǔ)相應(yīng)線程組的鎖定狀態(tài);

具體的,該方法包括以下工作流程:

a)通過該調(diào)度器選取一個(gè)線程組槽未被鎖定的線程組;

b)判斷該線程組是否存在任務(wù)差異性,若該線程組不存在任務(wù)差異性,則將直接其分配到SIMD陣列執(zhí)行;反之,設(shè)置該線程組對(duì)應(yīng)的線程組槽的鎖定標(biāo)志以鎖定該線程組槽,將該線程組槽中的線程按任務(wù)屬性分組,任務(wù)屬性相同的線程加入重組緩沖區(qū)中形成重組隊(duì)列,該新加入的線程的指令PC值和任務(wù)屬性與先前位于該重組隊(duì)列的線程的指令PC值和任務(wù)屬性相一致;

c1)依次檢查在步驟b)中被添加線程的重組隊(duì)列,若當(dāng)重組隊(duì)列中的線程數(shù)滿足一個(gè)或多個(gè)線程組所能容納的線程數(shù)時(shí),依次從重組隊(duì)列中移除數(shù)量為線程組線程數(shù)的倍數(shù)的線程打包成一個(gè)待寫入線程組;

c2)處理步驟c1)中的待寫入線程組,將其寫入至已被鎖定的線程組槽內(nèi),該被移入線程的線程組槽對(duì)應(yīng)的線程組的指令PC值與相應(yīng)的被移除線程的重組隊(duì)列的指令PC值相同,重復(fù)步驟b),并解鎖該線程組槽;

d)重復(fù)步驟a)~步驟c)直至SIMT處理器上的程序執(zhí)行完成。

進(jìn)一步的,在步驟c2)和步驟d)之間還包括步驟c3):查找在重組緩沖區(qū)中被滯留的線程,若不存在,則執(zhí)行步驟a);若存在,由滯留時(shí)間長(zhǎng)至短依次從重組緩沖區(qū)中移出數(shù)量為線程組線程數(shù)的倍數(shù)的線程打包成一個(gè)待寫入線程組,執(zhí)行步驟c2)。

進(jìn)一步的,處于解鎖狀態(tài)的線程組槽對(duì)應(yīng)的線程組才會(huì)被分配到SIMD陣列執(zhí)行。

進(jìn)一步的,在重組緩沖區(qū)中等待的過程中,線程組之間為異步狀態(tài),線程組被異步加入重組緩沖區(qū)或被異步移出重組緩沖區(qū)寫入線程組槽。

本發(fā)明還公開了一種基于異步線程重組方法的SIMT處理器,該SIMT處理器至少包含:存儲(chǔ)有當(dāng)前SIMT處理器上執(zhí)行的線程組的線程組池、負(fù)責(zé)在每個(gè)時(shí)鐘周期從線程組池中選取一個(gè)就緒的線程組將其分配到一個(gè)空閑的SIMD陣列上執(zhí)行一條指令的調(diào)度器、一個(gè)或多個(gè)負(fù)責(zé)執(zhí)行線程組的指令的SIMD陣列、用于存儲(chǔ)線程組以及與該線程組相對(duì)應(yīng)信息的線程組槽和用于生成線程重組方案的重組緩沖區(qū);該線程重組方案為線程重組后每個(gè)線程組中包含的線程。

進(jìn)一步的,重組緩沖區(qū)由若干重組隊(duì)列組成;該重組隊(duì)列存儲(chǔ)的信息有位于重組隊(duì)列中的線程對(duì)應(yīng)的指令PC值、位于重組隊(duì)列中的線程的任務(wù)屬性和任務(wù)屬性相同的線程。

進(jìn)一步的,位于重組緩沖區(qū)的線程組之間為異步狀態(tài)。

進(jìn)一步的,線程組槽包含存儲(chǔ)當(dāng)前時(shí)刻線程組中包含的線程和存儲(chǔ)相應(yīng)線程組的鎖定狀態(tài)。

有益效果:本發(fā)明提出的SIMT處理器上的異步線程重組方法可以在不進(jìn)行線程組同步的情況下,通過在不同線程組之間異步交換線程來消除線程組內(nèi)任務(wù)差異性,從而避免SIMD陣列中處理單元的閑置,使SIMT處理器的處理能力得到更充分利用。與現(xiàn)有的線程重組方法相比,該異步方法不會(huì)帶來線程組同步操作產(chǎn)生的SIMD流水線停頓,不存在額外的性能開銷,可使SIMT處理器取得更高性能。

附圖說明

附圖用來提供對(duì)本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實(shí)施例一起用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中:

圖1為本發(fā)明的實(shí)施例中所假設(shè)的基準(zhǔn)SIMT處理器的結(jié)構(gòu)框圖;

圖2為基于本發(fā)明的異步線程重組方法的SIMT處理器的結(jié)構(gòu)框圖;

圖3為本發(fā)明的異步線程重組方法的工作流程圖;

圖4以訪存地址差異性為例,為本發(fā)明的異步線程重組方法在差異性時(shí)的工作原理演示圖。

具體實(shí)施方式

下面結(jié)合附圖和具體實(shí)施例,進(jìn)一步闡明本發(fā)明,應(yīng)理解這些實(shí)施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領(lǐng)域技術(shù)人員對(duì)本發(fā)明的各種等價(jià)形式的修改均落于本申請(qǐng)所附權(quán)利要求所限定的范圍。

圖1為本發(fā)明的實(shí)施例中所假設(shè)的基準(zhǔn)SIMT處理器的結(jié)構(gòu)框圖。SIMT處理器至少包含:線程組池、調(diào)度器、一個(gè)或多個(gè)SIMD陣列。線程組池中存儲(chǔ)有當(dāng)前SIMT處理器上執(zhí)行的線程組。調(diào)度器負(fù)責(zé)在每個(gè)時(shí)鐘周期從線程組池中選取一個(gè)就緒的線程組,將其分配到一個(gè)空閑的SIMD陣列上執(zhí)行一條指令。SIMD陣列負(fù)責(zé)執(zhí)行線程組的指令。

圖2為基于本發(fā)明的異步線程重組方法的SIMT處理器的結(jié)構(gòu)框圖。本發(fā)明的異步線程重組方法在SIMT處理器中新增了線程組槽和重組緩沖區(qū)。

本實(shí)施例中假設(shè)SIMT處理器上共有N個(gè)線程組并行執(zhí)行,相應(yīng)地,SIMT處理器中新增N個(gè)線程組槽,該線程組槽包括頭部和后續(xù)部分,該線程組槽頭部為相應(yīng)線程組的鎖定標(biāo)志,記錄該線程組是否被鎖定;該線程組槽的后續(xù)部分存儲(chǔ)線程重組方案,即線程重組實(shí)施后每個(gè)新線程組中包含的線程,每個(gè)線程用一個(gè)線程編號(hào)標(biāo)識(shí)。

重組緩沖區(qū)由一系列重組隊(duì)列組成,每個(gè)重組隊(duì)列存儲(chǔ)如下信息:該重組隊(duì)列中的線程對(duì)應(yīng)的指令PC值、該重組隊(duì)列中的線程的任務(wù)屬性、任務(wù)屬性不存在差異性的若干線程。

圖3為本發(fā)明的異步線程重組方法的詳細(xì)工作流程圖。此實(shí)施例中假設(shè)每個(gè)線程組中的線程數(shù)為W。

第1步,從線程組池中選取一個(gè)線程組,這一工作由SIMT處理器中的調(diào)度器完成。

第2步,讀取該線程組對(duì)應(yīng)的線程組槽的鎖定標(biāo)志,以檢查該線程組槽是否被鎖定。若被鎖定,則轉(zhuǎn)至第1步。

第3步,檢查該線程組將執(zhí)行的指令是否可能帶來任務(wù)差異性;若否,轉(zhuǎn)第11步。

第4步,設(shè)置該線程組對(duì)應(yīng)的線程組槽中的鎖定標(biāo)志,以鎖定該線程組槽。

第5步,將該線程組對(duì)應(yīng)的線程組槽中的線程按任務(wù)屬性分組,將任務(wù)屬性相同的線程加入到重組緩沖區(qū)中形成指令PC值、任務(wù)屬性均相同的重組隊(duì)列。該步驟中,可能有一個(gè)或多個(gè)重組隊(duì)列被添加線程。

第6步,依次檢查在第5步中被添加線程的重組隊(duì)列,找出累積線程數(shù)目不小于W的重組隊(duì)列;如果不存在這樣的重組隊(duì)列,轉(zhuǎn)第9步。

第7步,依次處理第6步中找到的重組隊(duì)列,將重組隊(duì)列中的前W個(gè)線程移出打包成一個(gè)待寫入線程組。

第8步,處理所有的待寫入線程組,對(duì)于每個(gè)待寫入線程組,將其寫入一個(gè)滿足以下兩項(xiàng)條件的線程組槽內(nèi):(1)該線程組槽已被鎖定,(2)該線程組槽對(duì)應(yīng)的線程組即將執(zhí)行的指令PC值與待寫入線程組中的線程對(duì)應(yīng)的PC值相同;將上述線程組槽內(nèi)的線程分配到SIMD陣列執(zhí)行,并清除該線程組槽中的鎖定標(biāo)志,以解鎖該線程組槽,接著,轉(zhuǎn)至第1步。

第9步,查找在重組緩沖區(qū)中停留時(shí)間過長(zhǎng)的線程;如果不存在這樣的線程,轉(zhuǎn)至第1步。

第10步,將第9步找出的線程中停留時(shí)間最長(zhǎng)的W個(gè)線程移出重組隊(duì)列并打包成一個(gè)待寫入線程組,接著轉(zhuǎn)至第8步。

第11步,直接將調(diào)度器在第1步選取的線程組對(duì)應(yīng)的線程組槽中的線程分配到SIMD陣列執(zhí)行,接著轉(zhuǎn)至第1步。

圖4為本發(fā)明的異步線程重組方法在消除訪存地址差異性時(shí)的工作原理演示圖。此實(shí)施例中假定所執(zhí)行的程序包含一條可能導(dǎo)致任務(wù)差異性的Load指令,PC值為32;還包含兩條不可能導(dǎo)致任務(wù)差異性的Add指令,PC值分別為64、96。此實(shí)施例中還假定SIMT處理器上共有3個(gè)線程組,每個(gè)線程組中所能容納的線程數(shù)為4。

圖4中四幅子圖分別對(duì)應(yīng)t0至t3四個(gè)時(shí)刻,每幅子圖的上半部分為線程組槽的狀態(tài),從左向右分別對(duì)應(yīng)第一線程組1、第二線程組2和第三線程組3;下半部分為重組隊(duì)列的狀態(tài),該實(shí)施例中線程重組用于消除訪存地址的差異性,因此重組隊(duì)列存儲(chǔ)的任務(wù)屬性即訪存地址,線程組中的線程亦按照訪存地址分組進(jìn)入重組隊(duì)列。

時(shí)刻t0,第三線程組3被分配到SIMD陣列上執(zhí)行PC值為64的第一條Add指令,而另兩個(gè)線程組尚未開始執(zhí)行。

時(shí)刻t1,第一線程組1的PC值為32的Load指令被發(fā)射,由于Load指令可能帶來任務(wù)差異性,線程組1所在的線程組槽被鎖定。隨后,第一線程組1的線程按照訪存地址分組進(jìn)入重組緩沖區(qū)中PC值匹配且對(duì)應(yīng)訪存地址0x00和0x80的重組隊(duì)列中。

時(shí)刻t2,第二線程組2中的PC值為32的Load指令被發(fā)射,對(duì)應(yīng)的線程組槽同樣被鎖定,該線程組槽內(nèi)的線程按照訪存地址分組進(jìn)入重組緩沖區(qū)中PC值匹配且對(duì)應(yīng)訪存地址0x80和0x100的重組隊(duì)列,至此,重組隊(duì)列0x80已湊滿一個(gè)線程組。

因此,在時(shí)刻t3,上述已湊滿一個(gè)線程組的重組隊(duì)列被清空,其中的線程5,6,3,4被寫入第一個(gè)線程組槽,并分配到SIMD陣列執(zhí)行,該線程組槽被解鎖。

上述過程中以下兩點(diǎn)需要注意:第一,由于線程組槽的鎖定機(jī)制,線程3,4從時(shí)刻t1進(jìn)入重組緩沖區(qū)到時(shí)刻t3離開緩沖區(qū),PC值一直保持不變,相比之下,執(zhí)行PC值為96的第2條Add指令而未被鎖定的第三線程組槽3中線程9~12的PC值在此期間由64變化為96。第二,線程5,6和3,4原先分別來自兩個(gè)執(zhí)行步調(diào)不同的線程組,但線程組槽的鎖定機(jī)制保證這四個(gè)任務(wù)屬性相同的線程在被寫入到第一線程組槽1時(shí)PC值相同。

最后應(yīng)說明的是:以上該僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,對(duì)于本領(lǐng)域的技術(shù)人員來說,其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
河津市| 巩义市| 阿鲁科尔沁旗| 肥东县| 嘉善县| 清新县| 潞西市| 彭州市| 道孚县| 红安县| 岳池县| 望江县| 濮阳市| 湖口县| 全南县| 迭部县| 河池市| 聂拉木县| 瓮安县| 定州市| 高碑店市| 平罗县| 焉耆| 蓬莱市| 名山县| 海原县| 时尚| 宝坻区| 夏邑县| 灌云县| 家居| 宜章县| 繁峙县| 宁强县| 闽清县| 达州市| 抚远县| 双江| 汤阴县| 卓尼县| 始兴县|