OpenCVの一部をハードウェア化中なんだけど、ここにZYNQのNEONも合わせこんでNEON+FPGA複合型のライブラリを画策している。
単にLinux上からFPGAと複合型するのではなくて、LinuxをCPU0単体で動作させて、CPU1をライブラリ専用のアクセラレータCPUとして使用することを考えている。
まぁ、最近のソフトウェア・アルゴリズムをハードウェア化のアプローチとして、例えば、OpenCVの重い処理部分をFPGA部分に持っていくのはいいんだけど、最近のHLS(High Level Synthesis)の話題なんか見ていると、HLSを使うことに着目しすぎで、本当にHLS必要なの?とか・・・
それは本当に最適解なのというのがFPGA界にいろんなところで見えるようになってきた。
なんでもかんでもハードウェア化っていうのも変な話だし。
NEONだけを回すアプリケーションだったら、なにもZYNQを使う必要ないしとか。
なんでZYNQを使うのか?
それが考えられてないことが増えていっているような気がする。
例えば、Parallellaなんてその代表格だと思う。
EpiphanyでHPC(High Paformance Computing)ができることが謳い文句だけど、なんでZYNQ必要なの?
俺の中ではこれがなかななか解けない。
なんで、Epiphanyを単体ボードとして作って、そのフロントエンド・ボードとして何かしらのSoCを使用する構成にしなかったのか、そもそも、Epiphany単体で使用できないようにしなかったのか?
その立ち上げをFPGAをターゲットにしたのか?
Epiphany+FPGAで何かできるなんて、誰も語ってないし・・・
そこまで同時に開発できる人って、そんなにいないだろうと思うし・・・
俺からするとParallellaは安くXC7Z020が手に入るボードの要素が大きい。
Z-Turnが出てきたから、もう、それもどうでも良くなったけど・・・
と、脱線してしまったが・・・
NEON+FPGAでライブラリ化ということになるが、演算系はFPGAに持ってくるよりも、NEONでCPU周波数で処理したほうがFPGAで動かすよりも速い場合もあるのではないかと思う。
まだ、試していないのでなんとも言えないけど・・・
FPGAの方は動かせたとして、200〜300MHzまでしか引き上げることしかできないし・・・
CPU1のコードはOCM(On Chip Memory)に入るように192kB程度に収まるようにして、CPU1の周波数でキャッシュに捕われず、ライブラリをブン回すことができないかを考えている。
NEONが得意部分はNEONにさせて、FPGAが得意部分はFPGAにさせて、パイプライン接続できないかというのが一番の検討材料なんだなぁ。
夏コミネタにしようかな・・・