TW201346759A - 自動依附任務啟始 - Google Patents

自動依附任務啟始 Download PDF

Info

Publication number
TW201346759A
TW201346759A TW102102676A TW102102676A TW201346759A TW 201346759 A TW201346759 A TW 201346759A TW 102102676 A TW102102676 A TW 102102676A TW 102102676 A TW102102676 A TW 102102676A TW 201346759 A TW201346759 A TW 201346759A
Authority
TW
Taiwan
Prior art keywords
task
tmd
attached
processing
execution
Prior art date
Application number
TW102102676A
Other languages
English (en)
Other versions
TWI619075B (zh
Inventor
Philip Alexander Cuadra
Lacky V Shah
Timothy John Purcell
Gerald F Luiz
Jr Jerome F Duluk
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 TW201346759A publication Critical patent/TW201346759A/zh
Application granted granted Critical
Publication of TWI619075B publication Critical patent/TWI619075B/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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本發明一具體實施例提出一種用於當一第一任務的執行完成時自動地啟始一依附任務的技術。自動地啟始該依附任務可降低由該第一任務轉換到該依附任務期間所引致的該潛時。關聯於該依附任務的資訊被編碼成該第一任務之中介資料的一部份。當該第一任務的執行完成時,一任務排程單元被通知,且該依附任務被啟始,其並不需要一信號標的任何釋放或取得。關聯於該依附任務的該資訊包括一致能旗標和指向至該依附任務的一指標。一旦該依附任務被啟始,該第一任務被標示為完成,所以儲存該第一任務的該中介資料的記憶體可被重新使用來儲存一新任務的中介資料。

Description

自動依附任務啟始
本發明概略關於程式執行,尤指當一第一任務的執行完成時一依附任務的自動啟始。
一依附任務的執行基本上需要透過使用信號標進行協調,其中一第一任務釋放一信號標,其由該依附任務接著取得。該等信號標的使用可確保該第一任務的執行在該依附任務的執行開始之前完成。因為該依附任務係依據由該第一任務所計算的數值或資料,該依附任務必須等待直到該第一任務的執行完成為止。
釋放和取得該信號標係透過記憶體讀取和寫入來執行。該第一任務寫入記憶體來釋放該信號標,且該依附任務讀取該記憶體來取得該信號標。一旦該信號標被該依附任務取得,該依附任務即被輸入到該處理器,然後即可啟始該依附任務的執行。該等信號標釋放和取得交易造成在當該第一任務的執行完成與該依附任務的執行可以開始之間的大量潛時,例如時脈循環的數目。該等信號標釋放和取得作業亦必須有一個記憶體寫入且基本上有數個記憶體讀取。該等記憶體寫入和讀取會耗用記憶體頻寬,並在當該可使用記憶體頻寬有限時降低了處理的效能。
因此,本技術需要一種系統和方法來改善多執行緒的執行期間依附任務的啟始。特別是其需要降低於一第一任務的執行到當該第一任務的執行完成時一依附任務的執行之間轉換所引致的該潛時。
一種用於在當一第一任務的執行完成時自動啟始一依附任務的系統和方法可降低於由該第一任務轉換到該依附任務期間所引致的該潛時。關聯於該依附任務的資訊被編碼成該第一任務之中介資料的一部份。當該第一任務的執行完成時,一任務排程單元被通知,且該依附任務被啟始,其並不需要一信號標的任何釋放或取得。關聯於該依附任務的該資訊包括一致能旗標和指向至該依附任務的一指標。一旦該依附任務被啟始,該第一任務被標示為完成,所以儲存該第一任務的該中介資料的記憶體可被重新使用來儲存一新任務的中介資料。
本發明之一種用於自動啟使一依附任務的方法之多種具體實施例包括在一多執行緒系統中接收一第一處理任務已經完成執行的一通知。儲存在編碼該第一處理任務的第一任務中介資料中的一依附任務致能旗標被讀取。該依附任務致能旗標於該第一處理任務的執行之前被寫入。當該第一處理任務的執行完成時,指明一依附任務必須被執行的該依附任務致能旗標被決定要設定,且該依附任務被排程來在該多執行緒系統中執行。
本發明之多種具體實施例包括一種設置成自動地啟始一依附任務的多執行緒系統。該多執行緒系統包含一設置成儲存編碼一第一處理任務的第一任務中介資料的記憶體、一通用處理叢集、和一耦合至該通用處理叢集的任務管理單元。該通用處理叢集設置成執行該第一處理任務,並在當該第一處理任務的執行完成時產生一通知。該任務管理單元設置成接收該第一處理任務已經完成執行的該通知、讀取儲存在該第一任務中介資料中的一依附任務致能旗標,其中該依附任務致能旗標於該第一處理任務的執行之前被寫入,決定該依附任務致能旗標指明一依附任務在當該第一處理任務的執行完成時必須被執行,以及排程該依附任務來由該通用處理叢集執行。
該依附任務的執行在當該第一任務完成執行時被自動地 啟始,相較於使用一信號標,可降低由該第一任務轉換到該依附任務期間所引致的該潛時。在當該第一任務被編碼時,該第一任務包括關聯於該依附任務的資訊。因此,該資訊為已知,並可在當該第一任務被執行時來使用。此外,該依附任務可包括關聯於一第二依附任務的資訊,其將在該依附任務的執行之後被自動地執行。
在以下的說明中,會提供許多特定細節來對本發明有更為完整的瞭解。然而,對熟知本技術之專業人士將可瞭解到本發明可不利用一或多個這些特定細節來實施。在其它實例中,並未說明習知特徵以避免混淆本發明。
系統概述
第一圖係用於安裝執行本發明之單一或多種態樣之一電腦系統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的主控處理器,其控制及協調PPU 202或其它系統組件的作業。在一些具體實施例中,CPU 102對每一PPU 202寫入一命令串流至一資料結構 (未明確示於第一圖或第二圖中),其可位於系統記憶體104、平行處理記憶體204或可同時由CPU 102與PPU 202存取的其它儲存位置。指向至每一資料結構的一指標被寫入至一推入緩衝器來啟始在該資料結構中該命令串流之處理。PPU 202自至少一個推入緩衝器讀取命令串流,然後相對於CPU 102的該作業非同步地執行命令。執行優先性可針對每一推入緩衝器來指定,以控制該等不同推入緩衝器的排程。
現在請回頭參照第二B圖,每個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,其中C≧1。每一GPC 208能夠同時執行大量(例如數百或數千)的執行緒,其中每個執行緒為一程式的一實例。在多種應用中,不同的GPC 208可分配來處理不同種類的程式,或執行不同種類的運算。GPC 208的分配可根據每種程式或運算所提升的工作負荷而改變。
GPC 208由一任務/工作單元207內的一工作分配單元接收要被執行的處理任務。該工作分配單元接收指標來運算被編碼成任務中介資料(TMD)且儲存在記憶體中的處理任務。該等指向至TMD的任務指標被包括在儲存成一推入緩衝器且由前端單元212自主控介面206接收的該命令串流中。可被編碼成TMD的處理任務包括要被處理之資料的索引,以及定義了該資料要如何被處理的狀態參數和命令(例如那一個程式要被執行)。任務/工作單元207自前端212接收任務,並確保GPC 208在由該等TMD之每一者所指定的該處理啟始之前被設置成一有效狀態。一優先性可針對用於排程該處理任務之執行的每一TMD來指定。處理任務亦可自處理叢集陣列230接收。視需要,該TMD可包括一參數,其控制該TMD是否要被加入該鏈結清單的頭部或尾部,藉此提供在優先性之上的另一控制層級。
記憶體介面214包括數目為D的區隔單元215,其每一記憶體介面214被直接耦合至平行處理記憶體204的一部份,其中D≧1。如圖所示,區隔單元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可被程式化來執行關於許多種應用之處理工作,其中包括但不限於線性及非線性資料轉換、影片及/或聲音資料的過濾、模型化作業(例如應用物理定律來決定物體的位置、速度及其它屬性)、影像顯像作業(例如鑲嵌遮影器、頂點遮影器、幾何遮影器及/或像素遮影器程式)等等。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執行。任務/工作單元207亦設置成當指定該特定依附任務的一處理任務已經完成執行時自動地排程依附任務來執行。依附任務與子任務不同之處在於該等依附任務並非在一母處理任務的執行期間所產生。而是,一依附任務在當該母任務(例如指定該依附任務的任務)被定義時所定義,因此為已知,並可在當該母任務開始執行時來使用。
第三A圖係根據本發明之一具體實施例中第二圖之任務/工作單元207的方塊圖。任務/工作單元207包括一任務管理單元300和工作分配單元340。任務管理單元300基於執行優先性 程度系統化要被排程的任務。針對每一優先性程度,任務管理單元300儲存一任務指標清單至對應於在排程器表321中該等任務的該等TMD 322,其中該清單可利用一鏈接串列來執行,以下皆假設為一鏈接串列。該等TMD 322為代表一任務的中介資料,例如執行該任務所需要的組態資料和狀態資訊。TMD快取350儲存一或多個TMD 322的至少一部份。儲存在TMD快取350中的TMD 322可以儲存在PP記憶體204或系統記憶體104中,其連同有部份亦未儲存在TMD快取350中的其它TMD。任務管理單元300接受任務和儲存該等任務在排程器表321中的速率與任務管理單元300排程任務進行執行的速率無關,使得任務管理單元300可基於優先性資訊或使用其它技術來排程任務。
工作分配單元340包括一任務表345,其係具有位置,而每一位置可由將要被執行的一任務之TMD 322佔用。任務管理單元300在當任務表345中有空的位置時即可排程任務來執行。當沒有空位置時,由不會佔用一位置的一較高優先性的任務可以逐出佔用一空位的一較低優先性的任務。當一任務被逐出時,該任務即停止,且如果該任務的執行並未完成,該任務被加入到排程器表321中一鏈接串列。當一子處理任務被產生時,該子任務被加入到排程器表321中一鏈接串列。同樣地,當一依附任務的執行被啟始時,該依附任務被加入到排程表321中該鏈接串列。一任務在當該任務被逐出時自一位置被移除。
每一TMD 322可為一大結構,例如256位元組或更多,其係儲存在PP記憶體204中。由於是大結構,TMD 322對於頻寬而言要存取是很昂貴。因此,TMD快取350僅儲存任務管理單元300在當一任務被啟始時進行排程所需要的TMD 322的該部份(相對較小)。TMD 322的其餘部份在當該任務被排程時由PP記憶體204提取,即轉移至工作分配單元340。
TMD 322在軟體控制之下被寫入,且當一運算任務完成執行時,關聯於該已完成的運算任務之TMD可被再利用來儲存一不同運算任務的資訊。因為一TMD 322可被儲存在TMD快取350中,儲存該已完成運算任務的資訊之該等項目必須自TMD快取350清除。因為該新運算任務之資訊的寫入與由於該清除造成儲存在TMD快取350中的資訊被寫回至TMD 322相脫離,該清除作業較複雜。特別是,該新任務的資訊被寫入至TMD 322,然後TMD 322被輸出至做為一推入緩衝器之一部份的前端212。因此,該軟體並不接收TMD快取已經被清除的一確認,所以TMD 322的寫入可被延遲來確認該新任務的資訊於該清除期間並未被覆寫。因為該清除之該快取寫回可以針對該新任務覆寫儲存在TMD 322中的資訊,每一TMD 322的一「僅有硬體」部份被留下僅可由任務管理單元300存取。TMD 322的其餘部份可由軟體和任務管理單元300存取。TMD 322可由軟體存取的該部份基本上由軟體填入來啟始一任務。然後TMD 322於該任務的排程和執行期間由任務管理單元300和GPC 208中的其它處理單元存取。當一新運算任務的資訊被寫入至一TMD 322時,啟動TMD 322的該命令可指定是否要在第一次TMD 322被載入到TMD快取350時複製位元到TMD 322之僅有硬體部份當中。此可確保TMD 322將正確地僅儲存該新運算任務的資訊,因為該已完成的運算任務之任何資訊已經僅儲存在該TMD的該僅有硬體部份中。
當一TMD 322包括一依附TMD的資訊時,該依附TMD在當TMD 322的執行完成時被自動地啟始。該依附TMD的資訊包括一旗標,其指明當該TMD被載入到TMD快取350中且被啟始時,位元是否必須被複製到該依附TMD的該僅有硬體部份。
任務處理概述
第三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獨立地運作,其使用獨立及不同的處理單元、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儲存TMD 322的該僅有硬體部份,其中包含至少一個僅有硬體的參數。所有TMD 322共通的狀態並未包括在每一TMD 322中。因為一TMD 322為儲存在PP記憶體204中的一資料結構,在CPU 102或PPU 112上運行的一運算程式能夠在記憶體中產生一TMD 322結構,然後藉由傳送指向至TMD 322的一任務指標給任務/工作單元207來遞送TMD 322做執行。
初始化參數405用於當TMD 322被啟始時設置GPC 208,且可包括佇列425的該開始程式位址和大小。請注意到佇列425 可與TMD 322隔開地儲存在記憶體中,其中TMD 322包括指向至佇列425的一指標(佇列指標)來取代實際佇列425。
初始化參數405亦可包括位元來指明當TMD 322被啟始時,多種快取,像是一紋路標頭快取、一紋路取樣器快取、一紋路資料快取、資料快取、常數快取及類似者,皆為失效。初始化參數405亦可包括在執行緒中一CTA的維度、一TMD版本號碼、一指令集版本號碼、一網格之CTA寬度、高度和深度為項目的維度、記憶庫映射參數、由一應用程式所看到的一呼叫堆疊的深度、及該TMD 322的該呼叫-返回堆疊的大小。
排程參數410控制任務/工作單元207如何排程TMD 322來執行。排程參數410可包括一位元來指明TMD 322是否為一佇列TMD或一網格TMD。如果TMD 322為一網格TMD,則TMD 322之允許在TMD 322啟始之後佇列有額外的資料的該佇列特徵不會被使用到,且TMD 322的執行使得固定數目的CTA被啟始及執行來處理該固定數量的資料。該等CTA的數目被指定為該網格寬度、高度和深度的乘積。佇列425利用指向到將要由執行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,其中CTA的數目係根據被寫入到該佇列TMD的佇列425之項目的數目。一佇列TMD的排程參數410亦包括由每一CTA處理的佇列425之項目的數目(N)。當N個項目被加入至佇列425時,針對TMD 322啟始一CTA。任務/工作單元207可以建構一程序的導引路徑,其中每一程序為具有一佇列的一TMD 322。要針對每一TMD 322執行的CTA數目可基於每一TMD 322的N之數值及已經被寫入到佇列425中的項目之數目來決定。
一佇列TMD的排程參數410亦可包含一合併等待時間參數,其設定為一CTA利用少於N個佇列項目運作之前要等待的時間長度。當該佇列幾乎是空白但存在不足數目的佇列項目時,即需要該合併等待時間參數,其在當該執行的期間該等佇列項目之總數並未平等地除以N時將增加。針對該製造者-使用者佇列案例亦需要該合併等待時間參數,藉以避免閉鎖。針對一CTA在執行時具有少於N個項目之案例,佇列項目的數目被當作一參數被傳送至該TMD的程式,所以該等項目的數目可在執行時間被考慮到。
其它的具體實施例針對一網格TMD和一佇列TMD具有不同的結構,或實作網格TMD或佇列TMD。TMD 322的排程參數410可以包括一位元來指明排程該從屬TMD是否亦使得TMD欄位被複製到僅有硬體欄位422。排程參數410亦可包括該TMD群組ID、一位元來指明TMD 322是否被加入到一鏈接串列(頭端或尾端)、及至該TMD群組中下一個TMD 322的一指標。排程參數410亦可包括致能/除能GPC 208內特定串流多處理器的遮罩。
一TMD 322可包括指向至當該TMD 322完成時被自動啟始的一依附TMD的任務指標。依附TMD欄位424包括一致能旗標,其被設定時即指明該依附TMD在當原始TMD 322的執行完成時必須被啟始來執行。至該依附TMD的該任務指標亦 被儲存在依附TMD欄位424中。在一具體實施例中,該任務指標為一虛擬位址的最高有效位元之數目,例如該依附TMD的一40位元虛擬位址的32位元。依附TMD欄位424亦可儲存該依附TMD的TMD種類之指明,例如網格或佇列TMD。最後,該依附TMD欄位亦可包括一旗標,其指明當該依附TMD被啟始(或被載入到TMD快取350中)時資料必須被複製到該依附TMD的該僅有硬體欄位。
使用一依附TMD來在一原始TMD 322的執行完成之後自動地啟始一任務之好處係因為當原始TMD 322的該執行完成與當該依附TMD開始執行之間的該潛時較低。另外,信號標可由TMD 322執行來確保該等不同TMD 322和CPU 102之間的依附性可符合。
例如,一第二TMD 322的執行可以依據一第一TMD的完成,所以第一TMD產生一信號標釋放,且第二TMD 322在該相對應信號標取得成功之後才執行。在一些具體實施例中,該信號標取得係在主控介面206或前端212中執行。一TMD 322的執行參數415可以儲存複數信號標釋放,其中包括記憶體阻障的型式、在記憶體中該信號標資料結構的位址、該信號標資料結構的大小、有效負載、及一減法運算的致能、型式和格式。該信號標的資料結構可被儲存在執行參數415中,或可儲存在TMD 322之外。但是,執行該等信號標作業而取代使用一依附TMD來確保兩個TMD 322被序列地執行會造成自第一TMD 322轉換到第二TMD 322時有較高的潛時。
自動依附任務啟始
第四B圖係根據本發明一具體實施例的一原始任務450和兩個依附任務460和470示意圖。原始任務450由任務/工作單元207經由前端212接收,並被包括在一推入緩衝器中。如前所述,一TMD 322封裝一處理任務的該中介資料,其中包括網格維度。該網格維度(n,m),其中n和m為整數,用於指定要 被執行來處理該任務的CTA數目。例如,網格維度1,1指定一單一CTA,而網格維度2,1或1,2指定兩個CTA。網格可具有兩個以上的維度,且所有維度大小被指定在TMD 322中,假設TMD 322為一網格TMD。
原始任務450為一網格TMD,其指定一網格(2,2),所以四個CTA將執行由原始任務450所指定的該資料和程式。在原始任務450中該依附TMD欄位包括一依附TMD致能451、一依附TMD指標452、和一TMD欄位複製致能453。依附TMD致能451被設定為真,其指明依附任務460在當原始任務450的執行完成時必須被啟始。依附TMD指標452指向至依附任務460,且TMD欄位複製致能453亦被設定為真,以指明依附TMD資料必須被複製到依附任務460的該僅為硬體區域。
依附任務460亦為一網格TMD,但不像是原始任務450,依附任務460指定一網格(1,1),所以僅有一個CTA將執行由依附任務460所指定的該資料和程式。在依附任務460中該依附TMD欄位包括一依附TMD致能461、一依附TMD指標462、和一TMD欄位複製致能463。依附TMD致能461被設定為真,其指明依附任務470在當依附任務460的執行完成時應被啟始。依附TMD指標462指向至依附任務470,且TMD欄位複製致能463被設定為假,以指明並無依附TMD資料應被複製到依附任務470的該僅為硬體區域。
依附任務470為一佇列TMD。在依附任務470中該依附TMD欄位包括一依附TMD致能471、一依附TMD指標472、和一TMD欄位複製致能473。依附TMD致能471被設定為假,指明當依附任務470的執行完成時並無依附任務應被啟始。因為依附TMD致能471為假,依附TMD指標462和TMD欄位複製致能463被忽略。
與在一推入緩衝器中被指定的原始任務450不同,依附任務460和470不會出現在該推入緩衝器中。而是,編碼依附任務 460和470的TMD在編碼原始任務450的TMD 322被執行之前被寫入到記憶體,且執行依附任務460和470的資訊被分別地編碼在原始任務450和依附任務460的該等依附TMD欄位中。
依附任務460和470可用於執行批次式的處理功能,該些處理功能並不需要或不應由執行原始任務450的一CTA之每一執行緒所執行。特別是,當原始任務450由四個CTA執行時,依附任務460僅由一單一CTA執行。依附任務460相對於原始任務450的執行頻率可藉由指定該等個別TMD之相對網格大小來控制。在一具體實施例中,依附任務460或470可設置成執行記憶體重組、記憶體配置或記憶體解除配置作業。在另一具體實施例中,依附任務460或470可為設置成具有一高優先性程度的一排程器任務。一次僅執行一單一排程器CTA,且該排程器任務負責決定何時一網格已經完成執行,並負責啟始後續任務的開始。
第五圖係根據本發明一具體實施例之自動啟始一依附任務的方法500示意圖。雖然該等方法步驟係配合第一、二、三A和三B圖之該等系統做說明,熟知本技術專業人士將可瞭解到設置成以任何順序執行該等方法步驟的任何系統皆在本發明之範圍內。
在步驟506,來自處理叢集陣列230的一通知,其為被編碼成一TMD 322的一第一處理任務已經完成執行,由任務管理單元300接收。在步驟510,任務管理單元300讀取被儲存在該第一任務的任務中介資料中的該依附任務致能旗標。重要地是,該依附任務致能旗標和編碼該依附任務的TMD 322於該第一任務的執行之前被編碼,且該依附任務未被指定在一推入緩衝器中。
在步驟515,任務管理單元300決定該依附任務致能旗標是否指明當該第一任務的執行完成時必須執行一依附任務,即該依附TMD致能是否被設定為真。如果在步驟515中一依附任 務未被致能,則在步驟520該原始TMD被辨識為完成。否則,在步驟525,任務管理單元300決定該依附任務的TMD資料是否必須被複製到該依附TMD的一僅有硬體區域,即當該TMD欄位複製致能被設定為真時。
如果在步驟525任務管理單元300決定該TMD欄位複製致能被設定為真,則在步驟530中於進行到步驟535之前,任務管理單元300由並非僅有硬體的該依附TMD之該部份複製該等位元到儲存該依附TMD的該僅有硬體部份的該項目之該部份。將該等位元自非僅有硬體的該依附TMD的該部份複製到儲存該僅有硬體之該項目的該部份可確保任務管理單元300能夠存取到任務管理單元300所需要的TMD 322之欄位。
如果在步驟525中任務管理單元300決定該TMD欄位複製致能被設定為假,則在步驟540中任務管理單元300辨識該原始TMD為已經完成執行。在步驟545,任務管理單元300藉由加入該依附TMD至排程器表321來啟始編碼該依附任務來由處理叢集陣列230執行的該依附TMD。
因為該依附任務在當該原始任務完成執行時被自動地啟始來執行,相較於使用一信號標,可降低由該原始任務轉換到該依附任務期間所引致的該潛時。在當該原始任務被編碼時,該原始任務包括關聯於該依附任務的資訊。因此,該資訊為已知,並可在當該原始任務被執行時來使用。此外,該依附任務可包括關聯於一第二依附任務的資訊,其將在該依附任務的執行之後被自動地執行。因此,多個處理任務的執行可被有效率地完成。此外,該依附任務相對於該原始任務之執行頻率可受到控制,所以該依附任務在當該原始任務由多個CTA執行時僅由一單一CTA執行。相反地,當該原始任務僅由一單一CTA執行時,該依附任務僅由多個CTA執行。
本發明一具體實施例可以實作成由一電腦系統使用的一程式產品。該程式產品的程式定義該等具體實施例的功能(包 括此處所述的方法),並可包含在多種電腦可讀取儲存媒體上。例示性的電腦可讀取儲存媒體包括但不限於:(i)不可寫入儲存媒體(例如在一電腦內唯讀記憶體裝置,例如可由CD-ROM讀取的CD-ROM碟片,快閃記憶體,ROM晶片,或任何其它種類的固態非揮發性半導體記憶體),其上可永久儲存資訊;及(ii)可寫入儲存媒體(例如在一磁碟機內的軟碟片、或硬碟機、或任何種類的固態隨機存取半導體記憶體),其上可儲存可改變的資訊。
本發明已經參照特定具體實施例在以上進行說明。但是本技術專業人士將可瞭解到在不背離附屬申請專利範圍所提出之本發明的廣義精神與範圍之下可對其進行多種修正與改變。因此前述的說明及圖面係在以例示性而非限制性的角度來看待。
100‧‧‧電腦系統
102‧‧‧中央處理單元
103‧‧‧裝置驅動器
104‧‧‧系統記憶體
105‧‧‧記憶體橋接器
106‧‧‧通訊路徑
107‧‧‧輸入/輸出橋接器
108‧‧‧輸入裝置
110‧‧‧顯示器
112‧‧‧平行處理子系統
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‧‧‧任務表
350‧‧‧TMD快取
405‧‧‧初始化參數
410‧‧‧排程參數
415‧‧‧執行參數
420‧‧‧協同執行緒陣列狀態
422‧‧‧僅有硬體欄位
424‧‧‧依附TMD欄位
425‧‧‧佇列
450‧‧‧原始任務
451‧‧‧依附任務TMD致能
452‧‧‧依附任務TMD指標
453‧‧‧TMD欄位複製致能
460‧‧‧依附任務
461‧‧‧依附任務TMD致能
462‧‧‧依附任務TMD指標
463‧‧‧TMD欄位複製
470‧‧‧依附任務
471‧‧‧依附任務TMD致能
472‧‧‧依附任務TMD指標
473‧‧‧TMD欄位複製
所以,可以詳細瞭解本發明上述特徵之方式當中,本發明之一更為特定的說明簡述如上,其可藉由參照具體實施例來進行,其中一些例示於所附圖式中。但是應要注意到,該等附屬圖式僅例示本發明的典型具體實施例,因此其並非要做為本發明之範圍的限制,其可允許其它同等有效的具體實施例。
第一圖用於安裝執行本發明之單一或多種態樣之電腦系統方塊圖;第二圖係根據本發明之一具體實施例之一平行處理子系統方塊圖;第三A圖係根據本發明之一具體實施例中第二圖之任務/工作單元的方塊圖;第三B圖為根據本發明一具體實施例中第二圖之該等平行處理單元中之一通用處理叢集的方塊圖; 第四A圖係根據本發明一具體實施例中第三A圖之一TMD的該等內容之示意圖;第四B圖例示根據本發明一具體實施例的一原始任務和兩個依附任務;以及第五圖例示根據本發明一具體實施例之自動啟始一依附任務的方法。
450‧‧‧原始任務
451‧‧‧依附任務TMD致能
452‧‧‧依附任務TMD指標
453‧‧‧TMD欄位複製致能
460‧‧‧依附任務
461‧‧‧依附任務TMD致能
462‧‧‧依附任務TMD指標
463‧‧‧TMD欄位複製
470‧‧‧依附任務
471‧‧‧依附任務TMD致能
472‧‧‧依附任務TMD指標
473‧‧‧TMD欄位複製

Claims (10)

  1. 一種自動啟始一依附任務的方法,該方法包括:接收在一多執行緒系統中一第一處理任務已經完成執行的一通知;讀取儲存於編碼該第一處理任務的第一任務中介資料中一依附任務致能旗標,其中,該依附任務致能旗標在該第一處理任務的執行之前被寫入;決定該依附任務致能旗標指明一依附任務應該在當該第一處理任務的執行完成時被執行;以及排程該依附任務在該多執行緒系統中執行。
  2. 如申請專利範圍第1項之方法,更包含讀取至編碼該依附任務的依附任務中介資料的一指標。
  3. 一種設置成自動地啟始一依附任務的多執行緒系統,包含:一記憶體,設置於儲存編碼一第一處理任務的第一任務中介資料;一通用處理叢集,設置於執行該第一處理任務,並在當該第一處理任務的執行完成時產生一通知;一任務管理單元,耦合至該通用處理叢集,且設置成:接收該第一處理任務已經完成執行的該通知;讀取儲存在編碼該第一任務中介資料中一依附任務致能旗標,其中該依附任務致能旗標在執行該第一處理任務之前被寫入;決定該依附任務致能旗標指明一依附任務應該在當該第一處理任務的執行完成時被執行;以及排程該依附任務由該通用處理叢集來執行。
  4. 如申請專利範圍第3項之多執行緒系統,其中,該任務管理單元更設置成讀取至儲存在編碼該依附任務的該記憶體中依附任務中介資料的一指標。
  5. 如申請專利範圍第4項之多執行緒系統,其中至該依附任務中介資料的該指標被包括在該第一任務中介資料中。
  6. 如申請專利範圍第4項之多執行緒系統,其中該任務管理單元進一步設置成決定是否已致能一複製到該依附任務中介資料的一僅有硬體區域。
  7. 如申請專利範圍第6項之多執行緒系統,其中該任務管理單元進一步設置成當該複製到該依附任務中介資料的該僅有硬體區域被致能時複製在該依附任務中介資料的一第一區域中的資料到該依附任務中介資料的一僅有硬體區域。
  8. 如申請專利範圍第4項之多執行緒系統,其中該任務管理單元進一步設置成在讀取該指標之後辨識該第一處理任務為已經完成。
  9. 如申請專利範圍第3項之多執行緒系統,其中該依附任務的一任務型式被包括在該第一任務中介資料中。
  10. 如申請專利範圍第3項之多執行緒系統,其中編碼該依附任務的依附任務中介資料指明該依附任務指定一第二依附任務。
TW102102676A 2012-01-27 2013-01-24 自動依附任務啟始 TWI619075B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/360,581 US20130198760A1 (en) 2012-01-27 2012-01-27 Automatic dependent task launch
US13/360,581 2012-01-27

Publications (2)

Publication Number Publication Date
TW201346759A true TW201346759A (zh) 2013-11-16
TWI619075B TWI619075B (zh) 2018-03-21

Family

ID=48783899

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102102676A TWI619075B (zh) 2012-01-27 2013-01-24 自動依附任務啟始

Country Status (4)

Country Link
US (1) US20130198760A1 (zh)
CN (1) CN103226481A (zh)
DE (1) DE102013200991A1 (zh)
TW (1) TWI619075B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI777695B (zh) * 2021-07-28 2022-09-11 新加坡商鴻運科股份有限公司 自動化任務排程方法、電子設備及儲存介質

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8910179B2 (en) * 2012-05-15 2014-12-09 Freescale Semiconductor, Inc. Systems and methods for providing semaphore-based protection of system resources
US20140143779A1 (en) * 2012-11-19 2014-05-22 Raytheon Company Contextual routing of data elements
US9286106B1 (en) * 2013-04-16 2016-03-15 Ca, Inc. Scheduling periodic tasks with dependencies and determining improper loop dependencies between tasks placed in a waiting tasks set and in a unfinished dependent tasks set
US9329937B1 (en) * 2013-12-31 2016-05-03 Google Inc. High availability architecture
US9483264B2 (en) * 2014-05-09 2016-11-01 Samsung Electronics Co., Ltd. Trace-based instruction execution processing
US9727341B2 (en) 2014-05-09 2017-08-08 Samsung Electronics Co., Ltd. Control flow in a thread-based environment without branching
EP2962192B1 (en) * 2014-05-09 2017-12-06 Huawei Technologies Co., Ltd. System and method thereof to optimize boot time of computers having multiple cpus
US9256477B2 (en) * 2014-05-29 2016-02-09 Netapp, Inc. Lockless waterfall thread communication
US9304702B2 (en) 2014-05-29 2016-04-05 Netapp, Inc. System and method for parallelized performance data collection in a computing system
US9477521B2 (en) 2014-05-29 2016-10-25 Netapp, Inc. Method and system for scheduling repetitive tasks in O(1)
US9754344B2 (en) 2014-06-27 2017-09-05 Samsung Electronics Co., Ltd. Forward late predictive rendering in a graphics system
US11356340B2 (en) 2014-09-29 2022-06-07 Hewlett Packard Enterprise Development Lp Provisioning a service
CN104795072A (zh) * 2015-03-25 2015-07-22 无锡天脉聚源传媒科技有限公司 一种音频数据的编码方法及装置
GB2540970B (en) * 2015-07-31 2018-08-15 Advanced Risc Mach Ltd Executing Groups of Instructions Atomically
CN107533483B (zh) 2016-01-28 2021-08-24 慧与发展有限责任合伙企业 服务编排
US20170269959A1 (en) * 2016-03-15 2017-09-21 Intel Corporation Method, apparatus and system to send transactions without tracking
CN107341054B (zh) * 2017-06-29 2020-06-16 广州市百果园信息技术有限公司 任务执行方法、装置及计算机可读存储介质
WO2019118338A1 (en) * 2017-12-11 2019-06-20 Vfunction, Inc. Systems and methods for mapping software applications interdependencies
US11196643B2 (en) 2018-04-04 2021-12-07 Hewlett Packard Enterprise Development Lp State transitions for a set of services
US11281491B2 (en) 2018-11-21 2022-03-22 Hewlett Packard Enterprise Development Lp Execution of services concurrently
US11544108B2 (en) * 2019-04-23 2023-01-03 Tencent America LLC Method and apparatus for functional improvements to moving picture experts group network based media processing
WO2021188672A1 (en) * 2020-03-20 2021-09-23 Nvidia Corporation Programming model for resource-constrained scheduling
CN112333249B (zh) * 2020-10-26 2022-07-22 新华三大数据技术有限公司 一种业务服务系统及方法
CN113535405A (zh) * 2021-07-30 2021-10-22 上海壁仞智能科技有限公司 云端服务系统及其操作方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5613114A (en) * 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching
CN100375034C (zh) * 2005-01-05 2008-03-12 联想(新加坡)私人有限公司 在计算机系统中用于对进程进行休眠的方法和系统
US7697007B1 (en) * 2005-12-19 2010-04-13 Nvidia Corporation Predicated launching of compute thread arrays
TWI463402B (zh) * 2009-09-04 2014-12-01 Chi Mei Comm Systems Inc 計劃任務管理系統及方法
US20130332934A1 (en) * 2011-03-08 2013-12-12 Ernest Hood, JR. Task Control in a Computing System

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI777695B (zh) * 2021-07-28 2022-09-11 新加坡商鴻運科股份有限公司 自動化任務排程方法、電子設備及儲存介質

Also Published As

Publication number Publication date
TWI619075B (zh) 2018-03-21
DE102013200991A1 (de) 2013-08-01
US20130198760A1 (en) 2013-08-01
CN103226481A (zh) 2013-07-31

Similar Documents

Publication Publication Date Title
TWI619075B (zh) 自動依附任務啟始
TWI490782B (zh) 來源運算元收集器快取的方法和裝置
TWI533222B (zh) 處理任務的工作分配控制
US10915364B2 (en) Technique for computational nested parallelism
US9436504B2 (en) Techniques for managing the execution order of multiple nested tasks executing on a parallel processor
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
TWI529626B (zh) 在複數執行緒處理單元中的效率式記憶體虛擬化
TWI490779B (zh) 無鎖的先進先出裝置
US8904068B2 (en) Virtual memory structure for coprocessors having memory allocation limitations
US8984183B2 (en) Signaling, ordering, and execution of dynamically generated tasks in a processing system
TWI466027B (zh) 解決執行緒發散的方法及系統
US9507638B2 (en) Compute work distribution reference counters
US9069609B2 (en) Scheduling and execution of compute tasks
US9697006B2 (en) Technique for performing memory access operations via texture hardware
TWI503750B (zh) 運算任務狀態的封裝
TW201351277A (zh) 平行執行緒子集合的均衡載入處理
TW201337829A (zh) 暫存器檔案型讀取
US9798544B2 (en) Reordering buffer for memory access locality
US20140232729A1 (en) Power efficient attribute handling for tessellation and geometry shaders
US9720858B2 (en) Technique for performing memory access operations via texture hardware
US9715413B2 (en) Execution state analysis for assigning tasks to streaming multiprocessors
TW201432573A (zh) 工作佇列型圖形處理單元工作創建
TW201351276A (zh) 計算工作的排程和執行
TW201342228A (zh) 執行緒陣列粒化執行的優先權計算
US10235208B2 (en) Technique for saving and restoring thread group operating state