• 検索結果がありません。

chapter 6 最近の更新履歴 Hideo Fujiwara

N/A
N/A
Protected

Academic year: 2018

シェア "chapter 6 最近の更新履歴 Hideo Fujiwara"

Copied!
38
0
0

読み込み中.... (全文を見る)

全文

(1)

第6章 高位合成

2

6.1 高位合成の流れ

(2)

3

6.1 高位合成の流れ

与えられた動作記述を コントロール/データフローグラフ

(CDFG, Control/Data-Flow Graph)で表現

CDFG(Control/Data-Flow Graph) 生成

(3)

5

スケジューリング

CDFGに現れる各演算操作を

どの時刻に実行するかのスケジュールを決める 各時刻に演算操作を割り当てることを

スケジューリングという 時刻: クロックサイクル      コントロールステップ

制約と最適化の目標を決め 与えられた制約のもとで 最適なスケジュールを求める

制約や最適化の目標: 時間(コントロールステップ数)

面積(演算器の個数)

6

スケジューリング

ALAPスケジューリングでは 乗算器が2個に減るが加算器は2個必要 ASAPスケジューリングでは

乗算器が3個必要

(4)

7

バインディング

バインディングは

スケジューリングされたCDFGに現れる 各演算操作や変数に

具体的な演算器やレジスタ、メモリを 割り当てる処理

バインディング

(5)

9

バインディング

3つのレジスタが必要 レジスタR1, R2, R3

R1: h1, h5 R2: h2, h4 R3: h3

10

バインディング

(6)

11

RTL 回路記述生成

マルチプレクサ方式かバス方式により 割り当てられた演算器やレジスタ間の結線を実現

これによりデータパスが生成

生成されたデータパスで CDFGの動作を実現するために 制御信号を生成するコントローラを生成

RTL 回路記述生成

マルチプレクサ方式により 演算器やレジスタ間の結線を実現

これによりデータパスが生成

(7)

13

RTL 回路記述生成

生成されたデータパスで CDFGの動作を実現するために 制御信号を生成するコントローラを生成

14

6.2 コントロール/データフローグラフ

(8)

15

6.2 コントロール/データフローグラフ

6.3 スケジューリング

 スケジューリングを行うにあたって CDFGに現れる演算を実現するために どのような種類の演算器をどれだけ使うかを決める

加算については加算器か加減算器かALUか 乗算については並列乗算器かパイプライン乗算器か またそれらのビット幅、処理速度(遅延時間)、面積、等々を含み

演算器の種類とその個数を選ぶ

(9)

17

6.3 スケジューリング

18

6.3 スケジューリング

 リソースライブラリから 遅延時間が6 nsで処理できる加算器と

16 nsの乗算器を選んだとする

演算器の遅延時間以外の遅延時間

(バス、マルチプレクサ、レジスタの遅延時間) を考慮して

1クロックサイクルで加算や乗算を完了するために 1クロックサイクルを20 nsに設定したとする

(10)

19

ASAP   ALAP

まず、加算器や乗算器の個数などの 制約なしでスケジューリングすることを考える

考慮しないといけないのは

CDFGに示された演算の順序の依存関係だけ

できるものから先に処理する ASAP (As Soon As Possible)スケジューリング

できるだけ後に処理する

ALAP(As Late As Possible)スケジューリング

ASAP スケジューリング

(11)

21

ALAP スケジューリング

22

ASAP vs. ALAP

ALAPスケジューリングでは 乗算器が2個に減るが加算器は2個必要

最小のクロックサイクル数3で実現 1クロックサイクルが 20 nsなので全体で60 ns ただ、演算器を多く使うため面積が大きくなる

ASAPスケジューリングでは 乗算器が3個必要

(12)

23

面積制約(1乗算器、1加算器)

乗算器を1個、加算器を1個 という制約を考え 最小のクロックサイクル数の

スケジューリング

4クロックサイクルとなり 1クロックサイクル増える

