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層目と同様、乗算器を使わない「ビットシフト乗算」です。


次のページへ


目次へ戻る