テクスチャキャッシュ追加考察
以前作成したテクスチャキャッシュについて、改善点が幾つか頭にあるので、備忘録として書いておきます。
[セットアソシエイティブ化]
現在、tagRAM をシングルポートメモリ(READ_FIRST)で作成し、ダイレクトマップを基本に読み出しと更新を1サイクルで纏めて実施することで効率化しているのですが、この際、デュアルポートRAMにしてフォワーディング演算を掛ければ、セットアソシエイティブキャッシュの優先度判定を高クロックのまま押込めそうな気がし始めました。
高クロックでの合成には引き続き拘りたいので、慎重な検討は必要ですが、6LUTにフィットする履歴記述フォーマットを考えればそれなりに嵌りそうな気がしています。
[バイリニア演算]
前回は、「DSP48E1の積和機能が使ってみたい」という理由もあって、4 cycle での積和で計算していました。
が、こちらも挟み撃ち法(2つの画素値の片方をそのまま、もう片方を平均(足して2で割る)に置き換える操作を繰り返す)で安易にサブピクセル値は求まります。
もちろん、貴重なLUT使うよりDSPが余っているならDSP使った方がおいしいケースも多々あるのもそのとおりなのですが、積和を使うとどうしても1ピクセル順に処理することになります。
考えているのは、この際、L1キャッシュのワード幅広げて、「一度に隣接2ピクセルが読み出せるときは読み出す」としたほうが、トータル効率上がるんじゃないかと思った次第からです。複数ピクセルを並列に計算するならアーキ変えるべきだよなぁ、とも悩み中なわけです。
まあ、いづれもそのうち再考察できればと思います。
(追記 2018/02/10)
バイリニアに関しては少し良い方法を思いついたかも知れない。挟み撃ち法で計算する場合でも回路を余り複雑にせずに1ピクセル作るのに3回のバイリニア演算が共用で出来そうな気がしている。1ピクセルの出力計算に4ピクセルの入力の計算を用いるの演算器効率としては 3/4 だし、加算器のみなのでまあまあの密度で組めそうな気がする。
« 低遅延リアルタイムGPUをジャイロと接続 | トップページ | 低遅延リアルタイムGPUでZテスト »
「FPGA」カテゴリの記事
- LUT-Networkの蒸留とMobileNet風構成とセマンティックセグメンテーション(2020.03.09)
- LUT-Networkの蒸留(Distillation)について(2019.12.29)
- FPGAでのDNN(Deep Neural Network)の整理(LUT-Netまとめ)(2019.12.15)
- LUT-NetのFPGAリソースについて(2019.12.08)
- MNIST認識のリアルタイム動作環境更新(2019.09.02)
この記事へのコメントは終了しました。
コメント