(57)【要約】      （修正有）【課題】異機種混合ストレージ要素の増大された容量を提供する。【解決手段】データ記憶方法は、書き込みプロセスがメモリの書き込みを行うステップと、読み取りプロセスが前記メモリの読み取りを行うステップと、を含む。前記メモリ内のメモリ・セルの物理特性は、異なるデータ・レベル・セットをサポートする。前記書き込みプロセスは、前記メモリの書き込み時に前記異なるデータ・レベル・セットを考慮に入れる。前記読み取りプロセスは、まず前記メモリ内のデータを取得し、その後前記データをどのように変換処理するかを判定する。【選択図】図４
2010262730.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶方法であって、
書き込みプロセスがメモリの書き込みを行うステップであって、
前記メモリ内のメモリ・セルの物理特性は、異なるデータ・レベル・セットをサポートし、
前記書き込みプロセスは、前記メモリの書き込み時に前記異なるデータ・レベル・セットを考慮に入れる、
ステップと、
読み取りプロセスが前記メモリの読み取りを行うステップであって、まず前記メモリ内のデータを取得し、その後前記データをどのように変換処理するかを判定する、ステップと、
を含む方法。
【請求項２】
前記書き込みプロセスは、少なくとも１つのコードブックを利用し、
前記メモリ内のメモリ・セル・ブロックに書き込まれる書き込みメッセージを受け取るステップと、
前記ブロック内の前記メモリ・セルの物理特性を判定するステップと、
前記物理特性に応答して前記メモリ・セル・ブロックに関連する仮想メモリを識別するステップと、
前記仮想メモリのそれぞれについて、
前記メモリ・セルの前記物理特性、それ以前に生成された制約ベクトル、及びそれ以前に生成された仮想書き込みベクトルに応答して、前記仮想メモリ内の仮想セルを記述する制約ベクトルを生成するステップと、
コードブック、前記制約ベクトル、及び前記書き込みメッセージに応答して仮想書き込みベクトルを計算するステップと、
を実行するステップと、
前記仮想書き込みベクトルを書き込みワードに組み合わせるステップと、
前記書き込みワードを前記メモリ・セル・ブロックに出力するステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記実行するステップは、前記制約ベクトルの内容及び前記メモリ・セル・ブロック内のメモリ・セル数に基づいて、複数のコードブックからコードブックを選択するステップと、前記仮想書き込みベクトルの計算に利用される前記コードブックを識別するコードブック識別子を記憶するステップと、を更に含む、請求項２に記載の方法。
【請求項４】
前記制約ベクトルは、前記仮想セルに関する位置及びサポートされるレベルを記述する、請求項２に記載の方法。
【請求項５】
前記書き込みメッセージは、それぞれ仮想メモリに対応する部分書き込みベクトルに分割され、コードブックは、シンドロームを仮想書き込みベクトルに割り当てる線形コードであり、前記計算するステップは、前記仮想メモリに関して生成された前記制約ベクトルと整合する仮想書き込みベクトルを計算するステップを含み、前記仮想書き込みベクトルの前記シンドロームは、前記仮想メモリに対応する前記部分書き込みベクトルである、請求項２に記載の方法。
【請求項６】
前記計算するステップは、ガウス消去法、ピーリング、及びトレリス・ベース・デコーディングのうちの１つ又は複数を含み、コードブックは、ランダム・バイナリ行列、バイナリ低密度パリティ検査（ＬＤＰＣ）検査行列、バイナリＬｕｂｙ変換（ＬＴ）行列、代数コード、及び畳み込みコードのうちの１つ又は複数によって定義される、請求項２に記載の方法。
【請求項７】
前記メモリ・セル・ブロックは、相変化メモリ（ＰＣＭ）であり、前記物理特性は、各メモリ・セルの抵抗レベル範囲を含む、請求項２に記載の方法。
【請求項８】
前記メモリ・セル・ブロックは、ＰＣＭであり、前記物理特性は、各メモリ・セルの抵抗レベル範囲を含み、前記制約ベクトルは、前記仮想メモリ・セルに関する位置及びサポートされる・レベルを記述し、前記書き込みワードは、各ＰＣＭメモリ・セルに書き込まれる抵抗レベルを含む、請求項２に記載の方法。
【請求項９】
コードブックは、行列で表現され、前記仮想書き込みベクトルの計算に線形プログラミングが利用される、請求項２に記載の方法。
【請求項１０】
コードブックは、連結コードで表現される、請求項２に記載の方法。
【請求項１１】
前記メモリ・セル・ブロックは、フラッシュ・メモリであり、前記物理特性は、各メモリ・セルの閾値電圧特性を含む、請求項２に記載の方法。
【請求項１２】
前記計算するステップは、不成功となる可能性があり、前記仮想書き込みベクトルは、前記計算するステップが不成功とならないようなコードブックが突き止められるまで１つ又は複数のコードブックを適用することによって計算される、請求項２に記載の方法。
【請求項１３】
前記メモリ・セルは、ノイズの影響を受け、前記計算するステップは、追加的に第２のコードブックに属するような前記仮想書き込みベクトルを選択するステップを含む、請求項２に記載の方法。
【請求項１４】
前記物理特性は、多次元レベルを含み、前記書き込みプロセスは、すべての多次元レベルをカバーする順序付けを使用することによって前記多次元レベルを１次元レベルに変換するステップを更に含む、請求項２に記載の方法。
【請求項１５】
メモリの読み取り方法であって、
メモリ・セル・ブロックから読み取りワードを受け取るステップであって、前記ブロック内の前記メモリ・セルの物理特性は異なるデータ・レベル・セットをサポートする、ステップと、
前記読み取りワードを複数の仮想読み取りベクトルに分割するステップと、
前記仮想読み取りベクトルのそれぞれについて、
前記仮想読み取りベクトルの生成に利用されたコードブックを識別するステップと、
部分読み取りデータ・ベクトルを生成するステップであって、前記仮想読み取りベクトルに前記コードブックを表現する行列を乗じるステップを含むステップと、
を実行するステップと、
前記部分読み取りデータ・ベクトルを読み取りメッセージに組み合わせるステップと、
前記読み取りメッセージを出力するステップと、
を含む方法。
【請求項１６】
前記メモリ・セル・ブロックは、相変化メモリ（ＰＣＭ）であり、前記物理特性は、各メモリ・セルの抵抗レベル範囲を含む、請求項１５に記載の方法。
【請求項１７】
前記メモリ・セルは、ノイズを含み、前記実行するステップは、前記ノイズを補償するために前記生成するステップで利用される第２のコードブックを識別するステップを含む、請求項１５に記載の方法。
【請求項１８】
メモリ・システムであって、
メモリ・セル・ブロックを含むメモリであって、前記メモリ・セルの物理特性は異なるデータ・レベルをサポートする、メモリと、
前記メモリ・セルの前記物理特性を判定するテスタと、
前記メモリ及び前記テスタに接続され、少なくとも１つのコードブックを利用するエンコーダと、
を備え、
前記エンコーダは、
前記メモリ・セル・ブロックに書き込まれる書き込みメッセージを受け取るステップと、
前記物理特性に応答して前記メモリ・セル・ブロックに関連する仮想メモリを識別するステップと、
前記仮想メモリのそれぞれについて、
前記メモリ・セルの前記物理特性、それ以前に生成された制約ベクトル、及びそれ以前に生成された仮想書き込みベクトルに応答して、前記仮想メモリ内の仮想セルを記述する制約ベクトルを生成するステップと、
コードブック、前記制約ベクトル、及び前記書き込みメッセージに応答して仮想書き込みベクトルを計算するステップと、
を実行するステップと、
前記仮想書き込みベクトルを書き込みワードに組み合わせるステップと、
前記書き込みワードを前記メモリ・セル・ブロックに出力するステップと、
を実行する、メモリ・システム。
【請求項１９】
記憶位置を更に備え、前記仮想メモリのそれぞれについて実行する前記ステップは、
前記制約ベクトルの内容及び前記メモリ・セル・ブロック内のメモリ・セル数に基づいて、複数のコードブックから前記コードブックを選択するステップと、
前記仮想書き込みベクトルの計算に利用される前記コードブックを識別するコードブック識別子を前記記憶位置に記憶するステップと、
を更に含む、請求項１８に記載のシステム。
【請求項２０】
前記メモリに接続されたデコーダ
を更に備え、
前記デコーダは、
前記メモリ内の第２のメモリ・セル・ブロックから読み取りワードを受け取るステップと、
前記読み取りワードを複数の仮想読み取りベクトルに分割するステップと、
前記仮想読み取りベクトルのそれぞれについて、
前記仮想読み取りベクトルの生成に利用されたコードブックを識別するステップと、
部分読み取りデータ・ベクトルを生成するステップであって、前記仮想読み取りベクトルに識別された前記コードブックを表現する行列を乗じるステップを含むステップと、
を実行するステップと、
前記部分読み取りデータ・ベクトルを読み取りメッセージに組み合わせるステップと、
前記読み取りメッセージを出力するステップと、
を実行する、請求項１８に記載のシステム。
【請求項２１】
異機種混合メモリの書き込み方法であって、
メモリ・セル・ブロックに対応する書き込みメッセージ及び書き込みアドレスを受け取るステップであって、前記メモリ・セルのうちの少なくとも２つは異なるデータ・レベルをサポートする、ステップと、
前記メモリ・セルの物理特性を判定するステップと、
前記物理特性に応答して前記メモリ・セル・ブロックに関連する仮想メモリを識別するステップと、
前記仮想メモリのそれぞれについて、
前記メモリ・セルの前記物理特性、それ以前に生成された制約ベクトル、及びそれ以前に生成された仮想書き込みベクトルに応答して、前記仮想メモリ内の仮想セルを記述する制約ベクトルを生成するステップと、
前記制約ベクトル及び前記書き込みメッセージに応答して仮想書き込みベクトルを計算するステップであって、前記制約ベクトルの指示から特定の値にスタックされていることが知られる位置をスキップしながら、前記書き込みメッセージをビット単位で順番に前記仮想メモリに書き込むステップを含むステップと、
を実行するステップと、
前記仮想書き込みベクトルを書き込みワードに組み合わせるステップと、
前記書き込みワードを前記メモリ・セル・ブロックに出力するステップと、
を含む方法。
【請求項２２】
前記メモリ・セル・ブロックは、ＰＣＭであり、前記物理特性は、各メモリ・セルの抵抗レベル範囲を含む、請求項２１に記載の方法。
【請求項２３】
異機種混合メモリの読み取り方法であって、
メモリ・セル・ブロックから読み取りワードを受け取るステップであって、前記メモリ・セルのうちの少なくとも２つは異なるデータ・レベルをサポートする、ステップと、
前記メモリ・セルの物理特性を判定するステップと、
前記物理特性に応答して前記メモリ・セル・ブロックに関連する仮想メモリを識別するステップと、
前記仮想メモリに応答して前記読み取りワードを複数の仮想読み取りベクトルに分割するステップと、
前記仮想読み取りベクトルのそれぞれについて、
前記メモリ・セルの前記物理特性、それ以前に生成された制約、及びそれ以前に生成された部分読み取りベクトルに応答して、前記仮想メモリ内の仮想セルを記述する制約ベクトルを生成するステップと、
前記制約ベクトル及び前記仮想読み取りベクトルに応答して部分読み取りデータ・ベクトルを生成するステップであって、前記仮想読み取りベクトルをビット単位で順番に読み取るステップ、及び前記制約ベクトルの指示からスタックされていることが知られるビットを破棄するステップを含むステップと、
を実行するステップと、
前記部分読み取りデータ・ベクトルを読み取りメッセージに組み合わせるステップと、
前記読み取りメッセージを出力するステップと、
を含む方法。
【請求項２４】
前記メモリ・セル・ブロックは、ＰＣＭであり、前記物理特性は、各メモリ・セルの抵抗レベル範囲を含む、請求項２３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にコンピュータ・メモリに関するものであり、より詳細には、異機種混合ストレージ要素の記憶容量を増大させることに関するものである。
【背景技術】
【０００２】
「異機種混合ストレージ要素（heterogeneousstorage element）」という用語は、各要素に記憶可能な情報のタイプ及び量に影響を及ぼす物理特性が異なる個々のメモリ要素を指す。そのため、各要素に記憶される情報のタイプ及び量は、それ自体の特定の物理特性に応じて異なる可能性がある。異機種混合ストレージ要素を有するメモリ・システムの一例は、設定可能な抵抗値範囲がＰＣＭセル毎に異なる相変化メモリ（ＰＣＭ）システムである。ＰＣＭでは、各セルでサポート可能なレベル範囲（データ量）と絶対レベル値（データ・タイプ）の両方に影響を及ぼす抵抗レベル範囲がセル毎に異なる。一般に、このような要素の異種性は、メモリへの情報記憶時及びメモリからの情報検索時のエラーの原因となる恐れがある。具体的には、データをメモリに書き込む際に、書き込み装置が情報をセルに記憶しようと試みても、その情報がセルによってサポートされない故に記憶することができない可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
異機種混合ストレージ要素環境におけるエラーを低減する１つの手法は、すべてのメモリ要素に共通する物理特性範囲を発見し、その後、その共通の物理特性範囲内で情報が検索可能となるように情報を記憶することである。一例として、ＰＣＭメモリ・セルでは、すべてのＰＣＭメモリ要素を対象とする抵抗値範囲を設定することが可能である。そのため、この共通の抵抗値範囲のみを使用して情報が記憶される。別の手法は、書き込み不能なセルの値をエラーとして扱い、エラー修正コード（ＥＣＣ）を使用してデータを訂正することである。上記の手法に共通する欠点は、記憶容量を低下させる可能性があることである。
【０００４】
異機種混合ストレージ要素環境におけるエラーを低減する別の手法は、メモリ・ブロック又は個々のメモリ要素に欠陥がある又は欠陥がないものと仮定し、読み取り中又は書き込み中あるいはその両方の処理中に欠陥のあるブロック又は要素を迂回するように試みることである。これらの手法の欠点は、ブロック又は個々の要素が２つの状態のいずれかに該当し得ると仮定されるため、各手法が異機種混合向けに設計されていないことである。
【課題を解決するための手段】
【０００５】
例示的な一実施形態は、書き込みプロセスがメモリの書き込みを行うステップと、読み取りプロセスが前記メモリの読み取りを行うステップと、を含むデータ記憶方法である。前記メモリ内のメモリ・セルの物理特性は、異なるデータ・レベル・セットをサポートする。前記書き込みプロセスは、前記メモリの書き込み時に前記異なるデータ・レベル・セットを考慮に入れる。前記読み取りプロセスは、まず前記メモリ内のデータを取得し、その後前記データをどのように変換処理するかを判定する。
【０００６】
別の実施形態は、メモリの読み取り方法である。前記方法は、メモリ・セル・ブロックから読み取りワードを受け取るステップを含み、前記メモリ・セルの物理特性は、異なるデータ・レベル・セットをサポートする。前記読み取りワードは、２つ以上の仮想読み取りベクトルに分割される。前記仮想読み取りベクトルのそれぞれについて、前記仮想読み取りベクトルの生成に利用されたコードブックが識別され、部分読み取りデータ・ベクトルが生成される。前記生成するステップは、前記仮想読み取りベクトルに前記コードブックを表現する行列を乗じるステップを含む。前記部分読み取りデータ・ベクトルは、読み取りメッセージに組み合わされ、前記読み取りメッセージは、出力される。
【０００７】
追加の例示的な実施形態は、メモリと、テスタと、エンコーダと、を含むメモリ・システムである。前記メモリは、メモリ・セル・ブロックを含み、前記メモリ・セルの物理特性は、異なるデータ・レベル・セットをサポートする。前記テスタは、前記メモリ・セルの前記物理特性を判定する。前記エンコーダは、前記メモリ及び前記テスタに接続され、少なくとも１つのコードブックを利用する。前記エンコーダは、前記メモリ・セル・ブロックに書き込まれる書き込みメッセージを受け取り、前記物理特性に応答して前記メモリ・セル・ブロックに関連する仮想メモリを識別する。前記仮想メモリのそれぞれについて、前記仮想メモリ内の仮想セルを記述する制約ベクトルが生成される。前記制約ベクトルを生成するステップは、前記メモリ・セルの前記物理特性、それ以前に生成された制約ベクトル、及びそれ以前に生成された仮想書き込みベクトルに応答して実行される。また、仮想書き込みベクトルは、前記仮想メモリのそれぞれについて計算される。前記計算するステップは、コードブック、前記制約ベクトル、及び前記書き込みメッセージに応答して実行される。前記仮想書き込みベクトルは、書き込みワードに組み合わされ、前記書き込みワードは、前記メモリ・セル・ブロックに出力される。
【０００８】
追加の例示的な実施形態は、異機種混合メモリの書き込み方法である。前記方法は、メモリ・セル・ブロックに対応する書き込みメッセージ及び書き込みアドレスを受け取るステップであって、前記メモリ・セルのうちの少なくとも２つは異なるデータ・レベルをサポートする、ステップと、前記メモリ・セルの物理特性を判定するステップと、前記物理特性に応答して前記メモリ・セル・ブロックに関連する仮想メモリを識別するステップと、を含む。前記仮想メモリのそれぞれについて、前記メモリ・セルの前記物理特性、それ以前に生成された制約ベクトル、及びそれ以前に生成された仮想書き込みベクトルに応答して、前記仮想メモリ内の仮想セルを記述する制約ベクトルを生成するステップと、前記制約ベクトル及び前記書き込みメッセージに応答して仮想書き込みベクトルを計算するステップであって、前記制約ベクトルの指示から特定の値にスタックされていることが知られる位置をスキップしながら、前記書き込みメッセージをビット単位で順番に前記仮想メモリに書き込むステップを含むステップと、が実行される。前記仮想書き込みベクトルは、書き込みワードに組み合わされ、前記書き込みワードは、前記メモリ・セル・ブロックに出力される。
【０００９】
さらなる例示的な実施形態は、異機種混合メモリの読み取り方法である。前記方法は、メモリ・セル・ブロックから読み取りワードを受け取るステップであって、前記メモリ・セルのうちの少なくとも２つは異なるデータ・レベルをサポートする、ステップと、前記メモリ・セルの物理特性を判定するステップと、前記物理特性に応答して前記メモリ・セル・ブロックに関連する仮想メモリを識別するステップと、前記仮想メモリに応答して前記読み取りワードを複数の仮想読み取りベクトルに分割するステップと、を含む。前記仮想読み取りベクトルのそれぞれについて、前記メモリ・セルの前記物理特性、それ以前に生成された制約、及びそれ以前に生成された部分読み取りベクトルに応答して、前記仮想メモリ内の仮想セルを記述する制約ベクトルを生成するステップと、前記制約ベクトル及び前記仮想読み取りベクトルに応答して部分読み取りデータ・ベクトルを生成するステップであって、前記仮想読み取りベクトルをビット単位で順番に読み取るステップ、及び前記制約ベクトルの指示からスタックされていることが知られるビットを破棄するステップを含むステップと、が実行される。前記部分読み取りデータ・ベクトルは、読み取りメッセージに組み合わされ、前記読み取りメッセージは、出力される。
【００１０】
本発明の実施形態に係る各技法を利用すれば追加的な特徴及び利点が理解されるだろう。本明細書では他の実施形態及び態様についても説明するが、これらも添付の特許請求範囲に記載される発明の一部と見なされる。本発明の利点及び特徴は、以下の説明及び添付図面を参照すればより良く理解されるだろう。
【００１１】
本発明と見なされる主題は、特許請求範囲の各請求項に個別具体的に記載されている。本発明の上記及び他の特徴及び利点は、以下の詳細な説明を添付図面と併せて読めば明らかとなるだろう。
【図面の簡単な説明】
【００１２】
【図１】例示的な一実施形態によって実施され得るデータ書き込みプロセスを示す図である。
【図２】例示的な一実施形態によって実施され得るデータ読み取りプロセスを示す図である。
【図３】例示的な一実施形態によって実施され得る異機種混合メモリにデータを記憶するシステムのブロック図である。
【図４】例示的な一実施形態によって実施され得る相変化メモリ（ＰＣＭ）にデータを記憶するシステムのブロック図である。
【図５】例示的な一実施形態によって実施され得るＰＣＭにデータを書き込むシステムのブロック図である。
【図６】例示的な一実施形態によって実施され得るＰＣＭからデータを読み取るシステムのブロック図である。
【図７】異機種混合メモリを複数の仮想バイナリ・メモリに分解する、例示的な一実施形態によって実施され得る処理を示す概念図である。
【図８】異機種混合メモリ制約（heterogeneous memory constraint）を１組の仮想バイナリ・メモリに対する等価な制約に分解する、例示的な一実施形態によって実施され得る処理を示す概念図である。
【図９】異機種混合メモリ制約を１組の仮想バイナリ・メモリに対する等価な制約に分解する、例示的な一実施形態によって実施され得る処理を示す概念図である。
【図１０】異機種混合メモリ制約を１組の仮想非バイナリ・メモリに対する等価な制約に分解する、例示的な一実施形態によって実施され得る処理を示す概念図である。
【図１１】例示的な一実施形態によって実施され得るバイナリ書き込みワード・コンピュータ（binary write word computer）及びバイナリ・ワード・デコーダのブロック図である。
【図１２】例示的な一実施形態によって実施され得るワード・ライタ（word writer）のブロック図である。
【図１３】例示的な一実施形態によって実施され得るＰＣＭデータ・バイナライザのブロック図ある。
【図１４】例示的な一実施形態によって実施され得るバイナリ・メモリ制約コンピュータ（binary memory constraints computer）のブロック図である。
【図１５】例示的な一実施形態によって実施され得るバイナリ制約計算プロセスを示す図である。
【図１６】ランダム・バイナリ及び低密度パリティ検査（low density parity check : LDPC）コードならびにガウス消去法を使用する、例示的な一実施形態によって実施され得るバイナリ書き込みワード・コンピュータのブロック図である。
【図１７】例示的な一実施形態によって実施され得る、Ｌｕｂｙ変換（ＬＴ）コード及びピーリングを使用するバイナリ書き込みワード・コンピュータ、ならびに線形プログラミングを使用する非バイナリ書き込みワード・コンピュータのブロック図である。
【図１８】例示的な一実施形態によって実施され得る連結コーディング（concatenated coding）を使用する書き込みワード・コンピュータのブロック図である。
【図１９】書き込みプロセス・エンコーダが、メッセージを符号化し異機種混合メモリ制約を満足するコードワードを生成する行列を事前定義された行列シーケンスから発見しようと試みる、例示的な一実施形態によって実施され得るプロセスを示す図である。
【図２０】書き込みプロセス・エンコーダが、図１９に示される事前定義された行列シーケンスを生成するために擬似ランダム関数発生器及びコード行列を使用する、例示的な一実施形態によって実施され得るプロセスを示す図である。
【図２１】読み取りプロセス及び書き込みプロセスが共に各セルでサポートされる抵抗レベルを測定可能である場合に例示的な一実施形態によって実施され得るＰＣＭメモリにデータを記憶するシステムのブロック図である。
【図２２】読み取りプロセス及び書き込みプロセスが共に各セルでサポートされる抵抗レベルを測定可能である場合に例示的な一実施形態によって実施され得るＰＣＭメモリにデータを書き込むシステムのブロック図である。
【図２３】読み取りプロセス及び書き込みプロセスが共に各セルでサポートされる抵抗レベルを測定可能である場合に例示的な一実施形態によって実施され得るＰＣＭメモリからデータを読み取るシステムのブロック図である。
【図２４】例示的な一実施形態によって実施され得る、ノイズを含む異機種混合メモリにデータを記憶するバイナリ・ワード・コンピュータ及びバイナリ・ワード・デコーダを示す図である。
【図２５】異機種混合多次元メモリ制約（heterogeneous multidimensional memory constraint）を等価な１次元制約に変換する、例示的な一実施形態によって実施され得る処理を示す図である。
【図２６】多次元メモリ制約から得られる等価な１次元制約を１組の仮想バイナリ・メモリに対する等価な制約に分解する、例示的な一実施形態によって実施され得る処理を示す図である。
【発明を実施するための形態】
【００１３】
本発明の例示的な一実施形態は、データの書き込み又は読み取りあるいはその両方に先立って各メモリ要素の関連する物理特性を測定し、その知識をコーディング技法を使用して利用することにより、異機種混合要素を有するメモリの記憶容量を増大させる。例示的な諸実施形態において、メモリは、相変化メモリ（ＰＣＭ）セルから構成され、書き込みプロセスは、書き込みに先立ってＲＥＳＥＴ及びＳＥＴパルスを適用することによって各セルの抵抗範囲を測定する。次に、各セル上に記憶可能な抵抗レベルが量子化され、量子化インデックスがバイナリ変換され、セル抵抗制限に違反せずにデータを各セル上に記憶することが可能なバイナリ・コード・セットが使用される。別の例示的な実施形態において、読み取りプロセスは、読み取り後にＲＥＳＥＴ及びＳＥＴパルスを適用することによって各セルの物理特性を追加的に測定し、その後オリジナル・データを再書き込みする。測定された物理特性は、読み取りプロセスにおいてエンコーダによって書き込まれたデータの復号化を支援するのに利用される。
【００１４】
例示的な一実施形態はＰＣＭを含み、すべてのＰＣＭセルは、共通の最大（ＲＥＳＥＴ）抵抗レベルと、可変の最小（ＳＥＴ）レベルと、を有することが想定される。本実施形態において、書き込みプロセスは、適切なプログラミング・パルスを使用して各セル・ブロックをそれぞれのＳＥＴレベルにプログラミングするステップと、ＳＥＴ抵抗レベルを測定するステップと、を含む。この情報に基づき、適切なコードを使用してセル抵抗範囲と適合（compatible）する抵抗レベル・セットに書き込まれるデータが変換される。別の例示的な実施形態において、各ＰＣＭセルの最小抵抗レベルと最大抵抗レベルは共に可変である。書き込みプロセスは、適切なプログラミング・パルスを使用して各セル・ブロックをそれぞれのＳＥＴレベル及びＲＥＳＥＴレベルにプログラミングするステップと、ＳＥＴ抵抗レベル及びＲＥＳＥＴ抵抗レベルを測定するステップと、を含む。この情報に基づき、適切なコードを使用してセル抵抗範囲と適合する抵抗レベル・セットに書き込まれるデータが変換される。
【００１５】
別の例示的な実施形態において、上記の変換ステップは以下のように実行される。まず、各抵抗レベルが２進値に変換される。各ビットプレーンを使用して異なるデータ・メッセージが記憶される。所与のビットプレーンについて、メモリに書き込まれるバイナリ・ワードは、読み取りプロセス及び書き込みプロセスで共用されるバイナリ行列（「Ｈ」）を利用して生成される。具体的には、以下のようなバイナリ・ベクトル「ｃ」、即ち、Ｈｃが記憶対象のバイナリ・メッセージと等しく、且つｃがメモリ・セルの異種性によって課される１組のバイナリ制約を満足するようなバイナリ・ベクトル「ｃ」が発見される。このバイナリ・ベクトルは、ビットプレーンに書き込まれる。読み取りプロセスは、Ｈｃを計算することによってメッセージを再構築する。
【００１６】
別の例示的な実施形態において、抵抗レベルの２進値変換は、各セルの２値化が所与のレベル毎に異なるように達成される。これにより、ビットプレーン全体のコーディング・レートの均一化が容易となり、それ故システムで必要とされるバイナリ行列（Ｈ）の数が減少し、その結果ストレージ／ハードウェアの複雑さが低減される可能性がある。別の例示的な実施形態において、抵抗レベルの２進値変換は、整数で表現される抵抗レベルの２値化の固定置換によって達成される。別の例示的な実施形態において、上記の変換ステップは、読み取りプロセス及び書き込みプロセスで共用される非バイナリ行列Ｈを利用して符号化対象のデータを生成することによって実行される。具体的には、以下のようなベクトルｃ、即ち、Ｈｃが記憶対象の非バイナリ・メッセージと等しく、且つｃがメモリの均一性によって課される１組の制約を満足するようなベクトルｃが発見される。このベクトルは、メモリに書き込まれる。読み取りプロセスは、Ｈｃを計算することによってメッセージを再構築する。
【００１７】
本明細書で使用される「データ・レベル」という用語は、セルの物理特性の値に関する事前指定範囲に対応する（又はその範囲で「表現される」）特定のデータ値を指す。所与のデータ・レベルをサポートするために、セルの物理特性がそのデータ・レベルに対応する範囲内の値をとるように設定することができる。ＰＣＭを使用する仮説的な例として、例えば抵抗の物理特性について、０〜１０Ωのセル抵抗をデータ値＝１に対応させ、１０〜２０Ωのセル抵抗をデータ値＝２に対応させ、以下同様に対応付けることができる。それ故、あるセルの抵抗が０〜１０Ωの範囲に含まれるならば、そのセルはデータ・レベル１をサポートすることになる。
【００１８】
図１は、例示的な一実施形態によって実施され得るデータ書き込みプロセスを示す。ブロック１０２で、書き込みデータ（「書き込みメッセージ」とも呼ばれる）と、異機種混合メモリ・セル・ブロックに対応するアドレスとが、（例えばエンコーダ内で）受け取られる。ブロック１０４で、そのメモリ・セル・ブロックに関連する仮想メモリが識別され、書き込みデータは、それぞれ１つの仮想メモリと関連付けられる複数の部分書き込みデータ・ベクトルに分割される。仮想メモリの数は、メモリ・セル・ブロックの物理特性に依存する。例えば、ＰＣＭセルの物理特性は、抵抗レベルを含む可能性がある。抵抗レベルが最大４つの値をとり得る場合は、仮想メモリの数は２となる（即ち、２の２乗は４、よって２ビットで４つの値がサポートされ得る）。一方、抵抗レベルが４つ乃至８つの値をとり得る場合は、仮想メモリの数は３となる（即ち、２の３乗は８、よって３ビットで８つの値がサポートされ得る）。
【００１９】
図１のブロック１０６では、ステップ１０４で識別された各仮想メモリについて以下のプロセスが実行される。仮想メモリ内の仮想セルを記述する制約ベクトルが生成される。この制約ベクトル生成ブロックには、各メモリ・セルの物理特性と、（例えば他の仮想メモリに関する）メモリ・セル・ブロックに関してそれ以前に生成されたすべての制約ベクトルと、メモリ・セル・ブロックに関してそれ以前に生成されたすべての仮想書き込みベクトルと、が入力される。このように、書き込みプロセスは各メモリ・セルの物理特性を認識する。次に、制約ベクトルの内容及びメモリ・セル・ブロック内のメモリ・セル数に基づいて、コードブックが選択される。例示的な一代替実施形態において、コードブックは固定され、読み取りプロセスと書き込みプロセスの両方に事前に知らされるため、この場合は選択ステップが不要となる。コードブックは、線形コードと非線形コードの両方を指定することができる。上記のコードブック、制約ベクトル、及び書き込みデータに基づいて、仮想メモリに関する仮想書き込みベクトルが計算される。コードブックが固定されない場合には、コードブックに関連する識別子がメモリ・セル・ブロックの読み取り時に利用できるように記憶される。コード・インデックスは、メタデータと呼ばれることがある。同様に、コードブックもメタデータと呼ばれることがある。メタデータは、必ずしもそれだけに限定されるわけではないが、事前に検査されるメモリ内の特別な領域に記憶することや、すべてのセルでサポートされるレベルのみを対象とする書き込み方式を使用することにより、異なる非異機種混合メモリ又は異機種混合メモリを含めた様々な位置に信頼性のある形で記憶することができる。コードブックが固定される場合には、メタデータを記憶する必要はない。ブロック１０８で、各仮想書き込みベクトルは、書き込みワードに組み合わされる。ブロック１１０で、書き込みワードは、書き込み対象のメモリ・セル・ブロックに出力される。
【００２０】
図２は、例示的な一実施形態によって実施され得るデータ読み取りプロセスを示す。本例において、読み取りプロセスで利用されるデコーダは異機種混合メモリ・セル・ブロックの物理特性を認識していない（即ち気付いていない）ものと仮定する。デコーダは、物理特性の範囲（例えば０〜４の抵抗レベル範囲）は認識せず、ブロックに対する最後の書き込みプロセス中に使用されたコードブックのインデックスを認識する。ブロック２０２で、異機種混合メモリ・セル・ブロックからデータが読み取られる（即ち「読み取りワード」）。ブロック２０４で、読み取りワードは、物理値の範囲に基づいて仮想読み取りベクトルに分割される。例えば、その範囲が４つの値をカバーする場合、読み取りワードは、２つの仮想読み取りベクトルに分割される。ブロック２０６では、各仮想読み取りベクトルについて以下の処理が実行される。まず、コードブック識別子が（例えば記憶位置から）受け取られる（あるいは固定又は事前指定されたコードブックである可能性もある）。コードブック識別子は、データがメモリに書き込まれたときにエンコーダによって利用されるコードブックを識別する。次に、識別されたコードブックを利用することによって部分読み取りデータ・ベクトルが生成される。例示的な諸実施形態において、コードブックは線形コードであり、部分読み取りデータ・ベクトルは、仮想読み取りベクトルに識別されたコードブックを表現する行列を乗じることによって生成される。ブロック２０８で、各部分読み取りデータ・ベクトルは、読み取りデータ（「読み取りメッセージ」とも呼ばれる）に組み合わされる。ブロック２１０で、読み取りデータは（例えば読み取り要求側に）出力される。
【００２１】
図３は、例示的な一実施形態によって実施され得る異機種混合メモリにデータを記憶するシステムのブロック図である。図３に示されるシステムは、メモリ・セル・ブロックを含む異機種混合メモリ３０２と、メモリ・セルの物理特性を判定するテスタ３０４と、書き込みデータを受け取り、メモリ・セルに記憶される書き込みワードを生成するエンコーダ３０６と、読み取りワードをメモリから受け取り、読み取りデータを生成するデコーダ３０８と、を含む。図１を参照して説明したような例示的な書き込みプロセス３１２は、テスタ３０４と、エンコーダ３０６と、書き込みプロセス３１２と読み取りプロセス３１４の両方で利用される共用コード３１０（例えば、コードブック識別子及びコードブック）と、を利用する。図２を参照して説明したような例示的な読み取りプロセス３１４は、デコーダ３０８と、共用コード３１０と、を利用する。
【００２２】
図４は、例示的な一実施形態によって実施され得る相変化メモリ（ＰＣＭ）にデータを記憶するシステムのブロック図である。図４に示されるシステムは、メモリ・セル・ブロックを含む異機種混合ＰＣＭメモリ４０２と、メモリ・セルに関連する抵抗レベル（即ち、本例では物理特性が抵抗レベルとなる）を判定する抵抗範囲テスタ（resistance range tester）４０４と、書き込みデータを受け取り、メモリ・セルに記憶されるＰＣＭ書き込みワードを生成するエンコーダ４０６と、ＰＣＭ読み取りワードを異機種混合ＰＣＭメモリ４０２から受け取り、読み取りデータを生成するデコーダ４０８と、を含む。異機種混合ＰＣＭメモリ４０２に対する例示的な書き込みプロセス４１２は、抵抗範囲テスタ４０４と、エンコーダ４０６と、書き込みプロセス４１２と読み取りプロセス４１４の両方で利用される共用コード４１０と、を利用する。異機種混合ＰＣＭメモリ４０２に対する例示的な読み取りプロセス４１４は、デコーダ４０８と、共用コード４１０と、を利用する。別の実施形態において、抵抗範囲テスタは、そのセットが非隣接セットである場合も各セットでサポートされる抵抗レベル・セットを判定する抵抗テスタに置き換えることができる。
【００２３】
一代替実施形態において、メモリはフラッシュ・メモリであり、メモリ・セルはフラッシュ・メモリ・セルである。本実施形態では、情報の記憶に使用される物理特性は、浮遊ゲート電荷である。フラッシュ・メモリの異種性は、フラッシュ・セルの電荷蓄積特性のばらつきに由来する。
【００２４】
図５は、例示的な一実施形態によって実施され得る異機種混合ＰＣＭメモリ４０２にデータを記憶するシステムのブロック図である。図５は、例示的な一実施形態によって実施され得る例示的なエンコーダ４０６をより詳細に示す図である。例示的なエンコーダ４０６は、バイナリ・メモリ制約コンピュータ５０２と、コード・セレクタ５０６と、バイナリ書き込みワード・コンピュータ５０８と、データ・バイナライザ５１０と、ＰＣＭワード・ライタ５０４と、を含む。データ・バイナライザ５１０は、書き込みデータを受け取り、その書き込みデータをそれぞれ１つの仮想メモリと関連付けられる複数の部分書き込みデータ・ベクトルに分割する。例示的な一実施形態において、書き込みデータはバイナリであり、データ・バイナライザは、ｉ番目の仮想メモリに書き込み可能なビット数を判定することによってｉ番目のバイナリ・ベクトル内のビット数を決定しながら、書き込みデータを複数のバイナリ・ベクトルに分割する。このビット数は、バイナリ・メモリ制約コンピュータ５０２によって計算されるメモリ制約の関数として計算される。
【００２５】
別の例示的な実施形態において、書き込みデータは非バイナリであり、データ・バイナライザ５１０は、その書き込みデータをバイナリ変換した後、複数のバイナリ・ベクトルに分割する。図５に示される実施形態において、仮想メモリは仮想メモリ・ベクトルとして表現される。例示的な一実施形態において、この仮想メモリの数は、抵抗範囲テスタ４０４によって測定されるＰＣＭセル内の可能な抵抗値の数に依存する。バイナリ・メモリ制約コンピュータ５０２は、メモリ・セル・ブロック内の各セル毎にサポートされる抵抗レベルを受け取る。バイナリ・メモリ制約コンピュータ５０２は、抵抗レベルの範囲に基づいて各仮想メモリに関連する制約を識別する。コード・セレクタ５０６は、ブロック内のメモリ・セル数と各仮想メモリに関する制約とに基づいて、仮想メモリ毎のコードブックを選択する。別の例示的な実施形態において、コードブックは固定され、読み取りプロセスと書き込みプロセスの両方に事前に知らされるため、コード・セレクタが不要となる。バイナリ書き込みワード・コンピュータ５０８は、仮想書き込みベクトルを計算する。例示的な一実施形態において、コードブックは、シンドロームを仮想書き込みベクトルに割り当てる線形コードであり、所与の部分書き込みデータ・ベクトルに関する仮想書き込みベクトルは、仮想メモリに関して生成された制約ベクトルと整合し、それ自体のシンドロームが部分書き込みベクトルと等しいベクトルを計算することによって計算される。それ故、仮想書き込みベクトルは、仮想メモリに関する各制約を考慮に入れながらｃに関する式Ｈｃ＝ｍを解くことによって計算される。ここで、Ｈは、仮想メモリに関して選択された線形コードに対応するコード行列であり、「ｍ」は、仮想メモリに対応する部分書き込みデータ・ベクトルであり、積Ｈｃは、ｃに対応するシンドロームである。一般に、式Ｈｃ＝ｍは、ｃに関する複数の可能な解を有し、各解はそれぞれ部分書き込みベクトルｍの１つの表現となる。所望の表現は、仮想メモリ制約と整合する解ベクトルｃである。ＰＣＭワード・ライタ５０４は、各仮想書き込みベクトルを異機種混合ＰＣＭメモリ４０２に書き込まれる書き込みワードに組み合わせる。
【００２６】
図６は、例示的な一実施形態によって実施され得る異機種混合ＰＣＭメモリ４０２からデータを読み取るシステムのブロック図である。図６は、例示的な一実施形態によって実施され得る例示的なデコーダ４０８をより詳細に示す図である。例示的なデコーダ４０８は、ＰＣＭワード・リーダ６０２と、データ・バイナライザ６０４と、バイナリ・ワード・デコーダ６０６と、読み取りデータ・ジェネレータ６０８と、を含む。ＰＣＭワード・リーダ６０２は、読み取りアドレスで指定されるセル・ブロック内の各セルを読み取る。読み取りワードは、データ・バイナライザ６０４によって受け取られ、データ・バイナライザ６０４は、その読み取りワードを可能な抵抗値の範囲に基づいて仮想読み取りベクトルに分解する。各仮想読み取りベクトルは、個別のバイナリ・ワード・デコーダ６０６に送られる。バイナリ・ワード・デコーダ６０６は、読み取りワードを異機種混合ＰＣＭメモリ４０２に書き込むのに利用されたコードブックのインデックス又は他の識別子へのアクセスを有する。線形コードの場合、バイナリ・ワード・デコーダ６０６は、識別されたコードブックに対応するコード行列に仮想読み取りベクトルの内容を乗じて、部分読み取りデータ・ベクトルを作成する。読み取りデータ・ジェネレータ６０８は、部分読み取りデータ・ベクトルを読み取りデータに組み合わせる。その後、読み取りデータは（例えばデータ要求側に）出力される。
【００２７】
図７は、異機種混合メモリを複数の仮想バイナリ・メモリに分解する、例示的な一実施形態によって実施され得る処理の概念図である。図７に示される例は、５つの異機種混合メモリ・セルを有するメモリ・ブロック７０２を含む。これらのメモリ・セルの抵抗範囲レベルは４つの値（０、１、２、３）を有し、したがって、この抵抗範囲の物理特性は２つのビットプレーン７０４で表現することが可能である。セル抵抗レベルの２値化における各ビットプレーンは、仮想メモリ（「バイナリ・メモリ」とも呼ばれる）のうちの１つに対応する。図７は、バイナリ・メモリ１  ７０８と、バイナリ・メモリ２  ７１０とを示す。オリジナル・メモリ・ブロック７０２の異種性は、仮想メモリ・セルに対する制約の形で現れる。具体的には、セル３及びセル４は、レベル「１０」及び「１１」を記憶することができず、そのため、バイナリ・メモリ２  ７１０ではそれらに対応する位置が「０」でスタック（ｓｔｕｃｋ）される、即ちそれらの値が「１」に変更されることはない。例示的な一実施形態において、仮想メモリに対する制約は、制約ベクトルとして表現される。例えば、バイナリ・メモリ２  ７１０に関する制約ベクトルは、ＢＰ２：ｂ＝（３，４），ｖ＝（０，０）と表現することができる。
【００２８】
図８は、異機種混合メモリ制約を１組の仮想バイナリ・メモリに対する等価な制約に分解する、例示的な一実施形態によって実施され得る処理の概念図である。図８は、メモリ・ブロック８０２が存在し、メモリ・ブロック８０２の物理特性を記述するのに２つのビットプレーン８０４が必要とされる点で図７と同様である。本例において、セル２及びセル５は、レベル「１１」を記憶することができず、したがって、バイナリ・メモリ１  ８０８内のセル２又はセル５あるいはその両方が「１」である場合は、バイナリ・メモリ２  ８１０内の対応するセルが「０」でスタックされる。この例は、バイナリ・メモリ２  ８１０に関する制約がバイナリ・メモリ１  ８０８に記憶されるバイナリ・データに依存する可能性があることを示す。
【００２９】
図９は、異機種混合メモリ制約を１組の仮想バイナリ・メモリに対する等価な制約に分解する、例示的な一実施形態によって実施され得る処理の概念図である。図９は、メモリ・ブロック９０２が存在し、メモリ・ブロック９０２の物理特性を記述するのに２つのビットプレーン９０４が必要とされる点で図７及び図８と同様である。本例において、ビットプレーン２  ９１０内のセル５は、ビットプレーン１  ９０８内のセル５が「１」と等しい場合は「０」でスタックされる。また、ビットプレーン２  ９１０内のセル５は、ビットプレーン１  ９０８内のセル５が「０」と等しい場合は「１」でスタックされる。
【００３０】
このような制約の計算対象となる仮想メモリは、非バイナリであってもよく、例えば計算が必要となる仮想書き込みベクトルの数を減少させるのに役立つことが証明される可能性がある。図１０は、異機種混合メモリ制約を１組の仮想ターナリ・メモリに対する等価な制約に分解する、例示的な一実施形態によって実施され得る処理の概念図である。図１０に示される例は、５つの異機種混合メモリ・セルを有するメモリ・ブロック１００２を含む。これらのメモリ・セルの抵抗範囲レベルは９つの値（０、１、２、３、４、５、６、７、８）を有し、したがって、この抵抗範囲の物理特性は２つのターナリ・シンボル・プレーン１００４で表現することが可能である。各ターナリ・シンボル・プレーンは、仮想メモリ（「ターナリ・メモリ」とも呼ばれる）のうちの１つに対応する。図１０は、ターナリ・メモリ１  １００８と、ターナリ・メモリ２  １０１０とを示す。オリジナル・メモリ・ブロック１００２の異種性は、仮想メモリ・セルに対する制約の形で現れる。例えば、セル５はレベル１（３進数の「０１」）よりも大きいレベルをサポートすることができず、そのため、ターナリ・メモリ１  １００８内の対応する仮想セルは２未満に制約され、ターナリ・メモリ２  １０１０内の対応するセルは０でスタックされる。同様に、セル２はレベル２（３進数の「０２」）よりも大きいレベルをサポートすることができないため、ターナリ・メモリ２  １０１０内の仮想セル２は０でスタックされる。別の例として、セル３は、レベル「００」、「０１」、「０２」、「１０」、及び「１１」のみをサポートする。それ故、ターナリ・メモリ２  １０１０内の仮想セル３は、ターナリ・メモリ１  １００８内の位置３に書き込まれるシンボルが「０」又は「１」である場合は「０」又は「１」に制約され、そうでない場合は「０」でスタックされる。
【００３１】
図１１は、例示的な一実施形態によって実施され得るバイナリ書き込みワード・コンピュータ１１０６及びバイナリ・ワード・デコーダ１１１０のブロック図である。書き込みプロセスは、ｉ番目の仮想メモリに関する仮想書き込みベクトルとも呼ばれる書き込みデータｃを生成する。書き込みプロセスは、バイナリ・メモリ制約コンピュータ１１０２と、コード・セレクタ１１０４と、バイナリ書き込みワード・コンピュータ１１０６と、を含む。バイナリ・メモリ制約コンピュータ１１０２は、物理特性、ならびにそれ以前に書き込まれた仮想メモリに対応する仮想書き込みベクトルをテスタから受け取り、ビットプレーンのうちの１つに関するスタック位置及びスタック値を記述する制約ベクトルを生成する。制約ベクトルはコード・セレクタ１１０４に入力され、コード・セレクタ１１０４は、制約ベクトルの内容とメモリ・セル・ブロック内のメモリ・セル数とに基づいて、コードブック（本例ではバイナリ・コード行列で表現される）を選択する。また、コード・セレクタ１１０４は、制約ベクトルをバイナリ書き込みワード・コンピュータ１１０６にも渡す。バイナリ書き込みワード・コンピュータ１１０６は、コード行列Ｈと、ｂ及びｖを含む制約ベクトルと、書き込みデータｍとを入力して仮想書き込みベクトルｃを計算する。仮想書き込みベクトルｃは、制約ベクトルで指定される制約も満足させながら、「ｃ」に関するＨｃ＝ｍを解くことによって計算される。この仮想書き込みベクトルは、当該ブロックの仮想書き込みベクトルを書き込みワードに組み合わせるＰＣＭワード・ライタに入力される。また、この仮想書き込みベクトルは、次の仮想メモリに関する制約ベクトルの展開時に使用するために、バイナリ・メモリ制約コンピュータ１１０２に入力される。
【００３２】
図１１の例示的な実施形態に示されるように、読み取りプロセスは、データ・バイナライザ１１０８と、バイナリ・ワード・デコーダ１１１０と、を利用する。ＰＣＭワード・リーダからの読み取りワードは、データ・バイナライザ１１０８で受け取られる。データ・バイナライザ１１０８は、読み取りワードを複数の仮想読み取りベクトルに分割する。仮想読み取りベクトルのうちの１つは、メモリ・ブロックへのデータ書き込み時に利用されたコードブックと共にバイナリ・ワード・デコーダ１１１０に入力される。仮想読み取りベクトルにコードブックを乗じることによって部分読み取りデータ・ベクトル（「バイナリ・メッセージ」とも呼ばれる）が生成される。部分読み取りデータ・ベクトルは、読み取りワード・ジェネレータに送られ、読み取りワード・ジェネレータは、メモリ・ブロック内の各仮想メモリからの部分読み取りデータ・ベクトルを読み取りデータに組み合わせる。
【００３３】
図１１に示される例は、非バイナリ・メモリ制約及びコード行列が使用される場合に一般化することができる。
【００３４】
図１２は、例示的な一実施形態によって実施され得るＰＣＭワード・ライタ５０４のようなワード・ライタのブロック図である。ＰＣＭワード・ライタ５０４は、仮想書き込みベクトル（ｃ１．．．ｃｉ．．．ｃＢ）を異機種混合ＰＣＭメモリ４０２に書き込まれる書き込みワード（Ｗ１．．．ＷＫ）に組み合わせる。「Ｋ」はメモリ・セル・ブロック内のセル数、「Ｂ」はメモリ・セル・ブロック内の仮想メモリ数である。図１２は、書き込みワード内容の例示的な判定手法を示すものであり、仮想書き込みベクトルを組み合わせて書き込みワードを作成する他の手法を実施することも可能である。上記の仮想書き込みベクトル生成手法（特にそれらと仮想メモリ・セルとの整合性）は、書き込みワード内の各シンボルがそれぞれの書き込み先のセルによってサポートされるレベルとなることを保証する。これにより、異機種混合メモリの正しい書き込みが保証される。
【００３５】
図１３は、例示的な一実施形態によって実施され得るデータ・バイナライザ６０４のようなＰＣＭデータ・バイナライザのブロック図である。ＰＣＭワード・リーダ６０２は、ＰＣＭメモリから読み取り対象のメモリ読み取りアドレスにおける読み取りワード（Ｗ１．．．ＷＫ）を受け取り、その読み取りワードを複数の仮想読み取りベクトル（ｃ１．．．ｃｉ．．．ｃＢ）に分割する。図１３は、書き込みワード内容の例示的な判定手法を示すものであり、他の分割手法を実施することも可能である。
【００３６】
図１４は、例示的な一実施形態によって実施され得るバイナリ・メモリ制約コンピュータ５０２のようなバイナリ・メモリ制約コンピュータのブロック図である。図１４は、セル「ｉ」に対応する「Ｂ」個の仮想メモリに関する制約（スタック・ビット及びスタック値）の計算を示す。抵抗範囲は、抵抗範囲テスタ４０４によって測定され、セル「ｉ」によってサポートされる整数値の抵抗レベル・インデックス・セットを判定するのに使用される。このセットと、仮想メモリ１〜ｋ−１内の位置「ｉ」に書き込まれるビットとに基づいて、バイナリ・メモリ「ｋ」内の位置「ｉ」がスタックされているかどうか（そうであればスタック値が何であるか）を判定することができる。
【００３７】
図１５は、図１４に示されるブロック図で実施され得るバイナリ制約計算プロセスを示す。図１５に示される例において、セル「ｉ」は、インデックス１、２、３、４、及び５で表される抵抗レベルをサポートすることができる。この情報はバイナライザ１５０２に入力され、バイナライザ１５０２は、各セル・レベル・インデックスに対応する２値化インデックスを作成する。５つ以上の抵抗レベルがＰＣＭメモリ内に存在するので、少なくとも３つの仮想メモリ（「バイナリ・メモリ」とも呼ばれる）が存在する。図１５は、３つの各仮想メモリ内の位置「ｉ」に対応するメモリ制約の計算手法を示す。２値化インデックスはバイナリ・メモリ１の制約コンピュータ１５０４に入力され、バイナリ・メモリ１の制約コンピュータ１５０４は、２値化インデックスの最下位ビットにどのような値が収容されているかを判定する。本例において、これらの値には「０」と「１」の両方が含まれ、したがってバイナリ・メモリ１の位置「ｉ」は非スタックである。
【００３８】
ブロック１５０６で、バイナリ・メモリ１内のビット「ｉ」に「０」の値が書き込まれる。この書き込みブロックに対する入力にはバイナリ・メモリ１に関連する制約ベクトルが含まれ、各制約は、バイナリ・メモリ１内のビット「ｉ」が非スタックであり、したがって任意の値を書き込むことができることを指定する。処理はバイナリ・メモリ２の制約コンピュータ１５０８に進み、バイナリ・メモリ１内のビット「ｉ」に書き込まれたデータ値が入力される。バイナリ・メモリ１内のビット「ｉ」に「０」が書き込まれたことを考慮して、残りの適合レベルが計算される。バイナリ・メモリ２の制約コンピュータ１５０８に示されるように、最下位ビット（即ちバイナリ・メモリ１内）に「０」が配置されていることから、残りの適合レベルは（０１０及び１００）となる。バイナリ・メモリ２の制約コンピュータは、バイナリ・メモリ２の位置「ｉ」が非スタックであることを判定する。
【００３９】
ブロック１５１０で、バイナリ・メモリ２の制約コンピュータ１５０８から入力された制約ベクトルを使用して、バイナリ・メモリ２内のビット「ｉ」に「１」の値が書き込まれる。次に、処理はバイナリ・メモリ３の制約コンピュータ１５１２に進み、バイナリ・メモリ１及びバイナリ・メモリ２内のビット「ｉ」に書き込まれたデータ値が入力される。バイナリ・メモリ１内のビット「ｉ」に「０」が書き込まれ、バイナリ・メモリ２内のビット「ｉ」に「１」が書き込まれたことを考慮して、残りの適合レベルが計算される。バイナリ・メモリ３の制約コンピュータ１５１２に示されるように、残りの適合レベルは（０１０）となる。バイナリ・メモリ３の制約コンピュータ１５１２は、バイナリ・メモリ３の位置「ｉ」が「０」でスタックされていることを判定する。この制約情報は、バイナリ・メモリ３のワード書き込みプロセスに入力される。
【００４０】
一実施形態では、仮想書き込みベクトルｃを計算するために、ｃが一定のスタック位置制約を満足するような式Ｈｃ＝ｍを解く必要がある。この計算は、各種文献に開示される多数の方法を含めた複数の方法によって実行することができる。例示的な一実施形態において、行列Ｈは、非正則低密度パリティ検査（ＬＤＰＣ）コードのパリティ検査行列を計算することによって計算され、書き込みプロセスは、ガウス消去法を使用してベクトルを計算する。別の例示的な実施形態において、行列Ｈは、有限アルファベットから一意に導かれるランダム行列を計算することによって計算され、書き込みプロセスは、ガウス消去法を使用してベクトルを計算する。別の例示的な実施形態において、行列Ｈは、Ｌｕｂｙ変換（ＬＴ）コードの生成行列の転置を計算することによって計算され、書き込みプロセスは、ピーリングを使用して仮想書き込みベクトル「ｃ」を計算する。別の実施形態において、行列Ｈは、畳み込みコードを表し、符号化アルゴリズムは、トレリス・ベースのコスト最小化を使用して仮想書き込みベクトル「ｃ」を計算し、この場合、各トレリス・パスに関連するコストは、各セルの抵抗レベルと当該セルに書き込まれる値の関数である。別の実施形態において、行列Ｈは、ＢＣＨやリード・ソロモン・コードのような代数コードの生成行列又はパリティ検査行列を計算することによって計算される。別の例示的な実施形態において、書き込みプロセスは、線形プログラムを解いて以下のようなベクトル「ｃ」、即ち、仮想メモリ内の各メモリ・セルがとり得る抵抗値の範囲によって課される各成分ｃｉの値に対する線形制約を満足し、且つ行列Ｈとｃの積から符号化対象の書き込みベクトルｍが得られるようなベクトル「ｃ」を発見する。
【００４１】
図１６は、ランダム・バイナリ及びＬＤＰＣコードならびにガウス消去法を使用する、例示的な一実施形態によって実施され得るバイナリ書き込みワード・コンピュータのブロック図である。「ｉ番目のバイナリ・メモリ」という用語は、仮想メモリのうちの１つを指す。ｉ番目の仮想メモリ内のスタック位置は、対応する値ｖと共にｂとして表現される。利用されるコードブックは、Ｈと呼ばれる。ｉ番目のバイナリ・メッセージ「ｍ」は、ｉ番目の仮想メモリに書き込まれる書き込みデータの位置を指す。
【００４２】
図１７は、例示的な一実施形態によって実施され得る、Ｌｕｂｙ変換（ＬＴ）コード及びピーリングを使用するバイナリ書き込みワード・コンピュータ、ならびに線形プログラミングを使用する非バイナリ書き込みワード・コンピュータのブロック図である。
【００４３】
例示的な一実施形態において、仮想メモリ制約を満足する仮想書き込みベクトルｃは、以下のように計算される。書き込みプロセス及び読み取りプロセスは、仮想メモリ毎にＧＨＴ＝０となるような生成行列Ｇ及びパリティ検査行列Ｈを共用する。まず、Ｈｕ＝ｍとなるようなベクトルｕが発見される。次に、ベクトルＧｖ＋ｍが仮想メモリ制約を満足するようなベクトルｖが発見される（但し、「＋」は２を法とする加法を示す）。次に、ｃがｃ＝Ｇｖ＋ｍとして計算される。この例示的な実施形態において、行列Ｇは、ベクトルｖがピーリング・アルゴリズムを使用することによって計算され得るように設計された確率分布から各列の重みを選択することによって構築される。別の例示的な実施形態において、行列Ｇは、代数コードの生成行列又はパリティ検査行列である。
【００４４】
一般に、式Ｈｃ＝ｍが選択されたコード行列、ベクトルｍ、及び所与の制約に関して非可解となる確率は、非ゼロである。図１８は、この確率を低減するために例示的な一実施形態によって実施され得る連結コーディングを使用する書き込みワード・コンピュータのブロック図である。この例示的な実施形態では、仮想メモリ毎に２つのバイナリ行列Ｈ１及びＨ２が書き込みプロセスと読み取りプロセスの間で共用される。所与の仮想メモリについて、書き込みプロセスは、Ｈ１ｃ１＝ｃ２、且つＨ２ｃ２がメモリに記憶されるメッセージと等しくなるようなベクトルｃ１及びｃ２を発見する。ワードｃ１はメモリに書き込まれる。読み取りプロセスは、Ｈ２Ｈ１ｃ１を計算することによってメッセージを再構築する。このような連結コーディングを使用すると、メモリ制約を満足しメッセージが復元可能となる適切な仮想書き込みベクトルｃを発見することができない確率を低減することが可能となる。
【００４５】
例示的な一代替実施形態では、この確率を低減するために、書き込みプロセス及び読み取りプロセスは、複数のＨ行列と、それらの所定の順番とを共用する。書き込みプロセスで使用される１番目のＨ行列からメモリの異種性と整合するベクトルｃを得ることができない場合、書き込みプロセスは、２番目のＨ行列を再試行する。この処理は、メモリの異種性と整合するベクトルｃが計算されるまで続けられる。書き込みが成功したステップのインデックスは、記憶対象のメタデータの一部となる。
【００４６】
図１９は、書き込みプロセス・エンコーダが、メッセージを符号化し異機種混合メモリ制約を満足するコードワードを生成する行列を事前定義された行列シーケンスから発見しようと試みる、例示的な一実施形態によって実施され得るプロセスを示す。ｃを作成するのに使用される行列インデックスは、先述のとおり記憶され得るメタデータである。読み取りプロセス・デコーダは、同じ行列シーケンスへのアクセスを有し、メタデータ・コード・インデックスを使用してどの行列を復号化に使用すべきかを判定する。
【００４７】
エントリ数が大きくなり得る複数のコード行列を使用することは、その空間的又は時間的複雑さの故に煩雑となる可能性がある。これは、擬似ランダムであってもよい一連の関数を単一の行列に適用することにより、複数の行列を生成することによって解決され得る。図２０は、書き込みプロセス・エンコーダが、図１９に示される事前定義された行列シーケンスを生成するために擬似ランダム関数発生器及びコード行列を使用する、例示的な一実施形態によって実施され得るプロセスを示す。デコーダは、同じ擬似ランダム関数発生器を共用する。使用可能な関数の一例は、Ｈの各列を置換する関数である。この場合、各関数は、Ｈの各列の異なる擬似ランダム列置換に対応する。本実施形態において、書き込みプロセス及び読み取りプロセスは、Ｈ行列を共用するとともに、Ｈ行列に関する擬似ランダム又は所定の順序の列置換を共用する。書き込みプロセスはまず、Ｈ行列に対する１回目の列置換で生成された行列を使用する。その結果メモリの異種性と整合するベクトルｃが得られた場合は、書き込みプロセスは、そのデータをＨ行列に対する２回目の列置換で生成された行列に書き換える。この処理は、メモリの異種性と整合するベクトルｃが計算されるまで続けられる。書き込みが成功したステップのインデックスは、記憶されるメタデータの一部となる。
【００４８】
例示的な一実施形態において、各メモリ・セルは、同じ数（例えばｎ）の抵抗レベルをサポートするが、抵抗レベルの範囲はセル毎に異なる。この場合、書き込みプロセスは、ｌ  ｍｏｄ  ｎ＝ｄとなるようなセルｉでサポートされるレベルｌを計算することにより、セルｉのデータ値ｄ（０≦ｄ≦ｎ−１）を符号化する。このレベルはセルに書き込まれる。読み取りプロセスは、データ値をｄ＝ｌ  ｍｏｄ  ｎとして再構築する。
【００４９】
例示的な一実施形態において、読み取りプロセスは、追加的に破壊読み出しを実行することによってセルの状態を判定することができる。この処理は、適切なプログラミング・パルスを使用して各セル・ブロックをそれぞれのＳＥＴレベル及びＲＥＳＥＴレベルにプログラミングするステップと、データ読み取り後のＳＥＴ抵抗レベル及びＲＥＳＥＴ抵抗レベルを測定するステップと、を含む。これに続いてデータを各セルに再書き込みするステップが実行される。一実施形態において、書き込みプロセスは、抵抗レベルのバイナリ分解を使用してデータをセルの異種性と整合する形でメモリ・セルに書き込む。読み取りプロセスは、セル状態に関する知識を使用して書き込みデータを正しく変換処理する。
【００５０】
図２１は、読み取りプロセス及び書き込みプロセスが共に各セルでサポートされる抵抗レベルを測定可能である場合に例示的な一実施形態によって実施され得るＰＣＭメモリにデータを記憶するシステムのブロック図である。図２１に示されるシステムは、メモリ・セル・ブロックを含む異機種混合ＰＣＭメモリ２１０２と、異機種混合ＰＣＭメモリ２１０２の書き込み時の抵抗レベルを判定する抵抗範囲テスタ２１０４と、書き込みデータを受け取り、メモリ２１０２に記憶されるＰＣＭ書き込みワードを生成するエンコーダ２１０６と、ＰＣＭ読み取りワードを異機種混合ＰＣＭメモリ２１０２から受け取り、読み取りデータを生成するデコーダ２１１２と、読み取り時の抵抗レベルを判定する抵抗範囲テスタ２１１０と、を含む。異機種混合ＰＣＭメモリ２１０２に対する例示的な書き込みプロセス２１０８は、抵抗範囲テスタ２１０４と、エンコーダ２１０６と、を利用する。異機種混合ＰＣＭメモリ２１０２に対する例示的な読み取りプロセス２１１４は、デコーダ２１１２と、抵抗範囲テスタ２１１０と、を利用する。例示的な一実施形態において、抵抗範囲テスタ２１０４及び２１１０は組み合わされる。
【００５１】
図２２は、読み取りプロセス及び書き込みプロセスが共に各セルでサポートされる抵抗レベルを測定可能である場合に異機種混合ＰＣＭメモリ２１０２にデータを書き込む例示的なシステムのブロック図である。図２２は、例示的な一実施形態によって実施され得るエンコーダ２１０６をより詳細に示す図である。例示的なエンコーダ２１０６は、バイナリ・メモリ制約コンピュータ２２０２と、メッセージ・ビット書き込みブロック２２０４と、データ・バイナライザ２２０８と、ＰＣＭワード・ライタ２２０６と、を含む。図２２のシステムによって実施され得る例示的な書き込みプロセスは、異機種混合メモリ・セル・ブロックに対応する書き込みデータ及び書き込みアドレスを受け取るステップを含む。メモリ・セルの物理特性が判定される。書き込みデータは、それぞれ１つの仮想メモリと関連付けられる複数の部分書き込みデータ・ベクトルに分割される。この処理は、仮想メモリ毎に識別されるメモリ制約に基づいて行われる。各仮想メモリについて以下のステップ、即ち、メモリ・セルの物理特性、メモリ・セル・ブロックに関してそれ以前に生成されたすべての制約ベクトル、及びメモリ・セル・ブロックに関してそれ以前に生成されたすべての仮想書き込みベクトルに応答して、仮想メモリ内のメモリ・セルを記述する制約ベクトルを生成するステップ（例えばバイナリ・メモリ制約コンピュータ２２０２によって実行される）と、制約ベクトル及び部分書き込みデータに応答して仮想書き込みベクトルを計算するステップ（例えばメッセージ・ビット書き込みブロック２２０４によって実行される）と、が実行される。仮想書き込みベクトルは単純に、ある値にスタックされた各仮想メモリ・セルをスキップしながら、部分書き込みデータの各ビットを仮想メモリに順番に書き込むことによって生成される。各仮想書き込みベクトルは、ＰＣＭワード・ライタ２２０６によってメモリ・セル・ブロックに出力される書き込みワードに組み合わされる。
【００５２】
図２３は、読み取りプロセス及び書き込みプロセスが共に各セルでサポートされる抵抗レベルを測定可能である場合に例示的な一実施形態によって実施され得る異機種混合ＰＣＭメモリ２１０２からデータを読み取るシステムのブロック図である。図２３は、例示的な一実施形態によって実施され得る例示的なデコーダ２１１２をより詳細に示す図である。例示的なデコーダ２１１２は、ＰＣＭワード・リーダ／リライタ２３０６と、データ・バイナライザ２３０４と、バイナリ・メモリ制約コンピュータ２３０２と、メッセージ・ビット読み取りブロック２３０８と、読み取りデータ・ジェネレータ２３１０と、を含む。図２３のシステムによって実施され得る例示的な読み取りプロセスは、メモリ・セル・ブロックから読み取りワードを受け取るステップ（例えばＰＣＭワード・リーダ／リライタ２３０６によって実行される）と、メモリ・セルの物理特性を判定するステップ（例えば抵抗範囲テスタ２１１０によって実行される）と、を含む。読み取りワードは、物理特性に基づいて複数の仮想読み取りベクトルに分割される（例えばバイナリ・メモリ制約コンピュータ２３０２によって実行される）。各仮想メモリについて以下のステップ、即ち、メモリ・セルの物理特性、メモリ・セル・ブロックに関してそれ以前に生成されたすべての制約ベクトル、及びメモリ・セル・ブロックに関してそれ以前に生成されたすべての仮想読み取りベクトルに応答して、仮想メモリ内のメモリ・セルを記述する制約ベクトルを生成するステップと、制約ベクトルに応答して部分読み取りデータ・ベクトルを生成するステップ（例えばメッセージ・ビット読み取りブロック２３０８によって実行される）と、が実行される。部分読み取りベクトルは単純に、各ビットを仮想メモリから順番に読み取り、ある値にスタックされた各仮想メモリ・セルから読み取られたビットを破棄することによって生成される。各部分読み取りデータ・ベクトルは、読み取りデータ・ジェネレータ２３１０によって読み取りデータに組み合わされ、読み取りデータが出力される。
【００５３】
例示的な一実施形態において、各セルは、書き込み可能であるが書き込み時間及び電力のコストが高くなる可能性があるレベル・サブセットを有する。例示的な一実施形態において、書き込みプロセスは、図１に記載される方法を実行するが、結果として得られるベクトルｃが他のレベルと整合しない場合は高いコスト・レベルを使用する。別の例示的な実施形態において、書き込みプロセスは、所与のコスト制約にとって最適な書き込み対象レベル・セットを計算し、その後図１の方法を使用してデータを各レベルに書き込む。いずれの実施形態でも、読み取りプロセスは図２の方法を使用する。
【００５４】
例示的な一実施形態において、各セル・レベルは異種性に加えてノイズも含む。当業界で知られるように、ノイズとは、メモリの物理特性の経時的な変化を指す。書き込みプロセスは、１組のバイナリ仮想メモリを利用して図１に記載されるようなセル・レベルの２値化を実行することができる。続いて、書き込みプロセスは、各仮想メモリの書き込みを行うためにネスト化コードを使用する。例示的な一実施形態において、書き込みプロセス及び読み取りプロセスは、ＨＴ＝［Ｈ１Ｔ｜Ｈ２Ｔ］となるような行列Ｈ１及びＨを共用する。ここで、ＨＴは行列Ｈの転置を表す。書き込みプロセスは、Ｈ２ｃが記憶対象のメッセージとなり、ｃがメモリの異種性を満足し、且つＨ１ｃが０となるようなベクトルｃを計算する。雑音を含むベクトルｃ’が与えられた場合、読み取りプロセスは、ｃがｃ’と（例えばハミング距離の点で）近く、且つＨ１ｃ＝０となるようなベクトルｃを計算する。次に、読み取りプロセスは、メッセージをＨ２ｃとして再構築する。行列Ｈ１及びＨ２は、ＨがＢＣＨやリード・ソロモン・コードのような代数コードの生成行列又はパリティ検査行列となるような行列とすることができる。
【００５５】
図２４は、例示的な一実施形態によって実施され得る、ノイズを含む異機種混合メモリにデータを記憶するバイナリ・ワード・コンピュータ及びバイナリ・ワード・デコーダを示す。図２４に示されるデコーダは、行列Ｈ１を使用してエラー訂正を実行し、ｃを検索する。次に、メッセージｍがｍ＝Ｈ２ｃとして計算される。
【００５６】
例示的な一実施形態において、メモリに記憶するために書き込みプロセスによって生成されるメタデータは、行列Ｈに関する部分的な情報を含む。一例として、書き込みプロセスは、複数の可能なＨ行列のうちの１つを使用する選択肢を有し、部分的な情報は、読み取りプロセスが書き込みプロセスで使用されたＨ行列を区別することを可能にするデータで構成される。別の例として、部分的な情報は、受信器が書き込みプロセスで使用されたＨ行列を再構築することを可能にするデータで構成され、Ｈ行列は、読み取りプロセスと書き込みプロセスの両方で擬似ランダムに生成される。
【００５７】
例示的な一実施形態において、情報の記憶に使用される物理特性は、多次元である。例示的な一実施形態では、複数の電圧測定値を使用してＰＣＭメモリ要素に記憶されている情報が読み取られ、セル抵抗は電圧毎に異なる。複数の電圧信号間で組み合わされたセル応答は、情報の記憶に使用される多次元値を形成する。メモリは、各次元の各セルでサポートされる値の範囲がセル毎に異なる点で異機種混合である。図２５及び図２６は、異機種混合多次元メモリ制約が１組の仮想バイナリ・メモリに対する等価な１次元制約に分解され得る例示的な一実施形態を示す。本例において、図２５には５つのセル２５０２を有するメモリ・ブロックが示されており、各セルを特徴付ける抵抗値は２次元とされている。セル１は、第１次元では３つのレベルを、第２次元では１つのレベルをサポートする。セル２は、第１次元では１つのレベルを、第２次元では２つのレベルをサポートする。セル３は、第１次元では２つのレベルを、第２次元では２つのレベルをサポートする。セル４は、第１次元では４つのレベルを、第２次元では２つのレベルをサポートする。セル５は、第１次元では４つのレベルを、第２次元では１つのレベルをサポートする。多次元値の全体的な範囲は、すべての２Ｄ値をカバーする２次元値の任意の順序付けを選択することによって等価な１次元範囲に変換することができる。例示的な順序付けは、表２５０４に示される。この場合、各セルは、等価な１Ｄレベル範囲に由来するレベル・セットをサポートする。表２５０６は、異機種混合メモリ・ブロック２５０２の各セルでサポートされるレベルを、表２５０４の場合と同様に１Ｄ値に変換して示す。あるセットでサポートされる１Ｄレベル・セットは、非隣接セットであることも隣接セットであることもあることに留意していただきたい。例えば、セル１は、非隣接レベル・セットである１Ｄレベル０、２、４をサポートする。図２６には、このような多次元値を有する異機種混合メモリが、それぞれの仮想セルに対する制約が計算された仮想バイナリ・メモリにどのように分解され得るかが示されている。合計８つの１Ｄレベルが存在するので、３つの仮想バイナリ・メモリが必要となる。バイナリ・メモリ１  ２６０２内の仮想セル１及び５は、０でスタックされるように制約される。バイナリ・メモリ２  ２６０４内の仮想セル２は、０でスタックされるように制約され、バイナリ・メモリ２  ２６０４内の他のセルは、無制約とされる。バイナリ・メモリ３  ２６０６では、仮想セル１、２、及び３は様々な制約を有する。これらの制約が計算されると、先述の各種技法を使用してこのメモリに情報が効率的に記憶される。
【００５８】
例示的な一実施形態において、セルの物理特性に関する情報は、部分的にしか利用することができない。この状況は、例えばすべてのセルの一部の物理特性しか利用可能でない場合に生じる可能性がある。この場合、上述の各種技法は、メモリに書き込まれるデータ・ベクトルが既知の部分的なセル情報から導出される制約を満足するような形で使用される。
【００５９】
例示的な一実施形態において、メモリ・セルの異種性によって課される制約セットは、所与のセル又は所与のセルの所与のビットプレーンに記憶可能な文字の制約（バイナリ又は非バイナリ）の形で明示されるが、この制約はセル及びビットプレーン毎に異なる。
【００６０】
上述の各種技法は、メモリ要素が情報を記憶する上で抵抗以外の物理特性を利用し、前記物理特性がメモリ要素毎の可変性を示す場合にも使用され得る。これらの技法は、セルの一部又は全部が異機種混合セルであるメモリへの効率的なデータ記憶を可能にするので、メモリ・チップの歩留まりを改善するのにも利用することができる。ナイーブなシステムでは、事前指定された一定のメモリ・レベル範囲をサポートしないセルが一定の比率を超えるメモリ・チップがあれば、それらを破棄する必要が生じる可能性がある。その結果歩留まりが低下する恐れがある。一方、本明細書に記載される技法を使用すれば、事前指定されたメモリ・レベル範囲をサポートしないセルをも情報の記憶に使用することが可能となる。それ故、破棄の必要が生じるチップ数が減少し、それによって歩留まりが改善される。
【００６１】
技術的な効果及び利点としては、セル毎に記憶可能なデータのタイプ及び量に影響を及ぼす任意の種類の異種性によって各要素が特徴付けられる任意のメモリに情報を記憶することが可能となる能力が挙げられる。これにより、部分的に欠陥のあるメモリにデータを記憶することが企図された従来の手法と比較して高い柔軟性がもたらされる。例示的な諸実施形態は、記憶可能な情報量を増大させることによって非常に効率的なメモリ記憶を可能にする。例示的な諸実施形態は、不完全な可変物理特性を示すセルを有するメモリ上で、そのようなチップを破棄する代わりに効率的なデータ記憶を可能にすることにより、メモリの歩留まりを高めるのにも利用することができる。
【００６２】
本明細書に示される各フロー図は、単なる一例にすぎない。各図面又は各図面に記載されるステップ（又は動作）には、本発明の趣旨から逸脱しない限り様々な変更を施すことができる。例えば、各ステップを異なる順序で実行することも、ステップの追加、削除、あるいは修正を行うことも可能である。これらの変形形態はすべて各請求項に記載される発明の一部と見なされる。
【００６３】
上述のとおり、本発明の諸実施形態は、コンピュータ実装プロセス及びそれらのプロセスを実行する装置の形で実施することができる。本発明の諸実施形態は、フレキシブル・ディスク、ＣＤ‐ＲＯＭ、ハード・ドライブ、他の任意のコンピュータ読み取り可能な記憶媒体等、有形の媒体内で実行される命令を含むコンピュータ・プログラム・コードであって、それらがコンピュータにロードされ、コンピュータによって実行されたときに当該コンピュータが本発明を実施する装置となる、コンピュータ・プログラム・コードの形で実施することもできる。本発明は、例えばストレージ・メディアに記憶されるものであれ、コンピュータへのロード又はコンピュータによる実行あるいはその両方が行われるものであれ、電気配線又は電気ケーブル、光ファイバ、電磁放射等、何らかの伝送媒体を介して伝送されるものであれ、それらがコンピュータにロードされ、コンピュータによって実行されたときに当該コンピュータが本発明を実施する装置となる、コンピュータ・プログラム・コードの形で実施することもできる。当該コンピュータ・プログラム・コードが汎用マイクロプロセッサに実装された場合、その汎用マイクロプロセッサは、当該コンピュータ・プログラム・コードの各セグメントによって特定の論理回路を形成するように構成される。
【００６４】
以上、本発明の好ましい実施形態について説明したが、当業者なら現在及び将来にわたって各請求項の範囲に含まれる様々な改良及び機能拡張を施すことができることが理解されるだろう。各請求項は、当初の記載の発明の適切な保護を維持するものと解釈すべきである。
【符号の説明】
【００６５】
３０２  異機種混合メモリ
３０４  テスタ
３０６、４０６、２１０６  エンコーダ
３０８、４０８、２１１２  デコーダ
３１０、４１０  共用コード
３１２、４１２、２１０８  書き込みプロセス
３１４、４１４、２１１４  読み取りプロセス
４０２、２１０２  異機種混合ＰＣＭメモリ
４０４、２１０４、２１１０  抵抗範囲テスタ
５０２、１１０２、２２０２、２３０２  バイナリ・メモリ制約コンピュータ
５０４、２２０６  ＰＣＭワード・ライタ
５０６、１１０４  コード・セレクタ
５０８、１１０６  バイナリ書き込みワード・コンピュータ
５１０、１１０８、２２０８、２３０４  データ・バイナライザ
６０２  ＰＣＭワード・リーダ
６０４  ＰＣＭデータ・バイナライザ
６０６、１１１０  バイナリ・ワード・デコーダ
６０８、２３１０  読み取りデータ・ジェネレータ
７０２、８０２、９０２、１００２  メモリ・ブロック
７０４、８０４、９０４  ビットプレーン
７０８、７１０、８０８、８１０、９０８、９１０、２６０２、２６０４、２６０６  バイナリ・メモリ
１００４  ターナリ・シンボル・プレーン
１００８、１０１０  ターナリ・メモリ
１５０２  バイナライザ
１５０４、１５０８、１５１２  制約コンピュータ
２１１２  デコーダ
２２０４  メッセージ・ビット書き込みブロック
２３０６  ＰＣＭワード・リーダ／リライタ
２３０８  メッセージ・ビット読み取りブロック
【図１】
2010262730.tif 000003
【図２】
2010262730.tif 000004
【図３】
2010262730.tif 000005
【図４】
2010262730.tif 000006
【図５】
2010262730.tif 000007
【図６】
2010262730.tif 000008
【図７】
2010262730.tif 000009
【図８】
2010262730.tif 000010
【図９】
2010262730.tif 000011
【図１０】
2010262730.tif 000012
【図１１】
2010262730.tif 000013
【図１２】
2010262730.tif 000014
【図１３】
2010262730.tif 000015
【図１４】
2010262730.tif 000016
【図１５】
2010262730.tif 000017
【図１６】
2010262730.tif 000018
【図１７】
2010262730.tif 000019
【図１８】
2010262730.tif 000020
【図１９】
2010262730.tif 000021
【図２０】
2010262730.tif 000022
【図２１】
2010262730.tif 000023
【図２２】
2010262730.tif 000024
【図２３】
2010262730.tif 000025
【図２４】
2010262730.tif 000026
【図２５】
2010262730.tif 000027
【図２６】
2010262730.tif 000028