国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于多輪次動態(tài)概要分析的方法及其系統(tǒng)的制作方法

      文檔序號:6606308閱讀:178來源:國知局
      專利名稱:用于多輪次動態(tài)概要分析的方法及其系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明的領(lǐng)域涉及編譯器。更具體地,本發(fā)明的領(lǐng)域涉及用于便于多輪次和多目 的動態(tài)分析的編譯器編制(instrumentation)基礎(chǔ)結(jié)構(gòu)。
      背景技術(shù)
      編譯器是一種用來將以高級編程語言編寫的計算機程序轉(zhuǎn)換為由計算機系統(tǒng)中 的一個或多個中央處理單元(CPU)執(zhí)行的機器代碼的工具。取決于編譯器如何執(zhí)行這一轉(zhuǎn) 換,得到的程序可能在計算機上以不同的速度執(zhí)行,和/或需要較多或較少的系統(tǒng)存儲器 以及較多或較少的存儲空間。已經(jīng)進行了很多工作以創(chuàng)建編譯器,該編譯器不僅僅創(chuàng)建從源代碼到機器代碼的 直接轉(zhuǎn)換。這種編譯器通常稱為優(yōu)化編譯器。優(yōu)化編譯器對源代碼進行分析,并且實現(xiàn)可 以在目標(biāo)計算機系統(tǒng)上更為有效執(zhí)行的策略。在此上下文中,“優(yōu)化” 一般是指通過選擇性 地修改如何編譯源代碼來改善計算機代碼的速度和效率。盡管優(yōu)化編譯器可以利用諸如循環(huán)變換或者數(shù)據(jù)重映射等多種技術(shù)來產(chǎn)生有效 的機器代碼,但是計算機硬件的進步為編譯器設(shè)計者帶來了新的挑戰(zhàn)。具體地,CPU設(shè)備的 時鐘速度近年來處于增長中,而系統(tǒng)存儲器速度卻已經(jīng)落后。不加管理的情況下,這一速度 差異(通常是指存儲器滯后)導(dǎo)致在從系統(tǒng)存儲器讀取數(shù)據(jù)或者向系統(tǒng)存儲器寫入數(shù)據(jù)時 CPU閑置等待。在編譯器中使用的一種優(yōu)化策略是改善高速緩存使用(以及由此改善執(zhí)行 時間),以及減少在程序執(zhí)行期間發(fā)生的高速緩存未命中的數(shù)目。

      發(fā)明內(nèi)容
      本發(fā)明的一個實施方式包括一種用于多輪次動態(tài)概要分析(profiling)的 方法,包括配置一個或多個處理器來執(zhí)行操作。所述操作通常可以包括利用注解 (annotation)來編制應(yīng)用的多個代碼區(qū),以便在鏈接和執(zhí)行該代碼區(qū)時生成概要分析數(shù) 據(jù);執(zhí)行所述應(yīng)用以生成針對所述多個代碼區(qū)中每一個的概要分析數(shù)據(jù);以及根據(jù)所述概 要分析數(shù)據(jù),標(biāo)識來自所生成概要分析數(shù)據(jù)的瑕疵代碼區(qū)。所述瑕疵代碼區(qū)通常代表高速 緩存未命中的計數(shù)超過預(yù)定義閾值的代碼區(qū)。所述操作可以進一步包括利用注解來編制 瑕疵代碼區(qū),以便在鏈接和執(zhí)行該代碼區(qū)時生成概要分析數(shù)據(jù);執(zhí)行所述應(yīng)用,以生成針對 包括所述瑕疵代碼區(qū)在內(nèi)的多個代碼區(qū)的附加概要分析數(shù)據(jù);以及根據(jù)所述附加概要分析 數(shù)據(jù)來標(biāo)識所述瑕疵代碼區(qū)的子區(qū)。所述方法還可以包括優(yōu)化所標(biāo)識的子區(qū)。本發(fā)明的另一實施方式包括一種包含程序的計算機可讀存儲介質(zhì),當(dāng)所述程序在 處理器上執(zhí)行時,其執(zhí)行用于多輪次動態(tài)概要分析的操作。所述操作通??梢园ɡ米?解來編制應(yīng)用的多個代碼區(qū),以便在鏈接和執(zhí)行該代碼區(qū)時生成概要分析數(shù)據(jù);執(zhí)行具有 經(jīng)編制代碼區(qū)的所述應(yīng)用,以生成針對所述多個代碼區(qū)中每一個的概要分析數(shù)據(jù);以及根 據(jù)所述概要分析數(shù)據(jù),標(biāo)識來自所生成概要分析數(shù)據(jù)的瑕疵代碼區(qū)。所述瑕疵代碼區(qū)通常 代表高速緩存未命中的計數(shù)超過預(yù)定義閾值的代碼區(qū)。所述操作可以進一步包括利用注解來編制瑕疵代碼區(qū),以便在鏈接和執(zhí)行該代碼區(qū)時生成概要分析數(shù)據(jù);執(zhí)行具有經(jīng)編制 代碼區(qū)的所述應(yīng)用,以生成針對包括所述瑕疵代碼區(qū)在內(nèi)的多個代碼區(qū)的附加概要分析數(shù) 據(jù);以及根據(jù)所述附加概要分析數(shù)據(jù)來標(biāo)識所述瑕疵代碼區(qū)的子區(qū)。所述操作還可以包括 優(yōu)化所標(biāo)識的子區(qū)。本發(fā)明的又一實施方式包括一種系統(tǒng),其具有處理器和包含程序的存儲器,當(dāng)所 述程序由處理器執(zhí)行時,其執(zhí)行用于多輪次動態(tài)概要分析的操作。所述操作通??梢园?利用注解來編制應(yīng)用的多個代碼區(qū),以便在鏈接和執(zhí)行該代碼區(qū)時生成概要分析數(shù)據(jù);執(zhí) 行具有經(jīng)編制代碼區(qū)的所述應(yīng)用,以生成針對所述多個代碼區(qū)中每一個的概要分析數(shù)據(jù); 以及根據(jù)所述概要分析數(shù)據(jù),標(biāo)識來自所生成概要分析數(shù)據(jù)的瑕疵代碼區(qū)。所述瑕疵代碼 區(qū)通常代表高速緩存未命中的計數(shù)超過預(yù)定義閾值的代碼區(qū)。所述操作可以進一步包括 利用注解來編制瑕疵代碼區(qū),以便在鏈接和執(zhí)行該代碼區(qū)時生成概要分析數(shù)據(jù)的注解;執(zhí) 行具有經(jīng)編制代碼區(qū)的所述應(yīng)用,以生成針對包括所述瑕疵代碼區(qū)在內(nèi)的多個代碼區(qū)的附 加概要分析數(shù)據(jù);以及根據(jù)所述附加概要分析數(shù)據(jù)來標(biāo)識所述瑕疵代碼區(qū)的子區(qū)。所述方 法還可以包括優(yōu)化所標(biāo)識的子區(qū)。


      可以通過參考附圖中示出的本發(fā)明的實施方式,對上文概括的發(fā)明進行更為具體 的描述,從而詳細(xì)理解本發(fā)明的上述特征、優(yōu)點和目的的實現(xiàn)方式。然而,應(yīng)當(dāng)注意,附圖僅僅示出了本發(fā)明的典型實施方式,因此不應(yīng)被解釋為對本 發(fā)明范圍的限制,因為本發(fā)明可以具有其他等效的實施方式。圖1是按照本發(fā)明的一個實施方式示出用于優(yōu)化應(yīng)用執(zhí)行的系統(tǒng)的框圖。圖2是按照本發(fā)明的一個實施方式示出圖1的多輪次概要分析器的組件的框圖。圖3是按照本發(fā)明的一個實施方式描繪用于從用戶的角度來優(yōu)化應(yīng)用執(zhí)行的方 法的流程圖。圖4是按照本發(fā)明的一個實施方式描繪用于優(yōu)化應(yīng)用執(zhí)行的方法的流程圖。圖5是按照本發(fā)明的一個實施方式描繪用于執(zhí)行多輪次動態(tài)概要分析的方法的 流程圖。圖6是按照本發(fā)明的一個實施方式描繪用于執(zhí)行多輪次動態(tài)概要分析的方法的 流程圖。
      具體實施例方式本發(fā)明的實施方式提供了一種用于多輪次(也即,多個編制周期)和多目的(也 即,支持多種類型的概要分析,諸如高速緩存未命中概要分析和調(diào)用敏感塊計數(shù)概要分析) 動態(tài)概要分析的通用編譯器編制基礎(chǔ)結(jié)構(gòu)。該基礎(chǔ)結(jié)構(gòu)支持多輪次概要分析,其中后面的 輪次可以使用來自先前輪次的概要分析數(shù)據(jù),以細(xì)化概要分析。在一個實施方式中,多輪次 概要分析器可以執(zhí)行粗略粒度的高速緩存未命中概要分析,以標(biāo)識瑕疵代碼區(qū)。瑕疵代碼 區(qū)是指產(chǎn)生的高速緩存未命中的數(shù)目大于高速緩存未命中的可接受閾值計數(shù)(這轉(zhuǎn)而可 能導(dǎo)致次優(yōu)的應(yīng)用性能)的代碼區(qū)。類似地,瑕疵存儲器引用是指產(chǎn)生的高速緩存未命中 的數(shù)目大于高速緩存未命中的可接受閾值計數(shù)的存儲器引用。多輪次概要分析器隨后可以
      5僅針對瑕疵代碼區(qū)內(nèi)的存儲器引用來執(zhí)行精細(xì)粒度的高速緩存未命中概要分析。例如,對 于高速緩存未命中概要分析,編譯器可以首先執(zhí)行粗略粒度的高速緩存未命中概要分析, 以標(biāo)識可能包含瑕疵加載(也即,可能導(dǎo)致高速緩存未命中的加載)的代碼區(qū);繼而在該代 碼區(qū)內(nèi)執(zhí)行精細(xì)粒度的高速緩存未命中,以精確地標(biāo)識個別瑕疵加載,也即,標(biāo)識源代碼的 哪行包括可能導(dǎo)致高速緩存未命中的存儲器引用。在此描述的編譯器基礎(chǔ)結(jié)構(gòu)可以使用具有靜態(tài)分析的多輪次概要分析,以降低應(yīng) 用的概要分析開銷。此外,該編譯器可以使用統(tǒng)一的內(nèi)部表示來注解瑕疵代碼區(qū),以及將代 碼的低級表示精確映射至代碼的高級表示。而且,多個編制周期改進了編譯器與概要分析 工具(諸如,性能庫包)之間的交互,以降低概要分析開銷并且改進優(yōu)化結(jié)果。例如,多個 編制周期允許對跨不同性能計數(shù)器群組的應(yīng)用特性進行概要分析。此外,多個編制周期允 許對諸如塊計數(shù)器概要分析、值概要分析和性能計數(shù)器概要分析等不同的概要分析機制進 行結(jié)合。編譯器中使用的優(yōu)化策略可以取決于程序的概要分析數(shù)據(jù)。概要分析數(shù)據(jù)可以通 過編譯時分析(稱為靜態(tài)概要分析)和/或運行時分析(稱為動態(tài)概要分析)來收集。涉 及概要分析的反饋(PDF)是指使用代表性的數(shù)據(jù)樣本對程序的執(zhí)行進行概要分析以便生 成該程序的概要分析數(shù)據(jù)的方法。編譯器繼而使用生成的概要分析數(shù)據(jù)來指導(dǎo)優(yōu)化。概要分析技術(shù)包括控制流概要分析、值概要分析以及性能計數(shù)器概要分析。控制 流概要分析可以進一步分類為頂點概要分析、邊概要分析以及路徑概要分析。頂點概要分 析測量代碼的每個基本塊在運行時期間執(zhí)行多少次。基本塊是連續(xù)操作的序列,其中控制 流在該序列的開始處進入,并且在該序列的末端離開,除了在序列末端之外不會出現(xiàn)停止 或者分支的可能。邊概要分析數(shù)據(jù)測量每個分支轉(zhuǎn)換在運行期間執(zhí)行多少次。路徑概要分 析測量每個路徑(也即,相關(guān)的分支)在運行時期間執(zhí)行多少次。值概要分析測量不變式、 可能的值以及變量的范圍(例如,用于分支預(yù)測目的)。性能計數(shù)器概要分析測量硬件性能 計數(shù)器,其跟蹤特定的硬件事件,諸如高速緩存未命中。通常,編譯器插入調(diào)用以調(diào)取由性 能庫包提供的應(yīng)用編程接口(API)。性能計數(shù)器概要分析可以用來確定應(yīng)用特定的度量, 諸如每指令周期(CPI)、每秒浮點運算(FLOPS)、每秒百萬指令(MIPS)以及高速緩存未命中 率。下面,將參考本發(fā)明的實施方式。然而,應(yīng)當(dāng)理解,本發(fā)明不限于特定的已描述實 施方式。相反,可以期待實現(xiàn)下面特征和元素(不論其是否涉及不同的實施方式)的任何組 合并且實踐本發(fā)明。此外,盡管本發(fā)明的實施方式可以實現(xiàn)優(yōu)于其他可能解決方案和/或 現(xiàn)有技術(shù)的優(yōu)勢,但是給定的實施方式是否實現(xiàn)了特定的優(yōu)點不是本發(fā)明的限制。由此,除 非在權(quán)利要求中明確記載,下面的方面、特征、實施方式和優(yōu)點僅僅是說明性的,并且不應(yīng) 被認(rèn)為是對所附權(quán)利要求的要素或者限制。同樣,除非在權(quán)利要求中明確記載,當(dāng)提及“本 發(fā)明”時不應(yīng)當(dāng)被認(rèn)為是對在此公開的任何發(fā)明主題的概括,并且不應(yīng)當(dāng)被認(rèn)為是所附權(quán) 利要求的要素或者限制。本發(fā)明的一個實施方式實現(xiàn)為用于與計算機系統(tǒng)結(jié)合使用的程序產(chǎn)品。程序產(chǎn)品 的程序定義了實施方式的功能(包括在此描述的方法),并且可以被包含在各種計算機可 讀存儲介質(zhì)上。示范性的計算機可讀存儲介質(zhì)包括但不限于(i)信息持久性存儲于其上 的不可寫存儲介質(zhì)(例如,計算機中的只讀存儲器設(shè)備,諸如CD-ROM驅(qū)動器可讀的CD-ROM盤);(ii)信息可變存儲的可寫存儲介質(zhì)(例如,盤盒驅(qū)動器中的軟盤或者硬盤驅(qū)動器)。 當(dāng)攜帶指示本發(fā)明的功能的計算機可讀指令時,這種計算機可讀存儲介質(zhì)是本發(fā)明的實施 方式。其他介質(zhì)包括用來向計算機傳遞信息的通信介質(zhì),諸如通過計算機或者電話網(wǎng)絡(luò),包 括無線通信網(wǎng)絡(luò)。后面的實施方式特別地包括傳輸去往/來自因特網(wǎng)和其他網(wǎng)絡(luò)的信息。 當(dāng)承載涉及本發(fā)明的功能的計算機可讀指令時,這種通信介質(zhì)是本發(fā)明的實施方式。廣義 來講,計算機可讀存儲介質(zhì)和通信介質(zhì)在此可以稱為計算機可讀介質(zhì)。一般地,執(zhí)行以實現(xiàn)本發(fā)明實施方式的例程可以是操作系統(tǒng)或特定應(yīng)用的部分、 組件、程序、模塊、對象或者指令序列。本發(fā)明的計算機程序通常包括多個指令,這些指令將 由本機計算機轉(zhuǎn)譯為機器可讀格式,并且由此是可執(zhí)行指令。而且,程序包括變量和數(shù)據(jù)結(jié) 構(gòu),其相對于程序本地駐留,或者存在于存儲器中或存儲設(shè)備上。而且,此后描述的各種程 序可以基于應(yīng)用來標(biāo)識,這些程序在本發(fā)明的特定實施方式中針對這些應(yīng)用而被實現(xiàn)。然 而,應(yīng)當(dāng)理解,下面的任何特定程序命名法都僅僅是為了方便而使用,由此,本發(fā)明不應(yīng)限 于僅在這種命名法所標(biāo)識和/或暗示的任何特定應(yīng)用中使用。圖1是按照本發(fā)明的一個實施方式示出用于優(yōu)化應(yīng)用執(zhí)行的系統(tǒng)100的框圖。聯(lián) 網(wǎng)的系統(tǒng)100包括計算機102。計算機102可以經(jīng)由網(wǎng)絡(luò)130連接至其他計算機。一般地, 網(wǎng)絡(luò)130可以是電信網(wǎng)絡(luò)和/或廣域網(wǎng)(wan)。在特定實施方式中,網(wǎng)絡(luò)130是因特網(wǎng)。計算機102通常包括處理器104,其經(jīng)由總線112連接至存儲器106、網(wǎng)絡(luò)接口設(shè) 備110、存儲108、輸入設(shè)備114和輸出設(shè)備116。計算機102通常在操作系統(tǒng)(未示出)的 控制之下。操作系統(tǒng)的示例包括unix、Microsoft Windows 操作系統(tǒng)的各版本、以及 Linux 操作系統(tǒng)的各分發(fā)(注意,Linux是Linux Torvalds在美國和其他國家的注冊商 標(biāo))。更一般地,可以使用支持在此公開的功能的任何操作系統(tǒng)。存儲器106可以是隨機訪問存儲器。盡管存儲器106被示為單個實體,但是應(yīng)當(dāng) 理解,存儲器106實際上可以包括多個模塊,并且存儲器106可以存在于多個級別,從高速 寄存器和高速緩存到較低速但是較大的dram芯片。網(wǎng)絡(luò)接口設(shè)備110可以允許經(jīng)由網(wǎng)絡(luò)130在計算機102與其他計算機之間的通 信。例如,網(wǎng)絡(luò)接口設(shè)備iio可以是網(wǎng)絡(luò)適配器或者其他網(wǎng)絡(luò)接口卡(nic)。存儲108可以是硬盤驅(qū)動存儲設(shè)備。盡管存儲108被示為單個單元,但是存儲器 108可以是固定的和/或可拆卸的存儲設(shè)備的組合,諸如固定盤驅(qū)動器、軟盤驅(qū)動器、帶驅(qū) 動器、可拆卸存儲卡或者光學(xué)存儲。存儲器106和存儲108可以是跨多個主要和次要存儲 設(shè)備的一個虛擬地址空間的部分。輸入設(shè)備114可以是用于向計算機102提供輸入的任何設(shè)備。例如,可以使用鍵 盤、小鍵盤、光筆、觸摸屏、軌跡球或者語音識別單元、音頻/視頻播放器等。輸出設(shè)備116可以是用于向計算機102的用戶提供輸出的任何設(shè)備。例如,輸出 設(shè)備116可以是任何傳統(tǒng)的顯示屏或者揚聲器組,并伴有其相應(yīng)的接口卡,也即視頻卡和 聲卡(未示出)。盡管與輸入設(shè)備114分離地示出,但是輸出設(shè)備116和輸入設(shè)備114可以 結(jié)合。例如,可以使用具有集成觸摸屏的顯示屏、具有集成鍵盤的顯示器或者與文本語音轉(zhuǎn) 換器結(jié)合的語音識別單元。如圖所示,計算機102的存儲器106包括編譯器148和經(jīng)編制的應(yīng)用152。編譯器 148包括多輪次概要分析器150。此外,計算機102的存儲108包括應(yīng)用代碼(或者簡稱代碼)154、概要分析數(shù)據(jù)156、用戶選項158、粒度級別160、閾值162以及注解164。代碼154 可以包括應(yīng)用的源代碼、應(yīng)用的目標(biāo)代碼以及源代碼的任何中間編譯器表示。圖2到圖5 以及關(guān)聯(lián)的描述詳細(xì)說明了在計算機102上運行的多輪次概要分析器150的結(jié)構(gòu)和操作。盡管實施方式是參考作為編譯器148 —部分的多輪次概要分析器150描述的,但 是可以廣泛地想到其他實施方式(諸如,單機多輪次概要分析器150、作為鏈接器一部分 的多輪次概要分析器150、以及作為編譯器148和鏈接器二者的部分的多輪次概要分析器 150)。圖2是按照本發(fā)明的一個實施方式示出圖1的多輪次概要分析器150的組件的框 圖200。如圖所示,多輪次概要分析器150包括粒度管理器210、選項管理器220、閾值管理 器230、注解管理器240以及區(qū)評估器250。在一個實施方式中,多輪次概要分析器150接收代碼154,并且用注解164編制代 碼154 (可以將其稱為第一編制周期)。編譯器148可以基于經(jīng)過注解的代碼來生成可執(zhí) 行文件。該可執(zhí)行文件可以稱為“經(jīng)編制的”可執(zhí)行文件,以便與得自未經(jīng)注解代碼的可執(zhí) 行文件區(qū)分開。用戶可以運行該經(jīng)編制的可執(zhí)行文件(例如,使用樣本數(shù)據(jù)集),以生成概 要分析數(shù)據(jù)156。概要分析數(shù)據(jù)156描述應(yīng)用的執(zhí)行特性。例如,基于硬件性能計數(shù)器,在 應(yīng)用執(zhí)行的同時生成的概要分析數(shù)據(jù)156可以包括與多個代碼區(qū)中每一個相關(guān)聯(lián)的高速 緩存未命中的計數(shù)。也即,出于概要分析目的,編制可以將代碼154劃分為多個代碼區(qū)。在 一個實施方式中,每個代碼區(qū)對應(yīng)于由編譯器148生成的代碼塊。每個代碼區(qū)也可以被映 射為代碼(例如,源代碼)的較高層表示的相應(yīng)塊。此外,可以通過評估應(yīng)用的至少一個編 譯單元(例如,通過靜態(tài)分析)來標(biāo)識多個代碼區(qū)。在此,多個代碼區(qū)也可以稱為代碼區(qū)的 “候選集”。多輪次概要分析器150可以基于概要分析數(shù)據(jù)156來重新編制代碼154 (可以將 其稱為第二編制周期)。例如,多輪次概要分析器150可以標(biāo)識“熱”±夬(例如,高速緩存未 命中計數(shù)導(dǎo)致超過預(yù)定義閾值的代碼的基本塊)。在這種情況下,多輪次概要分析器150可 以使用注解164來編制已標(biāo)識熱塊中的多個存儲器引用。編譯器148可以基于重新編制的 代碼來生成經(jīng)編制的可執(zhí)行文件。用戶可以運行經(jīng)編制的可執(zhí)行文件,以生成附加概要分 析數(shù)據(jù)156,其以提高的細(xì)節(jié)級別(例如,在已標(biāo)識熱塊的存儲器引用級別,而不是基本塊 級別)來描述應(yīng)用的執(zhí)行特性。多輪次概要分析器150還可以基于新生成的概要分析數(shù)據(jù)156來重新編制代碼 154。多輪次概要分析器150可以執(zhí)行任意數(shù)目的編制周期,從而基于附加概要分析數(shù)據(jù) 156來進一步細(xì)化經(jīng)過注解的代碼。通過提供多個編制周期(由此支持增量式和迭代式動 態(tài)概要分析),多輪次概要分析器150可以通過靈活、有效的方式來標(biāo)識瑕疵代碼區(qū)。例如, 多輪次概要分析器150可以僅對已標(biāo)識瑕疵代碼區(qū)內(nèi)的存儲器引用(而不是代碼154中的 所有存儲器引用)進行概要分析,由此降低概要分析開銷。在一個實施方式中,在不同的樣本運行中收集不同類型的硬件性能事件信息。 對代碼154的多輪次動態(tài)概要分析允許基于不同類型的硬件性能事件信息來優(yōu)化代碼 154 (也即,一個類型針對一個樣本運行)。此外,對代碼154的多輪次動態(tài)概要分析允許累 積式的概要分析,其中來自一個或多個先前運行的概要分析數(shù)據(jù)156可以用來細(xì)化后續(xù)概 要分析。而且,對代碼154的多輪次動態(tài)概要分析有效地標(biāo)識出用于優(yōu)化的代碼區(qū),而無需過度編制(例如,編制全部代碼154)。過度編制可能損害所觀測應(yīng)用行為的有效性(也即, 出于概要分析目的)。例如,過度編制的應(yīng)用的附加時間和空間需求可能導(dǎo)致應(yīng)用行為的代 表性低于未經(jīng)編制的應(yīng)用(也即,較不準(zhǔn)確地反映未經(jīng)編制的應(yīng)用的行為)。在一個實施方式中,粒度管理器210定義對應(yīng)用編碼154進行概要分析的多個粒 度級別158。代碼154可以包括應(yīng)用的源代碼、應(yīng)用的目標(biāo)代碼以及源代碼的任何中間編譯 器表示。在一個實施方式中,粒度管理器210可以基于用戶輸入(例如,經(jīng)由輸入設(shè)備114) 來定義多個粒度級別158。表I示出了粒度級別158的示例表I粒度級別示例
      權(quán)利要求
      一種用于多輪次動態(tài)概要分析的計算機實現(xiàn)的方法,包括配置一個或多個處理器來執(zhí)行操作,所述操作包括利用注解來編制應(yīng)用的多個代碼區(qū),以便當(dāng)所述代碼區(qū)在所述處理器上進行鏈接和執(zhí)行時,生成概要分析數(shù)據(jù);執(zhí)行所述應(yīng)用,以生成針對所述多個代碼區(qū)中每一個的概要分析數(shù)據(jù);根據(jù)所述概要分析數(shù)據(jù),標(biāo)識來自所生成概要分析數(shù)據(jù)的瑕疵代碼區(qū),其中所述瑕疵代碼區(qū)包括高速緩存未命中的計數(shù)超過預(yù)定義閾值的代碼區(qū);利用注解來編制所述瑕疵代碼區(qū),以便在所述代碼區(qū)被鏈接和執(zhí)行時,生成概要分析數(shù)據(jù);執(zhí)行所述應(yīng)用,以生成針對包括所述瑕疵代碼區(qū)在內(nèi)的多個代碼區(qū)的附加概要分析數(shù)據(jù);以及根據(jù)所述附加概要分析數(shù)據(jù),標(biāo)識所述瑕疵代碼區(qū)的子區(qū)。
      2.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其中通過評估所述應(yīng)用的至少一個編譯單 元來標(biāo)識所述多個代碼區(qū)。
      3.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其中基于至少一個硬件性能計數(shù)器來生成 所述概要分析數(shù)據(jù)。
      4.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其中所述概要分析數(shù)據(jù)包括在執(zhí)行每個相 應(yīng)代碼區(qū)的同時發(fā)生的高速緩存未命中的計數(shù)。
      5.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其中所述代碼區(qū)選自所述應(yīng)用的源代碼、 所述應(yīng)用的目標(biāo)代碼以及所述應(yīng)用的中間編譯器表示。
      6.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其中所標(biāo)識的子區(qū)對應(yīng)于所述應(yīng)用的源代 碼中包括存儲器引用的指令。
      7.如權(quán)利要求1所述的計算機實現(xiàn)的方法,進一步包括優(yōu)化所標(biāo)識的子區(qū),其中優(yōu)化所標(biāo)識的子區(qū)包括執(zhí)行以下至少一個內(nèi)聯(lián)、克隆、外聯(lián)、 間接調(diào)用特別化、瑕疵加載驅(qū)動的數(shù)據(jù)預(yù)取、數(shù)據(jù)重組織、以及指令調(diào)度。
      8.如權(quán)利要求1所述的計算機實現(xiàn)的方法,其中每個注解被擴展為選自以下的注解代 碼對運行時庫的至少一次函數(shù)調(diào)用或者指令的內(nèi)聯(lián)序列。
      9.一種包含程序的計算機可讀存儲介質(zhì),當(dāng)所述程序在處理器上執(zhí)行時,其執(zhí)行用于 實現(xiàn)如權(quán)利要求1-8中任一項所述方法的操作。
      10.一種系統(tǒng),包括 處理器;以及包含程序的存儲器,當(dāng)所述程序由所述處理器執(zhí)行時,其執(zhí)行用于多輪次動態(tài)概要分 析的操作,所述操作包括利用注解來編制應(yīng)用的多個代碼區(qū),以便當(dāng)所述代碼區(qū)在所述處理器上進行鏈接和執(zhí) 行時,生成概要分析數(shù)據(jù);執(zhí)行所述應(yīng)用,以生成針對所述多個代碼區(qū)中每一個的概要分析數(shù)據(jù); 根據(jù)所述概要分析數(shù)據(jù),標(biāo)識來自所生成概要分析數(shù)據(jù)的瑕疵代碼區(qū),其中所述瑕疵 代碼區(qū)包括高速緩存未命中的計數(shù)超過預(yù)定義閾值的代碼區(qū);利用注解來編制所述瑕疵代碼區(qū),以便在所述代碼區(qū)被鏈接和執(zhí)行時,生成概要分析數(shù)據(jù);執(zhí)行所述應(yīng)用,以生成針對包括所述瑕疵代碼區(qū)在內(nèi)的多個代碼區(qū)的附加概要分析數(shù) 據(jù);以及根據(jù)所述附加概要分析數(shù)據(jù),來標(biāo)識所述瑕疵代碼區(qū)的子區(qū)。
      11.如權(quán)利要求10所述的系統(tǒng),其中通過評估所述應(yīng)用的至少一個編譯單元來標(biāo)識所 述多個代碼區(qū)。
      12.如權(quán)利要求10所述的系統(tǒng),其中基于至少一個硬件性能計數(shù)器來生成所述概要分 析數(shù)據(jù)。
      13.如權(quán)利要求10所述的系統(tǒng),其中所述概要分析數(shù)據(jù)包括在執(zhí)行每個相應(yīng)代碼區(qū)的 同時發(fā)生的高速緩存未命中的計數(shù)。
      14.如權(quán)利要求10所述的系統(tǒng),其中所述代碼區(qū)選自所述應(yīng)用的源代碼、所述應(yīng)用的 目標(biāo)代碼以及所述應(yīng)用的中間編譯器表示。
      15.如權(quán)利要求10所述的系統(tǒng),其中所標(biāo)識的子區(qū)對應(yīng)于所述應(yīng)用的源代碼中包括存 儲器引用的指令。
      16.如權(quán)利要求10所述的系統(tǒng),其中優(yōu)化所標(biāo)識的子區(qū)包括執(zhí)行以下至少一個內(nèi)聯(lián)、 克隆、外聯(lián)、間接調(diào)用特別化、瑕疵加載驅(qū)動的數(shù)據(jù)預(yù)取、數(shù)據(jù)重組織、以及指令調(diào)度。
      17.如權(quán)利要求10所述的系統(tǒng),其中每個注解被擴展為選自以下的注解代碼對運行 時庫的至少一次函數(shù)調(diào)用以及指令的內(nèi)聯(lián)序列。
      全文摘要
      公開了用于優(yōu)化應(yīng)用執(zhí)行的系統(tǒng)、方法和制品。利用注解來編制應(yīng)用的多個代碼區(qū),以便生成針對多個代碼區(qū)中每一個的概要分析數(shù)據(jù)。通過執(zhí)行具有經(jīng)編制代碼區(qū)的應(yīng)用,生成針對多個代碼區(qū)中每一個的概要分析數(shù)據(jù)?;卺槍Χ鄠€代碼區(qū)中每一個的已生成概要分析數(shù)據(jù),標(biāo)識瑕疵代碼區(qū)。利用注解來編制已標(biāo)識瑕疵代碼區(qū)的多個代碼子區(qū),以生成針對多個代碼子區(qū)中每一個的概要分析數(shù)據(jù)。通過執(zhí)行具有經(jīng)編制代碼子區(qū)的應(yīng)用,生成針對多個代碼子區(qū)中每一個的概要分析數(shù)據(jù)?;卺槍Χ鄠€代碼子區(qū)中每一個的已生成概要分析數(shù)據(jù),標(biāo)識瑕疵代碼子區(qū)。使用已標(biāo)識的瑕疵代碼子區(qū),來優(yōu)化應(yīng)用的執(zhí)行。
      文檔編號G06F9/45GK101957773SQ20101023231
      公開日2011年1月26日 申請日期2010年7月15日 優(yōu)先權(quán)日2009年7月15日
      發(fā)明者A·R·馬丁, G·伊雨, M·P·門德爾, R·E·希爾維拉, R·G·阿爾查姆鮑爾特, 高耀清 申請人:國際商業(yè)機器公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1