データパスの構築Ⅰ...

22
データパスの構築Ⅰ ~シングルサイクル・データパス~ (教科書5.15.3節)

Upload: others

Post on 19-Feb-2021

0 views

Category:

Documents


0 download

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)各命令用のデータパスデータパスの統合