欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

計算任務(wù)的調(diào)度和執(zhí)行的制作方法

文檔序號:6398075閱讀:394來源:國知局
專利名稱:計算任務(wù)的調(diào)度和執(zhí)行的制作方法
技術(shù)領(lǐng)域
本發(fā)明大體涉及計算任務(wù),并且更具體地,涉及計算任務(wù)的調(diào)度和執(zhí)行。
背景技術(shù)
用于在多處理器系統(tǒng)中執(zhí)行的計算任務(wù)的常規(guī)調(diào)度依賴于應(yīng)用程序或驅(qū)動程序。在計算任務(wù)的執(zhí)行期間,允許驅(qū)動程序調(diào)度計算任務(wù)而所需的驅(qū)動程序和多處理器之間的交互可能延遲計算任務(wù)的執(zhí)行。因此,本領(lǐng)域需要的是用于基于處理資源和可用計算任務(wù)的優(yōu)先級來動態(tài)調(diào)度計算任務(wù)用于執(zhí)行的系統(tǒng)和方法。重要的是,調(diào)度機制不應(yīng)取決于或要求軟件或驅(qū)動程序交互。

發(fā)明內(nèi)容
本發(fā)明的一個實施例闡述了用于選擇包括在多個處理器中的第一處理器以接收與計算任務(wù)相關(guān)的工作的方法。該方法涉及分析多個處理器中的每個處理器的狀態(tài)數(shù)據(jù)以識別已經(jīng)被指派一個計算任務(wù)并且有資格接收與所述一個計算任務(wù)相關(guān)的工作的一個或多個處理器,從識別為有資格的所述一個或多個處理器中的每一個接收指示處理器接收新任務(wù)的能力的可用性值,基于從所述一個或多個處理器所接收的可用性值來選擇第一處理器以接收與所述一個計算任務(wù)相關(guān)的工作,并且經(jīng)由協(xié)作線程陣列(CTA)將與所述一個計算任務(wù)相關(guān)的工作發(fā)出給第一處理器。本發(fā)明的另一個實施例闡述了用于將計算任務(wù)指派給包括在多個處理器中的第一處理器的方法。該方法涉及分析多個計算任務(wù)中的每個計算任務(wù)來識別有資格用于指派給第一處理器的一個或多個計算任務(wù),其中每個計算任務(wù)均在第一表中列出,并且與優(yōu)先級值和指示將所述計算任務(wù)添加到第一表的時間的分配順序相關(guān)聯(lián)。該技術(shù)進一步涉及基于優(yōu)先級值和分配順序中的至少一個來從所識別的一個或多個計算任務(wù)中選擇第一計算任務(wù),并且將第一計算任務(wù)指派給第一處理器用于執(zhí)行。進一步的實施例提供了非暫時性計算機可讀介質(zhì)和計算機系統(tǒng)以實現(xiàn)上述所闡述的各個方法。


