はじめに

このページでは、以前配信したなぜ組み込みシステムにNANDフラッシュメモリーが注目されるのか、その理由と実装の注意点(1)の続きで、NANDフラッシュメモリー特有のビットエラーと不良ブロックについて、どのような現象か?どのように対策したらよいのか?解説します。

前回の記事はこちらなぜ組み込みシステムにNANDフラッシュメモリーが注目されるのか、その理由と実装の注意点(1)をご覧ください。

 

 

NANDフラッシュメモリ特有の現象(1)ビットエラー

NANDフラッシュメモリーは、ビットエラーつまりデータのビット化けが発生する可能性のある不揮発メモリです。どのメーカーのどのNANDフラッシュメモリーを購入しても一定数のビットエラーが発生する可能性があります。正しくデータを読書きするには、ビットエラーの検出と訂正をMCU/SoC側またはNANDフラッシュメモリー側でおこなう必要があります。

NANDフラッシュメモリーのデータシートには、通常何ビットのビットエラーが発生する可能性があるのか記載されています。例えば1ページが2112バイトで構成された製品でビットエラー数が1ビットと記載されている場合、図4に示す通り、1ページ(2112バイト)の4分の1である1セクター(528バイト)当たり1ビットのビットエラーが発生する可能性があることを意味します。1ページ(2112バイト)単位で見ると最大で4ビットのビットエラーが発生する可能性があります。データシートに記載されているビットエラー数は、セクター当たりの数であることに注意が必要です。

ビットエラー数は、製造プロセスに大きく依存しています。例えば40nm世代の製造プロセスは1ビットですが、30nm世代で4ビット、20nm世代で8ビットと世代が進むにつれて、より多くのビットエラーが発生する可能性があります。多くのビットエラーを検出・訂正するには、より強力なECCのアルゴリズムを使用する必要があり、ECCに必要な処理時間が長くなるためデータの読出し時間も長くなります。

ウィンボンドのシリアルNANDフラッシュメモリー「W25N01GVZEIT」は、46nmプロセスで製造しており、1セクター(528Byte)当たり1ビットのビットエラーが発生する可能性があります。さらに、このシリアルNANDフラッシュメモリーの内部には、ハードウェアロジックによるECCが実装されており、ビットエラーの検出と1ビットまでのビットエラーの訂正が可能です。

NANDフラッシュメモリー特有の現象(2)不良ブロック

NANDフラッシュメモリーは、出荷時点で既に正しく読み書きができないブロックが含まれている可能性があります。さらに、出荷後に読み書きを繰り返すことで正しく読み書きができなくなったブロックも発生します。前者を初期不良ブロック(Initial Bad Block)、後者を後発不良ブロック(Additional Bad Block)と呼びます。初期不良ブロックを検出した場合、または後発不良ブロックが発生した場合、これらの不良ブロックにアクセスしないよう制御が必要です。

不良ブロックもビットエラーと同様に、どのメーカーのどのNANDフラッシュメモリーを購入しても一定数発生する可能性があります。通常、製品寿命を迎えるまでに不良ブロックがどれだけ発生する可能性があるかはデータシートに記載されています。ウィンボンドのNANDフラッシュメモリー製品は、現在全製品で総ブロック数の2%が不良ブロック(初期+後発)になる可能性があると規定しています。例えば、シリアルNANDフラッシュメモリー「W25N01GVZEIT」は、総ブロック数が1024ブロックです。最大で20ブロックが不良ブロックになる可能性があるとデータシートで規定しています。

不良ブロックに対するアクセス制御は、管理テーブル(LUT:Look Up Table)でおこなうのが一般的です。例えばブロック50で初期または後発不良ブロックが発生した場合、図5の右下に示すように管理テーブルを作成します。NANDフラッシュメモリーへ読書きする際、毎回この管理テーブルを参照することによって、ブロック50にアクセスしても実際にはブロック1023にアクセスすることになり、不良ブロックであるブロック50へのアクセスを回避できます。

管理テーブルは、システムの電源OFF時に失われると次回電源ON時に困ってしまうので、不揮発メモリーに保存する必要があります。MCU/SoC側に不揮発メモリ領域があれば、そちらに保存しても構いませんが、貴重なリソースをNANDフラッシュメモリーのために一部食いつぶすことになってしまいます。ウィンボンドのシリアルNANDフラッシュメモリー「W25N01GVZEIT」は、内部に管理テーブル専用の不揮発メモリー領域を持っており、MCU/SoC側への負担なく不良ブロックの管理ができます。

まとめ

組み込みシステムに最適化されたシリアルNANDフラッシュメモリー「W25N01GVZEIT」がどのような製品なのか、また、不良ブロックとビットエラーに気を付けて使う必要があることを解説しました。ですが、シリアルNANDフラッシュメモリーを利用する際にはデータの信頼性にも気を配る必要があります。Endurance、Retention、Disturbなど、書込んだデータの信頼性の面から、シリアルNANDフラッシュメモリーの使い方に関する解説は次の機会にしたいと思います。

関連リンクはこちら

お問い合わせ / お見積もり

本製品に関してご質問、サンプル、見積もりなどのご要望がございましたら以下より問い合わせください。

Winbond メーカー情報Topに戻る

Winbondのメーカー情報Top ページに戻りたい方は以下をクリックください。