ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回...

44
1 ハード/ソフト・コデザインの基礎 第8回 神原弘之 京都高度技術研究所(ASTEM RI) http://www.metsa.astem.or.jp/RUECHIP2/

Upload: others

Post on 10-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

1

ハード/ソフト・コデザインの基礎

第8回

神原弘之

京都高度技術研究所(ASTEM RI)

http://www.metsa.astem.or.jp/RUECHIP2/

Page 2: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

2

これまでの講義

❚ 第1回  イントロダクション

❚ 第2回  プロセッサとは?プログラムとは

❚ 第3回  プロセッサ(MIPS)の命令の解説

❚ 第4回  プロセッサ(MIPS)の命令の解説(つづき)❚ 第5回  2進数による数値の表現と四則演算

❙ 加算、減算、乗算

❚ 第6回  ソフトウェアの高速実行化(パイプライン)

❚ 第7回  ソフトウェアの高速実行化(ハザード)

Page 3: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

3

今日とこれからの講義

❚ 第8回  前回の復習

        乗算のハードウェア化による高速化

        レポート

❚ 第9回  高位合成について(イントロダクション)

Page 4: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

4

ソフトウェアの高速実行化(データハザード)

前回の復習

❚ データハザード

❙  フォワーディングによる解決

❙  ロード遅延スロット

❙  分岐遅延スロット

Page 5: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

5

データハザードとは?

IF

ID $1,$2

EX

MEM

WB $3 add $3, $1, $2

sub $11, $3, $4

;❚ ある命令の実行によるレジスタの値の更新が

 後続する命令のレジスタ参照に間に合わない

IF

ID $3,$4

EX

MEM

WB $11

IF

ID

EX

MEM

WB

Page 6: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

6

ID ステージ EX ステージ WB ステージMEM ステージ

「 add $3,$1,$2 」 「sub $6, $3, $4 」の実行 (フォワーディングなし、データハザード発生)

データメモリDmem[ ]

命令メモリ

Imem[ ]

ALU MUX

$0 0 $1 2 $2 3 $3 ? : : : $31

C

SMD

B

A ALUout

PC 8

DAR 2

PC 12

LMD 3

$0 0 $1 2 $2 3 $3 5 : : : $31

Imm

IF ステージadd $3,$1,$2 add $3,$1,$2 sub $5,$3,$4 add $3,$1,$2 sub $5,$3,$4

IR add

A 2

B 3

ALUout 5 ALU

PC 16

IR sub add IR

PC 20

add $3,$1,$2 sub $5,$3,$4 add $3,$1,$2 sub $5,$3,$4

C 5

add add sub sub

Page 7: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

7

ソフトウェアの高速実行化(データハザード)

前回の復習

❚ データハザード

❙  フォワーディングによる解決

❙  ロード遅延スロット

❙  分岐遅延スロット

Page 8: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

8

データハザードの解消方法

IF

ID $1,$2

EX +

MEM

WB $3 add $3, $1, $2

sub $11, $3, $4

;

❚  フォワーディング(バイパシング)

❙  (WBステージでの)レジスタへの書き込みを待たずに

 パイプラインの途中の演算結果を利用する方法

IF

ID $3,$4

EX

MEM

WB $11

IF

ID

EX

MEM

WB $11

Page 9: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

9

データハザードの解消方法(つづき)

IF

ID $1,$2

EX +

MEM

WB $3 add $3, $1, $2

sub $11, $3, $4

;

❚  フォワーディング(バイパシング)

❙  (WBステージでの)レジスタへの書き込みを待たずに

 パイプラインの途中の演算結果を利用する方法

IF

$3,$4

EX

MEM

WB $11

IF

ID

EX

MEM

WB

Page 10: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

10

データハザードの解消方法(つづき)

IF

ID $1,$2

EX +

MEM

WB $3 add $3, $1, $2

sub $11, $3, $4

;

❚  フォワーディング(バイパシング)

❙  (WBステージでの)レジスタへの書き込みを待たずに

 パイプラインの途中の演算結果を利用する方法

