重要問題⑥:ロード命令実行の様子ger/Lectures/C-CompArch2012/...①命令メモリからのフェッチとPCの繰り上げ...
Transcript of 重要問題⑥:ロード命令実行の様子ger/Lectures/C-CompArch2012/...①命令メモリからのフェッチとPCの繰り上げ...
-
重要問題⑥:ロード命令実行の様子ロード命令の lw $t0, 12($s0)の実行に関して、以下の各ステップのデータパスを図示せよ。また、その時の各MUXへの制御入力は0か1のどちらか?(各バスの値も確認せよ)入力は0か1のどちらか?(各バスの値も確認せよ)
lw $t0, 12($s0) 100011 00000000000011000100010000op rs rt address
①命令メモリからのフェッチとPCの繰り上げ31-26 25-21 20-16 15-0
$t0$s0 +12lw
①命令メモリからのフェッチとPCの繰り上げ②レジスタファイルからの1つのレジスタrsの読出し(この間に 主制御ユニットが制御信号を生成)
③ALU制御入力信号を生成して、ALU演算を実行(足されるのは、②のレジスタとoffset の値)
(この間に、主制御ユニットが制御信号を生成)
②④③で計算した値をアドレスとしてデータメモリをアクセス⑤④で読み出したメモリの値をディスティネーションレジスタに書き込み
10次世代コンピューティング研究室 山下 茂 [email protected]
*この問題は、図4.16を見ながら回答してよし。
-
①命令メモリからのフェッチとPCの繰り上げ
加算4 M0
命令アドレス
4
2ビット左に
加算
UX
1
0
制御
RegDstBranch
MemRead
MemWriteALUOpMemtoReg命令[31:26]
0
この制御線の値は実際には、もう少し後で決定さ
読出reg1読出
読出reg1 ゼロ判定
命令メモリ
PCシフト
命令[25:21]
命令[20:16]
MemWriteALUSrcRegWrite
AND し後で決定される
レジスタ ALU ALU結果読出reg2書込reg
書込デ タ
読出reg2
ALU操作 データ
読出データ
アドレス MUX
MUX
命令[31:0]
01
0
[20:16]
MUX
01
データ 4 メモリ書込データ
符号3216
X
ALU
1命令[15:11]
命令[15:0] 符号
拡張ALU制御
命令[5:0]
11次世代コンピューティング研究室 山下 茂 [email protected]
-
②レジスタファイルからの1つのレジスタrsの読出し(この間に、主制御ユニットが制御信号を生成)⇒値は次のページ
加算4 M0
命令アドレス
4
2ビット左に
加算
UX
1
0
制御
RegDstBranch
MemRead
MemWriteALUOpMemtoReg命令[31:26]
読出reg1読出
読出reg1 ゼロ判定
命令メモリ
PCシフト
命令[25:21]
命令[20:16]
MemWriteALUSrcRegWrite
AND
レジスタ ALU ALU結果読出reg2書込reg
書込デ タ
読出reg2
ALU操作 データ
読出データ
アドレス MUX
MUX
命令[31:0]
01
0
[20:16]
MUX
01$s0をここで指定
データ 4 メモリ書込データ
符号3216
X
ALU
1命令[15:11]
命令[15:0] 符号
拡張ALU制御
命令[5:0]
12次世代コンピューティング研究室 山下 茂 [email protected]
-
RegDst= 0(所望のデータパスの作成のため)ALUSrc= 1(所望のデータパスの作成のため)MemtoReg= 1(所望のデータパスの作成のため)MemtoReg= 1(所望のデ タパスの作成のため)RegWrite= 1(レジスタに書きこむので)MemRead= 1 (メモリを読むので)MemWrite= 0(メモリには書き込まないので)MemWrite= 0(メモリには書き込まないので)Branch= 0 (beq命令でないので)ALUOp1= 0(lw/sw命令なので)
( 命令な )ALUOp0 =0 (lw/sw命令なので)
*これらの信号の値は、そのクロック周期中はずっと同じ値となっていると考えてください。
13次世代コンピューティング研究室 山下 茂 [email protected]
-
③ALU制御入力信号を生成して、ALU演算を実行(足し算)(足されるのは ②のレジスタとoffset の値)
加算4 M0
(足されるのは、②のレジスタとoffset の値)
命令アドレス
4
2ビット左に
加算
UX
1
0
制御
RegDstBranch
MemRead
MemWriteALUOpMemtoReg命令[31:26]
読出reg1読出
読出reg1 ゼロ判定
命令メモリ
PCシフト
命令[25:21]
命令[20:16]
MemWriteALUSrcRegWrite
AND
レジスタ ALU ALU結果読出reg2書込reg
書込デ タ
読出reg2
ALU操作 データ
読出データ
アドレス MUX
MUX
命令[31:0]
01
0
[20:16]
MUX
01
データ 4 メモリ書込データ
符号3216
X
ALU
1命令[15:11]
命令[15:0]
ALU制御コードは0010 (add)
符号拡張
ALU制御
命令[5:0]
ALUの下側の入力は、命令[15:0]の値を32ビットにしたもの(この例では その
14次世代コンピューティング研究室 山下 茂 [email protected]
(この例では、その値は12)
-
④③で計算した値をアドレスとしてデータメモリをアクセス
加算4 M0
命令アドレス
4
2ビット左に
加算
UX
1
0
制御
RegDstBranch
MemRead
MemWriteALUOpMemtoReg命令[31:26]
読出reg1読出
読出reg1 ゼロ判定
命令メモリ
PCシフト
命令[25:21]
命令[20:16]
MemWriteALUSrcRegWrite
AND
レジスタ ALU ALU結果読出reg2書込reg
書込デ タ
読出reg2
ALU操作 データ
読出データ
アドレス MUX
MUX
命令[31:0]
01
0
[20:16]
MUX
01
データ 4 メモリ書込データ
符号3216
X
ALU
1命令[15:11]
命令[15:0] 符号
拡張ALU制御
命令[5:0]
15次世代コンピューティング研究室 山下 茂 [email protected]
-
⑤④で読み出したメモリの値をディスティネーションレジスタに書き込み
加算4 M0
命令アドレス
4
2ビット左に
加算
UX
1
0
制御
RegDstBranch
MemRead
MemWriteALUOpMemtoReg命令[31:26]
読出reg1読出
読出reg1 ゼロ判定
命令メモリ
PCシフト
命令[25:21]
命令[20:16]
MemWriteALUSrcRegWrite
AND
レジスタ ALU ALU結果読出reg2書込reg
書込デ タ
読出reg2
ALU操作 データ
読出データ
アドレス MUX
MUX
命令[31:0]
01
0
[20:16]
MUX
01
データ 4 メモリ書込データ
符号3216
X
ALU
1命令[15:11]
命令[15:0] 符号
拡張ALU制御
命令[5:0]
命令[20:16]が、書き込みレジスタの指定
16次世代コンピューティング研究室 山下 茂 [email protected]
定
-
重要問題⑦:beq命令実行の様子ロード命令の beq $s1, $s2, 100 の実行に関して、
以下の各ステップのデータパスを図示せよ。また、その時の各MUXへの制御入力は0か1のどちらか?(各バスの値も確認せよ)入力は0か1のどちらか?(各バスの値も確認せよ)
beq $s1, $s2, 100 000100 00000000000110011001010001op rs rt address
$s2$s1 25beq
①命令メモリからのフェッチとPCの繰り上げ①命令メモリからのフ ッチと Cの繰り げ②レジスタファイルからの2つのソースレジスタの読出し(この間に、主制御ユニットが制御信号を生成)
③ALU制御入力信号を生成して、ALU演算を実行(減算)同時にPC+4 + (offset*4) の計算( )
④ALUのゼロ判定出力に基づき、PCに格納する値を選択
17次世代コンピューティング研究室 山下 茂 [email protected]
*この問題は、図4.16を見ながら回答してよし。
-
①命令メモリからのフェッチとPCの繰り上げ
この制御線
加算4 M0
この制御線の値は実際には、もう少し後で決定さ
命令アドレス
4
2ビット左に
加算
UX
1
0
制御
RegDstBranch
MemRead
MemWriteALUOpMemtoReg命令[31:26]
し後で決定される(分岐の場合1)その正しい値には
後ほどセ ト
読出reg1読出
読出reg1 ゼロ判定
命令メモリ
PCシフト
命令[25:21]
命令[20:16]
MemWriteALUSrcRegWrite
AND 後ほどセットされる
レジスタ ALU ALU結果読出reg2書込reg
書込デ タ
読出reg2
ALU操作 データ
読出データ
アドレス MUX
MUX
命令[31:0]
01
0
[20:16]
MUX
01
データ 4 メモリ書込データ
符号3216
X
ALU
1命令[15:11]
命令[15:0] 符号
拡張ALU制御
命令[5:0]
18次世代コンピューティング研究室 山下 茂 [email protected]
-
②レジスタファイルからの2つのソースレジスタの読出し(この間に、主制御ユニットが制御信号を生成)⇒値は次のページ
加算4 M0
(この間に、主制御ユニットが制御信号を生成)⇒値は次のペ ジ
命令アドレス
4
2ビット左に
加算
UX
1
0
制御
RegDstBranch
MemRead
MemWriteALUOpMemtoReg命令[31:26]
読出reg1読出
読出reg1 ゼロ判定
命令メモリ
PCシフト
命令[25:21]
命令[20:16]
MemWriteALUSrcRegWrite
AND
レジスタ ALU ALU結果読出reg2書込reg
書込デ タ
読出reg2
ALU操作 データ
読出データ
アドレス MUX
MUX
命令[31:0]
01
0
[20:16]
MUX
01$s1をここで指定
データ 4 メモリ書込データ
符号3216
X
ALU
1命令[15:11]
命令[15:0]$s2をここで指定 符号
拡張ALU制御
命令[5:0]
$s2をここで指定
19次世代コンピューティング研究室 山下 茂 [email protected]
-
RegDst= x(所望のデータパスの作成には無関係)ALUSrc= 0(所望のデータパスの作成のため)MemtoReg=x(所望のデータパスの作成には無関係)MemtoReg=x(所望のデ タパスの作成には無関係)RegWrite= 0(レジスタに書きこむので)MemRead= 0 (メモリは読まないので)MemWrite= 0(メモリには書き込まないので)MemWrite= 0(メモリには書き込まないので)Branch= 1 (beq命令なので)ALUOp1= 0(beq命令なので)
( 命令な )ALUOp0 =1 (beq命令なので)
*これらの信号の値は、そのクロック周期中はずっと同じ値となっていると考えてください。
20次世代コンピューティング研究室 山下 茂 [email protected]
-
③ALU制御入力信号を生成して、ALU演算を実行(減算)同時にPC+4 + (offset*4) の計算
加算4 M0
( )
命令アドレス
4
2ビット左に
加算
UX
1
0
制御
RegDstBranch
MemRead
MemWriteALUOpMemtoReg命令[31:26]
読出reg1読出
読出reg1 ゼロ判定
命令メモリ
PCシフト
命令[25:21]
命令[20:16]
MemWriteALUSrcRegWrite
AND
レジスタ ALU ALU結果読出reg2書込reg
書込デ タ
読出reg2
ALU操作 データ
読出データ
アドレス MUX
MUX
命令[31:0]
01
0
[20:16]
MUX
01
データ 4 メモリ書込データ
符号3216
X
ALU
1命令[15:11]
命令[15:0] 符号
拡張ALU制御
命令[5:0]ALU制御コードは
0110 (引き算)
21次世代コンピューティング研究室 山下 茂 [email protected]
0110 (引き算)
-
④ALUのゼロ判定出力に基づき、PCに格納する値を選択以下はゼロ判定が1の時のデータパス。ゼロ判定が0の時は以下のMUXでは上側が選択される
加算4 M0
以下はゼ 判定が1の時のデ タ ス。ゼ 判定が0の時は以下のMUXでは上側が選択される
命令アドレス
4
2ビット左に
加算
UX
1
0
制御
RegDstBranch
MemRead
MemWriteALUOpMemtoReg命令[31:26]
読出reg1読出
読出reg1 ゼロ判定
命令メモリ
PCシフト
命令[25:21]
命令[20:16]
MemWriteALUSrcRegWrite
AND
レジスタ ALU ALU結果読出reg2書込reg
書込デ タ
読出reg2
ALU操作 データ
読出データ
アドレス MUX
MUX
命令[31:0]
01
0
[20:16]
MUX
01
データ 4 メモリ書込データ
符号3216
X
ALU
1命令[15:11]
命令[15:0] 符号
拡張ALU制御
命令[5:0]
22次世代コンピューティング研究室 山下 茂 [email protected]
-
章末問題①
• 重要問題⑥においてストアの場合を考える ま重要問題⑥においてストアの場合を考える。まず問題文自体を自分で変更せよ(動作の内容が異なる)。そして その問題を回答せよ。異なる)。そして、その問題を回答せよ。
23次世代コンピューティング研究室 山下 茂 [email protected]
-
ストア命令実行の様子ストア命令の sw $t0, 12($s0)の実行に関して、以下の各ステップのデータパスを図示せよ。また、その時の各MUXへの制御入力は0か1のどちらか?(各バスの値も確認せよ)入力は0か1のどちらか?(各バスの値も確認せよ)
sw $t0, 12($s0) 101011 00000000000011000100010000op rs rt address
①命令メモリからのフェッチとPCの繰り上げ
31-26 25-21 20-16 15-0$t0$s0 +12sw
①命令メモリからのフェッチとPCの繰り上げ
②レジスタファイルからの2つのレジスタの読出し(この間に、主制御ユニットが制御信号を生成) ロードと少し違う
③ALU制御入力信号を生成して、ALU演算を実行(足されるのは、②のレジスタとoffset の値)
④③で計算した値を書きみアドレスとして、データメモリにレジスタrtの値を書き込む
24次世代コンピューティング研究室 山下 茂 [email protected]
-
①命令メモリからのフェッチとPCの繰り上げ
加算4 M0
命令アドレス
4
2ビット左に
加算
UX
1
0
制御
RegDstBranch
MemRead
MemWriteALUOpMemtoReg命令[31:26]
0
この制御線の値は実際には、もう少し後で決定さ
読出reg1読出
読出reg1 ゼロ判定
命令メモリ
PCシフト
命令[25:21]
命令[20:16]
MemWriteALUSrcRegWrite
AND し後で決定される
レジスタ ALU ALU結果読出reg2書込reg
書込デ タ
読出reg2
ALU操作 データ
読出データ
アドレス MUX
MUX
命令[31:0]
01
0
[20:16]
MUX
01
データ 4 メモリ書込データ
符号3216
X
ALU
1命令[15:11]
命令[15:0] 符号
拡張ALU制御
命令[5:0]
25次世代コンピューティング研究室 山下 茂 [email protected]
-
②レジスタファイルからの2つのレジスタの読出し(この間に、主制御ユニットが制御信号を生成)⇒値は次のページ
加算4 M0
命令アドレス
4
2ビット左に
加算
UX
1
0
制御
RegDstBranch
MemRead
MemWriteALUOpMemtoReg命令[31:26]
読出reg1読出
読出reg1 ゼロ判定
命令メモリ
PCシフト
命令[25:21]
命令[20:16]
MemWriteALUSrcRegWrite
AND
レジスタ ALU ALU結果読出reg2書込reg
書込デ タ
読出reg2
ALU操作 データ
読出データ
アドレス MUX
MUX
命令[31:0]
01
0
[20:16]
MUX
01$s0をここで指定
データ 4 メモリ書込データ
符号3216
X
ALU
1命令[15:11]
命令[15:0] 符号
拡張ALU制御
命令[5:0]
ALUの下側の入力は、命令[15:0]の値を32ビットにしたもの
26次世代コンピューティング研究室 山下 茂 [email protected]
-
RegDst= x(所望のデータパスの作成に無関係のため)ALUSrc= 1(所望のデータパスの作成のため)MemtoReg= x(所望のデータパスの作成にに無関係のため)MemtoReg= x(所望のデ タパスの作成にに無関係のため)RegWrite= 0(レジスタに書きこまないので)MemRead= 0 (メモリを読まないので)MemWrite= 1(メモリに書き込むので)MemWrite= 1(メモリに書き込むので)Branch= 0 (beq命令でないので)ALUOp1= 0(lw/sw命令なので)
( 命令な )ALUOp0 =0 (lw/sw命令なので)
*これらの信号の値は、そのクロック周期中はずっと同じ値となっていると考えてください。
27次世代コンピューティング研究室 山下 茂 [email protected]
-
③ALU制御入力信号を生成して、ALU演算を実行(足し算)(足されるのは ②のレジスタとoffset の値)
加算4 M0
(足されるのは、②のレジスタとoffset の値)
命令アドレス
4
2ビット左に
加算
UX
1
0
制御
RegDstBranch
MemRead
MemWriteALUOpMemtoReg命令[31:26]
読出reg1読出
読出reg1 ゼロ判定
命令メモリ
PCシフト
命令[25:21]
命令[20:16]
MemWriteALUSrcRegWrite
AND
レジスタ ALU ALU結果読出reg2書込reg
書込デ タ
読出reg2
ALU操作 データ
読出データ
アドレス MUX
MUX
命令[31:0]
01
0
[20:16]
MUX
01
データ 4 メモリ書込データ
符号3216
X
ALU
1命令[15:11]
命令[15:0] 符号
拡張ALU制御
命令[5:0]ALU制御コードは
0010 (add)
28次世代コンピューティング研究室 山下 茂 [email protected]
0010 (add)
-
④③で計算した値を書きみアドレスとして、データメモリにレジスタrtの値を書き込む
加算4 M0
命令アドレス
4
2ビット左に
加算
UX
1
0
制御
RegDstBranch
MemRead
MemWriteALUOpMemtoReg命令[31:26]
読出reg1読出
読出reg1 ゼロ判定
命令メモリ
PCシフト
命令[25:21]
命令[20:16]
MemWriteALUSrcRegWrite
AND
レジスタ ALU ALU結果読出reg2書込reg
書込デ タ
読出reg2
ALU操作 データ
読出データ
アドレス MUX
MUX
命令[31:0]
01
0
[20:16]
MUX
01
データ 4 メモリ書込データ
符号3216
X
ALU
1命令[15:11]
命令[15:0] 符号
拡張ALU制御
命令[5:0]
29次世代コンピューティング研究室 山下 茂 [email protected]
-
章末問題②:ジャンプ命令の追加教科書のP301の例題を自分で読んで理解した後、図4.24に関して以下の
問いに答えよ
• 教科書:図4.24で新たに付け加えられた部分はどこか答えよ
• PCへの更新のデータパスにおいて、以下の4つの場合のデータパスをそれぞれ示せ。(どのMUXでどのデータを選択するかを明示せよ.また、制御線で1となっているものをあげよ)
1 beq命令で分岐が成立する時1. beq命令で分岐が成立する時2. beq命令で分岐が成立しない時3. jump命令4. add命令
30次世代コンピューティング研究室 山下 茂 [email protected]
-
追加されたのは、以下の水色の部分
命令
加算
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操作
ゼロ判定
デ
読出データ
アドレス MUMU
メモリ
命令[31:0]
01
命令[20:16]
MU0
書込データ 4
ALU操作 データメモリ
書込データ
UXUX
10
命令[15:11]
命令
X1
符号拡張
3216ALU制御
命令[15:0]
命令[5:0]
31次世代コンピューティング研究室 山下 茂 [email protected]
-
beq命令で分岐が成立する時のデータパス:赤色命令
加算
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操作
ゼロ判定
デ
読出データ
アドレス MUMU
メモリ
命令[31:0]
01
命令[20:16]
MU0
書込データ 4
ALU操作 データメモリ
書込データ
UXUX
10
命令[15:11]
命令
X1
符号拡張
3216ALU制御
命令[15:0]
命令[5:0]
32次世代コンピューティング研究室 山下 茂 [email protected]
-
beq命令で分岐が成立しない時のデータパス:赤色命令
加算
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操作
ゼロ判定
デ
読出データ
アドレス MUMU
メモリ
命令[31:0]
01
命令[20:16]
MU0
書込データ 4
ALU操作 データメモリ
書込データ
UXUX
10
命令[15:11]
命令
X1
符号拡張
3216ALU制御
命令[15:0]
命令[5:0]
33次世代コンピューティング研究室 山下 茂 [email protected]
-
beq命令で分岐が成立する時の制御線(b 命令で分岐が不成立の時の制御線の(beq命令で分岐が不成立の時の制御線の値も同じ。違うのはALUのゼロ判定出力
RegDst= x(所望のデータパスの作成には無関係)ALUSrc= 0(所望のデータパスの作成のため)MemtoReg=x(所望のデータパスの作成には無関係)MemtoReg=x(所望のデ タパスの作成には無関係)RegWrite= 0(レジスタに書きこむので)MemRead= 0 (メモリは読まないので)MemWrite= 0(メモリには書き込まないので)MemWrite= 0(メモリには書き込まないので)Jump = 0 (Jumpでないので)Branch= 1 (beq命令なので)
( 命令な れは ビ ト す)ALUOp1= 01(beq命令なので:これは2ビットです)
*これらの信号の値は、そのクロック周期中はずっと同じ値となっていると考えてください。
34次世代コンピューティング研究室 山下 茂 [email protected]
-
jump命令の時のデータパス:赤色命令
加算
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操作
ゼロ判定
デ
読出データ
アドレス MUMU
メモリ
命令[31:0]
01
命令[20:16]
MU0
書込データ 4
ALU操作 データメモリ
書込データ
UXUX
10
命令[15:11]
命令
X1
符号拡張
3216ALU制御
命令[15:0]
命令[5:0]
35次世代コンピューティング研究室 山下 茂 [email protected]
-
jump命令の時の制御線
RegDst= x(所望のデータパスの作成には無関係)ALUSrc=x(所望のデータパスの作成には無関係)MemtoReg (所望のデ タパスの作成には無関係)MemtoReg=x(所望のデータパスの作成には無関係)RegWrite= 0(レジスタに書きこむので)MemRead= 0 (メモリは読まないので)
( は書き込まな )MemWrite= 0(メモリには書き込まないので)Jump = 1 (Jumpなので)Branch= 0 (beq命令でないので、ただし1でも問題ないという意味ではxと答えてもOK.)ALUOp=xx(ALUは使わないので、これは2ビット)
*これらの信号の値は、そのクロック周期中はずっと同じ値となっていると考えてください。
36次世代コンピューティング研究室 山下 茂 [email protected]
-
add命令の時のデータパス:赤色命令
加算
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操作
ゼロ判定
デ
読出データ
アドレス MUMU
メモリ
命令[31:0]
01
命令[20:16]
MU0
書込データ 4
ALU操作 データメモリ
書込データ
UXUX
10
命令[15:11]
命令
X1
符号拡張
3216ALU制御
命令[15:0]
命令[5:0]
37次世代コンピューティング研究室 山下 茂 [email protected]
-
RegDst= 1(所望のデータパスの作成のため)ALUSrc= 0(所望のデータパスの作成のため)MemtoReg= 0(所望のデータパスの作成のため)MemtoReg= 0(所望のデ タパスの作成のため)RegWrite= 1(レジスタに書きこむので)MemRead= 0 (メモリは読まないので)MemWrite= 0(メモリには書き込まないので)MemWrite= 0(メモリには書き込まないので)Jump = 0 (Jump命令でないので)Branch= 0 (beq命令でないので)
( 命令な ) れは ビ トALUOp= 10(R命令なので) これは2ビット
*これらの信号の値は、そのクロック周期中はずっと同じ値となっていると考えてください。
38次世代コンピューティング研究室 山下 茂 [email protected]