NANDフラッシュメモリ関連の技術記事を読む際の注意

# はじめに
　ストレージの選定時、機器・システムベンダーのホワイトペーパーやWeb上の記事に記載された技術情報を参考にされることがあると思います。

　それらの情報の中には、明らかな間違いとは言えなくても、誤解を招きかねない書き方になっていて、意図した内容、正しい情報が伝わらないのではと危惧するものもあります。

　この点について、先日公開された記事<sup>[1]</sup>を読んでいて気になりましたので、注意喚起を兼ねて、ここで指摘し、説明します。もちろん、私自身も気を付けないといけないのですが。

　今後、技術記事を読まれる際の参考になればと思います。

　なお、ここに記載した記事[1]に対する指摘内容は、アイティメディア株式会社TechTargetジャパン編集部に送付済みです。また、編集部のご判断により、指摘した内容の一部については削除・修正されています。具体的には、記事[1]の末尾に記載されている変更履歴の中の「2020年4月8日18時27分」の内容です。

# 個別の内容
　以下、記事[1]から大きく2つの記述を引用して、それらのポイントを示します。

## 多値NANDフラッシュメモリが選択される理由
　記事[1]には以下のような記述があります。

> PCをはじめとした一般消費者向けの電子機器メーカーが、価格が安いことを理由にMLCのタイプを採用している。

　確かに、ノートPCなどでは多値のNANDフラッシュメモリを採用しているケースが多いです。

　ただし、それは価格だけが理由ではありません。PC等最終製品に搭載するストレージの容量やワークロードが、MLCやTLCといった多値のNANDフラッシュメモリであっても、製品寿命（保証）期間内であれば十分な性能と信頼性といった価格以外の要件も満たすことがわかったため、多値のNANDフラッシュメモリを採用しているのです。

　逆に、「一般消費者向けの電子機器」であっても、SLCのNANDフラッシュメモリが採用されている製品もあります（例：ゲーム機器、医療機器）。それは、容量やワークロードや動作温度条件をはじめ、NANDを制御するコントローラが備える機能など、ストレージに求める様々な要件を満たすものがSLCのNANDフラッシュメモリを搭載した製品だからです。

　NANDフラッシュメモリ関連製品を選定する際には、この「価格以外の要件」がとても重要です。

## QLCの性能がSLCより高い？？
　記事[1]には、掲載直後、以下のような記述がありました（後日修正されました）。

> 　「クアッドレベルセル」（QLC）のNAND型フラッシュメモリは1つのメモリセルに4bitを格納する。SLCやMLC、TLCのタイプよりも安価である一方、耐久性は低くデータ書き換え回数の限度はSLC、MLC、TLCのタイプよりも少なくなる。QLCのタイプが開発されたのは、フラッシュストレージを大容量化するためだ。データを読み出す性能は他のタイプよりも高い。

　この段落では、最後の一文に注意が必要です。

　「データを読み出す性能」が具体的に何を指すのかが不明なのですが、ここでは単純に、NANDフラッシュメモリのデータ読み出し単位、つまりページのデータ読み出しにかかる時間を考えることとします。すると、「性能が高い」ためには「データ読み出しにかかる時間が短い」ことが必要になります。

　しかし、QLC方式で書き込まれたデータの読み出しにかかる時間が、SLCをはじめとしたQLCより多値度の小さい方式で書き込まれたデータの読み出しにかかる時間より短いはずがありません。

　さらに、記事[1]では、上記記述の直前にあるTLCのNANDフラッシュメモリに関する段落で、「TLCのNAND型フラッシュメモリはデータの密度がSLCやMLCのタイプより高いためbit単価が低くなるが、パフォーマンスや耐久性、信頼性はSLCやMLCのタイプに劣る。」と記載しています。それであればなおさら、TLCよりさらにデータの密度が高いQLCの性能が高くなる根拠が不明です。

　このように、NANDフラッシュメモリおよびその応用製品（例：SSD）の性能に関する記述を読む際は、**「性能」の定義**に注意が必要です。「性能」と一言でいっても、NANDフラッシュメモリ単体の話なのか、メモリセル単体の話なのか、SSDのようなシステム全体での話なのか、によってその高低（優劣）が正反対の結果になることもあります。

　さらに言えば、「性能」はいわゆるデータアクセスの速度に関する値（スループットやレイテンシ）だけでなく、消費電力なども含む概念です。例えば「単位消費電力あたりのスループット」という性能指標も考えられます。したがって、性能に関する記事等を読む際は「性能の定義」を確認することが重要です。

　もちろん、QLCのNANDフラッシュメモリにQLC方式（16値）でデータを書き込むのにかかる時間と、QLC方式で書き込まれたデータを読み出すのにかかる時間は、他の方式（SLCやTLCなど）でデータの読み書きに要する時間よりも、長い（＝遅い、性能が低い）です。

　また、記事[1]の以下の記述も、誤解を招きかねない文章です。

> QLCのNAND型フラッシュメモリはデータ読み出しの多い用途に適している。（中略）データ書き込みの回数が多くなるアプリケーションには向いていない。

　確かに、QLCのNANDフラッシュメモリおよびそれを使用した製品は、「データ書き込みの多い用途」には向いていません。

　と言っても、**「QLC NANDはデータ読み出しの多い用途に適している」わけでもありません**。QLC NANDに適したデータは、**書き込みも読み出しも頻度が少ないデータ**です。

　例えば、NANDフラッシュメモリには「同じメモリセルを多数回Readすると、Read時にデータに誤りが生じる可能性が高くなる」という特徴（Read Disturbと呼ばれる）があります。

　このRead Disturbへの対処方法としてデータ移動（Garbage Collection (GC)と同じような処理）を行う製品の場合、同じデータへのRead回数があまりに多いと、1000回程度というQLCの書き換え可能回数を早々と使い切ってしまう可能性があります。したがって、「QLCのNANDフラッシュメモリはデータ読み出しの多い用途に適している」とは**言えません**。

　このように、NANDフラッシュメモリおよびその応用製品の場合、**ReadもWriteも、多少の差はあってもメモリセルにストレスを与えることは変わりないため、ReadとWriteは表裏の関係ではありません**。

# まとめ
　今回は、Web上のNANDフラッシュメモリに関する技術記事を取り上げて、機器・システムベンダーのホワイトペーパーやWeb上の記事をストレージ選定の参考にされる際に注意が必要な点をまとめました。

　これら技術記事を読む上で難しいのは、一つの記述について、ある視点では正しいことが別の視点では正しくない、という可能性があるからです。したがって、そのような情報を正しく理解するためには、ある技術や特徴について複数の視点でとらえる必要があります。

　また、ストレージを選定する、という状況に限って言えば、**「自分のシステム（機器）におけるワークロードや動作温度条件を判断の基準（条件）に据える」ということが一番良い**と考えます。

# References
[1] Erin Sullivan著、TechTargetジャパン訳、「[「SLC」「MLC」「TLC」「QLC」の違いは？　3Dとは？　NAND型フラッシュの基礎](https://techtarget.itmedia.co.jp/tt/news/2004/06/news05.html)」、2020年4月6日閲覧

# ライセンス表記
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="クリエイティブ・コモンズ・ライセンス" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />この記事は<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンス</a>の下に提供されています。