前回は、RoCCインタフェースを使って専用ハードウェアを動かし、通常のソフトウェア命令を動かした場合と比べてどの程度性能が異なるのか調査した。 その結果、ハードウェアがシンプルなためか、ソフトウェアを使った場合と大差ない結果になってしまった。
この場合、メモリから読み込んだ値をシンプルに加算していくハードウェアだが、作り方がよくない。もうちょっと性能が出るハードウェアを作れば、もっと高速化できるんじゃないか?
専用ハードウェア高速化のアイデア
メモリからリクエストを出して、メモリのデータを取得するまで、ステートマシンになっている。つまり、データを取得するまでに次のリクエストを出さないようになっている。 これではもったいないので、リクエストが出せるまで出しっぱなし、メモリからの応答データは受け取り次第データを加算するという構造に変更する。
これで性能測定を行った。なぜかprintf()が動作しなくなったのでちょっとデバッグまでは進んでいないが、ログからアクセスの履歴を見て判断。
結果、かなり高速化された。メモリアクセス数を変わらず、2倍高速化されている。
まあまあ、RoCCを使用した価値があったかな。