このページの本文へ

前へ 1 2 3 4 5 6 次へ

最新パーツ性能チェック 第259回

Intel SSD 660pやOptane Memory単体版との性能差は?

Optane Memory H10を使い倒してわかった利用制限と性能

2019年05月23日 10時00分更新

文● 北川達也 編集●ジサトライッペイ

  • この記事をはてなブックマークに追加
  • 本文印刷

まとめ:QLC NANDの弱点を補うSLCキャッシュをうまく補完するOptane Memory

 H10に搭載している3D QLC NANDはチップあたりのGB単価に優れ、SSDの低価格化に一役も二役も買っている。しかし、3D TLC NANDと比べて書き込み速度がかなり遅いという課題がある。この課題を緩和するために、SLCキャッシュを3D TLC NAND採用製品よりも多めに設け、見かけ上の書き込み速度を上げている。また、SLCキャッシュ内のデータをある程度バッファーとしてそのままキープしておくことで、QLC領域への無駄な書き込みを減らし、不必要に寿命を削らないようにもしている。

 とはいえ、SLCキャッシュの増量は良いことばかりではない。前述にも挙げたが、例えばSLCキャッシュをSSDの総記録容量ギリギリまで設けると、そのSLCキャッシュが枯渇した瞬間、ただでさえ遅い書き込みがさらに遅くなってしまうという問題に直面することになる。これは、NANDメモリーを記憶媒体に用いるSSDの宿命でもある。NANDメモリーには様々な制約があり、これが手かせ足かせとなって空き容量が減れば減るだけボディーブローのように効いてくるからだ。

 少々難しい話になるが、なぜ書き込み速度が異様に遅くなるのか、その原理を説明する前にまず前提条件として、現在のSSDの仕組みをおさらしよう。

 例えば、512GBのSSDには総容量「549,755,813,888バイト」のNANDメモリーチップが搭載されている。しかし、ユーザーが使用できる実容量、つまりOSから見える容量は、「512,110,190,592バイト」しかない。パッケージなどに書かれているストレージ容量の表記は、10の倍数表記が一般的となっているため、10の倍数表記でみると「512,110,190,592バイト」は約512GBであり、釈然としない方も多いとは思うが、容量表記的には何も間違ってはいない。

 では、差し引かれた「37,645,623,296バイト」もの容量は一体どこに行ってしまったのだろうか。実は、この部分が予備領域や管理領域と呼ばれている部分である。この領域は常に固定された領域ではなく、寿命の延命などに活用されている。NANDメモリーのように書き換え回数に寿命がある記憶媒体では、全領域を均等に書き換えることで寿命を最大化している。

 約512GBの領域でデータを均等に書き込むより、約549GBの領域をフル活用して均等にデータを書き込んだほうが、より多くのデータが書き込めることは誰の目からみても明らかだろう。つまり、NANDメモリーを採用したSSDとは、512GB製品の場合、10の倍数表記で約549GBの領域をうまく使って、約512GBの容量をユーザーに提供すれば良いというのが基本的な考え方なのである。

 SLCキャッシュはこれを逆手にとって、高速化のキャッシュに利用する方法だ。すなわち、SLCキャッシュを多く設ければ設けるだけ、物理的な容量は実際には少なくなっているが、最終的に辻褄があうように見せればストレージ的にはOKというわけだ。そういう意味では、仮想ドライブのようなものである。

 ここからが本題である。なぜSLCキャッシュを多く設けた場合、大きなペナルティーが発生するのか。その最大の原因は、NANDメモリーは上書きが行なえないため、書き込み作業の前に必ず、消去作業をしなければならないことにある。NANDメモリーの消去は、ミリ秒単位の大きな時間がかかる。しかも、SLC、MLC、TLC、QLCの順で消去に必要な時間が長くなる。QLCの場合、書き換え回数を増やすために消去を行なう場合も時間をかけて調整しなければならない。雑に消去すると、書き換え回数の減少につながってしまうからだ。

 QLC NANDで512GBのSSDの全容量をSLCキャッシュに割り当てると、実用容量は4分の1の128GBになってしまう。だが実際には、まだ約37GB分の予備領域が残っているというのは前述した通りだ。SLCキャッシュが枯渇しても書き込みが続く場合は、この約37GBの領域をうまく活用して、物理的な容量を増やしながら書き込みを継続していくことになる。つまり、SLCキャッシュの容量を減らしながら、QLCで使う領域を増やしていく必要があるというわけだ。

 具体的には、SLCキャッシュ内のデータを残っている約37GBの領域に移動させ、QLC領域の移動先の物理アドレスを変換テーブルに登録する。次にSLCキャッシュ内の移動済みデータが記録されていた領域が消去できるようであれば消去し、QLCとして再利用する。これを繰り返す。なお、「消去できるようであれば」としたのは、NANDメモリーの読み書きはページと呼ばれる単位で行なうが、消去はページを複数束ねたブロックと呼ばれる単位で行なう必要があるという制限があるからだ。

 ページあたりの容量やブロックが何ページで構成されているかはNANDメモリーによっても異なるが、Samsungや東芝メモリの64層3D TLC NANDメモリーの場合、ページあたりの容量が16KB、ブロックは768ページとなっているようだ。つまり、読み書きは16KBごとに行なえるが、消去は12MBごとでしか行なえない計算になる。NANDメモリーではデータを別の場所に移動させても、消去単位のブロック内に必要なデータが残っている場合は、消去を行なえない。したがって、データを動かしたからといって、必ずしも消去を行なえるわけではないのだ。

 そのため、NANDメモリーを採用したSSDの場合、消去を伴わない書き込みは速いが、消去しながらの書き込みは消去に多くの時間がかかるため遅くなるのだ。それゆえ、SLCキャッシュが枯渇すると、QLC NAND SSDは素の書き込み速度が遅いだけでなく、消去にも多くの時間がかかるため、その相乗効果で大きなペナルティーを払うことになるわけだ。

 実のところ、QLC NAND SSDを世に出すにあたっての課題は、SLCキャッシュをどの程度設けるかの「さじ加減」になっている。SLCキャッシュを多めに設けすぎると、それが枯渇したときのペナルティーが大きくなる。一方で、少なすぎると書き込み性能がガクッと落ち、使い勝手が悪くなるからだ。

 H10では、この課題をOptane MemoryをSLCキャッシュの補助として活用するという方法で緩和している。Optane Memoryに最初にデータを書き込むことで、QLC SSD内部の管理に時間的な余裕が生まれ、より効率的な管理を行なうための時間が稼げる。もちろん、SLCキャッシュの容量を超えてしまうような連続書き込みが発生してしまうと意味はないが、一般的なユーザーの使用では、今回使用したH10のSSD部に設けられた約74GBというSLCキャッシュを超えるような連続書き込みが発生するケースは、巨大な動画の保存にでも使用しない限りほぼないだろう。

 本来、3D XPointのような高速な不揮発メモリーは、DRAMの代わりに使うというのが理想だ。3D XPointは低レイテンシーなのでそれだけのポテンシャルはある。しかし、3D XPointをDRAMの代わりに利用しようとすると、現状では相当にコスト高になってしまうという課題がある。Optane Memoryとして利用するのが現実的なラインだろう。

 とはいえ、ベンチマークの結果が示している通り、そのOptane Memory利用でもSLCキャッシュが同容量のSSD 660pよりも一定の性能をうまく引き出し、3D QLC NANDの弱点をうまく補完していると言えるだろう。利用環境の制限はあるものの、起動ドライブだけではなくデータドライブとしてもキャッシュを有効にして使える点も、Optane Memory単体版にはなかった特徴だ。まだ、市場にはH10搭載PCは登場していないが、各社どのようなPCに採用してくるのか楽しみにしたい。

前へ 1 2 3 4 5 6 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

ピックアップ

ASCII.jpメール アキバマガジン

ASCII.jp RSS2.0 配信中