面積を最小にしているが 全体の時間は 80 nsと長くなる

面積制約(2乗算器、1加算器)

制約を変えて 乗算器を2個、加算器を1個

の制約のもとで 時間最小のスケジュール

クロックサイクル数が3と減り ALAPより加算器が一つ減る

(13)

25

多サイクル演算、制約(1乗算器、1加算器)

複数のクロックサイクルに またがって実行する演算を 多サイクル(multi-cycle)演算

1クロックサイクルを 10 ns とすると

乗算器1個,加算器1個 という制約のもとで 時間最小のスケジュール

乗算は2クロックサイクル

演算器数が最小

時間は8クロックサイクル 80 ns

26

多サイクル演算、制約(2乗算器、1加算器)

1クロックサイクル10 ns 乗算器2個、加算器1個

の制約のもとで 時間最小のスケジュール

5クロックサイクル 全体の時間は50 ns

これまで考えた中で 時間最小の 最もパフォーマンスが良い

スケジュール

(14)

27

比較、制約(2乗算器、1加算器)

制約(乗算器2個、加算器1個) 1クロックサイクル:2ns

クロックサイクル数:3 全体の時間:60ns

制約(乗算器2個、加算器1個) 1クロックサイクル:1ns

クロックサイクル数:5 全体の時間:50ns 多サイクル演算を考えることで、同じ面積制約でもより短い時間の スケジュールを求めることができる

チェイニング

多サイクル演算ではクロックサイクル時間を短縮し 一つの演算を複数のクロックに渡って実行するのに対して

反対に、クロックサイクル時間を延ばし 1クロックサイクル内に複数の演算を連続して実行する

チェイニング(chaining)

(15)

29

演習問題

つぎの動作記述のDFGに対して

y = ((a*b)+c)+(d*e)-(f+g)

つぎの各制約のもとでスケジューリングを行え (1) 乗算器1個、加減算器1個

すべての演算は1時刻で実行可能 (2) 乗算器1個、加算器2個、減算器1個

乗算器は実行に2時刻かかるマルチサイクル演算 (3) 乗算器2個、加算器1個、減算器1個

乗算器は実行に2時刻かかるマルチサイクル演算

30

演習問題1((1)解答例)

y = ((a*b)+c)+(d*e)-(f+g)

(1) 乗算器1個、加減算器1個    すべての演算は1時刻で実行可能

1クロックサイクル20 ns 4サイクル  80ns

*

a b

+

+ c d e f g

y +

*

(16)

31

演習問題1((2)解答例1)

y = ((a*b)+c)+(d*e)-(f+g)

(2) 乗算器1個、加算器2個、減算器1個

  乗算器は実行に2時刻かかるマルチサイクル演算

1クロックサイクル10 ns 6サイクル 60ns

*

a b

+

+

*

c d e f g

y +

演習問題1((2)解答例2)

