シミュレータは、Dev.BoxのSH4プロセッサの動作を自分のコンピュータ上でシミュレーションするものです。[Memory]リージョンと[Register]リージョンについては実際のDev.Boxを使用します。 [Simulator]リージョンでシングルステップを行うと、カーソルはパイプライン中で現在実行されている命令を指します。シミュレーションの間、PCは現在の命令の先にある命令をフェッチします。 プログラムのフローの変化によって実行されない命令もあります。たとえば、ブランチの後にある命令などです。
![]() CodeScapeの他のリージョンでシングルステップすると、カーソルはPC(program counter)の位置に表示されます。 |
プロジェクトをシミュレーションすると、各命令がシミュレーション スロット(時間)中に実行されます。シミュレータが進むに従い、このパイプライン動作の次の情報がそのリージョンに表示されます。
・ソースコードのメモリ中のアドレス
・各命令のOpコード
・メモリのあるアドレスの各命令を実行するのに必要なCPU時間
・各命令のOpコードの逆アセンブル
・パイプライン動作の各ステージのスロット情報
1.縦のカーソルは、各スロットの命令を実行するのにプロセッサが必要とする時間を表す。
2.水平のカーソルは、アクティブなスロット中で時間を割り当てられている命令を表す。
・プロセッサのステータス情報
アクティブなスロットに関する情報はステータスバーに表示されます。 //tablm1[|l(8w)|l|][|l(8w)|l|]{ //kb ステータス 内容 //kb Diagnosis: ストールの原因とそのタイプ //kb Cache: 読み出し/書き込みのミスがあったときに起こるキャッシュメモリのストール //kb System clock: 現在のカーソル位置までに必要としたプロセッサ動作の全時間 //kb //tablm1}
![]() シミュレータによって生成された情報は、*.simという拡張子でコンフィギュレーション ファイルに保存できます。 |
シミュレータは、パイプラインのあるステージで命令の機能を評価します。 次の命令は、r0に保存されたアドレスから32ビット読み出し、次にその結果をr3にセットするように、プロセッサに指示します。
命令がシミュレートされたスロット(時間)中に実行されると、次の命令ステージがシミュレートされたパイプラインに表示されます:
この命令の実行中に次の操作が行われます。
・IFステージに命令のopコードがメモリから読み出されます。
・IDステージに命令がデコードされます。
・EXステージに命令の実行が開始され、r0の内容が読み出されます。
・MAステージにr0の指すメモリがアクセスされ、その値がデータ バスに保存されます。
・WBステージにデータ バスに保存された値が、r3の指すメモリに書き込まれます。