專利名稱:用于動態(tài)優(yōu)化的程序階段檢測的制作方法
用于動態(tài)優(yōu)化的程序階段檢測技術領域本實施例涉及可管理的運行時計算機系統(tǒng)環(huán)境技術,更具體地, 涉及通過階段檢測進行的動態(tài)優(yōu)化。
背景技術:
設計成運行于可管理的運ft時環(huán)境(MRTE)的計算機程序是以中 性字節(jié)碼的格式分發(fā)的,且這些程序必須由動態(tài)編譯器編譯成本地機 器碼。受到管理的應用程序的性能取決于由編譯器執(zhí)行的優(yōu)化和代碼 生成的質量??蓪⑾到y(tǒng)利用率監(jiān)視用于確定何時需要優(yōu)化各種應用程 序。隨著運行在系統(tǒng)上的應用程序的數(shù)量的增加,對應用程序優(yōu)化的 需要也隨之增加了。許多微處理器結構依賴于編譯器的性能優(yōu)化。某些結構的性能非 常依賴于昂貴和復雜的代碼生成優(yōu)化(如全局調度和控制預測)。為優(yōu)化可執(zhí)行代碼,使用了性能反饋和優(yōu)化技術。這些技術的問 題是,它們通常通過硬件實施或是專用的,因此并不適于動態(tài)優(yōu)化或 軟件實施。而且,許多優(yōu)化要求等待-觀察的方法,因為要試驗不同 的優(yōu)化標準來實現(xiàn)優(yōu)化。這個過程相當耗時,而且由于系統(tǒng)利用的變 化,可能僅能在短時間內優(yōu)化應用程序。
在附圖的各幅圖中,通過舉例而非限制的方式說明了本發(fā)明的實 施例,其中,相似的附圖標記指示相似的組件。應當注意,在本公開 中,本發(fā)明的"某一"實施例不一定指相同的實施例,且它們意味著 至少一個實施例。
圖1示出了用于檢測穩(wěn)定的程序階段(phase)的進程(process)的 一個實施例。
圖2示出了分支跟蹤緩沖區(qū)(BTrB)的樣本地址隨時間的實例緩 沖區(qū)的圖。
圖3示出了對應于兩個已檢測階段的直方圖。
圖4示出了使用圖2中的數(shù)據(jù)時檢測到的階段序列。
圖5示出了一個系統(tǒng)的實施例。
圖6示出了與另一系統(tǒng)耦合的系統(tǒng)的實施例。
具體實施例方式
本文討論的實施例通常涉及一種用于動態(tài)檢測穩(wěn)定進程階段的 方法和系統(tǒng)。參考附圖,下面將描述一些示范實施例。這些示范實施 例用于說明實施例,且不應當將它們視為對實施例范圍的限制。
具有動態(tài)檔案導引優(yōu)化(例如可管理的運行時環(huán)境、動態(tài)二進 制優(yōu)化器、以及動態(tài)二進制翻譯器)的系統(tǒng)試圖確定何時動態(tài)地重新 優(yōu)化正在執(zhí)行的程序。圖1示出了用于可執(zhí)行代碼的動態(tài)優(yōu)化的、檢 測穩(wěn)定程序階段的進程的一個實施例。在框110處,進程100以選擇 階段閾值開始。該階段閾值可以是在時間t采集的分支地址的M個 連續(xù)樣本的函數(shù)。在一個實施例中,用戶選擇上述階段閾值,并將該 值作為進程中的預定靜態(tài)參數(shù)輸入。也可通過用戶輸入裝置動態(tài)修改 階段閾值。
進程100繼續(xù)進行到框120。在框120中,接收多個經(jīng)過排序的 緩沖區(qū)(buffer)。在一個實施例中,性能監(jiān)視單元(PMU)收集經(jīng)過排序 的分支跟蹤緩沖區(qū)(BTrB)??梢詫⑦@些經(jīng)過排序的緩沖區(qū)存儲在本地 存儲器或文件中。所接收的緩沖區(qū)包括所取得的最后L個分支的地 址。L的值可以是預定的或是由用戶選定(如4、 8、 10等)。所取得的 分支地址的緩沖區(qū)對應于特定的采樣時刻。圖2示出了在執(zhí)行諸如基 準程序的實例程序期間,BTrB才羊本地址的實例緩沖區(qū)隨時間的圖。在框120完成后,進程100繼續(xù)進行到框130???30確定在至 少兩個連續(xù)直方圖區(qū)間的中心之間的距離。在一個實施例中,分支地 址的向量如下確定bt=(bt,lv..ba)T,它代表在時間t的單個BTrB樣本 的分支地址的向量。Bt-bt,bw,...btM是某一時刻可用的M個連續(xù)樣本 的緩沖區(qū)。M是預定的或由用戶動態(tài)調整,如1000、 1400、 1820, 等等。穩(wěn)定階段定義為Bt的一維直方圖,并被標注為H產(chǎn)[ht,i,...ht,w;T。 直方圖Ht是大小為N的向量,其中N是直方圖區(qū)間的總數(shù)。Wlv..WN 是一組間隔相等且非重疊的直方圖區(qū)間,它們覆蓋了可能分支地址的 整個空間。AW-Wk-Wk,,是兩個連續(xù)直方圖區(qū)間的中心之間的距離。 在一個實施例中,用歐幾里得3巨離計算方法來測量距離,即距離(Hk,(V,-hLi)2,5。應當注意,在不偏離本實施例范圍情況下,也可以使用本技術領域已知的其他距離算法。在框130完成之后,框140將所確定的距離與階段閾值進行比 較。如果兩個連續(xù)直方圖區(qū)間之間的距離等于或大于階段閾值,則Bk 與B,中的樣本屬于不同的階段,否則這些樣本屬于相同的階段。因 此,根據(jù)比較的結果確定可執(zhí)4亍進程的主執(zhí)行階段。在框140完成之后,如果Bk與B,中的樣本屬于相同階段,則進 程IOO繼續(xù)進行到框150。在一個實施例中,設置指示相同階段的變 量。如果Bk與B,中的樣本屬于不同階段,則在一個實施例中,框145 設置指示不同階段的變量。在一個實施例中,框160發(fā)送信號,以便 重新優(yōu)化正在執(zhí)行的進程??蓪⒃撔盘柊l(fā)送到例如動態(tài)編譯器。應當注意,增加直方圖區(qū)間的距離寬度AW會粗化分辨率,并 會減少階段檢測進程100的復雜度。粗分辨率用于階段檢測,而細分 辨率用于熱跟蹤檢測。設置AW—,便將每個單個的分支地址放置在 不同的直方圖區(qū)間中。這樣,便創(chuàng)建了細粒度直方圖。創(chuàng)建細粒度直 方圖的結果是,減慢了階段檢測進程100,且可能增加階段的數(shù)量。
設置△ W>> 1 ,便將相同存儲區(qū)中的分支地址放置在相同的直方圖區(qū) 間中。這樣的結果是創(chuàng)建了粗粒度直方圖。創(chuàng)建粗粒直方圖加速了階段檢測進程100,并減少了階段的數(shù)量。通過改變AW,可以對不同 分辨率的直方圖作出分析。因而,可實現(xiàn)階段檢測開銷和階段檢測精 度之間的動態(tài)折中。在一個實施例中,進程100的主執(zhí)行階段的確定 是以預定周期速度執(zhí)行的動態(tài)進程。例如,可用選定的速度(如每5 分鐘、每小時、每24小時等)執(zhí)行進程100。在另一個實施例中,進 程100是人工執(zhí)行的,因為它是由用戶選擇的。為了舉例,圖2示出在實例程序執(zhí)行期間BTrB樣本地址的實例 緩沖區(qū)隨時間的圖表具有以下設置L=4,M=1820,AW=105,且階段 閾值-0.4M。圖3示出了對應于兩個已檢測階段的直方圖,而圖4示 出了使用圖2中的數(shù)據(jù)時所檢測的階段序列(對37個數(shù)據(jù)塊而言)??梢栽诓捎脛討B(tài)檔案導引優(yōu)化(如MRTE、動態(tài)二進制優(yōu)化器和 動態(tài)二進制翻譯器)的系統(tǒng)中應用進程100。這類系統(tǒng)包含硬件性能監(jiān) 視,且它們的性能依賴于檔案導引優(yōu)化。圖5示出了一個系統(tǒng)的實施例。系統(tǒng)500包括連接到存儲器520 的處理器510。在一個實施例中,存儲器520是諸如隨機存取存儲器 (RAM)、靜態(tài)隨機存取存儲器(SRAM)、動態(tài)隨機存取存儲器 (DRAM)、同步DRAM(SDRAM)、只讀存儲器(ROM)之類的主存儲 器。在另一個實施例中,存儲器520是高速緩沖存儲器。進程100采 用運行在處理器510中并與存儲器520進行通信的可執(zhí)行進程的形 式。在該實施例中,進程IOO是階段檢測器進程,該階段檢測器進程 確定運行在存儲器520中的另一個可執(zhí)行進程的主執(zhí)行階段。在系統(tǒng) 500中,進程100確定何時對運行在系統(tǒng)500中的另一可執(zhí)行進程進 行重新優(yōu)化。根據(jù)應用場合,可以將系統(tǒng)500與其他已知的組件進行 組合。例如,如果將系統(tǒng)500用于多處理器系統(tǒng)中,則可將其它多處 理器系統(tǒng)的典型的已知組件與系統(tǒng)500進行耦合。系統(tǒng)500可用于多種應用場合,如個人計算機(PC)、個人數(shù)字助理(PDA)、筆記本計算 機、服務器、MRTE、動態(tài)二進制優(yōu)化器、動態(tài)二進制翻譯器等。在 一個實施例中,階段#:測器進程100作為硬件單元存在,且該硬件單 元具有邏輯電路和用以接收緩沖區(qū)的接收器。如上所述,該階段檢測 器的邏輯組件包括用于執(zhí)行進程100所執(zhí)行的指令的電路。圖6示出了耦合到系統(tǒng)650的系統(tǒng)600。系統(tǒng)600包括至少一個 處理器610、編譯器620和存儲器640。根據(jù)應用場合,系統(tǒng)600也 包括其它諸如多處理器系統(tǒng)、PC、 PDA等的典型系統(tǒng)的組件。編譯 器620是動態(tài)編譯器。系統(tǒng)650包括處理器670、存儲器680和編譯 器660。在一個實施例中,編譯器620和660是動態(tài)編譯器。在一個 實施例中,進程100采用運行在系統(tǒng)600或650中的可執(zhí)行進程的形 式。在本實施例中,進程IOO是階段檢測器進程,該階段檢測器進程 確定在系統(tǒng)600和/或650中運行的另一個可執(zhí)行進程的主執(zhí)行階 段。也就是說,進程100可以在系統(tǒng)600中運行,以檢測系統(tǒng)650中 的主執(zhí)行階段,和/或進程100可以在系統(tǒng)650中運行,以檢測系統(tǒng) 600中的主執(zhí)行階段。系統(tǒng)600和650可以同處一地,可以是分布式 系統(tǒng)或聯(lián)網(wǎng)的系統(tǒng)。在一個實施例中,存儲器640和存儲器680均可 以是主存儲器(例如隨機存取存儲器(RAM)、靜態(tài)隨機存取存儲器 (SRAM)、動態(tài)隨機存取存儲器(DRAM)、同步DRAM(SDRAM)、只 讀存儲器(ROM)等)或高速緩沖存儲器。在一個實施例中,階段檢測 器是具有邏輯電路和用于接收緩沖區(qū)的接收器的硬件單元。如上所 述,上述階段檢測器的邏輯組件包括用于執(zhí)行進程100所執(zhí)行的指令 的電路。也可將以上實施例存儲在裝置或機器可讀介質上,并通過機器讀 取來執(zhí)行指令。機器可讀介質包括提供(即存儲和/或傳送)以機器(例 如計算機)可讀形式的信息的任何機構。例如,機器可讀介質包括只 讀存儲器(ROM),隨機存取存儲器(RAM),磁盤存儲介質,光存儲介
質,閃存裝置,生物電路、機械系統(tǒng),電、光、聲或其它形式的傳播 信號(例如,載波、紅外信號、凄丈字信號等)。上述裝置或機器可讀介 質可包括微機電系統(tǒng)(MEMS)、納米技術裝置、有機物裝置、全息裝 置、固態(tài)存儲裝置和/或旋轉磁盤或光盤。當指令的各個部分已分別 保存在不同的機器中(如分別保存在相互連接的計算機中)時,可將裝 置或機器可讀介質分布設置。
盡管已描述了 一些特定的示范實施例,并在附圖中示出了這些實 施例,但是,仍應當理解,這些實施例僅僅是對本發(fā)明的解釋,而不 對其構成限制,并且本發(fā)明不限于所示和所述的特定結構和配置,因 為對本領域的普通技術人員而言,可以對上述實施例進行各種其他的 修改。
權利要求
1. 一種方法,包括 選擇階段閾值,接收多個經(jīng)過排序的緩沖區(qū),確定在至少兩個連續(xù)直方圖區(qū)間的中心之間的距離, 將所述距離與所述選擇的閾值進行比較,以及 根椐所述比較來確定可執(zhí)行進程的主執(zhí)行階段。
2. 如權利要求1所述的方法,所述多個經(jīng)過排序的援沖區(qū)包括 多個樣本,所述樣本包含在某一采樣時間取得的多個分支的地址。
3. 如權利要求1所述的方法,還包括 確定代表分支跟蹤緩沖區(qū)的多個分支地址, 確定代表所述分支跟蹤緩沖區(qū)的多個連續(xù)分支地址, 為所述多個連續(xù)分支地址確定穩(wěn)定階段直方圖,以及為所有可能的分支地址確定多個間隔相等且非重疊的直方圖區(qū)間。
4. 如權利要求1所述的方法,其中所述確定主執(zhí)行階段的結果 發(fā)信號要求動態(tài)編譯可執(zhí)行代碼,以便優(yōu)化所述可執(zhí)行代碼。
5. 如權利要求l所述的方法,還包括確定所述至少兩個連續(xù)直方圖區(qū)間是否處于相同的階段。
6. 如權利要求5所述的方法,如果所述距離比等于和小于所述 選擇的階段閾值其中之一要小,則所述至少兩個連續(xù)直方圖處于相同 階段。
7. —種包括機器可讀介質的設備,所述機器可讀介質包含指 令,當機器執(zhí)行所述指令時,使得所述機器執(zhí)行以下操作選擇階段閾值,接收多個經(jīng)過排序的緩沖區(qū),確定代表分支跟蹤緩沖區(qū)的多個分支地址, 確定在至少兩個連續(xù)直方圖區(qū)間的中心之間的距離,其中所述至 少兩個直方圖區(qū)間是非重疊的,以及將所述距離與所述選擇的閾值進行比較。
8. 如權利要求7所述的設備,還包括指令,當機器執(zhí)行所述指 令時,使得所述機器執(zhí)行以下操作確定代表所述分支跟蹤緩沖區(qū)的多個連續(xù)分支地址, 為所述多個連續(xù)分支地址確定穩(wěn)定階段直方圖, 為所有可能的分支地址確定多個間隔相等且非重疊的直方圖區(qū) 間,以及根據(jù)所述比較確定可執(zhí)行進程的主執(zhí)行階段。
9. 如權利要求8所述的設備,其中所述確定主執(zhí)行階段以預定 的周期速度動態(tài)變化。
10. 如權利要求8所述的設備,其中所述確定主執(zhí)行階段是以人 工方式開始的。
11. 如權利要求7所述的設備,所述多個經(jīng)過排序的緩沖區(qū)包括 多個樣本,所述樣本包含在某一采樣時間取得的多個分支的地址。
12. 如權利要求7所述的設備,其中所述確定主執(zhí)行階段的指令 的結果發(fā)信號要求動態(tài)編譯可執(zhí)行代碼,以便優(yōu)化所述可執(zhí)行代碼。
13. 如權利要求7所述的設備,還包括指令,當機器執(zhí)行所述指 令時,使得所述機器執(zhí)行以下操作確定所述至少兩個連續(xù)直方圖區(qū)間是否處于相同的階段。
14. 如權利要求13所述的設備,如果所述距離比等于和小于所 述選擇的階段閾值的其中之一小,則所述至少兩個連續(xù)直方圖處于相 同階段。
15. —種系統(tǒng),包括耦合到主存儲器和高速緩沖存儲器其中之一的處理器,與所述存儲器通信的至少一個進程,以及確定所述至少 一個進程的主執(zhí)行階段的階段檢測器。
16. 如權利要求15所述的系統(tǒng),所述確定的主執(zhí)行階段用于確定何時重新優(yōu)化所述進程。
17. 如權利要求15所述的系統(tǒng),所述階段檢測器包括用于接收 多個經(jīng)過排序的緩沖區(qū)的接收器,其中所述階段檢測器用于確定代表分支跟蹤緩沖區(qū)的多個分支 地址,確定在至少兩個連續(xù)直方圖區(qū)間的中心之間的距離,其中所述至 少兩個直方圖區(qū)間是非重疊的,以及 將所述距離與預定的閾值進行比較。
18. 如權利要求17所述的系統(tǒng),所述階段檢測器具有邏輯電路, 用來確定代表所述分支跟蹤緩沖區(qū)的多個連續(xù)分支地址, 為所述多個連續(xù)分支地址確定穩(wěn)定階段直方圖,以及為所有可能的分支地址確定多個間隔相等且非重疊的直方圖區(qū)間。
19. 如權利要求15所述的系統(tǒng),其中所述階段檢測器具有以預 定的周期速度動態(tài)地確定主執(zhí)《亍階段的邏輯電路。
20. 如權利要求17所述的系統(tǒng),所述多個經(jīng)過排序的緩沖區(qū)包 括多個樣本,所述樣本包含在某一采樣時間取得的多個分支的地址。
21. —種系統(tǒng),包括第一裝置,具有耦合到第一存儲器的第一處理器和至少一個與所 述第一存儲器通信的進程,以及第二裝置,具有耦合到第二存儲器的第二處理器和至少另 一個與 所述第二存儲器通信的進程,其中階段檢測器進程在所述第一處理器和所述第二處理器其中 之一中工作,以便確定所述第一裝置和所述第二裝置其中之一內的所 述一個進程和所述另一個進程其中之一的主執(zhí)行階段。
22. 如權利要求21所述的系統(tǒng),所述主執(zhí)行階段用于確定何時 重新優(yōu)化所述一個進程和所述另 一個進程。
23. 如權利要求21所述的系統(tǒng),所述階段檢測器具有邏輯電路, 用來接收多個經(jīng)過排序的緩沖區(qū), 確定代表分支跟蹤緩沖區(qū)的多個分支地址, 確定在至少兩個連續(xù)直方圖區(qū)間的中心之間的距離,其中所述至 少兩個直方圖區(qū)間是非重疊的,以及 將所述距離與預定的閾值進行比較。
24. 如權利要求23所述的系統(tǒng),所述階段檢測器具有邏輯電路, 用來確定代表所述分支跟蹤緩沖區(qū)的多個連續(xù)分支地址,為所述多個連續(xù)分支地址確定穩(wěn)定階段直方圖,以及為所有可能的分支地址確定多個間隔相等且非重疊的直方圖區(qū)間。
25. 如權利要求21所述的系統(tǒng),其中所述階段檢測器具有以預 定的周期速度動態(tài)確定主執(zhí)行階段的邏輯電路。
26. 如權利要求23所述的系統(tǒng),所述多個經(jīng)過排序的緩沖區(qū)包 括多個樣本,所述樣本包含在某一采樣時間取得的多個分支的地址。
全文摘要
一種方法、裝置和系統(tǒng),包括選擇階段閾值,接收多個經(jīng)過排序的緩沖區(qū),確定至少兩個連續(xù)直方圖區(qū)間的中心之間的距離,將該距離與選定的閾值進行比較,并根據(jù)該比較確定可執(zhí)行進程的主執(zhí)行階段。
文檔編號G06F9/45GK101124550SQ200580009418
公開日2008年2月13日 申請日期2005年3月30日 優(yōu)先權日2004年3月31日
發(fā)明者A·-R·阿德爾-塔巴塔拜, A·V·內費安 申請人:英特爾公司