(57)【特許請求の範囲】
【請求項１】
データ・ワードおよび検索ワードを受信するように構成された受信ユニットと、
前記データ・ワードをコード・ワードに変換するとともに、メモリ検索動作の間に前記検索ワードを検索コードに変換するように構成された符号化ユニットであって、該データ・ワードが該検索ワードとの間に少なくとも１ビットの不一致がある場合に、該コード・ワードと該検索コードとの間のハミング距離が値が２以上の所定の閾値よりも大きくなるように変換する、符号化ユニットと、
前記コード・ワードを記憶するための複数のメモリ・セルであって、各前記メモリ・セルは、ビット線と照合線との間で並列回路を構成し、直列回路においてアクセス・デバイスに電気的に結合されたメモリ要素を含み、該メモリ要素が２つの相補的な抵抗の１つとして二進データを記憶するように構成され、該アクセス・デバイスが検索線に電気的に結合される、複数のメモリ・セルと、
前記検索線に電気的に結合され、各前記メモリ・セルの前記アクセス・デバイスにバイアスをかけるように構成されたバイアス・ユニットと、
前記照合線を通る総合電流を測定するように構成された照合ユニットと
を含む 
連想メモリを動作させるための方法であって、
ビット長Ｌのデータ・ワードを受信するステップと、
受信した前記データ・ワードをＬよりも長いビット長のコード・ワードに変換するステップと、
前記コード・ワードの二進データを前記メモリ要素に記憶するステップであって、２つの相補的な抵抗の１つとして二進データを記憶するステップと、
前記メモリ検索動作の間に前記データ・ワードと比較するためにビット長Ｌの検索ワードを受信するステップと、
前記メモリ検索動作の間に前記検索ワードを前記コード・ワードと同じビット長の検索コードに変換するステップと、
前記メモリ検索動作の間に、前記検索コード内の検索ビットに対応する前記コード・ワード内の記憶ビットを表わす前記メモリ要素に接続された前記アクセス・デバイスにバイアスをかけることによって、該検索ビットに関連付けられた抵抗の大きさに対して相補的な大きさの実効抵抗を該アクセス・デバイスに与えるステップと、
前記メモリ検索動作の間に前記ビット線に電圧を印加して前記照合線を通る総合電流を測定するステップと、
を含む、方法。
【請求項２】
前記コード・ワードが固定ハミング重みを有するコード・ワード・セットから求められる、請求項１に記載の方法。
【請求項３】
前記コード・ワードが、前記データ・ワードと、前記データ・ワード内のゼロの個数と、を含み、前記個数が二進数系を用いて符号化されている、請求項１に記載の方法。
【請求項４】
前記データ・ワードが第１の二進値および第２の二進値として表される複数の数字を含み、
前記コード・ワードが、前記データ・ワードと、前記データ・ワード内の前記第１の二進値の符号化した発生数と、を含み、前記第１の二進値の前記符号化した発生数が固定ハミング重みを有する符号化数セットから求められる、請求項１に記載の方法。
【請求項５】
前記データ・ワードが第１の二進値および第２の二進値として表される複数の数字を含み、
前記コード・ワードが、前記データ・ワードと、前記データ・ワード内の前記第１の二進値の符号化した発生数と、前記データ・ワード内の前記第１の二進値の前記符号化した発生数のビット補数と、を含む、請求項１に記載の方法。
【請求項６】
前記データ・ワードが前記検索ワードと一致しない場合、前記メモリ検索動作の間に、前記並列回路に沿って少なくともｄ個の前記メモリ・セルが低抵抗経路を生成し、ここでｄは正の整数であることを更に含む、請求項１に記載の方法。
【請求項７】
前記コード・ワードが同一ハミング重みの二進ベクトル・セットから選択され、前記二進ベクトルが少なくとも２ｄであるハミング距離を有する、請求項６に記載の方法。
【請求項８】
前記メモリ検索動作の間に前記データ・ワードが前記検索ワードと一致しない場合、前記検索動作の間に前記メモリ・セルの少なくとも１つを通る照合電流が少なくとも２つの電流範囲のうち起こり得る最も高い電流範囲内にあることを保証するように前記コード・ワードが構成されている、請求項１に記載の方法。
【請求項９】
前記総合電流が下電流閾値よりも大きく上電流閾値よりも小さい場合に一致を示すステップと、
を更に含む、請求項１に記載の方法。
【請求項１０】
連想メモリ・デバイスであって、
ビット長Ｌのデータ・ワードを受信するとともに、メモリ検索動作の間に該データ・ワードと比較するビット長Ｌの検索ワードを受信するように構成された受信ユニットと、
前記データ・ワードをＬよりも長いビット長のコード・ワードに変換するとともに、メモリ検索動作の間に前記検索ワードを該コード・ワードと同じ長さの検索コードに変換するように構成された符号化ユニットであって、該データ・ワードが該検索ワードとの間に少なくとも１ビットの不一致がある場合に、該コード・ワードと該検索コードとの間のハミング距離が値が２以上の所定の閾値よりも大きくなるように変換する、符号化ユニットと、
前記コード・ワードを記憶するための複数のメモリ・セルであって、各前記メモリ・セルは、ビット線と照合線との間で並列回路を構成し、直列回路においてアクセス・デバイスに電気的に結合されたメモリ要素を含み、該メモリ要素が２つの相補的な抵抗の１つとして二進データを記憶するように構成され、該アクセス・デバイスが検索線に電気的に結合される、複数のメモリ・セルと、
前記検索線に電気的に結合され、各前記メモリ・セルの前記アクセス・デバイスにバイアスをかけるように構成されたバイアス・ユニットであって、メモリ検索動作の間に、前記検索コード内の検索ビットに対応する前記コード・ワード内の記憶ビットを表わす前記メモリ要素に接続された前記アクセス・デバイスにバイアスをかけることによって、該検索ビットに関連付けられた抵抗の大きさに対して相補的な大きさの実効抵抗を該アクセス・デバイスに与える、バイアス・ユニットと、
前記メモリ検索動作の間に前記ビット線に電圧を印加して前記照合線を通る総合電流を測定するように構成された照合ユニットと
を含む、
連想メモリ・デバイス。
【請求項１１】
前記コード・ワードが固定ハミング重みを有するコード・ワード・セットから求められる、請求項１０に記載の連想メモリ・デバイス。
【請求項１２】
前記データ・ワードが第１の二進値および第２の二進値として表される複数の数字を含み、
前記コード・ワードが、前記データ・ワードと、前記データ・ワード内の前記第１の二進値の符号化した発生数と、を含み、前記第１の二進値の前記符号化した発生数が固定ハミング重みを有する符号化数セットから求められる、請求項１０に記載の連想メモリ・デバイス。
【請求項１３】
前記データ・ワードが第１の二進値および第２の二進値として表される複数の数字を含み、
前記コード・ワードが、前記データ・ワードと、前記データ・ワード内の前記第１の二進値の符号化した発生数と、前記データ・ワード内の前記第１の二進値の前記符号化した発生数のビット補数と、を含む、請求項１０に記載の連想メモリ・デバイス。
【請求項１４】
前記検索動作の間に前記データ・ワードが前記検索ワードと一致しない場合、前記並列回路に沿って少なくともｄ個（ｄは正の整数）の前記メモリ・セルが低抵抗経路を生成することを前記符号化ユニットが保証する、請求項１０に記載の連想メモリ・デバイス。
【請求項１５】
前記コード・ワードが同一ハミング重みの二進ベクトル・セットから選択され、前記二進ベクトルが少なくとも２ｄであるハミング距離を有する、請求項１４に記載の連想メモリ・デバイス。
【請求項１６】
前記コード・ワードが、前記データ・ワードと、前記データ・ワード内のゼロの個数と、を含み、前記個数が二進数系を用いて符号化されている、請求項１０に記載の連想メモリ・デバイス。
【請求項１７】
前記検索動作の間に前記総合電流が前記閾値未満である場合、前記照合ユニットが前記メモリ・セルのメモリ位置を示すように更に構成されている、請求項１０に記載の連想メモリ・デバイス。
【請求項１８】
前記データ・ワードが前記検索ワードと一致しない場合、前記検索動作の間に前記メモリ・セルの少なくとも１つを通る照合電流が前記検索動作の間の少なくとも２つの電流範囲のうち起こり得る最も高い電流範囲内にあることを保証するように前記コード・ワードが構成されている、請求項１０に記載の連想メモリ・デバイス。
【請求項１９】
前記データ・ワードが前記検索ワードと一致しない場合、前記コード・ワードが前記メモリ検索動作の間に前記照合線を通る電流を大きくするように構成されている、請求項１０に記載の連想メモリ・デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は連想メモリ（contentaddressable memory）に関し、更に具体的には、抵抗性メモリ要素を用いた連想メモリにおいてデータを記憶および検索するための符号化技法に関する。
【背景技術】
【０００２】
連想メモリ（ＣＡＭ：Contentaddressable memory）は、高速検索用途において用いられるタイプのコンピュータ・メモリである。ほとんどのＣＡＭデバイスでは、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）として構成されたトランジスタと、照合動作のための追加のトランジスタ回路と、が用いられる。典型的に、これらのＣＡＭデバイスにおいては、メモリ・アレイにおける個々のメモリ・セルを動作させプログラミングするために、検索線アクセス・トランジスタおよびワード線アクセス・トランジスタが必要である。検索線アクセス・トランジスタおよびワード線アクセス・トランジスタは、多くの場合、電力集約型の大駆動電界効果トランジスタ（ＦＥＴ）から成る。
【０００３】
また、ＣＡＭデバイスにおいて情報を記憶するために相変化材料を用いることができる。相変化材料を操作すると異なる相または状態とすることができ、各相が異なるデータ値を表す。一般に、各相は異なる電気的特性を示す。アモルファス相および結晶相は、電気抵抗に検出可能な差があるために、二進データ（１および０）の記憶に用いられる典型的な２つの相である。具体的には、アモルファス相は結晶相よりも抵抗が高い。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】ThomasCover、「Enumerative source encoding」、IEEE Transactions on Information Theory １９：７３〜７７（１９７３年）
【非特許文献２】M.Blaum、「Codes for Detecting and CorrectingUnidirectional Errors」、IEEE Computer Soc. Press（カリフォルニア州ロスアラミトス、１９９３年）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＣＡＭ設計において相変化メモリ等の抵抗性メモリ要素を用いる際の１つの問題は、大きいデータ・ワードをＣＡＭに記憶し検索する際のセンス・マージンが小さいことである。記憶したデータ・ワードと検索ワードとの間に単一の不一致ビットがあると、充分な照合電流偏差が検出されない場合がある。このため、抵抗性メモリ・セルを有する従来のＣＡＭ設計では、記憶ワード当たりのビット数が制限されている。本発明は、この制限および、抵抗性メモリ要素を用いたＣＡＭの他の欠点に対処するものである。
【課題を解決するための手段】
【０００６】
本発明の一態様は、連想メモリを動作させるための方法である。この方法は、並列回路において複数のメモリ・セルを用意することを含む。メモリ・セルは照合線に電気的に結合されている。照合線は、メモリ検索動作の間にメモリ・セルからの総合電流を受信するように構成されている。受信動作は、メモリ・セルに記憶するためにビット長Ｌのデータ・ワードを受信する。変換動作は、データ・ワードをＬよりも大きいビット長のコード・ワードに変換して、コード・ワードの少なくとも１ビットがデータ・ワードの少なくとも２ビットに依存するようにする。データ・ワードが検索ワードと一致しない場合、メモリ検索動作の間に、コード・ワードによって、異なる二進値を有する少なくとも２つのコード・ワード・ビットの不一致を保証する。記憶動作は、コード・ワードをメモリ・セルに記憶する。
【０００７】
本発明によって想定される連想メモリを動作させるための別の方法は、並列回路において照合線に電気的に結合された複数のメモリ・セルを用意することを含む。照合線は、メモリ検索動作の間にメモリ・セルからの総合電流を受信するように構成されている。受信動作は、メモリ・セルに記憶するためにビット長Ｌのデータ・ワードを受信する。変換動作は、データ・ワードをビット長Ｍのコード・ワードに変換する。ＭはＬよりも大きい。変換動作によって、コード・ワードの少なくとも１ビットがデータ・ワードの少なくとも２ビットに依存することを確実とする。記憶動作は、コード・ワードをメモリ・セルに記憶する。別の受信動作は、メモリ検索動作の間にデータ・ワードと比較するためにビット長Ｌの検索ワードを受信する。第２の変換動作は、検索ワードをビット長Ｍの検索コードに変換して、データ・ワードと検索ワードとの間に少なくとも１ビットの不一致がある場合にコード・ワードと検索コードとの間のハミング距離が所与の閾値よりも大きいようにする。
【０００８】
本発明の更に別の態様は、連想メモリ・デバイスである。このデバイスは、並列回路において複数のメモリ・セルを含む。メモリ・セルは照合線に電気的に結合されている。照合線は、検索動作の間にメモリ・セルからの総合電流を受信するように構成されている。受信ユニットは、長さＬのデータ・ワードを受信するように構成されている。符号化ユニットは、メモリ・セルに記憶するためにデータ・ワードをＬよりも長いコード・ワードに変換するように構成されている。この変換は、コード・ワードの少なくとも１ビットがデータ・ワードの少なくとも２ビットに依存するようになっている。データ・ワードが検索ワードと一致しない場合、メモリ検索動作の間に、コード・ワードによって、異なる二進値を有する少なくとも２つのコード・ワード・ビットの不一致を保証する。
【０００９】
本発明の更に別の態様は、連想メモリ・デバイスである。このデバイスは、並列回路において複数のメモリ・セルを含む。メモリ・セルは照合線に電気的に結合されている。照合線は、検索動作の間にメモリ・セルからの総合電流を受信するように構成されている。受信ユニットは、長さＬのデータ・ワードを受信するように構成されている。符号化ユニットは、メモリ・セルに記憶するためにデータ・ワードをＬよりも長いコード・ワードに変換するように構成されている。この変換は、コード・ワードの少なくとも１ビットがデータ・ワードの少なくとも２ビットに依存するようになっている。データ・ワードが検索ワードと一致しない場合、コード・ワードがメモリ検索動作の間に照合線を通る電流を大きくするように構成されている。
【００１０】
本発明の更に別の態様は、タンジブル（tangible）なメモリにおいて具現化されたコンピュータ・プログラムである。コンピュータ・メモリを動作させるためにタンジブルなメモリにプログラム・コードが結合されている。コンピュータ・メモリは、並列回路において複数のメモリ・セルを含む。メモリ・セルは照合線に電気的に結合されている。照合線は、メモリ検索動作の間にメモリ・セルからの総合電流を受信するように構成されている。コンピュータ読み取り可能プログラム・コードは、メモリ・セルに記憶するためにビット長Ｌのデータ・ワードを受信することと、データ・ワードをＬよりも長いコード・ワードに変換し、コード・ワードの少なくとも１つのビットがデータ・ワードの少なくとも２つのビットに依存するようにし、データ・ワードが検索ワードと一致しない場合、メモリ検索動作の間に、コード・ワードによって、異なる二進値を有する少なくとも２つのコード・ワード・ビットの不一致を保証することと、コード・ワードをメモリ・セルに記憶することと、をコンピュータ・プログラムに実行させるように構成されている。
【００１１】
本発明と見なされる主題は、明細書の末尾にある特許請求の範囲において具体的に指摘され明確に特許請求されている。本発明の前述およびその他の目的、特徴、および利点は、添付図面と関連付けて以下の詳細な説明を読むことから明らかとなろう。
【図面の簡単な説明】
【００１２】
【図１】本発明によって想定されるメモリ・デバイスの一実施形態を示す。
【図２】本発明によって想定されるＣＡＭのための例示的なプログラミング・プロセスのフローチャートを示す。
【図３】本発明によって想定されるＣＡＭの例示的な検索プロセスのフローチャートを示す。
【図４】本発明によって想定されるＣＡＭデバイスの別の実施形態を示す。
【図５】本発明の１つ以上の態様を組み込んだ製造品の一実施形態を示す。
【発明を実施するための形態】
【００１３】
本発明の実施形態を参照して本発明について説明する。本発明の説明全体を通して図１から図５を参照する。
【００１４】
図１は、本発明によって想定される連想メモリ（ＣＡＭ）１０２の一例を示す。ＣＡＭ１０２は、メモリ・アレイにおいて複数のメモリ・セル１０４を含む。個別の各メモリ・セル１０４は、直列回路でアクセス・デバイス１１０に電気的に結合されたメモリ要素１０８を含む。
【００１５】
本発明の一実施形態においては、メモリ・セル１０４のメモリ要素１０８は、２つの抵抗値の一方を記憶することができる相変化材料から成る。かかる相変化材料の一例はゲルマニウム−アンチモン−テルル（ＧＳＴ）である。このため、メモリ要素は２つの状態の一方すなわち結晶状態またはアモルファス状態にプログラミングすることができる。
【００１６】
結晶状態は記憶した二進０値を表すことができ、アモルファス状態は記憶した二進１値を表すことができる。結晶状態においては、メモリ要素は比較的低い抵抗（すなわち５Ｋオーム）を示す。一方、アモルファス状態においては、メモリ要素は比較的高い抵抗（すなわち５００Ｋオーム）を示す。メモリ要素１０８のために様々な記憶技術を用いることができ、相変化材料の例は単に例示に過ぎないことは、当業者には認められよう。例えば、メモリ要素１０８は、浮動ゲート・トランジスタ、抵抗性メモリ要素、磁気抵抗ランダム・アクセス・メモリ（ＭＲＡＭ）、または電荷トラッピング・デバイスから成るものとすることができる。
【００１７】
相変化メモリにおいてメモリ要素の状態を変化させるためには、材料を融点まで加熱し、次いで材料を冷却して可能な状態の１つとすることが必要である。メモリ要素に電流を通すと、オーム加熱が起こり、相変化材料が溶ける。メモリ要素において相変化材料を溶かして徐々に冷却すると、時間の経過によって相変化材料が結晶状態を形成する。メモリ要素において相変化材料を溶かして急激に冷却すると、相変化材料は急冷されてアモルファス状態にする。
【００１８】
アクセス・デバイス１１０は、第１の端子１１６と第２の端子１１８との間の電流を制御する共通端子１１４を含む。共通端子は検索線１２２に結合され、これによってメモリ要素１０８を通る電流を制御する。アクセス・デバイス１１０の第１の端子１１６はメモリ要素１０８に電気的に結合されている。本発明の特定の実施形態において、アクセス・デバイス１１０は、金属酸化膜半導体電界効果トランジスタ（ＭＯＳＦＥＴ）、バイポーラ接合トランジスタ（ＢＪＴ）、およびダイオードとすることができる。本発明の精神および範囲から逸脱することなく他のアクセス・デバイスを使用可能であることも想定される。
【００１９】
図示のように、メモリ要素１０８はビット線１１２に電気的に結合されている。ビット線１１２を用いて、メモリ要素１０８を所望の状態にプログラミングすることおよびメモリ要素１０８の状態を読み出すことの双方が可能であることは、当業者には認められよう。例えばプログラミングの間、ビット線１１２を通してメモリ要素１０８に高電流を流し、これによって相変化材料はオーム加熱で溶ける。メモリ検索動作の間、ビット線１１２を通してメモリ要素１０８に低電流を流す。検索動作電流は、相変化材料を溶かすのには不充分であるが、メモリ要素１０８の両端の電圧降下を検出するには充分な大きさである。
【００２０】
アクセス・デバイス１１０の第２の端子１１８は、照合線１０６に電気的に結合されている。プログラミングの間、照合線１０６はメモリ要素１０８を通る比較的高い電流をシンク（またはソース）するように機能し、これによって相変化材料が溶ける。メモリ検索動作の間、照合線１０６はメモリ要素１０８を通して照合回路１２０まで電流を通す。
【００２１】
メモリ・セル１０４群はワード１２８として共に結線される。各ワード１２８は、ビット線１１２と照合線１０６との間で並列回路に構成されたメモリ・セル１０４を含む。このため、特定のワード１２８をプログラミングするためには、適切なビット線１１２および照合線１０６の対に通電する必要がある。
【００２２】
メモリ・デバイス１０２のプログラミング動作は、ＣＰＵまたは他の外部ソースからデータ・ワードを受信することを伴う。以下で詳細に論じるように、データ・ワードは符号化ワードに変換されてメモリ・アレイの特定のワード１２８に記憶される。符号化ワードの各ビットが単一のメモリ・セル１０４に記憶される。バイアス回路１２４が、メモリ要素における符号ワード・ビットをプログラミングするのに充分な所定の信号を印加することによって、アクセス・デバイス１１０にバイアスをかける。
【００２３】
例えば、相変化メモリが二進１（ＲＥＳＥＴまたはアモルファス状態）を記憶するためには、アクセス・デバイス１１０の共通端子１１４にパルス供給して、比較的高い電流信号がメモリ要素１０８を通るようにする。迅速な電力カットオフによって急峻な立ち下がりが生じることで、メモリ要素１０８における相変化材料を急冷してアモルファス状態に設定する。二進０（ＳＥＴまたは結晶状態）を記憶するためには、アクセス・デバイス１１０の共通端子１１４における電流信号の振幅をゆっくりと小さくする。これによって、ゆるやかな立ち下がりが生じ、メモリ要素１０８における相変化材料をゆっくりと冷却して結晶状態に設定することができる。プログラミング動作の終了時までには、特定のワード１２８において、高い抵抗および低い抵抗にプログラミングされたメモリ・セルとして二進符号化ワードが表現される。
【００２４】
検索動作の間、符号化検索ワードを、メモリに記憶された符号化ワードと比較する。一致がある場合、ＣＡＭ１０２は一致したコード・ワードのアドレスを報告する。検索ワードは典型的に、中央演算処理装置（ＣＰＵ）または外部のメモリ・コントローラ等の外部のソースから受信される。データ・ワードが符号化ワードに変換されたのと同じ方法で、検索ワードは符号化検索ワードに変換される。符号化検索ワード内の各検索ビットは、ビットごとに順次、符号化ワード内の記憶ビットに対応する。
【００２５】
バイアス回路１２４は、アクセス・デバイス１１０にバイアスをかけて、メモリ・プログラミング中にビットに関連付けられた抵抗に対して相補的な実効抵抗とする。例えば、検索ビットが二進１（高抵抗メモリ）である場合、アクセス・デバイス１１０の実効抵抗は低抵抗に設定される。検索ビットが二進０（メモリにおける低抵抗）である場合、アクセス・デバイス１１０の実効抵抗は高抵抗に設定される。
【００２６】
そして、照合回路１２０は、各ワード１２８ごとにビット線１１２と照合線１０６との間の総合抵抗を測定する。検索電流は各メモリ要素１０８および各アクセス・デバイス１１０を通る。このため、メモリ要素１０８およびアクセス・デバイス１１０の総合抵抗を測定することができる。抵抗の測定のために、限定ではないが、電流測定回路および抵抗制御オシレータ等の様々な技法および回路を利用可能であることは、当業者には認められよう。
【００２７】
表１は、本発明の一実施形態のための照合抵抗を列挙して示す。この表は、メモリ検索動作中のアクセス・デバイス抵抗、メモリ要素抵抗、および照合線の値の真理表である。抵抗「Ｌ」および「Ｈ」は、メモリ要素およびアクセス・デバイスにおける高抵抗値および低抵抗値を表すことに留意すべきである。簡略化のために、アクセス・デバイス１１０およびメモリ要素１０４は同一の相補的な抵抗を用いると想定するが、これは本発明に必須ではない。換言すると、メモリ要素１０４「Ｌ」および「Ｈ」抵抗は、例えばそれぞれ５Ｋオームおよび５００Ｋオームとすることができ、アクセス・デバイス１１０の「Ｌ」および「Ｈ」抵抗は、例えばそれぞれ２Ｋオームおよび２００Ｋオームとすることができる。本発明の特定の構成においては、高抵抗状態は低抵抗状態よりも少なくとも１桁大きい。
【表１】
0005594908.tif 000002
【００２８】
例えば、「Ｈ」二進値の抵抗が「Ｌ」二進値の抵抗よりもｋ倍大きいと考える。アクセス・トランジスタ抵抗がメモリ要素抵抗の相補値である場合（一致）、メモリ要素１０４を介した全抵抗はｋ＋１となる。更に、記憶ワード１２８内の全てのメモリ要素１０４が検索コードと一致する場合、照合回路１２０によって測定される全抵抗は（ｋ＋１）／ｎとなる。ここで、ｎはワードにおけるビット数である。
【００２９】
一方、メモリ・セル１０４におけるアクセス・トランジスタ抵抗およびメモリ要素抵抗が双方とも高いかまたは低い場合には、非一致状況が生じる。１つのワードが正確に１つの非一致メモリ・セルを有し、この非一致メモリ・セルが高抵抗経路（すなわち「Ｈ」−「Ｈ」抵抗対）を有する場合、照合回路１２０が測定する全抵抗は、（ｋ＋１）／ｎの一致抵抗よりも高くなる。
【００３０】
１つのワードが、低抵抗経路（すなわち「Ｌ」−「Ｌ」抵抗対）を有する１つの非一致メモリ・セルを含む場合、照合回路１２０が測定する全抵抗は２／ｎ未満となる。本発明の一態様は、記憶されたワードおよび検索ワードのための符号化技法であり、記憶されたワードが検索ワードと一致しない場合に少なくとも１つの低抵抗経路が発生することを保証する。換言すると、検索動作の間にメモリ・セル１０４の各々を通る照合電流は、２つの電流範囲すなわち高電流範囲および低電流範囲の一方内にある。高電流範囲と低電流範囲との間の境界は、Ｖ（ｋ＋１）−１とＶ（２）−１との間で選択された適切な数によって与えられ、ここでＶはビット線１１２において印加された電圧を示す。検索動作の間にデータ・ワードが検索ワードに一致しない場合、メモリ・セルの少なくとも１つを通る照合電流が、起こり得る最も高い電流範囲（（２）−１以上）内にあることを保証するように、コード・ワードは構成されている。
【００３１】
以下で更に詳細に論じるが、照合回路１２０は、照合線１０６において総合電流を調べることによって検索の不一致を検出するように構成されている。特定の実施形態において、あるメモリ位置におけるデータ・ワードが検索ワードと一致する場合、照合回路１２０はその位置を示すように構成されている。例えば、検索動作中にそのメモリ要素の総合抵抗が閾値を超えている場合、照合回路１２０はメモリ・アドレスを戻す。
【００３２】
ここで図２に移ると、ＣＡＭによってデータ・ワードをコード・ワードに符号化するためのプロセスの一例が示されている。図２に示す動作は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの何らかの組み合わせにおいて実施可能である。プログラム・コード論理は、記憶媒体に記憶するか、コンピュータにロードするか、またはコンピュータによって実行するか、あるいはその両方とすることができ、プログラム・コード論理がコンピュータにロードされて実行されると、コンピュータは本発明を実施するための装置となる。記憶媒体の例には、固体メモリ（ＲＡＭまたはＲＯＭ）、フレキシブル・ディスク、ＣＤ−ＲＯＭ、ハード・ドライブ、ユニバーサル・シリアル・バス（ＵＳＢ）・フラッシュ・ドライブ、または他の何らかのコンピュータ読み取り可能記憶媒体が含まれる。
【００３３】
このプロセスは受信動作２０４から開始する。この動作の間、ＣＰＵまたは外部メモリ・コントローラ等の外部ソースから、ＣＡＭの受信ユニットによって、ビット長Ｌのデータ・ワードを受信する。通常、ＣＡＭはデータ・ワードを供給するデータ・バスに接続されている。いったんデータ・ワードを受信すると、更に別の処理のために、これをＬビット・バッファにラッチすることができる。受信動作が完了した後、制御は変換動作２０６に進む。
【００３４】
変換動作２０６では、符号化ユニットがデータ・ワードをＣＡＭに記憶するためにコード・ワードに変換する。コード・ワードは、データ・ワードよりもビット長が長く、全く同じにコピーされたデータ・ワード・ビットを含む場合もあるしそうでない場合もある。変換は、コード・ワード・ビットの少なくとも１つがデータ・ビットの少なくとも２つに依存するようになっている。この変換は、データ・ワード・ビットをコード・ワード・ビットにマッピングする関数として見ることができる。コード・ワードのビットの値を１つだけのデータ・ワード・ビットの関数として算出することができない場合に、コード・ワードのビットはデータ・ワードの少なくとも２ビットに依存すると言う。本発明の一実施形態においては、データ・ワードが検索ワードに一致しない場合、メモリ検索動作の間に異なる二進値を有する少なくとも２つのコード・ワード・ビットが不一致となることがコード・ワードによって保証される。かかる構成により、不一致ワードのために照合線とビット線との間に低抵抗経路が生成されることが確実となる。
【００３５】
本発明の特定の実施形態においては、コード・ワードは、固定ハミング重み（constant Hamming weight）を有するコード・ワード・セット（固定重みコードとも称する）から求められる。ハミング重みはコード内の１の数を示す。例えば、コード・ワード・セット｛０１１、１０１、１１０｝によって３つの可能な値を表すことについて考える。このセットにおける各コード・ワードは正確に２つの１を有する。従って、このコード・ワード・セットの固定ハミング重みは２である。データ・ワードおよび検索ワードの双方のために固定ハミング重みコードを用いることによって、データ・ワードが検索ワードと一致しない場合、メモリ検索動作の間に異なる二進値を有する少なくとも２つのコード・ワード・ビットの不一致が常に生じる。ＣＡＭにおいて固定ハミング重みを有する符号化数セットを実施することは、例えばルックアップ表および当業者に既知の他の技法を用いて達成可能であることに留意すべきである。例えば、Thomas Coverの「Enumerative source encoding」、IEEE Transactions on Information Theory  １９：７３〜７７（１９７３年）を参照のこと。
【００３６】
本発明の更に別の実施形態においては、固定ハミング重みを有する符号化数セットを用いて、コード・ワードは、データ・ワードおよびデータ・ワード内の１の個数を含む。６３ビットのデータ・ワードを記憶しようとすると仮定する。ハミング重みが４である８ビットの固定重みコードは、最大７０の別個の可能性を数えることができ、６３ビット・ワード内の１の数については６４のみの別個の可能性が存在する。このため、固定重み４で８ビットの符号化した１の個数を用いてデータ・ワードを終端させると、結果としてコード・ワードは合計で６３＋８＝７１ビットを有する。本発明のこの態様の可能な変形は、１の数でなく０の数をカウントする。
【００３７】
本発明の更に別の実施形態において、コード・ワードは、データ・ワードと、ゼロに等しいデータ・ワード内の二進値の個数と、を含む。データ・ワード内のビット数をＬとする。整数範囲〔０、１、．．．、Ｌ〕内にある個数を記述するためには、合計でceil(log2(L+1))ビットが必要である。この個数は標準的な二進数系を用いて符号化される。例えばＬ＝７である場合、ゼロの個数を記述するためには合計３ビットで充分である。データ・ワードが００１１０００である場合、コード・ワードは００１１０００１０１となる。この符号化技法を用いると、コード・ワードの長さはL+ceil(log2(L+1))である。この技法の変形では、１の数をカウントし、結果として得られた個数のビット補数を記憶する。
【００３８】
本発明の別の実施形態においては、コード・ワードは、データ・ワードと、データ・ワード内の１の個数と、１の個数のビット補数と、を含む。例えば、Ｌビット・データ・ワードｂ０  ｂ１  ｂ２．．．ｂＬ−１を記憶したいと仮定する。データ・ワード内の１の数をカウントし、二進数系を用いて符号化する。この数は０からＬまでの範囲に及ぶことができるので、Ｌ＋１の可能な結果が得られる。この個数をコード・ワード内の二進個数として含ませた結果として、ｂ０  ｂ１  ｂ２．．．ｂＬ−１  ｃ０．．．ｃｔ−１が得られる。ここで、t=ceil(log2(L+1))である。次に、ｃ０．．．ｃｔ−１に対して二進ＮＯＴ演算を実行し、この結果、コード・ワードｂ０  ｂ１  ｂ２．．．ｂＬ−１  ｃ０．．．ｃｔ−１  １−ｃ０．．．１−ｃｔ−１が得られる。このため、Ｌビットのデータ・ワードを符号化するために、この実施形態におけるコード・ワードはL+2*ceil(log2(L+1))のビット長を有する。例えば、６３ビットのデータ・ワードを記憶したいと想定する。コード・ワードの構築には、合計で６３＋６＋６＝７５ビットが必要である。あるいは、ゼロの数でなく１の数をカウントし、上述したように進むことができる。
【００３９】
メモリ要素の低抵抗値を二進「０」でなく二進「１」に割り当て、メモリ要素の高抵抗値を二進「０」でなく二進「１」に割り当てた場合に、同様の符号化の結果を達成可能であることは、当業者には認められよう。本明細書に開示する符号化技法には、二進値の特定の数でなく一般的な第１および第２の二進値が含まれる。
【００４０】
本発明の更に別の実施形態において、データ・ワードが検索ワードと一致しない場合、コード・ワードはメモリ検索の間に照合線を通る電流を増大させるように構成されている。例えば、コード・ワードはデータ・ワードおよび１つ以上のパリティ・ビットを含むことができる。この構成は、検索の不一致の間に低抵抗経路を保証しない場合があるが、検索動作中の一致と不一致との間のセンス・マージンを有利に大きくすることに役立つ。
【００４１】
変換動作２０６が完了した後、制御は記憶動作２０８に進む。記憶動作の間、コード・ワードをＣＡＭメモリ・アレイに記憶する。上述したように、コード・ワードを記憶するために、相変化メモリ（ＰＣＭ）、浮動ゲート・トランジスタ、抵抗性メモリ要素、磁気抵抗ランダム・アクセス・メモリ（ＭＲＡＭ）、および電荷トラッピング・デバイス等の様々な抵抗性メモリ技術を用いることができる。
【００４２】
いったんメモリ・アレイ内に記憶された後は、メモリ検索動作中にコード・ワードを検索コードと比較することができる。以下で詳細に説明するが、データ・ワードからコード・ワードを発生させたのと同様の方法で、受信した検索ワードから検索コードを発生させることができる。検索動作では、検索ワードに一致する記憶データ・ワードのメモリ位置を出力する。
【００４３】
図３は、メモリ検索動作の間に実行される例示的なステップ・シーケンスを示す。この動作は受信ステップ３０２から開始する。このステップの間、ＣＰＵまたは外部メモリ・コントローラ等の外部ソースから、ＣＡＭ受信ユニットによって、ビット長Ｌの検索ワードを受信する。いったん検索ワードを受信すると、追加の処理のためにこれをＬビット・バッファにラッチすることができる。受信ステップが完了した後、制御は変換ステップ３０４に進む。
【００４４】
変換ステップ３０４において、符号化ユニットは、ＣＡＭに記憶されたコード・ワードと比較するために検索ワードを検索コードに変換する。コード・ワードと同様、検索コードはビット長がＬよりも大きく、コード・ワードと同じ方法で符号化される。検索コードにおける各検索ビットは、コード・ワード内の記憶されたビットに対応する。更に、コード・ワードを発生させるために用いたものと同じ符号化アルゴリズムを用いて検索コードを生成する。
【００４５】
このため、本発明の一実施形態においては、固定ハミング重みを有する検索コード・セットから検索コードを求める。別の実施形態においては、固定ハミング重みを有する符号化数セットを用いて、検索コードは検索ワードおよび検索ワード内の１の個数を含む。本発明の更に別の実施形態においては、検索コードは、検索ワードと、検索ワード内のゼロの個数または１の個数のビット補数と、を含む。更に別の実施形態においては、検索コードは、検索ワードと、検索ワード内の１の個数と、１の個数のビット補数と、を含む。本発明の更に別の実施形態においては、検索コードは検索ワードおよび１つ以上のパリティ・ビットを含む。
【００４６】
変換ステップ３０４が完了した後、制御はバイアス・ステップ３０６に進む。バイアス・ステップ３０６の間、各メモリ・セルのアクセス・デバイスにバイアスをかけることによって、メモリ・セルの対応する検索コード・ビットの値に応じて、アクセス・デバイスの実効抵抗を高い実効抵抗または低い実効抵抗のいずれかに設定する。本発明の一実施形態において、アクセス・デバイスの実効抵抗の制御は、アクセス・デバイスの共通端子におけるバイアス電圧を制御することによって達成される。
【００４７】
特定の二進値について、メモリ要素およびアクセス・デバイスにおける相対抵抗は相互に逆であることに留意するのは重要である。例えば、低い記憶抵抗（すなわち５ｋオーム）を二進０値に割り当てた場合、同じ二進値に高い実効抵抗（すなわち５００Ｋオーム）を割り当てる。しかしながら、変換ステップ３０４の間に検索コードが反転した場合、この要件は除去することができる。
【００４８】
いったんバイアス・ステップ３０６が完了すると、制御は判定ステップ３０８に進む。このステップの間、各照合ユニットは関連付けられた照合線から総合電流を受信する。照合ユニットは、検索動作の間にメモリ要素からの総合電流が閾値未満であるか否かを判定するように構成されている。
【００４９】
総合電流が閾値電流値未満である場合、これは、検索動作中にビット線と照合線との間に低抵抗経路が生成されなかったことを示す。そして、これは、データ・ワードおよび検索ワードが一致することを示す。このため、判定ステップ３０８は、検索動作中に総合電流が閾値電流値未満であるメモリ要素のメモリ位置を示す。
【００５０】
本発明の代替的な実施形態においては、判定ステップ３０８において、照合線に結合されたメモリ要素の総合抵抗を判定する。総合電流が閾値抵抗値よりも大きい場合、メモリ要素のメモリ位置をＣＡＭによって出力する。
【００５１】
本発明の別の実施形態において、判定ステップ３０８は、各メモリ・ワードの総合電流または抵抗が所定値範囲内に収まるか否かを調べる。この実施形態が有用であるのは、データ・ワードおよび検索ワードが不一致であるときにコード・ワードが低抵抗経路を保証しないが、検索動作中のＣＡＭのセンス・マージンを大きくするという場合である。
【００５２】
ここで図４に移ると、本発明によって想定されるＣＡＭデバイス４０２の別の実施形態が示されている。ＣＡＭデバイス４０２は、複数のメモリ・ワード１２８を記憶および検索するためのメモリ・アレイ４０４を含む。上述のように、各メモリ・ワード１２８は照合線１０６に電気的に結合された複数のメモリ・セル１０４を含む。
【００５３】
照合線１０６は、検索動作中にメモリ・セル１０４から総合電流を受信するように構成されている。照合線１０６は、更に、検索動作中にメモリ・セル１０４からの総合電流が閾値未満であるか否かを測定するように構成された照合ユニット１２０に電気的に結合されている。照合ユニット１２０によって閾値電流を検出するため、当技術分野において既知の様々な回路を用いることができる。例えば、照合ユニット１２０において電流制御オシレータおよび周波数カウンタを用いることができる。
【００５４】
検索動作中にメモリ・ワード１２８の総合電流が閾値未満であることを照合ユニット１２０が報知した場合、出力ユニット４０６がそのメモリ・ワード１２８のメモリ位置を提供する。本発明の特定の実施形態において、出力ユニットは、２つ以上の一致メモリ・ワード１２８が存在することを示すフラグを含むことができ、ＣＡＭデバイス４０２から一致メモリ・ワードの多数のアドレスを検索することを可能とする。
【００５５】
また、ＣＡＭデバイス４０２は、メモリ・アレイ４０４に記憶するために長さＬのデータ・ワード４１０を受信するように構成された受信ユニット４０８を含む。受信ユニット４０８は、更に、検索動作中にデータ・ワード４１０と比較するために長さＬの検索ワード４１２を受信するように構成されている。いったん受信ユニット４０８が受信データ・ワード４１０または検索ワード４１２のいずれかをラッチしたら、そのワードは符号化ユニット４１４に渡される。
【００５６】
符号化ユニット４１４は、メモリ・セル１０４に記憶するために、データ・ワード４１０をＬよりも長いコード・ワード４１６に変換するように構成されている。上述のように、データ・ワード４１０が検索ワード４１２と一致しない場合、コード・ワード４１６はメモリ検索動作中に異なる二進値を有する少なくとも２つのコード・ワード・ビットが不一致となることを保証するように設計されている。
【００５７】
本明細書において、この目的を達成するために様々な符号化方式について論じた。符号化方式は、固定ハミング重みを有するコード・ワード・セットからコード・ワード４１６を生成すること、データ・ワード４１０と共に固定ハミング重みを有する符号化数セットを用いたデータ・ワード４１０内の１の個数を含むこと、データ・ワード４１０内のゼロの個数を含むこと、最後に、データ・ワード４１０と共にデータ・ワード４１０内の１の個数および１の個数のビット補数を含むことを含む。論じた全ての符号化技法において、コード・ワード・ビットの少なくとも１つがデータ・ビットの少なくとも２つに依存することは認められよう。更に、これらのコードによって、データ・ワードが検索ワードと一致しない場合はいつでも、データ・コード・ワードが検索コード内の対応ビットと一致しない異なる値の少なくとも２ビットを有することが保証されることは、当業者には認められよう。
【００５８】
符号化ユニット４１４は、更に、検索動作中にコード・ワード４１６と比較するために検索ワード４１２を検索コード４１８に変換するように構成されている。コード・ワード４１６を発生させるために用いたものと同じ符号化アルゴリズムを用いて検索コード４１８を生成し、結果として得られた検索コード・ビット長はコード・ワード・ビット長と同じである。本発明の他の実施形態においては、データ・ワード４１０と検索ワード４１２との間に少なくとも１ビットの不一致がある場合にはコード・ワード４１６と検索コード４１８との間のハミング距離が所与の閾値よりも大きくなるように、符号化ユニット４１４が検索ワード４１２を検索コード４１８に変換するように構成されている。これは、線形コード、ハミング・コード、ＢＣＨコード等の既知のコード・ファミリの１つからコードを選択した場合に確実とすることができる。この実施形態においては、コード・ワード４１６および検索コード４１８が一致しない場合に照合ユニット１０６を通る電流は一致電流よりも大きくまたは小さくすることができ、このため一致を検出するには電流が所与の範囲内にあるか否かを検出する必要がある。
【００５９】
いくつかの用途においては、一致および不一致の状況の正確な区別を可能とするために、少なくとも１つの低抵抗経路を確実とすることでは充分でない場合がある。考えられる方法は、データ・ワードが検索ワードと一致しない場合はいつでも少なくとも「ｄ」個の低抵抗経路を確実とするコードを用いることである。ここでｄは正の整数である。これを確実とする１つの方法は、二進ベクトル・セットからコード・ワードを（従って検索ワードも）選択することである。このベクトルは以下の特性を有する。すなわち、１）二進ベクトルは同一のハミング重みを有する（このため、このベクトル・セットは固定重みコードを形成する）、および、２）二進ベクトルは少なくとも２ｄのハミング距離を有する。上述のセットにおけるデータ・ワードとコード・ワードとの間の関連付けは、エンコーダの実際の実施に好都合ないずれかの方法で実行することができる。１つの可能な実施はテーブル・ルックアップである。これらの２つの条件によって示される所望の特性においては、データ・ワードが検索ワードと一致しない場合、データ・ワードに関連付けられたコード・ワードおよび検索ワードに関連付けられた検索コードでは、少なくともｄ個の低抵抗経路が存在するようになっており、従ってこれに対応して不一致電流がもっと大きくなるということは、当業者には認められよう。
【００６０】
同様の効果を有する他のコードには、データ・ワードにビットを追加するコードが含まれる。適切なコードを、エラーを訂正するためのコード設計理論から借用して、単方向性エラーを検出することができる。本明細書において用いる場合、単方向性のエラーとは、第１の二進値が第２の二進値に変換される潜在的なエラーを受けることが知られているが第２の二進値は決して第１の二進値に変換されないというエラーである。この問題は、本発明の実施形態によって解決されるものとは全く異なるが、この問題のためのコードを連想メモリの状況において用いて、少なくともｄ個の低抵抗経路を生成することができる。かかるコードを実施することに関する情報は、M. Blaumの「Codes for Detecting and CorrectingUnidirectional Errors」、IEEE Computer Soc. Press（カリフォルニア州ロスアラミトス、１９９３年）において見ることができる。検索ワードが記憶されたワードと不一致である場合に少なくともｄ個の低抵抗経路を確実とするコードには、データ・ワード・ビットの数を一定に維持しながらパラメータｄが大きくなるにつれてビット量が増えるコード・ワードが必要であることに留意すべきである。
【００６１】
本発明の別の態様は、コンピュータにより実施されるプロセスおよびこのプロセスを実行するための装置という形態で具現化することができる実施形態を対象とする。これについて図５を参照して説明する。例えば、連想コンピュータ・メモリを動作させるためのコンピュータにより実施される動作は、コンピュータ・プロセッサによって実行されるコンピュータ・プログラム・コードにおいて具現化される。
【００６２】
実施形態は、コンピュータ使用可能媒体５０４上に図５に示したようなコンピュータ・プログラム５０２を含み、コンピュータ・プログラム・コード論理５０６は、製造品としてタンジブルな媒体に具現化された命令を含む。コンピュータ使用可能媒体５０４のための製造品の例は、フレキシブル・ディスク、ＣＤ−ＲＯＭ、ハード・ドライブ、ユニバーサル・シリアル・バス（ＵＳＢ）・フラッシュ・ドライブ、または他のいずれかのコンピュータ読み取り可能記憶媒体を含むことができ、コンピュータ・プログラム・コード論理５０６がコンピュータにロードされてそれによって実行されると、コンピュータが本発明を実施するための装置になる。
【００６３】
実施形態は、コンピュータ・プログラム・コード論理５０６を含む。これは、例えば記憶媒体に記憶されているか、コンピュータにロードされるかまたはコンピュータによって実行されるかあるいはその両方であり、コンピュータ・プログラム・コード論理５０６がコンピュータにロードされてそれによって実行されると、コンピュータが本発明を実施するための装置になる。汎用マイクロプロセッサ上で実施された場合、コンピュータ・プログラム・コードは、特定の論理回路を生成するようにマイクロプロセッサを構成する。
【００６４】
図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラムの可能な実施のアーキテクチャ、機能性、および動作を示す。この点で、フローチャートまたはブロック図における各ブロックは、指定された論理機能（複数の機能）を実施するための１つ以上の実行可能命令を含むコードのモジュール、セグメント、または一部を表すことができる。また、いくつかの代替的な実施において、ブロックに明記した機能は、図面に明記した順序どおりでなく発生する場合があることに留意すべきである。例えば、関与する機能性に応じて、連続して示した２つのブロックは実際には実質的に同時に実行されることがあり、またはブロックは時に逆の順序で実行される場合がある。また、ブロック図またはフローチャートあるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方におけるブロックの組み合わせは、特殊目的ハードウェアおよびコンピュータ命令の指定された機能もしくは行為または組み合わせを実行する特殊目的ハードウェア・ベースのシステムによって実施可能であることに留意すべきである。
【００６５】
本明細書において用いた用語は、特定の実施形態を記載する目的のためだけのものであり、本発明を限定することは意図していない。本明細書において用いたように、単数形「１つの（ａ）、（ａｎ）、（ｔｈｅ）」は、文脈によって明らかに他の場合が示されない限り、複数形を含むことが意図されている。また、「含む」または「含んでいる」という言葉あるいはその両方は、本明細書において用いられた場合、述べた特徴、整数、ステップ、動作、要素、または構成要素あるいはそれら全ての存在を指定するが、１つ以上の他の特徴、整数、ステップ、動作、要素、構成要素、またはそれらのグループあるいはそれら全ての存在または追加を除外するものではないことは、理解されよう。
【００６６】
以下の特許請求の範囲における全てのミーンズまたはステップ・プラス・ファンクション要素の対応する構造、材料、行為、および均等物は、具体的に特許請求したような他の特許請求した要素と組み合わせて機能を実行するためのいずれかの構造、材料、または行為を含むことが意図されている。本発明の記載は、例示および記述の目的のために提示したが、網羅的であることや、開示した形態に本発明を限定することは、意図していない。本発明の範囲および精神から逸脱することなく、当業者には多くの変更および変形が明らかであろう。実施形態は、本発明の原理および実際的な用途を最良に説明するため、更に、想定される特定の用途に適した様々な変更と共に様々な実施形態に関して当業者が本発明を理解することを可能とするために、選択し記載したものである。
【００６７】
従って、本出願の本発明について詳細に、その実施形態を参照して記載したが、添付の特許請求の範囲に規定した本発明の範囲から逸脱することなく変更および変形が可能であることは明らかであろう。
【図１】
0005594908.tif 000003
【図２】
0005594908.tif 000004
【図３】
0005594908.tif 000005
【図４】
0005594908.tif 000006
【図５】
0005594908.tif 000007