TWI323431B - Interruptible gpu and method for processing multiple contexts and runlists - Google Patents
Interruptible gpu and method for processing multiple contexts and runlists Download PDFInfo
- Publication number
- TWI323431B TWI323431B TW095137101A TW95137101A TWI323431B TW I323431 B TWI323431 B TW I323431B TW 095137101 A TW095137101 A TW 095137101A TW 95137101 A TW95137101 A TW 95137101A TW I323431 B TWI323431 B TW I323431B
- Authority
- TW
- Taiwan
- Prior art keywords
- thread
- processing unit
- buffer
- memory
- indicator
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Description
1323431 九、發明說明: 【發明所屬之技術領域】 本發明係有關於繪圖處理,特別是有關於一種儲存和 回存執行緒(context)於繪圖處理單元的方法和系統。 【先前技術】
目前所知的電腦系統一般包括多個處理器,例如:電 腦系統中除了中央處理器(Central Processing Unit,CPU)執 行處理程序之外,另外電腦系統更具有一繪圖處理單元 (Graphics Processing Unit,GPU)用以減少 CPU 的負擔,使 CPU減少處理程序的負荷。在一些應用中,處理器(例如: GPU)可設置在電腦系統主機板上並且在cpu旁。而在另 一應用中,GPU和/或其他相關裝置可設置在一分離但電性 連接的卡上,例如:GPU在一顯示卡上,關於上述應用, 熟悉此技藝之人士皆熟知此應用。 輔助處理器(coprocessor) ’例如:Gpu,可存取例如顯 示卡記憶體之額外記,It體’以執行處理程序。再者,並足 辅助處理器可以被設計以及最佳化來執行特殊處理程序。 對於GPU來說,GPU可以被最佳化以執行三維圖形計算, 所以GPU可以應用於複雜的_計算上。_傳統電 統和輔助處理器只能勝任執行單—複雜圖形之應用,、
行多個複雜圖形之應用時’傳統電腦系統和辅助處 能會遭遇到一些問題。 ° T 對於一般辅助處理器而言 TT^ Docket No: 〇6〇8-A40799TWfiTDavidchen 排序本身工作流程並未使 用最有效率的方法。在一些作業系統中,GPU可以多工, 其方法是將待處理的工作依序送至GPU,GPU會依序執行 所接收到的工作。然而,這方法有一個問題就是無法妥善 ,理使用同一資源的多個應用程式的優先順序。在一非限 疋的例子中’當第一應用程式正在使用GPU輔助處理器時 必須父出控制權給另一應用程式以完成他們的共同處理目 標。假如當第一應用程式完成相關計算程序,但如果第一 應用程式不交出控制權給另一個等待的應用程式,GPTJ會 被第—應用程式給佔住,而等待的應用程式則會遇到無法 使用GPU的問題。如之前所述,當只有使用單一複雜圖形 應用程式時,上述問題並不會太嚴重,然而,佔住Gpu或 其他共同處理器資源的問題,在多個應用程式同時都想使 用GPU時’這個問題就會被突顯出來。 4關於分配處理不同應用程式的構想,可以藉由使用中 斷C P U的方式,也就是執行緒内容從一任務跳到另一任務 來完成。更具體來說,利用較新型的GPU以執行執行緒内 ,士儲存/回存的構想,係利用儲存相關暫存器和程式 器資料續執行之前被巾斷的處雜序。然而關於咖 如何分配處理程序的問題已經被探討,但是關於輔助 器如何分配處理程序之前並無完整探討。 關於上述分配處理程序的問題,至少有—理 助微處理器(例如GPU)可使CPU避免執行複雜計算=耗, 的程序,使CPU可以執行其他任務。圖形處理往往包括^ 雜的計算,因此會使用大量處理程序的資源,當複=圖= TT's Docket No: 0608-A40799TWfTDavidchen 1323431 應用程式增加時’ GPU會被設計成更大更複雜,以鹿付複 雜計算。 _ 關於如何精確中斷CPU,具有平行處理功能單元以及 排序執行功能單元之巨大複雜架構EPIC型(Explicitly Parallel Instruction Computing)CPU 會有一些問題,因此 CPU架構中的暫存器必須被重新設計,使得數十個指令可 同時執行於處理管線(pipeline)之不同階段。為了使精確中 ❿斷成為可能,CPU必須具有一重新排序緩衝器和一額外執 行指令(instruction commit (retirement))於處理管線中。 目前GPU是使用不同型指令(可稱為巨集指令),執行 各GPU指令需要數百到數千週期,目前利用Gpu管線來 處理圖形的比重已經超過CPU來處理圖形的比重,因此 GPU往往會遇到因為不具有足夠處理架構來處理大量資料 於儲存和回存’所以目前大部分GPU朝著在任何時間點上 皆可處理大:!:資料的方向在設計’使得GPU在分配程序上 φ 變的複雜。更具體來說,GPU採用具有長序列資料之外 來指令,例如:繪圖圖元(draw primitive),因而產生關於 如何完成之前被中斷事件的問題。 因此,需要一新而有效的方法來克服上述缺點。 【發明内容】 有鑑於此’本發明提供一種繪圖處理器GPU可被中 斷,因而可以在同一時間處理多個繪圖程式,繪圖處理器 是一硬體設備可藉由中斷程序以提供多個程式之間的切 TT's Docket No: 0608-A40799TW£TDavidchen 8 1323431 換。 當繪圖處理單元接收到指令,中斷處理第一執行緒和 初始處理第二執行緒,一指令處理器在圖形管道中傳送一 中斷信號從複數管道處理區塊到通訊途徑。一代符對應於 中斷執行緒之尾端,從指令處理器傳送至第一管道處理區 塊並依序傳送至其他圖形管道。直到接收到中斷信號,當 代符到達時,各管道處理區塊丟棄關於記憶體單元之内 容。代符傳送至其他管道處理區塊和記憶體單元,以致於 代符傳送經由圖形管道以清除關於第一執行緒之資料。關 於第二執行緒之資料會在代符之後穿過圖形管道。 在圖形管道中,管道可包括一些管道處理區塊並不藉 由通訊途徑耦接指令處理器,這些管道處理區塊繼續執行 關於第一執行緒之資料直到接收到穿過圖形管道之代符, 一旦接收到代符,這些管道處理區塊也會丟棄關於第一執 行緒在記憶體的貧料’並開始處理第二執行緒之貧料。 本發明提供一種可中斷繪圖處理單元處理多個程式之 方法,係包括:接收一包含複數執行緒之第一運轉序以執 行;初始一包括關於在第一運轉序之執行緒之指令和資料 之緩衝區之程序;擷取一繪圖處理單元記憶體存取指令和 一指標,繪圖處理單元記憶體存取指令來自缓衝區,指標 是指向關於緩衝區之圖形資料;傳送指標至一個或多個架 構處理單元,以存取暫存狀態於繪圖處理單元中;切換至 第一運轉序之一另一緩衝區以處理關於另一緩衝區之資 料,以及當一最後缓衝區之運轉序是空的,切換至另一運 TT^ Docket No: 0608-A40799TWf/Davidchen 1323431 轉序。 本發明提供一種繪圖處理單元,適用於處理複數程 式,係包括:一處理器,藉由耦合至處理器之一圖形管道 ' 來控制資料之處理;其中繪圖處理單元建立執行緒之一運 • 轉序以執行、擷取關於一第一執行緒之一個或多個指令和 一個或多個指標,以供圖形管道執行、傳送一個或多個指 令和一個或多個指標至上述圖形管道,以供圖形管道處 理,其中關於一個或多個指令和一個或多個指標之資料被 ® 圖形管道執行,直到中斷和第一執行緒為一空集合為止之 一者、以及假如在運轉序之所有執行緒為空集合,切換處 理器至在運轉序之另一執行緒或另一運轉序。 然而,本發明實施例之其他系統、方法、特徵以及一 • 些發明之優點可以藉由以下實施例之說明和圖示更加瞭 • 解。 φ 【實施方式】 本發明提供一先進排序以便虛擬一 GPU,因此使不同 程序尋找GPU可用之時段來執行,並使作業系統可以有限 度控制上述排序,當數個應用程式共用一 GPU時,作業系 統可以被設定依據不同的標準來排序各應用程式,例如: 當一程序之時間週期終止時,GPU可在下一時間週期處理 另一程序或甚至再重新執行同一程序。 一程序可包括一些執行緒内容或運算。如之前所述, 一執行緒可以在GPU之所有狀態上執行,上述狀態包括狀 TT's Docket No: 0608-A40799TWfTDavidchen 態暫存器、快速緩衝暫存區* 部先入先出緩衝器、内部暫存器=之目=行2内 至另Γ執行緒’也可能是GH;在二不同程序者刀換 *^行緒切換時’齡所有聊之㈣可能是 =際’因為切換所需-至三毫秒,在這段期間内並不 狀態都需要。因此Gpu可只儲存卜叩吶部分程序 減少儲存狀態的量。 人 GPU可具有多層管道,因此可以在任何時間於不同仅 置取知·二角形(triangles)和像素(pixeis),另外gpu可趣由 不同層官道以讀取、修正和/或寫入資料至記憶體中。在〜 非限定例子中,GPU可具有z層以讀取、比較和有條件^ 新,料。另夕卜,GKJ之寫回單元可以設計為圖形元件之目 的讀取/修正/寫人元件’因此記憶體可以是被追縱狀態的— 部份。假如執行緒被停止並重新開始,Gpu不應再一次鈐 取/修正/寫入同一像素於同一記憶體中,再一次讀取/修 寫入會造成不同結果,因此GPU必須不能追蹤所有在執行 緒切換之前寫入記憶體之資料(猶如儲存狀態之一部分)^ 以避免上述情況發生。 第1圖係顯示一計算裝置,其中執行緒切換於一 GPU 中,苐1圖和以下敘述將提供一計算系統和外部連接環境 的概述。然而’無論是手持、可攜式、其他計算裳置和所 有種類電腦也都可以使用本發明所揭露的方法。因此熟悉 此技藝之人士皆瞭解’本發明並不限定只能使用於本發明 所揭露之一般電腦’另外本發明也可以執行在其他應用 TTas Docket No: 0608-A40799TWfTDavidchen 11 1323431 上。例如.本發明所揭露可以儲存資料、傳送資料至另一 電腦以及接收來自另一電腦之資料之系統。 . 本發明可應用於一作業系統執行程序,以供裝置或物 .件之服務之開發者使用’本發明也包括與此討論之相關應 用軟體。軟體可以是一般電腦可執行指令之執行緒,例如: 被一個或是多個電腦執行之程式模組’上述電腦可以是工 作站、伺服器或其他裝置。程式模組可包括電腦程序、程 式物件元件、負料結構和類似程式執行一特定任務或 特定抽象資料型態,此為熟悉此技藝之人士皆瞭解。程式 模組之功能可結合或分解成不同的組態。 其他廣為人知的電腦系統、計算環境(中央處理機模式 矛糸統程式)和/或電知裝置,包括個人電腦 C〇mputer,PC)、自動櫃員機(Automated Teller Machine, ^TM)、伺服電腦、手持裴置電腦、筆記型電腦、多處理器 系統、微處理器系統、可程式客制化電子設備、上網型個 φ 人電腦、各種設備、發光系統,控制環境裝置、微電腦、 大型電腦以及類似設備。本發明可應用於藉由遠端處理裝 置經由通訊網路/匯流排或其他資料傳輸介面之計算應用 以及分配計算應用上’在分散式計算環境中,程式模 同時在本地電腦和遠端電腦之儲存介面裡,此儲存介 括§己憶體裝置’並且客戶端和飼服端可以互換 第1圖之計算系統10包括一電腦12,電腦12包 處理單元16、一系統記憶體18和一系統匯流排Μ, 匯流排21搞接許多系統裝置’包括耦接系統記憶體μ ^ TT's Docket No: 0608-A40799TWf/Davidchen 12 1323431 處理單το 16,系統匯流排21可以是任何型態的匯流排, 如熟悉此技藝之人士熟悉之記憶體匯流排或記憶體控制 .b、周邊匯流排以及本地匯流排等等之不同匯流排架構。 •例如:周邊零件連接介面(Penph— Component InterC〇nneCt, PCI)、力口速圖形介面(ACcelerated Graphlcs Port: ACT)和/或周邊零件連接快速介面ραΕ㈣μ。 電細12可包括不同的電腦可讀取媒體’電腦可讀取媒 _體可以是藉由電腦12存取之揮發性和非揮發性記憶體,可 移動式和不可移動式§己憶體,電腦可讀取媒體可包括電腦 儲存媒體和通訊媒體。電腦儲存媒體可包括揮發性和非揮 發性記憶體、可移動式和不可移動式記憶體,採用任何方 法和技術以儲存,例如:熟悉此技藝之人士熟悉之電腦可 頃取媒體、育料結構、程式模組或其他資料。電腦儲存媒 體包括動態存取記憶體RAM、唯讀記憶體r〇m、電子抹 除式可編程唯讀記憶體EEPR〇M、㈣記憶體或其 •他記憶體、唯讀光碟CDR0M、數位影音光碟DVD或其他 光學儲存碟、卡式磁帶、磁帶、磁碟或其他磁性儲存裝置、 或其他媒體’以用來儲存資料並提供給電腦12存取使用。 系統記憶體18可包括f職存储,電賴存媒體可 以是揮發/非揮發記憶體,例如:唯讀記憶體⑽如◦叫 Memory, ROM)24和動態存取記憶體(Rand〇m
Mem〇「y,RAM)26。一基本輸入/輸出系統(Basic l_’〇u_ System,BIOS)27包含基本程序可以傳送儲 存於唯讀記憶體24之資料於電腦系統12之各元件間,例 TT's Docket No: 0608-A40799TWf7Davidchen 13 t:在電腦啟動時’動態存取記憶體 :二存取和處理之資料和/或程式模組作;=理 應用程式Μ、其錄式触33 H錢29、 存取記憶體26中取得。 式貝枓%也可從動態 電細12也可包括其他可移動/不可 發電腦儲存媒介…硬碟41可讀取 ^ =和非揮 性磁性儲存姐栌 ..,. ·、、、不可移動非揮發 储存媒體’一磁性軟碟機51可讀取 非揮發性磁碟52,一# 彡·,、、 σ移動之 插先碟機55可讀取或寫入可移動之韭 J光碟片56,例如:CDR〇M或其他光學媒體, 儲::在系統1〇之可移動/不可移動之揮發和非揮發電腦 立磁帶、快閃記憶體、數位影音光碟、數位影 ^、口1動態存取記憶體、固態唯讀記憶體以及其他媒 -,但不限制以上所列之儲存媒體。 、&硬碟41 一般經由非揮發性記憶體介面40連接至系統 匯流排2卜同樣的,磁性軟碟機51和光碟機”也藉由可 移動記憶體介面5G連接至系統匯流排21,第!圖所顯示 =以上所述儲存媒體和裝置可儲存電腦可讀取媒體、資料 結構、程式模組和其他資料。硬碟41儲存作業系統44、 應用私式45、其他程式模組46和程式資料47。上述元件 有可能相同或來自於不同的作業系統29、應用程式31、 其他程式模組33和/或程式資料35<)第】圖也熟悉此技藝 之人士所熟知的顯示廣域網路(Wjde area network,WAN) 73元件(有可能包括其他網路/匯流排)。 使用者藉由鍵盤62和滑鼠61輸入指令和資料於電腦
Docket No: 0608-A40799TWfiTDavidchen 1323431 12,鍵盤62和滑鼠61藉由使用者輸入介面60耦合和系 統匯流排21至處理單元16。然而,熟悉此技藝之人士也 可使用其他介面和匯流排,例如:平行淳、平行埠(parallel port)、遊戲埠(game port)或通用序列匯流排(universal serial bus, USB)之介面輕接於處理單元12。 一繪圖介面82也耦合至系統匯流排21,繪圖介面82 也可以是一組晶片和處理單元16柄合,繪圖介面82可以 是周邊零件連接快速介面(Peripheral Component Interconnect,PCI Express)或加速圖形介面 (Accelerated Graphics Port,AGP)。一個或多的繪圖處理 單元GPU 84可與同時繪圖介面82耦合。繪圖處理單元 GPU 84可以具有專屬晶片内的記憶體,例如:暫存器 (register)或高速緩衝儲存器(cache memory)。繪圖處理單 元GPU 84也可與記憶體86耦合溝通,關於上述應用之變 化可能會影響本發明實施例,本發明實施例所揭露之繪^ 處理單元GPU 84並不是唯一例子,也可以使用其他襞置 取代繪圖處理單元GPU 84於電腦12中。 & 顯示器91和其他顯示裝置也藉由顯示介面9〇耦合至 系統匯流排21,顯示介面9〇也與顯示記憶體86耦合莫 通,除了顯示器91,電腦系統12也可包括其他周邊°輸 裝置,例如:印表機96和揚聲器97,印表機卯和揚&哭 97皆藉由其他周邊介面95耗合至電腦12。 熟悉此技藝之人士瞭解電腦12可以使用於網路或八 散式計算環境與其他端電職接,例如遠端電腦的,遠^ 電腦80可以是個人電腦、伺服電腦、路㈣、網路電^、 或其他網路節點,遠端電腦δ〇也具有如電腦12所具有@之 TT's Docket No: 0608-A40799TWf/Davidchen 1323431 元件或是部分電腦12所具有之元件,儘管在第1圖中只 顯示記憶體儲存裝置81和應用程式85。第1圖中也顯示 利用區域網路(local area network,LAN) 71和廣域網路 (Wide Area Network, WAN) 73搞接遠端電腦80,但不限 定,熟悉此技藝之人士也可以使用其他網路/匯流排來連 接。 在第1圖中,遠端電腦80可藉由區域網路(local area 鲁 network’ LAN) 71和網路介面70耦接電腦12,同樣也可 藉由數據機72,經由使用者輸入介面60,和WAN耦接遠 端電腦80。 如之前所述當GPU 84在處理另一執行緒時,可以切 換程序或執行緒,在中斷那一刻,GPU 84儲存一中斷執 行緒並開始另一執行緒(此一執行緒也有可能是上一次被 中斷而儲存之執行緒)。 關於儲存和回復狀態執行緒之狀態,第2圖係顯示 φ GPU 84切換執行緒之切換程序。在階段1〇1,gpu 84執 行一目前GPU狀態執行緒,然而在第一步驟(interrupt) 1, 處理單元16發初一中斷指令或事件,GPU 84於是開始 儲存GPU狀態執行緒,如階段1〇3所示,(關於如何實行 中斷指令和事件’之後會詳細解釋),之後GPU狀態執行 緒儲存(save)2,如步驟2,當GPU 84切換GPU狀態執 行緒時,如階段105,GPU 84執行第3步驟(new context) 載入一新GPU狀態執行緒,如階段1〇7,之後GPU 84執 行第4步驟回至階段101 ’以執行新的GPU狀態執行緒。 ^T*s Docket No: 0608-A40799TWfiT)avidchen 16 1323431 § GPU 84完成新載入之GPU狀態執行緒後,執行第 5步驟(END〇F CONTEXT),GPU 84跳回階段1〇5 ,切 換GPU狀態執行緒至上一個執行緒,如第6步驟 (PREVIOUSLY EXECUTED CONTEXT),於是 GPU 84 跳 到階段109並回復之前在步驟2所儲存之GPU狀態執行 緒’因此GPU 84回到階段1〇1(步驟7)執行所回復之GPU 狀態執行緒。 根據第2圖,配置GPU 84依序執行多個屬於同一執 行緒(或稱為環緩衝區Ring Buffer)之GPU程式(指令),其 中環緩衝區包括處理器功能和命令直接記憶體存取緩衝區 指標(Command DMA buffer pointer)於記憶體中。如之前 所述,當GPU 84接收到中斷命令時,切換一執行緒至另 一執行緒,並在環緩衝區之末端(分別如步驟彳至步驟5), 當中斷命令下達時,GPU 84儲存狀態執行緒,並在儲存 完後立刻繼續執行下一執行緒。 第3圖係顯示用於第2圖之一執行緒儲存資料結構 111,這些在執行緒儲存資料結構m之結構單元狀態可 定義在中斷時的單元狀態。執行緒儲存資料結構彳彳彳包括 數種攔位,包括一直接記憶體存取字元偏移指標(dma word offset pointer)114、原始標識符(Primjtjve 丨叩忉、 實體標識符(Instance ID)120和一中斷draw命令之碎標 識付122。執行緒儲存資料結構,1彳也可包括指令串流處 理器(Command of a stream processor, CSP)、執行單- EU(EXeCUti〇n Unit)、瓦片陰影單元(Tj丨e Shade「了^) TT*s Docket No: 〇608-A40799TWWDavidchen 1323431 和其他處理程序單元狀態於彳彳6中,當中斷時,這些儲存 於執行緒儲存資料結構1彳1之架構單元狀態可定義單元的 狀態。假如GPU 84將一些資訊保存為準備儲存的格式 (ready-to-save form)並稍後在重新啟動執行緒之前回復 所有狀態,GPU 84可視為可完全中斷。 以下為在執行緒儲存資料結構111之單元表: typedef struct context_save area
DMA_DW_Offset CSP_Registers CSP[551]; Command Stream Processor Registers C2D一Registers C2D[13]; Blockl registers MXU一Registers MXU[19]: Block2 registers TSU_Registers TSU[163]: Block3 registers SG_TG_Registers SG_TG[3]; ZL1_Registers ZL1[17]; ZL2一registers ZL1 [21]; Primitive_ID Primitive_ID; lnstance_ID lnstance_ID;
TileJD TileJD; } context_save_area 第4圖係顯示第一次儲存/回存(和第2圖 程序有關)前之環緩衝區125之初始結構,一:執行绪切換 如:環缓衝區125可包括一串指令和 %緩衝區,例 關於執行緒執行之記 TT's Docket No: 0608-A40799TWf/Davidchei 1323431 憶體指標’環緩衝區125包含一標頭指標(head pointer )127 和一尾指標(tail pointer)〗29,標頭指標 127 包含有關處理指令之邏輯位置和環緩衝區125之指標,尾 指標129儲存資料是有關環缓衝區125之邏輯尾端位置, 當更多指令加入執行緒時,尾指標129在執行緒執行(第2 圖之階段101)時會更新。 環緩衝區125也包含DMA記憶體指令13i和〇河人指 才示133(才曰向DMA緩衝區147,DMA緩衝區147包含指令 和資料是有關於環緩衝區125之執行緒)。另外環緩衝區 125可包含DMA指令’例如.DMA指令135,和DMA指 標’例如.指標137 ’指標137指向DMA緩衝區148, DMA缓衝區148包含指令和資料’第4圖之環緩衝區125 也包括跳躍欄位(skip 1 DWORD)141和空白欄位142之兩 位置保留攔,在一儲存/回復之後(稍後討論),跳躍攔位141 和空白欄位142分別儲存執行緒儲存指令和指標位址。 當GPU 84開始執行環缓衝區125時’ GPU 84接收標 頭指標127和尾指標129,並且檢查一儲存執行緒。跳躍 攔位(位置保留欄)141可使GPU 84跳過或是忽略空白欄位 142而跳到下一 DMA指令欄位131,此時,環緩衝區125 不會被中斷,GPU 84另外繼續執行第4圖中環緩衝區125 之指令以及執行DMA緩衝區147和148之内容(例如繪圖 指令 draw command、圖元 primitives、實體 instances 和磚 tiles) 〇 第5圖為當儲存/回復執行緒之後(如第2圖所示)之環 TT's Docket No: 0608-A40799TW{/Davidch( 1323431 緩衝區150,第4圖環緩衝區125之位置保留欄141和142 被回復指令(restore command)152和執行緒儲存位址 (context save address)154所取代,執行緒儲存位址154 " 指向狀態執行緒儲存緩衝區111,如第3圖所示。 • 當第5圖GPU 84處理環緩衝區15〇時,識別完回復 指令152 ’ GPU 84藉由執行緒儲存位址154即得知應擷 取狀態執行緒儲存緩衝區111之資料,從狀態執行緒儲存 缓衝區111取得的資料也可提供DMA緩衝區147之DMA 籲 移位146資料’因此可以在正確中斷點開始處理。 第6圖係顯示環緩衝區架構162被GPU 84執行之示 意圖160 ’稍後會詳加敘述’環緩衝區162(可能類似第4 圖之環緩衝區125或第5圖之環緩衝區150),包括一環緩 衝區標頭指標(ring buffer head)166和環緩衝區尾指標 (ring buffer tail)168,一跳躍或回復指標(skjp or restore”70可在環緩衝區尾指標168之後(類似第4圖之 跳躍攔位141和第5圖之識別完回復指令152),一剩餘部 馨 分執行緒(rest of context in ring buffer)172也在環緩衝區 162裡,剩餘部分執行緒172也包括一個或多個DMA指 令和指標,如之前所述。 GPU 84也包括一指令串流處理器(command Stream Processor,CSP)190 ’如第7圖所示。CSP 190也包括和 3D管道(3D pipeline)176連接之一前端語法剖析器 (Front-end parser)164 和一後端語法剖析器(Back_end parser)178。 TT*s Docket No: 0608-A40799TWf/Davidchen 20 备接=到$錢衝區標翻標166和環緩衝區尾指標 )68二^端語法剖析器164開始分析環緩衝區162,之 後’刚端5吾法剖析@ 164根據指令指標170是否為-跳躍 或回復^ '來檢查—儲存執行緒,假如指令17〇是一跳躍 才曰7這表示環緩衝區162之前不被中斷過,因此CSP 19〇 執订剩餘部分執行緒172(可包括—個或多個DMA指令和 指標)_’假如前端語法剖析器164辨識出指令17〇為一回 復指令(如第5圖之回復指令152),即執行回復指令 IRestofe CMD ’而前次操作狀態執行緒儲存資料架構 (Previous run state context save data structure)175 被擷 取(如第6圖所示)且回復Rest〇re states至前端語法剖析 器164中’之後這回復執行緒被3D管道176處理並傳送 至csp後端語法剖析器178,其操作如同目前操作狀態執 行緒儲存資料架構(current run state context save data structure)181。 第7圖係顯示GPU 84之部分架構圖,可包括儲存和 回復狀態(如第6圖所述),GPU 84可包括CSP i9〇,csp 190包括一前端語法剖析器164和一後端語法剖析器 (如之前所述)’這些裝置藉由3D管道176來協調指令之處 理,一 DMA區塊192可存取記憶體86,以擷取前端語法 剖析器之狀態和指令。CSP 190包括一記憶體194(_ 128*512狀態先進先出記憶體)以擷取從後端語法剖析器 178之狀態和指令。 ° 第6圖之3D管道176可更包括3D管道架構區塊(3〇 TT's Docket No: 0608-A40799TW£Davidchen 1323431 pipeline arch block) 176a-176d,如第 7 圖所顯示,3D 管 道架構區塊176可以是瓦片陰影單元、陰影產生單元# 瓦片產生器等等…,熟悉此技藝之人士皆熟悉此技藝,如 • 第10圖所示。 為了儲存所有狀態’當接收到一中斷指令時,各3d 管道架構區塊176可以傳送本身狀態指令State commands之複製本至CSP 190,當接收各架構區塊176 •=狀態指令時,CSP 190可寫資訊至一記憶體(128*512狀 二先進先出記憶體)194,之後存入記憶體86中(如之前所 ,)°在-非限定的例子中,3D管道架構區塊(口仙和17 =資料途徑(207 * 2〇9)連至Csp⑽之後端語法剖析 :首力切。儘管以下會有更細節討論,並不是每一個3d管 構區塊176具有-資料途彳呈至後端語法剖析器178, =而資料途徑(207和209)可以儲存Gpu 84正在處理中的 、;斗,以致於一執行緒可以被中斷和再開始。 . 資料途徑(207和209)介於3D管道架構區塊(17仙和 中」另一種說法,就是各3D管道架構區塊並不具有 用資料途徑至後端語法剖析器178,因此複製各3D 次木構區塊176之狀態至〜狀態先進先出記憶體194之 生;,'、途從可以是專用的或是共用的,因為狀態改變不常發 所以3D管道架構區塊176共用資料途徑(2〇7和2〇9) 減少3D管道架構區塊176 # csp後端語法剖析器 之間的貢料途徑數,換句話說,減少資料途徑,可以 “日曰片其他模組和/或架構使用。 〇CketNo: 06〇8-A40799TWmDavidchen 22 1323431 第8圖係顯示第7圖之3D管道架構區塊176之細部 圖205’和中斷一執行緒操作以致於保留一磚標頭指標 .206、DMA移位293(參見第15圖)、實體標識符309(參見 第15圖)和圖兀標識符311(參見第15圖)。一 3D管道架 構區塊176之前端部分195包括三角建立單元214和屬性 建立單元218,根據程序(在新執行緒開始之前,丟棄舊執 行緒=貝料)197丟棄一中斷執行緒之資料,因此繪圖指令 _w _mand)、頂點(Ve「tices)、狀態指令⑼抑 command)和圖元指令(primjtive assemb丨ed)等等…被丟 棄於到達磚產生器226之前(可參考第17圖之步驟334)。 磚產生器226可儲存磚標識符(tne丨D)於中斷那一刻, 其他如目刖標頭指標(current heacj p0jnter)2〇6、DMA位 移293、實體標識符(jnstance丨D) 3〇9和圖元標識符311 也會被儲存,這個流程位在步驟(準確Gpu中斷以協調執 行緒之儲存)198 ’稍後也會有更詳細說明。 φ 在第8圖之步驟(舊執行緒在新執行緒開始之前被輸出) 199中,3D管道架構區塊176繼續處理舊執行緒資料,因 為部分舊執行緒已經由3D管道架構區塊176被拿出來處 理,因此至少一部份舊執行緒在收到中斷程序時已經完成。 第9圖係顯示流程圖200,流程圖200包括第7和第 8圖之儲存狀態流程和寫入狀態命令至CSP 190流程,在 —般程序中’ 3D管道架構區塊176操作在步驟2〇1,根據 暫存區ID引導3D管道架構區塊176寫入狀態至暫存器 中’在無中斷模式下(NON-INT MODE),各3D管道架構 TT5s Docket No; 0608-A40799TWf/Davidchen 23 區塊」76操作從步驟2〇1至步驟2〇3,去檢查下 ϋ接收到一區塊狀態登錄時’假如無接收到中 嘗道架構區塊176可再執行步驟2〇1。
式,= =CSP190接收到—指令指示切換至中斷模 道木構區塊176移至步驟204,以便儲存被GPU 目刖執行之狀態執行緒(請參考第2圖之步騾1〇3),之 4 3D官道架構區塊176跳至步驟2〇3以檢查下—登錄程 序並繼續操作,如之前所述。 ;、 〜當事件發生時,3D管道架構區塊176建立一執行緒儲 ,資料結構111(第3圖)藉由經由資料途徑(207和209)傳 送狀態資料至CSP190,區塊176a和區塊17以也可分別 傳送資料至區塊176b和區塊176d,並且傳送至區塊176b
一登錄程 斷指令, 彳區塊176d之資料可經由資料途徑(2〇7和209)傳送至後 端語法剖析器178。 弟10圖係顯示3D管道架構區塊176(第7圖)和更詳 細管道圖(第8圖),第10圖為熟悉此技藝之人士熟悉之圖 示,並且不限定於此一圖形管道,這些區塊在不離此發明 概念下重新排列’也可達成類似結果,如之前所述,CSP 190可與3D管道架構區塊176耦接與溝通,其中包括三 角建立單元(Triangle setup unit, TSU) 214以接收從指令 串流處理器之先進先出記憶體(CSP FIF0)211之指令,三 角建立單元214藉由TSU FIFO記憶體215傳送處理過的 資料至屬性建立單元(Attribute setup unit, ASU)218,ASU 218傳送處理過的資料至ASU/ZL1 FIFO 219、範圍產生 TT’s Docket No: 0608-A40799TWfiDavidchen 24 1323431 單元(Span generator unit, SG)222和屬性先進先出記憶 體(Attribute FIFO, AFIFO)223。 SG 222傳送處理過的資料至碑產生單元(Tile generator unit,TG) 226。Z 單元位階一區塊(ZL1 )230 接
收來自 ASU/ZL1 FIFO 記憶體 219、AFIF0 223 和 TGFIFO 227 之資料’其中 TG 226 耦接 TG FIFO 227,ZL1 230 將接收到的處理資料藉由ZFIFO 231和ZL1 FIFO 232傳 送至Z單元位階二區塊(ζ1_2)234。 熟悉此技藝之人士皆熟悉第1〇圖之3D管道架構區塊 176(之後稱為3D管道)只是一圖形管道之一部分,另外, 寫回單元、像素封包區塊和其他區塊可以是3D管道176 中其他部分’為了簡單起見,所以不在這裡贅述。
上述執行緒儲存和回復狀態程序可以被第1〇圖之3D 官道176執行,第11圖係顯示流程圖240,流程圖240 顯示第10圖之3D管道176執行儲存和回復狀態程序的流 程。 關於執行緒之儲存程序,當Gpu 84處理一執行緒時 可月b會接收到來自cpu(第]圖之處理單元)之一中斷指令 (如步驟242) ’關於步驟244,3D管道176等待磚產生器 226或一寫回單元(第1〇圖中並未顯示)之清除指令被執 巧®CSP 19Q可辨識碑產生器226是否清除,因為當標頭 仏,變時’ CSP 190每次會傳送一符記通過管道,當碑 產生器226接收到符記以及處理符記’並且會告知cSp 190收到。 IT, Docket No: 〇6〇8.A4〇799TW{/Davidchen 25 § CSP 190初始一圖形指令或開始狀態時,csp 190 更會傳送DMA DWORD OFFSET至管道176,磚產生器 226 也傳送 DMA DWORD OFFSET 至 CSP 190,當狀態 傳送至磚產生器(如第7圖所示)和資料途徑(207和2〇9) 時,磚產生器226也會傳送狀態回去。 第圖之區塊247係顯示,當接收到來自CPU 16 之中斷指令時(步驟242),狀態和指標會被儲存。當磚產生 器226接收到中斷指令時,磚產生器226會傳送ID(設所 有丨D為〇)至CSP 190(假如碑產生器226在處理狀態時遇 到中斷)’另外,在步騾247時,磚產生器226可儲存指 標和狀態,包括磚標頭指標、DMA移位(DMA OFFSET)、 實體標識符(instance ID)、圖元標識符(primjtjve id)、磚標 識符(tile ID)和所有暫存狀態,因此被儲存之執行緒可以快 速回存,資料可包括以及儲存成第3圖之執行緒儲存資料 結構111。 ' 之後GPU 84可以切換至另一運轉序(run |jst)(步驟 249) ’這些程序可以被切換並可包括一個或多個被3d管 道176執行之執行緒(如第12圖所示)。 關於管道176之回存一狀態之流程程序,當目前執行 程序已經完成或當一指令已接收並執行時,GPU 84可切 換回之前但只部分執行過之程序(如步驟251),之後GPU 84可回存之前所有儲存狀態(在步驟247中所儲存之狀 態)(步驟253),CSP 190(步驟256)略過圖形指令直到移 位之別所儲存DMA移位量後遇到之所儲存之圖形指令 TT's Docket No: 0608-A40799TWf/Davidchen 1323431 (稍後有更詳細之說明),之後磚產生器226(步驟258)略過 圖形指令直到接收到所有在步驟247儲存之實體標識符 (instance丨D)、圖元標識符(PrimUive旧)和磚標識^(tije 丨D),之後管道執行任一未完成之程序(步驟26〇)(稍後有更 詳細之說明)。
蘭淹凹仔程序之開始___高㈣理所 有元件之狀態,包括目前標頭指標、DMA移位量、實體 標識符、圖元標識符和磚標識符(可能在之前步驟24?時储 存),因此CSP 190從環緩衝區取回環緩衝區標頭指# (_ buffer head P〇inter,經由儲存程序儲存,如之前^ 述)’並且處理被標頭指標指向之_指♦,然後略 有指令直到DMA位料於直接記憶體存 OFFSET),CSP 19〇 2 之指令’可能是在triangle(三角形)中間^^位址 到4:二可在回存狀態程序時略過實體二 到貝體ID(mStance |D )符合,也可 )直 直到圖元旧符合,實體ID和圖元 =f Ϊ : = CSP 19〇可以比較被:存至^體: 之貫體另一私序區塊(為GPU84計复# tri_es直到關於一特❹如抑之 f =份)略過 triangle ID可被儲在5八私也_ D付&,例如: 磚產生器226在回存“可^塊智存區(並未顯示), 旧(在一儲存程序,儲存二247) 直到碑符合碑 切換3D管道從—略過狀態至—正常狀態。付合’CSP 190 TT^ Docket No; 〇608-A40799TWfiDavidchen 27 兮記f生一個或多個符記和3D管道176溝通’ 之卢理r床以位址’並且和一位移量—起代表上一中斷 ί,為了彈性改變狀態執行緒儲存架構, 因此=sp之it構包括密集包裹所有區塊狀態至記憶體86, 〇可執仃一彈性包裹暫存移位(Flexible pack ^ ㈣,當接收到—中斷執行緒咖_時,暫 存益移位會告訴各3D管谨17β _ 作置點以恢復或回存操 9 里中斷執行緒之暫存位址,中斷執行 可以被快速找得。關於第1〇圖之各3D管道架構區 =闲各3D管道架構區塊176關連之區塊ID和相關位 移重可用於恢復時計算其位址,以這方法,GPU 84可夢 由狀態,緒儲存和回存L卜中斷於應用程式/ 因,3D官道架構區塊176可以同時使用一個或多個應用 程式分享其功能和運作。 ’ 關於第11 m情儲存料24Q,可提供彈性變化於 狀態執行緒儲存架構中,因此一程序包括密集封包所有區 段狀態資料於記憶體86中,在GPUsubversk)n^t 程中,3D管道架構區塊176之各區塊可經常改變暫存: 規格。在-非限定的例子中,假如系統超過 _、1Γ、...176η,η大於别,會造成花 在改變暫存器資料封包硬體。 才間 因此’使用-可觸包暫存器位移量可以解決 題,以下表格提供一組暫存器,使狀態資料儲存在一執; 緒儲存架射,關於各狀態資料之區塊,提供各自位移量仃 TT's Docket No: 〇608-A40799TWf/Davidchen 28 1323431 係包括一位移暫存内容和一暫存ID之組合。CSP 190可 發出一組專門針對管道176之區塊的暫存指令,在一非限 定的例子中,移位量為128位元,以下為一非限定例子之 * 暫存器組之表格: 移位暫存0 區塊丨D 1 區塊ID 0 移位暫存1 區塊ID 3 區塊ID 2 移位暫存2 區塊ID 5 區塊ID 4 移位暫存3 區塊ID 7 區塊ID 6 移位暫存4 區塊ID 9 區塊ID 8 移位暫存5 區塊丨D 11 區塊ID 10 移位暫存6 區塊D 13 區塊ID 12 移位暫存7 區塊ID 15 區塊ID 14 移位暫存8 區塊ID 17 區塊ID 16 移位暫存9 區塊ID 19 區塊ID 18 移位暫存10 區塊ID 21 區塊ID 20 以下為一長度暫存器之表格,敘述關於各區塊之狀態 φ 資料長度,並對於各區塊之運算碼雙字元(opcode double word)定義資料的上限,長度暫存器可被CSP 190拿來作 内部測試,不像上述敘述之移位暫存,長度暫存器可格式 為長度32位元,以下表格(並不限定)為長度暫存表格: 長度暫存〇 區塊ID 3 區塊ID 2 區塊ID 1 區塊ID 0 長度暫存1 區塊ID 7 區塊ID 6 區塊ID 5 區塊ID 4 長度暫存2 區塊ID 11 區構> ID 10 區塊ID 9 區塊ID 8 長度暫存3 區塊ID 15 區塊ID 14 區塊ID 13 區塊ID 12 長度暫存4 區塊ID 19 區塊ID 18 區塊ID 17 區塊ID 16 TT’s Docket No: 0608-A40799TW£TDavidchen 29 長度暫存5 ' -----__ 空 | 區塊丨 D20 根據上述^訊,CSP 190可決定各區塊暫存器記憶體 之長度和位移量’也就是關於記憶體之位址位置(b|〇ck—叫 和暫存器(Π) ’利用基本位址加上移位暫存量 (block」d(n)〉<<4(12位元為一暫存區),利用這方法,狀態 執行緒儲存架構可以具有彈性,並可以提供Gpu設計上的 彈性。 第12圖係顯示第7圖之CSP 190可執行複數執行緒之 運轉粒圖,各執行緒具有自己環緩衝區,例如:環緩衝 區125、150或162。如第12圖所示,CSP 190可切換於兩 運轉序〇*11111以)之間,包括奇運轉序(1111111以〇(1(1)和偶運轉 序(Run list even) 264,本發明並不限定於此例,各運轉序 包括 ’(context 0)執行緒 〇、(c〇ntext J)執行緒!、(c〇ntext 2) 執行緒2和(context 3)執行緒3之四個分別的執行緒,在各 運轉序之執行緒0-3指向各環缓衝區,並被CSP 190執行, 如之前所述。 在第12圖中,環緩衝區1可以是偶運轉序264之執行 緒1之參考,環緩衝區1包括各種GPU指令和/或DMA缓 衝指標指向之DMA指令,例如上述環緩衝區125、150和 162,請同時參考第12圖和第13圖,第13圖係顯示CSP 190 處理一目前運轉序和環緩衝器之流程圖275。 GPU 84可接收運轉序指令,之後如第12圖所示排序 位址格從0到3,如同第13圖之步驟279,以建立一運轉 序,如第12圖所示,CSP 190開始執行偶運轉序或奇運轉 TT's Docket No: 0608-A40799TWf/Davidchen 1323431 序之執行緒0。 在第13圖中,CSP190取得頭和尾指標並且檢查用以 跳躍或儲存彳s令之一代符(token)(步驟282),假如CSP 190 決定下一代符是一回存指令(由步驟285決定),(如第5圖 之儲存和令152) ’ CSP 190執行回存指令並取得所有gpu 狀態資訊(步驟288),假設步驟285決定不執行回存指令, CSP 190可取得第12圖之環緩衝區1,並且執行DMA指 令(例如.第4圖之DMA指令)和相關DMA缓衝區資料(例 如:第4圖之DMA緩衝區)。 在第12圖中,CSP 190和3D管道176可存取dma 指標290,當頭指標器(head pointer)讀到DMA指標290 時,並進而存取DMA缓衝區292 ’ DMA緩衝區292包括 圖元指令0和圖元指令1。當頭指標器(headp〇inter)在環緩 衝區1上從左至右移動時,頭指標器在DMA指標區29〇 之前可能會讀到一跳略或回存指令,當回存指令不存在時 會使CSP 190開始存取DMA緩衝區,並進而存取DMA緩 衝區292和處理在緩衝區相關資料的圖形。 在第13圖中,在取得環緩衝區資料後,csp 19〇和 管道176開始處理目前環緩衝區(步驟289),在第12圖中, CSP 190開始處理偶運轉序之包含緩衝區〇之執行緒〇,假 如執行緒是空的(步驟294),切換至下一執行緒(步驟 297),CSP 190會切換從執行緒〇至執行緒卜因此環緩衝 區1會被載入並且執行,在切換至環缓衝區〗時,會偵測 使否有來自CPU 16的中斷信號(步驟299),假如沒有中斷 TT’s Docket No: 0608-A40799TWf)T)avidchen 31 1323431 信號’ CSP 190會回到步驟282以執行第12圖之環緩衝區 1,然而假如在步驟299偵測到中斷信號,會跳到步驟3〇1, 基本資sfL單位(basic information unit, BIU)處理中斷程 序’並且回到步驟282,之後執行第11圖之執行緒儲存程 序0
假如在步驟294偵測執行緒不是空的,CSP 190之針 端語法剖析器164會之後傳送目前環緩衝指標、DMA移位 和丨D以及暫存狀態至第1〇圖之TSU 214,前端語法剖析 器164也傳送實體丨D、圖元丨D、頂點丨D(vertex |〇)和索 引(indices)至適當位置以執行,另外,前端語法剖析器164 可執行任何所需初始CSP之指令。 並繼續執行第12圖之環緩衝區彳,進入下一步流程(步 驟306),其中3D管道之邏輯區塊與後端語法剖析器178 溝通,因此意味已經執行到環緩衝區之後端部分,最後, CSP 19〇執行之前處理程序之所有儲存狀態之後端部分指 令(步驟308)。 關於第13圖之流程取得環緩衝區之頭和尾指標以及 處理程序會—直_直職緩衝區之終結料是被f斷才 會停止。第14圖係顯示第7圖之C S p 19 〇運 當CSP棚執行-環緩衝區架構和尋找一環緩衝1區之終 結指令。關於第14圖之步驟310,咖19〇處於閒置狀 態並等待-環緩衝區資料以執行。在步驟312,相對應於 第13圖之步驟282’ CSP19Q取得環緩衝區之頭料指 標’例如:在第12圖中’偶運轉序264之執行緒巧之環 TT*s Docket No: 0608-A40799TWf/Davidchen 32 1323431 *· 寄 缓衝區,和等待頭和尾指標(步驟313),最後參考頭和尾指 標並作填入動作(步驟314)。關於第13圖之步驟285,假 如遇到一回存執行緒指令,會跳至第14圖之步驟316載 入回存資料(對應於第13圖之步驟288),一旦完成載入 ' 回存狀態,會跳至步驟318取得環緩衝區並繼續運作(相對 應於第13圖之步驟289)。 假如在步驟314並不具有一有效回存指令時,會判斷 頭指標是否等於尾指標,也就是執行緒是否為空的,根據 ® 第13圖之步驟294,假如頭指標不等於尾指標,環缓衝區 具有待處理之程序,因此從步驟314跳至步驟318,在步 驟318,現在指標從初始位置移至尾指標,並且計算每一 次判斷是否現在指標(可能是頭指標)等於尾指標,隨著不 斷處理程序,頭指標或現在指標會往尾指標移動,最後頭 指標等於尾指標,步驟318可以重複回圈數次直到現在指 標(CUR_PTR)變成尾指標(TAIL_PTR)。 $ 當現在指標或頭指標等於尾指標時,跳至步驟322, 使CSP 190等待尾指標更新,如第12圖所示,假如額外 指令或是指標被加入至環緩衝區,尾指標是可以被移動 地,然而,假如尾指標不被移動,程序跳到步驟324,這 意味到達環緩衝區之終端,CSP 190返回閒置狀態310並 準備重複上述之程序。 第15圖係顯示上述第12-14圖之資料結構,並可應用 於第1圖之GPU 84以回存之前中斷執行緒,運轉序 264(出現於第12圖)可執行如之前所述,因此一執行緒切 TT5s Docket No: 0608-A40799TWf/Davidchen 33 1323431 一 換可從執行緒0至執行緒1。 在記憶體之環緩衝區1之資料結構265可被存取以回 存特定執行緒1,類似於上述所述’環緩衝區1資料結構 265包括一磚標頭指標(tile head p〇inter)266,在處理執行 緒時,GPU 84會更新磚標頭指標266 ’同樣得,環緩衝 區1之資料結構265也可包括一環緩衝區尾指標(Ring buffer tail pointer)268,此環缓衝區尾指標268也會被更 新(如第12圖),假如在第15圖中,將指令和指標加入至 環缓衝區1資料結構裡,然後環缓衝區尾指標也會被調整。 壤緩衝資料取得順序可限定C S P功能只能行使D ΜA 指令指標290之執行(請參考第12圖所示),CSP 190取 得在環緩衝區1資料結構中之磚標頭指標,(係顯示於第 15圖之環緩衝區1之資料結構),當運轉序264之執行緒 1在之前被中斷時,CSP 190載入所有踉DMA指令指標 290相關之資料至CSP標頭指標(CSPHEADPTR),上述 CSP標頭指標指向CSP功能291,並輸入至3D管道176。 DMA指令指標290是由DMA缓衝架構292組成(並不 限訂於此),包含繪圖指令0至繪圖指令5,在回存執行緒 時,CSP 190也處理DMA移位(DMA OFFSET)293(類似之 前第5圖所述),因而可回到之前被中斷時之正確位置點, DMA移位293是一邏輯距離,上述邏輯距離在DMA緩衝 架構292中,並介於DMA緩衝標頭指標和目前指令指標 (Current Command POINTER)之間。 在第15圖中之例子,CSP 190可得知DMA移位293 TT^ Docket No: 0608-A40799TWf/Davidchen 34 1323431 至繪圖指令4之重新開始之位置,繪圖指令4可包括多個 實體(―),更具體來說’繪圖指令4更包括實體標識 符(Instance ID)0-5 ’並且依序執行,在執行完實體$後, 會跳到緣圖指令5 指令5和其崎圖指令也都包括 多個實體。 從運轉序264重新建立執行緒時,csp 會忽略之 前執行實體直到上一次中斷之實體標識符(InstanceS ID),在 本發明貫施例中(並不限定於此)’實體標識符3〇9指向複 數實體295之實體4,因此csp 19〇會忽略所有實體〇_3 直到實體4,因為實體榡識符3〇9符合邏輯位置。 各實體包含一個或多個圖元(primitive),如圖元架構 296所示依序排列,在不限制之本發明實施例中,圖元〇_M 組成一實體(Μ為整數),直到圖元標識符(primitivelD)3n 符合之前中斷位置點時,DMA緩衝架構292之中斷繪圖指 令4才會被CSP 190執行(和之前所述一樣),在不限制之 本發明實施例中,圖元標識符3Π指向圖元1 ,這意味著 圖元0在之前中斷時已經被處理過,所以CSp 19〇略過圖 元0。 各圖元0-M是由一個或多個磚(Tile)組成的,可以形成 一三角架構298,在不限制之本發明實施例中,圖元2可 包含磚0-8以構成三角架構298,磚產生器tg 226會略過 磚0-3直到磚標識符(Tile ID)參考之碑4,磚4也就是之前 中斷位置點。 使用上述方法,第15圖之資料架構係顯示至少—方法 TT^ Docket No: 0608-A40799TWf/Davidchen 35 1323431 =圖:處理至之前被中斷的位置點,藉由cspi9〇略 過、.,曰_”、實體、圖元和TG 226所略過的磚,直到上次 執行緒被中斷雜存之標識符ID,並正確快速地回到上次 被中斷的點’㈣免重複處理之前處理過的資料。 第16圖係顯示當回存一執行緒時,⑽19〇執行程序 之流程圖252 ’第16 _之流程圖252包括帛u圖之步驟 253、256和258,並也著重於精確執行緒回存之程序上。 在第16圖之步驟300中,cspi9〇從環緩衝區取得回 存執行緒,上述環緩衝區可以是第12和第15圖之環缓衝 區265,存取環緩衝區265之碑標頭指標2〇6以便得知正 確執行緒之從新開始位址或環緩衝區265之邏輯位置,在
不限制第15圖之本發明實施例中,磚標頭指標指向dma 指令指標290。 步驟304,CSP 190處理DMA指令,類似之前所述, 利用DMA移位293移動至DMA緩衝架構之正確鳍·圖指令 (如第15圖所示),一旦確定正確繪圖指令(如第15圖之繪 圖指令4) ’ CSP 190採取下一步驟307,配對實體標識符 (Instance ID)和圖元標識符(Primitive ID),配對後,CSP 190 辨識到之前所中斷的位址,也就是之前中斷的三角形 (triangle)位置。 此時CSP 190可辨識之前程序被中斷的磚ID 317,因 此磚產生器226(第1〇圖)可完成處理三角形區(如步驟315 顯示)’在確認辨識DMA指令、繪圖指令、實體ID·、圖元 ID和磚ID之後,執行緒可被完全回存至3D管道176中, TT's Docket No: 0608-A40799TWf/Davidchen 36 上,也可以應用同樣的方法和標識符,並將儲存之磚標識 符在ZL1單元230上作比較。 • 然而,根據不限定之本發明實施例,中斷點可以在磚 產生态226上,任何被磚產生器226所接收的磚(tile),要 到處理單元16告知執行緒切換時,才會可被允許傳送至其 他官道單元(包括ZL1單元230和隨後的單元),以穿過整 個3D管道176。然而,任一還未到達碑產生器226之三角 鲁形(triangle)和磚(tile) ’當GPU 84接收到中斷指令時,當 執行緒被回存時,會丟棄現有程序並重新產生回存的程 序。換句話說,當執行緒被回存時,在3D管道176單元 中,於磚產生器226之前元件,會丟棄所有現有處理程序, 並重新產生回存的程序(請參考第8圖)。 當中斷發生時(在磚產生器226上),除了非常長的 像素者色器程式(pixel shader program),3D管道176可以 繼續處理所有在磚產生器226之後的碑(tile)(因為能在一 _ 或兩百週期内完成)。但如果中斷在第10圖之三角建立單 元TSU 214’3D管道176可能不能在一至三百萬毫秒内處 理完資料。假如中斷程序之大小比磚(tile)還小,並不會對 管道很快處理資料造成很大的影響。藉由中斷於管道之碑 產生器上’一部份處理程序仍然可以繼續,一部份處理程 序可能要被廢除,並且被中斷點會被儲存,以供下一次重 新開始時使用,根據非限定之本發明實施例,使得一些資 料被語法分析以及重複,使得3D管道176可以正確回存 至上次中斷點。 TT5s Docket No: 0608-A40799TW£Davidchen 38 1323431 根據本發明不限定之實施例,無論何時 DMA緩衝器 (context)切換,CSP 190 可藉由傳送一代符(t〇ken)(internai fe腦)穿過3D管道m,至磚產生器⑽,並回到⑽⑽ 以付知那裡指令剖析以重新啟動—執行緒。根據本發明非 限定之實施例’ CSP 知道什麼時候可以安全地忽略一 DMA緩衝區292。本發明非限定之實施例也提供紀錄對應 於磚產生器226上DMA缓衝區之位置,並提供新繪圖指 令,如第12圖所示。因此當一執行緒,例如在第12圖偶 運轉序之執行緒1,被依序回存,語法剖析可從被中斷之 繪圖指令開始,例如在緩衝區292之繪圖指令〇。 第17圖係顯示325流程圖’第1〇圖之csp 190可到 步驟329並中斷一執行緒並重新另一執行緒於第1〇圖之 3D管道176中’在步驟326中,也和第2圖之步驟ιοί相 同,一目前執行緒被處理到完,如之前所述,例如:第13 圖之步驟294。當執行緒被處理至步驟326時,會彳貞測是 否有中斷事件發生(步驟327) ’假如沒有中斷事件發生,執 行緒會繼續執行到完(步驟326)。 假如一中斷事件發生並且被偵測到(步驟327),CSP 190進入步驟329並電性傳送一中斷信號至一個或多個 3D管道176之處理區塊。如之前所述,由於清除管道上 半部區塊之延遲時間,可能導致不完整的執行緒切換時 間,所以管道之特定上半部區塊的資料可以被忽略,而管 道下半部區塊則繼縯處理程序。步驟329提供一預先決定 3D管道Π6之區塊數量以接收來自CSP之一中斷信號。 TT's Docket No: 0608-A40799TWm)avidchen 39 1323431 另外產生一中斷信號於步驟329上,CSP 190也會產 生一中斷代符(token)至3D管道176之先進先出記憶體’ • 步驟331,上述代符(token)功能像是一柵欄於一中斷執行 緒和下一中斷執行緒或回存執行緒之間,例如第15圖之 運轉序264,令斷代符/柵攔會傳送至3D管道Π6之各區 塊,使切換下一執行緒的可以順利完成。 如之前所述,目前DMA移位293、實體標識符309、 鲁 圖元標識符311和碑標識符317可傳送至CSP執行緒儲存 緩衝區111(第3圖),也可以是第7圖之狀態先進先出記憶 體194,更具體來說,3D管道176使用途徑207、209等 等…,以傳送資訊至CSP 190,如之前所述。 之後,在步驟334中,各3D管道架構區塊176,例如: 一個或多個第10圖之區塊,仍讓舊執行緒進入3D管道 176,直到中斷代符產生(步驟331)並且到達以及確認後, 舊執行緒才會被中斷,換句話說,當一接收到來自步驟329 φ 所產生的中斷信號後,直到接收到中斷代符(步驟334)才丟 棄相關先進先出記憶體之資料,上述中斷代符通知所有之 後指令屬於下一狀態或回存狀態(步驟3 3 6)。 根據第10圖和第18-23圖,並參考3D管道176之各 元件’以下會詳細說明第17圖之流程圖。從第1〇圖開始, 當GPU 84接收到來自處理單元16之中斷指令以中斷一已 經在處理之程序時,CSP 190藉由接線中斷線331傳送接 線信號(hardwired signal)至執行單元潭前端模组(Executi〇n Unit Pool Front Module,EUP一FR0NT)212,如第 1〇 圖所 TT's Docket No: 0608-A40799TWfTDavidchen 1^23431 下接線中斷線331也電性連接碑產生器226,如第l〇圖 所示,另外,接線中斷線331也輕接三角建立單元Tsu 214 . 和屬性建立單元ASU 218,並對應於第17圖之步驟329。 •、磚產生器226可利用一記數器以得知磚的數量,和管 道暫存器以得知上一次磚被丟棄的三角形數量和圖元數 i,並將資訊藉由資料途控207傳送回csp 190,並儲存 為一部分之中斷執行緒狀態,此資訊儲存包括G p u在下一 ^ 次執行緒回存時的位置資訊。 在接線中斷線331上的接線中斷信號也傳送至三角建 立單元TSU 214和屬性建立單元ASU 218, 一旦接收到接 線中斷信號,各三角建立單元214、屬性建立單元218和 碑產生器TG 226會立即丟棄所有在處理的資料,並進一 步停止特定執行緒’如第17圖步驟334所示,CSP 1 90, 另外發出一中斷信號於接線中斷線331上,並傳送一 ψ斷 終結代符(INT_END Token)穿過3D管道176以清除所有 鲁 賀料線上的資料流’如第17圖步驟331所示,上述中斷 終結代符(丨NT_END Token)從CSP 190先傳送至三角建立 單元214、再到屬性建立單元218以及3D管道176之其 他部分。 第18圖係顯示三角建立單元輸入解碼器214接收到 一中斷終結信號之運作流程圖340,CSP 190發出一中斷 終結代符藉由接線中斷線331至執行單元潭前端模組 EUP一FRONT 212,然而,同時CSP 190傳送一中斷信號終 結代符穿過CSP先進先出記憶體211,上述CSP先進先 TT's Docket No: 0608-A40799TWfi0)avidchen 1323431 4 出記憶體211耦接三角建立單元TSU 214,因此三角建立 單元214進行步驟342從接線中斷線331接收接線中斷信 號以檢查CSP先進先出記憶體211之輸入資料型態 (Entry Type)。 當接收到接線中斷線331上的中斷線號時(如第18圖 之CSP一TSUJNT信號)’三角建立單元214進入步驟 346,三角建立單元214讀取read、檢查check和丟棄discard EUP FIFO記憶體347之資料,EUP FIFO記憶體347是 將儲存於EUP一FRONT執行單元潭前端模組212之資料傳 送至三角建立單元214’三角建立單元212執行一丟棄回 圈DISCARD LOOP ’如第18圖所示丟棄EUP FIFO記憶 體347之執行緒直到中斷終結代符到達,上述中斷終結代 符到達代表所有關於執行緒之資料被儲存起來。 當中斷終結代符CSP_TSU_INT END TOKEN到達 EUP_FIFO記憶體347,三角建立單元214去讀取read、檢 查check和丟棄discard CSP FIFO記憶體211之内容,如 同上述EUP_FIFO記憶體347運作方式(第18圖之步驟 348),三角建立單元214執行一丟棄回圈以丟棄所有在CSP FIFO記憶體211的資料直到代表所有關於執行緒之資料被 儲存起來之中斷終結代符到達,總之,熟悉此技藝之人士 皆熟悉關於執行緒被中斷之資料如何在3D管道176中被 丟棄,三角建立單元214可回到正常運作模式(步驟343) 以處理下一執行緒。 關於 DUMP RESET-QUERY STATE M/C 步驟 350, TT*s Docket No; 0608-A40799TW£T»avidchen 42 1323431 t 第19圖係顯示在3D管道176中傾倒/重置/詢問 (dump/reset/query)狀態機制(DRq state machine)之執 行’ DRQ狀態機制開始於正常操作模式352,一旦指令一 執行’ DRQ狀態機制進入步驟354,步驟354是關於CSP 指令解碼操作’告知DRQ狀態機制(例如:TSU 214)下一 個作什麼’當中斷終結代符被接收,例如:三角建立單元 214接收到中斷終結代符|NT一end TOKEN(步驟356),即 傳送中斷終結代符至3D管道176,之後三角建立單元214 回到正常操作模式352,視為新執行緒。 關於第18圖和三角建立單元214,在中斷終結代符處 理完後’將注意力轉移到第1〇圖屬性建立單元218上。 如之前所述,屬性建立單元218也接收在接線中斷線331 上的中斷線號,並通知屬性建立單元218立刻丟棄所有關 於目前執行緒之内容。 第20圖係顯示流程圖360 ’當接收到接線中斷線331 上的中斷線號’屬性建立單元ASU 218執行程序,屬性建 立單元218 —旦接收到中斷信號,屬性建立單元218讀取 read、檢查check和去棄discard第10圖之TSU_FIF〇 記憶體215之資料(步驟364),更具體來說,屬性建立單 元218執行一丟棄回圈discard loop,以丟棄TSU_FIF〇 記憶體215之内容,直到三角建立單元214之中斷終結代 符到達。如之前所述,當屬性建立單元之DRQ狀態機制 接收到中斷終結代符INT—ENDT0KEN,執行步驟366, 其中中斷終結代符傳送至各ASU_FIF0記憶體220、 TT^ Docket No: 0608-A40799TW»Davidchen 43 1323431 ASU/ZU FFO記憶體219和AFIF0記憶體223,之後 性建立單元218回到步驟362以檢查在TS(J F|F〇記憔體 215之下-指令型態(可能是和魏行緒執行有關)丄‘回 到正常程序368。 如之如所述’屬性建立單元218傳送中斷終結代符至 ASU FIFO記憶體220,最後傳送至範圍產生單元(Span generator unit,SG)222’第21圖係顯示範圍產生單元 222執行程序之流程圖370,是有關於處理第1〇圖3d总 道176之中斷終結代符,當範圍產生單元222操作在正常 模式372時,一旦檢查到輸入型態(步驟374)並且辨識出 來自ASU FIFO δ己憶體220之指令為中斷終結代符時,範 圍產生單元222進入步驟376,在步驟376中,中斷終^ 代符傳送至磚產生器TG 226,之後導致範圍產生單元^2^ 回到步驟374檢查下一指令之型態,下一執行緒指令會在 終端終結代符之後’範圍產生單元222回到正常模式372。 如之前所述,在處理單元16發出指令之後,磚產生器 226接收來自CSP 190在接線中斷線331上之接線中斷信 號,第22圖係顯示磚產生器226接收到來自第ι〇圖之csp 190之中斷指令以執行程序之流程圖380,當接線中斷信號 藉由接線中斷線331傳送至磚產生器226時,磚產生器226 進入步驟382以檢查標頭型態和檢查關於來自CSp ^之 中斷指令。 一旦檢查出接收到一中斷信號CSP__TG_INT WIRE SIGNAL’碑產生器226進入步驟3 84並立刻傳送一碑產生 TT^ Docket No: 0608-A40799TWf/Davidchen 44 中斷代符TG—INT TOKEN至第i 〇圖之z單元位階一區塊 (ZL1)23G ’熟悉此技藝之人士皆熟悉傳送至z單元位階一 區塊230之磚產生中斷代符是來自於之前3D管道176内 傳送之中斷終結代符’磚產生中斷代符會導致清除所有耦 接碑產生器226之FIFO記憶體和暫存記憶體,但也容許 儲存相關執行緒於處理磚產生中斷代符之前。 在步驟386中,磚產生器226執行一丟棄回圈 DISCARD LOOP以丟棄輸人資料並檢查是否有中斷終結 代付,最後執行步驟386’中斷終結代符丨NT_END T〇KEN 經由第10圖之3D官道176到達磚產生器226,此時磚產 生器226進入步驟388,運作方式和之前所述類似,之後 碑產生H 226檢查下-指令之標頭型態並可回到正常模式 389(有可能是回存新執行緒執行)。 在第10圖之3D管道176的下一模組是z單元位階一 區塊(ZL1)23G。第23圖係顯示z單元位階一區塊23〇之流 程圖390,係有關於接收來自磚產生單元226之磚產生中 斷代符。 在步驟392(讃取和解碼),z單元位階一區塊zu 23〇 讀取來自磚產生單元226之資料並處理所接收之指令,然 而,當接收來自磚產生器226之指令為一磚產生中斷代符 TG_INT TOKEN時,Z單元位階一區塊ZL1 230進入步驟 394。 在步驟394中’ Z單元位階一區塊ZL1 230切換至 ASU/ZL1 FIFO記憶體219,之後執行一丟棄回圈 TT5s Docket No: 0608-A40799TWfiDavidchen 1323431 DISCARD LOOP ’ 如步赖 0 乂鄉396所示,在步驟396中,Z單 元位階一區塊230檢查並王 '棄所有來自ASU/ZL1FIF0記 憶體219之資料直到3D乾% 4 丄 u官道176之中斷終結代符到達。 當接收到中斷終結代符德 1 使’ Z單元位階一區塊ZL1 230進 入步驟398,切換至AF||^ 卜0記憶體223,之後執行一丟棄 回圈401。 Z單元位階一區塊23η 士 Α ο〇Λ U "^查並丟棄所有在AFIF0記憶 體230之資料直到AF|Fc^ k r ,ηι, , υ圮憶體230之中斷終結代符到 達(步驟401) ’在清除兩 兩FIF〇記憶體219和223後,Ζ 單元位階一區塊230切揸s^ 403),並執行另-丟棄回圈^TG F丨F〇記憶體227(步驟
單元位階-區塊230檢查和驟4〇5),在步驟405中,Z 直到中斷終結代符到達(和棄所有來自TG FIF0之資料 態機制(步驟4〇7)執行(和之:所述類似),之後,DRQ狀 一區塊230回到步驟392以勃^述類似)’因此Z單元位階 令,之後,Z單元位階-^斷終=符後之下一指 執行緒(步驟409)。 於正韦杈式下執行下一 如之前所述,在Z單元位階一 終結代符後,傳送至ZL1 FIFO々:減 30接收中斷
單元位階二區塊ZL2 234,和之^體232,並傳送至Z 艾刖所述不同,z單彳 b 二區塊234不會丟棄所有FIFO印 早疋位P白 。己憶體資料,及而各雄病 處理儲存之執行緒(一至兩百萬週瑚内的。反而會繼續
單元位階二區塊234之中斷終結代、王序然而來自Z 終點,並且是-新和/或回存執行^係代表儲存執行緒之 ’之開始。 TT^ Docket No: 0608-A40799TWf/Davidchen 46 1323431 、熟悉此技藝之人士皆瞭解中斷終結代符更傳送至3D 官道彳76之其他部分,如之前所述,中斷終結代符可傳送 至另-個3D管道176元件以清除所有相關資料線。
、因此,如之前所述,圖形處理器之圖形管道可改變狀 態或處理程序,以增加處理圖形程序的效率,並且當一處 理程序必須料另—資料之處理時間,圖形管道可以中斷 並!!換至另—執行緒’以避免管道閒置,因此藉由解決圖 φ B道運作的瓶頬,圖形管道可以更有效率運作,另外 發明非限定之實施例可在不同執行緒之間快速切換,以 免瓶頸情況的發生。 本發明雖以較佳實施例揭露如上,然其並非用以 本發明的範圍,任何熟習此項技藝者,在不脫離本發明之 精神和範圍内,當可做些許的更動與_,因此样明之 保護範圍當視後社申料鄕圍所衫者為準。又 【圖式簡單說明】 圖係顯示一計算裂置’其中執行緒切換於GPU中。 苐2圖係顯示GPU切換執行緒之切換程序。 第 第3圖係顯示用於第2圖之—執行緒儲存資料結構。 結構 :圖係顯不第—次儲存/回存前之環緩衝區之初始 =5圖係顯示當儲存/回復執行緒之後之 第6圖係顯示第4圖和第5,班η 執行之示意圖。 5圖从衝區架構被聊84 可包括儲存和回復 第7圖係顯示GPU之部分架構圖 TT's Docket No: 0608-A40799TWf/Davidchen 47 狀態,如第6圓所述。 第8圖係顯示第7圖之3D管道架構區塊17Θ之細部 圖並顯示儲存部分中斷執行緒,以及繼續處理另一部份 中斷執行緒。 第9圖係顯示流程圖,包括第7和第8圖之儲存狀態 和寫入狀態命令至CSP 190之流程。 第10圖係顯示3D管道架構區塊176(第7圖)和更詳 細管道圖(第8圖)。 第11圖係顯示第10圖之3D管道176執行 狀態程序的流程圖。 仔汗口後 第12圖係顯示第7圖之c s p可執行複數執行緒 流程圖。 流程::3圖係顯示CSP處理一目前運轉序和環緩衝器之
第Η一圖係顯示第7圖之csp運作之流程圖,當⑽ 執行一環缓衝區架構和在一迴目巾I 指令。 1圈甲寸找一裱緩衝區之終結 第15圖係顯示帛12_14圖之資料結構。 程圖第16圖係顯示當回存-執行緒時’⑽執行程序之流 第17圖係顯示第10圖之管 下一執行緒之初始流程圖。H ^了緒之中斷和 第18圖係顯示第10圖之三角 收到-中斷終結信號之運作流程圖。早兀輸入解碼器接 IT's Docket No: 〇60S-A40799TWf/Davidchen 48 1323431 第19圖係顯示在3D管道176中傾倒/重置/詢問狀態 機制之執行流程圖。 第20圖係顯示當接收到接線信號和之後中斷終結代 符,第10圖之屬性建立單元執行程序之流程圖。 第21圖係顯示第10圖之範圍產生單元執行程序之流 程圖。 第22圖係顯示第10圖之磚產生器226接收到來自CSP 之中斷指令以執行程序之流程圖。 第23圖係顯示第10圖之Z單元位階一區塊在接收來 自磚產生單元226之磚產生中斷代符之流程圖。 【主要元件符號說明】 10〜計算系統 12〜電腦 16〜處理單元 18〜糸統記憶體 21〜系統匯流排 24〜唯讀記憶體 26〜動態存取記憶體 27〜基本輸入/輸出糸統 29〜作業系統 31〜應用程式 33〜其他程式模組 3 5〜程式育料 TT’s Docket No: 0608-A40799TWfiDavidchen 49 1323431 40〜非揮發性記憶體介面 41、81〜硬碟 44〜作業系統 45〜應用程式 46〜其他程式模組 47〜程式資料 5 0〜可移動記憶體介面 51〜磁性軟碟機 52〜可移動之非揮發性磁碟 55〜光碟機 56〜非揮發性光碟片 60〜使用者輸入介面 61〜滑鼠 62〜鍵盤 70〜網路介面 71〜區域網路 72〜數據機 73〜廣域網路 80〜遠端電腦 82〜繪圖介面 85〜遠端應用程式 84〜繪圖處理單元 86〜顯示記憶體 9 0〜顯示介面 TT5s Docket No: 0608-A40799TWf/Davidchen 1323431 91〜顯示器 95〜其他周邊介面 9 6〜印表機 97〜揚聲器 111〜執行緒儲存資料結構 114〜直接記憶體存取字元偏移指標 116〜單元狀態 118〜圖元標識符 120〜實體標識符 122〜磚標識符 125〜環缓衝區 127〜標頭指標 129〜尾指標 131、135〜DMA 指令 133、137〜DMA 指標 141〜跳躍欄位 142〜空白欄位 147、148〜DMA缓衝區 152〜回復指令 154〜執行緒儲存位址 160〜162〜環缓衝區 164〜前端語法剖析器 166〜環缓衝區標頭指標 168〜環缓衝區尾指標 TT's Docket No: 0608-A40799TW€^Davidchen 1323431 170〜跳躍或回復指標 172〜剩餘部分執行緒 175〜前次操作狀態執行緒儲存資料架構 176、176a、176b、176c、176d〜3D 管道 178〜後端語法剖析器 181〜目前操作狀態執行緒儲存資料架構
190〜指令串流處理器CSP 192〜DMA區塊 194〜狀態先進先出記憶體(128*512) 195〜3D管道架構區塊176之前端部分 196〜3D管道架構區塊176之後端部分 197、198、199〜程序 205〜3D管道架構區塊176之細部圖 206〜磚標頭指標 207、209〜資料途徑 211〜CSP先進先出記憶體 212〜執行單元潭前端模組 214〜三角建立單元 215〜TSU_FIF〇記憶體 218〜屬性建立單元 219〜ASU/ZLI FIFO 記憶體 220〜ASU FIFO記憶體 222〜範圍產生單元 223〜AFIFO記憶體 TT5s Docket No: 0608-A40799TWCT)avidchen 1323431 226〜磚產生器 227〜TG FIFO記憶體 230〜Z單元位階一區塊 231〜ZFIF0記憶體 232〜Z單元位階一區塊FIFO記憶體 234〜Z單元位階二區塊 263〜奇運轉序 264〜偶運轉序 265〜記憶體之環緩衝區1之資料結構 266、271〜磚標頭指標 268〜環緩衝區尾指標 290〜DMA指令指標 291〜CSP功能 292〜DMA緩衝架構 293〜DMA位移 295〜複數實體 296〜圖元架構 298〜三角架構
313〜鑲嵌三角形標識符 317〜磚標識符 331〜接線中斷線 347〜EUP FIFO記憶體 TT's Docket No: 0608-A40799TWfDavidchen
Claims (1)
1323431 案號095137101 98年12月22日 修正本 十、申請專利範圍: 丄年月 g修正本 1. 一種可中斷繪處理個程式之方法, 包括: 接收一包含複數執行緒之第一運轉序以執行; 初始一包括關於在上述第一運轉序之執行緒之指令和 資料之緩衝區之程序; 擷取一繪圖處理單元記憶體存取指令和一指標,上述 繪圖處理單元記憶體存取指令來自上述緩衝區,上述指標 是指向關於上述緩衝區之圖形資料; 傳送上述指標至一個或多個架構處理單元,以存取暫 存狀態於上述繪圖處理單元中; 切換至上述第一運轉序之一另一缓衝區以處理關於另 一缓衝區之資料,以及; 當一最後緩衝區之運轉序是空的,切換至另一運轉序。 2. 如申請專利範圍第1項所述之可中斷繪圖處理單元 處理多個程式之方法,更包括: 決定是否上述緩衝區包含一回存指令,假如上述緩衝 區包含一回存指令時,從記憶體擷取關於上述緩衝區之儲 存狀態資料。 3. 如申請專利範圍第1項所述之可中斷繪圖處理單元 處理多個程式之方法,更包括: 擷取關於一緩衝區之一標頭和尾指標,決定在上述緩 衝區中是否一預先決定邏輯位置是跳躍指令或回存指令, 假如上述預先決定邏輯位置是一回存指令,從記憶體中取 TT’s Docket No: 0608-A40799TWfl/ 54 1323431 出儲存狀態資料。 4.如中請專利範圍第!項所述之可中斷繪圖處理單元 死理多個程式之方法,更包括: ,據執行上料圖處理單元記憶體存取指令 %衝區之一目前位置。 甘 5 夕如中請專利範圍第w所述之可中斷繪圖處理單元 處理夕個程式之方法,更包括: 記憶體存取移位值 在上述繪圖處理單元之一處理管道中,從一 态傳送關於上述緩衝區之處理資料之— θ 7处 和暫存狀態至一三角建立單元,'以及; 碑標識符至 傳送一貫體標識符、一圖元標識符、 處理單元,以處理關於上述緩衝區之資料。 處理所述…斷㈣理單元 在上述緣圖處理單元之—處理管道中,從一指令處理 -傳m角形標識符至—三角建立單元。 所述之可中斷繪圖處理單元 有關尾述標_是 衝區有關; &位置,上逑尾指標也和上述緩 空集標頭指標等於尾指標,標明上述緩衝區為— 假如上述標頭指標不等於上述尾指標,處理一個或多 TT s Docket No: 0608-A40799TWfl/ 55 個根據上述指標指向之一 元功能指令。 °°之繪圖功能和繪圖處理單 &如申請專利範圍第7 處理多個程式之方法,更包括.^可中斷繪圖處理單元 處理上述緩衝區之所有 標頭指標移動—邏輯方向, ^功能指令,上述 標’直到到達和上 曰標會靠近上述尾指 化毛扣‘―樣的邏輯值。 .如申請專利範圍第7項 處理多個程式之方法,更包括:了中斷繪圖處理單元 假如-個或多個額外緣 加入上述緩衝區,移動上 曰令或指標被 10 、毛晶軚至一新邏輯位置。 一户理/ 單元’適用於處理複數程式,包括· 制資料之處理; 之一圖形管道來控 ’、t上述繪圖處理單元建立執行緒之 行、操取關於一第一執行緒之-個或多個指令和2執 :指標,以供上述圖形管道執行、傳送上述一個或= 7和一個或多個指標至上述圖 ^ 曰 處理,豆t關於m 述圖形管道 〃 Ϋ關於上述一個或多個指令和— 資料被上述圖形管道勃彳-u次夕個‘標之 -…為ϋ ί 中斷和上述第-執行緒為 空以及假如在運轉序之所有執行緒為 另;轉r 理器至在上述運轉序之另-執行緒或 11.如申請專利範圍第10項所述之緣圖處理單元,更 TT’s Docket No: 0608-A40799TWfl/ 56 1323431 從上述處理器之一前端語法剖析器傳送上述一個或多個指 標至上述圖形管道。 12. 如申請專利範圍第10項所述之繪圖處理單元,假 如上述標頭指標不等於上述尾指標,更擷取關於在運轉序 之一第一執行緒和一記憶體存取指令之一標頭和尾指標。 13. 如申請專利範圍第12項所述之繪圖處理單元,假 如一個或多個額外指令或指標被加入至上述第一執行緒, 更移動上述尾指標至一新邏輯位置。 14. 如申請專利範圍第10項所述之繪圖處理單元,在 執行完一指令後,更決定是否上述標頭指標等於上述尾指 標,假如上述標頭指標等於上述尾指標,即到達執行緒之 一尾端,假如上述標頭指標不等於上述尾指標,執行一下 一指令或指標。 15. 如申請專利範圍第10項所述之繪圖處理單元,更 決定被執行之一資料結構中是否包含具有一回存指令之一 目前執行緒,假如上述資料結構包含一回存指令,擷取關 於一回存狀態和執行緒之所有狀態資料。 16. 如申請專利範圍第15項所述之繪圖處理單元,更 擷取關於上述目前執行緒之上述回存狀態之一個或多個記 憶體存取指令,並處理關於回存狀態至上述目前執行緒之 完成。 17. 如申請專利範圍第16項所述之繪圖處理單元,當 關於回存狀態之上述目前執行緒被完成時,上述運轉序切 換至下一執行緒。 TT’s Docket No: 0608-A40799TWfl/ 51 1323431 18. 如申請專利範圍第16項所述之繪圖處理單元,其 中上述圖形管道中上述一個或多個記憶體存取指令被傳送 至一個或多個架構單元,以回復上述回存狀態和執行緒於 之前發生中斷之一準確點上。 19. 如申請專利範圍第10項所述之繪圖處理單元,當 上述第一執行緒被完成時,傳送一中斷指令至一中央處理 器,上述中央處理器耦合至上述繪圖處理單元。 TTss Docket No: 0608-A40799TWfl/ 58 1323431 案號095137101 98年12月22日 修正頁 diU妒修正替換頁j PRECISE 300
DMA COMMAND
PRECISE TILE OF TRIANGLE 第16圖
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/271,169 US7580040B2 (en) | 2005-11-10 | 2005-11-10 | Interruptible GPU and method for processing multiple contexts and runlists |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200719275A TW200719275A (en) | 2007-05-16 |
TWI323431B true TWI323431B (en) | 2010-04-11 |
Family
ID=37721847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW095137101A TWI323431B (en) | 2005-11-10 | 2006-10-05 | Interruptible gpu and method for processing multiple contexts and runlists |
Country Status (3)
Country | Link |
---|---|
US (1) | US7580040B2 (zh) |
CN (1) | CN100435172C (zh) |
TW (1) | TWI323431B (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8139070B1 (en) * | 2007-10-03 | 2012-03-20 | Matrox Graphics, Inc. | Systems for and methods of context switching in a graphics processing system |
GB0723536D0 (en) * | 2007-11-30 | 2008-01-09 | Imagination Tech Ltd | Multi-core geometry processing in a tile based rendering system |
US9064333B2 (en) * | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8826294B2 (en) * | 2007-12-26 | 2014-09-02 | Advanced Micro Devices, Inc. | Efficient state management system |
TWI394049B (zh) * | 2008-02-20 | 2013-04-21 | Ralink Technology Corp | 直接記憶體存取系統及其傳送/接收封包之方法 |
US8082426B2 (en) * | 2008-11-06 | 2011-12-20 | Via Technologies, Inc. | Support of a plurality of graphic processing units |
US20100110089A1 (en) * | 2008-11-06 | 2010-05-06 | Via Technologies, Inc. | Multiple GPU Context Synchronization Using Barrier Type Primitives |
US9400695B2 (en) * | 2010-02-26 | 2016-07-26 | Microsoft Technology Licensing, Llc | Low latency rendering of objects |
US9727385B2 (en) | 2011-07-18 | 2017-08-08 | Apple Inc. | Graphical processing unit (GPU) implementing a plurality of virtual GPUs |
CN103106638A (zh) | 2011-11-14 | 2013-05-15 | 辉达公司 | 用于实时图像处理的图形处理装置 |
US9659342B2 (en) | 2013-06-29 | 2017-05-23 | Intel Corporation | Mid command buffer preemption for graphics workloads |
US20150187043A1 (en) * | 2013-12-27 | 2015-07-02 | Samsung Electronics Company, Ltd. | Virtualizing storage structures with unified heap architecture |
US9632761B2 (en) * | 2014-01-13 | 2017-04-25 | Red Hat, Inc. | Distribute workload of an application to a graphics processing unit |
US9691123B2 (en) * | 2014-12-15 | 2017-06-27 | Intel Corporation | Instrumentation of graphics instructions |
US10297003B2 (en) * | 2015-09-21 | 2019-05-21 | Qualcomm Incorporated | Efficient saving and restoring of context information for context switches |
US10282808B2 (en) * | 2016-05-27 | 2019-05-07 | Intel Corporation | Hierarchical lossless compression and null data support |
US10192281B2 (en) * | 2016-07-07 | 2019-01-29 | Intel Corporation | Graphics command parsing mechanism |
CN106776455B (zh) * | 2016-12-13 | 2020-08-21 | 苏州浪潮智能科技有限公司 | 一种单机多gpu通信的方法及装置 |
CN107016083B (zh) * | 2017-03-31 | 2020-02-07 | 清华大学 | 一种支持处理单元在线切换的流数据处理方法 |
US11150943B2 (en) * | 2017-04-10 | 2021-10-19 | Intel Corporation | Enabling a single context hardware system to operate as a multi-context system |
CN111581124A (zh) * | 2019-02-19 | 2020-08-25 | 睿宽智能科技有限公司 | 可缩短内文交换时间的方法及其半导体装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2050658C (en) | 1990-09-14 | 1997-01-28 | John M. Peaslee | Dual hardware channels and hardware context switching in a graphics rendering processor |
US5388219A (en) * | 1992-03-02 | 1995-02-07 | International Business Machines Corporation | Efficient channel and control unit for host computer |
US5430841A (en) | 1992-10-29 | 1995-07-04 | International Business Machines Corporation | Context management in a graphics system |
US5428779A (en) * | 1992-11-09 | 1995-06-27 | Seiko Epson Corporation | System and method for supporting context switching within a multiprocessor system having functional blocks that generate state programs with coded register load instructions |
US6112267A (en) * | 1998-05-28 | 2000-08-29 | Digital Equipment Corporation | Hierarchical ring buffers for buffering data between processor and I/O device permitting data writes by processor and data reads by I/O device simultaneously directed at different buffers at different levels |
US6208361B1 (en) | 1998-06-15 | 2001-03-27 | Silicon Graphics, Inc. | Method and system for efficient context switching in a computer graphics system |
US6608625B1 (en) * | 1998-10-14 | 2003-08-19 | Hitachi, Ltd. | Three dimensional graphic processor |
US6437788B1 (en) | 1999-07-16 | 2002-08-20 | International Business Machines Corporation | Synchronizing graphics texture management in a computer system using threads |
US6466222B1 (en) | 1999-10-08 | 2002-10-15 | Silicon Integrated Systems Corp. | Apparatus and method for computing graphics attributes in a graphics display system |
US6782432B1 (en) | 2000-06-30 | 2004-08-24 | Intel Corporation | Automatic state savings in a graphics pipeline |
US6674841B1 (en) | 2000-09-14 | 2004-01-06 | International Business Machines Corporation | Method and apparatus in a data processing system for an asynchronous context switching mechanism |
US6718403B2 (en) | 2000-12-11 | 2004-04-06 | International Business Machines Corporation | Hierarchical selection of direct and indirect counting events in a performance monitor unit |
US6519310B2 (en) | 2001-03-28 | 2003-02-11 | Intel Corporation | Hardware event based flow control of counters |
US7173627B2 (en) | 2001-06-29 | 2007-02-06 | Intel Corporation | Apparatus, method and system with a graphics-rendering engine having a graphics context manager |
US6947053B2 (en) | 2001-09-27 | 2005-09-20 | Intel Corporation | Texture engine state variable synchronizer |
US6781588B2 (en) | 2001-09-28 | 2004-08-24 | Intel Corporation | Texture engine memory access synchronizer |
US6917362B2 (en) | 2002-01-25 | 2005-07-12 | Hewlett-Packard Development Company, L.P. | System and method for managing context data in a single logical screen graphics environment |
US7015930B2 (en) | 2003-08-01 | 2006-03-21 | Ati Technologies Inc. | Method and apparatus for interpolating pixel parameters based on a plurality of vertex values |
-
2005
- 2005-11-10 US US11/271,169 patent/US7580040B2/en active Active
-
2006
- 2006-08-11 CN CNB200610110750XA patent/CN100435172C/zh active Active
- 2006-10-05 TW TW095137101A patent/TWI323431B/zh active
Also Published As
Publication number | Publication date |
---|---|
CN100435172C (zh) | 2008-11-19 |
US7580040B2 (en) | 2009-08-25 |
TW200719275A (en) | 2007-05-16 |
US20070103475A1 (en) | 2007-05-10 |
CN1912926A (zh) | 2007-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI323431B (en) | Interruptible gpu and method for processing multiple contexts and runlists | |
TWI323433B (en) | Graphics pipeline precise interrupt method and appartus | |
TWI323432B (en) | Method and device for saving and restoring a state context in a graphics processing unit | |
TWI331299B (en) | Command parsers, methods therefor, and graphic processing units using the same | |
TWI498728B (zh) | 非搶占式圖形處理單元上互動除錯之方法和裝置 | |
TW201030671A (en) | Graphics processing units, metacommand processing systems and metacommand executing methods | |
KR101666416B1 (ko) | 우선순위 기반의 컨텍스트 선점 | |
TWI502512B (zh) | 將處理器置於漸慢作業模式中之系統與方法 | |
CA2152984A1 (en) | Data streaming between peer subsystems of a computer | |
CN102999406A (zh) | 从硬件故障模式的增强转储数据收集的方法和系统 | |
JP2557199B2 (ja) | インターフェース・システムおよび方法 | |
US11868780B2 (en) | Central processor-coprocessor synchronization | |
TW200842592A (en) | Improved DMAc to handle transfers of unknown lengths | |
KR20080005523A (ko) | 동시성 도메인들과의 멀티 쓰레딩 | |
CN103562895B (zh) | 通过选择性聚合相邻数据单元来便于路由 | |
WO2020157594A1 (en) | Handling an input/output store instruction | |
TW202046094A (zh) | 處理輸入輸出儲存指令 | |
TWI277906B (en) | Method, apparatus and system for handling interrupts | |
TWI385529B (zh) | 匯流排系統以及其操作方法 | |
US7103803B2 (en) | Method for verification of command processing in a computer system design having a multiple priority command queue | |
TWI564809B (zh) | 單一中斷服務常式執行緒中處理關連於多個請求的返回實體的方法以及使用該方法的裝置 | |
US7552269B2 (en) | Synchronizing a plurality of processors | |
JP2001117772A (ja) | コンピュータ・プログラムのハザードを検出するシステム | |
TWI417786B (zh) | 幫助一處理環境中之指令執行的方法、系統及程式產品 | |
CN104620233B (zh) | 用于对cpu内的消息通道基础设施的多流访问的虚拟化通信套接字 |