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

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

Info

Publication number
JP6234484B2
JP6234484B2 JP2015560809A JP2015560809A JP6234484B2 JP 6234484 B2 JP6234484 B2 JP 6234484B2 JP 2015560809 A JP2015560809 A JP 2015560809A JP 2015560809 A JP2015560809 A JP 2015560809A JP 6234484 B2 JP6234484 B2 JP 6234484B2
Authority
JP
Japan
Prior art keywords
core
scout
prefetch
parent
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
JP2015560809A
Other languages
English (en)
Other versions
JP2016513829A (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 JP2016513829A publication Critical patent/JP2016513829A/ja
Application granted granted Critical
Publication of JP6234484B2 publication Critical patent/JP6234484B2/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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • 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)
  • Mobile Radio Communication Systems (AREA)
  • Multi Processors (AREA)

Description

本発明は、一般に、親コアとスカウト・コア(scout core)とを有するマルチコア・チップに関し、より詳細には、マルチコア・チップにおける親コアのための特定のプリフェッチ・アルゴリズムに関する。
複数のコアが単一のチップ上に設けられ得る。1つのアプローチにおいて、親コアと同一のチップ上の第2のコアは、スカウト・コアとして提供され得る。既存のスカウト・コアを活用または利用する1つのアプローチでは、スカウト・コアは共有キャッシュから親コアのプライベート・キャッシュにデータをプリフェッチするために使用される。このアプローチは、親コアがキャッシュ・ミスに遭遇する場合に特に有益となり得る。キャッシュ・ミスは、特定のラインのデータが親コアのディレクトリの検索を生じさせ、要求されたラインのキャッシュが存在しない場合に発生する。ミッシング・キャッシュ・ラインを取得するための1つの典型的なアプローチは、より上位レベルのキャッシュに対するフェッチ動作を開始することである。スカウト・コアは、親コアによって必要とされるデータをプリフェッチするために使用される機構を提供する。
様々なアプリケーションは異なる振る舞いをし、結果として1つのプリフェッチ・アルゴリズムまたはアプローチがキャッシュ・コンテンツにアクセスする待ち時間を常に改善するとは限らないことがあることに留意されたい。具体的には、例えば、親コアがいくつかの異なるアプリケーションを実行している場合、それらの異なるアプリケーションを監視するために使用されるプリフェッチ・アルゴリズムは、実行されている特定のアプリケーションに応じてキャッシュ・コンテンツにアクセスするための様々な待ち時間を提供し得る。例えば、まばらに配置されたデータベースを検索するように設計されたアプリケーションは、画像の色補正を実行するように設計されたアプリケーションと比較すると、異なる振る舞いをし得る(例えば、プリフェッチ・アルゴリズムは、キャッシュ・コンテンツにアクセスする、より長い待ち時間またはより短い待ち時間を提供し得る)。
本発明の目的の一つは、チップ上のデータをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、およびコンピュータ実装方法を提供することである。
本発明の態様は、少なくとも1つのスカウト・コアと親コアとを有するチップ上のデータをプリフェッチするための方法、システム、およびコンピュータ・プログラムに関する。本方法は、親コアによってプリフェッチ・コード開始アドレスを保存するステップを含む。プリフェッチ・コード開始アドレスはプリフェッチ・コードの記憶位置を示す。プリフェッチ・コードは親コアによって実行されている特定のアプリケーションに基づいて親コアを監視するために特に構成される。本方法はブロードキャスト割込み信号を親コアによってスカウト・コアへ送るステップを含む。ブロードキャスト割込み信号は保存されたプリフェッチ・コード開始アドレスに基づいて送られる。本方法は、スカウト・コアによって実行されるプリフェッチ・コードによって親コアを監視することを含む。スカウト・コアはブロードキャスト割込み信号の受信に基づいてプリフェッチ・コードを実行する。
本発明の実施形態が、添付の図面を参照して例としてのみ記述される。
一実施形態に係るマルチコア・チップを示す図である。 一実施形態に係る中央処理(CP)チップを示す図である。 代替的な実施形態に係る中央処理チップを示す図である。 設計スカウト・プリロード命令を示す図である。 親コアからスカウト・コアへプリフェッチ・コードをロードするための例示的な方法を説明するためのプロセスフローを示す図である。 親コアのオペレーティング・システムが遭遇するタスク・スワップの期間中にプリフェッチ・コードをロードするための例示的な方法を説明するためのプロセスフローを示す図である。 親コアにおいて実行される特定のアプリケーションによってプリフェッチ・コードをロードするための例示的な方法を説明するためのプロセスフローを示す図である。 一実施形態に係るコンピュータ・プログラム製品を示す図である。
改善されたプリフェッチ効率を有するマルチコア・チップにおけるスカウト・コアによって親コアのためのデータをプリフェッチするための一実施形態が開示される。1つの例示的な実施形態において、マルチコア・チップは親コアと少なくとも1つのスカウト・コアとを含む。親コアはプリフェッチ・コード開始アドレスを保存(save)する。プリフェッチ・コード開始アドレスは特定のプリフェッチ・コードがどこに記憶されているかを示す。プリフェッチ・コードは親コアによって実行されている特定のアプリケーションに基づいて親コアを監視するために特に構成される。スカウト・コアは、特定のプリフェッチ・コードを実行することによって、親コアを監視する。特定のプリフェッチ・コードは、親コアが選択的に実行する特定のアプリケーションに対応し得る(例えば、あるアプリケーションが、そのアプリケーションに関連付けられる特定のプリフェッチ・コードを有しない場合、スカウト・コアは、代わりに事実上またはデフォルトのプリフェッチ・コードを実行し得る)。親コアによって実行される様々なアプリケーションは異なる振る舞いをし、したがって、一般的なプリフェッチ・アルゴリズム(例えば、特定のアプリケーションに合わせて作られていないプリフェッチ・アルゴリズム)は、親コアが実行している特定のアプリケーションによっては、待ち時間を常に改善するとは限らないことがあることに留意されたい。例示的な実施形態において開示されるようなアプローチにより、スカウト・コアは、親コアが実行する特定のアプリケーションを監視するために特に合わせて作られている特定のプリフェッチ・コードを使用して、親コアを監視することが可能になる。親コアは、親コアが実行している特定のアプリケーションに基づいてプリフェッチ・コードを切り替えるために、ブロードキャスト割込み信号をスカウト・コアへ送信し得る。
図1は、一実施形態に係るコンピューティング・システム10の一例を図示する。コンピューティング・システム10は、少なくとも1つの中央処理(CP)チップ20を含む。図1に示されるような例示的な実施形態においては、3個の中央処理チップ20が示されるが、任意の個数の中央処理チップ20が同様に使用され得ることが理解されるべきである。例えば、1つのアプローチにおいて、コンピューティング・システム10は、8個の中央処理チップ20を含んでもよい。別のアプローチにおいて、コンピューティング・システム10は、最大で12個または16個の中央処理チップ20を含んでもよい。各中央処理チップ20は、共有キャッシュ22およびシステム・メモリ24と通信する。
ここで、図1〜図2を参照すると、各中央処理チップ20は、命令の読み出しおよび実行のための複数のコア30を含む。例えば、図2に示されるような例示的な実施形態において、各中央処理チップ20は、親コア32とスカウト・コア34とを含むが、複数の親コア32およびスカウト・コア34が中央処理チップ20上に設けられ得ることが理解される。例えば、1つのアプローチにおいて、中央処理チップ20は、各々がスカウト・コア34と通信する4つの親コア32(すなわち、合計8個のコア)を含み得る。中央処理チップ120を図示する図3に示されるような代替的な実施形態において、親コア132は、複数のスカウト・コア134と通信し得る。例えば、1つのアプローチにおいて、中央処理チップ120は、各々が3個のスカウト・コア134と通信する2つの親コア132(すなわち、合計8個のコア)を提供され得る。
図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およびスカウト・コア34に接続し、フェッチ要求バス64において、データが親コア32から共有キャッシュ50およびスカウト・コア34へ送られる。フェッチ要求バス66は、スカウト・コア34を共有キャッシュ50に接続し、スカウト・コア34は、フェッチ要求バス66を通じて共有キャッシュ50を監視する。フェッチ要求バス66は、スカウト・コア34のためのフェッチについても使用され得る。これは、親コア32のためにフェッチするフェッチ要求バス64と同様の振る舞いである。このようなフェッチは、分析されているデータ全体がローカルDキャッシュ42に収まらない場合には、分析のためにさらなるデータをロードする必要が潜在的にあると共に、1つまたは複数のプリフェッチ・アルゴリズムのスカウト・コア34へのロードのために必要とされ得る。ロード・プリフェッチ・バス68は、親コア32とスカウト・コア34との間に設けられる。親コア32は、プリフェッチ・コードと、プリフェッチ・コードが記憶されている場所を示す特定のプリフェッチ・コード開始アドレスとをロードするように、ロード・プリフェッチ・バス68を通じてスカウト・コア34に通知する。プリフェッチ・コードは、例えば、スカウト・コアのL1 Iキャッシュ40、共有キャッシュ50、共有キャッシュ22(図1)、またはシステム・メモリ24(図1)などの、メモリ・アドレスでアクセス可能である、コンピューティング・システム10内の多種多様な位置に記憶され得る。
ここで、図3を参照すると、データ・リターン・バス160は、親コア132と共有キャッシュ150との間に提供され、データ・リターン・バス162は、複数のスカウト・コア134と共有キャッシュ150との間に提供される。フェッチ要求バス164は、親コア132を共有キャッシュ150に接続し、フェッチ要求バス164において、データは親コア132から共有キャッシュ150へ送られる。フェッチ要求バス166は、スカウト・コア134ごとに提供され、スカウト・コア134を共有キャッシュ150に接続する。フェッチ要求バス166を通じて送られるデータは、スカウト・コア134相互間で異なる。ロード・プリフェッチ・バス168は、各スカウト・コア134に接続され、親コア132と各スカウト・コア134との間に設けられる。フェッチ監視バス170は、スカウト・コア134ごとに提供され、共有キャッシュ150とスカウト・コア134のうちの1つとの間に設けられる。フェッチ要求バス166とは異なり、フェッチ監視バス170を通じて送られるデータは、スカウト・コア134相互間で異なってもよく、または異ならなくてもよい。
図2に戻ると、共有キャッシュ50は、スカウト・コア34が親コア32を監視し得るように、ハブまたは接続部として動作する。スカウト・コア34は、親コア32内で発生する少なくとも1つの特定のデータ・パターンについて親コア32を監視する。具体的には、スカウト・コア34は、親コア32を監視するために使用されるプリフェッチ・コードを実行する。プリフェッチ・コードは、1つまたは複数の特定のデータ・パターンが親コア32内で発生したかを判定し、特定のデータ・パターンに基づいて、フェッチ要求を共有キャッシュ50へ送る。スカウト・コア34は、一般に、スカウト・コア34に設けられるIキャッシュ40にプリフェッチ・コードを記憶する。
特定のデータ・パターンは、親コア32を離れるコンテンツ要求(例えば、親コア32のIキャッシュ40またはDキャッシュ42に存在しない特定のラインのキャッシュについての要求)、または親コア32のチェックポイント・アドレスであり得る。例えば、特定のデータ・パターンがキャッシュ・ミス(例えば、親コア32のIキャッシュ40またはDキャッシュ42におけるキャッシュのミッシング・ライン)である場合、予測されるミッシング・キャッシュ・ラインについてのプリフェッチは、スカウト・コア34によってフェッチ要求バス66を通じて共有キャッシュ50へ送られ得る。特定されるデータ・パターンが親コア32のチェックポイント・アドレスである場合、スカウト・コア34は、親コア32を監視し、特定のイベント(例えば、ガベージ・コレクションまたはコンテキスト・スイッチ)の完了時に、スカウト・コア34は、その特定のイベントに関連付けられるキャッシュ・ラインを獲得するために、プリフェッチ要求を共有キャッシュへ送る。
スカウト・コア34は、親コア32が実行している特定のアプリケーションに基づいて、特定のプリフェッチ・コードを選択的に実行するように構成される。例えば、親コア32がアプリケーション「A」、アプリケーション「B」、およびアプリケーション「C」を次から次へ連続的に実行する(例えば、親コア32が、まずアプリケーション「A」を、次いでアプリケーション「B」を、次いでアプリケーション「C」を実行する)場合、スカウト・コア34は、アプリケーション「A」を監視するためにプリフェッチ・コード「A」を、アプリケーション「B」を監視するためにプリフェッチ・コード「B」を、アプリケーション「C」を監視するためにプリフェッチ・コード「C」を実行し得る。つまり、特定のプリフェッチ・コードは、親コア32が対応するアプリケーションを実行する間、親コア32を監視するように特に構成される(例えば、プリフェッチ・コード「A」は、アプリケーション「A」を監視する)。これは、特定のプリフェッチ・コードが、親コア32によって実行される特定のアプリケーションに応じて、異なる振る舞いをし得るためである。例えば、まばらに配置されたデータベースを検索するように設計されたアプリケーションは、画像の色補正を実行するように設計されたアプリケーションと比較すると、異なる振る舞いをし得る(例えば、プリフェッチ・アルゴリズムは、キャッシュ・コンテンツにアクセスする、より長い待ち時間またはより短い待ち時間を提供し得る)。あるアプリケーションが、そのアプリケーションに関連付けられる特定のプリフェッチ・コードを有しない場合、スカウト・コア34は、代わりに事実上またはデフォルトのプリフェッチ・コードを実行し得ることに留意されたい。スカウト・コア34の内部に設けられる設計状態(architected state)は、デフォルトのプリフェッチ・コードが記憶されている位置をスカウト・コア34に提供する。
親コア32は、一般に、1つのアプリケーションから別のアプリケーションへ比較的高速で(例えば、最高で100,000回/秒の速度で)切り替える間に、様々なアプリケーションを連続的に(すなわち、一度に1つのアプリケーションを)実行し、これは、マルチ・タスキングと呼ばれる。具体的には、親コア32は、任意の個数のアプリケーションを実行し得る。ある特定のアプリケーションが親コア32の制御を別のアプリケーションに譲る場合、これは、タスク・スワップと呼ばれる。親コア32のオペレーティング・システムが遭遇するタスク・スワップの期間中、親コア32は、実行されていた現在のアプリケーションに関連付けられる、親コア32内に位置するプリフェッチ・アドレス48(図3において148として図示される)を保存する。プリフェッチ・アドレス48は、実行されていた現在のアプリケーションに関連付けられるプリフェッチ・コード開始アドレスがどこに保存されているかを示す。次いで、親コア32は、新たなアプリケーションをロードし、この新たなアプリケーションに関連付けられるプリフェッチ・コード開始アドレスでプリフェッチ・アドレス48を更新し得る。次いで、親コア32は、ロード・プリフェッチ・バス68を通じてスカウト・コア34へブロードキャスト割込み信号を送り得る。ブロードキャスト割込み信号は、プリフェッチ・コード開始アドレスの位置および割込み通知を提供する。親コア32がロードした新たなアプリケーションに関連付けられる特定のプリフェッチ・コードが存在しない場合には、親コア32は、デフォルトのプリフェッチ・コードがスカウト・コア34によってロードされるべきであることを示すブロードキャスト割込み信号をスカウト・コア34へ送る。
親コア32によるタスク・スワップに加えて、ブロードキャスト割込み信号は、親コア32において実行される特定のアプリケーションによっても起動され得る。つまり、親コア32において実行される特定のアプリケーションは、スカウト・コア34が特定のプリフェッチ・コードをロードすべきであることを示す命令を発行し得る。ここで、図4を参照すると、設計スカウト・プリロード命令(architected scout preload instruction)70は、親コア32において実行される特定のアプリケーションによって発行され得る。設計スカウト・プリロード命令70は、親コア32において実行される特定のアプリケーションに関連付けられるプリフェッチ・コード開始アドレスを示す。例えば、親コア32がアプリケーション「A」を実行している場合、アプリケーション「A」によって発行される設計スカウト・プリロード命令70は、アプリケーション「A」に対応する特定のプリフェッチ・コードがどこに保存されているかを示す。
設計スカウト・プリロード命令は、実行されるべき演算を特定するための命令コード72、ならびにベース・レジスタ74、指標レジスタ76、および特定のプリフェッチ・コードが保存されている開始アドレスの位置を特定するオフセット78を含む。設計スカウト・プリロード命令70は、プリフェッチ・コードと共にプリロードされるべき特定のスカウト・コア番号80も示す(例えば、図3を参照すると、特定のスカウト・コア番号80は、スカウト・コア1、スカウト・コア2、またはスカウト・コア3を示し得る)。設計スカウト・プリロード命令70の各フィールド(例えば、命令コード72、ベース・レジスタ74、指標レジスタ76、オフセット78およびスカウト・コア番号80)は、マルチビット・フィールドであり得る。フィールドごとのビットの個数は、異なり得る。図2および図4の双方を参照すると、親コア32は、設計スカウト・プリロード命令70を実行する。次いで、親コア32は、設計スカウト・プリロード命令70によって示されるプリフェッチ・コード開始アドレスと共にプリフェッチ・アドレス48を保存する。
図2を再び参照すると、ブロードキャスト割込み信号の受け取り時に、スカウト・コア34の命令パイプラインはフラッシュされる。次いで、スカウト・コア34は、親コア32からロード・プリフェッチ・バス68を通じて送られるプリフェッチ・コード開始アドレスによって示されるプリフェッチ・コードを実行して、命令ストリームを再開し得る。
ここで、図5を参照すると、親コア32からスカウト・コア34へプリフェッチ・コードをロードするための例示的な方法200を説明するプロセスフロー図である。図2〜図5を全体的に参照すると、方法200は、ブロードキャスト割込み信号が、親コア32からスカウト・コア34へロード・プリフェッチ・バス68(または、複数のスカウト・コア134が親コア132に接続される場合には、ロード・プリフェッチ・バス168)を通じて送られるブロック202において開始する。ブロードキャスト割込み信号は、プリフェッチ・コード開始アドレスの位置および割込み通知を提供する。次いで、方法200は、ブロック204へ進み得る。
ブロック204において、スカウト・コア34は、割込み通知を示すブロードキャスト割込み信号を、ロード・プリフェッチ・バス68を通じて受け取る。次いで、方法200は、ブロック206へ進み得る。
ブロック206において、スカウト・コア34の命令パイプラインがフラッシュされ、スカウト・コア34は、親コア32からロード・プリフェッチ・バス68を通じて送られたプリフェッチ・コード開始アドレスによって示されるプリフェッチ・コードを実行する。その結果、方法200は、終了する。
図6は、親コア32のオペレーティング・システムが遭遇するタスク・スワップによってブロードキャスト割込み信号を起動することを説明する例示的な方法300である。図2〜図3および図6を全体的に参照すると、方法300は、親コア32がタスク・スワップに遭遇したかが判定されるブロック302において開始する。親コア32がタスク・スワップに遭遇する場合には、方法300は、ブロック304へ進み得る。
ブロック304において、親コア32は、実行されている現在のアプリケーションに関連付けられるプリフェッチ・アドレス48を保存する。次いで、方法300は、ブロック306へ進み得る。
ブロック306において、親コア32は、新たなアプリケーションをロードし、この新たなアプリケーションに関連付けられるプリフェッチ・コード開始アドレスでプリフェッチ・アドレス48を更新する。次いで、方法300は、ブロック308へ進み得る。
ブロック308において、親コア32は、ブロードキャスト割込み信号を、ロード・プリフェッチ・バス68を通じてスカウト・コア34へ送る。ブロードキャスト割込み信号は、プリフェッチ・コード開始アドレスの位置および割込み通知を提供する。その結果、方法300は、終了し得る。
図7は、親コア32において実行される特定のアプリケーションによってブロードキャスト割込み信号を起動することを説明する例示的な方法400である。図2〜図3、図4および図7を全体的に参照すると、方法400は、親コア32が設計スカウト・プリロード命令70(図4)を発行する特定のアプリケーションを実行するブロック402において開始する。次いで、方法400は、ブロック404へ進み得る。
ブロック404において、親コア32は、設計スカウト・プリロード命令70を実行する。次いで、方法400は、ブロック406へ進み得る。
ブロック406において、親コア32は、設計スカウト・プリロード命令70によって特定されるプリフェッチ・コード開始アドレスと共にプリフェッチ・アドレス48を保存する。次いで、方法400は、ブロック408へ進み得る。
ブロック408において、親コア32は、ブロードキャスト割込み信号およびプリフェッチ・コード開始アドレスを、ロード・プリフェッチ・バス68を通じてスカウト・コア34へ送る。その結果、方法400は、終了し得る。
当業者によって認識されるように、本発明の1つまたは複数の態様は、システム、方法またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明の1つまたは複数の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、または、本明細書において「回路」、「モジュール」もしくは「システム」と全て一般に呼ばれ得る、ソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形を取り得る。さらに、本発明の1つまたは複数の態様は、コンピュータ読取可能なプログラム・コードが具現化された1つまたは複数のコンピュータ読取可能な媒体において具現化されるコンピュータ・プログラム製品の形を取り得る。
1つまたは複数のコンピュータ読取可能な媒体の任意の組み合わせが利用され得る。コンピュータ読取可能な媒体は、コンピュータ読取可能な記憶媒体であり得る。コンピュータ読取可能な記憶媒体は、例えば、電子、磁気、光学、電磁気、赤外線または半導体のシステム、装置、もしくはデバイス、またはこれらの任意の適切な組み合わせとし得るが、これらに限定されない。コンピュータ読取可能な記憶媒体のより具体的な例(包括的でないリスト)は、以下のものを含む:1つもしくは複数のワイヤを有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、読み出し専用メモリ(ROM:read−only memory)、消去可能プログラム可能読み出し専用メモリ(EPROM:erasable programmable read−only memory)もしくはフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ(CD−ROM:compact disc read−only memory)、光学式記憶デバイス、磁気記憶デバイス、またはこれらの任意の適切な組み合わせ。本文書の文脈において、コンピュータ読取可能な記憶媒体は、命令実行システム、装置、またはデバイスによる使用のための、またはこれらに関連するプログラムを包含または記憶することができる任意の有形の媒体であり得る。
ここで、図8を参照すると、一例において、コンピュータ・プログラム製品700は、例えば、1つまたは複数の記憶媒体702を含み、この媒体は、本明細書において説明される実施形態の1つまたは複数の態様を提供し、容易にするために、コンピュータ読取可能なプログラム・コード手段またはロジック704を記憶すべく、有形または非一時的あるいはその両方であり得る。
有形の媒体(電子メモリ・モジュール(RAM)、フラッシュ・メモリ、コンパクト・ディスク(CD)、DVD、磁気テープなどを含むが、これらに限定されない)上に作成および記憶される場合、プログラム・コードは、しばしば「コンピュータ・プログラム製品」と呼ばれる。コンピュータ・プログラム製品媒体は、典型的に、好適にはコンピュータ・システム内の処理回路によって、その処理回路による実行のために読取可能である。そのようなプログラム・コードは、例えば、実行される場合に本発明の態様を実行する命令をアセンブルするために、コンパイラまたはアセンブラを使用して作成され得る。
実施形態は、少なくとも1つのスカウト・コアと親コアとを有するチップ上のデータをプリフェッチするための方法、システム、およびコンピュータ・プログラム製品に関する。本方法は、親コアによってプリフェッチ・コード開始アドレスを保存することを含む。プリフェッチ・コード開始アドレスは、プリフェッチ・コードがどこに記憶されているかを示す。プリフェッチ・コードは、親コアによって実行されている特定のアプリケーションに基づいて、親コアを監視するために特に構成される。本方法は、親コアによってブロードキャスト割込み信号を少なくとも1つのスカウト・コアへ送ることを含む。ブロードキャスト割込み信号は、保存されているプリフェッチ・コード開始アドレスに基づいて送られる。本方法は、少なくとも1つのスカウト・コアによって実行されるプリフェッチ・コードによって親コアを監視することを含む。スカウト・コアは、ブロードキャスト割込み信号を受け取ることに基づいて、プリフェッチ・コードを実行する。
一実施形態において、本方法は、親コアで発生するタスク・スワップに基づいて親コアがプリフェッチ・コード開始アドレスを保存することをさらに含む。
一実施形態において、本方法は、命令を発行する特定のアプリケーションに基づいて親コアがプリフェッチ・コード開始アドレスを保存することをさらに含む。
一実施形態において、本方法は、デフォルトのプリフェッチ・コードが少なくとも1つのスカウト・コアによってロードされるべきであることをブロードキャスト割込み信号が示すことをさらに含む。スカウト・コアの内部に設けられる設計状態は、デフォルトのプリフェッチ・コードの位置を提供する。
一実施形態において、本方法は、ブロードキャスト割込み信号がプリフェッチ・コード開始アドレスの位置および割込み通知を提供することをさらに含む。
一実施形態において、本方法は、ロード・プリフェッチ・バスが親コアと少なくとも1つのスカウト・コアとの間に設けられることをさらに含む。ブロードキャスト割込み信号は、ロード・プリフェッチ・バスを通じて送られる。
一実施形態において、本方法は、親コアを少なくとも1つのスカウト・コアに接続する共有キャッシュをさらに含む。フェッチ要求バスは、親コアを共有キャッシュと少なくとも1つのスカウト・コアとの双方に接続するために提供される。
技術的な効果および利点は、親コア32が実行する特定のアプリケーションを監視するために特に合わせて作られるプリフェッチ・コードを使用して、スカウト・コア34が親コア32を監視することを可能にすることを含む。親コア32は、親コア32が実行しているアプリケーションに基づいて特定のプリフェッチ・コードを切り替えるために、ロード・プリフェッチ・バス68を通じてスカウト・コア34へブロードキャスト割込み信号を送り得る。したがって、上記に議論されるようなアプローチは、コンピューティング・システム10のプリフェッチ効率を向上させる。
本明細書において使用される専門用語は、特定の実施形態を説明する目的のために過ぎず、実施形態を限定することを意図されない。本明細書において、単数形の「a」、「an」および「the」は、そうでないことを文脈が明確に示さない限り、複数形も含むことが意図される。本明細書において使用される場合、「含む(comprises)」または「備える(comprising)」あるいはその両方は、記述された特徴、整数、ステップ、演算、要素、または構成要素あるいはこれら全ての存在を特定するが、1つまたは複数の他の特徴、整数、ステップ、演算、要素、構成要素、またはこれらのグループあるいはこれら全ての存在を排除しないことがさらに理解されるであろう。
特許請求の範囲における全てのミーンズ・プラス・ファンクション要素またはステップ・プラス・ファンクション要素の対応する構造、材料、動作、および均等物は、具体的に請求項に記載されるように、請求項に記載された他の要素との組み合わせにおいて機能を実行するための任意の構造、材料、または動作を含むことが意図される。実施形態の説明は、例示および説明の目的のために提示されてきたが、網羅的であることまたは実施形態を開示された形式に限定することは意図されない。多くの変形およびバリエーションは、実施形態の範囲および思想を逸脱することなく、当業者に明らかとなるであろう。実施形態は、原理および実際的な適用例を最も良く説明し、他の当業者が実施形態を予期される特定の使用例に適している様々な変形例と共に理解することを可能にするために選択および説明された。
実施形態の態様についての演算を実行するためのコンピュータ・プログラム・コードは、Java(R)、Smalltalk(R)、C++等などを含むオブジェクト指向プログラミング言語と、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語とを含む1つまたは複数のプログラミング言語の任意の組み合わせにおいて記述され得る。プログラム・コードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上および部分的に遠隔コンピュータ上で、または完全に遠隔コンピュータもしくはサーバ上で実行され得る。後者のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN:local area network)もしくは広域ネットワーク(WAN:wide area network)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続されてもよく、または、この接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)外部のコンピュータと行われ得る。
実施形態の態様は、実施形態に係る方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図または概略図あるいはその両方を参照しつつ、上述される。フローチャート図またはブロック図あるいはその両方の各ブロックと、フローチャート図またはブロック図あるいはその両方のブロックの組み合わせとは、コンピュータ・プログラム命令によって実装され得ることが理解されるであろう。このようなコンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて特定される機能/動作を実装するための手段を生成するように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。
このようなコンピュータ・プログラム命令は、コンピュータ読取可能な媒体に記憶された命令がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて特定される機能/動作を実装する命令を含む製品を作り出すように、コンピュータ読取可能な媒体に記憶され、コンピュータ、他のプログラム可能なデータ処理装置、または他のデバイスに特定の手法で機能するように命令するものであってよい。
コンピュータ・プログラム命令は、コンピュータまたは他のプログラム可能な装置上で実行される命令がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて特定される機能/動作を実装するためのプロセスを提供するように、コンピュータ実装プロセスを作り出すべく、コンピュータ、他のプログラム可能なデータ処理装置、またはデバイスにロードされ、コンピュータ、他のプログラム可能な装置または他のデバイス上で一連の動作ステップを実行させるものであってよい。
図面中のフローチャートおよびブロック図は、様々な実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の取り得る実装のアーキテクチャ、機能性、および動作を図示する。この点において、フローチャートまたはブロック図の各ブロックは、特定の論理機能を実装するための1つまたは複数の実行可能な命令を含むコードのモジュール、セグメント、または一部を表し得る。いくつかの代替的な実装においては、ブロックに記載される機能が、図面に記載された順序とは異なる順序で生じ得ることにも留意されたい。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されることがあり、または、関連する機能性に応じて、複数のブロックが逆の順序で実行されることもある。ブロック図またはフローチャート図あるいはその両方の各ブロックと、ブロック図またはフローチャート図あるいはその両方のブロックの組み合わせとは、特定の機能または動作を実行する専用のハードウェアベースのシステムによって、または専用ハードウェアとコンピュータ命令との組み合わせによって実装されることができることにも留意されよう。

