日経テクノロジーonline SPECIAL

フラッシュとFPGAの長所をフル活用 柔軟性と性能を高次元で両立する「Olive」

フィックスターズが開発したフォグコンピューティング向けサーバー「Olive」は、ストレージをNANDフラッシュメモリーだけで構成し、処理エンジンにFPGA(大規模PLD)を使った斬新な内部構成を採っている。同社が保有する高密度ストレージ技術とマルチコア並列処理技術を駆使して、NANDフラッシュとFPGAに秘められた可能性を最大限に引き出し、柔軟性と性能を高レベルで両立させている。Oliveの魅力を紹介している連載の第2回は、第1世代機である「Olive 1」に投入されている高度な技術の一端を紹介する。さらに、Oliveのロードマップと、それによって広がる応用を、具体的なメリットを示しながら解説する。

 Olive 1は、2.5インチフォームファクター(100mm×70mm×15mm)の小さな筐体の中に、最大13テラバイトのeMMC(Embedded Multi Media Card)を搭載している。eMMCは、SSD(Solid State Drive)ほど高速ではないが、HDDよりも構造が単純で耐久性も高く、しかもデータを高速にやり取りできる特長を持ったストレージ技術である。

 同社はOliveより前の2014年、同サイズの筐体に3テラバイトのeMMCを搭載した高密度・高性能・低消費電力のストレージ「Fixstars SSD-3000M」を発売した。その後、2015年には6テラバイト、2016年には10テラバイトと13テラバイトと継続的に大容量化し、それぞれの発表時点で常に世界最大容量を誇ってきた。Olive 1にも、同じ高密度ストレージ技術が投入されている。

NANDの特性を知り尽くした制御

 eMMCは、スマートフォンなどで使われている成熟したストレージ技術である。ただし、OliveやFixstars SSDのeMMCでは、スマートフォンよりもNANDフラッシュメモリーの搭載数がはるかに多い。最大約50個のチップを搭載し、それをRAIDのように並列動作させて使っている。こうした制御を行うことで、読み出し時580Mバイト/秒、書き込み時520Mバイト/秒と高速でのデータの入出力を可能にしている。

 一般的なSSDでは、基板上でのチップの配置に、かなり余裕がある。例えば、基板1枚にコントローラチップとNANDフラッシュが4つほど載っているといった構成が一般的である。これに対しフィックスターズのOliveやFixstars SSDには、最大50個ものNANDフラッシュが、高密度で基板上に搭載されている(図1)。これほど大量かつ高密度で実装されたNANDフラッシュを並列動作させるのには、相応の高度な技術が必要になる。それぞれのチップを高頻度にアクセスし過ぎると、発熱によって不具合が発生する可能性があるからだ。並列アクセスしながらも、いかに熱を発生させず、いかに放熱するかが腕の見せ所になる。

図1 Olive 1の基板
(左)基板の写真、(右)基板の構成と断面の配置
[画像のクリックで拡大表示]

 発熱と放熱に配慮しながら高性能化するため、フィックスターズは、実装上の工夫だけではなく、コントローラでのアクセスのスケジューリングに独自の技術を盛り込んだ。具体的には、できるだけ物理的に離れた場所に位置するNANDフラッシュを組み合わせて並列アクセスしている。NANDフラッシュは、基板の裏面にも実装されているため、3次元的なチップの配置を考慮しながらスケジューリングする。「フィックスターズには、長年培ってきた並列化技術やNANDフラッシュメモリー関連技術があります。これらの技術を駆使して高密度に実装したeMMCの並列アクセスを効率的に実現しています」(フィックスターズ 取締役 COOの田村陽介氏)と言う。

目的に応じて構成を自在に変える

 Olive 1には、処理エンジンとして、Xilinx社のFPGA SoC「Xilinx Zynq-7030」が採用されている。このXilinx Zynq-7030ひとつで、OSやアプリケーションの処理に加え、eMMCの制御、1GビットEthernetのインタフェース処理なども実行している。さらに余力を使って、画像圧縮処理や暗号化処理など、フォグコンピューティングで求められる高負荷の演算処理も実行できる。

 Xilinx Zynq-7030には、プロセッシングシステム(PS)にARMデュアルコアCPU「ARM Cortex A9」がハードマクロで搭載されており、動作周波数は最大1GHzが可能だ。PSには、外部に置いたDRAMを制御するメモリーコントローラやEthernetコントローラ、これらを相互接続するインターコネクトなども含まれている。Olive 1ではこのPSで、OSやアプリケーション、インタフェース処理を実行する。一方、FPGAで構成されるプログラマブルロジック(PL)には、12万5000個(190万ASICゲート相当)のロジックセルが搭載されている。ここで、eMMCの制御と、高負荷の演算処理を実行する。PSとPLの間のデータのやり取りは、Olive 1の標準構成では、4本ある「High Performance Port(HP)」を通じて行う(図2)。

