計算機構成論 (chap 3) @c401(chap. 3) @c401ger/lectures/c-comparch2012/...chap....
TRANSCRIPT
計算機構成論 (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]@cs.ritsumei.ac.jp
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.5ps
4
性能比=600/447.5=1.34
エッジトリガクロック方式 復習
エッジトリガクロック方式 : クロック信号のエッジのみで状態更新を行う方式同一クロックサイクルで、読み出し・書込みを両方行える
状態更新
l k
(立ち上がり動作で、状態更新を行うとした場合)
clock
状態論理要素
組み合わせ論理回路
状態論理要素
書き込み 読み出し 組み合わせ論理回路
クロックの立ち上がりで更新(立下りのシステムもあり) (それ以外では値を更新しない)
5
クロックの立ち上がりで更新(立下りのシステムもあり) (それ以外では値を更新しない)
単一(クロック)サイクルの問題点
命令によ て 必要な処理時間が大幅に異なる•命令によって、必要な処理時間が大幅に異なる。(浮動小数点演算などの複雑な命令はもっと時間がかかる。)•かといって 可変長のクロックは現実的には設計が非常に困難かといって、可変長のクロックは現実的には設計が非常に困難
その解決として、マルチサイクルを用いた実現があります その詳細をこれから勉強していきますあります。その詳細をこれから勉強していきます。
7
What to learn • 単一クロックサイクルの問題点
• マルチサイクルの概要 考え方 単一クロックサイクルとの違い• マルチサイクルの概要、考え方、単一クロックサイクルとの違い
• マルチサイクルの各サイクルの詳細
1. 命令フェッチ Next Topic2. 命令デコード+レジスタ・フェッチ
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 Ideap
各サイクルで、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と同じ if(A==B) PC=ALUOut;
ジャンプ Rと同じ Rと同じ PC=PC[31-28] || (IR[25-0]<<2);
前ペ ジの書きなおし す*前ページの書きなおしです!前のページを見ながら、自分で表を作れますよね?また、それぞれの動作の意味も確認してください。(自己確認クイズ 空欄をうめよ)
14
(自己確認クイズ:空欄をうめよ)
図4.24 単一クロックサイクルのデータパス命令
復習
加算
2ビット左にシフト
命令[25-0]
26 28 PC+4[31-28]
ジャンプ先アドレス[31-0 ]
42ビット
加算
MUX
1
0制御
RegDst
BranchMemReadMemtoReg命令
[31-26]
MUX
1
0Jump
読出 読出
命令メモリ
命令アドレス
PC
2ビット左にシフト
命令[25-21]
制御MemWriteALUOp
g
ALUSrcRegWrite
AND
[31-26]
レジスタ
reg1
ALU ALU結果
読出reg2書込reg
reg1
読出reg2
ALU操作
ゼロ判定
デ
読出データ
アドレス MUM
U
メモリ
命令[31-0]
01
命令[20-16]
MU0
書込データ 4
ALU操作 データメモリ
書込データ
UXU
X1
0命令[15-11]
命令
X1
符号拡張
3216ALU制御
命令[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
MUX命令
[25-21] 読出
MUX
0
0
PC
メモリ データ
スタ A
ALU命令レジスタ ALU
ゼロ判定
B
[25 21]
命令[20-16]
命令[15-0]
読出レジスタ2
書込レジスタ
書込
読出データ1
読出データ2
MUX
X
01
0
1
命令[15-11]
書込みデータ
Outレジスタ ALU結果M
UX
B
レジスタ
書込データ
MUX
1
0
12
3
4
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト
1
3216
いくつかの機能ユニットが異なる目的のために共有される⇒ 既存のマルチプレクサの拡張・追加
19
例) ALU入力部分に、マルチプレクサを用意し,異なる目的に対応
基本的命令を扱うMIPS用のマルチサイクルデータパス
追加されたレジスタ
1. 命令レジスタ (IR: instruction register)フェッチした命令を保存
2. メモリ・データレジスタ(MDR: memory data register)
メモリから読み出したデータを保存
3. Aレジスタ、Bレジスタ
レジスタファイルから読み出したレジスタ・オペランドを保存
4. ALUOutレジスタ
ALUからの出力を保存ALUからの出力を保存
•IR以外は、次のクロックサイクルまで保存したらいい•IRは複数サイクル保存しないといけないので、これのみ
*全ての制御線の勉強が終わったあとで確認すること
20
書き込み制御線を持つ終わったあとで確認すること
マルチサイクル方式の全データバスと必要な制御線
IorDMemReadMemWrite
RegWriteRegDstIRWrite
ALUSrcAMemtoReg
ALUSrcBALUOp
制御PC[31-28]
PCSourcePCWritePCWriteCond
アドレス 読出
MUM0 0
gW te
MUX命令[31-26]
2ビット左シフト
26 28
[31 28]
0
1
2ジャンプ先アドレス[31 0]
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUOutALU
ゼロ判定
X
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込デ
読出データ1
読出データ2
MUX
MUX
0
1
1
01
1
命令[15-11]
X2アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
メモリ・
結果UXレジスタ
データ
MUX
符号拡張
2ビット左シフト
10
1
12
3
4
32
命令[15-0]
メモリ・データ
レジスタ
拡張 左シフト3216ALU制御
命令[5-0]
22
マルチサイクル方式の制御部分
PCSourcePCWritePCWriteCond
ゼロ判定
IorDMemReadMemWrite ALUSrcA
ALUSrcBALUOp
制御
PCWrite
MemWriteRegWriteRegDst
IRWrite
ALUSrcA
MemtoReg
制御
IRWrite
24
マルチ・サイクル:各制御信号の働き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 Topic2. 命令デコード+レジスタ・フェッチ
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:このステップで活性化されるモジュールと必要な制御線を示せ
IorDMemReadMemWrite
RegWriteRegDstIRWrite
ALUSrcAMemtoReg
ALUSrcBALUOp
制御PC[31-28]
PCSourcePCWritePCWriteCond
アドレス 読出
MUM0 0
gW te
MUX命令[31-26]
2ビット左シフト
26 28
[31 28]
0
1
2ジャンプ先アドレス[31-0]
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUOutALU
ゼロ判定
X
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込デ
読出データ1
読出データ2
MUX
MUX
0
1
1
01
1
命令[15-11]
X2アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
メモリ・
結果UXレジスタ
データ
MUX
符号拡張
2ビット左シフト
10
1
12
3
4
32
命令[15-0]
メモリ・データ
レジスタ
拡張 左シフト3216ALU制御
命令[5-0]
32
1.命令フェッチステップ 1/2ズ プ 性 される ジ 必 な制御線を
予備
ミニクイズ1:このステップで活性化されるモジュールと必要な制御線を示せ
IorDMemReadMemWrite
RegWriteRegDstIRWrite
ALUSrcAMemtoReg
ALUSrcBALUOp
制御PC[31-28]
PCSourcePCWritePCWriteCond
アドレス 読出
MUM0 0
gW te
MUX命令[31-26]
2ビット左シフト
26 28
[31 28]
0
1
2ジャンプ先アドレス[31-0]
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUOutALU
ゼロ判定
X
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込デ
読出データ1
読出データ2
MUX
MUX
0
1
1
01
1
命令[15-11]
X2アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
メモリ・
結果UXレジスタ
データ
MUX
符号拡張
2ビット左シフト
10
1
12
3
4
32
命令[15-0]
メモリ・データ
レジスタ
拡張 左シフト3216ALU制御
命令[5-0]
33
ズ プ 線 値 全 答
1.命令フェッチステップ2/2
RegDstIR = メモリ[PC]; PC=PC+4; (命令フェッチとPCの計算)
ミニクイズ2:このステップで、必要な制御線の値を全て答えよ。
RegDst
RegWrite 0ALUSrcA 0
MemRead 1
[ ]; ; (RegWrite
ALUSrcA
MemRead 1
MemWrite 0
MemtoReg
MemWrite
MemtoRegg
IorD 0
IRWrite 1Point: 書き込んでほしくないところは
g
IorD
IRWrite
PCWrite 1
PCWriteCond
ALUop 00
Point: 書き込んでほしくないところは必ず書き込み制御線を0にする
PCWrite
PCWriteCond
ALUopALUop 00
ALUSrcB 01
PCSource 00
ALUop
ALUSrcB
PCSource
34
2.命令デコードとレジスタフェッチのステップ1/2ズ プ 性 される ジ 必 な制御線をミニクイズ3:このステップで活性化されるモジュールと必要な制御線を示せ
IorDMemReadMemWrite
RegWriteRegDstIRWrite
ALUSrcAMemtoReg
ALUSrcBALUOp
制御PC[31-28]
PCSourcePCWritePCWriteCond
アドレス 読出
MUM0 0
gW te
MUX命令[31-26]
2ビット左シフト
26 28
[31 28]
0
1
2ジャンプ先アドレス[31-0]
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUOutALU
ゼロ判定
X
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込デ
読出データ1
読出データ2
MUX
MUX
0
1
1
01
1
命令[15-11]
X2アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
メモリ・
結果UXレジスタ
データ
MUX
符号拡張
2ビット左シフト
10
1
12
3
4
32
命令[15-0]
メモリ・データ
レジスタ
拡張 左シフト3216ALU制御
命令[5-0]
36
2.命令デコードとレジスタフェッチのステップ1/2ズ プ 性 される ジ 必 な制御線を
予備
ミニクイズ3:このステップで活性化されるモジュールと必要な制御線を示せ
IorDMemReadMemWrite
RegWriteRegDstIRWrite
ALUSrcAMemtoReg
ALUSrcBALUOp
制御PC[31-28]
PCSourcePCWritePCWriteCond
アドレス 読出
MUM0 0
gW te
MUX命令[31-26]
2ビット左シフト
26 28
[31 28]
0
1
2ジャンプ先アドレス[31-0]
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUOutALU
ゼロ判定
X
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込デ
読出データ1
読出データ2
MUX
MUX
0
1
1
01
1
命令[15-11]
X2アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
メモリ・
結果UXレジスタ
データ
MUX
符号拡張
2ビット左シフト
10
1
12
3
4
32
命令[15-0]
メモリ・データ
レジスタ
拡張 左シフト3216ALU制御
命令[5-0]
37
2.命令デコードとレジスタフェッチのステップ2/2ズ プ 線 値 全 答
A=レジスタ[IR[25-21]]; B=レジスタ[IR[20-16]];
ミニクイズ4:このステップで、必要な制御線の値を全て答えよ。
RegDstRegDstレジスタ[ [ 5 ]]; レジスタ[ [ 0 6]];
(rs,rtフィールドの読込み)
ALUOut = PC+(符号拡張(IR[15-0] <<2));
RegWrite 0ALUSrcA 0
MemRead 0
RegWrite
ALUSrcA
MemRead 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
ALUopALUop 00
ALUSrcB 11
PCSource
ALUop
ALUSrcB
PCSource
38
3.実行、メモリアドレスの計算または分岐の完了ステップ1/10R形式命令 場合R形式命令の場合ミニクイズ7:このステップで活性化されるモジュールと必要な制御
線を示せ
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
40
3.実行、メモリアドレスの計算または分岐の完了ステップ1/10R形式命令 場合
予備
R形式命令の場合ミニクイズ7:このステップで活性化されるモジュールと必要な制御線を示せ
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
41
3.実行、メモリアドレスの計算または分岐の完了ステップ2/10ズ プ 線 値 全 答 R形式命令 場合
RegDst ALUOut = A 演算子 B;
ミニクイズ8:このステップで、必要な制御線の値を全て答えよ。 R形式命令の場合
RegDst
RegWrite 0ALUSrcA 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
ALUopALUop 10
ALUSrcB 00
PCSource
ALUop
ALUSrcB
PCSource
42
3.実行、メモリアドレスの計算または分岐の完了ステップ3/10ズ プ 性 される ジ 必 な制御 メモリ参照の場合ミニクイズ5:このステップで活性化されるモジュールと必要な制御
線を示せ
IorDMemReadMemWrite
RegWriteRegDstIRWrite
ALUSrcAMemtoReg
ALUSrcBALUOp
制御PC[31 28]
PCSourcePCWritePCWriteCond
MUM0 0
RegDstIRWrite
MUX命令[31-26]
2ビット左シフト
26 28
[31-28]
0
1
2ジャンプ先アドレス[31 0]
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUOALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出データ2
MUX
MUX
0
1
1
01
1
命令[15-11]
X[ ] 2アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
メモリ
ALU結果
MUX
Bレジスタ
書込データ
MUX
符号 2ビット左シ ト
10
1
12
3
4
命令[15-0]
メモリ・データ
レジスタ
拡張 左シフト3216ALU制御
命令[5-0]
44
3.実行、メモリアドレスの計算または分岐の完了ステップ3/10ズ プ 性 される ジ 必 な制御
予備
メモリ参照の場合ミニクイズ5:このステップで活性化されるモジュールと必要な制御線を示せ
IorDMemReadMemWrite
RegWriteRegDstIRWrite
ALUSrcAMemtoReg
ALUSrcBALUOp
制御PC[31 28]
PCSourcePCWritePCWriteCond
MUM0 0
RegDstIRWrite
MUX命令[31-26]
2ビット左シフト
26 28
[31-28]
0
1
2ジャンプ先アドレス[31 0]
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUOALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出データ2
MUX
MUX
0
1
1
01
1
命令[15-11]
X[ ] 2アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
メモリ
ALU結果
MUX
Bレジスタ
書込データ
MUX
符号 2ビット左シ ト
10
1
12
3
4
命令[15-0]
メモリ・データ
レジスタ
拡張 左シフト3216ALU制御
命令[5-0]
45
3.実行、メモリアドレスの計算または分岐の完了ステップ4/10ズ プ 線 値 全 答
ALUOut = A+符号拡張(IR[15-0]);
ミニクイズ6:このステップで、必要な制御線の値を全て答えよ。メモリ参照の場合
RegDstRegDstALUOut A 符号拡張(IR[15 0]);
RegWrite 0ALUSrcA 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
ALUopALUop 00
ALUSrcB 10
PCSource
ALUop
ALUSrcB
PCSource
46
3.実行、メモリアドレスの計算または分岐の完了ステップ5/10 分岐の場合
成 時ミニクイズ9:このステップで活性化されるモジュールと必要な制御線を示せ 成立の時
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
48
3.実行、メモリアドレスの計算または分岐の完了ステップ5/10 分岐の場合
成 時
予備
ミニクイズ9:このステップで活性化されるモジュールと必要な制御線を示せ 成立の時
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
49
3.実行、メモリアドレスの計算または分岐の完了ステップ6/10ズ プ 線 値 全 答 分岐 場合
if(A==B) PC=ALUOut;
ミニクイズ10:このステップで、必要な制御線の値を全て答えよ。 分岐の場合
RegDst 成立の時RegDstif(A B) PC ALUOut;
RegWrite 0ALUSrcA 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
PCSource
50
3.実行、メモリアドレスの計算または分岐の完了ステップ7/10 分岐の場合
成 時ミニクイズ11:このステップで活性化されるモジュールと必要な制御線を示せ 不成立の時
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
52
3.実行、メモリアドレスの計算または分岐の完了ステップ7/10 分岐の場合
成 時
予備
ミニクイズ11:このステップで活性化されるモジュールと必要な制御線を示せ 不成立の時
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
53
3.実行、メモリアドレスの計算または分岐の完了ステップ8/10ズ プ 線 値 全 答 分岐 場合
if(A==B) PC=ALUOut;
ミニクイズ12:このステップで、必要な制御線の値を全て答えよ。 分岐の場合
RegDst 不成立の時RegDstif(A B) PC ALUOut;
RegWrite 0ALUSrcA 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
PCSource
54
3.実行、メモリアドレスの計算または分岐の完了ステップ9/10ジ ンプの場合ジャンプの場合ミニクイズ13:このステップで活性化されるモジュールと必要な制御
線を示せ
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
56
3.実行、メモリアドレスの計算または分岐の完了ステップ9/10ジ ンプの場合
予備
ジャンプの場合ミニクイズ13:このステップで活性化されるモジュールと必要な制御線を示せ
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
57
3.実行、メモリアドレスの計算または分岐の完了ステップ10/10ズ プ 線 値 全 答 ジャンプの場合
C C[31 28] || ( [2 0] 2)
ミニクイズ14:このステップで、必要な制御線の値を全て答えよ。 ジャンプの場合
RegDstRegDst
PC=PC[31-28] || (IR[25-0]<<2); RegWrite 0ALUSrcA
MemRead 0
RegWrite
ALUSrcA
MemRead 0
MemWrite 0
MemtoReg
MemWrite
MemtoRegg
IorD
IRWrite 0
g
IorD
IRWrite
PCWrite 1
PCWriteCond
ALUop
PCWrite
PCWriteCond
ALUopALUop
ALUSrcB
PCSource 10
ALUop
ALUSrcB
PCSource
58
4.メモリアクセス、またはR形式命令完了ステップ1/6R形式命令の場合
ミニクイズ19:このステップで活性化されるモジュールと必要な制御線を示せ
R形式命令の場合
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
60
4.メモリアクセス、またはR形式命令完了ステップ1/6R形式命令の場合
予備
ミニクイズ19:このステップで活性化されるモジュールと必要な制御線を示せ
R形式命令の場合
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
61
4.メモリアクセス、またはR形式命令完了ステップ2/6ズ プ 線 値 全 答
RegDst 1レジスタ[IR[15-11]]=ALUOut;
ミニクイズ20:このステップで、必要な制御線の値を全て答えよ。 R形式命令の場合
RegDst
RegWrite 1ALUSrcA
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
ALUopALUop
ALUSrcB
PCSource
ALUop
ALUSrcB
PCSource
62
4.メモリアクセス、またはR形式命令完了ステップ3/6メモリ参照(ロ ド)の場合
ミニクイズ15:このステップで活性化されるモジュールと必要な制御線を示せ
メモリ参照(ロード)の場合
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
64
4.メモリアクセス、またはR形式命令完了ステップ3/6メモリ参照(ロ ド)の場合
予備
ミニクイズ15:このステップで活性化されるモジュールと必要な制御線を示せ
メモリ参照(ロード)の場合
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
65
4.メモリアクセス、またはR形式命令完了ステップ4/6ズ プ 線 値 全 答
RegDst
ミニクイズ16:このステップで、必要な制御線の値を全て答えよ。
メモリ参照(ロード)の場合RegDst
RegWrite 0ALUSrcA
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
ALUop
Point: MDRは書き込み制御線なしPCWrite
PCWriteCond
ALUopALUop
ALUSrcB
PCSource
ALUop
ALUSrcB
PCSource
66
4.メモリアクセス、またはR形式命令完了ステップ5/6メモリ参照(ストア)の場合
ミニクイズ17:このステップで活性化されるモジュールと必要な制御線を示せ
メモリ参照(ストア)の場合
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
68
4.メモリアクセス、またはR形式命令完了ステップ5/6メモリ参照(ストア)の場合
予備
ミニクイズ17:このステップで活性化されるモジュールと必要な制御線を示せ
メモリ参照(ストア)の場合
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
69
4.メモリアクセス、またはR形式命令完了ステップ6/6ズ プ 線 値 全 答
RegDst
メモリ[ALUOut]=B;
ミニクイズ18:このステップで、必要な制御線の値を全て答えよ。
メモリ参照(ストア)の場合RegDst
RegWrite 0ALUSrcA
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
ALUopALUop
ALUSrcB
PCSource
ALUop
ALUSrcB
PCSource
70
ズ プ 性 される ジ 必 な制御線を
5.メモリ読出し完了ステップ1/2ミニクイズ21:このステップで活性化されるモジュールと必要な制御線を示せ
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
72
ズ プ 性 される ジ 必 な制御線を
5.メモリ読出し完了ステップ1/2 予備
ミニクイズ21:このステップで活性化されるモジュールと必要な制御線を示せ
IorDMemReadMemWrite
RegWriteALUSrcA
MemtoReg
ALUSrcBALUOp
制御PC
PCSourcePCWritePCWriteCond
MU0 0
RegDstIRWrite
MU
命令[31 26]
2ビット左シフト
26 28
C[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出デ タ2
MUX
MUX
0
0
1
0
0
1
命令[15 11]
X命令[31-26] 2ジャンプ先アドレス[31-0]
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
B命 [ ]
レジスタ
書込データ
データ2X
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]
メモリ・データ
レジスタ
符号拡張
2ビット左シフト3216
ALU制御
命令[5-0]
73
5.メモリ読出し完了ステップ2/2ズ プ 線 値 全 答
RegDst 0
ミニクイズ22:このステップで、必要な制御線の値を全て答えよ。
レジスタ[IR[20 16]] MDR (ロ ド)RegDst
RegWrite 1ALUSrcA
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
ALUopALUop
ALUSrcB
PCSource
ALUop
ALUSrcB
PCSource
74
What to learn • 単一クロックサイクルの問題点• マルチサイクルの概要、考え方、単一クロックサイクルとの違い概要、考 、 違• マルチサイクルの各サイクルの詳細
1. 命令フェッチ2 命令デコード+レジスタ・フェッチ2. 命令デコ ド+レジスタ フェッチ3. 実行、メモリ・アドレスの計算 or 分岐命令の完了4. メモリ・アクセス or R形式命令の完了5 メモリ読み出し完了5. メモリ読み出し完了
• 制御ユニットの詳細(有限状態機械による方法)*マイクロプログラミングによる方法は用語程度
例外の実現
Next Topic
• 例外の実現
教材
76• この内容は教科書にはありません(一つ前の版の教科書にはあります)
制御回路の設計
制御信号の真理値表を作成し それから制御回路を
単一サイクルの場合:制御信号の真理値表を作成し、それから制御回路を
組み合わせ回路として作成する
マルチサイクルの場合:各ステップ毎にデータパスを変更するので、単純な各 テッ 毎 デ タ を変更する 、単純な組み合わせ回路としては実現できない
今,どのステップにいるかを管理し、各ステップ毎に制御信号を整理する。
序 路 ク プ グ⇒ 順序回路 or マイクロプログラム
77
一般的な同期式順序回路順序回路
復習• 順序回路
– 同じ入力に対して出力が異なる
記憶を持つ回路 過去の入力や計算結果を記憶– 記憶を持つ回路、過去の入力や計算結果を記憶
– ループ(サイクル)を持つ回路
– クロックのタイミングで記憶を更新– クロックのタイミングで記憶を更新
1円5円
10円
現在の投入金額
S RQ FFがS,Rの値
を取り込む現在の投入金額を記憶
クロック
を取り込む
78clock
順序回路による制御ユニットの構成
組み合わせ制御論理 データパス制御出力
出力出力
入力
次ステート
状態レジスタ命令レジスタの命令操作コード・
フィールドからの入力
次
フィ ルドからの入力
順序回路による制御ユニット組み合わせ論理回路と現ステ トを保持するレジスタから構成可能
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と同じ if(A==B) PC=ALUOut;
ジャンプ Rと同じ Rと同じ PC=PC[31-28] || (IR[25-0]<<2);
84
各命令に共通な命令フェッチ及びデコード部分
命令デコード/
*全ての制御線が書いているわけではありません。
MemReadALUS A 0
命令フェッチ命令デレジスタのフェッチ
0 1 ALUSrcA=0IorD=0IRWrite
ALUSrcB=01ALUOP=00
PCW it
開始
0ALUSrcA=0ALUSrcB=11ALUOP=00
PCWritePCSource=00
メモリ参照FSM R形式FSM 分岐FSM ジャンプFSM
85これらの制御線の値は試験で聞かれるかも(ちなみにスライドのどこを見ればわかる?)
メモリ参照FSMとR形式FSM
ステート1から
2
ステート1から
メモリアドレスの計算
6ALUSrcA=1ALUSrcB=00ALUOP 10
実行
2ALUSrcA=1ALUSrcB=10ALUOP=00
ALUOP=10
R形式命令の完了35
メモリアクセス
メモリアクセス
(Op=‘SW’)
RegDst=1RegWrite
MemtoReg=0
7MemReadIorD=1
MemWriteIorD=1
ステ ト0RegWrite
4メモリ読出し完了ステップ
R形式FSM
ステート0へRegWriteMemtoReg=1
RegDst=0 ステート0へ
メモリ参照FSM
86
R形式FSMメモリ参照FSM
分岐FSMとジャンプFSM
ステ ト1からステ ト1から ステート1から
9ジャンプの完了
ステート1から
8 分岐完了
PCWritePCSource=10
9ALUSrcA=1ALUSrcB=00ALUOp=01
PCWriteCondPCSource=01
8 分岐完了
ステート0へステート0へ ステ ト0へステ ト0へ
ジャンプFSM分岐FSM
88
データパスを制御する有限状態機械の全体図
MemReadALUSrcA=0
IorD=0IRWrite
ALUSrcB=01ALUOP=00
命令フェッチ 命令デコード/レジスタのフェッチ
開始0 1
ALUSrcA=0ALUSrcB=11ALUOP=00
ALUOP 00PCWrite
PCSource=00
2ALUSrcA=1ALUSrcB=10ALUOP=00
メモリアドレスの計算
6ALUSrcA=1ALUSrcB=00ALUOP=10
実行
PCWritePCSource=10
9ジャンプの完了
ALUSrcA=1ALUSrcB=00ALUOp=01
PCWriteCond
8 分岐完了
ALUOP 00
35メモリ
アクセス
メモリアクセス
(Op=‘SW’)
7R形式命令の完了
PCWriteCondPCSource=01
MemReadIorD=1
MemWriteIorD=1
RegDst=1RegWrite
MemtoReg=0
RegWriteMemtoReg=1
R D t 0
4メモリ読出し完了ステップ
89
RegDst=0
別の実現方法:マイクロプログラミング用語と概要は覚えよう
マイクロ命令(マイクロコード)実行すべき命令のあるステートでのデータパスで実行するのに
用語と概要は覚えよう詳細はスキップ
実行す き命令のあるステ トでのデ タパスで実行するのに必要な一群の制御信号を生成する具体的には、
制御信号を サ トす か•どの制御信号をアサートするか•次にどのマイクロ命令を実行するか
などを指定などを指定
マイクロプログラミングマシン命令の制御をマイクロ命令で記述したプログラム通常ROMなどに格納される複雑な制御も容易に実現可能複雑な制御も容易に実現可能
91
イクロコ ド
マイクロコード制御ユニットの構成 発展
マイクロコード記憶
出力
データパス制御出力マイクロコード記憶にはPLAまたはROMが用いられる
出力
入力入力
順序制御1
マイクロプログラム・カウンタ
アドレス選択論理インクルメンタ
アドレス選択論理
命令操作コード・フィールドスライド80と対比して、概要のみ理解しよう図 5 7 4
92
命令操からの入力
概要のみ理解しよう図 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
IorDMemReadMemWrite
RegWriteR D tIRW i
ALUSrcAMemtoReg
ALUSrcBALUOp
制御
PC
PCSourcePCWritePCWriteCond EPCWrite
CauseWrite
MUM0 0
RegDstIRWrite
MU命令[31-26]
2ビット左シフト
26 28
[31-28]
0
1ジャンプ先
命令[25-0]
PC
メモリ
アドレス
データ
読出レジスタ1 A
ALUALU
ゼロ判定
UX
MB
命令[25-21]
命令[20-16]
命令[15-0]
読出レジスタ2書込レジスタ
書込
読出データ1
読出データ2
MUX
MUX
0
0
1
0
1
命令[15-11]
UX
命令[31 26] 2アドレス[31-0]
38000 0180
ALU
書込みデータ
Out命令レジスタ
ALU結果
MUX
Bレジスタ
書込データ
デ タ2
MUX
符号 2ビット
10
1
12
3
4[15-11]
命令[15-0]EPC
メモリ・データ
レジスタ
拡張 左シフト3216ALU制御
命令[5-0]
CauseMUX
0
1
01
98
データパスを制御する有限状態機械の全体図
MemReadALUSrcA=0
IorD=0IRWrite
ALUSrcB=01ALUOP=00
PCW it
命令フェッチ 命令デコード/レジスタのフェッチ
開始0 1
ALUSrcA=0ALUSrcB=11ALUOP=00
PCWritePCSource=00
2ALUSrcA=1ALUSrcB=10ALUOP=00
メモリアドレスの計算
6ALUSrcA=1ALUSrcB=00ALUOP=10
実行
PCWritePCSource=10
9 ジャンプの完了
ALUSrcA=1ALUSrcB=00ALUOp=01
PCWriteCond
8 分岐完了
35メモリ
アクセス
メモリアクセス
(Op=‘SW’)
7R形式命令の完了
PCSource=01
11 IntCause=1CauseWrite IntCause=010
MemReadIorD=1
MemWriteIorD=1
RegDst=1RegWrite
MemtoReg=0
ALUSrcA=0ALUSrcB=01ALUOP=01EPCWritePCWrite
PCSource=11
IntCause=0CauseWriteALUSrcA=0ALUSrcB=01ALUOP=01
PCWriteEPCWrite
PCSource=11
10
数値オーバーフロー
RegWriteMemtoReg=1
RegDst=0
4メモリ読出し完了ステップ
100
RegDst 0
Chap. 3のセルフチェック
以下の文章の意味がわからないなら、講義で寝ていた(笑)かもしれませんね。
19 単一クロックサイクル方式では、命令によって実行に本質的に必要な時間が異なる。
20 単一クロック・サイクル方式では性能があまりでない。
21 ルチサイクル方式は単 サイクル方式に比べて2 の利点がある
かもしれませんね。
21 マルチサイクル方式は単一サイクル方式に比べて2つの利点がある。
22 マルチサイクル方式では、情報を一時的に保持するレジスタが必要となる。
23 マルチサイクル方式では、5サイクルかけて各命令を実行する。
24 マルチサイクル方式では、制御回路を組み合わせ回路で実現できない。
25 マイクロプログラミングという用語を知っている。
26 プロセッサに関する用語として、例外、割り込みという用語を知っている。
ちゃんと聞いていたのに,わからなければ質問しましょう!
102
Chap. 3の試験に出るかもしれない用語集
• 単一(クロック)サイクル• マルチサイクル• IR• MDR• 命令フェッチ• 命令フェッチ• 命令デコード• レジスタ・フェッチレジスタ フ ッチ• 順序回路• 有限状態機械
プ グ グ• マイクロプログラミング• マイクロ命令(マイクロコード)• 例外 割り込み• 例外、割り込み• オーバーフロー
103
講義中にやって試験に出るかもしれないもの(もちろん全く同じ形ではないですが)(もちろん全く同じ形ではないですが)
• 重要問題重要問題
• ミニクイズ
自己確認クイズ(自分でやるのが基本)• 自己確認クイズ(自分でやるのが基本)
• 章末問題
配布資料は試験中に提供予定(詳細は講義中に説明します。)
104
章末問題①
• 次ページの図は、MIPSのマルチサイクルでの実現のデータパスの制御を行う有限状態機械の状態遷移図である。図中の制御信号の値を全て答えよ。う有限状態機械の状態遷移図である。図中の制御信号の値を全て答えよ。(便宜上全ての制御線の値が書かれているが、問題としてはその値を聞いていると思ってください。)
同じ図において 以下の問いを答えよ• 同じ図において、以下の問いを答えよ。1. R形式の命令を実行する場合、開始からどの順番に状態遷移するか?2. ストア命令の場合は?3 ロ ド命令の場合は?3. ロード命令の場合は?4. ジャンプ命令の場合は?5. 分岐命令の場合は?
105
データパスを制御する有限状態機械の全体図
MemReadALUSrcA=0
IorD=0IRWrite
ALUSrcB=01ALUOP=00
命令フェッチ 命令デコード/レジスタのフェッチ
開始0 1
ALUSrcA=0ALUSrcB=11ALUOP=00
ALUOP 00PCWrite
PCSource=00
2ALUSrcA=1ALUSrcB=10ALUOP=00
メモリアドレスの計算
6ALUSrcA=1ALUSrcB=00ALUOP=10
実行
PCWritePCSource=10
9ジャンプの完了
ALUSrcA=1ALUSrcB=00ALUOp=01
PCWriteCond
8 分岐完了
ALUOP 00
35メモリ
アクセス
メモリアクセス
(Op=‘SW’)
7R形式命令の完了
PCWriteCondPCSource=01
MemReadIorD=1
MemWriteIorD=1
RegDst=1RegWrite
MemtoReg=0
RegWriteMemtoReg=1
R D t 0
4メモリ読出し完了ステップ
106
RegDst=0
章末問題②
• 次ページの図は、MIPSのマルチサイクルでの実現のデータパスの制御を行う有限状態機械の状態遷移図である 図中の制御信号の値を全て答えよう有限状態機械の状態遷移図である。図中の制御信号の値を全て答えよ。(便宜上全ての制御線の値がほとんど書かれているが、問題としてはその値を聞いていると思ってください。)
• 同じ図において、以下の問いを答えよ。1. R形式の命令を実行してオーバーフローが起こった場合、開始からどの順番
に状態遷移するか?2 未定義の命令をフ チした場合はどうか?2. 未定義の命令をフェッチした場合はどうか?
108
データパスを制御する有限状態機械の全体図
MemReadALUSrcA=0
IorD=0IRWrite
ALUSrcB=01ALUOP=00
PCW it
命令フェッチ 命令デコード/レジスタのフェッチ
開始0 1
ALUSrcA=0ALUSrcB=11ALUOP=00
PCWritePCSource=00
ジャンプ
2ALUSrcA=1ALUSrcB=10ALUOP=00
メモリアドレスの計算
6ALUSrcA=1ALUSrcB=00ALUOP=10
実行
PCWritePCSource=10
9ジャンプの完了
ALUSrcA=1ALUSrcB=00ALUOp=01
PCWriteCond
8 分岐完了
35メモリ
アクセス
メモリアクセス
(Op=‘SW’)
7R形式命令の完了
PCSource=01
11 IntCause=1CauseWrite IntCause=010
MemReadIorD=1
MemWriteIorD=1
RegDst=1RegWrite
MemtoReg=0
ALUSrcA=0ALUSrcB=01ALUOP=01EPCWritePCWrite
PCSource=11
IntCause=0CauseWriteALUSrcA=0ALUSrcB=01ALUOP=01
PCWriteEPCWrite
PCSource=11
10
数値オーバーフロー
RegWriteMemtoReg=1
RegDst=0
4メモリ読出し完了ステップ
109
RegDst 0