国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      計算任務狀態(tài)封裝的制作方法

      文檔序號:6381026閱讀:170來源:國知局
      專利名稱:計算任務狀態(tài)封裝的制作方法
      技術領域
      本發(fā)明總地涉及計算任務的執(zhí)行,并且更具體地涉及對計算任務狀態(tài)的封裝。
      背景技術
      在多處理器系統(tǒng)中計算任務的傳統(tǒng)執(zhí)行從命令流接收處理任務,其對狀態(tài)信息進行編碼以配置與將要處理的數據交織的多個處理器。按照數據出現(xiàn)在流中的順序處理所述數據。當流中后面的數據的處理與完成對流中早先的數據的處理無關時,與數據出現(xiàn)在流中的順序相比所述數據可被無序地處理。好處在于當充足的處理資源可用于多個處理任務時可并發(fā)地執(zhí)行非相關處理任務。因此,本領域所需要的是一種用于封裝計算任務狀態(tài)以實現(xiàn)計算任務的無序(out-of-order)調度和執(zhí)行的系統(tǒng)和方法。

      發(fā)明內容
      一種用于封裝計算任務狀態(tài)的系統(tǒng)和方法實現(xiàn)了計算任務的無序調度和執(zhí)行。調度電路基于優(yōu)先級把計算任務組織成組。然后可使用不同的調度方案來選擇計算任務用于執(zhí)行。每個組被維持作為指向計算任務的指針的鏈表,所述計算任務被編碼為存儲在存儲器中的任務元數據(TMD)。TMD封裝那些為初始化、調度和執(zhí)行計算任務所需的狀態(tài)和參數。用于封裝計算任務的本發(fā)明的方法的多個實施例包括分配用于存儲任務元數據結構的存儲器。所述方法還包括:在所述任務元數據結構中存儲初始化參數,所述初始化參數配置流多處理器以執(zhí)行計算任務;在所述任務元數據結構中存儲調度參數,所述調度參數控制所述計算任務的調度;在所述任務元數據結構中存儲執(zhí)行參數,所述執(zhí)行參數控制流多處理器對所述計算任務的執(zhí)行;以及執(zhí)行所述計算任務。本發(fā)明的多個實施例包括一種用于封裝計算任務的系統(tǒng),所述系統(tǒng)包括:存儲器,被配置成存儲對應于所述計算任務的任務元數據結構;以及多線程處理器。多線程處理器被配置成:分配所述存儲器的一部分來存儲所述任務元數據結構;在所述任務元數據結構中存儲初始化參數,所述初始化參數配置流多處理器以執(zhí)行計算任務;在所述任務元數據結構中存儲調度參數,所述調度參數控制所述計算任務的調度;以及在所述任務元數據結構中存儲執(zhí)行參數,所述執(zhí)行參數控制多線程處理器對所述計算任務的執(zhí)行。多線程處理器還被配置成執(zhí)行所述計算任務。計算任務到TMD中的封裝實現(xiàn)了計算任務的調度以無序執(zhí)行。另外,計算任務可并發(fā)地執(zhí)行,并且控制計算任務的執(zhí)行的參數可被編碼在TMD中。初始化和執(zhí)行調度參數被用來配置流多處理器和存儲器資源以執(zhí)行每個TMD。


      因此,可以詳細地理解上述列舉的本發(fā)明的特征,并且可以參考實施例得到對如上面所概括的本發(fā)明更具體的描述,其中一些實施例在附圖中示出。然而,應該注意的是,附圖僅示出了本發(fā)明的典型實施例,因此不應被認為是對其范圍的限制,因為本發(fā)明可以承認其他等效的實施例。圖1是示出了經配置以實現(xiàn)本發(fā)明一個或多個方面的計算機系統(tǒng)的框圖;圖2是根據本發(fā)明一個實施例的用于圖1的計算機系統(tǒng)的并行處理子系統(tǒng)的框圖;圖3是根據本發(fā)明一個實施例的圖2的任務/工作單元的框圖;圖4A是根據本發(fā)明的一個實施例的圖3的任務/工作單元的另一個框圖;圖4B示出了根據本發(fā)明的一個實施例的用于在圖4A的任務元數據(TMD)緩存中加載條目的方法的流程圖;圖5A是根據本發(fā)明的一個實施例的圖3和4A的TMD的內容的示意圖;圖5B示出了根據本發(fā)明的一個實施例的指向圖5A的隊列的條目的指針;圖6不出了根據本發(fā)明的一個實施例的用于在圖3、4A和5的柵格(grid) TMD中封裝計算任務狀態(tài)的方法;以及圖7示出了根據本發(fā)明的一個實施例的用于在圖3、4A和5的隊列TMD中封裝計算任務狀態(tài)的方法。
      具體實施例方式在下面的描述中,將闡述大量的具體細節(jié)以提供對本發(fā)明更透徹的理解。然而,對本領域的技術人員顯而易見的是本發(fā)明可以在沒有一個或多個這些具體細節(jié)的情況下得以實施。在其他例子中,沒有描述公知的特征以避免對本發(fā)明造成混淆。系統(tǒng)概述圖1是示出了經配置以實現(xiàn)本發(fā)明的一個或多個方面的計算機系統(tǒng)100的框圖。計算機系統(tǒng)100包括中央處理單元(CPU) 102和經由可以包括存儲器橋105的互連路徑通信的系統(tǒng)存儲器104。存儲器橋105可以是例如北橋芯片,經由總線或其他通信路徑106(例如超傳輸(HyperTransport)鏈路)連接至Ij I/O (輸入/輸出)橋107。I/O橋107,其可以是例如南橋芯片,從一個或多個用戶輸入設備108 (例如鍵盤、鼠標)接收用戶輸入并且經由路徑106和存儲器橋105將所述輸入轉發(fā)到CPU 102。并行處理子系統(tǒng)112經由總線或其他通信路徑113 (例如PCI Express、加速圖形端口或超傳輸鏈路)耦合到存儲器橋105 ;在一個實施例中,并行處理子系統(tǒng)112是將像素傳遞到顯示設備110 (例如傳統(tǒng)的基于CRT或IXD的監(jiān)視器)的圖形子系統(tǒng)。系統(tǒng)盤114也連接到I/O橋107。開關116提供I/O橋107與諸如網絡適配器118以及各種外插卡120和121的其他組件之間的連接。其他組件(未明確示出),包括USB或其他端口連接、CD驅動器、DVD驅動器、膠片錄制設備及類似組件,也可以連接到I/O橋107。使圖1中各種組件互連的通信路徑可以使用任何適合的協(xié)議實現(xiàn),諸如PCI (外圍組件互連)、PC1-Express、AGP (加速圖形端口)、超傳輸或者任何其他總線或點到點通信協(xié)議,并且不同設備間的連接可使用本領域已知的不同協(xié)議。在一個實施例中,并行處理子系統(tǒng)112包含經優(yōu)化用于圖形和視頻處理的電路,包括例如視頻輸出電路,并且構成圖形處理單元(GPU)。在另一個實施例中,并行處理子系統(tǒng)112包含經優(yōu)化用于通用處理的電路,同時保留底層(underlying)的計算架構,本文將更詳細地進行描述。在又一個實施例中,可以將并行處理子系統(tǒng)112與一個或多個其他系統(tǒng)元件集成起來,諸如存儲器橋105、CPU 102以及I/O橋107,以形成片上系統(tǒng)(SoC)。應該理解,本文所示系統(tǒng)是示例性的,并且變化和修改都是可能的。連接拓撲,包括橋的數量和布置、CPU 102的數量以及并行處理子系統(tǒng)112的數量,可根據需要修改。例如,在一些實施例中,系統(tǒng)存儲器104直接連接到CPU 102而不是通過橋,并且其他設備經由存儲器橋105和CPU 102與系統(tǒng)存儲器104通信。在其他替代性拓撲中,并行處理子系統(tǒng)112連接到I/O橋107或直接連接到CPU 102,而不是連接到存儲器橋105。而在其他實施例中,I/O橋107和存儲器橋105可能被集成到單個芯片上。大量實施例可以包括兩個或兩個以上的CPU 102以及兩個或兩個以上的并行處理系統(tǒng)112。本文所示的特定組件是可選的;例如,任意數量的外插卡或外圍設備都可能得到支持。在一些實施例中,開關116被去掉,網絡適配器118和外插卡120、121直接連接到I/O橋107。圖2示出了根據本發(fā)明一個實施例的并行處理子系統(tǒng)112。如圖所示,并行處理子系統(tǒng)112包括一個或多個并行處理單元(PI3U) 202,每個并行處理單元202都耦合到本地并行處理(PP)存儲器204。通常,并行處理子系統(tǒng)包括U個PPU,其中U彡I。(本文中,類似對象的多個實體以標識該對象的參考數字和需要時標識所述實體的括號中的數字來表示。)PPU 202和并行處理存儲器204可使用一個或多個集成電路設備來實現(xiàn),諸如可編程處理器、專用集成電路(ASIC)或存儲器設備,或者以任何其他技術可行的方式來實現(xiàn)。

      再參考圖1,在一些實施例中,并行處理子系統(tǒng)112的一些或所有PPU 202是具有渲染管線的圖形處理器,它可以經配置以執(zhí)行與下述相關的各種操作:經由存儲器橋105和總線113從CPU 102和/或系統(tǒng)存儲器104所提供的圖形數據生成像素數據,與本地并行處理存儲器204 (可被用作圖形存儲器,包括例如常用幀緩沖區(qū)(buffer))交互以存儲和更新像素數據,傳遞像素數據到顯示設備110等等。在一些實施例中,并行處理子系統(tǒng)112可包括一個或多個作為圖形處理器而操作的PPU 202以及包括一個或多個用于通用計算的其他PPU 202。這些PI3U可以是相同的或不同的,并且每個PPU均可具有其自己的專用并行處理存儲器設備或不具有專用的并行處理存儲器設備。一個或多個PPU 202可輸出數據到顯示設備110,或者每個PPU 202均可輸出數據到一個或多個顯示設備110。在操作中,CPU 102是計算機系統(tǒng)100的主處理器,控制和協(xié)調其他系統(tǒng)組件的操作。具體地,CPU 102發(fā)出控制PPU 202的操作的命令。在一些實施例中,CPU 102為每個PPU 202寫入命令流到數據結構中(在圖1或圖2中未明確示出),所述數據結構可位于系統(tǒng)存儲器104、并行處理存儲器204、或CPU 102和PPU 202都可訪問的其他存儲位置中。將指向每個數據結構的指針寫到入棧緩沖區(qū)(pushbuffer)以啟動對數據結構中的命令流的處理。PPU202從一個或多個入棧緩沖區(qū)讀取命令流,然后相對于CPU 102的操作異步地執(zhí)行命令??梢詾槊總€入棧緩沖區(qū)指定執(zhí)行優(yōu)先權以控制對不同入棧緩沖區(qū)的調度。現(xiàn)在返回參考圖2,每個PPU 202均包括經由連接到存儲器橋105 (或者,在一個替代性實施例中,直接連接到CPU 102)的通信路徑113與計算機系統(tǒng)100的其余部分通信的I/O (輸入/輸出)單元205。PPU 202到計算機系統(tǒng)100的其余部分的連接也可以變化。在一些實施例中,并行處理子系統(tǒng)112可作為外插卡來實現(xiàn),所述外插卡可被插入到計算機系統(tǒng)100的擴展槽中。在其他實施例中,PPU 202可以和諸如存儲器橋105或I/O橋107的總線橋一起集成在單個芯片上。而在其他實施例中,PI3U 202的一些或所有元件可以和CPU 102—起集成在單個芯片上。在一個實施例中,通信路徑113是PC1-EXPRESS鏈路,如本領域所知的,在PC1-EXPRESS鏈路中專用通道被分配到每個PPU 202。I/O單元205生成用于在通信路徑113上傳輸的數據包(或其他信號),并且還從通信路徑113接收所有傳入的數據包(或其他信號),將傳入的數據包引導到PPU 202的適當組件。例如,可將與處理任務有關的命令引導到主機接口 206,而可將與存儲器操作有關的命令(例如,對并行處理存儲器204的讀取或寫入)引導到存儲器交叉開關單元210。主機接口 206讀取每個入棧緩沖區(qū),并且將存儲在入棧緩沖區(qū)中的命令流輸出到前端212。有利地,每個PPU 202都實現(xiàn)高度并行處理架構。如詳細示出的,PPU 202 (O)包括處理集群陣列230,該陣列230包括C個通用處理集群(GPC) 208,其中C彡I。每個GPC 208都能夠并發(fā)執(zhí)行大量的(例如,幾百或幾千)線程,其中每個線程均是程序的實例(instance)。在各種應用中,可分配不同的GPC208用于處理不同類型的程序或用于執(zhí)行不同類型的計算。取決于因每種類型的程序或計算所產生的工作量,GPC 208的分配可以變化。GPC 208從任務/工作單元207內的工作分布單元來接收將要執(zhí)行的處理任務。所述工作分布單元接收指向被編碼為任務元數據(TMD)并存儲在存儲器中的計算處理任務的指針(任務指針)。指向TMD的任務指針被包括在存儲為入棧緩沖區(qū)并由前端單元212從主機接口 206接收的命令流中。可以被編碼為TMD的處理任務包括將被處理的數據的索引,以及定義數據將被如何處理(例如,什么程序將被執(zhí)行)的狀態(tài)參數和命令。任務/工作單元207從前端212接收任務并確保在每一個TMD所指定的處理啟動前,將GPC 208配置為有效狀態(tài)??梢詾槊總€TMD指定用來調度處理任務的執(zhí)行的優(yōu)先權。存儲器接口 214包括D個分區(qū)單元215,每個分區(qū)單元215均直接耦合到一部分并行處理存儲器204,其中DS I。如所示的,分區(qū)單元215的數量一般等于DRAM 220的數量。在其他實施例中,分區(qū)單元215的數量也可以不等于存儲器設備的數量。本領域的技術人員應該理解DRAM 220可以 用其他合適的存儲設備來替代并且可以是一般常規(guī)的設計。因此省略了詳細描述。諸如幀緩沖區(qū)或紋理映射圖的渲染目標可以跨DRAM 220加以存儲,這允許分區(qū)單元215并行寫入每個渲染目標的各部分以有效地使用并行處理存儲器204的可用帶寬。任意一個GPC 208都可以處理將要被寫到并行處理存儲器204內的任意DRAM 220的數據。交叉開關單元210經配置以路由每個GPC 208的輸出到任意分區(qū)單元215的輸入或到另一個GPC 208用于進一步處理。GPC 208通過交叉開關單元210與存儲器接口 214通信,以對各種外部存儲器設備進行讀取或寫入。在一個實施例中,交叉開關單元210具有到存儲器接口 214的連接以和I/O單元205通信,以及到本地并行處理存儲器204的連接,從而使得在不同GPC 208內的處理內核能夠與系統(tǒng)存儲器104或對于PPU 202而言非本地的其他存儲器通信。在圖2所示的實施例中,交叉開關單元210直接與I/O單元205連接。交叉開關單元210可使用虛擬信道來分開GPC 208與分區(qū)單元215之間的業(yè)務流。另外,GPC 208可被編程以執(zhí)行與種類繁多的應用相關的處理任務,包括但不限于,線性和非線性數據變換、視頻和/或音頻數據過濾、建模操作(例如,應用物理定律以確定對象的位置、速率和其他屬性)、圖像渲染操作(例如,曲面細分(tessellation)著色、頂點著色、幾何著色、和/或像素著色程序)等等。PPU 202可將數據從系統(tǒng)存儲器104和/或本地并行處理存儲器204傳送到內部(片上)存儲器中,處理所述數據,并且將結果數據寫回到系統(tǒng)存儲器104和/或本地并行處理存儲器204,其中這樣的數據可以由其他系統(tǒng)組件訪問,所述其他系統(tǒng)組件包括CPU 102或另一個并行處理子系統(tǒng)112。PPU 202可配備有任意容量(amount)的本地并行處理存儲器204,包括沒有本地存儲器,并且可以以任意組合方式使用本地存儲器和系統(tǒng)存儲器。例如,在統(tǒng)一存儲器架構(UMA)實施例中,PPU 202可以是圖形處理器。在這樣的實施例中,將不提供或幾乎不提供專用的圖形(并行處理)存儲器,并且PPU 202會以排他或幾乎排他的方式使用系統(tǒng)存儲器。在UMA實施例中,PPU 202可被集成到橋式芯片中或處理器芯片中,或作為具有高速鏈路(例如,PC1-EXPRESS)的分立芯片提供,所述高速鏈路經由橋式芯片或其他通信方式將PPU202連接到系統(tǒng)存儲器。如上所述,并行處理子系統(tǒng)112可以包括任意數量的PPU 202。例如,可在單個外插卡上提供多個PPU 202、或可將多個外插卡連接到存儲路徑113、或可將一個或多個PPU202集成到橋式芯片中。在多PI3U系統(tǒng)中的PPU202可以彼此相同或不同。例如,不同的PPU202可能具有不同數量的處理內核、不同容量的本地并行處理存儲器等等。在出現(xiàn)多個PPU202的情況下,可并行操作那些PI3U從而以高于單個PPU 202所可能達到的吞吐量來處理數據。包含一個或多個PPU 202的系統(tǒng)可以以各種配置和形式因素來實現(xiàn),包括臺式電腦、筆記本電腦或手持式個人計算機、服務器、工作站、游戲控制臺、嵌入式系統(tǒng)等等。多個并發(fā)任務調度可以在GPC 208上并發(fā)執(zhí)行多個處理任務并且處理任務在執(zhí)行期間可以生成一個或多個“子”處理任務。任務/工作單元207接收任務并動態(tài)調度處理任務和子處理任務以由GPC 208執(zhí)行。圖3是根據本發(fā)明一個實施例的圖2的任務/工作單元207的框圖。任務/工作單元207包括任務管理單元300和工作分布單元340。任務管理單元300基于執(zhí)行優(yōu)先級來組織將要被調度的任務。對于每個優(yōu)先級,任務管理單元300將指向對應于任務的TMD322的任務指針列表存儲在調度器表321中,其中該列表可以用鏈表(linked list)來實施??梢詫MD 322存儲在PP存儲器204或系統(tǒng)存儲器104中。任務管理單元300接受任務并將任務存儲在調度器表321中的速度與任務管理單元300調度任務以執(zhí)行的速度是解耦的,這使得任務管理單元300能夠基于優(yōu)先權信息或使用其他技術來調度任務。工作分布單元340包括具有槽的任務表345,每個槽均可以被正在被執(zhí)行的任務的TMD 322所占用。當任務表345中有空閑槽時,任務管理單元300可以調度任務以執(zhí)行。當沒有空閑槽時,沒有占用槽的較高優(yōu)先權任務可以驅逐占用槽的較低優(yōu)先權任務。當任務被驅逐時,該任務被停止,并且如果該任務的執(zhí)行沒有完成,則將該任務添加到調度器表321中的鏈表。當生成子處理任務時,將該子任務添加到調度器表321中的鏈表。子任務可由在處理集群陣列230中執(zhí)行的TMD 322生成。當任務被驅逐時,從槽移除該任務。本領域普通技術人員應理解的是,圖1、2和3中所描述的架構決非限制本發(fā)明的范圍,并且在不脫離本發(fā)明的范圍的情況下,本文所教導的技術可在任何適當配置的處理單元上實施,這些處理單元包括但不限于一個或多個CPU、一個或多個多核CPU、一個或多個PPU 202、一個或多個GPC 208、一個或多個圖形或專用處理單元等。
      任務調度和管理任務管理單元300管理將要作為存儲在調度器表321中的TMD組陣列被調度的計算任務。TMD組是具有相同調度優(yōu)先權的計算任務集。TMD組的數量或優(yōu)先級可以是一個或多個。在每個TMD組內,處于各自優(yōu)先級的計算任務被存儲在列表中,該列表可以用鏈表來實現(xiàn),并且在下文中假設為鏈表。鏈表中的每個TMD在各自的鏈表中存儲指向下一個TMD的指針。針對每個TMD,存儲用于該鏈表的頭部指針和尾部指針。沒有任務的TMD組具有等于尾部指針的頭部指針并且將空位設置為真。當從主機接口 206接收計算任務時,任務管理單元300將計算任務插入TMD組。更具體地,將指向對應于該計算任務的TMD的任務指針添加到用于該組的鏈表的尾部,除非特殊的TMD位被設置,這導致任務被添加到鏈表的頭部。盡管TMD組內的所有任務都具有相同的調度優(yōu)先級,TMD組鏈表的頭部也是由任務管理單元300所選擇并經調度以執(zhí)行的第一計算任務。因此,處于鏈表頭部的計算任務與處于相同優(yōu)先級的其他計算任務相比,具有相對更高的優(yōu)先權。同樣地,相對于鏈表中前面的計算任務,鏈表中每個處于相同優(yōu)先級的后繼計算任務均相當于更低優(yōu)先權。因此,任務管理單元300能夠相對彼此按照輸入順序來調度TMD組內的計算任務(假設沒有被特殊標記以添加到TMD組頭部的計算任務)。因為TMD組被指定為TMD結構的一部分,所以當計算任務正在執(zhí)行時不能改變計算任務的TMD組。也可以從處理集群陣列230接收計算任務。在調度計算任務之前基于優(yōu)先級將計算任務收集到組中,這允許由任務管理單元300接收計算任務的速度與將計算任務輸出到工作分布單元340以執(zhí)行的速度解耦。任務管理單元300通常還能夠從一個或多個入棧緩沖區(qū)接受計算任務,其由主機接口 206以比由工作分布單元340輸出計算任務以執(zhí)行的更快的速度輸出。來自不同入棧緩沖區(qū)的輸入是獨立的流,其通常由相同的應用程序生成以便具有多組相關任務,但是在一些實施例中,多個應用程序可以對入棧緩沖區(qū)寫入。任務管理單元300可以經配置以在調度器表321中緩沖計算任務并稍后從調度器表321中選擇一個或多個計算任務以輸出到工作分布單元304。與在接收計算任務的同時選擇計算任務相比,通過在緩沖計算任務之后選擇計算任務,任務管理單元可以基于更多信息來做出選擇。例如,任務管理單元300可以緩沖在高優(yōu)先權任務之前接收到的數個低優(yōu)先權任務。緩沖使得任務管理單元300能夠選擇高優(yōu)先權任務以在低優(yōu)先權任務之前輸出。任務管理單元300可以執(zhí)行選擇以使用下述幾種不同技術來調度計算任務:循環(huán)制、優(yōu)先權或劃分優(yōu)先權調度。對每個不同的調度技術,當選擇計算任務加以調度時,將所選擇的計算任務從其中存儲該所選擇的計算任務的組中移除。不管是哪種調度技術,任務管理單元300都能夠通過選擇適當組的鏈表中的第一條目來迅速地選擇計算任務。任務管理單元300可通過簡單地改變TMD組的鏈表中的任務指針的排序而容易地組織且(如果需要的話)重新排序計算任務。因此,計算任務可按照與任務管理單元300從主機接口 206接收任務指針的順序不同的順序被調度和/或執(zhí)行。對于任務管理單元300來說最簡單的調度方案是調度處于每組頭部的計算任務(如果該組中存在計算任務)并按循環(huán)制順序輪換各組。另一個調度技術是優(yōu)先權調度,其按照嚴格的優(yōu)先權順序來選擇計算任務。任務管理單元300從至少具有一個計算任務的最高優(yōu)先權組選擇計算任務,在組的頭部開始。
      圖4A是根據本發(fā)明一個實施例的圖3的任務/工作單元207的另一個框圖。任務/工作單元207包括與任務管理單元300和工作分布單元340實施類似功能的任務管理單元400和工作分布單元440。任務管理單元400包括調度器表421和TMD緩存405。TMD緩存405存儲一個或多個TMD 322。工作分布單元440包括任務表445。每個TMD 322均可以是通常存儲在PP存儲器204中的大的結構,例如,256字節(jié)或更多。由于大的尺寸,TMD 322根據帶寬進行訪問是浪費的。因此,TMD緩存405僅存儲任務管理單元400進行調度所需的TMD 322的(相對小的)一部分。當調度任務,即將任務轉移到工作分布單元640時,可以從PP存儲器204提取TMD 322的其余部分。在軟件控制下寫入TMD 322,并且,當計算任務完成執(zhí)行時,可重新利用與已完成的計算任務相關聯(lián)的TMD來存儲用于不同計算任務的信息。因為可將TMD 322存儲在TMD緩存405中,所以應該從TMD緩存405去除存儲用于已完成的計算任務的信息的條目。去除操作是復雜的,因為寫入用于新計算任務的信息與將存儲在TMD緩存405中的信息寫回到由該去除所產生的TMD 322是解耦的。特別地,將用于新任務的信息寫到TMD 322然后將TMD 322作為入棧緩沖區(qū)的一部分輸出到前端212。這樣,軟件沒有接收到緩存已被去除的確認,以致TMD 322的寫入可能被延遲。因為緩存寫回可能為了新任務而覆蓋存儲在TMD 322中的信息,所以留出每個TMD 322的“純硬件”部分來用于僅由任務管理單元300或400訪問。TMD 322的其余部分可以由軟件和任務管理單元300或400所訪問。TMD 322可由軟件所訪問的部分通常由軟件來填充以啟動任務。之后在任務的調度和執(zhí)行期間由任務管理單元600和GPC 208中的其他處理單元訪問TMD 322。當將用于新計算任務的信息寫到TMD 322時,第一次將TMD 322加載進TMD緩存405中時,啟動TMD 322的命令可以指定是否將各個位拷貝進TMD 322的純硬件部分。這確保TMD 322將正確地僅存儲用于新計算任務的信息,這是因為用于已完成的計算任務的任何信息將已經僅被存儲在TMD 322的純硬件部分。圖4B不出了根據本發(fā)明一個實施例的用于將條目加載在TMD緩存405中的方法的流程圖。盡管結合圖1、2、3和4A的系統(tǒng)來描述方法步驟,但是本領域的技術人員應該理解任何經配置以按任意順序執(zhí)行所述方法步驟的系統(tǒng)都在本發(fā)明的范圍內。在步驟402識別TMD緩存405中的條目以使其與存儲在TMD 322中的信息一起被加載??梢皂憫诰彺嫒笔碜R別條目。在步驟412任務管理單元400將TMD信息存儲在緩存條目中。在步驟420任務管理單元400確定啟動TMD 322的命令是否指定將各個位拷貝進TMD 322的純硬件部分,以及,如果否,那么在步驟450在TMD緩存405中填充條目結束。否則,在步驟425,任務管理單元400將這些位從TMD 322的非純硬件部分拷貝到存儲TMD 322的純硬件部分的條目部分。將這些位從TMD 322的非純硬件部分拷貝到存儲TMD322的純硬件部分的條目部分會用用于新計算任務的數據覆蓋為所執(zhí)行的計算任務所存儲的數據。計算任務狀態(tài)封裝圖5A是根據本發(fā)明的一個實施例的在PP存儲器204中存儲的TMD322的內容的示意圖。TMD 322被配置成存儲初始化參數505、調度參數510、執(zhí)行參數515、CTA狀態(tài)520、純硬件字段422和隊列525。純硬件字段522存儲TMD 322的純硬件部分,其包括一個或多個純硬件參數。對所有TMD322共用的狀態(tài)未被包括在每個TMD 322中。因為TMD 322是在PP存儲器204中存儲的數據結構,因此在CPU 102或PPU 112上運行的計算程序可以在存儲器中創(chuàng)建TMD 322并且然后通過向任務/工作單元207發(fā)送指向TMD 322的任務指針來提交TMD 322以執(zhí)行。初始化參數505用來在啟動TMD 322時配置GPC 208并且可包括起始程序地址和隊列525的大小。注意,隊列525可與TMD 322分開地存儲在存儲器中,在這種情況下TMD322包括指向隊列525的指針(隊列指針)以代替實際隊列525。初始化參數405還可包括用于指示在啟動TMD 322時是否使各種緩存(例如,紋理頭部緩存、紋理采樣器緩存、紋理數據緩存、數據緩存、常數緩存等等)無效的位。指示紋理采樣器是否一對一地與紋理頭部鏈接的位也可被包括在初始化參數505中。初始化參數505也可包括線程中CTA的維度、TMD版本號、指令集版本號、柵格在CTA寬度、高度和深度方面的維度、存儲器組映射參數、應用程序所看到的調用棧的深度、以及TMD的調用-返回棧的大小。初始化參數505可包括常數緩沖區(qū)的大小、常數緩沖區(qū)的地址、指示常數緩沖區(qū)賦值是有效的位、以及指示來自常數緩沖區(qū)的數據在啟動TMD之前在緩存中是無效的位可以被存儲在初始化參數505中。最后,初始化參數505可包括與可用于CTA的每個線程的存儲器量有關的幾個參數。當需要多個CTA (每個CTA要求大量的共享存儲器)的TMD 322準備被調度用于執(zhí)行時,任務/工作單元207可限制(即節(jié)流)并發(fā)執(zhí)行的CTA數量,因此CTA不試圖消耗比可用于TMD 322訪問的更多的存儲器。與可用于CTA的每個線程的存儲器量有關的參數的示例包括一個或多個本地存儲器區(qū)域的大小、寄存器的數量、可通過LI緩存由TMD 322直接尋址的存儲器的大小、單一 CTA的共享存儲器量以及針對每個CTA的屏障操作的數量。調度參數510控制任務/工作單元207如何調度TMD 322來執(zhí)行。調度參數510可包括指示TMD 322是隊列TMD還是柵格TMD的位。如果TMD322是柵格TMD,則未使用TMD322的允許在啟動TMD 322后使附加數據排隊的隊列特征,并且TMD 322的執(zhí)行使得固定數量的CTA被啟動和執(zhí)行以處理存儲在隊列525中的固定數據量。CTA的數量被指定為柵格寬度、高度和深度的乘積。隊列525用指向數據的隊列指針來替代,其將被執(zhí)行由TMD322指定的程序的CTA處理。如果TMD 322是隊列TMD,則使用TMD 322的隊列特征,這意味著數據被作為隊列條目存儲在隊列525中。隊列條目是到TMD 322的CTA的輸入數據。隊列條目還可代表在線程的執(zhí)行期間由另一 TMD 322生成的子任務,由此提供嵌套并行性。通常,線程或包括線程的CTA的執(zhí)行被掛起,直到子任務的執(zhí)行完成為止。隊列525可實現(xiàn)為循環(huán)隊列,從而使得總數據量不限于隊列525的大小。如先前所描述的,隊列525可與TMD 322分開地存儲并且TMD 322可存儲指向隊列525的隊列指針。有利地,子任務的隊列條目可寫到隊列525,同時正在執(zhí)行代表子任務的TMD 322。針對隊列TMD執(zhí)行可變數量的CTA,其中CTA的數量取決于寫到TMD隊列的隊列525的條目數量。隊列TMD的調度參數510還包括由每個CTA處理的隊列525的條目數量(N)。當N個條目被添加到隊列525時,針對TMD 322啟動一個CTA。任務/工作單元207可構造過程的有向圖,其中每個過程是具有隊列的TMD 322。將要針對每個TMD 322執(zhí)行的CTA的數量可基于每個TMD 322的N的值以及在隊列525中寫入的條目的數量。隊列TMD的調度參數510還可包括設置在用小于N的隊列條目運行CTA之前等待的時間量的聚結等待時間參數。當隊列幾乎為空,但是存在數量不夠的隊列條目(這可能在執(zhí)行過程上隊列條目的總數不可被N等分時出現(xiàn))時,需要聚結等待時間參數。針對生產者-消費者隊列的情況,也需要聚結等待時間參數,以便避免死鎖。對于用少于N的條目來執(zhí)行CTA的情況,隊列條目的數量作為一個參數傳送到TMD的程序,從而使得在執(zhí)行期間可以考慮到條目的數量。替代性實施例可針對柵格TMD和隊列TMD具有不同的結構,或者僅實現(xiàn)柵格TMD或者隊列TMD。TMD 322的調度參數510可包括指示調度相關TMD是否還使得TMD字段被拷貝到純硬件字段522的位。調度參數510還可包括TMD組ID、用于指示TMD 322被添加到鏈表何處(頭部或尾部)的位、以及指向TMD組中的下一個TMD 322的指針。調度參數510還可包括使能/禁用GPC 208內的特定流多處理器的掩碼。TMD 322可包括指向在TMD 322完成時自動啟動的相關TMD的任務指針。信號量(semaphore)可由TMD 322執(zhí)行以確保不同TMD 322和CPU 102之間的相關性得以滿足。例如,第一 TMD 322的執(zhí)行可取決于第二 TMD完成,因此第二 TMD生成信號量釋放,并且在對應的信號量獲取成功后第一 TMD執(zhí)行。在一些實施例中,在主機接口 206或前端212中執(zhí)行所述信號量獲取。TMD 322的執(zhí)行參數515可存儲多個信號量釋放,包括存儲器屏障的類型、存儲器中的信號量數據結構的地址、信號量數據結構的大小、有效載荷、以及歸約操作的使能、類型和格式。信號量的數據結構可存儲在執(zhí)行參數515中或者可存儲在TMD 322之外。執(zhí)行參數515還可包括將要針對TMD 322執(zhí)行的程序的起始地址、在TMD 322的執(zhí)行完成時執(zhí)行的存儲器屏障操作的類型、指示是否針對TMD322 (串行地)一次僅執(zhí)行單個CTA的串行執(zhí)行標志、以及控制任務/工作單元207是否可基于為TMD 322指定的存儲器限制來限制并發(fā)運行的CTA數量的節(jié)流使能標志。執(zhí)行參數515還存儲控制算術操作的行為的各種標志,所述算術操作由為TMD322執(zhí)行的處理任務執(zhí)行,例如非數(NaN)應對、浮點數-整數轉換和各種指令的舍入模式。TMD 322的CTA狀態(tài)520可包括由TMD 322使用的參考計數器的ID、用于遞增參考計數器的使能、以及用于遞減參考計數器的單獨使能。當預占過程時,可在指令邊界或CTA邊界處停止TMD 322的處理并且在CTA狀態(tài)520中存儲將在此恢復處理的CTA的標識。為在預占后恢復TMD 322的執(zhí)行所需要的狀態(tài)信息可存儲在CTA狀態(tài)520中、或者在PP存儲器204中的單獨區(qū)域中或者在系統(tǒng)存儲器104中。CTA狀態(tài)520還存儲指向隊列525的條目的數據指針以及指示何時每個數據指針遞增超過隊列525末尾且需要繞回到隊列525起點的計數器溢出標志。調度標志和數據指針中的一個或多個的純硬件版本可存儲在純硬件字段522中。圖5B示出了根據本發(fā)明的一個實施例的指向圖5A的隊列525的條目的數據指針。隊列525中編碼的處理任務的數據寫入與隊列525中條目的分配是解耦的。首先,過程在隊列525中保留或分配許多條目,并且稍后,該過程把將要由CTA處理的數據存儲在條目中。外放置指針545指向隊列525中的將要分配的下一可用條目,而內放置指針540指向隊列525中的已被分配且仍未寫入的最舊條目。這些條目不必按分配條目的順序進行寫入,因此在已被寫入的外放置指針545和內放置指針540之間可能存在條目。外獲取指針530指向隊列525的存儲已被分派給CTA進行處理的數據的最舊條目,即將處理數據的CTA已被啟動但是CTA仍未讀取數據。內獲取指針535指向隊列525的已被分派給CTA進行處理的最新條目。已被寫入到隊列525但是仍未分派給CTA進行處理的數據被存儲在內獲取指針535和內放置指針540之間的條目中。已被分派給CTA進行處理且未被讀取的數據被存儲在外獲取指針530和內獲取指針535之間。圖6示出了根據本發(fā)明的一個實施例的用于針對柵格TMD在圖3、4A和5A的TMD322中封裝計算任務狀態(tài)的方法。雖然結合圖1、2、3和4A的系統(tǒng)描述了方法步驟,但是本領域技術人員將理解經配置成按任何順序執(zhí)行方法步驟的任何系統(tǒng)都在本發(fā)明的范圍內。在步驟605,分配TMD 322,即分配要在其中存儲TMD 322數據的存儲器。在步驟610,將初始化參數505存儲在TMD 322中。在步驟615,將調度參數510存儲在TMD 322中。在步驟620,將執(zhí)行參數515存儲在TMD 322中。在步驟630,如果在執(zhí)行可以進行之前TMD 322不在等待事件發(fā)生(例如信號量釋放),則任務/工作單元207直接進行至步驟635并且調度TMD 322。否則,如果在步驟630,TMD 322正在等待事件發(fā)生,則在步驟632,TMD 322確定是否接收到指示可繼續(xù)TMD 322的執(zhí)行的信號。當事件發(fā)生時,方法進行至步驟 635。在步驟635,任務/工作單元207調度TMD 322并且可用于供TMD 322使用的存儲器和GPC 208基于初始化參數505進行配置?;谡{度參數510由任務/工作單元207調度TMD 322。在步驟640,啟動一個或多個CTA以執(zhí)行GPC 208上的TMD 322。在CTA的執(zhí)行期間,基于執(zhí)行參數515執(zhí)行處理任務。在步驟655,當一個或多個CTA完成執(zhí)行且退出時,TMD322被解分配。圖7示出了根據本發(fā)明的一個實施例的用于針對隊列TMD在圖3、4A和5A的TMD中封裝計算任務狀態(tài)的方法。雖然結合圖1、2、3和4A的系統(tǒng)描述了方法步驟,但是本領域技術人員將理解經配置成按任何順序執(zhí)行方法步驟的任何系統(tǒng)都在本發(fā)明的范圍內。在步驟705,分配TMD 322,即分配要在其中存儲TMD 322數據的存儲器。在步驟710,將初始化參數505存儲在TMD 322中。在步驟715,將調度參數510存儲在TMD 322中。在步驟720,將執(zhí)行參數515存儲在TMD 322中。條目可在分配了 TMD 322后寫入到隊列525,而附加條目可在針對TMD 322執(zhí)行CTA時寫入到隊列525。當隊列525是循環(huán)隊列時,已被CTA讀取的條目可由另一個TMD 322或者由CPU 102經由前端212用附加隊列條目進行覆蓋。隊列525的寫入與隊列525的讀取由CTA解耦,并且可與讀取同時發(fā)生。在步驟730,任務/工作單元207確定是否寫入了隊列525中的足夠條目以啟動CTA,并且如果否的話,則任務/工作單元207等待更多條目寫入到隊列525。在步驟730,如果寫入了隊列525中的足夠條目,則任務/工作單元207在步驟735調度TMD 322。任務/工作單元207基于初始化參數505來配置可用于供TMD 322使用的存儲器和GPC 208。基于調度參數510由任務/工作單元207調度TMD 322。在步驟740,基于在隊列525中寫入的條目數量,啟動一個或多個CTA以執(zhí)行GPC208上的TMD 322。在步驟742,每個啟動的CTA讀取在隊列525中寫入的條目數量(N),從而使得讀取的條目的總數等于N乘以啟動的CTA的數量。在CTA的執(zhí)行期間,基于執(zhí)行參數515執(zhí)行處理任務,并且每個CTA處理在隊列525的N個條目中寫入的數據。在步驟745,任務/工作單元207確定是否寫入了隊列525中的足夠條目以啟動CTA,并且如果否的話,則任務/工作單元207進行至步驟750。否則,任務/工作單元207直接返回至步驟740以啟動一個或多個CTA。因此,當針對TMD的CTA正在把條目寫入到隊列525時,附加CTA可被啟動而不再次調度TMD322,因為TMD 322當前被調度。如果在步驟750,任務/工作單元207確定不再有條目將被寫入在隊列525中且隊列中不再有條目可以被寫入,則在步驟755,TMD 322被解分配。如果在隊列525中還有條目被寫入或者還有條目可以被寫入在隊列525中,則任務/工作單元207返回至步驟730。把計算處理任務編碼到TMD 322中的封裝機制允許每個TMD 322存儲特異于具體TMD 322的初始化、調度和執(zhí)行參數。初始化和執(zhí)行調度參數被用來配置流多處理器和存儲器資源以執(zhí)行TMD 322。調度參數被用來控制TMD 322的調度以執(zhí)行,包括無序執(zhí)行。本發(fā)明的一個實施例可以作為與計算機系統(tǒng)一起使用的程序產品實現(xiàn)。程序產品的程序定義實施例的功能(包括本文所述的方法)并且可以被包含在各種計算機可讀存儲介質上。示例性的計算機可讀存儲介質包括,但不限于:(i)信息被永久保存在其上的非可寫存儲介質(例如,計算機內的只讀存儲器設備,諸如可被CD-ROM驅動器讀取的CD-ROM盤、閃存、ROM芯片或任何類型的固態(tài)非易失性半導體存儲器)jP(ii)可變信息被保存在其上的可寫存儲介質(例如,磁盤驅動器內的軟盤或者硬盤驅動器或者任何類型的固態(tài)隨機存取半導體存儲器)。以上已經參照具體實施例描述了本發(fā)明。然而,本領域的技術人員應該理解在不脫離如所附權利要求提出的本發(fā)明更寬的精神和范圍的情況下,可以做出各種修改和改變。因此,前述的描述和附圖應被視為說明性的而非限制性的意義。
      權利要求
      1.一種封裝計算任務的方法,所述方法包括: 分配存儲器來存儲任務元數據結構; 在所述任務元數據結構中存儲初始化參數,所述初始化參數配置流多處理器以執(zhí)行計算任務; 在所述任務元數據結構中存儲調度參數,所述調度參數控制所述計算任務的調度;在所述任務元數據結構中存儲執(zhí)行參數,所述執(zhí)行參數控制流多處理器對所述計算任務的執(zhí)行;以及 執(zhí)行所述計算任務。
      2.根據權利要求1所述的方法,進一步包括在所述任務元數據結構中存儲指向隊列的指針,其中所述隊列存儲用于所述計 算任務的數據。
      3.根據權利要求2所述的方法,進一步包括在所述任務元數據結構中存儲狀態(tài)信息,所述狀態(tài)信息包括外放置指針,所述外放置指針指示所述隊列中的可用于分配以存儲用于所述計算任務的數據的下一條目。
      4.根據權利要求2所述的方法,進一步包括在所述任務元數據結構中存儲狀態(tài)信息,所述狀態(tài)信息包括內放置指針,所述內放置指針指示隊列中的不為空且已被分配以存儲用于所述計算任務的數據的最舊條目。
      5.根據權利要求2所述的方法,其中所述隊列是循環(huán)的并且所述任務元數據結構存儲用于數據指針中的至少一個數據指針的溢出標志。
      6.根據權利要求1所述的方法,進一步包括接收任務指針,所述任務指針包括指向所述任務元數據結構的任務指針以及指向與附加計算任務關聯(lián)的附加任務元數據結構的附加任務指針,其中所述計算任務和所述附加計算任務按照與接收所述任務指針的順序不同的順序加以執(zhí)行。
      7.根據權利要求1所述的方法,進一步包括: 在所述計算任務的執(zhí)行能夠進行之前確定所述任務元數據結構正在等待事件發(fā)生;以及 在調度用于執(zhí)行的所述計算任務之前等待接收調度信號。
      8.根據權利要求1所述的方法,進一步在鏈表中存儲指向下一任務元數據結構的任務指針,所述鏈表包括所述任務元數據結構和所述下一任務元數據結構。
      9.根據權利要求1所述的方法,其中所述任務元數據結構存儲組標識符并且將所述任務元數據結構與存儲相同組標識符的其他任務元數據結構一起組織在鏈表中。
      10.一種封裝計算任務的系統(tǒng),所述系統(tǒng)包括: 存儲器,被配置成存儲對應于所述計算任務的任務元數據; 多線程處理器,被配置成: 分配所述存儲器的一部分來存儲所述任務元數據; 在所述任務元數據中存儲初始化參數,所述初始化參數配置流多處理器以執(zhí)行計算任務; 在所述任務元數據中存儲調度參數,所述調度參數控制所述計算任務的調度; 在所述任務元數據中存儲執(zhí)行參數,所述執(zhí)行參數控制多線程處理器對所述計算任務的執(zhí)行;以及執(zhí)行所述計算任務。 ·
      全文摘要
      本發(fā)明的一個實施例闡述了一種用于封裝計算任務狀態(tài)的技術,其實現(xiàn)計算任務的無序調度和執(zhí)行。調度電路基于優(yōu)先級把計算任務組織成組。然后可使用不同的調度方案來選擇計算任務用于執(zhí)行。每個組被維持作為指向計算任務的指針的鏈表,所述計算任務被編碼為存儲在存儲器中的任務元數據(TMD)。TMD封裝那些為初始化、調度和執(zhí)行計算任務所需要的狀態(tài)和參數。
      文檔編號G06F9/46GK103207810SQ20121044867
      公開日2013年7月17日 申請日期2012年11月9日 優(yōu)先權日2011年11月9日
      發(fā)明者杰爾姆·F·小杜魯克, 蘭基·V·姍, 肖恩·J·特賴希勒 申請人:輝達公司
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1