国产精品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>

      用于檢測和處理未對齊數(shù)據(jù)訪問的設(shè)備、系統(tǒng)和方法

      文檔序號:6578171閱讀:333來源:國知局
      專利名稱:用于檢測和處理未對齊數(shù)據(jù)訪問的設(shè)備、系統(tǒng)和方法
      用于檢測和處理未對齊數(shù)據(jù)訪問的設(shè)備、系統(tǒng)和方法
      本申請是申請日為2004年10月25日申請?zhí)枮榈?00480035086.6號發(fā)明名稱為"用 于檢測和處理未對齊數(shù)據(jù)訪問的設(shè)備、系統(tǒng)和方法"的中國專利申請的分案申請。
      背景技術(shù)
      在計(jì)算平臺領(lǐng)域中,軟件應(yīng)用可能最初被寫為由第一計(jì)算平臺執(zhí)行,所述第一計(jì)算平 臺例如基于32位的計(jì)算平臺(例如Intel (RTM)體系結(jié)構(gòu)32 (IA—32))。在一些情況 F,可能通過使用適當(dāng)?shù)挠布?或軟件來翻譯和執(zhí)行該軟件應(yīng)用,在第二計(jì)算平臺上執(zhí) 行所述軟件應(yīng)用,所述第二計(jì)算平臺例如基于64位的計(jì)算平臺(例如Intel (RTM) Itanium (RTM)處理器)。
      在第二計(jì)算平臺上軟件應(yīng)用的翻譯和執(zhí)行期間,未對齊數(shù)據(jù)訪問以及與數(shù)據(jù)未對齊相 關(guān)聯(lián)的問題可能會出現(xiàn)。數(shù)據(jù)未對齊可以包括,例如,數(shù)據(jù)項(xiàng)駐留在可能不被處理器有效 訪問的存儲器地址上。當(dāng)?shù)诙?jì)算平臺試圖訪問未對齊數(shù)據(jù)項(xiàng)時(shí),可能需要不期望出現(xiàn)的 丌銷(overhead),例如額外的處理周期或處理時(shí)間。在一些情況下,在第二計(jì)算平臺上 軟件應(yīng)用的執(zhí)行可能使現(xiàn)有的性能問題增加并更嚴(yán)重,例如當(dāng)軟件應(yīng)用執(zhí)行于第一 (也即 最初的)計(jì)算平臺時(shí)也會經(jīng)歷的由于數(shù)據(jù)未對齊而產(chǎn)生的問題。這可能顯著降低執(zhí)行速度, 并且可能顯著增加處理時(shí)間和/或處理周期數(shù)。此外,在一些情況下,未對齊數(shù)據(jù)訪問事 件yj能被應(yīng)用或操作系統(tǒng),例如運(yùn)行于第二計(jì)算平臺的操作系統(tǒng)視為錯(cuò)誤,并且可能因此 引起應(yīng)用提早終止(termination)或者其他不期望出現(xiàn)的結(jié)果。
      通過使用相對長的代碼序列來替換可能導(dǎo)致未對齊數(shù)據(jù)訪問事件的每條指令,數(shù)據(jù)未 對齊訪問的問題可以得到部分減輕。但是,用于防止所有數(shù)據(jù)未對齊訪問的問題的如此長 的代碼序列的大量(bulk)應(yīng)用可能是低效率的并且可能導(dǎo)致巨大的開銷,例如額外的處 理周期和/或處理時(shí)間。
      附圖簡要說明
      本說明書的結(jié)論部分特別指出并清楚要求保護(hù)作為本發(fā)明的主題。然而,當(dāng)與附圖一 起閱讀時(shí),通過參考以下詳細(xì)描述,本發(fā)明關(guān)于操作的組織和方法,以及本發(fā)明的特征和 優(yōu)點(diǎn)可以得到最好的理解,其中


      圖1是根據(jù)本發(fā)明的一些實(shí)施方案,能夠檢測和處理數(shù)據(jù)未對齊的計(jì)算平臺的示意閣。
      圖2是根據(jù)本發(fā)明的一些實(shí)施方案,檢測和處理數(shù)據(jù)未對齊的方法的示意性流程圖。
      5應(yīng)該可以意識到,為了描述的簡單和清晰,圖中所示要素并不必要按照比例繪制。例 如,為了清晰起見, 一些要素的尺寸可能相對于其他要素被放大了。此外,在被認(rèn)為適當(dāng) 的地方,在圖中重復(fù)了標(biāo)號,用來指示對應(yīng)的或類似的要素。
      發(fā)明詳細(xì)描述
      在以下的詳細(xì)描述中,闡述了很多具體的細(xì)節(jié),以提供對本發(fā)明的更透徹的理解。然 而,本領(lǐng)域的普通技術(shù)人員將理解,無需使用這些具體的細(xì)節(jié)可以實(shí)現(xiàn)本發(fā)明。此外,公 知的方法、過程、組件、單元和/或電路沒有詳細(xì)描述,以免模糊本發(fā)明。
      圖1根據(jù)本發(fā)明的示例性實(shí)施方案示意性地描述了能檢測和處理數(shù)據(jù)未對齊的計(jì)算 平臺IIO。例如,計(jì)算平臺110可以用于數(shù)據(jù)處理或各種軟件應(yīng)用的執(zhí)行,并且可以根據(jù) 本發(fā)明的一些實(shí)施方案實(shí)現(xiàn)未對齊數(shù)據(jù)訪問的檢測和/或處理。計(jì)算平臺110可以包括計(jì) 算設(shè)備。例如,計(jì)算平臺110可以包括個(gè)人計(jì)算機(jī)、桌面型計(jì)算機(jī)、移動計(jì)算機(jī)、膝上型 計(jì)算機(jī)、筆記本式計(jì)算機(jī)、終端、工作站、服務(wù)器計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)設(shè)備、 平板計(jì)算機(jī)、專門的或?qū)S玫挠?jì)算設(shè)備、網(wǎng)絡(luò)設(shè)備等設(shè)備的至少一部分。計(jì)算平臺110可 以利用硬件組件和/或軟件組件的任何適當(dāng)?shù)慕M合來實(shí)現(xiàn)。
      在圖l所示的實(shí)施例中,計(jì)算平臺110可以包括,例如一個(gè)或更多個(gè)處理器141、 一 個(gè)或更多個(gè)存儲器(memory)單元142、 一個(gè)或更多個(gè)儲存(storage)單元143、輸出單 元144和輸入單元145。計(jì)算平臺UO可以包括其他適當(dāng)?shù)谋绢I(lǐng)域內(nèi)眾所周知的組件或組 件集,所述組件或組件集可以以可操作的方式與計(jì)算平臺110的一個(gè)或更多個(gè)組件相關(guān)聯(lián)。
      處理器141可以包括,例如中央處理單元(CPU)、數(shù)字信號處理器(DSP)、 一個(gè) 或更多個(gè)控制器或者任何適當(dāng)?shù)膶S煤?或通用和/或多用處理器或微處理器或控制器。存 儲器單元142可以包括,例如隨機(jī)訪問存儲器(RAM)、只讀存儲器(ROM)、動態(tài)RAM (DRAM)、同步DRAM (SD—RAM)或其他適當(dāng)?shù)拇鎯ζ鲉卧?。儲存單?43可以包 括,例如硬盤驅(qū)動器、軟盤驅(qū)動器、致密盤(CD)驅(qū)動器、CD-ROM驅(qū)動器或其他適當(dāng) 的可移動的或不可移動的儲存單元或存儲器模塊。輸出單元144可以包括,例如一個(gè)或更 多個(gè)能夠連接到監(jiān)視器或者與監(jiān)視器通信的卡、適配器、連接器和/或組件。輸入單元145 可以包括,例如一個(gè)或更多個(gè)能夠連接到鍵盤、鼠標(biāo)、觸摸板或與鍵盤、鼠標(biāo)、觸摸板通 信的卡、適配器、連接器和/或組件。存儲器單元142、儲存單元143、輸出單元144和/ 或輸入單元145可以以可操作的方式與處理器141相關(guān)聯(lián)。注意到處理器141、存儲器單 元142、儲存單元143、輸出單元144和/或輸入單元145可以包括其他適當(dāng)?shù)谋绢I(lǐng)域內(nèi)周 知的組件和/或?qū)崿F(xiàn)。
      在一些實(shí)施方案中,軟件可以存儲在例如儲存單元143或存儲器單元142中,并且可 以用處理器141來執(zhí)行。例如,這樣的軟件可以包括一個(gè)或更多個(gè)操作系統(tǒng),例如MicrosoftWindows、 Linux、 Unix、 Apple OS、 Solaris、 Sun-OS、 HP-UX或其他適當(dāng)?shù)牟僮飨到y(tǒng)。 所述軟件還可以包括一個(gè)或更多個(gè)軟件應(yīng)用、 一個(gè)或更多個(gè)驅(qū)動、編譯器、解釋器、仿真 器、執(zhí)行層、軟件環(huán)境、受管理的軟件環(huán)境、翻譯層和/或各種其他適當(dāng)?shù)能浖M件。所 述軟件可以包括,例如軟件組件(software component)、軟件應(yīng)用和/或?qū)崿F(xiàn)或使用根據(jù) 本發(fā)明的實(shí)施方案的一種或更多種方法的軟件層,和/或其他適當(dāng)?shù)能浖M件。在一些實(shí) 施方案中,所述軟件和/或存儲器單元142可以包括一項(xiàng)或更多項(xiàng)未對齊的數(shù)據(jù)項(xiàng),例如 駐留在存儲器單元142中可能不被處理器141有效訪問的存儲器地址上的數(shù)據(jù)項(xiàng)。
      在一些實(shí)施方案中,計(jì)算平臺110可以選擇性地包括可以利用軟件組件和/或硬件組 件的任何適當(dāng)?shù)慕M合形式實(shí)現(xiàn)的翻譯器150。例如,在一個(gè)實(shí)施方案中,翻譯器150可以 包括存儲在存儲器單元142和/或儲存單元143中可利用處理器141來運(yùn)行或執(zhí)行的軟件 和/或指令。在一些實(shí)施方案中,翻譯器150可以將軟件應(yīng)用或一條或更多條指令從適合 于第一計(jì)算平臺的第一格式翻譯和/或轉(zhuǎn)換到適合于第二計(jì)算平臺(例如適合于計(jì)算平臺 110)的第二格式。在一個(gè)實(shí)施方案中,翻譯器150可以例如利用專用的軟件層,例如執(zhí) 行層來實(shí)現(xiàn)。在一些實(shí)施方案中,翻譯器150可以包括一個(gè)或更多個(gè)模塊或組件(未示出), 以根據(jù)本發(fā)明的實(shí)施方案執(zhí)行一個(gè)或更多個(gè)檢測和處理未對齊數(shù)據(jù)訪問的操作,所述一個(gè) 或更多個(gè)模塊或組件例如檢測模塊、插裝(instrumentation)模塊、輕插裝模塊、重插裝 模塊、翻譯模塊、重譯模塊、優(yōu)化模塊、代碼修改模塊、代碼分類模塊等。
      在一些實(shí)施方案中,如下所述,翻譯器150可以檢測和/或處理數(shù)據(jù)未對齊。例如, 根據(jù)本發(fā)明的一些實(shí)施方案,由翻譯器150執(zhí)行或者根據(jù)翻譯器150執(zhí)行的指令或操作可 以反映已修改的翻譯處理,該處理可以包括如下所述由檢測和處理數(shù)據(jù)未對齊的示例性方 法產(chǎn)生的修改。例如,在本發(fā)明的一些實(shí)施方案中,如下詳細(xì)所述,翻譯器150可以實(shí)現(xiàn) 翻譯方法或過程(procedure),所述方法或過程考慮與數(shù)據(jù)未對齊相關(guān)的參數(shù)。
      圖2根據(jù)本發(fā)明的一些實(shí)施方案示意性地描述了檢測和處理數(shù)據(jù)未對齊的方法的流 程圖。圖2的方法,以及根據(jù)本發(fā)明的其他實(shí)施方案的方法,可以和例如圖l的計(jì)算平臺 U0—起被翻譯器150、處理器141、被計(jì)算平臺110執(zhí)行的軟件或指令使用,和/或與各 種其他適當(dāng)?shù)挠?jì)算平臺、設(shè)備、裝置和/或系統(tǒng)一起使用。在一些實(shí)施方案中,圖2的所 述方法可以被編譯器、解釋器和/或仿真器使用,所述編譯器、解釋器和/或仿真器可以使 用適當(dāng)?shù)能浖M件和/或硬件組件來實(shí)現(xiàn)。
      注意到在此使用的短語"塊代碼"和/或"代碼塊"可以包括,例如一條或更多條指 令或指令集。例如,代碼塊可以包括五條指令或20條指令等等。
      根據(jù)本發(fā)明的一些實(shí)施方案,"熱塊(hotblock)"可以包括,例如被標(biāo)識和/或分類 為優(yōu)化或進(jìn)行進(jìn)一步優(yōu)化操作的候選的代碼塊。例如,在軟件應(yīng)用的執(zhí)行期間可以被執(zhí)行 多次(例如,大量次數(shù))的代碼塊可以被標(biāo)識和/或分類為熱塊。其他適當(dāng)?shù)臉?biāo)準(zhǔn)或條件 可以用于標(biāo)識、分類和/或定義熱塊。根據(jù)本發(fā)明的一些實(shí)施方案,"冷塊(cold block)"可以包括,例如沒有被標(biāo)識和/ 或分類為熱塊的代碼塊。例如,冷塊可以包括在軟件應(yīng)用的執(zhí)行期間只可以執(zhí)行一次或少 量次數(shù)的代碼塊。注意到在一些實(shí)施方案中,例如在最初的翻譯操作中代碼塊可以被標(biāo)識 和/或分類為冷塊,并且可以在進(jìn)一步的翻譯和/或優(yōu)化操作中被重新分類為熱塊。
      如方框210所示,所述方法可以將軟件應(yīng)用的代碼塊從適合于第一計(jì)算平臺的第一格 式翻譯或轉(zhuǎn)換到適合于第二計(jì)算平臺的第二格式。第一格式的代碼塊可以被稱為"原始代 碼塊",并且第二格式的代碼塊可以被稱為"譯過(translated)代碼塊"。例如在一些實(shí) 施方案中,代碼塊可以從Intel (RTM)體系結(jié)構(gòu)32 (IA-32)被譯為Intel (RTM)體系結(jié) 構(gòu)64 (IA-64)。例如,翻譯可以使用翻譯器150來執(zhí)行。在一個(gè)實(shí)施方案中,所述翻譯 可以使用編譯器軟件或解釋器軟件來實(shí)現(xiàn)。例如,翻譯可以基本上在執(zhí)行時(shí)或接近執(zhí)行時(shí) 動態(tài)地和/或?qū)崟r(shí)地執(zhí)行。在一些實(shí)施方案中,翻譯可以提前執(zhí)行,例如在執(zhí)行時(shí)刻之前。
      如在此詳細(xì)描述的,本發(fā)明的方法的實(shí)施方案可以包括插裝操作。根據(jù)本發(fā)明的一些 實(shí)施方案,插裝可以包括,例如給某些代碼塊或某條指令添加一條或更多條指令,以追蹤、 檢査、調(diào)試和/或分析代碼塊或指令的行為或操作。
      使用在這里,短語"輕插裝"可以包括,例如可以在代碼塊級被執(zhí)行的插裝。例如, 在一個(gè)實(shí)施方案中,"輕插裝"可以包括可以檢測代碼塊的執(zhí)行是否可以引起未對齊數(shù)據(jù) 訪問,或可以檢測代碼塊的執(zhí)行是否可以導(dǎo)致未對齊數(shù)據(jù)訪問事件的插裝。在一些實(shí)施方 案中,執(zhí)行"輕插裝"可以導(dǎo)致,例如確定給定代碼塊的執(zhí)行是否包括未對齊數(shù)據(jù)訪問事件。
      使用在這里,短語"重插裝"可以包括,例如可以在指令級被執(zhí)行的插裝。例如,在 一個(gè)實(shí)施方案中,"重插裝"可以包括可以檢測指令塊的執(zhí)行是否可以引起未對齊數(shù)據(jù)訪 問,或可以檢測指令塊的執(zhí)行是否可以導(dǎo)致未對齊數(shù)據(jù)訪問事件的插裝。在替換性的實(shí)施 方案中,"重插裝"可以包括,例如可標(biāo)識一條或更多條指令的插裝,所述指令的執(zhí)行可 以導(dǎo)致未對齊數(shù)據(jù)訪問。在一些實(shí)施方案中,執(zhí)行"重插裝"可以導(dǎo)致,例如確定其執(zhí)行 可以導(dǎo)致未對齊數(shù)據(jù)訪問事件的指令的位置。
      在一些實(shí)施方案中,使用在這里,短語"檢測未對齊數(shù)據(jù)訪問"可以包括,例如檢測 譯過代碼塊的執(zhí)行或后續(xù)執(zhí)行包括未對齊數(shù)據(jù)訪問或?qū)ξ磳R數(shù)據(jù)項(xiàng)的訪問。在一些實(shí)施 方案中,短語"檢測未對齊數(shù)據(jù)訪問"可以可附加地或可替換地包括,例如檢測被執(zhí)行時(shí) 可以導(dǎo)致未對齊數(shù)據(jù)訪問或?qū)ξ磳R數(shù)據(jù)項(xiàng)的訪問的指令的位置。
      在一些實(shí)施方案中,使用在這里,短語"處理未對齊數(shù)據(jù)訪問"、"避免未對齊數(shù) 據(jù)訪問"和/或"阻止未對齊數(shù)據(jù)訪問"可以包括,例如修改譯過代碼塊以創(chuàng)建己修改的 譯過代碼塊,或重譯原始代碼塊以創(chuàng)建已修改的譯過代碼塊。在一些實(shí)施方案中,相對于在未修改的譯過代碼塊執(zhí)行期間對未對齊數(shù)據(jù)的相應(yīng)訪問,當(dāng)已修改的譯過代碼塊執(zhí)行時(shí) 可以更有效地、更快地、以更短的時(shí)間和/或用更少量的處理周期訪問未對齊數(shù)據(jù)項(xiàng)。例 如,在一些實(shí)施方案中,"處理未對齊數(shù)據(jù)訪問"、"避免未對齊數(shù)據(jù)訪問"和/或"阻 止未對齊數(shù)據(jù)訪問"可以包括分部分,例如分成2部分、4部分、8部分、16部分或其他 適當(dāng)?shù)牟糠謹(jǐn)?shù),用多條訪問指令、用多條加載指令、用專用指令序列(例如在此詳細(xì)描述 的代碼l (Codel))或以其他根據(jù)本發(fā)明的實(shí)施方案的適當(dāng)?shù)姆绞?,分多個(gè)訪問階段來 訪問未對齊數(shù)據(jù)項(xiàng)。
      注意到在一些實(shí)施方案中,"處理未對齊數(shù)據(jù)訪問"、"避免未對齊數(shù)據(jù)訪問"禾口/ 或"阻止未對齊數(shù)據(jù)訪問"可以包括,例如其他適當(dāng)?shù)奶幚怼⒈苊?、阻止、?yōu)化和/或消 除數(shù)據(jù)未對齊訪問事件的方式。例如,在一些實(shí)施方案中,"處理未對齊數(shù)據(jù)訪問"、 "避免未對齊數(shù)據(jù)訪問"和/或"阻止未對齊數(shù)據(jù)訪問"可以包括例如通過對齊數(shù)據(jù)項(xiàng)、 將數(shù)據(jù)項(xiàng)從第一存儲位置移動到第二存儲位置、將數(shù)據(jù)項(xiàng)從第一存儲位置拷貝到第二存儲 位置或其他適當(dāng)?shù)姆绞絹硐龜?shù)據(jù)項(xiàng)的未對齊。
      如方框220所示,所述方法可以執(zhí)行對譯過代碼塊的輕插裝或分析。在一些實(shí)施方案 中,基本上所有或至少一些其執(zhí)行可能需要未對齊數(shù)據(jù)訪問的指令可以被輕插裝。輕插裝 可以包括,例如一條或更多條指令的修改,以便已修改的指令可以指示預(yù)定義條件的發(fā)生 或何時(shí)滿足了預(yù)定義標(biāo)準(zhǔn)。例如在一些實(shí)施方案中,如果未對齊數(shù)據(jù)訪問事件在譯過冷塊 中被檢測到,那么可以產(chǎn)生信號。例如在一個(gè)實(shí)施方案中,信號或指示可以由翻譯器150 中的檢測模塊提供給翻譯器150中的翻譯模塊。
      在一些實(shí)施方案中,方框220的輕插裝的目的或結(jié)果可以包括,例如檢測譯過代碼塊 的執(zhí)行是否可以引發(fā)未對齊數(shù)據(jù)訪問事件,以便如果需要的話進(jìn)一步的分析和優(yōu)化操作得 以應(yīng)用來處理、消除、避免或阻止未對齊數(shù)據(jù)訪問事件。如方框230所示,所述方法可以 檢查在譯過代碼塊中是否曾檢測到未對齊數(shù)據(jù)訪問事件。如果檢査結(jié)果是否定的,那么如 指向方框270的箭頭235所指示,譯過代碼塊可以被保存或使用。如果檢查結(jié)果是否定的, 則如方框240以及前進(jìn)方向的方框所示的,譯過代碼塊可以被進(jìn)一步的檢查、分析和/或 優(yōu)化。
      如方框240所示,進(jìn)一步的檢査、分析和優(yōu)化可以包括譯過代碼塊的重插裝或分析。 在一些實(shí)施方案中,基本上所有其執(zhí)行可能包括未對齊數(shù)據(jù)訪問的指令可以被重插裝。重 插裝可以包括,例如修改一條或更多條指令,以便一旦遇到未對齊數(shù)據(jù)訪問事件,可以提 供和/或記錄(register)關(guān)于未對齊數(shù)據(jù)訪問的信息。在一些實(shí)施方案中,所述信息可以 包括,例如對于引起未對齊數(shù)據(jù)訪問的譯過代碼塊中的指令或多條指令的指示。例如,所 述信息可以包括對未對齊數(shù)據(jù)的類型或?qū)傩缘闹甘?,如未對齊的粒度(granularity)。例 如在一個(gè)實(shí)施方案中,導(dǎo)致未對齊數(shù)據(jù)訪問事件的8位數(shù)據(jù)訪問可以被重插裝以指示未對 齊數(shù)據(jù)訪問具有l(wèi)字節(jié)(byte)的粒度或4字節(jié)的粒度。注意到可以標(biāo)識、檢測、記錄和/ 或分析未對齊數(shù)據(jù)訪問的各種其他的屬性、特性、特征和/或特征。如方框250所示,方框240中的重插裝可用于在指令級檢測和處理數(shù)據(jù)訪問未對齊。 在一些實(shí)施方案中, 一些或所有或基本上所有已被檢測出導(dǎo)致未對齊數(shù)據(jù)訪問的指令可以 被重建、重譯、修改、優(yōu)化和/或替換,以處理、消除、避免和/或阻止數(shù)據(jù)訪問未對齊, 從而允許對未對齊數(shù)據(jù)項(xiàng)的相對更有效的訪問,允許對未對齊數(shù)據(jù)項(xiàng)的相對更快的訪問, 或允許用可替換或?qū)iT的方式來訪問未對齊數(shù)據(jù)項(xiàng)。
      在一個(gè)實(shí)施方案中,如方框250所示的檢測和處理操作可以在熱塊的翻譯期間執(zhí)行。 例如,熱塊可以被標(biāo)識,并且方框250所示的檢測和處理操作可以在一個(gè)或更多個(gè)冷塊中 執(zhí)行,所述一個(gè)或更多個(gè)冷塊可能被包括在所述熱塊中。
      在一些實(shí)施方案中,方框250所示的檢測和處理操作可以例如用如下的偽代碼來執(zhí)

      〃測試位0以觀察是否地址是2字節(jié)對齊
      〃適當(dāng)?shù)卦O(shè)置判斷語p.mis和p.al
      〃將使用p.mis和p.al來斷定下面的指令
      tbit p.mis, p.al = r,addr, 0
      〃如果對齊2字節(jié)加載
      (p.al) ld2 r.val = [r.addr]
      〃如果未對齊,分別加載每一個(gè)字節(jié)
      (p.mis) ldl r.val = [r.addr]
      (p.mis) add r.addrH = 1, r.addr
      (p.mis) Wl r.valH = [r.addrH]
      //合并分別加載的字節(jié)
      (p.mis) dep r.val = r.valH, r.val, 8, 8
      代碼l
      注意到代碼1僅僅是以示例性目的被示出,并且本發(fā)明的實(shí)施方案在此方面不受限 制;根據(jù)本發(fā)明的實(shí)施方案,其他適當(dāng)?shù)闹噶?、指令集、操作、偽碼或算法可用來補(bǔ)充代 碼l或取代代碼l。
      例如在本發(fā)明的一些實(shí)施方案中,方框250所示的檢測和處理操作可以使用可替換的 代碼,所述代碼可以包括各種與代碼l相關(guān)的改變。例如在一些實(shí)施方案中, 一個(gè)或更多 個(gè)更早的未對齊數(shù)據(jù)訪問事件的檢測結(jié)果可以被記錄和/或被追蹤以增強(qiáng)和/或免除一個(gè)或 幾個(gè)隨之發(fā)生的對未對齊數(shù)據(jù)訪問事件的檢測。例如在一個(gè)實(shí)施方案中,例如在分析熱塊 的期間在其上檢測到未對齊數(shù)據(jù)訪問的存儲器地址的位置可以被記錄和/或追蹤。記錄和 追蹤可以例如使用適當(dāng)?shù)牧斜?、追蹤列表、堆棧、查找表、?shù)組、數(shù)據(jù)庫、變量、寄存器、 聯(lián)合(union)或任何其他適當(dāng)?shù)姆绞絹韴?zhí)行。先前檢測結(jié)果的記錄、追蹤和/或存儲可以例如用處理器141、存儲器單元142、儲存單元143、翻譯器150、利用處理器141來執(zhí)行
      的適當(dāng)?shù)能浖?或其他適當(dāng)?shù)挠?jì)算平臺110的組件來執(zhí)行。
      方框250所示的檢測和處理操作中, 一些實(shí)施方案可以,例如,在第一指令上分析和 /或執(zhí)行插裝。因此,可以檢測到,例如由第一指令訪問第一存儲器地址可以導(dǎo)致未對齊 數(shù)據(jù)訪問。在這種情況下,第一存儲器地址的位置可以例如使用可存儲在例如存儲器單元 142和/或儲存單元143中的記錄或追蹤列表而被記錄和/或追蹤。當(dāng)?shù)诙噶钚枰L問第 二存儲器地址時(shí),為了檢測未對齊數(shù)據(jù),本發(fā)明的方法可以例如使用可存儲在存儲器單元 142和/或儲存單元143中的追蹤列表或記錄來檢查第二存儲器地址的位置與第一存儲器地 址的位置是否一致。例如,如果對第一指令的分析已經(jīng)標(biāo)識了第一存儲器地址是引起未對 齊數(shù)據(jù)訪問的原因,則肯定的檢查結(jié)果可以免除分析和/或插裝第二指令的需要。注意到 在一些實(shí)施方案中,為了檢測未對齊數(shù)據(jù),不同的存儲器地址可以是一致的;例如,如果 第一和第二存儲器地址的差別或距離是N字節(jié),那么出于數(shù)據(jù)對齊檢測的目的,考慮到N 字節(jié)的未對齊量和/或K字節(jié)的未對齊量(其中K是N的因子),第一和第二存儲器地址 可以是一致的。例如在一個(gè)實(shí)施方案中,為了達(dá)到檢測8字節(jié)數(shù)據(jù)未對齊量的目的,或達(dá) 到檢測4或2字節(jié)數(shù)據(jù)未對齊量的目的,存儲器地址L和存儲器地址L+8可以是一致的。
      類似地,在一些實(shí)施方案中,在方框250所示的檢測和處理操作中,在一個(gè)或更多個(gè) 對未對齊數(shù)據(jù)訪問的檢測中被使用的參數(shù)、特征、屬性、變量、特性、結(jié)果、檢查和/或 計(jì)算中的一些或全部可以用于或重用于后續(xù)的檢測。例如,代碼l中的兩字節(jié)加載的實(shí)施 例可以使用一個(gè)或更多個(gè)斷定(predicate),所述斷定在一個(gè)或更多個(gè)先前的對未對齊數(shù) 據(jù)訪問的檢測和分析中被設(shè)置、確定和/或計(jì)算。
      在一些實(shí)施方案中,執(zhí)行方框250所示的檢測和處理操作可以包括,例如,在檢測到 未對齊數(shù)據(jù)訪問時(shí)使用代碼序列或指令集來執(zhí)行數(shù)據(jù)訪問;所述代碼序列或指令集可以相 對長或包括相對大數(shù)量的指令或操作。在一些實(shí)施方案中,這樣的代碼序列和指令集可以 被移動到軟件應(yīng)用的適當(dāng)位置。例如,在一個(gè)實(shí)施方案中,調(diào)度器進(jìn)程(process)可以將 這些指令中的一些或全部移動到譯過代碼塊的外部位置或遠(yuǎn)程(remote)位置,例如作為 子例程(subroutine)、過程(procedure)、函數(shù)等。在執(zhí)行期間中,譯過代碼塊中的指令 可以一直被執(zhí)行直到到達(dá)了 "分支(branchout)"指令,在該點(diǎn)上可以繼續(xù)執(zhí)行外部指令 或遠(yuǎn)程指令。外部或遠(yuǎn)端指令可以包括最后的指令,所述最后的指令執(zhí)行可以導(dǎo)致譯過代 碼塊從它的"分支"的點(diǎn)繼續(xù)執(zhí)行到外部或遠(yuǎn)程指令。
      如方框260所示, 一些實(shí)施方案可以選擇性地進(jìn)一步優(yōu)化或分析譯過代碼塊,例如, 以檢測和處理未對齊數(shù)據(jù)訪問,所述未對齊數(shù)據(jù)訪問可能在上述優(yōu)化與分析之后或熱塊被 翻譯過之后出現(xiàn)。例如,在一個(gè)實(shí)施方案中,未對齊數(shù)據(jù)訪問可以在相對地優(yōu)化過的譯過 代碼產(chǎn)生之后出現(xiàn)。在一些實(shí)施方案中,該結(jié)果可以例如使用進(jìn)一步的優(yōu)化操作來排除、 處理、避免或減輕,所述優(yōu)化操作可以連同方框250所示的檢測和處理操作一起進(jìn)行,或 在另外適當(dāng)?shù)臅r(shí)間進(jìn)行。例如,在方框250所示的操作期間,可以檢測到雖然指令沒有產(chǎn)生或引起未對齊數(shù)據(jù)訪問事件,但所述指令是導(dǎo)致執(zhí)行期間未對齊數(shù)據(jù)訪問的潛在的候選 者。該指令可以稱之為"候選指令"??梢岳缦鄬τ谝粋€(gè)或更多個(gè)適當(dāng)?shù)臉?biāo)準(zhǔn)或條件, 例如指令類型、指令導(dǎo)致未對齊數(shù)據(jù)訪問的估計(jì)概率、或檢測到對指令導(dǎo)致未對齊數(shù)據(jù)訪 問的大概率,執(zhí)行對候選指令的標(biāo)識、檢測、分類、記錄和/或評價(jià)。
      根據(jù)本發(fā)明的一些實(shí)施方案,方框260所示的操作可以選擇性地包括,例如一旦檢測
      到候選指令就針對該候選指令執(zhí)行插裝。如果利用所使用的插裝檢測到未對齊數(shù)據(jù)訪問,
      那么譯過代碼塊可以被丟棄。另外,所述方法可以記錄這樣的指示當(dāng)原始代碼塊被翻譯 時(shí),基本上所有原始代碼塊中的候選指令可以以一種檢測和處理未對齊數(shù)據(jù)訪問的方式 (例如釆用代碼1或任何其他適當(dāng)?shù)拇a序列)被翻譯。被記錄的指示可以存儲在例如翻 譯器150、存儲器單元142和/或儲存單元143中。在一些實(shí)施方案中,所述指示不僅僅與 候選指令有關(guān),還與基本上所有的具有候選指令類型的指令有關(guān)。 一旦原始代碼塊翻譯完, 被記錄的指示可以被檢測或追蹤,從而可以以檢測和處理未對齊數(shù)據(jù)訪問的方式(例如使 用代碼1或任何其他適當(dāng)?shù)拇a序列)來翻譯原始代碼塊中基本上所有的候選指令或具有 候選指令類型的所有指令。
      在一些實(shí)施方案中,上述的一個(gè)或更多個(gè)操作,例如方框240中的數(shù)據(jù)未對齊的檢測 和處理操作、參考方框240所述的代碼修改、或方框260中的優(yōu)化操作,可以通過一個(gè)或 更多個(gè)適當(dāng)?shù)能浖?或硬件組件執(zhí)行。例如,在一些實(shí)施方案中,代碼修改可以由翻譯 器150或由翻譯器150的外部模塊或組件來執(zhí)行。在一個(gè)實(shí)施方案中,代碼的修改可以通 過例如修改翻譯器150或修改其修改會導(dǎo)致代碼修改的另外的適當(dāng)?shù)慕M件或模塊來執(zhí)行。 類似地,數(shù)據(jù)未對齊的檢測和/或處理可以由翻譯器150、位于翻譯器150內(nèi)部或外部的一 個(gè)或更多個(gè)模塊來執(zhí)行。
      在本發(fā)明的一些實(shí)施方案中,上述的一個(gè)或更多個(gè)操作,例如方框210中的翻譯操作、 方框220中的輕插裝、方框230中的數(shù)據(jù)未對齊檢査、方框240中的重插裝、方框250中 的數(shù)據(jù)未對齊檢測和處理操作、方框260中的優(yōu)化操作或其他適當(dāng)?shù)牟僮骺梢员恢貜?fù)執(zhí) 行,或執(zhí)行不止一次,或以不同的操作順序執(zhí)行。此外,在一些實(shí)施方案中,作為這些操 作中的一個(gè)或更多個(gè)的執(zhí)行的結(jié)果,譯過代碼塊可以被丟棄、刪除、替換、檢驗(yàn)(inspect)、 分析、修改、優(yōu)化、重建、再生或重譯。如方框270所述,在執(zhí)行了一個(gè)或更多個(gè)或所有 上述操作之后,或執(zhí)行一個(gè)或更多個(gè)上述操作的幾次迭代或重復(fù)之后,作為結(jié)果的譯過代 碼塊可以被保存和使用,或被記錄作為可以被保存和使用的譯過代碼塊。
      本發(fā)明的實(shí)施方案可以允許各種益處。例如,在一些實(shí)施方案中,數(shù)據(jù)未對齊檢測和 處理可以顯著減少處理時(shí)間和/或處理次數(shù),或可以顯著改善性能。在一個(gè)實(shí)施方案中, 例如在沒有數(shù)據(jù)未對齊檢測和處理情況下需要1236秒來完成的工作量(workload),根 據(jù)本發(fā)明的實(shí)施方案使用數(shù)據(jù)未對齊檢測和處理可以只需大概133秒來完成。除了上述的 益處或與上述益處不同,本發(fā)明的一些實(shí)施方案可以允許各種其他的益處。本發(fā)明的一些實(shí)施方案例如可以使用可以存儲指令或指令集的機(jī)器可讀介質(zhì)或制品 來實(shí)現(xiàn),如果所述指令或指令集被例如計(jì)算平臺110、處理器141或其他適當(dāng)?shù)臋C(jī)器的機(jī) 器執(zhí)行,導(dǎo)致該機(jī)器執(zhí)行根據(jù)本發(fā)明的實(shí)施方案的方法和/或操作。這樣的機(jī)器可以包括, 例如任何適當(dāng)?shù)奶幚砥脚_、計(jì)算平臺、計(jì)算設(shè)備、處理設(shè)備、計(jì)算系統(tǒng)、處理系統(tǒng)、計(jì)算 機(jī)、處理器等,并且可以使用硬件和/或軟件的任何適當(dāng)組合來實(shí)現(xiàn)。機(jī)器可讀介質(zhì)或制 品可以包括,例如任何適當(dāng)類型的存儲器單元(例如存儲器單元142)、存儲器設(shè)備、存 儲器制品、存儲器介質(zhì)、存儲設(shè)備、存儲制品、存儲介質(zhì)和/或儲存單元(例如儲存單元 143),例如存儲器、可移去或不可移去的介質(zhì)、可擦除或不可擦除的介質(zhì)、可寫或可重 寫的介質(zhì)、數(shù)字或模擬介質(zhì)、硬盤、軟盤、致密盤只讀存儲器(CD-ROM)、可記錄致密 盤(CD-R)、可重寫致密盤(CD-RW)、光盤、磁介質(zhì)、各種類型的數(shù)字多用途盤(DVD)、 磁帶、卡帶等。指令可以包括任何適當(dāng)類型的代碼,例如源代碼、編譯后的代碼、解釋后 的代碼、可執(zhí)行代碼、靜態(tài)代碼、動態(tài)代碼等,并且可以使用任何適當(dāng)?shù)母呒墶⒌图?、?向?qū)ο蟮?、可視?visual)、經(jīng)過編譯的和/或經(jīng)過解釋的編程語言,例如C、 C++、 Java、 BASIC、 Pascal、 Fortran、 Cobol、匯編語言、機(jī)器碼等,來實(shí)現(xiàn)所述指令。
      本發(fā)明的一些實(shí)施方案可以由軟件、硬件、或者適合于特定應(yīng)用或根據(jù)特定的設(shè)計(jì)需 求的軟件和/或硬件的任何組合來實(shí)現(xiàn)。本發(fā)明的實(shí)施方案可以包括單元和/或子單元,所 述單元和/或子單元可以彼此分開或完全或部分組合在一起,并且可以使用本領(lǐng)域眾所周 知的專用、多用途或通用處理器或設(shè)備來實(shí)現(xiàn)。本發(fā)明的一些方案可以包括緩沖區(qū)、寄存 器、儲存單元和/或存儲器單元,用于短時(shí)或長期存儲數(shù)據(jù)或者便于特定實(shí)施方案的操作。
      雖然這里已經(jīng)圖示和描述了本發(fā)明的某些特征,但是本領(lǐng)域的技術(shù)人員將會想到很多 修改、替換、改變和等同物。因此,應(yīng)該理解,所附權(quán)利要求書想要覆蓋所有這些修改和
      /或改變。
      權(quán)利要求
      1.一種方法,包括檢測由從適合于第一計(jì)算平臺的第一格式翻譯到適合于第二計(jì)算平臺的第二格式的代碼塊的執(zhí)行導(dǎo)致的未對齊數(shù)據(jù)訪問;以及根據(jù)所述未對齊數(shù)據(jù)訪問來修改所述代碼塊。
      2. 如權(quán)利要求1所述的方法,其中檢測操作包括執(zhí)行所述代碼塊的插裝,以檢測是 否所述代碼塊的執(zhí)行導(dǎo)致了所述未對齊數(shù)據(jù)訪問。
      3. 如權(quán)利要求2所述的方法,其中檢測操作包括執(zhí)行所述代碼塊中的至少一條指令 的插裝,以檢測其執(zhí)行導(dǎo)致了所述未對齊數(shù)據(jù)訪問的指令的位置。
      4. 如權(quán)利要求1所述的方法,其中檢測操作包括執(zhí)行所述代碼塊中的至少一條指令 的插裝,以檢測其執(zhí)行導(dǎo)致了所述未對齊數(shù)據(jù)訪問的指令的位置。
      5. 如權(quán)利要求1所述的方法,其中修改操作包括給所述代碼塊添加指令,以將所述 代碼塊的執(zhí)行分支到其執(zhí)行用于處理所述未對齊數(shù)據(jù)訪問的代碼序列。
      6. 如權(quán)利要求1所述的方法,其中修改操作包括修改所述代碼塊,以處理所述代碼 塊在后續(xù)執(zhí)行中的未對齊數(shù)據(jù)訪問。
      7. 如權(quán)利要求1所述的方法,還包括將所述代碼塊從所述第一格式翻譯為所述第二格式。
      8. 如權(quán)利要求l所述的方法,其中檢測操作包括檢測從適合于基于32位的計(jì)算平臺 的格式翻譯到適合于基于64位的計(jì)算平臺的格式的代碼塊的執(zhí)行導(dǎo)致的未對齊數(shù)據(jù)訪問。
      9. 一種裝置,包括處理器,所述處理器用于檢測由從適合于第一計(jì)算平臺的第一格式翻譯到適合于第二 計(jì)算平臺的第二格式的代碼塊的執(zhí)行導(dǎo)致的未對齊數(shù)據(jù)訪問,并且用于根據(jù)所述未對齊數(shù) 據(jù)訪問來修改所述代碼塊。
      10. 如權(quán)利要求9所述的裝置,其中所述處理器能夠執(zhí)行所述代碼塊的插裝,以檢測是否所述代碼塊的執(zhí)行導(dǎo)致了所述未對齊數(shù)據(jù)訪問。
      11.如權(quán)利要求IO所述的裝置,其中所述處理器能夠執(zhí)行所述代碼塊中的至少一條 指令的插裝,以檢測其執(zhí)行導(dǎo)致了所述未對齊數(shù)據(jù)訪問的指令的位置。
      12. 如權(quán)利要求9所述的裝置,其中所述處理器能夠執(zhí)行所述代碼塊中的至少一條指 令的插裝,以檢測其執(zhí)行導(dǎo)致了所述未對齊數(shù)據(jù)訪問的指令的位置。
      13. 如權(quán)利要求9所述的裝置,其中所述處理器能夠給所述代碼塊添加指令,以將所述代碼塊的執(zhí)行分支到其執(zhí)行處理所述未對齊數(shù)據(jù)訪問的代碼序列。
      14. 如權(quán)利要求9所述的裝置,其中所述處理器能夠修改所述代碼塊,以處理所述代 碼塊在后續(xù)執(zhí)行中的未對齊數(shù)據(jù)訪問。
      15. 如權(quán)利要求9所述的裝置,其中所述處理器能夠在檢測到所述未對齊數(shù)據(jù)訪問之 前將所述代碼塊從所述第一格式翻譯為所述第二格式。
      16. 如權(quán)利要求9所述的裝置,其中所述第一平臺是基于32位的計(jì)算平臺并且所述 第二計(jì)算機(jī)體系結(jié)構(gòu)是基于64位的計(jì)算平臺。
      17. —種計(jì)算平臺,包括處理器,所述處理器用于檢測由從適合于第一計(jì)算平臺的第一格式翻譯到適合于第二 計(jì)算平臺的第二格式的代碼塊的執(zhí)行導(dǎo)致的未對齊數(shù)據(jù)訪問,并且用于根據(jù)所述未對齊數(shù) 據(jù)訪問來修改所述代碼塊;以及可操作地與所述處理器相關(guān)聯(lián)的動態(tài)隨機(jī)訪問存儲器,所述動態(tài)隨機(jī)訪問存儲器用于 存儲所述代碼塊的至少一部分。
      18. 如權(quán)利要求17所述的裝置,其中所述處理器能夠執(zhí)行所述代碼塊的插裝,以檢 測是否所述代碼塊的執(zhí)行導(dǎo)致了所述未對齊數(shù)據(jù)訪問。
      19. 如權(quán)利要求18所述的裝置,其中所述處理器能夠執(zhí)行所述代碼塊中的至少一條 指令的插裝,以檢測其執(zhí)行導(dǎo)致了所述未對齊數(shù)據(jù)訪問的指令的位置。
      20. 如權(quán)利要求17所述的裝置,其中所述處理器能夠執(zhí)行所述代碼塊中的至少一條 指令的插裝,以檢測其執(zhí)行導(dǎo)致了所述未對齊數(shù)據(jù)訪問的指令的位置。
      21. —種其上存儲有指令集的機(jī)器可讀介質(zhì),如果所述指令被機(jī)器執(zhí)行導(dǎo)致所述機(jī)器 執(zhí)行方法,所述方法包括檢測由從適合于第一計(jì)算平臺的第一格式翻譯到適合于第二計(jì)算平臺的第二格式的 代碼塊的執(zhí)行導(dǎo)致的未對齊數(shù)據(jù)訪問;以及根據(jù)所述未對齊數(shù)據(jù)訪問來修改所述代碼塊。
      22. 如權(quán)利要求21所述的機(jī)器可讀介質(zhì),其中所述導(dǎo)致檢測操作的指令導(dǎo)致執(zhí)行所述代碼塊的插裝,以檢測是否所述代碼塊的執(zhí)行導(dǎo)致所述未對齊數(shù)據(jù)訪問。
      23. 如權(quán)利要求22所述的機(jī)器可讀介質(zhì),其中所述導(dǎo)致檢測操作的指令導(dǎo)致執(zhí)行所 述代碼塊中的至少一條指令的插裝,以檢測其執(zhí)行導(dǎo)致了所述未對齊數(shù)據(jù)訪問的指令的位置。
      24. 如權(quán)利要求21所述的機(jī)器可讀介質(zhì),其中所述導(dǎo)致檢測操作的指令導(dǎo)致執(zhí)行所 述代碼塊中的至少一條指令的插裝,以檢測其執(zhí)行導(dǎo)致了所述未對齊數(shù)據(jù)訪問的指令的位置。
      25. 如權(quán)利要求21所述的機(jī)器可讀介質(zhì),其中所述指令包括翻譯器的至少一部分。
      26. 如權(quán)利要求21所述的機(jī)器可讀介質(zhì),其中所述指令包括執(zhí)行層的至少一部分。
      27. 如權(quán)利要求21所述的機(jī)器可讀介質(zhì),其中所述指令包括操作系統(tǒng)的至少一部分。
      28. 如權(quán)利要求21所述的機(jī)器可讀介質(zhì),其中所述指令包括編譯器的至少一部分。
      全文摘要
      用于檢測和處理未對齊數(shù)據(jù)訪問的設(shè)備、系統(tǒng)和方法。例如,方法可以包括檢測由從適合于第一計(jì)算平臺的第一格式翻譯到適合于第二計(jì)算平臺的第二格式的代碼塊的執(zhí)行導(dǎo)致的未對齊數(shù)據(jù)訪問,以及根據(jù)所述未對齊數(shù)據(jù)訪問來修改所述代碼塊。
      文檔編號G06F9/318GK101593094SQ20091013940
      公開日2009年12月2日 申請日期2004年10月25日 優(yōu)先權(quán)日2003年11月26日
      發(fā)明者奧納·埃茨恩, 陳建平, 霍羅爾德·西奧多·德沃爾 申請人:英特爾公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1