两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

可中斷圖形處理單元處理多個(gè)程序的方法和圖形處理單元的制作方法

文檔序號(hào):6560680閱讀:208來源:國(guó)知局
專利名稱:可中斷圖形處理單元處理多個(gè)程序的方法和圖形處理單元的制作方法
技術(shù)領(lǐng)域
本發(fā)明有關(guān)于圖形處理,特別是有關(guān)于一種存儲(chǔ)和回存上下文(context)于圖形處理單元的方法和系統(tǒng)。
背景技術(shù)
目前所知的計(jì)算機(jī)系統(tǒng)一般包括多個(gè)處理器,例如計(jì)算機(jī)系統(tǒng)中除了中央處理器(Central Processing Unit,CPU)執(zhí)行處理程序之外,另外計(jì)算機(jī)系統(tǒng)還具有一圖形處理單元(Graphics Processing Unit,GPU)用以減少CPU的負(fù)擔(dān),使CPU減少處理程序的負(fù)荷。在一些應(yīng)用中,處理器(例如GPU)可設(shè)置在計(jì)算機(jī)系統(tǒng)主機(jī)板上并且在CPU旁。而在另一應(yīng)用中,GPU和/或其他相關(guān)裝置可設(shè)置在一分離但電連接的卡上,例如GPU在一顯示卡上,關(guān)于所述應(yīng)用,本領(lǐng)域的技術(shù)人員皆熟知此應(yīng)用。
輔助處理器(coprocessor),例如GPU,可存取例如顯示卡存儲(chǔ)器的額外存儲(chǔ)器,以執(zhí)行處理程序。再者,并且輔助處理器可以被設(shè)計(jì)以及最佳化來執(zhí)行特殊處理程序。對(duì)于GPU來說,GPU可以被最佳化以執(zhí)行三維圖形計(jì)算,所以GPU可以應(yīng)用于復(fù)雜的圖形計(jì)算上。然而傳統(tǒng)計(jì)算機(jī)系統(tǒng)和輔助處理器只能勝任執(zhí)行單一復(fù)雜圖形的應(yīng)用,當(dāng)執(zhí)行多個(gè)復(fù)雜圖形的應(yīng)用時(shí),傳統(tǒng)計(jì)算機(jī)系統(tǒng)和輔助處理器可能會(huì)遭遇到一些問題。
對(duì)于一般輔助處理器而言,排序本身工作流程并未使用最有效率的方法。在一些操作系統(tǒng)中,GPU可以多工,其方法是將待處理的工作依序送至GPU,GPU會(huì)依序執(zhí)行所接收到的工作。然而,這方法有一個(gè)問題就是無法妥善處理使用同一資源的多個(gè)應(yīng)用程序的優(yōu)先順序。在一非限定的例子中,當(dāng)?shù)谝粦?yīng)用程序正在使用GPU輔助處理器時(shí)必須交出控制權(quán)給另一應(yīng)用程序以完成他們的共同處理目標(biāo)。假如當(dāng)?shù)谝粦?yīng)用程序完成相關(guān)計(jì)算程序,但如果第一應(yīng)用程序不交出控制權(quán)給另一個(gè)等待的應(yīng)用程序,GPU會(huì)被第一應(yīng)用程序給占住,而等待的應(yīng)用程序則會(huì)遇到無法使用GPU的問題。如前所述,當(dāng)只有使用單一復(fù)雜圖形應(yīng)用程序時(shí),所述問題并不會(huì)太嚴(yán)重,然而,占住GPU或其他共同處理器資源的問題,在多個(gè)應(yīng)用程序同時(shí)都想使用GPU時(shí),這個(gè)問題就會(huì)被突顯出來。
關(guān)于分配處理不同應(yīng)用程序的構(gòu)想,可以經(jīng)由使用中斷CPU的方式,也就是上下文內(nèi)容從一任務(wù)跳到另一任務(wù)來完成。更具體來說,利用較新型的GPU以執(zhí)行上下文內(nèi)容的存儲(chǔ)/回存的構(gòu)想,系利用存儲(chǔ)相關(guān)寄存器和程序計(jì)數(shù)器數(shù)據(jù),以繼續(xù)執(zhí)行之前被中斷的處理程序。然而關(guān)于CPU如何分配處理程序的問題已經(jīng)被探討,但是關(guān)于輔助處理器如何分配處理程序之前并無完整探討。
關(guān)于所述分配處理程序的問題,至少有一理由認(rèn)為輔助微處理器(例如GPU)可使CPU避免執(zhí)行復(fù)雜計(jì)算和耗時(shí)的程序,使CPU可以執(zhí)行其他任務(wù)。圖形處理往往包括復(fù)雜的計(jì)算,因此會(huì)使用大量處理程序的資源,當(dāng)復(fù)雜圖形應(yīng)用程序增加時(shí),GPU會(huì)被設(shè)計(jì)成更大更復(fù)雜,以應(yīng)付復(fù)雜計(jì)算。
關(guān)于如何精確中斷CPU,具有并行處理功能單元以及排序執(zhí)行功能單元的巨大復(fù)雜結(jié)構(gòu)EPIC型(Explicitly Parallel Instruction Computing)CPU會(huì)有一些問題,因此CPU結(jié)構(gòu)中的寄存器必須被重新設(shè)計(jì),使得數(shù)十個(gè)指令可同時(shí)執(zhí)行于處理流水線(pipeline)的不同階段。為了使精確中斷成為可能,CPU必須具有一重新排序緩沖器和一額外執(zhí)行指令(instruction commit(retirement))于處理流水線中。
目前GPU是使用不同型指令(可稱為巨集指令),執(zhí)行各GPU指令需要數(shù)百到數(shù)千周期,目前利用GPU流水線來處理圖形的比重已經(jīng)超過CPU來處理圖形的比重,因此GPU往往會(huì)遇到因?yàn)椴痪哂凶銐蛱幚斫Y(jié)構(gòu)來處理大量數(shù)據(jù)于存儲(chǔ)和回存,所以目前大部分GPU朝著在任何時(shí)間點(diǎn)上皆可處理大量數(shù)據(jù)的方向在設(shè)計(jì),使得GPU在分配程序上變的復(fù)雜。更具體來說,GPU采用具有長(zhǎng)序列數(shù)據(jù)的外來指令,例如圖形圖元(draw primitive),因而產(chǎn)生關(guān)于如何完成之前被中斷事件的問題。
因此,需要一新而有效的方法來克服所述缺點(diǎn)。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種圖形處理器GPU可被中斷,因而可以在同一時(shí)間處理多個(gè)圖形程序,圖形處理器是一硬體設(shè)備可經(jīng)由中斷程序以提供多個(gè)程序之間的切換。
當(dāng)圖形處理單元接收到指令,中斷處理第一上下文和初始處理第二上下文,一指令處理器在圖形流水線中傳送一中斷信號(hào)從多個(gè)流水線處理區(qū)塊到通信途徑。一代符對(duì)應(yīng)于中斷上下文的尾部端,從指令處理器傳送至第一流水線處理區(qū)塊并依序傳送至其他圖形流水線。直到接收到中斷信號(hào),當(dāng)代符到達(dá)時(shí),各流水線處理區(qū)塊丟棄關(guān)于存儲(chǔ)器單元的內(nèi)容。代符傳送至其他流水線處理區(qū)塊和存儲(chǔ)器單元,以致于代符傳送經(jīng)由圖形流水線以清除關(guān)于第一上下文的數(shù)據(jù)。關(guān)于第二上下文的數(shù)據(jù)會(huì)在代符之后穿過圖形流水線。
在圖形流水線中,流水線可包括一些流水線處理區(qū)塊并不經(jīng)由通信途徑耦接指令處理器,這些流水線處理區(qū)塊繼續(xù)執(zhí)行關(guān)于第一上下文的數(shù)據(jù)直到接收到穿過圖形流水線的代符,一旦接收到代符,這些流水線處理區(qū)塊也會(huì)丟棄關(guān)于第一上下文在存儲(chǔ)器的數(shù)據(jù),并開始處理第二上下文的數(shù)據(jù)。
本發(fā)明提供一種可中斷圖形處理單元處理多個(gè)程序的方法,包括接收一包含多個(gè)上下文的第一運(yùn)行表以執(zhí)行;初始一包括關(guān)于在第一運(yùn)行表的上下文的指令和數(shù)據(jù)的緩沖區(qū)的程序;獲取一圖形處理單元存儲(chǔ)器存取指令和一指針,圖形處理單元存儲(chǔ)器存取指令來自緩沖區(qū),指針是指向關(guān)于緩沖區(qū)的圖形數(shù)據(jù);傳送指針至一個(gè)或多個(gè)結(jié)構(gòu)處理單元,以存取寄存狀態(tài)于圖形處理單元中;切換至第一運(yùn)行表的一另一緩沖區(qū)以處理關(guān)于另一緩沖區(qū)的數(shù)據(jù),以及當(dāng)一最后緩沖區(qū)的運(yùn)行表是空的,切換至另一運(yùn)行表。
本發(fā)明提供一種圖形處理單元,適用于處理多個(gè)程序,包括一處理器,經(jīng)由耦合至處理器的一圖形流水線來控制數(shù)據(jù)的處理;其中圖形處理單元建立上下文的一運(yùn)行表以執(zhí)行、獲取關(guān)于一第一上下文的一個(gè)或多個(gè)指令和一個(gè)或多個(gè)指針,以供圖形流水線執(zhí)行、傳送一個(gè)或多個(gè)指令和一個(gè)或多個(gè)指針至所述圖形流水線,以供圖形流水線處理,其中關(guān)于一個(gè)或多個(gè)指令和一個(gè)或多個(gè)指針的數(shù)據(jù)被圖形流水線執(zhí)行,直到中斷和第一上下文為一空集合為止的一者、以及假如在運(yùn)行表的所有上下文為空集合,切換處理器至在運(yùn)行表的另一上下文或另一運(yùn)行表。
然而,本發(fā)明實(shí)施例的其他系統(tǒng)、方法、特征以及一些發(fā)明的優(yōu)點(diǎn)可以經(jīng)由以下實(shí)施例的說明和附圖更加了解。


