IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ エーティーアイ・テクノロジーズ・ユーエルシーの特許一覧

特表2024-501834集積回路内の非計算ユニット電力制御を提供するための方法及び装置
<>
  • 特表-集積回路内の非計算ユニット電力制御を提供するための方法及び装置 図1
  • 特表-集積回路内の非計算ユニット電力制御を提供するための方法及び装置 図2
  • 特表-集積回路内の非計算ユニット電力制御を提供するための方法及び装置 図3
  • 特表-集積回路内の非計算ユニット電力制御を提供するための方法及び装置 図4
  • 特表-集積回路内の非計算ユニット電力制御を提供するための方法及び装置 図5
  • 特表-集積回路内の非計算ユニット電力制御を提供するための方法及び装置 図6
  • 特表-集積回路内の非計算ユニット電力制御を提供するための方法及び装置 図7
  • 特表-集積回路内の非計算ユニット電力制御を提供するための方法及び装置 図8
  • 特表-集積回路内の非計算ユニット電力制御を提供するための方法及び装置 図9
  • 特表-集積回路内の非計算ユニット電力制御を提供するための方法及び装置 図10
  • 特表-集積回路内の非計算ユニット電力制御を提供するための方法及び装置 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-16
(54)【発明の名称】集積回路内の非計算ユニット電力制御を提供するための方法及び装置
(51)【国際特許分類】
   G06F 12/00 20060101AFI20240109BHJP
   G06F 11/30 20060101ALI20240109BHJP
   G06F 11/34 20060101ALI20240109BHJP
   G06F 1/3225 20190101ALI20240109BHJP
   G06F 1/324 20190101ALI20240109BHJP
