專利名稱:處理系統(tǒng)中動(dòng)態(tài)生成的任務(wù)的信令、排序和執(zhí)行的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總體上涉及計(jì)算任務(wù)的執(zhí)行,并且更具體地,涉及處理系統(tǒng)中動(dòng)態(tài)生成的任務(wù)的信令、排序和執(zhí)行。
背景技術(shù):
常規(guī)上,將要在多處理器系統(tǒng)中處理的任務(wù)均接收自單個(gè)輸入流。如果第一任務(wù)將會(huì)生成將要由第二任務(wù)所處理的數(shù)據(jù),那么還從單個(gè)輸入流接收第二任務(wù),并且由中央處理單元(CPU)實(shí)施將第二任務(wù)插入單個(gè)輸入流,該中央處理單元與多處理器系統(tǒng)是分開(kāi)的。為了實(shí)施插入,必須告知CPU準(zhǔn)備處理第二任務(wù),并且為其提供存儲(chǔ)第二任務(wù)的位置。第二任務(wù)的處理由于執(zhí)行第一任務(wù)的多處理器系統(tǒng)和CPU之間所需的通信而造成的延遲而引發(fā)附加等待時(shí)間。相應(yīng)地,本領(lǐng)域需要一種用于使能所生成的任務(wù)插入到多處理器系統(tǒng)的調(diào)度管線中而無(wú)需CPU的參與的系統(tǒng)和方法。
發(fā)明內(nèi)容
用于使能所生成的處理任務(wù)插入到多處理器系統(tǒng)的調(diào)度管線中而無(wú)需CPU的參與的系統(tǒng)和方法。當(dāng)正在執(zhí)行的計(jì)算任務(wù)動(dòng)態(tài)生成動(dòng)態(tài)任務(wù)并且寫(xiě)存儲(chǔ)器中隊(duì)列的用于動(dòng)態(tài)任務(wù)的數(shù)據(jù)存儲(chǔ)于其中的條目時(shí),生 成反射通知信號(hào)并且直接將其傳輸?shù)蕉嗵幚砥飨到y(tǒng)的調(diào)度單元,而無(wú)需CPU參與。所傳輸?shù)姆瓷渫ㄖ盘?hào)包括與在隊(duì)列中存儲(chǔ)數(shù)據(jù)的寫(xiě)請(qǐng)求相對(duì)應(yīng)的信息。響應(yīng)于其他事件在計(jì)算任務(wù)的執(zhí)行期間生成附加信號(hào)并且其被直接傳輸?shù)秸{(diào)度單元,所述其他事件例如開(kāi)始動(dòng)態(tài)任務(wù)的處理、使存儲(chǔ)用于計(jì)算任務(wù)的數(shù)據(jù)的高速緩存條目無(wú)效,以及使能另一個(gè)計(jì)算任務(wù)的調(diào)度。用于通知任務(wù)管理器數(shù)據(jù)可用于處理的本發(fā)明的方法的各種實(shí)施例包括:生成傳輸?shù)饺蝿?wù)管理器的第一通知信號(hào),其中通知信號(hào)包括第一偏移和第一 Λ值。在與第一處理任務(wù)相對(duì)應(yīng)的隊(duì)列中存儲(chǔ)與第一偏移和第一 △值相關(guān)聯(lián)的第一數(shù)據(jù)。生成第二通知信號(hào)并將其傳輸?shù)饺蝿?wù)管理器,其中通知信號(hào)包括第二偏移和第二 Λ值。在與第一處理任務(wù)相對(duì)應(yīng)的隊(duì)列中存儲(chǔ)與第二偏移和第二 △值相關(guān)聯(lián)的第二數(shù)據(jù)。接收所述第一通知信號(hào)和第二通知信號(hào),并且任務(wù)管理器確定第一偏移和第一 △值是否能夠與第二偏移和第二 Δ值合并,以生成經(jīng)合并的偏移和經(jīng)合并的△值。任務(wù)管理器調(diào)度用于處理集群陣列中的第一處理任務(wù)的第一數(shù)據(jù)和第二數(shù)據(jù)中的至少一個(gè)的處理。本發(fā)明的各種實(shí)施例包括用于通知任務(wù)管理器數(shù)據(jù)可用于處理的系統(tǒng),其包括隊(duì)列、存儲(chǔ)器管理單元和任務(wù)管理器。隊(duì)列對(duì)應(yīng)于第一處理任務(wù)并且配置為存儲(chǔ)包括第一數(shù)據(jù)和第二數(shù)據(jù)的數(shù)據(jù);存儲(chǔ)器管理單元配置為生成直接傳輸?shù)饺蝿?wù)管理器的第一通知信號(hào),其中通知信號(hào)指定與第一數(shù)據(jù)相關(guān)聯(lián)的第一偏移和第一 △值,以及生成直接傳輸?shù)饺蝿?wù)管理器的第二通知信號(hào),其中通知信號(hào)指定與第二數(shù)據(jù)相關(guān)聯(lián)的第二偏移和第二 Λ值。任務(wù)管理器配置為接收第一通知信號(hào)和第二通知信號(hào),確定第一偏移和第一 Λ值是否能夠與第二偏移和第二 △值合并,以生成經(jīng)合并的偏移和經(jīng)合并的△值,以及調(diào)度用于處理集群陣列中的第一處理任務(wù)的第一數(shù)據(jù)和第二數(shù)據(jù)中的至少一個(gè)的處理。此外,與將動(dòng)態(tài)任務(wù)隊(duì)列中的條目分配給生成用于動(dòng)態(tài)任務(wù)的數(shù)據(jù)的線程的順序相比,寫(xiě)動(dòng)態(tài)任務(wù)隊(duì)列的條目的順序可以不同。因此,當(dāng)由線程動(dòng)態(tài)生成的數(shù)據(jù)寫(xiě)入隊(duì)列時(shí),跟蹤已經(jīng)被寫(xiě)的隊(duì)列的有順序的條目,并且當(dāng)在隊(duì)列的前面的條目的序列已經(jīng)被寫(xiě)并且可以調(diào)度用于處理以開(kāi)始(或繼續(xù))動(dòng)態(tài)任務(wù)的執(zhí)行時(shí)通知調(diào)度單元。分配條目給執(zhí)行生成用于動(dòng)態(tài)任務(wù)的數(shù)據(jù)的計(jì)算任務(wù)的線程與由不同的線程寫(xiě)條目的解耦允許生成數(shù)據(jù)的線程簡(jiǎn)單地寫(xiě)條目并隨后退出或繼續(xù)處理其他數(shù)據(jù)。因此,線程寫(xiě)隊(duì)列不需要按照與線程接收條目的分配相同的順序進(jìn)行。但是,當(dāng)條目的序列準(zhǔn)備好被調(diào)度時(shí),跟蹤和通知調(diào)度單元允許盡快地處理數(shù)據(jù)。重要的是,做以下事情不需要與CPU通信:(a)當(dāng)用于動(dòng)態(tài)任務(wù)的數(shù)據(jù)準(zhǔn)備好被處理時(shí)通知CPU,(b)使高速緩存條目無(wú)效,或(C)使能另一個(gè)計(jì)算任務(wù)的調(diào)度。因此,與要求(PU參與的系統(tǒng)相比較,為以下工作減小等待時(shí)間:(a)調(diào)度動(dòng)態(tài)任務(wù)數(shù)據(jù)的處理,(b)無(wú)效高速緩存條目,和(c )使能另一個(gè)計(jì)算任務(wù)的調(diào)度。
為了詳細(xì)地理解本發(fā)明的上述特征,對(duì)于以上簡(jiǎn)要概括的發(fā)明,可以參照實(shí)施例進(jìn)行更為具體的描述,其中一些實(shí)施例示出于附圖中。然而,應(yīng)注意的是,附圖中示出的只是本發(fā)明的代表性實(shí)施例,因此不應(yīng)被認(rèn)為是對(duì)本發(fā)明的范圍的限制,本發(fā)明可以適用于其他同等有效的實(shí)施例。圖1是示出了配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的框圖;圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的、用于圖1的計(jì)算機(jī)系統(tǒng)的并行處理子系統(tǒng)的框圖;圖3A是根據(jù)本發(fā)明一個(gè)實(shí)施例的、圖2的任務(wù)/工作單元的框圖;圖3B是根據(jù)本發(fā)明一個(gè)實(shí)施例的、圖2的通用處理集群(GPC)的框圖;圖3C是根據(jù)本發(fā)明一個(gè)實(shí)施例的、圖3A的任務(wù)元數(shù)據(jù)(TMD)的內(nèi)容的概念圖;圖3D示出根據(jù)本發(fā)明一個(gè)實(shí)施例的、用于當(dāng)生成子任務(wù)時(shí)寫(xiě)入隊(duì)列的方法的流程圖;圖4示出根據(jù)本發(fā)明一個(gè)實(shí)施例的、用于處理vspan反射通知信號(hào)的方法的流程圖;圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的、當(dāng)vspan被合并時(shí)的圖3C的隊(duì)列的內(nèi)容的概念圖;圖6示出根據(jù)本發(fā)明一個(gè)實(shí)施例的、用于合并vspan的方法的流程圖;以及圖7示出根據(jù)本發(fā)明一個(gè)實(shí)施例的、用于處理反射通知信號(hào)的方法。
具體實(shí)施例方式在下面的描述中,將闡述大量的特定細(xì)節(jié)以提供對(duì)本發(fā)明更深入的理解。然而,本技術(shù)領(lǐng)域的技術(shù)人員應(yīng)該清楚,本發(fā)明可以在沒(méi)有一個(gè)或多個(gè)這些具體細(xì)節(jié)的情況下得以實(shí)施。在其他例子中,沒(méi)有描述公知的特征以避免對(duì)本發(fā)明造成混淆。處理單元直接與任務(wù)管理單元通信而無(wú)需由CPU參與并且無(wú)需插入指令到入棧緩沖區(qū)中。當(dāng)處理單元執(zhí)行計(jì)算任務(wù)并動(dòng)態(tài)生成子任務(wù)的時(shí)候,當(dāng)用于子任務(wù)的數(shù)據(jù)可用于處理時(shí)處理單元通知任務(wù)管理單元。隨后任務(wù)管理單元通過(guò)將子任務(wù)插入到任務(wù)列表中來(lái)調(diào)度子任務(wù)用于執(zhí)行。處理單元和任務(wù)管理單元之間的直接通信最小化了生成子任務(wù)數(shù)據(jù)的時(shí)間和調(diào)度該子任務(wù)數(shù)據(jù)的處理之間引發(fā)的延遲。系統(tǒng)概述圖1是示出了配置為實(shí)現(xiàn)本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)100的框圖。計(jì)算機(jī)系統(tǒng)100包括中央處理單元(CPU) 102和系統(tǒng)存儲(chǔ)器104,兩者經(jīng)由可包括存儲(chǔ)器橋105的互連路徑通信。存儲(chǔ)器橋105例如可以是北橋芯片,經(jīng)由總線或其他通信路徑106(例如,超傳輸鏈接)連接到I/O (輸入/輸出)橋107。I/O橋107例如可以是南橋芯片,從一個(gè)或多個(gè)用戶輸入設(shè)備108 (例如,鍵盤(pán)、鼠標(biāo))接收用戶輸入,并將該輸入經(jīng)由通信路徑106和存儲(chǔ)器橋105轉(zhuǎn)發(fā)至CPU 102。并行處理子系統(tǒng)112經(jīng)由總線或第二通信路徑113(例如,PCI Express、加速圖形端口或超傳輸鏈接)耦合至存儲(chǔ)器橋105 ;在一個(gè)實(shí)施例中,并行處理子系統(tǒng)112是將像素傳遞到顯示設(shè)備110 (例如,常規(guī)的基于CRT或IXD的監(jiān)視器)的圖形子系統(tǒng)。系統(tǒng)盤(pán)114還連接到I/O橋107。開(kāi)關(guān)116為I/O橋107和諸如網(wǎng)絡(luò)適配器118以及各種插卡(add-1n card) 120和121的其他部件之間提供了連接。其他部件(未明確示出)也可以連接到I/O橋107,包括USB或其他端口連接、CD驅(qū)動(dòng)器、DVD驅(qū)動(dòng)器、膠片記錄設(shè)備等。圖1中所示的包括具體命名為通信路徑106和113的各種通信路徑可以使用任何合適的協(xié)議來(lái)實(shí)現(xiàn),諸如PCI (外圍部件互連)、PC1-Express, AGP (加速圖形端口)、超傳輸或任何其他總線或點(diǎn)對(duì)點(diǎn)通信協(xié)議,并且不同部件之間的連接可以使用本領(lǐng)域已知的不同協(xié)議。在一個(gè)實(shí)施例中,并行處理子系統(tǒng)112包含被優(yōu)化用于圖形和視頻處理的電路,例如包括視頻輸出電路,并且構(gòu)成圖形處理單元(GPU)。在另一個(gè)實(shí)施例中,并行處理子系統(tǒng)112包含被優(yōu)化用于通用處理的電路,同時(shí)保留底層的(underlying)計(jì)算架構(gòu),本文將進(jìn)行更為詳細(xì)的描述。在又一個(gè)實(shí)施例中,并行處理子系統(tǒng)112可與單個(gè)子系統(tǒng)中的一個(gè)或多個(gè)其他系統(tǒng)元件集成,諸如結(jié)合存儲(chǔ)器橋105、CPU 102和I/O橋107以形成片上系統(tǒng)(SoC)。應(yīng)理解的是,本文所示系統(tǒng)是例示性的,可以對(duì)其進(jìn)行變形和修改。可根據(jù)需要修改連接拓?fù)浣Y(jié)構(gòu),包括橋的數(shù)目和布置、CPU 102的數(shù)目以及并行處理子系統(tǒng)112的數(shù)目。例如,在一些實(shí)施例中,系統(tǒng)存儲(chǔ)器104直接連接到CPU 102而非通過(guò)橋連接,并且其他器件經(jīng)由存儲(chǔ)器橋105和CPU 102與系統(tǒng)存儲(chǔ)器104通信。在其他替代拓?fù)浣Y(jié)構(gòu)中,并行處理子系統(tǒng)112連接到I/O橋107或者直接連接到CPU 102,而非連接到存儲(chǔ)器橋105。在又一些實(shí)施例中,I/O橋107和存儲(chǔ)器橋105可能被集成到單個(gè)芯片中而不是作為一個(gè)或多個(gè)分立的部件存在。大型實(shí)施例可包括兩個(gè)或更多CPU 102以及包括兩個(gè)或更多并行處理子系統(tǒng)112。本文所示特定部件是可選的;例如,任何數(shù)目的插卡或外圍設(shè)備都可能得到支持。在一些實(shí)施例中,開(kāi)關(guān)116被省去,并且網(wǎng)絡(luò)適配器118和插卡120、121直接連接到I/O 橋 107。圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的并行處理子系統(tǒng)112。如圖所示,并行處理子系統(tǒng)112包括一個(gè)或多個(gè)并行處理單元(Pro)202,其每一個(gè)均耦合至本地并行處理(PP)存儲(chǔ)器204。一般來(lái)講,并行處理子系統(tǒng)包括U個(gè)PPU,其中US I。(本文中,相似對(duì)象的多個(gè)實(shí)體用標(biāo)識(shí)該對(duì)象的參考數(shù)字并根據(jù)需要結(jié)合標(biāo)識(shí)該實(shí)體的帶括號(hào)的數(shù)字加以表示)。PPU202和并行處理存儲(chǔ)器204可用一個(gè)或多個(gè)諸如可編程處理器、專用集成電路(ASIC)或存儲(chǔ)器器件這類集成電路器件來(lái)實(shí)現(xiàn),或者以任何其他在技術(shù)上可行的方式來(lái)實(shí)現(xiàn)。再次參照?qǐng)D1,在一些實(shí)施例中,并行處理子系統(tǒng)112中的一些或所有PPU 202是具有渲染管線的圖形處理器,可以配置為實(shí)施與下述各項(xiàng)相關(guān)的各種任務(wù):由圖形數(shù)據(jù)生成像素?cái)?shù)據(jù),所述圖形數(shù)據(jù)是由CPU 102和/或系統(tǒng)存儲(chǔ)器104經(jīng)由存儲(chǔ)器橋105和第二通信路徑113而供給的;與本地并行處理存儲(chǔ)器204 (可以作為圖形存儲(chǔ)器加以使用,包括例如常規(guī)的幀緩沖區(qū))交互,以存儲(chǔ)和更新像素?cái)?shù)據(jù);將像素?cái)?shù)據(jù)傳遞到顯示設(shè)備110 ;等等。在一些實(shí)施例中,并行處理子系統(tǒng)112可包括作為圖形處理器而操作的一個(gè)或多個(gè)PPU202以及供通用計(jì)算使用的一個(gè)或多個(gè)其他PPU 202。這些PTO可相同或不同,并且每個(gè)PPU均可具有其自己的專用的并行處理存儲(chǔ)器器件或非專用并行處理存儲(chǔ)器器件。并行處理子系統(tǒng)112中的一個(gè)或多個(gè)PPU 202可向顯示設(shè)備110或并行處理子系統(tǒng)112中的每個(gè)PPU202輸出數(shù)據(jù),或者每個(gè)PPU 202均可向一個(gè)或多個(gè)顯示設(shè)備110輸出數(shù)據(jù)。操作中,CPU 10 2是計(jì)算機(jī)系統(tǒng)100的主處理器,控制并協(xié)調(diào)其他系統(tǒng)部件的操作。特別是,CPU 102發(fā)出控制PPU 202的操作的命令。在一些實(shí)施例中,CPU 102將針對(duì)每個(gè)PPU 202的命令流寫(xiě)入到數(shù)據(jù)結(jié)構(gòu)(圖1和圖2中均未明確示出)中,所述數(shù)據(jù)結(jié)構(gòu)可位于系統(tǒng)存儲(chǔ)器104、并行處理存儲(chǔ)器204或者CPU 102和PPU 202均可訪問(wèn)的另一個(gè)存儲(chǔ)位置中。對(duì)入棧緩沖區(qū)(pushbuffer)寫(xiě)入指向每個(gè)數(shù)據(jù)結(jié)構(gòu)的指針來(lái)開(kāi)始數(shù)據(jù)結(jié)構(gòu)中命令流的處理。PPU 202從一個(gè)或多個(gè)入棧緩沖區(qū)讀取命令流,然后相對(duì)于CPU 102的操作異步地執(zhí)行命令。可經(jīng)由設(shè)備驅(qū)動(dòng)程序103由應(yīng)用程序?yàn)槊總€(gè)入棧緩沖區(qū)指定執(zhí)行優(yōu)先級(jí),以控制不同入棧緩沖區(qū)的調(diào)度?,F(xiàn)在返回參考圖2,每個(gè)PPU 202均包括I/O (輸入/輸出)單元205,該I/O單元205經(jīng)由通信路徑113與計(jì)算機(jī)系統(tǒng)100的其余部分通信,其連接到存儲(chǔ)器橋105 (或者,在一個(gè)替代實(shí)施例中,直接連接到CPU 102)。PPU 202到計(jì)算機(jī)系統(tǒng)100的其余部分的連接也可以變化。在一些實(shí)施例中,并行處理子系統(tǒng)112實(shí)現(xiàn)為可以被插入到計(jì)算機(jī)系統(tǒng)100的擴(kuò)展槽中的插卡。在另一些實(shí)施例中,PPU 202可以集成在具有諸如存儲(chǔ)器橋105或I/O橋107這類總線橋的單個(gè)芯片上。在又一些實(shí)施例中,PI3U 202中的一些或全部元件可集成在具有CPU 102的單個(gè)芯片上。在一個(gè)實(shí)施例中,通信路徑113是PCI Express鏈接,其中給每個(gè)PPU202分配有專用通道(lane),如本領(lǐng)域已知的。也可使用其他通信路徑。I/O單元205生成數(shù)據(jù)包(或其他信號(hào))用于在通信路徑113上傳輸,并且也從通信路徑113接收所有傳入的數(shù)據(jù)包(或其他信號(hào)),將傳入的數(shù)據(jù)包引向PPU 202的適當(dāng)部件。例如,可將與處理任務(wù)相關(guān)的命令引向主機(jī)接口 206,而可將與存儲(chǔ)器操作相關(guān)的命令(例如,對(duì)并行處理存儲(chǔ)器204的讀取或?qū)懭?引向存儲(chǔ)器交叉開(kāi)關(guān)(crossbar)單元210。主機(jī)接口 206對(duì)每個(gè)入棧緩沖區(qū)進(jìn)行讀取并將存儲(chǔ)在入棧緩沖區(qū)中的命令流輸出到前端212。每個(gè)PPU 202均有利地實(shí)現(xiàn)高度并行的處理架構(gòu)。如圖中詳細(xì)所示,PPU 202(0)包括處理集群陣列230,該陣列包括C個(gè)通用處理集群(GPC) 208,其中C彡I。每個(gè)GPC208均能夠并發(fā)執(zhí)行大量(例如,數(shù)百個(gè)或數(shù)千個(gè))線程,其中每個(gè)線程均為程序的實(shí)例(instance)。在各種應(yīng)用中,可分配不同的GPC 208,用于處理不同類型的程序或用于實(shí)施不同類型的計(jì)算。GPC 208的分配可依據(jù)每個(gè)類型的程序或計(jì)算產(chǎn)生的工作量而變化。GPC 208從在任務(wù)/工作單元207內(nèi)的工作分布單元接收將要執(zhí)行的處理任務(wù)。工作分布單元接收指向被編碼為任務(wù)元數(shù)據(jù)(TMD)并存儲(chǔ)在存儲(chǔ)器中的計(jì)算處理任務(wù)的指針(任務(wù)指針)。指向TMD的任務(wù)指針包括在命令流中,所述命令流被存儲(chǔ)為入棧緩沖區(qū)并由前端單元212從主機(jī)接口 206接收??删幋a為T(mén)MD的處理任務(wù)包括將要處理的數(shù)據(jù)的索引以及定義將如何處理數(shù)據(jù)(例如,將執(zhí)行什么程序)的命令和狀態(tài)參數(shù)。任務(wù)/工作單元207從前端212接收任務(wù)并保證GPC 208在由每一個(gè)TMD所指定的處理開(kāi)始前被配置為有效狀態(tài)??蔀槊總€(gè)用于調(diào)度處理任務(wù)的執(zhí)行的TMD指定優(yōu)先級(jí)。存儲(chǔ)器接口 214包括D個(gè)分區(qū)單元215,這些分區(qū)單元每一個(gè)均直接耦合至并行處理存儲(chǔ)器204的一部分,其中D彡I。如圖所示,分區(qū)單元215的數(shù)目通常等于DRAM 220的數(shù)目。在另一些實(shí)施例中,分區(qū)單元215的數(shù)目可以不等于存儲(chǔ)器器件的數(shù)目。本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到,DRAM 220可用其他合適的存儲(chǔ)器件代替,并且可以采用一般常規(guī)設(shè)計(jì)。因此省略詳細(xì)描述??煽鏒RAM 220來(lái)存儲(chǔ)諸如幀緩沖區(qū)或紋理映射這樣的渲染對(duì)象,允許分區(qū)單元215并行地寫(xiě)入每個(gè)渲染對(duì)象的各部分,以高效地使用并行處理存儲(chǔ)器204的可用帶寬。GPC 208中的任何一個(gè)都可處理將被寫(xiě)入并行處理存儲(chǔ)器204內(nèi)任何DRAM 220的數(shù)據(jù)。交叉開(kāi)關(guān)單元210配置為將每個(gè)GPC 208的輸出路由(route)至任何分區(qū)單元215的輸入或路由至另一 GPC 208,用于進(jìn)一步處理。GPC 208通過(guò)交叉開(kāi)關(guān)單元210與存儲(chǔ)器接口 214通信,以對(duì)各種外部存儲(chǔ)器器件進(jìn)行讀寫(xiě)。在一個(gè)實(shí)施例中,交叉開(kāi)關(guān)單元210具有至存儲(chǔ)器接口 214的連接以與I/O單元205通信,以及具有至本地并行處理存儲(chǔ)器204的連接從而使不同GPC 208內(nèi)的處理內(nèi)核能夠與系統(tǒng)存儲(chǔ)器104或相對(duì)于PPU 202來(lái)講非本地的其他存儲(chǔ)器通信。在圖2所示實(shí)施例中,交叉開(kāi)關(guān)單元210與I/O單元205直接連接。交叉開(kāi)關(guān)單元210可使用虛擬信道在GPC 208和分區(qū)單元215之間分割業(yè)務(wù)(traffic)流。再者,GPC 208可以編程為執(zhí)行與種類繁多的應(yīng)用相關(guān)的處理任務(wù),包括但不限于線性和非線性數(shù)據(jù)變換、視頻和/或音頻數(shù)據(jù)的過(guò)濾、建模操作(例如,運(yùn)用物理定律確定對(duì)象的位置、速率和其他屬性)、圖像渲染操作(例如,曲面細(xì)分著色、頂點(diǎn)著色、幾何著色和/或像素著色程序)等等。PPU 202可將數(shù)據(jù)從系統(tǒng)存儲(chǔ)器104和/或本地并行處理存儲(chǔ)器204轉(zhuǎn)移到內(nèi)部(片上)存儲(chǔ)器中,對(duì)數(shù)據(jù)進(jìn)行處理,并將結(jié)果數(shù)據(jù)寫(xiě)回到系統(tǒng)存儲(chǔ)器104和/或本地并行處理存儲(chǔ)器204,在這里這類數(shù)據(jù)可以由其他系統(tǒng)部件訪問(wèn),包括CPU 102或另一并行處理子系統(tǒng)112。PPU 202可設(shè)置具有任何容量(amount)的本地并行處理存儲(chǔ)器204,包括不設(shè)置本地存儲(chǔ)器,并且可以任何組合方式來(lái)使用本地存儲(chǔ)器和系統(tǒng)存儲(chǔ)器。例如,在統(tǒng)一存儲(chǔ)器架構(gòu)(UMA)實(shí)施例中,PPU 202可以是圖形處理器。在這樣的實(shí)施例中,將會(huì)提供極少的甚至不提供專用圖形(并行處理)存儲(chǔ)器,并且PPU 202將以排他的方式或者幾乎以排他的方式使用系統(tǒng)存儲(chǔ)器。在UMA實(shí)施例中,PPU 202可集成到橋式芯片或處理器芯片中,或者可被提供為具有高速鏈接 (例如,PCI EXPRESS)的分立芯片,所述高速鏈接經(jīng)由橋式芯片或其他通信手段將PPU 202連接到系統(tǒng)存儲(chǔ)器。
如上所述,并行處理子系統(tǒng)112中可以包括有任何數(shù)目的PPU 202。例如,可以在單個(gè)插卡上提供多個(gè)PPU 202,或者多個(gè)插卡可以連接到通信路徑113,或者PPU 202中的一個(gè)或多個(gè)可以集成到橋式芯片中。多PPU系統(tǒng)中的PPU 202可彼此相同或不同。例如,不同的PPU 202可能具有不同數(shù)量的處理內(nèi)核、不同容量的本地并行處理存儲(chǔ)器等。在存在有多個(gè)PPU202的情況下,可以并行地操作這些PI3U從而以高于單個(gè)PPU 202可能達(dá)到的吞吐量來(lái)處理數(shù)據(jù)。包含一個(gè)或多個(gè)PPU 202的系統(tǒng)可以以各種配置和形式因素來(lái)加以實(shí)現(xiàn),包括桌上型電腦、膝上型電腦或者手持式個(gè)人計(jì)算機(jī)、服務(wù)器、工作站、游戲控制臺(tái)、嵌入式系統(tǒng)等。多個(gè)并發(fā)任務(wù)調(diào)度可在GPC 208上并發(fā)執(zhí)行多個(gè)處理任務(wù),并且處理任務(wù)可在執(zhí)行期間生成一個(gè)或多個(gè)動(dòng)態(tài)處理任務(wù)。任務(wù)/工作單元207接收任務(wù)并動(dòng)態(tài)調(diào)度處理任務(wù)和動(dòng)態(tài)處理任務(wù)用于由GPC 208執(zhí)行。圖3A是根據(jù)本發(fā)明的一個(gè)實(shí)施例的、圖2的任務(wù)/工作單元207的框圖。任務(wù)/工作單元207包括任務(wù)管理單元300和工作分布單元340。任務(wù)管理單元300基于執(zhí)行優(yōu)先級(jí)級(jí)別來(lái)組織將要調(diào)度的任務(wù)。對(duì)于每個(gè)優(yōu)先級(jí)級(jí)別,任務(wù)管理單元300存儲(chǔ)指向與在調(diào)度器表321中的任務(wù)相對(duì)應(yīng)的TMD 322的任務(wù)指針的列表,其中可采用鏈接列表來(lái)實(shí)現(xiàn)列表。TMD 322可存儲(chǔ)在PP存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中。任務(wù)管理單元300接受任務(wù)和將任務(wù)存儲(chǔ)在調(diào)度器表321中的速率與任務(wù)管理單元300調(diào)度任務(wù)用于執(zhí)行的速率解耦。因此,任務(wù)管理單元300可以在調(diào)度任務(wù)之前收集若干個(gè)任務(wù)。然后,所收集的任務(wù)可以基于優(yōu)先級(jí)信息或使用諸如輪叫調(diào)度的其他技術(shù)來(lái)調(diào)度。工作分布單元340包括具有槽的任務(wù)表345,所述槽可每個(gè)被TMD322占用,用于正在執(zhí)行的任務(wù)。當(dāng)任務(wù)表345中存在空閑槽時(shí),任務(wù)管理單元300可調(diào)度任務(wù)用于執(zhí)行。當(dāng)沒(méi)有空閑槽時(shí),未占用槽的較高優(yōu)先級(jí)任務(wù)可驅(qū)逐占用槽的較低優(yōu)先級(jí)任務(wù)。當(dāng)任務(wù)被驅(qū)逐時(shí),該任務(wù)停止,并且如果該任務(wù)的執(zhí)行未完成,那么指向?qū)⒅赶蛟撊蝿?wù)的指針添加到將要被調(diào)度的任務(wù)指針的列表,使得稍后恢復(fù)該任務(wù)的執(zhí)行。當(dāng)在任務(wù)的執(zhí)行期間生成動(dòng)態(tài)處理任務(wù)時(shí),將指向動(dòng)態(tài)任務(wù)的指針添加到將要調(diào)度的任務(wù)指針的列表??梢杂稍谔幚砑宏嚵?30中執(zhí)行的TMD 322來(lái)生成動(dòng)態(tài)任務(wù)。與由任務(wù)/工作單元207從前端212處所接收的任務(wù)不同,動(dòng)態(tài)任務(wù)是從處理集群陣列230處接收的。動(dòng)態(tài)任務(wù)不插入入棧緩沖區(qū)中或者傳輸?shù)角岸恕.?dāng)生成動(dòng)態(tài)任務(wù)或者將用于動(dòng)態(tài)任務(wù)的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中時(shí),不通知CPU 102。通過(guò)入棧緩沖區(qū)所提供的任務(wù)和動(dòng)態(tài)任務(wù)之間的另一個(gè)不同之處在于,通過(guò)入棧緩沖區(qū)所提供的任務(wù)由應(yīng)用程序定義,而動(dòng)態(tài)任務(wù)在任務(wù)執(zhí)行期間動(dòng)態(tài)生成。任務(wù)管理單元300還包括調(diào)度器表421、存儲(chǔ)一個(gè)或多個(gè)TMD 322的TMD高速緩存305。每個(gè)TMD 322可以是通常存儲(chǔ)在PP存儲(chǔ)器204中的大的結(jié)構(gòu),例如256字節(jié)或更大。由于大尺寸,依據(jù)帶寬來(lái)訪問(wèn)TMD 322是昂貴的。因此,TMD高速緩存305僅存儲(chǔ)任務(wù)管理單元300所需的TMD322的一部分(相對(duì)小)用于調(diào)度。當(dāng)調(diào)度任務(wù)時(shí),即傳送至工作分配單元340時(shí),可以從PP存儲(chǔ)器204取得TMD 322的其余部分。在軟件控制下寫(xiě)TMD 322,并且當(dāng)計(jì)算任務(wù)完成執(zhí)行時(shí),可以循環(huán)利用與所完成的計(jì)算任務(wù)相關(guān)聯(lián)的TMD 322以存儲(chǔ)用于不同計(jì)算任務(wù)的信息。因?yàn)門(mén)MD 322可以存儲(chǔ)在TMD高速緩存305中,應(yīng)該使存儲(chǔ)用于完成的計(jì)算任務(wù)的信息的條目在重新使用之前從TMD高速緩存305無(wú)效。因?yàn)樵谟捎跐撛谶M(jìn)行中的高速緩存線驅(qū)逐而將存儲(chǔ)在TMD高速緩存305中的信息寫(xiě)回到TMD 322和將用于新任務(wù)的信息寫(xiě)入TMD 322之間存在競(jìng)爭(zhēng)條件,所以無(wú)效操作是復(fù)雜的。特別是,將用于新任務(wù)的信息寫(xiě)入TMD322并且隨后將TMD 322輸出至前端212作為入棧緩沖區(qū)的一部分。因此,在設(shè)備驅(qū)動(dòng)程序103開(kāi)始寫(xiě)新信息之前,寫(xiě)新任務(wù)的設(shè)備驅(qū)動(dòng)程序103不會(huì)接收到TMD高速緩存305已經(jīng)無(wú)效的確認(rèn)。因此,設(shè)備驅(qū)動(dòng)程序103不能夠?qū)⒂糜谛氯蝿?wù)的信息寫(xiě)入TMD 322進(jìn)行延遲,直到完成任何的潛在寫(xiě)回。因?yàn)榇鎯?chǔ)在TMD高速緩存305中的驅(qū)逐信息所引起的寫(xiě)回可以為新任務(wù)重寫(xiě)存儲(chǔ)在TMD 322中的信息,所以每個(gè)TMD 322的“純硬件”部分為僅由任務(wù)管理單元300所訪問(wèn)而留出。TMD 322的其余部分可以由軟件或者任務(wù)管理單元300訪問(wèn)??梢杂稍O(shè)備驅(qū)動(dòng)程序103訪問(wèn)的TMD 322的部分一般經(jīng)由設(shè)備驅(qū)動(dòng)程序103由應(yīng)用程序填充以開(kāi)始任務(wù)。隨后在任務(wù)的調(diào)度和執(zhí)行期間,TMD 322由任務(wù)管理單元300和GPC 208中的其他處理單元訪問(wèn)。當(dāng)用于新計(jì)算任務(wù)的信息寫(xiě)入TMD 322時(shí),啟動(dòng)TMD 322的命令可以在首次將TMD 322加載到TMD高速緩存305時(shí)指定是否復(fù)制位到TMD 322的純硬件部分中。這確保TMD 322將正確地僅存儲(chǔ)用于新計(jì)算任務(wù)的信息,這是因?yàn)橛糜谕瓿傻挠?jì)算任務(wù)的任何信息僅存儲(chǔ)在TMD322的純硬件部分。處理集群陣列230生成各種不同的信號(hào)來(lái)實(shí)施不同的操作。在一些實(shí)施例中,所生成的信號(hào)轉(zhuǎn)換為傳輸?shù)饺蝿?wù)/工作單元207的反射通知信號(hào)以實(shí)施不同的操作,而無(wú)需CPU 102參與。當(dāng)存儲(chǔ)器管理單元(MMU,圖3B中示出為MMU 328)接收到針對(duì)TMD 322隊(duì)列的寫(xiě)請(qǐng)求時(shí),生成反射通知信號(hào)。配置MMU的頁(yè)表?xiàng)l目使得將數(shù)據(jù)存儲(chǔ)在TMD 322隊(duì)列的一個(gè)或多個(gè)條目中的寫(xiě)請(qǐng)求以反射通知信號(hào)的形式反射到任務(wù)管理單元300。寫(xiě)請(qǐng)求的一部分編碼所生成的反射通知信號(hào)的類型,例如,無(wú)效、調(diào)度、復(fù)制和vspan。在其他實(shí)施例中,一個(gè)或多個(gè)特定指令用于直接傳輸通知信號(hào)到任務(wù)/工作單元207。特別是,特定指令可以用于生成無(wú)效、調(diào)度和復(fù)制通知信號(hào),這是因?yàn)檫@些通知信號(hào)不指定由vspan通知信號(hào)所指定的附加信息(偏移、△值)。在處理集群陣列2 30完成任務(wù)的執(zhí)行之后,生成第一類型的反射通知信號(hào)。第一類型的反射通知信號(hào)是無(wú)效反射通知信號(hào),其用于使TMD高速緩存305中的條目無(wú)效。當(dāng)執(zhí)行任務(wù)的最后的線程退出由TMD 322所指定的程序時(shí),也就是當(dāng)TMD 322的執(zhí)行完成時(shí),可以生成無(wú)效反射通知信號(hào)??商娲?,可以在最后的線程退出之后但在重新使用TMD高速緩存305中的條目之前,生成無(wú)效反射通知信號(hào)。當(dāng)處理集群陣列230使能編碼為不同的TMD 322的計(jì)算任務(wù)的調(diào)度時(shí),生成第二類型的反射通知信號(hào)。第二類型的反射通知信號(hào)是調(diào)度反射通知信號(hào)。當(dāng)TMD 322首次用來(lái)控制TMD 322的純硬件部分的復(fù)制時(shí),由處理集群陣列230生成第三類型的反射通知信號(hào)。第三類型的反射通知信號(hào)是復(fù)制反射通知信號(hào)。除了指定反射通知信號(hào)的類型外(無(wú)效、調(diào)度、復(fù)制),每個(gè)不同的反射通知信號(hào)還指定與生成各自反射通知信號(hào)的TMD322相對(duì)應(yīng)的標(biāo)識(shí)符。反射通知信號(hào)的類型可以通過(guò)與無(wú)效、調(diào)度和復(fù)制操作相關(guān)聯(lián)的特定的寫(xiě)地址指示??梢远x反射地址的范圍,以致針對(duì)特定寫(xiě)地址的寫(xiě)請(qǐng)求使得生成反射通知信號(hào)。在一個(gè)實(shí)施例中,因?yàn)槭沟蒙蔁o(wú)效反射通知信號(hào)、調(diào)度反射通知信號(hào)和復(fù)制反射通知信號(hào)的寫(xiě)請(qǐng)求實(shí)際上不需要數(shù)據(jù),所以寫(xiě)請(qǐng)求不指定數(shù)據(jù)。
任務(wù)管理單元300還包括vspan單元312,其配置為對(duì)動(dòng)態(tài)生成并寫(xiě)入用于動(dòng)態(tài)任務(wù)的TMD 322的隊(duì)列的數(shù)據(jù)進(jìn)行合并。隊(duì)列的條目可以按一個(gè)順序來(lái)分配而且可以按不同的順序來(lái)填充。當(dāng)由處理集群陣列230將數(shù)據(jù)存儲(chǔ)在動(dòng)態(tài)TMD 322中時(shí),生成是vpsan反射通知信號(hào)的反射通知信號(hào)并且將其輸出到任務(wù)管理單元300,指示已經(jīng)被寫(xiě)的隊(duì)列的條目。等待將寫(xiě)入隊(duì)列的順序的條目中的數(shù)據(jù)與等待隊(duì)列條目解耦,允許生成數(shù)據(jù)的TMD 322簡(jiǎn)單地寫(xiě)條目并且隨后退出或者繼續(xù)處理其他數(shù)據(jù)。由針對(duì)隊(duì)列的寫(xiě)請(qǐng)求所生成的vspan反射通知信號(hào)包括對(duì)應(yīng)于該寫(xiě)請(qǐng)求的信息。vspan反射通知信號(hào)指定所寫(xiě)的數(shù)據(jù)的長(zhǎng)度和起始條目。對(duì)應(yīng)于寫(xiě)請(qǐng)求的vspan反射通知信號(hào)不包括寫(xiě)到隊(duì)列的數(shù)據(jù)。vspan指示動(dòng)態(tài)TMD 322的隊(duì)列中的有效的,即已經(jīng)寫(xiě)入數(shù)據(jù)的,條目的集合。在TMD 322的執(zhí)行期間,寫(xiě)到動(dòng)態(tài)TMD 322的數(shù)據(jù)可以由相同的動(dòng)態(tài)TMD322、不同的TMD 322或者不是動(dòng)態(tài)生成的TMD 322來(lái)寫(xiě)。分配隊(duì)列條目給線程,并且之后每個(gè)線程將數(shù)據(jù)寫(xiě)入分配給各自線程的條目。因?yàn)槊總€(gè)線程獨(dú)立執(zhí)行,所以可以不按照分配條目的順序來(lái)向條目寫(xiě)數(shù)據(jù)。換言之,可以“不按順序”寫(xiě)隊(duì)列條目。vspan單元312跟蹤由vspan反射通知信號(hào)提供的vspan,并且當(dāng)可能時(shí)合并相鄰的vspan到隊(duì)列條目的序列中。然后,當(dāng)在用于TMD 322的隊(duì)列的前面的隊(duì)列條目的序列可用于處理時(shí),vspan單元312通知任務(wù)管理單元300。當(dāng)vspan單元312通知任務(wù)管理單元300隊(duì)列條目的序列可用于處理時(shí),將指向隊(duì)列的前面的指針更新為指向第一未寫(xiě)條目。因?yàn)闂l目的 寫(xiě)與隊(duì)列條目的序列可用于處理的通知是解耦的,所以每個(gè)線程可以對(duì)分配給各自線程的條目進(jìn)行寫(xiě),并且可以退出而無(wú)需等待隊(duì)列中的其他條目被寫(xiě)、由線程所寫(xiě)的隊(duì)列條目被讀,或由線程所寫(xiě)的隊(duì)列條目的處理被調(diào)度。任務(wù)處理概述圖3B是根據(jù)本發(fā)明一個(gè)實(shí)施例的、圖2的一個(gè)PPU 202內(nèi)的GPC 208的框圖。每個(gè)GPC 208均可配置為并行地執(zhí)行大量線程,其中術(shù)語(yǔ)“線程”是指對(duì)特定的一組輸入數(shù)據(jù)執(zhí)行的特定程序的實(shí)例。在一些實(shí)施例中,使用單指令多數(shù)據(jù)(SIMD)指令發(fā)送技術(shù)來(lái)支持大量線程的并行執(zhí)行,而無(wú)需提供多個(gè)獨(dú)立指令單元。在另一些實(shí)施例中,采用單指令多線程(SMT)技術(shù),使用配置為發(fā)送指令到每一個(gè)GPC 208內(nèi)一組處理引擎的公共指令單元,來(lái)支持大量通常同步化的線程的并行執(zhí)行。不同于其中所有處理引擎一般都執(zhí)行相同指令的SMD執(zhí)行機(jī)制,SIMT執(zhí)行允許不同的線程更容易跟隨(follow)通過(guò)給定線程程序的發(fā)散的執(zhí)行路徑。本領(lǐng)域的普通技術(shù)人員將理解的是,SMD處理機(jī)制代表SMT處理機(jī)制的功能子集。經(jīng)由管線管理器305來(lái)有利地控制GPC 208的操作,所述管線管理器305將處理任務(wù)分布到流多處理器(SM) 310。管線管理器305也可配置為通過(guò)為由SM 310輸出的經(jīng)處理的數(shù)據(jù)指定目的地來(lái)控制工作分布交叉開(kāi)關(guān)330。在一個(gè)實(shí)施例中,每個(gè)GPC 208均包括M個(gè)SM 310,其中M彡I,每個(gè)SM 310均配置為處理一個(gè)或多個(gè)線程組。而且,每個(gè)SM 310還最好包括同樣的一組可被管線化的功能執(zhí)行單元(例如,執(zhí)行單元和加載-存儲(chǔ)單元等),從而允許在前一個(gè)指令結(jié)束之前發(fā)送新的指令,如本領(lǐng)域所已公知的??商峁┕δ軋?zhí)行單元的任何組合。在一個(gè)實(shí)施例中,這些功能單元支持各種操作,包括整數(shù)和浮點(diǎn)算法(例如,加法和乘法)、比較操作、布爾操作(AND、OR、X0R)、位移以及各種代數(shù)函數(shù)的計(jì)算(例如,平面插值、三角、指數(shù)和對(duì)數(shù)函數(shù)等);并且相同的功能單元硬件可均衡地用于(be leveraged to)實(shí)施不同操作。傳輸?shù)教囟℅PC 208的一系列指令構(gòu)成線程,如本文前面所定義的,并且跨SM310內(nèi)并行處理引擎(未示出)的一定數(shù)量并發(fā)執(zhí)行的線程的集合在本文中被稱為“卷繞包(warp)”或“線程組”。如本文所使用的,“線程組”是指對(duì)不同的輸入數(shù)據(jù)并發(fā)執(zhí)行同一程序的一組線程,且該組中有一個(gè)線程被指派給SM 310內(nèi)不同的處理引擎。線程組可包括比SM 310內(nèi)處理引擎的數(shù)量少的線程,在此情況下,在正在處理該線程組的周期內(nèi),一些處理引擎將處于閑置狀態(tài)。線程組也可包括比SM 310內(nèi)處理引擎的數(shù)量多的線程,在此情況下,處理將在連續(xù)的時(shí)鐘周期上進(jìn)行。由于每個(gè)SM310均可以并發(fā)地支持多達(dá)G個(gè)線程組,結(jié)果是在任意給定時(shí)間在GPC 208中可以執(zhí)行多達(dá)G*M個(gè)線程組。另外,在SM 310內(nèi),多個(gè)相關(guān)的線程組可同時(shí)處于激活狀態(tài)(處于不同執(zhí)行階段)。這種線程組的集合在本文中被稱為“協(xié)作線程陣列”(“CTA”)或“線程陣列”。特定CTA的大小等于mXk,其中k是線程組中并發(fā)執(zhí)行的線程的數(shù)量,并且一般是SM 310內(nèi)并行處理引擎的數(shù)量的整數(shù)倍,m是SM 310內(nèi)同時(shí)處于激活狀態(tài)的線程組的數(shù)量。CTA的大小通常由編程人員和CTA可用的硬件資源例如存儲(chǔ)器或寄存器的容量決定。每個(gè)SM 310均含有一級(jí)(LI)高速緩存(未示出),或使用在SM 310之外的相應(yīng)LI高速緩存中用以實(shí)施加載和存儲(chǔ)操作的空間。每個(gè)SM 310也均有權(quán)訪問(wèn)二級(jí)(L2)高速緩存,所述二級(jí)高速緩存在所有GPC 208之間共享并且可用于在線程之間轉(zhuǎn)移數(shù)據(jù)。最后,SM310也有權(quán)訪問(wèn)片外“全局”存儲(chǔ)器,該存儲(chǔ)器可以包括例如并行處理存儲(chǔ)器204和/或系統(tǒng)存儲(chǔ)器104。應(yīng)予以理解的是,PPU 202外部的任何存儲(chǔ)器都可用作全局存儲(chǔ)器。此外,一點(diǎn)五級(jí)(L1.5)高速緩存335可包括在GPC 208之內(nèi),配置為經(jīng)由存儲(chǔ)器接口 214來(lái)接收和保持從存儲(chǔ)器中所獲取的、SM 310所請(qǐng)求的數(shù)據(jù),包括指令、一致性(uniform)數(shù)據(jù)以及常數(shù)數(shù)據(jù),以及向SM 310提供所請(qǐng)求的數(shù)據(jù)。在GPC 208中具有多個(gè)SM 310的實(shí)施例有益地共享被高速緩存于L1.5高速緩存335中的公共指令和數(shù)據(jù)。每個(gè)GPC 208可包括存儲(chǔ)器管理單元(MMU) 328,該單元配置為將虛擬地址映射到物理地址。在其他實(shí)施例中,MMU 328可駐留在存儲(chǔ)器接口 214內(nèi)。MMU 328包括頁(yè)表?xiàng)l目(PTE)集合以及可選地包括高速緩存線索引,該P(yáng)TE集合用于將虛擬地址映射到像素塊(tile)的物理地址。MMU 328可包括地址轉(zhuǎn)譯后備緩沖區(qū)(translation lookasidebuffer, TLB)或高速緩存,其可駐留在多處理器SM 310或LI高速緩存或GPC 208內(nèi)。處理物理地址以分布表面數(shù)據(jù)訪問(wèn)位置,從而允許在圖2所示的分區(qū)單元215之間交錯(cuò)的高效請(qǐng)求。高速緩存線索引可用于確定對(duì)于高速緩存線的請(qǐng)求是否命中或未命中。在圖形和計(jì)算應(yīng)用中,GPC 208可配置為使得每個(gè)SM 310均耦合至紋理單元315,用于實(shí)施紋理映射操作,例如,確定紋理采樣位置、讀取紋理數(shù)據(jù)以及過(guò)濾紋理數(shù)據(jù)。紋理數(shù)據(jù)是從內(nèi)部紋理LI高速緩存(未示出)讀取的,或者在一些實(shí)施例中是從SM 310內(nèi)的LI高速緩存讀取的,并且根據(jù)需要從L2高速緩存、并行處理存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104所獲取。每個(gè)SM 310均將處理后的任務(wù)輸出到工作分布交叉開(kāi)關(guān)330,以便將處理后的任務(wù)提供到另一 GPC 208用于進(jìn)一步處理,或者將處理后的任務(wù)存儲(chǔ)在在所有GPC 208之間共享的L2高速緩存、或經(jīng)由交叉開(kāi)關(guān)單元210存儲(chǔ)在并行處理存儲(chǔ)器204或系統(tǒng)存儲(chǔ)器104中。preROP (pre-rasteroperations,預(yù)光柵操作)325配置為從SM 310接收數(shù)據(jù),將數(shù)據(jù)引向分區(qū)單元215內(nèi)的ROP單元,并實(shí)施對(duì)色彩混合的優(yōu)化、組織像素色彩數(shù)據(jù)以及實(shí)施地址轉(zhuǎn)譯。應(yīng)予以理解的是,本文所描述的內(nèi)核架構(gòu)是例示性的,可以對(duì)其進(jìn)行各種變形和修改。GPC 208內(nèi)可包括任何數(shù)量的處理單元,例如,SM 310或紋理單元315、preR0P 325。此外,如圖2所示,但PPU 202可包括任何數(shù)量的GPC 208,這些GPC 208最好在功能上彼此相似,以使執(zhí)行行為不依賴于接收特定處理任務(wù)的GPC 208。此外,每個(gè)GPC 208最好使用單獨(dú)的且各異的處理單元、LI高速緩存等,相對(duì)于其他GPC 208獨(dú)立地操作,來(lái)執(zhí)行用于一個(gè)或多個(gè)應(yīng)用程序的任務(wù)。本領(lǐng)域的普通技術(shù)人員應(yīng)該理解,圖1、2、3A和3B中描述的架構(gòu)不以任何方式來(lái)限制本發(fā)明的范圍,并且本文教導(dǎo)的技術(shù)可以在任意經(jīng)適當(dāng)配置的處理單元上實(shí)現(xiàn),包括但不限于一個(gè)或多個(gè)CPU、一個(gè)或多個(gè)多內(nèi)核CPU、一個(gè)或多個(gè)PPU 202、一個(gè)或多個(gè)GPC208、一個(gè)或多個(gè)圖形或?qū)S锰幚韱卧鹊?,而不脫離本發(fā)明的范圍。在本發(fā)明的實(shí)施例中,所期望的是,使用PPU 202或計(jì)算系統(tǒng)的其他處理器采用線程陣列來(lái)執(zhí)行通用計(jì)算。給線程陣列中的每個(gè)線程都指派唯一的線程標(biāo)識(shí)符(“threadID”),所述線程標(biāo)識(shí)符在該線程執(zhí)行期間可由該線程訪問(wèn)。線程ID可被定義為一維或多維數(shù)值,其控制線程處理行為的各個(gè)方面。例如,線程ID可用于確定線程將處理哪部分輸入數(shù)據(jù)集和/或確定線程將產(chǎn)生或?qū)懭肽牟糠州敵鰯?shù)據(jù)集。每線程的指令序列可包括至少一個(gè)指令,所述指令定義了代表線程與線程陣列中一個(gè)或多個(gè)其他線程之間的協(xié)作行為。例如,每線程的指令序列均可包括以下指令:在序列中的特定點(diǎn)將對(duì)于代表線程的操作執(zhí)行掛起直到一個(gè)或多個(gè)其他線程到達(dá)該特定點(diǎn)時(shí)的指令;指示代表線程在一個(gè)或多個(gè)其他線程有權(quán)訪問(wèn)的共享存儲(chǔ)器中存儲(chǔ)數(shù)據(jù)的指令;指示代表線程自動(dòng)地讀取和更新存儲(chǔ)在一個(gè)或多個(gè)其他線程基于其線程ID有權(quán)訪問(wèn)的共享存儲(chǔ)器中的數(shù)據(jù)的指令等等。CTA程序也可包括計(jì)算從其中讀取數(shù)據(jù)的共享存儲(chǔ)器中的地址的指令,該地址為線程ID的函數(shù)。通過(guò)定義適合的函數(shù)并提供同步技術(shù),數(shù)據(jù)可以以可預(yù)測(cè)的方式由CTA的一個(gè)線程寫(xiě)入共享存儲(chǔ)器中給定的位置,并且由同一個(gè)CTA的不同線程從該位置讀取。因此,可以支持以任意所希望的方式將數(shù)據(jù)在線程中共享,并且CTA中的任意線程都可以和同一個(gè)CTA中的任意其他線程共享數(shù)據(jù)。如果在CTA的線程中間共享有數(shù)據(jù),則數(shù)據(jù)共享的程度由CTA程序確定;因此,應(yīng)該理解在使用CTA的特定應(yīng)用中,CTA的線程實(shí)際上可能相互共享數(shù)據(jù)或者可能不相互共享數(shù)據(jù),這取決于該CTA程序,并且術(shù)語(yǔ)“CTA”和“線程陣列”在本文中同義使用。任務(wù)調(diào)度和管理返回參考圖3A,任務(wù)管理單元300管理待調(diào)度的計(jì)算任務(wù),其作為存儲(chǔ)在調(diào)度表321中的TMD組的陣列。TMD組是具有相同調(diào)度優(yōu)先級(jí)的計(jì)算任務(wù)的集合。TMD組的數(shù)目或優(yōu)先級(jí)級(jí)別可以是一個(gè)或多個(gè)。在每個(gè)TMD組中,各自的優(yōu)先級(jí)級(jí)別的計(jì)算任務(wù)存儲(chǔ)在列表中,其可以采用鏈接列表來(lái)實(shí)現(xiàn),并且下文中假設(shè)是鏈接列表。在鏈接列表中的每個(gè)TMD存儲(chǔ)指向各自鏈接列表中的下一個(gè)TMD的指針。為每個(gè)TMD存儲(chǔ)用于鏈接列表的頭指針和尾指針。沒(méi)有任務(wù)的TMD組的頭指針與尾指針相等,并且空位設(shè)置為T(mén)RUE。當(dāng)從主機(jī)接口 206接收計(jì)算任務(wù)時(shí),任務(wù)管理單元300將計(jì)算任務(wù)插入TMD組。更具體地,將指向與計(jì)算任務(wù)相對(duì)應(yīng)的TMD的任務(wù)指針添加到用于該組的鏈接列表的尾部,除非設(shè)置了特定的TMD位使得將任務(wù)添加到鏈接列表的頭部。雖然TMD組內(nèi)的所有任務(wù)都具有相同的調(diào)度優(yōu)先級(jí)級(jí)別,TMD組鏈接列表的頭部是由任務(wù)管理單元300所選擇并調(diào)度用于執(zhí)行的第一計(jì)算任務(wù)。因而,與在相同優(yōu)先級(jí)級(jí)別的其他計(jì)算任務(wù)相比,在鏈接列表的頭部的計(jì)算任務(wù)具有相對(duì)較高的優(yōu)先級(jí)。類似地,鏈接列表中的每個(gè)連續(xù)的計(jì)算任務(wù)處于與相對(duì)于在該鏈接列表中的在前面的計(jì)算任務(wù)較低優(yōu)先級(jí)相同的優(yōu)先級(jí)級(jí)別。因此,任務(wù)管理單元300能夠按照相對(duì)于彼此的輸入順序來(lái)調(diào)度TMD組內(nèi)的計(jì)算任務(wù)(假設(shè)一個(gè)都沒(méi)有被特定標(biāo)記為添加到TMD組的頭部)。因?yàn)門(mén)MD組被指定為T(mén)MD結(jié)構(gòu)的一部分,所以當(dāng)正在執(zhí)行計(jì)算任務(wù)時(shí)不可以改變計(jì)算任務(wù)的TMD組。還可以從圖2中所示的PPU 202的處理集群陣列230接收計(jì)算任務(wù)。特別是,可以將在TMD 322的執(zhí)行期間所生成的數(shù)據(jù)寫(xiě)到TMD 322的隊(duì)列,并且響應(yīng)于針對(duì)TMD 322的隊(duì)列的每個(gè)寫(xiě)請(qǐng)求,由MMU 328生成反射通知信號(hào)。任務(wù)管理單元300可實(shí)施選擇以使用若干不同的技術(shù)來(lái)調(diào)度計(jì)算任務(wù):循環(huán)、優(yōu)先級(jí)或部分優(yōu)先級(jí)調(diào)度。對(duì)于每種不同的調(diào)度技術(shù),當(dāng)選擇計(jì)算任務(wù)來(lái)調(diào)度時(shí),將所選擇的計(jì)算任務(wù)從所選擇的計(jì)算任務(wù)存儲(chǔ)在其中的組中移除。不論什么調(diào)度技術(shù),通過(guò)選擇合適組的鏈接列表中的第一表項(xiàng),任務(wù)管理單元300能夠快速選擇計(jì)算任務(wù)。因此,可以按照與任務(wù)管理單元300從主機(jī)接口 206接收任務(wù)指針的順序不同的順序來(lái)調(diào)度和/或執(zhí)行計(jì)算任務(wù)。圖3C是根據(jù)本發(fā)明一個(gè)實(shí)施例的、可以存儲(chǔ)在PP存儲(chǔ)器204中的圖3A的TMD 322的內(nèi)容的概念圖。TMD 322配置為存儲(chǔ)初始化參數(shù)305、調(diào)度參數(shù)306、執(zhí)行參數(shù)365、CTA狀態(tài)370、純硬件域372和隊(duì)列375。純硬件域372存儲(chǔ)TMD 322的純硬件部分,其包括一個(gè)或多個(gè)純硬件參數(shù)。所有TMD 322共用的執(zhí)行狀態(tài)不包括在每個(gè)TMD 322中。因?yàn)門(mén)MD322是存儲(chǔ)在PP存儲(chǔ)器204中的數(shù)據(jù)結(jié)構(gòu),所以運(yùn)行在CPU 102或PPU 112上的應(yīng)用程序可以在存儲(chǔ)器中創(chuàng)建TMD 322結(jié)構(gòu),并且隨后通過(guò)發(fā)送用于TMD 322的任務(wù)指針至任務(wù)/工作單元207來(lái)提交TMD 322用于執(zhí)行。初始化參數(shù)355用于當(dāng)TMD 322啟動(dòng)時(shí)配置GPC 208,并且可以包括隊(duì)列375的大小和起始程序地址。注意隊(duì)列375可以和TMD 322分開(kāi)存儲(chǔ)在存儲(chǔ)器中,在這種情況下,TMD 322包括指向代替實(shí)際的隊(duì)列375的隊(duì)列375的指針(隊(duì)列指針)。初始化參數(shù)355還可以包括指示當(dāng)TMD 322啟動(dòng)時(shí),例如紋理頭高速緩存、紋理采樣器高速緩存、紋理數(shù)據(jù)高速緩存、數(shù)據(jù)高速緩存、常數(shù)高速緩存等等的各種高速緩存是否無(wú)效的位。初始化參數(shù)355中還可以包括指示紋理采樣器是否與紋理頭一對(duì)一鏈接的位。初始化參數(shù)355還可以包括線程中CTA的維度、TMD版本號(hào)、指令集版本號(hào)、根據(jù)CTA寬度、高度和深度的柵格的維度、存儲(chǔ)體映射參數(shù)、應(yīng)用程序所看到的調(diào)用堆棧的深度和用于TMD的調(diào)用返回堆棧的大小。初始化參數(shù)355可以包括常數(shù)緩沖區(qū)的大小、常數(shù)緩沖區(qū)的地址、指示常數(shù)緩沖區(qū)綁定是有效的位,以及初始化參數(shù)355中可以存儲(chǔ)指示在TMD啟動(dòng)之前來(lái)自常數(shù)緩沖區(qū)的數(shù)據(jù)在高速緩存中是無(wú)效的位。最后,初始化參數(shù)355可以包括與CTA的每個(gè)線程均可用的存儲(chǔ)器的容量有關(guān)的若干個(gè)參數(shù)。當(dāng)需要多個(gè)CTA的TMD 322準(zhǔn)備好被調(diào)度用于執(zhí)行時(shí),其中每個(gè)CTA均要求大容量的共享存儲(chǔ)器,任務(wù)/工作單元207可以限制(即,節(jié)流(throttle))并發(fā)執(zhí)行的CTA的數(shù)目,使得CTA不會(huì)嘗試消耗比可用于由TMD 322訪問(wèn)的存儲(chǔ)器更多的存儲(chǔ)器。調(diào)度參數(shù)360控制任務(wù)/工作單元207如何調(diào)度TMD 322用于執(zhí)行。調(diào)度參數(shù)360可以包括指示TMD 322是隊(duì)列TMD還是柵格TMD的位。如果TMD 322是柵格TMD,那么不使用在TMD 322啟動(dòng)后允許附加數(shù)據(jù)排隊(duì)的TMD 322的隊(duì)列特征,并且TMD 322的執(zhí)行使得固定數(shù)目的CTA被啟動(dòng)并執(zhí)行以處理存儲(chǔ)在隊(duì)列375中的固定數(shù)量的數(shù)據(jù)。CTA的數(shù)目被指定為柵格寬度、高度和深度的乘積。由隊(duì)列指針來(lái)代替隊(duì)列375,所述隊(duì)列指針指向?qū)⒂蓤?zhí)行由TMD 322所指定的程序的CTA來(lái)處理的數(shù)據(jù)。當(dāng)使用調(diào)度類型的反射通知信號(hào)來(lái)創(chuàng)建TMD時(shí)或者創(chuàng)建柵格TMD之后,設(shè)置(使能)用于柵格TMD的調(diào)度標(biāo)記。如果TMD 322是隊(duì)列TMD,則使用TMD 322的隊(duì)列特征,這意味著數(shù)據(jù)存儲(chǔ)在隊(duì)列375中,作為隊(duì)列條目。隊(duì)列條目被輸入數(shù)據(jù)到TMD 322的CTA。隊(duì)列條目還可以存儲(chǔ)用于動(dòng)態(tài)任務(wù)的數(shù)據(jù),所述動(dòng)態(tài)任務(wù)由另一個(gè)TMD 322在線程的執(zhí)行期間生成,從而提供嵌套的并行性。一般來(lái)說(shuō),線程或包括線程的CTA的執(zhí)行被掛起,直到完成動(dòng)態(tài)任務(wù)的執(zhí)行。隊(duì)列375可以實(shí)現(xiàn)為循環(huán)隊(duì)列,以使得數(shù)據(jù)的總數(shù)量不限于隊(duì)列375的大小。如上所述,隊(duì)列375可以和TMD 322分開(kāi)存儲(chǔ),并且TMD 322可以存儲(chǔ)指向隊(duì)列375的隊(duì)列指針。有利地,在執(zhí)行表示動(dòng)態(tài)任務(wù)的TMD 322的同時(shí),可以將用于動(dòng)態(tài)任務(wù)的隊(duì)列條目寫(xiě)入隊(duì)列375。當(dāng)使用調(diào)度類型的反射通知信號(hào)來(lái)創(chuàng)建隊(duì)列TMD時(shí)或者創(chuàng)建隊(duì)列TMD之后,設(shè)置(使能)用于隊(duì)列TMD的調(diào)度標(biāo)記。針對(duì)隊(duì)列TMD執(zhí)行可變數(shù)目的CTA,其中CTA的數(shù)目取決于寫(xiě)入TMD隊(duì)列的隊(duì)列375的條目的數(shù)目。用于隊(duì)列TMD的調(diào)度參數(shù)360還包括由每個(gè)CTA所處理的隊(duì)列375的條目的數(shù)目。當(dāng)添加N個(gè)條目到隊(duì)列375時(shí),針對(duì)TMD 322啟動(dòng)一個(gè)CTA。任務(wù)/工作單元207可以構(gòu)建處理的有向圖,其中每個(gè)處理均是具有隊(duì)列的TMD 322。可以基于用于每個(gè)TMD 322的N的值和已經(jīng)寫(xiě)入隊(duì)列375中的條目的數(shù)目來(lái)確定執(zhí)行用于每個(gè)TMD 322的CTA的數(shù)目。替代實(shí)施例可以具有用于柵格TMD和隊(duì)列TMD的不同結(jié)構(gòu),或僅實(shí)現(xiàn)柵格TMD或隊(duì)列TMD。TMD 322可以包括指向當(dāng)TMD完成時(shí)自動(dòng)啟動(dòng)的獨(dú)立TMD的任務(wù)指針。可由TMD322執(zhí)行信號(hào)量(semaphore)以確保滿足不同的TMD 322和CPU 102之間的獨(dú)立。例如,第一 TMD 322的執(zhí)行可取決于第二 TMD完成,因此第二 TMD生成信號(hào)量釋放,并且在成功獲得對(duì)應(yīng)的信號(hào)量之后第一 TMD執(zhí)行。在某些實(shí)施例中,在主機(jī)接口 206或前端212中實(shí)施信號(hào)量獲得。用于TMD 322的執(zhí)行參數(shù)365可以存儲(chǔ)多個(gè)信號(hào)量版本(release),包括存儲(chǔ)器屏障(barrier)的類型、存儲(chǔ)器中信號(hào)量數(shù)據(jù)結(jié)構(gòu)的地址、信號(hào)量數(shù)據(jù)結(jié)構(gòu)的大小、有效負(fù)載以及歸約運(yùn)算(reduction operation)的使能、類型和格式。信號(hào)量的數(shù)據(jù)結(jié)構(gòu)可以存儲(chǔ)在執(zhí)行參數(shù)365中或者存儲(chǔ)在TMD 322的外面。TMD 322的調(diào)度參數(shù)360可以包括當(dāng)TMD 322被創(chuàng)建時(shí)所設(shè)置的位,其使得當(dāng)由任務(wù)管理單元300首次加載TMD 322時(shí),TMD域被復(fù)制到純硬件域372。調(diào)度參數(shù)360還可以包括TMD組ID、指示將TMD 322添加到鏈接列表的哪里(頭部或尾部)的位以及指向TMD組中的下一個(gè)TMD322的指針。調(diào)度參數(shù)360還可以包括啟用/禁用GPC 208內(nèi)的特定流多處理器的掩碼(mask)。執(zhí)行參數(shù)365還可以包括執(zhí)行用于TMD 322的程序的起始地址、當(dāng)TMD 322的執(zhí)行完成時(shí)被實(shí)施的存儲(chǔ)器屏障操作的類型、指示對(duì)于TMD322是否每次僅執(zhí)行單個(gè)CTA (串行)的串行執(zhí)行標(biāo)記和控制任務(wù)/工作單元207是否可以基于指定用于TMD 322的存儲(chǔ)器限制來(lái)限制并發(fā)運(yùn)行的CTA的數(shù)目的節(jié)流使能標(biāo)記。
當(dāng)處理被搶占,TMD 322的處理可以在指令邊界或CTA邊界處停止,并且將處理將會(huì)從該處恢復(fù)的CTA的標(biāo)識(shí)符存儲(chǔ)在CTA狀態(tài)370中。在搶占之后恢復(fù)TMD 322的執(zhí)行所需要的狀態(tài)信息可以存儲(chǔ)在CTA狀態(tài)370中,或者在PP存儲(chǔ)器204中的單獨(dú)的區(qū)域中,或者在系統(tǒng)存儲(chǔ)器104中。CTA狀態(tài)370還存儲(chǔ)指向隊(duì)列375的條目的數(shù)據(jù)指針和計(jì)數(shù)器溢出標(biāo)記,該計(jì)數(shù)器溢出標(biāo)記指示每個(gè)數(shù)據(jù)指針增量均超過(guò)隊(duì)列375的末尾并且需要卷繞回到隊(duì)列375的開(kāi)始處的時(shí)間。調(diào)度標(biāo)記以及一個(gè)或多個(gè)數(shù)據(jù)指針的純硬件版本可以存儲(chǔ)在純硬件域372中。圖3D示出根據(jù)本發(fā)明一個(gè)實(shí)施例的、用于寫(xiě)入隊(duì)列375的方法380的流程圖。雖然結(jié)合圖1、2、3A和3B的系統(tǒng)來(lái)描述方法步驟,本領(lǐng)域技術(shù)人員應(yīng)該理解,配置為按任何順序?qū)嵤┰摲椒ú襟E的任何系統(tǒng)均在本發(fā)明范圍內(nèi)。由TMD 322所編碼的“生產(chǎn)者(piOducer)”計(jì)算任務(wù)分配隊(duì)列375中的空間并且隨后寫(xiě)數(shù)據(jù)到所分配的空間。“消費(fèi)者”計(jì)算任務(wù)最終讀取由“生產(chǎn)者”計(jì)算任務(wù)所寫(xiě)的數(shù)據(jù)。單個(gè)計(jì)算任務(wù)可以生成一個(gè)或多個(gè)動(dòng)態(tài)任務(wù)和/或?qū)憯?shù)據(jù)到隊(duì)列375??梢詫?shù)據(jù)寫(xiě)入隊(duì)列375,用于所生成的動(dòng)態(tài)任務(wù)或者用于現(xiàn)存的計(jì)算或者動(dòng)態(tài)任務(wù)。在步驟382,由任務(wù)/工作單元207所啟動(dòng)的一個(gè)或多個(gè)CTA來(lái)在處理集群陣列230中執(zhí)行由TMD 322所編碼的計(jì)算任務(wù)。在步驟385,一個(gè)或多個(gè)線程在隊(duì)列375中保留空間以存儲(chǔ)將要由動(dòng)態(tài)任務(wù)讀取的數(shù)據(jù)。按照處理分配請(qǐng)求的順序使用原子操作來(lái)分配隊(duì)列375中的條目給線程,該線程執(zhí)行生成用于動(dòng)態(tài)任務(wù)的數(shù)據(jù)的任務(wù)。使用原子操作使得只分配隊(duì)列中特定的條目給一個(gè)線程。換言之,使得當(dāng)同時(shí)接收到分配請(qǐng)求時(shí),線程中沒(méi)有條目被分配給兩個(gè)或更多個(gè)線程。如前面所述,線程不需要按照分配條目的順序來(lái)在條目中存儲(chǔ)數(shù)據(jù)。因此,當(dāng)接收每個(gè)vspan反射通知信號(hào)時(shí),vspan單元312盡可能合并隊(duì)列375中的多個(gè)vspan到更大的連續(xù)的vspan中。當(dāng)隊(duì)列的條目存儲(chǔ)數(shù)據(jù)可供調(diào)度用于處理時(shí),vspan單元312通知任務(wù)管理單元300。在步驟386,分配了隊(duì)列375中的條目的一個(gè)或多個(gè)線程輸出寫(xiě)請(qǐng)求以在條目中存儲(chǔ)數(shù)據(jù)。在步驟388,針對(duì)每個(gè)寫(xiě)請(qǐng)求生成vspan反射通知信號(hào),并且將vspan反射通知信號(hào)傳輸至vspan單元312。在步驟390,執(zhí)行計(jì)算任務(wù)的一個(gè)或多個(gè)線程確定是否將會(huì)生成將要要求隊(duì)列中的附加空間的任何新的動(dòng)態(tài)任務(wù),或者是否已經(jīng)生成的動(dòng)態(tài)任務(wù)將需要隊(duì)列375中的附加條目,并且如果是,那么一個(gè)或多個(gè)線程返回步驟385。否則,在步驟395,執(zhí)行TMD 322的最后的線程退出,并且由TMD 322所編碼的計(jì)算任務(wù)的執(zhí)行完成。圖4不出根據(jù)本發(fā)明一個(gè)實(shí)施例的、用于處理vspan反射通知信號(hào)的方法400的流程圖。雖然結(jié)合圖1、2、3A和3B的系統(tǒng)來(lái)描述方法步驟,本領(lǐng)域技術(shù)人員應(yīng)該理解,配置為按任何順序?qū)嵤┰摲椒ú襟E的任何系統(tǒng)均在本發(fā)明范圍內(nèi)。在步驟405,任務(wù)/工作單元207從處理集群陣列230接收vspan反射通知信號(hào)。在步驟410, vspan單元312確定是否指定增量模式用于TMD322,并且,如果是,那么vspan單元312直接進(jìn)行到步驟425以確定TMD322是否是可調(diào)度的。當(dāng)可以按照任何順序處理vspan反射寫(xiě)通知時(shí),使用增量模式。因此,vspan單元312不實(shí)施vspan的合并。在一個(gè)實(shí)施例中,可以使用從處理集群陣列230傳輸至任務(wù)管理單元300的通知信號(hào)來(lái)啟用或者禁用增量模式。如果在步驟410,vspan單元312確定沒(méi)有指定增量模式用于TMD322,那么在步驟415, vspan單元312嘗試將由vspan反射通知信號(hào)所指定的新的vspan與一個(gè)或多個(gè)其他vspan合并。結(jié)合圖5和6進(jìn)一步詳細(xì)描述合并處理。在步驟420,vspan單元312確定由內(nèi)部置入指針?biāo)赶虻年?duì)列375的條目是否已經(jīng)被寫(xiě),并且如果不是,那么在步驟440,vspan反射通知信號(hào)的處理完成。內(nèi)部置入指針指示已經(jīng)被寫(xiě)入但仍然沒(méi)有提供給任務(wù)管理單元300用于調(diào)度的隊(duì)列375的第一條目。否貝U,在步驟425,vspan單元312確定隊(duì)列375的至少一個(gè)條目的序列可調(diào)度用于執(zhí)行??墒褂谜{(diào)度標(biāo)記配置TMD 322為只有當(dāng)調(diào)度標(biāo)記被設(shè)置時(shí)其可調(diào)度,而不論由內(nèi)部置入指針?biāo)赶虻年?duì)列375的條目是否已經(jīng)被寫(xiě)入或增量模式是否用于TMD322。當(dāng)由任務(wù)管理單元300從處理集群陣列230接收調(diào)度類型的反射通知信號(hào)時(shí),調(diào)度標(biāo)記被設(shè)置。如果在步驟425, vspan單元312確定隊(duì)列375不可調(diào)度,那么在步驟440, vspan反射通知信號(hào)的處理完成。否則,在步驟430,任務(wù)管理單元300被告知隊(duì)列375的條目被寫(xiě)入,并且任務(wù)管理單元300調(diào)度TMD 322用于由一個(gè)或多個(gè)CTA來(lái)處理。在步驟435,工作分布單元340啟動(dòng)一個(gè)或多個(gè)CTA以執(zhí)行TMD 322。以這種方式,按照與由一個(gè)或多個(gè)并發(fā)執(zhí)行的線程寫(xiě)隊(duì)列375的數(shù)據(jù)序列的順序相同的分配順序,發(fā)起隊(duì)列375中的數(shù)據(jù)的處理。對(duì)用于處理任務(wù)的調(diào)度的任務(wù)數(shù)據(jù)的寫(xiě)進(jìn)行跟蹤圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的、當(dāng)vspan被合并時(shí)的圖3C的隊(duì)列375的內(nèi)容的概念圖。如前面所解釋,寫(xiě)在隊(duì)列375中編碼的處理任務(wù)的數(shù)據(jù)與隊(duì)列375中的條目的分配是解耦的。外部置入指針545指向?qū)⒁环峙涞年?duì)列375中的下一個(gè)可用條目,并且內(nèi)部置入指針540指向已經(jīng)被分配但是仍然未被寫(xiě)的隊(duì)列375中的最舊的條目。當(dāng)在由內(nèi)部置入指針540所指向的條目中寫(xiě)數(shù)據(jù)時(shí),內(nèi)部置入指針540向外部置入指針545前進(jìn),并且vspan單元312指示數(shù)據(jù)已經(jīng)被調(diào)度用于處理。因?yàn)椴恍枰凑辗峙錀l目的順序來(lái)寫(xiě)條目,所以在內(nèi)部置入指針540和外部置入指針545之間可能存在一個(gè)或多個(gè)已經(jīng)被寫(xiě)入的條目(除了由內(nèi)部置入指針540所指向的條目以外)。外部獲取指針530指向隊(duì)列375的最舊的條目,其存儲(chǔ)已經(jīng)指派給CTA用于處理的數(shù)據(jù),即,將處理數(shù)據(jù)的CTA已經(jīng)啟動(dòng)但該CTA仍然還未讀數(shù)據(jù)。內(nèi)部獲取指針535指向隊(duì)列375的最新條目,其已經(jīng)指派給CTA用于處理。已經(jīng)寫(xiě)入隊(duì)列375但仍然未指派給CTA用于處理的數(shù)據(jù)存儲(chǔ)在內(nèi)部獲取指針535和內(nèi)部置入指針540之間的條目中。已經(jīng)指派給CTA用于處理但未讀取的數(shù)據(jù)存儲(chǔ)在外部獲取指針530和內(nèi)部獲取指針535之間。四個(gè)vspan:vspan 501、502、503和504,每個(gè)均與隊(duì)列375中的部分條目500相關(guān)聯(lián)。Vspan 501-504是當(dāng)與每個(gè)單獨(dú)的vspan相關(guān)聯(lián)的條目500的條目被寫(xiě)入時(shí)所生成的vspan反射通知信號(hào)。每個(gè)vspan由表示隊(duì)列375中的起始條目位置的偏移和指示寫(xiě)請(qǐng)求所寫(xiě)入的隊(duì)列375中的條目的數(shù)目的Λ (delta)值來(lái)表示,其vspan反射通知信號(hào)為該寫(xiě)請(qǐng)求而生成。在一個(gè)實(shí)施例中,Λ值等于末端值,S卩:Λ值=偏移+所寫(xiě)入的條目的數(shù)目。當(dāng)vspan反射通知信號(hào)被接收時(shí),vspan單元312嘗試將新的vspan與現(xiàn)存的vspan合并。基于起始條目位置和vspan的△值來(lái)在鏈接列表中存儲(chǔ)現(xiàn)存的vspan,使得vspan的順序與隊(duì)列375的條目被分配的順序相同以用于存儲(chǔ)數(shù)據(jù)。
當(dāng)新的vspan不能與存儲(chǔ)在鏈接列表中的現(xiàn)存的vspan合并時(shí),從未使用的vspan存儲(chǔ)器塊的池中分配存儲(chǔ)新的vspan所需要的存儲(chǔ)器。在所有隊(duì)列TMD 322之間共享該池。存儲(chǔ)和跟蹤vspan的單獨(dú)的鏈接列表用于每個(gè)隊(duì)列TMD 322。當(dāng)新的vspan與現(xiàn)存的vspan合并時(shí),更新現(xiàn)存的vspan的Δ值和/或偏移值。當(dāng)新的和現(xiàn)存的vspan合并時(shí),存儲(chǔ)用于TMD 322的鏈接列表中不再需要的現(xiàn)存vspan的存儲(chǔ)器塊被釋放至共享池。在與vspan 501,503和504相關(guān)聯(lián)的數(shù)據(jù)被寫(xiě)入之前,通過(guò)第一寫(xiě)請(qǐng)求寫(xiě)入與vspan 502相關(guān)聯(lián)的數(shù)據(jù)。與vspan 502相關(guān)聯(lián)的數(shù)據(jù)填充條目512,該條目512是隊(duì)列375的三個(gè)條目。用于vspan 502的偏移和Δ分別為2和3,并且從共享池分配vspan存儲(chǔ)器塊以存儲(chǔ)vspan 502。響應(yīng)于第一寫(xiě)請(qǐng)求生成vspan 502并將其包括在第一 vspan反射通知信號(hào)中。其次,通過(guò)第二寫(xiě)請(qǐng)求寫(xiě)入與vspan 504相關(guān)聯(lián)的數(shù)據(jù),填充條目514,該條目514是隊(duì)列375的三個(gè)以上的條目。響應(yīng)于第二寫(xiě)請(qǐng)求,生成vspan504并將其包括在第二 vspan反射通知信號(hào)中。用于vspan 504的偏移和Δ分別為7和3。因?yàn)榕cvspan 503相關(guān)聯(lián)的數(shù)據(jù)仍然未寫(xiě)入,所以不可以合并vspan 502和vspan 504,因此從共享池分配附加的vspan存儲(chǔ)器塊以存儲(chǔ)vspan 504。第三,通過(guò)第三寫(xiě)請(qǐng)求寫(xiě)入與vspan 501相關(guān)聯(lián)的數(shù)據(jù),填充條目511,該條目511是隊(duì)列375的前兩個(gè)條目。響應(yīng)于第三寫(xiě)請(qǐng)求生成vspan 501并將其包括在第三vspan反射通知信號(hào)中。用于vspan 501的偏移和Δ分別為O和2。Vspan 501可以和vspan 502合并,因此用于vspan 502的Λ從3變?yōu)?,并且偏移變?yōu)镺。內(nèi)部置入指針504提前以指向未寫(xiě)vspan 503的第一條目。此時(shí),可調(diào)度由TMD 322所編碼的計(jì)算任務(wù)以運(yùn)行用于條目511和512。當(dāng)內(nèi)部置入指針540提前時(shí),釋放存儲(chǔ)vspan 502的vspan存儲(chǔ)器塊到共享池。最后,通過(guò)第四寫(xiě)請(qǐng)求寫(xiě)入與vspan 503相關(guān)聯(lián)的數(shù)據(jù),填充條目513,該條目513是隊(duì)列375的兩個(gè)以上的條目。響應(yīng)于第四寫(xiě)請(qǐng)求生成vspan503并將其包括在第四vspan反射通知信號(hào)中。用于vspan 503的偏移和Δ分別為5和2。Vspan 503與vspan 504合并,因此用于vspan 504的Λ從3變?yōu)?,并且偏移變?yōu)?。內(nèi)部置入指針504提前以指向vspan 504之后的第一條目。此時(shí),可調(diào)度由TMD 322所編碼的計(jì)算任務(wù)以運(yùn)行用于條目513和514。當(dāng)內(nèi)部置入指針540提前時(shí),釋放存儲(chǔ)vspan 504的vspan存儲(chǔ)器塊到共享池。圖6示出根據(jù)本發(fā)明一個(gè)實(shí)施例的、處理vspan反射通知信號(hào)和合并vspan的方法600的流程圖。雖然結(jié)合圖1、2、3A和3B的系統(tǒng)來(lái)描述方法步驟,本領(lǐng)域技術(shù)人員應(yīng)該理解,配置為按任何順序?qū)嵤┍痉椒ú襟E的任何系統(tǒng)均在本發(fā)明范圍內(nèi)。在步驟605,當(dāng)數(shù)據(jù)被寫(xiě)入隊(duì)列375的一個(gè)或多個(gè)條目時(shí),vspan單元312接收vspan反射通知信號(hào)。在步驟610, vspan單元312確定在用于TMD322的鏈接列表中由vspan反射通知信號(hào)所指定的vspan是否在兩個(gè)vspan之間并且可以和兩個(gè)vspan合并,并且如果是,那么在步驟625,在鏈接列表中vspan單元312將新的vspan和兩個(gè)vspan合并。在步驟630,在進(jìn)行步驟632之前,vspan單元312返回一個(gè)vspan到共享池。如果在步驟610, vspan單元312確定在用于TMD 322的鏈接列表中由vspan反射通知信號(hào)所指定的vspan不可以和兩個(gè)vspan合并,那么vspan單元312確定在用于TMD322的鏈接列表中由vspan反射通知信號(hào)所指定的vspan是否可以和一個(gè)vspan合并,并且如果可以,那么在步驟620, vspan單元312將最新寫(xiě)入的vspan和一個(gè)vspan合并,并且進(jìn)行到步驟632。否則,在步驟618, vspan單元312從共享池分配vspan以存儲(chǔ)新的vspan,并且插入所分配的vspan到鏈接列表中,并進(jìn)行到步驟632。在步驟632,vspan單元312確定內(nèi)部置入指針540是否可以提前,并且如果不可以,那么在步驟640, vspan反射通知信號(hào)的處理完成。否則,在步驟635, vspan單元312使內(nèi)部置入指針540提前并且返回在鏈接列表頭部的vspan到共享池。在步驟640, vspan反射通知信號(hào)的處理完成。圖7示出根據(jù)本發(fā)明一個(gè)實(shí)施例的、用于對(duì)不是vspan反射通知信號(hào)的反射通知信號(hào)進(jìn)行處理的方法的流程圖。雖然結(jié)合圖1、2、3A、3B和3C的系統(tǒng)來(lái)描述方法步驟,本領(lǐng)域技術(shù)人員應(yīng)該理解,配置為按任何順序?qū)嵤┍痉椒ú襟E的任何系統(tǒng)均在本發(fā)明范圍內(nèi)。在步驟702,任務(wù)管理單元300從處理集群陣列230接收反射通知信號(hào)。在步驟705,任務(wù)管理單元300確定通知信號(hào)是否是復(fù)制反射通知信號(hào),并且如果是,那么在步驟715,將TMD 322的一部分復(fù)制到TMD 322的純硬件域372中。在步驟750,反射通知信號(hào)的處理完成。在步驟705,如果任務(wù)管理單元300確定反射通知信號(hào)不是復(fù)制反射通知信號(hào),那么在步驟720,任務(wù)管理單元300確定反射通知信號(hào)是否是無(wú)效反射通知信號(hào)。如果反射通知信號(hào)是無(wú)效反射通知信號(hào),那么在步驟725,如果數(shù)據(jù)出現(xiàn)在TMD高速緩存305中,那么任務(wù)管理單元300從TMD高速緩存305移除TMD 322數(shù)據(jù)。存儲(chǔ)從TMD高速緩存305移除的TMD 322數(shù)據(jù)的任何臟高速緩存線不寫(xiě)存儲(chǔ)器。隨后TMD 322可重新用于不同的計(jì)算任務(wù)。如果在步驟720,任務(wù)管理單元300確定反射通知信號(hào)不是無(wú)效反射通知信號(hào),那么反射通知信號(hào)是調(diào)度信號(hào),其設(shè)置調(diào)度標(biāo)記用于TMD 322。由任務(wù)管理單元300使用調(diào)度標(biāo)記來(lái)確定隊(duì)列375的至少一個(gè)條目的序列是否可調(diào)度用于執(zhí)行。在步驟730,當(dāng)調(diào)度標(biāo)記被寫(xiě)入時(shí),用于TMD 322的標(biāo)度標(biāo)記被設(shè)置。在步驟750,反射通知信號(hào)的處理完成。當(dāng)任務(wù)/工作單元207從GPC 208接收到通知信號(hào)時(shí),在由TMD 322所編碼的計(jì)算任務(wù)的執(zhí)行期間動(dòng)態(tài)生成的動(dòng)態(tài)計(jì)算任務(wù)可以直接插入到PPU 202的調(diào)度管線中,無(wú)需由CPU 102參與。當(dāng)數(shù)據(jù)排隊(duì)用于動(dòng)態(tài)計(jì)算任務(wù)將時(shí),機(jī)制生成vspan反射通知信號(hào),并且為其他事件生成附加的通知信號(hào),所述其他事件例如開(kāi)始加載TMD高速緩存305、無(wú)效存儲(chǔ)用于計(jì)算任務(wù)的數(shù)據(jù)的高速緩存條目以及使能計(jì)算任務(wù)的調(diào)度。此外,可以不按順序?qū)Υ鎯?chǔ)用于計(jì)算任務(wù)隊(duì)列的數(shù)據(jù)的條目進(jìn)行寫(xiě)。因此,當(dāng)動(dòng)態(tài)生成的數(shù)據(jù)寫(xiě)入隊(duì)列的時(shí)候,部分?jǐn)?shù)據(jù)被合并并且通知任務(wù)/工作單元207當(dāng)條目的序列準(zhǔn)備好被調(diào)度用于處理時(shí)開(kāi)始或繼續(xù)計(jì)算任務(wù)的執(zhí)行。等待數(shù)據(jù)寫(xiě)入隊(duì)列的順序條目中與寫(xiě)隊(duì)列條目的解耦允許生成數(shù)據(jù)的線程簡(jiǎn)單地寫(xiě)條目并隨后退出或繼續(xù)處理其他數(shù)據(jù)。本發(fā)明的一個(gè)實(shí)施例可被實(shí)施為與計(jì)算機(jī)系統(tǒng)一起使用的程序產(chǎn)品。該程序產(chǎn)品的程序定義實(shí)施例的各功能(包括本文中描述的方法)并且可以被包含在各種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上。示出的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括但不限于:(i)不可寫(xiě)入的存儲(chǔ)介質(zhì)(例如,計(jì)算機(jī)內(nèi)的只讀存儲(chǔ)器設(shè)備,諸如可由CD-ROM驅(qū)動(dòng)器讀取的光盤(pán)只讀存儲(chǔ)器(CD-ROM)盤(pán)、閃存、只讀存儲(chǔ)器(ROM)芯片或任何類型的固態(tài)非易失性半導(dǎo)體存儲(chǔ)器),在其上存儲(chǔ)永久性信息jP(ii)可寫(xiě)入的存儲(chǔ)介質(zhì)(例如,磁盤(pán)驅(qū)動(dòng)器或硬盤(pán)驅(qū)動(dòng)器內(nèi)的軟盤(pán)或者任何類型的固態(tài)隨機(jī)存取半導(dǎo)體存儲(chǔ)器),在其上存儲(chǔ)可更改的信息。以上已參照特定實(shí)施例對(duì)本發(fā)明進(jìn)行了描述。然而,本領(lǐng)域技術(shù)人員將理解的是,在不脫離如隨附權(quán)利要求書(shū)中所闡釋的本發(fā)明的較寬精神和范圍的情況下,可對(duì)此做出各種修改和變化。因此,前面的描述以及附圖應(yīng)被視為是例示性而非限制性的。
權(quán)利要求
1.一種通知任務(wù)管理器數(shù)據(jù)可用于處理的方法,所述方法包括: 生成傳輸?shù)剿鋈蝿?wù)管理器的第一通知信號(hào),其中所述通知信號(hào)指定第一偏移和第一Δ值; 在與第一處理任務(wù)相對(duì)應(yīng)的隊(duì)列中存儲(chǔ)與所述第一偏移和所述第一△值相關(guān)聯(lián)的第一數(shù)據(jù); 生成傳輸?shù)剿鋈蝿?wù)管理器的第二通知信號(hào),其中所述通知信號(hào)包括第二偏移和第二Δ值; 在與所述第一處理任務(wù)相對(duì)應(yīng)的所述隊(duì)列中存儲(chǔ)與所述第二偏移和所述第二 △值相關(guān)聯(lián)的第二數(shù)據(jù); 接收所述第一通知信號(hào)和第二通知信號(hào); 確定所述第一偏移和所述第一 △值是否能夠與所述第二偏移和所述第二 △值合并,以生成經(jīng)合并的偏移和經(jīng)合并的Λ值;以及 由所述任務(wù)管理器調(diào)度用于處理集群陣列中的所述第一處理任務(wù)的所述第一數(shù)據(jù)和所述第二數(shù)據(jù)中的至少一個(gè)的處理。
2.一種用于通知任務(wù)管理器數(shù)據(jù)可用于處理的系統(tǒng),所述系統(tǒng)包括: 隊(duì)列,其對(duì)應(yīng)于第一處理任務(wù)并且配置為存儲(chǔ)所述數(shù)據(jù),所述數(shù)據(jù)包括第一數(shù)據(jù)和第二數(shù)據(jù); 存儲(chǔ)器管理單元,其配置為: 生成直接傳輸?shù)剿?述任務(wù)管理器的第一通知信號(hào),其中所述通知信號(hào)指定與所述第一數(shù)據(jù)相關(guān)聯(lián)的第一偏移和第一 △值;以及 生成直接傳輸?shù)剿鋈蝿?wù)管理器的第二通知信號(hào),其中所述通知信號(hào)指定與所述第二數(shù)據(jù)相關(guān)聯(lián)的第二偏移和第二 △值;以及任務(wù)管理器,其配置為: 接收所述第一通知信號(hào)和所述第二通知信號(hào); 確定所述第一偏移和所述第一 △值是否能夠與所述第二偏移和所述第二 △值合并,以生成經(jīng)合并的偏移和經(jīng)合并的Λ值;以及 調(diào)度用于處理集群陣列中的所述第一處理任務(wù)的所述第一數(shù)據(jù)和所述第二數(shù)據(jù)中的至少一個(gè)的處理。
3.根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述任務(wù)管理器進(jìn)一步配置為:當(dāng)用于所述第一反射通知信號(hào)的所述第一偏移和所述第一 △值不能夠與所述第二偏移和所述第二 △值合并時(shí),按照基于所述第一偏移和所述第二偏移的順序?qū)⑺龅谝黄?、所述第?△值、所述第二偏移和所述第二△值插入鏈接列表。
4.根據(jù)權(quán)利要求3所述的系統(tǒng),其中所述任務(wù)管理器進(jìn)一步配置為: 當(dāng)指針指向存儲(chǔ)所述第一數(shù)據(jù)的至少一部分的所述隊(duì)列的條目時(shí),將所述指針提前到所述隊(duì)列的頭部;以及 從所述鏈接列表移除所述第一偏移和所述第一 △值。
5.根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述存儲(chǔ)器管理單元進(jìn)一步配置為: 接收針對(duì)存儲(chǔ)器地址的第一寫(xiě)請(qǐng)求,所述第一寫(xiě)請(qǐng)求包括用于所述第一處理任務(wù)的第一數(shù)據(jù);檢測(cè)所述存儲(chǔ)器地址在反射地址的范圍內(nèi);以及 直接反射所述第一寫(xiě)請(qǐng)求至所述任務(wù)管理器,作為所述第一通知信號(hào)。
6.根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述處理集群陣列進(jìn)一步配置為: 按照第一順序分配所述隊(duì)列中的第一條目用于存儲(chǔ)所述第一數(shù)據(jù)以及所述隊(duì)列中的第二條目用于存儲(chǔ)所述第二數(shù)據(jù);以及 傳輸包括用于所述處理任務(wù)的所述第二數(shù)據(jù)的第二寫(xiě)請(qǐng)求到所述存儲(chǔ)器,以及 所述存儲(chǔ)器管理單元進(jìn)一步配置為處理所述第二寫(xiě)請(qǐng)求,以在所述存儲(chǔ)器中存儲(chǔ)用于所述處理任務(wù)的所述第二數(shù)據(jù),其中所述第一寫(xiě)請(qǐng)求和所述第二寫(xiě)請(qǐng)求按照與所述第一順序相比不同的第二順序來(lái)處理。
7.根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述處理集群陣列進(jìn)一步配置為生成直接傳輸?shù)剿鋈蝿?wù)管理器的第三通知信號(hào),并且所述第三通知信號(hào)配置為從任務(wù)元數(shù)據(jù)結(jié)構(gòu)的第一部分復(fù)制數(shù)據(jù)至所述任務(wù)元數(shù)據(jù)結(jié)構(gòu)的第二部分。
8.根據(jù)權(quán)利要求2所述的系統(tǒng),其中多線程處理器進(jìn)一步配置為生成直接傳輸至所述任務(wù)管理器的第三通知信號(hào),并且所述第三通知信號(hào)配置為使高速緩存中的條目無(wú)效,所述高速緩存存儲(chǔ)編碼所述處理任務(wù)的任務(wù)元數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)。
9.根據(jù)權(quán)利要求2所述系統(tǒng),其中多線程處理器進(jìn)一步配置為生成直接傳輸?shù)剿鋈蝿?wù)管理器的第三通知信號(hào),并且所述第三通知信號(hào)配置為寫(xiě)控制是否調(diào)度所述處理任務(wù)用于執(zhí)行的標(biāo)記。
10.一種用于通知任務(wù)管理器數(shù)據(jù)可用于處理的系統(tǒng),所述系統(tǒng)包括: 處理集群陣列, 其配置為: 執(zhí)行第一處理任務(wù),以及 在所述第一處理任務(wù)的執(zhí)行期間,生成第一通知信號(hào),所述第一通知信號(hào)配置為寫(xiě)控制是否調(diào)度第二處理任務(wù)用于執(zhí)行的標(biāo)記; 存儲(chǔ)器管理單元,其配置為直接從所述處理集群陣列傳輸所述第一通知信號(hào)到所述任務(wù)管理器;以及 所述任務(wù)管理器,其配置為當(dāng)所述標(biāo)記使能時(shí),調(diào)度用于所述處理集群陣列中的所述第二處理任務(wù)的所述數(shù)據(jù)的處理。
全文摘要
本發(fā)明的一個(gè)實(shí)施例闡述了一種技術(shù),其用于使能所生成的任務(wù)插入多處理器系統(tǒng)的調(diào)度管線中,以允許正在執(zhí)行的計(jì)算任務(wù)動(dòng)態(tài)地生成動(dòng)態(tài)任務(wù)并且通知多處理器系統(tǒng)的調(diào)度單元,而無(wú)需由CPU參與。當(dāng)用于動(dòng)態(tài)任務(wù)的數(shù)據(jù)被寫(xiě)入隊(duì)列時(shí),響應(yīng)于寫(xiě)請(qǐng)求生成反射通知信號(hào)。生成附加的反射通知信號(hào)用于在計(jì)算任務(wù)的執(zhí)行期間發(fā)生的其他事件,所述其他事件例如使存儲(chǔ)用于計(jì)算任務(wù)的數(shù)據(jù)的高速緩存條目無(wú)效,以及使能另一個(gè)計(jì)算任務(wù)的調(diào)度。
文檔編號(hào)G06F9/46GK103197955SQ20121054849
公開(kāi)日2013年7月10日 申請(qǐng)日期2012年12月17日 優(yōu)先權(quán)日2011年12月16日
發(fā)明者蒂莫西·約翰·珀塞爾, 蘭基·V·姍, 杰爾姆·F·小杜魯克, 肖恩·J·特賴斯勒, 卡里姆·M·阿夫達(dá)利亞, 菲利普·亞歷山大·夸德拉, 貝里安·帕里斯 申請(qǐng)人:輝達(dá)公司