FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

1FPGAに400コアのRISC-Vプロセッサを実装するプロジェクト"GRVI Phalanx"

RISC-V界隈の調査をしていたところ、なかなか面白い文献を発見した。

3rd RISC-V Workshopにて発表されたものだが、なんでもFPGA上に400個ものRISC-Vプロセッサを実装し、動作させたようだ。 その意味や、何に使うの?というのはともかく、実装面の挑戦としては面白そうなので文献を調べてみた。

http://riscv.org/wp-content/uploads/2016/01/Tues1215-RISC-V-Gray-GRVI-Phalanx-final-final.pdf

Phalanx: An Accelerator Accelerator とは

この発表の元となっているのは、Phalanxというアクセラレータを生成するためのフレームワークのようだ。このフレームワークでは、FPGA上で動作する効率(面積効率的なことか?)の良いプロセッサを探していたようで、それで今回RISC-Vが選ばれた。 (ちなみに、実装的にRISC-VはFPGAに最適化されていたり、効率的かというとそんな事は無いと思うのだが)

ここでは、RISC-Vの実装から余計なものを削ぎ落し、RV32Iアーキテクチャのレベルで、ある程度の改造(ここではRV32+-としている)に乗算器の一部を実装している。 ちょっと気になってはいるが、アクセラレータだから、一般命令のみあれば良くて、Priviledgedな命令は不要なんだろうか? OSとかが動くなら必要かもしれないが、ホストとなるCPUが別に存在してそのサポートのもと動くのなら特に問題ないのかもしれない。

結果的に、実装としては1MIPS/LUTという計算能力を持っているらしい。375MHzで動作したときの計算なので、1LUTで375サイクル計算させると、1命令が実行できるらしい。 これが多いのか少ないのかは良く分からないが、大量のリソースを投じて少しだけ性能が上がる昨今のプロセッサに比べれば、効率としては良い気がする(やはりSimple is the Bestなのか)。

(上記発表資料より抜粋) f:id:msyksphinz:20160229021506p:plain

巨大なFPGARISC-Vを実装する

KU040というFPGAチップにRISC-Vを大量に実装したらしい。

http://www.xilinx.com/support/documentation/data_sheets/ds890-ultrascale-overview.pdf

クラスタの構成法としてはいくつかあるようで、8PE(8CPU)で、2つのCPUで1つの命令キャッシュを共有、データキャッシュは非共有とした構成で1つのクラスタを構成する方式を取っている。 ここから、簡単なルータを構成して一気にCPU同士を繋げていく。一般的な仮想チャネルのルータは使用していないようだ。

(上記発表資料より抜粋)

f:id:msyksphinz:20160229021920p:plain

f:id:msyksphinz:20160229021949p:plain

これで合計400個のRISC-Vを接続したようで、全体の性能としては100,000MIPS, 600GB/s CRAMのバンド幅を持っているクラスタが完成したとのこと。

ソフトウェアをどう記述する?

一応、OpenCLカーネルを実装したりだたか、いくつかのプログラミングモデルを持ち合わせているようだが、詳細はあまり語られていないようだった。残念。

Massively Parallel Processors をどのようにして活用する?

シンプルなプロセッサを大量に接続していき、それを繋げて結果的に大きな性能を達成するMIMD型のアーキテクチャは、ハマると高い性能を出すことができそうだ。 ただし、現在はまだプログラミングモデルが構築できていない気がする。 OpenCLフレームワークを使って、ある程度簡単な記述で高い性能を達成できるならば、使ってみる価値があるかもしれない(でもそんな巨大なFPGAボードを購入なんてできないけどね...)