Claims (20)

  1. チップ上のデータをプリフェッチするためのコンピュータ・システムであって、
    前記チップ上に設けられ、特定のアプリケーションを含む複数のアプリケーションを選択的に実行するように構成された親コアと、
    前記チップ上に設けられる少なくとも1つのスカウト・コアを含み、
    実行されている前記特定のアプリケーションに基づいて前記親コアを監視するために構成されるプリフェッチ・コードの記憶位置を示すプリフェッチ・コード開始アドレスを前記親コアによって保存するステップと、
    保存された前記プリフェッチ・コード開始アドレスに基づいて送られるブロードキャスト割込み信号を前記親コアによって前記スカウト・コアへ送るステップと、
    前記ブロードキャスト割込み信号の受信に基づいて前記プリフェッチ・コードを実行して前記スカウト・コアによって前記親コアを監視するステップと、
    を含む方法を実行するように構成される、コンピュータ・システム。
  2. 前記親コアが前記親コアで発生するタスク・スワップに基づいて前記プリフェッチ・コード開始アドレスを保存する、請求項1に記載のコンピュータ・システム。
  3. 前記親コアが命令を発行する前記特定のアプリケーションに基づいて前記プリフェッチ・コード開始アドレスを保存する、請求項1に記載のコンピュータ・システム。
  4. 前記ブロードキャスト割込み信号が前記スカウト・コアによってデフォルトのプリフェッチ・コードがロードされるべきであることを示し、前記1つのスカウト・コアの内部に設けられる設計状態が前記デフォルトのプリフェッチ・コードの位置を提供する、請求項1ないし3のいずれかに記載のコンピュータ・システム。
  5. 前記ブロードキャスト割込み信号が前記プリフェッチ・コード開始アドレスの位置および割込み通知を提供する、請求項1ないし4のいずれかに記載のコンピュータ・システム。
  6. ロード・プリフェッチ・バスが前記親コアと前記スカウト・コアとの間に設けられ、前記ブロードキャスト割込み信号が前記ロード・プリフェッチ・バスを通じて送られる、請求項1ないし5のいずれかに記載のコンピュータ・システム。
  7. 前記親コアを前記スカウト・コアに接続する共有キャッシュをさらに備え、フェッチ要求バスが前記親コアを前記共有キャッシュと前記スカウト・コアとに接続するために提供される、請求項1ないし6のいずれかに記載のコンピュータ・システム。
  8. 少なくとも1つのスカウト・コアと親コアとを有するチップ上のデータをプリフェッチするためのコンピュータ・プログラムであって、
    親コアによって実行されている特定のアプリケーションに基づいて前記親コアを監視するために構成されるプリフェッチ・コードの記憶位置を示すプリフェッチ・コード開始アドレスを前記親コアによって保存するステップと、
    前記プリフェッチ・コード開始アドレスに基づいて送られるブロードキャスト割込み信号を前記親コアによって前記スカウト・コアへ送るステップと、
    前記ブロードキャスト割込み信号の受信に基づいて前記プリフェッチ・コードを実行して前記スカウト・コアによって前記親コアを監視するステップと、
    を実行させる、コンピュータ・プログラム。
  9. 前記親コアが前記親コアで発生するタスク・スワップに基づいて前記プリフェッチ・コード開始アドレスを保存する、請求項8に記載のコンピュータ・プログラム。
  10. 前記親コアが命令を発行する前記特定のアプリケーションに基づいて前記プリフェッチ・コード開始アドレスを保存する、請求項8に記載のコンピュータ・プログラム。
  11. 前記ブロードキャスト割込み信号が前記スカウト・コアによってデフォルトのプリフェッチ・コードがロードされるべきであることを示し、前記スカウト・コアの内部に設けられる設計状態が前記デフォルトのプリフェッチ・コードの位置を提供する、請求項8ないし10のいずれかに記載のコンピュータ・プログラム。
  12. 前記ブロードキャスト割込み信号が前記プリフェッチ・コード開始アドレスの位置および割込み通知を提供する、請求項8ないし11のいずれかに記載のコンピュータ・プログラム。
  13. ロード・プリフェッチ・バスが前記親コアと前記スカウト・コアとの間に設けられ、前記ブロードキャスト割込み信号が前記ロード・プリフェッチ・バスを通じて送られる、請求項8ないし12のいずれかに記載のコンピュータ・プログラム。
  14. 少なくとも1つのスカウト・コアと親コアとを有するチップ上のデータをプリフェッチするためのコンピュータ実装方法であって、
    前記親コアによって実行されている前記特定のアプリケーションに基づいて前記親コアを監視するために構成されるプリフェッチ・コードの記憶位置を示すプリフェッチ・コード開始アドレスを前記親コアによって保存するステップと、
    前記プリフェッチ・コード開始アドレスに基づいて送られるブロードキャスト割込み信号を前記親コアによって前記スカウト・コアへ送るステップと、
    前記ブロードキャスト割込み信号の受信に基づいて前記プリフェッチ・コードを実行して前記スカウト・コアによって前記親コアを監視するステップと、
    を含む、コンピュータ実装方法。
  15. 前記親コアが前記親コアで発生するタスク・スワップに基づいて、前記プリフェッチ・コード開始アドレスを保存する、請求項14に記載の方法。
  16. 前記親コアが命令を発行する前記特定のアプリケーションに基づいて前記プリフェッチ・コード開始アドレスを保存する、請求項14に記載の方法。
  17. 前記ブロードキャスト割込み信号が前記スカウト・コアによってデフォルトのプリフェッチ・コードがロードされるべきであることを示し、前記スカウト・コアの内部に設けられる設計状態が前記デフォルトのプリフェッチ・コードの位置を提供する、請求項14ないし16のいずれかに記載の方法。
  18. 前記ブロードキャスト割込み信号が前記プリフェッチ・コード開始アドレスの位置および割込み通知を提供する、請求項14ないし17のいずれかに記載の方法。
  19. ロード・プリフェッチ・バスが前記親コアと前記スカウト・コアとの間に設けられ、前記ブロードキャスト割込み信号が前記ロード・プリフェッチ・バスを通じて送られる、請求項14ないし18のいずれかに記載の方法。
  20. 前記親コアを前記スカウト・コアに接続する共有キャッシュを備え、フェッチ要求バスが、前記親コアを前記共有キャッシュと前記スカウト・コアに接続するために提供される、請求項14ないし19のいずれかに記載の方法。
