計算機構成論 (Chap 3) @C401
計算機構成論 (Chap. 3) @C401
http://www.ngc.is.ritsumei.ac.jp/~ger/Lectures/CompArch2012/index.html (user=ganbare, passwd = 初回の講義で言いました) 講義に出るなら、分からないなら質問しよう。 単位を取りたいなら、章末問題は自分で全部といておこう (レポートと考えればいいんです!) ご意見、ご要望、ご質問は、 山下個人か [email protected] (レポ トと考えればいいんです!)山下 茂
山下個人か 受講者全員 にメールください。 [email protected] [email protected]0
情報システム学科 次世代コンピューティング研究室山下 茂
Chap. 3のセルフチェック
以下の文章の意味がわからないなら、今から,寝ないで
聞いてみましょう。
聞いてみましょう。
19 単一クロックサイクル方式では、命令によって実行に本質的に必要な時間が異なる。 20 単一クロック・サイクル方式では性能があまりでない。 21 ルチサイクル方式は単 サイクル方式に比べて2 の利点がある 21 マルチサイクル方式は単一サイクル方式に比べて2つの利点がある。 22 マルチサイクル方式では、情報を一時的に保持するレジスタが必要となる。 23 マルチサイクル方式では、5サイクルかけて各命令を実行する。 24 マルチサイクル方式では、制御回路を組み合わせ回路で実現できない。 25 マイクロプログラミングという用語を知っている。 26 プロセッサに関する用語として、例外、割り込みという用語を知っている。1
What to learn
• 単一クロックサイクルの問題点 • マルチサイクルの概要、考え方、単一クロックサイクルとの違い Next Topic 概要、考 、 違 • マルチサイクルの各サイクルの詳細 1. 命令フェッチ 2 命令デコード+レジスタ・フェッチ 2. 命令デコ ド+レジスタ フェッチ 3. 実行、メモリ・アドレスの計算 or 分岐命令の完了 4. メモリ・アクセス or R形式命令の完了 5 メモリ読み出し完了 5. メモリ読み出し完了 • 制御ユニットの詳細(有限状態機械による方法) *マイクロプログラミングによる方法は用語程度 例外の実現 • 例外の実現 教材2
• この内容は教科書にはありません(一つ前の版の教科書にはあります)重要問題①
以下の2つの方式について、どちらが速いかを検討せよ。 1) 全ての命令が固定長の1クロックサイクルで実現する 1) 全ての命令が固定長の1クロックサイクルで実現する 2) それぞれの命令が可変長のクロックを使用し、 命令を1クロ クサイクルで動作を実現する方式に いて ただし、 •メモリユニット 200ps 命令を1クロックサイクルで動作を実現する方式について、 •メモリユニット 200ps •ALUと加算器 100ps •レジスタファイル(読出し/書込み) 50ps それ以外では遅延なしとする。 (*次ページの表の値は,後ほどの例とは違っていることに注意) また, 命令ミックスは ロード25%, ストア10%, R形式45%, 分岐15%, ジャンプ5%3
である性能の計算方法: 自力でできるように!
答)
命令タイプ 命令メモリ レジスタ ALU操作 データ・メモリ レジスタ 合計時間 それぞれの命令が使用する機能ユニットとそのクリティカルパスの実行時間 R形式 200 50 100 50 400 語のロード 200 50 100 200 50 600 語のストア 200 50 100 200 550 分岐 200 50 100 350 ジャンプ 200 200 1)の場合 命令タイプの中で時間を最も要するクロックサイクルタイムが 1)の場合、命令タイプの中で時間を最も要するクロックサイクルタイムが、 CPUクロックサイクルタイム=600ps 2)の場合、クロックサイクルタイムが変動するので、 その平均をとることにより CPUクロックサイクルタイムが求まる その平均をとることにより、CPUクロックサイクルタイムが求まる。 平均CPUクロックサイクルタイム = 600x0.25 + 550x0.1 + 400x0.45 + 350x0.15 + 200x0.05 = 447.5ps4
性能比=600/447.5=1.34エッジトリガクロック方式
復習 エッジトリガクロック方式 : クロック信号のエッジのみで状態更新を行う方式 同一クロックサイクルで、読み出し・書込みを両方行える 状態更新l k
(立ち上がり動作で、状態更新を行うとした場合)clock
状態論理要素
組み合わせ論理回路
状態論理要素
書き込み 読み出し組み合わせ論理回路
クロックの立ち上がりで更新(立下りのシステムもあり) (それ以外では値を更新しない)5
クロックの立ち上がりで更新(立下りのシステムもあり) (それ以外では値を更新しない)お絵かきスペース
単一(クロック)サイクルの問題点
命令によ て 必要な処理時間が大幅に異なる
•命令によって、必要な処理時間が大幅に異なる。
(浮動小数点演算などの複雑な命令はもっと時間がかかる。)
•かといって
かといって、可変長のクロックは現実的には設計が非常に困難
可変長のクロックは現実的には設計が非常に困難
その解決として、マルチサイクルを用いた実現が
あります
その詳細をこれから勉強していきます
あります。その詳細をこれから勉強していきます。
7
What to learn
• 単一クロックサイクルの問題点 • マルチサイクルの概要 考え方 単一クロックサイクルとの違い • マルチサイクルの概要、考え方、単一クロックサイクルとの違い • マルチサイクルの各サイクルの詳細 1. 命令フェッチ Next Topic 2. 命令デコード+レジスタ・フェッチ 3. 実行、メモリ・アドレスの計算 or 分岐命令の完了 Next Topic 4. メモリ・アクセス or R形式命令の完了 5. メモリ読み出し完了 • 制御ユニットの詳細(有限状態機械による方法) • 制御ユニットの詳細(有限状態機械による方法) *マイクロプログラミングによる方法は用語程度 • 例外の実現 教材8
• この内容は教科書にはありません(一つ前の版の教科書にはあります)お絵かきスペース
マルチサイクルの考え方 1/2
命令タイプ 命令メモリ レジスタ+α ALU操作 データ・メモリ レジスタ+α 合計時間 R形式形式 150 100 100 100 450 語のロード 150 100 100 150 100 600 語のストア 150 100 100 150 500 分岐 150 100 100 350 ジャンプ 150 150 単一クロックサイクルでは、クロックサイクルを600psにするしか方法がない。New Idea
クロックを150psにしてもいいかも!New Idea
ロードは5サイクル=750ps, ジャンプは1サイクル=150ps 可変長ではないが、それに近い効果!(メリット①)10
注意:先の例と数値が違いますが別の例と思ってくださいマルチサイクルの考え方 2/2
命令タイプ 命令メモリ レジスタ+α ALU操作 データ・メモリ レジスタ+α 合計時間 R形式形式 150 100 100 100 450 語のロード 150 100 100 150 100 600 語のストア 150 100 100 150 500 分岐 150 100 100 350 ジャンプ 150 150 クロックを150psにしてもいいかも!New Idea
p 各サイクルで、ALUやメモリは一つでいい!(メリット②) But, 各サイクルの最後に、(次のサイクルで必要となるデータ)を覚えるための レジスタが必要となる。(これが理解できれば、マルチサイクルが分かったことになる: 後で確認してください )11
後で確認してください。)命令実行過程のクロック・サイクルへの分割
このスライドはまとめスライドです 後で見て理解できればOK 各クロックサイクルにおける作業量のバランスをとり、クロックサイクル時間を最小にする ク クサイクルには 次の 種類の このスライドはまとめスライドです。後で見て理解できればOK 重要なポイント 1クロックサイクルには、次の3種類の 1) メモリアクセス、 2) レジスタアクセス、 3) ALU操作 のうちの操作を高々1回しかしないものとして、データパスを設計する。 保存先: ・ PC レジスタ・ファイル メモリPC, レジスタ ファイル, メモリ ・ 一時レジスタ:A, B, MDR(メモリ・データ・レジスタ), ALUout, ・ (書き込み制御付き)命令レジスタ(instruction register): IR *IRのみ複数クロック保持されるので書き込み制御つき (他は1クロック分データを覚えるのみ)12
命令実行過程のクロック・サイクルへの分割
5段のステ プ(制御信号については省略) まとめ 理解し れば問題なし 1.命令フェッチステップ IR = メモリ[PC]; PC=PC+4; (命令フェッチとPCの計算) 5段のステップ(制御信号については省略) まとめ: 理解していれば問題なし [ ]; ; ( 2.命令デコードとレジスタフェッチのステップ A=レジスタ[IR[25-21]]; B=レジスタ[IR[20-16]]; (rs,rtフィールドの読込み) ALUOut = PC+(符号拡張(IR[15-0] <<2)); (分岐先の計算)( 拡張 [ ] )); 算 3.実行、メモリアドレスの計算または分岐の完了ステップ ALUOut = A+符号拡張(IR[15-0]); (メモリ参照の場合) ALUOut = A 演算子 B; (R形式命令の場合)演算子 ; ( 形式命令 場合) if(A==B) PC=ALUOut; (分岐) PC=PC[31-28] || (IR[25-0]<<2); (ジャンプ) 4.メモリアクセス、またはメモリアクセス、またはR形式命令完了ステップR形式命令完了ステップ MDR = メモリ[ALUOut]; (ロードの場合) メモリ[ALUOut]=B; (ストアの場合) レジスタ[IR[15-11]]=ALUOut; (R形式命令の場合) レジスタ[IR[15 11]] ALUOut; (R形式命令の場合) 5.メモリ読出し完了ステップ レジスタ[IR[20-16]]=MDR; (ロード)13
各命令の各ステップでの動作のまとめ
命令タイプ 命令フェッチ 命令デコードとレジスタフェッチ 実行、メモリアドレスの計算または分岐の完了 メモリアクセス、またはR形式命令完了 メモリ読出し完了 R形式 IR = メモリ[PC];PC=PC+4; A=レジスタ[IR[25-21]]; B=レジスタ[IR[20-16]]; ALUOut = PC+ (符号拡張(IR[15-0] <<2));ALUOut = A 演算子 B; レジスタ[IR[15-11]]=ALUOut;
語のロード Rと同じ Rと同じ ALUOut = A+ 符号拡張(IR[15-0]); MDR = メモリ[ALUOut]; レジスタ[IR[20-16]] =MDR; 語のストア Rと同じ Rと同じ ロードと同じ メモリ[ALUOut]=B; 語のストア Rと同じ Rと同じ ロ ドと同じ メモリ[ALUOut]=B; 分岐 Rと同じ Rと同じ PC=ALUOut; if(A==B) ジャンプ Rと同じ Rと同じ PC=PC[31-28] || (IR[25-0]<<2); 前ペ ジの書きなおし す *前ページの書きなおしです! 前のページを見ながら、自分で表を作れますよね? また、それぞれの動作の意味も確認してください。 (自己確認クイズ 空欄をうめよ)
14
(自己確認クイズ:空欄をうめよ)お絵かきスペース
お絵かきスペース ① 一番時間がかる命令は何か?
② 5つのステップのうちALUを使うステップは? ② 5つのステップのうちALUを使うステップは?
図4.24 単一クロックサイクルのデータパス
命令 復習 加算 2ビット 左に シフト 命令 [25-0] 26 28 PC+4 [31-28] ジャンプ先アドレス[31-0 ] 4 2ビット 加算 M U X 1 0 制御 RegDst Branch MemRead MemtoReg 命令 [31-26] M U X 1 0 Jump 読出 読出 命令 メモリ 命令アドレス PC 2ビット 左に シフト 命令 [25-21] 制御 MemWrite ALUOp g ALUSrc RegWrite AND [31-26] レジスタ reg1 ALU ALU結果 読出 reg2 書込 reg reg1 読出 reg2 ALU操作 ゼロ判定 デ 読出 データ アドレス M U M U メモリ 命令[31-0] 0 1 命令 [20-16] M U 0 書込 データ 4 ALU操作 データ メモリ 書込 データ U X U X 1 0 命令 [15-11] 命令 X 1 符号 拡張 32 16 ALU 制御 命令 [15-0] 命令 [5-0]17
マルチサイクル・データパスの全体像
最後にもう一度確認してください 1クロックサイクルには、1) メモリアクセス、2)レジスタアクセス、3)ALU操作 のうち1つの操作しかしないものとして、データパスを設計する。 PC メモリ アドレス レジスタ ALU 命令または データ レジスタ 番号 データ A ALUOut 命令 レジスタ リ デ タ レジスタ レジスタ 番号 レジスタ 番号 データ B メモリ・ データ レジスタ命令
デ
単一サイクルデータパスとの差異 前のページと比較せよ。 ①何が共有化されたか?・命令メモリ、データメモリ ⇒
1つのメモリ
・1つの
ALUと2つの加算器 ⇒ 1つのALU
・
主要な機能ユニットの後ろに データ保持用のレジスタを追加
①何が共有化されたか? ②何が追加されたか?18
・
主要な機能ユニットの後ろに、データ保持用のレジスタを追加
基本的命令を扱うMIPS用のマルチサイクルデータパス
PC アドレス 読出 ALU レジスタ1 A M U X 命令 [25-21] 読出 M U X 0 0 PC メモリ データ スタ A ALU 命令 レジスタ ALU ゼロ 判定 B [25 21] 命令 [20-16] 命令 [15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 データ2 M U X X 0 1 0 1 命令 [15-11] 書込み データ Out レジスタ ALU 結果 M U X B レジスタ 書込 データ M U X 1 0 1 2 3 4 命令 [15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 1 32 16 いくつかの機能ユニットが異なる目的のために共有される ⇒ 既存のマルチプレクサの拡張・追加19
例) ALU入力部分に、マルチプレクサを用意し,異なる目的に対応基本的命令を扱うMIPS用のマルチサイクルデータパス
追加されたレジスタ
1. 命令レジスタ (IR: instruction register)
フェッチした命令を保存
2. メモリ・データレジスタ(MDR: memory data register)
メモリから読み出したデータを保存 3. Aレジスタ、Bレジスタ レジスタファイルから読み出したレジスタ・オペランドを保存 4. ALUOutレジスタ ALUからの出力を保存 ALUからの出力を保存 •IR以外は、次のクロックサイクルまで保存したらいい •IRは複数サイクル保存しないといけないので、これのみ *全ての制御線の勉強が終わったあとで確認すること
20
書き込み制御線を持つ 終わったあとで確認することお絵かきスペース
マルチサイクル方式の全データバスと必要な制御線
IorD MemRead MemWrite RegWrite RegDst IRWrite ALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC [31-28] PCSource PCWrite PCWriteCond アドレス 読出 M U M 0 0 g W te M U X 命令[31-26] 2ビット 左シフト 26 28 [31 28] 0 1 2 ジャンプ先 アドレス[31 0] 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU Out ALU ゼロ 判定 X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 デ 読出 データ1 読出 データ2 M U X M U X 0 1 1 0 1 1 命令 [15-11] X 2 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ メモリ・ 結果 U X レジスタ データ M U X 符号 拡張 2ビット 左シフト 1 0 1 1 2 3 4 32 命令[15-0] メモリ・ データ レジスタ 拡張 32 左シフト 16 ALU 制御 命令 [5-0]22
ミニクイズ 0
前のページのMUX(それぞれ)の,入力数と出力数は?
•2-1 MUXの制御入力は,1 ビット
•3-1 MUXの制御入力は,2 ビット
•4-1 MUXの制御入力は,2 ビット
23
マルチサイクル方式の制御部分
PCSource PCWrite PCWriteCond ゼロ判定 IorD MemRead MemWrite ALUSrcA ALUSrcB ALUOp 制御 PCWrite MemWrite RegWrite RegDst IRWrite ALUSrcA MemtoReg 制御 IRWrite24
マルチ・サイクル:各制御信号の働きII
信号名 ネゲートされたときの働き アサートされたときの働き 1ビット制御信号 RegDst 書込みレジスタのディスティネーションレジスタ番号がrtフィールド(ビット20-16)から得ら れる 書込みレジスタのディスティネーションレジスタ 番号がrdフィールド (ビット15-11)から得られる RegWrite なし レジスタにデータが書き込まれるALUSrcA ALUの第1オペランドはPC ALUの第1オペランドがAレジスタから得られる MemRead なし 読出しアドレスで指定されたデータメモリの内容がデータ出力へ容 MemWrite なし 書込みアドレスで指定されたデータメモリへデータ入力の内容を書込む MemtoReg レジスタ書込みデータ入力へ レジスタ書込みデータ入力へ渡される値が MemtoReg レジスタ書込みデ タ入力渡される値がALUOut から得られる レジスタ書込みデ タ入力 渡される値がMDRから得られる IorD メモリユニットへのアドレス指定にPCが使われる メモリユニットへのアドレス指定にALUOut が使われる IRWrite なし メモリからの出力がIRに書き込まれる IRWrite なし メモリからの出力がIRに書き込まれる PCWrite なし PCへ書き込むデータはPCSourceにより制御される PCWriteCond なし ALUのゼロ判定出力もアサート時にPCに書込む
25
PCWriteCond なし 込む各制御信号の働きIII
信号名 値 働き2ビット制御信号
信号名 値 働き ALUOp 00 ALUは加算を行う 01 ALUは減算を行う ALUOp 01 ALUは減算を行う 10 命令の機能コード・フィールドにより、ALUの操作が決まる 00 ALUの第2入力がBレジスタから得られる ALUSrcB 00 ALUの第2入力がBレジスタから得られる 01 ALUの第2入力は定数の4 10 ALUの第2入力はIRの下位16ビットを符号拡張したもの第 拡張 11 ALUの第2入力はIRの下位16ビットを符号拡張して、2ビットへ左シフトしたもの 00 ALUの出力(PC+4)をPCへの書込み用に送る PCSource 00 ALUの出力(PC+4)をPCへの書込み用に送る 01 ALUOutの出力(分岐先アドレス)をPCへの書込み用に送る 10 ジャンプ先アドレス(IR[25-0]を2ビット左シフト、PC+4[31-28]と連結)を26
10 ジャンプ先アドレス( [PCへの書込み用に送る ]を ビット左シフト、 [ ]と連結)をお絵かきスペース
自己確認クイズ
1. マルチサイクルが単一サイクルに比べてよい点を2つ挙げよ。 •可変長サイクルに近い効果を得られる. 2. 単一サイクルに比べて、マルチサイクルで追加されるハードウェアモジュールは? 可変長サイクルに近い効果を得られる. •ハードウェアが減る. A B MDR ALUO t IR (あとMUX) 3. 上記の中で、書き込み制御線のあるレジスタは何か?•A, B, MDR, ALUOut,IR (あとMUX)
4. 単一サイクルに比べて、マルチサイクルで減ったハードウェアモジュールは? •IR •メモリ ALU •メモリ,ALU 自分でまとめてください。
28
お絵かきスペース
What to learn
• 単一クロックサイクルの問題点 • マルチサイクルの概要 考え方 単一クロックサイクルとの違い • マルチサイクルの概要、考え方、単一クロックサイクルとの違い • マルチサイクルの各サイクルの詳細 1. 命令フェッチ Next Topic 2. 命令デコード+レジスタ・フェッチ 3. 実行、メモリ・アドレスの計算 or 分岐命令の完了 Next Topic 4. メモリ・アクセス or R形式命令の完了 5. メモリ読み出し完了 • 制御ユニットの詳細(有限状態機械による方法) • 制御ユニットの詳細(有限状態機械による方法) *マイクロプログラミングによる方法は用語程度 • 例外の実現 教材30
• この内容は教科書にはありません(一つ前の版の教科書にはあります)命令実行過程のクロック・サイクルへの分割
5段のステ プ(制御信号については省略) 1.命令フェッチステップ IR = メモリ[PC]; PC=PC+4; (命令フェッチとPCの計算) 5段のステップ(制御信号については省略)再掲
[ ]; ; ( 2.命令デコードとレジスタフェッチのステップ A=レジスタ[IR[25-21]]; B=レジスタ[IR[20-16]]; (rs,rtフィールドの読込み) ALUOut = PC+(符号拡張(IR[15-0] <<2)); (分岐先の計算)( 拡張 [ ] )); 算 3.実行、メモリアドレスの計算または分岐の完了ステップ ALUOut = A+符号拡張(IR[15-0]); (メモリ参照の場合) ALUOut = A 演算子 B; (R形式命令の場合)演算子 ; ( 形式命令 場合) if(A==B) PC=ALUOut; (分岐) PC=PC[31-28] || (IR[25-0]<<2); (ジャンプ) 4.メモリアクセス、またはメモリアクセス、またはR形式命令完了ステップR形式命令完了ステップ MDR = メモリ[ALUOut]; (ロードの場合) メモリ[ALUOut]=B; (ストアの場合) レジスタ[IR[15-11]]=ALUOut; (R形式命令の場合) レジスタ[IR[15 11]] ALUOut; (R形式命令の場合) 5.メモリ読出し完了ステップ レジスタ[IR[20-16]]=MDR; (ロード)31
1.命令フェッチステップ 1/2
ズ プ 性 される ジ 必 な制御線を ミニクイズ1:このステップで活性化されるモジュールと必要な制御線を示せ IorD MemRead MemWrite RegWrite RegDst IRWrite ALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC [31-28] PCSource PCWrite PCWriteCond アドレス 読出 M U M 0 0 g W te M U X 命令[31-26] 2ビット 左シフト 26 28 [31 28] 0 1 2 ジャンプ先 アドレス[31-0] 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU Out ALU ゼロ 判定 X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 デ 読出 データ1 読出 データ2 M U X M U X 0 1 1 0 1 1 命令 [15-11] X 2 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ メモリ・ 結果 U X レジスタ データ M U X 符号 拡張 2ビット 左シフト 1 0 1 1 2 3 4 32 命令[15-0] メモリ・ データ レジスタ 拡張 32 左シフト 16 ALU 制御 命令 [5-0]32
1.命令フェッチステップ 1/2
ズ プ 性 される ジ 必 な制御線を 予備 ミニクイズ1:このステップで活性化されるモジュールと必要な制御線を示せ IorD MemRead MemWrite RegWrite RegDst IRWrite ALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC [31-28] PCSource PCWrite PCWriteCond アドレス 読出 M U M 0 0 g W te M U X 命令[31-26] 2ビット 左シフト 26 28 [31 28] 0 1 2 ジャンプ先 アドレス[31-0] 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU Out ALU ゼロ 判定 X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 デ 読出 データ1 読出 データ2 M U X M U X 0 1 1 0 1 1 命令 [15-11] X 2 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ メモリ・ 結果 U X レジスタ データ M U X 符号 拡張 2ビット 左シフト 1 0 1 1 2 3 4 32 命令[15-0] メモリ・ データ レジスタ 拡張 32 左シフト 16 ALU 制御 命令 [5-0]33
ズ プ 線 値 全 答
1.命令フェッチステップ2/2
RegDst IR = メモリ[PC]; PC=PC+4; (命令フェッチとPCの計算) ミニクイズ2:このステップで、必要な制御線の値を全て答えよ。 RegDst RegWrite 0 ALUSrcA 0 MemRead 1 [ ]; ; ( RegWrite ALUSrcA MemRead 1 MemWrite 0 MemtoReg MemWrite MemtoRegg IorD 0 IRWrite 1Point: 書き込んでほしくないところは
g IorD IRWrite PCWrite 1 PCWriteCond ALUop 00Point: 書き込んでほしくないところは
必ず
書き込み制御線を0にする
PCWrite PCWriteCond ALUop ALUop 00 ALUSrcB 01 PCSource 00 ALUop ALUSrcB PCSource34
お絵かきスペース
2.命令デコードとレジスタフェッチのステップ1/2
ズ プ 性 される ジ 必 な制御線を ミニクイズ3:このステップで活性化されるモジュールと必要な制御線を示せ IorD MemRead MemWrite RegWrite RegDst IRWrite ALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC [31-28] PCSource PCWrite PCWriteCond アドレス 読出 M U M 0 0 g W te M U X 命令[31-26] 2ビット 左シフト 26 28 [31 28] 0 1 2 ジャンプ先 アドレス[31-0] 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU Out ALU ゼロ 判定 X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 デ 読出 データ1 読出 データ2 M U X M U X 0 1 1 0 1 1 命令 [15-11] X 2 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ メモリ・ 結果 U X レジスタ データ M U X 符号 拡張 2ビット 左シフト 1 0 1 1 2 3 4 32 命令[15-0] メモリ・ データ レジスタ 拡張 32 左シフト 16 ALU 制御 命令 [5-0]36
2.命令デコードとレジスタフェッチのステップ1/2
ズ プ 性 される ジ 必 な制御線を 予備 ミニクイズ3:このステップで活性化されるモジュールと必要な制御線を示せ IorD MemRead MemWrite RegWrite RegDst IRWrite ALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC [31-28] PCSource PCWrite PCWriteCond アドレス 読出 M U M 0 0 g W te M U X 命令[31-26] 2ビット 左シフト 26 28 [31 28] 0 1 2 ジャンプ先 アドレス[31-0] 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU Out ALU ゼロ 判定 X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 デ 読出 データ1 読出 データ2 M U X M U X 0 1 1 0 1 1 命令 [15-11] X 2 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ メモリ・ 結果 U X レジスタ データ M U X 符号 拡張 2ビット 左シフト 1 0 1 1 2 3 4 32 命令[15-0] メモリ・ データ レジスタ 拡張 32 左シフト 16 ALU 制御 命令 [5-0]37
2.命令デコードとレジスタフェッチのステップ2/2
ズ プ 線 値 全 答 A=レジスタ[IR[25-21]]; B=レジスタ[IR[20-16]]; ミニクイズ4:このステップで、必要な制御線の値を全て答えよ。 RegDst RegDst レジスタ[ [ 5 ]]; レジスタ[ [ 0 6]]; (rs,rtフィールドの読込み) ALUOut = PC+(符号拡張(IR[15-0] <<2)); RegWrite 0 ALUSrcA 0 MemRead 0 RegWrite ALUSrcAMemRead ALUOut PC (符号拡張(IR[15 0] 2));
(分岐先の計算) 0 MemWrite 0 MemtoReg MemWrite MemtoReg もし、命令が分岐でないと分かったら単にALUOut の値は後で使わなければいい。 g IorD IRWrite 0 g IorD IRWrite もし、レジスタBは必要なければ 単に後でつかわなければいい PCWrite 0 PCWriteCond 0 ALUop 00 PCWrite PCWriteCond ALUop ALUop 00 ALUSrcB 11 PCSource ALUop ALUSrcB PCSource
38
お絵かきスペース
3.実行、メモリアドレスの計算または分岐の完了ステップ
1/10
R形式命令 場合 R形式命令の場合 ミニクイズ7:このステップで活性化されるモジュールと必要な制御 線を示せ IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]40
3.実行、メモリアドレスの計算または分岐の完了ステップ
1/10
R形式命令 場合 予備 R形式命令の場合 ミニクイズ7:このステップで活性化されるモジュールと必要な制御 線を示せ IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]41
3.実行、メモリアドレスの計算または分岐の完了ステップ
2/10
ズ プ 線 値 全 答 R形式命令 場合 RegDst ALUOut = A 演算子 B; ミニクイズ8:このステップで、必要な制御線の値を全て答えよ。 R形式命令の場合 RegDst RegWrite 0 ALUSrcA 1 MemRead 0 RegWrite ALUSrcA MemRead 0 MemWrite 0 MemtoReg MemWrite MemtoRegg IorD IRWrite 0 g IorD IRWrite PCWrite 0 PCWriteCond 0 ALUop 10 PCWrite PCWriteCond ALUop ALUop 10 ALUSrcB 00 PCSource ALUop ALUSrcB PCSource42
お絵かきスペース
3.実行、メモリアドレスの計算または分岐の完了ステップ
3/10
ズ プ 性 される ジ 必 な制御 メモリ参照の場合 ミニクイズ5:このステップで活性化されるモジュールと必要な制御 線を示せ IorD MemRead MemWrite RegWrite RegDst IRWrite ALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC [31 28] PCSource PCWrite PCWriteCond M U M 0 0 RegDst IRWrite M U X 命令[31-26] 2ビット 左シフト 26 28 [31-28] 0 1 2 ジャンプ先 アドレス[31 0] 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU O ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 データ2 M U X M U X 0 1 1 0 1 1 命令 [15-11] X [ ] 2 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ メモリ ALU 結果 M U X B レジスタ 書込 データ M U X 符号 2ビット 左シ ト 1 0 1 1 2 3 4 命令[15-0] メモリ・ データ レジスタ 拡張 32 左シフト 16 ALU 制御 命令 [5-0]44
3.実行、メモリアドレスの計算または分岐の完了ステップ
3/10
ズ プ 性 される ジ 必 な制御 予備 メモリ参照の場合 ミニクイズ5:このステップで活性化されるモジュールと必要な制御 線を示せ IorD MemRead MemWrite RegWrite RegDst IRWrite ALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC [31 28] PCSource PCWrite PCWriteCond M U M 0 0 RegDst IRWrite M U X 命令[31-26] 2ビット 左シフト 26 28 [31-28] 0 1 2 ジャンプ先 アドレス[31 0] 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU O ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 データ2 M U X M U X 0 1 1 0 1 1 命令 [15-11] X [ ] 2 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ メモリ ALU 結果 M U X B レジスタ 書込 データ M U X 符号 2ビット 左シ ト 1 0 1 1 2 3 4 命令[15-0] メモリ・ データ レジスタ 拡張 32 左シフト 16 ALU 制御 命令 [5-0]45
3.実行、メモリアドレスの計算または分岐の完了ステップ
4/10
ズ プ 線 値 全 答 ALUOut = A+符号拡張(IR[15-0]); ミニクイズ6:このステップで、必要な制御線の値を全て答えよ。 メモリ参照の場合 RegDst RegDst ALUOut A 符号拡張(IR[15 0]); RegWrite 0 ALUSrcA 1 MemRead 0 RegWrite ALUSrcA MemRead 0 MemWrite 0 MemtoReg MemWrite MemtoRegg IorD IRWrite 0 g IorD IRWrite PCWrite 0 PCWriteCond 0 ALUop 00 PCWrite PCWriteCond ALUop ALUop 00 ALUSrcB 10 PCSource ALUop ALUSrcB PCSource46
お絵かきスペース
3.実行、メモリアドレスの計算または分岐の完了ステップ
5/10
分岐の場合 成 時 ミニクイズ9:このステップで活性化されるモジュールと必要な制御線を示せ 成立の時 IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]48
3.実行、メモリアドレスの計算または分岐の完了ステップ
5/10
分岐の場合 成 時 予備 ミニクイズ9:このステップで活性化されるモジュールと必要な制御線を示せ 成立の時 IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]49
3.実行、メモリアドレスの計算または分岐の完了ステップ
6/10
ズ プ 線 値 全 答 分岐 場合 if(A==B) PC=ALUOut; ミニクイズ10:このステップで、必要な制御線の値を全て答えよ。 分岐の場合 RegDst 成立の時 RegDst if(A B) PC ALUOut; RegWrite 0 ALUSrcA 1 MemRead 0 RegWrite ALUSrcA MemRead 0 MemWrite 0 MemtoReg MemWrite MemtoRegg IorD IRWrite 0 g IorD IRWrite PCWrite 0 PCWriteCond 1 ALUop 01 PCWrite PCWriteCond ALUop ALUop 01 ALUSrcB 00 PCSource 01 ALUop ALUSrcB PCSource50
お絵かきスペース
3.実行、メモリアドレスの計算または分岐の完了ステップ
7/10
分岐の場合 成 時 ミニクイズ11:このステップで活性化されるモジュールと必要な制御線を示せ 不成立の時 IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]52
3.実行、メモリアドレスの計算または分岐の完了ステップ
7/10
分岐の場合 成 時 予備 ミニクイズ11:このステップで活性化されるモジュールと必要な制御線を示せ 不成立の時 IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]53
3.実行、メモリアドレスの計算または分岐の完了ステップ
8/10
ズ プ 線 値 全 答 分岐 場合 if(A==B) PC=ALUOut; ミニクイズ12:このステップで、必要な制御線の値を全て答えよ。 分岐の場合 RegDst 不成立の時 RegDst if(A B) PC ALUOut; RegWrite 0 ALUSrcA 1 MemRead 0 RegWrite ALUSrcA MemRead 0 MemWrite 0 MemtoReg 成立の時と違うところはあるでしょうか MemWrite MemtoRegg IorD IRWrite 0 g IorD IRWrite PCWrite 0 PCWriteCond 1 ALUop 01 PCWrite PCWriteCond ALUopALUop 01 ALUSrcB 00 PCSource 01 ALUop ALUSrcB PCSource54
お絵かきスペース
3.実行、メモリアドレスの計算または分岐の完了ステップ
9/10
ジ ンプの場合 ジャンプの場合 ミニクイズ13:このステップで活性化されるモジュールと必要な制御 線を示せ IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]56
3.実行、メモリアドレスの計算または分岐の完了ステップ
9/10
ジ ンプの場合 予備 ジャンプの場合 ミニクイズ13:このステップで活性化されるモジュールと必要な制御 線を示せ IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]57
3.実行、メモリアドレスの計算または分岐の完了ステップ
10/10
ズ プ 線 値 全 答 ジャンプの場合 C C[31 28] || ( [2 0] 2) ミニクイズ14:このステップで、必要な制御線の値を全て答えよ。 ジャンプの場合 RegDst RegDst PC=PC[31-28] || (IR[25-0]<<2); RegWrite 0 ALUSrcA MemRead 0 RegWrite ALUSrcA MemRead 0 MemWrite 0 MemtoReg MemWrite MemtoRegg IorD IRWrite 0 g IorD IRWrite PCWrite 1 PCWriteCond ALUop PCWrite PCWriteCond ALUop ALUop ALUSrcB PCSource 10 ALUop ALUSrcB PCSource58
お絵かきスペース
4.メモリアクセス、またはR形式命令完了ステップ1/6
R形式命令の場合 ミニクイズ19:このステップで活性化されるモジュールと必要な制御線を示せ R形式命令の場合 IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]60
4.メモリアクセス、またはR形式命令完了ステップ1/6
R形式命令の場合 予備 ミニクイズ19:このステップで活性化されるモジュールと必要な制御線を示せ R形式命令の場合 IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]61
4.メモリアクセス、またはR形式命令完了ステップ2/6
ズ プ 線 値 全 答 RegDst 1 レジスタ[IR[15-11]]=ALUOut; ミニクイズ20:このステップで、必要な制御線の値を全て答えよ。 R形式命令の場合 RegDst RegWrite 1 ALUSrcA MemRead 0 レジスタ[IR[15 11]] ALUOut; RegWrite ALUSrcA MemRead 0 MemWrite 0 MemtoReg 0 MemWrite MemtoRegg 0 IorD IRWrite 0 g IorD IRWrite PCWrite 0 PCWriteCond 0 ALUop PCWrite PCWriteCond ALUop ALUop ALUSrcB PCSource ALUop ALUSrcB PCSource62
お絵かきスペース
4.メモリアクセス、またはR形式命令完了ステップ3/6
メモリ参照(ロ ド)の場合 ミニクイズ15:このステップで活性化されるモジュールと必要な制御線を示せ メモリ参照(ロード)の場合 IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]64
4.メモリアクセス、またはR形式命令完了ステップ3/6
メモリ参照(ロ ド)の場合 予備 ミニクイズ15:このステップで活性化されるモジュールと必要な制御線を示せ メモリ参照(ロード)の場合 IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]65
4.メモリアクセス、またはR形式命令完了ステップ4/6
ズ プ 線 値 全 答 RegDst ミニクイズ16:このステップで、必要な制御線の値を全て答えよ。 メモリ参照(ロード)の場合 RegDst RegWrite 0 ALUSrcA MemRead 1 MDR = メモリ[ALUOut]; RegWrite ALUSrcA MemRead 1 MemWrite 0 MemtoReg MemWrite MemtoRegg IorD 1 IRWrite 0Point: MDRは書き込み制御線なし
g IorD IRWrite PCWrite 0 PCWriteCond 0 ALUopPoint: MDRは書き込み制御線なし
PCWrite PCWriteCond ALUop ALUop ALUSrcB PCSource ALUop ALUSrcB PCSource66
お絵かきスペース
4.メモリアクセス、またはR形式命令完了ステップ5/6
メモリ参照(ストア)の場合 ミニクイズ17:このステップで活性化されるモジュールと必要な制御線を示せ メモリ参照(ストア)の場合 IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]68
4.メモリアクセス、またはR形式命令完了ステップ5/6
メモリ参照(ストア)の場合 予備 ミニクイズ17:このステップで活性化されるモジュールと必要な制御線を示せ メモリ参照(ストア)の場合 IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]69
4.メモリアクセス、またはR形式命令完了ステップ6/6
ズ プ 線 値 全 答 RegDst メモリ[ALUOut]=B; ミニクイズ18:このステップで、必要な制御線の値を全て答えよ。 メモリ参照(ストア)の場合 RegDst RegWrite 0 ALUSrcA MemRead 0 メモリ[ALUOut]=B; RegWrite ALUSrcA MemRead 0 MemWrite 1 MemtoReg 自己確認ポイント: ちなみに、レジスタB の値はここまでの各ステップでどのような 値になるか分かっていますか? MemWrite MemtoRegg IorD 1 IRWrite 0 *書き込み制御線を持たないレジスタは 各ステップの最後=次のステップの最初で 更新されます。 g IorD IRWrite PCWrite 0 PCWriteCond 0 ALUop PCWrite PCWriteCond ALUop ALUop ALUSrcB PCSource ALUop ALUSrcB PCSource70
お絵かきスペース
ズ プ 性 される ジ 必 な制御線を
5.メモリ読出し完了ステップ1/2
ミニクイズ21:このステップで活性化されるモジュールと必要な制御線を示せ IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]72
ズ プ 性 される ジ 必 な制御線を
5.メモリ読出し完了ステップ1/2
予備 ミニクイズ21:このステップで活性化されるモジュールと必要な制御線を示せ IorD MemRead MemWrite RegWriteALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond M U 0 0 RegDst IRWrite M U 命令[31 26] 2ビット 左シフト 26 28 C [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 デ タ2 M U X M U X 0 0 1 0 0 1 命令 [15 11] X 命令[31-26] 2 ジャンプ先 アドレス[31-0] ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B 命 [ ] レジスタ 書込 データ データ2 X M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] メモリ・ データ レジスタ 符号 拡張 2ビット 左シフト 32 16 ALU 制御 命令 [5-0]73
5.メモリ読出し完了ステップ2/2
ズ プ 線 値 全 答 RegDst 0 ミニクイズ22:このステップで、必要な制御線の値を全て答えよ。 レジスタ[IR[20 16]] MDR (ロ ド) RegDst RegWrite 1 ALUSrcA MemRead 0 レジスタ[IR[20-16]]=MDR; (ロード) RegWrite ALUSrcA MemRead 0 MemWrite 0 MemtoReg 1 MemWrite MemtoRegg 1 IorD IRWrite 0 g IorD IRWrite PCWrite 0 PCWriteCond 0 ALUop PCWrite PCWriteCond ALUop ALUop ALUSrcB PCSource ALUop ALUSrcB PCSource74
お絵かきスペース
What to learn
• 単一クロックサイクルの問題点 • マルチサイクルの概要、考え方、単一クロックサイクルとの違い概要、考 、 違 • マルチサイクルの各サイクルの詳細 1. 命令フェッチ 2 命令デコード+レジスタ・フェッチ 2. 命令デコ ド+レジスタ フェッチ 3. 実行、メモリ・アドレスの計算 or 分岐命令の完了 4. メモリ・アクセス or R形式命令の完了 5 メモリ読み出し完了 5. メモリ読み出し完了 • 制御ユニットの詳細(有限状態機械による方法) *マイクロプログラミングによる方法は用語程度 例外の実現 Next Topic • 例外の実現 教材76
• この内容は教科書にはありません(一つ前の版の教科書にはあります)制御回路の設計
制御信号の真理値表を作成し それから制御回路を
単一サイクルの場合:
制御信号の真理値表を作成し、それから制御回路を
組み合わせ回路として作成する
マルチサイクルの場合:
各ステップ毎にデータパスを変更するので、単純な
各 テッ 毎 デ タ
を変更する
、単純な
組み合わせ回路としては実現できない
今,どのステップにいるかを管理し、
各ステップ毎に制御信号を整理する。
序
路
ク
プ
グ
⇒ 順序回路 or マイクロプログラム
77
一般的な同期式順序回路
順序回路
復習
• 順序回路
– 同じ入力に対して出力が異なる
記憶を持つ回路
過去の入力や計算結果を記憶
– 記憶
を持つ回路、過去の入力や計算結果を記憶
– ループ(サイクル)
を持つ回路
– クロック
のタイミングで記憶を更新
– クロック
のタイミングで記憶を更新
1円
5円
10円
現在の投入金額
S
R
Q
FFがS,Rの値
を取り込む
現在の投入金額
を記憶
クロック
を取り込む
78
clock
お絵かきスペース
順序回路による制御ユニットの構成
組み合わせ 制御論理 データパス制御出力 出力 出力 入力 次ステート 状態レジスタ 命令レジスタの 命令操作コード・ フィールドからの入力 次 フィ ルドからの入力 順序回路による制御ユニット 組み合わせ論理回路と現ステ トを保持するレジスタから構成可能80
組み合わせ論理回路と現ステートを保持するレジスタから構成可能お絵かきスペース
有限状態機械による制御仕様の定義
開始有限状態機械の制御のOverview
順序回路の
数学的モデル
開始有限
機械
御
命令フェッチとデコード及びレジスタのフェッチ メモリアクセス R形式命令 分岐命令 ジャンプ命令 命令 R形式命令 分岐命令 ジャンプ命令 最初のステップは命令タイプに依存しない。 「開始」の矢印は、最初の命令がフェッチされたときの開始ステート82
開始」の矢印は、最初の命令がフ ッチされたときの開始ステ トお絵かきスペース
再掲(復習)
各命令の各ステップでの動作のまとめ
命令タイプ 命令フェッチ 命令デコードとレジスタフェッチ 実行、メモリアドレスの計算または分岐の完了 メモリアクセス、またはR形式命令完了 メモリ読出し完了 再掲(復習) R形式 IR = メモリ[PC];PC=PC+4; A=レジスタ[IR[25-21]]; B=レジスタ[IR[20-16]]; ALUOut = PC+ (符号拡張(IR[15-0] <<2));ALUOut = A 演算子 B; レジスタ[IR[15-11]]=ALUOut;
語のロード Rと同じ Rと同じ ALUOut = A+ 符号拡張(IR[15-0]); MDR = メモリ[ALUOut]; レジスタ[IR[20-16]] =MDR; 語のストア Rと同じ Rと同じ ロードと同じ メモリ[ALUOut]=B; 語のストア Rと同じ Rと同じ ロ ドと同じ メモリ[ALUOut]=B; 分岐 Rと同じ Rと同じ PC=ALUOut; if(A==B) ジャンプ Rと同じ Rと同じ PC=PC[31-28] || (IR[25-0]<<2);
84
各命令に共通な命令フェッチ及びデコード部分
命令デコード/ *全ての制御線が書いているわけではありません。 MemRead ALUS A 0 命令フェッチ 命令デ レジスタのフェッチ 0 ALUSrcA=0 1 IorD=0 IRWrite ALUSrcB=01 ALUOP=00 PCW it 開始 0 ALUSrcA=0 ALUSrcB=11 ALUOP=00 PCWrite PCSource=00 メモリ参照FSM R形式FSM 分岐FSM ジャンプFSM85
これらの制御線の値は試験で聞かれるかも(ちなみにスライドのどこを見ればわかる?)メモリ参照FSMとR形式FSM
ステート1から 2 ステート1から メモリアドレスの計算 6 ALUSrcA=1 ALUSrcB=00 ALUOP 10 実行 2 ALUSrcA=1 ALUSrcB=10 ALUOP=00 ALUOP=10 R形式命令の完了 3 5 メモリ アクセス メモリ アクセス (Op=‘SW’) RegDst=1 RegWrite MemtoReg=0 7 MemReadIorD=1 MemWriteIorD=1
ステ ト0 RegWrite 4 メモリ読出し完了 ステップ R形式FSM ステート0へ RegWrite MemtoReg=1 RegDst=0 ステート0へ メモリ参照FSM
86
R形式FSM メモリ参照FSMお絵かきスペース
分岐FSMとジャンプFSM
ステ ト1から ステ ト1から ステート1から 9 ジャンプの完了 ステート1から 8 分岐完了 PCWrite PCSource=10 9 ALUSrcA=1 ALUSrcB=00 ALUOp=01 PCWriteCond PCSource=01 8 分岐完了 ステート0へ ステート0へ ステ ト0へ ステ ト0へ ジャンプFSM 分岐FSM88
データパスを制御する有限状態機械の全体図
MemRead ALUSrcA=0 IorD=0 IRWrite ALUSrcB=01 ALUOP=00 命令フェッチ 命令デコード/ レジスタのフェッチ 開始 0 1 ALUSrcA=0 ALUSrcB=11 ALUOP=00 ALUOP 00 PCWrite PCSource=00 2 ALUSrcA=1 ALUSrcB=10 ALUOP=00 メモリアドレスの計算 6 ALUSrcA=1 ALUSrcB=00 ALUOP=10 実行 PCWrite PCSource=10 9 ジャンプの完了 ALUSrcA=1 ALUSrcB=00 ALUOp=01 PCWriteCond 8 分岐完了 ALUOP 00 3 5 メモリ アクセス メモリ アクセス (Op=‘SW’) 7 R形式命令の完了 PCWriteCond PCSource=01 MemReadIorD=1 MemWriteIorD=1
RegDst=1 RegWrite MemtoReg=0 RegWrite MemtoReg=1 R D t 0 4 メモリ読出し完了 ステップ
89
RegDst=0お絵かきスペース
別の実現方法:マイクロプログラミング
用語と概要は覚えようマイクロ命令(マイクロコード)
実行すべき命令のあるステートでのデータパスで実行するのに
用語と概要は覚えよう 詳細はスキップ実行す き命令のあるステ トでのデ タパスで実行するのに
必要な一群の制御信号を生成する
具体的には、
制御信号を サ トす か
•どの制御信号をアサートするか
•次にどのマイクロ命令を実行するか
などを指定
などを指定
マイクロプログラミング
マシン命令の制御をマイクロ命令で記述したプログラム
通常ROMなどに格納される
複雑な制御も容易に実現可能
複雑な制御も容易に実現可能
91
イクロコ ド
マイクロコード制御ユニットの構成
発展 マイクロコード 記憶 出力 データパス制御出力 マイクロコード記憶には PLAまたはROMが用いられる 出力 入力 入力 順序制御 1 マイクロプログラム・カウンタ アドレス選択論理 インクルメンタ アドレス選択論理 命令操作コード・フィールド スライド80と対比して、 概要のみ理解しよう 図 5 7 492
命令操 からの入力 概要のみ理解しよう 図 5.7.4お絵かきスペース
What to learn
• 単一クロックサイクルの問題点 • マルチサイクルの概要、考え方、単一クロックサイクルとの違い概要、考 、 違 • マルチサイクルの各サイクルの詳細 1. 命令フェッチ 2 命令デコード+レジスタ・フェッチ 2. 命令デコ ド+レジスタ フェッチ 3. 実行、メモリ・アドレスの計算 or 分岐命令の完了 4. メモリ・アクセス or R形式命令の完了 5 メモリ読み出し完了 5. メモリ読み出し完了 • 制御ユニットの詳細(有限状態機械による方法) *マイクロプログラミングによる方法は用語程度 例外の実現 • 例外の実現 Next Topic 教材94
• この内容は教科書にはありません(一つ前の版の教科書にはあります)例外
教科書P356
例外(割り込み)
プロセッサの中で生じる予期せぬ出来事
算術オーバーフロー、入出力装置からのリクエストなど割り込み
例外
例外と割り込みの定義は状況によるが、教科書では
例外を考える
•算術オーバーフロー
以下の2つの例外を考える
•未定義命令のフェッチ
オ バ フロ とは何か?(覚えてますか?)
オーバーフローとは何か?(覚えてますか?)
- 演算結果が表現可能な値の上限を超える こと
c f アンダーフロー:表現可能な最小の値を下回る こと
95
c.f. アンダ フロ :表現可能な最小の値を下回る こと
お絵かきスペース
例外が起こった時の処理
•
例外プログラムカウンタ(EPC)<= (PC ー 4)
•
PC <= 8000 0180
•
Cause <= 0, if 未定義命令
Cause <= 1, if算術オーバーフロー
例外は、算術オーバーフロー/未定義命令で発生 どこで何が起きたを知る必要がある ↓↓ 例外プログラムカウンタ(EPC) : 問題が起きた命令アドレスを退避する。 Causeレジスタ : 例外発生の理由を記録するレジスタ (未定義命令なら0 算術オ バ フロ なら1) (未定義命令なら0,算術オーバーフローなら1) OSはCauseレジスタを見て例外要因を知り、それに応じた処理を行う⇒ データパスに、例外用の制御信号を導入
97
デ タパスに、例外用の制御信号を導入
例外処理を加えたマルチサイクル方式における全データバス
CauseWriteIntCause IorD MemRead MemWrite RegWrite R D t IRW i ALUSrcA MemtoReg ALUSrcB ALUOp 制御 PC PCSource PCWrite PCWriteCond EPCWrite CauseWrite M U M 0 0 RegDst IRWrite M U 命令[31-26] 2ビット 左シフト 26 28 [31-28] 0 1 ジャンプ先 命令[25-0] PC メモリ アドレス データ 読出 レジスタ1 A ALU ALU ゼロ 判定 U X M B 命令[25-21] 命令[20-16] 命令[15-0] 読出 レジスタ2 書込 レジスタ 書込 読出 データ1 読出 データ2 M U X M U X 0 0 1 0 1 命令 [15-11] U X 命令[31 26] 2 アドレス[31-0] 3 8000 0180 ALU 書込み データ Out 命令 レジスタ ALU 結果 M U X B レジスタ 書込 データ デ タ2 M U X 符号 2ビット 1 0 1 1 2 3 4 [15-11] 命令[15-0] EPC メモリ・ データ レジスタ 拡張 32 左シフト 16 ALU 制御 命令 [5-0] Cause M U X 0 1 0 198
お絵かきスペース
例外処理のために追加された部分はどこか?