JP2009514115A - 格納された符号化キーを使った高速cam検索 - Google Patents

格納された符号化キーを使った高速cam検索 Download PDF

Info

Publication number
JP2009514115A
JP2009514115A JP2008538210A JP2008538210A JP2009514115A JP 2009514115 A JP2009514115 A JP 2009514115A JP 2008538210 A JP2008538210 A JP 2008538210A JP 2008538210 A JP2008538210 A JP 2008538210A JP 2009514115 A JP2009514115 A JP 2009514115A
Authority
JP
Japan
Prior art keywords
encoded
cam
key
address
tlb
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008538210A
Other languages
English (en)
Other versions
JP5118051B2 (ja
Inventor
フィッシャー、ジェフリー・ハーバート
ファン、マイケル・タイタン
チャイ、チャミング
ディーフェンダーファー、ジェームズ・ノリス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2009514115A publication Critical patent/JP2009514115A/ja
Application granted granted Critical
Publication of JP5118051B2 publication Critical patent/JP5118051B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

Abstract

キャッシュにおけるCAMの検索キーおよびキーフィールドは、各々のミスマッチしているマッチラインが少なくとも2つのトランジスタによって並行してディスチャージされるのを確実にすることによってCAMの速度を増大するために、少なくとも2のハミング距離で符号化される。キャッシュが物理的にタグ付けされている場合、検索キーは物理アドレスである。物理アドレスのページアドレス部分は、TLBに格納される前に符号化される。ページオフセットビットは、TLBアクセスと並行して符号化され、符号化されたTLBエントリと連結される。ページアドレスが大きなメモリページサイズをアドレス指定する場合、対応する複数のサブページアドレスが生成されることができ、その各々は、より小さなページサイズをアドレス指定する。これらのサブページアドレスは、符号化され、マイクロTLBに格納されることができる。符号化されたキーおよびキーフィールドは、単一ビットのソフトエラーに対して耐性がある。

Description

背景
本発明は、一般に電子回路の分野に関し、特に、符号化されたキーフィールド(encoded key fields)と格納された符号化されたキー(stored encoded key)とを使って、連想メモリ(content addressable memory)に高速アクセスする方法に関する。
マイクロプロセッサは、ポータブル電子機器のような内蔵アプリケーションを含む多種多様なアプリケーションにおいて、計算タスクを実行する。そのような機器の拡大し続けるフィーチャーセット(feature set)と強化された機能は、より一層、計算的に、強力なプロセッサを必要とする。したがって、実行速度を増大するプロセッサの改良が望まれている。
ほとんどの最近のプロセッサは、命令実行パイプラインによるすばやいアクセス(ready access)のために、直近に実行した命令及び直近にアクセスしたデータを一つ以上のキャッシュメモリに格納することによって、ほとんどのプログラムの空間的及び時間的な局所的プロパティを活用する。キャッシュは、高速の、通常はオンチップの、ランダムアクセスメモリ(RAM)及び対応する連想メモリ(Content Addressable Memory)(CAM)を備えるメモリ構造である。命令又あるいはデータは、RAMに格納されたキャッシュ「ライン」(cache “line”)にある。特定のデータがRAM中にあるかどうかを決定するために、そのアドレスの一部分がCAMに適用される。CAMは特殊なメモリ構造をしており、適用された比較入力(ここではキー又は検索キー(search key)と呼ばれる)は、各CAMエントリ(ここではキーフィールド(key field)と呼ばれる)中に格納されたデータと同時に比較され、CAMの出力は、もしあれば、どのキーフィールドがキーとマッチする(matches)かの表示となる。キャッシュの中で、キー及びキーフィールドは(仮想あるいは物理)アドレスの一部(portions)であり、マッチング(match)が生じる(すなわち、アクセスがキャッシュ中で「ヒットする(hits)」)と、マッチングの場所がRAMにインデックスされ、対応するキャッシュラインがアクセスされる。
図1は、CAM構造の1つのキーフィールドの1部分の機能ブロック図を表しており、その全体が番号100によって示されている。CAMキーフィールドjは、第jキーフィールド110の全ビット位置にわたるマッチライン(match line)102を含む。マッチライン102は、マッチライン102を電源に接続しているパストランジスタ(pass transistor)104のゲートをターンオンするプリチャージ(PRECHARGE)信号によって、highに引き上げられる(pulled high)。第jCAMエントリの各ビットで、パストランジスタ106が、マッチライン102とグランドとの間に挿入されている。放電トランジスタ(discharge transistor)106のゲートは、キー112のビットと対応するキーフィールド110のビットとの論理XOR108である。各第iビット位置で、キー112のビットとキーフィールド110のビットとがマッチすれば、XORゲート108の出力はlowであり、パストランジスタ106はマッチライン102からグランドへチャージを導通させない。もしキー112のビットとキーフィールド110のビットとがミスマッチ(mismatch)すれば、XORゲート108の出力はhighであり、パストランジスタ106をターンオンして、マッチライン102をlowに引き下げる。
このように、もしキー112のいずれかのビットが、その対応するいずれかのキーフィールド110のビットとミスマッチする場合、マッチライン102はlowに引き下げられる。逆に、キー112のすべてのビットとそのキーフィールド110とがマッチする場合においてのみ、グランドへのパスは確立されず、マッチライン102はhighのままである。センス回路114は、ワーストケースのマッチライン102の放電時間によって決定される時間で、第jマッチライン102のレベルを検出する。各キーフィールド110が固有(unique)であれば、これは通常のキャッシュオペレーションのケースであるが、そのときは、1つだけのキーフィールド110がキー112とマッチすることになる。そのケースでは、CAM内の一つだけのマッチライン102がhighのままである。これがそのケースであることを確実にするために、各マッチラインセンス回路114の出力は、コリジョン検出回路(collision detection circuit)116に送られ、この検出回路は、複数のマッチングを検出し、もしそれらがあれば、エラー信号を生成する。キャッシュメモリ以外のCAMアプリケーションにおいては、複数のマッチングが生ずることがあり、プライオリティエンコーダ(示されていない)が、適用されたキー112とマッチする2つ以上のキーフィールド110から選択することができる。
典型的なCAMのキーフィールド110は、20から30ビットの幅であり得て、CAMは、256のエントリを含むことができる。このように、CAMには5,000から7,000個を超えるマッチライン放電トランジスタ106を含むことができる。小さなチップの面積の中にこのように多数のトランジスタ106をインプリメントする(implement)ためには、各トランジスタ106が小さいことが要求される。小さなトランジスタ106は低い通電容量を有しているので、それらは、データ不一致(data miscompare)の場合には、マッチライン102をディスチャージするためにより長い持続時間(duration)を必要とする。ワーストケースは、キー112とキーフィールド110との間の単一ビットの不一致であり、ここでは、一つのトランジスタ106だけがターンオンされ、それが、マッチライン102上の全チャージを消散するように電流を搬送してしまう。2つ以上のビットが不一致する場合、そのときは、2つ以上のトランジスタ106が、もっと迅速にマッチライン102をディスチャージするように、並行して動作する。従って、CAMの全体的な動作速度は、単一ビット不一致のタイミングによって決定される。
より速いCAM動作は、従って、すべてのミスマッチング(mismatching)キーフィールド110の少なくとも2つのビットが不一致であることを確実にすることによって、達成されることができる。キーフィールド110(及び対応して、キー112)を符号化して、これらの、いずれかの2つのデジタル値の間の不一致であるビットの数であるハミング距離(Hamming distance)、を増やすことは、当該分野では知られている。例えば、シングルビットパリティとしても知られる、2のハミング距離は、1ビットが異なるキー112とキーフィールド110について、キー112の符号化されたバージョンとキーフィールド110の符号化されたバージョンとの間で2ビット不一致になることを確実とする。特に、符号化されたバージョンにおける2つの不一致ビットは、符号化されないデータにおいて異なるビット、およびパリティビットである。このように、シングルビットパリティを使ってキー112及びキーフィールド110を符号化することは、キー112とキーフィールド110との間に少なくとも1ビットの相違がある場合、すべてのマッチライン102上で、少なくとも2つのビットが不一致であることを確実とする。これは、少なくとも2つのトランジスタ106が並行してマッチライン102をひき下げ、結果としてより速いCAMの動作となる、ことを確実にする。
キャッシュミス(cache miss)に続く処理において、キャッシュラインが置き換えられるとき、キーフィールド112は、CAMに書き込まれる前に容易に符号化されることができる。しかしながら、物理的にタグ付けされた(tagged)キャッシュについては、キー110の一部、すなわちページアドレス(page address)が、仮想アドレスから物理アドレスへの変換を行うトランスレーションルックアサイドバッファ(Translation Lookaside Buffer)(TLB)から読み出され、そして、残りの部分、すなわちページオフセット(page offset)は、パイプライン中に生成された仮想アドレスの低位ビットを備える。バーチャルにタグ付けされたキャッシュの場合、全体のキー112はパイプラインにおいて生成される。いずれの場合においても、アドレスの読み出し/生成及びCAMへのアクセスはクリチカルタイミングパス上で行われ、そして、マシンのサイクルタイムの増加なしに、キー112を符号化キーフィールド110と比較する前に、キー112の全体又は大部分を符号化するには、時間が十分でない。
[概要]
一つ以上の実施形態において、CAM検索(CAM look-up)のための検索キーである物理アドレスのページアドレス部分は、TLBに格納される前に符号化される。符号化されたページアドレスは、次いで、アドレス変換(address translation)においてTLBから読み出され、CAM中の符号化キーフィールドに対して検索するために符号化検索キー(encoded search key)としてCAMに適用される。符号化は、少なくとも2のハミング距離を確実なものとし、したがって、CAM中の各マッチングしていないキーフィールドに対して、少なくとも2つのトランジスタが並行してマッチラインをディスチャージすることを確実にする。TLB中に格納されない物理アドレスのページオフセットは、TLBへのアクセスと並行して符号化されることができ、2つの符号化された物理アドレス部分は、CAMにアクセスする前に連結される(concatenated)。TLB中に格納されたページアドレスが大きなメモリページサイズをアドレス指定する一つの実施形態において、ページアドレスは、複数のサブページアドレスに分割され、各々は、より小さなページサイズをアドレス指定する。これらのサブページアドレスは、それらをマイクロTLB中に格納する前に、符号化されることができる。
一つの実施形態は、複数の符号化されたキーフィールドを有する連想メモリ(CAM)にアクセスする方法に関する。検索キーは符号化され、格納される。この格納された、符号化された検索キーを使って、CAMはアクセスされる。
別の実施形態は、連想メモリ(CAM)中のアドレスにマッチングする方法に関する。アドレスの符号化されたバージョンが、CAM中に、キーフィールドとして格納される。アドレスの少なくとも第一部分の符号化されたバージョンが、トランスレーションルックアサイドバッファ(TLB)中に格納される。TLBからの符号化されたアドレスが、マッチングを検出するためCAM中の複数の符号化キーフィールドと比較される。
別の実施形態はプロセッサに関する。プロセッサは、連想メモリ(CAM)及びランダムアクセスメモリ(RAM)を備えるキャッシュメモリ、を含む。検索キーが、CAMに格納された対応するキーフィールドとマッチするとき、キャッシュメモリは、RAMエントリにデータを格納し又はこれから供給(supply)するように作動する。キーフィールドは、少なくとも2のハミング距離で符号化される。プロセッサは、CAMに対する検索キーとして物理アドレスを格納し出力するように作動するトランスレーションルックアサイドバッファ(TLB)をさらに含む。物理アドレスは、CAMキーフィールドと同じアルゴリズムによって符号化される。
[詳細な説明]
図2は、典型的なプロセッサ10の機能ブロック図を示す。プロセッサ10は、制御ロジック14に従い命令実行パイプライン12中の命令を実行する。該パイプラインは、パイプ・ステージに配列されたさまざまなレジスタ又はラッチ16、及び一つ以上の演算論理ユニット(ALU)18を含む。汎用レジスタ(GPR)ファイル20は、メモリ階層の最上部を含むレジスタを備える。
パイプラインは、CAM22及びRAM23を含む命令キャッシュ(Iキャッシュ)21から命令をフェッチする。命令メモリへのアクセス及び許可は、命令側トランスレーションルックアサイドバッファ(ITLB)24によって管理される。データへのアクセスは、CAM26及びRAM27を含むデータキャッシュ25から行われる。データ・メモリへのアクセス及び許可は、主TLB28によって管理される。さまざまな実施形態において、ITLB24はTLB28の部分コピーを備えることができる。これに換えて、ITLB24とTLB28とを一体化することができる。
さらに、プロセッサ10は、マイクロTLB29を含むことができる。このマイクロTLB29は、小型高速の回路で、主TLB28から直近にアクセスされた物理アドレスを保持している。プロセッサ10は、まずマイクロTLB29に仮想アドレスを適用し、マイクロTLB29中に対応するページアドレス及び属性が見つからない場合にだけ主TLB28にアクセスすることができる。一つの実施形態において、ここに説明されているように、マイクロTLB29のエントリは、対応するTLB28のエントリよりも小さなページサイズでアドレス指定することができる。
プロセッサ10のさまざまな実施形態において、Iキャッシュ22とDキャッシュ26とを一体化ないし統合することができる。Iキャッシュ22及び/又はDキャッシュ26中における(misses)は、メモリインタフェース30の制御の下で、メイン(オフチップ)メモリ32へのアクセスの原因となる。プロセッサ10は、各種の周辺装置36へのアクセスを制御する入力/出力(I/O)インタフェース34を含むことができる。当業者は、プロセッサ10の多数の変形バージョンが可能であることを認識するであろう。例えば、プロセッサ10は、I及びDキャッシュ21、25のいずれか又は双方に対する第二レベル(L2)のキャッシュを含むことができる。さらに、特定の実施形態においては、プロセッサ10中に図示された一つ以上の機能ブロックは、省略されてもよい。
当該技術分野においてよく知られているように、ほとんどのプログラムは、あたかもプロセッサがアドレス可能なメモリ(例、32アドレスビット)全体を独占使用しているように実行される。これは、仮想アドレス(virtual address)として知られ、パイプラインにおいて活用されるアドレス指定モードである。実際のメモリにアクセスする場合、TLB28(又は命令用のITLB24)によってこの仮想アドレスは物理アドレスに変換される。オペレーティングシステムは、プログラムの仮想アドレスを、メモリページとして知られる具体的なメモリ領域にマッピングする(maps)。一般に、仮想アドレスの上位のあるいは最上位ビット(upper or most significant bits)は、ページアドレス(TLB28によって提供された部分)にマッピングされる。ページオフセットとして知られる、仮想アドレスの低位のあるいは最下位(lower or least significant bits)ビットは、メモリページ内のデータをインデックスする。すなわちページオフセットは変換されない。簡単に且つ明確にするために、TLB28から得られるアドレスをCAM26と比較する、Dキャッシュ25からのデータアクセスにおけるコンテキストにおいて、以下の検討が提供される。しかしながら、同じ開示内容は、Iキャッシュ21、ITLB24、及びIキャッシュCAM22からの命令アクセスにも適用される。
一つ以上の実施形態において、物理的にタグ付けされたキャッシュ25にアクセスする場合、物理アドレスであるCAM26に適用されるほとんどのキー112の符号化は、ページアドレスをTLB28中に格納する前に符号化を行うことによって、クリチカルタイミングパス(critical timing path)から除かれる。プログラムが初期設定されるとき、オペレーティングシステムソフトウエアによって、ページテーブルは、TLB28中にセットアップされる。ページアドレスは、プロセッサのパフォーマンスに影響することなく、そのとき、符号化されることができる。続いて、キャッシュ25へアクセスすることによって、パイプラインからの仮想アドレスは、符号化されたページアドレスを得るためにTLB28によって変換される(translated)。必要なページオフセットビットは、TLB検索と並行して符号化されることができ、アドレスのこの部分はページアドレスよりもずっと短いので、符号化オペレーション(encoding operation)は、利用可能な時間内に完了されることができる。次いで、符号化されたページオフセット(encoded page offset)は、TLB28によって提供される符号化されたページアドレス(encoded page address)と、最終パリティビットを得るためにXOR処理された(XORed)各符号化オペレーションによって生成されたパリティビットと、に連結されることができる。次に符号化された物理アドレスは、キー112としてCAM26に適用され、符号化キーフィールド110と比較される。これにより、CAM26は、符号化キーフィールド110と符号化キー112とを使うことによって、より短い比較時間で、単一ビットのミスマッチのワーストケースイベントにおいて、少なくとも2つの不一致が、したがって、少なくとも2つのターンオンされた放電トランジスタ106が、マッチラインをディスチャージすることを確実にするように動作することが可能になる。
TLB28に格納されたページアドレスのサイズは、それがアドレス指定するメモリページのサイズと逆に変わる。より大きなページサイズに対しては、より少ないビットが変換され、TLB28中に格納される、そして、仮想アドレスのより多くのビットが、オフセットに使われる。非常に大きなメモリページ有するアプリケーションにおいては、多数のページオフセットビットは、TLB28アクセスと並行して、「オンザフライで(on the fly)」これらのビットを符号化することを除外することができる。この場合、ページアドレスを2以上のサブページに分割し、その各々がより小さなメモリページサイズをアドレス指定するようにできる。例えば、64Kのメモリページをアドレス指定するページアドレスを、4つのサブページアドレスに分けてその各々が4Kのメモリページをアドレス指定するようにできる。64Kページに対するTLB28の属性は、複製され(replicated)、サブページの各々に関連付けられることができる。
4Kサブページアドレスは、変換オペレーションを実行するとき、それらが64Kページアドレスと衝突する(collide)であろうから、TLB28中に格納されることはできない。一つの実施形態において、サブページアドレスは、符号化されマイクロTLB29に格納される。これは、例えば、主TLB28では一つのエントリしか必要としない同じ範囲の仮想アドレスを変換するのに4つのエントリが必要になるなど、マイクロTLB29の非効率的な使い方である。しかしながら、マイクロTLB2中に格納された符号化されたサブページアドレスは、各々が対応するページアドレスよりも多くのビットを備えており、CAM26にアクセスする前にオンザフライで変換されなければならないビット数を少なくする。
さまざまな実施形態に従い、キー112を符号化し、格納し、格納された符号化されたキー112にアクセスし、それをCAM26に適用するプロセスが、図3及び4に図示されている。図3は、オペレーティングシステムソフトウエアがTLB28をセットアップときに取られる動作を示し、図4は、プログラム実行の間に(例えば、クリチカルタイミングパス上で)CAM26にアクセスするステップを示す。
図3を参照すると、オペレーティングシステムは、TLB28中にページテーブルをセットアップする(ブロック40)。メモリページのサイズに応じて(ブロック42)、符号化は、異なるプロセスによって進むことができる。もし、ページが比較的小さく(ブロック42)、ページアドレスが長く且つページオフセットが短いことを意味する場合は、ページアドレスは、少なくとも2のハミング距離によって符号化される(ブロック44)。次いで、符号化されたページアドレスは、TLB28中に格納される(ブロック46)。
他方、もしメモリページが大きく(ブロック42)、ページアドレスがより短く、ページオフセットがより長い場合は、アドレス変換の間に、オンザフライでページオフセットの必要部分を符号化するための時間が不十分であるかもしれない。この場合、2つ以上のサブページが生成されることができ、その各々は、対応するページアドレスよりも小さなメモリページをアドレス指定する(ブロック48)。これにより、サブページの長さを増し、対応するページオフセットを減らし、マシンサイクルに影響を与えることなく、実行時にオフセットを符号化することが可能になる。各サブページアドレスは、少なくとも2のハミング距離で符号化され(ブロック50)、符号化されたサブページエントリは、マイクロTLB29に格納される。
決定ブロック(decision block)42からの出口パス(exit paths)に注記された「大きい」及び「小さい」のラベルは相対的なものである。ここに使用されているように、小さいメモリページサイズは、TLB28へのアクセスと並行して少なくとも2のハミング距離によってオンザフライで符号化されるのに十分小さなページオフセットを生成するものである。逆に、大きいメモリページサイズは、TLB28へのアクセスと並行してオンザフライで符号化されるのには大きすぎるページオフセットを生成するものである。大きい、あるいは小さいとして資格付けする実際のメモリページサイズは、半導体技術、クロック速度、動作電圧などの多くのファクタに応じて、各インプリテーションで変わる。図3の流れ図の終わりに、十分な長さの符号化された(サブ)ページアドレスは、TLB28又はマイクロTLB29の中に格納される。
引き続くプログラム実行の間に、メモリアクセス命令は、実行パイプライン中に仮想アドレスを生成し(ブロック54)、仮想アドレスを変換のためにTLB28及び/又はマイクロTLB29に送る。TLB28又はマイクロTLB29は、仮想アドレスを変換し、符号化された(サブ)ページアドレスを生成する(ブロック56)。TLB28又はTLB29の検索(look-up)と並行して、ページオフセットの必要部分は、少なくとも2のハミング距離によって符号化される(ブロック58)。一つの実施形態では、次いで、符号化された(サブ)ページアドレスと符号化されたページオフセットとは、連結され、そして、2つのパリティビットがXOR処理され、単一のパリティビットを有する符号化された物理アドレスを生む(ブロック60)。次に、物理アドレスは、複数の符号化されたキーフィールド110との比較のために、検索キー112としてCAM26に提供される(ブロック62)。
別の実施形態において、ページアドレスとページオフセットとは、CAMエントリ100ごとに別々のキーフィールド110として格納される。すなわち、各CAMエントリ100は、2つのマッチライン102セグメントを含んでおり、いずれかのセグメントの放電(discharge)がミスマッチを信号で示す(signal)であろう。一つの実施形態において、各マッチライン102セグメントは、マッチラインセンス回路114を含み、マッチラインセンス回路114の出力は、コリジョン検出ロジック(collision detection logic)116に適用される前に、一緒にAND処理される(AND’ed)。この場合、TLB28からの符号化されたページアドレス、又はマイクロTLB29からのサブページアドレスは、CAM26の対応するページアドレス部分に適用される。符号化されたページオフセットは、TLB28又はマイクロTLB29のアクセスと並行して、少なくとも2のハミング距離で符号化される。次いで、符号化されたページオフセットは、(サブ)ページアドレスと並行してCAM26に適用される。符号化(サブ)されたページアドレス及び符号化されたページオフセットの各々は、パリティビットを含む。
他の実施形態においては、CAM26のマッチライン102(及び対応して、キー110)は、速度、ファンアウト、パワー消費、又は他の設計考慮事項について、必要に応じ、あるいは望まれるように、さらにセグメント化される(segmented)ことができる。各セグメントの数及びビット長は、インプリメンテーションの技術、レイアウト、比較されるべきビットの数、必要なサイクル速度などによって、決定される(dictated)ことができる。さらに、セグメントは、CAMエントリ100ごとに一つだけのセンス回路114が必要となる様々な方式で構成、配置されることができる。例えば、一つの実施形態においては、任意のセグメント中の、アクチブな放電回路106が、マッチライン102全体をディスチャージするように、マッチライン102のセグメントは、一緒にカスケード接続されても、あるいはリップルされ(rippled)てもよい。別の実施形態においては、マッチライン102は、階層的構造をとる(assume)ことができ、ここでは、各セグメントは、グローバルマッチライン(global match line)102に接続し、それは、接続されたセグメントのいずれかがディスチャージするときは常にディスチャージ。当業者は、マッチライン102が有利に分離されることができる多種多様の方法を認識するであろう。
当業者によって理解されるように、符号化されたキーフィールド110は、キャッシュミス処理オペレーションによって、時間とともにCAM26中にロードされる。キャッシュミスが生じると、メモリアクセス命令は、主メモリから望ましいデータをフェッチし、既存の情報と置換えてRAM27中にそれらを格納する。対応するCAM26エントリは、ミスした、符号化された物理アドレス、によって置換えられる。
少なくとも2のハミング距離を使ってCAM26のキー112及びキーフィールド110を符号化することによって、キー112と少なくとも1ビット異なる各キーフィールド110に対し、少なくとも2つの放電トランジスタ106がマッチライン102をグランドにディスチャージするであろう。CAM26全体としてのタイミングは、一つのトランジスタ106がマッチライン102をディスチャージするのに必要な時間というよりは寧ろ、2つのトランジスタ106がマッチライン102をディスチャージするのに必要な時間に有利に設定されることができ、したがって、CAM26の動作速度を改善することができる。
全ての固体メモリ(solid-state)は、ソフトエラーを起こし易い傾向があり、このエラーは、荷電粒子又は放射によってもたらされる、格納されたデータ中のエラーである。ソフトエラーは、アルファ粒子又は宇宙線に起因する電気的かく乱によってもたらされることがある。両方の放射形態ともランダムであり、ソフトエラーは、キーフィールド110中に単一ビットのエラーを引き起こすことがある。このことは、キー112とキーフィールド110との間の単一ビットミスマッチの可能性を高くする。いくつかの可能性が考慮される。
第一に、もしキー112がキーフィールド110にマッチしており、マッチングするキーフィールド110が単一ビットのソフトエラーを被った場合は、対応するCAM26エントリが、ヒット(hit)として検出されるかもしれないし、されないかもしれない。CAM26の全体のタイミング(overall CAM 26 timing)は、マッチライン102あたり2つの不一致の最悪のケースのシナリオを用いて設定されているので、単一ビット不一致は、センス回路114による評価に先立って、対応するマッチライン102を十分にディスチャージするには時間が不十分である可能性がある。この場合、マッチライン102はhigh状態(high state)で検出され、マッチングを示す。キー112は、このキーフィールド110とマッチしており、ソフトエラーに起因するミスマッチとして解釈される危険な状態のみにあるので、このときは、マッチングを検出することは、キャッシュ26の適切なオペレーションをもたらし、ソフトエラーは少しも問題とはならない。
第2のケースにおいては、ソフトエラーに起因する単一ビットの不一致は、関連するセンス回路114がCAM26エントリをミスマッチと見なしてしまうほど、マッチライン102を十分低く、瞬時に引き下げてしまう可能性がある。キー112はさらに、すべての他のCAM26エントリとミスマッチなので、これは、あるアドレスがヒットされるべきときに、そのアドレスが、キャッシュにおいて誤って紛失している(missing)という原因となる。プロセッサ10は、キャッシュミスを検出し、メインメモリ32へのアクセスを実行し、キャッシュ25中の対応するラインを置き換え、CAM26エントリを紛失している符号化されたアドレスに更新し、このようにして、(主メモリへのアクセス待ち時間を犠牲にして)、ソフトエラーを訂正する。
別の可能性は、キー112が、第一キーフィールド110とマッチし、第二キーフィールド110と単一ビット異なることである。キー112及びキーフィールド110を2以上のハミング距離で符号化するために、第二の(ミスマッチしている(mismatching))キーフィールド110は、通常は、少なくとも2つの放電トランジスタ106を通してディスチャージするであろう。ミスマッチしているビット又はパリティビットのいずれかがソフトエラーによって破損されている場合は、対応するマッチライン102は、一つのみのトランジスタ106によってディスチャージされ、これが非常に長い時間をとるかもしれないために、対応するセンス回路114が、マッチライン102をhighとして検出し、マッチングを示すかもしれない。キー112は、さらに、第一キーフィールド110とマッチする、したがって、キー112は、一つよりも多いCAM26エントリとマッチしたように、あるいはヒットしたように見える。この場合、全てのマッチラインセンス回路114の出力を監視する(monitors)コリジョン検出回路116は、見かけの重複マッチング(apparent duplicate match)を検出し、エラーの原因となる。
さらに別の可能性は、キー112がキーフィールド110と2つのビットで異なることである。キー112及びキーフィールド110を、2のハミング距離で符号化することは、それらが同一のパリティビットを有するということを意味する。例えば、偶数パリティで、全てが0のビットを備えているキーフィールド110は、0パリティビットを有する。あるキー112は2つの1のビットを備え、他の全てのビットが0である、すなわち、このキー112もまた、0パリティビットを有する。もしソフトエラーが、キー112中の1のビットの一つに対応する位置において、キーフィールド110の0ビットの一つを1に破損する場合、そのときは、キー112とキーフィールド110とは、一つのビットのみが異なる(キー112における、もう一つの1のビット)。もしCAM26のタイミングが、不一致について(per miscompare)2つの放電回路106の最悪のケースに設定されている場合、マッチライン102はこのケースにおいてhighに留まるかもしれず、誤ったマッチングがCAM26によって検出され、キャッシュ21、25において誤ったヒットを生成する可能性がある。
この可能性を回避する一つの方法は、3又はそれより多いハミング距離によってキー112とキーフィールド110とを符号化することである。これは、計算上、より複雑になり、CAM26中の各エントリ100について、並びにTLB28又はマイクロTLB29中の各(サブ)ページアドレスについて、1よりも多いパリティビットが必要となる。他方では、3のハミング距離は、少なくとも3つの放電106が、各不一致マッチライン102をディスチャージする(少なくともソフトエラーが無いときに)ので、(同一技術に対し)CAM26の速度を増大する。高次のハミング距離(higher order Hamming distances)は、勿論可能であり、本開示の教示を与えられると、当業者にとっては、自明のインプリメンテーションであろう。しかしながら、さらに多くの冗長な記憶エレメント110、XORゲート108、及び放電トランジスタ106を追加することによってCAM26のサイズ及びその電力消費を増大することを犠牲にして、CAM26のスピードアップにおける見返り(return)は減少してくる。
ハミング距離を増加することの代替として、上記に説明された誤った状態は、(誤った)キャッシュヒットに続いてキャッシュコントローラによって検出されることができ、そして、状態が検出される場合はエラーが生成される。キャッシュヒットに続いて、キャッシュコントローラは、キーフィールド110を読み出す。パリティビットが無視され(set aside)、残りのキーフィールド110に対するパリティが再生成され、CAM26から読み取られたパリティと比較される。もし両パリティビットがマッチしない場合、キャッシュコントローラは、エントリ100を無効にし、例外を生成する(generates an exception)。マシン状態をキャッシュアクセスの前の状態に戻した後、プロセッサは、再度、キャッシュ21,25にアクセスし、キャッシュミスを生成する。次いで、正しい、符号化されたキーフィールド110が、キャッシュミス処理オペレーションの一部としてCAM26に書き込まれる。キャッシュコントローラは、キャッシュラインをプロセッサパイプライン12に届けた後に、フィールドキー110を読み出してパリティチェックするので、このオペレーションはキャッシュパフォーマンスに悪影響を与えない。
本発明は、キャッシュメモリ25の一部としてのCAM26のコンテキストにおいて、ここに説明されているが、当業者は、本発明がこのようなアプリケーションに限定されないことを容易に認識するであろう。連想メモリは、キャッシュコヒーレンシスキームをサポートするためにアドレスが「スヌープされる(snooped)」データバッファ、CAMに対してIPアドレスが検索されるパケットルータ、などを含む、さまざまな回路及びシステムに使われている。多くのそのようなアプリケーションにおいては、CAMの速度は、CAMに対して適用されるべき符号化キーを格納することによって全体的なサイクルタイムに影響を与えることなく、ミスマッチがあり次第、2つ以上の放電回路を作動させるようにキーフィールドを符号化することによって、改善されることができる。
本発明は、特定の機能、態様、及び実施形態に関して説明されているが、多数の変形、修正、及び他の実施形態が本発明の広い範囲内では可能であることは明らかであり、従って、すべての変形、修正及び実施形態は、本発明の範囲にあると見なされるべきである。従って、本実施形態は、全ての面において説明のためのものであって、限定するものでないとして解釈されるべきであり、添付の特許請求の範囲の意味する、また、均等の範囲内に入る全ての変更は、その中に包含されるように意図されている。
CAM構造における典型的なマッチラインの部分機能ブロック図。 プロセッサの機能ブロック図。 ページアドレスの符号化及び格納の流れ図。 符号化ページアドレスの読み出し、ページオフセットの符号化、及び符号化物理アドレスのCAMへの適用、の流れ図。

Claims (22)

  1. 複数の符号化されたキーフィールドを有する連想メモリ(CAM)にアクセスする方法であって、
    検索キーを符号化することと、
    前記符号化された検索キーを格納することと、
    前記格納された、符号化された検索キーを使って、前記CAMにアクセスすることと、
    を備える方法。
  2. 検索キーを符号化することは、前記検索キーを2のハミング距離で符号化することを備える、請求項1に記載の方法。
  3. 検索キーを符号化することは、前記検索キーを3のハミング距離で符号化することを備える、請求項1に記載の方法。
  4. 前記格納された、符号化された検索キーを使って、前記CAMにアクセスすることは、一つ以上の符号化されたキーフィールドにおける単一のビットエラーにもかかわらず正しい結果を生成する、請求項1に記載の方法。
  5. 検索キーを符号化することは、前記検索キーの第一部分を符号化することを備え、前記符号化された検索キーを格納することは、前記検索キーの前記符号化された第一部分を格納することを備える、請求項1に記載の方法。
  6. 前記検索キーの第二部分を符号化すること、をさらに備え、前記格納された、符号化された検索キーを使って、前記CAMにアクセスすることは、前記検索キーの前記符号化された第二部分に連結された前記検索キーの、前記格納された符号化された第一部分を使って、前記CAMにアクセスすること、を備える、請求項5に記載の方法。
  7. 前記検索キーは、物理アドレスを備える、請求項1に記載の方法。
  8. 前記符号化された検索キーを格納することは、前記物理アドレスの符号化されたページアドレス部分をトランスレーションルックアサイドバッファ(TLB)の中に格納すること、を備える、請求項7に記載の方法。
  9. 前記ページアドレスから、2つ以上のサブページアドレスを生成することと、なお、各サブページアドレスは前記ページアドレスよりも小さなメモリページサイズをアドレス指定する;
    少なくとも一つのサブページアドレスを符号化することと;
    前記符号化されたサブページアドレスをマイクロTLBの中に格納することと;
    をさらに備え、
    前記格納された、符号化された検索キーを使って、前記CAMにアクセスすることは、前記マイクロTLB中の前記符号化されたサブページアドレスの一つを使って、前記CAMにアクセスすること、を備える、
    請求項8に記載の方法。
  10. 各符号化されたキーフィールドは、2のハミング距離で符号化され、パリティビットを含み、
    前記符号化された検索キーと符号化されたキーフィールドとの間でマッチングが検出される場合は、
    前記CAMから、前記格納されたパリティビットを含む、前記符号化されたキーフィールドを読み出すことと、
    前記符号化されたキーフィールドに対するパリティビットを再生成することと、
    前記再生されたパリティビットを前記格納されたパリティビットと比較することと
    を、
    そして、前記両パリティビットが不一致の場合は、エラーを生成すること
    を、
    さらに備える、
    請求項1に記載の方法。
  11. 連想メモリ(CAM)中のアドレスをマッチングする方法であって、
    前記CAM中に、前記アドレスの符号化バージョンをキーフィールドとして格納することと、
    トランスレーションルックアサイドバッファ(TLB)中に、前記アドレスのページアドレス部分の符号化バージョンを格納することと、
    マッチング検出のために、前記TLBからの前記符号化されたアドレスを、前記CAM中の複数の符号化されたキーフィールドと比較することと、
    を備える方法。
  12. 前記アドレスの前記符号化バージョンは、2のハミング距離で符号化された前記アドレスである、請求項11に記載の方法。
  13. 前記アドレスの前記符号化バージョンは、3のハミング距離で符号化された前記アドレスである、請求項11に記載の方法。
  14. 前記TLBからの前記符号化されたアドレスを、前記CAM中の複数の符号化されたキーフィールドと比較することは、1つ以上の符号化されたキーフィールド中の単一のビットエラーにかかわらずに、マッチングを正しく検出する、請求項11に記載の方法。
  15. 前記アドレスのページオフセット部分を符号化することをさらに備え、前記TLBからの前記符号化されたアドレスを前記CAM中の複数の符号化されたキーフィールドと比較することは、前記符号化されたページオフセットに連結された、前記TLBからの前記符号化されたページアドレスを、前記CAM中の複数の符号化されたキーフィールドと比較することを備える、請求項11に記載の方法。
  16. 前記ページアドレスから、2つ以上のサブページアドレスを生成することと、なお、各サブページアドレスは、前記ページアドレスよりも小さなメモリページサイズをアドレス指定する;
    少なくとも一つのサブページアドレスを符号化することと;
    前記符号化されたサブページアドレスをマイクロTLB中に格納することと;
    をさらに備え、
    前記TLBからの前記符号化されたアドレスを前記CAM中の複数の符号化キーフィールドと比較することは、前記TLBからの符号化されたサブページアドレスを前記CAM中の複数の符号化されたキーフィールドと比較すること、を備える、
    請求項11に記載の方法。
  17. 前記CAM中の各符号化されたキーフィールドは、2のハミング距離で符号化され、パリティビットを含み、
    前記TLBからの前記符号化されたアドレスと前記CAM中の符号化されたキーフィールドとの間でマッチングが検出される場合は、
    前記CAMから、前記格納されたパリティビットを含む、前記符号化されたキーフィールドを読み出すことと、
    前記符号化されたキーフィールドに対するパリティビットを再生成することと、
    前記再生されたパリティビットを前記格納されたパリティビットと比較することと
    を、
    前記両パリティビットが不一致の場合は、エラー信号を生成すること
    を、
    さらに備える、
    請求項11に記載の方法。
  18. 連想メモリ(CAM)及びランダムアクセスメモリ(RAM)を備えるキャッシュメモリと、なお、前記のキャッシュは、検索キーが前記CAM中に格納された対応するキーフィールドにマッチングするとき、データをRAMエントリに格納する又はRAMエントリから供給するように作動し、前記キーフィールドは、少なくとも2のハミング距離で符号化される;
    前記CAMに対する検索キーとして、ページアドレスを格納し、出力するように作動するトランスレーションルックアサイドバッファ(TLB)と、なお、前記ページアドレスは、前記CAMキーフィールドと同じアルゴリズムによって符号化される;
    を備えるプロセッサ。
  19. 前記CAMキーフィールドと前記TLB物理アドレスとは、3のハミング距離で符号化される、請求項18に記載のプロセッサ。
  20. 前記TLB中の一つのページアドレスに対応する2つ以上のサブページアドレスを格納するよう作動するマイクロTLBをさらに備え、前記サブページアドレスは、前記TLBページアドレスよりも小さなメモリページサイズをアドレス指定し、前記マイクロTLBは、前記CAMに対する検索キーとして前記サブページアドレスの一つを供給するように作動する、請求項18に記載のプロセッサ。
  21. 各CAMエントリは、high状態にプリチャージされ、当該エントリに格納された前記キーフィールドの対応するビットとミスマッチする前記検索キーの各ビットに対し放電トランジスタを通してディスチャージされる、マッチラインを備え、パリティビットと関連付けられた前記放電トランジスタは、前記CAMエントリ中の他の放電トランジスタよりも多くの電流をディスチャージするように作動する、請求項18に記載のプロセッサ。
  22. 検索キーがキーフィールドとマッチングするとき、前記キャッシュは、前記キーフィールド及び格納されたキーフィールドパリティビットを読み出し、前記キーフィールドに対するパリティビットを再生成し、前記再生成パリティビットと前記格納されたパリティビットとを比較し、前記両ビットがミスマッチする場合は、エラー信号を生成するようにさらに作動する、請求項18に記載のプロセッサ。
JP2008538210A 2005-10-28 2006-10-30 格納された符号化キーを使った高速cam検索 Expired - Fee Related JP5118051B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/262,063 US7761774B2 (en) 2005-10-28 2005-10-28 High speed CAM lookup using stored encoded key
US11/262,063 2005-10-28
PCT/US2006/060371 WO2007051205A1 (en) 2005-10-28 2006-10-30 High speed cam lookup using stored encoded key

Publications (2)

Publication Number Publication Date
JP2009514115A true JP2009514115A (ja) 2009-04-02
JP5118051B2 JP5118051B2 (ja) 2013-01-16

Family

ID=37865671

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008538210A Expired - Fee Related JP5118051B2 (ja) 2005-10-28 2006-10-30 格納された符号化キーを使った高速cam検索

Country Status (8)

Country Link
US (1) US7761774B2 (ja)
EP (1) EP1941512B1 (ja)
JP (1) JP5118051B2 (ja)
KR (1) KR100986546B1 (ja)
CN (1) CN101341547B (ja)
BR (1) BRPI0618032A2 (ja)
IL (1) IL191127A0 (ja)
WO (1) WO2007051205A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9559987B1 (en) * 2008-09-26 2017-01-31 Tellabs Operations, Inc Method and apparatus for improving CAM learn throughput using a cache
US8095831B2 (en) * 2008-11-18 2012-01-10 Freescale Semiconductor, Inc. Programmable error actions for a cache in a data processing system
US7881089B2 (en) * 2009-02-24 2011-02-01 International Business Machines Corporation Coding techniques for improving the sense margin in content addressable memories
US8667258B2 (en) 2010-06-23 2014-03-04 International Business Machines Corporation High performance cache translation look-aside buffer (TLB) lookups using multiple page size prediction
US9176895B2 (en) 2013-03-16 2015-11-03 Intel Corporation Increased error correction for cache memories through adaptive replacement policies
US9405860B1 (en) * 2014-03-11 2016-08-02 L-3 Communications Corp. Content addressable memory in which keys are embedded in comparators
US9513987B2 (en) * 2014-11-07 2016-12-06 International Business Machines Corporation Using error correcting codes for parity purposes
US10025747B2 (en) * 2015-05-07 2018-07-17 Samsung Electronics Co., Ltd. I/O channel scrambling/ECC disassociated communication protocol
US9703894B2 (en) 2015-09-25 2017-07-11 International Business Machines Corporation Stored data with temporal proximity analysis for very large scale data with very low built in latency
KR20170130138A (ko) 2016-05-18 2017-11-28 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
CN106599149A (zh) * 2016-12-07 2017-04-26 爱普(福建)科技有限公司 一种工程文本的编码方法
US10289752B2 (en) * 2016-12-12 2019-05-14 Intel Corporation Accelerator for gather-update-scatter operations including a content-addressable memory (CAM) and CAM controller
CN109979503B (zh) * 2019-03-22 2021-04-30 安徽大学 一种在内存中实现汉明距离计算的静态随机存储器电路结构
JP7235591B2 (ja) * 2019-05-28 2023-03-08 株式会社東芝 情報処理回路及び情報処理方法
US11232038B2 (en) 2019-06-05 2022-01-25 Samsung Electronics Co., Ltd. Ternary content addressable memory and operating method thereof
US11436071B2 (en) * 2019-08-28 2022-09-06 Micron Technology, Inc. Error control for content-addressable memory
US11797531B2 (en) * 2020-08-04 2023-10-24 Micron Technology, Inc. Acceleration of data queries in memory
US11614995B2 (en) 2020-12-21 2023-03-28 Honeywell International Inc. Dual redundant memory radiation hardening

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2268297A (en) * 1992-06-30 1994-01-05 Inmos Ltd Content addressable memory.
US5455834A (en) * 1993-06-14 1995-10-03 Hal Computer Systems, Inc. Fault tolerant address translation method and system
JPH0922595A (ja) * 1995-07-05 1997-01-21 Fujitsu Ltd 連想記憶装置
JPH09223070A (ja) * 1996-02-19 1997-08-26 Hitachi Ltd データ変換回路
JPH1027481A (ja) * 1996-07-11 1998-01-27 Hitachi Ltd 半導体集積回路
US20050010719A1 (en) * 2003-07-11 2005-01-13 Slavin Keith R. Data encoding for fast CAM and TCAM access times
US20050027961A1 (en) * 2003-07-31 2005-02-03 David Zhang System and method for resolving virtual addresses using a page size tag

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5253328A (en) * 1989-11-17 1993-10-12 Microelectronics & Computer Technology Corp. Neural-network content-addressable memory
US5327534A (en) * 1990-07-30 1994-07-05 Digital Equipment Corporation Detection of duplicate alias addresses
US5680566A (en) * 1995-03-03 1997-10-21 Hal Computer Systems, Inc. Lookaside buffer for inputting multiple address translations in a computer system
EP0813709B1 (en) * 1995-03-03 2007-10-17 Fujitsu Limited Parallel access micro-tlb to speed up address translation
US5652580A (en) * 1995-06-09 1997-07-29 Hal Computer Systems, Inc. Method and apparatus for detecting duplicate entries in a look-up table
US6067656A (en) * 1997-12-05 2000-05-23 Intel Corporation Method and apparatus for detecting soft errors in content addressable memory arrays
US6230231B1 (en) * 1998-03-19 2001-05-08 3Com Corporation Hash equation for MAC addresses that supports cache entry tagging and virtual address tables
US6308297B1 (en) * 1998-07-17 2001-10-23 Sun Microsystems, Inc. Method and apparatus for verifying memory addresses
US6700827B2 (en) * 2001-02-08 2004-03-02 Integrated Device Technology, Inc. Cam circuit with error correction
US6754799B2 (en) * 2001-05-16 2004-06-22 Microsoft Corporation System and method for indexing and retrieving cached objects
US7257763B1 (en) * 2001-08-03 2007-08-14 Netlogic Microsystems, Inc. Content addressable memory with error signaling
US6597595B1 (en) * 2001-08-03 2003-07-22 Netlogic Microsystems, Inc. Content addressable memory with error detection signaling
US7237156B1 (en) * 2001-08-03 2007-06-26 Netlogic Microsystems, Inc. Content addressable memory with error detection
US7472231B1 (en) * 2001-09-07 2008-12-30 Netapp, Inc. Storage area network data cache
US6760881B2 (en) * 2001-10-16 2004-07-06 International Business Machines Corporation Method for combining refresh operation with parity validation in a DRAM-based content addressable memory (CAM)
JP4131789B2 (ja) * 2001-10-25 2008-08-13 富士通株式会社 キャッシュ制御装置および方法
US7200793B1 (en) * 2002-03-22 2007-04-03 Altera Corporation Error checking and correcting for content addressable memories (CAMs)
US7216284B2 (en) * 2002-05-15 2007-05-08 International Business Machines Corp. Content addressable memory having reduced power consumption
US6618281B1 (en) * 2002-05-15 2003-09-09 International Business Machines Corporation Content addressable memory (CAM) with error checking and correction (ECC) capability
US7100097B2 (en) * 2002-07-16 2006-08-29 Hewlett-Packard Development Company, L.P. Detection of bit errors in maskable content addressable memories
US6978343B1 (en) * 2002-08-05 2005-12-20 Netlogic Microsystems, Inc. Error-correcting content addressable memory
US7010741B2 (en) * 2002-10-29 2006-03-07 Mosaid Technologies Method and circuit for error correction in CAM cells
US6993623B2 (en) * 2002-12-23 2006-01-31 Micron Technology, Inc. Parity bit system for a CAM
US7237172B2 (en) * 2002-12-24 2007-06-26 Micron Technology, Inc. Error detection and correction in a CAM
US7152140B2 (en) * 2003-06-18 2006-12-19 Intel Corporation Masking parity information associated with a ternary content addressable memory
US6870749B1 (en) * 2003-07-15 2005-03-22 Integrated Device Technology, Inc. Content addressable memory (CAM) devices with dual-function check bit cells that support column redundancy and check bit cells with reduced susceptibility to soft errors
US6987684B1 (en) * 2003-07-15 2006-01-17 Integrated Device Technology, Inc. Content addressable memory (CAM) devices having multi-block error detection logic and entry selective error correction logic therein
US7296210B2 (en) * 2003-09-16 2007-11-13 Alcatel-Lucent Inc Facilitating error detection for content addressable memory
US7305519B1 (en) * 2004-03-29 2007-12-04 Cisco Technology, Inc. Error protection for associative memory entries and lookup operations performed thereon
JP2005353238A (ja) * 2004-06-14 2005-12-22 Renesas Technology Corp 連想メモリ
US7366829B1 (en) * 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7304873B1 (en) * 2005-01-25 2007-12-04 Netlogic Microsystems, Inc. Method for on-the-fly error correction in a content addressable memory (CAM) and device therefor

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2268297A (en) * 1992-06-30 1994-01-05 Inmos Ltd Content addressable memory.
US5455834A (en) * 1993-06-14 1995-10-03 Hal Computer Systems, Inc. Fault tolerant address translation method and system
JPH0922595A (ja) * 1995-07-05 1997-01-21 Fujitsu Ltd 連想記憶装置
JPH09223070A (ja) * 1996-02-19 1997-08-26 Hitachi Ltd データ変換回路
JPH1027481A (ja) * 1996-07-11 1998-01-27 Hitachi Ltd 半導体集積回路
US20050010719A1 (en) * 2003-07-11 2005-01-13 Slavin Keith R. Data encoding for fast CAM and TCAM access times
US20050027961A1 (en) * 2003-07-31 2005-02-03 David Zhang System and method for resolving virtual addresses using a page size tag

Also Published As

Publication number Publication date
IL191127A0 (en) 2008-12-29
KR100986546B1 (ko) 2010-10-07
KR20080068895A (ko) 2008-07-24
EP1941512B1 (en) 2012-08-15
JP5118051B2 (ja) 2013-01-16
BRPI0618032A2 (pt) 2011-08-16
CN101341547A (zh) 2009-01-07
EP1941512A1 (en) 2008-07-09
US7761774B2 (en) 2010-07-20
CN101341547B (zh) 2011-10-05
WO2007051205A1 (en) 2007-05-03
US20070113158A1 (en) 2007-05-17

Similar Documents

Publication Publication Date Title
JP5118051B2 (ja) 格納された符号化キーを使った高速cam検索
US9112537B2 (en) Content-aware caches for reliability
US5392410A (en) History table for prediction of virtual address translation for cache access
US8156309B2 (en) Translation look-aside buffer with variable page sizes
US9286172B2 (en) Fault-aware mapping for shared last level cache (LLC)
US6804162B1 (en) Read-modify-write memory using read-or-write banks
US7100097B2 (en) Detection of bit errors in maskable content addressable memories
US10853165B2 (en) Fault resilient apparatus and method
US6510506B2 (en) Error detection in cache tag array using valid vector
US6675266B2 (en) Circuit and method for protecting 1-hot and 2-hot vector tags in high performance microprocessors
US6502218B1 (en) Deferred correction of a single bit storage error in a cache tag array
US8595465B1 (en) Virtual address to physical address translation using prediction logic
US20040015753A1 (en) Detection of bit errors in content addressable memories
Ling et al. Lowering the hit latencies of low voltage caches based on the cross-sensing timing speculation SRAM
Shang et al. RRS cache: a low voltage cache based on timing speculation SRAM with a reuse-aware cacheline remapping mechanism
US7607048B2 (en) Method and apparatus for protecting TLB's VPN from soft errors
US6134699A (en) Method and apparatus for detecting virtual address parity error for a translation lookaside buffer
JP3697990B2 (ja) ベクトル処理装置のオペランドキャッシュ
Archana et al. An efficient architecture for improved reliability of cache memory using same tag bits
JPH01273152A (ja) キャッシュメモリ制御方式
Chandana et al. A Novel Mechanism to Improve Cache Performance by Correction of Transient Errors
Palframan Cost-Effective Techniques for Processor Reliability
JP2004038553A (ja) データ処理装置
Ladas Cache reliability for large numbers of permanent faults
Siddique Spare Block Cache Architecture to Enable Low-Voltage Operation

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110426

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110726

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110826

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120124

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120424

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120502

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120524

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120531

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120625

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120724

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120918

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121018

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5118051

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151026

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees