亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

多處理器系統(tǒng)中處理器任務(wù)遷移的方法與裝置的制作方法

文檔序號:6654919閱讀:313來源:國知局
專利名稱:多處理器系統(tǒng)中處理器任務(wù)遷移的方法與裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及管理多處理系統(tǒng)中管理處理器任務(wù)的方法與裝置,具體地講,本發(fā)明涉及在實質(zhì)上自己支配(sel governing)基礎(chǔ)上調(diào)度和執(zhí)行多處理系統(tǒng)的子處理單元之間處理器任務(wù)的方法與裝置。
背景技術(shù)
實時、多媒體應(yīng)用正變得越來越為重要。這些應(yīng)用要求極快的處理速度,例如每秒數(shù)千兆比特的數(shù)據(jù)。盡管單個子處理單元能夠具有很快的處理速度,但它們通常不能與多處理器體系結(jié)構(gòu)的處理速度相比。實際上,在多處理器系統(tǒng)中,多個子處理器可以并行(至少協(xié)同)運行以達到所希望的處理結(jié)果。
可以利用多處理技術(shù)的計算機和計算設(shè)備的類型是相當廣泛的。除了個人計算機(PC)和服務(wù)器外,這些計算設(shè)備還包括蜂窩電話、移動計算機、個人數(shù)字助手(PDA)、機頂盒、數(shù)字電視以及許多其它設(shè)備。
實時、多媒體軟件應(yīng)用由處理代碼例如處理指令和數(shù)據(jù)構(gòu)成。至少某些處理指令和/或處理數(shù)據(jù)的集合可以被稱為一處理器任務(wù)。盡管多處理系統(tǒng)中可以順序地執(zhí)行一處理器任務(wù)中的程序語句,但可以在不同的處理器上并行地執(zhí)行不同的處理器任務(wù)。因此,可以考慮讓軟件應(yīng)用包含由多處理系統(tǒng)執(zhí)行的處理器任務(wù)。
多處理系統(tǒng)中的設(shè)計關(guān)注點在于如何管理系統(tǒng)的哪些子處理單元執(zhí)行哪些處理器任務(wù)。在某些多處理系統(tǒng)中,處理器任務(wù)指定子處理單元中的哪些將進行該執(zhí)行。這方案的缺點是,程序員可能沒有優(yōu)化子處理單元之間處理器任務(wù)的分配。例如,一或多個處理器任務(wù)可以同時指定相同的子處理單元。這要求把某些處理器任務(wù)掛起,直至所指定的子處理單元變得可用,由此延遲了它們的執(zhí)行。不幸的是,關(guān)于處理器任務(wù)的執(zhí)行,這還導(dǎo)致了無法預(yù)測的延遲。
其它系統(tǒng)提出了一個管理部件與子處理單元進行通信并且在它們之間調(diào)度處理器任務(wù)。因此,必須采用通信協(xié)議以促進這樣的通信。不幸的是,通信協(xié)議通常導(dǎo)致管理部件和子處理單元之間的消息延遲。實際上,這樣的協(xié)議可能要求對存儲器映像的I/O空間(使用存儲器映像的寄存器)的使用,這樣的協(xié)議通常是較慢的。另外,管理部件(它們可能本身為系統(tǒng)的處理器)可能利用多個分區(qū)領(lǐng)域(partition domain),這些分區(qū)領(lǐng)域可能要求顯著的時間(例如700us)進行改變。這些特征也延遲了對處理器任務(wù)的執(zhí)行,從而導(dǎo)致了不可預(yù)測的延遲。因此,犧牲了多處理系統(tǒng)的總處理器吞吐量和效率,從而可能導(dǎo)致對系統(tǒng)用戶的實時與/或多媒體體驗的顯著影響。
因此,在本技術(shù)領(lǐng)域中,需要新的方法與裝置,以實現(xiàn)減輕硬處理器錯誤負面影響的高效多處理。

發(fā)明內(nèi)容
根據(jù)本發(fā)明的一或多個方面,考慮了一種在多處理系統(tǒng)上執(zhí)行處理器任務(wù)的方法。所述多處理系統(tǒng)包括可以訪問共享存儲器的多個子處理單元和主處理單元。每個子處理單元包括獨立于共享存儲器的片上局部存儲器。該方法包括規(guī)定把處理器任務(wù)從共享存儲器拷貝到子處理單元的局部存儲器中以執(zhí)行之,并禁止從共享存儲器執(zhí)行處理器任務(wù);以及把至少一個處理器任務(wù)從一個子處理單元遷移到另一個子處理單元。
該至少一個處理器任務(wù)的遷移基于某條件。所述條件可以基于與處理器任務(wù)相關(guān)聯(lián)的相應(yīng)的優(yōu)先級水平。
在本發(fā)明的一或多個實施例中,該條件的滿足和遷移的啟動不基于搶占動作。優(yōu)選地,該方法還包括要求子處理單元基于處理器任務(wù)的優(yōu)先級水平從共享存儲器中選擇處理器任務(wù)以供執(zhí)行。該方法還可以包括要求子處理單元在從共享存儲器中選擇較低優(yōu)先級的處理器任務(wù)之前,選擇較高優(yōu)先級的處理器任務(wù)。
較佳的做法是令該方法還包括從共享存儲器選擇第一優(yōu)先級水平的第一處理器任務(wù),供第一子處理單元加以執(zhí)行;從共享存儲器選擇第二優(yōu)先級水平的第二處理器任務(wù),供第二子處理單元加以執(zhí)行;以及把第一子處理單元讓與第三優(yōu)先級水平的第三處理器任務(wù),第三處理器任務(wù)被選擇,這是因為其優(yōu)先級水平高于就緒待執(zhí)行的任何其它處理器任務(wù)。
該方法還可以包括從第一子處理單元的局部存儲器把第一處理器任務(wù)寫回共享存儲器。優(yōu)選地,該方法包括把第二子處理單元讓與第一處理器任務(wù),第一處理器任務(wù)被選擇,這是因為其優(yōu)先級水平高于局部存儲器中就緒待執(zhí)行的任何其它處理器任務(wù),由此非搶占地把第一處理器任務(wù)從第一子處理單元遷移至第二子處理單元。該方法還可以包括把第二處理器任務(wù)從第二子處理單元的局部存儲器寫回共享存儲器。
該方法還考慮,運行在子處理單元之一上的較低優(yōu)先級的處理器任務(wù)可為較高優(yōu)先級的處理器任務(wù)搶占性地取代。該方法還可以包括要求子處理單元在從共享存儲器中選擇較低優(yōu)先級的處理器任務(wù)之前,選擇較高優(yōu)先級的處理器任務(wù)。
優(yōu)選地,該方法還包括從共享存儲器中選擇相關(guān)聯(lián)的優(yōu)先級水平的多個處理器任務(wù),以供多個子處理單元執(zhí)行;使得共享存儲器中具有給定優(yōu)先級水平的第n處理器任務(wù)變?yōu)榫途w待執(zhí)行的;以及判斷該給定優(yōu)先級水平是否高于所述多個處理器任務(wù)的優(yōu)先級水平中的任何一個。優(yōu)選地,子處理單元中的至少一個可操作來執(zhí)行所述判斷。該方法還可以包括搶占性地用第n處理器任務(wù)取代具有比該給定優(yōu)先級水平低的優(yōu)先級水平的多個處理器任務(wù)中的一個。
子處理單元中的一或多個可以可操作來至少啟動所述取代,并且使得所述多個子處理單元中的所述一個讓與較低優(yōu)先級水平的處理器任務(wù)的執(zhí)行。該方法可以包括規(guī)定該啟動子處理單元向該讓與子處理單元發(fā)布中斷,以啟動對較低優(yōu)先級水平的處理器任務(wù)的取代。優(yōu)選地,該方法還包括規(guī)定該讓與子處理單元把較低優(yōu)先級的處理器任務(wù)從其局部存儲器寫回共享存儲器。
根據(jù)本發(fā)明的一或多個進一步的方面,該方法優(yōu)選地包括規(guī)定子處理單元可以判斷共享存儲器中的具有給定優(yōu)先級水平的第n處理器任務(wù)是否高于所述多個處理器任務(wù)的優(yōu)先級水平中任何一個。
優(yōu)選地,在判斷該第n處理器任務(wù)是否具有比所述多個處理器任務(wù)高的優(yōu)先級水平過程中,子處理單元使用共享任務(wù)優(yōu)先級表。該共享任務(wù)優(yōu)先級表可以包括關(guān)于子處理單元標識符和處理器任務(wù)優(yōu)先級標識符的表項,而且每個表項可以包括子處理單元標識符和優(yōu)先級標識符對兒,其指示了運行在相關(guān)聯(lián)的子處理單元上的給定處理器任務(wù)的優(yōu)先級水平。
試圖判斷第n處理器任務(wù)是否具有比所述多個處理器任務(wù)高的優(yōu)先級水平的子處理單元搜尋共享任務(wù)優(yōu)先級表以找到指示較低優(yōu)先級水平的表項對兒。優(yōu)選地,該較低的優(yōu)先級水平是共享任務(wù)優(yōu)先級表的最低優(yōu)先級水平。子處理單元優(yōu)選地修改共享任務(wù)優(yōu)先級表,使得表項對兒為當前的。
根據(jù)本發(fā)明的一或多個進一步的方面,一種方法包括規(guī)定把處理器任務(wù)從共享存儲器拷貝到子處理單元的局部存儲器中以執(zhí)行之,并且禁止從共享存儲器執(zhí)行處理器任務(wù);規(guī)定子處理單元基于處理器任務(wù)的優(yōu)先級水平,從共享存儲器中選擇處理器任務(wù)以供執(zhí)行;以及響應(yīng)于一給定子處理單元所接收的中斷,把運行在該給定子處理單元上的較高優(yōu)先級的處理器任務(wù)遷移到正在運行較低優(yōu)先級的處理器任務(wù)的另一子處理單元。
該方法還可以包括從共享存儲器選擇相關(guān)聯(lián)的優(yōu)先級水平的多個處理器任務(wù),以供多個子處理單元加以執(zhí)行;在該給定子處理單元處接收中斷;以及判斷運行在多個子處理單元上的所述多個處理器任務(wù)中的哪個具有比運行在該給定子處理單元上的處理器任務(wù)的優(yōu)先級水平低的最低優(yōu)先級水平。該給定子處理單元可操作來執(zhí)行該判斷。
較佳的做法是令該方法還包括把給定處理器任務(wù)遷移至正在運行具有最低優(yōu)先級水平的處理器任務(wù)的子處理單元,并且取代該處理器任務(wù)。該給定子處理單元可以操作來至少啟動該遷移,并且使得正在運行具有最低優(yōu)先級水平的處理器任務(wù)的子處理單元把執(zhí)行讓與較高優(yōu)先級水平的該給定處理器任務(wù)。該給定子處理單元優(yōu)選地向該讓與子處理單元發(fā)布中斷,以便啟動對最低優(yōu)先級水平的處理器任務(wù)的取代。
該讓與的子處理單元可以把較低優(yōu)先級的處理器任務(wù)從其局部存儲器寫回到共享存儲器中。該讓與子處理單元還可以把較高優(yōu)先級的給定處理器任務(wù)從給定子處理單元的局部存儲器拷貝到其局部存儲器中,以供執(zhí)行。
在判斷哪個處理器任務(wù)具有最低優(yōu)先級水平的過程中,該給定子處理單元優(yōu)選地使用共享任務(wù)優(yōu)先級表。該共享任務(wù)優(yōu)先級表可以包括關(guān)于子處理單元標識符和處理器任務(wù)優(yōu)先級標識符的表項,而且每個表項可以包括一個子處理單元標識符和優(yōu)先級標識符對兒,其指示了運行在相關(guān)聯(lián)的子處理單元上的給定處理器任務(wù)的優(yōu)先級水平。該給定子處理單元可以搜尋共享任務(wù)優(yōu)先級表,以找出指示最低優(yōu)先級水平的表項對兒。子處理單元優(yōu)選地修改共享任務(wù)優(yōu)先級表,使得表項對兒為當前的。
根據(jù)本發(fā)明的一或多個進一步的方面,一種多處理器裝置包括多個子處理單元,每個子處理單元包括其中執(zhí)行處理器任務(wù)的片上局部存儲器;以及共享存儲器,可操作來存儲就緒待執(zhí)行的處理器任務(wù)。把這些處理器任務(wù)從共享存儲器拷貝到子處理單元的局部存儲器,以執(zhí)行之,并且不從共享存儲器執(zhí)行這些處理器任務(wù),以及把至少一個處理器任務(wù)從一個子處理單元遷移到另一個子處理單元。
根據(jù)本發(fā)明的一或多個進一步的方面,該裝置的子處理單元可操作來執(zhí)行以上所討論的方法步驟。
根據(jù)此處結(jié)合附圖所進行的描述,這一領(lǐng)域中的熟練技術(shù)人員將會明顯意識到本發(fā)明的其它方面、特征以及優(yōu)點。


