JP6320431B2 - データをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、コンピュータ実施方法 - Google Patents

データをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、コンピュータ実施方法 Download PDF

Info

Publication number
JP6320431B2
JP6320431B2 JP2015560810A JP2015560810A JP6320431B2 JP 6320431 B2 JP6320431 B2 JP 6320431B2 JP 2015560810 A JP2015560810 A JP 2015560810A JP 2015560810 A JP2015560810 A JP 2015560810A JP 6320431 B2 JP6320431 B2 JP 6320431B2
Authority
JP
Japan
Prior art keywords
core
parent
scout
shared cache
parent core
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015560810A
Other languages
English (en)
Other versions
JP2016509320A (ja
Inventor
プラスキー、ブライアン、ロバート
クリゴウスキー、クリストファー、アンソニー
シャム、チュン−ルン、ケビン
ブサバ、ファディ、ユスフ
カルラフ、スティーブン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2016509320A publication Critical patent/JP2016509320A/ja
Application granted granted Critical
Publication of JP6320431B2 publication Critical patent/JP6320431B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/622State-only directory, i.e. not recording identity of sharing or owning nodes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Description

本発明は、一般に、親コアとスカウト・コア(scout core)とを有するマルチコア・チップに関し、より詳細には、マルチコア・チップにおける親コアのためのプリフェッチングに関する。
シングル・スレッド・プロセッサ性能の増大はシングル・スレッド性能のために必要な電力要件のために制限される。周波数および/または機能的特徴の増大を通してプロセッサの電力要件が倍増しても、必ずしも増大した電力要件以上の性能利得が得られるとは限らない。なぜなら性能利得対電力利得比が著しく偏っているからである。チップ性能の向上のために電力バジェットのかなりの部分がチップ上に追加コアの配置に向けられ得る。キャッシュおよびメモリの共有がコア数の比率増大に性能増大が等しくなることを妨げる一方で、チップ上のコア数を増加させるための性能利得はシングル・コア・プロセッサの性能を向上させるのみよりも大きい性能/ワット利得を生じ得る。
シングル・スレッド性能を高めるための1つの手法では、プライマリまたは親コアと同じチップ上のセカンダリ・コアがスカウト・コアとして活用され得る。具体的には、スカウト・コアが共有キャッシュから親コアのプライベート・キャッシュにデータをプリフェッチするために使用され得る。この手法は、親コアがキャッシュ・ミスに遭遇する場合に特に有用となり得る。特定のデータ・ラインが親コアのディレクトリの探索を引き起こし要求されたキャッシュ・ラインが存在しないときにキャッシュ・ミスが発生する。ミッシング・キャッシュ・ラインを取得するための1つの典型的な手法は、キャッシュのより高いレベルへのフェッチ動作を開始することである。スカウト・コアは親コアによって必要とされたデータをプリフェッチするために使用される機構を提供する。
様々なプログラムが別様に挙動し、結果として1つのプリフェッチング・アルゴリズムまたは手法が常にキャッシュ・コンテンツにアクセスするレイテンシを向上させるとは限らないことに留意されたい。データを親コアにプリフェッチするための手法では、ストライド・エンジンである比較的小さく簡単なアルゴリズムが後続のキャッシュ・ミス間で観察されたストライドに基づいてデータを投機的にプリフェッチするために提供され得る。より複雑なパターンをカバーするために物理的サイズおよび電力がより複雑におよびより大きくなり得る追加のハードウェアが必要とされる。しかし、スループット、レイテンシ、およびワット数バランシングのためのチップ・トレードオフのためにプリフェッチングのために利用可能である専用ハードウェアの量がコア制限され得る。さらに、キャッシュ・ミスを監視および検出するために必要とされるエリアおよびストレージの量が大きすぎてハードウェアで独自に実装することができないことがあり得る。
本発明の目的の1つは、データをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、コンピュータ実施方法を提供することである。
本発明の態様は、少なくとも1つのスカウト・コアと、少なくとも1つの親コアと、少なくとも1つのスカウト・コアと少なくとも1つの親コアに共通する共有キャッシュとを有するチップ上で、データをプリフェッチするための方法、システム、およびコンピュータ・プログラムを含む。親コアを監視するために、プリフェッチ・コードがスカウト・コアによって実行される。プリフェッチ・コードは、親コアから独立して実行する。スカウト・コアは親コアの監視に基づいて少なくとも1つの指定されたデータ・パターンが親コアにおいて発生したことを判定する。プリフェッチ要求が、スカウト・コアから共有キャッシュへ送られる。プリフェッチ要求は、少なくとも1つの指定されたパターンがスカウト・コアによって検出されることに基づいて送られる。プリフェッチ要求によって示されるデータ・セットは、共有キャッシュによって親コアへ送られる。
本発明の実施形態について、単に例として、添付の図面を参照しながら、以下で説明する。
一実施形態によるマルチコア・チップを示す図である。 一実施形態による中央処理(CP)チップを示す図である。 別の実施形態による中央処理チップを示す図である。 さらに別の実施形態による中央処理チップを示す図である。 一実施形態による、スカウト・コアによって親コアのためにデータをプリフェッチするための動作の方法を示すためのプロセス・フローである。 一実施形態によるコンピュータ・プログラム製品を示す図である。
マルチコア・チップにおいてスカウト・コアによって親コアのためにデータをプリフェッチするための実施形態を開示する。1つの例示的な実施形態では、マルチコア・チップは、少なくとも1つの親コアと、少なくとも1つのスカウト・コアと、共有キャッシュとを含む。スカウト・コアは、親コアによって作成された少なくとも1つのタイプの指定されたパターンについて親コアのアクティビティを監視し、プリフェッチ要求がスカウト・コアから共有キャッシュへ送られるべきかどうかを判定する。スカウト・コアからのプリフェッチ要求の受信に応じてプリフェッチによって要求されたデータが親コアへ送られる。プリフェッチによって要求されたデータは、親コアによって受け入れられ、スカウト・コアによって受け入れられない。スカウト・コアは、親コアにおいて発生する様々なタイプの指定されたデータ・パターンについて親コアを監視する。対照的に、現在利用可能であるいくつかのタイプのコア専用ハードウェア・プリフェッチャは、一般に、特定のサブセットのパターンについて親コアを監視するための能力を有するのみである。また、スカウト・プロセッサは、スカウト・コア・プリフェッチャによって再使用されるハードウェアの量のために、典型的なハードウェア・プリフェッチャよりも多いデータを解析することが可能である。
図1は、一実施形態によるコンピューティング・システム10の一例を示す。コンピューティング・システム10は、少なくとも1つの中央処理(CP)チップ20を含む。図1に示される例示的な実施形態では3つの中央処理チップ20が示されるが、任意の数の中央処理チップ20が同様に使用され得ることを理解されたい。各中央処理チップ20は共有キャッシュ22およびシステム・メモリ24と通信する。
ここで図1および図2を参照すると、各中央処理チップ20は命令の読み出しおよび実行のための複数のコア30を含む。例えば、図2に示す例示的な実施形態では、各中央処理チップ20は親コア32とスカウト・コア34とを含むが、任意の数のコア30が同様に使用されてよく、また、中央処理チップの代替実施形態が図3および図4に示されていることを理解されたい。また、図2を参照すると、各コア30はI−キャッシュ40とD−キャッシュ42とをそれぞれ含む。図2に示す例示的な実施形態では、コア30はそれぞれレベル1(L1)キャッシュのみを含むが、様々な実施形態ではコア30はレベル2(L2)キャッシュを同様に含み得ることを理解されたい。各コア30は共有キャッシュ50に動作可能に結合される。図2に示す実施形態では、共有キャッシュ50はL2キャッシュであるが、共有キャッシュ50はレベル3(L3)キャッシュであってもよいことを理解されたい。
データ・リターン・バス60は親コア32と共有キャッシュ50の間に設けられる。データ・リターン・バス62はスカウト・コア34と共有キャッシュ50の間に設けられる。フェッチ要求バス64は親コア32を共有キャッシュ50と接続し、そこでデータが親コア32から共有キャッシュ50へ送られる。フェッチ監視バス66はスカウト・コア34を共有キャッシュ50と接続し、そこでスカウト・コア34はフェッチ監視バス66を通して共有キャッシュ50を監視する。フェッチ要求バス68はスカウト・コア34と共有キャッシュ50との間に位置して、スカウト・コア34から共有キャッシュ50へ様々なプリフェッチ要求を送る。また、フェッチ要求バス68はフェッチ要求バス64によって行われるフェッチングのような典型的なフェッチングのためにも使用され得る。そのようなフェッチングは、解析されているデータがローカル・データ・キャッシュ42に完全に適合しない場合および/またはプリフェッチ・コードがローカル命令キャッシュ40に完全に適合しない場合、潜在的にさらなるデータを解析のためにロードする必要があるとともに、プリフェッチ・コードをスカウト・コア34にロードするために必要とされる。
図2に示す実施形態では、共有キャッシュ50はハブまたは接続として働き、スカウト・コア34が親コア32を監視することができるようにする。スカウト・コア34は親コア32において発生する少なくとも1つの指定されたデータ・パターンについて親コア32を監視する。具体的には、スカウト・コア34は親コア32を監視するために使用されるプリフェッチ・コードを実行する。プリフェッチ・コードは1つまたは複数の指定されたデータ・パターンが親コア32において発生したかどうかを判定し、指定されたデータ・パターンに基づいてフェッチ要求を共有キャッシュ50へ送る。また、プリフェッチ・コードは親コア32によって実行されるいかなるコードからも独立して実行される。一般に、スカウト・コア34はプリフェッチ・コードをスカウト・コア34に位置するL1 I−キャッシュ40上に記憶される。
指定されたデータ・パターンは、親コア32からのコンテンツ要求(例えば、親コア32のI−キャッシュ40およびD−キャッシュ42に存在しない特定のキャッシュ・ラインの要求)、または、代替的に、親コア32のチェックポイント・アドレスであり得る。例えば、親コア32はI−キャッシュ40またはD−キャッシュ42のいずれかにメモリ・アドレスを要求し得る。I−キャッシュ40またはD−キャッシュ42が親コア32から要求された特定のキャッシュ・ラインを含まない場合、キャッシュ・ミスが発生する。スカウト・コア34はフェッチ監視バス66によって共有キャッシュ50を通して親コア32を監視することによってキャッシュ・ミスを検出する。一実施形態では、スカウト・コア34はキャッシュ・ミスがI−キャッシュ40もしくはD−キャッシュ42のいずれか(または、キャッシュ・ミスに遭遇した親コア32に位置する任意の他のタイプのキャッシュ)で発生したかどうかを判定する。キャッシュ・ミスの検出に応じて予測される将来のミッシング・キャッシュ・ラインのためのプリフェッチがスカウト・コア34によってフェッチ要求バス68を通して共有キャッシュ50へ送られ得る。1つの手法では、スカウト・コア34は特定のキャッシュ・ラインが親コア32のキャッシュ(例えば、I−キャッシュ40およびD−キャッシュ42)に記憶されているかどうかを判定するためにチェックしてもよい。特定のキャッシュ・ラインが親コア32にある場合、親コア32のキャッシュにすでにあるデータをプリフェッチする必要はない。
別の手法では、親コア32のチェックポイント・アドレスが共有キャッシュ50を通して親コア32とスカウト・コア34との間で渡され得る。特定のチェックポイント・アドレスは特定のイベントを表し得る。特定のイベントは、例えば、ガーベッジ・コレクションまたはコンテキスト・スイッチであり得る。1つの例示的な実施形態では、チェックポイント・アドレスは親コア32のI−キャッシュ40またはD−キャッシュ42のいずれかにおける特定のキャッシュ・ラインに関連付けられ得るが、チェックポイント・アドレスは必ずしも特定のプリフェッチ・アドレスに関連付けられるとは限らないことを理解されたい。スカウト・コア34は親コア32を監視し、指定されたイベントの完了に応じてスカウト・コア34はプリフェッチ要求を共有キャッシュ50へ送り、指定されたイベントに関連付けられたキャッシュ・ラインを獲得する。
スカウト・コア34からプリフェッチ要求を受けたことに応じて、共有キャッシュ50はプリフェッチによって要求されたデータを親コア32へデータ・リターン・バス60を通して送る。共有キャッシュ50はプリフェッチ要求に応じてプリフェッチによって要求されたデータを親コア32へ送る。プリフェッチ要求によって要求されたデータは親コア32によって受け入れられスカウト・コア34によって受け入れられない。
1つの手法では、スカウト・コア34はプリフェッチが親コア32に代わって行われたことを親コア32に通知する。代替的に、別の手法では、共有キャッシュ50も、プリフェッチによって要求されたデータが送られたことに応じてプリフェッチが親コア32に代わって行われたことを親コア32に通知する。したがって、スカウト・コア34は、(親コア32ではなくスカウト・コア34が要求を行ったとしても)親コア32がプリフェッチ要求を行ったかのようにプリフェッチによって要求された親コア32上のデータをどのようにルーティングおよび記憶するかを共有キャッシュ50に通知する。したがって、プリフェッチによって要求されたデータは親コア32のI−キャッシュ40またはD−キャッシュ42に記憶される。
図3は、単一のスカウト・コア134と少なくとも2つの親コア132を有する中央処理チップ124の代替的な例示である。図3は、2つの親コア132を示しているが任意の数の複数の親コア132が同様に使用され得ることに留意されたい。図3に示す実施形態では、データ・リターン・バス160は親コア132の両方と共有キャッシュ150との間に設けられ、データ・リターン・バス162はスカウト・コア134と共有キャッシュ150との間に設けられる。フェッチ要求バス164は親コア132の各々のために設けられ、そこでフェッチ要求バス164は親コア132を共有キャッシュ50に接続する。フェッチ監視バス166はスカウト・コア134を共有キャッシュ150に接続する。フェッチ要求バス168はスカウト・コア134と共有キャッシュ150との間に位置して、スカウト・コア134から共有キャッシュ150へ様々なプリフェッチ要求を送る。
図4は、少なくとも2つのスカウト・コア234と1つの親コア232とを有する中央処理チップ224の代替的な例示である。図4は2つのスカウト・コア234を示しているが複数のスカウト・コア234(例えば、3つ以上)が同様に使用され得ることに留意されたい。図4に示す実施形態では、データ・リターン・バス260は親コア232と共有キャッシュ250との間に設けられる。データ・リターン・バス262はスカウト・コア234の各々のために設けられ、スカウト・コア234のうちの1つを共有キャッシュ250と接続するために使用される。フェッチ要求バス264は親コア232を共有キャッシュ250に接続する。フェッチ監視バス266はスカウト・コア234の各々のために設けられ、スカウト・コア234のうちの1つを共有キャッシュ250と接続するために使用される。フェッチ要求バス268はスカウト・コア234の各々のために設けられ、スカウト・コア234のうちの1つを共有キャッシュ250と接続するために使用される。
図4に示す実施形態では、それぞれのスカウト・コア234は異なる指定されたデータ・パターンについて親コア232を監視中であり得る。例えば、1つの手法では、スカウト・コア234のうちの1つが親コア232のL1 I−キャッシュ240の挙動を監視および解析中であってよく、残りのスカウト・コア234が親コア232のL1 D−キャッシュ242の挙動を監視および解析中であってよい。したがって、追加のデータは、所与の期間内に監視および解析され得る。
図5は、ここで説明する、スカウト・コア34によって親コア32のためにデータをプリフェッチするための方法300を示すプロセス・フロー図である。図1〜図5を参照すると、方法300はブロック302で開始し、そこで、スカウト・コア34が共有キャッシュ50を通して親コア32を監視する。方法300は、次いでブロック304へ進み得る。
ブロック304で、スカウト・コア34が親コア32において発生する指定されたデータ・パターンについて親コア32を監視する。上記で説明したように、指定されたデータ・パターンは親コア32からのコンテンツ要求(例えば、親コア32のI−キャッシュ40もしくはD−キャッシュ42のいずれかに存在しない特定のキャッシュ・ラインの要求)、または、代替的に、チェックポイント・アドレスのいずれかであり得る。指定されたデータ・パターンが検出されない場合、方法300はブロック302へ戻り得る。指定されたデータ・パターンが検出される場合、方法300はブロック306へ進み得る。
ブロック306で、スカウト・コア34がプリフェッチ要求を共有キャッシュ50へ送る。上記で説明したように、プリフェッチ要求は、例えば、スカウト・コア34によって共有キャッシュ50へ送られたミッシング・キャッシュ・ラインのためのプリフェッチであり得る。方法300は次いでブロック308へ進み得る。
ブロック308で、親コア32が、プリフェッチが親コア32に代わって行われたことを通知される。方法300は、次いでブロック310へ進み得る。
ブロック310で、共有キャッシュ50が、プリフェッチによって要求されたデータを親コア32へ、データ・リターン・バス60を通して送る。共有キャッシュ50は、プリフェッチ要求に応じて、プリフェッチによって要求されたデータを親コア32へ送る。一実施形態では、ブロック308および310が同時に行われる。方法300は、次いで終了し得る。
本発明の1つまたは複数の態様は、システム、方法、またはコンピュータ・プログラム製品として実施され得ることを当業者は理解するだろう。したがって、本発明の1つまたは複数の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロ・コードなどを含む)、または、すべてが一般に本明細書で「回路」、「モジュール」もしくは「システム」と呼ばれることがある、ソフトウェアの態様とハードウェアの態様とを組み合わせる実施形態の形態をとり得る。さらに、本発明の1つまたは複数の態様は、コンピュータ可読プログラム・コードがその上で実施された、1つまたは複数のコンピュータ可読媒体で実施された、コンピュータ・プログラム製品の形態をとり得る。
1つまたは複数のコンピュータ可読媒体の任意の組合せが利用され得る。コンピュータ可読媒体は、コンピュータ可読記憶媒体であってもよい。コンピュータ可読記憶媒体は、例えば、限定はしないが、電子的、磁気的、光学的、電磁的、赤外線、または半導体の、システム、装置、またはデバイス、あるいは上記の任意の好適な組合せであってもよい。コンピュータ可読記憶媒体のより具体的な例(非網羅的なリスト)は、以下のもの、すなわち、1つまたは複数の電線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読取り専用メモリ(CD−ROM)、光学記憶デバイス、磁気記憶デバイス、または上記の任意の好適な組合せを含む。本文書に関して、コンピュータ可読記憶媒体は、命令実行システム、装置、もしくはデバイスによって使用するため、またはそれらに関連して使用するためのプログラムを含む、または記憶することができる、任意の有形媒体であってもよい。
ここで図6を参照すると、一例では、コンピュータ・プログラム製品600は、例えば、1つまたは複数の記憶媒体602を含み、媒体は有形または非一時的あるいはその両方であってよく、コンピュータ・プログラム製品600は、コンピュータ可読プログラム・コード手段または論理604を媒体上に記憶して、本明細書で説明する実施形態の1つまたは複数の態様を提供および可能にする。
プログラム・コードは、作成され、有形媒体(限定はしないが、電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープなどを含む)上に記憶されるとき、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品媒体は、典型的には、好適にはコンピュータ・システムにおける処理回路によって、処理回路による実行のために可読である。そのようなプログラム・コードは、例えば、コンパイラまたはアセンブラを使用して作成されて、実行されるとき、本発明の態様を行う命令をアセンブルし得る。
上記で説明したようなコンピューティング・システム10の技術的効果および利益は、スカウト・コア34のL1 I−キャッシュ40によって実行され得るプログラムの作成を含む。スカウト・コア34は、親コア32において発生する様々なタイプの指定されたデータ・パターンについて、親コア32を監視することができる。対照的に、現在利用可能であるいくつかのタイプのハードウェア・プリフェッチャは、特定のパターンについて親コア32を監視することができるのみである。その上、スカウト・コア34によって監視および解析され得るデータ・パターンの量は、現在利用可能であるハードウェア・プリフェッチャよりも比較的多くなり得るものであり、その理由は、スカウト・コア34のL1 D−キャッシュ42全体が、解析され得るデータを記憶するために使用され得るからである。
本明細書で使用する専門用語は、特定の実施形態を説明することのみを目的とし、実施形態の限定を意図するものではない。本明細書で使用する場合、単数形「a」、「an」および「the」は、文脈上明らかに別段の定めがある場合を除き、複数形も含むことが意図されている。「含む(comprises)」または「含んでいる(comprising)」あるいはその両方の用語は、本明細書で使用するとき、述べられた特徴、整数、ステップ、動作、要素、または構成要素、あるいはそのすべての存在を規定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、またはそれらのグループ、あるいはそのすべての存在または追加を排除しないことは、さらに理解されよう。
特許請求の範囲における対応する構造、材料、行為、およびすべての手段またはステップの均等物、さらに機能要素は、具体的に特許請求する他の特許請求する要素との組合せにおいて機能を行うための任意の構造、材料、または行為を含むことが意図されている。実施形態の説明は、例示および説明の目的のために提示されたが、網羅的であること、または開示した形態における実施形態に限定されることは意図されていない。多くの変更形態および変形形態が、実施形態の範囲および趣旨から逸脱することなく、当業者には明らかとなるであろう。実施形態は、原理および実際的な用途について最善の説明をするために、ならびに、他の当業者が、企図される特定の使用に適する様々な変更形態を有する実施形態を理解することを可能にするために、選ばれ、説明された。
実施形態の態様についての動作を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++などのオブジェクト指向プログラミング言語、および、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組合せで書かれてもよい。プログラム・コードは、ユーザのコンピュータ上で全体的に、ユーザのコンピュータ上で独立型のソフトウェア・パッケージとして部分的に、ユーザのコンピュータ上で部分的におよびリモート・コンピュータ上で部分的に、または、リモート・コンピュータもしくはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通して、ユーザのコンピュータに接続されてもよく、または、接続は、(例えば、インターネット・サービス・プロバイダを使用して、インターネットを通して)外部コンピュータに対して行われてもよい。
実施形態の態様について、実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図または概略図あるいはその両方を参照しながら、上記で説明している。フローチャート図またはブロック図あるいはその両方の各ブロック、および、フローチャート図またはブロック図あるいはその両方におけるブロックの組合せが、コンピュータ・プログラム命令によって実施され得ることは、理解されよう。これらのコンピュータ・プログラム命令は、コンピュータ、または他のプログラマブル・データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為を実施するための手段を作り出するように、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。
また、これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に格納された命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為を実施する命令を含む製品を作り出すように、コンピュータ可読媒体に格納され、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示するものであってよい。
また、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードして、一連の動作ステップを、コンピュータ、他のプログラマブル装置、または他のデバイス上で行わせて、コンピュータ実施プロセスを作り出し、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定された機能/行為を実施するためのプロセスを提供するようにすることもできる。
図面におけるフローチャートおよびブロック図は、様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点について、フローチャートまたはブロック図における各ブロックは、モジュール、セグメント、またはコードの部分を表すことがあり、それは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む。また、いくつかの代替実装形態では、ブロックに示した機能が、図面に示した順序から外れて行われ得ることにも留意されたい。例えば、連続して示す2つのブロックは、実際には、実質的に同時に実行されてもよく、または、それらのブロックは、時々、関連する機能に応じて、逆の順序で実行されてもよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、および、ブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、指定された機能もしくは行為を行う専用ハードウェア・ベースのシステム、または、専用ハードウェアおよびコンピュータ命令の組合せによって実装され得ることにも留意されたい。

