專利名稱:控制數(shù)據(jù)流的方法以及計(jì)算機(jī)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)系統(tǒng),特別是涉及一種在圖形處理器結(jié)構(gòu)內(nèi)數(shù)據(jù)流的執(zhí)行控制。
背景技術(shù):
計(jì)算機(jī)系統(tǒng)通常使用處理器來執(zhí)行程序所包含的指令。隨著時間推移,處理器已受到改善,且能操作在高頻率的環(huán)境下,因此能更快速地執(zhí)行指令。然而,程序所包含的指令數(shù)量也隨的增加,使得在高頻率環(huán)境下的操作需要較高的操作電壓以及功率。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供控制數(shù)據(jù)流的方法以及在圖形處理器架構(gòu)下使用其的計(jì)算機(jī)系統(tǒng)。舉例來說,在至少一實(shí)施例中,一控制數(shù)據(jù)流的方法包括使用圖形處理單元在管線中第一處理階段上執(zhí)行第一指令,以產(chǎn)生第一條件碼數(shù)值。此第一指令包括第一堆迭器操作指示符。此控制數(shù)據(jù)流的方法還包括根據(jù)堆迭器操作指示符而在分支控制堆迭器執(zhí)行堆迭器操作,且對分支指令進(jìn)行解碼。此控制數(shù)據(jù)流的方法也包括根據(jù)分支指令以及儲存在分支控制堆迭器的至少一條件碼數(shù)值來判斷是否執(zhí)行分支轉(zhuǎn)移至目標(biāo)指令。此外,此控制數(shù)據(jù)流的方法包括根據(jù)判斷是否執(zhí)行分支轉(zhuǎn)移至目標(biāo)指令更新程序計(jì)數(shù)數(shù)值以包含該目標(biāo)指令的指令地址。如另一例子,在至少一實(shí)施例中,一控制數(shù)據(jù)流的方法包括使用圖形處理單元在具有多個處理階段的管線中執(zhí)行多個指令。這些指令中的一個產(chǎn)生一條件碼數(shù)值。此控制數(shù)據(jù)流的方法還包括將條件碼數(shù)值存入分支控制堆迭器。在管線中執(zhí)行多個指令其中一個的多個處理階段中的一者期間,條件碼數(shù)值產(chǎn)生。此外,此控制數(shù)據(jù)流的方法使用圖形處理單元且根據(jù)讀出自分支控制堆迭器的條件碼數(shù)值的至少一部份來處理分支指令。又如同另一例子,在至少一實(shí)施例中,一計(jì)算機(jī)系統(tǒng)包括儲存多個指令的存儲器以及圖形處理單元。圖形處理單元包括分支控制堆迭器,而分支控制堆迭器包括一組條件寄存器。圖形處理單元根據(jù)具有多個處理階段的一管線來處理多個指令且將多個條件碼數(shù)值儲存在該分支控制堆迭器。圖形處理單元還使用儲存在分支控制堆迭器上方的條件寄存器的條件碼數(shù)值來處理多個分支指令。本發(fā)明的其他系統(tǒng)、方法、特征、以及優(yōu)點(diǎn)可通過下文所述并結(jié)合附圖詳細(xì)說明而使本領(lǐng)域的技術(shù)人員能了解。期望使額外的系統(tǒng)、方法、特征、以及優(yōu)點(diǎn)能包含于本說明書、 本發(fā)明的范圍、以及受到本發(fā)明的權(quán)利要求的保護(hù)。
圖1表示根據(jù)本發(fā)明實(shí)施例的計(jì)算機(jī)系統(tǒng);圖2表示在一例子中,圖1的計(jì)算機(jī)系統(tǒng)中的分支控制堆迭器;
圖3表示在一例子中,圖1的計(jì)算機(jī)系統(tǒng)中的管線;
圖4表示根據(jù)本發(fā)明實(shí)施例,對于圖1的計(jì)算機(jī)系統(tǒng)的指令的控制數(shù)據(jù)流的方法流程
圖5表示在一例子中,由圖1的計(jì)算機(jī)系統(tǒng)中管線所處理的程序;圖6表示在一例子中,對于圖5的時間下堆迭器的內(nèi)容圖7表示在一例子中,圖4的控制數(shù)據(jù)流的方法中步驟方塊435的流程圖;圖8表示在另一例子中,圖4的控制數(shù)據(jù)流的方法中步驟方塊435的流程圖;圖9表示在一例子中,由圖1的計(jì)算機(jī)系統(tǒng)中管線所處理且包含一復(fù)合條件分支指令的程序;圖10表示在一例子中,對于圖9的時間下堆迭器的內(nèi)容圖11表示在一例子中,由圖1的計(jì)算機(jī)系統(tǒng)中管線所處理且包含一 POPAND PUSH 操作的程序;圖12表示在一例子中,對于圖11的時間下堆迭器的內(nèi)容以及圖13表示根據(jù)本發(fā)明實(shí)施例,圖1的計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)流控制器。附圖符號說明圖 1 100 計(jì)算機(jī)系統(tǒng);110 圖形處理單元(GPU);112 管線;113 處理階段;114 指令快取存儲器;116 數(shù)據(jù)流控制器;118 分支控制堆迭器;119 管線寄存器;140 總線;120 存儲器;122 通用寄存器;126 程序;128 指令;130 分支指令;131 復(fù)合條件分支指令;132 分支延遲指令;圖 2 118 分支控制堆迭器;205 條件碼數(shù)值;215 指標(biāo);圖 3 112 管線;113 處理階段;119 管線寄存器;
DE 解碼處理階段;EXO、EX1、EX2 執(zhí)行處理階段;IA 指令地址處理階段;IF 指令提取處理階段;WB 寫回處理階段;圖4:400 方法;410、415、420、425、430、435、440、445、450、455 步驟方塊;圖 5 126 程序;128 指令;130 分支指令;205 條件碼數(shù)值;510 堆迭器操作指示符;圖 6 118 分支控制堆迭器;圖 7 435、705、710 步驟方塊;圖 8 435、805、810、815 步驟方塊;圖 9 126 程序;128 指令;131 復(fù)合條件分支指令;205 條件碼數(shù)值;510 堆迭器操作指示符;圖 10 118 分支控制堆迭器;圖 11 126 程序;128 指令;130 分支指令;205 條件碼數(shù)值;510 堆迭器操作指示符;圖 12 118 分支控制堆迭器;圖13 1302 多工器;1304 程序計(jì)數(shù)寄存器;
1306 加法器;1312 程序計(jì)數(shù)數(shù)值;1314 增量;
116 數(shù)據(jù)流控制器;119 管線寄存器;BRANCH_T0 第一分支指示符;BRANCH_T1 第二分支指示符;DE 解碼處理階段;EXO、EXl 執(zhí)行處理階段;IA 指令地址處理階段;IF 指令提取處理階段;TOPC 第一目標(biāo)指令地址;TlPC 第二目標(biāo)指令地址;NPC 下一指令地址。
具體實(shí)施例方式本說明書大體是關(guān)于計(jì)算機(jī)系統(tǒng)的處理器所執(zhí)行的指令數(shù)據(jù)流的控制。舉例來說,此處理器根據(jù)多處理階段管線來執(zhí)行一程序的多個指令。此處理器依序執(zhí)行這些指令, 但是指令的順序可由專用指令來改變,該專用指令稱為分支指令。分支指令可藉由進(jìn)行分支轉(zhuǎn)移(跳躍)至目標(biāo)指令來改變數(shù)據(jù)流,這不同于程序中依序的下一指令。處理器根據(jù)分支指令所指示的某些條件是否為真來判斷是否進(jìn)行分支轉(zhuǎn)移至目標(biāo)指令。處理器藉由對多個條件碼數(shù)值執(zhí)行分支指令所指示的布林運(yùn)算來求出獲得這些條件,其中,這些條件碼數(shù)值儲存于一分支控制堆迭器中。這些條件碼數(shù)值是在該程序的先前指令的執(zhí)行期間所產(chǎn)生的,且由產(chǎn)生每一條件碼數(shù)值的指令所指示,每一條件碼數(shù)值被存入或彈出分支控制堆迭器的最上方。將一條件碼數(shù)值存入分支控制堆迭器涉及到將先前儲存在分支控制堆迭器的每一數(shù)值一定至較低位置且將此條件碼數(shù)值存在分支控制堆迭器的最上方位置。類似地,使一條件碼數(shù)值彈出分支控制堆迭器涉及到讀取并移除儲存在分支控制堆迭器最上方的條件碼數(shù)值且將儲存在分支控制堆迭器其他數(shù)值移動至較高位置。儲存在分支控制堆迭器最上方的條件碼數(shù)值藉由一指標(biāo)而可存取,且當(dāng)一分支指令被處理時,儲存在分支控制堆迭器上方的一個或多個條件碼數(shù)值彈出且用來判斷是否進(jìn)行分支轉(zhuǎn)移至目標(biāo)指令。藉由一指標(biāo)而存取條件碼數(shù)值并藉由堆迭器操作來運(yùn)用,可避免根據(jù)一寄存器地址來存取條件碼數(shù)值。對于包括分支指令且必須計(jì)算許多條件的程序而言,由于使用分支控制堆迭器可以不需要經(jīng)由通用寄存器以獲得每一條件碼數(shù)值且不需要進(jìn)行通用寄存器所需的地址解碼操作,因此可減少功率消耗、降低電壓和/或頻率需求。此實(shí)施例以及其他實(shí)施例將通過下文并伴隨參閱圖示來說明。圖1表示根據(jù)本發(fā)明一實(shí)施例的計(jì)算機(jī)系統(tǒng)100。在圖1的實(shí)施例中,計(jì)算機(jī)系統(tǒng) 100包括圖形處理單元(graphics processing unit,GPU) 110,其通過總線140而與存儲器 120聯(lián)系。一般而言,圖1的計(jì)算機(jī)系統(tǒng)100可包括多種有線和/或無線計(jì)算機(jī)系統(tǒng)中任一個,例如,桌上型計(jì)算機(jī)、攜帶型計(jì)算機(jī)、專屬伺服器計(jì)算機(jī)、多處理器計(jì)算裝置等等。除了 GPU 110以及存儲器120之外,計(jì)算機(jī)系統(tǒng)100還包括一些輸入/輸出接口、網(wǎng)絡(luò)接口、顯示器、以及大量儲存裝置,其中,這些裝置每一個通過總線140連接。GPU 110可包括任何客制或商業(yè)用處理器、與計(jì)算機(jī)系統(tǒng)100連接的多個處理器中的輔助處理器、半導(dǎo)體微處理器、一個或多個特殊應(yīng)用集成電路(application specific integrated circuit, ASIC)、多個配置適當(dāng)?shù)臄?shù)字邏輯門、以及其他已知的電子配置,而已知電子配置包括離散元件,其分別地且以各種組合來協(xié)調(diào)計(jì)算機(jī)系統(tǒng)100的整體操作。存儲器120可包括易失性存儲器元件(例如隨機(jī)存取存儲器元件(RAM,例如 DRAM、SRAM等等))以及非易失性存儲器元件(例如ROM、硬驅(qū)動器、⑶ROM等等)中任一個或是兩個的組合。存儲器120—般包括本地操作系統(tǒng)、一個或多個本地應(yīng)用、仿真系統(tǒng)、或者是關(guān)于各種操作系統(tǒng)、和/或仿真硬件平臺、仿真操作系統(tǒng)等等中任一個的仿真應(yīng)用。本領(lǐng)域的技術(shù)人員將能了解存儲器120可以及一般將包括其他元件,而這些元件為了簡潔說明而在此省略。前述的輸入/輸出接口提供任何數(shù)量的接口給數(shù)據(jù)的輸入及輸出。舉例來說,計(jì)算機(jī)系統(tǒng)100包括一個人計(jì)算機(jī),而這些元件與一使用者輸入裝置接合,此使用者輸入裝置例如為鍵盤或鼠標(biāo)。上述的元件中的一個包括軟件,而這些元件可能包含于實(shí)體媒體(例如計(jì)算機(jī)可讀媒體)內(nèi)且由計(jì)算機(jī)系統(tǒng)100內(nèi)的GPU100或其他處理器來執(zhí)行。在本說明書的上下文中,計(jì)算機(jī)可讀媒體可包括任何實(shí)體媒體,其可包含、儲存或維持軟件或編碼以供指令執(zhí)行系統(tǒng)使用或與指令執(zhí)行系統(tǒng)連接。例如,計(jì)算機(jī)可讀媒體可能儲存一個或多個程序,以由前述GPU 110來執(zhí)行。舉例來說,計(jì)算機(jī)可讀媒體可以是電子、磁性、光學(xué)、電磁、紅外線、或半導(dǎo)體系統(tǒng)或裝置,但非以此為限。尤其是,計(jì)算機(jī)可讀媒體例如可能包括以下元件具有一個或多個導(dǎo)線的電性連接、便攜式計(jì)算機(jī)磁盤、隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、 可抹寫式只讀存儲器(EPR0M、EEPR0M、或快閃存儲器)、以及便攜式只讀存儲光盤(CDROM)。 此外,計(jì)算機(jī)系統(tǒng)100可能包括網(wǎng)絡(luò)接口,其包含可與輸入及書連接的裝置,例如調(diào)制器/ 解調(diào)器(如數(shù)據(jù)機(jī))、無線(例如射頻(RF))收發(fā)器、電話通信接口、橋接器、路由器、網(wǎng)絡(luò)卡等等。如圖1所示,存儲器120包括通用寄存器122以及一個或多個程序126。程序126 包括多個指令128、多個分支指令130復(fù)合條件分支指令131、以及分支延遲指令132 (例如不操作指令(no-operation (NOP) instruction)。此外,GPU 110 包括管線(pipeline) 112、 指令快取存儲器114、數(shù)據(jù)流控制器116、以及分支控制堆迭器(之后稱為堆迭器)118。指令快取存儲器114儲存一個或多個指令128,用以暫時地使該一個或多個指令128可快速地存取至管線112。管線操作(pipelining)使得GPU 110增加每一時間單位可執(zhí)行的指令數(shù)量。管線操作需要將一指令128的處理劃分成一系列獨(dú)立的處理階段113,并伴隨著在每一處理階段113的末端上在管線寄存器119中結(jié)果與狀態(tài)的儲存。所以,取代了每一次執(zhí)行一指令128,多個指令可同時地但是于相異的處理階段113中執(zhí)行。圖2表示圖1的計(jì)算機(jī)系統(tǒng)100中的堆迭器118。堆迭器118儲存多個條件碼數(shù)值205,每一條件碼數(shù)值包括四個位以及一分支條件的狀態(tài)。儲存在堆迭器118上方的條件碼數(shù)值205藉由指標(biāo)215而可存取。此外,堆迭器118可由堆迭器操作(例如POP、PUSH、POP與PUSH操作)來控制。再者,堆迭器118依據(jù)后進(jìn)先出(last in fast out,LIF0)來操作,使得第一個彈出堆迭器118的條件碼數(shù)值205是最后存入堆迭器118的條件碼數(shù)值 205。圖3表示在圖1的計(jì)算機(jī)系統(tǒng)100中,管線112的范例,但非以此為限。圖3的管線112包括多個個處理階段113 指令提取處理階段IF、指令地址處理階段IA、解碼處理階 段DE、執(zhí)行處理階段ΕΧ0、執(zhí)行處理階段EX1、執(zhí)行處理階段EX2、以及寫回處理階段WB。在其他實(shí)施例中,管線112包括更多或較少的處理階段113。在一些實(shí)施例中,利用鎖定與暫停機(jī)制以實(shí)施管線112。在執(zhí)行處理階段EXO、EXl或EX2后,由指令128產(chǎn)生一條件碼數(shù)值205。在一些實(shí)施例中,不同的指令128在管線112中不同的處理階段113產(chǎn)生條件碼數(shù)值。在另一些實(shí)施例中,例如圖3所示的一個,管線寄存器119儲存指令128的執(zhí)行所產(chǎn)生的結(jié)果。圖4表示在圖1的計(jì)算機(jī)系統(tǒng)100中,控制指令128的數(shù)據(jù)流的方法。此外,圖5 表示由圖1的計(jì)算機(jī)系統(tǒng)100的管線112所執(zhí)行的程序126,但非以此為限。圖6表示在對于圖5的時間下堆迭器118的內(nèi)容的例子,但非以此為限。圖5及圖6的內(nèi)容將藉由相關(guān)的圖4來討論說明,以進(jìn)一步說明方法400。在圖4的步驟方塊410中,藉由GPU 110在管線112中執(zhí)行第一指令128,以產(chǎn)生第一條件碼數(shù)值205,其值表示一分支條件的狀態(tài)。例如,在圖5中,在時間T-2,指令128 中的指令12于執(zhí)行處理階段EXO中并產(chǎn)生條件碼數(shù)值205,其值等于“1”。在此例子中,指令I(lǐng)l已完成執(zhí)行處理階段EXO并進(jìn)行執(zhí)行處理階段EXl,且指令I(lǐng)l所產(chǎn)生條件碼數(shù)值205 的值等于“0”并已儲存于堆迭器118中。每一條件碼數(shù)值205四個位(例如CNVZ)。然而, 為了簡潔說明此例子,條件碼數(shù)值205是以數(shù)值來表示(例如“0 ”、“ 1 ”、“ 2 ”等等)?;貋韰㈤唸D4,在步驟方塊415中,根據(jù)堆迭器操作指示符510而在堆迭器118執(zhí)行一堆迭器操作。如圖5所示,每一指令128包括一堆迭器操作指示符510,其具有兩個位以指示是否將使用指令128所產(chǎn)生的條件碼數(shù)值205而在堆迭器115執(zhí)行堆迭器操作以及指示將執(zhí)行哪一種堆迭器操作。下面表1說明了堆迭器操作指示符的位數(shù)值以及對應(yīng)的堆迭器操作。
堆迭器操作指示符__堆迭器操作_
00__DN:不執(zhí)行任何操作(預(yù)設(shè))
01PO (POP OFF )彈出堆迭器
1-1-'/10PU ( PUSH )將條件碼 數(shù)值存 _入分支控制堆迭器_
11PP (POP AND PUSH)彈出
且接著將條件碼數(shù)值存入分支控制 _I堆迭器_表1 堆迭器操作指示符以及對應(yīng)的堆迭器操作。因此,在步驟方塊415中,藉由使用第一指令128所產(chǎn)生的第一條件碼數(shù)值205并根據(jù)第一指令128的堆迭器操作指令符510而在堆迭器118執(zhí)行堆迭器操作。如圖6所示, 在時間T-2,根據(jù)指令12的堆迭器指令符510來將等于“1”的第一條件碼數(shù)值205存入堆迭器118的最上方。在一些實(shí)施例中,于任一周期中,最多兩個條件碼數(shù)值205可由堆迭器 118彈出,且一個條件碼數(shù)值被存入堆迭器118。在步驟方塊420中,執(zhí)行第二指令128以產(chǎn)生第二條件碼數(shù)值。舉例來說,在圖5 中,在時間T-1,指令13于執(zhí)行處理階段ΕΧ0,產(chǎn)生條件碼數(shù)值205,其值等于“2”。接著, 在步驟方塊425中,根據(jù)第二堆迭器操作指示符510,即根據(jù)指令13的堆迭器操作指示符 510,而在堆迭器執(zhí)行一堆迭器操作。因此,在圖6中,在時間T-1,根據(jù)指令13的堆迭器指令符510來將等于“2”的第二條件碼數(shù)值205存入堆迭器118的最上方,且等于“1”的第一條件碼數(shù)值被存入至堆迭器118中由上面第二個位置。在步驟方塊430中,在解碼處理階段DE中對分支指令130進(jìn)行解碼。此外,儲存在堆迭器118上方的兩個條件碼數(shù)值205被讀出作為分支指令130的解碼的一部份。在圖 5的例子中,指令15 (例如BEZ)在時間T-O于解碼處理階段DE中被解碼。一般而言,如圖 5所示,在正設(shè)定的條件編碼數(shù)值與分支指令之間至少具有一個周期。在一些實(shí)施例中,分支指令130包括布林運(yùn)算(Boolean operation)。此外,在一些實(shí)施例中,分支指令130是一復(fù)合條件分支指令131,將于下文來詳細(xì)說明。在步驟方塊435中,GPU 110判斷是否根據(jù)解碼的分支指令130以及儲存在分支控制堆迭器118中至少一條件編碼數(shù)值205來判斷是否進(jìn)行分支轉(zhuǎn)移至目標(biāo)指令。因此, 在步驟方塊430中對分支指令130進(jìn)行解碼期間所讀出的條件編碼數(shù)值205將用來判斷是否進(jìn)行分支轉(zhuǎn)移至目標(biāo)指令。如圖5所示的例子,是否根據(jù)指令15來進(jìn)行分支轉(zhuǎn)移(即 BEZ (假使等于0時進(jìn)行分支轉(zhuǎn)移))的判斷做成,是關(guān)于在指令15的解碼期間所讀取的至少一條件碼數(shù)值205 (例如“ 1 ”或“ 2 ”)。在步驟方塊440中,當(dāng)在步驟方塊435的判斷是進(jìn)行分支轉(zhuǎn)移至目標(biāo)指令時,更新一程序計(jì)數(shù)數(shù)值以包含目標(biāo)指令的指令地址。在步驟方跨450中,執(zhí)行第三指令128,且當(dāng)在步驟方塊435的判斷是進(jìn)行分支轉(zhuǎn)移至目標(biāo)指令時,此第三指令就是該目標(biāo)指令128。在步驟方塊445中,當(dāng)在步驟方塊435中的判斷是不進(jìn)行分支轉(zhuǎn)移至目標(biāo)指令時, 增加程序計(jì)數(shù)數(shù)值。在步驟方塊450中,執(zhí)行第三指令128,且當(dāng)在步驟方塊435中的判斷是不進(jìn)行分支轉(zhuǎn)移至目標(biāo)指令時,第三指令是在程序126的序列中的下一個指令128。在步驟方塊455中,執(zhí)行一分支延遲指令132或者執(zhí)行獨(dú)立于分支指令130的一指令128。在至少一部份發(fā)生方塊步驟435中的判斷和/或發(fā)生步驟方塊445與440中程序計(jì)數(shù)數(shù)值改變的期間中,GPU 110也執(zhí)行分支延遲指令(不操作(no-operation,NOP)指令)132,以使管線112持續(xù)處理指令128。在一些實(shí)施例中,以執(zhí)行獨(dú)立于分支指令130的一指令來取代分支延遲指令132,以增加指令128通過管線112的通量(throughput)。由 于在管線中多個指令是在不同的處理階段113中執(zhí)行,因此在分支獲得結(jié)果之前,分支指令130可通過數(shù)個處理階段(因此花費(fèi)數(shù)個周期)。為了當(dāng)一分支擱置待決時避免執(zhí)行下一指令,分支延遲指令可能被包含作為在這些周期期間于管線112中執(zhí)行的不操作指令132。圖7表示圖4的方法中步驟方塊435的一例子的流程圖,以進(jìn)一步詳細(xì)說明步驟方塊435。具體而言,在步驟方塊705中,儲存在堆迭器118最上方的第二條件碼數(shù)值205 彈出堆迭器118最上方。因此,在圖5及圖6的例子中,于時間T,該值等于“2”的條件碼指令205從堆迭器118最上方彈出,留下具有內(nèi)容[1,0,X,X]的堆迭器118。而該值等于 “2”的條件碼指令是在時間T-I由指令13所產(chǎn)生。在步驟方塊710中,使用彈出的第二條件碼數(shù)值205來求出分支指令130的布林運(yùn)算的數(shù)值。參閱圖5及圖6的例子,所顯示的分支指令130為BEZ指令,其指示假使條件碼數(shù)值等于零時執(zhí)行分支轉(zhuǎn)移。由于彈出的第二條件碼數(shù)值為“2”,其不等于零,因此,如同圖4的步驟方塊445所說明,程序計(jì)數(shù)數(shù)值將增加。圖8表示圖4的方法中步驟方塊435的另一例子的流程圖,以進(jìn)一步詳細(xì)說明步驟方塊435。具體而言,圖8所說明的例子表示根據(jù)作為復(fù)合條件分支指令131的分支指令 130來判斷是否進(jìn)行分支轉(zhuǎn)移。復(fù)合條件分支指令131可根據(jù)二個或多個條件判斷是否引起跳躍(jump)至目標(biāo)指令128。復(fù)合條件分支指令131包括至少一布林運(yùn)算來以計(jì)算出兩條件碼數(shù)值205,以判斷一個或多個條件是否為真。在步驟方塊805中,儲存在堆迭器118最上方的第二條件碼數(shù)值205彈出堆迭器 118的最上方。因此,第一條件碼數(shù)值205移動至堆迭器118的最上方。接著,在步驟方塊 810中,第一條件碼數(shù)值彈出堆迭器118的最上方。在步驟方塊815中,分支指令130的布林運(yùn)算使用彈出的第二條件碼數(shù)值205以及彈出的第一條件碼數(shù)值205。在一些實(shí)施例中,復(fù)合條件分支指令131以形式“CBfg.op”來呈現(xiàn),其中“fg”是指示復(fù)合條件分支指令131自儲存在堆迭器118最上方的兩條件碼數(shù)值205所選擇的位。 每一條件碼數(shù)值205包括四個位(例如,CNVZ),且在一些實(shí)施例中,只有N與Z位是被復(fù)合條件分支指令131選擇。下文的表單2說明復(fù)合條件分支指令131的變化以及字條件碼數(shù)值205所選擇的對應(yīng)位。在表2中,“R”是對應(yīng)在堆迭器118最上方的條件碼數(shù)值205,且“S”是對應(yīng)在堆迭器118中由上方數(shù)下來第二個的條件編碼數(shù)值205。需注意,在圖5及圖6的例子中,”R” 對應(yīng)第二條件碼數(shù)值205,而” S”對應(yīng)第一條件碼數(shù)值。
復(fù)合條件分支指令選自條件碼數(shù)值的位 CBNN選擇位N給R且位N給S
CBNZ選擇位N給R且位Z給S
權(quán)利要求
1.一種控制數(shù)據(jù)流的方法,包括使用一圖形處理單元在一管線中一第一處理階段上執(zhí)行一第一指令,以產(chǎn)生一第一條件碼數(shù)值,該第一指令包括一第一堆迭器操作指示符;根據(jù)該堆迭器操作指示符而在一分支控制堆迭器執(zhí)行一堆迭器操作; 對一分支指令進(jìn)行解碼;根據(jù)該分支指令以及儲存在該分支控制堆迭器的至少一條件碼數(shù)值來判斷是否執(zhí)行分支轉(zhuǎn)移至一目標(biāo)指令;以及若該判斷是否執(zhí)行分支轉(zhuǎn)移至該目標(biāo)指令的結(jié)果為真為是,更新一程序計(jì)數(shù)數(shù)值以包含該目標(biāo)指令的指令地址。
2.如權(quán)利要求1所述的控制數(shù)據(jù)流的方法,還包括執(zhí)行一第二指令以產(chǎn)生一第二條件碼數(shù)值,該第二指令包括一第二堆迭器操作指示符;以及根據(jù)該第二堆迭器操作指示符而在該分支控制堆迭器執(zhí)行另一堆迭器操作。
3.如權(quán)利要求1所述的控制數(shù)據(jù)流的方法,還包括若該判斷是否執(zhí)行分支轉(zhuǎn)移至該目標(biāo)指令的結(jié)果為否,則增加該程序計(jì)數(shù)數(shù)值。
4.如權(quán)利要求1所述的控制數(shù)據(jù)流的方法,還包括 彈出儲存在該分支控制堆迭器上方的該第二條件碼數(shù)值;彈出儲存在該分支控制堆迭器上方的該第一條件碼數(shù)值,其中,該第一條件碼數(shù)值是在該第二條件碼數(shù)值之后彈出;以及使用該第二條件碼數(shù)值以及該第一條件碼數(shù)值來求出該分支指令的布林運(yùn)算的數(shù)值。
5.如權(quán)利要求1所述的控制數(shù)據(jù)流的方法,還包括當(dāng)該圖形處理單元以一增量來增加該程序計(jì)數(shù)數(shù)值時,執(zhí)行一分支延遲指令或一獨(dú)立指令。
6.如權(quán)利要求1所述的控制數(shù)據(jù)流的方法,其中,該第二條件碼數(shù)值是在該第一條件碼數(shù)值產(chǎn)生之前所產(chǎn)生的,且該控制數(shù)據(jù)流的方法還包括將該第二條件碼數(shù)值儲存在一寄存器;其中,該第二條件碼數(shù)值被存入該分支控制堆迭器的最上方位置,而該第一條件碼數(shù)值移動至該分支控制堆迭器中由上方數(shù)下來的第二個位置。
7.如權(quán)利要求6所述的控制數(shù)據(jù)流的方法,其中,該第一條件碼數(shù)值是在該管線的一處理階段中產(chǎn)生,而該階段不同于該第二條件碼數(shù)值所產(chǎn)生的處理階段。
8.如權(quán)利要求1所述的控制數(shù)據(jù)流的方法,其中,該堆迭器操作指令符指示出選自一堆迭器操作群組,該堆迭器操作群組包括彈出操作、存入操作、以及彈出并存入操作。
9.如權(quán)利要求1所述的控制數(shù)據(jù)流的方法,還包括 計(jì)算該目標(biāo)指令的一增量;以及其中,更新該程序計(jì)數(shù)數(shù)值以包括該目標(biāo)指令的指令地址的步驟還包括將該增量加入該程序計(jì)數(shù)數(shù)值。
10.一種計(jì)算機(jī)系統(tǒng),包括 一存儲器,儲存多個指令;以及一圖形處理單元包括一分支控制堆迭器,該分支控制堆迭器包括一組條件寄存器;其中,該圖形處理單元根據(jù)具有多個處理階段的一管線來處理這些指令且將多個條件碼數(shù)值儲存在該分支控制堆迭器;以及其中,該圖形處理單元還使用儲存在該分支控制堆迭器上方的該條件寄存器的該條件碼數(shù)值來處理多個分支指令。
11.如權(quán)利要求10所述的計(jì)算機(jī)系統(tǒng),其中,儲存在分支控制堆迭器上方的該條件寄存器的該條件碼數(shù)值藉由一指標(biāo)而可存取。
12.如權(quán)利要求10所述的計(jì)算機(jī)系統(tǒng),其中,該存儲器還包括在該管線的這些處理階段的每一個之后的一管線寄存器,且該計(jì)算機(jī)系統(tǒng)還包括一數(shù)據(jù)流控制器,用以在關(guān)于在一解碼處理階段之后對一目標(biāo)指令進(jìn)行分支轉(zhuǎn)移的一目標(biāo)指令地址、關(guān)于在一執(zhí)行處理階段之后對一目標(biāo)指令執(zhí)行分支轉(zhuǎn)移的一目標(biāo)指令地址、以及一程序計(jì)數(shù)數(shù)值增量之間作選擇。
13.如權(quán)利要求10所述的控制數(shù)據(jù)流的方法,其中,該數(shù)據(jù)流控制器的選擇是依據(jù)儲存在一第一管線寄存器的一第一分支指示符以及儲存在一第二管線寄存器的一第二分支指示符來執(zhí)行。
全文摘要
本發(fā)明提供在圖形處理器架構(gòu)下的控制數(shù)據(jù)流的方法以及計(jì)算機(jī)系統(tǒng)。例如,在至少一實(shí)施例中,一計(jì)算機(jī)系統(tǒng)包括儲存多個指令的存儲器以及圖形處理單元。圖形處理單元包括分支控制堆迭器,而分支控制堆迭器包括一組條件寄存器。圖形處理單元根據(jù)具有多個處理階段的一管線來處理多個指令且將多個條件碼數(shù)值儲存在該分支控制堆迭器。圖形處理單元還使用儲存在分支控制堆迭器上方的條件寄存器的條件碼數(shù)值來處理多個分支指令。
文檔編號G06F9/30GK102289363SQ201110261549
公開日2011年12月21日 申請日期2011年9月6日 優(yōu)先權(quán)日2010年10月14日
發(fā)明者查德.胡珊 申請人:威盛電子股份有限公司