7-02 層間の画像メモリは4行ぶんあればよい!?(続き)

●300ライン→4ラインで二桁小さくなる!

 2層目は入力が64ch、画素は5ビットなので図7‐10のように300 x 4 x 64ch x 5bit = 384kb (48kB)のメモリで十分になります。図7‐06では28Mb(3.6MB)だったのでビット数が1/73と二桁小さくなりました。


図7-10 28Mb -> 384kbと二桁小さくて済む!


●全28層のメモリ使用量の見当を付ける

 このSSDは全部で28層あります。それぞれの入力側に必要なメモリを計算すると表7‐01のようになると予想されます。

 表7‐01
layer名 入力側に必要なメモリ 備考
vgg-1 300x4x3chx8bit = 28.9kb (3.6kB)
vgg-2 300x4x64chx5bit = 384kb (48kB)
vgg-3 150x4x64chx5bit = 192kb (24kB)
vgg-4 150x4x128chx5bit = 384kb (48kB)
vgg-5 75x4x128chx5bit = 192kb (24kB)
vgg-6 75x4x256chx5bit = 384kb (48kB)
vgg-7 75x4x256chx5bit = 384kb (48kB)
vgg-8 38x4x256chx5bit = 195kb (24kB)
vgg-9 38x4x512chx5bit = 389kb (49kB)
vgg-10 38x4x512chx5bit = 389kb (49kB)
vgg-11 19x4x512chx5bit = 195kb (24kB)
vgg-12 19x4x512chx5bit = 195kb (24kB)
vgg-13 19x4x512chx5bit = 195kb (24kB)
vgg-14 19x4x512chx5bit = 195kb (24kB)
vgg-15 19x2x1024chx5bit = 195kb (24kB) カーネル1x1なのでx2
vgg subtotal 3.9Mb (486kB) vgg層の小計
ex-1 19x2x1024chx5bit = 195kb (24kB) カーネル1x1なのでx2
ex-2 19x4x256chx5bit = 97kb (12kB)
ex-3 10x2x512chx5bit = 51kb (6.4kB) カーネル1x1なのでx2
ex-4 10x4x128chx5bit = 26kb (3.2kB)
ex-5 5x2x256chx5bit = 13kb (1.6kB) カーネル1x1なのでx2
ex-6 5x4x128chx5bit = 13kb (1.6kB)
ex-7 3x2x256chx5bit = 7.7kb (1kB) カーネル1x1なのでx2
ex-8 3x4x128chx5bit = 7.7kb (1kB)
ex subtotal 410kb (51kB) ex層の小計
conf-2 19x4x1024chx5bit = 389kb (49kB)
conf-3 10x4x512chx5bit = 102kb (13kB)
conf-4 5x4x256chx5bit = 26kb (3.2kB)
conf-5 3x4x256chx5bit = 15kb (2kB)
conf-6 1x4x256chx5bit = 5kb (0.6kB)
conf subtotal 540kb (68kB) conf層の小計
overall total 4.9Mb (606kB) vgg, ex, confの合計

●なんとか入りきるかもしれない

 このFPGA(Cyclone V 5CGTD9)のEmbedded Memoryは13.917Mb (1.74MB)です。上表のoverall totalは4.9Mb (606kB)なので入りきる可能性が出てきました。(*1)

(*1)Embedded Memory全てのビットが使えるわけではないので「可能性がある」とした。

●FPGA内部メモリを上手に使う

 SSDは画素数が多いのでFPGA内部メモリに収まるような工夫が必要です。またリアルタイム画像処理において、外部メモリ(外付けSDRAMなど)を層間メモリに使うのは難しいと思います。(*2)

(*2)外部メモリはポートが一つしかなく、またビット幅(ピン数)も限られているので。


最初のページへ



目次へ戻る