TWI323433B - Graphics pipeline precise interrupt method and appartus - Google Patents

Graphics pipeline precise interrupt method and appartus Download PDF

Info

Publication number
TWI323433B
TWI323433B TW095137104A TW95137104A TWI323433B TW I323433 B TWI323433 B TW I323433B TW 095137104 A TW095137104 A TW 095137104A TW 95137104 A TW95137104 A TW 95137104A TW I323433 B TWI323433 B TW I323433B
Authority
TW
Taiwan
Prior art keywords
mentioned
memory
thread
unit
pipeline
Prior art date
Application number
TW095137104A
Other languages
English (en)
Other versions
TW200719277A (en
Inventor
Hsilin Huang
Paltashev Timour
Brothers John
Original Assignee
Via Tech Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Tech Inc filed Critical Via Tech Inc
Publication of TW200719277A publication Critical patent/TW200719277A/zh
Application granted granted Critical
Publication of TWI323433B publication Critical patent/TWI323433B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Processing Or Creating Images (AREA)

Description

1323433 九、發明說明: 【發明所屬之技術領域】 " 本發明係有關於繪圖處理,特別是有關於一種儲存和 ; 回存執行緒(context)於繪圖處理單元的方法和系統。 . 【先前技術】 目前所知的電腦系統一般包括多個處理器,例如:在 籲 電腦系統中,除了中央處理器(Central Processing Unit,CPU) 執行處理程序之外,另外電腦系統更具有一繪圖處理單元 (Graphics Processing Unit, GPU)用以減少 CPU 的負擔,使 CPU減少處理程序的負荷。在一些應用上,處理器(例如: GPU)可設置在電腦系統主機板上並且在CPU旁。而在另 一應用上,GPU和/或其他相關裝置可設置在一分離但電性 連接的卡上,例如:GPU在一顯示卡上,關於上述應用, 熟悉此技藝之人士皆熟知此應用。 ® 輔助處理器(coprocessor) ’例如:GPU,可存取如顯示 卡記憶體之額外記憶體,以執行處理程序。再者,輔助處 理器可以被設計以及最佳化來執行特殊處理程序。對於 GPU來說’ GPU可以被最佳化以執行三維圖形計算,所以 GPU可以應用於複雜的圖形計算上。然而傳統電腦系統和 輔助處理器只能勝任執行單一複雜圖形之應用,當執行多 個複雜圖形之應用時,傳統電腦系統和辅助處理器可能會 遭遇到一些問題。 對於一般輔助處理器而言,排序本身工作流程並未使 TT's Docket No: 0608-A40798TWfiDavidchen 6 其率的方法。在-些作業系統中,GPU可以多工, 所扯7^將待處理的王作依序送至GPU,GPU會依序執行 然而’這方法有—個問題就是無 ^吏用同-資源的多個應用程式的優先順序。在一㈣ 必窄H中’ 程式正在使用GPU輔助處理器時
、又㈣權給另U程式以完成他們的共同處理目 如當第-應隸式完成相關計算程序,但是第—應 二工、不交出控制權給另—個等待的應用程式,GPU會被 應用私式給佔住,而等待的應用程式則會遇到無法使 GPU的問題。如之前所述,當只有使用單—複雜圖形應 :程式時’上述_並不會太嚴重,然而,佔住㈣或並 =同處理器資源的問題’在多個應用程式同時使用Gpu 時’這個問題就會被突顯出來。
關於刀配處理不同應用程式的構想,可以藉由使用中 的方式,也就是執行緒内容從—任務跳到另一任務 A =成。更具體的來說’利用較新型的Gpu以執行執行緒 儲存/回存的構想’係利用儲存相關暫存器和程式計 、盗貝料’以、_執行之前被中斷的處理程序。然而有關 於CPU如何分配處理程序的問題已經被探討,但是有關於 輔助處理器如何分配處理程序,之前並無完整探討。 關於上述分配處理程序的問題,至少有一理由認為辅 助微處理器’(例如:GPU)可使CPU避免執行複雜計算和 耗時的权序,使CPU可以執行其他任務。圖形處理往往包 括複雜的計算,因此會使用大量處理程序的資源,當複雜 TT's Docket No: 0608-A40798TWi7Davidchen 1323433 圖形應用程式增加時,GPU會被設計成更大更複雜,以應 付複雜計算。 關於如何精確中斷CPU,對於具有平行處理功能單元 以及排序執行功能單元之巨大複雜架構EPIC型(Explicitly Parallel Instruction Computing)CPU 會有一些問題,因此 CPU架構中的暫存器必須被重新設計,使得數十個指令可 同時執行於處理管線(pipeline)之不同階段。為了使精確中 斷成為可能’ CPU必須具有一重新排序緩衝器和一額外執 行指令(instructi〇n commit (retirement))於處理管線中。 目前GPU是使用不同型指令(可稱為巨集指令),執行 各GPU指令需要數百到數千週期,目前利用GPU管線來 處理圖形的比重已經超過CPU來處理圖形的比重,因此 GPU往往會遇到因為不具有足夠處理架構來處理大量資料 於儲存和回存之間,所以目前大部分GPU朝著在任何時間 點上皆可處理大量資料的方向在設計’使得GPU在分配程 序上變的複雜。更具體的來說,GPU會採用具有長序列資 料之外來指令,例如:繪圖圖元(draw primitive),因而產 生有關於如何完成之前被中斷事件的問題。 因此,需要一新而有效的方法來克服上述缺點。 【發明内容】 有鑑於此,本發明提供一種可被中斷的繪圖處理器 GPU,因而可以在同-時間處理多個繪圖程式,繪圖處理 器是-硬體設備可藉由中斷程序以提供多個程式之間的切 TT*s Docket No: 0608-A40798TW£T!)avidchen 8 換0 初始=處接:’ ’中斷處理第-執行緒和 數管道』=’=道中’-指令處理器從複 尾傳达一中斷信號到 一 斷執行緒之尾端之代符,從指令處理器傳送至第HI中 =聽序傳送至其他圖形管道。當代符到達= 塊丟棄有關於記憶體單元之内容。代符傳送至 ^處理區塊和記憶體單元,㈣於經
= 除有關於第-執行緒之資料。有關於第二J 、、者之貝料έ在代符之後通過圖形管道。 it 2圖ΤΙ中’官道可包括一些不藉由通訊途徑搞接 曰7处理益之官道處理區塊,這些管道處理區塊繼續執行 f關於第一執行緒之資料直到接收到通過圖形管道之代 2一旦接收到代符,這些管道處理區塊也會吾棄有關於 弟一執行緒在記憶體的資料,並開始處理第二執行緒之資 料。 貝 本發明提供一種可中斷繪圖處理單元之控制方法,適 用於中斷—第—執行緒和初始-第二執行緒,係包括:在 一圖形管道中,藉由一通訊途徑從一指令處理器傳送一中 斷k旒至複數管道處理區塊;從指令處理器傳送對應於一 中斷執行緒之一終端之一代符至一第一管道處理區塊;當 在通訊途徑接收到中斷信號時,直到代符被接收到,丟棄 一記憶體之内容;以及傳送代符至其他管道處理區塊和記 憶體單元’以致於代符經由圖形管道以清除關於第一執行 77 S D〇cket No: 〇608-A40798TW£/Davidchen 9 433 緒之資料’其t經由圖形管道有 代符後被處理。 '弟一執仃緒之資料於 =明提供—種繪圖處理單元,具有管道 -執行緒和初始一第二執行緒, 早凡,設置在圖形管道中,圖形管道藉由―通 =圖處理單元之一指令處理器,其中指令處理器= 訊达徑傳运-中斷信號至各架構單元, 、 f各架構單元之間’以致於資料從-特定架 並儲存於記Μ中,之後輸出至圖形管道之下 =。其中接收到來自通訊途徑上之中斷信號,直到= 傳送至記憶體時,各架構單元吾棄記憶體之内容,記憶體 之位置在各架構區塊之間,代符係有關於第二執行緒j 始0 汗 本發明提供-種縿圖處理單元,具有一圖形管道 斷一第一執行緒和初始一第二執行緒,係包括:一第一广 數管道區塊,管道區塊依序耗接在一起和一 = 體在各管道區塊之間;一通訊途徑,麵接至输圖處 之一指令處理器和搞接至各第一複數管道區塊,並從指令 處理器傳送-t斷信號至各第-複數管道區塊,各複數^ 道區塊停止處理有關於第一執行緒之資料以及清除一先進 先出記憶體,先進先出記憶體提供資料至管道區塊,直到 傳送至緣圖管道之-代符柵’以及—第二複數管道區塊, 設置在繪圖管道内,並在第一複數管道區塊後,上述第二 複數官道區塊不耦接至通訊途徑,當接收到代符柵時,第 TT's Docket No; 〇608-A40798TWfiDavidchen 1323433 二複數管道區塊停止處理有關於第一執行緒之資料和清除 先進先出記憶體,其中先進先出記憶體提供給管道區塊的 資料。 本發明提供一種繪圖處理單元之控制方法,適用於透 過一圖形管道以中斷一第一執行緒和初始執行一第二執行 緒,係包括··在第一執行緒處理期間,檢查一中斷指令和 内部中斷事件之一者;當接收中斷指令和内部中斷事件之 一者,產生一信號在一通訊途徑上;產生一中斷代符,傳 送至一個或多個圖形管道;傳送在圖形管道上有關於中斷 執行緒之資料至一執行緒儲存緩衝區;當接收到通訊途徑 之信號時,直到接收到中斷代符,丟棄有關於第一執行緒 之執行緒内容,以及在接收中斷代符之後,初始執行第二 執行緒。 然而,本發明實施例之其他系統、方法、特徵以及一 些發明之優點可以藉由以下實施例之說明和圖示更加暸 解。 【實施方式】 本發明提供一先進排序以便虛擬一 GPU,因此使不同 程序尋找GPU可用之時段來執行,並使作業系統可以有限 度控制上述排序,當數個應用程式共用一 GPU時,作業系 統可以被設定依據不同的標準來排序各應用程式,例如: 當一程序之時間週期終止時,GPU可在下一時間週期處理 另一程序或甚至再重新執行同一程序。 TT's Docket No: 0608-A40798TWf/Davidchen -執行可包括―些執行緒内容或運算。如之前所述, 狀=代表GPU之最後執行(或最初執行)之所有 飞:二禮之日上述㈣包括狀g暫存器、快速緩衝暫存區、 ::目錄内容,所有内部先進先出缓衝器 ::二執行緒切換至另一執行緒,也可能是G心 當—執行绪切換時,錯存所有Gpu之狀態可能是不切 實際,因為切換需要-至三毫秒’在這段期間内並不是所 有狀態都需要。因此GPU可只儲存部分程序,以減少儲存 狀態的量。 GPU可具有多層管道’因此可以在任何時間於不同位 置取得三角形(triangles)和像素(pixeis),另外Gpu可經由 不同層管道以讀取、修正和/或寫入資料至記憶體中。在一 非限定例子中,GPU可具有Z層以磧取、比較和有條件更 新資料。另外,GPU之寫回單元可以設計為圖形元件之目 的讀取八务正/寫入元件,因此記憶體可以是被追蹤狀態的一 部份。假如執行緒被停止並重新開始,GPU不應再一次读 取/修正/寫入同一像素於同一記憶體中,再一次讀取/修正/ 寫入會造成不同結果,因此GP U必須不能追蹤所胃有在執行 緒切換之前寫入記憶體之資料(猶如儲存狀態之—部分), 以避免上述情況發生° 第1圖係顯示一計算裝置,其中執行緒切換於一 GPU 中,第1圖和以下敘述將提供一計算系統和外部連接環境 的概述。然而,無論是手持、可攜式、其他計算裝置和所 TT's Docket N〇: 0608-A40798TW i/Davidchen 12 1323433 有種類電腦也都可以使用本發明所揭露的方法。因此熟悉 此技藝之人士皆瞭解’本發明並不限定只能使用於本發明 所揭露之一般電腦,另外本發明也可以執行在其他應用 * 上。例如.本發明所揭露可以.儲存資料、傳送資料至另一 • 電腦以及接收來自另一電腦之資料之系統。 本發明可應用於一作業系統執行程序,以供裝置或物 件之服務之開發者使用’本發明也包括與此討論之相關應 用軟體。軟體可以是一般電腦可執行指令之執行緒,例如: 被一個或是多個電腦執行之程式模組,上述電腦可以是工 作站、伺服器或其他裝置。程式模組可包括電腦程序、程 式、物件、元件、資料結構和類似程式執行一特定任務或 特定抽象資料型態。程式模組之功能可結合或分解成不同 的組態。 其他廣為人知的電腦系統、計算環境(中央處理機模式 和系統程式)和/或電腦裝置,包括個人電腦(Pers〇nal φ Computer,PC)、自動櫃員機(Automated Teller Machine, ATM)、伺服電腦、手持裴置電腦、筆記型電腦、多處理器 糸統、微處理器糸統、可私式客制化電子設備、上網型個 人電腦、各種設備、發光系統,控制環境裴置、微電腦、 大型電腦以及類似設備。本發明可應用於藉由遠端處理裝 置經由通訊網路/匯流排或其他資料傳輸介面之計算應^ 以及分配計算應用上’在分散式計算環境中,程式^可 同時在本地電腦和遠端電腦之儲存介面裡,此儲存介面勺 括記憶體裝置,並且客戶端和伺服端可以互換。 匕 'TT's Docket No: 0608-A40798TWfiDavidchen 1323433 第1圖之計算系統10包括〆電腦12 ’電腦12包括一 處理單元16、一系統記憶體18和一系統匯流排21 ’系統 匯流排21輕接許多系統裝置,包括輕接系統記憶體18至 處理單元16,系統匯流排21玎以是任何型態的匯流排’ 如熟悉此技藝之人士熟悉之記憶體匯流排或記憶體控制 器、周邊匯流排以及本地匯流排等等之不同匯流排架構。 例如:周邊零件連接介面(Peripheral Component Interconnect, PCI)、加速圖形介面(Accelerated Graphics Port,AGP)和/或周邊零件連接快速介面PCI Express。 電腦12可包括不同的電腦可讀取媒體,電腦可讀取媒 體可以是藉由電腦12存取揮發性和非揮發性記憶體以及 可移動式和不可移動式記憶體之媒體,電腦可讀取媒體可 包括電腦儲存媒體和通訊媒體。電腦儲存媒體可包括揮發 性和非揮發性記憶體、可移動式和不可移動式記憶體以及 採用任何方法和技術之儲存媒體,例如:熟悉此技藝之人 士熟悉之電腦可讀取媒體 '資料結構、程式模組或其他資 料。電腦儲存媒體包括動態存取記憶體RAM、唯讀記憶體 ROM、電子抹除式可編程唯讀記憶體EEpR〇M、快閃記愴 體Flash或其他記憶體、唯讀光碟CDR〇M、數位影音= DVD或其他光學儲存碟、卡式磁帶、磁帶、磁碟或其他磁 性儲存裝置、或其他媒體’以用來儲存#料並提供 12存取使用。 电% TT's Docket No: 〇608-A40798TWf/Davidchen 1323433 η
Me_y,R〇M) 24和動態存取記憶體(Random Access
Mem〇「y,RAM) 26。—基本輪人/輸出系統(Basic
Input/Output System, BIOS) 27 f於唯讀記憶體2 4之資料於電腦系統i 2之各元件間,例 嶋時’㈣存取域體26·存可以被處理 =存取和處理之#料和/或料模組。作業系統29、 =程^、其他程式模組33和程式f料%也可從動態 存取έ己憶體26中取得。 發電腦儲存媒介,一:碟動之揮發和非揮 =存媒體,-磁性軟碟機= = :: 揮發性光:或寫 儲移動/不可移動之揮發和非揮發電腦 儲存媒體包括磁帶、快閃記憶體、數位影=電月匈 音帶、固態動態存取記憶體、固態唯 ''位影 體,但不限制以上所列之儲存媒體。° 以及其他媒 、硬碟41-般經由非揮發性記憶體介面 匯流排21,同樣的,磁性軟碟機51和光碟機糸統 移動記憶體介面50連接至系統匯流排2i, 1猎由可 圖係顯示)之相_存媒體可提供電腦可讀㈣(和第1 、=式模組和其他資料之儲存空 、存= 糸統44、應用程式45、其他程式模組扣和=,業 上述兀件有可能來自於相同或來自二广7。 於不冋的作業系統 TT's Docket No: 〇608-A40798TWmDavidchen 1323433 29、應用程式31、其他程式模組33和/或程式資料35。 有關於第1圖之非限定例子,不同參考標號之軟體代表著 不同種類軟體。 使用者藉由鍵盤62和滑鼠61輸入指令和資料於電腦 12中’鍵盤62和滑鼠61藉由使用者輸入介面60和系統 匯流排21搞接至處理單元16。然而,熟悉此技藝之人士 也可使用其他介面和匯流排,例如:平行埠(parallel port)、 遊戲埠(game port)或通用序列匯流排(unjVersal 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,顯示介面90也與顯示記憶體86互相傳送 資料’除了顯示器91外,電腦系統12也可包括其他周邊 輸出裝置,例如:印表機96和揚聲器97。印表機96和揚 聲器97皆可藉由其他周邊介面95耦接至電腦12。 TT's Docket No: 0608-A40798TW&Davidchen 16 1323433 « 熟悉此技藝之人士瞭解電腦12可以使用於網路或分 散式計算環境與其他端電腦連接,例如遠端電腦8〇,遠端 電腦80可以是個人電腦、伺服電腦、路由器、網路電腦、 * 或其他網路節點’遠端電腦80也具有如電腦12所具有之 : 元件或是部分電腦12所具有之元件,儘管在第1圖中只 顯示記憶體儲存裝置81和應用程式85。第1圖中也顯示 利用區域網路(local area network,LAN) 71和廣域網路 肇 (Wide A「ea Network, WAN) 73耦接遠端電腦80,但不限 定’熟悉此技藝之人士也可以使用其他網路/匯流排來連 接。 在第1圖中,遠端電腦8〇可藉由區域網路(|0Ca| area i^ietwork,LAN)71和網路介面7〇耦接電腦ι2,同樣也可 藉由數據機72,經由使用者輪入介面6〇,和WAN輕接遠 端電腦80。 如之前所述當GPU 84在處理另一執行緒時 ,可以切 • 換程序或執行緒,在中斷那一刻,GPU 84儲存一中斷執 行緒並開始另一執行緒(此一執行緒也有可能是上一次被 中斷而儲存之執行緒)。 關於儲存和回復狀態執行緒之狀態,第2圖係顯示 GPU 84切換執行緒之切換裎序。在階段1〇1,Gpu 84執 行一目剷GPU狀態執行緒,然而在第一步驟(jnterrUpt)i, 處理單元16發初一中斷指令或事件,GPU 84於是開始 儲存GPU狀態執行緒,如階段1〇3所示,(關於如何實行 中斷指令和事件,之後會詳細解釋),之後Gpu狀態執行 TT's Docket No: 0608-A40798TWf7Davidchen 1323433 緒儲存(save)2 ’如步驟2,當GPU 84切換GPU狀態執 行緒時,如階段105 ’ GPU 84執行第3步驟(new context) 載入一新GPU狀態執行緒,如階段1〇7,之後GPU 84執 行第4步驟回至階段1〇彳,以執行新的GPU狀態執行緒。 當GPU 84完成新載入之GPU狀態執行緒後,執行第 5步驟(END〇F CONTEXT),GPU 84跳回階段105,切 換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接收到中斷命令時,切換一執行緒至另 一執行緒’並在環緩衝區之末端(分別如步驟1至步驟5), 當中斷命令下達時,GPL) 84儲存狀態執行緒,並在儲存 完後立刻繼續執行下一執行緒。
第3圖係顯示用於第2圖之一執行緒儲存資料結構 111 ’這些在執行緒儲存資料結構111之結構單元狀態可 定義在中斷時的單元狀態。執行緒儲存資料結構111包括 數種欄位’包括一直接記憶體存取字元偏移指標(DMA word offset pojnteoiu、原始標識符(Primitive ID)118、 TTJs Docket No: 〇608-A40798TW£Davidchen 18 1323433 饕 蠢 實體標識符(Instance ID)120和一中斷DRAW命令之磚標 識付122。執行緒儲存資料結構^ 11也可包括指令串流處 理器(Command of a stream processor,CSP)、執行單元 EU(Execution Unit)、瓦片陰影單元(Tjle Shader unit,tSU) : 和其他處理程序單元狀態於116中,當中斷時,這些儲存 • 於執行緒儲存資料結構111之架構單元狀態可定義單元的 狀態。假如GPU 84將一些資訊保存為準備儲存的格式 鲁 (ready-t〇-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」D Primitive_ID; lnstance_ID lnstance_ID; TileJD TileJD; TT's Docket No: 0608-A40798TWCDavidchen 1323433 } context一save area 第4圖係顯示第—次儲存/回存(和第2圖 程序有關)前之環緩衝區125之勒始結構,一環、·、 如:環緩衝區U5可包括-串指令和相關執行:之纪 憶體指標’環緩衝區125包含一標頭指襟(kad pointer )127和一尾指標⑽丨p〇inter)129,標碩指標η? 包含有關處理指令之邏輯位置和環緩衝區125之指%I,尾
指標129儲存資料是有關環緩衝區125之邏輯尾端位置, 當更多指令加入執行緒時,尾指標129在執行緒執行’2 圖之階段101)時會更新。 環緩衝區125也包含DMA記憶體指令131#DMA指 標133(指向:DMA緩衝區147,DMA緩衝區147包含指^ 和資料是有關於環緩衝區125之執行緒)。另外二^二 ⑵可包含龐指令,例如:DMA指令丨 才不’例如.才曰^; 137 ’指標137指向DMA緩衝區148,
DMA緩衝區148包含指令和資料,第4圖之環緩衝區125 也包括跳躍攔位(skip 1 DW0RD)141和空白欄位142之兩 位置保留攔,在一儲存/回復之後(稍後討論),跳躍欄位141 和空白欄位142分別儲存執行緒儲存指令和指標位址。 當GPU 84開始執行環緩衝區125時,GPU 84接收標 頭指標127和尾指標129,並且檢查一儲存執行緒。跳躍 攔位(位置保留欄)141可使GPU 84跳過或是忽略空白攔位 142而跳到下一 DMA指令欄位131,此時,環緩衝區125 不會被中斷,GPU 84另外繼續執行第4圖中環緩衝區125 TT9s Docket No: 0608-A40798TWf/Davidchen 20 1323433 蠢 之指令以及執行DMA緩衝區147和148之内容(例如繪圖 指令 draw command、圖元 primhives、實體 instances 和磚 tiles)。 第5圖為當儲存/回復執行緒之後(如第2圖所示)之環 緩衝區150’第4圖環緩衝區125之位置保留欄141和142 被回復指令(restore command)152和執行緒儲存位址 (context save address)154所取代,執行緒儲存位址154 指向狀態執行緒儲存緩衝區111,如第3圖所示。 當第5圖GPU 84處理環緩衝區彳50時,識別完回復 指令152 ’ GPU 84藉由執行緒儲存位址154即得知應擷 取狀態執行緒儲存緩衝區111之資料,從狀態執行緒儲存 緩衝區111取得的資料也可提供DMA緩衝區147之DMA 移位146資料,因此可以在正確中斷點開始處理。 第6圖係顯示環緩衝區架構162被Gpu 84執行之示 意圖160,稍後會詳加敘述,環緩衝區彳62(可能類似第4 圖之環緩衝區125或第5圖之環緩衝區15〇),包括一環緩 衝區標頭指標(ring buffer head)166和環緩衝區尾指標 (ring buffer tail)168 ’ 一跳躍或回復指標(skip 〇「 restore)170可在環緩衝區尾指標168之後(類似第4圖之 跳躍攔位141和第5圖之識別完回復指令I”),一剩餘部 分執行緒(「est of context in ring buffer)172也在環緩衝區 162裡’剩餘部分執行緒172也包括一個或多個DMA指 令和指標,如之前所述。 GPU 84也包括一指令串流處理器(c〇mmand stream TT’s Docket No: 0608-A40798TWf/Davidchen 21 1323433
Processor,CSP)19〇,如第7圖所示。CSP 190也包括和 3D官道(3D pipe|ine)i76連接之一前端語法剖析器 (Front-end parse「)l 64 和一後端語法剖析器(Back-end parse「)178。 當接收到環緩衝區標頭指標166和環緩衝區尾指標 168時’前端語法剖析器164開始分析環緩衝區162,之 後,前端語法剖析器164根據指令指標彳7〇是否為一跳躍 或回復指令來檢查一儲存執行緒,假如指令17〇是一跳躍 指令,這表不環緩衝區162之前不被中斷過,因此csp 190 執打剩餘部分執行緒172(可包括一個或多個DMA指令和 指標),假如前端語法剖析器164辨識出指令17〇為一回 復指令(如第5圖之回復指令152),即執行回復指令 Restore CMD,而前次操作狀態執行緒儲存資料架構 (Previous run state context save data structure” 75 被擷 取(如第6圖所示)且回復Rest〇re states至前端語法剖析 器164中,之後這回復執行緒被3D管道176處理並傳送 至csp後端語法剖析器178,其操作如同目前操作狀態執 行緒儲存資料架構(current run state context save data structure)181。
第7圖係顯示GPU 84之部分架構圖,可包括儲存和 回復狀態(如第6圖所述),GPU 84可包括CSP 190,CSP 190包括一前端語法剖析器164和一後端語法剖析器 (如之前所述),這些裝置藉由3D管道176來協調指令之處 理,一 DMA區塊192可存取記憶體86,以擷取前端語法 TT*s Docket No: 〇6〇8-A40798TW^Davidchen 22 1323433 剖析器之狀態和指令。CSP 190包括—記憶體194( — 128*512狀態先進先出記憶體)以擷取從後端語法剖析器 17 8之狀態和指令。 第6圖之3D官道176可更包括3D管道架構區塊(3D pipelinearChbl〇Ck)176a-176d’ 如第 7 圖所顯示,犯管 道架構區塊176可以是瓦片陰影單元、陰影產生器單元和 瓦片產生器等等…,熟悉此技藝之人士皆熟悉此技藝,如 第10圖所示。 為了儲存所有狀態,當接收到一中斷指令時,各3D 管道架構區塊176可以傳送本身狀態指令 _mands之複製本至CSP 19〇,當接收各架構區塊176 之狀態指令時,CSP190可寫資訊至一記憶即28*512狀 態先進先出記憶體)194,之後存入記憶體86中(如之前所 述)。在一非限定的例子中,3D管道架構區塊(17仙和17如) ,由資料途徑(207和209)連至Csp⑽之後端語法剖析 為178。儘管以下會有更細節討論,並不是每一個管 道架構區塊176具有-資料途經至後端語法剖析器 然而資料途徑(207和209)可以健存Gpu 84正在處理中的 資料,以致於一執行緒可以被中斷和再開始。 資料途徑(207和209)介於3D管道架構區塊(17 咖)中,另一種說法,就是各3〇管道架構區塊並不 一專用資料途徑至後端語法剖析$ 178,因此 、 管道架構區塊176之狀態至一狀能头、隹春、 次』丨a 狀態先進先出記憶體194之 貝料返徑可以是專㈣或是共㈣,因為狀態改變不常發 TT's Docket No: 0608-A40798TW£/Davidchen 23 1323433 生,所以3D管道架構區塊176共用資料途徑(2〇7和2〇 可以減少3D管道架構區塊π6和csp後端言吾法剖析器 178之間的資料途徑數,換句話說,減少資料途捏,可二 供晶片其他模組和/或架構使用。 第8圖係顯示第7圖之3D管道架構區塊176之細部 圖205,和中斷一執行緒操作以致於保留一磚標頭指標 206、DMA移位293(參見第15圖)、實體標識符3〇9(參見 第15圖)和圖元標識符311(參見第15圖)。—3d管道架 構區塊176之前端部分195包括三角建立單元214和屬性 建立單兀218,根據程序(在新執行緒開始之前,丟棄舊執 行緒資料)197丟棄一中斷執行緒之資料,因此繪圖指令 (Draw command)、頂點(Vertices)、狀態指令(state command)和圖元指令(prjmjtjVe assembled)等等…被丢 棄於到達磚產生器226之前(可參考第17圖之步驟334)。 磚產生器226可儲存磚標識符(ti|e id)於中斷那一刻, 其他如目前標頭指標(current head p〇jnte「)206、DMA位 移293、實體標識符(jnstance id) 309和圖元標識符311 也會被儲存,這個流程位在步驟(準確GPU中斷以協調執 行緒之儲存)198,稍後也會有更詳細說明。 在第8圖之步驟(舊執行緒在新執行緒開始之前被輸出) 199中,3D管道架構區塊176繼續處理舊執行緒資料,因 為部分舊執行緒已經由3D管道架構區塊176被拿出來處 理,因此至少一部份舊執行緒在收到中斷程序時已經完成。 第9圖係顯示流程圖200,流程圖2〇〇包括第7和第 TT^ Docket No: 0608-A40798TWf/Davidchen 24 * 8圖之儲存狀態流程和寫入狀態命令至CSP 190流耩’在 般程序中’ 3D管道架構區塊176操作在步驟201,根據 暫存區丨D引導3D管道架構區塊176寫入狀態至暫存器 令’在無中斷模式下(NON-INT MODE),各3D管道架構 , 區塊176操作從步驟2〇1至步驟203,去檢查下一登錄程 序,當接收到一區塊狀態登錄時,假如無接收到中斷指令’ 管道架構區塊176可再執行步驟201。 鲁然而’假如CSP 190接收到一指令指示切換至中斷模 式’3D管道架構區塊176移至步驟2〇4,以便儲存被GPU 84目前執行之狀態執行緒(請參考第2圖之步驟彳〇3),之 後3D管道架構區塊176跳至步驟2〇3以檢查下一登錄程 序並繼續操作,如之前所述。 當事件發生時’3D管道架構區塊176建立一執行緒儲 存=貝料結構111 (第3圖)藉由經由資料途徑(2〇7和209)傳 送狀癌資料至CSP 190’區塊176a和區塊176c也可分別 _ 傳送資料至區塊176b和區塊176d,並且傳送至區塊176b 和區塊176d之資料可經由資料途徑(2〇7和209)傳送至後 端語法剖析器178。 第10圖係顯示3D管道架構區塊176(第7圖)和更詳 細管道圖(第8圖),第10圖為熟悉此技藝之人士熟悉之圖 示,並且不限定於此一圖形管道,這些區塊在不離^發明 概念下重新排列’也可達成類似結果,如之前所述,CSp 190可與3D管道架構區塊176耦接與溝通,其中包括三 角建立單元(Triangle setup unit,TSU) 214以接收從指令 TT's Docket No: 0608-A40798TWf0Davidchen 25 1323433 * 串流處理器之先進先出記憶體(CSPFIF0)211之指令,三 角建立單元214藉由TSU FIFO記憶體215傳送處理過的 資料至屬性建立單元(Attribute setup unit, ASU)218,ASU 218傳送處理過的資料至ASU/ZL1 FIFO 219、範圍產生 單元(Span generator unit, SG)222和屬性先進先出記憶 體(Attribute FIFO, AFIF〇)223。 SG 222傳送處理過的資料至磚產生單元(Tile generator unit, TG) 226。Z 單元位階一區塊(ZL1 )230 接 收來自 ASU/ZL1 FIFO 記憶體 219、AFIFO 223 和 TG FIFO 227 之資料,其中 TG 226 耦接 TG FIFO 227,ZL1 230 將接收到的處理資料藉由ZFIF0 231和ZL1 FIFO 232傳 送至Z單元位階二區塊(zi_2)234。 熟悉此技藝之人士皆熟悉第1〇圖之3D管道架構區塊 176(之後稱為3D管道)只是一圖形管道之一部分’另外, 寫回單元、像素封包區塊和其他區塊可以是3D管道176 中其他部分’為了簡單起見,所以不在這裡贅述。
上述執行緒儲存和回復狀態程序可以被第10圖之3D 管道176執行,第11圖係顯示流程圖240,流程圖240 顯示第10圖之3D管道176執行儲存和回復狀態程序的流 程。 關於執行緒之儲存程序,當GPU 84處理一執行緒時 可能會接收到來自CPU(第1圖之處理單元)之一中斷指令 (如步驟242),關於步驟244 ’ 3D管道176等待磚產生器 226或一寫回單元(第10圖中並未顯示)之清除指令被執 TT*s Docket No: 0608-A40798TW^avidchen 26 1323433 备 行,CSP 190可辨識磚產生器226是否清除,因為當標頭 指標改變時,CSP 190每次會傳送一代符通過管道,當磚 產生器226接收到代符以及處理代符,並且會含知r CSP 190收到。 當CSP 190初始一圖形指令或開始狀態時,cSP 190 更會傳送DMA DWORD OFFSET至管道176,轉產生器 226 也傳送 DMA DWORD OFFSET 至 CSP 190,當狀態 傳送至磚產生器(如第7圖所示)和資料途徑(207和209) 時’碑產生器226也會傳送狀態回去。 第11圖之區塊247係顯示’當接收到來自cpu 16 之中斷指令時(步驟242),狀態和指標會被儲存。當碑產生 器226接收到中斷指令時’磚產生器226會傳送丨D(設所 有ID為〇)至CSP 190(假如碑產生器226在處理狀態時遇 到中斷)’另外’在步驟247時,磚產生器226可儲存指 標和狀態,包括磚標頭指標、DMA移位(DMA OFFSET)、 實體標識符(instance ID)、圖元標識符(prjmitjve ID)、磚標 識符(tile ID)和所有暫存狀態,因此被儲存之執行緒可以快 速回存,資料可包括以及儲存成第3圖之執行緒儲存資料 結構111。 之後GPU 84可以切換至另一運轉序(run丨|幻)(步驟 249) ’這些程序可以被切換並可包括一個或多個被3D管 道176執行之執行緒(如第12圖所示)。 關於管道176之回存一狀態之流程程序,當目前執行 程序已經完成或當一指令已接收並執行時,GPU 可切 TT^ Docket No: 0608-A40798TWf/Davidchen 27 1323433 換回之前但只部分執行過之程序(如步驟251),之後GPU 84可回存之前所有儲存狀態(在步驟247中所儲存之 態)(步驟253) , CSP 190(步驟256)略過圖形指令直到移 位之前所儲存DMA移位量後遇到之所儲存之圖形指令 (稍後有更詳細之說明),之後磚產生器226(步驟258)略^ 圖形指令直到接收到所有在步驟247儲存之實體標識^ (instance ID)、圖元標識符(PrirTm丨ve丨⑺和磚標識符
ID),之後管道執行任—未完成之程序(步驟26Q)(稍後 詳細之說明)。 x ―關於-執行緒回存程序之開始,csp 19〇需要處 有兀件之狀態,包括目前標頭指標、DMA移位量 標識符、圖元標識符和碑標識符(可能在之前步驟24
(#),";bChSP _g buffer head P0jnter,經由儲存程 述),並且處理被標頭指標指向之DMA 子^ =引所 ^令直爿DMA位址等於直接記憶 =3八ET),使得CSP190重新開始執行之前被中^ = 之才曰々’可能是在三角形(triang丨e)中間,但不限定。 CSP彻可在回存狀態程序時略過實體(_ = ID_ance|D)符合,也可略 = 符合,實體ID和圖元|D皆儲存在狀態先進 存器194皮所以CSP190可以比較被回存至實體旧 =貫體,另-程序區塊(為GPU84計算核心—部份)略過三 角形直到關於-特別三角形之圖元丨D符合,例如:三角; TT's Docket No: 0608-A40798TWm)avidchen 28 丨D可被儲存至分離執行區塊暫存區(並未顯示),磚產生器 226在回存程序可略過磚(tile)直到磚符合磚id(在一儲存
私序’儲存步驟247),一旦ID符合,CSP 190切換3D 管道從一略過狀態至一正常狀態。 CSP 190產生一個或多個代符和3D管道176溝通, 代符包括暫存器位址,並且和一位移量一起代表上一中斷 之處理私序點’為了彈性改變狀態執行緒儲存架構,CSP 190細作之架構包括密集包裹所有區塊狀態至記憶體86, 此CSP 190可執行一彈性包袤暫存移位丨b|e pack 「egister 〇ffset) ’當接收到一中斷執行緒(〇〇他^)時,暫 存器移位會告4各3D管道176 -位置點以恢復或回存操 作藉由增加移位量至中斷執行緒之暫存位址,中斷執行 、’者位址可以被快速找得。關於第1Q圖之各3D管道架構區 塊176,各3D管道架構區塊176關連之區塊丨D和相關位 移量y用於恢復時計算其位址,以這方法,Gpu84可藉 由狀態執,緒儲存和回存,以執行—中斷於應肺式中, 二3D^官道架構區塊176可以同時使用—個或多個應用 权式分旱其功能和運作。 ;第11圖執行緒儲存程序240,可提供彈性變化% 狀知執仃捕存架構巾,0此—程序包括密集封包所有區 於記憶體8",在Gpu次設計流程中,3[ 構區塊176之各區塊可經常改變暫存器規格。在-导I1疋的例子中’假如系統超過2〇個處理區塊(1池、 ·_·176η ’ n大於20),會造成花費大量時間在改變 TT»s Docket No: 〇608-A4〇798TWfmavidchen 1323433 ^ 暫存器資料封包硬體。 因此,使用一可調封包暫存器位移量可以解決上述問 題,以下表格提供一組暫存器,使狀態資料儲存在一執行 緒儲存架構中,關於各狀態資料之區塊,提供各自位移量, 係包括一位移暫存内容和一暫存丨D之組合。CSP 190可 發出一組專門針對管道176之區塊的暫存指令,在一非限 定的例子中,移位量為128位元,以下為一非限定例子之 暫存器組之表格: 移位暫存〇 區塊ID 1 區塊ID 0 移位暫存1 區塊ID 3 區塊ID 2 移位暫存2 區塊ID 5 區塊ID 4 移位暫存3 區塊ID 7 區塊ID 6 移位暫存4 區塊ID 9 區塊ID 8 移位暫存5 區塊ID 11 區塊丨D 10 移位暫存6 區塊ID 13 區塊ID 12 移位暫存7 區塊丨D 15 區塊ID 14 移位暫存8 區塊ID 17 區塊丨D 16 移位暫存9 區塊ID 19 區塊ID 18 移位暫存10 區塊丨D 21 區塊丨D 20 以下為一長度暫存器之表格,敘述關於各區塊之狀態 資料長度,並對於各區塊之運算碼雙字元(opcode double word)定義資料的上限,長度暫存器可被CSP 190拿來作 内部測試,不像上述敘述之移位暫存,長度暫存器可格式 為長度32位元,以下表格(並不限定)為長度暫存表格: 長度暫存〇 區塊ID 3 區塊ID 2 區塊丨D 1 區塊ID 0 TT’s Docket No: 0608-A40798TWf/Davidchen 30 1323433 長度暫存1 區塊丨D 7 區塊丨D 6 區塊丨D 5 區瑰1 ID 4 長度暫存2 區塊ID 11 區塊ID 1〇 區塊丨D 9 區塊ID 8 長度暫存3 區塊ID 15 區塊ID 14 區塊丨D 13 區塊ID 12 長度暫存4 區塊丨D 19 區塊ID 18 區塊丨D 17 區塊ID 16 長度暫存5 空 區塊ID 20 根據上述資訊’ CSP 190可決定各區塊暫存器記憶體 之長度和位移量,也就是關於記憶體之位址位置(bl〇ck_id) 和暫存器(η),利用基本位址加上移位暫存量 (block_id(n))<<4(12位元為一暫存區),利用這方法,狀態 執行緒儲存架構可以具有彈性,並可以提供GPU設計上的 彈性。 第12圖係顯示第7圖之CSP 190可執行複數執行緒之 運轉流程圖,各執行緒具有自己環緩衝區,例如:環缓衝 區125、150或162。如第12圖所示,CSP 190可切換於兩 運轉序(run list)之間,包括奇運轉序(Run list odd)和偶運轉 序(Run list even) 264,本發明並不限定於此例,各運轉序 包括,(context 0)執行緒 0、(context 1)執行緒 1、(context 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 TT’s Docket No: 0608·A40798TWCDavidchen 31 1323433 處理一目前運轉序和環緩衝器之流程圖275。 GPU 84可接收運轉序指令,之後如第12圖所示排序 位址格從〇到3,如同第13圖之步驟279,以建立一運轉 序’如第12圖所示,CSP 190開始執行偶運轉序或奇運轉 序之執行緒〇。 在第13圖中,CSP 190取得頭和尾指標並且檢查用以 跳躍或儲存指令之一代符(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。當頭指標器(hea(j p〇inter)在環緩 衝區1上從左至右移動時,頭指標器在DMA指標區290 之前可能會讀到一跳略或回存指令,當回存指令不存在時 會使CSP 190開始存取DMA緩衝區,並進而存取dma緩 衝區292和處理在緩衝區相關資料的圖形。 在第13圖中,在取得環緩衝區資料後,csp 19〇和3D 管道176開始處理目前環緩衝區(步驟289),在第12圖中, CSP 190開始處理偶運轉序之包含緩衝區〇之執行緒〇,假 TT^ Docket No: 0608-A40798TWfiDavidchen 32 1323433 如執行緒是空的(步驟294) ’切換至下一執行緒(步驟 297) ’ CSP 19〇會切換從執行緒Q至執行緒i,因此環_ 區1會被載人並且執彳了’在切換至環緩衝區丨_,會 是否有來自CPU 16的中斷信號(步驟299),假如沒有中斷 信號’ csp 190會回到步驟282以執行第12圖之環緩 !,然而假如在步驟299偵測到中斷信號,會跳到步驟3〇1, 處理中斷程序,並且回到步心2,之後執行第U圖之執 行緒儲存程序。 執 參
假如在步驟294偵測執行緒不是空的,csp卿 端語法剖析器164會之後傳误曰‘ ro J 和〜暫存狀態至第移位 , 口又rSU 214,前端語法剖拚 也傳送_D、圖元旧、頂點·如 斤 至適當位置以執行’另外,前端語法剖析器164 可執仃任何所需初始CSP之指令。 :續執行第12圖之環緩;區彳,進入下一 ’其中料道,㈣編物析器178 溝通,因此意味已經執行到環緩衝區之 八 二伽執行之前處理程序之所有儲存狀態=端t指 令(步驟308)。 〈俊鈿冲刀才日 關於第13圖之流程取得環緩衝 處理程序會-直繼續直到環緩衝區之終結 會停止。第14圖係顯示第7圖之cSpi9〇 中斷才 當CSP 19〇執行一環緩衝區架構和尋找1 結指令。關於第14 ®之步驟310,cs广緩衝區之… LSP 19〇處於閒置狀 TT*s Docket No: 0608-A40798TWfiDavidchen 33 1323433 態並等待一環緩衝區資料以執行。在步驟312,相對應於 第13圖之步驟282,CSP 190取得環緩衝區之頭和尾指 標,例如:在第12圖中,偶運轉序264之執行緒1之環 緩衝區,和等待頭和尾指標(步驟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並 準備重複上述之程序。 TT’s Docket No: 0608-A40798TWf/Davidchen 34 第n係顯不上述第12、14圖之資料結構’並可應用 於第1 ϋ之GPU 84以回存之前中斷執行緒,運轉序 264(出現於第12圖)可執行如之前所述,因此—執行緒切 換可從執行緒0至執行緒1。 在記憶體之環緩衝區1之資料結構265可被存取以回 存特定執行緒1,類似於上述所述,環緩衝區,資料结構 265包括-磚標頭指標_headpQjnte⑽6,在處理執行 緒時,GPU 84會更新磚標頭指標266,同樣得,環緩衝 區1之貝料結構265也可包括一環緩衝區尾指標(Rjng buffer tail ρ〇丨ntef)268 ’此環緩衝區尾指標268也會被更 新(士第12圖)’假如在第1 $圖中,將指令和指標加入至 裱緩衝區1資料結構裡’然後環緩衝區尾指標也會被調整。 裱緩衝資料取得順序可限定csp功能只能行使dma 才曰令私裇290之執行(請參考第圖所示),CSP 190取 得在環緩衝區1資料結構中之碑標頭指標,(係顯示於第 15圖之環緩衝區1之資料結構),當運轉序264之執行緒 1在之前被中斷時,CSP 190載入所有跟DMA指令指標 290相關之資料至csp標頭指標(csp HEAD pTR),上述 CSP標頭指標指向CSP功能291,並輸入至3D管道176。 DMA指令指標290是由DMA緩衝架構292組成(並不 限訂於此)’包含繪圖指令〇至繪圖指令5,在回存執行緒 時,CSP 190也處理DMA移位(DMA OFFSET)293(類似之 前第5圖所述),因而可回到之前被中斷時之正確位置點, DMA移位293是一邏輯距離’上述邏輯距離在DMA緩衝 TT^s Docket No: 0608-A40798TWf/Davidchen 35 1323433 架構292中,並介於DMA緩衝標頭指標和目前指令指標 (Current Command POINTER)之間0 在第15圖中之例子,CSP 190可得知DMA移位293 . 至繪圖指令4之重新開始之位置,繪圖指令4可包括多個 ; 實體(instance),更具體來說,繪圖指令4更包括實體標識 符(Instance ID)0-5,並且依序執行,在執行完實體5後, 會跳到繪圖指令5,繪圖指令5和其他繚圖指令也都包括 $ 多個實體。 從運轉序264重新建立執行緒時,CSP 190會忽略之 如執行貫體直到上一次中斷之實體標識符(Instance ID),在 本發明實施例中(並不限定於此),實體標識符309指向複 數實體295之實體4 ’因此CSP 190會忽略所有實體〇_3 直到貫體4,因為實體標識符309符合邏輯位置。 各實體包含一個或多個圖元(primitive),如圖元架構 296所示依序排列,在不限制之本發明實施例中,圖元〇_M φ 組成一實體(Μ為整數),直到圖元標識符(Primitive ID)311 符合之前中斷位置點時’DMA緩衝架構292之中斷繪圖指 令4才會被CSP 190執行(和之前所述一樣),在不限制之 本發明實施例中’圖元標識符311指向圖元1,這意味著 圖元0在之前中斷時已經被處理過,所以CSP 190略過圖 元0。 各圖元0-M是由一個或多個磚(Tile)組成的,可以形成 —三角架構298 ’在不限制之本發明實施例中,圖元2可 包含磚0-8以構成三角架構298,磚產生器TG 226會略過 TT5s Docket No: 0608-A40798TWf/Davidchen 36 1323433 磚0-3直到磚標識符(TileID)參考之 中斷位置點。 ,磚4也就是之前 使用上述方法,第15圖之資料架 回存一圖形處理至之前被中斷的位置點, 過繪圖指令、實體、圖元和TG 226 :由CSP 190略 ==斷所儲存之標識符ID,並正確快速地回 被中㈣點’以避免重複處理之前處理過的資料。
第16圖係顯示當回存—執行緒時,咖_執行程序 之流私圖252 ’第16圖之流程^ 252包括帛n圖之步驟 253、2允和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)位置0 此時CSP 190可辨識之前程序被中斷的磚ID 317,因 TT’s Docket No: 0608-A40798TWfDavidchen 37 1323433 此磚產生器226(第10圖)可完成處理三角形區(如步驟315 顯示)’在確認辨識DMA指令、螬' 圖指令、實體id、圖元 ID和磚ID之後,執行緒可被完全回存至3d管道176中, . 猶如之前沒有被中斷情形。 由於之前中斷而執行緒被改變,在一實體中之部分三 角形已經被執行’三角形標識符(triangle ID)可能被傳送至 TSU 214,一繪圖圖元之各二角形各具有一獨一無二之三 角形標識符,當執行緒被中斷時,有可能其中部分三角形 鲁 或是全部三角形被執行,在這個實體中,一鑲嵌三角形標 識符(Tessellated Triangle ID)313(可能是從別的單元產生 出來)可傳送至TSU 214以回復部分被執行之圖元並加以 處理(第16圖之步驟319)’因而正讀三角形(triangk)傳送 至磚產生器226,並可和相關碑標識符(tile m)作匹配(如之 前所述)’無論圖元已經被鑲鉗與否’之前中斷執行緒動作 可以變成好像之前無中斷的情形。 因此本發明主要著重於執行緒之架構和切換,當接收 到來自第1圖處理單元16之中斷指令時,包括可提供精準 回復之賀料結構,然而當一執行緒被中斷時,GPU 84或者 更明確疋第10圖之3D管道176 ’應該可在一邏輯點上, 終結中斷程序,因此下一程序(無論是否回存)根據上述程 序,可以被3D管道176執行。 根據本發明實施例’一執行緒可以被儲存以及一新執 行緒在約一或兩百萬週期後開始,因為必須提供足夠輪詢 時間(wmp-up time)給一些程序,以便減少追蹤狀態和減少 TTss Docket No: 0608-A40798TWf7Davidchen 38 當一儲存狀態被重新開始時之複雜度,因此,一邏輯位置 會中斷在第10圖3D管道176之磚產生器226上,然而, 另位置可能不是在碑產生器226上而是在zli單元⑽ f ’也可以應用同樣的方法和標識符,並將儲存之碑標識 付在ZL1單元230上作比較。 =而,根據不限定之本發明實施例,中斷點可以在磚 產生器j26上,任何被磚產生器226所接收的磚(tile),要 J處里單元16 σ知執行緒切換時,才會可被允許傳送至其 他官道單元(包括ZL1單元230和隨後的單元),以穿過整 個3D管道176。然而,任一還未到達磚產生器226之三角 形(triangle)和磚(tiie) ’當Gpu 84接收到#斷指令時,當 執行緒被回存時,會丟棄現有程序並重新產生回存的程 序。換句話說,當執行緒被回存時,在3]D管道176單元 中,於磚產生器226之前元件,會丟棄所有現有處理程序, 並重新產生回存的程序(請參考第8圖)。 當中斷發生時(在磚產生器226上),除了非常長的 像素著色器程式(pixel shader program),3D管道176町以 繼續處理所有在磚產生器226之後的磚(tile)(因為能在〆 或兩百週期内完成)。但如果中斷在第10圖之三角建;草 元TSU 214,3D管道176可能不能在一至三百萬毫秒内處 理完資料。假如中斷程序之大小比磚(tile)還小,並不會對 管道很快處理資料造成很大的影響。藉由中斷於管道义 產生器上,一部份處理程序仍然可以繼續,一部份處谬择 序可能要被廢除,妓且被中斷點會被儲存,以供下/未爹
Docket No: 0608-A40798TWf/〇avidchen 39 1323433 新開始時使用,根據非限定之本發明實施例,使得一些資 料被語法分析以及重複,使得3D管道176可以正確回存 至上次中斷點。 . 根據本發明不限定之實施例,無論何時dma緩衝器 •(⑶^^叫切換,CSP 19〇可藉由傳送一代符(t〇ken)(internal fence)牙過3D官道176,至磚產生器226,並回到csp 19〇 以得知那裡指令剖析以重新啟動—執行緒。根據本發明非 限定之實施例,CSP 190知道什麼時候可以安全地忽略一 DMA緩衝區292。本發明非限定之實施例也提供紀錄對應 於磚產生器226上DMA緩衝區之位置,並提供新繪圖指 令,如第12圖所示。因此當一執行緒,例如在第12圖偶 運轉序之執行緒1,被依序回存,語法剖析可從被中斷之 繪圖指令開始,例如在緩衝區292之螬·圖指令〇。 第17圖係顯示325流程圖,第1〇圖之CSP 190可到 步驟329並中斷一執行緒並重新另一執行緒於第1〇圖之 I 3D管道176中’在步驟326中,也和第2圖之步驟101相 同’一目前執行緒被處理到完,如之前所述,例如:第13 圖之步驟294。當執行緒被處理至步驟326時,會偵測是 否有中斷事件發生(步驟327),假如沒有中斷事件發生,執 行緒會繼續執行到完(步驟326)。 假如一中斷事件發生並且被偵測到(步驟327),CSP 190進入步驟329並電性傳送一中斷信號至一個或多個 3D管道176之處理區塊。如之前所述,由於清除管道上 半部區塊之延遲時間,可能導致不完整的執行緒切換時 TT's Docket No: 0608-A40798TWfiT>avidchen 1323433 間,所以管道之特定上半部區塊的資料可以被忽略,而管 道下半部區塊則繼續處理程序。步驟329提供一預先決定 3D管道176之區塊數量以接收來自CSP之一中斷信號。 另外產生一中斷信號於步驟329上,CSP 190也會產 生一中斷代符(token)至3D管道176之先進先出記憶體, 步驟331,上述代符(token)功能像是一柵攔於一中斷執行 緒和下一中斷執行緒或回存執行緒之間,例如第15圖之 運轉序264,中斷代符/柵攔會傳送至3D管道176之各區 塊,使切換下一執行緒的可以順利完成。 如之前所述,目前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)才丟 棄相關先進先出記憶體之資料,上述中斷代符通知所有之 後指令屬於下一狀態或回存狀態(步驟336)。 根據第10圖和第18-23圖,並參考3D管道176之各 元件,以下會詳細說明第17圖之流程圖。從第10圖開始, 當GPU 84接收到來自處理單元16之中斷指令以中斷一已 TTJs Docket No: 0608-A40798TWWDavidchen 41 1323433 % 經在處理之程序時,CSP 190藉由接線中斷線331傳送接 線信號(hardwired signal)至執行單元潭前端模組(Executi〇n
Unit Pool Front Module,EUP一FR〇NT)212,如第 1〇 圖所 示’接線中斷線331也電性連接磚產生器226,如第1 〇圖 : 所示,另外,接線中斷線331也耦接三角建立單元TSU214 和屬性建立單元ASU 218,並對應於第17圖之步驟329。 碑產生器226可利用一記數器以得知磚的數量,和管 φ 道暫存态以得知上一次磚被丟棄的三角形數量和圖元數 量,並將資訊藉由資料途徑207傳送回Csp 19〇,並儲存 為一部分之中斷執行緒狀態,此資訊儲存包括Gpu在下一 次執行緒回存時的位置資訊。 在接線中斷線331上的接線中斷信號也傳送至三角建 立單疋TSU 214和屬性建立單元ASU 218, 一旦接收到接 線中斷仏號,各二角建立單元214、屬性建立單元218和 碑產生器TG 226會立即丟棄所有在處理的資料,並進一 φ 步停止特定執行緒,如第17圖步驟334所示,CSP 190, 另外發出一中斷信號於接線中斷線331上,並傳送一中斷 終結代符(INT一END Token)穿過3D管道176以清除所有 資料線上的資料流,如第17圖步驟331所示,上述中斷 終結代符(INT_END Token)從CSP 190先傳送至三角建立 單元214、再到屬性建立單元218以及3D管道176之其 他部分。 ~ 第18圖係顯示三角建立單元輸入解碼器214接收到 一中斷終結信號之運作流程圖34〇 , CSP 19〇發出一中斷 TT's Docket N〇: 0608-A40798TWfTDavidchen 42 1323433 終結代符藉由接線中斷線331至執行單元潭前端模組 EUP一FRONT 212 ’然而’同時CSP 190傳送一中斷信號終 結代符穿過CSP先進先出記憶體211,上述CSP先進先 出記憶體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_FIF0記憶體347,三角建立單元214去讀取read、檢 查check和丟棄discard CSP FIFO記憶體211之内容,如 同上述EUP_FIFO記憶體347運作方式(第18圖之步驟 348)’三角建立單元214執行一丟棄回圈以丟棄所有在CSP FIFO記憶體211的資料直到代表所有關於執行緒之資料被 儲存起來之中斷終結代符到達,總之,熟悉此技藝之人士 皆熟悉關於執行緒被中斷之資料如何在3D管道176中被 TT*s Docket No: 0608-A40798TWf/Davidchen 43 1323433 讀 丟棄,三角建立單元214可回到正常運作模式(步驟343) 以處理下一執行緒。 關於傾倒/重置/詢問(dump/reset/que「y)狀態機階段 • 350 ’第19圖係顯示在3D管道176中傾倒/重置/詢問 ;(dump/reset/query)狀態機制(DRQ state machine)之執 行’ DRQ狀態機制開始於正常操作模式352,一旦指令一 執行,DRQ狀態機制進入步驟354,步驟354是關於cSp 指令解碼操作,告知DRQ狀態機制(例如:Tsu 214)下一 _ 個作什麼,當申斷終結代符被接收,例如:三角建立單元 214接收到中斷終結代符丨Ντ一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—FIFO 記憶體215之資料(步驟364),更具體來說,屬性建立單 元218執行一丟棄回圈DISCARD LOOP,以丟棄 TSU一FIFO §己憶體215之内容,直到三角建立單元214之 TT's Docket No: 0608-A40798TWf/Davidchen 1323433 t 中斷終結代符到達。如之前所述,當屬性建立單元之DRQ 狀態機制接收到中斷終結代符丨NT_ENDTOKEN’執行步 驟366 ’其中中斷終結代符傳送至各ASU—FIFO記憶體 , 220、ASU/ZLI FIFO 記憶體 219 和 AFIFO 記憶體 223, ; 之後屬性建立單元218回到步驟362以檢查在TSU FIFO 記憶體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中,中斷終結 代符傳送至磚產生器丁G 226,之後導致範圍產生單元222 回到步驟374檢查下一指令之型態,下一執行緒指令會在 終端終結代符之後’範圍產生單元222回到正常模式372。 如之刖所述’在處理單元16發出指令之後,碑產生器 226接收來自CSP 190在接線中斷線331上之接線中斷信 说’第22圖係顯示碑產生器226接收到來自第1〇圖之csp 190之中斷指令以執行程序之流程圖380,當接線中斷信號 藉由接線中斷線331傳送至碑產生器226時,磚產生器226 進入步驟382以檢查標頭型態和檢查關於來自cSP 19〇之 TT5s Docket No: 0608-A40798TWf/Davidchen 45 1323433 中斷指令。 一旦檢查出接收到一 Φ &
一 J 甲斷信號 CSP_TG_INT WIRE SIGNAL’磚產生器226進入來 退入步驟384並立刻傳送一磚產生 中斷代符TGJNT T0KEN至第Π)圖之Z單元位階-區塊 (ZL1)23Q’熟悉此技藝之人切熟悉傳送至Z單元位階- 區塊230之磚產生中斷代符是來自於之前3D管道176内 傳送之情終結代符,磚產㈣斷代符㈣致清除所有輕 接磚產生β 226之FIFO記憶體和暫存記憶體,但也容許 儲存相_行緒於處理磚產4巾斷代符之前。 在步驟386中,磚漆& 今產生器226執行一丟棄回圈 DISCARD LOOP 以丟棄輪 λ _ %入貧料並檢查是否有中斷終結 代符,最後執行步驟386,中齡,^
τ斷終結代符ΙΝΤ一END TOKEN 經由第10圖之3D管道176 $丨丨、去由士 0到達磚產生器226,此時磚產 生器226進入步驟388,運作士 下方式和之前所述類似,之後 磚產生器226檢查下一指令之 ΟΟΛ/^_ 之払頭型態並可回到正常模式 389(有可能是回存新執行緒執行 在第10圖之3D管道i7fi at 1 6的下一模組是Ζ單元位階一 區塊(ZL1)230。第23圖係顯示ζ單元位階一區塊23〇之流 程圖390’係有關於接收來自碑產生單元226之碑產生中 斷代符。 在步驟392(殯取和解碼),ζ單元位階一區塊ZL1 23〇 讀取來自磚產生單元226之資料並處理所接收之指令,然 而,當接收來自磚產生器226之指令為一磚產生中斷代符 TGJNT TOKEN時,Z單元位階一區塊zu 23〇進入步驟 TT's Docket No: 0608-A40798TWfiDavidchen 46 394。 在步驟394中’ Z單元位階-區塊ZL1 230切換至 ASU/ZL1 FIFO記,ftn 219 ,之後執行一丢棄回圈 DISCARD LOOP ’如步驟396所示在步驟396中,z單 兀位階-區塊230檢查並*棄所有來自AS[J/ZL1 F|F◦記 憶體219之貝料直到3D管道176之中斷終結代符到達。 當接收到中斷終結代符後,z單元位階—區塊zu 23〇進 入步驟398,切換至Anp〇記憶體223,之後執行一丟棄 回圈401。 Z單兀位階-區塊23Q檢查並丟棄所有在AF| F0記憶 體23〇之貧料直到AF|p〇記憶體23〇之中斷終結代符到 達(步驟4〇1),在清除兩FIFO記憶體219和223後,Z 單το位階一區塊230切換至TG F|p〇記憶體227(步驟 403) ’並執灯另-丟棄回圈(步驟4〇5),在步驟4〇5中,z 單το位階-區塊230檢查和丢棄所有來自TG F丨F〇之資料 直到中斷終結代符到達(和之前所述類似),之後,DRQ狀 態機制(步驟4G7)執行(和之前所述類似),因此z單元位階 一區塊230回到步驟392以執行中斷終結代符後之下一指 令’之後,Z單元位階一區塊230於正常模式下執行下一 執行緒(步驟409)。 如之前所述’在Z單元位階一區塊ZL1 230接收中斷 終結代符後,傳送至ZL1 FIFO記憶體232,並傳送至Z 單元位階二區塊ZL2 234,和之前所述不同,Z單元位階 二區塊234不會丟棄所有FIFO記憶體資料,反而會繼續 TT*s Docket No: 0608-A40798TWCDavidchen 47 1323433 ιΦ 處理儲存之執行緒(一至兩百萬週期内的程序),然而來自ζ 單元位階二區塊234之中斷終結代符係代表儲存執行緒之 終點,並且是一新和/或回存執行緒之開始。 熟悉此技藝之人士皆瞭解中斷終結代符更傳送至3D 管道176之其他部分,如之前所述,中斷終結代符可傳送 至另一個3D管道176元件以清除所有相關資料線。 因此,如之前所述,圖形處理器之圖形管道可改變狀 態或處理程序,以增加處理圖形程序的效率,並且當一處 理程序必須等待另一資料之處理時間,圖形管道可以中斷 並切換至另一執行緒,以避免管道閒置,因此藉由解決圖 形管道運作的瓶頸,圖形管道可以更有效率運作,另外本 發明非限定之實施例可在不同執行緒之間快速切換,以避 免瓶頸情況的發生。 本發明雖以較佳實施例揭露如上,然其並非用以限定 本發明的範圍,任何熟習此項技藝者,在不脫離本發明之 精神和範圍内,當可做些許的更動與潤飾,因此本發明之 保護範圍當視後附之申請專利範圍所界定者為準。 【圖式簡單說明】 第1圖係顯示一計算裝置,其中執行緒切換於GPU中。 第2圖係顯示GPU切換執行緒之切換程序。 第3圖係顯示用於第2圖之一執行緒儲存資料結構。 第4圖係顯示第一次儲存/回存前之環缓衝區之初始 結構。 第5圖係顯示當儲存/回復執行緒之後之環緩衝區。 TT*s Docket No: 0608-A40798TW£ODavidchen 48 丄 _ 圖係顯示第4圖和第5圖環緩衝區架構被GPU 84 執行之示意圖。 ry 圖係顯示GPU之部分架構圖,可包括儲存和回復 狀態,如第6圖所述。 第8圖係顯示第7圖之3D管道架構區塊176之細部 圖’並顯示錯存部分中斷執行緒,以及繼續處理另一部份 中斷執行緒。
第9圖係顯示流程圖,包括第7和第8圖之儲存狀熊 和寫广狀態命令至CSP 19〇之流程。 第ίο圖係顯示3D管道架構區塊176(第7圖 細管道圖(第8圖)。 更孑 狀態=二第1〇圖之3D管道176執行儲存和回復 流程^圖係顯示第7圖之CSP可執行複數執行緒之運轉
第13圖係顯示csp處理一 流程圖。 目鈿運轉序和環緩衝器之 第14圖係顯示第7圖之CSp μ〜 m ^ 連作之流程圖,壹「ςρ 執行一%緩衝區架構和在一迴圈中 指令。 _$緩衝區之終結 第15圖係顯示第12-14圖之資料結 第16圖係顯示當回存一執行緒 程圖。 w 執仃程序之流 第17圖係顯示第1〇圖之管 道之第一執行绪之中斷和 TT,s Docket No: 〇60S-A40798TWfiT>avidehen 49 1323433 下一執行緒之初始流程圖。 第18圖係顯示第10圖之三角建立單元輸入解碼器接 收到一中斷終結信號之運作流程圖。 „ 第19圖係顯示在3D管道176中傾倒/重置/詢問狀態 . 機制之執行流程圖。 第20圖係顯示當接收到接線信號和之後中斷終結代 • 符,第10圖之屬性建立單元執行程序之流程圖。 第21圖係顯示第10圖之範圍產生單元執行程序之流 籲程圖。 第22圖係顯示第10圖之磚產生器226接收到來自CSP 之中斷指令以執行程序之流程圖。 第23圖係顯示第10圖之Z單元位階一區塊在接收來 自磚產生單元226之磚產生中斷代符之流程圖。 【主要元件符號說明】 鲁 10〜計鼻糸統 12〜電腦 16〜處理單元 18〜糸統記憶體 21〜系統匯流排 24〜唯讀記憶體 26〜動態存取記憶體 27〜基本輸入/輸出糸統 29〜作業系統 TT’s Docket No: 0608-A40798TWf/Davidchen 50 1323433 31〜應用程式 33〜其他程式模組 35〜程式資料 40〜非揮發性記憶體介面 41、81〜硬碟 44〜作業系統 45〜應用程式 46〜其他程式模組 47〜程式資料 5 0〜可移動記憶體介面 51〜磁性軟碟機 52〜可移動之非揮發性磁碟 55〜光碟機 56〜非揮發性光碟片 60〜使用者輸入介面 61〜滑鼠 62〜鍵盤 70〜網路介面 71〜區域網路 72〜數據機 73〜廣域網路 80〜遠端電腦 8 2〜、纟會圖介面 85〜遠端應用程式 TT's Docket No: 0608-A40798TWCDavidchen 1323433 嶠 84〜繪圖處理單元 86〜顯示記憶體 9 0〜顯示介面 • 91〜顯示器 . 95〜其他周邊介面 9 6〜印表機 97〜揚聲器 111〜執行緒儲存資料結構 • 114〜直接記憶體存取字元偏移指標 116〜單元狀態 118〜圖元標識符 120〜實體標識符 122〜磚標識符 125〜環緩衝區 127〜標頭指標 129〜尾指標 ® 13卜135〜DMA指令 133、137〜DMA 指標 141〜跳躍欄位 142〜空白欄位 147、148〜DMA緩衝區 152〜回復指令 154〜執行緒儲存位址 160〜162〜環緩衝區 TT's Docket No: 0608-A40798TW£TDavidchen 1323433 164〜前端語法剖析器 166〜環緩衝區標頭指標 168〜環緩衝區尾指標 . 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 記憶體 TT*s Docket No: 0608-A40798TW£Davidchen 1323433
A 220〜ASU FIFO記憶體 222〜範圍產生單元 223〜AFIFO記憶體 • 226〜磚產生器 . 227〜TG FIFO記憶體 230〜Z單元位階一區塊 • 231〜ZFIFO記憶體 232〜Z單元位階一區塊FIFO記憶體 • 234〜Z單元位階二區塊 263〜奇運轉序 264〜偶運轉序 265〜記憶體之環缓衝區1之資料結構 266、271〜磚標頭指標 268〜環缓衝區尾指標 290〜DMA指令指標 291〜CSP功能 ❿ 292〜DMA缓衝架構 293〜DMA位移 295〜複數實體 296〜圖元架構 298〜三角架構 309〜實體標識符 311〜圖元標識符 313〜鑲嵌三角形標識符 TT^ Docket No: 0608-A40798TWf/Davidchen 1323433 嚤 317〜磚標識符 331〜接線中斷線 347〜EUP FIFO記憶體 參 TT's Docket No: 0608-A40798TWOT)avidchen

Claims (1)

  1. 案號095137】〇4 98年12月22 曰 修正本 、申請專利範圍:修. 正本 可中㈣圖處理單元之控财法,適用於中 第執行緒和初始一第二執行緒,包括: 、 …-圖形官道中’藉由—通訊途徑從—指令處理器傳 运一中斷信號至複數管道處理區塊; =述齡處理器傳送對應於一中斷執行緒之―終端 代付至一第一管道處理區塊; 代符料料徑接收耻述中斷錢時,直到上述 代付被接收到,丟棄一記憶體之内容;以及 傳送上述代符至其他管道處理區塊和記憶體單元,以 緒之mr上述圖形管道以清除關於上述第-執行 之資料於上述代符後被處理。 執仃緒 之/制二:请::範圍第1項所述之可中斷繪圖處理單元 =方法,其中複數管道處理區塊輕接上述通訊途徑, 上述官道處理區塊包括一三角建立單元、一屬性 兀、一碑產生單元和-執行單元潭前端模细。 夕㈣如申5月專利乾圍第1項所述之可中斷緣圖處理單元 至其中直到上述代符從一先進先出記憶體傳送 進先出理早疋’各上述管道處理單元丢棄在上述先 道之資料’上述先進先出記憶體減各上述管 之專利範圍第1項所述之可中斷繪圖處理單元 二0其中上述§己憶體是先進先出記憶體。 0608-A40798TWfl 56 之㈣=請專利範圍第1項所述之可中斷緣圖處理單元 前的工tr其中在上述管道處理區塊中,在上述代符之 塊中、二上述第一執行緒有關’其令在上述管道處理區 在上述代符之後的資料與上述第二執行緒有關。 之_如申睛專利範圍第1項所述之可中斷緣圖處理單元 之控制方法,更包括: M f最後管道處理區塊接收來自—記憶體之上述代 =猎由上述管道處理區塊之上述通訊途徑從上述最後管 =理區塊傳送—迴授訊息至上述指令處理器, =輯位置介於上述最後管道處理區塊和鄰近上罐 吕道處理區塊之間。 7. 一種繪圖處理單元,具有一圖形管道以中斷一第一 執行緒和初始一第二執行緒,包括: …複數架構單元,設置在上述圖形管道中,上述圖形管 f猎由一通訊途徑轉接至上述綠圖處理單元之-指令處理 器’其中上述指令處理H藉由上述通訊途徑傳送一中斷信 號至各上述架構單元,以及; …一記憶體,設置在各上述架構單元之間,以致於資料 ^特定架構單元輸出並儲存於上述記憶體中,之後輸出 至上述圖形管道之下一架構單元, 其中接收到來自上述通訊途徑上之上述中斷信號,直 到一代符傳送至上述記憶體時,各上述架構單元丟棄上述 记憶體之内容,上述記憶體之位置在各架構區塊之間,上 述代符係有關於上述第二執行緒之開始。 〇608-A40798TWfl 57 丄:^ 如申請專利範圍第7項所述之繪圖處理單元,更包 —複數額外架構單元,設置在上述圖形管道中,並且不 藉由上述通訊途徑耦接至上述指令處理器,其中各上 夕卜^構單元繼續處理上述第—執行緒,直到接收到來^額 之刖架構區塊和一之前記憶體單元之一者之上述代符。 9.如申請專利範圍第7項所述之繪圖處理單元,其 之-上述架構單元是—三角建立單元’ #接收上述通訊 斷信號時,直到上述代符職上述執行單元輸出 =出記憶體’、丟棄一執行單元輸出先進先出記憶體之 二仃緒,上述執行單元輸出先進先出記'It軸接至上 述三角建立單元’並丢棄一指令處理器記憶體之内容,直 到^代符職上述指令處理器記憶體,上述 讀體_至上述三角建立單元,其中上述代符傳送至: 一角建立單元記憶體。 10.如申請專利範圍第9項所述之繪圖處理單元,其 上述架構單元是—屬性建立單元,當接收上述通訊 逆之中斷信號時’直到上述代符到達上述三角建立單 το記憶體’丟棄上述三角建立單元記憶體之上述内容,上 述三角建立單元記憶體耦接至上述三角建立單元, 逃代付傳运至—屬性建立單元先進先出記憶體和—個或多 個額外先進先出記憶體單元。 如申咕專利範圍第1 〇項所述之緣圖處理單元,其 中之一上述架構單元是磚產生單元,當接收來自上述通訊 0608-A40798TWfl 58 1323433 ,徑=上述中斷信號時,直到上述代符到達上述三角建立 早兀先進先出記憶體’丟棄上述三角 ^ 容’其中上述代符傳送至磚產生單元先進==内 a ”請專利範圍第7項所述之繪圖處理單元,i 一各上述讀體是—先進先出記憶體,並在各上述架構單 凡之間。 A -種繪圖處理單元’具有—圖形管道以中斷一第 一執行緒和初始一第二執行緒,包括: -第-複數管道區塊’上述管道區塊依序•接在一 起,和-先進先出記憶體在各上述管道區塊之間; 通矾途徑,耦接至上述繪圖處理單元之一指 至各上述第-複數管道區塊,並從上述指令處理 =傳送-中斷信號至各上述第—複數管道區塊,各上述複 數官道區塊停止處理有關於上述第—執行緒之資料以及清 除先進先出記憶體,上述先進先出記憶體提供資料至上 述管道區塊,直到傳送至上述_管道之―代符栅,以及; 一第二複數管道d塊’設置在上述繪圖管道内,並在 上述第-複數管㈣職,±述第二複好道區塊不麵接 ^上述通訊途徑,當接收到上述代符栅時,上述第二複數 官道區塊停止處理有關於上述第一執行緒之資料和清除上 ,先進先出記憶體,其中上述歧先出記憶體提供給上述 管道區塊的資料。 14.如申明專利範圍第13項所述之緣圖處理單元,其 中上述第—複數管道區塊包括-三角建立單元、一屬性建 〇608-A40798TWfl 59 1323433 立單元和一磚產生單元。 中上1^二請專利範圍第14項所述之繪圖處理單元,直 二^厂處理器傳送資料至上述指令處理器記憶體心 元從一指令處理器記憶體接收上述代符、豆 =二立!元傳送資料至三角建立單元記憶體,i mi早缺-三角建立單元記憶體接收上述代符, 』體3屬性建立單元傳送資料至上述屬性建立單元 述代:符。“碑產生早几從一屬性建立單元記憶體接收上 中夕一\如申:專利|& 11第14項所述讀圖處理單元,其 -述第二複數管道區塊包括一 ” 上述ζ單元位階一模組從上述屬性建立單元之先且出 =體和上述碑產生單元之-先進先出記憶體接 專鄉_13項所述^ ==圖形管道上之上述代符之後的資料與上述第二執 如申請專㈣圍第13項所述之 中上述代符傳送通過上述第—複數 各上述第二複數管道區 ^鬼之後在通過 中,有關於上述第-執行绪之弟二複數管道區塊 間,然而在上述第—複續處理一段時 緒之資料,會從記憶體中丢棄有關於上述第一執行 19.如申請專利範圍第13項所述之緣圖處理單元,更 0608-A40798TWfl 包括: 連接之一上述第-複數處理區塊 第-執行緒之::暫:::=#送有關於上述 上:複數處理區塊二二以^^ 緒之上述狀態暫存資料,f接收有關於上述第一執行 第-執行緒之程序。、’、以’Λ设執行上述圖形管道之上述 开以、首1 士種繪圖處理單元之控制方法,適用於透過圄 =道以中斷-第—執行緒和初始執行一第::包圖 中斷事件2者執⑽處理期間’檢查一中斷指令和内部 信號==::指令和内—-者,產生-產生一中斷代符,僂 傳送在上述圖形管道上有::或多個上述圖形管道; 至-執行緒儲存緩衝區;彳關於上述中斷執行緒之資料 述中=到徑之上述信號時,直到接收到上 以及; 有關於上述第—執行緒之執行緒内容, 在接收上述中斷代符 22.如申請專利範圍第21 ^始執订上述第二執行緒。 、所述之一種繪圖處理單元 0608-Α40798丁 Wfl 61 ,其中上述通訊途徑之上述信號傳 非全部上述圖形管道。 丨刀 之申請專利朗第21項所述之-種_處理單元 一工'法,其中傳送有關於上述第一執行緒之資料 標=體移位值一實體標識符、—㈣標識符、和—磚 2《如申請專利範圍第23項所述之一種繪圖處 工1J方法’當上述第-執行緒被中斷時,紀錄有關於上 ^己^移位值 '上述實體標識符、上述圖元標識符、、和 上述磚標識符之一處理位置。 之申請專利範圍第21項所述之一種緣圖處理單元 述第-P ’上述圖形管道之一或多個元件丢棄有關於上 如申明專利範圍第21項所述之一種緣圖處理 之,制方法,其中上述第二執行緒是一回存執行緒,上述 回純行緒具有相對應於之前上述第二執行緒之-中斷位 置之一記憶體移位值、一實體標識符、一圖元標識符 一磚標識符。 27.如申請專利範圍第21項所述之一種繪圖處理單元 之控制方法’其中當接收到上述通訊途徑之上述信號時, 述5¾/言道上有關於上述中斷第一執行緒之資料傳送至 上述執行緒儲存緩衝區。 0608-A40798TWfl 62 1323433
    修正頁 PRECISE
    DMA COMMAND
    I PRECISE TILE OF TRIANGLE 第16圖
TW095137104A 2005-11-10 2006-10-05 Graphics pipeline precise interrupt method and appartus TWI323433B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/272,220 US7583268B2 (en) 2005-11-10 2005-11-10 Graphics pipeline precise interrupt method and apparatus

Publications (2)

Publication Number Publication Date
TW200719277A TW200719277A (en) 2007-05-16
TWI323433B true TWI323433B (en) 2010-04-11

Family

ID=37737953

Family Applications (1)

Application Number Title Priority Date Filing Date
TW095137104A TWI323433B (en) 2005-11-10 2006-10-05 Graphics pipeline precise interrupt method and appartus

Country Status (3)

Country Link
US (1) US7583268B2 (zh)
CN (1) CN1916961B (zh)
TW (1) TWI323433B (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8144149B2 (en) * 2005-10-14 2012-03-27 Via Technologies, Inc. System and method for dynamically load balancing multiple shader stages in a shared pool of processing units
US7711990B1 (en) 2005-12-13 2010-05-04 Nvidia Corporation Apparatus and method for debugging a graphics processing unit in response to a debug instruction
US7600155B1 (en) 2005-12-13 2009-10-06 Nvidia Corporation Apparatus and method for monitoring and debugging a graphics processing unit
US8212824B1 (en) * 2005-12-19 2012-07-03 Nvidia Corporation Apparatus and method for serial save and restore of graphics processing unit state information
US8537167B1 (en) * 2006-10-17 2013-09-17 Nvidia Corporation Method and system for using bundle decoders in a processing pipeline
US8139070B1 (en) * 2007-10-03 2012-03-20 Matrox Graphics, Inc. Systems for and methods of context switching in a graphics processing system
US20100079454A1 (en) * 2008-09-29 2010-04-01 Legakis Justin S Single Pass Tessellation
KR101669989B1 (ko) 2010-05-27 2016-10-28 삼성전자주식회사 파이프라인 프로세서 및 이퀄 모델 보존 방법
US9645866B2 (en) 2010-09-20 2017-05-09 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
CN103106638A (zh) 2011-11-14 2013-05-15 辉达公司 用于实时图像处理的图形处理装置
US20130141447A1 (en) * 2011-12-06 2013-06-06 Advanced Micro Devices, Inc. Method and Apparatus for Accommodating Multiple, Concurrent Work Inputs
US8933942B2 (en) 2011-12-08 2015-01-13 Advanced Micro Devices, Inc. Partitioning resources of a processor
US8842122B2 (en) 2011-12-15 2014-09-23 Qualcomm Incorporated Graphics processing unit with command processor
US8963933B2 (en) * 2012-07-23 2015-02-24 Advanced Micro Devices, Inc. Method for urgency-based preemption of a process
US9224227B2 (en) * 2012-12-21 2015-12-29 Nvidia Corporation Tile shader for screen space, a method of rendering and a graphics processing unit employing the tile shader
US9361116B2 (en) * 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
CN105469354A (zh) * 2014-08-25 2016-04-06 超威半导体公司 图形处理方法、***和设备
US9659407B2 (en) * 2015-01-26 2017-05-23 MediaTek Singapore, Pte. Lte. Preemptive flushing of spatial selective bins for deferred graphics processing
US9853920B2 (en) * 2015-08-24 2017-12-26 Cisco Technology, Inc. Systems and methods for performing packet reorder processing
US10776895B2 (en) * 2017-02-10 2020-09-15 Apple Inc. GPU power and performance management
US10459751B2 (en) * 2017-06-30 2019-10-29 ATI Technologies ULC. Varying firmware for virtualized device
US11748283B1 (en) * 2022-03-18 2023-09-05 Intel Corporation Scalable I/O virtualization interrupt and scheduling

Family Cites Families (19)

* Cited by examiner, † Cited by third party
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
US5430841A (en) 1992-10-29 1995-07-04 International Business Machines Corporation Context management in a graphics system
US5798770A (en) * 1995-03-24 1998-08-25 3Dlabs Inc. Ltd. Graphics rendering system with reconfigurable pipeline sequence
DE19535546B4 (de) * 1995-09-25 2004-04-08 Siemens Ag Verfahren zum Betreiben eines durch ein Realzeit-Betriebssystem gesteuerten Realzeit-Computersystems
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
US6636218B1 (en) * 2000-06-30 2003-10-21 Intel Corporation Title-based digital differential analyzer rasterization
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
US6952214B2 (en) * 2002-07-12 2005-10-04 Sun Microsystems, Inc. Method for context switching a graphics accelerator comprising multiple rendering pipelines
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

Also Published As

Publication number Publication date
CN1916961B (zh) 2010-10-06
US20070103474A1 (en) 2007-05-10
TW200719277A (en) 2007-05-16
CN1916961A (zh) 2007-02-21
US7583268B2 (en) 2009-09-01

Similar Documents

Publication Publication Date Title
TWI323433B (en) Graphics pipeline precise interrupt method and appartus
TWI323431B (en) Interruptible gpu and method for processing multiple contexts and runlists
TWI323432B (en) Method and device for saving and restoring a state context in a graphics processing unit
JP4233893B2 (ja) データ処理システムにおける命令のトレーシング
JP7324282B2 (ja) 入出力ストア命令をハンドリングする方法、システム、およびプログラム
US9348537B2 (en) Ascertaining command completion in flash memories
TW201030671A (en) Graphics processing units, metacommand processing systems and metacommand executing methods
US8521930B1 (en) Method and apparatus for scheduling transactions in a host-controlled packet-based bus environment
CN109117386B (zh) 一种网络远程读写二级存储的***及方法
US9823952B2 (en) Tracking a relative arrival order of events being stored in multiple queues using a counter
KR20150129316A (ko) 명령 프로세싱 회로들에서의 리던던트 동기화 베리어들의 제거 및 관련 프로세서 시스템들, 방법들 및 컴퓨터-판독가능 매체
TW202046094A (zh) 處理輸入輸出儲存指令
CN111818632B (zh) 一种设备同步的方法、装置、设备及存储介质
CN109101662B (zh) 区块生成方法、装置、设备及存储介质
WO2006012336A1 (en) System and method for handling handling i/o errors
TW202032378A (zh) 處理輸入輸出儲存指令
CN103218313A (zh) 用于实现缓存描述符交互的方法和电子设备
KR20210108973A (ko) 입/출력 저장 명령의 처리
CN103282888A (zh) 数据处理方法、图像处理器gpu及第一节点设备
TWI385529B (zh) 匯流排系統以及其操作方法
TWI564809B (zh) 單一中斷服務常式執行緒中處理關連於多個請求的返回實體的方法以及使用該方法的裝置
CN107003761A (zh) 用于模块间通信的***和方法
CN109344630B (zh) 区块生成方法、装置、设备和存储介质
CN108804343B (zh) 嵌入式存储接口数据传输方法、装置、计算机设备及介质
JP2010118020A (ja) リクエスト順序制御システム、リクエスト順序制御方法およびリクエスト順序制御プログラム