TW201333827A - 運算任務狀態的封裝 - Google Patents
運算任務狀態的封裝 Download PDFInfo
- Publication number
- TW201333827A TW201333827A TW101141355A TW101141355A TW201333827A TW 201333827 A TW201333827 A TW 201333827A TW 101141355 A TW101141355 A TW 101141355A TW 101141355 A TW101141355 A TW 101141355A TW 201333827 A TW201333827 A TW 201333827A
- Authority
- TW
- Taiwan
- Prior art keywords
- task
- tmd
- data structure
- computing
- memory
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/463—Program control block organisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/486—Scheduler internals
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)
- Executing Machine-Instructions (AREA)
Abstract
本發明一具體實施例提出一種用於封裝運算任務狀態的技術,其可達到該等運算任務之不依順序的排程和執行。該排程電路基顧優先性程度組織該等運算任務成為群組。然後該等運算任務可使用不同的排程方案被選擇來執行。每一群組被維持成指向至被編碼成儲存在記憶體中的任務中介資料(TMD,“Task metadata”)的運算任務之指標的一鏈接串列。一TMD封裝該狀態及初始化、排程和執行一運算任務所需要的參數。
Description
本發明概略關於電腦任務的執行,尤指運算任務狀態的封裝。
以往在多處理系統中電腦任務的執行係自一命令串流接收處理任務,其係編碼用於設置該等多個處理器之狀態資訊並交錯有要被處理的資料。該資料以該資料出現在該串流中的順序進行處理。當在該串流中較晚的資料之處理並未依據在該串流中較早之處理資料的完成時,相較於該資料出現在該串流中的順序,該資料可不依順序來處理。其好處在於不相關的處理任務在當有適當的處理資源可由多個處理任務使用時即可被並行地執行。
因此,本技術中需要一種用於封裝電腦任務狀態的系統和方法來達到該等運算任務之不依順序的排程和執行。
本發明提出一種用於封裝運算任務狀態的系統和方法來達到該等電腦任務之不依順序的排程和執行。該排程電路基於優先性程度組織該等運算任務成為群組。然後該等運算任務可使用不同的排程方案被選擇來執行。每一群組被維持成指向至被編碼成儲存在記憶體中的任務中介資料(TMD,“Task metadata”)的運算任務之指標的一鏈接串列。一TMD封裝該狀態及初始化和執行一運算任務所需要的參數。
本發明之用於封裝運算任務的一種方法之多種具體實施例包括分配記憶體用於儲存一任務中介資料結構。該方法亦包括儲存初始化參數在該任務中介資料結構中以設置一串流多處理器來執行一運算任務、儲存排程參數在該任務中介資料結
構中以控制該運算任務的排程、儲存執行參數在該任務中介資料結構中以控制由該串流多處理器執行該運算任務、及執行該運算任務。
本發明之多種具體實施例包括一種用於封裝運算任務的系統,其包括一記憶體設置成儲存對應於該等運算任務的一任務中介資料結構,以及一多執行緒處理器。該多執行緒處理器設置成分配該記憶體的一部份用於儲存該任務中介資料結構、儲存初始化參數在該任務中介資料結構中以設置該串流多處理器來執行一運算任務、儲存排程參數在該任務中介資料結構中以控制該運算任務的排程、以及儲存執行參數在該任務中介資料結構中以控制由該多執行緒處理器執行該運算任務。該多執行緒處理器亦設置成執行該運算任務。
將運算任務封裝到TMD中能夠達到該等運算任務之排程可不依順序執行。此外,該等運算任務可並行地執行,以及控制該等運算任務之執行的參數可被編碼在該TMD中。初始化和執行排程參數用於設置串流多處理器及記憶體資源來用於每一TMD的執行。
在以下的說明中,許多特定細節係被提出來提供對於本發明之更為完整的瞭解。但是本技術專業人士將可瞭解到本發明可不利用一或多個這些特定細節來實施。在其它實例中,並未說明熟知的特徵,藉以避免混淆本發明。
第一圖係例示設置成實作本發明一或多種態樣之一電腦系統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,其中C≧1。每一GPC 208能夠同時執行大量(例如數百或數千)的執行緒,其中每個執行緒為一程式的一實例。在多種應用中,不同的GPC 208可分配來處理不同種類的程式,或執行不同種類的運算。GPC 208的分配可根據每種程式或運算所提升的工作負荷而改變。
GPC 208自一任務/工作單元207內的一工作分配單元接收要被執行的處理任務。該工作分配單元接收指標指向至被編碼成任務中介資料(TMD)且儲存在記憶體中的運算處理任務(任務指標)。該等指向至TMD的任務指標被包括在儲存成一推入緩衝器且由前端單元212自主控介面206接收的該命令串流中。可被編碼成TMD的處理任務包括要被處理之資料的索引,以及定義了該資料要如何被處理的狀態參數和命令(例如那一個程式要被執行)。任務/工作單元207自前端212接收任務,並確保GPC 208在由該等TMD之每一者所指定的該處理啟始之前被設置成一有效狀態。一優先性可針對用於排程該處理任務之執行的每一TMD來指定。
記憶體介面214包括數目為D的區隔單元215,其每一者被直接耦合至平行處理記憶體204的一部份,其中D≧1。如所
示,區隔單元215的該數目大致上等於DRAM 220的數目。在其它具體實施例中,區隔單元215的數目可能不等於記憶體裝置的數目。本技術專業人士將可瞭解到DRAM 220可由其它適當儲存裝置取代,並可為一般的習用設計。因此可省略詳細說明。顯像目標,例如圖框緩衝器或紋路地圖,其可儲存在不同DRAM 220中,其允許區隔單元215平行地寫入每個顯像目標之不同部份而有效率地使用平行處理記憶體204之可使用頻寬。
GPC 208之任何一者可處理要被寫入到平行處理記憶體204內DRAM 220中任一者的資料。交叉開關單元210設置成導引每個GPC 208之輸出到任何區隔單元220的輸入或到另一個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的方塊圖。任務/工作單元207包括一任務管理單元300和工作分配單元340。任務管理單元300基於執行優先性程度組織要被排程的任務。針對每一優先性程度,任務管理單元300儲存一任務指標清單至對應於在排程器表321中該等任務的該等TMD 322,其中該清單可利用一鏈接串列來實作。該等TMD 322可儲存在PP記憶體204或系統記憶體104中。任務管理單元300接受任務和儲存該等任務在排程器表321中的速率與任務管理單元300排程任務進行執行的速率無關,使得任務管理單元300可基於優先性資訊或使用其它技術來排程任務。
工作分配單元340包括一任務表345,其具有位置,而每一位置可由將要被執行的一任務之TMD 322佔用。任務管理單元300在當任務表345中有空的位置時即可排程任務來執行。當沒有空位置時,不會佔用一位置的一較高優先性的任務可以逐出佔用一空位的一較低優先性的任務。當一任務被逐出時,該任務即停止,且如果該任務的執行並未完成,該任務被加入到排程器表321中一鏈接串列。當一子處理任務被產生時,該子任務被加入到排程器表321中一鏈接串列。當一任務被逐出時,該任務自一位置被移除。
本技術專業人士將可瞭解到在第一、二及三圖中所述之架構並未以任何方式限制本發明之範圍,而此處所教示的技術可以實作在任何適當設置的處理單元上,其包括但不限於一或多個CPU、一或多個多核心CPU、一或多個PPU 202、一或多個GPC 208、一或多個圖形或特殊目的處理單元或類似者,其皆不背離本發明之範圍。
任務管理單元300管理要被排程的運算任務做為儲存在排程器表321中的一TMD群組的陣列。一TMD群組為具有相同排程優先性的一組運算任務。TMD群組或優先程度的數目可
為一或多個。在每一TMD群組內,位在個別優先性程度的該等運算任務被儲存在一清單中,其可利用一鏈接串列來實作,且在以下將假設為一鏈接串列。在一鏈接串列中每一TMD儲存指向至該個別鏈接串列中下一TMD的一指標。針對每一TMD儲存有該鏈接串列的一頭指標和一尾指標。不具有任務的一TMD群組具有一等於該尾指標的一頭指標,且一空白位元被設定為真。
當自主控介面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可容易地組織,且在需要時可藉由簡單地改變該等任務指標在該等TMD群組的該等鏈接串列中的順序來重新排序該等運算任務。因此,該等運算任務可依不同於該等任務指標由任務管理單元300自主控介面206收到的該順序之一順序來排程及/或執行。
針對任務管理單元300之最簡單的排程方式為排程該運算任務位在每一群組的頭端處(如果一運算任務存在於該群組中),並以循環的順序旋轉通過該等群組。另一種排程技術為優先性排程,其以嚴格的優先性順序來選擇該等運算任務。任務管理單元300自具有至少一運算任務的該最高優先性群組中選擇一運算任務,即開始於該群組的頭端處。
第四A圖係根據本發明一具體實施例中第三圖之任務/工作單元207的另一方塊圖。任務/工作單元207包括一任務管理單元400和一工作分配單元440,其可執行與任務管理單元300和工作分配單元340類似的功能。任務管理單元400包括一排程器表421和一TMD快取405。TMD快取405儲存一或多個TMD 322。工作分配單元440包括一任務表445。
每一TMD 322可為一大結構,例如256位元組或更多,其係儲存在PP記憶體204中。由於是大尺寸,TMD 322對於頻寬而言要存取是很昂貴。因此,TMD快取405僅儲存任務管理單元600進行排程所需要的TMD 322的該部份(相對較小)。TMD 322的其餘部份在當該任務被排程時由PP記憶體204提取,即轉移至工作分配單元640。
TMD 322在軟體控制之下被寫入,且當一運算任務完成執行時,關聯於該已完成的運算任務之TMD可被再利用來儲存一不同運算任務的資訊。因為一TMD 322可被儲存在TMD快取405中,儲存該已完成運算任務的資訊之該等項目必須自TMD快取405清除。因為該新運算任務之資訊的寫入與由於該清除造成儲存在TMD快取405中的資訊被寫回至TMD 322相脫離,該清除作業較複雜。特別是,該新任務的資訊被寫入至TMD 322,然後TMD 322被輸出至做為一推入緩衝器之一部份的前端212。因此,該軟體並未收到該快取已經被清除的一確認,所以該TMD 322的寫入可被延遲。因為該快取寫回可以針對該新任務覆寫儲存在TMD 322中的資訊,每一TMD 322的一「僅限硬體」部份被留下僅可由任務管理單元300或400存取。TMD 322的其餘部份可由軟體和任務管理單元300或400存取。TMD 322可由軟體存取的該部份基本上由軟體填入來啟始一任務。然後TMD 322於該任務的排程和執行期間由任務管理單元600和GPC 208中的其它處理單元存取。當一新運算任務的資訊被寫入至一TMD 322時,啟動TMD 322的該命令
可指定是否要在第一次TMD 322被載入到TMD快取405時複製位元到TMD 322之僅有硬體部份當中。此可確保TMD 322將正確地僅儲存該新運算任務的資訊,因為該已完成的運算任務之任何資訊已經僅儲存在該TMD 322的該僅有硬體部份中。
第四B圖例示根據本發明一具體實施例中一種用於載入一項目在TMD快取405中的方法之流程圖。雖然該等方法步驟係配合第一、二、三和四A圖之該等系統做說明,本技術專業人士將可瞭解到設置成以任何順序執行該等方法步驟的任何系統皆在本發明之範圍內。
在步驟402,在TMD快取405中一項目被辨識為載入有儲存在一TMD 322中的資訊。該項目可回應於一快取錯誤而被辨識。在步驟412,任務管理單元600儲存該TMD資訊在該快取項目中。在步驟420,任務管理單元400決定啟始TMD 322的該命令是否指定複製位元至TMD 322的該僅有硬體部份,而如果否,則在步驟450,TMD快取405中該項目的填入即完成。否則在步驟425,任務管理單元400由TMD 322中並非僅有硬體的該部份複製該等位元至儲存TMD 322的該僅有硬體部份之該項目的該部份。自TMD 322中並非僅有硬體的該部份複製該等位元至儲存TMD 322的該僅有硬體部份的該項目之該部份即會利用該新運算任務的資料覆寫為了該已執行的運算任務而儲存的資料。
第五A圖係根據本發明一具體實施例中儲存在PP記憶體204中一TMD的該等內容之示意圖。TMD 322設置成儲存初始化參數505、排程參數510、執行參數515、CTA狀態520、一僅有硬體欄位422及一佇列525。僅有硬體欄位522儲存TMD322的該僅有硬體部份,其中包含一或多個僅有硬體的參數。所有TMD 322共通的狀態並未包括在每一TMD 322中。因為一TMD 322為儲存在PP記憶體204中的一資料結構,在CPU
102或PPU 112上運行的一運算程式能夠在記憶體中產生一TMD 322結構,然後藉由傳送指向至TMD 322的一任務指標給任務/工作單元207來遞送TMD 322做執行。
初始化參數505用於當TMD 322被啟始時設置GPC 208,且可包括佇列525的該開始程式位址和大小。請注意到佇列525可與TMD 322隔開地儲存在記憶體中,其中TMD 322包括指向至佇列525的一指標(佇列指標)來取代實際佇列525。
初始化參數405亦可包括位元來指明當TMD 322被啟始時,多種快取,像是一紋路標頭快取、一紋錄取樣器快取、一紋路資料快取、資料快取、常數快取及類似者,皆為失效。指明紋路取樣器是否被一對一地鏈接於紋路標頭之一位元亦可被包括在初始化參數505中。初始化參數505亦可包括在執行緒中一CTA的維度、一TMD版本號碼、一指令集版本號碼、一網格之CTA寬度、高度和深度為項目的維度、記憶庫映射參數、由一應用程式所看到的一呼叫堆疊的深度、及該TMD的該呼叫-返回堆疊的大小。初始化參數505可包括一常數緩衝器的大小、該常數緩衝器的一位址、指明一常數緩衝器鏈結是否有效的一位元、及指明在該TMD被啟始之前來自該常數緩衝器的該資料在該快取中為無效的一位元,皆可被儲存在初始化參數505中。
最後,初始化參數505可包括相關於針對一CTA的每一執行緒皆可使用的記憶體數量的數個參數。當需要多個CTA且其每一者需要大量的共用記憶體的一TMD 322預備好被排程來執行時,任務/工作單元207可限制(即節制)並行地執行之CTA的數目,所以該等CTA不會嘗試來耗用比可由TMD 322存取的記憶體更多的記憶體。關於可由一CTA的每一執行緒使用的記憶體數量的參數示例包括一或多個局部記憶體區域的大小、暫存器數目、可由TMD 322經由一L1快取直接存取
的記憶體大小、一單一CTA之共用記憶體大小、及每一CTA的阻障運算的數目。
排程參數510控制任務/工作單元207如何排程TMD 322來執行。排程參數510可包括一位元來指明TMD 322是否為一佇列TMD或一網格TMD。如果TMD 322為一網格TMD,則TMD 322之允許在TMD 322啟始之後佇列有額外的資料的該佇列特徵不會用到,且TMD 322的執行使得固定數目的CTA被啟始及執行來處理儲存在佇列525中固定數量的資料。該等CTA的數目被指定為該網格寬度、高度和深度的乘積。佇列525利用指向到將要由執行TMD 322所指定的該程式之該等CTA處理的該資料的一佇列指標所取代。
如果TMD 322為一佇列TMD,則使用TMD 322的該佇列特徵做為佇列項目,代表資料被儲存在佇列525中。佇列項目被輸入到TMD 322之CTA的資料。該等佇列項目亦可代表於一執行緒的執行期間由另一TMD 322產生的一子任務,藉此提供巢化的平行度。基本上,該執行緒或包括該執行緒的CTA之執行被中止,直到該子任務的執行完成為止。佇列525可實作成一圓形佇列,所以資料的總量不會受限於佇列525的大小。如前所述,佇列525可與TMD 322隔開地儲存,且TMD 322可以儲存指向至佇列525的一佇列指標。較佳地是,當代表該子任務的TMD 322正在執行時,該子任務的佇列項目可被寫入到佇列525。
針對一佇列TMD執行有可變數目的CTA,其中CTA的數目係根據被寫入到該TMD佇列的佇列525之項目的數目。一佇列TMD的排程參數510亦包括由每一CTA處理的佇列525之項目的數目(N)。當N個項目被加入至佇列525時,針對TMD 322啟始一CTA。任務/工作單元207可以建構一程序的導引路徑,其中每一程序為具有一佇列的一TMD 322。要針對每一
TMD 322執行的CTA數目可基於每一TMD 322的N之數值及已經被寫入到佇列525中的項目之數目來決定。
一佇列TMD的排程參數510亦可包含一合併等待時間參數,其設定一CTA利用少於N個佇列項目運作之前要等待的時間長度。當該佇列幾乎是空白但存在不足數目的佇列項目時,即需要該合併等待時間參數,其在當該執行的期間該等佇列項目之總數並未平等地除以N時將增加。針對該製造者-使用者佇列案例亦需要該合併等待時間參數,藉以避免閉鎖。針對一CTA在執行時具有少於N個項目之案例,佇列項目的數目被當作一參數被傳送至該TMD的程式,所以該等項目的數目可在執行時間被考慮到。
其它的具體實施例針對一網格TMD和一佇列TMD具有不同的結構,或僅實作網格TMD或佇列TMD。TMD 322的排程參數可以包括一位元來指明排程該從屬TMD是否亦使得TMD欄位被複製到僅有硬體欄位522。排程參數510亦可包括該TMD群組ID、一位元來指明TMD 322是否被加入到一鏈接串列(頭端或尾端)、及指向至該TMD群組中下一個TMD 322的一指標。排程參數510亦可包括致能/除能GPC 208內特定串流多處理器的遮罩。
一TMD322可包括指向至當該TMD 322完成時被自動啟始的一從屬TMD的任務指標。旗號可由TMD 322執行來確保該等不同TMD 322和CPU 102之間的相關性可符合。例如,一第一TMD 322的執行可以依據一第二TMD的完成,所以該第二TMD產生一旗號釋放,且該第一TMD在該相對應旗號取得成功之後才執行。在一些具體實施例中,該旗號取得在主控介面206或前端212中進行。一TMD 322的執行參數515可以儲存複數旗號釋放,其中包括記憶體阻障的型式、在記憶體中該旗號資料結構的位址、該旗號資料結構的大小、有效負載、
及一減法運算的致能、型式和格式。該旗號的資料結構可被儲存在執行參數515中,或可儲存在TMD 322外部。
執行參數515亦可包括要針對TMD 322執行的該程式之開始位址、當TMD 322的執行完成時要進行之記憶體阻障作業的型式、一序列執行旗標用於指明針對TMD 322是否一次僅執行一單一CTA(序列地)、及一節制致能旗標,其可控制任務/工作單元207是否可基於針對TMD 322指定的該等記憶體限制而限制並行運作的該等CTA的數目。
執行參數515亦儲存多種旗標,其可控制針對TMD 322所執行的該處理任務所進行的算術運算之行為,例如非數字(NaN,“Not-a-number”)處理、浮點數到整數轉換、及多種指令之進位模式。
TMD 322的CTA狀態502可包括由TMD 322使用的一參考運數器的一ID、用於遞增該參考運數器的一致能、及用於遞減該參考運數器的一獨立致能。當一程序被佔先時,TMD 322的處理可被停止於一指令邊界或一CTA邊界處,且處理將被恢復處的該CTA之識別被儲存在CTA狀態520中。在佔先之後恢復TMD 322的執行所需要的該狀態資訊可被儲存在CTA狀態520中、或儲存在PP記憶體204中一獨立區域中、或在系統記憶體104中。
CTA狀態520亦儲存指向至佇列525的項目之資料指標,及運數器溢位旗標,用於指明何時每一資料指標遞增超過佇列525的末端,且需要包繞回到佇列525的開始。該等資料指標和該排程旗標之一或多者的僅有硬體版本可被儲存在僅有硬體欄位522。
第五B圖例示根據本發明一具體實施例指向至第五A圖的佇列525之項目的資料指標。針對被編碼在佇列525中一處理任務的寫入資料係脫離於佇列525中項目的分配。首先,一程序保留或分配佇列525中一些項目,並在稍後,該程序儲存要
由該等CTA處理的該資料在該等項目中。一外部置入指標545指向至佇列525中要被分配的下一個可用項目,而一內部置入指標540指向至佇列525中已被分配而尚未被寫入的該最舊項目。該等項目不必需要依照該等項目被分配的順序被寫入,所以在已被寫入的內部置入指標540與外部置入指標545之間可能會有項目。
一外部取得指標530指向到儲存有已被指定給一CTA進行處理的資料之佇列525的最舊項目,即一CTA將處理已被啟始的資料,但該CTA尚未讀取該資料。一內部取得指標535指向至已被指定給一CTA進行處理的佇列525之最新的項目。已經被寫入至佇列525但尚未指定給一CTA進行處理的資料被儲存在內部取得指標535和內部置入指標540之間該等項目中。已經被指定給一CTA進行處理而未讀取的資料被儲存在外部取得指標530和內部取得指標535之間。
第六圖例示根據本發明一具體實施例之一種用於封裝運算任務狀態在第三、四A和五A圖的一TMD 322中的方法。雖然該等方法步驟係配合第一、二、三和四A圖之該等系統做說明,本技術專業人士將可瞭解到設置成以任何順序執行該等方法步驟的任何系統皆在本發明之範圍內。
在步驟605,一TMD 322被分配有記憶體,即其中要儲存要分配的TMD 322資料。在步驟610,初始化參數505儲存在TMD 322中。在步驟615,排程參數510儲存在TMD 322中。在步驟620,執行參數515儲存在TMD 322中。在步驟630,如果TMD 322在能夠進行執行之前未在等待一事件要發生(例如一旗號釋放),則任務/工作單元207直接進行到步驟635,且排程TMD 322。否則,如果在步驟630,TMD 322正在等待一事件要發生,則在步驟632,TMD 322決定是否收到一信號以指明TMD 322的執行可以繼續。當該事件發生時,該方法進行到步驟635。
在步驟635,任務/工作單元207排程TMD 322和GPC 208,且可由TMD 322使用的記憶體基於初始化參數505被設置。TMD 322由任務/工作單元207基於排程參數510進行排程。在步驟640,一或多個CTA被啟始來執行GPC 208上的TMD 322。在該等CTA的執行期間,該等處理任務基於執行參數515來進行。在步驟655,當該等一或多個CTA完成執行且離開時,TMD 322被解除分配。
第七圖例示根據本發明一具體實施例之一種針對一佇列TMD封裝運算任務狀態在第三、四A和五A圖的一TMD 322中的方法。雖然該等方法步驟係配合第一、二、三和四A圖之該等系統做說明,本技術專業人士將可瞭解到設置成以任何順序執行該等方法步驟的任何系統皆在本發明之範圍內。
在步驟705,一TMD 322被分配有記憶體,即其中要儲存要分配的TMD 322資料。在步驟710,初始化參數505儲存在TMD 322中。在步驟715,排程參數510儲存在TMD 322中。在步驟720,執行參數515儲存在TMD 322中。在TMD 322被分配之後項目可被寫入到佇列525,且額外的項目可被寫入到佇列525而CTA針對TMD 322來執行。當佇列525為一圓形佇列時,已由一CTA讀取的項目可由另一TMD 322或CPU 102經由前端212利用額外的佇列項目來覆寫。佇列525的寫入與由該等CTA之佇列525的讀取相脫離,且可與該讀取同時地發生。
在步驟730,任務/工作單元207決定在佇列525中是否有足夠的項目已經被寫入來啟始一CTA,如果否,則任務/工作單元207等待有更多的項目來被寫入到佇列525。在步驟730,如果佇列525中已有足夠的項目被寫入,任務/工作單元207在步驟735排程TMD 322。任務/工作單元207基於初始化參數505設置GPU 208及可由TMD 322使用的記憶體。TMD 322由任務/工作單元207基於排程參數510進行排程。
在步驟740,基於被寫入在佇列525中項目的數目,一或多個CTA被啟始來執行GPC 208上的TMD 322。在步驟742,該等啟始的CTA之每一者讀取被寫入在佇列525中的一些項目(N個),使得所讀取的項目總數等於N*經啟始的CTA數目。在該等CTA的執行期間,該等處理任務基於執行參數515來進行,且每一CTA處理被寫入在佇列525的N個項目中的資料。在步驟745,任務/工作單元207決定在佇列525中是否有足夠的項目已經被寫入來啟始一CTA,如果否,則任務/工作單元207進行到步驟750。否則,任務/工作單元207直接回到步驟740來啟始一或多個CTA。因此,當一TMD的CTA正在寫入項目至佇列525時,可啟始額外的CTA而不需要再次排程TMD 322,因為TMD 322目前已被排程。
如果在步驟750任務/工作單元207決定將不會有項目被寫入在佇列525中,且佇列525中不再有項目可被寫入,在步驟755 TMD 322被解除分配。如果在佇列525中有更多項目被寫入或有更多的項目可被寫入在佇列525中,則任務/工作單元207回到步驟730。
編碼運算處理任務到TMD 322中的該封裝機制允許每一TMD 322來儲存對於特定的TMD 322為特定的初始化、排程和執行參數。該等初始化和執行排程參數用於設置串流多處理器和記憶體資源用於TMD 322的執行。該等排程參數用於控制TMD 322的排程來執行,包括不依順序的執行。
本發明一具體實施例可以實作成由一電腦系統使用的一程式產品。該程式產品的程式定義該等具體實施例的功能(包括此處所述的方法),並可包含在多種電腦可讀取儲存媒體上。例示性的電腦可讀取儲存媒體包括但不限於:(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‧‧‧任務表
400‧‧‧任務管理單元
405‧‧‧任務中介資料快取
421‧‧‧排程器表
440‧‧‧工作分配單元
445‧‧‧任務表
505‧‧‧初始化參數
510‧‧‧排程參數
515‧‧‧執行參數
520‧‧‧協同執行緒陣列狀
態
522‧‧‧僅有硬體欄位
525‧‧‧佇列
530‧‧‧外部取得指標
535‧‧‧內部取得指標
540‧‧‧內部置入指標
545‧‧‧外部置入指標
所以,可以詳細瞭解本發明上述特徵之方式當中,本發明之一更為特定的說明簡述如上,其可藉由參照具體實施例來進行,其中一些例示於所附圖式中。但是應要注意到,該等附屬圖式僅例示本發明的典型具體實施例,因此其並非要做為本發明之範圍的限制,其可允許其它同等有效的具體實施例。
第一圖例示配置成實作本發明一或多種態樣之電腦系統的方塊圖;第二圖係根據本發明一具體實施例中第一圖之該電腦系統的一平行處理子系統的方塊圖;第三圖係根據本發明一具體實施例中第二圖之任務/工作單元的方塊圖;第四A圖係根據本發明一具體實施例中第三圖之任務/工作單元的另一方塊圖;第四B圖例示根據本發明一具體實施例中一種用於載入一項目在第四A圖的任務中介資料(TMD)快取中的方法之流程圖;第五A圖係根據本發明一具體實施例中第三和四A圖之一TMD的該等內容之示意圖;
第五B圖例示根據本發明一具體實施例指向至第五A圖的該佇列之項目的指標;第六圖例示根據本發明一具體實施例之一種用於封裝運算任務狀態在第三、四A和五圖之一網格TMD的方法;以及第七圖例示根據本發明一具體實施例之一種用於封裝運算任務狀態在第三、四A和五圖之一佇列TMD的方法。
Claims (10)
- 一種封裝運算任務的方法,該方法包含:分配記憶體來儲存一任務中介資料結構;儲存多個初始化參數在該任務中介資料結構中,該些初始化參數設定一串流多處理器來執行一運算任務;儲存多個排程參數在該任務中介資料結構中,該些排程參數控制該運算任務的該排程;儲存多個執行參數在該任務中介資料結構中,該些執行參數控制由該串流多處理器執行的該運算任務的執行;以及執行該運算任務。
- 如申請專利範圍第1項之方法,進一步包含儲存指向至一佇列的一指標在該任務中介資料結構中,其中該佇列儲存該運算任務的資料。
- 如申請專利範圍第2項之方法,進一步包含儲存狀態資訊在該任務中介資料結構中,其中包括一外部置入指標以指明在該佇列中可被分配來儲存該運算任務的資料之下一個項目。
- 如申請專利範圍第2項之方法,進一步包含儲存狀態資訊在該任務中介資料結構中,其中包括一內部置入指標以指明在該佇列中並非空白及已經被分配來儲存該運算任務的資料之一最舊的項目。
- 如申請專利範圍第2項之方法,其中該佇列為圓形,以及該任務中介資料結構儲存該等資料指標中至少一指標的一溢位旗標。
- 如申請專利範圍第1項之方法,進一步包含接收任務指標,其中包括指向至該任務中介資料結構的一任務指標,以及指向至相關聯於額外運算任務的額外任務中介資料結構的額外任務指標,其中該運算任務和該等額外運算任務依照不同於該等任務指標被接收的該順序的一順序來執行。
- 如申請專利範圍第1項之方法,進一步包含:決定在該運算任務能夠進行執行之前該任務中介資料結構正在等待一事件來發生;以及在排程該運算任務來執行之前等待接收一排程信號。
- 如申請專利範圍第1項之方法,進一步儲存指向至在包括該任務中介資料結構和該下一個任務中介資料結構的一鏈接串列中下一個任務中介資料結構的一任務指標。
- 如申請專利範圍第1項之方法,其中該任務中介資料結構儲存一群組識別,以及該任務中介資料結構與其它儲存相同群組識別的任務中介資料結構被組織在一鏈接串列中。
- 一種用於封裝運算任務的系統,該系統包含:一記憶體,其設置成儲存對應於該等運算任務的任務中介資料;以及一多執行緒處理器,其設置成:分配該記憶體的一部份來儲存該任務中介資料;儲存多個初始化參數在該任務中介資料中,該些初始化參數設定該串流多處理器來執行一運算任務;儲存多個排程參數在該任務中介資料中,該些排程參數控制該運算任務的該排程;儲存多個執行參數在該任務中介資料中,該些執行參數控制由該串流多處理器執行的該運算任務的執行;以及執行該運算任務。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/292,951 US10795722B2 (en) | 2011-11-09 | 2011-11-09 | Compute task state encapsulation |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201333827A true TW201333827A (zh) | 2013-08-16 |
TWI503750B TWI503750B (zh) | 2015-10-11 |
Family
ID=48145379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101141355A TWI503750B (zh) | 2011-11-09 | 2012-11-07 | 運算任務狀態的封裝 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10795722B2 (zh) |
CN (1) | CN103207810A (zh) |
DE (1) | DE102012220277A1 (zh) |
TW (1) | TWI503750B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI550514B (zh) * | 2014-05-09 | 2016-09-21 | Huawei Tech Co Ltd | Computer execution method and computer system for starting a computer system having a plurality of processors |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9250953B2 (en) | 2013-11-12 | 2016-02-02 | Oxide Interactive Llc | Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system |
US9582312B1 (en) * | 2015-02-04 | 2017-02-28 | Amazon Technologies, Inc. | Execution context trace for asynchronous tasks |
US9778961B2 (en) * | 2015-09-14 | 2017-10-03 | Qualcomm Incorporated | Efficient scheduling of multi-versioned tasks |
CN105426236A (zh) * | 2015-11-11 | 2016-03-23 | 上海斐讯数据通信技术有限公司 | 高并发状态机的实现方法、实现装置及系统 |
CN109901926A (zh) * | 2019-01-25 | 2019-06-18 | 平安科技(深圳)有限公司 | 基于大数据行为调度应用任务的方法、服务器及存储介质 |
CN111083010B (zh) * | 2019-12-17 | 2021-09-24 | 深圳市网心科技有限公司 | 一种测速方法、装置和计算机可读存储介质 |
US11385974B1 (en) * | 2021-03-01 | 2022-07-12 | Google Llc | Uncorrectable memory error recovery for virtual machine hosts |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7051329B1 (en) * | 1999-12-28 | 2006-05-23 | Intel Corporation | Method and apparatus for managing resources in a multithreaded processor |
US6988188B2 (en) * | 2000-03-01 | 2006-01-17 | Realtek Semiconductor Corp. | Data object architecture and method for xDSL ASIC processor |
US7765549B1 (en) * | 2004-06-30 | 2010-07-27 | Affiliated Computer Services, Inc. | Distributing batches of items in a workflow |
US7908313B2 (en) * | 2004-07-21 | 2011-03-15 | The Mathworks, Inc. | Instrument-based distributed computing systems |
CN1316359C (zh) | 2005-06-09 | 2007-05-16 | 上海交通大学 | 用户指导的程序半自动并行化方法 |
US8037474B2 (en) * | 2005-09-27 | 2011-10-11 | Sony Computer Entertainment Inc. | Task manager with stored task definition having pointer to a memory address containing required code data related to the task for execution |
US7697007B1 (en) * | 2005-12-19 | 2010-04-13 | Nvidia Corporation | Predicated launching of compute thread arrays |
US7840969B2 (en) * | 2006-04-28 | 2010-11-23 | Netapp, Inc. | System and method for management of jobs in a cluster environment |
US7533236B1 (en) * | 2006-05-11 | 2009-05-12 | Nvidia Corporation | Off-chip out of order memory allocation for a unified shader |
US7996599B2 (en) | 2007-04-25 | 2011-08-09 | Apple Inc. | Command resequencing in memory operations |
US9645845B2 (en) * | 2007-09-27 | 2017-05-09 | Sap Se | Triggering job execution in application servers based on asynchronous messages sent by scheduling tasks |
US8458722B2 (en) * | 2008-06-09 | 2013-06-04 | International Business Machines Corporation | Thread selection according to predefined power characteristics during context switching on compute nodes |
JP5330384B2 (ja) * | 2008-06-25 | 2013-10-30 | パナソニック株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
GB2462860B (en) * | 2008-08-22 | 2012-05-16 | Advanced Risc Mach Ltd | Apparatus and method for communicating between a central processing unit and a graphics processing unit |
US9081742B2 (en) * | 2009-04-27 | 2015-07-14 | Intel Corporation | Network communications processor architecture |
US8959517B2 (en) * | 2009-06-10 | 2015-02-17 | Microsoft Corporation | Cancellation mechanism for cancellable tasks including stolen task and descendent of stolen tasks from the cancellable taskgroup |
CN101630271A (zh) | 2009-06-26 | 2010-01-20 | 湖南大学 | 一种网格环境下的地震模拟计算支撑中间件系统 |
US8336056B1 (en) * | 2009-12-22 | 2012-12-18 | Gadir Omar M A | Multi-threaded system for data management |
US9032411B2 (en) | 2009-12-25 | 2015-05-12 | International Business Machines Corporation | Logical extended map to demonstrate core activity including L2 and L3 cache hit and miss ratio |
US9804889B2 (en) * | 2010-08-30 | 2017-10-31 | Adobe Systems Incorporated | Methods and apparatus for state objects in cluster computing |
-
2011
- 2011-11-09 US US13/292,951 patent/US10795722B2/en active Active
-
2012
- 2012-11-07 TW TW101141355A patent/TWI503750B/zh active
- 2012-11-07 DE DE102012220277A patent/DE102012220277A1/de active Pending
- 2012-11-09 CN CN2012104486772A patent/CN103207810A/zh active Pending
-
2020
- 2020-10-05 US US17/063,705 patent/US20210019185A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI550514B (zh) * | 2014-05-09 | 2016-09-21 | Huawei Tech Co Ltd | Computer execution method and computer system for starting a computer system having a plurality of processors |
Also Published As
Publication number | Publication date |
---|---|
TWI503750B (zh) | 2015-10-11 |
US20210019185A1 (en) | 2021-01-21 |
US20130117751A1 (en) | 2013-05-09 |
US10795722B2 (en) | 2020-10-06 |
CN103207810A (zh) | 2013-07-17 |
DE102012220277A1 (de) | 2013-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI503750B (zh) | 運算任務狀態的封裝 | |
TWI639118B (zh) | 有不同執行優先程度的計算任務的排程和管理 | |
TWI619075B (zh) | 自動依附任務啟始 | |
TWI533222B (zh) | 處理任務的工作分配控制 | |
TWI624791B (zh) | 用於在多緒處理單元中改善性能之技術 | |
US8904068B2 (en) | Virtual memory structure for coprocessors having memory allocation limitations | |
TWI466027B (zh) | 解決執行緒發散的方法及系統 | |
TWI498819B (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 | |
TWI490779B (zh) | 無鎖的先進先出裝置 | |
US9069609B2 (en) | Scheduling and execution of compute tasks | |
TW201333829A (zh) | 分配運算工作的參考運數器 | |
TW201407482A (zh) | 多個應用程式分享的圖形處理單元 | |
US9798544B2 (en) | Reordering buffer for memory access locality | |
US9715413B2 (en) | Execution state analysis for assigning tasks to streaming multiprocessors | |
US20140122838A1 (en) | Work-queue-based graphics processing unit work creation | |
TW201435576A (zh) | 陷阱處理期間的協作執行緒陣列粒化內文切換 | |
TWI457828B (zh) | 執行緒陣列粒化執行的優先權計算 | |
TW201432573A (zh) | 工作佇列型圖形處理單元工作創建 | |
TW201351276A (zh) | 計算工作的排程和執行 | |
US9965321B2 (en) | Error checking in out-of-order task scheduling | |
US20140165072A1 (en) | Technique for saving and restoring thread group operating state |