JP2015560809A 2013-03-05 2014-02-12 チップ上のデータをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、およびコンピュータ実装方法 Active JP6234484B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/785,369 US9141550B2 (en) 2013-03-05 2013-03-05 Specific prefetch algorithm for a chip having a parent core and a scout core
US13/785,369 2013-03-05
PCT/IB2014/058939 WO2014136002A1 (en) 2013-03-05 2014-02-12 Data prefetch for a chip having a parent core and a scout core

Publications (2)

Publication Number Publication Date
JP2016513829A JP2016513829A (ja) 2016-05-16
JP6234484B2 true JP6234484B2 (ja) 2017-11-22

Family

ID=51489349

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015560809A Active JP6234484B2 (ja) 2013-03-05 2014-02-12 チップ上のデータをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、およびコンピュータ実装方法

Country Status (5)

Country Link
US (2) US9141550B2 (ja)
JP (1) JP6234484B2 (ja)
CN (1) CN104981787B (ja)
DE (1) DE112014000340T5 (ja)
WO (1) WO2014136002A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2544474B (en) * 2015-11-16 2020-02-26 Advanced Risc Mach Ltd Event triggered programmable prefetcher
US10423418B2 (en) 2015-11-30 2019-09-24 International Business Machines Corporation Method for maintaining a branch prediction history table
US9966152B2 (en) * 2016-03-31 2018-05-08 Samsung Electronics Co., Ltd. Dedupe DRAM system algorithm architecture
US10248569B2 (en) * 2016-08-11 2019-04-02 Futurewei Technologies, Inc. Pattern based preload engine
CN107783911B (zh) * 2016-08-31 2021-06-08 华为技术有限公司 一种数据过滤方法及终端设备
US10489296B2 (en) * 2016-09-22 2019-11-26 International Business Machines Corporation Quality of cache management in a computer
CN107577625B (zh) * 2017-09-22 2023-06-13 北京算能科技有限公司 数据处理芯片和系统、数据存储转发处理方法
US10614007B2 (en) * 2018-04-20 2020-04-07 Qualcomm Incorporated Providing interrupt service routine (ISR) prefetching in multicore processor-based systems
CN113722143A (zh) * 2021-09-24 2021-11-30 中国第一汽车股份有限公司 一种程序流监控方法、装置、电子设备以及存储介质

