JPH11184731A - 逐次命令実行によりアウトオブオーダ命令実行の動作を模擬するシミュレーション装置及びそのシミュレーション処理方法 - Google Patents

逐次命令実行によりアウトオブオーダ命令実行の動作を模擬するシミュレーション装置及びそのシミュレーション処理方法

Info

Publication number
JPH11184731A
JPH11184731A JP9352747A JP35274797A JPH11184731A JP H11184731 A JPH11184731 A JP H11184731A JP 9352747 A JP9352747 A JP 9352747A JP 35274797 A JP35274797 A JP 35274797A JP H11184731 A JPH11184731 A JP H11184731A
Authority
JP
Japan
Prior art keywords
instruction
result
queue
unit
execution
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.)
Pending
Application number
JP9352747A
Other languages
English (en)
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 JP9352747A priority Critical patent/JPH11184731A/ja
Publication of JPH11184731A publication Critical patent/JPH11184731A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 逐次実行方式の仮想マシンをアウトオブオー
ダ方式マイクロプロセッサ用プログラムのデバッグに使
用する場合、バグを確実に検出する事の出来るシミュレ
ーション装置を提供する。 【解決手段】 ターゲットプログラム格納部21、プロ
グラム入力手段11が読み出したプログラムを格納する
疑似メモリ格納部17、複数段の記憶回路部20で構成
された結果書込みキュー手段15、読みだされた命令で
結果書込みキュー手段15の先頭の記憶回路部20から
情報を取り出し、疑似メモリ格納部17に格納する第1
の結果書込み手段12、疑似メモリ格納部17から次の
命令を読み出して命令を実行する命令実行手段13、実
行される命令が非同期命令であるか否かを判断し、同期
命令の時は、実行された演算結果を疑似メモリ格納部1
7に書き込むと共に、非同期命令の時は、実行された演
算結果を結果書込みキュー15の最後の記憶回路部20
に書き込む第2の結果書込み手段14で構成されている
逐次命令実行によりアウトオブオーダ命令実行の動作を
模擬するシミュレーション装置30。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はソフトウェアプログ
ラムにより特定のマイクロプロセッサの動作を模擬する
仮想マシンに関するものである。
【0002】
【従来の技術】従来から、マイクロプロセッサの動作
を、ソフトウェアプログラムにより仮想的に再現する仮
想マシンあるいは命令エミュレータにおいては、対象と
なるマイクロプロセッサ用の命令コードを一命令づつ取
り出し、命令が書き込まれた順に解釈、実行を繰り返す
逐次命令実行方式が主流である。
【0003】処で、このような仮想マシンは、コンピュ
ータシステムの開発において、ハードウェアの試作品が
完成する以前に、システムを制御するソフトウェアプロ
グラムのデバッグを行うために用いられている。しかし
近年のマイクロプロセッサの中には、並列化されたハー
ドウェア資源を有効に利用するためアウトオブオーダ実
行を行うものが増えてきた。
【0004】アウトオブオーダ実行とは、ソフトウェア
命令を順番どおりに実行せず、各命令が使用するハード
ウェア資源の空きが出た順番にランダムに実行する方式
である。例えば、 命令1 r3 = r1 + r2 命令2 r5 = r3 + r4 命令3 r8 = r6 + r7 上記のような3つの命令からなる命令列は、命令2は命
令1の実行結果を必要とするため命令1の実行が完了す
るまで実行することはできない。
【0005】しかし命令3は命令1、命令2のどちらに
も依存しないため、他の命令の実行を待つことなく実行
することが可能である。もしプロセッサに2つの加算演
算器が備わっていれば、命令3は命令1と同時に実行可
能で命令2よりも先に実行される。多くの場合、ソフト
ウェア命令間の実行依存性はプロセッサハードウェアに
より認識され、アウトオブオーダ実行を行っても、命令
の順番どおりに逐次実行した場合と同じ結果が得られる
仕組みが提供されている。しかし、ハードウェアによる
依存性認識が難しい一部の命令処理については、ソフト
ウェアが適切なタイミングで同期命令を発行することに
より、実行依存性の問題を解決している。同期命令と
は、その命令よりも前に存在する命令の実行がすべて完
了するまで、以後の命令列が実行されないようにブロッ
クする命令である。
【0006】従って、逐次実行方式の仮想マシンプログ
ラムにより、アウトオブオーダ方式マイクロプロセッサ
用のプログラムを実行すると、すべての命令を順番に実
行してしまうため、同期命令が適切なタイミングで発行
されていなくても、プログラムは正常に模擬動作され
る。従って、逐次実行方式の仮想マシンをアウトオブオ
ーダ方式マイクロプロセッサ用プログラムのデバッグに
使用する場合、同期命令の発行もれや不適切なタイミン
グでの発行といったバグを見逃してしまうという欠点が
ある。
【0007】一方、仮想マシンを本物と同一の命令実行
順序で動作させる方式では、ハードウェア資源の状態管
理や命令の依存関係抽出といった複雑な処理が必要で、
模擬動作の速度を大きく落としてしまうという欠点があ
る。また、ハードウェア資源の状態管理には、外部バス
の状態などマイクロプロセッサ外部の要因が関係する場
合があり、ソフトウェアによる正確な模擬動作は難し
い。
【0008】
【発明が解決しようとする課題】従って、本発明の目的
は、上記した従来技術の欠点を改良し、特には、逐次実
行方式の仮想マシンをアウトオブオーダ方式マイクロプ
ロセッサ用プログラムのデバッグに使用する場合、同期
命令の発行もれや不適切なタイミングでの発行といった
バグを確実に検出する事の出来るシミュレーション装置
及びそのシミュレーション方法を提供するものである。
【0009】
【課題を解決するための手段】本発明は上記した目的を
達成する為、以下に示す様な基本的な技術構成を採用す
るものである。即ち、本発明に係るフォトマスクの第1
の態様としては、逐次命令実行によりアウトオブオーダ
命令実行の動作を模擬する装置に於いて、ターゲットプ
ログラム格納部、プログラム入力手段、当該プログラム
入力手段が、当該ターゲットプログラム格納部から読み
出した所定のプログラムを格納する疑似メモリ格納部、
複数段の記憶回路部が互いに直列に接続されて構成され
た結果書込みキューであって、所定の命令が実行される
毎に当該各結果書込みキューを構成するそれぞれの記憶
回路部に記憶されているデータが、順次に隣接の記憶回
路部に移動する様に構成された結果書込みキュー手段、
当該プログラム入力手段の命令に従って、当該結果書込
みキュー手段に於ける先頭の記憶回路部から当該記憶回
路部に格納されている情報を取り出し、当該疑似メモリ
格納部若しくは疑似レジスタ格納部に当該読出し情報を
格納する第1の結果書込み手段、当該疑似メモリ格納部
若しくは当該疑似レジスタ格納部から次の命令を読み出
して所定の命令を実行する命令実行手段、実行される命
令が非同期命令であるか否かを予め定めた非同期命令表
を格納する非同期命令表格納部、当該命令実行手段で実
行された命令が非同期命令であるか同期命令であるかを
判断し、当該命令が同期命令である場合には、当該命令
実行手段により実行された演算結果を当該疑似メモリ格
納部若しくは疑似レジスタ格納部に書き込む操作を行う
と共に、当該命令が非同期命令である場合には、当該命
令実行手段により実行された演算結果を当該結果書込み
キューの最後の記憶回路部に書き込む第2の結果書込み
手段とから構成されている逐次命令実行によりアウトオ
ブオーダ命令実行の動作を模擬するシミュレーション装
置であり、又第2の態様としては、ターゲットプログラ
ムを読み出して、当該プログラムの実行命令に従って所
定の演算処理を実行し、その結果を疑似メモリ格納部に
格納するに際して、当該所定の演算処理に際して、当該
演算処理を実行させる実行命令が非同期命令である場合
に、当該演算処理結果を予め定められた所定の回数の実
行命令が実行された以後に当該疑似メモリ格納部に格納
されるよう格納処理操作を遅延させる逐次命令実行によ
りアウトオブオーダ命令実行の動作を模擬するシミュレ
ーション処理方法である。
【0010】
【発明の実施の形態】本発明に係るシミュレーション装
置は、上記した様な技術構成を採用しているので、本発
明に係る当該仮想マシンの特徴はターゲットプログラム
上の命令コードを解釈、実行するにあたり、演算処理等
命令実行に必要な操作を行う命令実行手段13と、実行し
た結果のレジスタやメモリへの書き込みを実施する書き
込み手段とに分離したことにある。
【0011】つまり、例えば r1 = r2 + r3 のような命
令(r1, r2, r3 はレジスタ)において、命令実行手段は
r2 + r3 という加算処理を実施する。結果書き込み手段
は、加算結果のr1への書き込みを実施する。通常の命令
の模擬動作では命令実行手段13により、必要な演算処理
を実施後、第2の結果書き込み手段14により、即座に演
算結果を疑似レジスタまたは疑似メモリに書き込まれ
る。
【0012】ハードウェアにより以後の命令との依存性
解決が保証されない命令(以下、非同期命令と呼ぶ)は、
命令実行手段13による演算処理実施後、演算結果が結果
書き込みキュー15の最後に追加され、数命令実行後に第
1の結果書き込み手段12により疑似レジスタまたは疑似
メモリに書き込まれる。第1の結果書き込み手段12は一
命令実行ごとに、結果書き込みキュー15の先頭から書き
込みデータを取り出し、有効なデータがあれば疑似レジ
スタまたは疑似メモリに書き込む。
【0013】当該結果書き込みキュー15は先頭からデー
タを取り出すたび、中身が1段づつ前進するので、非同
期命令の結果は、キューの段数分の命令を実行した後に
疑似レジスタや疑似メモリに反映される。
【0014】
【実施例】以下に、本発明に係るシミュレーション装置
30の一具体例の構成を図面を参照しながら詳細に説明
する。即ち、図1は、本発明に係る当該シミュレーショ
ン装置30の一具体例の構成を示すブロックダイアグラ
ムであり、図中、逐次命令実行によりアウトオブオーダ
命令実行の動作を模擬する装置に於いて、ターゲットプ
ログラム格納部21、プログラム入力手段11、当該プ
ログラム入力手段11が、当該ターゲットプログラム格
納部21から読み出した所定のプログラムを格納する疑
似メモリ格納部17、複数段の記憶回路部20が互いに
直列に接続されて構成された結果書込みキュー15であ
って、所定の命令が実行される毎に当該各結果書込みキ
ュー15を構成するそれぞれの記憶回路部20に記憶さ
れているデータが、順次に隣接の記憶回路部20に移動
する様に構成された結果書込みキュー手段15、当該プ
ログラム入力手段11の命令に従って、当該結果書込み
キュー手段15に於ける先頭の記憶回路部20から当該
記憶回路部20に格納されている情報を取り出し、当該
疑似メモリ格納部17若しくは疑似レジスタ格納部16
に当該読出し情報を格納する第1の結果書込み手段1
2、当該疑似メモリ格納部17若しくは当該疑似レジス
タ格納部16から次の命令を読み出して所定の命令を実
行する命令実行手段13、実行される命令が非同期命令
であるか否かを予め定めた非同期命令表を格納する非同
期命令表格納部18、当該命令実行手段13で実行され
た命令が非同期命令であるか同期命令であるかを判断
し、当該命令が同期命令である場合には、当該命令実行
手段13により実行された演算結果を当該疑似メモリ格
納部17若しくは疑似レジスタ格納部16に書き込む操
作を行うと共に、当該命令が非同期命令である場合に
は、当該命令実行手段13により実行された演算結果を
当該結果書込みキュー15の最後の記憶回路部20に書
き込む第2の結果書込み手段14とから構成されている
逐次命令実行によりアウトオブオーダ命令実行の動作を
模擬するシミュレーション装置30が示されている。
【0015】本発明に於て使用される当該結果書込みキ
ュー15は、当該キュー列の最後部段の記憶回路部20
に新たな演算結果が格納される毎に、それぞれの記憶回
路部20に格納されているそれぞれの演算結果内容は順
次隣接の記憶回路部20に移動され、当該キュー15列
の最先頭部にある記憶回路部20に格納されている演算
内容が、当該第1の結果書込み手段12に読み出される
様に構成されている事が望ましい。
【0016】更に、本発明に於ける当該シミュレーショ
ン装置30に於いては、当該第2の結果書込み手段14
に於いて当該命令実行手段13により実行された命令が
同期命令である場合には、当該結果書込みキュー15を
構成する当該キュー列の最後部段にある記憶回路部20
には空の情報が格納される様に構成されている事が望ま
しい。
【0017】一方、本発明に係る当該シミュレーション
装置30に於いては、当該命令実行手段13は、当該命
令実行手段13が該疑似メモリ格納部17から読み出し
た命令が強制同期化命令である場合には、当該結果書込
みキュー15を構成する全ての記憶回路部20に格納さ
れている演算結果内容の全てを当該疑似メモリ格納部1
7若しくは当該疑似レジスタ格納部16に書込み、同時
に当該結果書込みキュー15を構成する全ての記憶回路
部20に格納されている演算結果内容をクリヤー処理す
るクリヤ手段19が設けられている事が望ましい。
【0018】本発明に於ける当該結果書込みキュー15
は、複数のキュー列15、15’・・・から構成されて
いても良く、又当該複数のキュー列15、15’・・・
に於いて、互いに各キュー列を構成する当該記憶回路部
20の構成段数が異なる様に構成されている事も望まし
い。以下に本発明に係る当該シミュレーション装置30
及び当該シミュレーション方法の操作の具体例を図1乃
至図3を参照しながら説明する。
【0019】本発明に係る当該仮想マシンに於いては、
従来、特に検査すべきプログラムに於て非同期命令が含
まれている場合、それ以前に実行された演算処理結果
が、何時の時点で所定のメモリに格納されるかが分から
ないので、場合によっては極めて長期間、当該プログラ
ムに於けるバグを発見出来ない場合があるのに対し、当
該各演算処理が終了した場合、その結果を所定のメモリ
に格納するタイミングを故意に遅延させ、例えば予め定
められた所定の数の実行命令が実行された後に、それ以
前に実行された命令の処理結果が当該メモリに格納され
る様に構成する事によって、当該所定の数の実行命令が
実行された後には必ず前記した実行命令の演算結果が読
みだせる状態にしたものである。
【0020】従って、上記した結果書込みキュー15に
複数段の記憶回路部20を直列に配置して、各実行命令
が実行される毎に当該記憶回路部20の一つに順次一時
的に格納しておき、当該結果書込みキュー15の該記憶
回路部20をFIFOシステムで巡回させる事によっ
て、当該記憶回路部20の段数分の実行命令が実行され
た後には、所定の実行命令の結果が必ず読みだせる様に
構成したものである。
【0021】本発明に於ける当該結果書込みキュー15
に於ける当該記憶回路部20の段数は、特に限定される
ものではないが、当該プロセッサの特性、プログラムの
特性を勘案して、最悪の状態でも、必ず前に実行された
実行命令の演算結果が読み出しする様に構成する事が望
ましい。更に、当該結果書込みキュー15の該記憶回路
部20の列は、一列である必要はなく、図4(A)に示
す様に、複数列を並列に配置して、それぞれの実行命令
毎に格納する場所を変える事も可能であり、又図4
(B)に示す様に、複数の結果書込みキュー列のそれぞ
れが、互いに異なる数の記憶回路部20を含む様にする
事も可能である。
【0022】又、本発明に於ける当該仮想マシンである
シミュレーション装置30に於て使用される非同期命令
表格納部18は、予め当該検査が必要なプログラムに於
けるそれぞれの非同期命令にオペコードを対応させたテ
ーブルであり、該第2の結果書込み手段14が、実行さ
れるべき実行命令が、非同期命令であるか否かを判断す
る時に読みに行くルックアップテーブルの型式を採るも
のである。
【0023】尚、当該非同期命令表には、結果書込みキ
ュー15に複数列のキューが存在する場合には、当該演
算結果を格納すべきキュー列を指示するコードを付す事
も可能である。本発明に係る当該シミュレーション装置
30は、上記した様に、プログラム制御により動作する
データ処理装置1とデータを記憶する記憶装置2とから
構成されている。
【0024】本発明は特定のマイクロプロセッサ(以
下、ターゲットプロセッサ)の動作を、プログラムによ
り再現する仮想マシンであり、データ処理装置1は以下
の構成要素を含んでいる。即ち、プログラム入力手段11
は、記憶装置2内のターゲットプログラム格納部21から
模擬動作させる対象プログラムの命令コード列を入力
し、疑似メモリ格納部17に格納する。
【0025】又、第1の結果書き込み手段12は、結果書
き込みキュー15から取り出した演算結果を内容に応じて
疑似レジスタ格納部16または疑似メモリ格納部17に書き
込む。一方、命令実行手段13は、疑似メモリ格納部17か
ら、命令コードを1命令分取り出し、解析し、命令実行
に必要な演算処理を実施する。演算結果は第2の結果書
き込み手段14に渡す。
【0026】更に、第2の結果書き込み手段14は、非同
期命令表格納部18を参照し、命令実行手段13が実行した
命令が非同期命令でなければ、演算結果を疑似レジスタ
格納部16または疑似メモリ格納部17に書き込む。非同期
命令ならば、書き込み先と書き込み値を結果書き込みキ
ューの最後尾に追加する。又、結果書き込みキュー15
は、演算結果の書き込み先(レジスタ名またはメモリア
ドレス)と書き込み値を複数個格納することができるキ
ュー構造のメモリバッファで、ファーストインファース
トアウト構造を採用しており、キューに追加した順番で
中身を取り出すことができる。キューの各段は空か空で
ないかの識別ができる構成となっている。
【0027】当該キューの段数はターゲットプロセッサ
のハードウェア構成(パイプライン段数、プリフェッチ
バッファ段数など)を考慮して決定される。一方、疑似
レジスタ格納部16は、ターゲットプロセッサが持つ汎用
レジスタ、制御レジスタの値を格納するためのメモリバ
ッファである。更に、疑似メモリ格納部17は、ターゲッ
トプロセッサを組み込んだシステムのメモリ空間の内容
を格納するためのメモリバッファである。
【0028】又、非同期命令表格納部18は、ターゲット
プロセッサの命令のうち、非同期命令に分類される命令
の名前またはオペコード(命令コード中の命令を識別す
るためのフィールドの値)の一覧表を格納するためのメ
モリバッファ。内容は固定されており、読み出し専用の
バッファである。尚、記憶装置2には、ターゲットプロ
セッサ上で実行されるプログラムを格納するターゲット
プログラム格納部21を含む。
【0029】次に、本発明に於ける当該シミュレーショ
ン装置30の動作及び操作手順を図2のフローチャート
を参照して詳細に説明する。図2は本発明の第1の結果
書き込み手段12、命令実行手段13、第2の結果書き込み
手段14を中心に構成される命令実行ループのフローチャ
ートである。そして、プログラム入力手段11により、疑
似メモリ格納部17に実行対象プログラムが書き込まれる
と本発明に係る仮想マシン30は、図2のフローチャー
トに示された処理を繰り返すことでターゲットプロセッ
サの動作を模擬する。
【0030】まず、スタート後、ステップ(1)に於
て、当該結果書込みキュー15の各記憶回路部20を含
めたシステム全体を初期化する。その後ステップ(2)
に於て第1の結果書き込み手段12は、結果書き込みキュ
ー15の先頭バッファである記憶回路部20から当該記憶
回路部20内に格納されている演算処理結果情報を取り
出す。
【0031】次に、ステップ(3)に於て、当該取り出
した演算処理結果情報が空かどうか判定し、空でなけれ
ば、ステップ(4)に於て、取り出した内容にしたがっ
て疑似レジスタ格納部16または疑似メモリ格納部17に、
以前に実行された非同期命令の演算結果を書き込む。こ
の結果、当該結果書き込みキュー15では、先頭のバッフ
ァである記憶回路部20の内容が取り出された結果、各
段の記憶回路部20内のそれぞれに格納されている演算
処理結果情報が、1段づつずれる事になる。
【0032】図3は、先頭の記憶回路部20が読み出さ
れる前後の結果書き込みキュー15の状態の1例を示して
いる。つまり、図3(A)は、読み出し前の結果書込み
キュー15のそれぞれの記憶回路部20に含まれる演算
処理結果情報の状態を示している。本具体例では、当該
結果書込みキュー15は、4段の記憶回路部20から構
成されているものとする。
【0033】即ち、当該結果書込みキュー15の先頭の
記憶回路部20−1には、例えば、書き込み先のレジス
タ番号と書き込み値が格納されており、第2と第4の記
憶回路部20−2と20−4は空の状態であり、第3番
目の記憶回路部20−3には同様に書き込み先のレジス
タ番号と書き込み値が格納されている。そして、次の実
行命令が実行され、当該実行命令が同期命令であったと
すると、図3(B)の様に、先頭の記憶回路部20−1
に格納されていた演算処理結果情報が、読み出されて空
になり、(つまり、記憶回路部20−1には、第2の記
憶回路部20−2の空の情報が移動した為)又、第3番
目の記憶回路部20−3に格納されていた演算処理結果
情報が、第2番目の記憶回路部20−2に移動される。
【0034】そして、第4番目の記憶回路部20−4に
は、空の情報が新たに格納された状態を示している。次
にステップ(5)に於て、命令実行手段13は疑似メモリ
格納部から命令コードを1つ読み出す。命令を読み出す
アドレスは通常疑似レジスタの中の1つに格納されてお
り、命令読み出し後、適当なタイミングで該レジスタを
インクリメントする。尚、インクリメント幅やインクリ
メントタイミングはターゲットプロセッサのアーキテク
チャに依存するものである。
【0035】ステップ(6)に於て、命令実行手段13は
読み出した命令を解読し、命令の種類、操作対象となる
レジスタ、メモリアドレスなどを求める。ターゲットプ
ロセッサの種類によっては、命令の実行状況を強制的に
同期化する命令を持っている。この同期化命令が実行さ
れると、同期化命令以前の命令の実行がすべて完了する
まで以後の命令は実行されない。
【0036】当該命令実行手段13は、ステップ(7)に
於て、解読した命令の種類が強制同期化命令が否か判別
し、強制同期化命令ならばステップ(8)に進んで、結
果書き込みキュー15に格納された演算結果をすべて疑似
レジスタ16若しくは疑似メモリ17に書き込み、且つ
ステップ(9)に於て結果書き込みキュー15をすべて空
にする。
【0037】当該命令が強制同期化命令でなければ、ス
テップ(10)に於て、命令内の演算処理を結果書き込
みの直前まで実行し、当該演算結果は第2の結果書き込
み手段14に渡す。その後、ステップ(11)に於て、第
2の結果書き込み手段14は非同期命令表格納手段18の内
容を検索し、実行した命令が非同期命令か否かを判定す
る。
【0038】ステップ(12)に於て、非同期命令でな
い場合は、ステップ(14)に於て演算結果を書き込み
先の疑似レジスタ格納部16または疑似メモリ格納部17に
書き込み且つステップ(15)に於て、空の情報を結果
書込みキュー15の最後の記憶回路部に書き込む。一
方、非同期命令の場合は、ステップ(13)に於て、演
算結果の書き込み先(レジスタ名またはメモリアドレス)
と、書き込み値を結果書き込みキュー15の最後に書き込
む。
【0039】上記の処理を完了後、再びステップ(2)
に戻り、次の命令の実行を繰り返す。上記した本発明に
係るシミュレーション装置の操作方法を要約するなら
ば、ターゲットプログラムを読み出して、当該プログラ
ムの実行命令に従って所定の演算処理を実行し、その結
果を疑似メモリ格納部に格納するに際して、当該所定の
演算処理に際して、当該演算処理を実行させる実行命令
が非同期命令である場合に、当該演算処理結果を予め定
められた所定の回数の実行命令が実行された以後に当該
疑似メモリ格納部に格納されるよう格納処理操作を遅延
させる逐次命令実行によりアウトオブオーダ命令実行の
動作を模擬するシミュレーション処理方法である。
【0040】更に、本発明に係る当該シミュレーション
処理方法に於いては、当該遅延処理操作は、複数個の記
憶回路部が直列に配置された結果書込みキュー列を使用
し、新たな演算処理結果情報が、当該キュー列の最後段
部の記憶回路部に格納されると、既に当該各記憶回路部
のそれぞれに格納されている演算処理結果情報が、隣接
する記憶回路部にそれぞれ移動され、最先頭部の記憶回
路部に格納されている当該演算処理結果情報が当該キュ
ー列から離脱せしめられる様に構成された結果書込みキ
ューを使用するものである事が望ましい。
【0041】一方、本発明に於ける当該シミュレーショ
ン処理方法に於いては、当該最先頭部の記憶回路部に格
納されている当該演算処理結果情報は、第1の結果書込
み手段を使用して、当該最先頭部の記憶回路部に格納さ
れている当該演算処理結果情報を読み取り、それを疑似
メモリ格納部若しくは疑似レジスタ格納部に書き込まれ
る様に構成されている事が望ましい。
【0042】本発明に於ける当該シミュレーション処理
方法に於いては、ターゲットプログラムを読み出して、
当該プログラムの実行命令に従って所定の演算処理を実
行し、その結果を疑似メモリ格納部に格納するに際し
て、当該所定の演算処理に際して、第2の結果書込み手
段を使用して、当該演算処理を実行させた実行命令が非
同期命令であるか否かを判断し、当該実行命令が非同期
命令である場合には、その演算処理結果情報を当該結果
書込みキューの最後段部の記憶回路部に格納すると共
に、当該実行命令が同期命令である場合には、その演算
処理結果情報を直接疑似メモリ格納部若しくは疑似レジ
スタ格納部に格納し当該結果書込みキューの最後段部の
記憶回路部には、空の情報を書き込む様にする事を特徴
とするものである。
【0043】又、本発明に係る当該シミュレーション処
理方法に於いては、上記構成に加えて、当該ターゲット
プログラムを読み出して、当該プログラムの実行命令に
従って所定の演算処理を実行し、その結果を疑似メモリ
格納部に格納するに際して、当該所定の演算処理に際し
て、第2の結果書込み手段を使用して、当該演算処理を
実行させた実行命令が強制同期化命令であるか否かを判
断し、当該実行命令が強制同期化命令である場合には、
当該結果書込みキューを構成する全ての記憶回路部に格
納されている演算結果内容を全て当該疑似レジスタ格納
部若しくは疑似メモリ格納部に書込み、当該結果書込み
キューを構成する全ての記憶回路部をクリヤー処理する
事が望ましい。
【0044】本発明に係るシミュレーション処理方法を
工程順に説明するならば、少なくとも当該結果書込みキ
ュー手段を初期化する第1の工程、当該結果書込みキュ
ー手段の最先頭部の記憶回路部に格納されている演算処
理結果情報を読み出す第2の工程、当該最先頭部の記憶
回路部に格納されている情報が空であるか否かを判断す
る第3の工程、当該第3の工程に於いて空でないと判断
した場合には当該最先頭部の記憶回路部に格納されてい
る情報を疑似メモリ格納部若しくは疑似レジスタ格納部
に格納する第4の工程、当該第3の工程に於いて当該記
憶回路部が空である場合若しくは第4の工程の後に、疑
似メモリ格納部若しくは疑似レジスタ格納部から次の命
令を読み出す第5の工程、当該読み出された次の命令を
解読する第6の工程、当該命令が強制同期化命令である
か否を判断する第7の工程、当該命令が強制同期化命令
である場合には、当該結果書込みキューを構成する全て
の記憶回路部に格納されている演算処理結果情報を全て
疑似メモリ格納部若しくは疑似レジスタ格納部に書き込
む第8の工程、及び当該結果書込みキュー列を構成する
全ての記憶回路部に格納されている演算処理結果情報を
クリヤーする第9の工程、当該第7の工程に於いて、当
該実行命令が強制同期化命令でない場合には、当該実行
命令に従って所定の命令を実行する第10の工程、当該
実行命令に付いて、予め定められた非同期命令表を参照
する第11の工程、当該実行命令が非同期命令表である
か否かを判断する第12の工程、当該実行命令が非同期
命令である場合には、当該演算処理結果情報を該結果書
込みキュー列の最後部の記憶回路部に格納する第13の
工程、当該実行命令が非同期命令でない場合には、当該
演算処理結果情報を疑似メモリ格納部若しくは疑似レジ
スタ格納部に書き込む第14の工程、当該第9の工程、
第13の工程及び該第14の工程の後、第2の工程に戻
り上記した各工程を繰り返す第15の工程とから構成さ
れているシミュレーション処理方法である。
【0045】尚、上記本発明に係るシミュレーション処
理方法は、パイプライン構造のプロセッサに適用される
ものである。本発明に係る当該シミュレーション処理方
法の他の態様としては、少なくとも当該結果書込みキュ
ー手段を初期化する第1の工程、当該結果書込みキュー
手段の最先頭部の記憶回路部に格納されている演算処理
結果情報を読み出す第2の工程、当該最先頭部の記憶回
路部に格納されている情報が空であるか否かを判断する
第3の工程、当該第3の工程に於いて空でないと判断し
た場合には当該最先頭部の記憶回路部に格納されている
情報を疑似メモリ格納部若しくは疑似レジスタ格納部に
格納する第4の工程、当該第3の工程に於いて当該記憶
回路部が空である場合若しくは第4の工程の後に、疑似
メモリ格納部若しくは疑似レジスタ格納部から次の命令
を読み出す第5の工程、当該読み出された次の命令を解
読する第6の工程、当該命令が強制同期化命令であるか
否を判断する第7の工程、当該命令が強制同期化命令で
ある場合には、当該結果書込みキューを構成する全ての
記憶回路部に格納されている演算処理結果情報を全て疑
似メモリ格納部若しくは疑似レジスタ格納部に書き込む
第8の工程、及び当該結果書込みキュー列を構成する全
ての記憶回路部に格納されている演算処理結果情報をク
リヤーする第9の工程、当該第7の工程に於いて、当該
実行命令が強制同期化命令でない場合には、当該実行命
令に従って所定の命令を実行する第10の工程、当該実
行命令に付いて、予め定められた非同期命令表を参照す
る第11の工程、当該実行命令が非同期命令表であるか
否かを判断する第12の工程、当該実行命令が非同期命
令である場合には、当該演算処理結果情報を該結果書込
みキュー列の最後部の記憶回路部に格納する第13の工
程、当該実行命令が非同期命令でない場合には、当該演
算処理結果情報を疑似メモリ格納部若しくは疑似レジス
タ格納部に書き込む第14の工程、当該第9の工程、第
13の工程及び該第14の工程の後、第2の工程に戻り
上記した各工程を繰り返す第15の工程とから構成され
ているシミュレーション処理方法をコンピュータに実行
させる為のプログラムを記録した記録媒体である。
【0046】
【効果の説明】本発明は、上記した技術構成を採用して
いるので、仮想マシンにおいて命令の解読と実行を命令
順に逐次実行し、結果書き込みのみを必要に応じて遅延
させることにより、アウトオブオーダ方式のターゲット
プロセッサについて以下の効果が得られる。
【0047】(1)非同期命令の実行による命令間依存
性の無保証状態を再現する事が可能であるから、間違っ
た結果が発生していれば、その状態は必ず発見出来る事
を意味する。 (2)強制同期化命令の実行による命令間依存性の保証
を再現する事が出来る。この事は、非同期命令が実行さ
れた場合の結果は、強制同期化命令を入れる事によって
必ずその結果を見ることが可能となる。
【0048】(3)上記の2点を実現しながら逐次実行
を基本とするため、仮想マシンの実行速度の低下を最小
限にとどめながらアウトオブオーダー実行の動作を再現
し、仮想マシン上で走行するプログラムを正しく検証で
きる。
【図面の簡単な説明】
【図1】図1は、本発明に係るシミュレーション装置の
一具体例の構成を示すブロックダイアグラムである。
【図2】図2は、本発明に係るシミュレーション処理方
法を実行する場合の手順の一例を示すフローチャートで
ある。
【図3】図3(A)は、本発明に於ける結果書込みキュ
ー列の各記憶回路部に格納されている演算処理結果情報
の例を示す図であり、図3(B)は、次の実行命令が実
行された場合に於ける当該記憶回路部の変化の様子を説
明する図である。
【図4】図4は、本発明に於ける結果書込みキュー列の
他の具体例を示す図である。
【符号の説明】
1…データ処理装置 2…記憶装置 11…プログラム入力手段 12…第1の結果書込み手段 13…命令実行手段 14…第2の結果書込み手段 15…結果書込みキュー 16…疑似レジスタ格納部 17…疑似メモリ格納部 18…非同期命令表格納部 19…クリヤ手段 20…記憶回路部 30…シミュレーション装置

