(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-09
(54)【発明の名称】相互接続されたイベントカウンタ及び加重和アキュムレータを使用してプロセッサにおける電力消費を制御するためのシステム及び方法
(51)【国際特許分類】
G06F 15/78 20060101AFI20240702BHJP
【FI】
G06F15/78 517
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023579028
(86)(22)【出願日】2022-06-17
(85)【翻訳文提出日】2024-01-29
(86)【国際出願番号】 US2022034061
(87)【国際公開番号】W WO2022271565
(87)【国際公開日】2022-12-29
(32)【優先日】2021-06-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】リチャード マーティン ボーン
(72)【発明者】
【氏名】ゴクール サブラマーニ ラマリンガム ラクシュミ デビ
(72)【発明者】
【氏名】マイケル エル. ゴールデン
(72)【発明者】
【氏名】ラリー ディー. ヒューイット
【テーマコード(参考)】
5B062
【Fターム(参考)】
5B062AA05
5B062CC04
5B062DD01
5B062DD06
5B062HH02
5B062HH04
5B062HH06
5B062JJ06
(57)【要約】
複数の処理コアの改善された電力消費制御を容易にするための方法及びシステムが開示される。本方法は、決定された過剰電力消費に基づいて電力スロットリングを実行することによって、電力消費制御を改善する。本方法は、各処理コア内の少なくとも1つのイベントカウントコンポーネントを使用して、複数の分散イベントを監視することと、イベントカウントコンポーネントから分散イベントの累積加重和を計算することと、累積加重和を閾値電力値と比較することによって過剰電力消費を決定することと、決定された過剰電力消費に基づいて各処理コアの電力消費を調整することと、の各ステップを含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
少なくとも1つの実行ユニットを有する処理システムであって、
各実行ユニットは、
少なくとも1つの第1のイベントカウントコンポーネントと、
前記第1のイベントカウントコンポーネントに結合された第1のマスタ累積コンポーネントと、を備え、
前記第1のイベントカウントコンポーネントは、
前記実行ユニットにおける複数の分散イベントを監視することと、
前記複数の分散イベントの累積加重和を計算することと、
を行うように構成されており、
前記第1のマスタ累積コンポーネントは、
前記累積加重和を閾値電力値と比較することによって過剰電力消費を決定することと、
決定された前記過剰電力消費に基づいて、各実行ユニットの電力消費を調整することと、
を行うように構成されている、
処理システム。
【請求項2】
前記閾値電力値は、短期電力使用閾値又は長期電力使用閾値のうち何れかから選択可能であり、
前記第1のマスタ累積コンポーネントは、前記累積加重和を前記短期電力使用閾値と比較するように構成された第1の論理コンポーネントと、前記累積加重和を前記長期電力使用閾値と比較するように構成された第2の論理コンポーネントと、を備え、
前記第1の論理コンポーネントは、前記第2の論理コンポーネントが前記累積加重和を前記長期電力使用閾値と比較するのと同時に、前記累積加重和を前記短期電力使用閾値と比較するように構成されている、
請求項1の処理システム。
【請求項3】
前記少なくとも1つの実行ユニットに結合された少なくとも1つのプロセッサエンジンを備え、
各プロセッサエンジンは、
前記第1のマスタ累積コンポーネントと動作可能に結合された第1のスレーブインターフェースであって、前記第1のマスタ累積コンポーネントから前記累積加重和を受信するように構成された第1のスレーブインターフェースと、
少なくとも1つの第2のイベントカウントコンポーネントと、
第2のマスタ累積コンポーネントと、を備え、
前記第2のイベントカウントコンポーネントは、
前記第1のスレーブインターフェースから前記累積加重和を受信することと、
前記プロセッサエンジン内の複数の分散イベントを監視することと、
前記第1のマスタ累積コンポーネントからの前記累積加重和を含む、前記分散イベントの第2の累積加重和を計算することと、
を行うように構成されており、
前記第2のマスタ累積コンポーネントは、
前記第2の累積加重和に基づいて前記実行ユニット及び前記エンジンの総電力消費を決定することと、
前記総電力消費と前記閾値電力値とを比較することによって前記過剰電力消費を決定することと、
決定された前記過剰電力消費に基づいて、各実行ユニット又は前記プロセッサエンジンの電力消費を調整することと、
を行うように構成されている、
請求項1の処理システム。
【請求項4】
前記第2のマスタ累積コンポーネントは、前記累積加重和を前記短期電力使用閾値と比較するように構成された第1の論理コンポーネントと、前記累積加重和を前記長期電力使用閾値と比較するように構成された第2の論理コンポーネントと、を備える、
請求項3の処理システム。
【請求項5】
複数のプロセッサエンジンと、前記複数のプロセッサエンジンに結合されたキャッシュメモリと、を備え、
前記キャッシュメモリは、
前記第2のマスタ累積コンポーネントと動作可能に結合された第2のスレーブインターフェースであって、前記第2のマスタ累積コンポーネントから前記総電力消費を受信するように構成された第2のスレーブインターフェースと、
少なくとも1つの第3のイベントカウントコンポーネントと、
第3のマスタ累積コンポーネントと、を備え、
前記第3のイベントカウントコンポーネントは、
前記第2のスレーブインターフェースから前記総電力消費を受信することと、
前記キャッシュメモリ内の複数の分散イベントを監視することと、
前記第1のマスタ累積コンポーネントからの前記累積加重和と、前記第2のマスタ累算コンポーネントからの前記総電力消費と、を含む前記分散イベントの第3の累積加重和を計算することと、
を行うように構成されており、
前記第3のマスタ累積コンポーネントは
前記第3の累積加重和に基づいて前記キャッシュメモリの第2の総電力消費を決定することと、
前記第2の総電力消費を前記閾値電力値と比較することによって前記過剰電力消費を決定することと、
決定された前記過剰電力消費に基づいて、各実行ユニット、前記プロセッサエンジン又は前記キャッシュメモリの電力消費を調整することと、
を行うように構成されている、
請求項3の処理システム。
【請求項6】
前記第3のマスタ累積コンポーネントは、前記累積加重和を前記短期電力使用閾値と比較するように構成された第1の論理コンポーネントと、前記累積加重和を前記長期電力使用閾値と比較するように構成された第2の論理コンポーネントと、を備える、
請求項5の処理システム。
【請求項7】
前記第3のマスタ累積コンポーネントに結合され、決定された前記過剰電力消費に基づいて、前記少なくとも1つの実行ユニット、前記少なくとも1つのプロセッサエンジン又は前記キャッシュメモリのうち1つ以上に電力スロットリング信号を送ることによって前記電力消費を調整するように構成されたアービタを備える、
請求項5の処理システム。
【請求項8】
前記電力スロットリング信号は、(a)前記少なくとも1つの実行ユニット、前記少なくとも1つのプロセッサエンジン又は前記キャッシュメモリのうち1つ以上のサイクル当たりの命令(IPC)の低減を、前記過剰電力消費に基づいて引き起こすか、又は、(b)前記少なくとも1つの実行ユニット、前記少なくとも1つのプロセッサエンジン又は前記キャッシュメモリのうち1つ以上に対して、前記過剰電力消費に基づいて送られるパルス幅変調(PWM)スロットル信号である、
請求項7の処理システム。
【請求項9】
複数の第1のイベントカウントコンポーネント、第2のイベントカウントコンポーネント及び/又は第3のイベントカウントコンポーネントを備え、イベントカウントコンポーネントの各セットは、少なくとも1つのリングバスを介して相互接続されている、
請求項5の処理システム。
【請求項10】
複数の処理コアによって共有されるように構成されたキャッシュメモリと動作可能に結合されたメモリコントローラであって、
各処理コアは、実行ユニットと、プロセッサエンジンと、を備え、
前記メモリコントローラは、
各処理コアに対して、
前記実行ユニット内の複数の分散イベントを監視させ、
少なくとも1つの第1のイベントカウントコンポーネントを使用して前記分散イベントの累積加重和を計算させ、
前記累積加重和を閾値電力値と比較することによって過剰電力消費を決定させ、
第1のマスタ累積コンポーネントを使用して、決定された前記過剰電力消費に基づいて、前記実行ユニットの電力消費を調整させるように構成されている、
メモリコントローラ。
【請求項11】
前記閾値電力値は、短期電力使用閾値又は長期電力使用閾値のうち何れかから選択可能であり、
前記メモリコントローラは、各処理コアに対して、前記累積加重和を前記短期電力使用閾値と比較させると同時に、前記累積加重和を前記長期電力使用閾値と比較させるように構成されており、
前記メモリコントローラは、各処理コアに対して、前記累積加重和を前記短期電力使用閾値と比較させると同時に、前記累積加重和を前記長期電力使用閾値と比較させるように構成されている、
請求項10のメモリコントローラ。
【請求項12】
各処理コアに対して、
前記第1のマスタ累算コンポーネントと動作可能に結合された第1のスレーブインターフェースを使用して、前記第1のマスタ累算コンポーネントから累積加重和を受信させ、
前記第1のスレーブインターフェースから累積加重和を受信させ、
前記プロセッサエンジン内の複数の分散イベントを監視させ、
少なくとも1つの第2のイベントカウントコンポーネントを使用して、前記第1のマスタ累積コンポーネントからの前記累積加重和を含む前記分散イベントの第2の累積加重和を計算させ、
前記第2の累積加重和に基づいて、前記実行ユニット及び前記プロセッサエンジンの総電力消費を決定させ、
前記総電力消費を前記閾値電力値と比較することによって前記過剰電力消費を決定させ、
第2のマスタ累算コンポーネントを使用して、決定された前記過剰電力消費に基づいて、前記実行ユニット又は前記プロセッサエンジンの電力消費を調整させるように構成されている、
請求項10のメモリコントローラ。
【請求項13】
前記第2のマスタ累積コンポーネントと動作可能に結合された第2のスレーブインターフェースを使用して、前記第2のマスタ累積コンポーネントから前記第2の累積加重和を受信することと、
前記第2のスレーブインターフェースから前記総電力消費を受信し、前記キャッシュメモリ内の複数の分散イベントを監視することと、
少なくとも1つの第3のイベントカウントコンポーネントを使用して、前記第1のマスタ累積コンポーネントからの前記累積加重和と、前記第2のマスタ累積コンポーネントからの前記総電力消費と、を含む前記分散イベントの第3の累積加重和を計算することと、
前記第3の累積加重和に基づいて、前記キャッシュメモリの第2の総電力消費を決定することと、
前記第2の総電力消費を前記閾値電力値と比較することによって前記過剰電力消費を決定することと、
第3のマスタ累積コンポーネントを使用して、決定された前記過剰電力消費に基づいて、各実行ユニット、前記プロセッサエンジン又は前記キャッシュメモリの電力消費を調整することと、
を行うように構成されている、
請求項12のメモリコントローラ。
【請求項14】
前記メモリコントローラは、決定された前記過剰電力消費に基づいて、前記少なくとも1つの実行ユニット、前記少なくとも1つのプロセッサエンジン又は前記キャッシュメモリのうち1つ以上に電力スロットリング信号を送ることによって、前記第3のマスタ累積コンポーネントに結合されたアービタに前記電力消費を調整させるように構成されており、
前記電力スロットリング信号は、(a)前記少なくとも1つの実行ユニット、前記少なくとも1つのプロセッサエンジン又は前記キャッシュメモリのうち1つ以上のサイクル当たりの命令(IPC)の低減を、前記過剰電力消費に基づいて引き起こすか、又は、(b)前記少なくとも1つの実行ユニット、前記少なくとも1つのプロセッサエンジン又は前記キャッシュメモリのうち1つ以上に対して、前記過剰電力消費に基づいて送られるパルス幅変調(PWM)スロットル信号である、
請求項13のメモリコントローラ。
【請求項15】
複数の第1のイベントカウントコンポーネント、第2のイベントカウントコンポーネント及び/又は第3のイベントカウントコンポーネントに結合されており、
イベントカウントコンポーネントの各は、少なくとも1つのリングバスを介して相互接続されている、
請求項13のメモリコントローラ。
【請求項16】
複数の処理コアの電力消費を制御する方法であって、
少なくとも1つのイベントカウントコンポーネントを使用して、各処理コア内で発生する複数の分散イベントを監視することと、
前記イベントカウントコンポーネントから前記複数の分散イベントの累積加重和を計算することと、
前記累積加重和を閾値電力値と比較することによって、前記各処理コアによる過剰電力消費を決定することと、
決定された前記過剰電力消費に基づいて、前記各処理コアの電力消費を調整することと、を含む、
方法。
【請求項17】
前記閾値電力値は、短期電力使用閾値又は長期電力使用閾値のうち何れかから選択可能であり、
前記複数の分散イベントは、前記各処理コアの実行ユニット上で監視され、
前記各処理コアの電力消費を調整することは、前記各処理コアの実行ユニットに対して電力スロットリングを実行することを含む、
請求項16の方法。
【請求項18】
前記複数の分散イベントは、複数のイベントカウントコンポーネントを使用して前記各処理コアのプロセッサエンジン上で監視され、
前記各処理コアの電力消費を調整することは、前記プロセッサエンジンに対して電力スロットリングを実行することを含み、
前記方法は、
前記複数のイベントカウントコンポーネントから前記累積加重和を集計することによって、前記実行ユニット及び前記プロセッサエンジンの総電力消費を決定することと、
前記総加重和を前記閾値電力値と比較することによって、前記過剰電力消費を決定することと、を含み、
前記実行ユニット及び前記プロセッサエンジン内の前記複数のイベントカウントコンポーネントは、少なくとも1つのリングバスを介して相互接続可能に結合されている、
請求項16の方法。
【請求項19】
前記複数の分散イベントは、前記イベントカウントコンポーネントを使用して、前記各処理コアによって共有されるキャッシュメモリ上で監視され、
前記各処理コアの電力消費を調整することは、前記共有されるキャッシュメモリに対して電力スロットリングを実行することを含み、
前記方法は、
前記各処理コアの全てからの前記総電力消費を集計することによって、前記実行ユニット、前記プロセッサエンジン及び前記共有キャッシュメモリについての第2の総電力消費を決定することと、
前記第2の総加重和を前記閾値電力値と比較することによって前記過剰電力消費を決定することと、を含み、
前記実行ユニット内の前記複数のイベントカウントコンポーネント、前記プロセッサエンジン及び前記共有キャッシュメモリは、複数のリングバスを介して相互接続可能に結合されている、
請求項18の方法。
【請求項20】
前記電力消費の決定された低減に基づいて、電力スロットリング信号を前記各処理コアに送信することを含み、
(a)前記電力スロットリング信号は、前記各処理コアの前記過剰電力消費に基づいて前記各処理コアのサイクル当たりの命令(IPC)の低減を引き起こすか、又は、前記電力スロットリング信号は、前記各処理コアの前記過剰電力消費に基づいて前記各処理コアに送信されるパルス幅変調(PWM)スロットル信号である、
請求項19の方法。
【発明の詳細な説明】
【背景技術】
【0001】
相補型金属酸化膜半導体(CMOS)集積回路において、電力消費を調整するために、現代のマイクロプロセッサは、「P状態」を使用する動的電力管理を採用している。P状態は、電圧と周波数の組み合わせである。オペレーティングシステム(OS)は、現在のタスクを完了する周波数を決定し、オンチップ電力状態コントローラに、それに応じてクロック周波数及び動作電圧を設定させる。例えば、平均して、マイクロプロセッサが頻繁に利用される場合、OSは、周波数が増加されるべきであると決定し得る。一方、平均してマイクロプロセッサが軽く利用されている場合、OSは周波数を下げるべきであると決定することができる。利用可能な周波数及びそれらの周波数における適切な動作のための対応する電圧は、P状態テーブルに記憶される。動作周波数が増加するにつれて、対応する電源電圧も増加するが、適切な動作を保証しながら電圧を低く保つことが重要である。
【0002】
プロセッサコアは、性能カウンタを使用して、コアを通じた命令実行及びデータ移動に関連する特定のイベントの処理電力測定を行うことができる。具体的には、デジタル電力モニタ(DPM)は、対応する時間期間にわたってコア又はコアのグループ内の特定のイベントを測定するためにイベントカウンタを使用し、その時間期間中にコアによって消費される電力を計算するためにそれらを使用し得る。次いで、その計算された電力を、コア又はコアのグループの熱設計電流(TDC)限界と比較することができる。加えて、電気設計電流(EDC)モニタは、コア又はコアのグループによって引き込まれる電流を計算し、それをそのコア又はコアのグループのEDC限界と比較するために、イベントカウンタを使用し得る。
【0003】
集積回路は、異なる時間枠に関連付けられた2つの個別の機構であるので、TDC及びEDCに関する性能監視の個別の実行又は反復を完了する必要がある。TDCは、例えば、ミリ秒単位で測定される熱的に有意な時間枠にわたって持続可能な最大電流であり、一方、EDCは、マイクロ秒単位で測定されるはるかに短い熱的に有意でない時間枠にわたって持続可能な最大電流である。時間枠の異なるスケールを考慮して、これらの制約に対して個別の実行を完了することは、時間及びコンピューティングリソースを要するので、性能監視の単一の実行が十分であるように、それらを一緒に組み合わせる必要がある。
【0004】
実施形態は、同様の符号が同様の要素を表す以下の図を伴う場合に、以下の説明を考慮してより容易に理解されるであろう。
【図面の簡単な説明】
【0005】
【
図1】本明細書で開示される実施形態による、マルチプロセッサコアシステムの例示的な機能ブロック図である。
【
図2】本明細書に開示される実施形態による、
図1のシステムにおいて実装されるイベントカウント論理コンポーネントのサブコンポーネントの例示的な機能ブロック図である。
【
図3】本明細書で開示される実施形態による、
図1のシステムにおいて実装されるコア及び共有(L3)キャッシュのサブコンポーネントの例示的な機能ブロック図である。
【
図4】本明細書に開示される実施形態による、
図1のシステム内のコアから共有キャッシュへのデータフローの例示的な機能ブロック図である。
【
図5】本明細書に開示される実施形態による、
図2からのイベントカウント論理コンポーネントのサブコンポーネントの例示的な機能ブロック図である。
【
図6】本明細書に開示される実施形態による、システムにおいて実施されるプロセスの例示的フロー図である。
【
図7】本明細書に開示される実施形態による、システムにおいて実装されるような実行ユニット及びプロセッサエンジンに対応する加重和累算(weighted sum accumulation)を伴うプロセスの例示的なフロー図である。
【
図8】本明細書に開示される実施形態による、システムにおいて実施されるような、実行ユニット、プロセッサエンジン及び共有メモリに対応する加重和累算を伴うプロセスの例示的フロー図である。
【発明を実施するための形態】
【0006】
簡潔に言えば、システム及び方法は、過剰電力消費を有するそれぞれの処理コアの電力消費を調整することによって、複数の処理コアの改善された電力消費制御を容易にする。具体的には、複数の処理コアの電力消費を制御する方法は、少なくとも1つのイベントカウントコンポーネントを使用して、複数の分散イベント(distributed events)を監視することと、イベントカウントコンポーネントから分散イベントの累積加重和(accumulated weighted sum)を計算することと、累積加重和を閾値電力値と比較することによって過剰電力消費を決定することと、決定された過剰電力消費に基づいてそれぞれの処理コアの電力消費を調整することと、のステップを含む。閾値電力値は、短期電力使用閾値又は長期電力使用閾値のうち何れかから選択可能である。
【0007】
いくつかの例では、本方法は、累積加重和を短期電力使用閾値(short-term power usage threshold)と比較することと、累積加重和を長期電力使用閾値(long-term power usage threshold)と比較することと、を同時に行うことを含む。いくつかの例では、電力消費は、過剰電力消費を有するそれぞれの処理コアのための電力スロットル制御信号を生成することによって調整される。いくつかの例では、分散イベントは、それぞれの処理コアの実行ユニット上で監視され、電力消費は、それぞれの処理コアの実行ユニットに対して電力スロットリングを実行することによって調整される。いくつかの例では、分散イベントは、複数のイベントカウントコンポーネントを使用してそれぞれの処理コアのプロセッサエンジン上で更に監視され、電力消費は、プロセッサエンジンのための電力スロットリングを実行することによって調整される。そのような例では、本方法は、複数のイベントカウントコンポーネントからの累積加重和を集計することによって、実行ユニット及びプロセッサエンジンに関する総電力消費を決定することと、総加重和を閾値電力値と比較することによって、過剰電力消費(excess power consumption)を決定することと、のステップを更に含む。
【0008】
いくつかの例では、実行ユニット及びプロセッサエンジン内の複数のイベントカウントコンポーネントは、少なくとも1つのリングバスを介して相互接続的に結合される。上記に加えていくつかの例では、分散イベントは、イベントカウントコンポーネントを使用して処理コアによって共有されるキャッシュメモリ上で更に監視され、電力消費は、共有キャッシュメモリに対して電力スロットリングを実行することによって調整される。そのような例における方法は、処理コアの全てからの総電力消費を集計することによって、実行ユニット、プロセッサエンジン及び共有キャッシュメモリのための第2の総電力消費を決定することと、第2の総加重和を閾値電力値と比較することによって、過剰電力消費を決定することと、のステップを更に含む。
【0009】
いくつかの例では、実行ユニット内の複数のイベントカウントコンポーネント、プロセッサエンジン及び共有キャッシュメモリは、複数のリングバスを介して相互接続的に結合される。いくつかの例では、方法は、決定された過剰電力消費に基づいて、電力スロットリング信号をそれぞれの処理コアに送信するステップを更に含む。いくつかの例では、電力スロットリング信号は、それぞれの処理コアの過剰電力消費に基づいて、それぞれの処理コアのサイクル当たりの命令(IPC)の低減を引き起こす。いくつかの例では、電力スロットリング信号は、それぞれの処理コアの過剰電力消費に基づいてそれぞれの処理コアに送られるパルス幅変調(PWM)スロットル信号である。いくつかの例では、実行ユニットは浮動小数点ユニットである。
【0010】
特定の実施形態によれば、少なくとも1つの処理コアの電力消費を制御するための処理システムは、少なくとも1つの実行ユニットを含む。実行ユニットは、少なくとも1つの第1のイベントカウントコンポーネントと、第1のイベントカウントコンポーネントに結合された第1のマスタ累積コンポーネントと、を含む。第1のイベントカウントコンポーネントは、実行ユニット内の複数の分散イベントを監視し、分散イベントの累積加重和を計算する。第1のマスタ累積コンポーネントは、累積加重和を閾値電力値と比較することによって過剰電力消費を決定し、決定された過剰電力消費に基づいて実行ユニットの電力消費を調整する。閾値電力値は、短期電力使用閾値又は長期電力使用閾値のうち何れから選択可能である。第1のマスタ累積コンポーネントは、累積加重和を短期電力使用閾値と比較する第1の論理コンポーネントと、累積加重和を長期電力使用閾値と比較する第2の論理コンポーネントと、を含む。
【0011】
いくつかの例では、第1の論理コンポーネントは、第2の論理コンポーネントが累積加重和を長期電力使用閾値と比較するのと同時に、累積加重和を短期電力使用閾値と比較する。いくつかの例では、処理システムは、実行ユニット内の複数の第1のイベントカウントコンポーネントと、複数の第1のイベントカウントコンポーネントが相互接続されるように複数の第1のイベントカウントコンポーネントに動作可能に結合された少なくとも1つのリングバスと、を更に含む。
【0012】
いくつかの実施形態では、処理システムは、少なくとも1つの実行ユニットに結合された少なくとも1つのプロセッサエンジンを更に含む。プロセッサエンジンは、第1のマスタ累積コンポーネントと動作可能に結合された第1のスレーブインターフェースと、少なくとも1つの第2のイベントカウントコンポーネントと、第2のマスタ累積コンポーネントと、を含む。第1のスレーブインターフェースは、第1のマスタ累積コンポーネントから累積加重和を受信する。第2のイベントカウントコンポーネントは、第1のスレーブインターフェースから累積加重和を受信し、プロセッサエンジン内の複数の分散イベントを監視し、第1のマスタ累積コンポーネントからの累積加重和を含む分散イベントの第2の累積加重和を計算する。第2のマスタ累積コンポーネントは、第2の累積加重和に基づいて実行ユニット及びエンジンの総電力消費を決定し、総電力消費を閾値電力値と比較することによって過剰電力消費を決定し、決定された過剰電力消費に基づいて実行ユニット又はプロセッサエンジンの電力消費を調整する。第2のマスタ累積コンポーネントは、累積加重和を短期電力使用閾値と比較するための第1の論理コンポーネントと、累積加重和を長期電力使用閾値と比較するための第2の論理コンポーネントと、を更に含む。
【0013】
いくつかの例では、処理システムは、プロセッサエンジン内の複数の第2のイベントカウントコンポーネントと、複数の第2のイベントカウントコンポーネントが相互接続されるように複数の第2のイベントカウントコンポーネントに動作可能に結合された少なくとも1つのリングバスと、を更に含む。
【0014】
いくつかの実施形態では、処理システムは、複数のプロセッサエンジンと、複数のプロセッサエンジンに結合されたキャッシュメモリと、を更に含む。キャッシュメモリは、第2のマスタ累積コンポーネントと動作可能に結合された第2のスレーブインターフェースと、少なくとも1つの第3のイベントカウントコンポーネントと、第3のマスタ累積コンポーネントと、を含む。第2のスレーブインターフェースは、第2のマスタ累積コンポーネントから総電力消費を受信する。第3のイベントカウントコンポーネントは、第2のスレーブインターフェースから総電力消費を受信し、キャッシュメモリ内の複数の分散イベントを監視し、第1のマスタ累積コンポーネントからの累積加重和と第2のマスタ累積コンポーネントからの総電力消費とを含む分散イベントの第3の累積加重和を計算する。第3のマスタ累積コンポーネントは、第3の累積加重和に基づいてキャッシュメモリの第2の総電力消費を決定し、第2の総電力消費を閾値電力値と比較することによって過剰電力消費を決定し、決定された過剰電力消費に基づいて実行ユニット、プロセッサエンジン又はキャッシュメモリの電力消費を調整する。第3のマスタ累積コンポーネントは、累積加重和を短期電力使用閾値と比較するための第1の論理コンポーネントと、累積加重和を長期電力使用閾値と比較するための第2の論理コンポーネントと、を更に含む。
【0015】
いくつかの例では、処理システムは、第3のマスタ累積コンポーネントに結合されたアービタを更に含む。アービタは、決定された過剰電力消費に基づいて、少なくとも1つの実行ユニット、少なくとも1つのプロセッサエンジン又はキャッシュメモリのうちの1つ以上に電力スロットリング信号を送るように構成されている。
【0016】
いくつかの例では、電力スロットリング信号は、その中の過剰電力消費に基づいて、少なくとも1つの実行ユニット、少なくとも1つのプロセッサエンジン又はキャッシュメモリのうち1つ以上のサイクル当たりの命令(IPC)の低減を引き起こす。いくつかの例では、電力スロットリング信号は、その中の過剰電力消費に基づいて、少なくとも1つの実行ユニット、少なくとも1つのプロセッサエンジン又はキャッシュメモリのうち1つ以上に送られるパルス幅変調(PWM)スロットル信号である。いくつかの例では、実行ユニットは浮動小数点ユニットである。
【0017】
特定の実施形態によれば、複数の処理コアによって共有されるように構成されたキャッシュメモリと動作可能に結合されたメモリコントローラは、本明細書で開示するプロセスを実行するように構成され、各処理コアは実行ユニットとプロセッサエンジンとを含む。すなわち、メモリコントローラは、処理コアの各々に、実行ユニット内の複数の分散イベントを監視させ、少なくとも1つの第1のイベントカウントコンポーネントを使用して分散イベントの累積加重和を計算させ、累積加重和を閾値電力値と比較することによって過剰電力消費を決定させ、第1のマスタ累積コンポーネントを使用して、決定された過剰電力消費に基づいて実行ユニットの電力消費を調整させる。閾値電力値は、短期電力使用閾値又は長期電力使用閾値のうち何れかから選択可能である。
【0018】
いくつかの例では、メモリコントローラは、それぞれの処理コアに、累積加重和を短期電力使用閾値と同時に比較させ、累積加重和を長期電力使用閾値と同時に比較させる。いくつかの例では、メモリコントローラは、処理コアの各々に、第1のマスタ累積コンポーネントと動作可能に結合された第1のスレーブインターフェースを使用して第1のマスタ累積コンポーネントから累積加重和を受信させ、第1のスレーブインターフェースから累積加重和を受信させ、プロセッサエンジン内の複数の分散イベントを監視させ、少なくとも1つの第2のイベントカウントコンポーネントを使用して第1のマスタ累積コンポーネントからの累積加重和を含む分散イベントの第2の累積加重和を計算させ、第2の累積加重和に基づいて実行ユニット及びエンジンの総電力消費を決定させ、総電力消費を閾値電力値と比較することによって過剰電力消費を決定させ、決定された過剰電力消費に基づいて第2のマスタ累積コンポーネントを使用して実行ユニット又はプロセッサエンジンの電力消費を調整させる。
【0019】
いくつかの例では、メモリコントローラは、第2のマスタ累積コンポーネントと動作可能に結合された第2のスレーブインターフェースを使用して、第2のマスタ累積コンポーネントから総電力消費を受信し、第2のスレーブインターフェースから総電力消費を受信し、キャッシュメモリ内の複数の分散イベントを監視し、少なくとも1つの第3のイベントカウントコンポーネントを使用して、第1のマスタ累積コンポーネントからの累積加重和と第2のマスタ累算コンポーネントからの累積電力消費とを含む分散イベントの第3の累積加重和を計算し、第3の累積加重和に基づいてキャッシュメモリの第2の総電力消費を決定し、第2の総電力消費を閾値電力値と比較することによって過剰電力消費を決定し、第3のマスタ累算コンポーネントを使用して、決定された過剰電力消費に基づいて、実行ユニット、プロセッサエンジン又はキャッシュメモリの電力消費を調整する。
【0020】
いくつかの例では、メモリコントローラは、第3のマスタ累積コンポーネントに結合されたアービタに、決定された過剰電力消費を受信させ、決定された過剰電力消費に基づいて、少なくとも1つの実行ユニット、少なくとも1つのプロセッサエンジン又はキャッシュメモリのうち1つ以上に電力スロットリング信号を送信させる。いくつかの例では、電力スロットリング信号は、その中の過剰電力消費に基づく、少なくとも1つの実行ユニット、少なくとも1つのプロセッサエンジン又はキャッシュメモリのうち1つ以上のサイクル当たり命令(IPC)低減信号であり得る。いくつかの例では、電力スロットリング信号は、その中の過剰電力消費に基づいて、少なくとも1つの実行ユニット、少なくとも1つのプロセッサエンジン又はキャッシュメモリのうち1つ以上に送られるパルス幅変調(PWM)スロットル信号であり得る。
【0021】
以下の説明では、本明細書に提示される方法及び機構の十分な理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、当業者は、様々な実施形態がこれらの具体的な詳細なしに実施され得ることを認識すべきである。いくつかの例では、本明細書において説明されるアプローチを不明瞭にすることを避けるために、周知の構造、コンポーネント、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素は必ずしも縮尺どおりに描かれているわけではないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張されている場合がある。
【0022】
図1は、本明細書で開示される実施形態による、例示的なマルチプロセッサコアシステム100の高レベル図を示している。システム100は、複数のN+1個のコア(コア0からコアNまで)を含み、各コアは、システムバス等のデータ通信バス103を介してL3キャッシュ等の共有キャッシュメモリ104に結合されており、コア102及び共有キャッシュ104との間で情報を送信する。コア102及び共有キャッシュ104は、クロック及びノースブリッジ(図示せず)への接続のためのインターフェースを有する共通のダイ上に配置されている。ノースブリッジは、1つ以上の状態機械、プログラマブルプロセッサ及び/又はソフトウェア命令を実行するプロセッサと1つ以上の状態機械との組み合わせ等の任意の適切な方法で実装され得るメモリコントローラ128を含み得る。
【0023】
各コア102は、図示されるような浮動小数点ユニット又は任意の他の適切なタイプの実行ユニットであり得る実行ユニット106を含む。また、コア102は、エンジン108、L2キャッシュ等のキャッシュメモリ110、イベントカウント論理コンポーネント112、及び、マスタ累積論理コンポーネント114を含む。共有キャッシュ104は、コア102内のマスタ累積論理コンポーネント114の各々、並びに、それ自体のイベントカウント論理コンポーネント118及びマスタ累積論理コンポーネント120と結合されるスレーブインターフェース116を含む。更に、各実行ユニット106は、それ自体のイベントカウント論理コンポーネント122及びマスタ累積論理コンポーネント124を含む。また、エンジン108は、実行ユニット106のマスタ累積論理コンポーネント124に結合された、それ自体のスレーブインターフェース126を有する。
【0024】
上記の論理コンポーネント(すなわち、イベントカウント論理コンポーネント及びマスタ累積論理コンポーネント)並びにスレーブインターフェースの各々は、それらの機能に従って、算術論理ユニット(ALU)等の論理ユニット、マルチプレクサ(MUX)、レジスタ、制御ユニット等を含むがこれらに限定されない1つ以上のデジタル回路コンポーネントを使用して実装され得る。そのようなコンポーネントは、集合的にデジタル電力モニタ(DPM)と呼ばれ得る。エンジン108は、復号器、分岐予測器、命令ユニット、ロードストアユニット、整数実行ユニット等を含むがこれらに限定されないコンポーネントを有する処理エンジンであるが、実行ユニット106は除外され、図示した例では浮動小数点ユニットである。
【0025】
図2は、本明細書で開示される実施形態による、例示的なイベントカウント論理コンポーネント、例えば、コア102のためのイベントカウント論理コンポーネント112のサブコンポーネント、及び、イベントカウント論理コンポーネントがどのように動作するかの高レベル図を示している。イベントカウント論理コンポーネント112は、複数のイベント検出器200を含み、各イベント検出器は、分散イベントの発生を検出することができ、図示されるように、その発生のカウントをレジスタ内に維持する。入力はイベントを受信し(図示される例では、検出され得るX+1個のイベント、すなわち、イベント0~イベントXが存在する)、イベント検出器200内のカウンタは、イベントカウントが、スケーラ204であるイベントカウント論理コンポーネント112の次のサブコンポーネントに転送されるまで、イベントのカウントを維持する。
【0026】
監視されるイベントのいくつかは、例えば、分岐命令の結果を予測することと、命令キャッシュ内の命令データにアクセスすることと、「opキャッシュ」内の命令データにアクセスすることと、命令デコードユニットから整数実行ユニットに演算をディスパッチすることと、実行される準備完了浮動小数点演算を選択することと、実行される準備完了整数ALU演算を選択することと、実行される準備完了ロード又はストア動作を選択することと、キャッシュプリフェッチ機構をトレーニングすることと、L2キャッシュメモリからの読み出し又は書き込みと、L3キャッシュメモリからの読み出し又は書き込みと、又は、とりわけ、外部メモリからの読み出し又は書き込みと、を含み得る。
【0027】
スケーラ204は、MUX202によって選択されたイベント検出器200の何れかからイベントカウント(EventCnt)を受信する。選択されたイベントカウント(EventCnt)は、選択されたタイプのイベントに対応する拡張イベント重みレジスタ206から選択された拡張イベント重み(EventWeight)を使用してスケーリング又は乗算される。スケーリングされたイベント(EventWord)内のビットは、加算器208に送られて、一時集計レジスタ(AggTmp)210内の対応するビットに加算され、そこに記憶される。次いで、AggTmpレジスタ210内に記憶されたビットは、ローカル集計レジスタ(AggLocal)214及び共有集計レジスタ(AggShare)218に送られる。AggTmpレジスタ210からのビットは、加算器212を介してAggLocalレジスタ214内の対応するビットに加算され、また、加算器216を介してAggShareレジスタ218内の対応するビットに加算される。
【0028】
いくつかの例では、AggLocalレジスタ214は、ローカルイベントの増大する合計を記憶し、したがって、例えば、適切な他のタイプの分析の中でもとりわけ、イベントの各々がコアの電力消費にどのような影響を及ぼすかを決定するために、電力消費分析を実行する場合に参照され得る。AggShareレジスタ218は、全てのイベントの加重された電力消費(「Cac」又は動的キャパシタンスと呼ばれる)の集計値を記憶する。集計値は、全てのイベントの累積加重和とも呼ばれる。AggShareレジスタ218は、イベントカウント論理コンポーネント112からの累積加重和が、適切な閾値と比較されるために送信され得るように、マスタ累積論理コンポーネント114と通信することができる。
【0029】
各コア102は、それ自体のイベントカウント論理コンポーネント112及びマスタ累積論理コンポーネント114のセットを有し、マスタ累積論理コンポーネント114は、イベントカウント論理コンポーネント112の各々から累積加重和を受信し、加重和の合計値が閾値を超えているかどうかを決定するために、閾値と比較される単一の値に加重和を集計し、超えている場合、どれだけ超えているかを決定することができる。閾値は、コアの熱設計電流(TDC)及び電気設計電流(EDC)に基づいて決定され得る。加重和の合計は、イベントに対する総Cac推定を示す。いくつかの例では、AggShareレジスタ218の値は、マスタ累積論理コンポーネント114にシリアルに転送され、ビットが転送されるとすぐに、レジスタは、転送されたビットを一度に1つクリアして、次のセットのイベントの累積加重和がその中に記憶され得るようにそれ自体をリセットする。
【0030】
図3は、いくつかの実施形態による、例示的なコア及び共有キャッシュメモリのサブコンポーネント、例えば、コア102及びそれに結合された共有キャッシュメモリ104の高レベル図を示している。キャッシュメモリ104は、マスタ累積論理コンポーネント114を介してコア102と結合されるスレーブインターフェース116、及び、それ自体のマスタ累積論理コンポーネント120を含む。これらのマスタ累積論理コンポーネント114及び120の各々には、イベントカウント論理コンポーネント112(コア102内)又は118(共有キャッシュ104内)内の個々のAggShareレジスタ218の各々からの全ての加重和を集計するアグリゲータモジュール300と、総加重和を閾値と比較して、イベントがCac推定閾値を超えるかどうか(すなわち、OverThreshの状態にあるかどうか)、超える場合には、どれだけ予算(budget)を超えるか(すなわち、OverBudgetの量)を決定する閾値比較器モジュール302と、がある。
【0031】
いくつかの例では、マスタアキュムレータ論理コンポーネント120は、OverThresh信号及びOverBudget信号が、閾値比較器モジュール302の結果に基づいてマスタ累積論理コンポーネント120によって生成されるスロットル信号304の形態でアービタモジュール306に送信されるように、アービタモジュール306を有するスケジューラ308に結合される。スロットル信号304は、OverThresh状態にあると決定された、すなわち、その中のイベントがCac推定閾値を超えたコンポーネントにおけるPWMスロットリング又はIPCの低減等の電力スロットリングを容易にする際にアービタモジュール306に送られる信号である。いくつかの例では、それぞれのプロセッサコア又は共有メモリの電力消費を調整又は修正する代替的な方法は、適宜、クロックストレッチング又は動作周波数低減を伴い得る。したがって、電力スロットリングは、限定はしないが、PWMスロットリング又はIPC低減を含む任意の適切な手段を通して電力消費を閾値未満にするために、Cac推定の調整又は修正を容易にする。
【0032】
更に、マスタ累積論理コンポーネント114及び120の各々は、短期及び長期電力使用決定のための個別のアキュムレータを含む。個別のアキュムレータの各々は、収集された電力使用データを適切な電力使用閾値と比較することを容易にするために、例えば、ALU、MUX、レジスタ、制御ユニット、カウンタ等を含むがこれらに限定されない論理ユニット等の任意の適切なコンポーネントを含むことができる。例えば、アグリゲータ300及び閾値比較器302は、以下で「EDC閾値」と呼ばれるEDCベースの閾値に関連する非常に短い時間間隔(例えば、累積パケットサイクルごとに1回)で電力スロットリングを容易にする第1の論理コンポーネント又は短期アキュムレータ310の一部として実装され得る。更に、第2の論理コンポーネント又は長期アキュムレータ312がマスタ累積論理コンポーネントに含まれ、「TDC閾値」と称される、TDCベースの閾値に関連付けられたより長い時間間隔を伴う電力スロットリングを促進する。
【0033】
すなわち、長期アキュムレータ312は、それぞれ、アグリゲータ300及び閾値比較器302と同様に動作するアグリゲータ301及び閾値比較器303を含むが、短期電力使用データを収集し、それをEDC閾値と比較する代わりに、これらのコンポーネントは、システム100がTDC閾値によって示される制限内にとどまるように、TDC閾値を超える(複数の累積パケットサイクル続く)長期電力使用データを周期的に収集し、収集された電力使用データをTDC閾値と比較し、コア102の電圧及び周波数レベルを管理し、場合によっては共有キャッシュメモリ104も管理することを可能にする。したがって、マスタ累積論理コンポーネントの各々は、短期EDC閾値と長期TDC閾値の両方に基づいて電力スロットリングを実行することが可能である。
【0034】
いくつかの例では、個別のアキュムレータ310及び312は、適切な電力スロットリングが実行され得るように、収集された短期又は長期電力使用データをそれぞれEDC閾値又はTDC閾値と同時に比較することが可能である。いくつかの例では、アキュムレータ310及び312は、短期(又はEDC)閾値比較又は長期(又はTDC)閾値比較の何れかが適切なアキュムレータによって実行されるように選択され得るように、互いに独立して動作可能である。
【0035】
上述したように、電力スロットリングを実行する方法の1つは、例えば、IPCを低減することを含む。IPCを低減することは、例えば、分岐予測、命令フェッチ、命令デコード又は命令実行のために許容される帯域幅を低減することによって行われ得る。また、電力スロットリングは、例えば、位相ロックループ(PLL)若しくは遅延ロックループ(DLL)周波数を低減すること又はデジタル周波数分割器を使用することを含む、様々な手段によってプロセッサ周波数を低減することによって実行され得る。また、電力スロットリングは、共有電圧レギュレータにおいて、又は、例えばプロセッサコア若しくはキャッシュメモリ等の特定のコンポーネントに対してローカルな電圧レギュレータにおいて、電源電圧を低減することによって実行され得る。
【0036】
マスタアキュムレータ論理コンポーネント114、120、124の各々は、階層的に配列され、すなわち、その中の閾値比較器302の結果は、等しい又はより低い階層のコンポーネントのPWMスロットリングを容易にする。例えば、共有キャッシュメモリ104に関連付けられたマスタ累積論理コンポーネント120は、スロットリング信号304が、共有キャッシュメモリ104と、共有キャッシュメモリ104よりも下位階層であるコア102と、に影響を及ぼすので、最上位階層である。同様に、コア102に関連付けられたマスタ累積論理コンポーネント114内の閾値比較器302の結果は、エンジン108及びエンジン108よりも下位階層のFPU106の動作に影響を及ぼす。最後に、FPU106に関連付けられたマスタ累算論理コンポーネント124内の閾値比較器302の結果は、FPU106の動作のみに影響を及ぼし、これは、いくつかの例では、これらのコンポーネントの最下位階層のものであり得る。いくつかの例では、システムによってサポートされる任意の数の追加の階層レベルが存在し得る。
【0037】
図4は、本明細書で開示される実施形態による、イベントの加重和がコア102内にどのように累積されるか、及び、それらが共有キャッシュメモリ104内に累積されたものとどのように集計されるかの高レベル図を示している。図示されるように、コア102は、複数のイベントカウント論理コンポーネント112及び400を有するため、各イベントカウント論理コンポーネントは、コア102内の異なるタイプのイベントをカウントすることができる。コア102のマスタ累積論理コンポーネント114は、初期集計パケット402を第1のイベントカウント論理コンポーネント112に送信することによってプロセスを開始し、これは、コア102内の対応するイベントカウント論理コンポーネントによって充填される空のパケットであり得る。いくつかの例では、初期集計パケットは、約50ns等の等しい時間間隔で発行され、新しいパケットは、前の集計パケットが完全に送信されるが必ずしも受信されないまで発行されないことがある。
【0038】
第1のイベントカウント論理コンポーネント112は、初期集計パケット402を、そのAggShareレジスタ218からの加重和の値と累算して、集計パケット404を生成する。第1のイベントカウント論理コンポーネント112は、集計パケット404を第2のイベントカウント論理コンポーネント400に送信し、その結果、第2のイベントカウント論理コンポーネント400は、受信された集計パケット404を、そのAggShareレジスタ218からの加重和の値(すなわち、累積されたCac)と累積して、集計パケット406を生成し、これがマスタ累積論理コンポーネント114に送り返される。2つのイベントカウント論理コンポーネントのみが示されているが、任意の適切な数のイベントカウント論理コンポーネントが使用されてもよいことが理解されるべきである。
【0039】
集計パケット406は、コア102内の全てのイベントカウント論理コンポーネントからの合計累積Cacを表す。マスタ累積論理コンポーネント114が、コア102に関連付けられた全てのイベントカウント論理コンポーネントからの加重和を含む集計パケット406を受信した後、集計パケット406は、存在する場合、スレーブインターフェースに転送され得る。この場合、共有キャッシュメモリ104のスレーブインターフェース116は、コア102から集計パケット406を受信する。いくつかの例では、マスタ累積論理コンポーネント114は、集計パケット406を閾値と比較して、コア102にローカルなイベントがコア102にローカルなOverThresh状態を引き起こすかどうかを決定することができる。
【0040】
共有キャッシュメモリ104では、マスタ累積論理コンポーネント120は、コア102内の初期集計パケット402と同様の初期集計パケット408を送信する。スレーブインターフェース116は、初期集計パケット408をコア102のマスタ累積論理コンポーネント114から受信された集計パケット406と集計して、初期集計パケット408が空である場合に集計パケット406と事実上同一である集計パケット410を生成する。その後、共有キャッシュメモリ104に関連付けられた1つ以上のイベントカウント論理コンポーネント118は、コア102に関連付けられたイベントカウント論理コンポーネントだけでなく共有キャッシュメモリ104に関連付けられたイベントカウント論理コンポーネントからのイベントの加重和を集計する最終集計パケットである総集計パケット412を生成するために、集計パケット412をそのAggShareレジスタ218からの加重和の値と累算する。マスタ累積論理コンポーネント120は、全集計パケット412を受信し、その結果を閾値と比較して、説明したように、イベントがコンポーネント内のOverThresh状態を引き起こすかどうかを決定する。
【0041】
図4に示されるように、イベントカウント論理コンポーネント、マスタ累積論理コンポーネント及びスレーブインターフェースは、適用可能であれば、シリアルバス又はリングバスを使用して相互接続されてもよいため、集計パケットは、集計プロセスにおいて1つのコンポーネントから次のコンポーネントに転送される。データの転送は、スレーブインターフェースによって定義される階層的な方法で実行される。すなわち、スレーブインターフェースは、集計プロセス中にマスタ累積論理コンポーネントからスレーブインターフェースへの単方向データフローを保証する。マスタ累積論理コンポーネントの階層は、以下の順序で確認され得る。(1)各コアの実行ユニットにおけるイベントのCac、(2)各コア及びその中の全ての実行ユニットにおけるイベントのCac、(3)コアに関連付けられた共有キャッシュメモリのCac、(4)全てのコア及びコアに関連付けられた共有キャッシュメモリのCac。
【0042】
図5は、本明細書に開示される実施形態による、一例におけるイベントカウント論理コンポーネント500を示している。イベントカウント論理コンポーネント500は、実行ユニット、コア又は共有キャッシュメモリ内のイベントカウント論理コンポーネントの何れかを表すことができ、
図2に示すように、関連するレジスタ504の一部を使用して計算を実行し、その結果を記憶する。
【0043】
イベントカウント論理コンポーネント500は、同じ数のイベント、より具体的には8つのイベント、イベント0からイベント7を検出するための複数のイベント検出器200を含む。各イベント検出器200の出力は、6ビットのイベントカウンタ列(Cnt0[5:0]~Cnt7[5:0]のうち何れか)であり、これは、選択されるようにMUX202に送られる。選択されると、6ビットイベントカウンタは、スケーラ204によって選択された8ビット重み列と乗算され、重み列(Weight0[7:0]~Weight7[7:0]のうち何れか)は、選択されたイベントカウンタに従ってMUX502によって選択される。
【0044】
スケーリングされると、スケーラ204は、26ビットのスケーリングされたデータ列を出力して、レジスタ504に累積されて記憶される。具体的には、レジスタ504の各サブセクションEventWord0[15:0]~EventWord7[15:0]は、
図2に示したレジスタ210、214、218の一部として動作する。すなわち、この例では、EventWord0[15:0]~EventWord2[15:0]をまとめて48ビットのAggShareレジスタ218として使用し、EventWord3[15:0]及びEventWord4[15:0]をまとめて32ビットのAggTmpレジスタ210として使用し、EventWord5[15:0]~EventWord7[15:0]をまとめて48ビットのAggLocalレジスタ214として使用する。加算器506は、複数のイベントから加重和を計算し、その結果をレジスタ504の対応するサブセクションに記憶するために、加算器208、212、216として集合的に動作する。
【0045】
システム100は、中央処理装置(CPU)又はグラフィックス処理装置(GPU)等の任意のタイプのプロセッサシステムであってもよい。例えば、システム100は、x86 64ビット命令セットアーキテクチャを有するx86プロセッサとして実装されてもよく、デスクトップ、ラップトップ、サーバ、スーパースカラコンピュータにおいて使用され、携帯電話又はデジタルメディアプレーヤで使用されるRISC(Advanced Reduced Instruction Set Computer)マシン(ARM)プロセッサとして実装されてもよく、又は、音声データ及び通信信号等のデジタル信号に関連するアルゴリズムの処理及び実装において有用なデジタル信号プロセッサ(DSP)、並びに、プリンタ及びコピー機等の消費者用途において有用なマイクロコントローラとして実装されてもよい。
【0046】
コア102は、システム100の計算の中心を形成し、多数の計算タスクを実行する責務がある。例えば、プロセッサコア102は、限定はしないが、2進数の加算、減算、シフト及び回転を実行する実行ユニットと、メモリアドレスのためのアドレス計算並びにメモリからのデータのロード及び記憶を実行するアドレス生成及びロード及び記憶ユニットと、を含み得る。プロセッサコア102によって実行される動作は、コンピュータアプリケーションの実行を可能にする。
【0047】
プロセッサコア102は、例えばコントローラ128によって制御されるように、特定の性能状態(P状態)に従って動作する。P状態は以下のように記述される。ACPI(Advanced Configuration and Power Interface)規格は、コンピュータシステムの電力管理を規制するオペレーティングシステムベースの仕様である。例えば、ACPI規格は、バッテリ寿命のより良い管理のためにプロセッサコアを制御し、指示することができる。その際に、ACPIは、C状態と呼ばれるプロセッサ電力状態を割り当て、プロセッサがこれらの状態の限界内で動作するように強制する。様々なレベルのC状態が存在し(例えば、完全な電力消費及びエネルギーの完全な散逸を伴う、完全に動作している状態であるC0、命令の実行が停止され、プロセッサが瞬時に命令を実行するために戻ることができるスリープ状態であるC1、又は、プロセッサがC0状態に戻るのにより長い時間がかかる可能性がある別のスリープ状態であるC2)、プロセッサの性能に対する対応する含意とともに、プロセッサが割り当てられてもよい。
【0048】
プロセッサが完全に動作しているC0状態にある間、プロセッサは、性能状態又はP状態と呼ばれる別の状態に関連付けられる。動作電圧及び周波数にそれぞれ関連するP状態の様々なレベルが存在する。最高性能状態はP0であり、これは最大動作電力、電圧及び周波数に対応し得る。しかしながら、プロセッサは、より低い動作電力、電圧及び/又は周波数に対応するより低い性能状態、例えばP1又はP2に置かれてもよい。概して、プロセッサがより低いP状態に移動する場合、プロセッサは以前よりも低い容量で動作する。
【0049】
図6は、本明細書で開示される実施形態による、例示的なプロセス600のフロー図である。このプロセス及び本明細書に開示される任意の他のプロセスは、1つ以上の状態機械、プログラム可能プロセッサ及び/又はソフトウェア命令を実行するプロセッサと1つ以上の状態機械との組み合わせ等の任意の好適な手段によって行われてもよい。ステップ602において、複数の分散イベントが、イベントカウンタを使用してそれぞれの処理コアにおいて監視される。ステップ604において、イベントカウンタから分散されたイベントの累積加重和が計算される。ステップ606において、累積加重和を閾値電力値と比較することによって、過剰電力消費が決定される。ステップ608において、それぞれの処理コアの電力消費は、決定された過剰電力消費に基づいて調整又は修正(例えば、低減)される。いくつかの例では、電力消費は、電力スロットリングを介して調整される。
【0050】
いくつかの例では、分散イベントは、それぞれの処理コアの実行ユニット上で監視されてもよく、電力消費を調整することは、それぞれの処理コアの実行ユニットに対して電力スロットリングを実行することを含む。方法600は、実行ユニット、コアの処理エンジン又は共有キャッシュメモリの何れかにおいて監視される分散イベントに適用可能である。したがって、いくつかの例における分散イベントは、実行ユニットにおいてのみ検出されるもの、実行ユニット及びコアの処理エンジンにおいて検出されるもの、又は、実行ユニット、処理エンジン及び共有キャッシュメモリにおいて検出されるものを含む。
【0051】
図7は、本明細書に開示される実施形態による、例示的プロセス700のフロー図である。プロセス700は、両方ともプロセッサコアの一部として実装される実行ユニット及びプロセッサエンジンにおける複数の分散イベントの電力消費推定値を集計することを容易にする。ステップ702において、複数の分散イベントが、イベントカウンタを使用して各実行ユニット及びプロセッサエンジンにおいて監視される。分散イベントの監視は、コアの各々において別々に又は同時に実行されてもよい。ステップ704において、実行ユニットに対応するイベントカウンタの各々からの分散イベントの加重和が累積されて、実行ユニットに対応するイベントの累積加重和が計算される。
【0052】
ステップ706では、実行ユニットに対応するステップ704からの累積加重和が、プロセッサエンジンに対応するイベントカウンタからの分散イベントの加重和と集計される。集計は、プロセッサエンジンのスレーブインターフェースを介して、実行ユニットのマスタ累積論理コンポーネントから累積加重和を受信し、更に、プロセッサエンジンに対応するイベントカウンタからの分散イベントの加重和と同じものを累積することによって実行されてもよい。
【0053】
ステップ708において、実行ユニット及びプロセッサエンジンの過剰電力消費は、総電力消費を閾値電力値と比較することによって決定される。ステップ710において、それぞれの処理コアの電力消費は、決定された過剰電力消費に基づいて調整される。いくつかの例では、電力消費は、電力スロットリングを介して調整される。具体的には、電力スロットリングの量は、実行ユニット及びプロセッサエンジンによる過剰電力消費の量に比例し得る。実行ユニット及びプロセッサエンジン内の複数のイベントカウントコンポーネントは、少なくとも1つのリングバスを介して相互接続されてもよい。
【0054】
図8は、本明細書に開示される実施形態による、例示的プロセス800のフロー図である。プロセス800は、実行ユニット、プロセッサエンジン、並びに、実行ユニット及びプロセッサエンジンを実装するプロセッサコアに動作可能に結合された共有キャッシュメモリにおける複数の分散イベントの電力消費推定値を集計することを容易にする。
【0055】
ステップ802において、実行ユニット、プロセッサエンジン及び共有メモリの各々における複数の分散イベントが、これらのコンポーネントに対応するイベントカウンタを使用して監視される。ステップ804において、実行ユニットに対応するイベントカウンタの各々からの分散イベントの加重和が累積されて、実行ユニットに対応するイベントの累積加重和が計算される。
【0056】
ステップ806では、実行ユニットに対応するステップ804からの累積加重和が、プロセッサエンジンに対応するイベントカウンタからの分散イベントの加重和と集計される。集計は、プロセッサエンジンのスレーブインターフェースを介して、実行ユニットのマスタ累積論理コンポーネントから累積加重和を受信し、更に、プロセッサエンジンに対応するイベントカウンタからの分散イベントの加重和と同じものを累積することによって実行されてもよい。
【0057】
ステップ808において、実行ユニット及びプロセッサエンジンに対応するステップ806からの累積加重和が、共有メモリに対応するイベントカウンタからの分散されたイベントの加重和と集計される。集計は、共有メモリのスレーブインターフェースを介して、プロセッサエンジンのマスタ累積論理コンポーネントから総加重和を受信し、更に、それを、共有メモリに対応するイベントカウンタからの分散イベントの加重和と累積することによって実行されてもよい。
【0058】
ステップ810において、実行ユニット、プロセッサエンジン及び共有メモリの過剰電力消費は、総電力消費を閾値電力値と比較することによって決定される。ステップ812において、それぞれの処理コア又は共有メモリの電力消費が、決定された過剰電力消費に基づいて調整される。いくつかの例では、電力消費は、電力スロットリングを介して調整される。電力スロットリング信号は、決定された過剰電力消費に基づいて、過剰電力消費を有するそれぞれの処理コア又は共有メモリに送信され得る。具体的には、電力スロットリングの量は、実行ユニット、プロセッサエンジン及び共有メモリによる過剰電力消費の量に比例し得る。実行ユニット内の複数のイベントカウントコンポーネント、プロセッサエンジン及び共有メモリは、少なくとも1つのリングバスを介して相互接続的に結合され得る。
【0059】
本明細書で開示されるような相互接続されたイベントカウンタ及び加重和アキュムレータを実装する際の利点は、前者が熱的に重要な時間枠に対応し、後者がはるかに短い熱的に重要でない時間枠に対応するにもかかわらず、コアのTDC及びEDCに関する電力使用を追跡するためのイベントのより効率的な使用を含む。また、本明細書で開示される方法及びシステムは、プロセッサのタイプ及び実装に応じて変化し得るTDC及びEDCの両方の電力使用追跡を包含するために単一の較正のみを使用することによって、プロセッサのより柔軟且つ効率的な較正を容易にする。
【0060】
更に、本明細書で開示される方法及びシステムは、電力使用量のより正確な測定を容易にし、TDC及びEDC制限に関して電力使用量を追跡する。したがって、より多くのEDCバジェット電力が使用され、より小さい性能マージンを引き起こす。電力使用量が、TDC制限又はEDC制限に基づいて設定された閾値を超えると決定された場合、そのような電力使用量を調整するために電力スロットリングが実行される。TDC及びEDC電力使用制限を満たすことは、より重い作業負荷のためのプロセッサにおけるより高い性能を容易にする。いくつかの例では、コアのTDC及びEDCに関する電力使用を監視するためのイベントカウンタのための組み合わされたリングバス構成の使用は、すなわち、イベントカウンタの2つの個別のセットを有する代わりに、プロセッサシステム全体のサイズを低減し、それによって、プロセッサシステムの製造効率も改善し得る。
【0061】
特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実装され得る。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリスト等の他の中間データ(そのような命令は、コンピュータ可読媒体に記憶させることが可能である)の結果を使用して製造プロセスを構成することによって製造され得る。そのような処理の結果はマスクワークであってもよく、このマスクワークをその後の半導体製造プロセスにおいて使用して、実施形態の態様を実施するプロセッサを製造する。
【0062】
本明細書に提供される方法又はフロー図は、汎用コンピュータ又はプロセッサによる実施のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実装され得る。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
【0063】
様々な実施形態の上記の詳細な説明では、その一部を形成し、本発明が実施され得る特定の好ましい実施形態を例として示す添付図面を参照している。これらの実施形態は、当業者が本発明を実施することを可能にするために十分に詳細に説明されており、他の実施形態が利用されてもよく、本発明の範囲から逸脱することなく論理的、機械的及び電気的変更が行われ得ることを理解されたい。当業者が本発明を実施することを可能にするために必要でない詳細を避けるために、説明は、当業者に知られている特定の情報を省略する場合がある。更に、本開示の教示を組み込む多くの他の様々な実施形態が、当業者によって容易に構築され得る。したがって、本発明は、本明細書に記載される特定の形態に限定されることを意図するものではなく、逆に、本発明の範囲内に合理的に含まれ得るそのような代替形態、修正形態及び均等物を包含することを意図するものである。したがって、上記の詳細な説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によってのみ定義される。本明細書において説明される実施形態及び実施例の上記の詳細な説明は、限定ではなく、例示及び説明のためにのみ提示されている。例えば、説明された動作は、任意の好適な順序又は方法で行われる。したがって、本発明は、上記で開示され、本明細書で特許請求される基本的な基礎原理の範囲に含まれるあらゆる修正、変形又は等価物を包含することが企図される。
【0064】
上記の詳細な説明及びそこで説明される実施例は、限定のためではなく、例示及び説明のためにのみ提示されている。
【手続補正書】
【提出日】2024-02-22
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
少なくとも1つの実行ユニットを有する処理システムであって、
各実行ユニットは、
少なくとも1つの第1のイベントカウントコンポーネントと、
前記第1のイベントカウントコンポーネントに結合された第1のマスタ累積コンポーネントと、を備え、
前記第1のイベントカウントコンポーネントは、
前記実行ユニットにおける複数の分散イベントを監視することと、
前記複数の分散イベントの累積加重和を計算することと、
を行うように構成されており、
前記第1のマスタ累積コンポーネントは、
前記累積加重和を閾値電力値と比較することによって過剰電力消費を決定することと、
決定された前記過剰電力消費に基づいて、各実行ユニットの電力消費を調整することと、
を行うように構成されている、
処理システム。
【請求項2】
前記閾値電力値は、短期電力使用閾値又は長期電力使用閾値のうち何れかから選択可能であり、
前記第1のマスタ累積コンポーネントは、前記累積加重和を前記短期電力使用閾値と比較するように構成された第1の論理コンポーネントと、前記累積加重和を前記長期電力使用閾値と比較するように構成された第2の論理コンポーネントと、を備え、
前記第1の論理コンポーネントは、前記第2の論理コンポーネントが前記累積加重和を前記長期電力使用閾値と比較するのと同時に、前記累積加重和を前記短期電力使用閾値と比較するように構成されている、
請求項1の処理システム。
【請求項3】
前記少なくとも1つの実行ユニットに結合された少なくとも1つのプロセッサエンジンを備え、
各プロセッサエンジンは、
前記第1のマスタ累積コンポーネントと動作可能に結合された第1のスレーブインターフェースであって、前記第1のマスタ累積コンポーネントから前記累積加重和を受信するように構成された第1のスレーブインターフェースと、
少なくとも1つの第2のイベントカウントコンポーネントと、
第2のマスタ累積コンポーネントと、を備え、
前記第2のイベントカウントコンポーネントは、
前記第1のスレーブインターフェースから前記累積加重和を受信することと、
前記プロセッサエンジン内の複数の分散イベントを監視することと、
前記第1のマスタ累積コンポーネントからの前記累積加重和を含む、前記分散イベントの第2の累積加重和を計算することと、
を行うように構成されており、
前記第2のマスタ累積コンポーネントは、
前記第2の累積加重和に基づいて前記実行ユニット及び前記エンジンの総電力消費を決定することと、
前記総電力消費と前記閾値電力値とを比較することによって前記過剰電力消費を決定することと、
決定された前記過剰電力消費に基づいて、各実行ユニット又は前記プロセッサエンジンの電力消費を調整することと、
を行うように構成されている、
請求項1の処理システム。
【請求項4】
前記第2のマスタ累積コンポーネントは、前記累積加重和を前記短期電力使用閾値と比較するように構成された第1の論理コンポーネントと、前記累積加重和を前記長期電力使用閾値と比較するように構成された第2の論理コンポーネントと、を備える、
請求項3の処理システム。
【請求項5】
複数のプロセッサエンジンと、前記複数のプロセッサエンジンに結合されたキャッシュメモリと、を備え、
前記キャッシュメモリは、
前記第2のマスタ累積コンポーネントと動作可能に結合された第2のスレーブインターフェースであって、前記第2のマスタ累積コンポーネントから前記総電力消費を受信するように構成された第2のスレーブインターフェースと、
少なくとも1つの第3のイベントカウントコンポーネントと、
第3のマスタ累積コンポーネントと、を備え、
前記第3のイベントカウントコンポーネントは、
前記第2のスレーブインターフェースから前記総電力消費を受信することと、
前記キャッシュメモリ内の複数の分散イベントを監視することと、
前記第1のマスタ累積コンポーネントからの前記累積加重和と、前記第2のマスタ累算コンポーネントからの前記総電力消費と、を含む前記分散イベントの第3の累積加重和を計算することと、
を行うように構成されており、
前記第3のマスタ累積コンポーネントは
前記第3の累積加重和に基づいて前記キャッシュメモリの第2の総電力消費を決定することと、
前記第2の総電力消費を前記閾値電力値と比較することによって前記過剰電力消費を決定することと、
決定された前記過剰電力消費に基づいて、各実行ユニット、前記プロセッサエンジン又は前記キャッシュメモリの電力消費を調整することと、
を行うように構成されている、
請求項3の処理システム。
【請求項6】
前記第3のマスタ累積コンポーネントは、前記累積加重和を前記短期電力使用閾値と比較するように構成された第1の論理コンポーネントと、前記累積加重和を前記長期電力使用閾値と比較するように構成された第2の論理コンポーネントと、を備える、
請求項5の処理システム。
【請求項7】
前記第3のマスタ累積コンポーネントに結合され、決定された前記過剰電力消費に基づいて、前記少なくとも1つの実行ユニット、前記少なくとも1つのプロセッサエンジン又は前記キャッシュメモリのうち1つ以上に電力スロットリング信号を送ることによって前記電力消費を調整するように構成されたアービタを備える、
請求項5の処理システム。
【請求項8】
前記電力スロットリング信号は、(a)前記少なくとも1つの実行ユニット、前記少なくとも1つのプロセッサエンジン又は前記キャッシュメモリのうち1つ以上のサイクル当たりの命令(IPC)の低減を、前記過剰電力消費に基づいて引き起こすか、又は、(b)前記少なくとも1つの実行ユニット、前記少なくとも1つのプロセッサエンジン又は前記キャッシュメモリのうち1つ以上に対して、前記過剰電力消費に基づいて送られるパルス幅変調(PWM)スロットル信号である、
請求項7の処理システム。
【請求項9】
複数の第1のイベントカウントコンポーネント、第2のイベントカウントコンポーネント及び/又は第3のイベントカウントコンポーネントを備え、イベントカウントコンポーネントの各セットは、少なくとも1つのリングバスを介して相互接続されている、
請求項5の処理システム。
【請求項10】
複数の処理コアの電力消費を制御する方法であって、
少なくとも1つのイベントカウントコンポーネントを使用して、各処理コア内で発生する複数の分散イベントを監視することと、
前記イベントカウントコンポーネントから前記複数の分散イベントの累積加重和を計算することと、
前記累積加重和を閾値電力値と比較することによって、前記各処理コアによる過剰電力消費を決定することと、
決定された前記過剰電力消費に基づいて、前記各処理コアの電力消費を調整することと、を含む、
方法。
【請求項11】
前記閾値電力値は、短期電力使用閾値又は長期電力使用閾値のうち何れかから選択可能であり、
前記複数の分散イベントは、前記各処理コアの実行ユニット上で監視され、
前記各処理コアの電力消費を調整することは、前記各処理コアの実行ユニットに対して電力スロットリングを実行することを含む、
請求項
10の方法。
【請求項12】
前記複数の分散イベントは、複数のイベントカウントコンポーネントを使用して前記各処理コアのプロセッサエンジン上で監視され、
前記各処理コアの電力消費を調整することは、前記プロセッサエンジンに対して電力スロットリングを実行することを含み、
前記方法は、
前記複数のイベントカウントコンポーネントから前記累積加重和を集計することによって、前記実行ユニット及び前記プロセッサエンジンの総電力消費を決定することと、
前記総加重和を前記閾値電力値と比較することによって、前記過剰電力消費を決定することと、を含み、
前記実行ユニット及び前記プロセッサエンジン内の前記複数のイベントカウントコンポーネントは、少なくとも1つのリングバスを介して相互接続可能に結合されている、
請求項
10の方法。
【請求項13】
前記複数の分散イベントは、前記イベントカウントコンポーネントを使用して、前記各処理コアによって共有されるキャッシュメモリ上で監視され、
前記各処理コアの電力消費を調整することは、前記共有されるキャッシュメモリに対して電力スロットリングを実行することを含み、
前記方法は、
前記各処理コアの全てからの前記総電力消費を集計することによって、前記実行ユニット、前記プロセッサエンジン及び前記共有キャッシュメモリについての第2の総電力消費を決定することと、
前記第2の総加重和を前記閾値電力値と比較することによって前記過剰電力消費を決定することと、を含み、
前記実行ユニット内の前記複数のイベントカウントコンポーネント、前記プロセッサエンジン及び前記共有キャッシュメモリは、複数のリングバスを介して相互接続可能に結合されている、
請求項
12の方法。
【請求項14】
前記電力消費の決定された低減に基づいて、電力スロットリング信号を前記各処理コアに送信することを含み、
(a)前記電力スロットリング信号は、前記各処理コアの前記過剰電力消費に基づいて前記各処理コアのサイクル当たりの命令(IPC)の低減を引き起こすか、又は、前記電力スロットリング信号は、前記各処理コアの前記過剰電力消費に基づいて前記各処理コアに送信されるパルス幅変調(PWM)スロットル信号である、
請求項
13の方法。
【請求項15】
複数の処理コアによって共有されるように構成されたキャッシュメモリと動作可能に結合されたメモリコントローラであって、
各処理コアは、実行ユニットと、プロセッサエンジンと、を備え、
前記メモリコントローラは、
各処理コアに対して請求項10の方法を実行させるように構成されている、
メモリコントローラ。
【国際調査報告】