TWI509516B - 在計算系統中用於處理異常訊號之裝置及方法 - Google Patents

在計算系統中用於處理異常訊號之裝置及方法 Download PDF

Info

Publication number
TWI509516B
TWI509516B TW097113063A TW97113063A TWI509516B TW I509516 B TWI509516 B TW I509516B TW 097113063 A TW097113063 A TW 097113063A TW 97113063 A TW97113063 A TW 97113063A TW I509516 B TWI509516 B TW I509516B
Authority
TW
Taiwan
Prior art keywords
signal
unit
target
abnormal
subject
Prior art date
Application number
TW097113063A
Other languages
English (en)
Other versions
TW200907809A (en
Inventor
Paul Thomas Knowles
Kit Man Wan
Original Assignee
Ibm
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ibm filed Critical Ibm
Publication of TW200907809A publication Critical patent/TW200907809A/zh
Application granted granted Critical
Publication of TWI509516B publication Critical patent/TWI509516B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0769Readable error formats, e.g. cross-platform generic formats, human understandable formats
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Hardware Redundancy (AREA)
  • Advance Control (AREA)

Description

在計算系統中用於處理異常訊號之裝置及方法
通言之,本發明與計算機及計算機系統的領域有關,更特定地說,本發明與處置程式碼上下文轉換中之異常訊號的方法及設備有關,例如在碼翻譯器、模擬器及加速器中都有用處。更特定地說,本發明的例示性實施例與用來處置將一計算平台上可執行之二進制碼轉變成另一計算平台可執行之二進制碼之動態轉換結合之異常訊號的方法及設備有關。
中央處理單元(CPU)或處理器位居所有現代計算系統的心臟地位。處理器執行計算程式的指令,並因此使計算平台能夠實施有用的工作。在現代的生活中,CPU普遍存在於所有數位形式的裝置中,而並非只專用於諸如個人電腦、膝上型電腦、及PDA等計算機具中。現代的微處理器無所不在,從汽車到行動電話到兒童玩具。
由於每一類型的處理器具有其自已獨特的指令組架構(ISA),於是,出現了在某一類型處理器上可執行的程式碼,在其它類型處理器上通常無法執行的問題。因此,程式碼轉換已演進到將為某一類型處理器所撰寫的程式碼,自動轉換成可由另一類型處理器執行的碼,或為同類型處理器將老舊且無效率的碼段,最佳化成較新、較快的版本。亦即,在內嵌式與非內嵌式的CPU中,主流的ISA現 已有大量的軟體,其可被"加速"以提升效能或"翻譯"到能呈現較佳成本/性能效益的其它處理器。吾人也發現,主流的CPU架構被綁在它們的ISA時代,且在效能或市場可及範圍方面無法進展。各階層的計算工業,從獨立的口袋型計算裝置到具有十或數百台強有力之伺服器的大型網路都面臨此問題。
關於程式碼轉換之領域的背景資訊,PCT公開W02000/22521,名稱為"Program Code Conversion";W02004/095264,名稱為"Method and Apparatus for Performing Interpreter Optimizations during Program Code Conversion";W02004/097631,名稱為"Improved Arehitecture for Generating Intermediate Representations for Program Code Conversion";W02005/006106,名稱為"Method and Apparatus for Performing Adjustable Precision Exception Handling";及W02006/103395,名稱為"Method and Apparatus for Precise Handling of Exceptions During Program Code Conversion",以上所有併入本文參考,其所揭示的方法及設備有助於程式碼轉換能力,可使用於本文所討論的例示實施例。
有一與異常訊號之處置有關的特殊問題。所謂異常係指改變程式中之正常控制流的狀態。異常訊號指示在系統內某處發生需要處理器注意的情況,且通常需要在可續繼處理前先被處置。異常可被次分成各種不同的類型,諸如中斷、當機、陷阱、或放棄。不同架構間的術語各有不同 ,且特定的架構可能有其獨有的特定類型或種類。
異常訊號(通常簡稱為"訊號")可能由硬體或由軟體所產生。硬體異常包括的訊號諸如重置、中斷,或來自記憶體管理單元的訊號。例如,異常可能由算術邏輯單元或浮點單元所產生,由於諸如被零除的數值錯誤,由於上溢或下溢,或由於指令解碼錯誤,諸如特權、保留、陷阱、或未定義的指令。軟體異常則在各種不同的軟體程式間有很大的差異,但通常被應用於任何類型的錯誤檢查,其改變程式的正常行為。
訊號處置器係一特殊的碼,在程式的執行期間,當發生異常訊號時,該碼被呼叫。接著,訊號處置器嘗試解決引起該異常的任何情況,且如果可能,則繼續執行該程式。如果該程式並未為某特定的訊號提供訊號處置器,則將呼叫一預設的系統訊號處置器。
觸發異常訊號之最常見的事件有當一項處理嘗試(i)存取未被映射的記憶體區域或(ii)操作不具有正確權限的記憶體區域時。其它觸發異常訊號常見的事件有(iii)來自其它處理所傳送之訊號的接收,(iv)執行目前之處理不具有執行之特權等級的指令,或(v)在硬體中的輸入/輸出事件。
表1描述一些具代表性的異常訊號。從目標計算平台的觀點,每一類型的訊號具有一對應的訊號編號,其通常是整數#1,#2,#3,等。在表中也顯示每一訊號之容易記憶的符號名稱。
異常訊號有兩個來源:(1)直接來自程式的執行或(2)來自作業系統或其它處理。某些異常訊號的產生,係程式執行指令的直接結果。例如,如果程式執行不合法的操作碼,則引發SIGILL。同樣地,如果程式嘗試不合法的記憶體存取,則引發SIGSEGV。這些被稱為帶內訊號。異常 訊號也可經由作業系統或經由其它處理由外部產生。SIGHUP與SIGALRM即為此方面的例子。這些由外部所產生的異常訊號被稱為帶外訊號。
從程式的觀點,異常訊號可於任何時間發生。當發生異常訊號時,作業系統使發出訊號之程式的執行中斷,並引動一訊號處置器。作業系統通常為所有的異常定義系統預設的訊號處置器,其藉由系統預設值接收異常訊號,並採取預定的動作,或單純地不理會該訊號。不過,作業系統保持一處理-指定的處置表,該表將每一類型的訊號映射到一暫存的訊號處置器。例如,在Unix中,程式可藉由引動sigaction()系統呼叫而超控一預設的訊號處置器。sigaction()允許程式當接收到特定的異常訊號時,指定作業系統所該採取的動作。該動作可以是:(1)不理會異常訊號;(2)呼叫預設的訊號處置器;或(3)呼叫特殊的訊號處置器功能,其位址係由該程式提供。當在做sigaction()呼叫時,可指定其它的選項,其包括在訊號處置器的執行期間有其它的訊號被阻隔,與CPU可遮蔽某些中斷的方式非常相同。
Unix訊號處置器典型上提供兩個原型的訊號處置器其中之一。第一個原型訊號處置器為"void sigHandler(int sigNum)"。第一個引數為異常訊號的編號,以便可暫存一個功能來處置多個訊號。程式可藉由呼叫sigaction()與SA_SIGINFO旗標來請求提供更多資訊給該訊號處置器。在此情況,Unix訊號處置器原型變為"void sigHandler(int sigNum,siginfo_t siglnfo,void*context)"。
第二個參數("siginfo")係一結構,其包含關於該訊號的資訊,包括何者引起該訊號及其來自何處的一些指示。例如,在SIGILL訊號的情況中,siginfo結構包含不合法指令的位址。此資料基本上可允許該項處理恰當地處置該訊號。第三個參數("context")在該訊號被引發之時提供對該處理器狀態的存取(包括所有暫存器)。再次,此資料可本質上允許訊號之正確的處置。該訊號處置器被允許修改此上下文,且當恢復執行時,暫存器接著被恢復成該經修改之上下文的值。
原始程式碼(在此稱為"主題碼")係按照特定類型的處理器撰寫而成,於是,該主題碼需要特定類型的執行環境,且必須有適當的機制來支援異常訊號的處置。不過,在程式碼轉換的情況之下,該主題碼被轉換成替代的目標碼,且是在目標計算系統上執行。現在,當出現異常時,很難提供適當的機制來處置該異常。
在程式碼轉換的領域中,很明顯,當目標指令在目標處理器上執行並導致要被報告的異常訊號時,通常,該目標指令將無法滿足將該異常報告給撰寫於主題碼中之訊號處置器的條件。首先,由於為主題處理器所撰寫之主題碼的主題處理器指令集與執行目標碼之目標處理器的指令集不同,且其次,由於在程式碼轉換期間典型上會發生的最佳化,因此,指令在目標處理器上,幾乎總是以與主題碼之對應區塊中之指令之次序不同的次序執行。因此,提供 目標狀態給訊號處置器較為容易,但得到代表原始主題碼之執行中相同點的準確主題狀態就很困難且代價高。
在動態程式碼轉換之領域中還特別會產生另一問題,實施程式碼轉換之翻譯器的執行,與執行由翻譯器所產生的目標碼會交錯,且在目標計算平台上甚至可能會共用相同的執行處理。例如,翻譯器與目標碼間可能需要共用唯一的一個SIGALRM訊號。結果是,目標碼準確地模擬原始目標碼很難不受翻譯器之執行的不利影響,或反之,翻譯器目標碼有效率地實施程式碼轉換很難不受目標碼之執行的不利影響。在目標計算平台中可用的訊號可能被耗盡,在最壞的情況中,程式碼轉換處理必須被終止。
還會產生的另一問題是因為主題碼可能已被撰寫成要使用大量的訊號,而在目標計算平台上可用之訊號的數量或類型可能都無法支援。
以下將更詳細討論本發明之例示性實施例處理習知技術之這些及其它問題的技巧。
按照本發明,提供一計算系統,電腦可讀取儲存媒體及所附申請專利範圍中所提出的方法。從申請專利範圍的附屬項及其隨後的描述中將可明瞭本發明的其它特徵。
以下是按照本發明之實施例之不同態樣的概述及可實現的優點。其以簡介的方式提供,以有助於熟悉此方面技術之人士能更快速地消化吸收以下的詳細討論,且並非且 無意以任何方式來限制所附申請專利範圍的範圍。
特別是,本發明人等已發展出針對程式碼轉換的方法。這些方法與提供動態運行時間(run-time)翻譯或二進制程式碼之加速有關的運行時間翻譯器特別有用。
在本發明的一例示性態樣中提供一計算系統,包含:翻譯器單元,被配置來將主題碼轉換成目標碼;處理器單元,被配置來執行該目標碼,並提供與該目標碼在該處理器單元中之執行有關的目標狀態;訊號產生器單元,被配置來至少回應該目標碼在該處理器單元中之執行而產生異常訊號;以及異常處置單元,被配置來處置該異常訊號。在此,該異常處置單元包含:目標側異常處置單元,被配置來接收來自訊號產生器單元的該異常訊號,並選擇性地處置與該目標狀態有關的該異常訊號,以及主題側異常處置單元,被配置來接收來自該目標側異常處置單元的該異常訊號,並處置與主題狀態相關的該異常訊號,其中該主題狀態源自於該目標狀態。該目標側異常處置單元可包含複數個訊號處置子單元,該等子單元每一個被配置來選擇性地處理與該目標狀態有關的該異常訊號,並輸出一返回執行的請求,否則輸出傳遞該異常訊號的請求;遞送路徑選擇單元,被配置來決定該異常訊號到該複數個訊號處置子單元之被選擇之群組的遞送路徑;以及訊號控制單元,被配置來按照該遞送路徑依次將該異常訊號遞送到訊號處置子單元之每一個該被選擇的群組,且(i)其中該等訊號處置子單元中之各別一者輸出返回執行的該請求,接著按照 該目標狀態返回執行;以及(ii)其中該訊號處置子單元輸出傳遞該異常訊號的該請求,接著按照該遞送路徑,將該異常訊號傳遞給訊號處置子單元之該被選擇之群組中之後續一者,且其中在該遞送路徑中不再有指定的該等訊號處置子單元,接著預設將該異常訊號遞送至主題側異常處置單元。
在一實施例中,該訊號產生器單元產生該異常訊號,做為複數個不同類型其中之一,且該遞送路徑選擇單元按照該異常訊號之該類型來決定該遞送路徑。該遞送路徑選擇單元選擇性地包含一表,該表將一組不同類型之該異常訊號的每一個映射到該訊號處置子單元的各個群組。選擇性地,該表將每一類型的該異常訊號映射到包含無、一個、或多個訊號處置子單元的各個群組。在此,該表包括至少一個群組包含複數個該等訊號處置子單元。
在一實施例中,該遞送路徑選擇單元被配置來決定該遞送路徑以指定該異常訊號到達訊號處理子單元之該被選擇之群組的遞送次序,且該訊號控制單元按照該遞送的次序,將該異常訊號依序遞送到訊號處理子單元之該被選擇的群組。
在一實施例中,該訊號產生器單元被配置來產生至少某些可被攔截的複數個異常訊號,且該異常處置單元與該訊號處置單元被暫存,以接收一或多個被攔截的該異常訊號。
在一實施例中,該處理器單元被配置來執行該翻譯器 單元及該目標碼,並提供該目標狀態來表示在該處理器單元中分別關於該目標碼及該翻譯器單元之執行的目前狀態;該訊號產生器單元被配置來產生關於該目標碼及關於該翻譯器單元的複數個異常訊號;以及當該翻譯器單元之執行而產生該異常訊號時,該等訊號處理子單元至少其中一者被配置來處置與該目標狀態有關的各別一或多個該異常訊號。選擇性地,當該目標碼之執行而產生該異常訊號時,至少其中一個訊號處置子單元被配置來處理關於該目標狀態之相同的異常訊號,或至少相同類型的異常訊號。
在一實施例中,僅當該目標碼之執行而產生該異常訊號時,主題側異常處置器被配置來處置源自於該目標狀態與該主題側狀態相關的異常訊號。因此,當該翻譯單元之執行而產生該異常訊號時,該主題側異常處置器並不處置該異常訊號,在一實施例中,該遞送路徑選擇單元為至少一個類型的該等異常訊號決定該遞送路徑,特別地包括主題側異常處置器單元;以及該訊號控制單元按照該遞送路徑將該異常訊號遞送到該主題側異常處置器單元。
在一實施例中,該訊號控制單元被配置來在將該異常訊號遞送至該等訊號處置子單元中被選擇之群組的每一個之後,按照該遞送路徑將該異常訊號遞送至該主題側異常處置器單元。
在一實施例中,該異常處置單元另包含當機報告器單元及預設處置器單元至少其中一者,該當機報告器單元被 配置來產生及儲存關於處理器單元與跟隨在該異常訊號後之當機有關之執行狀態的當機資料結構,並返回執行或終止執行;及該預設處置器單元被配置來按照預定的異常處置協定來處置該異常訊號,並返回執行或終止執行;選擇性地,該遞送路徑選擇單元決定包括有該當機報告器單元及或該預設處置器單元的遞送路徑。該訊號控制單元按照該遞送路徑將該異常訊號分別地遞送至該當機報告器單元及該預設處置器單元。選擇性地配置該訊號控制單元,以在將該異常訊號遞送至該等訊號處置子單元之每一個被選擇之群組及該主題側異常處置器單元之後,按照該遞送路徑將該異常訊號分別地遞送至該當機報告器單元及/或該預設處置器單元。
在一實施例中,複數個訊號處置子單元每一個都包含入口單元,被配置來接收該異常訊號,並決定是否處理此異常訊號;訊號處理單元,被配置來當由該入口單元決定時,對與該目標狀態有關之該異常訊號實施預定的訊號處理功能,該功能包括選擇性地修改該目標狀態,以致反應該異常訊號,以不同方式恢復執行;以及出口單元,被配置來輸出返回執行或傳遞該異常訊號任一者的該請求。該目標選擇性地包括一包含有與該異常訊號相關之資訊的訊號資訊資料結構。該目標狀態選擇性地包括一包含有關於該處理器單元與該異常訊號之上下文有關之資訊的訊號上下文資料結構。
在一實施例中,該主題側異常處置器包含:轉換器單 元,被配置來將該目標狀態轉換成該主題狀態;複數個主題側訊號處理子單元,該等子單元每一個被配置來選擇性地處理與該主題狀態有關的該異常訊號,並決定是傳遞該異常訊號,或是請求返回執行;主題側遞送路徑選擇單元,被配置來決定該異常訊號的遞送路徑,其中該遞送路徑指定該複數個主題側訊號處置子單元中一或多個子單元之被選擇的群組;以及主題側訊號控制單元,被配置來將該異常訊號依次傳遞到主題側訊號處理子單元之每一個被選擇的群組,並反應來自主題側訊號處理子單元之該群組中各別一者的該請求而返回執行。選擇性地,進一步配置該轉換器,以當該主題側訊號控制單元決定返回執行時,將該主題狀態再轉換成該目標狀態。
在一實施例中,該複數個主題側訊號處置子單元之每一個包含:入口單元,被配置來接收該異常訊號,並決定是否處理此異常訊號;訊號處理單元,被配置來當由該入口單元決定時,對與該主題狀態有關之該異常訊號實施預定的訊號處理功能,該功能包括選擇性地修改該主題狀態,以致反應該異常訊號,以不同方式恢復執行;以及出口單元,被配置來輸出返回執行或傳遞該異常訊號任一者的該請求。該主題狀態選擇性地包括一包含有與該異常訊號之被轉換形式有關之資訊的主題訊號資訊資料結構。該主題狀態選擇性地包括一包含有關於被模擬之主題處理器與該異常訊號之被轉換形式有關之資訊的主題訊號上下文資料結構。
在一實施例中,該訊號控制單元被配置來動態地重新組構該遞送路徑選擇單元,以便為該異常訊號決定不同的遞送路徑。選擇性地配置該訊號控制單元來重新組構該遞送路徑選擇單元,以為特定類型的異常訊號增加、修訂或替換該遞送路徑。選擇性地配置該訊號控制單元來按照某特定類型之異常訊號的遞送路徑重新組構該遞送路徑選擇單元,以增加、修訂或替換被選擇之群組中之一或多個訊號處置子單元,。
在一實施例中,該主題碼係可被主題類之處理器直接執行的二進制程式碼。
在一實施例中,該目標碼係可被主題類之處理器直接執行的二進制程式碼。
在一實施例中,該翻譯單元被配置來將可被第一型處理器直接執行之二進制程式碼的主題碼,轉換成可被該處理器單元直接執行之二進制程式碼的目標碼。
在一實施例中,該翻譯單元被配置來將為可被第一型處理器執行而撰寫的主題碼,轉換成可被不同之非相容之第二類型處理器單元可執行的目標碼。
在一實施例中,該翻譯單元被配置來將為可被第一型處理器執行而撰寫的主題碼,最佳化成相同第一類型之處理器單元能更有效率執行的目標碼。
在本發明的另一態樣中,提供一在具有至少一個處理器之計算系統中處置異常訊號的方法,該方法包含以下之電腦實施步驟:將主題碼轉換成可由該至少一個處理器執 行的目標碼;在該至少一個處理器上執行該目標碼;產生與該目標碼之執行相關的異常訊號;決定與該異常訊號有關的訊號遞送路徑,其中該訊號遞送路徑指定從複數個訊號處理子單元之中所選出之訊號處理子單元的群組;按照該訊號遞送路徑將該異常訊號遞送給該群組中之該等訊號處理子單元的第一個單元;決定是否在該訊號處理子單元中處理該訊號,且如果是,則在該訊號處理子單元中處理該訊號以處理該異常;以及判定是否請求返回執行,且如果是,則返回執行,否則,則按照該訊號遞送路徑將該異常訊號傳遞給該群組的下一個訊號處理子單元,以及重複與該群組中之下一個訊號處理子單元有關的該決定與判定步驟。
在本發明的又另一態樣中,提供一在計算系統中處置異常訊號的方法,該方法包含以下的電腦實施步驟:將可由主題處理器類型執行的主題碼,轉換成可由至少一個處理器執行的目標碼;在該至少一個處理器上執行該目標碼;產生與該目標碼之執行相關的異常訊號;決定是否僅參考包含有代表該計算系統與該異常訊號有關之執行狀態之資訊的目標狀態資料結構來處置該異常訊號;且如果為否,則將該目標狀態資料結構轉換成包含有代表該主題碼在該主題處理器類型上與該異常訊號有關之執行之模擬狀態之資訊的主題狀態資料結構,並處置關於該主題狀態資料結構的該異常訊號。
例示性的實施例僅參考該目標狀態來處置至少某些類 型的異常訊號,且因此發生該目標狀態必須轉換成該主題狀態之時的次數減少。結果是,該計算系統現在可更快速及更有效率地執行。
此外,本發明的例示性實施例被配置來遞送某些類型的異常訊號給多訊號處置訊號子單元,於是,該等子單元每一個都具有檢查及處置該異常的機會。因此,單一個異常訊號可供多樣不同的目的。此機制允許單一個類型的異常訊號-諸如警告訊號-可在該目標碼與該翻譯器間被共用。
此外,仍是在本文所討論的例示性實施例,當將使用大量訊號的主題碼轉換成目標碼並在該目標計算平台上執行時,即使該目標計算平台可能具有數量及類型都明顯不同的異常訊號,現在也很容易支援該主題碼。
本發明也擴及電腦可讀取儲存媒體,其上記錄有當電腦系統實施本文所定義之任何方法時的指令。
本發明之至少某些實施例的部分或全部可使用專用的特殊用途硬體來建構。本文中所使用的諸如"組件"、"模組"、或"單元"等名詞,可包括但不限於硬體裝置,諸如實施某些工作的現場可程式邏輯閘陣列(FPGA)或特定用途積體電路(ASIC)。或者,本發明的元件可被組構成存在於可被定址的儲存媒體內,且被組構成在一或多個處理器上來執行。因此,在某些實施例中,本發明的功能性元件,例如包括組件(諸如軟體組件、物件導向軟體組件、分類組件及工作組件)、處理、功能、屬性、程序、子常式、 程式碼段、驅動器、韌體、微碼、電路、資料、資料庫、資料結構、表、陣列、及變數。此外,雖然本發明的較佳實施例已參考以下討論的該等組件、模組及單元來描述,但這些功能性元件可結合成較少的元件或分開成額外的元件。
以下所提供的描述讓熟悉此方面技術之人士能夠製造及使用本發明,並提出發明人所認為之實施該發明的最佳模式。不過,根據本文所解釋之本發明的一般原理,熟悉此方面技術之人士很容易瞭解各樣的修改及均等物。
圖1係應用本發明之實施例之系統及環境的概視圖以便介紹以下將更詳細討論的組件、模組及單元。現請參考圖l,主題程式17意欲在具有至少一個主題處理器3的主題計算平台1上執行。不過,經由執行程式碼轉換的翻譯器單元19,目標計算平台10被替代用來執行主題程式17。翻譯器單元19實施從主題程式17到目標碼21的碼轉換,使得目標碼21可在目標計算平台10上執行。
如熟悉此方面技術之人士所熟知,主題處理器3具有一組主題暫存器5。此外,主題記憶體8握有主題碼17及主題作業系統2。同樣地,圖1中的範例目標計算平台10包含至少一個具有複數個目標暫存器15的目標處理器13,且記憶體18用來儲存複數個操作組件,包括目標作業系統20、主題碼17、翻譯器碼19、及翻譯的目標碼21。 典型上,目標計算平台10係一微處理器式的電腦或其它適合的電腦。
在一實施例中,翻譯器碼19係一模擬器,用以將主題指令組架構(ISA)的主題碼翻譯成另一ISA之經最佳化或未最佳化之經翻譯的目標碼。在另一實施例中,翻譯器19的功能做為用來將主題碼轉換成目標碼的加速器,兩者具有相同的ISA,然而實施不同的最佳化,以增進目標計算平台的效能。
翻譯器碼19係適合實施翻譯器之源碼之經編譯的型式,且結合作業系統20在目標處理器13上執行。須瞭解,圖1中所說明的結構僅為例示性,且例如按照本發明之實施例之軟體、方法與處理,可在存在於作業系統20內或之下以碼來實施。主題碼17、翻譯器碼19、作業系統20、及記憶體18的儲存機制,可以是熟悉此方面技術之人士所習知之任何不同的類型。
在按照圖1的設備中,程式碼轉換係動態地實施,在運行時間,在目標架構10上和目標碼21的運行同時執行。亦即,翻譯器19與被翻譯的目標碼21同線運行。以翻譯器19運行主題程式17涉及兩種不同類型的碼,翻譯器碼19與目標碼21以交錯的方式執行。因此,目標碼21係由翻譯器碼19在整個運行時間根據所儲存之程式的主題碼17被翻譯而產生。
在一實施例中,翻譯器單元19模擬主題架構1的相關部分,諸如主題處理器3,且特別是主題暫存器5,然 而在目標處理器13上實際執行當成目標碼21的主題程式17。在較佳實施例中,提供至少一個總體暫存儲存27(也稱為主題暫存庫27或摘要暫存庫27)。在多處理器的環境中,按照主題處理器架構提供一個以上選用的摘要暫存器庫27。主題狀態的表示,係由翻譯器19與目標碼21的組件提供。亦即,翻譯器19以各種顯式程式語言裝置(諸如變數及/或物件)來儲存主題狀態。經由比較,經翻譯的目標碼21提供的主題處理器狀態隱含於目標暫存器15與記憶體位置18中,其被目標碼21的目標指令調處(manipilated)。例如,總體暫存儲存27的低階表示僅是一經配置之記憶體的區域。不過,在翻譯器19的源碼中,總體暫存儲存27係一可被存取或在較高階被調處的資料陣列或物件。
翻譯器19將主題碼17適當地分割成複數個翻譯單元或區塊。通常,這些主題碼區塊每一個都對應於該主題碼的一個基本區塊。"基本區塊"一詞為熟悉此方面技術之人士所習知。亦即,每一基本區塊係位於訊號進入點的第一個指令與位於訊號離開點之最後一個指令(諸如跳躍、呼叫、或分支指令)之間的連續指令組。因此,基本區塊係一恰好只有一個進入點及一個離開點的碼區段,其將該區塊碼限制在單一控制路徑。基於此一理由,基本區塊係控制流之有用的基本單元。翻譯器19可只選擇這些基本區塊的其中之一(區塊模式),或選擇一群組的基本區塊(群區塊模式)。群區塊適合包含兩或多個被當成單一個單元一 起處理的基本區塊。此外,翻譯器可形成等區塊(iso-bolck),其代表相同的主題碼區塊,但在不同的條件下進入。
在較佳的實施例中,根據主題指令序列產生中間表示法(Intermediate Representation(IR))的樹狀結構係從原始主題程式17產生目標碼21之處理中的一部分。IR樹係主題程式所實施之計算及操作之表式的摘要表示法。稍後,根據IR樹產生("栽種出")目標碼21。IR節點的收集實際上係定向非環式圖(directed acyclic graphs(DAGs)),但口語將其稱為"樹"。
熟悉此方面技術之人士可瞭解,在一實施例中,翻譯器19係使用物件導向的程式語言來實施,諸如C++。例如,將IR節點當成C++物件來實施,以及參考到其它節點,係以C++參考到對應於這些其它節點的C++物件來實施。因此,IR樹被當成IR節點物件的集合來實施,包含各種的相互參考。
此外,在以下討論的實施例中,IR係使用一組暫存器定義來產生,這些暫存器定義對應於欲運轉主題程式17之主題架構的特定特徵。例如,在主題架構上,每一個實體暫存器都有一獨有的暫存器定義(即圖1的主題暫存器5)。如此,翻譯器中的暫存器定義可實施為C++物件,其包含一到IR節點物件(即IR樹)的參考。被暫存器定義組參考之所有IR樹的聚合,稱為操作IR樹林(稱為"樹林",係因其包含多個摘要暫存器根,每一個根參考到一顆IR 樹)。這些IR樹及其它的處理適合形成翻譯器19的一部分。
圖1另顯示了目標架構10之記憶體18中的本機碼28。由主題碼17之運行時間翻譯所產生的目標碼21,與為目標架構直接撰寫或編譯的本機碼28間有所區別。在某些實施例中,當翻譯器19偵測到主題程式的控制流進入主題碼17的區段時,諸如存在有本機型式之主題碼的主題程式庫,由翻譯器19實施本機連結。翻譯器19不是翻譯該主題碼,而是以導致要在目標處理器13上執行的等效本機碼28取而代之。在實施例的例子中,翻譯器19使用一經定義的介面將所產生的目標碼21連結到本機碼28,諸如本機碼或目標呼叫存根模組(stub),更詳細的討論見出版的PCT申請案W02005/008478,其揭示併入本文參考。
圖2說明當翻譯器19在目標計算平台10上運行時更多的細節。如前文的討論,翻譯器19的前端包括解碼器單元191,其解碼目前需要的主題程式17區段,以提供複數個主題碼區塊171a,171b,171c(通常一個區塊包含一個主題碼的基本區塊),並也提供關於每一個主題區塊的解碼器資訊172,且其內包含協助翻譯器19之稍後操作的主題指令。在某些實施例中,翻譯器19之核心192內的IR單元從被解碼的主題指令產生中間表示(IR),並及時地實施關於該中間表示的最佳化。編碼器193係為翻譯器19後端的一部分,用來產生(栽種)目標處理器13可執行的目 標碼21。在此簡單的例子中,產生3個目標碼區塊211a-211c來在目標平台10上實施與主題碼區塊171a,171b,171c在主題平台1上所執行之工作相同的工作。此外,編碼器193可為某些或全部的目標碼區塊211a-211c產生控制碼212,其實施的功能諸如設定即將操作該目標區塊的環境,並於適當處將控制傳回翻譯器19。
如圖2所示,配置翻譯器19來處置在目標碼21執行期間所引發的異常訊號。為此目的,翻譯器19包括異常處置單元195,其被配置來處置目標碼21被目標處理器13處置期間所引發的異常訊號。此外,在例示性的實施例中,也配置相同的異常處置單元195來處置翻譯器19在目標處理器13上執行時所引發的異常訊號。
圖3的概示圖概要綜觀說明使用異常處置單元195的訊號處置期間,目標計算平台10上的控制流程。在此,異常處置單元195包括目標側異常處置單元220及與主題側異常處置單元230。
當訊號310產生時,目標作業系統20引動異常處置單元195。通常,目標狀態320代表在目標處理器13上的執行狀態。因此,目標狀態320包括關於異常訊號310的資訊,諸如由作業系統20所提供的SIGINFO資料結構。此外,目標狀態320選擇性地包括特別是關於目標暫存器15在訊號發生點之狀態的資訊,諸如SIGCONTEXT資料結構。因此,異常處置單元195使用目標狀態320來檢查在發生異常訊號310之點處,目標處理器13上的執行狀 態。
異常訊號310的處置會產生各種不同的結果。在很多情況中,可適當地恢復目標碼21及/或翻譯器19的執行。特別是,異常處置單元195檢查目標狀態320以決定異常的性質及原因,並採取適當的回應動作。如果適當,在通過作業系統20將執行控制傳回以按照原始或新修改之目標狀態320恢復執行之前,異常處置單元195將修改目標狀態320,諸如藉由改變狀況碼旗標或修改所儲存之代表目標暫存器15之一或多個內容的資料。因此,回應導致異常訊號310的狀況,執行可在發生異常的原始點處恢復,或可在該碼中不同的點處恢復,或以不同的途徑恢復。特別是,異常可能在執行目標碼21的期間產生,但在處置該異常之後,由於該異常指示現在需要改變翻譯器19或再產生一或多個目標碼21的區塊,致使返回到翻譯器19的執行。
異常處置單元195單獨地在目標側異常處置單元220中處置很多此類的異常訊號310,且僅參考目標狀態320。不過,某些異常訊號並非單獨由目標側異常處置單元220來處置。在此,代表在被模擬之主題處理器3上執行之狀態的主題狀態330被提供,特別是包含主題暫存器5之代表值。主題狀態330以參考前文所討論的一或多個摘要暫存庫27為適當。接著,主題側異常處置單元230使用此主題狀態330來處置該異常訊號。不過,由異常處置單元195提供主題狀態330並引動主題側異常處置單元 230的成本較高,且因此吾人欲使主題側異常處置單元230被引動及主題狀態330被建構的機會減至最小。
如同目標狀態320,反應異常訊號310,主題狀態330可被保持相同或被修改。典型上,此經修改的主題狀態330接著導致一對應之經修改的目標狀態320,其致使目標碼21或翻譯器19在不同的點或以不同的方式重新開始執行。
主題碼17通常包括一或多個訊號處置器功能。亦即,以主題碼17撰寫而成的特定程式,通常包括一或多個特定的訊號處置器功能,當特定的異常訊號產生時,該功能被引動。取而代之,現在是在目標平台上產生異常訊號310,且在適當之處,代表主題異常處置器的資訊被傳遞給主題側異常處置單元230。適當的主題訊號處置器功能經由主題側異常處置單元230被呼叫,並被執行(做為目標碼)以處置該異常訊號。因此,如果該資料結構是被主題訊號處置器所使用,則主題狀態330可包括主題SIGINFO資料結構。同樣地,如果該資料結構是被主題訊號處置器所使用,則主題SIGCONTEXT資料結構是從可獲自目標系統的資訊獲得。關於產生此主題狀態330之更詳細的背景資訊見於前文所參考的W02005/006106,名稱為"Method and Apparatus for Performing Adjustable Precision Exception Handling";及W02006/103395,名稱為"Method and Apparatus for Precise Handling of Exceptions During Program Code Conversion"。須注意, 在這些較早期的揭示中考慮的機制是以變動的精度位準為不同的主題指令提供主題狀態,或以一有效率的機制使用恢復資訊來得到精確的主題狀態,但某些異常訊號的處置不允許只單獨參考目標狀態320。
圖4的概圖中更詳細說明目標計算平台的特定部分,特別是包括目標側異常處置單元220。
如圖4所示,配置訊號產生單元200(其為作業系統20的一部分為適當)用來在其它各種處理中反應目標處理器13上之目標碼21或翻譯器19的執行以產生異常訊號。在多處理或多線程的計算平台中同時執行很多處理,且該訊號產生器負責為每一處理產生異常訊號,並將該異常訊號遞送給各個被暫存的處置器。
目標側異常處置單元220包含總體訊號控制單元221、遞送路徑選擇單元222、及複數個訊號處置子單元223。
總體訊號控制單元221被配置用來接收由訊號產生單元200所發生至少與目標碼21之執行有關,且最佳也與翻譯器19之執行有關的異常訊號。亦即,總體訊號控制單元221為了這些處理而接收帶內異常訊號。此外,總體訊號控制單元221被配置用來接收帶外異常訊號,其源自於系統中的別處,並被遞送給這些處理。
遞送路徑選擇單元222決定每一個異常訊號的遞送路徑,該遞送路徑指定將要接收該異常訊號之複數個複數個訊號處置子單元223中之一或多個單元的所在位置。接著 ,總體訊號控制單元221按照該異常訊號的特定遞送路徑,依次將該異常訊號傳遞給所指定之一或多個或每一個訊號處置子單元223。
亦即,訊號控制單元221按照遞送路徑選擇該等訊號處置子單元223之中的第一個子單元,並將該異常訊號傳遞給該子單元。接著,訊號控制單元221按照遞送路徑選擇該等訊號處置子單元223之中的第二個子單元,並將該異常訊號傳遞給該子單元等等,直到異常訊號被依次遞送給每一個被指定的子單元。在某些多線程的計算環境中,異常訊號可同時遞送給多個單元,或者,在遞送給第二子單元之同時,第一子單元仍作動地處理該訊號。不過,由於每一個子單元將處置該訊號,且可能採取諸如改變目標狀態320的動作,因此,依循一直線路徑來處理該等子單元為較佳。特別是,在第一子單元處置完該異常訊號之前,第二子單元不會改變目標狀態320。
圖4顯示目標計算系統10支援複數個不同類型的異常訊號,且每一個訊號具有一對應之訊號編號(SIGNUM)的例示性情況。異常處置單元195被暫存以接收複數個這些訊號類型,且在本例中,異常處置單元195被暫存以接收每一個可用的訊號類型組。如圖4所示,訊號產生單元200可使用一暫存異常處置單元195的訊號表,用以接收#1至#63每一個可用的訊號組。因此,當這些任何訊號被產生之時,該異常訊號即被傳遞給異常處置單元195。
例如,吾人假設訊號#2已被產生。總體訊號控制單元 221與為此訊號指定特定遞送路徑的遞送路徑選擇單元222商議。在此,遞送路徑指定圖中所示的訊號處置子單元223a至223d其中之一或其中多個將接收訊號#2,並也指定訊號處置子單元223中被選擇之群組接收異常訊號#2的次序。在本例中,被選擇的訊號處置子單元群組包含單元223b,223c及223d,且指定的次序為"d接著c接著b"。因此,現在總體訊號控制單元221首先將異常訊號#2傳遞給訊號處置子單元223d,依次接著223c,再接著223b。
其中一個訊號處置子單元223請求返回執行處(在本例中為第三個子單元223b),總體訊號控制單元221完成該訊號的處置,並適當地引動返回到目標碼21或翻譯器19的執行。
圖5的概視圖更詳細說明其中一個訊號處置子單元223。
如圖5所示,每一個訊號處置子單元223包含一入口單元224、一訊號處理單元225及一出口單元226。入口單元224接收訊號310,並決定此訊號是否要被訊號處理單元225來處理。如果是,則入口單元224將該訊號310傳遞給訊號處理單元225。如果否,則入口單元224將該訊號310直接傳遞給出口單元226。在此,入口單元224檢查目標狀態320以決定該異常訊號是否要在此時被處理。在大多數的情況中,該決定係參考關於訊號310中所提供的資訊做成,諸如訊號編號或SIGINFO資料結構。不過 ,有時該決定係參考來自目標狀態320更詳細的上下文資訊,諸如SIGCONTEXT資料結構。
訊號處理單元225對所接收到的異常訊號實施預定的訊號處理功能。亦即,訊號處理單元225處理該訊號,以便(至少部分是)處置該異常。視需要,訊號處理單元225將修改目標狀態320,以便反應經處置的異常訊號來恢復不同的執行。
出口單元226決定訊號310是否要現在傳遞給後續的訊號處置子單元223(或如將在下文中更詳細討論的其它單元),否則,該執行將按照目標狀態320恢復。
圖6的概示流程圖說明異常處置單元195所進行之處置異常的方法,且特別是目標側異常處置單元220及一或多個訊號處置子單元223。
在步驟601接收異常訊號,且訊號遞送路徑被決定。接著,在步驟602,該訊號按照訊號遞送路徑被傳遞給訊號處置子單元。在步驟603,決定是否要處理該訊號。如果是,則該訊號在在步驟604被處理。在步驟605判定是否請求返回執行。如果否,則該方法回復到步驟602,且該訊號被傳遞給下一個訊號處置子單元。因此,訊號310被按照該訊號遞送路徑依次傳遞給第一、第二、第三及後續的訊號處置子單元。在步驟605請求返回執行之處,接著,在步驟606,執行控制按照所儲存的目標狀態320返回。
圖7的概圖更詳細顯示主題側異常處置單元230。
如圖7所示,主題側異常處置單元230包含主題側訊號控制單元231、主題側遞送路徑選擇單元232、一組主題側訊號處置子單元233a-233c及轉換單元234。
轉換單元234被配置來將異常訊號轉換成預期之主題架構的格式,即轉換成主題側異常訊號311。特別是,諸如訊號編號(SIGNUM)等欄位,通常在目標架構與主題架構間不相同。在本例中,目標側上的訊號#2,在主題側上已被翻譯成訊號#S1。此外,轉換單元234提供準備好處置主題側異常訊號311之精確的主題狀態330。特別是,轉換單元234轉換代表目標機器上之執行狀態的目標狀態320,以提供準備好用來處置主題側異常處置單元中之異常的主題上下文資料結構SIGCONTEXT。反之,轉換單元234稍後將經修改的主題狀態330轉換回相同的目標狀態320,以在經修改的目標狀態中恢復執行。
主題側遞送路徑選擇單元232在一或多個主題側訊號處置子單元233a-c之中為該異常訊號決定遞送路徑。在此情況中,該訊號遞送路徑指定異常訊號#S1將被遞送到第二個主題側訊號處置子單元233b。
主題側訊號控制單元231將該異常訊號依次傳遞給訊號處置子單元233之指定群組中的每一個。
如前文中參考圖5對目標側訊號處置子單元223之討論,每一個主題側訊號處置子單元233包含一入口單元、一訊號處理單元及一出口單元。因此,每一個主題側訊號處置子單元233按照決定的主題側遞送路徑依次接收異常 訊號,並選擇性地處理該異常訊號。接著,相關的主題側訊號處置子單元233按照主題狀態330(可能經過修改)請求傳遞該異常訊號,或者現在回到執行。
圖8的概示流程圖說明在本發明之實施例中處置異常訊號的例示性方法。此方法在與主題側異常處置單元230相關的異常處置單元195中實施。
現參考圖8,其在步驟801決定將異常訊號傳遞給主題側異常處置單元230。
接著,步驟802至807與前文參考圖6之討論中的步驟601至606類似,主題側異常處置單元230藉以在一或多個可用的主題側訊號處置子單元233中處置該異常。在步驟807,按照主題狀態330請求返回執行,其依次引導到對應的目標狀態320,以適當地恢復目標碼21或翻譯器19的執行。
圖9的概示圖顯示異常處置單元195更詳細的操作。特別是,圖9提供第一說明例以有助於熟悉此方面技術之人士能對本發明有充分且詳細的瞭解。不過,本說明例僅只是可使用本發明來完成的很多例示性實施例其中之一。
在此第一說明例中,本文所討論的異常處置機制特別有益於時序訊號。如熟悉此方面技術之人士所習知,程式可設定一計時器,其在指定的時間間隔過去之後會致使一異常訊號被產生。在符合POSIX規範的平台上,普遍使用的時序訊號包括SIGALRM、SIGPROF、及SIGVTALRM。
存在於很多計算架構的問題是僅提供上述其中一個時 序訊號,然而主題程式(現在運行如目標碼21)及翻譯器19可能每一個都需要用到相同類型的時序訊號。例如,目標碼21與翻譯器19都欲使用SIGALRM異常訊號。在圖9所說明的本例中,吾人假設翻譯器19被安排以規則的間隔(諸如時間線上字母X所說明之每一秒的間隔)來設定目標碼21的效能。此外,吾人假設主題程式(現在被轉換成目標碼21)被安排使用相同類型的時序訊號來決定在指定的時間內(例如5秒)是否有使用者按下鍵盤上的鍵,如時間線上的字母Y所示。作業系統20在時間X及在時間Y產生SIGALRM類型的異常訊號310,其初始被傳遞到目標側異常處置單元220。此類型訊號的遞送路徑指示該時序訊號被遞送至訊號處置子單元223a,其現在確立該時序訊號是否是目標側(在此情況為翻譯器19)所期待的時序訊號。亦即,訊號處理單元225包含頻率仲裁單元,其記錄期待的時序訊號及每一個期待之訊號的擁有者。因此,事件X引起訊號,訊號處置子單元223決定該訊號310由翻譯器19擁有。現在,該訊號被處置並執行返回。反之,在時間Y的異常訊號被傳遞到主題側異常處置單元230,即,其決定該訊號非目標側所期待。主題側異常處置單元230決定適當的遞送路徑,並將該異常訊號路由到各自的訊號處置子單元233a。因此,由事件Y所引起的異常訊號310現在被主題側異常處置單元230接收,並為主題程式做適當的處置。
從圖9的例可瞭解,本文所討論的異常處置機制有許 多優點。首先,依賴目標狀態320的碼(諸如翻譯器19或由翻譯器19所產生之部分的控制碼212)與依賴主題狀態330的碼(諸如其模擬原始主題程式17所期待之行為之目標碼21的主區塊211)間,共用單一類型的異常訊號-諸如SIGALRM。其次,僅目標側不需要的那些訊號才會被傳遞到主題側,藉以大幅地減少要精確得到主題狀態330之時機的次數。
圖10的概圖更詳細顯示異常處置單元195的操作。如圖10所示,異常處置單元195另包含預設處置單元240及當機報告器單元250。
配置預設處置器單元240來按照目標系統的異常處置協定來處置該等異常訊號。亦即,預設處置單元240提供的異常處置行為,等於目標作業系統20期待的行為。更一般來說,預設的行為係不理會該訊號並返回,或終止執行。預設行為的例子為當下代(child)處理被終止時,上代(parent)處理為資訊接收一SIGCHLD異常訊號,但在大多數的情況中,該訊號被忽略並繼續執行。
配置當機報告器單元250做為翻譯器碼19的一部分,並以按次序的方式管理執行的當機,特別是協助除錯。在此,當機報告器250被配置來儲存狀態資訊,包括例如目標狀態320及主題狀態330,以便建立一當機報告資料結構350,包含關於與當機之執行狀態有關的詳細資訊。在實施例的例子中,當機報告資料結構350係以文字檔(.txt)儲存在目標系統的記憶體系統18中。
圖10顯示通過異常處置單元195的4個主異常處置路線,在此標示為"A至D"。
在路線A中,異常在其中一個目標側異常處置子單元223中被處置,並返回執行。在路線B中,異常在其中一個主題側訊號處置子單元233中被處置,並返回執行。在路線C中,異常在預設處置單元240中被處置,並返回或終止。在路線D中,異常在當機報告器250中被處置,並返回或終止。
如圖10所示,例示性的異常處置單元195關於浮點異常的處置特別有利。某些計算架構(例如以IBM Power PC(TM)處理器為基礎的計算架構)當處理器中嘗試"被零除"的不合法數學運算時,僅將結果設定為零來替代,並繼續執行。反之,其它計算架構,諸如以Intel(TM)x86處理器為基礎的計算架構,當處理器實施不合法的"被零除"運算時,將產生異常訊號。在圖10中,目標硬體係以x86處理器為基礎,且因此,當遇到被零除的不合法運算時,將會產生此浮點異常。
當經由執行翻譯器19所產生之目標碼21來實施主題程式17之工作而產生此浮點異常時,該異常將循路線A。亦即,目標側異常處置單元220中之訊號處置子單元223b其中之一被配置來接收異常訊號310,並決定(諸如經由檢查SIGINFO資料結構中的程式計數器(PC)欄位)該異常係由目標碼21之執行所引起。現在,藉由將該結果重置到零以處置該異常訊號,即,藉由修改其中一個用來 表示目標狀態320之目標暫存器的內容。現在,執行可返回到目標碼21並繼續。藉由將結果重置到零,目標系統現在將可按照主題架構正確地模擬此程式的預期行為。此外,該異常已輕易地被處置,特別是,其不需要經歷提供主題狀態330之繁重的處理。
當由於翻譯器碼19之執行而引起相同類型的浮點異常訊號時,則此訊號現在有可能是代表嚴重的程式設計錯誤或執行錯誤。因此,異常訊號310現在循路線C到達預設處置單元240或循路線D到達當機報告器250。
另一經常會遇到的異常訊號例是分段錯誤(segfault),其指示程式嘗試以不被允許的方式存取記憶體(例如嘗試寫入受唯讀保護的記憶體區域)所發生的錯誤。在POSIX式的系統上,此類型錯誤所用的符號常數通常是SIGSEGV。此分段錯誤會因數個不同理由其中一個而產生,且相同類型的異常訊號在不同的環境中將使用不同的路線A-D通過異常處置單元195。
第一,分段錯誤可做為一陷阱,用來偵測目標碼21何時嘗試存取記憶體被保護的區域,諸如嘗試寫入自修改碼。此訊號循路線A及相關的目標側處置子單元223改變目標狀態320,以便執行返回到翻譯器19以處理此自修改事件。因此,翻譯器19能夠依賴異常處置單元以陷住某些異常訊號。
第二,已被寫入的原始主題碼17使用分段錯誤做為陷阱。在此情況,該訊號循路線B且被其中一個主題側訊 號處置子單元233處置,以便參考主題狀態330引動一主題訊號處置功能。
第三,分段錯誤從其它外部處理傳遞到異常處置單元195。檢查SIGINFO資料結構中的SI_CODE欄位,以決定該訊號是否來自外部。在此情況,該訊號循路線C,在該路線中的預設處置單元240實施預設的行為,在此情況中,該行為是不理會該訊號。
第四,未預期且未被前方單元捕捉的分段錯誤循路線D被傳遞到當機報告器250-據此,此訊號係由翻譯器中未預期的錯誤或程式錯誤所引起。
因此,相同類型的異常訊號(在本情況中為分段錯誤)將按照該訊號的特定環境,循任何一條可用的路線通過異常處置單元195。
圖11的概示圖更詳細顯示異常訊號處置單元195與直接傳遞異常訊號相關的機制。
如熟悉此方面技術之人士所習知,某些類型的異常訊號(例如SIGKILL)不能被截取,且總是由作業系統20來處置。圖11中顯示的訊號類型#63即為此類無法截取之異常訊號的例子。
不過,在目標架構中有很多類型的異常訊號是可被載取的,且在例示性的實施例中,異常處置單元195被暫存以接收目標架構上能夠被截取之所有類型的訊號。在此,至少類型#1、#2、及#3的訊號能被截取,且異常處置單元195因此被暫存來接收此等訊號。在圖11中,作業系統 20中的訊號產生單元200記錄"(總體)"之標記,以顯示要被遞送的此等訊號不會到達作業系統20的訊號處置單元,取而代之是到達本文所討論之例示性實施例的異常處置單元195。
目標側異常處置單元220的遞送路徑選擇單元222決定某些類型的異常訊號直接或在該異常訊號首先傳遞通過一或多個目標側訊號處置子單元223(見圖4)之後,要被傳遞到預設處置單元240(標註以字母"DF"的訊號)或當機報告器(標註以字母"CR"的訊號)。在圖11中,字母"a"、"b"或"c"與所選擇的其中一個目標側訊號處置子單元223有關。此外,如標註以字母"SS"之某些類型的異常訊號,再次是直接或在該異常訊號首先傳遞通過一或多個目標側訊號處置子單元"a","b","c"等之後,被傳遞至主題側異常處置單元230。此決定方便地被記錄在一表中,如圖11中之說明。不過,某些類型的訊號,諸如前文中所討論的分段錯誤,則需要額外的處理以做出適當的決定,諸如檢查SIGINFO或SIGCONTEXT資料結構。
同樣地,主題側異常處置單元230的遞送路徑選擇單元232被組構來選擇性地直接或在該異常訊號首先傳遞通過一或多個主題側訊號處置子單元233之後,將某些異常訊號傳遞至預設處置單元240(如字母"DF"所示)或當機報告器250(如字母"CR"所示),如此圖中之字母"Sa","Sb","Sc"所示。
因此,遞送路徑選擇單元222、232提供一簡單且方 便的機制,用以沿著各自預定的遞送路徑來路由每一特定類型的異常訊號。
圖12的概示圖更詳細說明與動態再組構訊號遞送路徑有關的例示性異常處置機制。
如圖12所示,總體訊號控制單元221被組構來動態地控制目標側遞送路徑選擇單元222與主題側遞送路徑選擇單元232。亦即,配置總體訊號控制單元221來為一或多個類型的異常訊號增加、修訂或替換指定的遞送路徑。按此方式,總體訊號控制單元221將增加、修訂或替換用於接收某特定類型之異常訊號的訊號處置子單元組223、233及指定的遞送路徑順序。
此外,配置當機報告器250與總體訊號控制單元221一同工作,以動態地重新組構遞送路徑。如例所示,配置當機報告器250來引進額外的匯流排錯誤訊號處置子單元,在該處產生的異常訊號指示未被映射的某特定記憶體區域。此全新引進的匯流排錯誤子單元實施記憶體映射功能並返回到執行。如果錯誤再次發生,則現在匯流排錯誤子單元將有助於恢復關於目標狀態320及/或主題狀態330之更詳細的資訊,並接著繼續當機報告處理的後續部分。因此,當機報告器單元保持執行的控制,且可引進預定的訊號處置子單元組來處置異常訊號。
在這些實施例中,即使在異常處置單元195中引進新的異常訊號處置行為,目標作業系統20之訊號產生單元200所持有的訊號表也不會被更新。亦即,訊號處置子單 元組的加入、修訂或替換,不需要系統呼叫以暫存該全新的訊號處置子單元組。因此,異常處置單元195具彈性又強力,同時對操作而言既便宜又有效率。
如以上的討論,本發明之例示性的處置機制具有很多優點。該機制減少了反應每一個異常訊號所必須做的工作量,不只是因為很多訊號被目標側異常處置子單元快速且廉價地成功處置。在很多情況中,不需花費獲得到代表在相同點執行原始主題碼之主題狀態的成本即可處置異常訊號。此外,該機制使目標碼執行與翻譯器碼執行兩者之間能夠共用一個異常訊號,並藉以增進在目標計算架構上操作的效率。該機制減輕有時在主題計算架構上之異常處置對照在目標架構上之異常處置間所發生的實質差異,且因此幫助目標架構改善對主題碼之執行的支援。此點在動態翻譯且特別是動態二進制翻譯的領域中極為重要,其要求無任何人為干預而能自動地轉換程式碼。提供多個主題側異常處置子單元以允許容易且有效率地從目標系統將可用的異常訊號映射到主題碼所需要的主題異常訊號組。現在,即使在主題碼使用大量訊號之處,在目標計算平台上仍能毫無困難地支援所需數量或類型的訊號。最後,例示性的機構提供動態的彈性及對整個異常訊號之處置的控制,特別包括提供每一個都接收相同異常訊號之多個訊號處置子單元的能力,以及以最少的額外負擔來增加、修改、或替換這些單元的能力。
雖然已顯示及描述了少數幾個較佳實施例,但熟悉此 方面技術之人士應瞭解,可做到各種的改變及修改,不會偏離本發明的範圍,如所附申請專利範圍中所定義。
須注意,與本說明書同時或先前提出申請與本申請案有關的所有報告及文件,及本說明書所查閱經公開的所有報告及文件,及所有這類報告及文件的內容都併入本文參考。
本說明書中所揭示的所有特徵(包括所附的申請專利範圍、摘要及圖式),及/或所揭示之任何方法或處理的所有步驟,都可結合成任意的組合,除非在組合中這些特徵及/或步驟至少某些互斥。
為相同、均等或類似之目的,本說明書中所揭示的每一項特徵(包括所附的申請專利範圍、摘要及圖式)都可用替代的特徵來取代,除非有其它的說明。因此,除非有其它的說明,在一例子單元中所揭示的每一項特徵,僅是一系列一般相同或類似的特徵。
本發明並不限於前述實施例(等)之細節。本發明擴及本說明書(包括所附的申請專利範圍、摘要及圖式)中所揭示之任何新穎特徵或任何新穎特徵的組合,或所揭示之任何方法或處理之步驟之任何新穎或任何新穎的組合。
1‧‧‧主題計算平台
17‧‧‧主題程式
3‧‧‧主題處理器
19‧‧‧翻譯器單元
21‧‧‧目標碼
10‧‧‧目標計算平台
5‧‧‧主題暫存器
8‧‧‧主題記憶體
2‧‧‧主題作業系統
15‧‧‧目標暫存器
13‧‧‧目標處理器
21‧‧‧翻譯的目標碼
18‧‧‧記憶體
20‧‧‧目標作業系統
19‧‧‧翻譯器
17‧‧‧主題碼
27‧‧‧摘要暫存器庫
28‧‧‧本機碼
171‧‧‧主題碼區塊
172‧‧‧解碼器資訊
192‧‧‧核心
193‧‧‧編碼器
211‧‧‧目標碼區塊
212‧‧‧控制碼
195‧‧‧異常處置單元
220‧‧‧目標側異常處置單元
230‧‧‧主題側異常處置單元
320‧‧‧目標狀態
310‧‧‧異常訊號
330‧‧‧主題狀態
200‧‧‧訊號產生單元
221‧‧‧總體訊號控制單元
222‧‧‧遞送路徑選擇單元
223、223a、223b、223c、223d‧‧‧訊號處置子單元
224‧‧‧入口單元
225‧‧‧訊號處理單元
226‧‧‧出口單元
231‧‧‧主題側訊號控制單元
232‧‧‧主題側遞送路徑選擇單元
233a、233b、233c‧‧‧主題側訊號處置子單元
234‧‧‧轉換單元
212‧‧‧控制碼
240‧‧‧預設處置單元
250‧‧‧當機報告器單元
350‧‧‧當機報告資料結構
圖式係併入說明書內並成為說明書之一部份,其圖解較佳實施方式,說明如下:圖1的方塊圖說明應用本發明之實施例的設備; 圖2係本發明之實施例所使用之程式碼轉換程序的概要視圖;圖3的概圖說明在本發明之例示性實施例中,異常處置期間的控制流程;圖4的概圖說明與異常處置有關之例示性計算系統的部分;圖5的概圖說明例示性的訊號處置子單元;圖6的概圖說明按照本發明之例示性實施例,處置異常訊號的方法;圖7的概圖說明與異常處置有關之例示性計算系統的部分;圖8的概示流程圖說明按照本發明之例示性實施例處置異常訊號的另一方法;圖9的概示圖進一步說明與異常處置有關之例示性計算系統之部分;圖10係說明與異常處置有關之例示性計算系統之部分的另一概示圖;圖11的概示圖進一步說明與異常處置有關之例示性計算系統之部分;圖12係進一步說明與異常處置有關之例示性計算系統之部分的另一概示圖;
20‧‧‧目標作業系統
220‧‧‧目標側異常處置單元
310‧‧‧異常訊號
200‧‧‧訊號產生單元
221‧‧‧總體訊號控制單元
222‧‧‧遞送路徑選擇單元
223a、223b、223c、223d‧‧‧訊號處置子單元

Claims (9)

  1. 一種計算系統,包含:一處理器;一翻譯器單元,在該處理器上執行,該翻譯器單元將一主題碼轉換成一目標碼;一訊號產生器單元,該訊號產生器單元回應該目標碼在該處理器中之執行而產生一第一異常訊號與一第二異常訊號;以及一異常處理單元,包含:一目標側異常處理單元,該目標側異常處理單元接收來自該訊號產生器單元的該第一及第二異常訊號,並選擇性地處理與一第一目標狀態有關的該第一異常訊號,一主題側異常處理單元,該主題側異常處理單元接收來自該目標側異常處理單元的該第二異常訊號,並在該第二異常訊號產生時處理與源自於一第二目標狀態之一主題狀態有關的該第二異常訊號,其中該主題狀態表示該主題碼在一主題處理器單元上之執行,其中該目標側異常處理單元包含:複數個訊號處置子單元,該等複數個訊號處置子單元中之每一個被配置來選擇性地處理與該目標狀態有關的該第一及第二異常訊號中之一對應者,並輸出一返回執行或傳遞該異常訊號的請求;一遞送路徑選擇單元,被配置來決定對應於該第一及第二異常訊號之每一者到該等複數個訊號處置子單元之一 被選擇之群組的遞送路徑;以及一訊號控制單元,被配置來按照該對應遞送路徑依次將該第一及第二異常訊號遞送到訊號處置子單元之該被選擇的群組,且(i)其中訊號處置子單元中之該群組之一第一子單元按照該目標狀態返回至一目標處理器執行;以及(ii)其中訊號處置子單元中之該群組之一第二子單元按照該對應遞送路徑,將該異常訊號傳遞給訊號處置子單元之該被選擇之群組中之後續一者,且當該對應遞送路徑中不再有指定的該等訊號處置子單元時,將該異常訊號遞送至該主題側異常處理單元,其中該等複數個訊號處置子單元之每一個包含:一入口單元,該入口單元接收該第一及第二異常訊號,並就每一者而言決定是否處理該第一及第二異常訊號;一訊號處理單元,當由該入口單元決定時,對與該目標狀態有關之該第一異常訊號實施一預定的訊號處理功能,該訊號處理功能包括選擇性地修改該目標狀態,以致反應該第一異常訊號,以不同方式恢復執行;以及一出口單元,被配置來輸出返回執行或傳遞該第一異常訊號任一者的一請求。
  2. 一種計算系統,包含:一處理器;一翻譯器單元,在該處理器上執行,該翻譯器單元將一主題碼轉換成一目標碼;一訊號產生器單元,該訊號產生器單元回應該目標碼 在該處理器中之執行而產生一第一異常訊號與一第二異常訊號;以及一異常處理單元,包含:一目標側異常處理單元,該目標側異常處理單元接收來自該訊號產生器單元的該第一及第二異常訊號,並選擇性地處理與一第一目標狀態有關的該第一異常訊號,一主題側異常處理單元,該主題側異常處理單元接收來自該目標側異常處理單元的該第二異常訊號,並在該第二異常訊號產生時處理與源自於一第二目標狀態之一主題狀態有關的該第二異常訊號,其中該主題狀態表示該主題碼在一主題處理器單元上之執行,其中該目標側異常處理單元包含:複數個訊號處置子單元,該等複數個訊號處置子單元中之每一個被配置來選擇性地處理與該目標狀態有關的該第一及第二異常訊號中之一對應者,並輸出一返回執行或傳遞該異常訊號的請求;一遞送路徑選擇單元,被配置來決定對應於該第一及第二異常訊號之每一者到該等複數個訊號處置子單元之一被選擇之群組的遞送路徑;以及一訊號控制單元,被配置來按照該對應遞送路徑依次將該第一及第二異常訊號遞送到訊號處置子單元之該被選擇的群組,且(i)其中訊號處置子單元中之該群組之一第一子單元按照該目標狀態返回至一目標處理器執行;以及(ii)其中訊號處置子單元中之該群組之一第二子單元按照 該對應遞送路徑,將該異常訊號傳遞給訊號處置子單元之該被選擇之群組中之後續一者,且當該對應遞送路徑中不再有指定的該等訊號處置子單元時,將該異常訊號遞送至該主題側異常處理單元,其中該主題側異常處理器包含:一轉換器單元,該轉換器單元將該目標狀態轉換成該主題狀態;複數個主題側訊號處置子單元,該等複數個主題側訊號處置子單元選擇性地處理與該主題狀態有關的該第一及第二異常訊號,並就每一特定異常訊號決定是傳遞該特定異常訊號,或是請求返回執行;一主題側遞送路徑選擇單元,被配置來決定對應於每一特定異常訊號的一遞送路徑,其中每一遞送路徑指定該等複數個主題側訊號處置子單元中一或多個子單元之一被選擇的群組;以及一主題側訊號控制單元,將每一特定異常訊號依次傳遞到主題側訊號處置子單元之該被選擇的群組中之一對應者,並反應來自主題側訊號處置子單元之該群組中各別一者的該請求而返回執行。
  3. 如申請專利範圍第2項的計算系統,其中當該主題側訊號控制單元決定返回執行時,該轉換器單元將該主題狀態再轉換成該目標狀態。
  4. 如申請專利範圍第2項的計算系統,其中該等複數個主題側訊號處置子單元之每一個包含:一入口單元,該入口單元接收一特定異常訊號,並決 定是否處理該特定異常訊號;一訊號處理單元,當由該入口單元決定時,對與該主題狀態有關之該特定異常訊號實施一預定的訊號處理功能,該訊號處理功能包括選擇性地修改該主題狀態,以致反應該特定異常訊號,以不同方式恢復執行;以及一出口單元,被配置來輸出返回執行或傳遞該特定異常訊號任一者的該請求。
  5. 一種計算系統,包含:一處理器;一翻譯器單元,在該處理器上執行,該翻譯器單元將一主題碼轉換成一目標碼;一訊號產生器單元,該訊號產生器單元回應該目標碼在該處理器中之執行而產生一第一異常訊號與一第二異常訊號;以及一異常處理單元,包含:一目標側異常處理單元,該目標側異常處理單元接收來自該訊號產生器單元的該第一及第二異常訊號,並選擇性地處理與一第一目標狀態有關的該第一異常訊號,一主題側異常處理單元,該主題側異常處理單元接收來自該目標側異常處理單元的該第二異常訊號,並在該第二異常訊號產生時處理與源自於一第二目標狀態之一主題狀態有關的該第二異常訊號,其中該主題狀態表示該主題碼在一主題處理器單元上之執行,其中該目標側異常處理單元包含: 複數個訊號處置子單元,該等複數個訊號處置子單元中之每一個被配置來選擇性地處理與該目標狀態有關的該第一及第二異常訊號中之一對應者,並輸出一返回執行或傳遞該異常訊號的請求;一遞送路徑選擇單元,被配置來決定對應於該第一及第二異常訊號之每一者到該等複數個訊號處置子單元之一被選擇之群組的遞送路徑;以及一訊號控制單元,被配置來按照該對應遞送路徑依次將該第一及第二異常訊號遞送到訊號處置子單元之該被選擇的群組,且(i)其中訊號處置子單元中之該群組之一第一子單元按照該目標狀態返回至一目標處理器執行;以及(ii)其中訊號處置子單元中之該群組之一第二子單元按照該對應遞送路徑,將該異常訊號傳遞給訊號處置子單元之該被選擇之群組中之後續一者,且當該對應遞送路徑中不再有指定的該等訊號處置子單元時,將該異常訊號遞送至該主題側異常處理單元,其中該訊號控制單元被配置來動態地重新組構該遞送路徑選擇單元,以便為該第一及第二異常訊號決定一不同的遞送路徑。
  6. 一種處理具有至少一個處理器之一計算系統中之一異常訊號的方法,該方法包含以下之電腦實施步驟:將一主題碼轉換成可由該至少一個處理器執行的一目標碼;在該至少一個處理器上執行該目標碼;產生與該目標碼之執行相關的一異常訊號; 決定與該異常訊號有關的一訊號遞送路徑,其中該訊號遞送路徑指定從複數個訊號處置子單元之中所選出之訊號處置子單元的一群組;按照該訊號遞送路徑將該異常訊號遞送給該群組中之該等訊號處置子單元的一第一個;決定是否在該訊號處置子單元中處理該訊號,且如果是,則在該訊號處置子單元中處理該訊號以處理該異常;以及判定是否請求返回執行,且如果是,則返回執行,否則,則按照該訊號遞送路徑將該異常訊號傳遞給該群組的一下一個訊號處置子單元;以及重複與該群組中之一下一個訊號處置子單元有關的該決定與判定步驟;提供包含與該計算系統關於該異常訊號之執行之一狀態有關之資訊的一目標狀態資料結構;參考該目標狀態資料結構在該訊號處置子單元中處理該異常訊號,該處理步驟包括選擇性地修改該目標狀態資料結構;以及其中該判定步驟判定請求返回執行,然後按照該目標狀態資料結構返回執行。
  7. 如申請專利範圍第6項的方法,另包含以下步驟:選擇性地將該異常訊號傳遞給一主題側異常處理單元;將該目標狀態資料結構轉換成一主題狀態資料結構; 以及在該主題側異常處理單元中處理與該主題狀態資料結構有關的該異常訊號。
  8. 一種電腦可讀取記錄媒體,該電腦可讀取記錄媒體上記錄有指令,當被具有至少一個處理器之一計算系統執行時,該等指令致使該計算系統實施至少以下之步驟:將一主題碼轉換成可由該至少一個處理器執行的一目標碼;在該至少一個處理器上執行該目標碼;產生與該目標碼之執行相關的一異常訊號;決定與該異常訊號有關的一訊號遞送路徑,其中該訊號遞送路徑指定從複數個訊號處置子單元之中所選出之訊號處置子單元的一群組;按照該訊號遞送路徑將該異常訊號遞送給該群組中之該等訊號處置子單元的一第一個;決定是否在該訊號處置子單元中處理該訊號,且如果是,則在該訊號處置子單元中處理該訊號以處理該異常訊號;以及判定是否請求返回執行,且如果是,則從該異常訊號之處理返回執行,否則,則按照該訊號遞送路徑將該異常訊號傳遞給該群組的一下一個訊號處置子單元,並重複與該下一個訊號處置子單元有關的該決定與判定步驟。 提供包含與該計算系統關於該異常訊號之執行之一狀態有關之資訊的一目標狀態資料結構; 參考該目標狀態資料結構在該訊號處置子單元中處理該異常訊號,該處理步驟包括選擇性地修改該目標狀態資料結構;以及其中該判定步驟判定請求返回執行,然後按照該目標狀態資料結構返回執行。
  9. 如申請專利範圍第8項的電腦可讀取記錄媒體,其中該等指令進一步致使該計算系統執行以下之步驟:選擇性地將該異常訊號傳遞給一主題側異常處理單元;將該目標狀態資料結構轉換成一主題狀態資料結構;以及在該主題側異常處理單元中處理與該主題狀態資料結構有關的該異常訊號。
TW097113063A 2007-04-19 2008-04-10 在計算系統中用於處理異常訊號之裝置及方法 TWI509516B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0707528A GB2448523B (en) 2007-04-19 2007-04-19 Apparatus and method for handling exception signals in a computing system
US11/810,050 US20080263342A1 (en) 2007-04-19 2007-06-04 Apparatus and method for handling exception signals in a computing system

Publications (2)

Publication Number Publication Date
TW200907809A TW200907809A (en) 2009-02-16
TWI509516B true TWI509516B (zh) 2015-11-21

Family

ID=38135039

Family Applications (1)

Application Number Title Priority Date Filing Date
TW097113063A TWI509516B (zh) 2007-04-19 2008-04-10 在計算系統中用於處理異常訊號之裝置及方法

Country Status (7)

Country Link
US (1) US20080263342A1 (zh)
EP (1) EP2165258B1 (zh)
JP (1) JP5077605B2 (zh)
CN (1) CN101663644B (zh)
GB (1) GB2448523B (zh)
TW (1) TWI509516B (zh)
WO (1) WO2008129315A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070294675A1 (en) * 2006-06-20 2007-12-20 Transitive Limited Method and apparatus for handling exceptions during binding to native code
US7552405B1 (en) * 2007-07-24 2009-06-23 Xilinx, Inc. Methods of implementing embedded processor systems including state machines
FR2921013B1 (fr) 2007-09-14 2009-11-27 Soc Tech Michelin Roue elastique non pneumatique.
US8141015B1 (en) * 2010-03-02 2012-03-20 Altera Corporation Reporting status of timing exceptions
GB2484729A (en) 2010-10-22 2012-04-25 Advanced Risc Mach Ltd Exception control in a multiprocessor system
EP2875229B1 (en) 2012-07-20 2017-11-22 Federal-Mogul Corporation Piston with oil cooling passage and method of construction thereof
CN103077073B (zh) * 2013-01-15 2016-12-28 华为技术有限公司 即时功能级仿真器的实现方法和装置及仿真处理器
JP6103541B2 (ja) 2014-03-18 2017-03-29 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation バイナリコードの実行を制御する装置及び方法
US10229029B2 (en) 2014-04-08 2019-03-12 Oracle International Corporation Embedded instruction sets for use in testing and error simulation of computing programs
US9552250B2 (en) * 2015-03-26 2017-01-24 Vmware, Inc. Detecting X86 CPU register corruption from kernel crash dumps
US20170185400A1 (en) * 2015-12-23 2017-06-29 Intel Corporation Mode-specific endbranch for control flow termination
DE102018218834A1 (de) * 2018-09-27 2020-04-02 Robert Bosch Gmbh Verfahren und Vorrichtung zum Ermitteln eines Ansteuersignals
CN113806006A (zh) * 2020-06-12 2021-12-17 华为技术有限公司 一种异构指令集架构下异常或中断的处理方法、装置
CN117648287B (zh) * 2024-01-30 2024-05-03 山东云海国创云计算装备产业创新中心有限公司 一种片上数据处理系统、方法、服务器及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200422849A (en) * 2002-11-18 2004-11-01 Advanced Risc Mach Ltd Exception types within a secure processing system
TW200710731A (en) * 2005-04-20 2007-03-16 Transitive Ltd Method and apparatus for precise handling of exceptions during program code conversion

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2176918B (en) * 1985-06-13 1989-11-01 Intel Corp Memory management for microprocessor system
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
US6173248B1 (en) * 1998-02-09 2001-01-09 Hewlett-Packard Company Method and apparatus for handling masked exceptions in an instruction interpreter
US6247172B1 (en) * 1998-07-02 2001-06-12 Hewlett-Packard Company Method for a translation system that aggressively optimizes and preserves full synchronous exception state
US6308318B2 (en) * 1998-10-07 2001-10-23 Hewlett-Packard Company Method and apparatus for handling asynchronous exceptions in a dynamic translation system
EP1380946B1 (en) 1998-10-10 2010-02-10 International Business Machines Corporation Program code conversion with reduced translation
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US6738846B1 (en) * 1999-02-23 2004-05-18 Sun Microsystems, Inc. Cooperative processing of tasks in a multi-threaded computing system
US6968411B2 (en) * 2002-03-19 2005-11-22 Intel Corporation Interrupt processing apparatus, system, and method
US7536682B2 (en) 2003-04-22 2009-05-19 International Business Machines Corporation Method and apparatus for performing interpreter optimizations during program code conversion
GB2401217B (en) 2003-05-02 2005-11-09 Transitive Ltd Improved architecture for generating intermediate representations for program code conversion
US7634778B2 (en) * 2003-06-26 2009-12-15 Microsoft Corporation Operating system managing a linked list of callback dynamic function tables for acquiring exception handling information from a runtime environment
GB0315844D0 (en) * 2003-07-04 2003-08-13 Transitive Ltd Method and apparatus for performing adjustable precision exception handling
US7805710B2 (en) * 2003-07-15 2010-09-28 International Business Machines Corporation Shared code caching for program code conversion
US7434209B2 (en) 2003-07-15 2008-10-07 Transitive Limited Method and apparatus for performing native binding to execute native code
WO2006103395A1 (en) 2005-03-30 2006-10-05 Transitive Limited Preparing instruction groups in a processor having multiple issue ports
WO2006111705A2 (en) * 2005-04-20 2006-10-26 Transitive Limited Method and apparatus for precise handling of exceptions during program code conversion
US20060253271A1 (en) * 2005-04-26 2006-11-09 Newisys, Inc. Method for facilitating transformation of multi-threaded process-oriented object code to event-based object code
US7487341B2 (en) * 2006-06-29 2009-02-03 Intel Corporation Handling address translations and exceptions of a heterogeneous resource of a processor using another processor resource

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200422849A (en) * 2002-11-18 2004-11-01 Advanced Risc Mach Ltd Exception types within a secure processing system
TW200710731A (en) * 2005-04-20 2007-03-16 Transitive Ltd Method and apparatus for precise handling of exceptions during program code conversion

Also Published As

Publication number Publication date
WO2008129315A1 (en) 2008-10-30
EP2165258A1 (en) 2010-03-24
GB0707528D0 (en) 2007-05-30
JP5077605B2 (ja) 2012-11-21
JP2010525440A (ja) 2010-07-22
CN101663644B (zh) 2013-03-20
US20080263342A1 (en) 2008-10-23
EP2165258B1 (en) 2016-03-16
GB2448523A (en) 2008-10-22
GB2448523B (en) 2009-06-17
TW200907809A (en) 2009-02-16
CN101663644A (zh) 2010-03-03

Similar Documents

Publication Publication Date Title
TWI509516B (zh) 在計算系統中用於處理異常訊號之裝置及方法
US8458674B2 (en) Method and apparatus for handling exceptions during binding to native code
US6496922B1 (en) Method and apparatus for multiplatform stateless instruction set architecture (ISA) using ISA tags on-the-fly instruction translation
JP4398538B2 (ja) 命令セット内の命令に応答してプロセスを実行するデータ処理システムおよびその命令処理方法
JP5284585B2 (ja) トランスレータによって対象プログラム・コードを目的コードにトランスレーションしながら、目的コードを実行する間に直面する例外を処理する方法並びにそのトランスレータ装置及びコンピュータ・プログラム
US20060259744A1 (en) Method for information processing
US9495136B2 (en) Using aliasing information for dynamic binary optimization
JP2010186468A (ja) 任意の標的アーキテクチャに対する並列simdコードを生成する方法、コンピュータ可読媒体、およびシステム
der Rieden et al. CVM–a verified framework for microkernel programmers
US8286144B2 (en) Administering a process filesystem with respect to program code conversion
Humbel et al. Towards correct-by-construction interrupt routing on real hardware
KR102025694B1 (ko) 재구성 가능한 프로세서의 검증 방법
Agrawal A general interprocedural framework for placement of split-phase large latency operations
Knapp The correctness of a distributed real-time system
Daum On the formal foundation of a verification approach for system-level concurrent programs
Sputh et al. Safe Virtual Machine for C in less than 3 KiBytes
Watlington MagicEight: System Description
Derrin A Secure Microkernel
von Mayrhauser et al. Teaching engineering disciplines to tool developers
JPWO2022046192A5 (zh)
Molloy A language to enable supervisor-level microthreading on the x86
Polos Controlling APIs Function Call Using Code Overwriting Technique

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees