特許第6622715号(P6622715)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ クアルコム,インコーポレイテッドの特許一覧

特許6622715共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散、ならびに関連する回路、方法、およびコンピュータ可読媒体
<>
  • 特許6622715-共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散、ならびに関連する回路、方法、およびコンピュータ可読媒体 図000002
  • 特許6622715-共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散、ならびに関連する回路、方法、およびコンピュータ可読媒体 図000003
  • 特許6622715-共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散、ならびに関連する回路、方法、およびコンピュータ可読媒体 図000004
  • 特許6622715-共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散、ならびに関連する回路、方法、およびコンピュータ可読媒体 図000005
  • 特許6622715-共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散、ならびに関連する回路、方法、およびコンピュータ可読媒体 図000006
  • 特許6622715-共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散、ならびに関連する回路、方法、およびコンピュータ可読媒体 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6622715
(24)【登録日】2019年11月29日
(45)【発行日】2019年12月18日
(54)【発明の名称】共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散、ならびに関連する回路、方法、およびコンピュータ可読媒体
(51)【国際特許分類】
   G06F 9/50 20060101AFI20191209BHJP
【FI】
   G06F9/50 120Z
   G06F9/50 150D
【請求項の数】15
【全頁数】16
(21)【出願番号】特願2016-564591(P2016-564591)
(86)(22)【出願日】2015年4月20日
(65)【公表番号】特表2017-515232(P2017-515232A)
(43)【公表日】2017年6月8日
(86)【国際出願番号】US2015026634
(87)【国際公開番号】WO2015171295
(87)【国際公開日】20151112
【審査請求日】2018年4月3日
(31)【優先権主張番号】14/271,812
(32)【優先日】2014年5月7日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】507364838
【氏名又は名称】クアルコム,インコーポレイテッド
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100163522
【弁理士】
【氏名又は名称】黒田 晋平
(72)【発明者】
【氏名】スレッシュ・クマール・ヴェンクマハンティ
(72)【発明者】
【氏名】スティーヴン・ロバート・シャノン
(72)【発明者】
【氏名】リン・ワン
【審査官】 漆原 孝治
(56)【参考文献】
【文献】 米国特許出願公開第2010/0146513(US,A1)
【文献】 米国特許出願公開第2013/0283277(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項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のいずれか一項に記載の方法をプロセッサに実行させるように構成されたコンピュータ実行可能命令を記憶した非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
優先権主張
本出願は、その全体が参照により本明細書に組み込まれる、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号の優先権を主張する。
【0002】
本開示の技術は一般に、クラスタプロセッサコアの性能を改善することに関する。
【背景技術】
【0003】
中央処理ユニット(CPU)などの現代のプロセッサは、コンピュータ命令を実行するためのリソースを提供する1つまたは複数のハードウェアスレッドを含む場合がある。各ハードウェアスレッドは、ハードウェアスレッドによってのみアクセス可能である専用レジスタ(非限定的な例として汎用レジスタ(GPR)、制御レジスタ、またはプログラムカウンタなど)のセットを含む場合がある。専用レジスタは、実行用にソフトウェアスレッドをホストするために、ハードウェアスレッドによって使用されてもよい。専用レジスタのコンテンツは、ハードウェアスレッドによってソフトウェアスレッドが実行されるときの、所与の時点におけるソフトウェアスレッドのステートを定義する、ソフトウェアスレッドの「状況」を互いに表し得る。
【0004】
プロセッサ内では、ハードウェアスレッドは「クラスタ」として知られるグループへと編成される場合がある。各クラスタは、1つまたは複数のハードウェアスレッドを含んでもよく、また、クラスタ内の任意のハードウェアスレッドによってアクセスすることができる共有クラスタリソースを含んでもよい。たとえば、共有クラスタリソースは、クラスタのハードウェアスレッドの各々がローテーションベースで使用し得る実行パイプラインを含んでもよい。複数のクラスタが、「クラスタプロセッサコア」へとさらに編成されてもよい。各クラスタプロセッサは、複数のクラスタによって利用され得る共通ハードウェアリソースを含んでもよい。共通ハードウェアリソースは、非限定的な例として、1つまたは複数の実行ユニット(浮動小数点ユニットおよび/もしくは算術論理ユニットなど)ならびに/またはキャッシュ(たとえばデータキャッシュ)を含んでもよい。
【0005】
いくつかの状況では、クラスタプロセッサコアの第1のクラスタが、第2のクラスタに対する準最適な負荷状態を経験する場合がある。たとえば、第1のクラスタのすべてのハードウェアスレッドが、ソフトウェアスレッドを実行し、高負荷状態下で動作している場合がある一方で、第2のクラスタ内のハードウェアスレッドが十分に利用されていない場合がある。準最適な負荷状態はまた、単一のクラスタが両方のハードウェアスレッドを実行すれば電力節約が実現され得る状況下で、第1および第2のクラスタがそれぞれハードウェアスレッドを実行している場合に生じ得る。
【0006】
準最適な負荷状態が存在することにより、結果として、クラスタプロセッサコアが準最適なパフォーマンスレベルで動作する場合がある。従来のソフトウェアベースの技術により、ソフトウェアスレッドをあるハードウェアスレッドから別のハードウェアスレッドにシフトすることが可能である。シフトプロセスは従来、オペレーティングシステムがソフトウェアスレッドのコンテキストをメモリに保存し、次いでソフトウェアスレッドを異なるハードウェアスレッドへと再ロードすることを必要とするものである。しかしながら、このプロセスは、オペレーティングシステムが、ソフトウェアスレッドをシフトすることのパフォーマンス上および/または電力消費上の恩恵を判定するために必要とされるマイクロアーキテクチャデータへのアクセスを欠く場合に、実行可能でないこともある。さらに、ソフトウェアスレッドのコンテキストをメモリに保存することは、極めて緩徐となる場合がある。
【発明の概要】
【課題を解決するための手段】
【0007】
発明を実施するための形態で開示される態様は、共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散を含む。関連する回路、方法、およびコンピュータ可読媒体も開示される。この点について、一態様では、クラスタプロセッサコアにおいてハードウェアスレッドの動的負荷分散を提供するための動的負荷分散回路が提供される。動的負荷分散回路は、クラスタプロセッサコアの第1のクラスタおよび第2のクラスタに通信可能に結合される制御ユニットを備える。制御ユニットは、準最適な負荷状態が第1のクラスタと第2のクラスタとの間に存在するかどうかを判定するように構成される。準最適な負荷状態が存在すると判定したことに応答して、制御ユニットは、第1のクラスタの第1のハードウェアスレッドおよび第2のクラスタの第2のハードウェアスレッドに通信可能に結合された共有ハードウェアリソースを介して、第1のハードウェアスレッドの1つまたは複数の専用レジスタのコンテンツを第2のハードウェアスレッドの1つまたは複数の専用レジスタに転送するようにさらに構成される。準最適な負荷状態が存在すると判定したことにさらに応答して、制御ユニットはまた、共有ハードウェアリソースを介して、第1のハードウェアスレッドと関連付けられる第1の識別子を第2のハードウェアスレッドと関連付けられる第2の識別子と交換するように構成される。このようにして、準最適な負荷状態は、共有ハードウェアリソースを介して第1のクラスタから第2のクラスタに第1のハードウェアスレッドのコンテンツを再配置することによって、効果的に解決される場合がある。
【0008】
別の態様では、クラスタプロセッサコアにおいてハードウェアスレッドの動的負荷分散を提供するための動的負荷分散回路が提供される。動的負荷分散回路は、準最適な負荷状態がクラスタプロセッサコアの第1のクラスタと第2のクラスタとの間に存在するかどうかを判定するための手段を備える。動的負荷分散回路は、準最適な負荷状態が存在すると判定したことに応答して、第1のクラスタの第1のハードウェアスレッドおよび第2のクラスタの第2のハードウェアスレッドに通信可能に結合された共有ハードウェアリソースを介して、第1のハードウェアスレッドの1つまたは複数の専用レジスタのコンテンツを第2のハードウェアスレッドの1つまたは複数の専用レジスタに転送するための手段をさらに備える。動的負荷分散回路はまた、準最適な負荷状態が存在すると判定したことに応答して、共有ハードウェアリソースを介して、第1のハードウェアスレッドと関連付けられる第1の識別子を第2のハードウェアスレッドと関連付けられる第2の識別子と交換するための手段を備える。
【0009】
別の態様では、クラスタプロセッサコアにおいてハードウェアスレッドの動的負荷分散を提供するための方法が提供される。この方法は、準最適な負荷状態がクラスタプロセッサコアの第1のクラスタと第2のクラスタとの間に存在するかどうかを判定するステップを含む。この方法は、準最適な負荷状態が存在すると判定したことに応答して、第1のクラスタの第1のハードウェアスレッドおよび第2のクラスタの第2のハードウェアスレッドに通信可能に結合された共有ハードウェアリソースを介して、第1のハードウェアスレッドの1つまたは複数の専用レジスタのコンテンツを第2のハードウェアスレッドの1つまたは複数の専用レジスタに転送するステップをさらに含む。この方法はまた、準最適な負荷状態が存在すると判定したことに応答して、共有ハードウェアリソースを介して、第1のハードウェアスレッドと関連付けられる第1の識別子を第2のハードウェアスレッドと関連付けられる第2の識別子と交換するステップを含む。
【0010】
別の態様では、プロセッサに、準最適な負荷状態がクラスタプロセッサコアの第1のクラスタと第2のクラスタとの間に存在するかどうかを判定させるためのコンピュータ実行可能命令を記憶した非一時的コンピュータ可読媒体が提供される。コンピュータ実行可能命令はさらに、プロセッサに、準最適な負荷状態が存在すると判定したことに応答して、第1のクラスタの第1のハードウェアスレッドおよび第2のクラスタの第2のハードウェアスレッドに通信可能に結合された共有ハードウェアリソースを介して、第1のハードウェアスレッドの1つまたは複数の専用レジスタのコンテンツを第2のハードウェアスレッドの1つまたは複数の専用レジスタに転送させる。コンピュータ実行可能命令はまた、プロセッサに、準最適な負荷状態が存在すると判定したことに応答して、共有ハードウェアリソースを介して、第1のハードウェアスレッドと関連付けられる第1の識別子を第2のハードウェアスレッドと関連付けられる第2の識別子と交換させる。
【図面の簡単な説明】
【0011】
図1】共有ハードウェアリソースを使用してハードウェアスレッドの負荷分散を実施するように構成された動的負荷分散回路を含む例示的なクラスタプロセッサコアのブロック図である。
図2】動的負荷分散回路による負荷分散に先立つハードウェアスレッドによるソフトウェアスレッドのホスティングを示す、図1のクラスタプロセッサコアのブロック図である。
図3】動的負荷分散回路の負荷分散動作中の通信流れを示す、図1のクラスタプロセッサコアのブロック図である。
図4】負荷分散動作が動的負荷分散回路によって完了された後のソフトウェアスレッドのホスティングを示す、図1のクラスタプロセッサコアのブロック図である。
図5】共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散のための例示的なプロセスを示すフローチャートである。
図6図1の動的負荷分散回路を含むことができる例示的なプロセッサベースシステムのブロック図である。
【発明を実施するための形態】
【0012】
ここで図面を参照しながら、本開示のいくつかの例示的な態様について説明する。「例示的」という語は、本明細書では「一例、事例、または例示としての役割を果たすこと」を意味するために使用される。「例示的」として本明細書において説明されるいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるとは限らない。
【0013】
発明を実施するための形態で開示される態様は、共有ハードウェアリソースを使用したクラスタプロセッサコアにおけるハードウェアスレッドの動的負荷分散を含む。関連する回路、方法、およびコンピュータ可読媒体も開示される。この点について、一態様では、クラスタプロセッサコアにおいてハードウェアスレッドの動的負荷分散を提供するための動的負荷分散回路が提供される。動的負荷分散回路は、クラスタプロセッサコアの第1のクラスタおよび第2のクラスタに通信可能に結合される制御ユニットを備える。制御ユニットは、準最適な負荷状態が第1のクラスタと第2のクラスタとの間に存在するかどうかを判定するように構成される。準最適な負荷状態が存在すると判定したことに応答して、制御ユニットは、第1のクラスタの第1のハードウェアスレッドおよび第2のクラスタの第2のハードウェアスレッドに通信可能に結合された共有ハードウェアリソースを介して、第1のハードウェアスレッドの1つまたは複数の専用レジスタのコンテンツを第2のハードウェアスレッドの1つまたは複数の専用レジスタに転送するようにさらに構成される。準最適な負荷状態が存在すると判定したことにさらに応答して、制御ユニットはまた、共有ハードウェアリソースを介して、第1のハードウェアスレッドと関連付けられる第1の識別子を第2のハードウェアスレッドと関連付けられる第2の識別子と交換するように構成される。このようにして、準最適な負荷状態は、共有ハードウェアリソースを介して第1のクラスタから第2のクラスタに第1のハードウェアスレッドのコンテンツを再配置することによって、効果的に解決される場合がある。
【0014】
この点について、図1は、例示的なクラスタプロセッサコア10のブロック図である。クラスタプロセッサコア10は、本明細書で開示するように、クラスタプロセッサコア10のクラスタ内のハードウェアスレッドの間に負荷分散をもたらす動的負荷分散回路12を含む。クラスタプロセッサコア10は、数ある素子の中でも、既知のデジタル論理素子、半導体回路、処理コアおよび/またはメモリ構造のいずれか1つ、またはその組合せを含む場合がある。本明細書において説明する態様は、要素の任意の特定の構成には限定されず、開示される技法は、半導体ダイまたはパッケージ上の種々の構造またはレイアウトに容易に拡張することができる。
【0015】
図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内に含んでもよいことをさらに理解されたい。
【0016】
ハードウェアスレッド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)を含むようにされてもよい。
【0017】
図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から別のクラスタに再配置することを可能にする。
【0018】
図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)の各々に交互に割り振られてもよい。
【0019】
図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を含んでもよい。
【0020】
クラスタ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を実行しているときに生じ得る。
【0021】
したがって、動的負荷分散回路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は、ソフトウェアスレッドを移動させるための従来のソフトウェアベースの技法と比較して、より迅速かつ効率的に準最適な負荷状態を解決し得る。
【0022】
準最適な負荷状態を検出した結果として生じる、図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の要素を参照する。
【0023】
図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」を有するものとして示されている。
【0024】
ソフトウェアスレッド60(0)および60(1)は現在、それらがクラスタ16(0)のそれぞれハードウェアスレッド14(0)および14(1)上で能動的に実行されていることを示す「オン」のスレッドステート(図示せず)を有していることを理解されたい。対照的に、クラスタ16(1)のハードウェアスレッド14(2)および14(3)上のソフトウェアスレッド60(2)および60(3)は、実行が現在は生じていないことを示す「オフ」のスレッドステートを有している。たとえば、ソフトウェアスレッド60(2)および60(3)の一方または両方が、キャッシュの消失または他の遅延状態の結果として停止される場合がある。
【0025】
したがって、準最適な負荷状態がクラスタ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が準最適レベルで動作することになり得る。
【0026】
図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によって示す)を発行してもよい。
【0027】
図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)に効果的に再配置される。
【0028】
専用レジスタ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が実行している物理リソースが変化したことに依然として気づかない。
【0029】
次に図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の性能が改善される。
【0030】
図2図4の例は、動的負荷分散回路12がクラスタ16全体にわたって処理負荷をより均等に分散させることを示しているが、クラスタプロセッサコア10のいくつかの態様では、電力消費量の低減が、処理パフォーマンスを改善することよりも高い優先事項であってもよい。たとえば、いくつかの態様では、動的負荷分散回路12は、2つのアクティブなハードウェアスレッド14のコンテンツ64を同じクラスタ16上に再配置することによって、クラスタプロセッサコア10のエネルギー消費量の潜在的な低減を検出してもよい。そうすることにより、動的負荷分散回路12は、クラスタプロセッサコア10がクラスタ16のうちの1つを停止して節電を実現することを可能にしてもよい。
【0031】
共有ハードウェアリソース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)。
【0032】
制御ユニット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)。
【0033】
本明細書において開示される態様による動的負荷分散回路12は任意のプロセッサベースデバイスに設けられるか、または組み込まれる。例として、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定位置データユニット、モバイル位置データユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
【0034】
この点について、図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にバストランザクション要求を通信し得る。
【0035】
他のマスタおよびスレーブデバイスがシステムバス106に接続され得る。図6に示すように、これらのデバイスは、例として、メモリコントローラ112、1つまたは複数の入力デバイス114、1つまたは複数の出力デバイス116、1つまたは複数のネットワークインターフェースデバイス118、および1つまたは複数のディスプレイコントローラ120を含み得る。入力デバイス114は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含み得る。出力デバイス116は、限定はしないが、音声、ビデオ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含み得る。ネットワークインターフェースデバイス118は、ネットワーク122との間でのデータ交換を可能にするように構成される任意のデバイスであり得る。ネットワーク122は、限定はしないが、ワイヤードまたはワイヤレスネットワーク、プライベートまたは公衆ネットワーク、エリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、およびインターネットを含む任意のタイプのネットワークであり得る。ネットワークインターフェースデバイス118は、所望の任意のタイプの通信プロトコルをサポートするように構成され得る。
【0036】
また、CPU100は、1つまたは複数のディスプレイ124に送られる情報を制御するために、システムバス106を介してディスプレイコントローラ120にアクセスするように構成されてもよい。ディスプレイコントローラ120は、1つまたは複数のビデオプロセッサ126を介して表示される情報をディスプレイ124に送り、ビデオプロセッサ126は、表示される情報を、ディスプレイ124に適したフォーマットとなるように処理する。ディスプレイ124としては、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含むがそれらに限定されない、任意のタイプのディスプレイがあり得る。
【0037】
本明細書において開示される態様に関して説明される種々の例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子ハードウェア、メモリもしくは別のコンピュータ可読媒体に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令、または両方の組合せとして実現できることを、当業者はさらに理解されよう。本明細書において説明されるマスタおよびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて利用されてよい。本明細書において開示されるメモリは、任意のタイプおよびサイズのメモリであってよく、また、任意のタイプの所望の情報を記憶するように構成されてよい。このような互換性を明確に例示するために、種々の例示的な構成要素、ブロック、モジュール、回路、およびステップが、概してその機能に関して説明されてきた。そのような機能がどのように実現されるかは、特定の用途、設計上の選択、および/または、システム全体に課された設計上の制約によって決まる。当業者は、説明された機能を特定の適用例ごとに様々な方法で実施することができるが、そのような実施態様の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【0038】
本明細書において開示される態様に関して説明される種々の例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書において説明される機能を実行するように設計されたそれらの任意の組合せにおいて実現または実行され得る。プロセッサはマイクロプロセッサであり得るが、代替実施形態では、プロセッサは、任意の従来型プロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえばDSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、1つまたは複数のマイクロプロセッサとDSPコア、あるいは任意の他のそのような構成として実装され得る。
【0039】
本明細書において開示される態様は、ハードウェアにおいて、また、ハードウェアに記憶された命令において具現される場合があり、命令は、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野において知られている任意の他の形態のコンピュータ可読媒体内に存在することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替実施形態では、記憶媒体は、プロセッサと一体であってよい。プロセッサおよび記憶媒体はASICに存在してもよい。ASICはリモート局に存在してもよい。代替として、プロセッサおよび記憶媒体は、個別構成要素として、リモート局、基地局、またはサーバに存在してもよい。
【0040】
本明細書の例示的な態様のいずれかにおいて説明された動作ステップは、例および考察を提供するために説明されることにも留意されたい。説明される動作は、図示されるシーケンス以外の多数の異なるシーケンスにおいて実行することができる。さらに、単一の動作ステップにおいて記載される動作が、実際にはいくつかの異なるステップにおいて実行される場合もある。さらに、例示的態様において論じられる1つまたは複数の動作ステップが組み合わせられる場合がある。フローチャート図において図示した動作ステップは、当業者に容易に明らかとなるような多くの異なる修正を受けてもよいことを理解されたい。当業者はまた、情報および信号が様々な異なる技術および技法のいずれかを使用して表されてもよいことを理解するであろう。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表すことができる。
【0041】
本開示の前述の説明は、いかなる当業者も本開示を作製または使用できるようにするために与えられる。本開示に対する様々な修正は、当業者に容易に明らかになり、本明細書で定義する一般原理は、本開示の趣旨または範囲を逸脱することなく、他の変形形態に適用され得る。したがって、本開示は、本明細書において説明した例および設計に限定されるものではなく、本明細書において開示される原理および新規な特徴に合致する最も広い範囲を与えられるべきである。
【符号の説明】
【0042】
10 クラスタプロセッサコア
12 動的負荷分散回路
16 クラスタ
18 専用レジスタ
26 識別子
28 共有クラスタリソース
38 共有ハードウェアリソース
52 制御ユニット
図1
図2
図3
図4
図5
図6