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とよく似た構造になっており、ドライバーを置き換えるだけでアプリケーションからは同じように使えるように配慮されている。
この連載の記事
-
第802回
PC
16年間に渡り不可欠な存在であったISA Bus 消え去ったI/F史 -
第801回
PC
光インターコネクトで信号伝送の高速化を狙うインテル Hot Chips 2024で注目を浴びたオモシロCPU -
第800回
PC
プロセッサーから直接イーサネット信号を出せるBroadcomのCPO Hot Chips 2024で注目を浴びたオモシロCPU -
第799回
PC
世界最速に躍り出たスパコンEl Capitanはどうやって性能を改善したのか? 周波数は変えずにあるものを落とす -
第798回
PC
日本が開発したAIプロセッサーMN-Core 2 Hot Chips 2024で注目を浴びたオモシロCPU -
第797回
PC
わずか2年で完成させた韓国FuriosaAIのAIアクセラレーターRNGD Hot Chips 2024で注目を浴びたオモシロCPU -
第796回
PC
Metaが自社開発したAI推論用アクセラレーターMTIA v2 Hot Chips 2024で注目を浴びたオモシロCPU -
第795回
デジタル
AI性能を引き上げるInstinct MI325XとPensando Salina 400/Pollara 400がサーバーにインパクトをもたらす AMD CPUロードマップ -
第794回
デジタル
第5世代EPYCはMRDIMMをサポートしている? AMD CPUロードマップ -
第793回
PC
5nmの限界に早くもたどり着いてしまったWSE-3 Hot Chips 2024で注目を浴びたオモシロCPU -
第792回
PC
大型言語モデルに全振りしたSambaNovaのAIプロセッサーSC40L Hot Chips 2024で注目を浴びたオモシロCPU - この連載の一覧へ