(57)【特許請求の範囲】
【請求項１】
アクセス装置と通信可能であり、前記アクセス装置からの指示によりデータの読み出し及び／又は書き込みを行う不揮発性記憶装置であって、
データを記憶する一つ以上の不揮発性メモリと、
前記不揮発性メモリの制御を行うメモリコントローラとを備え、
前記不揮発性メモリは、
消去単位であるブロックを複数含み、
前記ブロックはデータの書き込み単位であるページを複数含み、
前記メモリコントローラは、
複数の前記ブロックを組み合わせて一の領域に第１の論理ブロックを配置し、及び、複数の前記ブロックを組み合わせて別の領域に第２の論理ブロックを配置し、
前記第１の論理ブロックには複数の前記ページから構成される誤り訂正グループを複数割り当て、
前記誤り訂正グループにはデータと、前記データに対する第１及び第２の誤り訂正符号とを割り当て、
前記第２の論理ブロックには複数の前記ページから構成される多重化グループを複数割り当て、
前記多重化グループにはデータと前記データに対する第１の誤り訂正符号とを、それぞれ多重化して割り当て、
データを書き込むときに、前記不揮発メモリに書き込むデータサイズが所定のサイズ未満である場合は、データを第２の論理ブロックに書き込み、前記不揮発メモリに書き込むデータサイズが所定のサイズ以上である場合は、データを第１の論理ブロックに書き込み、
同一論理アドレスに対して、第１の論理ブロックと第２の論理ブロックとのいずれの論理ブロックに有効なデータが格納されているかを管理するための有効データ管理テーブルを備えていること、
を特徴とする不揮発性記憶装置。
【請求項２】
請求項１に記載の不揮発性記憶装置であって、
前記第２の論理ブロックで構成される論理アドレス空間のサイズは、前記第１の論理ブロックで構成される論理アドレス空間のサイズより小さいこと、
を特徴とする不揮発性記憶装置。
【請求項３】
請求項１に記載の不揮発性記憶装置であって、
１つの前記第１の論理ブロックを構成するブロック数と、１つの前記第２の論理ブロックを構成するブロック数とが、同一であること、
を特徴とする不揮発性記憶装置。
【請求項４】
請求項１に記載の不揮発性記憶装置であって、
前記不揮発性メモリはセル毎に２値を超える情報を格納可能なフラッシュメモリであって、
少なくとも前記第２の論理ブロックを構成するブロックへの書き込みは、セル毎に２値までの情報しか格納しないこと、
を特徴とする不揮発性記憶装置。
【請求項５】
データを記憶する一つ以上の不揮発性メモリの制御を行うメモリコントローラであって、
前記不揮発性メモリは、
消去単位であるブロックを複数含み、
前記ブロックはデータの書き込み単位であるページを複数含み、
前記メモリコントローラは、
複数の前記ブロックを組み合わせて一の領域に第１の論理ブロックを配置し、及び、複数の前記ブロックを組み合わせて別の領域に第２の論理ブロックを配置し、
第１の論理ブロックには複数の前記ページから構成される誤り訂正グループを複数割り当て、
前記誤り訂正グループにはデータと、前記データに対する第１及び第２の誤り訂正符号とを割り当て、
第２の論理ブロックには複数の前記ページから構成される多重化グループを複数割り当て、
前記多重化グループにはデータと前記データに対する第１の誤り訂正符号とを、それぞれ多重化して割り当て、
データを書き込むときに、前記不揮発メモリに書き込むデータサイズが所定のサイズ未満である場合は、データを第２の論理ブロックに書き込み、前記不揮発メモリに書き込むデータサイズが所定のサイズ以上である場合は、データを第１の論理ブロックに書き込み、
同一論理アドレスに対して、第１の論理ブロックと第２の論理ブロックとのいずれの論理ブロックに有効なデータが格納されているかを管理するための有効データ管理テーブルを備えていること、
を特徴とするメモリコントローラ。
【請求項６】
請求項５に記載のメモリコントローラであって、
前記第２の論理ブロックで構成される論理アドレス空間のサイズは、前記第１の論理ブロックで構成される論理アドレス空間のサイズより小さいこと、
を特徴とするメモリコントローラ。
【請求項７】
請求項５に記載のメモリコントローラであって、
１つの前記第１の論理ブロックを構成するブロック数と、１つの前記第２の論理ブロックを構成するブロック数とが、同一であること、
を特徴とするメモリコントローラ。
【請求項８】
請求項５に記載のメモリコントローラであって、
前記不揮発性メモリはセル毎に２値を超える情報を格納可能なフラッシュメモリであって、
少なくとも前記第２の論理ブロックを構成するブロックへの書き込みは、セル毎に２値までの情報しか格納しないこと、
を特徴とするメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを制御するメモリコントローラ、及び、不揮発性メモリとメモリコントローラを備える半導体メモリカード等の不揮発性記憶装置に関する。
【背景技術】
【０００２】
近年、半導体メモリカードを中心に、書き換え可能な不揮発性メモリを備える不揮発性記憶装置の需要が広まっている。
【０００３】
半導体メモリカードは、小型・軽量・大容量・耐震性・取り扱いの簡便さ等の、種々の特長を備えており、デジタルスチルカメラや携帯電話などのポータブル機器の記録媒体として、その需要が高まっている。最近では、ポータブル機器だけではなく、デジタルテレビやＤＶＤレコーダ等の据え置き機器にも、半導体メモリカード用のスロットが標準搭載されており、半導体メモリカードの需要はさらに高まっている。
【０００４】
上述の半導体メモリカードは、不揮発性の主記憶メモリとしてフラッシュメモリ（主にＮＡＮＤ型のフラッシュメモリ）と、それを制御するメモリコントローラとを備えている。メモリコントローラは、デジタルスチルカメラ本体等に代表されるアクセス装置からのデータの読み書き指示に応じて、フラッシュメモリに対するデータの読み書き制御を行うものである。
【０００５】
メモリコントローラからフラッシュメモリへのデータの書込みは、ページと呼ばれる単位で行われる。最近のフラッシュメモリでは４ｋＢ（キロバイト）、８ｋＢ程度のページサイズが主流である。
【０００６】
フラッシュメモリは、セルという記憶素子を多数含み、各セルに電荷を蓄積すること若しくは各セルから電荷を放出することにより情報を記憶する。ところが、セルに記憶された情報は、セルの劣化などの要因により失われることがある。そのため、メモリコントローラは、一般に、アクセス装置からの書き込みデータに対する誤り訂正符号を生成し、上述の書き込みデータと共にフラッシュメモリに格納する。これにより、データの読出し時にエラーが発生しても、そのエラービット数が、適用される誤り訂正符号の訂正能力内であれば訂正が行われ、よって正しいデータを読み出すことが可能となる。例えば、下記の特許文献１では、フラッシュメモリのページ内に書き込みデータ（ユーザデータ）と誤り訂正符号（付加データ）とを交互に格納する方法が提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−２９２９２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述の方法では、データ読出し時に誤り訂正符号の訂正能力を超えるエラーが発生すると、正しいデータを読むことはできない。
【０００９】
本発明は、上記課題に鑑みて為されたものであり、データ読出しの際に誤り訂正符号の訂正能力を超えるエラーが発生する場合であっても正しくデータを読み出すことができる不揮発性記憶装置を提供することを目的としている。
【課題を解決するための手段】
【００１０】
本発明者は、上述の課題を解決するため、誤り訂正符号（以下、第１の誤り訂正符号と称する。）を付与したデータの集合に対して、さらに第２の誤り訂正符号を付与するという方法を考案した。例えば、第２の誤り訂正符号として、４ページ分のデータに対して１ページのパリティを付与するという方法を考案した。このようにすることにより、第１の誤り訂正符号の訂正能力を超えるエラーが発生した場合であっても、第２の誤り訂正符号（パリティ）を用いることで正しいデータを読み出すことが可能となる。
【００１１】
しかしながら、上述の方法においては、第２の誤り訂正符号を付与すると、メモリコントローラで管理されるデータ単位が大きくなり、よってアクセス装置からのデータ書き込みのデータサイズが小さい場合にはオーバーヘッドが大きくなるために、データ書き込みの速度が低下する、という問題がある。
【００１２】
先ほどの例では、４ページ分のデータに対して１ページ分のパリティを付与するので、メモリコントローラは５ページ単位で入出力データの管理を行う。例えば、アクセス装置からのデータ書き込みのサイズが１ページであったとしても、メモリコントローラは４ページ分のデータと、これに対する１ページ分のパリティの計５ページをフラッシュメモリに書き込む。このとき、４ページ分のデータのうち、１ページはアクセス装置から受信したデータで構成されるが、残り３ページは不揮発性メモリから読み出した既存データで構成される。従って、このときのオーバーヘッドは、アクセス装置からのデータ書き込みのサイズが４ページである場合に比べてどうしても大きくなる。
【００１３】
本発明は、更に、上述の課題に鑑みてなされたものであり、不揮発性メモリへのデータ書き込みにおいて第１及び第２の誤り訂正符号を付与した場合でも、小さいデータサイズのデータ書き込みを効率的に行うことが可能である不揮発性記憶装置、及びメモリコントローラを提供するものである。
【００１４】
本発明に係る不揮発性記憶装置は、
アクセス装置と通信可能であり、前記アクセス装置からの指示によりデータの読み出し及び／又は書き込みを行う不揮発性記憶装置であって、
データを記憶する一つ以上の不揮発性メモリと、
前記不揮発性メモリの制御を行うメモリコントローラとを備え、
前記不揮発性メモリは、
消去単位であるブロックを複数含み、
前記ブロックはデータの書き込み単位であるページを複数含み、
前記メモリコントローラは、
複数の前記ブロックを組み合わせて一の領域に第１の論理ブロックを配置し、及び、複数の前記ブロックを組み合わせて別の領域に第２の論理ブロックを配置し、
前記第１の論理ブロックには複数の前記ページから構成される誤り訂正グループを複数割り当て、
前記誤り訂正グループにはデータと、前記データに対する第１及び第２の誤り訂正符号とを割り当て、
前記第２の論理ブロックには複数の前記ページから構成される多重化グループを複数割り当て、
前記多重化グループにはデータと前記データに対する第１の誤り訂正符号とを、それぞれ多重化して割り当て、
データを書き込むときに、前記不揮発メモリに書き込むデータサイズが所定のサイズ未満である場合は、データを第２の論理ブロックに書き込み、前記不揮発メモリに書き込むデータサイズが所定のサイズ以上である場合は、データを第１の論理ブロックに書き込み、
同一論理アドレスに対して、第１の論理ブロックと第２の論理ブロックとのいずれの論理ブロックに有効なデータが格納されているかを管理するための有効データ管理テーブルを備えている。
【００１５】
本発明に係るメモリコントローラは、データを記憶する一つ以上の不揮発性メモリの制御を行うメモリコントローラであって、
前記不揮発性メモリは、
消去単位であるブロックを複数含み、
前記ブロックはデータの書き込み単位であるページを複数含み、
前記メモリコントローラは、
複数の前記ブロックを組み合わせて一の領域に第１の論理ブロックを配置し、及び、複数の前記ブロックを組み合わせて別の領域に第２の論理ブロックを配置し、
第１の論理ブロックには複数の前記ページから構成される誤り訂正グループを複数割り当て、
前記誤り訂正グループにはデータと、前記データに対する第１及び第２の誤り訂正符号とを割り当て、
第２の論理ブロックには複数の前記ページから構成される多重化グループを複数割り当て、
前記多重化グループにはデータと前記データに対する第１の誤り訂正符号とを、それぞれ多重化して割り当て、
データを書き込むときに、前記不揮発メモリに書き込むデータサイズが所定のサイズ未満である場合は、データを第２の論理ブロックに書き込み、前記不揮発メモリに書き込むデータサイズが所定のサイズ以上である場合は、データを第１の論理ブロックに書き込み、
同一論理アドレスに対して、第１の論理ブロックと第２の論理ブロックとのいずれの論理ブロックに有効なデータが格納されているかを管理するための有効データ管理テーブルを備えている。
【発明の効果】
【００１６】
本発明によれば、第１の誤り訂正符号を付与したデータの集合に対して第２の誤り訂正符号を付与した上で不揮発性メモリに格納することにより、データ読出しの際に第１の誤り訂正符号の訂正能力を超えるエラーが発生する場合であっても正しくデータを読み出すことができる不揮発性記憶装置及びメモリコントローラを提供することが可能となる。更に本発明によれば、所定のサイズ未満のデータを書き込むために第２の論理ブロックに多重化グループを設けることにより、不揮発性メモリへのデータ書き込みにおいて第１及び第２の誤り訂正符号を付与した場合でも、小さいサイズのデータ書き込みを効率的に行うことが可能な、不揮発性記憶装置、及びメモリコントローラを提供することが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態１に係る不揮発性記憶システムの概略の構成図。
【図２】本発明の実施の形態１に係る不揮発性メモリの構成例を示す図。
【図３】図２に示すブロックの構成例を示す図。
【図４】本発明の実施の形態１に係る不揮発性メモリに設定される領域を示す図。
【図５】本発明の実施の形態１に係る論理物理変換テーブルの例を示す図。
【図６】本発明の実施の形態１に係る有効データ管理テーブルの例を示す図。
【図７】本発明の実施の形態１に係るデータページの構成の一例を示す図。
【図８】本発明の実施の形態１に係るパリティグループの例を示す図。
【図９】本発明の実施の形態１に係るパリティグループの配置の一例を示す図。
【図１０】本発明の実施の形態１に係る二重化グループの配置の一例を示す図。
【図１１】本発明の実施の形態１に係る不揮発性記憶装置の書き込み処理の手順を示すフローチャート。
【図１２】本発明の実施の形態１に係る不揮発性記憶装置の読み出し処理の手順を示すフローチャート。
【図１３】本発明の実施の形態１に係る不揮発性記憶装置の初期化処理の手順を示すフローチャート。
【発明を実施するための形態】
【００１８】
以下、本発明の各実施の形態について、図面を参照しながら説明する。
【００１９】
[実施の形態１]
１．１．不揮発性記憶システムの構成
本発明の実施の形態１に係る不揮発性記憶システム１０００の構成について、図１から図６を用いて説明する。
【００２０】
図１は、本発明の実施の形態１に係る不揮発性記憶システム１０００の概略構成図である。図１に示すように、不揮発性記憶システム１０００は、不揮発性記憶装置１と、不揮発性記憶装置１が装着されるアクセス装置２とを含んで構成される。不揮発性記憶装置１と、アクセス装置２とは、バスＢ１により接続されて、双方向に通信を行うことができる。不揮発性記憶装置１は、アクセス装置２からの指示に応じてデータの読み出し及び／又は書き込みを行う。ここで、不揮発性記憶装置１は、例えば、半導体メモリカードである。アクセス装置２は、例えば、半導体メモリカードに静止画コンテンツを記録するデジタルスチルカメラである。
【００２１】
図１に示すように、不揮発性記憶装置１は、メモリコントローラ１１と、データを記憶する一つ又は複数の不揮発性メモリ１２とを含む。メモリコントローラ１１と、不揮発性メモリ１２とは、バスＢ２により接続されている。メモリコントローラ１１は、不揮発性メモリ１２とバスＢ２を介して、データの送受信、すなわち、データの読み出し／書き込み、並びに、コマンドの送信及びレスポンスの受信等を行い、不揮発性メモリ１２の制御を行う。なお、不揮発性メモリ１２が複数存在する場合は、バスＢ２が複数存在していてもよい。
【００２２】
メモリコントローラ１１は、不揮発性記憶装置１の制御全般を行うモジュールであり、例えば、ＣＰＵなどを含むＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ；大規模集積回路）として構成される。不揮発性メモリ１２は、例えば、ＮＡＮＤ型フラッシュメモリである。
【００２３】
メモリコントローラ１１は、図１に示すように、ＣＰＵ１０１と、ＲＡＭ１０２と、ＲＯＭ１０３と、アクセス装置ＩＦ（インタフェース）部１０４と、バッファ１０５と、不揮発性メモリＩＦ（インタフェース）部１０６とを含む。メモリコントローラ１１の各機能部は、図１に示すように、バスＢＣ１を介して接続されている。なお、メモリコントローラ１１は、メモリコントローラ１１の機能部の全部又は一部が直接接続される構成であってもよい。
【００２４】
アクセス装置ＩＦ部１０４は、不揮発性記憶装置１とアクセス装置２との接続部である。アクセス装置２と不揮発性記憶装置１との制御信号及びデータの送受信は、アクセス装置ＩＦ部１０４を介して行われる。
【００２５】
不揮発性メモリＩＦ部１０６は、メモリコントローラ１１と不揮発性メモリ１２との接続部である。メモリコントローラ１１と不揮発性メモリ１２との制御信号及びデータの送受信は、不揮発性メモリＩＦ部１０６を介して行われる。
【００２６】
バッファ１０５は、アクセス装置ＩＦ部１０４を介してアクセス装置２から受信したデータ、アクセス装置ＩＦ部１０４を介してアクセス装置２に送信（出力）するデータ、不揮発性メモリＩＦ部１０６を介して不揮発性メモリ１２から読み出したデータ、及び、不揮発性メモリＩＦ部１０６を介して不揮発性メモリ１２に書き込むデータなどを、一時的に格納するためのメモリである。
【００２７】
ＲＯＭ１０３には、不揮発性記憶装置１を制御するプログラムが格納されている。このプログラムは、ＲＡＭ１０２にロードされ、ＣＰＵ１０１により実行される。
【００２８】
具体的には、ＲＯＭ１０３は、図１に示すように、コマンド処理部１１１と、アドレス管理部１１２と、符号処理部１１３と、不揮発性メモリ制御部１１４とを含む。なお、本実施の形態では、コマンド処理部１１１、アドレス管理部１１２、符号処理部１１３及び、不揮発性メモリ制御部１１４は、ＲＯＭ１０３上において、ソフトウェアにより実現されるものを想定しているが、これに限定されることはなく、例えば、コマンド処理部１１１、アドレス管理部１１２、符号処理部１１３及び、不揮発性メモリ制御部１１４の全部又は一部は、ハードウェアで実現されるものであってもよい。
【００２９】
コマンド処理部１１１は、アクセス装置ＩＦ部１０４を介して、アクセス装置２から受信したコマンド及びコマンドに関するパラメータを解釈し、コマンドの処理を実行する機能部である。
【００３０】
アドレス管理部１１２は、不揮発性メモリ１２のアドレス管理全般を行うが、アドレス管理部１１２そのものには有効なデータは格納されていない。先ず、アドレス管理部１１２は、アクセス装置２からアクセス可能なアドレス空間として不揮発性記憶装置１が提供する論理アドレス空間における論理アドレスと、不揮発性メモリ１２における物理アドレスとを対応付ける（後で説明する）論理物理変換テーブルの物理アドレスを管理する。また、アドレス管理部１１２は、後で説明する有効データ管理テーブルの物理アドレスを管理する。更に、アドレス管理部１１２は、データ書き込みに再利用可能なブロックであるフリーブロックの物理アドレスや、データ書き込みに利用不可能な不良ブロックの物理アドレスなどを管理する。
【００３１】
符号処理部１１３は、不揮発性メモリ１２において読み書きするデータに対する、第１及び第２の誤り訂正符号の処理を行う。ここで誤り訂正符号とは、例えば、リード・ソロモン符号やパリティである。
【００３２】
符号処理部１１３は、不揮発性メモリ１２へのデータ書き込み時に、データに対する第１の誤り訂正符号を生成する。更に、データと該データの第１の誤り訂正符号に対する第２の誤り訂正符号を生成する。そしてデータ、第１の誤り訂正符号、及び、第２の誤り訂正符号を不揮発性メモリ１２に書き込む。
【００３３】
更に、符号処理部１１３は、不揮発性メモリ１２からのデータ読み出し時に、データとともに第１の誤り訂正符号を読み出し、読み出したデータのエラーの検出及び訂正を行う。第１の誤り訂正符号による訂正が不可能であるエラーが検出された場合には、更に、不揮発性メモリ１２から第２の誤り訂正符号を読み出し、エラーの検出及び訂正を行う。
【００３４】
不揮発性メモリ制御部１１４は、不揮発性メモリＩＦ部１０６を介して送受信される制御信号を処理するデバイスドライバである。
【００３５】
図２は、本実施の形態に係る不揮発性メモリ１２の構成例を示す図である。不揮発性メモリ１２はデータの消去単位であるブロック（物理ブロック）１２１を複数個含む。それぞれのブロック１２１のサイズは、例えば、１ＭＢ（メガバイト）程度である。
【００３６】
図３は、図２に示すブロック１２１の構成例を示す図である。ブロック１２１は、データの書き込み単位であるページ１２２を複数個含む。それぞれのページ１２２のサイズは、例えば、８ｋＢ程度である。ブロック１２１あたりのページ数は、例えば、１２８ページである。
【００３７】
図４は、本実施の形態に係る不揮発性メモリ１２に設定される領域を示す図である。ここで不揮発性メモリ１２における領域は、不揮発性メモリ１２に格納される情報の種類によって分けられている。不揮発性メモリ１２に設定される領域には、第１のデータ記録領域１２５、第２のデータ記録領域１２６、アドレス管理テーブル領域１２７、ワーク領域１２８、及びシステム情報領域１２９等がある。
【００３８】
第１のデータ記録領域１２５は、アクセス装置２からの書き込みデータを格納する領域である。アクセス装置２からのデータに加え、該データに対する第１及び第２の誤り訂正符号も格納する。
【００３９】
第１のデータ記録領域１２５には、不揮発性記憶装置１がアクセス装置２に対して提供する読み書き可能な論理アドレス空間の全データを格納できるだけの物理的な容量以上が、割り当てられる。
【００４０】
第２のデータ記録領域１２６は、アクセス装置２からの書き込みデータを格納する領域である。アクセス装置２からのデータに加え、該データに対する第１の誤り訂正符号も格納される。ここで第２のデータ記録領域１２６においては、アクセス装置２からのデータ及び該データに対する第１の誤り訂正符号は二重化（ミラーリング）して格納される。
【００４１】
第２のデータ記録領域１２６には、不揮発性記憶装置１がアクセス装置２に対して提供する読み書き可能な論理アドレス空間の一部のデータを格納できるだけの物理的な容量が、割り当てられる。例えば、読み書き可能な論理アドレス空間の数パーセント程度の容量が割り当てられる。
【００４２】
このように、第１のデータ記録領域１２５及び第２のデータ記録領域１２６は、いずれもアクセス装置２からの書き込みデータを格納する領域であるが、後で説明するように、書き込みデータのサイズにより、選択的に利用される。
【００４３】
なお、本実施の形態に係る不揮発性記憶装置１が製造されて出荷される際には、第１のデータ記録領域１２５のみに全て初期化データが書き込まれた状態にされている。また、後で説明するように、アクセス装置２からの実際のデータ書き込み時に、書き込みデータのサイズが全てページサイズ以上のものであれば、第１のデータ記録領域１２５のみに書き込みデータが格納される。
【００４４】
一方、後で詳しく説明するように、アクセス装置２からの実際のデータ書き込み時に、書き込みデータのサイズがページサイズ未満のものであれば、第２のデータ記録領域１２６に書き込みデータが格納される。従って、不揮発性記憶装置１の論理アドレス空間における、ある（論理）アドレスに対して、第１のデータ記録領域１２５と第２のデータ記録領域１２６との両方に、データが格納されていることがある。
【００４５】
このような場合、同一論理アドレスに対する各々の領域のデータは同一であるとは限らない。後で説明する書き込み処理において、アクセス装置２からの書き込みデータは、データのサイズに従って、第１のデータ記録領域１２５、若しくは、第２のデータ記録領域１２６のいずれかに選択的に書き込まれるため、いずれかの領域のデータ、即ち、アクセス装置２が所定の論理アドレスに対して最後に書き込んだデータが有効となる。いずれが有効であるかは、アドレス管理部１１２及び有効データ管理テーブルによって管理される。
【００４６】
アドレス管理テーブル領域１２７は、アドレス管理部１１２がアドレス管理を行うために必要となる各種のテーブル情報を格納する領域である。各種のテーブル情報には、論理アドレスと物理アドレスの変換テーブル（以下、「論理物理変換テーブル」と称する。）、第２のデータ記録領域１２６に格納された有効なデータを管理するためのテーブル（以下、「有効データ管理テーブル」と称する。）、及び、フリーブロックのアドレステーブル等が含まれる。
【００４７】
ワーク領域１２８は、フリーブロックで構成される、有効なデータが格納されていない領域である。
【００４８】
システム情報領域１２９は、メモリコントローラ１１が内部的に使用するシステム情報を格納する領域である。さらに、システム情報に対する第１及び第２の誤り訂正符号も格納する。一部または全てのシステム情報は二重化（ミラーリング）して格納されてもよい。  
【００４９】
図５は、本実施の形態に係る論理物理変換テーブルの例を示す図である。不揮発性メモリ１２のアドレス管理テーブル領域１２７に格納される論理物理変換テーブルは、不揮発性メモリ１２の各領域における論理ブロックのアドレスと物理ブロックのアドレスの対応情報を格納している。
【００５０】
図５において、“０ｘ”は値が１６進数であることを示している。ここで図５に示すように、第１のデータ記録領域１２５の論理アドレス空間は、不揮発性記憶装置１がアクセス装置２に対して提供する読み書き可能な論理アドレス空間と一致しているものとし、それ以外の領域（例えば、第２のデータ記録領域１２６）の論理アドレス空間は、上述のものとは異なる仮想的な空間を表すものとしている。また、物理ブロックアドレスの上位４ビットは、不揮発性メモリ１２の識別番号であり、それ以外のビットは不揮発性メモリ１２内のブロックの識別番号であるものとしている。図５に示す例では、論理ブロックアドレス０ｘ００００の論理ブロックに対して、（識別番号が、０、１、２、３、４である）５つの異なる不揮発性メモリ１２における、（各不揮発性メモリ１２内の識別番号が、０ｘ００１０、０ｘ００１０、０ｘ００１０、０ｘ００１０、０ｘ００１０である）ブロックが、割り当てられている。
【００５１】
なお、後で説明するように、第１のデータ記録領域１２５と第２のデータ記録領域１２６とにおいて、夫々データ配置方法は異なるが、いずれも１論理ブロックが５物理ブロックにより構成されている。このようにすることで、アドレス管理部１１２によるアドレス管理が簡素化され得る。
【００５２】
図６は、本実施の形態に係る有効データ管理テーブルの例を示す図である。不揮発性メモリ１２のアドレス管理テーブル領域１２７に格納される有効データ管理テーブルは、第２のデータ記録領域１２６に格納された有効なデータ（即ち、アクセス装置２が所定の論理アドレスに対して最後に書き込んだデータ）を管理するためのテーブルである。図５及び図６に示す例では、説明を明確化且つ簡素化するために、第２のデータ記録領域１２６に割り当てられた仮想的な論理ブロックの１つに対して、アクセス装置２の論理アドレス空間における１ページ分（例えば、８ｋＢ）のデータを格納できるものとしている。
【００５３】
図６に示す有効データ管理テーブルでは、仮想的な論理ブロックのアドレス（図５における論理ブロックアドレス）と、該論理ブロックに格納されているアクセス装置２の１ページ分のデータの論理アドレス（論理ブロックアドレス、論理ページアドレス）と、該データが格納されている物理アドレス（物理ブロックアドレス、物理ページアドレス）と、該データのコピーデータ（二重化した、もう一方のデータ）が格納されている物理アドレス（物理ブロックアドレス、物理ページアドレス）とが、組として管理されている。
【００５４】
ここで、或る論理ブロックに有効なデータが格納されていない場合には、アドレス管理部１１２は、データの論理アドレスに無効値を設定し、該論理ブロックに有効なデータが格納されていないことを判断できるようにする。なお、アドレス管理部１１２は、有効データ管理テーブルにおいてデータの論理アドレスに無効値を設定する場合、例えば、論理ブロックの値を“０ｘＦＦＦＦ”に設定し、論理ページの値を“０ｘＦＦＦ”に設定する。
【００５５】
従って、アドレス管理部１１２は、有効データ管理テーブルを参照することにより、所定の論理アドレスに対する有効なデータが第２のデータ記録領域１２６に格納されているか否かを判断することができる。さらに、有効なデータが第２のデータ記録領域１２６に格納されている場合は、第２のデータ記録領域１２６における物理位置（アドレス）を特定することができる。
【００５６】
１．２．誤り訂正符号の配置
次に、メモリコントローラ１１が不揮発性メモリ１２にデータを格納する際の、第１及び第２の誤り訂正符号の配置について図７から図１０を用いて説明する。
【００５７】
図７は、本実施の形態に係る、データを格納したページ（以下、データページと称する。）の構成の一例を示す図である。データページには、ページ内にデータと該データに対する第１の誤り訂正符号を配置する。なお図７では、第１の誤り訂正符号を「ＥＣＣ」と記載している。
【００５８】
図７に示すように、ページ内に格納するデータに対して、分割して第１の誤り訂正符号を付与する場合には、分割されたデータと該データに対する第１の誤り訂正符号とを組として、データ及び第１の誤り訂正符号を交互に配置する。
【００５９】
不揮発性メモリ１２からのデータの読み出し時には、常にデータと共に該データに対する第１の誤り訂正符号を読み出すので、同一ページに連続的に配置されることによって、読み出し時の制御信号（例えば、アドレス指定等）のオーバーヘッドを少なくできる。
【００６０】
図８は、本実施の形態に係る、一つ以上のデータページに第２の誤り訂正符号を付与したものの例を示す図である。本実施の形態では、第２の誤り訂正符号としてパリティを用いるものとし、第２の誤り訂正符号を格納したページをパリティページと称するものとする。以下、一つ以上のデータページと、それらデータページに対するパリティページとの組み合わせを「パリティグループ」と称する。
【００６１】
なお、第２の誤り訂正符号としてパリティ以外（例えば、リード・ソロモン符号）の誤り訂正符号を用いてもよい。この場合、パリティグループをより一般的に誤り訂正グループと称してもよい。
【００６２】
図８に示す例では、４つのデータページに対して、１つのパリティページが付与されて一つのパリティグループが構成されている。パリティページには、例えば、各データページに格納されているデータのＸＯＲ（排他的論理和）の値を格納する。さらに、このＸＯＲの値に対する第１の誤り訂正符号を格納する。
【００６３】
なお、図８に示す例では、データページとパリティページの比率が４対１とされているが、その他の任意の比率が適用されてもよい。データページの比率が多い程、不揮発性メモリ１２に格納できるデータの容量は増加する。パリティページの比率が多い程、データページに対する誤り訂正能力は増大する。
【００６４】
図９は、本実施の形態に係る、パリティグループの配置の一例を示す図である。図９に示す配置は、パリティ（第２の誤り訂正符号）を格納する領域である、第１のデータ記録領域１２５やシステム情報領域１２９に適用される。
【００６５】
図９において、Ｄ０、Ｄ１、・・・、Ｄ１５はデータページを表しており、Ｐ０−３はデータページＤ０〜Ｄ３に対するパリティページ、Ｐ４−７はデータページＤ４〜Ｄ７に対するパリティページ、Ｐ８−１１はデータページＤ８〜Ｄ１１に対するパリティページ、Ｐ１２−１５はデータページＤ１２〜Ｄ１５に対するパリティページを表している。
【００６６】
また、各パリティグループは、５つの物理ブロック１２１ａ、１２１ｂ、１２１ｃ、１２１ｄ、１２１ｅに跨って配置されている。そのため、各パリティグループへのデータの読み出し、書き込みは、異なる物理ブロックへの並列アクセスとなり、高速に行うことができる。同様に、連続するパリティグループの読み出し、書き込みも高速に行うことができる。
【００６７】
なお、パリティグループが論理ブロックを跨がないように、パリティグループを構成して配置することにより、アドレス管理部１１２におけるアドレス管理処理を簡素化することもできる。パリティグループの配置を示す図９の例において、５つの物理ブロック１２１ａ、１２１ｂ、１２１ｃ、１２１ｄ、１２１ｅを一つの論理ブロックとして管理することにより、アドレス管理部１１２における管理が簡素化され得る。
【００６８】
図１０は、本実施の形態における、二重化グループの配置の一例を示す図である。二重化グループとは、二重化（ミラーリング）されたデータページで構成されるグループであり、データページとそのコピーとの２ページで構成される。図１０に示す配置は、二重化を適用する領域である、第２のデータ記録領域１２６やシステム情報領域１２９に適用される。
【００６９】
図１０において、Ｔ０、Ｔ１、・・・、Ｔ９はデータページを表しており、Ｔ’０、Ｔ’１、・・・、Ｔ’９はデータページＴ０、Ｔ１、・・・、Ｔ９に対するコピーを表している。
【００７０】
また、各二重化グループは、５つのブロック１２１ｆ、１２１ｇ、１２１ｈ、１２１ｉ、１２１ｊのうち、いずれか２つに跨って配置されている。そのため、各二重化グループの読み出し、書き込みは、異なる物理ブロックへの並列アクセスとなり、高速に行うことができる。同様に、連続する二重化グループの読み出し、書き込みも高速に行うことができる。
【００７１】
なお、二重化グループが論理ブロックを跨がないように、二重化グループを構成して配置してもよい。これにより、アドレス管理部１１２におけるアドレス管理処理を簡素化することができる。
【００７２】
前述のように、第１のデータ記録領域１２５には、不揮発性記憶装置１がアクセス装置２に対して提供する読み書き可能な論理アドレス空間の全データを格納できるだけの物理的な容量以上が割り当てられる。一方、第２のデータ記録領域１２６には、不揮発性記憶装置１がアクセス装置２に対して提供する読み書き可能な論理アドレス空間の一部のデータを格納できるだけの物理的な容量が、割り当てられる。例えば、読み書き可能な論理アドレス空間の数パーセント程度の容量が割り当てられる。従って、第２のデータ記録領域１２６に配置される論理ブロックで構成される論理アドレス空間のサイズは、第１のデータ記録領域１２５に配置される論理ブロックで構成される論理アドレス空間のサイズよりも小さい。
【００７３】
また、論理ブロックサイズ（論理ブロック数）を、図９で示したパリティグループを配置する論理ブロックと同一の論理ブロックサイズ（論理ブロック数）にすることにより、アドレス管理部１１２におけるアドレス管理処理をさらに簡素化することができる。二重化グループの配置を示す図１０の例において、５つのブロック１２１ｆ、１２１ｇ、１２１ｈ、１２１ｉ、１２１ｊを一つの論理ブロックとして管理することにより、アドレス管理部１１２における管理が簡素化される。
【００７４】
１．３．不揮発性記憶システムの動作
次に、不揮発性記憶システム１０００の動作について図１１から図１３を用いて説明する。
【００７５】
不揮発性記憶装置１は、アクセス装置２に装着され、アクセス装置２が発行するコマンドに応じた処理を実施する。アクセス装置２は、静止画データや動画データなどの記録や再生を行うために、必要なコマンド（例えば、書き込みコマンドや読み出しコマンド）を不揮発性記憶装置１に発行し、データの送受信を行う。
【００７６】
１．３．１．書き込み処理
アクセス装置２が不揮発性記憶装置１に書き込みコマンドを発行し、書き込みデータを転送することにより、不揮発性記憶装置１では書き込み処理が行われる。図１１は、本発明の実施の形態１に係る不揮発性記憶装置１の書き込み処理の手順を示すフローチャートである。
【００７７】
まず、ステップＳ１０１における処理を説明する。不揮発性記憶装置１において、コマンド処理部１１１は、アクセス装置ＩＦ部１０４を介してアクセス装置２から書き込みコマンドを受信すると、書き込みコマンドに付随する書き込みアドレス、サイズなどの条件を取得する。コマンド処理部１１１は、この条件から、受信するデータをパリティグループとして第１のデータ記録領域１２５に書き込むか、二重化グループとして第２のデータ記録領域１２６に書き込むか、を判定する。本実施の形態においては、書き込みデータのサイズがページサイズ以上である場合に、前者の書き込みを行い、書き込みデータのサイズがページサイズ未満である場合に、後者の書き込みを行うと判定するものとする。そして、書き込みを行うパリティグループまたは二重化グループの論理アドレスを特定し、これらの情報をアドレス管理部１１２に通知する。
【００７８】
アドレス管理部１１２は、コマンド処理部１１１から取得した情報、論理アドレスと物理アドレスの変換テーブルの情報、フリーブロックのアドレス情報、及び、ブロックへの書き込み状態（即ち、どのブロックに、何ページ目まで、どんな論理アドレスのデータを書き込んだか、に関する状態）を管理するテーブルの情報を参照し、不揮発性メモリ１２における物理的な書き込み先を決定する。
【００７９】
次に、ステップＳ１０２における処理を説明する。ステップＳ１０１の処理において、コマンド処理部１１１が、パリティグループとしての書き込みを選択した場合には、ステップＳ１０３の処理に進む。ここで、コマンド処理部１１１がパリティグループとしての書き込みを選択した場合とは、書き込みデータのサイズがページサイズ以上である場合である。一方、コマンド処理部１１１が、二重化グループとしての書き込みを選択した場合には、ステップＳ１０９の処理に進む。ここで、コマンド処理部１１１が二重化グループとしての書き込みを選択した場合とは、書き込みデータのサイズがページサイズ未満である場合である。
【００８０】
次に、ステップＳ１０３における処理を説明する。コマンド処理部１１１は、符号処理部１１３にパリティグループ書き込みのための準備を指示する。符号処理部１１３は、バッファ１０５上に第２の誤り訂正符号の演算のための領域を確保し、該領域の値を初期値に設定する。
【００８１】
次に、ステップＳ１０４における処理を説明する。コマンド処理部１１１は、アクセス装置２からの書き込みデータを、アクセス装置ＩＦ部１０４を介してバッファ１０５に格納する。符号処理部１１３は、該書き込みデータに対する第１の誤り訂正符号を生成する。そして、バッファ１０５上に該書き込みデータ及びその第１の誤り訂正符号からなるデータページの情報を生成する。データページの情報の生成にあたり、アクセス装置２から受信した書き込みデータでは不足する場合（例えば、アクセス装置２がパリティグループやデータページの途中のアドレスから書き込みを指示した場合）には、アドレス管理部１１２を参照して、不揮発性記憶装置１の既存のデータを読み出し、これに対する第１の誤り訂正符号を生成する。そして、既存のデータとこれに対する第１の誤り訂正符号によって、データページの情報の不足分を補う。
【００８２】
次に、ステップＳ１０５における処理を説明する。符号処理部１１３は、ステップＳ１０３で確保した第２の誤り訂正符号の演算のための領域に設定された値と、ステップＳ１０４で生成したデータページの情報を参照して、第２の誤り訂正符号の演算（例えば、ＸＯＲ（排他的論理和）演算）を行い、その結果を、ステップＳ１０３で確保した第２の誤り訂正符号の演算のための領域に書き戻す。
【００８３】
次に、ステップＳ１０６における処理を説明する。不揮発性メモリ制御部１１４は、ステップＳ１０５で生成したデータページの情報を、不揮発性メモリＩＦ部１０６を介して、ステップＳ１０１で決定した物理的な書き込み先に書き込む。
【００８４】
次に、ステップＳ１０７における処理を説明する。直前のステップＳ１０６で書き込んだデータページがパリティグループの終端であった場合には、ステップＳ１０８の処理に進む。そうでない場合はステップＳ１０４の処理に戻り、パリティグループ内の次のデータページの処理を行う。
【００８５】
次に、ステップＳ１０８における処理を説明する。符号処理部１１３は、ステップＳ１０５で生成した第２の誤り訂正符号の演算結果をパリティとし、該パリティに対する第１の誤り訂正符号を生成する。不揮発性メモリ制御部１１４は、前記パリティ及びその第１の誤り訂正符号をパリティページとして、不揮発性メモリＩＦ部１０６を介して、ステップＳ１０１で決定した物理的な書き込み先に書き込む。その後、ステップＳ１１２の処理に進む。
【００８６】
次に、ステップＳ１０９における処理を説明する。ステップＳ１０９の処理はステップＳ１０４と同じであり、バッファ１０５上にデータページの情報を生成する。
【００８７】
次に、ステップＳ１１０における処理を説明する。不揮発性メモリ制御部１１４は、ステップＳ１０９で生成したデータページの情報を、不揮発性メモリＩＦ部１０６を介して、ステップＳ１０１で決定した物理的な書き込み先に書き込む。
【００８８】
次に、ステップＳ１１１における処理を説明する。不揮発性メモリ制御部１１４は、ステップＳ１０９で生成したデータページの情報を、不揮発性メモリＩＦ部１０６を介して、ステップＳ１０１で決定した物理的な書き込み先に書き込む。従って、ステップＳ１１０とステップＳ１１１で同じデータページを二重化して書き込むことになる。その後、ステップＳ１１２の処理に進む。
【００８９】
次に、ステップＳ１１２における処理を説明する。アドレス管理部１１２は、ステップＳ１０３からステップＳ１０８までのパリティグループの書き込みの結果、または、ステップＳ１０９からステップＳ１１１までの二重化グループ書き込みの結果を、論理物理変換テーブルや有効データ管理テーブルなどの各種のテーブル情報に反映させる。つまり、二重化グループの書き込みを行った場合には、有効データ管理テーブルの情報が更新される。パリティグループの書き込みを行った場合は、その書き込みが、有効データ管理テーブルに登録されていた論理アドレスに対して行われたのであれば、有効データ管理テーブルにおける該論理アドレスの登録を無効にする更新が行われる。不揮発性メモリ制御部１１４は、（例えば、論理ブロック境界まで書き込みが行われたこと等の）所定の条件の合致が発生した場合、合致した条件を取り込んで更新されたテーブル情報を、不揮発性メモリＩＦ部１０６を介して、アドレス管理テーブル領域１２７に書き込む。
【００９０】
次に、ステップＳ１１３における処理を説明する。アクセス装置２からの書き込みデータを全て書き込んだ場合には、書き込み処理を終了する。そうでない場合は、ステップＳ１０１の処理に戻り、アクセス装置２からの書き込みデータのうち、書き込みが済んでいないものの書き込みを継続する。
【００９１】
以上のように、アクセス装置２における、ページサイズ未満の書き込み処理において、本実施の形態に係る不揮発性記憶装置１では、１ページ分のデータページと１ページ分のコピー（データページ）の合計２ページの書き込みが行われている。このような書き込みにおけるページ数（２ページ）は、パリティグループ全体を更新するために必要な書き込みページ数（５ページ）よりも少ないため、書き込みが効率的に行われることとなる。
【００９２】
アクセス装置２が不揮発性記憶装置１における論理空間をＦＡＴなどのファイルシステムによって管理する場合、ファイルエントリやＦＡＴの情報を１セクタ（例えば、５１２Ｂ）程度の非常に小さいサイズで頻繁に更新することがある。本実施の形態に係る不揮発性記憶装置１における書き込み処理は、このような場合に特に効果的である。
【００９３】
なお、第２のデータ記録領域１２６の物理的な容量は制限されているため、アクセス装置２が指定する論理アドレス空間のうち一部の論理アドレスのデータしか格納することができない。従って、書き込み処理において第２のデータ記録領域１２６が不足する場合には、第２のデータ記録領域１２６に格納済みのデータを第１のデータ記録領域１２５に移動させて、第２のデータ記録領域１２６の空きを増やす処理が必要となる。できるだけこのような移動処理を発生させないために、アクセス装置２の書き込みパターン（アドレス、サイズの組合せ）に応じて第２のデータ記録領域１２６の物理的容量を決定することが望ましい。
【００９４】
１．３．２．読み出し処理
アクセス装置２が不揮発性記憶装置１に読み出しコマンドを発行することにより、不揮発性記憶装置１では読み出し処理が行われる。読み出しデータは、順次、不揮発性記憶装置１からアクセス装置２に転送される。図１２は、本発明の実施の形態１に係る不揮発性記憶装置１の読み出し処理の手順を示すフローチャートである。
【００９５】
まず、ステップＳ２０１における処理を説明する。不揮発性記憶装置１において、コマンド処理部１１１は、アクセス装置ＩＦ部１０４を介してアクセス装置２から読み出しコマンドを受信すると、読み出しコマンドに付随する読み出しアドレス、サイズなどの条件を取得する。コマンド処理部１１１は、この条件から、読み出しを行うパリティグループ若しくは二重化グループの論理アドレスを特定し、これらの情報をアドレス管理部１１２に通知する。アドレス管理部１１２は、コマンド処理部１１１から取得した情報、論理アドレスと物理アドレスの変換テーブルの情報、フリーブロックのアドレス情報、及び、ブロックへの書き込み状態（即ち、どのブロックに、何ページ目まで、どんな論理アドレスのデータを書き込んだか、に関する状態）を管理するテーブルの情報を参照し、不揮発性メモリ１２における物理的な読み出し先を決定する。
【００９６】
特に、アドレス管理部１１２は、有効データ管理テーブルを参照して、読み出し先が第１のデータ記録領域１２５のパリティグループであるのか、第２のデータ記録領域１２６の二重化グループであるのか、を判定する。有効データ管理テーブルに読み出し対象の論理アドレスの登録があれば、読み出し先は第２のデータ記録領域１２６の二重化グループとなる。
【００９７】
次に、ステップＳ２０２における処理を説明する。不揮発性メモリ制御部１１４は、不揮発性メモリＩＦ部１０６を介して、ステップＳ２０１で決定した物理的な読み出し先からデータページの情報の読み出しを行う。読み出したデータページの情報（即ち、データ及び該データに対する第１の誤り訂正符号）はバッファ１０５に格納する。
【００９８】
次に、ステップＳ２０３における処理を説明する。符号処理部１１３は、ステップＳ２０２でバッファ１０５上に格納した第１の誤り訂正符号を用いてデータのエラー検出及び訂正を行う。第１の誤り訂正符号に基づく訂正能力では訂正できないエラーを検出した場合には、ステップＳ２０４の処理に進む。そうでない場合は、第１の誤り訂正符号を用いてエラー訂正を行い、バッファ１０５上のデータに対してエラー訂正後の情報を上書きし、ステップＳ２０８の処理に進む。
【００９９】
なお、ステップＳ２０２で読み出したデータページの情報が、アクセス装置２が指定した読み出しアドレス以外の情報も含む場合（例えば、アクセス装置２がデータページの途中のアドレスから読み出しを指示した場合）には、読み出しアドレス以外の部分に対する第１の誤り訂正符号の演算は省略してもよい。
【０１００】
次に、ステップＳ２０４における処理を説明する。ステップＳ２０１の処理において、アドレス管理部１１２が決定した読み出し先の情報に基づき、ステップＳ２０３で読み出しエラーが発生したデータページがパリティグループに属するのか二重化グループに属するのかを判定する。パリティグループである場合にはステップＳ２０５の処理に進む。二重化グループである場合にはステップＳ２０７の処理に進む。
【０１０１】
次に、ステップＳ２０５における処理を説明する。不揮発性メモリ制御部１１４は、不揮発性メモリＩＦ部１０６を介して、ステップＳ２０１で決定した物理的な読み出し先から、ステップＳ２０２で読み出しを行ったデータページが属するパリティグループの情報の読み出しを行う。読み出したパリティグループの情報（即ち、ステップＳ２０２で読み出しを行ったデータページ以外のデータページ、及び、パリティページ）には第１の誤り訂正符号が付与されているので、符号処理部１１３は、第１の誤り訂正符号を用いてデータのエラー訂正を行ったのち、データ及びパリティをバッファ１０５に格納する。
【０１０２】
次に、ステップＳ２０６における処理を説明する。符号処理部１１３は、ステップＳ２０５でバッファ上に格納したデータページ及びパリティページ（第２の誤り訂正符号）の情報を用いてデータのエラー検出及び訂正を行う。第２の誤り訂正符号に基づく訂正能力では訂正できないエラーを検出した場合には、（図示しない）エラー処理を行い、読み出し処理を終了する。そうでない場合は、第２の誤り訂正符号を用いてエラー訂正を行い、バッファ１０５上のデータに対してエラー訂正後の情報を上書きし、ステップＳ２０８の処理に進む。
【０１０３】
例えば、第２の誤り訂正符号の演算としてＸＯＲ（排他的論理和）演算を適用していた場合には、ステップＳ２０２で読み出しを行ったデータページ以外のデータページのデータ、及び、パリティページのパリティのＸＯＲ演算を行う。これにより、ステップＳ２０２で読み出しを行ったデータページのデータを復元できる。
【０１０４】
次に、ステップＳ２０７における処理を説明する。不揮発性メモリ制御部１１４は、不揮発性メモリＩＦ部１０６を介して、ステップＳ２０１で決定した物理的な読み出し先から、ステップＳ２０２にて読み出しを行ったデータページが属する二重化グループの情報（即ち、もう一方のデータページの情報）の読み出しを行う。読み出したデータページの情報（即ち、データ及び該データに対する第１の誤り訂正符号）はバッファ１０５に格納される。符号処理部１１３は、バッファ１０５上に格納した第１の誤り訂正符号を用いてデータのエラー検出及び訂正を行う。第１の誤り訂正符号に基づく訂正能力では訂正できないエラーを検出した場合には、（図示しない）エラー処理を行い、読み出し処理を終了する。そうでない場合は、第１の誤り訂正符号を用いてエラー訂正を行い、バッファ１０５上のデータに対してエラー訂正後の情報を上書きし、ステップＳ２０８の処理に進む。
【０１０５】
次に、ステップＳ２０８における処理を説明する。コマンド処理部１１１は、バッファ１０５に格納された（誤り訂正処理後の）データを読み出しデータとしてアクセス装置２に送信する。
【０１０６】
次に、ステップＳ２０９における処理を説明する。アクセス装置２が指定した読み出しデータを全て送信した場合には、読み出し処理を終了する。そうでない場合は、ステップＳ２０１の処理に戻り、アクセス装置２への読み出しデータのうち、未送信のものの読み出しを継続する。
【０１０７】
なお、ステップＳ２０２、及び、ステップＳ２０５における不揮発性メモリ１２からの読み出しは、読み出し先がパリティグループであるならば、複数ブロックの並列処理により高速に行うことが望ましい。この場合、データページやパリティページの読み出しを開始した直後に、次のステップの処理に進むことができる。
【０１０８】
１．３．３．初期化処理
アクセス装置２に不揮発性記憶装置１が装着され、アクセス装置２から不揮発性記憶装置１への電源供給が開始された後、アクセス装置２が不揮発性記憶装置１に初期化コマンドを発行することにより、アクセス装置２から不揮発性記憶装置１へのデータの読み書きが可能となる。図１３は、本発明の実施の形態１に係る不揮発性記憶装置１の初期化処理の手順を示すフローチャートである。
【０１０９】
まず、ステップＳ３０１における処理を説明する。不揮発性記憶装置１において、コマンド処理部１１１は、アクセス装置ＩＦ部１０４を介してアクセス装置２からの初期化コマンドを受信すると、メモリコントローラ１１のハードウェアの初期設定を行う。また、不揮発性メモリＩＦ部１０６に接続されている不揮発性メモリ１２の接続確認などを行う。
【０１１０】
次に、ステップＳ３０２における処理を説明する。不揮発性メモリ制御部１１４は、不揮発性メモリＩＦ部１０６を介して、不揮発性メモリ１２の所定の読み出し先から、第１のシステム情報を読み出す。第１のシステム情報は、不揮発性記憶装置１の製造時に予め不揮発性メモリ１２に書き込まれている情報であり、不揮発性記憶装置１における各種の制御情報である。第１のシステム情報として、例えば、メモリコントローラ１１に接続されている不揮発性メモリ１２の種類、数、パリティグループの構成情報、二重化グループの構成情報、第１及び第２の誤り訂正符号の種類や訂正能力、（後で説明する）第２のシステム情報の物理的な格納位置に関する情報、初期の不良ブロックのアドレスに関する情報、などがある。第１のシステム情報の読み出しにおいてエラーが発生した場合には、第１及び／または第２の誤り訂正符号によるエラー訂正を行う。
【０１１１】
アドレス管理部１１２、符号処理部１１３、及び不揮発性メモリ制御部１１４は、読み出した第１のシステム情報の内容に応じて、内部的な初期化処理を行う。
【０１１２】
次に、ステップＳ３０３における処理を説明する。不揮発性メモリ制御部１１４は、不揮発性メモリＩＦ部１０６を介して、（例えば、第１のシステム情報において指定されている）不揮発性メモリ１２の所定の読み出し先から、第２のシステム情報を読み出す。第２のシステム情報は、不揮発性記憶装置１の製造時に予め不揮発性メモリ１２に書き込まれた後、不揮発性記憶装置１が使用されることにより更新される情報であり、不揮発性記憶装置１における各種の制御情報である。第２のシステム情報として、例えば、論理アドレスと物理アドレスの変換テーブルに関する情報、有効データ管理テーブルに関する情報、後発性の不良ブロックのアドレスに関する情報、ブロックの書き込み回数や消去回数に関する情報、フリーブロックのアドレスに関する情報、及び、パリティテーブルに関する情報、などがある。第２のシステム情報の読み出しにおいてエラーが発生した場合には、第１及び／または第２の誤り訂正符号によるエラー訂正を行う。
【０１１３】
次に、ステップＳ３０４における処理を説明する。アドレス管理部１１２は、読み出した第２のシステム情報の内容に応じて、アドレス管理に必要となるテーブル情報をＲＡＭ１０２上に生成する。
【０１１４】
次に、ステップＳ３０５における処理を説明する。ステップＳ３０２、及び、ステップＳ３０３において、不揮発性メモリ１２からの読み出しで所定の量を超える（第１または第２の誤り訂正符号で訂正可能な）エラーが発生した場合には、ステップＳ３０６の処理に進む。そうでなければ、ステップＳ３０７の処理に進む。
【０１１５】
次に、ステップＳ３０６における処理を説明する。ステップＳ３０２、及び、ステップＳ３０３での不揮発性メモリ１２からの読み出しで所定の量を超えるエラーが発生した箇所のデータに対して、符号処理部１１３は、第１及び第２の誤り訂正符号を生成する。そして、不揮発性メモリ制御部１１４は、データと、生成した第１及び第２の誤り訂正符号とを、新たな第１または第２のシステム情報として不揮発性メモリ１２に書き戻す。
【０１１６】
次に、ステップＳ３０７における処理を説明する。コマンド処理部１１１は、アクセス装置ＩＦ部１０４を介して、アクセス装置２に不揮発性記憶装置１の初期化処理が完了したことを通知して初期化処理を終了する。
【０１１７】
１．４．まとめ
本実施の形態の不揮発性記憶装置１は、アクセス装置２と通信可能であり、アクセス装置２からの指示によりデータの読み出し及び／又は書き込みを行う不揮発性記憶装置である。不揮発性記憶装置１は、データを記憶する一つ以上の不揮発性メモリ１２と、不揮発性メモリ１２の制御を行うメモリコントローラ１１とを備える。不揮発性メモリ１２は、消去単位であるブロック１２１を複数含み、ブロック１２１はデータの書き込み単位であるページ１２２を複数含む。
【０１１８】
メモリコントローラ１１は、複数のブロック１２１を組み合わせて第１のデータ記録領域１２５に第１の論理ブロックを配置する。更にメモリコントローラ１１は、複数の前記ブロックを組み合わせて第２のデータ記録領域１２６に第２の論理ブロックを配置する。メモリコントローラ１１は、第１の論理ブロックには複数のページ１２２から構成されるパリティグループを複数割り当て、そのパリティグループにはデータとデータに対する第１及び第２の誤り訂正符号とを夫々割り当てる。また、メモリコントローラ１１は、第２の論理ブロックには複数のページ１２２から構成される多重化グループを複数割り当て、その多重化グループにはデータとデータに対する第１の誤り訂正符号とを夫々多重化して割り当てる。更に、メモリコントローラ１１は、データを書き込むときに、データサイズが所定のサイズ未満である場合は、データを第２の論理ブロックに書き込み、データサイズが所定のサイズ以上である場合は、データを第１の論理ブロックに書き込み、同一論理アドレスに対して、第１の論理ブロックと第２の論理ブロックとのいずれの論理ブロックに有効なデータが格納されているかを管理するための有効データ管理テーブルを備えている。
【０１１９】
以上のように、不揮発性記憶装置１では、データと同一ページに格納する第１の誤り訂正符号とは別に、第２の誤り訂正符号をも格納する。データの書き込み時にはデータに第１及び第２の誤り訂正符号を付与して書き込む。データの読み出し時にはデータに付与された第１及び／または第２の誤り訂正符号を用いてエラー訂正を行う。
【０１２０】
この結果、本実施の形態では、データページの読み出しにおいて、該データページに付与した第１の誤り訂正符号の訂正能力を超えるエラーが発生した場合であっても、パリティグループを構成する他のデータページ及びパリティページを読み出し、パリティページ（第２の誤り訂正符号）を用いてデータページの情報を復元することが可能となる。
【０１２１】
さらに、アクセス装置２が所定のサイズよりも小さいサイズで不揮発性記憶装置１に書き込みを行う場合には、二重化グループを構成し、ページデータと該ページデータのコピーを、不揮発性メモリ１２の第２のデータ記録領域１２６に書き込む。第２のデータ記憶記録領域１２６に対応する論理アドレス空間のサイズは、所定のサイズよりも大きいサイズのデータが書き込まれる（不揮発性メモリ１２の）第１のデータ記録領域１２５に対応する論理アドレス空間のサイズよりも、小さく設定されている。この結果、所定のサイズよりも小さいサイズのデータ書き込み時における、不揮発性メモリ１２への書き込みページ数を減らすことができ、効率的な書き込みを実現できる。
【０１２２】
上述の実施の形態で記載されている値は一例に過ぎず、他の値が用いられてもよい。例えば、パリティグループを構成するデータページ及びパリティページにおける、夫々のページ数の値は全て一例に過ぎず、上述の実施の形態で記載されている値に限定されるものではない。
【０１２３】
また、二重化グループに対しては、二重化ではなく、三重化、四重化等の任意の多重化を適用してもよい。この場合、二重化グループは、より一般的に、多重化グループと称してもよい。
【０１２４】
[他の実施の形態]
なお、本発明について、上述の実施の形態に基づいて説明してきたが、本発明は、勿論、上述の実施の形態のみに限定されるものではなく、本発明の技術的思想を逸脱しない範囲で実施の形態を変更することができる。また、以下のように変更することも可能である。
【０１２５】
[１]  上述の実施の形態における、アクセス装置２、不揮発性記憶装置１、メモリコントローラ１１、及び不揮発性記憶システム１０００において、各機能ブロックは、ＬＳＩなどの半導体装置により個別に１チップ化されてもよいし、一部又は全部を含むように１チップ化されてもよい。
【０１２６】
なお、上記では、ＬＳＩを例として取り上げたが、集積度の違いにより、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩなどの半導体装置によりチップ化されてもよい。
【０１２７】
また、集積回路化の手法は、ＬＳＩに限るものではなく、専用回路又は汎用プロセッサで集積回路が実現されてもよい。また、ＬＳＩ製造後にプログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサ（Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ）を利用してもよい。
【０１２８】
さらには、半導体技術の進歩又は派生する別技術により、ＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。例えば、バイオ技術の適用等が可能性としてあり得る。
【０１２９】
[２]  上述の実施の形態における各処理をハードウェアにより実現してもよいし、ソフトウェア（ＯＳ（オペレーティングシステム）、ミドルウェア、あるいは、所定のライブラリとともに実現される場合を含む。）により実現してもよい。さらに、ソフトウェア及びハードウェアの混在処理により実現してもよい。なお、上述の実施の形態に係るアクセス装置２、不揮発性記憶装置１、及び不揮発性記憶システム１０００をハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上述の実施の形態においては、説明の便宜上、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
【０１３０】
また、上述の実施の形態における処理方法の実行順序は、必ずしも、上述の実施の形態の記載内容に制限されるものではなく、本発明の技術的思想を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【０１３１】
[３]  上述の実施の形態における不揮発性記憶装置１は、半導体メモリカードのような着脱可能な記憶装置として説明したが、アクセス装置２の基板に組み込みできる形式の情報記憶モジュールとして実現してもよい。
【０１３２】
[４]  上述の実施の形態における不揮発性記憶装置１は、第１のデータ記録領域１２５の特定の領域（例えば、アクセス装置２がＦＡＴなどのファイルシステムの管理情報を格納する領域）や、第２のデータ記録領域１２６（主にファイルエントリの情報が格納される領域）における書き込み速度を向上させるために、これらの領域に対するデータ及び第１及び第２の誤り訂正符号の配置を次のようにしてもよい。
【０１３３】
すなわち、不揮発性メモリとしてマルチレベルセル（例えば、セルあたり４値の情報を格納するセル）のフラッシュメモリを使用する構成において、第１のデータ記録領域１２５の特定の領域や、第２のデータ記録領域１２６では、セルあたりの情報を他の領域よりも減らす（例えば、セルあたり２値の情報を格納する）ように配置してもよい。これにより、第１のデータ記録領域１２５の特定の領域や第２のデータ記録領域１２６に物理的に高速にアクセスすることが可能となり、頻繁にアクセスするファイルシステムの管理情報を効率的に読み書きすることが可能となる。
【産業上の利用可能性】
【０１３４】
本発明に係る不揮発性記憶装置、及びメモリコントローラは、第１及び第２の誤り訂正を付与することで格納データの信頼性を向上させつつ、小さいサイズのデータ書き込みを効率的に行うことができる。これは、半導体メモリカードはいうまでもなく、不揮発性メモリを内蔵する情報処理端末である、ムービー、デジタルスチルカメラ、携帯電話端末等に有用であり、半導体メモリ関連分野において利用することができる。
【符号の説明】
【０１３５】
１０００  不揮発性記憶システム
１  不揮発性記憶装置
２  アクセス装置
１１  メモリコントローラ
１２  不揮発性メモリ
１０１  ＣＰＵ
１０２  ＲＡＭ
１０３  ＲＯＭ
１０４  アクセス装置ＩＦ部
１０５  バッファ
１０６  不揮発性メモリＩＦ部
１１１  コマンド処理部
１１２  アドレス管理部
１１３  符号処理部
１１４  不揮発性メモリ制御部
１２１  ブロック
１２２  ページ
１２５  第１のデータ記録領域
１２６  第２のデータ記録領域
１２７  アドレス管理テーブル領域
１２８  ワーク領域
１２９  システム情報領域
【図１】
0005364807.tif 000002
【図２】
0005364807.tif 000003
【図３】
0005364807.tif 000004
【図４】
0005364807.tif 000005
【図５】
0005364807.tif 000006
【図６】
0005364807.tif 000007
【図７】
0005364807.tif 000008
【図８】
0005364807.tif 000009
【図９】
0005364807.tif 000010
【図１０】
0005364807.tif 000011
【図１１】
0005364807.tif 000012
【図１２】
0005364807.tif 000013
【図１３】
0005364807.tif 000014