本發(fā)明大體上是針對計算系統(tǒng)。更具體來說,本發(fā)明是針對統(tǒng)一計算系統(tǒng)內(nèi)部的計算部件。
背景技術(shù):對使用圖形處理單元(GPU)來進行一般計算的渴望在最近由于GPU的示例性每單位功率性能和/或成本而變得更加顯著。一般來說,GPU的計算能力已以超過對應(yīng)中央處理器(CPU)平臺的計算能力的速率增長。隨著移動計算市場(例如,筆記本計算機、移動智能電話、平板計算機等)和其所必需的支持服務(wù)器/企業(yè)系統(tǒng)的蓬勃發(fā)展,這種增長已被用來提供指定品質(zhì)的所需用戶體驗。因此,組合使用CPU和GPU來執(zhí)行具有數(shù)據(jù)并行內(nèi)容的工作量正在成為一項體積技術(shù)(volumetechnology)。然而,GPU傳統(tǒng)上已在約束程序設(shè)計環(huán)境中進行操作,其可主要用于圖形的加速。這些約束由以下事實而引起:GPU并不具有與CPU一樣豐富的程序設(shè)計生態(tài)系統(tǒng)。因此,它們的使用已主要限于二維(2D)和三維(3D)圖形以及少數(shù)前沿的多媒體應(yīng)用,這些多媒體應(yīng)用已被習慣地用于處理圖形和視頻應(yīng)用程序設(shè)計接口(API)。隨著多廠商支持的和標準API和支持工具的出現(xiàn),GPU在傳統(tǒng)應(yīng)用中的限制已被擴展到傳統(tǒng)圖形的范圍之外。雖然OpenCL和DirectCompute是有希望的開端,但是在創(chuàng)建允許將CPU和GPU組合來像CPU一樣流暢地用于大多數(shù)程序設(shè)計任務(wù)的環(huán)境和生態(tài)系統(tǒng)方面仍存在著許多障礙。現(xiàn)有的計算系統(tǒng)常常包括多個處理裝置。例如,一些計算系統(tǒng)包括在獨立芯片上的CPU和GPU(例如,CPU可能位于母板上,而GPU可能位于圖形卡上)或在單個芯片封裝中的CPU和GPU。然而,這兩種布置仍包括與以下各項相關(guān)的重大挑戰(zhàn):(i)獨立的存儲系統(tǒng)、(ii)有效調(diào)度、(iii)提供進程之間的服務(wù)質(zhì)量(QoS)保證、(iv)程序設(shè)計模型以及(v)編譯至多個目標指令集體系結(jié)構(gòu)(ISA)—全部都要同時使功耗降到最小。例如,離散的芯片布置迫使系統(tǒng)和軟件體系結(jié)構(gòu)設(shè)計者利用芯片間接口來使每一個處理器存取存儲器。雖然這些外部接口(例如,芯片間接口)對用于配合異構(gòu)型處理器的存儲器等待時間和功耗具有負效應(yīng),但是獨立的存儲系統(tǒng)(即,獨立的地址空間)和驅(qū)動器管理的共享存儲器產(chǎn)生開銷,所述開銷對細粒卸荷(finegrainoffload)來說變得不可接受。離散芯片布置和單芯片布置兩者都會限制能夠發(fā)送至GPU來執(zhí)行的命令的類型。舉例來說,常常無法將計算命令(例如,物理或人工智能命令)發(fā)送至GPU來執(zhí)行。存在這個限制是因為CPU可能相對快速地需要由這些計算命令執(zhí)行的操作的結(jié)果。然而,由于當前系統(tǒng)中的向GPU分派工作的高開銷以及這些命令可能必須排隊等候首先執(zhí)行其它先前發(fā)出的命令的事實,所以將計算命令發(fā)送至GPU所引發(fā)的等待時間常常是不可接受的。將GPU用于計算卸荷所面臨的額外困難在于開發(fā)者可用以與GPU形成接口并且提供工作的軟件工具。許多現(xiàn)存的軟件工具被記住設(shè)計成具有GPU的圖形能力,并且因此缺乏容易地向GPU提供非圖形工作的能力。
技術(shù)實現(xiàn)要素:因此,所需要的是對GPU計算資源的可訪問性的改進的支持。雖然GPU、加速處理單元(APU)以及通用用途的圖形處理單元(GPGPU)是這個領(lǐng)域中常用的術(shù)語,但是表述“加速處理設(shè)備(APD)”被認為是更廣義的表述。例如,APD是指硬件和/或軟件的任何配合集合,與常規(guī)CPU、常規(guī)GPU、軟件和/或其組合相比,所述任何配合集合以加速方式完成與加速圖形處理任務(wù)、數(shù)據(jù)并行任務(wù)或嵌套數(shù)據(jù)并行任務(wù)相關(guān)的那些功能和計算。本發(fā)明的各種實施方案包括一種用于經(jīng)由內(nèi)核模式驅(qū)動器為應(yīng)用程序分配APD工作隊列、為所述應(yīng)用程序分配計算進程控制塊的方法和設(shè)備。計算進程控制塊包括對工作隊列的引用。所述方法和設(shè)備還包括由調(diào)度器選擇計算進程控制塊來執(zhí)行,并且將來自由所述計算進程控制塊所引用的工作隊列的命令分派給APD。以下參照附圖詳細地描述本發(fā)明的額外特征和優(yōu)點,連同本發(fā)明的各種實施方案的結(jié)構(gòu)和操作。應(yīng)該指出,本發(fā)明不限于本文所描述的具體實施方案。本文所提出的這類實施方案僅用于說明性目的?;诒疚乃ǖ慕塘x,一個或多個相關(guān)領(lǐng)域的技術(shù)人員將會明白額外的實施方案。附圖說明并入本文并且形成本說明書的一部分的附圖示出本發(fā)明的實施方案,并且與描述一起,進一步用于解釋本發(fā)明的原理并且用于使相關(guān)領(lǐng)域技術(shù)人員能夠制作并使用本發(fā)明。圖1A是根據(jù)本發(fā)明的實施方案的處理系統(tǒng)的說明性方框圖。圖1B是圖1A中所示的APD的說明性方框圖。圖2是圖1B中所示的APD的較詳細方框圖。圖3示出依賴于內(nèi)核模式驅(qū)動器來向APD提交命令的數(shù)據(jù)流模型。圖4示出將圖3的數(shù)據(jù)流模型的概念應(yīng)用于示例性Windows環(huán)境的額外數(shù)據(jù)流模型。圖5示出根據(jù)本發(fā)明的實施方案的系統(tǒng)堆棧的示例性部件。圖6示出根據(jù)本發(fā)明的實施方案的示例性數(shù)據(jù)流模型。圖7示出根據(jù)本發(fā)明的實施方案的在運行時的體系結(jié)構(gòu)的系統(tǒng)概觀。圖8是根據(jù)本發(fā)明的實施方案的示出對應(yīng)用程序進行初始化的步驟的流程圖。圖9是示出應(yīng)用程序提供命令來由APD執(zhí)行的步驟的流程圖。圖10是根據(jù)本發(fā)明的實施方案的示出調(diào)度器調(diào)度APD命令的處理的步驟的流程圖。圖11是根據(jù)本發(fā)明的實施方案的示出在上下文切換中保存執(zhí)行狀態(tài)的步驟的流程圖。圖12是根據(jù)本發(fā)明的實施方案的示出基于軟件的調(diào)度器能夠向基于硬件的調(diào)度器提供引導(dǎo)的步驟的流程圖。下文中參照附圖詳細地描述本發(fā)明的另外特征和優(yōu)點以及本發(fā)明的各種實施方案的結(jié)構(gòu)和操作。應(yīng)注意,本發(fā)明不限于本文所描述的具體實施方案。本文中僅出于說明性目的來呈現(xiàn)這些實施方案。相關(guān)領(lǐng)域技術(shù)人員將基于本文中所含有的教義而明白額外實施方案。具體實施方式在以下詳述中,對“一個實施方案”、“實施方案”、“示例實施方案”等的參考指示所描述的實施方案可以包括具體特征、結(jié)構(gòu)或特點,但是每個實施方案可能并沒有必要包括所述具體特征、結(jié)構(gòu)或特點。此外,這類短語沒有必要是指同一實施方案。另外,當結(jié)合一個實施方案描述具體特征、結(jié)構(gòu)或特點時,所主張的是本領(lǐng)域技術(shù)人員知道結(jié)合無論是否被明確地描述的其它實施方案來實現(xiàn)這種特征、結(jié)構(gòu)或特點。術(shù)語“本發(fā)明的實施方案”不要求本發(fā)明的所有實施方案都包括所論述的特征、優(yōu)點或操作模式。在不脫離本發(fā)明的范圍的情況下,可以設(shè)計出替代實施方案,并且可能并未詳細描述或可能省略本發(fā)明的眾所周知的元件,以免模糊本發(fā)明的相關(guān)細節(jié)。另外,本文所使用的術(shù)語僅出于描述具體實施方案的目的,而并不意圖限制本發(fā)明。例如,如本文所使用,單數(shù)形式的“一個(種)”以及“所述”也意圖包括復(fù)數(shù)形式,除非上下文另有明確指示。還將進一步理解的是,術(shù)語“包括”、“包括了”、“包含”和/或“包含了”在本文中使用時指明所陳述的特征、整體、步驟、操作、元件和/或部件的存在,但是并不排除一個或多個其它特征、整體、步驟、操作、元件、部件和/或其群組的存在或添加。圖1A是包括兩個處理器(即,CPU102和APD104)的統(tǒng)一計算系統(tǒng)100的示例性圖解。CPU102可以包括一個或多個單核或多核CPU。在本發(fā)明的一個實施方案中,系統(tǒng)100被形成在單個硅芯片或封裝上,組合CPU102和APD104以提供統(tǒng)一的程序設(shè)計和執(zhí)行環(huán)境。這個環(huán)境使得APD104能夠像CPU102一樣流暢地用于一些程序設(shè)計任務(wù)。然而,CPU102和APD104被形成在單個硅芯片上并不是本發(fā)明的絕對要求。在一些實施方案中,CPU和APD有可能被單獨地形成并且被安裝在相同或不同的襯底上。在一個實施例中,系統(tǒng)100還包括存儲器106、操作系統(tǒng)108以及通信基礎(chǔ)設(shè)施109。以下更詳細地論述操作系統(tǒng)108和通信基礎(chǔ)設(shè)施109。系統(tǒng)100還包括內(nèi)核模式驅(qū)動器(KMD)110、軟件調(diào)度器(SWS)112,以及存儲器管理單元116,如輸入/輸出存儲器管理單元(IOMMU)。系統(tǒng)100的部件可以被實施為硬件、固件、軟件或其任何組合。本領(lǐng)域技術(shù)人員將會理解,除了圖1A中所示的實施方案中所示的各項之外,系統(tǒng)100可以包括一個或多個軟件、硬件以及固件部件,或與圖1A中所示的實施方案中所示的各項不同的一個或多個軟件、硬件以及固件部件。在一個實施例中,驅(qū)動器(如KMD110)典型地通過計算機總線或通信子系統(tǒng)來與裝置進行通信,硬件連接至所述計算機總線或通信子系統(tǒng)。當調(diào)用程序調(diào)用驅(qū)動器中的例程時,所述驅(qū)動器向裝置發(fā)出命令。一旦裝置將數(shù)據(jù)發(fā)送回到驅(qū)動器,所述驅(qū)動器就可以調(diào)用原始調(diào)用程序中的例程。在一個實施例中,驅(qū)動器是與硬件有關(guān)的并且是操作系統(tǒng)特定的。所述驅(qū)動器常常提供任何必要的異步的時間有關(guān)的硬件接口所需要的中斷處理。裝置驅(qū)動器,特別是在現(xiàn)代Microsoft平臺上的,能夠以內(nèi)核模式(環(huán)0)或以用戶模式(環(huán)3)進行運行。以用戶模式運行驅(qū)動器的主要益處是改進的穩(wěn)定性,因為寫入不良的用戶模式裝置驅(qū)動器不會通過蓋寫內(nèi)核存儲器來使系統(tǒng)崩潰。另一方面,用戶/內(nèi)核模式轉(zhuǎn)換常常強加相當大的性能開銷,從而針對短等待時間和高吞吐量要求禁止用戶模式驅(qū)動器。內(nèi)核空間可以由用戶模塊僅通過使用系統(tǒng)調(diào)用來存取。最終用戶程序,像UNIX操作系統(tǒng)外殼或其它基于GUI的應(yīng)用程序,是用戶空間的一部分。這些應(yīng)用程序通過內(nèi)核支持的功能來與硬件進行交互。CPU102可以包括(未圖示)控制處理器、現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)或數(shù)字信號處理器(DSP)中的一個或多個。例如,CPU102執(zhí)行控制計算系統(tǒng)100的操作的控制邏輯,所述控制邏輯包括操作系統(tǒng)108、KMD110、SWS112以及應(yīng)用程序111。在這個說明性實施方案中,根據(jù)一個實施方案,CPU102通過例如以下操作來發(fā)起并且控制應(yīng)用程序111的執(zhí)行:在CPU102和其它處理資源(如APD104)上分配與那個應(yīng)用程序相關(guān)的處理。尤其是APD104執(zhí)行用于所選定的功能的命令和程序,所述所選定的功能如圖形操作和可能例如特別適用于并行處理的其它操作。一般來說,APD104可以被頻繁地用于執(zhí)行圖形流水線操作(如像素操作、幾何計算),并且將圖像渲染至顯示器。在本發(fā)明的各種實施方案中,APD104還可以基于從CPU102所接收的命令或指令來執(zhí)行計算處理操作(例如,與圖形無關(guān)的那些操作,例如像視頻操作、物理模擬、計算流體動力學(xué)等)。例如,命令可以被認為是典型地不是定義在指令集體系結(jié)構(gòu)(ISA)中的特殊指令??梢酝ㄟ^特殊處理器(如分派處理器、命令處理器或網(wǎng)絡(luò)控制器)來執(zhí)行命令。另一方面,指令可以被認為是例如計算機體系結(jié)構(gòu)內(nèi)部的處理器的單一操作。在一個實施例中,當使用兩個ISA集時,一些指令被用于執(zhí)行x86程序,而一些指令被用于執(zhí)行APD計算單元上的內(nèi)核。在一個說明性實施方案中,CPU102將所選定的命令傳輸至APD104。這些所選定的命令可以包括圖形命令和服從并行執(zhí)行的其它命令??梢源笾律溪毩⒂贑PU102來執(zhí)行還可以包括計算處理命令在內(nèi)的這些所選定的命令。APD104可以包括其自己的計算單元(未圖示),如但不限于一個或多個SIMD處理核心。如本文所引用,SIMD是流水線或程序設(shè)計模型,其中通過每個處理元件自己的數(shù)據(jù)和共享的程序計數(shù)器,在多個處理元件中的每一個上同時地執(zhí)行內(nèi)核。所有處理元件執(zhí)行一個完全相同的指令集。預(yù)測的使用使得工作項目能夠參與或不參與每個所發(fā)出的命令。在一個實施例中,每個APD104計算單元可以包括一個或多個標量和/或向量浮點單元和/或算術(shù)邏輯單元(ALU)。APD計算單元還可以包括專用處理單元(未圖示),如反平方根單元和正弦/余弦單元。在一個實施例中,APD計算單元在本文中統(tǒng)稱為著色器核心122。一般來說,具有一個或多個SIMD使得APD104理想地適用于數(shù)據(jù)并行任務(wù)(如在圖形處理中常見的那些)的執(zhí)行。一些圖形流水線操作(如像素處理)和其它并行計算操作可能要求對輸入數(shù)據(jù)元素的流或集合執(zhí)行同一命令流或計算內(nèi)核。同一計算內(nèi)核的相應(yīng)實例化可以在著色器核心122中的多個計算單元上同時地執(zhí)行,以便并行地處理這類數(shù)據(jù)元素。如本文所引用,例如,計算內(nèi)核是含有在程序中陳述并且在APD計算單元上執(zhí)行的指令的功能。這個功能還被稱為內(nèi)核、著色器、著色器程序或程序。在一個說明性實施方案中,每個計算單元(例如,SIMD處理核心)可以執(zhí)行特定工作項目的相應(yīng)實例化來處理傳入數(shù)據(jù)。工作項目是由命令在裝置上所調(diào)用的內(nèi)核的并行執(zhí)行的集合中的一個。工作項目可以由一個或多個處理元件執(zhí)行為在計算單元上執(zhí)行的工作群組的一部分。工作項目通過其全局ID和局部ID來與所述集合內(nèi)的其它執(zhí)行區(qū)別開。在一個實施例中,一起同時在SIMD上執(zhí)行的工作群組中的工作項目子集可以被稱為波前136。波前的寬度是計算單元(例如,SIMD處理核心)的硬件的特點。如本文所引用,工作群組是在單一計算單元上執(zhí)行的相關(guān)工作項目的集合。群組中的工作項目執(zhí)行同一內(nèi)核并且共享本地存儲器和工作群組屏障。在示例性實施方案中,在同一SIMD處理核心上處理來自工作群組的所有波前。一次一個地發(fā)出波前上的指令,并且在所有工作項目遵循同一控制流時,每個工作項目執(zhí)行同一程序。波前還可以被稱為彎曲、向量或線程。執(zhí)行掩碼和工作項目預(yù)測用于使得發(fā)散的控制流能夠在一個波前內(nèi),其中每個單獨的工作項目實際上可以采取通過內(nèi)核的唯一的代碼路徑。當工作項目的全集不可在波前開始時間使用時,可以處理部分填充的波前。例如,著色器核心122可以同時執(zhí)行預(yù)定數(shù)量的波前136,每個波前136包括多個工作項目。在系統(tǒng)100內(nèi),APD104包括其自己的存儲器,如圖形存儲器130(但存儲器130不限于僅供圖形使用)。圖形存儲器130提供用于在APD104中進行計算期間使用的本地存儲器。著色器核心122內(nèi)的單獨計算單元(未圖示)可以具有其自己的本地數(shù)據(jù)儲存器(未圖示)。在一個實施方案中,APD104包括存取本地圖形存儲器130以及存取存儲器106。在另一個實施方案中,APD104可以包括存取動態(tài)隨機存取存儲器(DRAM)或直接附接至APD104并且與存儲器106分離的其它此類存儲器(未圖示)。在所示實施例中,APD104還包括一個或“n”數(shù)量個命令處理器(CP)124。CP124控制APD104內(nèi)的處理。CP124還從存儲器106中的命令緩沖區(qū)125檢索待執(zhí)行的命令,并且對這些命令在APD104上的執(zhí)行進行協(xié)調(diào)。在一個實施例中,CPU102將基于應(yīng)用程序111的命令輸入適當?shù)拿罹彌_區(qū)125中。如本文所引用,應(yīng)用程序是將在CPU和APD內(nèi)的計算單元上執(zhí)行的程序部分的組合。多個命令緩沖區(qū)125可以用被調(diào)度來在APD104上執(zhí)行的每個進程來維護。CP124可以用硬件、固件或軟件或其組合來實施。在一個實施方案中,CP124被實施為具有用于實施包括調(diào)度邏輯在內(nèi)的邏輯的微代碼的精簡指令集計算機(RISC)引擎。APD104還包括一個或“n”數(shù)量個分派控制器(DC)126。在本申請中,術(shù)語“分派”是指由分派控制器執(zhí)行的命令,所述分派控制器使用上下文狀態(tài)來為計算單元集合上的工作群組集合發(fā)起內(nèi)核的執(zhí)行的開始。DC126包括用以發(fā)起著色器核心122中的工作群組的邏輯。在一些實施方案中,DC126可以被實施為CP124的一部分。系統(tǒng)100還包括用于從運行列表150選擇進程以在APD104上執(zhí)行的硬件調(diào)度器(HWS)128。HWS128可以使用循環(huán)法、優(yōu)先級或基于其它調(diào)度策略來從運行列表150選擇進程。例如,可以動態(tài)地確定優(yōu)先級。HWS128還可以包括用以管理運行列表150的功能性,例如通過添加新的進程以及通過從運行列表150刪除現(xiàn)有進程來管理。HWS128的運行列表管理邏輯有時被稱為運行列表控制器(RLC)。在本發(fā)明的各種實施方案中,當HWS128發(fā)起執(zhí)行來自運行列表150的進程時,CP124開始從對應(yīng)的命令緩沖區(qū)125檢索并且執(zhí)行命令。在一些情況下,CP124可以生成待在APD104內(nèi)部執(zhí)行的一個或多個命令,這些命令對應(yīng)于從CPU102接收的命令。在一個實施方案中,CP124與其它部件一起對APD104上的命令進行區(qū)分優(yōu)先次序并且調(diào)度,其方式為改進或最大化對APD104資源和/或系統(tǒng)100的資源的利用率。APD104可以存取或可以包括中斷生成器146。中斷生成器146可以由APD104配置來在APD104遇到如頁面錯誤等中斷事件時中斷操作系統(tǒng)108。例如,APD104可以依賴于IOMMU116內(nèi)的中斷生成邏輯來產(chǎn)生以上所指出的頁面錯誤中斷。APD104還可以包括用于搶先取得當前正在著色器核心122內(nèi)運行的一個進程的搶先和上下文切換邏輯120。例如,上下文切換邏輯120包括用以停止所述進程并且保存其當前狀態(tài)(例如,著色器核心122狀態(tài)和CP124狀態(tài))的功能性。如本文所引用,術(shù)語“狀態(tài)”可以包括初始狀態(tài)、中間狀態(tài)和/或最終狀態(tài)。初始狀態(tài)是機器根據(jù)程序設(shè)計次序處理輸入數(shù)據(jù)集以產(chǎn)生數(shù)據(jù)輸出集合的開始點。存在例如需要在幾個點處被存儲以使得處理能夠向前進的中間狀態(tài)。這個中間狀態(tài)有時被存儲來允許當由某一其它進程中斷時在稍后時間處繼續(xù)執(zhí)行。還存在可以被記錄為輸出數(shù)據(jù)集的一部分的最終狀態(tài)。搶先和上下文切換邏輯120還可以包括用以將另一個進程上下文切換至APD104中的邏輯。用以將另一個進程上下文切換成在APD104上運行的功能性可以包括例如通過CP124和DC126來實例化所述進程以在APD104上運行,為這個進程恢復(fù)任何先前保存的狀態(tài),并且開始其執(zhí)行。存儲器106可以包括非永久性存儲器,如DRAM(未圖示)。存儲器106可以在執(zhí)行應(yīng)用程序或其它處理邏輯的若干部分期間存儲例如處理邏輯指令、常量值以及變量值。例如,在一個實施方案中,用以在CPU102上執(zhí)行一個或多個操作的控制邏輯的若干部分可以在由CPU102執(zhí)行操作的相應(yīng)部分期間駐留在存儲器106內(nèi)。在執(zhí)行期間,相應(yīng)的應(yīng)用程序、操作系統(tǒng)功能、處理邏輯命令以及系統(tǒng)軟件可以駐留在存儲器106中。對操作系統(tǒng)108很重要的控制邏輯命令在執(zhí)行期間通常將駐留在存儲器106中。包括例如內(nèi)核模式驅(qū)動器110和軟件調(diào)度器112在內(nèi)的其它軟件命令在系統(tǒng)100的執(zhí)行期間也可以駐留在存儲器106中。在這個實施例中,存儲器106包括由CPU102使用來將命令發(fā)送到APD104的命令緩沖區(qū)125。存儲器106還包括進程列表和進程信息(例如,活動列表152和進程控制塊154)。這些列表以及信息由在CPU102上執(zhí)行的調(diào)度軟件使用來將調(diào)度信息傳遞至APD104和/或相關(guān)調(diào)度硬件。存取存儲器106可以由耦合到存儲器106的存儲器控制器140管理。例如,來自CPU102或來自其它裝置的對從存儲器106讀取或?qū)懭氪鎯ζ?06的請求由所述存儲器控制器140管理。轉(zhuǎn)回參看系統(tǒng)100的其它方面,IOMMU116是一個多上下文存儲器管理單元。如本文所使用,上下文可以認為是內(nèi)核在其中執(zhí)行的環(huán)境和在其中定義同步與存儲器管理的領(lǐng)域。上下文包括裝置集合、可由這些裝置存取的存儲器、對應(yīng)的存儲器特性以及用來調(diào)度一個或多個內(nèi)核的執(zhí)行或在存儲器對象上的操作的一個或多個命令隊列。轉(zhuǎn)回參看圖1A中所示的實施例,IOMMU116包括用以執(zhí)行用于包括APD104在內(nèi)的裝置的存儲器頁面存取的虛擬至物理地址翻譯的邏輯。IOMMU116還可以包括用以生成中斷的邏輯,例如當由如APD104等裝置的頁面存取導(dǎo)致頁面錯誤時生成中斷。IOMMU116還可以包括或能夠存取翻譯旁視緩沖區(qū)(TLB)118。作為實例,TLB118可以在內(nèi)容可尋址存儲器(CAM)中實施,以便應(yīng)由APD104對存儲器106中的數(shù)據(jù)所做出的請求而加速邏輯(即,虛擬)存儲器地址至物理存儲器地址的翻譯。在所示實施例中,通信基礎(chǔ)設(shè)施109視需要互連系統(tǒng)100的部件。通信基礎(chǔ)設(shè)施109可以包括(未圖示)外圍部件互連(PCI)總線、擴展的PCI(PCI-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的部件在內(nèi)的部件的功能性。在這個實施例中,操作系統(tǒng)108包括用以管理系統(tǒng)100的硬件部件以及用以提供常見服務(wù)的功能性。在各種實施方案中,操作系統(tǒng)108可以在CPU102上執(zhí)行,并且提供常見服務(wù)。這些常見服務(wù)可以包括例如調(diào)度用于在CPU102內(nèi)部執(zhí)行的應(yīng)用程序、錯誤管理、中斷服務(wù)以及處理其它應(yīng)用程序的輸入和輸出。在一些實施方案中,基于由如中斷控制器148的中斷控制器生成的中斷,操作系統(tǒng)108調(diào)用適當?shù)闹袛嗵幚砝獭@?,在檢測到頁面錯誤中斷之后,操作系統(tǒng)108可以即刻調(diào)用中斷處理程序來起始將相關(guān)頁面加載到存儲器106中,并且更新對應(yīng)頁面表。操作系統(tǒng)108還可以包括用以通過確保以下操作來保護系統(tǒng)100的功能性:存取硬件部件是通過操作系統(tǒng)管理的內(nèi)核功能性來進行調(diào)解。事實上,操作系統(tǒng)108確保了應(yīng)用程序(如應(yīng)用程序111)在用戶空間中在CPU102上運行。操作系統(tǒng)108還確保了應(yīng)用程序111調(diào)用由操作系統(tǒng)提供的內(nèi)核功能性,以便存取硬件和/或輸入/輸出功能性。舉例來說,應(yīng)用程序111包括用以執(zhí)行用戶計算的各種程序或命令,這些用戶計算也在CPU102上執(zhí)行。CPU102能夠無縫地發(fā)送所選定的命令以用于在APD104上處理。在一個實施例中,KMD110實施應(yīng)用程序設(shè)計接口(API),通過所述應(yīng)用程序設(shè)計接口,CPU102或在CPU102上執(zhí)行的應(yīng)用程序或其它邏輯可以調(diào)用APD104功能性。例如,KMD110可以使來自CPU102的命令排隊到命令緩沖區(qū)125,APD104隨后將從命令緩沖區(qū)檢索這些命令。此外,KMD110可以與SWS112一起執(zhí)行待在APD104上執(zhí)行的進程的調(diào)度。例如,SWS112可以包括用以維護待在APD上執(zhí)行的進程的已區(qū)分優(yōu)先次序的列表的邏輯。在本發(fā)明的其它實施方案中,在CPU102上執(zhí)行的應(yīng)用程序可以在對命令進行排隊時完全繞過KMD110。在一些實施方案中,SWS112維護待在APD104上執(zhí)行的進程的在存儲器106中的活動列表152。SWS112還在活動列表152中選擇進程子集來由硬件中的HWS128管理。關(guān)于在APD104上運行每個進程的信息通過進程控制塊(PCB)154而從CPU102傳遞至APD104。用于應(yīng)用程序、操作系統(tǒng)以及系統(tǒng)軟件的處理邏輯可以包括在如C語言的程序設(shè)計語言中和/或如Verilog、RTL或網(wǎng)表的硬件描述語言中指定的命令,以便使得能夠最終通過掩模作品(maskwork)/光掩模的產(chǎn)生而配置制造過程,從而生產(chǎn)體現(xiàn)本文所描述的本發(fā)明的方面的硬件裝置。本領(lǐng)域技術(shù)人員在閱讀本描述后將了解,計算系統(tǒng)100可以包括比圖1A中所示更多或更少的部件。例如,計算系統(tǒng)100可以包括一個或多個輸入接口、非易失性儲存器、一個或多個輸出接口、網(wǎng)絡(luò)接口以及一個或多個顯示器或顯示器接口。圖1B為示出圖1A中所示的APD104的更詳細的圖解的實施方案。在圖1B中,CP124可以包括CP流水線124a、124b以及124c。CP124可以被配置來處理命令列表,這些命令列表被提供為來自圖1A中所示的命令緩沖區(qū)125的輸入。在圖1B的示例性操作中,CP輸入0(124a)負責將命令驅(qū)動到圖形流水線162中。CP輸入1和2(124b和124c)將命令轉(zhuǎn)發(fā)到計算流水線160。還提供了用于控制HWS128的操作的控制器機構(gòu)166。在圖1B中,圖形流水線162可以包括塊集合,本文稱為有序流水線164。作為一個實例,有序流水線164包括頂點群組翻譯器(VGT)164a、圖元匯編器(PA)164b、掃描變換器(SC)164c以及著色器輸出后期渲染單元(SX/RB)176。有序流水線164內(nèi)的每個塊可以表示圖形流水線162內(nèi)的不同圖形處理級。有序流水線164可以是固定功能硬件流水線??梢允褂靡矊⒃诒景l(fā)明的精神和范圍內(nèi)的其它實施方式。盡管只有少量數(shù)據(jù)可以被提供為到圖形流水線162的輸入,但這些數(shù)據(jù)將在被提供為從圖形流水線162的輸出時被放大。圖形流水線162還包括用于在從CP流水線124a接收的工作項目群組內(nèi)的整個范圍中進行計數(shù)的DC166。通過DC166提交的計算工作與圖形流水線162是半同步的。計算流水線160包括著色器DC168和170。所述DC168和170中的每一個被配置來在從CP流水線124b和124c接收的工作群組內(nèi)的整個計算范圍中進行計數(shù)。在圖1B中示出的DC166、168以及170接收輸入范圍,將這些范圍分解成工作群組,然后將這些工作群組轉(zhuǎn)發(fā)到著色器核心122。由于圖形流水線162通常是固定功能流水線,因而難以保存并恢復(fù)其狀態(tài),并且因此,圖形流水線162難以進行上下文切換。因此,在大多數(shù)情況下,如本文所論述,上下文切換不涉及在圖形進程之間進行上下文切換。一個例外是對于在著色器核心122中的圖形工作,它可以進行上下文切換。在圖形流水線162內(nèi)部的工作處理已經(jīng)完成之后,通過后期渲染單元176處理所完成的工作,所述后期渲染單元進行深度和色彩計算,并且然后將其最終結(jié)果寫入存儲器130。著色器核心122可以由圖形流水線162和計算流水線160共享。著色器核心122可以是被配置來運行波前的一般處理器。在一個實施例中,在計算流水線160內(nèi)部的所有工作是在著色器核心122中進行處理的。著色器核心122運行可編程的軟件代碼,并且包括各種形式的數(shù)據(jù),例如狀態(tài)數(shù)據(jù)。當所有工作項目都不能夠訪問APD資源時出現(xiàn)QoS破壞。本發(fā)明的實施方案促進有效地并且同時地向APD104內(nèi)的資源發(fā)射兩個或更多個任務(wù),從而使得所有工作項目能夠訪問各種APD資源。在一個實施方案中,APD輸入方案通過管理APD的工作負荷來使得所有工作項目能夠并行訪問APD資源。當APD的工作負荷接近最高水平時(例如...