Claims (17)

  1. データをプリフェッチするためのコンピュータ・システムであって、
    チップを含み、前記チップは、
    前記チップ上に位置する少なくとも1つのスカウト・コアと、
    前記チップ上に位置する少なくとも1つの親コアと、
    前記チップ上に位置し、前記スカウト・コアと前記親コアに共通する共有キャッシュを含み、
    前記システムは方法を行うように構成され、前記方法は、
    前記親コアを監視するために、前記親コアから独立して実行するプリフェッチ・コードを前記スカウト・コアによって実行するステップと、
    前記親コアの監視に基づいて、少なくとも1つの指定されたデータ・パターンが前記親コアにおいて発生したことを前記スカウト・コアによって判定するステップと、
    前記判定に基づき、前記スカウト・コアから前記共有キャッシュへプリフェッチ要求を送るステップと、
    前記プリフェッチ要求によって示されるデータ・セットを前記共有キャッシュによって前記親コアへ送るステップ
    前記プリフェッチ要求が前記親コアに代わって行われたことを、前記親コアに通知するステップと、
    を含む、コンピュータ・システム。
  2. 前記スカウト・コアは、前記プリフェッチ要求によって要求された前記データを前記親コアに位置するキャッシュにおいてどのようにルーティングおよび記憶するかを前記共有キャッシュに通知する、請求項1に記載のコンピュータ・システム。
  3. 前記チップは、前記共有キャッシュとそれぞれ通信している少なくとも2つの親コアを含む、請求項1または2に記載のコンピュータ・システム。
  4. 前記チップは、前記共有キャッシュと通信している少なくとも2つのスカウト・コアを含み、前記スカウト・コアは、異なる指定されたデータ・パターンについて前記親コアを監視する、請求項1ないしのいずれかに記載のコンピュータ・システム。
  5. 前記スカウト・コアは、フェッチ監視バスを通して前記親コアを監視し、前記フェッチ監視バスは、前記スカウト・コアを前記共有キャッシュに接続する、請求項1ないしのいずれかに記載のコンピュータ・システム。
  6. 前記指定されたデータ・パターンは、前記親コアに位置するキャッシュにおいてキャッシュ・ミスが発生することである、請求項1ないしのいずれかに記載のコンピュータ・システム。
  7. 前記指定されたデータ・パターンは、前記親コアのチェックポイント・アドレスである、請求項1ないしのいずれかに記載のコンピュータ・システム。
  8. 少なくとも1つのスカウト・コアと、少なくとも1つの親コアと、前記スカウト・コアと前記親コアに共通する共有キャッシュとを有するチップ上で、データをプリフェッチするためのコンピュータ・プログラムであって、
    前記親コアを監視するために、前記親コアから独立して実行するプリフェッチ・コードを前記スカウト・コアによって実行するステップと、
    前記親コアの監視に基づいて、少なくとも1つの指定されたデータ・パターンが前記親コアにおいて発生したことを前記スカウト・コアによって判定するステップと、
    前記判定に基づき、前記スカウト・コアから前記共有キャッシュへプリフェッチ要求を送るステップと、
    前記プリフェッチ要求によって示されるデータ・セットを前記共有キャッシュによって前記親コアへ送るステップと、
    前記プリフェッチ要求が前記親コアに代わって行われたことを、前記親コアに通知するステップと、
    を処理回路に実行させる、コンピュータ・プログラム。
  9. 前記スカウト・コアは、前記プリフェッチ要求によって要求された前記データを前記親コアに位置するキャッシュにおいてどのようにルーティングおよび記憶するかを前記共有キャッシュに通知する、請求項に記載のコンピュータ・プログラム。
  10. 前記チップは、前記共有キャッシュとそれぞれ通信している少なくとも2つの親コアを含む、請求項8または9に記載のコンピュータ・プログラム。
  11. 前記チップは、前記共有キャッシュと通信している少なくとも2つのスカウト・コアを含み、前記スカウト・コアは、異なる指定されたデータ・パターンについて前記親コアを監視する、請求項ないし1のいずれかに記載のコンピュータ・プログラム。
  12. 前記スカウト・コアは、フェッチ監視バスを通して前記親コアを監視し、前記フェッチ監視バスは、前記スカウト・コアを前記共有キャッシュに接続する、請求項ないし1のいずれかに記載のコンピュータ・プログラム。
  13. 前記指定されたデータ・パターンは、前記親コアに位置するキャッシュにおいてキャッシュ・ミスが発生することである、請求項ないし1のいずれかに記載のコンピュータ・プログラム。
  14. 少なくとも1つのスカウト・コアと、少なくとも1つの親コアと、前記スカウト・コアと前記親コアに共通する共有キャッシュとを有するチップ上で、データをプリフェッチするためのコンピュータ実施方法であって、
    前記親コアを監視するために、前記親コアから独立して実行するプリフェッチ・コードを前記スカウト・コアによって実行するステップと、
    前記親コアの監視に基づいて、少なくとも1つの指定されたデータ・パターンが前記親コアにおいて発生したことを前記スカウト・コアによって判定するステップと、
    前記判定に基づき、前記スカウト・コアから前記共有キャッシュへプリフェッチ要求を送るステップと、
    前記プリフェッチ要求によって示されるデータ・セットを前記共有キャッシュによって前記親コアへ送るステップと、
    前記プリフェッチ要求が前記親コアに代わって行われたことを、前記親コアに通知するステップと、
    を含む方法。
  15. 前記スカウト・コアは、前記プリフェッチ要求によって要求された前記データを前記親コアに位置するキャッシュにおいてどのようにルーティングおよび記憶するかを前記共有キャッシュに通知する、請求項1に記載の方法。
  16. 前記チップは、前記共有キャッシュとそれぞれ通信している少なくとも2つの親コアを含む、請求項14または15に記載の方法。
  17. 前記チップは、前記共有キャッシュと通信している少なくとも2つのスカウト・コアを含み、前記スカウト・コアは、異なる指定されたデータ・パターンについて前記親コアを監視する、請求項1ないし1のいずれかに記載の方法。