【FI】
G06F12/00 550E
G06F11/30 155
G06F11/30 140A
G06F11/34 133
G06F1/3225
G06F1/324
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023539261
(86)(22)【出願日】2021-12-16
(85)【翻訳文提出日】2023-08-18
(86)【国際出願番号】 IB2021061889
(87)【国際公開番号】W WO2022144677
(87)【国際公開日】2022-07-07
(31)【優先権主張番号】17/137,925
(32)【優先日】2020-12-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】インドラニ ポール
(72)【発明者】
【氏名】レオナルド デ ポーラ ローザ ピガ
(72)【発明者】
【氏名】マヘシュ サブラモニー
(72)【発明者】
【氏名】ソヌ アローラ
(72)【発明者】
【氏名】ドナルド シェレパチャ
(72)【発明者】
【氏名】アダム エヌ. シー. クラーク
【テーマコード(参考)】
5B011
5B042
5B160
【Fターム(参考)】
5B011DC06
5B011EA08
5B011EB01
5B011LL13
5B042GA33
5B042JJ17
5B042MA08
5B042MC22
5B160AA14
(57)【要約】
方法及び装置は、複数の異種計算ユニットと、複数の計算ユニットに動作可能に結合された複数の非計算ユニットと、を使用する。電力管理ロジック(PML)は、IC上の複数の異種計算ユニットの各々で実行されるそれぞれの作業負荷に関連するメモリ帯域幅レベルを決定し、決定されたメモリ帯域幅レベルに基づいて、IC上のメモリシステムの少なくとも1つの非計算ユニットの電力レベルを、第1の電力レベルから第2の電力レベルに調整する。いくつかの例では、メモリアクセス待ち時間も考慮に入れて、非計算ユニットの電力レベルを調整する。
【選択図】図1
【特許請求の範囲】
【請求項1】
1つ以上の集積回路(IC)に電力管理を提供するための方法であって、
前記IC上の複数の異種計算ユニットの各々で実行される作業負荷に関連するメモリ帯域幅レベルを決定することと、
決定されたメモリ帯域幅レベルに基づいて、前記IC上のメモリシステムの少なくとも1つの非計算ユニットの電力レベルを、第1の電力レベルから第2の電力レベルに調整することと、を含む、
方法。
【請求項2】
前記メモリ帯域幅レベルを決定することは、前記IC上の前記複数の異種計算ユニットの各々に関連するメモリアクセストラフィックを監視することを含み、前記少なくとも1つの非計算ユニットは、前記複数の異種計算ユニットによって使用されるメモリにアクセスするために使用される、
請求項1の方法。
【請求項3】
前記非計算ユニットは、
前記異種計算ユニットとメモリとの間でデータを転送するデータファブリックを含み、
前記メモリシステムの前記非計算ユニットの電力レベルを調整することは、
より高いデータファブリッククロック周波数設定値及びより高い電圧レベルを用いて同じ最大レベルメモリデータ転送レートを提供する別のメモリパフォーマンス状態と比較して、前記データファブリックの低減された周波数クロック及び低減された電圧レベルを用いて、規定の電力割り当てに対して最大レベルメモリデータ転送レートを提供するメモリパフォーマンス状態を選択することを含む、
請求項1の方法。
【請求項4】
前記電力レベルを調整することは、メモリパフォーマンス状態テーブルにアクセスすることを含み、
前記メモリパフォーマンス状態テーブルは、
複数のメモリパフォーマンス状態であって、各状態は、前記パフォーマンス状態に対して許容可能なメモリデータ転送速度と、非計算メモリシステム電圧設定値と、データファブリッククロック周波数設定値と、メモリクロック周波数設定値と、を表すデータを含む、複数のメモリパフォーマンス状態を含み、
少なくとも第1のパフォーマンス状態及び第2のパフォーマンス状態は、同じ最大レベルメモリデータ転送レートを含み、前記第1のパフォーマンス状態は、前記第2のパフォーマンス状態と比較して、低いデータファブリック周波数設定値及び低い非計算メモリシステム電圧設定値を有する、
請求項3の方法。
【請求項5】
集積回路(IC)であって、
複数の異種計算ユニットと、
前記複数の計算ユニットに動作可能に結合された複数の非計算ユニット、を備え、
電力管理ロジックは、
前記IC上の複数の異種計算ユニットの各々で実行される作業負荷に関連するメモリ帯域幅レベルを決定することと、
決定されたメモリ帯域幅レベルに基づいて、前記IC上のメモリシステムの少なくとも1つの非計算ユニットの電力レベルを、第1の電力レベルから第2の電力レベルに調整することと、
を行うように動作可能である、
集積回路。
【請求項6】
前記電力管理ロジックは、
前記IC上の前記複数の異種計算ユニットの各々に関連するメモリアクセストラフィックを少なくとも監視することによって、前記メモリ帯域幅レベルを決定するように動作可能であり、
前記少なくとも1つの非計算ユニットは、前記複数の異種計算ユニットによって使用されるメモリにアクセスするために使用される、
請求項5のIC。
【請求項7】
前記少なくとも1つの非計算ユニットは、前記異種計算ユニットとメモリとの間でデータを転送するデータファブリックを含み、
前記電力管理ロジックは、
少なくとも、より高いデータファブリッククロック周波数設定値及びより高い電圧レベルを用いて同じ最大レベルメモリデータ転送レートを提供する別のメモリパフォーマンス状態と比較して、前記データファブリックの低減された周波数クロック、及び低減された電圧レベルを用いて、規定の電力割り当てについて最大レベルメモリデータ転送レートを提供するメモリパフォーマンス状態を選択することによって、前記メモリシステムの前記非計算ユニットの前記電力レベルを調整するように動作可能である、
請求項5のIC。
【請求項8】
前記電力管理ロジックは、メモリパフォーマンス状態テーブルにアクセスすることによって、前記電力レベルを調整するように動作可能であり、
前記メモリパフォーマンス状態テーブルは、
複数のメモリパフォーマンス状態であって、各状態は、前記パフォーマンス状態に対して許容可能なメモリデータ転送速度と、非計算メモリシステム電圧設定値と、データファブリッククロック周波数設定値と、メモリクロック周波数設定値と、を表すデータを含む、複数のメモリパフォーマンス状態を含み、
少なくとも第1のパフォーマンス状態及び第2のパフォーマンス状態は、同じ最大レベルメモリデータ転送レートを含み、前記第1のパフォーマンス状態は、前記第2のパフォーマンス状態と比較して、低いデータファブリック周波数設定値及び低い非計算メモリシステム電圧設定値を有する、
請求項7のIC。
【請求項9】
集積回路(IC)であって、
複数の計算ユニットと、
前記複数の計算ユニットに動作可能に結合された複数の非計算ユニット、を備え、
電力管理ロジックは、
前記複数の計算ユニットのうち少なくとも1つで実行される作業負荷に関連するメモリアクセス待ち時間を検出することと、
検出された前記メモリアクセス待ち時間に基づいて、前記複数の非計算ユニットのうち少なくとも1つに関連するメモリパフォーマンス状態を変更することと、
を行うように動作可能である、
集積回路。
【請求項10】
少なくとも別の集積回路(IC)とデータを通信するように構成されたデータファブリックを備え、
前記電力管理ロジックは、前記別のICの計算ユニットに関連するメモリアクセス待ち時間を検出し、前記別のICに関連する検出された前記メモリアクセス待ち時間に基づいて、前記複数の非計算ユニットに関連する前記メモリパフォーマンス状態を変更するように動作可能である、
請求項9のIC。
【請求項11】
前記電力管理ロジックは、前記IC上の複数の異種計算ユニットの各々で実行されるそれぞれの作業負荷に関連する帯域幅レベルを決定し、検出された前記メモリアクセス待ち時間及び決定されたメモリ帯域幅レベルの両方に基づいて、メモリパフォーマンス状態を選択するように動作可能である、
請求項9のIC。
【請求項12】
前記複数の非計算ユニットは、
前記複数の計算ユニットに動作可能に結合されたデータファブリックと、
前記データファブリックを介して前記計算ユニットに動作可能に結合されたメモリ制御ロジックと、を備え、
前記電力管理ロジックは、中央処理コア計算ユニットに関連する検出された待ち時間レベル、及び、グラフィックス処理コア計算ユニットに関連付けられた決定されたメモリ帯域幅レベルを表すデータ間のアービトレーションを行うことによって、前記メモリパフォーマンス状態を選択するように動作可能である、
請求項9のIC。
【請求項13】
前記電力管理ロジックは、
実行時間中に中央処理計算ユニットによって発行されるメモリロード要求に関連するメモリアクセス待ち時間を検出するように動作可能なメモリ待ち時間モニターロジックと、
前記複数の計算ユニットのうち他の計算ユニットに関連するメモリ帯域幅レベルを検出するように動作可能なメモリ帯域幅監視ロジックと、を備える、
請求項9のIC。
【請求項14】
前記電力管理ロジックは、前記別のIC上の計算ユニットに関連するメモリ帯域幅を検出するように構成された集積回路間メモリ帯域幅モニターロジックを備え、
前記電力管理ロジックは、前記別のICの検出された前記メモリ帯域幅レベルに基づいて、メモリパフォーマンス状態を、データファブリッククロック周波数を最高パフォーマンス状態レベルに増加させることを含む最高電力状態に増加させるように動作可能である、
請求項12のIC。
【請求項15】
前記電力管理ロジックは、少なくとも1つの計算ユニットの待ち時間改善を、少なくとも別の計算ユニットの帯域幅改善よりも優先するように動作可能である、
請求項9のIC。
【請求項16】
前記電力管理ロジックは、
少なくとも第1の計算ユニットに関連付けられた作業負荷のメモリ待ち時間を検出し、検出された前記メモリ待ち時間に基づいて、第1のメモリパフォーマンス状態を提供するように動作可能なメモリ待ち時間検出ロジックと、
少なくとも第2の計算ユニットによって使用されるメモリ帯域幅レベルを検出し、検出された前記メモリ帯域幅レベルに基づいて、第2のメモリパフォーマンス状態を提供するように動作可能なメモリ帯域幅検出ロジックと、
前記第1のメモリパフォーマンス状態及び第2のメモリパフォーマンス状態に基づいて、且つ、利用可能な電力ヘッドルームデータに基づいて、最終的なメモリパフォーマンス状態を選択するように動作可能なアービトレーションロジックと、を備える、
請求項9のIC。
【請求項17】
前記複数の計算ユニットは、複数の異種計算ユニットを備え、
前記電力管理ロジックは、
前記IC上の複数の異種計算ユニットの各々で実行されるそれぞれの作業負荷に関連するメモリ帯域幅レベルを決定することと、
決定されたメモリ帯域幅レベルに基づいて、前記IC上のメモリシステムの少なくとも1つの非計算ユニットの電力レベルを、第1の電力レベルから第2の電力レベルに調整することと、
を行うように動作可能である、
請求項9のIC。
【請求項18】
前記電力管理ロジックは、
前記IC上の前記複数の異種計算ユニットの各々に関連するメモリアクセストラフィックを少なくとも監視することによって、前記メモリ帯域幅レベルを決定するように動作可能であり、
前記少なくとも1つの非計算ユニットは、前記複数の異種計算ユニットによって使用されるメモリにアクセスするために使用される、
請求項17のIC。
【請求項19】
装置であって、
メモリシステムと、
前記メモリに動作可能に結合された複数の計算ユニットと、
前記複数の計算ユニットに動作可能に結合された、前記メモリシステムの複数のメモリ非計算ユニットと、
電力管理ロジックと、を備え、
前記複数のメモリ非計算ユニットは、
前記複数の計算ユニットに動作可能に結合されたデータファブリックと、
前記データファブリック及び前記メモリシステムのメモリに動作可能に結合されたメモリインターフェースロジックと、を備え、
電力管理ロジックは、
前記複数の計算ユニット上で実行される作業負荷に関連するメモリアクセス待ち時間を検出することと、
前記複数の計算ユニットの各々で実行されるそれぞれの作業負荷に関連するメモリ帯域幅レベルを決定することと、
検出された前記メモリアクセス待ち時間及び決定されたメモリ帯域幅レベルに基づいて、前記複数の非計算ユニットに関連するメモリパフォーマンス状態を変更することと、
を行うように動作可能である、
装置。
【請求項20】
前記電力管理ロジックは、
メモリ待ち時間に敏感な作業負荷の決定が前記複数の計算ユニットのうち少なくとも1つによって実行されたことに応じて、前記データファブリックのクロック周波数を増加させて、前記メモリのための最大レベルメモリデータ転送レートを提供することと、
帯域幅レベルの増加が計算ユニットのために必要であることに応じて、より高いデータファブリッククロック周波数設定値及びより高い電圧レベルを用いて同じ最大レベルメモリデータ転送レートを提供する別のメモリパフォーマンス状態と比較して、前記データファブリックの低減された周波数クロック及び低減された電圧レベルを用いて、規定の電力割り当てについて最大レベルメモリデータ転送レートを提供するメモリパフォーマンス状態を選択することと、
を行うために、前記データファブリックの動作状態を制御することによって、前記メモリパフォーマンス状態を変更するように動作可能である、
請求項19の装置。
【請求項21】
前記電力管理ロジックは、
少なくとも第1の計算ユニットに関連付けられた作業負荷のためのメモリ待ち時間を検出し、検出された前記メモリ待ち時間に基づいて、第1のメモリパフォーマンス状態を提供するように動作可能なメモリ待ち時間検出ロジックと、
少なくとも第2の計算ユニットによって使用されたメモリ帯域幅レベルを検出し、検出された前記メモリ帯域幅レベルに基づいて、第2のメモリパフォーマンス状態を提供するように動作可能な帯域幅検出ロジックと、
前記第1のメモリパフォーマンス状態及び第2のメモリパフォーマンス状態に基づいて、且つ、利用可能な電力ヘッドルームデータに基づいて、最終的なメモリパフォーマンス状態を選択するように動作可能なアービトレーションロジックと、を備える、
請求項19の装置。
【請求項22】
前記電力管理ロジックは、少なくとも1つの計算ユニットの待ち時間改善を、少なくとも別の計算ユニットの帯域幅改善よりも優先するように動作可能である、
請求項19の装置。
【請求項23】
前記データファブリックに動作可能に結合され、且つ、前記複数の計算ユニットのうちいくつかに動作可能に結合されたコヒーレントデータファブリックソケットを備え、
前記電力管理ロジックは、
前記コヒーレントデータファブリックソケットを使用して、計算ユニットに関連するメモリアクセス待ち時間を検出するように動作可能であり、
前記別の集積回路に関連する検出された前記メモリアクセス待ち時間に基づいて、前記複数の非計算ユニットに関連付けられたメモリパフォーマンス状態を変更するように動作可能である、
請求項19の装置。
【請求項24】
前記電力管理ロジックは、メモリパフォーマンス状態テーブルにアクセスすることによって前記電力レベルを調整するように動作可能であり、
前記メモリパフォーマンス状態テーブルは、
複数のメモリパフォーマンス状態であって、各状態は、前記パフォーマンス状態に対して許容可能なメモリデータ転送速度と、非計算メモリシステム電圧設定値と、データファブリッククロック周波数設定値と、メモリクロック周波数設定値と、を表すデータを含む、複数のメモリパフォーマンス状態を含み、
少なくとも第1のパフォーマンス状態及び第2のパフォーマンス状態は、同じ最大レベルメモリデータ転送レートを含み、前記第1のパフォーマンス状態は、前記第2のパフォーマンス状態と比較して、低いデータファブリック周波数設定値及び低い非計算メモリシステム電圧設定値を有する、
請求項19の装置。
【発明の詳細な説明】
【背景技術】
【0001】
システムオンチップ(systems on-chip、SOC)等の集積回路(integrated circuit、IC)システムは、中央処理ユニットコア、グラフィックス処理ユニットコア、ビデオコーダ及びデコーダ(コーデック)等のように、コアコンポーネントとも称される計算ユニット、並びに、メモリにアクセする他の計算ユニットを用いる。そのようなシステムオンチップは、読み取り及び書き込みの要求等のメモリアクセス要求を行わないが、代わりに、集積回路上で他のタスクを実行する、非計算コンポーネントとも称される非計算ユニットも含み、非計算ユニットの例としては、データファブリック、ダイナミックランダムアクセスメモリ(dynamic random access memories、DRAM)等のメモリのためのメモリコントローラ、DRAMメモリへの物理インターフェース回路(physical interface circuits、PHY)、PCI Expressインターフェース等の相互接続ロジック、ユニバーサルシリアルバス相互接続、及び、他のタイプの非計算ユニットが挙げられる。
【0002】
いくつかの(SOC)アーキテクチャには、異なるタイプのメモリに接続するデータファブリックに接続される複数のコア中央処理ユニット(central processing unit、CPU)及び/又は複数のコアグラフィックス処理ユニット(graphics processing unit、GPU)が含まれる。そのようなシステムは、他のSOCへのソケットにわたる帯域幅、及び、SOC内のデータファブリックへの帯域幅を監視し、CPUの検出された帯域幅ニーズに応じて、データファブリックのためのクロック周波数を増加又は減少させることによって、電力を節約し及び/又はパフォーマンスを向上させようと試みる。しかしながら、待ち時間に敏感な作業負荷がCPU上で実行している場合に、待ち時間問題は、システムのパフォーマンスを低下させ、電力消費の増加を引き起こす可能性がある。
【0003】
増加するデータセンタパフォーマンスニーズ、及び、急速に成長するビデオコンテンツ消費に伴って、SOCの電力消費は、増加するパフォーマンス要件を前提とすると、低減することが困難になりつつある。例えば、サーバシステムオンチップのためのSOC上の電力管理ユニットは、例えば、データセンタ及び他のサーバ製品内で使用され、カウンタ及び関連するロジック等のメモリ帯域幅モニターを使用することが知られており、そのメモリ帯域幅モニターは、CPUによって実行されるもの等のように、同種の作業負荷に必要とされる帯域幅の量を識別しようと試みる。いくつかのシステムでは、データファブリック及び他の非計算ユニットのクロック周波数(FCLK)等の非計算ユニットクロック周波数は、CPUのためにより多くの帯域幅が必要であることが検出された場合に、増加し、並びに、電圧レベルを、非計算ユニットに提供する電圧アイランドに関連付けて、SOC内のCPUのパフォーマンス状態を向上させる。例えば、メモリ帯域幅を増加させるために、データファブリック、メモリコントローラ、及び、メモリ帯域幅の関数であるDRAMメモリへの物理インターフェース(PHY)が使用される。しかしながら、そのような動作は、非計算ユニットによる高い電力消費を必要以上に引き起こす可能性があり、SOC製品パフォーマンスに悪影響を及ぼす。非計算ユニットの増加する電力消費は、計算ユニットにとって利用可能な全体的な総電力予算に重大な影響を及ぼし得る。これは、所定の電力予算の下で、計算ユニットのパフォーマンスを低下させる可能性がある。
【0004】
メモリシステムの非計算ユニット又は非計算ユニットには、例えば、データファブリック、メモリコントローラ及び物理インターフェース(PHY)が含まれ、これらは、組み合わさって、メモリ帯域幅に大きな影響を及ぼす可能性がある。使用されていない非計算ユニットの待機電力のリーク、又は、接続若しくは使用されていない複数のディスプレイ、PCI Express及びUSBインターフェース等の入力/出力コンポーネントも電力を消費する。
【0005】
システムオンチップ計算ユニット(例えば、メモリクライアント)上の異なる作業負荷は、データファブリック及びメモリシステムに異なる要求を課す。高解像度ゲーム等の場合、メモリ帯域幅が、計算エンジンのボトルネックとなる可能性がある。低解像度ゲーム等のように、多くのCPU作業負荷における他のアプリケーションは、メモリから要求を取り出すための待ち時間に敏感である。また、旧来のゲーム(1080p解像度ゲーム等)も、メモリ待ち時間に敏感である。他の作業負荷は、ビデオ編集機のためのコンテンツ制作ソフトウェア等のように、メモリ帯域幅に敏感である。
【0006】
また、現在のメモリパフォーマンス状態アルゴリズムは、コース(course)帯域幅要求に基づく。各パフォーマンス状態は、帯域幅カットオフをサポートする。要求が満たされない場合、次のより高い適切な状態が、電力管理ユニットによって選択される。パフォーマンス状態が高いほど、より高い周波数及び電圧で実行される。例えば、同種計算ユニット(例えば、中央処理ユニット)帯域幅要求に基づいて、データファブリック周波数が増加され、メモリコントローラ周波数が増加され、及び、非計算ユニットの電圧が全て上昇又は下降する。これは、より高い電力を必要とする。帯域幅は、データを通信するために使用される並列データバスの数、データバス幅及び要素の周波数の関数である。既存の解決策は、より多くの帯域幅を提供するためのレバーとして周波数を使用するが、周波数が高いほど、そのような帯域幅を送達するのにより高い電圧及び電力コストを必要とすることを示唆する。
【0007】
集積回路のための電力管理システムを改善して、電力消費及びパフォーマンスを向上させることが望ましい。
【0008】
実施形態は、同様の符号が同様の要素を表す以下の図を伴う場合に、以下の説明を考慮してより容易に理解されるであろう。
【図面の簡単な説明】
【0009】
図1】本開示に記載される一例による、異種作業負荷タイプ検出及び非計算ユニット電力制御を伴う電力管理を含む集積回路を例示するブロック図である。
図2】本開示に記載される一例による、1つ以上の集積回路のための電力管理を提供するための方法を示すフローチャートである。
図3】本開示に記載される一例による、待ち時間及び帯域幅ベースの非計算ユニット電力制御を電力管理に提供する集積回路を示すブロック図である。
図4】以下に記載される1つ以上の例による、1つ以上の集積回路に電力管理を提供するための方法を示すフローチャートである。
図5】本開示に記載される一例による、メモリ待ち時間ベースの非計算ユニット電力制御を伴う電力管理制御を含む装置を示すブロック図である。
図6】本開示に記載される一例による、非計算ユニット電力制御を用いる装置を示すブロック図である。
図7】本開示に記載される一例による、メモリパフォーマンス状態テーブルを示す図である。
図8】本開示に記載される一例による、電力管理ロジックを示すブロック図である。
図9】本開示に記載される一例による、メモリパフォーマンス状態変化を示す状態図である。
図10】本開示に記載される一例による、電力管理を提供するための方法を示すフロー図である。
図11】本開示に記載される一例による、検出される待ち時間遅延を示すタイミング図である。
【発明を実施するための形態】
【0010】
以下の説明において、異なる図面における同一の符号の使用は、同様の又は同一のアイテムを示す。別段言及されなければ、「結合される」という単語及びその関連する動詞形は、当該技術分野で知られている手段による直接接続及び間接電気接続の両方を含み、また、別段言及されなければ、直接接続の任意の記述は、好適な形態の間接電気接続を使用する代替の実施形態も意味する。
【0011】
方法及び装置は、いくつかの実施形態では、作業負荷認識方式(workload-aware manner)で、データファブリッククロック、メモリコントローラクロック、相互接続クロックのうち1つ以上を制御することによって、非コアユニットとも称される非計算ユニットへの電力レベルの制御を提供する。いくつかの実施形態では、非コアユニットの電力レベルは、メモリパフォーマンス状態(P状態)内の方式でグループ化される。いくつかの例では、実行時間電力管理動作が、作業負荷のメモリ帯域幅及び/又はメモリ待ち時間特性に基づいて、非計算ユニット動作状態を決定する。
【0012】
いくつかの実施形態では、方法及び装置は、待ち時間及び/又は帯域幅についての状態及びアプリケーション固有要件(application specific requirements)を区別する。いくつかの例では、使用ケースが待ち時間に敏感である場合にのみ、特定のデータファブリック周波数が引き上げられる。特定の実施形態では、帯域幅中心の適用について、周波数は、周波数を最小レベルに維持しながら、従来のシステムよりも計算ユニットによってデータファブリックに対して利用可能な多数のポートを使用すること等によって、並列インターフェースを介して最大帯域幅を送達するのに十分な最小レベルに維持される。いくつかの実施形態では、方法及び装置は、サーバシステム内の複数のソケット間のコヒーレントトラフィックの待ち時間要件を考慮に入れて、SOC内と同様にファブリック周波数を決定する。非計算ユニットは、クロック周波数及び他の依存性等のように、それらの間に依存性を有する場合が多い。
【0013】
特定の実施形態では、1つ以上の集積回路(IC)に電力管理を提供するための方法は、IC上の複数の異種計算ユニットの各々の上で実行するそれぞれの作業負荷に関連付けられたメモリ帯域幅レベルを決定することと、決定されたメモリ帯域幅レベルに基づいて、IC上のメモリシステムの少なくとも1つの非計算ユニットの電力レベルを、第1の電力レベルから第2の電力レベルに調整することと、を含む。
【0014】
いくつかの例では、メモリ帯域幅レベルは、IC上の複数の異種計算ユニットの各々に関連付けられたメモリアクセストラフィックを監視することを含み、その少なくとも1つの非計算ユニットを使用して、複数の異種計算ユニットによって使用されるメモリにアクセスする。
【0015】
特定の例では、非計算ユニットは、異種計算ユニットとメモリとの間でデータを転送するデータファブリックを含み、メモリシステムの非計算ユニットの電力レベルは、より高いデータファブリッククロック周波数設定値及びより高い電圧レベルを用いて同じ最大レベルメモリデータ転送レートを提供する別のメモリパフォーマンス状態と比較して、データファブリックの低減された周波数クロック及び低減された電圧レベルを用いて、規定の電力割り当てについて最大レベルメモリデータ転送レートを提供するメモリパフォーマンス状態を選択することを含む。
【0016】
いくつかの例では、電力レベルを調整することは、メモリパフォーマンス状態テーブルにアクセスすることを含み、そのメモリパフォーマンス状態テーブルは、複数のメモリパフォーマンス状態であって、各状態が、パフォーマンス状態に対して許容できるメモリデータ転送速度、非計算メモリシステム電圧設定値、データファブリッククロック周波数設定値、及び、メモリクロック周波数設定値を表すデータを含む、複数のメモリパフォーマンス状態を含み、少なくとも第1のパフォーマンス状態及び第2のパフォーマンス状態は、同じ最大レベルメモリデータ転送レートを含み、第1のパフォーマンス状態は、第2のパフォーマンス状態と比較して、低いデータファブリック周波数設定値及び低い非計算メモリシステム電圧設定値を有する。
【0017】
特定の実施形態では、集積回路は、複数の異種計算ユニットと、複数の計算ユニットに動作可能に結合された複数の非計算ユニットと、を含む。電力管理ロジック(Power management logic、PML)は、IC上の複数の異種計算ユニットの各々の上で実行するそれぞれの作業負荷に関連付けられたメモリ帯域幅レベルを決定し、決定されたメモリ帯域幅レベルに基づいて、IC上のメモリシステムの少なくとも1つの非計算ユニットの電力レベルを第1の電力レベルから第2の電力レベルに調整する。
【0018】
いくつかの例では、電力管理ロジックは、IC上の複数の異種計算ユニットの各々に関連付けられたメモリアクセストラフィックを少なくとも監視することによって、メモリ帯域幅レベルを決定し、少なくとも1つの非計算ユニットは、複数の異種計算ユニットによって使用されるメモリにアクセスするために使用される。
【0019】
特定の例では、少なくとも1つの非計算ユニットは、異種計算ユニットとメモリとの間でデータを転送するデータファブリックを含み、電力管理ロジックは、メモリシステムの非計算ユニットの電力レベルを、少なくとも、より高いデータファブリッククロック周波数設定値及びより高い電圧レベルを用いて同じ最大レベルメモリデータ転送レートを提供する別のメモリパフォーマンス状態と比較して、データファブリックの低減された周波数クロック及び低減された電圧レベルを用いて、規定の電力割り当てについて最大レベルメモリデータ転送レートを提供するメモリパフォーマンス状態を選択することによって調整する。
【0020】
いくつかの例では、電力管理ロジックは、メモリパフォーマンス状態テーブルにアクセスすることによって電力レベルを調整し、そのメモリパフォーマンス状態テーブルは、複数のメモリパフォーマンス状態であって、各状態が、パフォーマンス状態に対して許容できるメモリデータ転送速度、非計算メモリシステム電圧設定値、データファブリッククロック周波数設定値、及び、メモリクロック周波数設定値を表すデータを含む、複数のメモリパフォーマンス状態を含み、少なくとも第1のパフォーマンス状態及び第2のパフォーマンス状態は、同じ最大レベルメモリデータ転送レートを含み、その第1のパフォーマンス状態は、第2のパフォーマンス状態と比較して、低いデータファブリック周波数設定値及び低い非計算メモリシステム電圧設定値を有する。
【0021】
特定の実施形態では、集積回路は、複数の計算ユニットと、その複数の計算ユニットに動作可能に結合された複数の非計算ユニットと、を含む。電力管理ロジックは、複数の計算ユニット上で実行する作業負荷に関連付けられたメモリアクセス待ち時間を検出し、検出されたメモリアクセス待ち時間に基づいて、複数の非計算ユニットに関連付けられたメモリパフォーマンス状態を変更する。
【0022】
いくつかの例では、装置は、少なくとも別の集積回路とデータを通信するように構成されたデータファブリックを含み、電力管理ロジックは、別のICの計算ユニットに関連付けられたメモリアクセス待ち時間を検出し、別の集積回路に関連付けられた検出されたメモリアクセス待ち時間に基づいて、複数の非計算ユニットに関連付けられたメモリを変更する。
【0023】
特定の例では、電力管理ロジックは、IC上の複数の異種計算ユニットの各々の上で実行するそれぞれの作業負荷に関連付けられたメモリ帯域幅レベルを決定し、検出されたメモリアクセス待ち時間及び決定されたメモリ帯域幅レベルの両方に基づいて、メモリパフォーマンス状態を選択する。
【0024】
いくつかの例では、複数の非計算ユニットは、データファブリックと、1つ以上のメモリコントローラと、メモリへの関連するPHYインターフェース等のメモリ制御ロジックと、を含む。電力管理ロジックは、中央処理コア計算ユニットに関連付けられた検出されたメモリ待ち時間レベル、及び、グラフィックス処理コア計算ユニットに関連付けられた決定されたメモリ帯域幅レベルを表すデータ間のアービトレーションを行うことによって、メモリパフォーマンス状態を選択する。
【0025】
特定の例では、電力管理ロジックは、実行時間中に中央処理計算ユニットによって出されるメモリロード要求に関連付けられたメモリアクセス待ち時間を検出するメモリ待ち時間モニターロジックと、複数の計算ユニットのうち他の計算ユニットに関連付けられたメモリ帯域幅レベルを検出するメモリ帯域幅監視ロジックと、を含む。
【0026】
いくつかの例では、電力管理ロジックは、別の集積回路上の計算ユニットに関連付けられたメモリ帯域幅を検出するように構成された集積回路間メモリ帯域幅モニターロジック(cross integrated circuit memory bandwidth monitor logic)を含み、電力管理ロジックは、別の集積回路からの検出されたメモリ帯域幅レベルに基づいて、メモリパフォーマンス状態を、データファブリッククロック周波数を最高パフォーマンス状態レベルに増加させることを含む最高電力状態に増加させる。
【0027】
特定の例では、電力管理ロジックは、少なくとも1つの計算ユニットの待ち時間の改善を、少なくとも別の計算ユニットの帯域幅の改善よりも優先する。
【0028】
いくつかの例では、電力管理ロジックは、少なくとも第1の計算ユニットに関連付けられた作業負荷のためのメモリ待ち時間を検出し、検出されたメモリ待ち時間に基づいて、第1のメモリパフォーマンス状態を提供するメモリ待ち時間検出ロジックを含む。特定の実施形態では、電力管理ロジックは、少なくとも第2の計算ユニットによって使用されるメモリ帯域幅レベルを検出し、検出されたメモリ帯域幅レベルに基づいて、第2のメモリパフォーマンス状態を提供するメモリ帯域幅検出ロジックを含む。いくつかの実施形態では、電力管理ロジックは、第1及び第2のメモリパフォーマンス状態に基づいて、及び、利用可能な電力ヘッドルームに基づいて、最終的なメモリパフォーマンス状態を選択するアービトレーションロジックを含む。
【0029】
特定の例では、複数の計算ユニットは、複数の異種計算ユニットを含み、電力管理ロジックは、IC上の複数の異種計算ユニットの各々の上で実行するそれぞれの作業負荷に関連付けられたメモリ帯域幅レベルを決定し、決定されたメモリ帯域幅レベルに基づいて、IC上のメモリシステムの少なくとも1つの非計算ユニットの電力レベルを第1の電力レベルから第2の電力レベルに調整する。
【0030】
いくつかの例では、電力管理ロジックは、IC上の複数の異種計算ユニットの各々に関連付けられたメモリアクセストラフィックを少なくとも監視することによって、メモリ帯域幅レベルを決定し、少なくとも1つの非計算ユニットは、複数の異種計算ユニットによって使用されるメモリにアクセスするために使用される。
【0031】
特定の実施形態では、装置は、メモリシステムと、メモリシステムに動作可能に結合された複数の計算ユニットと、メモリシステムの複数のメモリ非計算ユニットと、を含み、そのメモリ非計算ユニットは、データファブリックと、メモリコントローラと、メモリへのPHYインターフェース等のメモリインターフェースロジックと、を含む。電力管理ロジックは、複数の計算ユニット上のうち少なくとも1つで実行する作業負荷に関連付けられたメモリアクセス待ち時間を検出し、複数の計算ユニットのうち複数の上で実行するそれぞれの作業負荷に関連付けられたメモリ帯域幅レベルを決定し、検出されたメモリアクセス待ち時間及び決定されたメモリ帯域幅レベルに基づいて、複数の非計算ユニットに関連付けられたメモリパフォーマンス状態を変更する。
【0032】
いくつかの例では、電力管理ロジックは、データファブリックの動作状態を制御することによってメモリパフォーマンス状態を変更して、メモリ待ち時間に敏感な作業負荷が複数の計算ユニットのうち少なくとも1つによって実行されるという決定に応じて、データファブリックのクロック周波数を増加させて、メモリのための最大レベルメモリデータ転送レートを提供することと、帯域幅レベルの増加が計算ユニットのために必要であることに応じて、より高いデータファブリッククロック周波数設定値、及び、より高い電圧レベルと同じ最大レベルメモリデータ転送レートを提供する別のメモリパフォーマンス状態と比較して、データファブリックの低減された周波数クロック及び低減された電圧レベルを用いて、規定の電力割り当てについて最大レベルメモリデータ転送レートを提供するメモリパフォーマンス状態を選択することと、を行う。
【0033】
特定の例では、電力管理ロジックは、少なくとも第1の計算ユニットに関連付けられた作業負荷のためのメモリ待ち時間を検出し、検出されたメモリ待ち時間に基づいて、第1のメモリパフォーマンス状態を提供するメモリ待ち時間検出ロジックを含む。いくつかの実施形態では、電力管理ロジックは、少なくとも第2の計算ユニットによって使用されたメモリ帯域幅レベルを検出し、検出されたメモリ帯域幅レベルに基づいて、第2のメモリパフォーマンス状態を提供する帯域幅検出ロジックを含む。いくつかの実施形態では、電力管理ロジックは、第1及び第2のメモリパフォーマンス状態に基づいて、及び、利用可能な電力ヘッドルームに基づいて、最終的なメモリパフォーマンス状態を選択するアービトレーションロジックを含む。いくつかの例では、電力管理ロジックは、少なくとも1つの計算ユニットの待ち時間の改善を、少なくとも別の計算ユニットの帯域幅の改善よりも優先する。
【0034】
特定の例では、装置は、データファブリックとインターフェース接続し、両方のIC内の計算ユニットにインターフェース接続するコヒーレントデータファブリックソケットを含む。電力管理ロジックは、コヒーレントデータファブリックソケットを使用して、計算ユニットに関連付けられたメモリアクセス待ち時間を検出し、他の集積回路に関連付けられた検出されたメモリアクセス待ち時間に基づいて、複数の非計算ユニットに関連付けられたメモリパフォーマンス状態を変更する。
【0035】
いくつかの例では、電力管理ロジックは、複数のメモリパフォーマンス状態を含むメモリパフォーマンス状態テーブルにアクセスすることによって電力レベルを調整し、各状態は、パフォーマンス状態に対して許容できるメモリデータ転送速度、非計算メモリシステム電圧設定値、データファブリッククロック周波数設定値、及び、メモリクロック周波数設定値を表すデータを含み、少なくとも第1のパフォーマンス状態及び第2のパフォーマンス状態は、同じ最大レベルメモリデータ転送レートを含み、その第1のパフォーマンス状態は、第2のパフォーマンス状態と比較して、低いデータファブリック周波数設定値及び低い非計算メモリシステム電圧設定値を有する。
【0036】
図1は、システムオンチップ又は任意の他の好適な集積回路等の集積回路100の例を示し、この例は、各々がデータを処理し、キャッシュメモリ、揮発性若しくは不揮発性メモリ等の共有メモリ、又は、任意の好適なメモリ等のメモリにアクセする複数の計算ユニット102を含む。いくつかの実施形態では、計算ユニットは、複数の非計算ユニット104を介してアクセス可能である。一実施形態では、非計算ユニットは、メモリシステムのコンポーネントであり、このコンポーネントは、いくつかの実施形態では、DRAM又は任意の他の好適なメモリ等のメモリ106を含む。このメモリ106は、いくつかの実施形態では、集積回路100内に集積化され、他の実施形態では、チップ外にある。この例では、計算ユニット102は、異種計算ユニットであるが、同種計算ユニットも使用することができる。
【0037】
集積回路100は、好適な通信経路110を介して、複数の異種計算ユニットのための電力設定値、及び、複数の非計算ユニットのための電力設定値を制御する電力管理ロジック108を含む。この実施形態では、電力管理ロジック108は、以下で更に説明されるように、異種作業負荷タイプ検出及び非計算電力消費を制御するための非計算ユニット電力制御を含む。この例では、キャッシュメモリ、レジスタメモリ又は任意の他の好適なメモリ等のメモリ112は、電力管理ロジック108が非計算ユニット104のためのクロック周波数及び電圧設定値を制御するためのメモリパフォーマンス状態テーブル114を提供する。いくつかの実施形態では、電力管理ロジック108は、テーブルを生成する。特定の実施形態では、メモリパフォーマンス状態テーブル114は、メモリに記憶され、電力管理ロジックによってアクセス可能である。テーブルが使用される場合、規定の各最大電力割り当てのための個別のテーブルにより、IC、又は、ICがモバイルデバイスであるか若しくは非モバイルデバイスであるか等にかかわらず使用されるデバイスのタイプに応じて、異なる制御が可能になる。当技術分野で知られているように、メモリ112は、所望であれば、異種計算ユニット102のパフォーマンス状態を制御するための他のパフォーマンス状態テーブルも同様に含む。
【0038】
いくつかの実施形態では、集積回路100は、システムオンチップであり、そこでは、異種計算ユニットは、各々、異なるタイプの計算ユニットであり、その計算ユニットは、中央処理コア116、グラフィックスコア118、及び、ビデオコーデック等の1つ以上のマルチメディアエンジン120を含む。そのような集積回路は、いくつかの例では、データセンタサーバ、ラップトップ、デスクトップ、ゲームコンソール、プリンタ、スマートフォン、ウェアラブル、及び、任意の他の好適なデバイスにおいて用いられる。したがって、集積回路は、いくつかの例では、モバイルデバイスの場合にバッテリーに結合され、他の実施形態では、電源が電源コンセント若しくは他の無制限電源である場合のサーバ、デスクトップ、ゲームコンソール又は他のデバイスにおいて使用される。
【0039】
この実施形態及び他の実施形態では、電力管理ロジック108は、ファームウェアを実行するマイクロコントローラとして実装されるが、以下に限定されない、1つ以上の状態機械、フィールドプログラマブルゲートアレイ又は他の実装等のように、任意の好適な構成が用いられ得る。更に、この例における電力管理ロジック108は、以下で更に説明されるように、メモリ帯域幅モニターを含み、そのメモリ帯域幅モニターは、メモリ106又は任意の他の好適なメモリに対して異種計算ユニット102の各々によって使用されるメモリ帯域幅レベルを検出するように構成される。
【0040】
電力管理ロジック108は、IC上の複数の異種計算ユニットの各々に関連付けられたメモリアクセストラフィックを監視することによって、メモリ帯域幅レベルを決定する。この例では、非計算ユニットを使用して、複数の異種計算ユニットによって使用されるメモリにアクセスし、一例では、非計算ユニットは、データファブリックを含み、別の非計算ユニットは、メモリコントローラを含み、別の非計算ユニットは、物理メモリインターフェース(PHY)を含む。いくつかの実施形態では、非計算ユニットは、異種計算ユニットとメモリ106との間でデータを転送するデータファブリックを含む。いくつかの実施形態では、GPU及びCPUの両方が、電力制約条件下で、最大帯域幅及び最小待ち時間から恩恵を受けることができるのに対して、電力管理ロジックは、例えば、CPUトラフィックが待ち時間に対して最適化されるべきであり、グラフィックストラフィックがパフォーマンス/ワットに対して最適化されるべきであるという静的仮定(static assumptions)を行う。マルチメディアユニット(Multimedia unit、MM)トラフィックは、待ち時間及び帯域幅の両方に敏感であり、MMトラフィック要求を検出すると、以下でも説明されるように、電力管理ロジックは、非コアユニットをメモリ状態P0に競合させる。
【0041】
いくつかの実施形態では、非計算ユニットのうち何れかは、データファブリックを含み、別の非計算ユニットは、データファブリックと通信するメモリコントローラを含み、別の非計算ユニットは、メモリコントローラとメモリ106との間に物理(PHY)メモリインターフェースを含み、いくつかの実施形態では、非計算ユニットは、PCIE、ユニバーサルシリアルバス、並びに、他の相互接続回路等の相互接続回路及び入力/出力相互接続回路を含む。以下で更に説明されるように、データファブリックは、異種計算ユニット102とメモリ106との間でデータを転送する。
【0042】
図2も参照すると、フローチャートは、1つ以上の集積回路に電力管理を提供するための方法を示しており、いくつかの実施形態では、電力管理ロジック108によって実行される。ただし、任意の他の好適なロジックが動作を実行することができ、その動作が任意の好適な順序で実行され得ることが認識されるであろう。ブロック200に示すように、本方法は、複数の異種計算ユニット102の各々の上で実行するそれぞれの作業負荷に関連付けられたメモリ帯域幅レベルを決定することを含む。ブロック202によって示されているように、本方法は、複数の異種計算ユニット102の各々の上で実行するそれぞれの作業負荷に関連付けられた決定されたメモリ帯域幅レベルに基づいて、メモリシステムの非計算ユニット104のうち少なくとも1つの電力レベルを、第1の電力レベルから第2の電力レベルに調整することを含む。
【0043】
言い換えると、集積回路100は、複数の異種計算ユニット102、複数のメモリシステム非計算ユニット104及び複数の異種タイプの作業負荷のうち何れがIC上の異種計算ユニットのうち1つ以上によって実行されているかを判定する電力管理ロジック108を含む。これは、以下で更に説明されるように、各計算ユニットについて帯域幅検出器を使用し、各計算ユニットの帯域幅使用量を評価することによって行われる。電力管理ロジック108は、決定されたタイプの異種作業負荷に対して増加した電力割り当てを提供する、データファブリック等の少なくとも1つのメモリシステム非計算ユニットの動作状態を調整する。例えば、非計算ユニット電力を減少させて、より多くの電力が、計算ユニット電力に適用するために利用可能であるようにする。例えば、計算の電圧及び/又は動作周波数は、計算ユニットのためのPStateテーブルを使用すること等を通じた既知の技術を使用して、電力管理ロジック108によって増加される。
【0044】
図3は、図1に示されたものと同様の帯域幅監視ベース非計算ユニット電力制御に加えて、CPUコア116等の非計算ユニットに関連付けられたメモリ待ち時間を監視する電力管理ロジック302を用いる集積回路300の別の例を示すブロック図である。いくつかの実施形態では、電力管理ロジック302は、帯域幅監視を提供せずに、計算ユニットのうち1つ以上についてのメモリ待ち時間監視を提供する。説明のために、この例における電力管理ロジック302は、メモリ待ち時間監視及び帯域幅監視の両方を用いて、非計算ユニット電力レベルを制御する。いくつかの実施形態における計算ユニット102は、全てのCPUコア又は全てのCPU複合体オンチップ等のように、全て同じタイプ(すなわち、同種)であり、したがって、異種ではないことが認識されるであろう。しかしながら、この例では、計算ユニット102は、異種計算ユニットであるように示されている。異種計算ユニットは、異なるタイプのユニットであるのに対して、同種計算ユニットは、全て同じタイプであり、例えば、全てのCPU、全てのGPU、又は、例えば、全てのマルチメディアユニットを意味する。
【0045】
この例における電力管理ロジック302は、電力管理ロジック108と同様であるだけでなく、メモリ待ち時間検出も含み、その結果、メモリ待ち時間及びメモリ帯域幅監視の両方を使用して、非計算ブロックのための好適な電力レベルを決定する。更に、この実施形態は、別のSOC等の別の集積回路306と相互接続するために使用される集積回路間ソケットの使用を示している。このソケットは、例えば、データファブリックと相互接続する。パフォーマンス状態テーブル114は、所定の動作モードのために割り当てられた異なる規定の最大電力レベルに対する、非計算ユニットのためのメモリパフォーマンス状態設定値を含む。例えば、一例におけるメモリPStateテーブルは、例えば、ラップトップ構成の場合、15ワットで最高限度に達するのに対して、別のメモリPStateテーブルは、デスクトップ又はサーバの実施形態の場合、45ワットの電力割り当てを可能にし、ただし、任意の好適な電力割り当てを、任意の好適な数のパフォーマンス状態テーブルで用いることができる。
【0046】
図4を参照すると、集積回路400等の1つ以上の集積回路に電力管理を提供するための方法が示されている。動作は、任意の好適な順序で行われ、任意の好適な構造によって実行され得ることが認識されるであろう。特定の実施形態では、本方法は、電力管理ロジック302によって実行される。一実施形態では、電力管理ロジック302は、CPUコア116等の同種ユニットのためのメモリアクセス待ち時間検出のみを実行するように構成される。他の実施形態では、電力管理ロジック302は、計算ユニットのためのメモリ待ち時間検出及びメモリ帯域幅レベル検出の両方を実行する。
【0047】
いくつかの実施形態では、ブロック402に示すように、本方法は、複数の計算ユニットのうち少なくとも1つの上で実行する作業負荷に関連付けられたメモリアクセス待ち時間を検出することを含む。例えば、CPUコア上で実行する作業負荷は、CPUコア116によって経験したメモリ待ち時間を評価するメモリ待ち時間検出器の使用を通じて監視される。ブロック404に示すように、本方法は、検出されたメモリアクセス待ち時間に基づいて、CPU等の非計算ユニットに関連付けられたメモリパフォーマンス状態を変更することを含む。例えば、待ち時間の誤りがCPUについて検出された場合、電力管理ロジックは、メモリ電力状態をその最低レベル(最高電力状態)に増加させ、その結果、CPUは、作業負荷を実行する間、待ち時間による中断を経験しない。したがって、待ち時間作業負荷は、帯域幅集中的作業負荷よりも優先される。
【0048】
特定の実施形態では、本方法は、同じ又は他の計算ユニットについて検出される帯域幅レベルも考慮に入れて、所定のシナリオについて最良のメモリパフォーマンス状態を提供しようと試みる。ブロック406に示すように、本方法は、この例において、GPUコア、マルチメディアエンジン及びCPUコアを含む複数の計算ユニットのうち少なくとも1つの上で実行するそれぞれの作業負荷に関連付けられたメモリ帯域幅レベルを決定することを含む。ブロック408に示すように、電力管理ロジックは、ブロック402からの検出されたメモリアクセス待ち時間、及び、様々な計算ユニットに関連付けられた決定されたメモリ帯域幅レベルの両方を考慮に入れ、検出されたメモリアクセス待ち時間に基づいて、且つ、ブロック406からの決定された帯域幅レベルに基づいて、メモリパフォーマンス状態を変更する。例えば、インソケット又はオンチップのローカル待ち時間に敏感なスレッドに対して、電力管理ロジック302は、帯域幅最適化よりも待ち時間最適化を優先する。ただし、複数の計算ユニットの帯域幅要件が特定のレベルを超えて、帯域幅の使用がボトルネックになる場合、電力管理ロジックは、待ち時間最適化設定値を上書きする。また、ソケット間のコヒーレントデータ転送のための待ち時間等のように、複数の集積回路間のソケットにわたる待ち時間感度も対処される。例えば、トランザクションデータベースのような作業負荷は、データセンタにおいて大容量のメモリ領域を必要とし、各ソケットに必ずしも完全に局所化されないが、待ち時間問題に敏感であり得る。そのような状況では、電力管理ロジックは、ファブリック周波数及び電圧を引き上げる。何れにしても、例えば、メモリ帯域幅は、それ以上高くすることができない。
【0049】
図5は、データ処理システム内で使用するのに好適なAPU等の集積回路(IC)300のブロック図を示している。ただし、IC300は、例えば、デスクトップコンピュータ、ゲームコンソール、ラップトップ、タブレット、ウェアラブル等のモバイルデバイス、又は、他の好適なデバイスで使用するためのSOCを含む、任意の好適なICであってもよい。この例では、IC300は、概して、中央処理ユニット(central processing unit、CPU)コア複合体210、グラフィックスコア118、ディスプレイエンジン若しくはマルチメディアエンジン120のセット、メモリ管理ハブ240、データファブリック518、周辺コントローラ260のセット、周辺バスコントローラ270のセット、システム管理ユニット(system management unit、SMU)280、並びに、メモリコントローラ290(メモリコントローラ522及びメモリコントローラ520)のセットを含む。
【0050】
CPUコア複合体210は、CPUコア116を含む。この例では、CPUコア複合体210が2つのCPUコアを含むが、他の実施形態では、CPUコア複合体は、任意の数のCPUコアを含むことができる。CPUコア116及び214の各々は、制御ファブリックを形成するシステム管理ネットワーク(system management network、SMN)に、且つ、データファブリック518に双方向に接続され、データファブリック518にメモリアクセス要求を提供することができる。CPUコア116及び214の各々は、単体のコアであってもよく、又は、更にキャッシュ等の特定のリソースを共有する2つ以上の単体のコアを有するコア複合体であってもよい。
【0051】
グラフィックスコア118は、頂点処理、フラグメント処理、シェーディング、テクスチャーブレンディング等のグラフィックス動作を、高度に統合化された並列方式で実行することができる高パフォーマンスグラフィックス処理ユニット(GPU)である。グラフィックスコア118は、SMNに且つデータファブリック518に双方向に接続され、メモリアクセス要求をデータファブリック518に提供することができる。この点について、APUは、CPUコア複合体210及びグラフィックスコア118が同じメモリ空間を共有する統合化メモリアーキテクチャか、又は、CPUコア複合体210及びグラフィックスコア118がメモリ空間の一部を共有するのに対して、グラフィックスコア118がCPUコア複合体210によってアクセス不可能なプライベートグラフィックスメモリも使用するメモリアーキテクチャの何れかをサポートすることができる。
【0052】
マルチメディアエンジン120又はディスプレイエンジンは、モニター上に表示するための、グラフィックスコア118によって生成されたオブジェクトをレンダリングしてラスタライズする。グラフィックスコア118及びディスプレイエンジンは、メモリシステム内の好適なアドレスへの均一な変換のための共通のメモリ管理ハブ240に双方向に接続され、そのメモリ管理ハブ240は、そのようなメモリアクセスを生成して、メモリシステムから戻される読み取りデータを受信するためのデータファブリック518に双方向に接続されている。
【0053】
データファブリック518は、任意のメモリアクセスエージェントとメモリコントローラ290(メモリコントローラ522及びメモリコントローラ520)との間でメモリアクセス要求及びメモリ応答をルーティングするためのクロスバースイッチを含む。また、データファブリックは、システム構成に基づいてメモリアクセスの送信先を決定するための、BIOSによって規定されるシステムメモリマップ、並びに、各仮想接続のためのバッファも含む。
【0054】
周辺コントローラ260は、USBコントローラ506及びSATAインターフェースコントローラ264を含み、これらの各々は、システムハブ266に且つSMNバスに双方向に接続されている。これらの2つのコントローラは、APU内で使用され得る周辺コントローラの単なる例示である。
【0055】
周辺バスコントローラ270は、システムコントローラ又は「サウスブリッジ」(Southbridge、SB)272、及び、PCIeコントローラ504を含み、これらの各々は、入力/出力(input/output、I/O)ハブ508に且つSMNバスに双方向に接続されている。また、I/Oハブ508は、システムハブ266に且つデータファブリック518にも双方向に接続されている。したがって、例えば、CPUコアは、データファブリック518がI/Oハブ508を介してルーティングするアクセスにより、USBコントローラ506、SATAインターフェースコントローラ264、SB272又はPCIeコントローラ504内のレジスタをプログラムすることができる。
【0056】
SMU280は、APU上のリソースの動作を制御して、それらの間の通信を同期させるローカルコントローラである。SMU280は、APU上の様々なプロセッサの電力アップ順序付けを管理し、リセット信号、有効信号又は他の信号を介して複数のオフチップデバイスを制御する。SMU280は、APUのコンポーネントの各々にクロック信号を提供するために、図2には示されていない、位相ロックループ(phase locked loop、PLL)等の1つ以上のクロックソースを含む。また、SMU280は、様々なプロセッサ及び他の機能ブロックのための電力も管理し、CPUコア116及び214、並びに、グラフィックスコア118からの測定された電力消費値を受信して、適切な電力状態を決定することができる。
【0057】
また、APUは、様々なシステム監視機能及び節電機能も実装する。特に、1つのシステム監視機能は熱監視である。例えば、APUが高温になった場合、SMU280は、CPUコア116及び214、並びに/又は、グラフィックスコア118の周波数及び電圧を減少させることができる。APUが高温になりすぎる場合、SMUを完全に停止することができる。SMNバスを介してSMU280によって外部センサから熱事象を受けることもでき、SMU280は、それに応じてクロック周波数及び/又は電源電圧を低減することができる。
【0058】
また、図5は、SOC間のコヒーレントデータファブリックを接続するソケット等のソケット308を介して相互接続されている複数の集積回路300及び306を示している。そのような実施形態は、サーバシステム及びデータセンタ、並びに、複数のSOCを用いる任意の他のデバイスで用いられ得る。したがって、この例では、ICは、データファブリックに且つ複数の計算ユニットのうちいくつかに結合されたコヒーレントデータファブリックソケットを含み、電力管理ロジック302は、コヒーレントデータファブリックソケットを使用して、計算ユニットに関連付けられたメモリアクセス待ち時間及び/又は帯域幅を別のICから検出し、別の集積回路に関連付けられた検出されたメモリアクセス待ち時間に基づいて、複数の非計算ユニットに関連付けられたメモリパフォーマンス状態を変更する。一例では、これは、より多くの帯域幅がSOC内又は他のソケット内のSOCに対して必要である場合に、データファブリックのクロック周波数及び動作電圧を増加させて、データファブリックを介して帯域幅を改善することによって行われる。
【0059】
この例にも示されているように、集積回路300は、入力/出力ハブ508を介した、相互接続PCIeコントローラ504、506等のいくつかの異なる非計算ユニットを含む。帯域幅検出器510は、USB及びPCI Express相互接続を使用するクライアントのために、例えば、メモリ106にアクセスして、I/Oハブによってデータファブリックに渡されたメモリ帯域幅レベルを検出するように構成されている。独立した帯域幅検出器512、514、516は、データファブリック518とは異なるデータポートを介して、この例ではディスプレイエンジン、グラフィックスコア及びCPUコアである異種計算ユニットに関連付けられたメモリアクセストラフィックを監視することによって、メモリ帯域幅レベルを検出するように構成されている。データファブリック518は、この例では異種計算ユニット120、116、118の間で、及び、相互接続非計算ユニット506、504のためにデータを転送する。電力管理ロジック(電力管理コントローラとも称される)302は、計算ユニットの各々に関連付けられたメモリアクセストラフィックを監視することによって、計算ユニットの各々についてのメモリ帯域幅レベルを決定する。作業負荷のタイプは、データファブリック518を介してメモリ106にアクセスする計算ユニットのタイプから推定される。例えば、グラフィックスコアのメモリ帯域幅使用量を監視している帯域幅検出器514によって検出された高帯域幅レベルは、ゲームアプリケーションがグラフィックスコアによって作業負荷として実行されていると判定するために使用されるであろう。同様に、CPUコアによって使用される帯域幅レベルを監視するように構成された帯域幅検出器516は、CPUの集中的な作業負荷であると推定することができる。データファブリック518は、物理インターフェース524及び526とともにそれぞれメモリシステムを形成するそれぞれのメモリコントローラ520及び522にデータフローを提供する。いくつかの実施形態におけるメモリシステムは、メモリ106も含む。したがって、いくつかの実施形態では、非計算ユニット518~526は、メモリ106にアクセスするために使用され、計算ユニットによって使用されてメモリにアクセスする。
【0060】
この実施形態では、データファブリック518は、ソケット308を介して、データを少なくとも別の集積回路306と通信するように構成されている。電力管理ロジック302は、ソケット待ち時間検出器を介してメモリアクセス待ち時間を検出し、及び/又は、ソケット帯域幅検出器530を介して帯域幅を検出する。一実施形態におけるソケット帯域幅検出器530は、SOC306によって使用されているレーンの数を検出するレーン幅検出器である。使用されているレーンが多いほど、検出されるSOC306による帯域幅使用量が大きくなる。いくつかの実施形態では、ソケット帯域幅検出器530は、ソケット間待ち時間検出機構を含む。別のSOCについての待ち時間は、他のSOCからのCPUがメモリを要求しているかどうか等の作業負荷タイプに基づいて推定され得るか、又は、待ち時間が、以下で更に説明されるように、各SOCからの待ち時間カウンタを使用して計算され得る。したがって、電力管理ロジックは、他のIC306の計算ユニットに関連付けられたメモリアクセス待ち時間を検出し、データファブリック518、メモリコントローラ及び非計算ユニット520~526等の非計算ユニットに関連付けられたメモリパフォーマンス状態を変更して、SOC306に関連付けられた検出されたメモリアクセス待ち時間に基づいて、非計算ユニットに関連付けられたメモリパフォーマンス状態を変更する。
【0061】
電力管理ロジック302は、計算ユニット120~118の各々の上で実行するそれぞれの作業負荷に関連付けられたメモリ帯域幅レベルを決定し、検出されたメモリアクセス待ち時間及び決定されたメモリ帯域幅の両方に基づいて、メモリパフォーマンス状態を選択する。待ち時間検出器540は、メモリ待ち時間検出ロジックとも称され、DRAM等のメモリ106へのメモリアクセスと関連して、CPUについてのメモリアクセス待ち時間を測定するように構成されている。帯域幅検出器及び待ち時間検出器の各々は、例えば、特定の計算ユニットによる、望ましくない待ち時間量又は望ましくない帯域幅使用量を示す閾値を設定するための構成レジスタに記憶されているプログラム可能な閾値を用いる。電力管理ロジック302は、実行時間中に中央処理計算コア116(計算ユニット)によって出されたメモリロード要求に関連付けられたメモリアクセス待ち時間を検出する待ち時間検出器540を含む。また、電力管理ロジック302は、それぞれの計算ユニットの各々に関連付けられたメモリ帯域幅レベルを検出する帯域幅検出器516、514、512、510も含む。帯域幅検出器の場所は、例えば、メモリ106へのメモリアクセス要求(例えば、読み取り及び書き込み)に関連付けられた着信及び発信データを検出するための、データファブリックへのデータポートの一部として、又は、所望に応じて任意の他の好適なインターフェースにおいて等のように、集積回路内の任意の好適な場所であり得ることが認識されるであろう。帯域幅検出器512は、データファブリックのデータポートを介してダイ間帯域幅を検出する。帯域幅検出器510は、PCIe接続デバイス等のI/Oデバイスから帯域幅を検出する。
【0062】
いくつかの実施形態では、ソケット帯域幅検出器530は、集積回路306内の計算ユニットに関連付けられたメモリ帯域幅を検出する集積回路間メモリ帯域幅モニターロジックとして機能する。電力管理ロジック302は、他の集積回路からの検出されたメモリ帯域幅レベルに基づいて、メモリパフォーマンス状態を、データファブリッククロック周波数を最高パフォーマンス状態レベルに増加させることを含む最高電力状態に増加させる。例えば、ソケット帯域幅検出器530が閾値を上回る帯域幅使用レベルを検出した場合、電力管理ロジック302は、データファブリッククロック周波数及び非計算ユニット電圧を増加させ、並びに、メモリコントローラ等の他の非計算ユニットについて、以前のパフォーマンス状態レベルから、データファブリック及びメモリシステムが処理することができる帯域幅の量を増加させることが所望される場合には、クロック周波数を増加させる。
【0063】
電力管理ロジック302は、グラフィックスコア118等の別の計算ユニットの帯域幅改善よりも、CPUコア116等の計算ユニットの待ち時間改善を優先する。例えば、望ましくない量の待ち時間がCPUに対して検出された場合、より高い電力レベル(P1~P0等のより低い電力状態)が、電力管理ロジック302によって実施される。
【0064】
帯域幅検出器の各々は、帯域幅レベルデータ550等の帯域幅メトリックを電力管理ロジック302に提供する。同様に、待ち時間検出器540は、待ち時間カウントデータ552として示される遭遇した遅延負荷の数を示すカウントデータ等のように、メトリックの形態で測定された情報を提供する。いくつかの実施形態では、SOC306は、SOC304と同様の待ち時間及び帯域幅検出器構成を有するため、ソケット帯域幅検出器530ブロックは、SOC306からの測定された待ち時間情報をPMLに提供するSOC306内の待ち時間検出器を表し、その結果、以下で更に説明されるように、SOC306からの待ち時間情報は、待ち時間検出器540からの待ち時間情報と比較されることができる。電力管理ロジック302はまた、動作状態電力制御データ560を非計算ユニットにも提供して、例えば、非計算ユニットの各々によって使用されるクロック周波数及び電圧レベルを制御する。一実施形態における電力制御データ設定値は、パフォーマンス状態テーブル114に記憶される。
【0065】
概して、電力管理ロジックは、計算的に集中した作業負荷の場合、非計算ユニットメモリP状態を最低レベル(P0)に押し進めて、計算リソースへのより多くの電力割り当てを可能にする。メモリコントローラ周波数(UCLK)によって多大に影響を受ける帯域幅最適化のために、電力管理ロジックは、最も高いメモリ周波数状態に移動する。例として、メモリP状態変更を作動させることができる主な帯域幅経路は、DRAM読み取り及び書き込みトラフィック、相互接続帯域幅使用量(例えば、ソケット上でのダイ間通信リンク、リンク及びソケット間リンク)、並びに、入力/出力PCIeトラフィックである。
【0066】
ソケット内ローカル待ち時間に敏感なスレッドの場合、電力管理ロジックは、BW最適化よりも待ち時間最適化を優先する。ただし、BW要件が特定のレベルを超えた場合、BWは、ボトルネックになり、したがって、電力管理ロジックは、任意の待ち時間最適化決定を無効にする。更に、大容量のメモリ領域を必要とし、したがって、各ソケットに必ずしも完全には局所化されないトランザクションデータベースのような作業負荷は、ソケット間のコヒーレントデータ転送のための待ち時間に敏感になり得る。電力管理ロジックは、ソケットにわたる待ち時間要求を点検することによってそのようなケースを検出し、DRAM帯域幅がそれ以上高くすることができない(例えば、接続されているメモリデバイスの最大速度によって制約される)場合であっても、ファブリック周波数を引き上げる。
【0067】
電力最適化について、これは、2つの段階、すなわち、活性状態にある場合の電力最適化、及び、待機状態にある場合の電力最適化に分けられる。
【0068】
特に電力制限された15Wノートブックアプリケーションにおいて、高帯域幅及び最適pj/ビット要件を有するグラフィックスゲーム作業負荷等のように、活動中の電力(pj/ビット)が優先される。したがって、PState P2を使用して、非計算ユニット電力消費を低減し、GPU等の計算ユニットのクロック周波数を増加させ、したがって、より高い電力割り当てを可能にする。PMLは、当技術分野において知られているように、計算ユニットPStateテーブルを使用して、GPUクロックをより高い速度に設定する。バッテリー寿命作業負荷にとって重要である、待機条件(低BW)中の電力消費について、PMLは、非計算ユニットを選択して、最低非計算電圧設定値(Vmin)を有する最低PState(P3)で動作する。
【0069】
また、図6図7も参照すると、メモリパフォーマンス状態テーブル等のメモリパフォーマンス状態データの使用について説明されるであろう。任意の好適なデータ構造が用いられ得ることが認識されるであろう。図6は、集積回路300の一部の一例を示すブロック図であり、電力管理ロジック302が非計算ユニットのための、1つ以上のクロック周波数及び電圧を制御することを示している。この例では、FCLKは、データファブリック518のためのクロックであり、MEMCLKは、メモリへの物理インターフェース(PHY)524のためのクロックであり、UCLKは、メモリコントローラ520のためのクロックである。I/Oハブ又はPCIEブロック等の相互接続非計算ブロックは、相互接続クロックを使用する。電圧レベルは、この例では、メモリ非計算ユニット間で共有され、電力管理ロジック(PML)によって選択されたメモリパフォーマンス状態に応じて、クロック周波数とともに変化する。レジスタ600は、PMLによって使用されるプログラム可能な閾値を記憶して、待ち時間検出器540及び帯域幅検出器510~516によって取得された予測された又は実際の待ち時間メトリック及び帯域幅メトリックと比較する。
【0070】
図7を参照すると、メモリパフォーマンス状態(PState)テーブル700は、非計算ユニットのための動作設定値についての、PStateP0~P03と称される4つの電力レベルを示し、P0は、最高パフォーマンス状態であり、P3は、最低パフォーマンス状態である。電力管理ロジック302は、メモリパフォーマンス状態テーブル700にアクセスすることによって、電力レベルを調整する。このメモリパフォーマンス状態テーブル700は、複数のメモリパフォーマンス状態(P0~P3)を含み、各状態は、パフォーマンス状態に対する許容できるメモリデータ転送速度(例えば、3200MT/秒、1600MT/秒)、非計算メモリシステム電圧設定値(例えば、データファブリック、メモリコントローラ及びPHYのために使用される非コア電圧)、データファブリッククロック周波数設定値(FCLK)、メモリクロック周波数設定値(MEMCLK)、及び、メモリコントローラ(UCLK)設定値を表すデータを含む。パフォーマンス状態P2及びP0は、同じ最大レベルメモリデータ転送レート(例えば、3200MT/秒)を有し、状態P2は、計算ユニットにとって利用可能なより多くの電力予算を残すように、P0状態と比較して、低いデータファブリック周波数設定値及び低い非計算メモリシステム電圧設定値を有する。例えば、非計算ユニットのための電力レベルを低減することにより、PMLは、計算ユニットが、即座の非計算ユニット電力制御なしで利用可能な周波数/電圧よりも高い周波数/電圧で動作することを可能にすること等によって、より良好なパフォーマンスの選択肢を計算ユニットに適用することを可能にする。
【0071】
この例では、非計算ユニットは、メモリシステムの一部であり、データファブリック、メモリコントローラ、及び、PHYインターフェースを含む。PState P0は、CPU作業負荷及びライブビデオ再生を含む、ビデオコーデックによる高精細及び標準精細のビデオ/オーディオ再生等のマルチメディア再生作業負荷等のように、高帯域幅及び低待ち時間を必要とする作業負荷タイプのためのものである。PState P1は、電力が制約された作業負荷のために使用され、P0よりも低い電力レベルを使用しながら、作業負荷のための帯域幅及び待ち時間の最適レベルを提供するように最適化される。そのような作業負荷タイプは、マルチスレッドCPU作業負荷を含む。PState P2は、高帯域幅を提供し、ビット当たりのピコジュール(pj/ビット)動作のために最適化される、より低い非計算ユニット電力レベル設定値である。そのような作業負荷タイプは、グラフィックスゲーム作業負荷を含む。PState P3は、バッテリー節電レベルであり、低電力動作を提供するように最適化される。
【0072】
見てわかるように、全てのPStateは、MEMCLKと比較してデータファブリック周波数を半分にし、P0及びP1よりも低い電圧を有するPState P2を別にして、全ての非計算ユニットに対して同じ周波数を使用する。メモリ転送レート3200MT/sは、P0の場合と同様に、P2の場合と同じである。データファブリックは、計算ユニットに対してより広いデータポートを使用して、それらの計算ユニットがより低いデータファブリッククロックを用いて、より高い帯域幅を使用することを可能にする。例えば、データファブリックへのデータ経路は、特定の計算ユニットの電力、BW及び待ち時間を最適化するために、より広いデータ経路を必要とするエンジンに対してより広い。例えば、メモリインターフェースへのGPU118は、いくつかの他の計算ユニットの経路の2倍であり、その結果、データファブリックは、半分の速度で実行され、待ち時間を犠牲にして節電する。GPUエンジンは、CPU等の他のエンジンよりも多くの待ち時間を許容することができる。しかしながら、大幅に低減された非計算電力によって十分に克服されても、パフォーマンスにロスがある場合(GPUパフォーマンスは、FCLKが高くなるほど、高くなる)には、電力が制限される場合に、より高いGPUクロックが引き起こされる。P03は、バッテリー寿命を節約するために使用され、バッテリー寿命作業負荷のために使用される。
【0073】
電力管理ロジック302は、PState P0によって示されているように、データファブリックの動作状態を制御することによってメモリパフォーマンス状態を変更し、メモリ待ち時間に敏感な作業負荷が複数の計算ユニットのうち少なくとも1つによって実行されることに応じて、データファブリックのクロック周波数(FCLK)を増加させ、メモリ106に最大レベルメモリデータ転送レート(例えば、3200MT/秒)を提供する。帯域幅レベルの増加が計算ユニットにとって必要とされることに応じて、PML302は、より高いデータファブリッククロック周波数設定値及びより高い電圧レベルを用いて同じ最大レベルメモリデータ転送レートを提供する別のメモリパフォーマンス状態(P0)と比較して、データファブリックの低減された周波数クロック(例えば、P2の場合800MHz対P0の場合1600MHz)及び電圧レベル(P2の場合7V対P0の場合1.05V)を用いて、バッテリー式デバイスに対しては15Wの電力状態テーブル、又は、非バッテリー電力式デバイスに対しては40Wの規定の電力割り当て等の規定の電力割り当てについて最大レベルメモリデータ転送レート(例えば、3200MT/秒)を提供するメモリパフォーマンス状態(P2)を選択する。
【0074】
図8は、待ち時間検出器及び帯域幅検出器、並びに、帯域幅検出器510~514、530、540の各々によって提供されたメモリパフォーマンス状態に基づいて、及び、PMによって生成されるような利用可能な電力ヘッドルームデータに基づいて、最終的なメモリパフォーマンス状態を選択する、アービトレーションロジックとも称される、アービター900を用いる電力管理ロジックの例を示すブロック図である。例えば、従来のヘッドルーム計算は、SOC熱設計電力(PDP)、及び、SOCにわたる電力モニターからの情報等に基づいて実行されて、現在の電力消費量を計算し、利用可能な電力ヘッドルームを決定する。PMLは、帯域幅が必要とされる場合に非計算ユニット電力増加を生成するか、又は、待ち時間に敏感な作業負荷が検出された場合にデータファブリック周波数を増加させる。この例において待ち時間検出器540として示されたメモリ待ち時間検出ロジックは、SOC内又はSOCSにわたるものを含む要求が何処で発生したかに応じて、CPUコア等の特定の計算ユニットに関連付けられた作業負荷についてのメモリ待ち時間を検出し、検出されたメモリ待ち時間に基づいてメモリパフォーマンス状態902を提供する。同様に、帯域幅検出器510、512、514、530として示されたメモリ帯域幅検出ロジックは、各それぞれの計算ユニット(ソケット全体からの計算ユニット要求を含む)からの検出されたメモリ帯域幅レベルに基づいて、決定されたメモリパフォーマンス状態をそれぞれ提供する。
【0075】
例えば、待ち時間検出器及び帯域幅検出器の各々は、実際の待ち時間データ若しくはデータトラフィックメトリック、並びに/又は、予測待ち時間及び/若しくは予測帯域幅使用量を測定し、それ自体のパフォーマンス状態を探す、独立した最適化ユニットとして機能する。実際の実行時間データが監視されているいくつかの実施形態では、検出器は、監視されたメトリック906を、概して904として示された1つ以上の閾値と比較し、非計算ユニットメモリパフォーマンス状態を選択する。コントローラ908は、4つのメモリPStateのうち何れかを選択して、メモリパフォーマンス状態902としてアービター900に出力する。次いで、アービター900は、受信した全てのPStateの中の最大状態を選択する。最大とは、非計算ユニットによって提供される最も高い電力出力を指す。例えば、待ち時間遅延が閾値904を超えているために、待ち時間検出器540が、大量の待ち時間が経験されていることを検出した場合、コントローラ908は、DPMアービターに出力される最大PState P0を選択し、これは、待ち時間が最高の状態であるために、メモリパフォーマンス状態が既にP0にない場合、910によって示されるように、DPMアービターは、非計算ユニットメモリ状態の変化を引き起こすことであろう。独立したユニットは、メモリ帯域幅、メモリ待ち時間及びソケット間通信を監視する。
【0076】
いくつかの実施形態では、ソケット間通信は、例えば、ソケット間で帯域幅検出器530によって測定される。例えば、2つのソケット間のリモート待ち時間を最適化するために、帯域幅検出器530は、ソケット間の帯域幅を監視し、ソケット間活動に基づいてデータファブリック周波数を引き上げることになる非計算ユニットパフォーマンス状態を選択する。例えば、リンクがx16に進む場合、電力レベルは、最も高いPState(P0)に進むことによって引き上げられる。したがって、リモート待ち時間最適化は、純粋な帯域幅最適化よりも優先される。例えば、グラフィックスコアに関連付けられた帯域幅検出器514は、高帯域幅状態を検出することができ、ソケット間活動優先度を与える集積回路間帯域幅検出器530によって出力されるP0よりも低い状態であるPState P2を選択する。
【0077】
更に図8を参照すると、検出器は、個々に動作し、各検出器によって使用されるメトリックを考慮に入れている状態を選択する。アービター900は、活動モニターに基づいて最終決定を行い、PStateが現在設定されているPStateと異なる場合に、決定時間間隔毎にP状態の変更を強制する。
【0078】
いくつかの実施形態では、非計算PState動作は、無効とすることができる。例えば、プラットフォームにおいて(例えば、ユーザ設定値又はDRAM能力を介して)サポートされた最大DDR速度、及び、ICのために融合された最大FCLK周波数設定値に基づいて、電力管理ロジックは、実行時間電力管理のために、4つのメモリシステム非計算ユニットP状態を選択して訓練する。それらの状態のうち2つ(P2及びP1)が、実行時間活性電力管理のために使用され、それらは、実行時待ち時間/帯域幅検出動作が無効にされるときに固定される別の状態、及び、待機電力管理又は効率モード(パフォーマンス最適化のため)のための状態である。
【0079】
上述したように、PMLは、計算ユニットによる作業負荷の帯域幅及び/又は待ち時間監視に基づいて、非計算ユニットPStateを選択する。PMLは、検出された(予測を含む)作業負荷特性に基づいて、活性である場合に最低PState(例えば、P2)をデフォルトにし、非計算エンジンPState(例えば、P1、P0)をより上位に押し進めるように制御する。
【0080】
低待ち時間が望ましい特定のシナリオでは、PMLによって制御される、計算ユニットのためのより高い計算クロック(CCLK)が、依然として、より良好なパフォーマンスを提供することができる。いくつかの実施形態では、PMLは、PState変更機構がより高いP状態に積極的に切り替わり、待ち時間を低下させ、コアから電力を取り去り、CCLKを低下させ、パフォーマンスに悪影響を及ぼすことを防止する。いくつかの実施形態では、ユーザは、ユーザインターフェースを介してレジスタ内にCCLK閾値を設定し、PMLは、モニターが低待ち時間条件を示す場合であっても、PStateをより高く積極的に切り替えることを防止するためのゲートとして、その閾値を使用する。
【0081】
いくつかの実施形態では、PStateの移行の間にヒステリシスを提供して、PStateの速すぎる移行を防止する。例えば、いくつかの実施形態では、プログラム可能なヒステリシス閾値を使用して、アップ及びダウンのヒステリシスを提供する。アップヒステリシスの場合、プログラム可能な閾値にわたる(例えば、現在のDPM状態帯域幅の50%の閾値にわたる)単一の観測値が使用されるが、任意の好適な閾値を用いることができる。ダウンヒステリシスの場合、次のより低いPStateの閾値を下回る複数の連続した観測値を使用して、ディザリングを防止する。ただし、任意の好適な閾値及びヒステリシス機構を用いることができる。
【0082】
各ICがそれ自体のデータファブリックを含む複数のソケットの実施形態の場合、FCLK要件は、独立して評価され、2つのソケット上に異なるFCLKを得ることができる。いくつかの例では、ファブリック周波数とソケット間相互接続周波数との間で、所望の比率が維持される。
【0083】
図9は、順序を切り替えるメモリパフォーマンス状態を示す状態図である。メモリパフォーマンス状態P0~Pnは、メモリにアクセスするために使用されるメモリデータファブリック及び他の非コアユニットのパフォーマンス状態である。P0は、最高パフォーマンス状態であり、Pnは、最低パフォーマンス状態である。PLは、それぞれの状態にマッピングされた電力閾値を表す。AC電力設定値又は高パフォーマンス設定値に関する場合、非コアパフォーマンスが最大化され、バッテリーDC設定値又はエネルギー効率設定値に関する場合、ファブリックのパフォーマンス/ワットが最大化される。SMUは、電力モニター及びリーク対温度曲線に基づいて、異なる非計算ユニットによって消費される電力を追跡する。この状態図は、図7に示されたパフォーマンス状態テーブルに基づく。
【0084】
図10は、複数のコアグループ1100及び1102を使用する集積回路を示しており、各コア1104は、メモリ待ち時間カウンタ1106を有する。いくつかの実施形態におけるPMLは、コアのグループについての待ち時間測定値を集約する。特定の実施形態では、メモリ待ち時間カウンタは、1つのSOCが複数のコアグループ(CCD)1100及び1102を有しているため、集約される。電力管理ロジックは、それらを読み取って、式1に示されるように、グループ毎に中間待ち時間メトリックを計算する。その後、PMLは、そのグループ内の全てのコアの中で最大値を見つける。次に、PMLは、全てのCCDの中で最大値を計算する。その後、PMLは、式2に記載されるように、その結果にメモリビジーを乗算する。最後に、その値は、閾値に対して比較され、非計算ユニットメモリPStateを選択する。図11において、MP5は、コアのグループの電力管理ユニットを表し、MP1は、SoC電力管理ユニットを表す。いくつかの実施形態では、本方法は、各SoCについて集約された待ち時間カウンタが比較されるソケット間待ち時間にも適用され、SoCが待ち時間を補償するためにより高い電力PStateを必要とする場合、より高いファブリック周波数を提供してソケット間待ち時間を改善するメモリPStateが選択される。
【0085】
図に示すように、SoC周波数の電圧スケーリングが特定のFCLKを超えて平坦化することができるため、最大値が取られる。したがって、より低いPStateで実行することによって計算範囲シナリオのために得ることができる電力及びパフォーマンスコアの量は、わずかである。一方、より高いPStateで実行しないことによって喪失する可能性があるパフォーマンスコアの量は、メモリ待ち時間(及びメモリ帯域幅)に敏感な作業負荷に対して大きい。別の実施形態では、全てのコアの最大値の代わりに、集約された待ち時間メトリックは、全ての活性コアにわたる、閾値tからの各コアの待ち時間メトリックの距離の加重和として計算することができる。重み付けされた集約された待ち時間メトリックが依然として正である場合、P0状態が、グローバルシステムレベル最適値として取得される。重み付けされたメトリックが負である場合、より低いPStateが、グローバルシステムレベル最適値として選択される。これは、代替最終待ち時間メトリックのための以下の式で示される。
【数1】

