(57)【特許請求の範囲】
【請求項１】
物理アドレスにて格納するメモリに関して使用するための電子プロセッサコンピュータシステムであって、
プロセッサと、
メモリキャッシュと、
仮想アドレスによって物理アドレスのメモリデータをキャッシュするキャッシュ制御回路と、
前記プロセッサからの仮想アドレスと物理アドレスとの間で変換するための変換回路と、
与えられた仮想アドレスを、前記メモリキャッシュにアクセスするために前記プロセッサから受け取るシノニム追跡回路であって、
（１）前記与えられた仮想アドレスが、前記メモリキャッシュにおけるデータの同一の物理アドレスにマッピングしている他の仮想アドレスに関するシノニムであるかを判定し、
（２）前記与えられた仮想アドレスがシノニムである場合、前記メモリキャッシュに関するアクセスするアドレスとして、前記他の仮想アドレスを用いて前記メモリキャッシュにアクセスする、シノニム追跡回路と、を備え、
前記シノニム追跡回路は、与えられた仮想アドレスがシノニムであるかを判定するためにシノニムとしてリンクされた仮想アドレスの第１のテーブルを備え、
前記シノニム追跡回路は、前記与えられた仮想アドレスに関連する物理アドレスを判定することによって、物理アドレス及び仮想アドレスをリンクしている第２のテーブルに前記判定した物理アドレスを適用することによって、及び、判定された物理アドレスが前記第２のテーブルにおける仮想アドレスにリンクする場合に、前記メモリキャッシュのためのアクセスするアドレスとして前記第２のテーブルの前記仮想アドレスを用いることによって、前記メモリキャッシュのキャッシュミスに対応するように構成されている、
電子プロセッサコンピュータシステム。
【請求項２】
前記メモリキャッシュは、仮想アドレスによってのみアクセス可能な物理アドレスのデータを保持する、
請求項１に記載の電子プロセッサコンピュータシステム。
【請求項３】
他の仮想アドレス各々は、多数の仮想アドレスのシノニムであるが他の鍵仮想アドレスのシノニムでない、鍵仮想アドレスである、
請求項１に記載の電子プロセッサコンピュータシステム。
【請求項４】
前記与えられた仮想アドレスが、他の仮想アドレスに関するシノニムでない場合、前記シノニム追跡回路は、前記メモリキャッシュに関するアクセスするアドレスとして、前記与えられた仮想アドレスを用いて前記メモリキャッシュにアクセスする、
請求項１に記載の電子プロセッサコンピュータシステム。
【請求項５】
前記第１のテーブルは、リンクされた仮想アドレスの組に関連するメモリアクセス権限の組を更に含み、前記他の仮想アドレスが前記アクセスするアドレスとして用いられる場合に、前記メモリキャッシュへのアクセスは、前記第１のテーブルの前記メモリアクセス権限によって制御される、
請求項４に記載の電子プロセッサコンピュータシステム。
【請求項６】
前記シノニム追跡回路は、前記第１のテーブルにおける少なくともいくつかの前記仮想アドレスの圧縮されたシグネチャを含み、前記圧縮されたシグネチャは、前記与えられた仮想アドレスが前記第１のテーブルにありそうであるかを示し、前記シノニム追跡回路は、まず、前記圧縮されたシグネチャを検査し、前記与えられた仮想アドレスが前記第１のテーブルにありそうであることを圧縮されたシグネチャが示している場合にのみ、前記第１のテーブルを検査する、
請求項４に記載の電子プロセッサコンピュータシステム。
【請求項７】
前記第２のテーブルは、更に、リンクされた物理及び仮想アドレスを用いる場合に、メモリへのアクセスを制御するメモリアクセス権限と、リンクされた物理アドレス及び仮想アドレスを関連付ける、
請求項１に記載の電子プロセッサコンピュータシステム。
【請求項８】
前記メモリキャッシュの行は、対応している仮想アドレスにリンクされた前記第２のテーブルの対応しているエントリーへのインデックスを保持しており、前記シノニム追跡回路は、前記メモリキャッシュの行が追い出され又は無効化される場合に、更新のために前記第２のテーブルにおけるエントリーを識別するために前記インデックスを受け取る、
請求項１に記載の電子プロセッサコンピュータシステム。
【請求項９】
前記第２のテーブルにおける単一の鍵仮想アドレスのみが、与えられた物理アドレスにリンクする、
請求項１に記載の電子プロセッサコンピュータシステム。
【請求項１０】
前記プロセッサは、ロードキュー及びストアキューを使用しているアウトオブオーダ・プロセッサであり、前記ロードキュー及び前記ストアキューにおけるデータは、鍵仮想アドレスにリンクされる、
請求項９に記載の電子プロセッサコンピュータシステム。
【請求項１１】
前記シノニム追跡回路は、与えられた仮想アドレスを物理アドレスに変換するために変換索引バッファ及びページテーブルを用いる、
請求項１に記載の電子プロセッサコンピュータシステム。
【請求項１２】
第２のテーブルは、更に、前記メモリキャッシュにおける前記物理アドレスのデータの前記第２のテーブルのサブセットの物理アドレス各々を識別してよく、前記キャッシュ制御回路は、前記メモリキャッシュに登録された前記第２のテーブルの物理アドレスの一部を識別するために前記第２のテーブルを用いてよい、
請求項１に記載の電子プロセッサコンピュータシステム。
【請求項１３】
前記第２のテーブルは、前記メモリキャッシュにおいて登録された前記物理アドレスの多数のサブセットを示している物理アドレスに関連するカウンターを実現する、
請求項１に記載の電子プロセッサコンピュータシステム。
【請求項１４】
メモリキャッシュ及び仮想アドレスによって物理アドレスのメモリデータをキャッシュするキャッシュ制御回路と組んでいる少なくとも１つのプロセッサであって、更に前記プロセッサからの仮想アドレスと物理アドレスとの間の変換のための変換回路を備えている前記プロセッサと、与えられた仮想アドレスが、前記メモリキャッシュにおけるデータの同一の物理アドレスにマッピングしている他の仮想アドレスに関するシノニムであるかを判定するために、前記与えられた仮想アドレスを前記プロセッサから受け取るシノニム追跡回路であって、前記与えられた仮想アドレスがシノニムである場合、前記メモリキャッシュに関するアクセスするアドレスとして、前記他の仮想アドレスを用いてメモリキャッシュにアクセスする前記シノニム追跡回路であり、与えられた仮想アドレスがシノニムであるかを判定するためにシノニムとしてリンクされた仮想アドレスの第１のテーブルを備える前記シノニム追跡回路を備えている種類の電子プロセッサコンピュータシステムにおいてデータをキャッシュする方法であって、当該方法は、
（１）仮想アドレスを用いてメモリキャッシュにおけるデータを格納するステップであって、前記メモリキャッシュは、前記仮想アドレスの少なくとも一部を保持しているステップと、
（２）与えられた仮想アドレスが前記メモリキャッシュにアクセスするための指示されたシノニム仮想アドレスを有するかをまず判定し、有する場合、前記メモリキャッシュにアクセスするために前記指示されたシノニム仮想アドレスを用いることによって、前記与えられた仮想アドレスを用いて前記メモリキャッシュからのデータにアクセスするステップと、
（３）前記与えられた仮想アドレスに関連する物理アドレスを判定することによって、物理アドレス及び仮想アドレスをリンクしている第２のテーブルに前記判定した物理アドレスを適用することによって、及び、判定された物理アドレスが前記第２のテーブルにおける仮想アドレスにリンクする場合に、前記メモリキャッシュのためのアクセスするアドレスとして前記第２のテーブルの前記仮想アドレスを用いることによって、前記メモリキャッシュのキャッシュミスに対応するステップと、
を含む方法。
【請求項１５】
仮想アドレスを用いて前記メモリキャッシュにおけるデータを格納するステップは、仮想アドレスのみを用いて前記格納されたデータへのアクセスを許可する、
請求項１４に記載の方法。
【請求項１６】
前記指示された仮想アドレスは、多数の仮想アドレスのシノニムであるが他の鍵仮想アドレスのシノニムでない、
請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
連邦政府の支援による研究又は開発に関する宣言
【０００２】
関連出願の相互参照
本願は、全体の参照によって本明細書に組み込まれる、２０１４年１２月２６日付け出願の米国仮出願第６２／０９６，９６２号、及び２０１４年１２月２９日付け出願の米国仮出願第６２／０９７，３４２号の利益を主張する。
【背景技術】
【０００３】
発明の背景技術
本願発明は、コンピュータ構成に関連し、特に、物理アドレスというよりも仮想アドレスによって、キャッシュコンテンツのアクセスを許容するメモリキャッシュを備えている改良されたコンピュータ構成に関連する。
【０００４】
キャッシュメモリは、比較的コンパクトである高速アクセスメモリ構造をプロセッサの近傍に備えることによって、メモリデータにアクセスするためにプロセッサが要する時間を最少化するために用いられる。時間的に近接するメモリアクセスは、ロード部分（参照局所性）において密集する傾向があり、従って、一度ロードされると再ロードを必要とする前に、キャッシュメモリがプロセッサによる多数のメモリアクセスを提供することを許容する期待を持って、メインメモリの一部がキャッシュメモリにロードされる。多くの場合、キャッシュの多数のレベル（例えば、Ｌ１、Ｌ２、Ｌ３）は、キャッシュ構造における高速アクセス及び固有の制限された格納量の間のトレードオフを最適化するために用いられ得る。
【０００５】
キャッシュメモリのデータにアクセスするために、一般的にインデックスビットと称する、データのアドレスビットの第１の組みからのビットの組みが、キャッシュにおいてインデックスし、インデックスされたエントリーにおける行を選択するために用いられる。一般的にタグビットと称する、アドレスビットの第２の組みからのビットの組みは、この後、選択されたエントリーに対応しているタグビットの組みと比較され、アドレスビットの第２の組みからのビットの組みがタグビットの選択された組に合致する場合に、ヒットが宣言される。
【０００６】
現代のプロセッサにおいて動作しているプログラムは、通常、メモリにおけるデータの物理アドレスとは異なる仮想アドレスを使用して、メモリにアクセス（読み込み又は書き込み）する。仮想アドレスの使用は、技術分野において知られているように、他のプロセスへの割り当てによって影響を与えられない連続メモリ領域を多数のプログラムに見せることを可能にすることによって、物理メモリがアクティブ仮想アドレスにのみ割り当てられることを可能にすることによって、及び他のプロセスの動作による１つのプロセスのメモリ破損を防止することによって、多数のプログラムの実行を大幅に容易にする。
【０００７】
仮想アドレス領域の使用は、この利点に関わらず、プログラムによって用いられる仮想アドレス領域からコンピュータメモリによって要求される物理アドレス領域への変換を要することにより、メモリアクセスにおける遅延を増大させる。通常、この変換は、各仮想アドレス領域から各物理アドレス領域への相互参照を行うエントリーを備えているページテーブルによって行われる。通常、ページテーブルエントリーは、また、対応している仮想ページにおいて、データのためのアクセス権限を備え得る。ページテーブルは、アドレスを変換する及び必要なアクセス権限を検査するプロセスを高速化するために、エントリーにページテーブルからの最近アクセスされたエントリーにキャッシュを割り当てる変換索引バッファ（ＴＬＢ）によって増加され得る。ＴＬＢは、高速、高関連構造を採用することによって、低いアクセスレイテンシ及び低い誤り率のために最適化されてよい。
【０００８】
仮想メモリを備えるシステムにおいて、キャッシュメモリは、通常、物理メモリアドレスによってアクセスされるにも関わらず、キャッシュにおけるデータにアクセスするために用いられるアドレスのビットの第１の及び第２の組み（例えば、インデックス及びタグ）は、同一の物理アドレスの両方の部分である。ＴＬＢ及びページテーブルを用いるアドレス変換のレイテンシは、メインメモリのために寛容性があるが、アドレス変換によって相当低速化され得る頻繁で迅速なアクセスを行うことを意図されるキャッシュメモリで用いられるときに、より負担になる。また、高関連ＴＬＢでの変換は、エネルギー不足であろう。
【０００９】
理想的には、キャッシュは、プログラムから仮想アドレスを用いて直接的にアクセスされることができ、キャッシュにおけるデータにアクセスするために用いられるビットの第１及び第２の組み（例えば、インデックス及びタグ）は、同一の仮想アドレスの両方の部分である。キャッシュされたデータにアクセスするための仮想アドレスの使用は、ＴＬＢ探索からの結果であるレイテンシ及びエネルギーオーバーヘッドを除去することができるが、しかしながら、同一の物理アドレスにマップされる別の仮想アドレスのグループになるシノニムの可能性によって複雑になる。このエイリアシング（又は、オーバーラッピング）は、（物理又はメイン）メモリにおけるデータである、例えば、別の仮想アドレス領域での異なるプロセスにわたっている共有情報を効率的に管理することを可能にして好適である。このような場合において、キャッシュのための仮想アドレスの使用は、多数の異なるキャッシュエントリーを同一の物理アドレス（シノニム仮想アドレス）にマッピングすることを許容することができ、これは、別の仮想アドレスにおける同一のデータを保持する。重複を許容することは、キャッシュ容量を減少させる。これは、また、重複の間の一貫性の問題を表示する。例えば、１つのプロセスが第１のキャッシュ位置を用いている共通物理アドレスに関するデータを更新する場合に、第２のプロセスは、第２のキャッシュ位置を用いている共通の物理アドレスのための最新の値を読み込むことができない。
【００１０】
キャッシュアクセスのために仮想アドレスを用いるキャッシュにおいて固有であるこの問題への１つの解決手段は、物理アドレス領域において仮想アドレスエイリアシング（又は、オーバーラッピング）を禁止することである。例えば、解決手段は、単一の物理アドレスからのデータがキャッシュにおける異なる仮想アドレスにてキャッシュされることを禁止することができる。この解決手段は、データへの参照の位置関係を利用するためのキャッシュの能力を著しく減少させる。同様に、解決手段は、特に、データが書き込まれる場合に、同一の物理ページからのデータがキャッシュにおける異なる仮想アドレスにてキャッシュされることを防止することができる。代替的に、解決手段は、シノニム自体の発生を除去する単一のグローバル仮想アドレス領域を採用することができる。これらの解決手段の各々は、ソフトウエアに相当な要求を設け、この実用的な効用を著しく制限する。
【００１１】
他の一般的に用いられる解決手段は、従来技術における仮想インデックス物理タグ（ＶＩＰＴ）キャッシュとして参照されるものである。ここで、エントリーを選択するべくキャッシュにインデクスするために用いられるビットの第１の組みは、仮想アドレスの一部であり、選択されたエントリーのタグビットとの比較のために用いられるビッドの第２の組みは、仮想アドレスに対応している物理アドレスの一部である。解決手段は、仮想アドレスのいくつかの下位のビット（ページオフセットビット）がアドレス変換の結果として変化しないという考えを利用する。従って、（対応している物理アドレスのものと同一である）仮想アドレスのこれらの下位のビットは、キャッシュへのインデックスのために用いられることができ、及び、対応しているエントリーに存在しているデータ及びタグビットへのアクセスを開始することができる。並列に、ＴＬＢは、物理アドレスを取得するためにアクセスされる。両方の動作が完了したときに、ＴＬＢアクセスから取得される物理アドレスビットは、キャッシュタグに格納されている物理アドレスと比較され、これらが合致する場合に、ヒットが宣言される。この手法は、ＴＬＢが並列にアクセスされるので、キャッシュアクセスのレイテンシを、従来のキャッシュアクセスよりも減少させるかもしれない。しかしながら、ＴＬＢアクセスエネルギーは、未だ消費され、従って、仮想アドレスにてアクセスされるキャッシュのエネルギーの利点は得られない。また、キャッシュをインデックスするために用いられる多数のビット（これらのビットは、アドレス変換の結果として変化するべきではない）に設けられる制限は、エネルギーの効率化を図ることを所望され得るというよりは、高い度合いの関連性を潜在的に要求している、キャッシュの構成を制限する。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
望まれることは、第１のアドレスがキャッシュにおいてインデックスするために、及び、エントリーを選択するために用いられ、及び第２のアドレスが選択されたタグビットに対して比較されるために、及び、ヒットが同一の仮想アドレスの両方の部分であることを宣言するために用いられるように、仮想アドレスにてアクセスされ得るキャッシュを備えることである。従って、キャッシュにおいてヒットするデータアクセスは、ＴＬＢにアクセスすること又は仮想から物理アドレスへ変換することを必要とせずに、仮想アドレスを用いて単独で行われ得る。このようなキャッシュは、キャッシュアクセスを行うための物理アドレスを採用した構成に対して、著しいアクセスレイテンシ及び／又はエネルギー消費の利点を有する。更に、このようなキャッシュの動作がソフトウエアに即応し、正しい動作を確実にするためのソフトウエアにおける要求が存在しないことが、また、望まれる。
【課題を解決するための手段】
【００１３】
本願発明者は、多数の重要な計算タスクにおいて、シノニムがプログラムの実行において存在している間に、データがキャッシュに残っている時間に匹敵する短い時間内に、（１）同一の物理アドレスにマップされ相当少ないシノニムが存在し、（２）キャッシュへの相当少ないアクセスがシノニムに関するデータへのものであるということについて認識してきた。本願発明は、与えられた仮想アドレスに関して直接的にキャッシュにアクセスすることにより、及びこの後にシノニム仮想アドレスを検出することにより、及びキャッシュアクセスの前に選択された鍵仮想アドレスにシノニム仮想アドレスを効果的に変換することによりこれらの考えを利用する。キャッシュされたデータの寿命の間のシノニムの相対的な不足により、控えめなサイズのデータ構造にてシノニムを追跡することが実用的である。
【００１４】
具体的には、発明は、物理アドレスにて格納するメモリに関して使用するための電子プロセッサ構成を提供する。構成は、プロセッサと、メモリキャッシュと、仮想アドレスによってメモリキャッシュにおける物理アドレスのメモリデータをキャッシュするキャッシュ制御回路と、プロセッサからの仮想アドレスと物理アドレスとの間で変換するための変換回路とを備える。加えて、構成は、与えられた仮想アドレスを、キャッシュにアクセスするためにプロセッサから受け取るシノニム追跡回路であって、１）与えられた仮想アドレスが、キャッシュにおけるデータの同一の与えられた物理メモリアドレスにマッピングしている他の仮想アドレスに関するシノニムであるかを判定し、（２）与えられた仮想メモリアドレスがシノニムである場合、メモリキャッシュに関するアクセスするアドレスとして、他の仮想アドレスを用いてメモリキャッシュにアクセスする。
【００１５】
例えば、発明の少なくとも１つの実施形態の特徴は、シノニムを追跡することにより、及び単一の指示された（鍵）仮想アドレスを用いて全てのキャッシュ要求を生成することにより、仮想アドレスを用いてアクセスされたキャッシュにおける仮想アドレスの可能なエリアジング又はオーバーラッピングを調節することである。
【００１６】
与えられた仮想アドレスが、他の仮想アドレスに関するシノニムでない場合、シノニム追跡は、メモリキャッシュのためのアクセスするアドレスとして、与えられた仮想アドレスを用いてメモリキャッシュにアクセスしてよい。
【００１７】
例えば、発明の少なくとも１つの実施形態の特徴は、シノニムが存在しない支配的な場合において仮想メモリアドレスを用いてキャッシュにより高速にアクセスすることを可能にすることである。
【００１８】
キャッシュコントローラは、与えられた仮想アドレスが他の仮想アドレスに関するシノニムであるかを判定するシノニム追跡回路と並列に、与えられえた仮想アドレスを用いてメモリキャッシュへのアクセスを準備してよい。
【００１９】
例えば、発明の少なくとも１つの実施形態の特徴は、シノニムが存在しない場合に、シノニム追跡への遅延アテンダントを減少させることである。
【００２０】
シノニム追跡回路は、与えられた仮想アドレスが、データの同一の物理メモリアドレスにマップされた他の仮想アドレスに関するシノニムであるかを判定するためのシノニムである仮想アドレスの第１のテーブル（ＡＲＴと称する）を備えてよい。
【００２１】
例えば、発明の少なくとも１つの実施形態の特徴は、短い時間枠において予期される少数のアクティブシノニムと一致するシノニムを監視する単純でコンパクトな方法を提供することである。
【００２２】
シノニム追跡回路は、与えられた仮想アドレスが第１のテーブルにありそうであるかを示している第１のテーブルの圧縮されたシグネチャを備えてよく、シノニム追跡回路は、まず、圧縮されたシグネチャを検査してよく、与えられた仮想アドレスが第１のテーブルにありそうであることを圧縮されたシグネチャが示している場合にのみ、第１のテーブルを検査してよい。
【００２３】
例えば、発明の少なくとも１つの実施形態の特徴は、シノニムが存在しない共通の場合において第１のテーブルの検討をショートカットして終了することである。
【００２４】
シノニム追跡回路は、与えられた仮想アドレスに関連する物理アドレスを判定することによって、物理アドレス及び指示された（鍵）仮想アドレスをリンクしている第２のテーブルに判定した物理アドレスを適用することによって、及び、判定された物理アドレスが第２のテーブルにおける（鍵）仮想アドレスにリンクする場合に、メモリキャッシュのためのアクセスするアドレスとして第２のテーブルの仮想アドレスを用いることによって、メモリキャッシュのキャッシュミスに応じてよい。
【００２５】
例えば、発明の少なくとも１つの実施形態の特徴は、また、シノニムが第１のテーブルにおける仮想アドレスによってリンクされていない場合に、共通の物理アドレスによって「隠れた」シノニムの識別を可能にすることである。
【００２６】
シノニム追跡回路は、アクセスするアドレスを物理アドレスに変換するために変換索引バッファ及びページテーブルを用いてよい。
【００２７】
例えば、発明の少なくとも１つの実施形態の特徴は、シノニム判定の目的のために現存する変換回路（例えば、ＴＬＢ）を活用することである。
【００２８】
第１のテーブル、第２のテーブル、及びキャッシュ行は、仮想アドレスにリンクされたメモリアクセス権限を備えてよい。
【００２９】
例えば、発明の少なくとも１つの実施形態の特徴は、本発明によってより可能にされるように、ページテーブル情報を参照する必要性なしで、仮想アドレスによってアクセスされるキャッシュのためのメモリアクセス権限を取り扱うことである。
【００３０】
電子プロセッサは、ロードキュー及びストアキューを用いているアウトオブオーダ・プロセッサであってよく、ロードキュー及びストアキューは、鍵仮想アドレスにリンクされたデータを格納してよい。
【００３１】
例えば、発明の少なくとも１つの実施形態の特徴は、プログラム実行における潜在的な誤りのリスクなしでロードキュー及びストアキューにおいて用いられることを仮想アドレスに可能にさせることである。キャッシュメモリの行は、対応している仮想アドレスにリンクされた第２のテーブルの対応しているエントリーへのインデックスを保持してよく、シノニム追跡回路は、キャッシュメモリの行が追い出された場合に、第２のテーブルにおけるエントリーを更新するためにこのインデックスを受け取ってよい。
【００３２】
例えば、発明の少なくとも１つの実施形態の特徴は、第２のテーブルにおけるエントリーの更新を調整するために、仮想アドレスの物理アドレスへの変換のための必要性を除去することである。
【００３３】
これらの特定のもの及び利点は、請求の範囲内ないであるが発明の範囲を画定しないいくつかの実施形態においてのみ適用されてよい。
【図面の簡単な説明】
【００３４】
【図１】本発明毎の仮想アドレスに応じているキャッシュを採用しているコンピュータ構成のブロック図であり、キャッシュコントローラ、変換索引バッファ、及びシノニム追跡回路を採用しているメモリ管理ユニットを示している。
【図２】メモリアクセス要求に応じており仮想アドレスを有しているメモリ管理ユニットの動作のフローチャーである。
【図３】シノニム追跡回路において用いられたシノニムシグネチャの図である。
【図４】シノニム追跡回路において用いられるアドレス再マッピングテーブルの図である。
【図５】シノニム追跡回路において用いられるアクティブシノニム検出の図である。
【図６】キャッシュにおける単一のキャッシュ行エントリーの図である。
【図７ａ】シノニム追跡回路へのアクセス及びアドレス再マッピングテーブルがパイプラインプロセッサに分配される多数の実施形態の図である。
【図７ｂ】シノニム追跡回路へのアクセス及びアドレス再マッピングテーブルがパイプラインプロセッサに分配される多数の実施形態の図である。
【図７ｃ】シノニム追跡回路へのアクセス及びアドレス再マッピングテーブルがパイプラインプロセッサに分配される多数の実施形態の図である。
【図７ｄ】シノニム追跡回路へのアクセス及びアドレス再マッピングテーブルがパイプラインプロセッサに分配される多数の実施形態の図である。
【発明を実施するための形態】
【００３５】
ここで、図１を参照して、コンピュータ処理システム１０は、後述の様々な要素を備えるメモリシステム１６と通信する１つ以上のプロセッサシステム１２、及びネットワーク、ターミナル等のような他の装置１５を備え得る。
【００３６】
各プロセッサシステム１２は、メモリシステム１６に関して、及び具体的にはＬ１キャッシュ１８ａ及びＬ２  キャッシュ１８ｂのような１つ以上のキャッシュ１８に関して、メモリ管理ユニット（ＭＭＵ）１４を介して通信するプロセッサ１３を備え得る。プロセッサシステム１２は、ランダムアクセスメモリディスクドライブ等を含んでいる物理メモリ２０と順次通信する低レベルキャッシュ（例えば、Ｌ３キャッシュ１８ｃ）を備え得る。プロセッサ１３は、条件分岐等のフロー制御動作と共に、演算及び論理動作、メモリアクセス動作を含んでいる、標準コンピュータ命令を実行する能力を提供し得る。プロセッサ１３は、下記のように技術分野において一般的に理解される機能を提供する、ロードキュー１７及びストアキュー１９を備え得る。
【００３７】
ＭＭＵ１４は、技術分野において一般的に理解される技術によるキャッシュ１８のエビクト及びロードラインを備えている物理メモリ２０からのキャッシュ１８の更新を行うキャッシュコントローラ２２を備え得る。以下にてより詳細に述べられるように、ＭＭＵ１４は、物理アドレスというよりも仮想アドレスによってアクセスされ得るように、キャッシュ１８ａにおけるデータを格納する。データは、例えば、仮想アドレスによって又は物理アドレスによってアクセスされ得るように、他のキャッシュ１８ｂ及び１８ｃに格納され得る。これに関して、キャッシュコントローラ２２は、物理アドレスＰｂを提供するために、仮想アドレスＶｂの仮想アドレス領域から、物理メモリ２０の物理アドレス領域へのマッピングを判定することができる変換索引バッファ（ＴＬＢ）２６と通信し得る。この物理アドレスＰｂは、キャッシュ１８においてキャッシュミスが存在する場合に、最終的に、ライン３０を介して物理メモリ２０にアクセスするために用いられる。後述の記載において、仮想アドレス（例えば、Ｖｂ）は、格納されたデータを独自に識別するために必要な仮想アドレス全体、及びキャッシュ１８のような構造をインデックスするために用いられる仮想アドレスの部分集合の両方を参照するために用いられる。特有の使用法が、明細書から明白になる。
【００３８】
技術分野において理解されるように、ＴＬＢ２６は、仮想アドレス領域及び物理アドレス領域の間の現在の変換に関連するキャッシュを提供する。特定の仮想アドレスＶｂのためのマッピングがＴＬＢ２６において見つからない場合、キャッシュコントローラ２２は、１つ以上のページテーブル２８を参照して、「ページウォーク」することによって、必要な変換を取得し得る。ＴＬＢ２６又はページテーブル２８へのアクセスは、時間及びエネルギー消費であり、望ましくは避けられる。ページテーブル２８は、破線箱の２０、１８にラベルされることにより一般的に示された、キャッシュ１８に部分的に、及び、物理メモリ２０に部分的に格納されてよい。
【００３９】
ＭＭＵ１４は、また、１つの実施形態において、以下にて詳細に記述されるように、アクティブシノニムシグネチャ（ＳＳ）３２、アドレス再マッピングテーブル（ＡＲＴ）３４を備える第１のテーブルと、アクティブシノニム検出テーブル（ＡＳＤＴ）３６を備える第２のテーブルとを備え得る、シノニム回路３５を備える。
【００４０】
仮想アドレスを使用するキャッシュアクセスの概要
ＭＭＵ１４は、アドレスライン２４を介してプロセッサ１３からメモリアクセス要求を受信し、当該要求は、アクセスされるデータの仮想アドレス（Ｖｂ）を含んでいる。これらの要求は、実際に、Ｖｂがキャッシュ１８における同一のデータにアクセスするために用いられている、他のアクティブ仮想アドレス（鍵仮想アドレス）のアクティブシノニムであるかを判定するシノニム回路３５のＳＳ３２及びＡＲＴ３４に送信され得る。用語「アクティブ」は、キャッシュ１８における現在のデータにマップする仮想アドレスを称する。
【００４１】
ＳＳ３２が、アクティブシノニムが存在しないことを示す場合、仮想アドレスＶｂは、仮想アドレスＶｂが鍵仮想アドレスであるという期待を持ってキャッシュ１８に直接的にアクセスするために用いられる。
【００４２】
一方、ＳＳ３２が、Ｖｂがアクティブシノニムであるかもしれないことを示す場合、仮想アドレスＶｂは、この関係を確実にしてＶｂがシノニムであるための鍵仮想アドレス（例えば、Ｖａ）を識別するアドレス再マッピングテーブル（ＡＲＴ）３４に送られる。
【００４３】
アクティブ鍵仮想アドレスを識別すると、Ｖａは、メモリキャッシュ１８にアクセスするために代わりに用いられる。
【００４４】
上述の手法は、Ｖｂが他のアクティブアドレス（鍵仮想アドレス）である場合、又は、Ｖｂが鍵仮想アドレスである場合を含んでいる、ほとんどの場合において、ＴＬＢ２６による処理なしで、又は、ページテーブル２８を介してウォークする必要なしで、仮想アドレスを用いてキャッシュ１８にプロセッサ１３によって直接的にアクセスすることを可能にする。
【００４５】
メモリキャッシュ１８にキャッシュミスが存在する場合、キャッシュコントローラ２２は、ＳＳ３２又はＡＲＴ３４によって現在識別されていないが、同一の物理アドレスＰｘにマップされた既知のアクティブ鍵仮想アドレスに対して、与えられた仮想アドレス（Ｖｂ）を比較することによって検出可能な、Ｖｂへの既知でないシノニムが存在するかもしれないかを判定するためにＡＳＤＴ３６を参照する。このような隠れたシノニムが検出される場合、必要なキャッシュ行７１が各ＡＳＤＴ３６に利用可能になり、メモリキャッシュ１８は、鍵仮想アドレスＶａを用いて再びアクセスされる。他の状態では、アクセスはキャッシュ又は物理メモリ２０の他のレベルに行われ、このアクセスが完了するときに、取得されたデータが、仮想アドレスＶａにインデックスされているキャッシュ１８に格納される。何れの場合においても、ＳＳ  ３２、ＡＲＴ  ３４、及びＡＳＤＴ  ３６は、適宜更新される。
【００４６】
仮想キャッシュ動作の詳細の記載
図２を参照して、ＭＭＵ１４は、プロセスブロック４０によって示されているように、メモリアクセスのための与えられた仮想アドレスＶｂを受信し得る。この与えられた仮想アドレスＶｂは、好ましい実施形態において、判定ブロック５２毎にＳＳ３２に対して検査される。
【００４７】
また、図３を参照して、与えられた仮想アドレスＶｂを受信すると、ＳＳ３２は、例えば、ＳＳ３２におけるビットベクトル４８の特定のビット４６へのポインターを生成するためにハッシュコーダー４４を用いて与えられた仮想アドレスＶｂをハッシュすることによって、与えられた仮想アドレスＶｂを処理する。Ｖｂがアクティブシノニム仮想アドレスのようである場合、ビット４６に指し示されたものが設定される。これは、ＡＲＴ３４における与えられた仮想アドレスＶｂのもののためのエントリーであるかもしれないことを示す。インデックスしているハッシュは、極めて速いが、ＡＲＴ３４に関する成功の可能性を提供するのみであり、下記のように、ＡＲＴ３４の検討を要求するシノニムを示さない。
【００４８】
ＳＳ３２において、ビットベクトル４８の各ビット４６は、ＡＲＴ３４における多数の関連するエントリー（又は、ＡＲＴ３４におけるこのビット４６にマッピングしている仮想アドレス）を示しているビットカウンター５０に関連付けられてよい。カウンター５０のこのカウンター値は、もはやＡＲＴ３４における有効なシノニムデータのハッシュでないビット４６をリセットするために、ビットベクトル４８が更新されることを可能にする。カウンター５０は、また、全てのシノニムがＡＲＴ３４から追い出される前に、ハッシュコーダー４４が同一のビット４６に多数のシノニムをマップする場合に、ビット４６のリセットを防止する。
【００４９】
判定ブロック５２にて、ＳＳ３２における関連ビット４６が、Ｖｂがアクティブシノニム仮想アドレスでないことを示している場合に、キャッシュ１８は、Ｖｂを用いて矢印４１によって示されるようにプロセスブロック４２に直接的にアクセスされる。
【００５０】
判定ブロック５２にて、ＳＳ３２における関連ビット４６が、Ｖｂがシノニム仮想アドレスである可能性を示す場合、ＭＭＵ１４は、プロセスブロック５４に進め、ＡＲＴ３４は、シノニム仮想アドレスＶｂが関連する鍵仮想アドレスを識別するために用いられる。
【００５１】
ここで、図４を参照して、ＡＲＴ３４は、アドレスライン２４（図１）を介して受信した仮想アドレスが比較されるシノニム仮想アドレス５６に対応している各列として示される多数のエントリーを提供してよい。いくつかの「既知の」アクティブシノニム仮想アドレス５６（例えば、Ｖｂ）は、ＡＲＴ３４においてリストされ、ＡＲＴ３４における単一鍵仮想アドレス５８（例えば、Ｖａ）にマップする。ＡＲＴ３４は、また、特定のメモリアドレス（例えば、Ｖｂ）が読み込まれ得るか書き込まれ得るかを制御するために動作し、技術分野において知られたメモリ管理の標準であるメモリアクセス「権限」５９を保持してよい。
【００５２】
仮想アドレスＶｂをＡＲＴ３４に適用すると、ＡＲＴ３４の権限５９は、メモリアクセスが適切であることを確認するために評価される。適切でない場合、エラーが生成されて、技術分野で理解されるようにメモリアクセス違反例外として要求を取り扱う結果になる。
【００５３】
権限５９が所望されたアクセスを許容する場合、判定ブロック６１にて、ＡＲＴ３４におけるシノニム仮想アドレス５６の１つに係る、シノニムＶａへの仮想アドレスＶｂの合致が存在するか判定される。このような合致が存在する場合、対応する鍵仮想アドレス５８（例えば、Ｖａ）は、矢印５５毎にキャッシュ１８に直接的に適用される。
【００５４】
判定ブロック６１にて仮想アドレスＶｂのためにＡＲＴ３４において合致するシノニムが存在しない場合、仮想アドレスＶｂは、矢印５７毎にキャッシュ１８に直接的に提供される。
【００５５】
ここで、図６を参照して、キャッシュ１８における各キャッシュ行７１は、このキャッシュ行７１のデータ６５が関連する仮想アドレス６３からのタグビットの組みを備えてよい。これは、キャッシュ１８が、仮想的にインデックスされているが物理的にタグ付けされており、正しく機能するためにＴＬＢアクセスを要するキャッシュ構造と対称的に、仮想的にインデックスされ及び仮想的にタグ付けされている、ことである。キャッシュ行７１は、また、後述されるようなＡＳＤＴ３６のための権限データ６２及びエントリー識別インデックス値６９を備えてよい。
【００５６】
プロセスブロック４２のキャッシュアクセスプロセスを完了して、判定ブロック６０にて検出されるときに、成功したキャッシュヒットが存在し得る（キャッシュミスがない）。ＡＲＴ３４においてシノニムが発見された場合、ＡＲＴ３４における権限５９の方を選んで、キャッシュ行７１における権限データ６２は無視される。ＡＲＴ３４においてシノニムが発見されなかった場合、権限データ６２が、アクセスが許容されるべきか否かを判定するために採用される。アクセス権限が、この場合において所望されたアクセスを許可しない場合、エラーが生成されて、技術分野で理解されるようにメモリアクセス違反例外として要求を取り扱う結果になる。他の状態では、データ６５がアクセスされて、アクセスプロセスは、プロセスブロック６４によって示されているように完了する。
【００５７】
判定ブロック６０にてキャッシュミスが検出される場合、Ｖｂ（又は、Ｖａ）にインデックスされるキャッシュ１８におけるエントリーが存在しなかったことを意味しており、キャッシュコントローラ２２は、プロセスブロック６７に進める。プロセスブロック６７にて、与えられた仮想アドレスＶｂは、この与えられた仮想アドレスＶｂに関連付けられている対応している物理アドレス（例えば、Ｐｂ）を取得するために、ＴＬＢ２６に適用される（及び、ページテーブル２８に適用され得る）。この物理アドレスＰｂは、この後、「隠れた」シノニムを見つけるためにＡＳＤＴ３６に適用される。
【００５８】
ここで、また、図５を参照して、ＡＳＤＴ３６は、キャッシュ１８において既知のアクティブ物理アドレス６８（Ｐｘ）に対応している列として示される多数のエントリーを有する論理テーブルを備えてよい。また、ＡＳＤＴ３６の各列において、これによって物理アドレスＰｘにリンクされ、この物理アドレス６８のための単一鍵仮想アドレス５８になる。ＡＳＤＴ３６は、また、鍵仮想アドレス５８と関連するデータのためのアクセス権限を提供しているこれらの上述のものと同様な権限７３を備えてよい。
【００５９】
ＡＳＤＴ３６の各列は、また、各物理アドレスＰｘに関連するキャッシュ１８における物理アドレスの特定の行を示しているビットベクトル７２を備えてよい。ビットベクトル７２は、従って、キャッシュ１８におけるデータの識別における行レベル分解能を備える。例えば、物理アドレス６８がページ（例えば、４キロバイト）であるときに、ビットベクトル７２の各ビット７４は、ページの対応している行（６４バイト）がキャッシュ１８において登録されるときに、設定される。
【００６０】
カウンター７６は、キャッシュ１８における全ての列が追い出されて、カウンターが特定の物理アドレスＰｘに関してゼロの値を有するときに、ＡＳＤＴ３６の列のエントリーが無効にされ得るように、ビットベクトル７２に設定されるビット７４の数の合計を提供してよい。カウンター７６は、従って、ＡＳＤＴ３６の列がもはや有用でないとき、後述するＡＳＤＴ３６の更新において、ＡＳＤＴ３６の列を追い出すために用いられてよい有効ビットのように動作する。ＡＳＤＴ３６は、また、後述するようなアクティブシノニム検出ビット７９を備えてよい。
【００６１】
格納されなければならない新たな行のために利用可能なエントリーが無いとき、ＡＳＤＴ３６の有効な行を追い出すことが必要であるかもしれない。ページ情報は変化し（例えば、物理アドレス６８又は権限５９にて変化し）、又は、キャッシュ１８をフラッシュすることは、また、キャッシュ１８における全ての対応している行が追い出されることを要求するＡＳＤＴ３６の他の状態の有効な行の無効化をトリガーし得る。ＡＲＴ３４及びＳＳ３２における関連するアクティブシノニムは、また、追い出されなければならない。このプロセスは、ＡＳＤＴ３６に関して上述のアクティブシノニム検出ビット７９の使用を通して支援されてよい。代替的な実施形態において、ＡＲＴ／ＳＳは、この時に完全にフラッシュされてよい。
【００６２】
判定ブロック７８にて、プロセスブロック６７からの物理アドレスＰｂが、ＡＳＤＴ３６に適用されるときに、キャッシュ１８におけるデータに関連するアクティブ物理アドレス６８の１つに合致しない場合、新たなデータはキャッシュ１８に付加される必要があり、キャッシュ１８は、下記に更に記載されるように、ＡＳＤＴ３６と共に、プロセスブロック８０毎に更新される。
【００６３】
他方、判定ブロック７８にて、物理アドレスＰｂがＡＳＤＴ３６にて見つけられる場合、判定ブロック８４にて、与えられた仮想アドレスＶｂがＡＳＤＴ３６における鍵仮想アドレス５８と同一でありＰｂに関連しているかについての判定が行われる。
【００６４】
判定ブロック８４にて、与えられた仮想アドレスＶｂがＡＳＤＴ３６にある場合、キャッシュミスがキャッシュ１８内からの物理アドレスＰｂの適切な行の失敗によって生じることが想定されなければならない。これは、キャッシュ１８に付加される新たなデータを要求し、キャッシュ１８は、プロセスブロック８０毎にＡＳＤＴ３６と共に更新される。
【００６５】
他方、判定ブロック８４にて、与えられた仮想アドレスＶｂがＡＳＤＴ３６に無い場合、ＡＳＤＴ３６内（例えば、Ｖｅ）にある鍵仮想アドレスへのシノニムとしてのＶｂの役割は、プセスブロック８５にてＡＲＴ３４及びＳＳ３２を適切に更新することによって記憶される。この時に、ＡＳＤＴ３６におけるアクティブシノニム検出ビット７９は、設定され得る。ＡＳＤＴ３６は、この後、与えられた仮想アドレスＶｂによって要求される必要なキャッシュ行７１がメモリキャッシュ１８にあるかどうかを確認するために（例えば、ビットベクトル７２の対応ビット７４がＡＳＤＴ３６に設定されているか否かを検査することによって）検査される。キャッシュ行７１がメモリキャッシュ１８にある場合、ライン８９によって示されているように、キャッシュ１８へのアクセスが、ＡＳＤＴ３６において発見された鍵仮想アドレスＶｅを用いてプロセスブロック４２によって行われて得る。
【００６６】
判定ブロック８８にて、必要とされる行がＡＳＤＴ３６に無い場合、キャッシュ１８及びＡＳＤＴ３６は、プロセスブロック８０毎に更新される。
【００６７】
プロセスブロック８０において、キャッシュコントローラ２２は、キャッシュ１８を更新することを許容され、この更新が成功した場合、ＡＳＤＴ３６は適切に更新される。ＡＳＤＴ３６がいくつかの仮想アドレスの下での所望のデータを有さないとき（判定ブロック７８での「ＮＯ」）、この更新は、第１の欄における物理アドレスＰｂ及びこの更新に関連する（ここでは、鍵仮想アドレス５８）第２の欄における与えられた仮想アドレスＶｂをＡＳＤＴ３６に付加し、ビットベクトル７２の適切なビット７４が設定され、カウンター７６がインクリメントされる。適切なビット７４は、与えられた仮想アドレスＶｂから導き出されるオフセット値から推測され得る。ＡＳＤＴ３６が与えられた物理アドレス（Ｐｂ）のページのためのエントリーを有しているが必要なデータ行を有していないとき（判定ブロック８４にて「ＹＥＳ」）、キャッシュ１８にて新たに登録されるためのビットベクトル７２の適切なビット７４が設定され、カウンター７６がインクリメントされる。ＡＳＤＴ３６が与えられた物理アドレス（Ｐｂ）のページのためのエントリーを有するが異なる仮想アドレス（Ｖｅ）にリンクされており必要なデータ行を有していないとき（判定ブロック８８にて「ＮＯ」）、キャッシュ１８に新たに登録されるデータのビットベクトル７２の適切なビット７４が設定され、カウンター７６がインクリメントされ、ＡＲＴ３４及びＳＳ３２はこの新たなシノニムを反映するために適切に調整される。
【００６８】
ＡＳＤＴ３６の犠牲エントリーは、ＡＳＤＴ３６の無効列（すなわち、ゼロに等価となっているカウンター７６を有している）、あるいは、非ゼロのカウンター値である列と関連する物理アドレス６８を選択するためにＡＳＤＴ３６を見ることによって判定されてよい。前者の場合、ゼロのカウンターを有している無効列は、キャッシュ１８において未だ依存する有効列が無いことを意図している。後者の場合、追い出される犠牲エントリーの判定は、技術分野にて知られた多数の多種の手法のいくつかを用いて実行され得る。非ゼロのカウンター値であるエントリーがＡＳＤＴから追い出されるために選択されるとき、（対応しているビットベクトル７２のビット７４において非ゼロの値によって示され得る）キャッシュに未だ存在しているエントリーによって追跡される列は、まずキャッシュ１８から追い出されて、これによって、カウンター値をゼロに下げて、そしてこの後にＡＳＤＴエントリーが問題なしで追い出されることを可能にする。ＡＳＤＴにおけるエントリーが追い出されるとき、ＡＲＴ及びＳＳの関連したエントリーは、また、適宜無効化及び／又は更新される必要がある。
【００６９】
概ね、キャッシュ１８は、標準キャッシュと実質的に同様であるが、しかしながら、仮想アドレスによってアクセスされる。仮想アドレスは、同じ問題にアドレスするために技術分野で概ね理解されるように、アドレス領域識別子（ＡＳＩＤ）と組み合わされてよい。
【００７０】
ここで図１、２、５及び６を参照して、キャッシュ１８が更新されてキャッシュ行７１が追い出されなければならないときに、追い出される行に対応しているＡＳＤＴ３６のエントリーは、対応しているビットベクトル７２のビット７４が更新されて対応しているカウンター７６がディクリメントされるように、識別されなければならない。ＡＳＤＴ３６における対応している行を識別することは、ＡＳＤＴが物理アドレス６８を介してたいてい平易にアクセス可能であるが、追い出される行が仮想アドレス５８によって識別されるという事実によって複雑にされ得る。従って、キャッシュ行７１は、ＡＳＤＴ３６における必要なエントリーの迅速な識別が更新されることを可能にするＡＳＤＴインデックス値６９を備えてよい。１つの実施形態において、ＡＳＤＴインデックス値６９は、また、キャッシュ１８に設けられるためにキャッシュミスにて戻されたキャッシュ行に対応しているＡＳＤＴ３６エントリーが更新され得るように、標準コンピュータ構成において生じるキャッシュミスを取り扱うために用いられる誤り状態取り扱いレジスタ（ＭＳＨＲ）に格納されてよい。
【００７１】
他のプロセッサに関するキャッシュコヒーレンス
図１を参照して、他のプロセッサシステム１２は、与えられたプロセッサシステム１２ａのキャッシュにおけるキャッシュ行７１を無効化するこれらのキャッシュにおけるデータに書き込んでよい。これは、物理アドレスを用いることを無効化されるデータを概ね記述している無効化メッセージを生成する。識別のために必要なキャッシュ行７１を識別する１つの方法は、鍵仮想アドレス５８を取得するために、及び、必要なキャッシュ行７１を識別するためにこの鍵仮想アドレス５８を用いるために、無効化メッセージの物理アドレスをＡＳＤＴ３６に適用することである。無効化メッセージに加えて他の種類のコヒーレンスイベントが存在する実施形態において、ＡＳＤＴ３６を調べるための、及び、必要なキャッシュ行７１を識別するための同様な方法が採用され得る。本願発明は、Ｌ１キャッシュ１８ａにおける最大の使用を概ね見つけ、Ｌ２及びＬ１キャッシュの間のコヒーレンスイベントはまれであり、このオーバーヘッドを最小化する。
【００７２】
ロード及びストアキュー
ここで図１を参照して、ロードキュー１７及びストアキュー１９は、メモリの読み書きを管理するために、アウトオブオーダ・プロセッサにおいて用いられる。ストアキュー１９のために仮想アドレスを用いることは、後のロードがシノニムによって合致しているストアを識別しない場合及びシノニムによって合致しているストアを識別する場合に問題を発生し得る。このような場合、古いデータがキャッシュ１８に戻され得る。同様に、ロードキューのために仮想アドレスを用いることは、コヒーレンスに基づくキャッシュ１８における無効化又は追い出しがあり、ロードがこの追い出されたデータのために（推測で）行われたときに、問題が発生し得る。本発明は、鍵仮想アドレス５８によって及びシノニムによらず、ロードキュー１７及びストアキュー１９におけるデータを識別することによってこの問題に対応し得る。ロード又はストアが（推測で）実行されると、鍵仮想アドレス５８は、識別されたロード又はストアキューに保持される。（鍵仮想アドレス５８でなく）シノニムにてロードキュー１７及びストアキュー１９を用いてアクセスすることは、従って、キャッシュ１８におけるキャッシュミスを引き起こし、最終的にプロセスブロック５４のＡＲＴ３４探索を介して（又は、プロセスブロック８４のＡＳＤＴ３６探索を介して）鍵仮想アドレス５８での動作（ロード又はストア）の再実行を行う結果になる。
【００７３】
ストアキュー１９のストアのためのＴＬＢ誤りは、ＴＬＢ誤りが解決されるまで、分離キューにおけるより若いストアを保持することによって適切に解決され得る。代替的に、ストアキューからのストア命令の解放を効果的に遅延させるために、違反ストアからプログラムを再起動する。
【００７４】
大きなページサイズ
大きなページサイズのために、ＡＳＤＴ３６のビットベクトル７２は、扱い難くなり得る。この場合、ビットベクトル７２を除去してよく、ＡＳＤＴ３６から追い出される所望の行に関する与えられたページから行を探すために、キャッシュ１８の行を介して「ウォーク」の代わりにしてよい。この高価な動作は、カウンター７６の非ゼロの値に関するエントリーを追い出すことが必要である場合に特に、大きなページよりも小さな関連するＡＳＤＴ３６行から好適に追い出すことにより避けられ得る。概ね、大きなページの追い出しは、また、ありそうもないイベントである。
【００７５】
ＳＳ及びＡＲＴのアクセス
ここで、図７ａ−７ｄを参照して、パイプラインプロセッサにおけるＳＳ  ３２及びＡＲＴ３４のアクセスは、様々な手法で行われ得る。図６ａにおいて示されるように、ＳＳ３２及びＡＲＴ３４へのアクセスは、アドレス生成の後であるが曖昧性解消の前に行われ得る。この手法は、仮想キャッシュを用いる電力効率の利点の大部分を達成するが、潜在的なレイテンシ利点を十分に奏するわけではない。
【００７６】
図６ｂにおいて示されているように、代替的に、ＳＳ３２及びＡＲＴ３４は、曖昧性解消ステージの間に並列的にアクセスされ得る。曖昧性解消は、まれであるが、ＡＲＴ３４においてヒットする鍵仮想アドレス５８に関して行われる必要があり得る。これは、電力消費を増大させるかもしれないが、レイテンシを減少させ得る。
【００７７】
図６ｃにおいて示されているように、ＳＳ３２へのアクセスは、ベース（又は、セグメント）レジスタに基づいてアドレス生成の前に行われることができ、ＡＲＴ３４へのアクセスは、アドレス生成の後であり曖昧性解消の前に行われ得る。この手法は、命令及びデータキャッシュの両方に適用することができ、仮想キャッシュで可能なエネルギー及びレイテンシの利点の大部分を享受することができる。
【００７８】
代替的に、図６ｄにおいて示されているように、アドレス生成が多数ステッププロセスである場合、ＳＳ３２は、アドレス生成が完了する前であるが、アドレス生成の中間ステップの後にアクセスされ得る。
【００７９】
最適化
ＡＲＴ３４へのアクセスは、連続する参照が（特に命令のために）同じページに頻繁に行われるという事実を享受することによって減少され得る。１つの実施形態において、（図４において図示されている）最終ＬＶＡ（ＬＬＶＡ）レジスタ１００は、アクセスされた最後の鍵仮想アドレス５８を維持するＡＲＴ３４に関連付けられ得る。関連付けされている次の仮想アドレスがＬＬＶＡ１００に含まれているものと同じであるときに、ＡＲＴ３４へのアクセスは行われる必要がなく、ＬＬＶＡ１００におけるこの値は、直接的に用いられることができ、図２のプロセスブロック５４をスキップする。
【００８０】
各プロセスは、ユーザ及びカーネル領域を含む異なる仮想アドレスメモリ領域に関連付けられてよい。カーネル領域は、異なるプロセスにわたって共有され、従って、カーネル領域へのアクセスは、カーネル領域におけるアクセスされる仮想アドレスが同じであるが、異なるプロセスが異なるＡＳＩＤを有するので、シノニムとして考えられ得る。これは、カーネル領域が多数のプロセスによって最新の手法においてアクセスされるときに、ＡＲＴ３４における多数エントリーを生成し得る。想定されるオーバーヘッドを避けるために、１つの実施形態は、カーネル領域へのアクセスのためのみの単一の唯一な値に、ＡＳＩＤのランタイム再マッピングを用いてよい。このようなアクセスの識別は、アクセスがカーネルアクセスに関連付けられたアドレス範囲を有するという先験的な知識に基づいている。例えば、カーネル領域（又は、動作システム）がアドレス領域の上半分に設けられる場合、この再マッピングは、再マッピングプロセスをトリガーするための最上位アドレスを単純に参照することができる。
【００８１】
上述の全ての実施形態に関して、上述した上記の構成は、キャッシュデータ転送に必要な高速性に一致した高速性能を実現するためにハードウエアにて全体的に実現されることができる。
【００８２】
上述はＬ１キャッシュに焦点をあてたが、これらの原理は、メモリアクセスレイテンシを減少させる利点を確認し得るときに、他のキャッシュに広げられ得ることが理解される。
【００８３】
この発明は、ＡＲＴ３４、ＡＳＤＴ３６及びキャッシュ行７１を含んでいる各データ格納構造は、各仮想アドレス領域を独自に識別し、従って、効果的に仮想アドレスの一部になるアドレス領域識別子（ＡＳＩＤ）と一緒に仮想アドレスを格納し得ることを期待する。
【００８４】
１つの実施形態において、ＳＳ３２及びＡＲＴ３４は、シノニムＶｂでのキャッシュ１８への直接のアクセスの方を選んで、及びシノニムＶｂが鍵仮想アドレスでない場合に、キャッシュミスの結果になり、適切な鍵シノニムはプロセスブロック６０毎のキャッシュミスの後のＡＳＤＴ３６へのアクセスによって解決される期待の方を選んで、除去されてよい。
【００８５】
シノニム追跡回路３５によって採用されるデータ及びシノニム追跡回路３５自体を提供しているＳＳ３２、ＡＲＴ３４、及びＡＳＤＴ３６のデータ格納機能はコンピュータプロセッサシステム１０の回路、又は、内部プロセッサ回路の中で様々な手法にて分配されてよいということについて、上述から理解される。特に、ＳＳ３２、ＡＲＴ３４、及びＡＳＤＴ３６のデータは、キャッシュ１８自身を含んでいる様々な異なる場所に自由に格納され得る。後者の場合、物理キャッシュは、常用キャッシュ構成及び分離クレーム要素の対象になり得るシノニム追跡構成を有することについて理解されたい。
【００８６】
特定の用語は、参照のみの目的で本明細書において使用され、したがって限定するものではない。例えば、「上部の」、「下部の」、「上方に」「下方に」などの用語は、参照される図面中の方向を指す。「正面の」、「背部の」、「後部の」、「底部の」および「側面の」などの用語は、論じている構成要素を説明する本文および関連図面を参照することによって明らかとなる、一貫しているが任意の基準枠内の構成要素の部分の向きを説明している。そのような用語は、具体的に上で言及した単語、その派生語および同様の輸入語を含んでもよい。同様に、「第１の」、「第２の」という用語、および構造を指す他のそのような数の用語は、文脈で明確に示さない限り、シーケンスまたは順序を示唆しない。
【００８７】
本開示および例示的実施形態の要素または特徴を導入する場合、「１つの」および「前記」という冠詞は、そのような要素または特徴が１つまたは複数存在することを意味するものである。「備える」、「含む」および「有する」という用語は、包括的なものであり、具体的に記述するもの以外の追加の要素または特徴が存在し得ることを意味する。本明細書で説明した方法ステップ、工程、および操作は、実行順序として具体的に特定しない限り、議論または説明した特定の順序でそれらの実行を必ず要求するものとして解釈されるべきではないことをさらに理解されるべきである。また、追加または代替のステップを用いてもよいことも理解されるべきである。
【００８８】
「プロセッサ」への参照は、単一の及び／又は分散環境において通信することができ、従って、有線又は無線通信を介して他のプロセッサと通信するように構成されることができる１つ以上のマイクロプロセッサを含み、このような１つ以上のプロセッサは、同様な又は異なる装置であり得る他のプロセッサ制御される装置を動作させるように構成され得る、ことについて理解されたい。プロセッサは、一般目的プロセッサ、処理コア、マルチスレッドプロセッサの内容、グラフィクス処理ユニット、特別目的プロセッサ、あるいは、技術分野で知られているようにメモリにアクセスする動作を実行する他の形式のプロセッサであり得る、ことについても理解されたい。また、メモリへの参照は、他に特定されない場合、プロセッサ制御される装置の内部に設けられることができ、プロセッサ制御される装置の外部に設けられることができ、有線又は無線ネットワークを介してアクセスされることができる、１つ以上のプロセッサ読み取り可能及びアクセス可能メモリ要素及び／又は構成を含むことができる。
【００８９】
加えて、テーブル及びシグネチャを含んでいる、示されたデータ構造は、論理的な描写を提供することを意図しており、開示された発明は、データの他の物理構成を含みまた示された機能を提供すると考えられる、ことについて理解される。
【００９０】
本明細書で用いられる用語「インデックス」、「インデックスされる」等は、本のインデックスのように、値に関連する情報の場所を示し及びアクセスするための値を使用するプロセスを概ね示し、キャッシュメモリの内容におけるインデックスの技術的意味に限定することを意図しているわけではないことについて、理解されたい。
【００９１】
本発明は、本明細書に含まれる実施形態および例示に限定されないことが特に意図され、特許請求の範囲は、以下の特許請求の範囲内にあるような実施形態の一部を含む修正形式の実施形態、および異なる実施形態の要素の組合せを含むことを理解されたい。特許および非特許公報を含む、本明細書で説明した刊行物のすべては、それら全内容が本明細書に援用される。
【図１】
0006696987.tif 000002
【図２】
0006696987.tif 000003
【図３】
0006696987.tif 000004
【図４】
0006696987.tif 000005
【図５】
0006696987.tif 000006
【図６】
0006696987.tif 000007
【図７】
0006696987.tif 000008