專利名稱:基于內(nèi)核和應(yīng)用特性針對多處理器系統(tǒng)上運行的應(yīng)用的內(nèi)核選擇的制作方法
基于內(nèi)核和應(yīng)用特性針對多處理器系統(tǒng)上運行的應(yīng)用的內(nèi)
核選擇相關(guān)申請的引用本申請與下述共同待審申請相關(guān)2009年7月23日提交的申請序列號 12/507, 952(代理案卷號 BVF01-015-US),題為"Thread Throttling,,。
背景技術(shù):
隨著集成電路技術(shù)持續(xù)規(guī)?;隗w系架構(gòu)和系統(tǒng)級上工藝變化(工藝參數(shù)從其標稱規(guī)格的偏離)正成為不可忽視的問題。確實,變化具有較大影響,例如芯片中泄漏功耗增加以及處理器頻率提高受限[1]。在芯片多處理器(CMP)系統(tǒng)或者CMP系統(tǒng)內(nèi)部件的情況下,當前和不遠的未來技術(shù)中管芯內(nèi)工藝變化可能導致芯片上的各個單獨內(nèi)核在它們可以消耗的功率量以及它們可以支持的最大頻率方面具有較大差異。這種影響(在其他地方[3]已經(jīng)報道)暗示了將大CMP系統(tǒng)視為同質(zhì)系統(tǒng)這一思想已不再準確。
發(fā)明內(nèi)容
在第一方面,本公開總體上描述了一種對在具有多個內(nèi)核的計算機系統(tǒng)中運行的應(yīng)用程序進行調(diào)度的方法,包括針對工藝變化,分析第一內(nèi)核部件類型的多個第一內(nèi)核部件;基于對所述多個第一內(nèi)核部件的分析,從所述多個第一內(nèi)核部件中選擇第一最優(yōu)內(nèi)核部件;以及調(diào)度應(yīng)用程序在所述第一最優(yōu)內(nèi)核部件上運行。在第二方面,本公開總體上描述了一種計算機程序產(chǎn)品,具有在計算機可讀介質(zhì)中編碼的軟件,用于對在具有多個內(nèi)核的計算機系統(tǒng)中運行的應(yīng)用程序進行調(diào)度。軟件包括指令,當被執(zhí)行時,操作為針對工藝變化,分析第一內(nèi)核部件類型的多個第一內(nèi)核部件; 基于對所述多個第一內(nèi)核部件的分析,從所述多個第一內(nèi)核部件中選擇第一最優(yōu)內(nèi)核部件;以及調(diào)度應(yīng)用程序在所述第一最優(yōu)內(nèi)核部件上運行。在第三方面,本公開總體上描述了一種計算機系統(tǒng),具有多個內(nèi)核、以及操作性耦接至所述多個內(nèi)核的計算機可讀介質(zhì)。所述多個內(nèi)核中每一個包括第一和第二內(nèi)核部件類型的內(nèi)核部件。計算機可讀介質(zhì)包括計算機可執(zhí)行指令,當由計算機系統(tǒng)執(zhí)行時,指令將計算機系統(tǒng)配置為針對工藝變化,分析第一內(nèi)核部件類型的多個第一內(nèi)核部件;基于對所述多個第一內(nèi)核部件的分析,從所述多個第一內(nèi)核部件中選擇第一最優(yōu)內(nèi)核部件;以及調(diào)度應(yīng)用程序在所述第一最優(yōu)內(nèi)核部件上運行。以上發(fā)明內(nèi)容僅僅是說明性的,而絕不是限制性的。除了上述示例性的各方案、 各實施例和各特征之外,參照附圖和以下詳細說明,將清楚其他方案、其他實施例和其他特征。
在本說明書的總結(jié)部分特別指出并明確要求保護主題。根據(jù)以下說明和所附權(quán)利要求,結(jié)合附圖,本公開的前述和其他特征將更加清楚。在認識到這些附圖僅僅示出了根據(jù)本公開的一些示例且因此不應(yīng)被認為是限制本公開范圍的前提下,通過使用附圖更加具體和詳細地描述本公開,附圖中圖1示出了根據(jù)本公開至少一些實施例的計算機系統(tǒng)。圖2示出了根據(jù)本公開至少一些實施例的由操作系統(tǒng)執(zhí)行的應(yīng)用程序,包括圖2A 和圖2B中多處理器的每個內(nèi)核的詳細視圖。圖3示出了根據(jù)本公開至少一些實施例的將應(yīng)用程序劃分成線程的示意表示,其中線程發(fā)布發(fā)送給存儲器控制器的請求。圖4示出了根據(jù)本公開至少一些實施例布置的流程圖。
具體實施例方式下面描述給出了多種示例以及具體細節(jié),以提供對所要求保護的主題的充分理解。然而,本領(lǐng)域技術(shù)人員將理解,可以在沒有本文公開的一些或更多具體細節(jié)的情況下實施要求保護的主題。此外,在一些情況下,不詳細描述已知的方法、過程、系統(tǒng)、部件和/或電路,以避免不必要地模糊要求保護的主題。在以下詳細說明中,參考了作為詳細說明的一部分的附圖。在附圖中,類似符號通常表示類似部件,除非上下文另行指明。
具體實施方式
部分、附圖和權(quán)利要求書中記載的示例性實施例并不是限制性的。在不脫離在此所呈現(xiàn)主題的精神或范圍的情況下,可以利用其他實施例,且可以進行其他改變。應(yīng)當理解,在此一般性記載以及附圖中圖示的本公開的各方案可以多種不同配置來設(shè)置、替換、組合和設(shè)計, 它們?nèi)慷荚诒竟_中明確考慮并形成本公開一部分。有益的是在考慮片內(nèi)工藝變化的同時智能化地調(diào)度線程。然而,隨著片上內(nèi)核數(shù)量的增長,確定哪個內(nèi)核實際上執(zhí)行給定線程成為了復(fù)雜的任務(wù)。如本文所考慮到的,管芯內(nèi)工藝變化可能導致CMP系統(tǒng)中各個單獨內(nèi)核在消耗的靜態(tài)功率和支持的最大頻率兩方面都不同。類似地,管芯內(nèi)工藝變化可能導致CMP系統(tǒng)中各個單獨內(nèi)核中的部件在消耗的靜態(tài)功率和支持的最大頻率兩方面都不同。在這種環(huán)境下,在調(diào)度應(yīng)用程序或調(diào)度來自應(yīng)用程序的線程時忽視變化影響可能是次優(yōu)的。管芯內(nèi)工藝變化可能導致各個單獨內(nèi)核中的部件(稱為內(nèi)核部件)失靈或者提供次優(yōu)性能。內(nèi)核部件可以包括例如分支預(yù)測器、高速緩存、浮點單元、特定類型的總線(例如存儲器總線)、以及在流水線設(shè)計、寄存器文件或指令隊列中使用的轉(zhuǎn)發(fā)電路。如果內(nèi)核部件失靈或者提供次優(yōu)性能,則可能降低CMP系統(tǒng)的性能。在這些環(huán)境下,忽視管芯內(nèi)工藝變化的影響可能導致整個CMP系統(tǒng)的次優(yōu)性能。 一些硬件部件可以是可用的,可以用于確定特定內(nèi)核內(nèi)管芯內(nèi)工藝變化的影響。的確,可以使用成熟的片上功率監(jiān)視器和控制器(例如Intel的R)Xton技術(shù)中的那些W])來測量和管理內(nèi)核的功率異質(zhì)性。此外,可以使用支持多個片上頻率域和獨立地改變每個內(nèi)核的頻率(如AMD的Quad-Core Opteron [2]中那樣)的能力來利用內(nèi)核的頻率異質(zhì)性。因此,本公開認識到,有利的是意識到CMP系統(tǒng)內(nèi)或CMP系統(tǒng)內(nèi)的多個內(nèi)核部件中的管芯內(nèi)工藝變化,并調(diào)度應(yīng)用程序或應(yīng)用程序內(nèi)的線程,以節(jié)省功率或提高吞吐量。通過考慮到每個單獨內(nèi)核的不同功率和頻率特性,以變化意識方式調(diào)度應(yīng)用程序,或者通過考慮到針對特定內(nèi)核中內(nèi)核組件的管芯內(nèi)工藝變化,可以獲得顯著的功率節(jié)省或吞吐量的顯著增加。圖1示出了根據(jù)本公開至少一些實施例布置的計算機系統(tǒng)。圖1示出了計算機100 包括處理器110、存儲器120和一個或多個驅(qū)動130。驅(qū)動130及其關(guān)聯(lián)的計算機存儲介質(zhì)可以提供為計算機100提供對計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的存儲。驅(qū)動130可以包括操作系統(tǒng)140、應(yīng)用程序150、程序模塊160和數(shù)據(jù)庫180。操作系統(tǒng)140和 /或應(yīng)用程序150例如可以包括使計算機100執(zhí)行圖4所示的功能和/或操作的程序指令。 計算機100可以包括用戶輸入設(shè)備190,通過用戶輸入設(shè)備190,用戶可以輸入命令和數(shù)據(jù)。 輸入設(shè)備可以包括電子數(shù)字化儀、麥克風、鍵盤和指定設(shè)備(指定設(shè)備通常稱為鼠標、軌跡球或觸摸板)。其他輸入設(shè)備可以包括操縱桿、游戲板、圓盤衛(wèi)星天線、掃描儀等。上述和其他輸入設(shè)備可以通過用戶輸入接口耦接至處理器110,用戶輸入接口可以耦接至系統(tǒng)總線,或者可以通過其他接口或總線結(jié)構(gòu)(例如并行端口、游戲端口或通用串行總線(USB)等)連接。計算機100可以包括外圍輸出設(shè)備,例如揚聲器、打印機或顯示器202,外圍輸出設(shè)備可以通過輸出外圍接口 194等連接。計算機100可以配置為在使用至一個或多個計算機(例如連接至網(wǎng)絡(luò)接口 196的遠程計算機)的邏輯連接的聯(lián)網(wǎng)環(huán)境中操作。遠程計算機可以是個人計算機(PC)、服務(wù)器、 路由器、網(wǎng)絡(luò)PC、對等設(shè)備或其他常見網(wǎng)絡(luò)節(jié)點,并且可以包括上述相對于計算機100所述的元件中的許多或者全部。聯(lián)網(wǎng)環(huán)境可以包括辦公室、企業(yè)廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)、內(nèi)聯(lián)網(wǎng)和互聯(lián)網(wǎng)。在一個示例中,計算機100可以是數(shù)據(jù)從其遷移的源機器,而遠程計算機可以包括目的地機器,反之亦然。源和目的地機器可以不通過網(wǎng)絡(luò)108或任何其他手段連接,而是數(shù)據(jù)可以經(jīng)由任何能夠由源平臺寫入并由目的地平臺讀取的介質(zhì)來遷移。在LAN或WLAN聯(lián)網(wǎng)環(huán)境中, 計算機100可以通過網(wǎng)絡(luò)接口 196或適配器連接至LAN或WAN。在WAN聯(lián)網(wǎng)環(huán)境中,計算機 100可以包括調(diào)制解調(diào)器或用于通過例如互聯(lián)網(wǎng)或網(wǎng)絡(luò)108等WAN建立通信的其他手段。 可以使用在計算機之間建立通信鏈接的其他手段。計算機外圍設(shè)備可以包括通過系統(tǒng)總線耦接至計算機100的處理器110和存儲器 120的任何設(shè)備。計算機外圍設(shè)備可以包括與輸出外圍接口連接的任何設(shè)備,包括顯示器 202、打印機、揚聲器、驅(qū)動130、用戶輸入設(shè)備190以及網(wǎng)絡(luò)接口 196,用戶輸入設(shè)備190例如包括鍵盤、鼠標和麥克風。計算機外圍設(shè)備的部件可以包括計算機外圍設(shè)備內(nèi)的任何設(shè)備,該設(shè)備可以使用電能并且可以是任何設(shè)備,例如揚聲器、照明元件(例如發(fā)光二極管或用于為顯示器提供照明的背光)、顯示元件(例如IXD、LED、OLED、CRT或等離子體顯示器)、 或者半導體芯片(例如中央處理單元(CPU)、圖像處理單元(GPU)、存儲器)。根據(jù)實施例, 計算機100可以連接在聯(lián)網(wǎng)環(huán)境中,使得處理器110和/或程序模塊160可以執(zhí)行功率減少和節(jié)省,而對用戶體驗的劣化最小。在一些示例中,描述了對計算機系統(tǒng)中運行的應(yīng)用程序進行調(diào)度的方法。計算機系統(tǒng)可以包括具有第一和第二內(nèi)核的多處理器、以及運行應(yīng)用程序的操作系統(tǒng)。第一內(nèi)核可以具有分別是第一和第二內(nèi)核部件類型的第一和第二內(nèi)核部件。第二內(nèi)核可以具有分別是第一和第二內(nèi)核部件類型的第三和第四內(nèi)核部件。該方法可以包括針對任何管芯內(nèi)工藝變化,分析第一、第二、第三和第四內(nèi)核部件;以及確定第一、第二、第三和第四內(nèi)核部件的工作狀態(tài)。該方法可以包括針對每個部件類型選擇最優(yōu)內(nèi)核部件,并確定應(yīng)用程序使用哪些內(nèi)核部件類型。該方法可以包括調(diào)度應(yīng)用程序,以在具有應(yīng)用程序所使用的內(nèi)核部件類型的最優(yōu)內(nèi)核部件的內(nèi)核上運行。在一些其他示例中,描述了對計算機系統(tǒng)中運行的多個應(yīng)用程序進行調(diào)度的方法。計算機系統(tǒng)可以包括具有第一和第二內(nèi)核的多處理器、以及運行應(yīng)用程序的操作系統(tǒng)。 第一內(nèi)核可以具有分別是第一和第二內(nèi)核部件類型的第一和第二內(nèi)核部件。第二內(nèi)核可以具有分別是第一和第二內(nèi)核部件類型的第三和第四內(nèi)核部件。該方法可以包括確定第一、 第二、第三和第四內(nèi)核部件的工作狀態(tài),并針對每個部件類型選擇最優(yōu)內(nèi)核部件。該方法可以包括確定每個應(yīng)用程序使用哪些內(nèi)核部件類型,并調(diào)度每個應(yīng)用程序,以在具有每個應(yīng)用程序所使用的內(nèi)核部件類型的最優(yōu)內(nèi)核部件的內(nèi)核上運行。在其他示例中,描述了對計算機系統(tǒng)中運行的應(yīng)用程序進行調(diào)度的方法。計算機系統(tǒng)可以包括具有第一和第二內(nèi)核的多處理器、以及運行應(yīng)用程序的操作系統(tǒng)。第一內(nèi)核可以具有分別是第一和第二內(nèi)核部件類型的第一和第二內(nèi)核部件。第二內(nèi)核可以具有分別是第一和第二內(nèi)核部件類型的第三和第四內(nèi)核部件。該方法可以包括確定第一、第二、第三和第四內(nèi)核部件的工作狀態(tài),并確定每個應(yīng)用程序使用哪些內(nèi)核部件類型。該方法可以包括調(diào)度每個應(yīng)用程序,以在具有應(yīng)用程序所使用的內(nèi)核部件類型的最優(yōu)內(nèi)核部件的內(nèi)核上運行。圖2示出了根據(jù)本公開至少一些實施例布置的由操作系統(tǒng)執(zhí)行應(yīng)用程序。如圖2 所示,操作系統(tǒng)140可以執(zhí)行來自驅(qū)動130的應(yīng)用程序150。操作系統(tǒng)140和/或應(yīng)用程序 150可以例如包括用于使計算機100執(zhí)行圖4所指定的功能和/或操作的程序指令。應(yīng)用程序150可以是可由多處理器111中的操作系統(tǒng)140執(zhí)行的任何應(yīng)用、程序、程序部分或線程。應(yīng)用程序150可以使用存儲器控制器210將數(shù)據(jù)230加載到存儲器120中以及從存儲器120存取數(shù)據(jù)。應(yīng)用程序150可以運行多個子應(yīng)用調(diào)用的線程220,以完成任務(wù),例如使用一個或多個請求226向存儲器120的存儲器組122加載數(shù)據(jù)230和從存儲器120的存儲器組122存取數(shù)據(jù)230。線程220可以由應(yīng)用程序150執(zhí)行。應(yīng)用程序150可以按照應(yīng)用程序的需求將任務(wù)的執(zhí)行劃分成多個線程220來完成該任務(wù)。例如,如果應(yīng)用程序150是針對具有多頁的文檔的word處理程序,并且應(yīng)用程序150配置為完成每頁文檔的拼寫檢查任務(wù),則應(yīng)用程序150可以將文檔拼寫檢查任務(wù)劃分成多個線程220,使得每個線程220可以對文檔的一部分進行拼寫檢查??梢詫⒚總€線程220發(fā)送給多處理器111以便執(zhí)行。當在多處理器111內(nèi)執(zhí)行時,每個線程220可以產(chǎn)生對存儲器120內(nèi)數(shù)據(jù)230的請求226??梢詫⒄埱? 發(fā)送至存儲器控制器210,存儲器控制器210可以對請求2 進行組織,使得多處理器111可以高效操作。在一些實施例中,如圖2所示,多處理器111可以包括可以同時執(zhí)行多于一個線程 220的處理器。多處理器111可以包括稱作內(nèi)核412和512的多個處理器,或者包括稱為多線程處理器的可以同時運行多個線程220的單個處理器(只有412和512之一)。圖2示出了包括兩個內(nèi)核412和512的示例多處理器111,但是不限于任何具體的內(nèi)核數(shù)目。術(shù)語 “內(nèi)核”可以用在本文中指可以處理單個線程的任何裝置,并且可以指可以處理單個線程的處理器或處理器內(nèi)的一部分。多線程處理器可以指具有多個內(nèi)核的處理器。包括多個處理器的計算機100在本文中可以稱為具有多個內(nèi)核的計算機100。圖2A和圖2B包括多處理器111的詳細視圖,分別示出了內(nèi)核412和512的細節(jié)。如圖所示,每個內(nèi)核412或512可以包括內(nèi)核部件413或513,內(nèi)核部件413或513可以是每個內(nèi)核內(nèi)執(zhí)行該內(nèi)核的一組功能或操作的元件??梢源嬖诓煌愋偷膬?nèi)核部件413或513, 也稱為內(nèi)核部件類型,其可以包括例如分支預(yù)測器G15或51 、高速緩存017或517)、浮點單元G19或519)、特定類型的總線G21或521)(例如存儲器總線)、或者流水線設(shè)計、 寄存器025或52 或指令隊列027或527)中使用的轉(zhuǎn)發(fā)電路023或52 。如果內(nèi)核部件413或513失靈或提供次優(yōu)性能,則可能降低內(nèi)核性能,并最終降低多處理器111的性能。此外,內(nèi)核412可以具有例如分支預(yù)測器415,其執(zhí)行速度可以比內(nèi)核512的分支預(yù)測器515快。在這種示例中,相比于在第二內(nèi)核512上執(zhí)行,需要更多地使用分支預(yù)測器的應(yīng)用程序150可以更好地在第一內(nèi)核412上執(zhí)行。圖3示出了根據(jù)本公開至少一些實施例的將應(yīng)用程序劃分成線程的示意表示,其中線程可以發(fā)布發(fā)送給存儲器控制器的請求。如圖3所示,應(yīng)用150可以劃分成多個線程 220a-220n,其中η可以表示線程220的數(shù)目,并且每個線程可以執(zhí)行應(yīng)用150的任務(wù),并可以在例如圖2的多處理器111上執(zhí)行每個線程。多處理器可以配置為從應(yīng)用程序150單獨地或同時接收并執(zhí)行多個線程220a-220n。在多處理器上執(zhí)行的每個線程220可以與每個其他線程220相獨立地執(zhí)行,并且可以發(fā)布對于存儲器120中存儲的數(shù)據(jù)230的多個請求 220al-220n。,其中第一索引(a... η)表示與請求2 關(guān)聯(lián)的線程220,第二索引(1. . . ο)表示與具體線程220關(guān)聯(lián)的請求226的數(shù)目。圖2Α和圖2Β示出的每個內(nèi)核部件413或513在制造時可能遭受到一定程度的工藝變化,工藝變化可能導致內(nèi)核部件失靈或提供次優(yōu)性能。工藝變化可以指半導體工藝有關(guān)的參數(shù)超出其標稱值(例如,與摻雜濃度、遷移率、電阻、電容、電感、增益、速度、帶寬、 閾值電壓、寄生效應(yīng)、泄漏等有關(guān)的參數(shù))的變化,并可能由例如小特征尺寸的制造困難造成。為建模和分析目的,可以將變化分解成管芯間(D2D)變化(或內(nèi)核間變化)以及管芯內(nèi) (WID)變化(或內(nèi)核內(nèi)變化)。WID工藝變化可以進一步劃分成系統(tǒng)效應(yīng)和隨機效應(yīng)。WID 工藝變化可以對計算機內(nèi)功率和頻率方面的內(nèi)核間變化具有直接影響。可能受到WID工藝變化的示例半導體工藝參數(shù)包括例如閾值電壓(Vth)和有效柵極長度(Lrff)。這些示例參數(shù)可以影響晶體管的開關(guān)速度和泄漏功率。較高的Vth和Lrff變化可以對應(yīng)于整個芯片上較高的晶體管速度(帶寬)變化。這可以導致較慢的處理器(或多處理器)或較慢的內(nèi)核部件,因為處理器或內(nèi)核部件內(nèi)的較慢晶體管可以確定處理器的頻率或處理器內(nèi)內(nèi)核部件的性能。在多處理器111中,不同內(nèi)核可以支持不同頻率,內(nèi)核中的內(nèi)核部件可以具有不同的性能。此外,隨著Vth變化,在整個處理器或多處理器上晶體管泄漏可以改變。低Vth晶體管可以比高Vth晶體管消耗更多功率。結(jié)果,由于變化,處理器和多處理器可以消耗實質(zhì)上更多的泄漏功率。在多處理器中,不同內(nèi)核可以具有不同量的晶體管泄漏。為了對系統(tǒng)變化建模,可以將處理器或多處理器、或者處理器或多處理器內(nèi)的各個單獨內(nèi)核部件劃分成網(wǎng)格。每個網(wǎng)格點可以被給定參數(shù)的系統(tǒng)分量的一個值,可以假設(shè)該系統(tǒng)分量具有正態(tài)分布,μ =0且具有標準偏差osys。系統(tǒng)變化可以由空間相關(guān)性來表征,使得芯片上的相鄰區(qū)域可以具有大致相同的系統(tǒng)分量值。隨機變化可以出現(xiàn)在各個單獨晶體管的級別上,并且可以用μ = 0且標準偏差為 σ■的正態(tài)分布解析地進行建模。由于隨機和系統(tǒng)分量可以是正態(tài)分布的并且可以是獨立的,所以它們的效應(yīng)可以是加性的。在具有工藝變化的環(huán)境中,多處理器中的每個處理器內(nèi)核可以消耗不同量的功率并支持不同的最大頻率,造成內(nèi)核之間性能不同。此外,處理器(或多處理器)內(nèi)核中的每個內(nèi)核部件可以消耗不同量的功率,并指出不同的最大頻率,造成內(nèi)核之間性能不同。此夕卜,特定內(nèi)核部件可以完全失靈或者以次優(yōu)方式運行。結(jié)果,內(nèi)核部件失靈或提供次優(yōu)性能的那些內(nèi)核執(zhí)行特定應(yīng)用程序的效率可能不如執(zhí)行更多依賴于這些內(nèi)核部件的其他應(yīng)用程序的效率。在所述多個實施例中,可以使用例如圖4所示的應(yīng)用程序調(diào)度算法來調(diào)度應(yīng)用程序,以最大化多處理器的性能或者最小化多處理器的功率使用,實質(zhì)上如同受到變化影響的多處理器是異質(zhì)系統(tǒng)一樣。在這種環(huán)境下,可以存在兩個高級設(shè)計問題。第一個問題可以是多處理器的不同內(nèi)核必須是否必須以相同頻率還是不相同頻率(是統(tǒng)一頻率還是非統(tǒng)一頻率)進行循環(huán)操作。第二個問題可以是是否可以動態(tài)(DVre)還是非動態(tài)(非DVFS) 地改變多處理器內(nèi)核的頻率和電壓。對于這些配置,操作系統(tǒng)或應(yīng)用程序可以包括用于應(yīng)用調(diào)度的變化意識應(yīng)用調(diào)度算法以及功率管理,以最小化功率或最大化性能。應(yīng)用調(diào)度算法可以對操作系統(tǒng)使用的其他調(diào)度準則(例如優(yōu)先級、公平性或饑餓避免)進行補充??梢栽赗adu Teodorescu禾口 Joseph Torrellas 的“Variation-Aware Application Scheduling and Power Management for Chip Multiprocessors",2008 International Symposium on Computer Architecture (ISCA),第363-374頁,2008中找到有關(guān)應(yīng)用調(diào)度算法的更多信息,該文獻的所有內(nèi)容合并在此作為參考,除了其中與本申請不一致的內(nèi)容之外。圖4示出了根據(jù)本公開至少一些實施例布置的流程圖。參照圖4,為提高每個單獨內(nèi)核的性能或最小化每個單獨內(nèi)核的功率使用特性,可以由操作系統(tǒng)使用應(yīng)用調(diào)度算法 600調(diào)度應(yīng)用程序,以變化意識方式在特定內(nèi)核或內(nèi)核部件上運行。應(yīng)用調(diào)度算法600可以為特定內(nèi)核中內(nèi)核部件考慮到工藝變化,并可以在運行應(yīng)用程序時允許顯著的功率節(jié)省或顯著的吞吐量增加。在使用中,操作系統(tǒng)和/或應(yīng)用程序可以在框601激活應(yīng)用調(diào)度算法600,應(yīng)用調(diào)度算法600可以布置為在框602針對工藝變化分析多處理器的每個內(nèi)核中的內(nèi)核部件。 當針對工藝變化分析內(nèi)核部件時,應(yīng)用調(diào)度算法600可以配置為在框604確定內(nèi)核部件是否在進行功能操作的。如果確定內(nèi)核部件在進行功能操作,則應(yīng)用調(diào)度算法600可以配置為檢查管芯內(nèi)工藝變化和/或管芯間工藝變化,并確定相比于相同類型的其他內(nèi)核部件, 該內(nèi)核部件功能操作的良好程度。在示例中,如果應(yīng)用調(diào)度算法600確定具體的分支預(yù)測器在進行功能操作,則應(yīng)用調(diào)度算法600可以將該分支預(yù)測器的性能與其他分支預(yù)測器的性能相比較,或者與預(yù)定的一系列測量值(例如類似分支預(yù)測器的平均工作電壓和/或平均工作頻率)相比較。當比較了內(nèi)核部件的性能與相同類型的其他內(nèi)核部件的性能時,應(yīng)用調(diào)度算法600可以配置為標注(例如,記錄或存儲)內(nèi)核部件的工作狀態(tài)為進行功能操作還是未進行功能操作,并且如果在進行功能操作,則應(yīng)用調(diào)度算法600可以配置為在框 606對于例如性能或功率效率,對內(nèi)核部件功能操作的良好程度進行評估(例如,評級或評分)。對內(nèi)核部件功能操作的良好程度的評估可以在衡量尺度上,例如從1.0到10. 0的衡量尺度上,或者其他任何合理的衡量尺度。當標注或評估每個內(nèi)核部件時,應(yīng)用調(diào)度算法600可以配置為在框608確定操作系統(tǒng)上運行的每個應(yīng)用程序可以使用哪些內(nèi)核部件類型,或者哪些內(nèi)核部件類型對于每個應(yīng)用程序而言是重要的;這可以在應(yīng)用程序的編譯期間進行。編譯器可以產(chǎn)生對每個應(yīng)用程序或線程使用哪些部件進行描述的信息。算法600可以在框610調(diào)度每個應(yīng)用程序在具有應(yīng)用程序所使用的內(nèi)核部件類型的至少一個最優(yōu)內(nèi)核部件的內(nèi)核上運行。最優(yōu)內(nèi)核部件可以在進行功能操作的并具有進行功能操作的工作狀態(tài)的內(nèi)核部件。在示例中,最優(yōu)內(nèi)核部件可以是具有最高等級的工作狀態(tài)的內(nèi)核部件。在另一示例中,最優(yōu)內(nèi)核部件可以是等級高于平均等級的內(nèi)核部件。在實施例中,應(yīng)用調(diào)度算法600可以調(diào)度應(yīng)用程序運行在具有應(yīng)用程序所使用的內(nèi)核部件類型的最最優(yōu)內(nèi)核部件的內(nèi)核上。應(yīng)用調(diào)度算法600可以確定將哪個應(yīng)用程序調(diào)度到哪個內(nèi)核上運行。例如,可以標記每個內(nèi)核部件,例如可以分支預(yù)測器可以標記為1,浮點乘法器可以標記為2,整數(shù)乘法器可以標記為3等等。對于每個內(nèi)核,可以存在分立的布盧姆過濾器(Bloom filter),每個布盧姆過濾器存儲相關(guān)聯(lián)的內(nèi)核上失靈的內(nèi)核部件的標簽。例如,如果特定內(nèi)核的分支預(yù)測器失靈,則關(guān)聯(lián)的布盧姆過濾器可以包括元素1,因為1是分支預(yù)測器的標簽。當要調(diào)度應(yīng)用程序(或線程)時,應(yīng)用調(diào)度算法600可以檢查應(yīng)用需求和特定內(nèi)核的能力之間是否匹配。例如,如果應(yīng)用程序需要浮點乘法器,則可以檢查各個內(nèi)核的布盧姆過濾器并查看是否包含元素2 (對應(yīng)于浮點乘法器標簽)。如果布盧姆過濾器表包含該元素,則可以將應(yīng)用程序調(diào)度到另一內(nèi)核上。如果不包含該元素,則可以將該內(nèi)核用于應(yīng)用程序。在多個實施例中,公開的方法可以實現(xiàn)為與計算機系統(tǒng)一起使用的計算機程序產(chǎn)品。這些實施方式可以包括固定在有形介質(zhì)上的計算機指令序列,例如在計算機可讀介質(zhì) (例如,軟盤、⑶-ROM、ROM或硬盤)上,或者是經(jīng)由調(diào)制解調(diào)器或其他接口設(shè)備(例如通過介質(zhì)連接至網(wǎng)絡(luò)的通信適配器)可傳輸至計算機系統(tǒng)。介質(zhì)可以是有形介質(zhì)(例如光或模擬通信線路),或者以無線技術(shù)(例如,微波、紅外線或其他傳輸技術(shù))實現(xiàn)的介質(zhì)。計算機指令序列具體體現(xiàn)了在前相對于系統(tǒng)描述的全部功能性或其中一部分。本領(lǐng)域技術(shù)人員應(yīng)該理解,這種計算機程序可以多種編程語言來編寫,以與許多計算機架構(gòu)或操作系統(tǒng)一起使用。此外,這種指令可以存儲在任何存儲器設(shè)備中,例如半導體、磁、光或其他存儲器設(shè)備,并且可以使用任何通信技術(shù)來傳輸,例如光、紅外線、微波或其他傳輸技術(shù)。預(yù)期的是這種計算機程序產(chǎn)品可以作為可移除介質(zhì)連同印刷或電子的文檔(例如,收縮包裝的軟件) 一起分發(fā),預(yù)加載到計算機系統(tǒng)(例如,系統(tǒng)上ROM或硬盤),或者通過網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng)或萬維網(wǎng))從服務(wù)器或電子公告板分發(fā)。當然,所公開主題內(nèi)容的一些實施例可以實現(xiàn)為軟件(例如計算機程序產(chǎn)品)和硬件的組合。所公開主題內(nèi)容的另一些實施例可以完全實現(xiàn)為硬件或完全實現(xiàn)為軟件(例如計算機程序產(chǎn)品)。本公開所述的主題有時說明不同部件包含在不同的其他部件內(nèi)或者不同部件與不同的其他部件相連。應(yīng)當理解,這樣描述的架構(gòu)只是示例,事實上可以實現(xiàn)許多能夠?qū)崿F(xiàn)相同功能的其他架構(gòu)。在概念上,有效地“關(guān)聯(lián)”用以實現(xiàn)相同功能的部件的任意設(shè)置,從而實現(xiàn)所需功能。因此,這里組合實現(xiàn)具體功能的任意兩個部件可以被視為彼此“關(guān)聯(lián)”從而實現(xiàn)所需功能,而無論架構(gòu)或中間部件如何。同樣,任意兩個如此關(guān)聯(lián)的部件也可以看作是彼此“可操作地連接”或“可操作地耦合”以實現(xiàn)所需功能,且能夠如此關(guān)聯(lián)的任意兩個部件也可以被視為彼此“能可操作地耦合”以實現(xiàn)所需功能。能可操作地耦合的具體示例包括但不限于物理上可配對和/或物理上交互的部件,和/或無線交互和/或可無線交互的部件,和/或邏輯交互和/或可邏輯交互的部件。至于本文中任何關(guān)于多數(shù)和/或單數(shù)術(shù)語的使用,本領(lǐng)域技術(shù)人員可以從多數(shù)形式轉(zhuǎn)換為單數(shù)形式,和/或從單數(shù)形式轉(zhuǎn)換為多數(shù)形式,以適合具體環(huán)境和/或應(yīng)用。為清楚起見,在此明確聲明單數(shù)形式/多數(shù)形式可互換。本領(lǐng)域技術(shù)人員應(yīng)當理解,一般而言,所使用的術(shù)語,特別是所附權(quán)利要求中(例如,在所附權(quán)利要求的主體部分中)使用的術(shù)語,一般地應(yīng)理解為“開放”術(shù)語(例如,術(shù)語 “包括”應(yīng)解釋為“包括但不限于”,術(shù)語“具有”應(yīng)解釋為“至少具有”等)。本領(lǐng)域技術(shù)人員還應(yīng)理解,如果意在所引入的權(quán)利要求中標明具體數(shù)目,則這種意圖將在該權(quán)利要求中明確指出,而在沒有這種明確標明的情況下,則不存在這種意圖。例如,為幫助理解,所附權(quán)利要求可能使用了引導短語“至少一個”和“一個或多個”來引入權(quán)利要求中的特征。然而, 這種短語的使用不應(yīng)被解釋為暗示著由不定冠詞“一”或“一個”引入的權(quán)利要求特征將包含該特征的任意特定權(quán)利要求限制為僅包含一個該特征的實施例,即便是該權(quán)利要求既包括引導短語“一個或多個”或“至少一個”又包括不定冠詞如“一”或“一個”(例如,“一”和 /或“一個”應(yīng)當被解釋為意指“至少一個”或“一個或多個”);在使用定冠詞來引入權(quán)利要求中的特征時,同樣如此。另外,即使明確指出了所引入權(quán)利要求特征的具體數(shù)目,本領(lǐng)域技術(shù)人員應(yīng)認識到,這種列舉應(yīng)解釋為意指至少是所列數(shù)目(例如,不存在其他修飾語的短語“兩個特征”意指至少兩個該特征,或者兩個或更多該特征)。另外,在使用類似于“A、 B和C等中至少一個”這樣的表述的情況下,一般來說應(yīng)該按照本領(lǐng)域技術(shù)人員通常理解該表述的含義來予以解釋(例如,“具有A、B和C中至少一個的系統(tǒng)”應(yīng)包括但不限于單獨具有A、單獨具有B、單獨具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系統(tǒng)等)。在使用類似于“A、B或C等中至少一個”這樣的表述的情況下,一般來說應(yīng)該按照本領(lǐng)域技術(shù)人員通常理解該表述的含義來予以解釋(例如,“具有A、B或C中至少一個的系統(tǒng)”應(yīng)包括但不限于單獨具有A、單獨具有B、單獨具有C、具有A和B、具有A和C、具有B和 C、和/或具有A、B、C的系統(tǒng)等)。本領(lǐng)域技術(shù)人員還應(yīng)理解,實質(zhì)上任意表示兩個或更多可選項目的轉(zhuǎn)折連詞和/或短語,無論是在說明書、權(quán)利要求書還是附圖中,都應(yīng)被理解為給出了包括這些項目之一、這些項目任一方、或兩個項目的可能性。例如,短語“A或B”應(yīng)當被理解為包括“A”或“B”、或“A和B”的可能性。盡管已經(jīng)描述了所公開主題內(nèi)容的多個實施例,但是本領(lǐng)域普通技術(shù)人員應(yīng)當明白在本公開的范圍內(nèi)可以存在其他實施例和實施方式。因此,除依據(jù)所附權(quán)利要求及其等同物之外,所公開主題內(nèi)容不受限。參考文獻[1] S. Borkar, T. Karnik, S. Narendra, J. Tschanz, A. Keshavarzi 禾口 V. De, "Parameter variations and impact on circuits and microarchitecture", in Design Automation Conference, June 2003.[2] J. Dorsey, S. Searles, M. Ciraula, S. Johnson, N. Bujanos, D. Wu, M. Braganza, S. Meyers, E. Fang 禾口 R. Kumar, " An integrated quadcore Opteron processor, " in International Solid State Circuits Conference, February 2007.[SilE-HumenayjD-TarjanfPK-Skadron, " The impact of systematic process variations on symmetrical performance in chip multiprocessors, " in Design,Automation and Test in Europe,April 2007. [4]R. McGowen, C. A. Poirier, C. Bostak, J. Ignowski, M. Millican, W. H. Parks 禾口 S. Naffziger, “ Power and temperature control on a 90-nm Itanium family processor, 〃 Journal of Solid-State Circuits, January 2006.
權(quán)利要求
1.一種對在具有多個內(nèi)核的計算機系統(tǒng)中運行的應(yīng)用程序進行調(diào)度的方法,包括 針對工藝變化,分析第一內(nèi)核部件類型的多個第一內(nèi)核部件;基于對所述多個第一內(nèi)核部件的分析,從所述多個第一內(nèi)核部件中選擇第一最優(yōu)內(nèi)核部件;以及調(diào)度應(yīng)用程序在所述第一最優(yōu)內(nèi)核部件上運行。
2.根據(jù)權(quán)利要求1所述的方法,還包括確定由應(yīng)用程序使用的應(yīng)用內(nèi)核部件類型,其中應(yīng)用內(nèi)核部件類型是第一內(nèi)核部件類型。
3.根據(jù)前述任一權(quán)利要求所述的方法,其中第一內(nèi)核部件類型選自包括如下的組分支預(yù)測器,高速緩存,浮點單元,總線,轉(zhuǎn)發(fā)電路,寄存器文件,以及指令隊列。
4.根據(jù)前述任一權(quán)利要求所述的方法,其中工藝變化是內(nèi)核間工藝變化。
5.根據(jù)前述任一權(quán)利要求所述的方法,其中所述分析包括確定所述多個第一內(nèi)核部件中每一個內(nèi)核部件的工作狀態(tài);以及在布盧姆過濾器中存儲所述多個第一內(nèi)核部件中每一個內(nèi)核部件的工作狀態(tài)。
6.根據(jù)前述任一權(quán)利要求所述的方法,其中所述分析包括對所述多個第一內(nèi)核部件中的每一個內(nèi)核部件進行評級。
7.根據(jù)前述任一權(quán)利要求所述的方法,還包括針對工藝變化,分析第二內(nèi)核部件類型的多個第二內(nèi)核部件; 基于對所述多個第二內(nèi)核部件的分析,從所述多個第二內(nèi)核部件中選擇第二最優(yōu)內(nèi)核部件;以及調(diào)度應(yīng)用程序在所述第二最優(yōu)內(nèi)核部件上運行。
8.根據(jù)前述任一權(quán)利要求所述的方法,還包括確定由應(yīng)用程序使用的第一和第二應(yīng)用內(nèi)核部件類型,其中第一和第二應(yīng)用內(nèi)核部件類型是第一和第二內(nèi)核部件類型。
9.根據(jù)前述任一權(quán)利要求所述的方法,其中第一和第二內(nèi)核部件類型獨立地選自包括如下的組中分支預(yù)測器,高速緩存,浮點單元,總線,轉(zhuǎn)發(fā)電路,寄存器文件,以及指令隊列。
10.根據(jù)前述任一權(quán)利要求所述的方法,其中所述分析包括確定所述多個第一內(nèi)核部件和所述多個第二內(nèi)核部件中每一個內(nèi)核部件的工作狀態(tài);以及在布盧姆過濾器中存儲所述多個第一內(nèi)核部件和所述多個第二內(nèi)核部件中每一個內(nèi)核部件的工作狀態(tài)。
11.根據(jù)前述任一權(quán)利要求所述的方法,其中所述分析包括分別對所述多個第一內(nèi)核部件和所述多個第二內(nèi)核部件中每一個內(nèi)核部件進行評級。
12.根據(jù)前述任一權(quán)利要求所述的方法,其中第一和第二最優(yōu)內(nèi)核部件在不同的內(nèi)核上。
13.一種計算機程序產(chǎn)品,包括在計算機可讀介質(zhì)中編碼的軟件,用于對在具有多個內(nèi)核的計算機系統(tǒng)中運行的應(yīng)用程序進行調(diào)度,軟件包括指令,當被執(zhí)行時可操作為針對工藝變化,分析第一內(nèi)核部件類型的多個第一內(nèi)核部件; 基于對所述多個第一內(nèi)核部件的分析,從所述多個第一內(nèi)核部件中選擇第一最優(yōu)內(nèi)核部件;以及調(diào)度應(yīng)用程序在所述第一最優(yōu)內(nèi)核部件上運行。
14.根據(jù)前述任一權(quán)利要求所述的計算機程序產(chǎn)品,還包括指令,當被執(zhí)行時可操作為確定由應(yīng)用程序使用的應(yīng)用內(nèi)核部件類型,其中應(yīng)用內(nèi)核部件類型是第一內(nèi)核部件類型。
15.根據(jù)前述任一權(quán)利要求所述的計算機程序產(chǎn)品,其中工藝變化是內(nèi)核間工藝變化。
16.根據(jù)前述任一權(quán)利要求所述的計算機程序產(chǎn)品,其中用于分析的指令包括當被執(zhí)行時可操作為如下的指令確定所述多個第一內(nèi)核部件中每一個的工作狀態(tài);以及在布盧姆過濾器中存儲所述多個第一內(nèi)核部件中每一個的工作狀態(tài)。
17.根據(jù)前述任一權(quán)利要求所述的計算機程序產(chǎn)品,還包括指令,當被執(zhí)行時可操作為針對工藝變化,分析第二內(nèi)核部件類型的多個第二內(nèi)核部件; 基于對所述多個第二內(nèi)核部件的分析,從所述多個第二內(nèi)核部件中選擇第二最優(yōu)內(nèi)核部件;以及調(diào)度應(yīng)用程序在所述第二最優(yōu)內(nèi)核部件上運行。
18.根據(jù)前述任一權(quán)利要求所述的計算機程序產(chǎn)品,其中第一和第二最優(yōu)內(nèi)核部件在不同的內(nèi)核上。
19.一種計算機系統(tǒng),包括多個內(nèi)核,所述多個內(nèi)核中每一個包括第一和第二內(nèi)核部件類型的內(nèi)核部件; 計算機可讀介質(zhì),操作性耦接至所述多個內(nèi)核,計算機可讀介質(zhì)包括計算機可執(zhí)行指令,當由計算機系統(tǒng)執(zhí)行時,指令將計算機系統(tǒng)配置為針對工藝變化,分析第一內(nèi)核部件類型的多個第一內(nèi)核部件; 基于對所述多個第一內(nèi)核部件的分析,從所述多個第一內(nèi)核部件中選擇第一最優(yōu)內(nèi)核部件;以及調(diào)度應(yīng)用程序在所述第一最優(yōu)內(nèi)核部件上運行。
20.根據(jù)前述任一權(quán)利要求所述的計算機系統(tǒng),計算機可讀介質(zhì)還包括計算機可執(zhí)行指令,當由計算機系統(tǒng)執(zhí)行時,指令還將計算機系統(tǒng)配置為針對工藝變化,分析第二內(nèi)核部件類型的多個第二內(nèi)核部件; 基于對所述多個第二內(nèi)核部件的分析,從所述多個第二內(nèi)核部件中選擇第二最優(yōu)內(nèi)核部件;以及調(diào)度應(yīng)用程序在所述第二最優(yōu)內(nèi)核部件上運行。
全文摘要
公開了對在多處理器計算機系統(tǒng)中運行的應(yīng)用程序進行調(diào)度的技術(shù)。示例方法包括但不限于針對任何管芯內(nèi)工藝變化,分析第一、第二、第三和第四內(nèi)核部件;確定第一、第二、第三和第四內(nèi)核部件的工作狀態(tài);借助于布盧姆過濾器,針對每個部件類型選擇最優(yōu)內(nèi)核部件;統(tǒng)計上確定應(yīng)用程序使用哪些內(nèi)核部件類型;以及調(diào)度應(yīng)用程序,以在具有應(yīng)用程序所使用的內(nèi)核部件類型的最優(yōu)內(nèi)核部件的內(nèi)核上運行。
文檔編號G06F9/46GK102473110SQ201080033055
公開日2012年5月23日 申請日期2010年6月25日 優(yōu)先權(quán)日2009年7月23日
發(fā)明者塞達·奧格倫吉·梅米奇, 格克汗·梅米奇, 比爾·曼焦內(nèi)-史密斯 申請人:英派爾科技開發(fā)有限公司