(57)【要約】【課題】ホストシステムから与えられるデータを格納するための領域を減少させることなく、論理ページと物理ページの対応関係を効率良く管理する。【解決手段】それぞれの物理ブロックにおいて、物理ブロック内の物理ページをｎ個（ｎは２以上の整数）のグループに分割し、物理ブロック内のそれぞれの物理ページに、ホストシステムから与えられるユーザデータを書き込む際に、当該ユーザデータを書き込む物理ページに、当該ユーザデータに対応する論理ページを示す番号と共に、当該物理ページと同じグループに属する他の物理ページに格納されているユーザデータに対応する論理ページを示す番号を書き込む。【選択図】図２
2012068764.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを１個又は複数個含む論理ページ及び当該論理ページを複数個含む論理ブロックを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位である不揮発性メモリに対するアクセスを制御するメモリコントローラであって、
それぞれの物理ブロックにおいて、物理ブロック内の物理ページをｎ個（ｎは２以上の整数）のグループに分割するグループ管理手段と、
物理ブロックに論理ブロックを割り当てると共に、当該論理ブロックと当該論理ブロックを割り当てた物理ブロックの対応関係を管理する対応関係管理手段と、
物理ブロック内の先頭の物理ページから末尾の物理ページに向かう書き込み順序で、物理ブロック内のそれぞれの物理ページに、ホストシステムから与えられるユーザデータを書き込んでいくデータ書き込み手段と、
前記データ書き込み手段がユーザデータを書き込む物理ページに、当該ユーザデータに対応する論理ページを示す番号と共に、当該物理ページと同じグループに属する他の物理ページに格納されているユーザデータに対応する論理ページを示す番号を書き込むページ情報書き込み手段と、
を備えることを特徴とするメモリコントローラ。
【請求項２】
物理ブロック内のユーザデータが書き込まれている物理ページのうち、末尾側のｎ個の物理ページに格納されている論理ページを示す番号を読み出すことにより、論理ブロック内の論理ページと当該論理ブロックが割り当てられている物理ブロック内の物理ページの対応関係を特定するページ管理手段を更に備えることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記グループ管理手段は、物理ブロック内の物理ページに通し番号を付け、当該通し番号をｎで割った際の余りが同じものが同じグループに属するようにグループを形成することを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
請求項１乃至３のいずれか１項に記載のメモリコントローラと、
このメモリコントローラにより制御される１個又は複数個の不揮発性メモリを備えるフラッシュメモリシステム。
【請求項５】
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを１個又は複数個含む論理ページ及び当該論理ページを複数個含む論理ブロックを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位である不揮発性メモリに対するアクセスを制御する不揮発性メモリの制御方法であって、
それぞれの物理ブロックにおいて、物理ブロック内の物理ページをｎ個（ｎは２以上の整数）のグループに分割するグループ管理ステップと、
物理ブロックに論理ブロックを割り当てると共に、当該論理ブロックと当該論理ブロックを割り当てた物理ブロックの対応関係を管理する対応関係管理ステップと、
物理ブロック内の先頭の物理ページから末尾の物理ページに向かう書き込み順序で、物理ブロック内のそれぞれの物理ページに、ホストシステムから与えられるユーザデータを書き込んでいくデータ書き込みステップと、
前記データ書き込み手段がユーザデータを書き込む物理ページに、当該ユーザデータに対応する論理ページを示す番号と共に、当該物理ページと同じグループに属する他の物理ページに格納されているユーザデータに対応する論理ページを示す番号を書き込むページ情報書き込みステップと、
を備えることを特徴とする不揮発性メモリの制御方法。
【請求項６】
物理ブロック内のユーザデータが書き込まれている物理ページのうち、末尾側のｎ個の物理ページに格納されている論理ページを示す番号を読み出すことにより、論理ブロック内の論理ページと当該論理ブロックが割り当てられている物理ブロック内の物理ページの対応関係を特定するページ管理ステップを更に備えることを特徴とする請求項５に記載の不揮発性メモリの制御方法。
【請求項７】
前記グループ管理ステップでは、物理ブロック内の物理ページに通し番号を付け、当該通し番号をｎで割った際の余りが同じものが同じグループに属するようにグループを形成することを特徴とする請求項５又は６に記載のメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストシステムの書き換え単位よりも大きな消去ブロックサイズを持つ不揮発性メモリを用いて、記憶装置を構成するための、メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法に関する。
【背景技術】
【０００２】
コンピュータ等の情報処理装置（ホストシステム）では、各種のファイルデータを保存するためにフラッシュメモリを記憶媒体として用いたＣＦ（Compact Flash）カード、ＳＳＤ（Solid State Drive）等の情報記憶装置（フラッシュメモリシステム）が使われることが多くなっている。このようなフラッシュメモリシステムでは、ホストシステムから与えられるアクセス指示に基づいて、フラッシュメモリに対する読み出し処理や書き込み処理が行われる。また、ホストシステムから与えられるアクセス指示では、セクタ（５１２バイト）単位の領域に付けられたアドレスでアクセス対象の領域が指示される。このようなフラッシュメモリシステムの記憶媒体として一般的に使用されているＮＡＮＤ型フラッシュメモリでは、ページ（物理ページ）単位でデータの書き込みが行われ、複数の物理ページを含む物理ブロック単位で記憶データの消去が行われる。従って、ホストシステムからはセクタ単位での書き換えを前提とした書き込み指示が与えられるが、このＮＡＮＤ型フラッシュメモリに対する書き込みはページ単位で実行しなければならない。更に、一度書き込まれたデータを書き換えるためにはブロック全体を一旦消去しなければならない。
【０００３】
ＮＡＮＤ型フラッシュメモリを用いたフラッシュメモリシステムでは、ホストシステム側で管理されているアドレスが付けられたセクタ単位の領域を１個又は複数個集めた論理ブロックを物理ブロックに割り当てて管理している。更に、物理ブロック内の物理ページに、その物理ブロックに割り当てられた論理ブロック内の論理ページに対応するデータをランダムに書き込む場合には、物理ブロック内の物理ページと論理ブロック内の論理ページの対応関係を管理しなければならない。例えば、特許文献１では、物理ページの冗長領域に、その物理ページに対応する論理ページを特定するための番号を書き込んでいる。従って、この番号に基づいて、論理ページと物理ページの対応関係を管理することができる。しかし、この番号に基づいて、論理ページと物理ページの対応関係を把握するとすれば、この対応関係を把握する際に、それぞれの物理ページの冗長領域から、この番号を順次読み出さなければならない。この処理負担を軽減するために、一部の物理ブロックを、論理ページと物理ページの対応関係を示すマッピング情報を格納するための物理ブロックに割り当てている。また、特許文献２では、このようなマッピング情報を、ホストシステムから与えられたデータが格納されている物理ブロック内の一部の物理ページに格納している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−１９６７３６号公報
【特許文献２】特開２００９−１８１２５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このようなマッピング情報を、一部の物理ブロックに、又は物理ブロック内の一部の物理ページに格納するようにした場合、ホストシステムから与えられるデータを格納するために使用できるフラッシュメモリ内の記憶領域が減少する。また、それぞれの物理ページの冗長領域から、それぞれの物理ページに対応する論理ページを特定するための番号を読み出して、論理ページと物理ページの対応関係を把握するとすれば、この対応関係を把握する際の処理負担が大きくなる。
【０００６】
そこで、本発明は、ホストシステムから与えられるデータを格納するための領域を減少させることなく、論理ページと物理ページの対応関係を効率良く管理することができるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の側面に従う、メモリコントローラは、
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを１個又は複数個含む論理ページ及び当該論理ページを複数個含む論理ブロックを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位である不揮発性メモリに対するアクセスを制御するメモリコントローラであって、
それぞれの物理ブロックにおいて、物理ブロック内の物理ページをｎ個（ｎは２以上の整数）のグループに分割するグループ管理手段と、
物理ブロックに論理ブロックを割り当てると共に、当該論理ブロックと当該論理ブロックを割り当てた物理ブロックの対応関係を管理する対応関係管理手段と、
物理ブロック内の先頭の物理ページから末尾の物理ページに向かう書き込み順序で、物理ブロック内のそれぞれの物理ページに、ホストシステムから与えられるユーザデータを書き込んでいくデータ書き込み手段と、
前記データ書き込み手段がユーザデータを書き込む物理ページに、当該ユーザデータに対応する論理ページを示す番号と共に、当該物理ページと同じグループに属する他の物理ページに格納されているユーザデータに対応する論理ページを示す番号を書き込むページ情報書き込み手段と、
を備える。
【０００８】
本発明の第１の側面に従う、メモリコントローラは、
物理ブロック内のユーザデータが書き込まれている物理ページのうち、末尾側のｎ個の物理ページに格納されている論理ページを示す番号を読み出すことにより、論理ブロック内の論理ページと当該論理ブロックが割り当てられている物理ブロック内の物理ページの対応関係を特定するページ管理手段を更に備えることが好ましい。
【０００９】
本発明の第１の側面に従う、メモリコントローラは、
前記グループ管理手段が、物理ブロック内の物理ページに通し番号を付け、当該通し番号をｎで割った際の余りが同じものが同じグループに属するようにグループを形成することが好ましい。
【００１０】
本発明の第２の側面に従う、メモリコントローラは、
前記第１の側面に従うメモリコントローラと、
このメモリコントローラにより制御される１個又は複数個の不揮発性メモリを備える。
【００１１】
本発明の第３の側面に従う、不揮発性メモリの制御方法は、
ホストシステムから与えられる論理アドレスが割り当てられている論理セクタを１個又は複数個含む論理ページ及び当該論理ページを複数個含む論理ブロックを定義して、書き込み処理の処理単位である物理ページを複数個含む物理ブロックが消去処理の処理単位である不揮発性メモリに対するアクセスを制御する不揮発性メモリの制御方法であって、
それぞれの物理ブロックにおいて、物理ブロック内の物理ページをｎ個（ｎは２以上の整数）のグループに分割するグループ管理ステップと、
物理ブロックに論理ブロックを割り当てると共に、当該論理ブロックと当該論理ブロックを割り当てた物理ブロックの対応関係を管理する対応関係管理ステップと、
物理ブロック内の先頭の物理ページから末尾の物理ページに向かう書き込み順序で、物理ブロック内のそれぞれの物理ページに、ホストシステムから与えられるユーザデータを書き込んでいくデータ書き込みステップと、
前記データ書き込み手段がユーザデータを書き込む物理ページに、当該ユーザデータに対応する論理ページを示す番号と共に、当該物理ページと同じグループに属する他の物理ページに格納されているユーザデータに対応する論理ページを示す番号を書き込むページ情報書き込みステップと、
を備える。
【００１２】
本発明の第３の側面に従う、不揮発性メモリの制御方法は、
物理ブロック内のユーザデータが書き込まれている物理ページのうち、末尾側のｎ個の物理ページに格納されている論理ページを示す番号を読み出すことにより、論理ブロック内の論理ページと当該論理ブロックが割り当てられている物理ブロック内の物理ページの対応関係を特定するページ管理ステップを更に備えることが好ましい。
【００１３】
本発明の第３の側面に従う、不揮発性メモリの制御方法は、
前記グループ管理ステップが、物理ブロック内の物理ページに通し番号を付け、当該通し番号をｎで割った際の余りが同じものが同じグループに属するようにグループを形成するステップであることが好ましい。
【発明の効果】
【００１４】
本発明によれば、物理ブロック内の物理ページをｎ個（ｎは２以上の整数）のグループに分割し、物理ブロック内の物理ページにホストシステムから与えられるユーザデータを書き込む際に、当該ユーザデータに対応する論理ページを示す番号と共に、当該物理ページと同じグループに属する他の物理ページに格納されているユーザデータに対応する論理ページを示す番号を書き込むようにしたので、ユーザデータを格納するための領域を減少させることなく、論理ページと物理ページの対応関係を効率良く管理することができる。
【図面の簡単な説明】
【００１５】
【図１】図１は、本実施の形態に係るフラッシュメモリシステム１を概略的に示すブロック図である。
【図２】図２は、本実施の形態に係るページ情報領域の概念図である。
【図３】図３は、本実施の形態に係るページ情報テーブルの概念図である。
【図４】図４は、本実施の形態に係るページ変換テーブルの概念図である。
【図５】図５は、本実施の形態に係るページ情報領域の初期状態を示す図である。
【図６】図６は、本実施の形態に係るページ情報テーブルの初期状態を示す図である。
【図７】図７は、本実施の形態に係る１ページ書き込み後のページ情報領域を示す図である。
【図８】図８は、本実施の形態に係る１ページ書き込み後のページ情報テーブルを示す図である。
【図９】図９は、本実施の形態に係る２ページ書き込み後のページ情報領域を示す図である。
【図１０】図１０は、本実施の形態に係る２ページ書き込み後のページ情報テーブルを示す図である。
【図１１】図１１は、本実施の形態に係る５ページ書き込み後のページ情報領域を示す図である。
【図１２】図１２は、本実施の形態に係る５ページ書き込み後のページ情報テーブルを示す図である。
【図１３】図１３は、本実施の形態に係る８ページ書き込み後のページ情報領域を示す図である。
【図１４】図１４は、本実施の形態に係る８ページ書き込み後のページ情報テーブルを示す図である。
【図１５】図１５は、本実施の形態に係るページ情報領域とページ情報テーブルの対応関係を示す図である。
【発明を実施するための形態】
【００１６】
図１に示されているように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３とで構成されている。メモリコントローラ３は、内部バス１４を介してフラッシュメモリ２と接続されている。
【００１７】
フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続されている。ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等から構成されている。ホストシステム４は、例えば、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１８】
メモリコントローラ３は、図１に示されているように、マイクロプロセッサ６と、ホストインターフェースブロック７と、ＳＲＡＭ８と、バッファメモリ９と、フラッシュメモリインターフェースブロック１０と、誤り訂正ブロック１１と、ＲＯＭ（Read Only Memory）１２とから構成される。以下、各機能ブロックについて説明する。
【００１９】
ホストインターフェースブロック７は、ホストシステム４との間で行われるデータ、アドレス情報、ステータス情報、外部コマンド等の送受信を制御する。つまり、フラッシュメモリシステム１は、ホストインターフェースブロック７を介して、ホストシステム４から供給されるデータ等を取り込む。また、フラッシュメモリシステム１は、ホストインターフェースブロック７を介して、データ等をホストシステム４に供給する。外部コマンドとは、ホストシステム４がフラッシュメモリシステム１に対して処理の実行を指示するためのコマンドである。
【００２０】
ホストインターフェースブロック７は、コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３を備えている。コマンドレジスタＲ１、セクタ数レジスタＲ２及びＬＢＡレジスタＲ３には、ホストシステム４から与えられる情報が書き込まれる。コマンドレジスタＲ１には、書き込みコマンド、読み出しコマンド等の外部コマンドが書き込まれる。セクタ数レジスタＲ２には、書き込むデータ又は読み出すデータのセクタ数が書き込まれる。ＬＢＡレジスタＲ３には、書き込み又は読み出しを開始する論理セクタに対応するＬＢＡ（Logical Block Address）が書き込まれる。ＬＢＡは、５１２バイトの容量を持った論理セクタに割り当てられたアドレスである。
【００２１】
ＳＲＡＭ（Static Random Access Memory）８は、フラッシュメモリ２の制御に必要な情報を一時的に格納する揮発性メモリである。フラッシュメモリ２にアクセスするために必要な各種のテーブルは、ＳＲＡＭ８に保持され、ＳＲＡＭ８上で更新される。フラッシュメモリ２にアクセスするために必要なテーブルが、ＳＲＡＭ８に保持されていない場合は、そのテーブルはＳＲＡＭ８上で作成される。但し、そのテーブルが、フラッシュメモリ２に格納されている場合は、格納されているテーブルがフラッシュメモリ２から読み出され、ＳＲＡＭ８に保持される。上記各種テーブルには、アドレス変換テーブル、検索テーブル、不良ブロックテーブル等が含まれる。アドレス変換テーブルは、論理ブロックと物理ブロックの対応関係を管理するためのテーブルである。検索テーブルは、空きブロックを検索するためのテーブルである。不良ブロックテーブルは不良ブロックを管理するためのテーブルである。
【００２２】
バッファメモリ９は、フラッシュメモリ２から読み出したデータ、又はフラッシュメモリ２に書き込むデータを、一時的に保持する揮発性メモリである。
【００２３】
フラッシュメモリインターフェースブロック１０は、フラッシュメモリ２との間で行われるデータ、アドレス情報、ステータス情報、内部コマンド等の送受信を制御する。ここで、内部コマンドとは、メモリコントローラ３がフラッシュメモリ２に処理の実行を指示するためのコマンドであり、フラッシュメモリ２は、メモリコントローラ３から与えられる内部コマンドに従って動作する。
【００２４】
誤り訂正ブロック１１は、フラッシュメモリ２にデータを書き込むときに、そのデータをＢＣＨ符号の誤り訂正符号（ＥＣＣ：Error Correcting Code）に符号化し、フラッシュメモリ２から符号化されたデータを読み出したときに、その符号化されたデータを復号化する。つまり、フラッシュメモリ２に書き込まれるデータは、冗長ビットが付加されたＢＣＨ符号に符号化されてフラッシュメモリ２に書き込まれ、その符号化されたデータ（冗長ビットが付加されたデータ）は、読み出されたときに復号化される。この復号化では、符号化の際に付加される冗長ビットのビット数に応じて、所定のビット数までのビットエラーが訂正される。更に、誤り訂正ブロック１１は、このＢＣＨ符号に基づいた訂正機能に加えて、当該訂正機能の訂正能力を超えるビット数のビットエラーが発生したことを検出する検出機能を備えている。
【００２５】
ＲＯＭ１２は、フラッシュメモリ２を制御するために必要なファームウェアを格納するための不揮発性の記憶素子である。尚、フラッシュメモリシステム１を起動させるために必要な最小限のファームウェアだけをＲＯＭ１２に格納し、その他のファームウェアをフラッシュメモリ２に格納するようにしてもよい。
【００２６】
マイクロプロセッサ６は、ＲＯＭ１２又はフラッシュメモリ２から、ファームウェアを読み込み、ファームウェアに従って動作する。メモリコントローラ３に含まれる機能ブロックは、マイクロプロセッサ６により制御される。
【００２７】
フラッシュメモリ２は、ＮＡＮＤ型フラッシュメモリであり、レジスタと、複数のメモリセルが２次元的に配列されたメモリセルアレイを備えている。メモリセルアレイは、複数のメモリセル群と、ワード線とを備える。ここで、メモリセル群は、複数のメモリセルが直列に接続されたものである。各ワード線は、メモリセル群の特定のメモリセルを選択するためのものである。このワード線を介して選択されたメモリセルとレジスタとの間で、レジスタから選択されたメモリセルへのデータの書き込み又は選択されたメモリセルからレジスタへのデータの読み出しが行われる。尚、フラッシュメモリには、ＳＬＣ(Single Level Cell)タイプのメモリセルで構成されたものと、ＭＬＣ(Multi Level Cell)タイプのメモリセルで構成されたものがある。
【００２８】
ＮＡＮＤ型フラッシュメモリでは、データ読み出し動作及びデータ書き込み動作はページ単位で行われ、データ消去動作はブロック（物理ブロック）単位で行われる。それぞれの物理ブロックは、複数のページ（物理ページ）で構成され、それぞれの物理ページは、ユーザ領域と冗長領域で構成されている。例えば、１個の物理ページは、４セクタ（２０４８バイト）のユーザ領域と、６４バイトの冗長領域とで構成され、１個の物理ブロックは、６４個の物理ページで構成されている。ユーザ領域は、ホストシステム４から与えられるデータを主に格納するための領域であり、冗長領域は、論理アドレス情報、ブロックステータス（フラグ）等の付加データを主に格納するための領域である。
【００２９】
論理アドレス情報は、当該情報に係る物理ブロックと対応する論理ブロックを特定するための情報である。ブロックステータス（フラグ）は、当該情報に係る物理ブロックが、不良ブロック（正常にデータの書き込み等を行うことができない物理ブロック）であるか否かを示すフラグである。尚、不良ブロックには、初期不良の不良ブロックと後発不良の不良ブロックがある。初期不良の不良ブロックは、出荷前に検出された不良ブロックである。後発不良の不良ブロックは、使用中に生じた不良ブロックである。初期不良の物理ブロックについては、不良ブロックであることを示すブロックステータス（フラグ）が製造メーカによって書き込まれている。また、この初期不良の物理ブロックを示すブロックステータス（フラグ）を、ユーザ領域に書き込んでいる製造メーカもある。
【００３０】
次に本実施の形態において行われる論理アドレス情報の冗長領域への書き込み処理、およびこの論理アドレス情報を利用したアドレス変換テーブルの作成処理について説明する。
【００３１】
ホストシステム４がメモリシステム３のデータをアクセスする場合、ＬＢＡ（Logical Block Addressing）と呼ばれるセクタ単位でアドレスによりアクセス対象の領域が指定される。メモリコントローラ３は、ホストシステム４から受信したＬＢＡを、フラッシュメモリ内の記憶領域の物理アドレスに変換する。次に、メモリコントローラ３は、その物理アドレスをフラッシュメモリに与えることにより、フラッシュメモリにデータを書き込んだり、フラッシュメモリからデータを読み出したりする。より具体的には、ホストシステム４は、アクセス対象の領域を指定するために、ＬＢＡをメモリコントローラ３に与える。メモリコントローラ３は、このＬＢＡに対応する論理セクタが属する論理ブロック及び論理ページを特定する。１個の論理ページがｍ個の論理セクタで構成され、１個の論理ブロックがｎ個の論理ページで構成されている場合、ＬＢＡを１個の論理ブロックに含まれる論理セクタの個数（ｍ×ｎ）で割った商がアクセス対象の論理セクタが属する論理ブロックの論理ブロック番号に対応する。更に、この除算における剰余を１個の論理ページに含まれる論理セクタの個数（ｍ）で割った商が論理ページ番号に対応する。通常、論理ブロックのサイズは、フラッシュメモリ２の消去単位である物理ブロックのサイズ、あるいは、物理ブロックを複数個集めたサイズに一致させることが多いが、メモリコントローラ３によっては、物理ブロックを構成する複数の物理ページの内、一部の物理ページを冗長的な目的で使用するため、その分を差し引いたサイズとなることもある。
【００３２】
次に、論理ブロック番号から、フラッシュメモリ２の物理ブロックアドレスにアドレス変換する方法を説明する。一般的には、起動時にメモリコントローラ３が、フラッシュメモリ２の冗長領域に格納されている論理アドレス情報を読み出し、メモリコントローラ３内のＳＲＡＭ８に、論理ブロック番号順に、各々の論理ブロック番号に対応する物理ブロックアドレスを書き込むことによりアドレス変換テーブルを作成する。そして、このアドレス変換テーブルを参照して、論理ブロック番号を物理ブロックアドレスに変換する。
【００３３】
つまり、メモリコントローラ３は、ホストシステム４から受信したＬＢＡから論理ブロック番号を求めた後、アドレス変換テーブルに基づいて、その論理ブロック番号に対応する物理ブロックアドレスを特定する。
【００３４】
さらに、物理ブロックアドレスが求まった後、メモリコントローラ３は、ページ変換テーブルを参照することで、ホストシステム４から受信したＬＢＡから求めた論理ページ番号に対応する物理ページ番号を特定する。この物理ページ番号を物理ブロックアドレスの下位側に連結したものが、物理ページを指定するための物理アドレスに対応する。ページ変換テーブルは、論理ページ番号と物理ページ番号の対応関係を管理するためのテーブルであり、論理ページ番号順に、各々の論理ページのデータが書き込まれている物理ページの物理ページ番号を保持している。フラッシュメモリへのアクセス（書き込み及び読み出し）の基本単位は物理ページなので、最終的に、ホストシステム４から受信したＬＢＡから物理ページを指定するための物理アドレスが求められる。
【００３５】
この物理ページは、ホストシステムから受信したユーザデータを格納するユーザ領域と、論理ページ番号などの情報を格納する冗長領域とで構成されている。ユーザ領域は、通常、複数セクタの領域で構成されている。冗長領域内の一部の領域は、複数の論理ページ番号を格納することができるページ情報領域として確保されている。このページ情報領域に格納される論理ページ番号に基づいて、論理ページ番号と物理ページ番号の対応関係が管理される。図２は、１個の物理ブロックが６４個の物理ページで構成されている場合に、物理ブロックを構成するそれぞれの物理ページのページ情報領域を概念的に示している。各物理ページには＃０から＃６３までの物理ページ番号が割り当てられており、ユーザデータが各物理ページのユーザ領域に書き込まれる際に、当該物理ページに格納されるユーザデータに対応する論理ページ番号と予め定められた他の物理ページに格納されたユーザデータに対応する論理ページ番号が、当該物理ページのページ情報領域に書き込まれる。本実施の形態では、それぞれの物理ページ内のページ情報領域が領域＃０〜＃１５の１６個の領域に分割されている。従って、それぞれの物理ページ内のページ情報領域には、最大１６個の論理ページ番号を書き込むことができる。
【００３６】
図２に示したように、１個の物理ブロックが６４個の物理ページで構成されている場合、少なくとも４個の物理ページ内のページ情報領域を使用すれば、それぞれの物理ページに格納されたユーザデータに対応する論理ページ番号を格納することができる。つまり、それぞれの物理ページに対応する６４個の論理ページ番号を４つのグループに分割（等分）すれば、それぞれのグループを１個の物理ページ内のページ情報領域に格納することができる。尚、物理ブロック内のそれぞれの物理ページに対応する６４個の論理ページ番号に関する情報は、実質的に、ページ情報テーブルに相当する。次に、ページ変換テーブルの元になるテーブルであるこのページ情報テーブルについて説明する。図３は、フラッシュメモリの１個の物理ブロックに該当するページ情報テーブルの一例を示す概念図である。この例では、フラッシュメモリの１個の物理ブロックを構成する全ての物理ページにデータが書き込まれている。このページ情報テーブルは、物理ページ番号の順番でそれぞれ物理ページに対応する論理ページ番号を保持するテーブルである。従って、４つのグループに分割（等分）して物理ページ内のページ情報領域に格納される論理ページ番号を、物理ページ番号の順番で並べることによりページ情報テーブルを作成することができる。
【００３７】
このページ情報テーブルは、６４個の物理ページにそれぞれ対応する６４個の論理ページ番号格納領域によって構成されている。各論理ページ番号格納領域には、＃０から＃６３までのいずれかの論理ページ番号が格納される。そして、複数の論理ページ番号格納領域に、同じ論理ページ番号が重複して格納されることがある。
【００３８】
一方、ページ変換テーブルは、図４に示すとおり、論理ページ番号の順番でそれぞれ論理ページに対応する物理ページ番号を保持するテーブルである。このページ変換テーブルは、ページ情報テーブルに基づいて作成することができる。ページ情報テーブルに基づいてページ変換テーブルを作成する際に、ひとつの論理ページ番号に複数の物理ページ番号が対応している場合は、もっとも番号の大きな物理ページ番号が、その論理ページ番号に対応する物理ページ番号として選択される。本実施の形態では、物理ブロック内の複数個の物理ページをｎ個のグループに分割するときに、物理ページ番号をｎで割った際の余りが同じになるものが同じグループに属するようにグループが形成される。つまり、余りが、“０”
のグループ、“１” のグループ、・・・・・“ｎ−１” のグループが形成される。例えば、２個のグループに分ける場合、物理ページ番号が＃０，＃２，＃４，＃６・・・の物理ページが属するグループと、物理ページ番号が＃１，＃３，＃５，＃７・・・の物理ページが属するグループとが形成される。このようにした場合、１個の物理ブロックが６４個の物理ページで構成されていれば、各グループに３２個の物理ページが属する。従って、論理ページ番号格納領域の容量は、３２個の論理ページ番号を格納することができる容量に設定する必要がある。
【００３９】
また、ｎで割った際の余りが同じになるものが同じグループに属するようにグループが形成すれば、データが書き込まれている物理ページのうちで、物理ページ番号が大きい方からｎ個の物理ページの論理ページ番号格納領域に格納されている論理ページ番号により、最新のページ変換テーブルを作成することができる。つまり、ｎ個の物理ページの論理ページ番号格納領域から論理ページ番号を読み出すことにより、ページ変換テーブルを作成することができる。
【００４０】
尚、グループの個数を少なくすれば、ページ変換テーブルを作成するときに読み出し対象となる物理ページの個数は少なくなるが、論理ページ番号格納領域の容量は大きくなる。本実施の形態では、このグループの個数を、ＭＬＣ(Multi Level Cell)タイプのフラッシュメモリを使用することを考慮して設定している。このＭＬＣタイプのフラッシュメモリでは、複数個の物理ページによりメモリセルが共用されている。例えば、２個の物理ページがメモリセルを共用している場合、一方の物理ページである下位ページに対するデータの書き込みが行われた後に、他方の物理ページである上位ページに対するデータの書き込みが行われる。従って、上位ページに対するデータの書き込みの際に、エラーが発生した場合、その上位ページと対になっている下位ページのデータが破壊されてしまう。この上位ページと対になっている下位ページとの間に少なくともｍ個の物理ページが存在する場合、グループの個数がｍ個以下であれば、上位ページに対するデータの書き込みの際に、その上位ページと対になっている下位ページはページ変換テーブルを作成するときに読み出し対象の物理ページから外れている。従って、上位ページに対するデータの書き込みの際に、エラーが発生しても、その影響を小さくすることができる。
【００４１】
次に、物理ブロック内のそれぞれの物理ページにおいて、物理ページ内のユーザ領域に書き込まれるデータとページ情報領域に書き込まれる論理ページ番号との関係を説明する。以下の説明では、各物理ページ内のページ情報領域に書き込まれる論理ページ番号、それに対応するページ情報テーブルの遷移を示す図を参照する。図５は、消去状態にある物理ブロックの状態である。消去状態においては、物理ブロックのすべてのページ情報領域は消去状態（論理値が“１”の状態）、つまりＦＦｈが読み出される状態にある。図６は、この初期状態にある物理ブロックに対応するページ情報テーブルの概念図を示す。この状態ではデータが書き込まれていないので、ページ情報テーブルのそれぞれの物理ブロック番号に対応する論理ページ番号領域（８ビット×１６）は、すべて消去状態を示すコード、例えば、ＦＦｈが設定されている。
【００４２】
次に、ホストシステムからの要求に基づいて、物理ブロック内の物理ページにデータが書き込まれる場合について説明する。この要求では、ホストシステムから書き込み命令、書き込み先のＬＢＡ等が与えられる。メモリコントローラは、ホストシステムから与えられたＬＢＡから論理ブロック番号と論理ページ番号を計算する。ここでは、その論理ブロック番号に対応する物理ブロック番号が、アドレス変換テーブルに示されていなかったとする。この場合、その論理ブロック番号に対して、消去状態の物理ブロックが新たに割り当てられる。消去状態の物理ブロックに対して書き込みを実施する場合は、先頭の物理ページである物理ページ番号（ＰＰＮ）＃０の物理ページからデータの書き込みが開始される。物理ページ番号＃０の物理ページのユーザ領域に、論理ページ番号＃３のユーザデータを書き込む際に、当該物理ページのページ情報領域内の領域０に、当該のユーザデータに対応する論理ページ番号である＃３を書き込む。つまり、論理ページ番号＃３のユーザデータを物理ページ番号＃０の物理ページ内のユーザ領域に書き込む際に、論理ページ番号を示す＃３がページ情報領域内の領域０に書き込まれる。図７は、物理ページ番号＃０の物理ページに、論理ページ番号＃３のユーザデータが書き込まれた状態を示している。また、図８は、この状態のページ情報テーブルを示している。この状態では、物理ページ番号＃０に対応する論理ページ番号は＃３になる。
【００４３】
以下、この物理ブロック内の物理ページ番号＃１以降の物理ページにデータが書き込まれる場合について説明する。物理ページ番号＃１の物理ページのユーザ領域に、論理ページ番号＃８に対応するユーザデータを書き込む際に、当該物理ページのページ情報領域内の領域０に、当該ユーザデータに対応する論理ページ番号を示す＃８を書き込む。図９は、物理ページ番号＃０の物理ページと物理ページ番号＃１の物理ページに、論理ページ番号＃３のユーザデータと論理ページ番号＃８のユーザデータがそれぞれ書き込まれた状態を示している。また、図１０は、この状態のページ情報テーブルを示している。この状態では、物理ページ番号＃０に対応する論理ページ番号は＃３になり、物理ページ番号＃１に対応する論理ページ番号は＃８になる。
【００４４】
以下同様に、物理ページ番号＃２の物理ページのユーザ領域に、論理ページ番号＃９に対応するユーザデータを書き込む際に、当該物理ページのページ情報領域内の領域０に、当該ユーザデータに対応する論理ページ番号を示す＃９を書き込む。物理ページ番号＃３の物理ページのユーザ領域に、論理ページ番号＃４に対応するユーザデータを書き込む際に、当該物理ページのページ情報領域内の領域０に、当該ユーザデータに対応する論理ページ番号を示す＃４を書き込む。
【００４５】
次に、物理ページ番号＃４の物理ページに対するユーザデータ及び論理ページ番号の書き込みについて説明する。物理ページ番号＃４の物理ページは、物理ページ番号＃０の物理ページと同じグループに属している。従って、物理ページ番号＃４の物理ページのユーザ領域に、論理ページ番号＃５に対応するユーザデータを書き込む際に、当該物理ページのページ情報領域内の領域１に、当該ユーザデータに対応する論理ページ番号を示す＃５を書き込むと共に、当該物理ページのページ情報領域内の領域０に、論理ページ番号を示す＃３を書き込む。つまり、物理ページ番号＃０の物理ページに対応する論理ページ番号（＃３）と物理ページ番号＃４の物理ページに対応する論理ページ番号（＃５）が、ページ情報領域内の領域０と領域１にそれぞれ書き込まれる。
【００４６】
図１１は、物理ページ番号＃０〜＃４の物理ページに、論理ページ番号＃３，＃８，＃９，＃４，＃５のユーザデータがそれぞれ書き込まれた状態を示している。また、図１２は、この状態のページ情報テーブルを示している。この状態では、物理ページ番号＃０に対応する論理ページ番号は＃３になり、物理ページ番号＃１に対応する論理ページ番号は＃８になり、物理ページ番号＃２に対応する論理ページ番号は＃９になり、物理ページ番号＃３に対応する論理ページ番号は＃４になり、物理ページ番号＃４に対応する論理ページ番号は＃５になる。
【００４７】
同様に、物理ページ番号＃５〜＃７の物理ページに対するユーザデータ及び論理ページ番号の書き込みが行われる。ここで、物理ページ番号＃５の物理ページは、物理ページ番号＃１の物理ページと同じグループに属している。物理ページ番号＃６の物理ページは、物理ページ番号＃２の物理ページと同じグループに属している。物理ページ番号＃７の物理ページは、物理ページ番号＃３の物理ページと同じグループに属している。従って、物理ページ番号＃５の物理ページのユーザ領域に、論理ページ番号＃６に対応するユーザデータを書き込む際に、物理ページ番号＃１の物理ページに対応する論理ページ番号（＃８）と物理ページ番号＃５の物理ページに対応する論理ページ番号（＃６）が、ページ情報領域内の領域０と領域１にそれぞれ書き込まれる。物理ページ番号＃６の物理ページのユーザ領域に、論理ページ番号＃１に対応するユーザデータを書き込む際に、物理ページ番号＃２の物理ページに対応する論理ページ番号（＃９）と物理ページ番号＃６の物理ページに対応する論理ページ番号（＃１）が、ページ情報領域内の領域０と領域１にそれぞれ書き込まれる。物理ページ番号＃７の物理ページのユーザ領域に、論理ページ番号＃０に対応するユーザデータを書き込む際に、物理ページ番号＃３の物理ページに対応する論理ページ番号（＃４）と物理ページ番号＃７の物理ページに対応する論理ページ番号（＃０）が、ページ情報領域内の領域０と領域１にそれぞれ書き込まれる。
【００４８】
図１３は、物理ページ番号＃０〜＃７の物理ページに、論理ページ番号＃３，＃８，＃９，＃４，＃５，＃６，＃１，＃０のユーザデータがそれぞれ書き込まれた状態を示している。また、図１４は、この状態のページ情報テーブルを示している。この状態では、物理ページ番号＃０に対応する論理ページ番号は＃３になり、物理ページ番号＃１に対応する論理ページ番号は＃８になり、物理ページ番号＃２に対応する論理ページ番号は＃９になり、物理ページ番号＃３に対応する論理ページ番号は＃４になり、物理ページ番号＃４に対応する論理ページ番号は＃５になり、物理ページ番号＃５に対応する論理ページ番号は＃６になり、物理ページ番号＃６に対応する論理ページ番号は＃１になり、物理ページ番号＃７に対応する論理ページ番号は＃０になる。  次に、ページ変換テーブルを作成する処理について説明する。メモリコントローラは、アクセス対象の物理ブロックのページ変換テーブルがＳＲＡＭ上に作成されていないときに、この処理を実行する。まず、メモリコントローラは、このアクセス対象の物理ブロック内のユーザデータが格納されている末尾の物理ページを特定する。例えば、図１３に示したように物理ページ番号＃０〜＃７の物理ページにユーザデータが格納されている場合、末尾からその３つ前までの４個の物理ページに対応する物理ページのページ情報領域内から論理ページ番号が読み出される。つまり、物理ページ番号＃４〜＃７の物理ページのページ情報領域内から論理ページ番号が読み出される。物理ページ番号＃０〜＃７の物理ページにユーザデータが格納されている状態のページ情報テーブルは、物理ページ番号＃４〜＃７の物理ページのページ情報領域内から読み出され論理ページ番号に基づいて作成することができる。従って、物理ページ番号＃４〜＃７の物理ページのページ情報領域内から読み出され論理ページ番号に基づいて、ページ変換テーブルを作成することができる。
【００４９】
また、図４に示したように物理ページ番号＃０〜＃６３の物理ページにユーザデータが格納されている場合、物理ページ番号＃６０〜＃６３の物理ページのページ情報領域内から論理ページ番号が読み出される。図１５は、図４に示したように物理ページ番号＃０〜＃６３の物理ページにユーザデータが格納されている状態におけるページ情報テーブルと、この状態において物理ページ番号＃６０〜＃６３の物理ページのページ情報領域に格納されている論理ページ番号との関係を示している。ここで、物理ページ番号＃６０の物理ページのページ情報領域には、物理ページ番号＃０，＃４，＃８，＃１２・・・＃６０の物理ページに対応する論理ページ番号が格納される。物理ページ番号＃６１の物理ページのページ情報領域には、物理ページ番号＃１，＃５，＃９，＃１３・・・＃６１の物理ページに対応する論理ページ番号が格納される。物理ページ番号＃６２の物理ページのページ情報領域には、物理ページ番号＃２，＃６，＃１０，＃１４・・・＃６２の物理ページに対応する論理ページ番号が格納される。物理ページ番号＃６３の物理ページのページ情報領域には、物理ページ番号＃３，＃７，＃１１，＃１５・・・＃６３の物理ページに対応する論理ページ番号が格納される。つまり、ページ情報テーブルが、４つのグループに分割されて、物理ページ番号＃０〜＃６３の物理ページに格納されている状態になっている。このため、物理ページ番号＃６０〜＃６３の物理ページのページ情報領域内から読み出された論理ページ番号に基づいて、ページ変換テーブルを作成することができる。
【００５０】
以上、本発明の実施の形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施の形態にのみ限定する趣旨ではない。本発明の要旨を逸脱しない範囲内において種々の変更を加え得ることは勿論である。
【００５１】
例えば、物理ブロックに含まれる複数個の物理ページを複数のグループに分割するときのグループ数、及びその分割の仕方は適宜変更することができる。そして、ページ情報領域の容量も、それぞれのグループに含まれる物理ページの個数に応じて、適宜変更することができる。
【００５２】
また、複数のフラッシュメモリをアクセスするために複数のチャンネルのバスを備えたフラッシュメモリシステムにおいても本発明は有効である。各チャンネルに接続された複数のフラッシュメモリから、それぞれ選択された複数の物理ブロックを、ひとつの仮想ブロックとして定義する。さらにその仮想ブロックを構成する複数の物理ブロックにそれぞれ含まれる複数の物理ページを、ひとつの仮想ページと定義する。この様な仮想空間に対しても本発明は適用可能である。その場合、ホストシステムのＬＢＡ空間からフラッシュメモリ内の物理アドレスへのアドレス変換は、仮想ブロックの単位で行われる。つまり、ひとつの論理ブロックはひとつの仮想ブロックに割り当てられ、ひとつの論理ページはひとつの仮想ページに割り当てられる。従って、論理ページのサイズは、仮想ページのユーザデータ領域の合計値に一致する。
【産業上の利用可能性】
【００５３】
本発明は、種々のデジタル情報を取り扱うパーソナルコンピュータやデジタルスチルカメラ等の電子機器に装着又内蔵される情報記憶（記録）装置に適用することができる。
【符号の説明】
【００５４】
１…フラッシュメモリシステム、２…フラッシュメモリ、３…メモリコントローラ
【図１】
2012068764.tif 000003
【図２】
2012068764.tif 000004
【図３】
2012068764.tif 000005
【図４】
2012068764.tif 000006
【図５】
2012068764.tif 000007
【図６】
2012068764.tif 000008
【図７】
2012068764.tif 000009
【図８】
2012068764.tif 000010
【図９】
2012068764.tif 000011
【図１０】
2012068764.tif 000012
【図１１】
2012068764.tif 000013
【図１２】
2012068764.tif 000014
【図１３】
2012068764.tif 000015
【図１４】
2012068764.tif 000016
【図１５】
2012068764.tif 000017