はじめてのNAND フラッシュメモリ Part4 ~知っておきたいNANDフラッシュメモリ製品の機能 ~
NANDフラッシュ製品をはじめてご検討いただくお客様を対象に、NANDフラッシュメモリについて4回に分けて説明しています。
4回目となる今回(Part4)は、「知っておきたいNANDフラッシュメモリの機能」について説明します。
はじめてのNAND フラッシュメモリ Part1 ~メモリ基礎編~はこちら>>
はじめてのNAND フラッシュメモリ Part2 ~フラッシュ基礎編~はこちら>>
はじめてのNAND フラッシュメモリ Part3 ~知っておきたいNANDフラッシュメモリの特長~はこちら>>
NANDフラッシュメモリ製品の機能
NANDフラッシュメモリ製品に搭載されている様々な機能とその役割
- 搭載機能について
NANDフラッシュメモリは、Part2,Part3で記載しました様にメモリセルへのデータの書き込み回数やデータ保持に気を付けて使う必要があります。そのため、eMMC、SD Card、SSD等のNAND製品には、NANDチップに加え、それを制御するコントローラICおよびソフトウェア(ファームウェア)が搭載され、データの書き込み状態をコントロールしています。したがってNAND製品の設計製造には、NAND単体の特性をよく理解し、コントローラICやファームウェアにて適切にNANDをコントロールすることが重要ですが、基本的には製品側の機能にて対応していますので、ユーザー側ではあまり意識しなくても使えるようになっています。以下に、NAND製品に搭載された代表的な機能について記載します。
【NAND製品搭載機能】
- データの書き込み/読み出し/消去の管理
- ウェアレベリング(書き込み平準化)
- エラー訂正機能(ECC機能)
- オートリフレッシュ機能
- 電断対策
1.データの読み出し/書き込み/消去の管理
前述の通りNANDフラッシュメモリ製品は、コントローラICで制御されていますので、外部(HOST)からNANDフラッシュに対して直接アクセスできません。データの書き込みは、HOSTが論理的なブロック(論理ブロック)を指定してデータを書き込みますが、NANDコントローラは、データが書き込まれていないブロック(物理ブロック)を見つけ、書き込みを行います。この時、同時に論理ブロックと物理ブロックを紐づけした論物(論理-物理)変換テーブルが作成されます。また、読み出しは、この論物変換テーブルを参照してコントローラがNANDフラッシュからデータを読み出し、HOSTに出力します。また、先に書き込んだ論理アドレスにデータが上書きされ、不要となった物理アドレス上のデータは不要データとしてマーキングされ、NANDコントローラが適当なタイミングで自動的にデータを消去します。ユーザーは、意識的にブロックを消去する必要はありません。
2.ウェアレベリング(書き込み/消去回数の平滑化)
NANDフラッシュメモリにおいて、ある特定のブロックのみをProgram/Eraseし、その回数が寿命を超えると、そのブロックは使えなくなる可能性があります。その結果、製品仕様としてのメモリ容量が足りなくなり、製品は寿命を迎えることとなります。このような状況を防ぐためには、メモリブロックのP/E_cycleが均等なるように制御する必要があります。この制御は、NANDコントローラが各ブロックのP/E_Cycleをモニターし前述の論物変換テーブルを利用することで実現しています。
3.エラー訂正機能(ECC機能)
データ保持(Data Retention)
フラッシュメモリのデータは、Part3でも記載しました通り、フローティングゲート内の電子によってデータを保持しており、時間が経つにつれて電子が抜けて行きます。メモリセルのしきい値が基準となる値を超えると、読み出しエラーが発生します。この時、エラーのビット数が少ないうちは、ECC(Error Correcting Code:エラー訂正符号)を使ってデータを訂正することができます。
ECCは、元のデータから冗長ビットが生成され、元のデータとともに保存されます。データを読み出す際に、データに誤りがあると、その場所を特定しエラーを訂正できるように設計されています。NANDフラッシュメモリに使用されるECCの種類として、BCH(Bose-Chaudhuri-Hocquenghem)やLDPC(Low-Density Parity-Check)があり、LDPCの方が訂正能力が高いとされています。
4.オートリフレッシュ機能
読み出しエラーbit数がECC訂正能力に達する前(正しくデータが読み出せるうち)に、新たなブロックにデータをコピーする(移す)ことで、メモリセルのしきい値は、書込み直後の位置に戻せます(下図の上)。NANDコントローラは、ECCエラーbit数を常時モニターし、あるしきい値を超えた場合(下図の下)、優先順位に従い自動的にデータを書き移すことで、セルのしきい値を書き込み直後の状態に戻します。この時、自動的に論物変換テーブルも書き換えます。これを、オートリフレッシュと呼びます。製品は電源投入されている限り、このオートリフレッシュが働きデータが保持されますが、電源が入っていない場合は、オートリフレッシュが働かないため、デバイスの温度環境も加味してデータリテンションに問題ないことを検証する必要があります。温度環境を加味したデータリテンションの影響は、各製品のメーカにお問い合わせいただくことで確認できます。
5・電断対策
P/Eサイクル(Endurance)からのメモリ容量選択方法
多値フラッシュメモリにおいて、上位ページ書き込み(2bitの4値を書込み)中に電断が発生すると、以前に書き込んだ(初期1bitの2値の)データが破壊される問題があります。例えば、下記〔B〕の様にデータを書き込んでいる場合、書込みシーケンス①で電断が発生すると、セルしきい値は途中で止まり[11]→[10]になる可能性があります。また書込みシーケンス②で電断が発生すると、セルしきい値は[10]→[01]になる可能性があります。すなわち、初めに書かれたデータが、後の書込み時に起こった電断によって、データが破壊される可能性が生じます。これが、多値メモリの電断による最大の問題点です。この問題を防ぐため、NANDフラッシュのコントローラでは、上位ページにデータを書き込む場合、初期データは、書き込みが完了するまで別に保存されています。そして書き込みが正常に完了したことを確認すると、初期データは適時消去されます。電断によりデータが正しく書き込まれなかった場合は、次の電源投入時に、初期データを元に戻すように論物変換テーブルが書き換えられ、データが復活します。以上が、多値メモリが書き込み時に電断した場合に取られる対策となります。
また、書き込み時の電断をいち早く検知し、書き込み動作を止めるための回路を搭載している製品もあります。これは、フラッシュメモリの電源電圧をモニターし、電源電圧が規格値以下に下がると書込み動作を止め、中途半端なデータが書かれることを防ぎます。
以上、NANDフラッシュメモリ製品に搭載されている主な機能となります。
NANDフラッシュメモリは、NANDコントローラチップとファームウェアによって制御されていますので、ユーザが特性を意識しないで簡単に使えるように設計されていますが、デバイスをより良く使うためには、その機能と特性を理解して使いこなすことが重要です。