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)で各モジュールにクロックを入力すれば、 シミュレータが動作する。