專(zhuān)利名稱(chēng):指令早期退休機(jī)制及其方法及使用該機(jī)制的像素處理系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于一種指令退休機(jī)制及其方法,以及執(zhí)行該退休機(jī)制及該方法的像素處理系統(tǒng),特別是有關(guān)于一種用于圖形處理器(Graphic Processor Unit, GPU)的指令早期退休機(jī)制(Early Retiring Instruction Mechanism)及指令早期退休方法,以及執(zhí)行該早期退休機(jī)制 及該早期退休方法的像素處理系統(tǒng)。
背景技術(shù):
圖l是技術(shù)的圖形處理器的管線(pipeline)架構(gòu)方塊圖。圖形處理器 IO主要包含三角(triangle)設(shè)定單元12、像素處理單元14以及深度處理單 元16,像素處理單元14包括像素著色裝置18以及連接于像素著色裝置18的 材質(zhì)單元(texture unit) 21與色采;內(nèi)插器(color interpolator) 12。將三維(three-dimensional)對(duì)象的表面分割成若干個(gè)三角形,此三 角形系以幾何關(guān)聯(lián)性的二維方式排列且具有任意的尺寸。每個(gè)三角形包含 三個(gè)頂點(diǎn),并且將這些頂點(diǎn)數(shù)據(jù)傳送至三角設(shè)定單元12,三角設(shè)定單元12 將像素的參數(shù)輸出至像素處理單元14,其中參數(shù)像素在三角形的位置以及 對(duì)應(yīng)于三角形的頂點(diǎn)的材質(zhì)坐標(biāo)。在像素處理單元14中,依據(jù)像素的位置 以及頂點(diǎn)的材質(zhì)坐標(biāo),利用材質(zhì)單元21內(nèi)插所有像素的材質(zhì)坐標(biāo),然后將 內(nèi)插形成的材質(zhì)坐標(biāo)輸入至像素著色裝置18,并且在像素著色裝置18中進(jìn) 行處理,此處像素著色裝置18是指DirectX應(yīng)用而言,若應(yīng)用于0penGL, 則該像素著色裝置18與片段處理器(fragment processor)的功能類(lèi)似。接 著像素著色裝置18執(zhí)行加載指令,并且傳回已處理完成的材質(zhì)坐標(biāo)給材質(zhì) 單元21。根據(jù)未處理的材質(zhì)坐標(biāo)以及已處理的材質(zhì)坐標(biāo),材質(zhì)單元21對(duì)像
素在材質(zhì)圖中的材質(zhì)顏色進(jìn)行取樣,并且將材質(zhì)顏色輸出至像素著色裝置 18。同時(shí)依據(jù)像素的位置以及頂點(diǎn)的材質(zhì)坐標(biāo),色彩內(nèi)插器23對(duì)所有像素的頂點(diǎn)顏色作內(nèi)插運(yùn)算,并且將這些頂點(diǎn)顏色輸出至像素著色裝置18。像 素著色裝置18處理材質(zhì)顏色以及像素的頂點(diǎn)顏色,并且將色彩值以及深度 值輸出至深度處理單元16,以形成所顯示的像素顏色。然后畫(huà)出最后的顏 色,以形成整個(gè)畫(huà)面(frame)。圖2是現(xiàn)有技術(shù)的圖形處理器中像素著色裝置的方塊圖,該像素著色 裝置具有單指令多數(shù)據(jù)流(single instruction multiple data, SIMD) 的分支處理架構(gòu)。將具有若干個(gè)指令的著色程序輸入至指令隊(duì)列20。接著 依據(jù)指令隊(duì)列20中每個(gè)指令來(lái)處理輸入串流的點(diǎn)數(shù)據(jù)。然后將點(diǎn)數(shù)據(jù)處理 之后的結(jié)果發(fā)出至后端以形成輸出串流。在輸入串流與輸出串流中點(diǎn)數(shù)據(jù) 的傳送順序必須相同。指令擷取裝置22依據(jù)程序指位器(program counter, PC)24擷取指令 隊(duì)列中的指令。譯碼器26用于將擷取到的指令進(jìn)行編碼,以形成控制訊號(hào), 以控制算數(shù)邏輯單元(arithmetic logic unit, ALU)28的管線操作。緩存 器存取端口 (register access port, RAP) 32用以存取儲(chǔ)存于緩存器30中 的點(diǎn)數(shù)據(jù)。每個(gè)指令處理的每個(gè)點(diǎn)數(shù)據(jù)之間具有相依性且指令之間的控制 訊號(hào)相同。然而點(diǎn)數(shù)據(jù)與點(diǎn)數(shù)據(jù)之間并無(wú)數(shù)據(jù)相依性以及控制訊號(hào)的相依 性。因此,數(shù)量為N的點(diǎn)資料可以分時(shí)方式同時(shí)處理,以避免指令執(zhí)行周 期的限制。亦即, 一個(gè)指令使用多個(gè)指令執(zhí)行周期(L),下一個(gè)周期執(zhí)行 數(shù)量W的點(diǎn)數(shù)據(jù),直至以管線操作方式完成所有點(diǎn)數(shù)據(jù)N的處理程序。數(shù)量 W定義為每個(gè)算術(shù)運(yùn)算周期所處理的點(diǎn)數(shù)據(jù)數(shù)量,當(dāng)數(shù)量N大于或是等于 !^L(周期數(shù)),目前在正執(zhí)行的指令將完成點(diǎn)數(shù)據(jù)的處理,接著以下一個(gè) 指令進(jìn)行所有點(diǎn)數(shù)據(jù)的處理。因此當(dāng)以批次方式利用指令來(lái)處理點(diǎn)數(shù)據(jù) 時(shí),著色器需要使用數(shù)量N的緩存器來(lái)儲(chǔ)存數(shù)量(WH4J的點(diǎn)數(shù)據(jù)。在圖2中,由于數(shù)量N的點(diǎn)數(shù)據(jù)以同一指令進(jìn)行處理,對(duì)應(yīng)于不同點(diǎn)數(shù) 據(jù)的每個(gè)指令必須對(duì)全部的點(diǎn)資料進(jìn)行處理。換句話說(shuō),即使一部分的指 令并不需要執(zhí)行其中一部分的點(diǎn)數(shù)據(jù),但是每個(gè)點(diǎn)數(shù)據(jù)仍以每個(gè)指令進(jìn)行
執(zhí)行。再于每個(gè)指令視條件(condition)遮蔽(mask)掉不須執(zhí)行此指令的 點(diǎn)數(shù)據(jù)的所有作用,此稱(chēng)為單指令多數(shù)據(jù)流分支(SIMD branching)處理 法。如分支指令(if-then-else),各分支的指令就都要執(zhí)行,執(zhí)行時(shí)再視 條件留下合條件的分支的緩存器寫(xiě)入,即遮蔽不符合條件的分支的緩存器 30寫(xiě)入。對(duì)于數(shù)量N的點(diǎn)數(shù)據(jù)而言,像素著色裝置僅包含程序指位器24、 擷取裝置22以及譯碼器26。當(dāng)于算數(shù)邏輯單元28同時(shí)執(zhí)行數(shù)量W的點(diǎn)數(shù)據(jù), 只需要一個(gè)控制訊號(hào)以及緩存器存取端口32,而所有點(diǎn)數(shù)據(jù)在單指令多數(shù) 據(jù)流(S頂D)分支處理架構(gòu)具有相同的執(zhí)行路徑和結(jié)束指令。圖3是現(xiàn)有技術(shù)的圖形處理器中像素著色裝置的方塊圖,該像素著色 裝置具有多指令多數(shù)據(jù)流(multiple instruction multiple data, MIMD) 的分支處理架構(gòu)。為避免上述單指令多數(shù)據(jù)流分支處理法而需要執(zhí)行所有 分支循環(huán)的指令都要執(zhí)行的無(wú)效率缺點(diǎn),現(xiàn)有技術(shù)是將每點(diǎn)數(shù)據(jù)依不同條 件執(zhí)行不同的指令路徑,稱(chēng)為多指令多數(shù)據(jù)流分支處理法(M頂D branching)。因?yàn)槊總€(gè)點(diǎn)的條件判斷結(jié)果都不相同,執(zhí)行路徑及指令就都 不同,故批次執(zhí)行的N個(gè)點(diǎn)都要存下本身每個(gè)點(diǎn)的程序指位器(PC)24的值。 同時(shí)執(zhí)行的W點(diǎn)即有W個(gè)不同的程序指位器(PC)24的值,并且擷取出W個(gè)不 同的指令,分別譯碼為不同的控制訊號(hào),并傳送至W個(gè)算數(shù)邏輯單元(ALU) 執(zhí)行。如圖3所示,多指令多數(shù)據(jù)流分支處理法需要N個(gè)程序指位器(PC)24 的值,W個(gè)擷取裝置22及譯碼器26。而在W個(gè)算數(shù)邏輯單元(ALU)28存取W組 不同的緩存器,則需要W組緩存器存取端口 (RAP)32。此外,每點(diǎn)的執(zhí)行路 徑和結(jié)束指令都不相同,但輸出串流的順序需與輸入的順序一致,故還要 一個(gè)重排序機(jī)制,將亂序(out-of-order)結(jié)束的不同點(diǎn),重排為和輸入時(shí) 一樣的次序(in-order)。然后記錄各點(diǎn)亂序的完成狀態(tài),而每個(gè)周期 (cycle)以一固定點(diǎn)數(shù),循序發(fā)至后端。多指令多數(shù)據(jù)流分支處理法的硬件成本遠(yuǎn)大于單指令多數(shù)據(jù)流分支 處理法。然而在繪圖應(yīng)用上,分支循環(huán)卻需要利用多指令多數(shù)據(jù)流分支處 理法的效能,其原因?yàn)榉种аh(huán)主要是以少數(shù)指令完成大多數(shù)簡(jiǎn)單的特效 處理,而在少部分?jǐn)?shù)需要復(fù)雜特效處理之處,再利用許多的指令完成該復(fù)
雜特效,此稱(chēng)為早期挑出應(yīng)用(early-out印plication)。第4A及4B圖是現(xiàn)有技術(shù)于圖形處理器中執(zhí)行的著色程序,該著色程序 包括早期挑出分支指令以及循環(huán)指令。分支的一個(gè)條件的指令數(shù)目遠(yuǎn)小于 另一條件,但是最常被執(zhí)行,故需要大幅加速處理,也是分支指令的主要 功能。但是當(dāng)著色裝置(shader)執(zhí)行單指令多數(shù)據(jù)流分支處理法架構(gòu),所 有點(diǎn)都要執(zhí)行所有指令一次,故不但和不使用分支一樣,所有點(diǎn)都要執(zhí)行 指令數(shù)長(zhǎng)的復(fù)雜特效分支,而且額外多出分支指令的處理時(shí)間以及指令數(shù) 目較短的分支,因此遠(yuǎn)不如直接執(zhí)行復(fù)雜特效的效率。另外,循環(huán)的應(yīng)用 類(lèi)似于上述的分支,因DirectX中的循環(huán)次數(shù)為預(yù)先設(shè)定的常數(shù),且必須 選擇所有點(diǎn)之中執(zhí)行循環(huán)數(shù)的最大者,故需在循環(huán)之內(nèi)利用"break"指 令將不需要的循環(huán)早期挑出(early-out)。但是當(dāng)以著色裝置(shader)執(zhí) 行用單指令多數(shù)據(jù)流分支處理法架構(gòu),所有點(diǎn)都要執(zhí)行最大循環(huán)數(shù),不如 不用指令"break"而直接執(zhí)行最大循環(huán)數(shù)的效率較高。因此需要發(fā)展一種具有指令早期退休機(jī)制的像素處理系統(tǒng),以降低硬 件的成本以及提高圖形處理器的效能。發(fā)明內(nèi)容本發(fā)明的目的在于提供一種具有指令早期退休機(jī)制的像素處理系統(tǒng), 以提高程序的執(zhí)行效率。本發(fā)明的另一目的在于提供一種具有指令早期退休機(jī)制的像素處理 系統(tǒng),以節(jié)省像素處理系統(tǒng)的硬件成本。本發(fā)明的又一目的在于提供一種用于像素處理系統(tǒng)的折迭機(jī)制,以改 善像素處理系統(tǒng)的執(zhí)行效能。根據(jù)上述目的,本發(fā)明提出一種指令早期退休機(jī)制及其方法以及使用 該早期退休機(jī)制及該方法的像素處理系統(tǒng)。該像素處理系統(tǒng)主要包括指令 早期退休機(jī)制以及像素著色裝置。指令早期退休機(jī)制用以使第一程序中若 干個(gè)指令早期退休,以產(chǎn)生具有早期退休指令的第二程序。像素著色裝置 用以擷取該第二程序,以對(duì)該第二程序中的該早期退休指令進(jìn)行譯碼,并 且執(zhí)行該第二程序,以處理若干個(gè)像素,其中該像素著色裝置用以檢查像 素經(jīng)過(guò)該早期退休指令處理之后,直接由該像素著色裝置發(fā)出該處理之后 的像素。其中該指令早期退休指令可為外顯的退休指令、退休流程控制指令或是具有退休位元(retire bit)的指令,該退休位元也稱(chēng)為完成位元 (complete bit)。像素著色裝置包含退休指令譯碼器、算數(shù)邏輯單元(ALU)以及緩存器 讀取端口。退休指令譯碼器用以對(duì)該早期退休指令進(jìn)行譯碼,以形成控制 訊號(hào)。算數(shù)邏輯單元連接于該退休指令譯碼器,用以根據(jù)該控制訊號(hào)對(duì)執(zhí) 行該早期退休指令的暫存數(shù)據(jù)進(jìn)行運(yùn)算。緩存器讀取端口連接于該算數(shù)邏 輯單元,用以選取該暫存字段,以轉(zhuǎn)換該早期退休指令的運(yùn)算格式。在一個(gè)實(shí)施例中,像素著色裝置更包含指令儲(chǔ)存裝置以及指令擷取裝 置。指令儲(chǔ)存裝置用以接收該第二程序儲(chǔ)存指令,其中這些指令包含一個(gè) 或是一個(gè)以上的早期退休指令。指令擷取裝置連接于該指令儲(chǔ)存裝置,根 據(jù)一個(gè)程序指位器來(lái)擷取該指令中的早期退休指令。該像素著色裝置包含 緩存器,用于儲(chǔ)存對(duì)應(yīng)于該指令的緩存器字段的數(shù)據(jù)。此外,像素著色裝置更包含連接于該緩存器的重排序機(jī)制,用以對(duì)具 有亂序的退休位元的處理像素進(jìn)行排序,使得處理像素具有循序的退休位 元。該處理之后的像素的輸出順序與處理之前的像素的輸入順序相同。該 重排序機(jī)制是由若干與門(mén)邏輯組件組成。該指令早期退休機(jī)制包含流程控制圖產(chǎn)生器、指令區(qū)塊結(jié)束檢查器以 及退休指令修正模塊。流程控制圖產(chǎn)生器用以接收該第一程序以及掃描該 第一程序中的指令,以產(chǎn)生具有若干指令區(qū)塊的流程控制圖,其中每一指 令區(qū)塊包含至少一個(gè)指令。指令區(qū)塊結(jié)束檢查器連接于該流程控制圖產(chǎn)生 器,用以檢査指令區(qū)塊中的終端指令區(qū)塊,以辨識(shí)該終端指令區(qū)塊中的流 程控制指令。退休指令修正模塊連接于該指令區(qū)塊結(jié)束檢查器,用以將該 最后一個(gè)流程控制指令修正為該早期退休指令。執(zhí)行像素處理系統(tǒng)時(shí),利用指令早期退休機(jī)制使第一程序中若干個(gè)指 令早期退休,以產(chǎn)生具有至少一個(gè)早期退休指令的第二程序。
在一個(gè)實(shí)施例中,在指令早期退休機(jī)制使第一程序中若干個(gè)指令早期 退休的步驟中,更包含利用反向掃描模塊反向掃描該第一程序,以檢查指 令中最后一個(gè)流程控制指令。并且利用退休指令修正模塊將該最后一個(gè)流 程控制指令修正為該早期退休指令。在另一實(shí)施例中,在指令早期退休機(jī)制使第一程序中若干個(gè)指令早期 退休的步驟中,更包含利用流程控制圖產(chǎn)生器來(lái)接收該第一程序以及掃描 該第一程序中的指令,以產(chǎn)生具有若干指令區(qū)塊的流程控制圖。并且利用 指令區(qū)塊結(jié)束檢查器來(lái)檢査指令區(qū)塊中的終端指令區(qū)塊,以辨識(shí)該終端指 令區(qū)塊中的流程控制指令。通過(guò)退休指令修正模塊將該最后一個(gè)流程控制 指令修正為該早期退休指令。 掃描指令之后,以一個(gè)指令區(qū)塊復(fù)制器復(fù)制該終端指令區(qū)塊中的指 令。然后移動(dòng)該復(fù)制指令至另一指令區(qū)塊并且移除最后一個(gè)終端指令區(qū) 塊。接著檢査最后一個(gè)指令區(qū)塊的指令數(shù)量是否小于一個(gè)臨限值,當(dāng)指令 數(shù)量小于該臨限值,以一個(gè)指令區(qū)塊交換器來(lái)交換一個(gè)指令區(qū)塊至另一指 令區(qū)塊。其中該指令區(qū)塊交換器檢查兩個(gè)指令區(qū)塊之間指令數(shù)量的差異 值。接著以指令擷取裝置根據(jù)一個(gè)程序指位器來(lái)擷取早期退休指令。然后 利用退休指令譯碼器對(duì)該早期退休指令進(jìn)行譯碼,以形成控制訊號(hào)。接著 以算數(shù)邏輯單元根據(jù)該控制訊號(hào)對(duì)執(zhí)行該早期退休指令的暫存數(shù)據(jù)進(jìn)行 運(yùn)算。最后像素著色裝置根據(jù)該運(yùn)算結(jié)果,以使該像素著色裝置發(fā)出該處 理之后的像素。本發(fā)明的特點(diǎn)主要包括利用指令早期退休機(jī)制以及指令退休譯碼器 來(lái)提高程序的執(zhí)行效率,并且利用簡(jiǎn)單的單指令多數(shù)據(jù)流分支架構(gòu)來(lái)降低 像素處理系統(tǒng)的硬件設(shè)置成本。
圖l是現(xiàn)有技術(shù)的圖形處理器的管線架構(gòu)的方塊圖。圖2是現(xiàn)有技術(shù)的圖形處理器中像素著色裝置的方塊圖,該像素著色
裝置具有單指令多數(shù)據(jù)流的分支處理架構(gòu)。圖3是現(xiàn)有技術(shù)的圖形處理器中像素著色裝置的方塊圖,該像素著色 裝置具有多指令多數(shù)據(jù)流的分支處理架構(gòu)。圖4A及圖4B是現(xiàn)有技術(shù)于圖形處理器中執(zhí)行的著色程序,該著色程序 包括早期挑出分支指令以及循環(huán)指令。圖5是依據(jù)本發(fā)明較佳實(shí)施例的像素處理系統(tǒng)的方塊圖,該像素處理系統(tǒng)具有指令早期退休機(jī)制。圖6是依據(jù)本發(fā)明較佳實(shí)施例的范例程序,該范例程序系用以執(zhí)行圖5之指令早期退休機(jī)制。圖7是依據(jù)本發(fā)明較佳實(shí)施例中圖5的重排序機(jī)制的詳細(xì)方塊圖。 圖8是依據(jù)本發(fā)明第一實(shí)施例中圖5的指令早期退休機(jī)制的詳細(xì)方塊圖。圖9是依據(jù)本發(fā)明第一實(shí)施例的范例程序,該范例程序是用以執(zhí)行圖8 的指令早期退休機(jī)制。圖10是依據(jù)本發(fā)明第二實(shí)施例中圖5的指令早期退休機(jī)制的詳細(xì)方塊圖。圖ll是依據(jù)本發(fā)明較佳實(shí)施例的第一范例程序,該第一范例程序是用 以執(zhí)行圖10的指令早期退休機(jī)制。圖12是依據(jù)本發(fā)明較佳實(shí)施例的第二范例程序,該第二范例程序是用 以執(zhí)行圖10的指令早期退休機(jī)制。圖13是依據(jù)本發(fā)明較佳實(shí)施例的第三范例程序,該第三范例程序是用 以執(zhí)行圖10的指令早期退休機(jī)制。圖14是依據(jù)本發(fā)明執(zhí)行像素處理系統(tǒng)的流程圖。
具體實(shí)施方式
本發(fā)明提供一種具有早期退休指令機(jī)制的像素處理系統(tǒng),以增加程序 的執(zhí)行效率。而且早期退休指令機(jī)制使程序中執(zhí)行的指令先行退休,以節(jié) 省像素處理系統(tǒng)的硬件成本。熟悉該項(xiàng)技術(shù)者應(yīng)了解的是,本發(fā)明的早期
退休指令機(jī)制適用于DirectX規(guī)格以及OpenGL規(guī)格,更可適用于圖形處理 系統(tǒng)中使用DirectX規(guī)格的頂點(diǎn)著色器(vertex shader)以及幾何著色器 (geometric shader),或是未來(lái)發(fā)展出來(lái)的規(guī)格。圖5是依據(jù)本發(fā)明較佳實(shí)施例的像素處理系統(tǒng)的方塊圖,該像素處理 系統(tǒng)主要包括指令早期退休機(jī)制100以及像素著色裝置102。指令早期退休 機(jī)制100用以使第一程序中若干個(gè)指令早期退休,以產(chǎn)生具有早期退休指 令的第二程序。像素著色裝置102連接于該指令早期退休機(jī)制100,用以擷 取該第二程序,以對(duì)該第二程序中的該早期退休指令進(jìn)行譯碼,并且執(zhí)行 該第二程序,以處理若干個(gè)像素,其中該像素著色裝置102用以檢查像素 經(jīng)過(guò)該早期退休指令處理之后,直接由該像素著色裝置發(fā)出該處理之后的 像素。其中該指令早期退休指令可為外顯的退休指令、退休流程控制指令 或是具有退休位元(retire bit)的指令,該退休位元也稱(chēng)為完成位元 (complete bit)。像素著色裝置102包含退休指令譯碼器104、算數(shù)邏輯單元(ALU) 106以 及緩存器讀取端口108。退休指令譯碼器104用以對(duì)該早期退休指令進(jìn)行譯 碼,以形成控制訊號(hào)。算數(shù)邏輯單元106連接于該退休指令譯碼器104,用 以根據(jù)該控制訊號(hào)對(duì)執(zhí)行該早期退休指令的暫存數(shù)據(jù)進(jìn)行運(yùn)算。緩存器讀 取端口108連接于該算數(shù)邏輯單元106,用以選取該暫存字段,以轉(zhuǎn)換該早 期退休指令的運(yùn)算格式。在一個(gè)實(shí)施例中,像素著色裝置102更包含指令儲(chǔ)存裝置110以及指令 擷取裝置112。指令儲(chǔ)存裝置110用以接收該第二程序儲(chǔ)存指令,其中這些 指令包含一個(gè)或是一個(gè)以上的早期退休指令,且該指令儲(chǔ)存裝置110例如 可為指令隊(duì)列(instruction queue)。指令擷取裝置112連接于該指令儲(chǔ)存 裝置IIO,根據(jù)一個(gè)程序指位器118來(lái)擷取指令中的早期退休指令。該像素 著色裝置102包含連接于該緩存器讀取端口的緩存器116,該緩存器116用 于儲(chǔ)存對(duì)應(yīng)于指令的緩存器字段的數(shù)據(jù)。在一個(gè)實(shí)施例中,像素著色裝置包含連接于該緩存器的重排序機(jī)制 114,用以對(duì)具有亂序的退休位元的處理像素進(jìn)行排序,使得處理像素具
有循序的退休位元。該處理之后的像素的輸出順序與處理之前的像素的輸 入順序相同。該重排序機(jī)制是由若干與門(mén)邏輯組件組成。本發(fā)明提出一個(gè)早期退休(early retiring)的機(jī)制,透過(guò)外顯 (explicit)的退休(retire)指令,或和流程控制(flow control)指令結(jié)合 為 一 群具退休功能的新指令(即為"if一or—retire", "else—or—retire","break—and一retire",及"call—or一retire"),或指令格式中的外顯 的一退休位元(retire bit),以標(biāo)出早期退休的機(jī)會(huì)。如此,可以用極低 硬件成本的單指令多數(shù)據(jù)流(SIMD)分支處理架構(gòu),在最常用的應(yīng)用中,達(dá) 到和多指令多數(shù)據(jù)流(MIMD)分支處理架構(gòu)一樣的效能。本發(fā)明的硬件成本 大量減少,而僅增加一個(gè)重排序(reorder)機(jī)制及譯碼器(decoder)即可, 改善現(xiàn)有多指令多數(shù)據(jù)流(MIMD)分支處理架構(gòu)需要的N份PC, W份擷取裝置 及譯碼器及W組緩存器存取端口 (RAP),其中指令執(zhí)行周期為L(zhǎng)。此外,與單指令多數(shù)據(jù)流(S頂D)分支處理架構(gòu)相比,在本發(fā)明的一實(shí) 施例中,像素處理系統(tǒng)包括重排序機(jī)制114以及退休指令譯碼器104。重排 序機(jī)制114用以對(duì)具有亂序的退休位元的處理像素進(jìn)行排序,使得處理像 素具有循序的退休位元,以及每個(gè)退休位元是依附在緩存器中每個(gè)點(diǎn)數(shù)據(jù) 之后,使得該處理之后的像素在輸出串流的輸出順序與處理之前的像素在 輸入串流的輸入順序相同。熟悉該項(xiàng)技術(shù)者應(yīng)注意的是,上述的點(diǎn)數(shù)據(jù)是 定義為頂點(diǎn)著色器的頂點(diǎn)數(shù)據(jù)、像素著色裝置的像素?cái)?shù)據(jù)、圖形處理應(yīng)用 的圖形單位以及前述的任意組合。圖6是依據(jù)本發(fā)明較佳實(shí)施例的范例程序,該范例程序系用以執(zhí)行圖5的指令早期退休機(jī)制。具有分支指令的像素著色程序是用于早期挑出的圖 形處理技術(shù)領(lǐng)域,如圖6所示,在"if"分支區(qū)段中的指令數(shù)量小 于"else"分支區(qū)段中的指令數(shù)量,但大多數(shù)的像素點(diǎn)實(shí)際只需執(zhí) 行"if"區(qū)段。就可透過(guò)本專(zhuān)利的早期退休機(jī)制,將"else"指令改 為"else一or—retire"新指令,將早期退休的機(jī)會(huì)標(biāo)出。通過(guò)檢査是否滿 足"else-or-retire"指令的條件,以設(shè)定退休位元。
本發(fā)明僅需利用單指令多數(shù)據(jù)流(SB1D)分支處理架構(gòu),而著色器的硬 件架構(gòu)只需保持單指令多數(shù)據(jù)流(SIMD)分支處理架構(gòu),在每一像素執(zhí)行 至"else—or_retire"新指令,在不符合else條件時(shí)設(shè)定此像素對(duì)應(yīng)的退 休位元(retire bit),否則在程序最后設(shè)定此位,代表此點(diǎn)已合退休條件。 就可利用重排序(reorder機(jī)制),在其之前的像素都退休時(shí),提早退休, 亦即離開(kāi)像素著色裝置,發(fā)出至之后的處理步驟。因?yàn)橹挥猩贁?shù)的像素需 執(zhí)行"else"區(qū)段內(nèi)的指令,且都集中在固定區(qū)域的像素中,即具有空間 地區(qū)性(spatial locality)。在一個(gè)實(shí)施例中,之后的說(shuō)明以一群具退休功能的新流程控制指令舉 例,在DirectX PS3.0的規(guī)格中,即為"if—or—retire"指令除"if"指令原作用之外,當(dāng)不符合"if"指令條件時(shí),設(shè)定退休位 元;"else_0r—retire"指令除"else"指令原作用之外,當(dāng)不符 合"else"指令條件時(shí),設(shè)定退休位元;"break—and—retire"指令 除"break"指令原作用之外,當(dāng)符合"break"指令條件時(shí),設(shè)定退休位 元;以及"Call_or—retire"指令除"call"指令原作用之外,在不符 合"call"指令條件判斷時(shí),設(shè)定退休位元。但可簡(jiǎn)單變型為獨(dú)立的外顯 (explicit)的退休(retire)指令,或指令格式中的外顯的 一 退休位元 (retire bit)。此機(jī)制可以是用軟件或硬件來(lái)實(shí)現(xiàn)。用軟件實(shí)現(xiàn)時(shí),可是單獨(dú)的工具 程序,也可為程序加載程序(program loader)或裝置驅(qū)動(dòng)程序(device driver)的一部份,附加于編輯器(compiler)的后段。用硬件實(shí)現(xiàn)時(shí),是 位于像素著色裝置指令擷取(fetch)或譯碼(decode)之前,也可內(nèi)含于圖 形處理器(GPU)或像素著色裝置。圖7是依據(jù)本發(fā)明較佳實(shí)施例中圖5的重排序機(jī)制的詳細(xì)方塊圖。依據(jù) 點(diǎn)數(shù)據(jù)的輸入至輸入串流的順序,將每個(gè)執(zhí)行周期的點(diǎn)數(shù)據(jù)數(shù)量W依序地 傳送至輸出串流而由像素著色裝置102發(fā)出,其中點(diǎn)數(shù)據(jù)數(shù)量W與著色器的 頻寬互相匹配。在緩存器中的每個(gè)退休位元分別對(duì)應(yīng)于每一點(diǎn)數(shù)據(jù)。當(dāng)像 素處理系統(tǒng)確認(rèn)在目前點(diǎn)數(shù)據(jù)之前的所有點(diǎn)數(shù)據(jù)均已退休,則使目前的點(diǎn)
資料退休,并且設(shè)定該目前點(diǎn)數(shù)據(jù)的退休位元,即目前的點(diǎn)資料是否退休 是經(jīng)由該目前點(diǎn)數(shù)據(jù)之前的所有點(diǎn)數(shù)據(jù)是否退休作為設(shè)定退休位元的依據(jù)。如圖7所示,當(dāng)欲決定像素P2是否退休時(shí),需先設(shè)定像素P2的退休位 元以及設(shè)定像素P2之前的像素P1的退休位元。在一個(gè)實(shí)施例中,重排序機(jī) 制114先檢查對(duì)應(yīng)于一個(gè)像素的退休位元,直至完成數(shù)量W的所有退休位 元。本發(fā)明的重排序機(jī)制是由若干個(gè)與門(mén)邏輯組件或任意組合的邏輯組件 組成,每一與門(mén)邏輯組件例如包括兩個(gè)輸入端以及一個(gè)輸出端。圖8是依據(jù)本發(fā)明第一實(shí)施例中圖5的指令早期退休機(jī)制的詳細(xì)方塊 圖。該指令早期退休機(jī)制100包含反向掃描模塊200以及退休指令修正模塊 202。反向掃描模塊200通過(guò)反向掃描該第一程序,以檢査指令中最后一個(gè) 流程控制指令。退休指令修正模塊202連接于該反向掃描模塊200,用以將 該最后一個(gè)流程控制指令修正為該早期退休指令。圖9是依據(jù)本發(fā)明第一實(shí)施例的范例程序,該范例程序是用以執(zhí)行圖8 的指令早期退休機(jī)制。反向掃描模塊200通過(guò)反向掃描該第一程序,以檢 查各種指令中最后 一 個(gè)流程控制指令,流程控制指令可 為"if" 、 " else" 、 " break"以及"call"等指令或是其它的流程控 制指令。較佳實(shí)施例中指令"call"為條件判斷的"call"指令。然后退 休指令修正模塊202將該最后一個(gè)流程控制指令修正為早期退休指令,該早 期 退 休 指 令 可為,,if—or—retire,, 、 " else_or_retire" 、 " break_or_retire" 以 及"call_or—retire"等指令,以指示出程序中對(duì)應(yīng)于像素的退休位元的 信息,以產(chǎn)生如圖6所示的第二程序。在圖9中,顯示具有循環(huán)指令的范例 程序,早期退休指令機(jī)制100用于辨識(shí)流程控制"break—ge"指令并且將 其修正為"break一ge—and_retire"的早期退休指令。圖10是依據(jù)本發(fā)明第二實(shí)施例中圖5的指令早期退休機(jī)制的詳細(xì)方塊 圖。該指令早期退休機(jī)制包含流程控制圖產(chǎn)生器300、指令區(qū)塊結(jié)束檢查 器302以及退休指令修正模塊304。流程控制圖產(chǎn)生器300用以接收該第一 程序以及掃描該第一程序中的指令,以產(chǎn)生具有若干指令區(qū)塊的流程控制
圖,其中每一指令區(qū)塊至少包含一個(gè)指令。指令區(qū)塊結(jié)束檢査器302連接于該流程控制圖產(chǎn)生器300,用以檢査各個(gè)指令區(qū)塊中的終端指令區(qū)塊, 以辨識(shí)該終端指令區(qū)塊中的流程控制指令。退休指令修正模塊304連接于 該指令區(qū)塊結(jié)束檢查器302,用以將最后一個(gè)流程控制指令修正為該早期 退休指令。在一個(gè)實(shí)施例中,該指令早期退休機(jī)制100也可包含指令區(qū)塊復(fù)制器 306,該指令區(qū)塊復(fù)制器306是與流程控制圖產(chǎn)生器300與指令區(qū)塊結(jié)束檢 査器302兩者之間傳輸?shù)穆窂竭B接,用以復(fù)制該終端指令區(qū)塊中的指令。 其中該指令早期退休機(jī)制100移動(dòng)復(fù)制的指令至另一指令區(qū)塊并且移除最 后一個(gè)終端指令區(qū)塊。該指令區(qū)塊復(fù)制器306檢査最后一個(gè)指令區(qū)塊的指 令數(shù)量是否小于一個(gè)臨限值。指令早期退休機(jī)制100也可包含一個(gè)指令區(qū) 塊交換器308,其是該流程控制圖產(chǎn)生器與該指令區(qū)塊結(jié)束檢查器兩者之 間的路徑連接,用以交換一個(gè)指令區(qū)塊至另一指令區(qū)塊。該指令區(qū)塊交換 器檢査兩個(gè)指令區(qū)塊之間指令數(shù)量的差異值。流程圖產(chǎn)生器掃瞄(scan)—次原程序,依其流程控制指令將程序分解 為由基本指令區(qū)塊(basic block)組成的流程圖(flow graph)?;緟^(qū)塊是一段一起執(zhí)行或一起不執(zhí)行的循序指令。所以流程控制指令主要是結(jié)束 于一個(gè)基本區(qū)塊,其跳躍的目的也會(huì)形成一個(gè)基本區(qū)塊的開(kāi)頭。如此將程序分解成數(shù)個(gè)基本區(qū)塊。再將流程控制指令每個(gè)可能的目的區(qū)塊以有向邊 (edge)標(biāo)出,即形成一個(gè)有向圖,稱(chēng)為流程圖。如果這個(gè)流程控制指令有 可能跳到程序結(jié)尾,則以有向邊指向地(null)。流程圖建立后,指令區(qū)塊結(jié)束檢査器302即掃瞄此流程圖,檢查出所 有可能跳到程序結(jié)尾的區(qū)塊,將其區(qū)塊最后的指令標(biāo)為可退休指令。退休 指令修正模塊304再掃瞄一次程序,標(biāo)為可退休指令的循序下一個(gè)指令如 為"if" 、 " else" 、 " break"或條件判斷"call"指令,則可利用簡(jiǎn) 單早期退休機(jī)制修改。如此即可跨過(guò)巢狀(nested)的流程控制找到更多早 期退休機(jī)會(huì)。上述做法是以一群具退休功能的新流程控制指令,以標(biāo)出早期退休的 例子。如果用一個(gè)外顯的退休(retire)指令標(biāo)出,則退休指令修改器將退 休(retire)指令置于標(biāo)為可退休指令之后即可。當(dāng)以指令格式中的一退休 位元方式標(biāo)示時(shí),退休指令修正模塊304將標(biāo)為具有退休位元的可退休指圖ll是依據(jù)本發(fā)明較佳實(shí)施例的第一范例程序,該第一范例程序是用 以執(zhí)行圖10的指令早期退休機(jī)制。流程控制圖產(chǎn)生器300掃瞄第一程序以 形成流程控制圖,其中方形指令區(qū)塊表示為第一程序的終端指令區(qū)塊(B2、 B4、 B5),接著指令區(qū)塊結(jié)束檢査器302掃描流程控制圖,用以檢査終端指 令區(qū)塊(B2、 B4、 B5),并且將各個(gè)終端指令區(qū)塊(B2、 B4、 B5)的最后指令 標(biāo)示為退休指令。然后,退休指令修正模塊304掃描第一程序,并且修正 之后的指令,即將"else"指令修正為"else—or—retire"指令,以形成 第二程序。在較佳實(shí)施例中,終端指令區(qū)塊B5己具有退休的特性,故可省 略辨識(shí)是否為退休指令的步驟。圖12是依據(jù)本發(fā)明較佳實(shí)施例的第二范例程序,該第二范例程序是用 以執(zhí)行圖10的指令早期退休機(jī)制。建立流程控制圖之后,指令區(qū)塊復(fù)制器 306掃描控制流程圖,用以檢査第一程序的終端指令區(qū)塊。如其指令數(shù)小 于一個(gè)臨限值(threshold),例如1 3個(gè)指令或是任意數(shù)量的指令,就將整個(gè)區(qū)塊復(fù)制加入到所有來(lái)源區(qū)塊(指向此指令區(qū)塊的指令區(qū)塊)后端,再移 除較小的指令區(qū)塊,并將來(lái)源區(qū)塊接地。如此就可將所有來(lái)源區(qū)塊變?yōu)樘?到程序結(jié)尾的區(qū)塊,增加早期退休的機(jī)會(huì)。也可比較來(lái)源區(qū)塊間的指令個(gè) 數(shù)差,當(dāng)比一指令區(qū)塊的指令數(shù)大,或大到一個(gè)臨限值,執(zhí)行指令區(qū)塊的 復(fù)制步驟,以增加早期退休的機(jī)會(huì)。在另一實(shí)施例中,通過(guò)比較指令區(qū)塊 之間的指令數(shù)量差異,且當(dāng)該指令數(shù)量差異大于一個(gè)臨限值,則使指令區(qū) 塊復(fù)制器306動(dòng)作,使得程序中指令可早期退休的機(jī)率增加。在圖12中, 將第一程序分成4個(gè)指令區(qū)塊,即B1、 B2、 B3以及B4。指令區(qū)塊復(fù)制器306 用以復(fù)制指令區(qū)塊B4并且將指令區(qū)塊B4并入指令區(qū)塊B2以及指令區(qū)塊B3 中,以標(biāo)示出指令退休,然后移除指令區(qū)塊B4。圖13是依據(jù)本發(fā)明較佳實(shí)施例的第三范例程序,該第三范例程序是用
以執(zhí)行圖10的指令早期退休機(jī)制。建立流程控制圖之后,指令區(qū)塊交換器308掃描控制流程圖,并且檢查流程指令區(qū)塊"if"及"else"的指令數(shù) 量,當(dāng)流程指令區(qū)塊"if"的指令數(shù)量大于流程指令區(qū)塊"else"的指令 數(shù)量時(shí),將流程指令區(qū)塊"if"與"else"兩個(gè)區(qū)塊互相交換,并將流程 分支的條件判斷變更,例如將條件判斷"if—gt"變更為"if—le",因而 使得在程序末段的指令區(qū)塊具有較大的指令數(shù)量,以提高標(biāo)示指令退休的 機(jī)率。此外,當(dāng)本發(fā)明的圖形處理器(GPU)用于物理(physical)應(yīng)用時(shí),早期挑出也是最常見(jiàn)的情形。例如占目前運(yùn)算量最大的碰撞預(yù)測(cè),就可分為 初步查出物體碰撞可能性的粗略階段(broad phase),及進(jìn)一步于每一對(duì) (pair)可能碰撞的物體間仔細(xì)算出有無(wú)碰撞的精細(xì)階段(narrow phase)。 此應(yīng)用就可用一個(gè)分支,根據(jù)粗略階段的結(jié)果,早期挑出沒(méi)有碰撞可能性 的物體對(duì)(pair),使只需將有碰撞可能的物體對(duì)進(jìn)行精細(xì)階段即可。圖14是依據(jù)本發(fā)明執(zhí)行像素處理系統(tǒng)的流程圖。在步驟S800中,利用 一指令早期退休機(jī)制使第一程序中若干個(gè)指令早期退休,以產(chǎn)生具有至少 一早期退休指令的第二程序。在一個(gè)實(shí)施例中,在指令早期退休機(jī)制使第一程序中若干個(gè)指令早期 退休的步驟中,更包含利用反向掃描模塊反向掃描該第一程序,以檢查指 令中最后一個(gè)流程控制指令。并且利用退休指令修正模塊將該最后一個(gè)流 程控制指令修正為該早期退休指令。在另一實(shí)施例中,在指令早期退休機(jī)制使第一程序中若干個(gè)指令早期 退休的步驟中,更包含利用流程控制圖產(chǎn)生器來(lái)接收該第一程序以及掃描 該第一程序中的指令,以產(chǎn)生具有若干指令區(qū)塊的流程控制圖,其中每一 指令區(qū)塊包含至少一個(gè)指令。并且利用指令區(qū)塊結(jié)束檢查器來(lái)檢査指令區(qū) 塊中的終端指令區(qū)塊,以辨識(shí)該終端指令區(qū)塊中的流程控制指令。通過(guò)退 休指令修正模塊將該最后一個(gè)流程控制指令修正為該早期退休指令。掃描指令之后,以一指?jìng)€(gè)令區(qū)塊復(fù)制器復(fù)制該終端指令區(qū)塊中的指 令。然后移動(dòng)該復(fù)制指令至另一指令區(qū)塊并且移除最后一個(gè)終端指令區(qū) 塊。接著檢查最后一個(gè)指令區(qū)塊的指令數(shù)量是否小于一個(gè)臨限值。以一指 令區(qū)塊交換器來(lái)交換一個(gè)指令區(qū)塊至另一指令區(qū)塊。其中該指令區(qū)塊交換 器檢査兩個(gè)指令區(qū)塊之間指令數(shù)量的差異值。在步驟S802,指令擷取裝置根據(jù)一個(gè)程序指位器來(lái)擷取指令中的早期 退休指令。在步驟S804中,退休指令譯碼器對(duì)該早期退休指令進(jìn)行譯碼, 以形成控制訊號(hào)。在步驟S806中,算數(shù)邏輯單元根據(jù)該控制訊號(hào)對(duì)執(zhí)行該 早期退休指令的暫存數(shù)據(jù)進(jìn)行運(yùn)算。在一個(gè)實(shí)施例中,在檢查是否由該像 素著色裝置發(fā)出該處理后的像素的步驟中,更包含對(duì)具有亂序的退休位元 的處理像素進(jìn)行排序,使得處理像素具有循序的退休位元。在步驟S808中, 像素著色裝置根據(jù)該運(yùn)算結(jié)果以使該像素著色裝置發(fā)出該處理之后的像 素。本發(fā)明的特點(diǎn)主要包括可利用指令早期退休機(jī)制以及指令退休譯碼 器來(lái)提高程序的執(zhí)行效率,并且利用簡(jiǎn)單的SIMD架構(gòu)來(lái)降低像素處理系統(tǒng) 的硬件設(shè)置成本。
權(quán)利要求
1.一種像素處理系統(tǒng),其特征在于其至少包含一個(gè)指令早期退休機(jī)制和一個(gè)像素著色裝置,該指令早期退休機(jī)制用以使第一程序中若干個(gè)指令早期退休,以產(chǎn)生具有至少一個(gè)早期退休指令的第二程序;像素著色裝置連接于該指令早期退休機(jī)制,用以擷取該第二程序,以對(duì)該第二程序中的該早期退休指令進(jìn)行譯碼,并且執(zhí)行該第二程序,以處理若干個(gè)像素,其中該像素著色裝置用以檢查經(jīng)過(guò)該早期退休指令處理的該些像素,以使該像素著色裝置直接發(fā)出該些像素。
2. 如權(quán)利要求l所述的像素處理系統(tǒng),其特征在于該指令早期退休 機(jī)制至少包含一個(gè)反向掃描模塊,以反向掃描該第一程序,以檢查該些指令中最后 一個(gè)流程控制指令;以及一個(gè)退休指令修正模塊,連接于該反向掃描模塊,用以將該最后一個(gè) 流程控制指令修正為該早期退休指令。
3. 如權(quán)利要求l所述的像素處理系統(tǒng),其特征在于該指令早期退休 機(jī)制至少包含一個(gè)流程控制圖產(chǎn)生器,用以接收該第一程序以及掃描該第一程序中 的指令,以產(chǎn)生具有若干指令區(qū)塊的流程控制圖,其中每一指令區(qū)塊包含 至少一個(gè)指令;一個(gè)指令區(qū)塊結(jié)束檢查器,連接于該流程控制圖產(chǎn)生器,用以檢査該 些指令區(qū)塊中的終端指令區(qū)塊,以辨識(shí)該終端指令區(qū)塊中的流程控制指 令;以及一個(gè)退休指令修正模塊,連接于該指令區(qū)塊結(jié)束檢査器,用以將該最 后一個(gè)流程控制指令修正為該早期退休指令。
4. 如權(quán)利要求3所述的像素處理系統(tǒng),其特征在于該指令早期退休機(jī)制更包含一個(gè)指令區(qū)塊復(fù)制器,其連接于該流程控制圖產(chǎn)生器與指令區(qū)塊結(jié)束檢査器兩者之間,用以復(fù)制該終端指令區(qū)塊中的指令。
5. 如權(quán)利要求4所述的像素處理系統(tǒng),其特征在于該指令早期退休 機(jī)制移動(dòng)該指令區(qū)塊復(fù)制器復(fù)制的復(fù)制指令至另一指令區(qū)塊并且移除最 后一個(gè)終端指令區(qū)塊。
6. 如權(quán)利要求3所述的像素處理系統(tǒng),其特征在于該指令早期退休 機(jī)制更包含一個(gè)指令區(qū)塊交換器,其連接于該流程控制圖產(chǎn)生器與該指令 區(qū)塊結(jié)束檢査器兩者之間,用以交換一指令區(qū)塊至另一指令區(qū)塊。
7. 如權(quán)利要求6所述的像素處理系統(tǒng),其特征在于該指令區(qū)塊交換 器檢査兩個(gè)指令區(qū)塊之間指令數(shù)量的差異值,當(dāng)該兩個(gè)指令區(qū)塊之間指令 數(shù)量不相同時(shí),該兩個(gè)指令區(qū)塊互相交換。
8. 如權(quán)利要求l所述的像素處理系統(tǒng),其特征在于該像素著色裝置 至少包含一個(gè)退休指令譯碼器,用以對(duì)該早期退休指令進(jìn)行譯碼,以形成控制 訊號(hào);一個(gè)算數(shù)邏輯單元,連接于該退休指令譯碼器,用以根據(jù)該控制訊號(hào) 對(duì)執(zhí)行該早期退休指令的暫存數(shù)據(jù)進(jìn)行運(yùn)算;以及一個(gè)緩存器讀取端口,連接于該算數(shù)邏輯單元,用以選取該暫存字段, 以轉(zhuǎn)換該早期退休指令的運(yùn)算格式。
9. 如權(quán)利要求8所述的像素處理系統(tǒng),其特征在于該像素著色裝置 至少包含一個(gè)指令儲(chǔ)存裝置,用以接收該第二程序儲(chǔ)存該些指令,其中該些指 令包含至少一個(gè)早期退休指令;以及一個(gè)指令擷取裝置,連接于該指令儲(chǔ)存裝置,根據(jù)一個(gè)程序指位器來(lái) 擷取該些指令中的早期退休指令。
10. 如權(quán)利要求8所述的像素處理系統(tǒng),其特征在于該像素著色裝置至少包含連接于該緩存器讀取端口的緩存器,該緩存器用于儲(chǔ)存對(duì)應(yīng)于 該些指令的緩存器字段的數(shù)據(jù)。
11. 一種執(zhí)行指令早期退休的方法,適用于像素處理系統(tǒng)中用來(lái)處理像素的指令,該方法至少包含下列步驟以一個(gè)指令早期退休機(jī)制使第一程序中若干個(gè)指令早期退休,以產(chǎn)生 具有至少一個(gè)早期退休指令的第二程序;根據(jù)一個(gè)程序指位器擷取該第二程序中的早期退休指令; 以一個(gè)譯碼器對(duì)該早期退休指令進(jìn)行譯碼,以形成一個(gè)控制訊號(hào); 一個(gè)算術(shù)邏輯單元根據(jù)該控制訊號(hào)對(duì)該早期退休指令的若干個(gè)緩存 器字段進(jìn)行邏輯運(yùn)算;以及根據(jù)該運(yùn)算結(jié)果檢査是否由該像素著色裝置發(fā)出該處理之后的像素。
12. 如權(quán)利要求ll所述的執(zhí)行指令早期退休的方法,其特征在于以 一個(gè)指令早期退休機(jī)制使第一程序中若干個(gè)指令早期退休的步驟中,還包 含下列步驟反向掃描該第一程序,以檢查該些指令中最后一個(gè)流程控制指令;以及將該最后一個(gè)流程控制指令修正為該早期退休指令。
13. 如權(quán)利要求ll所述的執(zhí)行指令早期退休的方法,其特征在于以 一個(gè)指令早期退休機(jī)制使第一程序中若干個(gè)指令早期退休的步驟中,更包 含下列步驟掃描該第一程序中的指令,以產(chǎn)生具有若干指令區(qū)塊的流程控制圖, 其中每一指令區(qū)塊包含至少一個(gè)指令;檢査該些指令區(qū)塊中的終端指令區(qū)塊,以辨識(shí)該終端指令區(qū)塊中的流 程控制指令;以及將該最后一個(gè)流程控制指令修正為該早期退休指令。
14. 如權(quán)利要求13所述的執(zhí)行指令早期退休的方法,其特征在于在 掃描該第一程序中的指令的步驟之后,更包含復(fù)制該終端指令區(qū)塊中的指
15.如權(quán)利要求14所述的執(zhí)行指令早期退休的方法,其特征在于在 復(fù)制該終端指令區(qū)塊中的指令的步驟之后,更包含下列步驟 移動(dòng)該復(fù)制指令至另一指令區(qū)塊;以及移除最后一個(gè)終端指令區(qū)塊。
16. 如權(quán)利要求14所述的執(zhí)行指令早期退休的方法,其特征在于其 更包含檢查最后一個(gè)指令區(qū)塊的指令數(shù)量是否小于一個(gè)臨限值,當(dāng)該指令 數(shù)量小于該臨限值,復(fù)制該終端指令區(qū)塊中的指令。
17. 如權(quán)利要求13所述的執(zhí)行指令早期退休的方法,其特征在于在 掃描該第一程序中的指令的步驟之后,更包含交換一指令區(qū)塊至另一指令 區(qū)塊的步驟。
18. 如權(quán)利要求17所述的執(zhí)行指令早期退休的方法,其特征在于在 交換一指令區(qū)塊至另一指令區(qū)塊的步驟中,更包含檢查兩個(gè)指令區(qū)塊之間 指令數(shù)量的差異值,當(dāng)該兩個(gè)指令區(qū)塊之間指令數(shù)量不相同時(shí),該兩個(gè)指 令區(qū)塊互相交換。
19. 如權(quán)利要求ll所述的執(zhí)行指令早期退休的方法,其特征在于該 指令早期退休指令是選自外顯的退休指令、退休流程控制指令以及具有退 休位元的指令。
20. 如權(quán)利要求ll所述的執(zhí)行指令早期退休的方法,其特征在于在 檢查是否由該像素著色裝置發(fā)出該處理后的像素的步驟中,更包含對(duì)具有 亂序的退休位元的處理像素進(jìn)行排序,使得該些處理像素具有循序的退休 位元。
全文摘要
一種指令早期退休機(jī)制及其方法以及使用該早期退休機(jī)制及方法的像素處理系統(tǒng)。像素處理系統(tǒng)主要包括指令早期退休機(jī)制以及像素著色裝置。指令早期退休機(jī)制用以使第一程序中若干個(gè)指令早期退休,以產(chǎn)生具有早期退休指令的第二程序。像素著色裝置用以擷取第二程序,以對(duì)第二程序中的早期退休指令進(jìn)行譯碼,并且執(zhí)行第二程序,以處理若干像素,其中像素著色裝置檢查像素經(jīng)過(guò)早期退休指令處理之后,直接由像素著色裝置發(fā)出處理之后的像素。指令早期退休指令可為外顯的退休指令、退休流程控制指令或是具有退休位元(也稱(chēng)為完成位元)的指令。
文檔編號(hào)G06T1/20GK101162523SQ200710087699
公開(kāi)日2008年4月16日 申請(qǐng)日期2007年3月19日 優(yōu)先權(quán)日2006年10月9日
發(fā)明者徐日明 申請(qǐng)人:矽統(tǒng)科技股份有限公司