addr_order_buffer
クラスが定義してある。
Load命令およびStore命令のメモリアクセスアドレスを保持し、
メモリアクセスの順序管理を行う。
arg
クラスが定義してある。
コマンドラインオプションとして指定されたプロセッサ数、
プロセッサ毎の外部通信ポート数を読み取る。
bpred_simple
クラスが定義してある。
branch predictorを表し、branch predictorの初期化、参照、更新を行う。
cache_simple
クラスが定義してある。
ISIS-SimpleScalarにおいては
0x00000000〜0x7fffffffの領域の
命令やローカルデータを格納するローカルキャッシュを表す。
命令やデータは実際には格納しておらず、
キャッシュアクセスが発生したときには、
キャッシュヒット/ミスが判定され、キャッシュアクセス時間が返される。
命令やデータはメモリから読み出される。
execution_buffer
クラスが定義されている。
実行中の命令を管理するクラスである。
命令は実行される時刻(Functional Unitでの計算が終了する時刻、
またはローカルメモリへのアクセスが終了する時刻)で昇順に並べられ、
同じ時刻に実行される命令は命令IDで昇順に並べられる。
instqueue
クラスが定義してある。
各命令に対するあらゆる情報を保持し、
命令はin-orderで並べられる。
Register Update Unitおよびreservation stationの役割を担う。
isim_bus_packet
クラスが定義してある。
ISIS-SimpleScalarが提供するプロセッサ(isim_processor
)
とプロセッサ外部のシステムとの間で
やり取りされるパケットを表す。
isim_bus_port
クラスが定義してある。
isim_processorとプロセッサ外部にあるユニットとの
接続に使用されるポートを表すクラスである。
入力できるパケットはisim_bus_packet
クラスで定義してある
もののみである。
isim_processor
クラスが定義してある。
void ruu_fetch(void)
- Fetch Stage
void ruu_dispatch(void)
- Dispatch Stage
void ruu_issue(void)
- Schedule Stage
void ruu_writeback(void)
- Exec StageとWriteback Stage
void ruu_commit(void)
- Commit Stage
void *_impl(void)
- 値の読み出しや計算結果の生成、
読み出した値を確保する部分
void *_addr_impl(void)
- メモリアクセスアドレスを
計算する部分
void *_set_req_impl(void)
- 共有メモリに
読み出し要求を発行する部分
void *_reg_impl(void)
- レジスタを更新する部分
loader_simple
クラスが定義してある。
シミュレータが実行するバイナリを読み込み、
0x00400000〜0x0fffffffに格納する。
memory_simple
クラスが定義してある。
ISIS-SimpleScalarにおいては、
命令やローカルデータを格納するローカルメモリを表す。
メモリ領域は0x00000000〜0x7fffffffである。
option_simple
クラスが定義してある。
キャッシュ、branch predictorなど、
システムに関するさまざまなコマンドラインオプションを解釈する。
addr_order_buffer
クラスが定義してある。
各命令の命令IDと使用するレジスタ番号を保持し、
レジスタ間の依存関係によって実行の順序を管理する。
resource_simple
クラスが定義してある。
Functional Unitを生成する。
stats_simple
クラスが定義してある。
シミュレーション中にプロセッサ毎に取られる、
実行クロック数やローカルキャッシュのヒット率などの
統計データの指定、初期化、出力などを行う。
writeback_buffer
クラスが定義してある。
Writebackイベントを終了した命令と、
各命令がレジスタを更新する際の値
(計算結果やメモリから読み出した値)を保持し、
reorder bufferの役割を担う。
命令は命令IDで昇順に並べられる。