Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP4243463B2 - 命令スケジューリングのシミュレーション方法とシミュレーションシステム - Google Patents
[go: Go Back, main page]

JP4243463B2 - 命令スケジューリングのシミュレーション方法とシミュレーションシステム - Google Patents

命令スケジューリングのシミュレーション方法とシミュレーションシステム Download PDF

Info

Publication number
JP4243463B2
JP4243463B2 JP2002238396A JP2002238396A JP4243463B2 JP 4243463 B2 JP4243463 B2 JP 4243463B2 JP 2002238396 A JP2002238396 A JP 2002238396A JP 2002238396 A JP2002238396 A JP 2002238396A JP 4243463 B2 JP4243463 B2 JP 4243463B2
Authority
JP
Japan
Prior art keywords
instruction
execution log
scheduling
instruction sequence
sequence
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
JP2002238396A
Other languages
English (en)
Other versions
JP2004078599A (ja
Inventor
中島  浩
Original Assignee
株式会社半導体理工学研究センター
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 株式会社半導体理工学研究センター filed Critical 株式会社半導体理工学研究センター
Priority to JP2002238396A priority Critical patent/JP4243463B2/ja
Priority to US10/405,944 priority patent/US7885806B2/en
Publication of JP2004078599A publication Critical patent/JP2004078599A/ja
Application granted granted Critical
Publication of JP4243463B2 publication Critical patent/JP4243463B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

【0001】
【発明の属する技術分野】
この発明は、プロセッサのプログラムのシミュレーション、特に命令スケジューリングのシミュレーション方法とシミュレーションシステムに関する。
【0002】
【従来の技術】
高速プロセッサを含むSOC(System On Chip)のような情報処理システムを開発する際、開発の一部の工程においては開発の対象(ターゲット)となるSOCの完成以前にソフトウェアを含めたシステム全体の性能評価や動作検証を行なわなければならない場合がある。また、精度良く性能評価や動作検証を行なうためには、CA(Cycle Accurate)シミュレータと称される、マシンサイクルの単位での高精度なシミュレータによるシミュレーションを行なう必要がある。一方、このようなCAシミュレータによるCAS(Cycle Accurate Simulation)、即ちCAシミュレーションの実行に際しては、性能評価や動作検証の対象となるSOCのプロセッサ、例えばCPUが高速、高性能である場合は、このCPUが実装された状態で実際に動作する時間の5000倍ないし10000倍程度の実行時間が必要となる。
【0003】
一般に、CAシミュレータは命令エミュレータおよび命令スケジューラから構成されている。この命令エミュレータでは開発されたソフトウエアの命令をフェッチするとともに実行し、命令スケジューラへは命令エミュレータで実行された命令が送られる。前記命令エミュレータから送られた命令に対して、命令スケジューラでスケジューリングが実行される。このように、命令エミュレータがフェッチして実行した命令は順次命令スケジューラに送られ、命令スケジューラが逐次命令スケジューリングを行なう。
【0004】
【発明が解決しようとする課題】
CASにおいては、SOCのシミュレータ内部で各マシンサイクルでの、例えばCPUの挙動、特に命令スケジューリングの処理を正確にシミュレートしなければならない。精度良くシミュレーションをするためには、このスケジューリング処理は必要不可欠である。上記のようなCAシミュレータの構成では、命令エミュレータの計算時間はCASにおける全体の処理時間の1パーセント程度であるが、逐次スケジューリングを行なう命令スケジューラでの計算時間はCAS全体の大半を占めている。
【0005】
このため、従来の技術ではCASにおける命令スケジューリングの実行時間がボトルネックとなり、システム全体の正確な性能評価や動作検証を高速且つ正確に行うことは困難であった。
【0006】
そこで、この発明は、システム全体の性能評価や動作検証の高速化を可能とした、命令スケジューリングのシミュレーション方法および命令スケジューリングのシミュレーションシステムを提供することを目的とする。
【0007】
【課題を解決するための手段】
上記目的を達成するためこの発明の一実施形態の命令スケジューリングのシミュレーション方法は、シミュレーション対象の命令列からループを検出し、ループが検出された状態における命令スケジューリング対象命令列を登録し、ループ周回毎に今回のスケジューリング対象命令列と登録されているスケジューリング対象命令列とを比較し、登録されたスケジューリング対象命令列と一致するときはその命令列に付いてのスケジューリングをスキップし、一致しないときは今回のスケジューリング対象命令列を新しく登録するとともにスケジューリングを実行することを特徴として構成されている。
【0008】
また、この発明の他の実施形態の命令スケジューリングのシミュレーションシステムは、シミュレーション対象の命令列からループを検出するループ検出手段と、前記ループ検出手段によりループが検出された状態における命令スケジューリング対象となる命令列を登録する登録手段と、ループ周回毎に今回の命令スケジューリング対象命令列と登録されている命令スケジューリング対象命令列とを比較する比較手段と、を有し、登録された命令スケジューリング対象命令列と一致するときは命令スケジューリングをスキップし、一致しないときは今回の命令スケジューリング対象命令列を新しく登録するとともに命令スケジューリングを実行することを特徴として構成されている。
【0009】
また、この発明の他の実施形態の命令スケジューリングのシミュレーションシステムは、フェッチされた命令列を実行し、実行ログを記録する命令エミュレータと、前記記録された実行ログに基づき命令スケジューリングを実行するとともに前記命令列に含まれるループを検出する命令スケジューラと、前記ループが検出された状態で前記命令スケジューラに保持されている命令列が登録される計算再利用エンジンと、を具備し、前記命令スケジューラは、前記ループの周回毎に、前記計算再利用エンジンに登録されている命令列と今回の命令スケジューリング対象となっている命令列とを比較する手段と、前記両者の命令列が一致した場合はスケジューリングをスキップし、一致しない場合は今回の命令列を新しく前記計算再利用エンジンに登録するとともに命令スケジューリングを実行する手段とを有することを特徴として構成されている。
【0010】
上記のように構成することにより、命令スケジューラの内容を計算再利用エンジンに登録することで、命令スケジューラは、ループを検出した場合、実行ログが送られた命令スケジューラの状態と以前に命令スケジューラの状態が登録された計算再利用エンジンの状態とを比較し、命令スケジューラの状態が計算再利用エンジンの状態と一致した場合はスケジューリングをスキップすることでスケジューリングの処理時間を短縮することが可能になる。特に対象となる命令列にループが多く含まれる場合はループ部分のスケジューリングをすることなく高速にSOCを含むようなシステムの性能評価および動作検証を精度良く実行することが可能になる。
【0011】
【発明の実施の形態】
以下、この発明の実施の形態について図面を参照して説明する。この実施の形態では性能評価および動作検証の対象としてSOCを例に取り上げるが、対象としてはこれに限らず、一般のプロセッサ、特に高速プロセッサに適用できることは勿論である。
【0012】
図1はSOCの性能評価、動作検証を行うためのこの実施形態のCAシミュレータを示す機能ブロック図を示す。このCAシミュレータは、命令エミュレータ1と、この命令エミュレータ1に付属した実行ログ記録部2と、命令スケジューラ3と計算再利用エンジン4とに分けて構成されている。また、この実施形態では、実行ログ記録部2は命令エミュレータ1の内部に配置されているが、この実行ログ記録部2は命令エミュレータ1の外部に配置されてもよく、あるいは命令スケジューラ3に付属させてもよい。即ち、CAシミュレータのどこかに配置されていればよいが、図1では説明を分かり易くするために命令エミュレータ1の外部に取り出して示している。
【0013】
まず、図1において、性能評価或いは動作検証の対象プログラムが格納されている図示しない主記憶部から、対象プログラムの命令列が1命令ずつ命令エミュレータ1に順次送られる。このように、命令エミュレータ1は主記憶部からの命令を順次、フェッチしている。また、命令エミュレータ1はフェッチした命令を先行して実行する機能も持っている。
【0014】
先行して実行された実行結果は実行ログとして実行ログの記録部2に順次送られる。この実行ログは実際に命令列が実行された結果であるので、分岐等も全て正確な結果が記録されている。この実施形態では、実行ログの記録部2は命令エミュレータ1で実行された実行結果をある一定量、例えば10000命令分だけ記録する容量を持つものとして構成されている。
【0015】
ここで、命令列の実行結果とは、命令を実行して得られる、その後の命令スケジューリングに必要かつ十分な情報であり、実行した命令のアドレス、命令自体、分岐の成否、分岐予想の成功・不成功、キャッシュのヒット、ミス、例外の有無等を含むものである。特に、シミュレーション対象のプログラム中の後方分岐命令を起点とする命令のループ部分で行なわれるループ計算を発見すべく、命令エミュレータ1では、後述するスケジューリングの前に、演算を含む命令の論理的な実行が行なわれる。
【0016】
実行ログの記録部2で記録された実行ログは、命令スケジューラ3に例えば2命令分ずつ送られる。なお、ここでは、実行ログの記録部2から命令スケジューラ3には2命令分ずつ送られるが、2命令分づつである必要はなく、1命令分づつでも良いし、3命令分以上を一度に送るようにしてもよい。
【0017】
命令スケジューラ3は、実行ログの記録部2から送られる実行ログに基づいて、命令を定期的にスケジューリングする。この命令スケジューラ3には、通常の命令スケジューリングに加え、実行ログに残された実行結果から命令列中に含まれるループを検出する機能を持たせる。この命令列のループを検出した命令スケジューラ3は、ループの周回毎に、即ち実行ログ中にループの両端位置を示す分岐アドレスと分岐先アドレスとが一致する前後する2個の後方分岐命令が含まれている度に、計算再利用エンジン4に対し、以前に同一のスケジューリング対象命令列が登録されているか否かを問い合わせる。同一のスケジューリング対象命令列が登録されていなければ、命令スケジューラ3内のパイプラインステージのスナップショット、即ちスケジューリング対象としてその時に命令スケジューラ3が保持している命令列を計算再利用エンジン4に登録する。このように、命令列の実行結果である実行ログにループが含まれていたときに、前記スケジューリング対象の命令列が計算再利用エンジン4に送られる。
【0018】
ここで、命令スケジューラ3内部は例えば3段階のパイプラインで構成されている。1段目(図2乃至図11で示す左端の列)では命令のフェッチとデコードを行い、2段目(図2乃至図11で示す中央列)ではロード命令LWが指示する主記憶部からのデータのフェッチ、加算命令ADDや減算命令SUBIに基づく演算、分岐命令BNEZにおける条件判定など、いわゆる演算動作を行う。また、3段目(図2乃至図11で示す右端の列)では演算結果のレジスタなどへの格納を行なう。このように、この実施形態では命令スケジューラ3において3段のパイプラインが構成されている。しかしながら、命令スケジューラ3を必ずしも3段のパイプラインで構成する必要はなく、例えば4段のパイプラインで構成されてもよい。
【0019】
また、計算再利用エンジン4は命令スケジューラ3でスケジューリングされる対象の命令列を、後で説明するように、ループ検出時に適宜記録するものである。従って、ループが検出されている状態で、計算再利用エンジン4に命令スケジューラ3の内容と同一の命令列が登録されていなければ、その命令列も登録するとともに、命令スケジューリングを実行してそのスケジューリング結果も登録しておく。また、既に登録されていた場合には、計算再利用エンジン4に格納されている結果を用いて、命令スケジューリングの処理をスキップする。このスキップ動作は、以後のスケジューリング演算において、ループが続く限り同様に行われ、ループ終了が検知されるまで繰り返される。つまり、ループが続く限りはそのループ内に含まれる命令列のスケジューリングはそのループの先頭で少なくとも1度行われてその結果が登録され、ループの2巡目以降はスケジューリングを行なわず、計算再利用エンジン4に格納されているスケジューリング結果を用いて以後の処理を行なう。
【0020】
これにより、ループ内の同じ命令列のスケジューリングが重複して行われることがなくなり、スケジューリング演算の時間を大幅に縮減することができる。尚、以下の説明において、ループ検出後の命令スケジューリングのスキップ動作は高速実行モードで行われるものとしてある。
【0021】
以上、この実施形態のCAシミュレータの概要を説明した。ここで、図1乃至図11の機能ブロック図および図12乃至図18のフローチャートを参照して、この実施形態における命令スケジューラ3のスケジューリングを高速化するための命令処理手順の詳細な説明を行う。
【0022】
CAシミュレーションの対象となるSOCで実行されるべきプログラムは、例えば図1のエミュレータ1に記載されたようなロード命令LW,加算命令ADD,減算命令SUBI、或いはループの起点となる分岐命令BNEZなどの機械命令プログラムの断片によって構成された命令列である。このような命令列をCAシミュレータによってシミュレーションすることで、SOCを含むようなシステムの性能評価あるいは動作検証を行うことができる。
【0023】
まず、図11のステップS0において、まだループ命令列が検出されず、また高速実行モードでもないので、ループ検出モードを論理値の偽(以下、FALSEと称する)とし、かつ高速実行モードもFALSEとする。
【0024】
次いで、処理は次のステップS1に移行する。このステップS1では、図2の命令エミュレータ1が図示しない主記憶部にアクセスし、この主記憶部にCAシミュレーション対象のプログラムの命令列が格納されているか否かがチェックされる。NOであれば、即ち対象の命令列が残存していなければ、処理は終了する。YESであれば、処理は次のステップS2に移行する。
【0025】
ステップS2では、この主記憶部から、シミュレーション対象プログラムの命令列がその先頭から1命令ずつ命令エミュレータ1に順次送られる。つまり、ステップS2において、命令エミュレータ1が主記憶部から命令列をフェッチする。すると、命令エミュレータ1は受け取った命令を先行して実行する。図2においては、最初にフェッチされた命令はロード命令LW(1)である。但し、図2乃至図9に示された命令エミュレータ1においては、一般的表示としてL:LWとして示してある。
【0026】
ここで、一例として図2に示されたロード命令「L:LW R3,0(R2)」の意味は、図示しない2番レジスタ(R2)が保持する値に0を加えた値、即ちレジスタR2の値そのものをアドレスとして主記憶部から1語を読み出し、その結果を図示しない3番レジスタ(R3)に格納する、ということである。
【0027】
次いで、ステップS3において、ループ検出モードであるか否か調べる。この場合はまだループ検出モードはFALSEであり、TRUEではないので、次のステップS4に移行し、このステップS4において前記の命令LW(1)が先行実行された実行結果を含む実行ログ21(1)を実行ログの記録部2に記録する。この実行ログは実際に命令列が実行された結果であるので、命令自体は勿論、分岐等も全て正確な結果が記録されることになる。なお、この実行ログの記録部2は、後述するように、この実施形態では10000個の実行ログの記録容量を持つように設定されている。
【0028】
更に、この実行ログの記録部2に記録した実行ログ21(1)は命令スケジューリングのために命令スケジューラ3に転送される。この実施形態では、実行ログの記録部2から命令スケジューラ3へ2命令分ずつの実行ログが順次送られるように設定されており、最初の命令LW(1)が命令エミュレータ1にフェッチされた段階ではまだ送られない。
【0029】
次いで、処理はステップS5に移行し、実行ログの記録部2に記録された実行ログ22(1)が後方分岐であるか否かがチェックされる。このロード命令LW(1)は後方分岐ではないので、処理はステップS10へ移る。このステップS10においては、実行ログの記録部2に1サイクル分のスケジューリング対象命令列が格納されているかをチェックする。最初の命令LW(1)に関する実行ログ21(1)が記録部2に記録された時点ではまだ1サイクル分のスケジュール対象命令列が格納されていない。従って、スケジューリングは実行されないため、処理はステップS2へ戻る。
【0030】
この状態で、命令エミュレータ1は次の加算命令ADD(1)をフェッチする。このフェッチされた加算命令ADD(1)に関しても処理はロード命令LW(1)と同様に、ステップS3、S4、S5、S10と進む。
【0031】
ここで、図2の命令エミュレータ1内に一例として記載された加算命令「ADD R1,R1,R3」の意味は、図示しないレジスタR1の値とレジスタR3の値を加算した結果をレジスタR1に格納する、ということである。
【0032】
ステップS10において、この加算命令ADD(1)に関する実行ログ22(1)が図2に示すように実行ログの記録部2に記録された時点では、1サイクル分のスケジューリング対象命令列が格納されていることになる。そのため、処理はステップS11に移行し、実行ログの記録部2から1サイクル分のスケジューリング対象命令列であるロード命令LW(1)および加算命令ADD(1)の実行ログ21(1)、22(1)が命令スケジューラ3に送られ、スケジューリングが実行される。
【0033】
図2に示す命令スケジューラ3内には、命令LW(1)およびADD(1)の実行ログ21(1)、22(1)がスケジューリングされた結果を示す。このスケジューリングが実行されると、処理はステップS11からステップS2へ戻る。
【0034】
すると、ステップS2において、命令エミュレータ1は新たに減算命令SUBI(1)をフェッチする。図2の命令エミュレータ1ではこの減算命令SUBI(1)は一般表示SUBIで示されている。この減算命令SUBI(1)に関する処理は、同様に順次ステップS2、S3、S4、S5、S10と進む。ステップS10において、図3に示したように、減算命令SUBI(1)に関する実行ログ23(1)が実行ログの記録部2に記録された時点では、該実行ログの記録部2に次の1サイクル分のスケジューリング対象命令列は格納されていないため、スケジューリングは行なわず、処理はステップS2へ戻る。
【0035】
ここで、図2の命令エミュレータ1内に一例として記載された減算命令「SUBI R2,R2,#1」の意味は、レジスタR2の値から即値1(#1)を減算した結果をレジスタR2に格納する、と言うことである。
【0036】
命令エミュレータ1は次の分岐命令BNEZ(1)をフェッチする。以下、この分岐命令BNEZ(1)に関する処理は減算命令SUBI(1)と同様に、ステップS2、S3、S4、S5と進む。しかし、この分岐命令BNEZ(1)に付いての先行実行結果の実行ログ24(1)が図3に示すように実行ログの記録部2に記録されると、分岐命令BNEZ(1)が後方分岐命令であるときは、今度はステップS5におけるチェックの結果がYESとなり、処理はステップS6へと進む。
【0037】
ここで、図2の命令エミュレータ1内に一例として示された分岐命令「BNEZ R2,L」は条件分岐命令であり、その意味は、レジスタR2の値が0でなければラベルL、即ちロード命令LWの番地へジャンプし、そうでなければ引き続く命令を実行する、と言うことである。
【0038】
ステップS6では、直前の後方分岐命令の先行実行結果と今回の分岐命令の先行実行結果とを比較し、この両者の分岐命令アドレスおよび分岐先アドレスが一致するか否かをチェックする。
【0039】
例えば、最初の後方分岐命令がフェッチされると、この分岐命令を先行実行し、この分岐命令のアドレス(例えば、A)、分岐先アドレス(例えば、B)を実行ログに記録するとともに、その実行ログの記録部2および実行ログの記録部2における記録位置(例えばC)を例えば命令エミュレータ1内に記録する。その後、2つ目の後方分岐命令がフェッチされた際に、この後発の分岐命令の先行実行の結果得られた各アドレスを位置Cに記憶したアドレスA、Bと比較する。
【0040】
しかしながら、ここでは、このフェッチされた分岐命令が最初の分岐命令であるため、先行する分岐命令に関する記録がないため、チェック結果はNOとなり、BNEZ(1)のアドレス、分岐先アドレスを実行ログ24(1)に記録し、実行ログ24(1)の記録位置を前述のCに記憶した上で、処理はステップS11へ移る。
【0041】
この状態では、実行ログの記録部2には1サイクル分のスケジューリング対象命令列である減算命令SUBI(1)および分岐命令BNEZ(1)に関する実行ログ23(1)、24(1)が格納されているので、スケジューリングを実行するためにこれらの命令は命令スケジューラ3に送られる。このときの命令スケジューラ3の内容が図3に示されている。
【0042】
この図3の状態では、命令スケジューラ3には減算命令SUBI(1)および分岐命令BNEZ(1)の実行ログ23(1)、24(1)がスケジューリングされた結果を示す。このスケジューリングが実行されると処理は再びステップS2へ戻る。
【0043】
ステップS2において、命令エミュレータ1はロード命令LW(2)をフェッチして実行し、次いで加算命令ADD(2)をフェッチして実行する。ここで、ロード命令LW(2)、および加算命令ADD(2)に関する処理の動作は、各々前出のロード命令LW(1)、および加算命令ADD(1)と同様である。即ち、ロード命令LW(2)に関する処理はステップS2、S3、S4、S5、S10の順に進行し、次いで加算命令ADD(2)に関する処理がステップS2、S3、S4、S5、S10、S11と進むので説明は省略する。
【0044】
図4は、実行ログの記録部2からロード命令LW(2)および加算命令ADD(2)の2命令の実行ログ21(2)、22(2)が命令スケジューラ3に送られ、スケジューリングが行なわれたところを示すものである。この結果、処理は再びステップS2へ移る。
【0045】
このステップS2では、新たに減算命令SUBI(2)を命令エミュレータ1はフェッチする。この減算命令SUBI(2)に関する処理動作はステップS2、S3、S4、S5、S10と進んでステップS2へ戻る。この結果、減算命令SUBI(2)の実行ログ23(2)は記録部2に記録される。
【0046】
この状態でステップS2では、命令エミュレータ1は次の命令として分岐命令BNEZ(2)をフェッチし、実行する。この分岐命令BNEZ(2)に関する処理動作はステップS2、S3、S4、S5、S6と進む。この時、命令エミュレータ1で先行実行された2番目の分岐命令BNEZ(2)に関する実行ログ24(2)は図5に示すように実行ログの記録部2に記録されるとともに、命令スケジューラ3の第1パイプラインに送られる。ここでは、ステップS5において後方分岐であるか否かのチェック結果がYESとなるから、処理はステップS6に進む。
【0047】
このステップS6においては記録部2の記録位置Cに記録されている直前の、即ち最初の後方分岐命令BNEZ(1)の実行ログ24(1)と、今回の2番目の分岐命令BNEZ(2)の実行ログ24(2)夫々の分岐命令アドレスおよび分岐先アドレスが一致するため、ステップS6のチェック結果がYESとなり、ループが検出されたことになり、処理はステップS7へ進む。このステップS7ではループ検出モードがTRUE(論理値の真)となる。
【0048】
この設定されたループ検出モードでは、新しくフェッチされた命令を命令エミュレータ1で実行する度に、その命令の実行結果と、前記実行ログの記録位置C以降に記録された先行命令の実行結果である実行ログの内容と比較し、一致するか否かがチェックされる。この一致判断が成立している間がループである。この処理に付いての詳細な説明はステップS12において後述する。
【0049】
前述のように、2番目の分岐命令BNEZ(2)に関する処理のステップS7では、ループ検出モードが論理値の真(以下、TRUEと称する)となる。また、このとき命令エミュレータ1には、実行ログ比較のために参照する実行ログ記録位置(例えばD)として、先行する分岐命令BNEZ(1)の実行ログ24(1)の記録位置Cの次の位置、すなわちロード命令LW(2)の実行ログ21(2)の記録位置が記憶される。また、実行ログの記録位置Cは、現在の分岐命令BNEZ(2)の実行ログ24(2)の記録位置に更新される。
【0050】
次のステップS8において、図5に示すように、実行ログの記録部2から1サイクル分のスケジューリング対象命令列の減算命令SUBI(2)の実行ログ23(2)および分岐命令BNEZ(2)の実行ログ24(2)を命令スケジューラ3に送り、スケジューリングを実行する。
【0051】
その後、ステップS9において、命令スケジューラ3においてスケジューリング対象として保持されている命令列を命令スケジューラ3の3段のパイプラインからスナップショットとして計算再利用エンジン4に格納して登録する。なお、図5に示すように、このときの登録命令列をXとする。また、命令スケジューラ3のスケジューリング内容も計算再利用エンジン4の内部に保存する。この命令スケジューラ3の内容が計算再利用エンジン4にAとして登録されると、処理は再びS2へ戻る。
【0052】
次に、命令エミュレータ1は命令LW(3)をフェッチし、実行する。その後、ステップS2、S3と進む。この段階では、既にループ検出モードに入っているため、ステップS3からステップS12へ移る。このステップS12では、実行した命令の実行結果が、実行ログの記録位置Dに記録された直前のループ繰り返しにおける先行命令の実行結果と一致するか否かをチェックする。
【0053】
この場合、最新命令の実行結果は、実行ログの記録位置Dに記録された先行命令であるLW(2)の実行ログ21(2)の内容と一致するため、ステップS12の結果はYESとなり、処理は次のステップS18へ移る。このステップS18においては、このフェッチされ実行された命令の実行結果を実行ログの記録部2に記録し、参照する実行ログ記録位置Dを1つ進め、ステップS19へ進む。
【0054】
このステップS19では、高速実行モードであるか否かのチェックが行われる。ステップS19において、このロード命令LW(3)がフェッチされた時点ではまだ高速実行モードではないため、処理は次のステップS20へ進む。このロード命令LW(3)に関する先行実行の結果は実行ログ21(3)として図6に示すように記録部2に記録されるとともに、命令スケジューラ3の第1パイプラインに供給される。
【0055】
ステップS20では、この実行ログ21(3)の命令が後方分岐命令であるか否かがチェックされる。このロード命令LW(3)は後方分岐命令ではないので、チェック結果はNOとなり、処理はステップS10へ移る。
【0056】
このステップS10の段階では、実行ログに次の1サイクル分のスケジューリング対象命令列は格納されていないので、処理はステップS2へ戻る。
【0057】
次の加算命令ADD(3)を命令エミュレータ1はフェッチし、実行する。その後、この加算命令ADD(3)に関する処理動作は、前述のロード命令LW(3)と同様であり、ステップS2、S3、S12、S18、S19、S20、S10と順次進むので説明は省略する。
【0058】
ここで、ステップS10においては、実行ログの記録部2に加算命令ADD(3)に関する実行結果の実行ログ22(3)が記録された結果、1サイクル分のスケジューリング対象命令列が格納されているため、処理はステップS10からステップS11へ進む。すると、ステップS11において、実行ログの記録部2から1サイクル分のスケジューリング対象命令列を命令スケジューラ3に送りスケジューリングを実行する。
【0059】
図6に示すように、命令スケジューラ3にはロード命令LW(3)および加算命令ADD(3)がスケジューリングされた結果を示す。このスケジューリングが実行されると、処理は再びステップS2へ戻る。
【0060】
次に、命令エミュレータ1は減算命令SUBI(3)をフェッチし、実行する。その後、この減算命令SUBI(3)に関する処理動作は前述のロード命令LW(3)と同様であり、ステップS2、S3、S12、S18、S19、S20、S10と順次進むので説明は省略する。
【0061】
このステップS10においては、まだ実行ログの記録部2に1サイクル分のスケジューリング対象命令列が格納されていないため、処理は再びステップS2へ戻る。すると、命令エミュレータ1は新たに分岐命令BNEZ(3)をフェッチし、実行する。その後、この分岐命令BNEZ(3)に関する処理動作は、ステップS2、S3、S12、S18、S19、S20と順次進む。
【0062】
この分岐命令BNEZ(3)は後方分岐命令であるため、この時はステップS20から次のステップS21へ進む。またその際、実行ログの記録位置Cは、現在の分岐命令BNEZ(3)の実行ログ24(3)の記録位置に更新される。ステップS21においては、実行ログの記録部2から実行ログ24(3)を含む次の1サイクル分のスケジューリング対象命令列の実行ログを命令スケジューラ3に送り、スケジューリングを実行する。その後、ステップS22へ進む。
【0063】
ステップS22では、命令スケジューラ3のスケジューリング対象となる命令列の内容が、既に計算再利用エンジン4に登録されているか否かをチェックする。ここで減算命令SUBI(3)および分岐命令BNEZ(3)が命令スケジューラ3に供給された状態は、すでに計算再利用エンジン4に登録されている図5の登録命令列Xと一致するため、処理はステップS24へ移る。
【0064】
ステップS24では高速実行モードをTRUEに設定する。また、登録命令列Xが計算再利用エンジン4に既に登録されている状態であり、この登録命令列Xが再利用されたので、既に登録された命令列Xを再利用状態として設定する。また、この再利用状態を直前に登録した状態の次の状態とする。ここでは直前に登録した状態も命令列Xであるので、Xの次の状態がXとなる。その後、ステップS2へ戻る。
【0065】
図7には命令スケジューラ3に減算命令SUBI(3)および分岐命令BNEZ(3)の実行ログ23(3)、24(3)が供給され、保持された状態を示す。
【0066】
図7に示すように、減算命令SUBI(3)および分岐BNEZ(3)が送られた命令スケジューラ3の命令保持状態と、直前、即ちループ1回前の減算命令SUBI(2)および分岐命令BNEZ(2)が、命令スケジューラ3でスケジューリングされたときの計算再利用エンジン4に送られた命令スケジューラ3の命令保持状態と一致するので、このループ一周前のスケジューリング計算結果が再利用できることがわかる。すなわち、同じループが終了するまで同じスケジューリングが繰り返し演算される必要はなく、スケジューリングはスキップされ、必要に応じて最初にスケジューリングされた結果が利用される。
【0067】
この場合は、命令スケジューラ3の命令列保持状態と直前の計算再利用エンジン3に登録された登録命令列Aとが一致したが、不一致になることもある。その場合は、計算再利用エンジン4に既に登録されている登録命令列Aとは別に、他の登録命令列(例えば登録命令列B)を新たに計算再利用エンジン4に登録する。従って、ループ周回が検出された状態で命令スケジューラ3に命令列が供給された段階で、すでに計算再利用エンジン4に登録された複数の登録内容との比較の結果、その内の一つと内容が一致した場合は、そのとき命令スケジューラ3に供給された命令列に関してスケジューリング演算を行う必要がなく、高速実行モードにおけるスケジューリングの高速化が可能になる。
【0068】
次に、ステップS2において命令エミュレータ1はロード命令LW(4)をフェッチし、実行する。その後、このロード命令LW(4)に関する処理はロード命令LW(3)と同様にステップS2、S3、S12、S18、S19と順次進むので説明は省略する。
【0069】
ステップS19において、この時点では既に高速実行モードが設定されているので、ステップS25へ移る。ステップS25では、この命令が後方分岐命令であるか否かをチェックする。ここで、ロード命令LW(4)は後方分岐命令ではないので、ステップS2へ戻る。
【0070】
その後、加算命令ADD(4)、減算命令SUBI(4)および分岐命令BNEZ(4)が命令エミュレータ1によって順次フェッチされ、実行される。ここで、これらの加算命令ADD(4)、減算命令SUBI(4)および分岐命令BNEZ(4)に関する処理動作はロード命令LW(4)と同様であり、ステップS2、S3、S12、S18、S19、S25と順次進むので説明は省略する。
【0071】
ステップS25において、分岐命令BNEZ(4)がフェッチされた場合は、チェックの結果はYESとなり、実行ログの記録位置Cを現在の分岐命令BNEZ(4)の実行ログ24(4)の記録位置に更新した上で、ステップS26へ進む。このステップS26においては、再利用状態として設定されている命令列を、その次の状態に置き換える。ここでは元の再利用状態は命令列Xであり、かつその次の状態も命令列Xであるので結果的に再利用状態は変化しない。
【0072】
図8には、再利用状態である命令列Xにより命令スケジューラの状態が設定され、命令スケジューラ3に減算命令SUBI(4)および分岐命令BNEZ(4)の2命令の実行ログ23(4)、24(4)が供給された状態となっていることが示されている。
【0073】
以降、同じループが続く限り同じスケジューリング結果が繰り返し発生することになるため、ループが終了するまで、計算再利用エンジン4に格納されている登録データを用いて、命令スケジューラ3における命令スケジューリングの処理をスキップすることになる。例えば、ループ回数が100回続いてからそのループが終了すると仮定すると、ループ99回目の繰り返しである命令列のロード命令LW(99)、加算命令ADD(99)、減算命令SUBI(99)および分岐命令BNEZ(99)までの処理に関しては、命令列LW(4)、ADD(4)、SUBI(4)およびBNEZ(4)と同じ動作をし、計算再利用エンジン4の登録内容を再利用できる状態にあり、命令スケジューリングはすべてスキップされる。この時点でのCAシミュレータの状態を図9に示す。
【0074】
次に、ループ100回目のCAシミュレータの状態を図10に示す。ステップS2において、ロード命令LW(100)を命令エミュレータ1はフェッチして実行する。このロード命令LW(100)に関する処理動作は、以前のロード命令LW(4)と同様であり、ステップS2、S3、S12、S18、S19、S25と進む。又、加算命令ADD(100)、減算命令SUBI(100)に関する処理動作も以前の加算命令ADD(4)、減算命令SUBI(4)と同様であるので説明は省略する。
【0075】
その後、ステップS2において、分岐命令BNEZ(100)を命令エミュレータ1がフェッチし、実行する。この段階ではまだループ検出モードであるので、処理はステップS3からステップS12へ進む。この時、分岐命令BNEZ(100)は一連のループの最後の命令であるから、その実行結果、即ち分岐先アドレスなどはそれ以前のループ中の実行ログの記録個所の内容と一致しないので、今度はステップS13へ進む。
【0076】
ステップS13ではループ検出モードはこの時点でFALSEとなる。その後、処理はステップS14へ進み高速実行モードであるか否かがチェックされる。この段階ではまだ高速実行モードであるのでステップS15へ進む。
【0077】
このステップS15においては高速実行モードがFALSEに設定される。この場合、図10に示すように、分岐命令BNEZ(100)の実行ログ24(100)を実行ログの記録部2に記録する。この後、処理は直前の後方分岐命令の次の実行ログの記録個所、すなわちBNEZ(99)の実行ログ24(99)の記録位置Cの次の位置であるLW(100)の実行ログ21(100)の記録位置まで戻る。なおこの時点において命令スケジューラの状態は図9に示した状態のままである。
【0078】
この結果、処理はステップS16に進み、実行ログから1サイクル分のスケジューリング対象命令列LW(100)およびADD(100)の実行ログ21(100)、22(100)を命令スケジューラ3に送りスケジューリングを実行する。
【0079】
その後、処理は次のステップS17へ進み、現在のループ内で実行ログの記録部2に既に登録されているスケジューリングすべき実行ログがまだ残っているか否かがチェックされる。この段階では実行ログはまだ残っているので、処理はステップS16へ戻る。
【0080】
この状態では、ステップS16において、図10に示すように、実行ログの記録部2から1サイクル分のスケジューリング対象命令列の減算命令SUBI(100)および分岐命令BNEZ(100)の実行ログ23(100)、24(100)を命令スケジューラ3に送り、スケジューリングを実行する。ここで、ループ回数を100回と想定しているので、この段階でループ繰り返しの実行ログは尽きる。従って、この場合、ステップS17においてチェック結果はNOとなりステップS2へ戻る。
【0081】
このようにしてループ処理が終わり、ステップS2において、次の新たな命令next1が命令エミュレータ1によりフェッチされ、先行実行される。その後、処理はステップS3に進む。この時点では新しいループはまだ検出されていないので、ループ検出モードではなく、ステップS4において、新しい命令next1の実行結果を実行ログの記録部2に記録する。
【0082】
次いで、ステップS5において後方分岐であるか否かがチェックされる。この命令next1が後方分岐の命令ではない場合は、ステップS10へ進む。命令next1の実行ログ25が図11に示すように実行ログの記録部2に格納された時点では、まだ1サイクル分のスケジューリング対象命令列は格納されていないため、スケジューリングは実行されない。そのため、処理はステップS2へ戻る。
【0083】
ここで、次の命令next2を命令エミュレータ1はフェッチし、実行する。その後、この命令next2に関する処理はステップS2、S3、S4、S5、S10と進む。この時点では、1サイクル分のスケジューリング対象命令列next1およびnext2の実行ログ25,26が格納されているので、ステップS11へと進む。すると、実行ログの記録部2から1サイクル分のスケジューリング対象命令列の実行ログ25,26が命令スケジューラ3に供給され、スケジューリングが実行される。
【0084】
以後、主記憶部にスケジューリング対象命令がある限り、上記説明したような動作が続く。
【0085】
なお、以上の説明では図示したフローチャートに示したすべての処理について述べていない。例えば、ステップS14からステップS4への処理の流れがある。つまり、一つのループに関する処理が終了していない段階で、新しく命令エミュレータ1によりフェッチされた命令に関して、ステップS12においてその命令の実行結果と実行ログの内容が何らかの原因で不一致となる場合がある。この場合は、ステップS12の結果がNOとなるから、ステップS13においてループ検出モード=FALSEとなり、且つ高速実行モード=FALSEの状況となる。この場合は処理はステップS14からステップS4に移行し、別のループ検出動作が行われることになる。
【0086】
また、ステップS22からステップS23への処理がある。ここで、例えば、既に登録されていた命令列がXであり、ステップS22でこれと比較されるスケジューラ3の命令列もXであれば、ステップS24において高速実行モードがTRUEとして設定されるとともに、この命令列Xが再利用状態に設定され、更に、この再利用の次の状態の命令列もXとなる。
【0087】
しかしながら、この再利用状態の次の状態の命令列が別の状態である、例えば命令列Yである場合がある。例えば、ステップS9で登録された命令列をXとし、ステップS22で比較される命令列がこれと異なる命令列Yである場合には、ステップS22からステップS23に移行する。この場合はステップS23で命令列Bが登録されるから、この命令列BはこのステップS23では、直前に登録したスケジューラ3の命令列Xの次の状態として設定されることになる。
【0088】
この状態で次のループ周回時には比較すべき命令列はXであるから、ステップS22からステップS24に移行し、命令列Xが再利用状態として設定され、その結果、この命令列Xが直前に登録された状態Yの次の状態となる。
【0089】
ステップS24で高速実行モードが設定されるから、次のループ周回時にはステップS19からステップS25を介してステップS26に移行する。ここでは命令列Yが再利用されるから、次のループ周回時の再利用命令列はXとなり、更に次のループ周回時には今度は命令列Xが再利用される。このようにして、命令列X,YがステップS26でループ周回毎に交互に再利用されることになる。
【0090】
このような構成のCAシミュレータを用いることにより、命令スケジューリングに必要な計算時間を大幅に短縮することが可能となり、特に、ループの多い、即ち一つのループの繰り返し回数が多い計算のCASは大幅に高速化されることになる。
【0091】
以上の説明では実行ログの記録部2における実行ログの記録容量について特に規定していないが、通常は、先行実行のログが10000命令分あればシミュレーションのためには実質的に十分であると考えられる。この場合、10000命令分の実行ログが記録されるまでは、形成される実行ログは実行ログの記録部2に順次格納される。ここで、10001番目の命令の実行結果が実行ログの記録部2に送られると、一番最初に格納された1番目の実行ログを消去し、その位置に10001番目の命令を代わりに記録するように設定されている。このような設定をすることである一定量(例えば10000命令分)のみを保存し、それ以前の古い命令の実行ログは新しい命令に対する実行ログを作るたびに捨てていくようにすれば、ログ記録部の記録容量を現実的サイズとすることができる。但し、この場合は、ループの繰り返し1回分がログ記録部の記録容量以内であることが必要であるが、10000命令分もあれば実質的に十分であると考えられる。しかしながら、シミュレーション対象の開発されたプログラムに含まれるループの内容によっては、実行ログの記録容量を更に大きく、または小さくすることもできることは勿論である。
【0092】
このような構成のCAシミュレータを用いることにより、命令スケジューリングに必要な計算時間を大幅に短縮することが可能となり、特にループの数が多く、且つ一つのループの繰り返し回数が多いプログラムのシミュレーションが大幅に高速化されることになる。よって、大きな計算時間を必要とする命令スケジューラのスケジューリングの処理時間を大幅に短縮することができる。
【0093】
【発明の効果】
以上詳述したようにこの発明によれば、開発された情報処理システムのソフトウエアの性能評価や動作検証を行なう際に、命令スケジューリングの処理時間を大幅に短縮することができ、高速、高精度なシミュレーションが可能な命令スケジューリングのシミュレーション方法およびシミュレーションシステムを提供することが出来る。
【図面の簡単な説明】
【図1】この発明の一実施形態の命令スケジューリングのシミュレーションシステムの機能ブロック図。
【図2】図1の機能ブロック図において命令スケジューラに新たな2命令が送られた状態を示す図。
【図3】図2の状態に続いて命令スケジューラに更に新たな2命令が送られた状態を示す図。
【図4】図3の状態に続いて命令スケジューラに更に新たな2命令が送られた状態を示す図。
【図5】図4に続いて命令スケジューラに更に新たな2命令が送られるとともにループが検出され、計算再利用エンジンにこの時の命令スケジューラの内容を登録した状態を示す図。
【図6】図5に続いて命令スケジューラに更に新たな2命令が送られた状態を示す図。
【図7】図6に続いて命令スケジューラに更に新たな2命令が送られるとともに、ループ検出モードにおいてそのときの命令スケジューラの内容と計算再利用エンジンの既登録内容とが一致した状態を示す図。
【図8】図7に続いてループ検出モードにおいて命令スケジューラに更に新たな2命令が送られたときに、計算再利用エンジンに格納されている内容を用いて命令スケジューリングの処理をスキップさせる状態を示す図。
【図9】図8に続いてループ検出モードにおいて命令スケジューラに新たな2命令が送られ、計算再利用エンジンに格納されている内容を用いて命令スケジューリングの処理をスキップした後、ループが終了される状態を示す図。
【図10】図9に続いて命令スケジューラに新たな2命令が送られた状態でループの終了に伴い命令スケジューリング処理のスキップが終了される状態を示す図。
【図11】図10に続いてループ終了後に命令スケジューラに新たな2命令が送られた状態を示す図。
【図12】この発明の一実施形態のシミュレーションシステムの動作のフローの最初の部分を示すフローチャート。
【図13】この発明の一実施形態のシミュレーションシステムの動作のフローにおける図12に示したものに続く部分を示すフローチャート。
【図14】この発明の一実施形態のシミュレーションシステムの動作のフローにおける図12及び図16に示したものに続く部分を示すフローチャート。
【図15】この発明の一実施形態のシミュレーションシステムの動作のフローにおける図12に示したものに続く部分を示すフローチャート。
【図16】この発明の一実施形態のシミュレーションシステムの動作のフローにおける図15に示したものに続く部分を示すフローチャート。
【図17】この発明の一実施形態のシミュレーションシステムの動作のフローにおける図16に示したものに続く部分を示すフローチャート。
【図18】この発明の一実施形態のシミュレーションシステムの動作のフローにおける図16に示したものに続く部分を示すフローチャート。
【符号の説明】
1…命令エミュレータ、
2…実行ログの記録部、
3…命令スケジューラ、
4…計算再利用エンジン、
21(1)・・・最初のロード命令の実行ログ、
22(1)・・・最初の加算命令の実行ログ、
23(1)・・・最初の減算命令の実行ログ、
24(1)・・・最初の分岐命令の実行ログ、
21(100)・・・ループ最後のロード命令の実行ログ、
22(100)・・・ループ最後の加算命令の実行ログ、
23(100)・・・ループ最後の減算命令の実行ログ、
24(100)・・・ループ最後の分岐命令の実行ログ、
25・・・ループ後の最初の命令の実行ログ。

Claims (6)

  1. 与えられたシミュレーション対象の命令列を先行実行するエミュレータから得られた実行ログを実行ログの記録部に記録し、
    前記記録された実行ログに基づき命令スケジューラによる命令スケジューリングが実行された命令列を計算再利用エンジンに格納して保持し前記保持された命令列と後続の命令列との一致が前記命令スケジューラによるループ検出時に検出されたときには前記後続の命令列のスケジューリングをスキップして前記保持されているスケジューリング結果を再利用する、
    ことを特徴とする命令スケジューリングのシミュレーション方法。
  2. 前記シミュレーション対象の命令列は少なくとも1個の後方分岐命令を含み、前記後方分岐命令のアドレスが既に実行された命令列のアドレスと一致したときに前記ループが検出されることを特徴とする請求項1に記載の命令スケジューリングのシミュレーション方法。
  3. 前記実行ログの記録部は、前記命令列を先行実行して得られた実行ログを前記シミュレーション対象の命令列に対応して一定量記憶し、前記実行ログが前記一定量を越えた際は、前記記憶した実行ログの最古の実行ログから順次消去し、書き換えることを特徴とする請求項1または請求項2に記載の命令スケジューリングのシミュレーション方法。
  4. 与えられたシミュレーション対象の命令列を先行実行するエミュレータから得られた実行ログを記録する実行ログの記録部と、
    前記記録された実行ログに基づき命令スケジューラによる命令スケジューリングが実行された命令列を格納して保持し、前記保持された命令列と後続の命令列との一致が前記命令スケジューラによるループ検出時に検出されたときには前記後続の命令列のスケジューリングをスキップして前記格納して保持されているスケジューリング結果を再利用する手段と
    を具備することを特徴とする命令スケジューリングのシミュレーションシステム。
  5. 前記シミュレーション対象の命令列は少なくとも1個の後方分岐命令を含み、前記後方分岐命令のアドレスが既に実行された命令列のアドレスと一致したときに前記ループが検出されることを特徴とする請求項4に記載の命令スケジューリングのシミュレーションシステム。
  6. 前記記録部は前記命令列を先行実行して得られた実行ログを前記シミュレーション対象の命令列として一定量記憶し、前記実行ログが前記一定量を越えた際は、前記記憶した実行ログの最古の実行ログから順次消去し、書き換えることを特徴とする請求項4または請求項5に記載の命令スケジューリングのシミュレーションシステム。
JP2002238396A 2002-08-19 2002-08-19 命令スケジューリングのシミュレーション方法とシミュレーションシステム Expired - Fee Related JP4243463B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002238396A JP4243463B2 (ja) 2002-08-19 2002-08-19 命令スケジューリングのシミュレーション方法とシミュレーションシステム
US10/405,944 US7885806B2 (en) 2002-08-19 2003-03-31 Simulation method and simulation system of instruction scheduling

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002238396A JP4243463B2 (ja) 2002-08-19 2002-08-19 命令スケジューリングのシミュレーション方法とシミュレーションシステム

Publications (2)

Publication Number Publication Date
JP2004078599A JP2004078599A (ja) 2004-03-11
JP4243463B2 true JP4243463B2 (ja) 2009-03-25

Family

ID=31712198

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002238396A Expired - Fee Related JP4243463B2 (ja) 2002-08-19 2002-08-19 命令スケジューリングのシミュレーション方法とシミュレーションシステム

Country Status (2)

Country Link
US (1) US7885806B2 (ja)
JP (1) JP4243463B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8245201B2 (en) * 2004-04-30 2012-08-14 International Business Machines Corporation Method and system for recording and replaying service interactions
US20060190710A1 (en) * 2005-02-24 2006-08-24 Bohuslav Rychlik Suppressing update of a branch history register by loop-ending branches
US8904155B2 (en) * 2006-03-17 2014-12-02 Qualcomm Incorporated Representing loop branches in a branch history register with multiple bits
JP2010102372A (ja) * 2008-10-21 2010-05-06 Toyota Motor Corp データ処理装置、検証システム、データ処理装置検証方法
US9256451B2 (en) * 2012-06-29 2016-02-09 Oracle International Corporation Emulation time correction
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10409606B2 (en) * 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58103047A (ja) 1981-12-16 1983-06-18 Hitachi Ltd 命令トレ−ス装置
US4914568A (en) * 1986-10-24 1990-04-03 National Instruments, Inc. Graphical system for modelling a process and associated method
JPH0668722B2 (ja) 1986-10-09 1994-08-31 日本電気株式会社 命令処理順序制御装置
JPH07295832A (ja) 1994-04-25 1995-11-10 Mitsubishi Electric Corp 計算機シミュレータ
JP3362972B2 (ja) 1994-08-30 2003-01-07 松下電器産業株式会社 ソフトウェアシミュレータ
JP2000020349A (ja) 1998-07-06 2000-01-21 Toshiba Corp プログラム開発支援装置、プログラム開発支援方法及びプログラム開発支援用プログラムを記録した媒体

Also Published As

Publication number Publication date
US7885806B2 (en) 2011-02-08
JP2004078599A (ja) 2004-03-11
US20040034852A1 (en) 2004-02-19

Similar Documents

Publication Publication Date Title
US5615357A (en) System and method for verifying processor performance
US6694427B1 (en) Method system and apparatus for instruction tracing with out of order processors
JP2746549B2 (ja) コンピュータシステム及びその動作方法
US4710866A (en) Method and apparatus for validating prefetched instruction
US5845064A (en) Method for testing and verification of a CPU using a reference model
US20130152048A1 (en) Test method, processing device, test program generation method and test program generator
US8612944B2 (en) Code evaluation for in-order processing
JP3570855B2 (ja) 分岐予測装置
JPS6028015B2 (ja) 情報処理装置
JPH03282958A (ja) 電子計算機
JP4243463B2 (ja) 命令スケジューリングのシミュレーション方法とシミュレーションシステム
CN114116002B (zh) 一种存储重命名的实现方法、处理器及计算机设备
US8250344B2 (en) Methods and apparatus for dynamic prediction by software
JPH05250499A (ja) データフロー計算機
US6681321B1 (en) Method system and apparatus for instruction execution tracing with out of order processors
JP3274036B2 (ja) プロセッサの動作モデルと論理検証用試験命令列の自動生成方法及び装置
CN1322415C (zh) 用于重放转换的指令的方法和装置
JP2001306334A (ja) エミュレーション装置
US7302556B2 (en) Method, apparatus and computer program product for implementing level bias function for branch prediction control for generating test simulation vectors
CN114780409A (zh) 基于程序运行进程的断点设置方法、电子设备和存储介质
JP3324542B2 (ja) 仮想マシン
US12248787B2 (en) Method and electronic device for monitoring executable code adapted to be executed on a computer platform, and computer program implementing such a method
US11366668B1 (en) Method and apparatus for comparing predicated load value with masked load value
EP0155275B1 (en) Prefetch validation
JP3762597B2 (ja) 計算機とその制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050502

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20051115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060116

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20060124

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20060331

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081119

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: 20090105

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

Free format text: PAYMENT UNTIL: 20120109

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120109

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130109

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130109

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees