(57)【要約】【課題】  不揮発性メモリでのマーカプログラミングを提供する。【解決手段】  不揮発性メモリにアクセスする方法が提示される。本方法は、不揮発性メモリの第１のメモリ領域を読み出すことと、第１のメモリ領域が所定のデータパターンを含むか否かを確認することとを含む。所定のデータパターンは、少なくとも第１のメモリ領域に対して決定される、結果として生成される誤り訂正データに影響しない。本方法は、第１のメモリ領域内での所定のデータパターンの有無に基づいて、不揮発性メモリの第２のメモリ領域のデータステータスを評価することも含む。対応するメモリコントローラも開示される。【選択図】  図６
2015225661.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリにアクセスする方法であって、
前記不揮発性メモリの第１のメモリ領域を読み出すことと、
前記第１のメモリ領域が所定のデータパターンを含むか否かを確認することであって、前記所定のデータパターンは、少なくとも前記第１のメモリ領域に対して決定される、結果として生成される誤り訂正データに影響しない、確認することと、
前記第１のメモリ領域での前記所定のデータパターンの有無に基づいて、前記不揮発性メモリの第２のメモリ領域のデータステータスを評価することと、
を含む、方法。
【請求項２】
前記データステータスが、前記第２のメモリ領域内に有効データが存在することを示す場合、前記第２のメモリ領域を読み出すことを更に含む、請求項１に記載の方法。
【請求項３】
前記データステータスにより、前記第２のメモリ領域が書き込み可能であることが示される場合、前記第２のメモリ領域にデータを書き込むことと、
前記所定のデータパターンを前記第１のメモリ領域に書き込むことであって、それにより、前記第２のメモリ領域に有効データが存在することを示すように前記データステータスを変更する、書き込むことと、
を更に含む、請求項１に記載の方法。
【請求項４】
前記メモリはフラッシュメモリであり、前記メモリの個々のメモリセルは、単方向様式でのみ個々に再プログラムすることができる、請求項１に記載の方法。
【請求項５】
前記不揮発性メモリは、既存データと新データとの間でのビットＯＲ又はビットＡＮＤ結合を、前記既存データを既に含む前記第２のメモリ領域に前記新データを書き込む場合に暗黙的に実行する、請求項１に記載の方法。
【請求項６】
前記第１のメモリ領域、前記第２のメモリ領域、及び第３のメモリ領域を含むメモリブロックを消去することであって、それにより、前記メモリブロックを書き込み可能状態にリセットし、消去済み第１のメモリ領域、消去済み第２のメモリ領域、及び消去済み第３のメモリ領域を取得する、消去することと、
前記消去済み第１のメモリ領域に基づいて、前記第１のメモリ領域の前記誤り訂正データを決定することと、
前記第１のメモリ領域の前記誤り訂正データを前記消去済み第３のメモリ領域に書き込むことと、
を更に含む、請求項１に記載の方法。
【請求項７】
前記メモリブロックは、前記第２のメモリ領域に対する誤り訂正データを記憶する第４のメモリ領域を更に含み、前記メモリブロックを消去する状況では、前記第２のメモリ領域の誤り訂正データは決定されず、前記第４のメモリ領域に書き込まれず、それにより、実際のユーザデータ及び対応する誤り訂正データを前記第２のメモリ領域及び前記第４のメモリ領域に書き込むべきときまで、前記第２のメモリ領域及び前記第４のメモリ領域の両方を書き込み可能状態に保つ、請求項６に記載の方法。
【請求項８】
メモリ領域の前記誤り訂正データは、少なくとも前記メモリ領域のデータ内容及び前記メモリ領域のアドレスの関数である、請求項１に記載の方法。
【請求項９】
前記第１のメモリ領域及び前記対応する誤り訂正データは、完全に消去される場合、基礎をなす誤り訂正コードの有効コードワードを形成しない、請求項１に記載の方法。
【請求項１０】
前記所定のデータパターン及び完全に消去されたデータの前記誤り訂正データは一緒に、基礎をなす誤り訂正コードの有効コードワードを形成する、請求項１に記載の方法。
【請求項１１】
前記第１のメモリ領域は第１のメモリワードであり、前記第２のメモリ領域は、前記第１のメモリ領域に対して既知のアドレス関係を有する第２のメモリワードである、請求項１に記載の方法。
【請求項１２】
前記第１のメモリ領域が更なる所定のデータパターンを含むか否かを確認することを更に含み、前記更なる所定のデータパターンは、少なくとも前記第１のメモリ領域に決定される前記結果として生成される誤り訂正データに影響せず、
前記第２のメモリ領域の前記データステータスを評価する動作は更に、前記第１のメモリ領域内での前記更なる所定のデータパターンの存在に基づいて実行され、それにより、前記データステータスに少なくとも３つの異なる値を区別することができる、請求項１に記載の方法。
【請求項１３】
前記第１のメモリ領域が前記所定のデータパターンをまだ含まず、前記第２のメモリ領域内に存在する可能性があるデータの無効化が望まれる場合、前記所定のデータパターンを前記第１のメモリ領域に書き込み、それにより、前記第２のメモリ領域内の前記存在する可能性があるデータを無効化する、書き込むことを更に含む、請求項１に記載の方法。
【請求項１４】
不揮発性メモリ内のメモリ領域内の既存データ上に、マーカとして所定のデータパターンをプログラムすることであって、これもまた前記不揮発性メモリに記憶される前記メモリ領域の誤り訂正データは、前記所定のデータパターンの存在によって変更されず、前記既存データの条件は、前記既存データ内のビットが、前記所定のデータパターンのビットに必要なビット位置にないことである、プログラムすることと、
前記メモリ領域への読み出しアクセス又は書き込みアクセスが近々実行される場合、前記メモリ領域が前記所定のデータパターンを含むか否かを評価し、前記メモリ領域に前記所定のデータパターンが存在することに基づいて、前記メモリ領域のデータステータスを決定することと、
を含む、方法。
【請求項１５】
前記メモリ領域の前記データステータスは、前記メモリ領域の少なくとも部分が書き込み可能であるか、それとも有効データを含むかを示す、請求項１４に記載の方法。
【請求項１６】
プログラムを記憶する非一時的なコンピュータ可読媒体であって、前記プログラムは、請求項１に記載の方法がコンピュータによって実行される場合、前記コンピュータに前記方法を実行させる、非一時的なコンピュータ可読媒体。
【請求項１７】
フラッシュメモリコントローラであって、
不揮発性メモリに記憶すべきデータを処理して、これもまた前記不揮発性メモリに記憶すべき対応する誤り訂正データを取得するとともに、前記不揮発性メモリから読み出されるデータ及び対応する誤り訂正データに基づいて、誤りの検出及び訂正を実行する誤り訂正ユニットと、
所定のデータパターンを前記不揮発性メモリのメモリ領域に書き込むパターンプログラマであって、前記所定のデータパターンは、少なくとも前記第１のメモリ領域に決定される結果として生成される誤り訂正データに影響しない、パターンプログラマと、
前記不揮発性メモリの第１のメモリ領域から読み出されたデータを、前記所定のデータパターンと比較するとともに、前記第１のメモリ領域内での前記所定のデータパターンの存在又は不在に基づいて、前記不揮発性メモリの第２のメモリ領域のデータステータスを評価するパターンコンパレータと、
を備える、フラッシュメモリコントローラ。
【請求項１８】
前記フラッシュメモリコントローラは、前記データステータスが前記第２のメモリ領域内の有効データの存在を示す場合、前記第２のメモリ領域への読み出しアクセスを実行する権限を有する、請求項１７に記載のフラッシュメモリコントローラ。
【請求項１９】
前記フラッシュメモリコントローラは、前記データステータスが前記第２のメモリ領域内に有効データが存在しないことを示す場合、前記第２のメモリ領域に対して書き込みアクセスを実行し、前記不揮発性メモリに前記所定のデータパターンを前記第１のメモリ領域に書き込ませる権限を有する、請求項１７に記載のフラッシュメモリコントローラ。
【請求項２０】
前記第１のメモリ領域、前記第２のメモリ領域、及び第３のメモリ領域を含む少なくとも１つのメモリブロックを消去して、前記メモリブロックを書き込み可能状態にリセットするとともに、消去済み第１のメモリ領域、消去済み第２のメモリ領域、及び消去済み第３のメモリ領域を取得するように構成されるガーベッジコレクタユニットとを更に備え、
前記誤り訂正ユニットは、前記消去済み第１のメモリ領域に基づいて、前記メモリ領域の前記誤り訂正データを決定するように更に構成され、前記フラッシュメモリコントローラは、前記不揮発性メモリに、前記第１のメモリ領域の前記誤り訂正データを前記消去済み第３のメモリ領域に書き込ませるように構成される、請求項１７に記載のフラッシュメモリコントローラ。
【請求項２１】
前記誤り訂正ユニットは、前記メモリ領域のデータ内容及び前記メモリ領域のアドレスを考慮に入れるように構成される、請求項１７に記載のフラッシュメモリコントローラ。
【請求項２２】
前記第１のメモリ領域及び前記対応する誤り訂正データは、完全に消去される場合、基礎をなす誤り訂正コードの有効コードワードを形成しない、請求項１７に記載のフラッシュメモリコントローラ。
【請求項２３】
前記所定のデータパターン及び前記完全に消去されたデータの前記誤り訂正データは一緒に、基礎をなす誤り訂正コードの有効コードワードを形成する、請求項１７に記載のフラッシュメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリにアクセスする方法に関する。本発明の更なる実施形態は、不揮発性メモリ内のメモリ領域内の既存データ上に、マーカとして所定のデータパターンをプログラムする方法に関する。更なる実施形態は、上述した方法のうちの少なくとも１つに対応するプログラムを記憶する非一時的なコンピュータ可読媒体に関する。本発明の更なる実施形態は、メモリコントローラに関する。幾つかの実施形態は、フラッシュメモリ内の既存データ上へのマーカのプログラミングに関し得る。
【背景技術】
【０００２】
フラッシュメモリは、電気的に消去し再プログラムが可能な電子的不揮発性デジタル記憶媒体である。フラッシュメモリは通常、浮動ゲートトランジスタから作られるメモリセルのアレイを含む。技術的に、フラッシュメモリは一種のＥＥＰＲＯＭ（電気的に消去可能プログラム可能な読み取り専用メモリ）である。ＥＥＰＲＯＭの代わりにフラッシュメモリを使用する理由の１つは、ＥＥＰＲＯＭのようなビット単位の書き込み消去がフラッシュでは可能ではなく、フラッシュメモリはブロック全体しか消去することができず、その一方で個々のビットをプログラム可能であるため、フラッシュメモリが面積当たりはるかに多数のメモリセルを提供することである。これは、幾つかの部分を変更するには、最初にブロック全体を消去する必要があることを意味する。
【０００３】
今日、フラッシュメモリは、例えば、パーソナルコンピュータ、ＰＤＡ、スマートフォン、デジタルカメラ、マイクロコントローラ等で広く使用されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
フラッシュメモリは通常、記憶されているデータ又はフラッシュメモリに記憶すべきデータに対して読み出しアクセス、書き込みアクセス、及び／又は消去アクセスを実行する際、内部構成に起因して、特別な考慮を必要とする。さらに、フラッシュメモリは、特に長い記憶時間（最長で数年、場合によってはさらには２０年まで）の後、比較的高いビットエラーレート（ＢＥＲ）を受けやすいことがある。高ビットエラーレートは、誤り訂正コード（ＥＣＣ）によって対処して、冗長データ（「チェックビット」）を計算し、そのような冗長データを記憶すべき実際のデータと共に記憶することができる。フラッシュメモリのこれらの属性は、フラッシュメモリをいかに使用することができるかに幾つかの制約を定義する。特に、フラッシュメモリ内のデータ変更（単一ビットのみの場合であっても）は、メモリブロック全体又はセクタ全体を別のメモリブロック又はセクタにコピーする必要があり得る。フラッシュメモリによって課されるこれらの使用制約の幾つかを少なくとも軽減することができることが望ましい。
【課題を解決するための手段】
【０００５】
不揮発性メモリにアクセスする方法が提供される。本方法は、不揮発性メモリの第１のメモリ領域を読み出すことを含む。本方法は、第１のメモリ領域が所定のデータパターンを含むか否かを確認することを更に含む。所定のデータパターンは、少なくとも第１のメモリ領域に対して決定される、結果として生成される誤り訂正データに影響しない。本方法は、第１のメモリ領域内の所定のデータパターンの存在又は不在に基づいて、不揮発性メモリの第２のメモリ領域のデータステータスを評価することも含む。
【０００６】
更なる態様によれば、方法が提供される。本方法は、不揮発性メモリ内のメモリ領域内の既存データ上に、マーカとして所定のデータパターンをプログラムすることを含む。所定のデータパターンは、これもまた不揮発性メモリに記憶されるメモリ領域の誤り訂正データが、所定のデータパターンの存在又は不在によって変更されないという属性を有する。既存データの条件は、既存データ内のビットが、所定のデータパターンのビットに必要なビット位置にないことである。メモリ領域への読み出しアクセス又は書き込みアクセスが近々実行される場合、メモリ領域が所定のデータパターンを含むか否かが評価され、メモリ領域での所定のデータパターンの存在又は不在に基づいて、メモリ領域のデータステータスが決定される。
【０００７】
メモリコントローラも提供される。メモリコントローラは、不揮発性メモリに記憶すべきデータを処理して、これもまた不揮発性メモリに記憶すべき対応する誤り訂正データを取得するとともに、不揮発性メモリから読み出されるデータ及び対応する誤り訂正データに基づいて、誤りの検出及び訂正を実行する誤り訂正ユニットを備える。フラッシュメモリコントローラは、所定のデータパターンを不揮発性メモリのメモリ領域に書き込むパターンプログラマを更に備える。所定のデータパターンは、少なくとも第１のメモリ領域に決定される結果として生成される誤り訂正データに影響しない。フラッシュメモリコントローラは、不揮発性メモリの第１のメモリ領域から読み出されたデータを、所定のデータパターンと比較するとともに、第１のメモリ領域での所定のデータパターンの存在又は不在に基づいて、不揮発性メモリの第２のメモリ領域のデータステータスを評価するパターンコンパレータも備える。
【０００８】
実施形態について添付図を使用して詳細に説明する前に、図中、同じ要素又は機能的に等しい要素に同じ参照符号が付与され、同じ参照符号が提供される要素についての説明の繰り返しが省かれることが指摘されるべきである。したがって、同じ参照符号を有する要素に対して提供される説明は相互に交換可能である。
【図面の簡単な説明】
【０００９】
【図１Ａ】図１Ａで仮定される付随条件（又は制約）に起因して無効化が成功する、データの一種の無効化として使用されることが多い、存在するフラッシュデータ「上」に全て１のデータワード（０ｘＦＦ・・・Ｆ）をプログラムする現状技術による方法を概略的に示す。
【図１Ｂ】図１Ｂで仮定される付随条件（又は制約）に起因して無効化が成功せず、仮定される条件が、幾つかの誤り訂正コードで、全て１のワードが有効コードワードではなく、全ての「１」のデータビットを有するワードが、「１」ではなく「０」である幾つかの誤り訂正ビットを有することを意味する、全て１のデータワードをメモリワードに書き込むことによるメモリワードの無効化を概略的に示す。
【図２Ａ】特別なパターンが、メモリワード全体内のマーカとしてプログラムされるメモリワードのデータステータスの変更を概略的に示す。
【図２Ｂ】特別なパターンが、メモリワードの部分内のマーカとしてプログラムされるメモリワードのデータステータスの変更を概略的に示す。
【図３】一対のメモリワードのデータステータスを変更する２つの部分を含むマーカの使用を概略的に示す。
【図４】メモリ領域が第１、第２、第３、及び第４のメモリ（サブ）領域を含む、所定のデータパターンを使用してのデータステータス変更を受け得る不揮発性メモリ（例えば、フラッシュメモリ）のメモリ領域を概略的に示す。
【図５】メモリ領域が第１、第２、及び第３のメモリ（サブ）領域を含み、第１及び第２のメモリ領域はそれぞれ、メモリワードの部分に対応する、所定のデータパターンを使用してのデータステータス変更を受け得る不揮発性メモリのメモリ領域を概略的に示す。
【図６】不揮発性メモリにアクセスする方法の概略流れ図を示す。
【図７】メモリ領域内の既存データ上に、マーカとして所定のデータパターンをプログラムするステップを含む方法の概略流れ図を示す。
【図８Ａ−８Ｂ】不揮発性メモリにアクセスするとともに、管理する方法の概略流れ図を示す。
【図９】ホストシステムと、メモリコントローラと、不揮発性メモリとの概略ブロック図を示す。
【図１０】フラッシュメモリコントローラの概略ブロック図を示す。
【発明を実施するための形態】
【００１０】
以下に、幾つかの実施例について特にフラッシュメモリを参照して説明する。しかし、説明及び図はフラッシュメモリに限定されるものとして理解されるべきではなく、代わりに、他のタイプの不揮発性メモリにも適用される。フラッシュメモリの一属性は通常、単一のビットはプログラムのみ可能であり、ビットを少なくとも個々では消去することができないことである。これは、プログラミングにより、「０」から「１」にビット単位で変更することはできるが、通常、既に存在する「１」を「０」に変更することはできないことを意味する。フラッシュメモリでは通常、１つの比較的大きなブロックのデータ全体が同時に消去される。この制約に起因して、変更する必要があるデータを、現在使用されているブロックから既に消去されたブロックに配置換えする必要があり得、データを消去済みブロックに書き込む際、データは所望のように変更される。誤り訂正コードが利用される場合、結果として生成される誤り訂正データも通常、データ変更と共に変更される（特に、実際のデータでの変更は１ビットのみであっても、誤り訂正データは大きく変更され得る）。誤り訂正データが、データ及び対応する誤り訂正データが記憶されるメモリワードのメモリアドレスを考慮に入れることもある。この場合、誤り訂正データは通常、データを第１のメモリブロックから第２の消去済みメモリブロックにコピーする場合、変更される。
【００１１】
換言すれば、「１」から「０」への変更は、ワード全体が消去される場合のみ可能である。フラッシュメモリでは、消去は通常、「多くの」ワードを含む「セクタ」又はブロックにわたってのみ可能である。なお、「プログラム済み」状態及び「消去」状態への論理「１」及び「０」の定義は、逆であることもあり、すなわち、フラッシュメモリによっては、「１」から「０」に変更することはできるが、「０」から「１」に戻ることができないものもある。
【００１２】
さらに、安全要件に起因して、フラッシュメモリでのＥＣＣの特定の実施は以下の態様を使用する。アドレスを誤り訂正データに符号化し得、したがって、ＥＣＣ＝ｆ（アドレス，データ）である。
【００１３】
別の安全要件は、消去済みワード（全て０）又はプログラム済みワード（全て１）がｅｃｃ有効であってはならないことを定義し得る。
【００１４】
これにより、少なくとも２つの特定の問題が生じ、これらの問題は、提案される方法、フラッシュメモリコントローラ、及び非一時的なコンピュータ可読媒体によって対処される。
１．フラッシュメモリにおいて存在するワード「上」に有効ＥＣＣワードをプログラムし、再び有効ＥＣＣワードを取得すること（「１」は消去することができない）。
２．消去済みワードがＥＣＣ有効ではなく、したがって、使用することができないフラッシュメモリの２つの別個の内容を有するマーカを使用すること。
【００１５】
図１は、全て１のデータワード（０ｘＦＦ・・・Ｆ）をメモリワードに書き込むことによるメモリワードの無効化を概略的に示す。しかし、この方法は、全て１のデータワードがＥＣＣ有効であるか、又はＥＣＣ有効であり得るという仮定に依存する。さらに、誤り訂正データはまた、個々のビットを消去することができないというフラッシュメモリ制約に起因して、全ての１のワードである必要がある。換言すれば、既存データの誤り訂正データが、特定のビット位置に「１」を有したが、全て１のデータワードの誤り訂正データが、同じビット位置で「０」を必要とする場合、通常、影響を受ける１ビットのみを消去することは可能ではない。このため、図１Ａの状況では、誤り訂正コードに関する以下の仮定がなされる。
ＥＣＣ＝（１１・・・１）＝ｆ（（１１・・・１））＝ｆ（０ｘＦＦ・・・Ｆ）
【００１６】
図１Ａの状況でなされた別の仮定は、アドレスが誤り訂正コードによって考慮されないというものである。
【００１７】
これらの仮定又は付随条件を用いて、図１Ａは以下のように説明することができる。状態１において、フラッシュメモリのメモリワードは、任意のデータ、ここでは（０１０００１１０００１）を含む。記憶された対応する誤り訂正データは、
ＥＣＣ＝（１１００）＝ｆ（データ）＝ｆ（０１０００１１０００１）
である。
【００１８】
なお、データ又は誤り訂正データのいずれか又は両方は、様々な理由によりビットエラーを含み得る（データ書き込み時のエラー、記憶時間中に生じるビットエラー、放射線又は温度に起因するエラー等）。ビットエラーの数が、利用される誤り訂正コードの距離（例えば、ハミング距離）の半分未満である限り、ビットエラーは通常、首尾良く訂正することができる。
【００１９】
ここで、データはもはや有効ではなく、無効化する必要があり得る。このために、状態は状態１から状態２に変更される。データ状態のこの変更は、全ての１のデータをメモリワードに書き込むことによって実行される。同時に、誤り訂正データも全て１のデータに変更される。データ及び誤り訂正データへのこれらの変更は、ビットを消去する（すなわち、「１」から「０」に変更される）必要がなく、生じる変更が、許されている「０」から「１」への変更のみであるため、可能である。したがって、図１Ａは、アドレスビットが誤り訂正コードによって使用されないため上手くいく無効化を示す。この無効化は、０ｘＦＦ・・・ＦＦが有効コードワードであることが許されているメモリの場合に可能である。
【００２０】
しかし、図１Ａでの全て１のプログラミングがワードの前の内容を破壊することを念頭に置かれたい。このため、そのような全て１のプログラミングは限られた用途（例えば、無効化）しか有さない。さらに、この場合、誤り訂正コードはアドレス符号化を利用することができない。図１Ｂに概略的に示されるように、仮にアドレス符号化が使用される場合には、少なくとも幾つかのアドレスで、全て１のワード（データと誤り訂正データとの組み合わせ）は、アドレス符号化に起因して、有効なコードワードではないことがある。図１Ｂから見て分かるように、アドレスビットの使用に起因して、誤り訂正データ内の前の「１」を、無効化後に「０」である（図１Ｂにおいて矢印で示される）必要があるが、これはフラッシュメモリでのビット単位のプログラミングを用いては不可能であるため、無効化は上手くいかない。
【００２１】
代替又は追加として、他の安全要件により、全て１のワードは有効コードワードにならないことがある。例えば、アドレスが使用されない場合、有効コードワードとして０ｘＦＦ・・・ＦＦを使用することは、安全目標に起因して許されないことがある。
【００２２】
別の選択肢は情報の消去であるが、フラッシュメモリでは、これはより大きな「粒度」、例えば、ワード線又はセクタでのみ可能であり得る。ワード線又はセクタレベルでのデータ消去は、他の情報を失うリスクの増大をもたらし得（例えば、データを別のワード線／セクタにコピーする場合）、これはセキュリティ及び／又は安全を理由として望ましくないことがある。さらに、データの消去には時間がかかり得る。さらに、リセットを実行する必要があることがあり、これは、フラッシュメモリの動作を中断させ、その結果、接続されたホストシステム（例えば、マイクロコントローラ）の動作を中断するおそれがある。
【００２３】
図２Ａは、メモリワードのデータステータスの変更を概略的に示し、特別なパターンが、メモリワード全体にマーカとしてプログラムされる。図２Ｂは、メモリワードの同様の変更を示し、特別なパターンが、メモリワードの部分でのマーカとしてプログラムされる。専用パターンが、以下の属性を用いて計算される。
−専用パターン（所定のデータパターン）はＥＣＣ有効であり、
−元のデータを維持する必要がある位置に「０」を有し、
−メモリワードへのパターンの追加は、既存のＥＣＣチェックビットを変更せず（すなわち、ｅｃｃ（パターン）＝０）（例えば、線形ｅｃｃ符号で可能）、
−このパターンは、データ範囲で全て０であるか、又はパターンによって使用されないデータビットの部分を使用する既存のｗｏｒｄ＿ｏｌｄ「上」にプログラムすることができる。
【００２４】
図２Ａ又は図２Ｂによる方法は、既に有効ＥＣＣワードが利用可能な（ｗｏｒｄ＿ｏｌｄ）メモリ位置に有効ＥＣＣワード（パターン）をプログラミングすることに基づく。これは「オーバープログラミング」と呼ばれる。
【００２５】
フラッシュメモリ属性（プログラミング中、論理「１」セルは消去されない）に起因して、結果は、
ｗｏｒｄ＿ｎｅｗ＝ｗｏｒｄ＿ｏｌｄ  ＯＲ  パターン
であり、式中、ＯＲはビットＯＲである。
【００２６】
あらゆるアドレスでｅｃｃ（パターン）＝０であるため、プログラミングはあらゆるアドレスで可能である。
【００２７】
既存データｗｏｒｄ＿ｏｌｄは、データに全て０を含み得る。誤り訂正データｅｃｃビットは通常、アドレスがデータと共に符号化されない場合、全て＝「０」ではない。これは図２Ａに概略的に示される。アドレスの使用に起因して、通常、全てのＥＣＣチェックビットが「０」になるわけではない。むしろ、データ内の０ｘ００・・・００は通常、特定のｅｃｃビット＝「１」になる。幾つかの少数の選択されたアドレスでは、全てのＥＣＣチェックビットが「０」であることが生じ得る。
【００２８】
代替では、図２Ｂに概略的に示されるように、既存データは、特定のビット範囲内に任意のデータを含むこともできる。図２Ｂでは、このビット範囲は、メモリワードの５つの最上位ビット（ＭＳＢ）に対応する。メモリワードの残りの６ビット（６つの最下位ビット、ＬＳＢ）は、状態１中に使用されない空きビット位置である。
【００２９】
所定のデータパターン（専用パターン）は、
−完全なメモリワード上にある（元データが全て０である場合）−＞図２Ａ参照、又は
−ｗｏｒｄ＿ｏｌｄデータビットによって使用されていない残余ビット範囲（「０」）のビット位置上のみにある−＞図２Ｂ参照。
【００３０】
プログラミングは、旧データ／パターンの分割が全てのワードで同じである限り、そしてパターンが、Ｇｅｎ＿Ｍａｔ×パターン＝０（＝ＥＣＣビット）を可能にするのに十分な数のビットを含む場合、メモリ範囲全体にわたって可能であり、ここで、Ｇｅｎ＿Ｍａｔは誤り訂正コードの生成行列である。必要なビット数は、コード及び行列の特徴（ハミング距離、線形独立行列列の数等）に依存する。
【００３１】
図１Ａと比較すると、図２Ａ及び／又は図２Ｂの方法はより柔軟な解決策を提供する。特に図２Ｂの場合、旧データは保持され、なお読み出すことが可能である。全て１のパターンが許されない安全ＥＣＣと、図２Ａ及び図２Ｂによる方法を併用することが可能である。
【００３２】
ここで、第１のデータステータスを所定データパターンの不在に割り当て、第２のデータステータスを、メモリワード等のメモリ領域内の所定のデータパターンの存在に割り当てることができる。例えば、図２Ｂでは、所定のデータパターン又は「マーカ」の不在は、５つのＭＳＢ内のデータが有効であることとして解釈し得、所定のデータパターンの存在は、５つのＭＳＢ内のデータがもはや有効ではないこととして解釈し得る。代替の実施態様では、逆の変換を使用し得る：所定のデータパターンの不在は無効データを示し、所定のデータパターンの存在は有効データを示す。
【００３３】
既存データの「無効化」に所定のデータパターンのオーバープログラミングを使用することも可能である。例えば、第１のデータ状態（「マーカ状態１」）は、
データ＝＜既存データ，０，ｅｃｃ＿ｃｈｅｃｋｂｉｔｓ＞
であり得る。
【００３４】
第２のデータ状態（「マーカ状態２」）は、
データ＝＜既存データ，所定のパターン，ｅｃｃ＿ｃｈｅｃｋｂｉｔｓ＞
であり得る。
【００３５】
ｅｃｃ＿ｃｈｅｃｋｂｉｔｓの形態の誤り訂正データは、既存データ（及び場合によってはアドレス）に基づく。誤り訂正データｅｃｃ＿ｃｈｅｃｋｂｉｔｓは、所定のパターンによって変更されない。この意味では、所定のパターンを使用することにより、他のメモリ領域（「第２のメモリ領域」）に何かをプログラムすることが許されているか否か、又は有効データが既に存在するか否かを区別せず、他のメモリ領域（すなわち、「第２のメモリ領域」）に有効又は無効データが存在するか否かを区別する。
【００３６】
一例として、上述した属性を有する２つ以上の所定のデータパターンを使用し得る。例えば、２つの所定のデータパターンを使用する場合、以下のデータステータスシーケンスを示すことが可能である：「書き込み可能」→「有効データ」→「無効データ」。データステータス「書き込み可能」は、メモリワード内に任意の所定のデータパターンがないことによって示される。ユーザデータはここで、メモリワードの部分（例えば、図２Ｂの例では５つのＭＳＢ）に書き込むことができる。同時に、第１の所定のデータパターンが、残りのビット範囲（例えば、図２Ｂでの６つのＬＳＢ）に書き込まれ、その存在は、メモリワードがここでデータステータス「有効データ」であることを示す。データが無効になると、データステータスは、第１の所定のデータパターンに第２の所定のデータパターン（更なる所定のデータパターン）を上書きすることにより、「無効データ」に変更することができる。なお、第２の所定のデータパターンは通常、第１の所定のデータパターンが「１」を有するビット位置に「１」を有さなければならず、その理由は、「１」から元の「０」への１ビットのリセットが可能ではないというフラッシュメモリの制約による。したがって、第２の所定のデータパターンは、条件：
第２のパターン＝第１のパターンＯＲ  ａｄｄｉｔｉｏｎａｌ＿ｂｉｔ（ｓ）
を満たし、ここで、ａｄｄｉｔｉｏｎａｌ＿ｂｉｔ（ｓ）≠（００・・・００）であり、すなわち、可変ａｄｄｉｔｉｏｎａｌ＿ｂｉｔ（ｓ）は全て０のベクトルに等しくない。換言すれば、第２のパターンは、第１のパターンが「０」を有するビット位置に少なくとも１つの追加の「１」を有することを除き、第１のパターンと同一である。代替として、データ、第１のパターン、及び第２のパターンに専用のビット範囲を受信することができる。したがって、メモリにアクセスすることは、第１のメモリ領域が所定のデータパターン及び更なる所定のデータパターンのうちの一方を含むか否かを確認するステップ又は動作を含み得る。所定のデータパターン（第１の所定のデータパターン）のように、更なる（又は第２の）所定のデータパターンも、少なくとも第１のメモリ領域に決定される、結果として生成される誤り訂正データに影響しない。第２のメモリ領域のデータステータスを評価する動作は、第１のメモリ領域内での（第１の）所定のデータパターン及び更なる所定のデータパターンの存在又は不在に基づいて実行し得る。このようにして、データステータスに少なくとも３つの異なる値を区別することができる。
【００３７】
別の任意選択的な拡張は、「マルチレベルマーカ」であり、これについての応用例をこれより提供する。顧客ソフトウェアによって開始される第１のプログラミング動作中、例えば、３２ビットのユーザデータをメモリに書き込む。３２ビットユーザデータは、誤り訂正データ（ＥＣＣチェックビット）で完了し、有効コードワードを形成する。まとめると、これは、第１のプログラミング（顧客）→３２ビットユーザデータ→ＥＣＣチェックビットとして表現し得る。
【００３８】
その後、第２のプログラミング動作が顧客ソフトウェアによって開始される。したがって、追加の３２ビットのユーザデータが書き込まれる。更なる３２−２２ビットは、ＥＣＣチェックビットへの新しい（３２＋３２）ビットの寄与がゼロであるように計算される。したがって、チェックビットの変更は必要ない。
【００３９】
顧客ソフトウェアによる第３のプログラミング動作中、更に別の更なる３２ビットセットのユーザデータを不揮発性メモリに書き込む必要がある。これは、第２のプログラミング動作と同様にして行い得る。この方式を第４、第５、第６、・・・のプログラミング動作に続ける（合計データビットの最大数に達するまで）ことも可能である。
【００４０】
一般に、提案される拡張によれば、さらにｙビットのデータビットがなお空いている（すなわち、通常「０」）場合、ｘデータビットをコードワードにプログラムすることが可能であり、これらは、ＥＣＣチェックビットを変更する必要がないように、アドレス、前のデータ内容、及び新データに基づいて計算される。このために、パリティチェック行列Ｈのｙ列は線形に独立する（→ｙ＝２２）か、又はより多数の列が必要である（サブスペース）。
【００４１】
メモリ内のワードを参照する場合、「ワード」という用語は、本明細書ではここで定義されるように使用される。
ワード：
＝ｎデータビット＋ｃビットのｅｃｃチェックビット
＝有効ＥＣＣコードワードをもたらすプログラム可能な最小単位
【００４２】
現実的な例：ｎ＝２５６、ｃ＝２２
これらの値を用いると、２５６ビットは、例えば、４×（３２＋３２）ビットに細分することができ、これにより、元のＥＣＣチェックビットが変更されない限り、１ワードにおいて最高で４回のプログラミング動作を実行することが可能になる。
【００４３】
フラッシュメモリは、本明細書での示唆から大きな恩恵を受け得るが、本明細書での示唆は、他のタイプのメモリ、特に不揮発性メモリに関連して実施することも可能である。単方向ビット単位変更可能性等の幾つかのフラッシュ固有の制限は、一般的な不揮発性メモリには当てはまらないことがあるがそれでも、フラッシュメモリ以外のメモリ技術も、本明細書で示唆されるものから恩恵を受け得る。例えば、マルチプログラミングが可能なことにより、ワード全体を再プログラムする必要なく、メモリワード全体の部分のみをプログラムすることが可能になる。これにより、個々のメモリセルが再プログラミングされる頻度が減り、したがって、受けるストレスが低減し得る。実際に、各プログラミング動作又は消去動作は、メモリセルの幾らかの物理的ストレスを伴う。別の利点は、ビット値を変更する必要があるメモリワードの部分のみが再プログラムされる場合、再プログラムする必要があるメモリセルの数を低減することができるため、消費電力を低減し得ることである。
【００４４】
図３は、わゆる「２部分マーカ」が使用される方法を概略的に示す。
【００４５】
図３は、フラッシュメモリでの２状態マーカ（２部分マーカ）の一実施態様及び／又は使用を概略的に示す。この技法は、ＥＣＣ無効であるため、消去済み状態を使用することができないフラッシュメモリで特に使用することができる。
【００４６】
マーカ、すなわち所定のデータパターンは２つの部分を含む。図示の実施態様例では、各部分はフラッシュメモリの１つのメモリワードをカバーする。したがって、第１の部分（「マーカ部分１」）は、フラッシュメモリのアドレス「ｘ」でのメモリワードに対応する。第２の部分（「マーカ部分２」）は、次のアドレス「ｘ＋１」でのメモリワードに対応する。第１の部分は常に、ｅｃｃ有効ワードとして読み出すことができる。状態１では、第１の部分は、有効ｅｃｃビットを有する全て０としてプログラムされる。アドレス「ｘ＋１」での第２の部分は、状態１で消去され、読み出してはならない。消去済み状態が、事前変換及び／又はユーザ要件に従って、フラッシュメモリによってはＥＣＣ無効であり得ることを想起する。
【００４７】
状態１から状態２になる際、追加の特別なパターンが第１の部分にプログラムされる。この特別なパターンは、ｅｃｃ（パターン）＝Ｇｅｎ＿Ｍａｔ×パターン＝０であるため、ｅｃｃビットを変更しない。さらに、追加の任意選択的な特徴として、特別なパターンはアドレスに依存せず、したがって、任意のアドレスで使用することができる。同時に、第２の部分には、所望データが初めてプログラムされる。所望のデータはいわゆるマーカデータ（例えば、記号論理情報）であり得る。換言すれば、第２の部分には任意のデータをプログラムして、任意の顧客関連情報（例えば、ソフトウェアバージョンについての論理記号情報）を記憶することができる。第２の部分は、ＥＣＣ有効ワードとして状態２において読み出すことができる。
【００４８】
図３に概略的に示される技法により、顧客は、最初にＥＣＣ有効「０」であり、後に任意のデータ内容で第２の状態に変更することができるマーカを実装することができる。
【００４９】
特殊なタイプのフラッシュメモリは「Ｐフラッシュ」（プログラムフラッシュ）として既知である。例えば、自動車マイクロコントローラで使用されるフラッシュメモリの場合、フラッシュは２つの部分に分割し得る：コードメモリ及びデータメモリ。コードメモリは、マイクロコントローラのＣＰＵのコードをオンチップで記憶するために使用される。ＣＰＵは、コードメモリから読み出されたコードを実行する−この読み出しパスは場合によっては、安全要件に従って非常によく保護し、誤りの訂正及び訂正不可能な誤りの検出を高レベルで可能にする必要がある。フラッシュメモリ、特にＰフラッシュでの安全ＥＣＣが、メモリ（Ｐフラッシュ）の消去済み範囲がＥＣＣ有効ではないように行われることが望ましいことがある。例えば、相手先商標製品の製造会社（ＯＥＭ）又は自動車供給業者等の顧客は、対応する顧客要求を定義し得る。この仮定の下では、消去済みワードの読み出しは、ＥＣＣのエラーフラグを生じさせる：非訂正可能な誤りが発生する。その結果、ソフトウェアプログラムの実行が中断されるおそれがある。この安全対策は、フラッシュメモリの割り振られた部分（「割り振られた」はここでは、ソフトウェアプログラムによって実際に使用されることを意味する）内の消去済み範囲の発生が、メモリ破損又はメモリ内容の他の予測不可能な変更を示し得るため、存在理由を有し得る。大概、命令ポインタはデータが存在しないメモリアドレスに飛ぶ。この場合、ソフトウェアプログラムはフラッシュメモリ内のデータの正確性に頼ることができず、そのため、深刻な問題が生じる前に、ソフトウェアプログラムの実行を終了することが賢明であり得る。
【００５０】
しかし、Ｐフラッシュソフトウェアローダ、スタートアップ中のブートマネージャ、及びアプリケーションコード等の特別なソフトウェア又はプログラムは、特定のＰフラッシュ「範囲」が実際に消去されたことをチェックする必要があり得る。このために、Ｐフラッシュに書き込まれたコード／データの状態を識別するマーカが必要であり得る。以下の説明は、「２部分」マーカ解決策を強調した幾つかの可能な解決策を示す。
【００５１】
２部分からなる（又は２部分を含む）マーカの使用が提案される。２部分（部分１及び部分２）の特徴、機能、及び／又は目的を以下に説明することができる。
部分１：
常にＥＣＣ有効であり、
常にソフトウェアによる読み取りが可能であり、
マーカの２つの状態を区別するためだけに使用される
部分２：
マーカが更新されない限り、消去済み状態であり、
部分１が第２の状態に変更されない限り、ソフトウェアによって読み出されない。
【００５２】
図３に示されるように、状態１の第１の部分（マーカ部分１）は、ＥＣＣオン（すなわち、誤り訂正がアクティブな）状態で「全て０」としてプログラムされる。アドレス符号化に起因して、幾つかのチェックビットは「０」ではない。換言すれば、ｅｃｃチェックビットのうちの少なくとも幾つかは、アドレスに依存する。実際のメモリワード内の「全て０」ベクトルと対応する誤り訂正データとの組み合わせが、有効コードワードを定義する。上述したように、１ビット位置又は少数ビット位置でのランダムビットエラーの発生は通常、除外することができないが、誤り訂正データに基づく比較的強力な誤り訂正能力に起因して、そのようなビットエラーは、大半の場合、訂正することができる。
【００５３】
同時に、第２の部分（マーカ部分２）は、状態１ではなお消去済み状態である。したがって、全てのビットは、ｅｃｃチェックビットを含め、「０」である。これは有効ｅｃｃコードワードを形成しないため、読み出されてはならない。対応するメモリアドレス「ｘ＋１」を読み取ろうとすると、通常、ｅｃｃエラー（ＥＣＣのエラーフラグ）が生じる。第１の部分と第２の部分とのアドレス関係は既知である：第１及び第２の部分は連続アドレス「ｘ」及び「ｘ＋１」に記憶される。第１の部分のアドレスと第２の部分のアドレスとの間のページオフセット、ブロックオフセット、又はセクタオフセット等の他のアドレス関係も可能である。アドレス関係は既知であるため、まず、第１の部分が予期され得る可能な（全ての）アドレス、例えば、全ての偶数アドレス０、２、４、６、・・・をクエリすることが可能である。通常、これらのアドレスは、ｅｃｃ有効コードワード又は少なくともｅｃｃ訂正可能なワードを含むため、安全に読み出すことができる。第１の部分が全て０のベクトルである場合、アドレス「ｘ」及び「ｘ＋１」でのメモリワード対が２部分マーカを形成し、上記２部分マーカの現在データステータスが「状態１」であると結論付けることができる。これは、第２の部分のメモリワードがなお、完全に消去されており、このため、読み出されてはならないことを意味する。他方、完全に消去されたメモリ範囲は「書き込み可能」であり、したがって、かなり多様的であり、任意の（略あらゆる）データの記憶に使用することができる。
【００５４】
アドレス「ｘ」及び「ｘ＋１」でのメモリワード対を含むメモリ領域のデータステータスを状態１から状態２に変更する場合、特別なデータパターンがマーカ部分１にプログラムされる。マーカ部分２はここで初めて（最後のセクタ単位の消去以来）、所望のマーカデータ（例えば、記号論理情報）がプログラムされる。
【００５５】
状態２では、マーカは「０」ではなく、情報を含む。ｅｃｃ（特別なパターン）＝０であるため、マーカ部分１の誤り訂正データは変更されない。特別なデータパターンはマーカ部分１にプログラムされる。アドレス「ｘ」での第１のメモリワードのデータ内容は重要ではなく、状態１と状態２とを区別するためだけに使用される。特別なデータパターン及びそれに対応する誤り訂正データは、通常のアプリケーションコードによって読み出すことができる有効コードワードを形成する。
【００５６】
状態２でのマーカ部分２に関して、特定のデータ（例えば、記号論理内容）はここで、アドレス「ｘ＋１」においてメモリワードにプログラムされる。特定のデータ及びそれに対応する誤り訂正データ（通常、実際のデータビットの隣の追加のビットにおいてフラッシュメモリにも記憶される）は、通常のアプリケーションコードによって読み出すことができる有効コードワードを形成する。
【００５７】
２部分マーカは、常にＥＣＣ有効（少なくともマーカ部分１）であり、したがって、安全ｅｃｃがオンの状態であっても常に読み出し可能であるという望ましい属性を有する。このため、プログラマにとってトラップになることが多いいかなる回避策も提供する必要がなく、すなわち、「トラップなし、回避策なし」である。さらに、チェックのために読み出し動作を実行するだけでよいため、比較的高速である。シーケンス動作が必要ない。マーカ部分２に関して、プログラムされると、任意の論理データを含み得る。
【００５８】
特別なデータパターンは、マーカの部分１に必要である。したがって、上記特別なデータパターンは、この特定の目的に確保された値である。これは、マーカのメモリアドレスが既知である場合（大抵既知である）、通常のデータのようにも見え得る。この特別なデータパターンは、例えば、フラッシュメモリコントローラの製造業者によって選択されて提供される。特別なデータパターンは通常、全てのアドレスに使用することができる。これにより、１つのデータパターンしかプログラム／比較のためにコードに記憶する必要がないため、使用が容易になる。
【００５９】
ここで、特別なデータパターン（所定のデータパターン）についての幾らかの背景情報を提供する。
ＥＣＣ＝チェックビット
ＥＣＣ＝ｆ＿ｅｃｃ（ＤＡＴＡ＋ＡＤＤＲ）＝ｆ＿ｅｃｃ（ＤＡＴＡ）＋ｆ＿ｅｃｃ（ＡＤＤＲ）
【００６０】
したがって、誤り訂正コードは線形である。
【００６１】
マーカ状態１：
ＤＡＴＡ＝０・・・０：
＝＞ＥＣＣ＝ｆ＿ｅｃｃ（０・・・０）＋ｆ＿ｅｃｃ（ＡＤＤＲ）＝ｆ＿ｅｃｃ（ＡＤＤＲ）
【００６２】
これは、チェックビット（ＥＣＣ）がアドレスによって完全に決定されることを意味する。
【００６３】
マーカ状態２：
ＤＡＴＡは０・・・０に等しくなく、ｆ＿ｅｃｃ（ＤＡＴＡ）＝０である：
＝＞ＥＣＣ＝ｆ＿ｅｃｃ（０１・・・１０）＋ｆ＿ｅｃｃ（ＡＤＤＲ）＝ｆ＿ｅｃｃ（ＡＤＤＲ）
【００６４】
これは、チェックビット（ＥＣＣ）がここでも、アドレスによって完全に決定されることを意味する。
【００６５】
結論：特別なＤＡＴＡパターンを全てのアドレスに使用することができる。
【００６６】
フラッシュメモリ又はフラッシュメモリコントローラが、提案されるマーカ技法を使用する場合、ユーザマニュアル、データシート、又はアプリケショーンメモは通常、誤り訂正コードの使用に関する幾らかの説明を提供すべきである。例えば、どのコードワードが有効であり、どれが無効であるかについての情報をユーザマニュアル又はデータシートにおいて提供し得る。さらに、通常、ＥＣＣにより、アドレスがデータワードと一緒に保護されるか否か、又は別の方法が利用されるか否かについての情報を提供すべきである。ユーザマニュアル又はデータシートは通常、全て０及び／又は全て１が有効なコードワードであるか否かについてもユーザに通知する。
【００６７】
図４は、第１のメモリ領域及び第２のメモリ領域を含むメモリ領域を概略的に示す。第１のメモリ領域及び第２のメモリ領域は、メモリ領域のサブ領域である。メモリ領域は、第３のメモリ領域及び第４のメモリ領域も含む。再び第１及び第２のメモリ領域を参照すると、第１のメモリ領域は、アドレスＡＤＲにおける第１のメモリワード（例えば、１６ビットワード、３２ビットワード、又は６４ビットワード）に対応する。第２のメモリ領域は、第１のメモリワードに直接続くアドレスＡＤＲ＋１における第２のメモリワードに対応する。第１及び第２のメモリ領域は、ユニットとして見なされ、第１のメモリ領域は、メモリ領域に関するデータ状態情報の記憶に使用される。第２のメモリ領域は、実際のデータの記憶に使用される。
【００６８】
第３のメモリ領域は、第１のメモリ領域に対する誤り訂正データを記憶するように構成される。第４のメモリ領域は、第２のメモリ領域に対する誤り訂正データを記憶するように構成される。
【００６９】
図５は図４と同様である。しかし、メモリ領域は１つのメモリワードおよびその誤り訂正データのみに広がる。メモリワードは２つの部分、すなわち、第１のメモリ部分及び第２のメモリ部分に分割される。例えば、メモリワードが１６ビット幅である場合、メモリワードの８つの最上位ビット（ＭＳＢ）が、第１のメモリ領域に確保し得、メモリワードの８つの最下位ビット（ＬＳＢ）は、第２のメモリ領域に確保し得る。第１のメモリ領域と第２のメモリ領域との間での他の分割も可能である。第１のメモリ領域及び第２のメモリ領域がインタレースされることさえあり得る（例えば、偶数ビット：第１のメモリ領域、奇数ビット：第２のメモリ領域）。図５のメモリ領域は、誤り訂正データへの第３のメモリ領域も含む。
【００７０】
図６は、フラッシュメモリにアクセスする方法の概略流れ図を示す。方法は、フラッシュメモリの第１のメモリ領域を読み出すステップ６０２を含む。第１のメモリ領域は、２つの異なる実施態様で図４及び図５に概略的に示される。ステップ６０４において、第１のメモリ領域が所定のデータパターンを含むか否かが確認される。所定のデータパターンは、少なくとも第１のメモリ領域に対して決定される、結果として生成される誤り訂正データに影響しない。対応する誤り訂正データは、第３のメモリ領域に記憶し得る（図４及び図５参照）。次に、ステップ６０６において、第１のメモリ領域内の所定のデータパターンの有無に基づいて、フラッシュメモリの第２のメモリ領域のデータステータスを評価し得る。
【００７１】
方法は、データステータスが、第２のメモリ領域内に有効データが存在することを示す場合、第２のメモリ領域を読み出すステップを更に含み得る。このようにして、第２のメモリ領域を読み出すことは、条件付きでのみ実行され、それにより、第２のメモリ領域への読み出しアクセスを制御することができる。特に、第２のメモリ領域への読み出しアクセスは、対応する誤り訂正データのメモリ領域と共に、第２のメモリ領域が完全に消去されており（すなわち、書き込み可能）、且つ完全に消去された状態が有効ＥＣＣコードワードではない場合、回避することができる。換言すれば、完全に消去された第２のメモリ領域への不法読み出しアクセスは、メモリ領域のデータステータスの先の特定を実行することによって回避することができる。
【００７２】
さらに、データステータスにより、第２のメモリ領域が書き込み可能であることが示される場合、データを第２のメモリ領域に書き込むことを提供し得る。同じ状況で、所定のデータパターンは、第１のメモリ領域に書き込まれて、第２のメモリ領域での有効データの存在を示すようにデータステータスを変更する。第１のメモリ領域によって示されるデータステータスが、第２のメモリ領域に含まれる実際のデータに一致しないことを回避するために、両書き込み動作は通常、分離不可能である。
【００７３】
メモリの個々のメモリセルは、単方向様式でのみ個々に再プログラム可能である。この文脈では、「単方向様式」は、例えば、「０」から「１」への遷移は可能であるが、「１」から「０」への遷移は不可能なことを意味する。フラッシュメモリは、単一レベルセル（ＳＬＣ）又はマルチレベルセル（ＭＬＣ）に基づき得る。マルチレベルセルの場合、例えば、「０」から「１」を経て「２」を経て「３」に至る（すなわち、００から０１、そして１０、そして１１への）遷移が、プログラムのために可能であり得るが、「３」から「２」、そして「１」、そして「０」への遷移は不可能であることがある。「個々」という言葉は、メモリセルの個々（通常、１ビット、又はＭＬＣの場合にはｎビット）のプログラミングのみがこの制約を受け、ブロック単位又はチップ単位の消去（「逆方向」での再プログラミング）は実際に可能であり得ることを指す。既に「終了ステータス」（例えば、「１」）に達したメモリセル内の既存データは、所定のパターンによってそれ以上変更されない（それ以上の変更が単に、フラッシュメモリでの個々のビットプログラミングで可能ではないため）。
【００７４】
フラッシュメモリは、既存データと新データとの間で、上記新データを、既存データを既に含む第２のメモリ領域に書き込む場合、ビットＯＲ結合を暗黙的に実行し得、すなわち、
結果として生成されるメモリ内容＝既存データ  ＯＲ  新データ
である。
【００７５】
方法は、第１のメモリ領域、第２のメモリ領域、及び第３のメモリ領域を含むメモリブロックを消去して、メモリブロックを書き込み可能状態にリセットし、消去済み第１のメモリ領域、消去済み第２のメモリ領域、及び消去済み第３のメモリ領域を取得するステップを更に含み得る。メモリブロックの代わりに、データは、別のレベルで消去することもでき、例えば、メモリセクタ、メモリページ、又はメモリチップ全体の消去も可能である。次に、消去済み第１のメモリ領域に基づいて、第１のメモリ領域の誤り訂正データを決定し得る。場合によっては、誤り訂正データは、第１のメモリ領域のアドレスに依存し得る。方法は、第１のメモリ領域の誤り訂正データを消去済み第３のメモリ領域に書き込むことも含む。
【００７６】
前段落で説明したものに付け加えて、メモリブロックは、第２のメモリ領域に対する誤り訂正データを記憶する第４のメモリ領域を更に含み得る。メモリブロックを消去する状況では、第２のメモリ領域の誤り訂正データは決定されず、第４のメモリ領域に書き込まれず、それにより、実際のユーザデータ及び対応する誤り訂正データを第２のメモリ領域及び第４のメモリ領域に書き込むべきときまで、第２のメモリ領域及び第４のメモリ領域の両方を書き込み可能状態に保つ。
【００７７】
所定のデータパターン及び完全に消去された誤り訂正データは、基礎をなす誤り訂正コードの有効コードワードを形成する。換言すれば、ビットベクトル（パターン，０，・・・，０）は、誤り訂正コードのコードワードであり得る。
【００７８】
第１のメモリ領域は第１のメモリワードであり得、第２のメモリ領域は、第１のメモリ領域に対して既知のアドレス関係を有する第２のメモリワードであり得る。代替の態様によれば、第１のメモリ領域は、メモリワードが第１のメモリ領域及び第２のメモリ領域に分割されるようなメモリワードの第１の部分であり得、第２のメモリ領域はメモリワードの第２の部分であり得る。しかし、この第２の事例では、第１のメモリ領域及び第２のメモリ領域は同じ誤り訂正データを共有する。これは、少なくとも一般的な様式で、任意の様式で第２のメモリ領域のデータ内容を変更することが可能ではないことを意味し、その理由は、これが、誤り訂正データに影響を有し得、すなわち、誤り訂正データを変更する必要があるためである。幾つかの少数の事例では、「０」から「１」へのビット遷移のみが行われるため、誤り訂正データのそのような変更が可能であり得る。しかし、一般的な場合、誤り訂正データは、要求される様式で変更することができない。考慮に入れる必要がある制限についてのより詳細な説明に関しては、図２Ａ及び対応する説明を参照する。
【００７９】
図７は、更に提案される方法の概略流れ図を示す。方法は、フラッシュメモリ内のメモリ領域の既存データ上に、マーカとして所定のデータパターンをプログラムするステップ７０２を含む。メモリ領域（フラッシュメモリにも記憶される）の誤り訂正データは、所定のデータパターンの存在又は不在によって変更されず、すなわち、所定のデータパターンは誤り訂正コードにトランスペアレントである。所定のデータパターンが誤り訂正コードのヌル空間内にあると言うこともできる。既存データの条件は、既存データ内のビットが、所定のデータパターンのビットに必要なビット位置にないことである。ステップ７０４において、メモリ領域への読み出しアクセス又は書き込みアクセスが近々実行される場合、まず、メモリ領域が所定のデータパターンを含むか否かを評価し、メモリ領域内の所定のデータパターンの存在又は不在に基づいて、メモリ領域のデータステータスを決定する。
【００８０】
図８Ａ及び図８Ｂは、フラッシュメモリへの読み出しアクセス、書き込みアクセス、及び消去アクセスを管理する方法の概略流れ図を示す。ステップ８０２において、完全なメモリセクタ（又はブロック）が消去される。その結果、現時点で、メモリセクタ全体が書き込み可能である。なお、完全に消去された状態は、フラッシュメモリによっては（安全を理由にした規約又は対応する顧客要求に起因する）ＥＣＣ有効ではないことがある。したがって、ステップ８０４において、消去されたメモリセクタ内の少なくとも１つの第１のメモリ領域のＥＣＣデータが決定される。ＥＣＣデータは、第１のメモリ領域のアドレスに依存し得る。実際用途では、１つ置きのメモリワード（例えば、偶数アドレス０ｘ０、０ｘ２、０ｘ４、・・・におけるメモリワード）を複数の第１のメモリ領域として考え得る。ステップ８０４の結果、第１のメモリ領域の誤り訂正データは、ステップ８０６において、適するメモリ領域、すなわち、第３のメモリ領域（例えば、図４及び図５参照）に書き込まれ、したがって、ステップ８０６が完了した後、第１のメモリ領域は第１のメモリ領域と共に、ＥＣＣ有効である。
【００８１】
後に、アプリケーションコードは、フラッシュメモリ内の特定のメモリワードを読み出すことが可能であるか否か、又はデータを上記メモリワードに書き込むことが可能であるか否かをチェックしたいことがある。このために、ステップ８０８において、第１のメモリ領域を読み出し得る。続くステップ８１０において、第１のメモリ領域が所定のデータパターンを含むか否かが確認される。答えがいいえ（「Ｎ」）である場合、第２のメモリ領域のデータステータスは「書き込み可能」であり、方法は接続点１に続く。答えがはい（「Ｙ」）である場合、第２のメモリ領域のデータステータスは「有効データ（が）存在」である。
【００８２】
分岐点８１２において、第２のメモリ領域への読み出しアクセスを行うべきか否かを判断する。この問いへの答えは通常、アプリケーションコードによって提供される。答えがいいえである場合、方法は接続点２に続く。他の場合、方法はステップ８１４に続き、有効データが第２のメモリ領域から読み出される。ステップ８１４の後でも、方法は、図８Ｂに見出すことができる接続点２に続く。
【００８３】
図８Ｂは、上部の接続点１から開始され、これは分岐点８１０の「いいえ」の答えに対応する。したがって、第２のメモリ領域のデータステータスが「書き込み可能」であることが今確認された。ステップ８１６において、アプリケーションコードは、第２のメモリ領域への書き込みアクセスを実行すべきであるか否かについてクエリされる。答えが「いいえ」である場合、方法は接続点２に続き、これはステップ８１８と８２４との間に見出すことができる。ステップ８１６でのクエリへの答えが「はい」である場合、２つの動作の非分離結合８１８が実行される：まず、ステップ８２０において、所望のデータが第２のメモリ領域に書き込まれ、次に、ステップ８２２において、所定のパターンが第１のメモリ領域に書き込まれる。ステップ８２０及び８２２の順序は逆にすることもできる。非分離結合８１８が実行された後、方法は接続点２に達する。
【００８４】
接続点２に続き、分岐点８２４は、完全なメモリセクタ（又はメモリブロック）の消去に関して提供される。この判断は通常、フラッシュメモリ又はフラッシュメモリコントローラのいわゆる「ガーベッジコレクタ」によってなされる。完全なメモリセクタを消去する判断がなされる場合、方法は接続点３に続き、これは図８Ａの上部に見出すことができる。逆の場合、方法は接続点４に続き、これは図８Ａのステップ８０８に繋がる。完全なメモリセクタの消去は、任意の既存データを別のメモリセクタにコピーすることを含み得る。
【００８５】
図９は、ホストシステム９１０、フラッシュメモリコントローラ９２０、及びフラッシュメモリ９４０の概略ブロック図を示す。バス９１５を提供して、ホストシステム９１０をフラッシュメモリコントローラ９２０、そして場合によっては更なる周辺機器に接続し得る。フラッシュメモリコントローラ９２０については、図１０においてより詳細に説明する。
【００８６】
フラッシュメモリ９４０は、幾つかのメモリブロック、例えば、ブロック０、ブロック１、ブロック２、・・・を含み得る。各ブロックは、複数のページ、例えば、ページ０から始まって１２７までの１２８のページを含み得る。各ページは、幾つかのメモリワード、例えば、１２８のメモリワードに細分されている。上述したように、使用されるフラッシュ技術（２つの最も広く使用されているタイプを挙げれば、ＮＡＮＤフラッシュ又はＮＯＲフラッシュ）に応じて、ＮＡＮＤフラッシュの場合と同様に、一度に１ページ全体でデータをフラッシュメモリに読み書きし得る。ＮＯＲタイプフラッシュでは通常、単一のマシンワード（バイト）を独立して書き込むか、又は読み出すことができ、すなわち、最小書き込み粒度はＥＣＣ幅に等しいが、より大きくてもよい（結合された幾つかのＥＣＣワード）。データを消去する必要がある場合、これは通常、一度に１ブロック全体でのみ可能である。フラッシュは通常、例えば、ＥＥＰＲＯＭよりも小さなフットプリントを有し、したがって、面積当たりより多数のデータを記憶することができる（より高いデータ密度）。フラッシュメモリは、特に大量のデータを書き込む場合、幾つかのタイプの非フラッシュメモリよりも優れた速度利点を示し得る。
【００８７】
図１０は、フラッシュメモリコントローラ９２０の概略ブロック図を示す。フラッシュメモリコントローラ９２０は、パターンプログラマ９２１と、所定のパターンの記憶装置９２２と、パターンコンパレータ９２３と、任意選択的なガーベッジコレクタ９２４と、メモリアドレスマネージャ９２５と、誤り訂正ユニット（ＥＣＣユニット）９２６とを備える。フラッシュメモリコントローラ９２０は、バス９１５及びフラッシュメモリ９４０に接続される。バス９１５は通常、データバス、アドレスバス、及び／又は制御バスを備える。
【００８８】
パターンプログラマ９２１は、所定のデータパターンをフラッシュメモリ９４０のメモリ領域に書き込むように構成される。既に述べたように、所定のデータパターンは、少なくとも第１のメモリ領域に対して決定される、結果として生成される誤り訂正データに影響しない。所定のパターンは、フラッシュメモリコントローラ内の記憶装置９２２によって提供される。記憶装置９２２は、レジスタにハードワイヤード接続されるか、又はレジスタを備え得る。所定のデータパターンを書き込むべきフラッシュメモリ９４０内のアドレスは、メモリアドレスマネージャ９２５によって決定され、フラッシュメモリ９４０に提供される。
【００８９】
パターンコンパレータ９２３は、フラッシュメモリの第１のメモリ領域から読み出されたデータを所定のデータパターンと比較し、第１のメモリ領域内の所定のデータパターンの存在又は不在に基づいて、フラッシュメモリの第２のメモリ領域のデータステータスを評価するように構成される。
【００９０】
誤り訂正ユニット９２６は、フラッシュメモリに記憶されるデータを処理して、これもまたフラッシュメモリに記憶される対応する誤り訂正データを取得するとともに、フラッシュメモリから読み出されるデータ及び対応する誤り訂正データに基づいて、誤りの検出及び訂正を実行するように構成される。データをフラッシュメモリ９４０に書き込む場合、ＥＣＣユニット９２６は、書き込むデータを受信する。さらに、ＥＣＣユニット９２６は、データを書き込むフラッシュメモリ９４０内のアドレスも受信し得る。書き込むデータ及び対応する誤り訂正データは次に、フラッシュメモリ９４０に提供される。メモリアドレスマネージャ９２５は、アドレスをＥＣＣユニット９２６に提供するとともに、フラッシュメモリ９４０にも提供する。
【００９１】
データをフラッシュメモリ９４０から読み出す場合、データ及び対応する誤り訂正データ（ＥＣＣデータ）は、アドレスマネージャ９２５によって指定されるアドレスにおいて読み出される。データ、ＥＣＣデータ、及びアドレスはＥＣＣユニット９２６に提供され、ＥＣＣユニット９２６はこれらの入力を使用して、可能な場合、データ及びＥＣＣデータに対して誤り訂正を実行する。次に、誤り訂正されたデータは、パターンコンパレータ９２３に提供してもよく、又はバス９１５を介してホストシステム９１０（図９）に直接提供してもよい。誤り訂正されたデータは、第２のメモリ領域から読み出された場合、ホストシステム９１０に直接提供し得る。幾つかの実施態様では、第２のメモリ領域が、完全に消去される（対応する誤り訂正データを記憶する対応するメモリ部分を含む）か、又は所定のデータパターン以外の実際のユーザデータを含むことを想起する。
【００９２】
更なる可能な態様によれば、メモリ内のメモリワードのデータステータスを変更する方法が提供される。方法は、メモリワードの少なくとも部分又はメモリワードに対して既知のアドレス関係を有する別のメモリワードの所定のパターンを書き込むことを含み、所定のパターンの存在又は不在は、メモリワード又は他のメモリワードが、誤り訂正コードに従って上記誤り訂正データの対応する計算を受ける際、メモリワード又は他のメモリワードに対して結果生成される誤り訂正データを変更せず、所定のパターンの不在は、メモリワードの第１のデータステータスを示し、所定のパターンの存在は、メモリワードの第２のデータステータスを示す。
【００９３】
誤り訂正データはメモリに記憶し得る。
【００９４】
フラッシュメモリのタイプに応じて、メモリの個々のメモリセルは、単方向様式でのみ個々に再プログラム可能であり得る。例えば、メモリは、所定のパターンとメモリワード又は他のメモリワード内の既存データとの間でビットＯＲ結合を暗黙的に実行し得る。
【００９５】
第１のデータステータスは、メモリワードの少なくとも部分に含まれるデータが有効であることを示し得る。第２のデータステータスは、メモリワードの少なくとも部分に含まれるデータが無効であることを示し得る。方法は、メモリワード又は他のメモリワードの少なくとも部分を読み出すことと、所定のパターンがメモリワード又は他のメモリワードに存在するか否かについての評価に基づいて、データステータスを決定することとを更に含み得る。
【００９６】
メモリワードのデータステータスが有効である場合、方法は、メモリワードに対して読み出しアクセス及び書き込みアクセスのうちの少なくとも一方を実行するステップを含み得る。
【００９７】
方法は、メモリワード又は他のメモリワードを読み出すステップを更に含み得る。次に、誤り訂正データを使用して、メモリワード又は他のメモリワードへの誤り訂正を実行し得る。
【００９８】
誤り訂正データは、メモリワード又は他のメモリワードのアドレスに基づくこともできる。
【００９９】
メモリワードは、メモリワードに記憶すべき実際のデータに確保された第１の複数のビットと、第１の複数のビットとは互いに素な第２の複数のビットとを含み得、第２の複数のビットは所定のパターンに確保される。
【０１００】
別の態様によれば、データを不揮発性メモリ領域に書き込み方法は、そのメモリ領域に既に存在するデータを読み出すステップ又は動作を含み得る。次に、書き込みが意図されるデータを、既に存在するデータによって占められていないメモリ領域の部分に書き込み得る。方法は、アドレス、既存データ、新データ、及び補助データの誤り訂正データが、既存データの既に存在する誤り訂正データと同じであるように、アドレス、既に存在するデータ、及び新データに基づいて追加の補助データを計算するステップ／動作を更に含み得る。補助データは、既存データ又は新データによって占められていないメモリ領域に書き込み得る。すなわち、補助データは、既存データによって占められていないか、又は新データによって占められることがないメモリ領域の更なる部分に書き込み得る。
【０１０１】
この方法では、新データで補足して、新データ値を形成するか、又は既存データに新しい意味若しくは解釈を付与することにより、既存データを変更することができる。同時に、補助データは、通常、誤り訂正データにおいて反映する必要があるコードワード内の任意の変更を補償し得る。誤り訂正データを一定に保ち、新データ及び補助データを、既存データによってまだ占められていないメモリ領域の部分に書き込むことにより、メモリ領域内の既存データの消去は、回避するか、又は少なくとも後の書き込み動作まで遅らせることができる。その結果、消費電力がより低く、耐久性がより高く、且つ／又はより高速のメモリを予期し得る。
【０１０２】
なお、書き込みアクセスの完了後、新データ及び補助データは、続く書き込みアクセスで考慮する必要がある既存データになる。
【０１０３】
リストとしてまとめると、上述した方法は、例えば、以下のように説明することができる：
データを不揮発性メモリ領域に書き込む方法は、
そのメモリ領域に既に存在するデータを読み出すことと、
既に存在するデータによって占められていないメモリ領域の部分にそのデータを書き込むことと、
アドレス、既存データ、新データ、及び補助データの誤り訂正データが、既存データの既に存在する誤り訂正データと同じであるように、アドレス、既に存在するデータ、及び新データに基づいて追加の補助データを計算することと、
既存データ又は新データによって占められていないメモリ領域に補助データを書き込むことと、
とを含む。
【０１０４】
データを不揮発性メモリに書き込む方法に関して上述した概念は、メモリコントローラに適用することもできる。例えば、データを不揮発性メモリに書き込むように、メモリコントローラに命令し得る。データをメモリ領域に実際に書き込む前に、メモリコントローラは、ターゲットメモリ領域内に既に存在するデータを読み出し得る。メモリコントローラは、ターゲットメモリ領域内の幾つかの部分を考慮し得る。これらの部分の１つが完全に空である（例えば、ゼロのみを含む）場合、メモリコントローラは、データがメモリ領域のこの特定の部分に存在しないことを考慮し得る。メモリコントローラは更に、この特定の部分が、メモリ領域（場合によっては、フラッシュメモリの場合であり得るように、メモリブロック全体さえも）を消去する必要なく、新データ及び／又は補助データをメモリ領域に書き込むために利用可能であると結論付け得る。メモリコントローラは、新データに意図されるメモリ領域のそれらの部分及びの所データに意図されるメモリ領域のそれらの部分を区別して、メモリ領域を読み出す場合、両タイプのデータを区別可能であり得る。通常、補助データは、誤り訂正ステップ中に使用されるが、その後、通常、メモリ領域を読み出す際、無視することができる。メモリコントローラは、メモリ領域から誤り訂正データを読み出し、少なくとも、利用される誤り訂正コード（例えば、２ビット誤り訂正コード、すなわち、最高で２つの誤ったビットを訂正することができる）の可能性内で、コードワードを再構築するように更に構成し得る。
【０１０５】
メモリコントローラはレジスタ（又は同様の構造体）を備え得、レジスタは通常、メモリ領域のサイズを有し、それにより、メモリコントローラは、メモリ領域を読み出し、上記メモリ領域にデータを書き込む書き込み動作を実行しながら、その内容を記憶し得る。なお、メモリ領域の読み出しは、メモリ領域の内容をレジスタにコピーすることに対応する。
【０１０６】
メモリコントローラは占有検出器を更に備え得、占有検出器は、メモリ領域の特定の部分が現在、既存データで占有されているか否かを検出するように構成される。占有検出器は、１つ又は複数のコンパレータ及び論理回路を備え得る。さらに、占有検出器はデータタイプ特定器を備え得、これは、メモリ領域の特定の部分内のデータがペイロードデータであるか、それとも補助データであるかを特定するように構成される。データタイプ特定器は、メモリ領域の細分に基づいて機能し得る。例えば、メモリ領域の下位ビット範囲を補助データに確保し得、上位ビット範囲を実際のユーザデータ（ペイロードデータ）に確保し得る。さらに、特定のビット範囲を誤り訂正データに確保し得る。
【０１０７】
メモリコントローラは、メモリ領域から読み出されたデータから、可能な限り元のコードワードを再構築するように構成される誤り訂正器を更に備え得る。メモリコントローラは補助データ計算器を備えることもでき、この計算器は、既存の誤り訂正データを変更されないまま保つことができ、追加のデータ（新データ及び補助データ）のみがメモリ領域の非占有部分に書き込まれるように、補助データを計算するように構成される。補助データ及び新データは、メモリコントローラがレジスタをメモリ領域に書き込む前、レジスタに一時的に記憶し得る。代替として、レジスタのそれらの部分のみを、新データ及び／又は補助データを含むメモリ領域の対応する部分に書き込むことが可能であり得る。
【０１０８】
リストとしてまとめると、上述したメモリコントローラ又は装置は以下のように説明することができる。
データを不揮発性メモリ領域に書き込む装置、例えば、メモリコントローラであって、
−そのメモリ領域に既に存在するデータを読み出すことと、
−既に存在するデータによって占められていないメモリ領域の部分にそのデータを書き込むことと、
−アドレス、既存データ、新データ、及び補助データの誤り訂正データが、既存データの既に存在する誤り訂正データと同じであるように、アドレス、既に存在するデータ、及び新データに基づいて追加の補助データを計算することと、
−既存データ又は新データによって占められていないメモリ領域に補助データを書き込むことと、
を実行するように構成される、装置。
【０１０９】
代替的に、以下のように説明し得る装置を提供し得る：
装置、例えば、メモリコントローラであって、
−メモリ領域から読み出された内容から元のコードワードを再構築するように構成される誤り検出器であって、元のコードワードは、誤り訂正コードに属し、既に存在するデータの部分、誤り訂正データの部分、新データに提供される空部分、及び補助データ用の空部分を含む、誤り検出器と、
−少なくとも、既に存在するデータ、誤り訂正データ、及びメモリ領域に書き込まれる新データに基づいて、補助データが誤り訂正コードの誤り訂正データドメイン内の新データを補償し、それにより、元のコードワードの誤り訂正データを変更しないまま保つことができるように、補助データを計算するように構成される補助データ計算器と、
を備える、装置。任意選択的に、追加のデータ（新データ及び補助データ）のみが、メモリ領域の非占有（又は空）部分に書き込まれる。
【０１１０】
幾つかの態様を装置の文脈の中で説明したが、これらの態様が対応する方法の説明も表し、ブロック又は装置が方法ステップ又は方法ステップの特徴に対応することが明らかである。同様に、方法ステップの文脈で説明される態様は、対応する装置の対応するユニット、物品、又は特徴の説明も表す。
【０１１１】
特定の実施要件に応じて、実施形態はハードウェア又はソフトウェアで実施することができる。実施は、電子的に読み出し可能な制御信号を記憶し、各方法が実行されるようにプログラマブルコンピュータシステムと協働する（又は協働可能な）デジタル記憶媒体、例えば、フロッピーディスク、ＤＶＤ、ＣＤ、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、又はフラッシュメモリを使用して実行することができる。
【０１１２】
実施形態による幾つかの実施形態は、電子的に可読制御信号を有する非一時的なデータキャリアを含み、制御信号は、本明細書に記載の方法の１つが実行されるように、プログラマブルコンピュータシステムと協働可能である。
【０１１３】
一般に、本発明の実施形態は、プログラムコードを有するコンピュータプログラム製品として実施することができ、プログラムコードは、コンピュータプログラム製品がコンピュータで事項されると、方法の１つを実行するように動作可能である。プログラムコードは、例えば、機械可読キャリアに記憶し得る。
【０１１４】
他の実施形態は、機械可読キャリアに記憶された、本明細書に記載の方法の１つを実行するコンピュータプログラムを含む。
【０１１５】
したがって、換言すれば、本発明の方法の実施形態は、コンピュータプログラムがコンピュータで実行されると、本明細書に記載の方法の１つを実行するプログラムコードを有するコンピュータプログラムである。
【０１１６】
したがって、本発明の方法の更なる実施形態は、本明細書に記載の方法の１つを実行する、記録されたコンピュータプログラムを含むデータキャリア（又はデジタル記憶媒体、又はコンピュータ可読媒体）である。
【０１１７】
したがって、本発明の更なる実施形態は、本明細書に記載の方法の１つを実行するコンピュータプログラムを表すデータストリーム又は信号シーケンスである。データストリーム又は信号シーケンスは、例えば、データ通信接続を介して、例えばインターネットを介して転送されるように構成し得る。
【０１１８】
更なる実施形態は、本明細書に記載の方法の１つを実行するように構成又は適合される処理手段、例えば、コンピュータ又はプログラマブル論理装置を含む。
【０１１９】
更なる実施形態は、本明細書に記載の方法の１つを実行するコンピュータプログラムをインストールしたコンピュータを含む。
【０１２０】
幾つかの実施形態では、プログラマブル論理装置（例えば、フィールドプログラマブルゲートアレイ）を使用して、本明細書に記載の方法の機能の幾つか又は全てを実行し得る。幾つかの実施形態では、フィールドプログラマブルゲートアレイは、マイクロプロセッサと協働して、本明細書に記載の方法の１つを実行し得る。一般に、方法は任意のハードウェア装置によって実行される。
【０１２１】
本発明について、幾つかの有利な実施形態に関して説明したが、本発明の範囲に入る代替、置換、及び均等物がある。本発明の方法及び構成を実施する多くの代替の方法があることにも留意されたい。したがって、以下の添付の特許請求の範囲が、本発明の真の趣旨及び範囲内にある全てのそのような代替、置換、及び均等物を包含するものとして解釈されることが意図される。
【０１２２】
上述した実施形態は、本発明の原理の単なる例示である。本明細書に記載される構成及び詳細の変更及び変形が当業者には明らかになることが理解される。したがって、直後の特許請求の範囲によってのみ限定され、本明細書での実施形態の記載及び説明として提示される特定の詳細によって限定されないことが意図である。
【０１２３】
各請求項は単一の請求項のみを参照するが、本開示は請求項の考えられる任意の組み合わせも包含する。
【符号の説明】
【０１２４】
９１０  ホストシステム
９１５  バス
９２０  フラッシュメモリコントローラ
９２１  パターンプログラマ
９２２  記憶装置
９２３  パターンコンパレータ
９２４  ガーベッジコレクタ
９２５  メモリアドレスマネージャ
９２６  誤り訂正ユニット
９４０  フラッシュメモリ
【図１Ａ−１Ｂ】
2015225661.tif 000003
【図２Ａ−２Ｂ】
2015225661.tif 000004
【図３】
2015225661.tif 000005
【図４】
2015225661.tif 000006
【図５】
2015225661.tif 000007
【図６】
2015225661.tif 000008
【図７】
2015225661.tif 000009
【図８Ａ】
2015225661.tif 000010
【図８Ｂ】
2015225661.tif 000011
【図９】
2015225661.tif 000012
【図１０】
2015225661.tif 000013
【外国語明細書】
2015225661000001.pdf
2015225661000002.pdf
2015225661000003.pdf
2015225661000004.pdf