y = ((a*b)+c)+(d*e)-(f+g) = ((a*b)+(c+((d*e)-(f+g)))

(2) 乗算器1個、加算器2個、減算器1個

  乗算器は実行に2時刻かかるマルチサイクル演算

1クロックサイクル10 ns 5サイクル 50ns

a b

+

*

c d e f g

(17)

33

演習問題1((2)解答例3)

y = ((a*b)+c)+(d*e)-(f+g) = ((a*b)+c)-(f+g)+(d*e)

(2) 乗算器1個、加算器2個、減算器1個

  乗算器は実行に2時刻かかるマルチサイクル演算

1クロックサイクル10 ns 5サイクル 50ns

*

a b

+

+

+

*

c f g d e

y

34

演習問題1((3)解答例)

y = ((a*b)+c)+(d*e)-(f+g)

(3) 乗算器2個、加算器1個、減算器1個

   乗算器は実行に2時刻かかるマルチサイクル演算

1クロックサイクル10 ns 4サイクル 40ns

*

a b

+

+

+

*

c d e f g

y

(18)

35

6.4 バインディング

演算に必要な入力データは その演算が行われている間その値を保持し

その演算結果の値は

そのクロックサイクルの終了時まで保持する必要がある

これらの値の保持は

レジスタやメモリ(1ポートメモリか2ポートメモリ) などの記憶回路で行う

CDFGにおいて

演算に使われる入力や演算結果を変数で表し そのような変数の値を保持する記憶回路の

種類とその個数を決める処理を レジスタ(メモリ)アロケーションという

スケジュールされたDFG

(19)

37

レジスタのライフタイム

38

レジスタのバインディング

同じ時刻では

一つのレジスタには一つの内部変数 しか割り当てることができない

少なくとも3つのレジスタが必要 レジスタR1, R2, R3

R1: h1, h5 R2: h2, h4 R3: h3

(20)

39

演算器のバインディング

スケジュールされた各演算に リソースアロケーションで選択した

演算器を割り当てる

(バインディング1) 乗算器1(*1): op1, op3 乗算器2(*2): op2, op4

(バインディング2) 乗算器1(*1): op1, op4 乗算器2(*2): op2, op3

演算器のバインディング

(21)

41

データパスの構成

バインディングした レジスタR1, R2, R3 および

乗算器1、乗算器2、 加算器を配置

42

データパスの構成

レジスタ、演算器 および 入力a, b, c, d, e, f

出力x, yの間の 接続関係を スケジュールされたDFG

とバインディング情報 から求める つづいて

まず  乗算器1について 接続関係を求める

(22)

43

R1: h1, h5

乗算器1の接続関係

乗算器1:左入力(a, e)、右入力(b, f)、 出力(R1

スケジュールされたDFG

演算器バインディング レジスタバインディング

データパスの構成

データパスの構成

乗算器1: 左入力(a, e)、右入力(b, f)、出力(R1

(23)

45

データパスの構成

つづいて

乗算器2について 接続関係を求める

46

R2: h2, h4

乗算器2の接続関係

乗算器2:左入力(c)、右入力(d, h3)、 出力(R2

スケジュールされたDFG

データパスの構成

演算器バインディング レジスタバインディング

(24)

47

乗算器2: 左入力(c)、右入力(d, R3)、出力(R2)

データパスの構成

R2: h2, h4 R3: h3 h3 = R3

データパスの構成

つづいて

加算器について 接続関係を求める

(25)

49

レジスタバインディング     R1: h1, h5     R2: h2, h4     R3: h3

スケジュールされたDFG

データパスの構成

左入力(a, h1, h5) = (a, R1) 右入力(b, h2, h4) = (b, R2) 出力(h4, h3) = (R2, R3)

左入力(a, h1, h4) = (a, R1, R2) 右入力(b, h2, h5) = (b, R2, R1)) 出力(h4, h3) = (R2, R3)

50

加算器:  左入力(a, R1) 右入力(b, R2) 出力(R2, R3)

データパスの構成

(26)

51

したがって、

乗算器1: 左入力(a, e)、右入力(b, f)、出力(R1 乗算器2: 左入力(c)、右入力(d, R3)、出力(R2) 加算器: 左入力(a, R1)、右入力(b, R2)、出力(R2, R3)

が求まる

次に各レジスタについて接続関係を求める

データパスの構成

レジスタバインディング     R1: h1, h5     R2: h2, h4     R3: h3

データパスの構成

R1:入力(乗算器1(op1,op3)) 出力(加算器左入力(h1,h5))

(27)

53

レジスタバインディング     R1: h1, h5     R2: h2, h4     R3: h3

データパスの構成

R1:入力(乗算器1(op1,op3)) 出力(加算器左入力(h1,h5))

R2:入力(乗算器2(op2), 加算器) 出力(加算器右入力(h2,h4), y)

54

レジスタバインディング     R1: h1, h5     R2: h2, h4     R3: h3

データパスの構成

R1:入力(乗算器1(op1,op3)) 出力(加算器左入力(h1,h5))

R2:入力(乗算器2(op2), 加算器) 出力(加算器右入力(h2,h4), y)

R3:入力(加算器)

出力(乗算器右入力(h3)、x)

(28)

55

データパスの構成

R1:入力(乗算器1) 出力(加算器左入力)

R2:入力(乗算器2, 加算器) 出力(加算器右入力, y)

R3:入力(加算器)

出力(乗算器右入力, x)

データパスの構成

(29)

57

コントローラの構成

コントローラは データパス内の マルチプレクサやレジスタへの

制御信号を発生するFSM として設計

マルチプレクサへの制御信号を m1, m2, m3, m4

レジスタに値を取り込む制御信号を r1, r2, r3

58

コントローラの構成

時刻1(状態S1)でのマルチプレクサへの制御信号は m1=0, m2=0とし、他はドントケアとなる

(30)

59

コントローラの構成

時刻1(状態S1)でのマルチプレクサへの制御信号は m1=0, m2=0とし、他はドントケアとなる

コントローラの構成

(31)

61

コントローラの構成

時刻2(状態S2)でのマルチプレクサへの制御信号は m1=0, m2=0を保持し、レジスタR1, R2に演算結果を 取り込むために、r1=1, r2=1m4=0, r1=1, r2=1

62

コントローラの構成

時刻3(状態S3)でのマルチプレクサへの制御信号は レジスタR1, R2の値を保持するために、r1=0, r2=0 乗算器の入力にe, fを選ぶために、m1=1,

加算器の入力にa,bを選ぶためにm3=0, 加算結果をR3に取り込むために、r3=1

(32)

63

コントローラの構成

時刻3(状態S3)でのマルチプレクサへの制御信号は レジスタR1, R2の値を保持するために、r1=0, r2=0 乗算器の入力にe, fを選ぶために、m1=1,

加算器の入力にa,bを選ぶためにm3=0, 加算結果をR3に取り込むために、r3=1

コントローラの構成

(33)

65

演習問題2

つぎの動作記述のDFGに対して

y = ((a*b)+c)+(d*e)-(f+g)

つぎの制約のもとで得られたスケジュールに対して、バインディングを行い、 データパスとコントローラを生成せよ。

(1) 乗算器1個、加減算器1個   すべての演算は1時刻で実行可能

66

演習問題2

y = ((a*b)+c)+(d*e)-(f+g)

スケジュール結果(乗算器1個、加減算器1個)

バインディングを行い、データパスとコントローラを生成せよ。

(34)

67

演習問題2((1)解答)

演習問題2((1)解答)

(35)

69

演習問題2((1)解答)

70

演習問題2((1)解答)

(36)

71

演習問題2((1)解答)

演習問題2((1)解答)

(37)

73

GCD の高位合成

74

GCD の高位合成例1

(38)

75

GCD の高位合成例2

参照

関連したドキュメント

ダラの全体の数を四一とすることが多い︵表2︶︒アバャーカラグブタ自身は﹃ヴァジュラーヴァリー﹄の中でマ

さらに、NSCs に対して ERGO を短時間曝露すると、12 時間で NT5 mRNA の発現が有意に 増加し、 24 時間で Math1 の発現が増加した。曝露後 24

 基本波を用いる近似はピクセル単位の時間放射能曲線に対しては用いることができる

災害発生当日、被災者は、定時の午後 5 時から 2 時間程度の残業を命じられ、定時までの作業と同

凡例及び面積 全体敷地 2,800㎡面積 土地の形質の変更をしよ うとする場所 1,050㎡面積 うち掘削を行う場所

近年は人がサルを追い払うこと は少なく、次第に個体数が増える と同時に、分裂によって群れの数

その限りで同時に︑安全配慮義務の履行としては単に使

消費電力の大きい家電製品は、冬は平日午後 5~6 時前後での同時使用は控える