專利名稱:圖形處理器單元管線中的條件執(zhí)行位的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實施例大體上涉及計算機圖形。
背景技術(shù):
近年來在計算機性能方面的進步已令圖形系統(tǒng)能夠使用個人計算機、家庭電子游戲 計算機、手持裝置等來提供更加真實的圖形圖像。在此類圖形系統(tǒng)中,執(zhí)行若干程序, 以便將圖元渲染或繪制到系統(tǒng)的屏幕。圖元是圖形的基本組成部分,例如是點、線、多 邊形等。所渲染的圖像由這些圖元的組合形成??衫迷S多程序來執(zhí)行三維(3-D)圖 形渲染。
已經(jīng)研發(fā)出專用的圖形處理單元(GPU),以提高圖形渲染程序的執(zhí)行速度。GPU 通常并入有一個或一個以上渲染管線。每一渲染管線包含若千經(jīng)設(shè)計以用于高速執(zhí)行圖 形指令/數(shù)據(jù)的基于硬件的功能單元。 一般來說,將指令/數(shù)據(jù)饋送到管線前端,且計算 出的結(jié)果出現(xiàn)在管線后端。GPU的基于硬件的功能單元、高速緩沖存儲器、固件等經(jīng) 設(shè)計以對基本圖元進行操作,并產(chǎn)生實時渲染的3-D圖像。
人們越來越關(guān)注于在例如手機、個人數(shù)字助理(PDA)和其它裝置等便攜或手持裝 置中渲染3-D圖形圖像。然而,便攜或手持裝置通常相對于例如臺式計算機等更大的裝 置來說具有限制。舉例來說,因為便攜裝置通常用電池供電,所以功率消耗成了人們關(guān)注的一個問題。此外,由于其尺寸較小,所以便攜裝置內(nèi)部的可用空間有限。需要在手 持裝置中在此類裝置的限制內(nèi)快速地執(zhí)行真實的3-D圖形渲染。
發(fā)明內(nèi)容
本發(fā)明的實施例提供用于在圖形處理器單元管線中快速且高效地處理數(shù)據(jù)的方法 和系統(tǒng)。
用于一像素群組的像素數(shù)據(jù)沿著圖形管線共同前進到算術(shù)邏輯單元(ALU)。在 ALU中,以SIMD (單個指令、多個數(shù)據(jù))的方式向一群組中的所有像素應(yīng)用同一指令。 舉例來說,在給定的時鐘循環(huán)中,指令將指定從用于所述像素群組中的第一像素的像素 數(shù)據(jù)中選出的一組操作數(shù)。在下一時鐘循環(huán)中,指令將指定從用于所述群組中的第二像 素的像素數(shù)據(jù)中選出的另一組操作數(shù),依此類推。根據(jù)本發(fā)明的實施例, 一條件執(zhí)行位 與每一組操作數(shù)相關(guān)聯(lián)。所述條件執(zhí)行位的值確定ALU如何(是否)處理相應(yīng)組的操 作數(shù)。
一般來說,如果一條件執(zhí)行位被設(shè)置成不執(zhí)行,那么ALU不對與所述條件執(zhí)行位 相關(guān)聯(lián)的像素數(shù)據(jù)進行操作。更具體來說,在一個實施例中,如果條件執(zhí)行位被設(shè)置成 不執(zhí)行,則ALU不鎖存像素數(shù)據(jù);此可通過將到ALU的輸入觸發(fā)器選通以使得所述觸 發(fā)器不在像素數(shù)據(jù)中計時來實現(xiàn)。因此,ALU不改變狀態(tài)_—ALU中的鎖存器(觸發(fā) 器)保持處于其在前一時鐘循環(huán)中所處的狀態(tài)。通過不為觸發(fā)器計時節(jié)省了功率,而且 還因為對組合邏輯的輸入保持不變且因此沒有任何晶體管改變狀態(tài)而節(jié)省了功率(觸發(fā) 器之所以不從一個狀態(tài)過渡成另一個狀態(tài),是因為如果條件位被設(shè)置成不執(zhí)行,那么操 作數(shù)從一個時鐘循環(huán)到下一時鐘循環(huán)保持不變)。
總的來說,在一像素群組上應(yīng)用指令,但可能不必對所述群組中的每一像素均執(zhí)行 所述指令。為了在管線中維持適當(dāng)?shù)拇涡?,向群組中的每一像素應(yīng)用所述指令一一針對 群組中的每一像素選擇一組操作數(shù)。然而,如果與一組操作數(shù)相關(guān)聯(lián)的條件執(zhí)行位被設(shè) 置成不執(zhí)行,那么ALU不對那些操作數(shù)進行操作一一不對操作數(shù)執(zhí)行相關(guān)聯(lián)的指令, 而是改為復(fù)制下游操作數(shù)。因此,不必對觸發(fā)器計時,且不必切換組合邏輯,因而節(jié)省 了功率。由此,本發(fā)明的實施例非常適合于手持和其它便攜的用電池操作的裝置中的圖 形處理(但本發(fā)明不限于在那些類型的裝置上使用)。
所屬領(lǐng)域的技術(shù)人員在閱讀了以下對各種圖式中所說明的實施例的詳細描述后,將 認識到本發(fā)明的各種實施例的這些和其它目的和優(yōu)點。
5在附圖各圖中是以舉例的方式而不是以限制的方式來說明本發(fā)明,且其中相同參考 數(shù)字指代類似元件。
圖1是展示根據(jù)本發(fā)明一個實施例的計算機系統(tǒng)的組件的方框圖。
圖2是展示根據(jù)本發(fā)明一個實施例的圖形處理單元(GPU)的組件的方框圖。
圖3說明根據(jù)本發(fā)明一個實施例的GPU管線中的級。
圖4說明根據(jù)本發(fā)明一實施例的一連串行的像素數(shù)據(jù)。
圖5是根據(jù)本發(fā)明一個實施例的GPU中的算術(shù)邏輯級的方框圖。
圖6說明退出根據(jù)本發(fā)明一實施例的算術(shù)邏輯單元的像素數(shù)據(jù)。
圖7A說明根據(jù)本發(fā)明一個實施例的ALU的各個級中的像素數(shù)據(jù)。
圖7B說明根據(jù)本發(fā)明一實施例的ALU的各個級。
圖8是根據(jù)本發(fā)明一個實施例的用于處理像素數(shù)據(jù)的由計算機實施的方法的流程圖。
具體實施例方式
現(xiàn)在將詳細參看本發(fā)明的實施例,在附圖中說明所述實施例的實例。雖然將結(jié)合這 些實施例描述本發(fā)明,但將了解,這些實施例并不意欲將本發(fā)明限于這些實施例。相反, 本發(fā)明意欲涵蓋所附權(quán)利要求書所界定的本發(fā)明的精神和范圍內(nèi)可包含的替代方案、修 改和等效物。此外,在對本發(fā)明實施例的以下詳細描述中,為了提供對本發(fā)明的全面理 解而闡述了許多具體細節(jié)。然而,所屬領(lǐng)域的技術(shù)人員將認識到,可在沒有這些具體細 節(jié)的情況下實踐本發(fā)明。在其它例子中,并未詳細描述眾所周知的方法、程序、組件和 電路,以免不必要地模糊本發(fā)明實施例的各方面。
在程序、步驟、邏輯區(qū)塊、處理和對計算機存儲器內(nèi)的數(shù)據(jù)位的操作的其它符號表 示方面呈現(xiàn)以下詳細描述的一些部分。這些描述和表示是數(shù)據(jù)處理領(lǐng)域的技術(shù)人員用以 最有效地向所屬領(lǐng)域的其他技術(shù)人員傳達其工作的主旨的手段。此處,程序、由計算機 執(zhí)行的步驟、邏輯區(qū)塊、過程等大體上被設(shè)想成產(chǎn)生所要結(jié)果的自相一致的步驟或指令 序列。所述步驟是要求對物理量進行物理操縱的步驟。通常(但不必要),這些量采用 能夠在計算機系統(tǒng)中存儲、傳送、組合、比較和以其它方式操縱的電信號或磁信號的形 式。事實證明,將這些信號稱為位、值、元素、符號、字符、項、數(shù)字等有時候較方便, 主要原因是通用。
然而,應(yīng)牢記,所有這些和類似的術(shù)語將與適當(dāng)?shù)奈锢砹肯嚓P(guān)聯(lián),而且只是應(yīng)用于 這些量的便利標記。如從以下論述將明白,除非另外明確聲明,否則應(yīng)了解,在本發(fā)明各處,利用例如"確定"或"使用"或"設(shè)置"或"鎖存"或"計時"或"識別"或"選 擇"或"處理"或"控制"等術(shù)語的論述是指代計算機系統(tǒng)(例如圖1的計算機系統(tǒng) 100)或類似的電子計算裝置的動作和過程,所述動作和過程對表示為計算機系統(tǒng)的寄 存器和存儲器內(nèi)的物理(電子)量的數(shù)據(jù)進行操縱并將其轉(zhuǎn)換成以類似方式表示為計算 機系統(tǒng)存儲器或寄存器或其它此類信息存儲、傳輸或顯示裝置內(nèi)的物理量的其它數(shù)據(jù)。 圖1展示根據(jù)本發(fā)明一個實施例的計算機系統(tǒng)100。所述計算機系統(tǒng)包含根據(jù)本發(fā)
明實施例的為特定的基于硬件和基于軟件的功能性提供執(zhí)行平臺的基本計算機系統(tǒng)的
組件。 一般來說,所述計算機系統(tǒng)包括至少一個中央處理單元(CPU) 101、系統(tǒng)存儲 器115和至少一個圖形處理器單元(GPU) 110。 GPU可經(jīng)由橋接組件/存儲器控制器(未 圖示)耦合到系統(tǒng)存儲器,或者可經(jīng)由CPU內(nèi)部的存儲器控制器(未圖示)直接耦合 到系統(tǒng)存儲器。GPU耦合到顯示器112。 一個或一個以上額外GPU可視情況而耦合到 系統(tǒng)100,以便進一步提高其計算能力。GPU耦合到CPU和系統(tǒng)存儲器。計算機系統(tǒng) 可實施成(例如)臺式計算機系統(tǒng)或服務(wù)器計算機系統(tǒng),其具有耦合到專用圖形渲染 GPU的強大的通用CPU。在此實施例中,可包含添加外圍總線、專用圖形存儲器、輸 入/輸出(I/O)裝置等的組件。類似地,計算機系統(tǒng)可實施成手持裝置(例如手機等) 或機頂視頻游戲控制臺裝置。
GPU可實施成離散組件、經(jīng)設(shè)計以經(jīng)由連接器(例如,圖形加速端口插槽、外圍 組件互連Express插槽等)耦合到計算機系統(tǒng)的離散圖形卡、離散集成電路電路小片(例 如,直接安裝在母板上)或包含在計算機系統(tǒng)芯片組組件(未圖示)的集成電路電路小 片內(nèi)或PSOC (可編程芯片上系統(tǒng))的集成電路電路小片內(nèi)的集成的GPU。此外,可針 對GPU包含本機圖形存儲器114以用于高帶寬圖形數(shù)據(jù)存儲。
圖2展示說明根據(jù)本發(fā)明一個實施例的GPU 110和圖形存儲器114的內(nèi)部組件的 圖。如圖2中所描繪,GPU包含圖形管線210和耦合到如圖所示的圖形存儲器的碎片 數(shù)據(jù)高速緩沖存儲器250。
在圖2的實例中,圖形管線210包含若干功能模塊。圖形管線的三個此類功能模塊 (例如,程序定序器220、算術(shù)邏輯級(ALU) 230和數(shù)據(jù)寫入組件240)通過渲染從圖 形應(yīng)用程序(例如,從圖形驅(qū)動程序等)接收的圖元而運作。功能模塊220 — 240經(jīng)由 碎片數(shù)據(jù)高速緩沖存儲器250存取信息,以用于渲染與圖元有關(guān)的像素。碎片數(shù)據(jù)高速 緩沖存儲器充當(dāng)用于存儲在圖形存儲器(例如,幀緩沖存儲器)中的信息的高速高速緩 沖存儲器。
程序定序器通過控制圖形管線的功能模塊的操作而運作。程序定序器可與圖形驅(qū)動程序(例如在圖1的CPU 101上執(zhí)行的圖形驅(qū)動程序)交互,以便控制圖形管線的功 能模塊接收信息、針對操作而自行配置和處理圖元的方式。舉例來說,在圖2的實施例
中,圖形管線通過來自上游功能模塊(例如,來自上游光柵器模塊、來自設(shè)置模塊或來
自圖形驅(qū)動程序)的共同輸入260來接收圖形渲染數(shù)據(jù)(例如圖元、三角形條帶等)、 管線配置信息(例如模式設(shè)置、渲染輪廓等)和渲染程序(例如像素著色器程序、頂點 著色器程序等)。輸入260充當(dāng)圖形管線的功能模塊之間的主要的碎片數(shù)據(jù)路徑或管線。 一般在管線前端接收圖元,并在圖元沿著管線從一個模塊前進到下一模塊時將圖元逐漸 渲染成所得的所渲染的像素數(shù)據(jù)。
在一個實施例中,數(shù)據(jù)以基于包的格式在功能模塊220 — 240之間前進。舉例來說, 圖形驅(qū)動程序以數(shù)據(jù)包或像素包的形式將數(shù)據(jù)傳輸?shù)紾PU,所述數(shù)據(jù)包或像素包專門 經(jīng)配置以與管線的碎片管道通信路徑交互并沿著所述路徑傳輸。像素包通常包含關(guān)于像 素群組或瓦片(例如,四個像素、八個像素、16個像素等)的信息和用于與所述像素 有關(guān)的一個或一個以上圖元的覆蓋信息。像素包也可包含邊帶信息,所述邊帶信息使得 管線的功能模塊能夠針對渲染操作自行配置。舉例來說,像素包可包含配置位、指令、 功能模塊地址等,其可由管線的一個或一個以上功能模塊用來針對當(dāng)前的渲染模式等配 置自身。除了像素渲染信息和功能模塊配置信息之外,像素包還可包含對管線的功能模 塊進行編程以對像素執(zhí)行著色器處理的著色器程序指令。舉例來說,可沿著圖形管線傳 輸包括著色器程序的指令,并由一個或一個以上規(guī)定的功能模塊來加載所述指令。 一旦 在渲染操作期間加載了所述指令,功能模塊便可對像素數(shù)據(jù)執(zhí)行著色器程序,以便實現(xiàn) 所要的渲染效果。
以此方式,圖形管線的功能模塊所實施的高度優(yōu)化和高效的碎片管道通信路徑不但 可用來在功能模塊(例如,模塊220 — 240)之間傳輸像素數(shù)據(jù),而且還可用來在功能 模塊之間傳輸配置信息和著色器程序指令。
圖3是展示根據(jù)本發(fā)明一個實施例的圖形管線210中的選定級的方框圖。圖形管線 可包含額外級,或者其可布置成與圖3的實例不同。換句話說,雖然在圖3的管線的背 景下論述本發(fā)明,但本發(fā)明不限于此。
在圖3的實例中,光柵器310使用內(nèi)插將三角形翻譯成像素。在其各種功能中,光 柵器接收頂點數(shù)據(jù)、確定哪些像素對應(yīng)于哪個三角形,并確定需要對像素執(zhí)行的著色器 處理操作(例如色彩、紋理和霧化操作)以作為渲染的一部分。
光柵器產(chǎn)生用于待處理的三角形的每一像素的像素包。 一般來說,像素包是用來計
算圖形顯示器的幀中的像素的像素值的例子的一組描述。像素包與每一幀中的每一像素相關(guān)聯(lián)。每一像素與以屏幕坐標表示的特定(x,y)位置相關(guān)聯(lián)。在一個實施例中,圖
形系統(tǒng)渲染顯示器屏幕的兩個像素乘兩個像素區(qū)域,其稱為四邊形。
每一像素包包含處理所需的像素屬性的有效負載(例如,色彩、紋理、深度、霧化、
x和y位置等)和邊帶信息(數(shù)據(jù)獲取級330提供的像素屬性數(shù)據(jù))。像素包可含有一 行數(shù)據(jù),或者其可含有多行數(shù)據(jù)。行總的來說是管線總線的數(shù)據(jù)部分的寬度。
數(shù)據(jù)獲取級獲取用于像素包的數(shù)據(jù)。此數(shù)據(jù)可包含用于每一像素包的色彩信息、任 何深度信息和任何紋理信息。在將像素包繼續(xù)發(fā)送到下一級之前,將所獲取的數(shù)據(jù)放置 到一行像素數(shù)據(jù)中的適當(dāng)域中,其在本文中可稱為寄存器。
成行的像素數(shù)據(jù)從數(shù)據(jù)獲取級進入算術(shù)邏輯級230。在本實施例中,在每一時鐘循 環(huán)中, 一行像素數(shù)據(jù)進入算術(shù)邏輯級。在一個實施例中,算術(shù)邏輯級包含四個ALUO、 1、 2和3 (圖5),其經(jīng)配置以執(zhí)行與三維圖形操作有關(guān)的著色器程序,例如(但不限 于)紋理組合(紋理環(huán)境)、模板、霧化、阿爾法混合、阿爾法測試和深度測試。每一 ALU每個時鐘循環(huán)中執(zhí)行一指令,每一指令用于對對應(yīng)于像素包的內(nèi)容的操作數(shù)執(zhí)行 算術(shù)運算。在一個實施例中,要花費四個時鐘循環(huán)在ALU中對一行數(shù)據(jù)進行操作,每 一 ALU具有四個循環(huán)的深度。
算術(shù)邏輯級的輸出去往數(shù)據(jù)寫入級。數(shù)據(jù)寫入級將管線結(jié)果存儲在存儲器(例如, 圖1和圖2的圖形存儲器114或存儲器115)中的寫入緩沖器或幀緩沖器中。視情況, 如果需要對數(shù)據(jù)進行進一步的處理,則可將像素包/數(shù)據(jù)從數(shù)據(jù)寫入級重新循環(huán)回到算 術(shù)邏輯級中。
圖4說明根據(jù)本發(fā)明一實施例用于一像素群組的一連串像素數(shù)據(jù)一一即一系列成 行的像素數(shù)據(jù)。在圖4的實例中,所述像素群組包括四個像素的四邊形PO、 Pl、 P2 和P3。如上文所提及,可將用于一像素的像素數(shù)據(jù)被分成數(shù)據(jù)子組或數(shù)據(jù)行。在一個 實施例中,可能每個像素有多達四行的數(shù)據(jù)。舉例來說,行O包含四個像素數(shù)據(jù)的域或 寄存器POrO、 POrl、 P0r2和P0r3 ("r"指示行中的域或寄存器,且"R"指示行)。每 一行可代表像素數(shù)據(jù)的一個或一個以上屬性。這些屬性包含但不限于z深度值、紋理坐 標、細節(jié)水平、色彩和阿爾法。寄存器值可在算術(shù)邏輯級中的ALU執(zhí)行的操作中用作 操作數(shù)。
邊帶信息420與每一行像素數(shù)據(jù)相關(guān)聯(lián)。邊帶信息尤其包含識別或指向?qū)⒁葾LU 使用指令所識別的像素數(shù)據(jù)執(zhí)行的指令的信息。換句話說,與行O相關(guān)聯(lián)的邊帶信息尤 其識別指令I(lǐng)O。指令可指定(例如)將要執(zhí)行的算術(shù)運算的類型和哪些寄存器含有將要 用作運算中的操作數(shù)的數(shù)據(jù)。在一個實施例中,邊帶信息針對每行像素數(shù)據(jù)包含條件執(zhí)行位。條件執(zhí)行位的值對 于每行像素數(shù)據(jù)可能不同,即使所述行與相同的像素相關(guān)聯(lián)也是如此??稍O(shè)置與一行像 素數(shù)據(jù)相關(guān)聯(lián)的條件執(zhí)行位,以防對相關(guān)聯(lián)的像素的操作數(shù)執(zhí)行指令。舉例來說,如果 將與PORO相關(guān)聯(lián)的條件執(zhí)行位設(shè)置成不執(zhí)行,那么對于像素PO將不執(zhí)行指令I(lǐng)O (但 仍可對于群組中的其它像素執(zhí)行)。下文中將結(jié)合圖7A進一步描述條件執(zhí)行位的功能。 在一個實施例中,條件執(zhí)行位在長度上是單個位。
圖5是根據(jù)本發(fā)明一個實施例的算術(shù)邏輯級230的方框圖。圖5中只展示了特定的 元件;算術(shù)邏輯級可包含除了圖5所展示且在下文中描述的元件之外的元件。
隨著每一新的時鐘循環(huán),一行像素數(shù)據(jù)連續(xù)地從數(shù)據(jù)獲取級前進到管線的算術(shù)邏輯 級。舉例來說,行O在第一時鐘上沿著管線前進,接著在下一時鐘上是行1,依此類推。 一旦將與特定像素群組(例如,四邊形)相關(guān)聯(lián)的所有行均加載到管線中,便可開始將 與下一四邊形相關(guān)聯(lián)的行加載到管線中。
在一個實施例中,將用于一像素群組(例如,四邊形)中的每一像素的成行的像素 數(shù)據(jù)與用于群組中的其它像素的成行的像素數(shù)據(jù)交錯。舉例來說,對于四個像素的群組、 每個像素四行來說,像素數(shù)據(jù)采用以下次序沿著管線前進用于第一像素的第一行(POrO 到POr3)、用于第二像素的第一行(PlrO到Plr3)、用于第三像素的第一行(P2rO到P2r3)、 用于第四像素的第一行(P3rO到P3r3)、用于第一像素的第二行(P0r4到P0r7)、用于 第二像素的第二行(Plr4到Plr7)、用于第三像素的第二行(P2r4到P2r7)、用于第四 像素的第二行(P3r4到P3r7),依次類推直到第十五行,其包含P3rl2到P3rl5。如上 文所提及,可能對于每個像素有不到四個行。通過以此方式交錯成行的像素包,可避免 管線中發(fā)生停滯,且可提高數(shù)據(jù)處理量。
因此,在本實施例中,每一時鐘循環(huán)中將包含邊帶信息420的一行像素數(shù)據(jù)(例如, 行0)傳遞到解串行化器510。在圖5的實例中,解串行化器對成行的像素數(shù)據(jù)進行解 串行化。如上所述,可將用于一像素群組(例如,四邊形)的像素數(shù)據(jù)逐行地交錯。此 外,像素數(shù)據(jù)逐行地到達算術(shù)邏輯級。因此,不是逐位地執(zhí)行本文中所稱的解串行化; 而是逐行地執(zhí)行解串行化。如果圖形管線有四個寄存器寬,且每個像素有四個行,那么 解串行化器將像素數(shù)據(jù)解串行化成每個像素16個寄存器。
在圖5的實例中,解串行化器將用于一像素群組的像素數(shù)據(jù)發(fā)送到緩沖器O、 l或
2中的一者。將像素數(shù)據(jù)發(fā)送到緩沖器中的一者,同時由ALU對其它緩沖器中的一者
中的像素數(shù)據(jù)進行操作,同時其余緩沖器中的已由ALU對其操作的像素數(shù)據(jù)由串行化
器550串行化,并逐行地饋送到圖形管線的下一級。 一旦緩沖器排空,其便準備使用用
10于下一像素群組的像素數(shù)據(jù)來填充(覆寫); 一旦緩沖器己被加載,則其含有的像素數(shù) 據(jù)便準備被操作;且一旦緩沖器中的像素數(shù)據(jù)己經(jīng)被操作,其便準備被排空(覆寫)。
包含用于一像素群組(例如,四邊形O)的邊帶信息的像素數(shù)據(jù)到達算術(shù)邏輯級, 接下來是包含用于下一像素群組(例如,四邊形l)的邊帶信息的像素數(shù)據(jù),接下來是 包含用于下一像素群組(例如,四邊形2)的邊帶信息的像素數(shù)據(jù)。
一旦已將與特定像素相關(guān)聯(lián)的所有行像素數(shù)據(jù)解串行化,便可由ALU對用于所述 像素的像素數(shù)據(jù)進行操作。在一個實施例中,將相同指令應(yīng)用于群組(例如,四邊形) 中的所有像素。ALU實際上是以SIMD (相同指令、多個數(shù)據(jù))的方式在一像素群組上 操作的管線化處理器。
圖6展示在任意選定的時鐘循環(huán)0—15中退出ALU的像素結(jié)果。在時鐘循環(huán)0 — 3 中,與使用用于像素PO —P3的像素數(shù)據(jù)執(zhí)行第一指令I(lǐng)O相關(guān)聯(lián)的像素結(jié)果退出ALU。 類似地,與使用用于像素P0 — P3的像素數(shù)據(jù)執(zhí)行第二指令I(lǐng)I相關(guān)聯(lián)的像素結(jié)果退出 ALU,依此類推。再次參看圖4,指令I(lǐng)O與用于像素P0 —P3的像素數(shù)據(jù)的行O像素數(shù) 據(jù)相關(guān)聯(lián),指令I(lǐng)l與用于像素P0 — P3的行1像素數(shù)據(jù)相關(guān)聯(lián),依此類推。因為在像素 P0 —P3上應(yīng)用相同的指令,所以ALU以SIMD的方式操作。
圖7A展示流經(jīng)根據(jù)本發(fā)明一個實施例的ALU的級的像素數(shù)據(jù)。在本實施例中, 要花費四個時鐘循環(huán)對像素數(shù)據(jù)的操作數(shù)進行操作一一更具體來說,執(zhí)行指令。實質(zhì)上, 每一 ALU有四個管道級深。也參看圖7B,在第一時鐘循環(huán)期間,將用于第一像素的像 素數(shù)據(jù)讀取到ALU (ALU的級1)中。在第二和第三時鐘循環(huán)期間,對像素數(shù)據(jù)執(zhí)行 計算(例如,在第二時鐘循環(huán)中),可在乘法器中將操作數(shù)相乘,且在第三時鐘循環(huán)中, 可在加法器(ALU的級2和3)屮將乘法器結(jié)果相加。在第四時鐘循環(huán)(ALU的級4) 期間,將像素數(shù)據(jù)寫回到緩沖器或全局寄存器。此外,在第二時鐘循環(huán)期間,將用于第 二像素的像素數(shù)據(jù)讀取到ALU中一一所述數(shù)據(jù)跟在用于第一像素的像素數(shù)據(jù)行之后穿 過ALU的其余級。此外,在第三時鐘循環(huán)期間,將用于第三像素的像素數(shù)據(jù)讀取到ALU 中一一所述數(shù)據(jù)跟在用于第二像素的像素數(shù)據(jù)之后穿過ALU的其余級。 一旦ALU "準 備完畢",便如剛剛所描述的,用于一個像素的像素數(shù)據(jù)跟在用于另一像素的像素數(shù)據(jù) 之后穿過ALU。
如上所述,在一個實施例中,將源自每行的邊帶信息的相同指令應(yīng)用于一群組(例 如,四邊形)中的所有像素。舉例來說,在給定的時鐘循環(huán)處,指令將指定從用于像素 群組中的第一像素的像素數(shù)據(jù)中選出的一組操作數(shù)。在下一時鐘循環(huán)中,所述指令將指 定從用于群組中的第二像素的像素數(shù)據(jù)中選出的另一組操作數(shù),依此類推。根據(jù)本發(fā)明的實施例,源自每行的邊帶信息的條件執(zhí)行位與每組操作數(shù)相關(guān)聯(lián)。 一般來說,如果將 條件執(zhí)行位設(shè)置成不執(zhí)行,那么ALU不對與所述條件執(zhí)行位相關(guān)聯(lián)的操作數(shù)進行操作。 圖7A展示根據(jù)本發(fā)明一個實施例的ALU的每一級中的操作數(shù)組。舉例來說,也 參看圖7B,在時鐘循環(huán)N-1處,ALU的級1中的操作數(shù)組包含如指令I(lǐng)2所指定的用于 像素P1的像素數(shù)據(jù)(在圖中指示為P1.I2);級2正在對卻是根據(jù)指令I(lǐng)2指定的從用于 像素0的像素數(shù)據(jù)中選出的操作數(shù)組(P0.I2)進行操作;依此類推。在下一連續(xù)時鐘 循環(huán)N中,每一組操作數(shù)移動到下一 ALU級;將要加載到ALU中的下一組操作數(shù)是 P2.I2。
在圖7A的實例中,將與操作數(shù)P2.I2相關(guān)聯(lián)的條件執(zhí)行位設(shè)置成"不執(zhí)行"。可通 過著色器程序在圖形管線頂部(前端)設(shè)置條件執(zhí)行位。或者,可將條件執(zhí)行位設(shè)置(或 重設(shè))成先前執(zhí)行的指令的結(jié)果。
因此,ALU不對操作數(shù)P2.I2進行操作。更具體來說,在一個實施例中,如果將條 件執(zhí)行位設(shè)置成不執(zhí)行,則ALU不鎖存操作數(shù)P2.12。因此,己經(jīng)對這些操作數(shù)進行操 作的ALU的管道級不改變狀態(tài)。因此,在時鐘循環(huán)N處,ALU的級1和級2均含有相 同數(shù)據(jù)(P1.I2),因為觸發(fā)器未被鎖存且因此保持處于其在前一時鐘循環(huán)N-1中所處的 狀態(tài)。因此,ALU的下游管道級中的組合邏輯并不轉(zhuǎn)變,且不會不必要地消耗功率。
在時鐘循環(huán)N+1中,不切換ALU的級2中的組合邏輯,因為操作數(shù)與前一時鐘 循環(huán)中的相同。類似地,在時鐘循環(huán)N + 2中,不切換ALU的級3中的組合邏輯。在 時鐘循環(huán)N+3中,與級4相關(guān)聯(lián)的觸發(fā)器不改變狀態(tài),因為操作數(shù)組與前一時鐘循環(huán) 相同。
即使條件執(zhí)行位被設(shè)置成不針對操作數(shù)P2.I2執(zhí)行, 一組"無用的"操作數(shù)也有效 地傳播穿過其位置中的ALU。以此方式,維持穿過圖形管線的數(shù)據(jù)的次序,且也維持 ALU上的時序。
一般來說,當(dāng)將條件執(zhí)行位設(shè)置成不執(zhí)行時,ALU不對與條件執(zhí)行位相關(guān)聯(lián)的像
素數(shù)據(jù)執(zhí)行任何工作。實際上,條件執(zhí)行位充當(dāng)啟用位一一如果將所述位設(shè)置成不執(zhí)行,
那么數(shù)據(jù)觸發(fā)器不被啟用且將不俘獲新輸入的操作數(shù)。而是,觸發(fā)器的輸出保持其當(dāng)前
狀態(tài)(當(dāng)在前一時鐘循環(huán)中俘獲到數(shù)據(jù)時引入的狀態(tài))。在一個實施例中,這通過選通
觸發(fā)器的時鐘來實現(xiàn)。如果將條件執(zhí)行位設(shè)置成不執(zhí)行,那么不對俘獲到輸入操作數(shù)的
觸發(fā)器進行計時__時鐘信號不轉(zhuǎn)變,且因此觸發(fā)器未俘獲到新數(shù)據(jù)。在一個實施例中,
如果將條件執(zhí)行位設(shè)置成不執(zhí)行,則只有ALU的第一級中的觸發(fā)器(圖7B的鎖存器
710)不被計時;然而,本發(fā)明不限于此。也就是說,可在ALU的一個或一個以上級處選通時鐘?;蛘撸皇沁x通時鐘,而是可在條件執(zhí)行位的控制下選通對觸發(fā)器的數(shù)據(jù)輸 入。
通過在不必要時不對ALU中的觸發(fā)器進行計時來節(jié)省功率。也在ALU的組合邏輯 中節(jié)省了功率,因為在邏輯中未發(fā)生任何切換行為,因為操作數(shù)在時鐘之間是相同的。
圖8是根據(jù)本發(fā)明一個實施例的用于在圖形處理器單元管線中處理像素數(shù)據(jù)的由 計算機實施的方法的實例的流程圖800。雖然在流程圖中揭示了具體步驟,但這些步驟 是示范性的。也就是說,本發(fā)明的實施例非常適合于執(zhí)行流程圖中提到的各種其它步驟 或步驟的變化形式??刹捎门c所展示的次序不同的次序來執(zhí)行流程圖中的步驟。
在方框810中,根據(jù)指令來執(zhí)行算術(shù)運算。將相同的指令應(yīng)用于不同組的像素數(shù)據(jù) 操作數(shù)。每一組操作數(shù)與一像素群組(例如四邊形的)中的相應(yīng)像素相關(guān)聯(lián)。條件執(zhí)行 位也與每一組操作數(shù)相關(guān)聯(lián)。
在方框820中,與一組操作數(shù)相關(guān)聯(lián)的條件執(zhí)行位的值用來確定是否將要將那些操 作數(shù)加載到ALU中。更具體來說,如果將條件執(zhí)行位設(shè)置成第一值(例如0或1),則 將操作數(shù)加載到ALU中并由ALU操作,但如果將條件執(zhí)行位設(shè)置成第二值(例如,分 別是1或0),則不將操作數(shù)加載到ALU中或由ALU操作。
總之,在一像素群組上應(yīng)用指令,但可能沒必要對用于群組中的每一像素的像素數(shù) 據(jù)執(zhí)行指令。為了在管線中維持適當(dāng)?shù)拇涡?,將指令?yīng)用于群組中的每一像素一一從用 于群組中的每一像素的像素數(shù)據(jù)中選出一組操作數(shù)。然而,如果將與用于像素的一組操 作數(shù)相關(guān)聯(lián)的條件執(zhí)行位設(shè)置成不執(zhí)行,那么ALU不對用于所述像素的那些操作數(shù)進 行操作。因此,不會不必要地對ALU觸發(fā)器進行計時和切換,因而節(jié)省了功率。由此, 本發(fā)明的實施例非常適合于手持和其它便攜、用電池操作的裝置以及其它類型的裝置中 的圖形處理。
已經(jīng)出于說明和描述的目的而呈現(xiàn)了以上對本發(fā)明的具體實施例的描述。其并不期 望是詳盡的或者將本發(fā)明限制于所揭示的精確形式,且鑒于以上教示,許多修改和變化 形式都是可能的。舉例來說,本發(fā)明的實施例可在形式上或功能上不同于圖2的GPU 110 的GPU上實施。之所以選擇和描述了所述實施例,是為了最好地解釋本發(fā)明的原理及 其實踐應(yīng)用,因而使得所屬領(lǐng)域的技術(shù)人員能夠以適合于所預(yù)期的特定用途的各種修改 來最好地利用本發(fā)明和各種實施例。希望本發(fā)明的范圍由所附權(quán)利要求書及其等效物來 界定。
權(quán)利要求
1. 一種圖形處理器單元(GPU)管線,其包括多個算術(shù)邏輯單元(ALU),其可操作以用于根據(jù)指令執(zhí)行算術(shù)運算,其中將所述指令應(yīng)用于多組包括像素數(shù)據(jù)的操作數(shù),所述多組操作數(shù)中的每一組操作數(shù)與多個像素中的相應(yīng)像素和相應(yīng)的條件執(zhí)行位相關(guān)聯(lián),且其中與所述多組操作數(shù)中的第一組操作數(shù)相關(guān)聯(lián)的條件執(zhí)行位的值確定所述ALU如何處理所述第一組操作數(shù)中的所述像素數(shù)據(jù)。
2. 根據(jù)權(quán)利要求1所述的GPU管線,其中所述多個像素包括一像素,所述像素包括 用于所述像素的多個像素數(shù)據(jù)子組,其中與用于所述像素的一個像素數(shù)據(jù)子組相 關(guān)聯(lián)的第一條件執(zhí)行位和與用于所述像素的另一像素數(shù)據(jù)子組相關(guān)聯(lián)的第二條件 執(zhí)行位具有不同的值。
3. —種在圖形處理器單元中的圖形管線,所述管線包括數(shù)據(jù)獲取級;以及多個算術(shù)邏輯單元(ALU),其耦合到所述數(shù)據(jù)獲取級,其中在連續(xù)的時鐘循環(huán) 中,第一指令識別用于所述ALU的第一操作數(shù)和用于所述ALU的第二操作數(shù), 其中所述第一操作數(shù)與第一像素和第一條件執(zhí)行位相關(guān)聯(lián),且所述第二操作數(shù)與 第二像素和第二條件執(zhí)行位相關(guān)聯(lián),其中所述第一條件執(zhí)行位的值確定所述ALU 是否對所述第一操作數(shù)進行操作,且其中所述第二條件執(zhí)行位的值確定所述ALU 是否對所述第二操作數(shù)進行操作。
4. 根據(jù)權(quán)利要求3所述的圖形管線,其中所述第一像素包括用于所述第一像素的多 個像素數(shù)據(jù)子組,其中與用于所述第一像素的一個像素數(shù)據(jù)子組相關(guān)聯(lián)的條件執(zhí) 行位和與用于所述第一像素的另一像素數(shù)據(jù)子組相關(guān)聯(lián)的條件執(zhí)行位具有不同的 值。
5. 根據(jù)權(quán)利要求3所述的圖形管線,其中所述ALU包括多個觸發(fā)器,其中所述第一 條件執(zhí)行位的所述值確定所述第一操作數(shù)是否由所述ALU鎖存,且其中所述第二 條件執(zhí)行位的所述值確定所述第二操作數(shù)是否由所述ALU鎖存。
6. 根據(jù)權(quán)利要求5所述的圖形管線,其中所述觸發(fā)器包括選通的時鐘,其中所述選 通的時鐘又由所述第一和第二條件執(zhí)行位控制。
7. 根據(jù)權(quán)利要求3所述的圖形管線,其中所述第一條件執(zhí)行位的所述值是根據(jù)按照 在時間上在所述第一指令之前的第二指令所執(zhí)行的操作的結(jié)果而設(shè)置的。
8. —種在圖形處理器單元中的算術(shù)邏輯單元(ALU)管道級,其包括存儲器,其用于存儲與多個像素相關(guān)聯(lián)的多個操作數(shù);管線化的ALU,其耦合到所述存儲器且包括用于對所述多個像素中的每一者的 操作數(shù)執(zhí)行指令的多個管道級,其中與所述多個像素相關(guān)聯(lián)的操作數(shù)以在每一時 鐘循環(huán)上一個像素的形式進入所述ALU,其中每一組操作數(shù)與多個像素中的相應(yīng) 像素相關(guān)聯(lián),且其中所述存儲器也用于存儲所述多個像素中的每一像素的相應(yīng)旗 標位;以及選通邏輯,其耦合到所述ALU且用于在所述第一像素設(shè)置有相關(guān)聯(lián)旗標位的情 況下防止與所述多個像素中的第一像素相關(guān)聯(lián)的操作數(shù)在第一時鐘循環(huán)上進入所 述ALU。
9. 根據(jù)權(quán)利要求8所述的ALU管道級,其中所述旗標位防止與所述第一像素相關(guān)聯(lián) 的所述操作數(shù)被所述ALU的所述多個管道級處理。
10. 根據(jù)權(quán)利要求9所述的ALU管道級,其中進一步地在所述旗標位被設(shè)置后,不是 與所述第一像素相關(guān)聯(lián)的所述操作數(shù)進入所述ALU的第一管道級,而是所述第一 管道級保持與恰好在所述第一時鐘循環(huán)之前的時鐘循環(huán)上進入所述第一管道級的 第二像素相關(guān)聯(lián)的操作數(shù)的值。
全文摘要
本發(fā)明涉及圖形處理器單元管線中的條件執(zhí)行位。一種在圖形處理器單元中的算術(shù)邏輯級包含若干算術(shù)邏輯單元(ALU)。將指令應(yīng)用于包括與不同像素相關(guān)聯(lián)的像素數(shù)據(jù)的多組操作數(shù)。條件執(zhí)行位的值確定所述ALU如何處理一組操作數(shù)中的所述像素數(shù)據(jù)。
文檔編號G06T15/00GK101441761SQ20081013519
公開日2009年5月27日 申請日期2008年8月15日 優(yōu)先權(quán)日2007年8月15日
發(fā)明者克雷格·M·奧克魯麗卡, 泰森·J·伯蘭格 申請人:輝達公司