TWI533222B - 處理任務的工作分配控制 - Google Patents

處理任務的工作分配控制 Download PDF

Info

Publication number
TWI533222B
TWI533222B TW102102673A TW102102673A TWI533222B TW I533222 B TWI533222 B TW I533222B TW 102102673 A TW102102673 A TW 102102673A TW 102102673 A TW102102673 A TW 102102673A TW I533222 B TWI533222 B TW I533222B
Authority
TW
Taiwan
Prior art keywords
work
task
queue
tmd
ctas
Prior art date
Application number
TW102102673A
Other languages
English (en)
Other versions
TW201351290A (zh
Inventor
雷其V 沙
卡里姆M 阿卜杜拉
肖恩J 特賴希勒
亞伯拉罕B 德 瓦爾
Original Assignee
輝達公司
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 輝達公司 filed Critical 輝達公司
Publication of TW201351290A publication Critical patent/TW201351290A/zh
Application granted granted Critical
Publication of TWI533222B publication Critical patent/TWI533222B/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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Description

處理任務的工作分配控制
本發明概略關於計算任務的執行,尤指在一多執行緒系統中控制運算任務之工作分配。
習用的在多處理器系統中運算任務之執行牽涉到設置一組處理元件來執行每一運算任務。在一些案例中,該組處理元件可在兩項或更多項運算任務之間切換分時處理。但是,執行一特定運算任務的該組處理元件由開始到結束都執行該運算任務。
因此,本技術中需要一種系統和方法用於在一多執行緒系統中控制運算任務處理之工作分配。
一種系統和方法可在一多執行緒系統中控制運算任務處理之工作分配。每一處理任務被編碼成儲存在記憶體中的任務中介資料(TMD,“Task metadata”)。該TMD包括工作分配參數,其指定該處理任務必須如何分配來進行處理。排程電路在當該任務之一工作佇列的項目已經被寫入時選擇一任務來執行。該等工作分配參數可以定義在可以啟始一協同執行緒陣列(CTA,“Cooperative thread array”)來根據該運算任務處理該等工作佇列項目之前所需要的工作佇列項目的數目。該等工作分配參數可以定義可被啟始來處理該等相同工作佇列項目之CTA的數目。最後,該等工作分配參數可以定義用於更新指向至該等工作佇列項目的指標之一級距大小。
本發明之一種用於控制任務處理之工作分配的方法之多種具體實施例包括讀取被包括在定義一第一處理任務的任務中介資料中工作分配參數,其中該等工作分配參數控制該工作的分配以運算由一串流多處理器執行的執行緒陣列(CTAs)。儲存在一第一佇列之項目中的工作數量係基於該等工作分配參數來決定。基於該等工作分配參數,一組CTA被啟始來由該串流多處理器執行,以處理某數量的工作。至該第一佇列中要由下一組CTA處理的一第一項目的一指標係基於該等工作分配參數進行更新。
本發明之多種具體實施例包括一種用於針對任務處理控制工作分配的系統。該系統包含一記憶體,其設置成儲存定義一第一處理任務和一第一佇列和一任務/工作單元的任務中介資料。該任務/工作單元設置成讀取包括在該任務中介資料的工作分配參數,其中該等工作分配參數控制該工作的分配以運算由一串流多處理器執行的執行緒陣列(CTA)。該任務/工作單元亦設置成決定基於該等工作分配參數要儲存在該第一佇列中項目當中的該工作之數量、基於該等工作分配參數啟始要由該串流多處理器執行的一組CTA來處理該數量的工作、以及基於該等工作分配參數更新指向至要由下一組CTA處理的在該第一佇列中一第一項目的一指標。
該等工作分配參數使得每一處理任務能夠控制要被處理的工作之分配。每一處理任務可被獨立地執行,其中一第一處理任務動態地產生要由一第二處理任務處理的工作。該工作的分配可依據在該資料的處理開始之前需要多少資料、將要處理該資料的CTA數目、以及控制被分配給每一CTA的該工作佇列之該等特定項目之一級距大小而定。該分配機制可用於控制在多執行緒系統和資料流網路中工作的分配。
在以下的說明中,許多特定細節係被提出來提供對於本發明之更為完整的瞭解。但是本技術專業人士將可瞭解到本發明可不利用一或多個這些特定細節來實施。在其它實例中,並未說明熟知的特徵,藉以避免混淆本發明。
系統概述
第一圖係例示設置成實作本發明一或多種態樣之一電腦系統100的方塊圖。電腦系統100包括一中央處理單元(CPU)102與一系統記憶體104,其經由包括一記憶體橋接器105的互連接路徑進行通訊。記憶體橋接器105可為一北橋晶片,其經由一匯流排或其它通訊路徑106(例如HyperTransport聯結)連接到一I/O(輸入/輸出)橋接器107。I/O橋接器107可為一南橋晶片,其接收來自一或多個使用者輸入裝置108(例如鍵盤、滑鼠)的使用者輸入,並經由路徑106及記憶體橋接器105轉送該輸入到CPU 102。一平行處理子系統112經由一匯流排或其它通訊路徑113(例如PCI Express,加速繪圖埠、或HyperTransport聯結)耦合至記憶體橋接器105;在一具體實施例中,平行處理子系統112為一繪圖子系統,其傳遞像素到一顯示器110(例如一習用CRT或LCD式的監視器)。一系統碟114亦連接至I/O橋接器107。一交換器116提供I/O橋接器107與其它像是網路轉接器118與多種嵌入卡120,121之其它組件之間的連接。其它組件(未顯示),包括有USB或其它埠連接、CD驅動器、DVD驅動器、薄膜記錄裝置及類似者,其亦可連接至I/O橋接器107。互連接第一圖中該等多種組件的通訊路徑可使用任何適當的協定來實作,例如PCI(周邊組件互連,Peripheral Component Interconnect)、PCI Express(PCI快速,PCI-E)、AGP(加速圖形通訊埠,Accelerated Graphics Port)、HyperTransport(超輸送)、或任何其它匯流排或點對點通訊協定、及不同裝置之間的連接,皆可使用如本技術中所知的不同協定。
在一具體實施例中,平行處理子系統112加入可針對圖形及視訊處理最佳化的電路,其包括例如視訊輸出電路,且構成一圖形處理單元(GPU)。在另一具體實施例中,平行處理子系統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包括一或多個平行處理單元(PPU,"parallel processing unit")202,其每一者耦合於一局部平行處理(PP,“Parallel processing”)記憶體204。概言之,一平行處理子系統包括數目為U的PPU,其中U≧1。(在此處類似物件係均以辨識該物件之參考編號標示,而括號中的數目則指出該物件所需要的數目)。PPU 202及平行處理記憶體204可以使用一或多個積體電路裝置來實作,例如可程式化處理器,特殊應用積體電路(ASIC,“Application specific integrated circuits”),或記憶體裝置,或以任何其它技術上可行的方式來實作。
請再次參照第一圖,在一些具體實施例中,平行處理子系統112中部份或所有的PPU 202為圖形處理器,其具有顯像管線,其能夠設置成執行關於自CPU 102及/或系統記憶體104經由記憶體橋接器105及匯流排113所供應的圖形資料產生像素資料的多種作業,與本地平行處理記憶體204進行互動(其能夠做為圖形記憶體,其包括例如一習用像框緩衝器),以儲存及更新像素資料,傳遞像素資料到顯示裝置110及類似者。在一些具體實施例中,平行處理子系統112可以包括可操作為圖形處理器的一或多個PPU 202,及用於通用型運算的一或多個其它PPU 202。該等PPU可為相同或不同,且每個PPU可以具有其本身專屬的平行處理記憶體裝置或並無專屬的平行處理記憶體裝置。一或多個PPU 202可以輸出資料到顯示器110,或每個PPU 202可以輸出資料到一或多個顯示器110。
在作業中,CPU 102為電腦系統100的主控處理器,其控制及協調其它系統組件的作業。特別是CPU 102發出控制PPU 202之作業的命令。在一些具體實施例中,CPU 102對每一PPU 202寫入一命令串流至一資料結構(未示於第一圖或第二圖中),其可位於系統記憶體104、平行處理記憶體204或可同時由CPU 102與PPU 202存取的其它儲存位置。指向至每一資料結構的一指標被寫入至一推入緩衝器來啟始在該資料結構中該命令串流之處理。PPU 202自一或多個推入緩衝器讀取命令串流,然後相對於CPU 102的該作業非同步地執行命令。執行優先性可針對每一推入緩衝器來指定,以控制該等不同推入緩衝器的排程。
現在請回頭參照第二圖,每個PPU 202包括一I/O(輸入/輸出)單元205,其經由通訊路徑113與電腦系統100的其它部份進行通訊,其連接至記憶體橋接器105(或在另一具體實施例中直接連接至CPU 102)。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 clusters”)208,其中C1。每一GPC 208能夠同時執行大量(例如數百或數千)的執行緒,其中每個執行緒為一程式的一實例。在多種應用中,不同的GPC 208可分配來處理不同種類的程式,或執行不同種類的運算。GPC 208的分配可根據每種程式或運算所需要的工作負荷而改變。
GPC 208自一任務/工作單元207內的一工作分配單元接收要被執行的處理任務。該工作分配單元接收指標指向至被編碼成任務中介資料(TMD)且儲存在記憶體中的運算處理任務(任務指標)。該等指向至TMD的任務指標被包括在儲存成一推入緩衝器且由前端單元212自主控介面206接收的該命令串流中。可被編碼成TMD的處理任務包括要被處理之資料的索引,以及定義了該資料要如何被處理的狀態參數和命令(例如那一個程式要被執行)。任務/工作單元207自前端單元212接收任務,並確保GPC 208在由該等TMD之每一者所指定的該處理啟始之前被設置成一有效狀態。一優先性可針對用於排程該處理任務之執行的每一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之其它記憶體(not local to PPU 202)進行通訊。在第二圖所示的該具體實施例中,交叉開關單元210直接連接於I/O單元205。交叉開關單元210可使用虛擬通道來隔開GPC 208與區隔單元215之間的流量串流。
再次地,GPC 208可被程式化來執行關於許多種應用之處理工作,其中包括但不限於線性及非線性資料轉換、影片及/或聲音資料的過濾、模型化作業(例如應用物理定律來決定物體的位置、速度及其它屬性)、影像顯像作業(例如鑲嵌遮影器、頂點遮影器、幾何遮影器及/或像素遮影器程式)等等。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上並行地執行,且一處理任務於執行期間可以產生一或多個「子」(child)處理任務。任務/工作單元207接收該等任務,並動態地排程該等處理任務和子處理任務來由GPC 208執行。
第三A圖係根據本發明一具體實施例中第二圖之任務/工作單元207的方塊圖。任務/工作單元207包括一任務管理單元300和工作分配單元340。任務管理單元300基於執行優先性程度組織要被排程的任務。針對每一優先性程度,任務管理單元300儲存指向至對應於在排程器表321中該等任務的該等TMD 322之一任務指標清單,其中該清單可利用一鏈接串列來實作。該等TMD 322可儲存在PP記憶體204或系統記憶體104中。任務管理單元300接受任務和儲存該等任務在排程器表321中的速率與任務管理單元300排程任務進行執行的速率無關,使得任務管理單元300可基於優先性資訊或使用其它技術來排程任務。
工作分配單元340包括一任務表345,任務表345其中具有多個位置,而每一位置可由將要被執行的一任務之TMD 322佔用。任務管理單元300在當任務表345中有空的位置時即可排程任務來執行。當沒有空位置時,不會佔用一位置的一較高優先性的任務可以逐出佔用一空的位置的一較低優先性的任務。當一任務被逐出時,該任務即停止,且如果該任務的執行並未完成,該任務被加入到排程器表321中一鏈接串列。當一子處理任務被產生時,該子任務被加入到排程器表321中一鏈接串列。一子任務可由在處理叢集陣列230中執行的一TMD 322來產生。當一任務被逐出時,該任務同時會自一對應位置被移除。
本技術專業人士將可瞭解到在第一、二及三A圖中所述之架構並未以任何方式限制本發明之範圍,而此處所教示的技術可以實作在任何適當設置的處理單元上,其包括但不限於一或多個CPU、一或多個多核心CPU、一或多個PPU 202、一或多個GPC 208、一或多個圖形或特殊目的處理單元或類似者,其皆不悖離本發明之範圍。
任務排程和管理
任務管理單元300管理要被排程的運算任務做為儲存在排程器表321中的一TMD群組的陣列。一TMD群組為具有相同排程優先性的一組運算任務。TMD群組或優先性程度的數目可為一或多個。在每一TMD群組內,位在個別優先性程度的該等運算任務被儲存在一清單中,其可利用一鏈接串列來實作。在一鏈接串列中每一TMD儲存指向至該個別鏈接串列中下一TMD的一指標。針對每一TMD儲存有該鏈接串列的一頭指標和一尾指標。不具有任務的一TMD群組具有一等於該尾指標的一頭指標,且一空白位元被設定為真(TRUE)。
當自主控介面206收到運算任務時,任務管理單元300插入該等運算任務到一TMD群組當中。更特定而言,指向至對應於該運算任務到該TMD的一任務指標被加入到該群組之該鏈接串列的尾端,除非一特殊TMD位元被設定來造成該任務被加入到該鏈接串列的頭端。即使在一TMD群組內的所有任務具有相同的排程優先性程度,該TMD群組鏈接串列的頭端為由任務管理單元300所選出,並成為被排程來執行的第一運算任務。因此,位在該鏈接串列之頭端的該運算任務相較於具有相同優先性程度的其它運算任務會具有一相對較高的優先性。同樣地,在該鏈接串列中具有相同優先性程度的每一連續的運算任務相對於在該鏈接串列中先前的運算任務具有一較低的優先性。因此,任務管理單元300能夠以相對於彼此的輸入順序排程在一TMD群組內的該等運算任務(假設沒有任何任務有特殊標記來加入到該TMD群組的頭部)。因為該TMD群組被指定為該TMD結構的一部份,一運算任務的TMD群組在當該運算任務正在被執行時不能夠改變。運算任務亦可自處理叢集陣列230接收。
在排程該等運算任務之前基於優先性程度將運算任務收集到群組中可允許將運算任務由任務管理單元300接收的速率與運算任務被輸出至工作分配單元340做執行的速率脫鈎。任務管理單元300一般能夠以比該等運算任務可被輸出來由工作分配單元340執行的速率要快的速率來接受自一或多個推入緩衝器由主控介面206輸出的運算任務。來自該等不同推入緩衝器的該輸入為獨立的串流,基本上係由相同的應用程式產生,以具有多組的依附任務,但在一些具體實施例中,多個應用程式可寫入到該等推入緩衝器。任務管理單元300可設置成將該等運算任務緩衝在排程表321中,且稍後由排程器表321選擇一或多項運算任務來輸出至工作分配單元340。藉由在運算任務被緩衝化之後來選擇它們,相較於在運算任務被收到時選擇一運算任務,該任務管理單元可以基於更多的資訊來做出選擇。例如,任務管理單元300可緩衝化在一高優先性任務之前被接收的數項低優先性任務。該緩衝化使得任務管理單元300能夠選擇該高優先性任務在該等低優先性任務之前輸出。
任務管理單元300可以使用數種不同的技術來執行選擇以排程該等運算任務:循環式、優先性、或區隔的優先性排程。對於該等不同排程技術之每一種技術,當一運算任務被選擇來做排程時,該選擇的運算任務自該被選擇的任務被儲存的該群組中移除。與選擇的排程技術無關,任務管理單元300能夠藉由選擇在該適當群組的該鏈接串列中該第一項目來快速地選擇一運算任務。該等運算任務可依不同於該等任務指標由任務管理單元300自主控介面206收到的該順序之一順序來排程及/或執行。
針對任務管理單元300之最簡單的排程方式為排程位在每一群組(如果一運算任務存在於該群組中)的頭端處的該運算任務,並以循環的順序輪轉該等群組。另一種排程技術為優先性排程,其以嚴格的優先性順序來選擇該等運算任務。任務管理單元300自具有至少一運算任務的該最高優先性群組中選擇一運算任務,該運算任務可被視為位於該群組的頭端處。
每一TMD 322可為一大結構,例如256位元組或更多,其係儲存在PP記憶體204中。由於是大尺寸,TMD 322從頻寬的角度來說每個存取都可能是非常寶貴的。因此,任務/工作單元207可設置成包括一快取(未示出),以僅儲存TMD 322中任務管理單元300要做排程所需要的該部份(相對較小的部份)。TMD 322中其餘部份在當該任務被排程時可自PP記憶體204提取,即被轉移至工作分配單元340。TMD 322在軟體控制之下被寫入,且當運算任務完成執行時,關於已完成之運算任務的TMD可重新使用來儲存不同運算任務的資訊。因為一TMD 322可被儲存在該快取中,儲存該已完成的運算任務之資訊的該等項目必須自TMD快取405中清除。
任務處理概述
第三B圖為根據本發明一具體實施例中第二圖之該等PPU 202中之一者內一GPC 208的方塊圖。每個GPC 208可設置成平行地執行大量的執行緒,其中「執行緒」(thread)代表對於一特定組合的輸入資料執行的一特定程式之實例。在一些具體實施例中,使用單一指令、多重資料(SIMD,“Single-instruction,multiple-data”)指令發行技術來支援大量執行緒之平行執行,而不需要提供多個獨立指令單元。在其它具體實施例中,單一指令多重執行緒(SIMT,“Single-instruction,multiple-thread”)技術係用來支援大量概略同步化執行緒的平行執行,其使用一共用指令單元設置成發出指令到GPU 208之每一者內一組處理引擎。不像是一SIMD執行方式,其中所有處理引擎基本上執行相同的指令,SIMT的執行係允許不同的執行緒經由一給定執行緒程式而更可立即地遵循相異的執行路徑。本技術專業人士將可瞭解到一SIMD處理規範代表一SIMT處理規範的一功能子集合。
GPC 208的作業較佳地是經由一管線管理員305控制,其可分配處理任務至串流多處理器(SM,“Streaming multiprocessor”)310。管線管理員305亦可設置成藉由指定SM 310輸出之已處理資料的目的地來控制一工作分配交叉開關330。
在一具體實施例中,每個GPC 208包括M個數目的SM 310,其中M1,每個SM 310設置成處理一或多個執行緒群組。同時,每個SM 310可包括可被管線化的一相同組合的功能單元,允許在一先前指令已經完成之前發出一新指令。其可提供任何組合的功能單元。在一具體實施例中,該等功能單元支援多種運算,其中包括整數及浮點數算術(例如加法及乘法),比較運算,布林運算(AND,OR,XOR)、位元偏位,及多種代數函數的運算(例如平面內插、三角函數、指數、及對數函數等);及相同的功能單元硬體可被利用來執行不同的運算。
傳送到一特定GPC 208之該等系列的指令構成一執行緒,橫跨一SM 310內該等平行處理引擎(未示出)並行地執行某個數目之執行緒的集合在此稱之為「包繞」(warp)或「執行緒群組」(thread group)。一「執行緒群組」代表並行地對於不同輸入資料執行相同程式的一執行緒的群組,該群組的每一執行緒被指定給一SM 310內的一不同處理引擎。一執行緒群組可包括比SM 310內處理引擎的數目要少的執行緒,其中當該執行緒群組正在被處理的循環期間一些處理引擎將為閒置。一執行緒群組亦可包括比SM 310內處理引擎之數目要更多的執行緒,其中處理將發生在連續的時脈循環之上。因為每個SM 310可並行地支援最多到G個執行緒群組,因此在任何給定時間在GPC 208中最高可執行G * M個執行緒群組。
此外,在相同時間於一SM 310內可以啟動複數相關的執行緒群組(在不同的執行階段)。此執行緒群組的集合在此處稱之為「協同執行緒陣列」(CTA,“Cooperative thread array”)或「執行緒陣列」(thread array)。一特定CTA之大小等於m*k,其中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外部的任何記憶體皆可做為通用記憶體。此外,一1.5階(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 entries”),用於將一虛擬位置映射到一砌磚的一實體位址,或是一快取線索引。MMU 328可包括位址轉譯旁看緩衝器(TLB,“Translation lookaside buffer”),或是可以存在於多處理器SM 310或L1快取或GPC 208內的快取。該實體位址被處理來分配表面資料存取局部性而允許有效率要求來交錯在區隔單元當中。該快取線索引可用於決定一快取線的一要求是否為達成或錯失。
在圖形和運算應用中,一GPC 208可設置成使得每個SM 310耦合於一紋路單元315,用於執行紋路映射作業,例如決定紋路樣本位置、讀取紋路資料及過濾該紋路資料。紋路資料自一內部紋路L1快取(未示出)讀取,或是在一些具體實施例中自SM 310內的L1快取讀取,且視需要自一L2快取、平行處理記憶體204或系統記憶體104提取。每一SM 310輸出已處理的任務至工作分配交叉開關330,藉以提供該已處理的任務至另一GPC 208進行進一步處理,或是將該已處理的任務經由交叉開關單元310儲存在一L2快取、平行處理記憶體204或系統記憶體104中。一preROP(預先掃描場化作業)325設置成自SM 310接收資料、導引資料到區隔單元215內的ROP單元、並進行色彩混合的最佳化、組織像素色彩資料、並執行位址轉譯。
將可瞭解到此處所示的核心架構僅為例示性,其有可能有多種變化及修正。在一GPC 208內可包括任何數目的處理單元,例如SM 310或紋路單元315、preROP 325。再者,雖僅顯示一個GPC 208,一PPU 202可以包括任何數目的GPC 208,在一實施例中這些GPC 208在功能上彼此類似,所以執行行為並不會根據是那一個GPC 208接收一特定處理任務而決定。再者,每個GPC 208可與其它GPC 208獨立地運作,其使用獨立及不同的處理單元、L1快取等等。
本技術專業人士將可瞭解到在第一、二、三A和三B圖中所述之該架構並未以任何方式限制本發明之範圍,而此處所教示的技術可以實作在任何適當設置的處理單元上,其包括但不限於一或多個CPU、一或多個多核心CPU、一或多個PPU 202、一或多個GPC 208、一或多個圖形或特殊目的處理單元或類似者,其皆不悖離本發明之範圍。
在本發明之具體實施例中,需要使用PPU 202或一運算系統的其它處理器來使用執行緒陣列執行一般性運算。在該執行緒陣列中每一執行緒被指定一唯一執行緒識別(thread ID),其可在該執行緒的執行期間由該執行緒存取。可被定義成一維或多維度數值的執行緒ID控制該執行緒的處理行為之多種態樣。例如,一執行緒ID可用於決定一執行緒要做處理的是該輸入資料集的那一部份,及/或決定一執行緒要產生或寫入的是在一輸出資料集的那一部份。
每個執行緒指令的一序列可以包括至少一指令來定義該代表性執行緒和該執行緒陣列的一或多個其它執行緒之間的一協同行為。例如,每個執行緒的該指令序列可以包括一指令來在該序列中一特定點處中止該代表性執行緒之作業的執行,直到當該等其它執行緒中一或多者到達該特定點為止,該代表性執行緒的一指令係儲存資料在該等其它執行緒中一或多者可存取的一共用記憶體中,該代表性執行緒的一指令係基於它們的執行緒ID原子性地讀取和更新儲存在該等其它執行緒中一或多者可存取的一共用記憶體中的資料,或類似者。該CTA程式亦可包括一指令來運算資料在該共用記憶體中要被讀取的一位址,利用該位址為執行緒ID的函數。藉由定義適當的函數和提供同步化技術,資料可藉由一CTA的一執行緒被寫入到共用記憶體中一給定的位置,並以一可預測的方式由該相同CTA的一不同執行緒自該位置讀取。因此,即可支援可在執行緒當中共用任何需要的資料型式,且在一CTA中任何執行緒能夠與該相同CTA中任何其它執行緒共用資料。在一CTA的執行緒當中資料共用的程度係由該CTA程式決定;因此,應瞭解到在使用CTA的一特定應用中,根據該CTA程式,一CTA的該等執行緒可以或不需要實際地彼此共用資料,”CTA”和「執行緒陣列」在此處為同義地使用。
運算任務中介資料
第四A圖係根據本發明一具體實施例中儲存在PP記憶體204中一TMD的該等內容之示意圖。TMD 322設置成儲存初始化參數405、排程參數410、執行參數415、CTA狀態420、工作分配參數422和一佇列425。工作分配參數422儲存有數值來控制將儲存在佇列425中的工作分配給一或多個CTA。所有TMD 322共通的狀態並未包括在每一TMD 322中。因為一TMD 322為儲存在PP記憶體204中的一資料結構,在CPU 102或PPU 112上運行的一運算程式能夠在記憶體中產生一TMD 322結構,然後藉由傳送指向至TMD 322的一任務指標給任務/工作單元207來遞送TMD 322執行TMD 322。
初始化參數405用於當TMD 322被啟始時設置GPC 208,且可包括佇列425的該開始程式位址和大小。請注意到佇列425可與TMD 322分開地儲存在記憶體中,其中TMD 322包括指向至佇列425的一指標(佇列指標)來取代實際佇列425。當佇列425的項目被指定給一CTA來處理時,每一項目由一索引或一虛擬位址來指定。
初始化參數405亦可包括位元來指明當TMD 322被啟始時,多種快取,像是一紋路標頭快取、一紋路取樣器快取、一紋路資料快取、資料快取、常數快取及類似者,皆為失效。初始化參數405亦可包括在執行緒中一CTA的維度、一TMD版本號碼、一指令集版本號碼、一網格之維度(以CTA寬度、高度和深度來描述)、記憶庫映射參數、由一應用程式所看到的一呼叫堆疊的深度、及該TMD的該呼叫-返回堆疊的大小。初始化參數505可包括常數緩衝器參數,其為儲存在記憶體中一組常數緩衝器資料陣列的描述符(descriptor)。每一描述符具有與其相關聯的一描述符ID、該常數緩衝器資料陣列的該基底之一虛擬位址、指明一常數緩衝器連結為有效的一位元、指明在TMD 322被啟始之前來自該常數緩衝器的該資料在該快取中為無效的一位元、以及該常數緩衝器資料陣列的大小。該常數緩衝器資料可由自TMD 322啟始的任何CTA正在執行的該程式做存取,其係使用指定該描述符ID和該陣列內一偏置量的載入常數指令。
一TMD 322的執行參數415可包括指向至當該TMD 322完成時被自動啟始的一依附TMD的一任務指標。旗號可由TMD 322執行來確保該等不同TMD 322和CPU 102之間的相關性可符合。例如,一第一TMD 322的執行可以依據一第二TMD的完成,所以該第二TMD產生一信號標(semaphore)釋放,且該第一TMD在該相對應信號標取得成功之後才執行。在一些具體實施例中,該信號標取得係在主控介面206或前端單元212中執行。一TMD 322的執行參數415可以儲存複數個信號標釋放,其中包括記憶體阻障的型式、在記憶體中該信號標資料結構的位址、該信號標資料結構的大小、有效負載、及一減法運算的致能、型式和格式。該信號標的資料結構可被儲存在執行參數415中,或可儲存在TMD 322外部。
執行參數415亦可包括要針對TMD 322執行的該程式之開始位址、當TMD 322的執行完成時要進行之記憶體阻障作業的型式、一序列執行旗標用於指明針對TMD 322是否一次僅執行一單一CTA(序列地)、及一節制致能旗標,其可控制任務/工作單元207是否可基於針對TMD 322指定的該等記憶體限制而限制並行運作的該等CTA的數目。執行參數415亦可儲存多種旗標,其可控制針對TMD 322所執行的該處理任務所進行的算術運算之行為,例如非數字(NaN,“Not-a-number”)處理、浮點數到整數轉換、及多種指令之進位模式。
TMD 322的CTA狀態420可包括自從一CTA被啟始之後已經經過的該等循環數目來配合該等待時間參數一起使用。此外,當一程序被先佔(preempt)時,TMD 322的處理可被停止於一指令邊界或一CTA邊界處,且處理將被恢復之該CTA的識別被儲存在CTA狀態420中。在先佔之後恢復TMD 322之執行所需要的該狀態資訊可被儲存在CTA狀態420中、或在PP記憶體204的一獨立區域中、或在系統記憶體104中。CTA狀態420亦儲存指向至佇列425之項目的指標,以及計數器溢位旗標,其可指明何時每一指標遞增超過佇列425的該末端,並需要被包繞回到佇列425的開始處。
排程參數410控制任務/工作單元207如何排程TMD 322來執行。排程參數410可包括該TMD群組ID、指明TMD 322要在何處加入到一鏈接串列(頭端或尾端)的一位元、以及指向至該TMD群組中下一個TMD 322的一指標。排程參數410亦可包括遮罩以致能/除能GPC 208內特定串流多處理器。
排程參數410亦可包括一位元來指明TMD 322是否為一佇列TMD或一網格TMD。其它的具體實施例係讓一網格TMD和一佇列TMD被設定成具有不同的結構,或實作網格TMD或佇列TMD。如果TMD 322為一網格TMD,則未使用TMD 322的該佇列特徵,且TMD 322的執行使得一固定數目的CTA被啟始和執行。該等CTA的數目被指定為該網格寬度、高度和深度的乘積。當該網格的項目被指定給一CTA做處理時,每一項目由該網格內的座標來指定,但並沒有明確的資料指標。由TMD 322定義的該程式可以使用任何序列的指令和常數緩衝器資料值,以轉換該等網格座標成為指向至要由一CTA之一固定數量的預先定義資料之一指標以使得該網格被處理。
如果TMD 322為一佇列TMD,則使用TMD 322的該佇列特徵做為佇列項目,代表資料被儲存在佇列425中。佇列項目為被輸入到TMD 322之CTA的資料。該等佇列項目亦可代表於一執行緒的執行期間由另一TMD 322產生的子任務,藉此提供巢化的平行度。基本上,該執行緒或包括該執行緒的CTA之執行被中止,直到該子任務的執行完成為止。佇列425可實作成一圓形佇列,所以資料的總量不會受限於佇列425的大小。如前所述,佇列425可與TMD 322分開地儲存,且TMD 322可以儲存指向至佇列425的一佇列指標。當代表該子任務的TMD 322正在執行時,該子任務的佇列項目可被寫入到佇列425。
在一具體實施例中,針對一佇列TMD執行為可變數目的CTA,其中針對被寫入到該佇列TMD的佇列425之一個預定數目的連續項目來啟始一CTA。因為一特定CTA可以處理佇列425的多個連續項目,在佇列425中每一項目僅由一單一CTA做處理。一佇列TMD的工作分配參數422可以包括啟始一CTA所需要的佇列425之連續項目的數目(N)。該等CTA的數目係依據被寫入到該佇列TMD之佇列425的項目數目和N而定。例如,當N=10和有50個項目被寫入到佇列425時,針對該佇列TMD將會執行五個CTA。如果所有50個項目皆在同時被寫入,所有五個CTA可在同時啟始。如果該等50個項目在數個時脈循環當中被寫入,則當寫入每一10個連續項目之連續群組時該等CTA將被啟始。
在另一具體實施例中,該等N個項目之每一項目可在一個以上的CTA中被處理。當加入N個項目至佇列425,針對TMD 322啟始一第一組CTA、其中在該組中CTA的數目M亦可由工作分配參數422來指定。例如,當N=6和M=3和36個項目被寫入到佇列425時,針對該佇列TMD將執行18個CTA(M*36/N)。如果所有36個項目皆在同時被寫入,所有18個CTA可在同時啟始。如果該等36個項目在數個時脈循環當中被寫入,則當寫入每一6個連續項目之連續群組時該等CTA將被啟始。
一示例TMD 322可設置成執行鑲嵌作業,其中該等M個CTA之處理的(process)每一者被寫入到佇列425的頂點。每一CTA可設置成基於該CTA識別而不同地處理該相同的頂點組合。當該處理的數量由於並行性而受惠時,可使用多個CTA來處理每一資料元件,例如被寫入到佇列425的項目。請注意在一具體實施例中每一CTA在一單一SM 310上執行時,啟使M個CTA來處理N個資料元件將允許該等資料元件由最多的M個SM 310來處理(其假設M不大於SM 310的數目)。當一CTA的處理速度受限於一SM 310的該等資源時,其可使用多個CTA,而每一者處理較少的執行緒,所以每一執行緒可使用更多的資源。在另一示例中,當執行緒可能在執行期間發散時,每一執行緒(或一組執行緒)可由一不同的CTA執行,所以由於發散性造成之執行序列化可降低,而該等發散的執行緒另由M個不同的CTA之每一者並行地執行。
工作分配參數422亦可包括一級距大小S,其指定用於更新佇列425的該讀取指標的該遞增量。當S等於N時,該等N個項目之每一者由M個CTA來處理。當S小於N時,該等N個項目中至少一部份由M個以上的CTA進行處理,其配合第四B圖做說明。例如,一個數目的項目N,可被設定為在每一圖形基元中頂點的數目,例如三角形為3、或多邊形為4。該級距大小S可被設定成三角形為1而多邊形為2,以處理一三角形帶或一多邊形網格,其中每一新的頂點(在該等頂點定義該第一圖形基元之後)定義一新的三角形或多邊形。
第四B圖例示根據本發明一具體實施例中第四A圖的佇列425之項目。當前三個頂點(v0,v1和v2)被寫入到佇列425(N=3)時,啟始一第一組M個CTA,且指向到針對該下一個CTA啟始而要包括在該等N個項目中佇列425的第一項目的一指標460被增加1來指向到儲存v1的該項目。當另一頂點v3被寫入到佇列425時,啟始一第二組M個CTA來處理由三個頂點(v1,v2和v3)所形成的一第二圖形基元。
任務/工作單元207可以建構一處理的導向圖,例如一資料流網路,其中每一程序(或運算節點)為一佇列TMD 322。一或多個產出者(producer)TMD 322產生要由其它TMD 322使用(consumed)的該等初始輸入。要由每一TMD 322處理的該工作之分配可使用工作分配參數422進行控制。
第四C圖例示根據本發明一具體實施例指向至第四A圖的佇列425之項目的資料指標。針對被編碼在佇列425中一處理任務寫入資料或其它資訊係與佇列425中項目的分配彼此不相關(decoupled)。首先,一程序保留或分配佇列425中一些項目,並在稍後,該程序儲存要由該等CTA處理的該資料在該等項目中。該程序可為產出者TMD 322,其產生要由對應於被製作者TMD 322寫入的佇列425的一用戶TMD 322處理的工作。一外部置入指標445指向至佇列425中要被分配的下一個可使用的項目,而一內部置入指標440指向至佇列425中已經被分配而尚未被寫入的該最舊項目。該等項目並不需要依照該等項目被分配的順序被寫入,所以在已被寫入的內部置入指標440與外部置入指標545之間可能會有其他項目的存在。
一外部取得指標430指向到儲存有已被指定給一CTA進行處理的資料之佇列425的最舊項目,即一CTA將處理已被啟始的資料,但該CTA尚未讀取該資料。一內部取得指標435指向至已被指定給一CTA進行處理的佇列425之最新的項目。包括在工作分配參數422中該級距大小S被用於在當該等M個CTA由任務管理單元300啟始時遞增內部取得指標435(或第四B圖的指標460)。已經被寫入到佇列525但尚未被指定給一CTA進行處理的資料被儲存在內部取得指標435和內部置入指標440之間該等項目中。已經被指定給一CTA進行處理而未讀取的資料被儲存在外部取得指標430和內部取得指標435之間。
任務工作分配
請回頭參照第四A圖,一佇列TMD的排程參數410亦可包含一合併等待時間參數,其設定一CTA被排程具有少於N個佇列項目之前任務管理單元300將要等待的時間長度。一或多個CTA具有少於N個佇列項目之啟始被稱之為一部份啟始。當該佇列幾乎為未佔用時即需要該合併等待時間參數,但存在不足數目的佇列項目,例如當該最後圖形基元簡併時。針對產出者-用戶佇列的案例亦需要該合併等待時間參數,藉以避免鎖死。
任務/工作單元207可設置成在一部份啟始之後重新對準(realign)佇列425的該等佇列項目讀取。重新對準可為一操作模式,其係經由在TMD 322中指定的工作分配參數來致能。假設重新對準被致能,每當一部份啟始發生時,一對準參數P被更新,以追蹤在一或多個連續部份啟始中所累積的佇列425之項目的數目。針對每一部份啟始P被增加包括在部份啟始中的項目之數目,而當P等於N時,該等讀取存取被重新對準,且P被重置為零。當P等於零時,任務/工作單元207將排程具有N個佇列項目的一或多個CTA(其假設一合併等待時間並未到期)。請注意任務/工作單元207設置成使得如果一部份啟始將使得P大於N時,在該部份啟始中該等項目的數目即減少,所以P將等於N。
基本上,任務/工作單元207藉由發出一或多次部份啟始來嘗試將外部取得指標430對準於儲存佇列425的該記憶體之一存取邊界,以針對下一個CTA啟始來重新對準佇列425的該第一項目。需要重新對準的一個理由為要讀取佇列425的該等N個項目之記憶體存取的效能在當該存取被對準至一記憶體邊界(例如一快取線)時可被最大化。讀取一單一快取線來得到該等N個項目會比讀取兩條快取線來得到該等N個項目要快。例如,當自佇列425讀取的該第一項目之該記憶體位址為N(或S)的一倍數時,該記憶體存取可由該記憶體子系統如何被實作的結果而被對準。
在一具體實施例中,該級距大小S在當一部份啟始發生時會被影響,其中包括在該部份啟始中該等項目的數目小於S,並被設定成S等於包括在該部份啟始中該等項目的數目。例如,如果N=10,S=5且當一部份啟始發生時在佇列425中有6個項目,一CTA被啟始具有該等6個項目,且指向至針對該下一個CTA啟始而要包括在該等N個項目中佇列425的該第一項目的指標460(或第四C圖所示的內部取得指標435)被增加S(5)。在該部份啟始之後,該等6個項目中一項目留在佇列425中。另一部份啟始發生,且另一CTA被啟始具有該一個項目,且S被設定為1,所以指標460增加1。在另一示例中,N=10和S=5,且當一部份啟始發生時在佇列425中有四個項目。一CTA被啟始具有該等四個項目,且S被設定為4,所以指標460被增加4而非5。
當一部份啟始發生時修改S可為一種操作模式(部份級距大小模式),其經由在TMD 322中指定的一工作分配參數來致能。因為其有可能啟始一組CTA具有小於該佇列中的N個項目,使得關聯於一特定CTA組合的有效資料元件的實際數目可由該CTA程式使用來經由一特殊暫存器做查詢。
第五圖例示根據本發明一具體實施例中一種用於控制針對任務處理的工作分配之方法500。雖然該等方法步驟係配合第一、二、三A、三B、四A、四B和四C圖之該等系統做說明,本技術專業人士將可瞭解到設置成以任何順序執行該等方法步驟的任何系統皆在本發明之範圍內。
在步驟501,一佇列TMD 322的佇列425之至少一項目被寫入。在步驟505,一佇列TMD 322的工作分配參數422被讀取。該等工作分配參數包括N,M和S。在步驟510,任務/工作單元207決定在佇列425中是否已經寫入足夠的項目來啟始一組M個CTA,即是否N-P或更多的項目在佇列425中。如果在步驟510中任務/工作單元207決定在佇列425中少於N-P個項目,則任務/工作單元207進行到步驟515,並決定是否已經經過該合併等待時間。如果在步驟515任務/工作單元207決定尚未經過該合併等待時間,則任務/工作單元207等待有更多的項目被寫入到佇列425,並返回到步驟510。
在TMD 322被分配之後項目可被寫入到佇列425,且當CTA針對TMD 322來執行時可寫入額外的項目到佇列425。當佇列425為一圓形佇列時,已經由一CTA讀取的項目可由另一TMD 322或由CPU 102經由前端單元212利用額外的佇列項目來覆寫。佇列425的寫入係與佇列425由該等CTA的讀取相脫鈎,並可與該讀取同時地發生。因此,方法500在每當佇列425的一項目針對一佇列TMD 322被寫入時即執行。
如果在步驟515任務/工作單元207決定已經經過該合併等待時間,則在步驟520,任務/工作單元207決定佇列425是否為未佔用。如果佇列425並非未佔用,則任務/工作單元207將啟始一部份CTA。在步驟522,任務/工作單元207可設置成基於一操作模式(部份級距大小模式)來修改S,並儲存包括在該部份啟始中有效資料元件的該實際數目在該特殊暫存器中。
在步驟535,任務/工作單元207排程TMD 322的一(部份或完整)啟始來處理在佇列425中可使用的小於N-P個項目。在步驟537,P藉由增加包括在該部份啟始中佇列項目的該數目來更新,然後如果P等於N時重置P為零。針對TMD 322的每一部份啟始更新P將佇列425中該等項目的存取重新對準於記憶體或快取線邊界來用於更有效率的記憶體讀取。否則,當佇列425為未佔用時,在步驟525,任務/工作單元207決定是否預期有佇列425的更多項目要被寫入。如果在步驟525任務/工作單元207決定針對TMD 322將不會再有佇列425的項目被寫入,則在步驟560中TMD 322的排程即完成。
如果在步驟525任務/工作單元207決定針對TMD 322佇列425中至少還有一個項目將被寫入,則在步驟530,任務/工作單元207重置TMD 322的該合併等待到時計數器(coalesce wait timeout counter)。當佇列425的一項目被寫入時,任務/工作單元207將回到步驟501。如果在步驟510,任務/工作單元207決定在佇列425中至少有N個項目可使用,以啟始一組M個CTA,則在步驟535,任務/工作單元207排程TMD 322來執行,以由一組M個CTA處理該等N個項目。
在步驟540,任務/工作單元207更新內部取得指標435該級距大小S。內部取得指標435針對該下一個CTA啟始而指向至佇列425中被包括在該等N個項目中的該第一項目。在步驟545,任務/工作單元207啟始M個CTA來處理佇列425的該等N個項目(當唯一部分啟始時該項目會少於N)。在步驟550,該等M個CTA讀取佇列425的該等N個(或較少的)項目。在步驟555,任務/工作單元207更新外部取得指標430該級距大小S。
工作分配參數422設置成根據在一多執行緒系統(例如PPU 202)中被執行的一運算任務而控制該工作分配來進行處理。編碼一運算任務的TMD 322包括工作分配參數422,且當該運算任務的一工作佇列425中一或多個項目已經被寫入時,排程電路讀取工作分配參數422。多個處理任務之每一者可與動態地產生要由一或多個用戶處理任務處理的工作之一製作者處理任務獨立地執行。該工作的分配可依據在該工作的處理開始之前需要多少工作、將要處理該工作的CTA數目、以及控制被分配給每一CTA的該工作佇列之該等特定項目之一級距大小。該分配機制可用於控制在多執行緒系統和資料流網路中工作的分配。
本發明一具體實施例可以實作成由一電腦系統使用的一程式產品。該程式產品的程式定義該等具體實施例的功能(包括此處所述的方法),並可包含在多種電腦可讀取儲存媒體上。例示性的電腦可讀取儲存媒體包括但不限於:(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...動態隨機存取記憶體
230...處理叢集陣列
300...任務管理單元
305...管線管理員
310...串流多處理器
315...紋路單元
321...排程器表
322...任務中介資料
325...預先掃描場化作業
328...記憶體管理單元
330...工作分配交叉開關
335...L1.5快取
340...工作分配單元
345...任務表
405...初始化參數
410...排程參數
415...執行參數
420...協同執行緒陣列狀態
422...工作分配參數
425...佇列
430...外部取得指標
435...內部取得指標
440...內部置入指標
445...外部置入指標
460...指標
所以,可以詳細瞭解本發明上述特徵之方式當中,本發明之一更為特定的說明簡述如上,其可藉由參照具體實施例來進行,其中一些例示於所附圖式中。但是應要注意到,該等附屬圖式僅例示本發明的典型具體實施例,因此其並非要做為本發明之範圍的限制,其可允許其它同等有效的具體實施例。
第一圖例示配置成實作本發明一或多種態樣之電腦系統的方塊圖;第二圖係根據本發明一具體實施例中第一圖之該電腦系統的一平行處理子系統的方塊圖;第三A圖係根據本發明一具體實施例中第二圖之任務/工作單元的方塊圖;第三B圖為根據本發明一具體實施例中第二圖之該等平行處理單元中之一者內一通用處理叢集的方塊圖;第四A圖係根據本發明一具體實施例中第三A圖之一TMD的該等內容之示意圖;第四B圖例示根據本發明一具體實施例中第四A圖的該佇列之項目;第四C圖例示根據本發明一具體實施例中指向至第四A圖的該佇列之項目的指標;以及第五圖例示根據本發明一具體實施例中一種用於控制針對任務處理的工作分配之方法。

Claims (10)

  1. 一種針對任務處理控制工作分配的方法,該方法包括:讀取包括在定義一第一處理任務的任務中介資料中的多個工作分配參數,其中該等工作分配參數控制該工作的分配來運算由一串流多處理器執行的執行緒陣列(CTA);基於該等工作分配參數決定儲存在一第一佇列之項目中該工作的一數量;回應於決定儲存在該第一佇列之項目中該工作的該數量,基於該等工作分配參數,啟始一組CTA來由該串流多處理器執行,以處理該數量的該工作;以及基於該等工作分配參數更新指向至要由下一組CTA處理的在該第一佇列中一第一項目的一指標。
  2. 如申請專利範圍第1項之方法,其中該等工作分配參數的一第一參數指定由該組CTA處理的該數量之該工作。
  3. 如申請專利範圍第2項之方法,進一步包含:決定在該第一佇列中一個數目的項目儲存有該工作的一第二數量,其係少於由該第一參數所指定的該工作的該數量;決定已經經過一合併等待時間;以及啟始該下一組CTA來由該串流多處理器執行以處理該第二數量之該工作。
  4. 如申請專利範圍第1項之方法,進一步包含決定該數量的該工作使得指向至在該第一佇列中該第一項目的該指標要被對準於一記憶體存取邊界。
  5. 一種針對任務處理控制工作分配的系統,該系統包括:一記憶體,其設置成儲存定義一第一處理任務和一第一佇列的任務中介資料;以及一任務/工作單元,其設置成:讀取包括在該任務中介資料中的多個工作分配參數,其中該等工作分配參數控制該工作的分配以運算由一串流 多處理器執行的執行緒陣列(CTA);基於該等工作分配參數決定儲存在該第一佇列之項目中該工作的一數量;回應於決定儲存在該第一佇列之項目中該工作的該數量,基於該等工作分配參數,啟始一組CTA來由該串流多處理器執行,以處理該數量的該工作;以及基於該等工作分配參數更新指向至要由下一組CTA處理的在該第一佇列中一第一項目的一指標。
  6. 如申請專利範圍第5項之系統,其中該等工作分配參數的一第一參數指定由該組CTA處理的該數量之該工作。
  7. 如申請專利範圍第6項之系統,其中該任務管理單元進一步設置成:決定在該第一佇列中一個數目的項目儲存有該工作的一第二數量,其係少於由該第一參數所指定的該數量;決定已經經過一合併等待時間;以及啟始該下一組CTA來由該串流多處理器執行以處理該第二數量之該工作。
  8. 如申請專利範圍第5項之系統,其中該等工作分配參數的一第二參數指定在該組CTA中一個數目的CTA。
  9. 如申請專利範圍第5項之系統,其中該等工作分配參數的一第三參數指定一級距大小,而藉著加入該級距大小至該指標用來更新該指標。
  10. 如申請專利範圍第5項之系統,其中該任務/工作單元進一步設置成決定該數量的該工作使得指向至在該第一佇列中該第一項目的該指標要被對準於該記憶體的一存取邊界。
TW102102673A 2012-01-31 2013-01-24 處理任務的工作分配控制 TWI533222B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/363,350 US9921873B2 (en) 2012-01-31 2012-01-31 Controlling work distribution for processing tasks

Publications (2)

Publication Number Publication Date
TW201351290A TW201351290A (zh) 2013-12-16
TWI533222B true TWI533222B (zh) 2016-05-11

Family

ID=48783919

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102102673A TWI533222B (zh) 2012-01-31 2013-01-24 處理任務的工作分配控制

Country Status (4)

Country Link
US (1) US9921873B2 (zh)
CN (1) CN103294536B (zh)
DE (1) DE102013201178A1 (zh)
TW (1) TWI533222B (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9747107B2 (en) * 2012-11-05 2017-08-29 Nvidia Corporation System and method for compiling or runtime executing a fork-join data parallel program with function calls on a single-instruction-multiple-thread processor
US9191299B1 (en) 2014-02-22 2015-11-17 Allscripts Software, Llc Task processing utilizing queues
US9558560B2 (en) 2014-03-14 2017-01-31 Intel Corporation Connected component labeling in graphics processors
US10243869B2 (en) * 2014-05-21 2019-03-26 Oracle International Corporation System and method for providing a distributed queue in a distributed data grid
US9754344B2 (en) 2014-06-27 2017-09-05 Samsung Electronics Co., Ltd. Forward late predictive rendering in a graphics system
CN104182183B (zh) * 2014-08-19 2017-03-15 中国航天科技集团公司第九研究院第七七一研究所 一种基于帧数据串行传输的帧数据接收方法
US10169105B2 (en) * 2015-07-30 2019-01-01 Qualcomm Incorporated Method for simplified task-based runtime for efficient parallel computing
US10084855B2 (en) 2017-01-23 2018-09-25 Akamai Technologies, Inc. Pixel-based load balancing
US10310896B1 (en) * 2018-03-15 2019-06-04 Sas Institute Inc. Techniques for job flow processing
CN110275918A (zh) * 2019-06-17 2019-09-24 浙江百应科技有限公司 一种百万级别excel数据快速平稳导入系统
CN112965829B (zh) * 2021-02-22 2023-08-11 电子科技大学 一种在并行任务分组调度下使用锁协议的方法
US20230289211A1 (en) 2022-03-10 2023-09-14 Nvidia Corporation Techniques for Scalable Load Balancing of Thread Groups in a Processor

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7472258B2 (en) 2003-04-21 2008-12-30 International Business Machines Corporation Dynamically shared group completion table between multiple threads
US7765549B1 (en) * 2004-06-30 2010-07-27 Affiliated Computer Services, Inc. Distributing batches of items in a workflow
JP2007034392A (ja) 2005-07-22 2007-02-08 Nec Electronics Corp 情報処理装置及びデータ処理方法
US7594095B1 (en) * 2005-11-29 2009-09-22 Nvidia Corporation Multithreaded SIMD parallel processor with launching of groups of threads
US7861060B1 (en) * 2005-12-15 2010-12-28 Nvidia Corporation Parallel data processing systems and methods using cooperative thread arrays and thread identifier values to determine processing behavior
US7526634B1 (en) * 2005-12-19 2009-04-28 Nvidia Corporation Counter-based delay of dependent thread group execution
CN101165655A (zh) 2006-10-20 2008-04-23 国际商业机器公司 多处理器计算系统及其任务分配方法
US7787454B1 (en) 2007-10-31 2010-08-31 Gigamon Llc. Creating and/or managing meta-data for data storage devices using a packet switch appliance
US8336056B1 (en) * 2009-12-22 2012-12-18 Gadir Omar M A Multi-threaded system for data management

Also Published As

Publication number Publication date
US20130198759A1 (en) 2013-08-01
US9921873B2 (en) 2018-03-20
DE102013201178A1 (de) 2013-08-01
TW201351290A (zh) 2013-12-16
CN103294536B (zh) 2017-06-16
CN103294536A (zh) 2013-09-11

Similar Documents

Publication Publication Date Title
TWI533222B (zh) 處理任務的工作分配控制
TWI619075B (zh) 自動依附任務啟始
TWI490782B (zh) 來源運算元收集器快取的方法和裝置
US9436504B2 (en) Techniques for managing the execution order of multiple nested tasks executing on a parallel processor
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
TWI624791B (zh) 用於在多緒處理單元中改善性能之技術
US8904068B2 (en) Virtual memory structure for coprocessors having memory allocation limitations
TWI493451B (zh) 使用預解碼資料進行指令排程的方法和裝置
TWI490779B (zh) 無鎖的先進先出裝置
US9710306B2 (en) Methods and apparatus for auto-throttling encapsulated compute tasks
US8984183B2 (en) Signaling, ordering, and execution of dynamically generated tasks in a processing system
US9069609B2 (en) Scheduling and execution of compute tasks
TWI501150B (zh) 無指令解碼而排程指令的方法和裝置
TWI503750B (zh) 運算任務狀態的封裝
TWI489392B (zh) 多個應用程式分享的圖形處理單元
TW201351277A (zh) 平行執行緒子集合的均衡載入處理
TW201333829A (zh) 分配運算工作的參考運數器
TW201337829A (zh) 暫存器檔案型讀取
US9798544B2 (en) Reordering buffer for memory access locality
US9715413B2 (en) Execution state analysis for assigning tasks to streaming multiprocessors
US9489245B2 (en) Work-queue-based graphics processing unit work creation
US9135081B2 (en) Work-queue-based graphics processing unit work creation
TWI501156B (zh) 多頻時間切面組
TW201351276A (zh) 計算工作的排程和執行
US10235208B2 (en) Technique for saving and restoring thread group operating state

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees