指定應(yīng)用線程性能狀態(tài)的指令的制作方法
【專(zhuān)利摘要】描述了一種包括處理器的裝置。該處理器具有執(zhí)行指定應(yīng)用線程的性能狀態(tài)的指令的處理核。該指令屬于應(yīng)用線程。該處理器包括存儲(chǔ)性能狀態(tài)的寄存器。該處理器包括耦合到寄存器以根據(jù)該性能狀態(tài)設(shè)置處理核的性能狀態(tài)的功率管理控制邏輯。
【專(zhuān)利說(shuō)明】指定應(yīng)用線程性能狀態(tài)的指令
[0001]背景發(fā)明領(lǐng)域
[0002]本申請(qǐng)通常涉及計(jì)算科學(xué),且尤其涉及指定應(yīng)用線程性能狀態(tài)的指令。
[0003]背景
[0004]隨著多年來(lái)處理器性能的增加,它們的功率消耗也已經(jīng)增加。無(wú)論是“綠色能源”意識(shí)、嘗試最小化電池消耗還是簡(jiǎn)單地嘗試最小化計(jì)算系統(tǒng)的用戶(hù)的物業(yè)賬單,計(jì)算系統(tǒng)的用戶(hù)日益聚焦于他們的內(nèi)部處理器的功率管理能力。因而,大多數(shù)現(xiàn)代處理器具有內(nèi)建的功率管理電路。內(nèi)建的功率管理電路通常被設(shè)計(jì)為在硬件中動(dòng)態(tài)地進(jìn)行細(xì)粒度的功率管理調(diào)整,以及/或者,從軟件支持粗粒度的功率管理調(diào)整/指導(dǎo)。
[0005]通常,可以通過(guò)三種主要技術(shù)中的任意技術(shù)來(lái)控制電子電路的功率消耗:1)頻率縮放;2)時(shí)鐘門(mén)控;以及3)電壓縮放。這些技術(shù)中的每一種都考慮電子電路的功率消耗的基本原理。大體上,電子電路操作得越快,其性能和功率消耗將越大。下面提供對(duì)這些技術(shù)中的每一種的回顧。
[0006]頻率縮放調(diào)整邏輯電路的模塊的工作頻率。在這里,在以增加其功率消耗為代價(jià)對(duì)邏輯塊期望較高性能時(shí),提高邏輯塊的工作頻率。同樣地,在以較低性能為代價(jià)期望較低功率消耗時(shí),降低邏輯塊的工作頻率。頻繁縮放的不同邏輯塊的大小和功能可以取決于設(shè)計(jì)師期望的粒度而改變。
[0007]時(shí)鐘門(mén)控可以被看作是頻率縮放的極端形式。在時(shí)鐘門(mén)控的情況中,取消去往邏輯塊的時(shí)鐘信號(hào)以便把該模塊的性能和功率消耗兩者減少到零。在要使用該邏輯塊時(shí),時(shí)鐘信號(hào)再度出現(xiàn),使得該邏輯塊復(fù)活。時(shí)鐘門(mén)控因此具有啟用/禁用邏輯塊的效果。
[0008]除了降低/提高電源電壓以便降低/減少邏輯塊的性能和功率消耗之外,電壓縮放類(lèi)似于頻率縮放。值得注意的是,電子電路接收到的電源電壓越高,可以施加到邏輯塊的最大時(shí)鐘頻率就越高。
[0009]處理器核迄今為止已經(jīng)被設(shè)計(jì)為帶有這樣的硬件控制邏輯電路:響應(yīng)于所檢測(cè)到的處理器芯片的使用,可以快速地和動(dòng)態(tài)地調(diào)整對(duì)處理器芯片的小的、中等的和/或大的邏輯塊的頻率縮放、時(shí)鐘門(mén)控和/或電壓縮放設(shè)置。例如,取決于指令隊(duì)列中是否存在任何浮點(diǎn)指令,可以經(jīng)由時(shí)鐘門(mén)控禁用/啟用管線中的浮點(diǎn)執(zhí)行單元。在這里,因?yàn)橛布刂瓶梢钥焖俚卣{(diào)整小尺寸或中等尺寸的邏輯塊的功率管理設(shè)置,應(yīng)理解,硬件功率管理控制能夠進(jìn)行“細(xì)粒度”控制。
[0010]話(huà)雖如此,應(yīng)理解,頻率和電壓縮放具有與它們各自的狀態(tài)轉(zhuǎn)換相關(guān)聯(lián)的不期望的等待時(shí)間。即是說(shuō),即使硬件頻率和/或電壓縮放控制邏輯可以快速地做出需要改變頻率和/或電壓的決定,但實(shí)現(xiàn)改變本身要花費(fèi)時(shí)間,這是因?yàn)椋ǔT跊](méi)有數(shù)據(jù)惡化的風(fēng)險(xiǎn)的前提下不能對(duì)操作邏輯快速地改變電子邏輯電路的工作頻率和/或供電電壓。當(dāng)在啟用/禁用狀態(tài)之間切換時(shí),中等尺寸到大尺寸的邏輯塊的時(shí)鐘門(mén)控也傾向于具有相似的不期望的等待時(shí)間。舉例來(lái)說(shuō),如果禁用了整個(gè)處理器核,通常不能在“下一個(gè)”時(shí)鐘周期復(fù)活。[0011]在這一方面,值得注意的是,硬件功率管理控制是反應(yīng)性的,這是因?yàn)樗荒軐?duì)它所觀察到的處理器使用反應(yīng)。在所觀察的處理器使用顯著改變時(shí),至少部分由于在上面討論的功率管理狀態(tài)變化之間的等待時(shí)間,硬件控制的反應(yīng)性本質(zhì)引起性能沖擊或工作量失衡。舉例來(lái)說(shuō),如果大的多核處理器處于低功率狀態(tài),且已經(jīng)由于低利用率禁用了多個(gè)核,并且突然給處理器呈現(xiàn)大量的線程以供執(zhí)行,則新近呈現(xiàn)的線程中的許多必須不期望地“等待”在核心可以執(zhí)行之前啟用核心。
[0012]然而,一些運(yùn)行時(shí)編譯器(例如,OpenMP和MPI)和操作系統(tǒng)(OS)調(diào)度程序可以向硬件提供即將到來(lái)的處理器使用的提示。借助于這樣的提示,硬件可以為即將到來(lái)的使用改變提前做好準(zhǔn)備,且在這樣做時(shí),通過(guò)在實(shí)際上呈現(xiàn)使用改變之前開(kāi)始改變性能狀態(tài),理想地避免了性能沖擊或工作量失衡。
[0013]相對(duì)于軟件功率管理控制,應(yīng)理解,軟件功率管理控制主要是(如果不是全部是的話(huà))“粗粒度的”。即是說(shuō),軟件功率管理控制通常影響中等尺寸到大尺寸的邏輯塊,并且,此外,不能快速改變軟件控制的功率管理設(shè)置(相反,它們持續(xù)擴(kuò)展的時(shí)間周期)。因而,在處理器硬件提供軟件可寫(xiě)控制字段或其他“鉤子(hooks) ”以便輔助軟件功率管理的意義上,這樣的字段/鉤子不直接地實(shí)現(xiàn)任何細(xì)粒度控制。
[0014]另外,許多現(xiàn)有軟件功率管理控制機(jī)制依賴(lài)于或有效地僅僅監(jiān)督功率管理的特定硬件實(shí)現(xiàn),例如特定處理器的P狀態(tài)。因而,真正的軟件功率管理技術(shù)跨越不同硬件實(shí)現(xiàn)的可移植性較差。
[0015]這種觀點(diǎn)的最廣為人知的可能的例外是PAUSE指令,PAUSE指令是引起執(zhí)行將被置于睡眠狀態(tài)的指令的線程的指令。
[0016]附圖簡(jiǎn)述
[0017]作為示例而非限制在附圖的各圖中闡釋本發(fā)明,附圖中,類(lèi)似的標(biāo)號(hào)指示相似的元素,且附圖中:
[0018]圖1示出處理器;
[0019]圖2a和圖2b涉及所述處理器的邏輯塊性能狀態(tài);
[0020]圖3示出利用每個(gè)線程的TCMHINT指令來(lái)控制所述應(yīng)用的功率消耗的多線程應(yīng)用的結(jié)構(gòu)流;
[0021]圖4示出利用每線程TCMHINT指令來(lái)控制所述第二應(yīng)用的功率消耗的第二多線程應(yīng)用的結(jié)構(gòu)流;
[0022]圖5示出指令執(zhí)行管線的實(shí)施例;
[0023]詳細(xì)描述
[0024]概覽
[0025]在此描述的是專(zhuān)用指令TCMHINT,可以由應(yīng)用軟件開(kāi)發(fā)者施加該指令以便通過(guò)軟件以細(xì)粒度方式控制他們的應(yīng)用的功率管理。具體地,在此描述的所述指令和被設(shè)計(jì)為支持它的處理器架構(gòu)準(zhǔn)許應(yīng)用軟件開(kāi)發(fā)者用多個(gè)性能狀態(tài)中的一個(gè)來(lái)標(biāo)記他們的應(yīng)用的每一線程。由底層處理器使用每個(gè)線程性能狀態(tài)標(biāo)簽來(lái)適當(dāng)?shù)匕烟幚砥鞯男阅?功率消耗特性設(shè)置為與應(yīng)用軟件開(kāi)發(fā)者期望一致。同時(shí),該指令不依賴(lài)于功率管理技術(shù)或硬件中的處理器架構(gòu)的任何特定實(shí)現(xiàn),這使得這一指令使用可移植到其他架構(gòu),并允許用于任何將來(lái)的可能處理器和系統(tǒng)架構(gòu)的最佳指令實(shí)現(xiàn)。[0026]此外,可以作為在對(duì)程序流結(jié)構(gòu)/行為的即將到來(lái)的改變之前的提示而嵌入TCMHINT指令,以便在改變之前“設(shè)置”處理器的性能/功率消耗特性。因而,可以避免由處理器從第一性能/功率狀態(tài)轉(zhuǎn)換到另一性能/功率狀態(tài)所需要的時(shí)間引起的性能或工作量失衡。(由于處理器消耗的功率與其性能能力相關(guān),在下文中,術(shù)語(yǔ)“性能狀態(tài)”將用來(lái)指代影響處理器的性能能力或功率消耗的任何功率管理設(shè)置。)
[0027]在這里,應(yīng)用軟件開(kāi)發(fā)者容易理解他們的應(yīng)用程序的流或“結(jié)構(gòu)”、他們的應(yīng)用程序的性能和功率消耗含義、以及整個(gè)應(yīng)用或應(yīng)用的不同部分應(yīng)該落在高性能與低功率消耗設(shè)計(jì)點(diǎn)的關(guān)系的哪一側(cè)。根據(jù)一種實(shí)施例,可以根據(jù)三種不同性能狀態(tài)中的一種標(biāo)記各線程:1)高性能(高功率消耗)——例如,其中一個(gè)或多個(gè)所標(biāo)記的線程正要求最高可能性能的狀態(tài),例如在應(yīng)用的串行部分(例如為IO事務(wù)提供服務(wù)):硬件實(shí)現(xiàn)可以允許向單個(gè)線程提供最高可能性能,從而減少線程執(zhí)行的“等待時(shí)間”;2)中等性能(中等功率消耗)——例如,其中通過(guò)多個(gè)線程的并發(fā)執(zhí)行實(shí)現(xiàn)最好總體性能的狀態(tài),且因而可以減少每一線程的性能(相對(duì)于高性能狀態(tài)),同時(shí)基于由多個(gè)線程提供的較高的計(jì)算吞吐量改善總體應(yīng)用性能;3)低性能(低功率消耗)——例如,其中可以由硬件優(yōu)化線程執(zhí)行以便即使付出進(jìn)一步減少線程所提供的性能的代價(jià)也改善總體功率消耗的狀態(tài)。
[0028]為了進(jìn)一步說(shuō)明,軟件開(kāi)發(fā)者通常知道他/她的線程化應(yīng)用的特性,且可以說(shuō)出應(yīng)當(dāng)借助于串行算法還是高度可并行算法來(lái)實(shí)現(xiàn)該應(yīng)用的特定部分。一些算法本質(zhì)上是串行的(例如排序存儲(chǔ)在一些復(fù)雜結(jié)構(gòu)中的鏈表,或仲裁IO通信),且因而開(kāi)發(fā)者可以標(biāo)出這種單個(gè)進(jìn)程需要處理器資源(包括其功率預(yù)算)中的很多/大部分,以便為線程的指令流提供最好性能和最低計(jì)算時(shí)間(等待時(shí)間)。處理器將認(rèn)識(shí)到,線程將以低并發(fā)模式運(yùn)行,并采取適當(dāng)?shù)膭?dòng)作來(lái)重新調(diào)整其資源,以便為多個(gè)線程提供較好的性能(例如在進(jìn)行到更高電平之前開(kāi)始加速頻率)。
[0029]相比之下,應(yīng)用的其他部分可以被稱(chēng)為充分并行(例如處理存儲(chǔ)器中的規(guī)則結(jié)構(gòu)化數(shù)據(jù)的大數(shù)組,或者在對(duì)完全獨(dú)立數(shù)據(jù)集操作的多個(gè)線程中進(jìn)行工作)且因而可以使用爭(zhēng)用處理器資源的多個(gè)并發(fā)線程來(lái)實(shí)現(xiàn)。這可以由開(kāi)發(fā)者(或者也由編譯器或由線程化運(yùn)行時(shí))來(lái)標(biāo)記,且硬件可以采取適當(dāng)?shù)膭?dòng)作來(lái)跨越多個(gè)核分配資源(例如功率預(yù)算),并采取其他必要的動(dòng)作來(lái)并發(fā)地執(zhí)行多個(gè)線程。因而,可以得到資源在處理器核和其他塊之間的更均勻分布。
[0030]更進(jìn)一步,線程可以進(jìn)行一些低優(yōu)先級(jí)的工作(例如,殺毒例程掃描在后臺(tái)運(yùn)行的線程),使得如果系統(tǒng)被偏向最低功率則可以更進(jìn)一步犧牲其性能。
[0031]此外,借助于對(duì)處理器的哪些資源專(zhuān)用于單個(gè)線程且處理器的哪些資源被設(shè)計(jì)為支持多個(gè)線程的理解,設(shè)計(jì)該處理器硬件。在一個(gè)實(shí)施例中,把被設(shè)計(jì)為支持單個(gè)線程的處理器的那些部分置于由該線程執(zhí)行的最近的TCMHINT指令所指示的性能狀態(tài)。相比之下,被設(shè)計(jì)為支持多線程的處理器的那些部分考慮其支持的所有線程的性能狀態(tài),并且基于這一觀察將自身置于適當(dāng)?shù)男阅軤顟B(tài)。
[0032]在更進(jìn)一步的實(shí)施例中,通過(guò)可以實(shí)現(xiàn)以上所描述的兩種設(shè)置(單線程專(zhuān)用資源和多線程專(zhuān)用資源)的軟件把“系統(tǒng)告示”功率管理指示輸入到處理器。
[0033]圖1示出基本示例。圖1敘述具有多個(gè)處理核101_1到101_N和LI高速緩存的多核處理器100。交叉開(kāi)關(guān)(crossbar switch) 102把處理核101_1到101_N與由分離的L2高速緩存片102_1到102_N組成的L2高速緩存和相應(yīng)的一致性協(xié)議代理103_1到103_N互連起來(lái)。多處理器核還包括帶有關(guān)聯(lián)的一致性協(xié)議代理邏輯104和I/O中樞105的存儲(chǔ)器控制器??梢允褂梅胖迷谙嗤陌雽?dǎo)體芯片上的邏輯電路來(lái)實(shí)現(xiàn)這些邏輯塊中的每一個(gè)。在一個(gè)基本實(shí)施例,每一處理核專(zhuān)用于單個(gè)線程,然而,只要兩個(gè)或更多個(gè)處理核活動(dòng),圖1中所觀察到的所有其他邏輯塊就專(zhuān)用于多個(gè)線程。
[0034]如圖1可見(jiàn),處理器100的寄存器空間106被用來(lái)保存由它們各自的應(yīng)用軟件程序提供的個(gè)體線程106_1到106_N的性能狀態(tài)以及前述系統(tǒng)告示功率管理指示106_N+1。在一個(gè)實(shí)施例中,處理器的不同的邏輯塊101-105均能夠具有四種不同的功率狀態(tài):1)低等待時(shí)間(LL) ;2)高吞吐量(HT) ;3)有效吞吐量(ET);以及4)優(yōu)化的功率(PO)。下面更完整地描述這些功率狀態(tài)的可能實(shí)施例的更多透徹的描述。
[0035]目前,通常可以把它們看作是關(guān)于特定的性能和功率消耗設(shè)置的四種粒度。在這里,LL設(shè)置是最高性能狀態(tài),HT狀態(tài)是下一種最高性能狀態(tài),ET狀態(tài)是第二最低性能狀態(tài),PO是最低性能狀態(tài)。在這里,對(duì)于任何邏輯塊,較高性能狀態(tài)通常對(duì)應(yīng)于由功率管理控制邏輯電路120施加的工作頻率、時(shí)鐘門(mén)控和/或供電電壓設(shè)置的總組合,這些設(shè)置對(duì)應(yīng)于該邏輯塊的比其較低性能狀態(tài)選項(xiàng)中的任何更高的性能和功率消耗。注意,功率管理控制邏輯電路120可以如I圖可見(jiàn)的集中、分布,或兩種方法的某種組合。
[0036]在一個(gè)實(shí)施例中,每一線程時(shí)常執(zhí)行其自己的TCMHINT指令,這建立該線程的性能狀態(tài),直到由該線程執(zhí)行的下一 TCMHINT指令。因而,寄存器空間106_1到106_N分別耦合到處理器100中的N個(gè)管線中的每一個(gè)。當(dāng)管線作為其線程執(zhí)行的一部分執(zhí)行TCMHINT指令時(shí),把由TCMHINT指令指定的線程的性能狀態(tài)寫(xiě)入到管線的各自的寄存器中。
[0037]在一個(gè)實(shí)施例中,每一管線具有在寄存器空間中為它保留的與它可以并發(fā)地執(zhí)行線程的數(shù)量一樣多的寄存器。例如,如果管線可以并發(fā)地執(zhí)行四個(gè)線程,則存在寄存器空間106中的四個(gè)不同的寄存器位置以便為其(最高達(dá))四個(gè)并發(fā)線程中的每一個(gè)保存來(lái)自最近的TCMHINT指令的功率設(shè)置。注意,一些處理核可以具有多于一個(gè)的管線。例如,具有兩個(gè)管線的處理核將在寄存器空間中具有八個(gè)各自的寄存器位置。一些處理器或管線可具有給它指派的、大于它可以并發(fā)地執(zhí)行的線程的數(shù)量的線程池。例如可以并發(fā)地執(zhí)行四個(gè)線程的管線可以具有給它指派的八個(gè)或十六個(gè)線程的池(以便允許處理器實(shí)時(shí)使得多個(gè)線程/應(yīng)用多任務(wù)化)。在這種情況中,該管線在激活和執(zhí)行線程以及將其放回到該池中以便從該池激活另一線程之間來(lái)回切換。在這種情況中,可以擴(kuò)展寄存器空間106,以便不僅包括其并發(fā)執(zhí)行的線程的功率狀態(tài)而且也包括其池中的那些。在這種情況中,管線可以被看作是支持其池中的所有線程的共享邏輯塊。下面結(jié)合圖2B進(jìn)一步更詳細(xì)地描述共享邏輯塊和它們的適當(dāng)?shù)墓β薁顟B(tài)。
[0038]如圖2a和圖2b可見(jiàn),寄存器106_N+1中的系統(tǒng)告示功率管理指示的值107影響為專(zhuān)用于單個(gè)線程的那些塊(圖2a)以及專(zhuān)用于多個(gè)線程那些塊(圖2b)選擇這些狀態(tài)中的哪些。系統(tǒng)告示指示107本質(zhì)上是規(guī)定應(yīng)當(dāng)把處理器整體更加偏向較高性能(例如在服務(wù)器或高性能工作站中)還是較低功率消耗(例如在靠電池運(yùn)行的移動(dòng)平臺(tái)中)的全局設(shè)置。
[0039]具體地,圖2a示出單個(gè)線程專(zhuān)用的資源(邏輯塊)(例如簡(jiǎn)單的前述示例中的處理核)的適用設(shè)置。如圖2a可見(jiàn),在系統(tǒng)告示指示指定較高性能時(shí):1)如果通過(guò)TCMHINT指令聲明邏輯塊的線程處于高性能狀態(tài),則把邏輯塊置于LL狀態(tài)201 ;2)如果通過(guò)TCMHINT指令聲明邏輯塊的線程處于中等性能狀態(tài),則把邏輯塊置于HT狀態(tài)202 ;以及3)如果通過(guò)TCMHINT指令聲明邏輯塊的線程處于低性能狀態(tài),則把邏輯塊置于ET狀態(tài)203。
[0040]相比之下,如果系統(tǒng)告示指令指定較低功率:1)如果通過(guò)TCMHINT指令聲明邏輯塊的線程處于高性能狀態(tài),則把邏輯塊置于HT狀態(tài)204 ;2)如果通過(guò)TCMHINT指令聲明邏輯塊的線程處于中等性能狀態(tài),則把邏輯塊置于ET狀態(tài)205 ;以及3)如果通過(guò)TCMHINT指令聲明邏輯塊的線程處于低性能狀態(tài),則把邏輯塊置于PO狀態(tài)206。
[0041]因而,不考慮系統(tǒng)告示設(shè)置207,專(zhuān)用于單個(gè)線程的邏輯塊的性能狀態(tài)將與為該線程置執(zhí)行的最近的TCMHINT指令相稱(chēng)地縮放。然而,對(duì)于相同的TCMHINT指令設(shè)置,如果系統(tǒng)告示值207指示期望較低功率消耗,則邏輯塊的性能狀態(tài)縮放到更低。相反,對(duì)于相同的TCMHINT指令設(shè)置,如果系統(tǒng)告示值207指示即使付出處理器的較高的總體功率消耗的代價(jià)也期望較高性能,則邏輯塊的性能狀態(tài)縮放到更高。
[0042]圖2b示出專(zhuān)用于支持多個(gè)線程的資源/邏輯塊的適用的設(shè)置。如圖2b可見(jiàn),如果系統(tǒng)告示指示207指定較高性能/功率,則共享塊在邏輯塊支持的所有線程當(dāng)中標(biāo)識(shí)具有最高功率TCMHINT指令設(shè)置210的線程,并且,接受該線程作為邏輯塊支持的所有線程的模型線程。然后,共享邏輯塊進(jìn)入根據(jù)圖2a中略述的策略211的性能狀態(tài)。即是說(shuō),如果在步驟210標(biāo)識(shí)的模型線程是高性能線程,則共享邏輯塊進(jìn)入LL狀態(tài)等等。
[0043]相比之下,如果系統(tǒng)告示指示207指定較低性能和較低功率,則共享塊標(biāo)識(shí)共享邏輯塊支持的線程的最低功率分級(jí)212并接受該線程作為各線程的模型線程。然后,共享邏輯塊進(jìn)入根據(jù)圖2a中略述的策略213的性能狀態(tài)。即是說(shuō),如果在步驟212標(biāo)識(shí)的模型線程是高性能線程,則共享邏輯塊進(jìn)入HT狀態(tài)等等。
[0044]上面的方案可以應(yīng)用到任何處理器架構(gòu),而不考慮處理器的什么特定塊專(zhuān)用于特定線程,也不考慮哪些塊專(zhuān)用于服務(wù)多個(gè)線程。注意,共享邏輯塊所支持的一組線程可以隨在處理器內(nèi)的邏輯塊不同而改變。例如,考慮類(lèi)似于圖1的處理器架構(gòu)的處理器架構(gòu),但每一處理核是其中每一管線專(zhuān)用于單個(gè)線程的“雙管線”核。在這種情況中,每一處理器是專(zhuān)用于兩個(gè)線程的共享塊,對(duì)于每一處理器核,每一線程對(duì)不同。相比之下,交叉開(kāi)關(guān)、L2高速緩存、存儲(chǔ)器控制器和I/O控制器是為所有處理核的一組全部線程提供服務(wù)的共享邏輯塊。
[0045]因而,例如,如果系統(tǒng)告示值101規(guī)定高性能,如果處理器核101_1具有兩個(gè)高性能線程,則它將處于LL狀態(tài),然而,同時(shí),如果處理器核101_2具有兩個(gè)低性能線程,則它將處于ET狀態(tài)。
[0046]然后,借助于對(duì)可以被實(shí)現(xiàn)為利用TCMHINT指令和系統(tǒng)告示值的硬件設(shè)計(jì)的實(shí)施例的理解,值得討論使用TCMHINT指令來(lái)影響應(yīng)用的功率管理。在這里,再次,可以想象到的是,應(yīng)用軟件——而不是編譯器或OS調(diào)度程序——通過(guò)TCMHINT指令對(duì)硬件直接強(qiáng)加提示或功率管理指示。可以由相同的應(yīng)用軟件或者諸如操作系統(tǒng)或系統(tǒng)功率管理軟件等的系統(tǒng)級(jí)軟件提供系統(tǒng)告示107。
[0047]圖3示出第一應(yīng)用流結(jié)構(gòu),其最初由串行的單個(gè)線程組成,然后扇出(fan out)至包括多個(gè)并行線程,然后,跌回到單個(gè)線程。圖3的應(yīng)用流結(jié)構(gòu)對(duì)具有主控制線程301_1的“分批”計(jì)算應(yīng)用來(lái)說(shuō)是典型的,主控制線程301_1最初組織“工程”310以便由多個(gè)“工作”線程302_2到302_N并行處理。盡管主線程301_1組織工程310,但主線程301_1處于高性能狀態(tài)(已經(jīng)由主線程前期執(zhí)行的TCMHINT指令置于高性能狀態(tài))。同時(shí),該時(shí)刻沒(méi)有任何工作要做的工作線程302_2到302_N&于低性能狀態(tài)(也已經(jīng)由它們中的每一個(gè)的前期TCMHINT指令置于低性能狀態(tài))。
[0048]當(dāng)主控制線程301_1識(shí)別工作線程301_2到301_N的工作切換接近即將發(fā)生時(shí),通過(guò)線程間通信進(jìn)程,它引起工作線程執(zhí)行為它們中的每一個(gè)指定高性能狀態(tài)的它們自己各自的TCMHINT指令303。在這里,比由工作線程302_2到302_N執(zhí)行的實(shí)際工作305的開(kāi)始提前得足夠多地做出線程間通信,以便考慮改變支持工作線程302_2到302_N的硬件資源的頻率、時(shí)鐘門(mén)控和/或電壓設(shè)置所需要的任何轉(zhuǎn)換時(shí)間304。為了更加精確,在對(duì)工作線程執(zhí)行TCMHINT指令時(shí),對(duì)于每一線程,把新的值寫(xiě)到寄存器空間106。根據(jù)上面提供的討論,線程升級(jí)到較高性能狀態(tài)可以觸發(fā)功率管理電路改變一個(gè)或多個(gè)管線、處理器或其他邏輯塊的功率狀態(tài)。
[0049]利用為工作線程要進(jìn)行的工作提前準(zhǔn)備好的硬件,把“工程”從主控制線程301_1分派給工作線程301_2到301_N,并且各工作線程對(duì)工程305開(kāi)始它們的工作。與工作線程對(duì)工程開(kāi)始它們的工作相稱(chēng),主控制線程301_1可以執(zhí)行TCMHINT指令以便將自身置于低功率狀態(tài)。硬件可以據(jù)此做出反應(yīng)。
[0050]隨著工作線程即將完成該工程(例如,因?yàn)槎鄠€(gè)工作線程已經(jīng)表明接近完成它們的工程部分),主控制線程301_1執(zhí)行另一 TCMHINT指令以便把自身置于高性能狀態(tài)306。再次,比由工作線程301_2到301_N實(shí)際完成工程307充分提前地執(zhí)行306TCMHINT指令,以使得如果環(huán)境允許(例如,根據(jù)圖2a和圖2b的狀態(tài)改變算法)則功率管理控制邏輯120可以提高支持主控制線程301_1的任何邏輯塊的性能狀態(tài)。
[0051]在工作線程301_2到302_N已經(jīng)完成它們的工作307時(shí),如果合適的話(huà),主控制線程301_1借助于其已經(jīng)處于較高性能狀態(tài)的底層硬件處理結(jié)果。然后,工作線程301_2到302_N中的每一個(gè)執(zhí)行另一 TCMHINT指令,以便把它們的性能狀態(tài)復(fù)位到低性能狀態(tài)。如果合適/根據(jù)需要,它們的底層支持邏輯塊重新調(diào)整它們自身。
[0052]在上面的示例中,把工作線程302_2到302_N置于高性能狀態(tài)以執(zhí)行工程。回憶起在一個(gè)實(shí)施例中,可以給線程指派三種性能狀態(tài)中的一種:1)高;2)中;3)低。工作線程302_2到302_N的大尺度并行操作實(shí)際上是其中可以使用中等線程功率狀態(tài)的良好示例。具體地,如上面的示例中所討論的,如果把所有工作線程302_2到302_N都置于高性能狀態(tài)以便執(zhí)行工程,盡管可以在最小時(shí)間量?jī)?nèi)完成工程,但處理器的功率消耗可能超出應(yīng)用開(kāi)發(fā)者的希望。
[0053]因而,在備選的實(shí)施例中,代替使用TCMHINT指令來(lái)把工作線程302_2到302_N中的每一個(gè)置于高性能狀態(tài),使用TCMHINT指令來(lái)把工作線程302_2到302_N中的每一個(gè)置于中等性能狀態(tài)。在這里,由于該工程是潛在的大規(guī)模并行操作,應(yīng)用開(kāi)發(fā)者可以選擇消耗更多時(shí)間來(lái)完成工程,以便在處理工程的同時(shí)保持處理器的功率消耗受到限制。該選擇由開(kāi)發(fā)者取決于應(yīng)用的情況而進(jìn)行。
[0054]例如,“關(guān)鍵任務(wù)”工程可以利用高性能工作線程設(shè)置,而“較不重要”工程可以利用中等性能工作線程設(shè)置。此外,如圖2a和圖2b可見(jiàn),系統(tǒng)告示設(shè)置準(zhǔn)許可以由應(yīng)用開(kāi)發(fā)者或系統(tǒng)管理員管理的性能與功率消耗的折衷的更進(jìn)一步的程度。[0055]注意,盡管可能執(zhí)行在其自己的處理核或管線上執(zhí)行各線程中的每一個(gè),但不存在這樣做的要求。如果在相同的處理核或相同的管線上執(zhí)行多個(gè)工作線程,則由于工作線程同等地且一致地調(diào)整它們的性能狀態(tài),處理核或管線的性能狀態(tài)將仍然類(lèi)似地/同等地受到影響。如果在主控制線程在其上執(zhí)行的相同的處理核或管線上執(zhí)行一個(gè)或多個(gè)工作線程,則如果系統(tǒng)告示規(guī)定高性能則處理核或管線將保持在高性能狀態(tài),或者如果系統(tǒng)告示規(guī)定低性能則保持在低性能狀態(tài),這是因?yàn)橹骺刂凭€程和工作線程切換到彼此的相反狀態(tài)。
[0056]在另一示例中,如圖4中所觀察的,觀察到另一多線程應(yīng)用。再次,線程401_1可以被看作是控制線程,且再次,線程402_2到402_N可以被看作是工作線程。然而,從該應(yīng)用在其上執(zhí)行的系統(tǒng)所耦合到的網(wǎng)絡(luò)接收由工作線程402_2到402_N處理的“工程”。控制線程401_1是處理來(lái)自網(wǎng)絡(luò)的傳入流量的線程。因而,在工作線程可以處理從網(wǎng)絡(luò)接收到的工程之前,首先由控制線程401_1從網(wǎng)絡(luò)接收“工程”。
[0057]在這種情況中,控制線程401_1可以(例如,由在線程的開(kāi)始執(zhí)行的單個(gè)TCMHINT指令)永久置于高性能狀態(tài)。因而,一旦該工程到達(dá),控制線程401_1就可以盡可能快地接收和處理工程。一旦工程從網(wǎng)絡(luò)到達(dá),一部分處理就可以包括使用線程間通信來(lái)“喚醒”工作線程302_2到302_N,引起它們執(zhí)行把它們的當(dāng)前低功率空閑設(shè)置改變成較高功率設(shè)置的TCMHINT指令。再次取決于總體環(huán)境(工程的重要程度、功率預(yù)算等等),較高功率設(shè)置可以是中等性能狀態(tài)或高性能狀態(tài)。
[0058]注意,從控制線程到工作線程的線程間通信無(wú)非就是對(duì)工作線程的函數(shù)調(diào)用,其中所調(diào)用的函數(shù)包括帶有所期望的線程功率狀態(tài)改變的TCMHINT指令。
[0059]圖5示出通用處理核500,相信,該通用處理核500描述多種不同類(lèi)型的處理核架構(gòu),例如復(fù)雜指令集(CISC)、精簡(jiǎn)指令集(RISC)和超長(zhǎng)指令字(VLIW)。圖5的通用處理核500包括具有以下的指令執(zhí)行管線:1)(例如,從高速緩存或存儲(chǔ)器)獲取指令的獲取單元503 ;2)解碼指令的解碼單元504 ;3)確定向執(zhí)行單元506的指令發(fā)布的時(shí)序和/或次序的調(diào)度單元505 (值得注意的是該調(diào)度程序是可選的);4)執(zhí)行指令的執(zhí)行單元506 ;5)表示指令的成功完成的引退單元(retirement unit) 507。值得注意的是,處理核可以包括或不包括部分地或全部地控制執(zhí)行單元506的微操作的微代碼508??梢越柚谠趫?zhí)行單元506內(nèi)的一個(gè)或多個(gè)執(zhí)行單元實(shí)現(xiàn)前述討論中提及的指令執(zhí)行資源/邏輯。
[0060]在這里,具體地,執(zhí)行在此描述的TCMHINT指令的(多個(gè))執(zhí)行單元可以耦合到由功率管理控制邏輯讀取的寄存器空間,以便影響在包括圖5的處理核的處理器內(nèi)的各種邏輯塊的性能狀態(tài)設(shè)置。在執(zhí)行TCMHINT指令時(shí),把該指令中包括的性能狀態(tài)信息(例如,形式“TCMHINT X”的指令格式中的“X”)寫(xiě)入到這樣的寄存器空間。
[0061]以上討論教示的進(jìn)程可利用程序代碼執(zhí)行,諸如機(jī)器可執(zhí)行指令,其導(dǎo)致機(jī)器執(zhí)行這些指令以實(shí)現(xiàn)某些功能。在這種背景下,“機(jī)器”可以是將中間形式(或抽象)指令轉(zhuǎn)換成處理器專(zhuān)用指令(例如,抽象執(zhí)行環(huán)境,諸如“虛擬機(jī)”(例如,Java虛擬機(jī))解釋器、公共語(yǔ)言運(yùn)行時(shí)、高級(jí)語(yǔ)言虛擬機(jī)等)的機(jī)器和/或設(shè)置在被設(shè)計(jì)成執(zhí)行指令的半導(dǎo)體芯片中的電子電路(例如以晶體管實(shí)現(xiàn)的“邏輯電路”),諸如通用處理器和/或?qū)S锰幚砥鳌R陨嫌懻撌窘痰倪M(jìn)程還可通過(guò)設(shè)計(jì)成執(zhí)行進(jìn)程(或其一部分)的電子電路來(lái)執(zhí)行(替換機(jī)器或與機(jī)器組合),而不執(zhí)行程序代碼。[0062]相信以上討論示教的進(jìn)程也可按各種軟件部署框架(例如微軟公司的.NET、Mono、Java,甲骨文公司的Fusion等)支持的各種面向?qū)ο蠡蚍敲嫦驅(qū)ο蟮挠?jì)算機(jī)編程語(yǔ)言(例如,Java、C#> VB>Python> C、C++、J#、APL、Cobol、Fortran、Pascal、Perl 等)在源級(jí)程序代碼中描述。源極程序代碼可被轉(zhuǎn)換成中間形式的程序代碼(諸如Java字節(jié)代碼、微軟中間語(yǔ)言等),可將其理解為抽象執(zhí)行環(huán)境(例如,Java虛擬機(jī)、公共語(yǔ)言運(yùn)行時(shí)、高級(jí)語(yǔ)言虛擬機(jī)、解釋器等),或者可直接編譯成對(duì)象代碼。
[0063]根據(jù)各種方法,通過(guò)I)編譯中間形式的程序代碼(例如在運(yùn)行時(shí)(例如JIT編譯器)),2)解釋中間形式的程序代碼或3)在運(yùn)行時(shí)編譯中間形式的程序代碼和解釋中間形式的程序代碼的組合,抽象執(zhí)行環(huán)境可將中間形式的程序代碼轉(zhuǎn)換成處理器專(zhuān)用代碼。抽象執(zhí)行環(huán)境可運(yùn)行在各種操作系統(tǒng)上(諸如UNIX、LINUX、包括Windows族的微軟操作系統(tǒng)、包括MacOS X的蘋(píng)果計(jì)算機(jī)操作系統(tǒng)、Sun/Solaris、OS/2、Novell等)。
[0064]制品可用于存儲(chǔ)程序代碼。存儲(chǔ)程序代碼的制品可體現(xiàn)為但不限于一個(gè)或多個(gè)存儲(chǔ)器(例如,一個(gè)或多個(gè)閃存、隨機(jī)存取存儲(chǔ)器(靜態(tài)、動(dòng)態(tài)或其它))、光盤(pán)、CD-ROM、DVDROM、EPROM、EEPR0M、磁或光卡或適于存儲(chǔ)電子指令的其它類(lèi)型的機(jī)器可讀介質(zhì)。還可從遠(yuǎn)程計(jì)算機(jī)(例如,服務(wù)器)將程序代碼作為體現(xiàn)在傳播介質(zhì)中的數(shù)據(jù)信號(hào)(例如,經(jīng)由通信鏈路(例如,網(wǎng)絡(luò)連接))下載至請(qǐng)求計(jì)算機(jī)(例如,客戶(hù)機(jī))。
[0065]在上述說(shuō)明書(shū)中,已參考本發(fā)明具體示例實(shí)施例描述了本發(fā)明。然而,顯然可對(duì)這些實(shí)施例作出各種修改和改變,而不背離如所附權(quán)利要求所述的本發(fā)明的更寬泛精神和范圍。
【權(quán)利要求】
1.一種裝置,包括: 處理器,所述處理器具有: a)處理核,其執(zhí)行指定應(yīng)用線程的性能狀態(tài)的指令,所述指令屬于所述應(yīng)用線程; b)寄存器,其存儲(chǔ)所述性能狀態(tài); c)功率管理控制邏輯,其耦合到所述寄存器,以便根據(jù)所述性能狀態(tài)設(shè)置所述處理核的性能狀態(tài)。
2.如權(quán)利要求1所述的裝置,進(jìn)一步包括存儲(chǔ)系統(tǒng)告示值的第二寄存器,所述系統(tǒng)告示值指示所述處理器偏向較高性能和較高功率消耗還是較低性能和較低功率消耗。
3.如權(quán)利要求2所述的裝置,其特征在于,所述功率管理控制邏輯還耦合到所述第二寄存器,并根據(jù)所述應(yīng)用線程的所述性能狀態(tài)和所述系統(tǒng)告示值設(shè)置所述處理核的所述性能狀態(tài)。
4.如權(quán)利要求3所述的裝置,其特征在于,所述處理器支持多個(gè)性能狀態(tài),并且,如果所述系統(tǒng)告示值指示偏向較高性能和功率消耗,則相比于如果所述系統(tǒng)告示值指示偏向較低性能和較低功率消耗,所述處理核的所述性能狀態(tài)是更高的下一性能狀態(tài)。
5.如權(quán)利要求4所述的裝置,其特征在于,所述處理器被視為支持多個(gè)應(yīng)用線程及其相應(yīng)的性能狀態(tài)的共享邏輯塊。
6.如權(quán)利要求5 所述的裝置,其特征在于,所述處理器的所述性能狀態(tài)是所述應(yīng)用線程的所述性能狀態(tài)的函數(shù),這是因?yàn)樗鼍€程的所述性能狀態(tài)是在所述多個(gè)應(yīng)用線程當(dāng)中的最高性能狀態(tài),并且,所述系統(tǒng)告示值指示偏向較高性能和較高功率消耗。
7.如權(quán)利要求5所述的裝置,其特征在于,所述處理器的所述性能狀態(tài)是所述應(yīng)用線程的所述性能狀態(tài)的函數(shù),這是因?yàn)樗鼍€程的所述性能狀態(tài)是在所述多個(gè)應(yīng)用線程當(dāng)中的最低性能狀態(tài),并且,所述系統(tǒng)告示值指示偏向較低性能和較低功率消耗。
8.如權(quán)利要求1所述的裝置,其特征在于,所述處理核的所述性能狀態(tài)是在所述處理核內(nèi)的管線的性能狀態(tài),所述指令由所述管線執(zhí)行。
9.一種方法,包括: 在處理核上執(zhí)行指定應(yīng)用的線程的性能狀態(tài)的指令,所述指令屬于所述線程,所述指令由所述應(yīng)用調(diào)用; 把所述處理核的性能狀態(tài)改變?yōu)榕c所述性能狀態(tài)一致。
10.如權(quán)利要求9所述的方法,其特征在于,所述指令由管線執(zhí)行,且所述處理核的所述性能狀態(tài)是所述管線的性能狀態(tài)。
11.如權(quán)利要求9所述的方法,進(jìn)一步包括: 把所述線程的所述性能狀態(tài)寫(xiě)到寄存器空間; 功率控制邏輯電路從所述寄存器空間訪問(wèn)所述線程的所述性能狀態(tài)并確定所述改變;
12.如權(quán)利要求10所述的方法,進(jìn)一步包括所述功率控制邏輯電路在執(zhí)行所述確定時(shí)考慮系統(tǒng)告示值,所述系統(tǒng)告示值指示所述處理核的處理器偏向較高性能和較高功率消耗還是較低性能和較低功率消耗。
13.如權(quán)利要求12所述的方法,進(jìn)一步包括所述功率控制邏輯電路在執(zhí)行所述改變時(shí)考慮由所述處理器執(zhí)行的其他應(yīng)用線程各自的性能狀態(tài)。
14.如權(quán)利要求9所述的方法,進(jìn)一步包括在確定不同于支持所述線程和所述其他線程的所述處理核的邏輯塊的性能狀態(tài)時(shí)考慮所述線程的所述性能狀態(tài)和其他線程的各自的性能狀態(tài),所述邏輯塊和所述處理核是相同處理器半導(dǎo)體芯片的一部分。
15.如權(quán)利要求14所述的方法,其特征在于,所述邏輯塊是以下中的任何: L2高速緩存; 系統(tǒng)存儲(chǔ)器控制器; I/O中樞; 集成專(zhuān)用計(jì)算模塊,例如圖形處理器單元。
16.一種包含程序代碼的機(jī)器可讀介質(zhì),所述程序代碼在由處理器處理時(shí)引起執(zhí)行一種方法,所述方法包括: 執(zhí)行控制線程和多個(gè)工作線程,所述執(zhí)行包括執(zhí)行用于所述控制線程的第一指令,所述第一指令指定執(zhí)行所述控制線程的硬件處于高性能狀態(tài),并且,執(zhí)行所述工作線程中的每一個(gè)的各自的指令,所述各自的指令指定應(yīng)把執(zhí)行所述工作線程的相應(yīng)硬件置于較低性能狀態(tài);以及, 響應(yīng)于迫切地把工作項(xiàng)呈現(xiàn)給所述工作線程,執(zhí)行所述工作線程中的每一個(gè)的各自的指令,所述各自的指令指定應(yīng)把執(zhí)行所述工作線程的相應(yīng)硬件置于比所述較低性能狀態(tài)更高的性能狀態(tài)。
17.如權(quán)利要求16所述的所述機(jī)器可讀介質(zhì),其特征在于,所述高性能狀態(tài)和所述較高性能狀態(tài)是相同的性能狀態(tài)。
18.如權(quán)利要求16所述的所述機(jī)器可讀介質(zhì),其特征在于,所述較高性能狀態(tài)低于所述高性能狀態(tài)。
19.如權(quán)利要求16所述的所述機(jī)器可讀介質(zhì),其特征在于,所述控制線程保持在所述高性能狀態(tài)。
20.如權(quán)利要求19所述的所述機(jī)器可讀介質(zhì),其特征在于,所述控制線程處理從網(wǎng)絡(luò)接收的所述工作線程的工程。
【文檔編號(hào)】G06F9/30GK104011703SQ201180075795
【公開(kāi)日】2014年8月27日 申請(qǐng)日期:2011年12月22日 優(yōu)先權(quán)日:2011年12月22日
【發(fā)明者】A·賽敏 申請(qǐng)人:英特爾公司