Claims (16)

    【特許請求の範囲】
  1. 【請求項1】 逐次命令実行によりアウトオブオーダ命
    令実行の動作を模擬する装置に於いて、ターゲットプロ
    グラム格納部、プログラム入力手段、当該プログラム入
    力手段が、当該ターゲットプログラム格納部から読み出
    した所定のプログラムを格納する疑似メモリ格納部、複
    数段の記憶回路部が互いに直列に接続されて構成された
    結果書込みキューであって、所定の命令が実行される毎
    に当該各結果書込みキューを構成するそれぞれの記憶回
    路部に記憶されているデータが、順次に隣接の記憶回路
    部に移動する様に構成された結果書込みキュー手段、当
    該プログラム入力手段の命令に従って、当該結果書込み
    キュー手段に於ける先頭の記憶回路部から当該記憶回路
    部に格納されている情報を取り出し、当該疑似メモリ格
    納部若しくは疑似レジスタ格納部に当該読出し情報を格
    納する第1の結果書込み手段、当該疑似メモリ格納部若
    しくは当該疑似レジスタ格納部から次の命令を読み出し
    て所定の命令を実行する命令実行手段、実行される命令
    が非同期命令であるか否かを予め定めた非同期命令表を
    格納する非同期命令表格納部、当該命令実行手段で実行
    された命令が非同期命令であるか同期命令であるかを判
    断し、当該命令が同期命令である場合には、当該命令実
    行手段により実行された演算結果を当該疑似メモリ格納
    部若しくは疑似レジスタ格納部に書き込む操作を行うと
    共に、当該命令が非同期命令である場合には、当該命令
    実行手段により実行された演算結果を当該結果書込みキ
    ューの最後の記憶回路部に書き込む第2の結果書込み手
    段とから構成されている事を特徴とする逐次命令実行に
    よりアウトオブオーダ命令実行の動作を模擬するシミュ
    レーション装置。
  2. 【請求項2】 当該結果書込みキューは、当該キュー列
    の最後部段に新たな演算結果が格納される毎に、それぞ
    れの記憶回路部に格納されているそれぞれの演算結果内
    容は順次隣接の記憶回路部に移動され、当該キュー列の
    最先頭部にある記憶回路部に格納されている演算内容
    が、当該第1の結果書込み手段に読み出される様に構成
    されている事を特徴とする請求項1記載のシミュレーシ
    ョン装置。
  3. 【請求項3】 当該第2の結果書込み手段に於いて当該
    命令実行手段により実行された命令が同期命令である場
    合には、当該結果書込みキューを構成する当該キュー列
    の最後部段にある記憶回路部には空の情報が格納される
    様に構成されている事を特徴とする請求項2記載のシミ
    ュレーション装置。
  4. 【請求項4】 当該命令実行手段は、当該命令実行手段
    が該疑似メモリ格納部から読み出した命令が強制同期化
    命令である場合には、当該結果書込みキューを構成する
    全ての記憶回路部に格納されている演算結果内容全てを
    当該疑似メモリ格納部若しくは当該疑似レジスタ格納部
    に書込み、同時に当該結果書込みキューを構成する全て
    の記憶回路部に格納されている演算結果内容をクリヤー
    処理するクリヤ手段が設けられている事を特徴とする請
    求項1乃至3の何れかに記載のシミュレーション装置。
  5. 【請求項5】 当該結果書込みキューは、複数のキュー
    列から構成されている事を特徴とする請求項1乃至4の
    何れかに記載のシミュレーション装置。
  6. 【請求項6】 当該複数のキュー列に於いて、互いに各
    キュー列を構成する当該記憶回路部の段数が異なる様に
    構成されている事を特徴とする請求項5記載のシミュレ
    ーション装置。
  7. 【請求項7】 ターゲットプログラムを読み出して、当
    該プログラムの実行命令に従って所定の演算処理を実行
    し、その結果を疑似メモリ格納部に格納するに際して、
    当該所定の演算処理に際して、当該演算処理を実行させ
    る実行命令が非同期命令である場合に、当該演算処理結
    果を予め定められた所定の回数の実行命令が実行された
    以後に当該疑似メモリ格納部に格納されるよう格納処理
    操作を遅延させる事を特徴とする逐次命令実行によりア
    ウトオブオーダ命令実行の動作を模擬するシミュレーシ
    ョン処理方法。
  8. 【請求項8】 当該遅延処理操作は、複数個の記憶回路
    部が直列に配置された結果書込みキュー列を使用し、新
    たな演算処理結果情報が、当該キュー列の最後段部の記
    憶回路部に格納されると、既に当該各記憶回路部のそれ
    ぞれに格納されている演算処理結果情報が、隣接する記
    憶回路部にそれぞれ移動され、最先頭部の記憶回路部に
    格納されている当該演算処理結果情報が当該キュー列か
    ら離脱せしめられる様に構成された結果書込みキューを
    使用するものである事を特徴とする請求項7記載のシミ
    ュレーション処理方法。
  9. 【請求項9】 当該最先頭部の記憶回路部に格納されて
    いる当該演算処理結果情報は、第1の結果書込み手段を
    使用して、当該最先頭部の記憶回路部に格納されている
    当該演算処理結果情報を読み取り、それを疑似メモリ格
    納部若しくは疑似レジスタ格納部に書き込まれる様に構
    成されている事を特徴とする請求項8記載のシミュレー
    ション処理方法。
  10. 【請求項10】 ターゲットプログラムを読み出して、
    当該プログラムの実行命令に従って所定の演算処理を実
    行し、その結果を疑似メモリ格納部に格納するに際し
    て、当該所定の演算処理に際して、第2の結果書込み手
    段を使用して、当該演算処理を実行させた実行命令が非
    同期命令であるか否かを判断し、当該実行命令が非同期
    命令である場合には、その演算処理結果情報を当該結果
    書込みキューの最後段部の記憶回路部に格納すると共
    に、当該実行命令が同期命令である場合には、その演算
    処理結果情報を直接疑似メモリ格納部若しくは疑似レジ
    スタ格納部に格納し当該結果書込みキューの最後段部の
    記憶回路部には、空の情報を書き込む様にする事を特徴
    とする請求項8記載のシミュレーション処理方法。
  11. 【請求項11】 当該ターゲットプログラムを読み出し
    て、当該プログラムの実行命令に従って所定の演算処理
    を実行し、その結果を疑似メモリ格納部に格納するに際
    して、当該所定の演算処理に際して、第2の結果書込み
    手段を使用して、当該演算処理を実行させた実行命令が
    強制同期化命令であるか否かを判断し、当該実行命令が
    強制同期化命令である場合には、当該結果書込みキュー
    を構成する全ての記憶回路部に格納されている演算結果
    内容を全て当該疑似レジスタ格納部若しくは疑似メモリ
    格納部に書込み、当該結果書込みキューを構成する全て
    の記憶回路部をクリヤー処理する事を特徴とする請求項
    7乃至10に記載のシミュレーション処理方法。
  12. 【請求項12】 当該演算処理は、予め定められたブレ
    ークポイントに到達した場合に停止する様に構成されて
    いる事を特徴とする請求項7乃至11の何れかに記載の
    シミュレーション処理方法。
  13. 【請求項13】 少なくとも当該結果書込みキュー手段
    を初期化する第1の工程、当該結果書込みキュー手段の
    最先頭部の記憶回路部に格納されている演算処理結果情
    報を読み出す第2の工程、当該最先頭部の記憶回路部に
    格納されている情報が空であるか否かを判断する第3の
    工程、当該第3の工程に於いて空でないと判断した場合
    には当該最先頭部の記憶回路部に格納されている情報を
    疑似メモリ格納部若しくは疑似レジスタ格納部に格納す
    る第4の工程、当該第3の工程に於いて当該記憶回路部
    が空である場合若しくは第4の工程の後に、疑似メモリ
    格納部若しくは疑似レジスタ格納部から次の命令を読み
    出す第5の工程、当該読み出された次の命令を解読する
    第6の工程、当該命令が強制同期化命令であるか否を判
    断する第7の工程、当該命令が強制同期化命令である場
    合には、当該結果書込みキューを構成する全ての記憶回
    路部に格納されている演算処理結果情報を全て疑似メモ
    リ格納部若しくは疑似レジスタ格納部に書き込む第8の
    工程、及び当該結果書込みキュー列を構成する全ての記
    憶回路部に格納されている演算処理結果情報をクリヤー
    する第9の工程、当該第7の工程に於いて、当該実行命
    令が強制同期化命令でない場合には、当該実行命令に従
    って所定の命令を実行する第10の工程、当該実行命令
    に付いて、予め定められた非同期命令表を参照する第1
    1の工程、当該実行命令が非同期命令表であるか否かを
    判断する第12の工程、当該実行命令が非同期命令であ
    る場合には、当該演算処理結果情報を該結果書込みキュ
    ー列の最後部の記憶回路部に格納する第13の工程、当
    該実行命令が非同期命令でない場合には、当該演算処理
    結果情報を疑似メモリ格納部若しくは疑似レジスタ格納
    部に書き込む第14の工程、当該第9の工程、第13の
    工程及び該第14の工程の後、第2の工程に戻り上記し
    た各工程を繰り返す第15の工程とから構成されている
    事を特徴とするシミュレーション処理方法。
  14. 【請求項14】 当該シミュレーション処理方法は予め
    定められたブレークポイントに到達した場合に当該処理
    フローを中止させる様に構成されている事を特徴とする
    請求項13記載のシミュレーション処理方法。
  15. 【請求項15】 当該シミュレーション処理方法は、パ
    イプライン構造のプロセッサに適用されるものである事
    を特徴とする請求項13又は14に記載のシミュレーシ
    ョン処理方法。
  16. 【請求項16】 少なくとも当該結果書込みキュー手段
    を初期化する第1の工程、当該結果書込みキュー手段の
    最先頭部の記憶回路部に格納されている演算処理結果情
    報を読み出す第2の工程、当該最先頭部の記憶回路部に
    格納されている情報が空であるか否かを判断する第3の
    工程、当該第3の工程に於いて空でないと判断した場合
    には当該最先頭部の記憶回路部に格納されている情報を
    疑似メモリ格納部若しくは疑似レジスタ格納部に格納す
    る第4の工程、当該第3の工程に於いて当該記憶回路部
    が空である場合若しくは第4の工程の後に、疑似メモリ
    格納部若しくは疑似レジスタ格納部から次の命令を読み
    出す第5の工程、当該読み出された次の命令を解読する
    第6の工程、当該命令が強制同期化命令であるか否を判
    断する第7の工程、当該命令が強制同期化命令である場
    合には、当該結果書込みキューを構成する全ての記憶回
    路部に格納されている演算処理結果情報を全て疑似メモ
    リ格納部若しくは疑似レジスタ格納部に書き込む第8の
    工程、及び当該結果書込みキュー列を構成する全ての記
    憶回路部に格納されている演算処理結果情報をクリヤー
    する第9の工程、当該第7の工程に於いて、当該実行命
    令が強制同期化命令でない場合には、当該実行命令に従
    って所定の命令を実行する第10の工程、当該実行命令
    に付いて、予め定められた非同期命令表を参照する第1
    1の工程、当該実行命令が非同期命令表であるか否かを
    判断する第12の工程、当該実行命令が非同期命令であ
    る場合には、当該演算処理結果情報を該結果書込みキュ
    ー列の最後部の記憶回路部に格納する第13の工程、当
    該実行命令が非同期命令でない場合には、当該演算処理
    結果情報を疑似メモリ格納部若しくは疑似レジスタ格納
    部に書き込む第14の工程、当該第9の工程、第13の
    工程及び該第14の工程の後、第2の工程に戻り上記し
    た各工程を繰り返す第15の工程とから構成されている
    シミュレーション処理方法をコンピュータに実行させる
    為のプログラムを記録した記録媒体。
