JP6622715B2 - 共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散、ならびに関連する回路、方法、およびコンピュータ可読媒体 - Google Patents

共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散、ならびに関連する回路、方法、およびコンピュータ可読媒体 Download PDF

Info

Publication number
JP6622715B2
JP6622715B2 JP2016564591A JP2016564591A JP6622715B2 JP 6622715 B2 JP6622715 B2 JP 6622715B2 JP 2016564591 A JP2016564591 A JP 2016564591A JP 2016564591 A JP2016564591 A JP 2016564591A JP 6622715 B2 JP6622715 B2 JP 6622715B2
Authority
JP
Japan
Prior art keywords
cluster
hardware
thread
hardware thread
threads
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
JP2016564591A
Other languages
English (en)
Other versions
JP2017515232A (ja
JP2017515232A5 (ja
Inventor
スレッシュ・クマール・ヴェンクマハンティ
スティーヴン・ロバート・シャノン
リン・ワン
Original Assignee
クアルコム,インコーポレイテッド
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 クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2017515232A publication Critical patent/JP2017515232A/ja
Publication of JP2017515232A5 publication Critical patent/JP2017515232A5/ja
Application granted granted Critical
Publication of JP6622715B2 publication Critical patent/JP6622715B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Power Sources (AREA)

Description

優先権主張
本出願は、その全体が参照により本明細書に組み込まれる、2014年5月7日に出願された「DYNAMIC LOAD BALANCING OF HARDWARE THREADS IN CLUSTERED PROCESSOR CORES USING SHARED HARDWARE RESOURCES, AND RELATED CIRCUITS, METHODS, AND COMPUTER-READABLE MEDIA」と題する米国特許出願第14/271,812号の優先権を主張する。
本開示の技術は一般に、クラスタプロセッサコアの性能を改善することに関する。
中央処理ユニット(CPU)などの現代のプロセッサは、コンピュータ命令を実行するためのリソースを提供する1つまたは複数のハードウェアスレッドを含む場合がある。各ハードウェアスレッドは、ハードウェアスレッドによってのみアクセス可能である専用レジスタ(非限定的な例として汎用レジスタ(GPR)、制御レジスタ、またはプログラムカウンタなど)のセットを含む場合がある。専用レジスタは、実行用にソフトウェアスレッドをホストするために、ハードウェアスレッドによって使用されてもよい。専用レジスタのコンテンツは、ハードウェアスレッドによってソフトウェアスレッドが実行されるときの、所与の時点におけるソフトウェアスレッドのステートを定義する、ソフトウェアスレッドの「状況」を互いに表し得る。
プロセッサ内では、ハードウェアスレッドは「クラスタ」として知られるグループへと編成される場合がある。各クラスタは、1つまたは複数のハードウェアスレッドを含んでもよく、また、クラスタ内の任意のハードウェアスレッドによってアクセスすることができる共有クラスタリソースを含んでもよい。たとえば、共有クラスタリソースは、クラスタのハードウェアスレッドの各々がローテーションベースで使用し得る実行パイプラインを含んでもよい。複数のクラスタが、「クラスタプロセッサコア」へとさらに編成されてもよい。各クラスタプロセッサは、複数のクラスタによって利用され得る共通ハードウェアリソースを含んでもよい。共通ハードウェアリソースは、非限定的な例として、1つまたは複数の実行ユニット(浮動小数点ユニットおよび/もしくは算術論理ユニットなど)ならびに/またはキャッシュ(たとえばデータキャッシュ)を含んでもよい。
いくつかの状況では、クラスタプロセッサコアの第1のクラスタが、第2のクラスタに対する準最適な負荷状態を経験する場合がある。たとえば、第1のクラスタのすべてのハードウェアスレッドが、ソフトウェアスレッドを実行し、高負荷状態下で動作している場合がある一方で、第2のクラスタ内のハードウェアスレッドが十分に利用されていない場合がある。準最適な負荷状態はまた、単一のクラスタが両方のハードウェアスレッドを実行すれば電力節約が実現され得る状況下で、第1および第2のクラスタがそれぞれハードウェアスレッドを実行している場合に生じ得る。
準最適な負荷状態が存在することにより、結果として、クラスタプロセッサコアが準最適なパフォーマンスレベルで動作する場合がある。従来のソフトウェアベースの技術により、ソフトウェアスレッドをあるハードウェアスレッドから別のハードウェアスレッドにシフトすることが可能である。シフトプロセスは従来、オペレーティングシステムがソフトウェアスレッドのコンテキストをメモリに保存し、次いでソフトウェアスレッドを異なるハードウェアスレッドへと再ロードすることを必要とするものである。しかしながら、このプロセスは、オペレーティングシステムが、ソフトウェアスレッドをシフトすることのパフォーマンス上および/または電力消費上の恩恵を判定するために必要とされるマイクロアーキテクチャデータへのアクセスを欠く場合に、実行可能でないこともある。さらに、ソフトウェアスレッドのコンテキストをメモリに保存することは、極めて緩徐となる場合がある。
発明を実施するための形態で開示される態様は、共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散を含む。関連する回路、方法、およびコンピュータ可読媒体も開示される。この点について、一態様では、クラスタプロセッサコアにおいてハードウェアスレッドの動的負荷分散を提供するための動的負荷分散回路が提供される。動的負荷分散回路は、クラスタプロセッサコアの第1のクラスタおよび第2のクラスタに通信可能に結合される制御ユニットを備える。制御ユニットは、準最適な負荷状態が第1のクラスタと第2のクラスタとの間に存在するかどうかを判定するように構成される。準最適な負荷状態が存在すると判定したことに応答して、制御ユニットは、第1のクラスタの第1のハードウェアスレッドおよび第2のクラスタの第2のハードウェアスレッドに通信可能に結合された共有ハードウェアリソースを介して、第1のハードウェアスレッドの1つまたは複数の専用レジスタのコンテンツを第2のハードウェアスレッドの1つまたは複数の専用レジスタに転送するようにさらに構成される。準最適な負荷状態が存在すると判定したことにさらに応答して、制御ユニットはまた、共有ハードウェアリソースを介して、第1のハードウェアスレッドと関連付けられる第1の識別子を第2のハードウェアスレッドと関連付けられる第2の識別子と交換するように構成される。このようにして、準最適な負荷状態は、共有ハードウェアリソースを介して第1のクラスタから第2のクラスタに第1のハードウェアスレッドのコンテンツを再配置することによって、効果的に解決される場合がある。
別の態様では、クラスタプロセッサコアにおいてハードウェアスレッドの動的負荷分散を提供するための動的負荷分散回路が提供される。動的負荷分散回路は、準最適な負荷状態がクラスタプロセッサコアの第1のクラスタと第2のクラスタとの間に存在するかどうかを判定するための手段を備える。動的負荷分散回路は、準最適な負荷状態が存在すると判定したことに応答して、第1のクラスタの第1のハードウェアスレッドおよび第2のクラスタの第2のハードウェアスレッドに通信可能に結合された共有ハードウェアリソースを介して、第1のハードウェアスレッドの1つまたは複数の専用レジスタのコンテンツを第2のハードウェアスレッドの1つまたは複数の専用レジスタに転送するための手段をさらに備える。動的負荷分散回路はまた、準最適な負荷状態が存在すると判定したことに応答して、共有ハードウェアリソースを介して、第1のハードウェアスレッドと関連付けられる第1の識別子を第2のハードウェアスレッドと関連付けられる第2の識別子と交換するための手段を備える。
別の態様では、クラスタプロセッサコアにおいてハードウェアスレッドの動的負荷分散を提供するための方法が提供される。この方法は、準最適な負荷状態がクラスタプロセッサコアの第1のクラスタと第2のクラスタとの間に存在するかどうかを判定するステップを含む。この方法は、準最適な負荷状態が存在すると判定したことに応答して、第1のクラスタの第1のハードウェアスレッドおよび第2のクラスタの第2のハードウェアスレッドに通信可能に結合された共有ハードウェアリソースを介して、第1のハードウェアスレッドの1つまたは複数の専用レジスタのコンテンツを第2のハードウェアスレッドの1つまたは複数の専用レジスタに転送するステップをさらに含む。この方法はまた、準最適な負荷状態が存在すると判定したことに応答して、共有ハードウェアリソースを介して、第1のハードウェアスレッドと関連付けられる第1の識別子を第2のハードウェアスレッドと関連付けられる第2の識別子と交換するステップを含む。
別の態様では、プロセッサに、準最適な負荷状態がクラスタプロセッサコアの第1のクラスタと第2のクラスタとの間に存在するかどうかを判定させるためのコンピュータ実行可能命令を記憶した非一時的コンピュータ可読媒体が提供される。コンピュータ実行可能命令はさらに、プロセッサに、準最適な負荷状態が存在すると判定したことに応答して、第1のクラスタの第1のハードウェアスレッドおよび第2のクラスタの第2のハードウェアスレッドに通信可能に結合された共有ハードウェアリソースを介して、第1のハードウェアスレッドの1つまたは複数の専用レジスタのコンテンツを第2のハードウェアスレッドの1つまたは複数の専用レジスタに転送させる。コンピュータ実行可能命令はまた、プロセッサに、準最適な負荷状態が存在すると判定したことに応答して、共有ハードウェアリソースを介して、第1のハードウェアスレッドと関連付けられる第1の識別子を第2のハードウェアスレッドと関連付けられる第2の識別子と交換させる。
共有ハードウェアリソースを使用してハードウェアスレッドの負荷分散を実施するように構成された動的負荷分散回路を含む例示的なクラスタプロセッサコアのブロック図である。 動的負荷分散回路による負荷分散に先立つハードウェアスレッドによるソフトウェアスレッドのホスティングを示す、図1のクラスタプロセッサコアのブロック図である。 動的負荷分散回路の負荷分散動作中の通信流れを示す、図1のクラスタプロセッサコアのブロック図である。 負荷分散動作が動的負荷分散回路によって完了された後のソフトウェアスレッドのホスティングを示す、図1のクラスタプロセッサコアのブロック図である。 共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散のための例示的なプロセスを示すフローチャートである。 図1の動的負荷分散回路を含むことができる例示的なプロセッサベースシステムのブロック図である。
ここで図面を参照しながら、本開示のいくつかの例示的な態様について説明する。「例示的」という語は、本明細書では「一例、事例、または例示としての役割を果たすこと」を意味するために使用される。「例示的」として本明細書において説明されるいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるとは限らない。
発明を実施するための形態で開示される態様は、共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散を含む。関連する回路、方法、およびコンピュータ可読媒体も開示される。この点について、一態様では、クラスタプロセッサコアにおいてハードウェアスレッドの動的負荷分散を提供するための動的負荷分散回路が提供される。動的負荷分散回路は、クラスタプロセッサコアの第1のクラスタおよび第2のクラスタに通信可能に結合される制御ユニットを備える。制御ユニットは、準最適な負荷状態が第1のクラスタと第2のクラスタとの間に存在するかどうかを判定するように構成される。準最適な負荷状態が存在すると判定したことに応答して、制御ユニットは、第1のクラスタの第1のハードウェアスレッドおよび第2のクラスタの第2のハードウェアスレッドに通信可能に結合された共有ハードウェアリソースを介して、第1のハードウェアスレッドの1つまたは複数の専用レジスタのコンテンツを第2のハードウェアスレッドの1つまたは複数の専用レジスタに転送するようにさらに構成される。準最適な負荷状態が存在すると判定したことにさらに応答して、制御ユニットはまた、共有ハードウェアリソースを介して、第1のハードウェアスレッドと関連付けられる第1の識別子を第2のハードウェアスレッドと関連付けられる第2の識別子と交換するように構成される。このようにして、準最適な負荷状態は、共有ハードウェアリソースを介して第1のクラスタから第2のクラスタに第1のハードウェアスレッドのコンテンツを再配置することによって、効果的に解決される場合がある。
この点について、図1は、例示的なクラスタプロセッサコア10のブロック図である。クラスタプロセッサコア10は、本明細書で開示するように、クラスタプロセッサコア10のクラスタ内のハードウェアスレッドの間に負荷分散をもたらす動的負荷分散回路12を含む。クラスタプロセッサコア10は、数ある素子の中でも、既知のデジタル論理素子、半導体回路、処理コアおよび/またはメモリ構造のいずれか1つ、またはその組合せを含む場合がある。本明細書において説明する態様は、要素の任意の特定の構成には限定されず、開示される技法は、半導体ダイまたはパッケージ上の種々の構造またはレイアウトに容易に拡張することができる。
図1の例では、クラスタプロセッサコア10は、各々がソフトウェアスレッド(図示せず)をホストするように動作可能であるハードウェアスレッド14(0)〜14(3)を含む。ハードウェアスレッド14(0)〜14(3)はクラスタへと編成され、クラスタ16(0)はハードウェアスレッド14(0)および14(1)を含み、クラスタ16(1)はハードウェアスレッド14(2)および14(3)を含む。図1に示された態様は例示のためにすぎないことを理解されたい。したがって、いくつかの態様が、図1に示すよりも多数のまたは少数のハードウェアスレッド14を各クラスタ16内に含んでもよい。同様に、いくつかの態様が図1に示すよりも多数のクラスタ16をクラスタプロセッサコア10内に含んでもよいことをさらに理解されたい。
ハードウェアスレッド14(0)は、ハードウェアスレッド14(0)によってのみアクセス可能である専用レジスタ18(0)を含む。いくつかの態様では、専用レジスタ18(0)は、非限定的な例として、それぞれの汎用レジスタ(GPR)20(0)、制御レジスタ22(0)、および/またはプログラムカウンタ24(0)を含んでもよい。専用レジスタ18(0)のコンテンツ(図示せず)は、ハードウェアスレッド14(0)によってホストされるソフトウェアスレッド(図示せず)の「コンテキスト」を表してもよく、このコンテキストは、ソフトウェアスレッドが実行されるときの所与の時点におけるソフトウェアスレッドのステートを規定するものである。ハードウェアスレッド14(1)〜14(3)は同様に、ハードウェアスレッド14(0)の専用レジスタ18(0)に対応する機能を有する専用レジスタ18(1)〜18(3)をそれぞれ含む。いくつかの態様では、専用レジスタ18(1)〜18(3)が、非限定的な例として、それぞれのGPR 20(1)〜20(3)、制御レジスタ22(1)〜22(3)、および/またはプログラムカウンタ24(1)〜24(3)を含むようにされてもよい。
図1のハードウェアスレッド14(0)〜14(3)の各々はまた、識別子26(0)〜26(3)をそれぞれ含む。各識別子26(0)〜26(3)は、対応するハードウェアスレッド14(0)〜14(3)を識別するためにオペレーティングシステムなどのソフトウェアによって使用され得る変更可能な識別情報を含む。いくつかの態様では、識別子26のうちの1つまたは複数が、制御レジスタ22のうちの1つとして実装されてもよい。以下でより詳細に説明するように、識別子26は、ソフトウェアに対して透過的となる方式で動的負荷分散回路12がハードウェアスレッド14をあるクラスタ16から別のクラスタに再配置することを可能にする。
図1に見られるように、クラスタ16(0)および16(1)は、各クラスタ16内のハードウェアスレッド14によってアクセスおよび共有され得る共有クラスタリソース28(0)および28(1)をそれぞれ設けている。クラスタ16(0)では、ハードウェアスレッド14(0)はバス30によって共有クラスタリソース28(0)に通信可能に結合され、ハードウェアスレッド14(1)はバス32によって共有クラスタリソース28(0)に通信可能に結合されている。同様に、クラスタ16(1)内のハードウェアスレッド14(2)はバス34によって共有クラスタリソース28(1)に通信可能に結合され、ハードウェアスレッド14(3)はバス36によって共有クラスタリソース28(1)に通信可能に結合されている。共有クラスタリソース28(0)および28(1)の各々は、非限定的な例として、ソフトウェアスレッドを実行するためにハードウェアスレッド14によってローテーションベースで共有され得る実行パイプライン(図示せず)を含んでもよい。たとえば、共有クラスタリソース28(0)の実行パイプラインへのアクセスは、クラスタ16(0)によって提供されるプリエンプティブマルチタスキング動作の一部として、ハードウェアスレッド14(0)および14(1)の各々に交互に割り振られてもよい。
図1のクラスタプロセッサコア10はまた、クラスタ16のハードウェアスレッド14の各々にアクセス可能である共有ハードウェアリソース38を設けている。図1に示すように、ハードウェアスレッド14(0)はバス40によって共有ハードウェアリソース38に通信可能に結合され、ハードウェアスレッド14(1)はバス42によって共有ハードウェアリソース38に通信可能に結合されている。同様に、ハードウェアスレッド14(2)はバス44によって共有ハードウェアリソース38に通信可能に結合され、ハードウェアスレッド14(3)はバス46によって共有ハードウェアリソース38に通信可能に結合されている。いくつかの態様では、共有ハードウェアリソース38は、非限定的な例として、浮動小数点ユニットおよび/または算術論理ユニットなどの1つまたは複数の実行ユニット48を含んでもよい。共有ハードウェアリソース38はまた、非限定的な例として、データキャッシュなどの1つまたは複数のキャッシュ50を含んでもよい。
クラスタ16のハードウェアスレッド14は、図1のクラスタプロセッサコア10が最高で4つのソフトウェアスレッドを同時に効果的に実行することを可能にする。ソフトウェアスレッドの実行中、たとえば、クラスタ16(0)がクラスタ16(1)に対して準最適な負荷状態を経験する状況が発生する場合がある。たとえば、クラスタ16(0)のハードウェアスレッド14(0)および14(1)は、高負荷状態下で動作している場合がある一方で、クラスタ16(1)のハードウェアスレッド14(2)および14(3)は(たとえば、キャッシュの消失または他の遅延状態によって未使用であることまたは停止されていることが原因で)過少利用されている場合がある。電力消費量を低減することがクラスタプロセッサコア10の優先事項である態様の場合、準最適な負荷状態は、単一のクラスタ16が両方のハードウェアスレッド14を実行していれば省電力が実現され得る状況下で、クラスタ16(0)および16(1)がそれぞれ単一のハードウェアスレッド14を実行しているときに生じ得る。
したがって、動的負荷分散回路12は、ソフトウェアベースの解決策と比べてより効率的な方式でハードウェアスレッド14間の動的負荷分散を可能にするために設けられるものである。この点において、動的負荷分散回路12は制御ユニット52を含み、制御ユニット52は、バス54を介してクラスタ16(0)に通信可能に結合され、またバス56を介してクラスタ16(1)に通信可能に結合される。いくつかの態様では、クラスタ16(0)および16(1)の負荷状態に関する負荷データ(図示せず)がクラスタ16(0)および16(1)によって制御ユニット52に提供されてもよく、かつ/または、バス54およびバス56を介して制御ユニット52によって能動的に収集されてもよい。負荷データは、非限定的な例として、プロセッサ利用率、共有クラスタリソース28(0)および/もしくは28(1)の利用率、実行しているプロセスの数、ならびに/またはクラスタ16(0)および16(1)による電力消費量を示すデータを含んでもよい。負荷データを解析および比較することにより、制御ユニット52は、クラスタ16(0)のハードウェアスレッド14(0)および14(1)とクラスタ16(1)のハードウェアスレッド14(2)および14(3)の負荷状態を監視してもよい。制御ユニット52はまた、共有ハードウェアリソース38を介したクラスタ16間のハードウェアスレッド14のコンテンツの再配置を促進するために、バス58を介して共有ハードウェアリソース38に通信可能に結合されてもよい。このようにして、動的負荷分散回路12は、ソフトウェアスレッドを移動させるための従来のソフトウェアベースの技法と比較して、より迅速かつ効率的に準最適な負荷状態を解決し得る。
準最適な負荷状態を検出した結果として生じる、図1の動的負荷分散回路12によるあるクラスタ16から別のクラスタへのハードウェアスレッド14の再配置をさらにわかりやすく説明するために、図2〜図4が示されている。図2は、準最適な負荷状態を生じる、ハードウェアスレッド14によってホストされるソフトウェアスレッド60の実行中のクラスタプロセッサコア10を示す。図3は、動的負荷分散回路12が共有ハードウェアリソース38を介してクラスタ16(0)からクラスタ16(1)にハードウェアスレッド14(1)のコンテンツを再配置するときの、クラスタプロセッサコア10内の通信流れを示す。図4は、ハードウェアスレッド14(1)のコンテンツが再配置され、準最適な負荷状態が解決された後の、ハードウェアスレッド14のコンテンツを示す。明快および簡潔のために、図2〜図4について説明する際に図1の要素を参照する。
図2では、クラスタプロセッサコア10の共有ハードウェアリソース38は、ハードウェアスレッド14のすべてによってアクセス可能であるデータキャッシュ62を含む。図2の例では、ハードウェアスレッド14(0)〜14(3)は、ソフトウェアスレッド60(0)〜60(3)をそれぞれホストしている。ハードウェアスレッド14(0)〜14(3)は、識別子26(0)〜26(3)にそれぞれ関連付けられ、識別子26(0)〜26(3)は現在、それぞれの値「A」、「B」、「C」、および「D」を含んでいる。識別子26は、オペレーティングシステムなどのソフトウェアがソフトウェア60(0)〜60(3)の各々を対応するハードウェアスレッド14(0)〜14(3)にマッピングし得るアブストラクションレイヤとして働く。ハードウェアスレッド14(0)の専用レジスタ18(0)は、ソフトウェアスレッド60(0)の現在のコンテンツを表すコンテンツ64(0)を含む。同様に、ハードウェアスレッド14(1)の専用レジスタ18(1)は、ソフトウェアスレッド60(1)の現在のコンテンツを表すコンテンツ64(1)を含む。説明のために、コンテンツ64(0)はビット値「101010」を有するものとして示され、コンテンツ64(1)はビット値「010101」を有するものとして示されている。
ソフトウェアスレッド60(0)および60(1)は現在、それらがクラスタ16(0)のそれぞれハードウェアスレッド14(0)および14(1)上で能動的に実行されていることを示す「オン」のスレッドステート(図示せず)を有していることを理解されたい。対照的に、クラスタ16(1)のハードウェアスレッド14(2)および14(3)上のソフトウェアスレッド60(2)および60(3)は、実行が現在は生じていないことを示す「オフ」のスレッドステートを有している。たとえば、ソフトウェアスレッド60(2)および60(3)の一方または両方が、キャッシュの消失または他の遅延状態の結果として停止される場合がある。
したがって、準最適な負荷状態がクラスタ16(0)とクラスタ16(1)との間に存在する。クラスタ16(0)は、ハードウェアスレッド14(0)上のソフトウェアスレッド60(0)とハードウェアスレッド14(1)上のソフトウェアスレッド60(1)の両方をマルチタスキングするように強制され、結果として共有クラスタリソース28(0)の過使用を生じる。それと同時に、クラスタ16(1)の共有クラスタリソース28(1)は、ハードウェアスレッド14(2)上のソフトウェアスレッド60(2)およびハードウェアスレッド14(3)上のソフトウェアスレッド60(3)のスレッドステータスが非アクティブであることが原因で過少利用される。クラスタ16(0)とクラスタ16(1)との間の負荷状態がこのように準最適である結果として、クラスタプロセッサコア10が準最適レベルで動作することになり得る。
図3は、クラスタ16(0)とクラスタ16(1)との間の準最適な負荷状態を解決するために動的負荷分散回路12の制御ユニット52が取る動作を示す。クラスタ16(0)および16(1)の負荷状態を(それぞれ矢印66および68によって示すように)監視することにより、制御ユニット52は、準最適な負荷状態がクラスタ16(0)とクラスタ16(1)との間に存在すると判定し得る。制御ユニット52は次いで、クラスタ16(0)からクラスタ16(1)へのハードウェアスレッド14(1)のコンテンツの再配置を達成するために、クラスタ16(0)および/またはクラスタ16(1)に制御信号(矢印70および72によって示す)を発行してもよい。いくつかの態様では、制御ユニット52はまた、再配置を促進するために、共有ハードウェアリソース38に制御信号(矢印74によって示す)を発行してもよい。
図3の例では、準最適な負荷状態が存在すると判定された後、動的負荷分散回路12の制御ユニット52は、専用レジスタ18(1)のコンテンツ64(1)を共有ハードウェアリソース38に(特に、データキャッシュ62に)転送するようにハードウェアスレッド14(1)に指示してもよい。この転送は矢印76によって表される。コンテンツ64(1)は次いで、データキャッシュ62からクラスタ16(1)のハードウェアスレッド14(2)の専用レジスタ18(2)にさらに転送されてもよい(矢印78によって示される)。コンテンツ64(1)はソフトウェアスレッド60(1)の現在の状況を表すため、コンテンツ64(1)を専用レジスタ18(2)に転送することにより、ソフトウェアスレッド60(1)がハードウェアスレッド14(2)に効果的に再配置される。
専用レジスタ18(1)のコンテンツ64(1)の再配置が、クラスタプロセッサコア10によって実行されているオペレーティングシステムソフトウェアに対して透過的となるようにするため、制御ユニット52はまた、ハードウェアスレッド14(1)および14(2)の識別子26(1)および26(2)をそれぞれスワップする。したがって、図3に見られるように、ハードウェアスレッド14(1)の識別子26(1)における値は、データキャッシュ62を介してハードウェアスレッド14(2)の識別子26(2)における値と交換される(双方向の矢印80および82によって示される)。オペレーティングシステムは識別子26の値を使用してソフトウェアスレッド60をハードウェアスレッド14にマッピングするため、オペレーティングシステムは、ソフトウェアスレッド60が実行している物理リソースが変化したことに依然として気づかない。
次に図4を参照すると、ハードウェアスレッド14(1)のコンテンツの再配置後の、ハードウェアスレッド14およびソフトウェアスレッド60のステートが示されている。図4では、ハードウェアスレッド14(0)および14(3)は、前述のようにそれぞれの値「A」および「D」を有する識別子26(0)および26(3)にそれぞれ関連付けられる。しかしながら、ハードウェアスレッド14(1)に関連付けられる識別子26(1)はここで「C」の値を有する一方で、ハードウェアスレッド14(2)に関連付けられる識別子26(2)は「B」の値を有している。加えて、ハードウェアスレッド14(2)の専用レジスタ18(2)のコンテンツ64(2)はここで、ハードウェアスレッド14(1)の専用レジスタ18(1)のコンテンツ64(1)に直前に記憶されていた値を含んでいる。結果として、ソフトウェアスレッド60(1)はここでハードウェアスレッド14(2)によってホストされ、クラスタ16(1)内で実行を継続してもよい。この時点で、クラスタ16の各々は、「オン」のスレッドステート(図示せず)を有する1つのソフトウェアスレッド60を含んでいる(すなわち、クラスタ16(0)内にソフトウェアスレッド60(0)、クラスタ16(1)内にソフトウェアスレッド60(1))。各クラスタ16はまた、「オフ」のスレッドステートを有する1つのソフトウェアスレッド60を含んでいる(すなわち、クラスタ16(0)内にソフトウェアスレッド60(2)、クラスタ16(1)内にソフトウェアスレッド60(3))。したがって、ソフトウェアスレッド60を実行する結果として生じる処理負荷は、クラスタ16間でより均等に分散され、その結果、クラスタプロセッサコア10の性能が改善される。
図2〜図4の例は、動的負荷分散回路12がクラスタ16全体にわたって処理負荷をより均等に分散させることを示しているが、クラスタプロセッサコア10のいくつかの態様では、電力消費量の低減が、処理パフォーマンスを改善することよりも高い優先事項であってもよい。たとえば、いくつかの態様では、動的負荷分散回路12は、2つのアクティブなハードウェアスレッド14のコンテンツ64を同じクラスタ16上に再配置することによって、クラスタプロセッサコア10のエネルギー消費量の潜在的な低減を検出してもよい。そうすることにより、動的負荷分散回路12は、クラスタプロセッサコア10がクラスタ16のうちの1つを停止して節電を実現することを可能にしてもよい。
共有ハードウェアリソース38を使用したクラスタプロセッサコア10におけるハードウェアスレッド14の動的負荷分散のための例示的なプロセスを説明するために、図5が示されている。図5について説明する際に、わかりやすくするために、図1〜図4の要素が参照される。図5では、動的負荷分散回路12の制御ユニット52が、クラスタプロセッサコア10の第1のクラスタ16(0)と第2のクラスタ16(1)との間に準最適な負荷状態が存在するかどうかを判定することで動作が始まる(ブロック84)。いくつかの態様では、準最適な負荷状態が存在するかどうかを判定するためのブロック84の動作は、第2のクラスタ16(1)の過少利用を検出することを含んでもよい(ブロック86)。いくつかの態様では、準最適な負荷状態が存在するかどうかを判定するためのブロック84の動作が、クラスタプロセッサコア10のエネルギー消費量における潜在的な低減を検出することを含んでもよい(ブロック88)。
制御ユニット52は次いで、その判定に基づいて、準最適な負荷状態が存在するかどうかを評価する(ブロック90)。存在しない場合、クラスタプロセッサコア10の動作は継続する(ブロック92)。しかしながら、ブロック90において、準最適な負荷状態が存在すると判定された場合、制御ユニット52は、第1のクラスタ16(0)のハードウェアスレッド14(1)の1つまたは複数の専用レジスタ18(1)のコンテンツ64(1)を第2のクラスタ16(1)の第2のハードウェアスレッド14(2)の1つまたは複数の専用レジスタ18(2)に転送する(ブロック94)。この転送は、第1のハードウェアスレッド14(1)および第2のハードウェアスレッド14(2)に通信可能に結合された共有ハードウェアリソース38を介して達成される。制御ユニット52はさらに、共有ハードウェアリソース38を介して、第1のハードウェアスレッド14(1)と関連付けられた第1の識別子26(1)を第2のハードウェアスレッド14(2)と関連付けられた第2の識別子26(2)と交換する(ブロック96)。
本明細書において開示される態様による動的負荷分散回路12は任意のプロセッサベースデバイスに設けられるか、または組み込まれる。例として、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
この点について、図6は、図1に示す動的負荷分散回路12を採用することができる、プロセッサベースシステム98の一例を示す。この例では、プロセッサベースシステム98は、1つまたは複数の中央処理ユニット(CPU)100を含み、各CPUは、図1の動的負荷分散回路(DLBC)12を備え得る1つまたは複数のプロセッサ102を含む。CPU100は、データまたは命令への高速アクセスのためにプロセッサ102に結合されたキャッシュメモリ104を有してもよい。CPU100は、システムバス106に結合され、プロセッサベースのシステム98内に含まれるマスタデバイスとスレーブデバイスとを相互結合し得る。よく知られているように、CPU100は、システムバス106を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU100は、メモリユニット110(0)〜110(N)を提供するメモリシステム108にバストランザクション要求を通信し得る。
他のマスタおよびスレーブデバイスがシステムバス106に接続され得る。図6に示すように、これらのデバイスは、例として、メモリコントローラ112、1つまたは複数の入力デバイス114、1つまたは複数の出力デバイス116、1つまたは複数のネットワークインターフェースデバイス118、および1つまたは複数のディスプレイコントローラ120を含み得る。入力デバイス114は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含み得る。出力デバイス116は、限定はしないが、音声、ビデオ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含み得る。ネットワークインターフェースデバイス118は、ネットワーク122との間でのデータ交換を可能にするように構成される任意のデバイスであり得る。ネットワーク122は、限定はしないが、ワイヤードまたはワイヤレスネットワーク、プライベートまたは公衆ネットワーク、エリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、およびインターネットを含む任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス118は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。
また、CPU100は、1つまたは複数のディスプレイ124に送られる情報を制御するために、システムバス106を介してディスプレイコントローラ120にアクセスするように構成されてもよい。ディスプレイコントローラ120は、1つまたは複数のビデオプロセッサ126を介して表示される情報をディスプレイ124に送り、ビデオプロセッサ126は、表示される情報を、ディスプレイ124に適したフォーマットとなるように処理する。ディスプレイ124としては、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含むがそれらに限定されない、任意のタイプのディスプレイがあり得る。
本明細書において開示される態様に関して説明される種々の例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子ハードウェア、メモリもしくは別のコンピュータ可読媒体に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令、または両方の組合せとして実現できることを、当業者はさらに理解されよう。本明細書において説明されるマスタおよびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて利用されてよい。本明細書において開示されるメモリは、任意のタイプおよびサイズのメモリであってよく、また、任意のタイプの所望の情報を記憶するように構成されてよい。このような互換性を明確に例示するために、種々の例示的な構成要素、ブロック、モジュール、回路、およびステップが、概してその機能に関して説明されてきた。そのような機能がどのように実現されるかは、特定の用途、設計上の選択、および/または、システム全体に課された設計上の制約によって決まる。当業者は、説明された機能を特定の適用例ごとに様々な方法で実施することができるが、そのような実施態様の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
本明細書において開示される態様に関して説明される種々の例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書において説明される機能を実行するように設計されたそれらの任意の組合せにおいて実現または実行され得る。プロセッサはマイクロプロセッサであり得るが、代替実施形態では、プロセッサは、任意の従来型プロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえばDSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、1つまたは複数のマイクロプロセッサとDSPコア、あるいは任意の他のそのような構成として実装され得る。
本明細書において開示される態様は、ハードウェアにおいて、また、ハードウェアに記憶された命令において具現される場合があり、命令は、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形態のコンピュータ可読媒体内に存在することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替実施形態では、記憶媒体は、プロセッサと一体であってよい。プロセッサおよび記憶媒体はASICに存在してもよい。ASICはリモート局に存在してもよい。代替として、プロセッサおよび記憶媒体は、個別構成要素として、リモート局、基地局、またはサーバに存在してもよい。
本明細書の例示的な態様のいずれかにおいて説明された動作ステップは、例および考察を提供するために説明されることにも留意されたい。説明される動作は、図示されるシーケンス以外の多数の異なるシーケンスにおいて実行することができる。さらに、単一の動作ステップにおいて記載される動作が、実際にはいくつかの異なるステップにおいて実行される場合もある。さらに、例示的態様において論じられる1つまたは複数の動作ステップが組み合わせられる場合がある。フローチャート図において図示した動作ステップは、当業者に容易に明らかとなるような多くの異なる修正を受けてもよいことを理解されたい。当業者はまた、情報および信号が様々な異なる技術および技法のいずれかを使用して表されてもよいことを理解するであろう。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表すことができる。
本開示の前述の説明は、いかなる当業者も本開示を作製または使用できるようにするために与えられる。本開示に対する様々な修正は、当業者に容易に明らかになり、本明細書で定義する一般原理は、本開示の趣旨または範囲を逸脱することなく、他の変形形態に適用され得る。したがって、本開示は、本明細書において説明した例および設計に限定されるものではなく、本明細書において開示される原理および新規な特徴に合致する最も広い範囲を与えられるべきである。
10 クラスタプロセッサコア
12 動的負荷分散回路
16 クラスタ
18 専用レジスタ
26 識別子
28 共有クラスタリソース
38 共有ハードウェアリソース
52 制御ユニット

Claims (15)

  1. 動的負荷分散回路であって、
    準最適な負荷状態がクラスタプロセッサコアの1つまたは複数のハードウェアスレッドの第1のクラスタと1つまたは複数のハードウェアスレッドの第2のクラスタとの間に存在するかどうかを判定するための手段と、
    前記準最適な負荷状態が存在すると判定したことに応答して、前記第1のクラスタの前記1つまたは複数のハードウェアスレッドのうちの第1のハードウェアスレッドおよび前記第2のクラスタの前記1つまたは複数のハードウェアスレッドのうちの第2のハードウェアスレッドに通信可能に結合された共有ハードウェアリソースを介して、前記第1のハードウェアスレッドの1つまたは複数の専用レジスタのコンテンツを、前記第2のハードウェアスレッドの1つまたは複数の専用レジスタに転送するための手段と、
    前記準最適な負荷状態が存在すると判定したことに応答して、前記共有ハードウェアリソースを介して、前記第1のハードウェアスレッドと関連付けられる第1の識別子を前記第2のハードウェアスレッドと関連付けられる第2の識別子とスワップするための手段とを備える動的負荷分散回路。
  2. クラスタプロセッサコアの1つまたは複数のハードウェアスレッドの第1のクラスタおよび1つまたは複数のハードウェアスレッドの第2のクラスタに通信可能に結合された制御ユニットであって、
    前記制御ユニットは、
    判定するための前記手段を提供し、
    判定したことに応答するための手段を提供する
    ように構成される請求項1に記載の動的負荷分散回路。
  3. 前記共有ハードウェアリソースは、実行ユニットもしくはキャッシュ、またはそれらの組合せを備える、請求項2に記載の動的負荷分散回路。
  4. 前記制御ユニットは、
    前記第2のクラスタの過少利用を検出することによって、または、
    前記クラスタプロセッサコアのエネルギー消費量における潜在的な低減を検出することによって、または、
    プロセッサ利用率、共有クラスタリソースの利用率、実行しているプロセスの数、または前記第1のクラスタおよび第2のクラスタによる電力消費量のうちの1つ以上を示す負荷データに基づいて、
    前記準最適な負荷状態が前記第1のクラスタと前記第2のクラスタとの間に存在するかどうかを判定するように構成される、請求項2に記載の動的負荷分散回路。
  5. 前記制御ユニットは、1つもしくは複数の汎用レジスタ(GPR)のコンテンツまたは1つもしくは複数の制御レジスタのコンテンツ、あるいはそれらの組合せを転送することによって、前記第1のクラスタの前記1つまたは複数のハードウェアスレッドのうちの前記第1のハードウェアスレッドの前記1つまたは複数の専用レジスタの前記コンテンツを、前記第2のクラスタの前記1つまたは複数のハードウェアスレッドのうちの前記第2のハードウェアスレッドの前記1つまたは複数の専用レジスタに転送するように構成される、請求項2に記載の動的負荷分散回路。
  6. 前記1つまたは複数の制御レジスタは、前記第1のハードウェアスレッドと関連付けられる前記第1の識別子と、前記第2のハードウェアスレッドと関連付けられる前記第2の識別子とを備え、
    前記第1のハードウェアスレッドと関連付けられる前記第1の識別子は第1のソフトウェアスレッドを前記第1のハードウェアスレッドにマッピングし、
    前記第2のハードウェアスレッドと関連付けられる前記第2の識別子は第2のソフトウェアスレッドを前記第2のハードウェアスレッドにマッピングする、請求項5に記載の動的負荷分散回路。
  7. 集積回路内に統合されまたは、
    セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、携帯電話、セルラー電話、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、同調器、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤからなるグループから選択されたデバイス内に統合された、請求項2に記載の動的負荷分散回路。
  8. クラスタプロセッサコアにおいてハードウェアスレッドの動的負荷分散を提供するための方法であって、
    準最適な負荷状態がクラスタプロセッサコアの1つまたは複数のハードウェアスレッドの第1のクラスタと1つまたは複数のハードウェアスレッドの第2のクラスタとの間に存在するかどうかを判定するステップと、
    前記準最適な負荷状態が存在すると判定したことに応答して、
    前記第1のクラスタの前記1つまたは複数のハードウェアスレッドのうちの第1のハードウェアスレッドおよび前記第2のクラスタの前記1つまたは複数のハードウェアスレッドのうちの第2のハードウェアスレッドに通信可能に結合された共有ハードウェアリソースを介して、前記第1のハードウェアスレッドの1つまたは複数の専用レジスタのコンテンツを、前記第2のハードウェアスレッドの1つまたは複数の専用レジスタに転送するステップと、
    前記共有ハードウェアリソースを介して、前記第1のハードウェアスレッドと関連付けられる第1の識別子を前記第2のハードウェアスレッドと関連付けられる第2の識別子とスワップするステップとを含む方法。
  9. 前記共有ハードウェアリソースは、実行ユニットもしくはキャッシュ、またはそれらの組合せを備える、請求項8に記載の方法。
  10. 前記準最適な負荷状態が前記第1のクラスタと前記第2のクラスタとの間に存在するかどうかを判定するステップは、前記第2のクラスタの過少利用を検出することを含む、請求項8に記載の方法。
  11. 前記準最適な負荷状態が前記第1のクラスタと前記第2のクラスタとの間に存在するかどうかを判定するステップは、前記クラスタプロセッサコアのエネルギー消費量における潜在的な低減を検出することを含む、請求項8に記載の方法。
  12. 前記準最適な負荷状態が前記第1のクラスタと前記第2のクラスタとの間に存在するかどうかを判定するステップは、プロセッサ利用率、共有クラスタリソースの利用率、実行しているプロセスの数、または前記第1のクラスタおよび第2のクラスタによる電力消費量のうちの1つ以上を示す負荷データに基づく、請求項8に記載の方法。
  13. 前記第1のクラスタの前記1つまたは複数のハードウェアスレッドのうちの前記第1のハードウェアスレッドの前記1つまたは複数の専用レジスタの前記コンテンツを、前記第2のクラスタの前記1つまたは複数のハードウェアスレッドのうちの前記第2のハードウェアスレッドの前記1つまたは複数の専用レジスタに転送するステップは、1つもしくは複数の汎用レジスタ(GPR)のコンテンツまたは1つもしくは複数の制御レジスタのコンテンツ、あるいはそれらの組合せを転送するステップを含む、請求項8に記載の方法。
  14. 前記1つまたは複数の制御レジスタは、前記第1のハードウェアスレッドと関連付けられる前記第1の識別子と、前記第2のハードウェアスレッドと関連付けられる前記第2の識別子とを備え、
    前記第1のハードウェアスレッドと関連付けられる前記第1の識別子は第1のソフトウェアスレッドを前記第1のハードウェアスレッドにマッピングし、
    前記第2のハードウェアスレッドと関連付けられる前記第2の識別子は第2のソフトウェアスレッドを前記第2のハードウェアスレッドにマッピングする、請求項13に記載の方法。
  15. コンピュータによって実行されたときに、請求項8〜14のいずれか一項に記載の方法をプロセッサに実行させるように構成されたコンピュータ実行可能命令を記憶した非一時的コンピュータ可読記憶媒体。
JP2016564591A 2014-05-07 2015-04-20 共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散、ならびに関連する回路、方法、およびコンピュータ可読媒体 Active JP6622715B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/271,812 2014-05-07
US14/271,812 US11200058B2 (en) 2014-05-07 2014-05-07 Dynamic load balancing of hardware threads in clustered processor cores using shared hardware resources, and related circuits, methods, and computer-readable media
PCT/US2015/026634 WO2015171295A1 (en) 2014-05-07 2015-04-20 Dynamic load balancing of hardware threads in clustered processor cores using shared hardware resources, and related circuits, methods, and computer-readable media

Publications (3)

Publication Number Publication Date
JP2017515232A JP2017515232A (ja) 2017-06-08
JP2017515232A5 JP2017515232A5 (ja) 2018-05-24
JP6622715B2 true JP6622715B2 (ja) 2019-12-18

Family

ID=53008938

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016564591A Active JP6622715B2 (ja) 2014-05-07 2015-04-20 共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散、ならびに関連する回路、方法、およびコンピュータ可読媒体

Country Status (6)

Country Link
US (1) US11200058B2 (ja)
EP (1) EP3140728B1 (ja)
JP (1) JP6622715B2 (ja)
KR (1) KR102239229B1 (ja)
CN (1) CN106462394B (ja)
WO (1) WO2015171295A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US10331454B2 (en) * 2016-09-29 2019-06-25 Intel Corporation System and method for load balancing in out-of-order clustered decoding
CN108038006B (zh) * 2017-11-14 2022-02-08 北京小鸟看看科技有限公司 头戴显示设备的控制方法、设备及系统
CN113168389B (zh) * 2018-12-28 2023-03-31 华为技术有限公司 用于锁定具有非透明桥接的PCIe网络的装置和方法
US20210073027A1 (en) * 2019-09-11 2021-03-11 Silicon Laboratories Inc. Multi-Thread Wireless Communications Processor with Granular Thread Processes
CN111679906B (zh) * 2020-05-11 2023-07-18 长沙天仪空间科技研究院有限公司 统一分配顶层资源并复用的卫星平台和载荷复用方法
US20220171663A1 (en) * 2020-11-30 2022-06-02 Netapp, Inc. Systems and Methods for Resource Lifecycle Management
US20230099989A1 (en) * 2021-09-24 2023-03-30 Intel Corporation Scalable toggle point control circuitry for a clustered decode pipeline
CN115857418B (zh) * 2023-02-28 2023-05-02 深圳华龙讯达信息技术股份有限公司 一种基于耦合设计的可编程逻辑控制系统

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3696901B2 (ja) 1994-07-19 2005-09-21 キヤノン株式会社 負荷分散方法
JP2004220070A (ja) 2003-01-09 2004-08-05 Japan Science & Technology Agency コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
JP2006139495A (ja) 2004-11-11 2006-06-01 Seiko Epson Corp 演算処理装置
US8495649B2 (en) * 2006-07-19 2013-07-23 International Business Machines Corporation Scheduling threads having complementary functional unit usage on SMT processors
US7444459B2 (en) 2006-12-12 2008-10-28 Lsi Logic Corporation Methods and systems for load balancing of virtual machines in clustered processors using storage related load information
US8046566B2 (en) * 2007-05-14 2011-10-25 International Business Machines Corporation Method to reduce power consumption of a register file with multi SMT support
KR100962531B1 (ko) 2007-12-11 2010-06-15 한국전자통신연구원 동적 로드 밸런싱을 지원하는 멀티 쓰레딩 프레임워크를 수행하는 장치 및 이를 이용한 프로세싱 방법
US8806491B2 (en) 2007-12-31 2014-08-12 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
CN101446910B (zh) 2008-12-08 2011-06-22 哈尔滨工程大学 基于smp的高级最早期限优先算法任务调度方法
US8954977B2 (en) * 2008-12-09 2015-02-10 Intel Corporation Software-based thread remapping for power savings
CN101788922B (zh) 2009-01-22 2013-12-25 国际商业机器公司 基于辅助线程实现事务存储系统的方法和装置
US8346509B2 (en) * 2009-04-08 2013-01-01 Intel Corporation Context switch sampling
US20110055838A1 (en) 2009-08-28 2011-03-03 Moyes William A Optimized thread scheduling via hardware performance monitoring
US8595731B2 (en) 2010-02-02 2013-11-26 International Business Machines Corporation Low overhead dynamic thermal management in many-core cluster architecture
JP5531679B2 (ja) 2010-03-04 2014-06-25 日本電気株式会社 Smt対応cpuを有する情報処理装置の消費電力低減方法、消費電力低減装置及び消費電力低減プログラム
US8413158B2 (en) 2010-09-13 2013-04-02 International Business Machines Corporation Processor thread load balancing manager
US9069553B2 (en) * 2011-09-06 2015-06-30 Marvell World Trade Ltd. Switching tasks between heterogeneous cores
US8990833B2 (en) 2011-12-20 2015-03-24 International Business Machines Corporation Indirect inter-thread communication using a shared pool of inboxes
US20130332778A1 (en) 2012-06-07 2013-12-12 Vmware, Inc. Performance-imbalance-monitoring processor features
JP6017260B2 (ja) * 2012-10-17 2016-10-26 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ
US20140173623A1 (en) * 2012-12-17 2014-06-19 Mediatek Inc. Method for controlling task migration of task in heterogeneous multi-core system based on dynamic migration threshold and related computer readable medium
CN103617088B (zh) 2013-11-29 2018-07-24 深圳中微电科技有限公司 在不同类型线程中分配内核资源的方法、装置及其处理器

Also Published As

Publication number Publication date
EP3140728A1 (en) 2017-03-15
WO2015171295A1 (en) 2015-11-12
KR102239229B1 (ko) 2021-04-09
CN106462394A (zh) 2017-02-22
KR20170002418A (ko) 2017-01-06
US11200058B2 (en) 2021-12-14
JP2017515232A (ja) 2017-06-08
US20150324239A1 (en) 2015-11-12
EP3140728B1 (en) 2020-07-29
CN106462394B (zh) 2019-04-05

Similar Documents

Publication Publication Date Title
JP6622715B2 (ja) 共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散、ならびに関連する回路、方法、およびコンピュータ可読媒体
JP5960842B2 (ja) ハイブリッドなライトスルー/ライトバックキャッシュポリシーマネージャ、ならびに関連するシステムおよび方法
US10877766B2 (en) Embedded scheduling of hardware resources for hardware acceleration
TWI496076B (zh) 上下文狀態管理技術
JP5792402B2 (ja) グラフィックス処理ユニット上でのグラフィックスアプリケーションおよび非グラフィックスアプリケーションの実行
JP2018533112A (ja) コマンドストリームヒントを使用したgpu作業負荷の特徴づけおよび電力管理
US9779469B2 (en) Register spill management for general purpose registers (GPRs)
US9830163B2 (en) Control flow in a heterogeneous computer system
US9632958B2 (en) System for migrating stash transactions
EP2929446B1 (en) System and method for managing performance of a computing device having dissimilar memory types
JP2016535887A (ja) マルチコアプロセッサにおける並行関数の効率的なハードウェアディスパッチ、ならびに関連するプロセッサシステム、方法、およびコンピュータ可読媒体
JP2017515232A5 (ja)
KR101900436B1 (ko) 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고
WO2016202154A1 (zh) 一种gpu资源的分配方法及系统
WO2016202153A1 (zh) 一种gpu资源的分配方法及系统
US9552033B2 (en) Latency-based power mode units for controlling power modes of processor cores, and related methods and systems
TWI701590B (zh) 管線重組態電路、基於失序(ooo)處理器之系統及重組態一執行管線之方法
US9501328B2 (en) Method for exploiting parallelism in task-based systems using an iteration space splitter
US10635444B2 (en) Shared compare lanes for dependency wake up in a pair-based issue queue
US9778951B2 (en) Task signaling off a critical path of execution
US10073723B2 (en) Dynamic range-based messaging
US11954534B2 (en) Scheduling in a container orchestration system utilizing hardware topology hints
WO2024075157A1 (ja) タスクスケジューラ装置、計算システム、タスクスケジューリング方法およびプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180403

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180403

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190123

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190225

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191122

R150 Certificate of patent or registration of utility model

Ref document number: 6622715

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250