專利名稱:具有多個處理器的數(shù)據(jù)處理系統(tǒng)、用于具有多個處理器的數(shù)據(jù)處理系統(tǒng)的任務(wù)調(diào)度程序 ...的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及具有多個處理器的數(shù)據(jù)處理系統(tǒng)、用于具有多個處理器的數(shù)據(jù)處理系統(tǒng)的任務(wù)調(diào)度程序及用于任務(wù)調(diào)度的對應(yīng)方法。
用于高性能、數(shù)據(jù)相關(guān)的媒體處理,如高清晰MPEG解碼,的異質(zhì)多處理器體系結(jié)構(gòu)是公知的。媒體處理應(yīng)用可以描述為一組僅通過單向數(shù)據(jù)流交換信息的并發(fā)執(zhí)行任務(wù)。G.Kahn在1974年就已經(jīng)介紹了一種此類應(yīng)用的正式模型,Proc.of the IFIP congress 74,8月5-10日,Stockholm,Sweden,North-Holland publ.Co,1974,pp.471-475上的“The Semantics of a Simple Language for ParallelProgramming”,隨后還有Kahn和MacQueen于1977年在InformationProcessing 77,B.Gilchhirst(Ed.),North-Holl and publ.1977,pp.993-998所著“Co-routines and Networks of ParallelProgramming”的可操作性描述。這種正式模型現(xiàn)在一般稱為Kahn過程網(wǎng)絡(luò)。
一個應(yīng)用是一組可并發(fā)執(zhí)行的任務(wù)。信息只能通過單向數(shù)據(jù)流在任務(wù)之間交換。任務(wù)應(yīng)當(dāng)只確定性地通過對預(yù)定數(shù)據(jù)流的讀寫動作通信。數(shù)據(jù)流以FIFO特性為基礎(chǔ)進行緩沖。由于進行了緩沖,因此通過一個流進行通信的兩個任務(wù)不必在單個讀或?qū)憚幼鲿r同步。
在流處理過程中,對一個數(shù)據(jù)流的連續(xù)操作是由不同的處理器執(zhí)行的。例如,第一個流可能包括一幅圖象的象素值,這些值由第一處理器處理,以產(chǎn)生8×8象素塊的DCT(離散余弦變換)系數(shù)塊的第二個流。第二處理器可以處理該DCT系數(shù)塊,以便為每個DCT系數(shù)塊產(chǎn)生經(jīng)過選擇和壓縮的系數(shù)塊。
圖1示出了對根據(jù)現(xiàn)有技術(shù)得知的將應(yīng)用映射到處理器的說明。為了實現(xiàn)數(shù)據(jù)流處理,提供了多個處理器,其中每個處理器都能夠重復(fù)執(zhí)行一個特定的操作,每次操作都是利用來自數(shù)據(jù)對象流中下一個數(shù)據(jù)對象的數(shù)據(jù)和/或產(chǎn)生這個數(shù)據(jù)流中的下一個數(shù)據(jù)對象。流從一個處理器傳送到另一個,從而由第一處理器產(chǎn)生的流可以由第二處理器進行處理,等等。從第一到第二處理器傳送數(shù)據(jù)的一種機制是通過將由第一處理器產(chǎn)生的數(shù)據(jù)塊寫到存儲器中。
網(wǎng)絡(luò)中的數(shù)據(jù)流進行了緩沖。每個緩沖器都實現(xiàn)為FIFO,明確地具有一個寫入裝置和一個或多個讀取裝置。由于這種緩沖,寫入裝置和讀取裝置不需要手動地同步通道上的單個讀寫動作。從沒有足夠可用數(shù)據(jù)的通道讀取使得讀取任務(wù)阻塞。處理器可以是只具有弱可編程性的專用硬件功能單元。所有處理器都并行運行并執(zhí)行它們各自的控制線程。它們一起執(zhí)行Kahn類型應(yīng)用,其中每個任務(wù)都映射到單個處理器。處理器允許多任務(wù),即多個Kahn任務(wù)可以映射到單個處理器。
本發(fā)明的一個目的是改進Kahn類型數(shù)據(jù)處理系統(tǒng)的操作。
這個目的是通過根據(jù)權(quán)利要求1的數(shù)據(jù)處理系統(tǒng)、根據(jù)權(quán)利要求19的任務(wù)調(diào)度程序及根據(jù)權(quán)利要求32用于任務(wù)調(diào)度的對應(yīng)方法解決的。
本發(fā)明基于在具有多個處理器的數(shù)據(jù)處理系統(tǒng)中提供分布式任務(wù)調(diào)度的思想。因此,提供了一種包括用于處理數(shù)據(jù)對象流的第一和至少一個第二處理器及通信網(wǎng)絡(luò)的數(shù)據(jù)處理系統(tǒng),其中所述第一處理器將來自數(shù)據(jù)對象流的數(shù)據(jù)對象傳送到第二處理器。所述第二處理器是能夠交叉處理第一和第二任務(wù)的多任務(wù)處理器,其中所述第一和第二任務(wù)分別處理第一和第二數(shù)據(jù)對象流。所述數(shù)據(jù)處理系統(tǒng)還包括每個所述第二處理器一個的任務(wù)調(diào)度裝置,其中所述任務(wù)調(diào)度裝置可操作布置在所述第二處理器和所述通信網(wǎng)絡(luò)之間,并控制所述第二處理器的任務(wù)調(diào)度。
由于它使得第二處理器可以自治,因此每個第二處理器都具有其自己的任務(wù)調(diào)度程序的分布式任務(wù)調(diào)度是有利的,其中自治是可升級系統(tǒng)的先決條件。
在本發(fā)明的一方面,所述任務(wù)調(diào)度裝置在從所述第二處理器接收到請求后立即確定將由所述第二處理器處理的下一個任務(wù),并將所述下一任務(wù)的標(biāo)識轉(zhuǎn)發(fā)到所述第二處理器。所述第二處理器以預(yù)定的時間間隔請求下一個任務(wù),其中所述時間間隔代表所述第二處理器的處理步驟。因此可以實現(xiàn)無優(yōu)先權(quán)的任務(wù)調(diào)度。
在本發(fā)明優(yōu)選的一方面,所述任務(wù)調(diào)度裝置包括流表和任務(wù)表。所述流表用于存儲與映射到所關(guān)聯(lián)處理器上任務(wù)關(guān)聯(lián)的每個數(shù)據(jù)流的參數(shù),其中所述參數(shù)包括用于讀取的有效數(shù)據(jù)量、用于寫入的可用空間量、關(guān)于運行任務(wù)是否在讀或?qū)懰隽鲿r阻塞的信息和/或?qū)⑺隽麝P(guān)聯(lián)到任務(wù)的配置信息。所述任務(wù)表用于管理關(guān)聯(lián)到所述第二處理器的不同任務(wù),其中所述任務(wù)表包含指示哪個流關(guān)聯(lián)到所述任務(wù)的流表索引、每個任務(wù)一個表示是否允許任務(wù)運行的使能標(biāo)志和/或表示每個任務(wù)可用處理預(yù)算的預(yù)算計數(shù)器。在與第二處理器關(guān)聯(lián)的任務(wù)調(diào)度裝置中提供流表和任務(wù)表提高了數(shù)據(jù)處理系統(tǒng)的局部控制和管理能力。
在本發(fā)明的另一方面,所述任務(wù)調(diào)度裝置檢查所述流表中的所有流并確定哪個所述流允許任務(wù)前進。如果a)該流具有可讀的有效數(shù)據(jù)或可寫的可用空間,b)任務(wù)未請求比該流中可用數(shù)據(jù)或空間更多的有效數(shù)據(jù)或空間和/或c)選項a)、b)配置成與任務(wù)前進無關(guān),則流允許前進。
在本發(fā)明的另一方面,所述任務(wù)調(diào)度裝置檢查所述任務(wù)表中的任務(wù)并確定允許哪個所述任務(wù)運行。如果與所述任務(wù)關(guān)聯(lián)的所有流都允許運行且設(shè)置了所述任務(wù)的使能標(biāo)志,則允許該任務(wù)運行。
在本發(fā)明的另一方面,當(dāng)從所述第二處理器接收到請求后所述任務(wù)調(diào)度裝置立即選擇當(dāng)前任務(wù)之后接下來要處理的任務(wù),其中如果當(dāng)前任務(wù)仍然允許運行且所述任務(wù)表中的預(yù)算計數(shù)器非0,則允許當(dāng)前任務(wù)繼續(xù)運行。否則,由所述任務(wù)調(diào)度裝置確定的下一個任務(wù)將被選作當(dāng)前任務(wù),并復(fù)位預(yù)算計數(shù)器。從而保證每個映射到第二處理器的任務(wù)都能有規(guī)律地獲得在第二處理器上執(zhí)行的機會。
在本發(fā)明的另一方面,在所述第二處理器請求下一任務(wù)之前所述任務(wù)調(diào)度裝置選擇下一個要處理的任務(wù),從而所選下一任務(wù)的標(biāo)識可以立即返回所述第二處理器。因此,數(shù)據(jù)處理系統(tǒng)的處理速度提高了。
在本發(fā)明的另一方面,所述任務(wù)調(diào)度裝置包括用于控制當(dāng)前任務(wù)預(yù)算計數(shù)器的預(yù)算計數(shù)器裝置。為每個任務(wù)提供一個預(yù)算計數(shù)器確保在處理不同任務(wù)過程中公平的實現(xiàn)。
本發(fā)明還涉及用于數(shù)據(jù)處理系統(tǒng)的任務(wù)調(diào)度程序。所述系統(tǒng)包括用于處理數(shù)據(jù)對象流的第一和至少一個第二處理器、通信網(wǎng)絡(luò)及存儲器,其中所述第一處理器布置成將來自數(shù)據(jù)對象流的數(shù)據(jù)對象傳送到第二處理器。任務(wù)調(diào)度程序關(guān)聯(lián)到所述第二處理器中的一個,可操作布置在所述第二處理器和所述通信網(wǎng)絡(luò)之間;并控制所述關(guān)聯(lián)第二處理器的任務(wù)調(diào)度。
本發(fā)明還涉及在數(shù)據(jù)處理系統(tǒng)中用于任務(wù)調(diào)度的方法。所述系統(tǒng)包括用于處理數(shù)據(jù)對象流的第一和至少一個第二處理器、通信網(wǎng)絡(luò)及存儲器,其中所述第一處理器布置成將來自數(shù)據(jù)對象流的數(shù)據(jù)對象傳送到第二處理器。所述系統(tǒng)對每個所述第二處理器都包括一個任務(wù)調(diào)度程序。任務(wù)調(diào)度程序控制所述第二處理器的任務(wù)調(diào)度。
在本發(fā)明的一方面,任務(wù)調(diào)度程序在可編程的第二處理器上實現(xiàn)。
本發(fā)明的其它實施方案在附加權(quán)利要求中描述。
參考附圖,對本發(fā)明的這些和其它方面進行更詳細的描述;附圖示出圖1是對根據(jù)現(xiàn)有技術(shù)將應(yīng)用映射到處理器的說明;圖2是基于流的處理系統(tǒng)的體系結(jié)構(gòu)示意方框圖;圖3是根據(jù)優(yōu)選實施方案的任務(wù)切換過程的流程圖;圖4是對圖2系統(tǒng)中同步操作和I/O操作的說明;及圖5是根據(jù)圖2更新每個外殼中局部空間值的機制。
圖2示出了根據(jù)本發(fā)明一種優(yōu)選實施方案用于處理數(shù)據(jù)對象流的處理系統(tǒng)。該系統(tǒng)可以分成不同的層,即計算層1、通信支持層2和通信網(wǎng)絡(luò)層3。計算層1包括CPU 11和兩個處理器或協(xié)處理器12a、12b。這僅僅是為了示例,很顯然,更多的處理器可以包括在系統(tǒng)中。通信支持層2包括關(guān)聯(lián)到CPU 11的外殼21和分別關(guān)聯(lián)到處理器12a、12b的外殼22a、22b。通信網(wǎng)絡(luò)層3包括通信網(wǎng)絡(luò)31和存儲器32。
處理器12a、12b優(yōu)選地是專用處理器,每個都專用于執(zhí)行有限范圍的流處理。每個處理器都布置成重復(fù)地將相同的處理操作應(yīng)用到連續(xù)的流數(shù)據(jù)對象。處理器12a、12b可以每個都執(zhí)行不同的任務(wù)或功能,例如變長解碼、運轉(zhuǎn)周期解碼、運動補償、圖象縮放或執(zhí)行DCT變換。在運行過程中,每個處理器12a、12b都對一個或多個數(shù)據(jù)流執(zhí)行操作。操作可以包括例如接收流并產(chǎn)生另一個流、或者接收流但不產(chǎn)生新的流、或者不需要接收流或修改所接收到的流就可以產(chǎn)生流。處理器12a、12b能夠處理由另一處理器12b、12a或由CPU 11產(chǎn)生的數(shù)據(jù)流、甚至是它們自己產(chǎn)生的數(shù)據(jù)流。流包括通過所述存儲器32在處理器12a、12b之間來回傳輸?shù)囊贿B串?dāng)?shù)據(jù)對象。
外殼22a、22b包括面向作為通信層的通信網(wǎng)絡(luò)層的第一接口。這一層對所有外殼是統(tǒng)一的或通用的。此外,外殼22a、22b還包括面向處理器12a、12b的第二接口,其中外殼22a、22b分別關(guān)聯(lián)到處理器12a、12b。第二接口是任務(wù)級接口,并且為了能夠管理所述處理器12a、12b的特殊需求而定制成面向所關(guān)聯(lián)的處理器12a、12b。因此,外殼22a、22b具有作為第二接口的處理器專用接口,但為了方便在整個系統(tǒng)體系結(jié)構(gòu)中外殼的重用,外殼的整體體系結(jié)構(gòu)對所有處理器是通用和統(tǒng)一的,同時還允許對特定應(yīng)用的參數(shù)化和采用。
外殼22a、22b包括用于數(shù)據(jù)傳輸?shù)淖x/寫單元、同步單元和任務(wù)切換單元。這三個單元利用所關(guān)聯(lián)的處理器按主/從原則進行通信,其中處理器充當(dāng)主機。因此,這三個單元分別由來自處理器的請求初始化。優(yōu)選地,為了傳遞自變量值并等待所請求的值返回,處理器和這三個單元之間的通信是由請求-應(yīng)答握手機制實現(xiàn)的。因此,通信是阻塞的,即各控制線程要等待它們的完成。
讀/寫單元優(yōu)選地實現(xiàn)兩種不同的操作,即使得處理器12a、12b能夠從存儲器讀取數(shù)據(jù)對象的讀操作和使得處理器12a、12b能夠?qū)?shù)據(jù)對象寫入存儲器32的寫操作。每個任務(wù)都具有預(yù)定的一組與數(shù)據(jù)流附著點對應(yīng)的端口。這些操作的自變量是各端口的ID“port_id”、讀/寫將發(fā)生的偏移量“offset”及數(shù)據(jù)對象的可變長度“n_bytes”。端口是由“port_id”自變量選擇的。該自變量是一個只對當(dāng)前任務(wù)具有局部作用范圍的小非負數(shù)。
同步單元實現(xiàn)兩種同步操作來管理從空FIFO中讀取或?qū)懭霛MFIFO時的局部阻塞情況。第一種操作,即getspace操作,是在實現(xiàn)為FIFO的存儲器中請求空間,而第二種操作,即putspace操作,是請求釋放FIFO中的空間。這些操作的自變量是“port_id”和可變長度“n_bytes”。
getspace操作和putspace操作是以同步的線性帶或FIFO順序執(zhí)行的,同時在由所述操作獲得的窗口內(nèi)還支持隨機存取讀/寫動作。
任務(wù)切換單元實現(xiàn)作為gettask操作的處理器任務(wù)切換。這些操作的自變量是“blocked”、“error”和“task_info”。
自變量“blocked”是一個布爾值,如果由于輸入端口或輸出端口上的getspace調(diào)用返回false而使得最后一個處理步不能成功完成,則該自變量設(shè)置為true。因此,任務(wù)調(diào)度單元很快就會得到通知這個任務(wù)最好不要再次調(diào)度,除非新的“space”消息到達阻塞的端口。這個自變量值被視為一種不僅改進調(diào)度而且決不會影響功能性的建議。自變量“error”是一個布爾值,如果在最后一個處理步中處理器內(nèi)部發(fā)生致命錯誤,則該自變量設(shè)置為true。例如,mepg解碼的例子是出現(xiàn)未知的變長代碼或非法的運動向量。如果這樣,則外殼清除任務(wù)表使能標(biāo)志以防止進一步調(diào)度,并且有一個中斷發(fā)送到主CPU來修復(fù)系統(tǒng)狀態(tài)。無疑,當(dāng)前任務(wù)在CPU通過軟件相互作用之前不會被調(diào)度。
關(guān)于外殼22和處理器12之間的任務(wù)級接口,外殼22和處理器12之間的邊界是考慮以下觀點繪制的外殼允許對所有處理器重用其微型體系結(jié)構(gòu)。外殼沒有關(guān)于特定功能問題的語義知識。外殼構(gòu)成關(guān)于整個通信系統(tǒng)的抽象概念。從處理器的觀點看,不同的任務(wù)彼此是不知道的。
上面剛剛描述的操作是由來自處理器的讀調(diào)用、寫調(diào)用、getspace調(diào)用、putspace調(diào)用或gettask調(diào)用初始化的。
根據(jù)圖2的系統(tǒng)體系結(jié)構(gòu)支持多任務(wù),這意味著幾個應(yīng)用任務(wù)可以映射到一個處理器。對于配置大范圍的應(yīng)用并在數(shù)據(jù)處理系統(tǒng)中的不同地方重新應(yīng)用相同的硬件處理器,在實現(xiàn)體系結(jié)構(gòu)的靈活性時多任務(wù)支持是很重要的。很清楚,多任務(wù)意味著當(dāng)處理時需要一個任務(wù)調(diào)度單元來決定在哪個時間點哪個任務(wù)處理器必須執(zhí)行以獲得正確的應(yīng)用前進。優(yōu)選實施方案的數(shù)據(jù)處理系統(tǒng)目標(biāo)在于無規(guī)律的數(shù)據(jù)依賴流處理和動態(tài)工作負荷,任務(wù)調(diào)度不是離線而是在線執(zhí)行的,以便能夠考慮實際情況。相對于固定的編譯時調(diào)度,該任務(wù)調(diào)度是在運行時執(zhí)行的。
優(yōu)選地,處理器12顯式地決定任務(wù)執(zhí)行過程中它可以中斷運行任務(wù)的時刻。因此,硬件體系結(jié)構(gòu)不必在任意時間點都提供保存環(huán)境。處理器可以繼續(xù)處理,直到它幾乎沒有或完全沒有狀態(tài)的點。這些就是處理器可以最容易地執(zhí)行任務(wù)的時刻。
在這些時刻,處理器12向外殼22詢問它接下來應(yīng)當(dāng)處理哪個任務(wù)。這種查詢是通過gettask調(diào)用完成的。這種查詢之間的時間間隔被視為處理步。通常,處理步包括讀入一個或多個數(shù)據(jù)包、對獲得的數(shù)據(jù)執(zhí)行某些操作及寫出一個或多個數(shù)據(jù)包。
任務(wù)調(diào)度單元駐留在外殼22中,實現(xiàn)gettask功能。處理器12在每個處理步之前都執(zhí)行g(shù)ettask調(diào)用。返回值是任務(wù)ID,一個表示任務(wù)環(huán)境的小非負數(shù)。從而,根據(jù)處理器12的請求,調(diào)度程序向處理器12提供下一個最合適的任務(wù)。這種結(jié)構(gòu)可以看作是具有由處理器12提供的切換點的無優(yōu)先權(quán)調(diào)度。調(diào)度單元不能中斷處理器12;它等待處理器12完成一個處理步,然后請求新任務(wù)。
對于具有動態(tài)工作負荷、對臨時超載情況的可預(yù)測特性、幾個時鐘周期內(nèi)的下一任務(wù)選擇及算法簡單性、適于在每個外殼中用低成本硬件實現(xiàn)的應(yīng)用,根據(jù)本發(fā)明的任務(wù)調(diào)度算法應(yīng)當(dāng)顯示其有效性。
多任務(wù)應(yīng)用是通過將適當(dāng)?shù)娜蝿?wù)初始化(instantiating)到一個多任務(wù)處理器來實現(xiàn)的。任何一個任務(wù)的行為都不能對共享同一處理器的其它任務(wù)的行為造成負面影響。因此,調(diào)度程序防止需要比分配給其資源更多資源的任務(wù)妨礙其它任務(wù)的前進。
在典型情況下,所有任務(wù)工作負荷的總和優(yōu)選地不超過處理器的計算能力,以允許媒體數(shù)據(jù)流的實時吞吐量。對于具有數(shù)據(jù)依賴行為的任務(wù),臨時超載情況可能發(fā)生在最壞的情況下。
假定處理步的短周期,由于它確保每個任務(wù)都能以足夠高的頻率得到服務(wù),因此循環(huán)(round-robin)型任務(wù)選擇適合我們的實時性能要求。
系統(tǒng)設(shè)計者在配置時將這種資源預(yù)算分配給每個任務(wù)。任務(wù)調(diào)度單元必須支持管轄(policing)策略以確保預(yù)算保護。調(diào)度程序通過將預(yù)算關(guān)聯(lián)到任務(wù)的精確執(zhí)行時間來實現(xiàn)資源預(yù)算的管制。調(diào)度程序利用時間片作為測量單位,即預(yù)定的固定個數(shù)的周期,通常大約是一個處理步的長度。任務(wù)預(yù)算以多個時間片給出。任務(wù)調(diào)度程序?qū)⑦\行預(yù)算初始化為新選擇任務(wù)的預(yù)算。外殼在每個時間片將活動任務(wù)替換的運行預(yù)算遞減。因此,預(yù)算與處理步的長度無關(guān),并且調(diào)度程序?qū)⒒顒尤蝿?wù)限定到由其預(yù)算給出的時間片個數(shù)。
這種每任務(wù)預(yù)算的實現(xiàn)有兩方面的用途共享一個處理器的任務(wù)的相對預(yù)算值控制任務(wù)對計算資源的劃分,而絕對預(yù)算值控制會影響狀態(tài)保存與恢復(fù)的相對開銷的任務(wù)切換頻率。
當(dāng)活動任務(wù)阻塞通信時,運行預(yù)算被放棄。當(dāng)阻塞任務(wù)返回調(diào)度預(yù)算時,下一個任務(wù)立即啟動。因此,通過更頻繁地消耗它們的預(yù)算,具有足夠工作負荷的任務(wù)可以利用多余的計算時間。
處理器中任務(wù)的絕對預(yù)算決定這些任務(wù)的運行時間,從而決定處理器的任務(wù)切換率。反過來,處理器的任務(wù)切換率又與其所有流的緩沖大小有關(guān)。任務(wù)切換率越低意味著任務(wù)睡眠時間越長,從而導(dǎo)致更大的緩沖要求。因此,任務(wù)切換率優(yōu)選地應(yīng)當(dāng)比較高,從而基本任務(wù)切換時間是不可接受的。理想地,處理器的任務(wù)切換時間應(yīng)當(dāng)比單個處理步短,從而允許每一次的任務(wù)切換。這將允許分配最低的絕對預(yù)算和最小的流緩沖。
根據(jù)本發(fā)明的任務(wù)具有動態(tài)工作負荷。它們可以是依賴于執(zhí)行時間、流選擇和/或包大小的數(shù)據(jù)。由于它不能預(yù)先確定任務(wù)是否可以前進,因此這種數(shù)據(jù)依賴性影響調(diào)度程序的設(shè)計。執(zhí)行“最佳猜想”的調(diào)度單元作為根據(jù)本發(fā)明的一種實施方案進行了描述。通過在大多數(shù)情況下選擇正確的任務(wù),而在其它情況下恢復(fù)時只有有限的惡化,這種類型的調(diào)度程序是有效的。調(diào)度程序的目的是提高處理器的利用率,并進行調(diào)度使任務(wù)能夠盡可能多地前進。由于任務(wù)的數(shù)據(jù)依賴性操作,因此它不能保證所選擇的任務(wù)可以完成一個處理步。
如果一個任務(wù)至少有一些可用的工作負荷,則該任務(wù)是可運行的。如果任務(wù)配置成在配置時激活,則設(shè)置任務(wù)使能標(biāo)志。調(diào)度標(biāo)志也是一個配置參數(shù),對每個流顯示調(diào)度程序是否必須考慮這個流對于任務(wù)運行性的可用空間??臻g參數(shù)保留流中的可用數(shù)據(jù)或空間,通過putspace操作在運行時被更新??蛇x地,如果任務(wù)的最后一個getspace查詢沒有得到足夠的空間,則阻塞標(biāo)志在運行時設(shè)置。
如果任務(wù)由于沒有足夠的空間而不能前進,則關(guān)于其一個流的getspace查詢必定返回false。外殼22a、22b為每個流都保持一個阻塞標(biāo)志,不包括最后一個getspace查詢的結(jié)果值當(dāng)出現(xiàn)這樣一個阻塞標(biāo)志時,任務(wù)就不能再運行,而且任務(wù)調(diào)度單元不會在后續(xù)的gettask請求時再次發(fā)出這個任務(wù),直到其阻塞標(biāo)志復(fù)位。這種機制幫助任務(wù)調(diào)度單元選擇在處理器流I/O選擇或包大小是數(shù)據(jù)依賴的且不能由調(diào)度程序預(yù)測的情況下仍能夠前進的任務(wù)。
應(yīng)當(dāng)指出,在一次getspace請求失敗后,活動任務(wù)可以發(fā)出第二次更少字節(jié)數(shù)的getspace查詢,從而復(fù)位阻塞標(biāo)志。當(dāng)外部“putspace”增加阻塞流的空間時,外殼清除阻塞標(biāo)志。
任務(wù)的運行性基于任務(wù)的可用工作負荷。所有與任務(wù)關(guān)聯(lián)的流都必須有足夠的輸入數(shù)據(jù)或輸出空間以允許至少一個處理步的完成。外殼,包括任務(wù)調(diào)度單元,不會解釋媒體數(shù)據(jù),也不明白數(shù)據(jù)包。每個任務(wù)的數(shù)據(jù)包大小可以不同,而且包大小可以是數(shù)據(jù)依賴的。因此,由于它不明白任務(wù)打算在哪個流請求多少空間,所以調(diào)度程序沒有足夠的信息來保證getspace動作的成功。
無須考慮有多少空間可用于任務(wù)執(zhí)行或者是任務(wù)執(zhí)行所要求的,通過選擇至少對所有關(guān)聯(lián)流都有一些可用工作負荷(即,空間>0)的任務(wù),調(diào)度單元發(fā)出“最佳猜想”。不管足以完成單個處理步的量是多少,檢查緩沖中是否有一些數(shù)據(jù)或空間可用,情況是消耗和產(chǎn)生任務(wù)以相同的粒度大小同步。因此,如果數(shù)據(jù)或空間可用,那么這至少是執(zhí)行一個處理步所需的數(shù)據(jù)或空間量。消耗和產(chǎn)生任務(wù)以相同的操作邏輯單位,即相同的處理步粒度,工作。例如,如果緩沖中有一些數(shù)據(jù)但不夠,那么這表示產(chǎn)生任務(wù)當(dāng)前是活動的,而且缺少的數(shù)據(jù)將足夠快地達到,使得消耗任務(wù)等待而不是執(zhí)行任務(wù)切換。
輸入或輸出流的選擇可以依賴于要處理的數(shù)據(jù)。這意味著即使對于任務(wù)的有些關(guān)聯(lián)流空間=0,只要它不訪問這些流,任務(wù)就仍然可以運行。因此,調(diào)度程序要考慮每個流的調(diào)度標(biāo)志。false調(diào)度標(biāo)志表示不清楚任務(wù)是否打算訪問這個流,而且調(diào)度程序必須跳過對這個流的“空間>0”運行性測試。但是,如果已選擇任務(wù)并隨后由于這個流中不可用的數(shù)據(jù)或空間而阻塞,則設(shè)置阻塞標(biāo)志。設(shè)置阻塞標(biāo)志確保調(diào)度單元不會再次選擇這個任務(wù),直到該阻塞流至少有一些可用的空間。
對于可升級系統(tǒng),處理器應(yīng)當(dāng)盡可能自治。為此,采用未同步的分布式任務(wù)調(diào)度單元,其中每個處理器外殼都有其自己的任務(wù)調(diào)度單元。處理器是松耦合的,這意味著在時間片內(nèi)緩沖器可以橋接,一個處理器中任務(wù)的調(diào)度獨立于另一處理器中任務(wù)的瞬間調(diào)度。在一個比緩沖器可橋接大的時間片上,由于共享緩沖器中的數(shù)據(jù)流同步,不同處理器中的任務(wù)調(diào)度是耦合的。
根據(jù)圖2的系統(tǒng)體系結(jié)構(gòu)支持相對高性能、高數(shù)據(jù)吞吐量的應(yīng)用。由于包含流式FIFO緩沖器的芯片上存儲器的有限尺寸,因此需要高數(shù)據(jù)同步和任務(wù)切換率。無須優(yōu)先權(quán)調(diào)度的中斷驅(qū)動任務(wù)切換,處理步的周期必須保持小到允許足夠良好顆粒的任務(wù)切換。處理器-外殼接口允許非常高的任務(wù)切換率以滿足這些需求,而且能夠本地自治實現(xiàn),而不需要來自主CPU的干涉。優(yōu)選地,對應(yīng)于微秒級的處理步周期,gettask調(diào)用以每十個至一千個時鐘周期一次的速率執(zhí)行。
圖3示出了根據(jù)以根據(jù)圖2數(shù)據(jù)處理系統(tǒng)為基礎(chǔ)的優(yōu)選實施方案的任務(wù)調(diào)度過程的流程圖。但是,在這種實施方案中外殼22中讀/寫單元和同步單元的存在不是必須的。
任務(wù)調(diào)度過程在步驟S1由處理器12a執(zhí)行針對所述處理器12a外殼22a中調(diào)度單元的gettask調(diào)用初始化。外殼22a的調(diào)度單元接收gettask調(diào)用并啟動任務(wù)選擇。在步驟S2中,任務(wù)調(diào)度單元確定當(dāng)前任務(wù)是否仍然可以運行,即能夠運行。當(dāng)輸入流中有可用數(shù)據(jù)且輸出流中有可用空間時,任務(wù)可以運行。任務(wù)調(diào)度單元還確定當(dāng)前任務(wù)的運行預(yù)算是否大于0。在步驟S3中,如果當(dāng)前任務(wù)可運行且其運行預(yù)算大于0,則任務(wù)調(diào)度單元將當(dāng)前任務(wù)的task_ID返回到所關(guān)聯(lián)的處理器12a,表示處理器12a打算繼續(xù)處理該當(dāng)前任務(wù)。處理器12a將繼續(xù)處理該當(dāng)前任務(wù),直到發(fā)出下一個gettask調(diào)用。
但是,如果運行預(yù)算為0或者如果當(dāng)前任務(wù)不可運行,例如由于輸入流中缺少數(shù)據(jù),則流程跳到步驟S4。在這里,任務(wù)調(diào)度單元必須選擇下一個將由處理器12a處理的任務(wù)。任務(wù)調(diào)度單元從可運行任務(wù)列表中按round-robin順序選擇下一個任務(wù)。在步驟S5中,下一個任務(wù)的運行預(yù)算設(shè)置為任務(wù)表的對應(yīng)設(shè)置參數(shù),而在步驟S6中,這個任務(wù)的task_ID返回到處理器12a。然后,處理器12a將啟動下一個任務(wù)的處理,直到發(fā)出下一個gettask調(diào)用。
接下來將更加詳細地描述對下一個任務(wù)的實際選擇。這種任務(wù)選擇可以在調(diào)度單元一接收到gettask調(diào)用后就立即執(zhí)行,或者調(diào)度單元也可以在接收下一個gettask調(diào)用之前開始選擇過程,從而當(dāng)調(diào)度單元接收到gettask調(diào)用時,選擇結(jié)果,即下一個任務(wù),已經(jīng)在附近了,從而處理器不必等待其gettask調(diào)用的返回。由于處理器12a以有規(guī)律的時間間隔發(fā)出gettask調(diào)用,因此這變得有可能,其中所述時間間隔是處理步。
優(yōu)選地,外殼22a、22b的調(diào)度單元包括流表和任務(wù)表。調(diào)度單元利用任務(wù)表配置和管理映射到其關(guān)聯(lián)處理器12a、12b的不同任務(wù)。這些局部表允許快速訪問。該表對每個任務(wù)都包含一行字段。該表優(yōu)選地包含流表中關(guān)聯(lián)到任務(wù)的第一數(shù)據(jù)流的索引、表示是否允許任務(wù)運行并具有需要的可用資源的使能位及參數(shù)化任務(wù)調(diào)度單元并保證任務(wù)中的處理公平性的預(yù)算字段。
任務(wù)調(diào)度單元一個接一個地重復(fù)檢查流表中的所有流,以確定它們是否可以運行。如果它包含非0空間或者如果其調(diào)度標(biāo)志未設(shè)置且其阻塞標(biāo)志也未設(shè)置,則一個流被視為允許運行,即可運行的。然后,任務(wù)調(diào)度單元一個接一個地檢查任務(wù)表中的所有任務(wù),看它們是否可以運行。如果其關(guān)聯(lián)的所有流都可運行且設(shè)置了任務(wù)使能標(biāo)志,則一個任務(wù)被視為可以運行。任務(wù)調(diào)度單元的下一個步驟是從所述任務(wù)表中選擇下一個將由處理器12a處理的可運行任務(wù)。
單獨的過程每個時間片都消耗由外殼22a、22b中時鐘分割器定義的運行預(yù)算。
由于對軟件實現(xiàn)來說任務(wù)切換率太高了,因此外殼在專用硬件中實現(xiàn)任務(wù)調(diào)度單元。任務(wù)調(diào)度單元必須在幾個時鐘周期內(nèi)提供對gettask請求的答復(fù)。
任務(wù)調(diào)度單元還可以在后臺過程中為新任務(wù)準(zhǔn)備建議,以便當(dāng)gettask請求達到時該建議立即可用。此外,它對“運行預(yù)算”計數(shù)器保持跟蹤,以控制在處理器中調(diào)度的每個任務(wù)保持的周期。
相對于緩沖器的實際狀態(tài),任務(wù)選擇允許滯后。只有活動任務(wù)減少流緩沖器中的空間,而所有外部同步putspace消息都增加緩沖器中的空間。因此,準(zhǔn)備好運行的任務(wù)保持可運行,而外部同步消息更新緩沖器的空間值。因此,調(diào)度程序可以實現(xiàn)為拉機制(pull mechanism),其中不考慮即將到來的同步消息,調(diào)度程序周期性地在流表中循環(huán)并更新每個任務(wù)的運行性標(biāo)志。這種調(diào)度與同步之間的分離允許調(diào)度程序的較小時間關(guān)鍵實現(xiàn),同時又最小化了同步命令的等待時間。
gettask請求還可以包含一個“active_blocked”標(biāo)志,當(dāng)處理步由于阻塞數(shù)據(jù)而過早終止時該標(biāo)志由處理器激活。這個標(biāo)志使活動任務(wù)的“可運行”狀態(tài)被立即清除。這種快速反饋對調(diào)度過程中的等待時間進行補償,并允許調(diào)度程序立即對不同的任務(wù)作出響應(yīng)。
對于在一組結(jié)合了實時和動態(tài)行為的媒體應(yīng)用上重用計算硬件,根據(jù)本發(fā)明優(yōu)選實施方案的系統(tǒng)體系結(jié)構(gòu)提供成本有效且可以升級的解決方案。每個處理器外殼中的任務(wù)調(diào)度單元觀測可用的工作負荷并識別數(shù)據(jù)依賴行為,同時保證每個任務(wù)最小化的計算預(yù)算和最大化的睡眠時間。非常高的任務(wù)切換率利用外殼的硬件實現(xiàn)來支持。調(diào)度是分布式的。每個處理器的任務(wù)是由它們各自的外殼獨立調(diào)度的。
圖4說明了讀寫過程及其關(guān)聯(lián)的同步操作。從處理器的角度看,數(shù)據(jù)流看起來就象是具有當(dāng)前訪問點的無限數(shù)據(jù)帶。從處理器發(fā)出的getspace調(diào)用請求允許訪問由圖4a中小箭頭所示當(dāng)前訪問點之前的特定數(shù)據(jù)空間。如果這種許可被授權(quán),則處理器可以在所請求的空間,即圖4b的加框窗口,內(nèi)利用由n_bytes自變量表示的變長數(shù)據(jù)和由offset自變量表示的任意訪問位置執(zhí)行讀寫動作。
如果許可未被授權(quán),則調(diào)用返回false。在一個或多個getspace調(diào)用及可選地幾個讀/寫動作后,處理器可以確定它是否完成了處理或數(shù)據(jù)空間的一部分,并發(fā)出putspace調(diào)用。這種調(diào)用使訪問點提前了確定的幾個字節(jié),即圖4d中的n_bytes2,其中這個大小受先前準(zhǔn)許的空間限制。
圖4描述了循環(huán)FIFO存儲器。交換數(shù)據(jù)流需要優(yōu)選地具有有限且恒定大小的FIFO緩沖。優(yōu)選地,它在存儲器中是預(yù)先分配的,為了在線性存儲器地址范圍內(nèi)有正確的FIFO行為,應(yīng)用循環(huán)尋址機制。
圖4中心的旋轉(zhuǎn)箭頭50表示來自處理器的getspace調(diào)用確認讀/寫準(zhǔn)許窗口的方向,這與putspace調(diào)用向前移動訪問點的方向是同一個方向。小箭頭51、52表示任務(wù)A和B的當(dāng)前訪問點。在這個例子中,A是寫入裝置,從而留下正確的數(shù)據(jù),而B是讀取裝置,留下空閑的空間(或無意義的垃圾)。每個訪問點之前的陰影區(qū)域(A1、B1)表示通過getspace操作獲得的訪問窗口。
由于多任務(wù),任務(wù)A和B可以不同的速度前進,和/或在有些時間周期內(nèi)得不到服務(wù)。外殼22a、22b提供任務(wù)A和B在其上利用消息運行的處理器12a、12b,以確保A和B的訪問點保持它們各自的順序,或者更嚴(yán)格地說,確保準(zhǔn)許的訪問窗口決不會重疊。利用由外殼22a、22b提供的信息是處理器12a、12b的責(zé)任,從而實現(xiàn)全局的功能正確性。例如,外殼22a、22b有時候可以對來自處理器的getspace請求回答false,例如由于緩沖器中沒有足夠的可用空間。然后,根據(jù)被拒絕的訪問請求,處理器應(yīng)當(dāng)避免訪問緩沖器。
外殼22a、22b是分布式的,從而每個外殼都可以在與其關(guān)聯(lián)的處理器12a、12b附近實現(xiàn)。每個外殼都局部包括附屬于映射到其處理器的任務(wù)的流配置數(shù)據(jù),并局部實現(xiàn)所有正確管理該數(shù)據(jù)的控制邏輯。因此,局部流表在為每個流,或者換句話說為每個訪問點,都包含一行字段的外殼22a、22b中實現(xiàn)。
為了管理圖4的結(jié)構(gòu),任務(wù)A與B的處理器外殼22a、22b的流表每個都包含這樣一行,保留一個包含(可能是悲觀的)這個緩沖中從其自己訪問點到另一訪問點的距離的“空間”字段及表示具有這個緩沖中該另一訪問點任務(wù)和端口的遠程外殼的ID。另外,為了支持所提到的地址增量,所述局部流表還可以包含一個對應(yīng)于緩沖器基地址和緩沖器大小的當(dāng)前訪問點和編碼的存儲器地址。
這些流表優(yōu)選地是映射到每個所述外殼22的小存儲器,如寄存器文件,中的存儲器。因此,通過將所請求的大小與局部存儲的可用空間進行比較,getspace調(diào)用可以立即、局部地得到回答。當(dāng)putspace調(diào)用后,這個局部空間字段立即減少所指示的量,并且有一個putspace消息發(fā)送到保留先前訪問點的另一個外殼以增加其空間值。相應(yīng)地,當(dāng)從遠程源接收到這種put消息后,外殼22立即增加該局部字段。由于消息在外殼之間傳輸需要時間,因此在不需要將這兩個空間字段相加達到整個緩沖大小但可能瞬間包含悲觀值的地方,有可能發(fā)出現(xiàn)問題。但是,這不會妨礙同步安全性。這甚至有可能發(fā)生在多個消息同時處于到達其目的地的途中及它們未能按順序得到服務(wù)的意外情況下,但即使在這種情況下,同步仍然保持正確。
圖5示出了更新每個外殼中局部空間值并發(fā)送“putspace”消息的機制。在這種結(jié)構(gòu)中,通過將所請求的大小與局部存儲的空間信息進行比較,來自處理器12a、12b的getspace請求,即getspace調(diào)用,可以立即、局部地在所關(guān)聯(lián)的外殼22a、22b中得到回答。當(dāng)收到putspace調(diào)用后,局部外殼22a、22b立即將其空間字段減少所指示的量,并將putspace消息發(fā)送到遠程外殼。遠程外殼,即另一處理器的外殼,保留另一個訪問點并增加其空間值。相應(yīng)地,當(dāng)從遠程源接收到這種putspace消息后,局部外殼立即增加其空間字段。
屬于訪問點的空間字段通過兩個源修改當(dāng)本地putspace調(diào)用后立即減少,而當(dāng)接收到putspace消息后立即增加。如果這種增加或減少未實現(xiàn)為原子操作,則這樣做會導(dǎo)致錯誤的結(jié)果。在這種情況下,單獨的本地空間和遠程空間字段可以使用,每個字段都只由單個源更新。當(dāng)本地getspace調(diào)用后,這些值立即減小。外殼22始終控制其自己局部表的更新并以原子方式執(zhí)行這些操作。很清楚,這只是一個外殼實現(xiàn)的問題,它對其外部功能性是不可見的。
如果getpsace調(diào)用返回false,則處理器可以自由決定如何反應(yīng)??赡苄杂?,a)處理器可以發(fā)出帶有更小n_bytes自變量的新getspace調(diào)用,b)處理器可以等一會兒,然后再試,或者c)處理器可以停止當(dāng)前任務(wù)并允許該處理器上的另一任務(wù)繼續(xù)。
這使得任務(wù)切換決定可以依賴于更多數(shù)據(jù)的期望到達時間和具有關(guān)聯(lián)狀態(tài)保存成本的內(nèi)部累計狀態(tài)的量。對于不可編程的專用硬件處理器,這種決定是體系結(jié)構(gòu)設(shè)計過程的一部分。狀態(tài)保存和恢復(fù)是處理器而不是任務(wù)調(diào)度程序的責(zé)任。處理器可以各種方式實現(xiàn)狀態(tài)保存和恢復(fù),例如-處理器對于每個局部屬于該處理器的任務(wù)都具有顯式的狀態(tài)存儲器。
-處理器利用getspace、讀、寫和putspace原語將狀態(tài)保存并恢復(fù)到共享存儲器中。
-處理器通過獨立于處理器-外殼接口的接口將狀態(tài)保存并恢復(fù)到外部存儲器中。
盡管特定實例可能會造成這些差別,但外殼22的實現(xiàn)和操作不會在讀寫端口之間造成差別。由外殼22實現(xiàn)的操作有效地隱藏實現(xiàn)細節(jié),如FIFO緩沖器的大小、它在存儲器中的位置、存儲界限循環(huán)FIFO的地址環(huán)繞機制、高速緩存策略、高速緩存一致性、全局I/O排列限制、數(shù)據(jù)總線寬度、存儲器排列限制、通信網(wǎng)絡(luò)結(jié)構(gòu)及存儲器組織。
優(yōu)選地,外殼22a、22b以未格式化的字節(jié)序列進行工作。在交換數(shù)據(jù)流的寫入裝置與讀取裝置所使用同步包的大小之間不需要任何關(guān)聯(lián)。數(shù)據(jù)內(nèi)容的語義解釋留給處理器。任務(wù)不知道應(yīng)用圖形關(guān)聯(lián)(graphincidence)結(jié)構(gòu),例如它與哪些其它任務(wù)通信,以及這些任務(wù)映射到哪些處理器,或者哪些其它任務(wù)映射到同一處理器。
在外殼22的高性能實現(xiàn)中,讀調(diào)用、寫調(diào)用、getspace調(diào)用、putspace調(diào)用可以通過外殼22a、22b的讀/寫單元和同步單元并行發(fā)出。作用在外殼22不同端口上的調(diào)用沒有任何共同的排序約束,而作用在外殼22同一端口上的調(diào)用必須根據(jù)調(diào)用任務(wù)或處理器進行排序。對于這些情況,在軟件實現(xiàn)中通過功能調(diào)用的返回,而在硬件實現(xiàn)中通過提供應(yīng)答信號,當(dāng)前一個調(diào)用返回時,來自處理器的下一個調(diào)用可以發(fā)布。
為了在由port_ID和offset自變量表示的位置執(zhí)行將數(shù)據(jù)從存儲器預(yù)取到外殼高速緩存的任務(wù),讀調(diào)用中大小自變量,即n_bytes,的0值可以保留。這種操作可用于由外殼執(zhí)行的自動預(yù)取。類似地,盡管自動高速緩存的轉(zhuǎn)儲清除是外殼的責(zé)任,但對于高速緩存的轉(zhuǎn)儲清除請求,寫調(diào)用中的0值可以保留。
可選地,所有5種操作都接收附加的最后一個task_ID自變量。這通常是一個作為結(jié)果值從前面gettask調(diào)用獲得的小正數(shù)。對于不是任務(wù)專用但關(guān)于處理器控制的調(diào)用,該自變量的0值保留。
在基于根據(jù)圖2和圖3優(yōu)選實施方案的另一實施方案中,特定功能的專用處理器可以由可編程處理器代替,而優(yōu)選實施方案的其它特征保持不變。根據(jù)在可編程處理器上實現(xiàn)的程序,每個處理器都專用于執(zhí)行有限范圍的流處理。根據(jù)其程序設(shè)計,每個處理器都布置成將相同的處理操作重復(fù)應(yīng)用到連續(xù)的流數(shù)據(jù)對象。優(yōu)選地,任務(wù)調(diào)度程序也用可以在關(guān)聯(lián)處理器上運行的軟件實現(xiàn)。
權(quán)利要求
1.一種數(shù)據(jù)處理系統(tǒng),包括-用于處理數(shù)據(jù)對象流的第一和至少一個第二處理器,所述第一處理器布置成將來自數(shù)據(jù)對象流的數(shù)據(jù)對象傳送到第二處理器,所述第二處理器是能夠交叉處理第一和第二任務(wù)的多任務(wù)處理器,其中所述第一和第二任務(wù)分別處理第一和第二數(shù)據(jù)對象流;-通信網(wǎng)絡(luò);及-每個所述第二處理器的一個任務(wù)調(diào)度裝置,所述任務(wù)調(diào)度裝置以操作方式布置在所述第二處理器和所述通信網(wǎng)絡(luò)之間;其中每個所述第二處理器的任務(wù)調(diào)度裝置控制該第二處理器的任務(wù)調(diào)度。
2.如權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中所述第二處理器布置成管理每個任務(wù)的多個入站和出站流和/或多個流。
3.如權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中所述任務(wù)調(diào)度裝置適于當(dāng)從所述第二處理器接收到請求后立即確定將由所述第二處理器處理的下一任務(wù),并將所述下一任務(wù)的標(biāo)識轉(zhuǎn)發(fā)到所述第二處理器,其中所述第二處理器以連續(xù)的時間間隔請求下一任務(wù);所述時間間隔代表所述第二處理器的處理步。
4.如權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中所述第二處理器及其關(guān)聯(lián)的任務(wù)調(diào)度裝置之間的通信是主/從通信,所述第二處理器充當(dāng)主控裝置。
5.如權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中所述第二處理器是執(zhí)行一組參數(shù)化流處理功能的特定功能專用處理器。
6.如權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中所述任務(wù)調(diào)度裝置包括-用于存儲與映射到關(guān)聯(lián)處理器的任務(wù)關(guān)聯(lián)的每個流參數(shù)的流表,所述流表包含每個流的各種管理數(shù)據(jù),和/或-管理關(guān)聯(lián)到所述第二處理器的不同任務(wù)的任務(wù)表,所述任務(wù)表包含表示哪個流關(guān)聯(lián)到所述任務(wù)的流表索引、每個任務(wù)一個表示是否允許任務(wù)執(zhí)行的使能標(biāo)志和/或表示每個任務(wù)可用處理預(yù)算的預(yù)算計數(shù)器。
7.如權(quán)利要求6所述的數(shù)據(jù)處理系統(tǒng),其中所述流表包含用于讀取的有效數(shù)據(jù)量、用于寫入的可用空間量、關(guān)于運行任務(wù)是否在讀或?qū)懰隽鲿r阻塞的信息和/或?qū)⑺隽麝P(guān)聯(lián)到任務(wù)的配置信息。
8.如權(quán)利要求6所述的數(shù)據(jù)處理系統(tǒng),其中所述任務(wù)調(diào)度裝置適于檢查所述流表中的所有流并確定哪個所述流允許任務(wù)前進,其中如果a)該流具有可讀的有效數(shù)據(jù)或可寫的可用空間,b)任務(wù)未請求比該流中可用數(shù)據(jù)或空間更多的有效數(shù)據(jù)或空間和/或c)選項a)、b)配置成與任務(wù)前進無關(guān),則流允許前進。
9.如權(quán)利要求6或8所述的數(shù)據(jù)處理系統(tǒng),其中所述任務(wù)調(diào)度裝置適于檢查所述任務(wù)表中的所有任務(wù)并確定允許哪個所述任務(wù)運行,其中如果與所述任務(wù)關(guān)聯(lián)的所有流都允許任務(wù)前進且任務(wù)配置成可運行,則允許任務(wù)運行。
10.如權(quán)利要求6、7、8或9所述的數(shù)據(jù)處理系統(tǒng),其中所述任務(wù)調(diào)度裝置適于從多個作為接下來要處理的任務(wù)的配置任務(wù)中選擇一個任務(wù)。
11.如權(quán)利要求1或9所述的數(shù)據(jù)處理系統(tǒng),其中所述任務(wù)調(diào)度裝置包括用于控制當(dāng)前任務(wù)資源預(yù)算的預(yù)算計數(shù)器裝置。
12.如權(quán)利要求1或11所述的數(shù)據(jù)處理系統(tǒng),其中所述任務(wù)調(diào)度裝置適于利用每個任務(wù)的資源預(yù)算參數(shù),其中所述資源預(yù)算參數(shù)限制處理器被相關(guān)任務(wù)連續(xù)占用的時間。
13.如權(quán)利要求12所述的數(shù)據(jù)處理系統(tǒng),其中所述任務(wù)調(diào)度裝置適于當(dāng)從所述第二處理器接收到請求后立即選擇在當(dāng)前任務(wù)之后要處理的下一個任務(wù),其中如果當(dāng)前任務(wù)仍然允許運行并且其資源預(yù)算未耗盡,則當(dāng)前任務(wù)允許繼續(xù)運行;其中不然的話則由所述任務(wù)調(diào)度裝置確定的下一任務(wù)被選作新的當(dāng)前任務(wù)。
14.如權(quán)利要求13所述的數(shù)據(jù)處理系統(tǒng),其中所述任務(wù)調(diào)度裝置適于選擇允許以循環(huán)順序運行的下一任務(wù)。
15.如權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中所述任務(wù)調(diào)度裝置適于在所述第二處理器接請求下一個任務(wù)之前選擇接下來要處理的任務(wù),從而所選下一任務(wù)的標(biāo)識可以立即返回到所述第二處理器。
16.如權(quán)利要求12、13或14所述的數(shù)據(jù)處理系統(tǒng),其中所述預(yù)算計數(shù)器是由事件根據(jù)實時時鐘更新的。
17.如權(quán)利要求12、13或14所述的數(shù)據(jù)處理系統(tǒng),其中所述任務(wù)調(diào)度裝置適于當(dāng)其被選擇成為當(dāng)前任務(wù)時補充下一任務(wù)的預(yù)算。
18.如權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中所述第二處理器是執(zhí)行一組可編程參數(shù)化流處理功能的可編程處理器。
19.用于數(shù)據(jù)處理系統(tǒng)的任務(wù)調(diào)度程序,所述系統(tǒng)包括用于處理數(shù)據(jù)對象流的第一和至少一個第二處理器、通信網(wǎng)絡(luò)及存儲器,所述第一處理器布置成將來自數(shù)據(jù)對象流的數(shù)據(jù)對象傳送到第二處理器,其中-任務(wù)調(diào)度程序適于關(guān)聯(lián)到一個所述第二處理器,-任務(wù)調(diào)度程序適于操作性布置在所述第二處理器和所述通信網(wǎng)絡(luò)之間;及-任務(wù)調(diào)度程序適于控制所述關(guān)聯(lián)第二處理器的任務(wù)調(diào)度。
20.如權(quán)利要求19所述的任務(wù)調(diào)度程序,其中所述任務(wù)調(diào)度程序適于當(dāng)從所述第二處理器接收到請求后立即確定將由該第二處理器處理的下一任務(wù),并將所述下一任務(wù)的標(biāo)識轉(zhuǎn)發(fā)到所述第二處理器,其中所述第二處理器以預(yù)定的時間間隔請求下一任務(wù);所述時間間隔代表所述第二處理器的處理步。
21.如權(quán)利要求19所述的任務(wù)調(diào)度程序,還包括-用于存儲與映射到關(guān)聯(lián)處理器的任務(wù)關(guān)聯(lián)的每個流參數(shù)的流表,所述流表包含每個流的各種管理數(shù)據(jù),和/或-管理關(guān)聯(lián)到所述第二處理器的不同任務(wù)的任務(wù)表,所述任務(wù)表包含表示哪個流關(guān)聯(lián)到所述任務(wù)的流表索引、每個任務(wù)一個表示是否允許任務(wù)執(zhí)行的使能標(biāo)志和/或表示每個任務(wù)可用處理預(yù)算的預(yù)算計數(shù)器。
22.如權(quán)利要求19所述的任務(wù)調(diào)度程序,其中所述流表包含用于讀取的有效數(shù)據(jù)量、用于寫入的可用空間量、關(guān)于運行任務(wù)是否在讀或?qū)懰隽鲿r阻塞的信息和/或?qū)⑺隽麝P(guān)聯(lián)到任務(wù)的配置信息。
23.如權(quán)利要求21所述的任務(wù)調(diào)度程序,適于檢查所述流表中的所有流并確定哪個所述流允許任務(wù)前進,其中如果a)該流具有可讀的有效數(shù)據(jù)或可寫的可用空間,b)任務(wù)未請求比該流中可用數(shù)據(jù)或空間更多的有效數(shù)據(jù)或空間和/或c)選項a)、b)配置成與任務(wù)前進無關(guān),則流允許前進。
24.如權(quán)利要求21或23所述的任務(wù)調(diào)度程序,適于檢查所述任務(wù)表中的所有任務(wù)并確定允許哪個所述任務(wù)運行,其中如果與所述任務(wù)關(guān)聯(lián)的所有流都允許任務(wù)前進且任務(wù)配置成可運行,則允許任務(wù)運行。
25.如權(quán)利要求24所述的任務(wù)調(diào)度程序,適于當(dāng)從所述第二處理器接收到請求后立即選擇在當(dāng)前任務(wù)之后要處理的下一個任務(wù);其中如果當(dāng)前任務(wù)仍然允許運行并且所述任務(wù)表中的預(yù)算計數(shù)器非0,則當(dāng)前任務(wù)允許繼續(xù)運行,其中不然的話則由所述任務(wù)調(diào)度裝置確定的下一任務(wù)被選作新的當(dāng)前任務(wù)并復(fù)位預(yù)算計數(shù)器。
26.如權(quán)利要求21、22、23或24所述的任務(wù)調(diào)度程序,適于從多個作為接下來要處理的任務(wù)的配置任務(wù)中選擇一個任務(wù)。
27.如權(quán)利要求19或24所述的任務(wù)調(diào)度程序,包括用于控制當(dāng)前任務(wù)資源預(yù)算的預(yù)算計數(shù)器裝置。
28.如權(quán)利要求19或27所述的任務(wù)調(diào)度程序,適于利用每個任務(wù)的資源預(yù)算參數(shù),其中所述資源預(yù)算參數(shù)限制處理器被相關(guān)任務(wù)連續(xù)占用的時間。
29.如權(quán)利要求28所述的任務(wù)調(diào)度程序,適于當(dāng)從所述第二處理器接收到請求后立即選擇在當(dāng)前任務(wù)之后要處理的下一個任務(wù),其中如果當(dāng)前任務(wù)仍然允許運行并且其資源預(yù)算未耗盡,則當(dāng)前任務(wù)允許繼續(xù)運行;其中不然的話則由所述任務(wù)調(diào)度裝置確定的下一任務(wù)被選作新的當(dāng)前任務(wù)。
30.如權(quán)利要求29所述的任務(wù)調(diào)度程序,所述任務(wù)調(diào)度裝置適于選擇允許以循環(huán)順序運行的下一任務(wù)。
31.如權(quán)利要求28、29或30所述的任務(wù)調(diào)度程序,適于當(dāng)其被選擇成為當(dāng)前任務(wù)時補充下一任務(wù)的預(yù)算。
32.在數(shù)據(jù)處理系統(tǒng)中用于任務(wù)調(diào)度的方法,所述系統(tǒng)包括用于處理數(shù)據(jù)對象流的第一和至少一個第二處理器及通信網(wǎng)絡(luò),所述第一處理器布置成將來自數(shù)據(jù)對象流的數(shù)據(jù)對象傳送到第二處理器,所述系統(tǒng)對每個所述第二處理器都具有一個任務(wù)調(diào)度程序;由此任務(wù)調(diào)度程序控制所述第二處理器的任務(wù)調(diào)度。
33.如權(quán)利要求32所述用于任務(wù)調(diào)度的方法,還包括步驟-當(dāng)從所述第二處理器接收到請求后立即確定將由所述第二處理器處理的下一任務(wù),及-將所述下一任務(wù)的標(biāo)識轉(zhuǎn)發(fā)到所述第二處理器,其中所述第二處理器以連續(xù)的時間間隔請求下一任務(wù);所述時間間隔代表所述第二處理器的處理步。
34.如權(quán)利要求32所述用于任務(wù)調(diào)度的方法,其中所述第二處理器及其關(guān)聯(lián)的任務(wù)調(diào)度裝置之間的通信是主/從通信,所述第二處理器充當(dāng)主控裝置。
35.如權(quán)利要求32所述用于任務(wù)調(diào)度的方法,還包括步驟-存儲與映射到關(guān)聯(lián)處理器的任務(wù)關(guān)聯(lián)的每個流參數(shù),所述流表包含每個流的各種管理數(shù)據(jù),和/或-管理關(guān)聯(lián)到所述第二處理器的不同任務(wù),所述任務(wù)表包含表示哪個流關(guān)聯(lián)到所述任務(wù)的流表索引、每個任務(wù)一個表示是否允許任務(wù)執(zhí)行的使能標(biāo)志和/或表示每個任務(wù)可用處理預(yù)算的預(yù)算計數(shù)器。
36.如權(quán)利要求35所述用于任務(wù)調(diào)度的方法,其中所述流表包含用于讀取的有效數(shù)據(jù)量、用于寫入的可用空間量、關(guān)于運行任務(wù)是否在讀或?qū)懰隽鲿r阻塞的信息和/或?qū)⑺隽麝P(guān)聯(lián)到任務(wù)的配置信息。
37.如權(quán)利要求35所述用于任務(wù)調(diào)度的方法,還包括步驟檢查所述流表中的所有流并確定哪個所述流允許任務(wù)前進,其中如果a)該流具有可讀的有效數(shù)據(jù)或可寫的可用空間,b)任務(wù)未請求比該流中可用數(shù)據(jù)或空間更多的有效數(shù)據(jù)或空間和/或c)選項a)、b)配置成與任務(wù)前進無關(guān),則流允許前進。
38.如權(quán)利要求35或37所述用于任務(wù)調(diào)度的方法,還包括步驟檢查所述任務(wù)表中的所有任務(wù)并確定允許哪個所述任務(wù)運行,其中如果與所述任務(wù)關(guān)聯(lián)的所有流都允許任務(wù)前進且任務(wù)配置成可運行,則允許任務(wù)運行。
39.如權(quán)利要求35、36、37或38所述用于任務(wù)調(diào)度的方法,還包括步驟從多個作為接下來要處理的任務(wù)的配置任務(wù)中選擇一個任務(wù)。
40.如權(quán)利要求32或39所述用于任務(wù)調(diào)度的方法,還包括步驟控制當(dāng)前任務(wù)的資源預(yù)算。
41.如權(quán)利要求32或40所述用于任務(wù)調(diào)度的方法,還包括步驟利用每個任務(wù)的資源預(yù)算參數(shù),其中所述資源預(yù)算參數(shù)限制處理器被相關(guān)任務(wù)連續(xù)占用的時間。
42.如權(quán)利要求41所述用于任務(wù)調(diào)度的方法,還包括步驟當(dāng)從所述第二處理器接收到請求后立即選擇在當(dāng)前任務(wù)之后要處理的下一個任務(wù),其中如果當(dāng)前任務(wù)仍然允許運行并且其資源預(yù)算未耗盡,則當(dāng)前任務(wù)允許繼續(xù)運行;其中不然的話則由所述任務(wù)調(diào)度裝置確定的下一任務(wù)被選作新的當(dāng)前任務(wù)。
43.如權(quán)利要求42所述用于任務(wù)調(diào)度的方法,還包括步驟選擇允許以循環(huán)順序運行的下一任務(wù)。
44.如權(quán)利要求32所述用于任務(wù)調(diào)度的方法,還包括步驟在所述第二處理器接請求下一個任務(wù)之前選擇接下來將要處理的任務(wù),從而所選下一任務(wù)的標(biāo)識可以立即返回到所述第二處理器。
45.如權(quán)利要求41、42或43所述用于任務(wù)調(diào)度的方法,還包括步驟由事件根據(jù)實時時鐘更新所述預(yù)算計數(shù)器。
46.如權(quán)利要求41、42或43所述用于任務(wù)調(diào)度的方法,還包括步驟當(dāng)其被選擇成為當(dāng)前任務(wù)時補充下一任務(wù)的預(yù)算。
47.如權(quán)利要求1所述用于任務(wù)調(diào)度的方法,還包括步驟在可編程的第二處理器上實現(xiàn)任務(wù)調(diào)度程序。
全文摘要
本發(fā)明基于在具有多個處理器的數(shù)據(jù)處理系統(tǒng)中提供分布式任務(wù)調(diào)度的思想。因此,提供了一種數(shù)據(jù)處理系統(tǒng),包括用于處理數(shù)據(jù)對象流的第一和至少一個第二處理器、通信網(wǎng)絡(luò)及存儲器,其中所述第一處理器將來自數(shù)據(jù)對象流的數(shù)據(jù)對象傳送到第二處理器。所述第二處理器是能夠交叉處理第一和第二任務(wù)的多任務(wù)處理器,其中所述第一和第二任務(wù)分別處理第一和第二數(shù)據(jù)對象流。所述數(shù)據(jù)處理系統(tǒng)還包括每個所述第二處理器一個的任務(wù)調(diào)度裝置,其中所述任務(wù)調(diào)度裝置可操作布置在所述第二處理器和所述通信網(wǎng)絡(luò)之間,并控制所述第二處理器的任務(wù)調(diào)度。
文檔編號G06F9/48GK1602467SQ02824739
公開日2005年3月30日 申請日期2002年12月5日 優(yōu)先權(quán)日2001年12月14日
發(fā)明者M·J·魯特坦, J·T·J·范埃德霍文, E·J·波 申請人:皇家飛利浦電子股份有限公司