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