1: void 2: isim_system::initialize(unsigned int punum, int portnum) 3: { 4: soo.resize(punum); 5: shared_mem_isis.set_top(0x80000000); 6: shared_mem_isis.resize(0x7fffffff); 7: shmem.connect_mem(shared_mem_isis); 8: shbus.set_each_pu_port_num(portnum); 9: shbus.set_num_of_pu_port(portnum*punum); 10: shmem.ref_shbus_port().connect(shbus.ref_mm_port()); 11: for ( unsigned int i = 0; i < punum; i++ ) { 12: soo[i].set_puid(i); 13: soo[i].set_punum(punum); 14: soo[i].set_punum(portnum); 15: for ( int p = 0; p < portnum; p++ ) { 16: shbus.ref_to_pu_port(i*portnum+p).connect(soo[i].ref_to_pu_ port(p)); 17: shbus.ref_from_pu_port(i*portnum+p).connect(soo[i].ref_from _pu_port(p)); 18: } 19: } |
サンプルコードに沿って、システムが構成される流れを示す。
isim_processor
クラスのインスタンス
soo
の数を指定されたプロセッサ数分にする
mapped_memory
クラス(ISISが提供するメモリ)の
インスタンスshared_mem_isis
の先頭アドレスを
0x80000000
に設定する
shared_mem_isis
のサイズを0x7fffffff
に
設定する(終端アドレス = 0xffffffff
)
shmem
がアクセスするメモリを
shared_mem_isis
に設定する
shbus
にsoo
のポート数を通知する
shbus
のsoo
側のポートを生成
to_pu_port
*soo
毎のポート数*soo
数
from_pu_port
*soo
毎のポート数*soo
数
shmemのshbus_port
とshbusのmm_port
を接続する
soo
にプロセッサIDを割り振る
soo
にシステム上のsoo
数を通知する
soo
が外部と通信するためのポート数を
指定された数にする
shbusのto_pu_port
とsooのincoming_port
を
接続する
shbusのfrom_pu_port
とsooのoutgoing_port
を
接続する
以上のコードにより、図7.1のようなシステムが構築される。