JP5077605B2 - コンピュータ・システムにおいて例外信号を処理するための装置及び方法 - Google Patents

コンピュータ・システムにおいて例外信号を処理するための装置及び方法 Download PDF

Info

Publication number
JP5077605B2
JP5077605B2 JP2010503597A JP2010503597A JP5077605B2 JP 5077605 B2 JP5077605 B2 JP 5077605B2 JP 2010503597 A JP2010503597 A JP 2010503597A JP 2010503597 A JP2010503597 A JP 2010503597A JP 5077605 B2 JP5077605 B2 JP 5077605B2
Authority
JP
Japan
Prior art keywords
signal
exception
subject
unit
target
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
JP2010503597A
Other languages
English (en)
Other versions
JP2010525440A (ja
Inventor
ノールズ、ポール、トーマス
ワン、キット、マン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010525440A publication Critical patent/JP2010525440A/ja
Application granted granted Critical
Publication of JP5077605B2 publication Critical patent/JP5077605B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

本発明は、一般に、コンピュータ及びコンピュータ・システムの分野に関し、より特定的には、例えばコード翻訳器、エミュレータ、及びアクセラレータに有用なプログラム・コード変換方法及び装置との関連における例外信号の処理に関する。より具体的には、本発明の例示的な実施形態は、1つのコンピュータ・プラットフォームによって実行可能なバイナリ・コードから、別のコンピュータ・プラットフォームによって代わりに実行可能なバイナリ・コードへの動的変換と組み合わせた、例外信号の処理のための方法及び装置に関する。
中央処理ユニット(CPU)すなわちプロセッサは、全ての近代的なコンピュータ・システムの中心に位置する。プロセッサは、コンピュータ・プログラムの命令を実行し、ひいてはコンピュータ・プラットフォームが有用な仕事を行なうことができるようにする。CPUは、現代の生活において、パーソナル・コンピュータ、ラップトップ、及びPDAなどの専用コンピュータ・マシンだけでなく、あらゆる形態のデジタル・デバイスとして普及している。現代のマイクロプロセッサは、自動車から携帯電話や子供の玩具に至るまであらゆるものに搭載されている。
各々のタイプのプロセッサはそれ自体の固有の命令セット・アーキテクチャ(ISA)を有するため、1つのタイプのプロセッサによって実行可能なプログラム・コードは、いずれかの別のタイプのプロセッサによって実行不可能な場合があるという問題が生じる。従って、1つのタイプのプロセッサのために書かれたプログラム・コードを別のタイプのプロセッサによって実行可能なコードに自動的に変換するために、又は、同じタイプのプロセッサについてより古い非効率的なコードをより新しくより高速なバージョンに最適化するために、プログラム・コード変換が発展してきた。つまり、組み込みCPU及び非組み込みCPUのいずれにおいても、大容量のソフトウェアが既に存在しており、性能の点で「処理能力を向上」させるか又はコスト/性能の点でより有利な他のプロセッサに合わせて「翻訳」することができる、支配的なISAが存在する。自らのISAに束縛されて性能又は市場の範囲を発展させることができない支配的なCPUアーキテクチャも見られる。この問題は、独立型のポケット・サイズ・コンピュータ・デバイスから、何十何百もの強力なサーバを有する大規模ネットワークに至るまで、コンピュータ産業の全てのレベルにおいて当てはまる。
このプログラム・コード変換分野の背景情報として、発明の名称を「Program Code Conversion」とする特許文献1、発明の名称を「Methodand Apparatus for Performing Interpreter Optimizations during Program CodeConversion」とする特許文献2、発明の名称を「Improved Architecture forGenerating Intermediate Representations for Program Code Conversion」とする特許文献3、発明の名称を「Method and Apparatus for Performing Adjustable Precision ExceptionHandling」とする特許文献4、及び発明の名称を「Method and Apparatus forPrecise Handling of Exceptions During Program Code Conversion」とする特許文献5は、本明細書において説明される例示的な実施形態において用いることができるようなプログラム・コード変換能力を高める方法及び装置を開示する。
1つの具体的な問題領域は、例外信号(exception signal)の処理に関するものである。例外(exception)とは、プログラムにおける正常な制御フローを変化させる状況である。例外信号は、プロセッサの注意を必要とし、通常、処理を続行可能にする前に処理される必要がある状況が、システム内のどこかで発生したことを示す。例外は、割り込み、違反(fault)、トラップ、又は異常終了といった種々の異なるタイプに細分することができる。用語は異なるアーキテクチャ間で異なり、特定のタイプ又はカテゴリの例外は、特定のアーキテクチャに固有のものとすることができる。
例外信号(単に「信号」と呼ばれることが多い)は、ハードウェア又はソフトウェアによって生成する(もたらす)ことができる。ハードウェア例外には、リセット、割り込みのような信号、又はメモリ管理ユニットからの信号が含まれる。例として、例外は、ゼロ除算などの数値エラーの場合、オーバーフロー又はアンダーフローの場合、或いは特権命令、予約命令、トラップ命令、又は未定義の命令などの命令デコード・エラーの場合に、算術論理ユニット又は浮動小数点ユニットによって生成することができる。ソフトウェア例外は、種々の異なるソフトウェア・プログラムによって大きく異なるが、一般に、プログラムの正常な動作を変える任意の種類のエラー検査に対しても適用可能である。
信号ハンドラは、プログラムの実行中に例外信号が生じたときに呼び出される特別なコードである。次に、信号ハンドラは、例外を生じさせた如何なる環境にも対処し、可能な場合はプログラムを実行し続けようと試みる。プログラムが所定の信号に関する信号ハンドラを提供しない場合、デフォルトのシステム・信号ハンドラが呼び出される。
例外信号をトリガする最も一般的なイベントは、プロセスが、(i)マッピングされていないメモリ領域にアクセスしようとした場合、又は(ii)正しい許可を有していないメモリ領域を操作しようとした場合である。例外信号をトリガする他の一般的なイベントは、(iii)別のプロセスから送られた信号の受信、(iv)現在のプロセスが実行の特権レベルを有していない命令の実行、又は(v)ハードウェアにおける入力/出力イベントである。
表1に、幾つかの代表的な例外信号が説明される。ターゲット・コンピュータ・プラットフォームの観点から、各々のタイプの信号は、通常、整数番号#1、#2、#3等である対応する信号番号を有する。また、表に示されるように、各々の信号が記憶すべき記号名を有することが一般的である。
Figure 0005077605
例外信号は、2つの供給源に由来し得る。すなわち(1)実行しているプログラムから直接に、又は(2)オペレーティング・システム又は別のプロセスからである。幾つかの例外信号は、プログラムが実行する命令の直接的な結果として生成される。例えば、プログラムが違法のオペコードを実行した場合、SIGILLがもたらされる。同様に、プログラムが、違法のメモリ・アクセスを試みた場合、SIGSEGVがもたらされる。これらは帯域内(in-band)信号と呼ばれる。例外信号はまた、オペレーティング・システムによって、或いは別のプロセスによってなど、外部で生成されることもある。SIGHUP及びSIGALRMは、これらの例である。これらの外部で生成される例外信号は、帯域外(out-of-band)信号と呼ばれる。
プログラムの観点から、例外信号は、如何なる時点でも生じる可能性がある。例外信号が生じると、オペレーティング・システムは、信号が送られたプログラムの実行に割り込みをかけて、信号ハンドラを呼び出す。オペレーティング・システムは、通常、全ての例外に対するデフォルトの信号ハンドラを定めており、このデフォルト信号ハンドラは、デフォルトで例外信号を受信し、所定のアクションをとるか又は単に信号を無視する。しかしながら、オペレーティング・システムは、各タイプの信号を登録された信号ハンドラにマッピングするプロセス特有の処理表を保持する。例えば、Unixでは、プログラムは、sigaction()システム・コールを呼び出すことによって、デフォルトの信号ハンドラをオーバーライドすることができる。Sigaction()により、プログラムは、特定の例外信号を受け取ったときに、オペレーティング・システムがどのアクションをとるべきかを指定することができる。アクションは、(1)例外信号を無視する、(2)デフォルトの信号ハンドラを呼び出す、或いは(3)プログラムがアドレスを提供する、特化された信号ハンドラ機能を呼び出す、ものとすることができる。sigaction()コールを行なうときに指定できる他の選択肢は、信号ハンドラの実行中に、CPUが特定の割り込みを隠すことができるのとほぼ同じ方法で、他の信号のどれをブロックするのか、を含む。
Unix信号ハンドラには、一般に、2つのプロトタイプの一方が与えられる。第1の信号ハンドラ・プロトタイプは、「void sigHandler(int sigNum)」である。第1の引数は、例外信号の数であるため、多数の信号を処理するために1つの関数を登録することができる。プログラムは、SA_SIGINFOOフラグを用いてsigaction()を呼び出すことによって、より多くの情報を信号ハンドラに提供するように要求することができる。この場合、Unix信号ハンドラ・プロトタイプは、「void sigHandler(intsigNum, siginfo_t sigInfo, void*context)」になる。
第2のパラメータ(「siginfo」)は、信号についての情報を含む構造であり、信号が生じた原因及び信号の出所についての何らかの表示を含んでいる。例えば、SIGILL信号の場合、siginfo構造は、違法命令のアドレスを含む。このデータは、プロセスが信号を適切に処理できるためには、不可欠なものであり得る。第3のパラメータ(「コンテキスト」)は、信号がもたらされたときのプロセッサ状態(全てのレジスタを含む)に対するアクセスを与える。この場合も、このデータは、信号の正しい処理を可能にするために、不可欠なものであり得る。信号ハンドラは、このコンテキストを変更することが許容されており、実行が再開されると、レジスタは、変更されたコンテキストの値に回復される。
WO2000/22521号明細書 WO2004/095264号明細書 WO2004/097631号明細書 WO2005/006106号明細書 WO2006/103395号明細書 WO2005/008478号明細書
元のプログラム・コード(ここでは「サブジェクト・コード(subject code)」と呼ばれる)が特定のタイプのプロセッサに従って書かれた場合、サブジェクト・コードは、特定のタイプの実行環境を必要とし、例外信号の処理のための適切な機構によってサポートされることが必要である。しかしながら、プログラム・コード変換において、サブジェクト・コードは、代わりにターゲット・コード(target code)に変換され、ターゲット・コンピュータ・システム上で実行される。例外が生じたとき、今や例外を処理する適切な機構を提供することに関連する困難が存在する。
プログラム・コード変換の分野において、ターゲット命令がターゲット・プロセッサ上で実行され、例外信号が報告されたとき、ターゲット命令は、通常、サブジェクト・コードで書かれた信号ハンドラに例外を報告するための条件を満たさないことは明らかである。第1に、サブジェクト・コードが書かれたサブジェクト・プロセッサの命令セットと、ターゲット・コードが実行されるターゲット・プロセッサとの間の相違のために、第2に、一般にプログラム・コード変換中に行なわれる最適化のために、命令は、ターゲット・プロセッサ上では、殆どの場合、サブジェクト・コードの対応するブロック内の命令の順序とは異なる順序で実行される。従って、信号ハンドラにターゲット状態を提供するのは比較的容易であるが、元のサブジェクト・コードの実行における同等の点を表す正確なサブジェクト状態を得るのは困難であり、費用がかかる。
特に、プログラム・コード変換を行なうトランスレータ(translator、以下、「翻訳器」ともいう)の実行及び翻訳器が生成するターゲット・コードの実行がインターリーブされ、ターゲット・コンピュータ・プラットフォーム上で同じ実行プロセスを共有することもできる動的プログラム・コード変換の分野においては、さらなる問題が生じる。大部分のシステムにおいて、限られた数の例外信号しか存在しない。例えば、たった1つのSIGALRM信号しかなく、このSIGALRM信号を翻訳器とターゲット・コードとの間で共有する必要があり得る。その結果、ターゲット・コードが翻訳器の実行に悪影響を及ぼすことなしに、元のサブジェクト・コードを正確にエミュレートすることは困難であり、或いは逆に、翻訳器のサブジェクト・コードが、ターゲット・コードの実行に悪影響を及ぼすことなしに、プログラム・コード変換を効率的に行なうことは困難である。ターゲット・コンピュータ・プラットフォーム内の使用可能な信号が使い尽くされる可能性があり、最悪の場合、プログラム・コード変換プロセスを終了しなければならない。
信号を広く利用するようにサブジェクト・コードが書かれているが、それらは、今や、ターゲット・コンピュータ・プラットフォーム上で使用可能な信号の数又はタイプによってサポートすることができないという、更に別の問題が生じる。
以下でより詳細に説明されるように、本発明の例示的な実施形態によって従来技術のこれらの問題及び他の問題に対処する。
本発明によると、添付の特許請求の範囲に示されるコンピュータ・システム、コンピュータ可読ストレージ媒体、及び方法が提供される。本発明の他の特徴は、従属請求項及び以下の説明から明らかとなるであろう。
以下は、本発明の実施形態に従って実現可能な種々の態様及び利点の概要である。これは当業者の役に立ち、以下の詳細な設計の説明をより迅速に理解させるための導入として提供されるものであり、本明細書に添付される特許請求の範囲を如何なる形においても限定するものではなく、また限定することを意図しない。
特に、発明者らは、プログラム・コード変換に向けられた方法を開発した。これらの方法は、動的実行時翻訳又はバイナリ・プログラム・コードの高速化(acceleration)を提供する実行時翻訳器と共に用いると、特に有用である。
本発明の1つの例示的な態様において、サブジェクト・コードをターゲット・コードに変換するように構成された翻訳器ユニットと、ターゲット・コードを実行し、プロセッサ・ユニットにおけるターゲット・コードの実行に関するターゲット状態を提供するように構成されたプロセッサ・ユニットと、ターゲット・コードの実行に応答して例外信号を生成するように構成された信号生成器ユニットと、例外信号を処理するように構成された例外処理ユニットとを含むコンピュータ・システムが提供される。ここで、例外処理ユニットは、信号生成器ユニットから例外信号を受け取り、ターゲット状態に関する例外信号を選択的に処理するように構成されたターゲット側例外ハンドラ・ユニットと、ターゲット側例外処理ユニットから例外信号を受け取り、サブジェクト状態に関する例外信号を処理するように構成されたサブジェクト側例外ハンドラ・ユニットとを含み、サブジェクト状態は、ターゲット状態から得られる。ターゲット側例外ハンドラ・ユニットは、各々がターゲット状態に関する例外信号を選択的に処理し、実行に戻る要求(request to return to execution)又は例外信号を渡す要求(requestto pass on exceptional signal)を出力するように構成された複数の信号処理サブユニットと、複数の信号処理サブユニットの選択されたグループへの例外信号の配送パス(delivery path)を決定するように構成された配送パス選択ユニットと、配送パスに従って例外信号を信号処理サブユニットの選択されたグループの各々に順に配送し、(i)信号処理サブユニットのそれぞれが実行に戻る要求を出力した場合、ターゲット状態に応じて実行に戻り、(ii)信号処理サブユニットが例外信号を渡す要求を出力した場合、配送パスに従って例外信号を信号処理サブユニットの選択されたグループの次のものに渡し、(iii)配送パスにおいて信号処理サブユニットの更に別のものが指定されなかった場合、デフォルトで例外信号をサブジェクト側例外ハンドラ・ユニットに配送するように構成された配送パス選択ユニットとを含む。
一実施形態において、信号生成器ユニットは、複数の異なるタイプの1つとして例外信号を生成し、配送パス選択ユニットは、例外信号のタイプに応じて配送パスを決定する。随意的に、配送パス選択ユニットは、異なるタイプの例外信号の組をそれぞれ信号処理サブユニットのそれぞれのグループにマッピングする表を含む。随意的に、表は、各タイプの例外信号を、信号処理サブユニットのうちの0、1、又は複数のものを含むそれぞれのグループにマッピングする。ここで表は、複数の信号処理サブユニットを含む少なくとも1つのグループを含む。
一実施形態において、配送パス選択ユニットは、信号処理サブユニットの選択されたグループへの例外信号の配送順序を指定し、信号制御ユニットは、配送順序に従って、例外信号を信号処理サブユニットの選択されたグループに配送する。
一実施形態において、信号生成器ユニットは、少なくともその一部が遮断可能(interceptable)である複数の例外信号を生成するように構成され、例外処理ユニットは、遮断可能な例外信号のうちの1又は複数を受け取るように、信号処理ユニットに登録される。
一実施形態において、プロセッサ・ユニットは、翻訳器ユニット及びターゲット・コードの両方を実行し、それぞれターゲット・コード及び翻訳器ユニットに関連する、プロセッサ・ユニットにおける現在の実行の状態を表すターゲット状態を提供するように構成され、信号生成器ユニットは、ターゲット・コードの実行及び翻訳器ユニットに関連して複数の例外信号を生成するように構成され、翻訳器ユニットの実行の結果として例外信号が生じたとき、信号処理サブユニットの少なくとも1つは、ターゲット状態に関する例外信号のうちのそれぞれ1つ又は複数を処理するように構成される。随意的に、例外信号がターゲット・コードの実行の結果として生じたとき、信号処理サブユニットの少なくとも1つは、ターゲット状態に関する同じ例外信号又は少なくとも同じタイプの例外信号を処理するように構成される。
一実施形態において、サブジェクト側例外ハンドラは、例外信号がターゲット・コードの実行の結果として生じたときのみ、ターゲット状態から得られるサブジェクト状態に関する例外信号を処理するように構成される。従って、サブジェクト側例外ハンドラは、例外信号が翻訳器ユニットの実行の結果として生じたときには例外信号を処理しない。
一実施形態において、配送パス選択ユニットは、特にサブジェクト側例外ハンドラ・ユニットを含ませるように、少なくとも1つのタイプの例外信号についての配送パスを決定し、信号制御ユニットは、配送パスに従って、例外信号をサブジェクト側例外ハンドラ・ユニットに配送する。
一実施形態において、信号制御ユニットは、配送パスに従って例外信号を信号処理サブユニットの選択されたグループの各々に配送した後、例外信号をサブジェクト側ハンドラ・ユニットに配送するように構成される。
一実施形態において、例外処理ユニットは、例外信号に続くクラッシュに関連するプロセッサ・ユニットの実行の状態に関するクラッシュ・レポート・データ構造を生成及び格納し、実行に戻るか又は実行を終了するように構成されたクラッシュ・レポータ・ユニットの少なくとも1つと、所定の例外処理プロトコルに従って例外信号を処理し、実行に戻るか又は実行を終了するように構成されたデフォルト・ハンドラ・ユニットとをさらに含む。随意的に、配送パス選択ユニットは、クラッシュ・レポータ・ユニット及び/又はデフォルト・ハンドラ・ユニットを含ませるように配送パスを決定する。信号制御ユニットは、配送パスに従って例外信号をそれぞれクラッシュ・レポータ・ユニット及びデフォルト・ハンドル・ユニットに配送する。随意的に、信号制御ユニットは、配送パスに従って例外信号を信号処理サブユニットの選択されたグループの各々及びサブジェクト側例外ハンドラ・ユニットに配送した後、例外信号をクラッシュ・レポータ・ユニット及び/又はデフォルト・ハンドラ・ユニットに配送するように構成される。
一実施形態において、複数の信号処理サブユニットの各々は、例外信号を受け取り、この例外信号を処理するかどうかを決定するように構成された入口ユニットと、実行が例外信号に応答して異なるように再開するようにターゲット状態を選択的に修正することを含めて、入口ユニットによって決定されたときにターゲット状態に関する例外信号の所定の信号処理機能を実行するように構成された信号処理ユニットと、実行に戻る要求又は例外信号を渡す要求のいずれかを出力するように構成された出口ユニットとを含む。随意的に、ターゲット状態は、例外信号に関する情報を含む信号情報データ構造を含む。随意的に、ターゲット状態は、例外信号に関するプロセッサ・ユニットのコンテキストに関連する情報を含む信号コンテキスト・データ構造を含む。
一実施形態において、サブジェクト側例外ハンドラは、ターゲット状態をサブジェクト状態に変換するように構成された変換器ユニットと、各々がサブジェクト状態に関する例外信号を選択的に処理し、例外信号を渡す要求又は実行に戻る要求のいずれかを決定するように構成された複数のサブジェクト側信号処理サブユニットと、例外信号の配送パスを決定するように構成されたサブジェクト側配送パス選択ユニットであって、配送パスは複数のサブジェクト側信号処理サブユニットの中の1つ又は複数の選択されたグループを指定する、サブジェクト側配送パス選択ユニットと、例外信号をサブジェクト側信号処理サブユニットの選択されたグループの各々に順に渡し、サブジェクト側信号処理サブユニットのグループのそれぞれからの要求に応答して実行に戻るように構成されたサブジェクト側信号制御ユニットとを含む。随意的に、サブジェクト側信号制御ユニットが実行に戻ることを決定したとき、変換器は、サブジェクト状態をターゲット状態に再変換するようにさらに構成される。
一実施形態において、複数のサブジェクト側信号処理サブユニットの各々は、例外信号を受け取り、この例外信号を処理するかどうかを決定するように構成された入口ユニットと、例外信号に応答して実行が異なるように再開するようにサブジェクト状態を選択的に修正することを含めて、入口ユニットによって決定されたときにサブジェクト状態に関する例外信号の所定の信号処理機能を実行するように構成された信号処理ユニットと、実行に戻る要求又は例外信号を渡す要求のいずれかを出力するように構成された出口ユニットとを含む。随意的に、サブジェクト状態は、変換された形態の例外信号に関する情報を含むサブジェクト信号情報データ構造を含む。随意的に、サブジェクト状態は、変換された形態の例外信号に関するエミュレートされたサブジェクト・プロセッサのコンテキストに関する情報を含むサブジェクト信号コンテキスト・データ構造を含む。
一実施形態において、信号制御ユニットは、例外信号についての異なる配送パスを決定するために配送パス選択ユニットを動的に再構成するように構成される。随意的に、信号制御ユニットは、配送パス選択ユニットを再構成して、特定のタイプの例外信号についての配送パスを付加し、修正し、又は置き換えるように構成される。随意的に、信号制御ユニットは、配送パス選択ユニットを再構成して、特定のタイプの例外信号についての配送パスに従って、選択されたグループ内の信号処理サブユニットの1つ又は複数を付加し、修正し、又は置き換えるように構成される。
一実施形態において、サブジェクト・コードは、サブジェクト・タイプのプロセッサによって直接実行可能なバイナリ・プログラム・コードである。
一実施形態において、ターゲット・コードは、プロセッサ・ユニットによって直接実行可能なバイナリ・プログラム・コードである。
一実施形態において、翻訳器ユニットは、第1のタイプのプロセッサによって直接実行可能なバイナリ・プログラム・コードであるサブジェクト・コードを、プロセッサ・ユニットによって直接実行可能なバイナリ・プログラム・コードであるターゲット・コードに変換するように構成される。
一実施形態において、翻訳器ユニットは、第1のタイプのプロセッサによる実行のために書かれたサブジェクト・コードを、異なる両立性のない第2のタイプのプロセッサ・ユニットによって実行されるターゲット・コードに翻訳するように構成される。
一実施形態において、翻訳器ユニットは、第1のタイプのプロセッサによる実行のために書かれたサブジェクト・コードを、同じ第1のタイプのプロセッサ・ユニットによってより効率的に実行されるターゲット・コードに最適化するように構成される。
本発明の別の態様において、少なくとも1つのプロセッサを有するコンピュータ・システムにおけて例外信号を処理する方法が提供され、この方法は、サブジェクト・コードを少なくとも1つのプロセッサによって実行可能なターゲット・コードに変換するコンピュータ実装ステップと、少なくとも1つのプロセッサ上でターゲット・コードを実行するコンピュータ実装ステップと、ターゲット・コードの実行と関連して例外信号を生成するコンピュータ実装ステップと、信号配送パスが複数の信号処理サブユニットの中から選択された信号処理サブユニットのグループを指定する場合、例外信号に関する信号配送パスを決定するコンピュータ実装ステップと、信号配送パスに従って例外信号をグループ内の信号処理サブユニットの第1のものに配送するコンピュータ実装ステップと、信号処理サブユニットにおいて信号を処理するかどうかを決定し、処理する場合、例外を処理するために信号処理サブユニットにおいて信号を処理するコンピュータ実装ステップと、実行に戻ることを要求するかどうかを判断し、要求する場合、実行に戻るか、又は信号配送パスに従って例外信号をグループ内の次の信号処理サブユニットに渡すコンピュータ実装ステップと、次の信号処理サブユニットと関連して決定するステップ及び判断するステップを繰り返すコンピュータ実装ステップとを含む。
本発明の更に別の態様において、サブジェクト・プロセッサ・タイプによって実行可能なサブジェクト・コードを少なくとも1つのプロセッサによって実行可能なターゲット・コードに変換するコンピュータ実装ステップと、少なくとも1つのプロセッサ上でターゲット・コードを実行するコンピュータ実装ステップと、ターゲット・コードの実行と関連して例外信号を生成するコンピュータ実装ステップと、例外信号と関連するコンピュータ・システムの実行の状態を表す情報を含むターゲット状態データ構造だけを参照して、例外信号を処理するかどうかを決定し、例外信号を処理しない場合、ターゲット状態データ構造を、例外信号に関連するサブジェクト・プロセッサ・タイプにおけるサブジェクト・コードの実行のエミュレートされた状態を表す情報を含むサブジェクト状態データ構造に変換するコンピュータ実装ステップと、サブジェクト状態データ構造に関する例外信号を処理するコンピュータ実装ステップとを含む、コンピュータ・システムにおいて例外信号を処理する方法が提供される。
例示的な実施形態は、ターゲット状態のみを参照して少なくとも何らかのタイプの例外信号を処理し、よって、ターゲット状態をサブジェクト状態に変換する必要がある機会の数を低減させる。その結果、コンピュータ・システムは、より高速かつより効率的に実行可能になる。
さらに、本発明の例示的な実施形態は、特定のタイプの例外信号を、各々が例外を調べて処理する機会を有する多数の信号処理サブユニットに配送するように構成される。従って、例外信号は、多数の異なる目的を顕在化させる。この機構は、ターゲット・コードと翻訳器との間で共有される、警報(alarm)信号のような単一のタイプの例外信号を可能にする。
ここに述べられる例示的な実施形態においてさらに、ターゲット・コンピュータ・プラットフォームは著しく異なる数又はタイプの例外信号を有し得るが、ターゲット・コードに変換され、ターゲット・コンピュータ・プラットフォーム上で実行されたとき、信号を広く利用するサブジェクト・コードが容易にサポートされる。
本発明は、コンピュータ・システムによって実施されたとき、ここに定義された方法のいずれかを行なう命令が上に記録されたコンピュータ可読記憶媒体にも拡張される。
本発明の少なくとも幾つかの実施形態は、部分的に又は全体的に専用ハードウェアを用いて構成することができる。本明細書において用いられる「コンポーネント」、「モジュール」、又は「ユニット」といった用語は、特定のタスクを実施するField Programmable Gate Array(FPGA)又はApplicationSpecific Integrated Circuit(ASIC)といったハードウェア・デバイスを含むが、これらに限定されるものではない。代替的に、本発明の要素は、アドレス可能なストレージ媒体に常駐するように設定してもよく、1つ又は複数のプロセッサ上で実行されるように設定してもよい。従って、幾つかの実施形態においては、本発明の機能的要素は、例として、ソフトウェア・コンポーネント、オブジェクト指向ソフトウェア・コンポーネント、クラス・コンポーネント、及びタスク・コンポーネントなどのコンポーネント、プロセス、関数、属性、プロシージャ、サブルーチン、プログラム・コードのセグメント、ドライバ、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、表、アレイ、並びに変数を含むものとすることができる。さらに、以下で説明されるコンポーネント、モジュール、及びユニットを参照して好ましい実施形態を説明したが、こうした機能的要素を組み合わせてより少ない要素にしてもよく、又は分離して付加的な要素としてもよい。
本明細書に組み込まれ、その一部を構成する添付図面は、現時点での好ましい実施形態を示すものであり、以下のように説明される。
本発明の実施形態が応用される装置を示すブロック図を示す。 本発明の実施形態によって用いられるプログラム・コード変換プロセスの概略図を示す。 本発明の例示的な実施形態における例外処理中の制御フローを示す概略図である。 例外処理に関連する例示的なコンピュータ・システムの一部を示す概略図である。 例示的な信号処理サブユニットを示す概略図である。 本発明の例示的な実施形態に従って例外信号を処理する方法を示す概略的なフロー図である。 例外処理に関連する例示的なコンピュータ・システムの一部を示す概略図である。 本発明の例示的な実施形態に従って例外信号を処理する更に別の方法を示す概略的なフロー図である。 例外処理に関連する例示的なコンピュータ・システムの一部をさらに示す概略図である。 例外処理に関連する例示的なコンピュータ・システムの一部を示す別の概略図である。 例外処理に関連する例示的なコンピュータ・システムの一部をさらに示す概略図である。 例外処理に関連する例示的なコンピュータ・システムの一部をさらに示す別の概略図である。
以下の説明は、当業者が、本発明を利用するのを可能するために提供され、本発明を実施する、発明者らによって考えられる最良の形態を示している。しかしながら、当業者であれば、ここに説明されるような本発明の一般的な原理に基づいて、種々の修正物及び等価物が容易に明らかであろう。
図1は、以下でより詳細に説明されるコンポーネント、モジュール、及びユニットを紹介するために、本発明の例示的な実施形態を適用することができるシステム及び環境の概要を与えるものである。図1を参照すると、サブジェクト・コード17は、少なくとも1つのサブジェクト・プロセッサ3を有するサブジェクト・コンピュータ・プラットフォーム1上で実行することを目的としている。しかしながら、その代わりにターゲット・コンピュータ・プラットフォーム10を用いて、プログラム・コード変換を行なう翻訳器ユニット19を通じてサブジェクト・コード17が実行される。翻訳器ユニット19は、サブジェクト・コード17からターゲット・コード21へのコード変換を行ない、それにより、ターゲット・コード21はターゲット・コンピュータ・プラットフォーム10上で実行可能となる。
当業者にはよく知られているように、サブジェクト・プロセッサ3は、サブジェクト・レジスタ5の組を有する。サブジェクト・メモリ8は、特に、サブジェクト・コード17とサブジェクト・オペレーティング・システム2とを保持する。同様に、図1における例示的なターゲット・コンピュータ・プラットフォーム10は、複数のターゲット・レジスタ15を有する少なくとも1つのターゲット・プロセッサ13と、ターゲット・オペレーティング・システム20、サブジェクト・コード17、翻訳器ユニット19、及び翻訳済みターゲット・コード21を含む複数の動作コンポーネントを格納するためのメモリ18とを備える。ターゲット・コンピュータ・プラットフォーム10は、典型的には、マイクロプロセッサ・ベースのコンピュータ又は他の適切なコンピュータである。
一実施形態において、翻訳器ユニット19は、最適化されているかどうかに関わらず、サブジェクト命令セット・アーキテクチャ(ISA)のサブジェクト・コードを別のISAの翻訳済みターゲット・コードに翻訳するエミュレータである。別の実施形態においては、翻訳器19は、ターゲット・コンピュータ・プラットフォームの性能を改善する種々の最適化を実行しながら、サブジェクト・コードを、同じISAのターゲット・コードの各々に変換するためのアクセラレータ(accelerator)として機能する。
翻訳器ユニット19は、翻訳器を実装するソース・コードのコンパイル・バージョンであることが適切であり、ターゲット・プロセッサ13上でオペレーティング・システム20と共に実行される。図1に示される構造は単なる例であり、例えば、本発明の実施形態によるソフトウェア、方法、及びプロセスは、オペレーティング・システム20の内部又は下層に常駐するコードで実装してもよいことが認識されるであろう。当業者には周知のように、サブジェクト・コード17、翻訳器ユニット19、オペレーティング・システム20、及びメモリ18のストレージ機構は、様々なタイプのもののいずれかとすることができる。
図1による装置において、プログラム・コード変換は、ターゲット・コード21の実行中にターゲット・アーキテクチャ10上で実行されるように実行時に動的に行なわれる。即ち、翻訳器19は、翻訳済みターゲット・コード21とインラインで動作する。翻訳器19を通してサブジェクト・コード17を実行することには、交互に実行される2つの異なるタイプのコード、すなわち、翻訳器ユニット19とターゲット・コード21とが関わる。従って、ターゲット・コード21は、実行時全体を通して、翻訳中のプログラムの格納済みサブジェクト・コード17に基づき翻訳器ユニット19によって生成される。
一実施形態において、翻訳器ユニット19は、サブジェクト・プロセッサ3及び特にサブジェクト・レジスタ5などのサブジェクト・アーキテクチャ1の関連部分をエミュレートしながら、実際にはターゲット・プロセッサ13上でターゲット・コード21としてサブジェクト・コード17を実行する。好ましい実施形態においては、少なくとも1つのグローバル・レジスタ・ストア27(サブジェクト・レジスタ・バンク27又は抽象レジスタ・バンク27とも呼ばれる)が設けられる。マルチプロセッサ環境においては、サブジェクト・プロセッサのアーキテクチャに応じて、随意的に1つより多い抽象レジスタ・バンク27が設けられる。サブジェクト状態の表現は、翻訳器19及びターゲット・コード21のコンポーネントによって与えられる。つまり、翻訳器19は、サブジェクト状態を、変数及び/又はオブジェクトといった種々の明示的なプログラミング言語デバイスに格納する。これに対し、翻訳済みターゲット・コード21は、サブジェクト・プロセッサ状態を、ターゲット・コード21のターゲット命令によって操作されるターゲット・レジスタ15及びメモリ位置18に非明示的に与える。例えば、グローバル・レジスタ・ストア27の低レベル表現は、単なる割り当てメモリの領域である。しかしながら、翻訳器19のソース・コードにおいては、グローバル・レジスタ・ストア27は、より高レベルでアクセス及び操作することができるデータ・アレイ又はオブジェクトである。
好適には、翻訳器19は、サブジェクト・コード17を複数の翻訳ユニット又はブロックに分割する。一般的に、これらのサブジェクト・コード・ブロックの各々は、サブジェクト・コードの1つの基本ブロック(basic block)に対応する。「基本ブロック」という用語は、当業者にはよく知られている。つまり、各基本ブロックは、単一の入口点における第1の命令と単一の出口点における最後の命令(例えば、ジャンプ、呼び出し、又は分岐などの命令)との間の連続的な命令の組である。従って、基本ブロックは、正確に1つの入口点と正確に1つの出口点とを有するコードの一部であり、ブロック・コードを単一の制御パスに制限するものである。従って、基本ブロックは、制御フローの有用な基本単位である。翻訳器19は、これらの基本ブロックのうちの1つのみを選択するか(ブロック・モード)、又は基本ブロックのグループを選択する(グループ・ブロック・モード)ことができる。グループ・ブロックは、好適には、単一のユニットとしてもとめて処理される2つ又はそれ以上の基本ブロックを含む。さらに、翻訳器は、サブジェクト・コードの同じ基本ブロックを表すが異なるエントリ条件下にある等ブロック(iso-block)を形成してもよい。
好ましい実施形態においては、元のサブジェクト・コード17からターゲット・コード21を生成するプロセスの一部として、サブジェクト命令シーケンスに基づいて中間表現(IR)木(trees of intermediate Representation)が生成される。IR木は、サブジェクト・コードによって計算された表現及び行われた演算の抽象表現である。後に、IR木に基づいて、ターゲット・コード21が生成される(移植される(planted))。IRノードの集合は、実際には有向非巡回グラフ(DAG)であるが、口語的な表現では「木」と呼ばれる。
当業者であれば分かるように、一実施形態においては、翻訳器19は、C++などのオブジェクト指向プログラミング言語を用いて実装される。例えば、IRノードは、C++オブジェクトとして実装され、他のノードへの参照は、それらの他のノードに対応するC++オブジェクトへのC++参照として実装される。従って、IR木は、互いに対する種々の参照を含むIRノード・オブジェクトの集合として実装される。
さらに、説明している実施形態においては、IRの生成は、サブジェクト・コード17が実行されるように意図されるサブジェクト・アーキテクチャの特定の特徴に対応するレジスタ定義の組を用いる。例えば、サブジェクト・アーキテクチャ上の各々の物理レジスタ(すなわち、図1のサブジェクト・レジスタ5)について、固有のレジスタ定義が存在する。従って、翻訳器におけるレジスタ定義は、IRノード・オブジェクト(すなわち、IR木)への参照を含むC++オブジェクトとして実装することができる。レジスタ定義の組によって参照される全てのIR木の集合体は、作業IR森(working IR forest)と呼ばれる(各々が1つのIR木を参照する複数の抽象レジスタのルートを含むため、「森」と呼ばれる)。これらのIR木及び他のプロセスは、好適には翻訳器19の一部を形成する。
図1は、さらに、ターゲット・アーキテクチャ10のメモリ18の中のネイティブ・コード28を示す。サブジェクト・コード17の実行時翻訳の結果として得られるターゲット・コード21と、ターゲット・アーキテクチャのために直接書かれた又はコンパイルされたネイティブ・コード28との間には、違いがある。幾つかの実施形態においては、翻訳器19は、サブジェクト・コードの制御フローが、サブジェクト・コードのネイティブ・バージョンが存在するサブジェクト・ライブラリなどのサブジェクト・コード17のセクションに入ったことを検出したときに、ネイティブ・バインディングを実施する。翻訳器19は、サブジェクト・コードを翻訳する代わりに、等価なネイティブ・コード28をターゲット・プロセッサ13上で実行させる。例示的な実施形態においては、翻訳器19は、特許文献6においてより詳細に説明されているように、ネイティブ・コード呼び出しスタブ又はターゲット・コード呼び出しスタブなどの定められたインターフェースを用いて、生成されたターゲット・コード21をネイティブ・コード28にバインドする。
図2は、ターゲット・コンピュータ・プラットフォーム10上で実行されているときの翻訳器ユニット19をより詳細に示す。上述のように、翻訳器19のフロント・エンドはデコーダ・ユニット191を含み、デコーダ・ユニット191は、サブジェクト・コード17の現時点で必要なセクションをデコードして複数のサブジェクト・コード・ブロック171a、171b、171c(通常は各々がサブジェクト・コードの1つの基本ブロックを含む)を与え、また、各々のサブジェクト・ブロックと、翻訳器19の後の動作を支援する、サブジェクト・ブロックに含まれるサブジェクト命令とに関するデコーダ情報172を与えることもできる。幾つかの実施形態においては、翻訳器19のコア192にあるIRユニットが、デコードされたサブジェクト命令から中間表現(IR)を作成し、中間表現に関して、適宜、最適化が行われる。翻訳器19のバック・エンドの一部としてのエンコーダ193が、ターゲット・プロセッサ13によって実行可能なターゲット・コード21を生成する(移植する)。この単純な例においては、サブジェクト・プラットフォーム1上でサブジェクト・コード・ブロック171a−171cを実行するのに相当する作業をターゲット・プラットフォーム10上で行なうために、3つのターゲット・コード・ブロック211a−211cが生成される。また、エンコーダ193は、ターゲット・コード・ブロック211a−211cのうちの幾つか又は全てについて、そのターゲット・コード・ブロックが動作する環境を設定し、必要に応じ翻訳器19に制御を戻すなどといった機能を行なう制御コード212を生成することもできる。
同じく図2に示されるように、翻訳器19は、ターゲット・コード21の実行中に生じた例外信号を処理するように構成される。このために、翻訳器19は、ターゲット・プロセッサ13によるターゲット・コード21の実行中に生じた例外信号を処理するように構成された例外処理ユニット195を含む。さらに、例示的な実施形態においては、翻訳器19がターゲット・プロセッサ13上で実行されている間に生じた例外信号を処理するためにも、同じ例外処理ユニット195が配置される。
図3は、例外処理ユニット195を用いる信号処理中のターゲット・コンピュータ・プラットフォーム10上の制御フローを全体的な概要で示す概略図である。ここで、例外処理ユニット195は、ターゲット側例外ハンドラ・ユニット220とサブジェクト側例外ハンドラ・ユニット230とを含む。
信号310が生じたとき、ターゲット・オペレーティング・システム20は、例外処理ユニット195を呼び出す。ターゲット状態320は、一般に、ターゲット・プロセッサ13における実行の状態を表している。従って、ターゲット状態320は、オペレーティング・システム20がもたらした、SIGINFOデータ構造などの例外信号310についての情報を含む。さらに、ターゲット状態320は、随意的に、SIGCONTEXTデータ構造などの信号が生じた時点における、特にターゲット・レジスタ15の状態についてのより詳細な情報を含む。従って、例外信号310が生じた時点で、例外処理ユニット195は、ターゲット状態320を用いてターゲット・プロセッサ13における実行の状態を調べる。
例外信号310の処理の結果として得ることができる種々の結果がある。多くの場合、必要に応じてターゲット・コード21及び/又は翻訳器19の実行を再開することが可能である。特に、例外処理ユニット195は、ターゲット状態320を調べて、例外の性質及び原因を判断し、適切な応答アクションをとる。例外処理ユニット195は、元のターゲット状態又は現時点で修正済みのターゲット状態320に応じて実行を再開するためにオペレーティング・システム20を通して実行の制御を戻す前に、条件コード・フラグを変更すること、或いは、ターゲット・レジスタ15の1つ又は複数のコンテンツを表す格納済みデータを修正することなどによって、必要に応じてターゲット状態320を修正する。従って、実行は、例外信号310をもたらす条件に応答して、例外が生じた元の時点で、又はコードにおける異なる時点で、或いは異なる方法で、再開することができる。特に、例外は、ターゲット・コード21の実行中に生じることがあるが、例外の処理後、今や、例外は、翻訳器19がターゲット・コード21の1つ又は複数のブロックの変更又は再生を必要とすることを示したので、結果として翻訳器19の実行に戻る。
例外処理ユニット195は、もっぱらターゲット側例外ハンドラ・ユニット220において、及び、ターゲット状態320だけを参照して、多くのこうした例外信号310を処理する。しかしながら、一部の例外信号は、ターゲット側例外ハンドラ・ユニット220単独によって処理されない。ここで、特にサブジェクト・レジスタ5についての代表値を含む、エミュレートされたサブジェクト・プロセッサ3上の実行の状態を表すサブジェクト状態330が与えられる。好適には、サブジェクト状態330は、上述した1つ又は複数の抽象レジスタ・バンク27を参照する。次に、例外信号を処理するために、サブジェクト側ハンドラ・ユニット230によって、このサブジェクト状態330が用いられる。しかしながら、例外ハンドラ・ユニット195が、サブジェクト状態330を提供し、サブジェクト側例外ハンドラ・ユニット230を呼び出すのには、相対的に費用がかかるので、サブジェクト側例外ハンドラ・ユニット230を呼び出し、サブジェクト状態330を構成する機会を最小にすることが望ましい。
ターゲット状態320と同様に、サブジェクト状態330は、同じままであっても、又は例外信号310に応答して修正されてもよい。修正済みのサブジェクト状態330は、典型的には、対応する修正済みのターゲット状態320をもたらし、これにより、ターゲット・コード21又は翻訳器19が、異なる時点で又は異なる方法で実行を再スタートする。
サブジェクト・コード17は、1つ又は複数の信号ハンドラ機能を含むことが多い。つまり、サブジェクト・コード17で書かれた特定のプログラムは、特定の例外信号が生じたときに呼び出される1つ又は複数の特定の信号ハンドラ機能を含むことが多い。今や、代わりに、ターゲット・プラットフォーム上に例外信号310が生じ、必要に応じて、サブジェクト例外ハンドラを表す情報が、サブジェクト側例外ハンドラ・ユニット230に渡される。適切なサブジェクト信号ハンドラ機能は、サブジェクト側例外ハンドラ・ユニット230を通じて呼び出され、例外信号を処理するために(ターゲット・コードとして)実行される。従って、サブジェクト状態330は、そのデータ構造がサブジェクト信号ハンドラによって用いられる場合、サブジェクトSIGINFOデータ構造を含むことができる。同様に、そのデータ構造がサブジェクト信号ハンドラによって用いられる場合、ターゲット・システム上で利用可能な情報から、サブジェクトSIGCONTEXTデータ構造がポピュレートされる。こうしたサブジェクト状態330の生成に関するより詳細な背景情報が、上記で参照した、発明の名称を「Method and Apparatus for Performing Adjustable Precision ExceptionHandling」とする特許文献4、及び、発明の名称を「Method and Apparatus forPrecise Handling of Exceptions During Program Code Conversion」とする特許文献5において与えられる。とりわけ、これらの先の開示は、異なるサブジェクト命令について様々な正確さのレベルでサブジェクト状態を与えるための機構、又は、回復情報を用いて正確なサブジェクト状態を得るための効率的な機構を考えるものであるが、ターゲット状態320だけを参照して幾つかの例外信号の処理を可能にするものではない。
図4は、特にターゲット側例外ハンドラ・ユニット220を含む、ターゲット・コンピュータ・プラットフォームの特定の部分をより詳細に示す概略図である。
図4に示されるように、好適にはオペレーティング・システム20の部分である信号生成器(signalgenerator)ユニット200が、他のプロセスの中でも、ターゲット・プロセッサ13上のターゲット・コード21又は翻訳器19の実行に応答して、例外信号を生成するように構成される。マルチプロセス又はマルチスレッド・コンピュータ環境においては、同時に実行される多くのプロセスが存在し、信号生成器は、各プロセスについての例外信号の生成、及び、それぞれの登録されたハンドラへの例外信号の配送を担当する。
ターゲット側例外ハンドラ・ユニット220は、グローバル信号制御ユニット221、配送パス選択ニット222、及び複数の信号処理サブユニット223を含む。
グローバル信号制御ユニット221は、少なくともターゲット・コード21の実行に関連して、最も好適には翻訳器19の実行にも関連して、信号生成器ユニット200が生成した例外信号を受け取るように構成される。つまり、グローバル信号制御ユニット221は、これらのプロセスについての帯域内例外信号を受け取る。さらに、グローバル信号制御ユニット221は、システム内のどこか他の場所から生じる帯域外の例外信号を受け取るように構成される。
配送パス選択ユニット222は、各例外信号の配送パスを決定し、そこで、配送パスは、例外信号を受け取る複数の信号処理サブユニット223の1つ又は複数を指定する。次に、グローバル信号制御ユニット221は、例外信号を、その例外信号についての特定の配送パスに従って、指定された1つ又は複数の信号処理サブユニット223又はその各々に順に渡す。
つまり、信号制御ユニット221は、配送パスに従って信号処理サブユニット223の第1のものを選択し、例外信号をそのサブユニットに渡す。次に、信号制御ユニット221は、配送パスに従って信号処理サブユニット223の第2のものを選択し、例外信号をそのサブユニットに渡し、例外信号が指定されたサブユニットの各々に順に配送されるまで以下同様である。幾つかのマルチスレッド・コンピュータ環境においては、例外信号を同時に多数のユニットに配送すること、或いは、第1のサブユニットが依然として信号を積極的に処理している間、例外信号を第2のサブユニットに配送することが可能である。しかしながら、サブユニットの各々は信号を処理し、ターゲット状態320を変えるといったアクションをとることができるので、サブユニットを線形パスに従うものとして扱うことが好ましい。特に、第2のサブユニットは、第1のサブユニットによって例外信号の処理が完了するまで、ターゲット状態320を変えるべきではない。
図4は、ターゲット・コンピュータ・システム10が複数の異なるタイプの例外信号をサポートし、各々の信号が対応する信号番号(SIGNUM)を有する例示的な状況を示す。例外処理ユニット195は、複数のこれらの信号タイプを受信するように登録され、この例においては、例外処理ユニット195は、利用可能な信号タイプの組の各々を受信するように登録される。図4に示されるように、信号生成ユニット200は、利用可能な信号の組#1〜#63の各々を受信するように例外処理ユニット195を登録する信号表を用いることができる。従って、これらの信号のいずれかが生成されたとき、例外信号は、例外処理ユニット195に渡される。
一例として、信号#2が生成されたと仮定する。グローバル信号制御ユニット221は、この信号についての特定の配送パスを指定する配送パス選択ユニット222に相談する。ここで、配送パスは、1つ又は複数の示される信号処理サブユニット223a〜223dのどれが信号#2を受信し、かつ、信号処理サブユニット223の選択されたグループが例外信号#2を受信する順序も指定する。この例において、信号処理サブユニットの選択されたグループは、ユニット223b、223c、及び223dを含み、その順序は、「d、次にc、次にb」のように指定される。従って、今やグローバル信号制御ユニット221は、例外信号#2を、最初に信号処理サブユニット223dに、次に223cに、次いで223bに順に渡す。
信号処理サブユニット223の1つが実行(この場合、第3のサブユニット223b)に戻ることを要求する場合、グローバル信号制御ユニット221は、信号の処理を完了し、必要に応じてターゲット・コード21又は翻訳器19の実行に戻るよう教唆する。
図5は、信号処理サブユニット223の1つをより詳細に示す概略図である。
図5に示されるように、信号処理サブユニット223の各々は、入口ユニット224、信号処理ユニット225、及び出口ユニット226を含む。入口ユニット224は、信号310を受け取り、この信号が信号処理ユニット225によって処理されるべきかどうかを決定する。処理すべきである場合、入口ユニット224は、信号310を信号処理ユニット225に渡す。処理すべきでない場合、入口ユニット224は、信号310を直接出口ユニットに渡す。ここで、入口ユニット224は、ターゲット状態320を調べて、今回例外信号を処理すべきかどうかを決定する。殆どの場合、この決定は、信号番号又はSIGINFOデータ構造のような信号310に関連して与えられた情報を参照することによってなされる。しかしながら、この決定は、SIGCONTEXTデータ構造のような、ターゲット状態320からのより詳細なコンテキスト情報を参照することもある。
信号処理ユニット225は、受け取った例外信号に対して所定の信号処理機能を実行する。つまり、信号処理ユニット225は、例外を少なくとも部分的に処理するために、信号を処理する。随意的に、信号処理ユニット225は、処理された例外信号に応答して実行が異なるように再開するように、ターゲット状態320を修正する。
出口ユニット226は、信号310を後の信号処理サブユニット223(又は下記により詳細に説明されるように他のユニット)に渡すかどうか、或いはターゲット状態320に応じて実行を再開すべきかどうかを決定する。
図6は、信号処理ユニット195によって、特にターゲット側例外ハンドラ・ユニット220及び1つ又は信号処理サブユニット223において行なわれるような、例外を処理する方法を示す概略的なフロー図である。
ステップ601において例外信号を受け取り、信号配送パスが決定される。ステップ602において、次に、信号配送パスに従って、信号が信号処理サブユニットに渡される。ステップ603において、信号を処理するかどうかを決定する。処理する場合、次に、ステップ604において信号が処理される。ステップ605において、実行に戻ることを要求するかどうかについての判断がなされる。要求しない場合、方法はステップ602に戻り、信号は、次の信号処理サブユニットに渡される。従って、信号310は、信号配送パスに従って、順に、第1、第2、第3、及び後続の信号処理サブユニットに渡される。ステップ605において、実行に戻ることが要求された場合、ステップ606において、格納済みのターゲット状態320に応じて、実行制御が戻される。
図7は、サブジェクト側例外ハンドラ・ユニット230をより詳細に示す概略図である。
図7に示されるように、サブジェクト側例外ハンドラ・ユニット230は、サブジェクト側信号制御ユニット231、サブジェクト側配送パス選択ユニット232、サブジェクト側信号処理サブユニット233a−233cの組、及び変換器ユニット234を含む。
変換器ユニット234は、例外信号を、サブジェクト・アーキテクチャ上で予想されるフォーマットに、すなわちサブジェクト側例外信号311に変換するように構成される。特に、信号番号(SIGNUM)のようなフィールドは、ターゲット・アーキテクチャとサブジェクト・アーキテクチャとの間で異なることが多い。この例においては、ターゲット側の信号#2は、サブジェクト側の信号#S1に翻訳された。同様に、変換器ユニット234は、サブジェクト側例外信号311を処理する準備のできた正確なサブジェクト状態330を提供する。特に、変換器ユニット234は、ターゲット・マシン上での実行の状態を表すターゲット状態320を変換し、サブジェクト側例外ハンドラ・ユニットにおける例外の処理の準備のできたサブジェクト・コンテキスト・データ構造SIGCONTEXTをもたらす。逆に、変換器ユニット234は、後で修正済みサブジェクト状態を等価のターゲット状態320に再び変換し、修正済みターゲット状態における実行を再開する。
サブジェクト側配送パス選択ユニット232は、サブジェクト側信号処理サブユニット233a−233cの1つ又は複数の中から例外信号についての配送パスを決定する。この場合、信号配送パスは、例外信号#S1が第2のサブジェクト側信号処理サブユニット233bに配送されると指定する。
サブジェクト側信号制御ユニット231は、例外信号を、順に、信号処理サブユニット233の指定されたグループの各々に渡す。
図5を参照してターゲット側信号処理サブユニット223について上述されたように、サブジェクト側信号処理サブユニット233の各々は、入口ユニット、信号処理ユニット、及び出口ユニットを含む。従って、各々のサブジェクト側信号処理サブユニット233は、例外信号を、順に、決定されたサブジェクト側配送パスに従って受け取り、例外信号を選択的に処理する。次に、関連したサブジェクト側信号処理サブユニット233は、例外信号を渡すこと、或いは、今や(修正されている可能性が高い)サブジェクト状態330に従って実行に戻ることのいずれかを要求する。
図8は、本発明の実施形態において例外信号を処理する例示的な方法を示す概略的なフロー図である。この方法は、サブジェクト側例外ハンドラ・ユニット230に関する例外ハンドラ・ユニット195において行なわれる。
図8を参照すると、ステップ801において、例外信号を、サブジェクト側例外ハンドラ・ユニット230に渡すことが決定される。
次に、ステップ802乃至807は、図6について上述されたステップ601乃至606と類似しており、これにより、サブジェクト側例外ハンドラ・ユニット230は、利用可能なサブジェクト側信号処理サブユニット233の1つ又は複数における例外を処理する。ステップ807において、サブジェクト状態330に従って実行に戻ることが要求され、それにより、必要に応じてターゲット・コード21又は翻訳器19の実行を再開するための、対応するターゲット状態320がもたらされる。
図9は、例外処理ユニット195の動作をより詳細に示す概略図である。特に、図9は、本発明の完全かつ詳細な理解を得る際に当業者を助けるために、第1の説明に役立つ実例を提供する。しかしながら、この説明に役立つ実例は、本発明を用いて達成できる多くの例示的な実施形態の1つにすぎない。
この第1の説明に役立つ実例において、ここで説明される例外処理機構は、タイミング信号に関して、特に有利である。当業者にはよく知られているように、プログラムは、特定の時間間隔が経過した後に例外信号を生じさせるタイマを設定することができる。POSIX対応プラットフォームにおいて、一般的に用いられるタイミング信号は、SIGALRM、SIGPROF、及びSIGVTALRMを含む。
多くコンピュータ・アーキテクチャは、各々のこうしたタイミング信号の1つしか提供しないが、サブジェクト・コード(今やターゲット・コード21として実行されている)及び翻訳器19の両方とも、それぞれ同じタイプのタイミング信号を利用する必要があり得るという問題が生じる。例えば、ターゲット・コード21及び翻訳器19の両方とも、SIGALRM例外信号を用いることを望むとする。図9に示されるようなこの例において、翻訳器19が、例えばタイムライン上の文字Xで示されるような1秒毎の規則的な間隔で、ターゲット・コード21の性能の輪郭を描くように構成されると仮定する。また、サブジェクト・コード(今やターゲット・コード21に変換されている)は、同じタイプのタイミング信号を用いて、タイムライン上の文字Yで示されるように5秒といった指定された時間内にユーザがキーボード上のキーを押したかどうかを判断するように構成されると仮定する。オペレーティング・システム20は、SIGALRMタイプの例外信号310を生成し、このSIGALRMタイプの例外信号310は、時間X及び時間Yにおいて最初にターゲット側例外ハンドラ・ユニット220に渡される。このタイプの信号のための配送パスは、タイミング信号が信号処理サブユニット223aに配送され、それにより、タイミング信号が、ターゲット側によって、この場合は翻訳器19によって予測されるかどうかが確立されることを示す。つまり、信号処理ユニット225は、予測されるタイミング信号及び予測される信号の各々の所有者を記録する頻度アービトレータ・ユニット(frequency arbitrator unit)を含む。従って、イベントXが信号を生じさせた場合、信号処理サブユニット223は、翻訳器19が信号310を所有していると判断する。今や信号は処理され、実行に戻る。対照的に、時間Yにおける例外信号は、サブジェクト側例外ハンドラ・ユニット230に渡される、すなわち、信号はターゲット側によって予測されなかっと判断される。サブジェクト側例外ハンドラ・ユニット230は、適切な配送パスを決定し、例外信号をそれぞれの信号処理サブユニット233aに経路指定する。従って、イベントYから生じる例外信号310は、今やサブジェクト側例外ハンドラ・ユニット230によって受信され、必要に応じてサブジェクト・コードについて処理される。
図9のこの例から、ここで説明される例外処理機構において多数の利点が存在することが理解されるであろう。第1に、翻訳器19、又は翻訳器19によって生成された制御コード212の部分のようなターゲット状態320に依存するコードと、元のサブジェクト・コード17によって予想される動作をエミュレートするターゲット・コード21の主ブロック211のようなサブジェクト状態330に依存するコードとの間で、SIGALRMのような単一のタイプの例外信号が共有される。第2に、ターゲット側が必要としない信号だけがサブジェクト側に渡され、これにより、サブジェクト状態330を正確に取得する機会の数が著しく低減される。
図10は、例外処理ユニット195の動作をより詳細に示す概略図である。図10に示されるように、例外処理ユニット195は、デフォルト・ハンドラ・ユニット240及びクラッシュ・レポータ・ユニット250をさらに含む。
デフォルト・ハンドラ・ユニット240は、ターゲット・システムの例外処理プロトコルに従って例外信号を処理するように構成される。つまり、デフォルト・ハンドラ・ユニット240は、ターゲット・オペレーティング・システム20の予想される動作と同等の例外処理動作を提供する。通常、デフォルト動作は、信号を無視し、実行に戻るか、又は実行を終えることである。デフォルト動作の例は、親プロセスは、子プロセスが終了したときに、情報についてのSIGCHLD例外信号を受け取るが、殆どの場合、信号は無視され、実行が継続するというものである。
クラッシュ・リポータ・ユニット250は、翻訳器ユニット19の一部として与えられ、特にデバッグを支援するために、所定の方法に従って実行のクラッシュを管理する。ここで、クラッシュ・リポータ250は、クラッシュに関連する実行の状態に関する詳細な情報を含むクラッシュ・レポート・データ構造350を生成するために、例えばターゲット状態320及びサブジェクト状態330を含む状態情報を格納するように構成される。例示的な実施形態においては、クラッシュ・レポート・データ構造350は、ターゲット・システムのメモリ・システム18内にテキスト・ファイル(.txt)として格納される。
図10は、ここでは「A」乃至「D」と表記された、例外処理ユニット15を通る4つの主な例外処理経路を示す。
経路Aにおいて、例外は、ターゲット側例外処理サブユニット223の1つにおいて処理され、実行に戻る。経路Bにおいて、例外は、サブジェクト側例外処理サブユニット233の1つにおいて処理され、実行に戻る。経路Cにおいて、例外は、デフォルト処理ユニット240において処理され、戻るか又は終了する。経路Dにおいて、例外は、クラッシュ・レポータ250において処理され、戻るか又は終了する。
図10に示されるように、例示的な例外処理ユニット195は、浮動小数点例外の処理に関して、特に有利である。例えば、IBM Power PC(商標)プロセッサなどの幾つかのコンピュータ・アーキテクチャは、プロセッサにおいて「ゼロ除算」の違法な数学演算が試みられたときに例外信号を生成しないが、代わりに結果をゼロに設定し、実行を継続する。これに対して、Intel(商標)×86プロセッサに基づいたもののような他のコンピュータ・アーキテクチャは、プロセッサが違法な「ゼロ除算」演算を行なったとき、例外信号を生成する。図10において、ターゲット・ハードウェアは、×86プロセッサに基づいており、よって、違法なゼロ除算の数学演算に直面したとき、こうした浮動小数点例外を生成することになる。
サブジェクト・コード17の作業を実行するために、翻訳器19によって生成されたターゲット・コード21の実行を通して、この浮動小数点例外が生じたとき、例外は、経路Aに従うことになる。つまり、ターゲット側例外ハンドラ・ユニット220内の信号処理サブユニット223bの1つは、例外信号310を受け取るように構成され、SIGINFOデータ構造内のプログラム・カウンタ(PC)フィールドを調べることなどによって、ターゲット・コード21の実行から例外が生じたと判断する。例外信号は、今や、結果をゼロをリセットすることによって、すなわち、ターゲット状態320において表されるようにターゲット・レジスタの1つのコンテンツを修正することによって処理される。実行は、ターゲット・コード21に戻り、続行することができる。結果をゼロにリセットすることによって、ターゲット・システムは、今や、サブジェクト・アーキテクチャに従って、このプログラムの予想される動作を正しくエミュレートする。また、例外は安価に処理され、特に、サブジェクト状態330を与える費用のかかるプロセスを行なう必要はなかった。
同じタイプの浮動小数点例外が翻訳器ユニット19の実行から生じたとき、この信号は、重大なプログラミング・エラー又は実行エラーを表している可能性が高い。従って、例外信号310は、デフォルト・ハンドラ・ユニット240への経路Cに従うか、或いは、クラッシュ・レポータ・ユニット250への経路Dに従う。
頻繁に遭遇する例外信号の更に別の例は、プログラムが、許容されていない方法でメモリにアクセスしようと試みるとき(例えば、読み取り専用の保護メモリ領域への書き込みを試みるなど)エラーが生じたことを示すセグメンテーション違反(segmentation fault)(segfault)である。POSIXタイプのシステムにおいて、このタイプの違反についての記号定数は、通常、SIGSEGVである。こうしたセグメンテーション違反は、幾つかの異なる理由の1つのために生じることがあり、異なる環境において、同じタイプの例外信号は、例外処理ユニット195を通して異なる経路A−Dを利用する。
第1に、セグメンテーション違反は、ターゲット・コード21が、自己書き換えコード(self-modifying code)への書き込みを試みるといった、メモリの保護された領域へのアクセスを試みる場合を検出するために、トラップとして意図的に導入することができる。信号は経路Aに従い、関連するターゲット側処理サブユニット223がターゲット状態320を変更するので、自己書き換えコード・イベントを処理するために、実行は翻訳器19に戻る。従って、翻訳器19は、特定の例外信号をトラップするために例外処理ユニットに依存することが可能になる。
第2に、元のサブジェクト・コード17は、トラップとしてセグメンテーション違反を用いるように書き込まれた。この場合、信号は経路Bに従い、サブジェクト状態330を参照してサブジェクト信号処理機能を呼び出すために、サブジェクト側信号処理サブユニット233の1つによって処理される。
第3に、セグメンテーション違反は、別の外部プロセスから例外ハンドラ・ユニット195に渡される。SIGINFOデータ構造内のフィールドSI_CODEを調べることにより、信号が外部のものかどうかが判断される。この場合、信号は経路Cに従い、そこで、デフォルト・ハンドラ・ユニット240は、この場合は信号を無視することであるデフォルト動作を実行する。
第4に、先行するユニットによって予測されず、捕捉されなかったセグメンテーション違反は、この信号が翻訳器における予測されないエラー又はバグから生じたということに基づいて、経路Dに従ってクラッシュ・レポータ250に渡される。
従って、同じタイプの例外信号(この場合はセグメンテーション違反)は、その信号の特定の環境に応じて、例外処理ユニット195を通る利用可能な経路のいずれか1つに従う。
図11は、例外信号を渡すことに向けられる機構に関連して例外信号ハンドラ・ユニット195をより詳細に示す概略図である。
当業者にはよく知られているように、何らかのタイプの例外信号(例えば、SIGKILL)は、オペレーティング・システム20によって遮断し(intercept)、常に処理することは可能でない。図11において、信号タイプ#63は、このような遮断可能でない例外信号の例として示される。
しかしながら、ターゲット・アーキテクチャ内に、遮断可能である多くのタイプの例外信号が存在し、例示的な実施形態において、例外ハンドラ・ユニット195は、遮断され得る、ターゲット・アーキテクチャ上の全てのタイプの信号を受け取るように登録される。ここで、少なくとも信号タイプ#1、#2、及び#3等は、遮断することが可能であり、従って、例外信号処理ユニット195は、こうした信号を受け取るように登録される。図11において、オペレーティング・システム20内の信号生成器ユニット200は、こうした信号が、オペレーティング・システム20の信号処理要素にではなく、代わりにここで説明される例示的な実施形態の例外ハンドラ・ユニット195に配送されることを示すように、表記「(global)」を記録する。
ターゲット側例外ハンドラ・ユニット220の配送パス選択ユニット222は、何らかのタイプの例外信号が、直接に、或いは、最初にターゲット側処理サブユニット223(図4を参照されたい)の1つ又は複数を通して例外信号を渡した後に、文字「DF」でマーク付けされたデフォルト・ハンドラ・ユニット240又はクラッシュ・レポータ「CR」に渡されると判断する。図11において、文字「a」、「b」、又は「c」は、ターゲット側信号処理サブユニット223の選択されたものを指す。さらに、何らかのタイプの例外信号は、同じく直接に、或いは、最初にターゲット側信号処理サブユニット「a」、「b」又は「c」等の1つ又は複数を通して例外信号を渡した後に、文字「SS」でマーク付けられたサブジェクト側例外ハンドラ・ユニット230に渡される。この判断は、図11に示される表内に好都合に記録されている。しかしながら、上述したセグメンテーション違反のような何らかのタイプの信号は、SIGINFO又はSIGCONTEXTデータ構造を調べるなど、適切な判断をなすための付加的な処理を必要とする。
同様に、サブジェクト側例外ハンドラ・ユニット230の配送パス選択ユニット232は、最初に、文字「Sa」、「Sb」、又は「Sc」でここに示されるような1つ又は複数のサブジェクト側信号処理サブユニット233を通して例外信号を渡すかどうかに関係なく、特定の例外信号を、文字「DF」で示されるデフォルト・ハンドラ・ユニット240又は「CR」で示されるクラッシュ・レポータ・ユニット250に選択的に渡すように構成される。
従って、配送パス選択ユニット222、232は、それぞれの処理の配送パスに沿って、特定のタイプの例外信号の各々を経路指定するために、簡単で好都合な機構を提供する。
図12は、信号配送パスの動的再構成に関する例示的な例外処理機構をより詳細に示す概略図である。
図12に示されるように、グローバル信号制御ユニット221は、ターゲット側配送パス選択ユニット222及びサブジェクト側配送パス選択ユニット232を動的に制御するように構成される。つまり、グローバル信号制御ユニット221は、例外信号のタイプの1つ又は複数についての指定された配送パスを付加し、修正し、又は置き換えるように構成される。このように、グローバル信号制御ユニット221は、特定のタイプの例外信号及び指定された順序の配送パスを受け取ることになる、信号処理サブユニット223、233の組を付加し、修正し、又は置き換える。
さらに、クラッシュ・レポータ・ユニット250は、配送パスを動的に再構成するように、グローバル信号制御ユニット221と協働して働くように構成される。一例として、特定のメモリ領域がマッピングされていないことを示す例外信号が生じた場合に、クラッシュ・レポータ・ユニット250は、付加的なバス・エラー信号処理サブユニットを導入するように構成される。この新しく導入されたバス・エラー・サブユニットは、メモリ・マッピング機能を実施し、実行に戻る。違反が再び生じた場合、バス・エラー・サブユニットは、今や、ターゲット状態320及び/又はサブジェクト状態330に関するより詳細な情報の回復を助け、クラッシュ報告プロセスの次の部分に進む。従って、クラッシュ・レポータ・ユニットは、実行の制御を保持し、例外信号を処理するために、特注の信号処理サブユニットの組を導入することができる。
これらの実施形態において、例外処理ユニット195内に新しい例外信号処理動作が導入されたとしても、ターゲット・オペレーティング・システム20の信号生成器ユニット200によって保持される信号表は更新されない。つまり、新しい信号処理サブユニットの組立体を登録するために、システム呼び出しを必要とすることなく、信号処理サブユニットの組が付加され、修正され、又は置き換えられる。従って、例外処理ユニット195は、動作するのに安価で効率的である上、柔軟性があり強力でもある。
上述のように、本発明の例示的な例外処理機構は、多くの利点を有する。特に多くの信号がターゲット側例外処理ユニットによって迅速かつ安価に成功裏に処理されるため、この機構は、各々の例外信号に応答して、行なう必要ある作業量を低減させる。多くの場合、元のサブジェクト・コードの実行における同等の時点を表すサブジェクト状態を得る費用なしに、例外信号が処理される。さらに、この機構は、ターゲット・コードの実行及び翻訳器コードの実行の両方の間で1つの例外信号を共有することができ、これにより、ターゲット・コンピュータ・アーキテクチャにおける動作の効率性が改善される。この機構は、多くの場合、サブジェクト・コンピュータ・アーキテクチャ上の例外処理と、ターゲット・アーキテクチャ上の例外処理との間に生じる実質的な差を軽減し、よって、サブジェクト・コードの実行をより良好にサポートするように、ターゲット・アーキテクチャを助ける。このことは、人間の介在なしにプログラム・コードを自動的に変換することが望ましい動的翻訳の分野、特に動的バイナリ翻訳の分野において、極めて重要である。多数のサブジェクト側例外処理サブユニットを設けることにより、利用可能な例外信号を、ターゲット・システムから、サブジェクト・コードにより必要とされるサブジェクト例外信号の組に容易にかつ効率的にマッピングすることが可能になる。サブジェクト・コードが信号を広く利用する場合でも、必要とされる信号の数又はタイプは、今や、ターゲット・コンピュータ・プラットフォーム上で容易にサポートされる。最終的に、例示的な機構は、特に、各々が同じ例外信号を受け取る多数の信号処理サブユニットを提供する能力、及び、最小のオーバーヘッドによりこれらのユニットを付加し、修正し、又は置き換える能力を含む、例外信号の処理において動的柔軟性及び制御を提供する。
幾つかの好ましい実施形態が示され説明されたが、当業者であれば、添付の特許請求の範囲において定められる本発明の範囲から逸脱することなく、種々の変更及び修正をなし得ることが認識されるであろう。
本出願と関連して、本明細書と同時に又はそれ以前に出願され、本明細書と共に公開された全ての論文及び文献に注意が向けられており、そのような論文及び文献の全ての内容は、引用により本明細書に組み入れられる。
(いずれかの添付の特許請求の範囲、要約、及び図面を含む)本明細書において開示された特徴の全て、及び/又は、そこに開示されたいずれかの方法又はプロセスのステップの全ては、こうした特徴及び/又はステップのうちの少なくとも幾つかが相互に排他的である組み合わせを除いて、如何なる組み合わせにも組み合わせることができる。
(いずれかの添付の特許請求の範囲、要約、及び図面を含む)本明細書において開示された各々の特徴は、他に明示的な断りのない限り、同一の目的、等価な目的、又は類似の目的を果たす代替的な特徴によって置換することができる。従って、他に明示的な断りのない限り、開示された各々の特徴は、一般的な一連の等価な特徴又は類似の特徴の単なる一例である。
本発明は、上記の実施形態の詳細に限定されるものでなはい。本発明は、(いずれかの添付の特許請求の範囲、要約、及び図面を含む)本明細書において開示された特徴のいずれかの新規な1つ、又はいずれかの新規な組み合わせ、又は、そこに開示された方法若しくはプロセスのステップのいずれかの新規な1つ若しくはいずれかの新規な組み合わせにも及ぶ。

Claims (14)

  1. サブジェクト・コードをターゲット・コードに変換するように構成された翻訳器ユニットと、
    前記ターゲット・コードを実行し、プロセッサ・ユニットにおける前記ターゲット・コードの実行に関するターゲット状態を提供するように構成されたプロセッサ・ユニットと、
    少なくとも前記プロセッサ・ユニットにおける前記ターゲット・コードの実行に応答して、例外信号を生成するように構成された信号生成器ユニットと、
    前記例外信号を処理するように構成された例外処理ユニットと、
    を備えるコンピュータ・システムであって、前記例外処理ユニットは、
    前記ターゲット状態から得られるサブジェクト状態に関する前記例外信号を処理するように構成されたサブジェクト側例外ハンドラ・ユニットであって、前記サブジェクト状態は、サブジェクト・プロセッサ・ユニット上の前記サブジェクト・コードの実行の状態を提供する、サブジェクト側例外ハンドラ・ユニットと、
    前記信号生成器ユニットから前記例外信号を受け取り、前記ターゲット状態に関する前記例外信号を選択的に処理するように構成されたターゲット側例外ハンドラ・ユニットと、
    を備え、前記ターゲット側例外ハンドラ・ユニットは、
    各々が前記ターゲット状態に関する前記例外信号を選択的に処理し、実行に戻る要求又は前記例外信号を渡す要求を出力するように構成された複数の信号処理サブユニットと、
    前記複数の信号処理サブユニットの選択されたグループへの前記例外信号の配送パスを決定するように構成された配送パス選択ユニットと、
    前記配送パスに従って前記例外信号を前記複数の信号処理サブユニットの選択されたグループの各々に順に配送し、(i)前記信号処理サブユニットのそれぞれが前記実行に戻る要求を出力した場合、前記ターゲット状態に応じて実行に戻り、(ii)前記信号処理サブユニットが前記例外信号を渡す要求を出力した場合、前記配送パスに従って前記例外信号を信号処理サブユニットの前記選択されたグループの次のものに渡し、(iii)前記配送パスにおいて前記信号処理サブユニットの更に別のものが指定されなかった場合、デフォルトで前記例外信号を前記サブジェクト側例外ハンドラ・ユニットに配送するように構成された信号制御ユニットと、
    を備える、コンピュータ・システム。
  2. 前記信号生成器ユニットは、複数の異なるタイプの1つとして前記例外信号を生成し、前記配送パス選択ユニットは、前記例外信号のタイプに応じて前記信号処理サブユニットのそれぞれのグループを含ませるように前記配送パスを決定する、請求項1に記載のコンピュータ・システム。
  3. 前記配送パス選択ユニットは、前記信号処理サブユニットの選択されたグループへの前記例外信号の配送の順序を指定するように前記配送パスを決定するように構成され、前記信号制御ユニットは、前記配送順序に従った順序で、前記例外信号を前記信号処理サブユニットの選択されたグループに配送する、請求項1に記載のコンピュータ・システム。
  4. 前記プロセッサ・ユニットは、前記翻訳器ユニット及び前記ターゲット・コードを実行し、それぞれ前記ターゲット・コード及び前記翻訳器ユニットに関連する、前記プロセッサ・ユニットにおける現在の実行の状態を表す前記ターゲット状態を提供するように構成され、
    前記信号生成器ユニットは、前記ターゲット・コード及び前記翻訳器ユニットに関連する複数の前記例外信号を生成するように構成され、
    前記信号処理サブユニットの少なくとも1つは、前記例外信号が前記翻訳器ユニットの実行の結果として得られたとき、前記ターゲット状態に関する前記例外信号のそれぞれ1つ又は複数を処理するように構成される、請求項1に記載のコンピュータ・システム。
  5. 前記複数の信号処理サブユニットの各々は、
    前記例外信号を受け取り、この例外信号を処理するかどうかを決定するように構成された入口ユニットと、
    前記実行が前記例外信号に応答して異なるように再開するように前記ターゲット状態を選択的に修正することを含めて、前記入口ユニットが決定したとき、前記ターゲット状態に関する前記例外信号における所定の信号処理機能を果たすように構成された信号処理ユニットと、
    前記実行に戻る要求又は前記例外信号を渡す要求のいずれかを出力するように構成された出口ユニットと、
    を備える、請求項1に記載のコンピュータ・システム。
  6. 前記サブジェクト側例外ハンドラは、
    前記ターゲット状態を前記サブジェクト状態に変換するように構成された変換器ユニットと、
    各々が前記サブジェクト状態に関する前記例外信号を選択的に処理し、前記例外信号を渡すか又は実行に戻ることを要求するかを決定するように構成された複数のサブジェクト側信号処理サブユニットと、
    前記例外信号の配送パスを決定するように構成されたサブジェクト側配送パス選択ユニットであって、前記配送パスは前記複数のサブジェクト側信号処理サブユニットのうちの1つ又は複数の選択されたグループを指定する、サブジェクト側配送パス選択ユニットと、
    前記サブジェクト側信号処理サブユニットの前記選択されたグループの各々に前記例外信号を順に渡し、前記サブジェクト側信号処理サブユニットの前記グループのそれぞれからの前記要求に応答して実行に戻るように構成されたサブジェクト側信号制御ユニットと、
    を備える、請求項1に記載のコンピュータ・システム。
  7. 前記変換器ユニットは、前記サブジェクト側信号制御ユニットが実行に戻ることを決定したとき、前記サブジェクト状態を前記ターゲット状態に再変換するようにさらに構成される、請求項6に記載のコンピュータ・システム。
  8. 前記複数のサブジェクト側信号処理サブユニットの各々は、
    前記例外信号を受け取り、この例外信号を処理するかどうかを決定するように構成された入口ユニットと、
    前記実行が前記例外信号に応答して異なるように再開するように前記サブジェクト状態を選択的に修正することを含めて、前記入口ユニットが決定したときに、前記サブジェクト状態に関する前記例外信号における所定の信号処理機能を実施するように構成された信号処理ユニットと、
    前記実行に戻る要求又は前記例外信号を渡す要求のいずれかを出力するように構成された出口ユニットと、
    を備える、請求項6に記載のコンピュータ・システム。
  9. 前記信号制御ユニットは、前記例外信号についての異なる配送パスを決定するために、前記配送パス選択ユニットを動的に再構成するように構成される、請求項1に記載のコンピュータ・システム。
  10. 少なくとも1つのプロセッサを有するコンピュータ・システムにおいて例外信号を処理する方法であって、前記方法は、
    サブジェクト・コードを前記少なくとも1つのプロセッサによって実行可能なターゲット・コードに変換するコンピュータ実装ステップと、
    前記少なくとも1つのプロセッサ上で前記ターゲット・コードを実行するコンピュータ実装ステップと、
    前記ターゲット・コードの実行と関連して例外信号を生成するコンピュータ実装ステップと、
    前記例外信号に関する信号配送パスを決定するコンピュータ実装ステップであって、前記信号配送パスが複数の信号処理サブユニットの中から選択された信号処理サブユニットのグループを指定する、ステップと、
    前記信号配送パスに従って、前記例外信号を前記グループ内の前記信号処理サブユニットの第1のものに配送するコンピュータ実装ステップと、
    前記信号処理サブユニットにおいて前記信号を処理するかどうかを決定し、処理する場合、前記例外を処理するために前記信号処理サブユニットにおいて前記信号を処理するコンピュータ実装ステップと、
    実行に戻ることを要求するかどうかを判断し、要求する場合、実行に戻るか、又は前記信号配送パスに従って前記例外信号を前記グループの次の信号処理サブユニットに渡すコンピュータ実装ステップと、
    前記グループ内の次の信号処理サブユニットと関連して前記信号を処理するかどうかを決定すること及び前記実行に戻ることを要求するかどうかを判断することを繰り返すコンピュータ実装ステップと、
    を含む方法。
  11. 前記例外信号に関する前記コンピュータ・システムの実行の状態に関連する情報を含むターゲット状態データ構造を提供するコンピュータ実装ステップと、
    前記ターゲット状態データ構造を選択的に修正することを含めて、前記ターゲット状態データ構造信号に関して前記信号処理サブユニットにおいて前記例外信号を処理するコンピュータ実装ステップと、
    をさらに含み、
    前記実行に戻ることを要求するかどうかの前記判断実行に戻ることを要求すると判断した場合、前記ターゲット状態データ構造に従って実行に戻る、請求項10に記載の方法。
  12. 前記例外信号をサブジェクト側例外処理ユニットに選択的に渡すコンピュータ実装ステップと、
    前記ターゲット状態データ構造をサブジェクト状態データ構造に変換するコンピュータ実装ステップと、
    前記サブジェクト側例外処理ユニットにおいて前記サブジェクト状態データ構造に関する前記例外信号を処理するコンピュータ実装ステップと、
    をさらに含む、請求項11に記載の方法。
  13. 少なくとも1つのプロセッサを有するコンピュータ・システムにおいて例外信号を処理するコンピュータ・プログラムであって、前記コンピュータ・システムに、請求項10〜12のいずれか一項に記載の方法の各コンピュータ実装ステップを実行させる、前記コンピュータ・プログラム
  14. 請求項13に記載のコンピュータ・プログラムを格納したコンピュータ可読記録媒体。
JP2010503597A 2007-04-19 2008-04-15 コンピュータ・システムにおいて例外信号を処理するための装置及び方法 Expired - Fee Related JP5077605B2 (ja)

Applications Claiming Priority (5)

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
GB0707528.6 2007-04-19
US11/810,050 2007-06-04
US11/810,050 US20080263342A1 (en) 2007-04-19 2007-06-04 Apparatus and method for handling exception signals in a computing system
PCT/GB2008/050259 WO2008129315A1 (en) 2007-04-19 2008-04-15 Apparatus and method for handling exception signals in a computing system

Publications (2)

Publication Number Publication Date
JP2010525440A JP2010525440A (ja) 2010-07-22
JP5077605B2 true JP5077605B2 (ja) 2012-11-21

Family

ID=38135039

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010503597A Expired - Fee Related JP5077605B2 (ja) 2007-04-19 2008-04-15 コンピュータ・システムにおいて例外信号を処理するための装置及び方法

Country Status (7)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8517068B2 (en) 2007-09-14 2013-08-27 Compagnie Generale Des Etablissements Michelin Non-pneumatic elastic wheel
US9062768B2 (en) 2012-07-20 2015-06-23 Federal-Mogul Corporation Piston with oil cooling passage and method of construction thereof

Families Citing this family (12)

* 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
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
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 山东云海国创云计算装备产业创新中心有限公司 一种片上数据处理系统、方法、服务器及电子设备

Family Cites Families (21)

* 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
WO2000022521A1 (en) 1998-10-10 2000-04-20 The Victoria University Of Manchester Program code conversion
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
RU2005115082A (ru) * 2002-11-18 2006-01-20 Арм Лимитед (Gb) Типы исключительных ситуаций в защищенной системе обработки
US7536682B2 (en) 2003-04-22 2009-05-19 International Business Machines Corporation Method and apparatus for performing interpreter optimizations during program code conversion
GB2411990B (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
GB2425372B (en) * 2005-04-20 2007-06-13 Transitive Ltd 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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8517068B2 (en) 2007-09-14 2013-08-27 Compagnie Generale Des Etablissements Michelin Non-pneumatic elastic wheel
US9062768B2 (en) 2012-07-20 2015-06-23 Federal-Mogul Corporation Piston with oil cooling passage and method of construction thereof

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5077605B2 (ja) コンピュータ・システムにおいて例外信号を処理するための装置及び方法
JP5263702B2 (ja) プログラム・コードを変換するためのコンピュータ・システム、方法、及びコンピュータ可読記録媒体
US9043816B2 (en) Handling dynamically linked function calls with respect to program code conversion
JP5182815B2 (ja) プログラム・コード変換において例外を正確に処理するための方法、並びにその装置及びコンピュータ・プログラム
CN102165428B (zh) 软件应用性能增强
US9495136B2 (en) Using aliasing information for dynamic binary optimization
US8458674B2 (en) Method and apparatus for handling exceptions during binding to native code
JP5284585B2 (ja) トランスレータによって対象プログラム・コードを目的コードにトランスレーションしながら、目的コードを実行する間に直面する例外を処理する方法並びにそのトランスレータ装置及びコンピュータ・プログラム
US20040255279A1 (en) Block translation optimizations for program code conversation
JP2007529063A (ja) ネイティブ結合を行なうための方法および装置
Dam et al. Machine code verification of a tiny ARM hypervisor
Cifuentes et al. Experience in the design, implementation and use of a retargetable static binary translation framework
der Rieden et al. CVM–a verified framework for microkernel programmers
JP5128602B2 (ja) プログラムコード変換に関して動的にリンクされた関数呼び出しを行うための方法及び装置
US8286144B2 (en) Administering a process filesystem with respect to program code conversion
Butler EXTENDED NUMERIC REPRESENTATIONS IN WEB ASSEMBLY
Paul et al. A Generic Operating System Kernel
von Mayrhauser et al. Teaching engineering disciplines to tool developers
Kastinger Piero Ploner (pploner@ cosy. sbg. ac. at), Michael Wallner (mwallner@ cosy. sbg. ac. at) University of Salzburg, Department of Computer Sciences

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100614

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120608

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120626

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120628

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120628

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120801

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120801

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120801

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120814

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5077605

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees