TWI482094B - 在程式碼轉換期間異常的精確處理之方法與裝置 - Google Patents
在程式碼轉換期間異常的精確處理之方法與裝置 Download PDFInfo
- Publication number
- TWI482094B TWI482094B TW095113005A TW95113005A TWI482094B TW I482094 B TWI482094 B TW I482094B TW 095113005 A TW095113005 A TW 095113005A TW 95113005 A TW95113005 A TW 95113005A TW I482094 B TWI482094 B TW I482094B
- Authority
- TW
- Taiwan
- Prior art keywords
- code
- subject
- target
- instruction
- copy
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 64
- 238000006243 chemical reaction Methods 0.000 title claims description 35
- 238000011084 recovery Methods 0.000 claims description 65
- 238000005457 optimization Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 8
- 230000008901 benefit Effects 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 description 10
- 238000013519 translation Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 230000001172 regenerating effect Effects 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000004566 IR spectroscopy Methods 0.000 description 1
- 206010000210 abortion Diseases 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000010420 art technique Methods 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Description
本發明一般係關於電腦與電腦軟體的領域,比較明確地本發明係關於程式碼轉換的方法與裝置,例如:於轉換程式碼的碼轉譯器、模擬器、和加速器中有用處。
於置入和非置入兩種CPU中,較大體型的軟體會有預定主控指令集架構(ISA)存在其中,而能夠被“加速”進行或“轉譯”至無數種具有能力的處理器,以表現較好的成本/品質利益,以其能夠明確地存取相關的軟體之方式提供。也發現到主控CPU架構是以時間鎖定至其ISA,而不能展現品質或市場延伸。如此的CPU將受惠於一軟體導向的處理器共同架構。
揭示的程式碼轉換之方法和裝置有助於加速、轉譯、或共構能力,例如:在公佈的PCT申請案WO00/22521與其他中可見。
進行程式碼轉換不可避免地在轉換過程中帶來一些成本,相較於在一主題處理器上就地執行主題程式。一特別困難的引起關係到異常的處理。
一異常是在一程式中改變所控制的正常流之狀況,一異常指出在該系統中某處發生一個狀況需要該處理器注意,並且在步驟繼續以前通常需要處理。異常可以區分成各種不同的型態,比如中斷、錯誤、誘陷、或中止。此用詞在不同的架構之間有所變化,而異常的特別型態或種類對特別的架構可以是獨特的。
一異常可以由硬體或由軟體產生(“引起”)。硬體異常包括比如重新設定、中斷的訊號,或來自一記憶體管理單元的訊號。
如實例中,異常可以由一計算邏輯單元或浮點單元產生於數字錯誤,比如除以零、於溢位或不足位數,或者於指令解碼錯誤比如權限、保留、誘陷或未定義的指令。
軟體異常是分別隨著各種軟體程式而有所變化,並且可以應用至任何種類的錯誤檢驗,其改變該程式的正常行為。如一呈現的實例,在一主題碼的一指令致使一異常被報告,假如一暫存器的數值比一第二暫存器的數值較大。
一異常處理器是在一程式執行的期間發生一異常時被呼叫的特別碼。假如該主題程式針對一給定一異常沒有提供一處理器,就會呼叫一無效系統異常處理器,通常致使正在執行的該程式以及被交回的一錯誤指示中止。
對於許多作業系統上引起的異常來說,異常訊號是一種普通的機制。於POSIX標準是附加至許多作業系統,特別是類似-Unix系統,會標明這機制應該如何動作使得異常訊號是廣泛地相似跨越許多系統。會引發異常的最普通事件,是由一程式執行的一步驟過程嘗試(i)存取一未映射的記憶體區域,或(ii)操控一記憶體區域但是卻沒有正確的允許。其他會引發異常的普通事件是(iii)接收從另一步驟過程傳送的一訊號,(iv)由一指令中一步驟的執行但該步驟沒有權限層級以執行,或(v)在硬體內的一I/O事件。
本發明特別關切異常的精確處理,也常稱為精確異常。一精確的異常是在主題指令之間的邊界上被報告,當報告一精確的異常時,所有先前的主題指令之效應都完成,該異常即指向還沒有執行的該主題碼中第一指令,並且從該主題指令的效應或者任何後續的指令還沒有發生。
二元轉譯的本質中,明顯的是當一目標指令在一目標處理器上被執行並致使一異常被報告時,該目標指令通常不會實行將報告一精確異常至被寫在一主題碼內的一異常處理器之狀況。指令幾乎總是在該目標處理器上以一不同於一對應區塊主題碼的指令順序之順序執行,首先是由於該主題指令被寫入的該主題處理器指令集與該目標碼被執行的該目標處理器之間的差異,而且第二是因為通常在程式碼轉換期間發生的最佳化不同。
有一個熟知的解決方式是使用“復原點”,將一虛擬的主題機器交回至應用於進入正在轉譯或執行的一段落碼的登錄之狀況,也就是將該虛擬的主題機器交回至該點上登錄進入正在被轉譯或執行的目前區塊主題碼指令之重現狀況。
美國專利5832205(Kelly等人)揭示一種使用一組“正在運作”暫存器的模擬器,然後被複製至在各個段落終點的一組“正式”的虛擬暫存器,使用一閘門式的儲存緩衝器。假如發生一異常這只會影響正在運作的暫存器,而且該虛擬主題機器的狀況能夠從登錄進入該段落主題碼的點上之該“正式”暫存器被回復。然而,使用“正在運作”或“正式”的暫存器大幅地增加該目標處理器內該模擬器的成本。
如另一實例,WO00/65440揭示在A與B暫存器集之間交替變化,以提供程式碼轉換期間過去記錄的復原點。
另一解決方式是在共同審核公佈的申請案GB2403563與共同審核申請案US 10/726,857中詳細討論的。在此應用一變化的精確異常處理,藉由在該主題程式中各個複數型態的指令記錄不同層級的細節,也就是,要記錄的資訊份量和型態是根據該主題指令的特性而有所變化。適當地,各個主題指令是被決定為四種型
態中之一,並被記錄一對應層級的細節。一第一層級沒有記錄任何狀態;一第二層級使用一最不熟知的堆疊框架提供不精確(不正確)的狀態資訊;一第三層級在轉譯期間於一暫時的抽象暫存器記錄一精確的主題程式計數器,然後被擷取以處理一異常;一第四層級產生並置入額外的目標碼以修正一精確的狀態,(也就是記錄該主題程式計數器並修正任何遲緩或審核的主題暫存器值),即刻進行一異常引起的目標指令(特別是引發一異常的一誘陷型指令)。
這些習知技術的解決方式仰賴於記錄資訊,其容許一主題處理器狀態在當一異常發生的點上被正確地決定,藉由往回捲動至一先前定義的復原點或藉由修正在此點事先的主題狀態。然而於知習技術,得到用於精確異常處理的一精確狀態仍舊在程式碼轉換過程受到限制,並且涉及相當多的成本和/或特定的硬體支援。
本發明之一目的是當進行程式碼轉換時改善品質。
本發明之一較佳目的是為降低與處理程式碼轉換期間的異常相關之成本,特別是在動態二元轉譯期間。
本發明之實施例中另一較佳目的,為降低與提供用於精確處理異常的一精確主題狀態相關之成本。
根據本發明提供一種如所附申請專利項的裝置和方法,而本發明之較佳特性從申請附屬項及接下來的敘述中可以明顯呈現。
接著是根據本發明之實施例可以瞭解到各個方面和優點之摘要。在此提供的介紹是為幫助本技術領域中技術人員能夠較快速地熟悉有關設計的細節討論,因而不會也不是刻意以任何方式加
諸限制於所附該申請專利項的範圍。
特別地,本發明所發展的方法有關於促進程式碼轉換,而且是與一運作時間的轉譯器連接特別有用,該轉譯器提供從主題程式碼至目標碼的動態二元轉譯。
本發明之一方面提供一種精確處理從主題碼至目標碼的程式碼轉換過程中異常之方法,該方法包括產生含有來自一易發生錯誤主題碼指令的一或多個副本目標指令之目標碼,各個該些副本目標碼指令與復原資料相關。在執行該目標碼轉換期間發生一異常(例如:一錯誤)之後,該復原資訊就被擷取並用來修正一精確的主題狀態。
希望地,該復原資訊將目標碼產生期間執行的最佳化考慮在內。適當地,該復原資訊是用於進行復原常式,其修正代表一主題處理器在一易發生錯誤主題碼指令的該點上之一精確主題狀態。
希望地,該方法包括接著在該已產生的目標碼之後立即儲存一或多個復原資訊項目。擷取該復原資訊的步驟包括向下掃描該目標碼以定位其後的該復原資訊,並且擷取與一個別錯誤副本目標指令相關的一復原資訊項目。
希望地,該目標碼和復原資訊在區塊內是交錯的。
於一特別的較佳實施例中,一目標程式計數器是用於將該復原資訊加以索引。
本發明之一第二方面提供一種精確處理從主題碼至目標碼的程式碼轉中異常之方法,包括產生目標碼的步驟,該目標碼含有至少一個副本目標碼指令,其對應在主題碼中一可能錯誤的主題指令,以及包括儲存與該至少一個副本目標指令相關的復原資訊
之步驟。一旦接收一中斷訊號,該目標碼指令的執行將繼續直到遭遇該目標碼指令之其中一個。一旦到達該副本目標指令,該相關的復原資訊就被擷取並用於回復一精確主題狀態。
一較佳實施例中,該精確異常的處理方法會從一異常發生的點向前捲動,直到利用該已儲存的復原資訊能夠回復一精確主題狀態。適合地,該目標碼指令繼續一個接著一個地執行,最好藉由調用一目標碼解譯器或調用一步進的目標處理器模組。
本發明也延伸至一轉譯器裝置,其配置以實行在此定義的任何一種方法。還有,本發明延伸至電腦可讀取的儲存媒體,其記錄可由一電腦執行的指令以實施在此定義的任何一種方法。
以下提供的敘述是為使本技術領域中技術人員能夠製造並使用本發明,且此敘述鋪陳由本發明者實施其發明所建立的最佳模式。然而,對本技術領域中的技術人員來說,各種修改仍是明顯可見,因為本發明的一般原則在此已明確地規範以提供一種改善程式碼轉換的方法與裝置。
以下的用詞中,一主題程式是指在包括一主題處理器的一主題計算平台上所執行,而包括一目標處理器的一目標計算平台,經由執行動態程式碼轉換的一轉譯器用以執行該主題程式。該轉譯器進行從主題碼至目標碼的碼轉換,使得該目標碼在該目標計算平台上可以執行。
圖1呈現一範例的目標計算平台,包括一目標處理器13,其具有複數個目標暫存器15;也包括一記憶體18以儲存複數個軟體組件17,19,20,21和27。該軟體組件包括一作業系統20、主題碼
17、轉譯器碼19、和已轉譯的目標碼21。
一實施例中,該轉譯器碼19是一模擬器,將一主題指令集架構(ISA)的主題碼轉譯成另一ISA的轉譯目標碼,具有或沒有最佳化。另一實施例中,該轉譯器19的功能是一加速器,藉由進行程式碼最佳化將主題碼轉譯成目標碼,是相同ISA中的各個碼。
該轉譯器19,也就是執行該轉譯器的源碼編譯版,以及已轉譯的碼21,即由該轉譯器19所產生的主題碼17之轉譯,與正在該目標處理器13上運作的該作業系統20連接運作,其通常是一微處理器或其他適合的電腦。
應該理解到圖1中呈現的結構僅是範例,比如根據本發明之軟體、方法、以及步驟可以在位於一作業系統內或下方的碼執行。該主題碼17、轉譯器碼19、作業系統20、以及該記憶體18的儲存機制,可以是任何一種多變化的類型,如本技術領域中的技術人員所知。
根據圖1中的裝置,程式碼轉換最好是動態進行,於該目標碼21正在運作的執行時間。該轉譯器19與該轉譯的程式21連接執行,該轉譯器19最好被使用為該目標架構所編譯的一應用。該主題程式17是由該轉譯器19在運作時間轉譯,且在該目標架構14上執行。
經由該轉譯器19運作該主題程式的步驟涉及兩種不同型態,且於交錯方式執行的碼:該轉譯器碼19和該目標碼21。該轉譯器碼19是比如由一編譯器,於運作時間之前根據該轉譯器19進行的一高層級源碼所產生。相較之下,該目標碼21是由該轉譯器碼19於整個進行時間根據正在被轉譯的程式之已儲存的主題碼17所產生。
該主題程式17是刻意要在一主題處理器(圖中未示)上進行。一實施例中,該轉譯器19的功能如同一模擬器,也就是該轉譯器19模擬該主題處理器,而且如同目標碼21在該目標處理器13上真實地執行該主題程式17。一較佳實施例中,提供至少一個總體暫存器儲存27,(也稱為主題暫存器資料庫27或抽象暫存器資料庫27)。在一多重處理器的環境中,根據該主題程式的架構提供選擇性多於一個抽象暫存器資料庫27。一主題處理器狀態的代表是由該轉譯器19和該目標碼21的組件提供,也就是該轉譯器19以各種清楚的程式語言裝置儲存該主題處理器狀態,比如變數和/或物件。用於編譯該轉譯器19的編譯器決定該狀態和操作如何以目標碼執行。相較之下,該目標碼21提供主題處理器狀態隱藏在該目標暫存器15和在記憶體位置18,其由該目標碼21的目標指令操控。例如:該總體暫存器儲存27的該低層級代表僅是一區域的配置記憶體。然而在該轉譯器19的源碼,該總體暫存器儲存27是一資料陣列,或能夠在一較高層級被存取並操控的一物件。
圖2是一繪製流程圖以顯示一種在程式碼轉換期間執行控制的較佳方法。
如圖2顯示,一開始控制是位於一轉譯器控制迴路190。步驟201中,該控制迴路190呼叫該轉譯碼19的一產生碼功能192,將一區塊的該主題碼17轉譯成一對應區塊的轉譯碼21。然後步驟202中,在該目標處理器13上執行該區塊的已轉譯碼21。便利地,各個區塊的轉譯碼21之終點包含將控制交回至該控制迴路190的指令。換句話說,轉譯和執行該主題碼的步驟是交錯的,使得該主題程式17的部分輪流地被轉譯然後執行。
在此用詞“基本區塊”對於本技術領域中的技術人員較熟悉
。一基本區塊是正好只有一登入點和僅一登出點之一段落的碼,其限制該區塊碼於一單一的控制路徑。於此原因,基本區塊是控制流程中一有用的基本單元。適當地,該轉譯器19將該主題碼17分成複數個基本區塊,其中各個基本區塊是在一單一登入點的一第一指令與一第一登出點(比如一跳躍、呼叫、或分支指令)的一最後指令之間的一連續集指令。該轉譯器可以只選擇這些基本區塊(區塊模組)中之一個,或選擇一群該基板區塊(群區塊模組)。一群區塊適當地包括兩個或兩個以上的基本區塊,是在一起以一單一的單元處置。進一步地,該轉譯器可以形成代表主題碼的相同基本區塊但在不同的登錄狀況下之類似區塊。
於該較佳實施例,中級代表(IR)的樹狀是根據一主題指令序所產生,且為從該原始主題程式17產生該目標碼21的過程之一部分。IR樹狀是由該主題程式計算的表現和進行的操作之抽象代表。之後該目標碼21是根據該IR樹狀所產生,IR節點的集合確實是以非循環式圖形(DAGs)引導,但淺顯易懂地稱為“樹狀”。
本技術領域中的技術人員可以理解到,於一實施例中該轉譯器19是利用一物件導向的程式語言來實行,比如C++,例如:一IR節點是如同一C++物件被實行,並且參照其他節點如同C++參照對應那些其他節點的C++物件被實行。所以,一IR樹狀是以一集體的IR節點物件實行,且含有各種的彼此參考。
進一步在討論的實施例中,IR產生使用一組抽象的暫存器定義,對應該主題架構的特定性質,為該主題程式17刻意在其上運作。例如:該主題架構(“主題暫存器”)上各個實體的暫存器有一獨特的抽象暫存器定義。如此該轉譯器上的抽象暫存器定義可以被執行成一C++物件,其含有一IR節點物件(即一IR樹狀)之
一參考。由該組抽象暫存器定義參考的所有IR樹狀之整體稱為該運作IR資料林,(名為“資料林”是因為其含有多重抽象暫存器根源,其中各個稱為一IR樹狀)。這些IR樹狀和其他步驟適當地形成該轉譯碼產生功能192的部分。
圖3是一繪製圖以呈現本發明之較佳實施例中於程式碼轉換以後,一主題程式內指令與一目標程式內指令之間的關係。
此實例中,主題指令S1至S3致使其功能等同於目標指令T1至T3。該主題指令S1已經被移除,比如一死碼消除最佳化,並且在所產生的目標碼中沒有副本。主題指令S2得到一等同目標指令T3,相較之下,主題指令S3得到兩個目標指令T1和T2。該目標碼與主題碼指令之間可以是一對無、一對一、一對多、或多對一的關係。
如圖3也顯示,另外普通用於最佳化的是進行重新排列碼,其中該目標碼的一指令序是不等同於該主題碼中的該原始序。在此該第二主題指令S2已經被重新排列成該第三目標指令T3。
圖3也呈現一主題異常處理器170。通常該主題環境會提供一或多個特定的主題錯誤處理器170a,(即特定為一特別型態的異常),和/或一或多個無錯異常處理器170b,(將使用在沒有特定異常處理器被登錄之處)。
此實例中,該主題指令S1,S2或S3其中任何一個可能導致一異常,需要由主題異常處理器170來處理。
一轉譯的主題異常處理器270在一目標碼內提供一異常處理器以便在該目標處理器上執行,其模擬該主題異常處理器170。
實際上,配備一或多個已轉譯的主題特定異常處理器270a或無錯異常處理器270b。一旦該異常已經被處理,該異常處理器270通常會將控制交回該目標碼21。
該已轉譯的主題異常處理器270預期收到一精確的主題狀態,為能精確地處理該異常。如上所注意到,重新產生該精確主題狀態的步驟是既困難又昂貴。首先會有與計算和收集該主題狀態相關的成本,例如:轉譯器最佳化,比如遲緩評估可以藉由儲存計算那些數值所需要的該下層資料將主題暫存器值的計算延後。重新產生該主題狀態以回應一異常的步驟需要立即將這些數值加以修正(即計算),即使該主題暫存器先前已經計算過,也必須從記憶體擷取,比如從該主題暫存器資料庫27。
第二,會有與在該主題程式中一任意點計算一精確主題狀態的能力相關之一機會成本。在一動態二元轉譯器,比如重新排列碼的許多關鍵最佳化,涉及從二元相容的一嚴謹模組中離開。二元相容性的意思是該轉譯器能夠重新產生該主題架構確實一樣的狀態。一嚴謹模組是該主題狀態能夠在該轉譯程式中任何一點(即任何一主題指令)被重新產生之其中一個。為了保存需要重新產生執行中任何一點的該主題狀態之資訊,該轉譯器通常必須進行相當多的最佳化。當這些最佳化在使用中,該轉譯器就無法正確地重新產生該主題內容。因此,精確處理異常的真實成本不只是產生該精確主題狀態的工作,對該碼轉換的步驟也有限制,為了能夠產生全部的該主題狀態。
首先,專注在一般認為是一特別類型的異常之錯誤呈現本發
明將有助於瞭解。
錯誤通常用於失誤處理。在異常環境中,許多操作可能無法產生一正確的結果,例如:一整數相加指令可能會產生一結果是太大而無法表示,(假設其結果的大小與該輸入的大小吻合)。處理器架構的設計者決定此一錯誤將如何被旗標,假如是有的話。三種典型的設計選擇如下:沉默地忽略其溢位;藉由修改內部處理器狀態(例如:狀態旗標)以旗標該失誤,但繼續執行接下來的指令;或者引起一溢位異常。一特別的架構可以提供這些選擇的一混合,藉由提供一特別指令的錯誤和非錯誤版。
如其他實例,一些普通種類的錯誤有:計算異常、各種形式的記憶體錯誤(不適用的位址、破壞保護、和排列檢驗)、以及錯誤形成或(在目前的權限層級)非法的指令錯誤。
錯誤通常是同步且被強迫的異常,因為是由執行一給定的指令而發生,在該運算元資料的內容以及處理器狀態(包括記憶體配置等等)。錯誤發生是在指令內,就是說該錯誤指令不能完成。通常一主題處理器解決該暫存狀態是在該錯誤指令開始時,容許一錯誤處理器嘗試解決此失誤,以及將執行重新啟動。於某些情況下,是不太可能解決如此一狀態,接著就會導致該錯誤被終止。
一可回復錯誤(通常是在OS或次-OS層級)的範例是一記錄頁錯誤,當一記憶體存取嘗試在不出現的虛擬記憶體中存取一記錄頁時,會引起一異常。假如該記錄頁是映射的,該虛擬記憶體系統會配置一實體記錄頁,根據該映射(例如:假使一檔案在該位址已經被映射就載入資料)準備好,然後因此更新該記錄頁表格結構。該處理器就可以在相同的指令重新啟動執行,現在應該能
夠正確地完成。
一些錯誤是可以從使用者模組應用遮蔽的,例如:排列檢驗通常是可用為架構上的一可遮蔽錯誤,其支援錯誤排列的存取,在此之上沒有該排列錯誤是不可遮蔽的。
在一主題指令集架構內的一些指令被認為是容易受挫而產生錯誤,其他則不是。也就是指令集包括一些易錯誤指令(也稱為錯誤指令或可能錯誤指令),以及不會錯誤的一些不易錯誤指令。
錯誤很麻煩因為錯誤是同步且通常是可復原的。進一步地,易錯誤指令傾向於在任何實際的主題程式中相當頻繁地被執行,因此改善處理錯誤在程式碼轉換,特別是動態二元轉譯中具有立即的助益。
圖4根據本發明之一較佳實施例呈現程式碼轉換期間一目標機器中一範例的程式碼結構。
圖4中,一範例區塊的主題碼17包括主題指令SC1至SC4。這些指令其中之一(SC3*)是一易錯誤指令174,而其他的是不易發生錯誤。
圖中也呈現一對應區塊的目標碼21,具有等同的目標碼指令TC1至TC6。該易錯誤主題指令174(SC3)是關於該已產生的目標碼21內一或多個副本目標指令214(此情況是TC4*)。
如圖4顯示,配備一復原映射194將各個副本目標指令214連結至一相對的復原資訊項目195。也就是,各個易錯誤主題指令174具有一或多個副本目標指令214,其中各自被映射至一相對的
目標特定復原資訊項目195。
該復原資訊195容許精確地處理在執行該目標碼21期間發生的異常(特別是錯誤)。特別地,該復原資訊195容許額外的本地碼指令被執行為使能夠產生該精確的主題狀態,用於該轉譯的主題異常處理器270內精確地處理異常。
一較佳實施例中,配備的一復原處理器215使用該復原資訊195以修正該精確的主題狀態,準備由該異常處理器270來處理該異常。
圖5是根據本發明之一較佳實施例,整體繪製一種產生能夠精確處理錯誤型態異常的該目標碼21之方法。
步驟501中,一段落的主題碼17被解碼,適當地為一基本區塊。解碼期間,一或多個易錯誤指令174是根據該主題ISA的定義被識別。
步驟502中,進行程式碼轉換將該主題碼17轉換成一對應區塊的目標碼21。選擇性地,該程式碼轉換包括最佳化,比如無作用碼移除和/或重新排列碼,或者其他之一。該已產生區塊的目標碼21包括用於各個該些易錯誤主題指令174的一或多個副本目標指令214。
步驟503中,配備的復原資訊195是用於各個該些副本目標指令214。適當地,登錄是在一復原映射表格194中被產生,將各個副本目標指令214連結至相對的復原資訊195。
步驟504中,執行該已產生區塊的目標碼21內的指令。假如沒有異常(錯誤)發生,那麼就繼續執行直到該區塊的終點,並且控制流程會呼叫下一個區塊,比如經由圖2的該轉譯器進行迴路。
步驟505中,當一異常(一錯誤)的發生是與該副本目標指令214其中之一相關時,會得到該相對的復原資訊195,並用於修正一精確的主題狀態。也就是,使用該復原資料195以執行一組額外的復原碼指令(理想地在該復原處理器215內)。
該復原處理器215是適當地以本地碼寫入,其可由該目標處理器就地執行,(與被轉譯的目標碼由該轉譯器19動態地產生相反)。
步驟506中,該異常是由該異常處理器270精確地處理。也就是,步驟505的該復原提供一精確的主題狀態以符合由該異常處理器270要處理的精確異常之狀況。通常該異常被成功地處理,並且將控制交回該正在執行的程式。典型地,將控制交回已完成該目前區塊的執行。於其他的情況,該錯誤會被終止且該程式就結束了。
圖6呈現一較佳機制以儲存復原資訊195和已產生的目標碼21於該目標記算平台。
以上討論的該復原機制本身會帶給該轉譯器19一些成本。首先,必須有記憶體空間用以儲存該復原資訊195。進一步地需要空間用以儲存該復原映射194,將各個副本目標碼指令214連結至該相對的復原資訊195。當一異常(錯誤)發生時,希望快速且有效率地得到該相關的復原資訊195。
圖6顯示該目標計算平台內一區域的記憶體,其儲存一已產生區塊的目標碼21a。該目標碼區塊21a包括一或多個副本目標指令214,其對應該主題碼內的易錯誤指令174。
該復原資訊195是儲存在緊接著該相對的目標碼區塊21a之後的記憶體內,也就是各個該些該副本目標指令214具有一相對的復原資訊項目195,其立即儲存在該相關的目標碼區塊21a之後。
希望地,配置一標記196為能準備用於區別該目標碼區塊21a的終點與該復原資訊195的開始。
進一步地如圖6所示,另一已轉譯的目標碼區塊21b是儲存在記憶體內,同樣是接在該相對的復原資訊195和一標記196之後。也就是,該目標碼21和該復原資訊195在記憶體內是交錯的。
當一異常(錯誤)在一特別的副本目標指令214內發生時,即進行接下來的步驟為能得到該相對的復原資訊。
第一步是向下掃描至該目標碼區塊的終點。便利地,此步驟包括讀取後續的指令直到該標記196被識別。第二,向下掃描該表列的復原資訊195之步驟識別該相對的希望復原資訊。
一特別較佳實施例中,各個復原資訊195是根據一副本目標指令214的該程式計數器加以索引。也就是,該副本目標碼指令214的該程式計數值在該表列的復原資訊195內形成一索引。當一異常發生時,該目標程式計數器是在該目標處理器內準備好以供使用。掃描該記憶體先找該標記196,然後再找該表列復原資訊內的該目標程式計數器,以有效率地定位該相對的復原資訊195。
圖7顯示使用圖6中該記憶體配置得到復原資訊的一較佳方法。
實際實施例中,各個基本區塊通常含有大約十二個指令。因此掃描至目前之目標碼區塊的終點相當快速,因為所涉及的距離相當短。於一較佳實施例,各個主題區塊是限制在約100或200個
指令的一最大容量,即使在相當長的目標區塊之這些罕見情況,掃描仍然是一有效能且廉價的機制。
圖8顯示該復原資訊195的一特別較佳實施例。
圖8的實例中,該復原資訊195包括一目標程式計數器195a、一主題程式計數器195b、一組復原指標195c、以及一映射樣型195d。
該復原資訊195容許該復原處理器215以修正一精確的主題狀態。特別地,該精確主題狀態包括一主題程式計數值和主題暫存值。
適當地,該復原處理器215使用該復原資訊以修正該主題程式計數器,(假如沒有可用的)。此實例中,該復原資訊195儲存一正確的主題PC(程式計數器)195b於各個目標PC 195a。該主題PC藉由讀取在該已儲存復原資訊內的欄位195b而修正。
該映射樣型195d識別在該副本目標指令214的點上可應用之一適當的暫存器映射。該復原處理器215修正該主題處理器暫存值。一實施例中,該暫存值被修正至記憶體內的該抽象暫存器資料庫27。或者,記憶體儲存被留在該目標暫存器內。在此,該復原處理器215使用該已儲存的映射樣型195d以設定一暫存器映射,其中該主題暫存器是被映射至實際的目標暫存器。
如圖8所示,該已儲存的復原資訊195理想地包括一組復原指標(最佳化旗標)195c,其表示在一特別目標碼指令的點上之優異最佳化。此實例中,有四個復原指標設定為F1,F2,F3和F4。適當地,該復原處理器215呼叫一或多個本地碼復原常式216,根據該復原指標F1至F4以進行該優異的最佳化。
特別地,該復原處理器進行在該異常發生的點已經被延後之
遲緩作業。例如:許多處理器提供一組狀況碼旗標。一較佳最佳化是將該狀況碼旗標的修正延後,而以儲存下面的資訊來取代,其容許該狀況碼旗標的該正確狀態在需要時被修正。該復原常式216從該儲存的下面資訊進行該遲緩狀況碼旗標評估。
圖9呈現該已儲存的復原資訊之另一特別較佳實施例。
該復原資訊195理想地以一壓縮的形式儲存。有利地,該復原資訊的一記憶體足跡被降低。於一些環境中,該轉譯器19在一計算平台上依循著許多其他的處理器操作,並且希望降低被該轉譯器19的成本所消耗的該記憶體量。
如圖9所示,一第一目標PC 195a和一第一主題PC 195b是以完整值儲存,後續的PC是各自儲存為以這些基值的偏置值。適當地,在各個區塊目標碼21a和21b內的該第一復原資訊195,是以完整PC值儲存為一基值,並且各個後續的復原資訊195儲存一程式計數值為該基值的一偏置。或者,一基本PC是以該區塊定義此是否為一副本目標指令214,比如該PCs為該區塊中第一目標碼指令。
以下呈現一範例序列的主題碼17,如目前所敘述技術的一呈現範例。該範例的主題碼17是適於一加強PC(PPC)型態的處理器:
0x0001003c:...
0x00010040:相加r3,r3,68
0x00010044:1d r3,0(r3)
0x00010048:...
該範例的PPC主題碼加上一常數值68至暫存器“r3”,然後從該位址載入r3。該相加是以一PPC點陣的相加指令進行,其設定旗標於該PPC狀況欄位暫存器的欄位0內。然後假如發生載入錯誤,對於精確處理該異常,該載入指令(0x00010044)的該程式計數值應該被報告,於該相加操作已經進行之後r3應該含有該數值,並且該狀況欄位0應該已經更新。
程式碼轉換之後,產生以下的該實例目標碼21。此實例中,該目標碼是可以由一x86型態的處理器執行的。
0x40083200:移送12(%ebp),%eax
0x40083203:相加$68,%eax
0x40083206:移送(%eax),%ecx
0x40083208:移送%ecx,12(%ebp)
該目標碼將主題暫存器r3的數值載入暫存器eax,(發現在該ebp暫存器偏置值12,在此指向該抽象暫存器資料庫27)。該目標碼現在將68加至eax,然後從此位址載入ecx。最後此結果被儲存回至該抽象暫存器資料庫內的該主題暫存器r3。
此實例中,該復原資訊195的一示範實例為:0x40083206:subj_addr=0x00010044,flags=cr0_lazy1_cmp0,register_map=[lazy1(%eax),r3(%eax)].
該目標PC(0x40083206)是用於將復原資訊加以索引。此情況下,該目標移送(mov)指令是該可能錯誤的主題載入指令之副本目標指令。該正確的主題PC被記錄(0x00010044)。一旗標是用於顯示狀況暫存器欄位0需要根據與一特別主題暫存器稱為’lazy1’中的數值0之比較而被修正。復原資訊也指出主題暫存器lazy1和r3的數值是在目標暫存器eax內,(由該相加目標指令0x40083203所產生的數值)。為了回復,來自eax的數值將流至該適當的主題暫存器,現在該狀況欄位就能夠利用現在流至lazy1的數值藉由進行該適當的比較而被修正,且該適當的PC會被報告。
簡言之,該復原資訊容許只有需要時才進行工作。也就是,只在該異常情況才進行工作。大部分的時間在正常執行,是不需要一精確的主題狀態、也不會被修正。在此討論的該復原機制,容許工作在正常執行該已產生的目標碼期間被延後或一點也不進行。結果,該目標碼的正常執行會變得較快速也比較有效率。然而當一異常發生時,該復原資訊195依舊容許一精確的主題狀態被修正,並且會精確地處理該異常。該復原工作是在該異常已經發生之後進行,為能修正該精確的主題狀態。
現在將詳細敘述本發明訊息之另一較佳方面相關於中斷的精確處理。
中斷通常是用於硬體裝置支援。當該處理器外部的一硬體裝置內發生一事件時,會傳送一訊號通知該處理器此事件,其中一實例就是從一I/O裝置的資料可用性。該外部裝置經由該處理器
中斷目前的指令流,為了調用一常式以處理該中斷。該中斷的使用可以減輕該系統繼續輪詢裝置以瞭解其是否要處理之需要。另一實例是計時器中斷,其容許使用者應用在預定的間隔被中斷,而且通常控制被轉移至作業系統。規律的中斷是一便利的機制,以迫使一多重工作的系統分享處理器的資源。
中斷是不同步的異常,其被調用以回應一外部裝置的一事件,而不是在該處理器內一特定指令的執行。如此一來,中斷可以在一指令流內任何一點發生。一中斷與目標正在執行的指令流不相關,而且一旦該異常被處理後執行就可以重新開始。
圖10顯示一範例的目標碼序列以呈現中斷的處理。
該區塊的目標碼21a包含指令TC1至TC6。此實例中,一中斷是在該處理器正執行指令TC2時發生。該目前指令(TC2)的執行是完成的。還有,執行零或多個額外指令(TC3)直到遭遇與復原資訊195相關的一副本目標指令214,(此情況是指令TC4)。也就是,該目標碼指令的執行向前轉動,直到可以完成一精確的主題狀態之下一個點。
當該處理器到達與復原資訊195相關的該下一個副本目標指令214,該復原資訊被傳送至該復原處理器215,為了能夠修正一精確的主題狀態。然後該精確的主題狀態被傳送至一適當的異常處理器270,其為一適合的一主題中斷處理器。
圖11呈現三種較佳的實施方式以處理該目標計算平台內的中斷。
於一第一較佳實施例,當一中斷型態的異常發生時調用一目標碼解譯器197。該目標碼解譯器197一個接著一個地執行該目標碼指令,一直到達具有復原資訊195的副本指令214。
於一第二實施例,調用的是一步進處理器模組。也就是,控制該目標處理器13以輸入一步進的處理器模組,其一個接著一個地執行該目標碼指令一直到達一副本指令214。
於一第三實施例,調用的是檢驗條件以逐一指令地執行該目標碼,一直到達具有復原資訊195的一副本指令214。
假如在該目標碼區塊21a中沒有遭遇到易錯誤的副本目標碼指令214,執行會適當地運作至該區塊的終點。一較佳實施例中,一精確的主題狀態是在一區塊邊界上被修正。
誘陷通常是清楚且無條件地使用者要求的異常。在一主題指令引起一誘陷型的異常之處,該轉譯器19即產生用於該指令的目標碼,其直接執行處理該誘陷事件所需要的動作。
一些指令集架構定義需要進一步特別處理的誘陷,比如單一步驟的誘陷和有條件的誘陷,(例如:在IA-32架構中的INTO指令)。不是引起該異常的一般情況,有條件的誘陷是理想地以處理上述錯誤相似的方式處理。此方式一般情況中的工作是被最小化。在該異常的情況,經由該復原處理器調用該所需要的額外工作。
中止通常是不可回復的事件,但會具有各種特徵。中止通常是用於管理關鍵的系統失敗。一旦檢測到一硬體失敗,比如一內部處理器狀態的不一致性;或一連串的軟體失敗,比如該作業系統中關鍵部分內的一錯誤。然後該處理器會想要忽略該失誤並繼
續執行、暫停、或以安全為由重新載入,或者一異常會被引起以傳送失誤訊號至該作業系統。就如同錯誤、中止發生在指令內,中止常常會終止,而且中止通常不是使用者可遮蔽的。
假如一中止,比如一機器檢驗到失誤發生在執行不預期錯誤的一指令內時,要在該中止的指令全部重新產生一精確的主題狀態是困難的。一般來說,在動態二元轉譯的本質內精確地處理中止是非常昂貴。
從以上的敘述將會理解到,在此討論的異常處理機制具有許多優點。特別地,工作從任何可能的普通情況被移除,並且只在該異常情況進行,於典型執行一程式的期間不常發生的。然而,當需要時就會完成一精確的主題狀態。還有,最小化完成該精確的主題狀態之成本。
雖然已經呈現並敘述一些較佳實施例,本技術領域中的技術人員應該理解可以做各種變化和修改,而沒有偏離本發明之範圍,如所附專利申請項所規範。
也應該注意到,與其共同申請或在此說明書之前與本申請相關以及與本說明書公佈於公開審核的所有論文與文件,並且這些所有論文與文件的內容在此以參考方式於此合併。
在本說明書揭示的所有特性(包括任何所附專利申請項、摘要和圖式),和/或在此揭示之任何方法或製程中的所有步驟,都可以任何組合方式結合,除了至少一些這類特性和/或步驟是相互排斥的組合以外。
本說明書揭示的各個特性(包括任何所附專利申請項、摘要和圖式),可以由提供相同功能的等同或相似目的之變化特性取代,除非明確地陳述不適用。因此除了明確地陳述不適用,所揭
示的各個特性只是一連串相關等同或相似的特性中之一個實例。
本發明並不受限於所陳述的實施例中之細節部分,本發明可以延伸至在此說明書(包括任何所附專利申請項、摘要和圖式)所揭示的特性中任何之一,或任何新穎的組合,或者延伸至所揭示的任何方法或過程中步驟的任何之一穎新或任何新穎的組合。
13‧‧‧目標處理器
14‧‧‧目標架構
15‧‧‧目標暫存器
17‧‧‧主題碼
18‧‧‧記憶體
19‧‧‧轉譯器(碼)
20‧‧‧作業系統
21‧‧‧目標碼
21a/b‧‧‧目標碼區塊
27‧‧‧主題暫存器
170‧‧‧主題異常處理器
170a‧‧‧主題錯誤處理器
170b‧‧‧主題無錯誤處理器
174‧‧‧易錯誤主題指令
190‧‧‧控制迴路
192‧‧‧碼產生功能
194‧‧‧復原映射
195‧‧‧復原資訊
195a‧‧‧目標程式計數器
195b‧‧‧主題程式計數器
195c‧‧‧復原指標
195d‧‧‧映射樣型
196‧‧‧標記
197‧‧‧目標碼解譯器
214‧‧‧副本目標指令
215‧‧‧復原處理器
216‧‧‧本地碼復原常式
270‧‧‧已轉譯的主題異常處理器
270a‧‧‧已轉譯的主題錯誤處理器
270b‧‧‧已轉譯的主題無錯誤處理器
所附圖式整合於本說明書並構成其中的一部分,用以呈現較佳的實施且敘述於後:圖1是一方塊圖以呈現可以應用本發明之實施例的裝置;圖2是一繪製的流程圖以呈現程式碼轉換期間執行控制的一較佳方法;圖3是一繪製圖形以顯示程式碼轉換以後主題指令與目標指令之間的關係;圖4根據本發明之一較佳實施例呈現程式碼轉換期間一目標機器內一範例的程式碼結構;圖5是一繪製全貌以呈現根據本發明之一較佳實施例中一種產生用於精確異常的目標碼之方法;圖6是一繪製圖形以呈現一較佳機制用於儲存復原資訊和已產生的目標碼;圖7是得到復原資訊的一較佳方法之繪製圖形;圖8是一繪製圖以表示用於本發明之一較佳實施例的復原資訊;圖9是一繪製圖以表示用於本發明之另一較佳實施例的復原資訊;
圖10呈現一範例的目標碼序列以顯示處理中斷;以及圖11是一繪製圖以呈現在一目標計算平台內處理中斷之一較佳執行方式。
17‧‧‧主題碼
21‧‧‧目標碼
174‧‧‧易錯誤主題指令
194‧‧‧復原映射
195‧‧‧復原資訊
214‧‧‧副本目標指令
215‧‧‧復原處理器
270‧‧‧轉譯的主題異常處理器
Claims (32)
- 一種精確處理由於從主題碼至目標碼之程式碼轉換的異常之方法,該方法包括以下步驟:根據一主題指令集架構將可由一主題處理器執行的主題碼解碼,並且識別在該主題指令集架構中可能會造成錯誤之一易發生錯誤指令,其中該指令集架構包括易發生錯誤指令部分,以及不會錯誤的一些不易錯誤指令部分;從該主題碼產生目標碼,其包括從該已識別的易發生錯誤主題指令產生一或多個副本目標指令,以及儲存與該副本目標指令或各個該些副本目標指令相關的復原資訊;根據一目標指令集架構在一目標處理器上執行該目標碼;以及當執行一特定副本目標指令而指示一錯誤時,則進行以下步驟:擷取與該特定副本目標指令相關的該復原資訊;利用該復原資訊回復一精確的主題狀態,其正確地代表處於該錯誤的該主題處理器;以及利用該精確的主題狀態以精確地處理該錯誤。
- 如申請專利範圍第1項之方法,其中產生該目標碼的步驟包括執行一或多個最佳化,以及其中該復原資訊提供關於該一或多個最佳化的資訊。
- 如申請專利範圍第1項之方法,其中產生該目標碼的步驟包括執行一或多個最佳化,其將一不正確的主題狀態留在該一或多個副本目標指令,並且該復原資訊從該可用的不正確主題指令提供,而能夠得到一精確的主題狀態。
- 如申請專利範圍第1項之方法,其中該精確的主題狀態至少包括一正確的主題程式計數器。
- 如申請專利範圍第1項之方法,其中該精確的主題狀態至少包括代表該主題處理器的主題暫存器之正確暫存值。
- 如申請專利範圍第1項之方法,其中儲存該復原資訊的步驟包括緊接著在該已產生的目標碼之後儲存該復原資訊。
- 如申請專利範圍第6項之方法,其中擷取復原資訊的步驟包括以下步驟:向下掃描該目標碼以定位在其之後的該復原資訊;以及擷取與該個別副本目標指令相關的該復原資訊。
- 如申請專利範圍第1項之方法,包括:將該主題碼分成複數個區塊;產生複數個目標碼區塊;以及儲存插入於該已產生的目標碼區塊之間的復原資訊。
- 如申請專利範圍第1項之方法,包括儲存一標記,該標記將該目標碼與該復原資訊分開,並且藉由從指示一錯誤的該副本目標指令掃描以定位該標記,然後從該標記掃描以定位該相關的復原資訊之方式來擷取該復原資訊。
- 如申請專利範圍第1項之方法,包括儲存由一目標程式計數器加以索引的該復原資訊,且該目標碼程式計數器是表示該相關的副本目標指令。
- 如申請專利範圍第1項之方法,其中回復該精確主題狀態的步驟包括將該已擷取的復原資訊傳送至一復原處理器,得到一目前可用的主題狀態,以及利用該復原資訊來修改該目前可用的主題狀態,以提供該精確的主題狀態。
- 如申請專利範圍第1項之方法,包括將該復原資訊傳送至一復原處理器,並且根據該復原資訊從該復原處理器呼叫至一或多個本地碼復原常式。
- 如申請專利範圍第1項之方法,其中該復原資訊包括一目標程式計數值和一主題程式計數值。
- 如申請專利範圍第13項之方法,其中該復原資訊進一步包括一組復原指標,其表示在該副本目標碼指令的該點上之顯著最佳化。
- 如申請專利範圍第13項之方法,其中該復原資訊進一步包括一映射樣型,其識別目標暫存器至抽象主題暫存器之映射,而該映射在該副本目標碼指令的該點上為可用的。
- 如申請專利範圍第1項之方法,其中該復原資訊是以一壓縮的形式儲存。
- 如申請專利範圍第13項之方法,其中該復原資訊包括關於一目標碼區塊的一第一復原資訊項目,並以一完整程式計數值儲存為一基值,以及一或多個後續的復原資訊項目,各個後續復原資訊項目包括一程式計數值做為從該基值的一偏置值。
- 如申請專利範圍第1項之方法,進一步包括以下步驟:在執行該目標碼期間,當該目標處理器上接收一中斷訊號時,繼續執行該目標碼直到遭遇該副本目標指令或該些副本目標指令之一;擷取與該個別副本指令相關的該復原資訊,並且回復該精確的主題狀態;利用該精確的主題狀態精確地處理該中斷。
- 一種精確處理由於從主題碼至目標碼之程式碼轉換的異常 之方法,該方法包括以下步驟:根據一主題指令集架構將可由一主題處理器執行的主題碼轉譯成可由一目標處理器執行的目標碼,其中該指令集架構包括易發生錯誤指令部分,以及不會錯誤的一些不易錯誤指令部分,包括:識別該主題碼中一易發生錯誤指令;產生一或多個副本目標碼指令,做為該易發生錯誤主題指令的副本;儲存與該副本目標指令或各個該些副本目標指令相關的一復原資訊;以及在該目標處理器上執行該目標碼包括:當一異常的發生是關於一特定副本目標指令時,定位與該特定副本目標指令相關的該復原資訊;根據該已定位的復原資訊執行一復原常式以修正代表該主題處理器的一精確主題狀態;以及調用一異常處理器以處理關於該已修正的精確主題狀態之該異常。
- 一種精確處理由於從主題碼至目標碼之程式碼轉換的異常之方法,該方法包括以下步驟:產生包括至少一副本目標指令的目標碼,該副本目標指令對應於該主題碼中一可能造成錯誤的主題指令,以及儲存與該至少一副本目標指令相關的復原資訊;當接收一中斷時,繼續執行目標碼指令直到遭遇該至少一副本目標指令;當到達該副本目標指令時,利用該相關的復原資訊回復一精 確的主題狀態;以及利用該回復的精確主題狀態精確地處理該中斷;其中產生該目標碼的步驟包括執行一或多個最佳化,以及其中該復原資訊表示提供關於該一或多個最佳化的資訊。
- 如申請專利範圍第20項之方法,包括當接收該中斷時一個接著一個地執行該目標碼指令。
- 如申請專利範圍第21項之方法,包括在該目標處理器中調用一步進模式以一個接著一個地執行該目標指令。
- 如申請專利範圍第21項之方法,包括調用一目標碼解譯器以一個接著一個地解讀該目標碼指令。
- 一種精確處理從主題碼至目標碼之動態式二元轉換的異常之方法,該方法包括以下步驟:從一序列的主題碼指令產生一序列的目標碼指令;執行該序列的目標碼指令,並且當一異常發生時依循著該序列的目標碼指令向前運作,直到遭遇處於可達成的一精確主題狀態之目標碼指令;以及延後處理該異常直到該精確的主題狀態可以達成;其中該序列的目標碼指令包括對應於該主題碼中一可能造成錯誤的主題指令之至少一副本目標碼指令,該至少一副本目標碼指令與復原資訊相關聯;其中產生該目標碼的步驟包括執行一或多個最佳化,以及其中該復原資訊表示提供關於該一或多個最佳化的資訊。
- 一種轉譯器裝置,其配置以進行從主題碼至目標碼的程式轉換,該裝置包括:一轉譯器單元,具有一解碼單元,其根據一主題指令集架構 將可由一主題處理器執行的主題碼解碼,並且識別在該主題指令集架構中可能會造成錯誤之一易發生錯誤指令,其中該指令集架構包括易發生錯誤指令部分,以及不會錯誤的一些不易錯誤指令部分;以及具有一目標碼產生單元,以從該主題碼產生一目標碼,包括從該已識別的易發生錯誤主題指令產生一或多個副本目標指令,以及儲存與該副本目標指令或各個該些副本目標指令相關的復原資訊;一目標處理器,用以根據一目標指令集架構執行該目標碼;一復原處理器單元,當該目標處理器內執行個別的該些副本目標指令其中之一指示一錯誤時,用以擷取與一個別的該一或多個副本目標指令其中之一相關的該復原資訊,並利用該復原資訊以回復一精確的主題狀態;以及一異常處理器單元,利用該精確的主題狀態以精確地處理該錯誤。
- 一種轉譯器裝置,其配置以進行從主題碼至目標碼的程式碼轉換,該裝置包括:一轉譯器單元,將可由一主題處理器執行的一主題指令集架構之主題碼轉譯成可由一目標處理器執行的目標碼,其中該主題指令集架構包括易發生錯誤指令部分,以及不會錯誤的一些不易錯誤指令部分,其中該轉譯器單元識別在該主題碼中一易發生錯誤指令,產生一或多個副本目標碼指令做為該易發生錯誤主題指令的副本,並儲存與一或多個該副本目標指令或各個該些副本目標指令相關的一復原資訊;一目標處理器,用以執行該目標碼使得當一異常的發生是關於一個別的該一或多個副本目標指令其中之一時,該復原資訊被 定位在相關的個別副本目標指令,根據該已定位的復原資訊執行一復原常式,以修正代表該主題處理器的一精確主題狀態,以及調用一異常處理器以處理關於該已修正的精確主題狀態之該異常。
- 一種轉譯器裝置,其配置以進行從主題碼至目標碼的程式碼轉換,該裝置包括:一轉譯器單元,用以產生包括至少一個副本目標指令的目標碼,該至少一個副本目標碼對應一主題指令集架構之主題碼中一可能發生錯誤的主題指令,和用以儲存與該至少一個副本目標指令相關的復原資訊,其中該主題指令集架構包括易發生錯誤指令部分,以及不會錯誤的一些不易錯誤指令部分;以及一目標處理器,用以執行該目標碼使得當接收一中斷時繼續執行目標碼指令,直到遭遇該至少一個副本目標指令;一復原處理器,當該目標處理器遭遇該至少一個副本目標指令時,其利用該相關的復原資訊用以回復一精確的主題狀態;以及一轉譯的主題異常處理器,用以利用該已回復的精確主題狀態處理該中斷。
- 一種轉譯器裝置,其配置以進行從主題碼至目標碼的程式碼轉換,該裝置包括:一轉譯器單元,用以從一序列的主題碼指令產生一序列的目標碼指令;一目標處理器,用以執行該序列的目標碼指令,以及當一異常發生時依循著該序列的目標碼指令向前運作,直到遭遇處於可達成的一精確主題狀態之一目標碼指令;以及 一異常處理器,用以當該精確的主題狀態可達成時處理該異常;其中該序列的目標碼指令包括對應於該主題碼中一可能造成錯誤的主題指令之至少一副本目標碼指令,該至少一副本目標碼指令與復原資訊相關聯;其中產生該目標碼的步驟包括執行一或多個最佳化,以及其中該復原資訊表示提供關於該一或多個最佳化的資訊。
- 一種電腦可讀取的媒體,其記錄可由一電腦執行的指令用以實施如申請專利範圍第1項之方法。
- 一種電腦可讀取的媒體,其記錄可由一電腦執行的指令用以實施如申請專利範圍第19項之方法。
- 一種電腦可讀取的媒體,其記錄可由一電腦執行的指令用以實施如申請專利範圍第20項之方法。
- 一種電腦可讀取的媒體,其記錄可由一電腦執行的指令用以實施如申請專利範圍第24項之方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB0507943A GB2425372B (en) | 2005-04-20 | 2005-04-20 | Method and apparatus for precise handling of exceptions during program code conversion |
US11/272,882 US8020154B2 (en) | 2005-04-20 | 2005-11-14 | Precise handling of exceptions during program code conversion |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200710731A TW200710731A (en) | 2007-03-16 |
TWI482094B true TWI482094B (zh) | 2015-04-21 |
Family
ID=34630958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW095113005A TWI482094B (zh) | 2005-04-20 | 2006-04-12 | 在程式碼轉換期間異常的精確處理之方法與裝置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8020154B2 (zh) |
JP (1) | JP5182815B2 (zh) |
CN (1) | CN101164041B (zh) |
GB (1) | GB2425372B (zh) |
HK (1) | HK1091003A1 (zh) |
IL (1) | IL186161A (zh) |
TW (1) | TWI482094B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10203942B2 (en) | 2017-06-09 | 2019-02-12 | National Chiao Tung University | Binary-code translation device and method |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6986128B2 (en) * | 2000-01-07 | 2006-01-10 | Sony Computer Entertainment Inc. | Multiple stage program recompiler and method |
US7757221B2 (en) * | 2005-09-30 | 2010-07-13 | Intel Corporation | Apparatus and method for dynamic binary translator to support precise exceptions with minimal optimization constraints |
US20070294675A1 (en) * | 2006-06-20 | 2007-12-20 | Transitive Limited | Method and apparatus for handling exceptions during binding to native code |
US20080052691A1 (en) * | 2006-06-29 | 2008-02-28 | Naveen Neelakantam | Communicating with and recovering state information from a dynamic translator |
US9658849B2 (en) * | 2006-07-06 | 2017-05-23 | Imperas Software Ltd. | Processor simulation environment |
GB2448523B (en) * | 2007-04-19 | 2009-06-17 | Transitive Ltd | Apparatus and method for handling exception signals in a computing system |
JP4661854B2 (ja) * | 2007-11-09 | 2011-03-30 | 株式会社デンソー | 検査システム及びプログラム |
GB0813833D0 (en) * | 2008-07-29 | 2008-09-03 | Transitive Ltd | Apparatus and method for handling page protection faults in a computing system |
US10346199B2 (en) | 2009-04-10 | 2019-07-09 | Microsoft Technology Licensing, Llc | Handling exceptions related to corrupt application state |
US8645758B2 (en) * | 2010-04-29 | 2014-02-04 | International Business Machines Corporation | Determining page faulting behavior of a memory operation |
US9098355B2 (en) | 2012-01-06 | 2015-08-04 | Intel Corporation | Method and apparatus for substituting compiler built-in helper functions with machine instructions |
CN103077073B (zh) * | 2013-01-15 | 2016-12-28 | 华为技术有限公司 | 即时功能级仿真器的实现方法和装置及仿真处理器 |
EP2980699B1 (en) | 2013-03-29 | 2017-08-16 | Fujitsu Limited | Program, information processing system, and program migration method |
CN103699427B (zh) * | 2013-12-13 | 2018-01-16 | 华为技术有限公司 | 一种基于jit仿真器的中断检测方法及系统 |
EP3258378B1 (en) | 2016-06-14 | 2022-05-04 | Qoitech AB | Measurement coordination by monitoring of program code execution |
US10261785B2 (en) * | 2017-02-28 | 2019-04-16 | Microsoft Technology Licensing, Llc | Arithmetic lazy flags representation for emulation |
DE102018122920A1 (de) * | 2018-09-19 | 2020-03-19 | Endress+Hauser Conducta Gmbh+Co. Kg | Verfahren zur Installation eines Programms auf einem eingebetteten System, ein eingebettetes System für ein derartiges Verfahren sowie ein Verfahren zur Erstellung einer Zusatzinformation |
CN111382429B (zh) * | 2018-12-27 | 2022-12-27 | 华为技术有限公司 | 指令的执行方法、装置及存储介质 |
CN111708680A (zh) * | 2020-06-12 | 2020-09-25 | 北京字节跳动网络技术有限公司 | 报错信息解析方法、装置、电子设备及存储介质 |
CN118051362A (zh) * | 2022-11-16 | 2024-05-17 | 瑞昱半导体股份有限公司 | 任务异常侦错系统及嵌入式设备侦错方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6161219A (en) * | 1997-07-03 | 2000-12-12 | The University Of Iowa Research Foundation | System and method for providing checkpointing with precompile directives and supporting software to produce checkpoints, independent of environment constraints |
TW502212B (en) * | 1999-10-01 | 2002-09-11 | Hitachi Ltd | System and method for reducing computing system latencies associated with branch instructions |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
US5787241A (en) * | 1995-12-18 | 1998-07-28 | Integrated Device Technology, Inc. | Method and apparatus for locating exception correction routines |
US5832205A (en) * | 1996-08-20 | 1998-11-03 | Transmeta Corporation | Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed |
US6256753B1 (en) * | 1998-06-30 | 2001-07-03 | Sun Microsystems, Inc. | Bus error handling in a computer system |
DE69924857T2 (de) | 1998-10-10 | 2006-03-02 | Transitive Ltd., Hanging Ditch | Programm-kode-umwandlung |
US7065750B2 (en) * | 1999-02-17 | 2006-06-20 | Elbrus International | Method and apparatus for preserving precise exceptions in binary translated code |
JP2000322269A (ja) * | 1999-05-10 | 2000-11-24 | Nec Software Hokuriku Ltd | エミュレーションシステム |
US6990658B1 (en) * | 1999-10-13 | 2006-01-24 | Transmeta Corporation | Method for translating instructions in a speculative microprocessor featuring committing state |
US6895460B2 (en) * | 2002-07-19 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Synchronization of asynchronous emulated interrupts |
GB0315844D0 (en) * | 2003-07-04 | 2003-08-13 | Transitive Ltd | Method and apparatus for performing adjustable precision exception handling |
-
2005
- 2005-04-20 GB GB0507943A patent/GB2425372B/en active Active
- 2005-11-14 US US11/272,882 patent/US8020154B2/en active Active
-
2006
- 2006-04-07 JP JP2008507146A patent/JP5182815B2/ja active Active
- 2006-04-07 CN CN2006800133115A patent/CN101164041B/zh active Active
- 2006-04-12 TW TW095113005A patent/TWI482094B/zh active
- 2006-11-14 HK HK06112508A patent/HK1091003A1/xx unknown
-
2007
- 2007-09-23 IL IL186161A patent/IL186161A/en active IP Right Revival
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6161219A (en) * | 1997-07-03 | 2000-12-12 | The University Of Iowa Research Foundation | System and method for providing checkpointing with precompile directives and supporting software to produce checkpoints, independent of environment constraints |
TW502212B (en) * | 1999-10-01 | 2002-09-11 | Hitachi Ltd | System and method for reducing computing system latencies associated with branch instructions |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10203942B2 (en) | 2017-06-09 | 2019-02-12 | National Chiao Tung University | Binary-code translation device and method |
TWI660307B (zh) * | 2017-06-09 | 2019-05-21 | 國立交通大學 | 二元碼轉譯裝置及方法 |
Also Published As
Publication number | Publication date |
---|---|
US8020154B2 (en) | 2011-09-13 |
CN101164041B (zh) | 2012-08-01 |
TW200710731A (en) | 2007-03-16 |
JP2008537245A (ja) | 2008-09-11 |
GB0507943D0 (en) | 2005-05-25 |
HK1091003A1 (en) | 2007-01-05 |
IL186161A (en) | 2013-03-24 |
US20060253691A1 (en) | 2006-11-09 |
CN101164041A (zh) | 2008-04-16 |
GB2425372A (en) | 2006-10-25 |
JP5182815B2 (ja) | 2013-04-17 |
GB2425372B (en) | 2007-06-13 |
IL186161A0 (en) | 2008-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI482094B (zh) | 在程式碼轉換期間異常的精確處理之方法與裝置 | |
JP7328255B2 (ja) | クロスレベル追跡マッピングによる実行制御 | |
EP2460075B1 (en) | Repairing portable executable files | |
KR101103973B1 (ko) | 조정가능한 정밀도의 예외 핸들링 수행을 위한 방법 및장치 | |
US8458674B2 (en) | Method and apparatus for handling exceptions during binding to native code | |
EP2165258B1 (en) | Apparatus and method for handling exception signals in a computing system | |
US8549502B2 (en) | Compiler with user-defined type inference rules | |
US10942718B2 (en) | Systems and/or methods for type inference from machine code | |
US8261251B2 (en) | Modification of array access checking in AIX | |
CN114144764A (zh) | 使用影子栈的栈跟踪 | |
KR101244069B1 (ko) | 프로그램 코드 변환시 정밀한 예외 핸들링을 위한 방법 및장치 | |
CA2829985C (en) | System and method for validation and conversion of electronic data | |
Altekar et al. | Output-deterministic replay for multicore debugging |