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

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

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特開2024-138525グラフィックス処理ユニットのためのクロック制御スキーム
<>
  • 特開-グラフィックス処理ユニットのためのクロック制御スキーム 図1
  • 特開-グラフィックス処理ユニットのためのクロック制御スキーム 図2
  • 特開-グラフィックス処理ユニットのためのクロック制御スキーム 図3
  • 特開-グラフィックス処理ユニットのためのクロック制御スキーム 図4
  • 特開-グラフィックス処理ユニットのためのクロック制御スキーム 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024138525
(43)【公開日】2024-10-08
(54)【発明の名称】グラフィックス処理ユニットのためのクロック制御スキーム
(51)【国際特許分類】
   G06F 1/08 20060101AFI20241001BHJP
   G06F 1/10 20060101ALI20241001BHJP
   H03K 21/02 20060101ALN20241001BHJP
【FI】
G06F1/08 520
G06F1/10
H03K21/02 026
【審査請求】有
【請求項の数】17
【出願形態】OL
(21)【出願番号】P 2024114543
(22)【出願日】2024-07-18
(62)【分割の表示】P 2022550173の分割
【原出願日】2021-03-05
(31)【優先権主張番号】62/985,985
(32)【優先日】2020-03-06
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】63/050,527
(32)【優先日】2020-07-10
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/032,701
(32)【優先日】2020-09-25
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ランジート クマール サジャ
(72)【発明者】
【氏名】スリーカント ゴーディ
(72)【発明者】
【氏名】アニルーダ アール. アチャリャ
(57)【要約】      (修正有)
【課題】グラフィックス処理ユニット(GPU)のシェーダエンジンモジュール(SE)及び非シェーダエンジンモジュール(nSE)をクロックするためのクロック信号を制御するシステム及び方法を提供する。
【解決手段】GPU100において、1つ以上の分割器110が、クロック信号CLKを受信し、クロック信号CLKAをSE104に出力し、クロック信号CLKBをnSE106に出力する。CLKA及びCLKBの周波数は、SE及びnSEにおいて監視された性能カウンタ109のデータのセットに基づいて独立して選択される。SE又はnSEの何れかのクロック信号周波数は、対応する性能カウンタデータのセットがSEに関して又はnSEに関して比較的低い処理ワークロードを示す場合に低減される。
【選択図】図1
【特許請求の範囲】
【請求項1】
グラフィックス処理ユニット(GPU)であって、
分割器と、
前記分割器に結合され、第1の周波数を有する第1のクロック信号を前記分割器から受信するように構成された回路の第1のセットと、
前記分割器に結合され、第2の周波数を有する第2のクロック信号を前記分割器から受信するように構成された回路の第2のセットと、
前記回路の第1のセット及び前記回路の第2のセットに関連するそれぞれのワークロードに少なくとも部分的に基づいて、前記第1の周波数を、前記第2のクロック信号とは独立して選択的に制御するように構成されたコントローラと、を備える、
GPU。
【請求項2】
前記回路の第1のセットは、1つ以上のシェーダエンジンを含む、
請求項1のGPU。
【請求項3】
前記回路の第2のセットは、1つ以上の非シェーダエンジンモジュールを含む、
請求項1のGPU。
【請求項4】
前記コントローラは、前記それぞれのワークロードに関連するイベントの量に少なくとも部分的に基づいて、前記第1の周波数を選択的に制御するように構成されている、
請求項1のGPU。
【請求項5】
前記コントローラは、前記それぞれのワークロードに関連する性能カウンタデータ間の差に少なくとも部分的に基づいて、前記第1の周波数を選択的に制御するように構成されている、
請求項1のGPU。
【請求項6】
前記第1の周波数を選択的に制御することは、
少なくとも1つの制御信号を前記分割器に送信することと、
前記分割器を用いて、前記少なくとも1つの制御信号に基づいて、前記第1の周波数を有する前記第1のクロック信号を前記回路の第1のセットに送信することと、
前記分割器を用いて、前記少なくとも1つの制御信号に基づいて、前記第2の周波数を有する前記第2のクロック信号を前記回路の第2のセットに送信することと、を含む、
請求項1のGPU。
【請求項7】
第1の複数の分割器と、
第2の複数の分割器と、を備え、
前記第1の周波数を選択的に制御することは、
第1の制御信号を前記第1の複数の分割器に送信することと、
第2の制御信号を前記第2の複数の分割器に送信することと、を含む、
請求項1のGPU。
【請求項8】
方法であって、
第1の周波数を有する第1のクロック信号を、グラフィックス処理ユニット(GPU)の回路の第1のセットに供給することと、
第2の周波数を有する第2のクロック信号を、前記GPUの回路の第2のセットに供給することと、
前記回路の第1のセット及び前記回路の第2のセットに関連するそれぞれのワークロードに少なくとも部分的に基づいて、前記第1の周波数を、前記第2のクロック信号とは独立して選択的に調整することと、を含む、
方法。
【請求項9】
前記第1のクロック信号を前記回路の第1のセットに供給することは、
前記第1のクロック信号を前記GPUの1つ以上のシェーダエンジンに供給することを含む、
請求項8の方法。
【請求項10】
前記第2のクロック信号を前記回路の第2のセットに供給することは、
前記第2のクロック信号を前記GPUの非シェーダエンジン回路に供給することを含む、
請求項8の方法。
【請求項11】
前記第1の周波数を調整することは、前記それぞれのワークロードに関連するイベントの量に少なくとも部分的に基づいている、
請求項8の方法。
【請求項12】
前記第1の周波数を調整することは、前記それぞれのワークロードに関連する性能カウンタデータ間の差に少なくとも部分的に基づいている、
請求項8の方法。
【請求項13】
前記第1の周波数を調整することは、
少なくとも1つの制御信号を分割器に送信することと、
前記分割器を用いて、前記少なくとも1つの制御信号に基づいて、前記第1の周波数を有する前記第1のクロック信号を前記回路の第1のセットに送信することと、
前記分割器を用いて、前記少なくとも1つの制御信号に基づいて、前記第2の周波数を有する前記第2のクロック信号を前記回路の第2のセットに送信することと、を含む、
請求項8の方法。
【請求項14】
前記第1の周波数を調整することは、
第1の制御信号を第1の複数の分割器に送信することと、
第2の制御信号を第2の複数の分割器に送信することと、
前記第1の複数の分割器を用いて、前記第1の制御信号に基づいて、前記第1の周波数を有する前記第1のクロック信号を前記回路の第2のセットに送信することと、
前記第2の複数の分割器を用いて、前記第2の制御信号に基づいて、前記第2の周波数を有する前記第2のクロック信号を前記回路の第2のセットに送信することと、を含む、
請求項8の方法。
【請求項15】
システムであって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサに通信可能に結合された1つ以上のメモリと、
前記1つ以上のプロセッサに通信可能に結合されたグラフィックス処理ユニット(GPU)と、を備え、
前記GPUは、
第1の周波数を有する第1のクロック信号を分割器から受信するように構成された回路の第1のセットと、
第2の周波数を有する第2のクロック信号を前記分割器から受信するように構成された回路の第2のセットと、
前記回路の第1のセット及び前記回路の第2のセットに関連するそれぞれのワークロードに少なくとも部分的に基づいて、前記第1の周波数を、前記第2のクロック信号とは独立して選択的に制御するように構成されたコントローラと、を備える、
システム。
【請求項16】
前記回路の第1のセットは、1つ以上のシェーダエンジンを含む、
請求項15のシステム。
【請求項17】
前記回路の第2のセットは、1つ以上の非シェーダエンジンモジュールを含む、
請求項15のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータ処理システムは、概して、グラフィックス処理ユニット(graphics processing unit、GPU)を用いて、テクスチャマッピング、レンダリング、頂点変換等のグラフィックス動作を実行する。GPUに関する性能要件又は仕様は、関連する電子デバイスのタイプに応じて異なり得る。例えば、モバイルデバイスのGPUは、他のプラットフォームから大幅に乖離する可能性のある特徴及び要件を有する。性能、バッテリ寿命及び熱は、概して、モバイルデバイスプラットフォーム用の重要な基準であり、より良好な持続性能及び低アイドル電力消費が望ましい。デバイス動作中のGPU構成要素の周波数及び電圧スケーリングの両方に関連して、GPU構成要素のクロッキングは、モバイルデバイスのこれらの動作態様の各々に影響を与える。
【0002】
本開示は、添付の図面を参照することによってより良好に理解することができ、本開示の特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0003】
図1】いくつかの実施形態による、GPUのシェーダエンジンモジュール(shader engine module、SE)及び非シェーダエンジンモジュール(non-shader-engine module、nSE)をクロックするために使用されるクロック信号の周波数を選択的に調整するための分割器(divider)を含む、グラフィックス処理ユニット(GPU)を示すブロック図である。
図2】いくつかの実施形態による、SE及びnSEをクロックするために使用されるクロック信号の周波数を選択的に調整するために、GPUのSE及びnSEの個々のタイルに配置された複数の分割器を含む、GPUを示すブロック図である。
図3】いくつかの実施形態による、図1のGPUに使用可能なクロック分割器を示すブロック図である。
図4】いくつかの実施形態による、経時的なSE性能カウンタデータとnSE性能カウンタデータとの差分の例を示す例示的なグラフである。
図5】いくつかの実施形態による、対応する性能カウンタデータに基づいて、クロックSE及びnSEに使用されるクロック信号の周波数を調整するための方法を示すフロー図である。
【発明を実施するための形態】
【0004】
モバイルデバイス内の処理ワークロードは、シェーダが重い状態から、メモリ結合状態や散在的なロード状態に幅広く変化する(すなわち、ワークロード強度がメモリ集約型からシェーダ集約型に変化する場合や、その逆の場合)。システム内の全ての構成要素をクロックするために単一のクロック信号が使用される従来の単一/ユニバーサルクロックスキームは、これらのスキームが、それぞれのワークロードに基づいて、様々なシステム構成要素間のクロック周波数の差別化(differentiation)を可能にしないため、かかる変更された処理ワークロードステータスにわたってデバイス性能を制限する。本明細書において説明する技術を使用すると、デバイス構成要素の特定のグループに偏って影響を及ぼす処理ワークロードの変更は、GPU内の構成要素の異なるグループに個別のクロッキングを提供することによって把握され、それによって、軽い処理ワークロードを有する構成要素のグループをクロックするために使用されるクロック信号の周波数を低減させ、一方で比較的重い処理ワークロードを有する構成要素のグループをクロックするために使用されるクロック信号の周波数を増加させる又は変更しないままにすることが可能になる。より軽いワークロードを有する構成要素のクロック周波数を低減させることによって、構成要素を含むシステムの電力及び熱効率は、単一/ユニバーサルクロックスキームのものに対して改善される。
【0005】
処理ワークロードが不均衡になる典型的なデバイス構成要素の2つのグループは、グラフィックス処理ユニット(GPU)のシェーダエンジンモジュール及び非シェーダエンジンモジュールである。本明細書では、「シェーダエンジンモジュール」は、典型的には、シェーダエンジンの一部であり、グラフィックオブジェクトの生成及び操作のために頻繁に繰り返される指定されたタスクを実行するために使用されるGPUのモジュールを指す。いくつかの実施形態では、かかるタスクは、テクスチャマッピング、レンダリング、頂点変換等を含む。本明細書では、GPUの「非シェーダエンジンモジュール」は、GPUのシェーダエンジンに含まれない回路及びモジュールを指す。
【0006】
例えば、モバイルデバイス内のGPUのシェーダエンジンモジュールは、GPUがシェーダを多用する処理ワークロード(shader-heavy processing workload)を処理する場合に、非シェーダエンジンモジュールよりもアクティブになる。したがって、ユニバーサルクロックスキームでは、シェーダを多用する処理ワークロードをより良好に処理するためにシェーダエンジンモジュールのためのクロック信号の周波数を増加させると、非シェーダエンジンモジュールのクロック周波数も不必要に増加させ、最適でない熱及び電力性能をもたらす。対照的に、GPUのシェーダエンジンモジュール及び非シェーダエンジンモジュールを個別に制御可能なクロック信号でクロックすることにより、非シェーダエンジンモジュールがシェーダを多用する処理ワークロード中に低い周波数でクロックされ、シェーダエンジンモジュールのクロック周波数が増加又は変化しないままであることから、改善された熱及び電力性能をもたらす。
【0007】
いくつかの実施形態では、シェーダエンジンモジュールよりも非シェーダエンジンモジュールから顕著により多くのアクティビティを必要とするメモリ結合処理ワークロードに対して、異なるクロック周波数を選択的に設定するために、同様の技術が適用される。ユニバーサルクロックスキームを実装する場合、メモリを多用する処理ワークロード(memory-heavy processing workload)(例えば、GPUのシェーダエンジンモジュールよりもGPUの非シェーダエンジン記憶デバイスにおいて顕著により多くのアクティビティを伴う処理ワークロード)をより良好に処理するために、非シェーダエンジンモジュールのクロック信号の周波数を増加させると、シェーダエンジンがクロックされる周波数を不必要に増加させ、最適でない熱及び電力性能をもたらす。対照的に、GPUのシェーダエンジンモジュール及び非シェーダエンジンモジュールを個別に制御可能なクロック信号でクロックすることにより、シェーダエンジン構成要素が、メモリを多用する処理ワークロード中により低い周波数でクロックされ、非シェーダエンジンモジュールのクロック周波数が増加又は変化しないままであり、改善された熱及び電力性能をもたらす。
【0008】
GPUは、GPUの構成要素の異なるグループに提供される各独立制御可能なクロック信号の周波数を設定するために、1つ以上のプログラム可能な分割器を用いる。例えば、いくつかの実施形態では、分割器は、位相同期ループ(phase locked loop、PLL)等のクロックソースと、シェーダエンジンモジュール及び非シェーダエンジンモジュールと、の間に介在する。各分割器は、クロックソースからクロック信号(「入力クロック信号」CLKと呼ばれることもある)を受信し、第1のクロック信号及び第2のクロック信号を独立して選択可能な周波数で出力し、第1のクロック信号がシェーダエンジンモジュールに出力され、第2のクロック信号が非シェーダエンジンモジュールに出力される。分割器は、第1及び第2のクロック信号の周波数を設定するコントローラから制御信号を受信する。コントローラは、シェーダエンジンモジュール及び非シェーダエンジンモジュールにおける相対的なワークロードを示す性能カウンタデータのセットに基づいて、制御信号の値を選択する。例えば、性能カウンタデータが、所定期間よりも長い間、シェーダエンジンモジュールにおいてより重い処理ワークロードを示す場合に、第2のクロック信号の周波数を減少させて、非シェーダエンジンモジュールがクロックされる速度を低減させる。例えば、性能カウンタデータが、所定期間よりも長い間、非シェーダエンジンモジュールにおいてより重い処理ワークロードを示す場合に、第1のクロック信号の周波数を減少させて、シェーダエンジンモジュールがクロックされる速度を低減させる。例えば、性能カウンタデータが、シェーダエンジンモジュールと非シェーダエンジンモジュールとの間の処理ワークロードの差が、所定範囲(本明細書では「ガードバンド」として呼ばれることもある)内にあることを示す場合に、第1のクロック信号及び第2のクロック信号が同じ周波数(例えば、入力クロック信号の周波数)に設定される。
【0009】
図1は、それぞれ異なる構成可能なクロック信号でクロックされる、構成要素、シェーダエンジンモジュール(SE)及び非シェーダエンジンモジュール(nSE)の異なるグループを有する例示的なGPU100を示す図である。
【0010】
いくつかの実施形態では、GPU100は、例えば組み込みシステム、モバイルデバイス、パーソナルコンピュータ、サーバ、ワークステーション又はゲームコンソール等のように、少なくとも1つの中央処理ユニット(CPU)、メモリデバイス及び記憶デバイスを含む処理システムに含まれる。GPU100は、処理システムに結合された電子画面に表示される画像をレンダリングする目的で、高周波で、数学的計算を実行するように構成された特殊な電子デバイスである。
【0011】
GPU内のハードウェア構成要素は、画像レンダリングのために必要とされる数学的計算を実行する特定の目的のために設計されているため、GPUは、概して、一般的な目的の計算を処理するように設計されたCPUよりも高速且つ効率を有するグラフィックス処理タスクを実行する傾向がある。従来のGPUでは、システムの全ての構成要素は、単一のユニバーサルクロック信号を使用してクロックされる。一例では、従来のGPUは、クロックソース、コントローラ、SE及びnSEを含む。従来のGPUのコントローラは、クロックソースを直接制御して、クロックソースによって出力されるクロック信号の周波数を調整する。クロック信号は、従来のGPUのSE及びnSEの両方をクロックするために使用されるクロック信号のみである。従来のGPUのクロック信号は、Hツリー又はメッシュクロック分配ネットワークを介してSE及びnSEに分配され、これにより、クロック信号のルーティングが、SE及びnSEの各構成要素に対して等しい伝播遅延で発生することを確実とし、従来のGPUのSEとnSEとの間の同期タイミング関係を作り出す。しかしながら、SE及びnSEの両方をクロックするための単一のユニバーサルクロック信号の使用に起因して、それぞれのワークロードに基づき、SEとnSEとの間で動的周波数スケーリングを実行することができず、熱及び電力消費の非効率性を作り出す。対照的に、GPU100は、分割器によって出力される個別に制御可能なクロック信号でクロックされるSE及びnSEを含み、それらのそれぞれのワークロードに基づいて、SEとnSEとの間で動的周波数スケーリングが実行されることを可能にし、ユニバーサルクロックスキームを有する従来のGPUと比較して、熱効率及び電力消費効率を改善する。
【0012】
GPU100は、位相同期ループ(PLL)モジュール102と、SE104と、nSE106と、コントローラ108と、性能カウンタ109と、分割器110と、先入先出(first-in-first-out、FIFO)メモリモジュール112と、を含む。GPU100では、SE104の全ては、第1のクロック信号CLKAを使用してクロックされ、nSE106の全ては、第2のクロック信号CLKBを使用してクロックされ、その結果、クロック周波数スケーリングは、SE104とnSE106との間に実装され得る。いくつかの実施形態では、SE104の各々は、例えば、幾何学プロセッサ、プリミティブユニット、複数の計算ユニット、ラスタライザ、レンダ出力ユニット(render output units、ROP)、L1キャッシュを含む。いくつかの実施形態では、nSE106は、コマンドプロセッサ、シェーダリソースアービタ、ディスパッチコントローラ、L1キャッシュ、L2キャッシュ、リングバッファ等のメモリリソースを含む。FIFOメモリモジュール112は、SE104とnSE106との間でデータを渡す。SE104とnSE106との間の位相関係が既知であるため、FIFOメモリモジュール112は、SE104のクロックドメインとnSE106のクロックドメインとの間のデータ送信を同期させる必要がなく、したがって、シンクロナイザを必要としない。
【0013】
PLLモジュール102は、指定された周波数を有するクロック信号CLKを生成し、分割器110の入力に出力する。クロック信号CLKを受信し、且つ、クロック信号CLKA及びCLKBを出力する分割器110は、SE104及びnSE106をクロックする。CLKA及びCLKBのそれぞれの周波数は、コントローラ108によって分割器110に出力される制御信号S0及びS1に基づいて設定される。CLKA及びCLKBの周波数は、クロック信号CLKの指定された周波数に基づいて設定される。例えば、いくつかの実施形態では、CLKA及びCLKBは、制御信号S0及びS1に個々に応じて、分割器110によるCLKの周波数又はCLK/2の周波数の何れかに設定される。いくつかの実施形態では、各制御信号S0及びS1は、複数ビットの制御データを搬送し、複数のフリップフロップは、分割器110内に含まれ、3以上のクロック周波数(例えば、CLK、CLK/2、CLK/4、CLK/8等)のうち何れかがCLKA及びCLKBに対して選択されることを可能にする。それゆえ、分割器110は、SE104及びnSE106が同じ周波数又は異なる周波数のクロック信号で選択的にクロックされることを可能にする。
【0014】
いくつかの実施形態では、コントローラ108は、SE104及びnSE106に関連する性能カウンタから取得された性能カウンタデータのそれぞれのセットに基づいて、分割器110によって出力される、CLKAとCLKBとの間の周波数の比を判定するように構成されている。コントローラ108は、性能カウンタ109から性能カウンタデータ、SE及びnSEを受信し、性能カウンタデータに基づいて、制御信号S0及びS1の値を設定する。いくつかの実施形態では、各性能カウンタ109は、GPU100内で発生する1つ以上のイベントに対応する性能カウンタ値を含む、性能カウンタデータを記憶するハードウェア又はソフトウェアにおいて実装されるレジスタである。いくつかの実施形態では、利用カウンタ、アクティブ静電容量(Cac)ビジー信号又はストリーミング性能カウンタは、追加的又は代替的に、SE104内で発生するアクティビティを識別及び定量化するために使用される。一例では、コントローラ108に結合された性能カウンタの第1のセットは、SE104内のアクティビティを示す、第1の性能カウンタデータ、SEを生成及び記憶する。いくつかの実施形態では、第1の性能カウンタデータ、SEは、性能カウンタの第1のセットから受信された性能カウンタ値を含むか、又は、性能カウンタ値の合計であり、性能カウンタの第1のセットは、SE104で発生する特定のイベントのそれぞれの量を追跡する。いくつかの実施形態では、SE104は、リングバッファ(ring buffer、RB)及びL1キャッシュを含む。いくつかの実施形態では、性能カウンタ及び対応する性能カウンタデータ、SEは、ベクトル及びスカラー算術論理ユニット(arithmetic logic unit、ALU)アクティビティ、ピクセル速度、L1キャッシュヒット速度、及び/又は、シェーダメモリアクセス速度を含む若しくは別様に示す。例えば、コントローラ108に結合された性能カウンタの第2のセットは、nSE106のうち1つ以上におけるアクティビティを示す、第2の性能カウンタデータ、nSEを生成及び記憶する。いくつかの実施形態では、第2の性能カウンタデータ、nSEは、性能カウンタの第2のセットから受信された性能カウンタ値の合計を含むか、又は、性能カウンタ値の合計であり、性能カウンタの第2のセットは、コマンドプロセッサ、シェーダリソースアービタ、ディスパッチコントローラ及びL2キャッシュ等のメモリリソース等の1つ以上の非シェーダ構成要素で発生する特定のイベントのそれぞれの量を追跡する。いくつかの実施形態では、性能カウンタ及び対応する性能カウンタデータ、nSEpは、頂点速度、プリミティブ速度及び/又はL2キャッシュアクセス速度を含む若しくは別様に示す。コントローラ108は、第1の性能カウンタデータと第2の性能カウンタデータとの間の差、SE-nSEを計算する。いくつかの実施形態では、未加工の差SE-nSEを使用するのではなく、ヒステリシスを使用して、過渡的なグリッチに基づくスイッチングクロック信号を回避するために、経時的に計算された差の値をフィルタリングする。コントローラ108は、差の値を定期的に更新(すなわち、再計算)し、経時的な差の値に基づいて、制御信号S0及びS1の値を選択する。例えば、コントローラ108は、差が、本明細書ではガードバンドと呼ばれる上限閾値と下限閾値との間の所定の値の範囲内にあると判定した場合に、コントローラ108は、CLKA及びCLKBが1:1のクロック比(すなわち、CLKAの周波数がCLKBの周波数に等しい)を有するようにS0及びS1の値を選択する。いくつかの実施形態では、ガードバンドを定義する差の値の範囲は、スイッチングレイテンシ又はクロック周波数の変化を強制するために必要とされる時間に基づいて選択される。コントローラ108は、所定の連続的な期間よりも長い間、差が、ガードバンドの上限閾値よりも高いと判定した場合に、概して、シェーダを多用するワークロードがGPU100によって処理されていることを示し、コントローラ108は、CLKAがCLKBよりも高い周波数を有するようなS0及びS1の値を選択する(例えば、CLKAの周波数をCLKの周波数に、及び、CLKBの周波数をCLK/2の周波数に設定する)。このようにして、GPU100のワークロードが比較的高い非シェーダエンジン(例えば、メモリ)アクティビティを伴う場合に、SE104のクロックが縮小され(すなわち、周波数が低減され)、一方でGPU100のワークロードが比較的高いシェーダアクティビティを伴う場合に、nSE106のクロックが縮小され(すなわち、周波数が低減され)、それによって、単一のユニバーサルクロックがSE及びnSEの両方に関して使用される実装と比較して、GPU100の電力消費を低減させる。
【0015】
いくつかの実施形態では、GPU100は、各々がシェーダエンジンモジュールを有する、複数のシェーダエンジンを含む。いくつかの実施形態では、GPU100の所定のシェーダエンジンに含まれるシェーダエンジンモジュールは、GPUの全てのシェーダエンジンにわたって複製又はクローン化される。かかる実施形態では、非対称ワークロードを各シェーダエンジンに割り当てることができ、本明細書において説明するクロック周波数スケーリング方法がグローバルスキームに従って適用され、その結果、GPU100内のそれぞれのシェーダエンジンのシェーダエンジンモジュールに供給されるクロック信号のクロック周波数を個別に選択可能である。他の実施形態では、GPU100のシェーダエンジンには対称ワークロードが割り当てられ、本明細書おいて説明するクロック周波数スケーリング方法に従って同じクロック周波数を使用して全てクロックされる。
【0016】
図2は、クロック周波数スケーリングが、SE及びnSEの各タイル上に配置された分割器を介して、SEとnSEとの間に実装される例示的なGPU200を示す図である。GPU200は、位相同期ループ(PLL)モジュール202と、SE204と、nSE206と、コントローラ208と、性能カウンタ209と、FIFOメモリモジュール212と、クロックメッシュ214と、を含む。いくつかの実施形態では、SE204の各々は、例えば、幾何学プロセッサ、プリミティブユニット、複数の計算ユニット、ラスタライザ、レンダ出力ユニット(ROP)、リングバッファ(RB)、L1キャッシュを含む。いくつかの実施形態では、nSE206は、コマンドプロセッサ、シェーダリソースアービタ、ディスパッチコントローラ、L2キャッシュ等のメモリリソースを含む。
【0017】
SE204は、N個のタイル216上に実装され、各タイル216は、それぞれの分割器210を含む。ここで、「タイル」は、処理及び/又はメモリ要素(例えば、計算ユニット、メモリセル等)の空間コヒーレントグループを指し、SE204及びnSE206の要素は、本実施形態において、かかるタイルに分割される。nSE206は、M個のタイル217上に実装され、各タイル217は、それぞれの分割器211を含む。いくつかの実施形態では、分割器210及び分割器211の各々は、図3の分割器310に対応するが、単一のクロック信号出力のみを含むように変更され、オプションで、追加の選択可能なクロック分割のための追加のフリップフロップを含むように変更される。
【0018】
PLLモジュール202は、クロック信号CLKを生成し、クロックメッシュ214の入力に出力する。クロックメッシュ214は、クロック信号CLKを複数の出力に分配し、各々が、それぞれの分割器210又は分割器211のクロック入力にそれぞれ結合される。分割器210及び211の各々は、クロック信号CLKを受信し、CLK、CLK/2、CLK/4、又は、CLKの周波数の別の所望の分割から選択される、選択された周波数を有するクロック信号を出力して、それぞれ、それらの対応するタイル216及び217でSE204及びnSE206をクロックする。本実施形態では、全ての分割器210は、同じクロック信号CLKAを出力し、一方で、全ての分割器211は、同じクロック信号CLKBを出力し、CLKA及びCLKBは、コントローラ208によって出力される制御信号S0及びS1の値に応じて、同じ周波数又は異なる周波数を有することになる。例えば、周波数CLKAは、CLKBの周波数から独立して制御可能である。例えば、CLKAのクロック信号周波数は、コントローラ208によって分割器210に出力される制御信号S0に基づいて選択され、CLKBに対するクロック信号周波数は、コントローラ208によって分割器211に出力される制御信号S1に基づいて選択される。いくつかの実施形態では、各制御信号S0及びS1は、複数ビットの制御データを搬送し、複数のフリップフロップは、分割器210及び211の各々に含まれ、3以上のクロック周波数(例えば、CLK、CLK/2、CLK/4、CLK/8等)のうち何れかがSE204及びnSE206をクロックするために選択されるのを可能にする。それゆえ、分割器210及び分割器211は、SE204及びnSE206が同じ周波数又は異なる周波数のクロック信号で選択的にクロックされるのを可能にする。
【0019】
いくつかの実施形態では、コントローラ208は、SE204及びnSE206に関連する性能カウンタから取得された性能カウンタデータのそれぞれのセットに基づいて、それぞれ、分割器210及び分割器211によって出力される、CLKAとCLKBとの間の周波数の比を判定するように構成されている。コントローラ208は、上記の図1に関連して説明したように、性能カウンタ209の性能カウンタの第1及び第2のセットから、第1の性能カウンタデータ、SE、及び、第2の性能カウンタデータnSEを受信し、性能カウンタデータに基づいて、制御信号S0及びS1の値を設定する。コントローラ208は、第1の性能カウンタデータと第2の性能カウンタデータとの間の差、SE-nSEを計算する。コントローラ208は、差の値を定期的に更新(すなわち、再計算)し、経時的な差の値に基づいて、制御信号S0及びS1の値を選択する。例えば、コントローラ208は、差が所定のガードバンド内にあると判定した場合に、コントローラ208は、CLKA及びCLKBが1:1のクロック比(すなわち、CLKAの周波数がCLKBの周波数に等しい)を有するようにS0及びS1の値を選択する。コントローラ208は、所定の連続的な期間よりも長い間、差がガードバンドの上限閾値よりも高いと判定した場合に、概して、シェーダを多用するワークロードがGPU200によって処理されていることを示し、コントローラ208は、CLKAがCLKBよりも高い周波数を有するようなS0及びS1の値を選択する(例えば、CLKAの周波数をCLKの周波数に、及び、CLKBの周波数をCLK/2の周波数に設定する)。このようにして、GPU200のワークロードが比較的高い非シェーダエンジン(例えば、メモリ)アクティビティを伴う場合に、SE204のクロックが縮小され(すなわち、周波数が低減され)、一方で、GPU200のワークロードが比較的高いシェーダアクティビティを伴う場合に、nSE206のクロックが縮小され(すなわち、周波数が低減され)、それによって、単一の、ユニバーサルクロックがSE及びnSEの両方に関して使用される実装と比較して、GPU200の電力消費を低減させる。図1のGPU100と比較した場合、GPU200は、概して、GPU200の比較的低いクロックツリー分岐によってオフセットされた、分割器210、211とコントローラ208との間の距離に起因して、クロック周波数変化に関するレイテンシを増加させる。
【0020】
図3は、分割器310の例示的なブロック図を示す。いくつかの実施形態では、分割器310は、図1の分割器110並びに図2の分割器210及び211のうち1つ以上に全体的又は部分的に対応する。例示するように、分割器310は、遅延回路322と、フリップフロップ320と、第1のマルチプレクサ324と、第2のマルチプレクサ326と、を含む。分割器310は、クロック入力でクロック信号CLKを受信する。次いで、クロック信号CLKは、遅延回路322及びフリップフロップ320によって受信される。フリップフロップ320は、クロック信号CLKの周波数を半分にして、クロック信号CLK/2を生成する。遅延回路322は、クロック信号CLKに遅延量を提供し、これは、クロック信号CLK/2を生成するためにフリップフロップ320によってクロック信号CLKに導入された遅延に等しく、その結果、遅延回路322によって出力されたクロック信号CLKは、フリップフロップ320によって出力されるクロック信号CLK/2と同期される。第1のマルチプレクサ324は、遅延クロック信号CLK、クロック信号CLK/2及び制御信号S0を受信する。第1のマルチプレクサ324は、制御信号S0に基づいて選択された、遅延クロック信号CLK及びクロック信号CLK/2のうち選択された何れかであるクロック信号CLKAを出力する。第2のマルチプレクサ326は、遅延クロック信号CLK、クロック信号CLK/2及び制御信号S1を受信する。第2のマルチプレクサ326は、制御信号S1に基づいて選択された遅延クロック信号CLK及びクロック信号CLK/2のうち選択された何れかであるクロック信号CLKBを出力する。マルチプレクサ324及び326は、それぞれ、外部コントローラから制御信号S0及びS1を受信する。いくつかの実施形態では、外部コントローラは、図1及び図2のコントローラ108及び208の何れかに対応する。
【0021】
図4は、上述したように、第1及び第2の性能カウンタデータの間の差402、SE-nSEが、所定のガードバンド404の上限閾値A及び下限閾値Bに対して経時的にどのように変化するかを示すグラフ400である。グラフ400は、図1のGPU100の例示的な実装形態に関して説明されているが、図2のGPU200にも適用可能である。
【0022】
点406から始まると、コントローラ108は、性能カウンタデータSE及びnSEが性能カウンタ109によってコントローラ108に提供されることに基づいて、差SE-nSEを計算する。いくつかの実施形態では、コントローラ108は、差402を定期的に計算し、その結果、差402の計算値がコントローラ108によって定期的に更新される。いくつかの実施形態では、コントローラ108は、新しい性能カウンタデータSE及びnSEが、性能カウンタ109によってコントローラ108に提供される毎に、差402を再計算する。本実施形態では、分割器110によるCLKA及びCLKB出力の周波数は、点406において等しいと仮定される。
【0023】
点408において、コントローラ108は、差402が、所定期間よりも長い間、ガードバンド404の下限閾値B未満であると判定し、この場合、グラフィックス処理ユニット100によって処理されているワークロードの大部分が、所定期間よりも長い間、nSE106によって実行されていることを示す。差402が所定期間よりも長い間、下限閾値B未満であると判定したことに応じて、コントローラ108は、制御信号S1を変更して、nSE106をクロックするために使用されるクロック信号CLKBの周波数を、CLK/2等のより低い周波数に減少させる。
【0024】
点410において、コントローラ108は、差402が下限閾値Bを上回り交差していると判定し、この場合、nSE106とSE104との間のよりバランスのとれたワークロードを示す。差402が下限閾値Bを上回り交差すると判したことに応じて、コントローラ108は、制御信号S1を変更して、クロック信号CLKBの周波数を、SE104をクロックするために使用されるクロック信号CLKAの周波数と等しくなるように増加させる。
【0025】
点412において、コントローラ108は、差402がガードバンド404の上限閾値Aを上回り交差すると判定し、この場合、GPU100によって処理されるワークロードの大部分がSE104によって実行されていることを示す。
【0026】
点414において、コントローラ108は、差402が、所定期間よりも長い間、上限閾値Aを上回ったままであると判定する。差402が、所定期間よりも長い間、ガードバンド404の上限閾値Aを上回ったままであると判定したことに応じて、コントローラ108は、制御信号S0を変更して、クロック信号CLKAの周波数を、CLK/2等のより低い周波数に減少させる。
【0027】
点416において、コントローラ108は、差402が上限閾値Aよりも高い状態から下限閾値Bよりも低い状態に低下したと判定し、この場合、処理ワークロードが、主にSE104による処理から主にnSE106による処理に急にシフトしたことを示す。差402が上限閾値Aよりも高い状態から下限閾値Bよりも低い状態に低下したと判定したことに応じて、コントローラ108は、CLKAの周波数を増加させるために制御信号S0を変更して、CLKBの周波数に一致させる。
【0028】
点418において、コントローラ108は、差402が、所定期間よりも長い間、下限閾値Bを下回ったままであることを判定する。これに応じて、コントローラは、制御信号S1を変更して、CLKBの周波数を減少させる。
【0029】
図5は、いくつかの実施形態による、GPUのSE及びnSEに供給されるクロック信号を選択的に変更する方法500の例示的なプロセスフローを示す。方法500は、図1のGPU100及びその構成要素における例示的な実装に関して説明される。
【0030】
ブロック502において、性能カウンタ109の第1のセットは、SE104における監視されたアクティビティに基づいて、第1の性能カウンタデータ、SEを生成する。いくつかの実施形態では、第1の性能カウンタデータ、SEは、スカラー及びベクトルALUアクティビティ、ピクセル速度、L1キャッシュヒット速度、並びに/又は、シェーダメモリアクセス速度を含むか示す。
【0031】
ブロック504において、性能カウンタ109の第2のセットは、nSE106における監視されたアクティビティに基づいて、第2の性能カウンタ、nSEデータを生成する。いくつかの実施形態では、第2の性能カウンタデータ、SEは、頂点速度、プリミティブ速度、及び/又は、L2キャッシュアクセス速度を含むか示す。
【0032】
ブロック506において、コントローラ108は、SE性能カウンタデータ、SEと、nSE性能カウンタデータ、nSEとの間の差、SE-nSEを計算する。いくつかの実施形態では、SEは、SE104で発生する様々な定義されたイベントについてのカウントに対応する複数の性能カウンタ値の合計であり、nSEは、nSE106において発生する様々な定義されたイベントのカウントに対応する複数の性能カウンタ値の合計である。したがって、差、SE-nSEは、SE104とnSE106との間の処理ワークロードにおける差を表す。
【0033】
ブロック508において、コントローラ108は、SE-nSEが、所定の閾値期間よりも長い間、所定のガードバンドの下限閾値を下回ったままであるかどうかを判定する。SE-nSEが、所定期間よりも長い間、下限閾値を下回ったままである場合に、方法500は、ブロック510に進む。SE-nSEが下限閾値を上回る又は所定期間よりも長い間、下限閾値を下回ったままではない場合に、方法500は、ブロック512に進む。
【0034】
ブロック510において、コントローラ108は、nSE106に提供される1つ以上のクロック信号の周波数を減少させる。いくつかの実施形態では、nSE106に提供されるクロック信号の周波数を減少させるために、コントローラ108は、制御信号S1を変更して、より低い周波数でクロック信号を分割器110に出力させる。いくつかの実施形態では、クロック信号S1のかかる変更は、分割器110によって出力されたクロック信号CLKBの周波数を、分割器110のクロック信号入力において受信されたクロック信号CLKの周波数からその周波数の半分(すなわち、CLK/2)まで変化させる。
【0035】
ブロック512において、コントローラ108は、SE-nSEが、所定の閾値期間よりも長い間、所定のガードバンドの上限閾値を上回ったままであるかどうかを判定する。SE-nSEが、所定期間よりも長い間、上限閾値を上回ったままである場合に、方法500は、ブロック514に進む。SE-nSEが上限閾値を下回る又は所定期間よりも長い間、上限閾値を上回ったままではない場合に、方法500は、ブロック516に進む。いくつかの実施形態では、ガードバンドの上限閾値に関連する所定の閾値期間は、ガードバンドの下限閾値に関連する所定の閾値期間と同じであるが、一方で、他の実施形態では、これらの所定の閾値期間が異なる。
【0036】
ブロック514において、コントローラ108は、SE構成要素104に提供される1つ以上のクロック信号の周波数を減少させる。いくつかの実施形態では、SE構成要素104に提供されるクロック信号の周波数を減少させるために、コントローラ108は、制御信号S0を変更して、より低い周波数でクロック信号を分割器110に出力させる。いくつかの実施形態では、クロック信号S0のかかる変更は、分割器110によって出力されたクロック信号CLKAの周波数を、分割器110のクロック信号入力において受信されたクロック信号CLKの周波数からその周波数の半分(すなわち、CLK/2)まで変化させる。
【0037】
ブロック516において、コントローラ108は、SE104及びnSE106に提供されるクロック信号に対して1:1の周波数比を設定する。いくつかの実施形態では、コントローラ108は、制御信号S0及びS1の一方又は両方を変更して、分割器110によって出力されたクロック信号CLKA及びCLKBの周波数を、それぞれ、SE104及びnSE106に同じ周波数であるように変更する。いくつかの実施形態では、コントローラ108は、クロック信号CLKA及びCLKBの周波数が、PLL102によって分割器110に入力されるクロック信号CLKの周波数に等しくなるように、制御信号S0及びS1を変更する。
【0038】
方法500は、図1のGPU100に関連して説明されているが、当業者によって、方法500が、図2のGPU200にも適用可能であることが理解されよう。
【0039】
本明細書に開示したように、いくつかの実施形態では、方法は、1つ以上のシェーダエンジンモジュールの第1のワークロード及び1つ以上の非シェーダエンジンモジュールの第2のワークロードに基づいて、1つ以上のシェーダエンジンモジュールによって受信された第1のクロック信号の第1の周波数、及び、グラフィックス処理ユニットの1つ以上の非シェーダエンジンモジュールによって受信された第2のクロック信号の第2の周波数のうち少なくとも1つを独立して調整することを含む。一態様では、第1の周波数及び第2の周波数のうち少なくとも1つを独立して調整することは、第1のワークロードを示す第1の性能カウンタデータ、及び、第2のワークロードを示す第2の性能カウンタデータに基づいており、この方法は、第1の性能カウンタデータと第2の性能カウンタデータとの間の差を計算することを更に含み、第1の周波数及び第2の周波数のうち少なくとも1つを独立して調整することは、差に基づいて実行される。別の態様では、方法は、差が、所定期間よりも長い間、所定のガードバンドの下限閾値未満であると判定することを含み、第1の周波数及び第2の周波数のうち少なくとも1つを独立して調整することは、第2のクロック信号の第2の周波数を調整することなく、第1のクロック信号の第1の周波数を独立して調整することを含む。
【0040】
一態様では、方法は、差が、所定期間よりも長い間、所定のガードバンドの上限閾値よりも大きいと判定することを含み、第1の周波数及び第2の周波数のうち少なくとも1つを独立して調整することは、第1のクロック信号の第1の周波数を調整することなく、第2のクロック信号の第2の周波数を独立して調整することを含む。別の態様では、第1の周波数及び第2の周波数のうち少なくとも1つを独立して調整することは、差が所定のガードバンドの上限閾値と下限閾値との間にあることを判定することを含み、第1の周波数及び第2の周波数のうち少なくとも1つを独立して調整することは、第1のクロック信号の第1の周波数を、第2のクロック信号の第2の周波数に一致するように調整することを含む。別の態様では、第1の周波数及び第2の周波数のうち少なくとも1つを独立して調整することは、少なくとも1つの制御信号を分割器に送信することと、分割器を用いて、少なくとも1つの制御信号に基づいて、第1の周波数を有する第1のクロック信号を1つ以上のシェーダエンジンモジュールに送信することと、分割器を用いて、少なくとも1つの制御信号に基づいて、第2の周波数を有する第2のクロック信号を1つ以上の非シェーダエンジンモジュールに送信することと、を含む。更なる別の態様では、第1の周波数及び第2の周波数のうちの少なくとも1つを独立して調整することは、第1の制御信号を第1の複数の分割器に送信することと、第2の制御信号を第2の複数の分割器に送信することと、第1の複数の分割器を用いて、第1の制御信号に基づいて、第1の周波数を有する第1のクロック信号を1つ以上のシェーダエンジンモジュールに送信することと、第2の複数の分割器を用いて、第2の制御信号に基づいて、第2の周波数を有する第2のクロック信号を1つ以上の非シェーダエンジンモジュールに送信することと、を含む。
【0041】
いくつかの実施形態では、グラフィックス処理ユニット(GPU)は、分割器と、分割器に結合され、分割器から第1のクロック信号を受信するように構成された複数のシェーダエンジンモジュールと、分割器に結合され、分割器から第2のクロック信号を受信するように構成された複数の非シェーダエンジンモジュールと、第1の制御信号及び第2の制御信号を分割器に出力して、複数のシェーダエンジンモジュールの第1の検出されたワークロード及び複数の非シェーダエンジンモジュールの第2の検出されたワークロードに基づいて、第1のクロック信号の第1の周波数及び第2のクロック信号の第2の周波数を選択的に制御するように構成されたコントローラと、を含む。一態様では、GPUは、複数のシェーダエンジンモジュールの第1の検出されたワークロードを示す第1の性能カウンタデータを生成するように構成された第1の複数の性能カウンタと、複数の非シェーダエンジンモジュールの第2の検出されたワークロードを示す第2の性能カウンタデータを生成するように構成された第2の複数の性能カウンタと、を含む。
【0042】
一態様では、コントローラは、第1の複数の性能カウンタから第1の性能カウンタデータを受信することと、第2の複数の性能カウンタから第2の性能カウンタデータを受信することと、第1の性能カウンタデータ及び第2の性能カウンタデータに基づいて、第1の周波数及び第2の周波数のうち少なくとも1つを独立して調整することと、を行うように更に構成されている。別の態様では、コントローラは、第1の性能カウンタデータと第2の性能カウンタデータとの間の差を計算することと、差に基づいて、第1の周波数及び第2の周波数のうち少なくとも1つを独立して調整することと、を行うように更に構成されている。更なる別の態様では、コントローラは、差が、所定期間よりも長い間、所定のガードバンドの下限閾値未満であると判定することと、第2のクロック信号の第2の周波数を調整することなく、第1のクロック信号の第1の周波数を独立して調整することと、を行うように更に構成されている。別の態様では、コントローラは、差が、所定期間よりも長い間、所定のガードバンドの上限閾値よりも大きいと判定することと、第1のクロック信号の第1の周波数を調整することなく、第2のクロック信号の第2の周波数を独立して調整することと、を行うように更に構成されている。更なる別の態様では、コントローラは、差が所定のガードバンドの上限閾値と下限閾値との間にあると判定することと、第1のクロック信号の第1の周波数を、第2のクロック信号の第2の周波数に一致させるように調整することと、を行うように更に構成されている。
【0043】
いくつかの実施形態では、グラフィックス処理ユニット(GPU)は、複数の分割器と、複数の分割器の第1のサブセットから、第1の周波数を有する第1のクロック信号を受信するように構成された複数のシェーダエンジンモジュールと、複数の分割器の第2のサブセットから、第2の周波数を有する第2のクロック信号を受信するように構成された複数の非シェーダエンジンモジュールと、複数のシェーダエンジンモジュールの第1の検出されたワークロード及び複数の非シェーダエンジンモジュールの第2の検出されたワークロードに基づいて、第1の制御信号を複数の分割器の第1のサブセットに出力して、第1のクロック信号の第1の周波数を選択的に制御することと、第2の制御信号を複数の分割器の第2のサブセットに出力して、第2のクロック信号の第2の周波数を選択的に制御することと、を行うように構成されたコントローラと、を含む。別の態様では、GPUは、複数のシェーダエンジンモジュールの第1の検出されたワークロードを示す第1の性能カウンタデータを生成するように構成された第1の複数の性能カウンタと、複数の非シェーダエンジンモジュールの第2の検出されたワークロードを示す第2の性能カウンタデータを生成するように構成された第2の複数の性能カウンタと、を含む。
【0044】
一態様では、コントローラは、第1の複数の性能カウンタから第1の性能カウンタデータを受信することと、第2の複数の性能カウンタから第2の性能カウンタデータを受信することと、第1の性能カウンタデータと第2の性能カウンタデータとの間の差を計算することと、差に基づいて、第1の周波数及び第2の周波数のうち少なくとも1つを独立して調整することと、を行うように更に構成されている。更なる別の態様では、コントローラは、差が、所定期間よりも長い間、所定のガードバンドの下限閾値未満であると判定することと、第2の周波数を調整することなく、第1の周波数を独立して調整することと、を行うように更に構成されている。別の態様では、コントローラは、差が、所定期間よりも長い間、所定のガードバンドの上限閾値よりも大きいと判定することと、第1の周波数を調整することなく、第2の周波数を独立して調整することと、を行うように更に構成されている。別の態様では、コントローラは、差が所定のガードバンドの上限閾値と下限閾値との間にあると判定することと、第1の周波数を第2の周波数に一致させるように調整することと、を行うように更に構成されている。
【0045】
いくつかの実施形態では、上述した装置及び技術は、図1及び図2を参照して上述したGPU等の1つ以上の集積回路(IC)デバイス(集積回路パッケージ又はマイクロチップとも呼ばれる)を含むシステムに実装される。電子設計自動化(EDA)及びコンピュータ支援設計(CAD)ソフトウェアツールは、これらのICデバイスの設計及び製造に使用される。これらの設計ツールは、典型的には、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計するか又は適応させるためのプロセスの少なくとも一部を実行するために、1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するための、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含み得る。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上の段階を表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶され、そこからアクセスされる。
【0046】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0047】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【0048】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0049】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
図1
図2
図3
図4
図5