因此,可以詳細地理解本發(fā)明的上述特征,并且可以參考實施例得到對如上面所簡要概括的本發(fā)明更具體的描述,其中一些實施例在附圖中示出。然而,應(yīng)當注意的是,附圖僅示出了本發(fā)明的典型實施例,因此不應(yīng)被認為是對其范圍的限制,本發(fā)明可以具有其他等效的實施例。圖1是示出了配置為實現(xiàn)本發(fā)明的一個或多個方面的計算機系統(tǒng)的框圖。圖2是根據(jù)本發(fā)明的一個實施例的,用于圖1的計算機系統(tǒng)的并行處理子系統(tǒng)的框圖。
圖3A是根據(jù)本發(fā)明的一個實施例的,圖2的任務(wù)/工作單元的框圖。圖3B是根據(jù)本發(fā)明的一個實施例的,在圖2的并行處理單元之一內(nèi)的通用處理集群的框圖。圖3C是根據(jù)本發(fā)明的一個實施例的,圖3B的流多處理器的一部分的框圖。圖4A-4B示出了根據(jù)本發(fā)明的一個實施例的,用于將任務(wù)指派給圖3A-3C的流多處理器(SM)的方法。圖5示出了根據(jù)本發(fā)明的一個實施例的,用于選擇SM以接收與任務(wù)相關(guān)的工作的方法。
具體實施例方式在下面的描述中,將闡述大量的特定細節(jié)以提供對本發(fā)明更透徹的理解。然而,本領(lǐng)域的技術(shù)人員應(yīng)該清楚,本發(fā)明可以在沒有一個或多個這些特定細節(jié)的情況下得以實施。系統(tǒng)概述圖1為示出了配置為實現(xiàn)本發(fā)明的一個或多個方面的計算機系統(tǒng)100的框圖。計算機系統(tǒng)100包括中央處理單元(CPU) 102和經(jīng)由可以包括存儲器橋105的互連路徑通信的系統(tǒng)存儲器104。存儲器橋105可以是例如北橋芯片,經(jīng)由總線或其他通信路徑106 (例如超傳輸(HyperTransport)鏈路)連接到I/O(輸入/輸出)橋107。I/O橋107,其可以是例如南橋芯片,從一個或多個用戶輸入設(shè)備108 (例如鍵盤、鼠標)接收用戶輸入并且經(jīng)由通信路徑106和存儲器橋105將所述輸入轉(zhuǎn)發(fā)到CPU102。并行處理子系統(tǒng)112經(jīng)由總線或第二通信路徑113 (例如外圍部件互連(PCDExpress、加速圖形端口或超傳輸鏈路)耦合到存儲器橋105 ;在一個實施例中,并行處理子系統(tǒng)112是將像素傳遞到顯示設(shè)備110(例如傳統(tǒng)的基于陰極射線管或液晶顯示器的監(jiān)視器)的圖形子系統(tǒng)。系統(tǒng)盤114也連接到I/O橋107。交換器116提供I/O橋107與諸如網(wǎng)絡(luò)適配器118以及各種插卡120和121的其他部件之間的連接。其他部件(未明確示出),包括通用串行總線(USB)或其他端口連接、壓縮磁盤(CD)驅(qū)動器、數(shù)字視頻光盤(DVD)驅(qū)動器、膠片錄制設(shè)備及類似部件,也可以連接到I/O橋107。圖1所示的各種通信路徑包括特殊命名的通信路徑106和113可以使用任何適合的協(xié)議實現(xiàn),諸如PC1-Express、AGP (加速圖形端口)、超傳輸或者任何其他總線或點到點通信協(xié)議,并且如本領(lǐng)域已知的,不同設(shè)備間的連接可使用不同協(xié)議。在一個實施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于圖形和視頻處理的電路,包括例如視頻輸出電路,并且構(gòu)成圖形處理單元(GPU)。在另一個實施例中,并行處理子系統(tǒng)112包含經(jīng)優(yōu)化用于通用處理的電路,同時保留底層(underlying)的計算架構(gòu),本文將更詳細地進行描述。在又一個實施例中,可以將并行處理子系統(tǒng)112與一個或多個其他系統(tǒng)元件集成在單個子系統(tǒng)中,諸如結(jié)合存儲器橋105、CPU102以及I/O橋107,以形成片上系統(tǒng)(SoC)。應(yīng)該理解,本文所示系統(tǒng)是示例性的,并且變化和修改都是可能的。連接拓撲,包括橋的數(shù)量和布置、CPU102的數(shù)量以及并行處理子系統(tǒng)112的數(shù)量,可根據(jù)需要修改。例如,在一些實施例中,系統(tǒng)存儲器104直接連接到CPU102而不是通過橋,并且其他設(shè)備經(jīng)由存儲器橋105和CPU102與系統(tǒng)存儲器104通信。在其他替代性拓撲中,并行處理子系統(tǒng)112連接到I/O橋107或直接連接到CPU102,而不是連接到存儲器橋105。而在其他實施例中,I/O橋107和存儲器橋105可能被集成到單個芯片上而不是作為一個或多個分立設(shè)備存在。大型實施例可以包括兩個或兩個以上的CPU102以及兩個或兩個以上的并行處理系統(tǒng)112。本文所示的特定部件是可選的;例如,任意數(shù)量的插卡或外圍設(shè)備都可能得到支持。在一些實施例中,交換器116被去掉,網(wǎng)絡(luò)適配器118和插卡120、121直接連接到I/O橋107。圖2示出了根據(jù)本發(fā)明一個實施例的并行處理子系統(tǒng)112。如圖所示,并行處理子系統(tǒng)112包括一個或多個并行處理單元(PPU) 202,每個并行處理單元202都耦合到本地并行處理(PP)存儲器204。通常,并行處理子系統(tǒng)包括U個PPU,其中U彡I。(本文中,類似對象的多個實體以標識該對象的參考數(shù)字和需要時標識所述實體的括號中的數(shù)字來表示。)PPU202和并行處理存儲器204可使用一個或多個集成電路設(shè)備來實現(xiàn),諸如可編程處理器、專用集成電路(ASIC)或存儲器設(shè)備,或者以任何其他技術(shù)可行的方式來實現(xiàn)。再參考圖1以及圖2,在一些實施例中,并行處理子系統(tǒng)112中的一些或所有PPU202是具有渲染管線的圖形處理器,它可以配置為實施與下述相關(guān)的各種操作:經(jīng)由存儲器橋105和第二通信路徑113從CPU102和/或系統(tǒng)存儲器104所提供的圖形數(shù)據(jù)生成像素數(shù)據(jù),與本地并行處理存儲器204(可被用作圖形存儲器,包括例如常用幀緩沖區(qū)(buffer))交互以存儲和更新像素數(shù)據(jù),傳遞像素數(shù)據(jù)到顯示設(shè)備110等等。在一些實施例中,并行處理子系統(tǒng)112可包括一個或多個作為圖形處理器而操作的PPU202以及包括一個或多個用于通用計算的其他PPU202。這些PPU可以是相同的或不同的,并且每個PTO均可具有專用并行處理存儲器設(shè)備或不具有專用的并行處理存儲器設(shè)備。并行處理子系統(tǒng)112中的一個或多個PPU202可輸出數(shù)據(jù)到顯示設(shè)備110,或者并行處理子系統(tǒng)112中的每個PPU202均可輸出數(shù)據(jù)到一個或多個顯示設(shè)備110。在操作中,CPU102是計算機系統(tǒng)100的主處理器,控制和協(xié)調(diào)其他系統(tǒng)部件的操作。具體地,CPU102發(fā)出控制PPU202的操作的命令。在一些實施例中,CPU102為每個PPU202寫入命令流到數(shù)據(jù)結(jié)構(gòu)中(在圖1或圖2中未明確示出),所述數(shù)據(jù)結(jié)構(gòu)可位于系統(tǒng)存儲器104、并行處理存儲器204、或CPU102和PPU202都可訪問的其他存儲位置中。將指向每個數(shù)據(jù)結(jié)構(gòu)的指針寫到入棧緩沖區(qū)(pushbuffer)以發(fā)起對數(shù)據(jù)結(jié)構(gòu)中的命令流的處理。PPU202從一個或多個入棧緩沖區(qū)讀取命令流,然后相對于CPU102的操作異步地執(zhí)行命令??梢越?jīng)由設(shè)備驅(qū)動程序103由應(yīng)用程序為每個入棧緩沖區(qū)指定執(zhí)行優(yōu)先級以控制對不同入棧緩沖區(qū)的調(diào)度?,F(xiàn)在返回參考圖2和圖1,每個PPU202均包括經(jīng)由連接到存儲器橋105 (或者,在一個替代性實施例中,直接連接到CPU102)的通信路徑113與計算機系統(tǒng)100的其余部分通信的1/0(輸入/輸出)單元205。PPU202到計算機系統(tǒng)100的其余部分的連接也可以變化。在一些實施例中,并行處理子系統(tǒng)112可作為插卡來實現(xiàn),所述插卡可被插入到計算機系統(tǒng)100的擴展槽中。在其他實施例中,PPU202可以和諸如存儲器橋105或I/O橋107的總線橋一起集成在單個芯片上。而在其他實施例中,PPU202的一些或所有元件可以和CPU102 一起集成在單個芯片上。
在一個實施例中,通信路徑113是PC1-EXPRESS鏈路,如本領(lǐng)域所知的,其中專用通道被分配到每個PPU202。也可以使用其他通信路徑。I/O單元205生成用于在通信路徑113上傳輸?shù)臄?shù)據(jù)包(或其他信號),并且還從通信路徑113接收所有傳入的數(shù)據(jù)包(或其他信號),將傳入的數(shù)據(jù)包引導(dǎo)到PPU202的適當部件。例如,可將與處理任務(wù)相關(guān)的命令引導(dǎo)到主機接口 206,而可將與存儲器操作相關(guān)的命令(例如,對并行處理存儲器204的讀取或?qū)懭?引導(dǎo)到存儲器交叉開關(guān)單元210。主機接口 206讀取每個入棧緩沖區(qū),并且將存儲在入棧緩沖區(qū)中的命令流輸出到前端212。有利地,每個PPU202都實現(xiàn)高度并行處理架構(gòu)。如詳細示出的,PPU202(0)包括處理集群陣列230,該陣列230包括C個通用處理集群(GPC) 208,其中C彡I。每個GPC208都能夠并發(fā)執(zhí)行大量的(例如,幾百或幾千)線程,其中每個線程均是程序的實例(instance)。在各種應(yīng)用中,可分配不同的GPC208用于處理不同類型的程序或用于執(zhí)行不同類型的計算。取決于因每種類型的程序或計算所產(chǎn)生的工作量,GPC208的分配可以變化。GPC208從任務(wù)/工作單元207內(nèi)的工作分布單元接收所要執(zhí)行的處理任務(wù)。所述工作分布單元接收指向編碼為任務(wù)元數(shù)據(jù)(TMD)并存儲在存儲器中的處理任務(wù)的指針。指向TMD的指針包括在存儲為入棧緩沖區(qū)并由前端單元212從主機接口 206接收的命令流中??杀痪幋a為TMD的處理任務(wù)可包括在所要處理的數(shù)據(jù)陣列內(nèi)的索引,以及定義數(shù)據(jù)將被如何處理(例如,什么程序?qū)⒈粓?zhí)行)的狀態(tài)參數(shù)和命令。任務(wù)/工作單元207從前端212接收任務(wù)并確保在每一個TMD所指定的處理發(fā)起前,將GPC208配置為有效狀態(tài)??梢詾槊總€TMD指定用來調(diào)度處理任務(wù)的執(zhí)行的優(yōu)先級。還可從處理集群陣列230接收處理任務(wù)。可選地,TMD可包括控制是否將TMD添加到處理任務(wù)列表(或指向處理任務(wù)的指針列表)的頭部或尾部的參數(shù),從而提供除優(yōu)先級以外的另一級別的控制。存儲器接口 214包括D個分區(qū)單元215,每個分區(qū)單元215均直接耦合到一部分并行處理存儲器204,其中D > I。如所示的,分區(qū)單元215的數(shù)量一般等于動態(tài)隨機存取存儲器(DRAM) 220的數(shù)量。在其他 實施例中,分區(qū)單元215的數(shù)量也可以不等于存儲器設(shè)備的數(shù)量。本領(lǐng)域的技術(shù)人員應(yīng)該理解DRAM220可以用其他合適的存儲設(shè)備來替代并且可以是一般常規(guī)的設(shè)計。因此省略了詳細描述。諸如幀緩沖區(qū)或紋理映射圖的渲染目標可以跨DRAM220加以存儲,這允許分區(qū)單元215并行寫入每個渲染目標的各部分以有效地使用并行處理存儲器204的可用帶寬。任意一個GPC208都可以處理要被寫到并行處理存儲器204內(nèi)的任意DRAM220的數(shù)據(jù)。交叉開關(guān)單元210配置為路由每個GPC208的輸出到任意分區(qū)單元215的輸入或到另一個GPC208用于進一步處理。GPC208通過交叉開關(guān)單元210與存儲器接口 214通信,以對各種外部存儲器設(shè)備進行讀取或?qū)懭搿T谝粋€實施例中,交叉開關(guān)單元210具有到存儲器接口 214的連接以和I/O單元205通信,以及到本地并行處理存儲器204的連接,從而使得在不同GPC208內(nèi)的處理內(nèi)核能夠與系統(tǒng)存儲器104或?qū)τ赑PU202而言非本地的其他存儲器通信。在圖2所示的實施例中,交叉開關(guān)單元210直接與I/O單元205連接。交叉開關(guān)單元210可使用虛擬信道來分開GPC208與分區(qū)單元215之間的業(yè)務(wù)流。另外,GPC208可被編程以執(zhí)行與種類繁多的應(yīng)用相關(guān)的處理任務(wù),包括但不限于,線性和非線性數(shù)據(jù)變換、視頻和/或音頻數(shù)據(jù)過濾、建模操作(例如,應(yīng)用物理定律以確定對象的位置、速率和其他屬性)、圖像渲染操作(例如,曲面細分(tessellation)著色、頂點著色、幾何著色、和/或像素著色程序)等等。PPU202可將數(shù)據(jù)從系統(tǒng)存儲器104和/或本地并行處理存儲器204轉(zhuǎn)移到內(nèi)部(片上)存儲器中,處理所述數(shù)據(jù),并且將結(jié)果數(shù)據(jù)寫回到系統(tǒng)存儲器104和/或本地并行處理存儲器204,其中這樣的數(shù)據(jù)可以由其他系統(tǒng)部件訪問,所述其他系統(tǒng)部件包括CPU102或另一個并行處理子系統(tǒng)112。PPU202可配備有任意容量(amount)的本地并行處理存儲器204,包括沒有本地存儲器,并且可以以任意組合方式使用本地存儲器和系統(tǒng)存儲器。例如,在統(tǒng)一存儲器架構(gòu)(UMA)實施例中,PTO202可以是圖形處理器。在這樣的實施例中,將不提供或幾乎不提供專用的圖形(并行處理)存儲器,并且PPU202會以排他或幾乎排他的方式使用系統(tǒng)存儲器。在UMA實施例中,PPU202可集成到橋式芯片中或處理器芯片中,或作為具有高速鏈路(例如,PC1-EXPRESS)的分立芯片提供,所述高速鏈路經(jīng)由橋式芯片或其他通信手段將PPU202連接到系統(tǒng)存儲器。如上所述,在并行處理子系統(tǒng)112中可以包括任意數(shù)量的PPU202。例如,可在單個插卡上提供多個PPU202、或可將多個插卡連接到通信路徑113、或可將一個或多個PPU202集成到橋式芯片中。在多PPU系統(tǒng)中的PPU202可以彼此相同或不同。例如,不同的PPU202可能具有不同數(shù)量的處理內(nèi)核、不同容量的本地并行處理存儲器等等。在存在多個PPU202的情況下,可并行操作那些PI3U從而以高于單個PPU202所可能達到的吞吐量來處理數(shù)據(jù)。包含一個或多個PPU202的系統(tǒng)可以以各種配置和形式因素來實現(xiàn),包括臺式電腦、筆記本電腦或手持式個人計算機、服務(wù)器、工作站、游戲控制臺、嵌入式系統(tǒng)等等。多個并發(fā)任務(wù)調(diào)度可以在GPC208上并發(fā)執(zhí)行多個處理任務(wù)并且處理任務(wù)在執(zhí)行期間可以生成一個或多個“子”處理任務(wù)。任務(wù)/工作單元207接收任務(wù)并動態(tài)調(diào)度處理任務(wù)和子處理任務(wù)以由GPC208執(zhí)行。圖3A為根據(jù)本發(fā)明一個實施例的圖2的任務(wù)/工作單元207的框圖。任務(wù)/工作單元207包括任務(wù)管理單元300和工作分布單元340,以及狀態(tài)304(下面結(jié)合圖4A-4B詳細描述其內(nèi)容)。任務(wù)管理單元300基于執(zhí)行優(yōu)先級級別來組織所要調(diào)度的任務(wù)。對于每個優(yōu)先級級別,任務(wù)管理單元300將指向與任務(wù)相對應(yīng)的TMD322的指針列表存儲在調(diào)度器表321中,其中所述列表可以實現(xiàn)為鏈表??梢詫MD322存儲在PP存儲器204或系統(tǒng)存儲器104中。任務(wù)管理單元300接受任務(wù)并將任務(wù)存儲在調(diào)度器表321中的速度與任務(wù)管理單元300調(diào)度任務(wù)以執(zhí)行的速度是解耦的。因此,任務(wù)管理單元300可以在調(diào)度任務(wù)之前收集若干任務(wù)。如本文所進一步詳細描述的,每個TMD322均包括與在PPU202內(nèi)處置TMD322的方式相關(guān)的狀態(tài)324。工作分布單元340包括具有槽的任務(wù)表345,每個槽均可以被用于正在執(zhí)行的任務(wù)的TMD322所占用。當任務(wù)表345中有空閑槽時,任務(wù)管理單元300可以調(diào)度任務(wù)以執(zhí)行。當沒有空閑槽時,未占用槽的較高優(yōu)先級任務(wù)可以驅(qū)逐占用槽的較低優(yōu)先級任務(wù)。當任務(wù)被驅(qū)逐時,該任務(wù)被停止,并且如果該任務(wù)的執(zhí)行沒有完成,則將指向該任務(wù)的指針添加到所要調(diào)度的任務(wù)指針列表以使得任務(wù)的執(zhí)行稍后將恢復(fù)。在一些實施例中,恢復(fù)任務(wù)的位置存儲在任務(wù)的TMD322中。當生成子處理任務(wù)時,在任務(wù)的執(zhí)行期間,將指向該子任務(wù)的指針添加到所要調(diào)度的任務(wù)指針列表??梢杂稍谔幚砑宏嚵?30中執(zhí)行的TMD322生成子任務(wù)。如本文所進一步描述的,工作分布單元340還包括流多處理器(SM)狀態(tài)342,其存儲狀態(tài)數(shù)據(jù)用于包括在PPU202中的每個SM310。不同于由任務(wù)/工作單元207從前端212接收的任務(wù),子任務(wù)從處理集群陣列230接收。子任務(wù)不被插入幀緩沖區(qū)或傳輸?shù)角岸?。當生成子任?wù)或?qū)⒂糜谧尤蝿?wù)的數(shù)據(jù)存儲在存儲器中時不通知CPU102。通過幀緩沖區(qū)提供的任務(wù)與子任務(wù)之間的另一個區(qū)別是通過幀緩沖區(qū)提供的任務(wù)由應(yīng)用程序來定義而子任務(wù)是在任務(wù)執(zhí)行期間自動生成的。任務(wù)處理概述圖3B為根據(jù)本發(fā)明一個實施例的在圖2的PPU202之一內(nèi)的GPC208的框圖。每個GPC208均可配置為并行執(zhí)行大量線程,其中術(shù)語“線程”是指在特定輸入數(shù)據(jù)集上執(zhí)行的特定程序的實例。在一些實施例中,單指令、多數(shù)據(jù)(SIMD)指令發(fā)出技術(shù)用于在不提供多個獨立指令單元的情況下支持大量線程的并行執(zhí)行。在其他實施例中,單指令、多線程(SIMT)技術(shù)用于使用配置為向GPC208中的每一個內(nèi)的處理引擎集發(fā)出指令的共有指令單元來支持大量一般來說同步的線程的并行執(zhí)行。不同于所有處理引擎通常都執(zhí)行相同指令的SMD執(zhí)行機制,SIMT執(zhí)行通過給定線程程序允許不同線程更容易跟隨分散執(zhí)行路徑。本領(lǐng)域普通技術(shù)人員應(yīng)該理解SMD處理機制代表SMT處理機制的功能子集。經(jīng)由將處理任務(wù)分布到流多處理器(SM)310的管線管理器305來有利地控制GPC208的操作。管線管理器305還可配置為通過為由SM310所輸出的處理數(shù)據(jù)指定目的地來控制工作分布交叉開關(guān)330。在一個實施例中,每個GPC208均包括M個SM310,其中M彡1,每個SM310均配置為處理一個或多個線程組。另外,如本領(lǐng)域已知的,每個SM310均有利地包括可以管線化的相同的功能執(zhí)行單元集(例如執(zhí)行單元和加載-存儲單元-作為Exec單元302和LSU303在圖3C中示出),其允許在前一個指令完成之前發(fā)出新指令。可提供功能執(zhí)行單元的任意組合。在一個實施例中,功能單元支持各種各樣的操作,包括整數(shù)和浮點運算(例如加法和乘法)、比較操作、布爾操作(AND、0R、X0R)、移位和各種代數(shù)函數(shù)的計算(例如平面插值、三角函數(shù)、指數(shù)函數(shù)和對數(shù)函數(shù)等等);以及相同的功能單元硬件可均衡的用來(be leveragedto)實施不同的操作。如本文之前所定義的,傳輸?shù)教囟℅PC208的一系列指令構(gòu)成線程,以及跨SM310內(nèi)的并行處理引擎(未示出)的某一數(shù)量的并發(fā)執(zhí)行線程的集合在本文中稱為“warp”或“線程組”。如本文所使用的,“線程組”是指對不同輸入數(shù)據(jù)并發(fā)執(zhí)行相同程序的一組線程,所述組的一個線程被指派到SM310內(nèi)的不同處理引擎。線程組可以包括比SM310內(nèi)的處理引擎數(shù)量少的線程,在這種情況下一些處理引擎將在該線程組正在被處理的周期期間處于閑置狀態(tài)。線程組還可以包括比SM310內(nèi)的處理引擎數(shù)量多的線程,在這種情況下處理將在連續(xù)的時鐘周期內(nèi)發(fā)生。因為每個SM310均可以并發(fā)支持多達G個線程組,結(jié)果是在任意給定時間在GPC208中可以執(zhí)行多達G*M個線程組。此外,多個相關(guān)線程組可以在SM310內(nèi)同時活動(在執(zhí)行的不同階段)。該線程組集合在本文中稱為“協(xié)作線程陣列”(“CTA”)或“線程陣列”。特定CTA的大小等于m*k,其中k是線程組中并發(fā)執(zhí)行線程的數(shù)量并且通常是SM310內(nèi)的并行處理引擎數(shù)量的整數(shù)倍,以及m是SM310內(nèi)同時活動的線程組的數(shù)量。CTA的大小一般由編程者以及可用于CTA的硬件資源諸如存儲器或寄存器的容量來確定。每個SM310均包含一級(LI)高速緩存(圖3C所示)或使用用于實施加載和存儲操作的SM310外部的相應(yīng)LI高速緩存中的空間。每個SM310都還有權(quán)訪問在所有GPC208之間共享并且可用于在線程之間轉(zhuǎn)移數(shù)據(jù)的二級(L2)高速緩存。最后,SM310還有權(quán)訪問片外“全局”存儲器, 所述“全局”存儲器可以包括例如并行處理存儲器204和/或系統(tǒng)存儲器104。應(yīng)該理解,PTO202外部的任意存儲器均可用作全局存儲器。此外,一點五級(L1.5)高速緩存335可以包括在GPC208內(nèi),其配置為接收并保持由SM310所請求的經(jīng)由存儲器接口 214從存儲器獲取的數(shù)據(jù),包括指令、標準(uniform)數(shù)據(jù)和常數(shù)數(shù)據(jù),并將所請求的數(shù)據(jù)提供給SM310。在GPC208中具有多個SM310的實施例有利地共享了高速緩存在L1.5高速緩存335中的共有指令和數(shù)據(jù)。每個GPC208均可以包括配置為將虛擬地址映射到物理地址中的存儲器管理單元(MMU)328。在其他實施例中,MMU328可以駐留在存儲器接口 214內(nèi)。MMU328包括用于將虛擬地址映射到像素塊(tile)的物理地址的頁表條目(PTE)集和可選地包括高速緩存線索弓丨。MMU328可以包括地址轉(zhuǎn)換后備緩沖區(qū)(TLB)或可以駐留在多處理器SM310或LI高速緩存或GPC208內(nèi)的高速緩存。物理地址經(jīng)處理以分布表面數(shù)據(jù)訪問位置來允許高效請求在分區(qū)單元215之間交錯。高速緩存線索引可用于確定用于高速緩存線的請求是否命中或未命中。在圖形和計算應(yīng)用中,GPC208可配置為使得每個SM310均耦合到用于實施紋理映射操作例如確定紋理樣本位置、讀出紋理數(shù)據(jù)以及過濾該紋理數(shù)據(jù)的紋理單元315。從內(nèi)部紋理LI高速緩存(未示出)或者在一些實施例中從SM310內(nèi)的LI高速緩存讀出紋理數(shù)據(jù)并根據(jù)需要從在所有GPC208之間共享的L2高速緩存、并行處理存儲器204或系統(tǒng)存儲器104中獲取紋理數(shù)據(jù)。為了經(jīng)由交叉開關(guān)單元210將所處理的任務(wù)提供給另一個GPC208用于進一步處理或為了將所處理的任務(wù)存儲在L2高速緩存、并行處理存儲器204或系統(tǒng)存儲器104中,每個SM310均將所處理的任務(wù)輸出到工作分布交叉開關(guān)330。preROP(預(yù)光柵操作)325配置為從SM310接收數(shù)據(jù)、將數(shù)據(jù)引導(dǎo)到分區(qū)單元215內(nèi)的ROP單元以及針對顏色混合實施優(yōu)化、組織像素顏色數(shù)據(jù)和實施地址轉(zhuǎn)譯。應(yīng)該理解本文所述的內(nèi)核架構(gòu)是示例性的并且各種變化和修改都是可能的。任意數(shù)量的處理單元例如SM310或紋理單元315、preR0P325均可以包括在GPC208內(nèi)。進一步地,如圖2所示,PPU202可以包括任意數(shù)量的GPC208,所述GPC208有利地在功能上彼此相似以使得執(zhí)行行為不取決于哪個GPC208接收特定處理任務(wù)。進一步地,每個GPC208有利地均使用單獨的和各異的處理單元、LI高速緩存來獨立于其他GPC208操作以為一個或多個應(yīng)用程序執(zhí)行任務(wù)。本領(lǐng)域普通技術(shù)人員應(yīng)該理解圖1、2、3A和3B所描述的架構(gòu)決不限制本發(fā)明的范圍并且在不脫離本發(fā)明范圍的情況下本文所教導(dǎo)的技術(shù)可以在任意經(jīng)適當配置的處理單元上實現(xiàn),所述處理單元包括但不限于一個或多個CPU、一個或多個多核CPU、一個或多個PPU202、一個或多個GPC208、一個或多個圖形或?qū)S锰幚韱卧鹊?。在本發(fā)明的實施例中,使用PPU202或計算系統(tǒng)的其他處理器以使用線程陣列執(zhí)行通用計算是可取的。為線程陣列中的每個線程均指派在線程的執(zhí)行期間對于線程可訪問的唯一的線程標識符(“線程ID”)??杀欢x為一維或多維數(shù)值的線程ID控制線程處理行為的各方面。例如,線程ID可用于確定線程將要處理輸入數(shù)據(jù)集的哪部分和/或確定線程將要產(chǎn)生或?qū)戄敵鰯?shù)據(jù)集的哪部分。每線程指令序列可包括定義代表性線程和線程陣列的一個或多個其他線程之間的協(xié)作行為的至少一個指令。例如,每線程指令序列可能包括在序列中的特定點處掛起用于代表性線程的操作執(zhí)行直到諸如其他線程的一個或多個到達該特定點的時間為止的指令、用于代表性線程將數(shù)據(jù)存儲在其他線程的一個或多個有權(quán)訪問的共享存儲器中的指令、用于代表性線程自動讀出和更新存儲在其他線程的一個或多個基于它們的線程ID有權(quán)訪問的共享存儲器中的數(shù)據(jù)的指令等等。CTA程序還可以包括計算數(shù)據(jù)將從其讀出的共享存儲器中的地址的指令,該地址是線程ID的函數(shù)。通過定義合適的函數(shù)并提供同步技術(shù),可以以可預(yù)測的方式由CTA的一個線程將數(shù)據(jù)寫入共享存儲器中的給定位置并由同一個CTA的不同線程從該位置讀出數(shù)據(jù)。因此,數(shù)據(jù)在線程之間共享的任意期望形式可以得到支持,以及CTA中的任意線程可以與同一個CTA中的任意其他線程分享數(shù)據(jù)。如果存在數(shù)據(jù)在CTA的線程之間的共享,則其范圍由CTA程序確定;因此,應(yīng)該理解在使用CTA的特定應(yīng)用中,CTA的線程可能會或可能不會真正互相分享數(shù)據(jù),這取決于CTA程序,術(shù)語“CTA”和“線程陣列”在本文作為同義詞使用。圖3C為根據(jù)本發(fā)明一個實施例的圖3B的SM310的框圖。SM310包括配置為經(jīng)由L1.5高速緩存335從存儲器接收指令和常數(shù)的指令LI高速緩存370。warp調(diào)度器和指令單元312從指令LI緩沖370接收指令和常數(shù)并根據(jù)該指令和常數(shù)控制本地寄存器堆304和SM310功能單元。SM310功能單元包括N個exec (執(zhí)行或處理)單元302和P個加載-存儲單元(LSU) 303。SM310提供具有不同級別的可訪問性的片上(內(nèi)部)數(shù)據(jù)存儲。特殊寄存器(未示出)對于LSU303可讀但不可寫并且用于存儲定義每個線程的“位置”的參數(shù)。在一個實施例中,特殊寄存器包括每線程(或SM310內(nèi)的每exec單元302) —個的存儲線程ID的寄存器;每個線程ID寄存器僅由各自的exec單元302可訪問。特殊寄存器還可以包括附加寄存器,其對于執(zhí)行由TMD322所代表的同一個處理任務(wù)的所有線程(或由所有LSU303)可讀,其存儲CTA標識符、CTA維數(shù)、CTA所屬網(wǎng)格(grid)的維數(shù)(或隊列位置,如果TMD322編碼隊列任務(wù)而不是網(wǎng)格任務(wù)的話)、以及CTA被指派到的TMD322的標識符。如果TMD322是網(wǎng)格TMD,則TMD322的執(zhí)行會啟動和執(zhí)行固定數(shù)量的CTA以處理存儲在隊列525中的固定量的數(shù)據(jù)。將CTA的數(shù)量指定為網(wǎng)格寬度、高度和深度的乘積??梢詫⒐潭康臄?shù)據(jù)存儲在TMD322中或TMD322可以存儲指向?qū)⒂蒀TA所處理的數(shù)據(jù)的指針。TMD322還存儲由CTA所執(zhí)行的程序的開始地址。如果TMD322是隊列TMD,那么使用TMD322的隊列特點,這意味著將要被處理的數(shù)據(jù)量不一定是固定的。隊列條目存儲用于由指派到TMD322的CTA所處理的數(shù)據(jù)。隊列條目還可以代表在線程執(zhí)行期間由另一個TMD322所生成的子任務(wù),從而提供嵌套并行性。通常線程或包括線程的CTA的執(zhí)行被掛起直到子任務(wù)的執(zhí)行完成。在一些實施例中,被掛起的線程或CTA保存它們的程序狀態(tài)、將數(shù)據(jù)寫到表示線程或CTA的繼續(xù)部分的隊列TMD并且隨后退出,以便允許其它線程或CTA運行。可以將隊列存儲在TMD322中或與TMD322分開存儲,在該情況下TMD322存儲指向該隊列的指針。有利地,當代表子任務(wù)的TMD322正在執(zhí)行時可以將由子任務(wù)所生成的數(shù)據(jù)寫到隊列。隊列可以實現(xiàn)為循環(huán)隊列以使得數(shù)據(jù)的總量不限于隊列的大小。屬于網(wǎng)格的CTA具有指示網(wǎng)格內(nèi)各自CTA的位置的隱含網(wǎng)格寬度、高度和深度參數(shù)。在初始化期間響應(yīng)于經(jīng)由前端212從設(shè)備驅(qū)動程序103所接收的命令來寫特殊寄存器并且在處理任務(wù)的執(zhí)行期間特殊寄存器不改變。前端212調(diào)度每個處理任務(wù)用于執(zhí)行。每個CTA均與特定TMD322相關(guān)聯(lián)用于一個或多個任務(wù)的并發(fā)執(zhí)行。此外,單個GPC208可以并發(fā)執(zhí)行多個任務(wù)。綁定到任務(wù)的參數(shù)存儲器(未示出)存儲可由該任務(wù)的任意線程(或任意LSU303)讀取但不可由其寫入的運行時間參數(shù)(常數(shù))。在一個實施例中,設(shè)備驅(qū)動程序103在引導(dǎo)SM310開始執(zhí)行使用參數(shù)的任務(wù)之前將這些參數(shù)提供給參數(shù)存儲器。任意CTA內(nèi)的任意線程(或SM310內(nèi)的任意exec單元302)均可以通過存儲器接口 214訪問全局存儲器。可以將全局存儲器的各部分存儲在LI高速緩存320中。每個線程均將本地寄存器堆304用作暫存空間;每個寄存器被分配以專用于一個線程,并且在本地寄存器堆304的任意一個中的數(shù)據(jù)僅對于寄存器被分配到的線程可訪問。本地寄存器堆304可以實現(xiàn)為物理上或邏輯上分為P個通道的寄存器堆,每個通道具有一定數(shù)量的條目(其中每個條目可以存儲例如32位字)。將一個通道指派到N個exec單元中和P個下載-存儲單元LSU303的每一個,并且利用用于執(zhí)行同一個程序的不同線程的數(shù)據(jù)來填充不同通道中的相應(yīng)條目以幫助SIMD執(zhí)行??梢詫⑼ǖ赖牟煌糠址峙涞紾個并發(fā)線程組中的不同線程組,以使得本地寄存器堆304中的給定條目僅對于特定線程可訪問。在一個實施例中,保留本地寄存器堆304內(nèi)的某些條目用于存儲線程標識符,這實現(xiàn)特殊寄存器之一。此外,標準LI高速緩存375存儲用于N個exec單元302和P個下載-存儲單元LSU303的每個通道的標準或常數(shù)值。共享存儲器306對于單個CTA內(nèi)的線程可訪問;換言之,共享存儲器306中的任意位置對于同一個CTA內(nèi)的任意線程(或?qū)τ赟M310內(nèi)的任意處理引擎)可訪問。共享存儲器306可以實現(xiàn)為具有允許任意處理引擎對共享存儲器中的任意位置讀取或?qū)懭氲幕ミB的共享寄存器堆或共享片上高速緩存存儲器。在其他實施例中,共享狀態(tài)空間可能映射到片外存儲器的每CTA區(qū)域上并被高速緩存在LI高速緩存320中。參數(shù)存儲器可以實現(xiàn)為在實現(xiàn)共享存儲器306的同一個共享寄存器堆或共享高速緩存存儲器內(nèi)的指定部分,或者實現(xiàn)為LSU303對其具有只讀訪問權(quán)限的單獨的共享寄存器堆或片上高速緩存存儲器。在一個實施例中,實現(xiàn)參數(shù)存儲器的區(qū)域還用于存儲CTA ID和任務(wù)ID,以及CTA和網(wǎng)格維數(shù)或隊列位置,這實現(xiàn)特殊寄存器的各部分。SM310中的每個LSU303均耦合到統(tǒng)一地址映射單元352,統(tǒng)一地址映射單元352將為在統(tǒng)一存儲器空間中所指定的加載和存儲指令所提供的地址轉(zhuǎn)換為每個相異存儲器空間中的地址。因此,指令可以用于通過指定統(tǒng)一存儲器空間中的地址來訪問本地、共享或全局存儲器空間中的任意一個。每個SM310中的LI高速緩存320可以用于高速緩存私有的每線程本地數(shù)據(jù)還有每應(yīng)用全局數(shù)據(jù)。在一些實施例中,可以將每CTA共享數(shù)據(jù)高速緩存在LI高速緩存320中。LSU303經(jīng)由存儲器和高速緩存互連380耦合到共享存儲器306和LI高速緩存320。計算任務(wù)的調(diào)度和執(zhí)行圖4A-4B示出了根據(jù)本發(fā)明的一個實施例的,用于將任務(wù)指派給圖3A-3C的SM310的方法。盡管結(jié)合圖1-3C的系統(tǒng)描述了方法步驟,但本領(lǐng)域普通技術(shù)人員將理解配置為以任何順序?qū)嵤┰摲椒ú襟E的任何系統(tǒng)均在本發(fā)明的范圍內(nèi)。如圖所示,方法400在步驟402開始,其中WDU340確定是否一個或多個TMD322包括在圖3A的任務(wù)表345中。在步驟404,WDU340將包括在多個SM中的第一 SM (例如,包括在PPU202內(nèi)的SM310)設(shè)置為當前SM。在步驟406,WDU340將包括在任務(wù)表345中的第一TMD322設(shè)置為當前TMD。
在步驟408,WDU340確定是否當前TMD駐留在其中的任務(wù)表345槽已經(jīng)接收到解除分配請求。在步驟408,如果WDU340確定當前TMD駐留在其中的任務(wù)表槽已經(jīng)接收到解除分配請求,那么當前TMD不應(yīng)該是任何SM310。相應(yīng)地,方法400前進到步驟428,其中WDU340將包括在任務(wù)表345中的下一個TMD322設(shè)置為當前TMD。進而,方法400前進回到上述步驟408。相反,在步驟408,如果WDU340確定當前TMD駐留在其中的任務(wù)表槽并未接收到解除分配請求,那么方法400前進到步驟410。在步驟410,WDU340確定當前TMD是否包括CTA中尚未發(fā)出的工作。在步驟410,如果WDU340確定當前TMD不包括CTA中尚未發(fā)出的工作,那么方法400前進到上述步驟428。否則,方法400前進到步驟412。在一個實施例中,每個TMD322均包括當該TMD322正被調(diào)度用于執(zhí)行時,由例如任務(wù)管理單元300和工作分布單元340所設(shè)置的準靜態(tài)狀態(tài)。每個TMD322均還包括當執(zhí)行該TMD322時被更新的動態(tài)狀態(tài),例如當發(fā)生用于TMD322的CTA啟動和完成時。存在包括在TMD322中的很多狀態(tài)部件,其與在PPU202內(nèi)處置TMD322的方式相關(guān)。在一個實施例中,TMD322包括用于跟蹤包括在尚未完成的TMD322中的工作項的數(shù)目的狀態(tài)。在一些情況下,連同指定在最終啟動CTA用于執(zhí)行之前所允許等待閾值時間量以積累最小所需數(shù)目的工作項的狀態(tài)(以下稱為“合并超時(coalescing timeout)”)一起,TMD322還可包括指定需要包括在被發(fā)出到SM310的每個CTA中的工作項的最小數(shù)目的狀態(tài)(以下稱為“合并規(guī)則(c oalescing rules) ”)。當TMD指定M個工作項/每CTA時,則由每個CTA讀取N個項。例如,可能有多個將工作項寫到隊列TMD的TMD,其中隊列TMD的每個CTA均處理N個工作項。這就將N個分離的工作項“合并”到一個CTA中。然而,多個TMD有可能并不生成被N所整除的數(shù)目的工作項,其導(dǎo)致留下未完成的部分工作項集。為了規(guī)避以上所述,在一個實施例中,TMD包括允許利用M個工作項來啟動CTA的超時值,其中M < N。把M的值當做CTA的輸入,并且寫入與CTA相關(guān)聯(lián)的指令以處理M個工作項或者N個工作項,其取決于M的值。TMD322還包括指定TMD322執(zhí)行優(yōu)先級級別的狀態(tài),所述執(zhí)行優(yōu)先級級別例如在1-10的數(shù)字范圍內(nèi)的優(yōu)先級級別,其中最低的數(shù)字表示最高的執(zhí)行優(yōu)先級級別。TMD322還包括指示TMD322駐留在其中的任務(wù)表345中的槽在由任務(wù)管理單元300調(diào)度后是否是有效槽——也就是其中尚未請求對TMD322的解除分配的狀態(tài)。如以下結(jié)合圖4A-4B所詳細描述的,TMD322還可包括用于SM親和規(guī)則(affinity rule)的狀態(tài),其指定可將TMD322指派到PPU202中的哪個SM310上。每個TMD322均還可包括指示是否TMD322僅當任務(wù)/工作單元207正操作于“節(jié)流模式”時才可執(zhí)行的狀態(tài),所述“節(jié)流模式”涉及有權(quán)訪問由包括在PPU202中的SM310可訪問的所有共享存儲器的單個CTA。在一個實施例中,當WDU340在節(jié)流和非節(jié)流模式之間切換時,切換模式的狀況(status)存儲在狀態(tài)304中并且由WDU340進行更新。每個TMD322均還可包括指定TMD322為序列任務(wù)并且因此在任意給定時間可使至多一個CTA “正在處理(in flight) ”( S卩,正由SM310所執(zhí)行)的狀態(tài)。在步驟412,WDU340確定是否任務(wù)表345中的任何TMD322指示節(jié)流模式屬性。在步驟412,如果WDU340確定任何TMD指示節(jié)流模式屬性,則方法400前進到步驟414以確定在任務(wù)/工作單元207內(nèi)是否激活了節(jié)流模式。在步驟414,如果WDU340確定在任務(wù)/工作單元207內(nèi)未激活節(jié)流模式,則方法400前進到步驟450。如圖所示,在步驟450,WDU340等待直到所有未完成的TMD322均被執(zhí)行,即當激活時未指示節(jié)流模式的TMD322。隨后方法400前進到步驟452,其中WDU340將節(jié)流狀態(tài)發(fā)送到SM310的每一個。在一個實施例中,用于每個SM310的節(jié)流狀態(tài)均既包括指示SM310可訪問的共享存儲器的一部分的大小的值,還包括共享存儲器該部分開始處的基址。因此,當使能較少的SM310時,對每個SM310來說,指示共享存儲器的一部分的大小的值增加。相反,當使能較多的SM310時,對每個SM310來說,指示共享存儲器的一部分的大小的值減少。在步驟454,WDU340激活節(jié)流模式,于是方法400前進回到步驟402。WDU340繼續(xù)在節(jié)流模式下操作直到步驟412為假,即直到WDU340確定不再有包括在任務(wù)表345中的TMD322指示節(jié)流模式屬性。相應(yīng)地,WDU340在步驟413停用節(jié)流模式,于是方法400在步驟416處重新開始。在步驟416,WDU340確定當前TMD是否為序列任務(wù)。在步驟416,如果WDU340確定當前TMD是序列任務(wù),那么方法400前進到步驟418,其中WDU340確定當前TMD是否具有正在處理的CTA,即當前正由SM310所執(zhí)行的CTA。在步驟418,如果WDU340確定當前TMD具有正在處理的CTA,那么方法400前進到上述步驟428。否則,方法400前進到如下所述的步驟420。現(xiàn)在返回參考步驟416,如果WDU340確定當前TMD不是序列任務(wù),那么方法400前進到步驟419。在步驟419,WDU340確定當前TMD322的啟動配額,如果有的話,是否被滿足。在一個實施例中,每個TMD322均既包括啟動配額使能位,也包括啟動配額值。當啟動配額使能位設(shè)置為“真”時,WDU340確定是否已經(jīng)啟動相當于啟動配額值的若干CTA。相應(yīng)地,在步驟419,如果WDU340確定TMD322的啟動配額,如果有的話,已被滿足,那么方法400前進到步驟460。在步驟460,WDU340解析任務(wù)表345并且選擇具有與當前TMD相同的優(yōu)先級的TMD322,于是WDU340將所選擇的TMD322設(shè)置為當前TMD322。隨后方法400前進到步驟402。現(xiàn)在返回參考步驟419,如果WDU340確定TMD322的啟動配額未被滿足,或?qū)τ赥MD322未指定啟動配額,那么方法前進到步驟420。在步驟420,WDU340確定當前TMD的親和規(guī)則或節(jié)流模式參數(shù)是否禁止將當前TMD指派給當前SM。在步驟420,如果WDU340確定當前TMD的親和規(guī)則或節(jié)流模式參數(shù)禁止將當前TMD指派給當前SM,那么方法400前進到步驟428,如上所述。否則,在步驟424,WDU340將當前TMD添加到與當前SM相對應(yīng)的任務(wù)列表。在步驟426,WDU340確定在任務(wù)表中是否包括附加的TMD322。在步驟426,如果WDU340確定在任務(wù)表345中包括附加的TMD322,那么方法400前進到步驟428,如上所述。這樣,包括在任務(wù)表345中的每個TMD322均與當前SM相比較以確定哪一個TMD322最有資格被指派給當前SM,如以下在步驟434中所述。然而,在步驟426,如果WDU340確定在任務(wù)表345中不包括附加的TMD322,那么所有TMD322均已經(jīng)與當前SM相比較,并且因此方法400前進到步驟430。在步驟430,WDU340基于與包括在任務(wù)列表中的每個TMD322相關(guān)聯(lián)的執(zhí)行優(yōu)先級值來執(zhí)行初級類別的任務(wù)列表。在步驟432,WDU340基于與包括在任務(wù)列表中的每個TMD322相關(guān)聯(lián)的時間戳值來執(zhí)行次級類別的任務(wù)列表,其中時間戳值表不TMD322插入到任務(wù)表345中的時間。在一個實施例中,時間戳值維護在狀態(tài)304中或者可作為列包括在任務(wù)表345內(nèi)。在一些實施例中,代替時間戳,WDU340維護包括在任務(wù)表345中的槽的分類列表,其中每次分配或解除分配新任務(wù)時分別插入或刪除在列表中的條目。因此,槽的分類列表保持為有組織的并且僅在每次分配或刪除任務(wù)時被重新分類,使得具有最高優(yōu)先級值的最舊的TMD322可被容易地識別并且指派給當前SM,如以下在步驟434所述。在步驟434,WDU340將具有最高優(yōu)先級值和最舊時間戳值的TMD322指派給當前SM。在一個實施例中,當TMD322在步驟434被指派給當前SM時,當前SM具有由WDU340設(shè)置并且存儲在SM狀態(tài)342中的與其相關(guān)聯(lián)的狀態(tài)。此后,當在當前SM上執(zhí)行與指派給當前SM的TMD322相對應(yīng)的CTA時,WDU340修改狀態(tài),如以下結(jié)合圖5所詳細描述的。在一個實施例中,狀態(tài)包括若干屬性,其包括指示有資格的TMD是否被指派給當前SM的“TASK_ASSIGN”。狀態(tài)還可包括“STATE_SYNC”屬性,其指示W(wǎng)DU340是正在等待發(fā)出TMD322狀態(tài)更新到當前SM,還是正在等待當前SM確認狀態(tài)更新,如以下在步驟438所進一步詳細描述的。狀態(tài)還可包括“CTA_LAUNCH”屬性,其指示當前SM準備好從步驟434的TMD322接收并且執(zhí)行CTA(受限于具有接收和執(zhí)行CTA的能力的當前SM)。其他狀態(tài)可用于導(dǎo)出用于當前SM的CTA可用性值,如以下結(jié)合圖5所述 ,其表示W(wǎng)DU340可立即啟動到當前SM的附加的CTA的數(shù)量(S卩,在WDU340從當前SM接收到任何更多CTA完成信息之前)。在步驟436,WDU340確定不是當前TMD的TMD322是否之前被指派給當前SM。在步驟436,如果WDU340確定不是當前TMD的TMD322之前被指派給當前SM,那么方法400前進到步驟438,其中WDU340將與當前TMD相關(guān)聯(lián)的狀態(tài)數(shù)據(jù)發(fā)送給當前SM。否則,方法400前進到步驟440。在步驟440,WDU340確定在多個SM310中是否包括附加的SM310。在步驟440,如果WDU340確定在多個SM310中包括附加的SM310,那么方法400前進到步驟442,其中WDU340將包括在多個SM310中的下一個SM310設(shè)置為當前SM。然而,如果WDU340在步驟440確定在多個SM中不包括附加的SM,那么方法400前進回到步驟402,并且根據(jù)本文的技術(shù)重復(fù)方法400。因此,在方法400的結(jié)束處,如果包括在任務(wù)表345中的TMD322存在的話,則取決于例如所述TMD322的狀態(tài)數(shù)據(jù),已對O個或多個SM310指派了 TMD322。結(jié)合持續(xù)地將不同的TDM322指派給不同的SM310,工作分布單元340還配置為持續(xù)地選擇SM,應(yīng)向所述SM發(fā)出來自指派給一個SM的TMD322的CTA,下面結(jié)合圖5對其加以描述。圖5示出了根據(jù)本發(fā)明的一個實施例的,用于選擇SM310以接收與任務(wù)相關(guān)的工作的方法500。盡管結(jié)合了圖1-3C的系統(tǒng)來描述方法步驟,但是本領(lǐng)域技術(shù)人員將理解,配置為以任何順序?qū)嵤┓椒ú襟E的任何系統(tǒng)都落在本發(fā)明的范圍之內(nèi)。如圖所示,方法500在步驟502開始,其中WDU340從包括在PPU202中的每個SM310接收以下指示:如果有與SM310相關(guān)聯(lián)的TMD322的話,SM310是否有資格從該TMD322接收CTA。在一個實施例中,該指示以“ready (準備就緒)”狀況的形式進行傳送,其源自于與SM310相關(guān)聯(lián)的并且存儲在圖3A的SM狀態(tài)342中的狀態(tài)。在一個示例中,如果SM310已經(jīng)被指派了 TMD322(例如,根據(jù)以上結(jié)合圖4A-4B的所述的方法步驟400)并且與TMD322相關(guān)聯(lián)的狀態(tài)已經(jīng)發(fā)送到SM310并且由其確認(例如,根據(jù)方法400的方法步驟438),則SM310被確定為準備就緒。還可基于WDU340是否正操作在以上結(jié)合圖4A-4B所述的節(jié)流模式來確定SM310為使能或禁用。指派給SM310的TMD322要求本文所述的節(jié)流模式是活動的并且任務(wù)/工作單元207實際上正操作在節(jié)流模式??苫谥概山oSM310的TMD322是否滿足任何合并規(guī)則來進一步確定SM310為準備就緒。例如,指派給SM310的TMD322可指示在CTA發(fā)出到SM310之前,最少8個未完成的工作項必須包括在例如與TMD322相關(guān)聯(lián)的工作項隊列中。而且,為了規(guī)避包括在TMD322中的未完成工作項的數(shù)量大于O但不會超過每CTA的未完成工作項的閾值最小值數(shù)量的情況,可實現(xiàn)如以上結(jié)合圖4A-4B所述的合并超時。假設(shè)TMD322和/或SM310滿足結(jié)合步驟502所述的附加的資格要求,則當合并超時發(fā)生時,SM310成為有資格從TMD322接收CTA。在步驟506,WDU340確定負載平衡模式或循環(huán)模式是否是活動的。在一個實施例中,由存儲在任務(wù)/工作單元207的狀態(tài)304中的單個位值來管理活動模式。在步驟508,WDU340從有資格的SM310中的每一個接收CTA可用性值。在一個實施例中,CTA可用性值是指示SM310所具有的接受和執(zhí)行附加CTA的總體能力的數(shù)值。該數(shù)量由每個SM310計算,并且基于例如正由SM310所執(zhí)行的CTA的當前數(shù)量、最近指派給SM的任務(wù)的每CTA資源需求以及SM310可用的空閑資源的總量等等。在步驟510,WDU340基于CTA可用性值來執(zhí)行一類有資格的SM310。在步驟512,WDU340確定是否兩個或兩個以上SM310共享同一個最高CTA可用性值。在步驟512,如果WDU340確定兩個或兩個以上SM310共享同一個最高CTA可用性值,那么方法500前進到步驟514,其中WDU340基于固定的SM優(yōu)先級列表來選擇這兩個或兩個以上SM310中的一個。在一個實施例中,固定的優(yōu)先級列表包括在任務(wù)/工作單元207的狀態(tài)304中?,F(xiàn)在返回參考步驟512,如果WDU340確定兩個或兩個以上SM310不共享同一個最高CTA可用性值,那么方法500前進到步驟516,其中WDU利用最高CTA可用性值來選擇SM310。在步驟518,WDU340向所選擇的SM310發(fā)出指派給所選擇的SM310的TMD322的CTA。隨后方法500前進回到步驟502,其中重復(fù)方法步驟500使得只要存在至少一個指派給一個或多個SM310的TMD322,則WDU340就持續(xù)地將CTA發(fā)出到該一個或多個SM310并且包括尚未由任何SM310所執(zhí)行的工作。現(xiàn)在返回參考步驟506,如果WDU340確定任務(wù)/工作單元207的活動模式指示了循環(huán)模式,那么方法500前進到步驟520。在步驟520,WDU340從在步驟502所確定的有資格的SM310中選擇數(shù)字上的下一個SM310。在一個實施例中,WDU340維護CTA被發(fā)出給其的最后一個SM的狀態(tài)304中的識別值。這樣,WDU340可通過持續(xù)地向具有數(shù)字上的下一個SM識別值的SM發(fā)出CTA并且相應(yīng)地更新狀態(tài)304中的識別值來實現(xiàn)循環(huán)技術(shù)??蓪⒈景l(fā)明的一個實施例實現(xiàn)為用于與計算機系統(tǒng)一起使用的程序產(chǎn)品。程序產(chǎn)品的程序定義了實施例的功能(包括本文所述的方法)并且可被包含在各種各樣的計算機可讀存儲介質(zhì)上。示例性的計算機可讀存儲介質(zhì)包括但不限于:(i)永久地將信息存儲在其上的非可寫存儲介質(zhì)(例如,諸如由CD-ROM驅(qū)動器可讀的光盤只讀存儲器(CD-ROM)、閃存、只讀存儲器(ROM)芯片或任何類型的固態(tài)非易失性半導(dǎo)體存儲器的計算機內(nèi)的只讀存儲器設(shè)備);以及(ii)將可更改信息存儲在其上的可寫存儲介質(zhì)(例如,軟盤驅(qū)動器內(nèi)的軟盤、硬盤驅(qū)動器或者任何類型的固態(tài)隨機存取半導(dǎo)體存儲器)。
上文已經(jīng)參考特定實施例描述了本發(fā)明。然而,本領(lǐng)域普通技術(shù)人員將理解,在不脫離如在所附的權(quán)利要求中所闡述的本發(fā)明的更寬的精神和范圍的情況下可做出各種修改和改變。因此,前述描述和附圖視為示例性的而不是限制性的意義。
權(quán)利要求
1.一種用于選擇包括在多個處理器中的第一處理器以接收與計算任務(wù)相關(guān)的工作的計算機實現(xiàn)的方法,所述方法包括: 分析所述多個處理器中的每個處理器的狀態(tài)數(shù)據(jù)以識別已被指派一個計算任務(wù)并且有資格接收與所述一個計算任務(wù)相關(guān)的工作的一個或多個處理器; 從識別為有資格的所述一個或多個處理器的每一個接收指示所述處理器接收新工作的能力的可用性值; 基于從所述一個或多個處理器所接收的所述可用性值來選擇第一處理器以接收與所述一個計算任務(wù)相關(guān)的工作;以及 經(jīng)由協(xié)作線程陣列(CTA)向所述第一處理器發(fā)出與所述一個計算任務(wù)相關(guān)的所述工作。
2.根據(jù)權(quán)利要求1所述的計算機實現(xiàn)的方法,其中當與所述一個計算任務(wù)相關(guān)聯(lián)的所述狀態(tài)數(shù)據(jù)已由處理器所接 收并確認時,處理器被識別為有資格的。
3.根據(jù)權(quán)利要求1所述的計算機實現(xiàn)的方法,其中當所述一個計算任務(wù)與數(shù)目大于或等于由所述一個計算任務(wù)所指示的每CTA工作項的閾值數(shù)目的未完成工作項相關(guān)聯(lián)時,處理器被識別為有資格的。
4.根據(jù)權(quán)利要求1所述的計算機實現(xiàn)的方法,其中當已出現(xiàn)超時期,并且與所述一個計算任務(wù)相關(guān)聯(lián)的未完成工作項的數(shù)目不超過由所述一個計算任務(wù)所指示的每CTA工作項的閾值數(shù)目時,處理器被識別為有資格的。
5.根據(jù)權(quán)利要求1所述的計算機實現(xiàn)的方法,其中當所述一個計算任務(wù)指示節(jié)流模式應(yīng)被激活并且所述多個處理器正操作在所述節(jié)流模式中時,處理器被識別為有資格的,以及其中在所述節(jié)流模式中,所述第一處理器包括在所述多個處理器的受限子集中并且在所述受限子集內(nèi)的每個處理器均被允許訪問大于存儲器第二部分的存儲器第一部分,所述存儲器第二部分通常在非節(jié)流模式中處理計算任務(wù)時對所述多個處理器中的每個處理器可用。
6.一種用于將計算任務(wù)指派給包括在多個處理器中的第一處理器的計算機實現(xiàn)的方法,所述方法包括: 分析多個計算任務(wù)中的每個計算任務(wù)以識別有資格指派給所述第一處理器的一個或多個計算任務(wù),其中每個計算任務(wù)均列出在第一表中并且與優(yōu)先級值和指示所述計算任務(wù)添加到所述第一表的時間的分配順序相關(guān)聯(lián); 基于所述優(yōu)先級值和所述分配順序中的至少一個來從所識別的一個或多個計算任務(wù)中選擇第一計算任務(wù);以及 指派所述第一計算任務(wù)給所述第一處理器用于執(zhí)行。
7.根據(jù)權(quán)利要求6所述的計算機實現(xiàn)的方法,其中當與計算任務(wù)相關(guān)聯(lián)的解除分配請求尚未發(fā)出時,所述計算任務(wù)被識別為有資格的。
8.根據(jù)權(quán)利要求6所述的計算機實現(xiàn)的方法,其中當計算任務(wù)包括尚未經(jīng)由協(xié)作線程陣列(CTA)發(fā)出到所述多個處理器中的任何所述處理器的工作時,所述計算任務(wù)被識別為有資格的。
9.根據(jù)權(quán)利要求6所述的計算機實現(xiàn)的方法,其中當必須在節(jié)流模式中對計算任務(wù)進行處理時,所述計算任務(wù)被識別為有資格的,以及其中在所述節(jié)流模式中,所述第一處理器包括在所述多個處理器的受限子集中并且在所述受限子集內(nèi)的每個處理器均被允許訪問大于存儲器第二部分的存儲器第一部分,所述存儲器第二部分通常在非節(jié)流模式中處理計算任務(wù)時對所述多個處理器中的每個處理器可用。
10.根據(jù)權(quán)利要求6所述的計算機實現(xiàn)的方法,其中當計算任務(wù)要求在任何給定時間僅能執(zhí)行一個CTA并且沒有與所述計算任務(wù)相關(guān)聯(lián)的CTA當前正在由所述多個處理器中的任何所述處理器所執(zhí)行時,所述計算任務(wù)被識別為有資格的。
11.根據(jù)權(quán)利要求6所述的計算機實現(xiàn)的方法,其中當與計算任務(wù)相關(guān)聯(lián)的親和規(guī)則不禁止與所述計算任務(wù)相關(guān)聯(lián)的任何所述CTA由所述第一處理器所執(zhí)行時,所述計算任務(wù)被識別為有資格的。
12.根據(jù)權(quán)利要求6所述的計算機實現(xiàn)的方法,其中當與計算任務(wù)相關(guān)聯(lián)的所執(zhí)行的CTA的數(shù)目尚未達到閾 值時,所述計算任務(wù)被識別為有資格的。
全文摘要
本發(fā)明的一個實施例闡述了用于選擇包括在多個處理器中的第一處理器以接收與計算任務(wù)相關(guān)的工作的技術(shù)。該技術(shù)涉及分析多個處理器中的每一個處理器的狀態(tài)數(shù)據(jù)以識別已經(jīng)指派了一個計算任務(wù)并且有資格接收與該一個計算任務(wù)相關(guān)的工作的一個或多個處理器,從識別為有資格的一個或多個處理器的每一個接收指示處理器接收新任務(wù)的能力的可用性值,基于從該一個或多個處理器接收的可用性值來選擇第一處理器以接收與該一個計算任務(wù)相關(guān)的工作,并且經(jīng)由協(xié)作線程陣列(CTA)向該第一處理器發(fā)出與該一個計算任務(wù)相關(guān)的工作。
文檔編號G06F9/48GK103218259SQ201310018618
公開日2013年7月24日 申請日期2013年1月18日 優(yōu)先權(quán)日2012年1月18日
發(fā)明者卡里姆·M·阿夫達利亞, 蘭基·V·姍, 杰爾姆·F·小杜魯克, 蒂莫西·約翰·珀塞爾, 坦莫尼·曼德爾, 廣田源太郎 申請人:輝達公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
昔阳县| 巧家县| 丰城市| 嘉义市| 靖边县| 宁远县| 若尔盖县| 成安县| 宁夏| 大同县| 泾阳县| 德庆县| 阳谷县| 庄浪县| 辉县市| 西华县| 聂荣县| 尼木县| 龙里县| 北流市| 马尔康县| 睢宁县| 无为县| 茶陵县| 枣庄市| 长垣县| 元江| 哈尔滨市| 台中市| 甘德县| 山丹县| 九台市| 囊谦县| 固阳县| 南开区| 马鞍山市| 宜川县| 松阳县| 曲水县| 勃利县| 武胜县|