圖1表示一計(jì)算裝置,其中上下文切換于GPU中。
圖2表示GPU切換上下文的切換程序。
圖3表示用于圖2的一上下文存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)。
圖4表示第一次存儲(chǔ)/回存前的環(huán)緩沖區(qū)的初始結(jié)構(gòu)。
圖5表示當(dāng)存儲(chǔ)/恢復(fù)上下文之后的環(huán)緩沖區(qū)。
圖6表示圖4和圖5環(huán)緩沖區(qū)結(jié)構(gòu)被GPU 84執(zhí)行的示意圖。
圖7表示GPU的部分結(jié)構(gòu)圖,可包括存儲(chǔ)和恢復(fù)狀態(tài),如圖6所述。
圖8表示圖7的3D流水線結(jié)構(gòu)區(qū)塊176的細(xì)部圖,并顯示存儲(chǔ)部分中斷上下文,以及繼續(xù)處理另一部份中斷上下文。
圖9表示流程圖,包括圖7和8的存儲(chǔ)狀態(tài)和寫入狀態(tài)命令至CSP 190的流程。
圖10表示3D流水線結(jié)構(gòu)區(qū)塊176(圖7)和更詳細(xì)流水線圖(圖8)。
圖11表示圖10的3D流水線176執(zhí)行存儲(chǔ)和恢復(fù)狀態(tài)程序的流程圖。
圖12表示圖7的CSP可執(zhí)行多個(gè)上下文的運(yùn)行流程圖。
圖13表示CSP處理一目前運(yùn)行表和環(huán)緩沖器的流程圖。
圖14表示圖7的CSP運(yùn)行的流程圖,當(dāng)CSP執(zhí)行一環(huán)緩沖區(qū)結(jié)構(gòu)和在一回圈中尋找一環(huán)緩沖區(qū)的終結(jié)指令。
圖15表示圖12-14的數(shù)據(jù)結(jié)構(gòu)。
圖16表示當(dāng)回存一上下文時(shí),CSP執(zhí)行程序的流程圖。
圖17表示圖10的流水線的第一上下文的中斷和下一上下文的初始流程圖。
圖18表示圖10的三角建立單元輸入解碼器接收到一中斷終結(jié)信號(hào)的運(yùn)行流程圖。
圖19表示在3D流水線176中轉(zhuǎn)儲(chǔ)/重置/詢問狀態(tài)機(jī)制的執(zhí)行流程圖。
圖20表示當(dāng)接收到接線信號(hào)和之后中斷終結(jié)代符,圖10的屬性建立單元執(zhí)行程序的流程圖。
圖21表示圖10的范圍產(chǎn)生單元執(zhí)行程序的流程圖。
圖22表示圖10的瓦片產(chǎn)生器226接收到來自CSP的中斷指令以執(zhí)行程序的流程圖。
圖23表示圖10的Z單元位階一區(qū)塊在接收來自瓦片產(chǎn)生單元226的瓦片產(chǎn)生中斷代符的流程圖。
主要元件符號(hào)說明
10~計(jì)算系統(tǒng)12~計(jì)算機(jī)16~處理單元18~系統(tǒng)存儲(chǔ)器21~系統(tǒng)總線24~只讀存儲(chǔ)器26~動(dòng)態(tài)存取存儲(chǔ)器27~基本輸入/輸出系統(tǒng)29~操作系統(tǒng)31~應(yīng)用程序33~其他程序模塊35~程序數(shù)據(jù)40~非易失性存儲(chǔ)器接口41、81~硬盤44~操作系統(tǒng)45~應(yīng)用程序46~其他程序模塊47~程序數(shù)據(jù)50~可移動(dòng)存儲(chǔ)器接口51~磁軟盤驅(qū)動(dòng)器52~可移動(dòng)的非易失性磁盤55~光盤驅(qū)動(dòng)器56~非易失性光盤60~使用者輸入接口61~鼠標(biāo)62~鍵盤70~網(wǎng)絡(luò)接口71~局域網(wǎng)72~調(diào)制解調(diào)器73~廣域網(wǎng)絡(luò)80~遠(yuǎn)端計(jì)算機(jī)
82~圖形接口85~遠(yuǎn)端應(yīng)用程序84~圖形處理單元86~顯示存儲(chǔ)器90~顯示接口91~顯示器95~其他外圍接口96~打印機(jī)97~揚(yáng)聲器111~上下文存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)114~直接存儲(chǔ)器存取字偏移指針116~單元狀態(tài)118~圖元標(biāo)識(shí)符120~實(shí)體標(biāo)識(shí)符122~瓦片標(biāo)識(shí)符125~環(huán)緩沖區(qū)127~首指針129~尾部指針131、135~DMA指令133、137~DMA指針141~跳躍欄142~空白欄147、148~DMA緩沖區(qū)152~恢復(fù)指令154~上下文存儲(chǔ)地址160~162~環(huán)緩沖區(qū)164~前端語法分析器166~環(huán)緩沖區(qū)首指針168~環(huán)緩沖區(qū)尾部指針170~跳躍或恢復(fù)指針172~剩余部分上下文
175~前次操作狀態(tài)上下文存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)176、176a、176b、176c、176d~3D流水線178~后端語法分析器181~目前操作狀態(tài)上下文存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)190~指令串流處理器CSP192~DMA區(qū)塊194~狀態(tài)先進(jìn)先出存儲(chǔ)器(128*512)195~3D流水線結(jié)構(gòu)區(qū)塊176的前端部分196~3D流水線結(jié)構(gòu)區(qū)塊176之后端部分197、198、199~程序205~3D流水線結(jié)構(gòu)區(qū)塊176的細(xì)部圖206~瓦片首指針207、209~數(shù)據(jù)途徑211~CSP先進(jìn)先出存儲(chǔ)器212~執(zhí)行單元池(pool)前端模塊214~三角建立單元215~TSU_FIFO存儲(chǔ)器218~屬性建立單元219~ASU/ZLI FIFO存儲(chǔ)器220~ASU FIFO存儲(chǔ)器222~范圍產(chǎn)生單元223~AFIFO存儲(chǔ)器226~瓦片產(chǎn)生器227~TG FIFO存儲(chǔ)器230~Z單元位階一區(qū)塊231~ZFIFO存儲(chǔ)器232~Z單元位階一區(qū)塊FIFO存儲(chǔ)器234~Z單元位階二區(qū)塊263~奇運(yùn)行表264~偶運(yùn)行表265~存儲(chǔ)器的環(huán)緩沖區(qū)1的數(shù)據(jù)結(jié)構(gòu)
266、271~瓦片首指針268~環(huán)緩沖區(qū)尾部指針290~DMA指令指針291~CSP功能292~DMA緩沖結(jié)構(gòu)293~DMA位移295~多個(gè)實(shí)體296~圖元結(jié)構(gòu)298~三角結(jié)構(gòu)309~實(shí)體標(biāo)識(shí)符311~圖元標(biāo)識(shí)符313~鑲嵌三角形標(biāo)識(shí)符317~瓦片標(biāo)識(shí)符331~接線中斷線347~EUP FIFO存儲(chǔ)器具體實(shí)施方式
本發(fā)明提供一先進(jìn)排序以便虛擬一GPU,因此使不同程序?qū)ふ褿PU可用的時(shí)段來執(zhí)行,并使操作系統(tǒng)可以有限度控制所述排序,當(dāng)數(shù)個(gè)應(yīng)用程序共用一GPU時(shí),操作系統(tǒng)可以被設(shè)定依據(jù)不同的標(biāo)準(zhǔn)來排序各應(yīng)用程序,例如當(dāng)一程序的時(shí)間周期終止時(shí),GPU可在下一時(shí)間周期處理另一程序或甚至再重新執(zhí)行同一程序。
一程序可包括一些上下文內(nèi)容或運(yùn)算。如前所述,一上下文可以在GPU的所有狀態(tài)上執(zhí)行,所述狀態(tài)包括狀態(tài)寄存器、快速緩沖寄存區(qū)和存儲(chǔ)器的目錄內(nèi)容,所有內(nèi)部先入先出緩沖器、內(nèi)部寄存器等等...,從一上下文切換至另一上下文,也可能是GPU在執(zhí)行不同程序。
當(dāng)一上下文切換時(shí),存儲(chǔ)所有GPU的狀態(tài)可能是不切實(shí)際,因?yàn)榍袚Q所需一至三毫秒,在這段期間內(nèi)并不是所有狀態(tài)都需要。因此GPU可只存儲(chǔ)(wrap up)部分程序,以減少存儲(chǔ)狀態(tài)的量。
GPU可具有多層流水線,因此可以在任何時(shí)間于不同位置取得三角形(tirangles)和像素(pixels),另外GPU可經(jīng)由不同層流水線以讀取、修正和/或?qū)懭霐?shù)據(jù)至存儲(chǔ)器中。在一非限定例子中,GPU可具有Z層以讀取、比較和有條件更新數(shù)據(jù)。另外,GPU的寫回單元可以設(shè)計(jì)為圖形元件的目的讀取/修正/寫入元件,因此存儲(chǔ)器可以是被追蹤狀態(tài)的一部份。假如上下文被停止并重新開始,GPU不應(yīng)再一次讀取/修正/寫入同一像素于同一存儲(chǔ)器中,再一次讀取/修正/寫入會(huì)造成不同結(jié)果,因此GPU必須不能追蹤所有在上下文切換之前寫入存儲(chǔ)器的數(shù)據(jù)(猶如存儲(chǔ)狀態(tài)的一部分),以避免所述情況發(fā)生。
圖1表示一計(jì)算裝置,其中上下文切換于一GPU中,圖1和以下敘述將提供一計(jì)算系統(tǒng)和外部連接環(huán)境的概述。然而,無論是手持、可攜式、其他計(jì)算裝置和所有種類計(jì)算機(jī)也都可以使用本發(fā)明所公開的方法。因此本領(lǐng)域的技術(shù)人員皆了解,本發(fā)明并不限定只能使用于本發(fā)明所公開的一般計(jì)算機(jī),另外本發(fā)明也可以執(zhí)行在其他應(yīng)用上。例如本發(fā)明所公開可以存儲(chǔ)數(shù)據(jù)、傳送數(shù)據(jù)至另一計(jì)算機(jī)以及接收來自另一計(jì)算機(jī)的數(shù)據(jù)的系統(tǒng)。
本發(fā)明可應(yīng)用于一操作系統(tǒng)執(zhí)行程序,以供裝置或物件的服務(wù)的開發(fā)者使用,本發(fā)明也包括與此討論的相關(guān)應(yīng)用軟件。軟件可以是一般計(jì)算機(jī)可執(zhí)行指令的上下文,例如被一個(gè)或是多個(gè)計(jì)算機(jī)執(zhí)行的程序模塊,所述計(jì)算機(jī)可以是工作站、服務(wù)器或其他裝置。程序模塊可包括計(jì)算機(jī)程序、程序、物件、元件、數(shù)據(jù)結(jié)構(gòu)和類似程序執(zhí)行一特定任務(wù)或特定抽象數(shù)據(jù)類型,此為本領(lǐng)域的技術(shù)人員皆了解。程序模塊的功能可結(jié)合或分解成不同的模式。
其他廣為人知的計(jì)算機(jī)系統(tǒng)、計(jì)算環(huán)境(中央處理機(jī)模式和系統(tǒng)程序)和/或計(jì)算機(jī)裝置,包括個(gè)人計(jì)算機(jī)(Personal Computer,PC)、自動(dòng)柜員機(jī)(Automated Teller Machine,ATM)、服務(wù)計(jì)算機(jī)、手持裝置計(jì)算機(jī)、筆記型計(jì)算機(jī)、多處理器系統(tǒng)、微處理器系統(tǒng)、可程序客制化電子設(shè)備、上網(wǎng)型個(gè)人計(jì)算機(jī)、各種設(shè)備、發(fā)光系統(tǒng),控制環(huán)境裝置、微計(jì)算機(jī)、大型計(jì)算機(jī)以及類似設(shè)備。本發(fā)明可應(yīng)用于經(jīng)由遠(yuǎn)端處理裝置經(jīng)由通信網(wǎng)絡(luò)/總線或其他數(shù)據(jù)傳輸接口的計(jì)算應(yīng)用以及分配計(jì)算應(yīng)用上,在分散式計(jì)算環(huán)境中,程序模塊可同時(shí)在本地計(jì)算機(jī)和遠(yuǎn)端計(jì)算機(jī)的存儲(chǔ)接口里,此存儲(chǔ)接口包括存儲(chǔ)器裝置,并且客戶端和服務(wù)端可以互換。
圖1的計(jì)算系統(tǒng)10包括一計(jì)算機(jī)12,計(jì)算機(jī)12包括一處理單元16、一系統(tǒng)存儲(chǔ)器18和一系統(tǒng)總線21,系統(tǒng)總線21耦接許多系統(tǒng)裝置,包括耦接系統(tǒng)存儲(chǔ)器18至處理單元16,系統(tǒng)總線21可以是任何類型的總線,如本領(lǐng)域的技術(shù)人員熟悉的存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線以及本地總線等等的不同總線結(jié)構(gòu)。例如外圍部件連接接口(Peripheral ComponentInterconnect,PCI)、加速圖形接口(Accelerated Graphics Port,AGP)和/或外圍部件連接快速接口PCI Express。
計(jì)算機(jī)12可包括不同的計(jì)算機(jī)可讀取媒體,計(jì)算機(jī)可讀取媒體可以是經(jīng)由計(jì)算機(jī)12存取的易失性和非易失性存儲(chǔ)器,可移動(dòng)式和不可移動(dòng)式存儲(chǔ)器,計(jì)算機(jī)可讀取媒體可包括計(jì)算機(jī)存儲(chǔ)媒體和通信媒體。計(jì)算機(jī)存儲(chǔ)媒體可包括易失性和非易失性存儲(chǔ)器、可移動(dòng)式和不可移動(dòng)式存儲(chǔ)器,采用任何方法和技術(shù)以存儲(chǔ),例如本領(lǐng)域的技術(shù)人員熟悉的計(jì)算機(jī)可讀取媒體、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)。計(jì)算機(jī)存儲(chǔ)媒體包括動(dòng)態(tài)存取存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、電子抹除式可編程只讀存儲(chǔ)器EEPROM、閃速存儲(chǔ)器Flash或其他存儲(chǔ)器、只讀光盤CDROM、數(shù)字音像光盤DVD或其他光學(xué)存儲(chǔ)盤、卡式磁帶、磁帶、磁盤或其他磁性存儲(chǔ)裝置、或其他媒體,以用來存儲(chǔ)數(shù)據(jù)并提供給計(jì)算機(jī)12存取使用。
系統(tǒng)存儲(chǔ)器18可包括計(jì)算機(jī)存儲(chǔ)媒體,計(jì)算機(jī)存儲(chǔ)媒體可以是易失/非易失存儲(chǔ)器,例如只讀存儲(chǔ)器(Read Only Memory,ROM)24和動(dòng)態(tài)存取存儲(chǔ)器(Random Access Memory,RAM)26。一基本輸入/輸出系統(tǒng)(BasicInput/Output System,BIOS)27包含基本程序可以傳送存儲(chǔ)于只讀存儲(chǔ)器24的數(shù)據(jù)于計(jì)算機(jī)系統(tǒng)12的各元件間,例如在計(jì)算機(jī)啟動(dòng)時(shí),動(dòng)態(tài)存取存儲(chǔ)器26則存儲(chǔ)可以被處理單元16存取和處理的數(shù)據(jù)和/或程序模塊。操作系統(tǒng)29、應(yīng)用程序31、其他程序模塊33和程序數(shù)據(jù)35也可從動(dòng)態(tài)存取存儲(chǔ)器26中取得。
計(jì)算機(jī)12也可包括其他可移動(dòng)/不可移動(dòng)的易失和非易失計(jì)算機(jī)存儲(chǔ)媒介,一硬盤41可讀取或?qū)懭氩豢梢苿?dòng)非易失性磁性存儲(chǔ)媒體,一磁軟盤驅(qū)動(dòng)器51可讀取或?qū)懭肟梢苿?dòng)的非易失性磁盤52,一光盤驅(qū)動(dòng)器55可讀取或?qū)懭肟梢苿?dòng)的非易失性光盤56,例如CDROM或其他光學(xué)媒體,另外可以用在系統(tǒng)10的可移動(dòng)/不可移動(dòng)的易失和非易失計(jì)算機(jī)存儲(chǔ)媒體包括磁帶、閃速存儲(chǔ)器、數(shù)字音像光盤、數(shù)字音像帶、固態(tài)動(dòng)態(tài)存取存儲(chǔ)器、固態(tài)只讀存儲(chǔ)器以及其他媒體,但不限制以上所列的存儲(chǔ)媒體。
硬盤41一般經(jīng)由非易失性存儲(chǔ)器接口40連接至系統(tǒng)總線21,同樣,磁軟盤驅(qū)動(dòng)器51和光盤驅(qū)動(dòng)器55也經(jīng)由可移動(dòng)存儲(chǔ)器接口50連接至系統(tǒng)總線21,圖1所顯示和以上所述存儲(chǔ)媒體和裝置可存儲(chǔ)計(jì)算機(jī)可讀取媒體、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)。硬盤41存儲(chǔ)操作系統(tǒng)44、應(yīng)用程序45、其他程序模塊46和程序數(shù)據(jù)47。所述元件有可能相同或來自于不同的操作系統(tǒng)29、應(yīng)用程序31、其他程序模塊33和/或程序數(shù)據(jù)35。圖1也本領(lǐng)域的技術(shù)人員所熟知的顯示廣域網(wǎng)絡(luò)(wide area network,WAN)73元件(有可能包括其他網(wǎng)絡(luò)/總線)。
使用者經(jīng)由鍵盤62和鼠標(biāo)61輸入指令和數(shù)據(jù)于計(jì)算機(jī)12,鍵盤62和鼠標(biāo)61經(jīng)由使用者輸入接口60耦合和系統(tǒng)總線21至處理單元16。然而,本領(lǐng)域的技術(shù)人員也可使用其他接口和總線,例如并行端口、并行端口(parallel port)、游戲端口(game port)或通用串行總線(universal serialbus,USB)的接口耦接于處理單元12。
一圖形接口82也耦合至系統(tǒng)總線21,圖形接口82也可以是一組芯片和處理單元16耦合,圖形接口82可以是外圍部件連接快速接口(PeripheralComponent Interconnect,PCI Express)或加速圖形接口(AcceleratedGraphics Port,AGP)。一個(gè)或多個(gè)圖形處理單元GPU 84可與同時(shí)圖形接口82耦合。圖形處理單元GPU 84可以具有專屬芯片內(nèi)的存儲(chǔ)器,例如寄存器(register)或高速緩沖存儲(chǔ)器(cache memory)。圖形處理單元GPU 84也可與存儲(chǔ)器86耦合溝通,關(guān)于所述應(yīng)用的變化可能會(huì)影響本發(fā)明實(shí)施例,本發(fā)明實(shí)施例所公開的圖形處理單元GPU 84并不是唯一例子,也可以使用其他裝置取代圖形處理單元GPU 84于計(jì)算機(jī)12中。
顯示器91和其他顯示裝置也經(jīng)由顯示接口90耦合至系統(tǒng)總線21,顯示接口90也與顯示存儲(chǔ)器86耦合溝通,除了顯示器91,計(jì)算機(jī)系統(tǒng)12也可包括其他外圍輸出裝置,例如打印機(jī)96和揚(yáng)聲器97,打印機(jī)96和揚(yáng)聲器97皆經(jīng)由其他外圍接口95耦合至計(jì)算機(jī)12。
本領(lǐng)域的技術(shù)人員了解計(jì)算機(jī)12可以使用于網(wǎng)絡(luò)或分散式計(jì)算環(huán)境與其他端計(jì)算機(jī)連接,例如遠(yuǎn)端計(jì)算機(jī)80,遠(yuǎn)端計(jì)算機(jī)80可以是個(gè)人計(jì)算機(jī)、服務(wù)計(jì)算機(jī)、路由器、網(wǎng)絡(luò)計(jì)算機(jī)、或其他網(wǎng)絡(luò)節(jié)點(diǎn),遠(yuǎn)端計(jì)算機(jī)80也具有如計(jì)算機(jī)12所具有的元件或是部分計(jì)算機(jī)12所具有的元件,盡管在圖1中只顯示存儲(chǔ)器存儲(chǔ)裝置81和應(yīng)用程序85。圖1中也顯示利用局域網(wǎng)(localarea network,LAN)71和廣域網(wǎng)絡(luò)(Wide Area Network,WAN)73耦接遠(yuǎn)端計(jì)算機(jī)80,但不限定,本領(lǐng)域的技術(shù)人員也可以使用其他網(wǎng)絡(luò)/總線來連接。
在圖1中,遠(yuǎn)端計(jì)算機(jī)80可經(jīng)由局域網(wǎng)(local area network,LAN)71和網(wǎng)絡(luò)接口70耦接計(jì)算機(jī)12,同樣也可經(jīng)由調(diào)制解調(diào)器72,經(jīng)由使用者輸入接口60,和WAN耦接遠(yuǎn)端計(jì)算機(jī)80。
如前所述當(dāng)GPU 84在處理另一上下文時(shí),可以切換程序或上下文,在中斷那一刻,GPU 84存儲(chǔ)一中斷上下文并開始另一上下文(此一上下文也有可能是上一次被中斷而存儲(chǔ)的上下文)。
關(guān)于存儲(chǔ)和恢復(fù)狀態(tài)上下文的狀態(tài),圖2表示GPU 84切換上下文的切換程序。在階段101,GPU 84執(zhí)行一目前GPU狀態(tài)上下文,然而在第一步驟(interrupt)1,處理單元16發(fā)初一中斷指令或事件,GPU 84于是開始存儲(chǔ)GPU狀態(tài)上下文,如階段103所示,(關(guān)于如何實(shí)行中斷指令和事件,之后會(huì)詳細(xì)解釋),之后GPU狀態(tài)上下文存儲(chǔ)(save)2,如步驟2,當(dāng)GPU 84切換GPU狀態(tài)上下文時(shí),如階段105,GPU 84執(zhí)行第3步驟(new context)載入一新GPU狀態(tài)上下文,如階段107,之后GPU 84執(zhí)行第4步驟回至階段101,以執(zhí)行新的GPU狀態(tài)上下文。
當(dāng)GPU 84完成新載入的GPU狀態(tài)上下文后,執(zhí)行第5步驟(END OFCONTEXT),GPU 84跳回階段105,切換GPU狀態(tài)上下文至上一個(gè)上下文,如第6步驟(PREVIOUSLY EXECUTED CONTEXT),于是GPU 84跳到階段109并恢復(fù)之前在步驟2所存儲(chǔ)的GPU狀態(tài)上下文,因此GPU 84回到階段101(步驟7)執(zhí)行所恢復(fù)的GPU狀態(tài)上下文。
根據(jù)圖2,配置GPU 84依序執(zhí)行多個(gè)屬于同一上下文(或稱為環(huán)緩沖區(qū)Ring Buffer)的GPU程序(指令),其中環(huán)緩沖區(qū)包括處理器功能和命令直接存儲(chǔ)器存取緩沖區(qū)指針(Command DMA buffer pointer)于存儲(chǔ)器中。如前所述,當(dāng)GPU 84接收到中斷命令時(shí),切換一上下文至另一上下文,并在環(huán)緩沖區(qū)的末端(分別如步驟1至步驟5),當(dāng)中斷命令下達(dá)時(shí),GPU 84存儲(chǔ)狀態(tài)上下文,并在存儲(chǔ)完后立刻繼續(xù)執(zhí)行下一上下文。
圖3表示用于圖2的一上下文存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)111,這些在上下文存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)111的結(jié)構(gòu)單元狀態(tài)可定義在中斷時(shí)的單元狀態(tài)。上下文存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)111包括數(shù)種欄,包括一直接存儲(chǔ)器存取字偏移指針(DMA word offsetpointer)114、原始標(biāo)識(shí)符(Primitive ID)118、實(shí)體標(biāo)識(shí)符(Instance ID)120和一中斷DRAW命令的瓦片標(biāo)識(shí)符122。上下文存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)111也可包括指令串流處理器(Command of a stream processor,CSP)、執(zhí)行單元EU(Execution Unit)、瓦片陰影單元(Tile Shader Unit,TSU)和其他處理程序單元狀態(tài)于116中,當(dāng)中斷時(shí),這些存儲(chǔ)于上下文存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)111的結(jié)構(gòu)單元狀態(tài)可定義單元的狀態(tài)。假如GPU 84將一些信息保存為準(zhǔn)備存儲(chǔ)的格式(ready-to-save form)并稍后在重新啟動(dòng)上下文之前恢復(fù)所有狀態(tài),GPU 84可視為可完全中斷。
以下為在上下文存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)111的單元表typedef struct context_save_area{DMA_DW_OffsetCSP_Registers CSP[551];Command Stream Processor RegistersC2D_Registers C2D[13];Block1 registersMXU_Registers MXU[19]Block2 registersTSU_Registers TSU[163]Block3 registers………………………………………SG_TG_Registers SG_TG[3];ZL1_Registers ZL1[17];ZL2_registers ZL1[21];Primitive_ID Primitive_ID;Instance_ID Instance_ID;Tile_ID Tile_ID;}context_save_area圖4表示第一次存儲(chǔ)/回存(和圖2上下文切換程序有關(guān))前的環(huán)緩沖區(qū)125的初始結(jié)構(gòu),一環(huán)緩沖區(qū),例如環(huán)緩沖區(qū)125可包括一串指令和關(guān)于上下文執(zhí)行的存儲(chǔ)器指針,環(huán)緩沖區(qū)125包含一首指針(head pointer)127和一尾部指針(tail pointer)129,首指針127包含有關(guān)處理指令的邏輯位置和環(huán)緩沖區(qū)125的指針,尾部指針129存儲(chǔ)數(shù)據(jù)是有關(guān)環(huán)緩沖區(qū)125的邏輯尾部端位置,當(dāng)更多指令加入上下文時(shí),尾部指針129在上下文執(zhí)行(圖2的階段101)時(shí)會(huì)更新。
環(huán)緩沖區(qū)125也包含DMA存儲(chǔ)器指令131和DMA指針133(指向DMA緩沖區(qū)147,DMA緩沖區(qū)147包含指令和數(shù)據(jù)是有關(guān)于環(huán)緩沖區(qū)125的上下文)。另外環(huán)緩沖區(qū)125可包含DMA指令,例如DMA指令135,和DMA指針,例如指針137,指針137指向DMA緩沖區(qū)148,DMA緩沖區(qū)148包含指令和數(shù)據(jù),圖4的環(huán)緩沖區(qū)125也包括跳躍欄(skip 1 DWORD)141和空白欄142的兩位置保留欄,在一存儲(chǔ)/恢復(fù)之后(稍后討論),跳躍欄141和空白欄142分別存儲(chǔ)上下文存儲(chǔ)指令和指針地址。
當(dāng)GPU 84開始執(zhí)行環(huán)緩沖區(qū)125時(shí),GPU 84接收首指針127和尾部指針129,并且檢查一存儲(chǔ)上下文。跳躍欄(位置保留欄)141可使GPU 84跳過或是忽略空白欄142而跳到下一DMA指令欄131,此時(shí),環(huán)緩沖區(qū)125不會(huì)被中斷,GPU 84另外繼續(xù)執(zhí)行圖4中環(huán)緩沖區(qū)125的指令以及執(zhí)行DMA緩沖區(qū)147和148的內(nèi)容(例如圖形指令draw command、圖元primitives、實(shí)體instances和瓦片tiles)。
圖5為當(dāng)存儲(chǔ)/恢復(fù)上下文之后(如圖2所示)的環(huán)緩沖區(qū)150,圖4環(huán)緩沖區(qū)125的位置保留欄141和142被恢復(fù)指令(restore command)152和上下文存儲(chǔ)地址(context save address)154所取代,上下文存儲(chǔ)地址154指向狀態(tài)上下文存儲(chǔ)緩沖區(qū)111,如圖3所示。
當(dāng)圖5GPU 84處理環(huán)緩沖區(qū)150時(shí),識(shí)別完恢復(fù)指令152,GPU 84經(jīng)由上下文存儲(chǔ)地址154即得知應(yīng)獲取狀態(tài)上下文存儲(chǔ)緩沖區(qū)111的數(shù)據(jù),從狀態(tài)上下文存儲(chǔ)緩沖區(qū)111取得的數(shù)據(jù)也可提供DMA緩沖區(qū)147的DMA移位146數(shù)據(jù),因此可以在正確中斷點(diǎn)開始處理。
圖6表示環(huán)緩沖區(qū)結(jié)構(gòu)162被GPU 84執(zhí)行的示意圖160,稍后會(huì)詳加敘述,環(huán)緩沖區(qū)162(可能類似圖4的環(huán)緩沖區(qū)125或圖5的環(huán)緩沖區(qū)150),包括一環(huán)緩沖區(qū)首指針(ring buffer head)166和環(huán)緩沖區(qū)尾部指針(ringbuffer tail)168,一跳躍或恢復(fù)指針(skip or restore)170可在環(huán)緩沖區(qū)尾部指針168之后(類似圖4的跳躍欄141和圖5的識(shí)別完恢復(fù)指令152),一剩余部分上下文(rest of context in ring buffer)172也在環(huán)緩沖區(qū)162里,剩余部分上下文172也包括一個(gè)或多個(gè)DMA指令和指針,如前所述。
GPU 84也包括一指令串流處理器(Command Stream Processor,CSP)190,如圖7所示。CSP 190也包括和3D流水線(3D pipeline)176連接的一前端語法分析器(Front-end parser)164和一后端語法分析器(Back-endparser)178。
當(dāng)接收到環(huán)緩沖區(qū)首指針166和環(huán)緩沖區(qū)尾部指針168時(shí),前端語法分析器164開始分析環(huán)緩沖區(qū)162,之后,前端語法分析器164根據(jù)指令指針170是否為一跳躍或恢復(fù)指令來檢查一存儲(chǔ)上下文,假如指令170是一跳躍指令,這表示環(huán)緩沖區(qū)162之前不被中斷過,因此CSP 190執(zhí)行剩余部分上下文172(可包括一個(gè)或多個(gè)DMA指令和指針),假如前端語法分析器164辨識(shí)出指令170為一恢復(fù)指令(如圖5的恢復(fù)指令152),即執(zhí)行恢復(fù)指令Restore CMD,而前次操作狀態(tài)上下文存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)(Previous run statecontext save data structure)175被獲取(如圖6所示)且恢復(fù)Restorestates至前端語法分析器164中,之后這恢復(fù)上下文被3D流水線176處理并傳送至CSP后端語法分析器178,其操作如同目前操作狀態(tài)上下文存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)(current run state context save data structure)181。
圖7表示GPU 84的部分結(jié)構(gòu)圖,可包括存儲(chǔ)和恢復(fù)狀態(tài)(如圖6所述),GPU 84可包括CSP 190,CSP 190包括一前端語法分析器164和一后端語法分析器178(如前所述),這些裝置經(jīng)由3D流水線176來協(xié)調(diào)指令的處理,一DMA區(qū)塊192可存取存儲(chǔ)器86,以獲取前端語法分析器的狀態(tài)和指令。CSP190包括一存儲(chǔ)器194(一128*512狀態(tài)先進(jìn)先出存儲(chǔ)器)以獲取從后端語法分析器178的狀態(tài)和指令。
圖6的3D流水線176可還包括3D流水線結(jié)構(gòu)區(qū)塊(3D pipeline archblock)176a-176d,如圖7所顯示,3D流水線結(jié)構(gòu)區(qū)塊176可以是瓦片陰影單元、陰影產(chǎn)生器單元和瓦片產(chǎn)生器等等...,本領(lǐng)域的技術(shù)人員皆熟悉該技術(shù),如圖10所示。
為了存儲(chǔ)所有狀態(tài),當(dāng)接收到一中斷指令時(shí),各3D流水線結(jié)構(gòu)區(qū)塊176可以傳送本身狀態(tài)指令State commands的復(fù)制本至CSP 190,當(dāng)接收各結(jié)構(gòu)區(qū)塊176的狀態(tài)指令時(shí),CSP 190可寫信息至一存儲(chǔ)器(128*512狀態(tài)先進(jìn)先出存儲(chǔ)器)194,之后存入存儲(chǔ)器86中(如前所述)。在一非限定的例子中,3D流水線結(jié)構(gòu)區(qū)塊(176b和176d)經(jīng)由數(shù)據(jù)途徑(207和209)連至CSP 190之后端語法分析器178。盡管以下會(huì)有更細(xì)節(jié)討論,并不是每一個(gè)3D流水線結(jié)構(gòu)區(qū)塊176具有一數(shù)據(jù)途徑至后端語法分析器178,然而數(shù)據(jù)途徑(207和209)可以存儲(chǔ)GPU 84正在處理中的數(shù)據(jù),以致于一上下文可以被中斷和再開始。
數(shù)據(jù)途徑(207和209)介于3D流水線結(jié)構(gòu)區(qū)塊(176b和176d)中,另一種說法,就是各3D流水線結(jié)構(gòu)區(qū)塊并不具有一專用數(shù)據(jù)途徑至后端語法分析器178,因此復(fù)制各3D流水線結(jié)構(gòu)區(qū)塊176的狀態(tài)至一狀態(tài)先進(jìn)先出存儲(chǔ)器194的數(shù)據(jù)途徑可以是專用的或是共用的,因?yàn)闋顟B(tài)改變不常發(fā)生,所以3D流水線結(jié)構(gòu)區(qū)塊176共用數(shù)據(jù)途徑(207和209)可以減少3D流水線結(jié)構(gòu)區(qū)塊176和CSP后端語法分析器178之間的數(shù)據(jù)途徑數(shù),換句話說,減少數(shù)據(jù)途徑,可以供芯片其他模塊和/或結(jié)構(gòu)使用。
圖8表示圖7的3D流水線結(jié)構(gòu)區(qū)塊176的細(xì)部圖205,和中斷一上下文操作以致于保留一瓦片首指針206、DMA移位293(參見圖15)、實(shí)體標(biāo)識(shí)符309(參見圖15)和圖元標(biāo)識(shí)符311(參見圖15)。一3D流水線結(jié)構(gòu)區(qū)塊176的前端部分195包括三角建立單元214和屬性建立單元218,根據(jù)程序(在新上下文開始之前,丟棄舊上下文數(shù)據(jù))197丟棄一中斷上下文的數(shù)據(jù),因此圖形指令(Draw command)、頂點(diǎn)(Vertices)、狀態(tài)指令(State command)和圖元指令(primitive assembled)等等...被丟棄于到達(dá)瓦片產(chǎn)生器226之前(可參考圖17的步驟334)。
瓦片產(chǎn)生器226可存儲(chǔ)瓦片標(biāo)識(shí)符(tile ID)于中斷那一刻,其他如目前首指針(current head pointer)206、DMA位移293、實(shí)體標(biāo)識(shí)符(instance ID)309和圖元標(biāo)識(shí)符311也會(huì)被存儲(chǔ),這個(gè)流程位在步驟(準(zhǔn)確GPU中斷以協(xié)調(diào)上下文的存儲(chǔ))198,稍后也會(huì)有更詳細(xì)說明。
在圖8的步驟(舊上下文在新上下文開始之前被輸出)199中,3D流水線結(jié)構(gòu)區(qū)塊176繼續(xù)處理舊上下文數(shù)據(jù),因?yàn)椴糠峙f上下文已經(jīng)由3D流水線結(jié)構(gòu)區(qū)塊176被拿出來處理,因此至少一部份舊上下文在收到中斷程序時(shí)已經(jīng)完成。
圖9表示流程圖200,流程圖200包括圖7和8的存儲(chǔ)狀態(tài)流程和寫入狀態(tài)命令至CSP 190流程,在一般程序中,3D流水線結(jié)構(gòu)區(qū)塊176操作在步驟201,根據(jù)寄存區(qū)ID引導(dǎo)3D流水線結(jié)構(gòu)區(qū)塊176寫入狀態(tài)至寄存器中,在無中斷模式下(NON-INT MODE),各3D流水線結(jié)構(gòu)區(qū)塊176操作從步驟201至步驟203,去檢查下一登錄程序,當(dāng)接收到一區(qū)塊狀態(tài)登錄時(shí),假如無接收到中斷指令,3D流水線結(jié)構(gòu)區(qū)塊176可再執(zhí)行步驟201。
然而,假如CSP 190接收到一指令指示切換至中斷模式,3D流水線結(jié)構(gòu)區(qū)塊176移至步驟204,以便存儲(chǔ)被GPU 84目前執(zhí)行的狀態(tài)上下文(請(qǐng)參考圖2的步驟103),之后3D流水線結(jié)構(gòu)區(qū)塊176跳至步驟203以檢查下一登錄程序并繼續(xù)操作,如前所述。
當(dāng)事件發(fā)生時(shí),3D流水線結(jié)構(gòu)區(qū)塊176建立一上下文存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)111(圖3)經(jīng)由經(jīng)由數(shù)據(jù)途徑(207和209)傳送狀態(tài)數(shù)據(jù)至CSP 190,區(qū)塊176a和區(qū)塊176c也可分別傳送數(shù)據(jù)至區(qū)塊176b和區(qū)塊176d,并且傳送至區(qū)塊176b和區(qū)塊176d的數(shù)據(jù)可經(jīng)由數(shù)據(jù)途徑(207和209)傳送至后端語法分析器178。
圖10表示3D流水線結(jié)構(gòu)區(qū)塊176(圖7)和更詳細(xì)流水線圖(圖8),圖10為本領(lǐng)域的技術(shù)人員熟悉的圖,并且不限定于此一圖形流水線,這些區(qū)塊在不離此發(fā)明概念下重新排列,也可達(dá)成類似結(jié)果,如前所述,CSP 190可與3D流水線結(jié)構(gòu)區(qū)塊176耦接與溝通,其中包括三角建立單元(Triangle setupunit,TSU)214以接收從指令串流處理器的先進(jìn)先出存儲(chǔ)器(CSP FIFO)211的指令,三角建立單元214經(jīng)由TSU FIFO存儲(chǔ)器215傳送處理過的數(shù)據(jù)至屬性建立單元(Attribute setup unit,ASU)218,ASU 218傳送處理過的數(shù)據(jù)至ASU/ZL1 FIFO 219、范圍產(chǎn)生單元(Span generator unit,SG)222和屬性先進(jìn)先出存儲(chǔ)器(Attribute FIFO,AFIFO)223。
SG 222傳送處理過的數(shù)據(jù)至瓦片產(chǎn)生單元(Tile generator unit,TG)226。Z單元位階一區(qū)塊(ZL1)230接收來自ASU/ZL1 FIFO存儲(chǔ)器219、AFIFO223和TG FIFO 227的數(shù)據(jù),其中TG 226耦接TG FIFO 227,ZL1 230將接收到的處理數(shù)據(jù)經(jīng)由ZFIFO 231和ZL1 FIFO 232傳送至Z單元位階二區(qū)塊(ZL2)234。
本領(lǐng)域的技術(shù)人員皆熟悉圖10的3D流水線結(jié)構(gòu)區(qū)塊176(之后稱為3D流水線)只是一圖形流水線的一部分,另外,寫回單元、像素包區(qū)塊和其他區(qū)塊可以是3D流水線176中其他部分,為了簡(jiǎn)單起見,所以不在這里贅述。
所述上下文存儲(chǔ)和恢復(fù)狀態(tài)程序可以被圖10的3D流水線176執(zhí)行,圖11表示流程圖240,流程圖240顯示圖10的3D流水線176執(zhí)行存儲(chǔ)和恢復(fù)狀態(tài)程序的流程。
關(guān)于上下文的存儲(chǔ)程序,當(dāng)GPU 84處理一上下文時(shí)可能會(huì)接收到來自CPU(圖1的處理單元)的一中斷指令(如步驟242),關(guān)于步驟244,3D流水線176等待瓦片產(chǎn)生器226或一寫回單元(圖10中并未顯示)的清除指令被執(zhí)行,CSP 190可辨識(shí)瓦片產(chǎn)生器226是否清除,因?yàn)楫?dāng)首指針改變時(shí),CSP 190每次會(huì)傳送一符記通過流水線,當(dāng)瓦片產(chǎn)生器226接收到符記以及處理符記,并且會(huì)告知CSP 190收到。
當(dāng)CSP 190初始一圖形指令或開始狀態(tài)時(shí),CSP 190更會(huì)傳送DMA DWORDOFFSET至流水線176,瓦片產(chǎn)生器226也傳送DMA DWORD OFFSET至CSP 190,當(dāng)狀態(tài)傳送至瓦片產(chǎn)生器(如圖7所示)和數(shù)據(jù)途徑(207和209)時(shí),瓦片產(chǎn)生器226也會(huì)傳送狀態(tài)回去。
圖11的區(qū)塊247表示,當(dāng)接收到來自CPU 16的中斷指令時(shí)(步驟242),狀態(tài)和指針會(huì)被存儲(chǔ)。當(dāng)瓦片產(chǎn)生器226接收到中斷指令時(shí),瓦片產(chǎn)生器226會(huì)傳送ID(設(shè)所有ID為0)至CSP 190(假如瓦片產(chǎn)生器226在處理狀態(tài)時(shí)遇到中斷),另外,在步驟247時(shí),瓦片產(chǎn)生器226可存儲(chǔ)指針和狀態(tài),包括瓦片首指針、DMA移位(DMA OFFSET)、實(shí)體標(biāo)識(shí)符(instance ID)、圖元標(biāo)識(shí)符(primitive ID)、瓦片標(biāo)識(shí)符(tile ID)和所有寄存狀態(tài),因此被存儲(chǔ)的上下文可以快速回存,數(shù)據(jù)可包括以及存儲(chǔ)成圖3的上下文存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)111。
之后GPU 84可以切換至另一運(yùn)行表(run list)(步驟249),這些程序可以被切換并可包括一個(gè)或多個(gè)被3D流水線176執(zhí)行的上下文(如圖12所示)。
關(guān)于流水線176的回存一狀態(tài)的流程程序,當(dāng)目前執(zhí)行程序已經(jīng)完成或當(dāng)一指令已接收并執(zhí)行時(shí),GPU 84可切換回之前但只部分執(zhí)行過的程序(如步驟251),之后GPU 84可回存之前所有存儲(chǔ)狀態(tài)(在步驟247中所存儲(chǔ)的狀態(tài))(步驟253),CSP 190(步驟256)略過圖形指令直到移位之前所存儲(chǔ)DMA移位量后遇到的所存儲(chǔ)的圖形指令(稍后有更詳細(xì)的說明),之后瓦片產(chǎn)生器226(步驟258)略過圖形指令直到接收到所有在步驟247存儲(chǔ)的實(shí)體標(biāo)識(shí)符(instance ID)、圖元標(biāo)識(shí)符(Primitive ID)和瓦片標(biāo)識(shí)符(tile ID),之后流水線執(zhí)行任一未完成的程序(步驟260)(稍后有更詳細(xì)的說明)。
關(guān)于一上下文回存程序的開始,CSP 190需要處理所有元件的狀態(tài),包括目前首指針、DMA移位量、實(shí)體標(biāo)識(shí)符、圖元標(biāo)識(shí)符和瓦片標(biāo)識(shí)符(可能在之前步驟247時(shí)存儲(chǔ)),因此CSP 190從環(huán)緩沖區(qū)取回環(huán)緩沖區(qū)首指針(ringbuffer head pointer,經(jīng)由存儲(chǔ)程序存儲(chǔ),如前所述),并且處理被首指針指向的DMA指令,然后略過所有指令直到DMA地址等于直接存儲(chǔ)器存取位移量(DMA OFFSET),使得CSP 190重新開始執(zhí)行之前被中斷地址的指令,可能是在triangle(三角形)中間,但不限定。
CSP 190可在回存狀態(tài)程序時(shí)略過實(shí)體(instance)直到實(shí)體ID(instanceID)符合,也可略過圖元(primitives)直到圖元ID符合,實(shí)體ID和圖元ID皆存儲(chǔ)在狀態(tài)先進(jìn)先出寄存器194,所以CSP 190可以比較被回存至實(shí)體ID的實(shí)體,另一程序區(qū)塊(為GPU84計(jì)算核心一部份)略過triangles直到關(guān)于一特別triangle的圖元ID符合,例如triangle ID可被存儲(chǔ)至分離執(zhí)行區(qū)塊寄存區(qū)(并未顯示),瓦片產(chǎn)生器226在回存程序可略過瓦片(tile)直到瓦片符合瓦片ID(在一存儲(chǔ)程序,存儲(chǔ)步驟247),一旦ID符合,CSP 190切換3D流水線從一略過狀態(tài)至一正常狀態(tài)。
CSP 190產(chǎn)生一個(gè)或多個(gè)符記和3D流水線176溝通,符記包括寄存器地址,并且和一位移量一起代表上一中斷的處理程序點(diǎn),為了彈性改變狀態(tài)上下文存儲(chǔ)結(jié)構(gòu),CSP 190操作的結(jié)構(gòu)包括密集包裹所有區(qū)塊狀態(tài)至存儲(chǔ)器86,因此CSP 190可執(zhí)行一彈性包裹寄存移位(Flexible pack register offset),當(dāng)接收到一中斷上下文(Context)時(shí),寄存器移位會(huì)告訴各3D流水線176一位置點(diǎn)以恢復(fù)或回存操作,經(jīng)由增加移位量至中斷上下文的寄存地址,中斷上下文地址可以被快速找得。關(guān)于圖10的各3D流水線結(jié)構(gòu)區(qū)塊176,各3D流水線結(jié)構(gòu)區(qū)塊176關(guān)連的區(qū)塊ID和相關(guān)位移量可用于恢復(fù)時(shí)計(jì)算其地址,以這方法,GPU 84可經(jīng)由狀態(tài)上下文存儲(chǔ)和回存,以執(zhí)行一中斷于應(yīng)用程序中,因此3D流水線結(jié)構(gòu)區(qū)塊176可以同時(shí)使用一個(gè)或多個(gè)應(yīng)用程序分享其功能和運(yùn)行。
關(guān)于圖11上下文存儲(chǔ)程序240,可提供彈性變化于狀態(tài)上下文存儲(chǔ)結(jié)構(gòu)中,因此一程序包括密集包所有區(qū)段狀態(tài)數(shù)據(jù)于存儲(chǔ)器86中,在GPUsubversion次設(shè)計(jì)流程中,3D流水線結(jié)構(gòu)區(qū)塊176的各區(qū)塊可經(jīng)常改變寄存器規(guī)格。在一非限定的例子中,假如系統(tǒng)超過20個(gè)處理區(qū)塊(176a、176b、...176n,n大于20),會(huì)造成花費(fèi)大量時(shí)間在改變寄存器數(shù)據(jù)包硬體。
因此,使用一可調(diào)包寄存器位移量可以解決所述問題,以下表格提供一組寄存器,使?fàn)顟B(tài)數(shù)據(jù)存儲(chǔ)在一上下文存儲(chǔ)結(jié)構(gòu)中,關(guān)于各狀態(tài)數(shù)據(jù)的區(qū)塊,提供各自位移量,包括一位移寄存內(nèi)容和一寄存ID的組合。CSP 190可發(fā)出一組專門針對(duì)流水線176的區(qū)塊的寄存指令,在一非限定的例子中,移位量為128位元,以下為一非限定例子的寄存器組的表格


