8-05 vgg-8, 9, 10層目のVHDL化(続き)
●9層目は出力512chで128並列
図8‐89にvgg-9層目のタイミングのイメージを示します。
9層目の入力は512chに増えます(出力は512ch)。入力は逐次処理、出力は128並列で計算します。
すなわち1つの乗算器で出力を4ch計算することになり、そうすれば同図の左にあるようにoutCh0,1,2,3の1ラインが7.00416msで計算できます。前層と同様に「休み期間」が発生し、あまり効率的ではありませんが、128並列で1画面518.4msで計算します。 |
図8-89 vgg-9層目のタイミングのイメージ
●4ch×128並列なので出力512ch
図8‐89の上段はoutCh0,1,2,3を計算するようすです。これら出力4chは1個の乗算器で「逐次的に」計算されます。したがって1画素の計算にかかる期間は90ns
x 512 x 4 = 184.32usになります。
1ライン38画素なので184.32us x 38 = 7.00416msで1ライン計算しますが、同図右にあるように「休み期間」が6.81984msあるので計13.824msで1ライン、1画面38ラインなので13.824ms
x 37.5 = 518.4msで1画面の計算が終わります。
「outCh4 to outCh7」、「outCh8 to outCh11」、...「outCh508 to outCh511」もそれぞれ1つの乗算器で計算されます。乗算器(ビットシフト型)が128個並列で4chづつ計算するので出力は512chになります(入力も512ch)。 |
●8層目の出力が9層目の入力になる
8層目のシミュレーション結果relu.outの名前を変えてlay9.inとし、それが9層目の入力になります。図8‐90のようにRAM_X1_0〜3(入力バッファ、4ラインぶん)にlay9.inの内容が書き込まれます。
conv_layer9は入力バッファからの画像を処理してRAM_X2_0〜3(出力バッファ、4ラインぶん)に書き込みます。1ライン38画素なのでアドレスは64、出力512chなのでデータ幅は5bit
x 512 = 2560bitになります。 |
図8-90 9層目のブロック図
次のページへ
目次へ戻る |