第6章 高位合成
2
6.1 高位合成の流れ
3
6.1 高位合成の流れ
与えられた動作記述を コントロール/データフローグラフ
(CDFG, Control/Data-Flow Graph)で表現
CDFG(Control/Data-Flow Graph) 生成
5
スケジューリング
CDFGに現れる各演算操作を
どの時刻に実行するかのスケジュールを決める 各時刻に演算操作を割り当てることを
スケジューリングという 時刻: クロックサイクル コントロールステップ
制約と最適化の目標を決め 与えられた制約のもとで 最適なスケジュールを求める
制約や最適化の目標: 時間(コントロールステップ数)
面積(演算器の個数)
6
スケジューリング
ALAPスケジューリングでは 乗算器が2個に減るが加算器は2個必要 ASAPスケジューリングでは
乗算器が3個必要
7
バインディング
バインディングは
スケジューリングされたCDFGに現れる 各演算操作や変数に
具体的な演算器やレジスタ、メモリを 割り当てる処理
バインディング
9
バインディング
3つのレジスタが必要 レジスタR1, R2, R3
R1: h1, h5 R2: h2, h4 R3: h3
10
バインディング
11
RTL 回路記述生成
マルチプレクサ方式かバス方式により 割り当てられた演算器やレジスタ間の結線を実現
これによりデータパスが生成
生成されたデータパスで CDFGの動作を実現するために 制御信号を生成するコントローラを生成
RTL 回路記述生成
マルチプレクサ方式により 演算器やレジスタ間の結線を実現
これによりデータパスが生成
13
RTL 回路記述生成
生成されたデータパスで CDFGの動作を実現するために 制御信号を生成するコントローラを生成
14
6.2 コントロール/データフローグラフ
15
6.2 コントロール/データフローグラフ
6.3 スケジューリング
スケジューリングを行うにあたって CDFGに現れる演算を実現するために どのような種類の演算器をどれだけ使うかを決める
加算については加算器か加減算器かALUか 乗算については並列乗算器かパイプライン乗算器か またそれらのビット幅、処理速度(遅延時間)、面積、等々を含み
演算器の種類とその個数を選ぶ
17
6.3 スケジューリング
18
6.3 スケジューリング
リソースライブラリから 遅延時間が6 nsで処理できる加算器と
16 nsの乗算器を選んだとする
演算器の遅延時間以外の遅延時間
(バス、マルチプレクサ、レジスタの遅延時間) を考慮して
1クロックサイクルで加算や乗算を完了するために 1クロックサイクルを20 nsに設定したとする
19
ASAP ALAP
まず、加算器や乗算器の個数などの 制約なしでスケジューリングすることを考える
考慮しないといけないのは
CDFGに示された演算の順序の依存関係だけ
できるものから先に処理する ASAP (As Soon As Possible)スケジューリング
できるだけ後に処理する
ALAP(As Late As Possible)スケジューリング
ASAP スケジューリング
21
ALAP スケジューリング
22
ASAP vs. ALAP
ALAPスケジューリングでは 乗算器が2個に減るが加算器は2個必要
最小のクロックサイクル数3で実現 1クロックサイクルが 20 nsなので全体で60 ns ただ、演算器を多く使うため面積が大きくなる
ASAPスケジューリングでは 乗算器が3個必要
23
面積制約(1乗算器、1加算器)
乗算器を1個、加算器を1個 という制約を考え 最小のクロックサイクル数の
スケジューリング
4クロックサイクルとなり 1クロックサイクル増える
面積を最小にしているが 全体の時間は 80 nsと長くなる
面積制約(2乗算器、1加算器)
制約を変えて 乗算器を2個、加算器を1個
の制約のもとで 時間最小のスケジュール
クロックサイクル数が3と減り ALAPより加算器が一つ減る
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
これまで考えた中で 時間最小の 最もパフォーマンスが良い
スケジュール
27
比較、制約(2乗算器、1加算器)
制約(乗算器2個、加算器1個) 1クロックサイクル:20ns
クロックサイクル数:3 全体の時間:60ns
制約(乗算器2個、加算器1個) 1クロックサイクル:10ns
クロックサイクル数:5 全体の時間:50ns 多サイクル演算を考えることで、同じ面積制約でもより短い時間の スケジュールを求めることができる
チェイニング
多サイクル演算ではクロックサイクル時間を短縮し 一つの演算を複数のクロックに渡って実行するのに対して
反対に、クロックサイクル時間を延ばし 1クロックサイクル内に複数の演算を連続して実行する
チェイニング(chaining)
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 +
*
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
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
35
6.4 バインディング
演算に必要な入力データは その演算が行われている間その値を保持し
その演算結果の値は
そのクロックサイクルの終了時まで保持する必要がある
これらの値の保持は
レジスタやメモリ(1ポートメモリか2ポートメモリ) などの記憶回路で行う
CDFGにおいて
演算に使われる入力や演算結果を変数で表し そのような変数の値を保持する記憶回路の
種類とその個数を決める処理を レジスタ(メモリ)アロケーションという
スケジュールされたDFG
37
レジスタのライフタイム
38
レジスタのバインディング
同じ時刻では
一つのレジスタには一つの内部変数 しか割り当てることができない
少なくとも3つのレジスタが必要 レジスタR1, R2, R3
R1: h1, h5 R2: h2, h4 R3: h3
39
演算器のバインディング
スケジュールされた各演算に リソースアロケーションで選択した
演算器を割り当てる
(バインディング1) 乗算器1(*1): op1, op3 乗算器2(*2): op2, op4
(バインディング2) 乗算器1(*1): op1, op4 乗算器2(*2): op2, op3
演算器のバインディング
41
データパスの構成
バインディングした レジスタR1, R2, R3、 および
乗算器1、乗算器2、 加算器を配置
42
データパスの構成
レジスタ、演算器 および 入力a, b, c, d, e, f、
出力x, yの間の 接続関係を スケジュールされたDFG
とバインディング情報 から求める つづいて
まず 乗算器1について 接続関係を求める
43
R1: h1, h5
乗算器1の接続関係
乗算器1:左入力(a, e)、右入力(b, f)、 出力(R1)
スケジュールされたDFG
演算器バインディング レジスタバインディング
データパスの構成
データパスの構成
乗算器1: 左入力(a, e)、右入力(b, f)、出力(R1)
45
データパスの構成
つづいて
乗算器2について 接続関係を求める
46
R2: h2, h4
乗算器2の接続関係
乗算器2:左入力(c)、右入力(d, h3)、 出力(R2)
スケジュールされたDFG
データパスの構成
演算器バインディング レジスタバインディング
47
乗算器2: 左入力(c)、右入力(d, R3)、出力(R2)
データパスの構成
R2: h2, h4 R3: h3 h3 = R3
データパスの構成
つづいて
加算器について 接続関係を求める
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)
データパスの構成
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))
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)
55
データパスの構成
R1:入力(乗算器1) 出力(加算器左入力)
R2:入力(乗算器2, 加算器) 出力(加算器右入力, y)
R3:入力(加算器)
出力(乗算器右入力, x)
データパスの構成
57
コントローラの構成
コントローラは データパス内の マルチプレクサやレジスタへの
制御信号を発生するFSM として設計
マルチプレクサへの制御信号を m1, m2, m3, m4
レジスタに値を取り込む制御信号を r1, r2, r3
58
コントローラの構成
時刻1(状態S1)でのマルチプレクサへの制御信号は m1=0, m2=0とし、他はドントケアとなる
59
コントローラの構成
時刻1(状態S1)でのマルチプレクサへの制御信号は m1=0, m2=0とし、他はドントケアとなる
コントローラの構成
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
63
コントローラの構成
時刻3(状態S3)でのマルチプレクサへの制御信号は レジスタR1, R2の値を保持するために、r1=0, r2=0、 乗算器の入力にe, fを選ぶために、m1=1,
加算器の入力にa,bを選ぶためにm3=0, 加算結果をR3に取り込むために、r3=1
コントローラの構成
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個)
バインディングを行い、データパスとコントローラを生成せよ。
67
演習問題2((1)解答)
演習問題2((1)解答)
69
演習問題2((1)解答)
70
演習問題2((1)解答)
71
演習問題2((1)解答)
演習問題2((1)解答)
73
GCD の高位合成
74
GCD の高位合成例1
75