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のようなシステムが構築される。