TWI428763B - 支援複數繪圖處理器之互動的方法與系統 - Google Patents

支援複數繪圖處理器之互動的方法與系統 Download PDF

Info

Publication number
TWI428763B
TWI428763B TW098137754A TW98137754A TWI428763B TW I428763 B TWI428763 B TW I428763B TW 098137754 A TW098137754 A TW 098137754A TW 98137754 A TW98137754 A TW 98137754A TW I428763 B TWI428763 B TW I428763B
Authority
TW
Taiwan
Prior art keywords
context
gpu
state
register
fence
Prior art date
Application number
TW098137754A
Other languages
English (en)
Other versions
TW201032064A (en
Inventor
Timour Paltashev
Boris Prokopenko
John Brothers
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 TW201032064A publication Critical patent/TW201032064A/zh
Application granted granted Critical
Publication of TWI428763B publication Critical patent/TWI428763B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Image Generation (AREA)
  • Multi Processors (AREA)

Description

支援複數繪圖處理器之互動的方法與系統
本發明係有關於一種繪圖處理器(Graphics Processing Unit,以下簡稱為GPU),且特別有關於一種支援複數個GPU之互動的方法與系統。
就電腦製作圖形的發展而言,處理能力的需求愈見顯著。傳統上在利用單一中央處理器(Central Processing Unit,以下簡稱為CPU)處理繪圖指令時,許多圖形軟體可利用額外的硬體來得到更好的效果。特別的是,由於處理能力的需求增加,可使用多CPU和(或)一GPU。在電腦中使用GPU有助於在處理圖形指令時更有效率。在使用GPU可增加圖形需求的同時,許多動態圖形場景更適合利用複數個GPU來繪製。在電腦環境中使用一個以上的GPU時,可能需要對GPU進行同步化。
以軟體為基礎的多重CPU同步機制已發展超過15年了。由於近年來發展之GPU的本質,GPU具有串流類型架構(Stream Type Architecture),現有的多重CPU同步支援缺少軟體與硬體中所需的許多特性。
協定控制資料快捷(Protocol Control Information-Express,以下簡稱為PCI-Express)系統介面提供一通用訊息傳輸階層(Generic Message Transport Level)以供在電腦中多重CPU和/或GPU間進行通訊,亦 提供在主記憶體與區域記憶體之資料區塊間的連貫性支援(Coherency Support)。PCI-Express鎖定交易支援訊息(PCI-Express Locked Transaction Support Message)與廠商定義訊息可作為實現不同同步類型的低階基元(Low Level Primitives),該機制不包括必要的GPU同步支援,而且廠商被迫定義訊息以支援多重CPU與多重GPU配置的系統。
此外,屏障類型同步(Barrier Type Synchronization)已廣泛應用於多重執行緒與多重處理器系統,但目前在單一內文(Context)GPU所實施的屏障同步可能會引起嚴重的延滯(Stall)與潛在的鎖死(Deadlocks)狀況,其可能導致電腦中GPU的使用相當沒效率。
因此,本發明提供了一種支援複數繪圖處理器之互動的方法與系統。
基於上述目的,本發明實施例揭露了一種支援複數繪圖處理器之互動的系統,包括內文狀態暫存器、內文切換配置暫存器、內文狀態管理邏輯單元與記憶體存取單元。該內文狀態暫存器發送有關至少一內文之狀態的資料。該內文切換配置暫存器發送有關至少一內文之至少一事件的複數個指令。該內文狀態管理邏輯單元接收有關至少一內文之該狀態資料以及自該內文切換配置暫存器接收該等指令,並且根據該等指令執行一動作。該記憶體存取單元用以發送監控事件至該內文狀態管理邏輯單元以及自該內文 狀態管理邏輯單元接收控制資料。
本發明實施例更揭露了一種支援複數個繪圖處理器之互動的方法。該方法包括偵測與一內文有關之事件;判斷該事件包括等待代符、自旋等待與時間片段之至少其中之一;根據判斷結果執行下列步驟:停止執行目前內文,將目前內文之狀態設定為待處理儲存狀態,以及利用動件定義暫存器切換至新的內文。
為了讓本發明之目的、特徵、及優點能更明顯易懂,下文特舉較佳實施例,並配合所附圖式第1圖至第18圖,做詳細之說明。本發明說明書提供不同的實施例來說明本發明不同實施方式的技術特徵。其中,實施例中的各元件之配置係為說明之用,並非用以限制本發明。且實施例中圖式標號之部分重複,係為了簡化說明,並非意指不同實施例之間的關聯性。
本發明實施例揭露了一種支援複數繪圖處理器之互動的方法與系統。
第1圖顯示本發明實施例之多重執行緒/多重GPU環境之基本同步基元的示意圖。如圖所示,可用來同步CPU之基本同步基元包括互斥基元群組(Mutex Primitive Group)122(表示相互獨佔命令(Mutual Exclusive Command))、條件基元群組(Condition Primitive Group)130、旗號基元群組(Semaphore Primitive Group)142與警示基元群組(Alerts Primitive Group)152。互斥基元群組122包括〝互 斥取得(Mutex Acquire)〞基元124與〝互斥釋放(Mutex Release)〞基元129。互斥基元群組亦包含不同名稱之鎖定(Lock)基元126與解鎖(Unlock)基元128。
條件基元群組(Condition Group)130中包括條件等待基元(Condition Wait Primitive)132,其包括加入佇列(Enqueue)變數134與回復(Resume)變數136。若條件述詞(Condition Predicate)不為真(不滿足),則條件等待基元132之加入佇列變數134懸置目前的執行緒並將該執行緒放入序列。若條件述詞為真(滿足),則條件等待基元132之回復變數136可重新執行該執行緒。條件基元群組130亦包括條件信號基元(Condition Signal Primitive)138與條件廣播基元(Condition Broadcast Primitive)140。上述基元與其執行之動作相仿,其可呼叫等待懸置(加入佇列)的執行緒之激發以再次檢查該條件述詞,且若該條件述詞仍為真時則繼續執行。該條件信號基元138通知關於一或多個懸置執行緒之條件述詞的改變。條件廣播基元140通知該懸置執行緒。旗號基元群組142包括旗號P(向下)二元基元144、旗號V(向上)二元基元146、旗號P(向下)計數基元148與旗號V(向上)計數基元150。二元旗號基元的操作與互斥基元類似,旗號P二元基元與取得有關而旗號V二元基元與釋放有關。旗號P(向下)計數基元148檢查旗號值,減少該旗號值,並且若該值非為零時繼續執行該執行緒。否則,旗號P(向下)計數基元148不會執行後續操作並且進入睡眠階段(Sleeping Stage)。旗號V(向上)計數基元150增加旗號值並且喚 醒任何具有特定位址之在睡眠階段中無法完成旗號P基元後續操作的執行緒。旗號基元群組142在與被中斷之例行程序有互動的情況下相當有用,因為例行程序不會發生互斥。警示基元群組152提供與旗號基元群組142及條件基元群組130連接之執行緒執行之中斷的軟性形式(Soft Form),以實現如暫停(Timeout)與放棄(Abort)的事件。警示基元群組152可使用在決定讓請求發生在大於執行緒被封鎖之階層的抽象階層的情況。警示基元群組152包括警示基元154、測試警示基元156、警示P基元158以及警示等待基元160。警示等待基元160具有複數個變數,包括加入佇列基元162與警示回復基元164,但其並非用以限定本發明。
呼叫警示P基元158為一請求,其中該執行緒呼叫例外的警示基元154。測試警示(TestAlert)基元156用以允許執行緒判斷該執行緒是否有一待處理請求以呼叫警示基元154。警示等待(AlertWait)基元160與條件等待基元132類似,除了警示等待基元160可呼叫警示基元154而非恢復。在警示等待基元160與條件等待基元132間的選擇是依據呼叫的執行緒是否在該呼叫點需回應警示基元154。呼叫警示P基元158提供旗號類似的功能。
在程式之平行迴圈中之一額外同步操作為屏障基元166。屏障基元166可扣住處理程序,直到所有(或數個)程序到達屏障基元166。當所需的程序到達屏障基元166時,屏障基元166釋放被扣住的處理程序。實現屏障基元166的其中一方式可利用複數個自旋鎖定(Spin Lock)來 實現。自旋鎖定基元可包括第一自旋鎖定基元與第二自旋鎖定基元,其中第一自旋鎖定基元可用來保護紀錄到達屏障基元166之處理程序的計數器,而第二自旋鎖定基元可用來扣住處理程序直到最後一個處理程序到達屏障基元166為止。實現屏障基元166的另一方式係利用一感應反轉屏障基元(Sense-Reversing Barrier)來實現,其可利用一私有前處理變數(Private Preprocess Variable),每一程序程序之變數可初始化為〝1〞。
上文敘述軟體基元與CPU同步硬體支援,下文亦著重在類屏障基元(Barrier-like Primitive)之硬體支援的實施,其更有助於GPU的同步。特別的是,本發明揭露了GPU硬體同步基元與硬體區塊(Hardware Block),該硬體區塊可實現上述基元以支援內文對內文(Context-To Context)與GPU對GPU之可步。
GPU內部管線(inter-pipeline)與外部CPU同步基元
在某些GPU中,同步機制包括複數個GPU命令、圍籬命令(Fence Command)以及實施內部GPU管線屏障類型同步之等待命令。該圍籬命令可將值寫入記憶體映射圍籬暫存器(內部)和/或記憶體位置,其類似於上述之設定屏障基元166。等待命令可利用複數個不同的方式來實現,可實現於GPU內部和/或外部。
內部等待命令可用來檢查包含一計數值之特定記憶體位置。若該計數值不為零,則利用一命令減少該值並繼續執行目前內文。若該值等於零,則一電腦計數器(PC Counter)(和/或GPU命令指標(Pointer))可重置為在 等待命令之前的值,且GPU可切換到另一內文。
內部等待命令可寫入一確定值至一虛擬等待暫存器(Virtual Wait Register)。當儲存在一對暫存器之圍籬值等於或大於該等待命令提供之值,則可完成該寫入操作。特別比較邏輯單元(Special Compare Logic)關聯於該對圍籬等待暫存器(Fence-Wait Register)。此命令與自旋鎖定相關,因為GPU硬體可能檢查圍籬暫存器的內容並封鎖GPU管線執行,直到該內容被更新至需求的值。
當資料不符時,等待命令會延滯(Stall)GPU管線,且繼續在後續時脈週期執行等待命令。該圍籬值可自管線中之先前命令取得,且可在任何時間到達一同步暫存器對。當圍籬等待暫存器被更新且圍籬值等於或大於等待值,該等待命令寫入可完成並解除該管線的封鎖。需注意同步圍籬/等待暫存器之設定亦可映射至記憶體,但其可能在寫入等待值時自旋而產生記憶體競爭(Memory Contention)。
需注意到GPU內文可與CPU執行緒比對,其表示應用程式任務的某些部分。內文的執行列表或群組可類比於包含多個執行緒的CPU處理程序。此外,在許多系統中,執行緒可互相同步。同步機制可藉由任何執行緒排程方法來實施,且硬體可連接至排程軟體和/或硬體。包括數個同步基元之CPU領域(CPU Domain)的執行緒同步機制係揭露於〝Synchronization Primitives for a Multiprocessor:A Formal Specification,A.D.Birrell,J.V.Guttag,J.J.Horning,R.Levin,August 20,1987,SRC Research Report 20〞中。
第2圖顯示本發明實施例之實施於GPU管線中之一內部屏障同步之非限定範例的示意圖。特別的是,GPU管線204包括複數個模組,用以描述管線中的不同點。管線模組H可發送一內部等待代符(Wait Token)206至記憶體存取單元208。映射至記憶體空間之暫存器與比較邏輯單元210a可發送一寫入確認214至管線模組H,從而產生一記憶體資料讀取/寫入路徑216。當只有在等待代符值等於或大於圍籬等待暫存器中之圍籬值時,暫存器與比較邏輯單元210a才可發送一寫入確認,其中該寫入確認可由在管線之較晚階段(Deeper Stage)中的另一管線區塊(Pipeline Block)發送。
同樣的,管線模組I可發送一內部圍籬代符216給暫存器與比較邏輯單元210a(其可包括一對圍籬/等待暫存器(Fence/Wait Register))。在該暫存器接收該內部圍籬代符216後,可產生一記憶體資料寫入路徑218。如第2圖所示,管線模組H與管線模組I係為一對管線單元,其可同步管線模組H的行動與管線模組I的某些操作(例如,相同記憶體表面存取同步)。
管線模組H與管線模組I執行暫存器與比較邏輯單元210a的某些操作,而另一管線模組J可發送一內部等待代符220給記憶體存取單元208。暫存器與比較邏輯單元210a(包括一對暫存器)接著發送一寫入確認222回管線模組J,其有助於產生記憶體資料寫入路徑224。管線模組K發送一內部等待代符226給暫存器與比較邏輯單元210b,並 接著產生記憶體資料寫入路徑228。管線模組L可產生記憶體資料寫入路徑230。上述每一對暫存器係關聯於同步資料區塊之記憶體位址,且每一對暫存器之映射記憶體位址範圍係在特定位址範圍暫存器205中,其可用以偵測對執行之圍籬(Fence)或等待命令之暫存器對的碰撞。若在圍籬(Fence)或等待命令中之位址不符合位址範圍圍籬或等待,則資料可改指向至外部記憶體。
需注意到,第2圖描述之五個管線模組並非用以限制本發明。熟習本領域之技藝人士可瞭解任意數目之管線模組可提供所需功能,且係依據成對圍籬等待暫存器,其中該成對圍籬等待暫存器係關聯於實作於記憶體存取單元208中之邏輯單元。此外,至少一記憶體存取單元208包括16~18對暫存器,其亦非用以限定本發明。熟習本領域之技藝人士可瞭解依據圖形管線之特定配置可使用任意數目之暫存器對。
此外,依據特定配置,並非GPU管線204的每個區塊都需要處理圍籬/等待命令,且只有寫出資料至記憶體存取單元208的單元具有專門存取記憶體存取介面單元(Memory Interface Unit)208的圍籬/等待介面。
第3A圖係顯示本發明實施例之GPU內部屏障同步的示意圖,其所揭示之GPU管線類似於第2圖之GPU管線。特別的是,第3A圖中包括記憶體存取介面單元208與複數個模組302、304、306、308、310與312,但其並非用以限定本發明。第3A圖中亦包括一虛擬分頁表(Virtual Page Table,VPT)模組314。熟習本領域之技藝人士可瞭 解第3A圖中之六個管線模組並非用以限定本發明。根據特定的配置,可使用較多或較少的管線模組來實作。使用圍籬等待對(Fence/Wait Pairs)之管線包括命令串流處理器(Command Stream Processor)的前端部位302。該前端部位可連接至一前端執行單元池(Front-End Execution Unit Pool,EUP_F)304,其可處理頂點(Vertices)。該前端執行單元池304亦可處理、發送和/或接收帶有其它管線單元的資料,該等管線包括早期深度測試單元(Early Depth Test Unit)ZL1(306)、ZL2(308)以及處理最終像素值的寫回單元(Write-Back Unit,WBU)310與命令串流處理器312之後端部位。上述單元係電性連接於記憶體存取介面單元208且在上述同步操作中係以成對方式來執行。
此外,可產生GPU命令代符〝Internal Sync〞且用以支援同步基元,如第3B圖所示。根據操作碼(Opcode)314中之某些位元值,內部同步(Internal Sync)命令代符包括提供複數個外部圍籬(External Fence)基元、內部圍籬基元與等待基元之版本的變化。內部同步命令代符可插入由命令串流處理器(Command Stream Processor,以下簡稱為CSP)取得之命令串流。內部同步(Internal Sync)命令可自前端CSP 302傳送至一特定單元,其中該特定單元係來自具有記憶體存取介面單元(Memory Exchange Unit)208的群組(Group)。若圍籬基元在基元記憶體存取介面單元(Memory Exchange Unit)208的外部,則該圍籬基元可寫入一值至該命令定義的記憶體位置。一般來說,由於該命令可能發生記憶體競爭且需要實施互斥,故並沒有支 援該命令之外部等待基元。
第4圖顯示本發明實施例之內部同步代符或外內部同步代符之變化的示意圖,如第1圖的GPU所示。下述同步命令可利用一內部同步代符、一CSP前端圍籬基元404、一內部或外部圍籬/等待基元406、一等待基元418、一外部特權圍籬基元414、一CPU中斷基元416、一外部非特權圍籬基元420和一非CPU中斷基元422來產生。
特別的是,在接收該內部同步命令(步驟402)後,判斷是否存在一圍籬基元。若圍籬基元存在(FE=1),則可利用CSP之前端部位來應用CSP前端圍籬基元(外部)(步驟404)。若圍籬基元不存在(FE=0),則可執行同步命令以作為在第3A圖中顯示之任意成對管線階段中之內部或外部圍籬/等待基元(步驟406)。若不使用外部圍籬基元(EXT=0),則可利用一管線區塊內部圍籬或等待基元(步驟408,指向依賴WT旗標值之等待基元418或內部圍籬基元412)。
參考步驟406,若使用外部圍籬基元(EXT=1),則判斷是否使用管線區塊外部圍籬基元之CSP後端(步驟410)。若使用外部特權圍籬基元(PRI=1,指向)區塊414,則判斷是否要執行CPU中斷。若INT=1,則使用CPU中斷基元(CSP後端,步驟416)。若INT=0,則使用非CPU中斷基元(步驟422)。換句話說,若使用外部非特權圍籬基元(步驟420),判斷是否要執行CPU中斷(步驟416與422)。
執行圍籬/等待對命令之二個GPU間的同步範例
在GPU管線單元之同步存取上發展之內部同步機制可被執行以支援多GPU。舉例來說,GPU A可繪出像素之基數帶(Odd Number Band),而GPU B可繪出像素之偶數帶(Even Number Band),但其並非用以限制本發明。在繪出之後,著色目標(Render Target,RT)記憶體表面(Memory Surface)可作為材質之用。上述二個GPU可經由記憶體存取介面單元(MXU)讀取畫框緩衝器(frame buffer),同時建立專有的表格與設置介面,但上述GPU間可進行同步,故在GPU B完成寫入至該緩衝器前,GPU A無法讀取耦接於緩衝器之GPU B,反之亦然。
第5圖顯示本發明實施例之使用屏障命令來進行二個GPU間之同步的示意圖,其與第4圖類似,但不同在於圍籬命令的動作,其具有映射至另一GPU位址空間的位址。另一個不同點為執行圍籬命令,其中因為位址範圍A 506中不包括該位址,故會導致遺失CPU同步暫存器區塊。如第5圖所示,GPU A中之可執行內文資料串流502包括一資料串流元件(Data Stream Element)N、圍籬L同步命令(Fence L Sync Command)、資料串流元件2、表面Q繪圖命令與資料(Surface Q Rendering Commands And Data)、命令串流元件1以及資料串流元件0。同樣的,包含在GPU B消耗表面Q資料(GPU B consuming surface Q data)之可執行內文資料串流504係為資料串流元件N、利用作為材質之表面Q的繪出命令、等待L同步命令、資料串流元件2、命令串流元件1以及資料串流元件0來執行命令。GPU A之記憶體存取單元(MUX)508包括GPU A 同步暫存器512且可接收GPU A中之可執行內文資料串流502中之內文之圍籬L同步命令。GPU A之記憶體存取單元508亦可接收GPU B視訊記憶體範圍中之圍籬L,其中該範圍係超出GPU A之內部圍籬/等待暫存器之位址範圍A 506。當圍籬L命令伴隨著超出位址範圍A 506之一位址,MUX 508可能已誤失GPU A同步暫存器512。MUX 508轉送圍籬L命令資料給該位址,其可能位於GPU A的外部且位於GPU B記憶體空間中。MUX 508可耦接於GPU A之視訊記憶體516,其包括圍籬/等待暫存器映射522。當記憶體映射輸入/輸出(Memory mapped input/output,MMIO)空間具有超出定義之GPU A之位址範圍A的位址,則記憶體存取單元508亦可經由匯流排介面單元(Interface Unit,BIU)寫入圍籬命令給GPU B記憶體映射輸入/輸出(MMIO)空間。GPU B之匯流排介面單元520傳送資料給GPU B同步暫存器514。GPU B同步暫存器514可發送資料給GPU B 504中的內文,並且接收一等待L同步命令,其中若管線值完全不符合成對的圍籬暫存器值,則可封鎖GPU B。GPU B之記憶體存取單元510發送資料給GPU A之視訊記憶體,其包括圍籬等待暫存器映射空間524。
為了提供多GPU(例如,GPU A 530與GPU B 532)間的同步,需要實現支援簡單內GPU同步之額外硬體特徵。由於GPU A 530可寫入圍籬命令至GPU B 532的位址空間,該額外硬體可以不同方式操作。一圍籬與等待對(fence and wait pair)可插入至指向不同GPU之GPU命 令的二個獨立串流中。
需注意到,當另一GPU(例如,GPU A 530)寫入一值至同步暫存器區塊514,GPU同步暫存器區塊514可藉由額外寫入埠534提供自匯流排介面單元520直接寫入的功能。此外,當圍籬失誤(fence miss)指向另一GPU位址空間,則匯流排介面單元520可處理圍籬失誤。匯流排介面單元520可處理外部等待,亦可處理映射至匯流排介面單元記憶體映射輸入/輸出位址空間之GPU同步暫存器512、514。MXU和匯流排介面單元520可提供同步暫存器區塊內容的連貫性以及指定(映射)記憶體位置(4K分頁),並且寫入沿著選擇圍籬暫存器修改的記憶體位置。
若上述特徵有被特定配置所支援,則可定義下述動作序列{GPU A}→{GPU B}類型的同步。特別的是,在第一步驟中建立GPU A輸出之功能/狀態/繪製命令之一命令序列。接著,該系統可插入一內部圍籬命令(至CSP和/或其它單元),其中將一指定計數值(fence #)插入表面輸出序列之終端。需注意到,根據特定配置,在圍籬命令中的位址可能不在GPU A圍籬/等待暫存器區塊的範圍內。位址程暫存器選擇欄位可設置在GPU B 532的位址範圍內,其中可執行圍籬/等待同步操作,如第2圖所示。
接著,該系統可建立GPU B輸出之功能/狀態/繪製命令之一命令序列。接著,該系統可插入一內部等待命令(指向CSP和/或其它單元),其中相同(或類似)計數值係作為GPU A530命令序列之對應圍籬命令。需注意到,在GPU B輸入串流中,在繪製命令前可插入內部等待命令,該等 待命令可被插入以使用GPU A繪製的表面。在等待命令中的位址可設置於GPU B圍籬/等待暫存器區塊的範圍內,其中可執行實際圍籬/等待同步操作。此外,該系統可發送繪製命令,其可使用GPU A繪製的表面,如如輸入至頂點著色器(Vertex Shader)或幾何著色器(Geometry Shader)、深度-Z單元以及材質單元。需注意到,GPU A串流中之圍籬命令的區塊識別碼包括記憶體表面生產者(Producer)區塊識別碼(EUPF_STO、ZL2、WBU或任何寫入資料至該記憶體表面之其它區塊)。在複雜的圖形管線中,命令與代符可經由命令資料路徑來傳送,即為何在管線中的每個區塊具有唯一的區塊識別碼,其係應用於路由之命令標頭。同樣的,GPU B串流中之等待命令的區塊識別碼包括消費者(Consumer)區塊識別碼(CSP、ZL1或任何讀取該記憶體表面資料之其它區塊)。此外,特定生產者/消費者區塊組合可自上述所述之單一CPU同步圖案(Pattern)推導而得。就生產者/消費者對(Producer/Consumer Pair)言,圍籬/等待對可分派在消費者同步暫存器區塊中。
複數GPU可執行複數內文,且當內GPU(inter-GPU)同步程序延滯某一內文很長的時間,該GPU可切換延滯的內文並執行另一內文以維持GPU硬體的高效率。同時,一內文可發送一屏障同步命令給早已懸置或在過渡階段之另一GPU內文,其產生具有多內文之GPU之同步的額外問題,且需要特別注意以存取記憶體中之GPU內文的同步暫存器以及內文過渡狀態,以防止原始資料危害(RAW Data Hazard)。在第5圖中僅利用一屏障圍籬/等待基元來描述 二個GPU間的互動,需注意到,本發明概念可延伸為利用一PCI-E匯流排的性能來描述複數個GPU間的互動。
複數個GPU可經由一晶片組介面連接,並且可發送一圍籬值至有關另一GPU之預設位址空間。當內部同步命令指向特定GPU位址空間之外,外部圍籬遺失(External Fence Miss)可由PCI-E介面中的邏輯單元來處理。內部同步命令中的圍籬值可重新指向至GPU,其符合位址空間限制(如第6圖所示)。進階排程器(Advance Scheduler,AS)之外部圍籬與等待可依相同邏輯重新指向CPU系統記憶體。
當圍籬值被寫入一CPU位址空間且操作系統的進階排程器在處理其它動作時,則具有複數同步配置,其包括GPU對CPU同步操作,但並非用以限定本發明。上述有關硬體單元之GPU命令亦支援這樣的同步基元。該配置亦可經由進階排程器應用在內GPU,如微軟文件〝Parallel Engines support in the LDDM Basic Scheduling model〞所述。同步的另一不同點係為內GPU同步,其中複數個GPU可在彼此間使用屏障同步而不需要CPU的干涉。該配置可利用GPU硬體中的特殊配置,亦可支援一系統介面(例如,PCI-E)。需注意到,多重GPU-CPU系統的實體實現可根基於PCI-E匯流排和/或任何其它提供多重GPU-CPU互動的介面。
二個以上GPU的同步
藉由一內部同步命令來實現之本程序可提供在多重GPU配置中之同步的技術,除了根據不同GPU的位址具有 重新指向記憶體/同步暫存器寫入的介面能力外。第6圖顯示具有晶片組之GPU架構的示意圖。特別的是,多重GPU驅動器616可發送複數個命令串流給任一GPU。在第6圖中,多重GPU驅動器616可發送命令串流0給GPU A的局部記憶體602。同樣的,命令串流1被發送至GPU B的局部記憶體604,命令串流2被發送至GPU C的局部記憶體606,以及命令串流3被發送至GPU D的局部記憶體608。每一GPU的局部記憶體602~608可經由PCI-E記憶體重指向邏輯單元612發送一圍籬/等待失誤給CPU晶片組610,並且自CPU晶片組610接收重指向內部圍籬。CPU晶片組610亦可發送一先進排程器圍籬和/或一先進排程器等待給CPU系統記憶體614。
雖然可使用多種架構拓墣的任何一種,接下來將描述可使用在多重GPU配置中之三種類型的GPU同步架構拓撲。詳細來說,可使用一連結類型(Join type)(多生產者-單一消費者)架構拓撲,可使用一分支類型(Fork type)(單一生產者-多消費者)架構拓撲,以及可使用一連接-分支類型(多生產者-多消費者)架構拓撲。上述架構拓撲可利用一內部同步命令與CSP硬體來進行同步,然而,其並非是必須的,亦可使用其它類型的接線與代符同步。
當多個GPU達到執行命令串流中之某一點(屏障)且另一GPU利用多個GPU產生之資料開始執行一命令串流時,即表示為連接類型同步機制,如第7圖所示。
第7圖顯示第6圖之多重GPU系統間之連結類型同步的示意圖。特別的是,執行於GPU A 702、GPU B 704與 GPU C 706上之二個平行GPU處理(內文)可產生使用於第四GPU程序的資料,其中該第四GPU程序是執行於GPU D 710之上。GPU A 702、GPU B 704與GPU C 706可用來執行影像輸出和/或一般目的(GP)計算以及產生資料,其中該資料利用觸發命令720將資料寫入記憶體中,觸發命令720導致內部緩衝被清除(Flush)且記憶體可被消費者GPU存取。GPU D 710包括一內文,假設GPU A、B、C完成寫入記憶體表面,則當記憶體中的資料有效時該內文可被啟始。
在GPU D 710同步暫存器區塊中,該驅動器可分別配置GPU A 702、GPU B 704與GPU C 706的三對圍籬/等待暫存器712、714與716,並且將上述暫存器映射至GPU D 710內文位址空間中。在GPU A 702、GPU B 704、GPU C 706與GPU D 710之每一內文命令串流中,該驅動器可插入一圍籬命令,該圍籬命令指向GPU D 710位址空間所需之圍籬/等待對。圍籬命令718在觸發命令720之後執行,以將緩衝至記憶體的GPU內容清除掉。此外,在GPU D 710的命令串流緩衝器中,驅動器可插入具有CSP區塊識別碼之內部等待命令,並且指向配置給GPU A 702、GPU B 704、GPU C 706與GPU D 710之一所需暫存器對。
該等待命令可拖延執行GPU D 710的內文,直到圍籬值712、714與716到達GPU D 710同步暫存器區塊中已配置好的圍籬暫存器。此外,當在上述前三個GPU(GPU A 702、GPU B 704與GPU C 706)中之所有三個內文達到GPU D 710開始處理命令與資料串流的時間點時,執行於 多個GPU之圍籬與等待命令的組合可產生一同步屏障708。這樣的解決方案是在自旋三個等待命令(722、724與726)後發生,上述三個等待命令將他們的值與圍籬暫存器的內容相比較,其可藉由其它GPU來寫入。
第8圖顯示第6圖之多重GPU系統之分支類型(Fork Type)同步的示意圖。特別的是,分支類型同步機制假設複數個GPU使用單一GPU所產生的資料。由一生產者(例如,GPU A 802)產生的資料可給複數個平行執行的消費者(例如,GPU B 804、GPU C 806與GPU D 808)使用。
如第8圖所示,執行於GPU B 804、GPU C 806和/或GPU D 808上之三個平行GPU程序(內文)可消耗掉由執行於GPU A 802上之第四個程序所產生的資料。GPU A 802包括一內文,其產生在一程序(內文)中最先開始執行的資料。其它三個GPU(804、806與808)可等到該資料寫入到記憶體中再開始執行。當資料有效時,GPU B 804、GPU C 806和/或GPU D 808可開始執行他們的內文。
在GPU B 804、GPU C 806和/或GPU D 808 MXU中,該驅動器可配置三對圍籬/等待暫存器於同步暫存器區塊中,其可用來自GPU A 802接收一圍籬值。在GPU A 802之內文命令串流緩衝器中,該驅動器可插入帶有一相似值之三個內部圍籬命令,該相似值指向GPU B 804、GPU C 806和/或GPU D 808位址空間中之所需圍籬/等待對。該圍籬命令可在觸發命令後執行,以清除記憶體中之GPU A之相關緩衝內容。
在GPU B 804、GPU C 806和/或GPU D 808的命令串 流緩衝器中,該驅動器可插入具有CSP區塊識別碼的內部等待命令,並且指向配置在GPU B 804、GPU C 806和/或GPU D 808之MXU中之所需暫存器對以與GPU A 802進行同步。該等待命令可拖延執行GPU B 804、GPU C 806和/或GPU D 808的內文,直到來自GPU A 802之符合的內部圍籬到達配置好之GPU B 804、GPU C 806和/或GPU D 808的MXU圍籬暫存器。當GPU B 804、GPU C 806和/或GPU D 808中的所有三個內文開始同步處理,且當要被存取之資料區塊已經就緒時,執行於GPU A 802之圍籬命令組合可產生一同步屏障。
第9圖顯示第6圖之多GPU系統之連結-分支類型(Join-Fork Type)同步的示意圖。特別的是,連結-分支類型同步機制假設第一組GPU可使用第二組GPU產生的資料。數個以平行方式執行的消費者可利用數個生產者所產生的資料。
如第9圖所示,複數個執行於第一組GPU(GPU C 906與GPU D 908)之平行GPU程序(內文)消耗可由執行於第二組GPU(GPU A 902與GPU B 904)之程序產生的資料。GPU A 902與GPU B 904相關之上述內文可產生使上述程序(內文)的資料,上述程序可能先開始執行。GPU C 906與GPU D 908可等待欲寫入記憶體中的資料。當該資料有效時,GPU C 906與GPU D 908可開始執行他們的內文。
在相關於GPU C 906與GPU D 908的MUX中,該驅動器可配置複數對圍籬/等待暫存器,用以接收來自GPU A 902與GPU B 904之一內部圍籬命令。在GPU A 902與GPU B 904中,一內文命令串流可緩衝該驅動器,且可插入複數內部圍籬命令,其中上述內部圍籬命令指向GPU C 906與GPU D 908之位址空間中之一所需圍籬/等待對。該圍籬命令可在觸發命令後執行,以清除記憶體中之GPU A 902與GPU B 904之相關緩衝內容。
在GPU C 906與GPU D 908的命令串流緩衝器中,該驅動器可插入帶有CSP區塊識別碼之內部等待。該驅動器亦可指向配置在相關於GPU C 906與GPU D 908之MXU中的暫存器對,以與GPU A 902與GPU B 904進行同步操作。該等待命令可拖延執行GPU C 906與GPU D 908的內文,直到分別來自GPU A 902與GPU B 904之符合的內部圍籬到達。當GPU A 902與GPU B 904中之二個內文可到達GPU C 906與GPU D 908開始處理他們自己的命令的點,則執行於複數個GPU上之圍籬與等待命令的組合可產生一同步屏障。此外,在自旋二個等待命令後,GPU C 906與GPU D 908可開始處理資料串流。
需注意到,第9圖之硬體元件不限於使用四個GPU。熟習本領域之技藝人士可瞭解,上文所述的管線可應用於任何的GPU配置方式。此外,當上述所述的同步機制有助於多重GPU間的同步操作,且至少一配置方式可用來管理全部的GPU工作負載和/或執行於系統中之多內文與執行緒。
相較於僅使用單一GPU,第7~10圖所述之多重GPU的配置可實現較平順的同步效能,其主動且等待屏障同步 資料與命令。拖延GPU可能會導致嚴重的潛在影響,其可能會影響使用多機器以增加效能。在使用內文切換與自旋等待之多內文GPU的實施例中,GPU具有額外的電路以支援屏障類型同步,其中該內文暫時懸置在自旋等待狀態中。
第10圖顯示本發明實施例之複數個GPU內文與局部GPU排程器(Scheduler)的示意圖。局部GPU任務佇列1026包括應用執行清單(Application Run List)A 1002,其包括一或多個內文1004a、1004b與1004m,其中1004m表示應用執行清單A1002具有任意數目的內文。同樣的,局部GPU任務佇列1026包括應用執行清單B,其包括一或多個內文1008a、1008b與1008m。局部GPU任務佇列1026可將應用執行清單A 1002與1006的資料發送至局部GPU內文排程器1010。局部GPU內文排程器1010可經由內文切換將至少一部分資料傳送給GPU 1028。
在第11圖之內文/多GPU的配置中,同步要求包括內內文屏障同步與內GPU屏障同步。第11圖包括複數個內文1103a~1103h以及1103w~1103z,亦包括複數個執行清單1102a、1102b、1102r、1102s。GPU 1108a與1108t之局部執行清單與內文執行控制區塊1106a與1106t提供上述類型同步的管理方式。本發明實施例除了可同步單一內文的GPU,更可同步多內文的GPU,其藉由切換與監看來以保證可在預期時間間隔內完成。此外,部分內文並非在〝執行〞狀態,且GPU可接收定址給懸置內文之圍籬值。
為了支援屏障同步功能,區部GPU執行控制單元1106可維護與監視每一內文狀態。上述同步的內文狀態包括下 述穩定狀態,其中:1)〝執行(Running)狀態〞,當內文正在GPU管線中執行;2)〝空缺(Empty)狀態〞,當內文沒有命令可供執行且命令取得頭端指標具有與命令寫入尾端指標(command write tail pointer)相同的值;3)〝就緒(Ready)狀態〞,當內文已準備好被執行;以及4)〝懸置(Suspended)狀態〞,當內文因懸置碼暫存器中的任何原因自執行中被懸置。
有複數個描述待處理內文儲存(pending context save)與待處理內文回復(pending context restore)之中間或過渡狀態。上述狀態需要支援在過渡中之內文的屏障同步操作。此外,第12圖中的特殊狀態機提供改變內文狀態,其可根據某些事件、局部排程器和/或條件同步命令來改變狀態。
第12圖係顯示第11圖之GPU內文的不同狀態與根據內部與外部事件改變狀態的流程示意圖。特別的是,第12圖包括內文狀態的四個主要穩定階段,包括〝執行狀態〞1232、〝空缺狀態〞1234、〝就緒狀態〞1236與〝懸置狀態〞1238。另外還有二個中間狀態,包括〝待處理儲存狀態〞1240與〝待處理回復狀態〞1242,其可用來表示內文狀態載入與儲存的程序。〝執行狀態〞1232表示一內文目前正在GPU管線中執行。在一標頭指標到達尾端且串流中沒有多的命令可處理時,該狀態會改變。另一個原因為〝懸 置狀態〞1238是依據設定懸置碼的事件而定。〝空缺狀態〞1234表示該內文不做任何事,且當載入關聯於內文暫存器區塊之一新的內文時會被刪除。若CPU更新所有的尾指標,該CPU會回到〝就緒狀態〞1236且可在任意時間重新啟動。空缺內文會導致自動切換該內文且將該狀態儲存在記憶體中,然後改變為懸置狀態。
〝就緒狀態〞1236表示該內文根據優先權或內文切換程序的順序,可由局部排程器在任何時間啟動之。若該內文處於位於狀態暫存器中之警戒狀態,則該內文在重新開始前會進行檢查同步條件1244。若不滿足同步條件,則該內文會回到〝懸置狀態〞1238。〝懸置狀態〞1238表示該內文等待滿足某些條件時會進入就緒或開始執行。當內部事件或外部訊息的結果滿足條件後會令該內文進入〝就緒狀態〞1236。〝待處理儲存狀態〞1240與〝待處理回復狀態〞1242為〝執行狀態〞1232與〝懸置狀態〞1238間的暫時中間狀態。當發生存取記憶體映射暫存器時會發生上述狀態,其可儲存在記憶體和/或GPU中。
多GPU之多內文同步操作
第13圖顯示本發明實施例之在四GPU之多系統中之同步處理的示意圖,其中一個GPU最多包括K個內文,其類似於第9圖。K為任意數,但在本實施例中,K至少為4~16間的任意數。在二個執行清單的實施例中,則為二倍的K。此外,該圍籬命令可寫入在一GPU(執行中的內文)與一記憶體(其它內文)中之同步暫存器區塊中,且可執行以減少寫後讀取(Write After Read,WAR)/寫後寫入 (Write After Write,WAW)危險的機會。
如第13圖所示,多重內文GPU A 1302包括一同步暫存器區塊、複數個內文狀態區塊以及複數個內文指標。GPU A 1302可經由一緩衝器取回來執行關聯於一預設內文(例如,第13圖所示之內文1)之內文直接記憶體存取(Direct Memory Access,DMA)緩衝器。此外,相關於同步暫存器的內文可回存至區塊暫存器和/或儲存至內文記憶體空間配置的4K位元組分頁。同樣的,其它GPU具有相同的功能。根據內部和/或外部事件,GPU A 1302可自內文0切換到內文1。在本實施例中,內文狀態相關資料係儲存在配置給內文狀態的記憶體空間中。該同步暫存器區塊對執行內文來說是很重要的,且可儲存在特定的記憶體空間中,其係為內文狀態資料空間的一部分。在儲存內文0狀態與同步暫存器資料後,新的內文1狀態與同步暫存器資料可載入到GPU A中。在上載後,GPU A利用自配置給該內文之DMA緩衝器取得的命令開始執行內文1。
以與GPU A平行的方式執行之GPU B執行不同的內文L+1,並且切換回執行相同程序的內文L,同時GPU A儲存內文L+1狀態與同步暫存器內容。具有同步暫存器內容之內文L狀態資料可回存至GPU B且可開始自內文記憶體空間中之關聯DMA緩衝器取得內文L命令。當在執行目前內文時,一或多個GPU以下述狀況將圍籬資料寫入其它內文。
1)圍籬寫入(管理同步之常態內部圍籬,如第2、3圖所示); 2)圍籬寫入至擁有的懸置內文或另一GPU;3)圍籬寫入至另一GPU之執行中內文;4)圍籬寫入至懸置中的內文(儲存中);以及5)圍籬寫入至啟動中的內文(回復中)。
上述範圍包括特殊處理,其係由CPU硬體狀態機所提供,如第15圖所示。圍籬寫入監控(如第15圖所示)可用來提供在不同內文與執行清單間之多重GPU-多重內文的環境下進行同步。為了提供上述監控功能,可在GPU之一或多個內文中利用一特殊位址範圍暫存器,以及記憶體存取單元中的比較邏輯單元。若預期的圍籬寫入記憶體中的同步暫存器區塊,則該比較邏輯單元會導致改一特定內文的狀態。
第14圖顯示本發明實施例之利用GPU執行多重內文同步與在多重內文間進行同步的示意圖,其類似於第13圖。特別的是,如第14圖所示,GPU C 1406可圍籬寫入至懸置的內文,其係位於同步暫存器1414之4K位元組的空間中。同樣的,GPU D 1408可將要回復的內文圍籬寫入至GPU C 1406中的同步暫存器區塊。為了支援上述實施例,GPU可安裝特殊的邏輯單元,其可用來持有屏障同步命令位址與資料,直到內文到達完成一儲存或回存程序之一穩定狀態。
一般來說,CPU可被程式化以控制內文排程與在GPU中執行。在實現GPU時可利用有效應用工具,例如利用揭露於〝Method and apparatus for context saving and restoring in interruptible GPU〞、〝Context switching method and apparatus in interruptible GPU running multiple applications〞與〝Graphics pipeline precise interrupt implementation method and apparatus〞中的方法。
第15圖顯示屏障命令處理中之步驟的流程示意圖。特別的是,GPU可偵測另一GPU和/或CPU至任一GPU內文之外部圍籬(步驟1502)。與GPU內文暫存器區塊中之內文同步區塊位址1324相比較,在偵測GPU記憶體空間與位址的外部寫入後,GPU可檢查相符的內文狀態(步驟1504)。若一程序正在執行,GPU可直接寫入一選擇的暫存器至MXU中(步驟1506),並且恢復偵測外部圍籬寫入至任意GPU內文(步驟1502)。
在步驟1504中,若偵測到一待處理內文回復/載入狀態而得知有一符合內文,則GPU會等待直到一相關內文載入的終端(步驟1508)。在同步區塊載入的終端,GPU直接寫入MXU中之選擇的同步暫存器(步驟1510)。GPU接著開始執行一載入內文(步驟1512)。GPU接著恢復偵測一外部圍籬寫入任意GPU內文(步驟1502)。
在步驟1504中,若偵測到一待處理內文儲存,GPU可等待直到一內文儲存的終端(步驟1514)。在同步區塊儲存的終端,GPU可寫入至記憶體中之同步暫存器區塊位置(步驟1516)。GPU邏輯單元可重新偵測任意GPU內文之外部圍籬(步驟1502)。換句話說,若GPU已準備就緒和/或在等待懸置中,GPU可寫入至記憶體中之同步暫存器區塊位置(步驟1516)。GPU邏輯單元可重新偵測任意GPU內文之外部圍籬。
第16圖顯示本發明實施例之結合至少一執行清單之內文區塊暫存器的示意圖,其類似於第10圖之執行清單。特別的是,第16圖包括一內文狀態暫存器1602、一內文切換配置暫存器1604、一計時器模式暫存器1606以及一自旋等待計數器暫存器1608,其亦包括一內文時間片段計數器暫存器1610、一懸置狀態碼1613、一DMA緩衝器尾端指標1614以及一內文同步區塊位址1616。內文同步區塊位址暫存器可設置在記憶體存取單元中。
如上文所述,內文狀態暫存器1602包括執行1618之狀態位元遮罩、空缺1620、就緒1622、懸置1624以及待處理儲存1628,該類別中亦包括待處理回復1630。內文優先權層級1611與懸置狀態碼1613亦包括在內文狀態暫存器1602中。內文切換配置暫存器1604包括一事件遮罩用以定義內文管理為以下事件,自旋等待計時器終止1615、到達管線區塊之等待代符1617、時間片段計時器1619以及當MXU電路偵測到一寫入至GPU之內文之同步區塊位址之監控事件1621。其它事件亦可用來偵測內文狀態管理邏輯單元。計時器模式暫存器1606可控制內文切換模式,其定義了一自旋等待代符和/或自旋等待計時器以產生一切換事件。該暫存器亦可根據內文切換模式而致能(Enable)和/或除能(Disable)一時間片段。自旋等待計數器暫存器1608向下計數,其當接收到一等待命令時開始計數,且當資料不符合同步暫存器區塊中的資料時開始自旋。當時間計數終止時,自旋等待計數器暫存器1608執行一內文切換事件,若未計數終止則由內文切換配置暫存器 1604執行該內文切換事件。當時間片段計數終止時,則內文時間片段計數器暫存器1610切換內文。亦可利用時間片段計數器以自目前執行於GPU管線中之內文的可能作法回復。
此外,DMA緩衝器頭端指標1612可保持命令串流之內文的目前取得位址,同時DMA緩衝器尾端指標1614可傳遞在該命令串流終端的位址。該內文同步區塊位址可進行圍籬監控。當在至少其中一配置中,若允許內文的總數為16,則所有的內文可分群為2個執行清單,每一執行清單包括8個內文,或者分為4個執行清單,每一執行清單包括2個內文。上述內文亦可分為非偶數群。內文同步區塊位址暫存器1616可提供用以監聽任意寫入至GPUGPU視訊記憶體的位址,並且在偵測外部圍籬寫入至記憶體映射同步暫存器區塊時產生內文狀態改變事件。
第17圖顯示本發明實施例之多重內文GPU之內文管理的示意圖,其係有關計時器與監控事件。內文狀態管理邏輯區塊1702可由專用硬體單元或可程式精簡指令集運算(Relegate Important Stuff to the Compiler,RISC)核心來實現,其可支援命令串流處理器。內文狀態管理區塊1702可管理目前正在執行之內文的狀態,亦可管理其它映射至一適當內文暫存器集合的狀態。內文狀態管理邏輯區塊1702接收來自自旋/等待與時間片段監看計數器1704的信號、一等待代符到達信號和/或來自時間片段計數器1706的信號。內文狀態管理邏輯區塊1702可與目前正在執行之內文暫存器通訊,上述暫存器包括內文狀態暫存器1708與 內文切換配置暫存器1709。當發生監控或其它事件時,若另一內文接收到外部存取,則內文狀態管理邏輯區塊1702選擇該內文暫存器,其藉由記憶體存取單元中的比較邏輯單元來監控。當外部代理者寫入至其中一GPU內文之一暫存器空間時,則另一類型的監控事件是由匯流排介面單元(BIU)1710來產生。MMIO暫存器位址解碼邏輯單元1712產生一旗號,該旗號亦可轉換為內文數目以與內文狀態管理邏輯區塊1702通訊。用於事件選擇之內文狀態暫存器1708或目前內文可根據內文切換配置暫存器1709的內容來讀取與更新,其包括在特定內文中之每一類型事件的動作指令。
第17圖中更包括一記憶體存取單元1720,其包括一圍籬位址與資料緩衝器1722,用以接收一監控事件與控制資料並且寫入至記憶體和/或一同步暫存器。為了支援非封鎖多圍籬寫入,圍籬位址與資料緩衝器1722可被轉換為先進先出(First In First Out,FIFO)類型的佇列。記憶體存取單元1720亦包括相關於一或多個內文之同步位址範圍1724。資料可沿著記憶體寫入位址發送至一編碼器,其可對接收的資料編碼並且將資料發送至內文狀態管理邏輯區塊1702。
第18圖顯示本發明實施例之內文狀態管理邏輯單元之狀態機的示意圖。如圖所示,事件偵測迴圈(步驟1802)可繼續執行迴圈直到偵測到一事件。若偵測到一監控事件,該內文狀態管理邏輯單元檢查編碼後之內文狀態(步驟1804)。若該內文目前正在執行,該內文狀態管理邏輯 單元寫入閂鎖資料(Latched Data)至一同步暫存器(步驟1806),且該內文狀態管理邏輯單元可回到該事件偵測迴圈(步驟1802)。在步驟1804中,若該內文在〝就緒〞狀態,則該內文狀態管理邏輯單元可根據一定義暫存器設定一監控旗標與執行操作(步驟1808),並且根據一定義暫存器執行動作(步驟1810)。該程序接著回到該事件偵測迴圈(步驟1802)。
在步驟1804中,若該內文狀態管理邏輯單元判斷編碼內文在懸置狀態,則可設定警示旗標與密碼(步驟1811),且設定該內文為就緒狀態(步驟1812)。接著該程序回到該事件偵測迴圈(步驟1802)。在步驟1804中,若該內文狀態管理邏輯單元判斷編碼內文在空缺狀態,則可設定該警示旗標與密碼(步驟1814),且產生CPU中斷(步驟1816)。若該內文在待處理儲存狀態,該內文狀態管理邏輯單元可排隊等候一位址與資料(步驟1818),等待直到儲存(步驟1820),並且寫入排隊的資料至記憶體(步驟1822)。若該內文在一待處理回復狀態,該內文狀態管理邏輯單元可排隊等候一位址與資料(步驟1824),等待直到回復(步驟1826),並且寫入排隊的資料至一同步暫存器(步驟1828)。接著該程序回到該事件偵測迴圈(步驟1802)。
若在事件偵測迴圈中(步驟1802),一等待代符到達,偵測到一自旋等待和/或偵測到一時間片段時,可終止執行目前的內文(步驟1830),並且將目前狀態設成〝待處理儲存〞狀態(步驟1832)。接著,儲存該目前內文(步驟 1834)。若偵測到一時間片段,該目前內文可設為〝就緒〞狀態(步驟1836),且該內文狀態管理邏輯單元可利用一定義暫存器切換到新的內文(步驟1838)。在儲存目前內文後(步驟1834),若接收到一自旋等待或等待代符,則將該內文設為〝懸置〞狀態並且發佈一〝等待〞碼(步驟1840)。該內文狀態管理邏輯單元接著利用一定義暫存器切換到新的內文(步驟1838)。接著該程序回到該事件偵測迴圈(步驟1802)。
本發明更提供一種記錄媒體(例如光碟片、磁碟片與抽取式硬碟等等),其記錄一電腦可讀取之電腦程式,以便執行上述之支援複數繪圖處理器之互動的方法。在此,儲存於記錄媒體上之電腦程式,基本上是由多數個程式碼片段所組成的(例如建立組織圖程式碼片段、簽核表單程式碼片段、設定程式碼片段、以及部署程式碼片段),並且這些程式碼片段的功能係對應到上述方法的步驟與上述系統的功能方塊圖。
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟習此技藝者,在不脫離本發明之精神和範圍內,當可作各種之更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
122‧‧‧互斥基元群組
124‧‧‧互斥取得基元
126‧‧‧鎖定基元
128‧‧‧解鎖基元
129‧‧‧互斥釋放基元
130‧‧‧條件基元群組
132‧‧‧條件等待基元
134‧‧‧加入佇列變數
136‧‧‧回復變數
138‧‧‧條件信號基元
140‧‧‧條件廣播基元
142‧‧‧旗號基元群組
144‧‧‧旗號P(向下)二元基元
146‧‧‧旗號V(向上)二元基元
148‧‧‧旗號P(向下)計數基元
150‧‧‧旗號V(向上)計數基元
152‧‧‧警示基元群組
154‧‧‧警示基元
156‧‧‧測試警示基元
158‧‧‧警示P基元
160‧‧‧警示等待基元
162‧‧‧加入佇列基元
164‧‧‧警示回復基元
166‧‧‧屏障基元
204‧‧‧GPU管線
205‧‧‧位址範圍
206‧‧‧發送內部等待代符
208‧‧‧記憶體存取單元
210a、210b‧‧‧暫存器與比較邏輯單元
214‧‧‧發送寫入確認
216‧‧‧產生記憶體資料讀取/寫入路徑
218‧‧‧產生記憶體資料寫入路徑
220‧‧‧發送內部等待代符
222‧‧‧發送寫入確認
224‧‧‧產生記憶體資料寫入路徑
226‧‧‧發送內部等待代符
228‧‧‧產生記憶體資料寫入路徑
230‧‧‧產生記憶體資料寫入路徑
302‧‧‧CSP FRONT
304‧‧‧EUP_F
306‧‧‧ZL1
308‧‧‧ZL2
310‧‧‧WBU
312‧‧‧CSP BACK
314‧‧‧虛擬分頁表
402‧‧‧內部同步命令
404‧‧‧CSP前端圍籬(外部)
406‧‧‧內部或外部圍籬/等待
408‧‧‧管線區塊內部圍籬或等待
410‧‧‧CSP後端或管線區塊內部圍籬
412‧‧‧內部圍籬
414‧‧‧外部特權圍籬
416‧‧‧CPU中斷(CSP後端)
418‧‧‧等待
420‧‧‧外部非特權圍籬
422‧‧‧非CPU中斷
502、504‧‧‧可執行內文資料串流
506‧‧‧位址範圍A
508‧‧‧GPU A之記憶體存取單元
510‧‧‧GPU B之記憶體存取單元
512‧‧‧GPU A同步暫存器
514‧‧‧GPU B同步暫存器
516‧‧‧GPU A之視訊記憶體
518‧‧‧GPU B之視訊記憶體
520‧‧‧GPU B之匯流排介面單元
522‧‧‧圍籬/等待暫存器映射
524‧‧‧圍籬/等待暫存器映射
530‧‧‧GPU A
532‧‧‧GPU B
534‧‧‧寫入埠
602‧‧‧GPU A的局部記憶體
604‧‧‧GPU B的局部記憶體
606‧‧‧GPU C的局部記憶體
608‧‧‧GPU D的局部記憶體
610‧‧‧CPU晶片組
612‧‧‧PCI-E記憶體重指向邏輯單元
614‧‧‧CPU系統記憶體
616‧‧‧多重GPU驅動器
702‧‧‧GPU A
704‧‧‧GPU B
706‧‧‧GPU C
708‧‧‧同步屏障
710‧‧‧GPU D
712‧‧‧圍籬0
714‧‧‧圍籬1
716‧‧‧圍籬2
718‧‧‧圍籬命令
720‧‧‧觸發命令
722‧‧‧等待0命令
724‧‧‧等待1命令
726‧‧‧等待2命令
802‧‧‧GPU A
804‧‧‧GPU B
806‧‧‧GPU C
808‧‧‧GPU D
810‧‧‧同步屏障
812‧‧‧等待1命令
902‧‧‧GPU A
904‧‧‧GPU B
906‧‧‧GPU C
908‧‧‧GPU D
1002‧‧‧應用執行清單
1004a..1004m‧‧‧內文
1006‧‧‧應用執行清單
1008a..1008m‧‧‧內文
1010‧‧‧局部GPU內文排程器
1026‧‧‧局部GPU任務佇列
1028‧‧‧GPU
1103a、1103c、1103w、1103y‧‧‧內文T1
1103b、1103d、1103x、1103z‧‧‧內文T2
1103e‧‧‧內文E
1103f‧‧‧內文F
1103g‧‧‧內文G
1103h‧‧‧內文H
1102a‧‧‧執行清單A
1102r‧‧‧執行清單R
1102b‧‧‧執行清單B
1102s‧‧‧執行清單S
1106a‧‧‧局部執行清單與內文執行控制區塊
1108a‧‧‧具有包含在CPU任務空間內之視訊記憶體的GPU
1106t‧‧‧局部執行清單與內文執行控制區塊
1108t‧‧‧具有包含在CPU任務空間內之視訊記憶體的GPU
1232‧‧‧執行
1234‧‧‧空缺
1236‧‧‧就緒
1238‧‧‧懸置
1240‧‧‧待處理儲存
1242‧‧‧待處理回復
1244‧‧‧檢查同步條件
1302‧‧‧GPU A
1304‧‧‧GPU B
1310‧‧‧內文記憶體空間
1406‧‧‧GPU C
1408‧‧‧GPU D
1412‧‧‧內文記憶體空間
1414‧‧‧同步暫存器
1502‧‧‧偵測外部圍籬至任一GPU內文
1504‧‧‧檢查相符的內文狀態
1506‧‧‧寫入選擇的暫存器至MXU
1508‧‧‧等待直到相關內文載入的終端
1510‧‧‧寫入至MXU中選擇的同步暫存器
1512‧‧‧開始執行載入內文
1514‧‧‧等待直到內文儲存的終端
1516‧‧‧寫入至記憶體中之同步暫存器區塊位置
1602‧‧‧內文狀態暫存器
1604‧‧‧內文切換配置暫存器
1606‧‧‧計時器模式暫存器
1608‧‧‧自旋等待計數器暫存器
1610‧‧‧內文時間片段計數器暫存器
1611‧‧‧內文優先權
1612‧‧‧DMA緩衝器頭端指標
1613‧‧‧懸置狀態碼
1614‧‧‧DMA緩衝器尾端指標
1615‧‧‧自旋等待計時器
1616‧‧‧內文同步區塊位址
1617‧‧‧等待代符
1618‧‧‧執行中
1619‧‧‧時間片段計時器
1620‧‧‧空缺
1621‧‧‧任意監控事件
1622‧‧‧就緒
1624‧‧‧懸置
1628‧‧‧待處理儲存
1630‧‧‧待處理回復
1632‧‧‧內文監控旗標
1646‧‧‧內文監控定義暫存器
1702‧‧‧內文狀態管理邏輯區塊
1704‧‧‧自旋/等待監看計數器
1706‧‧‧時間片段計數器
1708‧‧‧內文狀態暫存器
1709‧‧‧內文切換配置暫存器
1710‧‧‧匯流排介面單元
1712‧‧‧內文之MMIO暫存器位址解碼邏輯單元
1720‧‧‧記憶體存取單元
1722‧‧‧圍籬位址與資料緩衝器
1724‧‧‧內文1..N之同步位址範圍
1802‧‧‧事件偵測迴圈
1804‧‧‧檢查編碼內文狀態
1806‧‧‧寫入閂鎖資料至一同步暫存器
1808‧‧‧設定監控旗標
1810‧‧‧根據定義暫存器執行動作
1811‧‧‧設定警示旗標與密碼
1812‧‧‧設定就緒狀態
1814‧‧‧設定警示旗標與密碼
1816‧‧‧產生CPU中斷
1818‧‧‧緩衝位址與資料
1820‧‧‧等待直到儲存
1822‧‧‧寫入緩衝資料至記憶體
1824‧‧‧緩衝位址與資料
1826‧‧‧等待直到回復
1828‧‧‧寫入緩衝資料至同步暫存器
1830‧‧‧終止執行目前內文
1832‧‧‧設定目前狀態為〝待處理儲存〞
1834‧‧‧儲存目前內文
1836‧‧‧設定為〝就緒〞
1838‧‧‧利用定義暫存器切換到新的內文
1840‧‧‧設為〝懸置〞與〝等待〞碼
第1圖顯示本發明實施例之多重執行緒/多重GPU環境中之基本同步基元的示意圖。
第2圖顯示本發明實施例之實施於GPU管線(Pipeline) 中之一內部屏障同步之非限定範例的示意圖。
第3A圖顯示本發明實施例之GPU內部屏障同步的示意圖。
第3B圖顯示本發明實施例之GPU屏障命令格式的示意圖。
第4圖顯示本發明實施例之GPU屏障命令變化的示意圖。
第5圖顯示本發明實施例之使用屏障命令來進行二個GPU間之同步的示意圖。
第6圖顯示本發明實施例之建構在PCI-Express介面上之多重GPU系統的示意圖。
第7圖顯示第6圖之多重GPU系統之連結類型(Join Type)同步的示意圖。
第8圖顯示第6圖之多重GPU系統之分支類型(Fork Type)同步的示意圖。
第9圖顯示第6圖之多重GPU系統之連結-分支類型(Join-Fork Type)同步的示意圖。
第10圖顯示本發明實施例之多重GPU內文與局部GPU排程器(Scheduler)的示意圖。
第11圖顯示本發明實施例之系統中內內文(Inter-Context)與內GPU同步之指導方針(Guidelines)的示意圖。
第12圖顯示本發明實施例之GPU內文的不同狀態與根據內部與外部事件改變狀態的示意圖。
第13、14圖顯示本發明實施例之在不同狀態之內文執 行屏障的示意圖。
第15圖顯示第13、14圖之環境下之圍籬處理狀態機(Fence Processing State Machine)的示意圖。
第16圖顯示本發明實施例之支援多重內文同步之內文暫存器區塊的示意圖。
第17圖顯示本發明實施例之影響計時器與監控事件之內文狀態管理的示意圖。
第18圖顯示本發明實施例之內文狀態管理邏輯單元之狀態機的示意圖。
122‧‧‧互斥基元群組
124‧‧‧互斥取得基元
126‧‧‧鎖定基元
128‧‧‧解鎖基元
129‧‧‧互斥釋放基元
130‧‧‧條件基元群組
132‧‧‧條件等待基元
134‧‧‧加入佇列變數
136‧‧‧回復變數
138‧‧‧條件旗號基元
140‧‧‧條件廣播基元
142‧‧‧旗號基元群組
144‧‧‧旗號P(向下)二元基元
146‧‧‧旗號V(向上)二元基元
148‧‧‧旗號P(向下)計數基元
150‧‧‧旗號V(向上)計數基元
152‧‧‧警示基元群組
154‧‧‧警示基元
156‧‧‧測試警示基元
158‧‧‧警示P基元
160‧‧‧警示等待基元
162‧‧‧加入佇列基元
164‧‧‧警示回復基元
166‧‧‧屏障基元

