以低開(kāi)銷(xiāo)獲得功率分布圖信息的制作方法
【專(zhuān)利摘要】在一個(gè)實(shí)施例中,一種方法包括:在針對(duì)多核處理器的核心發(fā)生多個(gè)功率狀態(tài)轉(zhuǎn)換事件時(shí),讀取該核心的系統(tǒng)計(jì)數(shù)器值和該核心的低功率計(jì)數(shù)器值,而無(wú)需定時(shí)器到期或者中斷的觸發(fā)??梢詫⑦@些值存儲(chǔ)在處理器的存儲(chǔ)器中。隨后,在完成收集之后,可以訪問(wèn)該存儲(chǔ)器,以便使用所存儲(chǔ)的值來(lái)確定該處理器的功率分布圖。還描述和要求保護(hù)了其它實(shí)施例。
【專(zhuān)利說(shuō)明】以低開(kāi)銷(xiāo)獲得功率分布圖信息
【背景技術(shù)】
[0001]現(xiàn)代計(jì)算機(jī)系統(tǒng)包括耦接在一起的許多不同組件,用以執(zhí)行數(shù)據(jù)處理、存取信息和多種其它類(lèi)似的任務(wù)。但是,即使當(dāng)操作時(shí),也可能不需要很多組件或者其一部分來(lái)執(zhí)行有用的工作。通常,可以將這些組件設(shè)置成低功率狀態(tài),以減少功耗。這些組件(其還稱為設(shè)備)可以是特定的芯片、處理器、或者消耗功率的任何其它硬件實(shí)體。此外,諸如處理器或片上系統(tǒng)(SoC)之類(lèi)的單一芯片可以可控制地將其組件中的一個(gè)或多個(gè)設(shè)置成低功率狀態(tài)。
[0002]為了幫助分析功耗,可以確定功率分布圖(power profile),功率分布圖是設(shè)備的功率狀態(tài)的時(shí)間軸。在很多系統(tǒng)中,為了確定設(shè)備的功率狀態(tài),處理器必須處于非低功率狀態(tài),以便執(zhí)行指令或其它操作來(lái)獲得功率分布圖信息。也就是說(shuō),在進(jìn)行分布圖描繪的系統(tǒng)上執(zhí)行的分布圖描繪(profiling)應(yīng)用通過(guò)調(diào)度事件(例如,中斷或定時(shí)器)進(jìn)行操作。當(dāng)該事件發(fā)生時(shí),操作系統(tǒng)調(diào)用該應(yīng)用來(lái)收集描述其正在進(jìn)行分布圖描繪的行為所必需的信息。但是,通過(guò)強(qiáng)制處理器處于完全的供電狀態(tài)來(lái)獲得該信息,會(huì)使減少功耗的目的受挫。也就是說(shuō),這種關(guān)于一個(gè)平臺(tái)的功率信息的定期收集,造成使用另外的功率,而且其還使該平臺(tái)的功率行為失真。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0003]圖1示出了根據(jù)本發(fā)明實(shí)施例的時(shí)序。
[0004]圖2是根據(jù)本發(fā)明實(shí)施例用于執(zhí)行功率分布圖描繪的整體方法的流程圖。
[0005]圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例的收集方法的流程圖。
[0006]圖4是根據(jù)本發(fā)明實(shí)施例用于終止數(shù)據(jù)收集的方法的流程圖。
[0007]圖5是根據(jù)本發(fā)明實(shí)施例用于處理所收集的數(shù)據(jù)的方法的流程圖。
[0008]圖6是根據(jù)本發(fā)明實(shí)施例的處理器的框圖。
[0009]圖7是根據(jù)本發(fā)明實(shí)施例的系統(tǒng)的框圖。
【具體實(shí)施方式】
[0010]在各個(gè)實(shí)施例中,可以在無(wú)需使處理器或其它設(shè)備不必要地退出低功率狀態(tài)的情況下,執(zhí)行功率分布圖描繪。用此方式,可以使用減少的功耗來(lái)確定功率分布圖描繪信息(例如,通過(guò)不使用處于低功率或者睡眠狀態(tài)下的處理器來(lái)收集功率分布圖信息)。因此,實(shí)施例提供了一種方法,所述方法在無(wú)需使處理器退出低功率或睡眠狀態(tài)的情況下,在一個(gè)平臺(tái)上實(shí)現(xiàn)功率分布圖描繪,同時(shí)允許用戶非常準(zhǔn)確地對(duì)該平臺(tái)進(jìn)行分布圖描繪。在很多實(shí)施例中,可以對(duì)用于跟蹤功率狀態(tài)轉(zhuǎn)換的事件和硬件電力儀表功能進(jìn)行組合,以使功率分布圖描繪應(yīng)用能非常準(zhǔn)確地對(duì)平臺(tái)的功率使用進(jìn)行分布圖描繪。雖然本申請(qǐng)關(guān)于處理器描述了示例性實(shí)施例,但應(yīng)當(dāng)理解的是,本發(fā)明的范圍并不限于此,并且功率分布圖描繪也可以應(yīng)用于諸如片上系統(tǒng)(SoC)等等之類(lèi)的系統(tǒng)的其它組件。具體而言,SoC可以包括系統(tǒng)控制單元(S⑶),系統(tǒng)控制單元是始終開(kāi)啟并管理整個(gè)SoC的功率的小型處理器。一些實(shí)施例可以執(zhí)行來(lái)自于該處理器的功率分布圖描繪器,并能夠?qū)ζ脚_(tái)的任何組件進(jìn)行監(jiān)測(cè)。
[0011]處理器功率狀態(tài)轉(zhuǎn)換事件跟蹤處理器何時(shí)改變其當(dāng)前功率狀態(tài)。這樣的功率狀態(tài)轉(zhuǎn)換事件包括:活動(dòng)到睡眠轉(zhuǎn)換和睡眠到活動(dòng)轉(zhuǎn)換。應(yīng)當(dāng)注意,如本申請(qǐng)所使用的,術(shù)語(yǔ)“睡眠狀態(tài)”和“低功率狀態(tài)”可以互換地使用,以指代設(shè)備的與正常操作狀態(tài)相比更低的功率狀態(tài)。在這樣的低功率狀態(tài)下,例如參照處理器,一些組件可以保持加電并進(jìn)行工作,而其它組件則處于斷電狀態(tài)。當(dāng)處理器進(jìn)入低功率狀態(tài)時(shí),實(shí)現(xiàn)省電。處理器可以被安排為進(jìn)入低功率狀態(tài),或者當(dāng)處理器檢測(cè)到執(zhí)行的工作負(fù)載不需要其支持時(shí),自主地進(jìn)入低功率狀態(tài)。也就是說(shuō),在一些實(shí)施例中,可以由軟件(例如,操作系統(tǒng)(OS))或者硬件(例如,處理器自身)來(lái)觸發(fā)這些事件。在各個(gè)實(shí)施例中,在發(fā)生轉(zhuǎn)換事件之后,可以通知分布圖描繪應(yīng)用或者其它分布圖描繪器。
[0012]在Linux?操作系統(tǒng)中存在處理器功率狀態(tài)轉(zhuǎn)換事件的一個(gè)示例,即power_start跟蹤點(diǎn)(其還稱為C狀態(tài)進(jìn)入跟蹤點(diǎn))。當(dāng)操作系統(tǒng)準(zhǔn)備將處理器安排為進(jìn)入睡眠狀態(tài)時(shí),執(zhí)行C狀態(tài)進(jìn)入跟蹤點(diǎn)。這些跟蹤點(diǎn)是內(nèi)核測(cè)量機(jī)制,可以將它們放置在內(nèi)核源代碼流中的一些點(diǎn)處,以使開(kāi)發(fā)者能更好地理解該內(nèi)核的功能。換言之,跟蹤點(diǎn)就像內(nèi)核源代碼中的printf函數(shù)調(diào)用。
[0013]跟蹤點(diǎn)提供允許設(shè)備驅(qū)動(dòng)程序動(dòng)態(tài)地連接到該跟蹤點(diǎn)的功能。當(dāng)一個(gè)設(shè)備驅(qū)動(dòng)程序連接到一個(gè)跟蹤點(diǎn)(例如,向跟蹤點(diǎn)注冊(cè))時(shí),在執(zhí)行包括該跟蹤點(diǎn)的內(nèi)核源代碼時(shí),操作系統(tǒng)調(diào)用該設(shè)備驅(qū)動(dòng)程序中的函數(shù)。換言之,當(dāng)處理器準(zhǔn)備進(jìn)入睡眠狀態(tài)時(shí),可以使用C狀態(tài)進(jìn)入跟蹤點(diǎn)來(lái)通知功率分布圖描繪應(yīng)用。應(yīng)當(dāng)注意,雖然參照LinuxTM0S的實(shí)現(xiàn)進(jìn)行了描述,但應(yīng)當(dāng)理解的是,本發(fā)明的范圍并不限于此,并且實(shí)施例也可以用于其它OS。也就是說(shuō),更一般地,實(shí)施例提供了在功率狀態(tài)轉(zhuǎn)換時(shí)某些功率狀態(tài)信息的收集,例如,如OS所實(shí)現(xiàn)的。
[0014]當(dāng)處理器進(jìn)入某些低功率狀態(tài)時(shí),其通常停止工作。換言之,其不再執(zhí)行指令。當(dāng)處理器被安排進(jìn)入低功率狀態(tài)時(shí),其可以選擇偏離所請(qǐng)求的睡眠狀態(tài)。換言之,操作系統(tǒng)可以安排硬件進(jìn)入睡眠狀態(tài)1,而該硬件可以基于其對(duì)于當(dāng)前平臺(tái)活動(dòng)的了解而選擇進(jìn)入睡眠狀態(tài)2。代表性處理器包括那些基于Intel?指令集體系結(jié)構(gòu)(ISA)的處理器,其可以例如根據(jù)高級(jí)配置和電源接口(ACPI)標(biāo)準(zhǔn)(例如,(2006年10月10日公布的)版本3.0b),提供多種低功率狀態(tài),其中ACPI標(biāo)準(zhǔn)提供關(guān)于處理器核心的多種低功率狀態(tài)或所謂的C狀態(tài)。
[0015]在一些實(shí)施例中,處理器可以提供關(guān)于功率分布圖描繪信息的硬件支持。例如,在多核處理器中,每一個(gè)核心可以包括低功率狀態(tài)駐留期計(jì)數(shù)器(例如,C狀態(tài)駐留期計(jì)數(shù)器)。這些低功率狀態(tài)駐留期計(jì)數(shù)器是當(dāng)硬件處于特定的低功率狀態(tài)時(shí)對(duì)(例如,處理器周期)進(jìn)行計(jì)數(shù)的單調(diào)增加計(jì)數(shù)器。例如,處理器可以提供僅僅用于某些指定的低功率狀態(tài)(例如,C狀態(tài)C3和C6)的C狀態(tài)駐留期計(jì)數(shù)器。該硬件監(jiān)測(cè)儀器允許對(duì)硬件的低功率行為進(jìn)行準(zhǔn)確地監(jiān)測(cè)。此外,硬件可以提供系統(tǒng)時(shí)間計(jì)數(shù)器。例如,處理器可以針對(duì)每一個(gè)核心提供一個(gè)時(shí)間戳計(jì)數(shù)器(TSC)。在一些實(shí)施例中,這些計(jì)數(shù)器是一直(當(dāng)該硬件活動(dòng)時(shí),或者處于低功率狀態(tài)時(shí))進(jìn)行計(jì)數(shù)的單調(diào)增加計(jì)數(shù)器。
[0016]如上所述,傳統(tǒng)的分布圖描繪應(yīng)用對(duì)事件(例如,中斷或定時(shí)器)進(jìn)行調(diào)度,使得分布圖描繪應(yīng)用可以收集某些信息。但是,這恰恰是功率功率分布圖描繪軟件可能使處于睡眠狀態(tài)的處理器退出其睡眠狀態(tài)的行為。當(dāng)處理器退出睡眠狀態(tài)時(shí),其繼續(xù)以其正常的功耗模式進(jìn)行操作。換言之,與沒(méi)有執(zhí)行應(yīng)用分布圖描繪器的平臺(tái)相比,對(duì)事件進(jìn)行調(diào)度的傳統(tǒng)分布圖描繪應(yīng)用使平臺(tái)消耗了另外的功率(并且可能使低功率性能信息失真)。由于實(shí)施例使用處理器功率狀態(tài)轉(zhuǎn)換事件作為收集關(guān)于平臺(tái)的功率信息的觸發(fā)事件,因此避免了定時(shí)器或中斷,并且實(shí)施例僅當(dāng)該處理器活動(dòng)地執(zhí)行時(shí),才獲得數(shù)據(jù)。用此方式,分布圖描繪應(yīng)用使用于對(duì)平臺(tái)進(jìn)行分布圖描繪的功率最小化,并避免了該平臺(tái)低功率行為的失真。
[0017]在一個(gè)實(shí)施例中,可以使用設(shè)備驅(qū)動(dòng)程序來(lái)收集功率分布圖信息;但是,在其它實(shí)施例中,其它特權(quán)級(jí)別的軟件或者甚至用戶級(jí)別的軟件也可以獲得該信息。當(dāng)處理器準(zhǔn)備進(jìn)入低功率狀態(tài)時(shí),設(shè)備驅(qū)動(dòng)程序使用處理器功率狀態(tài)轉(zhuǎn)換事件而被通知。在該實(shí)現(xiàn)中,設(shè)備驅(qū)動(dòng)程序使OS的功率狀態(tài)轉(zhuǎn)換代碼來(lái)注冊(cè)一個(gè)函數(shù)(例如,收集函數(shù))。例如,在一個(gè)實(shí)施例中,該代碼可以是LinuxTMC狀態(tài)進(jìn)入跟蹤點(diǎn),并且該注冊(cè)使得C狀態(tài)進(jìn)入跟蹤點(diǎn)在每一次操作系統(tǒng)決定將處理器設(shè)置為睡眠狀態(tài)時(shí)調(diào)用所注冊(cè)的函數(shù)。
[0018]在一個(gè)實(shí)施例中,當(dāng)OS執(zhí)行其C狀態(tài)進(jìn)入跟蹤點(diǎn)時(shí),設(shè)備驅(qū)動(dòng)程序收集函數(shù)讀取系統(tǒng)時(shí)鐘和該處理器的睡眠狀態(tài)駐留期計(jì)數(shù)器,并所訪問(wèn)的信息被保存。例如,在第一 C狀態(tài)進(jìn)入跟蹤點(diǎn)處可以發(fā)生第一收集以獲得采樣A。在C狀態(tài)進(jìn)入跟蹤點(diǎn)下一次執(zhí)行時(shí),設(shè)備驅(qū)動(dòng)程序的函數(shù)收集采樣B的相同信息。在數(shù)據(jù)的收集期間,持續(xù)這種操作。由于在單一C狀態(tài)進(jìn)入跟蹤點(diǎn)期間,只讀取少數(shù)的寄存器,因此性能耗費(fèi)是最小的。
[0019]圖1示出了根據(jù)本發(fā)明實(shí)施例的時(shí)序。在t0,C狀態(tài)進(jìn)入跟蹤點(diǎn)執(zhí)行,并且收集采樣A。隨后,處理器進(jìn)入睡眠狀態(tài)。應(yīng)當(dāng)注意,所進(jìn)入的睡眠狀態(tài)可以不同于操作系統(tǒng)所安排的狀態(tài)。在tl,發(fā)生了使硬件退出其睡眠狀態(tài)并返回到正常的操作和功耗的事件。造成退出睡眠狀態(tài)的事件(例如,中斷或者定時(shí)器到期)不是由功率分布圖描繪器調(diào)度的。在t2,C狀態(tài)進(jìn)入跟蹤點(diǎn)再次執(zhí)行,并且收集采樣B。應(yīng)當(dāng)注意,數(shù)據(jù)收集不是由跟蹤點(diǎn)觸發(fā)的,而是響應(yīng)于OS或平臺(tái)邏輯的另一個(gè)通知機(jī)制而發(fā)生的。
[0020]在收集完成之后,所收集的數(shù)據(jù)可以由例如分布圖描繪應(yīng)用進(jìn)行處理。計(jì)算采樣B的系統(tǒng)時(shí)鐘值和采樣A的系統(tǒng)時(shí)鐘值之間的差,其可以對(duì)應(yīng)于兩個(gè)功率狀態(tài)轉(zhuǎn)換事件之間的實(shí)際時(shí)間。此外,還可以計(jì)算用于采樣A的駐留期計(jì)數(shù)和用于采樣B的駐留期計(jì)數(shù)之間的差,以便針對(duì)第一功率狀態(tài)轉(zhuǎn)換事件,確定低功率狀態(tài)(以及長(zhǎng)度或持續(xù)時(shí)間,在各個(gè)實(shí)施例中,可以用周期或者時(shí)間來(lái)測(cè)量)。
[0021]例如,假定存在兩個(gè)駐留期計(jì)數(shù)器,一個(gè)用于狀態(tài)C3,一個(gè)用于狀態(tài)C6。此外,假定在采樣A和B處,收集到下面的值,如表I中所示。
[0022]表I
[0023]
[1#A fl#B系統(tǒng)時(shí)鐘 7,100,000 7,100,500~
C31,500,100 1,500,100~
C63,200,000 3,200,300~
[0024]對(duì)于這些數(shù)據(jù),功率分布圖描繪器可以準(zhǔn)確地確定進(jìn)入了哪個(gè)睡眠狀態(tài)(在該情況下,進(jìn)入C6,這是由于C3計(jì)數(shù)器沒(méi)有改變),花費(fèi)了多長(zhǎng)時(shí)間在睡眠狀態(tài)下操作(在C6下度過(guò)300個(gè)計(jì)數(shù)),以及花費(fèi)了多長(zhǎng)時(shí)間在正常功率電平操作(200個(gè)計(jì)數(shù),總時(shí)間減去睡眠時(shí)間)。
[0025]如上所述,實(shí)施例可以并入到多種系統(tǒng)之中,并使用不同的組件。在一些實(shí)施例中,可以將方法實(shí)現(xiàn)成性能分析工具集的一部分。更具體地,實(shí)施例可以并入到這樣的工具的功率分布圖描繪器中,所述工具可以獲得關(guān)于系統(tǒng)的組件中的功率狀態(tài)轉(zhuǎn)換的信息,并對(duì)該數(shù)據(jù)進(jìn)行處理。隨后,該數(shù)據(jù)可以使得諸如用戶、編譯器、操作系統(tǒng)或其它這種實(shí)體之類(lèi)的給定實(shí)體能夠進(jìn)行分析。本申請(qǐng)描述的實(shí)施例是關(guān)于在諸如多核處理器之類(lèi)的處理器中發(fā)生的功率轉(zhuǎn)換的。但是,雖然使用該特定的實(shí)現(xiàn)進(jìn)行了描述,但應(yīng)當(dāng)理解的是,本發(fā)明的范圍并不限于此,并且在其它實(shí)施例中,系統(tǒng)的其它組件(例如,芯片集、存儲(chǔ)器、外圍設(shè)備等等)也可以從根據(jù)本發(fā)明實(shí)施例的功率監(jiān)測(cè)中獲益。
[0026]現(xiàn)參見(jiàn)圖2,示出的是根據(jù)本發(fā)明實(shí)施例用于執(zhí)行功率分布圖描繪的整體方法的流程圖。如圖2中所示,方法10可以在性能分析器(并且更具體地,在該分析器的功率分布圖描繪器)中實(shí)現(xiàn),方法10可以開(kāi)始于對(duì)功率分布圖描繪器的設(shè)備驅(qū)動(dòng)程序進(jìn)行初始化(方框20)。設(shè)備驅(qū)動(dòng)程序的這種初始化可以實(shí)現(xiàn)與該設(shè)備驅(qū)動(dòng)程序相關(guān)聯(lián)的低水平功能,例如,訪問(wèn)特權(quán)資源(例如,各種處理器寄存器)的能力。接著,控制權(quán)傳遞到方框30,其中在方框30,例如,可以注冊(cè)該驅(qū)動(dòng)程序的收集函數(shù),以便在功率狀態(tài)轉(zhuǎn)換事件期間進(jìn)行調(diào)用。舉例而言,可以對(duì)處理功率狀態(tài)轉(zhuǎn)換事件的OS模塊進(jìn)行更新,以便注冊(cè)該收集函數(shù)。在針對(duì)LinuX?0S的一個(gè)特定實(shí)施例中,可以使用跟蹤點(diǎn)來(lái)注冊(cè)該收集函數(shù),其中該跟蹤點(diǎn)處理關(guān)于功率轉(zhuǎn)換的儀器工具。
[0027]仍然參見(jiàn)圖2,接著,分配用于存儲(chǔ)功率狀態(tài)轉(zhuǎn)換信息的緩沖區(qū),其中該功率狀態(tài)轉(zhuǎn)換信息是將在所述收集函數(shù)期間獲得的(方框40)。舉例而言,可以在處理器的高速緩存存儲(chǔ)器(例如,末級(jí)高速緩存)中設(shè)置該緩沖區(qū)。因此,此時(shí),功率分布圖描繪器被配置為執(zhí)行收集操作,以便在發(fā)生功率狀態(tài)轉(zhuǎn)換事件時(shí)獲得功率狀態(tài)轉(zhuǎn)換信息。
[0028]因此,控制權(quán)傳遞到方框50,其中在方框50,可以針對(duì)功率狀態(tài)轉(zhuǎn)換事件執(zhí)行收集,并且可以將獲得的相應(yīng)信息存儲(chǔ)在緩沖區(qū)中。在各個(gè)實(shí)施例中,可以在與進(jìn)入低功率模式相對(duì)應(yīng)的功率狀態(tài)轉(zhuǎn)換事件時(shí),執(zhí)行該收集。之所以如此,是由于OS執(zhí)行各種操作,以便準(zhǔn)備并使得處理器能夠進(jìn)入低功率模式。但是,在其它實(shí)施例中,可以替代地在從低功率模式退出時(shí),獲得該信息。在任一事件中,應(yīng)當(dāng)注意,可以在分布圖描繪窗期間在每一個(gè)功率狀態(tài)轉(zhuǎn)換事件(其具有特定的方向,即,進(jìn)入或者離開(kāi)低功率模式)時(shí),而不是在傳統(tǒng)功率分布圖描繪器的系統(tǒng)操作的隨機(jī)時(shí)間(例如,根據(jù)中斷或者定時(shí)器),對(duì)信息進(jìn)行確定性地收集。這種收集可以針對(duì)(某個(gè)方向的)多個(gè)連續(xù)的功率狀態(tài)轉(zhuǎn)換事件發(fā)生與分布圖描繪窗相對(duì)應(yīng)的一個(gè)時(shí)間段,其中在各個(gè)實(shí)施例中,所述分布圖描繪窗可以在很大范圍上進(jìn)行變化,例如,收集可以如一秒一樣短,但通常運(yùn)行得如驅(qū)動(dòng)系統(tǒng)的工作負(fù)荷一樣長(zhǎng)(其通常是數(shù)分鐘,但在一些罕見(jiàn)情形下,其可以是數(shù)小時(shí))。
[0029]因此,可以在收集窗期間,對(duì)來(lái)自于多個(gè)連續(xù)的功率狀態(tài)轉(zhuǎn)換事件的信息進(jìn)行收集。雖然本發(fā)明的范圍并不限于此,但在各個(gè)實(shí)施例中,關(guān)于該轉(zhuǎn)換事件所收集的信息可以包括各個(gè)計(jì)數(shù)器(其包括諸如時(shí)間戳計(jì)數(shù)器之類(lèi)的系統(tǒng)級(jí)計(jì)數(shù)器)的值,以及與處理器中可用的不同低功率狀態(tài)相關(guān)聯(lián)的一個(gè)或多個(gè)計(jì)數(shù)器的值。例如,每一個(gè)C狀態(tài)可以具有與其相關(guān)聯(lián)的特定于機(jī)器的寄存器(MSR),該MSR可以用于對(duì)給定的低功率模式的持續(xù)時(shí)間進(jìn)行計(jì)數(shù)。在每一次收集之后,可以判斷是否完成了收集(菱形框60)。例如,在各個(gè)實(shí)施例中,功率分布圖描繪器可以被配置為:針對(duì)預(yù)定的時(shí)間量或者預(yù)定數(shù)量的功率狀態(tài)事件等等,對(duì)數(shù)據(jù)進(jìn)行收集。如果沒(méi)有完成收集,則控制權(quán)傳遞回到方框50。
[0030]否則,控制權(quán)傳遞到方框70,其中在方框70,可以對(duì)通過(guò)這些收集所獲得的功率狀態(tài)轉(zhuǎn)換信息進(jìn)行處理,并向用戶進(jìn)行報(bào)告。應(yīng)當(dāng)注意,雖然在圖2的實(shí)施例中,以相對(duì)較高的級(jí)別進(jìn)行了討論,但應(yīng)當(dāng)理解的是,在不同的實(shí)施例中各種細(xì)節(jié)和修改都是可能的。
[0031]現(xiàn)參見(jiàn)圖3,示出的是根據(jù)本發(fā)明一個(gè)實(shí)施例的收集方法的流程圖。如上所述,在一些實(shí)施例中,該收集方法可以通過(guò)對(duì)驅(qū)動(dòng)程序的函數(shù)調(diào)用來(lái)實(shí)現(xiàn),其中該驅(qū)動(dòng)程序可以訪問(wèn)保存在諸如MSR、系統(tǒng)計(jì)數(shù)器等等之類(lèi)的特權(quán)資源中的信息。但是,在其它實(shí)施例中,應(yīng)當(dāng)理解的是,收集可以在用戶模式下發(fā)生。在圖3中,方法100可以開(kāi)始于在方框110讀取系統(tǒng)時(shí)鐘。在各個(gè)實(shí)施例中,該系統(tǒng)時(shí)鐘可以對(duì)應(yīng)于時(shí)間戳計(jì)數(shù)器,時(shí)間戳計(jì)數(shù)器存在于將被設(shè)置為低功率狀態(tài)的核心上。因此,應(yīng)當(dāng)理解的是,可以按照核心的粒度來(lái)執(zhí)行這些收集操作,這是由于可以對(duì)處理器進(jìn)行控制以針對(duì)每個(gè)核心執(zhí)行功率管理。但是,在其它實(shí)施例中,處理器可以只提供封裝級(jí)別的功率管理,因此在這些實(shí)施例中,可以獲得封裝級(jí)別的信息。在其它實(shí)現(xiàn)中,可以獲得核心級(jí)別和封裝級(jí)別的功率狀態(tài)信息的組合。
[0032]仍然參見(jiàn)圖3,將讀取的系統(tǒng)時(shí)鐘值存儲(chǔ)在緩沖區(qū)中(方框120)。更具體地,對(duì)于每一次收集,可以分配該緩沖區(qū)的一個(gè)條目,所述條目可以用于存儲(chǔ)該系統(tǒng)時(shí)鐘值連同與每一個(gè)可用的低功率狀態(tài)相關(guān)聯(lián)的單調(diào)計(jì)數(shù)器的值。
[0033]因此,在圖3中進(jìn)一步觀察到,對(duì)于該處理器中可用的每一個(gè)可能的睡眠狀態(tài)(如菱形框130所確定的),遍歷包括下面各項(xiàng)的循環(huán):讀取用于該低功率狀態(tài)的相應(yīng)駐留期計(jì)數(shù)器(方框140)(其可以通過(guò)讀取用于該低功率狀態(tài)的MSR來(lái)實(shí)現(xiàn)),將該計(jì)數(shù)器值寫(xiě)入到緩沖區(qū)中的該條目(方框150)。當(dāng)讀取完針對(duì)可用的低功率狀態(tài)的所有這些計(jì)數(shù)器時(shí),方法100結(jié)束。因此,完成了針對(duì)該功率狀態(tài)轉(zhuǎn)換事件的收集過(guò)程,將獲得的信息存儲(chǔ)在緩沖區(qū)條目中。應(yīng)當(dāng)注意,雖然在圖3的實(shí)施例中使用該特定的信息集合進(jìn)行了描述,但應(yīng)當(dāng)理解的是,本發(fā)明的范圍并不限于此,在其它實(shí)施例中,可以獲得另外的或者不同的信息。例如,在一個(gè)實(shí)施例中,該另外的信息可以包括:OS所請(qǐng)求的低功率狀態(tài)(其可能不是該硬件實(shí)際所使用的低功率狀態(tài))。
[0034]可以對(duì)諸如參照?qǐng)D3所描述的收集過(guò)程執(zhí)行很多次。當(dāng)收集了期望數(shù)量的數(shù)據(jù)時(shí),功率分布圖描繪器可以執(zhí)行各種操作,以讀取數(shù)據(jù)以進(jìn)行進(jìn)一步處理,以及終止該數(shù)據(jù)收集?,F(xiàn)參見(jiàn)圖4,示出的是根據(jù)本發(fā)明實(shí)施例用于終止數(shù)據(jù)收集的方法的流程圖。如圖4中所示,方法200可以在卸載設(shè)備驅(qū)動(dòng)程序的過(guò)程(方框210)中,執(zhí)行各種動(dòng)作。通常,在卸載之前,驅(qū)動(dòng)程序?qū)?shù)據(jù)進(jìn)行刷新(例如,將其寫(xiě)到磁盤(pán))、釋放緩沖區(qū)、對(duì)該收集函數(shù)進(jìn)行注銷(xiāo)。可以在每一次收集之后,發(fā)生這些步驟(除了卸載驅(qū)動(dòng)程序之外)。(在LinuxTM0S中)可以使用“insmod”或“rmmod”命令手工地插入和刪除該驅(qū)動(dòng)程序,或者可以在啟動(dòng)時(shí)自動(dòng)地裝載該驅(qū)動(dòng)程序,并且該驅(qū)動(dòng)程序永不被刪除。最后,在一些OS上,設(shè)備驅(qū)動(dòng)程序可以由特定的用戶模式系統(tǒng)調(diào)用進(jìn)行裝載和卸載。在這些實(shí)現(xiàn)中,順序可以是:(I)裝載該驅(qū)動(dòng)程序;(2)某個(gè)時(shí)間之后,運(yùn)行收集;(3)重復(fù)步驟2 (如果期望的話);以及(4)卸載該驅(qū)動(dòng)程序。此外,應(yīng)當(dāng)注意,在一些實(shí)現(xiàn)中,可以將所收集的數(shù)據(jù)返回給對(duì)這些收集進(jìn)行控制的用戶級(jí)代碼,該用戶級(jí)代碼將該數(shù)據(jù)保存到文件中。換言之,驅(qū)動(dòng)程序?qū)嶋H上并不向文件進(jìn)行寫(xiě),替代地其將緩沖區(qū)傳送給用戶級(jí)代碼,用戶級(jí)代碼在收集期間,將該數(shù)據(jù)寫(xiě)入到文件中。在LinuxTMOS中,這種類(lèi)型的設(shè)備驅(qū)動(dòng)程序稱為‘字符’驅(qū)動(dòng)程序。
[0035]如所看到的,該方法開(kāi)始于方框215,其中在方框215,將緩沖區(qū)寫(xiě)入到文件中。例如,可以將該緩沖區(qū)(如上所述,其可以位于處理器的高速緩存中的臨時(shí)存儲(chǔ)器之中)轉(zhuǎn)發(fā)給文件系統(tǒng),并例如可以在系統(tǒng)存儲(chǔ)器中存儲(chǔ)成數(shù)據(jù)文件220,以便稍后訪問(wèn)。接著,控制權(quán)傳遞到方框225,其中在方框225,可以對(duì)該緩沖區(qū)進(jìn)行釋放,使得其被返回到OS的資源池中。最后,控制權(quán)傳遞到方框230,其中在方框230,對(duì)該收集函數(shù)進(jìn)行注銷(xiāo)。也就是說(shuō),可以對(duì)注冊(cè)了該收集函數(shù)的OS跟蹤點(diǎn)或者其它內(nèi)核(或者其它位置)進(jìn)行注銷(xiāo),使得在功率狀態(tài)轉(zhuǎn)換事件期間不再調(diào)用該函數(shù)。此時(shí),可以卸載該設(shè)備驅(qū)動(dòng)程序。
[0036]因此,此時(shí),已經(jīng)獲得了期望的功率狀態(tài)信息,并且可以對(duì)其進(jìn)行進(jìn)一步處理,以便使用戶或者諸如系統(tǒng)的分析工具之類(lèi)的其它實(shí)體能夠?qū)ζ溥M(jìn)行分析?,F(xiàn)參見(jiàn)圖5,示出的是根據(jù)本發(fā)明實(shí)施例用于處理所收集的數(shù)據(jù)的方法的流程圖。如圖5中所示,方法250可以開(kāi)始于對(duì)數(shù)據(jù)文件220進(jìn)行處理(方框260)。在一個(gè)實(shí)施例中,該處理可以包括:將數(shù)據(jù)與什么造成該處理器轉(zhuǎn)換回活動(dòng)狀態(tài)的描述(例如,定時(shí)器或者中斷,或者甚至源代碼調(diào)用棧的描述,其中該源代碼調(diào)用棧導(dǎo)致了造成轉(zhuǎn)換回活動(dòng)狀態(tài)的事件)進(jìn)行關(guān)聯(lián)。此時(shí),例如,通過(guò)功率分布圖描繪器的應(yīng)用,因此數(shù)據(jù)處于待處理的格式。
[0037]仍然參見(jiàn)圖5,控制權(quán)傳遞到方框265,其中在方框265,可以從數(shù)據(jù)文件中讀取與針對(duì)第一功率狀態(tài)轉(zhuǎn)換事件的收集相對(duì)應(yīng)的第一采樣。隨后,如菱形框270所確定的,針對(duì)該文件中的每一個(gè)另外的采樣,執(zhí)行循環(huán)。具體而言,在該循環(huán)中,在方框275,可以計(jì)算當(dāng)前采樣和前一采樣之間的流逝時(shí)間(方框275)。此外,在方框280,可以計(jì)算當(dāng)前采樣的駐留期計(jì)數(shù)器中的每一個(gè)與前一采樣的駐留期計(jì)數(shù)器中的每一個(gè)之間的差。在方框290,可以將所計(jì)算得到的結(jié)果存儲(chǔ)在一個(gè)表中。因此,對(duì)于每一對(duì)相鄰采樣,可以確定前一次進(jìn)入到低功率狀態(tài)和當(dāng)前進(jìn)入到低功率狀態(tài)之間的流逝時(shí)間(如由多個(gè)系統(tǒng)時(shí)鐘之間的差所確定的)。此外,基于相應(yīng)的駐留期計(jì)數(shù)器之間的差,可以確定先前轉(zhuǎn)換到低功率時(shí)所進(jìn)入的給定低功率狀態(tài),以及確定處于該低功率狀態(tài)的持續(xù)時(shí)間。因此,對(duì)于每一對(duì)采樣,可以確定兩個(gè)功率狀態(tài)事件之間流逝的時(shí)間,以及確定前一次低功率進(jìn)入的持續(xù)時(shí)間和類(lèi)型。因此,可以將這些值連同其它駐留期計(jì)數(shù)器的差(其可以都等于零)存儲(chǔ)在所述表格的一個(gè)條目中。因此,針對(duì)數(shù)據(jù)文件中的每一個(gè)另外的采樣,該循環(huán)繼續(xù)。
[0038]在該處理結(jié)束時(shí),控制權(quán)傳遞到方框295,其中在方框295,將結(jié)果輸出給用戶。例如,該輸出可以采用時(shí)間軸的形式,其中該時(shí)間軸描述在收集期間的活動(dòng),或者可以將輸出顯示成直方圖,其中該直方圖描述如何頻繁地使用一個(gè)狀態(tài),等等。舉一些例子,該輸出可以是平臺(tái)的顯示器上的打印輸出或者用戶可視顯示。另外,還可以使存儲(chǔ)在該表中的結(jié)果以機(jī)器可讀形式可用,以便其它分析和控制工具(例如,編譯器、OS或其它工具)進(jìn)行使用。舉一個(gè)例子,可以以人類(lèi)可讀形式和/或計(jì)算機(jī)可讀形式,來(lái)向OS實(shí)體提供該表中的信息。OS開(kāi)發(fā)人員和/或運(yùn)行的OS自己可以使用該信息,來(lái)提高關(guān)于功率管理決定的性能。例如,開(kāi)發(fā)人員可以基于所接收的信息,來(lái)更新OS的功率管理代碼。
[0039]舉一個(gè)這種示例(如上所述),處理器硬件可以選擇進(jìn)入與OS所請(qǐng)求的低功率狀態(tài)不相同的低功率狀態(tài)?;谠摫碇械目捎眯畔?即,按照給定的時(shí)間間隔進(jìn)入的特定的低功率狀態(tài)的持續(xù)時(shí)間和類(lèi)型),OS實(shí)體可以確定,其進(jìn)入低功率狀態(tài)的請(qǐng)求未被接受,被接受的是處理器對(duì)不同的低功率狀態(tài)的選擇?;谠撔畔ⅲ琌S實(shí)體可以修改其功率管理算法和/或啟發(fā),以便在例如未來(lái)的OS版本中進(jìn)行不同的功率管理決策。此外,在以計(jì)算機(jī)可讀形式向在平臺(tái)上運(yùn)行的當(dāng)前OS實(shí)例提供該信息的實(shí)施例中,該OS實(shí)例可以實(shí)時(shí)地更新其控制算法,并在其它執(zhí)行中,基于該信息來(lái)進(jìn)行更佳的決策。雖然在圖5的實(shí)施例中使用該特定實(shí)現(xiàn)進(jìn)行了示出,但應(yīng)當(dāng)理解的是,本發(fā)明的范圍并不限于此。
[0040]現(xiàn)參見(jiàn)圖6,示出的是根據(jù)本發(fā)明實(shí)施例的處理器的框圖。如圖6中所示,處理器400可以是包括多個(gè)核心410a- 410n的多核處理器。在一個(gè)實(shí)施例中,每一個(gè)這種核心可以包括具有下面各項(xiàng)的流水線:例如,前端單元、亂序邏輯、執(zhí)行單元、以及諸如引退邏輯的后端單元。除了如上所述的之外,每一個(gè)核心還可以包括多個(gè)計(jì)數(shù)器,其中這些計(jì)數(shù)器可以實(shí)現(xiàn)成諸如特定于機(jī)器的寄存器之類(lèi)的寄存器、性能監(jiān)測(cè)器等等。在圖6的實(shí)施例中,這些計(jì)數(shù)器包括時(shí)間戳計(jì)數(shù)器412。計(jì)數(shù)器412可以被配置為按照該處理器的標(biāo)稱頻率(例如,根據(jù)機(jī)器周期)進(jìn)行計(jì)數(shù),并且在一些實(shí)施例中,計(jì)數(shù)器412可以連續(xù)地計(jì)數(shù),而不管該核心(或者處理器,只要向該處理器供電即可)的功率狀態(tài)和多個(gè)低功率計(jì)數(shù)器414b如何,其中每一個(gè)這種計(jì)數(shù)器都對(duì)該核心處于給定的低功率狀態(tài)的周期進(jìn)行計(jì)數(shù)。
[0041]各個(gè)核心可以通過(guò)互連415耦接到包括各個(gè)組件的非核心420。如所看到的,非核心420可以包括共享的高速緩存430,其可以是末級(jí)高速緩存。此外,非核心可以包括集成存儲(chǔ)器控制器440、各種接口 450和功率控制單元455,在一些實(shí)施例中,這些部件可以用于獨(dú)立于OS進(jìn)入和退出低功率狀態(tài)。如所看到的,處理器400可以通過(guò)例如存儲(chǔ)器總線,與系統(tǒng)存儲(chǔ)器460進(jìn)行通信。此外,通過(guò)接口 450,可以連接到諸如外圍設(shè)備、大容量存儲(chǔ)器等等之類(lèi)的各種片外組件。雖然在圖6的實(shí)施例中使用該特定實(shí)現(xiàn)進(jìn)行示出,但本發(fā)明的范圍并不限于此。
[0042]實(shí)施例可以在多種不同的系統(tǒng)類(lèi)型中實(shí)現(xiàn)?,F(xiàn)參見(jiàn)圖7,示出的是根據(jù)本發(fā)明實(shí)施例的系統(tǒng)的框圖。如圖7中所示,多處理器系統(tǒng)500是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),并且包括通過(guò)點(diǎn)對(duì)點(diǎn)互連550耦接的第一處理器570和第二處理器580。如圖7中所示,處理器570和580中的每一個(gè)可以是多核處理器(包括第一和第二處理器核心(即,處理器核心574a和574b以及處理器核心584a和584b)),但在這些處理器中,可以潛在地存在更多的核心。這些核心中的每一個(gè)可以包括各種駐留期計(jì)數(shù)器和系統(tǒng)計(jì)數(shù)器,如上所述。
[0043]仍然參見(jiàn)圖7,第一處理器570還包括存儲(chǔ)器控制器中心(MCH) 572和點(diǎn)對(duì)點(diǎn)(P-P)接口 576和578。類(lèi)似地,第二處理器580包括MCH582和P-P接口 586和588。如圖7中所示,MCH572和582將處理器耦接到各自的存儲(chǔ)器(即,存儲(chǔ)器532和存儲(chǔ)器534),這些存儲(chǔ)器可以是本地連接到各自處理器的主存儲(chǔ)器(例如,動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM))的一部分。第一處理器570和第二處理器580可以分別通過(guò)P-P互連552和554耦接到芯片集590。如圖7中所示,芯片集590包括P-P接口 594和598。
[0044]此外,芯片集590包括接口 592,以便通過(guò)P-P互連539將芯片集590與高性能圖形引擎538進(jìn)行耦合。芯片集590則可以通過(guò)接口 596耦接到第一總線516。如圖7中所示,各種輸入/輸出(I/O)設(shè)備514可以耦接到第一總線516以及總線橋518,總線橋518將第一總線516耦接到第二總線520。各個(gè)設(shè)備可以耦接到第二總線520,包括例如:鍵盤(pán)/鼠標(biāo)522、通信設(shè)備526和數(shù)據(jù)存儲(chǔ)單元528(例如,可以包括例如用以執(zhí)行根據(jù)本發(fā)明實(shí)施例的功率分布圖描繪的代碼530的磁盤(pán)驅(qū)動(dòng)器或其它大容量存儲(chǔ)設(shè)備)。此外,音頻I/0524可以耦接到第二總線520。
[0045]實(shí)施例可以用代碼實(shí)現(xiàn),并且實(shí)施例可以存儲(chǔ)在其上存儲(chǔ)有指令的存儲(chǔ)介質(zhì)上,其中所述指令可以用于對(duì)系統(tǒng)進(jìn)行編程以執(zhí)行這些指令。該存儲(chǔ)介質(zhì)可以包括,但不限于:任何類(lèi)型的非臨時(shí)存儲(chǔ)介質(zhì),例如,包括軟盤(pán)、光盤(pán)、光盤(pán)、固態(tài)驅(qū)動(dòng)器(SSD)、緊致碟只讀存儲(chǔ)器(⑶-ROM)、可重讀緊致碟(⑶-RW)和磁光盤(pán)在內(nèi)的磁盤(pán),諸如只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)(例如,動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM))、可擦除可編程只讀存儲(chǔ)器(EPR0M)、閃存、電可擦除可編程只讀存儲(chǔ)器(EEPR0M)、磁卡或光卡之類(lèi)的半導(dǎo)體設(shè)備,或者適合于存儲(chǔ)電子指令的任何其它類(lèi)型的介質(zhì)。
[0046]雖然已經(jīng)參照有限數(shù)量的實(shí)施例描述了本發(fā)明,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,可以對(duì)其進(jìn)行各種的修改和變化。所附權(quán)利要求書(shū)旨在覆蓋落入本發(fā)明的真實(shí)精神和范圍之內(nèi)的所有這樣的修改和變形。
【權(quán)利要求】
1.一種方法,包括: 注冊(cè)當(dāng)在系統(tǒng)的組件中發(fā)生功率狀態(tài)轉(zhuǎn)換事件時(shí)要被調(diào)用的功率分布圖描繪器; 分配用于存儲(chǔ)與所述功率狀態(tài)轉(zhuǎn)換事件有關(guān)的信息的緩沖區(qū);以及 在發(fā)生所述功率狀態(tài)轉(zhuǎn)換事件時(shí),讀取系統(tǒng)計(jì)數(shù)器值和所述組件的一個(gè)或多個(gè)低功率狀態(tài)中的每一個(gè)低功率狀態(tài)的計(jì)數(shù)器值,并將所述系統(tǒng)計(jì)數(shù)器值和一個(gè)或多個(gè)計(jì)數(shù)器值寫(xiě)入所述緩沖區(qū)中。
2.根據(jù)權(quán)利要求1所述的方法,還包括: 在沒(méi)有發(fā)生中斷或定時(shí)器到期的情況下,讀取所述系統(tǒng)計(jì)數(shù)器值和多個(gè)計(jì)數(shù)器值。
3.根據(jù)權(quán)利要求2所述的方法,還包括: 將控制權(quán)從操作系統(tǒng)(OS)傳遞到所述功率分布圖描繪器的設(shè)備驅(qū)動(dòng)程序的收集函數(shù),以讀取所述系統(tǒng)計(jì)數(shù)器值和所述多個(gè)計(jì)數(shù)器值。
4.根據(jù)權(quán)利要求3所述的方法,還包括: 在所述OS的跟蹤點(diǎn)中,插入對(duì)所述收集函數(shù)的調(diào)用。
5.根據(jù)權(quán)利要求1所述的方法,還包括: 針對(duì)多個(gè)功率狀態(tài)轉(zhuǎn)換事件中的每一個(gè)功率狀態(tài)轉(zhuǎn)換事件,讀取所述系統(tǒng)計(jì)數(shù)器值和多個(gè)計(jì)數(shù)器值,以及針對(duì)所述多個(gè)功率狀態(tài)轉(zhuǎn)換事件中的每一個(gè)功率狀態(tài)轉(zhuǎn)換事件,將所述系統(tǒng)計(jì)數(shù)器值和所述多個(gè)計(jì) 數(shù)器值寫(xiě)入所述緩沖區(qū)。
6.根據(jù)權(quán)利要求5所述的方法,還包括: 基于在第一功率狀態(tài)轉(zhuǎn)換事件和第二功率狀態(tài)轉(zhuǎn)換事件時(shí)讀取的所述系統(tǒng)計(jì)數(shù)器值,來(lái)確定所述第一功率狀態(tài)轉(zhuǎn)換事件和所述第二功率狀態(tài)轉(zhuǎn)換事件之間的流逝時(shí)間,以及基于在所述第一功率狀態(tài)轉(zhuǎn)換事件和所述第二功率狀態(tài)轉(zhuǎn)換事件時(shí)讀取的所述多個(gè)計(jì)數(shù)器值,來(lái)確定在所述第一功率狀態(tài)轉(zhuǎn)換事件之后所進(jìn)入的低功率狀態(tài)的持續(xù)時(shí)間和類(lèi)型。
7.根據(jù)權(quán)利要求6所述的方法,還包括: 確定在所述第一功率狀態(tài)轉(zhuǎn)換事件和所述第二功率狀態(tài)轉(zhuǎn)換事件時(shí)讀取的所述系統(tǒng)計(jì)數(shù)器值之間的差。
8.根據(jù)權(quán)利要求6所述的方法,還包括: 向請(qǐng)求所述第一功率狀態(tài)轉(zhuǎn)換事件的操作系統(tǒng)提供包括所述持續(xù)時(shí)間和所述低功率狀態(tài)類(lèi)型的信息。
9.根據(jù)權(quán)利要求8所述的方法,還包括: 修改所述操作系統(tǒng)的行為,其中所述操作系統(tǒng)請(qǐng)求所述第一功率狀態(tài)轉(zhuǎn)換事件為一種不同的類(lèi)型,所述組件將所述請(qǐng)求重寫(xiě)為與所述低功率狀態(tài)類(lèi)型相對(duì)應(yīng)的一種不同的低功率狀態(tài)。
10.根據(jù)權(quán)利要求6所述的方法,還包括: 在表中記錄所述流逝時(shí)間、所述持續(xù)時(shí)間和所述低功率狀態(tài)類(lèi)型。
11.一種包括機(jī)器可訪問(wèn)存儲(chǔ)介質(zhì)的制品,所述機(jī)器可訪問(wèn)存儲(chǔ)介質(zhì)包括在被執(zhí)行時(shí)使系統(tǒng)執(zhí)行下面操作的指令: 在不存在定時(shí)器到期或不存在中斷觸發(fā)的情況下,在針對(duì)多核處理器的核心發(fā)生第一方向的多個(gè)功率狀態(tài)轉(zhuǎn)換事件中的每一個(gè)功率狀態(tài)轉(zhuǎn)換事件時(shí),讀取所述核心的系統(tǒng)計(jì)數(shù)器的值和所述核心的多個(gè)低功率計(jì)數(shù)器中的每一個(gè)低功率計(jì)數(shù)器的值;將針對(duì)所述多個(gè)功率狀態(tài)轉(zhuǎn)換事件中的每一個(gè)功率狀態(tài)轉(zhuǎn)換事件的系統(tǒng)計(jì)數(shù)器值和多個(gè)低功率計(jì)數(shù)器值存儲(chǔ)在所述多核處理器的存儲(chǔ)器中;以及 在所述多個(gè)功率狀態(tài)轉(zhuǎn)換事件之后,訪問(wèn)所述存儲(chǔ)器,以使用所存儲(chǔ)的系統(tǒng)計(jì)數(shù)器值和所存儲(chǔ)的多個(gè)低功率計(jì)數(shù)器值來(lái)確定所述多核處理器的功率分布圖。
12.根據(jù)權(quán)利要求11所述的制品,還包括在被執(zhí)行時(shí)使所述系統(tǒng)能夠執(zhí)行下面操作的指令: 基于在第一功率狀態(tài)轉(zhuǎn)換事件和第二功率狀態(tài)轉(zhuǎn)換事件時(shí)讀取的所述系統(tǒng)計(jì)數(shù)器值,來(lái)確定所述第一功率狀態(tài)轉(zhuǎn)換事件和所述第二功率狀態(tài)轉(zhuǎn)換事件之間的流逝時(shí)間,以及基于在所述第一功率狀態(tài)轉(zhuǎn)換事件和所述第二功率狀態(tài)轉(zhuǎn)換事件時(shí)讀取的所述多個(gè)低功率計(jì)數(shù)器值,來(lái)確定在所述第一功率狀態(tài)轉(zhuǎn)換事件之后所進(jìn)入的低功率狀態(tài)的持續(xù)時(shí)間和類(lèi)型。
13.根據(jù)權(quán)利要求12所述的制品,還包括在被執(zhí)行時(shí)使所述系統(tǒng)能夠執(zhí)行下面操作的指令: 在表中記錄所述流逝時(shí)間、所述持續(xù)時(shí)間和所述低功率狀態(tài)類(lèi)型,以及向請(qǐng)求所述第一功率狀態(tài)轉(zhuǎn)換事件的操作系統(tǒng)提供包括所述持續(xù)時(shí)間和所述低功率狀態(tài)類(lèi)型的信息。
14.根據(jù)權(quán)利 要求13所述的制品,還包括在被執(zhí)行時(shí)使所述系統(tǒng)能夠執(zhí)行下面操作的指令: 當(dāng)所述多個(gè)功率狀態(tài)轉(zhuǎn)換事件中的每一個(gè)功率狀態(tài)轉(zhuǎn)換事件發(fā)生時(shí),從通知機(jī)制調(diào)用功率分布圖描繪器的函數(shù),以讀取所述系統(tǒng)計(jì)數(shù)器值和所述多個(gè)低功率計(jì)數(shù)器值。
15.根據(jù)權(quán)利要求14所述的制品,還包括在被執(zhí)行時(shí)使所述系統(tǒng)能夠執(zhí)行下面操作的指令: 分配用于存儲(chǔ)所述系統(tǒng)計(jì)數(shù)器值和所述多個(gè)低功率計(jì)數(shù)器值的緩沖區(qū)。
16.根據(jù)權(quán)利要求11所述的制品,還包括在被執(zhí)行時(shí)使所述系統(tǒng)能夠執(zhí)行下面操作的指令: 將控制權(quán)從操作系統(tǒng)傳遞到所述功率分布圖描繪器的設(shè)備驅(qū)動(dòng)程序的收集函數(shù),以讀取所述系統(tǒng)計(jì)數(shù)器值和所述多個(gè)低功率計(jì)數(shù)器值。
17.—種系統(tǒng),包括: 多核處理器,其包括多個(gè)核心,每個(gè)核心包括前端邏輯單元、亂序邏輯單元、后端邏輯單元、用于存儲(chǔ)周期計(jì)數(shù)的時(shí)間戳計(jì)數(shù)器以及多個(gè)低功率狀態(tài)計(jì)數(shù)器,所述多個(gè)低功率狀態(tài)計(jì)數(shù)器中的每一個(gè)低功率狀態(tài)計(jì)數(shù)器用于對(duì)該核心處于相應(yīng)的低功率狀態(tài)的周期進(jìn)行計(jì)數(shù);以及 功率分布圖描繪器,用于針對(duì)所述多核處理器的一個(gè)或多個(gè)低功率狀態(tài)中的每一個(gè)低功率狀態(tài),讀取所述時(shí)間戳計(jì)數(shù)器和所述多個(gè)低功率狀態(tài)計(jì)數(shù)器,并將所述時(shí)間戳計(jì)數(shù)器的值和所述多個(gè)低功率狀態(tài)計(jì)數(shù)器的值寫(xiě)入緩沖區(qū)中。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),其中,所述功率分布圖描繪器用于針對(duì)第一方向的連續(xù)多個(gè)功率狀態(tài)轉(zhuǎn)換事件,讀取所述時(shí)間戳計(jì)數(shù)器和所述多個(gè)低功率狀態(tài)計(jì)數(shù)器。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中所述功率分布圖描繪器用于在不存在定時(shí)器到期或不存在中斷觸發(fā)的情況下讀取所述時(shí)間戳計(jì)數(shù)器和所述多個(gè)低功率狀態(tài)計(jì)數(shù)器。
20.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述功率分布圖描繪器包括由操作系統(tǒng)的通知機(jī)制調(diào)用的收集函數(shù),所述通知機(jī)制在進(jìn)入所述一個(gè)或多個(gè)低功率狀態(tài)中的每一個(gè)低功率狀態(tài)的功率狀態(tài)轉(zhuǎn)換事 件期間執(zhí)行。
【文檔編號(hào)】G06F1/32GK103443737SQ201180069528
【公開(kāi)日】2013年12月11日 申請(qǐng)日期:2011年12月30日 優(yōu)先權(quán)日:2011年3月24日
【發(fā)明者】R·奈特 申請(qǐng)人:英特爾公司