NVMeプロトコルとPCIeインタフェースの組み合わせは、SSD台頭の必然的な結果だ。NVMeをファブリックに利用するのも同様に必然的な流れといえる。
「Non-Volatile Memory Express」(以下、NVMe)は、「PCI Express」(以下、PCIe)バスを介したフラッシュドライブとPCの接続を高速化するプロトコルとして誕生した。PCの世界ではそうした高速接続のための事実上の業界標準となりつつあるが、エンタープライズの世界ではそれをファブリックで接続されたストレージネットワークに拡張することが重要となる。目標は、PCIeでコンピュータに直接接続されたフラッシュドライブと同じI/O速度を、ストレージネットワークのフラッシュドライブでも実現することだ。本稿では、NVMeとは何であり、どのように機能し、今後の展開がどのようなものになるかを考察する。
NVMeプロトコルは高性能なフラッシュドライブの台頭に伴う論理的な帰結だ。従来のSCSIベースではOSのファイルスタックが高度なI/O処理に対応できなかった。割り込みがあまりに多く、スタックにはデータブロック当たり何千ものCPU命令があるからだ。
企業は、割り込みを大幅に削減する製品によってオーバーヘッドタイムを解消し、CPUを生産的な目的に利用できるようにする必要があった。同様に、ホストCPUとのやりとりを極力回避できるデータ転送方法が求められた。
NVMeプロトコルはこうした問題を解消するために急速に進化した。CPUとのデータやりとりの問題は、PCIeバス経由で直接メモリにアクセスする「ダイレクトメモリアクセス」(DMA)で解消した。CPUを介さずにデータを転送するための十分にテストされた方法だ。これにより、データ転送のメカニズムは、転送要求と承認を必要とするプッシュ型から、準備が完了してから受信ノードがデータをプルするシステムへと変わった。この方法がCPUのオーバーヘッドをわずか数パーセントに削減することは、経験から明らかだった。
割り込みシステムは、転送を保留するためのキューセットと完了ステータス用のキューセットを持つ循環キュー方式に置き換わった。「リモートダイレクトメモリアクセス」(RDMA)を使ってこれらのコマンドキューを解析し、完了キューを応答ブロックで処理することで、割り込みを効果的に集約できる。
「Serial Attached SCSI」(SAS)、「Serial ATA」(SATA)、「ファイバーチャネル」などのプロトコルには残念ながら、優先度やソース所有者の感覚が欠けている。NVMeは最大64K個のキューに対応することで、この問題にうまく対処した。各キューは発信元と優先度を識別することで、データを発信元のコアや特定のアプリケーションに戻すことができる。このアドレッシング方式は、NVMeのファブリック拡張においてさらに本領を発揮する。
NVMeは物理的には、「M.2」または「SATA Express」(SATAe)コネクターの2つのPCIeレーンを使用する。どちらのコネクターも、NVMe対応のPCIe接続の代わりにSATAドライブを正しく接続できるようになっている。
M.2規格は非常にコンパクトなSSDの取り付けを可能にする。コンパクトなデザインでスペースとコストを節約し、1.5インチや3インチのパッケージ(幅はわずか1インチ程度)でかなりの容量を実現できる。2018年には、これらの小型フォームファクタで10TB以上の容量を期待できそうだ。
CMOはつらいよ マッキンゼー調査で浮かび上がるAI時代の厳しめな業務実態
生成AI、研究開発、価格戦略……。慢性的なリソース不足の中でマーケターの業務範囲はま...
「リンクレピュテーション」とは? SEO対策や注意点もわかりやすく解説
「リンクレピュテーションって何のこと?」「なぜ重要?」「リンクレピュテーションを意...
MAツール「MoEngage」 DearOneが日本語版UI提供へ
NTTドコモの子会社であるDearOneは、AI搭載のMAツール「MoEngage」の日本語版を2025年1月...