ピタゴラスイッチMIPS版/プロセッサの仕様
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[ピタゴラスイッチMIPS版/開発情報]]
*命令セット [#y23b31cf]
パターソン&ヘネシーのコンピュータの構成と設計の巻末資料のMIPSのアセンブリ言語と機械語のまとめを参考にしています。
**基本命令 [#kf03fd0a]
|区分|命令|形式|例|意味|実行クロック数(マルチサイクル)|
|算術演算|add|R|add $s1, $s2, $s3|$s1=$s2+$s3|4|
|~|sub|R|sub $s1, $s2, $s3|$s1=$s2-$s3|4|
|~|addi|I|addi $s1, $s2, 100|$s1=$s2+100|4|
|論理演算|and|R|and $s1, $s2, $s3|$s1=$s2&$s3|4|
|~|or|R|or $s1, $s2, $s3|$s1=$s2|$s3|4|
|~|andi|I|andi $s1, $s2, 100|$s1=$s2&100|4|
|~|ori|I|ori $s1, $s2, 100|$s1=$s2|100|4|
|データ転送|lw|I|lw $s1, 100($2)|$s1=memory[$s2+100]|5|
|~|sw|I|sw $s1, 100($2)|memory[$s2+100]=$s1|4|
|条件分岐|beq|I|beq $s1, $s2, 25|if($s1==$s2) goto PC+4+100|3|
|~|slt|R|slt $s1, $s2, $s3|if($s2<$s3) $s1=1 ; else $s1=0|4|
|~|slti|I|slti $s1, $s2, 100|if($s2<100) $s1=1 ; else $s1=0|4|
|無条件ジャンプ|j|J|j 2500|goto 10000|3|
**追加命令 [#u258f50b]
*マルチサイクルMIPS [#x2306f80]
-パッケージ
--mips_sim.cpu.multicycle.*;
-必要なパッケージ
--mips_sim.cpu.*;
--mips_sim.cpu.basicmodules.*;
**注意点 [#v0b9d6fa]
-ANDIとORIにおいて、本来ゼロ拡張すべき命令であるはずなのに、他のI形式命令と同様に符号拡張を行っている。
-互換性の問題
--Verilog-HDLでALUを作成した場合、SLTの演算に比較演算子'<'を使用すると、符号なし比較を行ってしまうというバグがある(動作としてはSLTUになる)。授業によっては比較演算子を用いて実装を行っているので、本シミュレータが提供するマルチサイクルMIPSプロセッサとの互換性が損なわれている。
--コントロールユニットのI形式命令のライトバックのステートの不要制御信号を削除した。詳しくは[[こちら>大和田/日誌/2008-07-30]]を参照。
**回路図 [#b99a67b2]
2006年度コンピュータ構築設計論演習で使用した回路図を使用。
&ref(multicycle_sche.pdf);
*パイプラインMIPS [#ae4a4b93]
-パッケージ
--mips_sim.cpu.pipeline.*;
-必要なパッケージ
--mips_sim.cpu.*;
--mips_sim.cpu.basicmodules.*;
**注意点 [#fd8e935e]
-ANDIとORIの符号拡張のバグは解決済み。
-符号拡張はIDステージで行う。
-互換性の問題
--Verilog-HDLでALUを作成した場合、SLTの演算に比較演算子'<'を使用すると、符号なし比較を行ってしまうというバグがある(動作としてはSLTUになる)。授業によっては比較演算子を用いて実装を行っているので、本シミュレータが提供するマルチサイクルMIPSプロセッサとの互換性が損なわれている。
**テストベンチ [#j13325e4]
-適当にnop(or $0, $0, $0)をはさんである。
**回路図 [#l33318c0]
&ref(mips_pipe_basic_sche.pdf);
*ハザード回避 [#ib3d51a7]
それぞれ別ページにまとめます。
**[[フォワーディングユニット>ピタゴラスイッチMIPS版/仕様/フォワーディングユニット]] [#l6349803]
EXステージへのフォワーディングパスを設計することでデータハザードを解決。
**[[ハザード検出ユニット>ピタゴラスイッチMIPS版/仕様/ハザード検出ユニット]] [#d83dae50]
IDステージにハザード検出ユニットを設計することでLoad-use data hazardを解決。
**[[フラッシュ>ピタゴラスイッチMIPS版/仕様/フラッシュ]] [#b57af6e4]
MEMステージで分岐成立時、後続の3命令をフラッシュする。
*パイプラインオプション [#b4048f4b]
**MEMステージ分岐(3命令遅延スロット付き) [#v0a1faf2]
MEMステージで分岐。フラッシュは行わず、3命令遅延スロットを持つ。
[[フォワーディングユニット>ピタゴラスイッチMIPS版/仕様/フォワーディングユニット]]+[[ハザード検出ユニット>ピタゴラスイッチMIPS版/仕様/ハザード検出ユニット]]を実装。
**MEMステージ分岐(フラッシュ付き) [#h500af9c]
MEMステージで分岐。分岐成立時、後続の3命令をフラッシュする。
[[フォワーディングユニット>ピタゴラスイッチMIPS版/仕様/フォワーディングユニット]]+[[ハザード検出ユニット>ピタゴラスイッチMIPS版/仕様/ハザード検出ユニット]]+[[フラッシュ>ピタゴラスイッチMIPS版/仕様/フラッシュ]]を実装。
**[[IDステージ分岐(1命令遅延スロット付き)>ピタゴラスイッチMIPS版/仕様/IDステージ分岐(1命令遅延スロット付き)]] [#g5f7a8db]
IDステージで分岐。フラッシュは行わず、1命令遅延スロットを持つ。
**[[IDステージ分岐(フラッシュ付き)>ピタゴラスイッチMIPS版/仕様/IDステージ分岐(フラッシュ付き)]] [#y383771e]
IDステージで分岐。分岐成立時、後続の1命令をフラッシュする。
*添付回路図一覧 [#vd554884]
|概要|ダウンロード|
|マルチサイクル|&ref(multicycle_sche.pdf);|
|パイプライン|&ref(mips_pipe_basic_sche.pdf);|
|パイプライン+フォワーディング|&ref(mips_pipe_fwd_sche.pdf);|
|上+ハザード検知ユニット|&ref(mips_pipe_hzd_sche.pdf);|
|上+フラッシュ機能|&ref(mips_pipe_flush_sche.pdf);|
|上+JR,JAL命令追加(仮)|&ref(mips_pipe_flush_JR_JAL_sche.pdf);&br; &ref(mips_pipe_flush_change.pdf);|
|IDステージ分岐(1命令遅延スロット付き)|&ref(mips_pipe_id_branch_sche.pdf);|
|IDステージ分岐(フラッシュ付き)|&ref(mips_pipe_id_branch_flush_sche.pdf);|
|上+JR,JAL命令追加(仮)|&ref(mips_pipe_id_branch_flush_JR_JAL_sche.pdf);&br; &ref(mips_pipe_id_branch_flush_change.pdf);|
終了行:
[[ピタゴラスイッチMIPS版/開発情報]]
*命令セット [#y23b31cf]
パターソン&ヘネシーのコンピュータの構成と設計の巻末資料のMIPSのアセンブリ言語と機械語のまとめを参考にしています。
**基本命令 [#kf03fd0a]
|区分|命令|形式|例|意味|実行クロック数(マルチサイクル)|
|算術演算|add|R|add $s1, $s2, $s3|$s1=$s2+$s3|4|
|~|sub|R|sub $s1, $s2, $s3|$s1=$s2-$s3|4|
|~|addi|I|addi $s1, $s2, 100|$s1=$s2+100|4|
|論理演算|and|R|and $s1, $s2, $s3|$s1=$s2&$s3|4|
|~|or|R|or $s1, $s2, $s3|$s1=$s2|$s3|4|
|~|andi|I|andi $s1, $s2, 100|$s1=$s2&100|4|
|~|ori|I|ori $s1, $s2, 100|$s1=$s2|100|4|
|データ転送|lw|I|lw $s1, 100($2)|$s1=memory[$s2+100]|5|
|~|sw|I|sw $s1, 100($2)|memory[$s2+100]=$s1|4|
|条件分岐|beq|I|beq $s1, $s2, 25|if($s1==$s2) goto PC+4+100|3|
|~|slt|R|slt $s1, $s2, $s3|if($s2<$s3) $s1=1 ; else $s1=0|4|
|~|slti|I|slti $s1, $s2, 100|if($s2<100) $s1=1 ; else $s1=0|4|
|無条件ジャンプ|j|J|j 2500|goto 10000|3|
**追加命令 [#u258f50b]
*マルチサイクルMIPS [#x2306f80]
-パッケージ
--mips_sim.cpu.multicycle.*;
-必要なパッケージ
--mips_sim.cpu.*;
--mips_sim.cpu.basicmodules.*;
**注意点 [#v0b9d6fa]
-ANDIとORIにおいて、本来ゼロ拡張すべき命令であるはずなのに、他のI形式命令と同様に符号拡張を行っている。
-互換性の問題
--Verilog-HDLでALUを作成した場合、SLTの演算に比較演算子'<'を使用すると、符号なし比較を行ってしまうというバグがある(動作としてはSLTUになる)。授業によっては比較演算子を用いて実装を行っているので、本シミュレータが提供するマルチサイクルMIPSプロセッサとの互換性が損なわれている。
--コントロールユニットのI形式命令のライトバックのステートの不要制御信号を削除した。詳しくは[[こちら>大和田/日誌/2008-07-30]]を参照。
**回路図 [#b99a67b2]
2006年度コンピュータ構築設計論演習で使用した回路図を使用。
&ref(multicycle_sche.pdf);
*パイプラインMIPS [#ae4a4b93]
-パッケージ
--mips_sim.cpu.pipeline.*;
-必要なパッケージ
--mips_sim.cpu.*;
--mips_sim.cpu.basicmodules.*;
**注意点 [#fd8e935e]
-ANDIとORIの符号拡張のバグは解決済み。
-符号拡張はIDステージで行う。
-互換性の問題
--Verilog-HDLでALUを作成した場合、SLTの演算に比較演算子'<'を使用すると、符号なし比較を行ってしまうというバグがある(動作としてはSLTUになる)。授業によっては比較演算子を用いて実装を行っているので、本シミュレータが提供するマルチサイクルMIPSプロセッサとの互換性が損なわれている。
**テストベンチ [#j13325e4]
-適当にnop(or $0, $0, $0)をはさんである。
**回路図 [#l33318c0]
&ref(mips_pipe_basic_sche.pdf);
*ハザード回避 [#ib3d51a7]
それぞれ別ページにまとめます。
**[[フォワーディングユニット>ピタゴラスイッチMIPS版/仕様/フォワーディングユニット]] [#l6349803]
EXステージへのフォワーディングパスを設計することでデータハザードを解決。
**[[ハザード検出ユニット>ピタゴラスイッチMIPS版/仕様/ハザード検出ユニット]] [#d83dae50]
IDステージにハザード検出ユニットを設計することでLoad-use data hazardを解決。
**[[フラッシュ>ピタゴラスイッチMIPS版/仕様/フラッシュ]] [#b57af6e4]
MEMステージで分岐成立時、後続の3命令をフラッシュする。
*パイプラインオプション [#b4048f4b]
**MEMステージ分岐(3命令遅延スロット付き) [#v0a1faf2]
MEMステージで分岐。フラッシュは行わず、3命令遅延スロットを持つ。
[[フォワーディングユニット>ピタゴラスイッチMIPS版/仕様/フォワーディングユニット]]+[[ハザード検出ユニット>ピタゴラスイッチMIPS版/仕様/ハザード検出ユニット]]を実装。
**MEMステージ分岐(フラッシュ付き) [#h500af9c]
MEMステージで分岐。分岐成立時、後続の3命令をフラッシュする。
[[フォワーディングユニット>ピタゴラスイッチMIPS版/仕様/フォワーディングユニット]]+[[ハザード検出ユニット>ピタゴラスイッチMIPS版/仕様/ハザード検出ユニット]]+[[フラッシュ>ピタゴラスイッチMIPS版/仕様/フラッシュ]]を実装。
**[[IDステージ分岐(1命令遅延スロット付き)>ピタゴラスイッチMIPS版/仕様/IDステージ分岐(1命令遅延スロット付き)]] [#g5f7a8db]
IDステージで分岐。フラッシュは行わず、1命令遅延スロットを持つ。
**[[IDステージ分岐(フラッシュ付き)>ピタゴラスイッチMIPS版/仕様/IDステージ分岐(フラッシュ付き)]] [#y383771e]
IDステージで分岐。分岐成立時、後続の1命令をフラッシュする。
*添付回路図一覧 [#vd554884]
|概要|ダウンロード|
|マルチサイクル|&ref(multicycle_sche.pdf);|
|パイプライン|&ref(mips_pipe_basic_sche.pdf);|
|パイプライン+フォワーディング|&ref(mips_pipe_fwd_sche.pdf);|
|上+ハザード検知ユニット|&ref(mips_pipe_hzd_sche.pdf);|
|上+フラッシュ機能|&ref(mips_pipe_flush_sche.pdf);|
|上+JR,JAL命令追加(仮)|&ref(mips_pipe_flush_JR_JAL_sche.pdf);&br; &ref(mips_pipe_flush_change.pdf);|
|IDステージ分岐(1命令遅延スロット付き)|&ref(mips_pipe_id_branch_sche.pdf);|
|IDステージ分岐(フラッシュ付き)|&ref(mips_pipe_id_branch_flush_sche.pdf);|
|上+JR,JAL命令追加(仮)|&ref(mips_pipe_id_branch_flush_JR_JAL_sche.pdf);&br; &ref(mips_pipe_id_branch_flush_change.pdf);|
ページ名: