プロジェクト実習 LSIの設計と実現 パイプライン実行とハザード
今日の目標 ハザード 分岐命令
ハザードの回避 フォワーディング 関係者が相互確認 常にできるとは限らない Aさん +1万円 10万円 11万円 Aさん -1万円 10万円
ハザードの回避 フォワーディング ADDI R1, R1, 1 IF ADD ID EX MEM WB IF ADD ID EX MEM
フォワーディング MEM MEM/ WB ID/ EX EX EX/ MEM A + C B
フォワーディング ? MEM MEM/ WB ID/ EX EX EX/ MEM A + C C1 B
ハザードの回避 フォワーディング IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB ADDI R1, R1, 1 ADDI R2, R2, 2
フォワーディング ? MEM MEM/ WB ID/ EX EX EX/ MEM + A C C1 B
ハザード 間にさらにもう1命令入った場合も AだけではなくBの場合も 優先順位 ADD R1, R2, R1 ADD R2, R3, R1
ストール ロード命令 EXステージではまだ不明
ストール ? MEM MEM/ WB ID/ EX EX EX/ MEM + A C C1 B
パイプラインプロセッサと分岐 分岐が成立した場合に不要になる命令 PC=1 ID EX MEM WB PC=2 ID EX MEM WB PC=X ID EX MEM WB 分岐が成立した場合に不要になる命令
不要な命令をどうするか? 実行することにする IFで止める キャンセルする 困る場合はNOPをユーザが挿入する 遅延分岐 (delayed branch) IFで止める IDで分岐命令であることを確認する キャンセルする 分岐しなかった場合に得
分岐命令 後続命令を実行する場合 IF IF/ ID ID ID/ EX EX EX/ MEM Taken? PC Next PC +1
分岐命令 後続命令をフラッシュする場合 IF ID EX Taken? +1 Next PC IF/ ID ID/ EX EX/ MEM Next PC +1
分岐命令 後続命令を止める場合(タイマが必要) IF ID EX Jump? +1 Next PC IF/ ID ID/ EX EX/ MEM PC Jump? Next PC +1
分岐予測 頻繁に分岐が成立する場合 静的分岐予測 動的分岐予測 毎回フラッシュするのは無駄 →成立する方向の実行を継続 成立しなかった場合はフラッシュ 静的分岐予測 後方分岐は成立、前方分岐は不成立 後方分岐はループのことが多い 動的分岐予測 過去の結果を利用して予測 現在の高性能プロセッサではほぼ必須
今後の予定 来週(3日)は出張 再来週(10日)はサマーブートキャンプ 12日 午後は自習 17日 最終授業 24日 締切 →自習 再来週(10日)はサマーブートキャンプ →半自習 12日 午後は自習 17日 最終授業 24日 締切 31日 締切その2