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