[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ユニットはハードウェアの機能ブロックを表現する。クロック入力に同期して 動作するユニットを同期ユニット、パケット到着時に動作するユニットを非同 期ユニットと呼ぶ。以下の実装済ユニットは、ほとんどが同期ユニットである。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
すべての状態遷移を行う機能ブロック(ユニット)のクラスの基底クラス。ユニッ
トを表すクラスは全てこのクラスの派生クラスとして実装される。
unit
クラスは抽象クラスであり、その派生クラスに対して状態の初期
化(リセット)機能のインタフェースを規定する働きを持つ。
asynchronous_unit
、synchronous_unit
の基底クラスとしての
み使用される。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
パケット入力によって状態遷移を行うユニット(非同期ユニット)のクラスの基
底クラス。非同期ユニットを表すクラスは全てこのクラスの派生クラスとして
実装される。同期ユニットと異なり、クロック入力ではなくパケットの到着に
よって起動される。そのため、到着パケットに対して遅延なしで応答するハー
ドウェアユニットを実装することができる。asynchronous_unit
クラス
は抽象クラスであり、その派生クラスに対して活性化機能のインタフェースを
規定する働きを持つ。
asynchronous_unit
クラスは以下の純粋仮想関数を持つ。具体派生クラ
スは全ての純粋仮想関数に定義を与える必要がある。また、
asynchronous_unit
クラスはroot_object
クラスの派生クラスと
して実装されているため、root_objectクラスの仮想関数も実装する必要があ
る。See section 4.1 root_objectクラス.
void activate(port&)
port
クラスのオブジェクトから自動的に呼ばれる関数であるため、不
用意に呼び出しを行ってはならない。
void reset(void)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
クロック入力によって状態遷移を行うユニット(同期ユニット)のクラスの基底
クラス。同期ユニットを表すクラスは全てこのクラスの派生クラスとして実装
される。synchronous_unit
クラスは抽象クラスであり、その派生クラ
スに対して状態遷移(クロック入力)、状態の初期化(リセット)機能のインタ
フェースを規定する働きを持つ。
状態遷移関数は2つあり、交互に呼び出されることによって状態遷移を行う。1
つは外部からの情報入力フェーズ、もう1つは外部への情報出力フェーズを実
行する。情報の入出力はport
クラスのオブジェクトによって行われる。
synchronous_unit
クラスは以下の純粋仮想関数を持つ。派生クラスは
全ての純粋仮想関数に定義を与える必要がある。また、
synchronous_unit
クラスはroot_objectクラスの派生クラスとして実
装されているため、root_object
クラスの仮想関数も実装する必要があ
る。See section 4.1 root_objectクラス.
void clock_in(void)
void clock_out(void)
void reset(void)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
同期ユニットの集合をまとめて単一の同期ユニットとして扱うためのユニット。 プロセシングユニットなどの実装に用いられる。内部に同期ユニットへのポイ ンタのリストを持っており、リスト内に登録された同期ユニットへのクロック の分配、リセットの分配を行う。
以下の4つのprotectedメンバ関数が派生クラスのために用意されている。派生 クラスは、以下の関数を用いて同期ユニットとしての機能を整える。
void insert_synchronous_unit(synchronous_unit&)
void erase_synchronous_unit(synchronous_unit&)
void insert_synchronous_unit_set(synchronous_unit_set&)
void erase_synchronous_unit_set(synchronous_unit_set&)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
プロセッサを表す抽象クラス。全てのプロセッサの基底クラスとなる。このク
ラス自身がsingle_port_synchronous_unit
クラスの派生クラスなので、
実際のプロセッサクラスの実装者はsingle_port_synchronous_unit
ク
ラスの純粋仮想関数と以下の純粋仮想関数を定義する必要がある。
virtual data_type register_file(size_t) const
virtual address_type program_counter(void) const
virtual bool is_halt(void) const
virtual bool is_stall(void) const
virtual bool is_reading(void) const
virtual bool is_writing(void) const
virtual bool is_user_mode(void) const
virtual bool is_kernel_mode(void) const
virtual void halt(void)
virtual size_t frequency_magnification(void) const
virtual void set_frequency_magnification(size_t)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
メモリコントローラに相当するクラス。mapped_memory
クラスを接続す
ることで、一次記憶装置を構成することができる。アクセスには
bus_port
クラスを使用する。単一ワード転送、バースト転送、スプリッ
トトランザクションを行うことができる。また、リードアクセス時間、ライト
アクセス時間を個別に設定できる。
unsigned int read_wait(void) const
unsigned int write_wait(void) const
void set_read_wait(unsigned int)
void set_write_wait(unsigned int)
bool is_connected_to_memory(void) const
void connect_memory(memory_type&)
void disconnect_memory(void)
void enable_split_transaction(void)
void disable_split_transaction(void)
また、継承クラスでFetch and Decrement不可分命令をサポートするようなメ モリコントローラを実装できるよう、以下の限定公開関数が仮想関数化されて いる。
data_type read(address_type)
void write(address_type, data_type)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
メモリコントローラに相当するクラス。read要求に対しては、Fetch and
Decrementを行う。memory_control_unit
クラスの派生クラスで、使用
方法はmemory_control_unit
と同一。See section 8.6 memory_control_unitクラス.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
システムの停止を検出するためのクラス。あらかじめ設定されたある特定のア ドレスへの書き込み要求を監視し、要求が発生するとそれを検出する簡単な同 期ユニットである。この特定のアドレスへの書き込みを「システム停止命令」 として定義することで、ソフトウェア側からのシステム停止命令の送信とシミュ レータ側でのシステム停止の検出を容易に行うことができる。
void set_address(address_type)
address_type address(void) const
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
バスエラーの停止を検出するためのクラス。バス上に同一アドレスへの要求が 一定時間送信されたままになった場合をバスエラーと見なす。
void set_timeout(unsigned int)
bool is_bus_error(void) const
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
タイマを表すクラス。内部にカウンタを1つ持ち、クロック入力毎にその値を インクリメントする。このユニットを用いることで、シミュレータ上のソフト ウェアでシミュレーション単位時間での実行時間計測を行える。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
発行されたメモリアクセスをトレースし、アドレストレースファイルへ出力す るためのクラス。接続されたバス上のパケットを監視し、設定されたアドレス 範囲へのリード要求およびライト要求を待つ。アクセス要求を検出すると、接 続されたストリームへ時刻、プロセッサ番号、アクセスの種類、アドレスをテ キスト形式で出力する。値はすべて16進数である。プロセッサ番号は、設定さ れたID番号があればそのID番号、なければバスのオーナID番号が使用される。
int id(void) const
bool is_valid_address(address_type) const
void set_id(int)
void reset_id(void)
void set_valid_address(address_type, size_type)
void connect_stream(ostream&)
void disconnect_stream(void)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
シミュレートされる計算機とシミュレータ間の通信を仲介するユニットである。
このユニットを介してキャラクタベースの半二重の通信路が確保される。シミュ
レートされる計算機との通信は、mapped_memory
クラスのアドレス空間
の一部を通信デバイスのハードウェアレジスタとして使用することにより行わ
れる。シミュレータ上で動作するソフトウェアは、特定のアドレスに対してリー
ド/ライトをすることによって通信を制御する。
シミュレータ側の処理は、comm_io_unit
内部の送信キューと受信キュー
を操作することによって行われる。ユーザはキューにアクセスすることで通信
を制御する。
ソフトウェア側の処理はOSIRISライブラリ内のsend_to_host
、
receive_from_host
関数によって行われるため、ユーザが実際の通信プ
ロトコルを意識する必要はない。
このクラスは他のユニットの一部として動作するよう設計されている。ハード ウェアレジスタに対するアクセス要求そのものは処理しないので、このクラス のオブジェクト以外のユニットでメモリアクセスを処理しなければならない。
8.12.1 comm_io_unitクラスの定義 8.12.2 comm_io_unitクラスのレジスタ 8.12.3 comm_io_unitクラスの通信プロトコル
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
comm_io_unit(address_type, size_type)
void set_address(address_type, size_type)
bool is_big_endian(void) const
bool is_little_endian(void) const
void set_big_endian(void)
void set_little_endian(void)
bool can_put(void) const
bool can_get(void) const
void put(char_type)
char_type get(void)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
comm_io_unit
クラスは、シミュレートされる計算機との通信をハード
ウェアレジスタを介して行う。使用されるハードウェアレジスタは次の4つで
ある。
これらのレジスタは、setup関数でハードウェアレジスタの初期化を行った際 に配置される。その配置は以下の通りである。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
シミュレートされる計算機とシミュレータとの通信は、計算機がハードウェア レジスタにアクセスすることにより起動される。データの送受信には、ハード ウェアレジスタの他に、シミュレータ側に用意された送信キュー、受信キュー が使用される。
パケットの型を決定するヘッダの値は、ヘッダファイル`io_protocol.h' で定義されている。このファイルはシミュレータのコンパイル、シミュレート されるソフトウェアのコンパイルの両方で共用される。
以下のソフトウェア側の処理は、OSIRISライブラリ内のsend_to_host
、
receive_from_host
関数によって行われるため、ユーザがこの通信プロ
トコルを意識する必要はない。
COMM_IO_SEND_REQUEST
を書き込む。
comm_io_unit
のオブジェクトが、ヘッダに
COMM_IO_SEND_REQUEST
が書き込まれたことを感知し、データをユニッ
ト内部の受信キュー(recv_queue
)に格納する。受信に問題がなければ、
ヘッダにCOMM_IO_ACK
を、パケットサイズレジスタに受信したデータ数
を書き込む。問題がある場合はヘッダにCOMM_IO_NACK
を書き込む。
COMM_IO_ACK
が書き込まれていることを確認する。
COMM_IO_RECEIVE_REQUEST
を書き込む。
comm_io_unit
のオブジェクトが、ヘッダに
COMM_IO_RECEIVE_REQUEST
が書き込まれたことを感知し、データをユニッ
ト内部の送信キュー(send_queue
)から取り出してデータレジスタに格
納する。送信に問題がなければ、ヘッダにCOMM_IO_ACK
を、パケットサ
イズレジスタに送信したデータ数を書き込む。問題がある場合はヘッダに
COMM_IO_NACK
を書き込む。
COMM_IO_ACK
が書き込まれていることを確認し、データを受信
する。
can_put
メンバ関数で、送信キューに文字を送れるかどうか確認する。
put
メンバ関数で文字を送る。
can_get
関数で、受信キューに文字が格納されているかどうか確認する。
get
関数で文字を受け取る。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
単一ユニットでいくつかの入出力機能を同時にサービスするユニットである。
このユニットを用いることで、システム停止要求の検出、sysinfo_map
による連想配列データベース、fileio_map
によるファイル入出力、
argument_map
によるコマンドライン引数の参照と終了ステータスの通
知、時刻計測を行うことができる。
ソフトウェア側の処理はOSIRISライブラリ内の一連のmulti_io_unit
用
の通信ライブラリ関数によって行われるため、ユーザが実際の通信プロトコル
を意識する必要はない。
8.13.1 multi_io_unitクラスの定義 8.13.2 multi_io_unitクラスの通信プロトコル
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
void set_address(address_type, size_type)
bool is_halt(void) const
bool is_defined_sysinfo(const string&) const
bool is_defined_integer_sysinfo(const string&) const
bool is_defined_string_sysinfo(const string&) const
data_type get_integer_sysinfo(const string&) const
const string& get_string_sysinfo(const string&) const
void set_sysinfo(const string&, data_type)
void set_sysinfo(const string&, const string&)
void unset_sysinfo(const string&)
void set_file_table_size(size_t)
void set_file_input_stream(size_t, istream&)
void set_file_output_stream(size_t, ostream&)
unsigned long timer_clock_value(void) const
int commandline_argc(void) const
const char* commandline_argv(size_t) const
void set_commandline_argument(const char* const*)
void commandline_status(void) const
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
シミュレータ上で動作するソフトウェアは、以下の通信プロトコルにしたがっ
てmulti_io_unit
と通信を行うことで様々な入出力を行う。通信プロト
コルに用いられる定数は`io_protocol.h'に定義されている。
また、一連の通信プロトコルはcomm_io_unit
による仮想的なキャラク
タベースの通信路上に確保されているので、下位の通信プロトコルとして
comm_io_unit
用の通信プロトコルを用いなければならない。
See section 8.12.3 comm_io_unitクラスの通信プロトコル.
IO_HALT_REQUEST
(1byte)を送信する。
COMM_IO_ACK
(1byte)を受信する。
IO_SYSINFO_READ_INTEGER_REQUEST
(1byte)、keyの長さ(sizeof(int)
byte)、key文字列(n byte)を送信する。
IO_COMM_ACK
なら成功、IO_COMM_NACK
な
ら失敗。
IO_SYSINFO_READ_STRING_REQUEST
(1byte)、keyの長さ(sizeof(int)
byte)、key文字列(n byte)を送信する。
IO_COMM_ACK
なら成功、IO_COMM_NACK
な
ら失敗。
IO_SYSINFO_WRITE_INTEGER_REQUEST
(1byte)、keyの長さ(sizeof(int)
byte)、key文字列(n byte)、値(sizeof(int) byte)を送信する。
IO_COMM_ACK
なら成功、IO_COMM_NACK
な
ら失敗。
IO_SYSINFO_WRITE_STRING_REQUEST
(1byte)、keyの長さ(sizeof(int)
byte)、key文字列(n byte)、値の長さ(sizeof(int) byte)、値(n byte)を送信
する。
IO_COMM_ACK
なら成功、IO_COMM_NACK
な
ら失敗。
IO_FILE_OPEN_REQUEST
(1byte)、フラグ(1byte)、ファイル名の長さ
(sizeof(int) byte)、ファイル名(n byte)を送信する。フラグの値は
`io_protocol.h'のIO_FILE_OPEN_*で定義されている。
IO_COMM_ACK
なら成功、IO_COMM_NACK
な
ら失敗。
IO_FILE_CLOSE_REQUEST
(1byte)、ファイル記述子(sizeof(int) byte)を
送信する。
IO_COMM_ACK
なら成功、IO_COMM_NACK
な
ら失敗。
IO_FILE_READ_REQUEST
(1byte)、ファイル記述子(sizeof(int) byte)を
送信する。
IO_COMM_ACK
なら成功、IO_COMM_NACK
な
ら失敗。失敗したらここで終了。
IO_FILE_WRITE_REQUEST
(1byte)、ファイル記述子(sizeof(int) byte)
を送信する。
IO_COMM_ACK
なら成功、IO_COMM_NACK
な
ら失敗。失敗したらここで終了。
IO_FILE_LSEEK_REQUEST
(1byte)、ファイル記述子(sizeof(int) byte)
を送信する。
IO_COMM_ACK
なら成功、IO_COMM_NACK
な
ら失敗。失敗したらここで終了。
IO_FILE_SEEK_*
で定義されて
いる。
argc
値の読み込み
IO_COMMANDLINE_READ_ARGC_REQUEST
(1byte)を送信する。
IO_COMM_ACK
なら成功、IO_COMM_NACK
な
ら失敗。
argc
値(sizeof(int) byte)を受信する。
argv
値の読み込み
IO_COMMANDLINE_READ_ARGV_REQUEST
(1byte)、読み込みたい
argv
値の要素番号(sizeof(int) byte)を送信する。
IO_COMM_ACK
なら成功、IO_COMM_NACK
な
ら失敗。
argv
値の長さ(sizeof(int) byte)、argv
値(n byte)を
受信する。
IO_COMMANDLINE_WRITE_STATUS_REQUEST
(1byte)、ステータス値
(sizeof(int) byte)を送信する。
IO_COMM_ACK
なら成功、IO_COMM_NACK
な
ら失敗。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
相互結合網を構成するルータを表す抽象クラス。このクラスは抽象クラスであ り、すべてのルータはこのクラスの派生クラスとして実装される。
設定したチャネル数の入力チャネルと出力チャネルがあり、それぞれのチャネ ルは仮想チャネル構成になっている。また内部には、入力物理チャネルと出力 物理チャネル間を結ぶクロスバ、各入力仮想チャネルそれぞれに対するチャネ ルコントローラ、各出力仮想チャネルそれぞれに対するロックフラグテーブル を持つ。また、状態監視のために、ルータ内部を通過した総パケット数を保持 するカウンタを持つ。
すべてのルータは、routerの公開インタフェースを通じて使用される。また、 派生クラスの機能は、routerで定義されている限定公開メンバを含む仮想関数 を再定義することで実装される。
8.14.1 routerの公開インタフェース 8.14.2 routerの限定公開インタフェース 8.14.3 ルータ内部のチャネルコントローラ 8.14.4 新しいルータの作成手順
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
virtual void setup(void)
virtual void reset_counter(void)
virtual_channel_input& input_channel(size_t)
virtual_channel_output& output_channel(size_t)
node_address_type node_address(void) const
void set_node_address(node_address_type)
size_t input_size(void) const
size_t output_size(void) const
size_t channel_size(size_t) const
size_t buffer_size(size_t) const
size_t buffer_length(size_t) const
void set_channel_size(size_t, size_t)
void set_buffer_size(size_t, size_t)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
channel_controller& internal_controller(size_t, size_t)
crossbar& internal_crossbar(void)
bool is_locked_output_virtual_channel(size_t, size_t)
void lock_output_virtual_channel(size_t, size_t)
bool unlock_output_virtual_channel(size_t, size_t)
void set_input_size(size_t)
void set_output_size(size_t)
void increment_total_hop_count(void)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ルータ内部の入力仮想チャネル制御コントローラは、それ自体がクラスとして 実装されている。チャネルコントローラは内部に以下の値/状態を保持してい る。
チャネルコントローラ動作の基本となるのは「状態」で、以下のように3状態 を順番に繰り返すことでパケット転送を行なう。また、転送状態にある時は active/inactiveの副状態を持つ。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
新たなルータを作成する場合は、routerクラスで定義されている以下の純粋仮 想関数を定義しなければならない。
clock_in
clock_out
setup
reset
これらの関数をすべて1つの派生クラスで記述するのは繁雑である。この作業
を簡略化させる目的で、deterministic_router
クラスと
duato_router
クラスが定義されている。See section duato_router class.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
送信ノードアドレスと受信ノードアドレスから、パケットの経路が一意に決定
するルーティングを行なうルータの基底クラスである。このクラスは
router
クラスの派生クラスで、router
クラスで未定義であった
clock_in
, clock_out
, setup
, reset
関数が定
義されている。派生クラスでは、仮想関数routing
のみを定義すれば良
い。
void routing(const packet_type&, channel_controller&)
このクラスは、クロック入力ごとに以下の順序で処理を行なう。
[clock_in] select_output_virtual_channel
[clock_in] arbitrate_output_virtual_channel
[clock_in] arbitrate_output_physical_channel
[clock_out] transmit_packet
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Duatoの必要十分条件に基づいて、適応ルーティングとエスケープパスルーティ ングを行なうルータの基底クラスである。このクラスはrouterクラスの派生ク ラスで、routerクラスで未定義であったclock_in, clock_out, setup, reset が定義されている。派生クラスでは、仮想関数adaptive_routingと escape_routingを定義する必要がある。
void adaptive_routing(const packet_type&, channel_controller&)
void escape_routing(const packet_type&, channel_controller&)
このクラスは、クロック入力ごとに以下の順序で処理を行なう。
[clock_in] arbitrate_output_channel_for_adaptive
[clock_in] select_output_virtual_channel
[clock_in] arbitrate_output_virtual_channel
[clock_in] arbitrate_output_physical_channel
[clock_out] transmit_packet
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
ネットワークインタフェースを表す同期ユニットである。ルータに接続して動 作させる。このクラスは抽象クラスではないが、公開インタフェースにパケッ トの送信と受信機能が用意されていないため、実際のネットワークインタフェー スを実装するためには派生クラスを用いる。
1つの入力チャネルと1つの出力チャネル、指定した大きさの送信キューと受信 キューを持つ。また、状態監視のために、送信した総パケット数と総フリット 数、受信した総パケット数と総フリット数、受信したパケットの遅延の総計を 保持するカウンタを持つ。
パケットの転送遅延を測定するために、内部に現在の時刻を保持している。現 在の実装では、システム内に存在するすべてのネットワークインタフェースの 時刻を一致させないと、パケットの転送遅延を測定することはできない。
8.17.1 network_interfaceの公開インタフェース 8.17.2 network_interfaceの限定公開インタフェース
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
size_t send_queue_size(void) const
void set_send_queue_size(size_t)
size_t receive_queue_size(void) const
void set_receive_queue_size(size_t)
size_t send_queue_length(void) const
size_t receive_queue_length(void) const
const virtual_channel_input& input_channel(void) const
const virtual_channel_output& output_channel(void) const
node_address_type node_address(void) const
void set_node_address(node_address_type)
size_t send_packet_count(void) const
size_t send_flit_count(void) const
size_t receive_packet_count(void) const
size_t receive_flit_count(void) const
timestamp_type total_latency(void) const
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
bool is_ready_to_enqueue(void) const
bool is_ready_to_dequeue(void) const
void enqueue_send_packet(packet_type*)
packet_type* look_received_packet(void)
packet_type* look_received_packet(void)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
確率モデルシミュレーションで使用するネットワークインタフェース。 network_interfaceクラスの派生クラスである。指定した宛先およびフリット 長のパケットの送信と、受信したパケットの自動破棄のみを行う。
bool is_ready(void) const
void send_packet(node_address_type dst, size_t len)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
単一のプロセッサと、そのメモリマップを統合した同期ユニットである。実行 するプログラムなどへの引数の受渡し機構もサポートする。
以下の関数は全て純粋仮想関数で、派生クラスで実体を定義する必要がある。
virtual const processor_type& processor(void) const
virtual const memory_map_type& memory_map(void) const
virtual bool is_halt(void) const
virtual bool is_bus_error(void) const
virtual address_type bus_error_address(void) const
virtual size_t processor_number(void) const
virtual size_t processor_id(void) const
virtual void set_processor_number(size_t)
virtual void set_processor_id(size_t)
virtual void set_file_table_size(size_t)
virtual void set_standard_input_stream(istream&)
virtual void set_standard_output_stream(ostream&)
virtual void set_standard_error_stream(ostream&)
virtual void set_commandline_argument(const char* const*)
virtual int commandline_status(void) const
virtual bool is_defined_sysinfo(const string&) const
bool is_defined_integer_sysinfo(const string&) const
bool is_defined_string_sysinfo(const string&) const
data_type get_integer_sysinfo(const string&) const
const string& get_string_sysinfo(const string&) const
void set_sysinfo(const string&, data_type)
void set_sysinfo(const string&, const string&)
void unset_sysinfo(const string&)
data_type timer_clock_value(void) const
virtual bool load(const char*)
virtual void disassemble(ostream&, address_type, size_type) const
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
プロセッサ、ローカルメモリ、sysinfo連想配列、バスエラー検出機構、入出 力デバイスを実体として内包する、並列計算機用のプロセシングエレメントク ラス。
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |