著在第二硬件線程22中執(zhí)行程控的并行轉(zhuǎn)移(塊66)。
[0037]如上文所指出,指示對(duì)程控的并行轉(zhuǎn)移的請(qǐng)求的指令(例如,圖2的第一指令42)可包含用于指定待轉(zhuǎn)移的寄存器內(nèi)容以及用于指定目標(biāo)硬件線程的可選參數(shù)。因此,提供圖4以說(shuō)明用于請(qǐng)求程控的并行轉(zhuǎn)移的示范性排入隊(duì)列指令42的組成元素以及對(duì)程控的并行轉(zhuǎn)移的示范性請(qǐng)求56的元素。在圖4的實(shí)例中,排入隊(duì)列指令42為繼續(xù)指令。應(yīng)理解,在一些實(shí)施例中,排入隊(duì)列指令42可由不同指令名稱標(biāo)明。排入隊(duì)列指令42包含目標(biāo)地址68(“〈addr>” )以及可選寄存器屏蔽70( “〈regmask〉”)及目標(biāo)硬件線程的可選識(shí)別符72( “〈thread>”)。目標(biāo)地址68指定請(qǐng)求程控轉(zhuǎn)移至的地址,且包含在請(qǐng)求56中作為目標(biāo)地址74 ( “〈addr>,,)。
[0038]在一些實(shí)施例中,排入隊(duì)列指令42也可包含寄存器屏蔽70,寄存器屏蔽70指示一或多個(gè)寄存器(例如,寄存器24、26、28或30中的一或多者)。若存在寄存器屏蔽70,則指令處理電路12在請(qǐng)求56中針對(duì)由寄存器屏蔽70所指定的每一寄存器包含一或多個(gè)寄存器標(biāo)識(shí)76( “<reg_identity>”)及一或多個(gè)寄存器內(nèi)容78( “<reg_content>” )。使用一或多個(gè)寄存器標(biāo)識(shí)76及一或多個(gè)寄存器內(nèi)容78,在其中執(zhí)行排入隊(duì)列指令42的第一硬件線程的當(dāng)前上下文隨后可在分派第二硬件線程中的請(qǐng)求56后恢復(fù)。
[0039]一些實(shí)施例可提供,排入隊(duì)列指令42包含需要程控并行轉(zhuǎn)移至的目標(biāo)硬件線程的可選識(shí)別符72。因此,在執(zhí)行排入隊(duì)列指令42時(shí),識(shí)別符72可由指令處理電路12使用以選擇多個(gè)硬件FIFO隊(duì)列34中的將請(qǐng)求56排入其中的一者。舉例來(lái)說(shuō),在一些實(shí)施例中,指令處理電路12可將請(qǐng)求56排入對(duì)應(yīng)于由識(shí)別符72指定的硬件線程20、22的硬件FIFO隊(duì)列34中。一些實(shí)施例也可提供專用于將請(qǐng)求排入隊(duì)列的硬件FIFO隊(duì)列34,針對(duì)所述硬件FIFO隊(duì)列34,排入隊(duì)列42不提供識(shí)別符72。
[0040]圖5為更詳細(xì)地說(shuō)明用于將對(duì)程控的并行轉(zhuǎn)移的請(qǐng)求56排入隊(duì)列(如上文在圖3的塊60中所參考)的圖1的指令處理電路12的示范性操作的流程圖。為了清晰性的目的,在描述圖5時(shí)參考圖1、2及4的組件。在圖5的實(shí)例中,關(guān)于硬件線程20(0)的指令流36(如圖2中所見)論述用于將對(duì)程控的并行轉(zhuǎn)移的請(qǐng)求56排入隊(duì)列的操作。然而,應(yīng)理解,圖5的操作可在硬件線程20、22中的任一者中的指令流中執(zhí)行。
[0041]在圖5中,操作開始于指令處理電路12確定是否在硬件線程20(0)中的指令流36中檢測(cè)到指示請(qǐng)求程控的并行轉(zhuǎn)移的操作的第一指令42(塊80)。在一些實(shí)施例中,第一指令42可為繼續(xù)指令。若未檢測(cè)到第一指令42,則處理在塊82處重新開始。若在塊80處檢測(cè)到指示請(qǐng)求程控的并行轉(zhuǎn)移的操作的第一指令42,則指令處理電路12建立對(duì)程控的并行轉(zhuǎn)移的包含目標(biāo)地址74的請(qǐng)求56(塊84)。
[0042]指令處理電路12接下來(lái)檢查第一指令42是否指定寄存器屏蔽70(塊86)。在一些實(shí)施例中,寄存器屏蔽70可指定硬件線程20(0)的一或多個(gè)寄存器24,所述寄存器24的內(nèi)容可包含在請(qǐng)求56中以保持硬件線程20(0)的當(dāng)前上下文。若未指定寄存器屏蔽70,則處理在塊88處繼續(xù)。然而,若在塊86處確定寄存器屏蔽70由第一指令42指定,則指令處理電路12在請(qǐng)求56中包含對(duì)應(yīng)于由寄存器屏蔽70指定的每一寄存器24的一或多個(gè)寄存器標(biāo)識(shí)76及一或多個(gè)寄存器內(nèi)容78(塊90)。
[0043]指令處理電路12接著確定第一指令42是否指定目標(biāo)硬件線程的識(shí)別符72(塊88)。若未指定識(shí)別符72(8卩,第一指令42未請(qǐng)求至具體硬件線程的程控的并行轉(zhuǎn)移),則請(qǐng)求56經(jīng)排入可用于所有硬件線程20、22的硬件FIFO隊(duì)列34中(塊92)。處理接著于塊94處繼續(xù)。若指令處理電路12于塊88處確定目標(biāo)硬件線程的識(shí)別符72由第一指令42指定,則請(qǐng)求56經(jīng)排入具體針對(duì)對(duì)應(yīng)于識(shí)別符72的硬件線程20、22中的一者的硬件FIFO隊(duì)列34中(塊96)。
[0044]指令處理電路12接下來(lái)確定用于將請(qǐng)求56排入硬件FIFO隊(duì)列34中的排入隊(duì)列操作是否成功(塊94)。若成功,則處理于塊82處繼續(xù)。若請(qǐng)求56不能排入于硬件FIFO隊(duì)列34中(例如,因?yàn)橛布﨔IFO隊(duì)列34已滿),則引起中斷(塊98)。處理接著繼續(xù)執(zhí)行指令流36中的下一指令(塊82)。
[0045]圖6更詳細(xì)地說(shuō)明用于將對(duì)程控的并行轉(zhuǎn)移的請(qǐng)求56移出隊(duì)列(如上文在圖3的塊64中所參考)的圖1的指令處理電路12的示范性操作。為了清晰性的目的,在描述圖6時(shí)參考圖1、2及4的要素。在圖6的實(shí)例中,關(guān)于硬件線程22(0)的指令流46(如圖2中所見)論述用于將對(duì)程控的并行轉(zhuǎn)移的請(qǐng)求56移出隊(duì)列的操作。然而,應(yīng)理解,圖6的操作可在硬件線程20、22中的任一者中的指令流中執(zhí)行。
[0046]如圖6中所見,操作開始于指令處理電路12確定是否在指令流46中檢測(cè)到指示分派對(duì)程控的并行轉(zhuǎn)移的請(qǐng)求56的操作的第二指令52(塊100)。在一些實(shí)施例中,第二指令52可包括分派(DISPATCH)指令。若未檢測(cè)到第二指令52,則處理于塊102處繼續(xù)。若在指令流46中檢測(cè)到第二指令52,則由指令處理電路12將請(qǐng)求56自硬件FIFO隊(duì)列34移出(塊104)。
[0047]指令處理電路12接著檢查請(qǐng)求56以確定所述請(qǐng)求56中是否包含一或多個(gè)寄存器標(biāo)識(shí)76及一或多個(gè)寄存器內(nèi)容78(塊106)。若否,則處理于塊108處繼續(xù)。若請(qǐng)求56中包含一或多個(gè)寄存器標(biāo)識(shí)76及一或多個(gè)寄存器內(nèi)容78,則指令處理電路12將請(qǐng)求56中的一或多個(gè)寄存器內(nèi)容78恢復(fù)至硬件線程22(0)的對(duì)應(yīng)于一或多個(gè)寄存器標(biāo)識(shí)76的一或多個(gè)寄存器28中(塊110)。以此方式,硬件線程20(0)的上下文在將請(qǐng)求56排入隊(duì)列中時(shí)可在硬件線程22(0)中恢復(fù)。指令處理電路12接著將硬件線程22(0)中的程控轉(zhuǎn)移至請(qǐng)求56中的目標(biāo)地址74(塊108)。處理繼續(xù)執(zhí)行指令流46中的下一指令(塊102)。
[0048]圖7為更詳細(xì)地說(shuō)明由圖1的指令處理電路12進(jìn)行以提供并行功能的高效率硬件分派的示范性指令流的處理流的圖。尤其,圖7說(shuō)明可借此在并行轉(zhuǎn)移之后將程控返回至原始硬件線程的機(jī)構(gòu)。在圖7中,由圖1的硬件線程20 (O)執(zhí)行包括一系列指令114、116、118、120、122及124的指令流112,而由硬件線程22(0)執(zhí)行包含一系列指令128、130、132及134的指令流126。應(yīng)理解,盡管在下文依序描述指令流112及126的處理流,但指令流112及126由相應(yīng)硬件線程20(0)及22(0)并行地執(zhí)行。將進(jìn)一步理解,指令流112及126中的每一者可在硬件線程20、22中的任一者中執(zhí)行。
[0049]如圖7中所展示,指令流112開始于加載(LOAD)指令114、116及118,所述指令中的每一者將值存儲(chǔ)于硬件線程20(0)的寄存器24中的一者中。第一加載指令114指示值〈parameter〉將存儲(chǔ)于被稱作Ro的寄存器中。值〈parameter〉可為旨在由將與指令流112并行地執(zhí)行的功能消耗的輸入值。指令流112中執(zhí)行的下一指令為加載指令116,所述指令指示值<return_addr>將存儲(chǔ)于寄存器24中的一者(標(biāo)明為Ri)中。存儲(chǔ)于Ri中的值<return_addr>表示一旦并行執(zhí)行的功能完成其處理,程控即將返回至的硬件線程20(0)中的地址。加載指令116之后為加載指令118,其指示值〈curr_thread>將存儲(chǔ)于寄存器24中的一者(在此被稱作1?2)中。值〈0111'1'_1:11^3(1>表示硬件線程20(0)的識(shí)別符72,且指示一旦并行執(zhí)行的功能結(jié)束其處理程控應(yīng)返回至的硬件線程20。
[0050]繼續(xù)指令120接著由指令處理電路12在指令流112中執(zhí)行。繼續(xù)指令120指定參數(shù)〈target_addr>及寄存器屏蔽<Rq-R2>。繼續(xù)指令120的參數(shù)<target_addr>指示將并行執(zhí)行的功能的地址。參數(shù)<Rq-R2>為寄存器屏蔽70,其指示對(duì)應(yīng)于硬件線程20(0)的寄存器Ro、RlSR2的寄存器標(biāo)識(shí)76及寄存器內(nèi)容78將包含在對(duì)程控的并行轉(zhuǎn)移的請(qǐng)求56中,所述請(qǐng)求通過(guò)執(zhí)行繼續(xù)指令120而產(chǎn)生。
[0051 ]在檢測(cè)及執(zhí)行繼續(xù)指令120后,指令處理電路12將請(qǐng)求136排入硬件FIFO隊(duì)列34中。在此實(shí)例中,請(qǐng)求136包含由繼續(xù)指令120的參數(shù)〈target_addr>指定的地址,且進(jìn)一步包含用于寄存器Ro至R2的寄存器標(biāo)識(shí)76(標(biāo)明為〈ID RQ-R2>