解答例4

2015.5.12 出題分
コンピュータアーキテクチャII 課題解答例
1
レポート課題
1)次の用語を説明せよ.
1. パイプライン制御
2. 構造ハザード
3. 制御ハザード
4. データハザード
5. ストール
6. フォワーディング
2)次の命令列においてハザードが発生する箇所を指摘し,パイプラインがストールしないよう
に命令を並び替えよ.
(もちろん,実行結果が同じになるように並び替えなければならない.
)
lw $s1, 0($s0)
lw $s2, 4($s0)
sub $s3, $s1, $s2
sw $s3, 12($s0)
lw $s4, 8($s0)
add $s5, $s1, $s4
sw $s5, 16($s0)
2
解答例
1)省略(教科書の該当事項を参照のこと).その上で,わからないことがあれば,具体的に質
問してください.
2)フォワーディング機構があるものとする.そのときでも,lw 命令でロードしたデータを直
後の命令が使用する場合は,ハザードが避けられない.しかし,2命令後ならば,ハザードは避け
られる.このことを念頭において考える.まず,データ依存関係を見てみよう.
1. sub 命令の$s1 が1番目の lw 命令にデータ依存
2. sub 命令の$s2 が2番目の lw 命令にデータ依存
3. 1番目の sw 命令の$s3 が sub 命令にデータ依存
4. add 命令の$s1 が1番目の lw 命令にデータ依存
5. add 命令の$s4 が3番目の lw 命令にデータ依存
1
6. 2番目の sw 命令の$s5 が add 命令にデータ依存
このうち,
(フォワーディング機構があるとして)ハザードを起こすのは2項と5項である.
これらのハザードを解消するには,以下のようにすれば良い.3番目の lw 命令は,それより前
のどの命令にもデータ依存しないから,前へ移動してよい.そこで,2番目の lw 命令の次の位置
に移動する(下のプログラム参照).この結果,上記の2項,5項とも lw 命令の直後でロードし
たデータを使うという状況が解消され,ハザードが解消される.
lw $s1, 0($s0)
lw $s2, 4($s0)
lw $s4, 8($s0)
sub $s3, $s1, $s2
sw $s3, 12($s0)
add $s5, $s1, $s4
sw $s5, 16($s0)
なお,フォワーディング機構がない場合は,間に2命令入らないとハザードが解消できないので,
この例では,ストールが避けられない.
(並べ替え後のプログラムにおいて,ストールは,sub 命令
のところで1クロック分,1番目の sw 命令のところで2クロック分,2番目の sw 命令のところ
で2クロック分発生する.
(add 命令のところでストールは発生しない.
)
2