プロジェクト実習 LSIの設計と実現 パイプラインプロセッサの設計2 今日の目標 • ID, EXステージを実装し、足し算を出来るように する – LDIH r1, 0, 1 – LDIH r2, 0, 2 – ADD r3, r1, r2 – 足し算の結果に3・00000000が入ることを確認する • 余裕があればWBまで実装 – r3に3・00000000が入ることを確認する 実装方針 • 次のステージに渡すべきデータ – パイプラインレジスタ EX EX/MEM パイプライン ID ID/EX パイプライン レジスタ IF IF/ID パイプライン レジスタ • 前段のパイプラインレジスタの内容を使って • 後段のパイプラインレジスタの内容を決定 ソースコード • • • • • IF/IDパイプラインレジスタの宣言 IFステージのalways ID/EXパイプラインレジスタの宣言 IDステージのalways EX/MEMパイプラインレジスタの宣言 – 以下同様 • 宣言を全部上にまとめて書いても良い ヒント • 現段階では前段以外のパイプラインレジスタの 値は不要 – そのうち必要になってくる • 実は冒頭の例すらまだ動かない – パイプラインレジスタ以外は処理に応じて必要 • ハザードの存在 – 詳細は次回説明 – とりあえず命令の間にいくつかNOPを入れると動作 する 何を実装するべきか • ID – 演算の種類を判別しデータを準備する – 演算対象がレジスタの場合 • レジスタ番号を特定し • レジスタの内容を読み出す • EX – 演算を実行し – 結果をパイプラインレジスタに格納する IDの結果 • LDIH r1, 0, 1 の場合 – OP=LDIH? – A={1 , 00000000} – B=0(不要) • ADD r3, r1, r2 の場合 – OP=ADD – A=(r1の中身) – B=(r2の中身) EXの結果 • LDIH r1, 10 の場合 – C={1000000000} • ADD r3, r1, r2 の場合 – C=(r1の中身)+(r2の中身) 中島研の学生は • 今日中に(次回までに)WBまで実装すること – すべての算術論理演算を実装 – できればLOAD/STOREも • 次回は分岐とハザードの処理を実装
© Copyright 2024 ExpyDoc