IF

$3,$4

MEM

WB $11

IF

ID

EX

MEM

WB

Page 11: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

11

データハザードの解消方法(つづき)

IF

ID $1,$2

EX +

MEM

WB $3 add $3, $1, $2

sub $11, $3, $4

;

❚  フォワーディング(バイパシング)

❙  (WBステージでの)レジスタへの書き込みを待たずに

 パイプラインの途中の演算結果を利用する方法

IF

$3,$4

WB $11

IF

ID

EX

MEM

WB

Page 12: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

12

ID ステージ EX ステージ WB ステージMEM ステージ

「 add $3,$1,$2 」 「sub $6, $3, $4 」の実行 (フォワーディングによるハザードの回避)

データメモリDmem[ ]

命令メモリ

Imem[ ]

ALU MUX

$0 0 $1 2 $2 3 $3 ? : : : $31

C

SMD

B

A ALUout

DAR 2

LMD 3

Imm

IF ステージadd $3,$1,$2 add $3,$1,$2 sub $5,$3,$4 add $3,$1,$2 sub $5,$3,$4

A 2

B 3

ALUout 5 +

add

PC

add sub add IR sub

A 5

Page 13: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

13

IF ステージ add $3,$1,$2 nop sub $5,$3,$4

WB ステージ

「 add $3,$1,$2 」 「nop」 「sub $6, $3, $4 」の実行 (フォワーディングによるハザードの回避)

データメモリDmem[ ]

命令メモリ

Imem[ ]

ALU MUX

$0 0 $1 2 $2 3 $3 ? : : : $31

C

SMD

B

A ALUout

PC

DAR 2

LMD 3

$0 0 $1 2 $2 3 $3 5 : : : $31

Imm

A 2

B 3

ALUout 5 ALU

IR sub

C 5

add nop

A 5

MEM ステージ

Page 14: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

14

add $3,$1,$2 nop nop sub $5, $3, $4

「 add $3,$1,$2 」 「nop」 「nop」 「sub $6, $3, $4 」の実行(フォワーディングによるハザードの回避)

データメモリDmem[ ]

命令メモリ

Imem[ ]

MUX

$0 0 $1 2 $2 3 $3 ? : : : $31

C

SMD

B

A ALUout

PC

DAR 2

LMD 3

$0 0 $1 2 $2 3 $3 5 : : : $31

Imm

A 2

B 3

ALUout 5 ALU

add add sub

C 5

add add sub nop nop IR sub

A 5

WB ステージ

Page 15: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

15

ソフトウェアの高速実行化(データハザード)

前回の復習

❚ データハザード

❙  フォワーディングによる解決

❙  ロード遅延スロット

❙  分岐遅延スロット

Page 16: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

16

ロード遅延スロットとは

(パイプラインでフォワーディングを行っても)

❚ ロード命令の直後の命令は(直前の)ロード命令でレジスタに読み込まれた値を参照できない

❚ ロード遅延スロットと呼ぶ

(解決方法は)

❚ ロード命令の実行に影響を与えない命令を    ロード遅延スロットに挿入する

Page 17: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

17

DAR

ID ステージ EX ステージ WB ステージMEM ステージ

「 lw $3, 0($1) 」 「sub $6, $3, $4 」の実行 (フォワーディングしたがハザードは発生)

データメモリDmem[ ]

命令メモリ

Imem[ ]

MUX

$0 0 $1 2 $2 3 $3 ? : : : $31

C

SMD

B

ALUout

LMD 3

Imm

IF ステージadd $3,$1,$2 add $3,$1,$2 sub $5,$3,$4 lw $3, 0($1) sub $5,$3,$4

IR

A

B

PC

lw IR sub

DAR

+

Page 18: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

18

IF ステージ MEM ステージlw $3, 0($1) nop sub $5,$3,$4 WB ステージ

「 lw $3, 0($1) 」 「nop」 「sub $6, $3, $4 」の実行 (ロード遅延スロットへの nop 命令挿入によるハザードの回避)

