全国高校eスポーツ選手権運営の舞台裏。13:55NANDフラッシュメモリには、1個のメモリセルに複数のビット(bit)を記憶する「多値記憶技術」が採用されている。cell)」技術である。この技術を採用した製品の量産が始まったのは、今年(2018年)半ばのことだ。量産は始まったばかりであり、現在のところ、NANDフラッシュメモリの主流ではない。cell)」」技術である。NAND技術とTLC技術を組み合わせた、シングルダイで512Gbitを記憶する大容量フラッシュメモリである。同じ技術によるカットダウン版(シリコンダイを小さくしたバージョン)で、記憶容量が256Gbitのフラッシュメモリも主力製品の1つと言える。NANDフラッシュへの移行は、シリコンダイ面積当たりの記憶密度が約1.3倍に向上するというメリットをもたらす。シリコンダイ面積が同じであれば、QLC技術を導入するだけで記憶容量が約1.3倍に増える。シリコンダイ面積は大量生産段階における製造コストにおおむね比例するので、同じ製造コストで記憶容量が約1.3倍のフラッシュメモリを作れることになる。実際の製品はもっと過激だ。NAND”採用SSD)。同じ64層のTLC技術によるシリコンダイと比べ、最大の記憶容量は2倍と大幅に拡大した。drive)やUSBメモリ、UFSなどのフラッシュストレージで、記憶容量当たりの価格が大幅に低下することが期待できる。良いことばかりとはならない。すべての技術にはつねに、トレードオフが存在する。デメリットあるいは弱点、問題点がある。NANDフラッシュに比べ、書き込み動作が大幅に遅くなり、読み出し動作は少し遅くなり、書き換え可能回数は大幅に少なくなり、データ保存期間は短くなる。NANDフラッシュを内蔵するIntelのSSD「660p」は、QLC技術の弱点である「書き換え可能回数の減少」がSSDの仕様に悪影響を及ぼしている。NANDフラッシュを内蔵する既存のSSD製品「600p」に比べると、QLC技術のSSD「660p」ではSSD全体を書き換え可能な回数が半分未満に減少しているのだ。SSDの書き換え回数の比較。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フラッシュメモリが過去に国際学会で発表されている。NANDフラッシュがそれだ。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/セル)モードにおける消去時間と書き込み時間、読み出し時間。Technologyが2013年2月に国際学会ISSCCで発表したスライドからまたTLC/MLC/SLCモードにおける書き込みスループット(秒当たりのデータ量)は7MB/11MB/36MB、読み出しスループット(秒当たりのデータ量)は182MB/182MB/297MBとなっている。書き込みスループットでは、TLCとSLCで5倍強の違いがある。TLC(3bit/セル)/MLC(2bit/セル)/SLC(1bit/セル)モードにおける書き込みスループット(表中の「IN」)と読み出しスループット(表中の「OUT」)。NAND技術に切り換わったことで、TLC技術のNANDフラッシュメモリは性能が向上した。NANDフラッシュに共通の弱点である、書き込みの性能が向上したことで、SLCバッファ技術の必要性はプレーナー技術に比べると低下した。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フラッシュメモリでは、実際に使われたとみられる。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バッファ容量の変化による、書き換え可能回数(エンデュランス)の改善度合いを検討したもの。Caching」と呼称)」のSLCバッファ技術を検討した事例。SLCだけなく、MLCやTLCもQLCに対しては原理的にはバッファとして利用できる。Summit(FMS)」で発表したスライドからこれに対して第2世代のSLCバッファ技術では、ストレージ全体に占めるユーザーデータの割合をつねに監視してSLCバッファの容量を動的に変える。新品でユーザーデータがゼロのときは、SLCバッファの記憶容量は最大値に設定する。ユーザーがストレージに格納するデータが増加したら、SLCバッファの記憶容量を段階的に減らす。ユーザーがストレージに格納するデータが減少したら、SLCバッファの記憶容量を段階的に増やす。このようにしてSLCバッファとユーザーデータの競合を避けつつ、ストレージの性能を最大化する。第2世代のSLCバッファ技術で悩ましいのは、ユーザーデータとSLCバッファの容量の兼ね合いをどのように設定するか、だろう。ユーザーデータとSLCバッファの合計容量が、ストレージ全体のどのくらいの割合を占めるのかを、決める必要がある。その割合は一定なのか、それともユーザーデータの割合によって変更するのかも、選択しなければならない。「第2世代」のSLCバッファ技術(「SLCキャッシュ技術」と呼ぶこともある)の概要IBMが「第2世代」のSLCバッファ技術を検討した事例。SLCバッファ容量の変化による、書き換え可能回数(エンデュランス)の改善度合いを検討したもの。アクセスの20%が書き込みであると仮定した。第1世代に比べると、書き換え可能回数が増加している。Caching」と呼称)」のSLCバッファ技術を検討した事例。NANDフラッシュメモリに導入したことが分かっているストレージ製品は、2つある。これら2つのSSDの製品の中で、Intelの「660p」は第2世代のSLCバッファ技術を導入したことが明らかになっている。「660p」の製品仕様を調べると、SLCバッファ技術は書き込み性能の向上に大きく寄与していることがうかがえる。具体的な性能数値を見てみよう。SSDの「660p」が大幅に向上している。シーケンシャル書き込みのスループットは3倍強、ランダム書き込みのIOPS値は2倍弱に達する。SSD(SLCバッファあり)の性能比較。Intelが公表している製品仕様を筆者がまとめたもの。SSD「660p」が、SLCバッファの容量をどのように制御しているか。米国のIT系Webメディア「Anandtech」が報じた記事がある。この記事を元に、どのような制御がなされているかを推定してみた。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バッファを管理していることがわかる。SSD「660p」のSLCバッファ容量とQLC換算容量。1TB品について計算した結果。このSSDはSLCバッファを搭載していることが明らかになっている。SLCバッファの容量が固定なのか、可変なのかは公表されていないようだ。そこで明らかになっているSLCバッファの容量をQLCに換算してみた。すると、SSD全体の44%~55%と大きな割合を占めていることが分かった。全体の半分近い容量を固定しているとは考えにくい。P1」における、このバッファ容量は最大値であり、「660p」と同様に第2世代のSLCバッファ技術(ユーザーデータ量に応じてバッファ容量を増減させる技術)を採用している可能性が高そうだ。P1」のSLCバッファ容量とQLC換算容量。SSDの性能は向上する。その制御はかなり複雑であり、コントローラの負担は大きい。オーバープロビジョニングやウェアレベリング、誤り訂正などの制御は、SLCバッファ技術の採用によって調整や変更などを考慮すべき事柄である。NANDフラッシュメモリを使ったストレージの開発では、これまでもコントローラの設計は複雑化する一方だった。NANDフラッシュメモリの登場は、コントローラの設計作業をさらに複雑で手間のかかるものにするだろう。それでも「やるしかない」のがフラッシュストレージ開発の辛いところだ。