5‐04 スループットを決める(続き)
●4層目は入力64chある
4層目は入力64チャネルで、画素が11×11になります。図5‐32のように積和演算器を4個用意して、それぞれが入力16chを分担することにします。
同図の上の積和演算器は入力ch0〜15を受け持ち、それらを逐次的に処理します。出力の1ラインは8画素なので、90ns x 8 x 16ch = 11.52usで1ライン計算します。
他の積和演算器はそれぞれ入力ch16〜31、入力ch32〜47、入力ch48〜63をを受け持ち、同様に処理します。 |
図5-32 4層目の出力1chの1ラインを計算するイメージ
●1ライン計算するのに11.52us (+休み時間で20.16us)
4個の積和演算器の出力を足し込んでCNN1ブロックの1ラインが計算されます。それらは並列に動くので、それにかかる時間は同じ
0.72us x 16ch = 11.52us になります。
3層目からは20.16usの周期で1ラインが出力され、その周期で4層目の入力のラインバッファは更新されます。4層目は1ライン11.52usなので演算は間に合っています(*1)
(*1)4層目は各ライン20.16usで処理する(ライン単位で3層目とタイミング合わせ)。20.16 - 11.52 = 8.64usは休み時間になる。
●8ライン、128チャネル計算するのに161.28us
図5‐30のように出力は8×8画素あるのでさらに8倍の時間がかかり、20.16us
x 8Line = 161.28us で1画面の演算が終了します。
4層目入力64chは上述のように4つの積和演算器で分担されます。そして出力は128chあるので図5‐32が128組、すなわち積和演算器が4×128
=512個必要になります(ここ参照)。それらは並列に動くので、出力64ch全部にかかる時間は同じで161.28usになります。 |
図5‐33 4層目は8ラインある
●入力が入ってくる時間内に計算して出力する
各層は320us (VGAのHSYNCの10回ぶん)のスループットでCNN1ブロックを処理しなければなりません。
4層目は上記のように161.28usで1ブロック処理するので、320us - 161.28us
= 158.72usの余裕をもって終了することになります。 |
●4層目は回路が大きくなる(乗算器512個)
4層目は512並列(乗算器512個)で動かしてスループットに間に合わせます。4層目も3層目と同様、乗算器を使わない「ビットシフト乗算」です。 |
次のページへ
目次へ戻る
|