next up previous contents
Next: プロセッサから発行される要求に対する処理 Up: 新しいシミュレータの実装 Previous: void initialize(unsigned int, int)

void sim_main(void)

各モジュールにクロックを入れる。 パケットの送信や受信を行う記述をしている場合には、 クロックが入力されることで、 void initialize(unsigned int, int)において接続した モジュール間でパケットがやり取りされる。

      void
      isim_system::sim_main(void)
      {

                 ……………
                 ……………

 1:       for (;;) {
 2:           for ( unsigned int i = 0; i < soo.size(); i++ )
 3:               soo[i].clock_out();   
 4:
 5:           shbus.get_packet();     
 6:           shbus.send_packet();
 7:           shmem.clock();
 8:
 9:           for ( unsigned int i = 0; i < soo.size(); i++ ) {
10:               soo[i].clock_in();

                 ……………
                 ……………

              }
          }
      }

サンプルコードに沿って、システムが動作する流れを示す。

1:
シミュレータはプログラムの実行が終了するまで、 1ループ1クロックとして処理を進める
3:
sooがclock_out()の処理 (ruu_commit()、ruu_writeback()、ruu_issue())を行う
5:
sooおよびshmemからパケットが 発行されている場合には、shbusがそれらを受信する
6:
shbusがget_packet()で受信したパケットを 送信先に転送する
7:
shmemがclock()の処理を行う
10:
sooがclock_in()の処理 (ruu_dispatch()、ruu_fetch()、get_data())を行う

以上のように、作成したプロセッサ外部のモジュールを void initialize(unsigned int, int)で繋げ、 void sim_main(void)で各モジュールにクロックを入力すれば、 シミュレータが動作する。



next up previous contents
Next: プロセッサから発行される要求に対する処理 Up: 新しいシミュレータの実装 Previous: void initialize(unsigned int, int)
Toshiya Minai
平成17年2月1日