計算機構成 第4回 アキュムレータマシン テキスト第3章

Slides:



Advertisements
Similar presentations
プロセッサの設計と実装 後期実験 プロセッサの設計と実装 1 コンピュータの論理設計 「コンピュータを作る」 –仕様設計 –論理設計 –回路・レイアウト –物性・デバイス 後期実験 プロセッサの設計と実装 2 この実験では 課題として IA-32 サブセット仕様が与えられる 各自 RTL 設計 →
Advertisements

CPU設計と パイプライン.
計算機工学特論A 10/17  テキスト内容 1.1~1.4.
07. 値予測 五島 正裕.
VLSI設計論第4回 アキュムレータマシンと 仮遅延シミュレーション
計算機システムⅡ 主記憶装置とALU,レジスタの制御
5.3 各種カウンタ 平木.
高性能コンピューティング学講座 三輪 忍 高性能コンピューティング論2 高性能コンピューティング論2 第4回 投機 高性能コンピューティング学講座 三輪 忍
Verilog HDL 12月21日(月).
コンパイラ 第9回 コード生成 ― スタックマシン ―
2012年度 計算機システム演習 第4回 白幡 晃一.
オリジナルなCPUの開発 指導教授:笠原 宏 05IE063 戸塚 雄太 05IE074 橋本 将平 05IE089 牧野 政道
計算機構成 第7回 サブルーチンコールとスタック テキストp85-90
コンピュータ工学基礎 パイプラインハザード テキスト9章 115~124
ロジック回路学習ボード MLCTB-BASE 説明書 NAND 7400 NOT 7404 AND 7408 OR 7432
VLSI設計論第2回 組み合わせ回路の記述と 論理シミュレーション
4.2.2 4to1セレクタ.
計算機基礎Ⅱ,Ⅲ (指導書 pp. 76~94) 改訂:佐竹 純二 (作成:岡本 吉央).
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
基本情報技術概論(第8回) 埼玉大学 理工学研究科 堀山 貴史
「ソフトウェアのしくみ」.
2005年11月2日(木) 計算機工学論A 修士1年 No, 堀江準.
第7回 2006/6/12.
計算機工学特論A 第4回 論理合成 山越研究室 増山 知東 2007年11月7日 .
計算機入門I ハードウェア(1) 計算機のハードウェア構成 ~計算機のハードウェアとは何か~
ハードウェア記述言語による 論理回路設計とFPGAへの実装 2
計算機構成 第1回 ガイダンス VerilogHDLのシミュレーション環境
OpenMPハードウェア動作合成システムの検証(Ⅰ)
・ディジタル回路とクロック ・プロセッサアーキテクチャ ・例外処理 ・パイプライン ・ハザード
勉強会その3    2016/5/1 10 8分35秒 データの表現 演算.
最適化の方法 中田育男著 コンパイラの構成と最適化 朝倉書店, 1999年 第11章.
コンピュータ系実験Ⅲ 「ワンチップマイコンの応用」 第1週目 アセンブリ言語講座
Advanced Computer Architecture
情報とコンピュータ 静岡大学工学部 安藤和敏
TA 高田正法 B10 CPUを作る 3日目 SPIMの改造 TA 高田正法
計算機構成 第6回 分岐命令とプログラムの実行 テキスト第5章
第二部  回路記述編 第3章 文法概略と基本記述スタイル 3.1 文法を少々 3.1.1~3.1.3.
ディジタル回路の設計と CADによるシステム設計
計算機構成 第2回 ALUと組み合わせ回路の記述
計算機構成 第3回 データパス:計算をするところ テキスト14‐19、29‐35
VLSI設計論第3回 順序回路の記述と論理合成
計算機構成 第8回 POCOの構造とVerilog記述 テキスト第5章-第6章
計算機構成 第11回 マルチサイクルCPU 慶應大学 天野英晴.
計算機構成 第5回 RISCの命令セットアーキテクチャ テキスト第4章
情報とコンピュータ 静岡大学工学部 安藤和敏
コンピュータアーキテクチャ 第 11 回.
コンピュータアーキテクチャ 第 10 回.
坂井 修一 東京大学 大学院 情報理工学系研究科 電子情報学専攻 東京大学 工学部 電気工学科
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
計算機工学特論 スライド 電気電子工学専攻 修士1年 弓仲研究室 河西良介
コンピュータアーキテクチャ 第 10 回.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 4 回.
計算機アーキテクチャ1 (計算機構成論(再)) 第一回 計算機の歴史、基本構成、動作原理
コンピュータアーキテクチャ 第 3 回.
コンピュータアーキテクチャ 第 2 回.
コンピュータアーキテクチャ 第 5 回.
情報とコンピュータ 静岡大学工学部 安藤和敏
計算機アーキテクチャ1 (計算機構成論(再)) 第二回 命令の種類と形式
コンピュータアーキテクチャ 第 4 回.
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
コンピュータアーキテクチャ 第 3 回.
計算機工学論A P46~P49 クロック、リセット、クロック・イネーブルのセット 状態の出力値の指定 ステート・トランジョンの指定
コンピュータアーキテクチャ 第 5 回.
コンピュータアーキテクチャ 第 11 回.
コンピュータ工学基礎 マルチサイクル化とパイプライン化 テキスト9章 115~124
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
情報システム基盤学基礎1 コンピュータアーキテクチャ編
Presentation transcript:

