(57)【特許請求の範囲】
【請求項１】
データをプリフェッチするためのコンピュータ・システムであって、
チップを含み、前記チップは、
前記チップ上に位置する少なくとも１つのスカウト・コアと、
前記チップ上に位置する少なくとも１つの親コアと、
前記チップ上に位置し、前記スカウト・コアと前記親コアに共通する共有キャッシュを含み、
前記システムは方法を行うように構成され、前記方法は、
前記親コアを監視するために、前記親コアから独立して実行するプリフェッチ・コードを前記スカウト・コアによって実行するステップと、
前記親コアの監視に基づいて、少なくとも１つの指定されたデータ・パターンが前記親コアにおいて発生したことを前記スカウト・コアによって判定するステップと、
前記判定に基づき、前記スカウト・コアから前記共有キャッシュへプリフェッチ要求を送るステップと、
前記プリフェッチ要求によって示されるデータ・セットを前記共有キャッシュによって前記親コアへ送るステップと、
前記プリフェッチ要求が前記親コアに代わって行われたことを、前記親コアに通知するステップと、
を含む、コンピュータ・システム。
【請求項２】
前記スカウト・コアは、前記プリフェッチ要求によって要求された前記データを前記親コアに位置するキャッシュにおいてどのようにルーティングおよび記憶するかを前記共有キャッシュに通知する、請求項１に記載のコンピュータ・システム。
【請求項３】
前記チップは、前記共有キャッシュとそれぞれ通信している少なくとも２つの親コアを含む、請求項１または２に記載のコンピュータ・システム。
【請求項４】
前記チップは、前記共有キャッシュと通信している少なくとも２つのスカウト・コアを含み、前記スカウト・コアは、異なる指定されたデータ・パターンについて前記親コアを監視する、請求項１ないし３のいずれかに記載のコンピュータ・システム。
【請求項５】
前記スカウト・コアは、フェッチ監視バスを通して前記親コアを監視し、前記フェッチ監視バスは、前記スカウト・コアを前記共有キャッシュに接続する、請求項１ないし４のいずれかに記載のコンピュータ・システム。
【請求項６】
前記指定されたデータ・パターンは、前記親コアに位置するキャッシュにおいてキャッシュ・ミスが発生することである、請求項１ないし５のいずれかに記載のコンピュータ・システム。
【請求項７】
前記指定されたデータ・パターンは、前記親コアのチェックポイント・アドレスである、請求項１ないし５のいずれかに記載のコンピュータ・システム。
【請求項８】
少なくとも１つのスカウト・コアと、少なくとも１つの親コアと、前記スカウト・コアと前記親コアに共通する共有キャッシュとを有するチップ上で、データをプリフェッチするためのコンピュータ・プログラムであって、
前記親コアを監視するために、前記親コアから独立して実行するプリフェッチ・コードを前記スカウト・コアによって実行するステップと、
前記親コアの監視に基づいて、少なくとも１つの指定されたデータ・パターンが前記親コアにおいて発生したことを前記スカウト・コアによって判定するステップと、
前記判定に基づき、前記スカウト・コアから前記共有キャッシュへプリフェッチ要求を送るステップと、
前記プリフェッチ要求によって示されるデータ・セットを前記共有キャッシュによって前記親コアへ送るステップと、
前記プリフェッチ要求が前記親コアに代わって行われたことを、前記親コアに通知するステップと、
を処理回路に実行させる、コンピュータ・プログラム。
【請求項９】
前記スカウト・コアは、前記プリフェッチ要求によって要求された前記データを前記親コアに位置するキャッシュにおいてどのようにルーティングおよび記憶するかを前記共有キャッシュに通知する、請求項８に記載のコンピュータ・プログラム。
【請求項１０】
前記チップは、前記共有キャッシュとそれぞれ通信している少なくとも２つの親コアを含む、請求項８または９に記載のコンピュータ・プログラム。
【請求項１１】
前記チップは、前記共有キャッシュと通信している少なくとも２つのスカウト・コアを含み、前記スカウト・コアは、異なる指定されたデータ・パターンについて前記親コアを監視する、請求項８ないし１０のいずれかに記載のコンピュータ・プログラム。
【請求項１２】
前記スカウト・コアは、フェッチ監視バスを通して前記親コアを監視し、前記フェッチ監視バスは、前記スカウト・コアを前記共有キャッシュに接続する、請求項８ないし１１のいずれかに記載のコンピュータ・プログラム。
【請求項１３】
前記指定されたデータ・パターンは、前記親コアに位置するキャッシュにおいてキャッシュ・ミスが発生することである、請求項８ないし１２のいずれかに記載のコンピュータ・プログラム。
【請求項１４】
少なくとも１つのスカウト・コアと、少なくとも１つの親コアと、前記スカウト・コアと前記親コアに共通する共有キャッシュとを有するチップ上で、データをプリフェッチするためのコンピュータ実施方法であって、
前記親コアを監視するために、前記親コアから独立して実行するプリフェッチ・コードを前記スカウト・コアによって実行するステップと、
前記親コアの監視に基づいて、少なくとも１つの指定されたデータ・パターンが前記親コアにおいて発生したことを前記スカウト・コアによって判定するステップと、
前記判定に基づき、前記スカウト・コアから前記共有キャッシュへプリフェッチ要求を送るステップと、
前記プリフェッチ要求によって示されるデータ・セットを前記共有キャッシュによって前記親コアへ送るステップと、
前記プリフェッチ要求が前記親コアに代わって行われたことを、前記親コアに通知するステップと、
を含む方法。
【請求項１５】
前記スカウト・コアは、前記プリフェッチ要求によって要求された前記データを前記親コアに位置するキャッシュにおいてどのようにルーティングおよび記憶するかを前記共有キャッシュに通知する、請求項１４に記載の方法。
【請求項１６】
前記チップは、前記共有キャッシュとそれぞれ通信している少なくとも２つの親コアを含む、請求項１４または１５に記載の方法。
【請求項１７】
前記チップは、前記共有キャッシュと通信している少なくとも２つのスカウト・コアを含み、前記スカウト・コアは、異なる指定されたデータ・パターンについて前記親コアを監視する、請求項１４ないし１６のいずれかに記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、親コアとスカウト・コア（scout core）とを有するマルチコア・チップに関し、より詳細には、マルチコア・チップにおける親コアのためのプリフェッチングに関する。
【背景技術】
【０００２】
シングル・スレッド・プロセッサ性能の増大はシングル・スレッド性能のために必要な電力要件のために制限される。周波数および／または機能的特徴の増大を通してプロセッサの電力要件が倍増しても、必ずしも増大した電力要件以上の性能利得が得られるとは限らない。なぜなら性能利得対電力利得比が著しく偏っているからである。チップ性能の向上のために電力バジェットのかなりの部分がチップ上に追加コアの配置に向けられ得る。キャッシュおよびメモリの共有がコア数の比率増大に性能増大が等しくなることを妨げる一方で、チップ上のコア数を増加させるための性能利得はシングル・コア・プロセッサの性能を向上させるのみよりも大きい性能／ワット利得を生じ得る。
【０００３】
シングル・スレッド性能を高めるための１つの手法では、プライマリまたは親コアと同じチップ上のセカンダリ・コアがスカウト・コアとして活用され得る。具体的には、スカウト・コアが共有キャッシュから親コアのプライベート・キャッシュにデータをプリフェッチするために使用され得る。この手法は、親コアがキャッシュ・ミスに遭遇する場合に特に有用となり得る。特定のデータ・ラインが親コアのディレクトリの探索を引き起こし要求されたキャッシュ・ラインが存在しないときにキャッシュ・ミスが発生する。ミッシング・キャッシュ・ラインを取得するための１つの典型的な手法は、キャッシュのより高いレベルへのフェッチ動作を開始することである。スカウト・コアは親コアによって必要とされたデータをプリフェッチするために使用される機構を提供する。
【０００４】
様々なプログラムが別様に挙動し、結果として１つのプリフェッチング・アルゴリズムまたは手法が常にキャッシュ・コンテンツにアクセスするレイテンシを向上させるとは限らないことに留意されたい。データを親コアにプリフェッチするための手法では、ストライド・エンジンである比較的小さく簡単なアルゴリズムが後続のキャッシュ・ミス間で観察されたストライドに基づいてデータを投機的にプリフェッチするために提供され得る。より複雑なパターンをカバーするために物理的サイズおよび電力がより複雑におよびより大きくなり得る追加のハードウェアが必要とされる。しかし、スループット、レイテンシ、およびワット数バランシングのためのチップ・トレードオフのためにプリフェッチングのために利用可能である専用ハードウェアの量がコア制限され得る。さらに、キャッシュ・ミスを監視および検出するために必要とされるエリアおよびストレージの量が大きすぎてハードウェアで独自に実装することができないことがあり得る。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的の１つは、データをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、コンピュータ実施方法を提供することである。
【課題を解決するための手段】
【０００６】
本発明の態様は、少なくとも１つのスカウト・コアと、少なくとも１つの親コアと、少なくとも１つのスカウト・コアと少なくとも１つの親コアに共通する共有キャッシュとを有するチップ上で、データをプリフェッチするための方法、システム、およびコンピュータ・プログラムを含む。親コアを監視するために、プリフェッチ・コードがスカウト・コアによって実行される。プリフェッチ・コードは、親コアから独立して実行する。スカウト・コアは親コアの監視に基づいて少なくとも１つの指定されたデータ・パターンが親コアにおいて発生したことを判定する。プリフェッチ要求が、スカウト・コアから共有キャッシュへ送られる。プリフェッチ要求は、少なくとも１つの指定されたパターンがスカウト・コアによって検出されることに基づいて送られる。プリフェッチ要求によって示されるデータ・セットは、共有キャッシュによって親コアへ送られる。
【０００７】
本発明の実施形態について、単に例として、添付の図面を参照しながら、以下で説明する。
【図面の簡単な説明】
【０００８】
【図１】一実施形態によるマルチコア・チップを示す図である。
【図２】一実施形態による中央処理（ＣＰ）チップを示す図である。
【図３】別の実施形態による中央処理チップを示す図である。
【図４】さらに別の実施形態による中央処理チップを示す図である。
【図５】一実施形態による、スカウト・コアによって親コアのためにデータをプリフェッチするための動作の方法を示すためのプロセス・フローである。
【図６】一実施形態によるコンピュータ・プログラム製品を示す図である。
【発明を実施するための形態】
【０００９】
マルチコア・チップにおいてスカウト・コアによって親コアのためにデータをプリフェッチするための実施形態を開示する。１つの例示的な実施形態では、マルチコア・チップは、少なくとも１つの親コアと、少なくとも１つのスカウト・コアと、共有キャッシュとを含む。スカウト・コアは、親コアによって作成された少なくとも１つのタイプの指定されたパターンについて親コアのアクティビティを監視し、プリフェッチ要求がスカウト・コアから共有キャッシュへ送られるべきかどうかを判定する。スカウト・コアからのプリフェッチ要求の受信に応じてプリフェッチによって要求されたデータが親コアへ送られる。プリフェッチによって要求されたデータは、親コアによって受け入れられ、スカウト・コアによって受け入れられない。スカウト・コアは、親コアにおいて発生する様々なタイプの指定されたデータ・パターンについて親コアを監視する。対照的に、現在利用可能であるいくつかのタイプのコア専用ハードウェア・プリフェッチャは、一般に、特定のサブセットのパターンについて親コアを監視するための能力を有するのみである。また、スカウト・プロセッサは、スカウト・コア・プリフェッチャによって再使用されるハードウェアの量のために、典型的なハードウェア・プリフェッチャよりも多いデータを解析することが可能である。
【００１０】
図１は、一実施形態によるコンピューティング・システム１０の一例を示す。コンピューティング・システム１０は、少なくとも１つの中央処理（ＣＰ）チップ２０を含む。図１に示される例示的な実施形態では３つの中央処理チップ２０が示されるが、任意の数の中央処理チップ２０が同様に使用され得ることを理解されたい。各中央処理チップ２０は共有キャッシュ２２およびシステム・メモリ２４と通信する。
【００１１】
ここで図１および図２を参照すると、各中央処理チップ２０は命令の読み出しおよび実行のための複数のコア３０を含む。例えば、図２に示す例示的な実施形態では、各中央処理チップ２０は親コア３２とスカウト・コア３４とを含むが、任意の数のコア３０が同様に使用されてよく、また、中央処理チップの代替実施形態が図３および図４に示されていることを理解されたい。また、図２を参照すると、各コア３０はＩ−キャッシュ４０とＤ−キャッシュ４２とをそれぞれ含む。図２に示す例示的な実施形態では、コア３０はそれぞれレベル１（Ｌ１）キャッシュのみを含むが、様々な実施形態ではコア３０はレベル２（Ｌ２）キャッシュを同様に含み得ることを理解されたい。各コア３０は共有キャッシュ５０に動作可能に結合される。図２に示す実施形態では、共有キャッシュ５０はＬ２キャッシュであるが、共有キャッシュ５０はレベル３（Ｌ３）キャッシュであってもよいことを理解されたい。
【００１２】
データ・リターン・バス６０は親コア３２と共有キャッシュ５０の間に設けられる。データ・リターン・バス６２はスカウト・コア３４と共有キャッシュ５０の間に設けられる。フェッチ要求バス６４は親コア３２を共有キャッシュ５０と接続し、そこでデータが親コア３２から共有キャッシュ５０へ送られる。フェッチ監視バス６６はスカウト・コア３４を共有キャッシュ５０と接続し、そこでスカウト・コア３４はフェッチ監視バス６６を通して共有キャッシュ５０を監視する。フェッチ要求バス６８はスカウト・コア３４と共有キャッシュ５０との間に位置して、スカウト・コア３４から共有キャッシュ５０へ様々なプリフェッチ要求を送る。また、フェッチ要求バス６８はフェッチ要求バス６４によって行われるフェッチングのような典型的なフェッチングのためにも使用され得る。そのようなフェッチングは、解析されているデータがローカル・データ・キャッシュ４２に完全に適合しない場合および／またはプリフェッチ・コードがローカル命令キャッシュ４０に完全に適合しない場合、潜在的にさらなるデータを解析のためにロードする必要があるとともに、プリフェッチ・コードをスカウト・コア３４にロードするために必要とされる。
【００１３】
図２に示す実施形態では、共有キャッシュ５０はハブまたは接続として働き、スカウト・コア３４が親コア３２を監視することができるようにする。スカウト・コア３４は親コア３２において発生する少なくとも１つの指定されたデータ・パターンについて親コア３２を監視する。具体的には、スカウト・コア３４は親コア３２を監視するために使用されるプリフェッチ・コードを実行する。プリフェッチ・コードは１つまたは複数の指定されたデータ・パターンが親コア３２において発生したかどうかを判定し、指定されたデータ・パターンに基づいてフェッチ要求を共有キャッシュ５０へ送る。また、プリフェッチ・コードは親コア３２によって実行されるいかなるコードからも独立して実行される。一般に、スカウト・コア３４はプリフェッチ・コードをスカウト・コア３４に位置するＬ１  Ｉ−キャッシュ４０上に記憶される。
【００１４】
指定されたデータ・パターンは、親コア３２からのコンテンツ要求（例えば、親コア３２のＩ−キャッシュ４０およびＤ−キャッシュ４２に存在しない特定のキャッシュ・ラインの要求）、または、代替的に、親コア３２のチェックポイント・アドレスであり得る。例えば、親コア３２はＩ−キャッシュ４０またはＤ−キャッシュ４２のいずれかにメモリ・アドレスを要求し得る。Ｉ−キャッシュ４０またはＤ−キャッシュ４２が親コア３２から要求された特定のキャッシュ・ラインを含まない場合、キャッシュ・ミスが発生する。スカウト・コア３４はフェッチ監視バス６６によって共有キャッシュ５０を通して親コア３２を監視することによってキャッシュ・ミスを検出する。一実施形態では、スカウト・コア３４はキャッシュ・ミスがＩ−キャッシュ４０もしくはＤ−キャッシュ４２のいずれか（または、キャッシュ・ミスに遭遇した親コア３２に位置する任意の他のタイプのキャッシュ）で発生したかどうかを判定する。キャッシュ・ミスの検出に応じて予測される将来のミッシング・キャッシュ・ラインのためのプリフェッチがスカウト・コア３４によってフェッチ要求バス６８を通して共有キャッシュ５０へ送られ得る。１つの手法では、スカウト・コア３４は特定のキャッシュ・ラインが親コア３２のキャッシュ（例えば、Ｉ−キャッシュ４０およびＤ−キャッシュ４２）に記憶されているかどうかを判定するためにチェックしてもよい。特定のキャッシュ・ラインが親コア３２にある場合、親コア３２のキャッシュにすでにあるデータをプリフェッチする必要はない。
【００１５】
別の手法では、親コア３２のチェックポイント・アドレスが共有キャッシュ５０を通して親コア３２とスカウト・コア３４との間で渡され得る。特定のチェックポイント・アドレスは特定のイベントを表し得る。特定のイベントは、例えば、ガーベッジ・コレクションまたはコンテキスト・スイッチであり得る。１つの例示的な実施形態では、チェックポイント・アドレスは親コア３２のＩ−キャッシュ４０またはＤ−キャッシュ４２のいずれかにおける特定のキャッシュ・ラインに関連付けられ得るが、チェックポイント・アドレスは必ずしも特定のプリフェッチ・アドレスに関連付けられるとは限らないことを理解されたい。スカウト・コア３４は親コア３２を監視し、指定されたイベントの完了に応じてスカウト・コア３４はプリフェッチ要求を共有キャッシュ５０へ送り、指定されたイベントに関連付けられたキャッシュ・ラインを獲得する。
【００１６】
スカウト・コア３４からプリフェッチ要求を受けたことに応じて、共有キャッシュ５０はプリフェッチによって要求されたデータを親コア３２へデータ・リターン・バス６０を通して送る。共有キャッシュ５０はプリフェッチ要求に応じてプリフェッチによって要求されたデータを親コア３２へ送る。プリフェッチ要求によって要求されたデータは親コア３２によって受け入れられスカウト・コア３４によって受け入れられない。
【００１７】
１つの手法では、スカウト・コア３４はプリフェッチが親コア３２に代わって行われたことを親コア３２に通知する。代替的に、別の手法では、共有キャッシュ５０も、プリフェッチによって要求されたデータが送られたことに応じてプリフェッチが親コア３２に代わって行われたことを親コア３２に通知する。したがって、スカウト・コア３４は、（親コア３２ではなくスカウト・コア３４が要求を行ったとしても）親コア３２がプリフェッチ要求を行ったかのようにプリフェッチによって要求された親コア３２上のデータをどのようにルーティングおよび記憶するかを共有キャッシュ５０に通知する。したがって、プリフェッチによって要求されたデータは親コア３２のＩ−キャッシュ４０またはＤ−キャッシュ４２に記憶される。
【００１８】
図３は、単一のスカウト・コア１３４と少なくとも２つの親コア１３２を有する中央処理チップ１２４の代替的な例示である。図３は、２つの親コア１３２を示しているが任意の数の複数の親コア１３２が同様に使用され得ることに留意されたい。図３に示す実施形態では、データ・リターン・バス１６０は親コア１３２の両方と共有キャッシュ１５０との間に設けられ、データ・リターン・バス１６２はスカウト・コア１３４と共有キャッシュ１５０との間に設けられる。フェッチ要求バス１６４は親コア１３２の各々のために設けられ、そこでフェッチ要求バス１６４は親コア１３２を共有キャッシュ５０に接続する。フェッチ監視バス１６６はスカウト・コア１３４を共有キャッシュ１５０に接続する。フェッチ要求バス１６８はスカウト・コア１３４と共有キャッシュ１５０との間に位置して、スカウト・コア１３４から共有キャッシュ１５０へ様々なプリフェッチ要求を送る。
【００１９】
図４は、少なくとも２つのスカウト・コア２３４と１つの親コア２３２とを有する中央処理チップ２２４の代替的な例示である。図４は２つのスカウト・コア２３４を示しているが複数のスカウト・コア２３４（例えば、３つ以上）が同様に使用され得ることに留意されたい。図４に示す実施形態では、データ・リターン・バス２６０は親コア２３２と共有キャッシュ２５０との間に設けられる。データ・リターン・バス２６２はスカウト・コア２３４の各々のために設けられ、スカウト・コア２３４のうちの１つを共有キャッシュ２５０と接続するために使用される。フェッチ要求バス２６４は親コア２３２を共有キャッシュ２５０に接続する。フェッチ監視バス２６６はスカウト・コア２３４の各々のために設けられ、スカウト・コア２３４のうちの１つを共有キャッシュ２５０と接続するために使用される。フェッチ要求バス２６８はスカウト・コア２３４の各々のために設けられ、スカウト・コア２３４のうちの１つを共有キャッシュ２５０と接続するために使用される。
【００２０】
図４に示す実施形態では、それぞれのスカウト・コア２３４は異なる指定されたデータ・パターンについて親コア２３２を監視中であり得る。例えば、１つの手法では、スカウト・コア２３４のうちの１つが親コア２３２のＬ１  Ｉ−キャッシュ２４０の挙動を監視および解析中であってよく、残りのスカウト・コア２３４が親コア２３２のＬ１  Ｄ−キャッシュ２４２の挙動を監視および解析中であってよい。したがって、追加のデータは、所与の期間内に監視および解析され得る。
【００２１】
図５は、ここで説明する、スカウト・コア３４によって親コア３２のためにデータをプリフェッチするための方法３００を示すプロセス・フロー図である。図１〜図５を参照すると、方法３００はブロック３０２で開始し、そこで、スカウト・コア３４が共有キャッシュ５０を通して親コア３２を監視する。方法３００は、次いでブロック３０４へ進み得る。
【００２２】
ブロック３０４で、スカウト・コア３４が親コア３２において発生する指定されたデータ・パターンについて親コア３２を監視する。上記で説明したように、指定されたデータ・パターンは親コア３２からのコンテンツ要求（例えば、親コア３２のＩ−キャッシュ４０もしくはＤ−キャッシュ４２のいずれかに存在しない特定のキャッシュ・ラインの要求）、または、代替的に、チェックポイント・アドレスのいずれかであり得る。指定されたデータ・パターンが検出されない場合、方法３００はブロック３０２へ戻り得る。指定されたデータ・パターンが検出される場合、方法３００はブロック３０６へ進み得る。
【００２３】
ブロック３０６で、スカウト・コア３４がプリフェッチ要求を共有キャッシュ５０へ送る。上記で説明したように、プリフェッチ要求は、例えば、スカウト・コア３４によって共有キャッシュ５０へ送られたミッシング・キャッシュ・ラインのためのプリフェッチであり得る。方法３００は次いでブロック３０８へ進み得る。
【００２４】
ブロック３０８で、親コア３２が、プリフェッチが親コア３２に代わって行われたことを通知される。方法３００は、次いでブロック３１０へ進み得る。
【００２５】
ブロック３１０で、共有キャッシュ５０が、プリフェッチによって要求されたデータを親コア３２へ、データ・リターン・バス６０を通して送る。共有キャッシュ５０は、プリフェッチ要求に応じて、プリフェッチによって要求されたデータを親コア３２へ送る。一実施形態では、ブロック３０８および３１０が同時に行われる。方法３００は、次いで終了し得る。
【００２６】
本発明の１つまたは複数の態様は、システム、方法、またはコンピュータ・プログラム製品として実施され得ることを当業者は理解するだろう。したがって、本発明の１つまたは複数の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロ・コードなどを含む）、または、すべてが一般に本明細書で「回路」、「モジュール」もしくは「システム」と呼ばれることがある、ソフトウェアの態様とハードウェアの態様とを組み合わせる実施形態の形態をとり得る。さらに、本発明の１つまたは複数の態様は、コンピュータ可読プログラム・コードがその上で実施された、１つまたは複数のコンピュータ可読媒体で実施された、コンピュータ・プログラム製品の形態をとり得る。
【００２７】
１つまたは複数のコンピュータ可読媒体の任意の組合せが利用され得る。コンピュータ可読媒体は、コンピュータ可読記憶媒体であってもよい。コンピュータ可読記憶媒体は、例えば、限定はしないが、電子的、磁気的、光学的、電磁的、赤外線、または半導体の、システム、装置、またはデバイス、あるいは上記の任意の好適な組合せであってもよい。コンピュータ可読記憶媒体のより具体的な例（非網羅的なリスト）は、以下のもの、すなわち、１つまたは複数の電線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、光学記憶デバイス、磁気記憶デバイス、または上記の任意の好適な組合せを含む。本文書に関して、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスによって使用するため、またはそれらに関連して使用するためのプログラムを含む、または記憶することができる、任意の有形媒体であってもよい。
【００２８】
ここで図６を参照すると、一例では、コンピュータ・プログラム製品６００は、例えば、１つまたは複数の記憶媒体６０２を含み、媒体は有形または非一時的あるいはその両方であってよく、コンピュータ・プログラム製品６００は、コンピュータ可読プログラム・コード手段または論理６０４を媒体上に記憶して、本明細書で説明する実施形態の１つまたは複数の態様を提供および可能にする。
【００２９】
プログラム・コードは、作成され、有形媒体（限定はしないが、電子メモリ・モジュール（ＲＡＭ）、フラッシュ・メモリ、コンパクト・ディスク（ＣＤ）、ＤＶＤ、磁気テープなどを含む）上に記憶されるとき、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品媒体は、典型的には、好適にはコンピュータ・システムにおける処理回路によって、処理回路による実行のために可読である。そのようなプログラム・コードは、例えば、コンパイラまたはアセンブラを使用して作成されて、実行されるとき、本発明の態様を行う命令をアセンブルし得る。
【００３０】
上記で説明したようなコンピューティング・システム１０の技術的効果および利益は、スカウト・コア３４のＬ１  Ｉ−キャッシュ４０によって実行され得るプログラムの作成を含む。スカウト・コア３４は、親コア３２において発生する様々なタイプの指定されたデータ・パターンについて、親コア３２を監視することができる。対照的に、現在利用可能であるいくつかのタイプのハードウェア・プリフェッチャは、特定のパターンについて親コア３２を監視することができるのみである。その上、スカウト・コア３４によって監視および解析され得るデータ・パターンの量は、現在利用可能であるハードウェア・プリフェッチャよりも比較的多くなり得るものであり、その理由は、スカウト・コア３４のＬ１  Ｄ−キャッシュ４２全体が、解析され得るデータを記憶するために使用され得るからである。
【００３１】
本明細書で使用する専門用語は、特定の実施形態を説明することのみを目的とし、実施形態の限定を意図するものではない。本明細書で使用する場合、単数形「ａ」、「ａｎ」および「ｔｈｅ」は、文脈上明らかに別段の定めがある場合を除き、複数形も含むことが意図されている。「含む（comprises）」または「含んでいる（comprising）」あるいはその両方の用語は、本明細書で使用するとき、述べられた特徴、整数、ステップ、動作、要素、または構成要素、あるいはそのすべての存在を規定するが、１つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはそれらのグループ、あるいはそのすべての存在または追加を排除しないことは、さらに理解されよう。
【００３２】
特許請求の範囲における対応する構造、材料、行為、およびすべての手段またはステップの均等物、さらに機能要素は、具体的に特許請求する他の特許請求する要素との組合せにおいて機能を行うための任意の構造、材料、または行為を含むことが意図されている。実施形態の説明は、例示および説明の目的のために提示されたが、網羅的であること、または開示した形態における実施形態に限定されることは意図されていない。多くの変更形態および変形形態が、実施形態の範囲および趣旨から逸脱することなく、当業者には明らかとなるであろう。実施形態は、原理および実際的な用途について最善の説明をするために、ならびに、他の当業者が、企図される特定の使用に適する様々な変更形態を有する実施形態を理解することを可能にするために、選ばれ、説明された。
【００３３】
実施形態の態様についての動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組合せで書かれてもよい。プログラム・コードは、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で独立型のソフトウェア・パッケージとして部分的に、ユーザのコンピュータ上で部分的におよびリモート・コンピュータ上で部分的に、または、リモート・コンピュータもしくはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）もしくはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通して、ユーザのコンピュータに接続されてもよく、または、接続は、（例えば、インターネット・サービス・プロバイダを使用して、インターネットを通して）外部コンピュータに対して行われてもよい。
【００３４】
実施形態の態様について、実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図または概略図あるいはその両方を参照しながら、上記で説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、および、フローチャート図またはブロック図あるいはその両方におけるブロックの組合せが、コンピュータ・プログラム命令によって実施され得ることは、理解されよう。これらのコンピュータ・プログラム命令は、コンピュータ、または他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／行為を実施するための手段を作り出するように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。
【００３５】
また、これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に格納された命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／行為を実施する命令を含む製品を作り出すように、コンピュータ可読媒体に格納され、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示するものであってよい。
【００３６】
また、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードして、一連の動作ステップを、コンピュータ、他のプログラマブル装置、または他のデバイス上で行わせて、コンピュータ実施プロセスを作り出し、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方の１つまたは複数のブロックにおいて指定された機能／行為を実施するためのプロセスを提供するようにすることもできる。
【００３７】
図面におけるフローチャートおよびブロック図は、様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点について、フローチャートまたはブロック図における各ブロックは、モジュール、セグメント、またはコードの部分を表すことがあり、それは、指定された論理機能を実施するための１つまたは複数の実行可能命令を含む。また、いくつかの代替実装形態では、ブロックに示した機能が、図面に示した順序から外れて行われ得ることにも留意されたい。例えば、連続して示す２つのブロックは、実際には、実質的に同時に実行されてもよく、または、それらのブロックは、時々、関連する機能に応じて、逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、および、ブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは行為を行う専用ハードウェア・ベースのシステム、または、専用ハードウェアおよびコンピュータ命令の組合せによって実装され得ることにも留意されたい。
【図１】
0006320431.tif 000002
【図２】
0006320431.tif 000003
【図３】
0006320431.tif 000004
【図４】
0006320431.tif 000005
【図５】
0006320431.tif 000006
【図６】
0006320431.tif 000007