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

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

▶ インテル コーポレイションの特許一覧

特表2022-545604切り替え可能なグラフィックシステムのパフォーマンス、エネルギー消費ベースのアプリケーション、及びリアルタイムシステムの電力/熱バジェットを改善するための機器及び方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-10-28
(54)【発明の名称】切り替え可能なグラフィックシステムのパフォーマンス、エネルギー消費ベースのアプリケーション、及びリアルタイムシステムの電力/熱バジェットを改善するための機器及び方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20221021BHJP
   G06F 9/38 20060101ALI20221021BHJP
【FI】
G06F9/50 150D
G06F9/38 380C
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022502495
(86)(22)【出願日】2020-08-03
(85)【翻訳文提出日】2022-01-14
(86)【国際出願番号】 US2020044787
(87)【国際公開番号】W WO2021034496
(87)【国際公開日】2021-02-25
(31)【優先権主張番号】62/889,511
(32)【優先日】2019-08-20
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
2.HDMI
3.3GPP
4.THUNDERBOLT
5.FIREWIRE
(71)【出願人】
【識別番号】593096712
【氏名又は名称】インテル コーポレイション
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ヴェンカタラマン,シュリクリシュナン
(72)【発明者】
【氏名】ハンチャテ,マラリ
(72)【発明者】
【氏名】ラヒリ,サヤン
(72)【発明者】
【氏名】ディバド,ヴィジャヤクマール
【テーマコード(参考)】
5B013
【Fターム(参考)】
5B013EE09
(57)【要約】
切り替え可能なグラフィック管理スキームは、SoC(システムオンチップ)の熱バジェット、システム電力バジェット等のシステムリアルタイムリソースとともに、iGPU/dGPUの両方のパフォーマンス/ワット情報を使用して、タスクをレンダリングするのに適切なGPUを決定する。このスキームは、システムリソースとともにこの閾値電力ポイント情報を使用して、全てのアプリケーション及びユースケースのタスクレンダリングに最適化されたGPUを決定する。そのため、このスキームは、その特定のシステムの能力に基づいて、各システム設計に適応する。
【特許請求の範囲】
【請求項1】
グラフィックプロセッサであって、当該グラフィックプロセッサは、
統合グラフィック処理装置(iGPU)と、
ディスクリート・グラフィック処理装置(dGPU)と、
前記iGPUと前記dGPUとの両方のワットあたりのパフォーマンス情報を適応的に適用するロジックと;
前記iGPU又は前記dGPUのどちらがレンダリングタスクを実行するかを決定する熱出力ポイント(TPP: thermal power point)と、を含む、
グラフィックプロセッサ。
【請求項2】
前記ロジックは、前記iGPU又は前記dGPUのどちらが前記レンダリングタスクを実行するかを決定する前に、テレメトリ情報を受信する、請求項1に記載のグラフィックプロセッサ。
【請求項3】
前記ロジックは、前記テレメトリ情報によって受信した瞬間電力データ及び以前の電力データを介して、当該グラフィックプロセッサの平均消費電力を決定する、請求項2に記載のグラフィックプロセッサ。
【請求項4】
前記ロジックは、前記平均消費電力が前記TPPよりも大きいかどうかを判定し、前記平均消費電力が前記TPPよりも大きい場合に、前記ロジックは、前記dGPUが前記レンダリングタスクを実行するように選択する、請求項3に記載のグラフィックプロセッサ。
【請求項5】
前記平均消費電力が前記TPPよりも少ない場合に、前記ロジックは、前記iGPUがレンダリングタスクを実行するように選択する、請求項4に記載のグラフィックプロセッサ。
【請求項6】
前記平均消費電力に閾値数を超える複数の低遷移及び高遷移がある場合に、次に、前記ロジックは、前記平均消費電力のデューティサイクルに従って、前記iGPU又は前記dGPUのどちらが前記レンダリングタスクを実行するかを決定する、請求項3に記載のグラフィックプロセッサ。
【請求項7】
電源が前記dGPUの消費電力をサポートすることができないと前記ロジックが判定した場合に、前記ロジックは、前記iGPUがタスクをレンダリングするように選択するべく、オペレーティングシステム又はドライバに要求する、請求項4に記載のグラフィックプロセッサ。
【請求項8】
当該グラフィックプロセッサのプロセッサコアが熱的に制限されていると前記ロジックが判定した場合に、前記ロジックは、前記dGPUがタスクをレンダリングするように選択するべく、オペレーティングシステム又はドライバに要求する、請求項5に記載のグラフィックプロセッサ。
【請求項9】
前記ロジックが、前記iGPU又は前記dGPUのどちらが前記レンダリングタスクを実行するかを決定する前に、オペレーティングシステム又はドライバは、前記iGPU又は前記dGPUのどちらが前記レンダリングタスクを実行するかを決定する、請求項1に記載のグラフィックプロセッサ。
【請求項10】
前記TPPは、様々なアプリケーションで当該グラフィックプロセッサにストレスをかけることによって決定される、請求項1に記載のグラフィックプロセッサ。
【請求項11】
前記TPPは、BIOS又は埋込みコントローラに渡される、請求項1に記載のグラフィックプロセッサ。
【請求項12】
命令を記憶した機械可読媒体であって、前記命令が実行されると、グラフィック処理装置(GPU)に方法を実行させ、該方法には、
様々なアプリケーションで前記GPUにストレスをかけて、熱出力ポイント(TPP)を決定するステップと、
統合グラフィック処理装置(iGPU)とディスクリート・グラフィック処理装置(dGPU)との両方のワットあたりのパフォーマンス情報及び前記TPPを適応的に適用して、前記iGPU又は前記dGPUのどちらがレンダリングタスクを実行するかを決定するステップと、
前記ワットあたりのパフォーマンス情報及び前記TPPに従って、前記iGPU又は前記dGPUのどちらがレンダリングタスクを実行するかを選択するステップと、が含まれる、
機械可読媒体。
【請求項13】
命令を記憶しており、該命令が実行されると、前記GPUに前記方法を実行させ、該方法には、前記iGPU又は前記dGPUのどちらが前記レンダリングタスクを実行するかを決定する前に、テレメトリ情報を受信するステップが含まれる、請求項12に記載の機械可読媒体。
【請求項14】
命令を記憶しており、該命令が実行されると、前記GPUに前記方法を実行させ、該方法には、前記テレメトリ情報によって受信した瞬間電力データ及び以前の電力データを介して、前記GPUの平均消費電力を決定するステップが含まれる、請求項13に記載の機械可読媒体。
【請求項15】
命令を記憶しており、該命令が実行されると、前記GPUに前記方法を実行させ、該方法には、前記平均消費電力が前記TPPよりも大きいかどうかを判定し、前記平均消費電力が前記TPPよりも大きい場合に、前記dGPUが前記レンダリングタスクを実行するように選択するステップが含まれる、請求項14に記載の機械可読媒体。
【請求項16】
命令を記憶しており、該命令が実行されると、前記GPUに前記方法を実行させ、該方法には、前記平均消費電力が前記TPPよりも少ない場合に、前記iGPUが前記レンダリングタスクを実行するように選択するステップが含まれる、請求項15に記載の機械可読媒体。
【請求項17】
命令を記憶しており、該命令が実行されると、前記GPUに前記方法を実行させ、該方法には、前記平均消費電力に閾値数を超える複数の低遷移及び高遷移がある場合に、前記平均消費電力のデューティサイクルに従って、前記iGPU又は前記dGPUのどちらが前記レンダリングタスクを実行するかを決定するステップが含まれる、請求項14に記載の機械可読媒体。
【請求項18】
命令を記憶しており、該命令が実行されると、前記GPUに前記方法を実行させ、該方法には、電源が前記dGPUの消費電力をサポートすることができないと判定した場合に、前記iGPUがタスクをレンダリングするように選択するべく、オペレーティングシステム又はドライバに要求するステップが含まれる、請求項15に記載の機械可読媒体。
【請求項19】
命令を記憶しており、該命令が実行されると、前記GPUに前記方法を実行させ、該方法には、前記GPUのプロセッサコアが熱的に制限されていると判定された場合に、前記dGPUがタスクをレンダリングするように選択するべく、オペレーティングシステム又はドライバに要求するステップが含まれる、請求項16に記載の機械可読媒体。
【請求項20】
システムであって、当該システムは、
メモリと、
該メモリに結合されたグラフィック処理装置(GPU)と、
該GPUが別の装置と通信するのを可能にする無線インターフェースと、を含み、
前記GPUは、請求項1乃至11のいずれか一項に記載されているものである、
システム。
【発明の詳細な説明】
【技術分野】
【0001】
優先権の主張
本願は、2019年8月20日に出願された、“Apparatus and Method To Improve Switchable Graphics System Performance And Energy Consumption Based Applications And Real-Time System Power/Thermal Budgets”という表題の米国仮出願62/889,511号の優先権の利益を主張するものであり、この文献は、その全体が参照により組み込まれる。
【0002】
本願は、切り替え可能なグラフィックシステムのパフォーマンス、エネルギー消費ベースのアプリケーション、及びリアルタイムシステムの電力/熱バジェットを改善するための機器及び方法に関する。
【背景技術】
【0003】
既存の切り替え可能なグラフィックシステムでは、タスクレンダリングに統合グラフィック(iGPU)又はディスクリート・グラフィック(dGPU)を使用するアプリケーションの決定は、グラフィックソフトウェアドライバ及びオペレーティングシステム(OS)によってのみ決定される。タスク実行のためにiGPU又はdGPUを決定するドライバ/OSには、GPUのワットあたりのパフォーマンス能力に関する情報も、GPUのパフォーマンスとエネルギー消費との両方に影響を与える主要なパラメータであるメモリ構成、SoC(システムオンチップ)の熱バジェット、バッテリ電力バジェット等のシステムリソースに関する情報もない。
【図面の簡単な説明】
【0004】
本開示の実施形態は、以下に与える詳細な説明及び本開示の様々な実施形態の添付の図面からより完全に理解されるが、これらは、本開示を特定の実施形態に限定するものと解釈すべきではなく、説明及び理解のためだけにある。
図1】本開示のいくつかの実施形態による、共有ローカルメモリ(SLM)とシステムグローバルメモリ(SGM)との間のメモリアクセスパフォーマンスを改善するための機器を備えたデータ処理システムのブロック図である。
図2】本開示のいくつかの実施形態による、1つ又は複数のプロセッサコア、統合メモリコントローラ、及び統合グラフィックプロセッサを有し、SLMとSGMとの間のメモリアクセスパフォーマンスを改善するための機器を備えたプロセッサのブロック図である。
図3】本開示のいくつかの実施形態による、ディスクリート・グラフィック処理装置であり得るか、又は複数の処理コアと統合されたグラフィックプロセッサであり得るグラフィックプロセッサのブロック図である。
図4】本開示のいくつかの実施形態による、グラフィックプロセッサのためのグラフィック処理エンジン(GPE)のブロック図である。
図5】実行ユニットに関連するグラフィックプロセッサの別の実施形態のブロック図である。
図6】GPEのいくつかの実施形態で使用される処理要素のアレイを含むスレッド実行ロジックを示す図である。
図7】本開示のいくつかの実施形態による、グラフィックプロセッサ実行ユニット命令フォーマットを示すブロック図である。
図8】グラフィックパイプライン、メディアパイプライン、ディスプレイエンジン、スレッド実行ロジック、及びレンダリング出力パイプラインを含むグラフィックプロセッサの別の実施形態のブロック図である。
図9A】いくつかの実施形態による、グラフィックプロセッサのコマンドフォーマットを示すブロック図である。
図9B】本開示のいくつかの実施形態による、グラフィックプロセッサのコマンドシーケンスのブロック図である。
図10】本開示のいくつかの実施形態による、データ処理システムのためのグラフィック・ソフトウェア・アーキテクチャを示す図である。
図11】従来のOpenCLワークグループのアーキテクチャ及びメモリ構造を示す図である。
図12】iGPU及びdGPUのパフォーマンス対消費電力を示すチャートである。
図13】iGPU及びdGPUのパフォーマンス対消費電力を示すチャートである。
図14A】いくつかの実施形態による、切り替え可能なグラフィック電力管理スキームのフローチャートである。
図14B】いくつかの実施形態による、切り替え可能なグラフィック電力管理スキームのフローチャートである。
図15】いくつかの実施形態による、コンピュータシステムを示す図である。
図16】様々な実施形態の機器、方法、及びシステムによるスマート装置又はコンピュータシステム又はSoC(システムオンチップ)を示す図である。
【発明を実施するための形態】
【0005】
既存のソリューションは、起動時のアプリケーションをドライバ内のアプリケーションのリストと比較する。比較に基づいて、ドライバは、そのアプリケーションをレンダリングするためのiGPU又はdGPUを決定する。例えば、アプリケーションの標準セットは、iGPU上の同じアプリケーションの電力及びパフォーマンスを比較することにより、それらのアプリケーションがレンダリングのためにdGPUを使用する必要があるかどうかを判定するために事前にテストされ、それに応じて分類され、ドライバに一覧表示される。場合によっては、アプリケーションに関連付けられるDLL(dynamic link library)が、iGPUとdGPUのどちらを使用するかが事前にコード化されている。従って、ドライバ及び/又はOSは、DLL情報に基づいてGPUを選択する。ユーザは、GPU選択のドライバ及び/又はOSの決定を上書きできるが、これには手動での設定変更が含まれ得る。
【0006】
GPUのパフォーマンス及びエネルギー消費に影響を与えるシステムレベルの要因が多く存在する。例えば、切り替え可能なグラフィックシステムの設計が異なれば、異なるベンダーからのiGPUとdGPUとの組合せも異なる。スキューとシステムの熱及び電力エンベロープ、メモリ構成は設計毎に一意になる。ここで、スキューとは、標準値又は公称値からの電力引出量(power drawn)又は熱能力の変動を指す。そのため、アプリケーションのパフォーマンス及び電力を特徴付ける事前テスト方法は、個々のシステムに非常に特有のものになる。このドライバ/OSベースのソリューションを一般化することは、全ての設計にとって効率的ではない場合がある。
【0007】
アプリケーションの事前の特徴付け及びそれらをドライバにリスト化することは、全てのアプリケーション及びユースケースを網羅しない場合がある。例えば、ドライバにリスト化する前に、ユーザが利用できる全てのアプリケーションをテストすることは事実上不可能である。プログラムのプロファイルは、いくつかの標準的で典型的なアプリケーションのみしか網羅しない場合がある。
【0008】
以前のソリューションは、ドライバがレンダリングのためにGPUを決定するためのルックアップテーブルの類のメカニズムを使用する。この類の実施態様では、コア及びグラフィックをローディングする複数のアプリケーションが一緒に起動されたときに、システムにGPUの全体的な電力及びパフォーマンスを確認するメカニズムがない場合がある。既存の切り替え可能なグラフィックシステムには、リアルタイムのシステム条件(熱、電力バジェット等)を使用し、iGPU/dGPUのパフォーマンス/ワット能力を調べて、タスク実行のために最適化されたGPUを決定するハードウェア(HW)又はソフトウェア(SF)インテリジェンスは存在しない。この制限により、GPUドライバは、全てのユースケース及びアプリケーションでGPUの最適化された使用率を保証できない。そのため、タスクをレンダリングするためのGPU(グラフィック処理装置)を決定するドライバの既存のアプローチは、全てのユースケースで(エネルギーとパフォーマンスとの両方の面で)効率的ではない。
【0009】
切り替え可能なグラフィックシステムでは、iGPU及びdGPUの電力及びパフォーマンスは、GPUの熱設計電力(TDP)ストックキーピングユニット(skus)、ベンダー、及び/又はシステム電力等のシステム設計毎に一意になり、及び/又は熱エンベロープが設計毎に異なる。dGPUのレンダリング能力は、はるかに高く、電力に関しては中負荷から高負荷のアプリケーション向けに最適化されていることが知られている。同様に、iGPUのレンダリング能力は、dGPUに比べて比較的低く、低負荷から中負荷のアプリケーション向けに電力が最適化されている。これをベースラインとして、そのiGPUは、特定のポイント(例えば、閾値電力ポイント(threshold power point))まで要求され、iGPUのパフォーマンスはdGPUのパフォーマンスと同じになるが、消費電力ははるかに低くなる。この閾値電力ポイントの後に、消費電力と同様に、dGPUのパフォーマンスはiGPUよりも高くなる。この閾値電力ポイントは、特定のシステムのために選択されたiGPU及びdGPUに依存するため、システム毎に一意になる。閾値電力ポイントは、システムメモリ、熱エンベロープ、電力バジェット等にも依存する。
【0010】
既存のドライバベースのアプローチに関連するギャップに対処するために、いくつかの実施形態は、SoC(システムオンチップ)熱バジェット、システム電力バジェット等のシステムリアルタイムリソースとともにiGPU/dGPUの両方のパフォーマンス/ワット情報を使用して、タスクをレンダリングするのに適切なGPUを決定する、新しい切り替え可能なグラフィック管理スキームを説明する。いくつかの実施形態のスキームは、システムリソースとともにこの閾値電力ポイント情報を使用して、全てのアプリケーション及びユースケースに関するタスクレンダリングのために最適化されたGPUを決定する。そのため、様々な実施形態のスキームは、全てのシステムに一般化されている既存のソリューションとは異なり、その特定のシステムの能力に基づいて各システム設計に適応する。
【0011】
その特定のシステムのiGPU及びdGPU能力、リアルタイムSoC熱制限、システム電力能力に基づいて、アルゴリズムは、以下のケース1及びケース2で述べるように、システム性能又はエネルギー消費を改善するために適切なGPUを選択するように決定することができる。
【0012】
ケース1(例えば、ローエンド(low-end)グラフィックアプリケーションをdGPU上で実行するように切り替えてシステム性能を改善する)では、SoCコア計算ロジックが高消費電力のタスクを処理していると考える。この場合に、ユーザがドライバ/OS命令に従って内部グラフィックを使用することを目的としたグラフィックアプリケーションを起動すると、次に、既存の切り替え可能なグラフィックシステムでは、SoC電力管理によりコア処理が抑制され、SoC電力管理は、グラフィックワークロードに対応し、パッケージTDP(熱設計電力)を含む。これは、グラフィックワークロードに対するコンピュータ性能のトレードオフである。様々な実施形態のスキームは、そのようなシナリオを追跡し続けることができ、この情報をドライバ/OSにフィードバックして、低から中程度のワークロードのGFXアプリケーションをレンダリングするためにdGPUを使用できるため、SoCコアはスロットル(シフト)ダウンなしで計算処理アクティビティを続行することができる。
【0013】
ケース2(例えば、同様のアルゴリズムが、GPUのパフォーマンス/ワット情報に対してグラフィックワークロードパワーを評価することによって、アプリケーションをdGPUからiGPUレンダリングに切り替えるように決定することができる)では、ドライバ/OSが、アプリケーションをレンダリングするためにdGPUを選択したと考える。アプリケーションがdGPUで実行されている間に、様々な実施形態のスキームは、dGPUによって消費されるリアルタイムの平均電力を取得する。GPUの事前に特徴付けされた電力とパフォーマンスデータとを比較したときに、dGPUで測定された電力が特定の閾値電力ポイントを下回っている場合に、次に、アルゴリズムは、レンダリングのためにdGPUからiGPUへのコンテキスト切替えを開始し、これにより、同じパフォーマンスでのエネルギー消費が削減される。同様に、複数のローエンドグラフィックアプリケーションが既存のドライバ/OSの決定に従ってiGPUを使用しており、結果として得られるiGPU電力が閾値電力ポイントを上回っている場合に、次に、全てのGPUレンダリングをdGPUに切り替える必要がある場合に、アルゴリズムも呼出しを行うことができ、それにより、パフォーマンスが向上する。
【0014】
そのため、最高のパフォーマンス又は最適なエネルギー消費は、リアルタイムのシステムパラメータを考慮することによって達成される。エンドユーザにとっては、様々なユースケースシナリオでパフォーマンスの向上又はバッテリ寿命の延長という形でメリットが得られ、これらについては、本明細書で詳しく説明する。他の技術的効果は、様々な実施形態及び図から明らかになろう。
【0015】
以下の説明では、本開示の実施形態のより完全な説明を与えるために、多くの詳細について議論する。しかしながら、当業者には、本開示の実施形態がこれらの特定の詳細なしに実施し得ることが明らかであろう。他の例では、本開示の実施形態を曖昧にするのを避けるために、周知の構造及び装置が、詳細ではなく、ブロック図の形式で示される。
【0016】
実施形態の対応する図面では、信号は線で表されることに留意されたい。いくつかの線は、より多くの構成信号パスを示すために太くされ、及び/又は一次情報の流れの方向を示すために1つ又は複数の端部に矢印がある場合がある。このような表示は、限定することを意図したものではない。むしろ、線は、回路又は論理ユニットの理解を容易にするために、1つ又は複数の例示的な実施形態に関連して使用される。設計の必要性又は好みによって決定されるように、表現された信号は、実際には、いずれかの方向に移動し、任意の適切なタイプの信号スキームで実装され得る1つ又は複数の信号を含み得る。
【0017】
本明細書全体及び特許請求の範囲において、「接続された」という用語は、中間装置を伴わない、接続されたものの間の電気的、機械的、又は磁気的接続等の直接接続を意味する。
【0018】
「結合された」という用語は、1つ又は複数の受動的又は能動的中間装置を介した、接続されたものの間の直接電気的、機械的、又は磁気接続、或いは間接接続等の直接又は間接接続を意味する。
【0019】
本明細書における「隣接する」という用語は、一般に、隣にあるもの(例えば、それらの間に1つ又は複数のものを伴ってすぐ隣又は近くにある)又は別のものに隣接する(例えば、それに隣接する)位置を指す。
【0020】
「回路」又は「モジュール」という用語は、所望の機能を提供するために互いに協力するように配置された1つ又は複数の受動的及び/又は能動的コンポーネントを指し得る。
【0021】
「信号」という用語は、少なくとも1つの電流信号、電圧信号、磁気信号、又はデータ/クロック信号を指し得る。「1つの(a, an)」、及び「その(the)」の意味には、複数形の参照が含まれる。「~に(in)」の意味には、「~に(in)」及び「~上に(on)」が含まれる。
【0022】
「スケーリング」という用語は、一般に、設計(概略及びレイアウト)をあるプロセス技術から別のプロセス技術に変換することを指し、その後、レイアウト領域が縮小される可能性がある。場合によっては、スケーリングとは、設計をあるプロセス技術から別のプロセス技術にアップサイジングすることも指し、その後、レイアウト領域が増大される可能性がある。「スケーリング」という用語は、一般に、同じ技術ノード内のレイアウト及び装置のダウンサイジング又はアップサイジングも指す。「スケーリング」という用語は、別のパラメータ、例えば、電源レベルに関連する信号周波数の調整(例えば、減速又は高速化-すなわち、それぞれ、スケールダウン又はスケールアップ)を指す場合もある。
【0023】
「実質的に」、「近い(close)」、「略」、「近い(near)」、及び「約」という用語は、一般に、目標値の+/-10%以内であることを指す。
【0024】
共通のオブジェクトを説明するための序数形容詞「第1」、「第2」、及び「第3」等の使用が特に明記されない限り、同様のオブジェクトの異なるインスタンスが参照されていることを単に示し、そのように記述されたオブジェクトが、時間的、空間的、ランク付け、又は他の方法で、所与の順序である必要があることを意味することを意図していない。
【0025】
本開示の目的のために、「A及び/又はB」及び「A又はB」という句は、(A)、(B)、又は(A及びB)を意味する。本開示の目的のために、「A、B、及び/又はC」という句は、(A)、(B)、(C)、(A及びB)、(A及びC)、(B及びC)、又は(A、B、及びC)を意味する。
【0026】
詳細な説明及び特許請求の範囲(もしあれば)における「左」、「右」、「前」、「後」、「上」、「下」、「~の上」、「~の下」等の用語は、説明の目的で使用され、必ずしも永続的な相対位置を説明するために使用されるわけではない。
【0027】
他の図の要素と同じ参照符号(又は名前)を有する図のそれらの要素は、説明するものと同様の方法で動作又は機能することができるが、そのように限定されないことを指摘しておく。
【0028】
実施形態の目的のために、本明細書で説明する様々な回路及び論理ブロックのトランジスタは、金属酸化物半導体(MOS)トランジスタ又はそれらの派生物であり、ここで、MOSトランジスタは、ドレイン、ソース、ゲート、及びバルク端子を含む。トランジスタ及び/又はMOSトランジスタ派生物には、Tri-Gate及びFinFETトランジスタ、Gate All Around Cylindrical Transistors、Tunneling FET(TFET)、Square Wire、又はRectangular Ribbon Transistors、強誘電体FET(FeFET)、或いはカーボンナノチューブ又はスピントロニックデバイス等のトランジスタ機能を実装する他のデバイスも含まれる。MOSFETの対称ソース及びドレイン端子は、同じ端子であり、本明細書では互換的に使用される。一方、TFETデバイスには非対称ソース及びドレイン端子がある。当業者は、他のトランジスタ、例えば、バイポーラ接合トランジスタ(BJT PNP/NPN)、BiCMOS、CMOS等が、本開示の範囲から逸脱することなく使用され得ることを理解するであろう。
【0029】
図1は、いくつかの実施形態による、データ処理システム100のブロック図を示している。データ処理システム100は、1つ又は複数のプロセッサ102と、1つ又は複数のグラフィックプロセッサ108とを含み、シングルプロセッサデスクトップシステム、マルチプロセッサワークステーションシステム、或いは多数のプロセッサ102又はプロセッサコア107を有するサーバシステムであり得る。いくつかの実施形態では、データ処理システム100は、モバイル、ハンドヘルド、又は埋込み装置で使用するためのシステムオンチップ集積回路(SoC)である。
【0030】
データ処理システム100の一実施形態は、サーバベースのゲームプラットフォーム、ゲーム及びメディアコンソールを含むゲームコンソール、モバイルゲームコンソール、ハンドヘルドゲームコンソール、又はオンラインゲームコンソールを含むか、又はそれらに組み込むことができる。いくつかの実施形態では、データ処理システムは、携帯電話、スマートフォン、タブレットコンピュータ装置、又はモバイルインターネット装置である。データ処理システム100はまた、スマートウォッチウェアラブル装置、スマートアイウェア装置、拡張現実装置、又は仮想現実装置等のウェアラブル装置を含むか、それらと結合するか、又はそれらの中に統合することができる。いくつかの実施形態では、データ処理システム100は、1つ又は複数のプロセッサ102と、1つ又は複数のグラフィックプロセッサ108によって生成されるグラフィカルインターフェースとを有するテレビ又はセットトップボックス装置である。
【0031】
いくつかの実施形態では、1つ又は複数のプロセッサ102はそれぞれ、命令を処理するための1つ又は複数のプロセッサコア107を含み、命令が実行されると、システム及びユーザソフトウェアの動作を実行する。いくつかの実施形態では、1つ又は複数のプロセッサコア107のそれぞれは、特定の命令セット109を処理するように構成される。命令セット109は、複雑な命令セットコンピューティング(CISC)、縮小命令セットコンピューティング(RISC)、又は超長命令語(VLIW)によるコンピューティングを容易にし得る。複数のプロセッサコア107はそれぞれ、他の命令セットのエミュレーションを容易にするための命令を含み得る異なる命令セット109を処理することができる。プロセッサコア107は、デジタル信号プロセッサ(DSP)等の他の処理装置も含み得る。
【0032】
いくつかの実施形態では、プロセッサ102は、キャッシュメモリ104を含む。アーキテクチャに応じて、プロセッサ102は、単一の内部キャッシュ又は複数のレベルの内部キャッシュを有することができる。いくつかの実施形態では、キャッシュメモリは、プロセッサ102の様々なコンポーネントの間で共有される。いくつかの実施形態では、プロセッサ102は、外部キャッシュ(例えば、レベル3(L3)キャッシュ又はラストレベルキャッシュ(LLC))(図示せず)も使用し、これは、既知のキャッシュコヒーレンシ技術を使用してプロセッサコア107の間で共有され得る。レジスタファイル106が、プロセッサ102にさらに含まれ、これには、異なるタイプのデータを格納するための異なるタイプのレジスタ(例えば、整数レジスタ、浮動小数点レジスタ、ステータスレジスタ、及び命令ポインタレジスタ)が含まれ得る。一部のレジスタは汎用レジスタであり得る一方、他のレジスタはプロセッサ102の設計に固有であり得る。
【0033】
いくつかの実施形態では、プロセッサ102は、プロセッサバス110に結合されて、プロセッサ102とシステム100内の他のコンポーネントとの間でデータ信号を送信する。システム100は、メモリコントローラハブ116及び入力出力(I/O)コントローラハブ130を含む例示的な「ハブ」システムアーキテクチャを使用する。メモリコントローラハブ116は、メモリ装置とシステム100の他のコンポーネントとの間の通信を容易にする一方、I/Oコントローラハブ(ICH)130は、ローカルI/Oバスを介してI/O装置への接続を提供する。
【0034】
いくつかの実施形態では、メモリ装置120は、DRAM(dynamic random-access memory)装置、SRAM(static random-access memory)装置、フラッシュメモリ装置、又はプロセスメモリとして機能するのに適したパフォーマンスを有する他のメモリ装置であり得る。メモリ120は、プロセッサ102がプロセスを実行するときに使用するためのデータ122及び命令212を格納することができる。メモリコントローラハブ116はまた、オプションの外部グラフィックプロセッサ112と結合し、これは、プロセッサ102内の1つ又は複数のグラフィックプロセッサ108と通信して、グラフィック及びメディア操作を実行することができる。
【0035】
ICH130は、周辺機器が高速I/Oバスを介してメモリ120及びプロセッサ102に接続するのを可能にする。I/O周辺機器は、オーディオコントローラ146、ファームウェアインターフェース128、無線トランシーバ126(例えば、Wi-Fi、Bluetooth)、データ記憶装置124(例えば、ハードディスクドライブ、フラッシュメモリ等)、及びレガシー(Personal System 2(PS/2)等)装置をシステムに結合するためのレガシーI/Oコントローラを含む。1つ又は複数のUSB(Universal Serial Bus)コントローラ142は、キーボードとマウス144との組合せ等の入力装置を接続する。ネットワークコントローラ134はまた、ICH130に結合することができる。いくつかの実施形態では、高性能ネットワークコントローラ(図示せず)は、プロセッサバス110に結合する。
【0036】
図2は、1つ又は複数のプロセッサコア202A~N、統合メモリコントローラ214、及び統合グラフィックプロセッサ208を有するプロセッサ200の実施形態のブロック図を示している。他の図の要素と同じ参照符号(又は名前)を有する図2のそれら要素は、説明するのと同様の方法で動作又は機能することができるが、そのように限定されるものではないことを指摘しておく。
【0037】
プロセッサ200は、破線のボックスで表される追加のコア202Nまでの追加のコアを含むことができる。コア202A~Nのそれぞれは、1つ又は複数の内部キャッシュユニット204A~Nを含む。いくつかの実施形態では、各コアは、1つ又は複数の共有キャッシュユニット206にもアクセスする。
【0038】
いくつかの実施形態では、内部キャッシュユニット204A~N及び共有キャッシュユニット206は、プロセッサ200内のキャッシュメモリ階層を表す。キャッシュメモリ階層は、各コア内の少なくとも1つのレベルの命令及びデータキャッシュと、レベル2(L2)、レベル3(L3)、レベル4(L4)、又は他のレベルのキャッシュ等の1つ又は複数のレベルの共有中間レベルキャッシュとを含み得、外部メモリの前の最高レベルのキャッシュは、ラストレベルキャッシュ(LLC)として分類される。いくつかの実施形態では、キャッシュコヒーレンシロジックは、様々なキャッシュユニット106と204A~Nとの間のコヒーレンシを維持する。
【0039】
いくつかの実施形態では、プロセッサ200は、1つ又は複数のバスコントローラユニット216及びシステムエージェント210のセットも含み得る。1つ又は複数のバスコントローラユニットは、1つ又は複数の周辺コンポーネント相互接続バス(例えば、PCI、PCI Express)等の周辺バスのセットを管理する。いくつかの実施形態では、システムエージェント210は、様々なプロセッサコンポーネントに管理機能を提供する。いくつかの実施形態では、システムエージェント210は、様々な外部メモリ装置(図示せず)へのアクセスを管理するための1つ又は複数の統合メモリコントローラ214を含む。
【0040】
いくつかの実施形態では、1つ又は複数のコア202A~Nは、同時マルチスレッディングのサポートを含む。そのような実施形態では、システムエージェント210は、マルチスレッド処理中にコア202A~Nを調整及び動作させるためのコンポーネントを含む。いくつかの実施形態では、システムエージェント210は、電力制御ユニット(PCU)をさらに含むことができ、これは、コア202A~N及びグラフィックプロセッサ208の電力状態を調整するためのロジック及びコンポーネントを含む。
【0041】
いくつかの実施形態では、プロセッサ200は、グラフィック処理操作を実行するためのグラフィックプロセッサ208をさらに含む。いくつかの実施形態では、グラフィックプロセッサ208は、共有キャッシュユニット206のセット、及び1つ又は複数の統合メモリコントローラ214を含むシステムエージェントユニット210と結合する。いくつかの実施形態では、ディスプレイコントローラ211は、グラフィックプロセッサ208と結合して、グラフィックプロセッサ出力を1つ又は複数の結合されたディスプレイに駆動する。いくつかの実施形態では、ディスプレイコントローラ211は、少なくとも1つの相互接続を介してグラフィックプロセッサと結合された別個のモジュールであり得るか、又はグラフィックプロセッサ208又はシステムエージェント210内に統合され得る。
【0042】
いくつかの実施形態では、リングベースの相互接続ユニット212が、プロセッサ200の内部コンポーネントを結合するために使用されるが、当技術分野でよく知られている技術を含む、ポイントツーポイント相互接続、スイッチド相互接続、又は他の技術等の代替の相互接続ユニットを使用することができる。いくつかの実施形態では、グラフィックプロセッサ208は、I/Oリンク213を介してリング相互接続212と結合する。
【0043】
例示的なI/Oリンク213は、様々なプロセッサコンポーネントと、eDRAMモジュール等の高性能埋込みメモリモジュール218との間の通信を容易にするオンパッケージI/O相互接続を含む、複数の種類のI/O相互接続のうちの少なくとも1つを表す。いくつかの実施形態では、各コア202~N及びグラフィックプロセッサ208は、埋込みメモリモジュール218を共有されたラストレベルキャッシュとして使用する。
【0044】
いくつかの実施形態では、コア202A~Nは、同じ命令セットアーキテクチャを実行するホモジニアス・コアである。別の実施形態では、コア202A~Nは、命令セットアーキテクチャ(ISA)に関してヘテロジニアスであり、コア202A~Nの1つ又は複数が第1の命令セットを実行する一方、他のコアのうちの少なくとも1つが第1の命令セット又は異なる命令セットのサブセットを実行する。
【0045】
いくつかの実施形態では、プロセッサ200は、いくつかのプロセス技術のいずれか、例えば、相補型金属酸化物半導体(CMOS)、バイポーラ接合/相補型金属酸化物半導体(BiCMOS)、又はN型金属酸化物半導体ロジック(NMOS)を使用した、1つ又は複数の基板の一部であるか、又はその基板上に実装され得る。さらに、プロセッサ200は、1つ又は複数のチップ上に、或いは他のコンポーネントに加えて、図示のコンポーネントを有するシステムオンチップ(SoC)集積回路として実装することができる。
【0046】
図3は、ディスクリート・グラフィック処理装置であり得るか、又は複数の処理コアと統合されたグラフィックプロセッサであり得る、グラフィックプロセッサ300の一実施形態のブロック図を示している。他の図の要素と同じ参照符号(又は名前)を有する図3のこれらの要素が、説明するものと同様の方法で動作又は機能することができるが、そのように限定されないことを指摘しておく。
【0047】
いくつかの実施形態では、グラフィックプロセッサは、メモリマップドI/Oインターフェースを介してグラフィックプロセッサ上のレジスタと通信され、プロセッサメモリに配置されたコマンドを介して通信される。いくつかの実施形態では、グラフィックプロセッサ300は、メモリにアクセスするためのメモリインターフェース314を含む。いくつかの実施形態では、メモリインターフェース314は、ローカルメモリ、1つ又は複数の内部キャッシュ、1つ又は複数の共有外部キャッシュ、及び/又はシステムメモリへのインターフェースであり得る。
【0048】
いくつかの実施形態では、グラフィックプロセッサ300はまた、ディスプレイ出力データをディスプレイ装置320に駆動するためのディスプレイコントローラ302を含む。いくつかの実施形態では、ディスプレイコントローラ302は、ビデオ又はユーザインターフェース要素の複数の層の表示及び構成のための1つ又は複数のオーバーレイ平面に関するハードウェアを含む。いくつかの実施形態では、グラフィックプロセッサ300は、MEPG-2等のMEPG(Moving Picture Experts Group)フォーマット、H.264/MPEG-4 AVC等のAVC(Advanced Video Coding)フォーマット、SMPTE(Society of Motion Picture & Television Engineers)421M/VC-1、JPEG等のJPEG(Joint Photographic Experts Group)フォーマット、MJPEG(Motion JPEG)フォーマット等を含むがこれらに限定されない、1つ又は複数のメディア復号化フォーマットへ、から、又はその間でメディアを符号化、復号化、又はトランスコードするビデオコーデックエンジン306を含む。
【0049】
いくつかの実施形態では、グラフィックプロセッサ300は、例えば、ビット境界ブロック転送を含む2次元(2D)ラスタライザ動作を実行するためのブロック画像転送(BLIT)エンジン304を含む。いくつかの実施形態では、2Dグラフィック操作は、グラフィック処理エンジン(GPE)310の1つ又は複数のコンポーネントを使用して実行される。いくつかの実施形態では、GPE310は、3次元(3D)グラフィック操作及びメディア操作等を含むグラフィック操作を実行するための計算エンジンである。
【0050】
いくつかの実施形態では、GPE310は、3Dプリミティブ形状(例えば、長方形、三角形等)に作用する処理関数を使用して3次元画像及びシーンをレンダリングする等の3D操作を実行するための3Dパイプライン312を含む。いくつかの実施形態では、3Dパイプライン312は、要素内で様々なタスクを実行する、及び/又は実行スレッドを3D/メディアサブシステム315にスポーン(spawn:生成)するプログラム可能で固定された関数要素を含む。3Dパイプライン312がメディア操作を実行するために使用され得るが、GPE310の実施形態は、ビデオ後処理及び画像強調等のメディア操作を実行するために特に使用されるメディアパイプライン316も含む。
【0051】
いくつかの実施形態では、メディアパイプライン316は、ビデオコーデックエンジン306の代わりに、又はその代理として、ビデオ復号化加速、ビデオインターレース解除、及びビデオ符号化加速等の1つ又は複数の特殊なメディア操作を実行するための固定関数又はプログラム可能な論理ユニットを含む。いくつかの実施形態では、メディアパイプライン316は、3D/メディアサブシステム315で実行するためにスレッドをスポーンするためのスレッドスポーンユニットをさらに含む。スポーンされたスレッドは、3D/メディアサブシステム315に含まれる1つ又は複数のグラフィック実行ユニットでメディア操作の計算を実行する。
【0052】
いくつかの実施形態では、3D/メディアサブシステム315は、3Dパイプライン312及びメディアパイプライン316によって生成されたスレッドを実行するためのロジックを含む。いくつかの実施形態では、パイプラインは、スレッド実行要求を3D/メディアサブシステム315に送信し、この要求には、様々な要求を調停し、使用可能なスレッド実行リソースにディスパッチするスレッドディスパッチロジックが含まれる。実行リソースには、3Dスレッド及びメディアスレッドを処理するためのグラフィック実行ユニットのアレイが含まれる。いくつかの実施形態では、3D/メディアサブシステム315は、スレッド命令及びデータのための1つ又は複数の内部キャッシュを含む。いくつかの実施形態では、サブシステムは、スレッド同士の間でデータを共有し、出力データを格納するために、レジスタ及びアドレス指定可能メモリを含む共有メモリも含む。
【0053】
図4は、グラフィックプロセッサのためのGPE510の実施形態のブロック図を示している。他の図の要素と同じ参照符号(又は名前)を有する図4のそれら要素は、説明するものと同様の方法で動作又は機能することができるが、そのように限定されないことを指摘しておく。
【0054】
いくつかの実施形態では、GPE510は、図3に関して説明したGPE310のバージョンである。図4に戻ると、いくつかの実施形態では、GPE410は、3Dパイプライン412及びメディアパイプライン416を含み、これらはそれぞれ、図3の3Dパイプライン312及びメディアパイプライン316の実施態様とは異なるか、又はこれに類似し得る。
【0055】
図4に戻ると、いくつかの実施形態では、GPE510は、コマンドストリームをGPE 3D及びメディアパイプライン412、416に提供するコマンドストリーマ403と結合する。いくつかの実施形態では、コマンドストリーマ403は、メモリに結合され、これは、システムメモリ、或いは1つ又は複数の内部キャッシュメモリ及び共有キャッシュメモリであり得る。いくつかの実施形態では、コマンドストリーマ403は、メモリからコマンドを受信し、コマンドを3Dパイプライン412及び/又はメディアパイプライン416に送信する。3Dパイプライン及びメディアパイプラインは、それぞれのパイプライン内のロジックを介して操作を実行することによって、或いは1つ又は複数の実行スレッドを実行ユニットアレイ414にディスパッチすることによってコマンドを処理する。いくつかの実施形態では、実行ユニットアレイ414はスケーラブルであり、それによって、アレイは、GPE410の目標の電力及びパフォーマンスレベルに基づいて可変数の実行ユニットを含む。
【0056】
いくつかの実施形態では、サンプリングエンジン430は、メモリ(例えば、キャッシュメモリ又はシステムメモリ)及び実行ユニットアレイ414と結合する。いくつかの実施形態では、サンプリングエンジン430は、実行アレイ414がメモリからグラフィック及びメディアデータを読み取るのを可能にするスケーラブルな実行ユニットアレイ414のためのメモリアクセスメカニズムを提供する。いくつかの実施形態では、サンプリングエンジン430は、メディアに対して特殊な画像サンプリング操作を実行するためのロジックを含む。
【0057】
いくつかの実施形態では、サンプリングエンジン430における特殊なメディアサンプリングロジックは、ノイズ除去/インターレース解除モジュール432、動き推定モジュール434、及び画像スケーリング及びフィルタリングモジュール436を含む。いくつかの実施形態では、ノイズ除去/インターレース解除モジュール432は、復号化したビデオデータに対して1つ又は複数のノイズ除去又はインターレース解除アルゴリズムを実行するためのロジックを含む。インターレース解除ロジックは、インターレースされたビデオコンテンツの交互のフィールドを単一のビデオフレームに結合する。ノイズ除去ロジックは、ビデオ及び画像データからデータノイズを低減又は除去する。いくつかの実施形態では、ノイズ除去ロジック及びインターレース解除ロジックは、動きに適応し、ビデオデータで検出した動きの量に基づいて空間的又は時間的なフィルタリングを使用する。いくつかの実施形態では、ノイズ除去/インターレース解除モジュール432は、(例えば、動き推定エンジン434内の)専用の動き検出ロジックを含む。
【0058】
いくつかの実施形態では、動き推定エンジン434は、ビデオデータに対して動きベクトル推定及び予測等のビデオ加速機能を実行することによって、ビデオ操作のためのハードウェア加速を提供する。動き推定エンジンは、連続するビデオフレームの間の画像データの変換を表す動きベクトルを決定する。いくつかの実施形態では、グラフィックプロセッサメディアコーデックは、ビデオ動き推定エンジン434を使用して、マクロブロックレベルでビデオに対して操作を実行し、そうでなければ、そのレベルは、汎用プロセッサを使用して実行するために計算集約的であり得る。いくつかの実施形態では、動き推定エンジン434は、一般に、ビデオデータ内の動きの方向又は大きさに敏感又は適応するビデオ復号化及び処理機能を支援するために、グラフィックプロセッサコンポーネントに利用可能である。
【0059】
いくつかの実施形態では、画像スケーリング及びフィルタリングモジュール436は、画像処理操作を実行して、生成した画像及びビデオの視覚的品質を向上させる。いくつかの実施形態では、スケーリング及びフィルタリングモジュール436は、データを実行ユニットアレイ414に供給する前に、サンプリング動作中に画像及びビデオデータを処理する。
【0060】
いくつかの実施形態では、GPE510は、グラフィックサブシステムがメモリにアクセスするための追加のメカニズムを提供するデータポート444を含む。いくつかの実施形態では、データポート444は、レンダリングターゲット書き込み、一定のバッファ読み取り、スクラッチメモリ空間の読み取り/書き込み、及びメディア表面アクセスを含む操作のためのメモリアクセスを容易にする。いくつかの実施形態では、データポート444は、メモリへのアクセスをキャッシュするためのキャッシュメモリ空間を含む。キャッシュメモリは、単一のデータキャッシュにすることも、データポートを介してメモリにアクセスする複数のサブシステムのために複数のキャッシュ(例えば、レンダリングバッファキャッシュ、コンスタントバッファキャッシュ等)に分割することもできる。いくつかの実施形態では、実行ユニットアレイ414内の実行ユニット上で実行されるスレッドは、GPE410の各サブシステムを結合するデータ配信相互接続を介してメッセージを交換することによってデータポートと通信する。
【0061】
図5は、実行ユニットに関連するグラフィックプロセッサの別の実施形態のブロック図500を示している。他の図の要素と同じ参照符号(又は名前)を有する図5のそれら要素は、説明するものと同様の方法で動作又は機能することができるが、そのように限定されないことを指摘しておく。
【0062】
いくつかの実施形態では、グラフィックプロセッサは、リング相互接続502、パイプラインフロントエンド504、メディアエンジン537、及びグラフィックコア580A~Nを含む。いくつかの実施形態では、リング相互接続502は、グラフィックプロセッサを、他のグラフィックプロセッサ又は1つ又は複数の汎用プロセッサコアを含む他の処理ユニットに結合する。いくつかの実施形態では、グラフィックプロセッサは、マルチコア処理システム内に統合された多くのプロセッサのうちの1つである。
【0063】
いくつかの実施形態では、グラフィックプロセッサは、リング相互接続502を介してコマンドのバッチを受信する。着信コマンドは、パイプラインフロントエンド504内のコマンドストリーマ503によって解釈される。グラフィックプロセッサは、グラフィックコア580A~Nを介して3Dジオメトリ処理及びメディア処理を実行するためのスケーラブルな実行ロジックを含む。3Dジオメトリ処理コマンドの場合に、コマンドストリーマ503は、コマンドをジオメトリパイプライン536に供給する。少なくともいくつかのメディア処理コマンドの場合に、コマンドストリーマ503は、メディアエンジン537と結合するビデオフロントエンド534にコマンドを供給する。いくつかの実施形態では、メディアエンジン537は、ビデオ及び画像の後処理のためのビデオ品質エンジン(VQE)530と、ハードウェアで高速化されたメディアデータの符号化及び復号化を提供するマルチフォーマット符号化/復号化(MFX)533エンジンとを含む。いくつかの実施形態では、ジオメトリパイプライン536及びメディアエンジン537はそれぞれ、少なくとも1つのグラフィックコア580Aによって提供されるスレッド実行リソースのための実行スレッドを生成する。
【0064】
グラフィックプロセッサは、モジュラーコア580A~N(コアスライスと呼ばれることもある)を特徴とするスケーラブルなスレッド実行リソースを含み、各コアが複数のサブコア550A~N、560A~N(コアサブスライスと呼ばれることもある)を有する。グラフィックプロセッサは、任意の数のグラフィックコア580A~580Nを有することができる。いくつかの実施形態では、グラフィックプロセッサは、少なくとも、第1のサブコア550A及び第2のコアサブコア560Aを有するグラフィックコア580Aを含む。別の実施形態では、グラフィックプロセッサは、単一のサブコア(例えば、550A)を含む低電力プロセッサである。いくつかの実施形態では、グラフィックプロセッサは、複数のグラフィックコア580A~Nを含み、各コアが、第1のサブコア550A~Nのセットと、第2のサブコア560A~Nのセットとを含む。第1のサブコア550A~Nのセット内の各サブコアは、少なくとも、実行ユニット552A~N及びメディア/テクスチャサンプラー554A~Nの第1のセットを含む。第2のサブコア560A~Nのセット内の各サブコアは、少なくとも、実行ユニット562A~N及びサンプラー564A~Nの第2のセットを含む。いくつかの実施形態では、各サブコア550A~N、560A~Nは、共有リソース570A~Nのセットを共有する。いくつかの実施形態では、共有リソースは、共有キャッシュメモリ及びピクセル操作ロジックを含む。他の共有リソースもまた、グラフィックプロセッサの様々な実施形態に含まれ得る。
【0065】
図6は、グラフィック処理エンジンの一実施形態で使用される処理要素のアレイを含むスレッド実行ロジック600を示している。他の図の要素と同じ参照符号(又は名前)を有する図6のそれら要素は、説明するものと同様の方法で動作又は機能することができるが、そのように限定されないことを指摘しておく。
【0066】
いくつかの実施形態では、スレッド実行ロジック600は、ピクセルシェーダー602、スレッドディスパッチャ604、命令キャッシュ606、複数の実行ユニット608A~Nを含むスケーラブルな実行ユニットアレイ、サンプラー610、データキャッシュ612、及びデータポート614を含む。いくつかの実施形態では、含まれるコンポーネントは、各コンポーネントにリンクする相互接続ファブリックを介して相互接続される。いくつかの実施形態では、スレッド実行ロジック600は、命令キャッシュ606、データポート614、サンプラー610、及び実行ユニットアレイ608A~Nのうちの1つ又は複数を介した、システムメモリ又はキャッシュメモリ等のメモリへの1つ又は複数の接続を含む。いくつかの実施形態では、各実行ユニット(例えば、608A)は、複数の同時スレッドを実行し、複数のデータ要素をスレッド毎に並列に処理することができる個々のベクトルプロセッサである。いくつかの実施形態では、実行ユニットアレイ608A~Nは、任意の数の個々の実行ユニットを含む。
【0067】
いくつかの実施形態では、実行ユニットアレイ608A~Nは、主に「シェーダー(shader)」プログラムを実行するために使用される。いくつかの実施形態では、アレイ608A~Nの実行ユニットは、グラフィックライブラリ(例えば、Direct3D及びOpenGL)からのシェーダープログラムが最小限の変換で実行されるように、多くの標準3Dグラフィックシェーダー命令のネイティブサポートを含む命令セットを実行する。実行ユニットは、頂点及びジオメトリ処理(例えば、頂点プログラム、ジオメトリプログラム、頂点シェーダー)、ピクセル処理(例えば、ピクセルシェーダー、フラグメントシェーダー)、及び汎用処理(例えば、計算シェーダー、メディアシェーダー)をサポートする。
【0068】
実行ユニットアレイ608A~Nの各実行ユニットは、データ要素のアレイ上で動作する。データ要素の数は、「実行サイズ」、つまり命令のためのチャネル数である。実行チャネルは、命令内のデータ要素のアクセス、マスキング、及びフロー制御のための論理的な実行単位である。チャネルの数は、特定のグラフィックプロセッサの物理演算論理ユニット(ALU)又は浮動小数点ユニット(FPU)の数とは無関係である。いくつかの実施形態では、実行ユニット608A~Nは、整数及び浮動小数点データ型をサポートする。
【0069】
実行ユニット命令セットは、単一命令複数データ(SIMD)命令を含む。様々なデータ要素をパックされたデータ型としてレジスタに格納することができ、実行ユニットは、要素のデータサイズに基づいて様々な要素を処理する。例えば、256ビット幅のベクトルを操作する場合に、ベクトルの256ビットはレジスタに格納され、実行ユニットは、4個の個別の64ビットパック化データ要素(クアッドワード(QW)サイズのデータ要素)、8個の個別の32ビットパック化データ要素(ダブルワード(DW)サイズのデータ要素)、16個の個別の16ビットパック化データ要素(ワード(W)サイズのデータ要素)、又は32個の個別の8ビットデータ要素(バイト(B)サイズのデータ要素)としてベクトルを操作する。ただし、異なるベクトル幅及びレジスタサイズが可能である。
【0070】
1つ又は複数の内部命令キャッシュ(例えば、606)が、実行ユニットのスレッド命令をキャッシュするために、スレッド実行ロジック600に含まれる。いくつかの実施形態では、1つ又は複数のデータキャッシュ(例えば、612)が、スレッド実行中にスレッドデータをキャッシュするために含まれる。いくつかの実施形態では、サンプラー610は、3D操作のためのテクスチャサンプリング及びメディア操作のためのメディアサンプリングを提供するために含まれる。いくつかの実施形態では、サンプラー610は、サンプリングしたデータを実行ユニットに提供する前に、サンプリングプロセス中にテクスチャ又はメディアデータを処理するための特殊なテクスチャ又はメディアサンプリング機能を含む。
【0071】
実行中に、グラフィック及びメディアパイプラインは、スレッドスポーン及びディスパッチロジックを介してスレッド開始要求をスレッド実行ロジック600に送信する。いくつかの実施形態では、スレッド実行ロジック600は、グラフィック及びメディアパイプラインからのスレッド開始要求を調停し、1つ又は複数の実行ユニット608A~Nで要求されたスレッドをインスタンス化するローカルスレッドディスパッチャ604を含む。例えば、ジオメトリパイプライン(例えば、図5の536)は、頂点処理、テッセレーション(tessellation)、又はジオメトリ処理スレッドをスレッド実行ロジック600にディスパッチする。図6に戻ると、いくつかの実施形態では、スレッドディスパッチャ604は、実行中のシェーダープログラムからリクエストを生成するランタイムスレッドも処理することができる。
【0072】
幾何学的オブジェクトのグループが処理され、ピクセルデータにラスタライズされると、ピクセルシェーダー602が呼び出されて、出力情報をさらに計算し、結果を出力面(例えば、カラーバッファ、深度バッファ、ステンシルバッファ等)に書き込む。いくつかの実施形態では、ピクセルシェーダー602は、ラスタライズされたオブジェクト全体に亘って補間される様々な頂点属性の値を計算する。いくつかの実施形態では、ピクセルシェーダー602は、次に、API提供のピクセルシェーダープログラムを実行する。ピクセルシェーダープログラムを実行するために、ピクセルシェーダー602は、スレッドディスパッチャ604を介して実行ユニット(例えば、608A)にスレッドをディスパッチする。いくつかの実施形態では、ピクセルシェーダー602は、サンプラー610内のテクスチャサンプリングロジックを使用して、メモリに格納されたテクスチャマップ内のテクスチャデータにアクセスする。テクスチャデータ及び入力ジオメトリデータに対する算術演算は、ピクセルカラーデータをジオメトリフラグメント毎に計算するか、或いは1つ又は複数のピクセルを以降の処理から破棄する。
【0073】
いくつかの実施形態では、データポート614は、スレッド実行ロジック600がグラフィックプロセッサ出力パイプラインで処理するために処理したデータをメモリに出力するためのメモリアクセスメカニズムを提供する。いくつかの実施形態では、データポート614は、データポートを介したメモリアクセスのためにデータをキャッシュするべく、1つ又は複数のキャッシュメモリ(例えば、データキャッシュ612)を含むか、又はそれらメモリに結合する。
【0074】
図7は、本開示のいくつかの実施形態による、グラフィックプロセッサ実行ユニット命令フォーマット700を示すブロック図を示している。いくつかの実施形態では、グラフィックプロセッサ実行ユニットは、複数のフォーマットの命令を含む命令セットをサポートする。実線のボックスは、実行ユニット命令に一般的に含まれるコンポーネントを示す一方、破線は、オプションであるか、命令のサブセットにのみ含まれるコンポーネントを含む。図示のように説明する命令フォーマット700は、命令が処理された後の命令復号化から生じるマイクロ操作とは対照的に、実行ユニットに供給される命令であるという点でマクロ命令である。
【0075】
いくつかの実施形態では、グラフィックプロセッサ実行ユニットは、128ビットフォーマット710の命令をネイティブにサポートする。64ビットの圧縮(compacted)命令フォーマット730は、選択した命令、命令オプション、及びオペランドの数に基づくいくつかの命令に利用可能である。ネイティブ128ビットフォーマット710は、全ての命令オプションへのアクセスを提供するが、一部のオプション及び操作は、64ビットフォーマット730に制限される。64ビットフォーマット730で利用可能なネイティブ命令は、実施形態によって異なる。いくつかの実施形態では、命令は、インデックスフィールド713内のインデックス値のセットを使用して部分的に圧縮される。実行ユニットハードウェアは、インデックス値に基づいて圧縮テーブルのセットを参照し、圧縮テーブル出力を使用して、ネイティブ命令を128ビットフォーマット710に再構成する。
【0076】
各フォーマットについて、命令オペコード712は、実行ユニットが実行する操作を規定する。実行ユニットは、各オペランドの複数のデータ要素に亘って各命令を並列に実行する。例えば、追加命令に応答して、実行ユニットは、テクスチャ要素又はピクチャ要素を表す各カラーチャネルに亘って追加操作を同時に実行する。デフォルトでは、実行ユニットは、オペランドの全てのデータチャネルに亘って各命令を実行する。いくつかの実施形態では、命令制御フィールド712は、チャネル選択(例えば、条件付き実行制御(predication))及びデータチャネル順序(例えば、スウィズル(swizzle))等の特定の実行オプションの制御を可能にする。128ビット命令710の場合に、実行サイズフィールド716は、並列に実行されるデータチャネルの数を制限する。いくつかの実施形態では、実行サイズフィールド716は、64ビット圧縮命令フォーマット730で使用するために利用可能ではない。
【0077】
いくつかの実行ユニット命令は、2つのソース(src)オペランド、src0 722、src1 722、及び1つの宛先718を含む最大3つのオペランドを有する。いくつかの実施形態では、実行ユニットは、宛先の1つが暗示される二重宛先命令をサポートする。データ操作命令は、第3のソースオペランド(例えば、SRC2 724)を有することができ、この場合に、命令オペコードJJ12がソースオペランドの数を決定する。命令の最後のソースオペランドは、命令とともに渡される即時(ハードコード化された等)の値にすることができる。
【0078】
いくつかの実施形態では、命令は、オペコード復号化740を単純化するために、オペコードビットフィールドに基づいてグループ化される。8ビットオペコードの場合に、ビット4、5、及び6は、実行ユニットがオペコードのタイプを決定するのを可能にする。示されている正確なオペコードのグループ化は単なる例である。いくつかの実施形態では、移動及びロジックオペコードグループ742は、データ移動及びロジック命令(例えば、移動(mov)、比較(cmp))を含む。いくつかの実施形態では、移動及びロジックグループ742は、5つの最上位ビット(MSB)を共有し、ここで、移動(mov)命令は、000000xxxxb(例えば、0x0x)の形式であり、ロジック命令は、0001xxxxb(例えば、0x01)の形式である。フロー制御命令グループ744(例えば、呼出し、ジャンプ(jmp)等)は、0010xxxxb(例えば、0x20)の形式の命令を含む。雑多な命令グループ746は、0111xxxxb(例えば、0x30)の形式の同期命令(例えば、待機、送信)を含む、命令の混合を含む。並列数学命令グループ748は、0100xxxxb(例えば、0x40)の形式で、コンポーネント毎の算術命令(例えば、加算、乗算(mul))を含む。並列数学グループ748は、データチャネルに亘って算術演算を並列に実行する。ベクトル数学グループ750は、0101xxxxb(例えば、0x50)の形式の算術命令(例えば、dp4)を含む。ベクトル数学グループは、ベクトルオペランドの内積計算等の算術演算を行う。
【0079】
図8は、グラフィックパイプライン820、メディアパイプライン830、ディスプレイエンジン840、スレッド実行ロジック850、及びレンダリング出力パイプライン870を含むグラフィックプロセッサの別の実施形態のブロック図800である。他の図の要素と同じ参照符号(又は名前)を有する図8のそれら要素は、説明するものと同様の方法で動作又は機能することができるが、そのように限定されないことを指摘しておく。
【0080】
いくつかの実施形態では、グラフィックプロセッサは、1つ又は複数の汎用処理コアを含むマルチコア処理システム内のグラフィックプロセッサである。グラフィックプロセッサは、1つ又は複数の制御レジスタ(図示せず)へのレジスタ書込みによって、又はリング相互接続802を介してグラフィックプロセッサに発せられるコマンドを介して制御される。いくつかの実施形態では、リング相互接続802は、グラフィックプロセッサを、他のグラフィックプロセッサ又は汎用プロセッサ等の他の処理コンポーネントに結合する。リング相互接続802からのコマンドは、グラフィックパイプライン820又はメディアパイプライン830の個々のコンポーネントに命令を供給するコマンドストリーマ803によって解釈される。
【0081】
いくつかの実施形態では、コマンドストリーマ803は、メモリから頂点データを読み取り、コマンドストリーマ803によって提供される頂点処理コマンドを実行する頂点フェッチャー(fetcher)805コンポーネントの動作を指示する。いくつかの実施形態では、頂点フェッチャー805は、頂点データを頂点シェーダー807に提供し、頂点シェーダー807は、各頂点に対して座標空間変換及び照明操作を実行する。いくつかの実施形態では、頂点フェッチャー805及び頂点シェーダー807は、スレッドディスパッチャ831を介して実行ユニット852A、852Bに実行スレッドをディスパッチすることによって頂点処理命令を実行する。
【0082】
いくつかの実施形態では、実行ユニット852A、852Bは、グラフィック及びメディア操作を実行するための命令セットを有するベクトルプロセッサのアレイである。いくつかの実施形態では、実行ユニット852A、852Bは、各アレイに固有であるか、又はアレイ同士の間で共有される、付属のL1キャッシュ851を有する。キャッシュは、データキャッシュ、命令キャッシュ、又はデータ及び命令を異なるパーティションに含めるためにパーティション化された単一のキャッシュとして構成することができる。
【0083】
いくつかの実施形態では、グラフィックパイプライン820は、3Dオブジェクトのハードウェア・アクセラレーション・テッセレーションを実行するためのテッセレーションコンポーネントを含む。プログラム可能なハル(hull)シェーダー811は、テッセレーション操作を構成する。プログラム可能なドメインシェーダー817は、テッセレーション出力のバックエンド評価を提供する。テッセレータ813は、ハルシェーダー811の方向で動作し、グラフィックパイプライン820への入力として提供される粗い幾何学的モデルに基づいて詳細な幾何学的オブジェクトのセットを生成するための特別な目的のロジックを含む。いくつかの実施形態では、テッセレーションが使用されない場合に、テッセレーションコンポーネント811、813、及び817をバイパスすることができる。
【0084】
いくつかの実施形態では、完全な幾何学的オブジェクトは、実行ユニット852A、852Bにディスパッチされた1つ又は複数のスレッドを介してジオメトリシェーダー819によって処理され得るか、又はクリッパー829に直接進むことができる。いくつかの実施形態では、ジオメトリシェーダー819は、グラフィックパイプラインの以前の段階のように頂点又は頂点のパッチではなく、幾何学的オブジェクト全体に対して動作する。テッセレーションが無効になっている場合に、ジオメトリシェーダー819は、頂点シェーダー807から入力を受け取る。いくつかの実施形態では、ジオメトリシェーダー819は、テッセレーションユニットが無効になっている場合にジオメトリテッセレーションを実行するようにジオメトリシェーダープログラムによってプログラム可能である。
【0085】
ラスタライズの前に、頂点データは、固定機能クリッパー、又はクリッピング及びジオメトリシェーダー機能を有するプログラム可能なクリッパーのいずれかであるクリッパー829によって処理される。いくつかの実施形態では、レンダリング出力パイプライン870のラスタライザ873は、ピクセルシェーダーをディスパッチして、幾何学的オブジェクトをそれらのピクセル毎の表現に変換する。いくつかの実施形態では、ピクセルシェーダーロジックは、スレッド実行ロジック850に含まれる。
【0086】
グラフィックエンジンは、相互接続バス、相互接続ファブリック、又はグラフィックエンジンの主要コンポーネントの間でデータ及びメッセージを通過させるのを可能にする他のいくつかの相互接続メカニズムを有する。いくつかの実施形態では、実行ユニット852A、852B及び関連するキャッシュ851、テクスチャ及びメディアサンプラー854、並びにテクスチャ/サンプラーキャッシュ858は、データポート856を介して相互接続され、メモリアクセスを実行し、グラフィックエンジンのレンダリング出力パイプラインコンポーネントと通信する。いくつかの実施形態では、サンプラー854、キャッシュ851、858、及び実行ユニット852A、852Bはそれぞれ、別個のメモリアクセスパスを有する。
【0087】
いくつかの実施形態では、レンダリング出力パイプライン870は、頂点ベースのオブジェクトをそれらの関連するピクセルベースの表現に変換するラスタライザ及び深度テストコンポーネント873を含む。いくつかの実施形態では、ラスタライザロジックは、固定関数の三角形及び線のラスタライズを実行するためのウィンドウャ(windower)/マスカー(masker)ユニットを含む。一実施形態では、関連するレンダリング及び深度バッファキャッシュ878、879も利用可能である。いくつかの実施形態では、ピクセル操作コンポーネント877は、データに対してピクセルベースの操作を実行するが、場合によっては、2D操作に関連するピクセル操作(例えば、ブレンディングを伴うビットブロック画像転送)は、2Dエンジン841によって実行されるか、又はオーバーレイ表示面を使用するディスプレイコントローラ843によって表示時に置換される。いくつかの実施形態では、共有L3キャッシュ875は、全てのグラフィックコンポーネントに利用可能であり、これは、メインシステムメモリを使用せずにデータの共有を可能にする。
【0088】
いくつかの実施形態では、グラフィックプロセッサメディアパイプライン830は、メディアエンジン837及びビデオフロントエンド834を含む。いくつかの実施形態では、ビデオフロントエンド834は、コマンドストリーマ803からパイプラインコマンドを受信する。いくつかの実施形態では、メディアパイプライン830は、別個のコマンドストリーマを含む。いくつかの実施形態では、ビデオフロントエンド834は、コマンドをメディアエンジン837に送信する前にメディアコマンドを処理する。いくつかの実施形態では、メディアエンジンは、スレッドディスパッチャ831を介してスレッド実行ロジック850にディスパッチするためにスレッドをスポーンするスレッドスポーン機能を含む。
【0089】
いくつかの実施形態では、グラフィックエンジンは、ディスプレイエンジン840を含む。いくつかの実施形態では、ディスプレイエンジン840は、グラフィックプロセッサの外部にあり、リング相互接続802、又は他のいくつかの相互接続バス又はファブリックを介してグラフィックプロセッサと結合する。いくつかの実施形態では、ディスプレイエンジン840は、2Dエンジン841及びディスプレイコントローラ843を含む。いくつかの実施形態では、ディスプレイエンジン840は、3Dパイプラインとは独立して動作することができる特別な目的のロジックを含む。いくつかの実施形態では、ディスプレイコントローラ843は、ラップトップコンピュータのようなシステム統合ディスプレイ装置、又はディスプレイ装置コネクタを介して取り付けられた外部ディスプレイ装置であり得るディスプレイ装置(図示せず)と結合する。
【0090】
いくつかの実施形態では、グラフィックパイプライン820及びメディアパイプライン830は、複数のグラフィック及びメディアプログラミングインターフェースに基づいて動作を実行するように構成可能であり、任意の1つのアプリケーションプログラミングインターフェース(API)に固有ではない。いくつかの実施形態では、グラフィックプロセッサのためのドライバソフトウェアは、特定のグラフィック又はメディアライブラリに固有のAPI呼出しを、グラフィックプロセッサによって処理できるコマンドに変換する。様々な実施形態において、KhronosグループによってサポートされるOpenGL(Open Graphic Library)及びOpenCL(Open Computing Language)、Microsoft社のDirect3Dライブラリ、又は一実施形態では、OpenGLとD3Dとの両方に対してサポートが提供される。OpenCV(Open Source Computer Vision Library)のサポートも提供される場合がある。将来のAPIのパイプラインからグラフィックプロセッサのパイプラインへのマッピングを作成できる場合に、互換性のある3Dパイプラインを備えた将来のAPIもサポートされる。
【0091】
図9Aは、いくつかの実施形態によるグラフィックプロセッサのコマンドフォーマット900を示すブロック図を示しており、図9Bは、本開示のいくつかの実施形態によるグラフィックプロセッサのコマンドシーケンス910のブロック図を示している。他の図の要素と同じ参照符号(又は名前)を有する図9A図9Bのそれら要素は、説明するものと同様の方法で動作又は機能することができるが、そのように限定されないことを指摘しておく。
【0092】
図9Aの実線のボックスは、グラフィックコマンドに一般的に含まれるコンポーネントを示す一方、破線は、オプションであるか、又はグラフィックコマンドのサブセットにのみ含まれるコンポーネントを含む。図9Aの例示的なグラフィックプロセッサのコマンドフォーマット900は、コマンドのターゲットクライアント902、コマンド操作コード(オペコード)904、及びコマンドに関連するデータ906を識別するためのデータフィールドを含む。いくつかの実施形態では、サブオペコード905及びコマンドサイズ908も、いくつかのコマンドに含まれる。
【0093】
いくつかの実施形態では、クライアント902は、コマンドデータを処理するグラフィック装置のクライアントユニットを指定する。いくつかの実施形態では、グラフィックプロセッサのコマンドパーサーは、各コマンドのクライアントフィールドを調べて、コマンドの更なる処理を条件付けして、コマンドデータを適切なクライアントユニットにルーティングする。いくつかの実施形態では、グラフィックプロセッサのクライアントユニットは、メモリインターフェースユニット、レンダリングユニット、2Dユニット、3Dユニット、及びメディアユニットを含む。各クライアントユニットには、コマンドを処理する対応する処理パイプラインがある。コマンドがクライアントユニットによって受信されると、クライアントユニットは、オペコード904を読み取り、存在する場合にサブオペコード905を読み取って、実行すべき操作を決定する。クライアントユニットは、コマンドのデータ906フィールドの情報を使用してコマンドを実行する。一部のコマンドでは、明示的なコマンドサイズ908によって、コマンドのサイズを指定することが期待される。いくつかの実施形態では、コマンドパーサーは、コマンドオペコードに基づいて、少なくともいくつかのコマンドのサイズを自動的に決定する。いくつかの実施形態では、コマンドは、ダブルワードの倍数を介して整列される。
【0094】
いくつかの実施形態では、図9Bのフローチャートは、サンプルコマンドシーケンス910を示している。フローチャート910のブロックが特定の順序で示されているが、動作の順序は変更することができる。こうして、図示した実施形態は、異なる順序で実行することができ、いくつかのアクション/ブロックを並行して実行することができる。リスト化されたブロック及び/又は操作のいくつかは、特定の実施形態によればオプションである。提示されたブロックの番号は、明確にするためのものであり、様々なブロックが発生しなければならない操作の順序を規定することを意図したものではない。さらに、様々なフローからの操作を様々な組合せで利用することができる。
【0095】
いくつかの実施形態では、グラフィックプロセッサの実施形態を特徴付けるデータ処理システムのソフトウェア又はファームウェアは、グラフィック操作のセットを設定、実行、及び終了するために示されるコマンドシーケンスのバージョンを使用する。例示の目的でサンプルコマンドシーケンスを示し、説明しているが、実施形態は、これらのコマンド又はこのコマンドシーケンスに限定されない。さらに、コマンドは、グラフィックプロセッサが少なくとも部分的に同時の方法でコマンドのシーケンスを処理するように、コマンドシーケンス内のコマンドのバッチとして発せられ得る。
【0096】
いくつかの実施形態では、サンプルコマンドシーケンス910は、パイプラインフラッシュコマンド912で開始して、任意のアクティブなグラフィックパイプラインに、パイプラインに対して現在保留中のコマンドを完了させることができる。いくつかの実施形態では、3Dパイプライン922及びメディアパイプライン924は同時に動作しない。パイプラインフラッシュが実行され、アクティブなグラフィックパイプラインに、保留中のコマンドを完了させる。いくつかの実施形態では、パイプラインフラッシュに応答して、グラフィックプロセッサのコマンドパーサーは、アクティブな描画エンジンが保留中の操作を完了し、関連する読取りキャッシュが無効になるまで、コマンド処理を一時停止する。オプションで、「ダーティ(dirty)」とマークされたレンダリングキャッシュ内のデータをメモリにフラッシュすることができる。いくつかの実施形態では、パイプラインフラッシュコマンド912は、パイプライン同期のために、又はグラフィックプロセッサを低電力状態にする前に使用することができる。
【0097】
いくつかの実施形態では、パイプライン選択コマンド913は、コマンドシーケンスがグラフィックプロセッサにパイプラインを明示的に切り替えることを要求するときに使用される。いくつかの実施形態では、パイプライン選択コマンド913は、コンテキストが両方のパイプラインに対してコマンドを発することでない限り、パイプラインコマンドを発する前に実行コンテキスト内で一度だけ必要とされる。いくつかの実施形態では、パイプラインフラッシュコマンド912は、パイプライン選択コマンド913を介したパイプライン切替えの直前に必要とされる。
【0098】
いくつかの実施形態では、パイプライン制御コマンド914は、動作のためにグラフィックパイプラインを構成し、3Dパイプライン922及びメディアパイプライン924をプログラムするために使用される。いくつかの実施形態では、パイプライン制御コマンド914は、アクティブなパイプラインのパイプライン状態を構成する。いくつかの実施形態では、パイプライン制御コマンド914は、パイプライン同期のために使用され、及びコマンドのバッチを処理する前にアクティブなパイプライン内の1つ又は複数のキャッシュメモリからデータをクリアするために使用される。
【0099】
リターンバッファ状態コマンド916は、データを書き込むべく、それぞれのパイプラインに関するリターンバッファのセットを構成するために使用される。一部のパイプライン操作では、処理中に操作によって中間データが書き込まれる1つ又は複数のリターンバッファの割当て、選択、又は構成が必要である。グラフィックプロセッサは、1つ又は複数のリターンバッファを使用して、出力データを格納し、クロススレッド通信も実行する。いくつかの実施形態では、リターンバッファ状態916は、パイプライン操作のセットに使用するために、リターンバッファのサイズ及び数を選択することを含む。
【0100】
コマンドシーケンスの残りのコマンドは、操作に関するアクティブなパイプラインに基づいて異なる。パイプライン決定920に基づいて、コマンドシーケンスは、3Dパイプライン状態930で始まる3Dパイプライン922、又はメディアパイプライン状態940で始まるメディアパイプライン924に合わせて調整される。
【0101】
3Dパイプライン状態930のコマンドは、頂点バッファ状態、頂点要素状態、一定の色状態、深度バッファ状態、及び3Dプリミティブコマンドを処理する前に構成すべき他の状態変数のための3D状態設定コマンドを含む。これらのコマンドの値は、使用中の特定の3D APIに少なくとも部分的に基づいて決定される。いくつかの実施形態では、3Dパイプライン状態930コマンドは、特定のパイプライン要素が使用されない場合に、それらの要素を選択的に無効化又はバイパスすることもできる。
【0102】
いくつかの実施形態では、3Dプリミティブ932コマンドは、3Dパイプラインによって処理すべき3Dプリミティブを提出するために使用される。3Dプリミティブ932コマンドを介してグラフィックプロセッサに渡されるコマンド及び関連するパラメータは、グラフィックパイプラインの頂点フェッチ関数に転送される。頂点フェッチ関数は、3Dプリミティブ932コマンドデータを使用して頂点データ構造を生成する。頂点データ構造は、1つ又は複数のリターンバッファに格納される。いくつかの実施形態では、3Dプリミティブ932コマンドは、頂点シェーダーを介して3Dプリミティブに対して頂点操作を実行するために使用される。頂点シェーダーを処理するために、3Dパイプライン922は、シェーダー実行スレッドをグラフィックプロセッサの実行ユニットにディスパッチする。
【0103】
いくつかの実施形態では、3Dパイプライン922は、実行934コマンド又はイベントを介してトリガーされる。いくつかの実施形態では、レジスタ書込みがコマンド実行をトリガーする。いくつかの実施形態では、実行は、コマンドシーケンスの「ゴー(go)」又は「キック(kick)」コマンドを介してトリガーされる。一実施形態では、コマンド実行は、パイプライン同期コマンドを使用してトリガーされ、グラフィックパイプラインを介してコマンドシーケンスをフラッシュする。3Dパイプラインは、3Dプリミティブのジオメトリ処理を実行する。操作が完了すると、結果として得られる幾何学的オブジェクトがラスタライズされ、ピクセルエンジンが結果として得られるピクセルに色を付ける。ピクセルシェーディング及びピクセルバックエンド操作を制御する追加のコマンドも、これらの操作に含まれる場合がある。
【0104】
いくつかの実施形態では、サンプルコマンドシーケンス910は、メディア操作を実行するときに、メディアパイプライン924のパスを辿る。一般に、メディアパイプライン924のプログラミングの特定の使用及び方法は、実行すべきメディア操作又は計算操作に依存する。特定のメディア復号化操作は、メディア復号化中にメディアパイプラインにオフロードされ得る。メディアパイプラインをバイパスすることもでき、メディア復号化は、1つ又は複数の汎用処理コアによって提供されるリソースを使用して全体的又は部分的に実行することができる。いくつかの実施形態では、メディアパイプラインは、汎用グラフィック処理装置(GPGPU)操作のための要素も含み、グラフィックプロセッサは、グラフィックプリミティブのレンダリングに明示的に関連しない計算シェーダープログラムを使用してSIMDベクトル操作を実行するために使用される。
【0105】
いくつかの実施形態では、メディアパイプライン924は、3Dパイプライン922と同様の方法で構成される。メディアパイプライン状態コマンド940のセットは、メディアオブジェクトコマンド942の前に、コマンドキューにディスパッチ又は配置される。いくつかの実施形態では、メディアパイプライン状態コマンド940は、メディアオブジェクトを処理するために使用されるメディアパイプライン要素を構成するためのデータを含む。これには、符号化又は復号化フォーマット等、メディアパイプライン内のビデオ復号化及びビデオ符号化ロジックを構成するためのデータが含まれる。いくつかの実施形態では、メディアパイプライン状態コマンド940はまた、状態設定のバッチを含む「間接的な」状態要素への1つ又は複数のポインタの使用をサポートする。
【0106】
いくつかの実施形態では、メディアオブジェクトコマンド942は、メディアパイプラインによる処理のためにメディアオブジェクトへのポインタを提供する。メディアオブジェクトには、処理すべきビデオデータを含むメモリバッファが含まれる。いくつかの実施形態では、全てのメディアパイプライン状態は、メディアオブジェクトコマンド942を発する前に有効でなければならない。パイプライン状態が構成され、メディアオブジェクトコマンド942がキューに入れられると、メディアパイプライン924は、実行934コマンド又は同等の実行イベント(例えば、レジスタ書込み)を介してトリガーされる。次に、メディアパイプライン924からの出力は、3Dパイプライン922又はメディアパイプライン924によって提供される操作によって後処理され得る。いくつかの実施形態では、GPGPU操作は、メディア操作と同様の方法で構成及び実行される。
【0107】
図10は、本開示のいくつかの実施形態によるデータ処理システムのためのグラフィック・ソフトウェア・アーキテクチャ1000を示している。他の図の要素と同じ参照符号(又は名前)を有する図10のそれらの要素は、説明するものと同様の方法で動作又は機能することができるが、そのように限定されないことを指摘しておく。
【0108】
いくつかの実施形態では、ソフトウェア・アーキテクチャは、3Dグラフィックアプリケーション1010、オペレーティングシステム1020、及び少なくとも1つのプロセッサ1030を含む。いくつかの実施形態では、プロセッサ1030は、グラフィックプロセッサ1032、及び1つ又は複数の汎用プロセッサコア1034を含む。いくつかの実施形態では、グラフィックアプリケーション1010及びオペレーティングシステム1020はそれぞれ、データ処理システムのシステムメモリ1050内で実行される。
【0109】
いくつかの実施形態では、3Dグラフィックアプリケーション1010は、シェーダー命令1012を含む1つ又は複数のシェーダープログラムを含む。シェーダー言語命令は、高レベルシェーダー言語(HLSL)又はOpenGLシェーダー言語(GLSL)等の高レベルシェーダー言語であり得る。アプリケーションは、汎用プロセッサコア1034による実行に適した機械語での実行可能命令1014も含む。アプリケーションはまた、頂点データによって規定されたグラフィックオブジェクト1016を含む。
【0110】
いくつかの実施形態では、オペレーティングシステム1020は、Microsoft社のMicrosoft(登録商標)Windows(登録商標)オペレーティングシステム、独自のUNIX(登録商標)系オペレーティングシステム、又はLinux(登録商標)カーネルの変形を使用するオープンソースUNIX(登録商標)系オペレーティングシステムであり得る。Direct3D APIが使用されている場合に、オペレーティングシステム1020は、フロントエンドシェーダーコンパイラ1024を使用して、HLSLのシェーダー命令1012を低レベルのシェーダー言語にコンパイルする。コンパイルはジャストインタイムコンパイルである場合もあれば、アプリケーションが共有の事前コンパイルを実行する場合もある。一実施形態では、高レベルシェーダーは、3Dグラフィックアプリケーション1010のコンパイル中に低レベルシェーダーにコンパイルされる。
【0111】
いくつかの実施形態では、ユーザモードグラフィックドライバ1026は、シェーダー命令1012をハードウェア固有の表現に変換するためのバックエンドシェーダーコンパイラ1027を含み得る。OpenGL APIが使用されている場合に、GLSL高レベル言語のシェーダー命令1012は、コンパイルのためにユーザモードグラフィックドライバ1026に渡される。いくつかの実施形態では、ユーザモードグラフィックドライバ1026は、オペレーティングシステムのカーネルモード機能1028を使用して、カーネルモードグラフィックドライバ1029と通信する。いくつかの実施形態では、カーネルモードグラフィックドライバ1029は、コマンド及び命令をディスパッチするために、グラフィックプロセッサ1032と通信する。
【0112】
様々な動作又は機能を本明細書で説明する範囲で、それらは、ハードウェア回路、ソフトウェアコード、命令、構成、及び/又はデータとして説明又は規定することができる。コンテンツは、ハードウェアロジックで具体化することも、直接実行可能なソフトウェア(「オブジェクト」又は「実行可能な」形式)、ソースコード、グラフィックエンジンで実行するために設計された高レベルのシェーダーコード、或いは特定のプロセッサ又はグラフィックコアの命令セット内の低レベルのアセンブリ言語コードとして具体化することもできる。本明細書で説明する実施形態のソフトウェアコンテンツは、コンテンツを格納した製品を介して、又は通信インターフェースを操作して通信インターフェースを介してデータを送信する方法を介して提供することができる。
【0113】
非一時的な機械可読記憶媒体は、機械に、説明した機能又は動作を実行させることができ、機械(例えば、コンピュータ装置、電子システム等)によってアクセス可能な形態で情報を格納する任意のメカニズム、例えば、記録可能/記録不可能なメディア(例えば、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置等)を含む。通信インターフェースは、メモリバスインターフェース、プロセッサバスインターフェース、インターネット接続、ディスクコントローラ等のような、別の装置と通信するための有線、無線、光等の媒体のいずれかにインターフェースする任意のメカニズムを含む。通信インターフェースは、構成パラメータを提供するか、又は信号を送信することによって構成され、ソフトウェアコンテンツを記述するデータ信号を提供するための通信インターフェースを準備する。通信インターフェースには、通信インターフェースに送信される1つ又は複数のコマンド又は信号を介してアクセスすることができる。
【0114】
説明する様々な構成要素は、説明する操作又は機能を実行するための手段であり得る。本明細書で説明する各コンポーネントには、ソフトウェア、ハードウェア、又はこれらの組合せが含まれる。コンポーネントは、ソフトウェアモジュール、ハードウェアモジュール、専用ハードウェア(例えば、特定用途向けハードウェア、特定用途向け集積回路(ASIC)、デジタルシグナルプロセッサ(DSP)等)、埋込みコントローラ、有線回路等として実装され得る。本明細書で説明していることに加えて、本発明の開示する実施形態及び実施態様の範囲から逸脱することなく、それらに対して様々な修正を行うことができる。従って、本明細書の例示及び例は、限定的な意味ではなく、例示的な意味で解釈すべきである。本開示の範囲は、以下の特許請求の範囲を参照することによってのみ考慮すべきである。
【0115】
図11は、従来のOpenCLワークグループ及びメモリ構造のアーキテクチャ1100を示している。アーキテクチャ1100は、システムグローバルメモリ(SGM)1101及び共有メモリ1102-1~1103-Nを示す簡略化したアーキテクチャである。SGM1101は、一般的な処理装置によって管理されるメモリであり得る。ここで、各共有メモリは、1つ又は複数の作業項目を有する単一のワークグループに関連付けられる。
【0116】
従来のOpenCLメモリ構造では、ワークグループは、それぞれの共有ローカルメモリ(SLM)を共有する。ワークグループは、規定された数の作業項目で構成される。これらの作業項目は、実行ユニットによって実行される。ワークグループ内のメモリ空間はSLMである。アーキテクチャ1100は、それぞれ「N個の」ワークグループ(例えば、ワークグループ1102-1~1102-N)、及び対応する「N個の」SLM(例えば、SLM206-1~206-N)を示している。
【0117】
アーキテクチャ1100では、各作業項目(例えば、1101~1A~1101~1N)による計算結果が収集され、SLM(例えば、206-1)に格納され、次に、ワークグループ内の1つ又は複数の作業項目(例えば、1102-1)は、バス(例えば、JEDEC(Joint Electron Device Engineering Council)ソリッドステートテクノロジーアソシエーションによって規定されたダブルデータレート(DDR)準拠のバス)を介して、SLM(例えば、206-1)からグローバルシステムメモリ(SGM)218にデータを書き込む責任がある。多くの不可分操作があるため、SLM(1102-1等)からSGM1101への書込みには時間がかかる場合がある。特に、複数のプロセッサ又は複数の装置がある場合に、不可分操作のパフォーマンスの低下はさらに悪化する。
【0118】
上述したように、閾値電力ポイント(TPP)は、切り替え可能なグラフィックシステム毎に一意である。TPPはクロスオーバーポイントであり、TPPを上回るとdGPUのパフォーマンスが大幅に向上し、TPPを下回るとiGPUのパフォーマンスは、dGPUと同じであるが、エネルギー消費量が少なくなる。以下に、切り替え可能なグラフィックシステム(KBL-G)上のGPUの電力/パフォーマンスがiGPUでの低負荷から高負荷までの範囲のアプリケーションのセットを実行することによって記録され、同じことがdGPUで繰り返されることを確認するラボデータを示す。
【0119】
図12は、iGPU及びdGPUのパフォーマンス対消費電力を示すチャート1200を示している。図13は、iGPU及びdGPUのパフォーマンス対消費電力の関係を示すチャート1300を示している。
【0120】
図12及び図13のこれらのグラフは両方とも、低電力から高電力までの範囲の異なるアプリケーションをレンダリングするために使用されるiGPU及びdGPUの電力及びパフォーマンスの比較を示している。縦の点線のバーは、iGPUパフォーマンススコア1201及びdGPUパフォーマンススコア1202を示す。実線のバーは、iGPU電力1203及びdGPU電力1204を示す。このデータに基づいて、11Wの閾値電力ポイント(TPP)が存在し(図12のグラフの水平線の点線)、TPPの下では、iGPUパフォーマンススコア1201はdGPUパフォーマンススコア1202と同じであるが、電力がはるかに低くなっている(図12のグラフの左から右の11個のアプリケーション)。この場合に、GPUの消費電力が平均電力11Wよりも少ない場合にアプリケーションをレンダリングするときに、次に、iGPUでアプリケーションを実行すると、パフォーマンスを損なうことなくエネルギー消費を削減できる。逆に、GPUの消費電力(iGPUの電力1203及びdGPUの電力1204で示される)が11Wよりも高い場合に(例えば、図12のグラフの第12及び第13のアプリケーション、及び図13のグラフの全てのアプリケーション)、全てのタスクをレンダリングするためにdGPUを使用することにより、パフォーマンスが向上する。この閾値電力ポイントは、特定のシステムのために選択されたiGPU及びdGPUに依存し、システムメモリ、熱エンベロープ、電力バジェット等にも依存するため、システム毎に一意である。11Wの閾値電力ポイント(TPP)は単なる例であり、TPPの他の値は特定のシステムに基づいて決定されることに留意されたい。
【0121】
既存のドライバ/OSベースのGPU選択に対する様々な実施形態の切り替え可能なグラフィック管理の利点は、図12のグラフで明らかであり、最初のグラフの3つのアプリケーション(例えば、Galaxy Control、Sniper Fury、Battle of War Planes)の場合に、既存のドライバ/OSベースの実施態様は、レンダリングにdGPUを選択するが、これらのアプリケーションのレンダリングにiGPUを使用すると、パフォーマンスは同じであるが、エネルギーは大幅に低下する。例えば、Galaxy Controlアプリケーションの場合に、dGPUは、約6Wの平均消費電力で61のパフォーマンススコア1202であるのに対し、iGPUは、約3Wの平均電力を消費し、同じパフォーマンススコア61になる。
【0122】
図14A図14Bは、いくつかの実施形態による、切り替え可能なグラフィック電力管理スキームのフローチャート1400及び1420をそれぞれ示している。様々な実施形態の切り替え可能なグラフィック電力管理スキームは、システムからの入力を使用する。システム入力の例には、いくつかの標準アプリケーションに関するiGPU及びdGPUの電力及びパフォーマンスの特徴付け、及びSoC熱能力、システム電源能力等のシステムパラメータのリアルタイム情報が含まれる。フローチャート1400及び1420は、レンダリングに適したGPU(iGPU及びdGPU)を決定するために、GPUの電力/パフォーマンス情報を使用する。
【0123】
図12及び図13のグラフに示されるように、いくつかの標準的なアプリケーションに関するiGPU及びdGPUの電力及びパフォーマンスの特徴付けを使用して、GPUの閾値電力ポイントを見つける。図14A図14Bは、異なるタスク及びユースケースに適したGPU(例えば、iGPU又はdGPU)をさらに決定するために、この閾値電力ポイント(TPP)を使用する。低負荷から高負荷までGPUに負荷をかける標準アプリケーションは殆ど規定できず、OEM/ODM(original equipment manufacturer/original design manufacturer)は、これらのアプリケーションを使用して、そのシステムの閾値電力ポイントを見つける。次に、閾値電力ポイント情報が、(例えば、BIOS又はプラットフォーム上の埋込みコントローラを介して)グラフィック電力管理アルゴリズムに渡される。図14A図14Bのグラフィック電力管理アルゴリズムは、ソフトウェア、ハードウェア、又はそれらの組合せによって実行することができる。いくつかの実施形態では、グラフィック電力管理アルゴリズムは、OS又はカーネル空間のドライバによって実行される。いくつかの実施形態では、TTP及びグラフィック電力管理アルゴリズムの他のパラメータは、ユーザソフトウェア空間(操作システム空間より上の抽象化のレベル)によって制御される。いくつかの実施形態では、グラフィック電力管理アルゴリズムは、グラフィックプロセッサ又はシステムオンチップの電力管理ユニットによって実行される。
【0124】
いくつかの実施形態では、グラフィック電力管理アルゴリズムは、SoC熱能力、システム電源能力等のシステムパラメータのリアルタイム情報(例えば、電力テレメトリ(電力遠隔測定))を受信する。場合によっては、電力テレメトリは、容易に入手可能な情報であり得、それらを取得するために新しいハードウェアは必要ない。フローチャートは、いくつかの実施形態による、GPUによって消費される平均電力を他のシステムパラメータ(電力/熱エンベロープ等)とともに考察して、タスクをレンダリングするのに適切なGPUを決定する、切り替え可能なグラフィック管理制御フローを示している。
【0125】
図14A図14Bのスキームは、切り替え可能なGFXの既存のドライバ/OSベースの方法を使用してレンダリングされたアプリケーションの電力プロファイルから学習し、このプロファイル情報を使用して、将来のアプリケーションの再起動時に適切なGPUの選択を決定することもできる。図14A図14Bのスキームに基づいてGPUの使用を最適化するためのGPUの切替えは、多くの方法で実現することができる。2つの方法について説明する。1つの方法は、ドライバとOSとの間のスマートな相互作用を通じてタスクをレンダリングしながらGPUを動的に切り替えることである。これにより、ユーザに視覚的な不具合を発生させることなく、GPUをシームレスに切り替えるのを保証する。
【0126】
アプリケーションが(ブロック1401で示されるように)起動されると、プロセスは既存のアプローチで開始され、ドライバ/OSがブロック1402で示されるようにレンダリングするGPU(例えば、iGPU及びdGPU)を決定する。GPU実行ユニットがデータの処理を開始すると、様々な実施形態のスキームは、電圧レギュレータテレメトリ及び/又は他のソース(例えば、スキャンチェーン、テスト設計(DFT)回路等)からGPU消費電力情報を取得する。いくつかの実施形態では、様々なスキームは、GPUの平均消費電力を見つけるために、(電圧レギュレータテレメトリ及び/又は他のソースからの)このリアルタイム電力データに対して指数加重移動平均(EWMA)を計算する。EWMAは次のように計算することができる。
EWMA=EWMAt-1+(Δt/τ)(P-EWMAt-1)・・・(1)
【0127】
EWMAは、以前の(t-1)データの重み付けとともに瞬時(t)値を考慮して、動的データの平均値を見つける方法である。典型的に、グラフィックワークロードの殆どは本質的にバースト性であり、短時間で高電力を必要とする。そのため、頻繁なGPU切替えの問題は、EWMA平均化方法によって対処することができる。この平均化方法は、バースト消費電力が頻繁に発生するアプリケーション、又は高消費電力のデューティサイクルが高いイベントでこのようなイベント期間を見つけるのに役立つ。様々な実施形態のスキームは、電力プロファイルのデューティサイクルを理解するために、このデータを定期的にサンプリングする。
【0128】
電力プロファイルのデューティサイクルに基づいて、タスクが閾値電力ポイント(TPP)の前後のクロスオーバーを頻繁に行う電力プロファイルを有している場合に、次にブロック1403において、GPU EWMA電力がTPPを上回っているかどうかが判定される。GPU EWMA電力がTPPを上回っている場合に、プロセスは、識別子Aで示されるようにブロック1421に進み、レンダリングのためにdGPUを使用し、これにより、iGPU/dGPUの間で頻繁なコンテキスト切替えが発生しないことを保証し、パフォーマンスが低下しないことも保証する。GPU EWMA電力がTPPを上回っている場合に、プロセスは、識別子Bで示されるようにブロック1427に進み、レンダリングのためにiGPUを使用する。GPUのワークロードがバースト性であり、閾値電力ポイントを超えてEWMA電力が頻繁に前後に移行する場合に、次にブロック1403において、スキームは、EWMA電力プロファイルのデューティサイクルを調べ、それに応じてレンダリングのためのGPUを選択し、こうして頻繁なコンテキスト切替えを回避する。
【0129】
ブロック1421において、ドライバ及び/又はOSがレンダリングのためにdGPUを選択したかどうかに関して判定がなされる。ドライバ及び/又はOSがレンダリングのためにdGPUを選択した場合に、プロセスはブロック1422に進む。ブロック1422において、システム電源の能力に関して決定が行われる。システム電源(例えば、電圧レギュレータ)がdGPUの消費電力をサポートすることができる場合に、プロセスは、dGPUがタスクをレンダリングするために使用されるブロック1423に進む。システム電源がdGPUの消費電力をサポートすることができない場合に、プロセスはブロック1425に進む。ブロック1425において、GPUコンテキスト切替えがドライバ及び/又はOSで開始され、レンダリングのためにiGPUが選択される。次に、プロセスはiGPUがタスクをレンダリングするために使用されるブロック1426に進む。ブロック1421において、ドライバ及び/又はOSがレンダリングのためにdGPUを選択しない場合に、プロセスはブロック1424に進む。ブロック1424において、GPUコンテキスト切替えがドライバ及び/又はOSで開始され、レンダリングのためにdGPUが選択される。次に、プロセスはブロック1422に進み、システム電源能力は、本明細書で議論したように決定される。
【0130】
ブロック1427において、ドライバ及び/又はOSがレンダリングのためにiGPUを選択したかどうかに関して判定がなされる。ドライバ及び/又はOSがレンダリングのためにiGPUを選択した場合に、プロセスはブロック1428に進む。ブロック1428において、SoCの熱的制限に関して決定が行われる。SoCのプロセッサコアの計算のためにSoCが熱的に制限されている場合に、プロセスはブロック1429に進み、そこでGPUがドライバ及び/又はOSを使用してコンテキスト切替えを開始して、レンダリングのためにiGPUを選択する。次に、プロセスはブロック1424に進む。熱的制限は、熱センサ及び/又は電力管理ユニットからのデータ又は測定値を使用して決定することができる。熱的制限は、実質的にスロットル温度(例えば、プロセッサコアがスロットルされる温度)であるプロセッサコアの温度に対応し得る。SoCのプロセッサコアの計算のためにSoCが熱的に制限されていない場合に、プロセスは、iGPUがタスクをレンダリングするために使用されるブロック1426に進む。ドライバ及び/又はOSがレンダリングのためにiGPUを選択しない場合に、プロセスはブロック1430に進む。ブロック1430において、GPUは、ドライバ及び/又はOSを使用してコンテキスト切替えを開始して、レンダリングのためにiGPUを選択する。次に、プロセスはブロック1428に進む。
【0131】
いくつかの実施形態では、命令を格納した機械可読媒体が提供され、命令が実行されると、グラフィック処理装置(GPU)に、iGPU又はdGPUのどちらがタスクをレンダリングするかを選択する方法を実行させる。この方法は、熱出力ポイント(TPP: thermal power point)を決定するために、様々なアプリケーションでGPUにストレスをかけるステップと;統合グラフィック処理装置(iGPU)とディスクリート・グラフィック処理装置(dGPU)との両方のワットあたりのパフォーマンス情報と、TPPとを適応的に適用して、iGPU又はdGPUのどちらがレンダリングタスクを実行するかを決定するステップと;iGPU又はdGPUのいずれかを選択すると、ワットあたりのパフォーマンス情報及びTPPに従ってiGPU又はdGPUのどちらがレンダリングタスクを実行するかを選択するステップと;を含む。
【0132】
いくつかの実施形態では、機械可読媒体はその上に格納した命令を含み、命令が実行されると、GPUに、iGPU又はdGPUのどちらがレンダリングタスクを実行するかを決定する前に、テレメトリ情報を受信するステップを含む方法を実行させる。いくつかの実施形態では、機械可読媒体は、その上に格納した命令を含み、命令が実行されると、GPUに、テレメトリ情報によって受信した瞬間電力データ及び以前の電力データを介して、GPUの平均消費電力を決定するステップを含む方法を実行させる。いくつかの実施形態では、機械可読媒体はその上に格納した命令を含み、命令が実行されると、GPUに、平均消費電力がTPPよりも大きいかどうかを判定し、平均消費電力がTPPよりも大きい場合に、dGPUがレンダリングタスクを実行するように選択するステップを含む方法を実行させる。
【0133】
いくつかの実施形態では、機械可読媒体はその上に格納した命令を含み、命令が実行されると、平均消費電力がTPPよりも少ない場合に、GPUに、iGPUがレンダリングタスクを実行するように選択するステップを含む方法を実行させる。いくつかの実施形態では、機械可読媒体はその上に格納した命令を含み、命令が実行されると、GPUに、平均消費電力に閾値数を超える複数の低遷移(transition:移行)及び高遷移がある場合に、平均消費電力のデューティサイクルに従って、iGPU又はdGPUのどちらがレンダリングタスクを実行するかを決定するステップを含む方法を実行させる。いくつかの実施形態では、機械可読媒体はその上に格納した命令を含み、命令が実行されると、GPUに、電源がdGPUの消費電力をサポートする能力がないと判定した場合に、iGPUがタスクをレンダリングするように選択するべく、オペレーティングシステム又はドライバに要求するステップを含む方法を実行させる。いくつかの実施形態では、機械可読媒体はその上に格納した命令を含み、命令が実行されると、GPUに、GPUのプロセッサコアが熱的に制限されていると判定された場合に、dGPUがタスクをレンダリングするように選択するべく、オペレーティングシステム又はドライバに要求するステップを含む方法を実行させる。
【0134】
図15は、いくつかの実施形態による、簡略化したコンピュータシステム1500を示している。システム1500は、LVDS1501(低電圧差動信号、フラットパネルディスプレイリンク、液晶ディスプレイ)、ビジュアルグラフィックシステム(VGS)1502、プラットフォームコントローラハブ(PCH)1504を介してCPU1505(GPU及びメモリコントローラハブ(MCH)を含み得る)に接続するディスプレイポート(DP)又はHDMI(High Definition Multimedia Interface)1503等のディスプレイを示している。dGPU1506は、PCIe(Peripheral Component Interconnect Express)を介してCPU1505に接続される。システムメモリ1507はCPU1505に接続される一方、ローカルメモリ1508はdGPU1506に接続される。ディスプレイは、ディスプレイ接続を介してiGPUディスプレイパイプに接続される。どのディスプレイアダプタがデータを処理するかに関係なく、ディスプレイのコンテンツはiGPUディスプレイパイプを介してプッシュされる。これにより、GPU間のシームレスな動的コンテキスト切替えが可能になる。システム1500は、切り替え可能なグラフィックの原理が、ディスプレイのパイプ/ポートを変更することなく、iGPUとdGPUの間をシームレスに移行するのに役立つことを示している。
【0135】
システムが異なるディスプレイアーキテクチャを使用する場合に、次に、GPU切替えのための別の方法は、レンダリングのための適切なGPUを見つけた後に、図14A図14Bのスキームが、ユーザがレンダリングのために最適化されたGPUに切り替えたい場合に、OSポップアップメッセージを介してユーザに示すことである。ユーザがGPUを切り替えることを決定した場合に、次に、ドライバ/OSは、GPUを切り替えるアクションをさらに実行する。これは、ソフトウェアドライバとOSの相互作用の観点からはより単純なオプションであるが、シームレスではない場合がある。
【0136】
図16は、様々な実施形態の機器、方法、及びシステムを含む、スマート装置又はコンピュータシステム又はSoC(システムオンチップ)を示している。他の図の要素と同じ参照符号(又は名前)を有する図16のそれらの要素は、説明するものと同様の方法で動作又は機能することができるが、そのように限定されないことを指摘しておく。
【0137】
いくつかの実施形態では、装置2400は、コンピュータタブレット、携帯電話又はスマートフォン、ラップトップ、デスクトップ、モノのインターネット(IOT)装置、サーバ、ウェアラブル装置、セットトップボックス、ワイヤレス対応の電子書籍リーダー等の適切なコンピュータ装置を表す。特定のコンポーネントが一般的に示され、そのような装置の全てのコンポーネントが装置2400に示されているわけではないことが理解されよう。
【0138】
一例では、装置2400は、SoC(システムオンチップ)2401を含む。SoC2401の例示的な境界は、図16の点線を使用して示され、いくつかの例示的なコンポーネントは、SoC2401内に含まれるように示されるが、SoC2401には、装置2400の任意の適切なコンポーネントを含めることができる。
【0139】
いくつかの実施形態では、装置2400は、プロセッサ2404を含む。プロセッサ2404は、マイクロプロセッサ、アプリケーションプロセッサ、マイクロコントローラ、プログラマブル論理デバイス、処理コア、又は他の処理手段等の1つ又は複数の物理デバイスを含むことができる。プロセッサ2404によって実行される処理操作は、アプリケーション及び/又はデバイス機能が実行されるオペレーティングプラットフォーム又はオペレーティングシステムの実行を含む。処理操作には、人間のユーザ又は他の装置とのI/O(入力/出力)に関連する動作、電力管理に関連する動作、コンピュータ装置2400を別の装置に接続することに関連する動作等が含まれる。処理操作は、オーディオI/O及び/又はディスプレイI/Oに関連する操作も含み得る。
【0140】
いくつかの実施形態では、プロセッサ2404は、複数の処理コア(コアとも呼ばれる)2408a、2408b、2408cを含む。図16には、単に3つのコア2408a、2408b、2408cが示されているが、プロセッサ2404は、他の適切な数の処理コア、例えば、数十、又は数百の処理コアを含み得る。プロセッサコア2408a、2408b、2408cは、単一の集積回路(IC)チップ上に実装され得る。さらに、チップは、1つ又は複数の共有及び/又はプライベートキャッシュ、バス又は相互接続、グラフィック及び/又はメモリコントローラ、又は他のコンポーネントを含み得る。
【0141】
いくつかの実施形態では、プロセッサ2404は、キャッシュ2406を含む。一例では、キャッシュ2406のセクションは、個々のコア2408に専用(例えば、コア2408aに専用のキャッシュ2406の第1のセクション、コア2408bに専用のキャッシュ2406の第2のセクション等)であり得る。一例では、キャッシュ2406の1つ又は複数のセクションは、2つ以上のコア2408の間で共有され得る。キャッシュ2406は、異なるレベル、例えば、レベル1(L1)キャッシュ、レベル2(L2)キャッシュ、レベル3(L3)キャッシュ等に分割され得る。
【0142】
いくつかの実施形態では、プロセッサコア2404は、コア2404によって実行するための命令(条件付き分岐を有する命令を含む)をフェッチするためのフェッチユニットを含み得る。命令は、メモリ2430等の任意の記憶装置からフェッチされ得る。プロセッサコア2404は、フェッチした命令を復号化するための復号化ユニットも含み得る。例えば、復号化ユニットは、フェッチした命令を複数のマイクロ操作に復号化することができる。プロセッサコア2404は、復号化した命令の格納に関連する様々な操作を実行するためのスケジュールユニットを含み得る。例えば、スケジュールユニットは、命令がディスパッチの準備が整うまで、例えば、復号化した命令の全てのソース値が利用可能になるまで、復号化ユニットからのデータを保持することができる。一実施形態では、スケジュールユニットは、実行のために、復号化した命令をスケジュールし、及び/又は復号化した命令を実行ユニットに発する(又はディスパッチする)ことができる。
【0143】
実行ユニットは、ディスパッチされた命令が(例えば、復号化ユニットによって)復号され、(例えば、スケジュールユニットによって)ディスパッチされた後に、ディスパッチされた命令を実行することができる。一実施形態では、実行ユニットは、複数の実行ユニット(例えば、画像計算ユニット、グラフィック計算ユニット、汎用計算ユニット等)を含むことができる。実行ユニットはまた、加算、減算、乗算、及び/又は除算等の様々な算術演算を行うことができ、1つ又は複数の算術論理ユニット(ALU)を含むことができる。一実施形態では、コプロセッサ(図示せず)は、実行ユニットと組み合わせて様々な算術演算を行うことができる。
【0144】
さらに、実行ユニットは、命令を順不同で実行することができる。それ故、プロセッサコア2404は、一実施形態では、アウトオブオーダー・プロセッサコアであり得る。プロセッサコア2404はまた、リタイアメント(retirement)ユニットを含み得る。リタイアメントユニットは、実行した命令がコミットされた後に、それら実行した命令をリタイアさせることができる。一実施形態では、実行した命令のリタイアは、命令の実行からプロセッサ状態がコミットされ、命令によって使用される物理レジスタが割り当て解除される等を生じさせる可能性がある。プロセッサコア2404はまた、1つ又は複数のバスを介してプロセッサコア2404のコンポーネントと他のコンポーネントとの間の通信を可能にするバスユニットを含み得る。プロセッサコア2404はまた、コア2404の様々なコンポーネントによってアクセスされるデータ(割り当てられたアプリの優先順位及び/又はサブシステム状態(モード)の関連付けに関連する値等)を格納するための1つ又は複数のレジスタを含み得る。
【0145】
いくつかの実施形態では、装置2400は、接続回路2431を含む。例えば、接続回路2431は、例えば、装置2400が外部装置と通信できるようにするために、ハードウェア装置(例えば、無線及び/又は有線コネクタ及び通信ハードウェア)及び/又はソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含む。装置2400は、他のコンピュータ装置、無線アクセスポイント又は基地局等の外部装置から分離され得る。
【0146】
一例では、接続回路2431は、複数の異なるタイプの接続を含み得る。一般化すると、接続回路2431は、セルラー接続回路、無線接続回路等を含み得る。接続回路2431のセルラー接続回路は、概して、GSM(移動体通信のためのグローバルシステム)又はバリエーション又は派生物、CDMA(符号分割多重アクセス)又はバリエーション又は派生物、TDM(時分割多重化)又はバリエーション又は派生物、第3世代パートナーシッププロジェクト(3GPP)ユニバーサルモバイルテレコミュニケーションシステム(UMTS)システム又はバリエーション又は派生物、3GPPロングタームエボリューション(LTE)システム又はバリエーション又は派生物、3GPP LTE-Advanced(LTE-A)システム又はバリエーション又は派生物、第5世代(5G)ワイヤレスシステム又はバリエーション又は派生物、5Gモバイルネットワークシステム又はバリエーション又は派生物、5G New Radio(NR)システム又はバリエーション又は派生物、或いは他のセルラーサービス標準を介して提供される、無線キャリアによって提供されるセルラーネットワーク接続を指す。接続回路2431の無線接続回路(又は無線インターフェース)は、セルラーではない無線接続を指し、パーソナルエリアネットワーク(Bluetooth、Near Field等)、ローカルエリアネットワーク(Wi-Fi等)、及び/又はワイドエリアネットワーク(WiMax等)、及び/又は他のワイヤレス通信を含むことができる。一例では、接続回路2431は、例えば、有線又は無線インターフェース等のネットワークインターフェースを含み得、それによって、例えば、システムの実施形態は、無線装置、例えば、携帯電話又は携帯情報端末に組み込まれ得る。
【0147】
いくつかの実施形態では、装置2400は、制御ハブ2432を含み、これは、1つ又は複数のI/O装置との相互作用に関連するハードウェア装置及び/又はソフトウェアコンポーネントを表す。例えば、プロセッサ2404は、制御ハブ2432を介して、ディスプレイ2422、1つ又は複数の周辺装置2424、記憶装置2428、1つ又は複数の他の外部装置2429等のうちの1つ又は複数と通信することができる。制御ハブ2432は、チップセット、プラットフォーム(制御)コントローラハブ(PCH)等であり得る。
【0148】
例えば、制御ハブ2432は、装置2400に接続する追加の装置のための1つ又は複数の接続点を示しており、この接続点を介して、例えば、ユーザがシステムと対話することができる。例えば、装置2400に取り付けることができる装置(例えば、装置2429)には、マイク装置、スピーカー又はステレオシステム、オーディオ装置、ビデオシステム又は他のディスプレイ装置、キーボード又はキーパッド装置、或いはカードリーダー又は他の装置等の特定のアプリケーションで使用する他のI/O装置が含まれる。
【0149】
上述したように、制御ハブ2432は、オーディオ装置、ディスプレイ2422等と相互作用することができる。例えば、マイク又は他のオーディオ装置を介した入力は、装置2400の1つ又は複数のアプリケーション又は機能に入力又はコマンドを提供することができる。さらに、オーディオ出力は、ディスプレイ出力の代わりに、又はディスプレイ出力に加えて提供することができる。別の例では、ディスプレイ2422がタッチスクリーンを含む場合に、ディスプレイ2422は、入力装置としても機能し、制御ハブ2432によって少なくとも部分的に管理することができる。コンピュータ装置2400上に、制御ハブ2432によって管理されるI/O機能を提供するための追加のボタン又はスイッチも存在し得る。一実施形態では、制御ハブ2432は、加速度計、カメラ、光センサ又は他の環境センサ等の装置、又は装置2400に含めることができる他のハードウェアを管理する。入力は直接ユーザ対話の一部であり得、また、システムに環境入力を提供して、システムの動作に影響を与える(ノイズのフィルタリング、輝度検出のためのディスプレイの調整、カメラへのフラッシュの適用、又は他の特徴等)。
【0150】
いくつかの実施形態では、制御ハブ2432は、任意の適切な通信プロトコル、例えばPCIe(Peripheral Component Interconnect Express)、USB(Universal Serial Bus)、Thunderbolt、HDMI(High Definition Multimedia Interface)、Firewire等を使用して様々な装置に結合することができる。
【0151】
いくつかの実施形態では、ディスプレイ2422は、ユーザが装置2400と対話するための視覚的及び/又は触覚的ディスプレイを提供するハードウェア(例えば、ディスプレイ装置)及びソフトウェア(例えば、ドライバ)コンポーネントを表す。ディスプレイ2422は、ディスプレイ・インターフェース、ディスプレイ画面、及び/又はディスプレイをユーザに提供するために使用されるハードウェア装置を含み得る。いくつかの実施形態では、ディスプレイ2422は、出力と入力との両方をユーザに提供するタッチスクリーン(又はタッチパッド)装置を含む。一例では、ディスプレイ2422は、プロセッサ2404と直接通信することができる。ディスプレイ2422は、モバイル電子装置又はラップトップ装置内等の内部ディスプレイ装置、又はディスプレイ・インターフェース(例えば、DisplayPort等)を介して取り付けられた外部ディスプレイ装置のうちの1つ又は複数であり得る。一実施形態では、ディスプレイ2422は、仮想現実(VR)アプリケーション又は拡張現実(AR)アプリケーションで使用するための立体視ディスプレイ装置等のヘッドマウントディスプレイ(HMD)であり得る。
【0152】
いくつかの実施形態では、図には示していないが、プロセッサ2404に加えて(又はその代わりに)装置2400は、1つ又は複数のグラフィック処理コアを含むグラフィック処理装置(GPU)を含むことができ、グラフィック処理コアは、ディスプレイ2422上にコンテンツを表示する1つ又は複数の態様を制御することができる。
【0153】
いくつかの実施形態では、1つ又は複数のドライバ2454は、タスクをレンダリングために適切なGPUを決定するべく、SoC(システムオンチップ)熱バジェット、システム電力バジェット等のシステムのリアルタイムリソースとともに統合グラフィック(iGPU)又はディスクリートグラフィック(dGPU)の両方のパフォーマンス/ワット情報を使用する切り替え可能なグラフィック管理スキームを実装する。このスキームは、システムリソースとともにこの閾値電力ポイント情報を使用して、全てのアプリケーション及びユースケースのタスクレンダリングに最適化されたGPUを決定する。そのため、そのスキームは、その特定のシステムの能力に基づいて、各システム設計に適応する。
【0154】
制御ハブ2432(又はプラットフォームコントローラハブ)は、例えば周辺装置2424への周辺接続を行うためのハードウェアインターフェース及びコネクタ、並びにソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含み得る。
【0155】
装置2400は、他のコンピュータ装置に対する周辺装置であると同時に、その他のコンピュータ装置に接続された周辺装置を有することができることが理解されよう。装置2400は、装置2400上のコンテンツの管理(例えば、ダウンロード及び/又はアップロード、変更、同期)等の目的で他のコンピュータ装置に接続するための「ドッキング」コネクタを有し得る。さらに、ドッキングコネクタは、装置2400が、特定の周辺機器に接続するのを可能にし、コンピュータ装置2400が、例えば、オーディオビジュアル又は他のシステムへのコンテンツ出力を制御するのを可能にする。
【0156】
独自のドッキングコネクタ又は他の独自の接続ハードウェアに加えて、装置2400は、共通又は標準ベースのコネクタを介して周辺機器接続を行うことができる。一般的なタイプには、USB(Universal Serial Bus)コネクタ(複数の異なるハードウェアインターフェースのいずれかを含むことができる)、MDP(MiniDisplayPort)を含むDisplayPort、HDMI(High Definition Multimedia Interface)、Firewire、又は他のタイプが含まれる。
【0157】
いくつかの実施形態では、接続回路2431は、例えば、プロセッサ2404に直接結合されることに加えて、又はその代わりに、制御ハブ2432に結合され得る。いくつかの実施形態では、ディスプレイ2422は、例えば、プロセッサ2404に直接結合されることに加えて、又はその代わりに、制御ハブ2432に結合され得る。
【0158】
いくつかの実施形態では、装置2400は、メモリインターフェース2434を介してプロセッサ2404に結合されたメモリ2430を含む。メモリ2430は、装置2400に情報を格納するためのメモリ装置を含む。
【0159】
いくつかの実施形態では、メモリ2430は、様々な実施形態を参照して説明したように、安定したクロッキングを維持するための機器を含む。メモリは、不揮発性(メモリ装置への電力が遮断されても状態は変化しない)及び/又は揮発性(メモリ装置への電力が遮断された場合に状態は不確定になる)のメモリ装置を含むことができる。メモリ装置2430は、DRAM(dynamic random-access memory)装置、SRAM(static random-access memory)装置、フラッシュメモリ装置、相変化メモリ装置、又はプロセスメモリとして機能するのに適したパフォーマンスを有する他のメモリ装置であり得る。一実施形態では、メモリ2430は、装置2400のシステムメモリとして動作して、1つ又は複数のプロセッサ2404がアプリケーション又はプロセスを実行するときに使用するためのデータ及び命令を格納することができる。メモリ2430は、アプリケーションデータ、ユーザデータ、音楽、写真、文書、又は他のデータ、並びに装置2400のアプリケーションの実行及び機能の実行に関連するシステムデータ(長期的又は一時的)を格納することができる。
【0160】
様々な実施形態及び例の要素はまた、コンピュータ実行可能命令(例えば、本明細書で議論する他のプロセスを実施するための命令)を格納するための機械可読媒体(例えば、メモリ2430)として提供される。機械可読媒体(例えば、メモリ2430)は、フラッシュメモリ、光ディスク、CD-ROM、DVD ROM、RAM、EPROM、EEPROM、磁気又は光カード、相変化メモリ(PCM)、或いは電子命令又はコンピュータ実行可能命令を保存するのに適した他のタイプの機械可読媒体を含み得るが、これらに限定されるものではない。例えば、本開示の実施形態は、リモートコンピュータ(例えば、サーバ)から要求側コンピュータ(例えば、クライアント)に、通信リンク(例えば、モデム又はネットワーク接続)を介してデータ信号によって転送され得るコンピュータプログラム(例えば、BIOS)としてダウンロードされ得る。
【0161】
いくつかの実施形態では、装置2400は、例えば、装置2400の様々なコンポーネントの温度を測定するための温度測定回路2440を含む。一例では、温度測定回路2440は、その温度を測定及び監視する必要がある様々なコンピュータ装置に埋め込まれるか、結合されるか、又は取り付けられ得る。例えば、温度測定回路2440は、コア2408a、2408b、2408c、電圧レギュレータ2414、メモリ2430、SoC2401のマザーボード、及び/又は装置2400の任意の適切なコンポーネントのうちの1つ又は複数の(又はその中の)温度を測定することができる。
【0162】
いくつかの実施形態では、装置2400は、例えば、装置2400の1つ又は複数のコンポーネントによって消費される電力を測定するための電力測定回路2442を含む。一例では、電力を測定することに加えて、又はその代わりに、電力測定回路2442は、電圧及び/又は電流を測定することができる。一例では、電力測定回路2442は、その電力、電圧、及び/又は電流消費を測定及び監視すべき様々なコンポーネントに埋め込まれるか、結合されるか、又は取り付けられ得る。例えば、電力測定回路2442は、1つ又は複数の電圧レギュレータ2414によって供給される電力、電流及び/又は電圧、SoC2401に供給される電力、装置2400に供給される電力、装置2400のプロセッサ2404(又は他の任意のコンポーネント)によって消費される電力等を測定することができる。
【0163】
いくつかの実施形態では、装置2400は、一般に電圧レギュレータ(VR)2414と呼ばれる1つ又は複数の電圧調整回路を含む。VR2414は、装置2400の任意の適切なコンポーネントを動作させるために供給され得る適切な電圧レベルで信号を生成する。単なる例として、VR2414は、装置2400のプロセッサ2404に信号を供給するように示されている。いくつかの実施形態では、VR2414は、1つ又は複数の電圧識別(VID)信号を受信し、VID信号に基づいて適切なレベルで電圧信号を生成する。様々なタイプのVRをVR2414に利用することができる。例えば、VR2414には、「バック(buck)」VR、「ブースト(boost)」VR、バックVR及びブーストVRの組合せ、低ドロップアウト(LDO)レギュレータ、スイッチングDC-DCレギュレータ、コンスタントオンタイム(constant-on-time)コントローラベースのDC-DCレギュレータ等が含まれる。バックVRは、一般に、入力電圧を1よりも小さい比率で出力電圧に変換する必要がある電力供給アプリケーションで使用される。ブーストVRは、一般に、入力電圧を1より大きい比率で出力電圧に変換する必要がある電力供給アプリケーションで使用される。いくつかの実施形態では、各プロセッサコアは、PCU2410a/b及び/又はPMIC2412によって制御される独自のVRを有する。いくつかの実施形態では、各コアは、電力管理のための効率的な制御を提供する分散型LDOのネットワークを有する。LDOは、デジタル、アナログ、又はデジタル又はアナログLDOの組合せにすることができる。いくつかの実施形態では、VR2414は、電源レールを通る電流を測定するための電流追跡機器を含む。
【0164】
いくつかの実施形態では、装置2400は、一般にクロック発生器2416と呼ばれる1つ又は複数のクロック発生器回路を含む。クロック発生器2416は、装置2400の任意の適切なコンポーネントに供給され得る適切な周波数レベルでクロック信号を生成する。単なる例として、クロック発生器2416は、装置2400のプロセッサ2404にクロック信号を供給するように示されている。いくつかの実施形態では、クロック発生器2416は、1つ又は複数の周波数識別(FID)信号を受信し、FID信号に基づいて適切な周波数でクロック信号を生成する。
【0165】
いくつかの実施形態では、装置2400は、装置2400の様々なコンポーネントに電力を供給するバッテリ2418を含む。単なる例として、バッテリ2418は、プロセッサ2404に電力を供給するように示されている。図には示されていないが、装置2400は、例えば、ACアダプタから受け取った交流(AC)電源に基づいて、バッテリを再充電するための充電回路を含み得る。
【0166】
いくつかの実施形態では、装置2400は、電力制御ユニット(PCU)2410(電力管理ユニット(PMU)、電力コントローラ等とも呼ばれる)を含む。一例では、PCU2410のいくつかのセクションは、1つ又は複数の処理コア2408によって実装され得、PCU2410のこれらのセクションは、点線のボックスを使用して記号的に示され、PCU2410aとラベル付けされる。一例では、PCU2410の他のいくつかのセクションは、処理コア2408の外側に実装され得、PCU2410のこれらのセクションは、点線のボックスを使用して記号的に示され、PCU2410bとしてラベル付けされる。PCU2410は、装置2400の様々な電力管理操作を実施することができる。PCU2410は、装置2400の様々な電力管理操作を実施するために、ハードウェアインターフェース、ハードウェア回路、コネクタ、レジスタ等、及びソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含み得る。
【0167】
いくつかの実施形態では、装置2400は、例えば、装置2400の様々な電力管理操作を実施するために、電力管理集積回路(PMIC)2412を含む。いくつかの実施形態では、PMIC2412は、再構成可能な電力管理IC(RPMIC)及び/又はIMVP(Intel(R) Mobile Voltage Positioning)である。一例では、PMICは、プロセッサ2404とは別のICチップ内にある。PMICは、装置2400に対して様々な電力管理操作を実施することができる。PMIC2412は、装置2400の様々な電力管理操作を実施するために、ハードウェアインターフェース、ハードウェア回路、コネクタ、レジスタ等、及びソフトウェアコンポーネント(例えば、ドライバ、プロトコルスタック)を含み得る。
【0168】
一例では、装置2400は、PCU2410又はPMIC2412の一方又は両方を含む。一例では、PCU2410又はPMIC2412のいずれか1つが装置2400に存在しない可能性があり、それ故、これらのコンポーネントは点線を使用して示されている。
【0169】
装置2400の様々な電力管理操作は、PCU2410によって、PMIC2412によって、又はPCU2410及びPMIC2412の組合せによって実行され得る。例えば、PCU2410及び/又はPMIC2412は、装置2400の様々なコンポーネントの電力状態(例えば、P状態)を選択することができる。例えば、PCU2410及び/又はPMIC2412は、装置2400の様々なコンポーネントの電力状態を(例えば、ACPI(Advanced Configuration and Power Interface)仕様に従って)選択することができる。単なる例として、PCU2410及び/又はPMIC2412は、装置2400の様々なコンポーネントを、スリープ状態、アクティブ状態、適切なC状態(例えば、ACPI仕様に従ってC0状態、又は別の適切なC状態)に移行させることができる。一例では、PCU2410及び/又はPMIC2412は、例えば、VID信号及び/又はFID信号をそれぞれ出力することによって、VR2414によって出力される電圧及び/又はクロック発生器によって出力されるクロック信号の周波数を制御することができる。一例では、PCU2410及び/又はPMIC2412は、バッテリ電力使用量、バッテリ2418の充電、及び省電力動作に関連する特徴を制御することができる。
【0170】
クロック発生器2416は、位相ロックループ(PLL)、周波数ロックループ(FLL)、又は任意の適切なクロックソースを含むことができる。いくつかの実施形態では、プロセッサ2404の各コアは、それ自体のクロックソースを有する。そのため、各コアは、他のコアの動作周波数とは独立した周波数で動作することができる。いくつかの実施形態では、PCU2410及び/又はPMIC2412は、適応型又は動的な周波数スケーリング又は調整を実行する。例えば、コアがその最大消費電力の閾値又は制限で動作していない場合に、プロセッサコアのクロック周波数を上げることができる。いくつかの実施形態では、PCU2410及び/又はPMIC2412は、プロセッサの各コアの動作状態を決定し、コアが目標パフォーマンスレベルを下回って動作しているとPCU2410及び/又はPMIC2412が判定した場合に、コアクロッキングソース(例えば、そのコアのPLL)がロックを失うことなく、そのコアの周波数及び/又は電源電圧を日和見的に調整する。例えば、コアがそのコア又はプロセッサ2404に割り当てられた合計電流よりも少ない電流を電源レールから引き出している場合に、次に、PCU2410及び/又はPMIC2412は、そのコア又はプロセッサ2404のために引き出される電力を(例えば、クロック周波数及び/又は電源電圧レベルを増加させることにより)一時的に上げることができ、コア又はプロセッサ2404がより高いパフォーマンスレベルで実行できるようにする。そのため、電圧及び/又は周波数は、製品の信頼性を損なうことなく、プロセッサ2404の一時性を高めることができる。
【0171】
一例では、PCU2410及び/又はPMIC2412は、例えば、電力測定回路2442、温度測定回路2440、バッテリ2418の充電レベルからの測定値、及び/又は電力管理に使用され得る他の適切な情報を受信することに少なくとも部分的に基づいて、電力管理操作を実行することができる。そのために、PMIC2412は、1つ又は複数のセンサに通信可能に結合され、システム/プラットフォームの電力/熱挙動に影響を与える1つ又は複数の要因の様々な値/変動を感知/検出する。1つ又は複数の要因の例には、電流、電圧ドループ(droop)、温度、動作周波数、動作電圧、消費電力、コア間通信活動等が含まれる。これらのセンサの1つ又は複数には、物理的に近接して(及び/又は熱的に接触/結合する)コンピュータシステムの1つ又は複数のコンポーネント又はロジック/IPブロックが設けられ得る。さらに、センサは、少なくとも1つの実施形態において、PCU2410及び/又はPMIC2412に直接結合され得、PCU2410及び/又はPMIC2412が、1つ又は複数のセンサによって検出した値に少なくとも部分的に基づいてプロセッサコアエネルギーを管理するのを可能にする。
【0172】
装置2400の例示的なソフトウェアスタックも示されている(ただし、ソフトウェアスタックの全ての要素が示されているわけではない)。単なる例として、プロセッサ2404は、アプリケーションプログラム2450、オペレーティングシステム2452、1つ又は複数の電力管理(PM)固有のアプリケーションプログラム(例えば、一般にPMアプリケーション2458と呼ばれる)等を実行することができる。PMアプリケーション2458は、PCU2410及び/又はPMIC2412によっても実行され得る。OS2452はまた、1つ又は複数のPMアプリケーション2456a、2456b、2456cを含み得る。OS2452には、様々なドライバ2454a、2454b、2454c等も含まれ得、その一部は電力管理の目的に固有のものであり得る。いくつかの実施形態では、装置2400は、基本入出力システム(BIOS)2420をさらに含むことができる。BIOS2420は、(例えば、1つ又は複数のドライバ2454を介して)OS2452と通信することができ、プロセッサ2404等と通信することができる。
【0173】
例えば、PMアプリケーション2458、2456、ドライバ2454、BIOS2420等のうちの1つ又は複数を使用して、電力管理固有のタスクを実施し、例えば、装置2400の様々なコンポーネントの電圧及び/又は周波数を制御し、装置2400の様々なコンポーネントのウェイクアップ状態、スリープ状態、及び/又は他の適切な電力状態を制御し、バッテリ電力使用量、バッテリ2418の充電、省電力動作に関連する特徴等を制御するすることができる。
【0174】
いくつかの実施形態では、バッテリ2418は、バッテリに均一な圧力をかけることを可能にする圧力チャンバを含むリチウム金属バッテリである。圧力チャンバは、バッテリに均一な圧力を与えるために使用される金属プレート(圧力均等化プレート等)によって支持される。圧力チャンバには、加圧ガス、弾性材料、ばね板等が含まれる。圧力チャンバの外板は自由に曲がり、(金属)外板によってその縁部が拘束されるが、依然としてバッテリセルを圧縮している板に均一な圧力をかける。圧力チャンバはバッテリに均一な圧力を与え、この圧力は、例えば、バッテリ寿命が20%長い高エネルギー密度のバッテリを可能にするために使用される。
【0175】
いくつかの実施形態では、PCU2410a/b上で実行されるpCodeは、pCodeの実行時サポートのために追加の計算リソース及びテレメトリリソースを可能にする能力を有する。ここで、pCodeは、SoC2401のパフォーマンスを管理するためにPCU2410a/bによって実行されるファームウェアを指す。例えば、pCodeは、プロセッサの周波数及び適切な電圧を設定することができる。pCodeの一部は、OS2452を介してアクセス可能である。様々な実施形態では、ワークロード、ユーザの動作、及び/又はシステム条件に基づいてエネルギーパフォーマンスプリファレンス(EPP)値を動的に変更するメカニズム及び方法が提供される。OS2452とpCodeとの間に明確に規定されたインターフェースが存在し得る。インターフェースは、いくつかのパラメータのソフトウェア構成を許可又は容易にし、及び/又はpCodeにヒントを提供する場合がある。例として、EPPパラメータは、パフォーマンス又はバッテリ寿命がより重要であるかどうかに関してpCodeアルゴリズムに通知する場合がある。
【0176】
このサポートは、OS2452の一部として機械学習サポートを含み、OSが機械学習予測によってハードウェア(例えば、SoC2401の様々なコンポーネント)に示唆するEPP値を調整することによって、又はDTT(Dynamic Tuning Technology)ドライバによって行われるのと同様の方法で機械学習予測をpCodeに配信することによって、OS2452によっても同様に行うことができる。このモデルでは、OS2452は、DTTで使用可能なものと同じテレメトリのセットを可視化することができる。DTT機械学習ヒント設定の結果として、pCodeは、その内部アルゴリズムを調整して、アクティベーションタイプの機械学習予測に従って最適な電力及びパフォーマンスの結果を達成することができる。例としてのpCodeは、ユーザアクティビティへの迅速な応答を可能にするためにプロセッサ使用率の変更の責任を増やすことができ、或いはプロセッサ使用率の責任を減らすか、又はより多くの電力を節約して、省エネの最適化の調整によって失われるパフォーマンスを増やすことによって、エネルギー節約のバイアスを増やすことができる。このアプローチは、有効にされたタイプのアクティビティが、システムが有効にできるものよりもパフォーマンスレベルを失う場合に、バッテリ寿命をより多く節約するのに役立つ。pCodeには、1つはOS2452から、もう1つはDTT等のソフトウェアからの2つの入力を受け取り、より高いパフォーマンス及び/又は応答性を提供することを選択的に選ぶことができる動的EPPのアルゴリズムを含めることができる。この方法の一部として、pCodeは、DTTで、異なるタイプのアクティビティのDTTに対する反応を調整するオプションを有効にすることができる。
【0177】
本明細書における「実施形態」、「一実施形態」、「いくつかの実施形態」、又は「他の実施形態」への言及は、実施形態に関連して説明した特定の特徴、構造、又は特性が少なくともいくつかの実施形態に含まれるが、必ずしも全ての実施形態に含まれるわけではないことを意味する。「実施形態」、「一実施形態」、又は「いくつかの実施形態」の様々な出現は、必ずしも全てが同じ実施形態を指すわけではない。明細書に、コンポーネント、特徴、構造、又は特性が「含まれ得る」、「含まれる可能性がある」、又は「含むことができる」と記載されている場合に、その特定のコンポーネント、特徴、構造、又は特性を(必ずしも)含める必要はない。明細書又は特許請求の範囲が「1つの(a, an)」要素に言及している場合に、それは要素が1つしかないことを意味するものではない。明細書又は特許請求の範囲が「追加の」要素に言及している場合に、それは、複数の追加の要素が存在することを排除するものではない。
【0178】
さらに、特定の特徴、構造、機能、又は特性は、1つ又は複数の実施形態において任意の適切な方法で組み合わせることができる。例えば、第1の実施形態は、2つの実施形態に関連する特定の特徴、構造、機能、又は特性が互いに排他的でない場合にいつでも、第2の実施形態と組み合わせることができる。
【0179】
本開示について、その特定の実施形態と併せて説明してきたが、そのような実施形態の多くの代替、修正、及び変形は、前述の説明に照らして当業者には明らかであろう。本開示の実施形態は、添付の特許請求の範囲の広い範囲に含まれるような全てのそのような代替、修正、及び変形を包含することを意図している。
【0180】
さらに、集積回路(IC)チップ及び他のコンポーネントへの周知の電源/接地接続は、例示及び説明を簡略化するために、そして本開示を曖昧にしないために、提示した図内に示される場合もあれば、示されない場合もある。さらに、配置は、本開示を曖昧にすることを避けるためにブロック図形式で示され得、また、そのようなブロック図配置の実施態様に関する詳細が、本開示を実施すべきプラットフォームに大きく依存するという事実を考慮して、ブロック図形式で示され得る(すなわち、そのような詳細は、当業者の範囲内に十分にあるべきである)。本開示の例示的な実施形態を説明するために特定の詳細(例えば、回路)が示される場合に、本開示は、これらの特定の詳細なしで、又はその変形を伴って実施できることは当業者には明らかであるはずである。こうして、説明は、限定するのではなく、例示と見なすべきである。
【0181】
以下の実施例は、更なる実施形態に関する。実施例の詳細は、1つ又は複数の実施形態のどこでも使用することができる。本明細書で説明する機器の全てのオプションの特徴はまた、方法又はプロセスに関して実施され得る。実施例は、任意の組合せで組み合わせることができる。例えば、実施例4を実施例2と組み合わせることができる。
【0182】
実施例1:グラフィックプロセッサは、統合グラフィック処理装置(iGPU)と;ディスクリート・グラフィック処理装置(dGPU)と;iGPUとdGPUとの両方のワットあたりのパフォーマンス情報を適応的に適用するロジックと;iGPU又はdGPUのどちらがレンダリングタスクを実行するかを決定する熱出力ポイント(TPP)と;を含む。
【0183】
実施例2:ロジックは、iGPU又はdGPUのどちらがレンダリングタスクを実行するかを決定する前に、テレメトリ情報を受信する、実施例1のグラフィックプロセッサ。
【0184】
実施例3:ロジックは、テレメトリ情報によって受信した瞬間電力データ及び以前の電力データを介して、グラフィックプロセッサの平均消費電力を決定する、実施例2のグラフィックプロセッサ。
【0185】
実施例4:ロジックは、平均消費電力がTPPよりも大きいかどうかを判定し、平均消費電力がTPPよりも大きい場合に、ロジックは、dGPUがレンダリングタスクを実行するように選択する、実施例3のグラフィックプロセッサ。
【0186】
実施例5:平均消費電力がTPPよりも少ない場合に、ロジックは、iGPUがレンダリングタスクを実行するように選択する、実施例4のグラフィックプロセッサ。
【0187】
実施例6:平均消費電力に閾値数を超える複数の低遷移及び高遷移がある場合に、ロジックは、平均消費電力のデューティサイクルに従って、iGPU又はdGPUのどちらがレンダリングタスクを実行するかを決定する、実施例3のグラフィックプロセッサ。
【0188】
実施例7:電源がdGPUの消費電力をサポートすることができないとロジックが判定した場合に、ロジックは、iGPUがタスクをレンダリングするように選択するべく、オペレーティングシステム又はドライバに要求する、実施例4のグラフィックプロセッサ。
【0189】
実施例8:グラフィックプロセッサのプロセッサコアが熱的に制限されているとロジックが判定した場合に、ロジックは、dGPUがタスクをレンダリングするように選択するべく、オペレーティングシステム又はドライバに要求する、実施例5のグラフィックプロセッサ。
【0190】
実施例9:ロジックが、iGPU又はdGPUのどちらがレンダリングタスクを実行するかを決定する前に、オペレーティングシステム又はドライバは、iGPU又はdGPUのどちらがレンダリングタスクを実行するかを決定する、実施例1のグラフィックプロセッサ。
【0191】
実施例10:TPPは、様々なアプリケーションでグラフィックプロセッサにストレスを与えることによって決定される、実施例1のグラフィックプロセッサ。
【0192】
実施例11:TPPは、BIOS又は埋込みコントローラに渡される、実施例1のグラフィックプロセッサ。
【0193】
実施例12:命令を記憶した機械可読媒体であって、命令が実行されると、グラフィック処理装置(GPU)に方法を実行させ、その方法には、様々なアプリケーションでGPUにストレスをかけて、熱出力ポイント(TPP)を決定するステップと;統合グラフィック処理装置(iGPU)とディスクリート・グラフィック処理装置(dGPU)との両方のワットあたりのパフォーマンス情報及びTPPを適応的に適用して、iGPU又はdGPUのどちらがレンダリングタスクを実行するかを決定するステップと;ワットあたりのパフォーマンス情報及びTPPに従って、iGPU又はdGPUのどちらかレンダリングタスクを実行するかを選択するステップと;が含まれる。
【0194】
実施例13:命令を記憶しており、命令が実行されると、GPUに方法を実行させ、この方法には、iGPU又はdGPUのどちらがレンダリングタスクを実行するかを決定する前に、テレメトリ情報を受信するステップが含まれる、実施例12の機械可読媒体。
【0195】
実施例14:命令を記憶しており、命令が実行されると、GPUに方法を実行させ、この方法には、テレメトリ情報によって受信した瞬間電力データ及び以前の電力データを介して、GPUの平均消費電力を決定するステップが含まれる、実施例13の機械可読媒体。
【0196】
実施例15:命令を記憶しており、命令が実行されると、GPUに方法を実行させ、この方法には、平均消費電力がTPPよりも大きいかどうかを判定し、平均消費電力がTPPよりも大きい場合に、dGPUがレンダリングタスクを実行するように選択するステップが含まれる、実施例14の機械可読媒体。
【0197】
実施例16:命令を記憶しており、命令が実行されると、GPUに方法を実行させ、この方法には、平均消費電力がTPPよりも少ない場合に、iGPUがレンダリングタスクを実行するように選択するステップが含まれる、実施例15の機械可読媒体。
【0198】
実施例17:命令を記憶しており、命令が実行されると、GPUに方法を実行させ、この方法には、平均消費電力に閾値数を超える複数の低遷移及び高遷移がある場合に、平均消費電力のデューティサイクルに従って、iGPU又はdGPUのどちらがレンダリングタスクを実行するかを決定するステップが含まれる、実施例14の機械可読媒体。
【0199】
実施例18:命令を記憶しており、命令が実行されると、GPUに方法を実行させ、この方法には、電源がdGPUの消費電力をサポートすることができないと判定された場合に、iGPUがタスクをレンダリングするように選択するべく、オペレーティングシステム又はドライバに要求するステップが含まれる、実施例15の機械可読媒体。
【0200】
実施例19:命令を記憶しており、命令が実行されると、GPUに方法を実行させ、この方法には、GPUのプロセッサコアが熱的に制限されていると判定された場合に、dGPUがタスクをレンダリングするように選択するべく、オペレーティングシステム又はドライバに要求するステップが含まれる、実施例16の機械可読媒体。
【0201】
実施例20:システムは、メモリと;メモリに結合されたグラフィック処理装置(GPU)と;GPUが別の装置と通信するのを可能にする無線インターフェースと;を含み、GPUは、実施例1~11のいずれか1つに記載されているものである。
【0202】
読者が技術的開示の性質及び要点を確認するのを可能にする要約が提供される。要約は、特許請求の範囲又は意味を制限するために使用されないことを理解した上で提出される。以下の特許請求の範囲は、詳細な説明に組み込まれ、各請求項は、別個の実施形態としてそれ自体で成り立っている。
図1
図2
図3
図4
図5
図6
図7
図8
図9A
図9B
図10
図11
図12
図13
図14A
図14B
図15
図16
【国際調査報告】