2018年 05月 18日
メモリマップ BNN アクセラレータを小型化する
BNN アクセラレータはかなり高速なのですが、それにデータをくべる CPU が鈍足なので性能を生かしきれいていません。
回路の量はさほど気にはしていないのですが、メモリアクセス幅が 1024bit っていうのは、無駄遣いするのはちょっとなぁと思います。そんなわけで、アクセラレータを時分割動作に変更しようと思います。
具体的には、現状 32bit 幅の回路を 32個インスタンスしていますが、これを 8個に減らして 4サイクル繰り返し動作にします。メモリアクセス幅は 256bit になります。実際は、8サイクル動作(128bit)にしても大した性能低下はないと思っているのですが、将来 CPU が高速化することを夢見て…
左から、最初に1個が BNN 初期化、3+3+4 の波が 9画素分の畳み込みとプーリング、それを4回繰り返した後にノーマライズとアクティベーションのちょっと長めの波が来ます。
この変更で、今までウェイト制御を気にせずに済ませていたメモリアクセス論理(ペリフェラルだけは気にしていたけど)にウェイト制御を追加しました。
セットアップも含めた1枚の画像を推論するプログラムの実行時間が 1637165 サイクルから 1639325 サイクルになりました。
by tom01h
| 2018-05-18 22:20