説明

エミュレータ、エミュレータにおけるアドレス計算例外検出方法、プログラム

【課題】アドレス計算例外の発生の有無を検出する例外チェックに要する処理を削減し、高速にアドレス計算を行う。
【解決手段】プログラム制御部は、エミュレーション対象アーキテクチャのアドレスを、上位アドレスと下位アドレスとの間に1ビットのCビットを配置したアドレスに変換した上でアドレス計算を行い、アドレス計算後のアドレスがTLBにエントリされているか判定する。アドレス計算後のアドレスがTLBにエントリされていない場合はTLBフォルトハンドラに移行し、TLB制御部が、Cビットの値に基づいてアドレス計算において上位アドレスからの桁下がりまたは上位アドレスへの桁上がりが発生したか否かを検出する。桁下がりまたは桁上がりが発生していれば、アドレス計算例外処理ルーチンに移行し、発生していなければ、アドレス計算後のアドレスについてTLB登録を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、エミュレータ、エミュレータにおけるアドレス計算例外検出方法、プログラムに関する。
【背景技術】
【0002】
エミュレーションでは、あるアーキテクチャ(以下、エミュレーション対象アーキテクチャと称する)上で動作していたソフトウェアを、異なるアーキテクチャ(以下、実アーキテクチャと称する)上で動作させる。
【0003】
実アーキテクチャにおいては、エミュレーションを行う場合、エミュレーション対象アーキテクチャのアドレスを実アーキテクチャの物理アドレスへ変換するアドレス計算を行う。そして、アドレス計算後の実アーキテクチャの物理アドレスに相当する主記憶装置の物理アドレスにアクセスし、上記ソフトウェアを実アーキテクチャ上で動作させるための各種データの読み書きを行う。
【0004】
ところで、エミュレーション対象アーキテクチャのアドレスは、上位アドレスと下位アドレスとで構成されている。実アーキテクチャにおいては、上記のアドレス計算において、エミュレーション対象アーキテクチャのアドレスに所定のアドレス値を加算または減算する。その結果、下位アドレスから上位アドレスへの桁上がりが発生する場合があるが、この場合をアドレス計算例外が発生したと定義する。同様に、上位アドレスから下位アドレスへの桁下がりが発生した場合もアドレス計算例外が発生したと定義する。
【0005】
また、実アーキテクチャにおいては、上記のアドレス計算の過程でアドレス計算例外の発生の有無を検出する例外チェックを行う必要があり、例えば、実アーキテクチャにおける例外チェックは、エミュレーション制御プログラムに従って行われる。この種のアドレス例外検出方法の一例は、特許文献1に開示されている。
【特許文献1】特開平7−6095号公報(第2頁、段落[0007])
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、従来のアドレス例外検出方法においては、アドレス計算を行う毎に、アドレス計算前後のアドレスを比較し、アドレス例外が発生したか否かの例外チェックを行っていた。そのため、アドレス計算を行ってから主記憶装置にアクセスするまでのステップ数が多くなることによりオーバーヘッドがきわめて大きくなり、エミュレーション制御プログラムの実行速度を低下させるため、実用的な方法ではなかった。
【0007】
本発明の目的は、アドレス計算例外の発生の有無を検出する例外チェックに要する処理を削減し、高速にアドレス計算を行うことができるエミュレータ、エミュレータにおけるアドレス計算例外検出方法、プログラムを提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するために本発明は、
実アーキテクチャ上でエミュレーション対象アーキテクチャのエミュレーションを行うエミュレータであって、
エミュレーション対象アーキテクチャアドレス形式のアドレスを、当該アドレスの上位アドレスが格納されたビット列と下位アドレスが格納されたビット列との間に1ビットの第1ビットを配置した実アーキテクチャアドレス形式に変換し、実アーキテクチャアドレス形式のアドレスに所定のアドレス値を加算または減算するアドレス計算を行い、アドレス計算後のアドレスがTLBにエントリされているか判定するプログラム制御部と、
アドレス計算後のアドレスがTLBにエントリされていない場合、前記第1ビットの値に基づいて、アドレス計算において上位アドレスから下位アドレスへの桁下がりまたは下位アドレスから上位アドレスへの桁上がりが発生したか否かを検出するTLB制御部とを有することを特徴とするものである。
【0009】
この構成によれば、アドレス計算毎に、アドレス計算において桁下がりまたは桁上がりが発生したか否かを検出する例外チェックを行わずに、アドレス計算後のアドレスによるTLBフォルトが発生した時点で例外チェックを行うため、TLBヒットした場合には例外チェック処理を行う必要がなくなる。それにより、例外チェックにかかる処理を削減することができ、高速にアドレス計算ができる。また、TLBフォルトが発生した時点で例外チェックを行うため、例外チェックのためのコーディング量を削減することもできる。
【0010】
また、前記TLB制御部は、アドレス計算において桁下がりまたは桁上がりが発生していない場合、アドレス計算後の実アーキテクチャアドレス形式のアドレスと、当該アドレスを変換した実アーキテクチャ物理アドレス形式のアドレスとを、両者のアドレスの下位アドレスを0にリセットした上でアドレス変換情報としてTLBに登録し、
前記プログラム制御部は、アドレス計算後のアドレスがTLBにエントリされている場合、アドレス計算後の実アーキテクチャアドレス形式のアドレスを、TLBのアドレス変換情報に基づいて実アーキテクチャ物理アドレス形式に変換することとしても良い。
【0011】
この構成によれば、上位アドレスが共通する同一ページ内のアドレス毎にTLBへのアドレス変換情報の登録を行わなくても、同一ページ内のアドレスについてTLBへの登録を1回だけ行えば、以降、同一ページ内の他アドレスについてもTLBヒットになるため、例外チェックが不要となる。
【0012】
また、前記プログラム制御部は、実アーキテクチャアドレス形式への変換に際して、当該実アーキテクチャアドレス形式のアドレスに、上位アドレスが格納されたビット列のさらに上位にエミュレーション対象アーキテクチャアドレス形式の種別を識別する識別子が格納されるビット列をさらに配置するとともに、識別子が格納されるビット列と上位アドレスが格納されるビット列との間に1ビットの第2ビットをさらに配置し、
前記TLB制御部は、前記識別子に基づいてエミュレーション対象アーキテクチャアドレス形式の種別を判定し、アドレス計算において桁下がりまたは桁上がりが発生したか否かを検出するために前記第1ビットの値をチェックするか否かを判定し、チェックすると判定した場合に前記第1ビットの値に基づいてアドレス計算において桁下がりまたは桁上がりが発生したか否かを検出することとしても良い。
【0013】
この構成によれば、アドレス計算を行っても、エミュレーション対象アーキテクチャアドレス形式の種別を識別するための識別子の値が第2ビットの存在により変更されないアドレス形式になっている。つまり、例えば、アドレス計算時に減算を行った結果がマイナス値になったとしても、その影響を受けて変更されるのは第2ビットのみで、識別子の値は変更されない。よって、エミュレーション対象アーキテクチャアドレス形式の種別の判定およびアドレス計算による桁上がり、桁下がりの発生の検出を正しく行うことが可能となる。
【発明の効果】
【0014】
上記のように構成された本発明によれば、アドレス計算毎に、アドレス計算において桁下がりまたは桁上がりが発生したか否かを検出する例外チェックを行わずに、アドレス計算後のアドレスでのTLBフォルトが発生した時点で例外チェックを行うため、アドレス計算例外の発生の有無を検出する処理を削減することができ、それにより高速にアドレス計算を行うことができるという効果が得られる。
【発明を実施するための最良の形態】
【0015】
以下に、本発明を実施するための最良の形態について図面を参照して説明する。
【0016】
(第1の実施の形態)
図1を参照すると、本発明のエミュレータは、実アーキテクチャ上で、エミュレーション対象アーキテクチャのエミュレーションを行うものであり、実アーキテクチャ側に設けられている。このエミュレータは、中央演算処理装置(プロセッサ)10と、主記憶制御装置11と、主記憶装置12とから構成される。
【0017】
主記憶装置12は、エミュレーション対象アーキテクチャ上で動作していたソフトウェアを実アーキテクチャ上で動作させるための各種データが読み書きされるエミュレーション対象アーキテクチャ用主記憶エリア15と、エミュレーション制御プログラムが格納されるエミュレーション制御プログラム格納エリア14と、中央演算処理装置10によるエミュレーション処理用のプロセッサ制御エリア13とに分割されている。なお、エミュレーション対象アーキテクチャ用主記憶エリア15は、ベースアドレス1を下限アドレスとしている。
【0018】
中央演算処理装置10は、プログラム制御部101と、TLB(Translation Look−aside Buffer)制御部102とから構成される。この中央演算処理装置10は、主記憶制御装置11を介して主記憶装置12内のプロセッサ制御エリア13およびエミュレーション制御プログラム格納エリア14にアクセスし、プロセッサ制御エリア13上でエミュレーション制御プログラムを実行し、エミュレーション対象アーキテクチャのエミュレーションを行う。
【0019】
なお、TLB制御部102は、TLB103を備えており、エミュレーションの過程でTLBフォルトが発生した場合に、割り込みハンドラである後述のTLBフォルトハンドラを実行する。これ以外の処理はプログラム制御部101にて実行される。
【0020】
以下、本実施形態のアドレス計算例外検出方法について、図2および図3を参照して説明する。なお、図2および図3の各ステップの処理は、中央演算処理装置10内のプログラム制御部101およびTLB制御部102が、主記憶制御装置11を介して主記憶装置12にアクセスし、エミュレーション制御プログラム格納エリア14に格納されたエミュレーション制御プログラムにしたがって実行される処理である。
【0021】
図2を参照すると、まず、プログラム制御部101は、エミュレーション対象アーキテクチャのアドレスAを取得する(ステップ201)。ここで取得されたアドレスAの形式は、エミュレーション対象アーキテクチャアドレス形式211で示されるように、上位アドレスのビット列と下位アドレスのビット列とから構成されている。
【0022】
次に、プログラム制御部101は、アドレスAを実アーキテクチャアドレス形式のアドレスに変換する(ステップ202)。ここで変換されたアドレスAの実アーキテクチャアドレス形式は、実アーキテクチャアドレス形式212で示されるように、上位アドレスのビット列と下位アドレスのビット列との間に、第1ビットである1ビットのCビットを配置した構成になっている。なお、ステップ202では、Cビットには0を設定する。
【0023】
次に、プログラム制御部101は、アドレスAに対して所定のアドレス値を加算または減算するアドレス計算を行い、アドレス計算後のアドレスをアドレスBとする(ステップ203)。なお、アドレス計算において加算または減算のどちらを実行するかはエミュレーション制御プログラムの内容に依存する。ここでのアドレス計算の前提条件としては、アドレスAに対して加算または減算するアドレス値が、アドレスAの下位アドレスのビット幅以内の値である必要がある。アドレスAに対する加算の結果、上位アドレスへの桁上がりが発生した場合、Cビットは1となり、アドレスAに対する減算の結果、上位アドレスからの桁下がりが発生した場合も、Cビットが1となる。桁上がり、桁下がりが発生しない場合は、Cビットは0のままである。
【0024】
次に、プログラム制御部101は、アドレスBでエミュレーション対象アーキテクチャ用主記憶エリア15にアクセスするために、アドレスBでTLB103を索引し、アドレスBがエントリされていなければ、TLBフォルトが発生し(ステップ204)、ステップ205に移行してTLBフォルトハンドラが実行される(ステップ205)。ここでは、TLB103にアドレスBがエントリされていないため、TLBフォルトとなる。
【0025】
図3を参照すると、TLBフォルトハンドラにおいては、まず、TLB制御部102は、アドレスBのCビットをチェックする(ステップ301)。Cビットが1であれば、アドレス計算例外が発生したと判断して例外処理ルーチンへ移行する(ステップ302)。一方、Cビットが0であれば、アドレス計算例外の発生なしと判断し、アドレスBを実アーキテクチャ物理アドレス形式213に変換して実アーキテクチャ物理アドレスを生成し(ステップ303)、TLB103にアドレスBのアドレス変換情報を登録し(ステップ304)、TLBフォルトハンドラからステップ204の処理へ戻る。
【0026】
なお、ステップ303でTLB103に登録されるアドレス変換情報は、アドレスBのアドレス変換前のアドレス(実アーキテクチャアドレス形式212)とアドレスBのアドレス変換後のアドレス(実アーキテクチャ物理アドレス形式213)とである。ただし、アドレスBのアドレス変換前後のいずれのアドレスも、下位アドレスを0にリセットした上で登録を行う。すなわち、TLB103には、上位アドレスが共通するページ単位でアドレス変換情報を登録するため、以降、同一ページ内のアドレスでTLB103を索引した場合にはTLBヒットとなる。
【0027】
再度図2を参照すると、プログラム制御部101は、ステップ204において、アドレスBでTLB103を再度索引する。ここでは、ステップ304でTLB103にアドレスBのアドレス変換情報が登録されているため、TLBヒットとなる。そのため、TLB103のアドレス変換情報に従って、アドレスBから実アーキテクチャ物理アドレス形式213の実アーキテクチャ物理アドレスを生成し、エミュレーション対象アーキテクチャ用主記憶エリア15の該当する物理アドレス部分にアクセスする(ステップ206)。
【0028】
ここで、エミュレーション制御プログラム格納エリア14に記憶されたエミュレーション制御プログラムには、以降も、ステップ203〜206と同様の処理を繰り返し行うことがプログラミングされているものとする。
【0029】
そのため、プログラム制御部101は、続いて、アドレスBに対して加算または減算によるアドレス計算を行って、アドレス計算後のアドレスをアドレスCとし(ステップ207)、アドレスCでTLB103を索引し、TLBフォルトが発生したか判定する(ステップ208)。ここで、アドレスCは、アドレスBと上位アドレスが共通する同一ページ内のアドレスであるが、アドレスBのアドレス変換情報はステップ304でTLB103に登録されているため、ステップ208ではTLBヒットになる。よって、ここでは、TLBフォルトハンドラ(ステップ209)には移行せずに、エミュレーション対象アーキテクチャ用主記憶エリア15におけるアドレスCに基づく実アーキテクチャ物理アドレスの該当部分へのアクセスが行われる(ステップ210)。
【0030】
従って、同一ページ内のアドレスでエミュレーション対象アーキテクチャ用主記憶エリア15へのアクセスを行う場合、同一ページ内のアドレス毎にTLB103への登録を行う必要はなく、同一ページ内のアドレスについてTLB103への登録を1回だけ行えば、以降、アドレス計算を行ってからTLB103を索引すると、TLBヒットになるため、アドレス計算例外の発生の有無を検出する例外チェックが不要となる。
【0031】
上述したように本実施形態においては、ステップ203,207でアドレス計算を行う時には例外チェックを行わず、TLBフォルトが発生した時点でTLBフォルトハンドラ内にて例外チェックを行うため、例外チェックによる性能低下を削減でき、高速にアドレス計算を行うことができるという効果が得られる。
【0032】
また、TLBフォルトハンドラのみでチェックを行うため、コーディング量を削減できるという効果も得られる。
【0033】
(第2の実施形態)
本実施形態は、エミュレータの構成自体は図1に示した第1の実施形態と同様であるが、実アーキテクチャアドレス形式が第1の実施形態とは異なる。
【0034】
以下、本実施形態のアドレス計算例外検出方法について、図4および図5を参照して説明する。なお、図4および図5の各ステップの処理は、中央演算処理装置10内のプログラム制御部101およびTLB制御部102が、主記憶制御装置11を介して主記憶装置12にアクセスし、エミュレーション制御プログラム格納エリア14に格納されたエミュレーション制御プログラムにしたがって実行される処理である。
【0035】
図4を参照すると、まず、図2に示したステップ201と同様のステップ401において、エミュレーション対象アーキテクチャのアドレスAが取得される。ここで取得されたアドレスAの形式は、エミュレーション対象アーキテクチャアドレス形式411で示されるように、図2に示したエミュレーション対象アーキテクチャアドレス形式211と同様である。
【0036】
次に、プログラム制御部101は、アドレスAを実アーキテクチャアドレス形式のアドレスに変換する(ステップ402)。ここで変換されたアドレスAの実アーキテクチャアドレス形式は、実アーキテクチャアドレス形式412で示されるように、図2と同様の上位アドレス、Cビット、および下位アドレスに加えて、上位アドレスが格納されたビット列の上位に識別子が格納されるビット列である識別子フィールドを追加して配置するとともに、識別子フィールドと上位アドレスが格納されるビット列との間に第2ビットである1ビットのGビットを追加して配置している。識別子は、エミュレーション対象アーキテクチャの主記憶アクセス種別が複数存在する場合において、主記憶アクセス種別を識別するための識別子である。主記憶アクセス種別とは、言い換えれば、エミュレーション対象アーキテクチャアドレス形式の種別のことである。図4では、エミュレーション対象アーキテクチャアドレス形式を、エミュレーション対象アーキテクチャアドレス形式411で示されるような絶対アドレス形式としているが、これ以外にも、実効アドレス形式、システム名アクセスアドレス形式などがある。Gビットは、次段のステップ403のアドレス計算において識別子の内容が変更されないために設けたものである。なお、ステップ402では、Cビットには0を設定し、Gビットには1を設定する。
【0037】
次に、プログラム制御部101は、アドレスAに対して所定のアドレス値を加算または減算するアドレス計算を行い、アドレス計算後のアドレスをアドレスBとする(ステップ403)。ここでのアドレス計算において加算または減算するアドレス値の前提条件は、図2のステップ203と同様であり、アドレス計算において桁上がりまたは桁下がりが発生すると、Cビットが1となる。ここで、アドレスAからアドレス値を減算した場合に、アドレス計算結果はマイナス値となることがある(例えば、アドレスAの上位アドレスおよび下位アドレスが共に0で、減算するアドレス値が1である場合)。アドレス計算結果がマイナス値になった場合、Gビットが存在しなければ、識別子フィールドの内容が変更されてしまう。しかし、Gビットに1が設定されているため、アドレス計算結果がマイナス値となってもGビットが0になるだけで、識別子フィールドの内容は変更されない。
【0038】
次に、図2に示したステップ204と同様のステップ404において、アドレスBでTLB103が索引され、TLBフォルトが発生したか判定される(ステップ404)。ここでは、TLB103にアドレスBがエントリされていないため、TLBフォルトとなり、ステップ405のTLBフォルトハンドラに移行する。
【0039】
図5を参照すると、TLBフォルトハンドラにおいては、まず、TLB制御部102は、識別子に基づいて主記憶アクセス種別を判定し、アドレス計算例外が発生したか否かを検出するためにCビットをチェックするか否かを判定する(ステップ501)。ここでは、主記憶アクセスの種別、すなわちエミュレーション対象アーキテクチャアドレス形式の種別が、変換後に実アーキテクチャアドレス形式412の形式になる種別であるため、アドレスBのCビットをチェックする(ステップ502)。そして、Cビットが1であれば、アドレス計算例外が発生したと判断して例外処理ルーチンへ移行する(ステップ503)。本実施形態においては、上述したように、アドレス計算によっても識別子フィールドの内容はGビットの存在により変更されないため、ステップ501で識別子を正しく判定することができる。さらに、Cビットが1となるため、ステップ502でアドレス計算例外の発生を正しく検出することができる。一方、Cビットが0であれば、図3に示したステップ303,304と同様のステップ504,505の処理が行われた後、TLBフォルトハンドラからステップ404の処理へ戻る。
【0040】
再度図4を参照すると、以降は、図2に示したステップ204〜210と同様のステップ404〜410の処理が行われる。
【0041】
上述したように本実施形態においては、アドレス計算を行っても、主記憶アクセス種別を識別するための識別子の値がGビットの存在により変更されないアドレス形式になっているため、エミュレーション対象アーキテクチャの主記憶アクセス種別が複数存在していても、主記憶アクセス種別の判定およびアドレス計算例外の発生の検出を正しく行うことが可能となる。
【0042】
なお、Cビットの位置は、上位アドレスと下位アドレスとの間にあることが必須である。ただし、下位アドレスのビット幅は、主記憶アクセスの種別、すなわちエミュレーション対象アドレスに応じて異なるため、Cビットの位置は、エミュレーション対象アドレスの下位アドレスのビット幅に応じて変更することが可能である。それにより、サイズの異なるセグメントへのセグメント境界外が発生した時のアクセス計算例外の発生検出にも適用可能である。ただし、アドレス計算時に加算または減算するアドレス値は、上述したように、Cビット位置を越えた値、すなわち下位アドレスのビット幅を超える値を使用できない。これは、アドレス計算例外の発生を検出しなければならないケースにおいて、Cビットが0という状態が発生してしまうことを防止するためである。
【図面の簡単な説明】
【0043】
【図1】本発明のエミュレータの構成を示す図である。
【図2】本発明の第1の実施形態によるアドレス計算例外検出方法を説明する図である。
【図3】本発明の第1の実施形態によるアドレス計算例外検出方法において、TLBフォルト発生時に割り込まれるTLBフォルトハンドラを説明する図である。
【図4】本発明の第2の実施形態によるアドレス計算例外検出方法を説明する図である。
【図5】本発明の第2の実施形態によるアドレス計算例外検出方法において、TLBフォルト発生時に割り込まれるTLBフォルトハンドラを説明する図である。
【符号の説明】
【0044】
10 中央演算処理装置(プロセッサ)
11 主記憶制御装置
12 主記憶装置
13 プロセッサ制御エリア
14 エミュレーション制御プログラム格納エリア
15 エミュレーション対象アーキテクチャ用主記憶エリア
101 プログラム制御部
102 TLB制御部
103 TLB

