用于著色器核心中著色器資源分配的策略的制作方法
【專利摘要】本發(fā)明提供了一種在加速處理設(shè)備內(nèi)確定優(yōu)先級的方法。所述加速處理設(shè)備包括根據(jù)預(yù)定標(biāo)準(zhǔn)處理的計算管線隊列?;趦?yōu)先級特征來選擇所述隊列,并且對選定隊列進(jìn)行處理,直至?xí)r間量子流逝或者具有更高優(yōu)先級的隊列變得可供用于處理。
【專利說明】用于著色器核心中著色器資源分配的策略
[0001]背景發(fā)明領(lǐng)域
[0002]本發(fā)明總體涉及計算系統(tǒng)。更具體地,本發(fā)明涉及用于在多個管線(pipeline)輸入間分配圖形處理單元資源的仲裁策略。
【背景技術(shù)】
[0003]最近,由于GPU的每單位功率和/或成本的典型性能,因此對將圖形處理單元(GPU)用于一般計算的期望已經(jīng)變得更加明顯。一般來說,GPU的計算能力已以超過對應(yīng)中央處理單元(CPU)平臺的計算能力的速度增長。結(jié)合移動計算市場和其必需支持服務(wù)器/企業(yè)系統(tǒng)的開發(fā),已經(jīng)利用這種增長來提供指定的期望用戶體驗質(zhì)量。因此,組合使用CPU和GPU來執(zhí)行帶有數(shù)據(jù)并行內(nèi)容的工作負(fù)載正在變成一種廣泛應(yīng)用的技術(shù)。
[0004]然而,傳統(tǒng)上,GPU是在受約束的編程環(huán)境中操作,僅可用于圖形加速。這些約束起因于GPU不具有與CPU —樣豐富的編程生態(tài)系統(tǒng)這一事實。因此,它們的用途一直大多局限于二維(2D)和三維(3D)圖形以及已習(xí)慣于處理圖形和視頻應(yīng)用編程接口(API)的少量前沿多媒體應(yīng)用。
[0005]隨著多供應(yīng)商支持的OpenCL?和DirectCompute?、標(biāo)準(zhǔn)API和支持工具出
現(xiàn),GPU的應(yīng)用已經(jīng)不再局限于諸如傳統(tǒng)圖形等傳統(tǒng)應(yīng)用。雖然OpenCL和DirectCompute是有前景的起點,但形成創(chuàng)造一種允許對于大多數(shù)編程任務(wù)CPU和GPU的組合使用起來與CP U —樣流暢的環(huán)境和生態(tài)系統(tǒng)仍存在許多障礙。
[0006]現(xiàn)有計算系統(tǒng)通常包括多個處理設(shè)備。例如,一些計算系統(tǒng)包括位于單獨芯片上(例如,CPU可以位于主板上并且GPU可以位于圖形卡上)或者在單個芯片封裝中的CPU和GPU兩種情況。然而,這兩種布置仍包括與以下項相關(guān)的重大挑戰(zhàn):(i)單獨的存儲器系統(tǒng)、
(ii)有效調(diào)度、(iii)提供進(jìn)程間服務(wù)質(zhì)量(QoS)保證、(iv)編程模型以及(V)編譯成多種目標(biāo)指令集體系結(jié)構(gòu)(ISA)——在所有這些的同時還要使功耗最小化。
[0007]例如,分立芯片布置迫使系統(tǒng)以及軟件體系結(jié)構(gòu)針對每個處理器利用芯片到芯片接口對存儲器進(jìn)行存取。這些外部接口(例如,芯片到芯片)對用于協(xié)同操作異構(gòu)處理器的存儲器等待時間和功耗造成不利影響,同時,單獨的存儲器系統(tǒng)(即,單獨地址空間)和驅(qū)動器管理共享存儲器會產(chǎn)生變得對精細(xì)粒度卸載而言不可接受的開銷。
[0008]分立芯片布置和單芯片布置兩者均可以限制可發(fā)送給GPU以供執(zhí)行的命令的類型。例如,計算命令(例如,物理或人工智能命令)通常無法發(fā)送給GPU以供執(zhí)行。這種限制存在的原因是因為CPU可能相對較快地要求這些計算命令所執(zhí)行的操作的結(jié)果。然而,由于將工作分派給當(dāng)前系統(tǒng)中的GPU的高開銷以及這些命令可能不得不排隊等待有待被首先執(zhí)行的其它先前發(fā)布的命令這一事實,因此將計算命令發(fā)送至GPU所引致的等待時間經(jīng)常是不可接受的。
[0009]考慮到傳統(tǒng)GPU可能未能高效執(zhí)行一些計算命令,命令必須隨后在CPU內(nèi)執(zhí)行。必須在CPU上執(zhí)行命令使得CPU上的處理負(fù)擔(dān)增加,并且可能妨礙總體系統(tǒng)性能。
[0010]雖然GPU為計算卸載提供絕佳機(jī)會,但是傳統(tǒng)GPU可能并不適于一些多處理器環(huán)境中高效操作所期望的系統(tǒng)軟件驅(qū)動的進(jìn)程管理。這些限制可能產(chǎn)生若干問題。
[0011]例如,由于無法有效識別和/搶占進(jìn)程,因此流氓進(jìn)程可能持續(xù)任意量的時間占據(jù)GPU硬件。在其它情況下,上下文切斷硬件的能力嚴(yán)重受到約束一在非常粗的粒度下并且僅在程序執(zhí)行中非常有限的一組點處發(fā)生。這種約束存在的原因是因為保存必需的體系結(jié)構(gòu)狀態(tài)和微體系結(jié)構(gòu)狀態(tài)以恢復(fù)并且繼續(xù)進(jìn)程不受支持。缺少對精確異常的支持使得無法上下文切斷錯誤作業(yè)并且在稍后點處恢復(fù),從而導(dǎo)致更低的硬件使用率,因為錯誤線程占據(jù)硬件資源并且在錯誤處理期間閑置。
[0012]在計算機(jī)系統(tǒng)內(nèi),仲裁發(fā)生在兩個不同級別上。一個級別涉及在GPU計算管線前端處正在驅(qū)動的是什么作業(yè)。另一級別涉及共享資源的利用率。由于存在同時執(zhí)行的多個任務(wù),因此必須對這些任務(wù)進(jìn)行優(yōu)先級排序。因此,要求決策以確定將如何利用共享資源。例如,將如何在任務(wù)到達(dá)分派管線的開始處并且行進(jìn)至著色器核心時對它們進(jìn)行優(yōu)先級排序。
[0013]概述
[0014]因此,需要解決仲裁策略的改進(jìn)仲裁方法和系統(tǒng),其中系統(tǒng)具有多個計算管線。
[0015]雖然GPU、加速處理單元(APU)以及通用圖形處理單元(GPGPU)是本領(lǐng)域中的常用術(shù)語,但是術(shù)語“加速處理設(shè)備(APD) ”被認(rèn)為是一種更廣泛的表述。例如,Aro是指相對于諸如常規(guī)CPU、常規(guī)GPU和/或它們的組合等資源以加速的方式執(zhí)行與加速圖形處理任務(wù)、數(shù)據(jù)并行任務(wù)或嵌套數(shù)據(jù)并行任務(wù)相關(guān)聯(lián)的那些功能和計算的任何協(xié)同操作的硬件和/或軟件集合。
[0016]本發(fā)明的一個實施方案提供一種在包括計算管線的APD內(nèi)確定優(yōu)先級的方法。所述方法包括根據(jù)預(yù)定標(biāo)準(zhǔn)從所述計算管線中的每個內(nèi)的計算管線處理隊列中選擇第一隊列和第二隊列,并且根據(jù)優(yōu)先級標(biāo)準(zhǔn)選擇所述第一隊列和所述第二隊列中的一個以進(jìn)行處理。處理所述選定隊列,直至?xí)r間量子流逝或者具有更高優(yōu)先級的隊列變得可用。
[0017]本發(fā)明的進(jìn)一步特征和優(yōu)點以及本發(fā)明的各實施方案的結(jié)構(gòu)和操作在下文中參照附圖詳細(xì)描述。應(yīng)當(dāng)注意,本發(fā)明不限于本文所描述的這些特定實施方案。本文呈現(xiàn)此類實施方案僅用于說明目的?;诒疚乃慕虒?dǎo)內(nèi)容,另外的實施方案對于相關(guān)領(lǐng)域的技術(shù)人員而言將是顯而易見的。
[0018]附圖簡述
[0019]附圖并入本文并且構(gòu)成本說明書的一部分,圖解了本發(fā)明并且與說明書一起進(jìn)一步用來解釋本發(fā)明的原理并使相關(guān)領(lǐng)域的技術(shù)人員能夠?qū)嵺`和使用本發(fā)明。本發(fā)明的各實施方案參照附圖在下文中進(jìn)行描述,其中在全文中,類似參考標(biāo)號用于指代類似元素。
[0020]圖1A是根據(jù)本發(fā)明的實施方案的一種處理系統(tǒng)的說明性框圖;
[0021 ] 圖1B是圖1A所示APD的說明性框圖圖示;
[0022]圖2是圖1B的APD的更詳細(xì)的框圖圖示;
[0023]圖3是圖2所示計算管線的更詳細(xì)的框圖圖示;
[0024]圖4是根據(jù)本發(fā)明的實施方案的硬件描述符隊列的圖示;
[0025]圖5是實踐本發(fā)明的實施方案的示例性方法的流程圖;[0026]圖6是根據(jù)本發(fā)明的實施方案的示例性方法的圖示;并且
[0027]圖7是根據(jù)本發(fā)明的實施方案的示例性方法的其它方面的圖示。
[0028]詳述
[0029]在以下詳細(xì)描述中,提及“一個實施方案”、“實施方案”、“示例實施方案”等等表明所描述的實施方案可包括某一特定特征、結(jié)構(gòu)或特性,但是每個實施方案可能不一定包括該特定特征、結(jié)構(gòu)或特性。此外,此類措詞不一定是指同一實施方案。此外,當(dāng)結(jié)合一個實施方案來描述某一特定特征、結(jié)構(gòu)或特性時,應(yīng)當(dāng)認(rèn)為,無論是否明確描述,使得此類特征、結(jié)構(gòu)或者特性結(jié)合其它實施方案起作用是在本領(lǐng)域的技術(shù)人員知識范圍內(nèi)的。
[0030]術(shù)語“本發(fā)明的實施方案”并不要求本發(fā)明的所有實施方案都包括所論述的特征、優(yōu)點或操作模式。在不背離本發(fā)明的范圍的情況下可設(shè)想出替代實施方案,并且本發(fā)明的眾所周知的元素可能并未詳細(xì)描述或者可能被省略,以免混淆本發(fā)明的相關(guān)細(xì)節(jié)。另外,本文所使用的術(shù)語僅用于描述特定實施方案的目的,而并不意在限制本發(fā)明。例如,如在本文所使用的,單數(shù)形式“一個”和“所述”意在還包括復(fù)數(shù)形式,除非上下文另外清楚表明。還應(yīng)理解,當(dāng)在本文中使用時,術(shù)語“包括(comprises) ”、“包括(comprising) ”、“包括(includes) ”和/或“包括(including) ”指明存在所述特征、整數(shù)、步驟、操作、元件和/或部件,但并不排除存在或者增添一個或多個其它特征、整數(shù)、步驟、操作、元件、部件和/或它們的組合。
[0031]圖1A是包括CPU102和APD104的統(tǒng)一計算系統(tǒng)100的示例性圖示。CPU102可以包括一個或多個單核或多核CPU。在本發(fā)明的一個實施方案中,系統(tǒng)100形成在單個硅裸片或硅封裝上,從而組合CPU102與APD104以提供統(tǒng)一的編程和執(zhí)行環(huán)境。這種環(huán)境使得APD104能夠與CPU102 —樣流暢地用于一些編程任務(wù)。然而,本發(fā)明不絕對要求CPU102和APD104形成在單個硅裸片上。在一些實施方案中,它們可能單獨形成并且安裝在相同或不同的基片上。
[0032]在一個實施例中,系統(tǒng)100還包括存儲器106、操作系統(tǒng)(OS) 108以及通信基礎(chǔ)設(shè)施109。0S108和通信基礎(chǔ)設(shè)施109在下文中更詳細(xì)地論述。
[0033]系統(tǒng)100還包括了內(nèi)核模式驅(qū)動器(KMD) 110、軟件調(diào)度器(SWS) 112,以及存儲器管理單元116,如輸入/輸出存儲器管理單元(IOMMU)。系統(tǒng)100的部件可以實現(xiàn)為硬件、固件、軟件或它們的任何組合。本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)了解,系統(tǒng)100可以包括除了圖1A所示實施方案中所示部件之外或不同于所示部件的一個或多個軟件、硬件以及固件部件。
[0034]在一個實施例中,驅(qū)動器(如KMD110)通常通過硬件連接到其上的計算機(jī)總線或通信子系統(tǒng)與設(shè)備進(jìn)行通信。當(dāng)調(diào)用程序調(diào)用驅(qū)動器中例程時,驅(qū)動器向設(shè)備發(fā)布命令。一旦設(shè)備向驅(qū)動器發(fā)送回數(shù)據(jù),驅(qū)動器可調(diào)用原始調(diào)用程序中的例程。在一個實施例中,驅(qū)動器是依賴于硬件的并且是操作系統(tǒng)特定的。它們通常提供任何必需異步的時間依賴硬件接口所要求的中斷處理。設(shè)備驅(qū)動器、尤其在現(xiàn)代Windows平臺上可以內(nèi)核模式(第O級)或以用戶模式(第3級)運行。
[0035]以用戶模式運行驅(qū)動器的一個益處是穩(wěn)定性提高,因為編寫拙劣的用戶模式設(shè)備驅(qū)動器不可能通過重寫內(nèi)核存儲器使系統(tǒng)崩潰。另一方面,用戶/內(nèi)核模式翻譯通常強(qiáng)加相當(dāng)大的性能開銷,從而抑制用戶模式驅(qū)動器的低等待時間和高吞吐量要求。用戶模塊僅可通過使用系統(tǒng)調(diào)用來訪問內(nèi)核空間。像UNIX shell或其它基于圖形用戶接口(⑶I)的應(yīng)用等終端用戶程序是用戶空間的一部分。這些應(yīng)用通過內(nèi)核支持的功能與硬件交互。
[0036]CPU102可以包括(未示出)控制處理器、現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)或數(shù)字信號處理器(DSP)中的一個或多個。CPU102例如執(zhí)行控制計算系統(tǒng)100的操作的控制邏輯,包括0S108、KMD110、SWS112以及應(yīng)用111。在此說明性實施方案中,根據(jù)一個實施方案,CPU102發(fā)起并且控制應(yīng)用111的執(zhí)行,例如,通過在CPU102和諸如APD104等其它處理資源上分發(fā)與這個應(yīng)用相關(guān)聯(lián)的處理。
[0037]除了其它之外,APD104執(zhí)行用于選定功能(如圖形操作和可能(例如)尤其適于并行處理的其它操作)的命令和程序。通常,APD104常??梢杂糜趫?zhí)行圖形管線操作,如像素操作、幾何計算以及為顯示器渲染圖像。在本發(fā)明的各種實施方案中,APD104還可基于從CPU102接收到的命令或指令來執(zhí)行計算處理操作。
[0038]例如,命令可以被認(rèn)為是沒有定義在ISA中的特殊指令,并且通常由來自給定ISA或獨特硬件的一組指令完成。命令可以由特殊處理器(如分派處理器、CP或網(wǎng)絡(luò)控制器)來執(zhí)行。另一方面,指令可以被認(rèn)為是例如在計算機(jī)體系結(jié)構(gòu)內(nèi)的處理器的單個操作。在一個實施例中,當(dāng)使用兩組ISA時,一些指令被用于執(zhí)行X86程序,并且一些指令被用于執(zhí)行APU/APD計算單元上的內(nèi)核。
[0039]在一個說明性實施方案中,CPU102向APD104發(fā)送選定命令。這些選定命令可以包括圖形命令和適于并行執(zhí)行的其它命令。這些選定命令(還可包括計算處理命令)可以基本獨立于CPU102執(zhí)行。
[0040]APD104可以包括其自己的計算單元(未示出),諸如但不限于一個或多個單指令多數(shù)據(jù)(SMD)處理核心。如本文中提及,SMD是數(shù)學(xué)管線或編程模型,其中內(nèi)核在多個處理元件上并發(fā)執(zhí)行,每個處理元件具有其自己的數(shù)據(jù)和共享程序計數(shù)器。所有處理元件執(zhí)行完全相同的指令集。使用預(yù)測使工作項能夠參與或不參與每個所發(fā)布的命令。
[0041 ] 在一個實施例中,每個APD104計算單元可以包括一個或多個標(biāo)量和/或矢量浮點單元和/或算術(shù)邏輯單元(ALU)。APD計算單元還可以包括專用處理單元(未示出),如平方根倒數(shù)單元和正弦/余弦單元。在一個實施例中,Aro計算單元在本文中統(tǒng)稱著色器核心 122。
[0042]通常,具有一個或多個SMD使得APD104理想適于執(zhí)行數(shù)據(jù)并行任務(wù),如在圖形處理中常見的任務(wù)。
[0043]諸如像素處理等一些圖形管線操作以及其它并行計算操作可能要求對輸入數(shù)據(jù)元素流或集合執(zhí)行同一命令流或計算內(nèi)核。同一計算內(nèi)核的相應(yīng)實例化可以在著色器核心122中的多個計算單元上并發(fā)執(zhí)行,以便并行處理這些數(shù)據(jù)元素。如本文中提及,例如,計算內(nèi)核是包含程序中聲明并且在APU/AH)計算單元上執(zhí)行的指令的函數(shù)。這個函數(shù)也被稱為內(nèi)核、著色器、著色器程序或程序。
[0044]在一個說明性實施方案中,每個計算單元(例如,SIMD處理核心)可以執(zhí)行特定工作項的相應(yīng)實例化以便處理輸入數(shù)據(jù)。工作項是由命令在設(shè)備上調(diào)用的并行內(nèi)核執(zhí)行集合中的一個。工作項可以作為在計算單元上執(zhí)行的工作組的一部分由一個或多個處理元件執(zhí)行。工作項也可以稱為線程、通道(lane)或?qū)嵗?br>
[0045]工作項在全局ID和本地ID方面與集合內(nèi)的其它執(zhí)行不同。在一個實施例中,工作組中同時一起在單個SMD引擎上執(zhí)行的工作項子集可被稱為波前136。波前寬度是硬件SIMD引擎的特性如本文中提及,工作組是在單個計算單元上執(zhí)行的相關(guān)工作項的集合。組中的工作項執(zhí)行同一內(nèi)核并且共享本地存儲器和工作組隔離。工作組還可以稱為線程組或線程塊。
[0046]來自工作組的所有波前在相同SMD引擎上進(jìn)行處理。波前中的指令一次發(fā)布一個,并且當(dāng)所有工作項都遵循相同控制流程時,每個工作項均執(zhí)行同一程序。執(zhí)行掩碼和工作項預(yù)測用于在波前內(nèi)實現(xiàn)發(fā)散控制流程,其中每個單獨工作項實際可以占有通過核心的唯一代碼路徑。當(dāng)工作項的全集在波前開始時間時不可用時,可以處理部分已填充的波前。波前也可稱為線程束(warp)、矢量或線程。
[0047]對于波前,命令可能一次發(fā)布一個。當(dāng)所有工作項都遵循同一控制流程時,每個工作項均可執(zhí)行同一程序。在一個實施例中,使用執(zhí)行掩碼和工作項預(yù)測來實現(xiàn)發(fā)散控制流程,其中每個單獨工作項可以實際占有通過內(nèi)核驅(qū)動器的唯一代碼路徑。當(dāng)工作項的全集在開始時間時不可用時,可以處理部分波前。例如,著色器核心122可以同時執(zhí)行預(yù)定數(shù)量的波前136,每個波前136包括預(yù)定數(shù)量的工作項。
[0048]在系統(tǒng)100內(nèi),APD104包括其自己的存儲器,如圖形存儲器130。圖形存儲器130提供用于在APD104中的計算過程中使用的本地存儲器。著色器核心122內(nèi)的單獨計算單元(未示出)可以具有它們自己的本地數(shù)據(jù)存儲器(未示出)。在一個實施方案中,APD104包括對本地圖形存儲器130的存取以及對存儲器106的存取。在另一實施方案中,APD104可以包括對動態(tài)隨機(jī)存取存儲器(DRAM)或直接附接到APD104上并且與存儲器106分開的其它此類存儲器(未示出)的存取。
[0049]所示實施例中,APD104還包括一個或(η)個命令處理器(CP) 124。CP124控制APD104內(nèi)的處理。CP124還從存儲器106中的命令緩沖器125檢索有待執(zhí)行的命令并且協(xié)調(diào)這些命令在APD104上的執(zhí)行。
[0050]在一個實施例中,CPU102將基于應(yīng)用111的命令輸入到合適命令緩沖器125中。如本文中提及,應(yīng)用是將在CPU和APD內(nèi)的計算單元上執(zhí)行的程序部分的組合。
[0051]對于被調(diào)度用于在APD104上執(zhí)行的每個進(jìn)程,可以維護(hù)多個命令緩沖器125。
[0052]CP124可以在硬件、固件、軟件或它們的組合中實現(xiàn)。在一個實施方案中,CP124被實現(xiàn)為具有微代碼的精簡指令集計算機(jī)(RISC)引擎以實現(xiàn)包括調(diào)度邏輯的邏輯。
[0053]APD104還包括一個或(η)個分派控制器(DC) 126。在本申請中,術(shù)語分派是指由DC執(zhí)行的命令,所述分派控制器使用上下文狀態(tài)來發(fā)起用于一組計算單元上的一組工作組的內(nèi)核的執(zhí)行的開始。DC126包括用于發(fā)起著色器核心122中的工作組的邏輯。在一些實施方案中,DC126可以實現(xiàn)為CP124的一部分。
[0054]系統(tǒng)100還包括用于從運行列表150選擇進(jìn)程以供在APD104上執(zhí)行的硬件調(diào)度器(HWS) 128。HWS128可以使用循環(huán)方法、優(yōu)先級或基于其它調(diào)度策略從運行列表150選擇進(jìn)程。例如,優(yōu)先級可以動態(tài)地確定。HWS128還可以包括管理運行列表150的功能性,例如,通過添加新的進(jìn)程并且通過從運行列表150刪除現(xiàn)有進(jìn)程。HWS128的運行列表管理邏輯有時稱為運行列表控制器(RLC)。
[0055]在本發(fā)明的各實施方案中,當(dāng)HWS128發(fā)起對來自RLC150的進(jìn)程的執(zhí)行時,CP124開始檢索并且執(zhí)行來自對應(yīng)命令緩沖器125的命令。在一些情況下,CP124可以生成有待在APD104內(nèi)執(zhí)行的一個或多個命令,所述命令與從CPU102接收到的命令對應(yīng)。在一個實施方案中,CP124與其它部件一起以提高或最大化APD104和/或系統(tǒng)100資源的利用率的方式來實現(xiàn)APD104上的命令的優(yōu)先級排序和調(diào)度。
[0056]APD104可以訪問或者可以包括中斷發(fā)生器146。中斷發(fā)生器146可以由APD104配置成當(dāng)APD104遇到諸如頁面錯誤之類的中斷事件時中斷0S108。例如,APD104可以依賴于10MMU116內(nèi)的中斷發(fā)生邏輯來形成上述頁面錯誤中斷。
[0057]APD104還可以包括搶占和上下文切換邏輯120,以便搶占當(dāng)前正在著色器核心122內(nèi)運行的進(jìn)程。例如,上下文切換邏輯120包括停止進(jìn)程并保存其當(dāng)前狀態(tài)(例如,著色器核心122狀態(tài)和CP124狀態(tài))的功能性。
[0058]如本文中提及,術(shù)語狀態(tài)可以包括初始狀態(tài)、中間狀態(tài)以及最終狀態(tài)。初始狀態(tài)是機(jī)器根據(jù)程序處理輸入數(shù)據(jù)集合以形成輸出數(shù)據(jù)集合的起始點。存在一種中間狀態(tài),例如,需要在若干點處對這種中間狀態(tài)進(jìn)行存儲以使得處理向前進(jìn)展。有時存儲這種中間狀態(tài)是為了允許當(dāng)被某一其它進(jìn)程中斷時在稍后時間繼續(xù)執(zhí)行。還存在一種最終狀態(tài),可以記錄這種最終狀態(tài)作為輸出數(shù)據(jù)集合的一部分。
[0059]搶占和上下文切換邏輯120還可以包括將另一進(jìn)程上下文切換到APD104中的邏輯。將另一進(jìn)程上下文切換成在APD104上運行的功能性可以包括例如通過CP124和DC126將進(jìn)程實例化以在APD104上運行,恢復(fù)用于此進(jìn)程的任何先前所保存的狀態(tài),并且開始它的執(zhí)行。
[0060]存儲器106可以包括非永久性存儲器,如DRAM (未不出)。存儲器106可以在應(yīng)用或其它處理邏輯的部分的執(zhí)行過程中存儲(例如)處理邏輯指令、常量值以及變量值。例如,在一個實施方案中,用于在CPU102上執(zhí)行一個或多個操作的控制邏輯的部分在所述操作的各自部分由CPU102執(zhí)行的過程中可以駐存在存儲器106內(nèi)。如在本文所使用,術(shù)語“處理邏輯”或“邏輯”是指控制流程命令、用于執(zhí)行計算的命令以及用于對資源進(jìn)行相關(guān)訪問的命令。
[0061]在執(zhí)行過程中,相應(yīng)應(yīng)用、OS功能、處理邏輯命令以及系統(tǒng)軟件可以駐存在存儲器106中。對0S108重要的控制邏輯命令在執(zhí)行過程中通常將會駐存在存儲器106中。在系統(tǒng)100執(zhí)行過程中,包括例如內(nèi)核模式驅(qū)動器110和軟件調(diào)度器112的其它軟件命令也可以駐存在存儲器106中。
[0062]在此實施例中,存儲器106包括被CPU102用來向APD104發(fā)送命令的命令緩沖器125。存儲器106還包含進(jìn)程列表和處理信息(例如,活動列表152和進(jìn)程控制塊154)。這些列表以及信息由在CPU102上執(zhí)行的調(diào)度軟件用來向APD104和/或相關(guān)調(diào)度硬件傳遞調(diào)度信息。對存儲器106的存取可以由耦接到存儲器106上的存儲器控制器140管理。例如,來自CPU102或來自其它設(shè)備的對從存儲器106讀出或?qū)懭氪鎯ζ?06的請求由存儲器控制器140管理。
[0063]返回系統(tǒng)100的其它方面,IOMMUl 16是多上下文存儲器管理單元。
[0064]如本文中所用,上下文(有時稱為進(jìn)程)可被認(rèn)為是內(nèi)核在其中執(zhí)行的環(huán)境以及其中限定同步和存儲器管理的域。上下文包括一組設(shè)備、這些設(shè)備可存取的存儲器、對應(yīng)存儲器性質(zhì)以及用于調(diào)度內(nèi)核或操作在存儲器對象上的執(zhí)行的一個或多個命令隊列。另一方面,可以認(rèn)為進(jìn)程是程序的執(zhí)行,因為應(yīng)用將創(chuàng)建在計算機(jī)上運行的進(jìn)程。OS可以形成數(shù)據(jù)記錄和虛擬存儲器地址空間以供程序執(zhí)行。程序執(zhí)行所用存儲器和當(dāng)前狀態(tài)可被稱作進(jìn)程。OS會調(diào)度任務(wù)以用于使進(jìn)程在存儲器上從初始狀態(tài)操作到最終狀態(tài)。
[0065]返回參考圖1A所示的實施例,IOMMUl 16包括用于執(zhí)行虛擬地址到物理地址翻譯以用于包括APD104的設(shè)備對存儲器頁面的存取的邏輯。10MMU116還可以包括用于例如當(dāng)設(shè)備(如APD104)所進(jìn)行的頁面存取導(dǎo)致頁面錯誤時生成中斷的邏輯。10MMU116還可以包括或者有權(quán)存取翻譯后備緩沖器(TLB)118。例如,TLB118可以實現(xiàn)在內(nèi)容可尋址存儲器(CAM)中以針對APD104對存儲器106中的數(shù)據(jù)所作出的請求來加速邏輯(即,虛擬)存儲器地址到物理存儲器地址的翻譯。
[0066]在所示實施例中,通信基礎(chǔ)設(shè)施109根據(jù)需要互連系統(tǒng)100的部件。通信基礎(chǔ)設(shè)施109可以包括(未示出)外圍部件互連(PCI)總線、擴(kuò)展PCI (PC1-E)總線、高級微控制器總線體系結(jié)構(gòu)(AMBA)總線、加速圖形端口(AGP)或此類通信基礎(chǔ)設(shè)施中的一種或多種。通信基礎(chǔ)設(shè)施109還可以包括以太網(wǎng)或類似網(wǎng)絡(luò),或滿足應(yīng)用的數(shù)據(jù)傳輸速率要求的任何合適物理通信基礎(chǔ)設(shè)施。通信基礎(chǔ)設(shè)施109包括互連包括計算系統(tǒng)100的部件等各部件的功能性。
[0067]在此實施例中,0S108包括用于管理系統(tǒng)100的硬件部件并且提供常見服務(wù)的功能性。在各實施方案中,0S108可以在CPU102上執(zhí)行并且提供常見服務(wù)。這些常見服務(wù)可以包括例如用于在CPU102內(nèi)執(zhí)行的調(diào)度應(yīng)用、故障管理、中斷服務(wù)以及處理其它應(yīng)用的輸入和輸出。
[0068]在一些實施方案中,基于中斷控制器(如中斷控制器148)所生成的中斷,0S108調(diào)用適當(dāng)?shù)闹袛嗵幚砝?。例如,一旦檢測到頁面錯誤中斷,0S108就可以調(diào)用中斷處理器來發(fā)起將相關(guān)頁面加載到存儲器106中并且更新對應(yīng)頁表。
[0069]0S108還可包括通過確保對硬件部件的訪問通過OS管理的內(nèi)核功能性作為中介從而保護(hù)系統(tǒng)100的功能性。實際上,0S108確保應(yīng)用(如應(yīng)用111)在用戶空間中在CPU102上運行。0S108還確保應(yīng)用111調(diào)用OS提供的內(nèi)核功能性來訪問硬件和/或輸入/輸出功能性。
[0070]例如,應(yīng)用111包括各種程序或命令以執(zhí)行還在CPU102上執(zhí)行的用戶計算。統(tǒng)一概念可以允許CPU102無縫發(fā)送用于在APD104上處理的選定命令。在這種統(tǒng)一 APD/CPU構(gòu)架下,來自應(yīng)用111的輸入/輸出請求將通過對應(yīng)OS功能性進(jìn)行處理。
[0071]在一個實施例中,KMDl 10實現(xiàn)API,CPU102或在CPU102上執(zhí)行的應(yīng)用或其它邏輯可以通過所述API調(diào)用APD104功能性。例如,KMDllO可使來自CPU102的命令入隊到命令緩沖器125中,APD104隨后將從命令緩沖器125檢索命令。另外,KMDllO可以與SWS112 —起執(zhí)行對有待在APD104上執(zhí)行的進(jìn)程的調(diào)度。SWS112例如可以包括用于維護(hù)有待在APD上執(zhí)行的進(jìn)程的優(yōu)先列表的邏輯。
[0072]在本發(fā)明的其它實施方案中,在CPU102上執(zhí)行的應(yīng)用在使命令入隊時可以完全繞過 KMDl 10。
[0073]在一些實施方案中,SWSl 12在存儲器106中維護(hù)有待在APD104上執(zhí)行的進(jìn)程的活動列表152。SWS112還選擇活動列表152中有待由硬件中的HWS128管理的進(jìn)程子集。與在APD104上運行每個進(jìn)程相關(guān)的信息通過進(jìn)程控制塊(PCB) 154從CPU102傳遞到APD104。
[0074]用于應(yīng)用、OS以及系統(tǒng)軟件的處理邏輯可以包括在諸如C之類的編程語言和/或者在諸如Verilog、RTL或網(wǎng)表之類的硬件描述語言中指定的命令,以使得能夠通過生成掩模作品/光掩模來最終配置制造過程,從而產(chǎn)生體現(xiàn)本文所述發(fā)明的各方面的硬件設(shè)備。
[0075]在閱讀本說明書時,本領(lǐng)域的技術(shù)人員將會理解,計算系統(tǒng)100可以包括比圖1A中所示更多或更少的部件。例如,計算系統(tǒng)100可以包括一個或多個輸入接口、非易失性存儲裝置、一個或多個輸出接口、網(wǎng)絡(luò)接口以及一個或多個顯示器或顯示接口。
[0076]圖1B是示出圖1A所示APD104的更詳細(xì)的圖示的實施方案。在圖1B中,CP124可以包括CP管線124a、124b以及124c。CP124可以配置成處理被提供作為來自圖1A所示命令緩沖器125的輸入的命令列表。在圖1B的示例性操作中,CP輸入O (124a)負(fù)責(zé)將命令驅(qū)動到圖形管線162中。CP輸入I和2(124b和124c)將命令轉(zhuǎn)發(fā)給計算管線160。還提供了用于控制HWS128的操作的控制器機(jī)制166。
[0077]在圖1B中,圖形管線162可以包括一組框,在本文中稱作有序管線164。例如,有序管線164包括頂點組翻譯器(VGT) 164a、原語匯編程序(PA) 164b、掃描轉(zhuǎn)換器(SC) 164c以及著色器輸出、渲染支持單元(SX/RB)176。有序管線164內(nèi)的每個框可以表示圖形管線162內(nèi)的不同圖形處理階段。有序管線164可為固定功能硬件管線。但是,可以使用將在本發(fā)明的精神和范圍內(nèi)的其它實現(xiàn)方式。
[0078]雖然只有少量數(shù)據(jù)可以提供作為到圖形管線162的輸入,但是當(dāng)將這種數(shù)據(jù)提供作為來自圖形管線162的輸出時,數(shù)據(jù)將被放大。圖形管線162還包括用于通過對CP管線124a接收到的工作項組內(nèi)的范圍進(jìn)行計數(shù)的DC166。通過DC166提交的計算工作是與圖形管線162半同步的。
[0079]計算管線160包括著色器DC168和170。DC中的每一個均被配置成對從CP管線124b和124c接收到的工作組內(nèi)的計算范圍進(jìn)行計數(shù)。
[0080]圖1B所示DC166U68以及170接收輸入范圍,將所述范圍劃分成工作組,并且隨
后將工作組轉(zhuǎn)發(fā)給著色器核心122。
[0081]由于圖形管線162通常是固定功能管線,因此難以保存和恢復(fù)它的狀態(tài),并且因此,圖形管線162難以進(jìn)行上下文切換。因此,在大多數(shù)情況下,如本文中論述,上下文切換不涉及圖形進(jìn)程中的上下文切換。著色器核心122中的圖形工作則是例外,它能被上下文切換。
[0082]著色器核心122可以由圖形管線162和計算管線160共享。著色器核心122可以是被配置成運行波前的通用處理器。
[0083]在一個實施例中,計算管線160內(nèi)的所有工作都在著色器核心122內(nèi)處理。著色器核心122運行可編程軟件代碼,并且包括諸如狀態(tài)數(shù)據(jù)等各種形式的數(shù)據(jù)。然而,計算管線160不將工作發(fā)送到圖形管線162以進(jìn)行處理。在圖形管線162內(nèi)的工作處理已完成后,通過渲染支持單元176對所完成的工作進(jìn)行處理,渲染支持單元176進(jìn)行深度和色彩計算并且隨后將其最終結(jié)果寫入存儲器130。
[0084]圖2是圖1B的示例性APD104的更詳細(xì)的框圖圖示。如圖1B所示,APD104包括計算管線160,所述計算管線160將輸入I和輸入2提供給著色器核心122。圖2中所示示例性APD包括八個計算管線CS管O至CS管7 (CS PO至CS P7)。這種配置被配置成通過多個計算管線處理多個計算任務(wù)。APD200內(nèi)的多個計算管線有利于實現(xiàn)計算工作負(fù)載之間的靈活資源分配。盡管示例性APD200示出八個計算管線,但是本領(lǐng)域的普通技術(shù)人員將會了解,可以使用其它數(shù)量的計算和圖形輸入。[0085]為了高效地處理來自多個計算輸入的數(shù)據(jù),在計算管線CS PO至CS P7內(nèi)的管線隊列之間發(fā)生仲裁,如圖3中更詳細(xì)地示出。更確切地,根據(jù)本發(fā)明的實施方案的仲裁策略在多個管線輸入之間分配Aro資源。著色器輸入塊(SPI) 202提供一種用于在計算管線CS PO至CSP7與圖形管線204之間提交波前的仲裁方案。波分派器206與兩個交替計算管線連接,以將波前轉(zhuǎn)發(fā)到著色器核心208。著色器核心208執(zhí)行波前。
[0086]圖3是圖2所示計算管線CS PO至CS P7的更詳細(xì)的框圖圖示。這八個計算管線參與針對訪問共享著色器核心208的仲裁。每個計算管線CS PO至CS P7例如包括硬件隊列描述符HQD。計算管線CS PO與HQDO相關(guān)聯(lián),計算管線CS Pl與HQDl相關(guān)聯(lián)等等,直至CSP7與HQD7相關(guān)聯(lián)。每個硬件隊列描述符HQD包括八個存儲器隊列的相關(guān)聯(lián)隊列。如圖4所示,例如,CS PO與隊列QO至Q7相關(guān)聯(lián)。類似的是,CS Pl與隊列Q8至Q15相關(guān)聯(lián)等等,直至CS管7與隊列Q56至Q63相關(guān)聯(lián)。提供CP多線程微處理器引擎ME301和電網(wǎng)DC控制器O至控制器3用來對線程組進(jìn)行處理。
[0087]如上論述,硬件調(diào)度器HWS128被配置成從RLC150中選擇調(diào)度過的進(jìn)程以在APD上執(zhí)行。例如,HWS128支持基于優(yōu)先級或基于其它仲裁調(diào)度標(biāo)準(zhǔn)應(yīng)用于RLC150的調(diào)度技術(shù)。另外,KMDllO可以與SWS112—起執(zhí)行對有待在APD上執(zhí)行的進(jìn)程的調(diào)度。0SSWS112例如可以包括用于維護(hù)通過仲裁得到的有待在APD200上執(zhí)行的進(jìn)程的優(yōu)先列表的邏輯。
[0088]在另一個示例性實施方案中,每個管線的計算管線CS PO至CSP7硬件隊列描述符HQDO至HQD7之間的仲裁是使用多級調(diào)度進(jìn)程進(jìn)行解析。在具有多個計算輸入的實現(xiàn)方式中,多級調(diào)度可以用于控制多級優(yōu)先級隊列間的資源分配,其中每個計算輸入與具有類似優(yōu)先級的作業(yè)相關(guān)聯(lián)。
[0089]OS可以調(diào)度隊列QO至Q7以通過編程硬件隊列描述符HQDO至HQD7來由這些計算管線硬件隊列描述符處理。八個硬件隊列描述符HQD中的任何一個均可包含活動隊列。與一個計算管線相關(guān)聯(lián)的隊列可為獨立進(jìn)程或者可以表示進(jìn)程子集的實現(xiàn)方式。例如,在一個管線中建立的任何系統(tǒng)可以通過在共享存儲器中的一個或多個(例如,圖1A和圖1B中示出的L2R/W緩存174、圖形存儲器130)中建立的同步來與來自其它計算管線的隊列或隊列集合進(jìn)行交互。
[0090]與每個隊列相關(guān)聯(lián)的硬件隊列描述符HQD可以為OS提供搶占活動進(jìn)程以防分派尚未分配任何著色器資源的任何更多工作組的能力。從硬件移除的任何隊列可以重新調(diào)度以供在稍后時間繼續(xù)或者如果期望的話由OS終止。
[0091 ] 硬件隊列描述符HQDO至HQD7中的每個可以包括OS分配的存儲器隊列描述符MQD的存儲器隊列描述符地址MQDA。OS可以使用MQD來存儲隊列的永久狀態(tài)并且將MQDA地址提供給HQD,從而使得硬件可以更新以選擇存儲器隊列描述符的字段。當(dāng)存儲隊列描述符與HQD斷開連接時,硬件將在任何搶占期間使用MQD的一部分暫時存儲必需的持久數(shù)據(jù)。空間子集還可用于OS與HQD之間的同步協(xié)調(diào)。
[0092]隊列仲裁
[0093]圖5是實踐本發(fā)明的一個實施方案的示例性方法的流程圖。在圖5的步驟502中,就緒隊列和活動隊列是選自用于每個計算管線CS PO至CS P7的八個硬件隊列描述符隊列HQDO至HQD7。例如,選擇可由每個計算管線并行并且獨立地執(zhí)行。
[0094]在本發(fā)明的一個實施方案中,對于每個波前隊列分組提供以下寄存器控制:[0095]I).隊列活動(I位),
[0096]2).隊列優(yōu)先級(4 位 O 至 15 — L-H),3),
[0097]3).量子持續(xù)時間(5位,以5000時鐘為單位)
[0098]4).量子啟用(I位),
[0099]5).管優(yōu)先級(2位),以及
[0100]6).就緒(“就緒”表明隊列是活動的并且(非空或分派管非空)并且隊列未停止。
[0101]在步驟504中,選擇被確定為就緒可供處理的具有最高隊列優(yōu)先級的隊列。一旦被選定,例如,隊列保持選中,直至出現(xiàn)以下情況之一:
[0102]I).更高優(yōu)先級隊列變成就緒,
[0103]2).量子被啟用,諸如超過處理持續(xù)時間并且具有相同優(yōu)先級的另一隊列就緒可供處理,
[0104]3).量子被禁用,并且當(dāng)前隊列中的波前分組寫入任何其它隊列優(yōu)先級寄存器,并且具有相同優(yōu)先級的另一隊列就緒,
[0105]4).當(dāng)前隊列波前分組搶占來自計算管線的隊列并且調(diào)度例如智能等待特定條件(如定時器到期),
[0106]5).當(dāng)前隊列和計算管線DC206變空,并且同一計算管線中的任何其它隊列就緒,以及
[0107]6).0S請求當(dāng)前隊列進(jìn)行搶占。
[0108]在步驟506處,當(dāng)仲裁器確定更佳隊列就緒可供處理時,計算管線頂部的隊列仲裁器發(fā)送信號給相應(yīng)CP ME301線程以便停止在下一分組邊界上。如果確定更佳隊列不可用,那么過程在步驟508處繼續(xù)。
[0109]在步驟510處,CP ME301執(zhí)行上下文切換例程,并且發(fā)送信號給獲取器以停止獲取隊列數(shù)據(jù),并且發(fā)送信號給DC以停止向當(dāng)前隊列分派波前。CP ME301可以存儲相應(yīng)電網(wǎng)DC控制器O至控制器3的重啟線程組id。
[0110]在步驟512處,切換計算管線的當(dāng)前持續(xù)狀態(tài)被以預(yù)定義的偏移存儲在相應(yīng)存儲器隊列描述符MQD中,以有待用于在重啟隊列前進(jìn)行狀態(tài)預(yù)載??梢圆迦脒M(jìn)程結(jié)束(EOP)圍欄事件,其放置在MQD的管存儲雙字當(dāng)前最終讀出地址的末尾。在所述事件中,隊列被從硬件中移除,同時著色器復(fù)合器件中的工作未完成,HQD最終讀出地址將被存儲在MQD中。隨后,低級驅(qū)動器可以通過將管最終讀出地址的開頭與管最終讀出地址的末尾進(jìn)行比較來確定隊列的所有未完成工作何時已經(jīng)完成,當(dāng)它們匹配時,所有工作已經(jīng)完成。
[0111]在步驟514處,前一隊列狀態(tài)被調(diào)度以進(jìn)行保存,并且預(yù)取數(shù)據(jù)被調(diào)度以棄置。CPME可以釋放獲取器以選擇下一隊列進(jìn)行處理。如果下一隊列具有第一時間狀態(tài)位組,那么獲取器將插入來自MQD的所存儲的永久狀態(tài),隨后是隊列讀出/寫入指針設(shè)置以用于隊列獲取。在一個實施方案中,預(yù)期切換時間可為約500時鐘,直至CP ME開始處理下一隊列。
[0112]考慮圖6中示出的以下實施例,其中T〈n> =時間,并且η =時鐘數(shù)量,
[0113]QA =隊列活動,
[0114]QP=隊列優(yōu)先級,
[0115]QE =量子啟用,并且[0116]QD = 5000時鐘的量子持續(xù)單位對于單個計算管線中的八個隊列QO至Q7,時間垂
直增加。
[0117]如圖6所示,對于每個優(yōu)先級,計算管線維護(hù)最后執(zhí)行隊列記分板。返回到該優(yōu)先級將處理下一就緒隊列。如果在優(yōu)先級中僅一個隊列就緒,那么它將繼續(xù)。
[0118]管可以將隊列從零到七定序,并且在重置時,前一隊列將設(shè)置為七,從而得到QO — Q7作為本地排序。如果Q0、Q3、Q7在剛重置后啟用的量子處以隊列優(yōu)先級7就緒,那么隊列將以以下次序Q0、Q3、Q7、Q0等等進(jìn)行處理。如果Q5顯示具有相同隊列優(yōu)先級(7),那么它將在下一周期中在Q3后并且在Q7前得到執(zhí)行。
[0119]如果Ql和Q4在Q5量子期間達(dá)到優(yōu)先級10,那么Ql搶占Q5,并且系統(tǒng)在在Q4與Ql之間的量子上反復(fù)切換直至隊列變空或者另一隊列被調(diào)度以進(jìn)行處理。當(dāng)Ql和Q4變空時,進(jìn)程返回到Q7,因為Q5先前以優(yōu)先級7進(jìn)行處理。
[0120]圖6是根據(jù)本發(fā)明的實施方案的示例性方法的圖示。在圖6中示出的實施例中,計算管線使用兩種主要方法中的一種得到至其它隊列的管。第一方法是響應(yīng)于時間量子到期,并且第二方法是向隊列優(yōu)先級寄存器進(jìn)行寫入。
[0121]如上所述,其中時間量子被啟用并超過的隊列將由于具有相同優(yōu)先級的現(xiàn)有隊列或具有相同或更高優(yōu)先級的到達(dá)隊列而啟用搶占。如果隊列是僅有的最高優(yōu)先級隊列,那么隊列將會保持計算管線的所有權(quán),直到具有相同或更高優(yōu)先級的隊列變成就緒。
[0122]在一個替代實施方案中,仲裁事件可以針對計算管線的隊列優(yōu)先級寄存器的任何寫入產(chǎn)生。這種方法可以使得用戶能夠在啟用管的其它隊列以取得進(jìn)展之前控制發(fā)布的工作量。另外,這種替代實施方案可以啟用用于每一 CP ME的特權(quán)隊列。
[0123]計算管線間的仲裁
[0124]一旦最高優(yōu)先級隊列已經(jīng)在每個計算管線硬件描述符隊列中得到解析,下一仲裁點就必須解析來自具有最高管優(yōu)先級的計算管線的哪個波前將提交給著色器核心以進(jìn)行處理。由于兩個計算管線以交替的方式共享公共DC,因此在優(yōu)先級被確定后,共享電路分配哪個計算管線被提交給著色器核心。
[0125]例如,參與管線可為圖形管線中的任一個、HP3D任務(wù)(LS、HS、ES、GS、NS、PS)和GFX任務(wù)(LS、HS、ES、GS、VS、PS、CS)以及八個計算管線中的四個。計算管線可以具有以下管優(yōu)先級之一:CS_HIGH—高于HP3D,CS_MEDIUM—介于HP3D與GFX之間,以及CS_L0W—低于 GFX。
[0126]為了解析具有相同管優(yōu)先級的多個計算管線之間的聯(lián)系,例如,可以采用最近最少發(fā)布電路或最近最少使用電路,如圖騰柱式電路。每次選擇管線以向著色器核心發(fā)布任何工作時,管線都將被移動到最近最少發(fā)布電路的底部,從而向這個管線分配管線優(yōu)先級中的最低優(yōu)先級,直至具有相同優(yōu)先級的另一管線發(fā)布波前。這種特殊電路將被用于幫助促進(jìn)發(fā)布具有相同優(yōu)先級的工作組的過程中的公平性。
[0127]重置之后,最近最少發(fā)布列表將為PO — P7,其中對于給定管優(yōu)先級而言管O最初是最受偏愛的。
[0128]圖7是示例性管線仲裁策略的圖示。在從最高優(yōu)先級到最低優(yōu)先級的CS HIGH、HP3D、CS MEDIUM、GFX、CS_L0ff五個優(yōu)先級中,將會選擇最佳的優(yōu)先級。
[0129]在所述實施例中,“粗體”管線被認(rèn)為是用于波前發(fā)射并且“粗體且?guī)聞澗€的”管線被選擇用于波前發(fā)射。
[0130]圖1中示出的表格從左至右示出示例性圖騰柱式布置。在所述實施例中,計算管線CS PO至CS P7被表示為Pn,其中η是提供波前的計算管線并且㈠表示無=無工作。H表示一管優(yōu)先級為高,M—表示管優(yōu)先級為中,并且L表示一管優(yōu)先級為低。對于每個時間段,八個計算管線中的在DC的計算管線成對仲裁后保留下來的四個計算管線以“粗體”示出,并且“粗體且?guī)聞澗€的”計算管線是管仲裁將從處于競爭的6個管線中選擇出的管。
[0131]結(jié)論
[0132]概述以及摘要部分可以闡明如發(fā)明人所構(gòu)想的本發(fā)明的一個或多個但非所有的示例性實施方案,并且因此,并不意圖通過任何方式對本發(fā)明和所附權(quán)利要求書進(jìn)行限制。
[0133]本發(fā)明已在上文中借助示出特定功能和其關(guān)系的實現(xiàn)的功能構(gòu)建塊來描述。為了方便描述,本文已對這些功能構(gòu)建塊的邊界進(jìn)行任意界定。只要合適執(zhí)行特定功能和其關(guān)系,就可界定替代邊界。
[0134]特定實施方案的前述描述將會完全地揭示本發(fā)明的一般性質(zhì),以使他人可以在不背離本發(fā)明的一般概念的情況下通過應(yīng)用本領(lǐng)域的技術(shù)范圍內(nèi)的知識來容易地修改和/或改編此類特定實施方案以用于各種應(yīng)用。因此,基于本文所呈現(xiàn)的教導(dǎo)內(nèi)容以及指導(dǎo)內(nèi)容,此類改編以及修改意圖在所公開的實施方案的等同物的范圍內(nèi)。應(yīng)當(dāng)理解,本文的措詞或術(shù)語目的在于說明而非限制,因此技術(shù)人員將會根據(jù)教導(dǎo)內(nèi)容以及指導(dǎo)內(nèi)容來對本說明書的術(shù)語或措詞進(jìn)行解釋。
[0135]本發(fā)明的寬度以及范圍不應(yīng)限于上述示例性實施方案,而應(yīng)僅僅根據(jù)所附權(quán)利要求和它們的等同物來界定。
【權(quán)利要求】
1.一種在包括計算管線的加速處理設(shè)備(APD)內(nèi)確定優(yōu)先級的方法,所述方法包括: 根據(jù)預(yù)定標(biāo)準(zhǔn)從所述計算管線中的每個內(nèi)的計算管線處理隊列中選擇第一隊列和第二隊列;以及 根據(jù)優(yōu)先級標(biāo)準(zhǔn)來選擇所述第一隊列和所述第二隊列中的一個以進(jìn)行處理; 其中對所述選定隊列進(jìn)行處理,直至來自包括以下各項的組中的至少一個變得可用:(i)時間量子流逝;以及(ii)具有更高優(yōu)先級的隊列。
2.如權(quán)利要求1所述的方法,其中處理所述選定隊列包括搶占所述選定隊列。
3.如權(quán)利要求2所述的方法,其中搶占所述選定隊列包括對所述選定隊列執(zhí)行上下文切換操作。
4.如權(quán)利要求2所述的方法,其還包括在所述搶占后發(fā)起對第二隊列的處理。
5.如權(quán)利要求1所述的方法,其還包括確定所述計算管線中的每個的相對優(yōu)先級。
6.如權(quán)利要求5所述的方法,其中所述計算管線中的每個的所述相對優(yōu)先級是使用最近最少發(fā)布電路來確定。
7.如權(quán)利要求6所述的方法,其中所述最近最少發(fā)布電路是圖騰柱式電路。
8.如權(quán)利要求6所述的方法,其還包括將具有最低優(yōu)先級的所述計算管線指派至所述電路的底部。
9.如權(quán)利要求1所述的方法,其中所述第一隊列是就緒隊列。
10.如權(quán)利要求1所述的方法,其中所述第二隊列是活動隊列。
11.如權(quán)利要求1所述的方法,其中所述預(yù)定標(biāo)準(zhǔn)包括(i)隊列優(yōu)先級,(?)隊列量子持續(xù)時間,以及(iii)隊列就緒控制。
12.—種系統(tǒng),所述系統(tǒng)包括: 存儲器;以及 加速處理設(shè)備(APD),所述APD包括耦接至所述存儲器的計算管線,其中所述計算管線被配置成基于存儲在存儲器中的指令執(zhí)行以下操作: 根據(jù)預(yù)定標(biāo)準(zhǔn)從所述計算管線中的每個內(nèi)的計算管線處理隊列中選擇第一隊列和第二隊列; 根據(jù)優(yōu)先級標(biāo)準(zhǔn)選擇所述第一隊列和所述第二隊列中的一個以進(jìn)行處理;以及 處理所述選定隊列,直至來自包括以下各項的組中的至少一個變得可用:(i)時間量子流逝;以及(ii)具有更高優(yōu)先級的隊列。
13.如權(quán)利要求12所述的系統(tǒng),其中所述計算管線被配置成搶占處理所述選定隊列。
14.如權(quán)利要求13所述的系統(tǒng),其中所述計算管線被配置成在所述搶占期間上下文切換所述選定隊列。
15.如權(quán)利要求13所述的系統(tǒng),其中所述計算管線被配置成在所述搶占后發(fā)起對第二隊列的處理。
16.如權(quán)利要求12所述的系統(tǒng),其還包括著色器輸入塊,所述著色器輸入塊耦接至所述計算管線并且被配置成確定所述計算管線中的每個的相對優(yōu)先級。
17.如權(quán)利要求16所述的系統(tǒng),其中所述計算管線中的每個的所述相對優(yōu)先級是使用最近最少發(fā)布電路來確定。
18.如權(quán)利要求17所述的系統(tǒng),其中所述最近最少發(fā)布電路是圖騰柱式電路。
19.如權(quán)利要求17所述的系統(tǒng),其還包括將具有最低優(yōu)先級的所述計算管線指派至所述電路的底部。
20.如權(quán)利要求12所述的方法,其中所述第一隊列是就緒隊列。
21.如權(quán)利要求12所述的方法,其中所述第二隊列是活動隊列。
22.如權(quán)利要求12所述的方法,其中所述預(yù)定標(biāo)準(zhǔn)包括(i)隊列優(yōu)先級,(ii)隊列量子持續(xù)時間,以及(iii)隊列就緒控制。
【文檔編號】G06F9/48GK103999051SQ201280061763
【公開日】2014年8月20日 申請日期:2012年12月14日 優(yōu)先權(quán)日:2011年12月14日
【發(fā)明者】羅伯特·斯科特·哈托格, 馬克·萊瑟, 邁克爾·曼特, 雷克斯·麥克拉里, 塞巴斯蒂安·努斯鮑姆, 菲利普·J·羅杰斯, 拉爾夫·克萊·泰勒, 托馬斯·沃勒 申請人:超威半導(dǎo)體公司