(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-14
(45)【発行日】2024-06-24
(54)【発明の名称】作業負荷ベースの最大電流
(51)【国際特許分類】
G06T 1/20 20060101AFI20240617BHJP
【FI】
G06T1/20 B
(21)【出願番号】P 2021557285
(86)(22)【出願日】2020-02-07
(86)【国際出願番号】 US2020017279
(87)【国際公開番号】W WO2020205059
(87)【国際公開日】2020-10-08
【審査請求日】2023-02-01
(32)【優先日】2019-03-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】カブルラソス,ニコス
(72)【発明者】
【氏名】サムソン,エリック
(72)【発明者】
【氏名】ジャソリヤ,ジャイミン ビー.
【審査官】▲徳▼田 賢二
(56)【参考文献】
【文献】特表2018-533112(JP,A)
【文献】特表2019-502970(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/20
(57)【特許請求の範囲】
【請求項1】
装置であって、
グラフィックス処理ユニット(GPU)コマンドのシーケンスを処理するように構成される第1の回路であって、GPUコマンドの前記シーケンスは、GPUコマンドの前記シーケンスに対応する作業負荷特性を示すフラグを搬送する命令を含む、第1の回路と、
前記フラグに基づいて、電力指向パラメータ調整を開始するように構成される第2の回路と、を含
み、
前記フラグは、GPUコマンドの前記シーケンスの以降の部分と関連するテクスチャフィルタリングのタイプ、又は、GPUコマンドの前記シーケンスの前記以降の部分と関連する命令のタイプ、のうちの少なくとも1つを示し、
テクスチャフィルタリングの前記タイプは、異方性フィルタリング、線形フィルタリング、又は双線形フィルタリングのうちの1つから選択される、
装置。
【請求項2】
命令の前記タイプは、収縮アレイ行列乗算命令である、請求項
1に記載の装置。
【請求項3】
前記電力指向パラメータ調整は、ファームウェアハンドシェイクを含む、請求項
1又は2に記載の装置。
【請求項4】
前記電力指向パラメータ調整は、供給電圧又は周波数のうちの少なくとも1つについてのパラメータ調整である、請求項1乃至
3のうちのいずれか1項に記載の装置。
【請求項5】
前記命令は、GPUコマンドの前記シーケンスの第1の部分に対応する第1の作業負荷特性を示す第1のフラグを搬送する第1の命令であり、
GPUコマンドの前記シーケンスは、GPUコマンドの前記シーケンスの第2の部分に対応する第2の作業負荷特性を示す第2のフラグを搬送する第2の命令を含み、
前記第2の回路は、前記第1のフラグに基づいて、第1の電力指向パラメータ調整を開始するように構成され、
前記第2の回路は、前記第2のフラグに基づいて、第2の電力指向パラメータ調整を開始するように構成される、請求項1乃至
4のうちのいずれか1項に記載の装置。
【請求項6】
前記第1のフラグは、GPUコマンドの前記シーケンスの前記第1の部分が、1つ又は複数の収縮アレイ行列乗算命令を含むということを示す、請求項
5に記載の装置。
【請求項7】
前記第2のフラグは、GPUコマンドの前記シーケンスの前記第2の部分が、収縮アレイ行列乗算命令を含まないということを示す、請求項
5又は請求項
6に記載の装置。
【請求項8】
前記第1の電力指向パラメータ調整は、電圧パラメータの下方調整又は周波数パラメータの上方調整のうちの少なくとも1つを含む、請求項
5乃至
7のうちのいずれか1項に記載の装置。
【請求項9】
装置であって、
グラフィックス処理ユニット(GPU)コマンドのシーケンスを処理するように構成されるコマンドリスト回路であって、GPUコマンドの前記シーケンスは、GPUコマンドの前記シーケンスに対応する作業負荷特性を示すフラグ命令を含む、コマンドリスト回路と、
前記フラグ命令に基づいて、電力指向パラメータ調整プロトコルを開始するように構成されるハンドシェイク回路と、を含
み、
前記フラグ命令は、GPUコマンドの前記シーケンスの以降の部分と関連するテクスチャフィルタリングのタイプ又はGPUコマンドの前記シーケンスの前記以降の部分と関連する命令のタイプのうちの少なくとも1つを示し、
テクスチャフィルタリングの前記タイプは、異方性フィルタリング、線形フィルタリング、又は双線形フィルタリングのうちの1つから選択される、
装置。
【請求項10】
前記電力指向パラメータ調整プロトコルは、ファームウェアハンドシェイクを含み、
命令の前記タイプは、収縮アレイ行列乗算命令である、請求項
9に記載の装置。
【請求項11】
前記電力指向パラメータ調整プロトコルは、供給電圧又は周波数のうちの少なくとも1つについてのパラメータ調整プロトコルである、請求項
9又は請求項
10に記載の装置。
【請求項12】
前記フラグ命令は、GPUコマンドの前記シーケンスの第1の部分に対応する第1の作業負荷特性を示す第1のフラグ命令であり、
GPUコマンドの前記シーケンスは、GPUコマンドの前記シーケンスの第2の部分に対応する第2の作業負荷特性を示す第2のフラグ命令を含み、
前記ハンドシェイク回路は、前記第1のフラグ命令に基づいて、第1の電力指向パラメータ調整を開始するように構成され、
前記ハンドシェイク回路は、前記第2のフラグ命令に基づいて、第2の電力指向パラメータ調整を開始するように構成される、請求項
9乃至
11のうちのいずれか1項に記載の装置。
【請求項13】
前記第1のフラグ命令は、GPUコマンドの前記シーケンスの前記第1の部分が、1つ又は複数の収縮アレイ行列乗算命令を含むということを示し、
前記第2のフラグ命令は、GPUコマンドの前記シーケンスの前記第2の部分が、収縮アレイ行列乗算命令を含まないということを示す、請求項
12に記載の装置。
【請求項14】
前記第1の電力指向パラメータ調整は、電圧パラメータの下方調整又は周波数パラメータの上方調整のうちの少なくとも1つを含み、
前記第2の電力指向パラメータ調整は、前記電圧パラメータの上方調整又は前記周波数パラメータの下方調整のうちの少なくとも1つを含む、請求項
13に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願への相互参照]
この出願は、2019年3月29日付で出願されている"作業負荷ベースの最大電流"と題される米国特許出願第16/369,608号に基づく優先権を主張し、その内容は、すべての目的のためにその全体が参照により本明細書に組み込まれる。
【背景技術】
【0002】
コンピューティングシステムにおいては、グラフィックス処理ユニット(GPU)等のある特定の構成要素のための最大電流引き込み(Iccmax)は、電圧識別(VID)設定に影響を与える場合があり、したがって、電力散逸に影響を与える場合がある。Iccmaxは、また、ある特定のIccmaxの限界に依存する場合がある最大動作周波数(Fmax)に影響を与える場合がある。
【0003】
(例えば、GPUの複数の部分のうちのいくつかがアイドルであり及び/又は電力ゲートされているか否か等の)GPU構成によって及び/又は(例えば、より高いIccmaxに対応するより高い周波数を有する)動作周波数によって、Iccmaxを決定してもよい。ところが、Iccmaxは、また、実際には、GPUによって実行される作業負荷の特性に依存する場合がある。
【図面の簡単な説明】
【0004】
本開示の複数の実施形態は、以下で記載されている詳細な説明及び本開示のさまざまな実施形態の複数の添付の図面から、より完全に理解されるであろう。これに対して、それらの複数の図面は、説明及び理解を助けるためのものである一方で、それらの複数の図面は、単なる助けにすぎず、本明細書において示されている複数の特定の実施形態に、本開示を限定するものと解釈されるべきではない。
【0005】
【
図1】本開示の複数の実施形態のうちのいくつかにしたがった複数の異なるタイプのグラフィックの処理に起因する複数の領域を有するある1つの例示的なビデオフレームを図示している。
【
図2】本開示の複数の実施形態のうちのいくつかにしたがった複数の異なる作業負荷についてのあるグラフィックス処理ユニット(GPU)のための最大電流引き込み(I
ccmax)の関数としての周波数のプロットを図示している。
【
図3】本開示の複数の実施形態のうちのいくつかにしたがって作業負荷に依存する電力管理を実装するためのある1つの例示的なフローチャートを図示している。
【
図4】本開示の複数の実施形態のうちのいくつかにしたがって作業負荷に依存する電力管理を実装するための複数の回路を含むある1つの例示的な設計を図示している。
【
図5】本開示の複数の実施形態のうちのいくつかにしたがって作業負荷に依存する電力管理を実装するための複数の例示的な方法を図示している。
【
図6】本開示の複数の実施形態のうちのいくつかにしたがって作業負荷に依存する電力管理を実装するためのメカニズムを有するコンピューティングデバイスを図示している。
【発明を実施するための形態】
【0006】
以下の説明においては、数多くの細部を議論することにより、本開示の複数の実施形態をより完全に説明する。しかしながら、当業者には、それらの複数の特定の細部を使用することなく、本開示のそれらの複数の実施形態を実用化することが可能であるということが明らかとなるであろう。複数の他の例においては、本開示の複数の実施形態を不明瞭にすることを回避するために、よく知られている構造及びデバイスを、詳細に示すのではなく、ブロック図の形態によって示す。
【0007】
それらの複数の実施形態の対応する図面においては、複数の線を使用して信号を表現するということに留意すべきである。それらの複数の線のうちのいくつかは、太くして、より多くの数の構成要素の信号経路を示してもよく、及び/又は、1つ又は複数の端部に矢印を有することにより、情報フローの方向を示してもよい。そのような指標は、限定することを意図してはいない。むしろ、それらの複数の線は、回路又は論理ユニットの理解を容易にするために、1つ又は複数の例示的な実施形態との関連で使用される。設計上の必要性又は嗜好によって決定されるとともに表現されるいずれかの信号は、実際には、1つ又は複数の信号を含んでもよく、それらの1つ又は複数の信号は、何れかの方向に進行してもよく、いずれかの適切なタイプの信号スキームによって実装されてよい。
【0008】
明細書全体で及び特許請求の範囲において、"接続される(connected)"の語は、接続される複数の事物の間でのいかなる中間デバイスも使用することのない直接的な電気的接続、機械的接続、又は磁気的接続を意味する。"結合される(coupled)"の語は、接続されるそれらの複数の事物の間での直接的な電気的接続、機械的接続、又は磁気的接続、或いは、1つ又は複数の受動的な中間デバイス又は能動的な中間デバイスを通じての間接的な接続のいずれかを意味する。"回路(circuit)"又は"モジュール(module)"の語は、互いに強調して、望ましい機能を提供するように配置される1つ又は複数の受動的な構成要素及び/又は能動的な構成要素を指してもよい。"信号(signal)"の語は、少なくとも1つの電流信号、電圧信号、磁気信号、又はデータ/クロック信号を指してもよい。"ある1つの(a)"、"ある1つの(an)"、及び"その(the)"は、複数の意味を含む。"における(in)"は、"の中に(in)"及び"の上に(on)"の意味を含む。
【0009】
"実質的に(substantially)"、"近接する(close)"、"概ね(approximately)"、"近い(near)"、及び"約(about)"は、一般的に、目標値の+/-10%以内にあることを指す。他に特別の定めがない限り、ある共通の対象を説明するための"第1の(first)"、"第2の(second)"、及び"第3の(third)"等の序数形容詞の使用は、複数の同様の対象の複数の異なる例に言及しているということを示しているにすぎず、そのように説明されている複数の対象が、時間的に、空間的に、順位において、又はいずれかの他の方式によって、ある与えられた順序になっている必要があるということを示唆することを意図してはいない。
【0010】
そのように使用されるそれらの複数の語は、適切な状況の下で交換可能であり、それによって、本明細書において説明されている本発明の複数の実施形態は、例えば、本明細書において図示され又は他の方法で説明されている幾何学的配置とは別の幾何学的配置で動作可能であるということを理解すべきである。
【0011】
存在する場合には、明細書及び特許請求の範囲の中の"左の(left)"、"右の(right)"、"前方の(front)"、"後方の(back)"、"頂部の(top)"、"底部の(bottom)"、"上方の(over)"、及び"下方の(under)"等の語は、説明の目的のために使用され、必ずしも、永続的な相対的位置を説明するためには使用されない。
【0012】
それらの複数の実施形態の目的上、さまざまな回路、モジュール、及び論理ブロックの中のトランジスタは、トンネルFET(TFET)である。さまざまな実施形態の複数のトランジスタのうちのいくつかは、ドレイン、ソース、ゲート、及びバルク端子を含む金属酸化物半導体(MOS)トランジスタを含んでもよい。それらのトランジスタは、また、Tri-Gateトランジスタ及びFinFETトランジスタ、全周ゲート型シリンダー形状トランジスタ(Gate All Around Cylindrical Transistor)、正方形形状配線トランジスタ(Square Wire Transistor)、又は、矩形形状リボントランジスタ(Rectangular Ribbon Transistor)、又は、カーボンナノチューブ(carbon nanotube)又はスピントロニクスデバイス(spintronic device)等のトランジスタ機能を実装する他のデバイスを含んでもよい。MOSFETの対称的なソース端子及びドレイン端子は、すなわち、同一の端子であり、本明細書においては交換可能に使用される。一方で、TFETデバイスは、非対称のソース端子及びドレイン端子を有する。当業者は、本開示の範囲から離れることなく、複数のトランジスタのうちのいくつかのために、例えば、BJT PNP/NPN、BiCMOS、CMOS等のバイポーラ接合型トランジスタ等の他のトランジスタを使用してもよいということを理解するであろう。
【0013】
本開示の目的上、"A及び/又はB"及び"A又はB"の句は、(A)、(B)、又は(A及びB)を意味する。本開示の目的上、"A、B、及び/又はC"の句は、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)、又は(A、B及びC)を意味する。
【0014】
加えて、本開示において議論されている組み合わせ論理及び順序論理のさまざまな要素は、議論されている論理に相当するブール論理である論理構造を実装するデバイスの合成された又はその他の方法で最適化された集合体或いは(ANDゲート、ORゲート、又はXORゲート等の)物理構造の双方に関連してもよい。
【0015】
コンピューティングシステムにおいては、(例えば、ある設計の中に組み込まれている知的財産(IP)ブロック(Intellectual Property (IP) block)等の)中央処理ユニット(Central Processing Unit(CPU))又はグラフィックス処理ユニット(Graphics Processing Unit(GPU))等の設計のある特定の構成要素又はある部分のための最大電流引き込み(maximum current draw)(Iccmax)は、電圧識別(Voltage Identification(VID))設定に影響を与える場合があり、したがって、電力散逸に影響を与える場合がある。Iccmaxは、また、ある特定のIccmaxの限界に依存する場合がある最大動作周波数(Fmax)に影響を与える場合がある。Iccmax値から不必要なIccmaxガードバンドを除去すると、電力散逸の最小化を容易にするとともに、GPUのための最大の可能なFmaxの実装を容易にすることが可能である。
【0016】
今日では、(例えば、GPUの複数の部分のうちのいくつかがアイドルであり及び/又は電力ゲートされているか否か等の)GPU構成によって及び/又は(例えば、より高いIccmaxに対応するより高い周波数を有する)動作周波数によって、Iccmaxを決定することが可能である。ところが、Iccmaxは、また、実際には、GPUにおいて実行される作業負荷(workload)の特性に依存する場合がある。GPUのためのIccmax値の設定の際に作業負荷情報(workload information)を無視すると、過剰なIccmaxガードバンド(excessive Iccmax guardband)を現状のままにする場合があり、その過剰なIccmaxガードバンドは、その結果、電圧設定(及び、ひいては、電力散逸(power dissipation))に影響を与える場合があり、また、ある与えられたIccmaxの割り当て量(given Iccmax budget)の範囲内のGPUのFmaxに影響を与える場合がある。
【0017】
例えば、(例えば、いくつのスライス(slice)又は実行ユニット(Execution Unit(EU))が起動されるか等の)GPU構成によって及び/又は動作周波数によって、Iccmaxを決定してもよい。そのとき、より高いIccmaxは、より高い周波数に対応してもよい。(例えば、GPU又は組み込みプロセッサユニットにおいて実行されているファームウェア等の)"pcode"によってIccmaxを使用して、タイミング超過を回避することが可能であるVID設定を決定してもよく、より高いIccmaxは、より高いVID設定に対応し、それにより、電力散逸に有意に影響を与える場合がある。
【0018】
不必要なIccmaxガードバンド(Iccmax guardband)を除去することによって、本明細書において開示されているメカニズム及び方法は、有利なことに、動作電圧の低下を促進することが可能であり、ひいては、構成要素の電力散逸を減少させることが可能であり、及び/又は、ある特定の電力割り当て量(power budget)の範囲内で性能を向上させることが可能である。本明細書において開示されているメカニズム及び方法は、また、ある特定のIccmax割り当て量(Iccmax budget)の範囲内でより高いFmax及び/又は性能を達成することを容易にすることが可能である。
【0019】
pcodeによってIccmaxを使用して、タイミング超過(timing violation)を回避することが可能であるVID設定を決定してもよく、より高いIccmaxは、より高いVID設定に対応する。ところが、より高い電圧は、より高い電力散逸に対応する場合があるので、Iccmaxは、ある構成要素又はあるIPブロックの電力散逸に密接に関連する場合がある。加えて、プラットフォーム電力配送システムは、(少なくとも、電力配送システムに費やされる追加的な出費を伴うことなく)超えてはならないIccmax制限を課すことが可能である。したがって、Iccmax制限を超えないように、例えば、GPU等の構成要素又はIPブロックのためのFmaxを設定することが可能である。
【0020】
一方で、その構成要素のためのIccmaxは、また、ある特定の時間点においてその構成要素が使用することが可能である作業負荷のタイプ、命令、データ構造等の構成及び周波数を超える追加的な要因に依存する場合がある。本明細書において開示されているメカニズム及び方法は、それらの複数の追加的な要因のうちのいくつか又はすべてを使用して、現在のIccmaxレベル、及び、ひいては適切なVID設定、そして、また、潜在的に適切なFmaxを決定することが可能である。GPUの場合に、例えば、Iccmaxの大きさに影響を与える場合がある要因は、(例えば、複数のEUにおいて)実行される命令のタイプ、使用されるデータのタイプ、サンプラの中で実行されるテクスチャフィルタリング(texture filtering)のタイプ、及び他の要因を含んでもよい。
【0021】
(例えば、EUにおいて)実行される命令に関して、複数の命令のうちのいくつかは、他の命令よりも多くの電力を浪費することで知られている場合がある(例えば、mul、mad、及び/又は超越関数等の命令は、加算及びシフトに関連する命令よりも多くの電力を浪費する場合がある)。また、機械学習(ML)アプリケーションによって使用される場合がある収縮アレイ乗算(systolic array multiplication)は、3Dグラフィックス命令よりも有意により多くの電流を引き出す場合がある。
【0022】
使用されるデータタイプに関して、浮動小数32演算(float-32 operation)は、例えば、整数演算よりもより多くの電力を浪費する場合がある。
【0023】
サンプラの中で実行されるテクスチャフィルタリングのタイプに関して、異方性フィルタリング(anisotropic filtering)は、例えば、双線形フィルタリング(bilinear filtering)よりも高い電力散逸につながる場合がある。
【0024】
(作業負荷のタイプ、命令、及びデータ構造等の)複数の要因のうちのいくつかに関する情報は、コンパイル時に静的に知られていてもよい。例えば、コンパイラは、シェーダ(shader)が浮動小数32データタイプ(float-32 data type)を使用するのか又は整数データタイプ(integer data type)を使用するのかを決定することが可能である場合がある。レンダリング状態が更新され、且つ、ドライバがリングバッファを満たすときに、(例えば、ある特定の引き込みコール(draw call)によって使用されるテクスチャフィルタリングのタイプ等の)複数の要因のうちのいくつかに関する情報は、実行時に知られていてもよい。さらに、ドライバは、複数のGPU EUに収縮アレイ乗算(systolic array multiplication)を生成すべきであるか否かを知ることが可能である。コンパイラ及び/又はドライバからのヒントがpcodeに渡される場合に、そのpcodeは、Iccmaxへの影響を推定することが可能であり、それに応じて、(必要であるときに設定を上げ、及び/又は、可能であるときに設定を下げるといったように)VID設定を調整して、電力散逸を減少させてもよい。
【0025】
このようにして、上記で説明されている作業負荷情報を使用するときに、有利なことに、Iccmaxのより良好な推定を行うことが可能であるとともに、有利なことに、(例えば、トランジスタにおいて大きな電圧低下及び/又はタイミング超過を引き起こさないであろうレベルまでといったように)より適切なレベルまで、Iccmaxの値を減少させることが可能である。また、作業負荷特有のIccmaxを推定することによって、そのIccmaxレベルと一致するように、(例えば、Fmax等の)最大許容動作周波数を適切に調整することが可能であり、それによって、そのGPUは、有利なことに、毎回、最大可能Fmax値で動作することが可能である。
【0026】
Fmax使用許可等の作業負荷に依存する電力管理を実装するためのさまざまなメカニズム及び方法が本明細書において開示されている。さまざまな実装において、(Iccmaxは、その作業負荷に依存する場合があるため)その構成要素が実行する作業負荷の特性に基づいて、(例えば、GPU等の)構成要素のIccmaxを決定してもよい。Iccmaxは、例えば、1つ又は複数のEUにおいて実行される(例えば、3Dグラフィックス命令又はML命令等の)命令のタイプ、シェーダ(shader)によって使用されるデータタイプ、及び採用されるテクスチャフィルタリングのタイプ等に依存する場合がある。コンパイラ(及び/又はドライバ)が、前もって、作業負荷の特性に関する情報を提供する場合に、pcodeは、その作業負荷に基づいて、Iccmax設定、VID設定、及び/又はFmaxを適切に調整することが可能である。
【0027】
作業負荷に依存するI
ccmaxの決定は、さまざまな利用状況モデル(usage model)を有してもよい。作業負荷に依存するI
ccmaxの決定の第1の利用状況モデルにおいて、
図1は、本開示の複数の実施形態のうちのいくつかにしたがった複数の異なるタイプのグラフィックの処理に起因する複数の領域を有するある1つの例示的なビデオフレームを図示している。戦闘ゲームからのフレーム100は、第1の部分110及び第2の部分120を含む。フレーム100は、(例えば、第1の部分110の中の)地形が、(例えば、異方性フィルタリング(anisotropic filtering)等の)第1のタイプのフィルタリングを使用してレンダリングされる一方で、(例えば、第2の部分120の中の)戦車が、(例えば、双線形フィルタリング(bilinear filtering)等の)第2のタイプのフィルタリングを使用してレンダリングされる戦闘シーンを示す。
【0028】
地形及び周囲環境の大部分を最初にレンダリングしてもよいが、一方で、(例えば、ある1つのタイプのグラフィカルレンダリングタスク等の)"引き込みコールA(Drawcall A)"を使用すること等によって、そのフレームのための処理の終わりの頃に、戦車をレンダリングしてもよい。その引き込みコールAのためのIccmax状態が、(例えば、異方性ではなく双線形等の)使用されるテクスチャタイプを除き、フレーム処理の残りの部分のIccmax状態と同じである場合に、Iccmaxは、フレーム処理の開始におけるよりも(例えば、引き込みコールAの使用の際等の)フレーム処理の終わりの頃により低くなってもよい。
【0029】
したがって、VID設定は、フレーム処理の終わりの頃により低くなってもよく、そのより低いVID設定は、有利なことに、電力節減につながる場合がある。(VIDの変更は、典型的には、数マイクロ秒のオーダーで行われてもよいが、一方で、引き込みコールの変更は、典型的には、数ミリ秒のオーダーで継続する場合があり、その結果、VIDの変更は、引き込みコールの継続期間と比較して、わずかな時間を要する場合がある。) 例えば、引き込みコールAが進行している間にVIDを0.85ボルト(V)から0.84[V]に減少させると、((0.84/0.85)^2≒0.98であるため)おおよそ2%だけ、引き込みコールAが実行されるフレーム処理の部分についての電力散逸を減少させることが可能である。
【0030】
作業負荷に依存するI
ccmaxの決定の第2の利用状況モデルにおいて、
図2は、本開示の複数の実施形態のうちのいくつかにしたがった複数の異なる作業負荷についての最大電流引き込み(I
ccmax)の関数としての周波数のプロットを図示している。グラフ200において、周波数は、第1の作業負荷210及び第2の作業負荷220の双方について、4タイル個別グラフィックカードの各々のタイルについてのI
ccmaxの関数としてプロットされる。第1の作業負荷210は、3Dグラフィックス作業負荷に対応し、一方、第2の作業負荷220は、ML作業負荷に対応する。(単純化するために、
図2は、GPUのI
ccmaxのみを示しており、高帯域幅メモリ(high-bandwidth memory(HBM))等のグラフィックスカードにある他の構成要素についてはI
ccmaxを省略している。
【0031】
第2の作業負荷220等のML作業負荷は、収縮アレイ乗算(systolic array multiplication)を使用してもよく、収縮アレイ乗算は、複数のGPU EUにおける極めて高いIccmaxの原因となる場合がある。その結果、ある特定の周波数においては、Iccmaxは、3Dグラフィックス作業負荷についてよりもML作業負荷についての方が有意に高くなる場合がある。
【0032】
例えば、グラフィックスカード電力配送システムは、4つのタイルの各々に最大で350アンペア(A)のI
ccmaxを提供してもよい。
図2に示されているように、350[A]のI
ccmaxは、3Dグラフィックス作業負荷のための約2.0[GHz]のF
max周波数に変換され、ML作業負荷のための約1.75[GHz]のF
max周波数に変換される。
【0033】
対応するF
max周波数は、すべての作業負荷について安全なF
max周波数である場合があるため、作業負荷特有のI
ccmax値を区別することなく、システムは、(例えば、ML作業負荷のI
ccmax等の)最悪の場合のI
ccmax曲線を仮定し、そして、(例えば、1.75[GHz]等の)その対応するF
max周波数を使用するように構成されてもよい。これに対して、ドライバ(及び/又はコンパイラ)が、(例えば、コマンドストリームの中で以降の収縮アレイ乗算が存在しない場合等の)GPUにおいて実行しようとしているそのコマンドストリームの中の次の命令についてのヒントを提供することが可能である場合には、システムは、(例えば、3Dグラフィックス作業負荷についてのI
ccmax曲線等の)異なるI
ccmax曲線を使用し、そして、(例えば、2.0[GHz]等の)対応するF
max周波数を使用するように構成されてもよい。
図2に関して、そのようなヒントは、(2.0[GHz]/1.75[GHz]≒1.14倍となるため)おおよそ1.14倍の3Dグラフィックス作業負荷のための周波数ブーストに対応することが可能である。
【0034】
図3は、本開示の複数の実施形態のうちのいくつかにしたがって作業負荷に依存する電力管理を実装するためのある1つの例示的なフローチャートを図示している。フロー300は、ML収縮命令に関係してもよく、それらのML収縮命令は、多層ニューラルネットワークにおけるML学習及び/又はML推論のために実行することが可能である命令等のアレイ乗算のために使用することが可能である命令である。フロー300は、ML収縮命令に関連していてもよいが、より一般的には、フロー300と本質的に同様のさまざまな例示的なフローは、1つ又は複数の命令及び/又は1つ又は複数のタイプの命令に関連していてもよい。
【0035】
この例は、GPUの2つのIccmaxレベル(及び、Fmaxレベル)を考慮し、それらの2つのレベルのうちの1つは、ML収縮命令を使用しない作業負荷に適用可能であるレベルであり、もう1つは、ML収縮命令を使用する作業負荷に適用可能であるレベルでである。ML収縮命令により、GPUが有意により大きな電流を引き出すことにつながる場合があるため、そのような命令を使用すると、GPUをある与えられているIccmax割り当て量に適合させるのを可能とするために、より低いFmaxを使用するようにシステムを構成する場合がある。
【0036】
フロー300は、ブロック305、ブロック310、ブロック316、ブロック318、ブロック320、ブロック330、ブロック338、ブロック340、及び/又はブロック395を含んでもよい。フロー300は、また、決定315、決定325、決定327、決定329、決定337、及び/又は決定345を含んでもよい。
【0037】
ブロック305において、収縮フラグ(systolic flag)は、保留中のML収縮コマンド(pending ML systolic command)を示してもよく、ML収縮命令(ML systolic instruction)を使用しないことを示す(例えば、"0"の値等の)第1の値にその収縮フラグを設定することによって、その収縮フラグをクリアしてもよい。その次に、ブロック310において、GPUドライバに一群の新たなコマンド(new batch of commands)を提示してもよい。
【0038】
決定315において、ドライバは、複数のコマンドを解析して、それらの複数のコマンドがいずれかのML収縮コマンド(ML systolic command)を含むか否かを決定してもよい。ML収縮コマンドが存在する場合には、ブロック316において、ドライバは、GPUコマンドストリーマ(GPU command streamer)に渡されるコマンドのストリームの中に、例えば、"systolic_flag=1"コマンド等のML収縮コマンドの存在を示す命令を挿入してもよい。ML収縮コマンドが存在しない場合には、ブロック318において、ドライバは、GPUコマンドストリーマに渡されるコマンドのストリームの中に、例えば、"systolic_flag=0"コマンド等のML収縮コマンドの不在を示す命令を挿入してもよい。
【0039】
フロー300は、その次に、ブロック320に進んでもよい。GPUコマンドストリーマは、GPUが次に実行するための命令のグループを含んでもよく、その命令のグループは、(例えば、"systolic_flag=1"コマンド又は"systolic_flag=0"コマンド等の)挿入された"systolic_flag"命令を含んでもよく、したがって、その挿入された"systolic_flag"命令は、その結果、GPUコマンドストリーマの中のML収縮命令の存在又は不在を示すことが可能である。GPUは、ドライバがGPUコマンドストリーマの中に配置している命令のすべてをループにし(loop through)そして実行してもよい。そのため、決定325は、GPUがGPUコマンドストリーマから取り出す次の命令(the next instruction that the GPU fetches from the GPU command streamer)が"systolic_flag"命令であるか否かを決定してもよい。GPUがGPUコマンドストリーマから取り出す次の命令が"systolic_flag"命令である場合には、フロー300は、決定327に進んでもよく、GPUがGPUコマンドストリーマから取り出す次の命令が"systolic_flag"命令ではない場合には、フロー300は、決定329に進んでもよい。
【0040】
決定327において、フロー300は、"systolic_flag=0"コマンドが存在するか否か、及び、収縮フラグ(systolic flag)が、(例えば、以前は、"1"の値に設定されていたといったように)第1の値を有するか否かを決定してもよい。"systolic_flag=0"コマンドが存在し、且つ、収縮フラグが第1の値を有する場合には、ブロック330において、GPUは、(例えば、収縮フラグを"0"の値にクリアしてもよいといったように)収縮フラグを第2の値に設定してもよく、そして、pcodeハンドシェイクを開始して、新たなFmaxを確立してもよく、フロー300は、決定345に進んでもよく、"systolic_flag=0"コマンドが存在し、且つ、収縮フラグが第1の値を有するということを満たさない場合には、フロー300は、決定337に進んでもよい。
【0041】
決定337において、フロー300は、"systolic_flag=1"コマンドが存在するか否か、及び、収縮フラグが、(例えば、以前に、"0"の値にクリアされているといったように)第2の値を有するか否かを決定してもよい。"systolic_flag=1"コマンドが存在し、且つ、収縮フラグが第2の値を有する場合には、ブロック340において、GPUは、(例えば、収縮フラグを"1"の値に設定してもよいといったように)収縮フラグを設定してもよく、そして、pcodeハンドシェイクを開始して、新たなFmaxを確立してもよく、フロー300は、決定345に進んでもよく、"systolic_flag=1"コマンドが存在し、且つ、収縮フラグが第2の値を有するということを満たさない場合には、フロー300は、決定345に進んでもよい。
【0042】
決定329において、収縮フラグがクリアされ、且つ、収縮命令が提示されている場合に、フロー300は、ブロック395に進んでもよく、収縮フラグがクリアされ、且つ、収縮命令が提示されているということを満たさない場合には、フロー300は、ブロック338に進んでもよい。ブロック338において、GPUは、GPUコマンドストリーマの中の次の命令を続けて正常に実行してもよく、フロー300は、決定345に進んでもよい。ブロック395において、現在の一群の命令(current batch of instructions)は、ML収縮命令を含んでいない場合があるが、GPUは、実行される"systolic_flag"命令に遭遇している場合がある。その場合には、可能性のあるIccmax違反に起因して、適切なFmaxの使用許可がない状態で、一度に、複数のいずれかの収縮フラグ命令を実行することは電気的に安全ではない場合があるため、GPUは、例えば、そのGPUが実行している現在のコンテキストを終了させるといったように、不正なオペレーションコードとしてこの"systolic_flag"命令を取り扱いそして中断してもよい。
【0043】
決定345において、フロー300は、現在の一群の命令(current batch of instructions)の終わりに到達しているか否かを決定してもよい。現在の一群の命令の終わりに到達している場合には、フロー300は、ブロック310に進んでもよく(ブロック310においては、GPUドライバに一群の新たなコマンド(new batch of commands)を提示してもよい)、現在の一群の命令の終わりに到達していない場合には、フロー300は、ブロック320に進んでもよい(ブロック320においては、GPUは、GPUコマンドストリーマから次の命令を取り出してもよい)。
【0044】
したがって、"systolic_flag"命令が、以前に設定されたときの収縮フラグをクリアするか、又は、前にクリアされたときの収縮フラグを設定する場合には、GPUは、pcodeとハンドシェイクして、新たなFmax値を取得してもよい。(Pcodeは、とりわけ、GPUの最大動作周波数を指示する(dictate)構成要素において実行されているファームウェアであってもよい。GPUは、このハンドシェイクを実行し、そして、数十マイクロ秒又は数百マイクロ秒のオーダーの短い時間の間、待機して、pcodeに新たな適切なFmax値を割り当ててもよい。) その他の場合には、収縮フラグは、けっして反転しないため、pcodeハンドシェイクの必要はない。
【0045】
図4は、本開示の複数の実施形態のうちのいくつかにしたがって作業負荷に依存する電力管理を実装するための回路を含むある1つの例示的な設計を図示している。(GPUの一部であってもよい)設計400は、第1の回路410及び第2の回路420を含む。
【0046】
さまざまな実施形態において、第1の回路410は、(信号経路405において搬送されてもよい)GPUコマンドのシーケンスを処理するように動作可能であってもよい。GPUコマンドのシーケンスは、(収縮フラグ命令等の)命令を含んでもよく、その命令は、GPUコマンドのシーケンスに対応する作業負荷特性(workload characteristic)を示すフラグを搬送する。第2の回路420は、(Fmaxの変化等の)フラグに基づいて、電力指向パラメータ調整(power-directed parameter adjustment)を開始するように動作可能であってもよい。第1の回路410は、インターフェイス信号415によって、作業負荷特性を搬送するフラグを示してもよい。第2の回路420は、信号経路425を介して電力指向パラメータ調整を開始してもよい。
【0047】
複数の実施形態のうちのいくつかにおいて、フラグは、GPUコマンドのシーケンスの以降の部分(subsequent portion)と関連するテクスチャフィルタリングのタイプ及び/又はGPUコマンドのシーケンスの以降の部分と関連する命令のタイプを示してもよい。複数の実施形態のうちのいくつかにおいて、テクスチャフィルタリングのタイプは、異方性フィルタリング(anisotropic filtering)、線形フィルタリング(linear filtering)、又は双線形フィルタリング(bilinear filtering)であってもよい。複数の実施形態のうちのいくつかにおいて、命令のタイプは、(例えば、ML行列乗算命令(ML matrix multiplication instruction)であってもよい)収縮アレイ行列乗算命令(systolic array matrix multiplication instruction)であってもよい。
【0048】
複数の実施形態のうちのいくつかにおいて、電力指向パラメータ調整は、(例えば、pcodeによるハンドシェイク等の)ファームウェアハンドシェイクを含んでもよい。複数の実施形態のうちのいくつかにおいて、電力指向パラメータ調整は、供給電圧及び/又は周波数について行われてもよい。
【0049】
複数の実施形態のうちのいくつかにおいて、命令は、GPUコマンドのシーケンスの第1の部分に対応する第1の作業負荷特性を示す第1のフラグを搬送する第1の命令であってもよく、GPUコマンドのシーケンスは、GPUコマンドのシーケンスの第2の部分に対応する第2の作業負荷特性を示す第2のフラグを搬送する第2の命令を含んでもよい。第2の回路420は、第1のフラグに基づいて、第1の電力指向パラメータ調整を開始してもよく、第2のフラグに基づいて、第2の電力指向パラメータ調整を開始してもよい。
【0050】
複数の実施形態のうちのいくつかにおいて、第1のフラグは、GPUコマンドのシーケンスの第1の部分が1つ又は複数の収縮アレイ命令を含むということを示してもよい。複数の実施形態のうちのいくつかにおいて、第2のフラグは、GPUコマンドのシーケンスの第2の部分が、収縮アレイ命令を含まないということを示してもよい。複数の実施形態のうちのいくつかにおいて、第1の電力指向パラメータ調整は、電圧パラメータの下方調整(downward adjustment)及び/又は周波数パラメータの上方調整(upward adjustment)を含んでもよい。
【0051】
さまざまな実施形態において、第1の回路410は、コマンドリスト回路(command list circuitry)であってもよく、GPUコマンドのシーケンスを処理してもよく、そのGPUコマンドのシーケンスは、GPUコマンドのシーケンスに対応する作業負荷特性を示すフラグ命令を含む。第2の回路420は、ハンドシェイク回路であってもよく、フラグに基づいて、電力指向パラメータ調整プロトコルを開始してもよい。
【0052】
複数の実施形態のうちのいくつかにおいて、フラグ命令は、GPUコマンドのシーケンスの以降の部分と関連するテクスチャフィルタリングのタイプ及び/又はGPUコマンドのシーケンスの以降の部分と関連する命令のタイプを示してもよい。複数の実施形態のうちのいくつかにおいて、テクスチャフィルタリングのタイプは、異方性フィルタリング、線形フィルタリング、又は双線形フィルタリングであってもよい。複数の実施形態のうちのいくつかにおいて、命令のタイプは、収縮アレイ行列乗算命令であってもよい。
【0053】
複数の実施形態のうちのいくつかにおいて、電力指向パラメータ調整プロトコルは、ファームウェアハンドシェイクを含んでもよい。複数の実施形態のうちのいくつかにおいて、電力指向パラメータ調整プロトコルは、供給電圧及び/又は周波数について行われてもよい。
【0054】
複数の実施形態のうちのいくつかにおいて、フラグ命令は、GPUコマンドのシーケンスの第1の部分に対応する第1の作業負荷特性を示す第1のフラグ命令であってもよい。GPUコマンドのシーケンスは、GPUコマンドのシーケンスの第2の部分に対応する第2の作業負荷特性を示す第2のフラグ命令を含んでもよい。ハンドシェイク回路は、第1のフラグに基づいて、第1の電力指向パラメータ調整を開始し、及び/又は、第2のフラグに基づいて、第2の電力指向パラメータ調整を開始してもよい。
【0055】
複数の実施形態のうちのいくつかにおいて、第1のフラグ命令は、GPUコマンドのシーケンスの第1の部分が1つ又は複数の収縮アレイ命令を含むということを示してもよい。複数の実施形態のうちのいくつかにおいて、第2のフラグ命令は、GPUコマンドのシーケンスの第2の部分が収縮アレイ命令を含まないということを示してもよい。複数の実施形態のうちのいくつかにおいて、第1の電力指向パラメータ調整は、電圧パラメータの下方調整及び/又は周波数パラメータの上方調整を含んでもよく、第2の電力指向パラメータ調整は、電圧パラメータの上方調整及び/又は周波数パラメータの下方調整を含んでもよい。
【0056】
図5は、本開示の複数の実施形態のうちのいくつかにしたがって作業負荷に依存する電力管理を実装するための複数の例示的な方法を図示している。方法500は、処理510及び開始520を含んでもよい。処理するステップ510において、GPUコマンドのシーケンスを処理してもよい。GPUコマンドのシーケンスは、命令を含んでもよく、その命令は、GPUコマンドのシーケンスに対応する作業負荷特性を示す1つ又は複数のフラグを搬送する。開始するステップ520において、1つ又は複数の電力指向パラメータ調整は、1つ又は複数のフラグに基づいて開始されてもよい。
【0057】
複数の実施形態のうちのいくつかにおいて、フラグは、GPUコマンドのシーケンスの以降の部分と関連するテクスチャフィルタリングのタイプ及び/又はGPUコマンドのシーケンスの以降の部分と関連する命令のタイプを示してもよい。複数の実施形態のうちのいくつかにおいて、テクスチャフィルタリングのタイプは、異方性フィルタリング、線形フィルタリング、又は双線形フィルタリングであってもよい。複数の実施形態のうちのいくつかにおいて、命令のタイプは、収縮アレイ行列乗算命令であってもよい。
【0058】
複数の実施形態のうちのいくつかにおいて、電力指向パラメータ調整は、(例えば、pcodeによるハンドシェイク等の)ファームウェアハンドシェイクを含んでもよい。複数の実施形態のうちのいくつかにおいて、電力指向パラメータ調整は、供給電圧及び/又は周波数について行われてもよい。
【0059】
複数の実施形態のうちのいくつかにおいて、命令は、第1の命令であってもよく、その第1の命令は、GPUコマンドのシーケンスの第1の部分に対応する第1の作業負荷特性を示す第1のフラグを搬送し、GPUコマンドのシーケンスは、第2の命令を含んでもよく、その第2の命令は、GPUコマンドのシーケンスの第2の部分に対応する第2の作業負荷特性を示す第2のフラグを搬送する。第2の回路420は、第1のフラグに基づいて、第1の電力指向パラメータ調整を開始してもよく、第2のフラグに基づいて、第2の電力指向パラメータ調整を開始してもよい。
【0060】
複数の実施形態のうちのいくつかにおいて、第1のフラグは、GPUコマンドのシーケンスの第1の部分が、1つ又は複数の収縮アレイ命令を含むということを示してもよい。複数の実施形態のうちのいくつかにおいて、第2のフラグは、GPUコマンドのシーケンスの第2の部分が、収縮アレイ命令を含まないということを示してもよい。複数の実施形態のうちのいくつかにおいて、第1の電力指向パラメータ調整は、電圧パラメータの下方調整及び/又は周波数パラメータの上方調整を含んでもよい。
【0061】
図5を参照すると、フローチャートの複数の動作は、ある1つの特定の順序で示されているが、それらの複数の動作の順序を変更してもよい。このようにして、図示されている複数の実施形態は、異なる順序で実行されてもよく、それらの複数の動作のうちのいくつかは、並行して実行されてもよい。
図5に列挙されている動作及び/又は操作のうちのいくつかは、複数の特定の実施形態にしたがって選択的なものである。提示されているそれらの複数の動作の番号付けは、明確化の目的を有するが、さまざまな動作が生起する必要がある複数の操作の順序を規定することを意図してはいない。追加的に、さまざまなフローからの複数の操作は、さまざまな組み合わせの中で利用されてもよい。
【0062】
複数の実施形態のうちのいくつかにおいて、装置は、
図5の方法のさまざまな動作及び/又は操作を実装するための手段を含んでもよい。
【0063】
さらに、複数の実施形態のうちのいくつかにおいて、機械読み取り可能な記憶媒体は、複数の実行可能な命令を有していてもよく、それらの複数の実行可能な命令は、実行されるときに、1つ又は複数のプロセッサに、
図5の方法を含む操作を実行させる。そのような機械読み取り可能な記憶媒体は、(例えば、磁気テープ又は磁気ディスク等の)磁気記憶媒体、(例えば、光ディスク等の)光記憶媒体、(例えば、従来のハードディスクドライブ、ソリッドステイトディスクドライブ、又はフラッシュメモリベースの記憶媒体等の)電子記憶媒体、又はいずれかの他の有体的な記憶媒体又は非一時的な記憶媒体等のさまざまな記憶媒体のうちのいずれかを含んでもよい。
【0064】
図6は、本開示の複数の実施形態のうちのいくつかにしたがって作業負荷に依存する電力管理を実装するためのメカニズムを有するコンピューティングデバイスを図示している。コンピューティングデバイス600は、本開示の複数の実施形態のうちのいくつかにしたがって作業負荷に依存する電力管理を実装するためのメカニズムを有するグラフィックスカード、コンピュータシステム、システムオンチップ、タブレット、モバイルデバイス、スマートデバイス、又はスマートフォンであってもよい。コンピューティングデバイス600の複数の特定の構成要素は、一般的に示されており、そのようなデバイスのすべての構成要素が、
図6に示されているわけではないというということが理解されるであろう。さらに、複数の構成要素のうちのいくつかは、物理的に分離されていてもよいが、他の構成要素は、同じ物理的パッケージの中に、又は、さらに、同じ物理的シリコンダイに一体化されていてもよい。したがって、
図6に示されているさまざまな構成要素の間の分離は、場合によっては物理的分離でなくてもよく、むしろ、機能的分離であってもよい。また、いずれかの他の図の複数の要素と同じ名称又は同じ参照番号を有する
図6の複数の要素は、説明されている方式と同様のいずれかの方式によって動作し又は機能してもよいが、これらに限定されないということを注記しておく。
【0065】
さまざまな実施形態において、コンピューティングデバイス600の複数の構成要素は、プロセッサ610、オーディオサブシステム620、ディスプレイサブシステム630、I/Oコントローラ640、電力管理構成要素650、メモリサブシステム660、接続構成要素670、1つ又は複数の周辺機器接続680、及び1つ又は複数の追加プロセッサ690のうちのいずれかを含んでもよい。複数の実施形態のうちのいくつかにおいて、プロセッサ610は、本開示の複数の実施形態のうちのいくつかにしたがって、作業負荷に依存する電力管理を実装するためのメカニズムを含んでもよい。しかしながら、さまざまな実施形態において、コンピューティングデバイス600の複数の構成要素のうちのいずれかは、本開示の複数の実施形態のうちのいくつかにしたがって、作業負荷に依存する電力管理を実装するためのメカニズムを含んでもよい。加えて、コンピューティングデバイス600のうちの1つ又は複数の構成要素は、ルータ、ルータのネットワーク、又はネットワークオンチップNoC等の複数のポートを有する相互接続ファブリックを含んでもよい。
【0066】
複数の実施形態のうちのいくつかにおいて、コンピューティングデバイス600は、複数の平面インターフェイスコネクタを使用するように動作可能であるモバイルデバイスであってもよい。ある1つの実施形態において、コンピューティングデバイス600は、コンピューティングタブレット、携帯電話又はスマートフォン、ワイヤレス対応eリーダ、又は他のワイヤレスモバイルデバイス等のモバイルコンピューティングデバイスであってもよい。本開示のさまざまな実施形態は、また、無線インターフェイス等の接続構成要素670の中のネットワークインターフェイスを含んでもよく、それによって、システムの実施形態は、例えば、携帯電話又はパーソナルディジタルアシスタント等の無線デバイスに組み込まれていてもよい。
【0067】
プロセッサ610は、汎用プロセッサ又はCPU(Central Processing Unit)であってもよい。複数の実施形態のうちのいくつかにおいて、プロセッサ610は、マイクロプロセッサ、アプリケーションプロセッサ、マイクロコントローラ、プログラマブル論理デバイス、又は他の処理手段等の1つ又は複数の物理デバイスを含んでもよい。プロセッサ610が実行する処理操作は、その後に、アプリケーション及び/又はデバイス機能を実行することが可能であるオペレーティングプラットフォーム又はオペレーティングシステムの実行を含んでもよい。処理操作は、また、オーディオI/O、ディスプレイI/O、電力管理、コンピューティングデバイス600の他のデバイスへの接続、及び/又は人間のユーザ又は他のデバイスとのI/O(入力/出力)のうちの1つ又は複数に関連する操作を含んでもよい。
【0068】
オーディオサブシステム620は、コンピューティングデバイス600への複数のオーディオ機能の提供と関連する(例えば、オーディオハードウェア及びオーディオ回路等の)ハードウェア構成要素及び(例えば、ドライバ及び/又はコーデック等の)ソフトウェア構成要素を含んでもよい。オーディオ機能は、スピーカ出力及び/又はヘッドホン出力のみならず、マイクロホン入力を含んでもよい。そのような機能のためのデバイスは、コンピューティングデバイス600の中に一体化されてもよく、又は、コンピューティングデバイス600に接続されてもよい。ある1つの実施形態において、ユーザは、プロセッサ610が受信し及び処理する複数のオーディオコマンドを提供することによって、コンピューティングデバイス600と対話する。
【0069】
ディスプレイサブシステム630は、(例えば、ディスプレイデバイス等の)ハードウェア構成要素及び(例えば、ドライバ等の)ソフトウェア構成要素を含んでもよく、それらのハードウェア構成要素及びソフトウェア構成要素は、ユーザがコンピューティングデバイス600と対話するための視覚的表示及び/又は触覚的表示を提供する。ディスプレイサブシステム630は、ディスプレイインターフェイス632を含んでもよく、そのディスプレイインターフェイス632は、ユーザに表示を提供するのに使用される特定のスクリーン又はハードウェアデバイスであってもよい。ある1つの実施形態において、ディスプレイインターフェイス632は、プロセッサ610から分離されたロジックを含み、ディスプレイに関連する少なくともいくつかの処理を実行する。複数の実施形態のうちのいくつかにおいて、ディスプレイサブシステム630は、ユーザに出力及び入力の双方を提供するタッチスクリーン(又は、タッチパッド)デバイスを含む。
【0070】
I/Oコントローラ640は、ユーザとの対話に関連するハードウェアデバイス及びソフトウェア構成要素を含んでもよい。I/Oコントローラ640は、オーディオサブシステム620及び/又はディスプレイサブシステム630の一部であるハードウェアを管理するように動作可能であってもよい。追加的に、I/Oコントローラ640は、ユーザがシステムと対話することが可能であるとともに、コンピューティングデバイス600に接続する複数の追加的なデバイスのための接続ポイントであってもよい。例えば、コンピューティングデバイス600に取り付けることが可能である複数のデバイスは、マイクロホンデバイス、スピーカシステム又はステレオシステム、ビデオシステム又は他のディスプレイデバイス、キーボードデバイス又はキーパッドデバイス、或いは、カードリーダ又は他のデバイス等の複数の特定の用途で使用するための他のI/Oデバイスを含んでもよい。
【0071】
上記のように、I/Oコントローラ640は、オーディオサブシステム620及び/又はディスプレイサブシステム630と対話することが可能である。例えば、マイクロホン又は他のオーディオデバイスによる入力は、コンピューティングデバイス600の1つ又は複数のアプリケーション又は機能のための入力又はコマンドを提供することが可能である。追加的に、表示出力の代わり又は表示出力に加えて、オーディオ出力を提供してもよい。他の例では、ディスプレイサブシステム630がタッチスクリーンを含む場合に、ディスプレイデバイスは、また、入力デバイスとしても機能してもよく、その入力デバイスは、少なくともI/Oコントローラ640によって部分的に管理されてもよい。また、コンピューティングデバイス600に追加的なボタン又はスイッチが存在して、I/Oコントローラ640によって管理されるI/O機能を提供してもよい。
【0072】
複数の実施形態のうちのいくつかにおいて、I/Oコントローラ640は、加速度計、カメラ、光センサ、又は他の環境センサ、或いは、コンピューティングデバイス600の中に含まれてもよい他のハードウェア等のデバイスを管理する。入力は、直接的なユーザの対話の一部であってもよく、システムに環境入力を提供して、そのシステムの(例えば、ノイズのためのフィルタリング、輝度検出のためのディスプレイの調整、カメラへのフラッシュの適用、又は他の特徴等の)動作に影響を与えてもよい。
【0073】
電力管理構成要素650は、バッテリ電力使用量、バッテリ充電、及び電力節約動作に関連する複数の特徴の管理と関連する(例えば、電力管理デバイス及び/又は回路等の)ハードウェア構成要素及び(例えば、ドライバ及び/又はファームウェア等の)ソフトウェア構成要素を含んでもよい。
【0074】
メモリサブシステム660は、コンピューティングデバイス600の中に情報を格納するための1つ又は複数のメモリデバイスを含んでもよい。メモリサブシステム660は、(メモリデバイスへの電力が中断される場合に、その状態は変化しない)不揮発性メモリデバイス及び/又は(メモリデバイスへの電力が中断される場合に、その状態は不定である)揮発性メモリデバイスを含んでもよい。メモリサブシステム660は、アプリケーションデータ、ユーザデータ、音楽、写真、文書、又は他のデータのみならず、コンピューティングデバイス600のアプリケーション及び機能の実行に関連する(長期間のであるか又は一時的であるかにかかわらず)システムデータを格納することができる。
【0075】
また、(例えば、本明細書で説明されているいずれかの他のプロセスを実装するための命令等の)コンピュータ実行可能な命令を格納するための非一時的な機械読み取り可能な媒体として、メモリサブシステム660のいくつかの部分を提供することが可能である。機械読み取り可能な媒体は、これらには限定されないが、フラッシュメモリ、光ディスク、CD-ROM、DVD ROM、RAM、EPROM、EEPROM、磁気カード又は光カード、相変化メモリ(PCM)、或いは、電子的命令又はコンピュータ実行可能な命令を格納するのに適している他のタイプの機械読み取り可能な媒体を含んでもよい。例えば、本開示の複数の実施形態のうちのいくつかは、(例えば、BIOS等の)コンピュータプログラムとしてダウンロードされてもよく、それらのコンピュータプログラムは、(例えば、モデム又はネットワーク接続等の)通信リンクを介してデータ信号によって、(例えば、サーバ等の)リモートコンピュータから(例えば、クライアント等の)要求側のコンピュータに転送されてもよい。
【0076】
接続構成要素670は、セルラーインターフェイス672又は無線インターフェイス674等のネットワークインターフェイスを含んでもよく、それによって、コンピューティングデバイス600のある1つの実施形態は、セルラー電話又はパーソナルディジタルアシスタント等の無線デバイスに組み込まれてもよい。複数の実施形態のうちのいくつかにおいて、接続構成要素670は、コンピューティングデバイス600が外部デバイスと通信することを可能とするための(例えば、無線コネクタ及び/又は有線コネクタ及び通信ハードウェア等の)ハードウェアデバイス及び(例えば、ドライバ及び/又はプロトコルスタック等の)ソフトウェア構成要素を含む。コンピューティングデバイス600は、他のコンピューティングデバイス、無線アクセスポイント、又は基地局等の個別のデバイスのみならず、ヘッドセット、プリンタ、又は他のデバイス等の周辺機器を含んでもよい。
【0077】
複数の実施形態のうちのいくつかにおいて、接続構成要素670は、プロセッサ610が他のデバイスと通信することを可能とするための1つ又は複数の無線インターフェイス等の複数の異なるタイプのネットワークインターフェイスを含んでもよい。一般化するために、コンピューティングデバイス600は、セルラーインターフェイス672及び無線インターフェイス674を使用して図示されている。セルラーインターフェイス672は、一般的に、例えば、GSM或いはその変形又は派生物、CDMA(符号分割多元接続(code division multiple access))或いはその変形又は派生物、TDM(時分割多重化(time division multiplexing))或いはその変形又は派生物、又は他のセルラーサービス規格によって提供されるセルラーネットワーク事業者が提供するセルラーネットワークへの無線インターフェイスを指す。無線インターフェイス674は、一般的に、非セルラー無線インターフェイスを指し、(ブルートゥース(登録商標)、近距離通信等の)パーソナルエリアネットワーク、(Wi-Fi等の)ローカルエリアネットワーク、及び/又は(WiMax等の)ワイドエリアネットワーク、又は他の無線通信を含んでもよい。
【0078】
周辺機器接続680は、ハードウェアインターフェイス及びコネクタのみならず、周辺機器接続を行うための(例えば、ドライバ及び/又はプロトコルスタック等の)ソフトウェア構成要素を含んでもよい。コンピューティングデバイス600は、("への(to)"682を使用して)他のコンピューティングデバイスへの周辺機器デバイスであってもよく、("からの(from)"684を使用して)コンピューティングデバイス600に接続されている周辺機器デバイスを有してもよいということが理解されるであろう。コンピューティングデバイス600は、(例えば、ダウンロード及び/又はアップロード、変更、同期等の)コンピューティングデバイス600におけるコンテンツの管理等の目的で他のコンピューティングデバイスに接続するための"ドッキング(docking)"コネクタを有してもよい。追加的に、ドッキングコネクタは、複数の特定の周辺機器にコンピューティングデバイス600が接続することを可能とし、それらの複数の特定の周辺機器は、コンピューティングデバイス600が、例えば、オーディオビジュアル又は他のシステムへのコンテンツ出力を制御することを可能とする。
【0079】
専有のドッキングコネクタ又は他の専有の接続ハードウェアに加えて、コンピューティングデバイス600は、共通のコネクタ又は標準ベースのコネクタによって周辺機器接続680を形成してもよい。コネクタの一般的なタイプは、(複数の異なるハードウェアインターフェイスのいずれかを含んでもよい)ユニバーサルシリアルバス(USB)コネクタ、ディスプレイポート又はミニディスプレイポート(MDP)コネクタ、高定義マルチメディアインターフェイス(HDMI)コネクタ、ファイアワイヤコネクタ、又は他のタイプのコネクタを含んでもよい。
【0080】
明細書の中での"ある1つの実施形態(an embodiment)"、"ある1つの実施形態(one embodiment)"、"複数の実施形態のうちのいくつか(some embodiments)"、又は"他の実施形態(other embodiments)"への言及は、実施形態に関連して説明されているある特定の特徴、構造、又は特性が、少なくとも複数の実施形態のうちのいくつかに含まれているが、必ずしも実施形態のすべてに含まれているわけではないということを意味する。"ある1つの実施形態(an embodiment)"、"ある1つの実施形態(one embodiment)"、又は"複数の実施形態のうちのいくつか(some embodiments)"のさまざまな表現は、必ずしも、すべてが、同じ実施形態に言及しているわけではない。明細書が、ある構成要素、特徴、構造、又は特性について、"含んでもよい"、"含む場合がある"、又は"含むことが可能である"と記載している場合には、その特定の構成要素、特徴、構造、又は特性は、含まれている必要はない。明細書又は請求項が、ある1つの("a"又は"an")要素に言及している場合には、その明細書又は請求項は、それらの要素のうちの1つのみが存在するということを意味しているのではない。明細書又は請求項が"追加的な(an additional)"要素に言及している場合には、その明細書又は請求項は、それらの追加的な要素のうちの1つよりも多くが存在しているということを除外するものではない。
【0081】
さらに、1つ又は複数の実施形態においていずれかの適切な方式によって、それらの特定の特徴、構造、機能、又は特性を組み合わせてもよい。例えば、2つの実施形態と関連する特定の特徴、構造、機能、又は特性が相互に排他的でない場合には、第1の実施形態は、第2の実施形態と組み合わせられてもよい。
【0082】
本開示は、その開示の複数の特定の実施形態との関連で説明されてきたが、そのような複数の実施形態の多くの代替形態、修正形態、及び変形形態は、上記の説明に照らして当業者には明らかとなるであろう。例えば、ダイナミックRAM(DRAM)等の他のメモリアーキテクチャは、説明されている実施形態を使用してもよい。本開示のそれらの複数の実施形態は、そのような代替形態、修正形態、及び変形形態のすべてを包含して、添付の特許請求の範囲の広い範囲の中に属するようにすることを意図している。
【0083】
加えて、集積回路(IC)チップ及び他の構成要素へのよく知られている電力接続/接地接続は、例示及び議論を簡潔にするとともに、開示を不明瞭にしないように、複数の提示されている図面の中に示されていてもよく又は示されていなくてもよい。さらに、開示を曖昧にすることを避けるために、また、そのようなブロック図の配列の実装に関する細目が、本開示を実装するべきプラットフォームに大きく依存する(すなわち、そのような細目は、十分に当業者の活動の範囲内である必要がある)という事実を考慮して、ブロック図の形態でそれらの複数の配列を示してもよい。本開示の複数の例示的な実施形態を説明するために(例えば、回路等の)複数の特定の詳細を記載する場合には、それらの複数の特定の詳細を使用することなく又はそれらの複数の特定の詳細の変形を使用して、本開示を実装してもよいということが、当業者には明らかとなるはずである。このようにして、その説明は、限定でなく例示として考慮されるべきである。
【0084】
以下の複数の例は、さらなる実施形態に関している。1つ又は複数の実施形態のいずれにおいても、それらの複数の例の中の複数の細目を使用することが可能である。本明細書において説明されている装置の複数の選択的な特徴のすべては、また、方法又はプロセスに関して実装されてもよい。
【0085】
例1は、装置であって、
GPUコマンドのシーケンスを処理するように構成される第1の回路であって、GPUコマンドの前記シーケンスは、GPUコマンドの前記シーケンスに対応する作業負荷特性を示すフラグを搬送する命令を含む、第1の回路と、
前記フラグに基づいて、電力指向パラメータ調整を開始するように構成される第2の回路と、を含む、装置を提供する。
【0086】
例2は、例1の装置であって、前記フラグは、GPUコマンドの前記シーケンスの以降の部分と関連するテクスチャフィルタリングのタイプ、又は、GPUコマンドの前記シーケンスの前記以降の部分と関連する命令のタイプ、のうちの少なくとも1つを示す、装置を提供する。
【0087】
例3は、例2の装置であって、テクスチャフィルタリングの前記タイプは、異方性フィルタリング、線形フィルタリング、又は双線形フィルタリングのうちの1つから選択される、装置を提供する。
【0088】
例4は、例2の装置であって、命令の前記タイプは、収縮アレイ行列乗算命令である、装置を提供する。
【0089】
例5は、例1の装置であって、前記電力指向パラメータ調整は、ファームウェアハンドシェイクを含む、装置を提供する。
【0090】
例6は、例1の装置であって、前記電力指向パラメータ調整は、供給電圧又は周波数のうちの少なくとも1つについてのパラメータ調整である、装置を提供する。
【0091】
例7は、例1の装置であって、
前記命令は、GPUコマンドの前記シーケンスの第1の部分に対応する第1の作業負荷特性を示す第1のフラグを搬送する第1の命令であり、
GPUコマンドの前記シーケンスは、GPUコマンドの前記シーケンスの第2の部分に対応する第2の作業負荷特性を示す第2のフラグを搬送する第2の命令を含み、
前記第2の回路は、前記第1のフラグに基づいて、第1の電力指向パラメータ調整を開始するように構成され、
前記第2の回路は、前記第2のフラグに基づいて、第2の電力指向パラメータ調整を開始するように構成される、装置を提供する。
【0092】
例8は、例7の装置であって、前記第1のフラグは、GPUコマンドの前記シーケンスの前記第1の部分が、1つ又は複数の収縮アレイ行列乗算命令を含むということを示す、装置を提供する。
【0093】
例9は、例7の装置であって、前記第2のフラグは、GPUコマンドの前記シーケンスの前記第2の部分が、収縮アレイ行列乗算命令を含まないということを示す、装置を提供する。
【0094】
例10は、例7の装置であって、前記第1の電力指向パラメータ調整は、電圧パラメータの下方調整又は周波数パラメータの上方調整のうちの少なくとも1つを含む、装置を提供する。
【0095】
例11は、装置であって、
GPUコマンドのシーケンスを処理するように構成されるコマンドリスト回路であって、GPUコマンドの前記シーケンスは、GPUコマンドの前記シーケンスに対応する作業負荷特性を示すフラグ命令を含む、コマンドリスト回路と、
前記フラグに基づいて、電力指向パラメータ調整プロトコルを開始するように構成されるハンドシェイク回路と、を含む装置を提供する。
【0096】
例12は、例11の装置であって、
前記フラグ命令は、GPUコマンドの前記シーケンスの以降の部分と関連するテクスチャフィルタリングのタイプ又はGPUコマンドの前記シーケンスの前記以降の部分と関連する命令のタイプのうちの少なくとも1つを示し、
前記電力指向パラメータ調整プロトコルは、ファームウェアハンドシェイクを含み、
テクスチャフィルタリングの前記タイプは、異方性フィルタリング、線形フィルタリング、又は双線形フィルタリングのうちの1つから選択され、
命令の前記タイプは、収縮アレイ行列乗算命令である、装置を提供する。
【0097】
例13は、例11の装置であって、前記電力指向パラメータ調整プロトコルは、供給電圧又は周波数のうちの少なくとも1つについてのパラメータ調整プロトコルである、装置を提供する。
【0098】
例14は、例11の装置であって、
前記フラグ命令は、GPUコマンドの前記シーケンスの第1の部分に対応する第1の作業負荷特性を示す第1のフラグ命令であり、
GPUコマンドの前記シーケンスは、GPUコマンドの前記シーケンスの第2の部分に対応する第2の作業負荷特性を示す第2のフラグ命令を含み、
前記ハンドシェイク回路は、前記第1のフラグ命令に基づいて、第1の電力指向パラメータ調整を開始するように構成され、
前記ハンドシェイク回路は、前記第2のフラグ命令に基づいて、第2の電力指向パラメータ調整を開始するように構成される、装置を提供する。
【0099】
例15は、例14の装置であって、
前記第1のフラグ命令は、GPUコマンドの前記シーケンスの前記第1の部分が、1つ又は複数の収縮アレイ行列乗算命令を含むということを示し、
前記第2のフラグ命令は、GPUコマンドの前記シーケンスの前記第2の部分が、収縮アレイ行列乗算命令を含まないということを示す、装置を提供する。
【0100】
例16は、例15の装置であって、
前記第1の電力指向パラメータ調整は、電圧パラメータの下方調整又は周波数パラメータの上方調整のうちの少なくとも1つを含み、
前記第2の電力指向パラメータ調整は、前記電圧パラメータの上方調整又は前記周波数パラメータの下方調整のうちの少なくとも1つを含む、装置を提供する。
【0101】
例17は、メモリ、前記メモリに結合されるプロセッサ、及び前記プロセッサが他のデバイスと通信することを可能とする無線インターフェイスを含むシステムであって、前記プロセッサは、
GPUコマンドのシーケンスを処理するように構成される第1の回路であって、GPUコマンドの前記シーケンスは、GPUコマンドの前記シーケンスの第1の部分に対応する第1の作業負荷特性を示す第1のフラグを搬送する第1の命令と、GPUコマンドの前記シーケンスの第2の部分に対応する第2の作業負荷特性を示す第2のフラグを搬送する第2の命令と、を含む、第1の回路と、
前記第1のフラグに基づいて、第1の電力指向パラメータ調整を開始し、前記第2のフラグに基づいて、第2の電力指向パラメータ調整を開始するように構成される第2の回路と、を含む、システムを提供する。
【0102】
例18は、例17のシステムであって、
前記第1のフラグは、GPUコマンドの前記シーケンスの前記第1の部分と関連するテクスチャフィルタリングのタイプ、又は、GPUコマンドの前記シーケンスの前記第1の部分と関連する命令のタイプ、のうちの少なくとも1つを示し、
テクスチャフィルタリングの前記タイプは、異方性フィルタリング、線形フィルタリング、又は双線形フィルタリングのうちの1つから選択され、
命令の前記タイプは、収縮アレイ行列乗算命令である、システムを提供する。
【0103】
例19は、例17のシステムであって、
前記第1の電力指向パラメータ調整は、ファームウェアハンドシェイクの第1の部分を含み、
前記第2の電力指向パラメータ調整は、前記ファームウェアハンドシェイクの第2の部分を含み、
前記第1の電力指向パラメータ調整は、電圧パラメータの下方調整又は周波数パラメータの上方調整のうちの少なくとも1つを含み、
前記第2の電力指向パラメータ調整は、前記電圧パラメータの上方調整又は前記周波数パラメータの下方調整のうちの少なくとも1つを含み、
前記第1の電力指向パラメータ調整及び前記第2の電力指向パラメータ調整は、供給電圧又は周波数のうちの少なくとも1つについてのパラメータ調整である、システムを提供する。
【0104】
例20は、例17のシステムであって、
前記第1のフラグは、GPUコマンドの前記シーケンスの前記第1の部分が、収縮アレイ行列乗算命令を含むということを示し、
前記第2のフラグは、GPUコマンドの前記シーケンスの前記第2の部分が、収縮アレイ行列乗算命令を含まないということを示す、システムを提供する。
【0105】
例21は、方法であって、
GPUコマンドのシーケンスを処理するステップであって、GPUコマンドの前記シーケンスは、GPUコマンドの前記シーケンスに対応する作業負荷特性を示す1つ又は複数のフラグを搬送する命令を含む、ステップと、
前記1つ又は複数のフラグに基づいて、1つ又は複数の電力指向パラメータ調整を開始するステップと、を含む、方法を提供する。
【0106】
例22は、例21の方法であって、
前記第1のフラグは、GPUコマンドの前記シーケンスの以降の部分と関連するテクスチャフィルタリングのタイプ、又は、GPUコマンドの前記シーケンスの前記以降の部分と関連する命令のタイプ、のうちの少なくとも1つを示し、
テクスチャフィルタリングの前記タイプは、異方性フィルタリング、線形フィルタリング、又は双線形フィルタリングのうちの1つから選択され、
命令の前記タイプは、収縮アレイ行列乗算命令であり、
前記電力指向パラメータ調整は、ファームウェアハンドシェイクを含み、
前記電力指向パラメータ調整は、供給電圧又は周波数のうちの少なくとも1つについてのパラメータ調整である、方法を提供する。
【0107】
例23は、例21の方法であって、
前記命令は、GPUコマンドの前記シーケンスの第1の部分に対応する第1の作業負荷特性を示す第1のフラグを搬送する第1の命令であり、
GPUコマンドの前記シーケンスは、GPUコマンドの前記シーケンスの第2の部分に対応する第2の作業負荷特性を示す第2のフラグを搬送する第2の命令を含み、
前記第2の回路は、前記第1のフラグに基づいて、第1の電力指向パラメータ調整を開始するように構成され、
前記第2の回路は、前記第2のフラグに基づいて、第2の電力指向パラメータ調整を開始するように構成される、方法を提供する。
【0108】
例24は、例23の方法であって、
前記第1のフラグは、GPUコマンドの前記シーケンスの前記第1の部分が、1つ又は複数の収縮アレイ行列乗算命令を含むということを示し、
前記第2のフラグは、GPUコマンドの前記シーケンスの前記第2の部分が、収縮アレイ行列乗算命令を含まないということを示し、
前記第1の電力指向パラメータ調整は、電圧パラメータの下方調整又は周波数パラメータの上方調整のうちの少なくとも1つを含む、方法を提供する。
【0109】
読者が技術的な開示の性質及び要旨を確認することを可能とする要約が提供される。その要約は、特許請求の範囲又は意味を限定するのに使用されることはないであろうという理解の下に提示される。以下の特許請求の範囲は、詳細な説明に組み込まれ、各々の請求項は、それ自体が個別の実施形態として存在する。