(57)【要約】 【課題】性能を劣化させることなく不良回避制御を実現可能なメモリシステムおよび制御方法を提供する。【解決手段】実施形態のメモリシステムは、互いに独立にデータの書き込み、または、読み出しが可能な複数の不揮発性記憶部と、コントローラとを備える。各不揮発性記憶部は、データを記憶する通常データ記憶領域と、通常データ記憶領域の不良位置を回避して前記データを書き込むための冗長データ記憶領域と、を含むデータ記憶部と、当該不揮発性記憶部とは異なる他の不揮発性記憶部が有するデータ記憶部の不良に関する情報を示す不良情報を記憶する不良情報記憶部と、を有する。【選択図】図１
2015038796.tif 000002
【特許請求の範囲】
【請求項１】
互いに独立にデータの書き込み、または、読み出しが可能な複数の不揮発性記憶部と、
前記不揮発性記憶部に対する前記データの書き込み、または、前記データの読み出しを制御するコントローラと、を備え、
各前記不揮発性記憶部は、
前記データを記憶する通常データ記憶領域と、前記通常データ記憶領域の不良位置を回避して前記データを書き込むための冗長データ記憶領域と、を含むデータ記憶部と、
当該不揮発性記憶部とは異なる他の前記不揮発性記憶部が有する前記データ記憶部の不良に関する情報を示す不良情報を記憶する不良情報記憶部と、を有する、
メモリシステム。
【請求項２】
前記コントローラは、
前記データの読み出し要求を受け付けた場合は、前記データの読み出しの対象となる前記データ記憶部に格納された前記データを読み出す制御を行う読み出し制御部と、
前記データの読み出し対象となる前記データ記憶部に対応する前記不良情報記憶部から前記不良情報を読み出し、読み出した前記不良情報を解析して不良位置を特定する不良情報解析部と、を備え、
前記読み出し制御部は、前記不良情報解析部により特定された不良位置に基づいて、読み出した前記データを修正する制御を行う、
請求項１に記載のメモリシステム。
【請求項３】
前記コントローラは、
前記データの書き込み要求を受け付けた場合は、前記データの書き込みの対象となる前記データ記憶部を決定する書き込み制御部をさらに備え、
前記不良情報解析部は、前記データの書き込み対象となる前記データ記憶部に対応する前記不良情報記憶部から前記不良情報を読み出し、読み出した前記不良情報を解析して不良位置を特定し、
前記書き込み制御部は、前記不良情報解析部で特定された不良位置に対する前記データの書き込みを回避して前記データ記憶部に対する前記データの書き込みを制御する、
請求項２に記載のメモリシステム。
【請求項４】
前記不良情報解析部は、前記データの書き込みまたは読み出しの対象となる前記データ記憶部の位置を示す第１位置情報に関する線形式から、前記データの書き込みまたは読み出しの対象となる前記データ記憶部に対応する前記不良情報記憶部の位置を示す第２位置情報を特定する、
請求項３に記載のメモリシステム。
【請求項５】
前記不良情報解析部は、前記データ記憶部の位置を示す第１位置情報と、前記不良情報記憶部の位置を示す第２位置情報とが対応付けられた対応関係情報を参照して、前記データの書き込みまたは読み出しの対象となる前記データ記憶部の位置を示す前記第１位置情報に対応付けられた前記第２位置情報を特定する、
請求項３に記載のメモリシステム。
【請求項６】
前記不良情報を保持する不良情報キャッシュをさらに備え、
前記不良情報解析部は、前記データの書き込みまたは読み出しの対象となる前記データ記憶部の前記不良情報が前記不良情報キャッシュに存在する場合は、前記不良情報キャッシュから当該不良情報を読み出す、
請求項３に記載のメモリシステム。
【請求項７】
前記データ記憶部の不良位置を検出する不良検出部と、
前記データ記憶部に対応する前記不良情報記憶部から読み出した前記不良情報と、前記不良検出部により検出された不良位置とから、前記不良情報記憶部に格納すべき前記不良情報を生成し直す不良情報生成部と、
前記不良情報生成部により生成された前記不良情報を前記不良情報記憶部に書き戻す不良情報更新部と、をさらに備える、
請求項１に記載のメモリシステム。
【請求項８】
前記コントローラは、
前記データ記憶部の誤り訂正を行うデータ保護部と、
前記不良情報記憶部の誤り訂正を行う不良情報保護部と、を備え、
前記不良情報保護部の誤り訂正能力は、前記データ保護部の誤り訂正能力よりも高い、
請求項１に記載のメモリシステム。
【請求項９】
データを記憶する通常データ記憶領域と、前記通常データ記憶領域の不良位置を回避して前記データを書き込むための冗長データ記憶領域と、を含むデータ記憶部と、前記データ記憶部の不良に関する情報を示す不良情報を記憶する不良情報記憶部と、をそれぞれが有するとともに、互いに独立にデータの書き込み、または、読み出しが可能な複数の不揮発性記憶部と、
前記不揮発性記憶部に対する前記データの書き込み、または、前記データの読み出しを制御するコントローラと、を備えるメモリシステムの制御方法であって、
前記データの読み出し要求を受け付けた場合は、前記データの読み出しの対象となる前記データ記憶部に格納された前記データを読み出す制御を行う読み出し制御ステップと、
前記データの読み出し対象となる前記不揮発性記憶部の前記データ記憶部に対応する、他の前記不揮発性記憶部が有する前記不良情報記憶部から、前記不良情報を読み出し、読み出した前記不良情報を解析して不良位置を特定する不良情報解析ステップと、
前記不良情報解析ステップで特定した不良位置に基づいて、前記読み出し制御ステップで読み出した前記データを修正する制御を行う修正制御ステップと、を含む、
制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムおよび制御方法に関する。
【背景技術】
【０００２】
例えばＮＡＮＤフラッシュメモリなどの不揮発性記憶媒体では、誤り(エラー)が多いなどの理由により記憶単位となるブロックが記憶領域として利用できなくなることがある。このような利用不能となるブロックはバッドブロックまたは不良ブロックなどと呼ばれ、データの記憶対象となるブロック(フリーブロック)から除外するように制御される。
【０００３】
従来技術としては、製造時の検査工程でエラーが発見されたブロック（バッドブロック）の位置などを示す情報を不良情報テーブル (バッドブロック統計情報)として記録し、利用可能なフリーブロックとして扱わない方式が知られている。不良情報テーブルは不揮発記憶媒体に記録され、システム起動時に揮発性記憶媒体(例えばＲＡＭなど)に展開されて使用される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１９８８６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
不良情報テーブルの管理単位は不揮発性記憶媒体の記憶単位（例えばブロック単位）であり、起動時に揮発性記憶媒体にすべて展開して使用される想定である。しかし、より不良率の高い記憶媒体の場合は、ビット単位などのより細かい粒度で不良回避制御などが必要となるが、この場合は不良情報テーブルのサイズが大きくなるので、一度にＤＲＡＭなどの揮発性記憶媒体上に展開することができない。そのため、データの書き込み／読み出しのたびに、不揮発性記憶媒体に記録された不良情報テーブルを参照する必要があり、不揮発記憶媒体からの不良情報テーブルの読み出し時間がオーバヘッドとなる。
【０００６】
本発明が解決しようとする課題は、性能を劣化させることなく不良回避制御を実現可能なメモリシステムおよび制御方法を提供することである。
【課題を解決するための手段】
【０００７】
実施形態のメモリシステムは、互いに独立にデータの書き込み、または、読み出しが可能な複数の不揮発性記憶部と、コントローラとを備える。各不揮発性記憶部は、データを記憶する通常データ記憶領域と、通常データ記憶領域の不良位置を回避して前記データを書き込むための冗長データ記憶領域と、を含むデータ記憶部と、当該不揮発性記憶部とは異なる他の不揮発性記憶部が有するデータ記憶部の不良に関する情報を示す不良情報を記憶する不良情報記憶部と、を有する。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態のメモリシステムの構成例を示す図。
【図２】第１実施形態の不良情報の一例を示す図。
【図３】第１実施形態のデータ記憶部の構成例を示す図。
【図４】第１実施形態の書き込み制御の一例を示すフロー図。
【図５】第１実施形態の書き込みデータの再構築の例を示す図。
【図６】第１実施形態の読み出し制御の一例を示す図。
【図７】第２実施形態のメモリシステムの構成例を示す図。
【図８】第３実施形態のメモリシステムの構成例を示す図。
【図９】第４実施形態のメモリシステムの構成例を示す図。
【図１０】第４実施形態の変形例のメモリシステムの構成例を示す図。
【図１１】第５実施形態のメモリシステムの構成例を示す図。
【図１２】第６実施形態のメモリシステムの構成例を示す図。
【図１３】第７実施形態のメモリシステムの構成例を示す図。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照しながら、本発明に係るメモリシステムおよび制御方法の実施形態を詳細に説明する。
【００１０】
（第１実施形態）
図１は、第１実施形態のメモリシステム１の構成例を示す図である。図１に示すように、メモリシステム１は、第１の不揮発性メモリ１０と、第２の不揮発性メモリ１１と、コントローラ１２とを備える。第１の不揮発性メモリ１０とコントローラ１２とは互いに接続され、第２の不揮発性メモリ１１とコントローラ１２とは互いに接続され、第１の不揮発性メモリ１０と第２の不揮発性メモリ１１は、互いに異なるメモリであり、互いに独立に（並列に）データの書き込みまたは読み出しが行われる。この例では、第１の不揮発性メモリ１０および第２の不揮発性メモリ１１の各々は、請求項の「不揮発性記憶部」に対応していると考えることができる。説明の便宜上、ここでは、メモリシステム１が有する不揮発性記憶部の数は２つである場合を例に挙げて説明するが、これに限らず、例えばメモリシステム１が有する不揮発性記憶部の数は３以上であってもよい。
【００１１】
第１の不揮発性メモリ１０は、１以上のデータ記憶部１００と、１以上の不良情報記憶部１０１とを備える。データ記憶部１００は、第１の不揮発性メモリ１０の記憶単位（例えばブロックやページなど）ごとに定義され、第１の不揮発性メモリ１０内に存在するデータ記憶部１００の数は、第１の不揮発性メモリ１０の記憶可能なデータ容量によって決まる。同様に、第２の不揮発性メモリ１１は、１以上のデータ記憶部１１０と、１以上の不良情報記憶部１１１とを備える。説明の便宜上、ここでは、第１の不揮発性メモリ１０は、１つのデータ記憶部１００と、１つの不良情報記憶部１０１とを備え、第２の不揮発性メモリ１１は、１つのデータ記憶部１１０と、１つの不良情報記憶部１１１とを備える場合を例に挙げて説明するが、これに限られるものではない。なお、第１の不揮発性メモリ１０、および、第２の不揮発性メモリ１１は、例えばＮＡＮＤフラッシュメモリで構成され得るが、これに限られるものではない。
【００１２】
なお、以下の説明では、第１の不揮発性メモリ１０と第２の不揮発性メモリ１１とを区別する必要が無い場合は、単に「不揮発性メモリ」と称し、データ記憶部１００とデータ記憶部１１０とを区別する必要が無い場合は、単に「データ記憶部」と称し、不良情報記憶部１０１と不良情報記憶部１１１とを区別する必要が無い場合は、単に「不良情報記憶部」と称する。
【００１３】
図１に示すように、第１の不揮発性メモリ１０が有するデータ記憶部１００は、データを記憶する通常データ記憶領域１００Ａと、通常データ記憶領域１００Ａの不良位置を回避してデータを書き込むための冗長データ記憶領域１００Ｂとを有する。通常データ記憶領域１００Ａは、第１の不揮発性メモリ１０への記憶対象のデータに加え、システム管理情報やエラー訂正用の符号などを記憶することができる。冗長データ記憶領域１００Ｂは、通常データ記憶領域１００Ａの不良位置に記憶されるべきデータの格納先として利用することもできる。また、第１の不揮発性メモリ１０が有する不良情報記憶部１０１は、第２の不揮発性メモリ１１が有するデータ記憶部１１０の不良に関する情報を示す不良情報を記憶する。
【００１４】
同様に、第２の不揮発性メモリ１１が有するデータ記憶部１１０は、データを記憶する通常データ記憶領域１１０Ａと、通常データ記憶領域１１０Ａの不良位置を回避してデータを書き込むための冗長データ記憶領域１１０Ｂとを有する。また、第２の不揮発性メモリ１１が有する不良情報記憶部１１１は、第１の不揮発性メモリ１０が有するデータ記憶部１００の不良に関する情報を示す不良情報を記憶する。
【００１５】
なお、以下の説明では、通常データ記憶領域１００Ａと通常データ記憶領域１１０Ａとを区別する必要が無い場合は、単に「通常データ記憶領域」と称し、冗長データ記憶領域１００Ｂと冗長データ記憶領域１１０Ｂとを区別する必要が無い場合は、単に「冗長データ記憶領域」と称する。
【００１６】
本実施形態では、第１の不揮発性メモリ１０が有するデータ記憶部１００に対応する不良情報記憶部１１１は、第１の不揮発性メモリ１０とは独立に（並列に）アクセス可能な第２の不揮発性メモリ１１に設けられる一方、第２の不揮発性メモリ１１が有するデータ記憶部１１０に対応する不良情報記憶部１０１は、第２の不揮発性メモリ１１とは独立にアクセス可能な第１の不揮発性メモリ１０に設けられる。このような配置方式を採用することで、データ記憶部と、当該データ記憶部に対応する不良情報記憶部とに対して並列にアクセスすることが可能になり、データの読み出し時間と不良情報の読み出し時間とをオーバラップさせることができる。
【００１７】
ここで、上記不良情報としては、データの記憶媒体上の物理的な不良位置が特定できる情報（例えば不揮発性メモリの領域を特定可能なアドレス）などが想定される。また、不良情報としては、必ずしも不良位置を特定する情報や、不良の物理的な要因を特定する情報である必要はなく、不良位置に対する書き込み／読み出しを回避するために定義された制御情報であればよい。不良情報のフォーマットは、不良回避アルゴリズムで定義されるものであり、ここでは特にフォーマットを限定しない。不良回避アルゴリズムとは、通常データ記憶領域の不良位置を回避してデータの読み出しおよび書き込みを行う制御を規定するものであり、後述のコントローラ１２で実現される。
【００１８】
以下、不良情報の例を説明する。不良情報の最も単純な例は、データ記憶部１００および１１０の各々における領域の所定単位(例えばビット等)ごとに、その単位領域が不良であるか否かを示す不良情報マップ(ビットマップ)を作成することである。この例によれば、データを記憶する位置から容易に不良情報の位置を特定できるという利点がある。ただし、例えばビットごとに不良情報マップを用意した場合、記憶データと同量の不良情報マップが必要となるので、不良情報の情報量が大きくなるという問題がある。
【００１９】
そこで、さらに情報量を削減した不良情報の例を図２に示す。図２では、所定の記憶単位ごとに、不良位置間の距離（ｎ０〜ｎ３）を不良情報として表現する方式を示している。図２（Ａ）の例では、記憶単位の先頭から数えてｎ０ビット目に最初の不良が存在し、そのｎ０ビット目から数えてさらにｎ１ビット目に次の不良が存在することを示している(ｎ２，ｎ３も同様)。この例では、図２（Ｂ）に示すように、不良情報を記憶するテーブルの第１行目に「ｎ０」が格納され、第２行目に「ｎ１」が格納され、第３行目に「ｎ２」が格納され、第４行目に「ｎ３」が格納され、第５行目以降には「０」が格納される。これは、記憶単位の先頭から数えてｎ０ビット目に最初の不良が存在し、そのｎ０ビット目から数えてさらにｎ１ビット目に次の不良が存在し、そのｎ１ビット目から数えてさらにｎ２ビット目に次の不良が存在し、そのｎ２ビット目から数えてさらにｎ３ビット目に次の不良が存在し、それ以降は不良が存在しないことを表している。なお、不良情報ｎ０〜ｎ３を表現するためには、記憶単位内のアドレス表現ができる情報量を用意すれば良く、単純な不良情報マップに比べて情報量を削減することができる。また、情報が格納されるテーブルの深さは救済可能な不良数を示しており、不良率や目標とする信頼性に応じて構成を変えても良い。
【００２０】
次に、データ記憶部（１００、１１０）の構成について説明する。図３は、データ記憶部の構成例を示す図である。図３（Ａ）の例では、あるまとまった単位のデータ(例えば４ＫＢ)に対して、エラー訂正用の符号(ＥＣＣ)を付加し、それを４つまとめて通常データ記憶領域に記憶している。上述の不良情報から特定される不良位置に対する書き込み対象のデータについては、冗長データ記憶領域に記憶され、読み出し時に不良位置から読み出されたデータと置換される。一方、図３（ｂ）の例では、通常データ記憶領域の不良位置をスキップし、全体をシフトしながらデータを記憶する。そして、通常データ記憶領域の範囲を越えたデータが冗長データ記憶領域に記憶されていく。
【００２１】
図１に戻り、コントローラ１２の構成について説明する。図１に示すように、コントローラ１２は、書き込み制御部１２１と、読み出し制御部１２２と、不良情報解析部１２３とを備える。
【００２２】
書き込み制御部１２１は、不図示のホスト装置から、データの書き込み要求を受け付けた場合は、データの書き込み対象となるデータ記憶部（この例では１００または１１０）を決定する。例えば書き込み要求は、書き込みの実行を要求するコマンドと、書き込みを要求するデータと、プログラム上の仮想空間アドレスのうち、その書き込みを要求するデータが割り当てられる場所を示す論理アドレスとを含んで構成される。上記論理アドレスは、不図示のホスト装置によって指定される。例えばデータの書き込み方式として追記方式を採用することもできる。この追記方式では、ブロック単位でデータの消去を行い、消去済みのブロックに対してページ単位で書き込みを行うことになる。この追記方式では、書き込みが要求されたデータが書き込まれるブロックは、当該データに割り当てられた論理アドレスとは無関係に決定され、ページの昇順で書き込みが行われる。
【００２３】
書き込み制御部１２１は、データの書き込み対象となるデータ記憶部の位置を示す物理アドレス（データ記憶部の位置を示す位置情報の一例）を、不良情報解析部１２３へ通知する。そして、書き込み制御部１２１は、不良情報解析部１２３で特定された不良位置に対するデータの書き込みを回避してデータ記憶部に対するデータの書き込みを制御する。不良情報解析部１２３による不良位置の特定方法については後述する。
【００２４】
読み出し制御部１２２は、不図示のホスト装置から、データの読み出し要求を受け付けた場合は、データの読み出しが要求されたデータ記憶部（この例では１００または１１０）に格納されたデータを読み出す制御を行う。例えば読み出し要求は、読み出しの実行を要求するコマンドと、プログラム上の仮想空間アドレスのうち、読み出しを要求するデータが割り当てられる場所を示す論理アドレスとを含んで構成される。上記論理アドレスは、ホスト装置によって指定される。読み出し制御部１２２は、ホスト装置から、データの読み出し要求を受け付けた場合、不図示の論物変換テーブルを参照して、読み出し要求に含まれる論理アドレスに対応付けられた物理アドレス（データ記憶部の位置を示す位置情報の一例）を特定する。読み出し制御部１２２は、特定した物理アドレスを、不良情報解析部１２３へ通知するとともに、特定した物理アドレスにより特定されるデータ記憶部に格納されたデータを読み出す制御を行う。そして、読み出し制御部１２２は、不良情報解析部１２３で特定された不良位置に基づいて、データ記憶部から読み出したデータを修正する制御を行う。具体的な内容については後述する。
【００２５】
不良情報解析部１２３は、読み出し制御部１２２によるデータの読み出し対象となるデータ記憶部（１００または１１０）に対応する不良情報記憶部（１０１または１１１）から不良情報を読み出し、読み出した不良情報を解析して不良位置を特定する。また、不良情報解析部１２３は、データの書き込み対象として決定されたデータ記憶部に対応する不良情報記憶部から不良情報を読み出し、読み出した不良情報を解析して不良位置を特定する。
【００２６】
本実施形態では、不良情報解析部１２３は、データの書き込みまたは読み出しの対象となるデータ記憶部の位置を示す位置情報（以下の説明では、「第１位置情報」と称する場合がある）に関する線形式から、当該データ記憶部に対応する不良情報記憶部の位置を示す位置情報（以下の説明では、「第２位置情報」と称する場合がある）を特定する。例えば、第１の不揮発性メモリ１０が有するデータ記憶部１００の位置情報をＭとしたとき、対応する不良情報記憶部１１１の位置情報Ｎは、計算式Ｎ＝Ｏｆｆｓｅｔ−Ｍ×αなどで求めても良い(この例では、Ｏｆｆｓｅｔおよびαは定数とする)。
【００２７】
次に、書き込み制御部１２１による制御（以下の説明では、「書き込み制御」と称する場合がある）を具体的に説明する。以下の説明では、書き込み対象のデータを「書き込みデータ」と称する場合がある。図４は、書き込み制御の一例を示すフロー図である。図４に示すように、データ記憶部１００に対するデータの書き込みを行う場合、まず書き込み制御部１２１は、データの書き込み対象となるデータ記憶部１００の位置を示す物理アドレスを、書き込み情報として不良情報解析部１２３に通知する（ステップＳ１）。書き込み情報が通知された不良情報解析部１２３は、データの書き込み対象となるデータ記憶部１００に対応する不良情報記憶部１１１を特定する（ステップＳ２）。次に、不良情報解析部１２３は、不良情報記憶部１１１に対して不良情報の読み出し要求を行い、不良情報を読み出す（ステップＳ３，ステップＳ４）。
【００２８】
次に、不良情報解析部１２３は、読み出した不良情報を解析する（ステップＳ５）。そして、不良情報解析部１２３は、データの書き込み対象となるデータ記憶部１００の通常データ記憶領域１００Ａの不良位置を特定し、特定した不良位置を、書き込み制御部１２１に通知する。次に、書き込み制御部１２１は、不良情報解析部１２３から受け取った不良位置をもとに、通常データ記憶領域１００Ａの不良位置に対する書き込みを回避して、冗長データ記憶領域１００Ｂを使って書き込みを行うように書き込みデータを再構築する（ステップＳ６）。そして、書き込み制御部１２１は、データ記憶部１００に対して、再構築した書き込みデータの書き込みを指示する。この指示を受けたデータ記憶部１００は、受け取った書き込みデータの書き込みを行う（ステップＳ７）。
【００２９】
書き込みデータの再構築の例を図５に示す。図５では、通常データ記憶領域に２箇所（２ｂｉｔ）の不良がある場合における書き込みデータの再構築例を示している。図５（Ａ）は、図３（Ａ）に示したデータ記憶部の構成例に対応する書き込みデータの再構築例を示し、図５（Ｂ）は、図３（Ｂ）に示したデータ記憶部の構成例に対応する書き込みデータの再構築例を示す。
【００３０】
図５（Ａ）では、通常データ記憶領域の不良位置に対する書き込みデータは、同一のデータ記憶部の冗長データ記憶領域に順に書き込むように書き込みデータを再構築する。不良位置に対しては例えば「１」を書き込むなど、不揮発記憶メモリの仕様などで予め決められたデータを固定的に書き込むことができる。一方、図５（Ｂ）では、通常データ記憶領域の不良位置に対する書き込みにおいては、１ｂｉｔ右側にシフトして隣の位置に書き込みを行う。このように、不良位置を右シフトにより避けて書き込みを行い、通常データ記憶領域から溢れたデータを冗長データ記憶領域に書き込むものとする。図５の例では、（Ａ）（Ｂ）ともに２ビットの冗長データ記憶領域を使用しているが、実現コストの少ない方法を採用すれば良い。
【００３１】
次に、読み出し制御部１２２による制御（以下の説明では、「読み出し制御」と称する場合がある）を具体的に説明する。以下の説明では、読み出し対象のデータを「読み出しデータ」と称する場合がある。図６は、読み出し制御の一例を示すフロー図である。図６の例では、データ記憶部１００に格納されたデータの読み出しを行う場合を想定している。まず、読み出し制御部１２２は、ホスト装置からデータの読み出し要求を受け付けた場合、不図示の論物変換テーブルを参照して、読み出し要求に含まれる論理アドレスに対応付けられた物理アドレスを特定し、特定した物理アドレスを、読み出し情報として不良情報解析部１２３に通知する（ステップＳ１０）。また、読み出し制御部１２２は、ステップＳ１０で特定した物理アドレスにより特定されるデータ記憶部１００に対して、データの読み出しを要求する（ステップＳ１１）。この要求を受けたデータ記憶部１００は、通常データ記憶領域１００Ａに格納されたデータを読み出し（ステップＳ１２）、読み出したデータを読み出し制御部１２２へ通知する。
【００３２】
一方、読み出し制御部１２２からの読み出し情報の通知を受けた不良情報解析部１２３は、データの読み出し対象となるデータ記憶部１００に対応する不良情報記憶部１１１を特定する（ステップＳ１３）。次に、不良情報解析部１２３は、不良情報記憶部１１１に対して不良情報の読み出し要求を行い、不良情報を読み出す（ステップＳ１４，ステップＳ１５）。次に、不良情報解析部１２３は、読み出した不良情報を解析する（ステップＳ１６）。そして、不良情報解析部１２３は、データの読み出し対象となるデータ記憶部１００の通常データ記憶領域１００Ａの不良位置を特定し、特定した不良位置を、読み出し制御部１２２に通知する。読み出し制御部１２２は、不良情報解析部１２３から受け取った不良位置に基づいて、データ記憶部１００から受け取ったデータ（読み出したデータ）を修正する制御を行う（ステップＳ１７）。
【００３３】
図５に示した書き込みデータの再構築の例では、読み出したデータの修正処理は、書き込みデータの再構築の逆を辿ることで実現可能である。例えば図５（Ａ）の例では、不良位置に対する書き込みデータは、冗長データ記憶領域に記憶されているので、不良位置から読み出したデータは、冗長データ記憶領域から読み出したデータで置換（修正の一例）することができる。通常データ記憶領域における不良位置に記憶されたデータと、冗長データ記憶領域に記憶されたデータとの対応関係を示す情報は、例えば不図示のメモリ（例えば第１の不揮発性メモリ１０や第２の不揮発性メモリ１１であってもよいし、それ以外のメモリであってもよい）に格納しておくことができる。一方、図５（Ｂ）の例では、不良位置に対する読み出しデータは、１ｂｉｔ左シフトして右隣りのデータで置換することができる。
【００３４】
以上に説明したように、本実施形態では、第１の不揮発性メモリ１０が有するデータ記憶部１００に対応する不良情報記憶部１１１は、第１の不揮発性メモリ１０とは独立に（並列に）アクセス可能な第２の不揮発性メモリ１１に設けられる一方、第２の不揮発性メモリ１１が有するデータ記憶部１１０に対応する不良情報記憶部１０１は、第２の不揮発性メモリ１１とは独立にアクセス可能な第１の不揮発性メモリ１０に設けられる。このような配置方式を採用することで、データ記憶部と、当該データ記憶部に対応する不良情報記憶部とに対して並列にアクセスすることが可能になり、データの読み出し時間と不良情報の読み出し時間とをオーバラップさせることができる。これにより、性能を劣化させることなく不良回避制御を実現することが可能になるという有利な効果を達成することができる。
【００３５】
以上においては、メモリシステム１が有する不揮発性記憶部の数は２つである場合を例に挙げて説明したが、これに限らず、例えばメモリシステム１が有する不揮発性記憶部の数は３以上であってもよい。例えばメモリシステム１が、第１の不揮発性メモリ１０および第２の不揮発性メモリ１１に加えて、第３の不揮発性メモリ（請求項の「不揮発性記憶部」に対応）を有する場合、第１の不揮発性メモリ１０が有するデータ記憶部１００に対応する不良情報記憶部１１１は、上述の第１実施形態のように第２の不揮発性メモリ１１に配置されてもよいし、上述の第１実施形態とは異なり、第３の不揮発性メモリに配置されてもよい。要するに、メモリシステム１が有する各不揮発性記憶部は、データ記憶部と、当該不揮発性記憶部とは異なる他の不揮発性記憶部が有するデータ記憶部の不良情報を記憶する不良情報記憶部とを備える形態であればよい。
【００３６】
（第２実施形態）
次に、第２実施形態について説明する。上述の第１実施形態と共通する部分については適宜に説明を省略する。図７は、第２実施形態のメモリシステム１５０の構成例を示す図である。第２実施形態のメモリシステム１５０は、第１の不揮発性メモリ１０および第２の不揮発性メモリ１１の代わりに、不揮発性メモリ１６０を有する。不揮発性メモリ１６０は、互いに独立にアクセス可能な第１の不揮発性メモリプレーン１６１および第２の不揮発性メモリプレーン１６２を有する。
【００３７】
第１の不揮発性メモリプレーン１６１は、第１実施形態における第１の不揮発性メモリ１０に対応し、データ記憶部１００と不良情報記憶部１０１とを有する。第２の不揮発性メモリプレーン１６２は、第１実施形態における第２の不揮発性メモリ１１に対応し、データ記憶部１１０と不良情報記憶部１１１とを有する。
【００３８】
上述の第１実施形態と同様に、第１の不揮発性メモリプレーン１６１が有するデータ記憶部１００に対応する不良情報記憶部１１１は、第２の不揮発性メモリプレーン１６２に配置され、第２の不揮発性メモリプレーン１６２が有するデータ記憶部１１０に対応する不良情報記憶部１０１は、第１の不揮発性メモリプレーン１６１に配置される。このような配置方式を採用することで、データ記憶部と、当該データ記憶部に対応する不良情報記憶部とに対して並列にアクセスすることが可能になり、データの読み出し時間と不良情報の読み出し時間とをオーバラップさせることができる。
【００３９】
（第３実施形態）
次に、第３実施形態について説明する。第３実施形態では、不良情報解析部は、データ記憶部の位置を示す位置情報（第１位置情報）と、当該データ記憶部の不良情報を記憶する不良情報記憶部の位置を示す位置情報（第２位置情報）とが対応付けられた対応関係情報を参照して、データの書き込みまたは読み出しの対象となるデータ記憶部の位置を示す第１位置情報に対応する第２位置情報を特定する。以下、具体的に説明する。なお、上述の第１実施形態と共通する部分については適宜に説明を省略する。
【００４０】
図８は、第３実施形態のメモリシステム１７０の構成例を示す図である。図８に示すように、メモリシステム１７０は、第１の不揮発性メモリ１０と、第２の不揮発性メモリ１１と、コントローラ１２と、揮発性メモリ１３とを有する。
【００４１】
揮発性メモリ１３は、データ記憶部の位置を示す第１位置情報と、不良情報記憶部の位置を示す第２位置情報とが対応付けられた位置情報テーブル１８０を記憶する。この例では、位置情報テーブル１８０は、請求項の「対応関係情報」に対応していると考えることができる。図８の例では、位置情報テーブル１８０において、データ記憶部１００の位置を示す第１位置情報Ｄ１に対して、データ記憶部１００に対応する不良情報記憶部１１１の位置を示す第２位置情報Ｆ１が対応付けられている。また、データ記憶部１１０の位置を示す第１位置情報Ｄ２に対して、データ記憶部１１０に対応する不良情報記憶部１０１の位置を示す第２位置情報Ｆ２が対応付けられているという具合である。
【００４２】
不良情報解析部１２３は、データの書き込み／読み出しの対象となるデータ記憶部の位置を示す位置情報（第１位置情報）をインデックスとして位置情報テーブル１８０を参照し、対応する不良情報記憶部の位置を示す第２位置情報を特定する。以上の構成を採用することにより、例えば不良情報記憶部の位置を動的に変更するなどの制御が可能となる。
なお、揮発性メモリ１３の配置位置については、不良情報解析部１２３が参照可能な位置であればよく、図８のようにコントローラ１２の外部に配置してもよいし、コントローラ１２の内部に配置してもよい。また、揮発性メモリ１３の実現手段についても特に制限せず、ＤＲＡＭやＳＲＡＭなどで構成して構わない。
【００４３】
（第４実施形態）
次に、第４実施形態について説明する。第４実施形態では、不良情報を保持する（キャッシュする）不良情報キャッシュをさらに備え、不良情報解析部は、データの書き込みまたは読み出しの対象となるデータ記憶部の不良情報が不良情報キャッシュに記憶されている場合は、不良情報キャッシュから当該不良情報を読み出す。以下、具体的に説明する。なお、上述の第１実施形態と共通する部分については適宜に説明を省略する。
【００４４】
図９は、第４実施形態のメモリシステム１９０の構成例を示す図である。図９に示すように、メモリシステム１９０は、第１の不揮発性メモリ１０と、第２の不揮発性メモリ１１と、コントローラ１２と、揮発性メモリ１４とを有する。
【００４５】
揮発性メモリ１４は、不良情報をキャッシュするための不良情報キャッシュ１３１を有し、必要に応じて不良情報記憶部１０１、１１１に記憶されている不良情報をキャッシュする。ここで、不良情報キャッシュ１３１のキャッシュアルゴリズムの実現方法については特に限定しない。例えば、一度にキャッシュする不良情報の数や、キャッシュした不良情報を追い出す制御の方法などについては限定しない。
【００４６】
図９の例では、不良情報キャッシュ１３１は、不良情報記憶部の位置を示す位置情報（例えばアドレス）ごとに、当該位置情報により特定される不良情報記憶部に格納された不良情報を対応付けて保持している。不良情報解析部１２３は、データの書き込みまたは読み出しの対象となるデータ記憶部の不良情報を記憶する不良情報記憶部の位置を示す位置情報に対応付けられた不良情報が不良情報キャッシュ１３１に存在する場合は、不良情報キャッシュ１３１から当該不良情報を読み出すことができるので、不揮発性メモリにアクセスすることなく不良情報を読み出すことができる。
【００４７】
ここで、不良情報を読み出して不良情報キャッシュ１３１に記憶するための制御手段については特に限定しない。不良情報キャッシュ１３１がキャッシュミス時に自律的に不良情報記憶部から不良情報を読み出しても構わないし、不良情報解析部１２３がキャッシュミス時に不良情報記憶部から不良情報を読み出して不良情報キャッシュ１３１に記憶してもよい(不良情報解析部１２３がキャッシュヒット・ミスを制御するかどうかは規定しない)。
【００４８】
このような構成とすることで、頻繁に利用される不良情報(すなわち時間的局所性の高い不良情報)や、次に参照される可能性の高い不良情報(すなわち空間的局所性の高い不良情報)を揮発性メモリ１４にキャッシュすることができ、不揮発性メモリ（１０や１１）から不良情報を読み出すよりも高速に不良情報の読み出しを行うことができる。
【００４９】
図１０は、第４実施形態のメモリシステム１９０の変形例を示した図である。図１０の例では、コントローラ１２は、揮発性メモリ１２４を有する。本変形例では、不良情報をキャッシュする不良情報キャッシュを階層化し、揮発性メモリ１２４が不良情報一次キャッシュ１２５を備え、揮発性メモリ１４が不良情報二次キャッシュ１３２を備えている。
【００５０】
不良情報解析部１２３は、まず、不良情報一次キャッシュ１２５でキャッシュヒットした場合は不良情報一次キャッシュ１２５から不良情報を読み出す。不良情報一次キャッシュ１２５でキャッシュミスした場合は、不良情報二次キャッシュ１３２を参照し、不良情報二次キャッシュ１３２でキャッシュヒットした場合は、不良情報二次キャッシュ１３２から不良情報を読み出す。不良情報二次キャッシュ１３２でキャッシュミスした場合は、不揮発性メモリから不良情報を読み出す。なお、ここでも、不良情報を読み出して不良情報キャッシュに記憶するための制御手段については特に限定しない。
【００５１】
（第５実施形態）
次に、第５実施形態について説明する。第５実施形態では、外部装置が、不揮発性メモリ（１０、１１）に対する不良情報の書き込みを行う。以下、具体的に説明する。なお、上述の第１実施形態と共通する部分については適宜に説明を省略する。
【００５２】
図１１に示すように、メモリシステム１は、外部装置２と接続される。そして、外部装置２は、第1の不揮発性メモリ１０および第２の不揮発性メモリ１１の各々に対して不良情報を書き込むことができる。例えば、製造時の検査工程において、不揮発性メモリの不良を検査し、検査結果から作成した初期不良情報を、外部装置２から不良情報記憶部に書き込むこともできる。
【００５３】
外部装置２は、不良情報を不良情報記憶部に書き込む機能を有するものであればよく、ディスクストレージや不揮発性メモリデバイスなどの記憶装置と書き込み行うドライバなどの組み合わせであってもよいし、不良情報を集中的に管理するデータベースサーバからネットワーク経由でダウンロードする形態でも構わない。
【００５４】
（第６実施形態）
次に、第６実施形態について説明する。第６実施形態では、データ記憶部の不良位置が新たに検出された場合、不良情報記憶部に記憶される不良情報が更新される。以下、具体的に説明する。なお、上述の第１実施形態と共通する部分については適宜に説明を省略する。
【００５５】
図１２は、第６実施形態のメモリシステム２００の構成例を示す図である。図１２に示すように、コントローラ１２は、不良情報管理部１２６を有する。不良情報管理部１２６は、不良検出部１２６Ａと、不良情報生成部１２６Ｂと、不良情報更新部１２６Ｃとを有する。不良情報管理部１２６は、装置の製造後に発生した不良を検出し、不良情報記憶部（１０１、１１１）に記憶される不良情報を更新する役割を担っている。説明の便宜上、ここでは、書き込み制御部１２１や読み出し制御部１２２の図示を省略している。
【００５６】
不良検出部１２６Ａは、データ記憶部の不良位置を検出する。より具体的には、不良検出部１２６Ａは、データ記憶部の製造後に新たに発生した不良を検出するが、不良の検出手段は特に限定しない。例えば、不良の要因となり得るエラーを不揮発性メモリで発見することが可能であれば、発見したエラーの情報を読み出しデータに付加して不良検出部１２６Ａに渡し、そのエラーを元に不良を検出してもよい。また、読み出しデータに対してエラー訂正不能などのエラーを不良検出部１２６Ａで検出し、不良として検出しても良い。
【００５７】
不良情報生成部１２６Ｂは、データ記憶部に対応する不良情報記憶部から読み出した不良情報（つまり、現時点で不良情報記憶部に記憶されている不良情報）と、不良検出部１２６Ａで検出された不良位置を示す検出不良情報とから、不良情報記憶部に格納すべき不良情報を生成し直す。不良情報更新部１２６Ｃは、不良情報生成部１２６Ｂで生成された不良情報を、対応する不良情報記憶部に書き戻す。
【００５８】
（第７実施形態）
次に、第７実施形態について説明する。第７実施形態では、コントローラは、データ記憶部の誤り訂正を行うデータ保護部と、不良情報記憶部の誤り訂正を行う不良情報保護部と、を備え、不良情報保護部の誤り訂正能力は、前記データ保護部の誤り訂正能力よりも高い。以下、具体的に説明する。なお、上述の第１実施形態と共通する部分については適宜に説明を省略する。
【００５９】
図１３は、第７実施形態のメモリシステム２１０の構成例を示す図である。図１３に示すように、コントローラ１２は、上述の書き込み制御部１２１、読み出し制御部１２２、および、不良情報解析部１２３に加えて、不良情報管理部１２６と、データ保護部１２７と、不良情報保護部１２８とを有する。不良情報管理部１２６の機能は、上述の第６実施形態で説明した内容と同じであるが、例えば不良情報管理部１２６が設けられない形態であってもよい。
【００６０】
データ保護部１２７は、データ記憶部の誤り訂正を行う役割を担っており、ＥＣＣエンコーダ１２７Ａと、ＥＣＣデコーダ１２７Ｂとを備える。不良情報保護部１２８は、不良情報記憶部の誤り訂正を行う役割を担っており、ＥＣＣエンコーダ１２８Ａと、ＥＣＣデコーダ１２８Ｂとを備える。
【００６１】
ＥＣＣエンコーダ１２７Ａと、ＥＣＣデコーダ１２７Ｂとが提供するエラー訂正方式については、メモリシステム１の必要なエラー訂正機能を備えていればよく、具体的なエラー訂正方式の形態については特に制限を設けない。ＥＣＣエンコーダ１２８Ａは、データ記憶部に記憶するデータに対してエラー訂正符号を生成し、不揮発性メモリに記憶する。エラー訂正符号は対応するデータと同じデータ記憶部に記憶することが自然であるが、エラー訂正符号を記憶する場所については特に制限を設けない。よって、データを記憶するデータ記憶部とは別のデータ記憶部に記憶しても良いし、エラー訂正符号を専用に格納する記憶部を設けてもよい。また、対応するデータを記憶するデータ記憶部を有する不揮発性メモリとは別の不揮発性メモリに、エラー訂正符号を記憶してもよい。
【００６２】
ＥＣＣエンコーダ１２８ＡとＥＣＣデコーダ１２８Ｂとが提供するエラー訂正方式については、ＥＣＣエンコーダ１２７Ａと、ＥＣＣデコーダ１２７Ｂとが提供するエラー訂正方式の訂正能力よりも強力な方式を採用することが望ましい。このような構成とすることで、不良情報記憶部のエラーによる誤動作を確実に防止できる。
【００６３】
なお、例えば上述の第５実施形態のように、外部装置が、不良情報記憶部に記憶する不良情報に対してエラー訂正符号を生成して書き込みを行う形態においては、上述のＥＣＣエンコーダ１２８Ａは不要となる。なお、データの読み出し時間と不良情報の読み出し時間とをオーバラップさせるためには、ＥＣＣデコーダ１２８Ｂと、ＥＣＣデコーダ１２７Ｂとを個別に（独立に）設けておく必要がある。
【００６４】
以上、本発明の実施形態を説明したが、上述の各実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。なお、上述の各実施形態および変形例は任意に組み合わせることもできる。
【符号の説明】
【００６５】
１      メモリシステム
１０    第１の不揮発性メモリ
１１    第２の不揮発性メモリ
１２    コントローラ
１３    揮発性メモリ
１４    揮発性メモリ
１００  データ記憶部
１０１  不良情報記憶部
１１０  データ記憶部
１１１  不良情報記憶部
１２１  書き込み制御部
１２２  読み出し制御部
１２３  不良情報解析部
【図１】
2015038796.tif 000003
【図２】
2015038796.tif 000004
【図３】
2015038796.tif 000005
【図４】
2015038796.tif 000006
【図５】
2015038796.tif 000007
【図６】
2015038796.tif 000008
【図７】
2015038796.tif 000009
【図８】
2015038796.tif 000010
【図９】
2015038796.tif 000011
【図１０】
2015038796.tif 000012
【図１１】
2015038796.tif 000013
【図１２】
2015038796.tif 000014
【図１３】
2015038796.tif 000015