Latency で見る Intel 3D Xpoint SSD

メモリ事業部の Tomo です。

私は普段、NAND FLASH を使用した SSD の開発に携わっているのですが、昨年、 SSD の中の人にとっては驚異的な製品、3D Xpoint を使用した「 Intel Optane  SSD 900P 」が発売されました。メモリ事業部としては発売と同時に購入し、驚異的な数字を目の当たりにしていたのですが、今回はそのポイントについて記事を書かせていただきます。

1.とりあえず性能を見てみる

Crystal Disk Mark や PC Mark 系で測定が手っ取り早いですが、今回は 3D Xpoint の驚異的な点の Latency について語りたいと思うので自分で作った測定ソフトをベースにしたいと思います。

【測定環境】
・OS:Windows10
・Drive:2nd Drive(Boot Drive ではない)
・ファイルシステム:NTFS(ファイルベースでのWrite/Read性能測定)
※ ファイルシステム経由で測定する理由は、ファイルシステムの情報更新が入り、適度にランダムアクセスが発生するので私が好きなだけ

【測定方法】
0. クイックフォーマット(大事)
1. 下地:32GB のファイルを作成
2. 下地に対し、Write 性能測定(8MB 単位のシーケンシャル)
3. 下地に対し、Read 性能測定(8MB 単位のシーケンシャル)
※ CreateFile 時には FILE_FLAG_NO_BUFFERING を指定し、ホスト側のキャッシュは使用しない
※ 時間の測定は QueryPerformanceCounter を使用

測定結果は下図の通りです。

SSD マニアがパッと見ると、これはヤバいと感じることができます。(横軸はWrite/Read回数)
ヤバさは読者の方には伝わらないと思うので、NAND FLASH を使用している S社の SSD と比較してみたいと思います。結果は下図の通りです。

特徴としては、定期的に Latency が伸びていることが分かります。(特に Write)
ここが、大きく NAND FLASH を使用した製品と、3D Xpoint を使用した製品の違う点です。

2. NAND FLASH の扱い方と 3D Xpoint

NAND FLASH の特徴としては、
・「ブロック」という単位で 「Erase 」を行う
・「ページ」という単位で 「Program 」(書き込み)を行う
が基本動作です。

一度書いた場所には上書きはできず、消去しない限り Program をしてはいけません。(したらデータが壊れます) このフローについては、プロセスがどれだけ進化しようが、3次元化しようが、何年経とうが変わらない NAND FLASH を扱う上での大原則です。「ブロック」で Erase し、ブロックがいっぱいになるまで「ページ」という単位で Program を行い、ブロックがいっぱいになったら、別のブロックをまた Erase してページ単位で Program を行う、という繰り返しが NAND FLASH を使用している SSD では行われています。

また、SLC/MLC/TLC と呼ばれるNAND FLASH の種別によって様々ですが、「ブロック」という単位は、数百KB~数MB単位、「ページ」という単位は数KB ~ 数十KB で、「Erase/Program」にかかる時間は数百us~数msオーダーです。ホストからの要求に対して乗ってくる Latency  は、こういった NAND FLASH の特徴に関する Latency も乗ってきます。

これを前提として、Latancy のグラフを見てみます。
S 社の SSD については、Latency が定期的に数ms 伸びている様子が伺えます。Write については、「ブロック」がいっぱいになったタイミングで、次の書き込みを行うためのブロックの Erase が発生している時間が乗ってきていると推測ができます。(Read の Latency は、おそらく ECC 訂正が入ったなどの影響と思いますが今回は扱いません)

一方、3D Xpoint 側は、Latency にほぼ変化がありません。これは、NAND FLASH のような制約はなく、ソフトウェア屋さんから見ると、RAM と同じ感覚で扱えるためです。この点が、NAND FLASH の SSD の中の人からすると非常に驚異的なポイントとなっています。
(しかし、低価格と大容量化は NAND FLASH の方が圧倒的に有利なのでコンスーマ市場では置き換えまでは当面は至らないと考えています)

3. SSD の高速化

我々は SSD の高速化も最大のミッションです。今回の記事では、NAND FLASH の Latency が見えている点に着目をしてみました。しかし、それ以外にも、
〇  SSD の内部処理において、NAND FLASH の持っている Latency をいかに隠すか
〇  NAND FLASH の様々な特徴に対応するためのソフトウェアをいかに高速化するか
・論物変換(FTL:Flash Translation Layer)
・ガーベージコレクション
・ウェアレベリング
〇 ファイルシステムにも影響受ける性能解析
などを日々行っています。

次回以降は、こういったところの一般的なお話や SSD の中の人の気持ちなども書いていければと思います。

4.おわりに

NAND FLASHは世代がどんどん変わっていきますが、扱いもどんどん難しくなっており、ソフトウェアの力でいかに高速な製品に仕上げるかは非常に大きなポイントです。ハードウェア・リソースの制約も多数あり、ハード・CPU・NAND FLASH の性能を極限まで引き出すコードを書くのは非常に面白いです。私は SSD に携わって10年以上になりますが、何年やってもここの戦いは面白いです。ここの面白さとヤバさを語り始めるといくらでも語れるので、小分けで読み物を出していこうと思います。

それでは。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.