NVHMCIでもコントローラーがボトルネックに
ところがNVHMCIは、コンシューマー向けのSSDはともかく、エンタープライズ向けには不十分という声がNVHMCIの規格策定に携わったメンバー企業の中から多く出てきた。
SATAにしてもSASにしても、1つのコントローラーの下に多数のHDDをぶら下げる構造になっている。HDDの場合、よほどのことがない限り連続して長時間にわたってデータの読み出しや書き込みを行なうことはなく、だいたいは数セクター分を読み書きした後でシーク(ヘッドの移動)、また数セクターの読み書き、シークという具合に続く。
そのため、複数のHDDを1つのコントローラーにぶら下げても、うまく負荷分散を図れる。
ところがSSDの場合、読み書きが極めて長時間可能で、シークに相当する部分(SSD内部のガベージコレクションなど)の時間はずっと短いので、1つのコントローラーの下に複数のSSDをぶら下げた場合、どうかするとコントローラーが先にボトルネックになってしまう。
PC向けなら、ブートドライブをSSDにして、データドライブはHDDという構成になっているためそれほど大きな問題ではないが、エンタープライズ向けでは複数台(それも2桁)のSSDがぶら下がることになるので、明らかにコントローラー側がボトルネックになる。
そこで複数のSSDを1つのコントローラーで管理するのではなく、1つのコントローラーで1つのSSDを管理する方式が浮かぶことになった。これは当初、Enterprise NVMHCIという名前で2009年中旬から開発が始まるが、途中でNVM Expressに名前が変わった。
ではSATAとNVM Expressではなにが違うのだろうか。下図がSATAとNVMe Expressの接続方法である。
SATAの場合、ホスト(PCだったりサーバーだったりいろいろ)とPCIやPCI ExpressでまずSATAコントローラーがつながり、そこからSATA経由でHDDやSSDがつながる形になる。
SATAコントローラーに関してはPC側のチップセットに統合されている場合もあるが、この場合チップセットの内部でPCI/PCI Express経由でSATAコントローラーにつながる構造になっているだけで、基本的にはこの3つのブロックに分かれていることに違いはない。これに対しNVM Expressでは、NVMeのコントローラーがSSD内部に入っている、という大きな違いがある。
ちなみにNVMeのコントローラーとフラッシュメモリーの間のI/Fに関しては、サムスン/東芝という2大フラッシュメモリーベンダーはToggle NAND、その他のメーカーはONFI(Open NAND Flash Interface)という規格に準拠することで、足並みがそろっていなかった。
実を言うと現在もあまりそろっていないのだが、これは微細化や高速化にともない、例えばエラー訂正についても世代毎に異なる要件が必要になってきており、もはや同じメーカーの中ですらI/Fを変えないといけなくなってきている。
これもあって、もうフラッシュメモリー単体でのI/Fの標準化はすでに放棄されている。ではどうやってつなぐかというと、それこそNVM ExpressやeMMC(Embedded Multi Media Card)、UFS(Universal Flash Storage)などの、「コントローラーが搭載されていることを前提としたI/F」を利用するようになっている。
PCI Expressの接続方法の図で言えば、ホストとNVMeコントローラーはPCI Expressでつながることだけが決まっており、NVMeコントローラーとフラッシュメモリーをどうつなぐかはもはや各NVMeコントローラーベンダー任せとなっている。
NVMeコントローラーベンダーは、利用するフラッシュメモリーのメーカー/世代ことにあわせて異なるチップを用意しているというのが正確なところだ。
話がやや逸れたが、ではAHCIとNVM Expressではアプリケーション(ドライバー)からみるとどんな違いがあるのだろうか。いくつか目立ったところを比較すると以下の違いがある。
AHCIとNVM Expressの違い | ||||||
---|---|---|---|---|---|---|
速度 | AHCIは最大でもチャネルあたり600MB/秒。一方NVM ExpressはPCI Expressの限界(Gen3 x4なら最大4GB/秒) | |||||
キューの深さ | コントローラーがハンドリングできる送受信コマンドを貯めるコマンドキューは、AHCIの場合1つのみで、そのキューに32個のコマンドを貯められる。NVM Expressは65535個のコマンドキューを持つことができ、それぞれのキューに最大65536個のコマンドを貯められる(最大値) | |||||
割り込み | 予めキューイングされたコマンドに割り込みをかけて優先的に処理する割り込み処理について、AHCIでは1つのみ許され、多重割り込みはサポートしない。NVM ExpressではMSI-X(eXtended Message Signal Interrupt)と呼ばれる、メッセージベースの割り込みを最大2048までサポートする。 | |||||
並列処理 | AHCIでは並列処理をサポートしないので、複数のプログラムからのリクエストが同時にコントローラー側に到達しないように、デバイスドライバーでリクエストを一本化する必要がある。NVM Expressでは最初から並列処理をサポートしており、複数のプログラムからの同時リクエストをさばける。 |
またAHCIの場合は、その先につながるのが必ずしもHDDやSSDとは限らない(光学ドライブやMOドライブなども考えられる)のに対し、NVM ExpressではフラッシュメモリーベースのSSD以外は考慮されていないので、こうしたHDD/SSD以外のデバイスへの配慮なども外されている。
ただこうした違いを別にするとNVM ExpressはSATAとよく似た構造になっており、ドライバーを置き換えるだけでアプリケーションからは同じように使えるように配慮されている。

この連載の記事
-
第811回
PC
Panther Lakeを2025年後半、Nova Lakeを2026年に投入 インテル CPUロードマップ -
第810回
PC
2nmプロセスのN2がTSMCで今年量産開始 IEDM 2024レポート -
第809回
PC
銅配線をルテニウム配線に変えると抵抗を25%削減できる IEDM 2024レポート -
第808回
PC
酸化ハフニウム(HfO2)でフィンをカバーすると性能が改善、TMD半導体の実現に近づく IEDM 2024レポート -
第807回
PC
Core Ultra 200H/U/Sをあえて組み込み向けに投入するのはあの強敵に対抗するため インテル CPUロードマップ -
第806回
PC
トランジスタ最先端! RibbonFETに最適なゲート長とフィン厚が判明 IEDM 2024レポート -
第805回
PC
1万5000以上のチップレットを数分で構築する新技法SLTは従来比で100倍以上早い! IEDM 2024レポート -
第804回
PC
AI向けシステムの課題は電力とメモリーの膨大な消費量 IEDM 2024レポート -
第803回
PC
トランジスタの当面の目標は電圧を0.3V未満に抑えつつ動作効率を5倍以上に引き上げること IEDM 2024レポート -
第802回
PC
16年間に渡り不可欠な存在であったISA Bus 消え去ったI/F史 -
第801回
PC
光インターコネクトで信号伝送の高速化を狙うインテル Hot Chips 2024で注目を浴びたオモシロCPU - この連載の一覧へ