データメモリDmem[ ]

命令メモリ

Imem[ ]

ALU MUX

$0 0 $1 2 $2 3 $3 ? : : : $31

C

SMD

B

ALUout

PC

DAR

LMD 3

$0 0 $1 2 $2 3 $3 5 : : : $31

Imm

A ALUout

IR IR sub lw nop

Page 19: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

19

ソフトウェアの高速実行化(データハザード)

前回の復習

❚ データハザード

❙  フォワーディングによる解決

❙  ロード遅延スロット

❙  分岐遅延スロット

Page 20: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

20

分岐遅延スロットとは

(パイプラインでフォワーディングを行っても)

❚ 分岐命令の直後の命令は実行されてしまう

❚ 1命令の遅れで分岐 → 遅延分岐(Delayed Branch)

❚ 分岐遅延スロットと呼ぶ

(解決方法は)

❚ 分岐命令の実行に影響を与えない命令を     分岐遅延スロットに挿入する

Page 21: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

21

本日の講義

前回の復習

❚ データハザード

❙  ロード遅延スロット

❙  分岐遅延スロット

❚ 乗算のハードウェアによる高速化について

❚ レポートについて

Page 22: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

22

0 0 1 1 1 1

2進数の乗算その1

310×510は?(10進数での3×5) 符号ビットを除く

0 1 1 × 1 0 1

    0 0 1 1 0 0 0 0

+) 0 0 1 1

被乗数  乗数

Page 23: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

23

2進数の乗算その1(つづき)

a2 a1 a0

 × b2 b1 b0

p02 p01 p00

pij = bi ・ aj

p12 p11 p10

+) p22 p21 p20

m5 m4 m3 m2 m1 m0

pij を部分積と呼ぶ

pij はajと biの論理積

部分積の和が積

Page 24: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

24

0 0 0 1 0 1

2進数の乗算その2 (Booth)

310×510は?(10進数での3×2) 符号ビットを除く

0 1 1

+

0 1 1 1 0 1  加算 0 0 1 1 1 0  右シフト0 0 1 1 1 0  なし0 0 0 1 1 1  右シフト0 1 1 1 1 1  加算 0 0 1 1 1 1  右シフトP B

A A に被乗数をセットB に  乗数をセットP は   0をセット

P に積の上位ビットB に積の下位ビット  

Page 25: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

25

2進数の乗算その2(Booth つづき)

B の最下位ビットP = P + A 

(P, B ) を1ビット右シフト

繰り返し回数

1 0

A に被乗数、B に乗数、P を0にセット

n

n 未満

(P, B ) に積

Page 26: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

26

2進数の乗算その2(Booth つづき)

310×510は?(10進数での3×2) 符号ビットを除く

 011 000 101 A 被乗数  P   B 乗数

  011 011 101P =P +A

  011 001 110(P, B) を右に1ビットシフト

P はそのまま

011 000 111011 011 111

(P, B ) を右に1ビットシフト

  011 001 110

P =P +A

(P, B) を右に1ビットシフト 011 001 111

A に被乗数、B に乗数、P を0にセット

Page 27: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

27

本日の講義

前回の復習

❚ データハザード

❙  ロード遅延スロット

❙  分岐遅延スロット

❚ 乗算のハードウェアによる高速化について

❚ レポートについて

Page 28: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

28

2進数の乗算その3(配列型乗算器)

入力が2つのn ビット幅2進数の時

❚ 回路の規模:FA(Full Adder) が n2 に比例

❚ 回路の段数: FA(Full Adder) が n 段

❚ 構造が単純で規則正しい(LSI で実現しやすい)

Page 29: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

29

2進数の乗算その3(配列型乗算器つづき)

m5 m4 m3 m2 m1 m0

a2・b0 a1・b0 a0・b0

a1・b1 a0・b1

a2・b1

a1・b2 a0・b2

a2・b2

0

0 0

FA FA

FAFA

FA FA

a Cin b

Cout s

FA

Page 30: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