Family Cites Families (30)

* 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
US8095920B2 (en) * 2002-09-17 2012-01-10 Intel Corporation Post-pass binary adaptation for software-based speculative precomputation
US7502910B2 (en) 2003-01-28 2009-03-10 Sun Microsystems, Inc. Sideband scout thread processor for reducing latency associated with a main processor
US7844801B2 (en) * 2003-07-31 2010-11-30 Intel Corporation Method and apparatus for affinity-guided speculative helper threads in chip multiprocessors
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
US8407707B2 (en) 2009-05-18 2013-03-26 Lsi Corporation Task queuing in a 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
CN101561766B (zh) * 2009-05-26 2011-06-15 北京理工大学 一种支持多核帮助线程的低开销的块同步方法
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
CN102023846B (zh) * 2011-01-06 2014-06-04 中国人民解放军国防科学技术大学 基于单片多处理器系统的共享前端流水线结构
CN102207916B (zh) * 2011-05-30 2013-10-30 西安电子科技大学 一种基于指令预取的多核共享存储器控制设备

Also Published As

Publication number Publication date
WO2014136002A1 (en) 2014-09-12
US20150019821A1 (en) 2015-01-15
JP2016513829A (ja) 2016-05-16
DE112014000340T5 (de) 2015-09-17
US9141551B2 (en) 2015-09-22
US9141550B2 (en) 2015-09-22
US20140258629A1 (en) 2014-09-11
CN104981787A (zh) 2015-10-14
CN104981787B (zh) 2017-11-17