Claims (13)

  1. 一種支援複數個繪圖處理器之互動的系統,包括:一內文狀態暫存器(Context Status Register),用以發送有關至少一內文之一狀態的資料;一內文切換配置暫存器(Context Switch Configuration Register),用以發送有關該至少一內文之至少一事件的複數個指令;一內文狀態管理邏輯單元(Context Status Management Logic),耦接於該內文狀態暫存器與該內文切換配置暫存器,用以接收有關該至少一內文之該狀態之該資料與自該內文切換配置暫存器接收該等指令,並且根據該等指令執行一動作;一記憶體存取單元,用以發送一監控事件信號至該內文狀態管理邏輯單元,以及自該內文狀態管理邏輯單元接收控制資料;一匯流排介面單元(Bus Interface Unit),包括用以解碼該內文狀態暫存器之一位址與產生一暫存器更新事件旗號的邏輯單元;以及一編碼器,用以產生一相關內文編號以發送至該內文狀態管理邏輯單元,以及在執行一記憶體寫入操作後定義一內文號碼。
  2. 如申請專利範圍第1項所述的支援複數個繪圖處理器之互動的系統,其中,該內文狀態暫存器更用以持有與接收有關該至少一內文之該狀態的該資料。
  3. 如申請專利範圍第1項所述的支援複數個繪圖處理 器之互動的系統,更包括一自旋等待監控計數器,用以當該自旋等待監控計時器倒數終止後,開始執行一內文切換事件。
  4. 如申請專利範圍第1項所述的支援複數個繪圖處理器之互動的系統,更包括一時間片段計數器,用以在當一時間片段終止後,開始執行一內文切換事件。
  5. 如申請專利範圍第1項所述的支援複數個繪圖處理器之互動的系統,其中,該記憶體存取單元更包括結合複數個比較器之複數個同步位址暫存器,其中該等同步位址暫存器對應該至少一內文,該等比較器接收一記憶體寫入位址與產生一監控事件旗號。
  6. 如申請專利範圍第1項所述的支援複數個繪圖處理器之互動的系統,其中,該記憶體存取單元更用以將資料寫入到一記憶體與一同步暫存器區塊(Sync Register Block)之至少其中之一。
  7. 如申請專利範圍第5項所述的支援複數個繪圖處理器之互動的系統,更包括當判斷該至少一內文之狀態為一執行狀態時,將緩衝資料寫入至一同步暫存器區塊。
  8. 如申請專利範圍第5項所述的支援複數個繪圖處理器之互動的系統,更包括當判斷該至少一內文之狀態為該就緒狀態時,設定一監控旗標,以及執行由一動作定義暫存器定義之一動作。
  9. 如申請專利範圍第5項所述的支援複數個繪圖處理器之互動的系統,更包括當判斷該至少一內文之狀態為該懸置狀態時,設定一警示旗標與密碼,以及設定該至少一 內文之狀態為一就緒狀態。
  10. 如申請專利範圍第5項所述的支援複數個繪圖處理器之互動的系統,更包括當判斷該至少一內文之狀態為一空缺狀態時,設定一警示旗標與密碼,以及產生一中央處理單元中斷命令。
  11. 如申請專利範圍第5項所述的支援複數個繪圖處理器之互動的系統,更包括當判斷該至少一內文之狀態為一待處理儲存狀態時,緩衝一位址與資料,以及寫入緩衝資料至一記憶體。
  12. 如申請專利範圍第5項所述的支援複數個繪圖處理器之互動的系統,更包括當判斷該至少一內文之狀態為一待處理回復狀態,緩衝一位址與資料,以及在回復該內文後寫入緩衝資料至一同步暫存器。
  13. 一種支援複數個繪圖處理器之互動的系統,包括:一內文狀態暫存器,其用以發送有關至少一內文之一狀態的資料;一內文切換配置暫存器,其用以發送有關至少一內文之至少一事件的複數個指令;一內文狀態管理邏輯單元,用以接收有關該至少一內文之該狀態之該資料與自該內文切換配置暫存器接收該等指令,並且根據該等指令執行一動作;一記憶體存取單元,其用以發送一監控事件至該內文狀態管理邏輯單元,以及自該內文狀態管理邏輯單元接收控制資料;一匯流排介面單元(Bus Interface Unit),包括用以解 碼該內文狀態暫存器之一位址與產生一暫存器更新事件旗號的邏輯單元;以及一編碼器,用以產生一相關內文編號以發送至該內文狀態管理邏輯單元,以及在執行一記憶體寫入操作後定義一內文號碼。
