Fusion-ioのioDriveは単なるSSDと何が違うのか

Fusion-ioという会社がPCIeなSSDっぽいボードを出してて、SSDじゃないよ!って主張してるけど、何がふつーのSSDとちゃうのんって話。
正直、情報が少ないし現物を動かした事も無いから未だ良く分かってない。
知ってる人や資料を持ってる人が居たら教えて欲しい。

ちなみにこんなのですね:
Fusion-io, proud member of the SanDisk family.

NAND Flashをディスクのように見せかける為にはセクタへの読み書きをページ単位に変換したり、書き換え上限回数を越えにくいように書き込み先を散らしたり、駄目になった領域/予備領域を管理したりする必要があって、SSDではその辺をコントローラチップがやってる。
或いは組み込みデバイスに載ってる直付けのNANDではJFFSのようなファイルシステムがその辺を吸収してる。

Fusion-ioのアプローチでは、PCから直接NANDが見えるようなハードに対してブロックデバイスのインタフェースを持つデバイスドライバ(Virtual Storage Layer)を用意する事でその辺の対処を行っている、って事らしい。
しょぼいSSDコントローラと違ってCPUで処理出来るからパフォーマンスが出せるんだとか。
なんかCPUでさばくとキツいからってどんどんハードウェアオフローディング機能が強化されてるイーサネットとは逆方向じゃね?とか思った。まぁ比べるもんでもないか?

ハードそのものより結局このVSLってソフトがioDriveのキモだって話らしい。
色々頑張ってるらしいんだけどあんまり詳しくは教えてあげないよ!って感じなのかな。
Linux対応してるけどまぁ想像の通りバイナリしか提供してない。
でもドライバアップデートするだけでスループット上がったりECCのビット数あがったりすんだぜ!すげーだろ!みたいな話もあるとか。

ボードに載ってるコントローラはFPGAらしい。
敢えてそこにFPGA載せてる理由は少量生産だからなのか、或いはFPGAでなければならない理由があるからなのかは良く分からなかった。

Virtual Storage Layerに関する記事
Fusion-io Announces Virtual Storage Layer (VSL): Updates in Flash Storage Management - Wikibon

Virtual Storage Layerの上で動く実験的なFSに関する論文
DFS: A File System for Virtualized Flash Storage
↑これは未だちゃんと読めてない

NetDMAってなに

Windowsでネットワークスループットを上げる為のハードウェアオフローディングな話を見つけた。
予期せぬ挙動が!? 新機能 Scalable Networking Pack をご存知ですか? – Ask the Network & AD Support Team

こんなかのNetDMAがちょっと気になったんで調べてみたらIntelチップセットレベルで実現してるっぽい気がしてきた。
http://support.dell.com/support/edocs/network/IntelPRO/R167266/ja/ioat.htm
Intel® I/O Acceleration Technology

使うにはIntel 5000 シリーズ チップセット(サーバ用)が必要、と。

多分NetDMAってWindowsで呼んでるのがこれ:
Intel® QuickData Technology enables data copy by the chipset instead
of the CPU, to move data more efficiently through the server and
provide fast, scalable, and reliable throughput.

何が出来るかというと、受け取ったパケットをユーザランドにコピーする処理をハードにオフロードする、というもの。
ちなみにLinuxでもCONFIG_NET_DMA=yで使えるみたい。
Linux Kernel Driver DataBase: CONFIG_NET_DMA: Network: TCP receive copy offload

他に気になるポイントとしては、こんなのと:
Direct Cache Access (DCA) allows a capable I/O device, such as a
network controller, to place data directly into CPU cache, reducing
cache misses and improving application response times.

こんなのが:
Low Latency Interrupts tune interrupt interval times depending on the
latency sensitivity of the data, using criteria such as port number or
packet size, for higher processing efficiency.