Similar Documents

Publication Publication Date Title
JP6234484B2 (ja) チップ上のデータをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、およびコンピュータ実装方法
US9298619B2 (en) Cache line history tracking using an instruction address register file storing memory location identifier
US8954678B2 (en) Automatic pattern-based operand prefetching
JP6320431B2 (ja) データをプリフェッチするためのコンピュータ・システム、コンピュータ・プログラム、コンピュータ実施方法
US9798545B2 (en) Anticipated prefetching for a parent core in a multi-core chip
JP6796717B2 (ja) 分岐ターゲットバッファの圧縮
US10740240B2 (en) Method and arrangement for saving cache power
US10503506B2 (en) Apparatus and method for accessing data in a cache in response to an unaligned load instruction
WO2018229702A1 (en) Reducing cache transfer overhead in a system
TW201439904A (zh) 在提前執行中管理潛在無效結果
US9152566B2 (en) Prefetch address translation using prefetch buffer based on availability of address translation logic
US20130339665A1 (en) Collision-based alternate hashing
US9652245B2 (en) Branch prediction for indirect jumps by hashing current and previous branch instruction addresses
US9128851B2 (en) Prefetching for multiple parent cores in a multi-core chip
US9298459B2 (en) Managing register pairing
WO2023129316A1 (en) Prefetcher with out-of-order filtered prefetcher training queue
WO2023148561A1 (en) In-memory trace with overlapping processing and logout
CN118210557A (zh) 用于过滤无效预取的预取方法、装置、设备和存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170207

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: 20171003

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171024

R150 Certificate of patent or registration of utility model

Ref document number: 6234484

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150