TW098137754A 2008-11-06 2009-11-06 支援複數繪圖處理器之互動的方法與系統 TWI428763B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/266,078 US8082426B2 (en) 2008-11-06 2008-11-06 Support of a plurality of graphic processing units

Publications (2)

Publication Number Publication Date
TW201032064A TW201032064A (en) 2010-09-01
TWI428763B true TWI428763B (zh) 2014-03-01

Family

ID=42132915

Family Applications (1)

Application Number Title Priority Date Filing Date
TW098137754A TWI428763B (zh) 2008-11-06 2009-11-06 支援複數繪圖處理器之互動的方法與系統

Country Status (3)

Country Link
US (1) US8082426B2 (zh)
CN (1) CN101877120B (zh)
TW (1) TWI428763B (zh)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100141664A1 (en) * 2008-12-08 2010-06-10 Rawson Andrew R Efficient GPU Context Save And Restore For Hosted Graphics
US8405666B2 (en) 2009-10-08 2013-03-26 Advanced Micro Devices, Inc. Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine
US9798548B2 (en) 2011-12-21 2017-10-24 Nvidia Corporation Methods and apparatus for scheduling instructions using pre-decode data
US20130191572A1 (en) * 2012-01-23 2013-07-25 Qualcomm Incorporated Transaction ordering to avoid bus deadlocks
US9626216B2 (en) * 2012-05-09 2017-04-18 Nvidia Corporation Graphics processing unit sharing between many applications
US9582276B2 (en) 2012-09-27 2017-02-28 Apple Inc. Processor and method for implementing barrier operation using speculative and architectural color values
US8941676B2 (en) * 2012-10-26 2015-01-27 Nvidia Corporation On-chip anti-alias resolve in a cache tiling architecture
US9064437B2 (en) * 2012-12-07 2015-06-23 Intel Corporation Memory based semaphores
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
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
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
JP6152034B2 (ja) * 2013-03-22 2017-06-21 株式会社Screenホールディングス ラベリング方法、ラベリング装置および欠陥検査装置
US9612994B2 (en) * 2013-09-18 2017-04-04 Nvidia Corporation Snoop and replay for completing bus transaction
FR3021432B1 (fr) * 2014-05-20 2017-11-10 Bull Sas Processeur a instructions conditionnelles
US9760511B2 (en) * 2014-10-08 2017-09-12 International Business Machines Corporation Efficient interruption routing for a multithreaded processor
WO2016075721A1 (ja) * 2014-11-11 2016-05-19 ルネサスエレクトロニクス株式会社 命令実行制御システム及び命令実行制御方法
CN104778082B (zh) * 2015-03-25 2018-04-24 小米科技有限责任公司 开放式图形库操作的处理方法和装置
US9977968B2 (en) * 2016-03-04 2018-05-22 Xerox Corporation System and method for relevance estimation in summarization of videos of multi-step activities
CN106649037B (zh) * 2016-12-08 2019-04-23 武汉斗鱼网络科技有限公司 一种gpu任务完成状态的判断方法及装置
CN108269224B (zh) * 2017-01-04 2022-04-01 意法半导体股份有限公司 可重新配置的互连
US10417364B2 (en) 2017-01-04 2019-09-17 Stmicroelectronics International N.V. Tool to create a reconfigurable interconnect framework
US11353868B2 (en) * 2017-04-24 2022-06-07 Intel Corporation Barriers and synchronization for machine learning at autonomous machines
US10459751B2 (en) * 2017-06-30 2019-10-29 ATI Technologies ULC. Varying firmware for virtualized device
CN110580238A (zh) * 2018-06-11 2019-12-17 Arm有限公司 数据处理系统中的硬件单元的同步
US11200063B2 (en) * 2018-09-27 2021-12-14 Intel Corporation Graphics engine reset and recovery in a multiple graphics context execution environment
CN110308992B (zh) * 2019-06-24 2022-12-27 中国航空无线电电子研究所 面向多分区的gpu访问管理方法
US11593609B2 (en) 2020-02-18 2023-02-28 Stmicroelectronics S.R.L. Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks
CN111538580B (zh) * 2020-04-23 2024-01-05 苏州大学 一种嵌入式实时操作系统的线程信号操作方法与系统
US11531873B2 (en) 2020-06-23 2022-12-20 Stmicroelectronics S.R.L. Convolution acceleration with embedded vector decompression
US11892972B2 (en) * 2021-09-08 2024-02-06 Arm Limited Synchronization mechanisms for a multi-core processor using wait commands having either a blocking or a non-blocking state

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5299309A (en) * 1992-01-02 1994-03-29 Industrial Technology Research Institute Fast graphics control system capable of simultaneously storing and executing graphics commands
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
US5559988A (en) * 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
KR100303085B1 (ko) * 1998-04-24 2001-09-24 전주범 이진형상신호부호화장치및방법
US7444641B1 (en) * 1998-03-10 2008-10-28 Agere Systems Inc. Context controller having context-specific event selection mechanism and processor employing the same
US6782432B1 (en) * 2000-06-30 2004-08-24 Intel Corporation Automatic state savings in a graphics pipeline
US7007151B1 (en) * 2000-10-04 2006-02-28 Nortel Networks Limited System, device, and method for controlling access to a memory
EP1405175B1 (en) * 2001-06-29 2006-09-27 Koninklijke Philips Electronics N.V. Multiprocessor system and method for operating a multiprocessor system
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
US7421694B2 (en) * 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
US20050289551A1 (en) * 2004-06-29 2005-12-29 Waldemar Wojtkiewicz Mechanism for prioritizing context swapping
US7320063B1 (en) * 2005-02-04 2008-01-15 Sun Microsystems, Inc. Synchronization primitives for flexible scheduling of functional unit operations
US20060146864A1 (en) * 2004-12-30 2006-07-06 Rosenbluth Mark B Flexible use of compute allocation in a multi-threaded compute engines
US7516311B2 (en) * 2005-01-27 2009-04-07 Innovasic, Inc. Deterministic microcontroller context arrangement
US7526579B2 (en) * 2005-01-27 2009-04-28 Innovasic, Inc. Configurable input/output interface for an application specific product
US7545381B2 (en) * 2005-11-10 2009-06-09 Via Technologies, Inc. Interruptible GPU and method for context saving and restoring
US7580040B2 (en) * 2005-11-10 2009-08-25 Via Technologies, Inc. Interruptible GPU and method for processing multiple contexts and runlists

