(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024049596
(43)【公開日】2024-04-10
(54)【発明の名称】メモリ制御装置及びメモリ制御装置の制御方法
(51)【国際特許分類】
G06F 12/00 20060101AFI20240403BHJP
G06F 12/02 20060101ALI20240403BHJP
G11C 16/34 20060101ALI20240403BHJP
G11C 16/04 20060101ALI20240403BHJP
G11C 29/42 20060101ALI20240403BHJP
G11C 29/52 20060101ALI20240403BHJP
G06F 11/22 20060101ALI20240403BHJP
【FI】
G06F12/00 550Z
G06F12/00 597U
G06F12/02 510A
G11C16/34 120
G11C16/04 170
G11C29/42
G11C29/52
G06F11/22 607Z
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022155905
(22)【出願日】2022-09-29
(71)【出願人】
【識別番号】320012037
【氏名又は名称】ラピステクノロジー株式会社
(74)【代理人】
【識別番号】110001025
【氏名又は名称】弁理士法人レクスト国際特許事務所
(72)【発明者】
【氏名】長塚 純一
【テーマコード(参考)】
5B048
5B160
5B225
5L206
【Fターム(参考)】
5B048AA19
5B160AA12
5B160AA20
5B160NA02
5B225BA01
5B225CA19
5B225DE07
5B225DE08
5B225EA05
5B225FA01
5L206AA10
5L206BB11
5L206EE02
5L206FF05
5L206HH11
(57)【要約】
【課題】
リフレッシュ処理の発生頻度を低めることによりNAND型フラッシュメモリセルの耐久年数や寿命の向上を図ることができるメモリ制御装置を提供する。
【解決手段】
誤り訂正符号化データをNAND型フラッシュメモリの複数のブロックの各々に書き込み、その書き込んだ誤り訂正符号化データを複数のブロックの各々から読み出し、当該読み出した誤り訂正符号化データに誤り訂正処理を施すメモリコントローラ部と、複数のブロックの各々について読み出した誤り訂正符号化データのビットエラー数を算出するビットエラー数算出部と、複数のブロックを、読み出した誤り訂正符号化データのビットエラー数が少ないブロックから順に領域分けし、当該領域毎に記憶状態の検査のためのパトロール処理の実施対象であるか否かを設定するパトロール設定部と、を含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数のブロックからなるNAND型フラッシュメモリを制御するメモリ制御装置であって、
誤り訂正符号化データを前記複数のブロックの各々に書き込み、その書き込んだ誤り訂正符号化データを前記複数のブロックの各々から読み出し、当該読み出した誤り訂正符号化データに誤り訂正処理を施すメモリコントローラ部と、
前記複数のブロックの各々について前記読み出した誤り訂正符号化データのビットエラー数を算出するビットエラー数算出部と、
前記複数のブロックを、前記読み出した誤り訂正符号化データの前記ビットエラー数が少ないブロックから順に領域分けし、当該領域毎に記憶状態の検査のためのパトロール処理の実施対象であるか否かを設定するパトロール設定部と、を含むことを特徴とするメモリ制御装置。
【請求項2】
前記領域毎にリフレッシュ処理の実施対象であるか否かを設定するリフレッシュ設定部を含むことを特徴とする請求項1記載のメモリ制御装置。
【請求項3】
前記領域は前記ビットエラー数が少ない順に第1の領域、第2の領域、及び第3の領域を含み、
前記パトロール設定部及び前記リフレッシュ設定部により、前記第1の領域のブロックの各々は前記パトロール処理の実施対象外と設定されかつ前記リフレッシュ処理の実施対象と設定され、前記第2の領域のブロックの各々は前記パトロール処理及び前記リフレッシュ処理の双方の実施対象と設定され、前記第3の領域のブロックの各々は前記パトロール処理及び前記リフレッシュ処理の双方の実施対象外と設定されることを特徴とする請求項2記載のメモリ制御装置。
【請求項4】
前記第1の領域は前記NAND型フラッシュメモリに対する書き込みアクセス及び読み出しアクセスが共に少ないデータ用であり、前記第2の領域は前記NAND型フラッシュメモリに対する書き込みアクセスが少なくかつ読み出しアクセスが多いデータ用であり、前記第3の領域は前記NAND型フラッシュメモリに対する書き込みアクセスが多いデータ用であることを特徴とする請求項3記載のメモリ制御装置。
【請求項5】
前記複数のブロックのうちのビットエラーが前記誤り訂正処理の誤り訂正能力を超えないブロックを正常ブロックとし、前記誤り訂正能力を超えたブロックを不良ブロックとして設定する不良ブロック設定部を含むことを特徴とする請求項3又は4記載のメモリ制御装置。
【請求項6】
前記複数のブロックのうちの前記第1の領域、前記第2の領域、及び前記第3の領域以外に含まれず、かつ前記正常ブロックと設定されたブロックからなる第4の領域は、前記パトロール設定部及び前記リフレッシュ設定部により、前記パトロール処理及び前記リフレッシュ処理の双方の実施対象外と設定される予備ブロックからなり、前記第2の領域の前記リフレッシュ処理のデータの置き換え及び前記第3の領域のデータの書き換え用であることを特徴とする請求項5記載のメモリ制御装置。
【請求項7】
前記複数のブロックの各々について、論理アドレス、物理アドレス、前記ビットエラー数、前記不良ブロックであるか否か示す2値データ、前記パトロール処理の実施対象であるか否かを示す2値データ、前記リフレッシュ処理の実施対象であるか否かを示す2値データ、及び前記予備ブロックであるか否か示す2値データを各々記憶するブロック情報記憶部を有することを特徴とする請求項6記載のメモリ制御装置。
【請求項8】
前記複数のブロックのうちの前記第1の領域、前記第2の領域、及び前記第3の領域に含まれるブロックについて前記ビットエラー数が少ないブロックの順番がアドレスの順番となるように前記論理アドレスを付加する論理アドレス付加部を含むことを特徴とする請求項7記載のメモリ制御装置。
【請求項9】
前記領域毎のブロック数はデータ容量を示す領域情報に応じて設定されることを特徴とする請求項1記載のメモリ制御装置。
【請求項10】
複数のブロックからなるNAND型フラッシュメモリを制御するメモリ制御装置の制御方法であって、
誤り訂正符号化データを前記複数のブロックの各々に書き込み、その書き込んだ誤り訂正符号化データを前記複数のブロックの各々から読み出し、当該読み出した誤り訂正符号化データに誤り訂正処理を施すステップと、
前記複数のブロックの各々について前記読み出した誤り訂正符号化データのビットエラー数を算出するステップと、
前記複数のブロックを、前記読み出した誤り訂正符号化データの前記ビットエラー数が少ないブロックから順に領域分けし、当該領域毎に記憶状態の検査のためのパトロール処理の実施対象であるか否かを設定するステップと、を含むことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、NAND型フラッシュメモリのメモリ制御装置及びメモリ制御装置の制御方法に関する。
【背景技術】
【0002】
NAND型フラッシュメモリを搭載するメモリ制御装置においては、データの書き込みの際には、データの種別を認識することなく、NAND型フラッシュメモリ内の任意の未使用ブロックを選択してそこに書き込みを実施するか、又はウェアレベリングと呼ばれる消去回数が少ないブロックを選択してそこに書き込みを実施することが一般的である。
【0003】
NAND型フラッシュメモリでは、データ書き込み後、そのまま放置する時間が長くなると電荷が抜けてエラーを生じる可能性がある。また、ブロック内の同じページを繰り返し読み出すことが原因で起きるリードディスターブによってエラーを生じる可能性がある。そのようなエラーに対処するために、メモリ制御装置においてはNAND型フラッシュメモリに読み出しエラーが発生していないか事前に検査を行うパトロール処理が周期的に実施されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1に開示されたように、従来のメモリ制御装置では、NAND型フラッシュメモリの各ブロックのビットエラー特性を考慮していないため、書込みしたブロックの全ページをパトロール処理の対象とする必要がある。近年の大容量のNAND型フラッシュメモリにおいては、全ページをパトロール処理の対象とすることがリフレッシュ発動条件であるビットエラー閾値設定値を誤り訂正処理の訂正限界値から大きく引き下げることになり、リフレッシュ処理の発生頻度を高めることになる。リフレッシュ処理はブロックのデータ消去を伴うことから、リフレッシュ処理の発生頻度が高まることはフラッシュメモリセルの耐久年数や寿命を低減させる原因になっていた。
【0006】
そこで、本発明の目的は、リフレッシュ処理の発生頻度を低めることによりNAND型フラッシュメモリセルの耐久年数や寿命の向上を図ることができるメモリ制御装置及びメモリ制御装置の制御方法を提供することである。
【課題を解決するための手段】
【0007】
本発明のメモリ制御装置は、複数のブロックからなるNAND型フラッシュメモリを制御するメモリ制御装置であって、誤り訂正符号化データを前記複数のブロックの各々に書き込み、その書き込んだ誤り訂正符号化データを前記複数のブロックの各々から読み出し、当該読み出した誤り訂正符号化データに誤り訂正処理を施すメモリコントローラ部と、前記複数のブロックの各々について前記読み出した誤り訂正符号化データのビットエラー数を算出するビットエラー数算出部と、前記複数のブロックを、前記読み出した誤り訂正符号化データの前記ビットエラー数が少ないブロックから順に領域分けし、当該領域毎に記憶状態の検査のためのパトロール処理の実施対象であるか否かを設定するパトロール設定部と、を含むことを特徴としている。
【0008】
本発明の制御方法は、複数のブロックからなるNAND型フラッシュメモリを制御するメモリ制御装置の制御方法であって、誤り訂正符号化データを前記複数のブロックの各々に書き込み、その書き込んだ誤り訂正符号化データを前記複数のブロックの各々から読み出し、当該読み出した誤り訂正符号化データに誤り訂正処理を施すステップと、前記複数のブロックの各々について前記読み出した誤り訂正符号化データのビットエラー数を算出するステップと、前記複数のブロックを、前記読み出した誤り訂正符号化データの前記ビットエラー数が少ないブロックから順に領域分けし、当該領域毎に記憶状態の検査のためのパトロール処理の実施対象であるか否かを設定するステップと、を含むことを特徴としている。
【発明の効果】
【0009】
本発明のメモリ制御装置及びメモリ制御装置の制御方法によれば、パトロール処理の実施対象が例えば、書き込みアクセスが少なくかつ読み出しアクセス多い特定のブロックだけとなり、書き込みしたブロックの全ページをパトロール処理の実施対象としたときに比べてリフレッシュ発動条件のビットエラー閾値設定値を引き上げることができるので、リフレッシュ処理の発生頻度を低下させることが可能になり、これによりNAND型フラッシュメモリセルの耐久年数や寿命を向上させることが可能になる。
【図面の簡単な説明】
【0010】
【
図1】本発明の実施例としてメモリ制御装置を有するメモリ制御システムの構成を示すブロック図である。
【
図2】
図1のメモリ制御装置内のRAMに記憶される論理物理変換情報を具体的に示す図である。
【
図3】
図1のメモリ制御装置内のNAND型フラッシュメモリに記憶される論理物理変換情報を具体的に示す図である。
【
図4】
図1のメモリ制御装置内のCPUが実施するシステム起動処理を示すフローチャートである。
【
図5】
図1のメモリ制御装置内のCPUが実施する初期化コマンド処理を示すフローチャートである。
【
図6】領域毎に作成された論理物理変換情報をテーブル形式で示す図である。
【
図7】
図1のメモリ制御装置内のCPUが実施する論理物理変換情報処理を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、本発明の実施例を、図面を参照しつつ詳細に説明する。
【0012】
図1は本発明によるメモリ制御装置1を有するメモリ制御システムの構成を示している。このメモリ制御システムは、メモリ制御装置1とホスト装置10とからなる。メモリ制御装置1とホスト装置10とは通信可能に接続されている。ホスト装置10はホストコンピュータである。
【0013】
メモリ制御装置1は、CPU(中央処理装置)2、外部I/F(インターフェース)制御部3、RAM(ランダムアクセスメモリ)4、NAND(ナンド)型フラッシュメモリコントローラ5、及びNAND型フラッシュメモリ6を有している。CPU2、外部I/F制御部3、RAM4、及びNAND型フラッシュメモリコントローラ5はバス9によって互いに接続されている。
【0014】
CPU2はメモリ制御装置1全体の動作を制御するプロセッサである。外部I/F制御部3はホスト装置10に接続され、ホスト装置10とメモリ制御装置1との間の通信を可能にするインターフェース部である。RAM4の一部に、NAND型フラッシュメモリ6の各ブロックに関する論理物理変換情報400、領域情報410、不良ブロック情報411、及びブロックビットエラー情報412を含むブロック情報記憶部413が形成される。
【0015】
なお、CPU2の動作は、RAM4又はバス9に接続された図示しないROM(リードオンリメモリ)に書き込まれたプログラムに従って実行可能にされている。
【0016】
論理物理変換情報400は、
図2に示すように、論理ブロックアドレス401、物理ブロックアドレス402、ビットエラー数403、不良404、パトロール405、リフレッシュ406、及び予備407を含む。
【0017】
論理ブロックアドレス401はNAND型フラッシュメモリ6のブロック毎の論理アドレスを示す。物理ブロックアドレス402はNAND型フラッシュメモリ6のブロック毎の物理アドレスを示す。ビットエラー数403は後述する初期化コマンド処理においてブロック内の誤り訂正されたビットエラーの総数を示す。不良404は不良のブロックであるか否かを示し、"0"であれば正常ブロックを示し、"1"であれば不良ブロックを示す。
【0018】
パトロール405はパトロール処理の実施対象のブロックであるか否かを示し、"0"であればパトロール処理を実施しないブロックを示し、"1"であればパトロール処理を実施するブロックを示す。リフレッシュ406はリフレッシュ処理の実施対象のブロックであるか否かを示し、"0"であればリフレッシュ処理を実施しないブロックを示し、"1"であればリフレッシュ処理を実施するブロックを示す。なお、リフレッシュ処理の実施対象であってもブロックの記憶状態を検査した結果、リフレッシュ発動条件が満たされなければリフレッシュ処理のブロックの書き換えは実施されない。予備407は論理ブロックアドレス401の論理ブロックの割り当てがあるブロックであるか否かを示し、"0"であれば、割り当てが有るブロックを示し、"1"であれば割り当てが無いブロックを示す。予備407が"1"を示す場合にはリフレッシュ処理時の置き換え対象ブロックになる。
【0019】
領域情報410は後述する領域RA、RB、RC、RD各々の例えば、ブロック数等のデータ容量を示す情報である。不良ブロック情報411はNAND型フラッシュメモリ6の不良ブロックを示す情報である。ブロックビットエラー情報412はNAND型フラッシュメモリ6のブロック毎のビットエラー数(誤り訂正したビットの数)を示す情報である。
【0020】
NAND型フラッシュメモリコントローラ5は、NAND型フラッシュメモリ6に接続され、NAND型フラッシュメモリ6を制御する。NAND型フラッシュメモリ6の制御としてはデータの書き込み及びデータの読み出しの制御の他にNAND型フラッシュメモリ6の初期化、パトロール処理及びリフレッシュ処理の制御が含まれる。
【0021】
また、NAND型フラッシュメモリコントローラ5は内部にデータバッファ7及び誤り訂正処理部8を含み、CPU2から指令に応じて複数のビットからなるデータをNAND型フラッシュメモリ6に書き込み、又はNAND型フラッシュメモリ6からデータ読み出す。データバッファ7にはNAND型フラッシュメモリ6に書き込まれるデータ及びNAND型フラッシュメモリ6から読み出されたデータが一時的に保持される。誤り訂正処理部8は例えば、書き込みされるべきデータに冗長ビットを付加する誤り訂正符号化を行い、NAND型フラッシュメモリコントローラ5は冗長ビットが付加された符号化データをNAND型フラッシュメモリ6に書き込む。また、誤り訂正処理部8はNAND型フラッシュメモリ6からの読み出した誤り訂正符号化データに対して復号化を行うことにより誤り訂正処理を行う。この誤り訂正処理においてはブロック毎に誤り訂正したビットエラー数が算出される。その誤り訂正処理の後段処理のデータチェックにおいて、データ不良ありの結果のためビットエラーが誤り訂正能力を超えるブロックである場合には、その該当ブロックは誤り訂正できなかったブロックであるとして不良ブロックと判断される。
【0022】
NAND型フラッシュメモリ6には、複数のブロックからなるメモリ本体の他に、そのブロックに関する論理物理変換情報600、領域情報610、不良ブロック情報611、及びブロックビットエラー情報612が記憶されるブロック情報記憶部613が形成される。ブロック情報記憶部613は例えば、レジスタによって構成されても良い。NAND型フラッシュメモリ6の複数のブロックの各々には物理アドレスが予め割り当てられている。
【0023】
また、論理物理変換情報600は、
図3に示すように、論理物理変換情報400と同様に、論理ブロックアドレス601、物理ブロックアドレス602、ビットエラー数603、不良604、パトロール605、リフレッシュ606、及び予備607を含む。領域情報610、不良ブロック情報611、及びブロックビットエラー情報612は領域情報410、不良ブロック情報411、及びブロックビットエラー情報412と各々同じ情報を表す。
【0024】
かかる構成を有するメモリ制御システムにおいては、電源が投入された直後、又はホスト装置10からのシステムリセット解除直後に、CPU2はシステム起動処理を開始する。システム起動処理においては、
図4に示すように、CPU2は先ず、NAND型フラッシュメモリコントローラ5に対してNAND型フラッシュメモリ6内に論理物理変換情報600が存在するか否かを確認させる(ステップS11)。ステップS11ではNAND型フラッシュメモリコントローラ5は、CPU2からの論理物理変換情報600の存在確認指示に従ってNAND型フラッシュメモリ6内に論理物理変換情報600が存在するか否かを判別し、その判別結果をCPU2に通知する。
【0025】
CPU2は、ステップS11の実行によりNAND型フラッシュメモリ6内に論理物理変換情報600が存在することが確認されたならば、論理物理変換情報600をRAM4のブロック情報記憶部413内にコピーする(ステップS12)。すなわち、CPU2は、論理物理変換情報600をNAND型フラッシュメモリコントローラ5を介して読み出し、読み出した論理物理変換情報600をブロック情報記憶部413に書き込む。これにより、論理物理変換情報600と同一内容の論理物理変換情報400がブロック情報記憶部413に形成される。CPU2は、ステップS12の論理物理変換情報600のコピーを完了すると、システム起動処理を終了する。
【0026】
一方、CPU2は、NAND型フラッシュメモリ6内に論理物理変換情報600が存在しないことが確認されたならば、システム起動処理を直ちに終了し、そして、ホスト装置10からの初期化コマンドの待機状態となる。
【0027】
CPU2は、初期化コマンドの待機状態においてホスト装置10から初期化コマンドを外部I/F制御部3を介して受信すると、初期化コマンド処理を開始する。
【0028】
初期化コマンド処理においては、
図5に示すように、CPU2は先ず、初期化コマンドからRAM4のブロック情報記憶部413に領域情報410を作成する(ステップS21)。初期化コマンドには4つの領域RA(第1の領域)、RB(第2の領域)、RC(第4の領域)、RD(第3の領域)各々の容量の割り当て情報が含まれており、この割り当て情報に対応して領域情報410が作成される。その結果、領域情報410は領域RA、RB、RC、RD各々の容量を表すことになる。領域RA、RB、RC、RD各々の容量はブロック数でも良い。
【0029】
次に、CPU2は、NAND型フラッシュメモリ6内の全ブロックについてデータ消去させる(ステップS22)。ステップS22では、NAND型フラッシュメモリコントローラ5は、CPU2から全ブロック消去命令を受け、その全ブロック消去命令に従ってNAND型フラッシュメモリ6内の全ブロックのデータを消去する。
【0030】
CPU2は、ステップS22の実行後、NAND型フラッシュメモリコントローラ5から全ブロック消去の完了通知を受けると、NAND型フラッシュメモリコントローラ5に対してNAND型フラッシュメモリ6への全ブロック書き込みを指令する(ステップS23)。CPU2は、ステップS23では、NAND型フラッシュメモリコントローラ5内のデータバッファ7に任意のデータをセットする。NAND型フラッシュメモリコントローラ5はデータバッファ7にセットされたデータをNAND型フラッシュメモリ6の全ブロックに書き込む。これによりNAND型フラッシュメモリ6の全ブロックに同一のデータが書き込まれる。この書き込みデータは誤り訂正符号化されたデータである。
【0031】
CPU2は、ステップS23の実行後、NAND型フラッシュメモリコントローラ5から全ブロック書き込みの完了を確認すると、NAND型フラッシュメモリコントローラ5内のデータバッファ7へのNAND型フラッシュメモリ6のブロック単位での読み出しが完了したか否かを判別する(ステップS24)。NAND型フラッシュメモリコントローラ5から全ブロック書き込みの完了の確認直後では、ステップS25のデータバッファ7へのNAND型フラッシュメモリ6のブロック単位での読み出しを開始していないので、CPU2はステップS24の判別を否定することとなる。
【0032】
CPU2は、ステップS24の判別を否定した場合には、NAND型フラッシュメモリコントローラ5に対してデータバッファ7へのNAND型フラッシュメモリ6のブロック単位での読み出しを指令する(ステップS25)。NAND型フラッシュメモリコントローラ5はブロック毎にNAND型フラッシュメモリ6に書き込まれたデータ(誤り訂正符号化されたデータ)をデータバッファ7へ読み出す。NAND型フラッシュメモリコントローラ5では、データバッファ7へ読み出されるデータに対しては誤り訂正処理部8によって誤り訂正処理が施される。
【0033】
CPU2は、ブロック単位でデータがNAND型フラッシュメモリ6からデータバッファ7へ読み出される毎に、データチェックにより、その読み出しブロックに誤り訂正処理部8の誤り訂正能力を超えるビットエラーがあったか否かを判別する(ステップS26)。CPU2は、ビットエラーが誤り訂正処理部8の誤り訂正能力を超えたブロックである場合には、その読み出しブロックは不良ブロックであるとしてRAM4の不良ブロック情報411に登録し(ステップS27)、そして、読み出しブロックアドレスを更新する(ステップS28)。読み出しブロックアドレスは例えば、物理アドレス順に設定されても良い。
【0034】
CPU2は、ステップS28の実行後、ステップS24の判別に戻り、NAND型フラッシュメモリコントローラ5内のデータバッファ7へのNAND型フラッシュメモリ6のブロック単位での読み出しが完了していない場合には、ステップS25のデータ読み出し動作においては、ステップS28で更新した読み出しブロックアドレスで指定されるブロックからデータが読み出される。
【0035】
CPU2は、ビットエラーが誤り訂正処理部8の誤り訂正能力を超えていないブロックである場合には、そのビットエラー数をRAM4のブロックビットエラー情報412に登録し(ステップS29)、その後、ステップS28に進んで読み出しブロックアドレスを更新する。ステップS29のブロックビットエラー情報412はブロック毎にビットエラー数とブロックの物理アドレスとを関連付けて登録され得る。
【0036】
CPU2は、ステップS24の判別結果として、NAND型フラッシュメモリ6のブロック単位でのデータバッファ7への読み出しが完了したことを確認すると、論理物理変換情報処理を実行する(ステップS30)。論理物理変換情報処理ではステップS27で登録された不良ブロック情報411とステップS29で登録されたブロックビットエラー情報412に基づいて論理物理変換情報400が
図6に示すようにテーブル形式で作成される。すなわち、NAND型フラッシュメモリ6のブロックが正常ブロックと不良ブロックとにブロック分けされ、正常ブロックは更に領域RA、RB、RC、RDの各々に領域分けされ、領域RA、RB、RC、RD各々のブロックについて論理物理変換情報400の論理ブロックアドレス401、物理ブロックアドレス402、ビットエラー数403、不良404、パトロール405、リフレッシュ406、及び予備407の各々が設定されかつブロック情報記憶部413に書き込まれる。
【0037】
論理物理変換情報処理において具体的には、
図7に示すように、CPU2は先ず、論理物理変換情報400のうちの論理ブロックアドレス401を設定する(ステップS301)。ステップS301では、論理アドレスLA[0]~LA[n-1]が設定される。論理アドレスLA[0]~LA[n-1]ではLA[0]が論理アドレスの第1番目のアドレスであり、LA[n-1]は論理アドレスの最終番目のアドレスである。ここで、nは領域RA、RB、RDの合計のブロック数に相当する正の整数である。ステップS21で作成した領域情報410に基づいて領域RAには論理アドレスLA[0]~LA[x]、領域RBには論理アドレスLA[x+1]~LA[y-1]、領域RDには論理アドレスLA[y]~LA[n-1]が割り当てられる。ここで、x、yは正の整数であり、x、y、nの間にはx<y<nなる関係がある。なお、領域RCには論理アドレスLA[0]~LA[n-1]以外のブロックであって、後述するステップS304において不良404が"0"である残りブロックが論理アドレスなしで割り当てられる。
【0038】
次に、CPU2は、論理物理変換情報400のうちのパトロール405とリフレッシュ406とを設定する(ステップS302)。パトロール設定部及びリフレッシュ設定部を形成するステップS302では、領域RAの論理アドレスLA[0]~LA[x]の各ブロックに対してはパトロール405が"0"と設定され、リフレッシュ406が"1"と設定される。領域RBの論理アドレスLA[x+1]~LA[y-1]の各ブロックに対してはパトロール405が"1"と設定され、リフレッシュ406が"1"と設定される。領域RDの論理アドレスLA[y]~LA[n-1]の各ブロックに対してはパトロール405が"0"と設定され、リフレッシュ406が"0"と設定される。なお、上述したように、パトロール405が"0"であればパトロール処理の実施対象外のブロックであり、"1"であればパトロール処理の実施対象のブロックである。リフレッシュ406が"0"であればリフレッシュ処理の実施対象外のブロックであり、"1"であればリフレッシュ処理の実施対象のブロックである。
【0039】
パトロール処理は定期的に実施され、NAND型フラッシュメモリ6に記憶されたデータをブロック単位で読み出し、読み出したデータからデータの記憶状態の劣化を検査する処理であり、記憶状態の劣化としては例えば、読み出しデータが正確に読み出されたことを判別しても良いし、ブロックのビットエラー数を算出し、ビットエラー数の増加を判別しても良い。リフレッシュ処理は例えば、ブロックのビットエラー数を算出し、そのビットエラー数がビットエラー閾値設定値を超えたときにリフレッシュ発動条件を満たしたとして領域RCのブロックにデータを書き換える処理である。
【0040】
CPU2は、パトロール405及びリフレッシュ406の設定後、論理物理変換情報400のうちの物理ブロックアドレス402と、ビットエラー数403と、不良404とを設定する(ステップS303)。ステップS303においては、ステップS29でRAM4に登録されたブロックビットエラー情報412を用いてビットエラー数が少ない順に物理アドレスを並び替えることが行われ、そのビットエラー数の少ない順に領域RAに対応する第1のグループのブロック、領域RBに対応する第2のグループのブロック、領域RDに対応する第3のグループのブロック、領域RCに対応する第4のグループのブロックに分けられる。ここで、NAND型フラッシュメモリ6の全ブロック数をmとし、その全ブロック数mのうちのブロック数zが正常であったとすると、ビットエラー数が誤り訂正処理部8の誤り訂正能力を超えた不良ブロックは残りのブロック数m-zである。なお、z、mは正の整数であり、m、n、zの間にはn<z<mなる関係がある。
【0041】
ビットエラー数が最も少ない第1のグループの(x+1)個のブロックの物理アドレスがビットエラー数の少ない順に物理ブロックアドレス402の領域RAのPA[0]~PA[x]として設定され、それらの物理アドレスに対応するビットエラー数がビットエラー数403のBE[0]~BE[x]として設定される。第2のグループの(y-x-1)個のブロックの物理アドレスがビットエラー数の少ない順に物理ブロックアドレス402の領域RBのPA[x+1]~PA[y-1]として設定され、それらの物理アドレスに対応するビットエラー数がビットエラー数403のBE[x+1]~BE[y-1]として設定される。第3のグループの(n-y)個のブロックの物理アドレスがビットエラー数の少ない順に物理ブロックアドレス402の領域RDのPA[y]~PA[n-1]として設定され、それらの物理アドレスに対応するビットエラー数がビットエラー数403のBE[y]~BE[n-1]として設定される。第4のグループの(n-y)個のブロックの物理アドレスがビットエラー数の少ない順に物理ブロックアドレス402の領域RCのPA[n]~PA[z-1]として設定され、それらの物理アドレスに対応するビットエラー数がビットエラー数403のBE[n]~BE[z-1]として設定される。ブロック数m-zの不良ブロックについては、物理アドレスはPA[z]~PA[m-1]であるが、ビットエラー数403の設定はされない。
【0042】
ここで、ビットエラー数については、BE[0]≦BE[1]≦・・・≦BE[x-1]≦BE[x]≦BE[x+1]≦BE[x+2]≦・・・≦BE[y-2]≦BE[y-1]≦BE[y]≦BE[y+1]・・・≦BE[n-2]≦BE[n-1]≦BE[n]≦BE[n+1]・・・≦BE[z-2]≦BE[z-1]なる大小関係がある。
【0043】
不良404については、領域RA、RB、RC、RDの各ブロック(物理アドレスPA[0]~PA[z-1])は正常ブロックであり、"0"と設定される。それら以外のブロック(物理アドレスPA[z]~PA[m-1])は不良ブロックであり、"1"と設定される。
【0044】
CPU2は、物理ブロックアドレス402、ビットエラー数403、及び不良404の設定後、論理物理変換情報400のうちの予備407を設定する(ステップS304)。論理ブロックアドレス401の論理ブロックの割り当てがある領域RA、RB、RDの各ブロックに対しては予備407に"0"が設定され、論理ブロックの割り当てがない域RCの各ブロックに対しては予備407に"1"が設定される。CPU2は、予備407を設定すると、
図6に示したように論理物理変換情報400のテーブルが形成され、論理物理変換情報処理を終了する。
【0045】
CPU2は、ステップS30の論理物理変換情報処理の終了後、NAND型フラッシュメモリコントローラ5に対してNAND型フラッシュメモリ6の全ブロック消去を指令する(ステップS31)。NAND型フラッシュメモリコントローラ5はNAND型フラッシュメモリ6の全ブロックのデータを消去する。これによりに、ステップS23においてNAND型フラッシュメモリ6の全ブロックに書き込まれたデータが全て消去される。
【0046】
CPU2は、NAND型フラッシュメモリ6のデータ消去後、ステップS30の論理物理変換情報処理によって作成した論理物理変換情報400をNAND型フラッシュメモリ6のブロック情報記憶部613に論理物理変換情報600として書き込む(ステップS32)。そして、CPU2は、ホスト装置10に対して初期化コマンド処理の完了を通知する(ステップS33)。ステップS33では初期化コマンド処理の完了通知はCPU2から外部I/F制御部3を介してホスト装置10に送信される。CPU2は、初期化コマンド処理の完了を通知すると、初期化コマンド処理を終了する。
【0047】
上記した実施例においては、NAND型フラッシュメモリ6の複数のブロックをブロック毎のビットエラー数に応じて領域RA、RB、RC、RDに分け、領域RA、RB、RC、RD毎にパトロール処理を実施するか否か及びリフレッシュ処理を実施するか否かが2値データによって論理物理変換情報400に設定されている。よって、ホスト装置10は、書き込み及び読み出しアクセスが共に少ないデータを領域RAに格納し、書き込みアクセスが少なくかつ読み出しアクセス多いデータを領域RBに格納し、領域RBのリフレッシュ置き換え及び領域RDの書換え用に領域RCを用意し、書き込みアクセス多いデータを領域RDに格納することにより、論理物理変換情報400の論理ブロックアドレス401の論理アドレスで格納するデータの種類を管理することができるようになる。例えば、領域RAのブロックには消えては困るような貴重なデータを収納し、領域RDのブロックにはブラウザで使用される、消えても良いようなキャシュデータを収納することが可能である。
【0048】
CPU2は、上記したシステム起動処理或いは初期化コマンド処理の終了後に定期的なパトロール処理の実施時期となると、例えば、データの書き込み済みのブロックについての論理物理変換情報400のパトロール405が"1"であるか否かを判別し、パトロール405が"1"である領域RBに属するブロックに対してページ単位でパトロール処理を実施し、パトロール405が"0"である領域RA、RDのブロックに対してパトロール処理を実施しない。また、リフレッシュ処理についても論理物理変換情報400のリフレッシュ406が"1"であるか否かを判別し、リフレッシュ406が"1"である領域RA及びRBに属するブロックに対してリフレッシュ発動条件を満たした場合にリフレッシュ処理を実施し、パトロール405が"0"である領域RC、RDに属するブロックに対してリフレッシュ処理を実施しない。
【0049】
このようにパトロール処理の実施対象が領域RBに属するブロックのページのみとなり、書き込みしたブロックの全ページをパトロール処理の実施対象としたときに比べてリフレッシュ発動条件のビットエラー閾値設定値を引き上げることができるので、リフレッシュ処理の発生頻度を低下させることが可能になる。リフレッシュ処理はブロックのデータ消去を伴うことから、その発生頻度が低下することはメモリセルの耐久年数や寿命を向上させることが可能になる。
【0050】
なお、上記した実施例においては、ステップS29ではブロック単位でビットエラー数を算出し、それをビットエラー情報412として登録しているが、ブロック内の1ページのサイズを例えば、16KByteとしたとき、誤り訂正処理の単位は2KByte、1KByte等のサイズもあるので、誤り訂正処理のサイズがページを跨がなければ、ページ単位以下のサイズ単位でビットエラー数を算出することができる。よって、ブロック毎にページ単位以下のサイズ単位でビットエラー数を算出し、ブロック内でビットエラー数の最大値をそのブロックのビットエラー情報412として登録しても良い。このようにブロック毎にページ以下のサイズ単位でビットエラー数の最大値を用いる場合にもステップS303では各ブロックのビットエラー数(ページ単位でビットエラー数の最大値)の少ない順にブロックを並び替えてからその順にブロックに論理アドレスを設定することは可能である。
【0051】
上記した実施例では、CPU2、外部I/F制御部3、RAM4、及びNAND型フラッシュメモリコントローラ5はバス9によって互いに接続されている。このような構成のためRAM4とNAND型フラッシュメモリコントローラ5との間のデータの伝送はCPU2及びバス9を介して行われるが、RAM4がNAND型フラッシュメモリコントローラ5に直結する構成、又はNAND型フラッシュメモリコントローラ5内部にRAM4を配置する構成であっても良い。
【0052】
上記した実施例では、同様に、外部I/F制御部3とNAND型フラッシュメモリコントローラ5との間のデータ、コマンド等の伝送はCPU2及びバス9を介して行われるが、外部I/F制御部3がNAND型フラッシュメモリコントローラ5に直結する構成にしても良い。
【0053】
また、上記した実施例では、RAM4がメモリ制御装置1の内部に配置されているが、RAM4をメモリ制御装置1の外部、又はメモリ制御装置1の内部と外部で共有するようにしても良い。
【0054】
また、上記した実施例では、データバッファ7がNAND型フラッシュメモリコントローラ内に構成されているが、RAM4と共有することも可能である。
【0055】
また、上記した実施例では、NAND型フラッシュメモリ6がメモリ制御装置1の内部に構成されているが、NAND型フラッシュメモリ6をメモリ制御装置1の外部に配置したり、又はメモリ制御装置1の内部と外部で共有する構成にすることも可能である。
【0056】
また、上記した実施例では、NAND型フラッシュメモリ6に関する論理物理変換情報600等の情報をNAND型フラッシュメモリ6内に保存しているが、他の不揮発性メモリに保存しても良い。
【0057】
更に、上記した実施例では、論理物理変換情報400のビットエラー数403に基づいて論理ブロックアドレスを領域RA、RB、RDの順序で構成しているが、領域RD、RA、RBなど他の順序で構成することも可能である。
【符号の説明】
【0058】
1 メモリ制御装置
2 CPU
3 外部I/F制御部
4 RAM
5 NAND型フラッシュメモリコントローラ
6 NAND型フラッシュメモリ
7 データバッファ
8 誤り訂正処理部
9 バス
10 ホスト装置
400、600 論理物理変換情報
401、601 論理ブロックアドレス
402、602 物理ブロックアドレス
403、603 ビットエラー数
404、604 不良
405、605 パトロール
406、606 リフレッシュ
407、607 予備
410、610 領域情報
411、611 不良ブロック情報
412、612 ブロックビットエラー情報
413、613 ブロック情報記憶部