JP9352747A 1997-12-22 1997-12-22 逐次命令実行によりアウトオブオーダ命令実行の動作を模擬するシミュレーション装置及びそのシミュレーション処理方法 Pending JPH11184731A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9352747A JPH11184731A (ja) 1997-12-22 1997-12-22 逐次命令実行によりアウトオブオーダ命令実行の動作を模擬するシミュレーション装置及びそのシミュレーション処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9352747A JPH11184731A (ja) 1997-12-22 1997-12-22 逐次命令実行によりアウトオブオーダ命令実行の動作を模擬するシミュレーション装置及びそのシミュレーション処理方法

Publications (1)

Publication Number Publication Date
JPH11184731A true JPH11184731A (ja) 1999-07-09

Family

ID=18426172

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9352747A Pending JPH11184731A (ja) 1997-12-22 1997-12-22 逐次命令実行によりアウトオブオーダ命令実行の動作を模擬するシミュレーション装置及びそのシミュレーション処理方法

Country Status (1)

Country Link
JP (1) JPH11184731A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6506244B1 (en) 1999-08-03 2003-01-14 Ciba Specialty Chemicals Corporation Stable polymorphic copper-free phthalocyanine pigment

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6506244B1 (en) 1999-08-03 2003-01-14 Ciba Specialty Chemicals Corporation Stable polymorphic copper-free phthalocyanine pigment

