(57)【要約】  フラッシュメモリセル（１２４）からデータを読み出すためのシステム及び方法は、コンピュータソフトウェアを含み、メモリセルのグループから電圧を検出することを含む。メモリセルのグループは、エラー検出のために関連メタデータを有し（６０５）、各メモリセルは、複数の可能なデータ値から選択されるデータ値を表す電圧を格納する。可能な各データ値は、アナログ電圧の複数のオーバーラップしない範囲のうちの１つの範囲に対応する。不確実なデータ値を有するメモリセルは、検出した電圧に基づいて識別される（６１０）。不確実なデータ値を有するメモリセルに対する代替データ値が判定される（６１５）。代替データ値の組合せが選択され（６２５）、誤り検出検査は、メモリセルと関連するメタデータ及び代替データ値の選択された組合せを使用して実行される（６３５）。
2009537935.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリセルを含む多値フラッシュメモリ素子を管理する方法であって、
データ値を表す電圧レベルまで電荷を格納する第１のメモリセルから電圧レベルを検出し、
前記第１のメモリセルに対応する解像度レジスタエントリに少なくとも部分的に基づいて、前記電圧レベルにより表される前記データ値を判定し、
前記複数のメモリセルのうちの少なくとも１つに対応する解像度レジスタエントリに少なくとも部分的に基づいて決定される、前記データ値を表す目標電圧になるまで、前記複数のメモリセルのうちの前記少なくとも１つに電荷を印加することを含むことを特徴とする方法。
【請求項２】
前記複数のメモリセルのうちの前記少なくとも１つは前記第１のメモリセルであり、前記第１のメモリセルに電荷を印加する動作は、前記第１のメモリセルにおける電圧低下を調整するために前記第１のメモリセルに追加の電荷を印加することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
参照セルに格納された基準電圧レベルを検出することにより前記第１のメモリセルにおける低下量を判定することを更に含むことを特徴とする請求項２に記載の方法。
【請求項４】
前記参照セルは、対応する所定の電圧レベルと関連付けられ、前記低下量は、前記参照セルに格納された前記検出された電圧レベルと前記所定の電圧レベルとを比較することにより判定されることを特徴とする請求項３に記載の方法。
【請求項５】
前記低下量は、複数の参照セルにおいて格納された電圧レベルを検出することにより判定されることを特徴とする請求項３に記載の方法。
【請求項６】
前記第１のメモリセルに印加される追加の電荷量は補正関数に基づいて判定されることを特徴とする請求項２に記載の方法。
【請求項７】
保守動作を開始するためにホストデバイスから信号を受信することを更に含み、前記データ値を表す目標電圧になるまで前記複数のメモリセルのうち少なくとも１つに電荷を印加することは前記受信した信号に応答して実行されることを特徴とする請求項１に記載の方法。
【請求項８】
前記ホストデバイスからの前記信号は電源条件を示すことを特徴とする請求項７に記載の方法。
【請求項９】
前記ホストデバイスからの前記信号は、前記ホストデバイスが交流電力を供給されるかを示すことを特徴とする請求項８に記載の方法。
【請求項１０】
前記ホストデバイスからの前記信号は、前記ホストデバイスのバッテリが所定の充電レベルまで充電されているかを示すことを特徴とする請求項８に記載の方法。
【請求項１１】
前記ホストデバイスからの前記信号は、スケジュールされた保守動作を示すことを特徴とする請求項７に記載の方法。
【請求項１２】
保守動作を開始するためにフラッシュメモリプロセッサから信号を受信することを更に含み、前記データ値を表す目標電圧になるまで前記複数のメモリセルのうち少なくとも１つに電荷を印加することは前記受信した信号に応答して実行されることを特徴とする請求項１に記載の方法。
【請求項１３】
前記フラッシュメモリプロセッサからの前記信号は、前記フラッシュメモリプロセッサが保守動作を実行するのに十分な帯域幅を有することを示すことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記フラッシュメモリプロセッサからの前記信号は、前記フラッシュメモリプロセッサがアイドル状態であることを示すことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記第１のメモリセルに対応する前記解像度レジスタエントリは、第１の可能なデータ値数に対応する第１の解像度を示し、
前記方法は、
第２の可能なデータ値数に対応する第２の解像度で書き込むために信号を受信し、
前記複数のメモリセルのうちの前記少なくとも１つに対応する解像度レジスタエントリを前記第２の解像度に更新することを更に含み、前記目標電圧は前記第２の解像度に基づくことを特徴とする請求項１に記載の方法。
【請求項１６】
前記第１の可能なデータ値数は前記第２の可能なデータ値数より多く、前記複数のメモリセルのうちの前記少なくとも１つは前記複数のメモリセルから選択された２つ以上のメモリセルを含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記第１の可能なデータ値数は前記第２の可能なデータ値数と等しく、前記複数のメモリセルのうち前記少なくとも１つは前記第１のメモリセルとは異なるメモリセルを含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記第２の可能なデータ値数は、前記第１の可能なデータ値数を上回ることを特徴とする請求項１５に記載の方法。
【請求項１９】
前記第１の可能なデータ値数は４ビットを超えないことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記第１の可能なデータ値数は２ビットであることを特徴とする請求項１９に記載の方法。
【請求項２１】
前記第１の可能なデータ値数は１ビットであることを特徴とする請求項１９に記載の方法。
【請求項２２】
前記第２の可能なデータ値数は少なくとも４ビットであることを特徴とする請求項１８に記載の方法。
【請求項２３】
前記第２の可能なデータ値数は少なくとも８ビットであることを特徴とする請求項１８に記載の方法。
【請求項２４】
前記第１の解像度で前記第１のメモリセルに格納される前記データ値は、ホストデバイスから受信されるデータが前記フラッシュメモリ素子に書き込まれる書き込み動作の結果であることを特徴とする請求項１８に記載の方法。
【請求項２５】
ホストデバイスから受信されるデータを前記フラッシュメモリ素子に書き込むためにホストデバイスから信号を受信し、
前記ホストデバイスから受信される前記データ値を第１の可能なデータ値数に対応する第１の解像度で前記第１のメモリセルに書き込み、
前記第１のメモリセルに対応する前記解像度レジスタに前記第１の解像度を記録し、
前記第１のデータ値数を上回る第２の可能なデータ値数に対応する第２の解像度で書き込むために信号を受信し、
前記第２の解像度を示すように前記複数のメモリセルのうちの前記少なくとも１つに対応する解像度レジスタを更新することを更に含み、前記目標電圧は前記第２の解像度に基づくことを特徴とする請求項１に記載の方法。
【請求項２６】
前記ホストデバイスの電力条件を示す信号を前記ホストデバイスから受信することを更に含むことを特徴とする請求項２５に記載の方法。
【請求項２７】
前記第１のメモリセルに対応する前記解像度レジスタエントリは、第１の可能なデータ値数に対応する第１の解像度を示し、
前記方法は、
前記第１の可能なデータ値数より少ない第２の可能なデータ値数に対応する第２の解像度を示すように前記第１のメモリセルに関連付けれられる前記解像度レジスタエントリを更新し、
第２のデータ値を前記第２の解像度で前記第１のメモリセルに書き込むことを更に含むことを特徴とする請求項１に記載の方法。
【請求項２８】
前記第１のメモリセルと関連付けられる前記解像度レジスタエントリの更新及び前記第２の解像度での前記第１のメモリセルへの書き込みは、前記第１のメモリセルを含むメモリセルのページと関連付けられる誤り条件によりトリガされることを特徴とする請求項２７に記載の方法。
【請求項２９】
前記メモリセルのページはダウングレードされたメモリセルの第２のページと対にされ、
前記方法は、
前記メモリセルのページの対を前記第１の解像度でメモリセルの単一ページとして処理するように論理アドレス指定ソフトウェアコードを更新することを更に含むことを特徴とする請求項２８に記載の方法。
【請求項３０】
実行された時に動作を実行させるコンピュータ可読命令を含む製品であって、前記動作は、
保守動作を実行するかを判定し、
保守動作が実行されるべきであると判定することに応答してメモリセルのページと関連付けられる誤り情報を識別し、
前記誤り情報が誤り基準を満たすかを判定し、
前記メモリセルのページに対応する１つ以上の解像度レジスタを第１の解像度から第２の解像度に調整することとを含み、前記第１の解像度及び前記第２の解像度の各々は各々が可能なデータ値に対応する複数の電圧範囲を規定し、前記第１の解像度は前記第２の解像度より多くの電圧範囲を有することを特徴とする製品。
【請求項３１】
前記保守動作を実行するかを判定することは、ホストデバイスが所定の条件を満たす電源を有するかを判定することを含むことを特徴とする請求項３０に記載の製品。
【請求項３２】
前記所定の条件は、前記ホストデバイスが交流電力を受け取っていることを含むことを特徴とする請求項３１に記載の製品。
【請求項３３】
前記所定の条件は、前記ホストデバイスがバッテリを所定の充電レベルまで充電していることを含むことを特徴とする請求項３１に記載の製品。
【請求項３４】
前記保守動作を実行するかを判定することは、プロセッサが所定の閾値を超える未使用の帯域幅を有するかを判定することを含むことを特徴とする請求項３０に記載の製品。
【請求項３５】
格納されるデータ値における低下を調整する方法であって、
所定の電圧まで充電される参照セルを含み且つ各々がデータ値に対応する目標電圧まで充電される複数のメモリセルに電荷を印加し、
前記参照セルにおいて電圧レベルを検出し、
メモリセルのグループから電圧レベルを検出し、
前記参照セルの前記検出した電圧レベルと前記所定の電圧との差分に基づいて前記複数のメモリセルに追加の電荷を印加することを含むことを特徴とする方法。
【請求項３６】
第２の参照セルにおいて電圧レベルを検出することを更に含み、前記複数のメモリセルに追加の電荷を印加することは、前記第２の参照セルの前記検出した電圧レベル及び所定の第２の参照セル電圧に更に基づくことを特徴とする請求項３５に記載の方法。
【請求項３７】
前記複数のメモリセルは、ＮＡＮＤフラッシュメモリセルを含むことを特徴とする請求項３５に記載の方法。
【請求項３８】
前記複数のメモリセルは、ＮＯＲフラッシュメモリセルを含むことを特徴とする請求項３５に記載の方法。
【請求項３９】
各データ値は４ビットを上回るビット数を含むことを特徴とする請求項３５に記載の方法。
【請求項４０】
データを格納するためのシステムであって、
各々が指定されたビット数を有するデータ値に対応する電圧レベルになるまで書き込み動作中に電荷を受け取るように構成された複数のメモリセルと、
前記複数のメモリセルと関連付けられ、各々が１つ以上の対応するメモリセルに格納されたビット数を示す複数のエントリを含む解像度レジスタと、
ホストデバイスに対する電源条件を示す信号を前記ホストデバイスから受信するように構成されるホストインタフェースと、
前記複数のメモリセルにデータ値を書き換え、所定の電源条件を示す信号に応答して、第１のビット数から第２のビット数を示すように前記解像度レジスタを調整するように構成されるプロセッサとを備えることを特徴とするシステム。
【請求項４１】
データにアクセスするために前記ホストデバイスから受信される論理アドレスを物理アドレスに変換するための論理アドレス指定ソフトウェアコードを更に備えることを特徴とする請求項４０に記載のシステム。
【請求項４２】
前記ホストインタフェースは、ホストデバイスとデータを交換するために、前記ホストデバイスからコマンドを受信するように更に構成されることを特徴とする請求項４０に記載のシステム。
【請求項４３】
前記複数のメモリセルは、ＮＡＮＤフラッシュメモリセルを含むことを特徴とする請求項４０に記載のシステム。
【請求項４４】
実行された時に動作を実行させるコンピュータ可読命令を含む製品であって、前記動作は、
保守動作を実行するかを判定し、
複数のフラッシュメモリセルと関連付けられる保守ログを読み出し、
前記保守ログに記録される保守活動を実行することを含み、前記保守活動は、
元はより低い解像度で格納されたデータ値をより高い解像度で書き換えること、
所定の誤り条件と関連付けられるメモリセルのグループに対する解像度を低減すること、
前記元のデータ値と同一の解像度で、所定の誤り閾値を超えるデータ値を書き換えること、
最も頻繁にアクセスされるデータをアクセスされる頻度が最も少ないデータと交換すること、
電圧低下に対する補正を行なうためにメモリセルに追加の電荷を印加することによりデータ値をリフレッシュすることから成るグループから選択される、ことを特徴とする製品。
【請求項４５】
前記保守動作を実行するかを判定することは、ホストデバイスが所定の条件を満たす電源を有するかを判定することを含むことを特徴とする請求項４４に記載の製品。
【請求項４６】
前記所定の条件は、前記ホストデバイスが交流電力を受け取ることを含むことを特徴とする請求項４５に記載の製品。
【請求項４７】
前記所定の条件は、前記ホストデバイスがバッテリを所定の充電レベルまで充電していることを含むことを特徴とする請求項４５に記載の製品。
【請求項４８】
前記保守動作を実行するかを判定することは、内部プロセッサが所定の閾値を超える未使用の帯域幅を有するかを判定することを含むことを特徴とする請求項４４に記載の製品。
【請求項４９】
前記動作は、前記保守活動のうちの１つ以上の保守活動の間に異なる物理メモリセルに書き換えられるデータ値に対して論理アドレス指定ソフトウェアコードを更新することを更に含むことを特徴とする請求項４４に記載の製品。
【発明の詳細な説明】
【技術分野】
【０００１】
種々の実施例は、一般に不揮発性メモリ素子に関し、特定の実施例は、多値フラッシュセルを動作させるシステム及び方法に関する。
【背景技術】
【０００２】
計算装置の能力及び機能が増加するのに伴い、データ記憶装置に対する要求も増加している。データ記憶装置は、例えばプロセッサにより実行されて得るプログラム命令（すなわち、コード）を格納するために使用されている。例えばデータ記憶装置は、オーディオ、画像及び／又はテキスト情報を含む他の種類のデータを格納するためにも使用されている。近年、多くのデータコンテンツ（例えば、歌、音楽映像等）を格納できるデータ記憶装置を有するシステムが携帯デバイスにおいて普及している。
【０００３】
そのような携帯デバイスは、小さなフォームファクタを有し且つバッテリ等のポータブル電源から動作可能であるデータ記憶装置（data storage device：ＤＳＤ）を含む。携帯デバイスにおけるＤＳＤの中には、電源から切断された時にデータを保存できる不揮発性メモリを提供できるものもある。携帯デバイスは、ハードディスクドライブ、ＥＥＰＲＯＭ（電気的消去可能プログラマブル読み出し専用メモリ）及びフラッシュメモリ等の種々の不揮発性データ記憶装置を使用している。
【０００４】
フラッシュメモリは、広く使用される種類のＤＳＤとなっている。例えばフラッシュメモリは、携帯電子デバイス及び消費者アプリケーションにおいて不揮発性メモリを提供する。フラッシュメモリは、ＮＯＲフラッシュ及びＮＡＮＤフラッシュの２種類である。一般にＮＯＲフラッシュは、所定の位置でコードを実行するための容量を提供し、ランダムにアクセス可能である（すなわち、ＲＡＭと同様）。一般にＮＡＮＤフラッシュは、より迅速にデータを消去でき、大量のデータ（例えば、５１２バイトの量）にアクセスでき、同等のＮＯＲフラッシュより多くの寿命消去サイクルを提供することができる。例えば、一般にＮＡＮＤフラッシュは、デジタルカメラ及びＭＰ３プレーヤ等の消費者デバイスの高密度ファイル記憶媒体としてビット当たりのコストを安価なコストで不揮発性記憶装置を提供し得る。
【０００５】
一般的なフラッシュメモリは、デジタルデータ値を表す電圧で各メモリセルに電荷を格納することにより１つの情報を格納する。２値セルは、「高」電圧に充電されるか又は「低」電圧に放電されるセルに基づいて１ビットの情報を格納する。ＮＡＮＤフラッシュメモリは、４つの異なる電圧範囲のうち１つの範囲内になるように電荷を復号化することにより、単一のセルに最大２ビットの情報を格納するように開発された。ＮＯＲフラッシュメモリは、２５６個の異なる電圧範囲のうち１つの範囲内になるように電荷を復号化することにより、単一のセルに最大８ビットの情報を格納できるように開発された。
【発明の開示】
【課題を解決するための手段】
【０００６】
説明される装置及び関連するシステム、方法及びコンピュータプログラム製品は、フラッシュメモリ素子における多値データ記憶装置に関する。
【０００７】
１つの側面において概要を述べると、複数のメモリセルを含む多値フラッシュメモリ素子は、データ値を表す電圧レベルまで電荷を格納する第１のメモリセルから電圧レベルを検出することにより管理される。電圧レベルにより表されるデータ値は、第１のメモリセルに対応する解像度レジスタエントリに少なくとも部分的に基づいて判定される。電荷は、データ値を表す目標電圧になるまで１つ以上のメモリセルに印加される。目標電圧は、１つ以上のメモリセルに対応する解像度レジスタエントリに少なくとも部分的に基づいて判定される。
【０００８】
実施例は、１つ以上の以下の特徴を含んでもよい。１つ以上のメモリセルは第１のメモリセルであり、第１のメモリセルに電荷を印加する動作は、第１のメモリセルにおける電圧低下を調整するために第１のメモリセルに追加の電荷を印加することを含む。第１のメモリセルにおける低下量は、参照セルに格納された基準電圧レベルを検出することにより判定される。参照セルは、対応する所定の電圧レベルと関連付けられ、低下量は、所定の電圧レベルを参照セルに格納された検出電圧レベルと比較することにより判定される。或いは、低下量は、複数の参照セルにおいて格納された電圧レベルを検出することにより判定される。また、第１のメモリセルに印加される追加の電荷量は補正関数に基づいて判定される。
【０００９】
信号がホストデバイスから受信され、保守動作を開始する。受信した信号に応答して、電荷はデータ値を表す目標電圧になるまで１つ以上のメモリセルに印加される。ホストデバイスからの信号は電源条件を示す。ホストデバイスからの信号は、ホストデバイスが交流電力を供給されるか及び／又はホストデバイスのバッテリが所定の充電レベルまで充電されているかを示す。また、ホストデバイスからの信号は、スケジュールされた保守動作を示す。
【００１０】
信号がフラッシュメモリプロセッサから受信され、保守動作が開始される。受信した信号に応答して、電荷はデータ値を表す目標電圧になるまで１つ以上のメモリセルに印加される。フラッシュメモリプロセッサからの信号は、フラッシュメモリプロセッサが保守動作を実行するのに十分な帯域幅を有することを示す。例えば、フラッシュメモリプロセッサからの信号は、フラッシュメモリプロセッサがアイドル状態であることを示す。
【００１１】
第１のメモリセルに対応する解像度レジスタエントリは、第１の可能なデータ値数に対応する第１の解像度を示す。第２の可能なデータ値数に対応する第２の解像度で書き込むための信号が受信され、１つ以上のメモリセルに対応する解像度レジスタエントリは第２の解像度を示すように更新される。目標電圧は第２の解像度に基づく。第１の可能なデータ値数は第２の可能なデータ値数より多く、１つ以上のメモリセルは複数のメモリセルから選択された２つ以上のメモリセルを含む。あるいは、第１の可能なデータ値数は第２の可能なデータ値数と等しく、１つ以上のメモリセルは第１のメモリセルとは異なるメモリセルを含む。第２の可能なデータ値数は、第１の可能なデータ値数を上回る。第１の可能なデータ値数は４ビットを超えない。例えば、第１の可能なデータ値数は２ビット又は１ビットである。第２の可能なデータ値数は少なくとも４ビットである。例えば、第２の可能なデータ値数は少なくとも８ビットである。第１の解像度で第１のメモリセルに格納されるデータ値は、ホストデバイスから受信されたデータがフラッシュメモリ素子に書き込まれる書き込み動作の結果である。
【００１２】
信号がホストデバイスから受信され、ホストデバイスから受信されるデータをフラッシュメモリ素子に書き込む。ホストデバイスから受信されるデータ値は、第１の可能なデータ値数に対応する第１の解像度で第１のメモリセルに書き込まれ、第１の解像度は、第１のメモリセルに対応する解像度レジスタに記録される。第２の可能なデータ値数に対応する第２の解像度で書き込むための信号が受信され、第２の可能なデータ値数は第１のデータ値数を上回る。１つ以上のメモリセルに対応する解像度レジスタは第２の解像度を示すように更新され、目標電圧は第２の解像度に基づく。信号がホストデバイスから受信され、ホストデバイスの電力条件を示す。
【００１３】
第１のメモリセルに対応する解像度レジスタエントリは、第１の可能なデータ値数に対応する第１の解像度を示す。第１のメモリセルに関連付けれられる解像度レジスタエントリは、第２の可能なデータ値数に対応する第２の解像度を示すように更新され、第１の可能なデータ値数は第２の可能なデータ値数より多い。第２のデータ値は、第２の解像度で第１のメモリセルに書き込まれる。第１のメモリセルと関連付けられる解像度レジスタエントリの更新及び第２の解像度での第１のメモリセルへの書き込みは、第１のメモリセルを含むメモリセルのページと関連付けられる誤り条件によりトリガされる。メモリセルのページは、ダウングレードされたメモリセルの第２のページと対にされる。論理アドレス指定ソフトウェアコードは、メモリセルのページの対を第１の解像度でメモリセルの単一ページとして処理するように更新される。
【００１４】
一般的な別の面において、保守動作を実行するかの判定が行なわれる。保守動作が実行されるべきであると判定すたことに応答して、メモリセルのページと関連付けられる誤り情報が識別され、誤り情報が誤り基準を満たすかの判定が行なわれる。メモリセルのページに対応する１つ以上の解像度レジスタは、第１の解像度から第２の解像度に調整される。第１の解像度及び第２の解像度の各々は複数の電圧範囲を規定し、各電圧範囲は可能なデータ値に対応する。第１の解像度は、第２の解像度より多くの電圧範囲を有する。
【００１５】
実施例は、１つ以上の、下記の特徴を含んでもよい。すなわち、保守動作を実行するか否かを判定することは、ホストデバイスが交流電力を受け取っていること又は所定の充電レベルまで充電されたバッテリを有すること等の所定の条件を満たす電源をホストデバイスが有するかどうかを判定することを含む。及び／又は、保守動作を実行するかを判定することは、プロセッサが所定の閾値を超える未使用の帯域幅を有するかを判定することを含む。
【００１６】
また、別の面において、格納されたデータ値における低下の調整は、複数のメモリセルに電荷を印加することにより行なわれる。各メモリセルは、データ値に対応する目標電圧まで充電される。メモリセルは、所定の電圧まで充電される参照セルを含む。参照セルにおける電圧レベルが検出され、メモリセルのグループの電圧レベルが検出される。追加の電荷は、参照セルにおいて検出された電圧レベルと所定の電圧との差分に基づいてメモリセルに印加される。
【００１７】
実施例は、１つ以上の、下記の特徴を含んでもよい。電圧レベルは、第２の参照セルにおいて検出される。メモリセルに追加の電荷を印加することは、第２の参照セルにおいて検出された電圧レベル及び所定の第２の参照セル電圧に更に基づく。メモリセルは、ＮＡＮＤフラッシュメモリセル又はＮＯＲフラッシュメモリセルである。各データ値は、４ビットを上回るビット数を含む。
【００１８】
更に別の面において、データは複数のメモリセルに格納される。各メモリセルは、指定されたビット数を有するデータ値に対応する電圧レベルになるまで書き込み動作中に電荷を受け取るように構成される。メモリセルと関連付けられる解像度レジスタは、各々が１つ以上の対応するメモリセルに格納されたビット数を示す複数のエントリを含む。ホストインタフェースは、ホストデバイスに対する電源条件を示す信号をホストデバイスから受信するように構成される。プロセッサは、メモリセルにデータ値を書き換え、所定の電源条件を示す信号に応答して、第１のビット数から第２のビット数を示すように解像度レジスタを調整するように構成される。
【００１９】
実施例は、１つ以上の、下記の特徴を含んでもよい。論理アドレス指定ソフトウェアコードは、データにアクセスする際に使用するためにホストデバイスから受信される論理アドレスを物理アドレスに変換する。ホストインタフェースは、ホストデバイスからコマンドを受信するように、また、ホストデバイスとデータを交換するように更に構成される。
【００２０】
更に別の面によれば、保守動作を実行するかの判定が行なわれる。複数のフラッシュメモリセルと関連付けられる保守ログが読み出される。保守ログに記録される保守活動が実行される。保守活動は、元々はより低い解像度で格納されたデータ値をより高い解像度で書き換えること、所定の誤り条件と関連付けられるメモリセルのグループに対する解像度を低減すること、元のデータ値と同一の解像度で所定の誤り閾値を超えるデータ値を書き換えること、最も頻繁にアクセスされるデータをアクセスされる頻度が最も少ないデータと交換すること又は電圧低下に対する補正を行なうためにメモリセルに追加の電荷を印加することによりデータ値をリフレッシュすることのうち１つ以上を含むことができる。
【００２１】
実施例は、１つ以上の下記の特徴を含んでもよい。保守動作を実行するかを判定することは、ホストデバイスが交流電力を受け取ること又はホストデバイスがバッテリを所定の充電レベルまで充電すること等の所定の条件を満たす電源をホストデバイスが有するかを判定することを含む。保守動作を実行するかを判定することは、内部プロセッサが所定の閾値を超える未使用の帯域幅を有するかを判定することを含む。異なる物理メモリセルに書き換えられるデータ値に対する論理アドレス指定ソフトウェアコードは、１つ以上の保守活動の間に更新される。
【００２２】
いくつかの実施例は、１つ以上の利点を提供し得る。例えばいくつかの実施例は、高性能データ記憶機能を提供することができる。記憶密度及び／又は容量は増加してもよい。いくつかの例は、信頼性を向上し且つ／又はデータ誤り率を低減することができる。種々の実施例は、集積レベルを向上し、小型化し、電磁雑音を低減し且つ／又は雑音余裕を改善することができる。いくつかの実施例は、論理及び／又はプログラミング／消去回路への電圧供給等の補助システムにおいて安価なシステムコストを実現することができる。
【００２３】
添付の図面及び以下の説明において、本発明の１つ以上の実施例の詳細を示す。本発明の他の特徴は、説明及び図面、並びに請求の範囲から明らかとなるだろう。
【発明を実施するための最良の形態】
【００２４】
種々の図面における同様の図中符号は同様の要素を示す。
【００２５】
種々の実施例は、ディープ（deep）な多値セル（multi-level cell：ＭＬＣ）に情報を格納できるフラッシュメモリに関する。ディープな多値セルは、セル電圧に従って少なくとも数ビットのデータを符号化し得る。いくつかの実施例は、ディープなＭＬＣフラッシュメモリを含むシステムを実現するアーキテクチャに関する。また、いくつかの実施例は、ディープなＭＬＣフラッシュメモリを使用してデータ格納動作を実行する技術に関する。
【００２６】
図１は、ホストデバイス（不図示）にデータ記憶装置を提供するマルチチップパッケージ（ＭＣＰ）１００の一例を示す。ＭＣＰ１００は、データを格納するためのＮＡＮＤフラッシュメモリダイ１０３と、ホストからの読み出し及び／又は書き込みコマンドに応答してフラッシュメモリへのアクセスを容易にするフラッシュディスクコントローラ（ＦＤＣ）１０６とを含む。いくつかの実施例において、ＮＡＮＤメモリダイ１０３は、ディープなＭＬＣにデータを格納する。例えば、フラッシュメモリダイ１０３のセルは、３ビット、４ビット、５ビット、６ビット、７ビット、８ビット、９ビット、１０ビット又はそれ以上の情報を保持することができるい。また、例えばＭＣＰ１００は、デジタルカメラ、他の画像格納デバイス、携帯オーディオデバイス、パーソナルデジタルアシスタント（ＰＤＡ）及びデジタルビデオレコーダ等の種々の携帯デバイスにおいてデータ記憶装置を提供することもできる。いくつかの実施例は、他の応用例において使用されてもよい。他の応用例には、特にデータへの迅速なアクセスが望ましい状況において、デスクトップコンピュータ、サーバ、無線ルータ又は組込みアプリケーション（例えば、自動車）が含まれてもよい。本明細書で説明する例に係る装置及び技術は、フラッシュメモリ密度を増加するため、並びに／あるいは高性能及び／又は信頼できる不揮発性データ記憶装置の動作を達成するために実現され得るものである。
【００２７】
図示する一例として、ＭＣＰ１００は、フラッシュメモリのセルのグループ（例えば、ページ又はブロック）における各セルに１バイト（すなわち、８ビット）の情報を格納することによりデータファイルを格納してもよい。他の例は、１６ビット、３２ビット、６４ビット又はそれ以上の解像度を有してもよい。いくつかの実施例において、解像度は、セルのゲートにおける単一の又は複数の電子検出により判定されてもよい。他の実施例において、任意の実際のビット数の情報は、個々のフラッシュメモリセルが充電される電圧において符号化されてもよい。
【００２８】
ＦＤＣ１０６は、ホストインタフェース１０９、プロセッサ１１２及びフラッシュインタフェース１１５を含む。ＦＤＣ１０６は、ホストインタフェース１０９を介してデスクトップコンピュータ、サーバ又は携帯計算装置上のプロセッサ等のホストデバイスからコマンド及び／又はデータ（例えば、ソフトウェアコード更新データ又はユーザデータ）を受信し且つ／又はホストデバイスにデータを送信する。ホストとの通信には、例えばＡＴＡ（Advanced Technology Attachment）、シリアルＡＴＡ（ＳＡＴＡ）、Block Abstracted NAND、セキュアデジタル（ＳＤ）又はマルチメディアカード（ＭＭＣ）等のカスタム又は標準プロトコルを使用してもよい。いくつかの実施例において、ＭＣＰ１００は、ホストデバイスと同一の製品の一部としてもよい。また、他の実施例において、ホストデバイスは、プロセッサを使用する少なくとも１つの他のデバイスへの通信リンク（例えば、ＵＳＢ、Firewire、Bluetooth）を介してＭＣＰ１００と動作可能に通信していてもよい。例えばホストは、少なくとも１つのネットワークを介して制御メッセージを送出し且つデータメッセージを送出及び受信することによりＭＣＰ１００にリモートアクセスしてもよい。少なくとも１つのネットワークは、有線、無線又は光ファイバリンク、あるいはそれらの組合せを含んでもよい。そのようなネットワークは、パケットによる通信をサポートしてもよく、また、インターネット等のワイドエリアネットワーク又はローカルネットワークを含んでもよい。
【００２９】
ホストデバイス上のプロセッサは、フラッシュメモリの物理アドレスを識別するためにＦＤＣ１０６により処理される論理アドレス指定方式を使用して、ＮＡＮＤフラッシュメモリダイ１０３からデータを読み出してもよく且つ／又はＮＡＮＤフラッシュメモリダイ１０３にデータを書き込んでもよい。いくつかの実施例において、ホストインタフェース１０９は、ＡＴＡ／ＩＤＥインタフェースを使用してホストデバイスと通信するように構成されてもよい。プロセッサ１１２は、受信したコマンドを処理し、フラッシュインタフェース１１５を使用してＮＡＮＤフラッシュメモリダイ１０３にアクセスすることができる。ＦＤＣ１０６は、信頼性の向上、読み出し及び書き込み時間の短縮、電力効率の向上及びチップボリューム毎の容量の増加等、ＮＡＮＤフラッシュメモリダイ１０３の性能を向上するために磨耗管理機能性、ブロック管理機能性、誤り訂正機能性及び論理アドレス指定管理機能性等の機能性を提供するように構成され得る。本明細書において説明する特定の技術及び装置は、ＮＡＮＤ及び／又はＮＯＲフラッシュメモリ、他の種類の電気的消去可能メモリ又は電気的書き込み可能メモリ、あるいはデータアクセス解像度がページ又はブロックに存在するメモリに適用可能であってもよい。
【００３０】
図１にはＮＡＮＤフラッシュメモリダイ１０３が１つのみ示されるが、ＭＣＰ１００は２つ以上のＮＡＮＤフラッシュメモリダイ１０３を含んでもよい。いくつかの実施例は、不揮発性メモリの任意の組合せを含んでもよく、それはＮＡＮＤフラッシュ、ＮＯＲフラッシュ又は電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）を含んでもよい。いくつかの図示する例において、ＭＣＰ１００は、２つ、３つ、４つ又は少なくとも８つのＮＡＮＤフラッシュメモリダイ１０３を含むことができる。例えばＭＣＰ１００は、４つのＮＡＮＤフラッシュメモリダイ１０３とパッケージ化される（例えば、スタックに）ダイ上にフラッシュディスクコントローラ１０６を含んでもよい。
【００３１】
いくつかの実施例において、フラッシュディスクコントローラ１０６及びフラッシュメモリダイ１０３は、単一のダイ上に実現されてもよい。他の実施例において、フラッシュディスクコントローラ１０６の１つ以上の構成要素は、部分的又は全体的に単一のダイ又はＭＣＰ１００の外部に実現されてもよい。例えば、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）１５１及び／又は不揮発性メモリ（ＮＶＭ）１５４の一部又は全てがＭＣＰ１００の外部に実現されてもよい。いくつかの実施例において、フラッシュディスクコントローラ１０６の一部又は全てがフラッシュメモリダイ１０３とは別にパッケージ化されてもよい。図示する一例において、ＮＶＭ１５４、ＳＤＲＡＭ１５１、ホストインタフェース１０９及び少なくともプロセッサ１１２の一部の各々はＭＣＰ１００の外部に実現されてもよい。他の実施例において、フラッシュインタフェース１１５とフラッシュメモリダイ１０３との間のアナログ信号及び／又はデジタル信号は、統合パッケージに外部から転送されてもよい。
【００３２】
リモート又は分散送信構造（例えば、遮蔽及び／又は制御されるインピーダンス信号パス）は、少なくとも１つのフラッシュメモリダイ１０３に対して及び少なくとも１つのフラッシュメモリダイ１０３から信号を移送するために実現されてもよい。いくつかの実施例において、メモリは、不揮発性メモリの追加のパッケージをインストールすることにより拡張されてもよい。バッファリングデバイス及び／又はルーティングデバイスは、アナログ信号及び／又はデジタル信号の種々の数のメモリダイ１０３への配信をサポートするために使用されてもよい。更にプロセッサ１１２の機能は、ＭＣＰ１００の外部で実行されてもよい。種々の例において、プロセッサ１１２は、ＭＣＰ１００と同一の基板（例えば、プリント回路基板）の回路又は同一の製品に全体的又は部分的に実現されてもよい。プロセッサ１１２は、通信リンク（例えば、有線、無線、光ファイバ又はそれらの任意の組合せ）を介してＭＣＰ１００と動作可能に通信する別の計算装置から実現されてもよい。
【００３３】
ＭＣＰ１００は、例えば少なくとも最大１００ギガバイト以上の任意の実際的なメモリサイズを有してもよい。図示する例において、ＮＡＮＤフラッシュメモリダイ１０３は、複数のフラッシュメモリブロック１１８を含むように編成される。いくつかの実施例において、ＮＡＮＤフラッシュメモリダイ１０３は、数百又は数千のフラッシュメモリブロック１１８を含んでもよい。各フラッシュメモリブロック１１８は、複数のフラッシュメモリページ１２１を含む。図示するように、各フラッシュメモリページ１２１は、データ１２４を格納するセル及びそのデータと関連付けられる誤り訂正符号（ＥＣＣ）１２７を格納するセルを含む。一例として、フラッシュメモリページ１２１は、２０４８バイトのデータ及び６４バイトのＥＣＣデータを格納することができる。データセル１２４は、フラッシュディスクコントローラ１０６から受信される情報を格納する。ＥＣＣセル１２７は、データセル１２４に格納されるデータと関連付けられる追加の整合性メタデータ（例えば、ＥＣＣデータ）を格納する。種々の実施例において、ＥＣＣデータにより、フラッシュディスクコントローラ１０６はデータ中のビット誤りを検出及び／又は訂正できる。
【００３４】
図示する例において、各フラッシュメモリブロック１１８は１つ以上の参照セル１３０ａ、１３０ｂ、１３０ｃを更に含む。いくつかの実施例において、ＦＤＣ１０６は参照セル１３０ａ、１３０ｂ、１３０ｃの電圧を監視して、セル１２４、１２７において電圧の低下度又はドリフトの程度を推定するように構成される。各ブロック１１８において、参照セル１３０ａはブロック１１８の開始部分に位置付けられ、参照セル１３０ｂはブロック１１８の終了部分に位置付けられるようしてもよい。また、各フラッシュメモリページ１２１は参照セル１３０ｃを含んでもよい。いくつかの実施例において、より多くの参照セル又はより少ない参照セルがメモリ１０３のページ、ブロック及びダイにわたり任意のパターンで分布され、セル１２４、１２７の予想される性能を判定するようにしてもよい。
【００３５】
いくつかの実施例において、参照セルは、特定の関心データセルの使用レベルを表す読み出し／書き込み使用レベルを体験するセル中に又はセルの周囲に位置付けられる。補償方法は、非参照セルを他の非参照セルと比較することに基づいてなされる。例えば同一のページ又はブロックの複数のセルの電圧が相対的に低い場合、補償は、読み出し誤りが大きく低減されるように測定値に従って閾値（例えば、セル中の異なる値レベル間の電圧閾値）を調整して小さくすることを含んでもよい。また、他の例は、参照セルの検出電圧に基づく補正関数を判定することを含み、その補正関数は、検出電圧をメモリセルにより表されるデジタルデータ値に変換する前に、その検出電圧を調整する。
【００３６】
いくつかの実施例において、メモリセルは、検出された電圧低下に対して補正を行なうために複数のセルに追加の電荷を印加することによりリフレッシュされる。例えば、１つ以上の参照セルの電圧レベルがある電圧ドリフトの閾値量を超えることを示す場合、その参照セルに関連するページ又はブロックのメモリセルは、追加の電荷を印加することにより調整され得る。あるいは格納データに従ってセルを適切な電圧レベルに復元するために書き換えられてもよい。そのような調整は、参照セルの電圧ドリフトを検出した直後に実行されるか又は後の保守動作の一部として実行される。いくつかの実施例において、追加の電荷が印加されてもよく、あるいはメモリセルは検出された参照セル電圧と目標参照セル電圧との差分に基づいて書き換えられてもよい。その差分は、参照セル及び対応するデータセルの双方に対する電圧ドリフト又は低下の大よその量を示すと仮定されてもよい。
【００３７】
他の実施例において、追加の電荷の印加又はメモリセルの書き換えは、全てのセルを読み出し、閾値への任意の必要な調整を実行し（例えば、参照セル電圧に基づく補正関数を使用し且つ／又は本明細書において説明する他の技術を使用して）、格納されるデータを取得するために検出データに対して誤り訂正を実行することにより実行されてもよい。その後データは、識別された電圧のドリフト又は低下に対して種々のメモリセルを補正するのに必要とされる追加の電荷量又は適切な電圧レベルを判定するために使用される。いくつかの実施例によれば、印加される追加の電荷量は、検出電圧をデジタルデータ値に変換する前に検出電圧を調整するために使用された補正関数と同一の又はそれに類似する補正関数に基づいて判定される。
【００３８】
いくつかの実施例において、フラッシュメモリのセルは適応可能に再割り当てされてもよい。例えば参照セルは、読み出し又は書き込み使用情報、温度、製品年齢、供給電圧（例えば、低バッテリ、交流電源）及び／又は検出誤りレベルに応答して適宜追加、除去、再配置及び／又は再分布されてもよい。メモリのある特定のブロック又はページにおける誤りが少ない場合、ＥＣＣセル１２７及び／又は参照セル１３０として割り当てられるセルをより少なくしてもよく、それによりデータセル１２４は更に多くすることができる。参照、データ及びＥＣＣ機能に対するセルの相対的な割り当て、並びに個々のセルの解像度は、現在の動作条件に基づき且つ／又は所定の条件に従って動的に調整されてもよい。例えば、解像度は誤り率に基づいて調整されてもよく、ページ毎のＥＣＣセル数は誤り率、並びに読み出し及び書き込み履歴情報に基づいてもよく、参照セルの場所及び分布は誤り率及び製品年齢に基づいてもよい。この例は、単にコントローラ１０６及びフラッシュメモリダイが種々の基準に従って動的に調整されてもよいことを示す。他の基準は、データの重要度、電源の可用性（例えば、交流電源、バッテリ電源）、並びにメモリサイズ、速度性能及びデータ整合性を最大限にする相対的な重要さに関する規定の基準を含んでもよい。例えば、非常に多くのソフトウェア補正を必要とする高いセル解像度を維持することにより、アクセス時間は更に長くなる可能性がある。基準は、応用例の要求に従ってユーザ、製品製造業者又はソフトウェアにより適応されてもよい。
【００３９】
いくつかの実施形態において、非常に多くのソフトウェア補正を必要とするデータは、時間の経過に関連する電荷の変動を補正するために又は劣化し始めたメモリセルのページを補正するために保守動作において書き換えられてもよい。１つ以上のメモリセルの解像度を変更する場合、データはメモリセルの異なるページに書き込まれ、同一の又は異なる解像度で書き込まれる。いくつかの実施例において、メモリセルの元のページはより低い解像度にダウングレードされる。これは、メモリセルが経時変化により劣化するにつれて必要とされる場合が多い。データの書き換えが識別された電圧ドリフト又は低下の結果として実行される場合、メモリセルの同一の又は異なるページ又はブロックにデータを書き込むことができる。
【００４０】
フラッシュインタフェース１１５は、フラッシュメモリダイ１０３に対する直接制御、ハンドシェーク及びデータ転送アクセスを提供する。フラッシュインタフェース１１５は、制御インタフェース１３３及びアナログインタフェース１３６を含む。いくつかの実施例において、制御インタフェース１３３は、制御、アドレス及びデータ信号をフラッシュメモリダイ１０３に送出することができる。コマンド及びメモリアドレスは、デジタル信号又はアナログ信号で送信され得る。更にフラッシュディスクコントローラ１０６は、フラッシュメモリダイ１０３からアナログ信号を受信できる。フラッシュディスクコントローラ１０６は、フラッシュメモリダイ１０３上のフラッシュメモリ論理とインタフェースするためのプロセッサを含んでもよく、フラッシュダイ上のフラッシュメモリ論理とインタフェースするためのこのプロセッサは、フラッシュインタフェース１１５に組み込まれてもよい。
【００４１】
フラッシュメモリダイ１０３は、読み出しコマンドに応答して、個々のデータセル１２４に格納されたデータを表すセル電圧を出力してもよい。フラッシュディスクコントローラ１０６は、フラッシュメモリダイ１０３上の各メモリセルから出力されたアナログ電圧信号を受信できる。それらのアナログセル電圧又はアナログ電圧信号は、ＦＤＣ１０６のアナログインタフェース１３６に送信される。いくつかの実施例において、フラッシュインタフェース１１５は、制御インタフェース１３３とは別個のデータバス及びフラッシュメモリダイ１０３と通信するためのアナログインタフェース１３６を更に含み得る。
【００４２】
アナログインタフェース１３６は、アナログフロントエンド（アナログＦＥ）１３９及びアナログ／デジタル変換器（ＡＤＣ）１４２を含む。アナログＦＥ１３９は、アナログ信号を受信すると、例えばオフセット、補正レベルシフト、利得、バッファリング、フィルタリング又は制御インピーダンスを提供して反射を最小限にするために、必要に応じて信号を適応させてもよい。アナログＦＥは、高いインピーダンス入力を提供してフラッシュメモリセルの負荷を最小限にしてもよいし、また低いインピーダンス出力を提供して、ＡＤＣ１４２の入力に結合されるサンプルホールド回路又はトラックホールド回路を駆動してもよい。いくつかの実施例において、アナログＦＥ１３９は、１つ以上のフラッシュメモリダイからの複数のアナログ出力線のうち１つを選択するためにアナログマルチプレクサ（不図示）を更に含む。
【００４３】
ＡＤＣ１４２は、データセル１２４、１２７の電圧の対応するデジタルデータ値表現を判定するためにアナログ値を処理する。ＡＤＣ１４２は、適応されたアナログ信号を受信し、アナログ信号をアナログ電圧のデジタル表現に変換する。ＡＤＣ１４２（又はＡＤＣのプロセッサ）は、例えばマッピング関数に基づいてメモリセルに格納された電圧により表されるデジタルデータ値にそのデジタル表現を変換する。プロセッサ１１２は、デジタル表現をデジタルデータ値に変換するために更に使用される。アナログ電圧のデジタル表現は、各々が特定のデジタルデータ値を表す複数のアナログ電圧レベルをＡＤＣ１４２又はプロセッサが区別できるように十分な情報を含み得る。デジタル表現は、デジタルデータ値より多くのビット数のデータを含んでもよい。いくつかの実施例において、ＡＤＣ１４２は、フラッシュディスクコントローラ１０６に含まれるのではなく、フラッシュメモリダイ１０３に組み込まれる。そのような場合、フラッシュインタフェース１１５は、フラッシュメモリダイ１０３からセル電圧のデジタル表現又はデジタルデータ値を受信することになる。
【００４４】
マッピング関数１４５の一例を示す。マッピング関数１４５に基づいて、ＡＤＣ１４２又はプロセッサ１１２は、アナログセル電圧をデジタル表現及び／又はデジタルデータ値に変換することができる。例えば、アナログ電圧をデジタル表現及び／又はデジタルデータ値にマップするために使用される一連のアナログ電圧閾値が存在してもよい。同様に、マッピング関数１４５は、アナログ電圧のデジタル表現のデジタルデータ値への変換を更に示してもよい。例えば、アナログ電圧の１つ以上のデジタル表現を、特定のデジタルデータ値にマップしてもよく、各デジタルデータ値は１つ以上のデジタル表現の対応する別個の集合を有する。
【００４５】
いくつかの実施例において、ＡＤＣ１４２又はプロセッサ１１２は、マッピング関数１４５を変更するパラメータを受信するように構成される。例えばＦＤＣ１０６は、現在の温度、供給電圧、ページデータの読み出し及び書き込み回数、並びに／あるいは参照セル１３０ａ、１３０ｂ及び／又は１３０ｃの電圧に基づいてマッピング関数を適応させる。いくつかの実施例において、マッピング関数に対する適応は、隣接するデータセル１２４、ＥＣＣセル１２７及び／又は他のセルの電圧特性に基づく。セル電圧とデジタルデータ値とのマッピング１４５については、図２Ａ及び図２Ｂを参照して更に詳細に説明する。また、いくつかの実施例において、ＡＤＣ１４２又はプロセッサは、受信したアナログ信号又はアナログ信号のデジタル表現に対する代替値を検索するための代替値コマンドに応答可能に動作する。代替値コマンドの実施例については、図６Ａ〜図６Ｃを参照して更に詳細に説明される。
【００４６】
フラッシュディスクコントローラ１０６は、ＥＣＣエンジン１４８を更に含む。種々の実施例において、ＥＣＣエンジン１４８は、ＥＣＣセル１２７を使用してハードウェア及び／又はソフトウェア誤り検査訂正を実行する。また、いくつかの実施例において、ＥＣＣエンジン１４８は、状態遷移機械を使用するデータ回復を提供する。例えばＥＣＣエンジン１４８は、データのページの誤りビット数を検出するように構成される。ＥＣＣエンジン１４８は、使用されるＥＣＣアルゴリズムを判定してもよい。一例としてＥＣＣエンジン１４８は、まず、例えばハミング符号又はリードソロモン符号を使用してハードウェアＥＣＣアルゴリズムを試行するように構成され得る。そして、ハードウェアＥＣＣアルゴリズムがデータのページの回復時に失敗した場合、ソフトウェアＥＣＣ訂正が試行されてる用に構成してもよい。ハードウェアＥＣＣ，ソフトウェアＥＣＣ及び他の技術を組み合わせて使用することを示す方法の一例については、図５を参照して後に説明する。いくつかの実施例において、ＥＣＣエンジン１４８は、データのページのサイズの最大少なくとも約１０％以上に対して誤り訂正を提供することができる。また、いくつかの例において、プロセッサが使用するＥＣＣアルゴリズムを判定するようにしてもよい。
【００４７】
いくつかの実施例において、ＥＣＣアルゴリズムが所定の数又は所定の割合より多い誤りを含むデータを回復するために使用される場合、プロセッサ１１２は、フラッシュメモリページに格納されたデータを書き換えるか又はリフレッシュする。他の実施例において、プロセッサ１１２は、保守ログにそのような誤りを含んでいたデータの物理的及び／又は論理的な場所を記録する。プロセッサ１１２は、保守動作中にそのデータを書き換えるか又はリフレッシュする（図９を参照）。保守動作は、ホストデバイスが所定の電力条件下で動作している時に実行されるようにしてもよいし、プロセッサ１１２が所定量の余分な帯域幅を有する時に実行されるようにしてもよいし、且つ／又はスケジュールされた間隔で実行されるようにしてもよい。
【００４８】
フラッシュディスクコントローラ（ＦＤＣ）１０６は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含んでもよい。この例のフラッシュディスクコントローラ１０６は、同期ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）１５１を更に含む。例えばＳＤＲＡＭ１５１は、ＳＤＲ（single data rate）ＳＤＲＡＭでもよいし、或いはＤＤＲ（double data rate）ＳＤＲＡＭでもよい。いくつかの実施例において、例えばＦＤＣ１０６は、ホストデバイスに対する出力データ及びデータのページに対する代替デジタル値等の一時データを格納するためにＳＤＲＡＭ１５１を高速で高密度なバッファとして使用され得る。また、ＦＤＣ１０６は、ＤＲＡＭ等の他の種類のＲＡＭを更に含んでもよい。一例として、ＦＤＣ１０６はＮＡＮＤフラッシュメモリダイ１０３からアナログデータを受信してもよい。
【００４９】
ＦＤＣ１０６は、場合によっては１つ以上のセルに対して代替デジタルデータ値を含むデジタルデータに、検出したアナログ電圧を変換してもよい。ＥＣＣエンジン１４８は、デジタルデータを検査及び訂正し、可能性としては各フラッシュメモリページ１２１上のセルに対するデータ値及び代替データ値の複数の異なる組合せを検査する。誤り訂正が成功した場合、プロセッサ１１２は、デジタルデータをＳＤＲＡＭ１５１のホスト出力バッファに格納してもよい。いくつかの実施例において、ホストデバイスは、ホスト出力バッファからデータを検索する。あるいは、フラッシュディスクコントローラ１０６はデータをホスト出力バッファからホストデバイスに転送してもよい。ＳＤＲＡＭ１５１又は他のキャッシュメモリは、フラッシュメモリダイ１０３に書き込まれるデータを格納するために更に使用されてもよい。
【００５０】
ＦＤＣ１０６は、不揮発性メモリ（ＮＶＭ）１５４を更に含む。この例において、ＮＶＭ１５４は、磨耗管理ソフトウェアコード１５７、ブロック管理ソフトウェアコード１６０、論理アドレス指定ソフトウェアコード１６３及びセル解像度レジスタ１６６を含み、それら各々は、プロセッサ１１２により実行された時に特定の動作を実行する命令（又はフラッシュメモリ中の命令に対するポインタ）を含む。いくつかの実施例において、ＮＶＭ１５４はＮＡＮＤフラッシュメモリダイ１０３とは別個であってもよい。例えばＮＶＭ１５４は、ＮＯＲフラッシュメモリであってもよく又は別のＮＡＮＤフラッシュメモリであってもよい。他の実施例において、ＮＶＭ１５４はＮＡＮＤフラッシュメモリダイ１０３の１つ以上のページであってもよい。他の実施例において、ＮＶＭ１５４はＮＡＮＤフラッシュメモリダイ１０３に格納されたデータに対するポインタ又は記憶場所を格納する。いくつかの実施例において、プロセッサ１１２は、磨耗管理ソフトウェアコード１５７、ブロック管理ソフトウェアコード１６０及び論理アドレス指定ソフトウェアコード１６３を実行して、ＭＣＰ１００の効率、性能及び／又は信頼性を向上する。
【００５１】
プロセッサ１１２は、磨耗管理ソフトウェアコード１５７を使用してＭＣＰ１００のページ１２１、ブロック１１８又はダイ１０３の磨耗を管理するように構成される。例えば磨耗管理ソフトウェアコード１５７は、プロセッサ１１２により実行された時に最も頻繁に使用されるメモリページのデータを使用頻度の少ないメモリページに交換するための負荷均一化動作を含む動作を実行する命令を含んでもよい。交換動作は、論理アドレス指定ソフトウェアコード１６３の更新を更に含んでもよい。
【００５２】
磨耗管理ソフトウェアコード１５７は、保守動作中に起動され得る。いくつかの実施例において、各読み出し動作の物理アドレス及び／又は論理アドレスは、保守ログに記録される。更に、各書き込み動作が保守ログに記録されてもよい。磨耗管理ソフトウェアコード１５７は、メモリセルのページ間で格納されたデータを再配置する方法を判定するために所定の閾値を使用してもよい。例えばそれら閾値は、１週間又は１ヶ月の間にメモリセルのページの１００回又は１，０００回の読み出し、といったものが挙げられる。他の実施例において、閾値は読み出し動作の合計回数の割合に基づいてもよく、あるいは時間毎のページ毎の読み出し平均回数からの偏差に基づいてもよい。保守動作の一例については、図９により後述する。
【００５３】
ブロック管理ソフトウェアコード１６０は、フラッシュメモリダイ１０３の不良ブロックを管理するためのコードを含む。例えばブロック管理ソフトウェアコード１６０は、フラッシュメモリブロック１１８に関する履歴誤り情報を含み得る。いくつかの実施例において、誤り情報は各フラッシュメモリページのセル解像度を維持するために使用される。ブロック管理ソフトウェアコードの一例については、後に、図８Ａ及び図８Ｂを参照して更に詳細に説明する。
【００５４】
フラッシュメモリダイ１０３中の低下した解像度（セル解像度レジスタ１６６において更新される）を有する不良ブロック又は不良ページの集合を対にし、論理アドレス指定の目的で、初期のより高い解像度を有するメモリセルの単一のブロック又は単一のページの等価物としてその不良ブロック又は不良ページの集合を処理するようにする（論理アドレス指定ソフトウェアコード１６３及び／又はセル解像度レジスタ１６６において更新される可能性が高い）ために、ブロック管理ソフトウェアコード１６０は使用されてもよい。ここで、ブロック管理ソフトウェアコード１６０は、おそらくは、論理アドレス指定ソフトウェアコード１６３及び／又はセル解像度レジスタ１６６と共に使用される。また、ブロック管理ソフトウェアコード１５７は、保守動作中に起動され得る。保守動作の一例については図９により後述する。
【００５５】
論理アドレス指定ソフトウェアコード１６３は、ホストコマンドの論理アドレスをＮＡＮＤフラッシュメモリダイ１０３の物理アドレスに変換するためのコードを含み得る。いくつかの例において、論理ページはＮＡＮＤフラッシュメモリダイ１０３の複数の物理メモリページと関連付けられる。論理アドレス指定ソフトウェアコード１６３は、ＮＶＭ１５４の論理アドレステーブルの変換及び更新を管理する。一例において、ページが１０ビット解像度から８ビット解像度にダウングレードされるか又は論理ブロックアドレスから異なる物理ページアドレスへのマッピングが磨耗管理の目的で変更されると、論理アドレス指定ソフトウェアコード１６３は、ホストからの論理ブロックアドレスと物理ページアドレスとのリンクを動的に維持するように構成される。例えばアドレスの中間形式は、論理アドレスと物理アドレスとの変換の処理中に生成され得る。中間アドレス形式は、種々の不揮発性メモリ動作を実行するために生成、処理、格納、使用及び／又は操作され得る。論理アドレス指定ソフトウェアコードの一例については、図１０を参照して更に詳細に後述する。
【００５６】
セル解像度レジスタ１６６は、セル解像度に関する情報を各フラッシュメモリページ１２１に格納する。例えばＮＡＮＤフラッシュメモリダイ１０３は、８ビットＭＬＣフラッシュメモリである。いくつかの実施例において、フラッシュメモリブロック１１８の一部は、種々の条件に応じてダウングレード又はアップグレードされ得る。そのような条件の例は、誤り性能、温度、電圧条件、個々のセルの読み出し又は書き込み周期の回数、セルのグループ、ページ、隣接する場所にあるセル、参照セル、同等の読み出し及び／又は書き込み使用履歴を有するセル、あるいはデバイスの経時変化等の他の因子を含む。それら条件の一部又は全てに関する情報は、データ記憶装置に格納されてもよく、あるいは格納された１ビット以上の他の情報から判定又は推定されてもよい。一例において、格納された情報は、メモリダイ１０３の少なくとも一部のセルに対する使用レベルを表す履歴読み出し／書き込み使用データを含んでもよい。プロセッサ１１２は、ダウングレードされたメモリページのセル解像度を例えば４ビットに低減するようにセル解像度レジスタ１６６を更新してもよいため、フラッシュメモリページ１２１はより小さなメモリサイズで使用可能である。他の実施例において、セル解像度レジスタ１６６は、各フラッシュメモリブロック１１８に対するセル解像度を更に格納してもよい。
【００５７】
いくつかの実施例において、セル解像度レジスタ１６６は、データをホストデバイスからＭＣＰ１００のメモリセルに転送する前に調整されて単一ビットの解像度又は別の少ないビット数の低解像度にされる。この処理については、図７Ｂを参照して更に詳細に後述する。各メモリセルを充電するのに必要な精度はより低くなるため、データを転送する前にセル解像度レジスタ１６６を低減することにより、更に高速なデータ転送速度が可能になる。その後、転送されたデータはより高い解像度でメモリセルに書き換えられてもよい。いくつかの実施例において、転送されたデータは、保守動作中に（例えば、十分な処理リソースが利用可能であり且つ書き換えが他の読み出し又は書き込み動作を妨害しない時に後で）より高い解像度で書き換えられてもよい。いくつかの実施例において、低いセル解像度のデータ転送が保守ログに記録される。
【００５８】
いくつかの実施例において、論理アドレス指定ソフトウェアコード１６３、解像度レジスタ１６６及び／又はブロック管理ソフトウェアコード１６０はダウングレードされたメモリページ（又はダウングレードされたメモリブロック）をグループ化し、論理アドレス指定の目的でそのグループをダウングレードされていない単一のメモリページ（又はブロック）として処理する。ダウングレードされたメモリページのグループのメモリページは隣接するメモリページである必要はない。ダウングレードされたメモリページのグループは、異なるブロック及び異なるメモリダイのメモリページを含むことができる。いくつかの実施例において、ダウングレードされたメモリページ又はブロックのグループのダウングレードされた各メモリページ又はブロックは、そのページ又はブロックに関連する誤り条件に応じてダウングレードされる。
【００５９】
図２Ａ及び図２Ｂは、メモリセルに格納されたデジタルデータ値とセル電圧とのマッピングを一括して示す。図２Ａに示すように、８ビットメモリセルのデジタルデータ値分布２００の例を示す。８ビットメモリセルは、２５６個の可能なデジタルデータ値を含み、４ビットメモリセルは１６個の可能なデータ値を含む。可能なデータ値の数は２ｎ（ｎはビット数である）に等しいが、可能なデジタルデータ値の数は可能なデジタルデータ値のｎビット数に対応する必要はない。各メモリセルは１より大きい整数の数の可能なデジタルデータ値を有することができる。例えばメモリセルの中には１０個の可能なデータ値を有することができるものもある。デジタル値分布２００は、各デジタルデータ値の電圧分布を表すデジタル値分布曲線２０５〜２１０を含む。各デジタル値分布曲線（例えば、２０５〜２１０）は、可能な各デジタルデータ値と関連付けられる電圧レベルに対応するデジタル電圧値の範囲を表す。
【００６０】
書き込み動作中、各メモリセルは、可能なデジタルデータ値のうちの１つから選択されたデジタルデータ値に対応するアナログ電圧になるまで電荷を受け取る。一般にこの対応する電圧は、所望のデジタルデータ値に対する分布曲線２０５〜２１０内に入る。この対応する電圧は、デジタルデータ値に対応する目標電圧であってもよい。例えばセル電圧が分布２０７内に入る場合、セルに格納されるデジタル値は０２Ｈとなる。読み出し動作中、アナログ電圧信号は各セルから検出される。ＡＤＣ１３６は、アナログ電圧信号をアナログ電圧信号のデジタル表現に変換する。このデジタル表現は、少なくとも１つのデジタル値分布曲線と比較されて、読み出したメモリセルに格納されたアナログ電圧により表されるデジタルデータ値を判定する。
【００６１】
デジタルデータ値分布２００は、デジタルデータ値分布曲線２０５〜２１０の間のグレー領域２１５を含む。いくつかの実施例において、ＡＤＣ１４２がグレー領域２１５のうち１つの領域内にあるアナログ電圧信号を検出するか又はセル電圧を受信する場合、例えばＡＤＣ１４２は、セル電圧を最近接するデジタルデータ値に変換する。例えばＡＤＣ１４２が電圧レベル２２０に非常に近接するセル電圧を受信する場合、ＡＤＣ１４２は、セル電圧を最近接するデジタルデータ値、すなわちＦＥＨに変換する。いくつかの実施例において、ＦＤＣ１０６は、いくつかのパラメータに基づいて最近接する値以外の代替値に変換するようにＡＤＣ１４２に命令する代替値コマンドを更に含み得る。
【００６２】
いくつかの実施例において、ＦＤＣ１０６は、データ値のページ又はブロックを変換しようとする誤り訂正処理において最近接するデジタルデータ値及び１つ以上の代替値を使用することができる。更にＦＤＣ１０６は、デジタルデータ値分布曲線２０５〜２１０又はグレー領域２１５内のセル電圧の場所に基づいて特定のセル電圧又は対応するデータ値に不確実性を割り当ててもよい。割り当てられた不確実性は、データ値のページ又はブロックを変換しようとするアルゴリズムにより使用され得る。それらパラメータのいくつかの例としては、温度、セルに対する読み出しの回数、セルに対する書き込みの回数、供給電圧及び参照セル１３０ａ、１３０ｂ、１３０ｃの電圧のうち１つ以上が含まれ得る。いくつかの例において、セル電圧は最低セル電圧（Ｖｍｉｎ）を下回るまで低下してもよい。ＦＤＣ１０６は、受信したセル電圧にオフセットを加算することにより補正を行なってもよい。このオフセットは、アナログＦＥ１３９により加算されてもよく、あるいはＡＤＣ１４２又はプロセッサ１１２によりデジタルに加算されてもよい。
【００６３】
いくつかの実施例において、ＦＤＣ１０６は、デジタルデータ値分布２００を変更することによりグレー領域２１５の幅及び場所を動的に調整してもよい。例えばＦＤＣ１０６は、１つ以上の参照セル電圧、メモリセルの使用及びＮＶＭ１５４に事前にロードされてもよい他のヒューリスティック等のパラメータに基づいてグレー領域２１５を調整する保守ソフトウェアコードを含んでもよい。そのような保守ソフトウェアコードは、セル解像度レジスタ１６６の更新を実行してもよい。例えば各ダイ１０３、アナログインタフェース１３５及び／又はＭＣＰ１００は、製造時間及び線形化テーブルにおいて特徴付けられてもよく、あるいは補正係数又は他の補正調整は、ＭＣＰ１００の不揮発性メモリに格納されてもよい。場合によっては、最大電圧レベル（Ｖｍａｘ）、最小電圧レベル（Ｖｍｉｎ）及びデジタル値分布曲線２０５〜２１０は、使用寿命の間のセルの実験テストに基づいて調整及び／又は最分布されてもよい。
【００６４】
図２Ｂに示すように、セル電圧対デジタル値のグラフ２５０が示される。グラフ２５０は、ＡＤＣ１４２がアナログ電圧をデジタル値に変換するのに使用する理想的な電圧特性２５５を含む。いくつかの例において、データセル１２４は、例えば温度、セルの経時変化、チャージポンプ又は供給電圧許容差、ＡＤＣ１３６の非線形性、メモリセルにおける検出誤り、並びに／あるいはセルの読み出し及び書き込み回数のヒューリスティックによる理想的でない電圧特性２６０、２６５に従ってデジタル値を格納する。ＦＤＣ１０６は、理想的な特性２５５に近付くように電圧特性２６０、２６５を種々の方法で補償するように構成される。以下、図３Ａ、図３Ｂ、図４、図５、図６Ａ〜図６Ｃを参照して、補償方法の例を説明する。
【００６５】
図３Ａ及び図３Ｂは、ＮＡＮＤフラッシュメモリからデータのページを読み出すための処理３５０及び３００の例を示すフローチャートである。処理３５０及び３００は、プロセッサ１１２により実行され得る動作を含む。なお、いくつかの実施例において、処理３５０及び３００は、ＡＤＣ１４２と組み合わされ得る他の処理及び／又は制御素子により実行、補足又は強化されてもよい。例えば、コントローラ又は補償器は、処理３５０及び３００の動作の一部又は全てを実行するアナログインタフェース１３６に存在してもよい。
【００６６】
図３Ａは、多値メモリセルからの検出電圧レベルをデジタルデータ値に変換する処理を示す。処理３５０は、多値メモリセルからアナログ電圧レベルを検出することから開始する（ステップ３５５）。例えばこの電圧は、アナログインタフェース１３６により検出され得る。アナログインタフェース１３６は、フラッシュメモリダイ１０３からアナログ信号を受信するように動作可能な入力部を含んで構成され得る。フラッシュディスクコントローラ１０６は、入力部が受信するアナログ信号の送信元のメモリセルを選択するための制御モジュールを更に含んでもよい。ステップ３６０において、アナログ電圧信号は、検出されたアナログ電圧のデジタル表現に変換される。この変換は、ＡＤＣ１４２により実行され得る。デジタル表現は、デジタルデータ値を表す複数の可能な電圧レベルのうちメモリセルにより格納されたアナログ電圧のレベルをＡＤＣ１４２又はプロセッサ１１２が区別できるように十分なデータを有し得る。これは、デジタル表現がメモリセルに格納された電圧により表されるデジタルデータ値より多くのビット数のデータを含むようにすることにより達成され得る。
【００６７】
図２Ａは、この概念を示すことを助長する。可能なアナログセル電圧の範囲は、各々がアナログセル電圧のデジタル表現に対応する複数のセグメント（例えば、電圧レベル２２０により表されるような）に分離されてもよい。各デジタル値分布曲線２０５〜２１０及び各グレー領域２１５はそのようなセグメントの複数を含んでもよく、例えば、セル電圧がデジタル値分布曲線２０５〜２１０又はグレー領域２１５内のどこにあるかに関する追加の情報を提供でき且つデジタル値分布曲線２０５〜２１０より高い解像度を有するデジタル表現の使用を可能にする。
【００６８】
ステップ３６５において、デジタル表現は、デジタルデータ値分布に基づいてデジタルデータ値に変換される。デジタルデータ値分布は、セル解像度レジスタ１６６に格納されてもよく、例えば、図２Ａに示すデジタルデータ値分布２００であってもよい。ステップ３３５において、プロセッサ又はコントローラは、読み出すメモリセルが更に存在するかを判定する。存在する場合、ステップ３５５に戻る。存在しない場合、処理３５０は終了する。
【００６９】
図３Ｂは、識別されたデジタルデータ値を格納し且つ不確実なデジタルデータ値の場所に印をつける処理を更に詳細に示す。例えばプロセッサ１１２がＮＡＮＤフラッシュメモリダイ１０３からデータのページを検索するためのコマンドを受信した時、処理３００は開始する。ステップ３０５において、プロセッサ１１２はセル解像度レジスタ１６６からページに対するセル解像度情報を検索する。その後、ステップ３１０において、プロセッサ１１２は、データセルに対するデジタル出力値をＡＤＣ１４２から受信する。データセルに対するデジタル出力値は、データセルから検出された電圧のデジタル表現である。ＡＤＣ１４２は、ステップ３１５において、格納された閾値に基づいて受信デジタルデータ値を判定する。いくつかの実施例において、プロセッサ１１２は、使用される閾値の集合を判定するためにセル解像度レジスタ１６６の情報を使用してもよい。それらの閾値は、図２Ａに関して上述したデジタル値分布曲線２０５〜２１０に関連してもよい。例えばプロセッサ１１２は、８ビットセルに対して閾値の１つの集合を使用し、２ビットセルに対して閾値の別の集合を使用してもよい。場合によっては、プロセッサ１１２は、１つの８ビットセルに対して閾値の１つの集合を使用し、異なる８ビットセルに対して閾値の別の集合を使用してもよい。閾値の各集合は、可能なデジタルデータ値分布に対応してもよく、可能なデジタルデータ値に対応するアナログ電圧のデジタル表現の範囲を構成してもよい。
【００７０】
ステップ３２０において、プロセッサ１１２は、受信アナログ電圧値に対するデジタルデータ値が不確実であるかを判定する。いくつかの実施例において、セル電圧がデジタル値分布２００のグレー領域２１５にある場合、又は、セル電圧がデジタル値分布曲線２０５〜２１０とグレー領域２１５との境界近くにある場合、プロセッサ１１２は、デジタルデータ値が不確実であると判定する。また、いくつかの実施例において、種々のレベルの不確実性は、セル電圧がデジタル値分布２００内のどこにあるかに依存して割り当てられる（例えば、より高い電圧はより大きい不確実性を有する傾向があるとしてもよく、且つ／又は、不確実性はグレー領域２１５の中間に近いセル電圧程高くなるとしてもよい）。ステップ３２０において、受信デジタル値が不確実でないとプロセッサ１１２が判定した場合、プロセッサ１１２は、ステップ３２５においてホスト出力バッファに受信デジタル値を格納する。一方、ステップ３２０において、受信デジタル値が不確実であるとプロセッサ１１２が判定した場合、プロセッサ１１２は、ステップ３３０においてマスクテーブルの不確実なデジタル値の場所に印をつけ、その後、ステップ３２５を実行する。いくつかの実施例によれば、１つ以上の代替値が、正確な値（例えば、不確実な値又は代替値のうちの１つ）を得る際に後で使用するために格納される。
【００７１】
プロセッサ１１２が受信デジタル値を格納した後、ステップ３３５において、プロセッサ１１２は読み出すセルが更に存在するかを判定する。例えばプロセッサ１１２は、メモリページの最後に到達したかを検査してもよい。読み出すセルが更に存在する場合、ステップ３１０に戻る。読み出すセルがそれ以上存在しない場合、処理３００は終了する。いくつかの実施例において、更に処理は、メモリセルのページ又はブロックと関連付けられる不確実なデータ値の数を保守ログに記録する。他の実施例において、不確実なデータ値の数が所定の閾値を超える場合、処理はメモリセルのページ及び／又はブロックの物理的及び／又は論理的な場所を記録する。
【００７２】
図４は、デジタル値へのセル電圧のマッピングを調整する補正関数を使用してＮＡＮＤフラッシュメモリダイ１０３等のＭＬＣフラッシュメモリからデータのページを読み出すための処理４００の一例を示すフローチャートである。例えば処理４００は、プロセッサ１１２により実行される。処理４００は、読み出しコマンドを受信したかをプロセッサ１１２が判定するステップ４０５において開始する。例えばＦＤＣ１０６は、ホストインタフェース１０９を介してホストデバイスから読み出しコマンドを受信し得る。ステップ４０５において、読み出しコマンドを受信していないとプロセッサ１１２が判定した場合、ステップ４０５が繰り返される。
【００７３】
ステップ４０５において、読み出しコマンドが受信されたとプロセッサ１１２が判定した場合、ステップ４１０において、プロセッサ１１２は、温度、メモリページにおける読み出し又は書き込み回数、供給電圧、並びに／あるいは、ＮＡＮＤフラッシュメモリダイ１０３の他の動作条件に基づいて補正関数を更新する。いくつかの実施例において、ＡＤＣ１４２又はアナログインタフェース１３６は、セル電圧がデジタル値に変換される前にアナログフロントエンド１３９において測定セル電圧を調整するために補正関数を使用する。他の実施例において、プロセッサ１１２はマッピング関数の閾値を調整するために補正関数を使用し、それによって、ＡＤＣ１４２はアナログ電圧を調整されたデジタル値に変換することを可能としても良い。補正関数は、種々のセルに対して異なる。例えばより高い検出電圧を有するメモリセルは、補正関数により更に大きな調整値を有する。
【００７４】
次にプロセッサ１１２は、ステップ４１５において参照セルを選択する。例えばプロセッサ１１２は、参照セル１３０ａ、１３０ｂ又は１３０ｃの１つを選択してもよい。その後ステップ４２０において、プロセッサ１１２は選択した参照セルに格納された基準電圧を読み出す。ステップ４２５において、プロセッサ１１２は基準電圧に基づいて補正関数を更新する。例えば基準電圧が１０％低下すると考えられる場合、プロセッサ１１２はデータの低下電圧を補償するように補正関数を調整してもよい。いくつかの実施例において、補正関数は検出電圧レベルを非線形的に調整する。補正関数は、より低い検出電圧レベルではなくより高い検出電圧レベルを調整してもよい。補正関数は、種々の調整量又は種々の調整割合だけ異なる電圧レベルにおいて検出電圧を調整してもよい。
【００７５】
いくつかの実施例において、閾値は動作中に動的に調整され得る。また、いくつかの実施例において、プロセッサ１１２は、先に読み出された基準電圧のうち１００個のサンプル等の固定数の先のサンプルを格納し、補正関数を更新するために格納された基準電圧の移動平均を使用するように構成される。補正関数は、例えば平均値、中央値、最頻値又は重み付き平均を含んでもよい他の関数に基づいて更新されてもよい。例えば、重み付き移動平均が使用されてもよい。ステップ４３０において、プロセッサ１１２は別の参照セルを選択するかを判定する。一例として、プロセッサ１１２は、補正関数を調整するのに十分な情報が存在するかを判定するようにしてもよい。また、別の例として、プロセッサ１１２は、読み出しコマンドに基づいていくつかのメモリページ及びいくつかのメモリブロックにおける全ての参照セルを読み出すように構成されてもよい。
【００７６】
ステップ４３０において、読み出される別の参照セルが存在するとプロセッサ１１２が判定した場合、処理４００はステップ４１５に戻る。いくつかの実施例において、参照セルの電圧を読み出すことにより補正関数を調整する処理は、メモリセルのグループから検索されたデータの検出された誤りによりトリガされる。他の実施例において、検出された誤りにより、検出電圧と関連付けられるデータ値を判定するための閾値のシフトが起きる。いくつかの実施例におけるそれらの閾値は自動的に下方にシフトされてもよいが、他の実施例において、閾値は１つ以上の参照セルの電圧に基づいて調整される。また、誤りは、メモリセルのグループと関連付けられるＥＣＣ１２７を使用することにより検出され得る。
【００７７】
ステップ４３０において、読み出される他の参照セルが存在しないとプロセッサ１１２が判定した場合、プロセッサ１１２は、ステップ４３５において読み出しコマンドに基づいて読み出すページを選択する。その後ステップ４４０において、プロセッサ１１２は、例えば処理３００（図３Ｂ）を使用してフラッシュメモリからデータの選択ページを読み出す。ステップ４４５において、プロセッサ１１２は、補正関数を使用してページデータを補正する。例えばプロセッサ１１２は、マッピング関数を調整するためにいくつかのパラメータをアナログインタフェース１３６に設定してもよい。別の例として、プロセッサ１１２は、補正関数を使用してＡＤＣ１４２から出力されるデジタル表現を調整してもよい。次にプロセッサ１１２は、ステップ４５０において、ページに誤りが存在するかを検査するために誤り検査動作を実行する。いくつかの実施例において、誤り検査動作は、ハードウェア誤り検出回路を使用してＥＣＣエンジン１４８において行なわれてもよい。また、他の実施例において、誤り検査動作は、プロセッサ１１２がページ中の誤りを検査するためにＮＶＭ１５４に格納された誤り検出符号を実行するソフトウェアにおいて行なわれてもよい。誤り検査動作の後、プロセッサ１１２は、任意の誤りが検出されたかをステップ４５５において判定する。
【００７８】
誤りが検出されない場合、ステップ４６０において、プロセッサ１１２は読み出したデータをホストデバイスに送信する。そして、ステップ４６５において、プロセッサ１１２は、読み出す別のページが存在するかを判定する。読み出すページが更に存在する場合、ステップ４３５が繰り返される。一方、ステップ４６５で読み出すページがそれ以上存在しないと判定された場合、処理４００は終了する。ステップ４５５において１つ以上の誤りが検出された場合、ステップ４７０において、プロセッサ１１２は誤り訂正動作を実行する。そのような動作の一例については、図５を参照して後述する。ステップ４７５において、プロセッサ１１２は、誤り訂正動作が成功したかを判定する。誤り訂正動作が成功した場合、ステップ４６０が繰り返される。誤り訂正動作が成功していない場合、プロセッサ１１２は、ステップ４８０において誤り情報（例えば、エラーログ）をＮＶＭ１５４に格納し、その後、処理をステップ４６５に進める。誤り情報は、保守ログに更に格納されてもよい。格納された誤り情報は、ブロック管理動作に使用されてもよい。ブロック管理動作に対する一例については図８Ａを参照して後述する。いくつかの実施例において、プロセッサ１１２は、メモリセルのページ又はブロックの参照セル間の低下の変化をＮＶＭ１５４の保守ログに記録する。他の実施例において、参照セルにおける低下度が所定の条件を満たす場合、プロセッサ１１２はメモリセルのページ及び／又はブロックの物理的及び／又は論理的な場所のみを保守ログに記録する。例えば参照セルにおける低下が１０％を超える場合又は種々の参照セルの低下度の差が１０％を超える場合、メモリセルのページ及び／又はブロックに格納されたデータは、追加の電荷をメモリセルに印加することにより又は保守動作中にページを完全に書き換えることによりリフレッシュされるように構成することができる。保守動作の一例については、図９を参照して後述する。
【００７９】
図５は、ビット誤りを含むデータのページを訂正するために誤り訂正動作を実行する処理５００の一例を示すフローチャートである。処理５００は、ステップ５０５において、プロセッサ１１２がフラッシュメモリから読み出されたデータのページにおいてビット誤りを検出し、ビット誤りを訂正するためのハードウェアＥＣＣアルゴリズムを実行するようにＥＣＣエンジン１４８にコマンドを送出した時に開始する。いくつかの実施例において、ＥＣＣエンジン１４８及びＡＤＣ１４２、並びに／あるいはアナログインタフェース１３６はビット誤りを訂正するために協働してもよい。
【００８０】
ＥＣＣエンジン１４８は、ステップ５１０において、ハードウェアＥＣＣアルゴリズムが成功したかを検査する。ハードウェアＥＣＣアルゴリズムがデータのページの全ての誤りを訂正できる場合、ハードウェアＥＣＣアルゴリズムは成功する。成功した場合、ステップ５１５において、ＥＣＣエンジン１４８は例えばＳＤＲＡＭ１５１にＥＣＣの結果を格納する。次にＥＣＣエンジン１４８は、ステップ５１８において「誤り訂正成功（Error correction successful）」を示すメッセージを生成し、処理５００は終了する。
【００８１】
存在する誤りビット数がハードウェアＥＣＣアルゴリズムが訂正できる誤りビット数を超える場合、ＥＣＣエンジン１４８は、ステップ５２０でフラッシュメモリからデータのページを再度読み出すようにアナログインタフェース１３６にメッセージを送出する。次のステップ５２５において、ＥＣＣエンジン１４８は、ハードウェアＥＣＣアルゴリズムを再度実行する。ステップ５３０において、ＥＣＣエンジン１４８は、ハードウェアＥＣＣアルゴリズムが成功したかを検査する。ハードウェアＥＣＣアルゴリズムが訂正できる場合、ハードウェアＥＣＣアルゴリズムは成功し、ステップ５１５に進む。
【００８２】
ステップ５３０において、存在する誤りビット数がハードウェアＥＣＣアルゴリズムが訂正できる誤りビット数を上回るとＥＣＣエンジン１４８が判定した場合、ステップ５３５において、ＥＣＣエンジン１４８は、ビット誤りを訂正するために代替値コマンドを実行する。代替値コマンドの実施例については、図６Ａ〜図６Ｃを参照して後述する。ステップ５４０で、ＥＣＣエンジン１４８は、代替値コマンドがビット誤りを訂正するかを検査する。ビット誤りが訂正されるとＥＣＣエンジン１４８が判定した場合、ステップ５１５に進む。
【００８３】
ビット誤りが訂正されないとＥＣＣエンジン１４８が判定した場合、ＥＣＣエンジン１４８は、データのページを回復するために、ステップ５４０で拡張ソフトウェアＥＣＣアルゴリズムを実行する。例えば、拡張ソフトウェアＥＣＣアルゴリズムは、より多くのＥＣＣビットを使用するより深いＥＣＣアルゴリズムを含んでいるものとする。例えば、ハードウェアＥＣＣアルゴリズムは４ビットのＥＣＣビットを必要とし、拡張ソフトウェアＥＣＣアルゴリズムは１２８ビットのＥＣＣビットを使用するものとしてもよい。その後ＥＣＣエンジン１４８は、ステップ５５０において拡張ソフトウェアＥＣＣアルゴリズムが成功したかを検査する。拡張ソフトウェアＥＣＣアルゴリズムが成功したとＥＣＣエンジン１４８が判定した場合、ステップ５１５に進む。他方、ステップ５５０において拡張ソフトウェアＥＣＣアルゴリズムが成功していない場合、ＥＣＣエンジン１４８は、ステップ５５５においてメッセージ「誤り訂正失敗（Error correction unsuccessful）」を生成し、処理５００は終了する。
【００８４】
図６Ａは、代替のデータ値を生成して使用するための処理６００の一例を示すフローチャートである。プロセッサ１１２、ＥＣＣエンジン１４８、フラッシュインタフェース１１５、あるいは上記の素子及び他の素子の他の組合せが、処理６００の動作を実行するように構成され得る。ステップ６０５において、プロセッサ１１２はマスクテーブルから情報を検索して、データページの不確実なデジタルデータ値を識別し（図３Ｂのステップ３３０を参照）且つ場合によっては不確実性の程度に関する情報を検索する。
【００８５】
プロセッサ１１２は、ステップ６１０においてパラメータ（例えば、温度、データページからの読み出し回数、データページへの書き込み回数、セル解像度レジスタ１６６の情報、供給電圧、チャージポンプ電圧、データページの基準電圧等）に基づいて補正データを検索、取得する。例えばプロセッサ１１２は、データページの補正データを判定するために補正関数を算出してもよい。更に又はあるいは、ステップ６１５において、プロセッサ１１２は補正データを使用して不確実な各データ値に対する代替デジタル値を判定する。不確実な各データ値に対する代替デジタル値は、最近接するデジタル値及び次に近接するデジタル値を含む場合が多い。更に代替デジタル値は、メモリセルの検出アナログ電圧のデジタル表現から２つのデジタルデータ値分だけ離れたデジタルデータ値を含んでもよい。一般に、全てのメモリセルが不確実なデータ値を有するわけではない。ステップ６２０において、プロセッサ１１２は、特定のデジタルデータ値を有するメモリセルに対する格納されたデジタルデータ値と共に識別された代替デジタル値をバッファに格納する。
【００８６】
代替デジタル値が格納された後、プロセッサ１１２は、ステップ６２５において代替デジタル値の組合せをバッファから選択する。代替デジタル値の組合せ自体は、例えば補正される可能性がより高いそれら代替デジタル値を識別しようとするアルゴリズムに基づいて選択されてもよい。この選択アルゴリズムは、各デジタルデータ値と関連付けられる不確実性の程度に関するデータを使用してもよい。更に、そのような選択アルゴリズムが使用されるかに関わらず、代替デジタル値の選択された組合せは全ての可能な代替デジタル値を含む必要はない。換言すると、不確実であると識別されたデータ値の中でも、元のデータ値の一部は代替データ値の部分集合と共に使用されてもよい。
【００８７】
次にプロセッサ１１２は、ステップ６３０において、十分確実に判定されたデジタルデータ値と共に代替デジタル値の選択された組合せを使用してページデータをバッファに格納する。ステップ６３５において、プロセッサ１１２は格納されたページデータに対してＥＣＣアルゴリズムを実行する。例えばプロセッサ１１２は、処理５００で説明されたような動作を実行してもよい。場合によっては、ＥＣＣアルゴリズムの実行により、１つ以上の代替デジタル値及び確実性を仮定して判定された１つ以上のデジタルデータ値が変更されてもよい。ステップ６４０において、プロセッサ１１２はＥＣＣアルゴリズムが成功したかを判定する。ＥＣＣアルゴリズムが成功したとプロセッサ１１２が判定した場合、ステップ６４５において、プロセッサ１１２は成功したＥＣＣの結果を含むページデータを格納し、処理６００は終了する。
【００８８】
ステップ６４０において、ＥＣＣアルゴリズムが成功していないとプロセッサ１１２が判定した場合、ステップ６５０において、プロセッサ１１２は代替値の別の組合せが試行可能であるかを判定する。代替値の可能な組合せの数は、不確実なデジタルデータ値を含むメモリセルの数及び識別された代替デジタル値の数に依存する。一般に殆どのメモリセルは、不確実なデジタルデータ値を有さない。代替値の別の組合せが試行可能であるとプロセッサ１１２が判定した場合、ステップ６２５に戻る。
【００８９】
ステップ６５０において、全ての代替組合せが試行されたとプロセッサ１１２が判定した場合、ステップ６５５において、プロセッサ１１２はエラーメッセージを生成し、処理６００は終了する。いくつかの実施例において、追加の代替値の生成及び／又は種々のデータ値を読み出すための電圧閾値の調整及びページデータに対する補正値を識別するためのＥＣＣアルゴリズムの実行の再試行が可能であってもよい。例えば代替値は、十分確実に特定の値を表すことを先に判定され且つデジタル値分布曲線２０５〜２１０（図２Ａに関して上述された）の１つに対する閾値に相対的に近い電圧レベルに対して識別されてもよい。あるいは、種々のデジタル値分布曲線２０５〜２１０に対する電圧平均は上述のように調整され、データ値は再生成され、新しい代替値を識別することを含む。
【００９０】
いくつかの実施例において、ステップ６５５のエラーメッセージは、ＮＶＭ１５４の保守ログに記録される。その後、図９に示すような保守動作中、追加の代替値の生成及び／又は種々のデータ値を読み出すための電圧閾値の調整及びページデータの補正値を識別するためのＥＣＣアルゴリズムの実行の再試行が可能であってもよい。識別された補正値はデータを書き換えるのに使用されてもよい。
【００９１】
図６Ｂは、代替値を生成して使用するための処理６６０の別の例を示すフローチャートである。処理６６０は、処理６００と共通のステップを有する。この例において、マスクテーブルを使用して不確実なデータ値を識別した後、或いはステップ６０５の後、プロセッサ１１２は、ステップ６６５において最近接するデジタル値を使用して不確実な各値に対する代替値を判定する。例えばプロセッサ１１２は、デジタル値分布２００（図２Ａ）を使用し、セル電圧に最近接するデジタル値ではなく２番目に近接するデジタル値を選択する。プロセッサ１１２は、ステップ６２０で開始する図６Ａと関連して説明された動作を実行することにより処理６００を継続する。
【００９２】
図６Ｃは、代替値を生成して使用するための処理６７０の別の例を示すフローチャートである。この例においてプロセッサ１１２は、マスクテーブルから不確実なデジタル値情報を必ずしも検索しない。処理６７０は、プロセッサ１１２が選択したページに対して代替値識別及び解析を実行するためのコマンドを受信する（例えば図５のステップ５３５を参照）ステップ６７２において開始する。
【００９３】
ステップ６７４において、プロセッサ１１２は選択されたページの読み出しを開始する。ステップ６７６において、プロセッサ１１２はセル電圧を読み出すページのセルを選択する。ステップ６７８において、プロセッサ１１２は、セル電圧が不確実であるかを判定する。例えばプロセッサ１１２は、図２Ａに示すようなデジタル値分布２００を使用して、受信したセル電圧がグレー領域２２０のうちの１つのグレー領域内に存在するかを判定してもよい。セル電圧がグレー領域内にあるとプロセッサ１１２が判定した場合、プロセッサ１１２は、ステップ６８０において２番目に近接するデジタルデータ値を使用してセルのデジタルデータ値を判定する。他の実施例において、プロセッサ１１２は、最近接するデジタルデータ値を使用してセルのデジタルデータ値を判定する。次にプロセッサ１１２は、ステップ６８２においてデジタルデータ値をバッファに格納する。
【００９４】
ステップ６７８において、セル電圧がグレー領域内に存在しないとプロセッサ１１２が判定した場合、プロセッサ１１２は、ステップ６８４において格納された閾値に基づいてセルのデジタルデータ値を判定し、ステップ６８２を実行する。ステップ６８２の後、ステップ６８６において、プロセッサ１１２はページの別のセルを読み出すかを判定する。プロセッサ１１２が別のセルを読み出すと判定した場合、ステップ６７６に戻る。読み出すセルがそれ以上存在しないとプロセッサ１１２が判定した場合には、処理６７０は終了する。
【００９５】
図７Ａは、参照セル１３０ａ、１３０ｂ、１３０ｃを使用してフラッシュメモリページ１２１にデータを書き込むための処理７００の一例を示すフローチャートである。処理７００は、プロセッサ１１２により実行され得る。処理７００は、プロセッサ１１２が書き込みコマンドを受信するステップ７０５で開始する。例えば書き込みコマンドは、書き込み命令、書き込まれるデータ及びデータが書き込まれるメモリアドレスを含んで構成され得る。メモリアドレスは、例えばホストから論理ブロックアドレスとして受信されてもよい。ステップ７１０において、プロセッサ１１２は、書き込みコマンドに基づいてフラッシュメモリのメモリページを選択する。
【００９６】
次にプロセッサ１１２は、ステップ７１５において、ＳＤＲＡＭ１５１等のバッファに書き込まれるデータをコピーしてもよい。データは、外部のホストデバイス又は別のメモリページから転送されてもよい。いくつかの実施例において、選択されたメモリページに格納されたデータは、選択されたページに再びコピーするためにバッファにコピーされる。他の実施例において、選択されたメモリページに書き込まれるデータはバッファにコピーされず、データソース（外部のホストデバイス又は他のメモリセルからの）から選択されたメモリページに直接書き込まれる。
【００９７】
その後ステップ７２５において、プロセッサ１１２は選択されたページに格納された任意のデータを消去する。ステップ７３０において、プロセッサ１１２は、例えばデータセル１２４及び参照セル１３０ｃに電荷を印加することによりバッファから選択されたメモリページにデータを書き込む。ステップ７３０は、所望のデータ値及び各セルに対する対応するアナログ電圧レベルに依存して異なる電荷量をメモリセルに印加する。いくつかの実施例において、選択されたメモリページのメモリセルに電荷を印加するために、チャージポンプを使用することができる。その後ステップ７３５において、プロセッサ１１２は、選択されたページの参照セル１３０ｃの基準電圧を読み出す。基準電圧は、参照セル１３０ｃの電圧レベルを検出することにより読み出される。ステップ７４０において、プロセッサ１１２は、基準電圧が目標電圧より低いかを検査する。基準電圧が目標電圧より低いとプロセッサ１１２が判定した場合、ステップ７３０に戻り、追加の電荷を印加して選択されたメモリページのセルに格納された電圧を増加する。印加された追加の電荷量は、所望の電圧レベルが参照セルの電圧と割合に関して比較される方法に依存して比例して変更されてもよい（例えば検出された参照セルの電圧が目標電圧より１０％低く、特定のメモリセルが参照セルの２倍の電圧レベルを有する場合、特定のメモリセルに印加される追加の電荷量は参照セルに印加される電荷の２倍であってもよい）。
【００９８】
ステップ７４０において、基準電圧が目標電圧より低くないとプロセッサ１１２が判定した場合、プロセッサ１１２は、ステップ７４５においてデータセルを選択し、ステップ７５０において選択したデータセルの電圧を読み出す。その後ステップ７５５において、プロセッサ１１２は、読み出した電圧が高すぎるかを判定する。例えばプロセッサ１１２は、読み出したセル電圧をデジタル値分布と比較し、セル電圧が目標デジタル値の電圧範囲内にあるかを検査してもよい。電圧が高すぎないとプロセッサ１１２が判定した場合、ステップ７６０において、プロセッサは別のデータセルを選択するかを判定する。別のデータセルを選択する必要がないとプロセッサ１１２が判定した場合、処理７００は終了する。別のデータセルを選択する必要があると判定された場合、処理７００はステップ７４５に戻り、追加のデータセルを検査する。
【００９９】
いくつかの実施例において、ステップ７４５で選択されたデータセルを検査して、それらが低すぎるかを判定できてもよい。低すぎると判定された場合、処理７００はステップ７３０に戻り、１つ以上のデータセルに追加の電荷を印加する。いくつかの実施例において、ステップ７４０における１つ以上の参照セルの検査が完了すると、ステップ７４５（又はステップ７４５の繰り返し）において、全てのデータセルの電圧レベルは選択され、レベルが高すぎるか且つ／又は低すぎるかを判定してもよい。このように、参照セルは、ページ又はブロックの初期の充電を行なうために使用されてもよく、その後セルの電圧レベルを検査し且つ可能性として微調整する。更にいくつかの実施例において、ステップ７４０で使用される参照セルの目標電圧は、過充電を回避するために所望のデータ値に対する閾値電圧より僅かに低く設定されてもよく、その後、実際のデータセル値を検査し、実際のデータセルに対する所望のデータ値に対応する電圧レベルに達するように電圧レベルを微調整する。
【０１００】
ステップ７５５において、電圧が高すぎるとプロセッサ１１２が判定した場合、プロセッサ１１２は、選択したページの書き換えが必要であるかを判定する。例えばプロセッサ１１２は、図５を参照して説明した訂正アルゴリズムの１つを使用して訂正可能な誤り数以下である閾値とビット誤り数とを比較してもよい。例えば、ビット誤り数が閾値を上回る場合、選択したページは書き換えられる。上回らない場合、プロセッサ１１２は、選択したページの書き換えが必要ないと判定する。ステップ７６５において、ページの書き換えが必要ないとプロセッサ１１２が判定した場合、処理７００はステップ７６０に進む。ステップ７６５において、ページの書き換えが必要であるとプロセッサ１１２が判定した場合、処理７００はステップ７２５に戻り、メモリページの書き込みを再度開始する。いくつかの実施例において、目標電圧は、目標電圧のオーバシュートの尤度を低減するためにステップ７６５の後に徐々に低下されてもよい。
【０１０１】
図７Ｂは、ホストデバイスとＭＣＰ１００との間のより速いデータ転送速度を達成する処理７７０の一例を示すフローチャートである。処理７７０は、プロセッサ１１２がホストデバイスから書き込みコマンドを受信するステップ７７２において開始する。例えばホストデバイスからの書き込みコマンドは、書き込み命令、書き込まれるデータ及びデータが書き込まれるメモリアドレスを含んでもよい。メモリアドレスは、例えば論理ブロックアドレスとしてホストから受信されてもよい。
【０１０２】
次にプロセッサ１１２は、高速書き込み処理（例えば、２値セル解像度又は他の相対的に低い解像度での書き込み）に進むか、あるいはより多くの時間、電力及びより高い解像度で書き込みを行なうプロセッサを多用する書き込み処理を使用するかを判定する。ステップ７７４において、プロセッサ１１２は、高速書き込みを実行するようにホストインタフェースからのコマンドがあるかを判定する。いくつかの実施例において、ホストデバイスは高速書き込みの解像度を指定することができる。ホストデバイスが高速書き込みを指定していない場合、プロセッサ１１２は、高速書き込みが保証されるかを個別に判定してもよい。ステップ７７６は、ＭＣＰ１００又はＭＣＰ１００に接続されるホストデバイスが所定の電源条件を満たすかを判定する。図示する実施例において、ステップ７７６は、ホストデバイスが交流電力を供給されるかを判定する。他の実施例によれば、ステップ７７６は、ホストデバイスに電力を供給するバッテリが所定の充電レベルまで充電されるかを判定する。いくつかの実施例において、ステップ７７６は、ホストデバイスに電荷を供給するバッテリが最大容量又は少なくとも容量の９０％まで充電されるているかを判定する。ステップ７７８は、プロセッサ１１２が所定の帯域幅条件を満たす余分な帯域幅を有するかを判定する。いくつかの実施例において、プロセッサ１１２がアイドル状態の場合にステップ７７８は満足される。また、他の実施例において、プロセッサ１１２の帯域幅の所定の割合が使用されていない場合にステップ７７８は満足される。７７６及び７７８の双方が満足される場合、ステップ７８０において処理７００を使用して高解像度でメモリセルに書き込む。条件７７６及び７７８の一方又は双方が満足されない場合、高速書き込み手順に進む。
【０１０３】
高速書き込み手順において、プロセッサ１１２は、ステップ７８２において、ホストデバイスからデータを書き込む１つ以上の利用可能なメモリセルページを選択する。いくつかの実施例において、プロセッサはホストデバイスからのデータをＳＤＲＡＭ１５１等のバッファにコピーされ得る。他の実施例において、ホストデバイスからのデータは、バッファにコピーされず、ステップ７２５及びステップ７８４の後にステップ７８６において選択したメモリページに直接書き込まれる。ステップ７２５において、プロセッサは選択したページに格納された任意のデータを消去する。ステップ７８４において、プロセッサ１１２は、選択したメモリページと関連付けられる任意のセル解像度レジスタを低解像度に更新する。いくつかの実施例において、低解像度とはメモリセル毎に１ビットの解像度のことである。他の実施例において、低解像度はセル毎に２ビット、３ビット又は４ビットである。ホストデバイスからのデータをＭＣＰ１００にコピーする時に低解像度で書き込むことにより、各メモリセルを充電する時に必要とされる精度は低いためデータ転送速度は速くなり、メモリセルに書き込む時に必要とされる電圧調整量及び注意度は低減される。低解像度でメモリセルにデータを書き込んだ後、ステップ７８８では、選択したメモリページに格納されたデータが保守処理（処理９００）の間に高解像度で書き換えられるべきであることを示す保守ログエントリを記録する。
【０１０４】
図８Ａは、メモリページのセル解像度を調整する処理８００の一例を示すフローチャートである。例えばプロセッサ１１２がセル解像度レジスタ１６６を更新するために保守プログラムを実行した時、処理８００は処理８００の動作を実行してもよい。処理８００は、プロセッサ１１２が格納された誤り情報を読み出すステップ８０５において開始する。誤り情報は、例えば図４のステップ４８０で説明したように、読み出し誤り又は書き込み誤りの間に格納されてもよい。次にプロセッサ１１２は、ステップ８１０においてページを選択する。ステップ８１５において、プロセッサ１１２は、選択したページの誤り数が閾値より多いか判定する。選択したページの誤り数が閾値より多くない場合、プロセッサ１１２は、検査するページが更に存在するかをステップ８２０において検査する。検査するページがそれ以上存在しないとプロセッサ１１２が判定した場合、処理８００は終了する。ステップ８２０において、検査するページが更に存在するとプロセッサ１１２が判定した場合、ステップ８１０に戻る。いくつかの実施例において、プロセッサ１１２は、誤りを含む全てのメモリページを検査してもよい。他の実施例において、プロセッサ１１２は、誤り情報に記録された新しい誤りを含むメモリページのみを検査してもよい。
【０１０５】
ステップ８１５において、選択したページの誤り数が閾値より多い場合、ステップ８２５において、プロセッサ１１２は選択したページからデータのページをバッファにコピーする。次にプロセッサ１１２は、選択したページのセル解像度を低減するようにセル解像度レジスタ１６６を更新する。例えばフラッシュインタフェース１１５は、セル解像度レジスタ１６６を検査して、セル解像度が低減されたことを認識してもよく、その後フラッシュインタフェース１１５は、新しい低減されたセル解像度を使用して選択したページに対して読み出し及び書き込みを行なってもよい。
【０１０６】
ステップ８３５において、プロセッサ１１２は、コピーしたデータに対する物理アドレスを割り当てることができる。利用可能なメモリページに依存して、プロセッサ１１２はコピーしたデータを格納するために１つ、２つ、４つ又は他の数の物理メモリページを割り当ててもよい。次にステップ８４０において、プロセッサ１１２は、割り当てられた物理アドレスに対応するように論理アドレステーブルを更新する。論理アドレステーブルは、論理ページを１つ以上の物理ページにマップするために使用されてもよい。メモリアクセス動作中の論理アドレステーブルの使用例については図１０を参照して後述する。ステップ８４５において、プロセッサ１１２は、コピーしたデータをバッファから割り当てられた物理アドレスのページに移動する。次にプロセッサ１１２は、ステップ８２０において検査するページが更に存在するかを判定する。存在する場合、処理８００はステップ８１０に戻る。存在しない場合、処理８００は終了する。
【０１０７】
図８Ｂは、メモリセルのページ又はブロックのグループをダウングレードし、元の解像度を有するメモリセルの単一のページ又はブロックとしてそのグループを論理的に処理することを重視する図８Ａの処理に類似する処理を示す。図８Ｂにおいて、処理８５０は、格納された誤り情報を読み出し（８０５）、ページを選択し（８１０）、ページに関連する誤り数が閾値を上回るかを判定する（８１５）。ページに関連する誤り数が閾値を上回る場合、ページに格納されたデータはバッファにコピーされ（８２５）、ページに関連するセル解像度レジスタはページの解像度を低減するように更新される（８３０）。しかし、図８Ｂに示す実施例において、プロセッサは、低減されたセル解像度を有するデータの別のページを更に選択し（８５５）、２つのページを対にするために、ブロック管理コード及び／又は論理アドレス指定コードを更新する（８６０）。低減されたセル解像度を有する２つのページは、より高い元の解像度の単一のページとして論理的に処理される（８６５）。この処理は、３つ以上のメモリセルをグループ化してもよい。
【０１０８】
いくつかの実施例において、この処理は、メモリセルのブロック全体をダウングレードし、それらを対にするか又は関連付ける。いくつかの実施例において、対にされた各ページは、低く調整された同一のセル解像度を有し、同一数のメモリセルを含む。例えば８ビットのデータを格納する各メモリセルから４ビットのデータを格納する各メモリセルにダウングレードされたメモリセルのページは、各々が４ビットのデータを格納するメモリセルの別のページとグループ化される。メモリセルのそれら２つのページの組合せは、メモリセル毎に８ビットのデータを格納する単一のページとして（又は単一のブロックとして）フラッシュディスクコントローラにより論理的に処理される。メモリセルのそれら対にされたページは、同一ブロック上にある必要はなく、可能性として異なるフラッシュメモリダイに存在してもよい。次に処理８５０は、検査するメモリページが更に存在するかを判定するステップ８２０を実行し、図８Ａにおいて説明されたように進行する。
【０１０９】
図９は、保守処理９００を示すフローチャートである。保守処理９００に対する１つの可能な機能は、相対的に低い解像度でフラッシュメモリに格納されたデータを相対的に高い解像度で書き換えるためのものである（例えば、図７Ｂを参照）。保守処理は、例えばデータ記憶容量を最大限にし且つホストデバイスのバッテリ寿命を最長にするために使用される。いくつかの実施例において、保守処理９００は、定期的にスケジュールされた保守動作の一部としてプロセッサによりトリガされる。いくつかの実施例において、保守処理９００は、ホストデバイスが交流電力を供給されることを信号伝送するホストデバイスからの信号によりトリガされる。他の実施例において、アイドル状態のプロセッサ１１２等の他の条件により、ホストデバイス又はプロセッサ１１２が保守処理９９００をトリガしてもよい。
【０１１０】
処理９００はステップ９０５で開始し、ＭＣＰ１００が所定の電力条件下で動作しているかを判定する。いくつかの実施例において、この電力条件はホストデバイスが交流電力を受信することにより満たされる。いくつかの実施例において、この電力条件は、ホストデバイスのバッテリが所定の電荷量を満たすことにより、例えばバッテリが満充電されることにより満たされる。満充電されたバッテリは、ホストデバイスが交流電力を供給されていることを示してもよい。ＭＣＰ１００が所定の電力条件を満たさない場合、処理９００は終了する。
【０１１１】
次にステップ９１０において、プロセッサ１１２は、プロセッサ１１２が保守処理９００を完全に実行するのに十分な帯域幅を有するかを判定する。いくつかの実施例において、保守動作は、単に最小の帯域幅を必要とするバックグラウンドプロセスとして実行する。また、いくつかの実施例において、保守動作は、アイドル状態のプロセッサ１１２を必要とする。他の実施例において、処理９００は、プロセッサ１１２が十分な帯域幅を有するかを判定しない。いくつかの実施例において、帯域幅の必要条件は、正常な保守処理間の時間又はフラッシュメモリ上の利用可能な空間量により測定される保守動作の必要性に基づいて変更される。プロセッサ１１２が十分な帯域幅を有さない場合、処理９００は終了する。
【０１１２】
所定の電力条件が満たされ、プロセッサ１１２が十分な帯域幅を有する場合、ステップ９１５において、処理９００は格納された保守ログを読み出す。いくつかの実施例において、格納された保守ログはＮＶＭ１５４に格納されている。また、いくつかの実施例において、格納された保守ログは可能な保守動作の優先度を示す。いくつかの実施例において、格納された保守ログは、任意の保守ステップ（ステップ９２０、ステップ９２５、ステップ９３０及びステップ９３５等）が簡略化された動作において実行されるかを判定するために使用される。例えば保守ログは、メモリセルの特定のページをダウングレードし且つメモリセルの同一ページ上のデータを書き換える必要性を示してもよい。他の実施例において、保守動作は、例えば転送データをより高い解像度で書き換えること（ステップ９２０）、処理８００及び８５０を実行する等によりセル解像度を調整して低くし且つページのグループを対にすること（ステップ９２５）、所定の誤り条件を満たすデータを書き換えること（例えば、処理７００を使用して）（ステップ９３０）、磨耗管理ソフトウェアコード１５７を使用して最も頻繁にアクセスされるデータを使用される頻度が最も少ないデータと交換すること（ステップ９３５）、１つの物理的な場所から別の物理的な場所にデータを移動した各保守動作に対して論理アドレス指定ソフトウェアコード１６３を更新すること（例えば、処理１０００を使用して）（ステップ９４０）及びメモリセルのページに追加の電荷を印加することにより電圧低下の閾値量を上回るデータのページをリフレッシュすること（ステップ９４５）の所定のシーケンスである。一部の動作、全ての動作又は追加の動作を含む他のシーケンスが使用されてもよい。いくつかの実施例において、処理９００は各保守ステップ９２０、９２５、９３０、９３５又は９４５の間にステップ９０５及び／又はステップ９１０を繰り返し、条件９０５又は９１０が変更された場合に終了してもよい。その後、処理９００は終了する。
【０１１３】
図１０は、ＦＤＣ１０６において論理アドレス指定を行なう処理１０００の一例を示すフローチャートである。例えばＦＤＣ１０６は、受信した読み出し又は書き込みコマンドを、１つ以上の物理ページに対する論理アドレスへマップする。いくつかの実施例において、ＦＤＣ１０６は、論理ページを１つ以上の可変物理ページに動的にマップしてもよい。例えばＦＤＣ１０６は、物理メモリページの負荷を均一化するためにマッピングを変更してもよい。いくつかの実施例において、論理ページと物理ページとのマッピングは論理アドレステーブルに格納され得る。また、いくつかの実施例において、プロセッサ１１２が論理アドレス指定コード１６３を実行している時、処理１０００はプロセッサ１１２により実行されてもよい。メモリページをアクセスする（例えば、読み出されるか、書き込まれるか又は消去される）ホストデバイスからＦＤＣがコマンドを受信した時、処理１０００は開始する。その後ステップ１００５において、プロセッサ１１２は、論理ページアドレスを受信してフラッシュメモリのページにアクセスする。
【０１１４】
次にステップ１０１０において、プロセッサ１１２は、受信した論理アドレスと関連付けられる１つ以上の物理ページアドレスを判定する。一例において、受信した論理ページアドレスは、１つの物理ページアドレスにのみ関連付けられる。また、別の例において、物理ページが通常より低いセル解像度を有するため又は物理ページがフラッシュメモリにおいて連続していないため、あるいは物理ページが異なるブロック又は異なるダイに存在するため、受信した論理ページアドレスは２つ以上の物理ページに関連付けられる。
【０１１５】
ステップ１０１５において、プロセッサ１１２は、判定した物理ページアドレスのうちの第１のアドレスを選択する。ステップ１０２０において、プロセッサ１１２は選択した物理アドレスのページデータを読み出す。ステップ１０２５において、プロセッサ１１２はホスト出力バッファにページデータを格納する。ステップ１０３０において、プロセッサ１１２は、別のメモリページにアクセスする必要があるかを判定する。例えば論理ページアドレスと関連付けられる物理ページアドレスが２つ以上存在する場合、プロセッサ１１２は別のメモリページにアクセスする。ステップ１０３０において、別のメモリページにアクセスする必要があるとプロセッサ１１２が判定した場合、ステップ１０３５において、プロセッサは次に判定される物理ページアドレスを選択し、ステップ１０２０に戻る。別のメモリページにアクセスする必要がない場合、処理１０００は終了する。
【０１１６】
図１１は、複数のＮＡＮＤフラッシュメモリダイ１０３及びＦＤＣ１０６を含むシステム１１００の一例を示す。ＦＤＣ１０６は、アナログインタフェース１１５のマルチプレクサ（ＭＵＸ）１１０５及びチャージポンプ１１１０を含む。システム１１００がＮＡＮＤフラッシュメモリダイ１０３を使用して示されるが、システム１１００において使用される技術の一部は、ＮＯＲフラッシュメモリダイ又はＮＡＮＤダイ及びＮＯＲダイの組合せに適用可能であってもよい。システム１１００は、ディスクリートＩＣを使用して実現されてもよく、あるいは単一のパッケージに部分的又は全体的に組み込まれてもよい。
【０１１７】
ＦＤＣ１０６は、アナログインタフェース１１５を介してＮＡＮＤフラッシュメモリダイ１０３からアナログデータを受信する。この例において、ＭＵＸ１１０５は、複数のアナログ入力を受信する。いくつかの実施例において、ＭＵＸ１１０５は、複数のフラッシュメモリダイ１０３から複数のアナログ入力を受信する。アナログインタフェース１１５は、ＡＤＣ１４２に送信される１つのアナログ入力を選択するようにＭＵＸ１１０５を制御できる。例えばアナログインタフェース１１５は、受信した読み出しコマンドに基づいてＭＵＸ１１０５を制御してもよい。書き込み動作中、ＦＤＣ１０６はチャージポンプ１１１０を使用して１つのＮＡＮＤフラッシュメモリダイ１０３のメモリセルに電荷を印加する。いくつかの実施例において、チャージポンプ１１１０は、複数のフラッシュメモリダイ１０３上のメモリセルに電荷を供給するように構成される。例えば、ＦＤＣ１０６は制御信号を送出し、指定されたメモリダイを選択してチャージポンプ１１１０から電荷を受け取ってもよい。その後、チャージポンプ１１１０が電荷を印加した場合、選択されたメモリダイは電荷を受け取る。
【０１１８】
複数のダイ１０３の間でＡＤＣ１１０５及びチャージポンプ１１１０を共有することにより、メモリダイ１０３の格納サイズは増加する。更にフラッシュメモリダイ１０３は、ＡＤＣ１４２及びチャージポンプ１１１０なしで低コストで製造されてもよい。いくつかの実施例において、チャージポンプ１１１０は、ダイ上でＦＤＣ１０６と組み合わされてもよく、あるいはプリント回路基板等の異なる基板又は異なるダイに別個に搭載されてもよい。
【０１１９】
複数のフラッシュメモリダイ１０３と共に使用されるように構成されたチャージポンプ１１１０及びＡＤＣ１１０５の使用を容易にするために、いくつかのフラッシュメモリダイ１０３は、外部供給ノードからプログラミング電荷を受け取るように構成される入力を含んでもよい。フラッシュメモリダイ１０３は、供給されたプログラミング電荷を変更又は調節するための任意の追加の回路網を含むように要求されない。フラッシュメモリダイ１０３は、アナログ電圧信号をフラッシュディスクコントローラ１０６に送出するように構成される出力を更に含んでもよい。
【０１２０】
いくつかの実施例において、ＦＤＣ１０６は、データをメモリダイ１０３に書き込むためのチャージポンプインタリービング方法を更に含んでもよい。
【０１２１】
図１２は、プログラミング論理レベル電力をＮＡＮＤフラッシュメモリダイ１０３に別個に提供するためのアーキテクチャを示すシステム１２００の一例を示す。システム１２００は、電源１２１０から電力を受け取るチャージポンプ１１１０及び低ドロップアウトレギュレータ（ＬＤＯ）１２０５を含む。
【０１２２】
図示するように、ＮＡＮＤフラッシュメモリダイ１０３は２つの電力入力を含む。チャージポンプ電圧（Ｖｃｐ）に対する電力入力及び論理電圧（Ｖｌｏｇｉｃ）に対する電力入力である。いくつかの実施例において、ＶｃｐはＶｌｏｇｉｃより非常に高い。例えば、Ｖｃｐは約１２〜２０Ｖ又は約１２〜３０Ｖであり、Ｖｌｏｇｉｃは約１〜３Ｖである。いくつかの実施例において、Ｖｃｐの調節及び電流の必要条件はＶｌｏｇｉｃとは大きく異なってもよい。
【０１２３】
一例として、ＮＡＮＤフラッシュメモリダイ１０３は、消費電力、切り替え時間等を最小限にするために、Ｖｌｏｇｉｃが低論理電圧で厳しく調節された（例えば、０．５％、１．０％、５％）電圧許容差を有することを要求してもよい。更に論理電圧は、低電圧レベルで高周波バイパスキャパシタンスを必要としてもよい。それに対して、チャージポンプ供給調節必要条件は約５％〜１０％であってもよく、非常に低い周波数、高い電圧キャパシタンスを必要とする。
【０１２４】
図１２のシステムを簡単にするために、フラッシュメモリダイ１０３は、各フラッシュメモリセルを選択的にプログラムするための電力を受け取るための第１のインタフェースと、書き込み動作中に第１の入力から電力を供給されるフラッシュメモリセルの選択を実行する論理レベル回路網に供給される電力を受け取るための第２のインタフェースとを含んでもよい。フラッシュディスクコントローラ１０６は、プログラミング電圧で第１のインタフェースに電力を供給するための第１の電源と、第２のインタフェースに論理レベル電力を供給するための第２の電源とを含んでもよい。第１の電源及び第２の電源は、フラッシュメモリダイ１０３の外部にあってもよい。
【０１２５】
処理及び技術の種々の実施例を説明したが、他の実施例が異なる順番でステップを実行してもよく、あるいは同一の主要な機能を達成するために変更された構成を実行してもよい。更に、種々の処理における動作が特定のデバイス又は構成要素により実行されるように説明されることもあるが、そのようなデバイス又は構成要素は単なる例であり、動作はある実施例において別のデバイス又は構成要素を使用して実行できる。
【０１２６】
いくつかの例において、ＮＡＮＤフラッシュメモリダイ１０３は、例えば６ビット、７ビット、１０ビット、１２ビットの解像度等の任意の実際的なビット数の解像度を有してもよい。種々の実施例は、ＮＡＮＤフラッシュメモリ、ＮＯＲフラッシュメモリ又はそれらの組合せ、あるいは他の不揮発性メモリを含んでもよいフラッシュメモリを使用してＥＣＣ動作を実行するために使用されてもよい。１つ以上の種類のフラッシュメモリダイは、ＭＣＰ１００において互いに隣接して搭載されてもよく且つ／又は積み重ねられてもよい。本明細書で説明する技術のいくつかの例は、ＮＡＮＤフラッシュ技術による特定の利点に適用されてもよく、本明細書で説明するいくつかの方法は、一般にＮＡＮＤフラッシュ及び／又はＮＯＲフラッシュ等の不揮発性メモリに適用可能であってもよいことが当業者には理解されるだろう。
【０１２７】
上記図面を参照して携帯可能であってもよいシステムの一例を説明したが、他の実施例がデスクトップ及びネットワークインストレーション等の他の処理アプリケーションにおいて展開されてもよい。
【０１２８】
アーキテクチャの特定の機能を説明したが、他の機能が性能を向上するために組み込まれてもよい。例えば、キャッシング（例えば、Ｌ１、Ｌ２等）技術がＦＤＣ１０６において使用されてもよい。例えばスクラッチパッドメモリを提供するために、並びに／あるいは実行時間動作中に使用するためにフラッシュメモリに格納されたパラメータ情報又は実行可能なコードをロードするために、ランダムアクセスメモリが含まれてもよい。１つ以上のプロトコル、無線（例えば、赤外線）通信、格納された動作エネルギー及び電源（例えば、バッテリ）、切り替え及び／又は線形電源回路、並びにソフトウェア保守（例えば、自己試験、アップグレード等）等を使用してネットワーク又は他の通信等の動作を実行するために、他のハードウェア及びソフトウェアが提供されてもよい。１つ以上の通信インタフェースは、データ格納及び関連する動作のサポートにおいて提供されてもよい。
【０１２９】
いくつかの実施例において、１つの方法又は方法の組合せがデータ整合性を向上するために使用されてもよい。例えばセル電圧誤りは、閾値を調整し且つ／又は少なくとも１回セルを書き換えることにより対処されてもよい。セルの書き換えは、理想的なセル電圧からの偏差に応答して及び／又はバックグラウンドで実行されてもよい。例えば多値セル電圧は、ページの１つ以上の不可逆的セルの電圧をリフレッシュするために書き換えられてもよい。徐々に電圧を失う傾向にあるものとして特徴付けられたセルの場合、そのようなセルが充電される電圧レベルは、各セルの範囲の上限閾値近くに増大され、ある期間にわたるそれらセルの電荷の予想される損失を補償してもよい。増大された電圧レベルは、最初、範囲間の灰色ゾーンであってもよい目的の範囲の上限閾値に近いか又はそれを上回ってもよい。予想又は判定された損失率に基づいて、データは、セル電圧を所望の範囲内に実質的に維持するのに十分なほど頻繁に書き換えが行なわれてもよい。同様の補償は、上向きのドリフトを有するものとして特徴付けられたセルを補償するために使用されてもよい。そのような書き換え手順は、例えばリソースが利用可能である時に実行される低優先度のバックグラウンドプロセスとして実行されてもよい。重要なデータとして識別されたデータの場合、書き換えは、セル電圧を所望の範囲内に維持するのに十分なほど頻繁に行なわれるようにスケジュールされてもよく、その頻度は予想される電圧ドリフト率及び各ビットレベルと関連付けられる電圧範囲の大きさに基づく。いくつかの実施例において、書き換えは、携帯デバイスが公共電源回路網から得られる電源等の外部電源に結合された時により頻繁に実行されるように構成されてもよい。書き換え動作は、そのような電源に結合されることに応答して実行されてもよい。更に書き換えは、例えば節電モード中、低バッテリ状態中、あるいは短期又は重要でないデータ（例えば、ストリーミングオーディオ／ビデオ）を格納している時等の特定の状況下ではより少ない頻度で実行されるように構成されてもよい。
【０１３０】
いくつかのシステムは、本発明の実施例と共に使用されるコンピュータシステムとして実現されてもよい。例えば種々の実施例は、デジタル及び／又はアナログ回路網、コンピュータハードウェア、ファームウェア、ソフトウェア、あるいはそれらの組合せを含んでもよい。装置は、プログラマブルプロセッサにより実行するために機械可読記憶装置又は伝播信号等の情報媒体に物理的に取り入れられるコンピュータプログラム製品で実現される。方法は、入力データを操作し且つ出力を生成することにより本発明の機能を実行するために命令のプログラムを実行するプログラマブルプロセッサにより実行される。本発明は、データ記憶システム、少なくとも１つの入力装置及び／又は少なくとも１つの出力装置に対してデータ及び命令を送受信するために結合された少なくとも１つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能な１つ以上のコンピュータプログラムで有利に実現される。コンピュータプログラムは、特定の活動を実行するか又は特定の結果を与えるためにコンピュータにおいて直接又は間接的に使用される命令の集合である。コンピュータプログラムは、コンパイル又は翻訳された言語を含む任意のプログラミング言語の形式で書かれ、スタンドアロンプログラム、あるいはモジュール、コンポーネント、サブルーチン又は計算環境において使用するのに適切な他の単位を含む任意の形式で展開される。
【０１３１】
命令のプログラムの実行に適するプロセッサは、単一のプロセッサ又は任意の種類のコンピュータの複数のプロセッサのうちの１つを含んでもよい汎用マイクロプロセッサ及び専用マイクロプロセッサの双方を例として含む。一般にプロセッサは、読み出し専用メモリ又はランダムアクセスメモリ、あるいはその双方から命令及びデータを受信する。コンピュータの重要な素子は、命令を実行するためのプロセッサ、並びに命令及びデータを格納するための１つ以上のメモリである。一般にコンピュータは、データファイルを格納する１つ以上の大容量記憶装置を更に含むか又は１つ以上の大容量記憶装置と通信するために動作可能に結合される。そのような装置は、内部ハードディスク及び取り外し可能ディスク等の磁気ディスク、光磁気ディスク、並びに光ディスクを含む。コンピュータプログラム命令及びデータを物理的に取り込むのに適切な記憶装置は、ＥＰＲＯＭ、ＥＥＰＲＯＭ及びフラッシュメモリ素子等の半導体メモリ素子、内部ハードディスク及び取り外し可能ディスク等の磁気ディスク、光磁気ディスク、並びにＣＤＲＯＭ及びＤＶＤ ＲＯＭディスクを例として含む全ての形式の不揮発性メモリを含む。プロセッサ及びメモリは、ＡＳＩＣ（特定用途向け集積回路）により補足されるか又はＡＳＩＣに組み込まれる。
【０１３２】
いくつかの実施例において、各システム１００は、揮発性メモリ及び／又は不揮発性メモリに格納された略同一の情報により初期化されてもよく且つ／又は同一の又は類似する情報によりプログラムされてもよい。例えば１つのデータインタフェースは、デスクトップコンピュータ又はサーバ等の適切なホストデバイスに結合された時に自動構成機能、自動ダウンロード機能及び／又は自動更新機能を実行するように構成されてもよい。
【０１３３】
いくつかの実施例において、１つ以上のユーザインタフェース機能は、特定の機能を実行するようにカスタム化されてもよい。本発明は、グラフィカルユーザインタフェース及び／又はインターネットブラウザを含むコンピュータシステムにおいて実現されてもよい。ユーザとの対話を行なうために、いくつかの実施例は、ユーザに対して情報を表示するためのＣＲＴ（ブラウン管）又はＬＣＤ（液晶ディスプレイ）モニタ等の表示装置、キーボード、並びにユーザがコンピュータに入力を提供する時に使用するマウス又はトラックボール等のポインティングデバイスを有するコンピュータ上で実現されてもよい。
【０１３４】
種々の実施例において、システム１００は、適切な通信方法、機器及び技術を使用して通信してもよい。例えばシステム１００は、メッセージが専用物理リンク（例えば、光ファイバリンク、二地点間の配線、デイジーチェーン）を介して送信元から受信機に直接転送される二地点間通信を使用して互換性のあるデバイス（例えば、システム１００に対して及び／又はシステム１００からデータを転送できるデバイス）と通信してもよい。システムの構成要素は、通信ネットワーク上のパケットによるメッセージを含むアナログ又はデジタルデータ通信の任意の媒体又は形式により情報を交換してもよい。通信ネットワークの例には、ＬＡＮ（ローカルエリアネットワーク）、ＷＡＮ（ワイドエリアネットワーク）、ＭＡＮ（メトロポリタンエリアネットワーク）、無線及び／又は光ネットワーク、並びにインターネットを形成するコンピュータ及びネットワークが含まれる。他の実施例は、例えば全方向無線周波（ＲＦ）信号を使用して通信ネットワークにより結合される全ての又は略全てのデバイスに同報通信することによりメッセージを転送してもよい。更に他の実施例は、指向性（すなわち、ナロービーム）アンテナを使用して送信されるＲＦ信号又はオプションとして集光と共に使用されてもよい赤外線信号等の高い指向性により特徴付けられるメッセージを転送してもよい。限定することを意図しない例としてＵＳＢ２．０、Ｆｉｒｅｗｉｒｅ、ＡＴＡ／ＩＤＥ、ＲＳ−２３２、ＲＳ−４２２、ＲＳ−４８５、８０２．１１ａ／ｂ／ｇ、ＷｉＦｉ、イーサネット、ＩｒＤＡ、ＦＤＤＩ（fiber distributed data interface）、トークンリングネットワーク、あるいは周波数分割、時分割又は符号分割に基づく多重化技術等の適切なプロトコル及びインタフェースを使用して、更に他の実施例が可能である。いくつかの実施例は、データ整合性に対する誤り検出訂正（ＥＣＣ）、あるいは暗号化（例えば、ＷＥＰ）及びパスワード保護等のセキュリティ対策等の機能をオプションとして取り入れてもよい。
【０１３５】
本発明の多くの実施例を説明した。しかし、本発明の趣旨の範囲から逸脱せずに種々の変更が行なわれてもよいことが理解されるだろう。例えば、開示される技術のステップが異なる順番で実行される場合、開示されるシステムの構成要素が異なる方法で組み合わされる場合、あるいは構成要素が他の構成要素と置換されるか又は他の構成要素により補足される場合、有利な結果が達成されてもよい。機能及び処理（アルゴリズムを含む）は、ハードウェア、ソフトウェア又はそれらの組み合わせにおいて実行されてもよく、いくつかの実施例は、説明したモジュール又はハードウェアと異なるモジュール又はハードウェアにおいて実行されてもよい。
【図面の簡単な説明】
【０１３６】
【図１】ＮＡＮＤフラッシュメモリダイ及びフラッシュディスクコントローラを含むマルチチップパッケージのアーキテクチャの一例を示す図である。
【図２Ａ】、
【図２Ｂ】メモリセルに格納されたデジタル値とセル電圧とのマッピングを一括して示すグラフである。
【図３Ａ】、
【図３Ｂ】多値セルフラッシュメモリからデータのページを読み出す処理の例を示すフローチャートである。
【図４】フラッシュメモリからデータのページを読み出す処理の一例を示すフローチャートである。
【図５】ビット誤りを含むデータのページを訂正するために誤り訂正動作を実行する処理の一例を示すフローチャートである。
【図６Ａ】、
【図６Ｂ】、
【図６Ｃ】代替値コマンドを実行する動作の例を一括して示すフローチャートである。
【図７Ａ】、
【図７Ｂ】フラッシュメモリページにデータを書き込む処理の例を示すフローチャートである。
【図８Ａ】、
【図８Ｂ】メモリページのセル解像度を調整する処理の例を示すフローチャートである。
【図９】保守処理の一例を示すフローチャートである。
【図１０】フラッシュディスクコントローラにおいて論理アドレス指定を行なう処理の一例を示すフローチャートである。
【図１１】ＮＡＮＤフラッシュメモリダイの外部にアナログデジタル変換器及びチャージポンプを含むシステムの一例を示す図である。
【図１２】ＮＡＮＤフラッシュメモリダイにおいて入力される減結合電力を含むシステムの一例を示す図である。
【図１】
2009537935.tif 000003
【図２Ａ】
2009537935.tif 000004
【図２Ｂ】
2009537935.tif 000005
【図３Ａ】
2009537935.tif 000006
【図３Ｂ】
2009537935.tif 000007
【図４】
2009537935.tif 000008
【図５】
2009537935.tif 000009
【図６Ａ】
2009537935.tif 000010
【図６Ｂ】
2009537935.tif 000011
【図６Ｃ】
2009537935.tif 000012
【図７Ａ】
2009537935.tif 000013
【図７Ｂ】
2009537935.tif 000014
【図８Ａ】
2009537935.tif 000015
【図８Ｂ】
2009537935.tif 000016
【図９】
2009537935.tif 000017
【図１０】
2009537935.tif 000018
【図１１】
2009537935.tif 000019
【図１２】
2009537935.tif 000020
【手続補正書】
【提出日】平成21年1月16日(2009.1.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のメモリセルを含む多値フラッシュメモリ素子を管理する方法であって、
データ値を表す電圧レベルまで電荷を格納する第１のメモリセルから電圧レベルを検出し、
前記第１のメモリセルに対応する解像度レジスタエントリに少なくとも部分的に基づいて、前記電圧レベルにより表される前記データ値を判定し、
前記複数のメモリセルのうちの少なくとも１つに対応する解像度レジスタエントリに少なくとも部分的に基づいて決定される、前記データ値を表す目標電圧になるまで、前記複数のメモリセルのうちの前記少なくとも１つに電荷を印加することを含むことを特徴とする方法。
【請求項２】
前記複数のメモリセルのうちの前記少なくとも１つは前記第１のメモリセルであり、前記第１のメモリセルに電荷を印加する動作は、前記第１のメモリセルにおける電圧低下を調整するために前記第１のメモリセルに追加の電荷を印加することを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記第１のメモリセルに対応する前記解像度レジスタエントリは、第１の可能なデータ値の数に対応する第１の解像度を示し、
前記方法は、
第２の可能なデータ値の数に対応する第２の解像度で書き込むために信号を受信し、
前記複数のメモリセルのうちの前記少なくとも１つに対応する解像度レジスタエントリを前記第２の解像度に更新することを更に含み、前記目標電圧は前記第２の解像度に基づくことを特徴とする請求項１または２に記載の方法。
【請求項４】
前記第１の可能なデータ値の数は前記第２の可能なデータ値の数より多く、前記複数のメモリセルのうちの前記少なくとも１つは前記複数のメモリセルから選択された２つ以上のメモリセルを含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記第１の可能なデータ値の数は前記第２の可能なデータ値の数と等しく、前記複数のメモリセルのうち前記少なくとも１つは前記第１のメモリセルとは異なるメモリセルを含むことを特徴とする請求項３に記載の方法。
【請求項６】
前記第２の可能なデータ値の数は、前記第１の可能なデータ値の数を上回ることを特徴とする請求項３に記載の方法。
【請求項７】
前記第１のメモリセルに対応する前記解像度レジスタエントリは、第１の可能なデータ値の数に対応する第１の解像度を示し、
前記方法は、
第２の可能なデータ値の数に対応する第２の解像度を示すように前記第１のメモリセルに関連付けれられる前記解像度レジスタエントリを更新し、ここで、前記第１の可能なデータ値の数は前記第２の可能なデータ値の数よりも大きく、
第２のデータ値を前記第２の解像度で前記第１のメモリセルに書き込むことを更に含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記第１のメモリセルと関連付けられる前記解像度レジスタエントリの更新及び前記第２の解像度での前記第１のメモリセルへの書き込みは、前記第１のメモリセルを含むメモリセルのページと関連付けられる誤り条件によりトリガされることを特徴とする請求項７に記載の方法。
【請求項９】
保守動作を開始するためにホストデバイスから信号を受信することを更に含み、前記データ値を表す目標電圧になるまで前記複数のメモリセルのうち少なくとも１つに電荷を印加することは前記受信した信号に応答して実行されることを特徴とする請求項１乃至８のいずれか１項に記載の方法。
【請求項１０】
前記ホストデバイスからの前記信号は電源条件を示すことを特徴とする請求項９に記載の方法。
【請求項１１】
前記ホストデバイスからの前記信号は、スケジュールされた保守動作を示すことを特徴とする請求項９に記載の方法。
【請求項１２】
保守動作を開始するためにフラッシュメモリプロセッサから信号を受信することを更に含み、前記データ値を表す目標電圧になるまで前記複数のメモリセルのうち少なくとも１つに電荷を印加することは前記受信した信号に応答して実行されることを特徴とする請求項１乃至８のいずれか１項に記載の方法。
【請求項１３】
前記フラッシュメモリプロセッサからの前記信号は、前記フラッシュメモリプロセッサが保守動作を実行するのに十分な帯域幅を有することを示すことを特徴とする請求項１２に記載の方法。
【請求項１４】
データを格納するためのシステムであって、
各々が指定されたビット数を有するデータ値に対応する電圧レベルになるまで書き込み動作中に電荷を受け取るように構成された複数のメモリセルと、
前記複数のメモリセルと関連付けられ、各々が１つ以上の対応するメモリセルに格納されるビット数を示す複数のエントリを含む解像度レジスタと、
ホストデバイスに対する電源条件を示す信号を前記ホストデバイスから受信するように構成されるホストインタフェースと、
前記複数のメモリセルにデータ値を書き換え、所定の電源条件を示す信号に応答して、第１のビット数から第２のビット数を示すように前記解像度レジスタを調整するように構成されるプロセッサとを備えることを特徴とするシステム。
【請求項１５】
データにアクセスするために前記ホストデバイスから受信される論理アドレスを物理アドレスに変換するための論理アドレス指定ソフトウェアコードを更に備えることを特徴とする請求項１４に記載のシステム。
【国際調査報告】
2009537935.tif 000021
2009537935.tif 000022
2009537935.tif 000023
2009537935.tif 000024
2009537935.tif 000025