計算機構成 第4回 アキュムレータマシン テキスト第3章 計算機構成 第4回 アキュムレータマシン テキスト第3章 情報工学科 天野英晴

メモリ付きのデータパス 0番地にX、1番地にYが入っている (SL X)+(SL Y)を計算して2番地に 格納せよ we com Address 0 001 00000000 0 100 00000000 1 000 00000010 0 001 00000001 0 100 00000000 0 110 00000010 1 000 00000010 com A B Y S clk ACC Address 命令(制御信号)を各クロックで外から 与える必要があった。 … clk we

アキュムレータマシン 命令メモリから命令を 読み出し(フェッチ:Fetch) 実行(Execution)する com Y + S 1 A B clk PC clk ACC 命令 … … 命令メモリ clk we

命令の実行 0番地にX、1番地にYが入っている X+Yを計算して2番地に格納せよ we com Address 0 001 00000000   0番地 0 110 00000001   1番地 1 000 00000010   2番地 命令の実行 com 001 THB Y + S 1 1 A B clk PC clk ACC 命令 0 001 00000000 00000000 … … 命令メモリ clk we

命令の実行 0番地にX、1番地にYが入っている X+Yを計算して2番地に格納せよ we com Address 0 001 00000000   0番地 0 110 00000001   1番地 1 000 00000010   2番地 命令の実行 com 110 ADD Y + S 1 + 2 A B clk PC clk ACC 1 命令 0 110 00000001 00000001 … … 命令メモリ clk we

命令の実行 0番地にX、1番地にYが入っている X+Yを計算して2番地に格納せよ we com Address 0 001 00000000   0番地 0 110 00000001   1番地 1 000 00000010   2番地 命令の実行 com 000 THA Y + S 1 3 A B clk PC clk ACC 2 命令 1 000 00000010 00000010 … … 1 命令メモリ clk we=1

分岐命令の導入 ACCの内容によってPCの内容を変更する BEZ X Branch Equal Zero if ACC==0 PC←X 1001XXXXXXXX →opcodeは適当に決めた (例) 100100000001 ACCが0ならばPCは1になる→次は1番地の命令を実行→1番地に「飛ぶ」 BNZ X Branch Not equal Zero if ACC!=0 PC←X 1010XXXXXXXX→opcodeは適当に決めた (例) 101000000001 ACCが0でなければPCは1になる→次は1番地の命令を実行→1番地に「飛ぶ」 オペランドは飛び先(命令メモリの番地)を示す:今までの命令と全く違うことに注意!

分岐命令によるアルゴリズムの実行 0001 00000000 LD 0 0110 00000001 ADD 1 1000 00000010 ST 0 0001 00000010 LD 2 0111 00000011 SUB 3 1000 00000010 ST 2 1010 00000000 BNZ 0 1001 00000111 BEZ 7  0番地 0 3番地 1 1番地 m 2番地 n  答←答+m n ← n -1 ここは停止 (ダイナミック ストップ) No n=0? Yes 繰り返しによりアルゴリズムの実行が可能 → プログラム格納型(Stored Program)方式

0001 00000000  LD 0 0110 00000001  ADD 1  1000 00000010 ST 0 0001 00000010 LD 2 0111 00000011 SUB 3 1000 00000010 ST 2 1010 00000000 BNZ 0 1001 00000111 BEZ 7   com 001 THA Y + S 1 1 A B clk PC clk ACC 命令 0001 00000000 2 00000000 3 1 … … 命令メモリ clk we=0

0001 00000000  LD 0 0110 00000001  ADD 1  1000 00000010 ST 0 0001 00000010 LD 2 0111 00000011 SUB 3 1000 00000010 ST 2 1010 00000000 BNZ 0 1001 00000111 BEZ 7   com 110 ADD Y + S 1 2 A B clk PC clk 1 命令 0110 00000001 2 00000001 3 1 … … 命令メモリ clk we=0

0001 00000000  LD 0 0110 00000001  ADD 1  1000 00000000 ST 0 0001 00000010 LD 2 0111 00000011 SUB 3 1000 00000010 ST 2 1010 00000000 BNZ 0 1001 00000111 BEZ 7   com 110 ADD Y + S 1 3 A B clk PC clk 2 2 命令 1000 00000000 2 00000000 3 1 … … 1 命令メモリ clk we=1

