(57)【特許請求の範囲】
【請求項１】
メモリデバイスのコンテンツを読み出すためにバイアス条件を印加すること、
誤り訂正符号（ＥＣＣ）エンジンを用いることによって前記メモリデバイスの前記読出しコンテンツを表す符号化データを判定すること、及び
第１の論理状態の前記符号化データのビットの数と第２の論理状態の前記符号化データのビットの数との比較に少なくとも部分的に基づいて前記バイアス条件を修正するかどうかを判定すること
を含む、方法。
【請求項２】
前記メモリデバイスの前記読出しコンテンツにおける読出しエラーのカウントが閾値数を上回ることに応答して前記バイアス条件を修正することをさらに含む、請求項１に記載の方法。
【請求項３】
前記バイアス条件を修正した後で、前記修正されたバイアス条件を用いて前記メモリデバイスの前記コンテンツを読み出すこと、
前記メモリデバイスの前記コンテンツの読出しから生じる読出しエラーをカウントすること、及び
前記読出しエラーの数が前記閾値数を上回ることに応答して前記バイアス条件をさらに修正すること
をさらに含む、請求項２に記載の方法。
【請求項４】
ＥＣＣオーバーフローイベントに応答して前記バイアス条件を修正することをさらに含む、請求項１に記載の方法。
【請求項５】
前記バイアス条件が読出しバイアス電圧を含む、請求項１に記載の方法。
【請求項６】
前記バイアス条件が、読出しバイアス電圧を含み、
前記符号化データの論理「０」ビットの数を前記符号化データの論理「１」ビットの数と比較すること、
前記論理「０」ビットの数が前記論理「１」ビットの数を上回ることに応答して前記バイアス条件を増加させること、及び
前記論理「１」ビットの数が前記論理「０」ビットの数を上回ることに応答して前記バイアス条件を減少させること
をさらに含む、請求項１に記載の方法。
【請求項７】
前記メモリデバイスの前記読出しコンテンツにおける読出しエラーのカウントが閾値数以下の数を含むまで前記バイアス条件を反復的に修正することをさらに含む、請求項１に記載の方法。
【請求項８】
前記メモリデバイスが相変化メモリ（ＰＣＭ）を含む、請求項１に記載の方法。
【請求項９】
前記バイアス条件の複数の値を通して順次にステッピングすること、及び
前記メモリデバイスの前記読出しコンテンツにおける読出しエラーのカウントが閾値数以下の数を含むかどうかに少なくとも部分的に基づいて前記順次のステッピングを続けるかどうかを判定すること
をさらに含む、請求項１に記載の方法。
【請求項１０】
メモリデバイスのコンテンツを読み出すためにバイアス条件を印加し、
誤り訂正符号（ＥＣＣ）エンジンを用いることによって前記メモリデバイスの前記読出しコンテンツを表す符号語を判定し、
第１の論理状態の前記符号語のビットの数と第２の論理状態の前記符号語のビットの数との比較に少なくとも部分的に基づいて前記バイアス条件を修正するかどうかを判定する
ように構成されたコントローラを備える装置。
【請求項１１】
前記コントローラが、前記メモリデバイスの前記読出しコンテンツにおける読出しエラーのカウントが閾値数を上回ることに応答して前記バイアス条件を修正するようにさらに構成される、請求項１０に記載の装置。
【請求項１２】
前記コントローラが、
前記バイアス条件を修正した後で、前記修正されたバイアス条件を用いて前記メモリデバイスの前記コンテンツを読み出し、
前記メモリデバイスの前記コンテンツを読み出すことから生じる読出しエラーをカウントし、
前記読出しエラーの数が前記閾値数を上回ることに応答して前記バイアス条件をさらに修正する
ようにさらに構成される、請求項１１に記載の装置。
【請求項１３】
前記バイアス条件が読出しバイアス電圧を含み、前記コントローラが、
前記符号語の論理「０」ビットの数を前記符号語の論理「１」ビットの数と比較し、
前記論理「０」ビットの数が前記論理「１」ビットの数を上回ることに応答して前記バイアス条件を増加させ、
前記論理「１」ビットの数が前記論理「０」ビットの数を上回ることに応答して前記バイアス条件を減少させる
ようにさらに構成される、請求項１０に記載の装置。
【請求項１４】
前記コントローラが、前記メモリデバイスの前記読出しコンテンツにおける読出しエラーのカウントが閾値数以下の数を含むまで前記バイアス条件を反復的に修正するようにさらに構成される、請求項１０に記載の装置。
【請求項１５】
前記メモリデバイスが相変化メモリ（ＰＣＭ）を含む、請求項１０に記載の装置。
【請求項１６】
相変化メモリ（ＰＣＭ）アレイを含むメモリデバイスであって、
前記メモリデバイスのコンテンツを読み出すためにバイアス条件を印加し、
誤り訂正符号（ＥＣＣ）エンジンを用いることによって前記メモリデバイスの前記読出しコンテンツを表す符号語を判定し、
第１の論理状態の前記符号語のビットの数と第２の論理状態の前記符号語のビットの数との比較に少なくとも部分的に基づいて前記バイアス条件を修正するかどうかを判定する
ように構成されたメモリコントローラをさらに備えるメモリデバイスと、
１つ以上のアプリケーションをホストし、前記ＰＣＭアレイの前記コンテンツの読出しを開始するように構成されたプロセッサと
を備える、システム。
【請求項１７】
前記コントローラが、前記メモリデバイスの前記読出しコンテンツにおける読出しエラーのカウントが閾値数を上回ることに応答して前記バイアス条件を修正するようにさらに構成される、請求項１６に記載のシステム。
【請求項１８】
前記コントローラが、
前記バイアス条件を修正した後で、前記修正されたバイアス条件を用いて前記メモリデバイスの前記コンテンツを読み出し、
前記メモリデバイスの前記コンテンツを読み出すことから生じる読出しエラーをカウントし、
前記読出しエラーの数が前記閾値数を上回ることに応答して前記バイアス条件をさらに修正する
ようにさらに構成される、請求項１７に記載のシステム。
【請求項１９】
前記コントローラが、前記メモリデバイスの前記読出しコンテンツにおける読出しエラーのカウントが閾値数以下の数を含むまで前記バイアス条件を反復的に修正するようにさらに構成される、請求項１６に記載のシステム。
【請求項２０】
前記バイアス条件が読出しバイアス電圧を含み、前記コントローラが、
前記符号語の論理「０」ビットの数を前記符号語の論理「１」ビットの数と比較し、
前記論理「０」ビットの数が前記論理「１」ビットの数を上回ることに応答して前記バイアス条件を増加させ、
前記論理「１」ビットの数が前記論理「０」ビットの数を上回ることに応答して前記バイアス条件を減少させる
ようにさらに構成される、請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示される主題は、メモリデバイスに関し、より具体的には、相変化メモリの読出し性能に関する。
【背景技術】
【０００２】
相変化メモリ（ＰＣＭ）は、いくつか例を挙げると、カルコゲニド合金及び／又はゲルマニウム・アンチモン・テルル（ＧＳＴ）などの１つ以上の特定の相変化材料の挙動及び特性に少なくとも部分的に基づいて動作することがある。こうした材料の結晶状態とアモルファス状態とでは異なる電気抵抗を有することがあり、したがって情報が記憶され得る基礎を与える。こうした材料のアモルファスの高抵抗状態は、記憶される第１のバイナリ状態を表すことがあり、こうした材料の結晶の低抵抗状態は、記憶される第２のバイナリ状態を表すことがある。もちろん、こうした記憶される情報のバイナリ表現は単なる例であり、ＰＣＭはまた、例えば相変化材料の種々の度合いの抵抗率によって表される複数のメモリ状態を記憶するのに用いられることがある。
【０００３】
ＰＣＭセルは、メモリセルにバイアス信号を印加することによってアモルファス状態から結晶状態に遷移することがある。例えば、ピーク値及び／又はパルス幅などのバイアス信号の特徴が、結晶状態への遷移を可能にするように選択されることがある。ＰＣＭセルの状態の読出しは、ＰＣＭセルにバイアス電流又は電圧を印加してセルの抵抗率を検出することによって行われることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
時間と共に、ＰＣＭセルの種々のパラメータは、いくつか例を挙げると、ＰＣＭ温度の変化、相変化材料の再結晶化、ドリフト、及び／又はサイクルの結果としてドリフト又は変化することがある。こうした影響はＰＣＭセルの読出しエラーにつながることがある。
【課題を解決するための手段】
【０００５】
限定ではない且つ網羅的ではない実施形態が、他に規定されない限り種々の図面を通して同様の参照符号が同様の部分を指す以下の図面を参照して説明される。
【図面の簡単な説明】
【０００６】
【図１】一実施形態に係るバイアス信号波形の特徴のプロットである。
【図２】一実施形態に係る基準電流値又は電圧値の特徴のプロットである。
【図３】一実施形態に係るメモリアレイのコンテンツを読み出すための読出しプロセスの流れ図である。
【図４】別の実施形態に係るメモリアレイのコンテンツを読み出すための読出しプロセスの流れ図である。
【図５】コンピューティングシステムの例示的な実施形態を示す概略図である。
【発明を実施するための形態】
【０００７】
本明細書の全体を通じての「一実施形態」（「ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ」又は「ａｎ  ｅｍｂｏｄｉｍｅｎｔ」）への言及は、実施形態と組み合わせて説明される特定の特色、構造、又は特徴が、特許請求される主題の少なくとも１つの実施形態に含まれることを意味する。したがって、本明細書の全体を通した種々の場所での「一実施形態では」（「ｉｎ  ｏｎｅ  ｅｍｂｏｄｉｍｅｎｔ」又は「ａｎ  ｅｍｂｏｄｉｍｅｎｔ」）という文言の出現は、必ずしもすべてが同じ実施形態を言及しているわけではない。さらに、特定の特色、構造、又は特徴が１つ以上の実施形態に組み合わされてもよい。
【０００８】
本明細書で説明される実施形態は、相変化メモリ（ＰＣＭ）デバイスに関する読出しバイアス条件を管理することに関係するプロセス及び／又は電子アーキテクチャを含む。以下で詳細に説明するように、こうした読出しバイアス条件は、ＰＣＭセルの状態を判定するためにＰＣＭセルに印加される電圧又は電流を含むことがある。ＰＣＭセルの読出しバイアス条件の管理は、例えば、以下で説明されるように、他の方法では時間と共に生じ得るＰＣＭセルの状態分布のシフトから生じ得る読出しエラーを回避する及び／又はこうした読出しエラーの数を減少させるのに用いられてもよい。メモリセルの状態分布は、例えば、メモリセルによって記憶される状態又は論理レベルに対応する１つ以上の閾値電圧に対応することがある。言い換えれば、こうした状態又は論理レベルは、１つ以上の閾値電圧によって分けられる電圧範囲に対応することがある。例えば、第１の論理レベルは第１の電圧範囲に対応することがあり、第２の論理レベルは第２の電圧範囲に対応することがある。こうした論理レベルは、例えば、第１の論理レベルに関する「０」及び第２の論理レベルに関する「１」などの１ビットデータに対応することがある。
【０００９】
多くの技術のうちの１つの手法を説明するために、ＰＣＭセルに記憶されるこうした論理レベルは、ＰＣＭセルを予めプログラムするのに用いられる同じ１つ以上の基準セル電流に少なくとも部分的に基づいて読み出され及び判定されてもよい。読出しプロセス中のセル電流は、読出しプロセス中のセル電流がＰＣＭセルの抵抗に少なくとも部分的に依存し得るようにＰＣＭセルにわたって読出し電圧（例えば、以下で説明する場合の読出しバイアス条件）を印加することによって生じることがある。したがって、ＰＣＭセルの状態又は論理値、例えば、抵抗レベルは、読出しプロセス中のこうしたセル電流を状態又は論理値を先にプログラミングする間に印加された基準セル電流と比較することによって判定されてもよい。しかしながら、時間と共に、ＰＣＭセルにわたって印加される特定の電圧に関するセル電流は、例えばＰＣＭセルの物理的特性の変化（例えば、抵抗の変化及び／又は温度の変化）に起因してドリフト又は変化することがある。こうした変化は、例えば、ＰＣＭ材料の抵抗率のドリフト、温度の変化、保持などの種々の物理的現象の変化から生じることがある。こうした変化は、メモリセルを読み出す前のタイムスパンの間に生じることがある。一実装では、読出しエラーは、こうした変化の現れであることがある。例えば、読出しエラーは、メモリセルの物理的特性の変化がメモリセルの閾値電圧を上方に又は下方にシフトし続けるのに伴ってより一層多く発生することがある。したがって、一実施形態では、特定のプログラム電流又は電圧でプログラムされたメモリセルを読み出す方法は、メモリセルの物理的特性のこうした変化を補償するために１つ以上の読出しバイアス条件を修正することを含んでもよい。
【００１０】
一実施形態では、上述のようなメモリセルの物理的特性の変化の補償は、以下で詳細に説明される誤り訂正符号（ＥＣＣ）オーバーフローイベントに応答して行われてもよい。こうしたＥＣＣオーバーフローイベントは、ＥＣＣエンジンによって示されることがある。一実装では、こうしたＥＣＣエンジンは、メモリセルを含むメモリデバイスに存在してもよい。例えば、メモリデバイスに存在するメモリコントローラは、ＥＣＣエンジンを含んでもよい。別の実装では、こうしたＥＣＣエンジンは、いくつか例を挙げると、プロセッサ、オペレーティングシステム、及び／又はアプリケーションなどのメモリデバイスの外部に存在してもよい。後者の実装では、ＥＣＣエンジンは、例えばメモリデバイスにおけるメモリコントローラから読出しデータを受信し、メモリコントローラに以下で説明される誤り訂正符号を提供してもよい。
【００１１】
ＥＣＣエンジンは、エラーが見つかる場合に、メモリから読み出されるデータの妥当性（例えば、正確性）を確認する及び／又はこうした読出しデータを訂正するプロセスの一部としてＥＣＣを生成してもよい。例えば、読出しプロセスは、メモリからデータを読み出すこと、読出しデータに少なくとも部分的に基づいてＥＣＣを生成すること、及びもしあるならば読出しエラーを検出するのにＥＣＣを用いることを含んでもよい。読出しエラーが検出される場合、ＥＣＣは、こうした読出しエラーを訂正するのに用いられてもよい。別の例では、書込みプロセスは、データをメモリに書き込むこと、データが正しく書き込まれたことを確認するためにメモリから今書き込んだデータを読み出すこと、読出しデータに少なくとも部分的に基づいてＥＣＣを生成すること、及びもしあるならば書込みエラーを検出するのにＥＣＣを用いることを含んでもよい。書込みエラーが検出される場合、ＥＣＣは、こうした書込みエラーを訂正するのに用いられてもよい。ＥＣＣエンジンは、データ中の特定の数のエラーを訂正する能力を有するように設計されてもよい。データ中の検出されるエラーの数がこうした能力を上回る場合にＥＣＣオーバーフローイベントが発生することがあり、データ中のこうしたエラーは訂正されないことがある。特に、メモリセルを読み出す方法は、ＥＣＣ技術及び／又は読出しエラーの発生に少なくとも部分的に基づいて読出しバイアス条件を修正するプロセスを含んでもよい。詳細には、メモリデバイスのコンテンツは、読出し電圧又は読出し電流などのバイアス条件を用いて読み出されてもよい。メモリデバイスのコンテンツを読み出すことから生じる読出しエラーがカウントされてもよい。読出しバイアス条件は、読出しエラーの数が特定の数を上回る場合に修正されてもよい。一実装では、こうした特定の数は、エラーを訂正するＥＣＣの能力に少なくとも部分的に基づいていてもよい。例えば、比較的質素なＥＣＣ実装は２つのエラーを訂正する能力を有することがあり、一方、比較的頑健なＥＣＣ実装は、４つ以上のエラーを訂正する能力を有することがある。したがって、読出しバイアス条件は、読出しエラーの数がＥＣＣ実装の訂正能力を上回ることを防ぐように修正されてもよい。もちろん、ＥＣＣ実装のこうした数及び詳細は単なる例であり、特許請求される主題はそれに限定されない。
【００１２】
一実装では、ＥＣＣプロセスは、データの１つ以上のビットが破損される場合に、プログラムされる（又は書込み）データに、データが再構築されるのに十分な付加的な情報を含むパリティビットを補うのに用いられてもよい。こうしたＥＣＣプロセスは、プログラムされるデータ、プログラムされるデータのパリティ、ＥＣＣプロセスの詳細などに少なくとも部分的に基づいて符号化データ（例えば、符号語）を生成してもよい。例えば、記憶されたデータを表すこうした符号化データは、記憶されたデータを読み出すプロセス及び／又はデータの書込み後確認（ｖｅｒｉｆｙ−ａｆｔｅｒ−ｗｒｉｔｉｎｇ）プロセス中に適用されてもよい。特定の実装では、符号化データは、パラレルエンコーディング及びデコーディング技術に少なくとも部分的に基づいていてもよい。こうした技術は、いくつか例を挙げると、２ビット誤り訂正バイナリＢＣＨ（Ｂｏｓｅ−Ｃｈａｕｄｈｕｒｉ−Ｈｏｃｑｕｅｎｇｈｅｍ）コード、リードソロモンコード、又は畳み込み符号コードに関係することがある。
【００１３】
一実施形態では、符号化データは、論理１又は論理０の複数のビットを含んでもよい。特定のＥＣＣワードの１の数及び０の数がカウントされてもよい。こうしたカウントから、符号化データが０よりも多くの１又はこの逆を含むかどうかについての判定が下されてもよい。こうした状況は、「ビット・インバランス」と呼ばれることがある。多くのＥＣＣ実装では、ビット・インバランスは、１つ以上のメモリセルの閾値電圧及び／又は抵抗率が、メモリセルがプログラムされた時点からドリフトされていることを示すことがある。例えば、符号化データが０よりも多くの１を含む場合、メモリセルの閾値電圧は、プログラミング中にメモリセルの閾値電圧レベルから上方にドリフトされた可能性がある。このような場合、閾値電圧のこうした上方ドリフトを補償するために、読出し電圧又は読出し電流などの読出しバイアス条件を減少させてもよい。一方、符号化データが１よりも多くの０を含む場合、閾値電圧が、プログラミング中にメモリセルの閾値電圧レベルから下方にドリフトされた可能性がある。このような場合、閾値電圧のこうした下方ドリフトを補償するために、読出し電圧又は読出し電流などの読出しバイアス条件を増加させてもよい。以下に詳しく説明されるように、読出しバイアス電圧又は電流のこうした増加又は減少は、その後の読出しエラーイベントが減少するかどうかを反復的に判定する間に段階的に行われてもよい。もちろん、読出しバイアス条件の補償を説明するこうした詳細は単なる例であり、特許請求される主題はそれに限定されない。
【００１４】
図１は、一実施形態に係るＰＣＭセルをプログラムするのに用いられ得るバイアス信号波形の特徴のプロット１００である。ＰＣＭセルは、比較的高振幅の比較的短い持続時間の電気プログラミングパルス又はバイアス信号１２０を印加することによって相変化材料を溶融することでリセットされることがある。リセット状態において、相変化材料の活性領域は、例えばＰＣＭセルにおけるヒータ要素に隣接して配置されるドーム形状のアモルファス領域を含むことがある。こうしたアモルファス領域を結晶化された相変化材料が取り囲むことがある。このような状態では、ＰＣＭセルは比較的高い電気抵抗を有することがある。その後のプロセスにおいて、ＰＣＭセルは、相変化材料の実質的にすべての領域が結晶となり得るようにドーム形状のアモルファス領域を結晶化することによってセットされることがある。こうしたプロセスは、ＰＣＭセルの相変化材料を結晶化するためにＰＣＭセルに印加される比較的低振幅の比較的長い持続時間のバイアス信号１１０の電圧及び／又は電流をランプダウンすることに関係することがある。このような状態では、ＰＣＭセルは、比較的低い電気抵抗を有することがある。一実装では、特定のバイアス信号１２０が、ＰＣＭセルを特定の抵抗範囲に対応する特定の状態にセットするように選択されてもよい。例えば、バイアス信号１２０の持続時間及び／又は振幅を減少させてもよい。しかしながら、こうした特定の範囲の抵抗は、ＰＣＭセルがプログラムされる時点からＰＣＭセルが読み出される時点にかけて変化又はドリフトすることがある。例えば、ＰＣＭセルは、特に多層用途で用いられるＰＣＭセルなどの材料の結晶化が完了しない場合により高抵抗率の方にドリフトし得るアモルファス材料を含むことがある。ＰＣＭセルは、熱力学的により低いエネルギー状態に関係することがある結晶状態の方に発展し得るアモルファス材料を含むことがある。加えて、ＰＣＭセルの状態を通したサイクルはまた、読出し電流又は閾値の分布に影響することがある。もちろん、ＰＣＭセルのこうした詳細は単なる例であり、特許請求される主題はそれに限定されない。
【００１５】
図２は、一実施形態に係るメモリアレイに関する読出しバイアス電流値又は電圧値の特徴のプロット２００である。詳細には、プロット２００は、メモリアレイの読出しプロセスにおける読出しの繰返し数の関数としての読出しバイアス電流又は電圧のプロットを含む。明瞭にするために、読出しバイアス電流又は電圧は、以下、読出し電圧又は読出しバイアスと呼ばれる。しかしながら、電圧に関係する説明は、当業者には明らかな任意の適正な変化を伴って、電流に関係する説明と置き換えられてもよい。いずれにしても、特許請求される主題はこれに関して限定されない。プロット２１０は、１つ以上のメモリセルに繰返し印加され得る読出し電圧の増加するステップを含む。例えば、読出し電圧２１２は、メモリセルのコンテンツを読み出すためのプロセスの１つの繰返し中に１つ以上のメモリセルに印加されてもよく、一方、読出し電圧２１６は、その後の繰返し中にメモリセルに印加されてもよい。同様に、プロット２２０によって示されるように、読出し電圧２２２は、メモリセルのコンテンツを読み出すためのプロセスの１つの繰返し中に１つ以上のメモリセルに印加されてもよく、一方、読出し電圧２２６は、その後の繰返し中にメモリセルに印加されてもよい。こうした繰返しは、例えば、読み出し、読出しエラー（もしあるならば）をカウントし、及び／又はカウントした読出しエラーの数に少なくとも部分的に基づいて読出し電圧を増加させるか又は読出し電圧を減少させるかを判定するプロセスを含んでもよい。１つの読出し電圧値からその後の読出し電圧値へのステップのサイズ２３０は、１つの実装から別の実装にかけて変化してもよい。例えば、一実装では、ステップのサイズ２３０は、１つの繰返しステップから別の繰返しステップにかけて変化してもよい。別の実装では、ステップのサイズ２３０は、１つの繰返しステップから別の繰返しステップにかけて一定のままであってもよい。例えば、ステップのサイズは、数十から数百ミリボルトの範囲内の電圧を含んでもよい。プロット２００は特定の繰返し数を示すが、こうした繰返しの数は、１つの実装から別の実装にかけて変化してもよい。例えば、こうした繰返しの数は、ステップのサイズ２３０、読出しエラーイベントの数に対するバイアス電圧の増加又は減少の結果、メモリから読み出すのに用いられる特定のアルゴリズムなどに少なくとも部分的に基づいていてもよい。例えば、１つの特定のアルゴリズムは、読出し電圧の値を通してステッピングすることの結果としてエラーイベントが減少する割合を判定することに関係していてもよい。別の特定のアルゴリズムは、結果的に生じる読出しエラーに対する影響に関係なく読出し電圧の値を特定回数だけステップスルーしてもよい。もちろん、任意の数のアルゴリズムが関係してもよく、特許請求される主題はそれに限定されない。
【００１６】
図３は、一実施形態に係るメモリアレイのコンテンツを読み出すための読出しプロセス３００の流れ図である。こうした読出しプロセスは、プロセッサから読出し要求を受信することに応答してメモリコントローラによって行われてもよい。例えば、プロセッサは、メモリコントローラに向けられる読出し要求を結果的にもたらすアプリケーションを実行してもよく、これは読出しプロセス３００を行ってもよいが、特許請求される主題はそれに限定されない。読出しプロセス３００は、上述のように読出しエラーを検出及び／又は訂正するためにＥＣＣエンジンに関係することがある。したがって、メモリアレイのコンテンツを読み出すことに続いて、こうしたＥＣＣエンジンは、発生し得る読出しエラーを訂正するのに用いられてもよい。しかしながら、ＥＣＣエンジンは、特定の数を超えるエラーを訂正するその能力に限りがあることがある。読出しエラーの数がこうした特定の数を上回る場合にＥＣＣオーバーフローが発生することがある。ダイヤモンド３１０で、こうしたＥＣＣオーバーフローが発生したかどうかについての判定が下されてもよい。発生しなかった場合、プロセス３００はブロック３１５に進んでもよく、そこで読出しプロセス３００は読出しエラー（もしあるならば）が有能なＥＣＣエンジンによって訂正されていることで完了してもよい。しかしながら、ＥＣＣオーバーフローが発生した場合、ＥＣＣエンジンは、ＥＣＣオーバーフローにつながるいずれかの又はすべての読出しエラーを訂正することができない。このような場合、プロセス３００はブロック３２０に進んでもよく、そこで符号化データが例えばＥＣＣエンジンから検索されてもよい。前述のように、こうした符号化データは、論理１又は論理０の複数のビットを含んでもよい。一実装では、符号化データは、データワードを例えば決定論的なアルゴリズムでデータワードを処理することによって得られるパリティコードビットと組み合わせることによって生成されてもよい。符号化データがメモリアレイから検索される場合、これらのパリティコードビットは、オリジナルデータに対応するパリティコードビットと比較されてもよい。２組のパリティコードビットがデータと合致しない場合、パリティビットが合致するまでワードが適宜変更されてもよい。その結果、データワードに存在するエラーが訂正され得る。ブロック３３０において、特定のＥＣＣワードの１の数及び０の数がカウントされてもよい。こうしたカウントから、ＥＣＣワードが０よりも多くの１又はこの逆を有するビット・インバランスを含むかどうかについての判定が下されてもよい。ブロック３４０で、ＥＣＣワードがビット・インバランスを含むかどうかに少なくとも部分的に基づいて、ＥＣＣオーバーフローに応答するストラテジが判定されてもよい。ビット・インバランスを含む場合、プロセス３００はダイヤモンド３５０に進んでもよく、そこでＥＣＣワードが１ビットよりも多くの数の０ビットを含むかどうかについての判定が下されてもよい。１ビットよりも多くの数の０ビットを含む場合、プロセス３００はブロック３７０に進んでもよく、そこで読出し電圧を増加させてもよい。こうした増加は、前述のようにメモリアレイの閾値電圧がプログラミング中にメモリアレイの閾値電圧レベルから下方にドリフトされ得る可能性を補償することができる。こうした読出し電圧の増加は、例えば図２に示されるステップのサイズ２３０によって表される電圧の増加に類似していてもよい。ブロック３７３で、以前の読出しで用いられる（例えば、ダイヤモンド３１０の前に行われる）よりも高い読出し電圧を用いて、メモリアレイのコンテンツを読み出すためのプロセスがこの時点で再び行われてもよい。こうした読出しプロセスは、結果的に読出しエラーを生じることがあり、これは読出しプロセスに関係するＥＣＣエンジンによって生成されるＥＣＣワードを用いて検出することができる。１つの事例では、読出しエラーの数は、以前の読出しから生じた読出しエラーの数よりも少ないことがある。こうした読出しエラーの数はより少ないことがあるが、読出しエラーの数は、ＥＣＣエンジンの誤り訂正能力を依然として超えていることがある。こうしたケースは、したがって、ダイヤモンド３７６で判定される場合のＥＣＣオーバーフローに関係することがある。ＥＣＣオーバーフローが発生した場合、プロセス３００はブロック３７０に戻ってもよく、メモリアレイの閾値電圧がプログラミング中にメモリアレイの閾値電圧レベルから下方にドリフトされ得る可能性を補償することをさらに試みるために読出し電圧を再び増加させてもよい。したがって、プロセス３００は、読出し電圧を増加させ、メモリアレイのコンテンツを読み出し、結果的に生じる読出しエラーの数がＥＣＣエンジンの誤り訂正能力を上回るかどうかを判定し、上回る場合に反復プロセスを繰り返す、反復プロセスを通してループしてもよい。一方、結果的に生じる読出しエラーの数がＥＣＣエンジンの誤り訂正能力の範囲内である場合、プロセス３００はブロック３８０に進んでもよく、そこでＥＣＣワードがリフレッシュされてもよい。これは、ＥＣＣエンジン動作に関して上記で説明したのと類似の又は同じ手順の後に新しいデータコードが生成されることを意味し得る。新しいプログラミング段階が、訂正されたコンテンツをリストアし、したがって例えば一部の又はすべてのビットに関して発生し得るドリフトを無効にしてもよい。
【００１７】
一方、ダイヤモンド３５０に戻ると、ＥＣＣワードが０よりも多くの１を含む場合、プロセス３００はブロック３６０に進んでもよく、そこで読出し電圧を減少させてもよい。こうした減少は、前述のようにメモリアレイの閾値電圧がプログラミング中にメモリアレイの閾値電圧レベルから上方にドリフトされ得る可能性を補償することができる。こうした読出し電圧の減少は、例えば図２に示されるステップのサイズ２３０に類似していてもよい。ブロック３６３で、以前の読出しで用いられた（例えば、ダイヤモンド３１０の前に行われた）読出し電圧よりも低い読出し電圧を用いて、メモリアレイのコンテンツを読み出すためのプロセスがこの時点で再び行われてもよい。こうした読出しプロセスは、結果的に読出しエラーを生じることがあり、これは読出しプロセスに関係するＥＣＣエンジンによって生成されるＥＣＣワードを用いて検出することができる。１つの事例では、読出しエラーの数は、以前の読出しから生じた読出しエラーの数よりも少ないことがある。こうした読出しエラーの数はより少ないことがあるが、読出しエラーの数は、ＥＣＣエンジンの誤り訂正能力を依然として超えていることがある。こうしたケースは、したがって、ダイヤモンド３６６で判定される場合のＥＣＣオーバーフローに関係することがある。ＥＣＣオーバーフローが発生した場合、プロセス３００はブロック３６０に戻ってもよく、メモリアレイの閾値電圧がプログラミング中にメモリアレイの閾値電圧レベルから上方にドリフトされ得る可能性を補償することをさらに試みるために読出し電圧を再び減少させてもよい。したがって、プロセス３００は、読出し電圧を減少させ、メモリアレイのコンテンツを読み出し、結果的に生じる読出しエラーの数がＥＣＣエンジンの誤り訂正能力を上回るかどうかを判定し、上回る場合に反復プロセスを繰り返す、反復プロセスを通してループしてもよい。一方、結果的に生じる読出しエラーの数がＥＣＣエンジンの誤り訂正能力の範囲内である場合、プロセス３００はブロック３８０に進んでもよく、そこで前述のようにＥＣＣエンジンによって新しい符号化データが生成されてもよい。もちろん、プロセス３００のこうした詳細は単なる例であり、特許請求される主題はそれに限定されない。
【００１８】
図４は、別の実施形態に係るメモリアレイのコンテンツを読み出すための読出しプロセス４００の流れ図である。プロセス４００は、上述のように読出しエラーを検出及び／又は訂正するためにＥＣＣエンジンに関係することがある。プロセス３００の場合と同様に、メモリアレイのコンテンツを読み出すことに続いて、こうしたＥＣＣエンジンは、発生し得る読出しエラーを訂正するのに用いられてもよい。しかしながら、読出しエラーの数がこうした読出しエラーを訂正するＥＣＣエンジンの能力を上回る場合に、ＥＣＣオーバーフローが発生することがある。プロセス４００は、楕円４１０でこうしたＥＣＣオーバーフローで始まる。ブロック４２０で、こうしたＥＣＣオーバーフローに応答するストラテジが判定されてもよい。一実装では、例えば、アプリケーションを実行するプロセッサは、こうしたストラテジ（例えば、繰返しの数、電圧ステップなど）を判定してもよい。別の実装では、メモリコントローラがこうしたストラテジを判定してもよい。任意のこうした事例において、こうした判定は、ＥＣＣオーバーフローの程度（例えば、ＥＣＣエンジンの誤り訂正能力を超える読出しエラーの数）に少なくとも部分的に基づいていてもよく、及び／又はＥＣＣエンジンによって生成されるＥＣＣワードがビット・インバランスを含むかどうかに少なくとも部分的に基づいていてもよい。
【００１９】
例えば、ＥＣＣエンジンの誤り訂正能力を超えるいくつかの読出しエラーが発生した場合、ＥＣＣオーバーフローに応答するストラテジは、第１のＥＣＣエンジン（ＥＣＣオーバーフローにつながる）よりも頑健な（例えば、より多くの読出しエラーを訂正することができる）別のＥＣＣエンジンを実装することを含んでもよい。こうした比較的頑健なＥＣＣエンジンの実装は、しかしながら、コストに関係することがあり、こうした頑健なＥＣＣエンジンは、メモリ及び／又は処理リソースの比較的大部分を使用することがある。例えば、メモリアレイの比較的大部分が、ＥＣＣプロセスに関係するデータによって占有されるとともに、ＥＣＣエンジン自体を含む実行可能コードによって占有されることがある。加えて、比較的頑健なＥＣＣエンジンは、読出しエラーを訂正するのに比較的長い時間がかかることがある。したがって、ＥＣＣオーバーフローに応答するストラテジは、より頑健なＥＣＣエンジンに関係している必要はない。
【００２０】
前述のように、ＥＣＣオーバーフローに応答するストラテジは、ＥＣＣワードがビット・インバランスを含むかどうかに少なくとも部分的に基づいて判定されてもよい。ビット・インバランスを含む場合、プロセス４００は、読出しバイアスを修正するプロセスを開始するためにブロック４３０に進んでもよい。一実装では、読出しバイアスが増加されるべきであるか又は減少されるべきであるかを判定するために、例えば特定のＥＣＣワードの１の数及び０の数がカウントされてもよい。ＥＣＣワードが１ビットよりも多くの数の０ビットを含む場合、プロセス４００はブロック４５０に進んでもよく、そこで読出し電圧を特定の量だけ増加させてもよい。前述のように、こうした増加は、メモリアレイの閾値電圧がプログラミング中にメモリアレイの閾値電圧レベルから下方にドリフトされ得る可能性を補償することができる。ブロック４５２で、以前の読出しで用いられる（例えば、楕円４１０のＥＣＣオーバーフローの前に行われる）よりも高い読出し電圧を用いて、メモリアレイのコンテンツを読み出すためのプロセスがこの時点で再び行われてもよい。こうした読出しプロセスは、結果的に読出しエラーを生じることがあり、これは読出しプロセスによって生成されるＥＣＣワードを用いて検出することができる。後述のダイヤモンド４５６で判定され得るように、読出しエラーの数は、以前の読出しプロセスから生じた読出しエラーの数よりも少ないことがある。こうした読出しエラーの数はより少ないことがあるが、読出しエラーの数は、ＥＣＣエンジンの誤り訂正能力を依然として超えていることがある。こうしたケースは、したがって、ダイヤモンド４５４で判定される場合のＥＣＣオーバーフローに関係することがある。オーバーフローが発生しない場合、プロセス４００はブロック４６０に進んでもよく、そこで符号化データがリフレッシュされてもよい。一方、ＥＣＣオーバーフローが発生した場合、プロセス４００は、ダイヤモンド４５６に進んでもよく、そこで読出しエラーの数が、結果的にＥＣＣオーバーフローを発生させるのに十分であるにもかかわらず、ブロック４５０で読出し電圧を増加させる前に発生した読出しエラーの数から減少したかどうかについての判定が下されてもよい。読出しエラーの数のこうした減少が生じた場合、プロセス４００はブロック４５０に戻ってもよく、そこで読出し電圧を修正する別の反復プロセスに関して読出し電圧を再び増加させてもよい。したがって、読出し電圧を最近増加させたことの結果としてＥＣＣオーバーフローが発生したか否かについての判定がダイヤモンド４５４で再び下されてもよい。ＥＣＣオーバーフローが発生しなかった場合、プロセス４００は、上述のようにリフレッシュ動作を行うためにブロック４６０に進んでもよい。一方、プロセス４００は、再びダイヤモンド４５６に進んでもよく、そこで読出しエラーの数がブロック４５０で読出し電圧を増加させる前に発生した読出しエラーの数から減少したかどうかについての判定が下されてもよい。上述のように、読出しエラーの数のこうした減少が生じた場合、プロセス４００はブロック４５０に再度戻ってもよく、そこで読出し電圧を修正する別の反復プロセスに関して読出し電圧を再び増加させてもよい。しかしながら、読出しエラーの数のこうした減少が起こらなかった場合、プロセス４００はブロック４２０に戻ってもよく、そこでＥＣＣオーバーフローに応答するストラテジを判定するために決定プロセスに立ち戻ってもよい。前述のように、ストラテジのオプションは、より頑健なＥＣＣエンジン又は多くの可能性のあるうちの任意の他のストラテジを実装することを含んでもよい（例えば、ステップのサイズを変化させること、読出しプロセスを繰り返すこと、多数決投票方式を適用すること、アレイに書き込まれる既知のパターンから情報を取得すること（これは、例えば訂正アルゴリズムに関する情報を提供するためにメモリコントローラには既知であり得るドリフトなどの読出しセルと類似のドリフトを起こすことがある））。
【００２１】
ダイヤモンド４３０に戻ると、ＥＣＣワードが０ビットよりも多くの数の１ビットを含む場合、プロセス４００はブロック４４０に進んでもよく、そこで読出し電圧を特定の量だけ減少させてもよい。前述のように、こうした減少は、メモリアレイの閾値電圧がプログラミング中にメモリアレイの閾値電圧レベルから上方にドリフトされ得る可能性を補償することができる。ブロック４４２で、以前の読出しで用いられる（例えば、楕円４１０のＥＣＣオーバーフローの前に行われる）よりも低い読出し電圧を用いて、メモリアレイのコンテンツを読み出すためのプロセスがこの時点で再び行われてもよい。こうした読出しプロセスは、結果的に読出しエラーを生じることがあり、これは読出しプロセスによって生成されるＥＣＣワードを用いて検出することができる。後述のダイヤモンド４４６で判定され得るように、読出しエラーの数は、以前の読出しプロセスから生じた読出しエラーの数よりも少ないことがある。こうした読出しエラーの数はより少ないことがあるが、読出しエラーの数は、ＥＣＣエンジンの誤り訂正能力を依然として超えていることがある。こうしたケースは、したがって、ダイヤモンド４４４で判定される場合のＥＣＣオーバーフローに再び関係することがある。オーバーフローが発生しない場合、プロセス４００はブロック４６０に進んでもよく、そこでリフレッシュ動作を行ってもよい。一方、ＥＣＣオーバーフローが発生した場合、プロセス４００は、ダイヤモンド４４６に進んでもよく、そこで読出しエラーの数が、結果的にＥＣＣオーバーフローを発生させるのに十分であるにもかかわらず、ブロック４４０で読出し電圧を減少させる前に発生した読出しエラーの数から減少したかどうかについての判定が下されてもよい。読出しエラーの数のこうした減少が生じた場合、プロセス４００はブロック４４０に戻ってもよく、そこで読出し電圧を修正する別の反復プロセスに関して読出し電圧を再び減少させてもよい。したがって、読出し電圧を最近減少させたことの結果としてＥＣＣオーバーフローが発生したか否かについての判定がダイヤモンド４４４で再び下されてもよい。ＥＣＣオーバーフローが発生しなかった場合、プロセス４００はブロック４６０に進んでもよく、そこでリフレッシュ動作を行ってもよい。一方、プロセス４００は、再びダイヤモンド４４６に進んでもよく、そこで読出しエラーの数がブロック４４０で読出し電圧を減少させる前に発生した読出しエラーの数から減少したかどうかについての判定が下されてもよい。上述のように、読出しエラーの数のこうした減少が生じた場合、プロセス４００はブロック４４０に再度戻ってもよく、そこで読出し電圧を修正する別の反復プロセスに関して読出し電圧を再度減少させてもよい。しかしながら、読出しエラーの数のこうした減少が起こらなかった場合、プロセス４００はブロック４２０に戻ってもよく、そこでＥＣＣオーバーフローに応答するストラテジを判定するために決定プロセスに立ち戻ってもよい。前述のように、ストラテジオプションは、より頑健なＥＣＣエンジン又は多くの可能性のうちの任意の他のストラテジを実装することを含んでもよい。
【００２２】
図５は、メモリデバイス５１０を含むコンピューティングシステム５００の例示的な実施形態を示す概略図である。こうしたコンピューティングデバイスは、例えば、アプリケーション及び／又は他のコードを実行するために１つ以上のプロセッサを含んでもよい。例えば、メモリデバイス５１０は、図１に示されるプログラムバッファ７１０などのＰＣＭプログラムバッファを含んでもよい。コンピューティングデバイス５０４は、メモリデバイス５１０を管理するように構成可能であり得る任意のデバイス、アプライアンス、又はマシンの代表であり得る。メモリデバイス５１０は、メモリコントローラ５１５及びメモリ５２２を含んでもよい。限定ではなく単なる例として、コンピューティングデバイス５０４は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ワークステーション、サーバデバイスなどの１つ以上のコンピューティングデバイス及び／又はプラットフォーム、例えば、パーソナルデジタルアシスタント、モバイル通信デバイスなどの１つ以上のパーソナルコンピューティング又は通信デバイス又はアプライアンス、例えば、データベース又はデータストレージサービスプロバイダ／システムなどのコンピューティングシステム及び／又は関連するサービスプロバイダ機能、及び／又はこれらの任意の組み合わせを含んでもよい。
【００２３】
システム５００に示される種々のデバイス、並びに本明細書でさらに説明されるプロセス及び方法のすべて又は一部が、ハードウェア、ファームウェア、ソフトウェア、又はこれらの任意の組み合わせを用いて又は他の方法でこれらを含んで実装されてもよいことが認識される。したがって、限定ではなく単なる例として、コンピューティングデバイス５０４は、バス５４０を通じてメモリ５２２に作動的に結合される少なくとも１つの処理ユニット５２０とホスト又はメモリコントローラ５１５を含んでもよい。処理ユニット５２０は、データ計算手順又はプロセスの少なくとも一部を行うように構成可能な１つ以上の回路の代表である。限定ではなく単なる例として、処理ユニット５２０は、１つ以上のプロセッサ、コントローラ、マイクロプロセッサ、マイクロコントローラ、特定用途向け集積回路、デジタル信号プロセッサ、プログラマブル論理デバイス、フィールドプログラマブルゲートアレイなど、又はこれらの任意の組み合わせを含んでもよい。処理ユニット５２０は、メモリコントローラ５１５と通信するように構成されたオペレーティングシステムを含んでもよい。こうしたオペレーティングシステムは、例えば、バス５４０を経由してメモリコントローラ５１５に送信されるべきコマンドを生成してもよい。一実装では、メモリコントローラ５１５は、前述のように読出しエラーを検出及び／又は訂正するために回路及び／又は実行可能コードを備えるＥＣＣエンジン５７０を含んでもよい。例えば、ＥＣＣエンジン５７０によって行われるＥＣＣプロセスは、データの１つ以上のビットが破損される場合に、再構築されるべきデータに関する十分に付加的な情報を含むパリティビットをプログラムされるデータに補うのに用いられてもよい。例えば、記憶されたデータを表すこうしたＥＣＣワードは、記憶されたデータを読み出すプロセス及び／又はデータの書込み後確認プロセス中に適用されてもよい。
【００２４】
メモリコントローラ５１５は、処理ユニット５２０によって開始される読出しコマンド及び／又は書込みコマンドなどのコマンドを行ってもよい。読出しコマンドに応答して、例えば、メモリコントローラ５１５は、例えば、１つの読出しプロセスから次の読出しプロセスにかけて順次に増加又は減少する個々の電圧レベルを有する一連の読出し電圧を含む、図２のプロット２１０又は２２０に示されるようなバイアス信号を提供してもよい。特に、メモリコントローラ５１５は、バイアス条件を用いてメモリ５２２のコンテンツを読み出してもよく、その結果、コンテンツを読み出すことから生じる読出しエラーをカウントする。さらに、メモリコントローラ５１５は、例えば、読出しエラーの数が特定の閾値数を上回る場合に、こうしたバイアス条件を修正してもよい。一実装では、メモリコントローラ５１５は、ＥＣＣエンジン５７０を用いることによってメモリ５２２の読出しコンテンツを表す符号語を判定してもよい。このような場合、メモリコントローラ５１５は、第１の論理状態を有する符号語のビットの数と第２の論理状態を有する符号語のビットの数とを比較してもよい。こうした比較は、メモリ５２２に関する読出しバイアス条件を増加又は減少させるかどうかについての判定につながることがある。
【００２５】
メモリ５２２は、任意のデータストレージ機構の代表である。メモリ５２２は、例えば、一次メモリ５２４及び／又は二次メモリ５２６を含んでもよい。メモリ５２２は、例えばＰＣＭを含んでもよい。一次メモリ５２４は、例えば、ランダムアクセスメモリ、読出し専用メモリなどを含んでもよい。この例では処理ユニット５２０とは別個のものとして示されるが、一次メモリ５２４のすべて又は一部は、処理ユニット５２０内に提供されてもよく、又は他の方法で処理ユニット５２０と共に存在する／これに結合されてもよいことを理解されたい。
【００２６】
一実施形態では、コンピューティングシステム５００は、ＰＣＭアレイ及び１つ以上の特定の基準状態を記憶するためのＰＣＭ基準セル部分を含むプログラムバッファを有してもよい。システム５００はまた、読出し動作に応答してセル電流を生じるために及び１つ以上の特定の基準状態から生じる基準電流に少なくとも部分的に基づいてセル電流を修正するためにＰＣＭアレイのセルにバイアスパルスを印加するのにコントローラを含んでもよい。システム５００は、１つ以上のアプリケーションをホストする及び読出し動作を開始するために、プロセッサをさらに含んでもよい。
【００２７】
二次メモリ５２６は、例えば、ディスクドライブ、光学ディスクドライブ、テープドライブ、ソリッドステートメモリドライブなどの、例えば、一次メモリ及び／又は１つ以上のデータストレージデバイス又はシステムと同じ又は類似のタイプのメモリを含んでもよい。特定の実装では、二次メモリ５２６は、コンピュータ可読媒体５２８を作動的に受容してもよく、又は他の方法でコンピュータ可読媒体５２８に結合するように構成可能であってもよい。コンピュータ可読媒体５２８は、例えば、システム５００におけるデバイスの１つ以上に関するアクセス可能なデータ、コード、及び／又は命令を搬送及び／又は作成することができる任意の媒体を含んでもよい。
【００２８】
コンピューティングデバイス５０４は、例えば、入力／出力５３２を含んでもよい。入力／出力５３２は、人間及び／又はマシンによる入力を受ける又は他の方法で導入するように構成可能であり得る１つ以上のデバイス又は特徴、及び／又は、人間及び／又はマシンによる出力を送達する又は他の方法で提供するように構成可能であり得る１つ以上のデバイス又は特徴の代表である。限定ではなく単なる例として、入力／出力デバイス５３２は、作動的に構成されたディスプレイ、スピーカ、キーボード、マウス、トラックボール、タッチスクリーン、データポートなどを含んでもよい。
【００２９】
現在のところ例示的な実施形態と考えられるものが示され及び説明されているが、特許請求される主題から逸脱することなく、種々の他の修正がなされてもよく、均等物に置き換えられてもよいことが当業者には理解されるであろう。加えて、本明細書に記載の中心概念から逸脱することなく、特許請求される主題の教示に特定の状況を適合させるために多くの修正がなされてもよい。したがって、特許請求される主題は開示された特定の実施形態に限定されないが、こうした特許請求される主題はまた、添付の請求項及びその均等物の範囲内に入るすべての実施形態を含み得ることが意図される。
【図１】
0005735186.tif 000002
【図２】
0005735186.tif 000003
【図３】
0005735186.tif 000004
【図４】
0005735186.tif 000005
【図５】
0005735186.tif 000006