(57)【要約】【課題】  フラッシュメモリの摩耗度を平準化するフラッシュメモリ装置およびフラッシュメモリプログラミング方法を提供する。【解決手段】  メモリセルアレイと、データページ内の「１」および「０」の個数に基づいて前記データページを反転または反転しないことによって、プログラミングページを生成する反転決定部と、前記生成されたプログラミングページを前記メモリセルアレイに格納するプログラミング部と、前記メモリセルアレイに格納されたプログラミングページを読み出し、前記読み出したプログラミングページのエラー有無に応じて、前記プログラミングページから前記データページを復元して出力するデータ判定部を含むことを特徴とし、これによってメモリセルの摩耗度の平準化が可能になる。【選択図】  図４
2011508358.tif 000002
【特許請求の範囲】
【請求項１】
メモリセルアレイと、
データページ内の「１」および「０」の個数に基づいて、前記データページを反転するか否かによって、プログラミングページを生成する反転決定部と、
前記生成されたプログラミングページを、前記メモリセルアレイに記憶するプログラミング部と、
前記メモリセルアレイに記憶されたプログラミングページを読み出し、前記読み出したプログラミングページのエラーの有無に応じて、前記プログラミングページから前記データページを復元して出力するデータ判定部と、
を含むことを特徴とするメモリ装置。
【請求項２】
前記反転決定部は、前記データページ内の「０」が「１」よりも多ければ、前記データページを反転してプログラミングページを生成することを特徴とする請求項１に記載のメモリ装置。
【請求項３】
前記反転決定部は、前記プログラミング部がプログラミングページを記憶する間に、前記メモリセルアレイ内で閾値電圧が変化するメモリセルが、閾値電圧が変化しないメモリセルよりも少なくなるように、前記データページの反転の有無を決定することを特徴とする請求項１に記載のメモリ装置。
【請求項４】
前記データ判定部は、前記読み出したプログラミングページにエラーがあれば、前記読み出したプログラミングページを反転して、前記データページを復元することを特徴とする請求項１に記載のメモリ装置。
【請求項５】
前記データ判定部は、前記読み出したプログラミングページを、エラー訂正コード（ＥＣＣ）復号化、もしくは、パリティチェックすることで、前記エラーの有無を判定することを特徴とする請求項１に記載のメモリ装置。
【請求項６】
前記メモリセルアレイに、前記データページが反転され、前記プログラミングページが生成されたか否かの情報が記憶されていないことを特徴とする請求項１に記載のメモリ装置。
【請求項７】
メモリセルアレイと、
データページを複数のデータサブページに分割するページ分割部と、
前記各データサブページ内の「１」および「０」の個数に基づいて、前記各データサブページを反転するか否かによって、前記各データサブページに対応する各プログラミングページを生成する反転決定部と、
前記生成された各プログラミングページを、前記メモリセルアレイに記憶するプログラミング部と、
を含むことを特徴とするメモリ装置。
【請求項８】
前記プログラミング部は、前記各データサブページの反転の有無に関する反転フラグを前記メモリセルアレイに記憶することを特徴とする請求項７に記載のメモリ装置。
【請求項９】
前記メモリセルアレイに記憶された各プログラミングページおよび反転フラグを読み出し、前記読み出した反転フラグに応じて、前記データページを復元して出力するデータ判定部をさらに含むことを特徴とする請求項８に記載のメモリ装置。
【請求項１０】
前記メモリセルアレイに記憶された各プログラミングページを読み出し、前記読み出し
た各プログラミングページのエラー有無に応じて、前記各プログラミングページから各データサブページを復元し、前記復元された各データサブページを結合してデータページを復元して出力するデータ判定部を含むことを特徴とする請求項７に記載のメモリ装置。
【請求項１１】
前記データ判定部は、前記読み出した各プログラミングページにエラーがあれば、前記読み出した各プログラミングページを反転して、前記各データサブページを復元することを特徴とする請求項１０に記載のメモリ装置。
【請求項１２】
前記データ判定部は、前記読み出した各プログラミングページを、エラー訂正コード（ＥＣＣ）復号化、もしくは、パリティチェックすることで、前記エラーの有無を判定することを特徴とする請求項１０に記載のメモリ装置。
【請求項１３】
前記反転決定部は、前記各データサブページ内の「０」が「１」よりも多ければ、前記各データサブページを反転してプログラミングページを生成することを特徴とする請求項７に記載のメモリ装置。
【請求項１４】
前記反転決定部は、前記プログラミング部が各プログラミングページを記憶する間に、前記メモリセルアレイ内で閾値電圧が変化するメモリセルが、閾値電圧が変化しないメモリセルよりも少なくなるように、前記各データサブページの反転の有無を決定することを特徴とする請求項７に記載のメモリ装置。
【請求項１５】
データページ内の「１」および「０」の個数に基づいて、前記データページの反転の有無を決定するステップと、
前記決定されたデータページの反転の有無に応じて、前記データページからプログラミングページを生成するステップと、
前記生成されたプログラミングページを、メモリセルアレイに記憶するステップと、
前記メモリセルアレイに記憶されたプログラミングページを読み出すステップと、
前記読み出したプログラミングページのエラーの有無に応じて、前記読み出したプログラミングページの反転の有無を決定するステップと、
前記決定された読み出したプログラミングページの反転の有無に応じて、前記読み出したプログラミングページからデータページを復元するステップと、
を含むことを特徴とするメモリプログラミング方法。
【請求項１６】
前記データページからプログラミングページを生成するステップにおいて、前記データページ内の「０」が「１」よりも多ければ、前記データページを反転するように決定することを特徴とする請求項１５に記載のメモリプログラミング方法。
【請求項１７】
前記読み出したプログラミングページの反転の有無を決定するステップにおいて、前記読み出したプログラミングページにエラーがあれば、前記読み出したプログラミングページを反転するように決定することを特徴とする請求項１５に記載のメモリプログラミング方法。
【請求項１８】
データページを複数のデータサブページに分割するステップと、
前記各データサブページ内の「１」および「０」の個数に基づいて、前記各データサブページの反転の有無を決定するステップと、
前記決定された各データサブページの反転の有無に応じて、前記各データサブページから各データサブページに対応する各プログラミングページを生成するステップと、
前記生成された各プログラミングページを、メモリセルアレイに記憶するステップと、を含むことを特徴とするメモリプログラミング方法。
【請求項１９】
前記各データサブページの反転の有無に関する反転フラグを、前記メモリセルアレイに記憶するステップと、
前記メモリセルアレイに記憶された各プログラミングページおよび反転フラグを読み出すステップと、
前記読み出した反転フラグに応じて、前記読み出した各プログラミングページを反転するか否かによって、前記データサブページを復元するステップと、
前記復元されたデータサブページを結合してデータページを復元するステップと、
をさらに含むことを特徴とする請求項１８に記載のメモリプログラミング方法。
【請求項２０】
前記メモリセルアレイに記憶された各プログラミングページを読み出すステップと、
前記読み出した各プログラミングページのエラーの有無に応じて、前記読み出した各プログラミングページの反転の有無を決定するステップと、
前記決定された読み出した各プログラミングページの反転の有無に応じて、前記読み出した各プログラミングページから各データサブページを復元するステップと、
前記復元されたデータサブページを結合してデータページを復元するステップと、
を含むことを特徴とする請求項１８に記載のメモリプログラミング方法。
【請求項２１】
請求項１５から２０のいずれかに記載の方法を実行するためのプログラムが記録されていることを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はフラッシュメモリ装置に関し、特に、フラッシュメモリの摩耗度を平準化するフラッシュメモリ装置およびフラッシュメモリプログラミング方法に関する。
【背景技術】
【０００２】
フラッシュメモリは、集積度が高くて衝撃に強く、低電力で動作可能な不揮発性メモリ素子であり、携帯端末や組み込みシステム（embedded system）などのみならずＰＣやサーバで使われるハードディスクに替わるストレージ媒体として近年注目を浴びている。
【０００３】
フラッシュメモリは、ハードディスクのような一般的なブロック装置とは異なり、一度記憶されたデータを新しい値で更新するためには、まずは該当の位置を消去する動作が必要となる。
【０００４】
すなわち、フラッシュメモリの書き込み動作は、すべてのメモリセルが「１」の値に初期化された状態で、必要なメモリセルを「０」の値に変更することからなる。このように、記憶されたデータを新しい値に更新するためには、該当位置のすべてのセルを「１」の値に初期化した後に、再び、書き込み動作が行われる。
【０００５】
このとき、読み出し動作および書き込み動作は、ページ単位で行われる。フラッシュメモリのページとは、物理的に連続したアドレスを有するバイト（byte）のことを指す。消去動作は、読み出し動作および書き込み動作とは異なり、ブロック単位で行われる。フラッシュメモリのブロックとは、物理的に連続した複数個のページのことを指す。現在の実施形態では、ページの大きさは５１２Ｂ〜４ＫＢであり、ブロックの大きさは１６ＫＢ〜５１２ＫＢである。
【０００６】
現在の実施形態では、例えば、フラッシュメモリのページは主領域と補助領域に分けられており、主領域にはデータが記憶され、補助領域には、主領域に記憶されたデータと関連する情報と、ページに関連する情報が記憶される。補助領域に記憶される情報をメタ情報という。メタ情報としては、例えば、巡回冗長検査（ＣＲＣ：Cyclic Redundancy Check）情報、またはエラー訂正コード（ＥＣＣ：Error Correction Codes）情報などがある。ＣＲＣまたはＥＣＣは、書き込み動作や読み出し動作の過程におけるエラー有無を検出したり、ページの物理的な損傷の有無を判定したりするために用いることができる。
【０００７】
フラッシュメモリの読み出し、書き込み、消去動作は、すべてデータを記憶するメモリセルに電気的なストレスを加えて微細な摩耗を引き起こす。このため、長時間使用することにより、メモリセルが正常に「０」および「１」を区別することができない状態に至ることになる。
【０００８】
書き込み動作および消去動作が引き起こす摩耗の大きさは、読み出し動作が引き起こす摩耗の大きさよりも極めて大きいため、フラッシュメモリの寿命を延ばすためには、可能な限り１つのメモリセルで発生する書き込みおよび消去動作の回数を減らす摩耗度の平準化を必要とする。
【０００９】
摩耗度を平準化するための従来の発明としては、消去動作の単位であるブロックレベルにおける摩耗度の平準化方法である。すなわち、消去動作の単位であるブロックごとに消去動作の回数を記録して、消去動作の回数が一定の数以下に維持されるようにフラッシュ
メモリを管理する方法が提案されている。このような従来のフラッシュメモリの摩耗度の平準化方法は、１つのブロックに属するすべてのメモリセルが同一のレベルの摩耗度を有すると仮定して、メモリセルのレベルにおいてそれぞれの摩耗度の差を考慮することができなかった。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、新しいプログラミング技法を用いることによって、メモリセルの寿命を延ばすことができる装置および方法を提供することを目的とする。
また、本発明は、新しいデータ検出技法を用いることによって、メモリセルのレベルで摩耗度を平準化することができる装置および方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述するような本発明の目的を達成するために、発明されたものであって、本発明のメモリ装置は、メモリセルアレイと、
データページ内の「１」および「０」の個数に基づいて、前記データページを反転するか否かによって、プログラミングページを生成する反転決定部と、
前記生成されたプログラミングページを、前記メモリセルアレイに記憶するプログラミング部と、
前記メモリセルアレイに記憶されたプログラミングページを読み出し、前記読み出したプログラミングページのエラーの有無に応じて、前記プログラミングページから前記データページを復元して出力するデータ判定部と、
を含むことを特徴とする。
【００１２】
また、本発明のメモリ装置は、メモリセルアレイと、
データページを複数のデータサブページに分割するページ分割部と、
前記各データサブページ内の「１」および「０」の個数に基づいて、前記各データサブページを反転するか否かによって、前記各データサブページに対応する各プログラミングページを生成する反転決定部と、
前記生成された各プログラミングページを、前記メモリセルアレイに記憶するプログラミング部と、
を含むことを特徴とする。
【００１３】
また、本発明のメモリプログラミング方法は、データページ内の「１」および「０」の個数に基づいて、前記データページの反転の有無を決定するステップと、
前記決定されたデータページの反転の有無に応じて、前記データページからプログラミングページを生成するステップと、
前記生成されたプログラミングページを、メモリセルアレイに記憶するステップと、
前記メモリセルアレイに記憶されたプログラミングページを読み出すステップと、
前記読み出したプログラミングページのエラーの有無に応じて、前記読み出したプログラミングページの反転の有無を決定するステップと、
前記決定された読み出したプログラミングページの反転の有無に応じて、前記読み出したプログラミングページからデータページを復元するステップと、
を含むことを特徴とする。
【００１４】
また、本発明のメモリプログラミング方法は、データページを複数のデータサブページに分割するステップと、
前記各データサブページ内の「１」および「０」の個数に基づいて、前記各データサブページの反転の有無を決定するステップと、
前記決定された各データサブページの反転の有無に応じて、前記各データサブページか
ら各データサブページに対応する各プログラミングページを生成するステップと、
前記生成された各プログラミングページを、メモリセルアレイに記憶するステップと、を含むことを特徴とする。
【図面の簡単な説明】
【００１５】
【図１】図１は、本発明の一実施形態におけるフラッシュメモリ装置を示す。
【図２】図２は、本発明の別の実施形態におけるフラッシュメモリ装置を示す。
【図３】図３は、本発明の別の実施形態におけるメモリセルアレイを示す。
【図４】図４は、本発明の別の実施形態におけるフラッシュメモリ装置で実行されるメモリプログラミング方法を示す。
【図５】図５は、図４のフラッシュメモリ装置で実行されるメモリプログラミング方法を示す動作フローチャートである。
【図６】図６は、本発明のさらなる別の実施形態におけるメモリ読み出し方法を示す動作フローチャートである。
【図７】図７は、本発明の別の実施形態におけるフラッシュメモリ装置で実行されるメモリプログラミング方法を示す。
【図８】図８は、本発明の別の実施形態におけるメモリ読み出し方法を示す動作フローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明にかかる好適な実施形態について図面を参照して詳細に説明するが、本発明が実施形態によって制限されたり限定されたりすることはない。各図面に記された同一の参照符号は同一の部材を示す。
【００１７】
消去動作の対象となるブロック内のすべてのフラッシュメモリセルに同一程度の摩耗が生じることはない。消去動作は、該当ブロック内のすべてのメモリセルを「１」の値に初期化する動作である。消去動作が実行されるブロック内には「０」から「１」に値が変更されるメモリセルと、値の変更なく「１」の状態で残っているメモリセルが存在する。この場合、書き込み動作によってまず「１」から「０」に変更され、消去動作によって再び「０」から「１」に変更されたメモリセルは、「１」の状態で残っていたメモリセルに比べて生じる摩耗の程度は極めて大きい。
【００１８】
したがって、書き込み動作および消去動作が繰り返される状況では、「１」の状態で残っているメモリセルの個数が多いほど該当のブロックの摩耗度は低くなり、その結果、フラッシュメモリ装置全体として寿命が延びることになる。
【００１９】
本発明のフラッシュメモリ装置は、各メモリセルに対して摩耗度を最小化する方法を提供し、フラッシュメモリ全体として寿命を延ばすことができる。
本発明のフラッシュメモリ装置は、書き込み動作の対象となるページ内に「０」の値を有するビットの個数が、「１」の値を有するビットの個数よりも多い場合、「０」および「１」の値を反転して記憶することによって、「０」の値に変更されるメモリセルの個数を最小化することができる。
【００２０】
図１は、本発明の一実施形態におけるフラッシュメモリ装置１００を示す。
図１に示すように、フラッシュメモリ装置１００は、メモリセルアレイ１１０、プログラミング部１２０、反転決定部１３０、およびデータ判定部１４０を含んでいる。
【００２１】
メモリセルアレイ１１０は、ページ１１１を含んでもよい。
プログラミング部１２０、反転決定部１３０、およびデータ判定部１４０のそれぞれは、フラッシュメモリ装置１００の周辺回路に含まれていてもよく、また、フラッシュメモリ装置１００の所定のコンピュータシステムのコントローラに含まれていてもよい。
【００２２】
反転決定部１３０は、データページ内の「１」および「０」の個数に基づいて、データページを反転するか否かによって、プログラミングページを生成する。
本明細書において、フラッシュメモリ装置１００のコントローラ（図示せず）で、ハンドリングするデータとして同時にプログラムされる単位をデータページという。また、メモリアレイ１１０のページ１１１に物理的にプログラムされるデータとして同時にプログラムされる単位をプログラミングページという。
【００２３】
本明細書で用いられる「データページ」および「プログラミングページ」は、前述するような機能と用途に特定されるべきであり、名称によって権利範囲が制限されることはない。
【００２４】
反転決定部１３０は、データページ内の「０」が「１」よりも多ければ、データページを反転してプログラミングページを生成してもよい。一方で、反転決定部１３０は、データページ内の「０」が「１」よりも少なければ、データページを反転せずにプログラミングページを生成してもよい。
【００２５】
本明細書において詳細に記載されないが、メモリセルアレイ１１０に物理的にプログラムされる過程が「０」から「１」に変化する過程であってもよい。このような場合、反転決定部１３０は、データページ内の「１」が「０」よりも多ければ、データページを反転してプログラミングページを生成してもよい。
【００２６】
本発明のフラッシュメモリ装置１００は、メモリセルの摩耗度を減らすために発明されたものであって、物理的なプログラム過程に対応して反転決定部１３０の動作を変更して適用することは、当業者であれば自明である。
【００２７】
プログラミング部１２０は、生成されたプログラミングページをメモリセルアレイ１１０内のページ１１１に記憶する。
このとき、プログラミング部１２０のデータ記憶過程は、ページ１１１内の各メモリセルに高電圧を一定時間印加する過程であってもよい。このような高電圧の印加過程は、各メモリセルにストレスを加えることになり、各メモリセルに物理的な損傷が生じることになる。
【００２８】
プログラミング部１２０のデータ記憶過程は、ページ１１１内の各メモリセルの閾値電圧を変化させる過程であってもよい。このようなデータの記憶過程は、各メモリセルの摩耗度を増加させる恐れがあるため、閾値電圧が変化するメモリセルの数が減少する方向にデータの格納過程を調整することが好ましい。
【００２９】
本実施形態の反転決定部１３０は、プログラミング部１２０のデータの記憶過程において、ページ１１１内のメモリセルの中で閾値電圧が変化するメモリセルの数が、閾値電圧が変化しないメモリセルの数よりも少なくなるようにデータページの反転の有無を決定し
てもよい。
【００３０】
フラッシュメモリ装置１００は、このような構成によってページ１１１内のメモリセルのストレスを減らすことで、メモリセルの摩耗度およびメモリセルに対する物理的な損傷を減らすことができる。
【００３１】
フラッシュメモリ装置１００は、反転決定部１３０がデータページを反転したか否かに関する情報をメモリセルアレイ１１０に記憶しなくてもよい。
データ判定部１４０は、メモリセルアレイ１１０内のページ１１１に記憶されたプログラミングページを読み出す。データ判定部１４０は、読み出したプログラミングページのエラー有無に応じて、プログラミングページからデータページを復元して出力する。
【００３２】
データ判定部１４０は、読み出したプログラミングページにエラーがあれば、読み出したプログラミングページを反転してデータページを復元してもよい。メモリセルアレイ１１０に、データページとプログラミングページとの関係に関する情報が記憶されていなかった場合、データ判定部１４０は、データページが反転されないままプログラミングページとして生成されたと仮定し、読み出したプログラミングページに対するエラー検査を行ってもよい。データ判定部１４０は、読み出したプログラミングページにエラーがあれば、読み出したプログラミングページに対する仮定が間違っていると判断することができる。データ判定部１４０は、読み出したプログラミングページにエラーがあれば、データページが反転してプログラミングページとして生成されたと仮定し、読み出したプログラミングページを反転してデータページを復元して出力してもよい。
【００３３】
アプリケーションによっては、メモリセルアレイ１１０に「０」が記憶される頻度が、「１」が記憶される頻度よりも多くなってもよい。この場合、データ判定部１４０は、データページが反転してプログラミングページとして生成されたと仮定し、読み出したプログラミングページを反転してエラー検査を実行してもよい。
【００３４】
データ判定部１４０が読み出したプログラミングページに対するエラー検査を実行する方法は、読み出したプログラミングページに含まれたエラー訂正コード（ＥＣＣ）からエラーを検査したり、読み出したプログラミングページをＥＣＣ復号化したり、読み出したプログラミングページに含まれたパリティを検査する方法であってもよい。
【００３５】
フラッシュメモリ装置１００は、データページの反転の有無に対する別の情報をメモリセルアレイ１１０に記憶せず、データページの復元過程において、既にデータページに含まれているＥＣＣやパリティを用いるため、データの記憶空間に対するオーバーヘッドを減らすことができる。
【００３６】
図２は、本発明の別の実施形態におけるフラッシュメモリ装置２００を示す。
図２に示すように、フラッシュメモリ装置２００は、メモリセルアレイ２１０、プログラミング部２２０、反転決定部２３０、およびページ分割部２４０を含む。
【００３７】
メモリセルアレイ２１０は、ページ２１１を含んでいてもよい。
プログラミング部２２０、反転決定部２３０、およびページ分割部２４０のそれぞれは、フラッシュメモリ装置２００の周辺回路に含まれていてもよく、また、フラッシュメモリ装置２００のコントローラに含まれていてもよい。
【００３８】
ページ分割部２４０は、データページを複数のデータサブページに分割する。
反転決定部２３０は、各データサブページに対して反転の有無を決定する。反転決定部２３０は、各データサブページ内の「１」および「０」の個数に基づいて、各データサブ
ページを反転するか否かによって、各データサブページに対応する各プログラミングページを生成する。
【００３９】
図２には、ページ分割部２４０が１つのデータページを４個のデータサブページに分割する実施形態が示されている。
反転決定部２３０は、４個の各データサブページに対して反転の有無を決定する。
【００４０】
プログラミング部２２０は、データサブページが反転してプログラミングページが生成されたか否かに関する反転フラグをメモリセルアレイ２１０に記憶してもよい。反転フラグは、各データサブページに対して生成されてもよい。プログラミング部２２０は、ページ２１１内の補助領域に反転フラグを記憶してもよい。
【００４１】
反転決定部２３０は、各データサブページに対して反転有無を決定してもよい。反転決定部２３０は、第１データサブページ内の「０」が「１」よりも多ければ、第１データサブページを反転して第１プログラミングページを生成し、第２データサブページ内の「０」が「１」よりも多くなければ、第２データサブページを反転せずに第２プログラミングページを生成してもよい。
【００４２】
プログラミング部２２０のデータの記憶過程は、ページ２１１内の各メモリセルの閾値電圧を変化させる過程であってもよい。このとき、反転決定部２３０は、プログラミング部２２０のデータの記憶過程において、ページ２１１内のメモリセルの中で閾値電圧の変化するメモリセルの数が、閾値電圧の変化しないメモリセルの数よりも少なくなるようにデータページの反転の有無を決定してもよい。
【００４３】
フラッシュメモリ装置２００は、データ判定部（図示せず）をさらに含んでもよい。データ判定部は、メモリセルアレイ２１０内のページ２１１に記憶された各プログラミングページを反転するか否かによって、各データサブページを復元してもよい。データ判定部は、復元されたデータサブページを結合してデータページを復元してもよい。
【００４４】
フラッシュメモリ装置２００は、更なる別の実施形態としてデータ判定部（図示せず）を含んでもよい。データ判定部は、メモリセルアレイ２１０内のページ２１１に記憶された各プログラミングページを読み出してもよい。データ判定部は、読み出した各プログラミングページのエラーの有無に応じて、各プログラミングページから各データサブページを復元してもよい。データ判定部は、復元されたデータサブページを結合してデータページを復元してもよい。このとき、フラッシュメモリ装置２００は、各データサブページの反転の有無と関連する情報をメモリセルアレイ２１０に記憶していなくてもよい。データ判定部は、読み出した各プログラミングページに対して反転の有無を決定してもよい。すなわち、第１の読み出したプログラミングページにエラーがあれば、第１の読み出したプログラミングページを反転して第１のデータサブページを生成し、第２の読み出したプログラミングデータにエラーがなければ、第２の読み出したプログラミングページを反転せずに第２のデータサブページを生成してもよい。データ判定部は、読み出した各プログラミングページをＥＣＣ復号化したり、読み出した各プログラミングページのパリティをチェックしたりしてエラーの有無を判定してもよい。
【００４５】
本発明の更なる別のフラッシュメモリ装置（図示せず）は、ページの補助領域にメタ情報の１つとしてＥＣＣまたはパリティを記憶した場合に、領域ごとに反転情報を記憶しなくとも読み出し動作において、ページの反転の有無を判断して正常なデータに復元することができる。
【００４６】
図３は、本発明の別の実施形態におけるメモリセルアレイを示す。
図３に示すように、メモリセルアレイは（Ｎ＋１）個のブロックを含む。
メモリセルアレイは、ブロック（０）３１０、ブロック（１）３２０、ないし、ブロック（Ｎ）３４０のブロックを含む。各ブロックは、消去動作が実行される単位である。
【００４７】
各ブロックはＭ個のページを含む。
図３には、ページ（０）３３１、ページ（１）３３２、ページ（２）３３３、ページ（３）３３４などが示されている。
【００４８】
各ページは、プログラム動作が実行される単位である。
１つのページに記憶されるデータが更新される場合には、ページが含まれたブロック全体が消去されて初期化された後、ページに更新されたデータが記憶される。
【００４９】
図４は、本発明のフラッシュメモリ装置１００で実行されるメモリプログラミング方法を示す。
図４に示すように、初期化されたブロック（Ｋ）４１０は、４個のページを含む。説明を簡単にするために、図４に示すメモリプログラミング方法では、ブロックが既に初期化された状態であると仮定する。
【００５０】
コントローラによって、フラッシュメモリ装置１００に伝送されたデータページは、第１のデータページ４３１および第２のデータページ４４１である。第１のデータページおよび第２のデータページは、それぞれ初期化されたブロック（Ｋ）４１０の第２のページおよび第３のページに対応する。
【００５１】
フラッシュメモリ装置１００は、第１のデータページ４３１内の「０」と「１」の個数を比較する。説明を簡単にするために、第１のデータページ４３１は８ビットであると仮定する。第１のデータページ４３１内には「０」が６個あり、「１」が２個あるため、フラッシュメモリ装置は、第１のデータページ４３１を反転して第１のプログラミングページ４３２を生成する。
【００５２】
フラッシュメモリ装置１００は、第２のデータページ４４１内の「０」と「１」の個数を比較する。第２のデータページ４４１内には「０」が２個あり、「１」が６個あるため、フラッシュメモリ装置は、第２のデータページ４４１を反転せずに第２のプログラミングページ４４２を生成する。
【００５３】
フラッシュメモリ装置１００は、生成された第１のプログラミングページ４３２をブロック（Ｋ）４２０内の第２のページ４２２に記憶し、第２のプログラミングページ４４２を第３のページ４２３に記憶する。
【００５４】
ブロック（Ｋ）４２０内の第１のページ４２１および第４のページ４２４は、初期化された状態のまま維持される。
図５は、図４のフラッシュメモリ装置で実行されるメモリプログラミング方法を示す動作フローチャートである。
【００５５】
図５に示すように、メモリプログラミング方法は、データページ内の「１」および「０」の個数を計数する（Ｓ５１０）。
メモリプログラミング方法は、決定された反転の有無に応じてデータページからプログラミングページを生成してもよい。
【００５６】
データページ内の「０」が「１」よりも多ければ、メモリプログラミング方法は「０」と「１」を反転する（Ｓ５２０）。このとき、メモリプログラミング方法は「０」と「１
」が反転したデータをプログラミングページで生成する。
【００５７】
データページ内の「０」が「１」よりも多くなければ、メモリプログラミング方法はデータページをプログラミングページとして生成してもよい。
メモリプログラミング方法は、生成されたプログラミングページをメモリセルアレイに記憶する（Ｓ５３０）。
【００５８】
図６は、本発明のさらなる別の実施形態におけるメモリ読み出し方法を示す動作フローチャートである。
図６に示すように、メモリ読み出し方法はメモリセルアレイに記憶されたプログラミングページを読み出す（Ｓ６１０）。
【００５９】
メモリ読み出し方法は、読み出したプログラミングページにエラーが検出されたか否かを判定する（Ｓ６２０）。
メモリ読み出し方法は、読み出したプログラミングページのエラー有無に応じて、読み出したプログラミングページの反転の有無を決定してもよい。
【００６０】
メモリ読み出し方法は、決定された反転の有無に応じて、読み出したプログラミングページからデータページを復元してもよい。
読み出したプログラミングページにエラーが検出されれば、メモリ読み出し方法は、読み出したプログラミングページの「０」と「１」を反転する（Ｓ６３０）。
【００６１】
メモリ読み出し方法は、反転したプログラミングページにエラーが検出されたか否かを判定する（Ｓ６４０）。
【００６２】
反転したプログラミングページにエラーが検出されれば、メモリ読み出し方法は、読み出したプログラミングページをエラーとして決定する。このとき、メモリ読み出し方法は、プログラミングページを再び読み出してもよい。
【００６３】
反転したプログラミングページにエラーが検出されなければ、メモリ読み出し方法は、反転したプログラミングページをデータページに復元する。
図７は、本発明のフラッシュメモリ装置２００で実行されるメモリプログラミング方法を示す。
【００６４】
図７に示すように、初期化されたブロック（Ｋ）７１０は、４個のページを含む。説明を簡単にするために、図７に示すメモリプログラミング方法では、ブロックが既に初期化された状態であると仮定する。
【００６５】
コントローラによってフラッシュメモリ装置２００に伝送されたデータページは、初期化されたブロック（Ｋ）７１０の第２のページに対応する。
フラッシュメモリ装置２００は、データページを２つのサブページに分割する。
【００６６】
分割された第１のデータサブページ７３１は、１つの「０」と３つの「１」を含む。フラッシュメモリ装置２００は、第１のデータサブページ７３１を反転させずに、第１のプログラミングサブページ７３３を生成する。
【００６７】
分割された第２のデータサブページ７３２は、３つの「０」と１つの「１」を含む。フラッシュメモリ装置２００は、第２のデータサブページ７３２を反転し、第２のプログラミングサブページ７３４を生成する。
【００６８】
フラッシュメモリ装置２００は、生成された第１のプログラミングサブページ７３３および第２のプログラミングサブページ７３４をブロック（Ｋ）７２０内の第２のページ７２２に記憶する。
【００６９】
ブロック（Ｋ）７２０内の第１のページ７２１、第３のページ７２３、および第４のページ７２４は、初期化された状態のまま維持される。
図８は、フラッシュメモリ装置２００で実行されるメモリ読み出し方法を示す動作フローチャートである。
【００７０】
図８に示すように、メモリ読み出し方法は、メモリセルアレイ２１０からプログラミングページを読み出す（Ｓ８１０）。
メモリ読み出し方法は、プログラミングページの分割領域の個数を計数する（Ｓ８２０）。このとき、プログラミングページの分割に関する情報は、メタ情報としてプログラミングページの補助領域に含まれていてもよい。
【００７１】
メモリ読み出し方法は、読み出したプログラミングページにエラーが検出されるか否かを判定する（Ｓ８３０）。
メモリ読み出し方法は、エラーが検出されなければ、読み出したプログラミングページをデータページに復元して、コントローラに出力してもよい。
【００７２】
メモリ読み出し方法は、エラーが検出されれば、読み出したプログラミングページに対して検査しなかった分割領域の反転の組み合わせが存在するか否かを探索する（Ｓ８４０）。
【００７３】
メモリ読み出し方法は、探索された反転の組み合わせに応じて、分割領域の「０」と「１」を反転する（Ｓ８５０）。
メモリ読み出し方法は、反転したプログラミングページにエラーが検出されるか否かを再び判定する（Ｓ８３０）。
【００７４】
メモリ読み出し方法は、ステップＳ８４０の探索の結果、反転の組み合わせが存在しなければ、読み出したプログラミングページにエラーが含まれていると最終的に決定してもよい。
【００７５】
メモリ読み出し方法は、分割領域の個数がＮ＝２ｋ個であるとき、ｋの値を補助領域のメタ情報として記憶したり、予め決定した値を用いたりしてもよい。メモリ読み出し方法は、ＥＣＣやパリティでページ検査を行ってもよく、検査の結果、エラーがなければ反転した領域がないものと決定してもよい。
【００７６】
Ｎ個の領域に分割された場合、ＥＣＣやパリティを用いたエラー検査は、最大２Ｎ回繰り返してもよく、ハードウェア回路を用いる並列処理が可能である。
再度、図２によれば、ページ分割部２４０は、物理的に記憶される「０」の個数を最小化するために、任意の個数や任意の大きさにデータページを分割してもよい。このとき、分割および反転の情報は、ページ２１１内の補助領域に記憶してもよい。記憶された分割および反転の情報は、読み出し動作でデータページを復元するために用いてもよい。
【００７７】
ページ分割部２４０は、データページを４個のデータサブページに分割する場合に、第１のデータサブページをａビット、第２のデータサブページをｂビット、第３のデータサブページをｃビット、第４のデータサブページをｄビットとなるように分割してもよい。
【００７８】
このとき、プログラミング部２２０は、ページ２１１に４個のデータサブページに対す
る４個の分割情報を記憶してもよい。各分割情報は、分割されたデータサブページの大きさ（ａビット、ｂビット、ｃビット、ｄビット）を含んでもよい。プログラミング部２２０は、４個の分割情報とともに、各データサブページの反転の有無をページ２１１に記憶してもよい。
【００７９】
記憶される分割および反転の情報をメタ情報とすれば、メタ情報は、各データサブページの大きさ（ビット数）および反転の有無を示すため、ｘビットでサブページの大きさを表すことができれば、メタ情報は（ｘ＋１）ビットが必要となる。
【００８０】
分割されるデータサブページの数が多くなるほど、メタ情報の大きさが大きくなり、データページの復元のための過程が複雑になる。ページ分割部２４０は、メタ情報の大きさおよび復元過程の複雑さに基づいて、最適化された分割の数を決定してもよい。
【００８１】
本発明におけるメモリプログラミング方法およびメモリ読み出し方法は、多様なコンピュータ手段により行われるプログラム命令によって実現され、コンピュータ読み取り可能な記録媒体に記録されてもよい。コンピュータ読み取り可能な記録媒体は、プログラム命令、データファイル、データ構造などを単独または組み合わせて含むこともできる。記録媒体に記録されるプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知であり使用可能なものであってもよい。コンピュータ読み取り可能な記録媒体としては、例えば、ハードディスク、フレキシブルディスク、磁気テープなどの磁気媒体、ＣＤ−ＲＯＭ、ＤＶＤなどの光記録媒体、フロプティカルディスクなどの磁気−光媒体、およびＲＯＭ（read-only memory）、ＲＡＭ（random access memory）、フラッシュメモリなどのようなプログラム命令を保存して実行するように構成されたハードウェア装置が含まれる。プログラム命令としては、例えば、コンパイラによって生成されるような機械語コードだけでなく、インタプリタなどを用いてコンピュータによって実行され得る高級言語コードも含まれる。上述したハードウェア装置は、本実施例における動作を行うため１つ以上のソフトウェアモジュールとして作動するように構成され、その逆も同様である。
【００８２】
本実施例におけるフラッシュメモリ装置および／またはメモリコントローラは、多様な形態のパッケージを用いて実現することができる。例えば、本実施例におけるフラッシュメモリ装置および／またはメモリコントローラは、ＰｏＰ（Package on Packages）、ＢＧＡ（Ball Grid Arrays）、ＣＳＰ（Chip Scale Packages）、ＰＬＣＣ（Plastic Leaded Chip Carrier）、ＰＤＩＰ（Plastic Dual In-Line Package）、ダイインワッフルパック（Die in Waffle Pack）、ダイインウェハフォーム（Die in Wafer Form）、ＣＯＢ（Chip On Board）、ＣＥＲＤＩＰ（Ceramic Dual In-Line Package）、ＭＱＦＰ（Plastic Metric Quad Flat Pack）、ＱＦＰ（Quad Flatpack）、ＳＯＩＣ（Small Outline Integrated Circuit）、ＳＳＯＰ（Shrink Small Outline Package）、ＴＳＯＰ（Thin Small Outline）、ＴＱＦＰ（Thin Quad Flatpack）、ＳＩＰ（System In Package）、ＭＣＰ（Multi Chip Package）、ＷＦＰ（Wafer-level Fabricated Package）、ＷＳＰ（Wafer-Level Processed Stack Package）などのようなパッケージを用いて実現してもよい。
【００８３】
フラッシュメモリ装置および／またはメモリコントローラは、メモリーカードを構成してもよい。このような場合、メモリコントローラは、ＵＳＢ、ＭＭＣ（Multi Media Card）、ＰＣＩ  Ｅｘｐｒｅｓｓ、ＳＡＴＡ（シリアルＡＴＡ）、ＰＡＴＡ（パラレルＡＴＡ）、ＳＣＳＩ、ＥＳＤＩ（Enhanced Small Device Interface）、ＩＤＥなどのような多様なインターフェースプロトコルの中のいずれかを用いて外部装置（例えば、ホスト）と通信するように構成してもよい。
【００８４】
フラッシュメモリ装置は、電力が遮断されても記憶されたデータを維持できる不揮発性
メモリ装置である。携帯電話、ＰＤＡ（personal digital assistant）、デジタルカメラ、ポータブルゲーム機、ＭＰ３プレーヤーなどのモバイル装置の使用増加に応じてフラッシュメモリ装置は、データストレージとしてだけでなくコードストレージとしてより広く用いられることになる。フラッシュメモリ装置は、さらに、高精細度テレビジョン放送（ＨＤＴＶ：high definition television）、ＤＶＤ、ルーター、グローバル・ポジショニング・システム（ＧＰＳ：Global Positioning System）などのホームアプリケーションに用いられてもよい。
【００８５】
本実施例におけるコンピュータシステムは、バスに電気的に接続されたマイクロプロセッサ、ユーザーインターフェース、ベースバンドチップセットなどのモデム、メモリコントローラ、フラッシュメモリ装置を含む。フラッシュメモリ装置には、マイクロプロセッサによって処理された、もしくは、処理されるＮビットデータ（Ｎは１またはそれよりも大きい整数）がメモリコントローラに記憶される。本実施例におけるコンピュータシステムがモバイル装置の場合、コンピュータシステムの動作電圧を供給するためのバッテリーが追加されてもよい。
【００８６】
本実施例におけるコンピュータシステムには、応用チップセット、カメライメージプロセッサ（ＣＩＰ：Camera Image Processor）、モバイルＤＲＡＭ（mobile Dynamic Random Access Memory）などがさらに含まれることは、当業者にとって自明である。メモリコントローラとフラッシュメモリ装置は、例えば、データを記憶するための不揮発性メモリを用いるＳＳＤ（Solid State Drive/Disk）を構成してもよい。
【００８７】
上述したように、本発明の限定された実施形態と図面によって説明したが、本発明は上記の実施形態に限定されることなく、本発明が属する分野における通常の知識を有する者であれば、多様な修正および変形が可能である。したがって、本発明の範囲は記載された実施形態に限定されて決めてはならず、特許請求の範囲だけでなく、この特許請求の範囲と均等なものなどによって定めなければならない。
【図１】
2011508358.tif 000003
【図２】
2011508358.tif 000004
【図３】
2011508358.tif 000005
【図４】
2011508358.tif 000006
【図５】
2011508358.tif 000007
【図６】
2011508358.tif 000008
【図７】
2011508358.tif 000009
【図８】
2011508358.tif 000010
【国際調査報告】
2011508358.tif 000011
2011508358.tif 000012