TWI279715B - Method, system and machine-readable medium of translating and executing binary of program code, and apparatus to process binaries - Google Patents
Method, system and machine-readable medium of translating and executing binary of program code, and apparatus to process binaries Download PDFInfo
- Publication number
- TWI279715B TWI279715B TW091138037A TW91138037A TWI279715B TW I279715 B TWI279715 B TW I279715B TW 091138037 A TW091138037 A TW 091138037A TW 91138037 A TW91138037 A TW 91138037A TW I279715 B TWI279715 B TW I279715B
- Authority
- TW
- Taiwan
- Prior art keywords
- binary code
- instruction set
- set architecture
- code
- instruction
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
1279715 ⑴ 玖、發明說明 (發明說明應敘明:發明所屬之技術領域、先前技術、内容、實施方式及圖式簡單說明) 發明範圍 本發明和電腦處理有關,更特別的是,本發明和橫跨不 同指令集架構之二進位碼轉換或對一相同指令集架構之不 同最佳化程度有關。 發明背景 儘管現行程式碼之編譯器係設計用於產生二進位碼,俾 能擷取最新發展之現行指令集架構(ISA)之優點,然基於早 期指令集架構所產生之二進位碼並無法利用此等最新之發 展,二進位碼轉換乃為一最常見之方法用於將基於一指令 集架構之指定程式碼/應用程式之二進位碼轉換為基於不 同指令集_構或相同指令集架構之不同子集之指定程式碼 /應用程式之二進位碼,不同指令集架構可為一不同架構 或該早期指令集架構之先進版本。 一般而言,吾人預期二進位碼轉換程式可準確地遞交由 基於早期指令集架構之原始轉換程式所提供之功能,易言 之,吾人冀望二進位碼轉換能完整地保存由早期指令集架 構所定義之程式語意,並因此具有完整之回溯相容性,因 此,早期指令集架構之需求包括了由此早期指令集架構所 定義之和正常指令流、資料準確性、例外行為及其他程式 執行邊際效應有關之項目。 此等語意需求通常限制了二進位碼轉換之效用-不論是 藉由對可轉換之二進位碼加諸某些限制或藉由限制二進位 碼轉換所能利用新指令集架構之優點皆然,舉例而言,若 1279715 (2) 發明說明續頁 兩個不同指令集架構並不支援同一浮點格式、範圍或精準 度,則介於此等指令集架構間之浮點運算二進位碼轉換將 會有困難且是不符效益的。 圖示概要描述 本發明之具體實施例可藉由參考以下描述及說明此等具 體實施例之所附圖示而獲致最佳之瞭解,在圖示中之編碼 原則如下:對於一圖示中指定元件之前導數字係和圖示號 碼有關,例如,系統100係位於圖1,然而,對於不同圖示 中之相同元件則以相同元件編號表示。 在圖示中: 圖1說明一系統100範例,其包含依據本發明具體實施例 控制指令集架構間二進位碼轉換相容性程度之處理器102 及 104。 圖2說明依據本發明具體實施例之一處理器及一相關記 憶體之較詳細圖示。 圖3為一指令轉換流程圖,說明依據本發明具體實施例, 將基於第一指令集架構之二進位碼,轉換為來自部份和第 一指令集架構相容之第二指令集架構之指令。 圖4說明依據本發明具體實施例之原始碼及產生之組合 語言碼,其中一暫存器係用於或未用於作為硬體堆疊之一 部份。 詳細描述 在以下描述中,為了說明之目的,本發明提供數項詳細 說明俾令讀者對本發明有充份之瞭解,而明確的是,對於 1279715 發明說明續頁 (3) 熟知本領域之人士而言,其#需此等詳細說明即可實踐本 發明。 本發明之具體實施例可用於一部份相容指令集架構,中 由第一指令集架構產生之程式二進位碼係轉換為引用第二 指令集架構之某些特徵之二進位碼,而同時仍和第一指令 集架構維持部份相容。在一具體施例中,該相容性之程度 係由程式環境所控制,該環境包括(但不限於)使用者、編 譯器及作業系統,在此一具體實施例中,一相容性型式集 或變換集係定義於第二指令架構之頂層,因此,該程式環 境可明確地設定所欲之相容性型式。在一硬體轉換之具體 實施例中,相容性型式可透過伴隨二進位碼啟始執行之複 數個指令行旗標加以設定。 因此,如將於以下進行更詳細描述者,本發明之具體實 施例可用於改進執行效率(和第二指令集架構有關),其付 出之代價為稍為偏離精準程式語意(和第一指令集架構有 關)。 再者,在一具體實施例中,二進位碼(描述於此間)所植 基之不同指令集架構可為複數個不同指令集架構其中之 一,包含(但不受限於)不同複合指令集電腦(CISC)指令集 及不同縮減指令集電腦(RISC)指令集,此等指令集架構之 例包括 Intel® IA-32及 Intel® IA-64。 圖1說明依據本發明具體實施例之範例系統100,其包含 用於控制介於指令集架構間二進位碼轉換之相容性程度的 處理器102和104,儘管在此描述係依循系統100之脈絡,本 1279715 (4) 發明說明續頁 發明可運用於内含任何適切之一或多具積體電路之適切電 腦系統。 如圖1所說明的,電腦系統100包含處理器ι〇2及處理器 104,電腦系統1〇〇亦包含記憶體132、處理器匯流排ιι〇及 輸入/輸出控制器集線器(ICH)140。處理器1〇2及ι〇4、記憶 體132及ICH 140耦合至處理器匯流排11〇,處理器1〇2及ι〇4 可各自包含任何適切之處理器架構,且在一具體實施例中 包含使用於(例如)美國加州聖塔科拉那Intel⑧公司生產之 Pentium®家族處理器内之Intel⑧架構。其他具體實施例之電 月包系滅10 0可包含1、3或更多處理器,任一處理器可依據 本發明具體實施例以執行指令集。 記憶體132儲存用於(例如)電腦系統1〇〇之資料及/或指 令,且可包含任何適切之記憶體,像是(例如)動態隨機存 取記憶體(DRAM)。圖形控制器134控制資訊顯示於一和圖 形顯示器134耦合之適切顯示器136,像是(例如)陰極射線 管(CRT)或液晶顯示幕(LCD)。 IC Η 14 0對電腦系統1 〇 〇之I / 〇裝置或週邊元件提供一介 面’ ICH 140可包含任何適切之介面控制器以提供任何適切 之通訊鏈結至處理器102/104、記憶體132及/或任何和iCH 140通訊之適切之裝置或元件。在一具體實施例中,ich 140 對每一介面提供適切之調制及緩衝。
在一具體實施例中,ICH 140提供一介面至一或多項適切 之整合驅動電子(IDE)驅動器142,像是(例如)用於儲存資 料及/或指令之硬碟驅動器(HDD)或唯讀光碟驅動器(CD 1279715 (5) I發明說明續頁 ROM)、及透過萬用序列匯流排(usb)埠144之USB裝置。在 一具體實施例中,ICH 140亦提供一介面至鍵盤15]ί、滑鼠 152、經由一或多具平行埠153連接之一或多項適切裝置(像 是(例如)印表機)、經由一或多項序列埠丨54連接之一或多 項適切裝置、及一軟碟驅動器1 5 5等。 再者’電腦系統1 00包括轉換單元1 8〇。在一具體實施例 中,轉換單元180可為一留駐於主記憶體132及/或處理器1〇2 及104内之作業(process)或工作,且可在處理器1〇2及1〇4内 執行’然而’本發明之具體實施例並非受限於此,傳輸單 元180可為用於執行此間所描述作業(將於以下作更詳細描 述)之不同型式硬體(像是數位邏輯)。 因此,電腦系統100包含一機器可讀取式媒體,其上儲 存著指令集(軟體)可具體實踐在此描述之一項或全部之方 去’舉例而τ ’軟體可完全或至少部份駐留於記憶體1 32 及/或處理态1 02/1 04内,為了說明之目的,字詞”機器可讀 取式媒fa應包含以機器(例如電腦)可讀取型式提供(亦即 儲存及/或傳送)資訊之任何機制,例如,一機器可讀取式 媒包括唯謂記憶體(R〇M)、隨機存取記憶體、磁 士 =存媒體、光學儲存媒體、快閃記憶裝置、電學、光學、 声予或其他型式之傳導訊號(例如載波、紅外線訊號、數 k成號等等)等。 2 BE1 、 依據本發明具體實施例之處理器更詳細圖示, 特別的 口 疋’圖2更詳細地說明處理器丨〇2/丨〇4圖示(在此之後 簡矛嚴"φ" 現器102”)’如圖中所示,記憶體介面單元27〇耦合 -10- (6) 1279715 發明說明續頁 至快取記憶體緩衝區256、暫存器檔25〇(其包含通用暫存器 252及特殊用途暫存器254)及指令緩衝區2〇2,使得記憶體 介面孚兀270可擷取巨集指令及相關運算元,並將此等資 料儲存於指令緩衝區202及快取記憶體緩衝區256、通用暫 存器252及/或特殊用途暫存器254。再者,快取記憶體緩衝 區256及暫存器檔案250耦合至解碼器2〇4、功能單元212_218 及隱藏邏輯228。 解碼為204輕合至指令暫存器202,俾使解碼器204可自指 令緩衝區202擷取指令’解碼器2〇4可擷取此等指令並將其 解碼以決定指定之指令並在内部指令集内產生複數個 指令’舉例而言,在一具體實施例中,由解碼器2〇4接收 之指令稱為巨集指令,而由解碼器204產生之指令稱為微 指令(或微運算),解碼器204亦耦合至指令排程器208,俾 使指令排程器208可接收此等微運算以利功能單元2丨2-218 執行排程之指令。 指令排程器208耦合至分派邏輯226,俾使指令排程器208 得傳送功能單元212-21 8將執行之指令,分派邏輯226耦合 至功能單元2 12 - 2 1 8 ’俾使分派邏輯2 2 6得傳送指令至功能 單元212-218執行’功能單元212-21 8可為複數個不同執行單 元,包含(但不限於)一整數算術邏輯單元(ALU)、一浮點 單元、記憶體載入/儲存單元等等,功能單元2 12-2 1 8亦耦 合至隱藏邏輯228,俾使功能單元212-21 8執行該等指令並 將結果傳送至隱藏邏輯228。隱藏邏輯228可將此等結果傳 送至處理器102内部或外部之記憶體,像是暫存器檔250内 1279715 j_ Π、 I發明說明續頁 之暫存器或快取記憶體緩衝區256、或記憶體132(於處理器 102外部)。 電腦系統100之作業現將參照圖3之流程圖進行更詳細說 明,特別的是,圖3說明一依據本發明具體實施例之指令 轉換流程圖,用以將基於第一指令集架構之二進位碼轉換 至部份和該第一指令集架構相容之第二指令集架構指令。 圖3之流程圖300為電腦系統100之解碼-執行流程之一部 份,然而,本發明之具體實施例並非受限於此,舉例而言, 在另一具體實施例中,說明於圖3流程圖300之轉換作業可 獨立於電腦系統100之解碼-執行流程之外進行,在此一具 體實施例中,該經轉換之指令可儲存於一特定緩衝區中(可 為處理器102内部或外部之緩衝區),像是一追蹤快取記憶 體(未顯示於圖1中),因此,此等轉換指令可自此特定緩 衝區擷取並於處理器102内執行,故在此一具體實施例中, 相容性程度是具有選擇性的,使得處理器102依現行知識 或資源而能夠或無法執行轉換之指令,例如,該等轉換之 指令可在第一環境下執行(其中該等轉換之指令被完全利 用),而卻無法在第二環境下執行(其中該轉換指令之執行 並不會增加執行效益),再者,在一具體實施例中,該等 轉換指令之子集係納入二進位碼之執行,例如,一指定指 令可被轉換多次,然而在一具體實施例中,此轉換之指令 被納入二進位碼執行之次數將少於該指令被轉換之全部次 數。 在作業方塊302内,其接收基於第一指令集架構之第一
-12 - 1279715 _ (8) 發明說明續頁 程式二進位碼,在一具體實施例中,轉換單元1 80接收此 基於第一指令集架構之第一程式二進位碼,在一具體實施 例中,解碼器204接收此基於第一指令集架構之第一程式 二進位碼,在一具體實施例中,轉換單元180及解碼器204 兩者可接收此基於第一指令集架構之第一程式二進位碼。 在一具體實施例中,轉換單元1 80係用於執行一軟體轉 換,其轉換基於第一指令集架構之第一二進位碼至基於第 一指令集架構及第二指令集架構組合之第二或不同二進位 碼。在一具體實施例中,解碼器204係用於執行一硬體轉 換,其轉換基於第一指令集架構之第一二進位碼至基於第 一指令集架構及第二指令集架構組合之第二或不同二進位 碼。如將於以下進行更詳細說明者,在一具體實施例中, 由轉換單元1 80進行之二進位碼軟體轉換可結合解碼器204 對相同二進位碼進行之硬體轉換。在另一具體實施例中, 由轉換單元1 80執行之二進位碼軟體轉換獨立於解碼器204 對相同二進位碼進行之硬體轉換,以此類推。 在作業方塊304中,其將檢視指令集架構執行旗標以決 定第一二進位碼之可能轉換,在一具體實施例中,轉換單 元1 80檢視指令集架構執行旗標以決定第一二進位碼之可 能轉換。在一具體實施例中,解碼器204檢視令集架構執 行旗標以決定第一二進位碼之可能轉換。儘管轉換單元1 80 可藉由不同技術決定第一二進位碼之可能轉換,在一具體 實施例中,轉換單元1 8 0藉由檢視指令行旗標以決定此第 一二進位碼之可能轉換,該旗標係伴隨此第一二進位碼之 -13 - (9) 1279715 ~' ——~~.— 開始執行(可包含轉換)命令而被接收,舉例而言,若第— 〜進位碼之檔名為’’binary.exe”,則包含指令行旗標以開始 執行之命令則可為"binary.exe -f64 -s -〇,,,其中該指令行旗 標為(l)-f64(2)-s及(3)-〇,此等指令行旗標可指示此第一二 進位碼之不同轉換。 為助於暸解,轉換單元1 80可將’’’’解譯為指示複數個單 〜指令之轉換(基於未支援相同指令多重資料(SIMD)作業 之栺令集架構)而成為支援此等作業之位於第二或不同指 々集架構内之一項SIMD指令。如將於以下進行更詳細說明 的’描述於此之不同指令集架構執行旗標係作為範例而非 意於限制,故位於基於第一指令集架構之第一二進位碼内 〈其他指令及作業可轉換為基於第二或不同指令集架構之 其他指令及作業。再者,在另一具體實施例中(取代且/或 結合檢視命令行旗標之方式),轉換單元1 80可藉由檢視不 同^憶體位置以決定第一二進位碼之可能轉換,像是檢視 圖2顯示之暫存器檔250内之暫存器以瞭解可能之不同轉 換。 現返回至圖3泥程圖300之作業方塊304,解碼器204亦可 檢视指令集架構執行旗標以決定第一二進位碼之可能轉 換,在一具體實施例中,解碼器2〇4可藉由詢問暫存器(像 是圖2所示之暫存器樓25。内之㈣用途暫存器叫以檢視 指令集架構執行旗標,在此一具體實施例中,一 係伴隨轉換之指定型式,例如位元彼找^ ^ 1 jU你伴隨浮點運算元精 度之修訂(例如由一 Inte丨⑧ΙΑ_32指令集架構之8〇位元格式 Ι4 1279715 (10) 發明說明續頁 變為Intel® IA-64指令集架構之64位元格式),因此,基於 較少精度運算元之不同結果可因此產生,其將具有較大之 執行效益,因為和基於第一指令集架構之指令相較,處理 器通常可更快速地執行此基於第二或不同指令集架構之指 令。 在一具體實施例中,位於處理器102内暫存器所儲存之 此等指令集架構執行旗標可由架構指令設定,其基於暫存 器内之旗標而設定或不予設定,在此一具體實施例中,此 等指令可在執行二進位碼之前由作業系統所利用。 在作業決定方塊306内,其決定是否需要軟體轉換以轉 換第一二進位碼,在一具體實施例中,轉換單元1 80決定 是否需要軟體轉換以轉換第一二進位碼,如上述,轉換單 元1 80可透過各種不同方式以決定是否需要軟體轉換以轉 換第一二進位碼,該等不同方式包括(但不限於)檢視第一 二進位碼之初始執行之命令行旗標及檢視不同記憶體位 置,像是一暫存器。 在作業方塊3 0 8内,當決定需要軟體轉換以轉換第一二 進位碼時,來自第一二進位碼之至少一指令透過軟體轉換 而轉換為基於第二指令集架構之至少一指令,在一具體實 施例中,轉換單元1 80執行此轉換,例如上述,轉換單元1 80 可將多個單一指令(基於未支援SIMD作業之指令集架構)轉 換為支援此等作業之位於第二或不同指令集架構内一或多 項SIMD指令。為助於瞭解,轉換單元180可轉換二進位碼 並決定此二進位碼包含四項加法指令,故其具有四項不同 運算元集,因此轉換單元1 80可將位於此二進位碼之此四 -15 - 發明說明續頁 1279715 (ii) 項不同指令轉換為單一加法指令,其中四運算元之兩集合 (各有32位元)將置於處理器102内之二具128位元SIMD暫存 器俾加以執行。 在此一 SIMD轉換之具體實施例中,該單一指令係基於第 一指令集架構,而SIMD指令係基於第二指令集架構,在此 SIMD轉換之具體實施例中,該單一指令係基於第一指令架 構,而該SIMD指令亦是基於第一指令集架構,因此,該SIMD 轉換可允許對一相同指令集架構進指令之改進。 此一轉換可使運算元具有較少精度,然而,由於此等轉 換對於執行效益之增進或可彌補精度上之問題,其係基於 應用程式之型式及/或該應用程式欲執行之執行環境而 定,因此,在諸如使用者之程式製作環境下,其可在考量 精度之損失及執行效益之增加關係後而指示將進行何種型 式之轉換,舉例而言,某些僅使用部份之完整浮點精度之 圖型應用程式可允許浮點運算之少量誤差,相較之下,對 於需要在浮點運算中利用完整之浮點精度之天氣預測而 言,將不允許些微誤差,因此等誤差可能產生不同且不正 確之結果。 再者,一相同應用程式可允許基於不同執行環境之運算 元之此等精度修改,例如,一應用程式可允許對第一輸入 資料集進行此等精度修改,而該相同之應用程式對一不同 輸入資料集可能不允許此等精度之修改。為助於瞭解,當 該輸入資料集在該應甩程式將執行此資料之前已被確認, 則該應用程式將母需處理精度之例外情況,相對地,若該
-16- 1279715 發明說明續頁 (12) 輸入資料集已被認定為特殊及/或未獲確認,則該應用程 式必須執行例外情況處理以對該例外情況提供精準及完整 之資料,因此,程式製作環境可將此等位於輸入資料集中 之變異納入考量,以進行前述第一種情況下之轉換並避免 第二種情況下之轉換。
由轉換單元1 80執行之另一軟體轉換範例包含和程式堆 疊有關之最佳化,特別的是,一諸如Intel⑧IA-32指令集架 構之給定指令集架構可包括一具有置入及取出作業之硬體 堆疊,其中傳入一程式程序内之資料即透過一置入作業而 置入該堆疊中,並在完成該程序後透過取出作業而自該堆 疊中移除。再者,此等指令集架構可直接存取堆疊指標(一 般儲存於特殊用途暫存器254其中之一),因此,由於此指 令集架構可明確存取堆疊指標,諸應用程式之二進位碼可 對此硬體堆疊進行非傳統式之存取。
舉例而言,假設某一程式進入一程序並使用該堆疊指標 之某一常數置換而將一數值nV"儲存於堆疊之位置nLn,該 程式然後自該程序返回,然而,在某些指令集架構中,數 值"Vπ並不會明確地自該堆疊刪除,再者,此指令集架構 可確保該程式仍能參考該堆疊指標以基於位置’’ L π存取數 值"Vπ (假設此位置並未被該程式其他部份覆寫),相對地, 一不同指令集構可包含一型式,其中該硬體堆疊具有更多 摘要語意且該釋出之堆疊記憶體内容係為易逝性的。特別 的是,此不同指令集架構無法確保在該程序完成之後數值 "V 仍參照堆疊指標儲存於位置"L ’’。 -17- 1279715 發明說明續頁 (13) 因此,在一具體實施例中’轉換單元18 0可將第一二進 位碼轉換為不同二進位碼,其中至少該等程序之一係位於 程式碼中並稱之為程序,例如,若主程序nmain(r包含呼 叫一程序 nf*irst—procedure(x,y)”,其中"first_procedure(x,y)” 内 含五行程式碼,轉換單元1 80可修改二進碼俾移除該程序 呼叫並將該程序内五行程式碼直接納含於"mian()"内,因 此,參數X及y將不能置於堆疊内,然而,由於此不同二進
位碼係基於第二指令集架構,其和呼叫程序内之參數呼叫 程序回傳後之堆疊指標dereferencing有關,故該程式碼將不 包含此dereferencing動作。如將於以下詳述的,由於該二進 位碼係基於一指令集架構,其確保該程序完成後不會依參 考堆®指標而對位置”L’’存取數值”νπ,故由解碼器204進 行之硬體轉換亦可伴隨及/或此等軟體轉換執行。 現在回到圖3流程圖300之方塊3 1〇,在一具體實施例中, 獨立於作業方塊308是否執行軟體轉換之外,其決定是否
需要一硬體轉換以執行第一二進位碼之轉換。在一具體 施例中,解碼器204決定是否需要一硬體轉換以轉換第 二進位碼。如上述,解碼器2〇4可透過複數個不同方式 任一万式以決定是否需要—硬體轉換以轉換第一二進 碼3 ‘數個不同方式包括(但不限於)詢問一暫存器, 是位於暫存器檔2 5 0内之牿砝I & 士 符殊用途暫存器254(說明於圖2) 在作業方塊3 12中,夺、、Jr A A立 田夬疋品要一硬體轉換以轉換第 一進仏碼時’至少一指令作A今贫 係自琢弟一二進位碼轉換為基 第二指令集架構之至少一於 y 払令。在一具體實施例中,解 -18 - 1279715 發明說明續頁 (14) 器204將至少一指令自該第一二進位碼轉換為基於第二指 令集架構之至少一指令,特別的是在一具體實施例中,解 碼器可執行和該第二指令集架構之不同特徵有關之複數個 不同轉換。
為助於暸解,假設處理器102可執行基於Intel® IA-32及 Intel⑧IA-64指令集架構之指令,且一第一二進位碼已基於 Intel⑧IA-32產生,使得該浮點運算元具有80位元之長度, 再者,在和一指定二進位碼之執行進行整合之前,特殊暫 存器254其中之一可設定指示該等浮點運算元,該等運算 元目前為基於Intel® IA-32指令集架構之80位元運算元,其 轉換為基於Intel® IA-64指令集架構之64位元運算元,因 此,當詢問此特殊暫存器時,解碼器204轉換基於Intel® IA-32指令集架構之浮點指令至基於Intel® IA-64指令集架 構之不同浮點指令集。
舉例而言,當接收一浮點乘數指令時,解碼器204產生 Intel⑧IA-64指令集架構之微運算(而非Intel® IA-32指令集 架構之微運算),因此指引相關浮點單元(位於功能單元 212-218中)將80位元運算元修改為64位元運算元以執行和 Intel⑧IA-64指令集架構指令有關之浮點乘數指令,因此, 將減低浮點運算元之精度,然而,基於該新指令集架構之 浮點指令可增加該應用程式執行時之效率。 另一由解碼器204進行之硬體轉換包含和程式堆疊有關 之最佳化,特別的是如上述之一諸如Intel® IA-32指令集架 構之一給定指令集架構可包含具有取出及置入作業之硬體 -19 - 1279715 發明說明績頁 (15) 堆疊,其中傳入一程式程序中之資料係透過一置入作業置 於該堆疊中,並在完成該程序後透過一取出作業自該堆疊 移除,再者,此等指令集架構可允許對該堆疊指標之直接 存取(一般儲存於特殊用途暫存器254其中之一),因此,由 於此指令集架構允許明確存取堆疊指標,故二進位碼或應 用程式可對此硬體堆疊進行非傳統式存取。 舉例而言,該程式進入一程序並使用該堆疊指標之某些 常置換而將一數值"V"儲存於堆疊之"L"位置上,該程式然 後自該程序返回,然而,某些指令集架構中,數值π V "並 不會明確自該堆疊刪除,再者,此等指令集架構確保該程 式仍可藉由參考堆疊指標而基於位置"L”自該堆疊存取數 值” V"(假設此位置未被該程式其他部份覆寫)。相對地, 一不同指令架構可包含型式,其中該硬體堆疊具有更多之 摘要語意,且釋出之堆疊記憶體内容為易逝性。特別的是, 此不同指令集架構無法確保在該程序完成後,數值"V π仍 儲存於參考堆疊指標之位置nLn中。 因此,在一具體實施例中,特殊用途暫存器254可在記 憶體(諸如處理器102外部記憶體132)堆疊之外作為硬體堆 疊之一部份,因此可減少和該硬體堆疊有關之功能單元 2 12-2 1 8進行載入及儲存作業之次數。特別的是,圖4說明 原始碼及產生之組合語言碼,其中一暫存器可依本發明之 具體實施例而用於或不用於作為硬體堆疊之一部份。如圖 示,圖4包含原始碼402、、組合語言碼404及組合組語言碼 406。當處理器102内之一暫存器未作為硬體堆疊之一部份 -20- 1279715 (16) ^ —-- 發明說明續頁 L~~ -— 時,組合語言碼404内含對原始碼4〇2產生之部份組合誶+ 扎7 ,*處理器102内之一暫存器作為硬體堆疊一立 0每 4 i < 一邵份 、,、,且3語言碼406内含對原始碼4〇2產生之部份組人五一 指令。 、、口存口舌 原釔碼402包含具有參數"χ ""之程序, 皮如、 弁中仅於該程 二足一指令將變數"ζ"設為等於”χ,,及”y,,之加總,組合注 。碼4〇4包含··一載入作業以將數值”χΠ存入暫存器"Μ,,、 載入作業將數值,,y”載入暫存器,,r2"、以及一對於 ,,r1,,及,fr2”之加法運算。如 子态 ,孟# 、 逑具而要一項不同之載入 #数值X及y (儲存於外部記憶體之堆疊内 處理器102内部之暫存器,相 之下組合浯-碼406(其中 乂万…理器102内纟一特殊暫存器係作為硬體堆疊之 續含單-載入作業並由—加法運算緊隨其後,特別二 合語言碼楊包含:—載人作業以儲存數值Y至暫 二:π、及對於特殊暫存器及暫存器'2”之加法運 异(,、中特殊暫存器"Srl,,為硬體堆叠之-部份)。 堆=示,當程式製作環境(像是-使用者)指出對於程式 (二Λ變數之存取將不會在此等變數取出作業之後發生 許 座生足该弟一指令集架構可允 此寺存取),位於特殊用途暫, $存态254内之至少一特殊用 ^存咨可作為程式堆疊之一部 集 邯6 ,因此,當一特殊指令 構執什旗標設定指出現正執 备 執仃芡私式或應用程式將不 曰在具有此等資料參數之程序執 參 斤執仃元成(後嘗試存取資料 知碼器204可對組合語言碼4〇6產生相關之微運算(而 -21 - 1279715 發明說明續頁 (17) 非組合語言碼404之相關微運算)。 由處理器102元件執行之硬體轉換之另一例子係和記憶 體之非依序存取有關,特別的是,一基於第一指令集架構 之程式可保證對記憶體(處理器1 02之内部及外部記憶體兩 者)之依序存取,因此,為保證該二進位碼對於和該第一 指令集架構之相容性,於此二進位碼執行期間之記憶體存 取須加以序列化,此序列化將降低二進位碼之執行效率, 例如,若第一指令集需自一未知位址完成一載入作業,而 第二指令(其依二進位碼之序列執行方式在第一指令集之 後執行)亦須對一已知位址完成一儲存作業,則該第一指 令仍必須在第二指令完成前執行完畢,儘管該第二指令之 儲存作業可能已經完成且正等侯第一指令載入作業所需之 位址,此等序列化對於保證多重處理或多處理器系統之正 確執行是頗為重要的。 相較之下,一第二指令集架構可允許非依序記憶體存取 以及以及在存取完成之後將此等存取重新依序之方法,因 此,若諸如該使用者之程式製作環境可確定基於該第一指 令集架構之二進位碼毋需序列化之指令執行方式,則該程 式製作環境可設定相關指令集架構執行旗標俾進行非依序 之記憶體存取,因此或可增加該二進位碼執行之效率,例 如,若該二進位碼為一單一執行緒程式並和其他同時之作 業或裝置不同步,該二進位碼然後可以允許非依序記憶體 存取之型式而安全執行。 因此,在一具體實施例中,當決定允許進行非依序記憶 -22- 1279715 (18) 發明說明續頁: 體存取時(對一基於一未提供此等存取之指令集架構之二 進位碼而言),解碼器204可指引記憶體介面單元270參考該 二進位碼内之指令順序,將此二進位碼之記憶體非依序存 取排程。
在一具體實施例中,由電腦系統1 00元件進行之硬體轉 換之範例係和自我修改程式碼有關,特別的是,自我修改 程式碼包含將程式碼寫入該程式碼本身所駐留之記憶體内 位置,複數個指令集架構允許此等程式碼之進行,然而此 等程式碼是缺乏效率的且會降低程式碼執行之效益,特別 的是,記憶體控制器及/或其他元件必須追蹤記憶體被寫 入之位置俾決定是否該程式碼為自我修改程式碼,易言 之,此等記憶體控制器及/或其他元件係決定對每一記憶 體寫入而言,程式碼所寫入該記憶體内之位置是否包含該 程式碼本身。
相較之下,一第二指令集架構可以未允許自我修改程式 碼之型式進行運作,因此,若諸如一使用者之程式製作環 境可確保基於第一指令集架構之二進位碼未包含自我修改 程式碼,則該程式製作環境可將相關指令集架構執行旗標 設為免除檢視是否一給定程式碼為自我修改。
因此,在一具體實施例中,當決定該二進位碼所依據之 程式碼非為自我修改程式碼,解碼器204可指引和儲存該 二進位碼記憶體有關記憶體控制器毋需檢視該給定程式碼 是否為自我修改,因此,每次當執行記憶體寫入作業時, 此等記憶體控制器將不檢視是否此記憶體寫入之位置位於 -23 - 1279715 (19) 發明說明續頁 該程式碼駐留之位置内,因此可增加二進位碼執行之速 度。 在一具體實施例中,由電腦系統100元件執行之硬體轉 換和記憶體片段有關,特別的是,記憶體片段係用於延展 一程式碼之可存取位址空間,例如,一給定架構可能在暫 存器之寬度大小上會有限制,因此限制了位址空間之大 小,因此,一給定程式碼/二進位碼可存取儲存於複數個 不同記憶體片段之資料。在一具體實施例中,一儲存於特 殊用途暫存器254其中之一之數值係用於作為位差以虛擬 位址轉換為實體位址空間。在一具體實施例中,此數值係 加入該虛擬位址以產生實體位址,因此,若該二進位碼係 跨越複數個記憶體片段存取資料,當所存取之資料所在之 記憶體片段改變時,此數值即在程式執行期間更新,相對 地,較新型之架構定義較大之暫存器寬度,像是32位元或 64位元,其允許作業系統於此等架構上執行以提供程式較 大之虛擬位址空間而毋需仰賴記憶體片段。 在一具體實施例中,該第一二進位碼係基於一第一指令 集架構,其中由該第一二進位碼存取之資料係儲存於複數 個記憶體片段中,再者,在一具體實施例中,一第二指令 架構包含一虛擬位址空間,其較第一指令集架構之虛擬位 址空間大,因此,若諸如一使用者之程式製作環境可確保 基於該第一指令集架構之第一二進位碼所存取之資料可儲 存於基於第二指令集架構之記憶體之單一片段内,則該程 式製作環境可將相關之執行旗標設為忽略記憶體片段,因 -24- 1279715 發明說明續頁 (20) 此於虛擬對實體之記憶體位址轉換期間可不採記憶體片 段。 在一具體實施例中,位於暫存器檔250内之暫存器寬度 係用於產生較大虛擬位址空間,例如,第一指令集架構可 使用儲存於暫存器檔250内、具有32位元寬度暫存器之16位 元,而第二指令集架構可使用此等暫存器之全部32位元。 在一具體實施例中,解碼器204未產生微運算以更新儲存 於特殊用途暫存器254内之虛擬對實體位址空間之位差數 值,故此數值將在該二進位碼執行全程維持一常數值(由 該二進位碼存取之資料係位於記憶體單一片段内),因此, 該二進位碼之執行效率可據以增加,因為基於第二指令集 架構之記憶體片段可予以忽略。 再者,在一具體實施例中,一基於第一指令集架構之二 進位碼會產生,且使該二進位碼存取之資料大小可儲存於 記憶體單一片段内,因此,儲存於一般用途暫存器252内 之數值寬度毋需增加。在一具體實施例中,該程式製作環 境可設定一指令集架構執行旗標,其中該二進位碼並非基 於和較大之暫存器寬度有關之第二指令集架構上,在此一 具體實施例中,解碼器204並未產生微運算以更新儲存於 特殊用途暫存器254其中之一之虛擬對實體位址空間之位 差值,特別的是,此數值毋需加以更新,因為由該二進位 碼存取之資料係儲存於記憶體之單一片段内。 現回到圖3之之流程圖300,於處理方塊314中,諸指令(其 可進行如上述之修改)正執行。在一具體實施例中,功能 -25- 1279715 發明說明續頁 (21) 單元2 1 2-2 1 8執行該等指令,在此所述之軟體及硬體轉換係 作為說明例之目的而非在於設限,本發明之諸具體實施例 可包含基於第一指令集架構之第一二進位碼之其他轉換 (包含軟體及硬體)而成為基於第一指令架構及第二指令集 架構組合之第二二進位碼。再者,儘管所描述之轉換係參 照軟體及硬體描述,本發明之具體實施例並非受限於此, 舉例而言,一指定轉換已依軟體轉換進行描述,而在另一 具體實施例中,此一轉換可於硬體及/或硬體及軟體之組 合而執行。 再者,本發明和軟體轉換有關之具體實施例係以一整體 二進位碼轉換進行描述,然而,本發明之具體實施例並非 受限於此,在一具體實施例中,一程式製作模式可包含更 複雜二進位碼層級物件之互動,例如,假設二進位碼之共 享程式庫係基於第一指令集架構進行編譯,且使用/介接 該共享程式庫内二進位碼之主程式庫係基於第一及第二指 令集架構之組合。在一具體實施例中,該主程式庫可在兩 個不同指令集架構之不同功能間進行切換,視所需之功能 及程式製作環境等而定,例如,於該程式庫内之二進位碼 可於第一及第二指令架構間動態地設定相容性程度,視所 呼叫之程式庫内之二進位碼、主程式庫之整體程式狀態等 而定。 儘管本發已參照特定具體實施範例進行描述,吾人可清 楚瞭解各種不同修訂及變化可加諸於此等具體實施例中而 不會偏離本發明之較廣精神及範圍,因此,所列說明及圖 -26- 1279715 發明說明續頁 (22) 示應將其視為說明而非設限。 圖式代表符號說明 100 系統 102-104 處理器 1 10 處理器匯流排 132 記憶體 134 圖形控制器
136 顯示器 140 輸入/輸出控制器集線器 142 整合驅動電子驅動器 144 禹用序列匯流排璋 151 鍵盤 152 滑鼠 153 平行埠 154 序列槔 155 軟碟驅動器
180 轉換單元 202 指令緩衝區 204 解碼器 208 指令排程器 212-218 功能單元 226 分派邏輯 228 隱藏邏輯 250 暫存器檔 -27- 1279715 (23) 發明說明續頁 252 254 256 270 300 302 304 306 308 310 312 314 402 404 一般用途暫存器 特殊用途暫存器 快取記憶體緩衝區 記憶體介面單元 流程圖 接收基於第一指令集架構之程式碼之第一二進 位碼 檢視指令集架構旗標以決定該第一二進位碼之 可能轉換 是否需要軟體轉換以轉換該第一二進位碼 使用軟體轉換將該第一二進位碼之至少一指令 轉換至基於第二指令集架構之指令 是否需要硬體轉換以轉換該第一二進位碼 使用硬體轉換將該第一二進位碼之至少一指令 轉換至基於第二指令集架構之指令 執行指令 第一程序中將變數z設為X及y之和 載入X至暫存器rl中 載入y至暫存器r2中 將r 1及r 2相加 載入y至r2中 將s r 1及r 2相加
-28- 406
Claims (1)
- I27W(i538037號專利申請案 ^ 中文申請專利範圍替換本(95年7月) …'^'Jr—一一 「— -...一i V" Fi日::換頁 拾、申請專利範圍 1. 一種轉換一程式碼之一二進位碼之方法,包含: 接收該程式碼之該二進位碼,該二進位碼基於第 令集架構;以及 轉換該二進位碼,其中該轉換之二進位碼基於第 令集架構及第二指令集架構之組合,該組合係基於 程式環境所設定之多個可設定相容性旗標,該等可 相容性旗標准許偏離該二進位碼之精準程式語意以 該轉換之二進位碼之改進執行效率。 '2]如申請專利範圍第1項之方法,進一步包含檢視該 標,該等旗標係用於指示該二進位碼之至少一部份 換。 3. 如申請專利範圍第2項之方法,進一步包含一使用者 該等旗標。 4. 如申請專利範圍第2項之方法,進一步包含在一處理 之一暫存器中儲存該等旗標。 5. 如申請專利範圍第2項之方法,進一步包含執行該轉 之二進位碼。 6. 如申請專利範圍第5項之方法,其中該等旗標係基於 命令有關之複數個命令行旗標。 7. 如申請專利範圍第1項之方法,其中該第一指令集架 含浮點指令,且其中該第二指令集架構包含浮點指 其中該二進位碼之轉換包含將第一指令集架構之該 一指 一指 由一 設定 換取 等旗 之轉 設定 器中 換後 和一 構包 令, 浮點ϋ正替換頁 指令轉換為該第二指令集架構之浮點指令。 8. 如申請專利範圍第1項之方法,其中該二進位碼之轉換包 含將一硬體堆疊之一部份儲存於轉換該二進位碼之處理 器之暫存器内。 9. 一種執行一程式碼之一二進位碼之方法,包含: 接收該程式碼之該二進位碼,該二進位碼基於一第一 指令集架構;以及 執行該二進位碼,其中該執行作業包含將基於該第一 指令集架構之二進位碼之至少一指令轉換為基於一第二 指令集架構之至少一指令,及其中轉換包含基於由一程 式環境所設定之多個相容性控制轉換,該等相容性控制 轉換控制該等指令集架構之間之該轉換之相容性之一程 度。 10. 如申請專利範圍第9項之方法,其中該第一指令集架構包 含對記憶體之依序存取,且該第二指令架構包含對記憶 體之非依序存取,該二進位碼之該轉換係包含由執行該 二進位碼之一處理器對記憶體之非依序存取。 11. 如申請專利範圍第9項之方法,其中該第一指令集架構允 許該二進位碼自我修改,且該第二指令集架構不允許該 二進位碼自我修改,該二進位碼之該轉換包含對儲存該 二進位碼之多個記憶體之多個控制器之一指令以執行寫 入作業,其和檢視該等寫入作業是否修改該二進位碼儲 存之一位置無關。 12.如申請專利範圍第9項之方法,其中該第二指令集架構具 1279715 有一大於該第一指令集架構之位址空間,該二進位碼之 該轉換包含使用該第二指令集架構之該位址空間。 13. 如申請專利範圍第12項之方法,其中由該二進位碼存取 之資料係儲存於記憶體之一單一片段内,且其中用於為 該資料轉換一虛擬位址至一實體位址之一位差數值於該 二進位碼執行期間並未修改。 14. 一種轉換及執行一程式碼之一二進位碼之系統,包含: 一記憶體,以包含基於一第一指令架構之該程式碼之 該二進位碼;以及 一耦合該記憶體之處理器,該處理器執行該二進位 碼,其中執行該二進位碼包含轉換該二進位碼,該轉換 之二進位碼係基於該第一指令集架構及一第二指令集架 構之一組合,該組合係基於由一程式環境所設定之多個 相容性控制,該等相容性控制准許偏離該二進位碼之精 準程式語意以換取該轉換之二進位碼之改進執行效率。 15. 如申請專利範圍第14項之系統,其中該等相容性控制包 含多個指令集架構執行旗標,及其中該處理器包含一暫 存器,以儲存該等指令集架構執行旗標,該等指令集架 構執行旗標係指示該二進位碼之至少一部份之轉換。 16. 如申請專利範圍第15項之系統,其中該等指令集架構執 行旗標係由一使用者所設定。 17. 如申請專利範圍第14項之系統,其中該第二指令集架構 具有一大於該第一指令集架構之位址空間,該二進位碼 之該轉換包含使用該第二指令集架構之該位址空間。 -3-Ί2797Τ5 18. 如申請專利範圍第17項之系統,其中該二進位碼係儲存 於該記憶體之一單一片段内,且其中一用於轉換一虛擬 位址至一實體位址之位差數值於該二進位碼執行期間並 不會修改。 19. 一種處理多個二進位碼之裝置,包含: 一解碼器,用以接收基於一第一指令集架構之一二進 位碼;以及 複數個暫存器,其中該等複數個暫存器至少一者係用 於儲存可由一程式環境所設定之多個指令集架構執行旗 標以控制該二進位碼至一第二指令集架構之一轉換之二 進位碼之相容性之一程度,該轉換之二進位碼係基於該 第一指令集架構及一第二指令集架構之一組合。 20. 如申請專利範圍第19項之裝置,其中該第一指令集架構 包含多個浮點指令,且其中該第二指令集架構包含多個 浮點指令,其中該二進位碼之該轉換包含轉換該第一指 令集架構之該等浮點指令至該第二指令集架構之該等浮 點指令。 21. 如申請專利範圍第19項之裝置,其中該二進位碼之該轉 換包含儲存一硬體堆疊之一部份於該等複數個暫存器之 一暫存器中。 22. 如申請專利範圍第19項之裝置,其中該裝置和多個記憶 體耦合,以儲存該二進位碼,其中該第一指令集架構允 許該二進位碼自我修改,且該第二指令集架構不允許該 二進位碼自我修改,該二進位碼之該轉換包含對該等記 -4-憶體之多個控制器之一指令以執行多個寫入作業,其和 檢視該等寫入作業是否修改該二進位碼儲存之一位置無 關。 23. 如申請專利範圍第19項之裝置,其中該第二指令集架構 具有一大於該第一指令集架構之位址空間,該二進位碼 之該轉換包含使用該第二指令集架構之該位址空間。 24. 如申請專利範圍第23項之裝置,其中由該二進位碼存取 之資料係儲存於耦合至該裝置之記憶體之一單一片段 内,且其中用於轉換該資料之一虛擬位址至一實體位址 之一位差數值於該二進位碼執行期間並未修改。 25. —種提供多個指令之機器可讀取式媒體,其中當該等指 令由一機器執行時,促使該機器執行多個作業,包括: 接收一程式碼之一二進位碼,該二進位碼係基於一第 一指令集架構;以及 轉換該二進位碼,其中該轉換之二進位碼係基於該第 一指令集架構及一第二指令集架構之一組合,該組合係 基於由一程式環境所設定之多個相容性控制,該等相容 性控制准許偏離該二進位碼之精準程式語意以換取該轉 換之二進位碼之改進執行效率。 26. 如申請專利範圍第25項之機器可讀取式媒體,該等作業 進一步包含執行該轉換之二進位碼。 27. 如申請專利範圍第26項之機器可讀取式媒體,其中該等 相容性控制係基於和一命令有關之複數個命令行旗標。 28. 如申請專利範圍第25項之機器可讀取式媒體,其中該第 -5- Ι2797,5 y:一指令集架構包含多個浮點指令,且其中該第二指令集 架構包含多個浮點指令,其中該二進位碼之該轉換包含 將該第一指令集架構之該等浮點指令轉換為該第二指令 集架構之該等浮點指令。 29.如申請專利範圍第25項之機器可讀取式媒體,其中該第 一指令集架構允許該二進位碼之自我修改,且該第二指 令集架構不允許該二進位碼自我修改,該二進位碼之該 轉換包含對儲存該二進位碼之多個記憶體之多個控制器 之一指令以執行寫入作業,其和檢視該寫入作業是否修 改該二進位碼儲存之一位置無關。 -6 -
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10/039,254 US7251811B2 (en) | 2002-01-02 | 2002-01-02 | Controlling compatibility levels of binary translations between instruction set architectures |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW200403583A TW200403583A (en) | 2004-03-01 |
| TWI279715B true TWI279715B (en) | 2007-04-21 |
Family
ID=21904487
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW091138037A TWI279715B (en) | 2002-01-02 | 2002-12-31 | Method, system and machine-readable medium of translating and executing binary of program code, and apparatus to process binaries |
Country Status (7)
| Country | Link |
|---|---|
| US (1) | US7251811B2 (zh) |
| CN (1) | CN100357882C (zh) |
| AU (1) | AU2002361884A1 (zh) |
| DE (1) | DE10297624T5 (zh) |
| GB (1) | GB2400949B (zh) |
| TW (1) | TWI279715B (zh) |
| WO (1) | WO2003058432A1 (zh) |
Families Citing this family (36)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7219336B2 (en) * | 2002-01-03 | 2007-05-15 | Intel Corporation | Tracking format of registers having multiple content formats in binary translation |
| US7519800B2 (en) * | 2003-03-27 | 2009-04-14 | Hewlett-Packard Development Company, L.P. | Apparatus and method for enforcing homogeneity within partitions of heterogeneous computer systems |
| US7290253B1 (en) * | 2003-09-30 | 2007-10-30 | Vmware, Inc. | Prediction mechanism for subroutine returns in binary translation sub-systems of computers |
| KR100658918B1 (ko) * | 2004-03-29 | 2006-12-15 | 주식회사 팬택앤큐리텔 | 블록 단위 입출력 명령어를 이용한 시스템 전역 변수초기화 장치 및 그 방법 |
| WO2006069485A1 (en) * | 2004-12-30 | 2006-07-06 | Intel Corporation | Selecting formats for multi-format instructions in binary translation of code from a hybrid source instruction set architecture to a unitary target instruction set architecture |
| US7818724B2 (en) * | 2005-02-08 | 2010-10-19 | Sony Computer Entertainment Inc. | Methods and apparatus for instruction set emulation |
| CN100377088C (zh) * | 2005-03-04 | 2008-03-26 | 中国科学院计算技术研究所 | 二进制翻译中局部变量识别和提升的处理方法 |
| US20070006189A1 (en) * | 2005-06-30 | 2007-01-04 | Intel Corporation | Apparatus, system, and method of detecting modification in a self modifying code |
| US7802252B2 (en) * | 2007-01-09 | 2010-09-21 | International Business Machines Corporation | Method and apparatus for selecting the architecture level to which a processor appears to conform |
| US8560591B2 (en) | 2007-04-25 | 2013-10-15 | International Business Machines Corporation | Detection of potential need to use a larger data format in performing floating point operations |
| US7941641B1 (en) | 2007-10-01 | 2011-05-10 | Yong-Kyu Jung | Retargetable instruction decoder for a computer processor |
| US8627050B2 (en) | 2007-10-08 | 2014-01-07 | International Business Machines Corporation | Executing perform floating point operation instructions |
| US20090164982A1 (en) * | 2007-12-21 | 2009-06-25 | Sun Microsystems, Inc. | Method and system for transforming binaries to use different instructions |
| US8775153B2 (en) * | 2009-12-23 | 2014-07-08 | Intel Corporation | Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment |
| CN103092599A (zh) * | 2011-11-05 | 2013-05-08 | 京瓷办公信息系统株式会社 | 软件开发套件 |
| US8914615B2 (en) | 2011-12-02 | 2014-12-16 | Arm Limited | Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format |
| EP2801028A4 (en) * | 2012-01-06 | 2015-08-12 | Intel Corp | METHOD AND APPARATUS FOR REPLACING FUNCTIONS OF A COMPUTER INTEGRATED HELP MODULE BY MACHINE LANGUAGE INSTRUCTIONS |
| KR101826080B1 (ko) * | 2012-06-15 | 2018-02-06 | 인텔 코포레이션 | 통합된 구조를 갖는 동적 디스패치 윈도우를 가지는 가상 load store 큐 |
| US9160815B2 (en) * | 2012-06-28 | 2015-10-13 | Intel Corporation | Method and apparatus for virtual machine interoperability |
| US9563432B2 (en) | 2013-04-19 | 2017-02-07 | Nvidia Corporation | Dynamic configuration of processing pipeline based on determined type of fetched instruction |
| CN104679480A (zh) * | 2013-11-27 | 2015-06-03 | 上海芯豪微电子有限公司 | 一种指令集转换系统和方法 |
| US9824021B2 (en) | 2014-03-31 | 2017-11-21 | International Business Machines Corporation | Address translation structures to provide separate translations for instruction fetches and data accesses |
| US9858058B2 (en) | 2014-03-31 | 2018-01-02 | International Business Machines Corporation | Partition mobility for partitions with extended code |
| US9256546B2 (en) | 2014-03-31 | 2016-02-09 | International Business Machines Corporation | Transparent code patching including updating of address translation structures |
| US9715449B2 (en) | 2014-03-31 | 2017-07-25 | International Business Machines Corporation | Hierarchical translation structures providing separate translations for instruction fetches and data accesses |
| US9734083B2 (en) | 2014-03-31 | 2017-08-15 | International Business Machines Corporation | Separate memory address translations for instruction fetches and data accesses |
| US9483295B2 (en) | 2014-03-31 | 2016-11-01 | International Business Machines Corporation | Transparent dynamic code optimization |
| US9569115B2 (en) | 2014-03-31 | 2017-02-14 | International Business Machines Corporation | Transparent code patching |
| US9720661B2 (en) | 2014-03-31 | 2017-08-01 | International Businesss Machines Corporation | Selectively controlling use of extended mode features |
| US10795681B2 (en) * | 2014-12-23 | 2020-10-06 | Intel Corporation | Instruction length decoding |
| US10169043B2 (en) * | 2015-11-17 | 2019-01-01 | Microsoft Technology Licensing, Llc | Efficient emulation of guest architecture instructions |
| US11163565B2 (en) * | 2017-03-20 | 2021-11-02 | Intel Corporation | Systems, methods, and apparatuses for dot production operations |
| CN107341372B (zh) * | 2017-07-25 | 2018-12-07 | 北京深思数盾科技股份有限公司 | 一种软件保护方法和装置 |
| US20190163492A1 (en) * | 2017-11-28 | 2019-05-30 | International Business Machines Corporation | Employing a stack accelerator for stack-type accesses |
| CN109918081B (zh) * | 2019-03-01 | 2022-06-03 | 中安智联未来有限公司 | 一种编译方法及编译器 |
| US20230052827A1 (en) * | 2021-07-31 | 2023-02-16 | International Business Machines Corporation | Automated synthesis of reference policies for runtime microservice protection |
Family Cites Families (25)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5307504A (en) | 1991-03-07 | 1994-04-26 | Digital Equipment Corporation | System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events |
| US5450575A (en) | 1991-03-07 | 1995-09-12 | Digital Equipment Corporation | Use of stack depth to identify machine code mistakes |
| US5287490A (en) | 1991-03-07 | 1994-02-15 | Digital Equipment Corporation | Identifying plausible variable length machine code of selecting address in numerical sequence, decoding code strings, and following execution transfer paths |
| US5317740A (en) | 1991-03-07 | 1994-05-31 | Digital Equipment Corporation | Alternate and iterative analysis of computer programs for locating translatable code by resolving callbacks and other conflicting mutual dependencies |
| US5432795A (en) | 1991-03-07 | 1995-07-11 | Digital Equipment Corporation | System for reporting errors of a translated program and using a boundry instruction bitmap to determine the corresponding instruction address in a source program |
| US5428786A (en) | 1991-03-07 | 1995-06-27 | Digital Equipment Corporation | Branch resolution via backward symbolic execution |
| US5339238A (en) | 1991-03-07 | 1994-08-16 | Benson Thomas R | Register usage tracking in translating code for different machine architectures by forward and reverse tracing through the program flow graph |
| US5598560A (en) | 1991-03-07 | 1997-01-28 | Digital Equipment Corporation | Tracking condition codes in translation code for different machine architectures |
| US5507030A (en) | 1991-03-07 | 1996-04-09 | Digitial Equipment Corporation | Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses |
| US5301325A (en) | 1991-03-07 | 1994-04-05 | Digital Equipment Corporation | Use of stack depth to identify architechture and calling standard dependencies in machine code |
| US5307492A (en) | 1991-03-07 | 1994-04-26 | Digital Equipment Corporation | Mapping assembly language argument list references in translating code for different machine architectures |
| US5339422A (en) | 1991-03-07 | 1994-08-16 | Digital Equipment Corporation | System and method for jacketing cross-domain calls in a multi-code execution and debugging system within a multi-architecture environment |
| US5574887A (en) | 1993-09-20 | 1996-11-12 | Apple Computer, Inc. | Apparatus and method for emulation routine pointer prefetch |
| US5574927A (en) | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
| KR960015100A (ko) * | 1994-10-31 | 1996-05-22 | 미타 요시히로 | 감광체를 사용하는 전자사진법 |
| US6496922B1 (en) * | 1994-10-31 | 2002-12-17 | Sun Microsystems, Inc. | Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation |
| US5802373A (en) * | 1996-01-29 | 1998-09-01 | Digital Equipment Corporation | Method for providing a pipeline interpreter for a variable length instruction set |
| US5875318A (en) | 1996-04-12 | 1999-02-23 | International Business Machines Corporation | Apparatus and method of minimizing performance degradation of an instruction set translator due to self-modifying code |
| US5903760A (en) * | 1996-06-27 | 1999-05-11 | Intel Corporation | Method and apparatus for translating a conditional instruction compatible with a first instruction set architecture (ISA) into a conditional instruction compatible with a second ISA |
| US6631514B1 (en) * | 1998-01-06 | 2003-10-07 | Hewlett-Packard Development, L.P. | Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations |
| US6199202B1 (en) * | 1998-01-06 | 2001-03-06 | Hewlett-Packard Company | Method and apparatus for the inter-operation of differing architectural and run time conventions |
| US6266769B1 (en) * | 1998-04-30 | 2001-07-24 | Intel Corporation | Conversion between packed floating point data and packed 32-bit integer data in different architectural registers |
| US6243668B1 (en) * | 1998-08-07 | 2001-06-05 | Hewlett-Packard Company | Instruction set interpreter which uses a register stack to efficiently map an application register state |
| US7640153B2 (en) * | 2001-06-04 | 2009-12-29 | Hewlett-Packard Development Company, L.P. | Networked client-server architecture for transparently transforming and executing applications |
| US20030033593A1 (en) * | 2001-08-08 | 2003-02-13 | Evelyn Duesterwald | Dynamic execution layer interface for explicitly or transparently executing application or system binaries |
-
2002
- 2002-01-02 US US10/039,254 patent/US7251811B2/en not_active Expired - Lifetime
- 2002-12-27 GB GB0414805A patent/GB2400949B/en not_active Expired - Lifetime
- 2002-12-27 CN CNB028267192A patent/CN100357882C/zh not_active Expired - Lifetime
- 2002-12-27 AU AU2002361884A patent/AU2002361884A1/en not_active Abandoned
- 2002-12-27 DE DE10297624T patent/DE10297624T5/de not_active Ceased
- 2002-12-27 WO PCT/US2002/041556 patent/WO2003058432A1/en not_active Ceased
- 2002-12-31 TW TW091138037A patent/TWI279715B/zh not_active IP Right Cessation
Also Published As
| Publication number | Publication date |
|---|---|
| AU2002361884A1 (en) | 2003-07-24 |
| GB2400949A (en) | 2004-10-27 |
| US7251811B2 (en) | 2007-07-31 |
| GB0414805D0 (en) | 2004-08-04 |
| TW200403583A (en) | 2004-03-01 |
| CN1613054A (zh) | 2005-05-04 |
| WO2003058432A1 (en) | 2003-07-17 |
| GB2400949B (en) | 2006-06-28 |
| DE10297624T5 (de) | 2004-11-25 |
| HK1067205A1 (zh) | 2005-04-01 |
| CN100357882C (zh) | 2007-12-26 |
| US20030126587A1 (en) | 2003-07-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI279715B (en) | Method, system and machine-readable medium of translating and executing binary of program code, and apparatus to process binaries | |
| TWI691897B (zh) | 用以執行融合單一週期遞增-比較-跳越之指令與邏輯 | |
| KR101842058B1 (ko) | 푸싱형 버퍼 복사 및 저장 기능성을 제공하기 위한 명령어 및 논리 | |
| KR101581177B1 (ko) | 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공 | |
| JP5930558B2 (ja) | ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック | |
| TWI578155B (zh) | 用於條件式記憶體錯誤輔助抑制的處理器、處理系統及方法 | |
| CN108885551B (zh) | 存储器复制指令、处理器、方法和系统 | |
| TWI724065B (zh) | 包含用於控制流向終止的模式特定結束分支之處理器及系統 | |
| JP2001195250A (ja) | 命令トランスレータ、トランスレータ付命令メモリおよびそれらを用いたデータ処理装置 | |
| JPS59501684A (ja) | 目的命令ストリ−ムへ殆んど実時間で插入するためのソ−スおよび目的命令ストリ−ムの外部における加速式命令写像 | |
| JPH08278918A (ja) | エンディアンタスクを実行するシステム及び方法 | |
| TW201531857A (zh) | 用以提供基底暫存器交換狀態驗證功能之指令及邏輯 | |
| US4739471A (en) | Method and means for moving bytes in a reduced instruction set computer | |
| US10157063B2 (en) | Instruction and logic for optimization level aware branch prediction | |
| TW446916B (en) | Computer instruction which generates multiple results of different data types to improve software emulation | |
| WO2009094827A1 (fr) | Dispositif de processeur risc et procédé de simulation d'une opération de pile à virgule flottante | |
| KR100308512B1 (ko) | 편집 기능을 위한 전문 밀리코드 지시 | |
| US9336156B2 (en) | Method and apparatus for cache line state update in sectored cache with line state tracker | |
| JP3630804B2 (ja) | データ処理装置 | |
| CN112912843A (zh) | 具有精确中断和/或重写的向量指令 | |
| JPH04260929A (ja) | データ処理装置 | |
| JPH04260926A (ja) | ビット検索回路及びそれを備えたデータ処理装置 | |
| JPH04260928A (ja) | データ処理装置 | |
| JP6222859B2 (ja) | ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック | |
| JP4418509B2 (ja) | Javaアクセラレータを備えたプロセッサシステム |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MK4A | Expiration of patent term of an invention patent |