PCI-Express接続のSSDについて

NVM Expressという規格が策定されつつある。
Intel and Standards
Intelが提唱しているPCI-Express経由で不揮発メモリ(この場合フラッシュ)にアクセスするインターフェイスの規格。ようするにFusion-ioのioDriveをコモディティ化してしまおうという動き。現在SSDのコントローラを作っている主要な会社(IntelはもちろんMarvell、Micron、SandForceなど)が賛同しているので、このまま主流になりそうな予感だ。
具体的な製品例としてはボイス|エルミタージュ秋葉原にある、2011/Q3に発売予定のPCI-E接続のSSDとは恐らくこちらのインターフェイスを使ったものになるのではないかと推測される。
Intelのページにある仕様書とLinuxのドライバを斜め読みした限りだと、現代的なSATAのコントローラの機能を包含し更に多機能にしたところを目標にしている。位置付けとしては既存のSATAコントローラとSSD側のコントローラを一体化したようなものになるので、機能不足なSATAコントローラに足を引っぱられることなく十分な性能が発揮できるようになるはずだ。
互換性に関してはUSBのホストコントローラが仕様を統一した(OHCIやUCHI、EHCI)ことによってドライバについて各OSでそれらのドライバを実装するだけで、その後あまり悩まなくても使えたようにNVMHCIのドライバさえあればチップメーカを問わず使えるようになることが期待できる。
NVM自体は仕様上様々なスペックのコントローラが作ることができるので、エンタープライズ向けのリッチなものからコンシューマ向けのミニマムなSSDも同じ仕様で使える。コンシューマ向けではI/Oキューが2個程度でハイエンドでは128個のキューをサポートしたものといった具合で差別化を図ることができる。ここまで多くのキューをサポートできると各プロセッサ毎に独立したI/Oキューを割り当てるということも可能になる。
Linuxのドライバは既にそこそこ完成しているようで、本家に統合できる形で開発が進んでいる。実際の完成度は動くデバイスが無いのでなんとも言えないが少なくとも最低限の機能は揃っているように見える。
ではioDriveとの比較ではどうなのかという話だが、ioDriveについてはid:syuu1228さんが過去にエントリにしておりこちらを参考にした。
Fusion-ioのioDriveは単なるSSDと何が違うのか - syuu1228's blog
このエントリによるとioDriveのキモはソフトウェア側の処理に多くの機能を実行させていることによるとあるが、これに比べるとNVMは比較的穏当で既存のI/O処理に近くハード処理とソフト処理の区分を変えるというほどではないように思う。
syuu1228さんの指摘にもあるが、ハード処理をソフト処理に代替させるというのはネットワークスタックでの動きと反対に思える。LWNでの記事でSolid-state storage devices and the block layer [LWN.net]というものがあり、SSDでの急激な性能向上に対応するためにはblock layerでもネットワークスタックで急速な性能向上(10Baseから10Gbps overへ)への対策を手本にしていくべきだという話とは正反対にも思える。
一方で運用者としては近年のCPUの多コア化によるソフト処理性能をやや持て余し気味であるのも事実だ。一部ではもはやCPUは余っている状況になっている。ただしシングルスレッド性能はさほど向上していないので十分に考えられた多重化を大前提だが、ソフト処理へのシフトというのは有りではないかとも感じている。
ioDriveの作り込みは興味深いとは感じつつも、過去の例からすると大量に出荷されるハードウェアに独自仕様が勝利するケースは少ないので、そのままではioDriveが厳しいのではないかと考える。ただ、強みは量産コストがかからないソフトウェア実装であるため今後も独自の機能を盛り込んでいけばハイエンドとして生き残る可能性はあるのではないか。
結論としては、Fusion-ioのioDriveほどの超絶性能ではないがかなり速いそしてコモディティ化することによってかなり安価なPCI-Express接続のSSDが今年後半から出始める。適度な大きさのフラッシュが十分に安価になったら、M/Bに組み込まれた状態のSSDとかも出てくるのではないか。これらをブートドライブとしてHDDは必要に応じて付けたり付けなかったりというスタイルに移行してくるかもしれない