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