JP2000231495A - 仮想マシン - Google Patents

仮想マシン

Info

Publication number
JP2000231495A
JP2000231495A JP11033487A JP3348799A JP2000231495A JP 2000231495 A JP2000231495 A JP 2000231495A JP 11033487 A JP11033487 A JP 11033487A JP 3348799 A JP3348799 A JP 3348799A JP 2000231495 A JP2000231495 A JP 2000231495A
Authority
JP
Japan
Prior art keywords
instruction
virtual machine
memory
interpretation
data
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.)
Granted
Application number
JP11033487A
Other languages
English (en)
Other versions
JP3324542B2 (ja
Inventor
Toshiaki Fujii
利明 藤井
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP03348799A priority Critical patent/JP3324542B2/ja
Publication of JP2000231495A publication Critical patent/JP2000231495A/ja
Application granted granted Critical
Publication of JP3324542B2 publication Critical patent/JP3324542B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【課題】 模擬動作中における命令の読出処理及びデコ
ード処理の実行頻度を減少させ、インタプリタ方式にお
ける模擬動作の実行速度を高速化させる仮想マシンを提
供する。 【解決手段】 命令実行部1は、仮想マシンの命令の実
行を制御する。デコード結果キャッシュ格納部2は、命
令実行部1において実行する命令のデコード結果が記憶
される。擬似レジスタ格納部3は、仮想マシンの各レジ
スタの値が保持される。擬似メモリ格納部4は、仮想マ
シンのメモリの内容、すなわち命令のデータ等が記憶さ
れる。仮想マシンでマイクロプロッセッサの命令は、演
算の種類(オペコード),演算の対象となるレジスタの
番号,及びメモリのアドレス等の情報(オペランド)等
のフィールドで構成されている。ここで、それぞれのフ
ィールドは、ビット単位の長さを有する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ソフトウェアによ
り特定のマイクロプロセッサの動作を模擬(シミュレー
ション)する仮想マシンに関するものである。
【0002】
【従来の技術】近年、ソフトウェアによりマイクロプロ
セッサの動作を模擬するエミュレータ/仮想マシンの利
用が盛んになっている。このようなエミュレータ/仮想
マシンは、主に以下のような目的で使用されている。
【0003】・アプリケーションプログラムを本来対象
としているターゲットプロセッサまたはOS(オペレー
ティングシステム)以外の実行環境で利用する。 ・実行環境(ターゲットプロセッサまたはOS)に依存し
ないアプリケーション実行機構を提供する。 ・ハードウェア及び組み込みソフトウェア開発におい
て、試作ハードウェアの完成前に、組み込みソフトウェ
アを仮想マシン上で動作検証する。
【0004】使用目的や動作方式にもよるが、通常エミ
ュレータ/仮想マシンの実行速度は、模擬動作の対象と
なる実マイクロプロセッサの数分の1〜数10分の1であ
り、模擬動作の精度を向上させるため、実行速度の向上
が求められている。エミュレータ/仮想マシンの動作方
式は、主に以下に示す2種類に分類される。
【0005】・インタプリタ方式 模擬動作対象プロセッサ用の命令列を1命令づつメモリ
から読み出し、命令の動作を解釈して、擬似レジスタ/
擬似メモリに操作を加えることを繰り返す方式。この方
式においては、模擬動作対象のマイクロプロセッサの1
命令が、実行環境上のプロセッサにおける数10命令か
ら数100命令に相当してしまうため、模擬動作の実効
速度が低速である。
【0006】・コンバータ方式 模擬動作対象プロセッサ用の命令を、同等の動作を行う
実行環境で使用するプロセッサ用の命令にまとめて変換
し、変換後のプログラムを直接実行する方式。この方式
においては、模擬動作対象のマイクロプロセッサの1命
令が、実行環境上のプロセッサにおける数命令程度(単
純なレジスタ演算ならば1命令も可能)に変換されるた
め、インタプリタ方式に比較して高速である。
【0007】また、コンバータ方式では、元のプログラ
ムから実行環境で使用されるマイクロプロセッサ/OS
に可能なかぎり最適化したプログラムを得ることができ
るため、インタプリタ方式に比べ格段に高速化される。
従って、高速な実行が求められる場合には、コンバータ
方式を用いる場合が多い。
【0008】しかし、コンバータ方式は以下のような問
題点も含んでいる。 ・実行環境で使用するプロセッサの種類毎に変換プログ
ラムを開発しなければならず、複数の実行環境に対応す
るコンバータの開発には、多大な工数がかかる。 ・模擬動作対象プロセッサと実行環境用プロセッサのレ
ジスタ構成,メモリ構成,I/O(インプット/アウトプ
ット)方式,及び割り込み方式など違いから、プログラ
ムの変換では同等の動作を再現できない場合がある。
【0009】特にキャッシュやI/O,割り込みなどが関係
する組み込みソフトウェアの動作検証への適用は難し
い。一方、インタプリタ方式は、模擬動作の実効速度が
低速であるが、模擬動作対象のマイクロプロセッサのハ
ードウェア資源をソフトウェア上で擬似的に再現でき
る。このため、インタプリタ方式は、コンバータ方式に
比べ正確な動作の模擬的な再現が可能であり、組み込み
ソフトウェアの動作検証にも適用させ易い。
【0010】また、インタプリタ方式では、実行環境で
使用するマイクロプロセッサに依存した処理が、コンバ
ータ方式に比べ少ないため、移植性が高いという長所が
ある。さらに、インタープリタ方式とコンバータ方式と
を組み合わせ、最初はインタープリタ方式で実行しなが
ら、同時にコンバータ方式の命令の変換作業を行う仮想
マシンも存在する。上述した状況から、インタプリタ方
式に対するニーズも存在し、インタプリタ方式における
模擬動作の実効速度に対する高速化方法が必要とされて
いる。
【0011】
【発明が解決しようとする課題】上述したインタプリタ
方式では、 1. 命令のメモリからの読み出し 2. 命令のデコード(解釈:演算内容,演算対象レジスタ/
メモリの識別など) 3. 命令の実行 をソフトウェアにより順次繰り返す。
【0012】しかしながら、インタプリタ方式における
命令の上記デコード処理は、ビット抽出処理や複雑な条
件判定処理を多く含み、処理に必要な時間が非常に長い
重たい処理である。このため、命令の上記デコード処理
は、模擬動作の実行時間中のに大きな比重を有する処理
であり、模擬動作の実行時間を制限する原因の1つとな
っている。
【0013】本発明は、このような背景の下になされた
もので、模擬動作中における命令の読出処理及びデコー
ド処理の実行頻度を減少させ、インタプリタ方式におけ
る模擬動作の実行速度を高速化させる仮想マシンを提供
する事にある。
【0014】
【課題を解決するための手段】請求項1に記載の発明
は、命令レベルプロッセッサの動作をソフトウェアによ
り模擬する仮想マシンにおいて、複数の命令が記憶され
ている第1のメモリから読み出しを行う命令がすでに命
令レベルプロッセッサにおいて実行可能な解釈データへ
解釈されたか否かの検出を第2のメモリにおいて行う検
出部と、第1のメモリから前記命令レベルプロッセッサ
に対する命令の読み出しを行う命令読出部と、第1のメ
モリから読み出された前記命令を解釈し、解釈結果の前
記解釈データを前記第2のメモリへ書き込む命令解釈部
と、前記命令が解釈された前記解釈データを実行する実
行部とを具備することを特徴とする。
【0015】請求項2記載の発明は、請求項1記載の仮
想マシンにおいて、前記命令解釈過程が、前記解釈デー
タとこの解釈データの解釈前の前記命令のアドレスを示
すタグデータとを対応させ、前記キャッシュメモリへ書
き込むことを特徴とする。
【0016】請求項3記載の発明は、請求項1または請
求項2記載の仮想マシンにおいて、前記検出過程が、前
記タグデータと読み込まれる前記命令のアドレスのデー
タとを比較することにより、この命令が前記第2のメモ
リに記憶されている解釈データに対応するか否かを検出
することを特徴とする。
【0017】請求項4記載の発明は、請求項1ないし請
求項3のいずれかに記載の仮想マシンにおいて、前記検
出過程が、前記第2のメモリに記憶されている解釈デー
タが読み込まれる前記命令に対応すると判断した場合、
前記命令読込過程、前記命令解釈過程の動作を行わずに
解釈データの実行処理を実行過程に行わせることを特徴
とする。
【0018】本発明の特徴は、マイクロプロセッサの模
擬動作を、命令の読み出し(以後フェッチと呼ぶ)、命令
の解釈(以後デコードと呼ぶ)、解釈した命令の実行を1
命令毎に実行するインタプリタ方式の仮想マシンにおい
て、命令のデコード結果を保存するキャッシュ(請求項
における第2の記憶手段、図1のデコード結果キャッシ
ュ格納部2)を設けたことである。
【0019】インタプリタ方式の仮想マシンでは、通
常、命令フェッチ,命令デコード,命令実行のサイクルを
繰り返す。本発明では、デコード時にデコード結果と命
令のアドレスのデータとを、デコード結果キャッシュ格
納部2に保存し、同じアドレスが示す命令を再度実行す
る場合には、デコード結果キャッシュ格納部2からデコ
ード結果を取り出して利用することにより、命令フェッ
チ,命令デコードの処理を省略することができる。
【0020】
【発明の実施の形態】以下、図面を参照して本発明の実
施形態について説明する。図1は本発明の一実施形態に
よる仮想マシンの構成を示すブロック図である。この図
において、1は命令実行部(実行部、命令解釈部)であ
り、仮想マシンの命令の実行を制御する。2はデコード
結果キャッシュ格納部(第2のメモリ)であり、命令実
行部1において実行する命令のデコード結果が記憶され
る。
【0021】3は擬似レジスタ格納部であり、仮想マシ
ンの各レジスタの値が保持される。4は擬似メモリ格納
部(第1のメモリ)であり、仮想マシンのメモリの内
容、すなわち命令のデータ等が記憶される。仮想マシン
でマイクロプロッセッサの命令は、演算の種類(オペコ
ード),演算の対象となるレジスタの番号,及びメモリ
のアドレス等の情報(オペランド)等のフィールドで構
成されている。ここで、それぞれのフィールドは、ビッ
ト単位の長さを有する。
【0022】次に、図2を用いて仮想マシンで使用され
る命令の構成の一例を説明する。図2は、命令長32ビ
ットのマイクロプロセッサにおける命令のフィールド構
成の一例を示している。この命令のフィールド構成は、
「r1 <- r2 + r3 (r1にr2とr3との加算結果を代入)」の
ような命令のフィールド構成で、演算の種類(加算,減算
等)を示すオペコードOC,演算結果を格納するターゲッ
トレジスタの番号TRN(r1),演算元のデータを格納
するソースレジスタ番号1・SRN1(r2),ソースレ
ジスタ番号2・SRN2(r3)、キャリーなどの処理方
式及び符号の処理方式などを示すオプションOPで構成
されている。
【0023】次に、図3を用いてデコード結果キャッシ
ュ格納部2のデータ構成の一例を説明する。図3は、図
1に示すデコード結果格納部2の構成を示す概念図であ
る。ここで、デコード結果格納部2は、複数のエントリ
E0〜エントリE2N-1により構成されている(nは整
数)。また、エントリE0には、デコードされた命令の
アドレスを示すタグ情報T0と、命令のデコード結果D
EC0(0)〜デコード結果DEC0(2E-1)とValid
・V0が格納されている(Eは整数)。
【0024】デコード結果DEC0(0)〜デコード結果
DEC0(2E-1)は、連続した複数命令のデコード結果
が格納される。また、仮想マシンの動作開始時点では、
各エントリには有効なデコード結果が入っていない空の
状態であり、この空の状態と、デコード結果が格納され
た状態を区別するためのフラグであるValid・V0
が設けられている。ここで、例えば、フラグのVali
d・V0が「0」であれば、エントリE0は無効であ
り、逆に、フラグのValid・V0が「1」であれ
ば、エントリE0は有効である。
【0025】同様に、他のエントリE1〜エントリE2
N-1は、それぞれデコードされた命令のアドレスを示す
タグ情報T1〜タグ情報T2N-1と、命令のデコード結
果DEC1(0)〜デコード結果DEC2(2E-1),……,
DEC2N-1(0)〜デコード結果DEC2N-1(2E-1),
とValid・V2〜Valid・V2N-1が格納され
ている。Valid・V1〜Valid・V2N-1は、
Valid・V1と同様にデコード結果が入っていない
空の状態と、デコード結果が格納された状態を区別する
ためのフラグである。
【0026】また、Valid・V1〜Valid・V
N-1が「0」であれば、エントリE1〜エントリE2
N-1は各々無効であり、逆に、フラグのValid・V
1〜Valid・V2N-1が「1」であれば、エントリ
E1〜エントリE2N-1は各々有効である。
【0027】次に、図4を用いて図1に示す疑似レジス
タ格納部3の一構成例を説明する。図4は、擬似レジス
タ格納部3の構成を示す概念図である。擬似レジスタ格
納部3には、仮想マシンにおいて動作対象となるマイク
ロプロセッサの各レジスタの値が格納されている。この
レジスタに格納されるデータは、以下の種類に分類され
る。
【0028】命令ポインタPTは、実行する命令の疑似
メモリ格納部4におけるアドレスのデータを示してい
る。また、汎用レジスタORは、通常の算術演算,論理
演算に必要なデータ格納のソースまたはターゲットとし
て使用される。さらに、制御レジスタCRは、模擬動作
を行うマイクロプロセッサのさまざまな動作モードなど
を保持する。
【0029】擬似メモリ格納部4は、模擬動作を行うマ
イクロプロセッサの外側に接続されるメモリを模擬す
る。擬似メモリ格納部4の内部構成は、模擬動作の対象
となるプラットフォーム(ハードウェア)の構成に依存
する。しかしながら、擬似メモリ格納部4の内部構成と
して、一般的にもっとも単純な構成は、1次元のデータ
領域の配列である。
【0030】次に、図5を参照し、一実施形態の動作例
を説明する。図5は、一実施形態による命令実行部1の
動作を示すフローチャートである。命令実行部1は、以
下に示すマイクロプロセッサの仮想マシンにおける模擬
実行動作を繰り返し実施する。
【0031】ステップS11において、命令実行部1
は、例えば、擬似レジスタ格納部3に格納された命令ポ
インタPTの値を命令のアドレスとして、デコード結果
キャッシュ格納部2からデコード結果の読み出しを行
う。ここで、デコード結果キャッシュ格納部2には、エ
ントリE1〜エントリE2 N-1が存在する。
【0032】命令実行部1は、以下の計算方法により、
デコード結果キャッシュ格納部2から読み出すエントリ
の番号の算出をメモリのアドレスに基づいて行う。(エ
ントリ番号は、「0」オリジンとなっている。)
【0033】ここで、命令ポインタPTの構成を図6を
用いて説明する。図6は、命令ポインタPTのデータ構
成の一例を示す概念図である。命令ポインタPTの構成
は、例えばアドレス長を[L」ビットとし、命令長Fが
「I」ビットで示され、エントリ内のデコード結果の位
置を示すオフセットOが「E」ビットで示され、エント
リ番号ENが「N」ビットで示されている。
【0034】この結果、命令のアドレス長を[L」ビッ
トとして,図3におけるデコード結果キャッシュ格納部
2を構成するエントリ数が2N個,エントリ毎に格納され
る命令(デコード結果)数が2E個,1命令の長さが2I
イトとされる。
【0035】上記の条件により、図6において、エント
リ番号ENは、命令アドレスの「I+E」ビット目から
「I+E+N−1」ビット目までで表されている。ここ
で、命令のアドレスにおけるビット位置は、最上位ビッ
トが「L−1」、最下位ビットが「0」として表示され
る。
【0036】次に、図5のステップS12において、命
令実行部1は、命令アドレスを示す命令ポインタPTか
らタグTを算出し、例えば、デコード結果キャッシュ格
納部2のエントリE2から、命令ポインタPTのエント
リ番号ENに基づき読み出したタグT1と比較する。こ
こで、命令ポインタPTから算出するタグTは、命令ア
ドレスの「I+E +N)ビット目から最上位ビット「L
−1」ビット目までの値で表される。
【0037】このとき、命令実行部1は、命令ポインタ
PT(図3参照)から算出したタグTと、デコード結果
キャッシュ格納部2のエントリE2から読み出したタグ
T2の一致を検出した場合、エントリE2(図3参照)
から命令ポインタPTのオフセットOに対応するデコー
ド結果DE2(3)を取り出す。
【0038】このとき、命令実行部1は、エントリE2
において何番目のデコード結果が、対象命令のデコード
結果であるかを、命令アドレスの「I」ビット目から
「I+E−1)ビット目のオフセットENに基づき演算
する。ここで、デコード結果の番号は、「0」オリジン
である。この、タグT,エントリ番号EN及びオフセッ
トOのビット位置関係は、図6に示されている。
【0039】そして、命令実行部1は、例えば、オフセ
ットOが「2」を示しているため、デコード結果DE2
を読み出す。そして、命令実行部1は、処理をステップ
S16へ進める。
【0040】次に、ステップS16において、命令実行
部1は、デコード結果DE2に基づき、命令の実行を行
い、必要に応じて擬似レジスタ格納部3内の汎用レジス
タOR、制御レジスタCR、もしくは擬似メモリ格納部
4のデータの値を更新する。そして、命令実行部1は、
命令の実行が完了すると、処理をステップS17へ進め
る。
【0041】次に、ステップS17において、命令実行
部1は、擬似レジスタ格納部3内の命令ポインタPTの
値を更新する。このとき、命令実行部1は、命令の実行
結果において分岐処理がない場合、現在の命令ポインタ
PTの値 に「2I(命令のサイズ)」を加える。また、命
令実行部1は、命令の実行結果において分岐処理がある
場合、分岐先の命令のアドレスのデータを命令ポインタ
PTの値とする。
【0042】そして、命令実行部1は、命令ポインタP
Tの値の更新を完了した後、再度デコード結果キャッシ
ュ格納部2の読み出しを行うため、処理をステップS1
1へ戻す。これにより、命令実行部1は、新たに次の命
令の模擬実行を開始する。
【0043】一方、ステップS15において、命令実行
部1は、命令ポインタPTから算出したタグTと、デコ
ード結果キャッシュ格納部2のエントリE2から読み出
したタグT2の不一致を検出した場合、擬似メモリ格納
部4から命令を読み出すため、処理をステップS13へ
進める。
【0044】次に、ステップS13において、命令実行
部1は、擬似メモリ格納部4から疑似レジスタ格納部3
における命令ポインタPTの命令アドレスOAが示す命
令を含む、合計「2E」個の命令を読み出す。この場
合、各命令の読み出しアドレスの先頭アドレスのデータ
は、命令ポインタPTの値の「0」ビット目から「I+
E−1」ビット目までを「0」にした値である。
【0045】次に、ステップS14において、命令実行
部1は、読み出された「2E」個の命令各々に対してデ
コード処理を、所定のプログラムのステップに従って行
う。そして、命令実行部1は、「2E」個の命令のデコ
ード処理が終了した後、処理をステップS15へ進め
る。
【0046】次に、ステップS15において、命令実行
部1は、命令アドレスOAからタグT及びエントリ番号
ENを算出し、タグTの値と「2E」個のデコード結果
をデコード結果キャッシュ格納部2へ格納する。そし
て、命令実行部1は、格納したエントリのValidを
「0」から「1」へ変更する。
【0047】このとき、例えば、命令実行部1は、命令
アドレスOAからエントリE2を算出したとする。これ
により、命令実行部1は、命令をデコードした結果とし
て、デコード結果DE2(1)〜デコード結果DE2(2
E-1)をエントリE2に書き込む。そして、命令実行部1
は、エントリE2のValid・V2の値を「0」から
「1」へ変更する。そして、命令実行部1は、デコード
結果の格納を終了した後、処理をステップS16へ進め
る。
【0048】次に、ステップS16において、命令実行
部1は、デコード結果DE2に基づき、命令の実行を行
い、必要に応じて擬似レジスタ格納部3内の汎用レジス
タOR、制御レジスタCR、もしくは擬似メモリ格納部
4のデータの値を更新する。そして、命令実行部1は、
命令の実行が完了すると、処理をステップS17へ進め
る。
【0049】次に、ステップS17において、命令実行
部1は、擬似レジスタ格納部3内の命令ポインタPTの
値を更新する。このとき、命令実行部1は、命令の実行
結果において分岐処理がない場合、現在の命令ポインタ
PTの値 に「2I(命令のサイズ)」を加える。また、命
令実行部1は、命令の実行結果において分岐処理がある
場合、分岐先の命令のアドレスのデータを命令ポインタ
PTの値とする。
【0050】そして、命令実行部1は、命令ポインタP
Tの値の更新を完了した後、再度デコード結果キャッシ
ュ格納部2の読み出しを行うため、処理をステップS1
1へ戻す。これにより、命令実行部1は、新たに次の命
令の模擬実行を開始する。
【0051】以上、本発明の一実施形態を図面を参照し
て詳述してきたが、具体的な構成はこの実施形態に限ら
れるものではなく、本発明の要旨を逸脱しない範囲の設
計変更等があっても本発明に含まれる。例えば、デコー
ド結果キャッシュ格納部2を図7に示す第二の実施形態
の構成とする。この第二の実施形態による構成では、デ
コード結果キャッシュ格納部2において、エントリ毎に
「1」個の命令分のデコード結果が格納される。
【0052】マイクロプロセッサの命令実行には局所性
があるため、デコード結果キャッシュ格納部2の1エン
トリには、複数命令のデコード結果が格納されているほ
うが仮想マシンのメモリ使用効率が良い。ただし、あま
り「1」個のエントリに多くのデコード結果を格納する
と、実際に実行されない命令までデコードすることにな
る。
【0053】一実施形態における図3に示すデコード結
果キャッシュ格納部2の構成は、各命令のバイト長は常
に一定であることを前提として形成されている。すなわ
ち、図3に示すデコード結果キャッシュ格納部2は、命
令によりバイト長が異なるアーキテクチャを有するマイ
クロプロセッサを模擬動作する場合には使用することが
できない。
【0054】これに対して、第二の実施形態における図
7のデコード結果キャッシュ格納部2の構成では「1」
個のエントリに対して「1」個の命令のデコード結果が
格納される。図7のデコード結果キャッシュ格納部2
は、エントリEE0〜エントリEE2N-1で構成されて
いる。また、第二の実施形態による仮想マシンの他の構
成及び動作は、一実施形態の図1に示す仮想マシンと同
様なため、説明を省略する。
【0055】そして、エントリEE0は、タグTT0,
デコード結果DC0及びValid・0により構成され
ている。同様に、エントリEE1〜エントリEE2N-1
は、各々タグTT1,デコード結果DC1及びVali
d・1、……、タグTT2N- 1,デコード結果DC2N-1
及びValid・2N-1により構成されている。
【0056】このため、図7のデコード結果キャッシュ
格納部2の構成は、メモリ使用効率が一実施形態の図3
に示すデコード結果キャッシュ格納部2より悪くなる。
しかしながら、可変長命令を有するマイクロプロセッサ
の模擬動作の実行に対しても本発明を適用することが可
能となる。
【0057】ここで、図7の場合のタグ,エントリ番号
は、図6に示す命令アドレスOAにおいてオフセットO
及び命令長Fが無い状態であるので、次のように求めら
れる。タグTは、命令アドレスOAの「N」ビット目か
ら「L−1」ビット目のデータに基づき演算される。ま
た、エントリ番号ENは、命令アドレスOAの「0」ビ
ット目から「N−1」ビット目のデータに基づき演算さ
れる。
【0058】なお、マイクロプロッセッサの命令の構成
に対応して、一実施形態と第二の実施形態とのデコード
結果キャッシュ格納部2の構成を適時変更して使用する
ことが可能である。
【0059】一実施形態及び第二の実施形態による仮想
マシンによれば、デコード結果キャッシュ格納部2から
のデコード結果の読み出しと、疑似メモリ格納部4から
読み出す命令と上記デコード結果のキャッシュヒット判
定は、 1. 命令アドレスOAからデコード結果キャッシュ格納
部2のエントリのエントリ番号ENの算出(シフト演算,
マスク演算1回づつ) 2. 命令アドレスOAからタグT算出(シフト演算,マス
ク演算1回づつ) 3. デコード結果キャッシュ格納部2のエントリからタ
グの読み出し 4. エントリから読み出されたタグの値と、算出された
タグTを比較で実施される。
【0060】一方、仮想マシンにおいて、マイクロプロ
セッサの疑似動作を行わせるため、図2に示すフィール
ド構成の命令をソフトウェアにより解析するためには、
各フィールドを抽出するためにシフト演算/マスク演算
を繰り返す必要がある。また、命令のフィールドの構成
は、命令の種類(レジスタ演算,メモリアクセス,分岐制
御等)により異なるので、オペコードOCやオプション
OPのフィールドの値に基づく条件判定を多く必要とす
る。
【0061】さらに、近年の典型的RISC(縮小命令プロ
セッサ)プロセッサでは、実行回数の多いレジスタ演算
命令の場合、オペランドとしてターゲットレジスタ1個,
ソースレジスタ2個をとることが多く、この場合にはデ
コードのために、オペコード抽出1,オペランド抽出3の
最低4セットのシフト/マスク演算が必要で、さらにフ
ィールドフォーマット判定のための付随的な条件判定
(比較と分岐)処理が加わる。
【0062】これに比較して、本発明によれば、デコー
ド結果キャッシュ格納部2からのデコード結果の読み出
しと、キャッシュヒット判定とでは、シフト/マスク演
算が2セット、条件判定(タグ比較と分岐)が1回である
から、デコード結果キャッシュ格納部2においてデコー
ド結果がヒットした場合には、従来の様に命令のデコー
ド処理を毎回行うよりも疑似動作の実行が高速化され
る。
【0063】
【発明の効果】本発明によれば、命令レベルプロッセッ
サの動作をソフトウェアにより模擬する仮想マシンにお
いて、複数の命令が記憶されている第1のメモリから読
み出しを行う命令がすでに命令レベルプロッセッサにお
いて実行可能な解釈データへ解釈されたか否かの検出を
行う検出部と、第1のメモリから前記命令レベルプロッ
セッサに対する命令の読み出しを第2のメモリにおいて
行う命令読出部と、第1のメモリから読み出された前記
命令を解釈し、解釈結果の前記解釈データを前記第2の
メモリへ書き込む命令解釈部と、前記命令が解釈された
前記解釈データを実行する実行部とを具備するため、第
2のメモリに解釈する命令の解釈データが存在する場
合、従来の様に命令の解釈処理を毎回行なわずに、解釈
データを第2のメモリから読み出す動作のみとなるた
め、仮想マシンの疑似動作の実行が高速化される効果が
ある。
【図面の簡単な説明】
【図1】 本発明の一実施形態による仮想マシンの構成
を示すブロック図である。
【図2】 図1で用いられる命令のフィールド構成の一
例を示す概念図である。
【図3】 図1に示されるデコード結果キャッシュ格納
部2のデータ構成の一例を示す概念図である。
【図4】 図1に示される疑似レジスタ格納部3の構成
の一例を示す概念図である。
【図5】 図1に示す命令実行部1の動作を示すフロー
チャートである。
【図6】 図1で用いられる命令アドレスのデータ構成
の一例を示す概念図である。
【図7】 本発明の第二の実施形態による仮想マシンに
用いられるデコード結果キャッシュ格納部2の構成の一
例を示すブロック図である。
【符号の説明】
1 命令実行部 2 デコード結果キャッシュ格納部 3 疑似レジスタ格納部 4 疑似メモリ格納部

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 命令レベルプロッセッサの動作をソフト
    ウェアにより模擬する仮想マシンにおいて、 複数の命令が記憶されている第1のメモリから読み出し
    を行う命令がすでに命令レベルプロッセッサにおいて実
    行可能な解釈データへ解釈されたか否かの検出を第2の
    メモリにおいて行う検出部と、 第1のメモリから前記命令レベルプロッセッサに対する
    命令の読み出しを行う命令読出部と、 第1のメモリから読み出された前記命令を解釈し、解釈
    結果の前記解釈データを前記第2のメモリへ書き込む命
    令解釈部と、 前記命令が解釈された前記解釈データを実行する実行部
    とを具備することを特徴とする仮想マシン。
  2. 【請求項2】 前記命令解釈過程が、前記解釈データと
    この解釈データの解釈前の前記命令のアドレスを示すタ
    グデータとを対応させ、前記キャッシュメモリへ書き込
    むことを特徴とする請求項1記載の仮想マシン。
  3. 【請求項3】 前記検出過程が、前記タグデータと読み
    込まれる前記命令のアドレスのデータとを比較すること
    により、この命令が前記第2のメモリに記憶されている
    解釈データに対応するか否かを検出することを特徴とす
    る請求項1または請求項2記載の仮想マシン。
  4. 【請求項4】 前記検出過程が、前記第2のメモリに記
    憶されている解釈データが読み込まれる前記命令に対応
    すると判断した場合、前記命令読込過程、前記命令解釈
    過程の動作を行わずに解釈データの実行処理を実行過程
    に行わせることを特徴とする請求項1ないし請求項3の
    いずれかに記載の仮想マシン。
JP03348799A 1999-02-10 1999-02-10 仮想マシン Expired - Fee Related JP3324542B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP03348799A JP3324542B2 (ja) 1999-02-10 1999-02-10 仮想マシン

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP03348799A JP3324542B2 (ja) 1999-02-10 1999-02-10 仮想マシン

Publications (2)

Publication Number Publication Date
JP2000231495A true JP2000231495A (ja) 2000-08-22
JP3324542B2 JP3324542B2 (ja) 2002-09-17

Family

ID=12387924

Family Applications (1)

Application Number Title Priority Date Filing Date
JP03348799A Expired - Fee Related JP3324542B2 (ja) 1999-02-10 1999-02-10 仮想マシン

Country Status (1)

Country Link
JP (1) JP3324542B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011060080A (ja) * 2009-09-11 2011-03-24 Renesas Electronics Corp シミュレーション装置、シミュレーション方法、及びシミュレーション用プログラム
WO2020166345A1 (ja) * 2019-02-15 2020-08-20 日立オートモティブシステムズ株式会社 検証装置および検証方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011060080A (ja) * 2009-09-11 2011-03-24 Renesas Electronics Corp シミュレーション装置、シミュレーション方法、及びシミュレーション用プログラム
WO2020166345A1 (ja) * 2019-02-15 2020-08-20 日立オートモティブシステムズ株式会社 検証装置および検証方法
JPWO2020166345A1 (ja) * 2019-02-15 2021-09-30 日立Astemo株式会社 検証装置および検証方法
JP7084505B2 (ja) 2019-02-15 2022-06-14 日立Astemo株式会社 検証装置および検証方法
US11487649B2 (en) 2019-02-15 2022-11-01 Hitachi Astemo, Ltd. Verification device and method for verifying a program using a tree structure of common and non-common test scenario phases

Also Published As

Publication number Publication date
JP3324542B2 (ja) 2002-09-17

Similar Documents

Publication Publication Date Title
US6009261A (en) Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US11803387B2 (en) System for executing new instructions and method for executing new instructions
US11604643B2 (en) System for executing new instructions and method for executing new instructions
US8578351B2 (en) Hybrid mechanism for more efficient emulation and method therefor
US20030149963A1 (en) Condition code flag emulation for program code conversion
JPH0628036B2 (ja) シミュレーシヨン方法
US11625247B2 (en) System for executing new instructions and method for executing new instructions
US6529862B1 (en) Method and apparatus for dynamic management of translated code blocks in dynamic object code translation
US5752015A (en) Method and apparatus for repetitive execution of string instructions without branch or loop microinstructions
US5574887A (en) Apparatus and method for emulation routine pointer prefetch
US5408622A (en) Apparatus and method for emulation routine control transfer via host jump instruction creation and insertion
CN111324948B (zh) 模拟方法及模拟系统
US7219335B1 (en) Method and apparatus for stack emulation during binary translation
CN115421861B (zh) 一种通用的TMS320C55x处理器指令集虚拟化仿真方法
CN115480871B (zh) 一种通用的tms320c3x处理器指令集虚拟化仿真方法
JP2817786B2 (ja) シミュレーション装置及びシミュレーション方法
JP4243463B2 (ja) 命令スケジューリングのシミュレーション方法とシミュレーションシステム
JP3324542B2 (ja) 仮想マシン
JPH0668724B2 (ja) シミユレーシヨン方法
WO2000065440A2 (en) Exception handling method and apparatus for use in program code conversion
US7353163B2 (en) Exception handling method and apparatus for use in program code conversion
CN115421860B (zh) 一种通用的sparc处理器指令集虚拟化仿真方法
US11301252B2 (en) Executing mutually exclusive vector instructions according to a vector predicate instruction
JPH1173301A (ja) 情報処理装置
CN116775127A (zh) 一种基于RetroWrite框架的静态符号执行插桩方法

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20020604

LAPS Cancellation because of no payment of annual fees