ハザード1

Download Report

Transcript ハザード1

プロジェクト実習
LSIの設計と実現
パイプライン実行とハザード
おさらい
• 配線はwire、レジスタはreg
• 配線の接続は assign (alwaysの外で)
• レジスタへの代入は alwaysの中で <=
– 2回以上代入しない
– すべての条件で1回だけ代入する
• 代入時は両辺のビット幅を合わせる
今日の目標
• フラグレジスタ
• ロードストア
• パイプライン動作とハザード
フラグレジスタ
• Zero Flag
– 演算結果が0の時に1
• Negative Flag
– 演算結果が負の時に1
• Carry Flag
– 演算結果に桁上がり、桁下がりが起きた場合に1
• ただしシフト演算では変化しない
0011-0011=0000
0011-0001=0010
ZF=1, NF=0, CF=0
ZF=0, NF=0, CF=0
Carry Flag
0001-0011=1110
1-3=14(-16)
1100-0001=1011
12-1=11
1100-1111=1101
12-15=13(-16)
1111-1100=0011
15-12=3
0111-1111=1000
7-15=8(-16)
ZF=0, NF=1, CF=1
< (CF=1)
ZF=0, NF=1, CF=0
> (CF=0)
ZF=0, NF=1, CF=1
< (CF=1)
ZF=0, NF=0, CF=0
> (CF=0)
ZF=0, NF=1, CF=1
< (CF=1)
CFは符号なし
の比較結果を
示す
実装方法
• ZF
– 0かどうか
• NF
– どこを見れば符号がわかる?
• CF
– 16bitではなく17bitで計算してみると、、、
ロードストア
• 仕様
– r1←M[gr[r2]+val3]
– M[gr[r2]+val3] ← r1
• EXステージでアドレス計算
– gr[r2]+val3
– addiが出来れていれば楽勝
• MEMステージでメモリ読み書き
– daddr, dw, ddata_out(store時) を適切に設定
– load結果は次サイクルでddata_in
パイプライン実行
• たくさんの洗濯物を考える
– 洗濯
– 乾燥
– たたむ・片付ける
洗濯
乾燥
たたむ
洗濯
乾燥
たたむ
洗濯
乾燥
たたむ
パイプラインプロセッサ
•
•
•
•
•
フェッチ
デコード
実行
メモリ
書き込み
•
•
•
•
•
取引内容を確認し
残高を確認し
取引をして
(なし)
残高を更新
銀行のパイプライン処理
処理
確認
残高
照会
取引
残高
更新
処理
確認
残高
照会
取引
残高
更新
処理
確認
残高
照会
取引
残高
更新
銀行のパイプライン処理
処理
確認
残高
照会
取引
残高
更新
処理
確認
残高
照会
取引
残高
更新
処理
確認
残高
照会
取引
• すべて別の口座ならば問題なし
• 同じ口座が混ざっていると?
残高
更新
銀行のパイプライン処理
Aさん
+1万円
残高
照会
取引
残高
更新
処理
確認
残高
照会
取引
残高
更新
銀行のパイプライン処理
Aさん
Aさん
+1万円
10万円
Aさん
-1万円
取引
残高
更新
残高
照会
取引
残高
更新
銀行のパイプライン処理
Aさん
Aさん
10万円
+1万円
10万円
+1万円
Aさん
Aさん
-1万円
10万円
残高
更新
取引
残高
更新
銀行のパイプライン処理
Aさん
Aさん
10万円
Aさん
+1万円
10万円
+1万円
11万円
Aさん
Aさん
10万円
-1万円
10万円
-1万円
残高
更新
銀行のパイプライン処理
Aさん
Aさん
10万円
Aさん
+1万円
10万円
+1万円
11万円
Aさん
Aさん
10万円
Aさん
-1万円
10万円
-1万円
9万円
• さてAさんの現在の残高は?
• どうすれば解決できる?
ハザードの回避(1/2)
Aさん
Aさん
10万円
Aさん
+1万円
10万円
+1万円
11万円
• ストール
– 同時に同じ口座を処理しちゃダメ
→性能の低下
Aさん
Aさん
-1万円
11万円
ハザードの回避(2/2)
Aさん
Aさん
10万円
Aさん
+1万円
10万円
+1万円
11万円
Aさん
Aさん
11万円
10万円
Aさん
-1万円
10万円
-1万円
10万円
9万円
• フォワーディング
– 関係者が相互確認
– 常にできるとは限らない
今後の予定
• 来週は祝日
• 再来週までに
– ハザード処理
– 分岐命令
以外を完成させること
• 自習
– 火曜日午後?
分岐命令
• とは?
パイプラインプロセッサと分岐
PC=1
ID
EX
MEM
WB
PC=2
ID
EX
MEM
WB
PC=3
ID
EX
MEM
WB
PC=X
ID
EX
MEM
WB