TW201342243A - 處理系統中動態產生任務的傳訊、排序和執行 - Google Patents

處理系統中動態產生任務的傳訊、排序和執行 Download PDF

Info

Publication number
TW201342243A
TW201342243A TW101147438A TW101147438A TW201342243A TW 201342243 A TW201342243 A TW 201342243A TW 101147438 A TW101147438 A TW 101147438A TW 101147438 A TW101147438 A TW 101147438A TW 201342243 A TW201342243 A TW 201342243A
Authority
TW
Taiwan
Prior art keywords
task
data
processing
notification signal
tmd
Prior art date
Application number
TW101147438A
Other languages
English (en)
Other versions
TWI488118B (zh
Inventor
Timothy John Purcell
Lacky V Shah
Jerome F Duluk Jr
Sean J Treichler
Karim M Abdalla
Philip Alexander Cuadra
Brian Pharris
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of TW201342243A publication Critical patent/TW201342243A/zh
Application granted granted Critical
Publication of TWI488118B publication Critical patent/TWI488118B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

本發明揭示一種技術,可將產生的任務插入多重處理器系統的一排程管線,允許已經執行的計算任務動態產生一動態任務,並通知該多重處理器系統的一排程單元,而不用CPU介入。該動態任務的資料已經寫入一佇列時,產生一反應通知信號以回應一寫入要求。另外產生額外反應通知信號,用於在一計算任務執行期間發生的其他事件,例如使儲存該計算任務資料的快取記錄無效以及啟用其他計算任務的排程。

Description

處理系統中動態產生任務的傳訊、排序和執行
本發明一般係關於計算任務的執行,尤其係關於處理系統中動態產生任務的傳訊、排序和執行。
一般要在多處理器系統內處理的任務全都接收自單一輸入串流,若第一任務產生要由第二任務處理的資料,該第二任務也接收自該單一輸入串流,並且由與該多重處理器系統分開的中央處理單元(CPU,Central processing unit)執行將該第二任務插入該單一輸入串流。
若要執行該插入,則必須將該第二任務已經準備處理通知該CPU,並且提供儲存該第二任務的位置。由於執行該第一任務的該多重處理器系統與該CPU之間需要通訊所造成的延遲,所以該第二任務的處理會遭致額外延遲。
因此,業界內需要一種系統及方法,可在不牽涉到CPU之下將產生的任務插入多重處理器系統的排程管線內。
本發明揭示一種可在不牽涉到CPU之下將產生的處理任務插入多重處理器系統的排程管線內之系統及方法。一計算任務動態執行來產生一動態任務,並且將佇列記錄寫入儲存動態任務資料的記憶體內,然後產生反應通知信號並且直接傳輸至多重處理器系統的排程單元,不用CPU介入。所傳輸的該反應通知信號包含資訊,對應至該佇列內所儲存資料的寫入要求。在計算任務執行期間會產生額外信號,並且直接傳輸至該排程單元以回應其他事件,例如開始動態任務的處理、讓儲存 該計算任務資料的快取記錄無效以及啟用其他計算任務的排程。
本發明方法的許多具體實施例用於通知任務管理員,告知資料可用於處理,包含產生傳輸給該任務管理員的第一通知信號,其中該通知信號包含一第一偏移以及一第一差異值。伴隨該第一偏移與該第一差異值的第一資料儲存在對應至一第一處理任務的佇列內。接著產生一第二通知信號並傳輸給該任務管理員,其中該通知信號包含一第二偏移和一第二差異值。伴隨該第二偏移與該第二差異值的第二資料儲存在對應至一第二處理任務的佇列內。此時接收該第一通知信號與一第二通知信號,並且該任務管理員判斷該第一偏移和該第一差異值是否能與該第二偏移和該第二差異值合併,以產生一合併的偏移和一合併的差異值。該任務管理員在一處理叢集陣列內,排定用於該第一處理任務的該第二資料以及該第一資料的至少之一者之處理。
本發明的許多具體實施例包含將資料可用於處理通知一任務管理員的系統,該系統包含一佇列、一記憶體管理單元以及一任務管理員。該佇列對應至一第一處理任務,並設置成儲存資料,包含第一資料與第二資料。該記憶體管理單元設置成產生直接傳輸至該任務管理員的一第一通知信號,其中該通知信號指定伴隨於該第一資料的一第一偏移和一第一差異值,並產生直接傳輸至該任務管理員的一第二通知信號,其中該通知信號指定伴隨於該第二資料的一第二偏移和一第二差異值。該任務管理員設置成接收該第一通知信號和該第二通知信號;判斷該第一偏移和該第一差異值是否能與該第二偏移和該第二差異值合併,以產生一合併的偏移和一合併的差異值;以及在一處理叢集陣列內,排定用於該第一處理任務的該第二資料以及該第一資料的至少之一者之處理。
因此,相較於該順序,可不依照順序寫入該動態任務佇列的記錄,其中該動態任務佇列內的記錄都分配給產生該動態任務資料的執行緒。因此,由該等執行緒動態產生的資料已經寫入該佇列時,追蹤已經寫入該佇列的順序記錄,並且已經寫入該佇列中排前的一系列記錄時通知該排程單元,並且可排定用於處理開始(或繼續)執行該動態任務。將記錄與該等執行緒的分配解開,其中該等執行緒執行該計算任務,由不同執行緒寫入該等記錄來產生該動態任務的資料,允許產生該資料的該等執行緒簡單寫入該等記錄,然後離開或繼續處理其他資料。因此,該等執行緒不必用和其接收記錄分配相同的順序寫入該佇列。不過,在記錄的順序已經準備排定時,該排程單元的追蹤與通知可儘快處理該資料。
重點在於與該CPU的通訊不需要做以下動作:(a)用於動態任務的資料已經準備處理時,通知該CPU(b)使快取記錄無效或(c)啟用其他計算任務的排程。因此,在與需要該CPU介入的系統相比較,降低以下的延遲:(a)動態任務資料的排程處理,(b)快取記錄的無效情況和(c)啟用其他計算任務的排程。
在以下描述中,揭示許多特定細節以對本發明有更徹底之理解。但是,精通此技術的人士應該了解,在無一或多個該等特定細節之下還是可實施本發明。在其他實例中,並未描述已知特性以避免模糊本發明。
處理單元直接與一任務管理單元通訊,不用CPU介入並且不用將指令插入一推送緩衝區。該處理單元執行計算任務並且動態產生子任務時,該處理單元會在該子任務的資料可用於處理時通知該任務管理單元。然後該任務管理單元利用將該子任務插入任務清單,以排定該子任務的執行時間。該處理單元與該任務管理單元之間直接通訊,最大限度降低該子任務資料 產生與該子任務資料排定處理時間之間產生的延遲。
系統概觀
第一圖為例示設置來實施本發明一或多個態樣的電腦系統100之方塊圖。電腦系統100包含一中央處理單元(CPU,Central processing unit)102,以及通過一互連路徑通訊的一系統記憶體104,其中該路徑可包含一記憶體橋接器105。例如可為北橋晶片的記憶體橋接器105透過匯流排或其他通訊路徑106(例如超傳輸連結),連接至一I/O(輸入/輸出)橋接器107。例如可為南僑晶片的I/O橋接器107接收來自一或多個使用者輸入裝置108(例如鍵盤、滑鼠)的使用者輸入,並透過通訊路徑106和記憶體橋接器105將該輸入轉送至CPU 102。一並行處理子系統112透過匯流排或第二通訊路徑113(例如PCI Express、加速圖形連接埠(Accelerated Graphics Port)或HyperTransport連結)連接至記憶體橋接器105;在一個具體實施例內,並行處理子系統112為傳遞畫素給顯示裝置110(例如傳統CRT或LCD型監視器)的圖形子系統。系統磁碟114也連接至I/O橋接器107。一開關116提供I/O橋接器107與其他組件,像是網路配接器118以及許多外接卡120和121之間的連接。其他組件(未明確顯示),包含USB或其他連接埠連接、CD光碟機、DVD光碟機、檔案記錄裝置等等,也可連接至I/O橋接器107。第一圖內顯示的許多通訊路徑,包含特地指名的通訊路徑106和113,都可使用任何合適的協定來實施,例如PCI(周邊組件互連)、PCI-Express、AGP(加速圖形連接埠)、HyperTransport或任何其他匯流排或點對點通訊協定,以及不同組件之間的連接都可使用業界內已知的不同協定。
在一個具體實施例內,並行處理子系統112併入將圖形與視訊處理最佳化的電路,包含例如視訊輸出電路,並且構成一圖形處理單元(GPU,Graphics processing unit)。在另一具體實施例內,並行處理子系統112併入將一般用途處理最佳化的電 路,同時保留底層計算架構,本文內有更詳細描述。尚且在另一具體實施例內,並行處理子系統112可在單一子系統內合併一或多個其他系統元件,例如結合記憶體橋接器105、CPU 102和I/O橋接器107來形成一晶片上系統(SoC,System on chip)。
吾人將了解,本文中顯示的該系統為例示,所以可進行改變與修改。包含橋接器的數量與配置、CPU 102的數量以及並行處理子系統112的數量這類連接拓撲可依照需求修改。例如在某些具體實施例內,系統記憶體104直接連接至CPU 102,而不是透過橋接器,並且其他裝置透過記憶體橋接器105以及CPU 102與系統記憶體104通訊。在其他替代拓撲中,並行處理子系統112連接至I/O橋接器107或直接連接至CPU 102,而不是連接至記憶體橋接器105。仍舊在其他具體實施例內,I/O橋接器107和記憶體橋接器105可整合成為單一晶片,替代現有的一或多個分散組件。大型組件可包含二或多個CPU 102以及二或多個並行處理子系統112。本文中顯示的該等特定組件為選擇性;例如可支援任何數量的外接卡或周邊裝置。在某些具體實施例內,省略開關116,並且網路配接器118和外接卡120、121都直接連接至I/O橋接器107。
第二圖例示根據本發明一個具體實施例的並行處理子系統112。如所示,並行處理子系統112包含一或多個並行處理子系統(parallel processing unit,PPU)202,每一個都連結至本機並行處理(parallel processing,PP)記憶體204。一般來說,並行處理子系統包含數量為U的PPU,其中U1。(本文中多個類似物體的實例都用參考號碼標示出該物體,並且括號標示所需的實例。)PPU 202以及並行處理記憶體204可使用一或多個積體電路裝置來實施,例如可程式處理器、特殊應用積體電路(application specific integrated circuit,ASIC)或記憶體裝置,或以任何其他技術可行方式。
請再次參閱第一圖,在一些具體實施例內,並行處理子系 統112內的某些或全部PPU 202為具有彩現管線的圖形處理器,其可設置成執行許多操作,這些操作有關透過記憶體橋接器105和第二通訊路徑113,從CPU 102及/或系統記憶體104供應的圖形資料產生畫素資料、與本機並行處理記憶體204(可用來當成圖形記憶體,包含例如傳統畫框緩衝區)互動來儲存與更新畫素資料、傳遞畫素資料給顯示裝置110等等。在某些具體實施例內,並行處理子系統112可包含操作當成圖形處理器的一或多個PPU 202,以及用於一般用途計算的一或多個其他PPU 202。該等PPU可一致或不同,並且每一PPU都可擁有自己專屬的並行處理記憶體裝置或無專屬的並行處理記憶體裝置。並行處理子系統112內的一或多個PPU 202可輸出資料至顯示裝置110,或並行處理子系統112內的每一PPU 202都可輸出資料至一或多個顯示裝置110。
在操作上,CPU 102為電腦系統100的主要處理器,控制與協調其他系統組件的操作。尤其是,CPU 102發出指令控制PPU 202的操作。在某些具體實施例內,CPU 102將每一PPU 202的指令串流寫入至一資料結構(第一圖或第二圖內未明確顯示),其可位於系統記憶體104內、並行處理記憶體204內或可存取CPU 102和PPU 202的其他儲存位置內。每一資料結構的指標已經寫入一推送緩衝區,開始在該資料結構內處理該指令串流。PPU 202讀取來自一或多個推送緩衝區的指令串流,然後關於CPU 102的操作非同步執行指令。利用應用程式透過裝置驅動程式103來控制不同推送緩衝區的排程,指定每一推送緩衝區的執行優先順序。
此時請回頭參閱第二圖,每一PPU 202都包含一I/O(輸入/輸出)單元205,其透過連接至記憶體橋接器105(或在替代具體實施例內,直接至CPU 102)的通訊路徑113,與電腦系統100的剩餘組件通訊。PPU 202與電腦系統100剩餘組件的連接也可改變。在某些具體實施例內,並行處理子系統112實施成為可 插入電腦系統100內擴充槽的外接卡。在其他具體實施例內,PPU 202可與例如記憶體橋接器105或I/O橋接器107這類匯流排橋接器整合在單一晶片上。仍舊在其他具體實施例內,PPU 202的某些或全部元件可與CPU 102整合在單一晶片上。
在一個具體實施例內,通訊路徑113為一PCI-EXPRESS連結,其中分配專屬通道給每一PPU 202,如業界內所熟知。在此也可使用其他通訊路徑。一I/O單元205產生在通訊路徑113上傳輸的封包(或其他信號),也從通訊路徑113上接收所有傳入封包(或其他信號),將該等傳入封包導引至PPU 202的適當組件。例如:有關處理任務的指令可導引至主介面206,而有關記憶體操作的指令(例如讀取或寫入並行處理記憶體204)可導引至記憶體交叉開關單元210。主介面206讀取每一推送緩衝區,並將該推送緩衝區內儲存的該指令串流輸出至一前端212。
每一PPU 202都有利地實施一高並行處理架構。如細節內所示,PPU 202(0)包含一處理叢集陣列230,其包含數量為C的一般處理叢集(GPC,General processing cluster)208,其中C1。每一GPC 208都可同時執行大量的(例如數百或數千)執行緒,其中每一執行緒都是一程式的實例。在許多應用當中,不同的GPC 208可分配用於處理不同種類的程式,或用於執行不同種類的計算。GPC 208的分配絕大部分取決於針對每一種程式或計算所賦予的工作負擔。
GPC 208從任務/工作單元207內的工作分配單元當中接收要執行的處理任務,該工作分配單元接收指標來計算處理任務(任務指標),其編碼為任務中繼資料(TMD,Task metadata)並儲存在記憶體內。至TMD之該任務指標包含在指令串流內,其儲存當成一推送緩衝區並由前端單元212從主介面206接收。可編碼為TMD的處理任務包含要處理的資料索引,以及定義如何處理該資料的狀態參數與指令(例如要執行哪個程 式)。任務/工作單元207從前端212接收任務,並且確定在每一TMD指定的處理開始之前已經將GPC 208設置成有效狀態。一優先順序可指定給每一TMD,用來排定該處理任務的執行時間。
記憶體介面214包含數量為D的分割單元215,這些單元每一個都直接連接至一部分並行處理記憶體204,其中D1。如所示,分割單元215的數量一般等於DRAM 220的數量。在其他具體實施例內,分割單元215的數量可不等於記憶體裝置的數量。精通技術人士將了解,DRAM 220可用其他合適的儲存裝置取代,並且可為一般傳統設計,因此省略其詳細說明。像是畫框緩衝區或紋理地圖這類彩現目標可通過DRAM 220儲存,允許分割單元215並行寫入每一彩現目標的部分,以有效使用並行處理記憶體204的可用頻寬。
任一GPC 208都可處理寫入平行處理記憶體204內任一DRAM 220的資料。交叉開關單元210設置成將每一GPC 208的輸出繞送至任意分割單元215的輸入或至用於進一步處理的其他GPC 208。GPC 208透過交叉開關單元210與記憶體介面214通訊,來讀取或寫入許多外部記憶體裝置。在一個具體實施例內,交叉開關單元210具有一連接至記憶體介面214來與I/O單元205通訊,以及一連接至本機並行處理記憶體204,藉此讓不同GPC 208內的處理核心與系統記憶體104或不在PPU 202本機上的其他記憶體通訊。在第二圖所示的具體實施例中,交叉開關單元210直接連接至I/O單元205。交叉開關單元210可使用虛擬通道,以分隔GPC 208與分割單元215之間的流量串流。
同樣,GPC 208可程式編成來執行與廣泛應用程式有關的處理任務,包含但不受限於:線性與非線性資料傳輸、視訊及/或音訊資料的篩選、成形操作(例如套用物理規則來決定物體的位置、速度以及其他屬性)、影像彩現操作(例如Tessellation (曲面細分)著色器、頂點著色器、幾何著色器及/或畫素著色器程式)等等。PPU 202可將來自系統記憶體104及/或本機並行處理記憶體204的資料傳輸進入內部(晶片上)記憶體、處理該資料並將結果資料寫回系統記憶體104及/或本機並行處理記憶體204,其中這種資料可由其他系統組件存取,包含CPU 102或其他並行處理子系統112。
一PPU 202可提供任何數量的本機並行處理記憶體204,包含非本機記憶體,並且可任何情況下使用本機記憶體和系統記憶體。例如:PPU 202可為統一記憶體架構(UMA,Unified memory architecture)具體實施例內的圖形處理器。在這種具體實施例內,提供一些或無專屬圖形(並行處理)記憶體,並且PPU 202完全或幾乎完全使用系統記憶體。在UMA具體實施例內,PPU 202可整合至橋接器晶片或處理器晶片,或提供當成分散式晶片,具有高速連結(例如PCI-EXPRESS)透過橋接器晶片或其他通訊方式將PPU 202連接至系統記憶體。
如上述,任何數量的PPU 202都可包含在一並行處理子系統112內。例如:單一外接卡上可提供多個PPU 202,或多張外接卡可連接至通訊路徑113,或一或多個PPU 202可整合到一橋接器晶片上。多PPU系統內的PPU 202可彼此一致或不同。例如:不同的PPU 202可具有不同數量的處理核心、不同大小的本機並行處理記憶體等等。當存在多個PPU 202時,這些PPU可並行操作,以比單一PPU 202還要高產量的方式來處理資料。合併一或多個PPU 202的系統可在許多設置與外型因素之下實施,包含桌上型、膝上型或手持式個人電腦、伺服器、工作站、遊戲機、嵌入式系統等等。
多重並行任務排程
多重處理任務可在GPC 208上同時執行,並且一處理任務可在執行期間產生一或多個動態處理任務。任務/工作單元207接收該等任務,並且動態排定要由GPC 208執行的處理任務以 及動態處理任務。
第三A圖為根據本發明的一個具體實施例,第二圖中任務/工作單元207的方塊圖。任務/工作單元207包含一任務管理單元300以及工作分配單元340。任務管理單元300根據執行優先順序等級來組織要排程的任務。針對每一優先順序等級,任務管理單元300儲存任務指標的清單到對應至排程器表321內任務的TMD 322,其中該清單可用連結清單來實施。TMD 322可儲存在PP記憶體204或系統記憶體104內。任務管理單元300接受任務並且將該等任務儲存在排程器表321內的速率與任務管理單元300排定任務來執行的速率無關,因此任務管理單元300可在排定該等任務之前集中許多任務。然後根據優先順序資訊或使用其他技術,例如輪轉排程,來排定集中的任務。
工作分配單元340包含一任務表345,其中有插槽讓TMD 322針對執行的任務所佔用。任務管理單元300可排定任務在任務表345內有空插槽時執行。當無空插槽時,未佔用插槽的較高優先順序任務會驅逐佔用插槽的較低優先順序任務。一任務遭到驅逐時,該任務會停止,並且若該任務尚未執行完畢,則該任務的指標會加入要排定的任務指標清單中,如此稍後會恢復執行該任務。在一任務執行期間產生動態處理任務時,將該動態任務的指標加入要排定的任務指標清單內。由在處理叢集陣列230內執行的TMD 322可產生一動態任務。
與從前端212的任務/工作單元207所接收的任務不同,動態任務從處理叢集陣列230接收。動態任務並未插入推送緩衝區或傳輸至該前端。動態任務已經產生或該動態任務的資料已經儲存在記憶體內時,並不會通知CPU 102。透過推送緩衝區提供的該等任務與動態任務間之另一差異在於,透過推送緩衝區提供的該等任務由該應用程式定義,而該等動態任務則在該等任務執行期間動態產生。
任務管理單元300也包含一排程器表321以及儲存一或多 個TMD 322的TMD快取305。每一TMD 322都可為大型結構,例如256位元組或更大,其通常儲存在PP記憶體204內。由於尺寸較大,TMD 322要耗費許多頻寬來存取。因此,TMD快取305只儲存任務管理單元300排程時所需的(相對小的)TMD 322部分。在該任務已經排程時,即是傳輸至工作分配單元340時,則從PP記憶體204擷取剩餘的TMD 322。
TMD 322在軟體控制之下寫入,並且在一計算任務完成執行時,關聯於該已完成計算任務的TMD 322可回收來儲存資訊,用於不同的計算任務。因為TMD 322可儲存在TMD快取305內,所以在重複使用之前,應該從TMD快取305使該已完成計算任務的完整儲存資訊無效。因為由於潛在進行中快取線驅逐使得TMD快取305內所儲存資訊寫回至該TMD 322與將新任務的資訊寫入至TMD 322之間存在競賽情況,因此使無效操作相當複雜。尤其是,新任務的資訊已經寫入TMD 322,然後TMD 322輸出至前端212成為一推送緩衝區的一部分。如此,寫入新任務的裝置驅動程式103並未接收到,在裝置驅動程式103開始寫入新資訊之前已經使TMD快取305之通知無效。因此,裝置驅動程式103在完成任何潛在寫回之前,都無法將該新任務的資訊延遲寫入至TMD 322。
因為來自驅逐TMD快取305內所儲存資訊的寫回結果可能覆寫TMD 322內所儲存新任務的資訊,則每一TMD 322的「僅限硬體」部分設定保留僅供任務管理單元300存取。剩餘的TMD 322可由軟體以及任務管理單元300存取。可由裝置驅動程式103存取的TMD 322部分通常由應用程式填滿,透過裝置驅動程式103開始任務。然後在任務排程與執行期間,由任務管理單元300以及GPC 208內其他處理單元存取TMD 322。新計算任務的資訊已經寫入TMD 322時,啟動TMD 322的指令可指定TMD 322第一次載入TMD快取305時,是否將位元複製到TMD 322的僅限硬體部分。這樣確定TMD 322將只正 確儲存該新計算任務的資訊,因為該已完成計算任務的任何資訊都應該只儲存在TMD 322的僅限硬體部分。
處理叢集陣列230產生許多不同信號來執行不同操作。在某些具體實施例內,產生的信號會轉換成反應的通知信號,其傳輸至任務/工作單元207來執行不同操作,而不用CPU 102介入。記憶體管理單元(MMU,在第三B圖內顯示為MMU 328)接收TMD 322佇列的寫入要求時,則產生一反應通知信號。該MMU的頁面表記錄經過設置,如此在TMD 322佇列的一或多個記錄內儲存資料的寫入要求,以反應通知信號的形式反應至任務管理單元300。一部分該寫入要求編碼所產生反應通知信號類型,例如使無效、排程、複製以及vspan。在其他具體實施例內,使用一或多個特殊指令,將該等通知信號直接傳輸至任務/工作單元207。尤其是,特殊指令可用來產生該使無效、排程以及複製通知信號,因為這些通知信號並不會指定由vspan通知信號所指定的額外資訊(偏移、差異)。
在處理叢集陣列230完成任務執行之後,產生第一種反應通知信號。該第一種反應通知信號為一無效反應通知信號,用於讓TMD快取305內的記錄無效。在執行該任務的該最後執行緒離開由TMD 322所指定程式時,就是TMD 322完成執行時,可產生使無效的反應通知信號。另外,可在該最後執行緒離開之後,但是重複使用TMD快取305內記錄之前,產生該使無效的反應通知信號。
在處理叢集陣列230啟用一計算任務的排程來編碼成為不同TMD 322時,產生第二種反應通知信號。該第二種反應通知信號為一排程反應通知信號。首先使用TMD 322控制TMD 322的僅限硬體部分之副本時,由處理叢集陣列230產生一第三種反應通知信號。該第三種反應通知信號為一複製反應通知信號。除了指定反應通知信號的種類以外(使無效、排程、複製),每一個不同的反應通知信號也指定對應至TMD 322的一識別 碼,其產生該個別反應通知信號。該種反應通知信號可由特定寫入位址所指示,其伴隨於該使無效、排程以及複製操作。反應位址的範圍可經過定義,如此對特定寫入位址的寫入要求導致產生一反應通知信號。在一個具體實施例內,因為導致產生一無效反應通知信號、該排程反應通知信號以及該複製反應通知信號的該寫入要求實際上並不需要資料,該寫入要求並未指定資料。
任務管理單元300也包含一vspan單元312,其設置成將動態產生並寫入TMD 322佇列用於動態任務的資料合併。該佇列的記錄用一個順序分配,並且可用不同順序填入。隨著資料由處理叢集陣列230儲存在動態TMD 322內,則產生屬於vpsan反應通知信號的反應通知信號並輸出至任務管理單元300,指示該佇列已經寫入的記錄。從寫入該佇列記錄當中解除等待資料寫入該佇列的依序記錄中,允許TMD 322產生資料來簡單寫入該等記錄,然後離開或記錄處理其他資料。
由對於一佇列的一寫入要求所產生之vspan反應通知信號包含對應至該寫入要求的資訊。該vspan反應通知信號指定所寫入資料的開始記錄以及長度。該vspan反應通知信號對應至不含寫入該佇列的記錄之一寫入要求。一vspan指示動態TMD 322的佇列內有效的,即是已經寫入資料的記錄集。寫入動態TMD 322的資料可由相同的動態TMD 322、不同的TMD 322或並未在TMD 322執行期間動態產生的TMD 322寫入。
佇列記錄已經分配給執行緒,並且每一執行緒都在稍後將資料寫入分配給個別執行緒的記錄。因為每一執行緒都獨立執行,所以不會以和其中分配該等記錄的資料相同順序來寫入該等記錄。換言之,該佇列記錄可「不按順序」寫入。vspan單元312追蹤該等vspan反應通知信號所提供的該等vspan,並且可能時將相鄰的vspan合併到一系列佇列記錄內。然後在該佇列前面用於TMD 322的一系列佇列記錄可處理時,則vspan 單元312通知任務管理單元300。vspan單元312將一系列佇列記錄可用於處理通知任務管理單元300時,該佇列前面的指標已經更新,指向該第一未寫入的記錄。因為該等記錄的寫入已經與一系列佇列記錄可用於處理的通知脫離連結,所以每一執行緒都可寫入已經分配給個別執行緒的該等記錄,並且離開而不用等待該佇列內其他記錄寫入、不用讀取由該執行緒所寫入的該等佇列記錄或不用排定由該執行緒所寫入的該等佇列記錄之處理。
任務處理概觀
第三B圖為根據本發明的一個具體實施例,第二圖中PPU 202之一者內GPC 208的方塊圖。每一GPC 208都可設置成同時執行大量執行緒,其中「執行緒」一詞代表在特定輸入資料集上執行的特定程式之實例。在某些具體實施例內,單一指令、多重資料(SIMD,Single-instruction,multiple-data)指令發行技術用於支援大量執行緒的並行執行,而不用提供多個獨立指令單元。在其他具體實施例內,單一指令、多重執行緒(SIMT,Single-instruction,multiple-thread)技術用於支援大量一般同步執行緒的並行執行,使用共用指令單元,其設置成發出指令至每一GPC 208內的處理引擎集。不同於一SIMD執行方式,其中所有處理區域一般都執行一致的指令,SIMT執行允許不同執行緒更迅速遵循分散的執行路徑通過一已知執行緒程式。業界內精通技術人士將了解,SIMD處理方式代表一SIMT處理方式的功能子集。
透過將處理任務分配至串流多重處理器(SM,Streaming multiprocessor)310的管線管理員305可有利地控制GPC 208的操作。管線管理員305也可設置成利用指定SM 310所輸出的處理資料之目的地,來控制工作分配交叉開關330。
在一個具體實施例內,每一GPC 208都包含數量為M的SM 310,其中M1,每一SM 310都設置成處理一或多個執 行緒群組。另外,每一SM 310有利地包含可管路化的一致功能執行單元集(例如執行單元與載入儲存單元),允許完成先前指令之前發出新指令,如先前技術所知。本發明可提供任何功能執行單元組合。在一個具體實施例內,該等功能單元支援許多操作,包含整數與浮點運算(例如加法與乘法)、比較操作、布林值運算(AND、OR、XOR)、位元位移以及許多代數函數(例如平面插值、三角函數、指數函數和對數函數等);並且可運用相同的功能單元硬體來執行不同操作。
這一系列指令傳輸至特定GPC 208會構成一執行緒,如本文先前所定義,並且通過SM 310內並行處理引擎(未顯示)的特定數量同時執行的執行緒之集合在此稱為「經線」或「執行緒群組」。如本文所使用,「執行緒群組」代表在不同輸入資料上同時執行相同程式的執行緒群組,其中該群組的一個執行緒指派給SM 310內不同的處理引擎。一執行緒群組可包含數量比SM 310內處理引擎數量還要少的執行緒,在此案例中,某些處理引擎會在循環期間處理該執行緒群組時閒置。執行緒群組也可包含數量比SM 310內處理引擎數量還要多的執行緒,在此案例中,將在連續時脈循環上進行處理。因為每一SM 310都可同時支援最多G個執行緒群組,所以在任何已知時間上GPC 208內都可執行最多G M個執行緒群組。
此外,在SM 310內可同時啟用複數個相關執行緒群組(在不同執行階段內)。此執行緒群組的集合稱為「協作執行緒陣列」(CTA,Cooperative thread array)或「執行緒陣列」。特定CTA的大小等於mk,其中k為執行緒群組內同時執行的執行緒數量,通常為SM 310內並行處理引擎數量的整數倍數,並且m為SM 310內同時啟用的執行緒群組數量。CTA的大小一般由程式設計師以及該CTA可用的硬體資源數量,例如記憶體或暫存器,來決定。
每一SM 310都包含第一層(L1)快取(未顯示),或使用SM 310之外對應L1快取內的空間,其用於執行載入與儲存操作。每一SM 310也要存取所有GPC 208之間共享的第二層(L2)快取,並且可用於在執行緒之間傳輸資料。最後,SM 310也要存取至晶片外「全域」記憶體,其可包含例如並行處理記憶體204及/或系統記憶體104。吾人了解,PPU 202之外的任何記憶體都可用來當成全域記憶體。另外,第一點五層(L1.5)快取335可包含在GPC 208內,設置成接收並保存透過由SM 310要求的記憶體介面214從記憶體中擷取之資料,包含指令、統一資料以及內容資料,並且將該要求的資料提供給SM 310。具有GPC 208內多個SM 310的具體實施例得利於共享共用指令和在L1.5快取335內快取的資料。
每一GPC 208都可包含一記憶體管理單元(MMU,Memory management unit)328,其設置成將虛擬位址映射至實體位址。在其他具體實施例內,MMU 328可位於記憶體介面214之內。MMU 328包含一組頁面表記錄(PTE,Page table entry),用於將虛擬位址映射至一拼貼以及選擇性一快取線索引的實體位址。MMU 328可包含位址轉譯後備緩衝器(TLB,Translation lookaside buffers),或可位於多處理器SM 310、L1快取或GPC 208內的快取。該實體位址經過處理來分配本機存取的表面資料,以便讓有效要求交錯於分割單元215之間,如第二圖所示。該快取線索引可用於決定一快取線的要求是否命中或未命中。
在圖形與計算應用當中,GPC 208可經過設置,如此每一SM 310都連結至一紋理單元315,用於執行紋理映射操作,例如決定紋理樣本位置、讀取紋理資料以及篩選該紋理資料。紋理資料從內部紋理L1快取(未顯示)讀取,或在某些具體實施例內從SM 310內的該L1讀取,並且依照需求從L2快取、並行處理記憶體204或系統記憶體104擷取。每一SM 310都輸出處理過的任務至工作分配交叉開關330,以便將該處理過的任務提供至另一GPC 208供進一步處理,或透過交叉開關單元210 將該處理過的任務儲存在所有GPC 208、並行處理記憶體204或系統記憶體104之間共享的L2快取內。preROP(預先光柵運算)325設置成從SM 310接收資料、將資料引導至分割單元215內的ROP單元,並且執行顏色混合、組織畫素顏色資料以及執行位址轉譯的最佳化。
吾人將了解,本文中顯示的該核心架構為例示,所以可進行改變與修改。任何數量的處理單元,例如SM 310或紋理單元315、preROP 325都可包含在GPC 208內。進一步如第二圖內所示,PPU 202可包含任意數量功能彼此類似的GPC 208,如此執行行為並不取決於接收特定處理任務的GPC 208。進一步,每一GPC 208都得利於與其他GPC 208無關的操作,運用分離並分散的處理單元、L1快取等等,來執行一或多個應用程式的任務。
業界內精通技術人士將了解,第一圖、第二圖、第三A圖和第三B圖內所述的架構並不限制本發明之範疇,並且在不背離本發明範疇之下,本文內教導的技術可在任何適當設置的處理單元上實施,例如但不受限於一或多個CPU、一或多個多核心CPU、一或多個PPU 202、一或多個GPC 208、一或多個圖形或特殊用途處理單元等等。
在本發明的具體實施例內,吾人想要使用一計算系統的PPU 202或其他處理器,運用執行緒陣列來執行一般用途計算。該執行緒陣列內的每一執行緒都可指派一個獨一的執行緒識別碼(「執行緒ID」),其可在該執行緒執行期間存取該執行緒。該執行緒ID可定義為一維度或多維度數值,控制該執行緒處理行為的許多態樣。例如:一執行緒ID可用於決定一執行緒要處理哪個輸入資料集部分及/或決定一執行緒要產生或寫入哪個輸入資料集部分。
每個執行緒指令的序列可包含至少一個指令,其定義該代表性執行緒與該執行緒陣列的一或多個其他執行緒之間的協 作行為。例如:每一執行緒指令的序列可包含:在一或多個其他執行緒到達一特定點之前,中止執行該序列內該特定點上該代表性執行緒操作之指令、讓該代表性執行緒在該等其他執行緒之一或多者具有權限的一共享記憶體內儲存資料之指令、根據其執行緒ID,讓該代表性執行緒自動讀取和更新在該等其他執行緒之一或多者具有權限的一共享記憶體內儲存資料之指令等等。該CTA程式也可包含一指令,計算該共享記憶體內所要讀取資料的位址,其中該位址為執行緒ID的函數。利用定義合適的函數並提供同步技術,資料可由一CTA的一個執行緒寫入至共享記憶體內的已知位置,並且以可預測的方式由該相同CTA的不同執行緒從該位置讀取。因此,支援在執行緒之間共享的任何資料圖案,並且一CTA內的任何執行緒都可與相同CTA內任何其他執行緒共享資料。在CTA的執行緒之間共享之資料範圍(若有的話)可由該CTA程式決定;如此吾人了解在使用CTA的特定應用中,根據該CTA程式,一CTA的該等執行緒可或不可實際與其他共享資料,並且本文中同義地使用「CTA」和「執行緒陣列」等詞。
任務排程與管理
請回頭參閱第三A圖,任務管理單元300管理要排程為TMD群組陣列並儲存在該排程器表321內的計算任務。一TMD群組為具有相同排程優先順序的計算任務集合。TMD群組或優先順序層級的數量可為一個或更多。在每一TMD群組內,在個別優先順序層級上該等計算任務儲存在一清單內,其可用一已連結清單實施,並且之後假設為一已連結清單。已連結清單內每一TMD都儲存至該個別已連結清單內下一個TMD的指標。該已連結清單針對每一TMD儲存頭指標與尾指標。不具有任務的TMD群組具有相等的頭指標與尾指標,並且一空位元設定為TRUE。
從主介面206接收計算任務時,任務管理單元300將該等計 算任務插入一TMD群組。尤其是,除非設定一特殊TMD位元要該任務加入該已連結清單的頭部,否則將對應至該計算任務的該TMD之任務指標加入該群組已連結清單的尾部。即使一TMD群組內所有任務都具有相同排程優先順序層級,該TMD群組已連結清單的頭部還是任務管理單元300所選擇的第一計算任務,並且排定來執行。如此,相較於相同優先順序等級上的其他計算任務,該已連結清單頭部上的該計算任務具有相對較高的優先順序。類似地,在該已連結清單內每一連續計算任務都具有與該已連結清單內先前計算任務相關較低優先順序相同的優先順序層級。因此,任務管理單元300可用彼此之間相對的輸入順序來排定TMD群組內的該等計算任務(假設並無特定標記加入該TMD群組的頭部)。因為該TMD群組指定為該TMD結構的一部分,則一計算任務的TMD群組在該計算任務執行時無法改變。
計算任務也可接收自第二圖內所示PPU 202的處理叢集陣列230。尤其是,TMD 322執行期間產生的資料可寫入TMD 322的佇列,並且由MMU 328產生一反應通知信號以回應至TMD 322佇列的每一寫入要求。
任務管理單元300可使用許多不同技術來執行選擇排定該等計算任務:循環、優先順序或分割優先順序排程。針對每一不同排程技術,選擇一計算任務要排程時,該已選取計算任務會從儲存該已選取計算任務的群組當中移除。不管排程技術為何,任務管理單元300都可利用選擇適當群組的已連結清單內第一記錄,快速選擇一計算任務。因此,該等計算任務可用一順序來排程及/或執行,該順序與任務管理單元300從主介面206接收該等任務指標的順序不同。
第三C圖為根據本發明的一個具體實施例,第三A圖中可儲存在PP記憶體204內的TMD 322之內容概念圖。TMD 322設置成儲存初始化參數355、排程參數360、執行參數365、CTA 狀態370、僅限硬體欄位372以及佇列375。僅限硬體欄位372儲存TMD 322的僅限硬體部分,其包含一或多個僅限硬體參數。所有TMD 322共用的執行狀態並不包含在每一TMD 322內。因為TMD 322為儲存在PP記憶體204內的資料結構,則在CPU 102或PPU 112上運行的應用程式可在記憶體內建立TMD 322結構,然後利用將TMD 322的任務指標傳送至任務/工作單元207,以提供TMD 322用於執行。
TMD 322已經啟動時初始化參數355用來設置GPC 208,並且可包含佇列375的開始程式位址以及大小。請注意,在記憶體內佇列375可與TMD 322分開儲存,在此案例中TMD 322包含至佇列375的指標(佇列指標),用來代替真正的佇列375。
初始化參數355也可包含指出許多快取,例如紋理標頭快取、紋理取樣器快取、紋理資料快取、資料快取、恆等快取等等,在啟動TMD 322時都無效的位元。初始化參數355內也可包含指示紋理取樣器是否與紋理標頭一對一連結的位元。初始化參數355也可包含執行緒內CTA的尺寸、TMD版本號碼、指令集版本號碼、CTA寬度、高度與深度方面一方格的尺寸、記憶體列映射參數、從應用程式所見的呼叫堆疊深度以及用於TMD的呼回堆疊大小。初始化參數355可包含恆等緩衝區的大小、該恆等緩衝區的位址、指出一恆等緩衝區繫結有效的位元以及指出在已經啟動該TMD之前來自該恆等緩衝區的該資料在該快取內使無效之位元,可儲存在初始化參數355內。
最後,初始化參數355可包含與CTA每一執行緒可用記憶體數量有關的許多參數。需要多個CTA而每一都需要大量共享記憶體的TMD 322準備排程開始執行時,任務/工作單元207可限制(即節流)同時執行的CTA數量,如此該等CTA不會試圖消耗比可由TMD 322存取更多的記憶體。
排程參數360控制任務/工作單元207如何排定TMD 322來執行。排程參數360可包含指出TMD 322是否為佇列TMD或 方格TMD的位元。若TMD 322為方格TMD,則不使用啟動TMD 322之後允許佇列額外資料的TMD 322佇列功能,並且TMD 322執行導致啟動固定數量的CTA並且執行來處理佇列375內儲存的固定數量資料。CTA的數量依照方格寬度、高度與深度的乘積來指定。佇列375用該資料的佇列指標取代,其將由執行TMD 322所指定程式的CTA所處理。該TMD已經建立時或使用反應通知信號的排程種類建立方格TMD之後,則設定(啟用)方格TMD的排程旗標。
若TMD 322為佇列TMD,然後使用TMD 322的佇列功能,則表示資料儲存在佇列375內,當成佇列記錄。佇列記錄為輸入至TMD 322的CAT之資料。該等佇列記錄也儲存執行緒執行期間由另一TMD 322產生的動態任務資料,藉此提供巢狀並行。一般來說,執行緒的執行或包含該執行緒的CTA會中止,直到動態任務執行完成為止。佇列375可實施為一圓形佇列,如此資料總量並不受限於佇列375的大小。如先前所述,佇列375可與TMD 322分開儲存,並且TMD 322可將一佇列指標儲存至佇列375。有利的是,用於該動態任務的佇列記錄可寫入駐列375,同時代表該動態任務的TMD 322正在執行。一佇列TMD已經建立時或使用反應通知信號的排程種類建立該佇列TMD之後,則設定(啟用)該佇列方格TMD的排程旗標。
針對一佇列TMD執行可變數量的CTA,其中CTA的數量取決於寫入至TMD佇列的佇列375之記錄數量。佇列TMD的排程參數360也包含由每一CTA所處理的佇列375之記錄數量(N)。N個記錄加入佇列375時,則針對TMD 322啟動一個CTA。任務/工作單元207可建構一處理的方向圖形,其中每一處理都為具有一佇列的TMD 322。針對每一TMD 322執行的CTA數量都可根據每一TMD 322的N值以及已經寫入佇列375內的記錄數量來決定。
替代具體實施例可針對方格TMD以及佇列TMD具有不同結構,或只實施方格TMD或佇列TMD。TMD 322可包含TMD 322完成時自動啟動的相依TMD之任務指標。旗標語可由TMDs 322執行,確定不同TMD 322與CPU 102之間的相依性吻合。例如:第一TMD 322的執行可取決於第二TMD的完成,如此該第二TMD產生一旗標語釋出,並且該第一TMD在成功獲取對應的旗標語之後才會執行。在某些具體實施例內,在主介面206或前端212內執行該旗標語獲取。針對TMD 322的執行參數365可儲存複數個旗標語釋出,包含記憶體障礙類型、記憶體內該旗標語資料結構的位址、該旗標語資料結構的大小、酬載以及一降低操作的啟用、類型與格式。該旗標語的資料結構可儲存在執行參數365內,或可儲存在TMD 322之外。
建立TMD 322導致TMD欄位複製到僅限硬體欄位372時,於任務管理單元300第一次載入TMD 322時,TMD 322的排程參數360可包含已經設定的一位元。排程參數360也包含該TMD群組ID、指出已連結清單加入TMD 322之處(頭部或尾部)之位元以及至TMD群組內下一個TMD 322的指標。排程參數360也可包含遮罩,其啟用/停用GPC 208內特殊串流多重處理器。
執行參數365也可包含要針對TMD 322執行的程式之開始位址、TMD 322完成執行時所執行的記憶體障礙操作類型、指出是否針對TMD 322一次只執行一個CTA(序列)之序列執行旗標,以及控制任務/工作單元207是否可根據針對TMD 322所指定的記憶體限制來限制同時運行的CTA數量之調節啟用旗標。
一處理優先時,TMD 322的處理可在指令邊界或CTA邊界上停止,並且將恢復處理的該CTA之識別則儲存在CTA狀態370內。優先之後恢復TMD 322執行所需的狀態資訊可儲存 在CTA狀態370內、PP記憶體204內的個別區域中或系統記憶體104內。
CTA狀態370也將資料指標儲存至佇列375的記錄,並且計數溢位旗標指出每一資料指標何時增加超過佇列375末端並且需要回到佇列375的開頭。一或多個資料指標以及排程旗標的僅限硬體版本可儲存在僅限硬體欄位372內。
第三D圖例示根據本發明的一個具體實施例,用於等待一佇列375的方法380流程圖。雖然已經結合第一圖、第二圖、第三A圖和第三B圖的系統來描述該等方法步驟,精通技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。由TMD 322編碼的「生產者」計算任務分配佇列375內的空間,然後將資料寫入該已分配的空間。「消費者」計算任務最終讀取該「生產者」計算任務所寫入的資料。單一計算任務可產生一或多個動態任務並且/或將資料寫入佇列375。資料可針對動態任務或針對現有計算或動態任務,寫入佇列375。
在步驟382上,在處理叢集陣列230內由任務/工作單元207啟動的一或多個CTA來執行由TMD 322編碼的計算任務。在步驟385上,佇列375內一或多個儲存資料的執行緒保留空間將由該動態任務備妥。運用處理該分配要求順序的細微操作,佇列375內的記錄已經分配給執行任務產生資料給動態任務的執行緒。由於使用細微操作,所以只有一個執行緒分配有該佇列內一特定記錄。換言之,同時接收的分配要求時,該執行緒內沒有記錄分配給二或多個執行緒。如先前所述,該等執行緒不需要用分配該等記錄的順序將資料儲存在該等記錄內。因此,在每次接收到vspan反應通知信號時,vspan單元312在可能之下將佇列375內的多個vspan合併成大型連續vspan。該佇列儲存資料的記錄可用於排程處理時,vspan單元312會通知任務管理單元300。
在步驟386上,在佇列375內分配記錄的一或多個執行緒將寫入要求輸出至該等記錄內儲存的資料。在步驟388上,針對每一寫入要求產生一vspan反應通知信號,並且該vspan反應通知信號傳輸至vspan單元312。在步驟390上,該等一或多個執行緒執行該計算任務,判斷是否將產生要求該佇列內額外空間的任何新動態任務,或是否已經產生動態任務將需要佇列375內的額外記錄,若是,則一或多個執行緒返回步驟385。否則,在步驟395上,該最後一個執行緒執行TMD 322退出,並且完成執行由TMD 322編碼的該計算任務。
第四圖例示根據本發明的一個具體實施例,用於處理一vspan反應通知信號的方法400之流程圖。雖然已經結合第一圖、第二圖、第三A圖和第三B圖的系統來描述該等方法步驟,精通技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
在步驟405上,任務/工作單元207從處理叢集陣列230接收一vspan反應通知信號。在步驟410上,vspan單元312判斷是否將增量模式指定給TMD 322,若否,則vspan單元312直接前往步驟425來判斷TMD 322是否可排程。該vspan反應寫入通知可用任何順序處理時,則使用該增量模式。因此,vspan單元312不會執行vspan的合併。在一個具體實施例內,可使用從處理叢集陣列230傳輸至任務管理單元300的一通知信號,啟用或停用該增量模式。
在步驟410上,若vspan單元312判斷並未將該增量模式指定給TMD 322,然後在步驟415上,vspan單元312嘗試將該vspan反應通知信號指定的該新vspan與一或多個其他vspan合併。底下用第五圖和第六圖進一步詳細描述該合併處理。
在步驟420上,vspan單元312判斷是否已經寫入由內部放置指標指引的佇列375記錄,若否,則在步驟440上完成該vspan反應通知信號的處理。該內部放置指標指出已經寫入,並且尚 未提供給任務管理單元300用於排程的佇列375之第一記錄。否則在步驟425上,vspan單元312判斷佇列375的至少一個記錄序列是否可排程用於執行。在僅當一排程旗標設定時,可使用該排程旗標來設置TMD 322用於排程,而不管是否已經寫入由內部放置指標指引的佇列375記錄或該增量模式是否用於TMD 322。任務管理單元300從處理叢集陣列230接收一排程型反應通知信號時,則設定該排程旗標。
在步驟425上,若vspan單元312判斷佇列375不可排程,則在步驟440上完成該vspan反應通知信號的處理。否則在步驟430上,將已經寫入佇列375的記錄通知任務管理單元300,並且任務管理單元300將TMD 322排程由一或多個CTA處理。在步驟435上,工作分配單元340啟動該等一或多個CTA來執行TMD 322。如此,由一或多個同時執行的執行緒,依照該資料寫入佇列375的順序,以該分配順序開始佇列375內的資料處理。
處理任務排程的任務資料追蹤寫入
第五圖為根據本發明的一個具體實施例,當vspan已經合併時第三C圖中該佇列375內容的概念圖。如前述,在佇列375內編碼的處理任務之寫入資料與佇列375內記錄的分配脫離連結。一外部放置指標545指向佇列375內要分配的下一個可用記錄,並且內部放置指標540指向佇列375內已經分配並且尚未寫入的最舊記錄。由內部放置指標540指出資料已經寫入該記錄時,內部放置指標540前往外部放置指標545,並且vspan單元312指出資料已經備妥可排程用於處理。因為並不需要用該等記錄的分配順序來寫入該等記錄,所以在內部放置指標540與外部放置指標545之間可有一或多個已經寫入的記錄(由內部放置指標540所指向以外的記錄)。
一外部取得指標530指向佇列372最舊的記錄,該記錄儲存已經將資料指派給一CTA用於處理,即是將處理該資料的一 CTA已經啟動,但是該CTA尚未讀取該資料。一內部取得指標535指向佇列375內已經指派給一CTA進行處理的最新記錄。已經寫入佇列375但是尚未指派至一CTA進行處理的資料,已經儲存在內部取得指標535與內部放置指標540之間的記錄內。已經指派給一CTA進行處理並且未讀取的資料已經儲存在外部取得指標530與內部取得指標535之間。
vspan 501、502、503和504這四個vspan每一個都與佇列375內記錄500的一部分相關連。vspan 501-504為該等vspan反應通知信號,其在與每一個別vspan相關聯的記錄500之該等記錄寫入時產生。每一vspan都由代表佇列375內一開始記錄位置的一偏移,以及指出佇列375內由產生該vspan反應通知信號的一寫入要求所寫入該等記錄數量之一差異值來表示。在一個具體實施例內,該差異值等於一結束值,即差異值=偏移+寫入記錄的數量。當接收vspan反應通知信號時,vspan單元312嘗試將該新vspan與現有vspan合併。該等現有vspan都根據該等vspan的該開始記錄位置以及差異值,儲存在一已連結清單內,如此該等vspan的順序會與佇列375內分配來儲存該資料的記錄之順序相同。
一新vspan無法與該已連接清單內所儲存的一現有vspan合併時,則從未使用的vspan記憶單體佇池分配儲存該新vspan所需之記憶體。該佇池由所有佇列TMD 322共享。此時儲存一分開的vspan已連結清單,並針對每一佇列TMD 322進行追蹤。一新vspan已經與一現有vspan合併時,則更新該現有vspan的差異值及/或偏移值。隨著新與現有vspan合併,在佇列TMD 322的已連結清單內不再需要來儲存現有vspan之記憶單體則釋出至該共享佇池。
在寫入與vspan 501、503和504相關聯的資料之前,由一第一寫入要求寫入與vspan 502相關聯的資料。與vspan 502相關聯的資料填入屬於佇列375中三個記錄的記錄512。vspan 502 的偏移和差異分別為2和3,並且從該共享佇池將一vspan記憶單體分配給儲存vspan 502。vspan 502產生並包含在第一vspan反應通知信號內,以回應該第一寫入要求。
與vspan 504相關聯的資料由一第二寫入要求第二寫入,填入屬於佇列375中三個以上記錄的記錄514。vspan 504產生並包含在第二vspan反應通知信號內,以回應該第二寫入要求。vspan 504的偏移和差異分別為7和3。因為與vspan 503相關聯的資料尚未寫入,所以vspan 502和504無法合併,因此從該分享佇池將額外vspan記憶單體分配來儲存vspan 504。
與vspan 501相關聯的資料由一第三寫入要求第三次寫入,填入屬於佇列375中頭兩個記錄的記錄511。vspan 501產生並包含在第三vspan反應通知信號內,以回應該第三寫入要求。vspan 501的偏移和差異分別為0和2。vspan 501可與vspan 502合併,如此vspan 502的差異從3變成5,並且偏移變成0。內部放置指標540前進來指向未寫入vspan 503的第一記錄。在此點上,由TMD 322編碼的計算任務可排程來針對記錄511和512運行。內部放置指標540前進時,儲存vspan 502的該vspan記憶單體會釋出至該共享佇池。
最後,與vspan 503相關聯的資料由一第四寫入要求寫入,填入屬於佇列375中二個以上記錄的記錄513。vspan 503產生並包含在第四vspan反應通知信號內,以回應該第四寫入要求。vspan 503的偏移和差異分別為5和2。vspan 503與vspan 504合併,如此vspan 504的差異從3變成5,並且偏移變成5。內部放置指標540前進來指向vspan 504之後的第一記錄。在此點上,由TMD 322編碼的計算任務可排程來針對記錄513和514運行。內部放置指標540前進時,儲存vspan 504的該vspan記憶單體會釋出至該共享佇池。
第六圖例示根據本發明的一個具體實施例,用於處理一vspan反應通知信號以及合併vspan的方法600之流程圖。雖然 已經結合第一圖、第二圖、第三A圖和第三B圖的系統來描述該等方法步驟,精通技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
在步驟605上,資料已經寫入佇列375的一或多個記錄時,vspan單元312接收一vspan反應通知信號。在步驟610上,vspan單元312判斷該vspan反應通知信號所指定的該vspan是否在兩個vspan之間,並且可與TMD 322的已連接清單內兩個vspan合併,若是,則在步驟625上,vspan單元312將該新vspan與該已連結清單內兩個vspan合併。在步驟630上,vspan單元312在前往步驟632之前,將一個vspan送回該分享佇池。
在步驟610上,若vspan單元312判斷由該vspan反應通知信號指定的該vspan無法與TMD 322的已連結清單內兩個vspan合併,然後vspan單元312判斷由該vspan反應通知信號指定的該vspan是否可與TMD 322的已連結清單內一個vspan合併,並且若是,則在步驟620上,vspan單元312將最新寫入的vspan與一個vspan合併並且前往步驟632。否則在步驟618上,vspan單元312將來自該共享佇池的一vspan分配來儲存該新vpan,並且將該已分配的vspan插入該已連結清單並前往步驟632。
在步驟632上,vspan單元312判斷內部放置指標540是否可前進,並且若否,則在步驟640上完成該vspan反應通知信號的處理。否則在步驟635上,vspan單元312將內部放置指標540前進,並且將該已連結清單頭部上的該vspan回傳至該共享佇池。在步驟640上,完成該vspan反應通知信號的處理。
第七圖例示根據本發明的一個具體實施例,用於處理並非一vspan反應通知信號的一反應通知信號之方法流程圖。雖然已經結合第一圖、第二圖、第三A圖、第三B圖和第三C圖的系統來描述該等方法步驟,精通技術人士將了解,設置來執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
在步驟702上,任務管理單元300從處理叢集陣列230接收一反應通知信號。在步驟705上,任務管理單元300判斷該通知信號是否為一複製反應通知信號,並且若是,則在步驟715上,將TMD 322的一部分複製到TMD 322的僅限硬體欄位372。在步驟750上,完成該反應通知信號的處理。
在步驟705上,若任務管理單元300判斷該反應通知信號並非一複製反應通知信號,則在步驟720上,任務管理單元300判斷該反應通知信號是否為一使無效反應通知信號。若該反應通知信號為一使無效反應通知信號,則在步驟725上,若該資料存在於TMD快取305內,則任務管理單元300從TMD快取305內移除TMD 322資料。從TMD快取305移除的任何儲存TMD 322資料之未清空快取線都不會寫入至記憶體。然後TMD 322可重複用於不同的計算任務。
在步驟720上,若任務管理單元300判斷該反應通知信號並不是一使無效反應通知信號,然後該反應通知信號為設定該排程旗標給TMD 322的一排程信號。任務管理單元300使用該排程旗標來判斷佇列375的至少一個記錄序列是否可排程用於執行。在步驟730上,該排程旗標已經寫入時,則設定TMD 322的該排程旗標。在步驟750上,完成該反應通知信號的處理。
任務/工作單元207從GPC 208接收一通知信號時,在由TMD 322編碼的計算任務執行期間動態產生之動態計算任務可直接插入PPU 202的該排程管線內,不需CPU 102介入。一機構在佇列資料用於該動態計算任務時產生一vspan反應通知信號,並且產生額外通知信號給其他事件,例如開始載入TMD快取305、使儲存一計算任務資料的快取記錄無效以及啟用一計算任務的排程。此外,儲存一計算任務佇列資料的記錄可不按順序寫入。因此,將動態產生的資料寫入該佇列時,該資料的位置合併並且在記錄序列準備可排程來開始或繼續執行一計算任務時,通知任務/工作單元207。使寫入該佇列記錄無關 於等待資料寫入該佇列的依序記錄中,允許該等執行緒產生資料來簡單寫入該等記錄,然後離開或記錄處理其他資料。
本發明的一個具體實施例可實施當成搭配電腦系統使用的程式產品。該程式產品的程式定義該等具體實施例(包含本文所述的方法)的功能,並且可包含在電腦可讀取儲存媒體上。例示的電腦可讀取儲存媒體包含但不受限於:(i)其上資訊永久儲存的不可抹寫儲存媒體(例如電腦內的唯讀記憶體裝置,例如CD-ROM光碟機可讀取的CD-ROM光碟、快閃記憶體、ROM晶片或任何一種固態非揮發性半導體記憶體);以及(ii)上其儲存可變資訊的可抹寫儲存媒體(例如磁碟機或硬碟內的磁碟或任何一種固態隨機存取半導體記憶體)。
在此已經參考特定具體實施例說明本發明。不過精通此技術的人士將會了解,在不背離申請專利範圍內公佈之本發明廣泛精神以及領域下,可進行許多修改與變更。因此前述說明與圖式僅供參考而非限制。
100‧‧‧電腦系統
102‧‧‧中央處理單元
103‧‧‧裝置驅動程式
104‧‧‧系統記憶體
105‧‧‧記憶體橋接器
106‧‧‧通訊路徑
107‧‧‧輸入/輸出橋接器
108‧‧‧使用者輸入裝置
110‧‧‧顯示裝置
112‧‧‧並行處理子系統
113‧‧‧第二通訊路徑
114‧‧‧系統磁碟
116‧‧‧開關
118‧‧‧網路配接器
120-121‧‧‧外接卡
202‧‧‧並行處理單元
204‧‧‧並行處理記憶體
205‧‧‧輸入/輸出橋接器
206‧‧‧主介面
207‧‧‧任務/工作單元
208‧‧‧一般處理叢集
210‧‧‧記憶體交叉開關單元
212‧‧‧前端
214‧‧‧記憶體介面
215‧‧‧分割單元
220‧‧‧DRAM
230‧‧‧處理叢集陣列
300‧‧‧任務管理單元
305‧‧‧任務中繼資料快取
310‧‧‧串流多重處理器
312‧‧‧vspan單元
315‧‧‧紋理單元
321‧‧‧排程器表
322‧‧‧任務中繼資料
325‧‧‧預先光柵運算
328‧‧‧記憶體管理單元
330‧‧‧工作分配交叉開關
335‧‧‧第一點五層快取
340‧‧‧工作分配單元
345‧‧‧任務表
355‧‧‧初始化參數
360‧‧‧排程參數
365‧‧‧執行參數
370‧‧‧協作執行緒陣列狀態
372‧‧‧僅限硬體欄位
375‧‧‧佇列
500‧‧‧記錄
501-504‧‧‧vspan
511‧‧‧記錄
512‧‧‧記錄
513‧‧‧記錄
514‧‧‧記錄
530‧‧‧外部取得指標
535‧‧‧內部取得指標
540‧‧‧內部放置指標
545‧‧‧外部放置指標
如此上面簡單彙總可詳細了解本發明上述特色的方式,本發明的更特定說明則參照具體實施例,某些具體實施例說明於附圖內。不過吾人應該注意,附圖只說明本發明的典型具體實施例,因此並不對發明範圍產生限制,本發明承認其他等效具體實施例。
第一圖為例示設置來實施本發明一或多個態樣的電腦系統方塊圖;第二圖為根據本發明的一個具體實施例,用於第一圖中該電腦系統的一並行處理子系統之方塊圖;第三A圖為根據本發明的一個具體實施例,第二圖中任務/工作單元的方塊圖; 第三B圖為根據本發明的一個具體實施例,第二圖中一般處理叢集(GPC)的方塊圖;第三C圖為根據本發明的一個具體實施例,第三A圖中任務中繼資料(TMD)的內容之概念圖;第三D圖例示根據本發明的一個具體實施例,用於產生一子任務時寫入一佇列的方法流程圖;第四圖例示根據本發明的一個具體實施例,用於處理一vspan反應通知信號的方法流程圖;第五圖為根據本發明的一個具體實施例,當vspan已經合併時第三C圖中該佇列內容的概念圖;第六圖例示根據本發明的一個具體實施例,用於處理合併vspan的方法流程圖;以及第七圖例示根據本發明的一個具體實施例,用於處理一反應通知信號的方法。
207‧‧‧任務/工作單元
212‧‧‧前端
230‧‧‧處理叢集陣列
300‧‧‧任務管理單元
305‧‧‧任務中繼資料快取
312‧‧‧vspan單元
321‧‧‧排程器表
322‧‧‧任務中繼資料
340‧‧‧工作分配單元
345‧‧‧任務表

Claims (10)

  1. 一種將資料可用於處理通知一任務管理員之方法,該方法包含:產生傳輸給該任務管理員的一第一通知信號,其中該通知信號指定一第一偏移和一第一差異值;將與該第一偏移與該第一差異值相關聯的第一資料儲存在對應至一第一處理任務的一佇列內;產生傳輸給該任務管理員的一第二通知信號,其中該通知信號包含一第二偏移和一第二差異值;將與該第二偏移與該第二差異值相關聯的第二資料儲存在對應至該第一處理任務的該佇列內;接收該第一通知信號和一第二通知信號;判斷該第一偏移和該第一差異值是否能與該第二偏移和該第二差異值合併,以產生一合併的偏移和一合併的差異值;以及由該任務管理員在一處理叢集陣列內排定用於該第一處理任務的該第二資料及該第一資料的至少之一者之處理。
  2. 一種將資料可用於處理通知一任務管理員之系統,該系統包含:一佇列,其對應至一第一處理任務,並設置成儲存資料,包含第一資料與第二資料;一記憶體管理單元,其設置成:產生直接傳輸給該任務管理員的一第一通知信號,其中該通知信號指定與該第一資料相關聯的一第一偏移和一第一差異值;以及產生直接傳輸給該任務管理員的一第二通知信號,其中該通知信號指定與該第二資料相關聯的一第二偏移和一第二差異值;以及該任務管理員設置成: 接收該第一通知信號和該第二通知信號;判斷該第一偏移和該第一差異值是否能與該第二偏移和該第二差異值合併,以產生一合併的偏移和一合併的差異值;以及在一處理叢集陣列內,排定用於該第一處理任務的該第二資料及該第一資料的至少之一者之處理。
  3. 如申請專利範圍第2項之系統,其中該任務管理員另設置成:該第一反應通知信號的該第一偏移和該第一差異值無法與該第二偏移和該第二差異值合併時,根據該第一偏移和該第一差異值,以一順序將該第一偏移、該第一差異值、該第二偏移以及該第二差異值插入一已連結清單。
  4. 如申請專利範圍第3項之系統,其中該任務管理員另設置成:在一指標指向儲存至少一部分該第一資料的該佇列記錄時,將該指標提昇至該佇列的開頭;以及從該已連結清單中移除該第一偏移和該第一差異值。
  5. 如申請專利範圍第2項之系統,其中該記憶體管理單元另設置成:接收至一記憶體位址的一第一寫入要求,其包含該第一處理任務的第一資料;偵測該記憶體位址在一反應位址範圍內;以及將該第一寫入要求直接反應給該任務管理員,當成該第一通知信號。
  6. 如申請專利範圍第2項之系統,其中該處理叢集陣列另設置成:以一第一順序,分配該佇列內的第一記錄來儲存該第一資料,以及分配該佇列內的第二記錄來儲存該第二資料;以及將包含該處理任務的該第二資料之一第二寫入要求傳輸至該記憶體,以及 該記憶體管理單元另設置成處理該第二寫入要求,將該處理任務的該第二資料儲存在該記憶體內,其中以和該第一順序不同的一第二順序,處理該第一寫入要求與該第二寫入要求。
  7. 如申請專利範圍第2項之系統,其中該處理叢集陣列另設置成產生一第三通知信號,其直接傳輸至該任務管理員,並且該第三通知信號設置成將來自該任務中繼資料結構第一部分的資料複製到該任務中繼資料結構的第二部分。
  8. 如申請專利範圍第2項之系統,其中該多重執行緒處理器另設置成產生一第三通知信號,其直接傳輸至該任務管理員,並且該第三通知信號設置成使編碼該處理任務的一任務中繼資料結構之一快取儲存資料內記錄無效。
  9. 如申請專利範圍第2項之系統,其中該多重執行緒處理器另設置成產生一第三通知信號,其直接傳輸至該任務管理員,並且該第三通知信號設置成寫入一旗標,其控制該處理任務是否排程用於執行。
  10. 一種將資料可用於處理通知一任務管理員之系統,該系統包含:一處理叢集陣列,其設置成:執行一第一處理任務;以及在該第一處理任務執行期間,產生一第一通知信號,其設置成寫入一旗標,該旗標控制一第二處理任務是否排程用於執行;一記憶體管理單元,其設置成直接從該處理叢集陣列將該第一通知信號傳輸給該任務管理員;以及該任務管理員,其設置成該旗標啟用時,排程該處理叢集陣列內該第二處理任務的該資料之處理。
TW101147438A 2011-12-16 2012-12-14 處理系統中動態產生任務的傳訊、排序和執行 TWI488118B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/329,169 US8984183B2 (en) 2011-12-16 2011-12-16 Signaling, ordering, and execution of dynamically generated tasks in a processing system

Publications (2)

Publication Number Publication Date
TW201342243A true TW201342243A (zh) 2013-10-16
TWI488118B TWI488118B (zh) 2015-06-11

Family

ID=48522300

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101147438A TWI488118B (zh) 2011-12-16 2012-12-14 處理系統中動態產生任務的傳訊、排序和執行

Country Status (4)

Country Link
US (1) US8984183B2 (zh)
CN (1) CN103197955A (zh)
DE (1) DE102012222558B4 (zh)
TW (1) TWI488118B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9841913B2 (en) 2015-07-15 2017-12-12 Innovium, Inc. System and method for enabling high read rates to data element lists
US10055153B2 (en) 2015-07-15 2018-08-21 Innovium, Inc. Implementing hierarchical distributed-linked lists for network devices
TWI696070B (zh) * 2015-07-15 2020-06-11 美商伊諾凡恩有限公司 記憶體系統及在網路裝置中實施該記憶體系統之方法,以及網路裝置

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140143779A1 (en) * 2012-11-19 2014-05-22 Raytheon Company Contextual routing of data elements
GB2524063B (en) 2014-03-13 2020-07-01 Advanced Risc Mach Ltd Data processing apparatus for executing an access instruction for N threads
CN105700950B (zh) * 2014-11-25 2019-11-22 深圳市腾讯计算机系统有限公司 一种数据通信方法及装置
US20170017419A1 (en) * 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
CN110890975A (zh) * 2018-09-11 2020-03-17 北京京东金融科技控股有限公司 数据任务管理自动化方法、系统、电子设备、存储介质
US10861126B1 (en) * 2019-06-21 2020-12-08 Intel Corporation Asynchronous execution mechanism
CN110633154B (zh) * 2019-09-06 2020-10-02 中国科学院近代物理研究所 一种数据全排序方法及系统
KR102245208B1 (ko) * 2020-09-07 2021-04-28 박성빈 다중처리방법 및 그 장치
CN112379921B (zh) * 2020-11-03 2024-04-02 北京索为系统技术股份有限公司 一种动态柔性流程自动生成和自完善系统及方法
CN113254177B (zh) * 2021-05-31 2023-06-27 广州虎牙科技有限公司 基于集群的任务提交方法、计算机程序产品及电子设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5438680A (en) * 1988-04-29 1995-08-01 Intellectual Properties And Technology, Inc. Method and apparatus for enhancing concurrency in a parallel digital computer
US6625654B1 (en) 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
JP4750350B2 (ja) * 2003-03-13 2011-08-17 パナソニック株式会社 タスク切換装置、方法及びプログラム
US7290094B2 (en) * 2005-05-17 2007-10-30 International Business Machines Corporation Processor, data processing system, and method for initializing a memory block to an initialization value without a cache first obtaining a data valid copy

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9841913B2 (en) 2015-07-15 2017-12-12 Innovium, Inc. System and method for enabling high read rates to data element lists
US10055153B2 (en) 2015-07-15 2018-08-21 Innovium, Inc. Implementing hierarchical distributed-linked lists for network devices
TWI696070B (zh) * 2015-07-15 2020-06-11 美商伊諾凡恩有限公司 記憶體系統及在網路裝置中實施該記憶體系統之方法,以及網路裝置
US10740006B2 (en) 2015-07-15 2020-08-11 Innovium, Inc. System and method for enabling high read rates to data element lists
TWI706314B (zh) * 2015-07-15 2020-10-01 美商伊諾凡恩有限公司 用於網路裝置之記憶體系統、網路裝置、及操作網路裝置的方法

Also Published As

Publication number Publication date
DE102012222558A1 (de) 2013-06-20
US20130160021A1 (en) 2013-06-20
DE102012222558B4 (de) 2023-12-14
CN103197955A (zh) 2013-07-10
US8984183B2 (en) 2015-03-17
TWI488118B (zh) 2015-06-11

Similar Documents

Publication Publication Date Title
TWI488118B (zh) 處理系統中動態產生任務的傳訊、排序和執行
TWI475386B (zh) 有記憶體分配限制的協同處理器的虛擬記憶體結構
TWI531974B (zh) 管理巢狀執行串流的方法和系統
TWI624791B (zh) 用於在多緒處理單元中改善性能之技術
TWI529626B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI490779B (zh) 無鎖的先進先出裝置
TWI512466B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI525437B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI466027B (zh) 解決執行緒發散的方法及系統
US20130198760A1 (en) Automatic dependent task launch
TWI509519B (zh) 維持公平和秩序的資源管理子系統
TWI489385B (zh) 一種用於預先擷取快取線的電腦實作方法與子系統
US9507638B2 (en) Compute work distribution reference counters
TWI533222B (zh) 處理任務的工作分配控制
TW201413456A (zh) 處理巢狀串流事件的方法和系統
US11663767B2 (en) Power efficient attribute handling for tessellation and geometry shaders
TWI525438B (zh) 透過貼圖硬體執行記憶體存取操作之技術
TW201439770A (zh) 透過貼圖硬體執行記憶體存取操作之技術
TW201407482A (zh) 多個應用程式分享的圖形處理單元
TW201337829A (zh) 暫存器檔案型讀取
TW201333827A (zh) 運算任務狀態的封裝
TW201351276A (zh) 計算工作的排程和執行
TW201432573A (zh) 工作佇列型圖形處理單元工作創建
US10235208B2 (en) Technique for saving and restoring thread group operating state
TW201342229A (zh) 分散操作的批次重播