專利名稱:用于多核處理器上的自動工作量分配的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于多核處理器上的自動工作量(workload)分配的方法, 更具體地涉及使多核處理器上的工作量分配自動化。
背景技術(shù):
在多核計(jì)算機(jī)系統(tǒng)中,不同系統(tǒng)資源(例如CPU、存儲器、1/0帶寬、盤 存儲設(shè)備等等)各自被用于在多指令線程上操作。與高效地操作這些多核計(jì)算 機(jī)系統(tǒng)相關(guān)聯(lián)的挑戰(zhàn)僅僅隨著多處理器計(jì)算機(jī)中核的數(shù)量和復(fù)雜度增長而增加。
與多核集成電路的使用有關(guān)的一個問題是常常難以編寫軟件以利用多個 核。為利用多核處理器,常常需要將任務(wù)劃分為線程,并且常常需要將線程 分配到可用的核上。與分配線程有關(guān)的一個問題是怎樣高效地引導(dǎo)(steer)這些 線程。在已知的系統(tǒng)中,基于可用性和相似性(affinity)將工作量發(fā)送到核。在 其它系統(tǒng)中,編寫軟件以便特定的任務(wù)在特定類型的核上運(yùn)行。當(dāng)核的數(shù)量 和類型增加時,將有機(jī)會以更智能的方式來分配工作量。
發(fā)明內(nèi)容
根據(jù)本發(fā)明,提出了一種包括自動工作量分配的多核系統(tǒng)。更具體地, 當(dāng)線程在多核系統(tǒng)中執(zhí)行時,操作系統(tǒng)/管理程序(hypervisor)連續(xù)地獲知(leam) 所述線程的執(zhí)行特征,并且將信息保存在特定于線程的(thread-specific)控制塊 中。該執(zhí)行特征被用于產(chǎn)生線程性能數(shù)據(jù)。當(dāng)所述線程執(zhí)行時,操作系統(tǒng)/管 理程序連續(xù)地使用該性能數(shù)據(jù)來將所述線程引導(dǎo)到將最高效地執(zhí)行工作量的 核。
更具體地,在一個實(shí)施例中,本發(fā)明涉及一種用于多處理器系統(tǒng)中的自 動工作量分配的方法。該方法包括測量應(yīng)用程序(application)在多處理器系 統(tǒng)的處理器上執(zhí)行時的性能;存儲與該應(yīng)用程序在所述多處理器系統(tǒng)的處理 器上的性能有關(guān)的數(shù)據(jù);以及,將應(yīng)用程序的執(zhí)行分配給具有與該應(yīng)用.程序的處理消耗(consumption)屬性相對應(yīng)的特征的處理器。
在另 一實(shí)施例中,本發(fā)明涉及一種用于多核處理器中的自動工作量分配 的裝置。該裝置包括用于測量應(yīng)用程序在多處理器系統(tǒng)的處理器上執(zhí)行時 的性能的部件;用于存儲與該應(yīng)用程序在所述多處理器系統(tǒng)的處理器上的性 能有關(guān)的數(shù)據(jù)的部件;以及,用于將應(yīng)用程序的執(zhí)行分配給具有與該應(yīng)用程 序的處理消耗屬性相對應(yīng)的特征的處理器的部件。
在另一實(shí)施例中,本發(fā)明涉及一種包括多個處理器核和存儲器的多核處 理器系統(tǒng)。該存儲器存儲自動工作量分配系統(tǒng)。該自動工作量分配系統(tǒng)包括 可由多核處理器執(zhí)行的指令,所述指令用于測量應(yīng)用程序在多處理器系統(tǒng) 的處理器上執(zhí)行時的性能;存儲與該應(yīng)用程序在所述多處理器系統(tǒng)的處理器 上的性能有關(guān)的數(shù)據(jù);以及,將應(yīng)用程序的執(zhí)行分配給具有與該應(yīng)用程序的 處理消耗屬性相對應(yīng)的特征的處理器。
通過參照附圖,可以更好地理解本發(fā)明,并且使得本發(fā)明的許多目的、 特征和優(yōu)點(diǎn)對于本領(lǐng)域技術(shù)人員顯而易見。貫穿幾個圖的相同參考標(biāo)號的使 用表示相同或相似的元件。
圖1示出可在其中實(shí)現(xiàn)本發(fā)明的所選實(shí)施例的多處理器計(jì)算機(jī)架構(gòu);以
及
圖2示出在多核處理器上的自動工作量分配系統(tǒng)的4喿作的流程圖。
具體實(shí)施例方式
現(xiàn)在參照圖1,圖示了根據(jù)本發(fā)明的所選實(shí)施例的、提供改進(jìn)的單線程 程序的執(zhí)行的多處理器(MP)數(shù)據(jù)處理系統(tǒng)100的高層框圖。數(shù)據(jù)處理系統(tǒng)100 具有布置在一個或多個處理器組中的一個或多個處理單元,并且如所示出的 那樣,數(shù)據(jù)處理系統(tǒng)100包括處理器組110中的四個處理單元111、 121、 131、 141。在對稱多處理器(SMP)實(shí)施例中,所有處理單元111、 121、 131、 141 通常是相同的,即,它們都使用共同的指令集或子集以及協(xié)議來操作,并且 通常具有同樣的架構(gòu)。如利用處理單元111示出的那樣,每個處理單元可以 包括一個或多個處理器核116a、 116b,所述處理器核執(zhí)行程序指令以便操作 計(jì)算機(jī)。示例處理單元是由國際商用機(jī)器公司銷售的P0WER5TM,其包括單個集成電路超標(biāo)量(superscalar)微處理器,該微處理器具有全部由集成電路形成的各種執(zhí)行單元、寄存器、緩沖器、存儲器和其它功能單元。所述處理器核可以根據(jù)精簡指令集計(jì)算(RISC)技術(shù)來操作,并且可以采用指令的流水線(pipelining)和無序(out-of-order)執(zhí)行這兩者來進(jìn)一步提高超標(biāo)量架構(gòu)的性能。
如圖1中進(jìn)一步示出的那樣,每個處理器核116a、 116b包括由高速存儲設(shè)備構(gòu)造的板上(Ll)高速緩存(cache)存儲器119a、 119b(典型為分開的指令和數(shù)據(jù)高速緩存)。高速緩存通常用于臨時存儲可能被處理器重復(fù)存取的值,以便通過避免從系統(tǒng)存儲器161加載所述值的時間比較長的步驟來加快處理。處理單元可以包括另一個高速緩存,例如第二級(L2)高速緩存112,其與高速緩存存儲器控制器(未示出)一起支持分別是核116a和116b的一部分的Ll高速緩存119a、 119b兩者。可以提供另外的高速緩存級,例如可以經(jīng)由結(jié)構(gòu)總線(fabricbus)150存取的L3高速緩存166。從最高(L1)到最低(L3)的每一個高速緩存級可以連續(xù)地存儲更多信息,但是以時間更長的存取為代價。例如,處理器核(例如116a)中的板上Ll高速緩存(例如119a)可以具有存儲器的128千字節(jié)的存儲容量,L2高速緩存112可以具有4兆字節(jié)的存儲容量,L3高速緩存166可以具有132兆字節(jié)的存儲容量。為了便利于有缺陷的處理單元組件的修理/更換,每個處理單元lll、 121、 131、 141可以以可更換的電路板、可插拔的模塊、或者類似的現(xiàn)場可更換單元(FRU)的形式來構(gòu)造,所述可更換的電路板、可插拔的模塊、或者類似的現(xiàn)場可更換單元(FRU)能夠容易地以模塊的方式被替換、被安裝在系統(tǒng)100中、或者被換出系統(tǒng)IOO。
處理單元經(jīng)由系統(tǒng)內(nèi)部連線(interconnect)或結(jié)構(gòu)總線150與系統(tǒng)100的其它組件通信。結(jié)構(gòu)總線150連接到一個或多個服務(wù)處理器160、系統(tǒng)存儲設(shè)備161、存儲器控制器162、共享的或L3系統(tǒng)高速緩存166、和/或各種外圍設(shè)備169。處理器橋170可以任選地用于互連另外的處理器組。雖然沒有示出,但是將理解數(shù)據(jù)處理系統(tǒng)100還可以包括固件,該固件存儲系統(tǒng)的基本輸入/輸出邏輯,并且每當(dāng)計(jì)算機(jī)系統(tǒng)被首次接通(啟動)時都從一個外設(shè)中找出和加載操作系統(tǒng)。
如圖1所示,數(shù)據(jù)處理系統(tǒng)100包括在多個線程之間共享的多個系統(tǒng)資源(例如高速緩存存儲器、存儲器控制器,內(nèi)部連線、1/0控制器等等)。
系統(tǒng)存儲設(shè)備161(隨機(jī)存取存儲器或RAM)以易失性(臨時的)狀態(tài)存儲處理單元使用的程序指令和操作數(shù)數(shù)據(jù),包括操作系統(tǒng)161A和應(yīng)用程序161B。自動工作量分配模塊161C可以以諸如操作系統(tǒng)模塊、管理程序組件等的任何期望形式存儲在系統(tǒng)存儲器中,并且用于優(yōu)化單線程程序在處理器單元的多個核上的執(zhí)行。盡管被圖示為系統(tǒng)存儲器內(nèi)的設(shè)施(facility),但是本領(lǐng)域技術(shù)人員將認(rèn)識到,可替換地,可以在數(shù)據(jù)處理系統(tǒng)100的另一組件中實(shí)現(xiàn)自動工作量分配模塊161C,或者自動工作量分配單元可以作為單獨(dú)的單元(位于處理器內(nèi)或處理器外部)而存在。自動工作量分配模塊161C被實(shí)現(xiàn)為可執(zhí)行指令、代碼和/或包括可編程寄存器的控制邏輯,所述控制邏輯進(jìn)行操作以便檢查在系統(tǒng)100上運(yùn)行的代碼的性能監(jiān)視信息,使用預(yù)定策略(policy)給代碼分配優(yōu)先級值,并且利用每個指令的所分配的優(yōu)先級值來給每個指令添加標(biāo)簽(tag),使得所述優(yōu)先級值在系統(tǒng)100上被分配了指令,如下面更充分地描述的那樣。
系統(tǒng)100還包括性能監(jiān)視器180。性能監(jiān)視器180可以提供由自動工作量分配模塊161C在執(zhí)行自動工作量分配功能時使用的性能信息。更具體地,當(dāng)線程在多核系統(tǒng)中執(zhí)行時,操作系統(tǒng)/管理程序連續(xù)地獲知所述線程的執(zhí)行特征,并將該信息保存在特定于線程的控制塊中。所述執(zhí)行特征被用于產(chǎn)生線程性能數(shù)據(jù)。當(dāng)所述線程執(zhí)行時,操作系統(tǒng)/管理程序連續(xù)地使用該性能數(shù)據(jù)來將所述線程? 1導(dǎo)到將最高效地扭^于該工作量的核。
參照圖2,示出了多核處理器上的自動工作量分配的操作的流程圖。自動工作量分配功能獲知工作量如何在多核系統(tǒng)中執(zhí)行并將工作量引導(dǎo)到最優(yōu)的核。更具體地,自動工作量分配過程開始測試多核處理器的性能。多核處理器可以包括同類的或異類的核。對于包括同類的核的處理器,每個處理器將由于半導(dǎo)體工藝的變化(variation)而表現(xiàn)(perform)不同。例如,在相同的電壓電平上, 一個核可能比所述核的另一實(shí)例更快地運(yùn)行。不同的核可以以不同的頻率執(zhí)行。在步驟210,在模塊或卡(card)測試時(例如經(jīng)由性能監(jiān)視器180)測量所述性能差異。在步驟220通過執(zhí)行被作為目標(biāo)的(targeted)應(yīng)用程序集來進(jìn)行所述測量。性能數(shù)據(jù)被存儲在芯片上、模塊上或者卡ROM上。對于包括異類的核的處理器,作為示例,可以進(jìn)行浮點(diǎn)或矢量性能的測量。也可以根據(jù)處理器設(shè)計(jì)的知識來進(jìn)行性能分配。
第 一次在系統(tǒng)中執(zhí)行應(yīng)用程序時,核上的性能監(jiān)視器測量系統(tǒng)使用(usage)的特征。該監(jiān)^L器分析例如單浮點(diǎn)或雙浮點(diǎn)運(yùn)算、存儲器使用(L1、 L2或主存儲器存取)、使用單個或多個周期的指令以及其它項(xiàng)目。在步驟230,
8性能監(jiān)視器獲知所述應(yīng)用程序置于(put)系統(tǒng)上的資源負(fù)荷。在步驟240,給所述應(yīng)用程序或子例程或線程添加標(biāo)簽并且保存性能數(shù)據(jù)。從性能監(jiān)視器180提取性能監(jiān)視器數(shù)據(jù)。將該硬件性能數(shù)據(jù)存儲在線程的控制數(shù)據(jù)結(jié)構(gòu)中以便由操作系統(tǒng)/管理程序/群集調(diào)度程序(cluster scheduler)使用。(該硬件性能數(shù)據(jù)還可以被用于表現(xiàn)處理器的核的性能的特征,并且可以將特征表現(xiàn)信息存儲在處理器上)。在步驟250,調(diào)度程序?qū)⒃谒鼍€程的控制數(shù)據(jù)結(jié)構(gòu)中存儲的硬件利用(utilization)統(tǒng)計(jì)量(statistics)與系統(tǒng)上的處理器的特征進(jìn)行比較。在步驟260,操作系統(tǒng)或管理程序?qū)⑺鼍€程分配給將硬件能力與軟件測量的處理消耗屬性的工作量最佳地匹配的適當(dāng)?shù)暮恕?br>
調(diào)度程序也可以使用所述數(shù)據(jù)來智能地組合處理器或核上的工作量。例如,自動工作量分配模塊161C可以確定與從同一核或處理器上的高速緩存中存取數(shù)據(jù)的線程一起執(zhí)行頻繁存取存儲器的線程更高效。也可以使用所述數(shù)據(jù)來將高速緩存等待時間(latency)性能匹配到具有各種等待時間和大小的高速緩存。
具有不同處理特征、低級(low level)非侵入性(non-intrusive)處理器或核性能監(jiān)視能力、以及基于所測量的單元利用特征做出分派(dispatching)決定以便將工作發(fā)送到適當(dāng)?shù)奶幚砥骰蚝说恼{(diào)度算法的處理器的組合提供了有利的自動工作量分配系統(tǒng),所述處理器都是單個系統(tǒng)、群集、或管理程序執(zhí)行聯(lián)合體(complex)的一部分。另外,因?yàn)樵撨^程是連續(xù)的并且在每個時間片(timeslice)期間收集性能利用數(shù)據(jù),所以如果線程或工作量包含工作量變化,則該線程或工作量可以在所述聯(lián)合體中隨著時間自發(fā)地逐個處理器移動。
本領(lǐng)域^t支術(shù)人員將認(rèn)識到,數(shù)據(jù)處理系統(tǒng)100可以包括許多附加的或更少的組件,例如I/0適配器、內(nèi)部連線橋、非易失性存儲i殳備、用于連接到網(wǎng)絡(luò)或附加設(shè)備的端口等等。因?yàn)檫@樣的組件對于理解本發(fā)明來說不是必需的,所以它們沒有在圖1示出或者在這里^^皮進(jìn)一步討論。然而,還應(yīng)當(dāng)理解,本發(fā)明所提供的改進(jìn)(enhancement)可應(yīng)用于任何架構(gòu)的多線程數(shù)據(jù)處理系統(tǒng),并且決不受限于圖1中所圖示的一般化的MP架構(gòu)。
因此,本發(fā)明意圖是僅僅受到在所有方面給出對等效物的充分認(rèn)識的所附權(quán)利要求的精神和范圍的限制。
9
權(quán)利要求
1. 一種用于多處理器系統(tǒng)內(nèi)的自動工作量分配的方法,包括測量應(yīng)用程序在多處理器系統(tǒng)的處理器上執(zhí)行時的性能;存儲與該應(yīng)用程序在所述多處理器系統(tǒng)的處理器上的性能有關(guān)的數(shù)據(jù);以及將應(yīng)用程序的執(zhí)行分配給具有與該應(yīng)用程序的處理消耗屬性相對應(yīng)的特征的處理器。
2. 如權(quán)利要求l所述的方法,其中 所述存儲是在對應(yīng)的應(yīng)用程序的控制數(shù)據(jù)結(jié)構(gòu)內(nèi)。
3. 如權(quán)利要求2所述的方法,還包括將在所述應(yīng)用程序的控制數(shù)據(jù)結(jié)構(gòu)中存儲的硬件利用統(tǒng)計(jì)量與所述系統(tǒng) 上的處理器的特征進(jìn)行比較。
4. 如權(quán)利要求l所述的方法,還包括 獲知所述應(yīng)用程序置于多處理器系統(tǒng)上的資源負(fù)荷;以及 當(dāng)基于該資源負(fù)荷分配所述應(yīng)用程序的執(zhí)行時考慮該資源負(fù)荷。
5. 如權(quán)利要求4所述的方法,其中所述獲知資源負(fù)荷包括確定單浮點(diǎn)或雙浮點(diǎn)運(yùn)算、存儲器使用、以及使 用單個或多個周期的指令中的至少一種。
6. 如權(quán)利要求l所述的方法,其中 多處理器系統(tǒng)包括性能監(jiān)^f見器;以及通過多處理器系統(tǒng)的性能監(jiān)視器來執(zhí)行所述測量。
7. 如權(quán)利要求l所述的方法,其中多處理器系統(tǒng)的處理器中的至少一個處理器包括多個核;并且, 所述測量包括測量應(yīng)用程序在所述至少一個處理器的多個核上執(zhí)行時 的性能;并且還包括基于所述測量來表征多個核的性能;以及存儲與所述至少 一個處理器的多個核的性能有關(guān)的表征信息。
8. —種用于多核處理器內(nèi)的自動工作量分配的裝置,包括 用于測量應(yīng)用程序在多處理器系統(tǒng)的處理器上執(zhí)行時的性能的部件; 用于存儲與該應(yīng)用程序在所述多處理器系統(tǒng)的處理器上的性能有關(guān)的數(shù)據(jù)的部件;以及的特征的處理器的部件。
9. 如權(quán)利要求8所述的裝置,其中 所述存儲是在對應(yīng)的應(yīng)用程序的控制數(shù)據(jù)結(jié)構(gòu)內(nèi)。
10. 如權(quán)利要求9所述的裝置,還包括用于將在所述應(yīng)用程序的控制數(shù)據(jù)結(jié)構(gòu)中存儲的硬件利用統(tǒng)計(jì)量與所述 系統(tǒng)上的處理器的特征進(jìn)行比較的部件。
11. 如權(quán)利要求8所述的裝置,還包括用于獲知所述應(yīng)用程序置于多處理器系統(tǒng)上的資源負(fù)荷的部件;以及, 用于當(dāng)基于該資源負(fù)荷分配所述應(yīng)用程序的執(zhí)行時考慮該資源負(fù)荷的部 件。.
12. 如權(quán)利要求11所述的裝置,其中所述獲知資源負(fù)荷包括確定單浮點(diǎn)或雙浮點(diǎn)運(yùn)算、存儲器使用、以及使 用單個或多個周期的指令中的至少一種。
13. 如權(quán)利要求8所述的裝置,其中 多處理器系統(tǒng)包括性能監(jiān)視器;以及通過多處理器系統(tǒng)的性能監(jiān)視器來執(zhí)行所述測量。
14. 一種多核處理器系統(tǒng),包括 多個處理器核;存儲器,該存儲器存儲自動工作量分配系統(tǒng),該自動工作量分配系統(tǒng)包 括可由多核處理器執(zhí)行的指令,所述指令用于測量應(yīng)用程序在多處理器系統(tǒng)的處理器上執(zhí)行時的性能; 存儲與該應(yīng)用程序在所述多處理器系統(tǒng)的處理器上的性能有關(guān)的數(shù)據(jù);以及將應(yīng)用程序的執(zhí)行分配給具有與該應(yīng)用程序的處理消耗屬性相對應(yīng) 的特征的處理器。
15. 如權(quán)利要求14所述的多核處理器系統(tǒng),其中 所述存儲是在對應(yīng)的應(yīng)用程序的控制數(shù)據(jù)結(jié)構(gòu)內(nèi)。
16. 如權(quán)利要求14所述的多核處理器系統(tǒng),其中,所述自動工作量分配 系統(tǒng)還包括用于以下操作的指令將在所述應(yīng)用程序的控制數(shù)據(jù)結(jié)構(gòu)中存儲的硬件利用統(tǒng)計(jì)量與所述系統(tǒng) 上的處理器的特征進(jìn)行比較。
17.如權(quán)利要求14所述的多核處理器系統(tǒng),其中,所述自動工作量分配 系統(tǒng)還包括用于以下操作的指令獲知所述應(yīng)用程序置于多處理器系統(tǒng)上的資源負(fù)荷;以及A3,亥-貝—鄉(xiāng)_w 1可力,0尸/|迎乂旦乂tj ^主/tr曰、jow丁" ^ /s、"j^ '貝—鄉(xiāng)貝
18. 如權(quán)利要求17所述的多核處理器系統(tǒng),其中,所述用于獲知資源負(fù)荷的指令還包括用于確定單浮點(diǎn)或雙浮點(diǎn)運(yùn)算、存儲器使用、以及使用單個 或多個周期的指令中的至少一種的指令。
19. 如權(quán)利要求14所述的多核處理器系統(tǒng),還包括 性能監(jiān)視器;并且其中所述用于測量的指令使該性能監(jiān)視器測量所述應(yīng)用程序的性能。
全文摘要
一種包括自動工作量分配的多處理器系統(tǒng)。當(dāng)線程在該多處理器系統(tǒng)中執(zhí)行時,操作系統(tǒng)或管理程序連續(xù)地獲知所述線程的執(zhí)行特征,并將信息保存在特定于線程的控制塊中。所述執(zhí)行特征被用于產(chǎn)生線程性能數(shù)據(jù)。當(dāng)所述線程執(zhí)行時,操作系統(tǒng)連續(xù)地使用該性能數(shù)據(jù)來將所述線程引導(dǎo)到將最高效地執(zhí)行該工作量的核。
文檔編號G06F9/50GK101464813SQ200810181268
公開日2009年6月24日 申請日期2008年11月18日 優(yōu)先權(quán)日2007年12月19日
發(fā)明者伯納德特·A·皮爾遜, 內(nèi)爾什·內(nèi)亞, 小羅伯特·H·貝爾, 小路易斯·B·卡普斯, 托馬斯·E·庫克, 托馬斯·J·杜克特, 羅納爾德·E·紐哈特, 邁克爾·J·夏皮羅 申請人:國際商業(yè)機(jī)器公司