データパスの構築Ⅰ...
TRANSCRIPT
-
データパスの構築Ⅰ~シングルサイクル・データパス~
(教科書5.1~5.3節)
-
九州大学工学部電気情報工学科(2006年度)
プロセッサの構成:データパスと制御
MIPS命令セットを実現するプロセッサを設計する!
ただし,以下の命令セットに限定算術論理演算命令:add,sub,and,or,slt
メモリ参照命令:lw,sw
分岐命令:beq
命令区分 命令の内容 例 意味
論理積 and $s1, $s2, $s3 $s1 = $s2 and $s3 (ビット毎の論理積)
論理和 or $s1, $s2, $s3 $s1 = $s2 or $s3 (ビット毎の論理和)
比較(セット) slt $s1, $s2, $s3 もし、$s2=$s3なら$s1=0
加算 add $s1, $s2, $s3 $s1 = $s2 + $s3
減算 sub $s1, $s2, $s3 $s1 = $s2 – $s3
ロードワード lw $s1, 100($s2) $s1に,メモリの[$s2+100]番地のワードデータを読込み
ストアワード sw $s1, 100($s2) メモリの[$s2+100]番地に,$s1のワードデータを書込み
分岐 条件付 beq $s1, $s2, L もし、$s1==$s2ならラベルLへ分岐
データ転送
算術論理演算
-
九州大学工学部電気情報工学科(2006年度)
命令実行の基本動作
命令取得
命令解読
命令実行
PCの指す番地から命令を取得.
命令語の各フィールドを検査して,実行する命令と必要なパラメータを特定する.
全ての命令で共通の処理
命令によって異なる処理
-
九州大学工学部電気情報工学科(2006年度)
命令実行の基本動作(add命令)(sub, and, or, slt も同様)
rs,rt の指定するレジスタの値を ALU に転送
ALUで演算実行
結果を rd の指定するレジスタに転送
PC ← PC + 4
命令取得
命令解読
命令実行
000000 rs rt rd 00000 100000
-
九州大学工学部電気情報工学科(2006年度)
命令実行の基本動作(lw命令)
rs の指定するレジスタの値と即値を ALU に転送
加算実行
加算結果の番地の値を rt の指定するレジスタに転送
PC ← PC + 4
命令取得
命令解読
命令実行
100011 rs rt 即値
-
九州大学工学部電気情報工学科(2006年度)
各命令実行で必要な処理
命令実行で必要となる処理命令の種類
命令
Step1 Step2 Step3 Step4 Step5
演算結果をrdへ書き込み
PCの更新(+4)
ロード値をrtへ書込み
PCの更新(+4)
メモリから値を読出し(ロード)
PCの更新(+4)
メモリへrtの値を書込み
PCの更新(分岐先の値)
ALUでの演算
ALUでのアドレス計算(+)
ALUでのアドレス計算(+)
ALUでの一致判定(-)
レジスタファイルよりrsとrtを読出し
レジスタファイルよりrsを読出し命令より即値を選択
レジスタファイルよりrsとrtを読出し命令より即値を選択
レジスタファイルよりrsとrtを読出し
命令より分岐先オフセットを選択
算術論理演算
add/sub/
and/or/slt
lwデータ転送
sw
分岐 beq
-
九州大学工学部電気情報工学科(2006年度)
データパスの概観
アドレス
命令
書込みデータ
レジスタ番号
レジスタ番号
レジスタ番号
読出しデータ
読出しデータ
書込みデータ
アドレス
読出しデータ
命令メモリPC
レジスタファイル
データメモリ
ALU
命令取得 命令解読 命令実行
-
九州大学工学部電気情報工学科(2006年度)
部品の準備(命令メモリ)
信号の意味 入出力 信号名 ビット幅
読み出す命令の番地 入力 adrs 32
読み出された命令 出力 inst 32
命令メモリ:実行対象となる命令(プログラム)を格納
アドレス
命令
書込みデータ
レジスタ番号
レジスタ番号
レジスタ番号
読出しデータ
読出しデータ
書込みデータ
アドレス
読出しデータ
命令メモリPC
レジスタファイル
データメモリ
ALU
アドレス
命令
書込みデータ
レジスタ番号
レジスタ番号
レジスタ番号
読出しデータ
読出しデータ
書込みデータ
アドレス
読出しデータ
命令メモリPC
レジスタファイル
データメモリ
ALU
命令メモリadrs inst32 32
-
九州大学工学部電気情報工学科(2006年度)
部品の準備(データメモリ)
信号の意味 入出力 信号名 ビット幅
読み書きする番地 入力 adrs 32
書き込みデータ 入力 wd 32
読み出しデータ 出力 rd 32
書き込み要求(1のとき要求) 入力 MemWrite 1
読み出し要求(1のとき要求) 入力 MemRead 1
データメモリ:プログラム実行において必要となるデータを格納
アドレス
命令
書込みデータ
レジスタ番号
レジスタ番号
レジスタ番号
読出しデータ
読出しデータ
書込みデータ
アドレス
読出しデータ
命令メモリPC
レジスタファイル
データメモリ
ALU
アドレス
命令
書込みデータ
レジスタ番号
レジスタ番号
レジスタ番号
読出しデータ
読出しデータ
書込みデータ
アドレス
読出しデータ
命令メモリPC
レジスタファイル
データメモリ
ALU
データメモリ32
32
32
MemRead MemWrite
rdwd
adrs
-
九州大学工学部電気情報工学科(2006年度)
部品の準備(レジスタファイル 1/2)
信号の意味 入出力 信号名 ビット幅
レジスタの読み出し値1 出力 rd1 32
レジスタの読み出し値2 出力 rd2 32
レジスタの書き込み値 入力 wd 32
rd1 に値を出力するレジスタを選択 入力 rreg1 5
rd2 に値を出力するレジスタを選択 入力 rreg2 5
wd の値を書き込むレジスタを選択 入力 wreg 5
レジスタに書き込みを行うとき1 入力 RegWrite 1
レジスタファイル:複数のレジスタにより構成
アドレス
命令
書込みデータ
レジスタ番号
レジスタ番号
レジスタ番号
読出しデータ
読出しデータ
書込みデータ
アドレス
読出しデータ
命令メモリPC
レジスタファイル
データメモリ
ALU
アドレス
命令
書込みデータ
レジスタ番号
レジスタ番号
レジスタ番号
読出しデータ
読出しデータ
書込みデータ
アドレス
読出しデータ
命令メモリPC
レジスタファイル
データメモリ
ALU
レジスタファイル
532
5
5
32 32
RegWrite
rd1
rd2
rreg1
rreg2wreg
wd
-
九州大学工学部電気情報工学科(2006年度)
部品の準備(レジスタファイル 2/2)
レジスタファイル
532
5
5
32 32
RegWrite
rd1
rd2
rreg1
rreg2wreg
wd
Register 0
C
D
C
C
D
D
01
3031
Register 1
Register 30
Register 31
DecoderMux
Mux
rd1wreg
C
D
RegWrite
rd2wd
rreg2
rreg1
-
九州大学工学部電気情報工学科(2006年度)
部品の準備(ALU)
信号の意味 入出力 信号名 ビット幅
演算対象となる入力オペランド 入力 a 32
演算対象となる入力オペランド 入力 b 32
演算結果出力 出力 y 32
ゼロ判定(結果が 0 のときに 1) 出力 zero 1
ALU制御(000: AND,001: OR,010: +,110: –,111: slt)
入力 ALUctrl 3
ALU:指定された算術論理演算を実行
アドレス
命令
書込みデータ
レジスタ番号
レジスタ番号
レジスタ番号
読出しデータ
読出しデータ
書込みデータ
アドレス
読出しデータ
命令メモリPC
レジスタファイル
データメモリ
ALU
アドレス
命令
書込みデータ
レジスタ番号
レジスタ番号
レジスタ番号
読出しデータ
読出しデータ
書込みデータ
アドレス
読出しデータ
命令メモリPC
レジスタファイル
データメモリ
ALU
32
3232
3
yzero
ALUctrl
ALU
a
b
-
九州大学工学部電気情報工学科(2006年度)
プログラムカウンタ周りの設計
プログラムカウンタ(PC): 次に実行する命令の番地を記憶
PC 命令メモリ
+
命令を実行するたびに PC を更新分岐命令以外: 次の命令 PC ← PC + 4分岐命令の場合:
分岐条件成立時: PC ← 分岐先命令の番地分岐条件非成立時: 次の命令 PC ← PC + 4
4
3232
-
九州大学工学部電気情報工学科(2006年度)
算術論理演算命令用データパスの設計(1)
op rs rt rd shamt functR形式
命令 op rs rt rd shamt funct
add $○, $△, $□ 000000 $△ $□ $○ 00000 100000
sub $○, $△, $□ 000000 $△ $□ $○ 00000 100010
slt $○, $△, $□ 000000 $△ $□ $○ 00000 101010
and $○, $△, $□ 000000 $△ $□ $○ 00000 100100
or $○, $△, $□ 000000 $△ $□ $○ 00000 100101
6bit 5bit 5bit 5bit 5bit 6bit
-
九州大学工学部電気情報工学科(2006年度)
op rs functrt rd shamt31 26 25 21 20 1615 1110 6 5 0
算術論理演算命令用データパスの設計(2)
レジスタファイル
命令メモリ
+4
25-2120-16
15-11
RegWrite
inst
rreg1rreg2
wreg
wd
rd1
rd2
ALUctrl
yadrs
a
bPC
ALU
命令区分 命令の内容 例 意味
算術論理演算add, sub, and, or, slt
add $s1, $s2, $s3 $s1 = $s2 + $s3
-
九州大学工学部電気情報工学科(2006年度)
lw/sw命令用データパスの設計(1)
命令 op rs rt address/immediatelw $○, n($△) 100011 $△ $○ nsw $○, n($△) 101011 $△ $○ n
op rs rt address/immediate
6bit 5bit 5bit 16bit
I形式
-
九州大学工学部電気情報工学科(2006年度)
lw/sw命令用データパスの設計(2)
op rs Offsetrt
31 26 25 21 20 1615 0
lwの場合
データメモリ
符号拡張
+4
MemRead MemWrite
adrsレジスタファイル
RegWrite
rreg1rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-2120-16
inst
a
15-0
badrs
wd rd
yPC
ALU
3216
命令区分 命令の内容 例 意味
データ転送 ロードワード lw $s1, 100($s2) $s1に,メモリの[$s2+100]番地のワードデータを読込み
-
九州大学工学部電気情報工学科(2006年度)
lw/sw命令用データパスの設計(3)
op rs Offsetrt
31 26 25 21 20 1615 0
swの場合
データメモリ
符号拡張
+4
MemRead MemWrite
adrsレジスタファイル
RegWrite
rreg1rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-2120-16
inst
a
15-0
badrs
wd rd
yPC
ALU
16 32
命令区分 命令の内容 例 意味
データ転送 ストアワード sw $s1, 100($s2) メモリの[$s2+100]番地に,$s1のワードデータを書込み
-
九州大学工学部電気情報工学科(2006年度)
beq 命令用データパスの設計(1)PC相対アドレッシング: beq, bne 命令の分岐先番地
PC
op rs rt addressI形式
address を符号拡張
+
分岐先(Label の番地)
00
00
00
整列化制約: 命令の番地は常に4の倍数.
-
九州大学工学部電気情報工学科(2006年度)
beq 命令用データパスの設計(2)
op rs Offsetrt
31 26 25 21 20 1615 0
符号拡張
+4
adrsレジスタファイル
RegWrite
rreg1rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-2120-16
inst
a
15-0
b
+2bit左シフト
zero
ALU
PC
16 32
命令区分 命令の内容 例 意味
分岐 条件付 beq $s1, $s2, L もし、$s1==$s2ならラベルLへ分岐
-
九州大学工学部電気情報工学科(2006年度)
レジスタファイル
命令メモリ
+4
25-2120-16
15-11
RegWrite
inst
rreg1rreg2
wreg
wd
rd1
rd2
ALUctrl
yadrs
a
bPC
ALU
レジスタファイル
命令メモリ
+4
25-2120-16
15-11
RegWrite
inst
rreg1rreg2
wreg
wd
rd1
rd2
ALUctrl
yadrs
a
bPC
ALU
各命令用のデータパスadd, sub, and,
or, sltlw
sw
beq
データメモリ
符号拡張
+4
MemRead MemWrite
adrsレジスタファイル
RegWrite
rreg1rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-2120-16
inst
a
15-0
badrs
wd rd
yPC
ALU
3216
データメモリ
符号拡張
+4
MemRead MemWrite
adrsレジスタファイル
RegWrite
rreg1rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-2120-16
inst
a
15-0
badrs
wd rd
yPC
ALU
3216
データメモリ
符号拡張
+4
MemRead MemWrite
adrsレジスタファイル
RegWrite
rreg1rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-2120-16
inst
a
15-0
badrs
wd rd
yPC
ALU
16 32
データメモリ
符号拡張
+4
MemRead MemWrite
adrsレジスタファイル
RegWrite
rreg1rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-2120-16
inst
a
15-0
badrs
wd rd
yPC
ALU
16 32
符号拡張
+4
adrsレジスタファイル
RegWrite
rreg1rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-2120-16
inst
a
15-0
b
+2bit左シフト
zero
ALU
PC
16 32符号拡張
+4
adrsレジスタファイル
RegWrite
rreg1rreg2
wreg
wd
rd1
rd2
ALUctrl
命令メモリ
25-2120-16
inst
a
15-0
b
+2bit左シフト
zero
ALU
PC
16 32
-
九州大学工学部電気情報工学科(2006年度)
データパスの統合
+
+4
25-2120-16
15-11
2bit左シフト
ALU
レジスタファイル
符号拡張
命令メモリPC adrs inst
15-0
データメモリ
adrs
wd rd
a
b
zerorreg1rreg2
wreg
wd
rd1
rd2
ALUctrl
RegWrite
MemRead MemWrite
16 32
y
マルチプレクサ(選択回路)
データパスの構築Ⅰ�~シングルサイクル・データパス~プロセッサの構成:データパスと制御命令実行の基本動作命令実行の基本動作(add命令)命令実行の基本動作(lw命令)各命令実行で必要な処理データパスの概観部品の準備(命令メモリ)部品の準備(データメモリ)部品の準備(レジスタファイル 1/2)部品の準備(レジスタファイル 2/2)部品の準備(ALU)プログラムカウンタ周りの設計算術論理演算命令用データパスの設計(1)算術論理演算命令用データパスの設計(2)lw/sw命令用データパスの設計(1)lw/sw命令用データパスの設計(2)lw/sw命令用データパスの設計(3)beq 命令用データパスの設計(1)beq 命令用データパスの設計(2)各命令用のデータパスデータパスの統合