国产精品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)二進制翻譯的寄存器映射技術(shù)的制作方法

      文檔序號:6360889閱讀:232來源:國知局
      專利名稱:用于高效動態(tài)二進制翻譯的寄存器映射技術(shù)的制作方法
      技術(shù)領(lǐng)域
      本公開涉及動態(tài)二進制翻譯,以及,更具體地說,涉及用于執(zhí)行從具有較多寄存器的指令集架構(gòu)(“ISA”)至具有較少寄存器的ISA的動態(tài)二進制翻譯的高效技術(shù)。
      背景技術(shù)
      動態(tài)二進制翻譯(DBT)作為在不同的ISA的頂部上運行為一個指令集架構(gòu)(ISA)創(chuàng)建的應(yīng)用程序的方式,已經(jīng)被廣泛使用??紤]到為PC開發(fā)的、基于x86 ISA的舊版軟件的數(shù)量,人們已經(jīng)關(guān)注將x86翻譯到其他ISA。在更小的超級移動PC和更強大的嵌入式和移動互聯(lián)網(wǎng)設(shè)備(例如,智能電話)這兩個行業(yè)中最近的趨勢是模糊這些不同的市場之間的邊界。結(jié)果,這個市場趨同正創(chuàng)造對從當(dāng)前支配嵌入式和移動互聯(lián)網(wǎng)設(shè)備市場(例如,ARM (ARM 控股ARM Holdings)、MIPS (MIPS 科技MIPS Technologies)以及 PowerPC(Apple-IBM-Motorola 聯(lián)盟AppIe-IBM-Motorola alliance))的 ISA 至 x86 (Intel 公司Intel Corporation)的 DBT 的很大關(guān)注。二進制翻譯(“BT”)是將為一個源(“客體(guestDlSA構(gòu)建的二進制翻譯至另一個目標(biāo)(“宿主(host)”)ISA的一般技術(shù)。使用BT,可能在具有不同的架構(gòu)的處理器上執(zhí)行為一個處理器ISA構(gòu)建的應(yīng)用程序二進制,而不需要重編譯高級源代碼或重寫匯編代碼。因為大多數(shù)舊版計算機應(yīng)用程序僅以二進制格式可用,由于BT允許處理器執(zhí)行不是為它構(gòu)建并且對它不可用的應(yīng)用程序的潛能,所以BT非常吸引人。在過去的幾十年中若干成功的BT項目已推進了該技術(shù)的狀態(tài),包括數(shù)字設(shè)備公司(Digital Equipment Corporation)的(“DEC”)FX! 32、Intel 的 IA-32EL、Transmeta 的 CMS (“代碼變形軟件(Code MorphingSoftware)”)、Godson-3 (MIPS 架構(gòu))、以及 IBM 的 DAISY (“來自 Yorktown 的動態(tài)架構(gòu)的指令集(Dynamically Architected Instruction Set from Yorktown)”)。這些工具中的大多數(shù)旨在在例如 Alpha (DEC)、Itanium (Intel)、Crusoe (Transmeta)、以及 MIPS (MIPS科技)的處理器上運行舊版x86應(yīng)用程序。上面提及的工具中的大多數(shù)使用動態(tài)BT (DBT),其意味著當(dāng)執(zhí)行應(yīng)用程序時(SP,在運行時),它們在運行中執(zhí)行翻譯。備選地,可以離線執(zhí)行BT,S卩,靜態(tài)BT (SBT)。通常優(yōu)選動態(tài)運用模型,這是因為它更通用(例如,能夠處理自修正代碼)并且對于用戶來說它透明地工作,利用簡單的OS改變來自動地調(diào)用DBT用于非本地二進制。與SBT相比,DBT的主要缺點是開銷?;ㄙM在翻譯并且優(yōu)化應(yīng)用程序的周期是可以以別的方式用于實際上執(zhí)行應(yīng)用程序代碼的周期。因此,DBT工具面臨在花費在翻譯/優(yōu)化上的時間和結(jié)果代碼的質(zhì)量之間的權(quán)衡,該結(jié)果代碼的質(zhì)量又在經(jīng)翻譯的代碼的執(zhí)行時間中反映出來。DBT面臨的挑戰(zhàn)高度地取決于源和目標(biāo)ISA。最近,已經(jīng)存在對于擴展x86 ISA的使用到超級移動和嵌入式市場細分(例如,Intel的Atom處理器)的很大關(guān)注。從用戶的角度看,這非常方便,因為它可以使舊版PC軟件能夠高效地在嵌入式和超級移動平臺上運行。然而為了在這些新領(lǐng)域中采用x86,還必須使x86能夠執(zhí)行在這些細分中可用的巨大的軟件基礎(chǔ)(software base),其主要基于 ARM (ARM Holdings)、MIPS (MIPS 科技)、以及PowerPC (Apple-IBM-Motorola聯(lián)盟)ISA。例如,在未來的基于x86的智能電話中,除了潛在地運行PC應(yīng)用程序以外,有益的是,能夠從例如Apple的iPhone App Store下載并且無縫地運行基于ARM的應(yīng)用程序。使這個場景成為可能的挑戰(zhàn)包括保持DBT的性能以及能量開銷低。盡管已經(jīng)提出了多種DBT系統(tǒng),但它們的大多數(shù)遵循了相同的基本執(zhí)行流。首先,將為源(客體)架構(gòu)創(chuàng)建的二進制文件載入到存儲器。接著將這個源二進制的區(qū)段翻譯成目標(biāo)(宿主)二進制代碼。典型地“按命令(on-demand)”進行這個翻譯。換句話說,當(dāng)控制流到達源代碼指令時,翻譯源代碼指令。典型地,在基本塊的粒度上執(zhí)行該翻譯,該基本塊是具有單個入口和潛在地多個出口的指令的序列。一旦翻譯了基本塊,則將該翻譯保存在存儲器中的翻譯高速緩存(也被稱為代碼高速緩存)中供未來重新使用。最主動的DBT系統(tǒng)執(zhí)行不同級別的優(yōu)化。根據(jù)Transmeta的CMS和其他DBT系統(tǒng),這些優(yōu)化級別稱為“檔位(gear)”。首先,使用非??斓姆g(檔位_1 )。這個檔位旨在非??焖?,其代價是經(jīng)翻譯的代碼的質(zhì)量差。對很少執(zhí)行的代碼(例如OS引導(dǎo)代碼),這個權(quán)衡傾向于是理想的。在檔位-I中,DBT還實現(xiàn)了檢測“熱門”(即,頻繁地執(zhí)行的)基本塊的探測器(計數(shù)器)。一旦塊變得熱門,將它及其相關(guān)的周圍的塊合并到區(qū)域中。接著通過更高檔位重新翻譯這個區(qū)域,該檔位將附加的優(yōu)化應(yīng)用于代碼。可以對任意數(shù)量的檔位重復(fù)這個相同的策略。例如,Transmeta的CMS使用四個檔位。事實上,基于檔位的系統(tǒng)保證了,代碼區(qū)域?qū)偟倪\行時貢獻越大,則花費越多的時間來優(yōu)化它以產(chǎn)生更快速的代碼。所應(yīng)用的優(yōu)化的集合、數(shù)量和主動性極大地隨著DBT的不同而變化。典型的優(yōu)化包括指令調(diào)度、失效代碼消除以及冗余消除。實際上,類似于靜態(tài)編譯器優(yōu)化,最有關(guān)的優(yōu)化的集合取決于目標(biāo)架構(gòu)。然而與編譯器優(yōu)化相反,在DBT中,這些優(yōu)化具有精確的運行時信息,該信息可以用于獲取更高質(zhì)量的代碼。與靜態(tài)編譯器相比DBT的主要劣勢是更緊得多的優(yōu)化-時間預(yù)算。


      根據(jù)與其一致的實施例的隨后詳細的描述,要求保護的主題的特征和優(yōu)勢將顯而易見,其中應(yīng)當(dāng)參考附圖考慮該描述,其中
      圖I描繪了與本公開一致的存儲器系統(tǒng);
      圖2A描繪了與本公開一致的、用于動態(tài)二進制翻譯器的示范性操作的流程圖2B描繪了與本公開一致的、用于優(yōu)化代碼的示范性操作的流程圖3描繪了包括頻繁地執(zhí)行的代碼塊的區(qū)域的示范性控制流圖4描繪了與本公開一致的示范性經(jīng)優(yōu)化的目標(biāo)二進制代碼塊,包括序言、主體、依據(jù)條件的跳轉(zhuǎn)以及至少一個結(jié)尾;
      圖5描繪了與本公開一致的、用于執(zhí)行包括優(yōu)化的目標(biāo)二進制代碼塊的示范性操作的流程圖6描繪了對應(yīng)于圖3的控制流圖的示范性經(jīng)優(yōu)化的控制流圖;以及圖7是示出與本公開一致的包括塊級別寄存器映射和區(qū)域級別寄存器映射的動態(tài)二進制翻譯的性能基準的對比的圖。
      具體實施例方式動態(tài)二進制翻譯(“DBT”)面臨的挑戰(zhàn)是它引起的開銷。這個開銷主要來自在客體(“源”)-ISA中相對頻繁地使用的特征,該特征不容易映射至宿主(“目標(biāo)”)-ISA。例如,當(dāng)源-ISA具有比目標(biāo)-ISA更大的寄存器集合時,則重要的是,使用從源寄存器至目標(biāo)寄存器的高效寄存器映射以便減少寄存器仿真開銷,例如,存儲器訪問。這對于目標(biāo)-ISA (例如x86和X86-64)特別重要,該目標(biāo)-ISA與其他ISA (例如,具有32個寄存器的PowerPC、ARM和MIPS以及具有128個寄存器的Itanium)相比具有相對小數(shù)量的通用/整型寄存器(例如,8和16)。下列事實使寄存器映射問題惡化最佳映射(即,導(dǎo)致最小開銷的映射)高度地取決于源二進制代碼序列,并因此它隨著代碼的部分的不同而變化。理想地,每個代碼區(qū)域應(yīng)當(dāng)使用對它最佳的寄存器映射。本公開提供了被配置為提供區(qū)域級別寄存器映射的系統(tǒng)和方法。該方法包括,對于區(qū)域中的每個二進制代碼塊,將區(qū)域中的最頻繁地訪問的源處理器寄存器中的至少一些映射至目標(biāo)處理器寄存器??梢詮陌ㄓ嫈?shù)器的探測器(probe)(—個或多個)確定最頻繁地訪問的源處理器寄存器,該探測器以對應(yīng)于源二進制代碼的塊的目標(biāo)二進制代碼的塊來實現(xiàn)。接著可以為在選擇用于優(yōu)化的區(qū)域中的源二進制代碼的每個塊生成經(jīng)優(yōu)化的目標(biāo)二進制代碼的塊。經(jīng)優(yōu)化的目標(biāo)二進制代碼的塊可以包括序言、包括經(jīng)翻譯的源二進制代碼的主體、依據(jù)條件的跳轉(zhuǎn)和至少一個結(jié)尾。序言被配置為載入該區(qū)域的映射的寄存器或映射的存入(live-in)寄存器。依據(jù)條件的跳轉(zhuǎn)被配置為基于在源二進制代碼的塊的邊界的分支是到區(qū)域中的下一個二進制塊還是到不在區(qū)域中的下一個二進制塊來控制流。結(jié)尾(一個或多個)被配置為如果下一個二進制塊在區(qū)域中則跳轉(zhuǎn)至塊主體,或者如果下一個二進制塊不在區(qū)域中則跳轉(zhuǎn)至下一個二進制塊的開始。開始可以對應(yīng)于另一個區(qū)域中的經(jīng)優(yōu)化的目標(biāo)二進制代碼塊的序言或?qū)?yīng)于未經(jīng)優(yōu)化的目標(biāo)二進制代碼塊。如果下一個二進制塊不在區(qū)域中,則可以將該區(qū)域的存出(live-out)寄存器存儲在存儲器中。有利地,當(dāng)跨越區(qū)域邊界時,可以通過載入該區(qū)域的映射的寄存器或映射的存入寄存器來減少存儲器訪問,而不是每次執(zhí)行目標(biāo)二進制代碼的經(jīng)優(yōu)化的塊。與本公開一致的方法和/或系統(tǒng)被配置為提供區(qū)域級別寄存器映射。區(qū)域可以是相對復(fù)雜的。例如,區(qū)域可以包括任意的循環(huán)嵌套(一個或多個),即,循環(huán)的任意組合(一個或多個),例如,在父循環(huán)內(nèi)的多個兄弟(sibling),正如本領(lǐng)域技術(shù)人員將理解到的。在另一個示例中,區(qū)域可以包括對應(yīng)于不可縮減的流圖的目標(biāo)二進制代碼塊,例如,進入循環(huán)的多個可能的入口。區(qū)域可以由鄰接和/或非鄰接的目標(biāo)二進制代碼塊形成。圖I描繪了與本公開一致的系統(tǒng)100。系統(tǒng)100包括耦合至系統(tǒng)存儲器104的處理器(“CPU”)102。系統(tǒng)100可以包括高速緩沖存儲器105 (其可以包括在系統(tǒng)存儲器104中)和/或類似于高速緩沖存儲器但是通過軟件管理的暫時存儲器(scratch-pad memory)107。CPU 102可以包括多個處理器寄存器106-1、106-2、…,106-m,總稱106。CPU 102可以包括多個核心處理單元(下文中的“多個核心”或單數(shù)的“核心”)并且每個核心可以被配置為執(zhí)行多個線程。系統(tǒng)存儲器104可以托管源二進制應(yīng)用程序110、動態(tài)二進制翻譯系統(tǒng)115以及宿主操作系統(tǒng)(“OS”)120。動態(tài)二進制翻譯系統(tǒng)115可以包括目標(biāo)二進制代碼塊(一個或多個)112、包括寄存器映射模塊116的動態(tài)二進制翻譯器代碼114和/或源寄存器存儲118。源二進制應(yīng)用程序110可以包括對應(yīng)于源ISA的多個源二進制代碼塊。目標(biāo)二進制代碼塊(一個或多個)對應(yīng)于目標(biāo)ISA。源二進制代碼塊是一個或多個指令的序列,該序列包括分支指令,例如,以分支指令結(jié)束。目標(biāo)二進制代碼塊被配置為包括對應(yīng)的源二進制代碼塊的功能性。經(jīng)優(yōu)化的目標(biāo)二進制代碼塊可以在經(jīng)優(yōu)化的目標(biāo)二進制代碼塊的主體中包括對應(yīng)的源二進制代碼塊的功能性。正如本文中所描述的,經(jīng)優(yōu)化的目標(biāo)二進制代碼塊可以包括附加的功能性。目標(biāo)二進制代碼塊(一個或多個)112可以存儲在命名為“代碼高速緩存”111的系統(tǒng)存儲器的區(qū)域內(nèi)??梢詫⒋a高速緩存111理解為用于目標(biāo)二進制代碼塊(一個或多個)112的存儲,即,從對應(yīng)的源二進制代碼塊(一個或多個)翻譯過來的目標(biāo)二進制代碼塊(一個或多個)112。系統(tǒng)存儲器104可以托管源寄存器存儲118,該源寄存器存儲118被配置為存儲數(shù)據(jù)到處理器寄存器106或者從處理器寄存器106載入數(shù)據(jù)。在一些實施例中,高速緩沖存儲器105和/或暫時存儲器107被配置為存儲數(shù)據(jù)到處理器寄存器(一個或多個)106或者從處理器寄存器(一個或多個)106載入數(shù)據(jù)??梢酝ㄟ^一個或多個核心執(zhí)行動態(tài)二進制翻譯器代碼114和寄存器映射模塊116來對源二進制應(yīng)用程序110進行操作,以將源二進制應(yīng)用程序110的塊(一個或多個)轉(zhuǎn)化為目標(biāo)二進制代碼塊(一個或多個)112。可以動態(tài)地將源二進制代碼塊翻譯成目標(biāo)二進制代碼塊。換句話說,可以響應(yīng)于對執(zhí)行二進制塊的調(diào)用而不是靜態(tài)地(即,在運行時前)將源二進制代碼塊翻譯成目標(biāo)二進制代碼塊。接著可以將目標(biāo)二進制代碼塊存儲在系統(tǒng)存儲器104中的代碼高速緩存111中并且將其提供至CPU 102用于執(zhí)行。將源二進制代碼110的塊(一個或多個)轉(zhuǎn)化為目標(biāo)二進制代碼塊(一個或多個)112可以包括至少部分地基于區(qū)域的寄存器訪問頻率,將一個或多個源寄存器映射至一個或多個目標(biāo)寄存器(例如,處理器寄存器(一個或多個)106)。例如,源-ISA可以包括Ns個源寄存器并且目標(biāo)-ISA可以包括N,個目標(biāo)寄存器(例如,寄存器106),其中N1小于Ns。圖2A描繪了動態(tài)二進制翻譯器的流程圖200??梢酝ㄟ^動態(tài)二進制翻譯器代碼114執(zhí)行流程圖200的操作。程序流可以以收到對執(zhí)行二進制代碼塊(一個或多個)202的調(diào)用開始。假定在對執(zhí)行二進制代碼塊(一個或多個)202的調(diào)用之前,源二進制應(yīng)用程序110已經(jīng)載入到系統(tǒng)存儲器104。在操作204,可以確定目標(biāo)二進制代碼塊(一個或多個)是否在代碼高速緩存(例如,代碼高速緩存111)中。每個目標(biāo)二進制代碼塊對應(yīng)于源二進制應(yīng)用程序110的源二進制代碼塊。如果目標(biāo)二進制代碼塊(一個或多個)不在代碼高速緩存中,則操作206可以包括將源二進制代碼塊(一個或多個)翻譯為目標(biāo)二進制塊(一個或多個)、實現(xiàn)探測器(一個或多個)并且將目標(biāo)二進制塊(一個或多個)和探測器(一個或多個)存儲在代碼高速緩存中。這個翻譯可以被配置為相對快速。例如,探測器(一個或多個)可以包括計數(shù)器(一個或多個),該計數(shù)器(一個或多個)被配置為維持執(zhí)行二進制塊的次數(shù)的計數(shù)。可以將源處理器寄存器(一個或多個)映射至在系統(tǒng)存儲器104中的寄存器存儲(例如,源寄存器存儲118)、高速緩沖存儲器105和/或暫時存儲器107。程序流可以接著繼續(xù)前進到操作211。在操作211,可以執(zhí)行經(jīng)翻譯的代碼塊(一個或多個)。如果,在操作204,目標(biāo)二進制代碼塊(一個或多個)在代碼高速緩存中,則程序流可以繼續(xù)前進到操作208。在操作208,可以確定是否已經(jīng)達到閾值??梢灾辽俨糠只谠诓僮?06實現(xiàn)的探測器(一個或多個),響應(yīng)于對執(zhí)行代碼塊(一個或多個)的先前的調(diào)用,來確定是否已經(jīng)達到閾值。例如,每次執(zhí)行二進制塊時可以增加計數(shù)。如果計數(shù)到達預(yù)定閾值,則探測器可以被配置為返回程序流(S卩,分支)到動態(tài)二進制翻譯器供進一步處理。預(yù)定閾值可以被配置為指示可以受益于優(yōu)化的相對頻繁地執(zhí)行的二進制塊。如果還沒有達到閾值,則程序流可以繼續(xù)前進到操作211,執(zhí)行經(jīng)翻譯的代碼塊(一個或多個)。如果已經(jīng)達到閾值,則程序流可以繼續(xù)前進到操作210,優(yōu)化代碼。正如本文中所描述的,優(yōu)化代碼210被配置為包括區(qū)域形成和寄存器映射。程序流可以接著繼續(xù)前進到操作211,執(zhí)行經(jīng)翻譯的代碼塊(一個或多個)。圖2B描繪了與本公開一致的用于優(yōu)化代碼的流程圖210。程序流可以在起始212開始??梢酝ㄟ^包括寄存器映射模塊116的動態(tài)二進制翻譯器代碼114,執(zhí)行流程圖210的操作。在操作214,可以進行對滿足和/或超過親合性閾值的鄰近二進制塊的搜索。鄰近二進制塊可以與觸發(fā)了代碼優(yōu)化的二進制塊有關(guān)。例如,鄰近二進制塊(一個或多個)可以被配置為正好在觸發(fā)了代碼優(yōu)化的二進制塊的之前或之后執(zhí)行。鄰近二進制塊(一個或多個)可以與觸發(fā)二進制塊鄰接和/或可以通過分支或跳轉(zhuǎn)與觸發(fā)二進制塊關(guān)聯(lián)。可以將二進制塊之間或之內(nèi)的親合性理解為二進制塊的執(zhí)行的可能性中的相關(guān)性。例如,相關(guān)性可以是由于從一個二進制塊至另一個二進制塊的分支。在操作216,接著可以形成包括滿足和/或超過親合性閾值的鄰近二進制塊的區(qū)域。在操作218,可以為在區(qū)域中訪問的每個源寄存器確定訪問的數(shù)量。區(qū)域中的指令可以使用源寄存器,即從源寄存器讀取,和/或可以定義源寄存器,即寫入源寄存器。寄存器訪問(即,寄存器運用)包括使用和/或定義寄存器。寄存器映射可以是基于區(qū)域中每個源寄存器的訪問的總數(shù)的。例如,在操作216形成的區(qū)域可以包括二進制代碼塊(一個或多個)。包括二進制塊的執(zhí)行數(shù)量的計數(shù)的探測器可以與每個二進制代碼塊相關(guān)聯(lián)。對于每個二進制塊,可以基于二進制塊的執(zhí)行數(shù)量的計數(shù)、二進制塊中的指令以及每個指令訪問的寄存器,來確定寄存器訪問的數(shù)量。接著可以通過對于在區(qū)域中每個二進制塊中的每個寄存器的訪問數(shù)量進行求和,來確定在區(qū)域中訪問的每個寄存器的訪問的總數(shù)。圖3描繪了包括代碼的示范性區(qū)域305的示范性控制流圖300。控制流圖300包括五個代碼塊塊A 310、塊B 320、塊C 330、塊D 340以及塊E 350。每個塊具有對應(yīng)于塊的執(zhí)行數(shù)量的相關(guān)聯(lián)的計數(shù)312、322、332、342、352,該計數(shù)是基于例如在操作206 (圖2A)實現(xiàn)的探測器(一個或多個)來確定的。例如,塊A、塊C和塊E每個具有為十的相關(guān)聯(lián)的計數(shù),塊B具有為一千的相關(guān)聯(lián)的計數(shù)以及塊D具有為九百九十的相關(guān)聯(lián)的計數(shù)。在這個示例中,相對于圖2A的操作208來描述,塊B可以已經(jīng)滿足預(yù)定閾值,即,塊B是頻繁地執(zhí)行的源二進制代碼塊。塊A、塊C和塊D可以是相對于塊B的鄰近塊。圖2B的操作214 (對滿足/超過親合性閾值的鄰近塊的搜索)可以獲得塊D。塊D是相對于塊B的、滿足或超過親合性閾值的鄰近源二進制代碼塊。親合性對應(yīng)于頻繁地執(zhí)行的源二進制代碼塊和鄰近源二進制代碼塊的執(zhí)行的可能性中的相關(guān)性。換句話說,塊B具有相對較高的執(zhí)行的可能性(計數(shù)=1000)。塊D也具有相對較高執(zhí)行的可能性(計數(shù)=990)。因為計數(shù)信息是歷史的并且未來的執(zhí)行頻率可能改變,所以使用“執(zhí)行的可能性”。例如,基于塊B和塊D之間的分支,塊D的執(zhí)行的可能性與塊B的執(zhí)行的可能性有關(guān)。換句話說,塊D的執(zhí)行的可能性與塊B的執(zhí)行的可能性相關(guān)。
      在這個示例中,五個代碼塊中,分別具有相對更高執(zhí)行頻率(即,計數(shù))1000和990并且滿足或超過親合性閾值的塊B和塊D包括在區(qū)域305中。塊B中的指令訪問寄存器rl、r2、r3、r4和r5。寄存器rl和r4被定義(寫入)并且寄存器rl、r2、r3、r4和r4被使用(從中讀取)。換句話說,對塊B的每個執(zhí)行,訪問rl和r4兩次并且剩余寄存器每個訪問一次。因此,對于具有執(zhí)行頻率1000的塊B,訪問rl和r4每個2000次并且訪問每個剩余寄存器1000次。塊D包括訪問寄存器r2兩次(一次讀取和一次寫入)和寄存器r5 —次(讀取)的一個指令。因此,對于具有990的執(zhí)行頻率的塊D,訪問r2 1980次并且訪問r5 990次。因此,對于包括塊B和塊D的區(qū)域305,總共訪問rl 2000次,總共訪問r2 2980次,總共訪問r3 1000次,總共訪問r4 2000次以及總共訪問r5 1990次。按寄存器訪問的數(shù)量,從最頻繁地訪問的寄存器到最不頻繁地訪問的寄存器排序寄存器,獲得r2、rl和r4、r5以及接著r3。再次轉(zhuǎn)向圖2B,在操作220,可以將源寄存器映射至目標(biāo)寄存器??梢詫?yīng)于區(qū)域的訪問的最高數(shù)量(即,最頻繁地訪問)的源寄存器(一個或多個)映射至目標(biāo)寄存器(一個或多個)。例如,目標(biāo)ISA可以具有N,個目標(biāo)處理器寄存器并且源ISA可以具有N、個源處理器寄存器,其中Nt小于Ns。在N1個目標(biāo)處理器寄存器其中,N個可以對于映射可用,其中N小于或等于風(fēng)。繼續(xù)圖3中示出的示例,如果N為三,則可以將寄存器rl、r2和r4映射至區(qū)域的目標(biāo)處理器寄存器??梢圆粚⒓拇嫫鱮3和r5映射至目標(biāo)處理器寄存器并且因此可以根據(jù)需要將其從存儲器中取回。在一些實施例中,對映射可用的目標(biāo)處理器寄存器的數(shù)量(N)可以小于目標(biāo)ISA的處理器寄存器的數(shù)量(風(fēng))。換句話說,可以保留一個或多個目標(biāo)處理器寄存器用于例如使用或定義未映射的源寄存器的指令。例如,可以保留一個或兩個目標(biāo)處理器寄存器用于這樣的指令。表I包括對應(yīng)于一個示例的偽代碼,該示例用于確定對于區(qū)域中的每個源寄存器的寄存器訪問的總數(shù)并且映射N個源寄存器至N個目標(biāo)寄存器。
      權(quán)利要求
      1.一種方法,所述方法包括 載入源二進制應(yīng)用程序,所述源二進制應(yīng)用程序包括用于通過計算機系統(tǒng)執(zhí)行的多個源二進制代碼±夾,所述計算機系統(tǒng)包括存儲器和包括N,個目標(biāo)寄存器的處理單元,其中所述源二進制應(yīng)用程序被配置為在具有民個源寄存器的環(huán)境中執(zhí)行,其中凡小于Ns;在所述源二進制應(yīng)用程序的運行時期間,識別所述源二進制應(yīng)用程序內(nèi)的頻繁地執(zhí)行的源二進制代碼塊;定義包括所述頻繁地執(zhí)行的源二進制代碼塊和超過親合性閾值的至少一個鄰近源二進制代碼塊的區(qū)域,所述頻繁地執(zhí)行的源二進制代碼塊和所述至少一個鄰近源二進制代碼塊兩者包括訪問至少一個源寄存器的指令;確定對于所述區(qū)域中訪問的每個源寄存器的訪問的頻率;以及將所述區(qū)域中的N個最頻繁地訪問的源寄存器的每一個映射到所述Ni個目標(biāo)寄存器中的相應(yīng)的一個,其中N小于或等于1%。
      2.如權(quán)利要求I所述的方法,所述方法還包括至少部分基于所述寄存器映射,生成對應(yīng)于區(qū)域中的每個源二進制代碼塊的經(jīng)優(yōu)化的目標(biāo)二進制代碼塊,其中每個經(jīng)優(yōu)化的目標(biāo)二進制代碼塊包括被配置為將與每個映射的源寄存器相關(guān)聯(lián)的數(shù)據(jù)從存儲器載入到對應(yīng)目標(biāo)寄存器的序言、包括對應(yīng)于所述源二進制代碼塊的經(jīng)翻譯的源二進制代碼和依據(jù)條件的跳轉(zhuǎn)的主體以及至少一個結(jié)尾,所述依據(jù)條件的跳轉(zhuǎn)和所述至少一個結(jié)尾被配置為至少部分基于第二目標(biāo)二進制代碼塊是否在所述區(qū)域中,控制從所述區(qū)域中的第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊至所述第二目標(biāo)二進制代碼塊的流。
      3.如權(quán)利要求2所述的方法,其中所述多個結(jié)尾包括第一結(jié)尾和第二結(jié)尾,所述第一結(jié)尾被配置為如果所述第二目標(biāo)二進制代碼塊是在所述區(qū)域中的第二經(jīng)優(yōu)化的目標(biāo)二進制代碼塊,則執(zhí)行所述第一結(jié)尾,所述第一結(jié)尾包括跳轉(zhuǎn)到所述第二經(jīng)優(yōu)化的目標(biāo)二進制代碼塊的主體的第一指令,并且所述第二結(jié)尾被配置為如果所述第二目標(biāo)二進制代碼塊不在所述區(qū)域中,則執(zhí)行所述第二結(jié)尾,所述第二結(jié)尾包括將對應(yīng)于相應(yīng)映射的源寄存器的每個目標(biāo)寄存器存儲到存儲器的第二指令,以及跳轉(zhuǎn)到所述第二目標(biāo)二進制代碼塊的開始的第三指令。
      4.如權(quán)利要求I所述的方法,所述方法還包括識別所述區(qū)域的存入和存出寄存器,其包括識別所述區(qū)域中的每個源二進制代碼塊的存入和存出寄存器。
      5.如權(quán)利要求4所述的方法,所述方法還包括至少部分基于所述寄存器映射,生成對應(yīng)于所述區(qū)域中的每個源二進制代碼塊的經(jīng)優(yōu)化的目標(biāo)二進制代碼塊,其中每個經(jīng)優(yōu)化的目標(biāo)二進制代碼塊包括被配置為將與每個映射且存入的源寄存器相關(guān)聯(lián)的數(shù)據(jù)從存儲器載入到對應(yīng)目標(biāo)寄存器的序言、包括對應(yīng)于所述源二進制代碼塊的經(jīng)翻譯的源二進制代碼和依據(jù)條件的跳轉(zhuǎn)的主體以及至少一個結(jié)尾,所述依據(jù)條件的跳轉(zhuǎn)和所述至少一個結(jié)尾被配置為至少部分基于第二目標(biāo)二進制代碼塊是否在所述區(qū)域中,控制從所述區(qū)域中的第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊到所述第二目標(biāo)二進制代碼塊的流。
      6.如權(quán)利要求2所述的方法,所述方法還包括執(zhí)行所述區(qū)域中的第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊的序言,所述執(zhí)行包括將對應(yīng)于所述區(qū)域的所述N個映射的源寄存器的相應(yīng)的一個的數(shù)據(jù)載入到N個目標(biāo)寄存器的每一個;執(zhí)行所述第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊的主體,所述第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊包括被配置為跳轉(zhuǎn)到第二目標(biāo)二進制代碼塊的第一分支指令;確定所述第二目標(biāo)二進制代碼塊是否在所述區(qū)域中;以及如果所述第二目標(biāo)代碼塊在所述區(qū)域中,則執(zhí)行第一結(jié)尾以跳轉(zhuǎn)到對應(yīng)于所述第二目標(biāo)二進制代碼塊的第二經(jīng)優(yōu)化的目標(biāo)代碼塊的主體,或如果所述第二目標(biāo)代碼塊不在所述區(qū)域中,則執(zhí)行第二結(jié)尾以跳轉(zhuǎn)到所述第二目標(biāo)代碼塊的開始。
      7.如權(quán)利要求5所述的方法,所述方法還包括執(zhí)行在所述區(qū)域中的第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊的序言,所述執(zhí)行包括,對于在所述區(qū)域中的每個映射的存入源寄存器,將來自對應(yīng)于所述映射的存入源寄存器的存儲器的數(shù)據(jù)載入到一個目標(biāo)寄存器;執(zhí)行所述第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊的主體,所述第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊包括被配置為跳轉(zhuǎn)到第二目標(biāo)二進制代碼塊的第一分支指令;確定所述第二目標(biāo)二進制代碼塊是否在所述區(qū)域中;以及如果所述第二目標(biāo)代碼塊在所述區(qū)域中,則執(zhí)行第一結(jié)尾以跳轉(zhuǎn)到所述第二目標(biāo)代碼塊的主體,或如果所述第二目標(biāo)代碼塊不在所述區(qū)域中,則執(zhí)行第二結(jié)尾以將所述區(qū)域的所述映射的存出寄存器存儲在存儲器中并且跳轉(zhuǎn)到所述第二目標(biāo)代碼塊的開始。
      8.如權(quán)利要求I所述的方法,其中親合性對應(yīng)于所述頻繁地執(zhí)行的源二進制代碼塊和所述至少一個鄰近源二進制代碼塊的執(zhí)行的可能性中的相關(guān)性。
      9.如權(quán)利要求I所述的方法,其中所述頻繁地執(zhí)行的源二進制代碼塊和所述至少一個鄰近源二進制代碼塊每個以分支指令為界。
      10.一種制品,所述制品包括其上存儲有指令的有形存儲介質(zhì),當(dāng)通過處理器執(zhí)行所述指令時,導(dǎo)致下面的操作,包括載入包括用于執(zhí)行的多個源二進制代碼塊的源二進制應(yīng)用程序,其中所述處理器包括恥個目標(biāo)寄存器,其中所述源二進制應(yīng)用程序被配置為在具有爲(wèi)個源寄存器的環(huán)境中執(zhí)行,其中凡小于Ns;在所述源二進制應(yīng)用程序的運行時期間,識別所述源二進制應(yīng)用程序內(nèi)的頻繁地執(zhí)行的源二進制代碼塊;定義包括所述頻繁地執(zhí)行的源二進制代碼塊和超過親合性閾值的至少一個鄰近源二進制代碼塊的區(qū)域,其中親合性對應(yīng)于所述頻繁地執(zhí)行的源二進制代碼塊和所述至少一個鄰近源二進制代碼塊的執(zhí)行的可能性中的相關(guān)性,所述頻繁地執(zhí)行的源二進制代碼塊和所述至少一個鄰近源二進制代碼塊兩者包括訪問至少一個源寄存器的指令并且每個以分支指令為界;確定對于在所述區(qū)域中訪問的每個源寄存器的訪問的頻率;以及將所述區(qū)域中的N個最頻繁地訪問的源寄存器的每一個映射為所述N1個目標(biāo)寄存器的相應(yīng)的一個,其中N小于或等于汍。
      11.如權(quán)利要求10所述的制品,其中當(dāng)通過所述處理器執(zhí)行所述指令時導(dǎo)致下面附加的操作,包括至少部分基于所述寄存器映射,生成對應(yīng)于所述區(qū)域中的每個源二進制代碼塊的經(jīng)優(yōu)化的目標(biāo)二進制代碼塊,其中每個經(jīng)優(yōu)化的目標(biāo)二進制代碼塊包括被配置為將與每個映射的源寄存器相關(guān)聯(lián)的數(shù)據(jù)從存儲器載入到對應(yīng)目 標(biāo)寄存器的序言、包括對應(yīng)于所述源二進制代碼塊的經(jīng)翻譯的源二進制代碼和依據(jù)條件的跳轉(zhuǎn)的主體以及至少一個結(jié)尾,所述依據(jù)條件的跳轉(zhuǎn)和所述至少一個結(jié)尾被配置為至少部分基于第二目標(biāo)二進制代碼塊是否在所述區(qū)域中,控制從所述區(qū)域中的第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊到所述第二目標(biāo)二進制代碼塊的流。
      12.如權(quán)利要求11所述的制品,其中所述多個結(jié)尾包括第一結(jié)尾和第二結(jié)尾,所述第一結(jié)尾被配置為如果所述第二目標(biāo)二進制代碼塊是在所述區(qū)域中的第二經(jīng)優(yōu)化的目標(biāo)二進制代碼塊,則執(zhí)行所述第一結(jié)尾,所述第一結(jié)尾包括跳轉(zhuǎn)到所述第二經(jīng)優(yōu)化的目標(biāo)二進制代碼塊的主體的第一指令,以及所述第二結(jié)尾被配置為如果所述第二目標(biāo)二進制代碼塊不在所述區(qū)域中,則執(zhí)行所述第二結(jié)尾,所述第二結(jié)尾包括將對應(yīng)于相應(yīng)映射的源寄存器的每個目標(biāo)寄存器存儲到存儲器的第二指令和跳轉(zhuǎn)到所述第二目標(biāo)二進制代碼塊的開始的第三指令。
      13.如權(quán)利要求10所述的制品,其中當(dāng)通過所述處理器執(zhí)行所述指令時導(dǎo)致下面附加的操作,包括識別所述區(qū)域的存入和存出寄存器,其包括識別所述區(qū)域中的每個源二進制代碼塊的存入和存出寄存器。
      14.如權(quán)利要求13所述的制品,其中當(dāng)通過所述處理器執(zhí)行所述指令時導(dǎo)致下面附加的操作,包括至少部分基于所述寄存器映射,生成對應(yīng)于所述區(qū)域中的每個源二進制代碼塊的經(jīng)優(yōu)化的目標(biāo)二進制代碼塊,其中每個經(jīng)優(yōu)化的目標(biāo)二進制代碼塊包括被配置為將與每個映射且存入的源寄存器相關(guān)聯(lián)的數(shù)據(jù)從存儲器載入到對應(yīng)目標(biāo)寄存器的序言、包括對應(yīng)于所述源二進制代碼塊的經(jīng)翻譯的源二進制代碼和依據(jù)條件的跳轉(zhuǎn)的主體以及至少一個結(jié)尾,所述依據(jù)條件的跳轉(zhuǎn)和所述至少一個結(jié)尾被配置為至少部分基于所述第二目標(biāo)二進制代碼塊是否在所述區(qū)域中,控制從所述區(qū)域中的第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊到第二目標(biāo)二進制代碼塊的流。
      15.如權(quán)利要求11所述的制品,其中當(dāng)通過所述處理器執(zhí)行所述指令時導(dǎo)致下面附加的操作,包括執(zhí)行在所述區(qū)域中的第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊的序言,所述執(zhí)行包括將對應(yīng)于所述區(qū)域的所述N個映射的源寄存器的相應(yīng)的一個的數(shù)據(jù)載入到N個目標(biāo)寄存器的每一個;執(zhí)行所述第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊的主體,所述第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊包括被配置為跳轉(zhuǎn)到第二目標(biāo)二進制代碼塊的第一分支指令;確定所述第二目標(biāo)二進制代碼塊是否在所述區(qū)域中;以及如果所述第二目標(biāo)代碼塊在所述區(qū)域中,則執(zhí)行第一結(jié)尾以跳轉(zhuǎn)到對應(yīng)于所述第二目標(biāo)二進制代碼塊的第二經(jīng)優(yōu)化的目標(biāo)代碼塊的主體,或如果所述第二目標(biāo)代碼塊不在所述區(qū)域中,則執(zhí)行第二結(jié)尾以跳轉(zhuǎn)到所述第二目標(biāo)代碼塊的開始。
      16.如權(quán)利要求14所述的制品,其中當(dāng)通過所述處理器執(zhí)行所述指令時導(dǎo)致下面附加的操作,包括執(zhí)行所述區(qū)域中的第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊的序言,所述執(zhí)行包括,對于在所述區(qū)域中的每個映射的存入源寄存器,將來自對應(yīng)于所述映射的存入源寄存器的存儲器的數(shù)據(jù)載入到一個目標(biāo)寄存器;執(zhí)行所述第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊的主體,所述第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊包括被配置為跳轉(zhuǎn)到第二目標(biāo)二進制代碼塊的第一分支指令;確定所述第二目標(biāo)二進制代碼塊是否在所述區(qū)域中;以及如果所述第二目標(biāo)代碼塊在所述區(qū)域中,則執(zhí)行第一結(jié)尾以跳轉(zhuǎn)到所述第二目標(biāo)代碼塊的主體,或如果所述第二目標(biāo)代碼塊不在所述區(qū)域中,則執(zhí)行第二結(jié)尾以將所述區(qū)域的所述映射的存出寄存器存儲在存儲器中并且跳轉(zhuǎn)到所述第二目標(biāo)代碼塊的開始。
      17.—種系統(tǒng),所述系統(tǒng)包括處理器,所述處理器包括風(fēng)個目標(biāo)寄存器;以及存儲器,所述存儲器被配置為存儲動態(tài)二進制翻譯器、寄存器映射模塊和被配置為在具有Ns個源寄存器的環(huán)境中執(zhí)行的源二進制應(yīng)用程序,其中風(fēng)小于Ns,所述源二進制應(yīng)用程序包括將要在所述處理器上執(zhí)行的多個源二進制代碼塊,其中當(dāng)在所述處理器上執(zhí)行所述動態(tài)二進制翻譯器和寄存器映射模塊時,所述動態(tài)二進制翻譯器和寄存器映射模塊中的至少一個引起所述處理器以在所述源二進制應(yīng)用程序的運行時期間,識別所述源二進制應(yīng)用程序內(nèi)的頻繁地執(zhí)行的源二進制代碼塊;定義包括所述頻繁地執(zhí)行的源二進制代碼塊和超過親合性閾值的至少一個鄰近源二進制代碼塊的區(qū)域,所述頻繁地執(zhí)行的源二進制代碼塊和所述至少一個鄰近源二進制代碼塊兩者包括訪問至少一個源寄存器的指令;確定對于所述區(qū)域中訪問的每個源寄存器的訪問的頻率;以及將所述區(qū)域中的N個最頻繁地訪問的源寄存器的每一個映射為所述Nt個目標(biāo)寄存器中的相應(yīng)的一個,其中N小于或等于義。
      18.如權(quán)利要求所述的系統(tǒng)17,其中所述寄存器映射模塊還引起所述處理器至少部分基于所述寄存器映射,生成對應(yīng)于所述區(qū)域中的每個源二進制代碼塊的經(jīng)優(yōu)化的目標(biāo)二進制代碼塊,其中每個經(jīng)優(yōu)化的目標(biāo)二進制代碼塊包括被配置為將與每個映射的源寄存器相關(guān)聯(lián)的數(shù)據(jù)從存儲器載入到對應(yīng)目標(biāo)寄存器的序言、包括對應(yīng)于所述源二進制代碼塊的經(jīng)翻譯的源二進制代碼和依據(jù)條件的跳轉(zhuǎn)的主體以及至少一個結(jié)尾,所述依據(jù)條件的跳轉(zhuǎn)和所述至少一個結(jié)尾被配置為至少部分基于所述第二目標(biāo)二進制代碼塊是否在所述區(qū)域中, 控制從所述區(qū)域中的第一經(jīng)優(yōu)化的目標(biāo)二進制代碼塊到第二目標(biāo)二進制代碼塊的流。
      19.如權(quán)利要求18所述的系統(tǒng),其中所述多個結(jié)尾包括第一結(jié)尾和第二結(jié)尾,所述第一結(jié)尾被配置為如果所述第二目標(biāo)二進制代碼塊是在所述區(qū)域中的第二經(jīng)優(yōu)化的目標(biāo)二進制代碼塊,則執(zhí)行所述第一結(jié)尾,所述第一結(jié)尾包括跳轉(zhuǎn)到所述第二經(jīng)優(yōu)化的目標(biāo)二進制代碼塊的主體的第一指令,并且所述第二結(jié)尾被配置為如果所述第二目標(biāo)二進制代碼塊不在所述區(qū)域中,則執(zhí)行所述第二結(jié)尾,所述第二結(jié)尾包括將對應(yīng)于相應(yīng)映射的源寄存器的每個目標(biāo)寄存器存儲到存儲器的第二指令以及跳轉(zhuǎn)到所述第二目標(biāo)二進制代碼塊的開始的第三指令。
      20.如權(quán)利要求17所述的系統(tǒng),其中所述寄存器映射模塊還引起所述處理器識別所述區(qū)域的存入和存出寄存器,其包括識別所述區(qū)域中的每個源二進制代碼塊的存入和存出寄存器。
      21.如權(quán)利要求10所述的制品,其中親合性對應(yīng)于所述頻繁地執(zhí)行的源二進制代碼塊和所述至少一個鄰近源二進制代碼塊的執(zhí)行的可能性中的相關(guān)性。
      22.如權(quán)利要求10所述的制品,其中所述頻繁地執(zhí)行的源二進制代碼塊和所述至少一個鄰近源二進制代碼塊每個以分支指令為界。
      23.如權(quán)利要求17所述的系統(tǒng),其中親合性對應(yīng)于所述頻繁地執(zhí)行的源二進制代碼塊和所述至少一個鄰近源二進制代碼塊的執(zhí)行的可能性中的相關(guān)性。
      24.如權(quán)利要求17所述的系統(tǒng),其中所述頻繁地執(zhí)行的源二進制代碼塊和所述至少一個鄰近源二進制代碼塊每個以分支指令為界。
      全文摘要
      通常來說,本公開提供用于將寄存器從具有較多寄存器的系統(tǒng)映射到具有較少寄存器的系統(tǒng)的系統(tǒng)和方法??梢孕纬蓞^(qū)域,該區(qū)域包括具有相對頻繁的寄存器訪問的一個或多個代碼塊。可以將最頻繁地訪問的源寄存器映射至目標(biāo)寄存器。區(qū)域中的每個塊可以以序言和至少一個結(jié)尾為界。該序言可以被配置為實現(xiàn)寄存器映射并且結(jié)尾(一個或多個)可以被配置為管理從區(qū)域中的塊到區(qū)域中的另一個塊或到不在區(qū)域中的塊的程序流。
      文檔編號G06F9/30GK102934082SQ201180029387
      公開日2013年2月13日 申請日期2011年6月14日 優(yōu)先權(quán)日2010年6月14日
      發(fā)明者G.D.奧托尼, H.王, W.李 申請人:英特爾公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1