JP2015560810A 2013-03-05 2014-02-13 データをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、コンピュータ実施方法 Active JP6320431B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/785,377 2013-03-05
US13/785,377 US9116816B2 (en) 2013-03-05 2013-03-05 Prefetching for a parent core in a multi-core chip
PCT/IB2014/058955 WO2014136003A1 (en) 2013-03-05 2014-02-13 Prefetching for parent core in multi-core chip

Publications (2)

Publication Number Publication Date
JP2016509320A JP2016509320A (ja) 2016-03-24
JP6320431B2 true JP6320431B2 (ja) 2018-05-09

Family

ID=51489358

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015560810A Active JP6320431B2 (ja) 2013-03-05 2014-02-13 データをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、コンピュータ実施方法

Country Status (6)

Country Link
US (2) US9116816B2 (ja)
JP (1) JP6320431B2 (ja)
CN (1) CN104981786B (ja)
DE (1) DE112014000336T5 (ja)
GB (1) GB2525831B (ja)
WO (1) WO2014136003A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9116816B2 (en) * 2013-03-05 2015-08-25 International Business Machines Corporation Prefetching for a parent core in a multi-core chip
US10013344B2 (en) * 2014-01-14 2018-07-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Enhanced SSD caching
DE112015006944B4 (de) 2015-09-25 2023-03-23 Intel Corporation Einrichtung, System und Verfahren zum Ermöglichen einer Kommunikation über eine Verbindung mit einer Vorrichtung außerhalb einer Baugruppe
GB2544474B (en) * 2015-11-16 2020-02-26 Advanced Risc Mach Ltd Event triggered programmable prefetcher
CN107783911B (zh) * 2016-08-31 2021-06-08 华为技术有限公司 一种数据过滤方法及终端设备
CN108763011B (zh) * 2018-03-27 2021-09-07 中国电子产品可靠性与环境试验研究所((工业和信息化部电子第五研究所)(中国赛宝实验室)) SoC芯片核数检测方法、装置、系统及存储介质
CN113342709B (zh) * 2021-06-04 2023-02-21 海光信息技术股份有限公司 在多处理器系统中访问数据的方法和多处理器系统
CN114217861A (zh) * 2021-12-06 2022-03-22 海光信息技术股份有限公司 数据处理方法及装置、电子装置和存储介质
CN114297098A (zh) * 2021-12-31 2022-04-08 上海阵量智能科技有限公司 芯片的缓存系统、数据处理方法、设备、存储介质及芯片

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6470427B1 (en) 1999-11-09 2002-10-22 International Business Machines Corporation Programmable agent and method for managing prefetch queues
US7502910B2 (en) * 2003-01-28 2009-03-10 Sun Microsystems, Inc. Sideband scout thread processor for reducing latency associated with a main processor
US8230422B2 (en) 2005-01-13 2012-07-24 International Business Machines Corporation Assist thread for injecting cache memory in a microprocessor
US7950012B2 (en) 2005-03-16 2011-05-24 Oracle America, Inc. Facilitating communication and synchronization between main and scout threads
US7590805B2 (en) 2005-12-29 2009-09-15 Intel Corporation Monitor implementation in a multicore processor with inclusive LLC
US7730263B2 (en) 2006-01-20 2010-06-01 Cornell Research Foundation, Inc. Future execution prefetching technique and architecture
US7509481B2 (en) 2006-03-03 2009-03-24 Sun Microsystems, Inc. Patchable and/or programmable pre-decode
JP2008015668A (ja) * 2006-07-04 2008-01-24 Toyota Infotechnology Center Co Ltd タスク管理装置
JP4945200B2 (ja) * 2006-08-29 2012-06-06 株式会社日立製作所 計算機システム及びプロセッサの制御方法
US20080141268A1 (en) 2006-12-12 2008-06-12 Tirumalai Partha P Utility function execution using scout threads
US7975107B2 (en) 2007-06-22 2011-07-05 Microsoft Corporation Processor cache management with software input via an intermediary
US7962314B2 (en) 2007-12-18 2011-06-14 Global Foundries Inc. Mechanism for profiling program software running on a processor
US8707016B2 (en) 2008-02-01 2014-04-22 International Business Machines Corporation Thread partitioning in a multi-core environment
US8775778B2 (en) 2008-02-01 2014-07-08 International Business Machines Corporation Use of a helper thread to asynchronously compute incoming data
JP2009258984A (ja) * 2008-04-16 2009-11-05 Toshiba Corp 情報処理装置およびロード制御方法
US9672019B2 (en) 2008-11-24 2017-06-06 Intel Corporation Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads
JP2010217992A (ja) 2009-03-13 2010-09-30 Mitsubishi Electric Corp キャッシュ制御装置及びキャッシュ制御方法及びキャッシュ制御プログラム
US8195888B2 (en) 2009-03-20 2012-06-05 Empire Technology Development Llc Multiprocessor cache prefetch with off-chip bandwidth allocation
US9081742B2 (en) 2009-04-27 2015-07-14 Intel Corporation Network communications processor architecture
US8176349B2 (en) 2009-04-30 2012-05-08 Hewlett-Packard Development Company, L.P. Look-ahead processor for signaling suitable non-idle performance state for main processor
US8752008B2 (en) 2009-09-02 2014-06-10 Advanced Micro Devices, Inc. Lightweight service based dynamic binary rewriter framework
US8443151B2 (en) 2009-11-09 2013-05-14 Intel Corporation Prefetch optimization in shared resource multi-core systems
US8904114B2 (en) 2009-11-24 2014-12-02 Empire Technology Development Llc Shared upper level cache architecture
US8341357B2 (en) 2010-03-16 2012-12-25 Oracle America, Inc. Pre-fetching for a sibling cache
US8453161B2 (en) 2010-05-25 2013-05-28 International Business Machines Corporation Method and apparatus for efficient helper thread state initialization using inter-thread register copy
US9116816B2 (en) * 2013-03-05 2015-08-25 International Business Machines Corporation Prefetching for a parent core in a multi-core chip

