内山先生出題の課題に関するFAQ(2002.5.13)


Q1:時刻241のパイプラインKにおいて、どうして命令番号265の命令が実行されないのでしょうか。先行命令の命令番号264の命令はMTグ
ループの命令なので、後続命令として、BRグループの命令である命令番号265の命令は同時実行可能だと思うのですか。

A1:時刻241の命令263:TST R6,R6 はR6=0の時、T(テストビット)=1とするテスト命令。次の命令265:BF/S はこのTの値に従って分岐/非分岐する条件分岐命令。このため、Tビットによるレジスタコンフリクトのため、同時実行できない。


Q2:同様の質問を時刻244のパイプラインKにおいてもします。

A2:これもTビットによるレジスタコンフリクトです。この場合、命令269:CMP/EQは比較結果をTビットに反映します。


Q3:時刻247のパイプラインKにおいて、どうして命令番号275の命令が実行されないのでしょうか。先行命令の命令番号274の命令はBRグ
ループの命令なので、後続命令として、EXグループの命令である命令番号275の命令は同時実行可能だと思うのですか。

A3:命令274:BT は条件分岐であり、命令275:MOV は分岐成立時の分岐先命令となっています。このケースでは、分岐不成立時には同じMOV命令を実行することがなかったため、BT命令のディレイスロットにMOV命令を置けなかったと考えられます。
(分岐成立時、分岐不成立時の分岐先での最初の処理が異なる)このため、条件分岐命令として遅延分岐無しのBT命令を使っています。
(条件分岐命令としてSHには遅延分岐なし条件分岐BTと遅延分岐あり条件分岐BT/Sがあります)


Q4:時刻246、247において、前の命令がBRグループなのに、どうして分岐ペナルティで1クロック遅れることが無いのでしょうか。

A4:この場合、条件分岐命令270:BT、条件分岐命令274:BT の実行では条件不成立で分岐していません。そのため、それぞれの次命令271:CMP、次命令273:CMPが同時実行されています。