(57)【要約】  一実施形態では、本発明は、キャッシュページのアドレスを格納し、キャッシュページの各キャッシュラインへのアクセスをトラッキングするための署名を格納する複数のエントリを含むページ・トラッカー・バッファ（ＰＴＢ）と、ＰＴＢにエントリをロードして、署名を更新するＰＴＢハンドラとを含むプロセッサを含む。他の実施形態も記載され、請求されている。【選択図】図１
2013529815.tif 000002
【特許請求の範囲】
【請求項１】
第１のコアと、
レベル１キャッシュと、
トランスレーション・ルックアサイド・バッファ（ＴＬＢ）と、
レベル２キャッシュと、
キャッシュページのアドレスを格納して、前記キャッシュページの各キャッシュラインへのアクセスをトラッキングするための署名を格納する複数のエントリを含むページ・トラッカー・バッファ（ＰＴＢ）と、
前記ＰＴＢにエントリをロードして、前記署名を更新するＰＴＢハンドラと
を備えるプロセッサ。
【請求項２】
前記署名は６４ビットを含む、請求項１に記載のプロセッサ。
【請求項３】
前記キャッシュページの各キャッシュラインに対するアクセスの繰り返しをトラッキングするための再利用署名を格納する前記ＰＴＢのエントリと、前記再利用署名を更新する前記ＰＴＢハンドラとをさらに備える、請求項１に記載のプロセッサ。
【請求項４】
前記ＰＴＢは約６４個のエントリを含む、請求項１に記載のプロセッサ。
【請求項５】
前記ＰＴＢは約１０２４個のエントリを含む、請求項１に記載のプロセッサ。
【請求項６】
前記ＰＴＢにエントリをロードする前記ＰＴＢハンドラは、
メモリのページ・トラッカー・メモリ・テーブルから前記ＰＴＢにエントリをロードする前記ＰＴＢハンドラを含む、請求項１に記載のプロセッサ。
【請求項７】
前記メモリの前記ページ・トラッカー・メモリ・テーブルに、前記ＰＴＢから退避したエントリを格納する前記ＰＴＢハンドラをさらに備える、請求項６に記載のプロセッサ。
【請求項８】
前記ＰＴＢにエントリをロードする前記ＰＴＢハンドラは、
ＴＬＢミスの後に、前記ＰＴＢにエントリをロードする前記ＰＴＢハンドラを含む、請求項１に記載のプロセッサ。
【請求項９】
命令を実行する第１コア、キャッシュ、及び、キャッシュページのどのキャッシュラインがアクセスされたかを示すエントリを格納するページ・トラッカー・バッファ（ＰＴＢ）を含むプロセッサと、
ＰＴＢのエントリを含むページ・トラッカー・メモリ・テーブルを格納し、前記プロセッサに連結されたダイナミック・ランダムアクセスメモリ（ＤＲＡＭ）と、
前記ページ・トラッカー・メモリ・テーブルから前記ＰＴＢにエントリをロードして、前にアクセスされたとして前記ＰＴＢのエントリが示しているキャッシュラインを前記キャッシュにロードするＰＴＢハンドラと
を備えるシステム。
【請求項１０】
キャッシュラインがアクセスされた旨を示すべく、前記ＰＴＢのエントリを更新する前記ＰＴＢハンドラをさらに備える、請求項９に記載のシステム。
【請求項１１】
前記ページ・トラッカー・メモリ・テーブルに前記ＰＴＢのエントリを書き戻す前記ＰＴＢハンドラをさらに備える、請求項９に記載のシステム。
【請求項１２】
前記キャッシュページのどのキャッシュラインが複数回アクセスされたかを示すエントリを格納する前記ＰＴＢをさらに備える、請求項９に記載のシステム。
【請求項１３】
前に複数回アクセスされたと前記ＰＴＢのエントリが示すキャッシュラインを優先させる前記ＰＴＢハンドラをさらに備える、請求項１２に記載のシステム。
【請求項１４】
前記プロセッサは、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）をさらに有し、
前記ＰＴＢハンドラは、ＴＬＢミスがあるとＰＴＢのエントリをロードする、請求項９に記載のシステム。
【請求項１５】
キャッシュページに関連しており、前記キャッシュページのキャッシュラインが前にアクセスされたかを示す情報を含む署名を読み出す段階と、
前にアクセスされたと前記署名が示しているキャッシュラインを、プロセッサのキャッシュにロードする段階と
を備える方法。
【請求項１６】
メモリに格納されている署名テーブルから前記署名を取得する段階をさらに備える、請求項１５に記載の方法。
【請求項１７】
前記プロセッサが前記キャッシュページのキャッシュラインにアクセスすると、前記署名を更新する段階をさらに備える、請求項１６に記載の方法。
【請求項１８】
前記署名を退避させるとき、前記署名テーブルに前記署名を格納する段階をさらに備える、請求項１７に記載の方法。
【請求項１９】
前記キャッシュページに関連しており、前記キャッシュページのキャッシュラインが前に複数回アクセスされたかを示す情報を含む再利用署名を取得する段階をさらに備える、請求項１５に記載の方法。
【請求項２０】
前に複数回アクセスされたと前記再利用署名が示しているキャッシュラインを優先させる段階をさらに備える、請求項１９に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピューティングシステム（ＰＣ、サーバ等）のパフォーマンス及び効率を高めるために、プロセッサが後で必要とするであろうデータ及び命令をプリフェッチしておくと好適であると考えられる。しかし、従来のプリフェッチ技術は、どのキャッシュラインをプリフェッチすべきか、またはプリフェッチすべきではないか、を正確に予測することができなかった。
【図面の簡単な説明】
【０００２】
【図１】本発明の一実施形態におけるプロセッサ及びメモリの一例のブロック図である。
【図２】本発明の一実施形態におけるページ・トラッカー・バッファの一例のブロック図である。
【図３】本発明の一実施形態におけるアクセス署名（access signature）を利用する方法の一例のフローチャートである。
【図４】本発明の一実施形態における再利用署名（reuse signature）を利用する方法の一例のフローチャートである。
【図５】本発明の一実施形態におけるシステムの一例のブロック図である。
【発明を実施するための形態】
【０００３】
予測プリフェッチのための方法及び装置が提供される。以下の記載において、多くの特定の詳細を示して本発明の実施形態の完全な理解を促す。しかし、本発明の実施形態がこれら特定の詳細がなくても実施可能であることは当業者であれば理解するところである。また一方で、公知の構造及びデバイスは詳細を示すのではなく、ブロック図という形態で示すことで、本発明の実施形態を曖昧にしないようにしている。
【０００４】
「一実施形態」または「１つの実施形態」といった言い回しは、実施形態との関連で記載された特定の特徴、構造または性質が本発明の少なくとも１つの実施形態に含まれることを意味している。故に、「一実施形態において」または「１つの実施形態において」等の言い回しが本明細書の随所に見られるが、これらは必ずしも同じ実施形態のことを意味しているわけではない。さらに、特定の特徴、構造または性質は、１以上の実施形態において適切な方法で組み合わせることが可能である。
【０００５】
図１は、本発明の一実施形態におけるプロセッサ及びメモリの一例のブロック図である。図１に示すように、システム１００は、プロセッサ１０２とメモリ１０４とを含んでいる。プロセッサ１０２は、コア１０６、レベル１キャッシュ１０８、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）１１０、ページ・トラッカー・バッファ（ＰＴＢ）１１２、レベル２キャッシュ１１４、及びＰＴＢハンドラ１１６を含んでよい。レベル１キャッシュ１０８とレベル２キャッシュ１１４とを含むとして示されているが、プロセッサ１０２は、任意の数のキャッシュレベルを含んでよい。さらに、プロセッサ１０２は、仮想アドレスから物理アドレスへのアドレス・トランスレーションを格納することができるＴＬＢ１１０を含むものとして示されているが、本発明はＴＬＢのないプロセッサでも実行可能である。
【０００６】
ＰＴＢ１１２は、図２を参照して詳述される、前にコア１０６によりアクセスされた特定のメモリ領域の部分（例えば、特定のキャッシュページのキャッシュラインのいずれか、またはその他のメモリ領域）を示すエントリを含むことができる。一実施形態では、ＰＴＢ１１２は、さらに、コア１０６により複数回アクセスされた特定のキャッシュページのキャッシュラインを示す（潜在的には、これはキャッシュに置き続けることが最も望ましいであろうキャッシュラインを示している）エントリも含む。
【０００７】
ＰＴＢハンドラ１１６は、後で詳述するように、後でコア１０６が必要とする命令及びデータの正確な予測を試みることができる。一実施形態では、ＰＴＢハンドラ１１６は、前のインスタンス化中にアクセスされたとＰＴＢ１１２が示すＴＬＢ１１０（例えばＴＬＢミスの後）に追加されたキャッシュページのキャッシュラインをプリフェッチする。ＰＴＢハンドラ１１６は、ページ・トラッカー・メモリ・テーブル１１８からＰＴＢ１１２エントリを読み出したり、ページ・トラッカー・メモリ・テーブル１１８にＰＴＢ１１２エントリを書き戻したりすることができる。ＰＴＢハンドラ１１６はさらに、ほかにいずれかのキャッシュラインがコア１０６からアクセスされると、ＰＴＢ１１２のエントリを更新することもできる。ＰＴＢハンドラ１１６は、他のハードウェア（例えばプリフェッチモジュール）、または、ソフトウェア、または、ハードウェアとソフトウェアとの組み合わせに実装することもできる。ＰＴＢハンドラ１１６は、個々にプリフェッチを行うデータ及び命令に適用することができ、他のプリフェッチャーと共存させてもよい。
【０００８】
メモリ１０４は、スタティックであってもダイナミックであってもよいランダムアクセスメモリ（ＲＡＭ）等の任意の種類のメモリを表していてよい。一実施形態では、メモリ１０４は、ダブルデータレート・シンクロノス・ダイナミックＲＡＭ（ＤＤＲ−ＳＤＲＡＭ）を表しているが、本発明は任意の種類のメモリに限定されない。メモリ１０４は、キャッシングまたはアドレッシングをしやすくするために、ページ１２０等のページに論理的に分割することができる。各ページ１２０は、固定数のライン１２２を含んでよい。一実施形態では、ページ１２０は６４個のライン１２２を含んでいる。別の実施形態では、ページ１２０は、ファームウェアまたはソフトウェアによってサイズを設定可能なメモリ領域を表している。
【０００９】
図２は、本発明の一実施形態におけるページ・トラッカー・バッファの一例のブロック図である。図２に示すように、ページ・トラッカー・バッファ１１２は、インデックス２０８を介してアクセス可能であり、それぞれがアドレス２０２、アクセス署名２０４、及び再利用署名２０６を含む任意の数のエントリを含んでよい。一実施形態では、ＰＴＢ１１２は、ＴＬＢ１１０と同数のエントリを含んでよい。他の実施形態では、ＰＴＢ１１２が、ＴＬＢ１１０より多い数のエントリ、または少ない数のエントリを含んでよい。一実施形態では、ＰＴＢ１１２は６４個のエントリを含んでよい。別の実施形態では、ＰＴＢ１１２が１０２４個のエントリを含んでよい。
【００１０】
アドレス２０２は２８ビットを含むものとして示されているが、ページ１２０（または別のメモリ領域）を特定するために、これより多い数の、または少ない数のビットを含んでよい。アクセス署名２０４及び再利用署名２０６は、６４ビットを含むものとして示されているが、ページ１２０のライン１２２を特定するために、これより多い数の、または少ない数のビットを含んでもよい。一実施形態では、アクセス署名２０４に設定されるビットは、ＴＬＢ１１０内のページ１２０が前にアドレッシングされた際に、コア１０６がアクセスしたページ１２０のライン１２２を示している。一実施形態では、再利用署名２０６に設定されるビットは、ＴＬＢ１１０内のページ１２０が前にアドレッシングされた際に、コア１０６が複数回アクセスしたページ１２０のライン１２２を示している。
【００１１】
図３は、本発明の一実施形態におけるアクセス署名を利用する方法の一例のフローチャートである。図３に示すように、方法は、ＰＴＢハンドラ１１６が、ページ・トラッカー・メモリ・テーブル１１８に、退避したエントリを書き戻した後に、キャッシュページ１２０に関するアクセス署名２０４をＰＴＢ１１２にロードすることから始まる（３０２）。一実施形態では、ＰＴＢハンドラ１１６は、ＴＬＢ１１０ミスの後にアクセス署名２０４をロードして、置き換えられたアクセス署名をすべて書き戻す。次に、ＰＴＢハンドラ１１６は、例えば前にコア１０６がアクセスしたとアクセス署名２０４が示しているライン１２２を、レベル２キャッシュ１１４にプリフェッチする（３０４）。最後に、ＰＴＢハンドラ１１６は、アクセス署名２０４を更新する（３０６）。一実施形態では、ＰＴＢハンドラ１１６は、ほかにいずれかのラインが要求されフェッチされたときに取得されたアクセス署名２０４にビットを加える。別の実施形態では、ＰＴＢハンドラ１１６は、プリフェッチするために、取得したアクセス署名２０４を利用することもでき、後のページアクセスでメモリに書き戻す際に利用する目的で、アクセス署名を再生することもできる。
【００１２】
図４は、本発明の一実施形態における再利用署名を利用する方法の一例のフローチャートである。図４に示すように、方法は、ＰＴＢハンドラ１１６が、ページ・トラッカー・メモリ・テーブル１１８に、退避したエントリを書き戻した後に、キャッシュページ１２０に関する再利用署名２０６をＰＴＢ１１２にロードすることから始まる（４０２）。一実施形態では、ＰＴＢハンドラ１１６は、ＴＬＢ１１０ミスの後に再利用署名２０６をロードする。次に、ＰＴＢハンドラ１１６は、再利用署名２０６が、前にコア１０６が複数回アクセスしたと示しているレベル２キャッシュ１１４内のキャッシュラインの置き換えポリシーを優先させてよい（４０４）。一実施形態では、ＰＴＢハンドラ１１６は、再利用署名２０６にビットが設定されているキャッシュラインを、最後に利用されてから最も短い時間が経過しているものとして設定することができる。別の実施形態では、ＰＴＢハンドラ１１６は、再利用署名２０６にビットが設定されていないキャッシュラインを、最後に利用されてから最も長い時間が経過したものとして設定してもよい。最後に、ＰＴＢハンドラ１１６は、ほかにいずれかのラインが複数回要求されると、再利用署名２０６を更新してよい（４０６）。
【００１３】
実施形態は数多くの異なるシステムタイプで実装可能である。図５は、本発明の一実施形態におけるシステムのブロック図である。図５に示すように、マイクロプロセッサシステム５００はポイントツーポイントインターコネクトであり、ここでは第１のプロセッサ５７０と第２のプロセッサ５８０とがポイントツーポイントインターコネクト５５０により連結されている。図５に示す各プロセッサ５７０及び５８０はマルチコアプロセッサであってよく、第１及び第２のプロセッサコアを含んでよい（つまり、プロセッサコア５７４ａ及び５７４ｂ、並びに、プロセッサコア５８４ａ及び５８４ｂ）。プロセッサコアは、本発明の一実施形態におけるＰＴＢハードウェア、ソフトウェア、及び、ファームウェアを含んでよい。
【００１４】
さらに図５を参照すると、第１のプロセッサ５７０はさらにメモリコントローラハブ（ＭＣＨ）５７２と、ポイントツーポイント（Ｐ−Ｐ）インタフェース５７６及び５７８とを含む。同様に、第２のプロセッサ５８０は、ＭＣＨ５８２と、Ｐ−Ｐインタフェース５８６及び５８８とを含む。図５に示すように、ＭＣＨ５７２及び５８２は、プロセッサをメモリそれぞれ（つまり、メモリ５３２及びメモリ５３４）に連結し、これらはメインメモリ（例えばプロセッサそれぞれにローカルにアタッチされるＤＲＡＭ）の一部であってよく、これらそれぞれが、本発明の一実施形態におけるページ・トラッカー・メモリ・テーブルを含んでよい。第１のプロセッサ５７０及び第２のプロセッサ５８０は、Ｐ−Ｐインターコネクト５５２及び５５４をそれぞれ介してチップセット５９０に連結されてよい。図５に示すように、チップセット５９０はＰ−Ｐインタフェース５９４及び５９８を含む。
【００１５】
さらにチップセット５９０は、チップセット５９０と高性能グラフィックスエンジン５３８とを、Ｐ−Ｐインターコネクト５３９により連結するインタフェース５９２を含む。そしてチップセット５９０は、インタフェース５９６を介して第１のバス５１６に連結されてよい。図５に示すように、第１のバス５１６を第２のバス５２０に連結するバスブリッジ５１８とともに、様々な入出力（Ｉ／Ｏ）デバイス５１４が第１のバス５１６に連結されてよい。例えば一実施形態では、キーボード／マウス５２２、通信デバイス５２６、及び、コード５３０を含みうるデータ格納ユニット５２８（例えば、ディスクドライブその他の大容量記憶デバイス）を含む様々なデバイスが第２のバス５２０に連結されてよい。さらにオーディオＩ／Ｏ５２４が第２のバス５２０に連結されてよい。
【００１６】
実施形態は、コードで実装されて、システムをプログラムして命令を行わせるのに利用されうる命令を格納する記憶媒体上に格納されてよい。記憶媒体には、これらに限定はされないが、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ、ＣＤ−ＲＷ、及び光磁気ディスク、半導体デバイス（ＲＯＭ、ＤＲＡＭ等のＲＡＭ、ＳＲＡＭ、ＥＰＲＯＭ、フラッシュメモリ、ＥＥＰＲＯＭ（登録商標）、磁気カードまたは光学カード等）、及び、電子命令を格納するのに適した他の種類の媒体が含まれてよい。
【００１７】
本発明を限られた数の実施形態を参照して記載してきたが、当業者には数多くの変形例及び変更例が可能であることが明らかである。添付請求項はこれら全ての変形例及び変更例を本発明の真の精神及び範囲に含むことを意図している。
【図１】
2013529815.tif 000003
【図２】
2013529815.tif 000004
【図３】
2013529815.tif 000005
【図４】
2013529815.tif 000006
【図５】
2013529815.tif 000007
【手続補正書】
【提出日】平成25年3月15日(2013.3.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のコアと、
レベル１キャッシュと、
トランスレーション・ルックアサイド・バッファ（ＴＬＢ）と、
レベル２キャッシュと、
キャッシュページのアドレスを格納して、前記キャッシュページの各キャッシュラインへのアクセスをトラッキングするための署名を格納する複数のエントリを含むページ・トラッカー・バッファ（ＰＴＢ）と、
前記ＰＴＢにエントリをロードして、前記署名を更新するＰＴＢハンドラと
を備えるプロセッサ。
【請求項２】
前記署名は６４ビットを含む、請求項１に記載のプロセッサ。
【請求項３】
前記キャッシュページの各キャッシュラインに対するアクセスの繰り返しをトラッキングするための再利用署名を格納する前記ＰＴＢのエントリをさらに備え、前記ＰＴＢハンドラは、前記再利用署名を更新する、請求項１または２に記載のプロセッサ。
【請求項４】
前記ＰＴＢは約６４個のエントリを含む、請求項１から３の何れか１項に記載のプロセッサ。
【請求項５】
前記ＰＴＢは約１０２４個のエントリを含む、請求項１から３の何れか１項に記載のプロセッサ。
【請求項６】
前記ＰＴＢにエントリをロードする前記ＰＴＢハンドラは、
さらに、メモリのページ・トラッカー・メモリ・テーブルから前記ＰＴＢにエントリをロードする、請求項１から５の何れか１項に記載のプロセッサ。
【請求項７】
前記ＰＴＢハンドラはさらに、前記メモリの前記ページ・トラッカー・メモリ・テーブルに、前記ＰＴＢから退避したエントリを格納する、請求項６に記載のプロセッサ。
【請求項８】
前記ＰＴＢにエントリをロードする前記ＰＴＢハンドラは、
さらに、ＴＬＢミスの後に、前記ＰＴＢにエントリをロードする、請求項１から７の何れか１項に記載のプロセッサ。
【請求項９】
命令を実行する第１コア、キャッシュ、及び、キャッシュページのどのキャッシュラインがアクセスされたかを示すエントリを格納するページ・トラッカー・バッファ（ＰＴＢ）を含むプロセッサと、
ＰＴＢのエントリを含むページ・トラッカー・メモリ・テーブルを格納し、前記プロセッサに連結されたダイナミック・ランダムアクセスメモリ（ＤＲＡＭ）と、
前記ページ・トラッカー・メモリ・テーブルから前記ＰＴＢにエントリをロードして、前にアクセスされたとして前記ＰＴＢのエントリが示しているキャッシュラインを前記キャッシュにロードするＰＴＢハンドラと
を備えるシステム。
【請求項１０】
前記ＰＴＢハンドラはさらに、キャッシュラインがアクセスされた旨を示すべく、前記ＰＴＢのエントリを更新する、請求項９に記載のシステム。
【請求項１１】
前記ＰＴＢハンドラはさらに、前記ページ・トラッカー・メモリ・テーブルに前記ＰＴＢのエントリを書き戻す、請求項９または１０に記載のシステム。
【請求項１２】
前記ＰＴＢハンドラはさらに、前記キャッシュページのどのキャッシュラインが複数回アクセスされたかを示すエントリを格納する、請求項９から１１の何れか１項に記載のシステム。
【請求項１３】
前記ＰＴＢハンドラはさらに、前に複数回アクセスされたと前記ＰＴＢのエントリが示すキャッシュラインを優先させる、請求項１２に記載のシステム。
【請求項１４】
前記プロセッサは、トランスレーション・ルックアサイド・バッファ（ＴＬＢ）をさらに有し、
前記ＰＴＢハンドラは、ＴＬＢミスがあるとＰＴＢのエントリをロードする、請求項９に記載のシステム。
【請求項１５】
キャッシュページに関連しており、前記キャッシュページのキャッシュラインが前にアクセスされたかを示す情報を含む署名を読み出す段階と、
前にアクセスされたと前記署名が示しているキャッシュラインを、プロセッサのキャッシュにロードする段階と
を備える方法。
【請求項１６】
メモリに格納されている署名テーブルから前記署名を取得する段階をさらに備える、請求項１５に記載の方法。
【請求項１７】
前記プロセッサが前記キャッシュページのキャッシュラインにアクセスすると、前記署名を更新する段階をさらに備える、請求項１６に記載の方法。
【請求項１８】
前記署名を退避させるとき、前記署名テーブルに前記署名を格納する段階をさらに備える、請求項１７に記載の方法。
【請求項１９】
前記キャッシュページに関連しており、前記キャッシュページのキャッシュラインが前に複数回アクセスされたかを示す情報を含む再利用署名を取得する段階をさらに備える、請求項１５から１８の何れか１項に記載の方法。
【請求項２０】
前に複数回アクセスされたと前記再利用署名が示しているキャッシュラインを優先させる段階をさらに備える、請求項１９に記載の方法。
【国際調査報告】
2013529815.tif 000008
2013529815.tif 000009