(57)【要約】本開示は、プリフェッチヒントを使用するための方法および装置を提供する。方法の一実施形態は、第１のキャッシュ（１２０）に関連付けられた第１のプリフェッチャ（１５０）で、第１のプリフェッチャによって決定されたメモリアドレスのシーケンス内のいくつかのメモリアドレスからデータをプリフェッチするための要求を発行するのをバイパスすることを含む。メモリアドレスの数は、第２のキャッシュ（１２５）に関連付けられた第２のプリフェッチャ（１４０）から受け取った要求に示されている。また、この実施形態は、バイパスされたメモリアドレスの後のメモリアドレスからデータをプリフェッチするための要求を、第１のプリフェッチャから発行することも含む。【選択図】図１
2015529356.tif 000002
【特許請求の範囲】
【請求項１】
第１のキャッシュ（１２０）に関連付けられた第１のプリフェッチャ（１５０）で、前記第１のプリフェッチャによって決定されるメモリアドレスのシーケンス内のいくつかの数のメモリアドレスからデータをプリフェッチするための要求を発行するのをバイパスすることであって、前記数は、第２のキャッシュ（１２５）に関連付けられた第２のプリフェッチャ（１４０）から受け取った要求に示されている、ことと、
前記バイパスされたメモリアドレスの後のメモリアドレスからデータをプリフェッチするための要求を、前記第１のプリフェッチャから発行することと、
を含む方法。
【請求項２】
前記第１のプリフェッチャで、少なくとも１つの第１のアドレスに対する少なくとも１つのキャッシュミスを検出することに応じて、データを前記第１のキャッシュのラインにプリフェッチするためのメモリアドレスの前記シーケンスを決定することを含み、相対アドレスの前記シーケンスは、前記少なくとも１つの第１のアドレスを基準にして決定される、請求項１に記載の方法。
【請求項３】
前記いくつかのメモリアドレスからデータをプリフェッチするための要求を発行するのをバイパスすることは、前記第２のプリフェッチャで、未決のプリフェッチ要求の数によって決定されるいくつかのメモリアドレスからデータをプリフェッチするための要求を発行するのをバイパスすることを含む、請求項１に記載の方法。
【請求項４】
前記第２のプリフェッチャで、前記未決のプリフェッチ要求の数を示す情報を記憶することを含む、請求項３に記載の方法。
【請求項５】
前記未決のプリフェッチ要求の数を示す情報を記憶することは、前記第２のプリフェッチャが、プリフェッチ要求を発行することと、未決のプリフェッチ要求の数を前記第２のプリフェッチャによって発行された前記プリフェッチ要求に関連付けられたストリームエントリ（６００）に追加することと、に応じて、未決のプリフェッチ要求の数をカウントすることを含む、請求項４に記載の方法。
【請求項６】
メモリアドレスの前記シーケンスは、対応する複数のフラグ（６１５）によって示されており、前記いくつかのメモリアドレスからデータをプリフェッチするための要求を発行するのをバイパスすることは、前記バイパスされたメモリアドレスの数に対応する数の前記フラグをセットしていない状態とすることと、少なくとも１つの以後のフラグをセットして、前記対応するメモリアドレスに対する未決のプリフェッチ要求を示すことと、を含み、
前記データをプリフェッチするための要求を発行することは、セットされている前記少なくとも１つの以後のフラグに対応する前記メモリアドレスからデータをプリフェッチするための要求を発行することを含む、
請求項１に記載の方法。
【請求項７】
第１のプリフェッチャによって決定されたメモリアドレスのシーケンス内のいくつかのメモリアドレスからデータをプリフェッチするための要求を発行するのをバイパスするように構成可能な前記第１のプリフェッチャ（１５０）であって、前記数は、第２のキャッシュ（１２５）に関連付けられた第２のプリフェッチャ（１４０）から受け取った要求に示されており、前記第１のプリフェッチャは、前記バイパスされたメモリアドレスの後のメモリアドレスからデータをプリフェッチするための要求を発行するように構成可能である、第１のプリフェッチャを備える、
装置。
【請求項８】
前記第１のプリフェッチャに関連付けられた第１のキャッシュ（１２０）を備え、前記第１のプリフェッチャは、少なくとも１つの第１のアドレスに対する少なくとも１つのキャッシュミスを検出することに応じて、データを前記第１のキャッシュのラインにプリフェッチするためのメモリアドレスの前記シーケンスを決定するように構成可能であり、相対アドレスの前記シーケンスは、前記少なくとも１つの第１のアドレスを基準にして決定される、請求項７に記載の装置。
【請求項９】
前記第１のプリフェッチャは、未決のプリフェッチ要求の数によって前記第２のプリフェッチャで決定されるいくつかのメモリアドレスからデータをプリフェッチするための要求を発行するのをバイパスするように構成可能である、請求項７に記載の装置。
【請求項１０】
前記第２のプリフェッチャを備え、前記第２のプリフェッチャは、前記第２のプリフェッチャで前記未決のプリフェッチ要求の数を示す情報を記憶するように構成可能である、請求項９に記載の装置。
【請求項１１】
前記第２のプリフェッチャは、プリフェッチ要求を発行することに応じて未決のプリフェッチ要求の数をカウントするように構成可能であり、未決のプリフェッチ要求の数を、前記第２のプリフェッチャによって発行される前記プリフェッチ要求に関連付けられたストリームエントリ（６００）に追加するように構成可能である、請求項１０に記載の装置。
【請求項１２】
メモリアドレスの前記シーケンスは、対応する複数のフラグ（６１５）によって示されており、前記第１のプリフェッチャは、前記バイパスされたメモリアドレスの数に対応する数の前記フラグをセットしていない状態とするように構成可能であり、少なくとも１つの以後のフラグをセットして、前記対応するメモリアドレスに対する未決のプリフェッチ要求を示すように構成可能であり、
前記第１のプリフェッチャは、セットされている前記少なくとも１つの以後のフラグに対応する前記メモリアドレスからデータをプリフェッチするための要求を発行するように構成可能である、請求項７に記載の装置。
【請求項１３】
メモリ（１１０）に関連付けられた第１のキャッシュ（１２０）と、
前記第１のキャッシュ内にデータをプリフェッチするための第１のプリフェッチャ（１５０）と、
前記第１のキャッシュに関連付けられた第２のキャッシュ（１２５）と、
前記第２のキャッシュ内にデータをプリフェッチするための第２のプリフェッチャ（１４０）であって、前記第１のプリフェッチャは、前記第１のプリフェッチャによって決定されたメモリアドレスのシーケンス内のいくつかの数のメモリアドレスからデータをプリフェッチするための要求を発行するのをバイパスするように構成可能であり、前記数は、前記第２のプリフェッチャから受け取った要求に示されており、前記第１のプリフェッチャは、前記バイパスされたメモリアドレスの後のメモリアドレスからデータをプリフェッチするための要求を発行するように構成可能である、第２のプリフェッチャと、
を備える、プロセッサベースのシステム。
【請求項１４】
前記第２のプリフェッチャは、プリフェッチ要求を発行することに応じて未決のプリフェッチ要求の数をカウントするように構成可能であり、未決のプリフェッチ要求の数を、前記第２のプリフェッチャによって発行される前記プリフェッチ要求に関連付けられたストリームエントリ（６００）に追加するように構成可能である、請求項１３に記載のプロセッサベースのシステム。
【請求項１５】
前記第２のプリフェッチャは、前記未決のプリフェッチャ要求の数を示す情報を、前記第２のプリフェッチャから送信されるプリフェッチ要求とともに前記第１のキャッシュに送信するように構成可能である、請求項１４に記載のプロセッサベースのシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、概してプロセッサベースのシステムに関し、より詳細には、プロセッサベースのシステムにおけるデータキャッシュプリフェッチの間にヒントを提供することに関する。
【背景技術】
【０００２】
多くの処理装置は、メモリに記憶されている情報にアクセスするのに要する平均時間を短縮するために、キャッシュを利用している。キャッシュは、相対的に頻繁に使用されることが予想される命令またはデータのコピーを記憶する、より小型かつより高速なメモリである。例えば、中央演算処理装置（ＣＰＵ）は、概してキャッシュまたはキャッシュメモリ素子の階層と関連付けられている。グラフィック処理装置または加速処理装置等の他のプロセッサもキャッシュシステムを実装できる。ＣＰＵによって使用されることが予想される命令またはデータは、（相対的に大型かつ低速の）メインメモリからキャッシュ内に移される。ＣＰＵがメインメモリ内のロケーションを読み取るまたは書き込む必要がある場合には、ＣＰＵは、最初に、所望のメモリロケーションのコピーがキャッシュメモリに含まれているか否かを確かめるためのチェックを行う。このロケーションがキャッシュに含まれている場合（キャッシュヒット）には、ＣＰＵは、次に、キャッシュメモリロケーション内のコピーに対して読取り動作または書込み動作を実行できる。このロケーションがキャッシュに含まれていない場合（キャッシュミス）には、ＣＰＵは、次に、メインメモリに記憶されている情報にアクセスする必要があり、いくつかの場合、情報をメインメモリからコピーし、キャッシュに追加することができる。キャッシュを適切に設定して操作することは、メモリアクセスの平均呼出し時間を、メインメモリ呼出し時間未満の値であって、キャッシュアクセス呼出し時間に近い値に低減し得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
プリフェッチャは、ライン内の情報がキャッシュから要求される前に、当該ラインをキャッシュ内に読み込むために使用できる。プリフェッチャは、ＣＰＵで実行中のアプリケーションと関連付けられたメモリ要求を監視することができ、ＣＰＵがメインメモリ内のメモリアドレスの特定のシーケンスにアクセスする可能性があると判断または予測するために、監視されている要求を使用できる。例えば、プリフェッチャは、以前のキャッシュミスのアドレスを記憶するミスアドレスバッファを監視することによって、ＣＰＵによるシーケンシャルメモリアクセスを検出してもよい。プリフェッチャは、次に、ミスアドレスバッファ内のシーケンシャルメモリアクセスによって決定されるシーケンス（および方向）のメインメモリ内のロケーションから情報をフェッチし、ＣＰＵによって情報が要求される前に当該情報を入手できるように、当該情報をキャッシュに記憶する。プリフェッチャは、複数のストリームを追跡し続けることができ、異なるストリームのために独立してデータをプリフェッチできる。
【０００４】
開示されている主題は、上述した１つ以上の問題の影響に対処することに向けられている。以下に、開示されている主題のいくつかの態様の基本的な理解を提供するために、開示されている主題の簡略化された概要を提示する。この概要は、開示されている主題の網羅的なものではない。この概要は、開示されている主題の重要もしくは重大な要素を識別すること、または、開示されている主題の範囲を詳細に叙述することを目的としていない。この概要の唯一の目的は、後述するより詳細な説明に対する前置きとして、簡略化された形でいくつかの概念を提示することである。
【課題を解決するための手段】
【０００５】
一実施形態では、データキャッシュプリフェッチヒンティングのための方法が提供される。この方法の１つの例示的な実施形態は、第１のキャッシュと関連付けられた第１のプリフェッチャで、第１のプリフェッチャによって決定されたメモリアドレスのシーケンス内のいくつかの数のメモリアドレスからデータをプリフェッチするための要求を発行するのをバイパス（回避）することを含む。メモリアドレスの数は、第２のキャッシュに関連付けられた第２のプリフェッチャから受け取った要求に示されている。この方法の実施形態は、バイパスされたメモリアドレスの後のメモリアドレスからデータをプリフェッチするための要求を、第１のプリフェッチャから発行することも含む。
【０００６】
別の実施形態では、データキャッシュプリフェッチヒンティングのための装置が提供される。装置の１つの例示的な実施形態は、第１のプリフェッチャによって決定されたメモリアドレスのシーケンス内のいくつかの数のメモリアドレスからデータをプリフェッチするための要求を発行するのをバイパスするように構成可能な第１のプリフェッチャを含む。メモリアドレスの数は、第２のキャッシュに関連付けられた第２のプリフェッチャから受け取った要求において示されている。第１のプリフェッチャの例示的な実施形態は、バイパスされたメモリアドレスの後のメモリアドレスからデータをプリフェッチするための要求を発行するように構成可能である。
【０００７】
さらに別の実施形態では、データキャッシュプリフェッチヒンティングのためのプロセッサベースのシステムが提供される。プロセッサベースシステムの１つの例示的な実施形態は、メモリと、メモリと関連付けられた第１のキャッシュと、第１のキャッシュ内にデータをプリフェッチするための第１のプリフェッチャと、第１のキャッシュに関連付けられた第２のキャッシュと、第２のキャッシュ内にデータをプリフェッチするための第２のプリフェッチャと、を含む。第１のプリフェッチャは、第１のプリフェッチャによって決定されたメモリアドレスのシーケンス内のいくつかの数のメモリアドレスからデータをプリフェッチするための要求を発行するのをバイパスするように構成可能である。メモリアドレスの数は、第２のプリフェッチャから受け取った要求において示されている。第１のプリフェッチャは、バイパスされたメモリアドレスの後のメモリアドレスからデータをプリフェッチするための要求を発行するように構成可能である。
【０００８】
さらなる実施形態では、第１のプリフェッチャによって決定されたメモリアドレスのシーケンス内のいくつかの数のメモリアドレスからデータをプリフェッチするための要求を発行するのをバイパスするように構成可能な第１のプリフェッチャを含む集積回路を備える半導体素子の製造に用いられる製造プロセスを、実行されたときに構成可能な命令を含むコンピュータ可読媒体が提供される。メモリアドレスの数は、第２のキャッシュに関連付けられた第２のプリフェッチャから受け取った要求において示されている。第１のプリフェッチャは、バイパスされたメモリアドレスの後のメモリアドレスからデータをプリフェッチするための要求を発行するように構成可能である。
【０００９】
開示される主題は、同様の参照数字が同様の要素を識別する添付の図面と併せて、以下の説明を参照することにより理解され得る。
【図面の簡単な説明】
【００１０】
【図１】半導体ウェハ内または半導体ウェハ上に形成され得る半導体デバイスの第１の例示的な実施形態を概念的に示す図である。
【図２】図１に示されるＬ１プリフェッチャまたはＬ２プリフェッチャ等のプリフェッチャの１つの例示的な実施形態を概念的に示す図である。
【図３】プリフェッチストリームを割り当て、プリフェッチフラグを使用してルックアヘッドウィンドウを識別するための方法の１つの例示的な実施形態を概念的に示す図である。
【図４】フラグが付けられ、プリフェッチされ得るアドレスのシーケンスを含むプリフェッチストリームの第１の例示的な実施形態を概念的に示す図である。
【図５】プリフェッチストリームに関連付けられたアドレスシーケンスの１つの例示的な実施形態を概念的に示す図である。
【図６】プリフェッチストリームエントリの１つの例示的な実施形態を概念的に示す図である。
【図７】プリフェッチストリームを割り当て、プリフェッチフラグを使用してルックアヘッドウィンドウを識別するための方法の１つの例示的な実施形態を概念的に示す図である。
【図８Ａ】プリフェッチストリームに関連付けられたアドレスシーケンスの１つの例示的な実施形態を概念的に示す図である。
【図８Ｂ】図８Ａのプリフェッチストリームに関連付けられたアドレスシーケンスの別の例示的な実施形態を概念的に示す図である。
【００１１】
開示される主題は、修正されてもよいし、代替の形態をとってもよいが、開示される主題の特定の実施形態は、図面に一例として示され、本明細書に詳しく説明されている。しかしながら、特定の実施形態の本明細書における説明は、開示されている主題を、開示されている特定の形態に制限することを目的とするのではなく、逆に、添付の特許請求の範囲に含まれる全ての変更形態、均等物および改変形態を対象とすることを意図している。
【発明を実施するための形態】
【００１２】
以下に具体例が説明される。明確にするために、実際の実装例の全ての特徴が本明細書で説明されるわけではない。言うまでもなく、係る実施形態の開発では、例えば、実装ごとに変わる、システムおよび事業に関係した制約とのコンプライアンス等のように、開発者の特定の目標を達成するために、多数の実装に特定の決定を下す必要があることが理解される。さらに、係る開発作業は、複雑かつ多大な時間を必要とする場合があるが、それにも関わらず、本開示の利点を有する当業者にとっては日常的な作業となるであろうことが理解される。本説明および図面は、単に主張されている主題の原則を示すにすぎない。したがって、当業者が、ここに明示的に説明または図示されていなくても、ここに説明される原理を実現し、主張されている主題の範囲に含まれ得る多様な構造を創作できる可能性があることが理解されるべきである。さらに、ここに列挙される全ての例は、技術を促進させるために本発明者によって寄与された、請求された主題の原理および概念を理解する上での、読者を手助けするための教育上の目的となることを意図しており、明確に列挙されている係る例および条件に対して制限されていないと解釈されるべきである。
【００１３】
開示されている主題は、添付の図を参照して説明される。多様な構造、システムおよび装置は、説明のためだけに、および、当業者に周知である詳細により本発明を分かりにくくすることがないように、図面で概略的に示される。それでも、添付の図面は、開示されている主題の実例となる例を記述し、説明するために含まれている。本明細書で用いられる単語および語句は、これらの単語および語句の当業者による理解と一貫した意味を有すると理解され、解釈されるべきである。用語または語句の特別な定義、つまり当業者によって理解される通常および慣習となっている意味と異なる定義は、本明細書の用語または語句の一貫した使用によって暗示されることを意図していない。用語または語句が特別な意味、つまり当業者によって理解される意味以外の意味を有することを意図する程度まで、係る特別な定義は、用語または語句に特別な定義を直接的かつ明白に与える定義的な方法で明細書にて明示的に述べられる。さらに、本書に使用される用語「または」は、別段の指示がない限り、排他的ではない「または」を指す（例えば、「あるいは」または「または別の方法では」）。また、本明細書で説明される多様な実施形態は、いくつかの実施形態を新たな実施形態を構成するために１つまたは複数の他の実施形態と組み合わせることができるので、必ずしも相互に排他的ではない。
【００１４】
メモリキャッシュは、プロセッサコアによってキャッシュから要求されることが予想されるキャッシュラインをプリフェッチできる。例えば、プロセッサコアからの２つの要求がキャッシュ内の連続したアドレスをミスする場合には、プリフェッチャは、プロセッサコアが、ミスによって示されるパターンで追加アドレスを要求すると予測することがある。したがって、プリフェッチャは、プロセッサコアがキャッシュラインを要求する場合に、これらのラインがキャッシュで利用可能となるように、メモリまたは別のキャッシュからキャッシュラインをプリフェッチしてよい。階層キャッシュシステムでは、プロセッサコアは、（例えばＬ１データまたは命令キャッシュ等の）より低いレベルのキャッシュからキャッシュラインを要求してよく、より低いレベルのキャッシュは、（例えばＬ２キャッシュ等の）より高いレベルのキャッシュからキャッシュラインを要求してよく、より高いレベルのキャッシュは、メインメモリまたは（例えばＬ３キャッシュ等の）さらにより高いレベルのキャッシュからラインを要求してよい。
【００１５】
通常、より高いレベルのキャッシュは、より低いレベルのキャッシュと比べてより多い呼出し時間を有する。つまり、より高いレベルのキャッシュの方が、次に高いメモリまたはキャッシュレベルから情報を取り出すのにより多くの時間がかかる。例えば、より長いプリフェッチ距離を有する等のように、より多い呼出し時間を有するキャッシュは、通常、ミスに応答してより多くのプリフェッチ要求を発行する。例えば、Ｌ１データキャッシュは、３つの未決のプリフェッチ要求を有し、Ｌ２キャッシュは、１２の未決のプリフェッチ要求を有することがある。従来のＬ１キャッシュおよびＬ２キャッシュは、互いの未決のプリフェッチ要求に気付いていない。その結果、より高いレベルのキャッシュは、同じラインを２回（例えば、より低いレベルのキャッシュからのデマンド要求に応答して一回、および、より高いレベルのプリフェッチャからのプリフェッチ要求に応答して一回）要求して、電力、時間および他のシステムリソースを不必要に消費する、重複する作業を生じさせることがある。また、重複する要求を発行することは、プリフェッチャが別のキャッシュラインをプリフェッチする機会を失わせる。
【００１６】
本明細書で説明されるプリフェッチャの実施形態は、より低いレベルのキャッシュプリフェッチストリームに対する未決のプリフェッチ要求の数を示す情報を記憶することによって、従来技術の上述した問題点に対処するように構成されてよい。一実施形態では、プリフェッチヒントと呼ばれることがあるプリフェッチ要求情報が、ストリームエントリにアタッチされてよい。プリフェッチヒントは、より低いレベルのプリフェッチャがより高いレベルのキャッシュに対してデマンド要求を発行することに応答して、より高いレベルのキャッシュに転送され得る。より高いレベルのキャッシュのためのプリフェッチャは、プリフェッチヒントおよびデマンド要求のアドレスを使用して、より低いレベルのプリフェッチャで未決であるプリフェッチ要求に対応するアドレスを無視（skip over）して、以後のアドレスに対する要求を発行するようにより高いレベルのプリフェッチストリームをトレーニングできる。より高いレベルのキャッシュのためのプリフェッチャは、次に、より低いレベルのキャッシュをミスするデマンド要求またはプリフェッチ要求に応答して、プリフェッチ要求を発行してよい。例えば、より低いレベルのキャッシュは、第１のミスを使用してプリフェッチストリームを割り当て、第２のミスを使用してプリフェッチストリームをトレーニングしてよい。より低いレベルのプリフェッチャからより高いレベルのキャッシュへの第１の（および後の）要求は、プリフェッチヒント情報を含む。より高いレベルのキャッシュが要求された情報を有しないと仮定すると、より高いレベルのキャッシュは、第１のミスを使用してプリフェッチストリームを割り当て、第２のミスを使用してプリフェッチストリームをトレーニングし、第１のプリフェッチ要求を（ヒントとともに）使用してその次のプリフェッチ要求のアドレスを選択する。
【００１７】
図１は、半導体ウェハ（または半導体ダイ）内または半導体ウェハ（または半導体ダイ）上に形成されてよい半導体デバイス１００の第１の例示的な実施形態を概念的に示す図である。半導体デバイス１００は、溶着、成長、フォトリソグラフィー、エッチング、平坦化、研磨、アニール等の周知のプロセスを使用して半導体ウェハ内または半導体ウェハ上に形成されてよい。図示されている実施形態では、デバイス１００は、メインメモリ１１０に記憶されている命令またはデータにアクセスするように構成された中央演算処理装置（ＣＰＵ）１０５を含む。図示されている実施形態では、ＣＰＵ１０５は、命令の実行またはデータの操作のために使用される少なくとも１つのＣＰＵコア１１５を含む。また、ＣＰＵ１０５は、選択された命令またはデータをキャッシュに記憶することによって命令またはデータへのアクセスを加速するために使用される階層（またはマルチレベル）キャッシュシステムを実装する。ただし、本開示の利点を有する当業者は、デバイス１００の代替実施形態が、例えば外部キャッシュを使用する構成等のように、ＣＰＵ１０５と異なる構成を実装し得ることを理解するべきである。さらに、本願で説明される技法は、例えば、グラフィック処理装置（ＧＰＵ）、加速処理装置（ＡＰＵ）等の他のプロセッサに適用されてもよい。
【００１８】
図示されているキャッシュシステムは、メインメモリ１１０に記憶された命令またはデータのコピーを記憶するためのレベル２（Ｌ２）キャッシュ１２０を含む。図示されている実施形態では、Ｌ２キャッシュ１２０は、メインメモリ１１０内の各ラインを、Ｌ２キャッシュ１２０の１６個の特定のライン（従来「ウェイ」と呼ばれる）との間で潜在的にコピーできるように、メインメモリ１１０に結合的（associative）な１６ウェイである。ただし、本開示の利点を有する当業者は、メインメモリ１１０またはＬ２キャッシュ１２０の代替実施形態が、任意の結合規則を使用して実装できることを理解するべきである。メインメモリ１１０と比べて、Ｌ２キャッシュ１２０は、より小型でより高速のメモリ素子を使用して実装され得る。また、Ｌ２キャッシュ１２０は、ＣＰＵコア１１５とＬ２キャッシュ１２０との間でより迅速に、または、より少ない呼出し時間で情報が交換され得るように、（メインメモリ１１０と比べて）ＣＰＵコア１１５に対して論理的または物理的により近くに配置されてもよい。
【００１９】
また、図示されているキャッシュシステムは、メインメモリ１１０またはＬ２キャッシュ１２０に記憶されている命令またはデータのコピーを記憶するためのＬ１キャッシュ１２５を含む。Ｌ１キャッシュ１２５は、Ｌ２キャッシュ１２０と比べて、Ｌ１キャッシュ１２５のラインに記憶されている情報がＣＰＵ１０５によって迅速に取り出すことができるように、より小型でより高速なメモリ素子を使用して実装されてよい。また、Ｌ１キャッシュ１２５は、（メインメモリ１１０およびＬ２キャッシュ１２０の通信と比べて）ＣＰＵコア１１５とＬ１キャッシュ１２５との間でより迅速にまたは少ない呼出し時間で情報が交換され得るように、（メインメモリ１１０およびＬ２キャッシュ１２０と比べて）ＣＰＵコア１１５に対して論理的または物理的により近くに配置されてもよい。本開示の利点を有する当業者は、Ｌ１キャッシュ１２５およびＬ２キャッシュ１２０が、マルチレベル階層キャッシュメモリシステムの１つの例示的な実施形態を表していることを理解するべきである。代替実施形態は、Ｌ０キャッシュ、Ｌ１キャッシュ、Ｌ２キャッシュ、Ｌ３キャッシュ等の要素を含む異なるマルチレベルキャッシュを使用してよい。いくつかの実施形態では、より高いレベルのキャッシュは、より低いレベルのキャッシュのラインが、包含的なより高いレベルのキャッシュに記憶されるように、１つまたは複数のより低いレベルのキャッシュを含んでよい。キャッシュは、通常、スタティックランダムアクセスメモリ（ＳＲＡＭ）で実装されるが、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）等の他のタイプのメモリに実装されてもよい。
【００２０】
図示されている実施形態では、Ｌ１キャッシュ１２５は、命令およびデータを記憶するためのレベル１（Ｌ１）キャッシュであって、Ｌ１−Ｉキャッシュ１３０およびＬ１−Ｄキャッシュ１３５と呼ばれるＬ１キャッシュに分けられる。Ｌ１キャッシュ１２５を、命令を記憶するためのＬ１−Ｉキャッシュ１３０と、データを記憶するためのＬ１−Ｄキャッシュ１３５とに分けるまたは区切ることは、これらのキャッシュの各々を、命令またはデータを要求する可能性のあるエンティティのより近くに配置し得る。結果的に、この配置は、衝突、ワイヤ遅延を低減し、概して命令およびデータに関連付けられる呼出し時間を短縮し得る。一実施形態では、Ｌ１−Ｉキャッシュ１３０のラインがＬ２キャッシュ１２０からの命令で置換され、Ｌ１−Ｄキャッシュ１３５のラインがＬ２キャッシュ１２０からのデータで置換される、という置換方法が決まっている。ただし、当業者は、Ｌ１キャッシュ１２５の代替実施形態が、別々の命令専用キャッシュおよびデータ専用キャッシュ１３０，１３５に区切られていなくてもよいことを理解するべきである。
【００２１】
また、ＣＰＵ１０５は、Ｌ１キャッシュ１２５，１３０，１３５のうち１つ以上でラインを読み込むために使用できるＬ１プリフェッチャ１４０を含む。一実施形態では、Ｌ１プリフェッチャ１４０は、データキャッシュ１３５内にラインをプリフェッチするように構成されてよく、その場合、Ｌ１プリフェッチャ１４０は、Ｌ１データキャッシュプリフェッチャ１４０と呼ばれることがある。Ｌ１プリフェッチャ１４０は、図示されている実施形態では、ＣＰＵ１０５内の別個の論理素子として示されている。ただし、本開示の利点を有する当業者は、Ｌ１プリフェッチャ１４０が代わりに他の論理素子の一部として実装され得ることも理解するべきである。たとえば、Ｌ１プリフェッチャ１４０は、Ｌ１−Ｄキャッシュ１３５のロジックの一部として実装され得る。一実施形態では、Ｌ１プリフェッチャ１４０は、ＣＰＵコア１１５で実行中のアプリケーションと関連付けられたメモリ要求を監視できる。例えば、Ｌ１プリフェッチャ１４０は、Ｌ１ミスアドレスバッファ１４５に記録され得るキャッシュヒットまたはキャッシュミスにつながるメモリ要求を監視できる。Ｌ１プリフェッチャ１４０は、ＣＰＵコア１１５が、メインメモリ１１０においてメモリアドレスの特定のシーケンスにアクセスする可能性があると判断または予測してよい。例えば、Ｌ１プリフェッチャ１４０は、ＣＰＵコア１１５によってアクセスされる２つ以上のシーケンシャルメモリアクセスを検出してよい。シーケンスの方向は、シーケンシャルメモリアクセスの時間的なシーケンスに基づいて決定することができ、ＣＰＵコア１１５は、現在または以前のシーケンシャルメモリアクセスに基づいて推定することによって将来のメモリアクセスを予測するために、この方向を使用できる。次に、Ｌ１プリフェッチャ１４０は、予測されたロケーションの情報をＬ２キャッシュ１２０またはメインメモリ１１０からフェッチし、当該情報がＣＰＵコア１１５によって要求される前に当該情報を利用できるように、当該情報を適切なキャッシュに記憶できる。
【００２２】
また、ＣＰＵ１０５は、Ｌ２キャッシュ１２０でラインを読み込むために使用できるＬ２プリフェッチャ１５０も含んでよい。Ｌ２プリフェッチャ１５０は、図示されている実施形態では、ＣＰＵ１０５内の別個の論理素子として示されている。ただし、本開示の利点を有する当業者は、Ｌ２プリフェッチャ１５０が代わりに他の論理素子の一部として実装され得ることも理解するべきである。例えば、Ｌ２プリフェッチャ１５０は、Ｌ２キャッシュ１２０のロジックの一部として実装され得る。一実施形態では、Ｌ２プリフェッチャ１５０は、ＣＰＵコア１１５で実行中のアプリケーションに関連付けられたメモリ要求を監視できる。例えば、Ｌ２プリフェッチャ１５０は、Ｌ２ミスアドレスバッファ１５５に記録され得るキャッシュヒットまたはキャッシュミスにつながるメモリ要求を監視できる。Ｌ２プリフェッチャ１５０は、ＣＰＵコア１１５またはＬ１プリフェッチャ１４０が、メインメモリ１１０のメモリアドレスの特定のシーケンスにアクセスする可能性があると判断または予測してよい。例えば、Ｌ２プリフェッチャ１５０は、ＣＰＵコア１１５、キャッシュ１２５，１３０，１３５またはＬ１プリフェッチャ１４０によってアクセスされる２つ以上のシーケンシャルメモリアクセスを検出してもよい。シーケンスの方向は、シーケンシャルメモリアクセスの時間的なシーケンスに基づいて決定することができ、Ｌ２プリフェッチャ１５０は、現在または以前のシーケンシャルメモリアクセスに基づいて推定することによって将来のメモリアクセスを予測するために、この方向を使用できる。次に、Ｌ２プリフェッチャ１５０は、予測されたロケーションの情報をメインメモリ１１０からフェッチし、当該情報がＣＰＵコア１１５、キャッシュ１２５，１３０，１３５またはＬ１プリフェッチャ１４０によって要求される前に当該情報を利用できるように、当該情報を適切なキャッシュに記憶できる。
【００２３】
図２は、図１に示されたＬ１プリフェッチャ１４０またはＬ２プリフェッチャ１５０等のプリフェッチャ２００の１つの例示的な実施形態を示す図である。例示的な実施形態では、プリフェッチャ２００は、例えばロード命令と関連付けられたヒットまたはミス、記憶命令と関連付けられたヒットまたはミス等のメモリアクセス要求に関係する特定のイベントを示す信号を受信する。例えばロードまたは記憶のためのヒットイベントまたはミスイベント等のミスアドレスバッファ（ＭＡＢ）イベントは、プリフェッチャ２００の他のステージ（stage）に渡されることになるイベントを選択するのに用いられるイベントセレクタブロック２０５によって受け取られ、または、アクセスされてよい。例えば、最高の優先順位のイベントが、例えば以降のクロックサイクルの間、１つ以上のストリームエンジン２１５およびストリーム割当て部２２０に渡されるまで、最高の優先順位のイベントは、レジスタ２１０に記憶されてよい。イベントの優先順位は、例えば、最高の優先順位をロードミスに与え、次いで、順次低くなる優先順位を記憶ミス、ロードヒットおよび記憶ヒットに割り当てる等のような階層（hierarchy）を用いて、決定され得る。ただし、本開示の利点を有する当業者は、イベントの優先順位を確立するために、代替の階層を使用できることも理解するべきである。
【００２４】
図示されている実施形態では、プリフェッチャ２００は、別々のプリフェッチストリームの管理に使用できる１つ以上のストリームエンジン２１５を含む。ストリームエンジン２１５は、カレントイベントが、ストリームエンジン２１５によって管理されるストリームをヒットした、または、ミスしたの何れかを示すために、ストリーム割当て部２２０に信号を提供してよい。既存のストリームの何れもＭＡＢミスイベントに対するヒットを示さない場合には、ストリーム割り当て部２２０は、次いで、カレントイベント情報を使用して、新たなストリームを異なるストリームエンジン２１５に割り当てることができる。ストリームが最初に割り当てられると、ストリームエンジン２１５は、ページアドレスおよびオフセット値を、カレントイベントキャッシュラインアドレスに設定する。次に、ストリームエンジン２１５は、何れかの方向でカレントイベントキャッシュラインアドレスに隣接するアドレスにてイベントを検出するために、さらなるＭＡＢイベントを監視できる。例えば、カレントイベントキャッシュラインアドレスがＡに設定される場合には、ストリームエンジン２１５は、次いで、例えばアドレスＡ＋１またはＡ−１等の、カレントイベントキャッシュラインアドレスに関するアドレスにて、イベントを探す。ストリームエンジン２１５が１つのアドレスを確認する場合には、ストリームエンジン２１５は、適切な方向（Ａ＋１の場合には正の方向、Ａ−１の場合には負の方向）でストリームを定義し、新たなプリフェッチストリームをトレーニングする。一実施形態では、ストリームエンジン２１５は、本明細書で説明されるように、カレントストリームアドレスに対する潜在的なプリフェッチを示すプリフェッチフラグのセットを維持する。プリフェッチフラグは、新たなプリフェッチストリームがトレーニングされるときに設定されてよい。
【００２５】
また、プリフェッチャ２００は、ストリームエンジン２１５からのプリフェッチ要求の調停（arbitrate）に用いられる要求アービタ２２５を含んでもよい。一実施形態では、要求アービタ２２５は、回転優先順位アービタ（rotating priority arbiter）である。ただし、本開示の利点を有する当業者は、他のタイプの要求アービタ２２５が、代替でプリフェッチャ２００に実装され得ることを理解するべきである。要求は、例えば、以後のクロックサイクルの間、要求情報がプリフェッチ要求インタフェース２３５に提供され得るように、要求アービタ２２５からレジスタ２３０に転送され得る。プリフェッチ要求インタフェース２３５は、ストリームエンジン２１５からの未決の要求間の選択または調停に用いられるフィードバックを、要求アービタ２２５に提供できる。
【００２６】
図示されている実施形態では、ストリームエンジン２１５は、ストリームエンジン２１５に関連付けられたプリフェッチストリームの状態を識別する情報を含むストリームエントリを維持してもよい。一実施形態では、ストリームエントリは、エントリのデータベースに記憶されてよい。ただし、本開示の利点を有する当業者は、ストリームエントリが、任意のレジスタ、メモリまたはキャッシュロケーションに記憶されてもよいことを理解するべきである。ここで説明されるように、各ストリームエントリは、例えば、ストリームエントリのためのページアドレスもしくはラインオフセット、プリフェッチされ得るアドレスに関連付けられた１つ以上のプリフェッチフラグ等のアドレス指定情報、または、他のアドレス指定情報を含んでよい。また、ストリームエントリは、ストリームエントリに関連付けられた未決プリフェッチ要求の数を示す「ヒント」情報を含んでもよい。
【００２７】
図３は、プリフェッチストリームを割り当て、プリフェッチフラグを使用してルックアヘッドウィンドウを識別するための方法３００の１つの例示的な実施形態を概念的に示す図である。方法３００の実施形態は、図１に示すＬ１データキャッシュプリフェッチャ１４０で実装されてよい。ただし、本開示の利点を有する当業者は、方法３００の代替実施形態が、プリフェッチを実装する別のキャッシュからラインを要求可能な任意のプリフェッチャで実装され得ることを理解するべきである。図示されている実施形態では、例えば、ミスアドレスバッファからのＭＡＢイベントについての情報を用いて第１のキャッシュミスが検出され（ブロック３０５）、ストリームがプリフェッチャストリームエンジンに割り当てられる。プリフェッチャストリームエンジンは、第１のキャッシュミスとともに（正方向または負方向の）シーケンス内の第２のミスを検出するまで（ブロック３１０）待機する。シーケンシャルアドレスに対するキャッシュミスの検出は、図示されている実施形態では、プリフェッチストリームの生成をトリガするために用いられているが、当業者は、代替実施形態において、プリフェッチストリームの生成をトリガするために異なるキャッシュミスパターンを使用してもよいことを理解するべきである。例えば、プリフェッチストリームは、所定のストライド値または何らかの他のパターンによって区切られたアドレスに対するキャッシュミスを検出することに応じて、割り当てられてよい。
【００２８】
図示されている実施形態では、ストリームエンジンは、第１のキャッシュミスおよび第２のキャッシュミスのアドレスを使用して、シーケンス方向を決定し得る（ブロック３１５）。プリフェッチフラグは、プリフェッチストリーム内の選択された数のアドレスに割り当てられてよい（ブロック３２０）。フラグが割り当てられるアドレスは、第１のキャッシュミスおよび第２のキャッシュミスによって確立されたシーケンスまたはパターンに従う。例えば、フラグは、プリフェッチストリームに対して確立された方向での第２のミスのアドレスに従う選択された数のアドレス（例えば、９つのアドレス）に割り当てられ得る（ブロック３２０）。次に、選択された数のフラグは、プリフェッチャが以後のクロックサイクルでこれらのアドレスから情報を取得する必要があることを示すために、セットされ得る（ブロック３２５）。例えば、サブセットのアドレス（例えば、９つのフラグ付きアドレスのうち４つのアドレス）のフラグは、これらのアドレスがメモリからキャッシュに取得可能となるように、セットされ得る。
【００２９】
次に、プリフェッチャは、未決のプリフェッチ要求の数を示すのに用いられ得るヒントを決定してよい（ブロック３３０）。一実施形態では、ヒントは、フラグシーケンスの初期にセットされた別のプリフェッチフラグによって示された情報に対する要求をプリフェッチャが発行した後に、セットされたプリフェッチフラグの数をカウントすることによって決定されてよい（ブロック３３０）。ヒント情報は、本明細書で説明されるように、ヒント情報を別のプリフェッチャに提供できるようにストリームエントリに追加されてもよいし、記憶されてよい。
【００３０】
図４は、フラグが付され得るアドレスであって、プリフェッチ可能なアドレスのアドレスシーケンス４００を含むプリフェッチストリームの第１の例示的な実施形態を概念的に示す図である。アドレスシーケンス４００（１〜４）は、連続時間間隔またはクロックサイクルにおける同一セットのアドレスを示している。図示されている実施形態では、アドレスシーケンス４００（１〜４）は、連続クロックサイクルで示されている。ただし、本開示の利点を有する当業者は、アドレスシーケンス４００（１〜４）が、厳密に言えばシーケンシャルでなくてもよく、いくつかの場合には、他のイベント、時間間隔、クロックサイクル等によって分けられ得ることを理解するべきである。図示されている実施形態では、プリフェッチストリームエンジンは、矢印４０５で示されるベースアドレスの先の９つのアドレスにフラグを割り当てている。また、ストリームエンジンは、塗りつぶされたフラグで示されるように、ベースアドレス４０５の先のアドレスのうち４つのアドレスのフラグをセットして、メモリのこれらのアドレスの情報がキャッシュ内に取得される必要があることを示す。４つのセットされたプリフェッチフラグは、このプリフェッチストリームに関連付けられた４つの未決の要求があることを示している。本開示の利点を有する当業者は、割り当てられたフラグの数、または、セットされ、割り当てられたフラグのサブセット内のフラグの数が、設計の選択の問題であって、異なる設計考慮事項を満たすために変更されてよいことを理解するべきである。
【００３１】
フラグは、プリフェッチフラグのルックアヘッドウィンドウの外部にあるキャッシュミスに応じてセットされてよい。図示されている実施形態では、連続キャッシュミス４１０（１〜２）に応じて、プリフェッチストリームが割り当てられ、プリフェッチウィンドウのアドレスにフラグが付けられる。フラグが付けられたアドレスは、ベースアドレス４０５で始まり、アドレスは、キャッシュミス４１０（１〜２）またはベースアドレス４０５を基準にして定義される。図示されている実施形態では、ベースアドレス４０５は、１という選択されたアドレスオフセット値により、キャッシュミス４１０（２）からオフセットされる。例えば、第１のキャッシュミス４１０（１）のアドレスがＡとして定義され、プリフェッチウィンドウの相対アドレスが（±２、±３、±４、±５、．．．）として定義される場合には、フラグアドレスは、シーケンスの方向に応じて、第１のキャッシュミスアドレス４１０（１）を基準にして（Ａ±２、Ａ±３、Ａ±４、Ａ±５、．．．）として定義されてよい。本開示の利点を有する当業者は、アドレスオフセット値が設計の選択の問題であって、異なる設計考慮事項を満たすために変更されてよいことを理解するべきである。
【００３２】
アドレスシーケンス４００（１）は、ベースアドレス４０５の先のアドレスにセットされたフラグを有する。このため、プリフェッチャは、このアドレスのデータをキャッシュ内にフェッチしてよい。データが取得されると、ベースアドレス４０５は、次のアドレスに進められてよく、取得されたばかりのアドレスは、ストリームの履歴の一部となり、このアドレスのフラグは、アドレスシーケンス４００（２）で縞を付けたフラグ記号で示される履歴フラグとなる。フェッチの後、３つのプリフェッチフラグがセットされたままとなっているため、このプリフェッチストリームにおいて３つの未決のプリフェッチ要求が存在している。ベースアドレス４０５の先のフラグの数が同じままとなるように、追加のフラグが、確立されたシーケンスの方向でシーケンスの最後のアドレスに向かうアドレスに割り当てられてよい。図示されている実施形態では、プリフェッチャは、セットされたフラグを有するアドレスをフェッチし続け、セットされたフラグを有するアドレスの全てが取得されるまでベースアドレス４０５を進め続ける。それぞれのセットされたフラグに対応するアドレスが取得されるにつれ、このアドレスに関連付けられたフラグは、アドレスシーケンス４００（３〜４）に示される履歴フラグに変更される。追加のフラグは、ベースアドレス４０５の先のフラグの数を維持するために、次のシーケンシャルアドレスに割り当てられてよい。また、履歴フラグは、ベースアドレス４０５の後に続く履歴フラグのセット数を維持するために、外されてもよい。
【００３３】
図５は、プリフェッチストリームに関連付けられたアドレスシーケンス５００の１つの例示的な実施形態を概念的に示す図である。図示されている実施形態では、プリフェッチストリームエンジンは、矢印５０５によって示されるベースアドレスの先の９つのアドレスにフラグを割り当てている。ここで説明されるように、ベースアドレス５０５およびアドレスシーケンスの方向は、アドレス５１０に対するミスに基づいて決定されてよい。ストリームエンジンは、塗りつぶされたフラグで示されるように、ベースアドレス５０５の先のアドレスのうち４つのアドレスのフラグをセットして、メモリのこれらのアドレスの情報がキャッシュ内に取得される必要があることを示す。４つのセットされたプリフェッチフラグは、このプリフェッチストリームに関連付けられた４つの未決の要求があることを示している。
【００３４】
図示されている実施形態では、プリフェッチストリームエンジンは、第１のセットフラグに関連付けられたアドレスによって示されるキャッシュラインに対するプリフェッチ要求５１５を発行する。プリフェッチ要求５１５を発行することに応じて、カウンタ５２０は、プリフェッチストリームに関連付けられた未決のプリフェッチ要求の数をカウントするために使用されてよい。例えば、プリフェッチ要求５１５の後、アドレスシーケンス５００は、３つの未決プリフェッチ要求に対するセットフラグを含んでいる。したがって、カウンタ５２０は、３つの未決プリフェッチ要求をカウントしてよい。次に、カウンタによって決定された値は、ヒント５２５として記憶されてよい。図示されている実施形態では、ヒント５２５は、未決のプリフェッチ要求が０〜３つある可能性があることを示す情報を記憶するには十分である２ビット［４：３］によって表されている。ただし、本開示の利点を有する当業者は、代替実施形態が、異なる数の潜在的な未決のプリフェッチ要求を表すために、ヒント５２５に異なる数のビットを含んでよいことを理解するべきである。
【００３５】
図６は、プリフェッチストリームエントリ６００の１つの例示的な実施形態を概念的に示す図である。図示されている実施形態では、プリフェッチストリームエントリ６００は、プリフェッチャ内の対応するストリームエンジンによって生成されてもよいし、維持されてもよいし、記憶されてもよい。プリフェッチストリームエントリ６００は、ストリームに関連付けられたデータのページに対応するページアドレス６０５と、ストリームに関連付けられたページの内部のカレントラインオフセットを示すラインオフセット６１０と、ページ内で関連付けられたラインからデータをプリフェッチするための要求を示すためにセットできるプリフェッチフラグ６１５と、を示す情報を含む。ストリームエントリ６００は、ストリームが昇順アドレスに対応するのか、または、降順アドレスに対応するのかを示す方向ビット（ＤＩＲ）を含んでもよい。また、ストリームエントリ６００は、対応するプリフェッチストリームに関連付けられた未決プリフェッチ要求の数を示す情報を含むプリフェッチヒント情報６２０を含む。一実施形態では、プリフェッチストリームに関連付けられたプリフェッチストリームエンジンは、プリフェッチヒント６２０の値を、例えばプリフェッチ要求を発行することに応じて変更できる。例えば、プリフェッチヒント６２０が３という値を初期に有しており、プリフェッチ要求を発行することで未決のプリフェッチ要求の数を２に低減する場合には、プリフェッチストリームエンジンは、２という値を有するようにプリフェッチヒント６２０の値を変更してよい。
【００３６】
図７は、プリフェッチストリームを割り当て、プリフェッチフラグを使用してルックアヘッドウィンドウを識別するための方法７００の１つの例示的な実施形態を概念的に示す図である。方法７００の実施形態は、図１に示すＬ２データキャッシュプリフェッチャ１５０で実装されてよい。ただし、本開示の利点を有する当業者は、方法７００の代替実施形態が、プリフェッチを実装する別のキャッシュからデマンド要求またはプリフェッチ要求を受け取ることができる任意のプリフェッチャで実装され得ることを理解するべきである。図示されている実施形態では、例えば、ミスアドレスバッファからのＭＡＢイベントについての情報を用いて第１のＬ２キャッシュミスが検出され（ブロック７０５）、ストリームがプリフェッチャストリームエンジンに割り当てられる。次に、プリフェッチャストリームエンジンは、第１のキャッシュミスとともに（正方向または負方向の）シーケンス内の第２のミスを検出するまで（ブロック７１０）待機する。図示されている実施形態では、シーケンシャルアドレスに対するキャッシュミスの検出は、プリフェッチストリームの生成をトリガするために用いられているが、当業者は、代替実施形態において、プリフェッチストリームの生成をトリガするために異なるキャッシュミスパターンを使用してよいことを理解するべきである。例えば、プリフェッチストリームは、所定のストライド値または何らかの他のパターンで区切られるアドレスに対するキャッシュミスを検出することに応じて、割り当てられてもよい。
【００３７】
図示されている実施形態では、ストリームエンジンは、シーケンス方向を決定するために（ブロック７１５）、第１のキャッシュミスおよび第２のキャッシュミスのアドレスを使用できる。プリフェッチフラグは、プリフェッチストリーム内の選択された数のアドレスに割り当てられてよい（ブロック７２０）。フラグが割り当てられるアドレスは、第１のキャッシュミスおよび第２のキャッシュミスによって確立されるシーケンスまたはパターンに従う。例えば、フラグは、プリフェッチストリームに対して確立された方向での第２のミスのアドレスに従う選択された数のアドレス（例えば、１２以上のアドレス）に割り当てられ得る（ブロック７２０）。次に、プリフェッチストリームのためのストリームエンジンは、プリフェッチヒント情報が、例えば関連付けられたキャッシュからのデマンド要求またはプリフェッチ要求とともに、関連付けられたキャッシュから受け取られたか否かを判断してもよい（ブロック７２５）。
【００３８】
次に、割り当てられたフラグのサブセットは、受け取られたデマンド要求またはプリフェッチ要求に基づいてセットされてよい。一実施形態では、ヒント情報が受け取られない場合には、以後のクロックサイクルにおいて、フラグが付けられたアドレスからプリフェッチャが情報を取得する必要があることを示すために、所定のオフセットで開始する、選択された数のフラグが、セットされ得る（ブロック７３０）。例えば、アドレスのサブセット（例えば、１２のフラグ付きのアドレス）のフラグは、これらのアドレスがメモリからキャッシュ内に取得可能となるようにセットされ得る（ブロック７３０）。ただし、ストリームエンジンが、関連付けられたキャッシュでの未決のプリフェッチ要求の数を示すヒント情報が受け取られたと判断した場合には（ブロック７２５）、プリフェッチフラグは、所定のオフセットとは異なるオフセットでセットされてよい（ブロック７３５）。図示されている実施形態では、プリフェッチフラグは、ヒント情報によって示される未決のプリフェッチ要求の数を加えた所定のオフセットと等しいオフセットで始まるアドレスにセットされてよい（ブロック７３５）。
【００３９】
このようにしてアドレスを設定すること（ブロック７３５）は、プリフェッチャが、他の関連付けられたキャッシュによって既に要求されていた可能性があるラインに対する要求を発行することをバイパスする、または、無視することができるようにする。例えば、Ｌ２キャッシュは、Ｌ１キャッシュに関連付けられた１つ以上のプリフェッチストリームで要求されたか、または、未決であるかの何れかであるラインに関連付けられたアドレスに先立つアドレスに関連付けられたフラグをセットできる（ブロック７３５）。これらのアドレスをバイパスまたは無視することは、Ｌ２レベルで実行される冗長なプリフェッチ要求の数を低減させ、Ｌ２キャッシュ内に情報をプリフェッチするのに使用可能な機会の数を増加させる。
【００４０】
図８Ａは、プリフェッチストリームに関連付けられたアドレスシーケンス８００の１つの例示的な実施形態を概念的に示す図である。図示されている実施形態では、プリフェッチストリームエンジンは、矢印８０５で示されるベースアドレスの先の１２以上のアドレスにフラグを割り当てている。ここで説明されるように、ベースアドレス８０５およびアドレスシーケンスの方向は、アドレス８１０に対するミスに基づいて決定されてよい。また、ストリームエンジンは、塗りつぶされたフラグで示されるベースアドレス８０５の先の１２のアドレスのフラグをセットして、メモリのこれらのアドレスの情報がキャッシュ内に取得される必要があることを示す。図示されている実施形態では、フラグは、アドレス８１０（３）で示されるラインのために関連付けられた（例えば、より低いレベルの）キャッシュからプリフェッチ要求を受け取ったことに応じて、セットされている。ストリームエンジンは、より低いレベルのプリフェッチャからヒントを受け取っていないため、プリフェッチ要求によって示されるアドレス８１０（３）から１という所定のオフセットで開始するフラグがセットされる。ただし、本書に説明されるように、所定のオフセットは設計の選択肢の問題であって、異なる設計または操作上の考慮事項を満たすために変更されてよい。
【００４１】
図８Ｂは、プリフェッチストリームに関連付けられたアドレスシーケンス８００の別の例示的な実施形態を概念的に示す図である。図示されている実施形態では、プリフェッチストリームエンジンは、矢印８０５で示されるベースアドレスの先の１２以上のアドレスにフラグを割り当てている。ここで説明されるように、ベースアドレス８０５およびアドレスシーケンスの方向は、アドレス８１０に対するミスに基づいて決定されてもよい。ストリームエンジンは、塗りつぶされたフラグで示されるベースアドレス８０５の先のアドレスのフラグを設定して、メモリのこれらのアドレスでの情報がキャッシュ内に取得される必要があることを示す。図示されている実施形態では、フラグは、アドレス８１０（３）によって示されるラインのために関連付けられた（例えば、より低いレベルの）キャッシュからプリフェッチ要求を受け取ることに応じて、セットされている。図示されている実施形態のストリームエンジンは、関連付けられたより低いレベルのプリフェッチャでの３つの未決のプリフェッチ要求を示すヒントを、より低いレベルのプリフェッチャから受け取る。その結果として、ストリームエンジンは、プリフェッチ要求によって示されるアドレス８１０（３）から、未決のプリフェッチ要求の数（３）が加えられた１という所定のオフセットで始まるフラグをセットする。したがって、より高いレベルのプリフェッチャは、バイパスまたは無視されたアドレスに対するプリフェッチ要求を発行することを、バイパスしてもよいし、無視してもよい。
【００４２】
（プロセッサシステム１００等の）本明細書で説明されるプリフェッチヒントを提供または活用することができるプロセッサシステムの実施形態は、多様なプロセッサ設計に従って半導体製造施設で製造できる。一実施形態では、プロセッサ設計は、コンピュータ可読媒体に記憶されたコードとして表すことができる。プロセッサ設計を定義するおよび／または表すために使用されてよい例示的なコードは、ＨＤＬ、Ｖｅｒｉｌｏｇ等を含んでよい。コードは、エンジニアによって作成され、他の処理装置によって合成され、プロセッサ設計の中間表現（例えばネットリスト、ＧＤＳＩＩデータ等）を生成するために使用されてよい。中間表現はコンピュータ可読媒体に記憶され、半導体製造施設で実行される製造／製作プロセスを構成し、制御するために使用できる。半導体製造施設は、半導体基板上にトランジスタおよび他の回路網を形成するために使用される蒸着、フォトリソグラフィー、エッチング、研磨／平坦化、計測学および他のプロセスを実行するための処理ツールを含んでよい。処理ツールは、例えばＧＤＳＩＩデータから生成されるマスクワークを使用することによって、中間表現を使用して構成することができ、操作される。
【００４３】
開示されている主題および対応する詳細な説明の部分は、ソフトウェア、または、アルゴリズムおよびコンピュータメモリ内部のデータビットに対する動作の象徴表現に関して提示される。これらの説明および表現は、当業者が自分の作業の要旨を他の当業者に効果的に伝えることができるようにする説明および表現である。アルゴリズムは、用語がここで使用されるように、用語が一般に使用されるように、所望の結果につながるステップの首尾一貫したシーケンスとなるように考え出される。ステップは、物理的な量の物理的な操作を必要とするステップである。通常、必ずしもではないが、これらの量は、記憶され、転送され、結合され、比較され、それ以外の場合操作されることが可能な光学信号、電気信号または磁気信号の形をとる。これらの信号をビット、値、要素、記号、文字、用語、数等として参照することは、主に一般的な使用の理由からときおり便利であることが判明している。
【００４４】
ただし、これらの用語および類似する用語の全てが適切な物理量と関連付けられなければならず、これらの量に適用される便利なラベルにすぎないことが念頭に入れられるべきである。特に明確な指定がない限り、または、説明から明らかであるように、「処理する」、「算定する」、「計算する」、「決定する」または「表示する」等の用語は、コンピュータシステムまたは類似する電子計算装置（コンピュータシステムのレジスタおよびメモリ内の物理電子量として表されるデータを操作し、または、当該データを、コンピュータシステムのメモリやレジスタ内の物理量、もしくは、他の係る情報記憶装置、情報送信装置、情報表示装置内の物理量として同様に表される他のデータに変換する装置）のアクションおよびプロセスを指す。
【００４５】
また、開示されている主題のソフトウェア実装態様が通常何らかの形のプログラム記憶媒体上で符号化され、または、何らかのタイプの送信媒体上で実装されることにも留意されたい。プログラム記憶媒体は、磁気（例えば、フロッピー（登録商標）ディスクもしくはハードドライブ）または、光学（例えば、コンパクトディスク読取り専用メモリ、つまり「ＣＤ  ＲＯＭ」）であってもよいし、読取り専用またはランダムアクセスであってよい。同様に、送信媒体は、ツイストペア線、同軸ケーブル、光ファイバ、または、既知の何らかの他の適切な伝送媒体であってよい。開示されている主題は、任意の所与の実装例の態様によって制限されない。
【００４６】
開示されている主題は、本書の教示の利点を有する当業者にとって明らかな方法、または、異なっているが同等の方法で修正され、実践されてよいので、上記に開示された特定の実施形態は実例的にすぎない。さらに、以下の特許請求の範囲に説明される以外、ここで示される構造または設計の詳細に対する制限は意図されていない。したがって、上記に開示された特定の実施形態が改変または修正されてよく、係る全ての変形態様が、開示されている主題の範囲内にあるとみなされることは明白である。したがって、ここで求められる保護は、以下の特許請求の範囲に述べられるとおりである。
【図１】
2015529356.tif 000003
【図２】
2015529356.tif 000004
【図３】
2015529356.tif 000005
【図４】
2015529356.tif 000006
【図５】
2015529356.tif 000007
【図６】
2015529356.tif 000008
【図７】
2015529356.tif 000009
【図８Ａ】
2015529356.tif 000010
【図８Ｂ】
2015529356.tif 000011
【国際調査報告】
2015529356.tif 000012
2015529356.tif 000013