專利名稱:基于硬件排程gpu工作的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在處理器上排程命令。
背景技術(shù):
圖形處理單元(Graphics Processor Unit ;GPU)的處理能力正在快速增加。該處理能力的增加至少部分歸因于圖形處理單元中包括的多個獨立處理單元(例如SIMD(單指令多數(shù)據(jù))處理器、ALU (算術(shù)邏輯單元))。在許多圖形應用中,利用該多個獨立處理單元執(zhí)行并行幾何計算、頂點計算和/或像素操作。例如,圖形應用經(jīng)常以單指令多數(shù)據(jù)(single instruction, multip data ;SIMD)為特征,其中,可對多個并行數(shù)據(jù)流執(zhí)行同一序列指令, 以大幅提升操作速度。另一個正在發(fā)展的趨勢是將GPU用于通用計算,其可能不一定是SIMD類型計算。 將用于通用計算的GPU使用稱為GPGPU式計算。在該GPGPU式計算中,CPU (中央處理單元) 可使用GPU執(zhí)行以前通常由CPU完成的計算工作項目。傳統(tǒng)上,由CPU排程GPU的工作以在GPU上操作,例如,頂點流及紋理信息以及處理此類信息的指令。在CPU上執(zhí)行的軟件可依據(jù)某些優(yōu)先順序確定不同工作項目(下面也稱作“命令”)的優(yōu)先順序,并將其排隊于系統(tǒng)存儲器緩沖區(qū)中。GPU自該系統(tǒng)存儲器緩沖區(qū)中異步檢索下一個要處理的工作項目。在GPU上,該下一個要處理之工作項目的選擇基于由CPU指定的優(yōu)先順序。在一些情況下,CPU可指定以每一工作項目為基礎(chǔ)的優(yōu)先順序; 在其它情況下,CPU可指定與每一存儲器緩沖區(qū)相關(guān)聯(lián)的優(yōu)先順序,排隊于存儲器緩沖區(qū)中的任何工作項目將具有與該緩沖區(qū)相關(guān)聯(lián)的優(yōu)先順序。隨著GPU中處理能力的快速增加以及用于通用目的計算之GPU使用的增加,需要更有效的方法以充分利用GPU的可用計算能力。因此,需要提供能夠更有效地向工作項目分配GPU資源的方法及系統(tǒng)。
發(fā)明內(nèi)容
本發(fā)明揭露一種在第二處理器例如GPU上排程并執(zhí)行由第一處理器例如CPU發(fā)出之命令的裝置及方法。在一實施例中,在圖形處理單元(Graphics Processing Unit ;GPU) 上執(zhí)行處理的方法包括基于該GPU的工作量概況自存儲器中的一個或多個緩沖區(qū)選擇第一子集,以在該GPU上執(zhí)行該第一子集之工作項目;以及在該GPU上執(zhí)行該第一子集之工作項目。該GPU還可接收該一個或多個緩沖區(qū)的優(yōu)先順序,其中,該選擇進一步基于該接收之優(yōu)先順序。本發(fā)明的另一實施例提供在GPU上執(zhí)行工作項目的系統(tǒng)。該GPU經(jīng)組構(gòu)成基于該 GPU的工作量概況自存儲器中的一個或多個緩沖區(qū)選擇第一緩沖區(qū)子集,以在該GPU上執(zhí)行該第一子集之工作項目;以及在該GPU上執(zhí)行該第一子集。該GPU還可經(jīng)進一步組構(gòu)成接收該一個或多個緩沖區(qū)的優(yōu)先順序,其中,該選擇進一步基于該接收之優(yōu)先順序。下面參照附圖詳細說明本發(fā)明進一步的實施例、特征和優(yōu)點,以及本發(fā)明各實施
4例的結(jié)構(gòu)及操作。
包含于說明書中并構(gòu)成其部分的附圖示例本發(fā)明實施例,而且與上面的概括說明以及下面針對實施例的詳細說明一起用于解釋本發(fā)明的原理。圖1顯示依據(jù)本發(fā)明一實施例的系統(tǒng)。圖2例示依據(jù)本發(fā)明一實施例的環(huán)形緩沖區(qū)分配。圖3顯示依據(jù)本發(fā)明一實施例實現(xiàn)于CPU中以將命令傳遞至GPU進行處理之過程的步驟流程圖。圖4顯示依據(jù)本發(fā)明一實施例實現(xiàn)于GPU中以處理自CPU接收之命令之過程的步驟流程圖。圖5顯示依據(jù)本發(fā)明一實施例實現(xiàn)于GPU中以確定命令的優(yōu)先順序并排程該命令以便執(zhí)行之過程的步驟流程圖。圖6顯示依據(jù)本發(fā)明一實施例實現(xiàn)于GPU中以執(zhí)行命令之過程的步驟流程圖。
具體實施例方式本發(fā)明實施例可實質(zhì)提升圖形處理單元(graphics processing unit ;GPU)資源的利用率。盡管這里使用具有特定應用的示例實施例說明本發(fā)明,但應當了解本發(fā)明并不以此為限。籍由閱讀本文提供的教導,本領(lǐng)域的技術(shù)人員將了解本發(fā)明范圍內(nèi)的其它修改、 應用和實施例,以及本發(fā)明具有顯著效用的其它領(lǐng)域。本發(fā)明實施例可用于任何計算機系統(tǒng)或計算設(shè)備,其具有至少兩個處理器,例如提供工作項目(例如命令或命令緩沖區(qū))的CPU以及處理該CPU提供之工作項目的GPU。 作為示例而非限制,實施例可包括計算機,其包括筆記本電腦、個人電腦、游戲平臺、娛樂平臺、個人數(shù)字助理以及視頻平臺。在具有CPU及GPU的系統(tǒng)中,GPU的利用率是整體系統(tǒng)性能的一個重要因素。理想情況下,人們希望GPU的利用率達到最大或接近最大。CPU提供GPU中使用的指令及數(shù)據(jù)。在傳統(tǒng)系統(tǒng)中,CPU以命令緩沖區(qū)向GPU提供大體上全部的指令及數(shù)據(jù),GPU簡單地將那些命令緩沖區(qū)作為輸入并執(zhí)行(亦即執(zhí)行那些命令緩沖區(qū)之命令)。命令緩沖區(qū)為包含指令或命令以及相關(guān)數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。在傳統(tǒng)系統(tǒng)中,由CPU確定命令緩沖區(qū)的任何優(yōu)先順序,GPU則按照CPU指定的順序簡單執(zhí)行由CPU確定優(yōu)先順序的排隊命令。盡管該傳統(tǒng)方法有效,但此種方法中GPU僅依靠CPU確定GPU上要執(zhí)行之工作的優(yōu)先順序還有改進的余地。本發(fā)明實施例旨在使GPU能夠確定CPU指定之命令的優(yōu)先順序并排程。例如,相較 CPUjGPU能夠以更加動態(tài)且更加有效的方式基于其本地資源的可用性確定要執(zhí)行之命令的優(yōu)先順序。而且,GPU可在CPU指定的任意命令優(yōu)先順序之外確定第二級優(yōu)先順序。在GPU上基于硬件排程命令的系統(tǒng)圖1示例依據(jù)本發(fā)明一實施例的系統(tǒng),其中,在GPU上執(zhí)行工作項目(例如命令)。 系統(tǒng)100包括CPU 101、系統(tǒng)存儲器102、圖形驅(qū)動器103、GPU 104以及通信基本架構(gòu)105。 本領(lǐng)域的技術(shù)人員將了解,系統(tǒng)100可包括在圖1所示實施例之組件以外或不同于該些組件的軟件、硬件以及固件組件。
CPU 101可為任何市場上有販售的CPU、數(shù)字信號處理器(Digital Signal Processor ;DSP)、專用集成處理器(Application Specific Integrated Processor ; ASIC)、現(xiàn)場可編程閘陣列(Field Programmable Gate Array ;FPGA)或定制處理器。CPU 101可包括利用通信基本架構(gòu),例如通信基本架構(gòu)105,耦接的一個或多個處理器。CPU 101 還可包括在同一芯片上具有多個處理核心的一個或多個處理器,例如多核心處理器。在圖 1所示實施例中,CPU 101可為具有處理核心1 IOla及核心2 IOlb的雙核心處理器。CPU 101執(zhí)行操作系統(tǒng)(未圖示)以及一個或多個應用程序,而且是系統(tǒng)100的控制處理器。執(zhí)行于CPU 101上的操作系統(tǒng)控制并促進訪問系統(tǒng)100中的設(shè)備。執(zhí)行于CPU 101上的一個或多個應用程序,包括用戶應用程序,使CPU 101協(xié)調(diào)系統(tǒng)100之不同設(shè)備的使用,包括GPU 104及系統(tǒng)存儲器102,以實現(xiàn)任務。系統(tǒng)存儲器102包括一個或多個存儲器設(shè)備。系統(tǒng)存儲器102通??蔀閯討B(tài)隨機訪問存儲器(Dynamic Random access Memory ;DRAM)或用于非持久性數(shù)據(jù)儲存的類似存儲器設(shè)備。在一些實施例中,系統(tǒng)存儲器102可包括例如閃存設(shè)備和/或靜態(tài)隨機訪問存儲器(Static Random access Memory ;SRAM)等存儲器設(shè)備。在一實施例中,在系統(tǒng)100執(zhí)行期間,系統(tǒng)存儲器102內(nèi)可駐留一個或多個存儲器緩沖區(qū)110,CPU 101透過該一個或多個存儲器緩沖區(qū)110向GPU 104傳輸命令。供CPU 101向GPU 104傳輸命令的存儲器緩沖區(qū)110可為環(huán)形緩沖區(qū)或適合對工作項目進行有效排隊的其它數(shù)據(jù)結(jié)構(gòu)。下面將存儲器緩沖區(qū)110也稱作環(huán)形緩沖區(qū)110。 自CPU 101向GPU 104傳輸?shù)拿羁砂ㄖ噶詈蛿?shù)據(jù)。在一些實施例中,執(zhí)行于CPU 101 上的應用程序和/或操作系統(tǒng)將具有指令和數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)輸入至環(huán)形緩沖區(qū)110。CPU 101 (或執(zhí)行于CPU 101上的應用程序和/或操作系統(tǒng))可指定與一個或多個環(huán)形緩沖區(qū) 110關(guān)聯(lián)的優(yōu)先順序??苫诟髅畹拇_定優(yōu)先級將命令添加至環(huán)形緩沖區(qū)。例如,CPU 101可針對高優(yōu)先級命令、低優(yōu)先級命令以及低延遲命令分別定義環(huán)形緩沖區(qū)??墒褂靡唤M間接緩沖區(qū)111保存實際的命令(例如指令和數(shù)據(jù))。例如,當CPU 101向GPU 104傳輸命令緩沖區(qū)時,該命令緩沖區(qū)可儲存于間接緩沖區(qū)111中,并在具有相應優(yōu)先級的環(huán)形緩沖區(qū)中插入指向該間接緩沖區(qū)的指針。應當了解,間接緩沖區(qū)111可實施為單級間接或多級間接。環(huán)形緩沖區(qū)工作寄存器112可實現(xiàn)于系統(tǒng)存儲器102中或系統(tǒng)100的其它寄存器存儲設(shè)施中。例如,環(huán)形緩沖區(qū)工作寄存器112就環(huán)形緩沖區(qū)110中的命令提供CPU 101 與GPU 104之間的通信。例如,向環(huán)形緩沖區(qū)110寫入命令的CPU 101與讀取此類命令的 GPU 104可協(xié)調(diào)寫入指針和讀取指針,其分別標示環(huán)形緩沖區(qū)110中添加的最后項目及讀取的最后項目。還可透過環(huán)形緩沖區(qū)工作寄存器112向GPU 104傳輸例如可用環(huán)形緩沖區(qū) 110的列表、CPU 101指定的優(yōu)先順序等其它信息。圖形驅(qū)動器103可包括軟件、固件、硬件或其任意組合。在一實施例中,圖形驅(qū)動器103全部以軟件實現(xiàn)。在系統(tǒng)100執(zhí)行期間,圖形驅(qū)動器103軟件可駐留在系統(tǒng)存儲器 102中。圖形驅(qū)動器103為CPU 101以及執(zhí)行于CPU 101上的應用程序提供接口和/或應用程序編程接口 (Application Programming Interface ;API)以訪問 GPU 104。一般而言, 當系統(tǒng)100啟動時,操作系統(tǒng)初始化適合特定GPU 104的圖形驅(qū)動器103。GPU 104為系統(tǒng)100提供圖形加速功能以及其它計算功能。GPU 104可包括多個處理器,例如單指令多數(shù)據(jù)(Single Instruction Multiple Data ;SMD)處理器,其包括例如算術(shù)邏輯單元(Arithmetic and Logic Unit ;ALU)等處理組件。一般而言,具有多個SIMD 處理器使GPU 104非常適于執(zhí)行圖形處理中常見的數(shù)據(jù)并行任務。例如,當在顯示器上渲染(rendering)圖像時,在該顯示器上渲染的每個像素上執(zhí)行相同或基本相同的指令。GPU 104還可用于圖形操作以外的任務,例如可從數(shù)據(jù)流的并行執(zhí)行中受益的各種計算密集型任務。出于簡化目的,下面以圖形應用程序進行說明。不過,本領(lǐng)域的技術(shù)人員將了解,這里的教導適用于可執(zhí)行于圖形處理器上的眾多其它任務。另外,本領(lǐng)域的技術(shù)人員將了解, GPU 104可為嵌入例如CPU 101、橋芯片(例如北橋、南橋或組合設(shè)備)等另一設(shè)備中的邏輯。GPU 104包括的組件包括GPU存儲器120、三維/計算著色器復合體(3D/CS complex) 130、環(huán)形列表控制器(Ring List Controller ;RLC) 140 以及命令處理器 150。GPU 存儲器120提供本地存儲器以供GPU104計算期間使用,其可包括DRAM或此類存儲器設(shè)備。 在一實施例中,GPU 120包括多個上下文保存區(qū)(Context Save Area ;CSA) 121。每一 CSA 121提供存儲區(qū)以保存在完成之前被換出GPU 104執(zhí)行之工作項目的上下文,如后面所述。3D/CS復合體130是GPU 104內(nèi)主要的計算組件,其包括多個SIMD處理器以方便計算,包括并行數(shù)據(jù)流上的計算。例如,3D/CS復合體可包括頂點著色器、像素著色器、幾何著色器、統(tǒng)一著色器以及用于GPU 104中數(shù)據(jù)計算的其它必要組件。在下面所述的實施例中,3D/CS復合體被認為是包括三維計算組件、計算著色器組件以及低延遲計算組件。自 CPU 101發(fā)送至GPU 104的命令利用3D/CS復合體實現(xiàn)。環(huán)形列表控制器(RLC) 140包括協(xié)調(diào)存儲器緩沖區(qū)(例如環(huán)形緩沖區(qū)110)之訪問的功能。在一實施例中,RLC 140確定將要在GPU 104中處理的環(huán)形緩沖區(qū)140的列表,接收由CPU 101(尤其執(zhí)行于CPU 101上的過程或操作系統(tǒng))指定的環(huán)形緩沖區(qū)140的任何優(yōu)先順序,以及以最優(yōu)化GPU 104中處理資源之利用率的方式確定GPU 104上環(huán)形緩沖區(qū)的排程。例如,RLC 140與命令處理器150 —起能夠以保持3D/CS復合體130中各SIMD處理器處于利用率最大化或接近最大化的方式排程自CPU 101接收的環(huán)形緩沖區(qū)。命令處理器150控制GPU 104內(nèi)的處理。命令處理器自CPU 101接收要執(zhí)行的指令,并協(xié)調(diào)該些指令在GPU 104上的執(zhí)行。在一些情況下,命令處理器可生成將在GPU 104 中執(zhí)行的一個或多個命令,其與從CPU 101接收的各個命令相對應。在一實施例中,命令處理器150與RLC 140—起以最大化GPU 104資源利用率的方式實現(xiàn)GPU 104上命令的優(yōu)先順序確定及排程。實現(xiàn)命令處理器150和RLC 140之功能的邏輯指令可以硬件、固件、或軟件、或其組合實現(xiàn)。在一實施例中,命令處理器150實施為具有微代碼的RISC引擎,以實現(xiàn)邏輯,包括排程邏輯。通信基本架構(gòu)105提供與系統(tǒng)100之設(shè)備及組件的耦接。通信基本架構(gòu)105可包括一個或多個傳輸總線,例如周邊組件互連(Peripheral Component Interconnect ;PCI), 高級圖形端口(Advanced Graphics Port ;AGP)等。圖2例示自CPU 101傳輸至GPU 104的環(huán)形緩沖區(qū)。如該示例所示,在系統(tǒng)100 操作期間的一個瞬間,系統(tǒng)存儲器102內(nèi)組構(gòu)一組環(huán)形緩沖區(qū)200,其包括環(huán)形緩沖區(qū)0… 環(huán)形緩沖區(qū)6 (亦即201、202、203、204、205、206、207)。在該組環(huán)形緩沖區(qū)200中,GPU 104 訪問子集210,該子集210包括環(huán)形緩沖區(qū)0 201、環(huán)形緩沖區(qū)1 202、環(huán)形緩沖區(qū)2 203以及環(huán)形緩沖區(qū)5206??苫贑PU 101指定的標準選擇子集210,例如,CPU 101可識別子集 210為具有準備執(zhí)行于GPU 104上的命令。例如,在將一個或多個命令排隊至各環(huán)形緩沖區(qū) 201,202,203以及206后,CPU 101可更新一個或多個存儲器位置,例如環(huán)形緩沖區(qū)工作寄存器112中的位置,其由GPU 104讀取。在另一實施例中,在向一個或多個環(huán)形緩沖區(qū)寫入一個或多個命令時,CPU 101可直接寫入GPU 104內(nèi)的寄存器,以通知GPU 104命令緩沖區(qū)可供處理。GPU 104定期監(jiān)控系統(tǒng)存儲器102中的環(huán)形緩沖區(qū)、系統(tǒng)存儲器中的環(huán)形緩沖區(qū)工作寄存器和/或由CPU 101更新的其它寄存器位置,以確定環(huán)形緩沖區(qū)是否具有準備由 GPU 104處理的命令緩沖區(qū)。當偵測到一個或多個環(huán)形緩沖區(qū)具有準備執(zhí)行的命令緩沖區(qū)時,GPU 104可接收該命令緩沖區(qū)以便執(zhí)行(亦即,執(zhí)行該命令緩沖區(qū)中的命令)。在一實施例中,GPU 104可使用直接存儲器訪問(Direct Memory Access ;DMA)等接收由CPU 101 指定的環(huán)形緩沖區(qū)至GPU本地存儲器中或一組通用寄存器(General Purpose Register ; GPR)中。RLC 140可執(zhí)行環(huán)形緩沖區(qū)的監(jiān)控并控制環(huán)形緩沖區(qū)向GPU存儲器和/或GPR的傳輸。確定要執(zhí)行于GPU 104上的環(huán)形緩沖區(qū)組后,RLC 140確定該些環(huán)形緩沖區(qū)在GPU的分配、該些環(huán)形緩沖區(qū)的優(yōu)先順序以及該些環(huán)形緩沖區(qū)之命令緩沖區(qū)的優(yōu)先順序。在一些實施例中,優(yōu)先順序的確定由RLC 140配合命令處理器150執(zhí)行。例如,在所接收的準備執(zhí)行于GPU 104上的環(huán)形緩沖區(qū)子集210中,基于CPU 101確定的優(yōu)先順序以及GPU 104確定的優(yōu)先順序,可確定如圖所示的優(yōu)先順序為具有優(yōu)先級1的環(huán)形緩沖區(qū)0,具有優(yōu)先級2 的環(huán)形緩沖區(qū)2,以及具有優(yōu)先級3的環(huán)形緩沖區(qū)1和5。CPU 處理圖3示例依據(jù)本發(fā)明一實施例由CPU例如CPU 101執(zhí)行的處理步驟(例如步驟301 至30 的流程圖。在步驟301中,CPU 101初始化系統(tǒng)存儲器103中的一組環(huán)形緩沖區(qū), 以向GPU 104傳輸命令緩沖區(qū)。盡管這里的說明中使用環(huán)形緩沖區(qū)作為選擇的數(shù)據(jù)結(jié)構(gòu)以實現(xiàn)向GPU 104傳輸命令緩沖區(qū)的方法,但本領(lǐng)域的技術(shù)人員將了解,可使用一個或多個其它數(shù)據(jù)結(jié)構(gòu)替代環(huán)形緩沖區(qū)。初始化步驟301可發(fā)生于系統(tǒng)啟動或應用程序啟動時。例如,系統(tǒng)啟動時,當執(zhí)行于CPU 101上的操作系統(tǒng)組構(gòu)GPU 104及相關(guān)的圖形驅(qū)動器103以供使用時,可初始化一個或多個環(huán)形緩沖區(qū)以用于自隨后的應用向GPU 104傳輸指令及數(shù)據(jù)。在另一例子中,當載入具有使用GPU之代碼例如DirectX代碼的應用程序時,該些環(huán)形緩沖區(qū)可組構(gòu)為該應用程序之初始化的一部分。在另一示例實施例中,可在系統(tǒng)啟動時初始化一個或多個環(huán)形緩沖區(qū),在應用程序啟動時添加和初始化額外的緩沖區(qū)。初始化可包括存儲器分配、對應于環(huán)形緩沖區(qū)之數(shù)據(jù)結(jié)構(gòu)的初始化,以及更新用以向GPU 104傳輸環(huán)形緩沖區(qū)組構(gòu)信息的一個或多個寄存器。例如,初始化環(huán)形緩沖區(qū)可包括針對環(huán)形緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)(例如環(huán)形緩沖區(qū)110)的存儲器分配、分配一個或多個存儲器區(qū)域以容納與環(huán)形緩沖區(qū)組件相關(guān)聯(lián)的實際命令緩沖區(qū)(例如間接緩沖區(qū)111),以及初始化一個或多個寄存器(例如環(huán)形緩沖工作寄存器112中的一個或多個寄存器)??苫诮M構(gòu)參數(shù)或基于所執(zhí)行的應用程序所動態(tài)確定的參數(shù)初始化環(huán)形緩沖區(qū)與間接環(huán)形緩沖區(qū)。例如,環(huán)形緩沖區(qū)的數(shù)量、大小,間接緩沖區(qū)區(qū)域的大小等可作為系統(tǒng)啟動時的組構(gòu)參數(shù),和/或可基于應用程序特征確定一個或多個此類參數(shù)。在一實施例中,每一環(huán)形緩沖區(qū)110為圓形陣列。該圓形陣列之各組件意圖容納指向間接緩沖區(qū)區(qū)域111中的位置的指針。各環(huán)形緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)還具有維護該環(huán)形緩沖區(qū)結(jié)構(gòu)所需的參數(shù),例如頭指針和尾指針等。間接緩沖區(qū)區(qū)域111意圖容納對應于命令緩沖區(qū)的多個數(shù)據(jù)結(jié)構(gòu)。例如,每一命令緩沖區(qū)可包括將由GPU執(zhí)行的一個或多個命令及相關(guān)數(shù)據(jù)。在不同于環(huán)形緩沖區(qū)的位置中儲存實際命令緩沖區(qū)有利于存儲器的有效使用。間接緩沖區(qū)區(qū)域112可以多種方式分配,包括基于每一命令作分配,為每一環(huán)形緩沖區(qū)分配一區(qū)域,或者為全部環(huán)形緩沖區(qū)110分配一個連續(xù)的區(qū)域。環(huán)形緩沖區(qū)工作寄存器112可包括寄存器和/或其它位置。盡管圖中所示的環(huán)形緩沖區(qū)工作寄存器112被組構(gòu)于系統(tǒng)存儲器102內(nèi),本領(lǐng)域的技術(shù)人員應當了解,該環(huán)形緩沖區(qū)工作寄存器可包括位于系統(tǒng)存儲器102以外的一個或多個寄存器。例如,環(huán)形緩沖區(qū)工作寄存器112可包括位于GPU 104 中的一個或多個寄存器??墒褂铆h(huán)形緩沖區(qū)工作寄存器112向GPU 104傳輸CPU 101使用環(huán)形緩沖區(qū)的相關(guān)信息。例如,CPU 101可將當前活動環(huán)形緩沖區(qū)列表、由CPU 101確定的該些活動環(huán)形緩沖區(qū)的優(yōu)先順序、針對一個或多個GPU組件的活動環(huán)形緩沖區(qū)的分配等信息全部傳輸至GPU 104。在另一實施例中,環(huán)形緩沖區(qū)工作寄存器112還可用于傳輸例如每一環(huán)形緩沖區(qū)的當前讀取和寫入指針等信息。在步驟303中,CPU 101通知GPU 104有關(guān)環(huán)形緩沖區(qū)的組構(gòu)。該步驟可發(fā)生于系統(tǒng)啟動時或發(fā)生于CPU 101初始化系統(tǒng)存儲器103中的環(huán)形緩沖區(qū)之后的應用程序啟動時。在一些實施例中,步驟303可在系統(tǒng)啟動時以及在應用程序啟動時執(zhí)行。例如,如應用程序啟動時,活動環(huán)形緩沖區(qū)的數(shù)量組構(gòu)改變,此類變更將被傳輸至GPU 104。在本發(fā)明一實施例中,傳輸至GPU 104的環(huán)形緩沖區(qū)組態(tài)信息包括環(huán)形緩沖區(qū)的數(shù)量、各環(huán)形緩沖區(qū)的位置及大小,以及CPU 101確定的優(yōu)先順序。在本發(fā)明的不同實施例中,可傳輸有關(guān)該幀緩沖區(qū)組構(gòu)之不同的和/或額外的組構(gòu)信息。步驟303中的通知可基于CPU 101寫入至GPU 104監(jiān)控的一個或多個寄存器位置,例如環(huán)形緩沖區(qū)工作寄存器112。在另一實施例中,通過使用圖形驅(qū)動器103而執(zhí)行于CPU 101或CPU 101之操作系統(tǒng)上的應用程序啟動對GPU 104的通知。在本發(fā)明實施例中,圖形驅(qū)動器103可將要傳輸至GPU 104的信息寫入系統(tǒng)存儲器102中。在步驟305中,將命令寫入環(huán)形緩沖區(qū)。例如,在執(zhí)行應用程序例如游戲應用程序期間,執(zhí)行眾多的圖形相關(guān)命令以執(zhí)行各種圖形相關(guān)任務,包括在顯示器上渲染圖像。該應用程序代碼可使用圖形處理平臺例如DirectX而使用圖形命令。在為執(zhí)行于系統(tǒng)100上而編譯該應用程序時,或在某些情況下,更動態(tài)地在運行時,確定CPU 101卸載特定的命令及相關(guān)數(shù)據(jù)以在GPU 104上處理。例如,調(diào)用DirectX API以執(zhí)行功能的任何命令可選擇在 GPU 104上處理。操作系統(tǒng),或在一些實施例中,應用程序本身,將該些選擇在GPU 104上處理的命令及相關(guān)數(shù)據(jù)寫入經(jīng)組構(gòu)用于向GPU 104傳輸指令及數(shù)據(jù)的環(huán)形緩沖區(qū)中。該些命令及相關(guān)數(shù)據(jù)可形成通常被稱作命令緩沖區(qū)的數(shù)據(jù)結(jié)構(gòu)。命令緩沖區(qū)包括一個或多個指令及相關(guān)數(shù)據(jù)。例如,對于“繪制”命令,相應的命令緩沖區(qū)可包括“繪制”命令以及要在顯示器上繪制或渲染的圖像。如前所述,對于向GPU 104傳輸命令緩沖區(qū)的環(huán)形緩沖區(qū),CPU 101可確定其優(yōu)先順序。因此,當在步驟305中寫入命令緩沖區(qū)時,每一命令緩沖區(qū)排隊于最匹配該命令之優(yōu)先級的環(huán)形緩沖區(qū)中。例如,游戲應用程序生成眾多游戲角色圖像渲染,其要求幾乎立即顯示,此外菜單及其它用戶事件則具有較低的時間緊迫性。因此,與時間緊迫性較低的菜單及用戶事件的命令緩沖區(qū)相比,對應時間緊迫圖像的命令緩沖區(qū)可排隊于較高優(yōu)先級環(huán)形緩沖區(qū)。將命令緩沖區(qū)寫入適當?shù)沫h(huán)形緩沖區(qū)可包括分配存儲器區(qū)域以在間接緩沖區(qū)區(qū)域 111中容納該命令緩沖區(qū),以及將指向該間接緩沖區(qū)區(qū)域111中相應位置的指針排隊于該環(huán)形緩沖區(qū)中。在該環(huán)形緩沖區(qū)中插入指向該間接緩沖區(qū)111的指針還包括更新該環(huán)形緩沖區(qū)的數(shù)據(jù)結(jié)構(gòu)組件,例如頭指針和尾指針。另外,CPU 101可更新標示添加值的值以及供作為寫入者的CPUlOl以及作為讀取者的GPU 104安全并發(fā)訪問環(huán)形緩沖區(qū)的指針。在將一個或多個命令緩沖區(qū)寫入環(huán)形緩沖區(qū)后,CPU 101可更新一個或多個寄存器和/或其它存儲器位置以通知GPU 104有關(guān)數(shù)據(jù)的可用性。在一些實施例中,當GPU 104可持續(xù)監(jiān)控各該環(huán)形緩沖區(qū)時,無需由CPU 101單獨通知。過程300以基本與耦接CPU 101之GPU中的處理異步的方式實現(xiàn)于CPU 101上。 過程300能夠使執(zhí)行于CPU 101上的應用程序于執(zhí)行的同時具有多個命令在其它處理器例如GPU 104中等待處理。不過,例如,可在CPU 101與GPU 104之間實現(xiàn)某些同步機制,以確保GPU不會對進來的命令緩沖區(qū)不知所措。例如,CPU 101可具有適當?shù)募夹g(shù)偵測何時 GPU 104沒有在處理環(huán)形緩沖區(qū),以便能夠?qū)ψ兟奶幚碜鞒龇磻?。CPU 101還可具有適當?shù)臋C制偵測是否其排隊于環(huán)形緩沖區(qū)的每個命令都被GPU 104處理。例如,對于排隊至一環(huán)形緩沖區(qū)的每個命令,CPU 101可向環(huán)形緩沖區(qū)工作存儲器112中的存儲器位置寫入一值。接著,CPU 101可定期檢查位于該存儲器位置的該值。當GPU 104處理該命令緩沖區(qū)時,其以不同的值更新環(huán)形緩沖區(qū)工作存儲器112中的各位置。在超時時間后,環(huán)形緩沖區(qū)工作存儲器112中各位置的未變更值向CPU 101標示GPU 104功能不正常。GPU 處理圖4顯示依據(jù)本發(fā)明一實施例由GPU 104實現(xiàn)之過程400的步驟401至409的流程圖。在本發(fā)明不同實施例中,過程400可以硬件、固件和/或軟件實現(xiàn)。例如,可利用硬件和微代碼組合實現(xiàn)RLC 140的功能,以保持高度的靈活性,同時保持高性能。在步驟401中,GPU 104確定系統(tǒng)存儲器103中環(huán)形緩沖區(qū)的組構(gòu),其中,該GPU 104透過該環(huán)形緩沖區(qū)自CPU 101接收命令緩沖區(qū)。步驟401可在系統(tǒng)啟動和/或在應用程序啟動時執(zhí)行。例如,在系統(tǒng)啟動時,當CPU 101初始化時,GPU 104可確定系統(tǒng)存儲器 103中環(huán)形緩沖區(qū)的組構(gòu)。GPU 104還可在應用程序啟動時或自CPU 101接收信號時確定環(huán)形緩沖區(qū)的組構(gòu)。在一些實施例中,若CPU 101于系統(tǒng)啟動時初始化環(huán)形緩沖區(qū)110,而且不會在系統(tǒng)操作期間進一步添加和/或刪除環(huán)形緩沖區(qū),則GPU 104僅于系統(tǒng)啟動時執(zhí)行步驟104。另一方面,若CPU 101在系統(tǒng)啟動以外的其它時間例如在應用程序啟動時對環(huán)形緩沖區(qū)110偶爾作組構(gòu)變更時,則當此類變更發(fā)生時,要求GPU104更新其有關(guān)該環(huán)形緩沖區(qū)組構(gòu)的信息。GPU 104可基于定期監(jiān)控環(huán)形緩沖區(qū)或相關(guān)寄存器或存儲器位置或基于自CPU 101接收的消息或信號確定環(huán)形緩沖區(qū)的組構(gòu)。在一實施例中,步驟401的功能主要實現(xiàn)于RLC 140中。已確定環(huán)形緩沖區(qū)110的組構(gòu)后,在步驟403中,GPU 104監(jiān)控該些環(huán)形緩沖區(qū)以偵測可供處理的環(huán)形緩沖區(qū)。例如,當在CPU 101上執(zhí)行游戲應用程序時,CPU 101將圖形處理操作命令以命令緩沖區(qū)的形式排隊至環(huán)形緩沖區(qū)110,如參照過程300的步驟305所述。當依據(jù)執(zhí)行的應用程序生成命令緩沖區(qū)并排隊至環(huán)形緩沖區(qū)時,CPU 101可更新一個或多個存儲器位置和/或寄存器,以向GPU 104標示哪些環(huán)形緩沖區(qū)可供處理。GPU 104可
10監(jiān)控CPU 101更新的此類存儲器位置和/或寄存器。在一實施例中,步驟403的功能主要實現(xiàn)于RLC 140中。在步驟405中,GPU 104選擇環(huán)形緩沖區(qū)110的子集以便處理和執(zhí)行??身憫獋蓽y排隊于環(huán)形緩沖區(qū)110中等待處理的命令緩沖區(qū)或響應自CPU 101接收的消息或信號執(zhí)行步驟405。供處理和執(zhí)行之環(huán)形緩沖區(qū)子集的選擇,例如如圖2所示自可用環(huán)形緩沖區(qū)200 選擇子集210可基于一個或多個因素。在一實施例中,CPU 101可將準備在GPU中處理的環(huán)形緩沖區(qū)保持為環(huán)形緩沖區(qū)的列表,GPU 104自其中選擇環(huán)形緩沖區(qū)作為要處理的子集。 在一些實施例中,GPU 104。在另一實施例中,CPU 101簡單地將命令緩沖區(qū)排隊至一個或多個環(huán)形緩沖區(qū),GPU 104選擇具有等待執(zhí)行之排隊命令緩沖區(qū)的一個或多個環(huán)形緩沖區(qū)。在一些實施例中,可將選擇供執(zhí)行的環(huán)形緩沖區(qū)子集提供至GPU本地存儲器中或 GI3R中,以準備在GPU 104內(nèi)處理。自系統(tǒng)存儲器102傳輸命令緩沖區(qū)可由DMA過程控制。 當自系統(tǒng)存儲器103讀取命令緩沖區(qū)時,GPU 104可更新一個或多個存儲器位置,以標示哪些命令緩沖區(qū)已被讀取,以及各該命令緩沖區(qū)是否已被處理。被更新的此類存儲器位置可位于環(huán)形緩沖區(qū)工作寄存器112中、環(huán)形緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)中,和/或GPU本地存儲器或GPR 中。在一實施例中,步驟403的功能主要實現(xiàn)于RLC 140中。在步驟407中,GPU 104依據(jù)優(yōu)先標準選擇命令緩沖區(qū)以在GPU上執(zhí)行。在處理該步驟期間,GPU 104確定如何將前面步驟中選擇的環(huán)形緩沖區(qū)分配給一個或多個GPU,以及如何將各命令分配給GPU內(nèi)的資源。例如,GPU 104可確定優(yōu)先順序,按此順序在GPU 104 上處理步驟405中自系統(tǒng)存儲器103選擇的環(huán)形緩沖區(qū)子集210,以及在一些實施例中,確定在處理各環(huán)形緩沖區(qū)期間如何確定命令的優(yōu)先順序并對其排程。在一實施例中,步驟403 的功能主要實現(xiàn)于RLC 140中。圖5進一步描述步驟407的處理。在步驟409中,依據(jù)前面步驟中在GPU 104中確定的優(yōu)先順序,在GPU 104上執(zhí)行所選擇的命令。在一實施例中,選擇執(zhí)行的環(huán)形緩沖區(qū)子集210是依據(jù)在GPU 104上執(zhí)行的優(yōu)先順序而排序。在各環(huán)形緩沖區(qū)內(nèi),可對命令確定優(yōu)先順序并對其排程以便執(zhí)行,或者按照命令在該環(huán)形緩沖區(qū)出現(xiàn)的順序執(zhí)行。在另一實施例中,通過考慮例如CPU 101指定的優(yōu)先順序、環(huán)形緩沖區(qū)的類型或命令緩沖區(qū)的類型、GPU 104上處理資源的可用性等多個因素,GPU 104可定期確定全部待處理命令緩沖區(qū)的優(yōu)先順序。自CPU 101接收于命令緩沖區(qū)中的命令執(zhí)行可包括命令處理器150對應該接收的命令生成一個或多個命令并在GPU 104的處理資源上排程該命令。例如,自CPU 101接收用以渲染圖像的單個命令可使命令處理器150細分該圖像,并生成一個或多個指令以處理各該圖像的各該細分部分。接著,命令處理器排程各該細分部分執(zhí)行于GPU 104之處理資源例如SIMD處理器和/或ALU上。排程準備執(zhí)行之命令以及在GPU上執(zhí)行該些命令主要是由命令處理器150配合指定該些命令之優(yōu)先順序的RCL 140管理。命令的執(zhí)行可以符合本發(fā)明的各種方式進行。在一實施例中,當每一命令完成執(zhí)行從而使處理資源可用時,在該處理資源上執(zhí)行依據(jù)優(yōu)先順序的下一命令。實施例還可采用其它方法,其中,在選擇要執(zhí)行的下一命令時,在上述優(yōu)先順序之外考慮其它因素。例如, 可評估待處理命令,進而安排最可能優(yōu)化可用資源的命令為下一要執(zhí)行的命令。在本發(fā)明另一些實施例中,一些數(shù)量和/或類型的命令在GPU 104中完成執(zhí)行時,GPU 104可返回步驟405,從而重新選擇可供處理的環(huán)形緩沖區(qū)。
一般而言,在GPU 104中執(zhí)行命令期間,RLC 140或GPU 104的另一組件持續(xù)監(jiān)控系統(tǒng)存儲器中的環(huán)形緩沖區(qū),例如環(huán)形緩沖區(qū)110。該持續(xù)的監(jiān)控使GPU 104能夠偵測,例如,命令緩沖區(qū)何時被添加至高優(yōu)先級隊列。在GPU 104執(zhí)行一個或多個較低優(yōu)先級的命令期間,CPU 101將一個或多個命令緩沖區(qū)添加至高優(yōu)先級緩沖區(qū)可使GPU 104預先阻止一個或多個命令,以便能夠執(zhí)行該較高優(yōu)先級命令。圖6顯示依據(jù)本發(fā)明實施例實現(xiàn)的步驟601至609,以使GPU 104能夠在執(zhí)行一個或多個較低優(yōu)先級命令期間接納較高優(yōu)先級命令。例如,步驟601至609可在處理步驟409期間實現(xiàn)。圖5顯示依據(jù)本發(fā)明一實施例實現(xiàn)于前述步驟407中的步驟501至505。步驟501 至505主要由RLC 140及命令處理器150實現(xiàn),以使GPU 104能夠確定環(huán)形緩沖區(qū)及命令緩沖區(qū)的優(yōu)先順序。在步驟501中,確定GPU 104的當前工作量概況。在一實施例中,RLC 140和/或命令處理器150確定例如可用處理組件、該些處理組件的相對處理能力以及待處理工作量的當前優(yōu)先順序等因素,以創(chuàng)建工作量概況。該工作量概況反應GPU的狀態(tài)。確定可用處理組件以及各自的相對處理能力可包括考慮獨立處理組件,例如SIMD組件、ALU能力、三維處理設(shè)備、計算著色器設(shè)備以及低延遲處理設(shè)備??蛇B續(xù)地或定期地動態(tài)執(zhí)行GPU的當前工作量分析。例如,當命令或環(huán)形緩沖區(qū)完成執(zhí)行時,或自系統(tǒng)存儲器讀取新的環(huán)形緩沖區(qū)子集時,RLC 140和/或命令處理器150可啟動該GPU工作量分析。另外,每當需要確定工作量時可生成新的工作量概況;或維持該工作量概況,當發(fā)生例如完成環(huán)形緩沖區(qū)執(zhí)行、自系統(tǒng)存儲器讀取環(huán)形緩沖區(qū)子集等預定類型的事件時對其更新。在步驟503中,GPU 104確定等待執(zhí)行于GPU 104上之環(huán)形緩沖區(qū)的優(yōu)先順序。在一實施例中,RLC 140和命令處理器150基于前述步驟501確定的工作量概況確定優(yōu)先順序。由GPU 104確定的優(yōu)先順序可基于CPU 101指定的環(huán)形緩沖區(qū)順序。當基于GPU的動態(tài)工作量概況最優(yōu)化實際的執(zhí)行順序時,可基本遵守CPU 101指定的優(yōu)先順序。對執(zhí)行順序進行動態(tài)重新排序的能力使GPU能夠細粒度控制其處理組件的使用狀況。在步驟505中,GPU 104確定與各該環(huán)形緩沖區(qū)相關(guān)聯(lián)之命令的優(yōu)先順序。例如, RLC 140和命令處理器150可基于前述步驟501中確定的工作量概況以及步驟503中確定的環(huán)形緩沖區(qū)優(yōu)先順序而確定順序。環(huán)形緩沖區(qū)中命令的優(yōu)先順序可包括確定將每個命令分配至GPU中的哪個處理組件。通過進行動態(tài)確定,例如,若高優(yōu)先處理資源可用,則以高優(yōu)先級執(zhí)行原來具有低優(yōu)先級的命令,或者當高優(yōu)先處理資源繁忙時,以低優(yōu)先級執(zhí)行原來具有高優(yōu)先級的命令,或者基于組件可用性在低延遲組件上執(zhí)行原本通常執(zhí)行于計算著色器組件上的命令,對各環(huán)形緩沖區(qū)內(nèi)的命令執(zhí)行重新排序的能力使GPU能夠更佳使用其資源。圖6顯示依據(jù)本發(fā)明一實施例實現(xiàn)的步驟601至609,以使GPU104能夠在執(zhí)行一個或多個較低優(yōu)先級命令期間接納較高優(yōu)先級命令。例如,步驟601至609可在處理步驟 409期間實現(xiàn)。在步驟601中,GPU 104確定是否需要上下文切換以處理另一命令。可基于例如當前正在執(zhí)行之過程的優(yōu)先級、需要執(zhí)行之過程的優(yōu)先級、執(zhí)行時間片值以及每個當前正在執(zhí)行過程的剩余執(zhí)行時間等一個或多個因素而確定是否需要上下文切換。例如,命令處理器150可包括考慮上述一個或多個因素并且確定是否強制上下文切換的功能。
在步驟603中,預先阻止正在執(zhí)行的命令和/或正在執(zhí)行的環(huán)形緩沖區(qū)。預先阻止正在執(zhí)行的命令和/或正在執(zhí)行的環(huán)形緩沖區(qū)包括保存該預先阻止之命令和/或環(huán)形緩沖區(qū)的狀態(tài)。在本發(fā)明實施例中,該預先阻止之命令和/或環(huán)形緩沖區(qū)的狀態(tài)保存于在GPU 本地存儲器中組構(gòu)的上下文保存區(qū)(Conetxt Save Area ;CSA)中。例如,如要預先阻止當前正在執(zhí)行的環(huán)形緩沖區(qū),則將該環(huán)形緩沖區(qū)的狀態(tài),包括其待處理命令、數(shù)據(jù),以及執(zhí)行參數(shù)例如程序計數(shù)器等保存于GPU本地存儲器中的一個區(qū)域中,例如GPU存儲器120的CSA 121 中。在步驟605中,由RLC 140和命令處理器150換入執(zhí)行另一命令和/或另一環(huán)形緩沖區(qū)。該換入執(zhí)行的命令和/或環(huán)形緩沖區(qū)可能首次執(zhí)行于GPU 104上或是自CSA恢復的命令和/或環(huán)形緩沖區(qū)。例如,該換入的命令和/或環(huán)形緩沖區(qū)可能曾經(jīng)執(zhí)行至其時間片結(jié)束,而且于其時間片結(jié)束時保存至CSA。在步驟607中,當前正在執(zhí)行的命令結(jié)束執(zhí)行。當當前正在執(zhí)行的命令結(jié)束執(zhí)行時,可執(zhí)行同一環(huán)形緩沖區(qū)中的下一命令。在本發(fā)明實施例中,GPU 104可確定環(huán)形緩沖區(qū)內(nèi)命令的執(zhí)行順序,如參照過程400之步驟407所述。在一些實施例中,當一過程執(zhí)行完成時,GPU 104可執(zhí)行例如檢查準備執(zhí)行之較高優(yōu)先級環(huán)形緩沖區(qū)或檢查同一環(huán)形緩沖區(qū)中較高優(yōu)先級命令等操作,以確定下一步執(zhí)行的過程和/或環(huán)形緩沖區(qū)。在步驟607中,當前正在執(zhí)行的環(huán)形緩沖區(qū)完成執(zhí)行與其相關(guān)的全部待處理命令。當一環(huán)形緩沖區(qū)執(zhí)行完成時,GPU 104可選擇另一環(huán)形緩沖區(qū)例如按照優(yōu)先級順序的下一環(huán)形緩沖區(qū)以便執(zhí)行。上述實施例可以硬件描述語言例如Verilog、RTL、網(wǎng)表(netlist)等進行描述,籍由生成掩模作品/光罩,該些描述可最終組態(tài)一制造過程,從而生成體現(xiàn)本發(fā)明之態(tài)樣的一個或多個硬件設(shè)備??偨Y(jié)如上述實施例所述,本發(fā)明能夠更有效地分配第二處理器例如GPU內(nèi)的處理資源,其自第一處理器例如CPU接收命令。基于本地確定的因素例如處理設(shè)備的可用性、工作量等確定優(yōu)先順序以及排程其工作量的能力提升了該第二處理器的利用率。說明書的發(fā)明內(nèi)容和摘要部分可能給出本發(fā)明的一個或多個而非全部的示例實施例,其并非意圖限制本發(fā)明及所附權(quán)權(quán)利要求書。上面借助功能方塊圖說明了本發(fā)明特定的功能及其關(guān)系的實施。說明中出于方便目的而隨意定義了該些功能方塊圖的范圍。本發(fā)明還可定義其它范圍,只要能夠適當執(zhí)行特定的功能及關(guān)系即可。上面對特定實施例的說明將充分揭示本發(fā)明的總體特征,以致本領(lǐng)域的技術(shù)人員可在無需過度實驗且不背離本發(fā)明的總體構(gòu)思的情況下針對不同應用輕易地進行修改和/ 或變更。因此,基于這里提出的教導和指導,此類修改和變更落入這里所揭露之實施例等同物的含義及范圍內(nèi)。應當了解,這里的用語或術(shù)語是出于描述目的而非限制本發(fā)明,因此本領(lǐng)域技術(shù)人員應根據(jù)教導及指導解釋說明書中的用語或術(shù)語。本發(fā)明的廣度及范圍不應當限于上述示例實施例,而應當僅依據(jù)下面的權(quán)利要求及其等同定義。
權(quán)利要求
1.一種在圖形處理單元(GPU)上處理工作項目的方法,包括基于該GPU的工作量概況自存儲器中的一個或多個緩沖區(qū)選擇第一緩沖區(qū)子集,以在該GPU上執(zhí)行該第一子集的工作項目;以及在該GPU上執(zhí)行該第一子集的該工作項目。
2.如權(quán)利要求1所述的方法,進一步包括接收該一個或多個緩沖區(qū)的優(yōu)先順序,其中,該選擇進一步基于該接收的優(yōu)先順序。
3.如權(quán)利要求1所述的方法,其中,該執(zhí)行包括 在該GPU上執(zhí)行該第一子集的第一緩沖區(qū)的工作項目; 確定第二緩沖區(qū)的工作項目將執(zhí)行于該GPU上; 預先阻止該第一緩沖區(qū)的工作項目的執(zhí)行;以及在該GPU上啟動該第二緩沖區(qū)的工作項目的執(zhí)行。
4.如權(quán)利要求3所述的方法,其中,該預先阻止包括將該第一環(huán)形緩沖區(qū)的上下文保存至本地存儲器中的上下文保存區(qū)。
5.如權(quán)利要求3所述的方法,其中,該確定包括比較該第一緩沖區(qū)的工作項目的執(zhí)行時間與預定時間片值。
6.如權(quán)利要求3所述的方法,其中,該確定包括 監(jiān)控該緩沖區(qū)的至少其中一者;以及偵測優(yōu)先級高于該第一緩沖區(qū)的該緩沖區(qū)的該至少其中一者中的工作項目。
7.如權(quán)利要求1所述的方法,其中,該監(jiān)控包括 讀取由第二處理器寫入的至少一個存儲器位置;以及基于自該至少一個存儲器位置讀取的值偵測命令寫入事件。
8.如權(quán)利要求1所述的方法,其中,該選擇包括 分析各該緩沖區(qū)中的工作項目;確定各該緩沖區(qū)的優(yōu)先級;以及基于該確定的優(yōu)先級選擇該第一子集。
9.如權(quán)利要求1所述的方法,其中,該存儲器為耦接至中央處理單元(CPU)以及該GPU 的系統(tǒng)存儲器。
10.如權(quán)利要求1所述的方法,其中,該一個或多個緩沖區(qū)的至少其中一者為環(huán)形緩沖區(qū)。
11.如權(quán)利要求1所述的方法,其中,各該第一子集包括由中央處理單元(CPU)寫入的一個或多個命令緩沖區(qū)。
12.—種在圖形處理單元(GPU)上執(zhí)行工作項目的系統(tǒng),該GPU經(jīng)組構(gòu)成基于該GPU的工作量概況自存儲器中的一個或多個緩沖區(qū)選擇第一緩沖區(qū)子集,以在該GPU上執(zhí)行該第一子集的工作項目;以及在該GPU上執(zhí)行該第一子集的該工作項目。
13.如權(quán)利要求12所述的系統(tǒng),其中,該GPU經(jīng)進一步組構(gòu)成接收該一個或多個緩沖區(qū)的優(yōu)先順序,其中,該選擇進一步基于該接收的優(yōu)先順序。
14.如權(quán)利要求12所述的系統(tǒng),其中,該GPU經(jīng)進一步組構(gòu)成 執(zhí)行該第一子集的第一緩沖區(qū);確定將執(zhí)行于該GPU上的第二緩沖區(qū); 預先阻止該第一緩沖區(qū)的執(zhí)行;以及在該GPU上啟動該第二緩沖區(qū)的執(zhí)行。
15.如權(quán)利要求14所述的系統(tǒng),其中,該預先阻止包括將該第一環(huán)形緩沖區(qū)的上下文保存至本地存儲器中的上下文保存區(qū)。
16.如權(quán)利要求14所述的系統(tǒng),其中,該確定包括 監(jiān)控該緩沖區(qū)的至少其中一者;以及偵測優(yōu)先級高于該第一緩沖區(qū)的該緩沖區(qū)的該至少其中一者中的工作項目。
17.如權(quán)利要求12所述的系統(tǒng),其中,該一個或多個緩沖區(qū)的至少其中一者為環(huán)形緩沖區(qū)。
18.如權(quán)利要求12所述的系統(tǒng),進一步包括 中央處理單元(CPU);以及該存儲器,耦接至該CPU以及該GPU。
19.如權(quán)利要求12所述的系統(tǒng),其中,該GPU包括 本地存儲器,經(jīng)組構(gòu)具有一個或多個上下文保存區(qū)。
20.一種儲存指令的計算機可讀媒體,其中,于執(zhí)行時,該指令用于在圖形處理單元 (GPU)上處理工作項目,其使用的方法包括基于該GPU的工作量概況自存儲器中的一個或多個緩沖區(qū)選擇第一緩沖區(qū)子集,以在該GPU上執(zhí)行該第一子集的工作項目;以及在該GPU上執(zhí)行該第一子集的該工作項目。
21.如權(quán)利要求20所述的計算機可讀媒體,其中,該指令包括硬件描述語言指令。
22.如權(quán)利要求20所述的計算機可讀媒體,其中,該指令籍通過生成掩膜作品/光罩而組構(gòu)制造流程,以生成用以在該GPU上處理該工作項目的設(shè)備。
全文摘要
本發(fā)明揭露一種在第二處理器例如GPU上排程并執(zhí)行由第一處理器例如CPU發(fā)出之命令的裝置及方法。在一實施例中,在圖形處理單元(Graphics Processing Unit;GPU)上執(zhí)行處理的方法包括監(jiān)控存儲器中的一個或多個緩沖區(qū),基于該GPU的工作量概況自該一個或多個緩沖區(qū)選擇第一子集以執(zhí)行于該GPU上,以及在該GPU上執(zhí)行該第一子集。該GPU還可接收該一個或多個緩沖區(qū)的優(yōu)先順序,其中,該選擇進一步基于該接收之優(yōu)先順序。通過在該GPU中執(zhí)行命令的優(yōu)先順序確定及排程,系統(tǒng)性能得以提升。
文檔編號G06F9/50GK102597950SQ201080048071
公開日2012年7月18日 申請日期2010年9月2日 優(yōu)先權(quán)日2009年9月3日
發(fā)明者F·利爾羅斯, G·J·程, R·麥克拉里 申請人:先進微裝置公司