以下為一長(zhǎng)度寄存器的表格,敘述關(guān)于各區(qū)塊的狀態(tài)數(shù)據(jù)長(zhǎng)度,并對(duì)于各區(qū)塊的運(yùn)算碼雙字(opcode double word)定義數(shù)據(jù)的上限,長(zhǎng)度寄存器可被CSP 190拿來作內(nèi)部測(cè)試,不像所述敘述的移位寄存,長(zhǎng)度寄存器可格式為長(zhǎng)度32位元,以下表格(并不限定)為長(zhǎng)度寄存表格

根據(jù)所述信息,CSP 190可決定各區(qū)塊寄存器存儲(chǔ)器的長(zhǎng)度和位移量,也就是關(guān)于存儲(chǔ)器的地址位置(block_id)和寄存器(n),利用基本地址加上移位寄存量(block_id(n))<<4(12位元為一寄存區(qū)),利用這方法,狀態(tài)上下文存儲(chǔ)結(jié)構(gòu)可以具有彈性,并可以提供GPU設(shè)計(jì)上的彈性。
圖12表示圖7的CSP 190可執(zhí)行多個(gè)上下文的運(yùn)行流程圖,各上下文具有自己環(huán)緩沖區(qū),例如環(huán)緩沖區(qū)125、150或162。如圖12所示,CSP 190可切換于兩運(yùn)行表(run list)之間,包括奇運(yùn)行表(Run list odd)和偶運(yùn)行表(Run list even)264,本發(fā)明并不限定于此例,各運(yùn)行表包括,(context0)上下文0、(context 1)上下文1、(context 2)上下文2和(context 3)上下文3的四個(gè)分別的上下文,在各運(yùn)行表的上下文0-3指向各環(huán)緩沖區(qū),并被CSP 190執(zhí)行,如前所述。
在圖12中,環(huán)緩沖區(qū)1可以是偶運(yùn)行表264的上下文1的參考,環(huán)緩沖區(qū)1包括各種GPU指令和/或DMA緩沖指針指向的DMA指令,例如所述環(huán)緩沖區(qū)125、150和162,請(qǐng)同時(shí)參考圖12和圖13,圖13表示CSP 190處理一目前運(yùn)行表和環(huán)緩沖器的流程圖275。
GPU 84可接收運(yùn)行表指令,之后如圖12所示排序地址格從0到3,如同圖13的步驟279,以建立一運(yùn)行表,如圖12所示,CSP 190開始執(zhí)行偶運(yùn)行表或奇運(yùn)行表的上下文0。
在圖13中,CSP 190取得首部和尾部指針并且檢查用以跳躍或存儲(chǔ)指令的一代符(token)(步驟282),假如CSP 190決定下一代符是一回存指令(由步驟285決定),(如圖5的存儲(chǔ)指令152),CSP 190執(zhí)行回存指令并取得所有GPU狀態(tài)信息(步驟288),假設(shè)步驟285決定不執(zhí)行回存指令,CSP 190可取得圖12的環(huán)緩沖區(qū)1,并且執(zhí)行DMA指令(例如圖4的DMA指令)和相關(guān)DMA緩沖區(qū)數(shù)據(jù)(例如圖4的DMA緩沖區(qū))。
在圖12中,CSP 190和3D流水線176可存取DMA指針290,當(dāng)首部指針(head pointer)讀到DMA指針290時(shí),并進(jìn)而存取DMA緩沖區(qū)292,DMA緩沖區(qū)292包括圖元指令0和圖元指令1。當(dāng)首部指針(head pointer)在環(huán)緩沖區(qū)1上從左至右移動(dòng)時(shí),首部指針在DMA指針區(qū)290之前可能會(huì)讀到一跳略或回存指令,當(dāng)回存指令不存在時(shí)會(huì)使CSP 190開始存取DMA緩沖區(qū),并進(jìn)而存取DMA緩沖區(qū)292和處理在緩沖區(qū)相關(guān)數(shù)據(jù)的圖形。
在圖13中,在取得環(huán)緩沖區(qū)數(shù)據(jù)后,CSP 190和3D流水線176開始處理目前環(huán)緩沖區(qū)(步驟289),在圖12中,CSP 190開始處理偶運(yùn)行表的包含緩沖區(qū)0的上下文0,假如上下文是空的(步驟294),切換至下一上下文(步驟297),CSP 190會(huì)切換從上下文0至上下文1,因此環(huán)緩沖區(qū)1會(huì)被載入并且執(zhí)行,在切換至環(huán)緩沖區(qū)1時(shí),會(huì)檢測(cè)使否有來自CPU 16的中斷信號(hào)(步驟299),假如沒有中斷信號(hào),CSP 190會(huì)回到步驟282以執(zhí)行圖12的環(huán)緩沖區(qū)1,然而假如在步驟299檢測(cè)到中斷信號(hào),會(huì)跳到步驟301,基本信息單位(basic information unit,BIU)處理中斷程序,并且回到步驟282,之后執(zhí)行圖11的上下文存儲(chǔ)程序。
假如在步驟294檢測(cè)上下文不是空的,CSP 190的前端語法分析器164會(huì)之后傳送目前環(huán)緩沖指針、DMA移位和ID以及寄存狀態(tài)至圖10的TSU 214,前端語法分析器164也傳送實(shí)體ID、圖元ID、頂點(diǎn)ID(vertex ID)和索引(indices)至適當(dāng)位置以執(zhí)行,另外,前端語法分析器164可執(zhí)行任何所需初始CSP的指令。
并繼續(xù)執(zhí)行圖12的環(huán)緩沖區(qū)1,進(jìn)入下一步流程(步驟306),其中3D流水線的邏輯區(qū)塊與后端語法分析器178溝通,因此意味已經(jīng)執(zhí)行到環(huán)緩沖區(qū)之后端部分,最后,CSP 190執(zhí)行之前處理程序的所有存儲(chǔ)狀態(tài)之后端部分指令(步驟308)。
關(guān)于圖13的流程取得環(huán)緩沖區(qū)的首部和尾部指針以及處理程序會(huì)一直繼續(xù)直到環(huán)緩沖區(qū)的終結(jié)端或是被中斷才會(huì)停止。圖14表示圖7的CSP 190運(yùn)行的流程圖,當(dāng)CSP 190執(zhí)行一環(huán)緩沖區(qū)結(jié)構(gòu)和尋找一環(huán)緩沖區(qū)的終結(jié)指令。關(guān)于圖14的步驟310,CSP 190處于閑置狀態(tài)并等待一環(huán)緩沖區(qū)數(shù)據(jù)以執(zhí)行。在步驟312,相對(duì)應(yīng)于圖13的步驟282,CSP 190取得環(huán)緩沖區(qū)的首部和尾部指針,例如在圖12中,偶運(yùn)行表264的上下文1的環(huán)緩沖區(qū),和等待首部和尾部指針(步驟313),最后參考首部和尾部指針并作填入動(dòng)作(步驟314)。關(guān)于圖13的步驟285,假如遇到一回存上下文指令,會(huì)跳至圖14的步驟316載入回存數(shù)據(jù)(對(duì)應(yīng)于圖13的步驟288),一旦完成載入回存狀態(tài),會(huì)跳至步驟318取得環(huán)緩沖區(qū)并繼續(xù)運(yùn)行(相對(duì)應(yīng)于圖13的步驟289)。
假如在步驟314并不具有一有效回存指令時(shí),會(huì)判斷首部指針是否等于尾部指針,也就是上下文是否為空的,根據(jù)圖13的步驟294,假如首部指針不等于尾部指針,環(huán)緩沖區(qū)具有待處理的程序,因此從步驟314跳至步驟318,在步驟318,現(xiàn)在指針從初始位置移至尾部指針,并且計(jì)算每一次判斷是否現(xiàn)在指針(可能是首部指針)等于尾部指針,隨著不斷處理程序,首部指針或現(xiàn)在指針會(huì)往尾部指針移動(dòng),最后首部指針等于尾部指針,步驟318可以重復(fù)回圈數(shù)次直到現(xiàn)在指針(CUR_PTR)變成尾部指針(TAIL_PTR)。
當(dāng)現(xiàn)在指針或首部指針等于尾部指針時(shí),跳至步驟322,使CSP 190等待尾部指針更新,如圖12所示,假如額外指令或是指針被加入至環(huán)緩沖區(qū),尾部指針是可以被移動(dòng)地,然而,假如尾部指針不被移動(dòng),程序跳到步驟324,這意味到達(dá)環(huán)緩沖區(qū)的終端,CSP 190返回閑置狀態(tài)310并準(zhǔn)備重復(fù)所述的程序。
圖15表示所述第12-14圖的數(shù)據(jù)結(jié)構(gòu),并可應(yīng)用于圖1的GPU 84以回存之前中斷上下文,運(yùn)行表264(出現(xiàn)于圖12)可執(zhí)行如前所述,因此一上下文切換可從上下文0至上下文1。
在存儲(chǔ)器的環(huán)緩沖區(qū)1的數(shù)據(jù)結(jié)構(gòu)265可被存取以回存特定上下文1,類似于所述所述,環(huán)緩沖區(qū)1數(shù)據(jù)結(jié)構(gòu)265包括一瓦片首指針(tile headpointer)266,在處理上下文時(shí),GPU 84會(huì)更新瓦片首指針266,同樣,環(huán)緩沖區(qū)1的數(shù)據(jù)結(jié)構(gòu)265也可包括一環(huán)緩沖區(qū)尾部指針(Ring buffer tailpointer)268,此環(huán)緩沖區(qū)尾部指針268也會(huì)被更新(如圖12),假如在圖15中,將指令和指針加入至環(huán)緩沖區(qū)1數(shù)據(jù)結(jié)構(gòu)里,然后環(huán)緩沖區(qū)尾部指針也會(huì)被調(diào)整。
環(huán)緩沖數(shù)據(jù)取得順序可限定CSP功能只能行使DMA指令指針290的執(zhí)行(請(qǐng)參考圖12所示),CSP 190取得在環(huán)緩沖區(qū)1數(shù)據(jù)結(jié)構(gòu)中的瓦片首指針,(表示于圖15的環(huán)緩沖區(qū)1的數(shù)據(jù)結(jié)構(gòu)),當(dāng)運(yùn)行表264的上下文1在之前被中斷時(shí),CSP 190載入所有跟DMA指令指針290相關(guān)的數(shù)據(jù)至CSP首指針(CSPHEAD PTR),所述CSP首指針指向CSP功能291,并輸入至3D流水線176。
DMA指令指針290是由DMA緩沖結(jié)構(gòu)292組成(并不限訂于此),包含圖形指令0至圖形指令5,在回存上下文時(shí),CSP 190也處理DMA移位(DMAOFFSET)293(類似之前圖5所述),因而可回到之前被中斷時(shí)的正確位置點(diǎn),DMA移位293是一邏輯距離,所述邏輯距離在DMA緩沖結(jié)構(gòu)292中,并介于DMA緩沖首指針和目前指令指針(Current Command POINTER)之間。
在圖15中的例子,CSP 190可得知DMA移位293至圖形指令4的重新開始的位置,圖形指令4可包括多個(gè)實(shí)體(instance),更具體來說,圖形指令4還包括實(shí)體標(biāo)識(shí)符(Instance ID)0-5,并且依序執(zhí)行,在執(zhí)行完實(shí)體5后,會(huì)跳到圖形指令5,圖形指令5和其他圖形指令也都包括多個(gè)實(shí)體。
從運(yùn)行表264重新建立上下文時(shí),CSP 190會(huì)忽略之前執(zhí)行實(shí)體直到上一次中斷的實(shí)體標(biāo)識(shí)符(Instance ID),在本發(fā)明實(shí)施例中(并不限定于此),實(shí)體標(biāo)識(shí)符309指向多個(gè)實(shí)體295的實(shí)體4,因此CSP 190會(huì)忽略所有實(shí)體0-3直到實(shí)體4,因?yàn)閷?shí)體標(biāo)識(shí)符309符合邏輯位置。
各實(shí)體包含一個(gè)或多個(gè)圖元(primitive),如圖元結(jié)構(gòu)296所示依序排列,在不限制的本發(fā)明實(shí)施例中,圖元0-M組成一實(shí)體(M為整數(shù)),直到圖元標(biāo)識(shí)符(Primitive ID)311符合之前中斷位置點(diǎn)時(shí),DMA緩沖結(jié)構(gòu)292的中斷圖形指令4才會(huì)被CSP 190執(zhí)行(和之前所述一樣),在不限制的本發(fā)明實(shí)施例中,圖元標(biāo)識(shí)符311指向圖元1,這意味著圖元0在之前中斷時(shí)已經(jīng)被處理過,所以CSP 190略過圖元0。
各圖元0-M是由一個(gè)或多個(gè)瓦片(Tile)組成的,可以形成一三角結(jié)構(gòu)298,在不限制的本發(fā)明實(shí)施例中,圖元2可包含瓦片0-8以構(gòu)成三角結(jié)構(gòu)298,瓦片產(chǎn)生器TG 226會(huì)略過瓦片0-3直到瓦片標(biāo)識(shí)符(Tile ID)參考的瓦片4,瓦片4也就是之前中斷位置點(diǎn)。
使用所述方法,圖15的數(shù)據(jù)結(jié)構(gòu)表示至少一方法回存一圖形處理至之前被中斷的位置點(diǎn),經(jīng)由CSP 190略過圖形指令、實(shí)體、圖元和TG 226所略過的瓦片,直到上次上下文被中斷所存儲(chǔ)的標(biāo)識(shí)符ID,并正確快速地回到上次被中斷的點(diǎn),以避免重復(fù)處理之前處理過的數(shù)據(jù)。
圖16表示當(dāng)回存一上下文時(shí),CSP 190執(zhí)行程序的流程圖252,圖16的流程圖252包括圖11的步驟253、256和258,并也著重于精確上下文回存的程序上。
在圖16的步驟300中,CSP 190從環(huán)緩沖區(qū)取得回存上下文,所述環(huán)緩沖區(qū)可以是第12和圖15的環(huán)緩沖區(qū)265,存取環(huán)緩沖區(qū)265的瓦片首指針206以便得知正確上下文的從新開始地址或環(huán)緩沖區(qū)265的邏輯位置,在不限制圖15的本發(fā)明實(shí)施例中,瓦片首指針指向DMA指令指針290。
步驟304,CSP 190處理DMA指令,類似之前所述,利用DMA移位293移動(dòng)至DMA緩沖結(jié)構(gòu)的正確圖形指令(如圖15所示),一旦確定正確圖形指令(如圖15的圖形指令4),CSP 190采取下一步驟307,配對(duì)實(shí)體標(biāo)識(shí)符(InstanceID)和圖元標(biāo)識(shí)符(Primitive ID),配對(duì)后,CSP 190辨識(shí)到之前所中斷的地址,也就是之前中斷的三角形(triangle)位置。
此時(shí)CSP 190可辨識(shí)之前程序被中斷的瓦片ID 317,因此瓦片產(chǎn)生器226(圖10)可完成處理三角形區(qū)(如步驟315顯示),在確認(rèn)辨識(shí)DMA指令、圖形指令、實(shí)體ID、圖元ID和瓦片ID之后,上下文可被完全回存至3D流水線176中,猶如之前沒有被中斷情形。
由于之前中斷而上下文被改變,在一實(shí)體中的部分三角形已經(jīng)被執(zhí)行,三角形標(biāo)識(shí)符(triangle ID)可能被傳送至TSU 214,一圖形圖元的各三角形各具有一獨(dú)一無二的三角形標(biāo)識(shí)符,當(dāng)上下文被中斷時(shí),有可能其中部分三角形或是全部三角形被執(zhí)行,在這個(gè)實(shí)體中,一鑲嵌三角形標(biāo)識(shí)符(Tessellated Triangle ID)313(可能是從別的單元產(chǎn)生出來)可傳送至TSU214以恢復(fù)部分被執(zhí)行的圖元并加以處理(圖16的步驟319),因而正確三角形(triangle)傳送至瓦片產(chǎn)生器226,并可和相關(guān)瓦片標(biāo)識(shí)符(tile ID)作匹配(如前所述),無論圖元已經(jīng)被鑲鉗與否,之前中斷上下文動(dòng)作可以變成好像之前無中斷的情形。
因此本發(fā)明主要著重于上下文的結(jié)構(gòu)和切換,當(dāng)接收到來自圖1處理單元16的中斷指令時(shí),包括可提供精準(zhǔn)恢復(fù)的數(shù)據(jù)結(jié)構(gòu),然而當(dāng)一上下文被中斷時(shí),GPU 84或者更明確是圖10的3D流水線176,應(yīng)該可在一邏輯點(diǎn)上,終結(jié)中斷程序,因此下一程序(無論是否回存)根據(jù)所述程序,可以被3D流水線176執(zhí)行。
根據(jù)本發(fā)明實(shí)施例,一上下文可以被存儲(chǔ)以及一新上下文在約一或兩百萬周期后開始,因?yàn)楸仨毺峁┳銐蜉喸儠r(shí)間(wrap-up time)給一些程序,以便減少追蹤狀態(tài)和減少當(dāng)一存儲(chǔ)狀態(tài)被重新開始時(shí)的復(fù)雜度,因此,一邏輯位置會(huì)中斷在圖103D流水線176的瓦片產(chǎn)生器226上,然而,另一位置可能不是在瓦片產(chǎn)生器226上而是在ZL1單元230上,也可以應(yīng)用同樣的方法和標(biāo)識(shí)符,并將存儲(chǔ)的瓦片標(biāo)識(shí)符在ZL1單元230上進(jìn)行比較。
然而,根據(jù)不限定的本發(fā)明實(shí)施例,中斷點(diǎn)可以在瓦片產(chǎn)生器226上,任何被瓦片產(chǎn)生器226所接收的瓦片(tile),要到處理單元16告知上下文切換時(shí),才會(huì)可被允許傳送至其他流水線單元(包括ZL1單元230和隨后的單元),以穿過整個(gè)3D流水線176。然而,任一還未到達(dá)瓦片產(chǎn)生器226的三角形(triangle)和瓦片(tile),當(dāng)GPU 84接收到中斷指令時(shí),當(dāng)上下文被回存時(shí),會(huì)丟棄現(xiàn)有程序并重新產(chǎn)生回存的程序。換句話說,當(dāng)上下文被回存時(shí),在3D流水線176單元中,于瓦片產(chǎn)生器226之前元件,會(huì)丟棄所有現(xiàn)有處理程序,并重新產(chǎn)生回存的程序(請(qǐng)參考圖8)。
當(dāng)中斷發(fā)生時(shí)(在瓦片產(chǎn)生器226上),除了非常長(zhǎng)的像素著色器程序(pixel shader program),3D流水線176可以繼續(xù)處理所有在瓦片產(chǎn)生器226之后的瓦片(tile)(因?yàn)槟茉谝换騼砂僦芷趦?nèi)完成)。但如果中斷在圖10的三角建立單元TSU 214,3D流水線176可能不能在一至三百萬毫秒內(nèi)處理完數(shù)據(jù)。假如中斷程序的大小比瓦片(tile)還小,并不會(huì)對(duì)流水線很快處理數(shù)據(jù)造成很大的影響。經(jīng)由中斷于流水線的瓦片產(chǎn)生器上,一部份處理程序仍然可以繼續(xù),一部份處理程序可能要被廢除,并且被中斷點(diǎn)會(huì)被存儲(chǔ),以供下一次重新開始時(shí)使用,根據(jù)非限定的本發(fā)明實(shí)施例,使得一些數(shù)據(jù)被語法分析以及重復(fù),使得3D流水線176可以正確回存至上次中斷點(diǎn)。
根據(jù)本發(fā)明不限定的實(shí)施例,無論何時(shí)DMA緩沖器(context)切換,CSP190可經(jīng)由傳送一代符(token)(internal fence)穿過3D流水線176,至瓦片產(chǎn)生器226,并回到CSP 190以得知那里指令分析以重新啟動(dòng)一上下文。根據(jù)本發(fā)明非限定的實(shí)施例,CSP 190知道什么時(shí)候可以安全地忽略一DMA緩沖區(qū)292。本發(fā)明非限定的實(shí)施例也提供紀(jì)錄對(duì)應(yīng)于瓦片產(chǎn)生器226上DMA緩沖區(qū)的位置,并提供新圖形指令,如圖12所示。因此當(dāng)一上下文,例如在圖12偶運(yùn)行表的上下文1,被依序回存,語法分析可從被中斷的圖形指令開始,例如在緩沖區(qū)292的圖形指令0。
圖17表示325流程圖,圖10的CSP 190可到步驟329并中斷一上下文并重新另一上下文于圖10的3D流水線176中,在步驟326中,也和圖2的步驟101相同,一目前上下文被處理到完,如前所述,例如圖13的步驟294。當(dāng)上下文被處理至步驟326時(shí),會(huì)檢測(cè)是否有中斷事件發(fā)生(步驟327),假如沒有中斷事件發(fā)生,上下文會(huì)繼續(xù)執(zhí)行到完(步驟326)。
假如一中斷事件發(fā)生并且被檢測(cè)到(步驟327),CSP 190進(jìn)入步驟329并電性傳送一中斷信號(hào)至一個(gè)或多個(gè)3D流水線176的處理區(qū)塊。如前所述,由于清除流水線上半部區(qū)塊的延遲時(shí)間,可能導(dǎo)致不完整的上下文切換時(shí)間,所以流水線的特定上半部區(qū)塊的數(shù)據(jù)可以被忽略,而流水線下半部區(qū)塊則繼續(xù)處理程序。步驟329提供一預(yù)先決定3D流水線176的區(qū)塊數(shù)量以接收來自CSP的一中斷信號(hào)。
另外產(chǎn)生一中斷信號(hào)于步驟329上,CSP 190也會(huì)產(chǎn)生一中斷代符(token)至3D流水線176的先進(jìn)先出存儲(chǔ)器,步驟331,所述代符(token)功能像是一柵欄于一中斷上下文和下一中斷上下文或回存上下文之間,例如圖15的運(yùn)行表264,中斷代符/柵欄會(huì)傳送至3D流水線176的各區(qū)塊,使切換下一上下文的可以順利完成。
如前所述,目前DMA移位293、實(shí)體標(biāo)識(shí)符309、圖元標(biāo)識(shí)符311和瓦片標(biāo)識(shí)符317可傳送至CSP上下文存儲(chǔ)緩沖區(qū)111(圖3),也可以是圖7的狀態(tài)先進(jìn)先出存儲(chǔ)器194,更具體來說,3D流水線176使用途徑207、209等等...,以傳送信息至CSP 190,如前所述。
之后,在步驟334中,各3D流水線結(jié)構(gòu)區(qū)塊176,例如一個(gè)或多個(gè)圖10的區(qū)塊,仍讓舊上下文進(jìn)入3D流水線176,直到中斷代符產(chǎn)生(步驟331)并且到達(dá)以及確認(rèn)后,舊上下文才會(huì)被中斷,換句話說,當(dāng)一接收到來自步驟329所產(chǎn)生的中斷信號(hào)后,直到接收到中斷代符(步驟334)才丟棄相關(guān)先進(jìn)先出存儲(chǔ)器的數(shù)據(jù),所述中斷代符通知所有之后指令屬于下一狀態(tài)或回存狀態(tài)(步驟336)。
根據(jù)圖10和圖18-23,并參考3D流水線176的各元件,以下會(huì)詳細(xì)說明圖17的流程圖。從圖10開始,當(dāng)GPU 84接收到來自處理單元16的中斷指令以中斷一已經(jīng)在處理的程序時(shí),CSP 190經(jīng)由接線中斷線331傳送接線信號(hào)(hardwired signal)至執(zhí)行單元池前端模塊(Execution Unit Pool FrontModule,EUP_FRONT)212,如圖10所示,接線中斷線331也電連接瓦片產(chǎn)生器226,如圖10所示,另外,接線中斷線331也耦接三角建立單元TSU 214和屬性建立單元ASU 218,并對(duì)應(yīng)于圖17的步驟329。
瓦片產(chǎn)生器226可利用一記數(shù)器以得知瓦片的數(shù)量,和流水線寄存器以得知上一次瓦片被丟棄的三角形數(shù)量和圖元數(shù)量,并將信息經(jīng)由數(shù)據(jù)途徑207傳送回CSP 190,并存儲(chǔ)為一部分的中斷上下文狀態(tài),此信息存儲(chǔ)包括GPU在下一次上下文回存時(shí)的位置信息。
在接線中斷線331上的接線中斷信號(hào)也傳送至三角建立單元TSU 214和屬性建立單元ASU 218,一旦接收到接線中斷信號(hào),各三角建立單元214、屬性建立單元218和瓦片產(chǎn)生器TG 226會(huì)立即丟棄所有在處理的數(shù)據(jù),并進(jìn)一步停止特定上下文,如圖17步驟334所示,CSP 190,另外發(fā)出一中斷信號(hào)于接線中斷線331上,并傳送一中斷終結(jié)代符(INT_END Token)穿過3D流水線176以清除所有數(shù)據(jù)線上的數(shù)據(jù)流,如圖17步驟331所示,所述中斷終結(jié)代符(INT_END Token)從CSP 190先傳送至三角建立單元214、再到屬性建立單元218以及3D流水線176的其他部分。
圖18表示三角建立單元輸入解碼器214接收到一中斷終結(jié)信號(hào)的運(yùn)行流程圖340,CSP 190發(fā)出一中斷終結(jié)代符經(jīng)由接線中斷線331至執(zhí)行單元池前端模塊EUP_FRONT 212,然而,同時(shí)CSP 190傳送一中斷信號(hào)終結(jié)代符穿過CSP先進(jìn)先出存儲(chǔ)器211,所述CSP先進(jìn)先出存儲(chǔ)器211耦接三角建立單元TSU 214,因此三角建立單元214進(jìn)行步驟342從接線中斷線331接收接線中斷信號(hào)以檢查CSP先進(jìn)先出存儲(chǔ)器211的輸入數(shù)據(jù)類型(Entry Type)。
當(dāng)接收到接線中斷線331上的中斷線號(hào)時(shí)(如圖18的CSP_TSU_INT信號(hào)),三角建立單元214進(jìn)入步驟346,三角建立單元214讀取read、檢查check和丟棄discard EUP FIFO存儲(chǔ)器347的數(shù)據(jù),EUP FIFO存儲(chǔ)器347是將存儲(chǔ)于EUP_FRONT執(zhí)行單元池前端模塊212的數(shù)據(jù)傳送至三角建立單元214,三角建立單元212執(zhí)行一丟棄回圈DISCARD LOOP,如圖18所示丟棄EUPFIFO存儲(chǔ)器347的上下文直到中斷終結(jié)代符到達(dá),所述中斷終結(jié)代符到達(dá)代表所有關(guān)于上下文的數(shù)據(jù)被存儲(chǔ)起來。
當(dāng)中斷終結(jié)代符CSP_TSU_INT END TOKEN到達(dá)EUP_FIFO存儲(chǔ)器347,三角建立單元214去讀取read、檢查check和丟棄discard CSP FIFO存儲(chǔ)器211的內(nèi)容,如同所述EUP_FIFO存儲(chǔ)器347運(yùn)行方式(圖18的步驟348),三角建立單元214執(zhí)行一丟棄回圈以丟棄所有在CSP FIFO存儲(chǔ)器211的數(shù)據(jù)直到代表所有關(guān)于上下文的數(shù)據(jù)被存儲(chǔ)起來的中斷終結(jié)代符到達(dá),總之,本領(lǐng)域的技術(shù)人員皆熟悉關(guān)于上下文被中斷的數(shù)據(jù)如何在3D流水線176中被丟棄,三角建立單元214可回到正常運(yùn)行模式(步驟343)以處理下一上下文。
關(guān)于DUMP RESET-QUERY STATE M/C步驟350,圖19表示在3D流水線176中轉(zhuǎn)儲(chǔ)/重置/詢問(dump/reset/query)狀態(tài)機(jī)制(DRQ state machine)的執(zhí)行,DRQ狀態(tài)機(jī)制開始于正常操作模式352,一旦指令一執(zhí)行,DRQ狀態(tài)機(jī)制進(jìn)入步驟354,步驟354是關(guān)于CSP指令解碼操作,告知DRQ狀態(tài)機(jī)制(例如TSU 214)下一個(gè)作什么,當(dāng)中斷終結(jié)代符被接收,例如三角建立單元214接收到中斷終結(jié)代符INT_END TOKEN(步驟356),即傳送中斷終結(jié)代符至3D流水線176,之后三角建立單元214回到正常操作模式352,視為新上下文。
關(guān)于圖18和三角建立單元214,在中斷終結(jié)代符處理完后,將注意力轉(zhuǎn)移到圖10屬性建立單元218上。如前所述,屬性建立單元218也接收在接線中斷線331上的中斷線號(hào),并通知屬性建立單元218立刻丟棄所有關(guān)于目前上下文的內(nèi)容。
圖20表示流程圖360,當(dāng)接收到接線中斷線331上的中斷線號(hào),屬性建立單元ASU 218執(zhí)行程序,屬性建立單元218一旦接收到中斷信號(hào),屬性建立單元218讀取read、檢查check和丟棄discard圖10的TSU_FIFO存儲(chǔ)器215的數(shù)據(jù)(步驟364),更具體來說,屬性建立單元218執(zhí)行一丟棄回圈discard loop,以丟棄TSU_FIFO存儲(chǔ)器215的內(nèi)容,直到三角建立單元214的中斷終結(jié)代符到達(dá)。如前所述,當(dāng)屬性建立單元的DRQ狀態(tài)機(jī)制接收到中斷終結(jié)代符INT_ENDTOKEN,執(zhí)行步驟366,其中中斷終結(jié)代符傳送至各ASU_FIFO存儲(chǔ)器220、ASU/ZLI FIFO存儲(chǔ)器219和AFIFO存儲(chǔ)器223,之后屬性建立單元218回到步驟362以檢查在TSU FIFO存儲(chǔ)器215的下一指令類型(可能是和新上下文執(zhí)行有關(guān)),之后回到正常程序368。
如前所述,屬性建立單元218傳送中斷終結(jié)代符至ASU FIFO存儲(chǔ)器220,最后傳送至范圍產(chǎn)生單元(Span generator unit,SG)222,圖21表示范圍產(chǎn)生單元222執(zhí)行程序的流程圖370,是有關(guān)于處理圖103D流水線176的中斷終結(jié)代符,當(dāng)范圍產(chǎn)生單元222操作在正常模式372時(shí),一旦檢查到輸入類型(步驟374)并且辨識(shí)出來自ASU FIFO存儲(chǔ)器220的指令為中斷終結(jié)代符時(shí),范圍產(chǎn)生單元222進(jìn)入步驟376,在步驟376中,中斷終結(jié)代符傳送至瓦片產(chǎn)生器TG 226,之后導(dǎo)致范圍產(chǎn)生單元222回到步驟374檢查下一指令的類型,下一上下文指令會(huì)在終端終結(jié)代符之后,范圍產(chǎn)生單元222回到正常模式372。
如前所述,在處理單元16發(fā)出指令之后,瓦片產(chǎn)生器226接收來自CSP190在接線中斷線331上的接線中斷信號(hào),圖22表示瓦片產(chǎn)生器226接收到來自圖10的CSP 190的中斷指令以執(zhí)行程序的流程圖380,當(dāng)接線中斷信號(hào)經(jīng)由接線中斷線331傳送至瓦片產(chǎn)生器226時(shí),瓦片產(chǎn)生器226進(jìn)入步驟382以檢查首類型和檢查關(guān)于來自CSP 190的中斷指令。
一旦檢查出接收到一中斷信號(hào)CSP_TG_INT WIRE SIGNAL,瓦片產(chǎn)生器226進(jìn)入步驟384并立刻傳送一瓦片產(chǎn)生中斷代符TG_INT TOKEN至圖10的Z單元位階一區(qū)塊(ZL1)230,本領(lǐng)域的技術(shù)人員皆熟悉傳送至Z單元位階一區(qū)塊230的瓦片產(chǎn)生中斷代符是來自于之前3D流水線176內(nèi)傳送的中斷終結(jié)代符,瓦片產(chǎn)生中斷代符會(huì)導(dǎo)致清除所有耦接瓦片產(chǎn)生器226的FIFO存儲(chǔ)器和寄存存儲(chǔ)器,但也容許存儲(chǔ)相關(guān)上下文于處理瓦片產(chǎn)生中斷代符之前。
在步驟386中,瓦片產(chǎn)生器226執(zhí)行一丟棄回圈DISCARD LOOP以丟棄輸入數(shù)據(jù)并檢查是否有中斷終結(jié)代符,最后執(zhí)行步驟386,中斷終結(jié)代符INT_END TOKEN經(jīng)由圖10的3D流水線176到達(dá)瓦片產(chǎn)生器226,此時(shí)瓦片產(chǎn)生器226進(jìn)入步驟388,運(yùn)行方式和之前所述類似,之后瓦片產(chǎn)生器226檢查下一指令的首類型并可回到正常模式389(有可能是回存新上下文執(zhí)行)。
在圖10的3D流水線176的下一模塊是Z單元位階一區(qū)塊(ZL1)230。圖23表示Z單元位階一區(qū)塊230的流程圖390,系有關(guān)于接收來自瓦片產(chǎn)生單元226的瓦片產(chǎn)生中斷代符。
在步驟392(讀取和解碼),Z單元位階一區(qū)塊ZL1 230讀取來自瓦片產(chǎn)生單元226的數(shù)據(jù)并處理所接收的指令,然而,當(dāng)接收來自瓦片產(chǎn)生器226的指令為一瓦片產(chǎn)生中斷代符TG_INT TOKEN時(shí),Z單元位階一區(qū)塊ZL1 230進(jìn)入步驟394。
在步驟394中,Z單元位階一區(qū)塊ZL1 230切換至ASU/ZL1 FIFO存儲(chǔ)器219,之后執(zhí)行一丟棄回圈DISCARD LOOP,如步驟396所示,在步驟396中,Z單元位階一區(qū)塊230檢查并丟棄所有來自ASU/ZL1 FIFO存儲(chǔ)器219的數(shù)據(jù)直到3D流水線176的中斷終結(jié)代符到達(dá)。當(dāng)接收到中斷終結(jié)代符后,Z單元位階一區(qū)塊ZL1 230進(jìn)入步驟398,切換至AFIFO存儲(chǔ)器223,之后執(zhí)行一丟棄回圈401。
Z單元位階一區(qū)塊230檢查并丟棄所有在AFIFO存儲(chǔ)器230的數(shù)據(jù)直到AFIFO存儲(chǔ)器230的中斷終結(jié)代符到達(dá)(步驟401),在清除兩FIFO存儲(chǔ)器219和223后,Z單元位階一區(qū)塊230切換至TG FIFO存儲(chǔ)器227(步驟403),并執(zhí)行另一丟棄回圈(步驟405),在步驟405中,Z單元位階一區(qū)塊230檢查和丟棄所有來自TG FIFO的數(shù)據(jù)直到中斷終結(jié)代符到達(dá)(和之前所述類似),之后,DRQ狀態(tài)機(jī)制(步驟407)執(zhí)行(和之前所述類似),因此Z單元位階一區(qū)塊230回到步驟392以執(zhí)行中斷終結(jié)代符后的下一指令,之后,Z單元位階一區(qū)塊230于正常模式下執(zhí)行下一上下文(步驟409)。
如前所述,在Z單元位階一區(qū)塊ZL1 230接收中斷終結(jié)代符后,傳送至ZL1 FIFO存儲(chǔ)器232,并傳送至Z單元位階二區(qū)塊ZL2 234,和之前所述不同,Z單元位階二區(qū)塊234不會(huì)丟棄所有FIFO存儲(chǔ)器數(shù)據(jù),反而會(huì)繼續(xù)處理存儲(chǔ)的上下文(一至兩百萬周期內(nèi)的程序),然而來自Z單元位階二區(qū)塊234的中斷終結(jié)代符代表存儲(chǔ)上下文的終點(diǎn),并且是一新和/或回存上下文的開始。
本領(lǐng)域的技術(shù)人員皆了解中斷終結(jié)代符還傳送至3D流水線176的其他部分,如前所述,中斷終結(jié)代符可傳送至另一個(gè)3D流水線176元件以清除所有相關(guān)數(shù)據(jù)線。
因此,如前所述,圖形處理器的圖形流水線可改變狀態(tài)或處理程序,以增加處理圖形程序的效率,并且當(dāng)一處理程序必須等待另一數(shù)據(jù)的處理時(shí)間,圖形流水線可以中斷并切換至另一上下文,以避免流水線閑置,因此經(jīng)由解決圖形流水線運(yùn)行的瓶頸,圖形流水線可以更有效率運(yùn)行,另外本發(fā)明非限定的實(shí)施例可在不同上下文之間快速切換,以避免瓶頸情況的發(fā)生。
本發(fā)明雖以優(yōu)選實(shí)施例公開如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,可進(jìn)行更動(dòng)與修改,因此本發(fā)明的保護(hù)范圍以所提出的權(quán)利要求所限定的范圍為準(zhǔn)。
權(quán)利要求
1.一種可中斷圖形處理單元處理多個(gè)程序的方法,包括接收一包含多個(gè)上下文的第一運(yùn)行表以執(zhí)行;初始一包括關(guān)于在所述第一運(yùn)行表的上下文的指令和數(shù)據(jù)的緩沖區(qū)的程序;獲取一圖形處理單元存儲(chǔ)器存取指令和一指針,所述圖形處理單元存儲(chǔ)器存取指令來自所述緩沖區(qū),所述指針是指向關(guān)于所述緩沖區(qū)的圖形數(shù)據(jù);傳送所述指針至一個(gè)或多個(gè)結(jié)構(gòu)處理單元,以存取寄存狀態(tài)于所述圖形處理單元中;切換至所述第一運(yùn)行表的一另一緩沖區(qū)以處理關(guān)于另一緩沖區(qū)的數(shù)據(jù),以及;當(dāng)一最后緩沖區(qū)的運(yùn)行表是空的,切換至另一運(yùn)行表。
2.如權(quán)利要求1所述的可中斷圖形處理單元處理多個(gè)程序的方法,還包括決定是否所述緩沖區(qū)包含一回存指令,假如所述緩沖區(qū)包含一回存指令時(shí),從存儲(chǔ)器獲取關(guān)于所述緩沖區(qū)的存儲(chǔ)狀態(tài)數(shù)據(jù)。
3.如權(quán)利要求1所述的可中斷圖形處理單元處理多個(gè)程序的方法,還包括獲取關(guān)于一緩沖區(qū)的一首和尾部指針,決定在所述緩沖區(qū)中是否一預(yù)先決定邏輯位置是跳躍指令或回存指令,假如所述預(yù)先決定邏輯位置是一回存指令,從存儲(chǔ)器中取出存儲(chǔ)狀態(tài)數(shù)據(jù)。
4.如權(quán)利要求1所述的可中斷圖形處理單元處理多個(gè)程序的方法,還包括根據(jù)執(zhí)行所述圖形處理單元存儲(chǔ)器存取指令,處理在緩沖區(qū)的一目前位置。
5.如權(quán)利要求1所述的可中斷圖形處理單元處理多個(gè)程序的方法,還包括在所述圖形處理單元的一處理流水線中,從一指令處理器傳送關(guān)于所述緩沖區(qū)的處理數(shù)據(jù)的一存儲(chǔ)器存取移位值和寄存狀態(tài)至一三角建立單元,以及;傳送一實(shí)體標(biāo)識(shí)符、一圖元標(biāo)識(shí)符、一瓦片標(biāo)識(shí)符至一處理單元,以處理關(guān)于所述緩沖區(qū)的數(shù)據(jù)。
6.如權(quán)利要求1所述的可中斷圖形處理單元處理多個(gè)程序的方法,還包括在所述圖形處理單元的一處理流水線中,從一指令處理器傳送關(guān)于一鑲鉗圖元的一三角形標(biāo)識(shí)符至一三角建立單元。
7.如權(quán)利要求1所述的可中斷圖形處理單元處理多個(gè)程序的方法,還包括決定是否一首指針等于一尾部指針,所述首指針是有關(guān)于所述緩沖區(qū)的一處理位置,所述尾部指針也和所述緩沖區(qū)有關(guān);假如所述首指針等于尾部指針,標(biāo)明所述緩沖區(qū)為一空集合,以及;假如所述首指針不等于所述尾部指針,處理一個(gè)或多個(gè)根據(jù)所述指針指向的一緩沖區(qū)的圖形功能和圖形處理單元功能指令。
8.如權(quán)利要求7所述的可中斷圖形處理單元處理多個(gè)程序的方法,還包括處理所述緩沖區(qū)的所有圖形處理單元功能指令,所述首指針移動(dòng)一邏輯方向,所述首指針會(huì)靠近所述尾部指針,直到到達(dá)和所述尾部指針一樣的邏輯值。
9.如權(quán)利要求7所述的可中斷圖形處理單元處理多個(gè)程序的方法,還包括假如一個(gè)或多個(gè)額外圖形處理單元功能指令或指針被加入所述緩沖區(qū),移動(dòng)所述尾部指針至一新邏輯位置。
10.一種圖形處理單元,適用于處理多個(gè)程序,包括一處理器,經(jīng)由耦合至所述處理器的一圖形流水線來控制數(shù)據(jù)的處理;其中所述圖形處理單元建立上下文的一運(yùn)行表以執(zhí)行、獲取關(guān)于一第一上下文的一個(gè)或多個(gè)指令和一個(gè)或多個(gè)指針,以供所述圖形流水線執(zhí)行、傳送所述一個(gè)或多個(gè)指令和一個(gè)或多個(gè)指針至所述圖形流水線,以供所述圖形流水線處理,其中關(guān)于所述一個(gè)或多個(gè)指令和一個(gè)或多個(gè)指針的數(shù)據(jù)被所述圖形流水線執(zhí)行,直到中斷和所述第一上下文為一空集合為止的一者、以及假如在運(yùn)行表的所有上下文為空集合,切換所述處理器至在所述運(yùn)行表的另一上下文或另一運(yùn)行表。
11.如權(quán)利要求10所述的圖形處理單元,還從所述處理器的一前端語法分析器傳送所述一個(gè)或多個(gè)指針至所述圖形流水線。
12.如權(quán)利要求10所述的圖形處理單元,假如所述首指針不等于所述尾部指針,還獲取關(guān)于在運(yùn)行表的一第一上下文和一存儲(chǔ)器存取指令的一首和尾部指針。
13.如權(quán)利要求12所述的圖形處理單元,假如一個(gè)或多個(gè)額外指令或指針被加入至所述第一上下文,還移動(dòng)所述尾部指針至一新邏輯位置。
14.如權(quán)利要求10所述的圖形處理單元,在執(zhí)行完一指令后,還決定是否所述首指針等于所述尾部指針,假如所述首指針等于所述尾部指針,即到達(dá)上下文的一尾部端,假如所述首指針不等于所述尾部指針,執(zhí)行一下一指令或指針。
15.如權(quán)利要求10所述的圖形處理單元,還決定被執(zhí)行的一數(shù)據(jù)結(jié)構(gòu)中是否包含具有一回存指令的一目前上下文,假如所述數(shù)據(jù)結(jié)構(gòu)包含一回存指令,獲取關(guān)于一回存狀態(tài)和上下文的所有狀態(tài)數(shù)據(jù)。
16.如權(quán)利要求15所述的圖形處理單元,還獲取關(guān)于所述目前上下文的所述回存狀態(tài)的一個(gè)或多個(gè)存儲(chǔ)器存取指令,并處理關(guān)于回存狀態(tài)至所述目前上下文的完成。
17.如權(quán)利要求16所述的圖形處理單元,當(dāng)關(guān)于回存狀態(tài)的所述目前上下文被完成時(shí),所述運(yùn)行表切換至下一上下文。
18.如權(quán)利要求16所述的圖形處理單元,其中所述圖形流水線中所述一個(gè)或多個(gè)存儲(chǔ)器存取指令被傳送至一個(gè)或多個(gè)結(jié)構(gòu)單元,以恢復(fù)所述回存狀態(tài)和上下文于之前發(fā)生中斷的一準(zhǔn)確點(diǎn)上。
19.如權(quán)利要求10所述的圖形處理單元,當(dāng)所述第一上下文被完成時(shí),傳送一中斷指令至一中央處理器,所述中央處理器耦合至所述圖形處理單元。
全文摘要
當(dāng)圖形處理單元接收到指令,中斷處理第一上下文和初始處理第二上下文,使得圖形處理單元可處理多個(gè)程序。中央處理器產(chǎn)生具有多個(gè)上下文的一運(yùn)行表,圖形處理單元存儲(chǔ)具有多個(gè)上下文的一運(yùn)行表并加以執(zhí)行,各上下文具有一環(huán)緩沖區(qū)的指令和指針以供執(zhí)行。圖形處理單元初始運(yùn)行表的第一上下文,并獲取存儲(chǔ)器存取指令和關(guān)于第一上下文的指針參考的數(shù)據(jù)。圖形處理單元流水線處理關(guān)于第一上下文的數(shù)據(jù),直到第一上下文為空集合或中斷發(fā)生。假如空集合發(fā)生,圖形處理單元切換至運(yùn)行表的下一上下文,以處理下一上下文,當(dāng)運(yùn)行表的最后一上下文完成,圖形處理單元可切換至另一運(yùn)行表的新上下文執(zhí)行。
文檔編號(hào)G06T15/00GK1912926SQ200610110750
公開日2007年2月14日 申請(qǐng)日期2006年8月11日 優(yōu)先權(quán)日2005年11月10日
發(fā)明者黃錫霖, 蒂莫·帕爾塔舍夫, 約翰·布拉澤斯 申請(qǐng)人:威盛電子股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
大化| 自治县| 东阳市| 宁陕县| 读书| 乌审旗| 南城县| 永善县| 同心县| 香港 | 绍兴市| 故城县| 和硕县| 西乌珠穆沁旗| 福清市| 成武县| 汝南县| 邵东县| 桂东县| 高唐县| 无为县| 浙江省| 西乌珠穆沁旗| 拉萨市| 慈利县| 邛崃市| 长葛市| 晋城| 河南省| 红安县| 宁夏| 迁安市| 罗山县| 新绛县| 尼勒克县| 德州市| 许昌县| 杂多县| 阿鲁科尔沁旗| 阿拉善右旗| 崇阳县|