Also Published As

Publication number Publication date
TW201032064A (en) 2010-09-01
US20100115249A1 (en) 2010-05-06
CN101877120B (zh) 2013-07-24
CN101877120A (zh) 2010-11-03
US8082426B2 (en) 2011-12-20

Similar Documents

Publication Publication Date Title
TWI428763B (zh) 支援複數繪圖處理器之互動的方法與系統
US8368701B2 (en) Metaprocessor for GPU control and synchronization in a multiprocessor environment
US20100110089A1 (en) Multiple GPU Context Synchronization Using Barrier Type Primitives
US10002031B2 (en) Low overhead thread synchronization using hardware-accelerated bounded circular queues
US8675006B2 (en) Apparatus and method for communicating between a central processing unit and a graphics processing unit
US9830158B2 (en) Speculative execution and rollback
US7755632B2 (en) GPU internal wait/fence synchronization method and apparatus
US9274859B2 (en) Multi processor and multi thread safe message queue with hardware assistance
US9069605B2 (en) Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention
US7526634B1 (en) Counter-based delay of dependent thread group execution
EP2483772B1 (en) Trap handler architecture for a parallel processing unit
US8566828B2 (en) Accelerator for multi-processing system and method
US9158595B2 (en) Hardware scheduling of ordered critical code sections
US20130198760A1 (en) Automatic dependent task launch
US20140282566A1 (en) System and method for hardware scheduling of indexed barriers
US9448803B2 (en) System and method for hardware scheduling of conditional barriers and impatient barriers
JP2009230757A (ja) 共有メモリに対するアトミックな更新を可能にするロックメカニズム
US20130145124A1 (en) System and method for performing shaped memory access operations
CN102077181A (zh) 用于在多核处理器中和在某些共享存储器多处理器系统中产生并输送处理器间中断的方法和系统
CA2016532C (en) Serializing system between vector instruction and scalar instruction in data processing system
JP2003196084A (ja) リードモディファイライトユニットを有するシステム
US10114650B2 (en) Pessimistic dependency handling based on storage regions
JP5328833B2 (ja) ダイレクトメモリアクセスシステム及びその制御方法
JP5062950B2 (ja) ダイレクトメモリアクセス装置及びその制御方法
JPH0340169A (ja) 多重プロセツサシステムおよび複数の処理装置を制御する方法