福田昭のセミコン業界最前線

QLC技術を駆使する超大容量NANDフラッシュの性能向上技術

 NANDフラッシュメモリには、1個のメモリセルに複数のビット(bit)を記憶する「多値記憶技術」が採用されている。製品化されているNANDフラッシュの中で、もっとも多くのビット(bit)数を記憶する技術は、1個のメモリセルに4bitのデータを記憶する「QLC(quadruple level cell)」技術である。この技術を採用した製品の量産が始まったのは、今年(2018年)半ばのことだ。量産は始まったばかりであり、現在のところ、NANDフラッシュメモリの主流ではない。

 現在のNANDフラッシュメモリ製品で主流となっている多値記憶技術は、1個のメモリセルに3bitのデータを記憶する「TLC(triple level cell)」」技術である。主力製品はメモリセルの積層数が64層の3D NAND技術とTLC技術を組み合わせた、シングルダイで512Gbitを記憶する大容量フラッシュメモリである。同じ技術によるカットダウン版(シリコンダイを小さくしたバージョン)で、記憶容量が256Gbitのフラッシュメモリも主力製品の1つと言える。

 これらのTLC技術による3D NANDフラッシュから、新たなQLC技術による3D NANDフラッシュへの移行は、シリコンダイ面積当たりの記憶密度が約1.3倍に向上するというメリットをもたらす。シリコンダイ面積が同じであれば、QLC技術を導入するだけで記憶容量が約1.3倍に増える。シリコンダイ面積は大量生産段階における製造コストにおおむね比例するので、同じ製造コストで記憶容量が約1.3倍のフラッシュメモリを作れることになる。

 実際の製品はもっと過激だ。64層の3D NAND技術とQLC技術を組み合わせた、シングルダイで1Tbit(1,024Gbit)を記憶する超大容量フラッシュメモリがIntelとMicron Technologyの共同開発によって実用化されている(参考記事:Micron、7mm厚2.5インチで容量7.68TBの“QLC NAND”採用SSD)。同じ64層のTLC技術によるシリコンダイと比べ、最大の記憶容量は2倍と大幅に拡大した。SSD(solid state drive)やUSBメモリ、UFSなどのフラッシュストレージで、記憶容量当たりの価格が大幅に低下することが期待できる。

 もちろん、良いことばかりとはならない。すべての技術にはつねに、トレードオフが存在する。デメリットあるいは弱点、問題点がある。QLC技術の3D NANDフラッシュではTLC技術の3D NANDフラッシュに比べ、書き込み動作が大幅に遅くなり、読み出し動作は少し遅くなり、書き換え可能回数は大幅に少なくなり、データ保存期間は短くなる。つまり、性能が低下する。

TLC技術からQLC技術に移行するときの利点と問題点

 例えば本コラムの前回(QLC SSDがコスト低減を武器にニアライン/クライアントHDDを侵食)で述べたように、QLC技術の3D NANDフラッシュを内蔵するIntelのSSD「660p」は、QLC技術の弱点である「書き換え可能回数の減少」がSSDの仕様に悪影響を及ぼしている。ほぼ同じ物理仕様でTLC技術の3D NANDフラッシュを内蔵する既存のSSD製品「600p」に比べると、QLC技術のSSD「660p」ではSSD全体を書き換え可能な回数が半分未満に減少しているのだ。

TLC SSDとQLC SSDの書き換え回数の比較。Intelの公表資料を元に筆者がまとめた

SLC技術のNANDフラッシュを大容量バッファに使う

 上記のデメリット(性能の低下)を大幅に緩和するため、QLC NANDフラッシュのストレージで標準的に導入されると見られる技術が、「SLC(single level cell)」技術のNANDフラッシュを大容量バッファに使うことだ。

 「SLC」技術とは1個のメモリセルに1bitのデータを記憶する技術を意味する。DRAMやSRAMなどの半導体メモリとは違い、NANDフラッシュメモリでは1個のメモリセルに2bit以上を記憶する多値記憶技術が普及したため、区別する意味で後からこのように名付けられた。

 NANDフラッシュメモリの多値記憶技術では一般に、1個のメモリセルに記憶するビット(bit)数が増えると、性能が低下する。書き込みと読み出しが遅くなり、書き換え可能な回数が減少し、データを保存しておける期間が短くなる。言い換えると「性能ではほぼ最強」なのがSLC技術である。もっとも高速であり、書き換え可能な回数がもっとも多く、データを保存しておける期間がもっとも長い。ただし、記憶容量は小さい。例えばすでに述べたQLC技術の1TbitフラッシュメモリをSLC技術に変更すると、記憶容量は4分の1、すなわち256Gbitに減少する。

多値記憶技術の概要
多値記憶技術によるNANDフラッシュの性能の違い