【数2】
【0086】
(代替最終待ち時間メトリック)
特定の実施形態では、メモリ待ち時間作業負荷を推定するためのメトリックが使用される。メモリ待ち時間メトリックを使用して、作業負荷がいつメモリ待ち時間に敏感であるか(CPU複合体によって実行されている作業負荷等)を識別する。この場合、SoCは、最良のパフォーマンスを提供するために、より高いPStateに移行する必要がある。このメトリックは、3つの事象、すなわち、サイクル当たりのマイクロ命令、負荷記憶ユニットによって見られるような、DRAM又はIO内のサンプリングされた先行負荷ヒットの平均待ち時間、及び、メモリビジー信号に基づく。
【0087】
計算は、2つのステップで行われ、すなわち、1)コアカウンタを読み取り、中間待ち時間メトリックを導出する、2)各コアについて(最大を計算することによって)中間メトリックを集約し、その結果にメモリビジー信号を乗算する、ことである。以下の式は、メトリックの公式定義を与える。
【0088】
まず、コアi毎の中間メトリックmcを計算する。ここで、IPCは、サイクル毎のマイクロ命令であり、CoreMemLatは、負荷記憶ユニットによって見られるような、DRAM又はIOにおけるサンプリングされた先行負荷ヒットの平均待ち時間である。
【数3】

