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();
……………
……………
}
}
}
|
サンプルコードに沿って、システムが動作する流れを示す。
sooがclock_out()の処理
(ruu_commit()、ruu_writeback()、ruu_issue())を行う
sooの出力ポート(outgoing_port)にパケットが発行される
sooおよびshmemからパケットが
発行されている場合には、shbusがそれらを受信する
shbusがget_packet()で受信したパケットを
送信先に転送する
shmemがclock()の処理を行う
shbusからパケットが送信されてきている場合には、
そのパケットを受信する
shmemのshbus_portに発行される
sooがclock_in()の処理
(ruu_dispatch()、ruu_fetch()、get_data())を行う
shmemからの読み出しデータが転送されてきている場合には、
それを受信する
以上のように、作成したプロセッサ外部のモジュールを void initialize(unsigned int, int)で繋げ、 void sim_main(void)で各モジュールにクロックを入力すれば、 シミュレータが動作する。