(57)【特許請求の範囲】
【請求項１】
メモリのメモリアレイの個々のメモリパーティションの特定の１つの第１の部分の特定のコンテンツを、前記個々のメモリパーティションの前記特定の１つの第２の部分に書き込む間に、読み出すことを具備してなり、前記読み出すことは、前記個々のメモリパーティションのコンテンツに少なくとも部分的に基づいた誤り訂正符号（ＥＣＣ）に少なくとも部分的に基づいた前記第１の部分の前記特定の部分を決定し、
前記個々のメモリパーティションの前記コンテンツの少なくとも一部分を読み出す読み出しリクエストを受信することに応答して前記ＥＣＣの計算を中止し、
前記個々のメモリパーティションの前記コンテンツの前記少なくとも一部分を読み出すことの後に続いて、前記ＥＣＣを前記計算することを再開する、
ことを含むことを特徴とする方法。
【請求項２】
更に、前記第１の部分の前記特定のコンテンツを前記決定することは、前記個々のメモリパーティションの前記特定の１つの前記第１の部分に対応する前記個々のメモリパーティションの一部分のコンテンツに少なくとも部分的に基づくことを特徴とする請求項１に記載の方法。
【請求項３】
前記個々のメモリパーティションの前記特定の１つの前記第１の部分の前記コンテンツは、前記第１の部分の前記特定のコンテンツを前記決定することに用いられるものではないことを特徴とする請求項２に記載の方法。
【請求項４】
更に、前記第１の部分の前記特定のコンテンツを前記決定することを実行する間に、前記個々のメモリパーティションの前記特定の１つの前記第１の部分に対応する前記個々のメモリパーティションの前記一部分の前記コンテンツを、バスを介して並列に読み出すことを含むことを特徴とする請求項２に記載の方法。
【請求項５】
更に、前記第１の部分の前記特定のコンテンツを前記決定することを実行する間に、前記個々のメモリパーティションの前記特定の１つの前記第１の部分に対応する前記個々のメモリパーティションの前記一部分の前記コンテンツを、バスを介して直列に読み出すことを含むことを特徴とする請求項２に記載の方法。
【請求項６】
前記個々のメモリパーティションの前記特定の１つの前記第２の部分に前記書き込むことは、前記メモリによって開始された内部動作に応答することを特徴とする請求項１に記載の方法。
【請求項７】
前記個々のメモリパーティションの前記特定の１つの前記第１の部分及び前記第２の部分は、少なくとも１つのセンスアンプグループを共有することを特徴とする請求項１に記載の方法。
【請求項８】
メモリアレイに接続する少なくとも１つのインターフェースと、
メモリのメモリアレイの個々のメモリパーティションの特定の１つの第１の部分の特定のコンテンツを、前記個々のメモリパーティションの前記特定の１つの第２の部分に書き込む間に、読み出す電子回路であって、前記読み出すことは、前記個々のメモリパーティションのコンテンツに少なくとも部分的に基づいた誤り訂正符号（ＥＣＣ）に少なくとも部分的に基づいた前記第１の部分の前記特定の部分を決定し、
前記個々のメモリパーティションの前記コンテンツの少なくとも一部分を読み出す読み出しリクエストを受信することに応答して前記ＥＣＣの計算を中止し、
前記個々のメモリパーティションの前記コンテンツの前記少なくとも一部分を読み出すことの後に続いて、前記ＥＣＣを前記計算することを再開する、
ことを含む電子回路と、
を具備することを特徴とするメモリマイクロコントローラ。
【請求項９】
更に、前記第１の部分の前記特定のコンテンツを前記決定することは、前記個々のメモリパーティションの前記特定の１つの前記第１の部分に対応する前記個々のメモリパーティションの一部分のコンテンツに少なくとも部分的に基づくことを特徴とする請求項８に記載のメモリマイクロコントローラ。
【請求項１０】
前記個々のメモリパーティションの前記特定の１つの前記第１の部分の前記コンテンツは、前記第１の部分の前記特定のコンテンツを前記決定することに用いられるものではないことを特徴とする請求項９に記載のメモリマイクロコントローラ。 
【請求項１１】
更に、前記第１の部分の前記特定のコンテンツを前記決定することを実行する間に、前記個々のメモリパーティションの前記特定の１つの前記第１の部分に対応する前記個々のメモリパーティションの前記一部分の前記コンテンツを、バスを介して並列に読み出す回路を備えることを特徴とする請求項９に記載のメモリマイクロコントローラ。
【請求項１２】
更に、前記第１の部分の前記特定のコンテンツを前記決定することを実行する間に、前記個々のメモリパーティションの前記特定の１つの前記第１の部分に対応する前記個々のメモリパーティションの前記一部分の前記コンテンツを、バスを介して直列に読み出す回路を備えることを特徴とする請求項９に記載のメモリマイクロコントローラ。
【請求項１３】
前記個々のメモリパーティションの前記特定の１つの前記第２の部分に前記書き込むことは、前記メモリによって開始された内部動作に応答することを特徴とする請求項８に記載のメモリマイクロコントローラ。
【請求項１４】
メモリを備えるメモリデバイスであって、
メモリのメモリアレイの個々のメモリパーティションの特定の１つの第１の部分の特定のコンテンツを、前記個々のメモリパーティションの前記特定の１つの第２の部分に書き込む間に、読み出し、前記読み出すことは、前記個々のメモリパーティションのコンテンツに少なくとも部分的に基づいた誤り訂正符号（ＥＣＣ）に少なくとも部分的に基づいた前記第１の部分の前記特定の部分を決定し、
前記個々のメモリパーティションの前記コンテンツの少なくとも一部分を読み出す読み出しリクエストを受信することに応答して前記ＥＣＣの計算を中止し、
前記個々のメモリパーティションの前記コンテンツの前記少なくとも一部分を読み出すことの後に続いて、前記ＥＣＣを前記計算することを再開する、
ことを含むメモリマイクロコントローラを更に備えるメモリデバイスと、
１つ又は複数のアプリケーションをホストするとともに、前記メモリアレイにアクセスを提供する前記メモリマイクロコントローラに対して読み出しコマンドを開始するプロセッサと、
を具備することを特徴とするシステム。
【請求項１５】
更に、前記第１の部分の前記特定のコンテンツを前記決定することは、前記個々のメモリパーティションの前記特定の１つの前記第１の部分に対応する前記個々のメモリパーティションの一部分のコンテンツに少なくとも部分的に基づくことを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記個々のメモリパーティションの前記特定の１つの前記第１の部分の前記コンテンツは、前記第１の部分の前記特定のコンテンツを前記決定することに用いられるものではないことを特徴とする請求項１５に記載のシステム。
【請求項１７】
更に、前記第１の部分の前記特定のコンテンツを前記決定することを実行する間に、前記個々のメモリパーティションの前記特定の１つの前記第１の部分に対応する前記個々のメモリパーティションの前記一部分の前記コンテンツを、バスを介して並列に読み出す回路を備えることを特徴とする請求項１５に記載のシステム。
【請求項１８】
更に、前記第１の部分の前記特定のコンテンツを前記決定することを実行する間に、前記個々のメモリパーティションの前記特定の１つの前記第１の部分に対応する前記個々のメモリパーティションの前記一部分の前記コンテンツを、バスを介して直列に読み出す回路を備えることを特徴とする請求項１５に記載のシステム。
【請求項１９】
前記個々のメモリパーティションの前記特定の１つの前記第２の部分に前記書き込むことは、前記メモリによって開始された内部動作に応答することを特徴とする請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
ここに開示される主題は、メモリデバイスの読み出し及び書き込み処理に関する。
【背景技術】
【０００２】
メモリデバイスは、いくつか例を挙げると、コンピュータ、携帯電話、ＰＤＡ、データロガー（ｄａｔａ  ｌｏｇｇｅｒ）、及び、ナビゲーション装置等の多様な電子機器に採用される。このような電子機器の中で、様々な形式の不揮発性メモリデバイスは、いくつか例を挙げると、ＮＡＮＤ又はＮＯＲフラッシュメモリ、ＳＲＡＭ、ＤＲＡＭ、及び、相変化メモリ（ＰＣＭ）等が採用されてもよい。一般に、書き込み処理及びプログラミング処理は、このようなメモリデバイスに情報を記憶するように用いられてもよく、その一方で、読み出し処理が記憶された情報を取り出すように用いられてもよい。
【０００３】
いくつかの形式のメモリデバイスは、セクター、パーティション等のメモリセルグループに区分されたメモリセルアレイを備える。このような場合、このようなグループ内のメモリセルは、例えば、センスアンプ及びロウ／カラムデコーダを含む共通の電子回路を共有してもよい。従って、このようなメモリセルグループの読み出し及び書き込みは両方とも、いくつかの共通の電子回路を伴ってもよい。このような場合、このようなメモリセルグループの一部分に生じる書き込み動作を停止することは、同じメモリセルグループの他の部分に生じる読み出し動作を妨げる可能性がある。このような制約条件は結果として、読み出し動作を遅くするとともにメモリデバイスのパフォーマンス全体を低下させる可能性がある。
【図面の簡単な説明】
【０００４】
非限定的かつ非網羅的な実施形態について、以下に図を参照して記載する。特に明示がない限り、類似の番号は様々な図を通して類似の部分を示す。
【０００５】
【図１】実施形態に係るメモリの一部分の概略図である。
【図２】実施形態に係るメモリの一部分の概略図である。
【図３】実施形態に係るメモリの一部分の概略図である。
【図４】実施形態に係るメモリの一部分の概略図である。
【図５】実施形態に係るメモリの一部分から読み出す処理のフローチャート図である。
【図６】実施形態に係るメモリの誤り訂正符号（ＥＣＣ）パーティションを更新する処理のフローチャート図である。
【図７】コンピュータシステムの実施形態例を説明するための概略図である。
【発明を実施するための形態】
【０００６】
本明細書全体を通して、「一実施形態」又は「実施形態」を参照することは、特別な特色、構造、特徴が、請求項に記載された主題の少なくとも一実施形態に含まれることを意味する。それゆえ、本明細書を通して様々な箇所における「一実施形態において」又は「実施形態」という語句の出現は、必ずしも全てが同一の実施形態を参照しているものではない。更に、特定の特色、構造、又は特徴は、１つ又は複数の実施形態において組み合わされてもよい。
【０００７】
実施形態において、ＮＡＮＤ、ＮＯＲ、又は、ＰＣＭフラッシュ等のメモリデバイスは、パーティションと呼ばれるメモリセルグループに区分されたメモリアレイを含んでもよい。パーティション内のメモリセルは、例えば、センスアンプ及びロウ／カラムデコーダを含む共通の電子回路を共有してもよい。実装において、メモリアレイは、ユーザデータを記憶する複数のパーティションを含むことに加えて、誤り訂正符号（ＥＣＣ）を記憶するＥＣＣパーティションを含んでもよい。このようなＥＣＣは、データの１つ又は複数のビットが壊れる場合に復元されるデータのための十分に余分な情報を含むパリティビットを有する追加データに用いられてもよい。例えば、このようなＥＣＣは、記憶されたデータを読み出す処理中、及び／又は、データのベリファイ・アフター・ライティング（ｖｅｒｉｆｙ−ａｆｔｅｒ−ｗｒｉｔｉｎｇ）処理中に適用されてもよい。ＥＣＣは、パリティビットに追加されたデータのストリングを備えてもよい。ＥＣＣを構成する処理は、少なくとも部分的に、使用されている特定のアプリケーションに基づいてもよい。特定の実装において、ＥＣＣは、少なくとも部分的に、並列な符号化及び復号化技術に基づいてもよい。このような技術は、いくつか例を挙げると、１ビットの誤り訂正バイナリハミング符号、１ビット以上の誤り訂正バイナリボース・チョードリ・オッカンガム（ＢＣＨ）符号、非バイナリのリード・ソロモン符号、又は、コンボルーション符号を伴ってもよい。
【０００８】
実施形態において、ＥＣＣは、メモリアレイの特定のパーティションにおけるリード・ホワイル・ライト（ｒｅａｄ‐ｗｈｉｌｅ‐ｗｒｉｔｅ）方式の動作を実行する技術に用いられてもよい。このような技術において、例えば上に記載したように、誤りを検出及び訂正するために用いられる代わりに、ＥＣＣは、このようなコンテンツが後で同時書き込み動作中に読み出され得るように、メモリアレイの１つ又は複数のパーティションにおけるコンテンツを表す情報を符号化するために用いられてもよい。このようなＥＣＣは、データを記憶するために用いられたメモリアレイの１つ又は複数のパーティションから分離され得るＥＣＣパーティションに、書き込まれるとともに記憶されてもよい。ここで、パーティションにプログラムされ得るか又はパーティションから読み出され得るユーザデータ等のデータを記憶するために用いられたこのようなパーティションは、例えば、ＥＣＣパーティションと区別するために、データパーティションと呼ばれる。特に、ＥＣＣパーティションは、少なくとも部分的に、多数のデータパーティションに記憶されたデータに基づいたＥＣＣを含んでもよい。例えば、データがデータパーティション１〜８に書き込まれる場合、ＥＣＣはデータパーティション１〜８に書き込まれたデータに基づいて計算されてもよい。このように計算されたＥＣＣは、その後、ＥＣＣパーティションに記憶されてもよいとともに、例えば、後でデータパーティション１〜８のうち任意の１つのコンテンツを決定する処理に用いられてもよい。データパーティションのコンテンツを決定するこのような処理は、このようなコンテンツを直接読み出すことの代わりとして実行されてもよい。ここで、用語「直接読み出すこと」とは、センスアンプ及び他の回路を介して１つ又は複数のメモリセルのステートを検知する処理を指す。対照的に、１つ又は複数のメモリセルのステートは、以下に記載するように、メモリセルを検知する処理なしにこのようなステートを推論すること又は決定することによって、「間接的に読み出され」てもよい。データパーティションのブロックのコンテンツを直接読み出すことは、例えば、一時停止（サスペンド）動作がリクエストされ得るため、同じデータパーティションにおける書き込み動作をペンディングする間は許可されなくてもよい。しかしながら、以下に詳細に記載するように、特定の実施形態によって、データパーティションのブロックのコンテンツを間接的に読み出すことは、このようなブロックが、書き込まれていて現在ビジーであるデータパーティションに属する場合でさえ実行されてもよい。一実装において、ブロック又は特定のデータパーティションの他のパーティションのこのようなリード・ホワイル・ライト方式の動作（例えば、間接的な読み出し）を実行する技術は、ブロックのコンテンツ、又は、他のデータパーティション及びＥＣＣパーティションのコンテンツに少なくとも部分的に基づいた他の部分を決定することを含んでもよい。ゆえに、特定のデータパーティションに書き込む動作が、同じデータパーティションから読み出す動作の完了まで一時停止（サスペンド）される必要はないなら、メモリデバイスの性能は改善される。
【０００９】
実施形態において、メモリデバイスのデータパーティションにおいてリード・ホワイル・ライト方式の動作を同時に実行する技術は、メモリの個々のデータパーティションのコンテンツに少なくとも部分的に基づいてＥＣＣを計算することを含んでもよい。このようなＥＣＣは、例えば、ＥＣＣパーティションに保持されてもよい。このようなＥＣＣは、個々のデータパーティションの特定の部分又はブロックに対応してもよい。例えば、ブロック２に対するＥＣＣは、個々のデータパーティションのブロック２のコンテンツを用いて計算されたＥＣＣを備えてもよい。ブロック３に対する他のＥＣＣは、個々のデータパーティションのブロック３のコンテンツ等を用いて計算されたＥＣＣを備えもよい。ＥＣＣのこのような値（例えば、ブロック２に対するＥＣＣ、ブロック３に対するＥＣＣ等）は、ＥＣＣパーティションに記憶されてもよい。このようなＥＣＣを用いて、例えば、特定のデータパーティションの１つのブロックのコンテンツは、以下に説明するように、特定のデータパーティション以外のデータパーティションの対応する複数のブロックのコンテンツ及び前記１つのブロックに対応するＥＣＣに少なくとも部分的に基づいて間接的に読み出されてもよい。一実装において、このような特定のデータパーティション以外のデータパーティションのコンテンツは、特定のデータパーティションのコンテンツを間接的に読み出す処理において、配線又はバスを介してシリアルに又は互いに並列に読み出されてもよい。
【００１０】
上で言及したように、書き込み動作は、データパーティションの直接読み出し処理が同じデータパーティション内で生じることを防止してもよい。このような書き込み動作また、任意の数の内部のメモリ処理中に、メモリデバイスに組み込まれる（内蔵される）か又はメモリデバイスに積層されるメモリマイクロコントローラによって開始されてもよい。例えば、メモリマイクロコントローラは、ウェアレベリング、ガーベジコレクション、不良ブロック管理、及び／又は、リフレッシュ処理を実行するメモリアレイの１つ又は複数のパーティションにおいて書き込み動作を開始してもよい。このような処理は、例えば、アプリケーションレベルでプロセッサ及び／又はユーザに可視可能ではないバックグランド動作を含んでもよい。ここに開示される実施形態は、このような内部のメモリ処理を一時停止する必要なく生じるこのような書き込み動作を許可してもよい。
【００１１】
一実施形態において、ＥＣＣは、メモリアレイの１つ又は複数のデータパーティションに書き込まれているデータに応答して、計算されてもよく、及び／又は、更新されてもよい。上で言及したように、ＥＣＣは、少なくとも部分的に、このようなデータに基づいてもよい。特に、ＥＣＣを計算する処理は、データパーティションのコンテンツを直接読み出すことと、ＥＣＣ計算のこのようなコンテンツを用いることとを含んでもよい。実装において、（例えば、プロセッサ又はメモリマイクロコントローラによって開始された）入力読み出しリクエストは、ＥＣＣ計算に伴われた読み出し動作と衝突してもよい。従って、ある場合では、個々のデータパーティションがＥＣＣ計算でビジーであるとき、このような入力読み出しリクエストは拒否されてもよい。しかしながら、他の場合では、ＥＣＣ計算を伴う１つ又は複数の処理は、入力読み出しリクエストが拒否される必要が無いように一時停止されてもよい。入力読み出しリクエストを実行した後、ＥＣＣ計算を伴う１つ又は複数の処理が再開されてもよいが、請求項の主題はそのように限定されるものではない。
【００１２】
実施形態では、メモリアレイのデータパーティションにおいてリード・ホワイル・ライトを行う技術は、ＥＣＣを記憶するＥＣＣパーティションを備えるメモリデバイス、メモリアレイの個々のデータパーティションのコンテンツに少なくとも部分的に基づいてＥＣＣを計算するメモリマイクロコントローラにおいて実行されてもよい。このようなメモリマイクロコントローラは、特定のデータパーティションの第２の部分に書き込む間に、同じデータパーティションの第１の部分のコンテンツを読み出す読み出しコマンドを開始してもよい。読み出し部分は、書き込み部分と同じであってもよいが、書き込み部分が終了するまでは、古いコンテンツのみが読み出されてもよい。第１の部分のコンテンツは、ＥＣＣパーティションに記憶されたＥＣＣに少なくとも部分的に基づいて決定されてもよい（例えば、間接的に読み出されてもよい）。第１の部分のコンテンツはまた、他のデータパーティションのコンテンツに少なくとも部分的に基づいて決定されてもよい。ゆえに、データパーティションの第１の部分のコンテンツは、直接読み出される必要はないが、ＥＣ及び他のデータパーティションのコンテンツを用いて間接的に読み出されてもよい。実装において、データパーティションの第１の部分及び第２の部分は、例えば、センスアンプの少なくとも１つのグループを共有してもよいが、請求項の主題はそのように限定されるものではない。
【００１３】
図１は、実施形態に係るメモリの一部分１００の概略図である。例えば、このようなメモリは、メモリセルのデータパーティションに構成され得る、ＮＡＮＤ、ＮＯＲ、又は、ＰＣＭフラッシュメモリを備えてもよい。以下の記載において、このようなメモリ一部分は、８つのデータパーティションを備えるように記載されてもよい。このような特定数のデータパーティションは、単に便宜上、かつ、説明及び理解を簡単するために記載される。しかしながら、ここに記載された実施形態に伴うデータパーティションの数は、何れの特定の数にも限定されるものではなく、請求項の主題はこの点に限定されるものではないことが理解されるべきである。図１の記載に続いて、メモリの部分１００は、データパーティション１１０の数（例えば、８）を含んでもよい。一実装において、このようなデータパーティションは、例えば、メモリセルアレイ１１６、ロウデコーダ１１３、カラムデコーダ１３６、（例えば、書き込まれるべきメモリセルを決定する書き込み動作中に用いた）プログラムロード１３３、１つ又は複数のセンスアンプ１３０、及び、関連するデータパーティションの読み出し／書き込み動作に伴われた他の回路１２０を備えてもよい。
【００１４】
１つのデータパーティションから直接読み出す読み出し動作は、異なるデータパーティションに書き込む書き込み動作と同時に生じてもよい。このような場合、多くの理由の中で、このようなデータパーティションは、例えば、それら独自の読み出し回路（例えば、センスアンプ）、及び／又は、ロウ及びカラムデコーダ回路を含んでもよいため、競合又は衝突が生じる必要はない。特定の実施形態に関する限り、データパーティション１から直接読み出す読み出し動作１４０は、データパーティション６に書き込む書き込み動作１６０と同時に生じてもよい。読み出し動作１４０は、例えば、センスアンプ１３０を介してデータパーティション１の読み出しメモリセルのステートを検知するとともに、出力バッファ１５０にそのステートを表すデータを書き込む処理１４５を含んでもよい。
【００１５】
図２は、他の実施形態に係るメモリの一部分１００の概略図である。上に言及したように、１つのデータから直接読み出す読み出し動作は、異なるデータパーティションに書き込む書き込み動作と同時に生じてもよい。しかしながら、これがデータパーティション１７０に生じていると示された場合において、衝突が生じるかもしれない。特に、データパーティション６の１つのブロックから直接読み出す読み出し動作２４０は、データパーティション６の他のブロックに書き込む書き込み動作２６０と同時に生じることが可能ではなくてもよい。一実装において、例えば、読み出し動作２４０を実行するコマンドを（例えば、外部プロセッサから、又は、内部のメモリマイクロコントローラの一部から）受信した上で、書き込み動作２６０は、読み出し動作２４０が完了するまで一時停止されてもよい。他の実装において、読み出し動作２４０を実行するコマンドは、書き込み動作２６０が完了するまで、拒否されてもよく、及び／又は、遅延されてもよい。どちらかの実装では、読み出し動作２４０は、例えば、センスアンプ１３０を介してパーティション６の読み出しメモリセルのステートを検知するとともに、出力バッファ２５０にステートを表すデータを書き込む処理２４５を含んでもよい。
【００１６】
図３は、実施形態に係るメモリの一部分３００の概略図である。上記の部分１００を備えるメモリと同様に、このようなメモリは、メモリセルのパーティションに構成され得る、ＮＡＮＤ、ＮＯＲ、又は、ＰＣＭフラッシュメモリを備えてもよい。しかしながら、メモリの部分３００は、図１及び図２における上記の８つのデータパーティションに加えてＥＣＣパーティション３１０を備えてもよい。（更に、請求項の主題は、何れの特定の数のデータパーティションにも限定されるものではない。）一実装において、このようなＥＣＣパーティション３１０は、例えば、メモリセルアレイ３１６、ロウデコーダ３１３、カラムデコーダ３３６、プログラムロード３３３、１つ又は複数のセンスアンプ３３０、及び、ＥＣＣパーティションの読み出し／書き込み動作に伴われる他の回路３２０を備えてもよい。データパーティション０〜７のメモリセルアレイ２１６の大きさ（例えば、メモリセルの数）は互いに実質的に等しくてもよいが、ＥＣＣパーティション３１０のメモリセルアレイ３１６の大きさは異なってもよい。例えば、メモリセルアレイ３１６は、データパーティション０のメモリセルアレイ２１６又はデータパーティション６のメモリセルアレイ３７０よりも実質的に大きくてもよい。メモリセルアレイ３１６の特定の大きさは、メモリセルアレイ３１６に記憶されるべきＥＣＣ、データパーティションの数及び大きさ、データパーティションのブロック又はページの大きさ等を計算するために用いられるＥＣＣ技術の特定の詳細に少なくとも部分的に基づいてもよい。
【００１７】
上記のように、１つのデータパーティションから直接読み出す読み出し動作は、競合又は衝突が生じる必要が無いので、異なるデータパーティションに書き込む書き込み動作と同時に生じてもよい。そこで、特定の実施例のために、データパーティション２のブロックから読み出す読み出し動作３４４は、データパーティション６のブロックに書き込む書き込み動作３６０と同時に生じてもよい。しかしながら、データパーティション６のブロックから直接読み出す読み出し動作３４０は、例えば、同じブロック又は同じデータパーティション６の他のブロックに書き込む書き込み動作３６０と同時に生じることが可能ではなくてもよい。それにも拘らず、ここに記載される実施形態は、データパーティションの一部分のコンテンツを、同じデータパーティションの他の部分がプログラムされている間に直接読み出す技術を含む。このような技術は、ＥＣＣパーティション３１０に記憶されるＥＣＣを利用してもよい。ゆえに、例えば、書き込み動作３６０が、データパーティション６の第１のブロックに生じている間に、読み出し動作３４０によって読み出されるべきデータパーティション６の第２のブロックのコンテンツは、第２のブロックから直接読み出すことによって決定されてもよい。第１及び第２のブロックは同じであってもよいが、書き込み動作が終了するまでは古いコンテンツのみが読み出されてもよい。代わりに、このようなコンテンツは、以下に詳細に説明するように、直接読み出されてもよいとともに、ＥＣＣパーティション、及び、データパーティション０〜５及び７（例えば、データパーティション６以外の全てのデータパーティション）のブロックに対応するコンテンツに基づいて決定されてもよい。実装において、このようなＥＣＣは、データパーティション６の第２のブロック、及び／又は、任意の他のデータパーティションがプログラムされた最も近い時間中に計算されていてもよい。このようなＥＣＣは、この最も近い時間中にプログラムされたデータに少なくとも部分的に基づいて計算されていてもよい。このようなＥＣＣ計算の詳細については、これから記載する。
【００１８】
実施形態において、データパーティションは、ブロックが、ビット、バイト、ワード、ワードグループ等を含み得る多数のブロックを備えてもよい。例えば、１Ｇビットのメモリデバイスは、このようなデータパーティションが６４ブロックを備え得る８つのデータパーティションを含んでもよい。ブロックは、２５６ｋバイトの大きさを有してもよく、センスアンプグループによって並列に読み出され得るデータの１６ワード又は３２バイトのページに構成されてもよいが、請求項の主題はこの点に限定されるものではない。表記法を確立するために、特定のパーティション内の特定のブロックのコンテンツを表現する用語は、ＰｘＢｙと書き込まれてもよく、ここで、ｘはパーティション番号であり、ｙはパーティション番号ｘ内のブロックである。例えば、パーティション０のブロック２３のコンテンツは、Ｐ０Ｂ２３と書き込まれてもよく、データパーティション４のブロック３６のコンテンツは、Ｐ４Ｂ３６と書き込まれてもよい等である。従って、このような表記を用いて、データパーティション０〜７のブロックのＥＣＣは、以下のように、ＥＣＣの計算に用いられたデータパーティション０〜７のブロックのコンテンツの関数として書き込まれてもよい。
0005464528.tif 000002
等である。このような関数ｆは、任意の数の動作及び／又はアルゴリズムを含んでもよい。例えば、一実装において、このような関数は、データパーティション０〜７のブロックのコンテンツの連結を伴ってもよい。他の実装において、このような関数は、ブール演算の組み合わせを伴ってもよい。このような関数の詳細は、１つの特定の状況から他の状況に変化してもよいが、請求項の主題はこの点に限定されるものではない。
【００１９】
図３に戻ると、既に説明したように、データパーティション６のブロックから直接読み出す読み出し動作３４０は、例えば、同じデータパーティション６のブロックに書き込む書き込み動作３６０を同時に生じさせることが可能でなくてもよい。特定の実施例として、上で導入されたブロックに関してこのような場合を記載すると、データパーティション６のブロック２を直接読み出す読み出し動作３４０は、同じデータパーティション６のブロック０に書き込む書き込み動作３６０を同時に生じさせることが可能でなくてもよい。しかしながら、データパーティション６のブロック０をプログラムしている間に、読み出し動作３４０によって読み出されるべきデータパーティション６のブロック２のコンテンツは、データパーティション６のブロック２から直接読み出されることによって決定される必要はない。その代わりに、このようなコンテンツは、ブロック２ＥＣＣ３４２のコンテンツ及びデータパーティション０〜５及び７のブロック２のコンテンツに基づいて間接的に読み出されてもよい。従って、データパーティション６のブロック２のコンテンツは、以下のように、ＥＣＣとブロック２のためのＥＣＣの計算に用いられたデータパーティション０〜５及び７のブロックのコンテンツとの関数として書き込まれてもよい。
0005464528.tif 000003
このような関数ｇは、任意の数の動作及び／又はアルゴリズムを含んでもよい。例えば、一実装において、このような関数ｇの少なくとも一部分は、上記のｆの逆関数（ｉｎｖｅｒｓｅ  ｆｕｎｃｔｉｏｎ）を含んでもよい。上の表現は、データパーティション６のブロック２のデータが、ブロック２ＥＣＣ３４２及び他のデータパーティションのブロック２のデータから推定又は決定されてもよいことを示唆する。このことが正しいのは、ブロック２ＥＣＣ３４２が、データパーティション６のブロック２のデータ及び他のデータパーティションのブロック２のデータに少なくとも部分的に基づいて予め計算されたからである。ゆえに、データパーティション６のブロック２のデータを直接読み出す読み出し動作３４０を実行するために、このようなデータは代わりに、ブロック２ＥＣＣ３４２及び他のデータパーティションのブロック２のデータを用いて間接的に読み出されてもよい。従って、データパーティション０〜５及び７のブロック２のデータを直接読み出す処理３４５、及び、ＥＣＣパーティション３１０のブロック２ＥＣＣ３４２のデータを直接読み出す処理を含んでもよい。このような読み出しデータは、例えば、メモリマイクロコントローラの一部分を含み得る計算ブロック３５０に提供されてもよい。計算ブロック３５０は、ブロック２ＥＣＣ３４２及び他のデータパーティションのブロック２のデータを用いてデータパーティション６のブロック２のデータを間接的に読み出す１つ又は複数の動作を実行してもよい。計算ブロック３５０は、このようなデータが、例えば、読み出し動作３４０に起因する読み出しデータとしてプロセッサに利用可能であり得る出力バッファ３５５に、データパーティション６のブロック２のデータを続いて提供してもよい。
【００２０】
図４は、実施形態に係る、ＥＣＣを計算する処理中のメモリの一部分３００の概略図である。このような処理は、例えば、１つ又は複数のデータパーティションにデータを書き込む１つ又は複数の動作に続いて又は動作中に、メモリマイクロコントローラによって開始されてもよい。上で議論したように、ＥＣＣは、データパーティション０〜７のブロックに対応するこのようなデータに少なくとも部分的に基づいて計算されてもよい。例えば、ブロック２ＥＣＣは、データパーティション０〜７のブロック２のデータに少なくとも部分的に基づいて計算されてもよい。従って、ＥＣＣを計算する処理は、データパーティション０〜７のブロック２のデータを直接読み出すとともに、ＥＣＣ計算ブロック４５０に読み出しデータを提供する処理４４５を含んでもよい。一実装において、ＥＣＣ計算ブロック４５０は、メモリマイクロコントローラの一部分を含んでもよい。ブロック２のためにＥＣＣを計算した後、計算ブロック４５０は、計算されたＥＣＣをＥＣＣパーティション３１０に書き込む処理４４６において、ＥＣＣを提供してもよい。次に、後続のブロック（例えば、ブロック３、ブロック４等）のためにＥＣＣを計算する処理は、個々のブロックのために上に記載した処理を用いて実行されてもよい。勿論、ＥＣＣを計算するこのような詳細は単に例示であって、請求項の主題はそのように限定されるものではない。
【００２１】
図５は、実施形態に係る、メモリアレイのデータパーティションから間接的に読み出す処理５００のフローチャート図である。このような処理は、例えば、上記のように、部分３００を含むメモリデバイスによって実行されてもよい。特に、四角形５１０におけるように、このような処理は、メモリアレイのデータパーティションの特定のブロックから読み出すリクエストを、書き込み動作が同じデータパーティションに生じている間に、受信することに応答して実行されてもよい。このようなリクエストは、例えば、ウェアレベリング、ガーベジコレクション、不良ブロック管理、及び／又は、リフレッシュ処理を実行するために、アプリケーションを実行するプロセッサ、及び／又は、メモリアレイの１つ又は複数のデータパーティションにおいて書き込み動作を実行するメモリマイクロコントローラによって開始されてもよい。上で説明したように、データパーティションの特定のブロックから直接読み出す読み出し動作は、同じデータパーティションの他のブロックに書き込む書き込み動作と同時に生じることができなくてもよい。ゆえに、データパーティションの特定のブロックから直接読み出す代わりに、特定のブロックのコンテンツは、他のデータパーティション対応するブロックのコンテンツ及び対応するブロックのＥＣＣを用いて間接的に読み出されてもよい。従って、四角形５２０及び５３０におけるように、他のデータパーティションの対応するブロックのコンテンツ及びＥＣＣパーティションからの対応するブロックのＥＣＣのコンテンツは、直接読み出されてもよく、かつ、特定のブロックのコンテンツを間接的に読み出すために用いられてもよい。
【００２２】
図６は、実施形態に係る、メモリのＥＣＣパーティションを更新する処理６００のフローチャート図である。このような処理は、例えば、上記のように、部分３００を含むメモリデバイスのメモリマイクロコントローラによって実行されてもよい。特に、四角形６１０におけるように、このような処理は、メモリアレイの１つ又は複数のデータパーティションに書き込むリクエストを受信することに応答して実行されてもよい。例えば、新しいデータがメモリアレイのこのようなデータパーティションに書き込まれる場合、新しいデータに少なくとも部分的に基づく更新ＥＣＣが計算されてもよい。このような更新ＥＣＣは、例えば、図３に示したようなＥＣＣパーティション３１０等のＥＣＣパーティションに記憶された古いＥＣＣを置換してもよい。ＥＣＣは、データパーティションに記憶された古いデータと同様にメモリアレイのデータパーティションに書き込まれた新しいデータを用い得る、任意の数のプロセッサ又はアルゴリズムを用いて計算されてもよい。実装において、特定のＥＣＣは、メモリアレイのデータパーティションにわたって対応するブロックに少なくとも部分的に基づいて計算されてもよい。例えば、個々のデータが６４ブロックを含む場合、ＥＣＣパーティション３１０は、ブロックに対応するＥＣＣの６４個の値を記憶してもよい。勿論、このような数のデータパーティション及びＥＣＣ値は単に例示であって、請求項の主題はそのように限定されるものではない。四角形６２０において、データパーティションにわたって対応するブロックのデータは直接読み出されてもよい。四角形６３０において、ＥＣＣはこのような読み出しデータを用いて計算されてもよい。
【００２３】
特定の実装において、処理６００の少なくとも一部分は、入力読み出しコマンドのために実行されるべき読み出しを許可するために一時停止されてもよい。処理６００のこのような部分はその後、このような読み出しが完了した後に再開されてもよい。ＥＣＣを更新する処理のこのような一時停止は、（例えば、プロセッサによって開始された）読み出しコマンドが遅延される必要が無いので、結果としてメモリデバイスの読み出し実行を改良し得る。ゆえに、ひし形６４０において、決定は、読み出しコマンドが受信されているか否かについてなされてもよい。もしそうでない場合、その後、処理６００は、ＥＣＣを計算する処理が完了される四角形６４５に進行してもよい。四角形６８０において完了後、計算されたＥＣＣは、メモリデバイスのＥＣＣパーティションに書き込まれてもよい。他方で、読み出しコマンドがひし形６４０で受信される場合、処理６００はＥＣＣの計算を一時停止する四角形６５０に進行してもよい。このような一時停止の間に、入力読み出しコマンドから起因する読み出し処理の進行をモニタすることは、ひし形６６０におけるように、このような読み出し処理が完了しているか否かを決定してもよい。読み出し処理が完了していない場合、処理６００は、読み出し処理の進行をモニタし続けるために、ひし形６６０にループバックしてもよい。他方で、読み出し処理が完了している場合、処理６００は、ＥＣＣを計算する処理が完了するブロック６７０に進行してもよい。四角形６８０において完了後、計算されたＥＣＣは、メモリデバイスのＥＣＣパーティションに書き込まれてもよい。勿論、処理６００のこのような詳細は単に例示であって、請求項の主題はそのように限定されるものではない。
【００２４】
図７は、メモリデバイス７１０を含むコンピュータシステム７００の実施形態例を概略的に示す図である。このようなコンピュータデバイスは、例えば、アプリケーション及び／又は他のコードを実行するために、１つ又は複数のプロセッサを備えてもよい。例えば、メモリデバイス７１０は、図２に示したような多数のデータパーティションを備えてもよい。コンピュータデバイス７０４は、メモリデバイス７１０を管理するように構成され得る任意のデバイス、アプリケーション、又は機械を表し得る。メモリデバイス７１０は、メモリマイクロコントローラ７１５及びメモリ７２２を含んでもよい。例示であって制限されるものではないが、コンピュータデバイス７０４は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ワークステーション、サーバデバイス、又はこれらと類似するような１つ又は複数のコンピュータデバイス及び／又はプラットフォームと、例えば、携帯情報端末、モバイル通信デバイス、又はこれらと類似するような１つ又は複数のパーソナルコンピュータデバイス又は通信デバイス及び／又は装置と、例えば、データベース又はデータ記憶サービスプロバイダ／システムのようなコンピュータシステム及び／又は関連するサービスプロバイダ機能と、及び／又はこれらの任意の組み合わせとを含んでもよい。
【００２５】
システム７００に示した様々なデバイスの全部又は一部、及び本明細書に更に記載されたような処理及び方法は、ハードウェア、ファームウェア、ソフトウェア、又はこれらの任意の組み合わせを用いるかあるいは含むように実装されてもよいことが認識される。ゆえに、例示であって限定されるものではないが、コンピュータデバイス７０４は、バス７４０及びホスト又はメモリマイクロコントローラ７１５を通してメモリ７２２に動作的に連結される少なくとも１つの処理ユニット７２０を含んでもよい。処理ユニット７２０は、データコンピューティング手順又はデータコンピューティング処理の少なくとも一部を実行するように構成可能な１つ又は複数の回路を表す。例示であって限定されるものではないが、処理ユニット７２０は、１つ又は複数のプロセッサ、コントローラ、マイクロプロセッサ、マイクロコントローラ、アプリケーション専用集積回路、デジタル信号プロセッサ、プログラマブル論理デバイス、フィールド・プログラマブル・ゲートアレイ、及びこれらと類似するもの、又はこれらの任意の組み合わせを含んでもよい。処理ユニット７２０は、メモリマイクロコントローラ７１５と通信するように構成されたオペレーティングシステムを含んでもよい。このようなオペレーティングシステムは、例えば、バス７４０上でメモリマイクロコントローラ７１５に送信されるコマンドを生成してもよい。このようなコマンドは、例えば、読み出しコマンド及び／又は書き込みコマンドを含んでもよい。読み出しコマンドに応答して、例えば、メモリマイクロコントローラ７１５は、リード・ホワイル・ライトを実行するために、上記の処理５００を実行してもよい。
【００２６】
メモリ７２２は、任意のデータストレージ機構を表す。メモリ７２２は、例えば、一次メモリ７２４及び／又は二次メモリ７２６を含んでもよい。一次メモリ７２４は、例えば、ランダムアクセスメモリ、リードオンリメモリ等を含んでもよい。この例示は処理ユニット７２０から離れて説明したが、一次メモリ７２４の全部又は一部は処理ユニット７２０内に備えられていてもよく、あるいは処理ユニット４２０と同じ場所に設置されているか、又は処理ユニット７２０に連結されてもよいと理解されるべきである。
【００２７】
二次メモリ７２６は、例えば、一次メモリと同一形式のメモリもしくは類似形式のメモリ、及び／又は、例えば、ディスクドライブ、光学ディスクドライブ、テープドライブ、固体状態メモリドライブ等の１つ又は複数のデータ記憶装置もしくはシステムを含んでもよい。所定の実装において、二次メモリ７２６は動作可能的にコンピュータ可読媒体７２８から受信可能であってもよく、もしくは、コンピュータ可読媒体７２８に連結するように構成可能であってもよい。コンピュータ可読媒体７２８は、例えば、システム７００における１つ又は複数のデバイスに対するデータ、コード、及び／又は命令を送ることができ、かつ／又は、こうしたデータ、コード、及び／又は命令をアクセス可能にすることができる任意の媒体を含んでもよい。コンピュータデバイス７０４は、例えば、入力／出力７３２を含んでもよい。
【００２８】
特定の実施形態において、コンピュータシステム７００は、メモリ７２４の個々のメモリアレイパーティションのコンテンツに少なくとも部分的に基づいてＥＣＣを計算するために、メモリアレイ７２４及びメモリマイクロコントローラ７１５を備えるメモリデバイスを含んでもよい。個々のメモリアレイパーティションの特定の１つの第２の部分に書き込む間に、個々のメモリアレイパーティションの特定の１つを第１の部分の特定のコンテンツを読み出そうとすることに応答して、メモリマイクロコントローラ７１５は、ＥＣＣに少なくとも部分的に基づいて第１の部分の特定のコンテンツを決定してもよい。コンピュータシステム７００はまた、１つ又は複数のアプリケーションをホストするとともに、例えば、メモリアレイ７２４のメモリセルにアクセスを提供するメモリマイクロコントローラ７１５に向けて読み出しコマンドを開始するプロセッサを含んでもよい。
【００２９】
入力／出力７３２は、人及び／又は機械の入力を受入れるように構成可能な、又は導入するように構成可能な１つ又は複数のデバイス又は機能、及び／又は、人及び／又は機械の出力を送出するように構成可能な、又は提供するように構成可能な１つ又は複数のデバイス又は機能を表す。例示であって限定されるものではないが、入力／出力デバイス７３２は、動作可能に構成されたディスプレイ、スピーカー、キーボード、マウス、トラックボール、タッチスクリーン、データポート等を含んでもよい。
【００３０】
本明細書に使用されたように、用語「及び」、「及び／又は」、及び「又は」とは、少なくとも一部において、そのような用語が使用される文脈に応じてまた期待される様々な意味を含み得る。一般に、Ａ、Ｂ、又はＣのように、リストに関連するように使用された場合の「及び／又は」並びに「又は」とは、ここで排他的な意味に使用されたＡ、Ｂ、又はＣと同様に、ここで包括的な意味に使用されたＡ、Ｂ、及びＣを意味するように意図されてもよい。本明細書全体を通して、「一実施形態」又は「実施形態」を参照することは、特別な特色、構造、特徴が、請求項に記載された主題の少なくとも一実施形態に含まれることを意味する。それゆえ、本明細書を通して様々な箇所における「一実施形態において」又は「実施形態」という語句の出現は、必ずしも全てが同一の実施形態を参照しているものではない。更に、特定の特色、構造、又は特徴は、１つ又は複数の実施形態において組み合わされてもよい。
【００３１】
現時点で考えられる実施形態例について説明して述べてきたが、請求項の主題から逸脱することなく、他の様々な変更がなされてもよく、均等なものに置換されてもよいと当業者に理解され得るものである。加えて、本明細書に開示された主要概念から逸脱することなく、特定の状況を請求項の主題の教示に適用するように多くの変更がなされてもよい。それゆえ、請求項の主題が開示された特定の実施形態に限定されることはないと示され、そのような請求項の主題はまた、添付の特許請求の範囲に含まれる全ての実施形態及びそれらの均等物を包含するものであると示されている。
【図１】
0005464528.tif 000004
【図２】
0005464528.tif 000005
【図３】
0005464528.tif 000006
【図４】
0005464528.tif 000007
【図５】
0005464528.tif 000008
【図６】
0005464528.tif 000009
【図７】
0005464528.tif 000010