Next: SimpleScalarのインストール
Up: ISIS-SimpleScalar
Previous: isis-1.1.1-ssをgcc-2.95.3でインストール
解凍後のisis-1.1.1/lib/simoutorder/にISIS-SimpleScalarに関連する
次のファイルが入っている。
- addr_order_buffer{.h,.cc}
addr_order_bufferクラスが定義してある。
Load命令およびStore命令のメモリアクセスアドレスを保持し、
メモリアクセスの順序管理を行う。
- address.h
- ISIS-SimpleScalarが扱う共有メモリ領域のアドレス空間が定義してある。
- arg{.h,.cc}
argクラスが定義してある。
コマンドラインオプションとして指定されたプロセッサ数、
プロセッサ毎の外部通信ポート数を読み取る。
- bpred{.h,.cc}
- SimpleScalarが提供するbpred.cをクラス化した
bpred_simpleクラスが定義してある。
branch predictorを表し、branch predictorの初期化、参照、更新を行う。
- cache{.h,.cc}
- SimpleScalarが提供するcache.cをクラス化した
cache_simpleクラスが定義してある。
ISIS-SimpleScalarにおいては
0x00000000〜0x7fffffffの領域の
命令やローカルデータを格納するローカルキャッシュを表す。
命令やデータは実際には格納しておらず、
キャッシュアクセスが発生したときには、
キャッシュヒット/ミスが判定され、キャッシュアクセス時間が返される。
命令やデータはメモリから読み出される。
- ecoff.h
- SimpleScalar ECOFF形式のバイナリを生成するための
定義がなされている。
- endian_s{.h,.cc}
- ホストマシンとターゲットマシン上のエンディアンを
決めるための関数が定義してある。
- exec_buffer{.h,.cc}
execution_bufferクラスが定義されている。
実行中の命令を管理するクラスである。
命令は実行される時刻(Functional Unitでの計算が終了する時刻、
またはローカルメモリへのアクセスが終了する時刻)で昇順に並べられ、
同じ時刻に実行される命令は命令IDで昇順に並べられる。
- host.h
- ホストマシンに依存する関数の定義変更などがなされている。
- instqueue{.h,.cc}
instqueueクラスが定義してある。
各命令に対するあらゆる情報を保持し、
命令はin-orderで並べられる。
Register Update Unitおよびreservation stationの役割を担う。
- isim_bus_packet{.h,.cc}
isim_bus_packetクラスが定義してある。
ISIS-SimpleScalarが提供するプロセッサ(isim_processor)
とプロセッサ外部のシステムとの間で
やり取りされるパケットを表す。
- isim_bus_port{.h,.cc}
isim_bus_portクラスが定義してある。
isim_processorとプロセッサ外部にあるユニットとの
接続に使用されるポートを表すクラスである。
入力できるパケットはisim_bus_packetクラスで定義してある
もののみである。
- isim_processor{.h,.cc}、instruction.cc、inst_simple.cc
isim_processorクラスが定義してある。
- isim_processor.ccには、
パイプライン内の各Stageの動作が記述してある。
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
- instruction.ccには、
isim_processorが実行する各命令の処理が定義されている。
void *_impl(void) - 値の読み出しや計算結果の生成、
読み出した値を確保する部分
void *_addr_impl(void) - メモリアクセスアドレスを
計算する部分
void *_set_req_impl(void) - 共有メモリに
読み出し要求を発行する部分
void *_reg_impl(void) - レジスタを更新する部分
- inst_simple.ccには、
レジスタの更新やプロセッサ外部への要求発行など、
複数の命令で行われる処理をメンバ関数として
まとめて定義し、各命令が呼び出せるようにした。
- loader_s{.h,.cc}
- SimpleScalarが提供するloader.cをクラス化した
loader_simpleクラスが定義してある。
シミュレータが実行するバイナリを読み込み、
0x00400000〜0x0fffffffに格納する。
- machine{.h,.cc}
- Functional Unit、immediate field、メモリ領域など、
プロセッサが必要とするさまざまな定義がなされている。
- machine.def
- isim_processorで実行される各命令の
識別子、オペコード、使用するFunctional Unit名、
使用するレジスタ番号などの情報が定義してある。
- memory_s{.h,.cc}
- SimpleScalarが提供するmemory.cをクラス化した
memory_simpleクラスが定義してある。
ISIS-SimpleScalarにおいては、
命令やローカルデータを格納するローカルメモリを表す。
メモリ領域は0x00000000〜0x7fffffffである。
- misc{.h,.cc}
- メッセージ出力など、
多数の便利なサポート関数などを定義している。
- only_syscall.h
- システムコールに関する定義がなされている。
- options{.h,.cc}
- SimpleScalarが提供するoptions.cをクラス化した
option_simpleクラスが定義してある。
キャッシュ、branch predictorなど、
システムに関するさまざまなコマンドラインオプションを解釈する。
- order_buffer{.h,.cc}
addr_order_bufferクラスが定義してある。
各命令の命令IDと使用するレジスタ番号を保持し、
レジスタ間の依存関係によって実行の順序を管理する。
- regs_head.h
- レジスタが構造体として定義してある。
- resource{.h,.cc}
resource_simpleクラスが定義してある。
Functional Unitを生成する。
- stats{.h,.cc}
- SimpleScalarが提供するstats.cをクラス化した
stats_simpleクラスが定義してある。
シミュレーション中にプロセッサ毎に取られる、
実行クロック数やローカルキャッシュのヒット率などの
統計データの指定、初期化、出力などを行う。
- version.h
- SimpleScalarのバージョンに関する定義がなされている。
- writeback_buffer{.h,.cc}
writeback_bufferクラスが定義してある。
Writebackイベントを終了した命令と、
各命令がレジスタを更新する際の値
(計算結果やメモリから読み出した値)を保持し、
reorder bufferの役割を担う。
命令は命令IDで昇順に並べられる。
Next: SimpleScalarのインストール
Up: ISIS-SimpleScalar
Previous: isis-1.1.1-ssをgcc-2.95.3でインストール
Toshiya Minai
平成17年2月1日