図2 Olive 1に搭載されているXilinx Zynq-7030内のブロック図
(左)標準構成、(右)高速化した構成
[画像のクリックで拡大表示]

 Olive 1では、様々な処理がすべてXilinx Zynq-7030内で閉じているため、外部チップとのやり取りが必要なシステムと比較して、はるかに高速化できる。ただし、前述したeMMCの入出力性能が、そのままOlive 1全体の性能に反映されるわけではない。これは、eMMCの制御をPL部で実行し、PS部の演算処理にデータを転送する場合、PL部とPS部の間のデータ転送に意外と手間取るからだ。

 課題の技術的な詳細を見ていこう。標準構成ではPL部とPS部をHPでつないで、eMMCのデータを外部のDRAMにDMA転送すると、ARM Cortex A9内のキャッシュのデータとの整合性(コヒーレンシ)が維持できない。また、EthernetコントローラはPS部に実装されているが、このDMA転送もキャッシュコヒーレントではない。このため、これらのDMA転送を行う場合、キャッシュ内のデータを捨てるフラッシュ処理を実行する必要がある。キャッシュフラッシュ処理は、CPUとキャッシュの間をつなぐバスを使って、何度も繰り返して実行する必要があるため、ここに時間を要してしまい、システム性能が落ちてしまう。

 システム性能の向上には、キャッシュフラッシュを削減する必要がある。ただし、解決策はフィックスターズによって既に示されている。PL部上のeMMCコントローラとPS部をつなぐポートを、ARMコア内のキャッシュコントローラに直結する「Accelerator Coherency Port(ACP)」に変更することで、eMMCとDRAM間のDMA転送でのキャッシュコヒーレンシを維持できるようになる。さらに、ARMコア内のメモリーである「On Chip Memory(OCM)」をEthernetコントローラの受信バッファとして利用することでEthernetとDRAM間のDMA転送でのキャッシュコヒーレンシも維持できる。

 最初からHPではなくACPを接続ポートとして使えばよさそうにも思えるが、キャッシュサイズ以上のデータを転送しようとすると、HPの方が転送速度が高い。つまり、システムで扱うデータに応じて内部構成を調整することが、システム性能を高めるためのポイントになる。同社では用途に応じて、標準構成にしたりメモリーを高速化したりといった臨機応変の構成変更を行えるようになっている。FPGAベースのチップを処理エンジンとして利用しているからこそ可能なのである。このあたりは、使いこなしが難しい技術の利用に長けたフィックスターズの面目躍如といえる部分だ。この他にも、割り込み処理が発生した場合、その処理をすべてCPU 0に割り振るARM用のLinuxカーネルの特性を見極めて、ユーザープログラムの処理をCPU 1に固定する工夫など、幾重もの高速化の調整を加えている。

早くも次世代機「Olive 2」の開発計画

 IoT(モノのインターネット)システムに新時代を拓くサーバーであるOlive。そのポテンシャルをユーザーの手元でも引き出しやすくするため、フィックスターズは、SDK(ソフトウエア開発キット)の提供を検討している。搭載しているFPGAのプログラムは、Xilinx社の開発環境「Vivado Design Suite」や、ヘテロジニアスなマルチコアシステム向けフレームワークである「OpenCL」を使って開発できる。加えて、「お客様によって、システム開発の習熟度は千差万別ですから、技術的な支援やIP開発の相談にも応じていきます」(フィックスターズ 代表取締役社長 CEOの三木 聡氏)とする。

 さらに、既に次世代機「Olive 2」の構想があり、2017年春の市場投入を目指して開発が進められている。Olive 2では、処理エンジンを「Xilinx Zynq UltraScale+ MPSoC」に強化する予定だ。このチップのPS部には、32ビットまたは64ビットのデータ幅に対応するクワッドコア「ARM Cortex-A53」、安全性と信頼性を重視したデュアルコア「ARM Cortex-R5」、GPUコア「ARM Mali-400 MP2」がハードマクロで搭載される。PL部のFPGAも規模とアーキテクチャの両面で大幅に増強される。このため、より複雑で高負荷な演算処理を実行できるようになる見込みである。さらに、2.5Gビット/秒のEthernetを2つ搭載する。「Olive 2では、ゲノム解析などにも利用できるのではないでしょうか。こうなれば、大規模なデータセンター市場も狙えると考えています」(三木氏)。

 フィックスターズは、フォグコンピューティングの進歩に歩調を合わせて、Oliveの性能や機能を継続的に向上させていく計画である。

 さらに、構築したいシステムの仕様に合わせて、Oliveに搭載するデバイスの変更などカスタマイズにも応じる計画である。「Oliveは、カスタマイズが簡単にできる点が特長です。NANDフラッシュは、最大110個まで搭載でき、DRAMの容量も変更できます」(フィックスターズ 取締役の近村啓史氏)と言う。

 Oliveは極めて小型であるため、センサーやアクチュエーターを持つ装置の周辺に置くだけではなく、装置の内部に組み込むことができる。周辺に置けば、ソフトウエアの変更だけで対応可能であり、1台のOliveで多数の装置を管理できる。これに対し、装置にOliveを組み込めば、製品設計時での対応は必要になるが、生データを収集して演算対象にできるほか、数々の利便性が生まれる。柔軟性が極めて高いOliveならではの構成が可能になる。

 連載シリーズ第3回は、Oliveの具体的なユーザー事例を紹介していこう。

お問い合わせ