分析コンピューティングの黎明期から、データが自宅でくつろぐ場所であるストレージは、データがスニーカーを履いて短いランニングに出かけるメモリよりも大幅に遅いものでした。
この巨大なアクセス速度の差は、紙テープ、磁気テープ、ディスクドライブ、フラッシュメモリといったストレージ技術の進歩とともに、ますます縮まってきました。そして今、3D XPointに代表される、さらに高速な不揮発性ソリッドステートメモリの登場により、この差はさらに縮まろうとしています。
システムのハードウェアとソフトウェアがこのはるかに高速な(実際にはメモリに近い速度)ストレージを活用するために変更されるため、サーバーとストレージに広範囲にわたる影響が及ぶことになります。
メモリの内容は揮発性または一時的であり、電源を切ると失われます。一方、NAND、ディスク、テープなどに保存されているストレージの内容は、デバイスの電源を切っても失われないため、永続的または不揮発性と呼ばれます。
逆説的ですが、動かないストレージ メディアは動くストレージ メディアよりも高速です。ソリッド ステート、不揮発性メモリ、または NAND は、回転ディスクやストリーミング テープよりもアクセスがはるかに高速です。
どれくらい速くなりますか?
ナノ秒とマイクロ秒
メモリアクセスには200ナノ秒*かかる場合があります。これはCPUのキャッシュアクセス速度の基準からすると遅いと言えます。レベル1プロセッサキャッシュアクセスは0.5ナノ秒で、これはその400倍の速さです。また、レベル2キャッシュアクセスでは7ナノ秒かかります。
ディスクドライブのシーク、つまり読み書きヘッドがプラッター上を移動して正しいトラック領域に到達するまでの時間は、1000万ナノ秒(10ミリ秒、1万マイクロ秒)かかることがあります。これはメモリアクセスよりも2桁以上遅いと言えるでしょう。
ソリッドステートドライブ(SSD)はこれよりもはるかに高速です。Micronの最新9100は、NVMeプロトコル対応PCIeバスカードとして実装されており、読み取りアクセスのレイテンシは120マイクロ秒、書き込みアクセスのレイテンシは30マイクロ秒です。これはディスクよりも少なくとも1桁高速ですが、書き込みアクセスではDRAMアクセスの150倍、読み取りアクセスでは600倍も遅くなります。
なぜ読み取りアクセスと書き込みアクセスが非対称なのでしょうか?これは、書き込みはSSDのDRAMバッファにキャッシュされるのに対し、読み取りは当然ながら低速なNANDにアクセスする必要があるためだと考えられます。
NANDはディスクよりもはるかに高速ですが、メモリよりは依然としてはるかに遅く、IOはメモリアクセスよりも遅いというコーディングの基本原則は依然として有効です。つまり、アプリケーションの実行時間を短縮したいコーディング担当者は、実行されるIOの量を制限しようとし、サーバー/ストレージシステムエンジニアは、ディスクデータの遅延を解消するためにNANDキャッシュを、NANDアクセスの遅延を解消するためにDRAMキャッシュを利用するでしょう。
マルチソケット、マルチコア CPU を搭載したサーバーは、本質的に IO 待機状態になる傾向があります。これは、メモリより数百倍遅いストレージ サブシステムが、十分な速度でデータを読み書きするのに苦労するためです。つまり、非常に遅いストレージが処理を実行している間、プロセッサは何もせずに待機することになります。
アクセス時間の大きな隔たり
L1キャッシュの参照に1秒かかると仮定すると、この測定スケールではディスクアクセスに6年4ヶ月19時間33分20秒かかることになります。しかし、Micronの9100 SSDからの読み取りははるかに高速で、2日18時間40分かかります。これはディスクの基準からすれば良いのですが、DRAMのアクセス速度基準(6分40秒)からすると、依然として非常に遅いと言えます。
揮発性メモリと永続ストレージ間のアクセス速度の大きな隔たりは、期待通りの性能を発揮すれば、Intel と Micron の新しい形式の不揮発性ソリッド ステート ストレージである 3D XPoint メモリによって埋められることが期待されます。
XPointは相変化メモリ(PMC)材料であるカルコゲナイドガラスで作られており、電流を流すことで状態の一部にバルク変化が生じ、抵抗レベルが変化します。この変化は反転可能で、抵抗レベルは2進数の1または0を信号として示します。XPointダイは2層構造とクロスバー構造を採用しているため、3D CrossPointという正式名称が付けられています。
このバルク変化は、相変化メモリ(PCM)技術で使用されるアモルファスから結晶への状態変化とは異なると言われており、これも材料の抵抗レベルを変化させる。
Intel と Micron の初期のマーケティング メッセージでは、フラッシュより 1,000 倍高速で、耐久性も 1,000 倍あり、コストはフラッシュよりは高いが DRAM よりは低くなると予想されている、と述べられていました。
Objective Analysis の Jim Handy 氏は、XPoint の位置を対数スケール グラフに表しました。
このグラフは、コスト/GB と帯域幅によって定義された 2D 空間にメディアをプロットしており、3D XPoint が NAND と DRAM の間に位置していることがわかります。
XPointの詳細
NANDとは異なり、ブロックアドレスではなくバイトアドレスでアクセス可能です。Intelは、OptaneブランドのXPoint SSD(NVMeアクセスドライブ)とXPoint DIMMを導入すると発表しました。XPoint DIMMは、NVMe XPointドライブで使用される比較的低速なPCIeバスではなく、DIMMに搭載されたXPointチップがメモリバスに直接アクセスすることを意味します。
最近、カリフォルニア大学サンディエゴ校で開催された第 7 回不揮発性メモリ ワークショップ 2016 で、Intel のプレゼンターである Intel フェロー兼チーフ 3D XPoint ストレージ アーキテクトの Frank Hady 氏が Optane に関するいくつかのデータを発表しました。
Optane には次のようなプロファイルがあることがわかりました。
- 20nmプロセス
- SLC(1ビット/セル)
- 7マイクロ秒の遅延、または7,000ナノ秒
- 78,500(ランダム70:30)読み取り/書き込みIOPS
- NVMeインターフェース
XPoint の帯域幅は現時点では不明です。
L1 キャッシュからディスクまで、XPoint を含むメモリとストレージ メディアを調べてレイテンシ テーブルを作成すると、次のようになります。
レイテンシが7マイクロ秒のXPointは、DRAMのアクセス速度のわずか35倍です。これはNVMe NANDよりもはるかに優れており、Micronの9100は書き込み速度がDRAMの150倍、読み取り速度が600倍遅いのに対し、XPointはDRAMの35倍です。
これを示すために表の 5 つの項目を横にグラフ化すると、次のようになります。
XPointはNANDよりもメモリレイテンシに非常に近いことは明らかです。XPointはNAND(またはディスク)のキャッシュ技術として使用でき、その場合、キャッシュはキャッシュであり、大きな変化はありません。あるいは、メモリの一種として使用することも可能です。その場合、アプリケーションはDRAMの代わりに、あるいはDRAMと併用して、XPointから直接取得したデータで実行されます。
DIMM に搭載された XPoint チップは、7 マイクロ秒よりもさらに短いレイテンシが期待でき、これが XPoint ストレージ クラス メモリ (SCM) フォーム ファクターになる可能性があります。
システムとソフトウェアの変更
SCMを使用すると、アプリケーションは永続ストレージにデータを取得するために書き込みIOを実行する必要がなくなります。メモリレベル(ゼロコピー)の操作でXPointにデータを移動することで、書き込みIOが実行されます。これは、XPointがストレージクラスメモリ、つまり永続メモリとして扱われる際に、システムとソフトウェアが対応しなければならない変更点の一つにすぎません。
その他には次のものがあります:
- 永続メモリを認識するファイルシステムの開発
- ストレージクラスメモリのオペレーティングシステムのサポート
- ハイブリッド DRAM と XPoint メモリを使用するように設計されたプロセッサ。
Linux のコードが拡張され、XPoint ストレージ クラス メモリをサポートするようになるのは間違いありません。
Microsoftは、WindowsにXPointストレージクラスメモリのサポートを追加する作業を進めています。このサポートはゼロコピーアクセスを提供し、DAXボリュームと呼ばれるダイレクトアクセスストレージボリュームを備えています。DASの略称は、SATAまたはSASリンクでサーバーに直接接続されたディスクドライブやSSDを指すものとして広く理解されているため、XPointダイレクトアクセスストレージでは使用できないと考えられます。DAXボリュームにはメモリマップされたファイルがあり、アプリケーションは現在のIOスタックを経由せずにアクセスできます。
このコードスタックは、ディスクドライブ時代の前提に基づいています。当時は、IOスタックのトラバーサル時間は全体のIO時間に占める割合が非常に小さく、それ自体は問題ではありませんでした。しかし、XPointのアクセス時間が1桁マイクロ秒レベルになると、スタックの効率性がはるかに重要になります。
これを実現するために特定の SCM ドライバーが用意されており、詳細については次のビデオをご覧ください。
YouTubeビデオ
NVM Summit 2016におけるMicrosoft NVMのプレゼンテーション - Windows OSにおけるストレージクラスメモリのサポート。画像をクリックするとビデオへ移動します。
サーバーとストレージに対するXPointの影響
XPoint を搭載したサーバーは、IO バウンドによる負荷が大幅に軽減されます。キャッシュ効率も向上します。SCM を使用するサーバーは、メモリ内にアプリケーションのワーキングセットをより多く保持できるため、データの書き込み時間を短縮できます。
他の条件が同じであれば、XPoint を搭載したサーバーは、XPoint キャッシュを使用するとより多くの VM またはコンテナをサポートでき、XPoint NVMe SSD を使用するとさらに多くの VM またはコンテナをサポートでき、XPoint SCM を使用するとさらに多くの VM またはコンテナをサポートできるはずです。
ストレージアレイは、XPointキャッシュを使用することで応答速度が向上し、XPoint SSDを使用することで全体的にさらに高速化されます。NVMeファブリックリンクとリモートダイレクトメモリアクセスを使用し、共有XPoint直接接続ストレージとして機能することが期待されます。
Fusion-ioは、オリジナルのPCIeフラッシュカードでストレージクラスメモリの導入を試みました。しかし、SCMレベルの変更をOSに取り込むには規模が小さすぎました。IntelとMicronの提携は、ハードウェアおよびソフトウェアサプライヤーによるXPoint対応エコシステムの必要性を十分に認識しており、その実現には十分な規模です。
もし、まだ「もし」であることは間違いありませんが、XPoint がその潜在能力を発揮すれば、SAS および SATA タイプのストレージ IO 待機が事実上解消され、SCM によってサーバー全体の効率が大幅に向上することになります。
XPointの期待に応えられなかった場合、他の抵抗変化型RAM(ReRAM)技術が台頭する可能性があります。サンディスクと東芝がこの分野に取り組んでいることは承知していますが、いずれもXPointほど本格的な市場投入には至っていません。XPointが並外れた期待に応え、期待通りの性能を発揮してくれることを期待しましょう。®
*ここで使用されているすべてのレイテンシーの数値は、可能な限り正確ですが、大きなばらつきがある可能性があるため、絶対値ではなく指標として扱ってください。