JP3324542B2 - 仮想マシン - Google Patents

仮想マシン

Info

Publication number
JP3324542B2
JP3324542B2 JP03348799A JP3348799A JP3324542B2 JP 3324542 B2 JP3324542 B2 JP 3324542B2 JP 03348799 A JP03348799 A JP 03348799A JP 3348799 A JP3348799 A JP 3348799A JP 3324542 B2 JP3324542 B2 JP 3324542B2
Authority
JP
Japan
Prior art keywords
instruction
data
memory
interpretation
virtual machine
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
JP03348799A
Other languages
English (en)
Other versions
JP2000231495A (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.)
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)

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に記載の発明
は、命令レベルプロッセッサの動作をソフトウェアによ
り模擬する仮想マシンにおいて、タグデータと解釈デー
タとを格納する複数のエントリから構成される第2のメ
モリと、複数の命令が記憶されている第1のメモリから
読み出しを行う命令がすでに命令レベルプロッセッサに
おいて実行可能な解釈データへ解釈されたか否かの検出
を第2のメモリにおいて行う検出部と、第1のメモリか
ら読み出された前記命令を解釈し、解釈結果の前記解釈
データを第2のメモリへ書き込む命令解釈部と、前記命
令が解釈された前記解釈データを実行する実行部とを具
し、前記実行部が、前記命令のアドレスから算出され
る前記エントリを示すエントリ番号と、タグデータとに
基づき、前記第2のメモリから前記解釈データを読み出
すことを特徴とする。
【0015】請求項2記載の発明は、前記命令解釈過程
が、前記解釈データとこの解釈データとこの解釈データ
の解釈前の前記命令のアドレスから算出される前記タグ
データ及び前記エントリ番号とに対応させ、前記第2の
メモリへ書き込むことを特徴とする。
【0016】請求項3記載の発明は、前記検出過程が、
読み込まれる前記命令のアドレスから算出したエントリ
番号の示す前記エントリにおけるタグデータと、読み込
まれる前記命令のアドレスから算出したタグデータとを
比較することにより、この命令が前記第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】
【発明の効果】本発明によれば、命令レベルプロッセッ
サの動作をソフトウェアにより模擬する仮想マシンにお
いて、タグデータと解釈データとを格納する複数のエン
トリから構成される第2のメモリと、複数の命令が記憶
されている第1のメモリから読み出しを行う命令がすで
に命令レベルプロッセッサにおいて実行可能な解釈デー
タへ解釈されたか否かの検出を第2のメモリにおいて行
う検出部と、第1のメモリから読み出された前記命令を
解釈し、解釈結果の前記解釈データを第2のメモリへ書
き込む命令解釈部と、前記命令が解釈された前記解釈デ
ータを実行する実行部とを具備し、前記実行部が、前記
命令のアドレスから算出される前記エントリを示すエン
トリ番号と、タグデータとに基づき、前記第2のメモリ
から前記解釈データを読み出すため、第2のメモリに解
釈する命令の解釈データが存在する場合、従来の様に命
令の解釈処理を毎回行わずに、解釈データを第2のメモ
リから読み出す動作のみとなるため、仮想マシンの疑似
動作の実行が高速化される効果がある。
【図面の簡単な説明】
【図1】 本発明の一実施形態による仮想マシンの構成
を示すブロック図である。
【図2】 図1で用いられる命令のフィールド構成の一
例を示す概念図である。
【図3】 図1に示されるデコード結果キャッシュ格納
部2のデータ構成の一例を示す概念図である。
【図4】 図1に示される疑似レジスタ格納部3の構成
の一例を示す概念図である。
【図5】 図1に示す命令実行部1の動作を示すフロー
チャートである。
【図6】 図1で用いられる命令アドレスのデータ構成
の一例を示す概念図である。
【図7】 本発明の第二の実施形態による仮想マシンに
用いられるデコード結果キャッシュ格納部2の構成の一
例を示すブロック図である。
【符号の説明】
1 命令実行部 2 デコード結果キャッシュ格納部 3 疑似レジスタ格納部 4 疑似メモリ格納部
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/455

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 命令レベルプロッセッサの動作をソフト
    ウェアにより模擬する仮想マシンにおいて、タグデータと解釈データとを格納する複数のエントリか
    ら構成される第2のメモリと、 複数の命令が記憶されている第1のメモリから読み出し
    を行う命令がすでに命令レベルプロッセッサにおいて実
    行可能な解釈データへ解釈されたか否かの検出を第2の
    メモリにおいて行う検出部と、 第1のメモリから読み出された前記命令を解釈し、解釈
    結果の前記解釈データを第2のメモリへ書き込む命令解
    釈部と、 前記命令が解釈された前記解釈データを実行する実行部
    とを具備し、 前記実行部が、前記命令のアドレスから算出されるエン
    トリ番号と前記タグデータとに基づき、前記第2のメモ
    リから前記解釈データを読み出すことを 特徴とする仮想
    マシン。
  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 JP2000231495A (ja) 2000-08-22
JP3324542B2 true 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)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5322867B2 (ja) * 2009-09-11 2013-10-23 ルネサスエレクトロニクス株式会社 シミュレーション装置
JP7084505B2 (ja) * 2019-02-15 2022-06-14 日立Astemo株式会社 検証装置および検証方法

Also Published As

Publication number Publication date
JP2000231495A (ja) 2000-08-22

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
JP2610104B2 (ja) 命令オペレーション・コードの検査装置及び方法
US20220206794A1 (en) System for executing new instructions and method for executing new instructions
US20030149963A1 (en) Condition code flag emulation for program code conversion
US11625247B2 (en) System for executing new instructions and method for executing new instructions
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
CN107589960B (zh) 一种基于寄存器访问冲突检测的dsp指令模拟方法
KR100864891B1 (ko) 다중 명령 세트 시스템에서의 미처리된 연산 처리
CN115421861B (zh) 一种通用的TMS320C55x处理器指令集虚拟化仿真方法
CN115480871B (zh) 一种通用的tms320c3x处理器指令集虚拟化仿真方法
US7219335B1 (en) Method and apparatus for stack emulation during binary translation
JP2817786B2 (ja) シミュレーション装置及びシミュレーション方法
JP3324542B2 (ja) 仮想マシン
CN116775127A (zh) 一种基于RetroWrite框架的静态符号执行插桩方法
JP4243463B2 (ja) 命令スケジューリングのシミュレーション方法とシミュレーションシステム
Letychevskyi et al. Fuzz Testing Technique and its Use in Cybersecurity Tasks
US5951676A (en) Apparatus and method for direct loading of offset register during pointer load operation
JPH025138A (ja) シミユレーシヨン方法
CN110709823A (zh) 使用jit编译器并绕过所选择目标代码块的转译的目标系统的仿真
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处理器指令集虚拟化仿真方法
CN115421864B (zh) 一种通用的PowerPC架构处理器指令集虚拟化仿真方法

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