大阪大学 電子情報学専攻 2015年8月実施 専門 第2問 計算機アーキテクチャ
Author
祭音Myyura (co-authored with GPT 5.6 SOL)
Description
(1) 次のコードは配列の要素を順に加算し、結果を指定アドレスに格納する。r1,r2,r5 は要素数、配列先頭、格納先で初期化される。空欄 をレジスタ番号または即値で埋めよ。
I1: LD r3 0(r2)
I2: ADD r4 r4 r3
I3: ADDi r2 r2 8
I4: ADDi r1 α β
I5: BNZ γ I1
I6: ST δ 0(r5)
(2) I1とI2、I1とI3の依存関係をRAW、WAR、WAWから選べ。
(3) パイプライン段がフェッチ250 ps、デコード100 ps、レジスタリード150 ps、実行100 ps、メモリアクセス300 ps、レジスタライト150 psで、各段が1サイクルに完了する。動作周波数を求めよ。スキュー等の余裕は既に含む。
(4) シングルイシュー、インオーダーで、オペランドフォワーディングを仮定してよい。バブルが予想される命令とハザードを全て示せ。
(5) 要素数が十分大きいときのCPIを求めよ。分岐命令では次アドレス判明までの3サイクル、フェッチを停止する。
(6) プログラムカウンタごとに直前の分岐結果を記録する予測器を導入した場合の、要素数が十分大きいときのIPSを求めよ。
Kai
(1) 。
(2) I1→I2は r3 の RAW。I1→I3は r2 の WAR。
(3) 最長段の300 psが周期の下限なので
(4) I2ではI1のロード値が必要になるため、ロード使用のRAWデータハザードにより1バブルが必要である。I5では次の命令アドレスが確定しない制御ハザードが生じる。I4→I5などのALU結果のRAW依存はフォワーディングで解消でき、WARはインオーダー実行ではバブルを生じない。
(5) 1反復5命令にロード使用の1サイクルと分岐の3サイクルが加わる。始動・終了部分を無視すると
(6) ループ継続時は分岐予測が当たり、始動時・終了時の有限回の誤予測は漸近的に無視できる。したがって となり