專利名稱:繪圖處理單元同步系統(tǒng)與方法
技術(shù)領域:
本發(fā)明涉及關于一種繪圖處理器(Graphics Processing Unit,以下簡稱為GPU), 且特別有關于一種支持多個GPU的互動的方法與系統(tǒng)。
背景技術(shù):
就計算機制作圖形的發(fā)展而言,處理能力的需求愈見顯著。傳統(tǒng)上在利用單一中 央處理器(Central Processing Unit,以下簡稱為CPU)處理繪圖指令時,許多圖形軟件可 利用額外的硬件來得到更好的效果。特別的是,由于處理能力的需求增加,可使用多重CPU 和(或)一GPU。在計算機中使用GPU有助于在處理圖形指令時更有效率。在使用GPU可 增加圖形需求的同時,許多動態(tài)圖形場景更適合利用多個GPU來繪制。在計算機環(huán)境中使 用一個以上的GPU時,可能需要對GPU進行同步化。 以軟件為基礎的多重CPU同步機制已發(fā)展超過15年了。由于近年來發(fā)展之GPU 的本質(zhì),GPU具有串流類型架構(gòu)(Stream Type Architecture),現(xiàn)有的多重CPU同步支持缺 少軟件與硬件中所需的許多特性。 協(xié)議控制數(shù)據(jù)快捷(Protocol Control Info麗tion-Express,以下簡稱為 PCI-Express)系統(tǒng)接口提供一通用訊息傳輸階層(Generic Message TransportLevel)以 供在計算機中多重CPU和/或GPU間進行通訊,亦提供在主存儲器與區(qū)域內(nèi)存之數(shù)據(jù)區(qū)塊 間的連貫性支持(Coherency Su卯ort) 。 PCI-Express鎖定交易支持訊息(PCI-Express Locked Transaction Su卯ort Message)與廠商定義訊息可作為實現(xiàn)不同同步類型的低階 基元(Low Level Primitives),該機制不包括必要的GPU同步支持,而且廠商被迫定義訊息 以支持多重CPU與多重GPU配置的系統(tǒng)。 此外,屏障類型同步(Barrier Type Synchronization)已廣泛應用于多重執(zhí)行緒 與多重處理器系統(tǒng),但目前在單一上下文(Context)GPU所實施的屏障同步可能會引起嚴 重的延滯(Stall)與潛在的死鎖(Deadlocks)狀況,其可能導致計算機中GPU的使用相當 沒效率。 因此,本發(fā)明提供了一種支持多個繪圖處理器的互動的方法與系統(tǒng)。
發(fā)明內(nèi)容
基于上述目的,本發(fā)明實施例揭露了一種繪圖處理單元同步系統(tǒng),包括至少一生 產(chǎn)者繪圖處理單元,其包括一第一組圍籬/等待緩存器(Fence/WaitRegister),且用以接 收與至少一上下文(Context)相關之一圍籬命令;至少一消費者繪圖處理單元,其包括一 第二組圍籬/等待緩存器,當該圍籬命令未在該第一組圍籬/等待緩存器的范圍內(nèi)時接收 對應該圍籬命令之數(shù)據(jù);其中當該生產(chǎn)者繪圖處理單元之該圍籬命令符合該消費者繪圖處 理單元之該第二組圍籬/等待緩存器之一等待命令,則該消費者繪圖處理單元停止執(zhí)行。
本發(fā)明實施例更揭露了一種繪圖處理單元同步方法。 一第一繪圖處理單元根據(jù)一 上下文接收一圍籬命令,其中該繪圖處理單元包括一第一組圍籬/等待緩存器,而該圍籬
4命令包括一地址。當該地址不在該第一組圍籬/等待緩存器之范圍內(nèi)時,將該圍籬命令寫
入一第二繪圖處理單元。將對應該圍籬命令之數(shù)據(jù)發(fā)送給該第二繪圖處理單元,并且接收
該第二繪圖處理單元之一等待命令以封鎖(Block)該第二繪圖處理單元的管線。 本發(fā)明實施例更揭露了一種管理繪圖處理單元上下文之外部圍籬寫入的方法。第
一繪圖處理單元偵測第二繪圖處理單元之一外部圍籬,其中該外部圍籬與一上下文相關。
將與該外部圍籬相關之一地址與該第一繪圖處理單元之上下文同步區(qū)塊地址進行比對,以
及當判斷該上下文目前正在執(zhí)行時,寫入與該上下文相關之信息至一內(nèi)存接口單元(MXU)
中一選定的同步緩存器。
圖1顯示本發(fā)明實施例之多重執(zhí)行緒/多重GPU環(huán)境中之基本同步基元的示意 圖。 圖2顯示本發(fā)明實施例之實施于GPU管線(Pipeline)中之一內(nèi)部屏障同步之非 限定范例的示意圖。 圖3A顯示本發(fā)明實施例之GPU內(nèi)部屏障同步的示意圖。
圖3B顯示本發(fā)明實施例之GPU屏障命令格式的示意圖。
圖4顯示本發(fā)明實施例之GPU屏障命令變化的示意圖。 圖5顯示本發(fā)明實施例之使用屏障命令來進行二個GPU間之同步的示意圖。 圖6顯示本發(fā)明實施例之建構(gòu)在PCI-E鄧ress接口上之多重GPU系統(tǒng)的示意圖。 圖7顯示圖6之多重GPU系統(tǒng)之連結(jié)類型(Join Type)同步的示意圖。 圖8顯示圖6之多重GPU系統(tǒng)之分支類型(Fork Type)同步的示意圖。 圖9顯示圖6之多重GPU系統(tǒng)之連結(jié)_分支類型(Join-Fork Type)同步的示意圖。 圖10顯示本發(fā)明實施例之多重GPU上下文與局部GPU排程器(Scheduler)的示 意圖。 圖11顯示本發(fā)明實施例之系統(tǒng)中內(nèi)上下文(Inter-Context)與內(nèi)GPU同步之指 導方針(Guidelines)的示意圖。 圖12顯示本發(fā)明實施例之GPU上下文的不同狀態(tài)與根據(jù)內(nèi)部與外部事件改變狀 態(tài)的示意圖。 圖13、14顯示本發(fā)明實施例之在不同狀態(tài)之上下文執(zhí)行屏障的示意圖。 圖15顯示圖13、14之環(huán)境下之圍籬處理狀態(tài)機(Fence Processing
StateMachine)的示意圖。 圖16顯示本發(fā)明實施例之支持多重上下文同步之上下文緩存器區(qū)塊的示意圖。
圖17顯示本發(fā)明實施例之影響定時器與監(jiān)控事件之上下文狀態(tài)管理的示意圖。
圖18顯示本發(fā)明實施例之上下文狀態(tài)管理邏輯單元之狀態(tài)機的示意圖。
主要組件符號說明
122 互斥
124 互斥取得
126 鎖定
128 --解鎖130 --互斥釋放130 --條件群組132 --條件等待134 --進入隊列136 --回復138 --條件旗號140 --條件廣播142 --旗號群組144 --旗號P(向下)二元146 --旗號V(向上)二元148 --旗號P(向下)計數(shù)150 --旗號v(向上)計數(shù)152 --警示群組154 --警示156 --測試警示158 --警示p160 --警示等待162 --進入隊列164 --警示回復166 --屏障204 -- GPU管線205 -4也址范圍206 --發(fā)送內(nèi)部等待代符
208 --內(nèi)存存取單元210a、210b 緩存器與比較邏輯單元
214 --發(fā)送寫入確認216 --產(chǎn)生內(nèi)存數(shù)據(jù)讀取/寫入路徑
218 --產(chǎn)生內(nèi)存數(shù)據(jù)寫入路徑
220 --發(fā)送內(nèi)部等待代符
222 --發(fā)送寫入確認224 --產(chǎn)生內(nèi)存數(shù)據(jù)寫入路徑
226 --發(fā)送內(nèi)部等待代符
228 --產(chǎn)生內(nèi)存數(shù)據(jù)寫入路徑
230 --產(chǎn)生內(nèi)存數(shù)據(jù)寫入路徑
302 -- CSP FRONT304 -- EUP—F306 -- ZU308 -一 ZL2
310 -WBU312 -CSP BACK314 -虛擬分頁表402 -內(nèi)部同步命令404 -CSP前端圍籬(外部)406 -內(nèi)部或外部圍籬/等待408 '管線區(qū)塊內(nèi)部圍籬或等待410 'CSP后端或管線區(qū)塊內(nèi)部圍籬412 -內(nèi)部圍籬414 4寺權(quán)圍籬416 〃CPU中斷(CSP后端)418 〃等待420 -非特權(quán)圍籬422 -非CPU中斷502 、530 GPU A
504、 532 GPU B
506 -地址范圍A508 -GPU A之內(nèi)存存取單元510 -GPU B之視訊內(nèi)存512 〃 GPU同步緩存器514 〃 GPU同步緩存器516 -GPU A之視訊內(nèi)存518 -GPU B之視訊內(nèi)存520 -GPU B之總線接口單元522 -圍籬/等待緩存器映像524 -圍籬/等待緩存器映像534 〃寫入埠602 'GPU A的局部內(nèi)存604 -GPU B的局部內(nèi)存606 -GPU C的局部內(nèi)存608 -GPU D的局部內(nèi)存610 -CPU芯片組612 -PCI-E內(nèi)存重指向邏輯單元614 'CPU系統(tǒng)內(nèi)存616 -多重GPU驅(qū)動器702 -GPU A704 -GPU B706 -GPU C708 -同步屏障
70110] 710 GPU D
0111] 712 圍籬0
0112] 714 圍籬1
0113] 716 圍籬2
0114] 718 圍籬命令
Cm5] 720 觸發(fā)命令
0116] 722 等待0命令
0117] 724 等待1命令
0118] 726 等待2命令
0119] 802 GPU A
0120] 804 GPU B
0121] 806 GPU C
0122] 808 GPU D
0123] 810 同步屏障
0124] 812 等待1命令
0125] 814 圍籬1
0126] 816 等待2命令
0127] 818 圍籬2
0128] 820 等待3命令
0129] 822 圍籬3
0130] 902 GPU A
0131] 904 GPU B
0132] 906 GPU C
0133] 908 GPU D
0134] 910 同步屏障
0135] 914 等待2.0命令
0136] 916 等待2.1命令
0137] 918 等待3.0命令
0138] 920 等待3.1命令
0139] 1002 應用執(zhí)行清單
0140] 1004a. . 1004m 上下文
OH1] 1006 應用執(zhí)行清單
0142] 1008a. . 1008m 上下文
0143] 1010 局部GPU上下文排程器
0144] 1026 局部GPU任務隊列
0145] 1028 GPU
0146] 1103a、1103c、1103w、1103y 上下文Tl
0147] 1103b、1103d、1103x、1103z 上下文T2
0148] 1103e 上下文E
1103g 上下文G1103h 上下文H1102a 執(zhí)行清單A1102r 執(zhí)行清單R1102b 執(zhí)行清單B1102s 執(zhí)行清單s1106a 局部執(zhí)行清單與上下文執(zhí)行控制區(qū)塊1108a 具有包含在CPU任務空間內(nèi)之視訊內(nèi)1106t 局部執(zhí)行清單與上下文執(zhí)行控制區(qū)塊1108t 具有包含在CPU任務空間內(nèi)之視訊內(nèi)1232 4丸行1234 -空缺1236 -就緒1238 -懸置1240 -待處理回復1242 -待處理儲存1244 -檢查同步條件1302 -GPU A1310 -上下文內(nèi)存空間1502 -偵測外部圍籬至任一 GPU上下文1504 -檢查相符的上下文狀態(tài)1506 -寫入選擇的緩存器至MXU1508 :等待直到相關上下文載入的終端1510 -寫入至MXU中選擇的同步緩存器1512 -開始執(zhí)行加載上下文1514 :等待直到上下文儲存的終端1516 -寫入至內(nèi)存中之同步緩存器區(qū)塊位置1602 -上下文狀態(tài)緩存器1604 -上下文切換配置緩存器1606 -定時器模式緩存器1608 -自旋等待計數(shù)器緩存器1610 -上下文時間片段計數(shù)器緩存器1611 -上下文優(yōu)先權(quán)1612 -DMA緩沖器頭端指標1613 -DMA緩沖器頭端指標1614 -DMA緩沖器尾端指標1615 -自旋等待定時器1616 -上下文同步區(qū)塊地址1616
1617 --等待代符1618 -^執(zhí)行中1619 --時間片段定時器1620 --空缺1621 --任意監(jiān)控事件1622 -、就緒1624 --懸置1628 --待處理儲存1630 --待處理回復1632 --上下文監(jiān)控旗標1646 --上下文監(jiān)控定義緩存器1702 --上下文狀態(tài)管理邏輯區(qū)塊1704 --自旋/等待監(jiān)看計數(shù)器1706 --時間片段計數(shù)器1708 --上下文狀態(tài)緩存器1709 --上下文切換配置緩存器1710 --總線接口單元1712 --上下文之匪IO緩存器地址譯碼邏輯單元1720 --內(nèi)存存取單元1722 --圍籬地址與數(shù)據(jù)緩沖器1724 --上下文l..N之同步地址范圍1802 --事件偵測循環(huán)1804 --檢查編碼上下文狀態(tài)1806 --寫入閂鎖數(shù)據(jù)至一同步緩存器1808 --設定監(jiān)控旗標1810 --根據(jù)定義緩存器執(zhí)行動作1811 --設定警示旗標與密碼1812 --設定就緒狀態(tài)1814 --設定警示旗標與密碼1816 --產(chǎn)生CPU中斷1818 --緩沖地址與數(shù)據(jù)1820 --等待直到儲存1822 --寫入緩沖數(shù)據(jù)至內(nèi)存1824 --緩沖地址與數(shù)據(jù)1826 --等待直到回復1828 --寫入緩沖數(shù)據(jù)至同步緩存器1830 --終止執(zhí)行目前上下文1832 --設定目前狀態(tài)為"待處理儲存〃1834 --儲存目前上下文
1836 設定為〃就緒" 1838 利用定義緩存器切換到新的上下文
1840 設為〃 懸置〃 與〃 等待〃 碼
具體實施例方式
為了讓本發(fā)明之目的、特征、及優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合 所附圖式圖1至圖18,做詳細之說明。本發(fā)明說明書提供不同的實施例來說明本發(fā)明不同 實施方式的技術(shù)特征。其中,實施例中的各組件之配置系為說明之用,并非用以限制本發(fā) 明。且實施例中圖式標號之部分重復,系為了簡化說明,并非意指不同實施例之間的關聯(lián) 性。 本發(fā)明實施例揭露了一種支持復數(shù)繪圖處理器之互動的方法與系統(tǒng)。
圖1顯示本發(fā)明實施例之多重執(zhí)行緒/多重GPU環(huán)境之基本同步基元的示意 圖。如圖所示,可用來同步CPU之基本同步基元包括互斥基元群組(Mutex Primitive Group) 122 (表示相互獨占命令(Mutual ExclusiveCommand))、條件基元群組(Condition Primitive Group) 130、旗號基元群組(Semaphore Primitive Group) 142與警示基元群組 (Alerts Primitive Group) 152。互斥基元群組122包括"互斥取得(Mutex Acquire) 〃基 元124與〃 互斥釋放(Mutex Release) 〃基元130。互斥基元亦包含不同名稱之鎖定(Lock) 基元126與解鎖(Unlock)基元128。 條件群組(Condition Group) 130中包括條件等待基元(Condition WaitPrimitive) 132,其包括進入隊列(Enqueue)變數(shù)134與回復(Resume)變數(shù)136。若條 件述詞(Condition Predicate)不為真(不滿足),則條件等待基元132之進入序列變數(shù) 134懸置目前的執(zhí)行緒并將該執(zhí)行緒放入序列。若條件述詞為真(滿足),則條件等待基元 132之回復變數(shù)136可重新執(zhí)行該執(zhí)行緒。條件群組130亦包括條件信號基元(Condition Signal Primitive) 138與條件廣播基元(Condition Broadcast Primitive) 140。上述基 元與其執(zhí)行之動作相仿,其可呼叫等待懸置(進入序列)的執(zhí)行緒之激發(fā)以再次檢查該條 件述詞,且若該條件述詞仍為真時則繼續(xù)執(zhí)行。該條件信號基元138通知關于一或多個懸 置執(zhí)行緒之條件述詞的改變。條件廣播基元140通知該懸置執(zhí)行緒。旗號基元群組142包 括旗號P(向下)二元基元144、旗號V(向上)二元基元146、旗號P(向下)計數(shù)基元148 與旗號V(向上)計數(shù)基元150。 二元旗號基元的操作與互斥基元類似,二元旗號P基元與 取得有關而二元旗號V與釋放有關。計數(shù)旗號P(向下)基元148檢查旗號值,減少該旗號 值,并且若該值非為零時繼續(xù)執(zhí)行該執(zhí)行緒。否則,計數(shù)旗號P (向下)基元148不會執(zhí)行后 續(xù)操作并且進入睡眠階段(Sle印ing Stage)。計數(shù)旗號V(向上)基元150增加旗號值并 且喚醒任何具有特定地址之在睡眠階段中無法完成旗號P基元后續(xù)操作的執(zhí)行緒。旗號基 元群142在與被中斷之例行程序有互動的情況下相當有用,因為例行程序不會發(fā)生互斥。 警示基元125提供與旗號基元群142及條件基元群130連接之執(zhí)行緒執(zhí)行之中斷的軟性形 式(SoftForm),以實現(xiàn)如暫停(Timeout)與放棄(Abort)的事件。警示基元群組125可使 用在決定讓請求發(fā)生在大于執(zhí)行緒被封鎖之階層的抽象階層的情況。警示基元群組152包 括警示基元154、測試警示基元156、警示P基元158以及警示等待基元160。警示等待基元 160具有多個變數(shù),包括進入隊列基元162與警示回復基元164,但其并非用以限定本發(fā)明。
呼叫警示P基元158為一請求,其中該執(zhí)行緒呼叫例外的警示基元154。測試警示(TestAlert)基元156用以允許執(zhí)行緒判斷該執(zhí)行緒是否有一待處理請求以呼叫警示基元154。警示等待(AlertWait)基元160與條件等待基元132類似,除了警示等待基元160可呼叫警示基元154而非恢復。在警示等待基元160與條件等待基元132間的選擇是依據(jù)呼叫的執(zhí)行緒是否在該呼叫點需響應警示基元154。呼叫警示P基元158提供旗號類似的功能。 在程序之平行循環(huán)中之一額外同步操作為屏障基元166。屏障基元166可扣住處理程序,直到所有(或數(shù)個)程序到達屏障基元166。當所需的程序到達屏障基元166時,屏障基元166釋放被扣住的處理程序。實現(xiàn)屏障基元166的其中一方式可利用多個自旋鎖定(Spin Lock)來實現(xiàn)。自旋鎖定基元可包括第一自旋鎖定基元與第二自旋鎖定基元,其中第一自旋鎖定基元可用來保護紀錄到達屏障基元166之處理程序的計數(shù)器,而第二自旋鎖定基元可用來扣住處理程序直到最后一個處理程序到達屏障基元166為止。實現(xiàn)屏障基元166的另一方式系利用一感應反轉(zhuǎn)屏障基元(Sense-Reversing Barrier)來實現(xiàn),其可利用一私有前處理變量(Private Pr印rocess Variable),每一程序程序之變量可初始化為"1〃 。 上文敘述軟件基元與CPU同步硬件支持,下文亦著重在類屏障基元(Barrier-like Primitive)之硬件支持的實施,其更有助于GPU的同步。特別的是,本發(fā)明揭露了 GPU硬件同步基元與硬件區(qū)塊(Hardware Block),該硬件區(qū)塊可實現(xiàn)上述基元以支持上下文對上下文(Context-To Context)與GPU對GPU之同步。
GPU內(nèi)部管線(inter-pipeline)與外部CPU同步基元 在某些GPU中,同步機制包括多個GPU命令、圍籬命令(FenceCommand)以及實施內(nèi)部GPU管線屏障類型同步之等待命令。該圍籬命令可將值寫入內(nèi)存映像圍籬緩存器(內(nèi)部)和/或內(nèi)存位置,其類似于上述之設定屏障基元166。等待命令可利用多個不同的方式來實現(xiàn),可實現(xiàn)于GPU內(nèi)部和/或外部。 內(nèi)部等待命令可用來檢查包含一計數(shù)值之特定內(nèi)存位置。若該計數(shù)值不為零,則利用一命令減少該值并繼續(xù)執(zhí)行目前上下文。若該值等于零,則一計算機計數(shù)器(PCCounter)(和/或GPU命令指標(Pointer))可重置為在等待命令之前的值,且GPU可切換到另一上下文。 內(nèi)部等待命令可寫入一確定值至一虛擬等待緩存器(Virtual WaitRegister)。當儲存在一對緩存器之圍籬值等于或大于該等待命令提供之值,則可完成該寫入操作。特別比較邏輯單元(Special Compare Logic)關聯(lián)于該對圍籬等待緩存器(Fence-WaitRegister)。此命令與自旋鎖定相關,因為GPU硬件可能檢查圍籬緩存器的內(nèi)容并封鎖GPU管線執(zhí)行,直到該內(nèi)容被更新至需求的值。 當資料不符時,等待命令會延滯(Stall)GPU管線,且繼續(xù)在后續(xù)頻率周期執(zhí)行等待命令。該圍籬值可自管線中之先前命令取得,且可在任何時間到達一同步緩存器對。當圍籬等待緩存器被更新且圍籬值等于或大于等待值,該等待命令寫入可完成并解除該管線的封鎖。需注意同步圍籬/等待緩存器之設定亦可映像至內(nèi)存,但其可能在寫入等待值時自旋而產(chǎn)生內(nèi)存競爭(Memory Contention)。 需注意到GPU上下文可與CPU執(zhí)行緒比對,其表示應用程序任務的某些部分。上下文的執(zhí)行列表或群組可模擬于包含多個執(zhí)行緒的CPU處理程序。此外,在許多系統(tǒng)中,執(zhí)行緒可互相同步。同步機制可藉由任何執(zhí)行緒排程方法來實施,且硬件可連接至排程軟件和/或硬件。包括數(shù)個同步基元之CPU領域(CPU Domain)的執(zhí)行緒同步機制系揭露于"Synchronization Primitivesfor a Multiprocessor :A Formal Specification,A. D. Birrell, J. V. Guttag, J. J. Horning, R丄evin, August 20, 1987, SRC Research Report20〃中。 圖2顯示本發(fā)明實施例之實施于GPU管線中之一內(nèi)部屏障同步之非限定范例的示意圖。特別的是,GPU管線204包括多個模塊,用以描述管線中的不同點。管線模塊H可發(fā)送一內(nèi)部等待代符(Wait Token)206至內(nèi)存存取單元208。映像至內(nèi)存空間之緩存器210a可發(fā)送一寫入確認214至管線模塊H,從而產(chǎn)生一內(nèi)存數(shù)據(jù)讀取/寫入路徑216。當只有在等待代符值等于或大于圍籬等待緩存器中之圍籬值時,緩存器210a才可發(fā)送一寫入確認,其中該寫入確認可由在管線之較晚階段(De印er Stage)中的另一管線區(qū)塊(PipelineBlock)發(fā)送。 同樣的,管線模塊I可發(fā)送一內(nèi)部圍籬代符216給緩存器210a(其可包括一對圍籬/等待緩存器(Fence/Wait Register))。在該緩存器接收該內(nèi)部圍籬代符216后,可產(chǎn)生一內(nèi)存數(shù)據(jù)寫入路徑218。如圖2所示,管線模塊H與管線模塊I系為一對管線單元,其可同步管線模塊H的行動與管線模塊I的某些操作(例如,相同內(nèi)存表面存取同步)。
管線模塊H與管線模塊I執(zhí)行緩存器210a的某些操作,而另一管線模塊J可發(fā)送一內(nèi)部等待代符220給內(nèi)存存取單元208。緩存器210a(包括一對緩存器)接著發(fā)送一寫入確認222回管線模塊J,其有助于產(chǎn)生內(nèi)存數(shù)據(jù)寫入路徑224。管線模塊K發(fā)送一內(nèi)部等待代符226給緩存器210b,并接著產(chǎn)生內(nèi)存數(shù)據(jù)寫入路徑228。管線模塊L可產(chǎn)生內(nèi)存數(shù)據(jù)寫入路徑230。上述每一對緩存器系關聯(lián)于同步數(shù)據(jù)區(qū)塊之內(nèi)存地址,且每一對緩存器之映像內(nèi)存地址范圍系在特定地址范圍緩存器205中,其可用以偵測對執(zhí)行之圍籬(Fence)或等待命令之緩存器對的碰撞。若在圍籬(Fence)或等待命令中之地址不符合地址范圍圍籬或等待,則數(shù)據(jù)可改指向至外部內(nèi)存。 需注意到,圖2描述之五個管線模塊并非用以限制本發(fā)明。熟習本領域之技藝人士可了解任意數(shù)目之管線模塊可提供所需功能,且系依據(jù)成對圍籬等待緩存器,其中該成對圍籬等待緩存器系關聯(lián)于實作于內(nèi)存存取單元208中之邏輯單元。此外,至少一內(nèi)存存取單元208包括16 18對緩存器,其亦非用以限定本發(fā)明。熟習本領域之技藝人士可了解依據(jù)圖形管線之特定配置可使用任意數(shù)目之緩存器對。 此外,依據(jù)特定配置,并非GPU管線204的每個區(qū)塊都需要處理圍籬/等待命令,且只有寫出數(shù)據(jù)至內(nèi)存存取單元208的單元具有專門存取內(nèi)存存取界面單元(MemoryInterface Unit) 208的圍籬/等待接口 。 圖3A系顯示本發(fā)明實施例之GPU內(nèi)部屏障同步的示意圖,其所揭示之GPU管線類似于圖2之GPU管線。特別的是,圖3A中包括內(nèi)存存取界面單元208與多個模塊302、304、306、308、310與312,但其并非用以限定本發(fā)明。圖3A中亦包括一虛擬分頁表(VirtualPage Table, VPT)模塊314。熟習本領域之技藝人士可了解圖3A中之六個管線模塊并非用以限定本發(fā)明。根據(jù)特定的配置,可使用較多或較少的管線模塊來實作。使用圍籬等待對(Fence/Wait Pairs)之管線包括命令串流處理器(Command Stream Processor) 302的前
13端部位。該前端部位可連接至一前端執(zhí)行單元池(Front-End ExecutionUnit Pool, EUP_F) 304,其可處理頂點(Vertices)。該前端執(zhí)行單元池304亦可處理、發(fā)送和/或接收帶有其它管線單元的數(shù)據(jù),該等管線包括早期深度測試單元(Early D印th Test Unit)ZLl、ZL2以及處理最終像素值與命令串流處理器312之后端部位的寫回單元(Write-Back Unit,WBU)。上述單元系電性連接于內(nèi)存存取界面單元208且在上述同步操作中系以成對方式來執(zhí)行。 此外,可產(chǎn)生GPU命令代符"Internal Sync 〃且用以支持同步基元,如圖3B所示。根據(jù)操作碼(Opcode) 314中之某些位值,內(nèi)部同步(Internal Sync)命令代符包括提供多個外部圍籬(External Fence)基元、內(nèi)部圍籬基元與等待基元之版本的變化。內(nèi)部同步命令代符可插入由命令串流處理器(CommandStream Processor,以下簡稱為CSP)取得之命令串流。Internal Sync命令可自前端CSP 302傳送至一特定單元,其中該特定單元系來自具有內(nèi)存存取交換單元(Memory Exchange Unit) 208之接口的群組(Group)。若圍籬基元在基元內(nèi)存存取交換單元(Memory Exchange Unit) 208的外部,則該圍籬基元可寫入一值至該命令定義的內(nèi)存位置。 一般來說,由于該命令可能發(fā)生內(nèi)存競爭且需要實施互斥,故并沒有支持該命令之外部等待基元。 圖4顯示本發(fā)明實施例之內(nèi)部同步代符或外內(nèi)部同步代符之變化的示意圖,如圖1的GPU所示。下述同步命令可利用一內(nèi)部同步代符、一CSP前端圍籬基元404、一內(nèi)部圍籬基元406、一等待基元418、一外部特權(quán)圍籬基元414、一 CPU中斷基元416、一外部非特權(quán)基元420和一無CPU中斷基元122來產(chǎn)生。 特別的是,在接收該內(nèi)部同步命令(步驟402)后,判斷是否存在一圍籬基元。若圍籬基元存在(FE = 1),則可利用CSP之前端部位來應用CSP前端圍籬基元(外部)(步驟404)。若圍籬基元不存在(FE二0),則可執(zhí)行同步命令以作為在圖3A中顯示之任意成對管線階段中之內(nèi)部或外部圍籬/等待基元(步驟406)。若不使用外部圍籬基元(EXT = 0),則可利用一管線區(qū)塊內(nèi)部圍籬或等待基元(步驟408,指向依賴WT旗標值之等待基元418或內(nèi)部圍籬基元412)。 參考步驟406,若使用外部圍籬基元(EXT = 1),則判斷是否使用管線區(qū)塊外部圍籬基元之CSP后端(步驟410)。若使用特權(quán)圍籬基元(PRI = l,指向)區(qū)塊414,則判斷是否要執(zhí)行CPU中斷。若INT = 1,則使用CPU中斷基元(CSP后端,步驟416)。若頂T = 0,則使用非CPU中斷基元(步驟422)。換句話說,若使用非特權(quán)圍籬基元(步驟420),判斷是否要執(zhí)行CPU中斷(步驟416與422)。
執(zhí)行圍籬/等待對命令之二個GPU間的同步范例 在GPU管線單元之同步存取上發(fā)展之內(nèi)部同步機制可被執(zhí)行以支持多GPU。舉例來說,GPUA可繪出像素之基數(shù)帶(Odd Number Band),而GPUB可繪出像素之偶數(shù)帶(EvenNumber Band),但其并非用以限制本發(fā)明。在繪出之后,著色目標(Render Target, RT)內(nèi)存表面(Memory Surface)可作為材質(zhì)之用。上述二個GPU可經(jīng)由內(nèi)存存取單元(MXU)讀取畫框緩沖器(frame buffer),同時建立專有的表格與設置接口 ,但上述GPU間可進行同步,故在GPU B完成寫入至該緩沖器前,GPU A無法讀取耦接于緩沖器之GPU B,反之亦然。
圖5顯示本發(fā)明實施例之使用屏障命令來進行二個GPU間之同步的示意圖,其與圖4類似,但不同在于圍籬命令的動作,其具有映像至另一GPU地址空間的地址。另一個不同點為執(zhí)行圍籬命令,其中因為地址范圍A 506中不包括該地址,故會導致遺失CPU同步緩存器區(qū)塊。如圖5所示,GPU A 502中之可執(zhí)行上下文數(shù)據(jù)串流包括一數(shù)據(jù)串流組件(DataStream Element) N、圍籬L同步命令(Fence L Sync Command)、數(shù)據(jù)串流組件2、表面Q繪圖命令與數(shù)據(jù)(Surface Q Rendering Commands And Data)、命令串流組件1以及數(shù)據(jù)串流組件0。同樣的,包含在GPU消耗表面Q數(shù)據(jù)(GPU B consumingsurface Q data) 504中之可執(zhí)行上下文數(shù)據(jù)系為數(shù)據(jù)串流組件N、利用作為材質(zhì)之表面Q的繪出命令、等待L同步命令、數(shù)據(jù)串流組件2、命令串流組件1以及數(shù)據(jù)串流組件O來執(zhí)行命令。GPU A 508之內(nèi)存存取單元包括GPU同步緩存器512且可接收GPU A 502中之上下文之圍籬L同步命令。GPU A之內(nèi)存存取單元亦可接收GPU B視訊內(nèi)存范圍536中之圍籬L,其中該范圍系超出GPU A之內(nèi)部圍籬/等待緩存器之地址范圍A 506。當圍籬L命令伴隨著超出地址范圍A506之一地址,MUX 508具有GPU A之遺失內(nèi)部同步緩存器區(qū)塊512。 MUX 508轉(zhuǎn)送圍籬L命令數(shù)據(jù)給該地址,其可能位于GPUA的外部且位于GPU B內(nèi)存空間中。MUX 508可耦接于GPUA之視訊內(nèi)存516,其包括圍籬/等待緩存器映像522。當內(nèi)存映像輸入/輸出(Memorymappedinput/output,匪IO)空間具有超出定義之GPUA之地址范圍A的地址,則內(nèi)存存取單元508亦可經(jīng)由總線接口單元(Interface Unit, BIU)寫入圍籬命令給GPU B內(nèi)存映像輸入/輸出(匪IO)空間。GPU B之總線接口單元520傳送數(shù)據(jù)給GPU B同步緩存器514。GPU B同步緩存器514可發(fā)送數(shù)據(jù)給GPU B 504中的上下文,并且接收一等待L同步命令,其中若管線值完全不符合成對的圍籬緩存器值,則可封鎖GPU B。 GPU B 501之內(nèi)存存取單元發(fā)送數(shù)據(jù)給GPU A之視訊內(nèi)存,其包括圍籬等待緩存器映像空間518。
為了提供多GPU(例如,GPU A 530與GPU B 532)間的同步,需要實現(xiàn)支持簡單內(nèi)GPU同步之額外硬件特征。由于GPU A 530可寫入圍籬命令至GPU B 532的地址空間,該額外硬件可以不同方式操作。 一圍籬與等待對(fence and wait pair)可插入至指向不同GPU之GPU命令的二個獨立串流中。 需注意到,當另一GPU(例如,GPU A 530)寫入一值至同步緩存器區(qū)塊514,GPU同步緩存器區(qū)塊514可藉由額外寫入端口 534提供自總線接口單元520直接寫入的功能。此外,當圍籬失誤(fence miss)指向另一 GPU地址空間,則總線接口單元520可處理圍籬失誤??偩€接口單元520可處理外部等待,亦可處理映像至總線接口單元內(nèi)存映像輸入/輸出地址空間之GPU同步緩存器512、514。 MXU和總線接口單元520可提供同步緩存器區(qū)塊內(nèi)容的連貫性以及指定(映像)內(nèi)存位置(4K分頁),并且寫入沿著選擇圍籬緩存器修改的內(nèi)存位置。 若上述特征有被特定配置所支持,則可定義下述動作序列{GPU A} — {GPU B}類型的同步。特別的是,在第一步驟中建立GPU A輸出之功能/狀態(tài)/繪制命令之一命令序列。接著,該系統(tǒng)可插入一內(nèi)部圍籬命令(至CSP和/或其它單元),其中將一指定計數(shù)值(fenCe#)插入表面輸出序列之終端。需注意到,根據(jù)特定配置,在圍籬命令中的地址可能不在GPUA圍籬/等待緩存器區(qū)塊的范圍內(nèi)。地址程緩存器選擇字段可設置在GPU B 532的地址范圍內(nèi),其中可執(zhí)行圍籬/等待同步操作,如圖2所示。 接著,該系統(tǒng)可建立GPU B輸出之功能/狀態(tài)/繪制命令之一命令序列。接著,該系統(tǒng)可插入一內(nèi)部等待命令(指向CSP和/或其它單元),其中相同(或類似)計數(shù)值系作為GPU A 530命令序列之對應圍籬命令。需注意到,在GPU B輸入串流中,在繪制命令前可插入內(nèi)部等待命令,該等待命令可被插入以使用GPU A繪制的表面。在等待命令中的地 址可設置于GPU B圍籬/等待緩存器區(qū)塊的范圍內(nèi),其中可執(zhí)行實際圍籬/等待同步操作。 此外,該系統(tǒng)可發(fā)送繪制命令,其可使用GPU A繪制的表面,如如輸入至頂點著色器(Vertex Shader)或幾何著色器(Geometry Shader)、深度_Z單元以及材質(zhì)單元。需注意到,GPUA 串流中之圍籬命令的區(qū)塊識別碼包括內(nèi)存表面產(chǎn)生器(Producer)區(qū)塊識別碼(EUPF_ST0、 ZL2、WBU或任何寫入數(shù)據(jù)至該內(nèi)存表面之其它區(qū)塊)。在復雜的圖形管線中,命令與代符可 經(jīng)由命令數(shù)據(jù)路徑來傳送,即為何在管線中的每個區(qū)塊具有唯一的區(qū)塊識別碼,其系應用 于路由之命令標頭。同樣的,GPU B串流中之等待命令的區(qū)塊識別碼包括消費器(Consumer) 區(qū)塊識別碼(CSP、ZL1或任何讀取該內(nèi)存表面數(shù)據(jù)之其它區(qū)塊)。此外,特定產(chǎn)生器/消費 器區(qū)塊組合可自上述所述之單一CPU同步圖案(Pattern)推導而得。就產(chǎn)生器/消費器對 (Producer/Consumer Pair)言,圍籬/等待對可分派在消費器同步緩存器區(qū)塊中。
復數(shù)GPU可執(zhí)行復數(shù)上下文,且當內(nèi)GPU(inter-GPU)同步程序延滯某一上下文很 長的時間,該GPU可切換延滯的上下文并執(zhí)行另一上下文以維持GPU硬件的高效率。同時, 一上下文可發(fā)送一屏障同步命令給早已懸置或在過渡階段之另一GPU上下文,其產(chǎn)生具有 多上下文之GPU之同步的額外問題,且需要特別注意以存取內(nèi)存中之GPU上下文的同步緩 存器以及上下文過渡狀態(tài),以防止原始數(shù)據(jù)危害(RAW Data Hazard)。在圖5中僅利用一屏 障圍籬/等待基元來描述二個GPU間的互動,需注意到,本發(fā)明概念可延伸為利用一 PCI-E 總線的性能來描述多個GPU間的互動。 多個GPU可經(jīng)由一芯片組接口連接,并且可發(fā)送一圍籬值至有關另一 GPU之預設 地址空間。當內(nèi)部同步命令指向特定GPU地址空間之外,外部圍籬遺失(External Fence Miss)可由PCI-E接口中的邏輯單元來處理。內(nèi)部同步命令中的圍籬值可重新指向至GPU, 其符合地址空間限制(如圖6所示)。進階排程器(Advance Scheduler, AS)之外部圍籬 與等待可依相同邏輯重新指向CPU系統(tǒng)內(nèi)存。 當圍籬值被寫入一CPU地址空間且操作系統(tǒng)的進階排程器在處理其它動作時,則 具有復數(shù)同步配置,其包括GPU對CPU同步操作,但并非用以限定本發(fā)明。上述有關硬件單 元之GPU命令亦支持這樣的同步基元。該配置亦可經(jīng)由進階排程器應用在內(nèi)GPU,如微軟文 件"Parallel Engines support inthe U)DM Basic Scheduling model"所述。同步的 另一不同點系為內(nèi)GPU同步,其中多個GPU可在彼此間使用屏障同步而不需要CPU的干涉。 該配置可利用GPU硬件中的特殊配置,亦可支持一系統(tǒng)接口 (例如,PCI-E)。需注意到,多 重GPU-CPU系統(tǒng)的實體實現(xiàn)可根基于PCI-E總線和/或任何其它提供多重GPU-CPU互動的 接口。 二個以上GPU的同步 藉由一內(nèi)部同步命令來實現(xiàn)之本程序可提供在多重GPU配置中之同步的技術(shù),除 了根據(jù)不同GPU的地址具有重新指向內(nèi)存/同步緩存器寫入的接口能力外。圖6顯示具有 芯片組之GPU架構(gòu)的示意圖。特別的是,多重GPU驅(qū)動器616可發(fā)送多個命令串流給任一 GPU。在圖6中,多重GPU驅(qū)動器616可發(fā)送命令串流0給GPU A的局部內(nèi)存602。同樣的, 命令串流1被發(fā)送至GPU B 604,命令串流2被發(fā)送至GPU C 606,以及命令串流3被發(fā)送 至GPU D 608。每一GPU 602 608可經(jīng)由PCI-E內(nèi)存重指向邏輯單元612發(fā)送一圍籬/ 等待失誤給CPU芯片組610,并且自CPU芯片組610接收重指向內(nèi)部圍籬。CPU芯片組610
16亦可發(fā)送一先進排程器圍籬和/或一先進排程器等待給CPU系統(tǒng)內(nèi)存614。 雖然可使用多種架構(gòu)拓墣的任何一種,接下來將描述可使用在多重GPU配置中之
三種類型的GPU同步架構(gòu)拓撲。詳細來說,可使用一連結(jié)類型(Jointype)(多程序-單一
消費者)架構(gòu)拓撲,可使用一分支類型(Fork type)(單一程序-多消費者)架構(gòu)拓撲,以
及可使用一連接-分支類型(多程序-多消費者)架構(gòu)拓撲。上述架構(gòu)拓撲可利用一內(nèi)部
同步命令與CSP硬件來進行同步,然而,其并非是必須的,亦可使用其它類型的接線與代符同步。 當多個GPU達到執(zhí)行命令串流中之某一點(屏障)且另一 GPU利用多個GPU產(chǎn)生 之數(shù)據(jù)開始執(zhí)行一命令串流時,即表示為連接類型同步機制,如圖7所示。
圖7顯示圖6之多重GPU系統(tǒng)間之連結(jié)類型同步的示意圖。特別的是,執(zhí)行于GPU A 702、 GPU B 704與GPU C 706上之二個平行GPU處理(上下文)可產(chǎn)生使用于第四GPU 程序的數(shù)據(jù),其中該第四GPU程序是執(zhí)行于GPUD 710之上。GPU A 702、 GPU B 704與GPU C 706可用來執(zhí)行影像輸出和/或一般目的(GP)計算以及產(chǎn)生數(shù)據(jù),其中該數(shù)據(jù)利用觸發(fā) 命令520將數(shù)據(jù)寫入內(nèi)存中,觸發(fā)命令520導致內(nèi)部緩沖被清除(Flush)且內(nèi)存可被消費 器GPU存取。GPU D 710包括一上下文,假設GPU A、B、C完成寫入內(nèi)存表面,則當內(nèi)存中的 數(shù)據(jù)有效時該上下文可被啟始。 在GPU D 710同步緩存器區(qū)塊中,該驅(qū)動器可分別配置GPU A 702、 GPUB 704與 GPU C 706的三對圍籬/等待緩存器712、714與716,并且將上述緩存器映像至GPU D 710 上下文地址空間中。在GPU A 702、GPU B 704、GPUC 706與GPU D 710之每一上下文命令 串流中,該驅(qū)動器可插入一圍籬命令,該圍籬命令指向GPU D 710地址空間所需之圍籬/等 待對。圍籬命令718在觸發(fā)命令720之后執(zhí)行,以將緩沖至內(nèi)存的GPU內(nèi)容清除掉。此外, 在GPU D710的命令串流緩沖器中,驅(qū)動器可插入具有CSP區(qū)塊識別碼之內(nèi)部等待命令,并 且指向配置給GPU A 702、 GPU B 704、 GPU C 706與GPU D 710之一所需緩存器對。
該等待命令可拖延執(zhí)行GPU D 710的上下文,直到圍籬值712、714與716到達GPU D 710同步緩存器區(qū)塊中已配置好的圍籬緩存器。此外,當在上述前三個GPU(GPU A 702、 GPU B 704與GPU C 706)中之所有三個上下文達到GPU D 710開始處理命令與數(shù)據(jù)串流的 時間點時,執(zhí)行于多個GPU之圍籬與等待命令的組合可產(chǎn)生一同步屏障708。這樣的解決方 案是在自旋三個等待命令(722、724與726)后發(fā)生,上述三個等待命令將他們的值與圍籬 緩存器的內(nèi)容相比較,其可藉由其它GPU來寫入。 圖8顯示圖6之多重GPU系統(tǒng)之分支類型(Fork Type)同步的示意圖。特別的是, 分支類型同步機制假設多個GPU使用單一GPU所產(chǎn)生的數(shù)據(jù)。由一產(chǎn)生器(例如,GPU A 802)產(chǎn)生的數(shù)據(jù)可給多個平行執(zhí)行的消費器(例如,GPU B 804、GPU C 806與GPU D 808)使用。 如圖8所示,執(zhí)行于GPU B 804、 GPU C 806和/或GPU D 808上之三個平行GPU 程序(上下文)可消耗掉由執(zhí)行于GPU A 802上之第四個程序所產(chǎn)生的數(shù)據(jù)。GPU A 802 包括一上下文,其產(chǎn)生在一程序(上下文)中最先開始執(zhí)行的數(shù)據(jù)。其它三個GPU(804、806 與808)可等到該數(shù)據(jù)寫入到內(nèi)存中再開始執(zhí)行。當數(shù)據(jù)有效時,GPU B 804、GPU C 806和 /或GPU D 808可開始執(zhí)行他們的上下文。 在GPU B 804、 GPU C 806和/或GPU D 808 MXU中,該驅(qū)動器可配置三對圍籬/等待緩存器于同步緩存器區(qū)塊中,其可用來自GPU A 802接收一圍籬值。在GPU A 802之 上下文命令串流緩沖器中,該驅(qū)動器可插入帶有一相似值之三個內(nèi)部圍籬命令,該相似值 指向GPU B 804、 GPU C 806和/或GPUD 808地址空間中之所需圍籬/等待對。該圍籬命 令可在觸發(fā)命令后執(zhí)行,以清除內(nèi)存中之GPU 0之相關緩沖內(nèi)容。 在GPU B 804、 GPU C 806和/或GPU D 808的命令串流緩沖器中,該驅(qū)動器可插 入具有CSP區(qū)塊識別碼的內(nèi)部等待命令,并且指向配置在GPU B804、GPU C 806和/或GPU D 808之MXU中之所需緩存器對以與GPU A 802進行同步。該等待命令可拖延執(zhí)行GPU B 804、 GPU C 806和/或GPU D 808的上下文,直到來自GPU A 802之符合的內(nèi)部圍籬到達 配置好之GPU B 804、GPU C 806和/或GPU D 808的MXU圍籬緩存器。當GPU B 804、GPU C 806和/或GPU D 808中的所有三個上下文開始同步處理,且當要被存取之數(shù)據(jù)區(qū)塊已經(jīng) 就緒時,執(zhí)行于GPU A 802之圍籬命令組合可產(chǎn)生一同步屏障。 圖9顯示圖6之多GPU系統(tǒng)之連結(jié)_分支類型(Join-Fork Type)同步的示意圖。 特別的是,連結(jié)_分支類型同步機制假設第一組GPU可使用第二組GPU產(chǎn)生的數(shù)據(jù)。數(shù)個 以平行方式執(zhí)行的消費器可利用數(shù)個產(chǎn)生器所產(chǎn)生的數(shù)據(jù)。 如圖9所示,多個執(zhí)行于第一組GPU(GPU C 906與GPU D 908)之平行GPU程序 (上下文)消耗可由執(zhí)行于第二組GPU(GPU A 902與GPU B 904)之程序產(chǎn)生的數(shù)據(jù)。GPU A 902與GPU B 904相關之上述上下文可產(chǎn)生使上述程序(上下文)的數(shù)據(jù),上述程序可能 先開始執(zhí)行。GPU C 906與GPU D 908可等待欲寫入內(nèi)存中的數(shù)據(jù)。當該數(shù)據(jù)有效時,GPU C 906與GPU D 908可開始執(zhí)行他們的上下文。 在相關于GPU C 906與GPU D 908的MUX中,該驅(qū)動器可配置復數(shù)對圍籬/等待 緩存器,用以接收來自GPU A 902與GPU B 904之一內(nèi)部圍籬命令。在GPU A 902與GPU B 904中,一上下文命令串流可緩沖該驅(qū)動器,且可插入復數(shù)內(nèi)部圍籬命令,其中上述內(nèi)部圍 籬命令指向GPU C 906與GPU D 908之地址空間中之一所需圍籬/等待對。該圍籬命令可 在觸發(fā)命令后執(zhí)行,以清除內(nèi)存中之GPU A 902與GPU B 904之相關緩沖內(nèi)容。
在GPU C 906與GPU D 908的命令串流緩沖器中,該驅(qū)動器可插入帶有CSP區(qū)塊 識別碼之內(nèi)部等待。該驅(qū)動器亦可指向配置在相關于GPU C 906與GPU D 908之MXU中的 緩存器對,以與GPU A 902與GPU B 904進行同步操作。該等待命令可拖延執(zhí)行GPU C 906 與GPU D 908的上下文,直到分別來自GPU A 902與GPU B 904之符合的內(nèi)部圍籬到達。當 GPU A 902與GPUB 904中之二個上下文可到達GPU C 906與GPU D 908開始處理他們自己 的命令的點,則執(zhí)行于多個GPU上之圍籬與等待命令的組合可產(chǎn)生一同步屏障。此外,在自 旋二個等待命令后,GPU C 906與GPU D 908可開始處理數(shù)據(jù)串流。 需注意到,圖9之硬件組件不限于使用四個GPU。熟習本領域之技藝人士可了解, 上文所述的管線可應用于任何的GPU配置方式。此外,當上述所述的同步機制有助于多重 GPU間的同步操作,且至少一配置方式可用來管理全部的GPU工作負載和/或執(zhí)行于系統(tǒng)中 之多上下文與執(zhí)行緒。 相較于僅使用單一 GPU,第7 10圖所述之多重GPU的配置可實現(xiàn)較平順的同步 效能,其主動且等待屏障同步數(shù)據(jù)與命令。拖延GPU可能會導致嚴重的潛在影響,其可能會 影響使用多機器以增加效能。在使用上下文切換與自旋等待之多上下文GPU的實施例中, GPU具有額外的電路以支持屏障類型同步,其中該上下文暫時懸置在自旋等待狀態(tài)中。
圖10顯示本發(fā)明實施例之多個GPU上下文與局部GPU排程器(Scheduler)的示 意圖。局部GPU任務隊列1026包括應用執(zhí)行清單(A卯lication Run List)A 1002,其包括 一或多個上下文1004a、 1004b與1004m,其中1004m表示應用執(zhí)行清單A 1002具有任意數(shù) 目的上下文。同樣的,局部GPU任務隊列1026包括應用執(zhí)行清單B,其包括一或多個上下文 1008a、 1008b與1008m。局部GPU任務隊列1026可將應用執(zhí)行清單A 1002與1006的數(shù)據(jù) 發(fā)送至局部GPU上下文排程器1010。局部GPU上下文排程器1010可經(jīng)由上下文切換將至 少一部分數(shù)據(jù)傳送給GPU 1028。 在圖11之上下文/多GPU的配置中,同步要求包括內(nèi)上下文屏障同步與內(nèi)GPU
屏障同步。圖11包括多個上下文1104a 1104h以及1104w 1104z,亦包括多個執(zhí)行清
單1102a、1102b、1102r、1102s。 GPU 1108a與1108t之局部執(zhí)行清單與上下文執(zhí)行控制區(qū)
塊1106a與1106t提供上述類型同步的管理方式。本發(fā)明實施例除了可同步單一上下文的
GPU,更可同步多上下文的GPU,其藉由切換與監(jiān)看來以保證可在預期時間間隔內(nèi)完成。此
外,部分上下文并非在〃 執(zhí)行〃 狀態(tài),且GPU可接收尋址給懸置上下文之圍籬值。 為了支持屏障同步功能,區(qū)部GPU執(zhí)行控制單元1106可維護與監(jiān)視每一上下文狀
態(tài)。上述同步的上下文狀態(tài)包括下述穩(wěn)定狀態(tài),其中 1) 〃執(zhí)行(R皿ning)狀態(tài)〃 ,當上下文正在GPU管線中執(zhí)行; 2) 〃空缺(Empty)狀態(tài)〃 ,當上下文沒有命令可供執(zhí)行且命令取得頭端指標具有
與命令寫入尾端指標(command write tail pointer)相同的值; 3) 〃就緒(Ready)狀態(tài)〃 ,當上下文已準備好被執(zhí)行;以及 4) 〃懸置(Suspended)狀態(tài)〃 ,當上下文因懸置碼緩存器中的任何原因自執(zhí)行中 被懸置。 有多個描述待處理上下文儲存(pending context save)與待處理上下文回復 (pending context restore)之中間或過渡狀態(tài)。上述狀態(tài)需要支持在過渡中之上下文的 屏障同步操作。此外,圖12中的特殊狀態(tài)機提供改變上下文狀態(tài),其可根據(jù)某些事件、局部 排程器和/或條件同步命令來改變狀態(tài)。 圖12系顯示圖ll之GPU上下文的不同狀態(tài)與根據(jù)內(nèi)部與外部事件改變狀態(tài) 的流程示意圖。特別的是,圖12包括上下文狀態(tài)的四個主要穩(wěn)定階段,包括〃 執(zhí)行狀 態(tài)〃 1232、 〃空缺狀態(tài)〃 1234、 〃就緒狀態(tài)〃 1236與〃 懸置狀態(tài)〃 1238。另外還有二 個中間狀態(tài),包括〃 待處理儲存狀態(tài)〃 1240與〃 待處理回復狀態(tài)〃 1242,其可用來表示上 下文狀態(tài)加載與儲存的程序。 〃 執(zhí)行狀態(tài)〃 1232表示一上下文目前正在GPU管線中執(zhí)行。 在一標頭指標到達尾端且串流中沒有多的命令可處理時,該狀態(tài)會改變。另一個原因為〃 懸置狀態(tài)〃 1238是依據(jù)設定懸置碼的事件而定。 〃 空缺狀態(tài)〃 1234表示該上下文不做任 何事,且當加載關聯(lián)于上下文緩存器區(qū)塊之一新的上下文時會被刪除。若CPU更新所有的 尾指標,該CPU會回到〃 就緒狀態(tài)〃 1236且可在任意時間重新啟動??杖鄙舷挛臅е伦?動切換該上下文且將該狀態(tài)儲存在內(nèi)存中,然后改變?yōu)閼抑脿顟B(tài)。 〃就緒狀態(tài)〃 1236表示該上下文根據(jù)優(yōu)先權(quán)或上下文切換程序的順序,可由 局部排程器在任何時間啟動之。若該上下文處于位于狀態(tài)緩存器中之警戒狀態(tài)1244, 則該上下文在重新開始前會進行檢查。若不滿足同步條件,則該上下文會回到〃 懸置狀 態(tài)〃 1238。"懸置狀態(tài)〃 1238表示該上下文等待滿足某些條件時會進入就緒或開始執(zhí)行。當內(nèi)部事件或外部訊息的結(jié)果滿足條件后會令該上下文進入〃 就緒狀態(tài)〃 1236。"待處理 儲存狀態(tài)〃 1240與〃 待處理回復狀態(tài)〃 1242為〃執(zhí)行狀態(tài)〃 1232與〃懸置狀態(tài)〃 1238 間的暫時中間狀態(tài)。當發(fā)生存取內(nèi)存映像緩存器時會發(fā)生上述狀態(tài),其可儲存在內(nèi)存和/ 或GPU中。 多GPU之多上下文同步操作 圖13顯示本發(fā)明實施例之在四GPU之多系統(tǒng)中之同步處理的示意圖,其中一個 GPU最多包括K個上下文,其類似于圖9。 K為任意數(shù),但在本實施例中,K至少為4 16間的 任意數(shù)。在二個執(zhí)行清單的實施例中,則為二倍的K。此外,該圍籬命令可寫入在一GPU(執(zhí) 行中的上下文)與一內(nèi)存(其它上下文)中之同步緩存器區(qū)塊中,且可執(zhí)行以減少寫后讀 取(Write AfterRead, WAR)/寫后寫入(Write After Write, WAW)危險的機會。
如圖13所示,多重上下文GPU A 1302包括一同步緩存器區(qū)塊、多個上下文狀態(tài) 區(qū)塊以及多個上下文指標。GPU A 1302可經(jīng)由一緩沖器取回來執(zhí)行關聯(lián)于一預設上下文 (例如,圖13所示之上下文1)之上下文直接內(nèi)存存取(Direct Memory Access,DMA)緩沖 器。此外,相關于同步緩存器的上下文可回存至區(qū)塊緩存器和/或儲存至上下文內(nèi)存空間 配置的4K位紅分頁。同樣的,其它GPU具有相同的功能。根據(jù)內(nèi)部和/或外部事件,GPU A 1302可自上下文0切換到上下文1。在本實施例中,上下文狀態(tài)相關數(shù)據(jù)系儲存在配置給 上下文狀態(tài)的內(nèi)存空間中。該同步緩存器區(qū)塊對執(zhí)行上下文來說是很重要的,且可儲存在 特定的內(nèi)存空間中,其系為上下文狀態(tài)數(shù)據(jù)空間的一部分。在儲存上下文O狀態(tài)與同步緩 存器數(shù)據(jù)后,新的上下文1狀態(tài)與同步緩存器數(shù)據(jù)可加載到GPU A中。在上載后,GPU A利 用自配置給該上下文之DMA緩沖器取得的命令開始執(zhí)行上下文1。 以與GPU A平行的方式執(zhí)行之GPU B執(zhí)行不同的上下文L+1,并且切換回執(zhí)行相同 程序的上下文L,同時GPU A儲存上下文L+1狀態(tài)與同步緩存器內(nèi)容。具有同步緩存器內(nèi)容 之上下文L狀態(tài)數(shù)據(jù)可回存至GPU B且可開始自上下文內(nèi)存空間中之關聯(lián)DMA緩沖器取得 上下文L命令。當在執(zhí)行目前上下文時, 一或多個GPU以下述狀況將圍籬數(shù)據(jù)寫入其它上 下文。 1)圍籬寫入(管理同步之常態(tài)內(nèi)部圍籬,如第2、3圖所示);
2)圍籬寫入至擁有的懸置上下文或另一GPU;
3)圍籬寫入至另一 GPU之執(zhí)行中上下文;
4)圍籬寫入至懸置中的上下文(儲存中);以及
5)圍籬寫入至啟動中的上下文(回復中)。 上述范圍包括特殊處理,其系由CPU硬件狀態(tài)機所提供,如圖15所示。圍籬寫入 監(jiān)控(如圖15所示)可用來提供在不同上下文與執(zhí)行清單間之多重GPU-多重上下文的環(huán) 境下進行同步。為了提供上述監(jiān)控功能,可在GPU之一或多個上下文中利用一特殊地址范 圍緩存器,以及內(nèi)存存取單元中的比較邏輯單元。若預期的圍籬寫入內(nèi)存中的同步緩存器 區(qū)塊,則該比較邏輯單元會導致改一特定上下文的狀態(tài)。 圖14顯示本發(fā)明實施例之利用GPU執(zhí)行多重上下文同步與在多重上下文間進行 同步的示意圖,其類似于圖13。特別的是,如圖14所示,GPU C 1406可圍籬寫入至懸置的 上下文,其系位于同步緩存器1414之4K字節(jié)的空間中。同樣的,GPU D 1408可將要回復 的上下文圍籬寫入至GPU C 1406中的同步緩存器區(qū)塊。為了支持上述實施例,GPU可安裝特殊的邏輯單元,其可用來持有屏障同步命令地址與數(shù)據(jù),直到上下文到達完成一儲存或 回存程序之一穩(wěn)定狀態(tài)。 —般來說,CPU可被程序化以控制上下文排程與在GPU中執(zhí)行。在實現(xiàn)GPU時可 利用有效應用工具,例如利用揭露于"Method and apparatus forcontext saving arid restoring in interruptible GPU" 、 〃 Context switching methodand apparatus in interruptible GPU running multiple applications"與〃 Gr即hicspipeline precise interrupt implementation method and apparatus"中的方法。 圖15顯示屏障命令處理中之步驟的流程示意圖。特別的是,GPU可偵測另一 GPU 和/或CPU至任一 GPU上下文之外部圍籬(步驟1502)。與GPU上下文緩存器區(qū)塊中之上 下文同步區(qū)塊地址1324相比較,在偵測GPU內(nèi)存空間與地址的外部寫入后,GPU可檢查相 符的上下文狀態(tài)(步驟1504)。若一程序正在執(zhí)行,GPU可直接寫入一選擇的緩存器至MXU 中(步驟1506),并且恢復偵測外部圍籬寫入至任意GPU上下文(步驟1502)。
在步驟1504中,若偵測到一待處理上下文回復/加載狀態(tài)而得知有一符合上下 文,則GPU會等待直到一相關上下文載入的終端(步驟1508)。在同步區(qū)塊加載的終端,GPU 直接寫入MXU中之選擇的同步緩存器(步驟1510)。 GPU接著開始執(zhí)行一加載上下文(步 驟1512) 。 GPU接著恢復偵測一外部圍籬寫入任意GPU上下文(步驟1502)。
在步驟1504中,若偵測到一待處理上下文儲存,GPU可等待直到一上下文儲存的 終端(步驟1514)。在同步區(qū)塊儲存的終端,GPU可寫入至內(nèi)存中之同步緩存器區(qū)塊位置 (步驟1516) 。 GPU邏輯單元可重新偵測任意GPU上下文之外部圍籬(步驟1502)。換句 話說,若GPU已準備就緒和/或在等待懸置中,GPU可寫入至內(nèi)存中之同步緩存器區(qū)塊位置 (步驟1516) 。 GPU邏輯單元可重新偵測任意GPU上下文之外部圍籬。 圖16顯示本發(fā)明實施例之結(jié)合至少一執(zhí)行清單之上下文區(qū)塊緩存器的示意圖, 其類似于圖10之執(zhí)行清單。特別的是,圖16包括一上下文狀態(tài)緩存器1602、一上下文切換 配置緩存器1604、一定時器模式緩存器1606以及一 自旋等待計數(shù)器緩存器1608,其亦包括 一上下文時間片段計數(shù)器緩存器1610、一 DMA緩沖器頭端指標1613、一 DMA緩沖器尾端指 標1614以及一上下文同步區(qū)塊地址1616。上下文同步區(qū)塊地址緩存器可設置在內(nèi)存存取 單元中。 如上文所述,上下文狀態(tài)緩存器1602包括執(zhí)行1618之狀態(tài)位屏蔽、空缺1620、就 緒1622、懸置1624以及待處理儲存1628,該類別中亦包括待處理回復1630。上下文優(yōu)先權(quán) 層級1611與懸置狀態(tài)碼1613亦包括在上下文狀態(tài)緩存器1602中。上下文切換配置緩存 器1604包括一事件屏蔽用以定義上下文管理為以下事件,自旋等待定時器終止1615、到達 管線區(qū)塊之等待代符1617、時間片段定時器終止1619以及當MXU電路偵測到一寫入至GPU 之上下文之同步區(qū)塊地址之監(jiān)控事件。其它事件亦可用來偵測上下文狀態(tài)管理邏輯單元。 定時器模式緩存器1606可控制上下文切換模式,其定義了一自旋等待代符和/或自旋等待 定時器以產(chǎn)生一切換事件。該緩存器亦可根據(jù)上下文切換模式而致能(Enable)和/或除 能(Disable) —時間片段。自旋等待監(jiān)看(Watchdog)定時器1608向下計數(shù),其當接收到 一等待命令時開始計數(shù),且當數(shù)據(jù)不符合同步緩存器區(qū)塊中的數(shù)據(jù)時開始自旋。當時間計 數(shù)終止時,自旋等待計數(shù)器緩存器1608執(zhí)行一上下文切換事件,若未計數(shù)終止則由上下文 切換配置緩存器1604執(zhí)行該上下文切換事件。當時間片段計數(shù)終止時,則上下文時間片段計數(shù)器緩存器1610切換上下文。亦可利用時間片段計數(shù)器以自目前執(zhí)行于GPU管線中之 上下文的可能作法回復。 此外,DMA緩沖器頭端指標1612可保持命令串流之上下文的目前取得地址,同時 DMA緩沖器尾端指標1614可傳遞在該命令串流終端的地址。該上下文同步區(qū)塊地址可進行 圍籬監(jiān)控。當在至少其中一配置中,若允許上下文的總數(shù)為16,則所有的上下文可分群為2 個執(zhí)行清單,每一執(zhí)行清單包括8個上下文,或者分為4個執(zhí)行清單,每一執(zhí)行清單包括2 個上下文。上述上下文亦可分為基數(shù)群。上下文同步區(qū)塊地址緩存器1616可提供用以監(jiān) 聽任意寫入至GPUGPU視訊內(nèi)存的地址,并且在偵測外部圍籬寫入至內(nèi)存映像同步緩存器 區(qū)塊時產(chǎn)生上下文狀態(tài)改變事件。 圖17顯示本發(fā)明實施例之多重上下文GPU之上下文管理的示意圖,其系有關定時 器與監(jiān)控事件。上下文狀態(tài)管理邏輯區(qū)塊1702可由專用硬件單元或可程序精簡指令集運 算(Relegate Important Stuff to the Compiler, RISC)核心來實現(xiàn),其可支持命令串流 處理器。上下文狀態(tài)管理區(qū)塊1702可管理目前正在執(zhí)行之上下文的狀態(tài),亦可管理其它映 射至一適當上下文緩存器集合的狀態(tài)。上下文狀態(tài)管理邏輯區(qū)塊1702接收來自自旋/等待 與時間片段監(jiān)看計數(shù)器1704的信號、一等待代符到達信號和/或來自時間片段計數(shù)器1706 的信號。上下文狀態(tài)管理邏輯區(qū)塊1702可與目前正在執(zhí)行之上下文緩存器通訊,上述緩存 器包括上下文狀態(tài)緩存器1708與上下文切換配置緩存器1709。當發(fā)生監(jiān)控或其它事件時, 若另一上下文接收到外部存取,則上下文狀態(tài)管理邏輯區(qū)塊1702選擇該上下文緩存器,其 藉由內(nèi)存存取單元中的比較邏輯單元來監(jiān)控。當外部代理者寫入至其中一GPU上下文之一 緩存器空間時,則另一類型的監(jiān)控事件是由總線接口單元(BIU)1710來產(chǎn)生。匪I0緩存器 地址譯碼邏輯單元1712產(chǎn)生一旗號,該旗號亦可轉(zhuǎn)換為上下文數(shù)目以與上下文狀態(tài)管理 邏輯區(qū)塊1702通訊。用于事件選擇之上下文狀態(tài)緩存器1708或目前上下文可根據(jù)上下文 切換配置緩存器1709的內(nèi)容來讀取與更新,其包括在特定上下文中之每一類型事件的動 作指令。 圖17中更包括一內(nèi)存存取單元1720,其包括一圍籬地址與數(shù)據(jù)緩沖器1722,用以 接收一監(jiān)控事件與控制數(shù)據(jù)并且寫入至內(nèi)存和/或一同步緩存器。為了支援非封鎖多圍籬 寫入,圍籬地址與數(shù)據(jù)緩沖器1722可被轉(zhuǎn)換為先進先出(First In First 0ut,F(xiàn)IFO)類型 的隊列。內(nèi)存存取單元1720亦包括相關于一或多個上下文之同步地址范圍1724。數(shù)據(jù)可 沿著內(nèi)存寫入地址發(fā)送至一編碼器,其可對接收的數(shù)據(jù)編碼并且將數(shù)據(jù)發(fā)送至上下文狀態(tài) 管理邏輯區(qū)塊1702。 圖18顯示本發(fā)明實施例之上下文狀態(tài)管理邏輯單元之狀態(tài)機的示意圖。如圖所 示,事件偵測循環(huán)(步驟1802)可繼續(xù)執(zhí)行循環(huán)直到偵測到一事件。若偵測到一監(jiān)控事件, 該上下文狀態(tài)管理邏輯單元檢查編碼后之上下文狀態(tài)(步驟1804)。若該上下文目前正在 執(zhí)行,該上下文狀態(tài)管理邏輯單元寫入閂鎖數(shù)據(jù)(Latched Data)至一同步緩存器(步驟 1806),且該上下文狀態(tài)管理邏輯單元可回到該事件偵測循環(huán)(步驟1802)。在步驟1804中, 若該上下文在〃 就緒〃 狀態(tài),則該上下文狀態(tài)管理邏輯單元可根據(jù)一定義緩存器設定一監(jiān) 控旗標與執(zhí)行操作(步驟1808),并且根據(jù)一定義緩存器執(zhí)行動作(步驟1810)。該程序接 著回到該事件偵測循環(huán)(步驟1802)。在步驟1804中,若該上下文狀態(tài)管理邏輯單元判斷編碼上下文在懸置狀態(tài),則可
22設定警示旗標與密碼(步驟1811),且設定該上下文為就緒狀態(tài)(步驟1812)。接著該程 序回到該事件偵測循環(huán)(步驟1802)。在步驟1804中,若該上下文狀態(tài)管理邏輯單元判斷 編碼上下文在空缺狀態(tài),則可設定該警示旗標與密碼(步驟1814),且產(chǎn)生CPU中斷(步驟 1816)。若該上下文在待處理儲存狀態(tài),該上下文狀態(tài)管理邏輯單元可排隊等候一地址與數(shù) 據(jù)(步驟1818),等待直到儲存(步驟1820),并且寫入排隊的數(shù)據(jù)至內(nèi)存(步驟1822)。若 該上下文在一待處理回復狀態(tài),該上下文狀態(tài)管理邏輯單元可排隊等候一地址與數(shù)據(jù)(步 驟1824),等待直到回覆(步驟1826),并且寫入排隊的數(shù)據(jù)至一同步緩存器(步驟1828)。 接著該程序回到該事件偵測循環(huán)(步驟1802)。 若在事件偵測循環(huán)中(步驟1802),一等待代符到達,偵測到一自旋等待和/或偵 測到一時間片段時,可終止執(zhí)行目前的上下文(步驟1830),并且將目前狀態(tài)設成〃 待處 理儲存〃 狀態(tài)(步驟1832)。接著,儲存該目前上下文(步驟1834)。若偵測到一時間片 段,該目前上下文可設為〃 就緒〃 狀態(tài)(步驟1836),且該上下文狀態(tài)管理邏輯單元可利用 一定義緩存器切換到新的上下文(步驟1838)。在儲存目前上下文后(步驟1834),若接 收到一自旋等待或等待代符,則將該上下文設為〃 懸置〃 狀態(tài)并且發(fā)布一〃 等待〃 碼(步 驟1840)。該上下文狀態(tài)管理邏輯單元接著利用一定義緩存器切換到新的上下文(步驟 1838)。接著該程序回到該事件偵測循環(huán)(步驟1802)。 本發(fā)明更提供一種記錄媒體(例如光盤片、磁盤片與抽取式硬盤等等),其記錄一
計算機可讀取之計算機程序,以便執(zhí)行上述之支持復數(shù)繪圖處理器之互動的方法。在此,儲
存于記錄媒體上之計算機程序,基本上是由多數(shù)個程序代碼片段所組成的(例如建立組織
圖程序代碼片段、簽核窗體程序代碼片段、設定程序代碼片段、以及部署程序代碼片段),并
且這些程序代碼片段的功能系對應到上述方法的步驟與上述系統(tǒng)的功能方塊圖。 雖然本發(fā)明已以較佳實施例揭露如上,然其并非用以限定本發(fā)明,任何熟習此技
藝者,在不脫離本發(fā)明之精神和范圍內(nèi),當可作各種之更動與潤飾,因此本發(fā)明之保護范圍
當視后附之申請專利范圍所界定者為準。
權(quán)利要求
一種繪圖處理單元同步系統(tǒng),包括至少一生產(chǎn)者繪圖處理單元,包括一第一組圍籬/等待緩存器,以及用以接收與至少一上下文相關的一圍籬命令;至少一消費者繪圖處理單元,包括一第二組圍籬/等待緩存器,以及用以當該圍籬命令未在該第一組圍籬/等待緩存器的范圍內(nèi)時,接收對應該圍籬命令的數(shù)據(jù);其中當該生產(chǎn)者繪圖處理單元的該圍籬命令符合該消費者繪圖處理單元的該第二組圍籬/等待緩存器的一等待命令,該消費者繪圖處理單元停滯執(zhí)行。
2. 如權(quán)利要求1所述的繪圖處理單元同步系統(tǒng),其中,該第一組圍籬/等待緩存器映像 至該生產(chǎn)者繪圖處理單元之一第一內(nèi)存空間,該第二組圍籬/等待緩存器映像至該消費者 繪圖處理單元之一第二內(nèi)存空間。
3. 如權(quán)利要求l所述的繪圖處理單元同步系統(tǒng),其中,當該圍籬命令符合該等待命令 時,該消費者繪圖處理單元發(fā)送對應該圍籬命令之數(shù)據(jù)給該生產(chǎn)者繪圖處理單元。
4. 如權(quán)利要求1所述的繪圖處理單元同步系統(tǒng),其中,該生產(chǎn)者繪圖處理單元可傳送 多個圍籬命令給多個消費者繪圖處理單元。
5. 如權(quán)利要求1所述的繪圖處理單元同步系統(tǒng),其中,該消費者繪圖處理單元可接收 來自多個生產(chǎn)者繪圖處理單元之多個圍籬命令。
6. 如權(quán)利要求1所述的繪圖處理單元同步系統(tǒng),其中,該圍籬命令包括一生產(chǎn)者區(qū)塊 識別碼,該等待命令包括一消費者識別碼。
7. 如權(quán)利要求1所述的繪圖處理單元同步系統(tǒng),其中,該生產(chǎn)者繪圖處理單元包含復 數(shù)個繪圖處理單元與該消費者繪圖處理單元中至少一個形成一連結(jié)架構(gòu)。
8. —種繪圖處理單元同步方法,包括下列步驟根據(jù)在一第一繪圖處理單元的一上下文接收一圍籬命令,其中該繪圖處理單元包括一 第一組圍籬/等待緩存器,該圍籬命令包括一地址;當該地址不在該第一組圍籬/等待緩存器的范圍內(nèi)時,將該圍籬命令寫入一第二繪圖 處理單元;將對應該圍籬命令的數(shù)據(jù)發(fā)送給該第二繪圖處理單元;以及 接收該第二繪圖處理單元的一等待命令以封鎖該第二繪圖處理單元的管線。
9. 如權(quán)利要求8所述的繪圖處理單元同步方法,更包括將該圍籬命令與該第二繪圖處 理單元之一第二組圍籬/等待緩存器進行比對。
10. 如權(quán)利要求9所述的繪圖處理單元同步方法,其中該第一組圍籬/等待緩存器映像至該第一繪圖處理單元之一第一內(nèi)存空間,該第二組 圍籬/等待緩存器映像至該第二繪圖處理單元之一第二內(nèi)存空間。
11. 如權(quán)利要求8所述的繪圖處理單元同步方法,其更包括傳送數(shù)據(jù)至該第一繪圖處 理單元。
12. 如權(quán)利要求8所述的繪圖處理單元同步方法,其更包括當該上下文被停滯超過一 預定時間時,將該第一繪圖處理單元與該第二繪圖處理單元切換至另一上下文。
13. 如權(quán)利要求8所述的繪圖處理單元同步方法,其中,該第一繪圖處理單元為一生產(chǎn) 者繪圖處理單元,而該第二消費者繪圖處理單元為一消費者繪圖處理單元。
14. 一種管理繪圖處理單元上下文的外部圍籬寫入的方法,包括下列步驟一第一繪圖處理單元偵測一第二繪圖處理單元的一外部圍籬,其中該外部圍籬與一上 下文相關;將與該外部圍籬相關的一地址與該第一繪圖處理單元的一上下文同步區(qū)塊地址進行 比對;以及當判斷該上下文目前正在執(zhí)行時,寫入與該上下文相關的信息至一內(nèi)存接口單元中一 選定的同步緩存器。
15. 如權(quán)利要求14所述的方法,更包括下列步驟 當判斷該上下文目前與一懸置上下文回復及加載狀態(tài)相關 等待直到完成一上下文載入動作的執(zhí)行;將與該上下文相關的信息寫入至該內(nèi)存接口單元中一選定的同步緩存器;以及 執(zhí)行該上下文。
16. 如權(quán)利要求14所述的方法,更包括下列步驟 當判斷該上下文目前與一懸置上下文儲存狀態(tài)有關時 等待直到完成一上下文儲存動作的執(zhí)行;以及 將與該上下文相關的信息寫入至一內(nèi)存中之一同步緩存器。
17. 如權(quán)利要求14所述的方法,更包括下列步驟當判斷該上下文目前與一就緒懸置狀態(tài)有關時,將與該上下文相關的信息寫入至一內(nèi) 存中之一同步緩存器。
全文摘要
一種繪圖處理單元同步系統(tǒng),其包括至少一生產(chǎn)者繪圖處理單元,包括一第一組圍籬/等待緩存器(Fence/Wait Register),以及用以接收與至少一上下文相關的圍籬命令;至少一消費者繪圖處理單元,包括一第二組圍籬/等待緩存器,當該圍籬命令未在該第一組圍籬/等待緩存器的范圍內(nèi)時,接收對應該圍籬命令的數(shù)據(jù);其中當該生產(chǎn)者繪圖處理單元的該圍籬命令符合該消費者繪圖處理單元的該第二組圍籬/等待緩存器的一等待命令,該消費者繪圖處理單元停滯執(zhí)行。
文檔編號G06T1/20GK101702231SQ20091022138
公開日2010年5月5日 申請日期2009年11月6日 優(yōu)先權(quán)日2008年11月6日
發(fā)明者提莫·佩塔西, 柏瑞斯·柏克潘克, 約翰·柏拉勒斯 申請人:威盛電子股份有限公司