(1)マルチサイクルを用いた実現方式
(教科書5.4節)
(2)マルチサイクル方式(1)
2つのデータパス実現方式
z 単一クロックサイクル: 1命令を1クロックサイクルで処理
z マルチクロックサイクル: 1命令を複数クロックサイクルで処理
単一クロックサイクル方式は処理効率が悪い.
CLK
命令
命令
命令
命令
命令
処理時間
クロック・サイクル
時間は一定.
時間のかかる命令にクロック・
サイクル時間をあわさなければ
(3)マルチサイクル方式(2)
マルチクロックサイクル方式
CLK
命令
命令
命令
命令
命令
処理時間
z 1命令の実行を(同程度の処理量の)複数小作業に分割する
z
各小作業を1クロックサイクルで処理する
z
1命令は複数クロックサイクルで実行される
z クロック・サイクル時間を短くする(動作周波数を高くする)
CLK
処理時間
(4)マルチサイクル処理例(1)
データメモリ
符号拡張
+
4
MemRead MemWrite
adrs
レジスタ
ファイル
RegWrite
rreg1
rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-21
20-16
inst
a
15-0
b
adrs
wd rd
y
P
C
A
L
U
32
16
(5)マルチサイクル処理例(2)
データメモリ
符号拡張
+
4
MemRead MemWrite
adrs
レジスタ
ファイル
RegWrite
rreg1
rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-21
20-16
inst
a
15-0
b
adrs
wd rd
y
P
C
A
L
U
32
16
LW命令実行の場合
(6)マルチサイクル処理例(3)
データメモリ
符号拡張
+
4
MemRead MemWrite
adrs
レジスタ
ファイル
RegWrite
rreg1
rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-21
20-16
inst
a
15-0
b
adrs
wd rd
y
P
C
A
L
U
32
16
(7)マルチサイクル処理例(4)
データメモリ
符号拡張
+
4
MemRead MemWrite
adrs
レジスタ
ファイル
RegWrite
rreg1
rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-21
20-16
inst
a
15-0
b
adrs
wd rd
y
P
C
A
L
U
32
16
LW命令実行の場合
(8)マルチサイクル処理例(5)
データメモリ
符号拡張
+
4
MemRead MemWrite
adrs
レジスタ
ファイル
RegWrite
rreg1
rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-21
20-16
inst
a
15-0
b
adrs
wd rd
y
P
C
A
L
U
32
16
(9)マルチサイクル処理例(6)
データメモリ
符号拡張
+
4
MemRead MemWrite
adrs
レジスタ
ファイル
RegWrite
rreg1
rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-21
20-16
inst
a
15-0
b
adrs
wd rd
y
P
C
A
L
U
32
16
1クロック・サイクルより長い時間
値を保持しなければならない信
号線には,レジスタを挿入する.
異なるクロック・サイ
クルで動作するので,
共通化可能!
(10)マルチサイクル・データパス(1)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
P
C
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
制御部
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
31-26
2bit
左シフト
2bit
左シフト
(11)マルチサイクル・データパス(2)
信号の意味
入出力
信号名
ビット幅
次のクロック・サイクルで更新するPCの
値
入力
32
記憶してる値(現在のPCの値)
出力
32
更新要求(1で要求)
入力
1
プログラムカウンタ(PC)
信号の意味
入出力
信号名
ビット幅
次のクロック・サイクルで記憶する命令
入力
32
記憶している命令(現在のIRの値)
出力
32
書き込み要求(1のとき要求)
入力
IRWrite
1
命令レジスタ(IR): メモリから読み出した命令を記憶する.
(12)マルチサイクル・データパス(3)
信号の意味
入出力
信号名
ビット幅
次のクロック・サイクルで記憶するデータ
入力
32
現在記憶しているデータ
出力
32
MDR(メモリデータレジスタ),A,B,ALUOut: いずれも通常のレ
ジスタ(Dフリップフロップ)
(13)R形式命令の実行(命令取得とPC更新)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
P
C
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
2bit
左シフト
2bit
左シフト
(14)R形式命令の実行(命令解読とレジスタ読出し)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(15)R形式命令の実行(演算の実行)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(16)R形式命令の実行(演算結果の書込み)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(17)lw命令の実行(命令取得とPC更新)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(18)lw命令の実行(
命令解読とレジスタ読出し
)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(19)lw命令の実行(アドレス計算)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(20)lw命令の実行(メモリへのアクセス)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(21)lw命令の実行(ロード結果の書込み)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(22)sw命令の実行(命令取得とPC更新)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(23)sw命令の実行(
命令解読とレジスタ読出し
)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(24)sw命令の実行(アドレス計算)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(25)sw命令の実行(メモリへのアクセス)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(26)beq命令の実行(命令取得とPC更新)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(27)beq命令の実行
(命令解読とレジスタ読出し,分岐先PCの計算)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
ALUSrcA
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(28)beq命令の実行(分岐条件判定とPC更新)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(29)j命令の実行(命令取得とPC更新)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(30)j命令の実行(命令の解読)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
ALUSrcA
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(31)j命令の実行(PC更新)
25-21
20-16
15-11
A
L
U
レジスタ
ファイル
符号拡張
メモリ
adrs
15-0
zero
rreg1
rreg2
wreg
wd
rd1
rd2
16
A
B
4
A
L
U
O
u
t
I
R
M
D
R
32
25-0
RegWrite
0
1
RegDst
1
0 MemToReg
00
01
10
11
0
1
00
01
10
PCSource
ALU
制御部
ALUCtrl
ALUSrcA
ALUSrcB
ALUOp
IRWrite
PCWrite
0
1
IorD
wd
rd
MemWrite MemRead
5-0
PCWriteCond
31-28
制御部
31-26
P
C
2bit
左シフト
2bit
左シフト
(32)制御部の設計(1)
R形式
lw
sw
beq
j
第1サイクル
IorD=0; MemRead=1; IRWrite=1; ALUSrcA=0; ALUSrcB=01; ALUOp=00; PCSource=00;
PCWrite=1
第2サイクル
ALUSrcA=0
ALUSrcB=11
ALUOp=00
第3サイクル
ALUSrcA=1
ALUSrcB=00
ALUOp=10
ALUSrcA=1
ALUSrcB=10
ALUOp=00
ALUSrcA=1
ALUSrcB=10
ALUOp=00
ALUSrcA=1
ALUSrcB=00
ALUOp=01
PCSource=01
PCWriteCond=1
PCSource=10
PCWrite=1
第4サイクル
RegDst=1
MemToReg=0
RegWrite=1
IorD=1
MemRead=1
IorD=1
MemWrite=1
第5サイクル
MemToReg=1
RegDst=0
RegWrite=1
(33)制御部の設計(2)
R形式
lw
sw
beq
j
第1サイクル
IorD=0; MemRead=1; IRWrite=1; ALUSrcA=0; ALUSrcB=01; ALUOp=00; PCSource=00;
PCWrite=1
第2サイクル
ALUSrcA=0
ALUSrcB=11
ALUOp=00
ALUSrcA=0
ALUSrcB=11
ALUOp=00
ALUSrcA=0
ALUSrcB=11
ALUOp=00
ALUSrcA=0
ALUSrcB=11
ALUOp=00
ALUSrcA=0
ALUSrcB=11
ALUOp=00
第3サイクル
ALUSrcA=1
ALUSrcB=00
ALUOp=10
ALUSrcA=1
ALUSrcB=10
ALUOp=00
ALUSrcA=1
ALUSrcB=10
ALUOp=00
ALUSrcA=1
ALUSrcB=00
ALUOp=01
PCSource=01
PCWriteCond=1
PCSource=10
PCWrite=1
第4サイクル
RegDst=1
MemToReg=0
RegWrite=1
IorD=1
MemRead=1
IorD=1
MemWrite=1
第5サイクル
MemToReg=1
RegDst=0
RegWrite=1
やる必要はないが,
やっても無害.やっ
たほうが制御部が
簡潔になる.
共通
(34)制御部の設計(3)
R形式
lw
sw
beq
j
第1サイクル
IorD=0; MemRead=1; IRWrite=1; ALUSrcA=0; ALUSrcB=01; ALUOp=00; PCSource=00;
PCWrite=1
第2サイクル
ALUSrcA=0; ALUSrcB=11; ALUOp=00
第3サイクル
ALUSrcA=1
ALUSrcB=00
ALUOp=10
ALUSrcA=1
ALUSrcB=10
ALUOp=00
ALUSrcA=1
ALUSrcB=00
ALUOp=01
PCSource=01
PCWriteCond=1
PCSource=10
PCWrite=1
第4サイクル
RegDst=1
MemToReg=0
RegWrite=1
IorD=1
MemRead=1
IorD=1
MemWrite=1
第5サイクル
MemToReg=1
RegDst=0
RegWrite=1
⓪
①
②
③
④
⑤
⑥
⑦
⑧
⑨
(35)制御部の設計(4)
状態遷移図
0
1
2
3
4
5
7
6
8
9
lw/sw
sw
lw
R形式
beq
j
(36)制御部の設計(5)
制御部
状態レ
ジ
ス
タ
組み合わせ
論理回路
I
R
次状態
31-26
各制御信号