【特許請求の範囲】
【請求項1】
実アーキテクチャ上でエミュレーション対象アーキテクチャのエミュレーションを行うエミュレータであって、
エミュレーション対象アーキテクチャアドレス形式のアドレスを、当該アドレスの上位アドレスが格納されたビット列と下位アドレスが格納されたビット列との間に1ビットの第1ビットを配置した実アーキテクチャアドレス形式に変換し、実アーキテクチャアドレス形式のアドレスに所定のアドレス値を加算または減算するアドレス計算を行い、アドレス計算後のアドレスがTLBにエントリされているか判定するプログラム制御部と、
アドレス計算後のアドレスがTLBにエントリされていない場合、前記第1ビットの値に基づいて、アドレス計算において上位アドレスから下位アドレスへの桁下がりまたは下位アドレスから上位アドレスへの桁上がりが発生したか否かを検出するTLB制御部とを有する、エミュレータ。
【請求項2】
前記TLB制御部は、アドレス計算において桁下がりまたは桁上がりが発生していない場合、アドレス計算後の実アーキテクチャアドレス形式のアドレスと、当該アドレスを変換した実アーキテクチャ物理アドレス形式のアドレスとを、両者のアドレスの下位アドレスを0にリセットした上でアドレス変換情報としてTLBに登録し、
前記プログラム制御部は、アドレス計算後のアドレスがTLBにエントリされている場合、アドレス計算後の実アーキテクチャアドレス形式のアドレスを、TLBのアドレス変換情報に基づいて実アーキテクチャ物理アドレス形式に変換する、請求項1に記載のエミュレータ。
【請求項3】
前記プログラム制御部は、実アーキテクチャアドレス形式への変換に際して、当該実アーキテクチャアドレス形式のアドレスに、上位アドレスが格納されたビット列のさらに上位にエミュレーション対象アーキテクチャアドレス形式の種別を識別する識別子が格納されるビット列をさらに配置するとともに、識別子が格納されるビット列と上位アドレスが格納されるビット列との間に1ビットの第2ビットをさらに配置し、
前記TLB制御部は、前記識別子に基づいてエミュレーション対象アーキテクチャアドレス形式の種別を判定し、アドレス計算において桁下がりまたは桁上がりが発生したか否かを検出するために前記第1ビットの値をチェックするか否かを判定し、チェックすると判定した場合に前記第1ビットの値に基づいてアドレス計算において桁下がりまたは桁上がりが発生したか否かを検出する、請求項1または2に記載のエミュレータ。
【請求項4】
実アーキテクチャ上でエミュレーション対象アーキテクチャのエミュレーションを行うエミュレータにおいて、エミュレーション時のアドレス計算で上位アドレスから下位アドレスへの桁下がりまたは下位アドレスから上位アドレスへの桁上がりを示すアドレス計算例外が発生したことを検出するアドレス計算例外検出方法であって、
エミュレーション対象アーキテクチャアドレス形式のアドレスを、当該アドレスの上位アドレスが格納されたビット列と下位アドレスが格納されたビット列との間に1ビットの第1ビットを配置した実アーキテクチャアドレス形式に変換し、実アーキテクチャアドレス形式のアドレスに所定のアドレス値を加算または減算するアドレス計算を行い、アドレス計算後のアドレスがTLBにエントリされているか判定する第1のステップと、
アドレス計算後のアドレスがTLBにエントリされていない場合、前記第1ビットの値に基づいて、アドレス計算において前記アドレス計算例外が発生したか否かを検出する第2のステップとを有する、アドレス計算例外検出方法。
【請求項5】
前記第2のステップでは、アドレス計算において桁下がりまたは桁上がりが発生していない場合、アドレス計算後の実アーキテクチャアドレス形式のアドレスと、当該アドレスを変換した実アーキテクチャ物理アドレス形式のアドレスとを、両者のアドレスの下位アドレスを0にリセットした上でアドレス変換情報としてTLBに登録し、
前記第1のステップでは、アドレス計算後のアドレスがTLBにエントリされている場合、アドレス計算後の実アーキテクチャアドレス形式のアドレスを、TLBのアドレス変換情報に基づいて実アーキテクチャ物理アドレス形式に変換する、請求項4に記載のアドレス計算例外検出方法。
【請求項6】
前記第1のステップでは、実アーキテクチャアドレス形式への変換に際して、当該実アーキテクチャアドレス形式のアドレスに、上位アドレスが格納されたビット列のさらに上位にエミュレーション対象アーキテクチャアドレス形式の種別を識別する識別子が格納されるビット列をさらに配置するとともに、識別子が格納されるビット列と上位アドレスが格納されるビット列との間に1ビットの第2ビットをさらに配置し、
前記第2のステップでは、前記識別子に基づいてエミュレーション対象アーキテクチャアドレス形式の種別を判定し、アドレス計算において桁下がりまたは桁上がりが発生したか否かを検出するために前記第1ビットの値をチェックするか否かを判定し、チェックすると判定した場合に前記第1ビットの値に基づいてアドレス計算において前記アドレス計算例外が発生したか否かを検出する、請求項4または5に記載のアドレス計算例外検出方法。
【請求項7】
実アーキテクチャ上でエミュレーション対象アーキテクチャのエミュレーションを行うエミュレータに、
エミュレーション対象アーキテクチャアドレス形式のアドレスを、当該アドレスの上位アドレスが格納されたビット列と下位アドレスが格納されたビット列との間に1ビットの第1ビットを配置した実アーキテクチャアドレス形式に変換し、実アーキテクチャアドレス形式のアドレスに所定のアドレス値を加算または減算するアドレス計算を行い、アドレス計算後のアドレスがTLBにエントリされているか判定する第1のステップと、
アドレス計算後のアドレスがTLBにエントリされていない場合、前記第1ビットの値に基づいて、アドレス計算において上位アドレスから下位アドレスへの桁下がりまたは下位アドレスから上位アドレスへの桁上がりが発生したか否かを検出する第1のステップとを実行させる、プログラム。
【請求項8】
前記第2のステップでは、アドレス計算において桁下がりまたは桁上がりが発生していない場合、アドレス計算後の実アーキテクチャアドレス形式のアドレスと、当該アドレスを変換した実アーキテクチャ物理アドレス形式のアドレスとを、両者のアドレスの下位アドレスを0にリセットした上でアドレス変換情報としてTLBに登録し、
前記第1のステップでは、アドレス計算後のアドレスがTLBにエントリされている場合、アドレス計算後の実アーキテクチャアドレス形式のアドレスを、TLBのアドレス変換情報に基づいて実アーキテクチャ物理アドレス形式に変換する、請求項7に記載のプログラム。
【請求項9】
前記第1のステップでは、実アーキテクチャアドレス形式への変換に際して、当該実アーキテクチャアドレス形式のアドレスに、上位アドレスが格納されたビット列のさらに上位にエミュレーション対象アーキテクチャアドレス形式の種別を識別する識別子が格納されるビット列をさらに配置するとともに、識別子が格納されるビット列と上位アドレスが格納されるビット列との間に1ビットの第2ビットをさらに配置し、
前記第2のステップでは、前記識別子に基づいてエミュレーション対象アーキテクチャアドレス形式の種別を判定し、アドレス計算において桁下がりまたは桁上がりが発生したか否かを検出するために前記第1ビットの値をチェックするか否かを判定し、チェックすると判定した場合に前記第1ビットの値に基づいてアドレス計算において桁下がりまたは桁上がりが発生したか否かを検出する、請求項7または8に記載のプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2006−252343(P2006−252343A)
【公開日】平成18年9月21日(2006.9.21)
【国際特許分類】
【出願番号】特願2005−70046(P2005−70046)
【出願日】平成17年3月11日(2005.3.11)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】