SLCはQLCにできないが、その逆は難しくない

 そこでQLC技術を導入したNANDフラッシュメモリのメモリセルアレイの一部を、SLC技術で読み書きするバッファとする。この領域は「SLCバッファ」あるいは「SLCキャッシュ」と呼ばれる。

 NANDフラッシュメモリの読み書きを異なる多値記憶技術で実行することそのものは、技術的にはそれほど難しくない。もちろん、SLC技術で開発したNANDフラッシュメモリをTLC技術で読み書きすることは困難である。しかしその逆は比較的容易である。もっともシンプルな方法は、周辺回路で多値記憶のモードを切り換えられるようにしておくことだ。実際に、そのようなNANDフラッシュメモリが過去に国際学会で発表されている。

 IntelとMicron Technology(以降は「Micron」と表記)が共同開発して2013年2月に国際学会ISSCCで試作発表した、TLC技術の128Gbit NANDフラッシュがそれだ。20nm世代のプレーナー型NANDフラッシュメモリで、TLC技術とMLC(multi level cell、2bit/セル)技術、SLC技術の各モードをユーザーがコマンド入力によって動的に切り換えられる。

 試作したNANDフラッシュの性能が、TLC技術とMLC技術、SLC技術の切り換えによってどのように変化するかも、IntelとMicronは定量的な値を公表した。TLC/MLC/SLCモードにおける消去時間(標準値)は3ms/2ms/2ms、書き込み時間(標準値)は2.3ms/1.4ms/0.45ms、読み出し時間(標準値)は90μs/90μs/55μsとなっている。いずれもSLCモードの性能がもっとも高く、とくに書き込み動作における性能の差が非常に大きいことが分かる。

TLC(3bit/セル)/MLC(2bit/セル)/SLC(1bit/セル)モードにおける消去時間と書き込み時間、読み出し時間。IntelとMicron Technologyが2013年2月に国際学会ISSCCで発表したスライドから

 またTLC/MLC/SLCモードにおける書き込みスループット(秒当たりのデータ量)は7MB/11MB/36MB、読み出しスループット(秒当たりのデータ量)は182MB/182MB/297MBとなっている。書き込みスループットでは、TLCとSLCで5倍強の違いがある。

TLC(3bit/セル)/MLC(2bit/セル)/SLC(1bit/セル)モードにおける書き込みスループット(表中の「IN」)と読み出しスループット(表中の「OUT」)。IntelとMicron Technologyが2013年2月に国際学会ISSCCで発表したスライドから

SLCバッファ技術の進化とその世代

 本コラムの前回で述べたように、NANDフラッシュメモリ技術がプレーナー(2D)技術から3D NAND技術に切り換わったことで、TLC技術のNANDフラッシュメモリは性能が向上した。とくにNANDフラッシュに共通の弱点である、書き込みの性能が向上したことで、SLCバッファ技術の必要性はプレーナー技術に比べると低下した。しかしQLC技術のNANDフラッシュメモリでは、3D NAND技術でも何らかの性能向上策が必要となっている。

 その筆頭がSLCバッファ技術であり、書き込み性能を高める切り札でもある。もう1つは誤り訂正(ECC)技術の強化だ。こちらは製造歩留まりの向上と、長期信頼性の低下を食い止めるために欠かせない。ただし誤り訂正(ECC)技術の強化は、読み出し速度と書き込み速度を低下させるという問題点を抱える。ECC技術の問題点を解決するためにも、SLCバッファ技術の導入が望ましい、という構図になっている。そこで本稿では、SLCバッファ技術について少し詳しく述べたい。

 SLCバッファ技術としては大別すると、「第1世代」と「第2世代」の技術が存在する。またそれ以前の時期に、「第0(ゼロ)世代」とも呼べる原始的なSLCバッファ技術が開発されていた。

SLCバッファ技術の進化とその世代

 これらの技術世代のおもな違いは、SLCバッファ領域をどこにレイアウトするか、SLCバッファ領域の記憶容量が固定/可変なのか、によって生じる。「第0(ゼロ)世代」はメモリセルアレイではなく、入出力バッファの全体あるいは一部をSLC技術のNANDフラッシュメモリとするもので、記憶容量が固定であるとともに、容量が16KB~64KBと非常に小さい。

 第0世代のSLCバッファは性能向上策というよりも、DRAMバッファのデータ消失を防ぐという意味合いが強い技術である。SSDを始めとするフラッシュストレージでは、DRAMをコントローラに外付けしてバッファとすることが多い。DRAMバッファは書き込みがNANDフラッシュよりもはるかに高速なメモリなのだが、突発的な電源遮断によってDRAMバッファの内容が失われてしまうというリスクがある。

 対策として、DRAMバッファのデータをNANDフラッシュメモリに書き込むまでの間、電源を維持するために大容量のコンデンサを搭載するという手法があり、実際にも使われている。ただしボードの実装と長期信頼性の観点から、この手法には問題がある。まず、コンデンサを実装する面積がNANDフラッシュメモリの搭載可能面積を減らすので、ストレージの大容量化を阻害する。またコンデンサは電子部品としてはやや信頼性に欠ける。

 そこでコンデンサの容量を削減するために、NANDフラッシュメモリの入出力バッファをSRAMではなく、SLC技術のNANDフラッシュとすることが考えられた。プレーナー技術の大容量NANDフラッシュメモリでは、実際に使われたとみられる。

