(57)【要約】【課題】  フラッシュメモリシステムにおけるエラー検出及び訂正の能力を高める。【解決手段】  複数のチップで構成されたフラッシュメモリ２に対し、コントローラ３は、互いに異なるチップ内のブロックを関連付け、関連付けられた複数のブロックを共通のグループとして取扱い、そのグループ内の１ブロックを、他のブロックに書込まれたユーザデータのパリティーデータを書込むパリティーデータ用ブロックに割当て、ユーザデータとパリティーデータとを書込む。そして、パリティーデータに基づいてユーザデータのエラー検出及びその訂正を行う。【選択図】  図１
2006018373.tif 000002
【特許請求の範囲】
【請求項１】
ページ単位でデータの書込み及び読出しが可能で、複数ページからなるブロック単位でデータの消去が可能であると共に複数チップで構成されたフラッシュメモリに接続され、該各チップにアクセスするアクセス手段と、
前記フラッシュメモリの互いに異なるチップ内のブロックを関連付け、該関連付けられた複数のブロックを共通のグループとして取扱い、該グループ内の１ブロックを、該グループ内の他のブロックに書込まれたユーザデータのパリティーデータを書込むパリティーデータ用ブロックに割当てるグループ管理手段と、
前記パリティーデータ用ブロックにパリティーデータを設定するパリティーデータ設定手段と、
前記パリティーデータに基づいて前記グループ内の他のブロックに書込まれたユーザデータのエラー検出及びその訂正を行うデータ矯正手段と、
を備えたことを特徴とするメモリコントローラ。
【請求項２】
前記データ矯正手段は、前記ユーザデータが前記ページ単位で書込まれる際に生成されたエラー訂正用コードを用いてユーザデータのエラー検出及びその訂正を試み、エラー検出及び訂正ができない場合に前記パリティーデータに基づいて該ユーザデータのエラー検出及びその訂正を行うことを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記フラッシュメモリのいずれのチップに対しても前記パリティーデータ用ブロックが割当てられることを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
同一の前記グループに属するブロックの冗長領域に、同一の符号を設定することにより、各ブロックを関連付けることを特徴とする請求項１乃至３のいずれか１項に記載のメモリコントローラ。
【請求項５】
前記パリティーデータが設定されているブロックの冗長領域に、該ブロックが前記パリティーデータ用ブロックであることを示す情報を設定することを特徴とする請求項１乃至４のいずれか１項に記載のメモリコントローラ。
【請求項６】
請求項１乃至５のいずれか１項に記載のメモリコントローラと、
ページ単位でデータの書込み及び読出しが可能で、複数ページからなるブロック単位でデータの消去が可能であると共に複数チップで構成されたフラッシュメモリと、
を備えることを特徴とするフラッシュメモリシステム。
【請求項７】
ページ単位でデータの書込み及び読出しが可能で、複数ページからなるブロック単位でデータの消去が可能であると共に複数チップで構成されたフラッシュメモリの互いに異なるチップ内のブロックを関連付け、該関連付けられた複数のブロックを共通のグループとして取扱い、該グループ内の１ブロックを、該グループ内の他のブロックに書込まれたデータのパリティーデータを書込むパリティーデータ用ブロックに割当て、該パリティーデータ用ブロックを除くブロックに、ホストシステムから与えられるユーザデータを書込む書込処理と、
前記パリティーデータ用ブロックに前記ユーザデータに基づいて生成したパリティーデータを書込むパリティーデータ設定処理と、
前記パリティーデータに基づいて前記グループ内の他のブロックに書込まれたユーザデータのエラー検出及びその訂正を行うデータ矯正処理と、
を含むことを特徴とするフラッシュメモリの制御方法。
【請求項８】
前記データ矯正処理は、前記ユーザデータが前記ページ単位で書込まれる際に生成されたエラー訂正用コードを用いてユーザデータのエラー検出及びその訂正を試み、エラー検出及び訂正ができない場合に前記パリティーデータに基づいて該ユーザデータのエラー検出及びその訂正を行うことを特徴とする請求項７に記載のフラッシュメモリの制御方法。
【請求項９】
前記フラッシュメモリのいずれのチップに対しても前記パリティーデータ用ブロックが割当てられることを特徴とする請求項７又は８に記載のフラッシュメモリの制御方法。
【請求項１０】
同一の前記グループに属するブロックの冗長領域に、同一の符号を設定することにより、各ブロックを関連付けることを特徴とする請求項７乃至９のいずれか１項に記載の記載のフラッシュメモリの制御方法。
【請求項１１】
パリティーデータが設定されているブロックの冗長領域に、該ブロックが前記パリティーデータ用ブロックであることを示す情報を設定することを特徴とする請求項７乃至１０のいずれか１項に記載のフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
近年、メモリーカードやシリコンディスク等の形態でメモリシステムに使用される半導体メモリとして、フラッシュメモリが広く採用されている。フラッシュメモリでは、電力の供給が停止された状態でもデータが保持されていることが要求される。
【０００３】
ＮＡＮＤ型フラッシュメモリは、上記のメモリシステムで特に多く用いられるフラッシュメモリである。
ＮＡＮＤ型フラッシュメモリに含まれている複数のメモリセルのそれぞれは、消去状態のときに論理値“１”を示し、書込み状態の時に“０”を示す。そして、複数のメモリセルは、他のメモリセルとは独立して消去状態から書込状態へと変化することができる。
【０００４】
これとは対照的に、書込状態から消去状態へと変化させるときには、各メモリセルは他のメモリセルと独立して変化させることができない。この書込状態から消去状態に変化させるときには、ブロックと称される予め定められた所定数のメモリセルを全て同時に消去状態にする。この一括消去動作は、一般的に、「ブロック消去」と称されている。ＮＡＮＤ型フラッシュメモリに対する書込処理若しくは読出処理は、ページと称される予め定められた数のメモリセル単位に処理が行われる。消去処理の単位であるブロックは複数のページで構成されている。
【０００５】
上記フラッシュメモリでは、書込処理の際にビットエラーが発生することがあり、その頻度は書込み回数が一定回数以上になると増加する。このため、通常のフラッシュメモリシステムでは、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）を用いて、ビットエラーの検出と訂正を行っている。
【０００６】
ＥＣＣを用いたフラッシュメモリシステムでは、フラッシュメモリシステムに書込まれるユーザデータに基づいて生成したＥＣＣを、フラッシュメモリの冗長領域に書込んでおき、フラッシュメモリからユーザデータを読出したときに、読出したユーザデータに基づいて生成したＥＣＣと、冗長領域に書込まれているＥＣＣとを比較する。その結果、ビットエラーが検出された場合は、その比較結果に基づいてエラー訂正が行われる。
【０００７】
但し、このエラー訂正では、１ページのユーザデータに対して、１ビット若しくは２ビットのエラー訂正は可能であるが、それ以上のエラーが発生した場合には、正常なエラー訂正を行うことができない。
【０００８】
下記、特許文献１には、この問題を改善するための技術が開示されている。この技術では、各ページに書込まれるユーザデータを複数に分割し、分割した単位毎にＥＣＣを生成するようにしたので、分割した単位でエラー訂正を行うことができる。
【特許文献１】特開２０００−２０４０９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
特許文献１に開示された技術により、各ページに書込まれるユーザデータに対する訂正可能なビット数は増加するが、更にエラー訂正能力を向上させたい場合がある。
【００１０】
本発明は、フラッシュメモリを用いたフラッシュメモリシステムで発生するビットエラーのエラー訂正能力を向上させることができるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明の第１の観点に係るメモリコントローラは、ページ単位でデータの書込み及び読出が可能で、複数ページからなるブロック単位でデータの消去が可能であると共に複数チップで構成されたフラッシュメモリに接続され、該各チップにアクセスするアクセス手段と、
前記フラッシュメモリの互いに異なるチップ内のブロックを関連付け、該関連付けられた複数のブロックを共通のグループとして取扱い、該グループ内の１ブロックを、該グループ内の他のブロックに書込まれたユーザデータのパリティーデータを書込むパリティーデータ用ブロックに割当てるグループ管理手段と、
前記パリティーデータ用ブロックにパリティーデータを設定するパリティーデータ設定手段と、
前記パリティーデータに基づいて前記グループ内の他のブロックに書込まれたユーザデータのエラー検出及びその訂正を行うデータ矯正手段と、
を備えたことを特徴とする。
【００１２】
このような構成を採用したことにより、パリティーデータに基づいて、ユーザデータの誤り検出とその訂正が可能になり、書き込み回数が増加すると誤りの多くなるフラッシュメモリにおけるデータの信頼性を向上できる。
【００１３】
尚、前記データ矯正手段は、前記ユーザデータが前記ページ単位で書込まれる際に生成されたエラー訂正用コードを用いてユーザデータのエラー検出及びその訂正を試み、エラー検出及び訂正ができない場合に前記パリティーデータに基づいて該ユーザデータのエラー検出及びその訂正を行ってもよい。
【００１４】
このように、エラー訂正用コードを用いたエラー検出及びデータの訂正を併用する場合には、エラー訂正用コードを用いてエラー検出と訂正を行い、エラー訂正用コードによるエラー検出及びデータの訂正ができない場合に、パリティーデータを用いたエラー検出及びデータの訂正を行うことにより、エラー検出及びデータの訂正の精度が向上する。
【００１５】
ここで、前記フラッシュメモリのいずれのチップに対しても前記パリティーデータ用ブロックを割当ててもよい。
【００１６】
又、同一の前記グループに属するブロックの冗長領域に、同一の符号を設定することにより、各ブロックを関連付けてもよい。
【００１７】
又、前記パリティーデータが設定されているブロックの冗長領域に、該ブロックが前記パリティーデータ用ブロックであることを示す情報を設定してもよい。
【００１８】
前記目的を達成するために、本発明の第２の観点に係るフラッシュメモリシステムは、上記メモリコントローラと、ページ単位でデータの書込み及び読出が可能で、複数ページからなるブロック単位でデータの消去が可能であると共に複数チップで構成されたフラッシュメモリとを備えることを特徴とする。
【００１９】
前記目的を達成するために、本発明の第３の観点に係るフラッシュメモリの制御方法は、ページ単位でデータの書込み及び読出が可能で、複数ページからなるブロック単位でデータの消去が可能であると共に複数チップで構成されたフラッシュメモリの互いに異なるチップ内のブロックを関連付け、該関連付けられた複数のブロックを共通のグループとして取扱い、該グループ内の１ブロックを、該グループ内の他のブロックに書込まれたデータのパリティーデータを書込むパリティーデータ用ブロックに割当て、該パリティーデータ用ブロックを除くブロックに、ホストシステムから与えられるユーザデータを書込む書込処理と、
前記パリティーデータ用ブロックに前記ユーザデータに基づいて生成したパリティーデータを書込むパリティーデータ設定処理と、
前記パリティーデータに基づいて前記グループ内の他のブロックに書込まれたユーザデータのエラー検出及びその訂正を行うデータ矯正処理と、を含むことを特徴とする。
【００２０】
尚、前記データ矯正処理は、前記ユーザデータが前記ページ単位で書込まれる際に生成されたエラー訂正用コードを用いてユーザデータのエラー検出及びその訂正を試み、エラー検出及び訂正ができない場合に前記パリティーデータに基づいて該ユーザデータのエラー検出及びその訂正を行ってもよい。
又、前記フラッシュメモリのいずれのチップに対しても前記パリティーデータ用ブロックが割当てられてもよい。
【００２１】
又、同一の前記グループに属するブロックの冗長領域に、同一の符号を設定することにより、各ブロックを関連付けてもよい。
又、パリティーデータが設定されているブロックの冗長領域に、該ブロックが前記パリティーデータ用ブロックであることを示す情報を設定してもよい。
【発明の効果】
【００２２】
本発明によれば、複数チップで構成されたフラッシュメモリに発生するデータの書き込み誤りをパリティーデータを用いて検出し、そのデータを訂正できる。また、不具合等により、１つのチップを交換するような場合には、交換したチップに書込まれていたデータを、他のチップに書込まれているデータに基づいて再生成することができる。
【発明を実施するための最良の形態】
【００２３】
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
図１は、本発明の実施形態に係るフラッシュメモリシステム１を概略的に示すブロック図である。
【００２４】
図１に示したようにフラッシュメモリシステム１は、複数チップで構成されたフラッシュメモリ２と、それを制御するコントローラ３で構成されている。又、フラッシュメモリシステム１は、通常ホストシステム４に着脱可能に装着されて使用され、ホストシステム４に対して一種の外部記憶装置として用いられる。
【００２５】
尚、ホストシステム４としては、文字、音声、或いは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
【００２６】
フラッシュメモリ２は、ＮＡＮＤ型フラッシュメモリであり、ページ単位で読出し又は書込みを、ブロック単位で消去を実行するデバイスであり、例えば、１ブロックは３２ページで構成され、１ページは５１２バイトのユーザ領域と１６バイトの冗長領域で構成されている。
【００２７】
ＮＡＮＤ型フラッシュメモリは、ストレージデバイスへの用途として(ハードディスクの代わりになるものとして)開発された不揮発性メモリである。このＮＡＮＤ型フラッシュメモリは、ランダムアクセスを行うことができず、書込みと読出しはページ単位で、消去はブロック単位で行われる。又、データの上書きができないので、データを書込むときは、消去されている領域にデータの書込みが行われる。
【００２８】
ＮＡＮＤ型フラッシュメモリは、このような特徴を有するため、通常、データの書替を行う場合には、ブロック消去されている消去済ブロックに新たなデータ（書替後のデータ）を書込み、古いデータ（書替前のデータ）が書込まれていたブロックを消去するという処理を行っている。
【００２９】
このようなデータの書替を行った場合、書替後のデータは書替前と異なるブロックに書込まれるため、ホストシステム４側から与えられるアドレスに基づく論理ブロックアドレスと、フラッシュメモリ２内でのブロックアドレスである物理ブロックアドレスとの対応関係は、データを書替える毎に動的に変化する。この論理ブロックアドレスと物理ブロックアドレスとの対応関係は、通常、その対応関係を示したアドレス変換テーブルによって管理されており、アドレス変換テーブルは、後述する対応論理ブロックアドレスに基づいて作成される。
【００３０】
図２(ａ)，(ｂ)は、ブロックとページの関係を示す説明図である。
上記ブロックとページの構成は、フラッシュメモリ２の仕様によって異なるが、一般的なフラッシュメモリでは、図２（ａ）に示したように、１ブロックが３２ページ（Ｐ０〜Ｐ３１）で構成され、各ページが５１２バイトのユーザ領域と１６バイトの冗長領域で構成されている。又、記憶容量の増加に伴い、図２（ｂ）に示したように、１ブロックが６４ページ（Ｐ０〜Ｐ６３）で構成され、各ページが、２０４８バイトのユーザ領域と６４バイトの冗長領域とで構成されているものも提供されている。
【００３１】
ユーザ領域とは、主に、ホストシステム４から供給されるデ―タが記憶される領域であり、冗長領域とは、エラー訂正用コードであるエラーコレクションコード(ＥＣＣ)、対応論理ブロックアドレス及びブロックステータス等の付加データが記憶される領域である。
【００３２】
エラ―コレクションコードは、ユーザ領域に記憶されているデータに含まれる誤りを検出、訂正するための付加データであり、コントローラ３によって生成される。対応論理ブロックアドレスは、そのブロックにデータが格納されている場合に、そのブロックがどの論理ブロックアドレスに対応するかを示している。
【００３３】
尚、そのブロックにデータが格納されていない場合は、対応論理ブロックアドレスも格納されていないので、対応論理ブロックアドレスが格納されているか否かで、そのブロックが消去済ブロックであるか否かを判断することもできる。つまり、対応論理ブロックアドレスが格納されていない場合は、消去済ブロックであると判断される。
【００３４】
ブロックステータスは、そのブロックが不良ブロック（正常にデータの書込み等を行うことができないブロック）であるか否かを示すフラグであり、そのブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。
【００３５】
ここで、ＮＡＮＤ型フラッシュメモリの回路構成について説明する。
一般的なＮＡＮＤ型フラッシュメモリは、書込みデータ若しくは読出しデータを保持するためのレジスタと、データを記憶するメモリセルアレイによって構成されている。メモリセルアレイは、複数のメモリセルが直列に接続されたメモリセル群を複数備えており、ワード線によってメモリセル群の特定のメモリセルが選択される。このワード線によって選択されたメモリセルとレジスタの間で、データの複写（レジスタからメモリセルへの複写、若しくはメモリセルからレジスタへの複写）が行われる。
【００３６】
メモリセルアレイを構成する各メモリセルは、２つのゲートを備えたＭＯＳトランジスタで構成されている。ここで、上側のゲートはコントロールゲートと呼ばれ、下側のゲートはフローティングゲートと呼ばれており、フローティングゲートに電荷（電子）を注入若しくはフローティングゲートから電荷（電子）を排出することによって、データの書込み若しくはデータの消去を行っている。
【００３７】
そのフローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。尚、フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧を印加して電子を注入し、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧を印加して電子を排出する。
【００３８】
フローティングゲートに電子が注入されている状態（書込状態）が、論理値の「０」のデータに対応し、フローティングゲートから電子が排出されている状態（消去状態）が、論理値の「１」のデータに対応する。
【００３９】
フラッシュメモリ２を制御するメモリコントローラ３は、ホストインターフェース制御ブロック５と、マイクロプロセッサ６と、ホストインターフェースブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリインターフェースブロック１０と、ＥＣＣ（エラーコレクションコード）ブロック１１と、フラッシュメモリシーケンサブロック１２とから構成される。
【００４０】
これら機能ブロックによって構成されるコントローラ３は、一つの半導体チップ上に集積されている。以下に各ブロックの機能を説明する。
マイクロプロセッサ６は、コントローラ３を構成する各機能ブロック全体の動作を制御する機能ブロックである。
【００４１】
ホストインターフェース制御ブロック５は、ホストインターフェースブロック７の動作を制御する機能ブロックである。ここで、ホストインターフェース制御ブロック５は、ホストインターフェースブロック７の動作を設定する動作設定レジスタ（図示せず）を備えており、この動作設定レジスタに基づき、ホストインターフェースブロック７は動作する。
【００４２】
ホストインターフェースブロック７は、ホストシステム４との間でデータ、アドレス情報、ステータス情報及び外部コマンド情報の授受を行う機能ブロックである。すなわち、フラッシュメモリシステム１がホストシステム４に装着されると、フラッシュメモリシステム１とホストシステム４とは、外部バス１３を介して相互に接続され、かかる状態において、ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホストインターフェースブロック７を入口としてコントローラ３の内部に取り込まれる。又、フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホストインターフェースブロック７を出口としてホストシステム４に供給される。
【００４３】
さらに、ホストインターフェースブロック７は、ホストシステム４より供給されるホストアドレス及び外部コマンドを一時的に格納するタスクファイルレジスタ（図示せず）及びエラーが発生した場合にセットされるエラーレジスタ（図示せず）等を有している。
【００４４】
ワークエリア８は、フラッシュメモリ２の制御に必要なデータが一時的に格納される作業領域であり、複数のＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）セルによって構成される機能ブロックである。
【００４５】
バッファ９は、フラッシュメモリ２から読出したデータ及びフラッシュメモリ２に書込むデータを一時的に保持する機能ブロックである。すなわち、フラッシュメモリ２から読出したデータは、ホストシステム４の受取準備ができるまでバッファ９に保持され、フラッシュメモリ２に書込むデータは、フラッシュメモリ２の書込準備ができるまでバッファ９に保持される。
【００４６】
フラッシュメモリシーケンサブロック１２は、内部コマンドに基づきフラッシュメモリ２の動作を制御する機能ブロックである。フラッシュメモリシーケンサブロック１２は、複数のレジスタ（図示せず）を備え、この複数のレジスタに内部コマンドを実行する際に必要な情報が設定される。この複数のレジスタに内部コマンドを実行する際に必要な情報が設定されると、フラッシュメモリシーケンサブロック１２は、その情報に基づいて処理を実行する。ここで、「内部コマンド」とは、コントローラ３からフラッシュメモリ２に与えられるコマンドであり、ホストシステム４からフラッシュメモリシステム１に与えられるコマンドである「外部コマンド」と区別される。
【００４７】
フラッシュメモリインターフェースブロック１０は、内部バス１４を介して、フラッシュメモリ２とデータ、アドレス情報、ステータス情報、内部コマンド情報及びデバイスＩＤ情報等の授受を行う機能ブロックである。
【００４８】
ＥＣＣブロック１１は、フラッシュメモリ２に書込むデ―タに付加されるエラーコレクションコードを生成するとともに、読出データに付加されたエラーコレクションコードに基づいて、読出したデータに含まれる誤りを検出・訂正する機能ブロックである。
【００４９】
次に、コントローラ３によるフラッシュメモリ２の制御方法を説明する。
本発明に係るフラッシュメモリシステム１では、互いに異なるチップ内のフラッシュメモリ２のブロックを関連付け、関連付けられたブロックのうちの１つに、パリティーデータを記憶させる。以下の説明で、互いに関連付けられたブロックの集合体を、グループと言う。
【００５０】
図３は、フラッシュメモリ２の構成例を示す図である。
図３のように、４つのチップ０〜３でフラッシュメモリ２を構成すると、各チップ０〜３内では、１０２４個のブロックを１つのゾーンとして取扱い、フラッシュメモリ２内の記憶領域をゾーン単位でホストシステム４のアドレス空間に割当てている。不良ブロックの発生等を考慮して、各チップ０〜３の持つ記憶領域のゾーン０，１，２，…に、それぞれ最大で１０００ブロック分のデータが記憶されるように設定すれば、フラッシュメモリ２内のチップ０の記憶領域のゾーン０、チップ１の記憶領域のゾーン０、チップ２の記憶領域のゾーン０、及びチップ３の記憶領域のゾーン０には、総計で４０００ブロック分のデータが記憶される。
【００５１】
図３に示したように、４つのチップでフラッシュメモリ２を構成した場合、ユーザデータを記憶させる３つのブロックと、パリティーデータを記憶させる１つのブロックが関連付けられる。
【００５２】
チップ０の記憶領域のゾーン０、チップ１の記憶領域のゾーン０、チップ２の記憶領域のゾーン０、及びチップ３の記憶領域のゾーン０には、３０００ブロック分のユーザデータと１０００ブロック分のパリティーデータが記憶される。従って、チップ０〜３の記憶領域のゾーン０に対して、ホストシステムの３０００ブロック分のアドレス空間が割当てられる。同様に、チップ０〜３のフラッシュメモリ２内のゾーン１に対しても、ホストシステムの３０００ブロック分のアドレス空間が割当てられる。
【００５３】
次に、ユーザデータを記憶させるブロックと、パリティーデータを記憶させるブロックの割当てについて説明する。
図３に示したように４つのチップでフラッシュメモリ２を構成した場合、ユーザデータを記憶させる３つのブロックと、パリティーデータを記憶させる１つブロックとが、１つのグループとして関連付けられる。
【００５４】
１つのグループには、ホストシステム４のアドレス空間における３ブロック分のユーザデータが記憶される。尚、各グループに対するホストシステム４のアドレス空間の割当ては、ブロック単位でホストシステム４のアドレス空間に割当てても良いが、グループ単位で割当てることが好ましい。各グループに対してホストシステム４のアドレス空間を、グループ単位で割当てた場合、１つのグループには、グループ内のブロックに記憶されるユーザデータのデータ容量分の連続したアドレス空間が割当てられる。各グループには、３ブロック分のアドレス空間が割当てられる。
【００５５】
ここで、ホストシステム４のアドレス空間を、１つのグループに割当てられるブロック単位で分割し、分割したアドレス空間に通番を付ければ、１つのグループに対して１つの通番を割当てることができる。以下、１つのグループに割当てられるブロック毎に付けた上記通番を論理通番と言う。
【００５６】
図３に示した３０００ブロック分のアドレス空間を、各グループに割当てられる３ブロック単位に分割し、３ブロック毎に論理通番を付与すれば、この３０００ブロック分のアドレス空間には、０〜９９９の論理通番が付与される。この論理通番を、この論理通番に対応するユーザデータが書込まれるグループのブロックの冗長領域に書込めば、冗長領域に書込まれる論理通番に基づいて、各グループとホストシステム４のアドレス空間との対応関係を判別することができる。又、冗長領域に書込まれる論理通番に基づいて、同一のグループに属するブロックを判別することができる。
【００５７】
図４は、ユーザデータを記憶させるブロックと、パリティーデータを記憶させるブロックの割当てを示している。以下、ユーザデータを記憶させるブロックをユーザデータブロックと言い、パリティーデータを記憶させるブロックをパリティーデータブロックと言う。
【００５８】
図４に示した例では、ユーザデータブロックＵＢとパリティーデータブロックＰＢを、チップ１〜４の各フラッシュメモリに均等に割当てている。論理通番０に対応するグループでは、チップ０のブロックに、パリティーデータブロックＰＢを割当て、論理通番１に対応するグループでは、チップ１のブロックに、パリティーデータブロックＰＢを割当て、論理通番２に対応するグループでは、チップ２のブロックに、パリティーデータブロックＰＢを割当て、論理通番３に対応するグループでは、チップ３のブロックにパリティーデータブロックＰＢを割当てている。以下同様にして、各チップのフラッシュメモリ２に、パリティーデータブロックＰＢを順次割当てている。
【００５９】
各グループにおいてパリティーデータブロックＰＢに割当てられなかった他の３ブロックは、ユーザデータブロックＵＢに割当てられる。尚、パリティーデータブロックＰＢは、チップ１〜４の各フラッシュメモリに均等に割当てることが好ましいが、必ずしも均等に割当てる必要はない。
【００６０】
次に、グループ内の各ブロックに、ページ単位で書込まれるユーザデータとパリティーデータについて説明する。
図５は、同一のグループに属するブロックの各ページに書込まれるデータを示す図である。
【００６１】
図５に示した例では、ホストシステム４から与えられる３ブロック分のユーザデータが、チップ１〜３のブロックに書込まれ、このユーザデータに対応するパリティーデータＰＤが、チップ０のブロックに書込まれる。ここで、ホストシステム４の３ブロック分のアドレス空間に対応するユーザデータをページ単位で分割し、分割した９６ページ分のユーザデータを先頭から順番にＵＤ０〜ＵＤ９５とすれば、チップ１内のブロックのページ０（Ｐ０）にユーザデータＵＤ０が書込まれ、チップ２内のブロックのページ０（Ｐ０）にユーザデータＵＤ１が書込まれ、チップ３内のブロックのページ０（Ｐ０）にユーザデータＵＤ２が書込まれ、チップ０内のブロックのページ０（Ｐ０）にユーザデータＵＤ０〜ＵＤ２に対応するパリティーデータＰＤが書込まれる。
【００６２】
以下同様にして、チップ１、チップ２、チップ３の順番で、ユーザデータＵＤ３以降のデータが順次書込まれ、チップ０内のブロックの各ページには、チップ１〜３の同じページ番号のページに書込まれたユーザデータに対するパリティーデータＰＤが書込まれる。
【００６３】
次に、チップ０〜４のフラッシュメモリの冗長領域に書込まれている論理通番に基づいた、グループの判別と、記憶されているデータがユーザデータであるか、若しくはパリティーデータＰＤであるかの判別について説明する。
【００６４】
図６は、グループ判別及びデータ判別の説明図である。
フラッシュメモリ２を構成するチップ０の記憶領域のゾーン２ａ、チップ１の記憶領域のゾーン２ｂ、チップ２の記憶領域のゾーン２ｃ及びチップ３の記憶領域のゾーン２ｄは、それぞれ１０２４のブロックで構成されている。各ゾーン２ａ〜２ｄ内のブロックに物理ブロックアドレス（フラッシュメモリ２内のブロックアドレス）の順番で０〜１０２３の通番が付けられる。以下、物理ブロックアドレスの順番で付けた通番を物理通番と言う。
【００６５】
図６には、各ゾーン内の各ブロックに書込まれているデータの種別（ユーザデータＵ、パリティーデータＰ、データが書込まれていない状態Ｅ）と、冗長領域に書込まれている論理通番が示されている。
【００６６】
図６に示した例で、ゾーン２ａの物理通番０のブロック、ゾーン２ｂの物理通番２のブロック、ゾーン２ｃの物理通番５のブロック及びゾーン２ｄの物理通番２のブロックには、同一の論理通番００００  ０００１ｂ（２進数）が書込まれているので、ゾーン２ａの物理通番０のブロック、ゾーン２ｂの物理通番２のブロック、ゾーン２ｃの物理通番５のブロック及びゾーン２ｄの物理通番２のブロックは、同一のグループに属していることが分かる。更に、図４に示した規則に従ってユーザデータＵとパリティーデータＰが書込まれていれば、冗長領域に書込まれている論理通番に基づいて、チップ０、チップ２、チップ３にユーザデータが書込まれ、チップ１にパリティーデータが書込まれていることが分かる。
【００６７】
尚、各ブロックの冗長領域に、記憶されているデータがユーザデータＵであるか、若しくはパリティーデータＰであるかを示す情報を設定してもよい。例えば、特定のビットを、データの種別を示すビットに割当て、このビットの論理値でユーザデータＵであるか、若しくはパリティーデータＰであるかを示してもよい。
【００６８】
次に、ユーザデータに基づいて設定されるパリティーデータＰＤについて説明する。
図７は、パリティーデータＰＤの説明図であり、各チップ０〜３の記憶領域のブロックにそれぞれ書込まれる連続した１バイト分のユーザデータＵＤ０〜ＵＤ２とそれに対応するパリティーデータＰＤとを示している。
【００６９】
各データＵＤ０〜ＵＤ２，ＰＤは、ｂ０が最下位ビットで、ｂ７が最上位ビットになっている。つまり、ユーザデータＵＤ０は、０１０１  ０１１０ｂ（２進数）に対応し、ユーザデータＵＤ１は、０００１  ０１００ｂ（２進数）に対応し、ユーザデータＵＤ２は、００００  １１１０ｂ（２進数）に対応する。
パリティーデータＰＤの値は、ユーザデータＵＤ０、ユーザデータＵＤ１、ユーザデータＵＤ２及びパリティーデータＰＤの対応するビットの論理値"１"の総数が、偶数若しくは奇数になるように設定される。ここでは、論理値"１"の総数が、偶数になるようにパリティーデータＰＤの値を設定している。ユーザデータＵＤ０〜ＵＤ２のｂ０は、"０"、"０"、"０"であり、論理値"１"の総数が０個なので、パリティーデータＰＤのｂ０の論理値は、"０"に設定される。ユーザデータＵＤ０〜２のｂ１は、"１"、"０"、"１"であり、論理値"１"の総数が２個なので、パリティーデータＰＤのｂ１の論理値は、"０"に設定される。
【００７０】
ユーザデータＵＤ０〜２のｂ２は、"１"、"１"、"１"であり、論理値"１"の総数が３個なので、パリティーデータＰＤのｂ２の論理値は、"１"に設定される。ユーザデータＵＤ０〜２のｂ３は、"０"、"０"、"１"であり、論理値"１"の総数が１個なので、パリティーデータＰＤのｂ３の論理値は、"１"に設定される。ユーザデータＵＤ０〜２のｂ４は、"１"、"１"、"０"であり、論理値"１"の総数が２個なので、パリティーデータＰＤのｂ４の論理値は、"０"に設定される。
【００７１】
ユーザデータＵＤ０〜２のｂ５は、"０"、"０"、"０"であり、論理値"１"の総数が０個なので、パリティーデータＰＤのｂ５の論理値は、"０"に設定される。ユーザデータＵＤ０〜２のｂ６は、"１"、"０"、"０"であり、論理値"１"の総数が１個なので、パリティーデータＰＤのｂ６の論理値は、"１"に設定される。ユーザデータＵＤ０〜２のｂ７は、"０"、"０"、"０"であり、論理値"１"の総数が０個なので、パリティーデータＰＤのｂ７の論理値は、"０"に設定される。
従って、ユーザデータＵＤ０〜２に対応するパリティーデータＰＤは、０１００  １１００ｂ（２進数）になる。
【００７２】
設定されたパリティーデータＰＤは、ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）を用いて、ビットエラーが検出され、そのエラーがＥＣＣに基づいて訂正することができる許容範囲を超えている場合に使用される。例えば、ユーザデータＵＤ０を読出したときに、マイクロプロセッサ６が、ＥＣＣに基づいてビットエラーを検出し、そのエラーがＥＣＣに基づいて訂正することができる許容範囲を超えていた場合は、ユーザデータＵＤ１、ユーザデータＵＤ２及びパリティーデータＰＤに基づいて、論理値"１"の総数が偶数になるようにユーザデータＵＤ０の各ビットの値を訂正する。
ＥＣＣを用いたエラー検出及び訂正では、ページのユーザデータに対して、１ビット或いは２ビットしか検出及び訂正の能力がなかったが、本実施形態のように、パリティーデータを用いたエラーの検出と訂正を実施することにより、ユーザデータＵＤ０の全てのビットのエラー検出とその訂正が可能になり、精度及び能力が向上する。
【図面の簡単な説明】
【００７３】
【図１】本発明の実施形態に係るフラッシュメモリシステムを概略的に示すブロック図である。
【図２】ブロックとページの関係を示す説明図である。
【図３】フラッシュメモリの構成例を示す図である。
【図４】ユーザデータを記憶させるブロックとパリティーデータを記憶させるブロックの割当てを示す図である。
【図５】同一のグループに属するブロックの各ページに書込まれるデータを示す図である。
【図６】グループ判別及びデータ判別の説明図である。
【図７】パリティーデータの説明図である。
【符号の説明】
【００７４】
１  フラッシュメモリシステム
２  フラッシュメモリ
３  コントローラ
４  ホストシステム
５  ホストインターフェース制御ブロック
６  マイクロプロセッサ
７  ホストインターフェースブロック
８  ワークエリア
９  バッファ
１０  フラッシュメモリインターフェースブロック
１１  ＥＣＣブロック
１２  フラッシュメモリシーケンサブロック
１３  外部バス
１４  内部バス
【図１】
2006018373.tif 000003
【図２】
2006018373.tif 000004
【図３】
2006018373.tif 000005
【図４】
2006018373.tif 000006
【図５】
2006018373.tif 000007
【図６】
2006018373.tif 000008
【図７】
2006018373.tif 000009