TWI639118B - 有不同執行優先程度的計算任務的排程和管理 - Google Patents

有不同執行優先程度的計算任務的排程和管理 Download PDF

Info

Publication number
TWI639118B
TWI639118B TW101133728A TW101133728A TWI639118B TW I639118 B TWI639118 B TW I639118B TW 101133728 A TW101133728 A TW 101133728A TW 101133728 A TW101133728 A TW 101133728A TW I639118 B TWI639118 B TW I639118B
Authority
TW
Taiwan
Prior art keywords
task
computing
priority
tasks
computing task
Prior art date
Application number
TW101133728A
Other languages
English (en)
Other versions
TW201329869A (zh
Inventor
提摩太 約翰 珀塞爾
雷其V 沙
二世 傑羅米F 多樂士
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 TW201329869A publication Critical patent/TW201329869A/zh
Application granted granted Critical
Publication of TWI639118B publication Critical patent/TWI639118B/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/461Saving or restoring of program or task context

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本發明一具體實施例提出一種用於動態地排程和管理具有不同執行優先程度的計算任務之技術。該排程電路基於優先程度組織該等計算任務成為群組。然後該等計算任務可使用不同的排程方式被選出來執行,例如循環式、優先性及區隔的優先性。每一群組被維持成至被編碼成儲存在記憶體中的佇列中介資料(QMD,“Queue metadata”)的計算任務之一指標的鏈接串列。一QMD包封執行一計算任務所需要的狀態。當一任務由該排程電路選擇來執行時,該QMD針對一群組被移除,並被轉移到一有效計算任務的表格。然後計算任務由一串流多處理器自該有效任務表格中選出來執行。

Description

有不同執行優先程度的計算任務的排程和管理
本發明概略關於計算任務的執行,尤指有不同優先程度的計算任務的排程和管理。
以往用於多處理器系統中計算任務執行的排程係依靠一應用程式或驅動器來決定每一計算任務的優先性。在該等計算任務的執行期間,允許該驅動器來排程該等計算任務所需要的該驅動器和多個處理器之間的互動可能會延遲該等計算任務的執行。
因此,本技術中需要一種系統和方法可以基於該等處理資源和該等有效計算任務的優先性來動態地排程計算任務做執行。重要地是,該排程機制必須不依據或是需要軟體或驅動器互動。
一種用於動態地排程和管理具有不同執行優先程度的計算任務之系統和方法。該排程電路基於優先程度組織該等計算任務成為群組。然後該等計算任務可使用不同的排程方式被選出來執行,例如循環式、優先性及區隔的優先性。每一群組被維持成至被編碼成儲存在記憶體中的佇列中介資料(QMD,“Queue metadata”)的計算任務之一指標的鏈接串列。一QMD包封執行一計算任務所需要的狀態。當一任務由該排程電路選擇來執行時,該QMD針對一群組被移除,並被轉移到一有效計算任務的表格。然後計算任務由一串流多處理器自該有效任務表格中選出來執行。
本發明之一種用於排程計算任務做執行之方法的多種具體實施例包括由具有多優先程度的一第一優先程度之一計算 任務群組的一鏈接串列之一頭端選擇一第一計算任務,並辨識被排程來執行且儲存在一任務表中的有效計算任務之一最低優先程度。該第一優先程度與該最低優先程度做比較。當該第一優先程度高於該最低優先程度時,儲存在該任務表中其優先性為該最低優先程度的一第二計算任務被該第一計算任務來取代。
本發明之多種具體實施例包括一種排程計算任務來執行的系統。該系統包括一記憶體,其設置成儲存對應於該等計算任務的佇列中介資料,一工作分配單元,其設置成儲存被排程來執行的有效計算任務在一任務表中,及一任務管理單元。該任務管理單元設置成由具有多優先程度的一第一優先程度之一計算任務群組的一鏈接串列之一頭端選擇一第一計算任務,辨識該等有效計算任務的一最低優先程度,比較該第一優先程度與該最低優先程度,決定該第一優先程度係高於該最低優先程度,且利用該第一計算任務取代儲存在該任務表中具有該最低優先程度的一優先性之一第二計算任務。
該排程機制能夠達成具有不同優先程度的該等計算任務之執行的管理。該排程電路針對每一計算任務保持一指標至記憶體中的一QMD,所以計算任務可被快速地選擇來執行,且該個別的QMD被轉移至該有效任務表。
在以下的說明中,許多特定細節係被提出來提供對於本發明之更為完整的瞭解。但是本技術專業人士將可瞭解到本發明可不利用一或多個這些特定細節來實施。在其它實例中,並未說明熟知的特徵,藉以避免混淆本發明。
系統概述
第一圖例示設置成實作本發明一或多種態樣之一電腦系統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所供應的圖形資料產生像素資料的多種作業,與本地PP記憶體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的該作業非同步地執行命令。執行優先性可針對每一推入緩衝器來指定,以控制該等不同推入緩衝器的排程。
現在請回頭參照第二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的分配可根據每種程式或運算所提升的工作負荷而改變。
GPUC 208由一任務/工作單元207內的一工作分配單元接收要被執行的處理任務。該工作分配單元接收指標來計算被編碼成佇列中介資料(QMD)且儲存在記憶體中的處理任務。該等至QMD的指標被包括在儲存成一推入緩衝器且由前端單元212自主控介面206接收的該命令串流中。可被編碼成QMD的處理任務包括要被處理之資料的索引,以及定義了該資料要如何被處理的狀態參數和命令(例如那一個程式要被執行)。任務/工作單元207自前端212接收任務,並確保GPC 208在由該等QMD之每一者所指定的該處理啟始之前被設置成一有效狀 態。一優先性可針對用於排程該處理任務之執行的每一QMD來指定。
記憶體介面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之系統可實作成多種組態及型式因子,其中包括桌上型、膝上型、或掌上型個人電腦、伺服器、工作站、遊戲主機、嵌入式系統及類似者。
多同時性任務排程
多個處理任務可在GPUC 208上同時地執行,且一處理任務於執行期間可以產生一或多個「子」(child)處理任務。任務 /工作單元207接收該等任務,並動態地排程該等處理任務和子處理任務來由GPC 208執行。
第三圖係根據本發明一具體實施例中第二圖之任務/工作單元207的方塊圖。任務/工作單元207包括一任務管理單元300和工作分配單元340。任務管理單元300基於執行優先程度組織要被排程的任務。對於每一優先程度,任務管理單元300對應於在排程器表321中該等任務儲存一指標的鏈接串列至QMD 322。QMD 322可被儲存在PP記憶體204或系統記憶體104中。任務管理單元300接受任務並儲存該等任務在排程器表321中的速率與任務管理單元300排程任務做執行的速率無關,使得任務管理單元300可基於優先性資訊或使用其它技術來排程任務。
工作分配單元340包括一任務表345,其具有位置,而每一位置可由將要被執行的一任務之QMD 322佔用。任務管理單元300在當任務表345中有空的位置時即可排程任務來執行。當沒有空位置時,不會佔用一位置的一較高優先性的任務可以逐出佔用一空位的一較低優先性的任務。當一任務被逐出時,該任務即停止,且如果該任務的執行並未完成,該任務被加入到排程器表321中一鏈接串列。當一子處理任務被產生時,該子任務被加入到排程器表321中一鏈接串列。當一任務被逐出時,該任務從一位置被移除
本技術專業人士將可瞭解到在第一、二及三圖中所述之架構並未以任何方式限制本發明之範圍,而此處所教示的技術可以實作在任何適當設置的處理單元上,其包括但不限於一或多個CPU、一或多個多核心CPU、一或多個PPU 202、一或多個GPC 208、一或多個圖形或特殊目的處理單元或類似者,其皆不背離本發明之範圍。
任務排程和管理
任務管理單元300管理要被排程的計算任務做為儲存在排程器表321中的一QMD群組的陣列。一QMD群組為具有相同排程優先性的一組計算任務。QMD群組或優先程度的數目可為一或多個。在每一QMD群組內,於個別優先程度下的該等計算任務被儲存在一鏈接串列中。當自主控介面206收到計算任務時,任務管理單元300插入該等計算任務到一QMD群組中。更特定而言,對應於該計算任務到該QMD的一指標被加入到該群組之該鏈接串列的尾端,除非設定一特殊QMD位元,其造成該任務被加入到該鏈接串列的頭端。即使在一QMD群組內的所有任務具有相同的排程優先程度,該QMD群組鏈接串列的頭端為由任務管理單元300所選出,並排程來執行的該第一計算任務。因此,位在該鏈接串列之頭端的該計算任務相較於具有相同優先程度的其它計算任務會具有一相對較高的優先性。同樣地,在該鏈接串列中具有相同優先程度的每一連續的計算任務相對於在該鏈接串列中先前的計算任務具有一較低的優先性。因此,任務管理單元300能夠以相對於彼此的輸入順序排程在一QMD群組內的該等計算任務(假設沒有任何任務有特殊標記來加入到該QMD群組的頭端)。因為該QMD群組被指定為該QMD結構的一部份,一計算任務的QMD群組在當該計算任務正在被執行時不能夠改變。
第四A圖係根據本發明一具體實施例,針對表1中所示之一示例性計算任務輸入序列之第三圖的排程表321之該等內容的示意圖。
該等計算任務係依順序接收,首先是任務410、其次是任務411、任務412第三、而任務413最後。優先程度2被指定給任務410和412,而優先程度0(最高優先性)被指定給任務411和413。該加入頭端旗標針對任務410、411和412之每一任務設定為假,所以當這些任務之每一任務由任務管理單元300收到時,該個別任務被加入到一鏈接串列的尾端。該加入頭端旗標針對任務413設定為真,所以當任務413由任務管理單元300收到時,該個別任務被加入到具有優先程度為O之任務的該鏈接串列的頭端。
如第四A圖所示,任務410被加入到關聯於優先程度2的一群組402,且當任務412被接收時,任務412被加入到群組402的該鏈接串列之尾端。任務411被加入到關聯於優先程度0的一群組400,且當任務413被接收時,任務413被加入到群組400的該鏈接串列之頭端。因此,任務413相對於任務411具有較高的優先性,即使兩項任務皆在群組400中。在一鏈接串列中每一QMD儲存一指標來指向在該個別鏈接串列中下一個QMD。每一群組400,401,402和403儲存在該群組中該鏈接串列的一頭端指標和一尾端指標,並儲存一空白位元。不具有任務的一QMD群組,例如群組401和403,其具有一頭端指標等於該尾端指標,且該空白位元被設定為真。在群組400中,該頭端指標指向到任務413,且該尾端指標指向到任務411。在群組402中,該頭端指標指向到任務410,且該尾端指標指向到任務412。
在排程該等計算任務之前基於優先程度將計算任務收集到群組中可允許將計算任務由任務管理單元300接收的速率與計算任務被輸出至工作分配單元340做執行的速率去相關。任務管理單元300一般能夠以比該等計算任務可被輸出來由工作分配單元340執行的速率要快的速率來接受來自一或多個推入 緩衝器由主控介面206輸出的計算任務。來自該等不同推入緩衝器的該輸入為獨立的串流,基本上係由不同的應用程式產生。任務管理單元300可設置成將該等計算任務緩衝在排程表321中,且稍後由排程器表321選擇一或多項計算任務來輸出至工作分配單元340。藉由在計算任務被緩衝化之後來選擇它們,相較於在計算任務被收到時選擇一計算任務,該任務管理單元可以基於更多的資訊來做出選擇。例如,任務管理單元300可緩衝化在一高優先性任務被接收之前的數項低優先性任務。該緩衝化使得任務管理單元300能夠選擇該高優先性任務在該等低優先性任務之前輸出。
任務管理單元300可以使用數種不同的技術來執行選擇以排程該等計算任務:循環式、優先性、或區隔的優先性排程。對於該等不同排程技術之每一種技術,當一計算任務被選擇來做排程時,該選擇的計算任務自該被選擇的任務被儲存的該群組中移除。無關於該排程技術,任務管理單元300能夠藉由選擇在該適當群組的該鏈接串列中該第一項目來快速地選擇一計算任務。
對於任務管理單元300之最簡單的排程方式為排程位在每一群組(如果一計算任務存在於該群組中)的頭端處的該計算任務,並以循環的順序旋轉通過該等群組。如表1所示及儲存在第四A圖所示的排程器表321中的該輸入序列即會造成計算任務依下列(由第一到最後)被排程:任務413、任務410、任務411和任務412。
另一種排程技術為優先性排程,其以嚴格的優先性順序來選擇該等計算任務。任務管理單元300自具有至少一計算任務的該最高優先性群組中選擇一計算任務,即開始於該群組的頭端處。如表1所示及儲存在第四A圖所示的排程器表321中的該輸入序列即會造成計算任務依下列(由第一到最後)被排程:任務413、任務411、任務410和任務412。
任務管理單元300選擇一計算任務來執行。該經選擇的任務僅被排程來在當工作分配單元340內任務表345中有一可用的位置時來運作。一可用的位置為「未使用」(UNUSED,“無與其關聯的任務”)或是優先性比該經選擇的任務要低的一位置。一未使用位置皆可用來接受一任務。任務管理單元300將考慮儲存在任務表345中已經被回報為空白(即執行完成)的一計算任務成為儲存在任務表345中的最低優先性任務。換言之,任務管理單元300在取代儲存在該任務表中低優先性的有效計算任務之前會先嘗試來取代空白的計算任務。
如果在任務表345中沒有未使用的位置或是儲存了回報為空白的一計算任務之位置時,任務管理單元300比較被排程的(即儲存在任務表345中)最低優先性計算任務與任務管理單元300已經選擇且正在嘗試要排程的該計算任務(例如尚未被排程的最高優先性計算任務)。如果儲存在任務表345中該最低優先性計算任務之優先性低於任務管理單元300正在嘗試要排程的該經選擇的計算任務,儲存在任務表345中該較低優先性計算任務的執行即停止,且該最高優先性任務被排程。更特定而言,該最高優先性計算任務自排程器表321轉移至任務表345,且該較低優先性計算任務可自任務表345轉移回到排程器表321。如果儲存在任務表345中兩個計算任務具有相同的優先性,該較低優先性為最新被轉移到任務表345中的該計算任務。
當儲存在任務表345中的一已排程的計算任務被任務管理單元300由來自排程器表321的一較高優先性任務取代時,該經排程的計算任務之執行可能未完成。如果該經排程的計算任務之執行未完成,該經排程的計算任務即停止,然後重新加入到對應於該經排程的(現在停止的)計算任務之優先程度的排程器表321中該群組的頭端。依此方式,停止的計算任務僅如同該已停止的計算任務為一新的計算任務來考慮做排程。當重新 排程時,該已停止的計算任務在該已停止的計算任務離開的地方開始執行。
第四B到四E圖係根據本發明一具體實施例第三圖之排程器表321和任務表345之該等內容在不同時間的示意圖。任務管理單元300接收如表1所示的該輸入序列,且任務管理單元300設置成執行優先性排程。但是,任務413是在一長暫停後收到,且任務表345設置成僅儲存兩個計算任務來較佳地例示優先性取代。
第四B圖係在任務410,411和412由任務管理單元300接收、儲存在排程器表321中之後,然後計算任務410和411被選擇並轉移到任務表345時,第三圖之排程器表321和任務表345之該等內容的示意圖。計算任務411先被選擇(假設在收到計算任務410和411的時間之間沒有長暫停),並儲存在位置410中。計算任務410之優先性低於計算任務411,且由於做為群組402的該鏈接串列中的第一個而相較於計算任務412具有較高的優先性,計算任務410即被選擇為第二,且儲存在位置431中。計算任務412維持位在儲存於排程器表321的群組402中該鏈接串列的頭端處。
第四C圖係根據本發明一具體實施例,當計算任務413由任務管理單元300收到時,第三圖的排程器表321和任務表345之該等內容的示意圖。計算任務413儲存在群組400之該鏈接串列的頭端處。
第四D圖係根據本發明一具體實施例,當計算任務413使用該優先性排程技術做排程時,第三圖的排程器表321和任務表345之該等內容的示意圖。任務管理單元300選擇在排程器表321中該最高優先性計算任務,即計算任務413。因為位置430和431皆為有效計算任務所佔用,任務管理單元300比較計算任務413的優先性與儲存在任務表345中該最低優先性計算任務(即任務410)的優先性。對應於群組402,任務410為優先程度 2。因此任務410相較於任務413為一較低優先性,且任務413取代任務表345的位置431中的任務410。任務410由任務表345轉移至排程器表321,並儲存在群組402的該鏈接串列的頭端處。
第四E圖係根據本發明一具體實施例,在任務411執行完成時,第三圖的排程器表321和任務表345之該等內容的示意圖。當任務411執行完成時,位置430即被標示為空白。然後任務選擇單元300選擇在排程器表321中該最高優先性任務來轉移至任務表345。任務410被選擇,並由排程器表321的群組402中該鏈接串列的頭端轉移至任務表345中的位置430。任務410自該鏈接串列之頭端移除,且任務412成為群組402的該鏈接串列之頭端。
第五A圖例示根據本發明一具體實施例用於排程具有不同執行優先程度的計算任務之一種優先性排程方法500的流程圖。雖然該等方法步驟係配合第一、二和三圖之該等系統做說明,本技術專業人士將可瞭解到設置成以任何順序執行該等方法步驟的任何系統皆在本發明之範圍內。
在步驟505,任務管理單元300選擇一新的計算任務來排程。被選擇的該新的計算任務為儲存在排程器表321中該最高優先性計算任務。在步驟510,任務管理單元300決定在任務表345中是否有一未使用的位置。未使用的一位置可被直接用於一新任務。儲存一已完成的任務之一位置標示為空白。在步驟510,如果有一未使用位置可使用,則任務管理單元300進行到步驟540,並自該新的計算任務被儲存在排程器表321之位置的該群組中該鏈接串列移除該新的計算任務。否則在步驟512,任務管理單元300決定在任務表345中是否有一空白位置。在步驟512,如果有一空白位置可使用,則任務管理單元300進行到步驟535,且將被取代的該經辨識為完成的任務之狀態被轉移至任務管理單元300。轉移該經辨識的有效任務之執行所需要 的該狀態解除分配該空白位置,所以該位置即成為未使用。在步驟512,如果沒有一空白位置可用,則在步驟515,任務管理單元300辨識儲存在任務表345中一有效任務來撤銷。更特定而言,任務管理單元300辨識儲存在任務表345中該最低優先性計算任務。
在步驟520,任務管理單元300決定該新的任務之優先性是否高於該最低優先性有效任務,如果不是,則在步驟550該排程程序即完成。否則,在步驟525,任務管理單元300指示工作分配單元340來停止將被取代之該經辨識的有效工作之執行。在步驟530,該撤銷的任務被加入到排程器表321中的一群組,其中儲存具有與該經撤銷的任務之相同優先程度的計算任務的一鏈接串列。在步驟535,執行將被取代的該經辨識的有效任務所需要的該狀態被轉移至任務管理單元300。該已撤銷任務的該狀態之一部份可被儲存在任務管理單元300內及/或該已撤銷任務的該狀態之一部份可被儲存至對應於該已撤銷的任務之QMD 322。
在步驟540,該新任務自儲存在排程器表321中的一群組中的該鏈接串列中移除。請注意到該新任務和該已撤銷的任務不能夠是相同的優先程度(除非該已撤銷的任務為空白)。在步驟545,當該新任務自任務管理單元300轉移並儲存在工作分配單元340中任務表345的一位置中時,該新任務即被啟用。儲存在任務表345中的一或多個啟用的任務被同時地執行。正在執行的任務之數目可依據佔用任務表345中的位置之一或多項任務所造成的該計算工作負荷而定。在步驟550,該排程程序完成。
另一種任務排程技術,即區隔的優先性排程,其類似於優先性排程。主要的差異在於任務表345中每一位置具有一遮罩來指定那些群組或優先程度能夠佔用該位置。依此方式,一些位置可橫跨一或多個群組被區隔,而允許低優先性任務與較高 優先性任務同時地運作,即使當高優先性任務仍在等待要被排程。
第五B圖例示根據本發明一具體實施例用於排程具有不同執行優先程度的計算任務之一種區隔的優先性排程方法的流程圖。雖然該等方法步驟係配合第一、二和三圖之該等系統做說明,本技術專業人士將可瞭解到設置成以任何順序執行該等方法步驟的任何系統皆在本發明之範圍內。
在步驟560,任務管理單元300決定在任務表345中是否有可使用的一未使用位置。如果是,則在步驟562,任務管理單元300決定合格來填入該可使用位置之任務的該等優先性。在步驟564,任務管理單元300接著決定儲存在排程器表321中該等無效任務中任何任務是否為任務表345中該未使用位置的一合格優先性。如果儲存在排程器表321中該等無效任務中並無任務為合格,則在步驟594該排程程序即完成。如果有一合格任務,任務管理單元300進行到步驟590。
在步驟560,如果任務管理單元300決定在任務表345中沒有一未使用位置,則步驟570中任務管理單元300決定在任務表345中有一空白位置可使用。如果是,在步驟572,任務管理單元300決定合格來填入任務表345中該位置的該等優先性。在步驟574,任務管理單元300接著決定儲存在排程器表321中該等無效任務中任何任務為任務表345中該空白位置的一合格優先性。如果沒有,則在步驟595該排程程序即完成。如果有一合格任務,在步驟576,將被取代的該經辨識的完成任務之狀態在任務管理單元30進行到步驟590之前被轉移至任務管理單元300。該已完成任務的該狀態之一部份可被儲存在任務管理單元300內及/或該已完成任務的該狀態之一部份可被儲存至對應於該已完成任務的QMD 322。
在步驟570,如果無法使用一空白位置,則在步驟580任務管理單元300決定合格來填入任務表345中一或多個該等位置 的該等優先性。在步驟582,任務管理單元300接著決定儲存在排程器表321中該等無效任務中任何任務是否為任務表345中該等位置之一的一合格優先性,且具有比佔用在任務表345中一位置的一有效任務要更高的優先性。如果儲存在排程器表321中該等無效任務並無一者具有高於一有效任務之合格優先性,則在步驟595該排程程序即完成。否則在步驟584,任務管理單元300停止將自任務表345逐出的該有效任務的執行,並以較高優先性的無效任務取代。在步驟586,該撤銷的任務被加入到排程器表321中的該個別群組,其中儲存具有與該經撤銷的任務之相同優先程度的計算任務的一鏈接串列。在步驟588,執行將被取代的該經辨識的有效任務所需要的該狀態在任務管理單元300進行到步驟590之前被轉移至任務管理單元300。該已撤銷任務的該狀態之一部份可被儲存在任務管理單元300內及/或該已撤銷任務的該狀態之一部份可被儲存至對應於該已撤銷的任務之QMD 322。
當一個以上的優先程度為合格來填入在所有該等先前描述案例中一可使用位置時,任務管理單元300先尋找在察看亦合格來填入該可使用位置的較低優先程度之前為合格的該最高優先程度的一任務。
在步驟590,該任務自為一合格優先程度的該群組中移除。在步驟592,任務管理單元300藉由轉移該任務至儲存該任務在任務表345的該可使用位置中的工作分配單元340來啟用該任務。在步驟595,該排程程序即完成。
第六A圖係根據本發明一具體實施例中第三圖之任務/工作單元207的另一方塊圖。任務/工作單元207包括一任務管理單元300和一工作分配單元640,其可執行與任務管理單元300和工作分配單元340類似的功能。任務管理單元600包括一排程器表621和一QMD快取605。QMD快取605儲存一或多個QMD 622。工作分配單元640包括一任務表645。
每一QMD 622可為一大結構,例如256位元組或更多,其係儲存在PP記憶體204中。由於是大尺寸,QMD 622對於頻寬而言要存取是很昂貴。因此,QMD快取605僅儲存任務管理單元600進行排程所需要的QMD 622的該部份(相對較小)。QMD 622的其餘部份在當該任務被排程時由PP記憶體204提取,即轉移至工作分配單元640。
QMD 622在軟體控制之下被寫入,且當一計算任務完成執行時,關聯於該已完成的計算任務之QMD可被再利用來儲存一不同計算任務的資訊。因為該QMD可被儲存在QMD快取605中,儲存該已完成計算任務的資訊之該等項目必須自QMD快取605清除。因為該新計算任務之資訊的寫入與由於該清除造成儲存在QMD快取605中的資訊被寫回至QMD 622無關,該清除作業較複雜。特別是,該新任務的資訊被寫入至QMD 622,然後QMD 622被輸出至做為一推入緩衝器之一部份的前端212。因此,該軟體並未收到該快取已經被清除的一確認,所以該QMD 622的寫入可被延遲。因為該快取寫回可以針對該新任務覆寫儲存在QMD 622中的資訊,每一QMD 622的一「僅有硬體」部份被留下僅可由任務管理單元600存取。QMD 622的其餘部份可由軟體和任務管理單元600存取。QMD 622可由軟體存取的該部份基本上由軟體填入來啟始一任務。然後QMD 622於該任務的排程和執行期間由任務管理單元600和GPC 208中的其它處理單元存取。當一新計算任務的資訊被寫入至一QMD 622時,啟動QMD 622的該命令可指定是否要在第一次QMD 622被載入到QMD快取605時複製位元到QMD 622之僅有硬體部份當中。此可確保QMD 622將正確地僅儲存該新計算任務的資訊,因為該已完成的計算任務之任何資訊已經僅儲存在該QMD的該僅有硬體部份中。
第六B圖例示根據本發明一具體實施例中一種用於載入在該QMD快取605中一項目的方法之流程圖。雖然該等方法 步驟係配合第一、二、三和六A圖之該等系統做說明,本技術專業人士將可瞭解到設置成以任何順序執行該等方法步驟的任何系統皆在本發明之範圍內。
在步驟602,QMD快取605中一項目被辨識為載入有儲存在一QMD 622中的資訊。該項目可回應於一快取錯誤而被辨識。在步驟612,任務管理單元600儲存該QMD資訊在該快取項目中。在步驟620,任務管理單元600決定啟動QMD 622的該命令是否指定複製位元至QMD 622的該僅有硬體部份,而如果否,則在步驟650 QMD快取605中該項目的填入即完成。否則在步驟625,任務管理單元600由QMD 622中並非僅有硬體的該部份複製該等位元至儲存QMD 622的該僅有硬體部份之該項目的該部份。自QMD 622中並非僅有硬體的該部份複製該等位元至儲存QMD 622的該僅有硬體部份的該項目之該部份即會利用該新計算任務的資料覆寫為了該已執行的計算任務而儲存的資料。
該排程機制能夠達成具有不同優先程度的該等計算任務之執行的管理。該排程電路針對每一優先程度維持分開的鏈接串列。該等鏈接串列包括針對每一已經接收而未被排程的計算任務在記憶體中QMD 322或622的指標,所以計算任務可被快速地選擇來排程。經選擇的計算任務將它們個別的QMD 322或622轉移至任務表345來執行。
本發明一具體實施例可以實作成由一電腦系統使用的一程式產品。該程式產品的程式定義該等具體實施例的功能(包括此處所述的方法),並可包含在多種電腦可讀取儲存媒體上。例示性的電腦可讀取儲存媒體包括但不限於:(i)不可寫入儲存媒體(例如在一電腦內唯讀記憶體裝置,例如可由CD-ROM讀取的CD-ROM碟片,快閃記憶體,ROM晶片,或任何其它種類的固態非揮發性半導體記憶體),其上可永久儲存資訊;及(ii)可寫入儲存媒體(例如在一磁碟機內的軟碟 片、或硬碟機、或任何種類的固態隨機存取半導體記憶體),其上可儲存可改變的資訊。
本發明已經參照特定具體實施例在以上進行說明。但是本技術專業人士將可瞭解到在不背離附屬申請專利範圍所提出之本發明的廣義精神與範圍之下可對其進行多種修正與改變。因此前述的說明及圖面係在以例示性而非限制性的角度來看待。
100‧‧‧電腦系統
102‧‧‧中央處理單元
103‧‧‧裝置驅動器
104‧‧‧系統記憶體
105‧‧‧記憶體橋接器
106‧‧‧通訊路徑
107‧‧‧輸入/輸出橋接器
108‧‧‧輸入裝置
110‧‧‧顯示裝置
112‧‧‧平行處理子系統
113‧‧‧通訊路徑
113‧‧‧匯流排
114‧‧‧系統碟
116‧‧‧交換器
118‧‧‧網路轉接器
120,121‧‧‧嵌入卡
202‧‧‧平行處理單元
204‧‧‧平行處理記憶體
205‧‧‧輸入/輸出單元
206‧‧‧主控介面
207‧‧‧任務/工作單元
208‧‧‧通用處理叢集
210‧‧‧記憶體交叉單元
212‧‧‧前端
214‧‧‧記憶體介面
215‧‧‧隔間單元
220‧‧‧動態隨機存取記憶體
230‧‧‧處理叢集陣列
300‧‧‧任務管理單元
321‧‧‧排程器表
322‧‧‧佇列中介資料
340‧‧‧工作分配單元
345‧‧‧任務表
400,401,402,403‧‧‧群組
410,411,412,413‧‧‧任務
430,431‧‧‧位置
600‧‧‧任務管理單元
605‧‧‧佇列中介資料快取
621‧‧‧排程器表
622‧‧‧佇列中介資料
640‧‧‧工作分配單元
645‧‧‧任務表
所以,可以詳細瞭解本發明上述特徵之方式當中,本發明之一更為特定的說明簡述如上,其可藉由參照具體實施例來進行,其中一些例示於所附圖式中。但是應要注意到,該等附屬圖式僅例示本發明的典型具體實施例,因此其並非要做為本發明之範圍的限制,其可允許其它同等有效的具體實施例。
第一圖例示配置成實作本發明一或多種態樣之電腦系統的方塊圖;第二圖係根據本發明一具體實施例中第一圖之該電腦系統的一平行處理子系統的方塊圖;第三圖係根據本發明一具體實施例中第二圖之任務/工作單元的方塊圖;第四A圖係根據本發明一具體實施例中第三圖之排程器表格的該等內容之示意圖;第四B、四C、四D和四E圖係根據本發明一具體實施例第三圖之該排程器表和該任務表之該等內容在不同時間的示意圖;第五A圖例示根據本發明一具體實施例用於排程具有不同執行優先程度的計算任務之一種優先性排程方法;第五B圖例示根據本發明一具體實施例用於排程具有不同執行優先程度的計算任務之一種區隔的優先性排程方法; 第六A圖係根據本發明一具體實施例中第三圖之任務/工作單元的另一方塊圖;以及第六B圖例示根據本發明一具體實施例中一種用於載入在該QMD快取中一項目的方法。

Claims (10)

  1. 一種用於排程計算任務來執行的系統,該系統包含:一記憶體,其設置成儲存對應於該等計算任務的佇列中介資料;一工作分配單元,其設置成儲存被排程來執行的有效計算任務在一任務表中;以及一任務管理單元,其設置成:自具有多個優先程度的一第一優先程度的一計算任務的群組之一鏈接串列的一頭端選擇一第一計算任務;辨識該任務表中是否具有至少一優先性低於該第一優先程度的空白位置;若是,則利用該第一計算任務取代儲存在該任務表中的空白位置;若否,則辨識該等有效計算任務的一最低優先程度;比較該第一優先程度與該最低優先程度;決定該第一優先程度高於該最低優先程度;以及利用該第一計算任務取代儲存在該任務表中具有該最低優先程度的一優先性之一第二計算任務。
  2. 如申請專利範圍第1項之系統,其中該任務管理單元進一步設置成:接收該第一計算任務;以及將該第一計算任務插入到針對具有該第一優先程度之該等計算任務的該群組所儲存的該鏈接串列當中。
  3. 如申請專利範圍第2項之系統,其中該第一計算任務基於具有該第一計算任務的一旗標而被插入到該鏈接串列的一頭端處。
  4. 如申請專利範圍第2項之系統,其中該第一計算任務基於具有該第一計算任務的一旗標而被插入到該鏈接串列的一 尾端處。
  5. 如申請專利範圍第2項之系統,其中該任務管理單元包含一快取,其設置成儲存該佇列中介資料的一部份,且該任務管理單元進一步設置成:自該記憶體讀取對應於該第一計算任務的第一佇列中介資料;以及儲存該第一佇列中介資料在該快取的該項目中。
  6. 如申請專利範圍第5項之系統,其中該任務管理單元進一步設置成:複製該第一佇列中介資料的一第一部份至該項目的一部份以覆寫該經執行的計算任務之資料。
  7. 如申請專利範圍第1項所述之系統,其中該取代包含:停止該第二計算任務的執行;以及將該第二計算任務插入到具有該最低優先程度的計算任務的一群組之一第二鏈接串列的一頭端當中。
  8. 如申請專利範圍第1項之系統,其中該取代包含當該第二計算任務的執行未完成時儲存該第二計算任務的狀態。
  9. 如申請專利範圍第1項之系統,其中該取代包含自具有該第一優先程度的計算任務的該群組之該鏈接串列中移除該第一計算任務。
  10. 一種用於排程計算任務來執行的方法,該方法包含:辨識被儲存在一任務表中且已經完成執行的一第一計算任務的一第一優先程度;自具有多個優先程度的該第一優先程度的一計算任務的第一群組之一鏈接串列的一頭端選擇一第二計算任務;辨識該任務表中是否具有至少一優先性低於該第一優先程度的空白位置;若是,則利用該第一計算任務取代儲存在該任務表中的空白位置;若否,儲存該第二計算任務在該任務表的該第一計算 任務的一位置中來取代在該任務表內的該第一計算任務;以及自該等計算任務的第一群組之該鏈接串列中移除該第二計算任務。
TW101133728A 2011-09-19 2012-09-14 有不同執行優先程度的計算任務的排程和管理 TWI639118B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/236,473 2011-09-19
US13/236,473 US20130074088A1 (en) 2011-09-19 2011-09-19 Scheduling and management of compute tasks with different execution priority levels

Publications (2)

Publication Number Publication Date
TW201329869A TW201329869A (zh) 2013-07-16
TWI639118B true TWI639118B (zh) 2018-10-21

Family

ID=47751554

Family Applications (1)

Application Number Title Priority Date Filing Date
TW101133728A TWI639118B (zh) 2011-09-19 2012-09-14 有不同執行優先程度的計算任務的排程和管理

Country Status (4)

Country Link
US (1) US20130074088A1 (zh)
CN (1) CN103019810A (zh)
DE (1) DE102012216568B4 (zh)
TW (1) TWI639118B (zh)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2494453C2 (ru) * 2011-11-24 2013-09-27 Закрытое акционерное общество "Лаборатория Касперского" Способ распределенного выполнения задач компьютерной безопасности
KR20130115574A (ko) * 2012-04-12 2013-10-22 삼성전자주식회사 단말기에서 태스크 스케줄링을 수행하는 방법 및 장치
US20140068621A1 (en) * 2012-08-30 2014-03-06 Sriram Sitaraman Dynamic storage-aware job scheduling
US20140223436A1 (en) * 2013-02-04 2014-08-07 Avaya Inc. Method, apparatus, and system for providing and using a scheduling delta queue
US10114755B2 (en) * 2013-06-14 2018-10-30 Nvidia Corporation System, method, and computer program product for warming a cache for a task launch
CN104239134B (zh) 2013-06-21 2018-03-09 华为技术有限公司 一种众核系统的任务管理方法和装置
CN103353851A (zh) * 2013-07-01 2013-10-16 华为技术有限公司 一种管理任务的方法和设备
CN103412790B (zh) * 2013-08-07 2016-07-06 南京师范大学 移动安全中间件的多核并发调度方法与系统
US10489200B2 (en) * 2013-10-23 2019-11-26 Nvidia Corporation Hierarchical staging areas for scheduling threads for execution
US9858115B2 (en) * 2013-10-30 2018-01-02 Mediatek Inc. Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium
US20150121387A1 (en) * 2013-10-30 2015-04-30 Mediatek Inc. Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core system and related non-transitory computer readable medium
KR101541156B1 (ko) * 2013-11-13 2015-08-03 한국전자통신연구원 다차원 기법의 시공간 결정적 태스크 스케줄링 장치 및 방법
US9436739B2 (en) * 2013-12-13 2016-09-06 Vmware, Inc. Dynamic priority-based query scheduling
US9367504B2 (en) * 2013-12-20 2016-06-14 International Business Machines Corporation Coherency overcommit
US9582312B1 (en) * 2015-02-04 2017-02-28 Amazon Technologies, Inc. Execution context trace for asynchronous tasks
US10073714B2 (en) 2015-03-11 2018-09-11 Western Digital Technologies, Inc. Task queues
US9658893B2 (en) * 2015-05-06 2017-05-23 Runtime Design Automation Multilayered resource scheduling
US10102031B2 (en) * 2015-05-29 2018-10-16 Qualcomm Incorporated Bandwidth/resource management for multithreaded processors
US10169105B2 (en) * 2015-07-30 2019-01-01 Qualcomm Incorporated Method for simplified task-based runtime for efficient parallel computing
CN106327105A (zh) * 2016-09-07 2017-01-11 东信和平科技股份有限公司 一种订单优先级别数据处理方法及系统
CN106528295A (zh) * 2016-11-07 2017-03-22 广州华多网络科技有限公司 系统任务调度方法及装置
US10147159B2 (en) 2017-04-07 2018-12-04 Microsoft Technology Licensing, Llc Ink render using high priority queues
CN109478144B (zh) * 2017-07-05 2021-12-14 上海寒武纪信息科技有限公司 一种数据处理装置和方法
CN109522101B (zh) * 2017-09-20 2023-11-14 三星电子株式会社 用于调度多个操作系统任务的方法、系统和/或装置
US10509671B2 (en) 2017-12-11 2019-12-17 Afiniti Europe Technologies Limited Techniques for behavioral pairing in a task assignment system
DE102017130552B3 (de) 2017-12-19 2019-03-14 Beckhoff Automation Gmbh Verfahren zur Datenverarbeitung und speicherprogrammierbare Steuerung
CN108182158A (zh) * 2018-01-12 2018-06-19 江苏华存电子科技有限公司 一种应用在存储系统中的任务调度优化方法
DE102018125090A1 (de) * 2018-10-10 2020-04-16 Beckhoff Automation Gmbh Verfahren zur Datenverarbeitung und speicherprogrammierbare Steuerung
CN111767121B (zh) * 2019-04-02 2022-11-01 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
JP2021077180A (ja) * 2019-11-12 2021-05-20 富士通株式会社 ジョブスケジューリングプログラム、情報処理装置及びジョブスケジューリング方法
CN111709870B (zh) * 2020-05-28 2023-10-03 钟杰东 一种zjd应用处理器架构
US11570176B2 (en) 2021-01-28 2023-01-31 Bank Of America Corporation System and method for prioritization of text requests in a queue based on contextual and temporal vector analysis
CN113157433B (zh) * 2021-02-24 2024-06-04 宏晶微电子科技股份有限公司 资源分配方法、电子设备、计算机可读介质
CN114253683B (zh) 2021-11-26 2022-11-01 北京百度网讯科技有限公司 任务处理方法、装置、电子设备及存储介质
CN117093345B (zh) * 2023-09-05 2024-05-07 上海合芯数字科技有限公司 任务链表的执行方法、装置、终端设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102043668A (zh) 2010-12-10 2011-05-04 成电汽车电子产业园(昆山)有限公司 一种嵌入式实时操作系统中任务多次激活的方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4914657A (en) * 1987-04-15 1990-04-03 Allied-Signal Inc. Operations controller for a fault tolerant multiple node processing system
US6601120B1 (en) * 2000-07-13 2003-07-29 Silicon Graphics, Inc. System, method and computer program product for implementing scalable multi-reader/single-writer locks
US8028292B2 (en) * 2004-02-20 2011-09-27 Sony Computer Entertainment Inc. Processor task migration over a network in a multi-processor system
US20070143761A1 (en) * 2005-12-15 2007-06-21 Yong Deng Task scheduler system and method for managing tasks in an embedded system without a real time operating system
US8959515B2 (en) * 2006-01-18 2015-02-17 International Business Machines Corporation Task scheduling policy for limited memory systems
US7555306B2 (en) * 2006-06-01 2009-06-30 Sun Microsystems, Inc. Method and system for mobile device performance monitoring
US7454597B2 (en) * 2007-01-02 2008-11-18 International Business Machines Corporation Computer processing system employing an instruction schedule cache
US7730346B2 (en) * 2007-04-30 2010-06-01 Globalfoundries Inc. Parallel instruction processing and operand integrity verification
WO2008157556A2 (en) * 2007-06-21 2008-12-24 Board Of Regents, The University Of Texas System Method for providing fault tolerance to multiple servers
CN101178664A (zh) * 2007-12-12 2008-05-14 北京中星微电子有限公司 实时操作系统中的任务调度方法及系统
US8875142B2 (en) * 2009-02-11 2014-10-28 Hewlett-Packard Development Company, L.P. Job scheduling on a multiprocessing system based on reliability and performance rankings of processors and weighted effect of detected errors
US9207943B2 (en) * 2009-03-17 2015-12-08 Qualcomm Incorporated Real time multithreaded scheduler and scheduling method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102043668A (zh) 2010-12-10 2011-05-04 成电汽车电子产业园(昆山)有限公司 一种嵌入式实时操作系统中任务多次激活的方法

Also Published As

Publication number Publication date
DE102012216568A1 (de) 2013-03-21
US20130074088A1 (en) 2013-03-21
TW201329869A (zh) 2013-07-16
CN103019810A (zh) 2013-04-03
DE102012216568B4 (de) 2017-03-23

Similar Documents

Publication Publication Date Title
TWI639118B (zh) 有不同執行優先程度的計算任務的排程和管理
US8656117B1 (en) Read completion data management
US10095526B2 (en) Technique for improving performance in multi-threaded processing units
US8868838B1 (en) Multi-class data cache policies
US20210019185A1 (en) Compute task state encapsulation
TWI533222B (zh) 處理任務的工作分配控制
TWI490779B (zh) 無鎖的先進先出裝置
US9069609B2 (en) Scheduling and execution of compute tasks
US8928677B2 (en) Low latency concurrent computation
US8984183B2 (en) Signaling, ordering, and execution of dynamically generated tasks in a processing system
US10275275B2 (en) Managing copy operations in complex processor topologies
TW201333829A (zh) 分配運算工作的參考運數器
US8341358B1 (en) System and method for cleaning dirty data in a cache via frame buffer logic
US8195858B1 (en) Managing conflicts on shared L2 bus
US10430356B2 (en) Low overhead copy engine fault and switch mechanism
US20170161099A1 (en) Managing copy operations in complex processor topologies
US12079097B2 (en) Techniques for testing semiconductor devices
US9715413B2 (en) Execution state analysis for assigning tasks to streaming multiprocessors
US8321618B1 (en) Managing conflicts on shared L2 bus
TWI457828B (zh) 執行緒陣列粒化執行的優先權計算
US9436625B2 (en) Approach for allocating virtual bank managers within a dynamic random access memory (DRAM) controller to physical banks within a DRAM
US8325194B1 (en) Mitigating main crossbar load using dedicated connections for certain traffic types
US9965321B2 (en) Error checking in out-of-order task scheduling
US8464001B1 (en) Cache and associated method with frame buffer managed dirty data pull and high-priority clean mechanism
US10235208B2 (en) Technique for saving and restoring thread group operating state