プロジェクト実習 LSIの設計と実現

プロジェクト実習
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