為了便于說明,圖中描述了當前較佳的幾種形式,但應(yīng)該認識到,本發(fā)明并不局限于所示出的精確配置與安裝。
圖1是說明根據(jù)本發(fā)明的一或多個方面的多處理系統(tǒng)的結(jié)構(gòu)的圖。
圖2是方框圖,說明了共享存儲器中處理器任務(wù)的存儲。
圖3是說明根據(jù)本發(fā)明的處理器元件(PE)的優(yōu)選結(jié)構(gòu)的圖。
圖4是說明根據(jù)本發(fā)明的示范性子處理單元(SPU)的結(jié)構(gòu)的圖。
圖5說明根據(jù)本發(fā)明的一或多個方面可以使用的處理器任務(wù)表的例子。
圖6是圖5的任務(wù)表所建立的處理器任務(wù)的鏈接列表的狀態(tài)圖。
圖7說明可以與圖5的任務(wù)表結(jié)合用來管理處理器任務(wù)的執(zhí)行的任務(wù)隊列的例子。
圖8是一流程圖,說明了根據(jù)本發(fā)明的一或多個方面可以由多處理系統(tǒng)執(zhí)行的過程步驟。
圖9是一流程圖,說明了根據(jù)本發(fā)明可以由多處理系統(tǒng)執(zhí)行的進一步的過程步驟。
圖10是一流程圖,說明了根據(jù)本發(fā)明可以由多處理系統(tǒng)所執(zhí)行的再進一步的過程步驟。
圖11是一流程圖,說明了根據(jù)本發(fā)明的各個方面可以由多處理系統(tǒng)執(zhí)行的用于啟動共享存儲器中的處理器任務(wù)的過程步驟。
圖12為一狀態(tài)圖,說明了根據(jù)本發(fā)明的一或多個方面的處理器任務(wù)的不同狀況狀態(tài)。
圖13為一方框圖,說明了根據(jù)本發(fā)明的一或多個方面如何可從共享存儲器拷貝處理器任務(wù)以及如何可把處理器任務(wù)寫回共享存儲器。
圖14為時序圖,說明了與圖13的拷貝和寫回技術(shù)相關(guān)聯(lián)的處理延遲。
圖15為一方框圖,說明了根據(jù)本發(fā)明的一或多個進一步的方面如何可從共享存儲器拷貝處理器任務(wù)以及如何可把處理器任務(wù)寫回共享存儲器。
圖16為一時序圖,說明了與圖15的拷貝和寫回技術(shù)相關(guān)聯(lián)的處理延遲。
圖17為一方框圖,說明了根據(jù)本發(fā)明的一或多個進一步的方面如何可從共享存儲器拷貝處理器任務(wù)以及如何可把處理器任務(wù)寫回共享存儲器。
圖18為一時序圖,說明了與圖17的拷貝和寫回技術(shù)相關(guān)聯(lián)的處理延遲。
圖19為一方框圖,說明了根據(jù)本發(fā)明的一或多個進一步的方面如何可從共享存儲器拷貝處理器任務(wù)以及如何可把處理器任務(wù)寫回共享存儲器。
圖20為一方框圖,說明了本發(fā)明的某些方面的非搶占處理器任務(wù)遷移特征。
圖21為一方框圖,說明了本發(fā)明的某些方面的進一步的非搶占處理器任務(wù)遷移特征。
圖22為一方框圖,說明了本發(fā)明的某些方面的再進一步的非搶占處理器任務(wù)遷移特征。
圖23為一方框圖,說明了本發(fā)明的某些方面的搶占多任務(wù)特征。
圖24為一方框圖,說明了本發(fā)明的某些方面的進一步的搶占多任務(wù)處理特征。
圖25為一方框圖,說明了本發(fā)明的某些方面的搶占處理器任務(wù)遷移特征。
圖26為一方框圖,說明了本發(fā)明的某些方面的進一步的搶占處理器任務(wù)遷移特征。
圖27為說明了根據(jù)本發(fā)明的一或多個方面的某些處理器中斷技術(shù)的部分方框圖和部分流程圖。
圖28為說明了根據(jù)本發(fā)明的一或多個方面的進一步的處理器中斷技術(shù)的部分方框圖和部分流程圖。
圖29為說明了根據(jù)本發(fā)明的一或多個方面的再進一步的處理器中斷技術(shù)的部分方框圖和部分流程圖。
圖30說明了根據(jù)本發(fā)明的一或多個方面的、包括一個以上的子處理單元的處理系統(tǒng)的結(jié)構(gòu)。
圖31為根據(jù)本發(fā)明的一或多個方面的分布式多處理系統(tǒng)的系統(tǒng)圖。
圖32為可結(jié)合本發(fā)明的多處理單元一起使用的軟件包特征的方框圖。
具體實施例方式
參照這些圖,其中以相同的數(shù)字指示相同的圖元,圖1中示出了根據(jù)本發(fā)明的一或多個方面的多處理系統(tǒng)100。多處理系統(tǒng)100包括通過總線108耦接到諸如DRAM的共享存儲器106的多個(可以使用任何數(shù)目)處理器102。應(yīng)該加以注意的是,共享存儲器106不必為DRAM,實際上,可以使用任何已知的或今后所開發(fā)的技術(shù)形成共享存儲器106。
優(yōu)選地,處理器102中的一個為主處理單元,例如處理單元102A。優(yōu)選地,其它的處理單元102為子處理單元(SPU),例如處理單元102B、102C、102D等。可以使用任何已知的或今后所開發(fā)的計算機體系結(jié)構(gòu)實現(xiàn)子處理單元102。不必使用相同的體系結(jié)構(gòu)實現(xiàn)所有的子處理單元102,實際上,它們可以為異構(gòu)的或同構(gòu)的配置。應(yīng)該注意的是,可以相對子處理單元102B~D本地布置主處理單元102A,例如,在同一芯片中、同一包裝中、同一電路板上、同一產(chǎn)品中等。作為替代,也可以把主處理單元102A遠離子處理單元102B~D加以放置,例如,在不同的產(chǎn)品中,可以通過總線、通信網(wǎng)絡(luò)(例如因特網(wǎng))等將它們耦接。類似地,也可以把子處理單元102B~D互相局部地或遠程地加以放置。
主處理單元102A可用于調(diào)度和協(xié)調(diào)子處理單元102B~D對數(shù)據(jù)和應(yīng)用的處理,使得子處理單元102B~D以并行和獨立的方式執(zhí)行對這些數(shù)據(jù)和應(yīng)用的處理。然而,根據(jù)本發(fā)明的某些方面,在子處理單元之間調(diào)度處理器任務(wù)的執(zhí)行的過程中,主處理單元102并不起核心作用。相反,優(yōu)選地把這樣的調(diào)度留給各SPU本身。
圖1中各個處理器102的作用和功能的指派是靈活的。例如,處理器102中的任何一個可以為主處理器單元或子處理單元。
參照圖2,主處理單元102A優(yōu)選地承擔對于子處理單元102B~F的服務(wù)處理器的角色,特別當其調(diào)度和管理SPU之間的處理器任務(wù)時。根據(jù)本發(fā)明的某些方面,主處理單元102A可以評估包含在軟件應(yīng)用中的處理器任務(wù),并且參與共享存儲器106的分配、SPU的分配、以及共享存儲器106中處理器任務(wù)110的初始存儲。關(guān)于共享存儲器106的分配,主處理單元102A優(yōu)選地判斷應(yīng)該把多少存儲器空間分配給給定數(shù)目的處理器任務(wù)110。為此,主處理單元102A可以分配共享存儲器106的第一區(qū)域106A用于某些處理器任務(wù)110的存儲,并且可以分配共享存儲器106的第二區(qū)域106B用于其它處理器任務(wù)110的存儲。主處理單元102A也可以針對共享存儲器106的各區(qū)域106A和106B中的數(shù)據(jù)同步建立規(guī)則。
根據(jù)本發(fā)明的一或多個進一步的方面,共享存儲器106的各區(qū)域106A和106B僅可由規(guī)定數(shù)目的子處理單元102訪問,例如,僅可由那些被分配執(zhí)行存儲在共享存儲器106的給定區(qū)域中的特定處理器任務(wù)110的子處理單元102訪問。例如,優(yōu)選地,僅子處理單元102B~D是被準許訪問共享存儲器106的第一區(qū)域106A中的處理器任務(wù)110的SPU。類似地,優(yōu)選地,僅子處理單元102E~F是被準許訪問共享存儲器106的第二區(qū)域106B中的處理器任務(wù)110的SPU。可在專利號6526491名為“MEMORY PROTECTIONSYSTEM AND METHOD FOR COMPUTER ARCHITECTURE FORBROADBAND NETWORKS(寬帶網(wǎng)絡(luò)計算機體系結(jié)構(gòu)的存儲器保護系統(tǒng)與方法)”的美國專利中查閱到有關(guān)保護共享存儲器106的各區(qū)域106A和106B的技術(shù)的細節(jié),這一專利的全部公開并入此處,以作參考。
根據(jù)本發(fā)明的一或多個進一步的方面,一旦處理器任務(wù)110被布置在共享存儲器106中,以及子處理單元102被分配來執(zhí)行這些任務(wù),則優(yōu)選地主處理單元102A不參與對處理器任務(wù)110執(zhí)行的調(diào)度與管理。而把這些責任留給所涉及的特定子處理單元102。
在討論本發(fā)明各個實施例的處理器任務(wù)管理特征的細節(jié)之前,將討論用于實現(xiàn)多處理系統(tǒng)的優(yōu)選計算機體系結(jié)構(gòu)的描述。為此,現(xiàn)參照圖3,圖3為基本處理模塊或處理器元件(processor element,PE)200的一個方框圖。根據(jù)該計算機體系結(jié)構(gòu),從公共計算模塊(或包(cell))構(gòu)造多處理計算機系統(tǒng)的所有子處理器。該公共計算模塊具有一致的結(jié)構(gòu),并且優(yōu)選地利用相同的指令集結(jié)構(gòu)。在本發(fā)明的替代性實施例中,子處理單元可以為異構(gòu)配置。多處理計算機系統(tǒng)可以由一或多個客戶機、服務(wù)器、PC、移動計算機、游戲機、PDA、機頂盒、家用電器、數(shù)字電視以及其它使用計算機處理器的設(shè)備構(gòu)成。
基本處理模塊為處理器元件(PE)。如圖3所示,PE 200包含I/O接口202、處理單元(PU)204、直接存儲器訪問控制器(DMAC)206以及多個子處理單元208,即子處理單元208A、子處理單元208B、子處理單元208C以及子處理單元208D。一條局部(或內(nèi)部)PE總線212在PU 204、子處理單元208、DMA206、存儲器接口210之間傳輸數(shù)據(jù)與應(yīng)用。局部PE總線212可以具有例如傳統(tǒng)體系結(jié)構(gòu),或者可以被實現(xiàn)為分組交換網(wǎng)絡(luò)。作為分組交換網(wǎng)絡(luò)的實現(xiàn)盡管要求更多的硬件,但增加了可用帶寬。
可以使用各種實現(xiàn)數(shù)字邏輯的方法構(gòu)造PE 200。然而,PE 200優(yōu)選地被構(gòu)造為使用硅襯底上的互補金屬氧化物半導(dǎo)體(CMOS)的單個集成電路。襯底的可選材料包括砷化鎵、鎵鋁砷以及其它使用各種摻雜物的所謂的III-B化合物。也可以使用超導(dǎo)材料,例如使用快單通量量子(RSFQ)邏輯實現(xiàn)PE 200。
通過高帶寬存儲器連接216將PE 200與動態(tài)隨機存取存儲器(DRAM)214緊密關(guān)聯(lián)。DRAM 214用作PE 200的主(或共享)存儲器。盡管DRAM214優(yōu)選地是動態(tài)隨機存取存儲器,但也可以使用其它部件諸如靜態(tài)隨機存取存儲器(SRAM)、磁隨機存取存儲器(MRAM)、光存儲器、全息存儲器等實現(xiàn)DRAM 214。DMAC 206和存儲器接口210有助于DRAM 214與PE 200的子處理單元208和PU 204之間的數(shù)據(jù)傳送。應(yīng)該注意的是,DMAC 206與/或存儲器接口210可以相對子處理單元208和PU 204被集成地或獨立地加以布置。實際上,可以取代圖中所示的獨立配置,把DMAC 206功能與/或存儲器接口210功能與PU 204和子處理單元208的一或多個(優(yōu)選地為全部)集成起來。
PU 204可以是例如能夠獨立處理數(shù)據(jù)與應(yīng)用的標準處理器。子處理單元208優(yōu)選地是單指令多數(shù)據(jù)(SIMD)處理器。子處理單元208優(yōu)選地以并行并獨立的方式執(zhí)行數(shù)據(jù)與應(yīng)用的處理。DMAC 206控制PU 204和子處理單元208對存儲在共享DRAM 214中的數(shù)據(jù)與應(yīng)用(例如,處理器任務(wù)110)的訪問。應(yīng)該注意的是,PU 204可以由發(fā)揮主處理單元作用的子處理單元208之一來實現(xiàn)。
根據(jù)該模塊化結(jié)構(gòu),具體計算機系統(tǒng)所使用的PE 200的數(shù)目基于該系統(tǒng)所要求的處理能力。例如,一個服務(wù)器可以使用4個PE 200,一個工作站可以使用2個PE 200,以及一個PDA可以使用1個PE 200。被分配用于處理某特定軟件包的PE的子處理單元的數(shù)目取決于該軟件包中程序和數(shù)據(jù)的復(fù)雜程度及數(shù)量。
圖4說明了子處理單元208的優(yōu)選結(jié)構(gòu)與功能。子處理單元208包括局部存儲器250、寄存器252、一或多個浮點單元254、一或多個整數(shù)單元256。然而,同樣,依據(jù)所要求的處理能力,可以使用更多或更少數(shù)目的浮點單元254和整數(shù)單元256。浮點單元254優(yōu)選地按每秒320億(32billion)浮點運算(32GFLOPS)的速度運行,以及整數(shù)單元256優(yōu)選地按每秒320億操作(32GOPS)的速度運行。
在優(yōu)選實施例中,局部存儲器250包含256K字節(jié)的存儲量,寄存器252的容量為128×128個比特。應(yīng)該注意的是,處理器任務(wù)110不是使用共享存儲器214執(zhí)行的。而是處理器任務(wù)110被拷貝到給定子處理單元208的局部存儲器250中,并且被局部地執(zhí)行。
局部存儲器250可以是,也可以不是高速緩沖存儲器。局部存儲器250優(yōu)選地被構(gòu)造為一個靜態(tài)隨機存取存儲器(SRAM)。PU 204可能要求對PU204所啟動的直接存儲器存取的超高速緩存相關(guān)性支持(cache coherencysupport)。然而,對于子處理單元208所啟動的直接存儲器訪問或者對于從外部設(shè)備的訪問和向外部設(shè)備的訪問,不要求高速緩存相關(guān)性支持。
子處理單元208還包括總線接口(I/F)258,用于向/從子處理單元208傳送應(yīng)用和數(shù)據(jù)。在一個優(yōu)選實施例中,總線I/F 258耦接到DMAC 206,DMAC 206被以虛線示出以指示可以把DMAC 206如圖所示集成地布置在子處理單元208中或外部地加以布置(如圖3所示)。一對總線268A,268B在總線I/F 258和局部存儲器250之間相互連接DMAC 206??偩€268A、268B優(yōu)選地為256比特寬。
子處理單元208還包括內(nèi)部總線260、262以及264。在一個優(yōu)選實施例中,總線260具有256比特的寬度,并且提供了局部存儲器250和寄存器252之間的通信??偩€262和264分別提供了寄存器252與浮點單元254之間以及寄存器252與整數(shù)單元256之間的通信。在優(yōu)選實施例中,從寄存器252到浮點或整數(shù)單元的總線264和262的寬度為384個比特,從浮點單元254或整數(shù)單元256到寄存器252的總線264和262的寬度為128個比特。與從浮點單元254或整數(shù)單元256到寄存器252的總線寬度比,從寄存器252到這些單元的這些總線越寬,則容納處理期間來自寄存器252的數(shù)據(jù)流越大。每個計算最多需要3個字。然而每一計算的結(jié)果通常僅為一個字。
再次轉(zhuǎn)向本發(fā)明各種處理器任務(wù)管理特征,并且參照圖2,優(yōu)選地,子處理單元102利用任務(wù)表,以判斷處理器任務(wù)110中的哪個應(yīng)該被從共享存儲器106拷貝出來并且被拷貝到SPU 102的局部存儲器之一中,以供運行。為此,現(xiàn)在參照圖5,圖5是根據(jù)本發(fā)明的各個方面的、可以利用的任務(wù)表280的概念性說明。任務(wù)表280優(yōu)選地被存儲在共享存儲器106中(以下將討論如何初始化任務(wù)表280的細節(jié))。任務(wù)表280優(yōu)選地包括多個任務(wù)表表項T1、T2、T3等。優(yōu)選地使每個任務(wù)表表項與處理器任務(wù)110之一相關(guān)聯(lián)(圖2),例如,通過相關(guān)尋址或用于把任務(wù)表表項與處理器任務(wù)110相關(guān)聯(lián)的其它手段。
在一優(yōu)選實施例中,每個任務(wù)表表項可以包括狀態(tài)指示(STAT)、優(yōu)先級指示(PRI)以及一對指針(PREV,NEXT)中的至少一個。STAT優(yōu)選地提供關(guān)于與給定任務(wù)表表項相關(guān)聯(lián)的處理器任務(wù)是否READY(就緒)由一或多個子處理單元執(zhí)行(或正在一個或多個子子處理單元上RUNNING(運行))的指示。PRI優(yōu)選地提供關(guān)于相關(guān)聯(lián)的處理器任務(wù)110的優(yōu)先級水平的指示??梢源嬖谂c處理器任務(wù)110相關(guān)的許多優(yōu)先級水平,其可以由軟件程序員建立或者以后通過軟件應(yīng)用的執(zhí)行建立。在任何情況下,都可以利用處理器任務(wù)110的優(yōu)先級水平來建立執(zhí)行處理器任務(wù)的次序。PREV值優(yōu)選地是指向所鏈接的任務(wù)表表項的有序列表(或處理器任務(wù)列表)中的前一任務(wù)表表項(或前一處理器任務(wù)110)的指針。NEXT值優(yōu)選地是指向所鏈接的任務(wù)表表項(或處理器任務(wù))的有序列表中的下一任務(wù)表表項(或處理器任務(wù))的指針。
根據(jù)本發(fā)明的一或多個方面,優(yōu)選地由子處理單元102利用任務(wù)表280,以確定從共享存儲器106拷貝處理器任務(wù)110以供執(zhí)行的次序。例如,為了在多處理系統(tǒng)100或200上適當?shù)貓?zhí)行一軟件應(yīng)用,可能需要按某一特定的次序,或者最終按一般的次序,比如按T1、T8、T6以及T9的次序執(zhí)行確定的處理器任務(wù)110。為了反映處理器任務(wù)次序的這一說明性的例子,任務(wù)表280優(yōu)選地包含創(chuàng)建任務(wù)表表項的鏈接列表的任務(wù)表表項的相應(yīng)PREV和NEXT部分中的指針,并且通過擴展處理器任務(wù)。根據(jù)上述例子的特征,任務(wù)表表項T1包括指向任務(wù)表表項T8的NEXT值。任務(wù)表表項T8包括指向任務(wù)表表項T1的PREV值,并且包括指向任務(wù)表表項T6的NEXT值。任務(wù)表表項T6包括指向任務(wù)表表項T8的PREV值,并且包括一個指向任務(wù)表表項T9的NEXT值。任務(wù)表表項T9包括指向任務(wù)表表項T6的PREV值。
參照圖6,可以把上述例子的任務(wù)表表項的鏈接列表概念性地圖示為一狀態(tài)圖,其中,從與任務(wù)表表項T1相關(guān)聯(lián)的特定處理器任務(wù)的轉(zhuǎn)移導(dǎo)致了對與任務(wù)表表項T8相關(guān)聯(lián)的另一處理器任務(wù)的選擇與執(zhí)行。從與任務(wù)表表項T8相關(guān)聯(lián)的處理器任務(wù)的轉(zhuǎn)移導(dǎo)致了對與任務(wù)表表項T6相關(guān)聯(lián)的處理器任務(wù)的選擇與執(zhí)行,等等。通過確保第一,即頭部任務(wù)表表項T1包括一指向任務(wù)表表項T9的PREV值,以及確保任務(wù)表表項T9包括一指向任務(wù)表表項T1的NEXT值,可以獲得任務(wù)表表項(與/或處理器任務(wù)本身)的環(huán)形關(guān)聯(lián)。
在操作期間,被分配來執(zhí)行共享存儲器106的處理器任務(wù)110池(優(yōu)選地位于給定區(qū)域106A或106B中)的各子處理單元102首先訪問任務(wù)表280,以判斷接下來將選取哪個處理器任務(wù)110來執(zhí)行。為了有助于標識鏈接列表的第一(即頭部)表項,子處理單元102優(yōu)選地還訪問一任務(wù)隊列282,圖7中概念性地圖示了任務(wù)隊列282。任務(wù)隊列282優(yōu)選地包括針對相關(guān)聯(lián)的處理器任務(wù)110的每一優(yōu)先級水平的表項。每一表項優(yōu)選地包括HEAD指針和TALL指針中的至少一個。
進一步參照圖6,所圖示的示范性鏈接列表的狀態(tài)圖代表了具有優(yōu)先級水平1的處理器任務(wù)110。實際上,針對表項T1、T8、T6、T9的每一任務(wù)表表項(圖5)均包括PRI值1。
與優(yōu)先級水平1相關(guān)聯(lián)的任務(wù)隊列表項的HEAD指針和TAIL指針包含分別指向任務(wù)表表項T1和任務(wù)表表項T9的指針。也把任務(wù)隊列282的其它表項與針對其它鏈接列表的其它優(yōu)先級水平的HEAD和TAIL指針相關(guān)聯(lián)。在這一方式下,認為本發(fā)明的各種實施例可以包括任務(wù)表表項的多個鏈接列表(并且通過延伸處理器任務(wù)),其中每一鏈接列表包含相同的或至少相類似的優(yōu)先級水平的表項。各處理單元102優(yōu)選地利用任務(wù)表280和任務(wù)隊列282來判斷應(yīng)從共享存儲器106拷貝哪一處理器任務(wù)110以供執(zhí)行。如果適當?shù)貏?chuàng)建和維護各鏈接列表,則可以按適當?shù)拇涡驁?zhí)行處理器任務(wù)110,以在整個軟件應(yīng)用的執(zhí)行過程中達到希望的結(jié)果。
根據(jù)本發(fā)明的各個方面,在軟件應(yīng)用的執(zhí)行期間,子處理單元102維護和修改任務(wù)表280和任務(wù)隊列282。為此,現(xiàn)在參照圖8~10,圖8~10為流程圖,圖示了適合于實現(xiàn)本發(fā)明的一或多個希望的特征的處理流程。在動作300處,調(diào)用特定的子處理單元102以啟動處理器任務(wù)110從共享存儲器106至其局部存儲器的拷貝。在動作302處,子處理單元102鎖定并且復(fù)制任務(wù)隊列282到其局部存儲器中。接下來,搜索任務(wù)隊列282以尋找最高優(yōu)先級就緒任務(wù)(動作304)。使用圖7所示例子,任務(wù)隊列282包括一指向任務(wù)隊列表項T1的HEAD指針,任務(wù)隊列表項T1與一最高優(yōu)先級諸如優(yōu)先級水平1的處理器任務(wù)相關(guān)聯(lián)。由于與任務(wù)表表項T1相關(guān)聯(lián)的處理器任務(wù)是待執(zhí)行的目標,所以子處理單元102優(yōu)選地修改任務(wù)隊列282,以除去到該處理器任務(wù)的引用(動作306)。根據(jù)一優(yōu)選實施例,這引起把指向任務(wù)表表項T1的HEAD指針修改為指向另一任務(wù)表表項,該另一任務(wù)表表項將成為指明下一應(yīng)予以執(zhí)行的處理器任務(wù)的新的第一(即頭部)任務(wù)表表項。特別地,任務(wù)表表項T1的NEXT指針用作優(yōu)先級水平1的新HEAD指針。實際上,如圖6中所示,一旦在執(zhí)行(運行)與任務(wù)表表項T1相關(guān)聯(lián)的處理器任務(wù),則其不再處于READY狀態(tài),從而應(yīng)將其從狀態(tài)圖中去除。這將使任務(wù)表表項T8成為狀態(tài)圖的頭部表項。當任務(wù)表表項T1將不再為READY狀態(tài)圖的一部分時,可以把任務(wù)表表項T8的PREV指針修改為指向任務(wù)表表項T9。于是,在動作308處,標記任務(wù)表,并且將其拷貝到SPU 102的局部存儲器,以便可以對其進行修改。類似地,可以把任務(wù)表表項T9的NEXT指針修改為指向任務(wù)表表項T8。
根據(jù)本發(fā)明的優(yōu)選方面,SPU 102優(yōu)選地把任務(wù)表表項T1的STAT值從READY修改成RUNNING(圖9,動作310)。如動作312,優(yōu)選地判斷在調(diào)用SPU 102(動作300)來引用(invoke)下一任務(wù)時,SPU 102是否正在運行前一任務(wù)。當一個正運行在SPU 102上的前一任務(wù)讓與(yield to)另一任務(wù)時,可能會出現(xiàn)這一情況。對于本例,假定前一任務(wù)既沒有讓與下一處理器任務(wù)110,也沒有被下一處理器任務(wù)110搶奪(usurp),并且這樣假定動作312處判斷的結(jié)果為否定的。因此,處理流優(yōu)選地前進到動作318,在動作318處SPU102把經(jīng)修改的任務(wù)隊列282和經(jīng)修改的任務(wù)表280寫回到共享存儲器106中。此時,已經(jīng)更新了任務(wù)表280和任務(wù)隊列282,然后根據(jù)優(yōu)選的同步技術(shù),將任務(wù)表280和任務(wù)隊列282解鎖,以便其它子處理單元102可以對它們拷貝和修改。
如果動作312處的判斷結(jié)果為肯定的,例如,將是前一處理器任務(wù)110讓與下一處理器任務(wù)以執(zhí)行的情況,則處理流優(yōu)選地前進到動作314。在動作314處,SPU優(yōu)選地把與做出讓與的處理器任務(wù)相關(guān)聯(lián)的任務(wù)表表項的STAT值從RUNNING修改為READY。另外,SPU然后可以修改各任務(wù)表表項(包括與做出讓與的處理器任務(wù)相關(guān)聯(lián)的任務(wù)表表項)的PREV和NEXT指針,以便把做出讓與的處理器任務(wù)重新導(dǎo)入適當?shù)逆溄恿斜?。?yōu)選地,這是通過參照反映在相關(guān)聯(lián)的任務(wù)表表項的PRI值中的做出讓與的處理器任務(wù)110的優(yōu)先級水平來實現(xiàn)的。在動作316處,可以把做出讓與的處理器任務(wù)寫回到共享存儲器106中,以便其可以在晚些時候被取出。接下來,處理流前進到動作318,在動作318處,把任務(wù)隊列282和任務(wù)表280寫回到共享存儲器106中。
在動作320處(圖10),子處理單元102把下一處理器任務(wù)110(例如與任務(wù)表表項T8相關(guān)聯(lián)的處理器任務(wù))從共享存儲器106拷貝于其局部存儲器。在動作322處,子處理單元102優(yōu)選地恢復(fù)與/或更新其寄存器(例如,利用與新處理器任務(wù)相關(guān)的數(shù)據(jù)),以在執(zhí)行新的處理器任務(wù)110的過程中所用。最后,在動作324處,由子處理單元102執(zhí)行該新的處理器任務(wù)110。
應(yīng)該加以注意的是,以上的動作序列僅作為示例給出,本領(lǐng)域技術(shù)人員應(yīng)該認識到,在不背離本發(fā)明的構(gòu)思與范圍的情況下,可以對這些動作序列進行修改。例如,如本說明書以下將加以討論的,可以修改從共享存儲器106拷貝處理器任務(wù)和把處理器任務(wù)寫回到共享存儲器106中的次序以及利用任務(wù)表和任務(wù)隊列282的次序,以達到所希望的結(jié)果。
如以上所描述的,優(yōu)選地在系統(tǒng)的初始化階段期間利用主處理單元102A,以便把該系統(tǒng)置于其中可以由子處理單元102處理處理器任務(wù)110的執(zhí)行與管理的狀態(tài)。子處理單元102也優(yōu)選地進行一初始化例程,以便首先創(chuàng)建任務(wù)表280和任務(wù)隊列282。圖11的流程圖中說明了這些初始化處理。
在動作350處,服務(wù)處理器(例如主處理單元102)評估要在系統(tǒng)上執(zhí)行的軟件應(yīng)用,并且分配多個子處理單元102以運行處理器任務(wù)110。處理流優(yōu)選地前進到動作352,在動作352處,服務(wù)處理器評估軟件應(yīng)用,并且分配共享存儲器106的一或多個部分以接收處理器任務(wù)110。在動作354處,根據(jù)在動作352處所執(zhí)行的任何存儲器分配,把處理器任務(wù)110加載到共享存儲器106中。在初始化處理的這一階段,優(yōu)選地在子處理單元102之間的處理器任務(wù)的維護與/或分配過程中不再涉及服務(wù)處理器。
處理流優(yōu)選地前進至動作356,在動作356處,子處理單元102互相初始化,以判斷哪個SPU將首先準備任務(wù)表280和任務(wù)隊列282。在動作358處,負責創(chuàng)建任務(wù)表280和任務(wù)隊列282的子處理單元102準備這樣的信息,并且將其存儲在共享存儲器106中。作為示例,優(yōu)選地通過使每一SPU內(nèi)核執(zhí)行初始任務(wù)來執(zhí)行任務(wù)表280和任務(wù)隊列282的初始化。以下所復(fù)制的程序init.c,是每個SPU所執(zhí)行的初始任務(wù)的優(yōu)選例子<pre listing-type="program-listing">#include<spurs.h>#include"task_instance.h"  int  main()  {  spurs_begin_init();  if(spurs_get_spu_id()==0){   spurs_create_task(melchior);   spurs_create_task(balthasar);   spurs_create_task(caspar);   spurs_start_task(melchior);   spurs_start_task(balthasar);   spurs_start_task(caspar);  }  spurs_end_init();  return 0;  }&lt;br/&gt;</pre>在該程序中,`(melchior)`、`(balthasar)`以及`(caspar)`為最開始的幾個任務(wù)的名字,它們?yōu)榈湫偷膯尤蝿?wù)。所有的SPU內(nèi)核都執(zhí)行該初始任務(wù),init.c,但僅一個SPU——具有ID0的SPU——執(zhí)行這些任務(wù),如代碼行if(spurs_get_spu_id()==0)所指定的。所有其它SPU,例如那些具有不同ID的SPU,在spurs_end_init()處等待。于是,每一SPU內(nèi)核都執(zhí)行該初始任務(wù),而且在這一初始任務(wù)完成之后,SPU內(nèi)核開始尋找下一任務(wù),如此處所描述的。
注意,如以上所討論的,用作服務(wù)處理器的主處理單元102可以指定一或多個處理器任務(wù)110為處于一組中。優(yōu)選地在初始化階段期間進行此操作。例如,兩或兩個以上的處理器任務(wù)110可能互相密切通信,因此,如果把它們分組在一個任務(wù)組中,則可以更有效地執(zhí)行它們。加密程序是可能含有某些需要密切通信的處理器任務(wù)的應(yīng)用的例子,如果把這些處理器任務(wù)形成為一或多個任務(wù)組,將可更有效地對它們加以執(zhí)行。
可以利用本發(fā)明的處理器任務(wù)管理特征來幫助主處理單元102A將設(shè)備驅(qū)動程序推卸(off-load)給某一特定的子處理單元102或子處理單元102的組。作為示例,諸如千兆Ethernet處理器的網(wǎng)絡(luò)接口可以占用高達80%的CPU能力。如果僅通過主處理單元子102A執(zhí)行網(wǎng)絡(luò)接口,則主處理單元102A可能不可用于其它面向服務(wù)的處理任務(wù)。因此,主處理單元102A把網(wǎng)絡(luò)接口程序推卸給一或多個子處理單元102可能是有益的。主處理單元102A可以通過下述操作達成此結(jié)果把網(wǎng)絡(luò)接口的處理任務(wù)置于共享存儲器106中,并且分配一或多個子處理單元102以執(zhí)行該處理任務(wù)。作為響應(yīng),這些SPU可以形成適合于管理和調(diào)度這樣的處理器任務(wù)的執(zhí)行的任務(wù)表280和任務(wù)隊列282。有利的是,主處理單元102A因此可以投入更多的CPU能力來執(zhí)行其它任務(wù)。主處理單元102A還可以推卸其它設(shè)備驅(qū)動程序,例如數(shù)字電視設(shè)備驅(qū)動程序。作為推卸給SPU的良好候選的其它設(shè)備驅(qū)動程序是那些具有大協(xié)議棧的設(shè)備驅(qū)動程序。例如,用于諸如HDD記錄器的實時高速存取設(shè)備的驅(qū)動程序可以有利地予以推卸??梢酝菩兜娜蝿?wù)的其它例子包括用于虛擬專用網(wǎng)絡(luò)和IP上的多媒體(例如,VOIP)應(yīng)用的網(wǎng)絡(luò)分組加密/解密任務(wù)。
現(xiàn)在,參照圖12,圖12為處理器任務(wù)狀態(tài)的狀態(tài)圖示例。可以把任務(wù)狀態(tài)劃分為5類RUNNING(運行)狀態(tài)、READY(就緒)狀態(tài)、BLOCKED(阻塞)狀態(tài)、DORMANT(睡眠)狀態(tài)以及NON-EXISTENT(不存在)狀態(tài)。當處理器任務(wù)當前正在執(zhí)行時,其處于RUNNING狀態(tài)。在某些情況下,甚至無任務(wù)(non-task)的情境下,例如在中斷期間,處理器任務(wù)也可以維持在RUNNING狀態(tài)下。當一個處理器任務(wù)準備好待執(zhí)行,但由于一或多個具有較高優(yōu)先性的處理器任務(wù)已正在運行并且無子處理單元不可用于取出(takeup)該任務(wù)時,該處理器任務(wù)處于READY狀態(tài)。一旦在共享存儲器106中的READY任務(wù)池中該READY處理器的優(yōu)先級水平足夠高時,則一子處理單元可以取出該處理器任務(wù)并執(zhí)行之。因此,當分派(dispatch)一處理器任務(wù)時,該任務(wù)的狀態(tài)可以從READY狀態(tài)改變?yōu)镽UNNING狀態(tài)。相反,如果一個RUNNING任務(wù)在其執(zhí)行期間被搶占(preemp)或被搶奪(usurp),則這樣的任務(wù)的任務(wù)狀態(tài)可以改變?yōu)镽EADY狀態(tài)。上文中結(jié)合一個處理器任務(wù)讓與另一個處理器任務(wù)討論了處理器任務(wù)的搶占的例子。
BLOCKED狀態(tài)范疇可以包括WAITING(等待)狀態(tài)、SUSPENDED(掛起)狀態(tài)以及WAITING-SUSPENDED(等待掛起)狀態(tài)。當由于援引下述服務(wù)調(diào)用而導(dǎo)致阻塞一處理器任務(wù)的執(zhí)行時,這樣的處理器任務(wù)處于WAITING狀態(tài),上述服務(wù)調(diào)用指定在該處理器任務(wù)執(zhí)行繼續(xù)之前必須滿足某些條件。這樣,基于援引一服務(wù)調(diào)用,一RUNNING任務(wù)的狀態(tài)可以改變至WAITING狀態(tài)。當沒有滿足所指定的條件時,可以把處于WAITING狀態(tài)的處理器任務(wù)釋放為READY狀態(tài),由此使得該處理器任務(wù)能夠其后由一子處理單元102取出。當一處理器任務(wù)被迫中止(任務(wù)本身可以援引此)時,該任務(wù)可從RUNNING狀態(tài)進入SUSPENDED狀態(tài)。類似地,一處于READY狀態(tài)的處理器任務(wù)可以通過強制的動作進入SUSPENDED狀態(tài)。當釋放對一SUSPENDED處理器任務(wù)的強制中止時,這樣的處理器任務(wù)可以被恢復(fù),并且進入READY狀態(tài)。當一處理器任務(wù)既在等待滿足某條件時而且當其又已被強制掛起時,該任務(wù)處于WAITING-SUSPENDED狀態(tài)。因此,當強制掛起一WAITING-SUSPENDED處理器任務(wù)時,該處理器任務(wù)可以進入WAITING狀態(tài),其中該處理器任務(wù)將等待條件的滿足。
當還沒有執(zhí)行一處理器任務(wù),或者已經(jīng)完成了其執(zhí)行時,該任務(wù)處于DORMANT狀態(tài)。一DORMANT處理器任務(wù)可以在適當?shù)那闆r下進入READY狀態(tài)。NON-EXISTENT狀態(tài)是所謂的虛擬狀態(tài),其中任務(wù)不存在于系統(tǒng)中,例如由于還沒有對其加以創(chuàng)建,或者由于其已經(jīng)被刪除。
如果某一已經(jīng)移至READY狀態(tài)的任務(wù)具有比一處于RUNNING狀態(tài)的任務(wù)高的優(yōu)先性(或優(yōu)先級),則優(yōu)選地把該較低優(yōu)先性的任務(wù)移至READY狀態(tài),以及優(yōu)選地分派較高優(yōu)先級的任務(wù),并且將其移至RUNNING狀態(tài)。在這種情況下,該較低優(yōu)先級的任務(wù)已被該較高優(yōu)先級的任務(wù)搶占。
根據(jù)賦予處理器任務(wù)的優(yōu)先級,進行非搶占的、基于優(yōu)先級的任務(wù)調(diào)度。如果存在具有相同優(yōu)先級的多個任務(wù),則基于先來先服務(wù)(first-come,first-served,F(xiàn)CFS)進行調(diào)度。可以基于任務(wù)優(yōu)先級利用任務(wù)之間的優(yōu)先性來定義該任務(wù)調(diào)度規(guī)則。如果存在可運行的任務(wù)時,至多與所分配的子處理單元102的數(shù)目相同的高優(yōu)先性任務(wù)將處于RUNNING狀態(tài)。其余的可運行任務(wù)將處于READY狀態(tài)。在具有不同優(yōu)先級的任務(wù)之中,具有最高優(yōu)先級的任務(wù)具有較高的優(yōu)先性。在具有相同優(yōu)先級的任務(wù)之中,最早進入可運行(運行或就緒)狀態(tài)的處理器任務(wù)具有較高的優(yōu)先性。然而,由于對某些服務(wù)調(diào)用的援引,相同優(yōu)先級的任務(wù)之間的優(yōu)先性可能改變。當給予某一處理器任務(wù)高于其它處理器任務(wù)的優(yōu)先性時,優(yōu)選的是分派立即發(fā)生,并且把該任務(wù)移至RUNNING狀態(tài)。
現(xiàn)在,參照圖13~14,圖13~14說明了根據(jù)本發(fā)明的某些方面的搶占特征。如以上所描述的,某一處于RUNNING狀態(tài)的處理器任務(wù)(例如任務(wù)A)可以被搶占,或者讓與另一處于READY狀態(tài)的處理器任務(wù)(例如,任務(wù)B)。如圖13~14中所說明的,在子處理單元102上執(zhí)行任務(wù)A直至讓與點。在該點處,SPU的內(nèi)核操作來把任務(wù)A拷貝回共享存儲器106(保存任務(wù)A)。接下來,把任務(wù)B從共享存儲器106拷貝到SPU的局部存儲器(恢復(fù)任務(wù)B)。SPU然后執(zhí)行任務(wù)B。盡管該技術(shù)就局部存儲器利用量和高帶寬而言,具有相對高的性能,但是存在從讓與點到任務(wù)B的執(zhí)行的任務(wù)執(zhí)行延遲,其沒有被最優(yōu)化。
參照圖15~16,圖15~16圖示了根據(jù)本發(fā)明的進一步的方面的一可選方案。在這一情況下,在把任務(wù)A從局部存儲器拷貝至共享存儲器106之前,可以把任務(wù)B從共享存儲器106拷貝到子處理單元102的局部存儲器。關(guān)于此,子處理單元102可以執(zhí)行任務(wù)A,而同時執(zhí)行標識并且從共享存儲器106中檢索任務(wù)B的步驟。這可能需要把任務(wù)表280和任務(wù)隊列282從共享存儲器106拷貝至子處理單元102A的局部存儲器,并且使用任務(wù)表280和任務(wù)隊列282標識下一READY任務(wù),即任務(wù)B。在讓與點處,子處理單元102A的內(nèi)核把任務(wù)A從局部存儲器拷貝于共享存儲器106,這可能需要修改任務(wù)表280和任務(wù)隊列282,如以上所描述的。接下來,子處理單元102可開始任務(wù)B的執(zhí)行。與圖13~14中所說明的技術(shù)相比,該技術(shù)顯著減小了讓與和任務(wù)B的執(zhí)行之間的延遲。
參照圖17和18,根據(jù)本發(fā)明的一或多個進一步的方面,可以進一步減小讓與和任務(wù)B的執(zhí)行之間的延遲。具體地,子處理單元102可以按與以上參照圖15和16所討論的基本相同的方式操作,直至讓與點。然而,在讓與之后,子處理單元102優(yōu)選地啟動任務(wù)B的執(zhí)行。在基本相同的時間點,子處理單元102的內(nèi)核優(yōu)選地把任務(wù)A從子處理單元102的局部存儲器拷貝到共享存儲器106。由于在讓與之后很快執(zhí)行任務(wù)B,所以與圖14~16中所圖示的方案相比,顯著地減小了延遲。
根據(jù)本發(fā)明的一或多個進一步的方面,子處理單元102可以在局部存儲器中維持多個處理器任務(wù)以供執(zhí)行。圖19中圖示了這一點。局部存儲器包括多個頁和頁表,以便管理多個處理器任務(wù)的執(zhí)行。該方案的優(yōu)點在于,可以進一步減小延遲,不過一個缺點是,處理器任務(wù)的執(zhí)行將獨占局部存儲器中顯著更多的空間。
現(xiàn)在參照圖20~22,圖20~22說明了根據(jù)本發(fā)明的一或多個方面的處理器任務(wù)遷移。這些圖說明了如何可以把一個處理器任務(wù)例如任務(wù)B從一個子處理單元SPU1遷移至另一個子處理單元SPU2。遷移可以是基于某一條件的,例如與相應(yīng)處理器任務(wù)相關(guān)聯(lián)的相應(yīng)優(yōu)先級水平。根據(jù)本發(fā)明的某些方面,處理器任務(wù)從一個子處理單元向另一個子處理單元的遷移可以不是搶占性的。換句話說,處理器任務(wù)的遷移可以作為優(yōu)先級條件和時序的結(jié)果自然地流動,而不是基于導(dǎo)致這一遷移的某種決策。
可以通過以下的例子說明該非搶占遷移。假設(shè)利用任務(wù)表從共享存儲器106中選擇了處理器任務(wù)B,該任務(wù)表指示了就緒待執(zhí)行的處理器任務(wù)的優(yōu)先級次序。任務(wù)B正運行在子處理單元SPU1上。類似地,假設(shè)根據(jù)任務(wù)表從共享存儲器106中選擇了處理器任務(wù)C,而且處理器任務(wù)C正運行在子處理單元SPU2上。在選擇處理器任務(wù)B和處理器任務(wù)C時,假設(shè)具有較高優(yōu)先級水平的處理器任務(wù)A沒有準備好待執(zhí)行,因此,未被選擇供執(zhí)行。然而,在處理器任務(wù)B和處理器任務(wù)C正在運行期間,假設(shè)處理器任務(wù)A變?yōu)榫途w待執(zhí)行的。
參照圖21,處理器任務(wù)B可以讓出子處理單元SP1。處理器任務(wù)B的此讓與動作可能由于程序員已決定讓與將對軟件應(yīng)用的總體執(zhí)行有益而發(fā)生。在任何情況下,子處理單元SP1通過把處理器任務(wù)B寫回到共享存儲器106并且更新任務(wù)表來響應(yīng)此讓與。子處理單元SP1還訪問任務(wù)表以判斷應(yīng)拷貝和執(zhí)行共享存儲器106中的多個處理器任務(wù)中的哪個。在本例中,根據(jù)任務(wù)表,處理器任務(wù)A具有最高優(yōu)先級,因此,子處理單元SP1把處理器任務(wù)A從共享存儲器106拷貝到其局部存儲器以供執(zhí)行。此時,子處理單元SP1執(zhí)行處理器任務(wù)A,以及子處理單元SP2繼續(xù)執(zhí)行處理器任務(wù)C。
進一步參照圖22,處理器任務(wù)C可以把子處理單元SP2讓與另一個處理器任務(wù)。同樣,可以通過程序指令與/或處理器任務(wù)C的條件援引該讓與。在任何情況下,子處理單元SP2把處理器任務(wù)C寫回到共享存儲器106中,并且相應(yīng)地更新任務(wù)表。子處理單元SP2還訪問任務(wù)表,以判斷應(yīng)該拷貝就緒待執(zhí)行的處理器任務(wù)中的哪個。在本例中,處理器任務(wù)B就緒待執(zhí)行,并且在多個就緒待執(zhí)行的處理器任務(wù)之中具有最高優(yōu)先級。因此,子處理單元SP2把處理器任務(wù)B從共享存儲器106拷貝于其局部存儲器以供執(zhí)行。
圖20中所圖示的處理條件和圖22中所圖示的處理條件的比較揭示處理器任務(wù)B已從子處理單元SPU1遷移到子處理單元SP2。
現(xiàn)在參照圖23~24,圖23~24說明了本發(fā)明的搶占多任務(wù)處理方面。本發(fā)明的這些方面規(guī)定可以由一較高優(yōu)先級的處理器任務(wù)例如處理器任務(wù)A搶占地取代運行在子處理單元之一例如子處理單元SP2上的較低優(yōu)先級的處理器任務(wù)。更具體地講,處理器任務(wù)B可以正運行在子處理單元SPU1上,而處理器任務(wù)C可以正運行在子處理單元SPU2上(圖23)。接下來,一較高優(yōu)先級的任務(wù),任務(wù)A,可以變?yōu)榫途w待執(zhí)行的。這可能由于系統(tǒng)的另一個子處理單元的某一動作而發(fā)生。
出于討論的目的,假設(shè)由于執(zhí)行處理器任務(wù)B,子處理單元SPU1把處理器任務(wù)A的狀態(tài)改為RUNNING狀態(tài)。因此,子處理單元SPU1優(yōu)選地判斷處理器任務(wù)A的優(yōu)先級水平是否高于正運行在其它子處理單元上的處理器任務(wù)的優(yōu)先級水平中的任何一個。在這一簡化的情況中,子處理單元SPU1判斷處理器任務(wù)A的優(yōu)先級水平是否高于處理器任務(wù)C的優(yōu)先級水平。如果高于,則子處理單元SPU1至少啟動以處理器任務(wù)A對處理器任務(wù)C的取代。換句話說,子處理單元SP1優(yōu)選地使得處理器任務(wù)C把子處理單元SPU2讓與處理器任務(wù)A。關(guān)于此,子處理單元SP1的內(nèi)核向子處理單元SPU2的內(nèi)核發(fā)布一中斷。響應(yīng)此中斷,子處理單元SPU2可以把處理器任務(wù)C寫回到共享存儲器106,并且更新任務(wù)表(圖24)。子處理單元SPU2還可以把處理器任務(wù)A從共享存儲器拷貝至其局部存儲器以供執(zhí)行。
現(xiàn)在參照圖25~26,圖25~26說明了本發(fā)明的某些直接遷移方面。這些方面規(guī)定可以把運行在一子處理單元上的較高優(yōu)先級的一處理器任務(wù)遷移到運行一較低優(yōu)先級的處理器任務(wù)的另一子處理單元上。這一遷移可以是響應(yīng)于運行較高優(yōu)先級處理器任務(wù)的子處理單元所接收的直接中斷。參照圖25,子處理單元SPU1可以接收一指示其必須執(zhí)行其它任務(wù)的中斷。該中斷還可以導(dǎo)致子處理單元SPU1判斷是否系統(tǒng)的任何其它子處理單元正在執(zhí)行較低優(yōu)先級的處理任務(wù)。如果是,則這樣的子處理單元可以為了該較高優(yōu)先級處理任務(wù)而讓與處理器任務(wù)的執(zhí)行。更具體地,如果子處理單元SP1斷定子處理單元SP2正在運行優(yōu)先級低于處理器任務(wù)A的處理器任務(wù),例如處理器任務(wù)B,則子處理單元SP1的內(nèi)核優(yōu)選地向子處理單元SPU2的內(nèi)核發(fā)布中斷。響應(yīng)于該中斷,子處理單元SP2優(yōu)選地把處理器任務(wù)B從其局部存儲器寫回到共享存儲器106,并且更新任務(wù)表。子處理單元SP2同樣優(yōu)選地處理器任務(wù)A從子處理單元SP1的局部存儲器拷貝(或轉(zhuǎn)移)至其局部存儲器,以供執(zhí)行。
圖27圖示了根據(jù)本發(fā)明的一個方面處理單元(“PU”)如何可以處理中斷。在第一步驟中,PU接收中斷。然后,PU判斷哪一子處理單元(在這一情況下,從SPU0、SPU1以及SPU2構(gòu)成的組中)具有最低優(yōu)先級。然后,PU向具有最低優(yōu)先級的SPU發(fā)送中斷。在圖27的情況中,SPU2具有最低優(yōu)先級,因此PU將向SPU2發(fā)送中斷。
根據(jù)本發(fā)明的一或多個進一步的方面,可以按多種方式處理從一個子處理單元到另一個子處理單元的中斷。現(xiàn)在參照圖28,圖28說明了在本發(fā)明的一個實施例中,如何可以指定一個子處理單元管理到系統(tǒng)中任何其它子處理單元的中斷。所指定的子處理單元接收所有這樣的任務(wù)遷移中斷,并且或者自身處理這些中斷,或者判斷是否把中斷傳送給另一個子處理單元。例如,如果中斷針對的是所指定的子處理單元,則所指定的子處理單元可以自己處理該中斷。作為替代,如果中斷并非針對所指定的子處理單元,則所指定的子處理單元可以向正在執(zhí)行具有最低優(yōu)先級的處理器任務(wù)的、組中的子處理單元發(fā)送中斷。
圖29說明了一種其中可以采用分布式中斷處理方案的替代性途徑。根據(jù)該技術(shù),把相應(yīng)的中斷賦予每一子處理單元,例如,可以把中斷A賦予子處理單元SPU0??梢园阎袛郆、C賦予子處理單元SPU1,可以把中斷D、E、F賦予子處理單元SPU2。
以上針對圖23~26的討論需要子處理單元能夠確定運行在系統(tǒng)的其它子處理單元上的處理器任務(wù)的優(yōu)先級水平。根據(jù)本發(fā)明的一個實施例,在判斷正在運行任務(wù)的優(yōu)先級水平的過程中,子處理單元可以利用共享任務(wù)優(yōu)先級表。共享任務(wù)優(yōu)先級表可以被放置在共享存儲器中,并且可以包括多個針對子處理單元標識符和處理器任務(wù)優(yōu)先級標識符的表項。例如,子處理單元標識符可以為子處理單元特有的數(shù)字與/或字母數(shù)字代碼。處理器任務(wù)優(yōu)先級標識符優(yōu)選地指示正被執(zhí)行的特定處理器任務(wù)的優(yōu)先級水平。共享任務(wù)優(yōu)先級表中的每個表項優(yōu)選地包括子處理單元標識符和優(yōu)先級標識符對兒(pair),指示運行在相關(guān)聯(lián)的子處理單元上的給定處理器任務(wù)的優(yōu)先級水平。這樣,試圖確定正在運行的處理器任務(wù)的優(yōu)先級水平的子處理單元可以訪問共享任務(wù)優(yōu)先級表,以找到正在運行較低優(yōu)先級處理器任務(wù)的子處理單元。優(yōu)選地,正在運行最低優(yōu)先級處理器任務(wù)的子處理單元被標識出來以讓與較高優(yōu)先級水平處理器任務(wù)。
本發(fā)明的其它實施例可以規(guī)定子處理單元利用共享變量,該共享變量指示哪個子處理單元正在運行最低優(yōu)先級的處理器任務(wù)。優(yōu)選地通過微少更新處理(atomic update process)實現(xiàn)對共享變量的使用,以便能夠保證優(yōu)先級水平的準確指示。一種替代的途徑可以利用串行地從一個子處理單元傳送到另一個子處理單元的串行化的消息??梢岳幂^低優(yōu)先級水平處理器任務(wù)的優(yōu)先級水平和子處理單元標識符更新該消息。
參照圖30,本發(fā)明的一替代實施例考慮這樣一種情況可以通過把多個處理器元件200結(jié)合起來而增加被分配來執(zhí)行處理器任務(wù)110的子處理單元208的數(shù)目,以提供增強的處理能力。例如,可以把兩或兩個以上的處理器元件200A,200B包裝或結(jié)合起來,例如,在一或多個芯片包裝中,形成一組多處理器單元??梢园堰@一裝置稱為寬帶引擎(broadband engine,BE)。寬帶引擎290包含通過總線212互相連接用于數(shù)據(jù)通信的兩個處理器元件200A,200B。優(yōu)選地提供附加的數(shù)據(jù)總線216,以允許處理器元件200A、200B以及共享DRAM 214之間的通信。一或多個輸入/輸出(I/O)接口202A和202B以及外部總線(未示出),提供了寬帶引擎290和任何外部部件之間的通信。寬帶引擎290的處理器元件200A和200B的每個以并行和獨立的方式處理數(shù)據(jù)和應(yīng)用,類似于以上參照圖3所討論的子處理部件208所執(zhí)行的對應(yīng)用和數(shù)據(jù)的并行和獨立的處理。根據(jù)本發(fā)明的各個方面,BE可以包括單個處理器元件或多個處理器元件。另外,也可以由多個BE形成一個BE。
現(xiàn)在參照圖31。此處,可以把獨立的多處理元件208或BE 290(多處理元件集合)分布于形成多處理系統(tǒng)500的多個產(chǎn)品之中。多處理系統(tǒng)500的各元件或成員(被實現(xiàn)為計算機與/或計算設(shè)備)優(yōu)選地通過網(wǎng)絡(luò)504進行通信。網(wǎng)絡(luò)504可以為局域網(wǎng)(LAN)、全球網(wǎng)例如因特網(wǎng)、或者任何其它計算機網(wǎng)絡(luò)。
連接到網(wǎng)絡(luò)504的成員包括,例如客戶機計算機506、服務(wù)器計算機508、個人數(shù)字助手(PDA)510、數(shù)字電視(DTV)512以及其它有線或無線計算機和計算設(shè)備。例如,客戶機506A可以為由一或多個PE 200構(gòu)造的膝上型計算機或其它合適的多處理系統(tǒng)??蛻魴C506B可以為由一或多個PE 200構(gòu)造的臺式機(或機頂盒)或其它合適的多處理系統(tǒng)。另外,服務(wù)器506A可以是一種管理實體(使用數(shù)據(jù)庫能力),其優(yōu)選地也是由一或多個PE 200等構(gòu)造的。
于是,多處理系統(tǒng)500的能力可以依賴于本地配置(例如,一個產(chǎn)品)或遠程配置(例如,在多個產(chǎn)品中)的多個處理器元件200。關(guān)于此,參照圖32,圖32為根據(jù)本發(fā)明的一或多個方面的整個計算機網(wǎng)絡(luò)的方框圖。同樣,PE 200與/或?qū)拵б?80(由多個PE構(gòu)成)可以用于實現(xiàn)計算機系統(tǒng)500的總體分布式體系結(jié)構(gòu)。
由于系統(tǒng)500的服務(wù)器508執(zhí)行比客戶機多的應(yīng)用和數(shù)據(jù)的處理,所以服務(wù)器508比客戶機506包含更多的計算模塊(例如,PE 200)。另一方面,在本例中,PDA 510執(zhí)行最小量的處理。因此,PDA 510包含最小數(shù)目的PE200,例如單個PE 200。DTV 512執(zhí)行處理的水平基本上處于客戶機506和服務(wù)器508執(zhí)行處理的水平之間。因此,DTV 512包括的處理器元件數(shù)目在客戶機506和服務(wù)器508處理器元件數(shù)目之間。
現(xiàn)在,將提供有關(guān)分布式多處理系統(tǒng)500的細節(jié)。系統(tǒng)500的同構(gòu)配置有助于提供更好的適應(yīng)性、處理速度、以及處理效率。由于系統(tǒng)500的每一成員均使用同一計算模塊例如處理器元件200的一或多個(或某一部分)進行處理,所以執(zhí)行數(shù)據(jù)與/或應(yīng)用處理的具體的計算機或計算設(shè)備并不重要,因為可以在網(wǎng)絡(luò)的成員之間共享這樣的應(yīng)用和數(shù)據(jù)的處理。通過唯一地標識包括系統(tǒng)500所處理的數(shù)據(jù)和應(yīng)用的軟件包,可以把處理結(jié)果傳輸于請求該處理的計算機或計算設(shè)備,而不管其中這一處理發(fā)生于何處。因為執(zhí)行這一處理的模塊具有共同的體系結(jié)構(gòu),并且使用了共同的指令集結(jié)構(gòu),所以避免了為實現(xiàn)處理器之間的兼容性的、所添加的額外軟件層的計算負擔。這一體系結(jié)構(gòu)和編程模型有助于提高執(zhí)行諸如實時、多媒體應(yīng)用所需的處理速度。
為了更充分地利用系統(tǒng)500促進的處理速度與處理效率,可以把這一系統(tǒng)所處理的應(yīng)用和數(shù)據(jù)包裝成唯一標識的、統(tǒng)一格式的軟件包502。每個軟件包502包含或者可以包含應(yīng)用和數(shù)據(jù)兩者。每個軟件包還包含用于在整個網(wǎng)絡(luò)504和系統(tǒng)500上全局標識軟件包的ID。軟件包的結(jié)構(gòu)的此統(tǒng)一性,以及在整個網(wǎng)絡(luò)上的軟件包的唯一標識,有助于在網(wǎng)絡(luò)504的任一計算機或計算設(shè)備上的應(yīng)用和數(shù)據(jù)的處理。例如,客戶機506可以構(gòu)建(formulate)軟件包502,但由于客戶機506的處理能力有限,所以把軟件包502傳送到服務(wù)器508以處理。因此,軟件包502可以基于網(wǎng)絡(luò)504上的處理資源的可用性在整個網(wǎng)絡(luò)504上遷移以進行處理。
系統(tǒng)500的處理器和軟件包502的同構(gòu)結(jié)構(gòu)還避免了當今異構(gòu)網(wǎng)絡(luò)的許多問題。例如,避免了試圖允許在使用任何指令集的任何ISA例如諸如Java虛擬機的虛擬機上處理應(yīng)用的低效率編程模塊。因此,系統(tǒng)500可以實現(xiàn)遠比傳統(tǒng)網(wǎng)絡(luò)更有效和更高效的寬帶處理(broadband processing)。
特將共同轉(zhuǎn)讓的序號為10-783,246、題為“METHODS AND APPARATUSFOR TASK MANAGEMENT IN A MULTI-PROCES SOR SYSTEM多處理器系統(tǒng)中任務(wù)管理的方法與裝置)”、律師記錄書編號為SCEI 1.0-1856、與本申請同日提交于美國專利與商標局的美國專利申請的全部內(nèi)容并入此處,已作參考。
盡管此處已參照具體的實施例描述了本發(fā)明,但應(yīng)該認識到,這些實施例僅說明性地描述了本發(fā)明的原理與應(yīng)用。因此,應(yīng)該理解,在不背離所附權(quán)利要求的構(gòu)思與范圍的情況下,可以對這些說明性實施例進行眾多修改,并且可以設(shè)計其它的配置。
產(chǎn)業(yè)上的可利用性本發(fā)明適用于在多處理系統(tǒng)的子處理單元之間調(diào)度和執(zhí)行處理器任務(wù)的技術(shù)。
權(quán)利要求
1.一種在多處理系統(tǒng)上執(zhí)行處理器任務(wù)的方法,該多處理系統(tǒng)包括可以訪問共享存儲器的多個處理單元,所述方法包括規(guī)定從共享存儲器拷貝所選擇的處理器任務(wù),并且由一或多個處理單元執(zhí)行;以及把至少一個處理器任務(wù)從一個處理單元遷移到另一個處理單元。
2.根據(jù)權(quán)利要求1所述的方法,還包括禁止從共享存儲器執(zhí)行處理器任務(wù)。
3.根據(jù)權(quán)利要求1所述的方法,其中,所述多個處理單元包括主處理器單元和多個子處理單元,所述多個子處理單元中的每個子處理單元具有局部存儲器,而且其中,把處理器任務(wù)拷貝于局部存儲器,并且在局部存儲器中執(zhí)行。
4.根據(jù)權(quán)利要求1所述的方法,其中,所述至少一個處理器任務(wù)的遷移是基于某條件的。
5.根據(jù)權(quán)利要求4所述的方法,其中,所述條件基于與處理器任務(wù)相關(guān)聯(lián)的相應(yīng)的優(yōu)先級水平。
6.根據(jù)權(quán)利要求5所述的方法,其中,所述條件的滿足和遷移的啟動不基于搶占動作。
7.根據(jù)權(quán)利要求5所述的方法,還包括要求子處理單元基于處理器任務(wù)的優(yōu)先級水平從共享存儲器中選擇處理器任務(wù)以供執(zhí)行。
8.根據(jù)權(quán)利要求3所述的方法,還包括要求子處理單元在從共享存儲器中選擇較低優(yōu)先級的處理器任務(wù)之前,選擇較高優(yōu)先級的處理器任務(wù)。
9.根據(jù)權(quán)利要求3所述的方法,還包括從共享存儲器選擇第一優(yōu)先級水平的第一處理器任務(wù),以供第一子處理單元執(zhí)行;從共享存儲器選擇第二優(yōu)先級水平的第二處理器任務(wù),以供第二子處理單元執(zhí)行;以及把第一子處理單元讓與第三優(yōu)先級水平的第三處理器任務(wù),第三處理器任務(wù)被選擇,這是因為其優(yōu)先級水平高于就緒待執(zhí)行的任何其它處理器任務(wù)。
10.一種在多處理系統(tǒng)上執(zhí)行處理器任務(wù)的方法,該多處理系統(tǒng)包括可以訪問共享存儲器的多個處理單元,所述方法包括規(guī)定從共享存儲器拷貝所選擇的處理器任務(wù),并且由一或多個處理單元執(zhí)行;規(guī)定處理單元基于處理器任務(wù)的優(yōu)先級水平從共享存儲器中選擇處理器任務(wù)以供執(zhí)行;以及規(guī)定可以由較高優(yōu)先級的處理器任務(wù)搶占性地取代正運行在處理單元之一上的較低優(yōu)先級的處理器任務(wù)。
11.根據(jù)權(quán)利要求10所述的方法,還包括禁止從共享存儲器執(zhí)行處理器任務(wù)。
12.根據(jù)權(quán)利要求10所述的方法,其中,所述多個處理單元包括主處理器單元和多個子處理單元,所述多個子處理單元中的每個子處理單元具有局部存儲器,而且其中,把處理器任務(wù)拷貝于局部存儲器,并且在局部存儲器中執(zhí)行。
13.根據(jù)權(quán)利要求12所述的方法,還包括要求子處理單元在從共享存儲器中選擇較低優(yōu)先級的處理器任務(wù)之前,選擇較高優(yōu)先級的處理器任務(wù)。
14.根據(jù)權(quán)利要求12所述的方法,還包括從共享存儲器中選擇相關(guān)聯(lián)的優(yōu)先級水平的多個處理器任務(wù),以供多個子處理單元執(zhí)行;使得共享存儲器中具有給定優(yōu)先級水平的第n處理器任務(wù)變?yōu)榫途w待執(zhí)行的;以及判斷該給定優(yōu)先級水平是否高于該多個處理器任務(wù)的優(yōu)先級水平中的任何一個。
15.根據(jù)權(quán)利要求14所述的方法,其中,子處理單元中的至少一個可操作來執(zhí)行所述判斷。
16.根據(jù)權(quán)利要求14所述的方法,還包括搶占性地用第n處理器任務(wù)取代具有比該給定優(yōu)先級水平低的優(yōu)先級水平的多個處理器任務(wù)中的一個。
17.根據(jù)權(quán)利要求16所述的方法,其中,所述子處理單元中的一個或多個可操作來至少啟動所述取代并且使得所述多個子處理單元中的所述一個讓與較低優(yōu)先級水平的處理器任務(wù)的執(zhí)行。
18.根據(jù)權(quán)利要求17所述的方法,還包括規(guī)定該啟動子處理單元向該讓與子處理單元發(fā)布中斷,以啟動對該較低優(yōu)先級水平的處理器任務(wù)的取代。
19.根據(jù)權(quán)利要求17所述的方法,還包括規(guī)定該讓與子處理單元把該較低優(yōu)先級的處理器任務(wù)從其局部存儲器寫回到共享存儲器。
20.根據(jù)權(quán)利要求17所述的方法,還包括規(guī)定該讓與子處理單元把該較高優(yōu)先級的第n處理器任務(wù)從共享存儲器拷貝到其局部存儲器中以供執(zhí)行。
21.一種在多處理系統(tǒng)上執(zhí)行處理器任務(wù)的方法,該多處理系統(tǒng)包括可以訪問共享存儲器的多個子處理單元和一主處理單元,每個子處理單元包括獨立于共享存儲器的片上局部存儲器,所述方法包括規(guī)定把處理器任務(wù)從共享存儲器拷貝到子處理單元的局部存儲器中以執(zhí)行之,并且禁止從共享存儲器執(zhí)行處理器任務(wù);從共享存儲器選擇相關(guān)聯(lián)的優(yōu)先級水平的多個處理器任務(wù),以供多個子處理單元執(zhí)行;規(guī)定子處理單元可以判斷共享存儲器中的具有給定優(yōu)先級水平的第n處理器任務(wù)是否高于所述多個處理器任務(wù)的優(yōu)先級水平中任何一個。
22.根據(jù)權(quán)利要求21所述的方法,還包括規(guī)定可以由較高優(yōu)先級的處理器任務(wù)搶占性地取代正運行在子處理單元之一上的較低優(yōu)先級的處理器任務(wù)。
23.根據(jù)權(quán)利要求21所述的方法,還包括規(guī)定在判斷該第n處理器任務(wù)是否具有比所述多個處理器任務(wù)高的優(yōu)先級水平過程中,子處理單元使用共享任務(wù)優(yōu)先級表。
24.根據(jù)權(quán)利要求23所述的方法,其中該共享任務(wù)優(yōu)先級表包括關(guān)于子處理單元標識符和處理器任務(wù)優(yōu)先級標識符的表項;以及每個表項包括子處理單元標識符和優(yōu)先級標識符對兒,其指示了運行在相關(guān)聯(lián)的子處理單元上的給定處理器任務(wù)的優(yōu)先級水平。
25.根據(jù)權(quán)利要求21所述的方法,還包括規(guī)定試圖判斷第n處理器任務(wù)是否具有比所述多個處理器任務(wù)高的優(yōu)先級水平的子處理單元搜尋共享任務(wù)優(yōu)先級表以找到指示較低優(yōu)先級水平的表項對兒。
26.一種在多處理系統(tǒng)上執(zhí)行處理器任務(wù)的方法,所述多處理系統(tǒng)包括可以訪問共享存儲器的多個子處理單元和主處理單元,每個處理單元包括獨立于共享存儲器的片上局部存儲器,該方法包括規(guī)定把處理器任務(wù)從共享存儲器拷貝到子處理單元的局部存儲器中以執(zhí)行之,并且禁止從共享存儲器執(zhí)行處理器任務(wù);規(guī)定子處理單元基于處理器任務(wù)的優(yōu)先級水平,從共享存儲器中選擇處理器任務(wù)以供執(zhí)行;以及響應(yīng)于一給定子處理單元所接收的中斷,把正運行在該給定子處理單元上的較高優(yōu)先級的處理器任務(wù)遷移到正在運行較低優(yōu)先級的處理器任務(wù)的另一子處理單元。
27.一種多處理器裝置,包括多個處理單元,每個處理單元包括在其中執(zhí)行處理器任務(wù)的局部存儲器;以及共享存儲器,可操作來存儲就緒待執(zhí)行的處理器任務(wù),其中把處理器任務(wù)從共享存儲器拷貝到處理單元的局部存儲器以執(zhí)行之,以及把至少一個處理器任務(wù)從一個處理單元遷移到另一個處理單元。
28.根據(jù)權(quán)利要求27所述的裝置,還包括禁止從共享存儲器執(zhí)行處理器任務(wù)。
29.根據(jù)權(quán)利要求27所述的方法,其中,所述多個處理單元包括主處理器單元和多個子處理單元,所述多個子處理單元中的每個具有局部存儲器,而且其中,把處理器任務(wù)拷貝于局部存儲器,并且在局部存儲器中執(zhí)行。
30.根據(jù)權(quán)利要求29所述的裝置,其中,所述至少一個處理器任務(wù)的遷移是基于某條件的。
31.根據(jù)權(quán)利要求30所述的裝置,其中,所述條件基于與處理器任務(wù)相關(guān)聯(lián)的相應(yīng)的優(yōu)先級水平。
32.根據(jù)權(quán)利要求31所述的裝置,其中,所述條件的滿足和遷移的啟動不基于搶占動作。
33.根據(jù)權(quán)利要求31所述的裝置,其中,所述子處理單元可操作來基于處理器任務(wù)的優(yōu)先級水平從共享存儲器中選擇處理器任務(wù)以供執(zhí)行。
34.根據(jù)權(quán)利要求29所述的裝置,其中,所述子處理單元可操作來在從共享存儲器中選擇較低優(yōu)先級的處理器任務(wù)之前,選擇較高優(yōu)先級的處理器任務(wù)。
35.根據(jù)權(quán)利要求29所述的裝置,其中第一子處理單元可操作來從共享存儲器選擇第一優(yōu)先級水平的第一處理器任務(wù)以供執(zhí)行;第二子處理單元可操作來從共享存儲器選擇第二優(yōu)先級水平的第二處理器任務(wù),以供執(zhí)行;以及第一子處理單元可操作來讓與第三優(yōu)先級水平的第三處理器任務(wù),第三處理器任務(wù)被選擇,這是因為其優(yōu)先級水平高于就緒待執(zhí)行的任何其它處理器任務(wù)。
36.根據(jù)權(quán)利要求29所述的裝置,其中,所述子處理單元可操作來從共享存儲器選擇相關(guān)聯(lián)優(yōu)先級水平的多個處理器任務(wù)以供執(zhí)行;以及判斷共享存儲器中已變?yōu)榫途w待執(zhí)行的、具有給定優(yōu)先級水平的第n處理器任務(wù)是否具有比所述多個處理器任務(wù)的優(yōu)先級水平中的任何一個高的優(yōu)先級水平。
37.根據(jù)權(quán)利要求36所述的裝置,其中,所述子處理單元中的至少一個可操作來執(zhí)行所述判斷。
38.根據(jù)權(quán)利要求36所述的裝置,其中,所述子處理單元中的至少一個可操作來搶占性地用該第n處理器任務(wù)取代具有比該給定優(yōu)先級水平低的優(yōu)先級水平的多個處理器任務(wù)中的一個。
39.根據(jù)權(quán)利要求38所述的裝置,其中,所述子處理單元中的一個或多個可操作來至少啟動所述取代并且使得所述多個子處理單元中的所述一個讓與較低優(yōu)先級水平的處理器任務(wù)的執(zhí)行。
40.根據(jù)權(quán)利要求39所述的裝置,其中,該啟動子處理單元可操作來向該讓與子處理單元發(fā)布中斷,以便啟動對該較低優(yōu)先級水平的處理器任務(wù)的取代。
41.根據(jù)權(quán)利要求39所述的裝置,其中,該讓與子處理單元可操作來把較低優(yōu)先級的處理器任務(wù)從其局部存儲器寫回到共享存儲器。
42.根據(jù)權(quán)利要求39所述的裝置,其中,該讓與的子處理單元可操作來把該較高優(yōu)先級的第n處理器任務(wù)從共享存儲器拷貝到其局部存儲器中以供執(zhí)行。
43.一種多處理器裝置,包括多個子處理單元,每個子處理單元包括在其中執(zhí)行處理器任務(wù)的片上局部存儲器;以及共享存儲器,可操作來存儲就緒待執(zhí)行的處理器任務(wù),其中把處理器任務(wù)從共享存儲器拷貝到子處理單元的局部存儲器中以執(zhí)行之,子處理單元可操作來基于處理器任務(wù)的優(yōu)先級水平從共享存儲器中選擇處理器任務(wù)以供執(zhí)行,以及子處理單元中的至少一個可操作來響應(yīng)于一給定子處理單元所接收的中斷,把運行在該給定子處理單元上的較高優(yōu)先級的處理器任務(wù)遷移到正在運行較低優(yōu)先級的處理器任務(wù)的另一子處理單元。
44.根據(jù)權(quán)利要求43所述的裝置,其中,所述子處理單元可操作來在從共享存儲器中選擇較低優(yōu)先級的處理器任務(wù)之前,選擇較高優(yōu)先級的處理器任務(wù)。
45.根據(jù)權(quán)利要求43所述的裝置,其中,所述子處理單元可操作來從共享存儲器選擇相關(guān)聯(lián)的優(yōu)先級水平的多個處理器任務(wù)以供執(zhí)行;以及判斷運行在子處理單元上的多個處理器任務(wù)中的哪個具有比運行在該給定子處理單元上的處理器任務(wù)的優(yōu)先級水平低的最低優(yōu)先級水平。
46.根據(jù)權(quán)利要求45所述的裝置,其中,所述給定子處理單元可操作來執(zhí)行所述判斷。
47.根據(jù)權(quán)利要求45所述的裝置,其中,所述給定處理器任務(wù)被遷移到運行該具有最低優(yōu)先級水平的處理器任務(wù)的子處理單元,并取代該處理器任務(wù)。
48.根據(jù)權(quán)利要求47所述的裝置,其中,所述給定子處理單元可操作來至少啟動所述遷移并且使得運行具有最低優(yōu)先級水平的處理器任務(wù)的子處理單元把執(zhí)行讓與具有較高優(yōu)先級水平的該給定處理器任務(wù)。
49.根據(jù)權(quán)利要求48所述的裝置,其中,所述給定子處理單元可操作來向該讓與子處理單元發(fā)布中斷,以便啟動對該最低優(yōu)先級水平的處理器任務(wù)的取代。
50.根據(jù)權(quán)利要求48所述的裝置,其中,所述讓與子處理單元可操作來把較低優(yōu)先級的處理器任務(wù)從其局部存儲器寫回共享存儲器。
51.根據(jù)權(quán)利要求45所述的裝置,其中,所述讓與子處理單元可操作來把該較高優(yōu)先級的給定處理器任務(wù)從該給定子處理單元的局部存儲器拷貝到其局部存儲器中,以供執(zhí)行。
52.根據(jù)權(quán)利要求43所述的裝置,其中,所述給定子處理單元可操作來在判斷哪個處理器任務(wù)具有最低優(yōu)先級水平的過程中使用共享任務(wù)優(yōu)先級表。
53.根據(jù)權(quán)利要求52所述的裝置,其中,該共享任務(wù)優(yōu)先級表包括關(guān)于子處理單元標識符和處理器任務(wù)優(yōu)先級標識符的表項;以及每個表項包括子處理單元標識符和優(yōu)先級標識符對兒,其指示了運行在相關(guān)聯(lián)的子處理單元上的給定處理器任務(wù)的優(yōu)先級水平。
54.根據(jù)權(quán)利要求53所述的裝置,其中,所述給定子處理單元可操作來搜尋共享任務(wù)優(yōu)先級表,以找到指示最低優(yōu)先級水平的表項對兒。
55.根據(jù)權(quán)利要求53所述的裝置,其中,所述給定子處理單元可操作來修改共享任務(wù)優(yōu)先級表,使得表項對兒為當前的。
全文摘要
提供了用于在多處理系統(tǒng)上執(zhí)行處理器任務(wù)的方法與裝置,所述多處理系統(tǒng)包括可以訪問共享存儲器的多個子處理單元和主處理器單元。每個子處理單元包括獨立于共享存儲器的片上局部存儲器。所述方法與裝置考慮到規(guī)定把處理器任務(wù)從共享存儲器拷貝于子處理單元的局部存儲器中,以執(zhí)行這些處理器任務(wù),并且禁止從共享存儲器執(zhí)行處理器任務(wù),以及把至少一個處理器任務(wù)從一個子處理單元遷移到另一個子處理單元。
文檔編號G06F9/445GK1910554SQ20058000295
公開日2007年2月7日 申請日期2005年2月18日 優(yōu)先權(quán)日2004年2月20日
發(fā)明者井上敬介, 巖本達也 申請人:索尼計算機娛樂公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1