式1:中間待ち時間メトリック
【0089】
次に、ソケット内の全てのコアについてmcを集約し、ms値に基づいてソケットのSoC P状態を決定する。
【数4】

式2:最終待ち時間メトリック
【0090】
メモリビジー信号による乗算の背後にある合理性は、希なメモリアクセスを有する作業負荷が単一のアクセスに対して長い待ち時間を経験することができることであるが、これらの希なアクセスは、作業負荷に重大な不利益を追加しない。したがって、メモリビジー信号を使用して、待ち時間メトリックを適格とし、この影響を償却する。両方のメトリックが結合される場合に、メトリックは、メモリ帯域幅にも敏感ではなく、待ち時間にも極端には敏感ではない作業負荷を取り込もうと試み、これらは、より低いPStateで実行される必要がある。他の全ては、より高く、より低いPStateで実行する必要がある。閾値を使用して、スペースを分離する。
【数5】

式3:DF-PStateの決定
【0091】
図11を参照すると、メモリ待ち時間を検出することに関して、先行負荷待ち時間は、キャッシュ/DRAMメモリにおいて見逃された最初の負荷の待ち時間として定義することができる。先行負荷の例を示す図12を参照されたい。最初の負荷見逃し(負荷見逃しA)の後、任意の連続した負荷見逃しは、それらの見逃しに起因する遅延が先行負荷によって隠されるため、先行負荷(負荷見逃しB)とはみなされない。最初の先行負荷が戻された後にのみ、正に次の負荷が、先行負荷(負荷見逃しC)とみなされることになる。
【0092】
様々な技術的解決策の中で、いくつかの実施形態では、構造及び動作は、待ち時間及び/又は帯域幅についての状態及びアプリケーション固有の要件を区別する。いくつかの例では、使用ケースが待ち時間に敏感である場合に限り、特定のファブリック周波数が引き上げられるが、帯域幅中心シナリオの場合、周波数は、並列インターフェースを介して、最大帯域幅をデータファブリックに送達するのに十分な最小レベルに維持される。特定の実施形態では、電力管理ロジックは、サーバシステム内の複数のソケット間のコヒーレントトラフィックの待ち時間要件を調べて、ファブリック周波数を決定する。これは、マルチ集積回路(例えば、ダイ又はチップ)構成に適用された場合に、ソケット間のコヒーレントファブリックにわたるデータトラフィックを考慮に入れるため、ソケット間のスケーリングを可能にする。いくつかの実施形態では、電力管理システムは、様々な異種タイプの作業負荷の中で決定し、何れの計算ユニットが閾値を上回る検出された帯域幅要件を有するか等のように、異種作業負荷のタイプに基づいて非計算ユニットの電力消費を調整する。この電力消費の調整は、1つのパフォーマンス状態から別のパフォーマンス状態に調整することを通じて行われる。各パフォーマンス状態は、非計算ユニットについての周波数及び/又は電圧を変化させる。1つの利点は、システムが計算ユニットにとって利用可能なより多くの電力予算を残すことである。異種タイプの作業負荷は、異種計算ユニットによって処理されるものである。
【0093】
いくつかの例では、様々な異種タイプの作業負荷を決定することは、例えば、予測オペレーティングシステムヒント、ドライバヒント、及び/又は、実行時間中に計算ユニット若しくはメモリアクセスエンジンの各々についてメモリアクセストラフィックを監視する活動モニターを使用して行われる。計算ユニットは、ビデオコーデック、GPUコア、CPUコア、ディスプレイエンジン、又は、メモリにアクセする他のエンジン若しくはユニットを含むことができる。
【0094】
特徴及び要素が特定の組み合わせで上に説明されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。いくつかの実施形態において本明細書に記載される装置は、汎用コンピュータ又はプロセッサによる実施のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実施され得る。コンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(random-access memory、RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、磁気媒体(例えば、内蔵ハードディスク及びリムーバブルディスク)、磁気光学媒体、並びに、光学媒体(例えば、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD))が挙げられる。
【0095】
様々な実施形態の前述の詳細な説明では、その一部を形成し、本発明を実施することができる特定の好ましい実施形態を例として示す添付図面を参照した。これらの実施形態は、当業者が本発明を実施することを可能にするために十分詳細に説明されており、他の実施形態が利用されてもよく、本発明の範囲から逸脱することなく論理的、機械的及び電気的変更が行われてもよいことを理解されたい。当業者が本発明を実施することを可能にするために必要でない詳細を避けるために、説明は、当業者に知られている特定の情報を省略する場合がある。更に、本開示の教示を組み込む多くの他の様々な実施形態が、当業者によって容易に構築され得る。したがって、本発明は、本明細書に記載の特定の形態に限定されることを意図するものではなく、逆に、本発明の範囲内に合理的に含まれ得るそのような代替形態、修正形態及び均等物を包含することを意図するものである。したがって、前述の詳細な説明は、限定的な意味で解釈されるべきではなく、本発明の範囲は、添付の特許請求の範囲によってのみ定義される。本明細書に記載される実施形態及び実施例の上記の詳細な説明は、限定ではなく、例示及び説明のためにのみ提示されている。例えば、説明された動作は、任意の好適な順序又は方法で行われる。したがって、本発明は、上記で開示され、本明細書で特許請求される基本的な基礎原理の範囲内に入るあらゆる修正、変形又は等価物を包含することが企図される。
【0096】
上記の詳細な説明及びそこに記載される実施例は、限定のためではなく、例示及び説明のためにのみ提示されている。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
【手続補正書】
【提出日】2023-08-28
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
1つ以上の集積回路(IC)に電力管理を提供するための方法であって、
前記IC上の複数の異種計算ユニットの各々で実行される作業負荷に関連するメモリ帯域幅レベルを決定することと、
決定されたメモリ帯域幅レベルに基づいて、前記IC上のメモリシステムの少なくとも1つの非計算ユニットの電力レベルを、第1の電力レベルから第2の電力レベルに調整することと、を含む、
方法。
【請求項2】
前記メモリ帯域幅レベルを決定することは、前記IC上の前記複数の異種計算ユニットの各々に関連するメモリアクセストラフィックを監視することを含み、前記少なくとも1つの非計算ユニットは、前記複数の異種計算ユニットによって使用されるメモリにアクセスするために使用される、
請求項1の方法。
【請求項3】
前記非計算ユニットは、
前記異種計算ユニットとメモリとの間でデータを転送するデータファブリックを含み、
前記メモリシステムの前記非計算ユニットの電力レベルを調整することは、
より高いデータファブリッククロック周波数設定値及びより高い電圧レベルを用いて同じ最大レベルメモリデータ転送レートを提供する別のメモリパフォーマンス状態と比較して、前記データファブリックの低減された周波数クロック及び低減された電圧レベルを用いて、規定の電力割り当てに対して最大レベルメモリデータ転送レートを提供するメモリパフォーマンス状態を選択することを含む、
請求項1の方法。
【請求項4】
前記電力レベルを調整することは、メモリパフォーマンス状態テーブルにアクセスすることを含み、
前記メモリパフォーマンス状態テーブルは、
複数のメモリパフォーマンス状態であって、各状態は、前記パフォーマンス状態に対して許容可能なメモリデータ転送速度と、非計算メモリシステム電圧設定値と、データファブリッククロック周波数設定値と、メモリクロック周波数設定値と、を表すデータを含む、複数のメモリパフォーマンス状態を含み、
少なくとも第1のパフォーマンス状態及び第2のパフォーマンス状態は、同じ最大レベルメモリデータ転送レートを含み、前記第1のパフォーマンス状態は、前記第2のパフォーマンス状態と比較して、低いデータファブリック周波数設定値及び低い非計算メモリシステム電圧設定値を有する、
請求項3の方法。
【請求項5】
集積回路(IC)であって、
複数の異種計算ユニットと、
前記複数の計算ユニットに動作可能に結合された複数の非計算ユニット、を備え、
電力管理ロジックは、
前記IC上の複数の異種計算ユニットの各々で実行される作業負荷に関連するメモリ帯域幅レベルを決定することと、
決定されたメモリ帯域幅レベルに基づいて、前記IC上のメモリシステムの少なくとも1つの非計算ユニットの電力レベルを、第1の電力レベルから第2の電力レベルに調整することと、
を行うように動作可能である、
集積回路。
【請求項6】
前記電力管理ロジックは、
前記IC上の前記複数の異種計算ユニットの各々に関連するメモリアクセストラフィックを少なくとも監視することによって、前記メモリ帯域幅レベルを決定するように動作可能であり、
前記少なくとも1つの非計算ユニットは、前記複数の異種計算ユニットによって使用されるメモリにアクセスするために使用される、
請求項5のIC。
【請求項7】
前記少なくとも1つの非計算ユニットは、前記異種計算ユニットとメモリとの間でデータを転送するデータファブリックを含み、
前記電力管理ロジックは、
少なくとも、より高いデータファブリッククロック周波数設定値及びより高い電圧レベルを用いて同じ最大レベルメモリデータ転送レートを提供する別のメモリパフォーマンス状態と比較して、前記データファブリックの低減された周波数クロック、及び低減された電圧レベルを用いて、規定の電力割り当てについて最大レベルメモリデータ転送レートを提供するメモリパフォーマンス状態を選択することによって、前記メモリシステムの前記非計算ユニットの前記電力レベルを調整するように動作可能である、
請求項5のIC。
【請求項8】
前記電力管理ロジックは、メモリパフォーマンス状態テーブルにアクセスすることによって、前記電力レベルを調整するように動作可能であり、
前記メモリパフォーマンス状態テーブルは、
複数のメモリパフォーマンス状態であって、各状態は、前記パフォーマンス状態に対して許容可能なメモリデータ転送速度と、非計算メモリシステム電圧設定値と、データファブリッククロック周波数設定値と、メモリクロック周波数設定値と、を表すデータを含む、複数のメモリパフォーマンス状態を含み、
少なくとも第1のパフォーマンス状態及び第2のパフォーマンス状態は、同じ最大レベルメモリデータ転送レートを含み、前記第1のパフォーマンス状態は、前記第2のパフォーマンス状態と比較して、低いデータファブリック周波数設定値及び低い非計算メモリシステム電圧設定値を有する、
請求項7のIC。
【請求項9】
集積回路(IC)であって、
複数の計算ユニットと、
前記複数の計算ユニットに動作可能に結合された複数の非計算ユニット、を備え、
電力管理ロジックは、
前記複数の計算ユニットのうち少なくとも1つで実行される作業負荷に関連するメモリアクセス待ち時間を検出することと、
検出された前記メモリアクセス待ち時間に基づいて、前記複数の非計算ユニットのうち少なくとも1つに関連するメモリパフォーマンス状態を変更することと、
を行うように動作可能である、
集積回路。
【請求項10】
少なくとも別の集積回路(IC)とデータを通信するように構成されたデータファブリックを備え、
前記電力管理ロジックは、前記別のICの計算ユニットに関連するメモリアクセス待ち時間を検出し、前記別のICに関連する検出された前記メモリアクセス待ち時間に基づいて、前記複数の非計算ユニットに関連する前記メモリパフォーマンス状態を変更するように動作可能である、
請求項9のIC。
【請求項11】
前記電力管理ロジックは、前記IC上の複数の異種計算ユニットの各々で実行されるそれぞれの作業負荷に関連する帯域幅レベルを決定し、検出された前記メモリアクセス待ち時間及び決定されたメモリ帯域幅レベルの両方に基づいて、メモリパフォーマンス状態を選択するように動作可能である、
請求項9のIC。
【請求項12】
前記複数の非計算ユニットは、
前記複数の計算ユニットに動作可能に結合されたデータファブリックと、
前記データファブリックを介して前記計算ユニットに動作可能に結合されたメモリ制御ロジックと、を備え、
前記電力管理ロジックは、中央処理コア計算ユニットに関連する検出された待ち時間レベル、及び、グラフィックス処理コア計算ユニットに関連付けられた決定されたメモリ帯域幅レベルを表すデータ間のアービトレーションを行うことによって、前記メモリパフォーマンス状態を選択するように動作可能である、
請求項9のIC。
【請求項13】
前記電力管理ロジックは、
実行時間中に中央処理計算ユニットによって発行されるメモリロード要求に関連するメモリアクセス待ち時間を検出するように動作可能なメモリ待ち時間モニターロジックと、
前記複数の計算ユニットのうち他の計算ユニットに関連するメモリ帯域幅レベルを検出するように動作可能なメモリ帯域幅監視ロジックと、を備える、
請求項9のIC。
【請求項14】
前記電力管理ロジックは、前記別のIC上の計算ユニットに関連するメモリ帯域幅を検出するように構成された集積回路間メモリ帯域幅モニターロジックを備え、
前記電力管理ロジックは、前記別のICの検出された前記メモリ帯域幅レベルに基づいて、メモリパフォーマンス状態を、データファブリッククロック周波数を最高パフォーマンス状態レベルに増加させることを含む最高電力状態に増加させるように動作可能である、
請求項12のIC。
【請求項15】
前記電力管理ロジックは、少なくとも1つの計算ユニットの待ち時間改善を、少なくとも別の計算ユニットの帯域幅改善よりも優先するように動作可能である、
請求項9のIC。
【請求項16】
前記電力管理ロジックは、
少なくとも第1の計算ユニットに関連付けられた作業負荷のメモリ待ち時間を検出し、検出された前記メモリ待ち時間に基づいて、第1のメモリパフォーマンス状態を提供するように動作可能なメモリ待ち時間検出ロジックと、
少なくとも第2の計算ユニットによって使用されるメモリ帯域幅レベルを検出し、検出された前記メモリ帯域幅レベルに基づいて、第2のメモリパフォーマンス状態を提供するように動作可能なメモリ帯域幅検出ロジックと、
前記第1のメモリパフォーマンス状態及び第2のメモリパフォーマンス状態に基づいて、且つ、利用可能な電力ヘッドルームデータに基づいて、最終的なメモリパフォーマンス状態を選択するように動作可能なアービトレーションロジックと、を備える、
請求項9のIC。
【請求項17】
前記複数の計算ユニットは、複数の異種計算ユニットを備え、
前記電力管理ロジックは、
前記IC上の複数の異種計算ユニットの各々で実行されるそれぞれの作業負荷に関連するメモリ帯域幅レベルを決定することと、
決定されたメモリ帯域幅レベルに基づいて、前記IC上のメモリシステムの少なくとも1つの非計算ユニットの電力レベルを、第1の電力レベルから第2の電力レベルに調整することと、
を行うように動作可能である、
請求項9のIC。
【請求項18】
前記電力管理ロジックは、
前記IC上の前記複数の異種計算ユニットの各々に関連するメモリアクセストラフィックを少なくとも監視することによって、前記メモリ帯域幅レベルを決定するように動作可能であり、
前記少なくとも1つの非計算ユニットは、前記複数の異種計算ユニットによって使用されるメモリにアクセスするために使用される、
請求項17のIC。
【請求項19】
請求項9~18の何れかの集積回路(IC)を含む装置であって、
メモリシステムと、
前記メモリシステムに動作可能に結合された前記複数の計算ユニットと
記複数の計算ユニットに動作可能に結合されたデータファブリックと、
前記データファブリック及び前記メモリシステムのメモリに動作可能に結合されたメモリインターフェースロジックと、を備え、
前記電力管理ロジックは、
前記複数の計算ユニット上で実行される作業負荷に関連するメモリアクセス待ち時間を検出することと、
前記複数の計算ユニットの各々で実行されるそれぞれの作業負荷に関連するメモリ帯域幅レベルを決定することと、
検出された前記メモリアクセス待ち時間及び決定されたメモリ帯域幅レベルに基づいて、前記複数の非計算ユニットに関連するメモリパフォーマンス状態を変更することと、
を行うように動作可能である、
装置。
【請求項20】
前記電力管理ロジックは、
メモリ待ち時間に敏感な作業負荷の決定が前記複数の計算ユニットのうち少なくとも1つによって実行されたことに応じて、前記データファブリックのクロック周波数を増加させて、前記メモリのための最大レベルメモリデータ転送レートを提供することと、
帯域幅レベルの増加が計算ユニットのために必要であることに応じて、より高いデータファブリッククロック周波数設定値及びより高い電圧レベルを用いて同じ最大レベルメモリデータ転送レートを提供する別のメモリパフォーマンス状態と比較して、前記データファブリックの低減された周波数クロック及び低減された電圧レベルを用いて、規定の電力割り当てについて最大レベルメモリデータ転送レートを提供するメモリパフォーマンス状態を選択することと、
を行うために、前記データファブリックの動作状態を制御することによって、前記メモリパフォーマンス状態を変更するように動作可能である、
請求項19の装置。
【国際調査報告】