Similar Documents

Publication Publication Date Title
JP3984786B2 (ja) 異なる待ち時間を伴う命令のスケジューリング
US4879646A (en) Data processing system with a pipelined structure for editing trace memory contents and tracing operations during system debugging
EP3785124B1 (en) Memory validity states in time-travel debugging
US20020147965A1 (en) Tracing out-of-order data
US5845064A (en) Method for testing and verification of a CPU using a reference model
Bala et al. Efficient instruction scheduling using finite state automata
JPS58222355A (ja) 論理シミユレ−シヨン機械
US20140075249A1 (en) Execution History Tracing Method
KR19980032143A (ko) 멀티프로세서 회로의 시뮬레이션을 위한 방법 및 장치
CN110727584B (zh) 一种处理器硅前验证用的rtl与参考模型实时比较方法
US6301654B1 (en) System and method for permitting out-of-order execution of load and store instructions
JP2002163127A (ja) トレース制御回路
JP3274036B2 (ja) プロセッサの動作モデルと論理検証用試験命令列の自動生成方法及び装置
JPH11184731A (ja) 逐次命令実行によりアウトオブオーダ命令実行の動作を模擬するシミュレーション装置及びそのシミュレーション処理方法
JP2001117772A (ja) コンピュータ・プログラムのハザードを検出するシステム
JP2001256048A (ja) データ処理装置のシミュレーション
JP4608276B2 (ja) トレース制御回路、マイクロプロセッサ及びトレース制御方法
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
WO1988007239A1 (en) Apparatus and method for synchronization of arithmetic exceptions in parallel pipelined execution units
JP2001142700A (ja) パイプラインプロセッサにおける電力有効処理メカニズム
JPH09237191A (ja) プログラミング支援装置、プログラミング支援方法、及びプログラミング支援プログラムを記録した媒体
JP2002108647A (ja) トレースメモリを内蔵した半導体装置及びプロセッサ開発支援装置
JP2005165825A (ja) トレース情報記録装置
JP3349911B2 (ja) マイクロプロセッサ及びその開発支援装置
JP2883465B2 (ja) 電子計算機