(57)【特許請求の範囲】
【請求項１】
いくつかの連続する測定サイクルに関する閾値との第１関係を有するグラフィックス処理ユニット（ＧＰＵ）における現在のワークロードの処理に関連する第１パフォーマンスメトリクスを識別することであって、前記いくつかの連続する測定サイクルは、現在の測定サイクルと、少なくとも１つの以前の測定サイクルと、を含み、前記第１パフォーマンスメトリクスは、現在のワークロードを処理している間のＧＰＵパフォーマンスを示す、ことと、
前記連続する測定サイクルの数がアップヒステリシスレベル及びダウンヒステリシスレベルの何れかを超えたことに応じて、前記現在のワークロードを処理する現在のコンピューティング環境のハードウェア構成を表すデータに基づいて、将来の測定サイクルで前記ＧＰＵに適用される推定された最適化を決定することと、
前記アップヒステリシスレベル及び前記ダウンヒステリシスレベルの何れかを調整することによって、前記将来の測定サイクルでの前記ＧＰＵの電力レベル設定を前記推定された最適化に基づいて調整することと、を含む、
方法。
【請求項２】
前記電力レベル設定を調整することは、前記ＧＰＵのコアクロック周波数及びメモリクロック周波数のうち少なくとも一方を変更することを含む、
請求項１の方法。
【請求項３】
前記第１パフォーマンスメトリクスを識別することは、前記ＧＰＵの平均利用率、前記ＧＰＵの平均動作温度、及び、前記現在の測定サイクルの間に消費された平均累積電力のうち少なくとも１つを識別することを含む、
請求項１の方法。
【請求項４】
前記第１パフォーマンスメトリクスを識別することは、前記現在の測定サイクルに関する前記ＧＰＵの現在の処理ワークロードと、前記将来の測定サイクルに関する前記ＧＰＵの予測された将来の処理ワークロードと、に基づいて、前記第１パフォーマンスメトリクスを識別することを含む、
請求項１の方法。
【請求項５】
前記電力レベル設定を調整することは、前記アップヒステリシスレベルを調整することを含む、
請求項１の方法。
【請求項６】
前記電力レベル設定を調整することは、前記ダウンヒステリシスレベルを調整することを含む、
請求項１の方法。
【請求項７】
前記ＧＰＵの電力レベル設定を調整することは、識別された前記第１パフォーマンスメトリクスとパフォーマンスメトリクス閾値との間の差に基づく前記ＧＰＵの現在の電力レベルの大きさによって、前記将来の測定サイクルでの電力レベル設定を調整することを含む、
請求項１の方法。
【請求項８】
実行可能命令のセットを具体化するコンピュータ可読記憶媒体であって、
前記実行可能命令のセットは、
いくつかの連続する測定サイクルに関する閾値との第１関係を有するグラフィックス処理ユニット（ＧＰＵ）における現在のワークロードの処理に関連する第１パフォーマンスメトリクスを識別することであって、前記いくつかの連続する測定サイクルは、現在の測定サイクルと、少なくとも１つの以前の測定サイクルと、を含み、前記第１パフォーマンスメトリクスは、現在のワークロードを処理している間のＧＰＵパフォーマンスを示す、ことと、
前記連続する測定サイクルの数がアップヒステリシスレベル及びダウンヒステリシスレベルの何れかを超えたことに応じて、
将来の測定サイクルで前記ＧＰＵに適用される推定された最適化を決定することと、
前記アップヒステリシスレベル及び前記ダウンヒステリシスレベルの何れかを調整することによって、前記推定された最適化に基づいて、前記将来の測定サイクルでの前記ＧＰＵの電力レベル設定を調整することと、
を行うようにプロセッサを操作する、
コンピュータ可読記憶媒体。
【請求項９】
前記電力レベル設定を調整することは、前記ＧＰＵのコアクロック周波数及びメモリクロック周波数のうち少なくとも一方を変更することを含む、
請求項８のコンピュータ可読記憶媒体。
【請求項１０】
前記第１パフォーマンスメトリクスを識別することは、前記ＧＰＵの平均利用率、前記ＧＰＵの平均動作温度、及び、前記現在の測定サイクルの間に消費された平均累積電力のうち少なくとも１つを識別することを含む、
請求項８のコンピュータ可読記憶媒体。
【請求項１１】
前記電力レベル設定を調整することは、前記アップヒステリシスレベルを調整することを含む、
請求項８のコンピュータ可読記憶媒体。
【請求項１２】
前記電力レベル設定を調整することは、前記ダウンヒステリシスレベルを調整することを含む、
請求項８のコンピュータ可読記憶媒体。
【請求項１３】
グラフィックス処理ユニット（ＧＰＵ）を備えるデバイスであって、
前記ＧＰＵは、
複数のコンピュートユニット（ＣＵ）を含むグラフィックスパイプラインと、
パフォーマンスモジュールと、
電力及びクロックコントローラモジュールと、を備え、
前記パフォーマンスモジュールは、
いくつかの連続する測定サイクルに関する閾値との第１関係を有する前記ＧＰＵにおける現在のワークロードの処理に関連する第１パフォーマンスメトリクスを識別することであって、前記いくつかの連続する測定サイクルは、現在の測定サイクルと、少なくとも１つの以前の測定サイクルと、を含み、前記第１パフォーマンスメトリクスは、現在のワークロードを処理している間のＧＰＵパフォーマンスを示す、ことと、
前記連続する測定サイクルの数がアップヒステリシスレベル及びダウンヒステリシスレベルの何れかを超えたことに応じて、前記デバイスのハードウェア構成を表すデータに基づいて、将来の測定サイクルで前記ＧＰＵに適用される推定された最適化を決定することと、を行い、
前記電力及びクロックコントローラモジュールは、
前記アップヒステリシスレベル及び前記ダウンヒステリシスレベルの何れかを調整することによって、前記推定された最適化に基づいて、前記ＧＰＵの電力レベル設定を調整する、
デバイス。
【請求項１４】
前記推定された最適化は、パフォーマンスが最適化された複数の設定と、省電力が最適化された複数の設定と、を含む事前定義された電力レベル設定のセットから選択される、
請求項１３のデバイス。
【請求項１５】
前記電力及びクロックコントローラモジュールは、前記推定された最適化に基づいて、前記ＧＰＵのコアクロック周波数及びメモリクロック周波数のうち少なくとも一方を調整するようにさらに構成されている、
請求項１４のデバイス。
【請求項１６】
前記パフォーマンスモジュールは、前記ＧＰＵの平均利用率、前記ＧＰＵの平均動作温度、及び、前記現在の測定サイクルの間に消費された平均累積電力のうち少なくとも１つを識別するようにさらに構成されている、
請求項１３のデバイス。
【請求項１７】
前記デバイスは、前記パフォーマンスモジュールでキャプチャされたセンサデータに基づいて前記第１パフォーマンスメトリクスを計算するように構成されたＧＰＵファームウェアをさらに備える、
請求項１３のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、電力管理に関し、より詳細には、グラフィックス処理ユニット（ＧＰＵ）における電力管理に関する。
【背景技術】
【０００２】
プロセッサは、消費電力を最適化することが望ましい環境においてますます使用されている。例えば、プロセッサは、バッテリ寿命を延ばすために消費電力を最小限に抑えることが望まれるコンピューティング対応スマートフォン、ラップトップコンピュータ、ポータブルゲーミングデバイス等の重要なコンポーネントである。プロセッサのグラフィック機能を高めるためにグラフィックス処理ユニット（ＧＰＵ）を組み込むこともプロセッサにとっては一般的である。ＧＰＵは、電子デバイスが複雑なグラフィックスを比較的高速で表示することを可能にし、これにより、ユーザエクスペリエンスを向上させる。しかしながら、ＧＰＵは、プロセッサの消費電力を増大させる場合がある。
【０００３】
添付図面を参照することによって本開示をより良く理解することができ、その多くの特徴及び利点が当業者に明らかになるであろう。異なる図面で同じ符号を使用している場合には、類似又は同一のアイテムを示している。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、適応電力制御を用いる処理システムのブロック図である。
【図２】いくつかの実施形態による、図１の処理システムにおいて動的電力レベル管理を行うための電力制御ループを示すブロック図である。
【図３】いくつかの実施形態による、図１の電力制御ループによって利用される様々な電力レベル調整係数を示す図である。
【図４】いくつかの実施形態による、適応電力制御を実行する方法のフロー図である。
【発明を実施するための形態】
【０００５】
図１〜４は、ＧＰＵが現在処理している特定のワークロードに応じてクロック及び電圧レベルを変更するように電力管理設定の調整を可能にすることによって、処理システムのＧＰＵにおける動的電力レベルを管理する技術を示している。各測定サイクルにおいて、ＧＰＵドライバは、測定されたハードウェアパフォーマンスメトリクス（例えば、前のサイクルで累積した平均利用、平均温度及び平均電力）と、現在のコンピューティング環境を表すデータ（例えば、システムによって要求されたワークロードのタイプ、パフォーマンス（例えば、フレーム毎秒（ＦＰＳ）、スループット又は単位時間毎の送信等）測定）との両方からの入力を取得して、次のサイクルで使用される電力レベル設定（すなわち、クロック周波数又は動作電圧等のＧＰＵの動作を管理する動作パラメータ）を計算する。いくつかの実施形態では、計算された設定は、クロックが周波数を変更可能なレート（アップヒステリシス／ダウンヒステリシス）、クロック周波数を変更するためのアクティビティ閾値等を含むことができる。
【０００６】
いくつかの実施形態では、動的電力レベル管理は、いくつかの連続する測定サイクルの間、処理システムにおいて処理中のワークロードに対応する第１パフォーマンスメトリクスを識別することを含む。いくつかの連続する定サイクルは、現在の測定サイクルと、少なくとも１つの前の測定サイクルと、を含む。連続する測定サイクルの数が最小ヒステリシス数を超えるという判別に基づいて、推定された最適化が、将来の測定サイクルのためにＧＰＵに適用されるように決定される。将来の測定サイクルに関するＧＰＵにおける電力レベル設定は、推定された最適化に基づいて調整される。例えば、異なる処理ワークロード及びハードウェア構成等を含むパフォーマンスメトリクスを考慮することによって、ＧＰＵは、電力設定を、現在処理中の特定のワークロードに対して動的に適応させることができる。
【０００７】
本明細書で開示される技術とは対照的に、従来のプロセッサは、事前に定義されたメトリクス及び閾値を用いて、静的な設定に基づいてＧＰＵの電力設定を変更することができる。しかしながら、このような従来の技術は、異なる動作環境（例えば、オペレーティングシステムの違い、周辺温度、異なるアプリケーションに関する様々なワークロード及び／又はランタイム中に発生するユースケース、異なるハードウェア構成等）を考慮していない。実行時のハードウェアパフォーマンスや特定の処理ワークロードの識別等の入力を含むメトリクスの考慮を可能にすることによって、本明細書で開示される技術は、ＧＰＵが、電力レベル設定を調整して、省電力及びパフォーマンスの向上の両方をより最適化することができる。
【０００８】
本明細書で使用される「処理ワークロード」という用語は、ＧＰＵが所定の時間間隔で行った作業のタイプ及び量を指し、ＧＰＵが所定の時間内に多くの作業を行うと、処理ワークロードが増大する。いくつかの実施形態では、処理ワークロードは、少なくとも２つのコンポーネント（すなわち、現在の処理ワークロードと、予測される将来の処理ワークロードと）を含む。現在の処理ワークロードは、現在の処理ワークロードが測定されたときにＧＰＵが現在経験している処理ワークロード、又は、ＧＰＵが比較的近い過去に経験した処理ワークロードを指す。いくつかの実施形態では、現在の処理ワークロードは、ＧＰＵの１つ以上の個々のモジュールにおけるアクティビティの量（例えば、ＧＰＵのプロセッサコアにおいて所定時間に亘ってアクティブなコンピュートユニットと、アイドルなコンピュートユニットとの割合）に基づいて識別される。予測される将来の処理ワークロードは、ＧＰＵが比較的近い将来に経験することが予測される処理ワークロードを指す。いくつかの実施形態では、予測される将来の処理ワークロードは、ＧＰＵにおいて実行するようにスケジューリングされたいくつかのスレッドに基づいて識別される。
【０００９】
図１は、いくつかの実施形態による、処理システム１００のブロック図である。処理システムは、中央処理装置（ＣＰＵ）１０４における１つ以上の汎用プロセッサコア（図示省略）等の他のシステムコンポーネントに接続されたグラフィックス処理ユニット（ＧＰＵ）１０２と、コンピュータ可読記憶媒体１０６又は図に示されていない１つ以上の他のモジュール（例えば、キャッシュを形成するように構成されたメモリモジュールやインタフェースモジュール（例えば、ノースブリッジ又はサウスブリッジ）等）と、を含む。例えば、様々な実施形態では、ＧＰＵ１０２は、フレームバッファとして動作するランダムアクセスメモリ（ＲＡＭ）等のＧＰＵメモリ（図示省略）に接続されている。ＧＰＵ１０２は、コンピュータ、サーバ、コンピュータ対応携帯電話、ゲームコンソール等の様々な電子デバイスの何れかの一部であってもよい。概して、コンピュータ可読記憶媒体１０６は、処理システム１００に命令及び／又はデータを提供するために使用中に処理システム１００によってアクセス可能な任意の記憶媒体を含む。
【００１０】
コンピュータ可読記憶媒体１０６は、オペレーティングシステム（ＯＳ）１０８と、ＧＰＵドライバ１１０と、ＧＰＵファームウェア１１２と、を記憶する。オペレーティングシステム１０８、ＧＰＵドライバ１１０及びＧＰＵファームウェア１１２の各々は、処理システム１００において実行されると、本明細書で説明する動作を実施する命令を含む。一実施形態において、ＯＳ１０８及びＧＰＵドライバ１１０は、ＣＰＵ１０４において実行され、ＧＰＵファームウェアは、ＧＰＵ１０２において（例えば、ＧＰＵ１０２の１つ以上のプロセッサコア（図示省略）において）実行される。他の実施形態では、ＯＳ１０８は、ＣＰＵ１０４において実行され、ＧＰＵドライバ１１０及びＧＰＵファームウェア１１２は、ＧＰＵ１０２において（例えば、ＧＰＵ１０２の１つ以上のプロセッサコア（図示省略）において）実行される。しかしながら、当業者は、様々な実施形態において、オペレーティングシステム１０８、ＧＰＵドライバ１１０及びＧＰＵファームウェア１１２の何れかが、本発明の範囲から逸脱することなく、処理システム１００の他の場所で実施されることを認識するであろう。いくつかの実施形態では、ＧＰＵドライバ１１０は、ＧＰＵ１０２が処理システム１００内の他のコンポーネント又はモジュールと相互作用する方法を制御するソフトウェアモジュールである。特に、ＧＰＵドライバ１１０は、ＧＰＵ１０２と、オペレーティングシステム１０８及び／又はＧＰＵ１０２を含むデバイス（例えば、処理システム１００）のハードウェアと、の間のインタフェースを提供する。
【００１１】
ＧＰＵ１０２は、グラフィックスワークロードの処理をサポートするために、グラフィックスパイプライン１１４と、スケジューラ１１６と、ＧＰＵパフォーマンスモジュール１１８と、電力及びクロックコントローラモジュール１２０と、を含む。図示した例では、グラフィックスパイプライン１１４は、概して、命令のスレッドを実行して、グラフィックスワークロードの処理等のタスクを含むグラフィックス関連タスクを実行するように構成されている。少なくとも１つの実施形態において、ＧＰＵドライバ１１０は、グラフィックスワークロードを、処理するためにグラフィックスパイプライン１１４に供給する。グラフィックスワークロード（図示省略）は、実行されると、ＧＰＵ１０２が表示用の１つ以上のオブジェクトを生成するグラフィックス命令のセットである。例えば、グラフィックスワークロードは、ビデオ又は静的なグラフィックスのフレーム又はフレームの一部をレンダリングするための命令のスレッドであってもよい。
【００１２】
スレッドの実行を容易にするために、グラフィックスパイプライン１１４は、コンピュートユニット（ＣＵ）１２２を含む。いくつかの実施形態では、グラフィックスパイプライン１１４は、図１に具体的に示されていない追加のモジュール（例えば、バッファ、メモリデバイス（例えば、キャッシュ又はスクラッチメモリとして使用されるメモリ）、ＧＰＵ１０２の他のモジュールとの通信を容易にするためのインタフェースデバイス等）を含むことができる。ＣＵ１２２の各々（例えば、ＣＵ１２２（１），１２２（２））は、概して、ＧＰＵ１０２に代わってパイプライン方式で命令を実行するように構成されている。さらに、ＣＵ１２２の各々は、図１に具体的に示されていない追加のモジュール（例えば、ＣＵに代わって命令をフェッチ及びデコードするためのフェッチ及びデコードロジック、命令を実行するためのデータを記憶するためのレジスタファイル、キャッシュメモリ等）を含むことができる。
【００１３】
スケジューラ１１６は、ＧＰＵ１０２においてスレッドを実行するための要求を受信し、グラフィックスパイプライン１１４において実行するためにこれらのスレッドをスケジューリングする。いくつかの実施形態では、要求は、ＣＰＵ１０４内のプロセッサコアから受信される。スケジューラ１１６は、スレッドを実行するために１つ以上のＣＵ１２２が利用可能になるまで、受信した要求の各々をバッファする。１つ以上のＣＵ１２２がスレッドを実行するのに利用可能になると、スケジューラ１１６は、例えば、スレッドの最初の命令のアドレスを１つ以上のＣＵ（例えば、ＣＵ１２２（１））のフェッチステージに提供することによって、スレッドの実行を開始する。
【００１４】
ＧＰＵパフォーマンスモジュール１１８は、グラフィックスパイプライン１１４及びスケジューラ１１６におけるパフォーマンス特性を監視して、ＧＰＵ１０２における処理ワークロードを識別することを含む、ＧＰＵ１０２におけるパフォーマンス特性を監視する。いくつかの実施形態では、図１に示すように、ＧＰＵパフォーマンスモジュール１１８は、利用率モニタ１２４と、１つ以上の温度センサ１２６と、１つ以上の電力センサ１２８と、を含む。利用率モニタ１２４は、その利用率（例えば、どのくらいビジーであるか）についてグラフィックスパイプライン１１４を監視し、例えば、グラフィックスパイプライン１１４内のＣＵ１２２のアクティビティのパーセンテージレベルを表すビジーパーセンテージメトリクスを生成する。
【００１５】
１つ以上の温度センサ１２６は、ＧＰＵ１０２の動作温度を測定する。１つ以上の温度センサ１２６は、任意のタイプの温度感知回路であってもよい。いくつかの実施形態では、２つ以上の温度センサが実装される場合、温度センサを、ＧＰＵの表面上に物理的に分布させることができ、ＧＰＵパフォーマンスモジュール１１８内に物理的に分布させるように限定されない。１つ以上の電力センサ１２８は、ＧＰＵ１０２の消費電力を測定する。いくつかの実施形態では、１つ以上の電力センサ１２８は、ＧＰＵ１０２の電源からの電流を測定する電力測定回路（図示省略）からデータを受信して、消費電力を決定する。他の実施形態では、１つ以上の電力センサ１２８は、ＧＰＵ１０２内のアクティビティレベルに基づいて、消費電力を推定する。例えば、１つ以上の電力センサ１２８は、ＧＰＵ１０２内の様々なパフォーマンスカウンタを読み取り、消費電力の推定値を導出するように構成されてもよい。
【００１６】
ＧＰＵ１０２のパフォーマンスは、複数の動作パラメータ（ＧＰＵ１０２のＧＰＵプロセッサコアクロックレート、ＧＰＵメモリ（例えば、フレームバッファ）のメモリクロックレート、及び、クロックレートに必要な他の関連する設定（例えば、コアクロック及びメモリクロックに提供される基準電圧、（例えば、冷却を提供する）ファンの速度、メモリタイミング等）等を含むがこれらに限定されない）に依存する。一般に、（例えば、フレーム毎秒（ＦＰＳ）における）ＧＰＵ１０２のパフォーマンスは、コアクロックレート及びメモリクロックレートの増加と共に増大する。
【００１７】
電力及びクロックコントローラモジュール１２０は、ＧＰＵ１０２の電力管理のためのパラメータを制御する制御要素を含む。一実施形態において、電力及びクロックモジュール１２０は、コアクロック及び電圧コントローラ１３０と、メモリクロック及び電圧コントローラ１３２と、を含む。コアクロック及び電圧コントローラ１３０は、ＧＰＵ１０２用のコアクロック信号及びコア電圧信号を生成する。同様に、メモリクロック及び電圧コントローラ１３２は、ＧＰＵ１０２用のメモリクロック信号及びメモリ電圧信号を生成する。
【００１８】
電力及びクロックモジュール１２０は、電圧及び周波数のスケーリングを実行して、ＧＰＵプロセッサコア及びＧＰＵの電圧及び／又はクロックレベルを適応させて、事前に定義されたＧＰＵ設定（例えば、各々が異なるクロック及び電圧レベルを有する）のセットの間でＧＰＵ設定を切り替える。事前に定義されたＧＰＵ設定のセットは、パフォーマンスが最適化された複数のＧＰＵ設定のセットと、電力が最適化された複数のＧＰＵ設定のセットと、を含む、所定の消費電力で異なるレベルのＧＰＵパフォーマンスを提供するＧＰＵの様々な構成を含む。一実施形態において、ＧＰＵ設定は、電圧の大きさと、動作周波数と、を含んでもよい。本明細書では、電源電圧の大きさと動作周波数との組み合わせを、概して「電力レベル」と呼ぶ。電源電圧の大きさは、ＧＰＵプロセッサコア及び／又はＧＰＵメモリに供給される電源電圧の大きさであってもよい。動作周波数は、ＧＰＵプロセッサコア及び／又はＧＰＵメモリに供給される１つ以上のクロックの周波数であってもよい。一般に、ＧＰＵに供給される動作周波数及び／又は電圧が高いほど、パフォーマンス及び消費電力が高くなる。
【００１９】
本明細書でさらに詳細に説明するように、ＧＰＵドライバ１１０は、処理システム１００の過去の挙動と現在及び／又は将来のワークロードとに基づいて新たなＧＰＵ設定（すなわち、電力レベル）を定期的に決定することによって、動的電力レベル管理を実行する。新たなＧＰＵ設定は、固定の時間間隔（ここでは、「測定サイクル」又は「サイクル」と呼ばれる）を用いて、過去の挙動に基づく将来の動作の最適化設定の予測に基づいて決定される。各測定サイクルにおいて、ＧＰＵドライバ１１０は、ＧＰＵパフォーマンスモジュール１１８からのハードウェア信号、計算されたパフォーマンスメトリクス、及び、ＧＰＵ１０２によって処理されているワークロードのタイプのうち少なくとも１つを含む複数の入力に基づいて、次のサイクルの最適化設定を予測する。
【００２０】
例えば各測定サイクルでは、ＧＰＵパフォーマンスモジュール１１８からのハードウェア信号を用いて、利用率モニタ１２４からの平均ビジーパーセンテージメトリクス、１つ以上の温度センサ１２６からの平均温度メトリクス、及び、１つ以上の電力センサ１２８からの測定サイクルの間に消費された平均累積電力のうち１つ以上を計算する。計算されたパフォーマンス測定値（例えば、ＦＰＳ、スループット、単位時間毎の書き込み）及びＧＰＵ１０２によって処理されるワークロード／ユースケースのタイプ（例えば、分析、視覚化、３Ｄ画像レンダリング、人工知能処理、一般的な計算機能等）の他の入力も、将来のサイクルに適用される電力レベル設定を予測する際に考慮に入れられる。また、いくつかの実施形態では、ＧＰＵドライバ１１０は、将来のサイクルに適用される電力レベル設定を予測するのに予想される将来の処理ワークロードも考慮する。
【００２１】
図２は、いくつかの実施形態による、図１の処理システムにおいて動的電力レベル管理を行うための電力制御ループ２００を示すブロック図である。本明細書では現在の測定サイクル及び次のサイクルの文脈で説明しているが、当業者は、説明した電力レベル管理動作を任意の数のサイクルに亘って適用することができるのを認識するであろう。現在の測定サイクルでは、ドライバ２０２（例えば、図１のＧＰＵドライバ１１０等）は、ＧＰＵ（例えば、図１のＧＰＵ１０２等）に関連するファームウェア２０４及びハードウェア２０６からの入力を受信する。ファームウェア２０４は、ハードウェア２０６からのハードウェア信号（例えば、ＧＰＵパフォーマンスモジュール１１８からのデータ）を使用して、平均アクティビティパーセンテージメトリクス、平均温度メトリクス及び平均消費電力メトリクスのうち少なくとも１つを計算するように構成されている。また、ドライバ２０２は、計算されたパフォーマンス測定値（例えば、ＦＰＳ、スループット、単位時間毎の書き込み）、ＧＰＵ１０２によって処理されるワークロード／ユースケースのタイプ（例えば、分析、視覚化、３Ｄ画像レンダリング、人工知能処理、一般的な計算機能等）等の他のシステム入力２０８も受信する。いくつかの実施形態では、他のシステム入力２０８を、オペレーティングシステム（図１のＯＳ１０８等）及び／又はＣＰＵ（図１のＣＰＵ１０４等）によってドライバに提供することができる。
【００２２】
一実施形態では、ファームウェア２０４は、現在の測定サイクルに関して、ＧＰＵにおける利用アクティビティのパーセンテージレベルを表す平均アクティビティパーセンテージメトリクスを計算する。平均アクティビティパーセンテージメトリクス（０〜１００％の範囲のパーセンテージ用語で表すことができる）は、例えば、ＧＰＵにおけるコンピュートユニット（例えば、図１のグラフィックスパイプライン１１４内のＣＵ１２２）のアクティビティのパーセンテージレベルを表している。ドライバ２０２は、ファームウェア２０４から平均アクティビティパーセンテージメトリクスを受信し、平均アクティビティパーセンテージメトリクスを所定のアクティビティ閾値と比較する。
【００２３】
計算された平均アクティビティパーセンテージメトリクスが所定のアクティビティ閾値に達した（すなわち、ＧＰＵでのより高いレベルの処理アクティビティを示す）後に、ファームウェア２０４は、ＧＰＵの電力レベルを異なるクロック及び／又は電圧設定に調整するかどうかを判別する。いくつかの実施形態では、ファームウェア２０４は、所定のアップヒステリシスレベル及びダウンヒステリシスレベルに基づいて、電力レベルを調整するかどうかを判別する。所定の現在の測定サイクルに関して、平均アクティビティパーセンテージメトリクスが所定のアクティビティ閾値以上である場合、ファームウェア２０４は、動作周波数及び／又はＧＰＵに供給される電圧を増大させることによってＧＰＵの電力レベルを調整する前に、平均アクティビティパーセンテージメトリクスを継続してアクティビティ閾値以上に維持するかどうか（すなわち、ＧＰＵでのより高いレベルの処理アクティビティを示す）を、いくつかの将来のサイクルに亘って繰り返しチェックする。アップヒステリシスレベル及びダウンヒステリシスレベルは、平均アクティビティパーセンテージメトリクスがアクティビティ閾値を超える場合と、ファームウェア２０４が望ましくない頻繁な切り替えを抑制するように電力レベルを調整する場合と、の間に動的ラグを設ける。例えば、ＧＰＵ利用率が５０％の仮想アクティビティ閾値が与えられた場合、ある測定サイクルと別の測定サイクルとの間でアクティビティパーセンテージメトリクスが４９％から５１％まで変動する場合、電力レベルを変更することは非効率であり、望ましくないであろう。
【００２４】
アップヒステリシスレベルは、ＧＰＵに供給される動作周波数及び／又は電圧を増大させることによってＧＰＵの電力レベルを調整する前に、アクティビティパーセンテージメトリクスをアクティビティ閾値以上に維持する必要がある最小数の連続サイクルを提供する。したがって、アップヒステリシスレベルが高く設定されるほど、ファームウェア２０４が電力レベルを増大させるのが遅くなり、その可能性が低くなる。アップヒステリシスレベルが低く設定されるほど、ファームウェア２０４が電力レベルを増大させるのが速くなり、その可能性が高くなる。同様に、アクティビティパーセンテージメトリクスがアクティビティ閾値を下回る場合、ファームウェア２０４は、ＧＰＵに供給される動作周波数及び／又は電圧を低下させることによってＧＰＵの電力レベルを調整する前に、平均アクティビティパーセンテージメトリクスを、継続してアクティビティ閾値を下回る（すなわち、ＧＰＵでのより低いレベルの処理アクティビティを示す）ように維持するかどうかを、いくつかの将来のサイクルに亘って繰り返しチェックする。ダウンヒステリシスレベルは、ＧＰＵの電力レベルを低下させる前に、アクティビティパーセンテージメトリクスがアクティビティ閾値を下回るように維持する必要がある最小数の連続サイクルを提供する。したがって、ダウンヒステリシスレベルが高く設定されるほど、ファームウェア２０４が電力レベルを低下させるのが遅くなり、その可能性が低くなる。ファームウェア２０４は、より長い期間、より高いレベルで電力レベルを保持することになる。ダウンヒステリシスレベルが低く設定されるほど、ファームウェア２０４が電力レベルを低下させるのが速くなり、その可能性が高くなる。
【００２５】
いくつかの実施形態では、ドライバ２０２は、以下に提供する表１に基づいて電力レベルを調整するかどうかを判別する。
【表１】
0006817453.tif 000002
【００２６】
表１によれば、アクティビティパーセンテージメトリクスがアクティビティ閾値以上である場合、ドライバ２０２は、アップヒステリシスレベルを低下させ、ダウンヒステリシスレベルを増大させ、及び／又は、高い電力レベル設定に調整するのに必要とされるアクティビティ閾値を低下させることによって、パフォーマンスの最適化に有利な電力レベル設定を選択する。アクティビティパーセンテージメトリクス（すなわち、ビジー信号）がアクティビティ閾値を下回る場合、ドライバ２０２は、アップヒステリシスレベルを増大させ、ダウンヒステリシスレベルを低下させ、及び／又は、高い電力レベル設定に調整するのに必要とされるアクティビティ閾値を増大させることによって、電力の最適化及び保全に有利な電力レベル設定を選択する。
【００２７】
いくつかの実施形態では、電力レベル設定をあるサイクルから別のサイクルに調整することができる量は、アクティビティパーセンテージメトリクス（すなわち、ビジー信号）がアクティビティ閾値からどのくらい離れているかに基づいてさらに計算される。図３は、いくつかの実施形態による、様々な電力レベル調整係数を示す表３００を示している。表３００では、列３０２は、アクティビティパーセンテージメトリクスを表しており、電力レベル設定をあるサイクルから別のサイクルへ変更可能な最大量は、最大調整係数（ＭＡＦ）と呼ばれる。
【００２８】
列３０４の実施形態では、ＧＰＵドライバ（例えば、図２のドライバ２０２）は、５０％のアクティビティ閾値と、１〜５の調整係数の範囲と、５のＭＡＦと、を有するように構成されている。この構成は、例えば、ＧＰＵでの一般的な計算機能処理に適用することができる。アップヒステリシスレベル及び／又はダウンヒステリシスレベルを満たすと仮定すると、列３０４の実施形態は、調整係数（すなわち、電力レベル設定を現在の測定サイクルから将来の次の測定サイクルまでどのくらい変化することができるかを示す量）が、現在の測定サイクルに関するアクティビティパーセンテージメトリクス（すなわち、ビジー信号）とアクティビティ閾値との差の程度に依存することを示している。例えば、４０〜６０％の範囲のビジー信号には「１」の調整係数が割り当てられるが、０〜１０％又は９０〜１０％の範囲のビジー信号には、５０％のアクティビティ閾値に対する相対的な近似及び距離に起因して「５」の調整係数が割り当てられる。
【００２９】
当業者は、本明細書で説明する調整係数が特定の電力レベル（例えば、特定の電圧若しくは動作周波数）又は電力レベル間の比率に関連付けられるのを意図していないことを認識するであろう。むしろ、調整係数は、電力レベル調整の大きさの相対的な差を示すために提供されている。例えば、「２」の調整係数に基づく将来の測定サイクルの電力レベル設定は、「１」の調整係数に基づくものよりも大きくなる。同様に、「３」の調整係数に基づく将来の測定サイクルの電力レベル設定は、「１」又は「２」の調整係数に基づくものよりも大きくなる等である。
【００３０】
列３０６の実施形態では、ＧＰＵドライバ（例えば、図２のドライバ２０２）は、５０％のアクティビティ閾値と、２〜１０の調整係数の範囲と、１０のＭＡＦと、を有するように構成されている。この構成は、例えば、電力レベル及びＧＰＵパフォーマンスをより迅速に向上させることが望ましい（省力を犠牲にしようとも）ゲーミングアプリケーション又は３Ｄレンダリング等の高アクティビティのグラフィックス処理ワークロードに適用することができる。例えば、列３０６の実施形態におけるビジー信号では、（同じ「２」の調整係数が割り当てられている列３０４の実施形態の６０〜７０％の範囲のビジー信号とは対照的に）５０〜６０％の範囲に「２」の調整係数が割り当てられる。したがって、列３０４の実施形態は、同じ電力レベル設定に到達するために列３０６の実施形態よりも高い測定されたアクティビティパーセンテージを必要とする。或いは、調整係数及びＭＡＦの差は、列３０６の実施形態が単一サイクルで到達する電力レベルに到達するために、列３０４の実施形態では複数サイクルかかる場合があることを示している。
【００３１】
列３０８の実施形態では、ＧＰＵドライバ（例えば、図２のドライバ２０２）は、３０％のアクティビティ閾値と、０〜１０の調整係数の範囲と、１０のＭＡＦと、を有するように構成されている。このような構成は、例えば、消費電力をより細かく考慮に入れることが望ましい処理システム（例えば、バッテリで動作するラップトップ）に適用することができる。アップヒステリシスレベル及び／又はダウンヒステリシスレベルを満たすと仮定すると、列３０８の実施形態は、３０％という低いアクティビティ閾値によって、電力レベルが、上昇（すなわち、３０％の閾値を超えて測定されたアクティビティが７パーセンテージポイント変化する毎の「１」の調整係数の変化）が許容される速度の２倍の速度の低下（すなわち、測定されたアクティビティが３パーセンテージポイント変化する毎の「１」の調整係数の変化）を可能にする電力節約指向の設定を可能にすることを示している。
【００３２】
列３０４〜３０８の実施形態は、例えば、異なる処理ワークロード及びハードウェア構成を含むパフォーマンスメトリクスを考慮に入れるように電力設定を調整する方法の例として提供されることを理解されたい。当業者は、このような実施形態が、本明細書で提供される教示の範囲を、具体的に説明した実施形態に限定することを意図していないことを理解するであろう。
【００３３】
図４は、いくつかの実施形態による、適応電力制御を実行する方法４００のフロー図である。ブロック４０２において、方法４００は、ＧＰＵにおいて現在処理しているワークロードに基づく現在の測定サイクルのパフォーマンスメトリクスを受信することによって開始する。一実施形態では、図１及び図２に関して上述したように、ＧＰＵドライバは、ＧＰＵファームウェア及びハードウェアからの入力を受信する。ファームウェアは、ハードウェアからのハードウェア信号（例えば、図１に関連して説明したＧＰＵパフォーマンスモジュール１１８からのデータ）を利用して、平均アクティビティパーセンテージメトリクス、平均温度メトリクス及び平均消費電力メトリクスのうち少なくとも１つを含むパフォーマンスメトリクスを計算するように構成されている。また、ＧＰＵドライバは、ＧＰＵ１０２によって処理されているワークロード／ユースケースのタイプ（例えば、一般的な計算機能等の低アクティビティワークロード、又は、分析、視覚化、３Ｄ画像レンダリング、人工知能処理等の高アクティビティワークロード）、処理システムの特定のハードウェア構成（例えば、ＲＡＭメモリの量、ＣＰＵのタイプ等）、及び、現在の測定サイクルの計算されたパフォーマンス測定（例えば、ＦＰＳ、スループット、単位時間毎の書き込み）等の他のシステム入力も受信する。したがって、ＧＰＵドライバは、ある測定サイクルから別の測定サイクルまでＧＰＵが処理する特定のワークロードの概要だけでなく、特定のハードウェア構成がこのようなワークロードをどのように実行するかを示すパフォーマンスメトリクスも受信する。
【００３４】
ブロック４０４では、受信した現在の測定サイクルのパフォーマンスメトリクスを所定のメトリクス閾値と比較して、ＧＰＵドライバが、ＧＰＵ電力レベルを現在の測定サイクルにおける現在の設定から次の測定サイクルにおける異なる設定に調整するかどうかを決定する。一実施形態では、図２及び図３に関連して説明したように、パフォーマンスメトリクスは、ＧＰＵハードウェアが単位時間毎に（すなわち、測定サイクル毎に）処理しているワークロードの量を示すアクティビティパーセンテージメトリクスを含む。アクティビティパーセンテージメトリクスが所定のアクティビティパーセンテージ閾値を満たすか超えると、ＧＰＵドライバは、ブロック４０６に進み、ＧＰＵの電力レベル（例えば、ＧＰＵに適用される動作周波数又は電圧）を、パフォーマンスの向上を提供するために次の高いレベルに上げようとする。
【００３５】
当業者は、実施形態がアクティビティパーセンテージの文脈で具体的に説明されており、本明細書で説明する動的電力レベル管理動作をアクティビティパーセンテージと共に又はアクティビティパーセンテージを代替的に除外して、ＧＰＵにおける平均動作温度、ＧＰＵで消費される平均電力、又は、ＧＰＵパフォーマンスモジュール（例えば、図１のＧＰＵパフォーマンスモジュール１１８）のセンサ／モニタによってキャプチャされた（又は、これらによってキャプチャされたデータから導出可能な）他のパフォーマンス関連データ等の他のパフォーマンスメトリクスに有利に適用可能であることを認識するであろう。例えば、いくつかの実施形態では、方法４００は、ＧＰＵが過熱していることをＧＰＵドライバが検出した場合に、ＧＰＵが電力レベルを低下し、非集約的又は低アクティビティなワークロード中にＧＰＵをより速く冷却するのを可能にするために、平均アクティビティパーセンテージと併せて平均動作温度を考慮することができる。
【００３６】
ブロック４０６では、ＧＰＵドライバは、受信したパフォーマンスメトリクスが、最小ヒステリシス数を超える連続サイクルに亘ってメトリクス閾値を超えたかどうかを判別する。一実施形態において、図２及び図３に関して説明したように、ヒステリシス数は、ＧＰＵの電力レベル設定への調整を可能にするために、アクティビティパーセンテージメトリクスをアクティビティ閾値以上に維持する必要がある最小数の連続する測定サイクルを規定するアップヒステリシスレベル及び／又はダウンヒステリシスレベルを含む。例えば、アップヒステリシスレベルは、ＧＰＵの電力レベルを増大させる前に、アクティビティパーセンテージメトリクスをアクティビティ閾値以上に維持する必要がある連続サイクルの最小数を定義する。同様に、ダウンヒステリシスレベルは、ＧＰＵの電力レベルを低下させる前に、アクティビティパーセンテージメトリクスがアクティビティ閾値を下回るように維持する必要がある連続サイクルの最小数を定義する。アップヒステリシスレベル及びダウンヒステリシスレベルの正確な値は、設計上の選択事項であり、本明細書では説明しないことを理解されたい。
【００３７】
ＧＰＵドライバが、ブロック４０６において、受信したパフォーマンスメトリクスが、最小アップヒステリシス数を超える連続サイクルに亘ってメトリクス閾値を満たしていないと判別した場合、方法４００はブロック４０２に戻る。ＧＰＵドライバが、ブロック４０６において、受信したパフォーマンスメトリクスが、最小アップヒステリシス数を超える連続サイクルに亘ってメトリクス閾値を満たしていると判別した場合、方法４００はブロック４０８に進む。
【００３８】
ブロック４０８において、ＧＰＵドライバは、次の測定サイクルのためにＧＰＵに適用されるＧＰＵ設定の推定される最適化を決定する。一実施形態において、図１に関連して説明したように、ＧＰＵ設定の推定された最適化（例えば、ＧＰＵのコアクロック及びメモリクロックに関する電圧及び周波数）は、所定の消費電力で異なるレベルのＧＰＵパフォーマンスを提供するＧＰＵの様々な構成を含む事前定義されたＧＰＵ設定のセットから決定することができ、このセットは、ＧＰＵ設定のパフォーマンスが最適化された複数のセット及びＧＰＵ設定の電力が最適化された複数のセットを少なくとも含む。事前定義されたＧＰＵ設定のセットは、例えば、静的な電力レベル設定を有するシステムからのデータに基づいて選択され、スペクトルの一端としてパフォーマンスが最適化された設定のセットと、他端として電力が最適化された設定のセットと、を表す特定の範囲の設定を提供する。本開示において説明するように、動的電力レベル管理動作は、静的な事前定義された閾値を超えるアクティビティパーセンテージメトリクスのみに基づいて電力レベルを増大させる訳ではない。むしろ、本明細書で説明するパフォーマンスメトリクスの超過は、現在のワークロードに対する他の要因（例えば、ＯＳの違い、環境の周辺温度の違い、ＯＳ上で実行されるアプリケーションのワークロードの違い、及び、ＲＡＭ、ＣＰＵ、マザーボード、チップセット等の処理システムのハードウェア構成の違い等）の考慮に基づいて、ＧＰＵ設定の推定された最適化を決定するために、ＧＰＵドライバの必要条件として機能する。さらに、最適な設定は、異なるＡＰＩ（ＤｉｒｅｘｔＸ（登録商標）９（ＤＸ９）、ＤＸ１０、ＤＸ１１、ＤＸ１２等）の一般的な動作のプリセット設定に基づいて推定することができる。また、現在のサイクル及び以前の測定サイクルのワークロードに基づいて最適な設定を推定することができるだけではなく、ＧＰＵスケジューラによる実行がスケジューリングされているように、予測される将来のワークロードに関する情報を含むこともできる。
【００３９】
ブロック４１０において、ＧＰＵドライバは、推定された最適化に基づいて、将来の測定サイクルのＧＰＵでの電力レベル設定を調整するようにＧＰＵに命令する。一実施形態において、図１に関連して説明したように、ＧＰＵドライバは、ＧＰＵの電力及びクロックコントローラモジュール（例えば、図１の電力及びクロックコントローラモジュール１２０）に対して、各々が所定の消費電力で異なるレベルのＧＰＵパフォーマンスを提供する事前定義されたＧＰＵ設定（例えば、各々が異なるクロック及び電圧レベルを有する）のセット間で切り替えるように命令する。いくつかの実施形態において、電力及びクロックモジュールは、ＧＰＵのクロック及び電圧信号を生成するために、コアクロック及び電圧コントローラと、メモリクロック及び電圧コントローラと、を含む。
【００４０】
次に、ブロック４０４に戻ると、アクティビティパーセンテージメトリクスが所定のアクティビティパーセンテージ閾値を下回ると判別された場合、ＧＰＵドライバは、ブロック４１２に進み、ＧＰＵの電力レベル（例えば、ＧＰＵに適用される動作周波数又は電圧）を、パフォーマンスを低下させ、省電力を向上する次の低いレベルにするように低下させることを試みる。ブロック４１２では、ＧＰＵドライバは、受信したパフォーマンスメトリクスが、最小ヒステリシス数を超える連続サイクルに亘ってメトリクス閾値を超えたかどうかを判別する。ＧＰＵドライバが、ブロック４１２において、受信したパフォーマンスメトリクスが、最小ダウンヒステリシス数を超える連続サイクルに亘ってメトリクス閾値を満たしていないと判別した場合、方法４００はブロック４０２に戻る。ＧＰＵドライバが、ブロック４１２において、受信したパフォーマンスメトリクスが、最小ダウンヒステリシス数を超える連続サイクルに亘ってメトリクス閾値を満たしていると判別した場合、方法４００はブロック４１４に進む。
【００４１】
ブロック４１４において、ＧＰＵドライバは、次の測定サイクルでＧＰＵに適用されるＧＰＵ設定の推定された最適化を決定する。ブロック４１４の動作は、推定された最適化が、ブロック４０８のパフォーマンスの向上を実現する推定の代わりに、パフォーマンスの低下及び省電力の向上を実現する低い電力レベルに関するものであることを除いて、ブロック４０８に関連して上述したものと同様である。ブロック４１６において、ＧＰＵドライバは、（ブロック４１０の動作と同様に）推定された最適化に基づいて将来の測定サイクルでのＧＰＵの電力レベル設定を調整するようにＧＰＵに命令する。
【００４２】
動的電力管理動作は、ブロック４１０及び／又は４１６で終了しないことを理解されたい。むしろ、ＧＰＵは、方法４００の動作を定期的に実行し、電力レベルを動的に適応させて、所定の時間に処理されるワークロードに基づいて省電力及びパフォーマンスの向上を最適化する。これにより、ＧＰＵは、省電力指向の設定に留まり、高アクティビティのワークロードが処理を開始した後にパフォーマンス指向の設定に移行し、ＧＰＵが再びアイドル状態になった後に省電力指向の設定に戻ることを可能にする。例えば、図４に示すように、現在の測定サイクルに関するブロック４１０，４１６の後、方法４００は、ブロック４０２にループバックして、現在の測定サイクルから変更した後の電力レベル設定を、将来の測定サイクルでの電力レベル設定を決定するための入力として提供することができる。
【００４３】
本明細書では、測定サイクルの正確なサイクル時間を明示的に定義していないが、当業者は、ＧＰＵドライバを、サイクル時間を変更するように構成することができることを認識するであろう（サイクル時間を短くすると、電力レベル管理動作の細分性／精度が向上し、電力レベルの変更間隔が短くなる［ＧＰＵをより頻繁に動作させるためにＣＰＵ負荷を追加するコストがかかる］、サイクル時間を長くすると、動的電力レベル管理動作に起因するＣＰＵ負荷が低下するが、精度は低下する）。
【００４４】
いくつかの実施形態では、上述した装置及び技術は、１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を備えるシステム（例えば、図１〜４を参照して上述したＧＰＵ等）において実施される。これらのＩＣデバイスの設計及び製造には、通常、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用される。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよいし、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００４５】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステムに内蔵されてもよいし（例えば、システムＲＡＭ又はＲＯＭ）、コンピュータシステムに固定的に取り付けられてもよいし（例えば、磁気ハードドライブ）、コンピュータシステムに着脱可能に取り付けられてもよいし（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）、有線又は無線のネットワークを介してコンピュータシステムに接続されてもよい（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））。
【００４６】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００４７】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００４８】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
0006817453.tif 000003
【図２】
0006817453.tif 000004
【図３】
0006817453.tif 000005
【図４】
0006817453.tif 000006