「第0(ゼロ)世代」のSLCバッファ技術の概要

QLC NANDフラッシュの一部をSLC NANDのバッファとして使う

 「第1世代」と「第2世代」のSLCバッファ技術は、QLC NANDフラッシュメモリのメモリセルアレイの一部をSLC NANDメモリとして使うものだ。第1世代はSLCバッファの記憶容量が固定、第2世代はSLCバッファの記憶容量が可変、という違いがある。いずれもSLC領域とQLC領域は、メモリセルアレイ内でブロック単位で管理する。

 第1世代のSLCバッファ技術は、SLCバッファの記憶容量が第0世代よりもはるかに大きいので、書き込み性能が大きく向上する。また大容量のSLCバッファを設けることでストレージのコントローラに外付けするDRAMバッファの記憶容量を減らすとともに、DRAMバッファのバックアップ用コンデンサを減らせるというメリットもある。

 第1世代のSLCバッファ技術で悩ましいのは、バッファ容量の大きさの選択と、ユーザーデータが増加してバッファと競合した場合の扱いだろう。フラッシュストレージは汎用品なので、どのような使われ方をするかが分からない。新品に近い状態で高い性能を出すには、バッファ容量は大きいことが望ましい。しかしSLCバッファの容量が大きいと、ユーザーが使える記憶容量は実効的には大きく減少する。するとストレージ全体の容量に対するユーザーデータの割合が低い段階で空き領域がなくなり、バッファ領域とユーザー領域の競合が発生する。

 競合が発生したときにSLCバッファの容量を維持したままだと、ストレージの製品仕様よりもユーザーが利用可能な記憶容量がはるかに低い、という事態が起こる。これはユーザーからの強いクレームを招きかねない。これを避けるには、競合が発生した段階でSLCバッファの設定を取りやめるか、あるいはSLCバッファの容量をきわめて小さくする必要がある。するとストレージの書き込み性能が一気に低下する。

「第1世代」のSLCバッファ技術(「SLCキャッシュ技術」と呼ぶこともある)の概要
IBMが「第1世代」のSLCバッファ技術を検討した事例。SLCバッファ容量の変化による、書き換え可能回数(エンデュランス)の改善度合いを検討したもの。2018年8月にイベント「Flash Memory Summit(FMS)」で発表したスライドから
Micronが「第1世代(注:Micronは「Intermediate Caching」と呼称)」のSLCバッファ技術を検討した事例。SLCだけなく、MLCやTLCもQLCに対しては原理的にはバッファとして利用できる。2018年8月にイベント「Flash Memory Summit(FMS)」で発表したスライドから

 これに対して第2世代のSLCバッファ技術では、ストレージ全体に占めるユーザーデータの割合をつねに監視してSLCバッファの容量を動的に変える。新品でユーザーデータがゼロのときは、SLCバッファの記憶容量は最大値に設定する。ユーザーがストレージに格納するデータが増加したら、SLCバッファの記憶容量を段階的に減らす。ユーザーがストレージに格納するデータが減少したら、SLCバッファの記憶容量を段階的に増やす。このようにしてSLCバッファとユーザーデータの競合を避けつつ、ストレージの性能を最大化する。

 第2世代のSLCバッファ技術で悩ましいのは、ユーザーデータとSLCバッファの容量の兼ね合いをどのように設定するか、だろう。まず、ユーザーデータとSLCバッファの合計容量が、ストレージ全体のどのくらいの割合を占めるのかを、決める必要がある。そしてその割合は一定なのか、それともユーザーデータの割合によって変更するのかも、選択しなければならない。

「第2世代」のSLCバッファ技術(「SLCキャッシュ技術」と呼ぶこともある)の概要
IBMが「第2世代」のSLCバッファ技術を検討した事例。SLCバッファ容量の変化による、書き換え可能回数(エンデュランス)の改善度合いを検討したもの。アクセスの20%が書き込みであると仮定した。第1世代に比べると、書き換え可能回数が増加している。2018年8月にイベント「Flash Memory Summit(FMS)」で発表したスライドから
Micronが「第2世代(注:Micronは「Dynamic Caching」と呼称)」のSLCバッファ技術を検討した事例。2018年8月にイベント「Flash Memory Summit(FMS)」で発表したスライドから