Also Published As

Publication number Publication date
GB2525831B (en) 2016-03-23
GB201516351D0 (en) 2015-10-28
US9128852B2 (en) 2015-09-08
CN104981786B (zh) 2018-07-20
JP2016509320A (ja) 2016-03-24
CN104981786A (zh) 2015-10-14
GB2525831A (en) 2015-11-04
US20150019820A1 (en) 2015-01-15
WO2014136003A1 (en) 2014-09-12
US9116816B2 (en) 2015-08-25
US20140258640A1 (en) 2014-09-11
DE112014000336T5 (de) 2015-09-17

Similar Documents

Publication Publication Date Title
JP6320431B2 (ja) データをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、コンピュータ実施方法
US9792120B2 (en) Anticipated prefetching for a parent core in a multi-core chip
US9298619B2 (en) Cache line history tracking using an instruction address register file storing memory location identifier
JP6234484B2 (ja) チップ上のデータをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、およびコンピュータ実装方法
US9003239B2 (en) Monitoring and resolving deadlocks, contention, runaway CPU and other virtual machine production issues
US20130339617A1 (en) Automatic pattern-based operand prefetching
US9430240B1 (en) Pre-computation slice merging for prefetching in a computer processor
US8954680B2 (en) Modifying data prefetching operation based on a past prefetching attempt
TW201435727A (zh) 微處理器及其操作方法
US20170091111A1 (en) Configurable cache architecture
US8495307B2 (en) Target memory hierarchy specification in a multi-core computer processing system
US9250913B2 (en) Collision-based alternate hashing
US9639472B2 (en) Prefetch list management in a computer system
US9128851B2 (en) Prefetching for multiple parent cores in a multi-core chip
US11157281B2 (en) Prefetching data based on register-activity patterns
US10528565B2 (en) Logical level predictive caching in relational databases
EP4248321A1 (en) An apparatus and method for performing enhanced pointer chasing prefetcher

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170207

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171003

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20171115

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180301

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180313

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180403

R150 Certificate of patent or registration of utility model

Ref document number: 6320431

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150