Next: シミュレータ上でアプリケーションの実行
Up: サンプルシミュレータ
Previous: シミュレータのmake
解凍後のsimple_bus_system/に、次のファイルが入っている。
- Makefile
- main.cc
- shared_memory_access_queue{.h,.cc}
- アドレス、データ、データサイズ、命令ID、プロセッサIDなどの
要素をリスト管理する。
- メンバ関数として、
- void insertlist(int, md_addr_t, word_t, word_t, half_t, byte_t, int, int, int, int, bool)
- void deletelist(int, md_addr_t, int)
- void get_data(int*, md_addr_t*, word_t*, word_t*, half_t*, byte_t*, int*, int*, int*, int, bool*)
が定義してある。
- shared_bus{.h,.cc}
- 図5.1のshared busを表す。
interface unitとPUに接続され、
要求やデータを送信したいinterface unitやPUに対して
アービトレーションを行い、それらに順次使用権を与える。
要求やデータの管理にはshared_memory_access_queue{.h,.cc}で
定義されたキューを用いる。
- メンバ関数として、
- void get_packet(void)
- PUおよびinterface unitからの要求を受け取り、
キューの末尾に順次追加する
- void send_packet(void)
- キューの先頭から要素を取り出し、
その要求に応じてPUまたはinterface unitに転送する
が定義してある。
- shared_memory{.h,.cc}
- 図5.1のinterface unit、shared memoryを表す。
shared busを介して転送されてきた要求に対して、
shared memoryからの読み出しやshared memoryへの書き込みを行う。
また、読み出し要求に対しては、
PUへの読み出しデータ送信要求をshared busに発行する。
要求やデータの管理にはshared_memory_access_queue{.h,.cc}で
定義されたキューを用いる。
- メンバ関数として、
- void clock(void)
- shared busから転送されてきた要求を受け取り、
キューAの末尾に順次追加する
- キューAの先頭から要求を取り出し、
その要求に応じたメモリアクセスを行う
- 読み出しデータ送信要求をキューBの末尾に順次追加する
- キューBの先頭から要求を取り出し、
shared busに発行する
が定義してある。
- isim_system{.h,.cc}
- シミュレータ全体のシステムを1つにまとめ、
ユニットの接続やクロックの分配を行う。
- メンバ関数として、
- void initialize(unsigned int, int)
- 引数として与えられた数分のPUを用意する
- 引数として与えられた数分のポートを用意する
- PUとshared bus、interface unitとshared busを接続する
- shared memoryの領域を指定する
- 各PUにIDを割り当てる
- void sim_main(void)
等が定義してある。
Next: シミュレータ上でアプリケーションの実行
Up: サンプルシミュレータ
Previous: シミュレータのmake
Toshiya Minai
平成17年2月1日