專利名稱:異步運行時編譯的制作方法
異步運行時編譯
版權告示和許可
本專利文獻的公開內容的一部分可能包含受版權保護的材料。版權所有者不 反對任何人對在(美國)專利商標局文件或記錄中所出現(xiàn)的本專利文獻或專利公
開的復制,但無論如何都保留所有版權。以下告示應用于本文C叩yrightO)2005, Microsoft Corp。
背景
在典型的仿真器/運行時(just-in-time, JIT)編譯器中,代碼執(zhí)行和同步代 碼翻譯線程一般位于同一個處理器或處理器核上。當用戶導航該程序時,該代碼 執(zhí)行線程將試圖在已翻譯的代碼高速緩存中找到所請求的功能。當這些功能存在 時,該線程將全速執(zhí)行它們并且用戶會感到極少或沒有延遲。然而,如果這些功 能不存在,則代碼執(zhí)行線程將對同步代碼翻譯線程作出一阻塞請求并且等待直到 該線程報告該功能已經被翻譯。這些情況下,在已發(fā)生來代表仿真/JIT編譯的程 序執(zhí)行中,用戶會感到短暫的"抖動"。在用戶需要平滑且逼真的操作以及諸如 計算機游戲玩家所期望的那些視覺效果的程序中,這是非常有問題的。
基于這點考慮,需要一種提供程序模塊的平滑且即時執(zhí)行的仿真器/JIT編譯器。
概述
提供本概述一般用簡化的形式介紹以下將在詳細描述中進一步描述的一些 概念。本概述并不旨在確定所要求保護的主題的關鍵特征或必要特征,也不旨在 用于幫助確定所要求保護的主題的范圍。
考慮到本領域中的上述不足,提供了異步JIT編譯。對于幾個實施例,該異 步JIT編譯部分地通過檢測計算機程序的將來執(zhí)行可能所需的至少一個計算機程 序代碼模塊,并且隨后對檢測到的程序代碼模塊進行翻譯以便執(zhí)行,同時執(zhí)行該計算機程序的至少一個其它先前已翻譯的程序代碼模塊來實現(xiàn)。例如,這可以通 過由同步代碼翻譯線程調用異步代碼翻譯線程以便在計算機程序的用戶執(zhí)行之 前運行并且預翻譯用于所述預翻譯的檢測到的程序代碼來完成。異步線程可以自 由地繼續(xù)翻譯,然后在代碼高速緩存內存儲預期將來用戶可能需要的已發(fā)現(xiàn)的第 二個功能。這種協(xié)作增加了用戶請求的下一個功能已經被翻譯的可能性。在理想 的環(huán)境中,這種方法允許整個程序在用戶行使其更復雜的特征之前被良好地轉 換,從而減少感知到的"抖動"并提高平均性能。 本發(fā)明其它的優(yōu)點和特征將在以下描述。
附圖簡述
參考附圖將進一步描述阻塞本地感測阻擋物,其中
圖1是示出根據(jù)使用一個處理器的同步運行時(JIT)編譯的進程的示例性實 現(xiàn)的時間圖2是示出根據(jù)使用兩個處理器的異步運行時(JIT)編譯的進程的示例性實 現(xiàn)的時間圖3是示出根據(jù)異步運行時(JIT)編譯的進程的示例性實現(xiàn)的流程圖4示出了適用于實現(xiàn)圖1到圖3的運行時編譯進程的示例性計算設備的框
圖5示出了其中可實現(xiàn)許多計算機化進程以執(zhí)行圖1到圖3的運行時編譯進 程的示例性聯(lián)網(wǎng)計算環(huán)境;
詳細描述
在以下的描述和附圖中闡明了某些具體細節(jié)以便提供對本發(fā)明的各實施例 的全面理解。經常與計算和軟件技術相關聯(lián)的某些眾所周知的細節(jié)未在以下公開 內容中闡明以免不必要地混淆本發(fā)明的各實施例。此外,相關領域的普通技術人 員會明白,沒有以下所述的一個或多個細節(jié)也可以實施本發(fā)明的其它實施例。最 后,盡管參考以下公開內容中的步驟和序列來描述各方法,但是這樣的描述用于 提供本發(fā)明實施例的清除實現(xiàn),而不應該將各步驟和步驟序列認為是實施本發(fā)明 所必需的。
參考圖1和圖2,所示的是示出根據(jù)使用一個處理器的同步運行時(JIT)編
6譯(圖1)和使用兩個處理器的異步運行時編譯(圖2)的進程的示例性實現(xiàn)。 如圖所示,利用使用兩個處理器的異步運行時編譯的系統(tǒng)的組件的示例包括以 下
1. 響應于用戶輸入并代表用戶執(zhí)行已翻譯代碼的代碼執(zhí)行線程101。
2. 可由代碼執(zhí)行線程101在代碼翻譯線程101需要首次103翻譯一功能 時調用的同步代碼翻譯線程102。在退化的情況下,代碼執(zhí)行線程101和同步線 程102運行于同一個處理器或處理器核104上。
3. 可由同步線程102調用或者可自調用以便在用戶執(zhí)行之前運行并且預 翻譯代碼117的異步代碼翻譯線程105。
4. 具有競爭管理結構的已翻譯代碼高速緩存(未示出),其中同步102 線程和異步105線程存放了已翻譯代碼以便傳送到代碼執(zhí)行線程101,且引入了 運行于另一處理器或處理器核106上的第二、異步代碼翻譯線程105。
接著另外參考圖3,所示的是示出根據(jù)異步運行時(JIT)編譯的進程的示例 性實現(xiàn)的流程圖。當用戶導航該程序時,判斷用戶動作是否需要還未準備好執(zhí)行 (即,還未被翻譯或編譯)的功能107。如果用戶動作需要己經準備好執(zhí)行的功 能,則該功能正常執(zhí)行108。如果用戶動作需要還未準備好執(zhí)行的功能,則代碼 執(zhí)行線程101將試圖在已翻譯代碼高速緩存內找到所請求的功能。當那些功能存 在110時,線程將全速執(zhí)行它們并且用戶將感到極少或沒有延遲。然而,如果那 些功能不存在,則代碼執(zhí)行線程對同步代碼翻譯線程102作出阻塞請求111,并 且等待直到線程報告該功能己經被翻譯112。在這些情況下,在已發(fā)生來代表仿 真/JIT編譯的程序執(zhí)行中,用戶會感到短暫的"抖動"。
這一確定通過引入運行于另一個處理器或處理器核106上的第二、異步代碼 翻譯線程105來解決。當同步翻譯線程102處理功能時,其檢測113代碼中對目 前還不是用戶所需的其它功能的調用的存在。在標識到這一調用之后,同步翻譯 線程102將該功能的入口點傳遞114給異步翻譯線程105。為了解除代碼執(zhí)行線 程101的阻塞,同步線程102盡可能快地返回112,并且繼續(xù)執(zhí)行先前存儲在代 碼高速緩存內的已翻譯功能。然而,異步線程105自由地繼續(xù)翻譯115,并且隨 后在代碼高速緩存116內存儲預期用戶將來可能需要所發(fā)現(xiàn)的第二個功能。這種 協(xié)作增加了用戶所請求的下一個功能己經被翻譯的可能性。在理想的環(huán)境中,這 種方法允許整個程序在用戶行使其更復雜的特征之前就被良好地翻譯,從而減少感知的"抖動"并提高平均性能。
該進程通過運行于異步線程105上的、能主動地發(fā)現(xiàn)和處理程序二進制代碼 中未翻譯的代碼的邏輯來進一步優(yōu)化。在實踐中,并非所有的功能都可通過以下
分支樹來發(fā)現(xiàn);特別地,無法通過這種方式找到"虛擬"功能。例如, 一個實現(xiàn) 包括解析二進制代碼本身并標識看來像是代碼功能的文件分段的邏輯。當找到這 種分段時,它們立刻被放入異步翻譯線程105的翻譯隊列中。作為該方法的能力 的真實世界演示,諸如Halo 2⑧等超過90%的復雜游戲可以在游戲開始的一分鐘 內被定位和編譯。
接著參考圖4,所示是表示適用于實現(xiàn)以上所述的進程的示例性計算設備的 框圖。例如,執(zhí)行用于異步JIT編譯的進程和方法的計算機可執(zhí)行指令可以駐留 在如圖4所示的計算環(huán)境中和/或在其中執(zhí)行。計算系統(tǒng)環(huán)境220只是合適的計算 環(huán)境的一個示例,且并不旨在對本發(fā)明的使用范圍和功能提出任何限制。計算環(huán) 境220也不應該被解釋為對示例性操作環(huán)境220內示出的任意一個組件或組件組 合具有任何依賴性或要求。例如,計算機游戲控制臺也可以包括諸如以下所述用
于實現(xiàn)以上所述的進程的那些項目。
本發(fā)明的各方面可用眾多其它通用或專用計算系統(tǒng)環(huán)境或配置來操作。適用 于本發(fā)明的眾所周知的計算系統(tǒng)、環(huán)境和/或配置的示例包括,但不限于,個人計 算機、服務器計算機、手持式或膝上型設備、多處理器系統(tǒng)、基于微處理器的系 統(tǒng)、機頂盒、可編程消費電子產品、網(wǎng)絡PC、微型計算機、大型計算機以及包 括以上系統(tǒng)或設備中的任一個的分布式計算環(huán)境等。
本發(fā)明的各方面可以在諸如程序模塊等由計算機執(zhí)行的計算機可執(zhí)行指令 的一般上下文中實現(xiàn)。程序模塊一般包括執(zhí)行特定任務或實現(xiàn)特定抽象數(shù)據(jù)類型 的例程、程序、對象、組件和數(shù)據(jù)結構等。本發(fā)明的各方面也可以在分布式計算 環(huán)境中實施,其中任務由通過通信網(wǎng)絡鏈接的遠程處理設備來執(zhí)行。在分布式計 算環(huán)境中,程序模塊可以位于包括存儲器存儲設備的本地和遠程計算機存儲介質 內。
用于實現(xiàn)本發(fā)明各方面的一個示例性系統(tǒng)包括計算機241形式的通用計算 設備。計算機241的組件可以包括,但不限于,處理單元259、系統(tǒng)存儲器222、 以及將包括系統(tǒng)存儲器的系統(tǒng)組件耦合到處理單元259的系統(tǒng)總線221。系統(tǒng)總 線221可以若干種總線結構中的任一種,包括存儲器總線或存儲器控制器、外圍總線、以及使用各種總線體系結構中的任意一種的的局部總線。作為示例而非局
限,這樣的體系結構包括工業(yè)標準結構(ISA)總線、微通道體系結構(MCA)總線、 增強型ISA (EISA)總線、視頻電子技術標準協(xié)會(VESA)局部總線以及外圍部件 互連(PCI)總線(也稱為小背板(Mezzanine)總線)。
計算機241通常包括各種計算機可讀介質。計算機可讀介質可以是可由計算 機241訪問的任何可用介質,并且包括易失性和非易失性介質、可移動和不可移 動介質。計算機存儲介質包括以用于諸如計算機可讀指令、數(shù)據(jù)結構、程序模塊 或其它數(shù)據(jù)等信息的存儲的所有方法或技術實現(xiàn)的易失性和非易失性、可移動和 不可移動介質。計算機存儲介質包括,但不限于,RAM、 ROM、 EEPROM、閃 存或其它存儲器技術、CD-ROM、數(shù)字多功能盤(DVD)或其它光盤存儲、磁帶 盒、磁帶、磁盤存儲或其它磁性存儲設備、或者可用于存儲所需數(shù)據(jù)并可由計算 機241訪問的任何其它介質。通信介質一般以諸如載波或其它傳輸機制等已調制 數(shù)據(jù)信號來體現(xiàn)計算機可讀指令、數(shù)據(jù)結構、程序模塊或其它數(shù)據(jù),并且包括任 何信息傳輸介質。術語"己調制數(shù)據(jù)信號"指的是以在該信號中編碼信息的方式 設置或更改其一個或多個特性的信號。作為示例,而非局限,通信介質包括諸如 有線網(wǎng)絡或直接線連接等有線介質,以及諸如聲學、RF、紅外線和其它無線介質 等無線介質。上述介質中的任一個的組合也應該被包括在計算機可讀介質的范圍 內。
系統(tǒng)存儲器222包括諸如只讀存儲器(ROM)223和隨機存儲存儲器 (RAM)260等易失性或/和非易失性形式的計算機存儲介質?;据斎?輸出系統(tǒng) 224 (BIOS) —般存儲于ROM223中,其包含用于比如在啟動期間幫助在計算機 241內的元件之間傳輸信息的基本例程。RAM 260 —般包含處理單元259立即可 訪問和/或當前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非局限,圖4示出了 操作系統(tǒng)225、應用程序226、其它程序模塊227和程序數(shù)據(jù)228。
計算機241還可以包括其它可移動/不可移動、易失性/非易失性計算機存儲 介質。僅作為示例,圖4示出了從不可移動、非易失性磁介質中讀取或向其寫入 的硬盤驅動器238,從可移動、非易失性磁盤254中讀取或向其寫入的磁盤驅動 器239,以及從諸如CDROM或其它光學介質等可移動、非易失性光盤253中讀 取或向其寫入的光盤驅動器240??梢栽谑纠圆僮鳝h(huán)境中使用的其它可移動/不 可移動、易失性/非易失性計算機存儲介質包括磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等。硬盤驅動器238 —般通過諸如接口234 等不可移動存儲器接口連接到系統(tǒng)總線221 ,而磁盤驅動器239和光盤驅動器240 一般通過諸如接口 235等可移動存儲器接口連接到系統(tǒng)總線221。
以上所述并且在圖4中示出的驅動器及其相關聯(lián)的計算機存儲介質為計算 機241提供了計算機可讀指令、數(shù)據(jù)結構、程序模塊和其它數(shù)據(jù)的存儲。在圖4 中,例如,硬盤驅動器238被示為存儲操作系統(tǒng)258、應用程序257、其它程序 模塊256和程序數(shù)據(jù)255。注意,這些組件既可以與操作系統(tǒng)225、應用程序226、 其它程序模塊227和程序數(shù)據(jù)228相同,也可以不同。此處對操作系統(tǒng)258、應 用程序257、其它程序模塊256和程序數(shù)據(jù)255賦予不同標號以示出至少它們是 不同的副本。用戶可以通過諸如鍵盤251和一般稱作鼠標、軌道球和觸摸板的定 點設備等輸入設備將命令和信息輸入到計算機241中。其它輸入設備(未示出) 可包括話筒、操縱桿、游戲手柄、圓盤式衛(wèi)星天線和掃描儀等。這些和其它輸入 設備經常通過耦合到系統(tǒng)總線的用戶輸入接口 236連接到處理單元259,但也可 以通過諸如并行端口、游戲端口或通用串行總線(USB)等其它接口和總線結構 來連接。監(jiān)視器242或其它類型的顯示設備也可以通過諸如視頻接口 232等接口 連接到系統(tǒng)總線221。除監(jiān)視器外,計算機還可以包括其它外圍輸出設備,諸如 揚聲器224和打印機243,它們可通過輸出外圍接口 223連接。
計算機241可以使用到一個或多個遠程計算機,如遠程計算機246的邏輯連 接在聯(lián)網(wǎng)環(huán)境中操作。遠程計算機246可以是個人計算機、服務器、路由器、網(wǎng) 絡PC、對等設備或其它常見的網(wǎng)絡節(jié)點,并且一般包括以上相對于計算機241 所描述的許多或全部元件,盡管在圖4中僅示出了存儲器存儲設備247。圖4中 所示的邏輯連接包括局域網(wǎng)(LAN)245和廣域網(wǎng)(WAN)249,但也可包括其它網(wǎng) 絡。這樣的聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍計算機網(wǎng)絡、內聯(lián)網(wǎng)和因特網(wǎng)中是很常 見的。
當在LAN聯(lián)網(wǎng)環(huán)境中使用時,計算機241通過網(wǎng)絡接口或適配器237連接 到LAN 245。當在WAN聯(lián)網(wǎng)環(huán)境中使用時,計算機241 —般包括調制解調器250 或用于通過諸如因特網(wǎng)等WAN 249建立通信的其它裝置??梢允莾戎没蛲庵玫?調制解調器250通過用戶輸入接口 236或其它合適的機制連接到系統(tǒng)總線221。 在聯(lián)網(wǎng)環(huán)境中,相對于計算機241所描述的程序模塊或其部分可以存儲在遠程存 儲器存儲設備中。作為示例而非局限,圖4示出遠程應用程序248駐留在存儲器
10設備247上??梢岳斫?,所示的網(wǎng)絡連接是示例性的,并且可以使用在計算機之 間建立通信鏈路的其它手段。
應該理解,此處所描述的各種技術可以結合硬件或軟件,或者在適當時以兩 者的組合來實現(xiàn)。因此,本發(fā)明的方法和裝置或某些方面或其部分都可以采用包 含在諸如軟盤、CD-ROM、硬盤驅動器或任何其它機器可讀存儲介質等有形介質 中的程序代碼(即,指令)的形式,其中,當該程序代碼被加載到諸如計算機等 機器上并由其執(zhí)行時,該機器就成為用于實現(xiàn)本發(fā)明的裝置。在可編程計算機上 的程序代碼執(zhí)行的情況下,計算設備通常包括處理器、處理器可讀的存儲介質(包 括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設備和至少一個輸出 設備。 一個或多個程序可以例如通過使用API、可重復使用控件等來實現(xiàn)或利用 此處結合本發(fā)明所描述的進程。這樣的程序較佳地用高級過程語言或面向對象的 編程語言來實現(xiàn),以便與計算機系統(tǒng)通信。然而,如有需要,該程序可以用匯編 語言或機器語言來實現(xiàn)。在任何情況下,語言可以是已編譯或已解釋語言,并且 與硬件實現(xiàn)相組合。
盡管示例性實施例可以涉及在一個或多個單獨計算機系統(tǒng)的上下文中使用 本發(fā)明的各方面,但本發(fā)明不局限于此,而是可以結合諸如網(wǎng)絡或分布式計算環(huán) 境等任何計算環(huán)境來實現(xiàn)。此外,本發(fā)明的各方面可以在多個處理芯片或設備中 或上實現(xiàn),并且存儲可以類似地在多個設備上實現(xiàn)。這樣的設備可以包括個人計 算機、網(wǎng)絡服務器、手持式設備、超級計算機或者集成到諸如汽車和飛機等其它 系統(tǒng)中的計算機。
接著參考圖5,所示的是其中可實現(xiàn)許多計算機化進程以執(zhí)行上述進程的示 例性聯(lián)網(wǎng)計算環(huán)境。例如,并行計算可以是具有圖5的網(wǎng)絡上使用和/或實現(xiàn)異步 JIT編譯的各種客戶機的這一網(wǎng)絡環(huán)境的一部分。本領域普通技術人員可以理解, 網(wǎng)絡可以連接任何計算機或其它客戶機或服務器設備,或者可以在一分布式計算 環(huán)境中。在這一點上,具有任意數(shù)目的處理、存儲器或者存儲單元以及任意數(shù)目 的同時發(fā)生的應用程序和進程的任何計算機系統(tǒng)或環(huán)境都可以被認為是適用于 所提供的系統(tǒng)和方法。
分布式計算通過計算機設備和系統(tǒng)之間的交換提供了計算機資源和服務的
共享。這些資源和服務包括信息交換、高速緩存存儲和文件的盤存儲。分布式計 算利用網(wǎng)絡連接,從而允許客戶機充分利用其整體能力來使整個企業(yè)獲益。在這一點上,各種設備可以包括可實現(xiàn)此處所述的進程的應用程序、對象或資源。
圖5提供了示例性聯(lián)網(wǎng)或分布式計算環(huán)境的示意圖。該環(huán)境包括計算設備
271、 272、 276和277,以及對象273、 274和275,和數(shù)據(jù)庫278。這些實體271、
272、 273、 274、 275、 276、 277和278中的每一個都可以包括或利用程序、方法、 數(shù)據(jù)存儲、可編程邏輯等。實體271、 272、 273、 274、 275、 276、 277和278可 以跨越諸如PDA、音頻/視頻設備、MP3播放器、個人計算機等相同或不同設備 的各部分。每個實體271、 272、 273、 274、 275、 276、 277和278可以通過通信 網(wǎng)絡270與另一個實體271、 272、 273、 274、 275、 276、 277和278進行通信。 在這一點上,任何實體都可以負責數(shù)據(jù)庫278或其它存儲元件的維護和更新。
該網(wǎng)絡270本身可以包括向圖5的系統(tǒng)提供服務的其它計算實體,并且本身 可以表示多個互相連接的網(wǎng)絡。根據(jù)本發(fā)明的一方面,每個實體271、 272、 273、 274、 275、 276、 277和278都可以包含可能利用API或其它對象、軟件、固件和 /或硬件來請求其它實體271、 272、 273、 274、 275、 276、 277和278中的一個或 多個的服務的離散功能程序模塊。
還可以理解,諸如275等對象可以被主存在另一個計算設備276上。因而, 盡管所述的物理環(huán)境可能將連接的設備示為計算機,但是但這種說明僅僅是示例 性的,并且所描繪或描述的物理環(huán)境可以替換地包括諸如PDA、電視機和MP3 播放器等各種數(shù)字設備,和諸如接口、 COM對像等軟件對象等。
存在支持分布式計算環(huán)境的各種系統(tǒng)、組件和網(wǎng)絡配置。例如,計算系統(tǒng)可 以通過有線或無線系統(tǒng)、局域網(wǎng)或廣泛分布的網(wǎng)絡連接在一起。當前,許多網(wǎng)絡 耦合到因特網(wǎng),其提供了用于廣泛分布的計算的基礎結構并且包含了許多不同的 網(wǎng)絡。任何這樣的基礎結構,不管是否耦合到因特網(wǎng),都適用于所提供的系統(tǒng)和 方法。
網(wǎng)絡基礎結構可允許諸如客戶機/服務器、對等網(wǎng)絡或混合體系結構等大量 網(wǎng)絡拓撲結構。"客戶機"是一類或者一組的成員,該類或組使用與其不相關的 另一個類或組的服務。在計算時,客戶機是一個進程,例如,粗略地講是請求由 另一個程序提供的服務的一組指令或任務??蛻魴C進程使用所請求的服務而不必 "知道"關于另一個程序或服務本身的任何工作細節(jié)。在客戶機/服務器體系結構 中,尤其是聯(lián)網(wǎng)系統(tǒng)中,客戶機通常是訪問由其它計算機(例如,服務器)提供 的共享網(wǎng)絡資源的計算機。在圖5的示例中,任何實體271、 272、 273、 274、 275、276、 277和278可以取決于環(huán)境而被認為是客戶機、服務器或兩者。
服務器一般(但不必然)是可通過例如因特網(wǎng)等遠程或本地網(wǎng)絡訪問的遠程 計算機系統(tǒng)??蛻魴C進程可以在第一計算機系統(tǒng)中是活動的,而服務器進程可以 在第二計算機系統(tǒng)中是活動的,它們通過通信介質互相通信,由此提供了分布式 功能并允許多個客戶機利用服務器的信息收集能力。任何軟件對象都可以分布在 多個計算設備或對象上。
客戶機和服務器使用由協(xié)議層提供的功能來彼此通信。例如,超文本傳輸協(xié) 議(HTTP)是用于萬維網(wǎng)(WWW),即"web"的常用協(xié)議。通常,諸如網(wǎng)間協(xié)議(IP) 地址等計算機網(wǎng)絡地址或諸如統(tǒng)一資源定位符(URL)等其它引用都可以用于彼此 標識服務器或客戶機。網(wǎng)絡地址可被稱為URL地址。通信可通過通信介質來提 供,例如,客戶機和服務器可以通過用于大容量通信的TCP/IP連接而彼此耦合。 鑒于可根據(jù)圖5提供的通用框架構建的不同計算環(huán)境和可能在諸如圖5的網(wǎng) 絡環(huán)境中的計算中發(fā)生的其它變化,此處提供的系統(tǒng)和方法不能以任何方式被解 釋為限于一特定計算體系結構。相反,本發(fā)明不應被限于任意單個實施例,而是 應該根據(jù)所附權利要求書的寬度和范圍來解釋。
權利要求
1.一種用于翻譯計算機程序代碼的方法,包括檢測計算機程序的將來執(zhí)行可能需要的至少一個計算機程序代碼模塊;以及在翻譯所檢測到的程序代碼模塊以便執(zhí)行的同時執(zhí)行所述計算機程序的至少一個其它先前已翻譯的程序代碼模塊。
2. 如權利要求l所述的方法,其特征在于,還包括存儲所翻譯的檢測到的程序代碼模塊,以便在將來萬一需要該程序代碼模用 于來執(zhí)行所述計算機程序時執(zhí)行。
3. 如權利要求l所述的方法,其特征在于,所述翻譯還包括 由一同步代碼翻譯線程調用一異步代碼翻譯線程以便在用戶執(zhí)行之前運行,并且預翻譯所述檢測到的程序代碼。
4. 如權利要求3所述的方法,其特征在于,還包括由所述同步和異步線程一起將已翻譯的代碼存放到一已翻譯代碼高速緩存 中以便傳送到一代碼執(zhí)行線程,其中所述已翻譯代碼高速緩存包括一競爭管理結 構。
5. 如權利要求l所述的方法,其特征在于,所述翻譯包括 自調用一異步代碼翻譯線程以便在用戶執(zhí)行之前運行,并且預翻譯所述檢測到的程序代碼。
6. 如權利要求5所述的方法,其特征在于,還包括由所述同步和異步代碼翻譯線程同時將已翻譯代碼存放到一已翻譯代碼高 速緩存中以便傳送到一代碼執(zhí)行線程,其中所述已翻譯代碼高速緩存具有競爭管 理結構。
7. 如權利要求l所述的方法,其特征在于,所述檢測包括 通過解析對應于代表所述計算機程序的可能執(zhí)行的分支樹的二叉樹來識別所述計算機程序中看似為代碼功能的分段。
8. —種其上具有用于執(zhí)行如權利要求1所述的方法的指令的計算機可讀介質。
9. 一種其上具有用于執(zhí)行如權利要求2所述的方法的指令的計算機可讀介質。
10. —種其上具有用于執(zhí)行如權利要求3所述的方法的指令的計算機可讀介質。
11. 一種其上具有用于執(zhí)行如權利要求4所述的方法的指令的計算機可讀介質。
12. —種其上具有用于執(zhí)行如權利要求5所述的方法的指令的計算機可讀介質。
13. —種其上具有用于執(zhí)行如權利要求6所述的方法的指令的計算機可讀介質。
14. 一種其上具有用于執(zhí)行如權利要求7所述的方法的指令的計算機可讀介質。
15. —種用于翻譯計算機程序代碼的系統(tǒng),包括用于檢測計算機程序的將來執(zhí)行可能需要的至少一個計算機程序代碼模塊 的裝置;以及用于在翻譯所檢測到的程序代碼模塊以便執(zhí)行的同時執(zhí)行所述計算機程序 的至少一個其它先前已翻譯的程序代碼模塊的裝置。
16. 如權利要求15所述的系統(tǒng),其特征在于,還包括用于存儲所述已翻譯的檢測到的程序代碼模塊、以便在將來萬一需要所述程 序代碼模塊來執(zhí)行所述計算機程序時執(zhí)行的裝置。
17. —種翻譯計算機程序代碼的系統(tǒng),包括用于由一同步代碼翻譯線程調用一異步代碼翻譯線程以便在計算機程序的 用戶執(zhí)行之前運行并且預翻譯所檢測到的用于所述預翻譯的程序代碼的裝置。
18. 如權利要求17所述的系統(tǒng),其特征在于,還包括-用于由所述同步和異步線程一起將已翻譯代碼存放到一已翻譯代碼高速緩 存中以便傳送到一代碼執(zhí)行線程的裝置,其中所述已翻譯代碼高速緩存具有競爭 管理結構。
19. 如權利要求17所述的系統(tǒng),其特征在于,所述調用裝置包括 用于自調用一異步代碼翻譯線程以便在用戶執(zhí)行之前運行并且預翻譯所述檢測到的程序代碼的裝置。
20. 如權利要求19所述的系統(tǒng),其特征在于,還包括-用于由所述同步和異步代碼翻譯線程一起將已翻譯代碼存放到一已翻譯代碼高速緩存中以便傳送到一代碼執(zhí)行線程的裝置,其中所述已翻譯代碼高速緩存 具有競爭管理結構。
全文摘要
提供了異步運行時(JIT)編譯技術。運行在第二處理器上的異步代碼翻譯線程可以由同步線程調用或者自調用以便在用戶執(zhí)行之前運行并且預翻譯代碼。存在具有競爭管理結構的已翻譯代碼高速緩存,其中同步和異步線程兩者都存放了已翻譯代碼以便傳送到代碼執(zhí)行線程。
文檔編號G06F9/45GK101310256SQ200680042080
公開日2008年11月19日 申請日期2006年10月18日 優(yōu)先權日2005年11月14日
發(fā)明者V·譚 申請人:微軟公司