QLC SSD製品では「第2世代」のSLCバッファを採用

 これまでにSLCバッファをQLC NANDフラッシュメモリに導入したことが分かっているストレージ製品は、2つある。1つはIntelが2018年8月に発表したSSD「660p」であり、もう1つは、Micronが2018年10月に発表したSSD「Crucial P1」である。

 これら2つのSSDの製品の中で、Intelの「660p」は第2世代のSLCバッファ技術を導入したことが明らかになっている。「660p」の製品仕様を調べると、SLCバッファ技術は書き込み性能の向上に大きく寄与していることがうかがえる。

 具体的な性能数値を見てみよう。既存世代のTLC SSD「600p」とQLC SSD「660p」で読み出しと書き込みの性能を比較すると、読み出し性能は両者であまり変わらないのに対し、書き込み性能はQLC SSDの「660p」が大幅に向上している。シーケンシャル書き込みのスループットは3倍強、ランダム書き込みのIOPS値は2倍弱に達する。

TLC SSDとQLC SSD(SLCバッファあり)の性能比較。Intelが公表している製品仕様を筆者がまとめたもの。SLCバッファによって書き込み性能が大幅に向上していることがうかがえる

 IntelのQLC SSD「660p」が、SLCバッファの容量をどのように制御しているか。米国のIT系Webメディア「Anandtech」が報じた記事がある。この記事を元に、どのような制御がなされているかを推定してみた。

IntelのQLC SSD「660p」におけるユーザーデータ量(ユーザーがデータを格納した容量)とSLCバッファ容量の関係。米国のIT系Webメディア「Anandtech」が掲載した記事をベースに筆者がまとめたもの

 ユーザーデータがゼロのときに、例えば1.024TB(1,024GB)品のSLCキャッシュ容量は140GBとなっている。これはQLCに換算すると4倍、すなわち560GBに相当するメモリセルアレイがSLCバッファに割り当てられていることを意味する。SSDの記憶容量である1,024GBの、55%に相当する。SSD全体の半分強をバッファに割り当てるというのは、かなりの大きさだ。

 「660p」では、ユーザーデータがSSD全体に占める割合が10%前後増えるごとに、SLCバッファの容量を少しずつ減らしている。最終的にはユーザーデータの割合が75%を超えると、SLCバッファの容量は最小値になる。SLCバッファをゼロにするという制御はしていないようだ。

 ユーザーデータがSSDに占める割合とSLCバッファ(QLC換算値の容量)がSSDに占める割合の推移を調べると、一見して分かることがある。両者の合計がSSD全体の80%前後になるように制御しているように見える。言い換えると、ユーザーデータとなる空き容量をSSD全体の20%ほど、つねに確保している。一定のポリシーを持ってSLCバッファを管理していることがわかる。

IntelのQLC SSD「660p」のSLCバッファ容量とQLC換算容量。1TB品について計算した結果。SLCバッファ容量(QLC換算容量)とユーザーデータ量の合計が80%前後となるように、SLCバッファ容量を変化させていることが分かる

 最後にMicronがつい最近に製品発表したコンシューマ向けQLC SSD「Crucial P1」を見てみよう。このSSDはSLCバッファを搭載していることが明らかになっている。しかしSLCバッファの容量が固定なのか、可変なのかは公表されていないようだ。

 そこで明らかになっているSLCバッファの容量をQLCに換算してみた。すると、SSD全体の44%~55%と大きな割合を占めていることが分かった。全体の半分近い容量を固定しているとは考えにくい。「Crucial P1」における、このバッファ容量は最大値であり、「660p」と同様に第2世代のSLCバッファ技術(ユーザーデータ量に応じてバッファ容量を増減させる技術)を採用している可能性が高そうだ。

QLC SSD「Crucial P1」のSLCバッファ容量とQLC換算容量。PC Watchの記事から筆者が計算したもの

 SLCバッファ技術の導入によってQLC SSDの性能は向上する。ただしその制御はかなり複雑であり、コントローラの負担は大きい。オーバープロビジョニングやウェアレベリング、誤り訂正などの制御は、SLCバッファ技術の採用によって調整や変更などを考慮すべき事柄である。

 NANDフラッシュメモリを使ったストレージの開発では、これまでもコントローラの設計は複雑化する一方だった。QLC NANDフラッシュメモリの登場は、コントローラの設計作業をさらに複雑で手間のかかるものにするだろう。それでも「やるしかない」のがフラッシュストレージ開発の辛いところだ。