5‐04 スループットを決める(続き)
●6層目の入力データRAM
5層目の出力は128個あり、それぞれ5ビットなので、図5‐39のようにビット幅が5bit、アドレスが0〜127のRAMに格納されます。 |

図5-39 5層目の出力は128個、5bit
●6層目の重み係数ROM
6層目の重み係数は図5‐40のようなROMに入ります。128個の入力にこのような128×43の行列を乗算し、43個の出力を得ます。係数の数は少ないですが、これらは‐256〜+255の値をとります(符号付き9ビット)。 |

図5‐40 128行×43列
●128回の積和で出力1個が得られる
図5‐41にタイムチャートを示します。一番上は入力データRAM、2段目は重み行列ROMの読出しで、これらを乗算して累積します。128個累積したところで積和演算は終了し、出力データが一つ得られます。クロック100MHzとすると、10ns
x 128 = 1280nsになります。 |

図5‐41 積和演算のタイムチャート
●並列化しなくても間に合う
6層目の出力は43個あるので全部計算するのに1280ns x 43 = 55.04usとなります。スループット(320us)よりはるかに小さいため、並列化する必要はありません。ただし係数が9ビットなので、ここはビットシフト型ではなく、普通の乗算器を1個使います。
●各層ごとに320us未満であることを確認した!
CNN1ブロックは320us毎に次から次へと入力されます。したがって各層はそのペースに間に合うように処理する必要がありますが、大事なのは各層パイプラインで並列動作しているということです。
つまり1〜6までの「全層トータル」で320usということではなく、「各層単体」で320us未満であればOKということです(表5‐01)。 |
表5-1 各層320us未満で1枚処理できる
|
1層目 |
2層目 |
3層目 |
4層目 |
5層目 |
6層目 |
形状 |
CNN |
全結合 |
1ラインにかかる時間[us] |
10.08 |
9.36 |
15.84 |
11.52 |
- |
- |
1枚にかかる時間[us] |
282.24 |
262.08 |
221.76 |
161.28 |
163.84 |
55.04 |
係数の数 |
432 |
4,608 |
18,432 |
73,728 |
262,144 |
5,504 |
乗算器の数 |
16 |
128 |
128 |
512 |
16 |
1 |
乗算器のタイプ |
通常 |
ビットシフト型 |
通常 |
最初のページへ
目次へ戻る
|