大和田/日誌/2008-08-21
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[大和田/日誌]]
-CFS
--レジスタファイル
---クロックの前半で書き込み、クロックの後半で読み出しが可能という前提。
---レジスタファイルまわりのロジックだけは先に実行することで解決。
--フォワーディング作成
-パタヘネのバグ?
--MIPSのフォワーディング制御信号についてバグというか説明不足があったのでちょっとメモ。
--というかif else構文を使えば、プライオリティがつけられるのでなんら問題ないような。ただしその場合は余計な条件が存在。
*パタヘネによるフォワーディング制御信号 [#ze70c122]
-0:NO_FORWARDING
--下記の条件に当てはまらないとき
-1:FROM_WB_STAGE
--WBステージの命令がWBを行う
--WBステージの命令のWB先レジスタ番号が0ではない
--EXステージの命令で使用するレジスタ番号とMEMステージの命令のWB先レジスタが一致しない
--EXステージの命令で使用するレジスタ番号とWBステージの命令のWB先レジスタが一致する
-2:FROM_MEM_STAGE
--MEMステージの命令がWBを行う
--MEMステージの命令のWB先レジスタ番号が0ではない
--EXステージの命令で使用するレジスタ番号とMEMステージの命令のWB先レジスタが一致する
**問題点 [#gb36c24d]
WBステージからEXステージにフォワーディングする条件のうち、
-EXステージの命令で使用するレジスタ番号とMEMステージの命令のWB先レジスタが一致しない
という条件は、WBステージよりも新しいALUの演算結果がMEMステージにある場合、MEMステージからフォワーディングをするため必要な条件である。この条件により、以下のアセンブリコードが正しく動作する。
1. add $s1, $s1, $s2
2. add $s1, $s1, $s3
3. add $s1, $s1, $s4
ただし、この条件はMEMステージの命令がWBを行うか行わないかを判定していない。このため特定の命令の組合せのとき、不具合が生じる。
1. add $s1, $s1, $s2
2. sw $s1, 0($zero)
3. add $s1, $s1, $s3
という命令の組合せが存在したとき、EXステージで3番目の命令が実行されるとき、WBステージからフォワーディングされるべき$s1が、"EXステージの命令で使用するレジスタ番号とMEMステージの命令のWB先レジスタが一致しない"という条件を満たしてないため、フォワーディングを正しく行うことが出来ない。
注:WB先レジスタ番号はrt, rdからセレクトされるが、パタヘネによるとsw命令のWB先レジスタ番号のセレクタの制御信号がDon't careなので、sw命令のrtと後続のadd命令のrsが一致してしまう可能性がある。
*修正案その1 [#dcc5a26f]
プライオリティをつければ以下のように簡略化可能。
-2:FROM_MEM_STAGE
--MEMステージの命令がWBを行う
--MEMステージの命令のWB先レジスタ番号が0ではない
--EXステージの命令で使用するレジスタ番号とMEMステージの命令のWB先レジスタが一致する
-1:FROM_WB_STAGE
--WBステージの命令がWBを行う
--WBステージの命令のWB先レジスタ番号が0ではない
--EXステージの命令で使用するレジスタ番号とWBステージの命令のWB先レジスタが一致する
-0:NO_FORWARDING
--上記の条件に当てはまらないとき
*修正案その2 [#fd3f3948]
-0:NO_FORWARDING
--下記の条件に当てはまらないとき
-1:FROM_WB_STAGE
--WBステージの命令がWBを行う
--WBステージの命令のWB先レジスタ番号が0ではない
--EXステージの命令で使用するレジスタ番号とWBステージの命令のWB先レジスタが一致する
--以下のどれかが成り立つ(FROM_MEM_STAGEの条件が成り立たないことと同じ)
---&color(red){MEMステージの命令がWBを行わない};
---&color(red){MEMステージの命令のWB先が0};
---EXステージの命令で使用するレジスタ番号とMEMステージの命令のWB先レジスタが一致しない
-2:FROM_MEM_STAGE
--MEMステージの命令がWBを行う
--MEMステージの命令のWB先レジスタ番号が0ではない
--EXステージの命令で使用するレジスタ番号とMEMステージの命令のWB先レジスタが一致する
終了行:
[[大和田/日誌]]
-CFS
--レジスタファイル
---クロックの前半で書き込み、クロックの後半で読み出しが可能という前提。
---レジスタファイルまわりのロジックだけは先に実行することで解決。
--フォワーディング作成
-パタヘネのバグ?
--MIPSのフォワーディング制御信号についてバグというか説明不足があったのでちょっとメモ。
--というかif else構文を使えば、プライオリティがつけられるのでなんら問題ないような。ただしその場合は余計な条件が存在。
*パタヘネによるフォワーディング制御信号 [#ze70c122]
-0:NO_FORWARDING
--下記の条件に当てはまらないとき
-1:FROM_WB_STAGE
--WBステージの命令がWBを行う
--WBステージの命令のWB先レジスタ番号が0ではない
--EXステージの命令で使用するレジスタ番号とMEMステージの命令のWB先レジスタが一致しない
--EXステージの命令で使用するレジスタ番号とWBステージの命令のWB先レジスタが一致する
-2:FROM_MEM_STAGE
--MEMステージの命令がWBを行う
--MEMステージの命令のWB先レジスタ番号が0ではない
--EXステージの命令で使用するレジスタ番号とMEMステージの命令のWB先レジスタが一致する
**問題点 [#gb36c24d]
WBステージからEXステージにフォワーディングする条件のうち、
-EXステージの命令で使用するレジスタ番号とMEMステージの命令のWB先レジスタが一致しない
という条件は、WBステージよりも新しいALUの演算結果がMEMステージにある場合、MEMステージからフォワーディングをするため必要な条件である。この条件により、以下のアセンブリコードが正しく動作する。
1. add $s1, $s1, $s2
2. add $s1, $s1, $s3
3. add $s1, $s1, $s4
ただし、この条件はMEMステージの命令がWBを行うか行わないかを判定していない。このため特定の命令の組合せのとき、不具合が生じる。
1. add $s1, $s1, $s2
2. sw $s1, 0($zero)
3. add $s1, $s1, $s3
という命令の組合せが存在したとき、EXステージで3番目の命令が実行されるとき、WBステージからフォワーディングされるべき$s1が、"EXステージの命令で使用するレジスタ番号とMEMステージの命令のWB先レジスタが一致しない"という条件を満たしてないため、フォワーディングを正しく行うことが出来ない。
注:WB先レジスタ番号はrt, rdからセレクトされるが、パタヘネによるとsw命令のWB先レジスタ番号のセレクタの制御信号がDon't careなので、sw命令のrtと後続のadd命令のrsが一致してしまう可能性がある。
*修正案その1 [#dcc5a26f]
プライオリティをつければ以下のように簡略化可能。
-2:FROM_MEM_STAGE
--MEMステージの命令がWBを行う
--MEMステージの命令のWB先レジスタ番号が0ではない
--EXステージの命令で使用するレジスタ番号とMEMステージの命令のWB先レジスタが一致する
-1:FROM_WB_STAGE
--WBステージの命令がWBを行う
--WBステージの命令のWB先レジスタ番号が0ではない
--EXステージの命令で使用するレジスタ番号とWBステージの命令のWB先レジスタが一致する
-0:NO_FORWARDING
--上記の条件に当てはまらないとき
*修正案その2 [#fd3f3948]
-0:NO_FORWARDING
--下記の条件に当てはまらないとき
-1:FROM_WB_STAGE
--WBステージの命令がWBを行う
--WBステージの命令のWB先レジスタ番号が0ではない
--EXステージの命令で使用するレジスタ番号とWBステージの命令のWB先レジスタが一致する
--以下のどれかが成り立つ(FROM_MEM_STAGEの条件が成り立たないことと同じ)
---&color(red){MEMステージの命令がWBを行わない};
---&color(red){MEMステージの命令のWB先が0};
---EXステージの命令で使用するレジスタ番号とMEMステージの命令のWB先レジスタが一致しない
-2:FROM_MEM_STAGE
--MEMステージの命令がWBを行う
--MEMステージの命令のWB先レジスタ番号が0ではない
--EXステージの命令で使用するレジスタ番号とMEMステージの命令のWB先レジスタが一致する
ページ名: