2018年 05月 15日
メモリマップ BNN アクセラレータをデータスクラッチパッド RAM と統合する
メモリマップの BNN アクセラレータがそこそこ動いているようなので、データスクラッチパッド RAM と統合したいと思います。
128KB のメモリを普通のデータ RAM としてアクセスするときは 0x80100000-0x80120000 でアクセスします。
BNN アクセラレータは 1ワードが 1024bit なのですが、32bit ストア命令でアクセスしたいので 1024bit 毎に アドレスが 4だけ増加します。割り当てアドレスは 0x80180000-0x80181000 かな?
今回は BNN メモリに 80KB 割り当てることにしたので、RAM として使えるのが 0x80100000-0x8010c000 で、BNN メモリは 0x80180600-0x80181000 になります。
せっかくなので、BNN メモリは ELF ファイルに書かれた値で kozos ブートローダが初期化するようにしたい思います。ちなみに BNN メモリは、0x8010c000-0x80120000 を使って、通常のメモリライトで初期化可能です。
ld.scr には
MEMORY{略ramp(rw) : o = 0x8010c000, l = 0x00014000 /* 80KB */略SECTIONS{略.param : {_param_start = . ;*(.param)_eparam = . ;} > ramp
と書いて、param.s にこんな感じでデータを並べます。
.section .param,"aw".word 0x26698990略
こうしておくと、プログラムのロードと一緒に BNN アクセラレータのパラメータの初期化が出来ます。
github 更新しました。
今のところ zero-riscy がのんびり動くので大丈夫なのですが、そろそろウェイト制御を追加したいと思います。
by tom01h
| 2018-05-15 22:46