30

2進数(2の補数)の加算 (おさらい)

Full Adder:全加算器とは

a b cin cout s

0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

0 00 10 11 00 11 01 01 1

a Cin b

Cout s

FA

Page 31: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

31

2進数の乗算その4(Wallace Tree)

m5 m4 m3 m2 m1 m0

               0 a2・b0 a1・b0 a0・b0  a2・b1 a1・b1 a0・b1

0

a2・b2      a1・b2 a0・b2 0

FA FA

FA

FA FAFA

FA

Carry Look-Ahead Adder 0

0

a Cin b

Cout s

FA

Page 32: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

32

2進数の乗算その4(Wallace Tree)

入力が2つのn ビット幅2進数の時

❚ 回路の規模:FA(Full Adder) が n2 に比例

❚ 回路の段数: FA(Full Adder) が (log n) 段に比例

❚ 配線が複雑になる(LSI で実現しにくい)

Page 33: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

33

本日の講義

前回の復習

❚ データハザード

❙  ロード遅延スロット

❙  分岐遅延スロット

❚ 乗算のハードウェアによる高速化について

❚ レポートについて

Page 34: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

34

レポートについて

締切

❚  11月29日(火)の本講義(の終了前まで)、紙で提出

フォーマット (Microsoft Word2000 形式)

❚  http://www.metsa.astem.or.jp/codesign/report08.doc

手書き

❚  本日配布資料に記入して、提出

Page 35: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

35

レポートの課題

課題1

❚  以下のCプログラムを MIPS のアセンブリ記述プログラムに変換してみよ

❚  for ( i=0; i<100; i = i +1) { a[i] = b[i] + c; }

Page 36: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

36

レポートの課題(つづき)

課題1 前提条件

❚  aと b は配列で、そのデータメモリ上の開始アドレスはそれぞれ 1000 と 2000 とする。

❚  変数 i は $2、変数 c は $3 を用いる。

❚  また、$4 には整数1、$5 には整数 100 が格納されているものとする

❚  ロード遅延スロットと分岐遅延スロットによるデータハザードについて、考慮すること。

Page 37: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

37

レポートの課題(つづき)

課題1 ヒント

❚ b[i] の参照は、以下のように変換される

(b[] は $6 を用いるとすると)

❚  lw $6, 2000($2)

Page 38: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

38

レポートの課題(つづき)

課題2 

❚  パイプライン化された MIPS プロセッサが「beq $1, $2, Label」命令を実行した際、直後の分岐スロットの命令は、分岐が発生する場合も発生しない場合も実行されることを図を用いて説明せよ。

❚  (IF ステージと ID ステージのレジスタのデータのやり取りを図で説明すること)

Page 39: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

39

Page 40: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

40

Page 41: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

41

レポートの課題(つづき)課題3

❚  Sony Computer Entertainment 社のゲーム機:      PS、PS2、PSP、PS3について、各機種で用いられているプロセッサについて調べ、(機種間のプロセッサの)共通点、相違点、互換性、(世代交代で)強化された機能、について述べよ

Page 42: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

42

レポートの課題(つづき)

課題3 のヒント

❚  Google などのインターネット検索エンジン

❚  日経エレクトロニクスの過去数年間の記事

Page 43: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

43

レポートの課題(つづき)

課題4 Wallace Tree を用いて乗算器を構成する方法について調査を行い、

❚  ❚  課題4.1 Wallace Tree で乗算器を構成する方法を述べよ

❚  ❚  課題4.2 2つの5ビット幅の2進数を入力とする Wallace

Tree を用いた乗算器を設計して(FAを用いた)回路図で示すこと

Page 44: ハード/ソフト・コデザインの基礎 第8回...2 これまでの講義 第1回 イントロダクション 第2回 プロセッサとは?プログラムとは 第3回

44

レポートの課題(つづき)

課題4 ヒント

❚  インターネット上で Wallace Tree もしくは Wallace木で検索

❚  情報処理学会誌 1996年1月号、2月号を参考にする