ソフトウェア基礎技術研修

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