0001 00000000  LD 0 0110 00000001  ADD 1  1000 00000000 ST 0 0001 00000010 LD 2 0111 00000011 SUB 3 1000 00000010 ST 2 1010 00000000 BNZ 0 1001 00000111 BEZ 7   com 001 THB Y + S 1 4 A B clk PC clk 2 3 命令 0001 00000010 2 2 00000010 3 1 … … 命令メモリ clk we=0

0001 00000000  LD 0 0110 00000001  ADD 1  1000 00000010 ST 0 0001 00000010 LD 2 0111 00000011 SUB 3 1000 00000010 ST 2 1010 00000000 BNZ 0 1001 00000111 BEZ 7   com 111 SUB Y + S 1 5 A B clk PC clk 3 4 命令 0111 00000011 2 2 00000011 3 1 … … 命令メモリ clk we=0

0001 00000000  LD 0 0110 00000001  ADD 1  1000 00000000 ST 0 0001 00000010 LD 2 0111 00000011 SUB 3 1000 00000010 ST 2 1010 00000000 BNZ 0 1001 00000111 BEZ 7   com 000 ST Y + S 1 6 A B clk PC clk 2 5 命令 1000 00000010 2 00000010 3 1 … … 1 命令メモリ clk we=1

0001 00000000  LD 0 0110 00000001  ADD 1  1000 00000000 ST 0 0001 00000010 LD 2 0111 00000011 SUB 3 1000 00000010 ST 2 1010 00000000 BNZ 0 1001 00000111 BEZ 7   BNZ命令の実行 operand マルチプレクサ データを選択 00000000 + 7 1 com --- Y S A B 命令デコーダ 1010を検出 ACC=0の結果で マルチプレクサを制御 clk Dec. =0? PC 1010 en=0 clk 2 6 命令 1010 00000000 2 3 1 … … 命令メモリ clk we=0

マルチプレクサと命令デコーダ ACCのen信号 メモリのwe信号も ついでに制御させてしまおう! PC opcode 命令 デコーダ Y S B ACC =0? zero PC+1 operand S=0:Y ←A S=1:Y←B Y = S?A:B; 条件構文 (マルチプレクサ文) opcode==1001 & zero | opcode==1010& ~zero

アキュムレータマシンのVerilog記述 入出力とレジスタ、ワイヤの宣言 `include “def.h” module accum( input clk, input rst_n, input [`OPCODE_W-1:0] opcode, input[`ADDR_W-1:0] operand, input[`DATA_W-1:0] ddatain, output we, output [`ADDR_W-1:0] pcout, output [`DATA_W-1:0] accout); reg[`DATA_W-1:0] accum; reg[`ADDR_W-1:0] pc; wire [`DATA_W-1:0] alu_y; wire op_st, op_bez, op_bnz; 命令メモリ データメモリ 命令メモリのアドレス 命令のデコード信号

アキュムレータマシンのVerilog記述 デコードと入出力、ALUの接続 assign op_st = opcode== `OP_ST; assign op_bez = opcode== `OP_BEZ; assign op_bnz = opcode==`OP_BNZ; assign we = op_st; assign accout = accum; assign pcout = pc; alu alu_1(.a(accum), .b(datain), .s(opcode[`SEL_W-1:0], .y(alu_y)); def.h `define OP_ST 4’b1000 `define OP_BEZ 4’b1001 `define OP_BNZ 4’b1010 …

アキュムレータマシンのVerilog記述 レジスタの制御 always @(posedge clk or negedge rst_n) begin if(!rst_n) pc <=0; else if (op_bez & (accum==0) | op_bnz & (accum!=0)) pc <= oprand; else pc <= pc+1; end if(rst_n) accum <=0; else if(!op_st & !op_bnz & !op_bnz) accum <= alu_y; endmodule pcの制御 accの制御

テストベンチでのメモリの記述 reg [`DATA_W-1:0] dmem[0:`DEPTH-1]; reg [`INST_W-1:0] imem[0:`DEPTH-1]; …. assign {opcode, operand} = imem[pcout]; initial begin $readmemh(“dmem.dat”,dmem); $readmemb(“imem.dat”,imem); 0001_00000000 0110_00000001 1000_00000000 0001_00000010 0111_00000011 1000_00000010 … 0000 0002 0003 0001 … imem.dat:12bit dmem.dat:16bit

演習課題 演習1 48ページ演習3-5 提出物はimem.dat Aを0番地、Bを1番地のデータとして(SR A) + (SR B)のデータを2番地にしまうプログラムを実行せよ 48ページ演習3-5 1番地にXが格納されている。X+(X-1)+(X-2)+…2+1を計算するプログラムを実行せよ 提出物はimem.dat