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