JP2017505931A - ゲーミングの作業負荷のためのcpu周波数を動的にスロットリングするシステムおよび方法 - Google Patents

ゲーミングの作業負荷のためのcpu周波数を動的にスロットリングするシステムおよび方法 Download PDF

Info

Publication number
JP2017505931A
JP2017505931A JP2016529907A JP2016529907A JP2017505931A JP 2017505931 A JP2017505931 A JP 2017505931A JP 2016529907 A JP2016529907 A JP 2016529907A JP 2016529907 A JP2016529907 A JP 2016529907A JP 2017505931 A JP2017505931 A JP 2017505931A
Authority
JP
Japan
Prior art keywords
cpu
computing device
result
graphics library
tracking
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016529907A
Other languages
English (en)
Other versions
JP6321167B2 (ja
JP2017505931A5 (ja
Inventor
シャー、プレマル
エリス、ブライアン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2017505931A publication Critical patent/JP2017505931A/ja
Publication of JP2017505931A5 publication Critical patent/JP2017505931A5/ja
Application granted granted Critical
Publication of JP6321167B2 publication Critical patent/JP6321167B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/18Timing circuits for raster scan displays
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/02Details of power systems and of start or stop of display operation
    • G09G2330/021Power management, e.g. power saving
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/08Power processing, i.e. workload management for processors involved in display operations, such as CPUs or GPUs
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Pinball Game Machines (AREA)
  • Debugging And Monitoring (AREA)
  • Image Generation (AREA)

Abstract

少なくとも1つの中央処理装置(CPU)のCPU周波数をスケーリングする例示的な方法は、レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量をトラッキングすることを含む。方法は、CPUを含むコンピューティングデバイス上のゲーミングの作業負荷を、レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量をトラッキングすることに基づいて、検出することをさらに含む。方法はまた、コンピューティングデバイスをゲーミングモードに切り替えることも含む。コンピューティングデバイスをゲーミングモードに切り替えることは、コンピューティングデバイス上で実行しているCPUのCPU FMaxを低減することを含む。

Description

関連出願の相互参照
[0001] 本願は、2013年11月13日に出願された米国仮特許出願第61/903,843号に対する優先権を主張する、2014年7月31日に出願された米国非仮特許出願第14/448,556号に対する優先権を主張し、これら両方は、それらの全文を参照により本明細書に組み込まれる。
[0002] 本開示は、中央処理装置(CPU)およびグラフィックス処理ユニット(GPU)に一般的に関し、より具体的にはGPUの重い作業負荷のためのCPU周波数をコントロールすることに関する。
[0003] 動的なCPU周波数のスケーリングは、CPU周波数が、例えば、電力を保持するためにCPUのパーセンテージ負荷(CPU percentage load)に基づいて調整されるコンピューティングシステムにおける技法である。動的なCPU周波数のスケーリングは、電力を保持するためにコンピューティングシステムで使用されることができ、限られた電力供給を有するモバイルデバイスで使用するために特に有益であり得る。これらのモバイルデバイスは、モバイルデバイスの中のバッテリ以外の一貫した電力供給(consistent power supply)を典型的に有さない。動的な周波数スケーリングはまた、軽く負荷をかけられたマシン(lightly loaded machines)のためのエネルギーおよび冷却費用(cooling costs)を減らすために使用され得る。
[0004] モバイルデバイスは、ユビキタス(ubiquitous)であり、スマートフォン、タブレット、携帯デジタルアシスタント(portable digital assistant)(PDA)、携帯ゲームコンソール、パームトップコンピュータ、および他の携帯電子デバイスを含み得る。これらのデバイスの主要な機能に加えて、多くは、周辺機能(peripheral functions)を含む。例えば、スマートフォンは、通話する主要な機能、ならびにゲームをプレーすること、スチルカメラ(still camera)、ビデオカメラ、全世界測位システム(GPS)ナビゲーション、ウェブブラウジング、eメールの送受信、およびテキストメッセージの送受信の周辺機能を含み得る。そのようなデバイスの機能性が増加するにつれて、そのような機能性をサポートするために要求される処理電力もまた、増加する。さらに、コンピューティング電力が増加するにつれて、コンピューティング電力を提供するプロセッサを効率的に管理するより大きな必要性が存在する。
[0005] 本開示は、CPUsに関する。CPU周波数をコントロールするための方法、システム、および技法が提供される。
[0006] いくつかの実施形態にしたがって、少なくとも1つの中央処理装置(CPU)のCPU周波数をスロットリングする(throttling)方法は、レンダリングのフレームごとのグラフィックスライブラリドローコール(graphics library draw call)ごとになされたグラフィックスライブラリコールの平均の量をトラッキングすることを含む。方法は、CPUを含むコンピューティングデバイス上のゲーミングの作業負荷を、レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量をトラッキングすることに基づいて、検出することをさらに含む。方法はまた、コンピューティングデバイスをゲーミングモード(a gaming mode)に切り替えることも含む。コンピューティングデバイスをゲーミングモードに切り替えることは、コンピューティングデバイス上で実行しているCPUのCPU周波数最大値(CPU frequency maximum)を低減することを含む。
[0007] いくつかの実施形態にしたがって、少なくとも1つの中央処理装置(CPU)のCPU周波数をスロットリングするためのシステムは、CPUを含む。システムはまた、レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量をトラッキングし、前記CPUを含むコンピューティングデバイス上のゲーミングの作業負荷を、レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールのトラッキングされた平均の量に基づいて、検出するゲーミングモード検出器を含む。ゲーミングモード検出器は、コンピューティングデバイスをゲーミングモードに切り替え、コンピューティングデバイス上で実行しているCPUのCPU周波数最大値を低減する。
[0008] いくつかの実施形態にしたがって、オペレーションを行うためのコンピュータ実行可能な命令を記憶したコンピュータ可読媒体は、レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量をトラッキングすることと、CPUを含むコンピューティングデバイス上のゲーミングの作業負荷を、レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量をトラッキングすることに基づいて、検出することと、コンピューティングデバイスをゲーミングモードに切り替えることと、ここで、コンピューティングデバイスをゲーミングモードに切り替えることは、コンピューティングデバイス上で実行しているCPUのCPU周波数最大値を低減することを含む、を含む。
[0009] いくつかの実施形態にしたがって、少なくとも1つの中央処理装置(CPU)のCPU周波数をスロットリングするための装置は、レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量をトラッキングするための手段を含む。装置はまた、CPUを含むコンピューティングデバイス上のゲーミングの作業負荷を検出するための手段を含む。装置は、コンピューティングデバイス上で実行しているCPUのCPU周波数最大値を低減するための手段をさらに含む。
[0010] 本明細書の一部を形成する、添付図面は、発明の実施形態および本明細書とともに例示し、実施形態の原理を説明するためにさらに役立つ。図面において、同様の参照番号は、同一の、または機能的に同様の要素を示し得る。要素がまず現れる図面は、対応する参照番号の中の最も左の数字によって一般的に示される。
[0011] 図1は、特定のオンデマンドCPUガバナ(governor)およびゲーム、Asphalt7(商標)に関する時間にわたる(over time)FPS対CPU周波数最大値の例示的なグラフである。 [0012] 図2は、いくつかの実施形態にしたがって、少なくとも1つのCPUのCPU周波数をスロットリングするためのシステムを例示するブロック図である。 [0013] 図3は、いくつかの実施形態にしたがって、少なくとも1つのCPUのCPU周波数をスケーリングする方法を例示する流れ図である。 [0014] 図4は、本開示の1つ以上の実施形態をインプリメントするために適しているコンピュータシステムのブロック図である。
I.概要
II.例示的なシステムアーキテクチャ
A.ゲーミングの作業負荷を検出する
1.ステートアップデート/ドロー(State-Update/Draw)(SUPD)メトリック
2.SUPDおよびバインドテクスチャドロー(Bind-Texture Draw)(BTPD)メトリック
B.ゲーミングモードに切り替える
III.例示的な方法
IV.例示的なコンピューティングデバイス
I.概要
[0015] 続く開示は、本開示の異なる特徴をインプリメントするための、多くの異なる実施形態、または例を提供することが理解されることとなる。いくつかの実施形態は、これらの特定の詳細のいくつか、またはすべてなしで実施され得る。コンポーネント、モジュール、および配列の特定の例は、本開示を簡略化するために以下に説明される。これらは、もちろん、単に例にすぎず、限定していると意図されない。
[0016] モバイルゲーミングは、人気を得ており、ユーザが、彼または彼女のモバイルデバイス上でゲームをプレーすることを可能にする。かなりの数の人気のゲーム(例えば、Need For Speed − Most Wanted(商標)、Asphalt−7(商標)、およびAsphalt−8(商標))は、「CPUバウンド(CPU bound)」というよりはむしろ高度なグラフィックス処理ユニット(heavily graphics processing unit)(GPU)バウンドである。商標は、それらそれぞれのオーナーの財産である。CPUは、ゲームのためのドローコールに基づくドローコマンドを構築し、ドローコマンドに基づくコマンドストリームを生成し、コマンドストリームをGPUに提出する。GPUは次に、コマンドストリームの中のドローコマンドを処理することの重作業(heavy work)を行うために進み(proceed to)得る。CPU側の作業負荷は、GPUがゲーミングの作業負荷の重い処理を行うため重くなり得ないが、CPUはまだ、最大のサポートされたCPU周波数(maximum supported CPU frequency)で不必要に動作している可能性がある。
[0017] CPU周波数最小値(CPU frequency minimum)(FMin)は、コンピューティングデバイス上で作業負荷を実行しているときに使用されることができる最小の許可されたCPU周波数(minimum allowed CPU frequency)に対応する。CPU周波数最大値(FMax)は、コンピューティングデバイス上で作業負荷を実行しているときに使用されることができる最大の許可されたCPU周波数に対応する。動的なCPU周波数スケーリングルーチンは、コンピューティングデバイス上のCPU FMinとCPU FMax間で稼働し得る。CPU FMaxを動的に低減することは、動的なCPU周波数スケーリングルーチンに、コンピューティングデバイス上のCPU周波数のより小さい範囲内で動作させる。
[0018] CPU周波数は、CPUと相互に作用するオンデマンドCPUガバナによってコントロールされ、それは、CPUに、デフォルトCPU周波数最大値(例えば、2.15ギガヘルツ(GHz))で動作させ得る。説明は、CPUと相互に作用するようにオンデマンドCPUガバナを説明し得るが、他のガバナがCPUと相互に作用し得る。他のCPUガバナの例は、とりわけ、パフォーマンスガバナ(performance governor)、パワーセーブガバナ(powersave governor)、インタラクティブガバナ(interactive governor)である。例において、CPUガバナは、Linux(登録商標)オペレーティングシステムで利用可能であり得る。
[0019] 図1は、ゲーム、Asphalt7(商標)を動作している間、特定のオンデマンドCPUガバナに関する時間にわたる1秒あたりのフレーム数(frames per second)(FPS)対CPU周波数最大値の例示的なグラフである。図1において、デフォルトCPU周波数最大値は、例えば、2.15GHzであり得る。CPUガバナは、さらに以下に説明されることとなるCPU周波数最大値をコントロールし得る。
[0020] 例において、CPU時間の3分の1が、最大CPUクロック(maximum CPU clock)で動作することに費やされ、それは、電力を不必要に消費する。図1に例示されるように、ディスプレイパネルリフレッシュレート(例えば、60FPS)に関連して閾値量(例えば、1.95GHz−1.72GHz)までCPU FMaxを徐々に低減することは、少量のFPSロス、または少しのFPSロスもない結果になり得る。図1に示されるように、CPU FMaxが、約1.49GHz、約59FPSの結果であるとき、CPU FMaxを2.15GHzのデフォルトから1.49GHzに低減することは、Asphalt−7(商標)のための同様のパフォーマンスをもたらす。例えば、おおよそ同じパフォーマンスが、低減された最大周波数でCPUを動作させることによって結果として生じることができるとき、そのデフォルト/より高い最大周波数でCPUを動作させることは望ましくない可能性があり、CPUガバナが現在稼働するためのCPU周波数のより低い範囲を有するとき、より低い周波数最大値でCPUを稼働することは、CPUの電力節約(power savings)をさらに生じ得る。
[0021] コンピューティングデバイス上でゲーミングの作業負荷を識別し、コンピューティングデバイス上でCPU FMaxを選択的に、および動的に低減することは望ましくあり得る。このことは、GPUが比較的重いゲーミングの作業負荷に対処する間、CPUに対する電力消費を低減し得る。さらに、より高いCPU周波数レベルで、コンピューティングデバイスからリリースされるサーマルヒート(thermal heat)は、重要なファクタとなる。CPU FMaxを決定的にコントロールすることは、コンピューティングデバイスが容易に、および不必要に熱くなり、CPU FMaxのさらなるサーマルスロットリングをもたらし、概して望ましくないユーザエクスペリエンスをもたらすのを防ぐのに役立つ。
[0022] 本開示は、CPU周波数をプロアクティブにコントロールする(proactively control)ためのゲーミングの作業負荷の検出に基づく技法を提供する。したがって、CPU FMaxは、ゲーミングの間モバイルプラットフォームによって使用される全体の電力を低減するために低減され得る。ある実施形態は、電力消費およびサーマルヒートを低減させながら、パフォーマンスを維持することの利点を有し得る。
II.例示的なシステムアーキテクチャ
[0023] 図2は、いくつかの実施形態にしたがって、少なくとも1つのCPUのCPU周波数をスロットリングするためのシステムを例示するブロック図400である。図400は、ゲーミングモード検出器412、オペレーティングシステム414、CPU416、およびGPU418を含むコンピューティングデバイス410を含む。ゲーミングモード検出器412、オペレーティングシステム414、CPU416、およびGPU418は、コンピューティングデバイス410においてオペレーションを実行することができ、オペレーションを行い得る。
[0024] コンピューティングデバイス410は、固定のデバイス、またはモバイルデバイスであり得る。モバイルデバイスは、例えば、スマートフォン、タブレット、ラップトップ、または携帯情報端末であり得る。ゲーミングモード検出器412は、ゲーミングの間モバイルプラットフォームによって使用される全体の電力を低減する間、CPU416のパフォーマンスを維持する。
[0025] ゲーミングモード検出器412は、CPU416と相互に作用することができ、CPU416が動作する周波数を管理し得る。CPU416は、ドローコールに基づいてコマンドストリームを生成し、GPU418に提出するためのドローコマンドを構築する。具体的には、CPU416は、ステートおよびドローコールの量へのアクセスを有し、GPU418に送られるグラフィックスライブラリ(GL)コマンドの2進数(a binary)を生成し、それは、ドローコールを実行するために作業負荷を処理する。CPU416は、GPU418に送られるための作業負荷(例えば、ドローコールの量)を処理することを決定し得る。しかしながら、GPU418が重い作業負荷を処理している(例えば、ゲームがコンピューティングデバイス410上でプレーされている)とき、CPU周波数最大値でCPU416を動作することは望ましくない可能性がある。CPU416は、ゲーミングモード検出器412にステートおよびドローコールに関する情報をパスすることができ、それは、ユーザスペースの中で実行し、およびそれは、コンピューティングデバイス410がゲーミングの作業負荷を有するか否かを検出するためにステートおよびドローコール情報を使用し得る。
[0026] ゲーミングモード検出器412がコンピューティングデバイス410上でゲーミングの作業負荷を検出するとき、ゲーミングモード検出器412は、コンピューティングデバイス410がもはやゲーミングモードにあるように(to be in the gaming mode)決定されなくなるまでCPU FMaxを制限し(cap)得る。例において、ゲーミングモード検出器412は、コンピューティングデバイス410上で実行している他のコンポーネントがCPU416に、低減されたCPU FMaxを超えさせることができないようにCPU FMaxを低減する。異なるガバナが、異なる周波数で動作し得る。ある実施形態において、CPU416は、1つ以上のコアを含み、個別のCPU FMaxは、コアの1つ以上のために設定され得る。コンピューティングデバイス410がもはやゲーミングモードにあるように決定されないとき、ゲーミングモード検出器412は、CPU FMax上の制限(cap)を取り除く、または再調整する、あるいは単に低減されたCPU FMaxをデフォルトレベルまで増加させ得る。
[0027] オープングラフィックスライブラリ(OpenGL)は、二次元および三次元のコンピュータグラフィックスをレンダリングするためのアプリケーションプログラミングインタフェース(API)の仕様(specification)である。OpenGLのインプリメンテーションは、仕様によって定義されたAPIをインプリメントするライブラリである。APIは、クロスランゲージおよびマルチプラットフォームであり、ハードウェア加速されたレンダリング(hardware-accelerated rendering)を実現するためにGPUと相互に作用するように典型的に使用される。OpenGLは、CAD、バーチャルリアリティ、サイエンティフィックビジュアライゼーション(scientific visualization)、インフォメーションビジュアライゼーション(information visualization)、フライトシミュレーション、およびビデオゲームで広く使用される。埋め込まれたシステムのためのOpenGL(OpenGL for Embedded Systems)(OpenGL ES)は、APIをレンダリングするOpenGLコンピュータグラフィックスのサブセットであり、埋め込まれたシステムのために設計される(例えば、スマートフォン、コンピュータタブレット、ビデオゲームコンソールおよびPDAs)。簡潔さのために、OpenGLまたはOpenGL ESは、コンピュータグラフィックスをレンダリングするための技術を説明するために使用され得るが、このことは、限定していると意図されず、これらの性能を提供する他の技術が本開示の範囲内であることが理解されるべきである。
A.ゲーミングの作業負荷を検出する
[0028] いくつかの実施形態において、ゲーミングモード検出器412は、コンピューティングデバイス410上でゲーミングの作業負荷を検出し、様々な方法でそのようにし得る。2個のOpenGL ESの作業負荷は、ユーザインタフェース(UI)およびゲーミングの作業負荷である。
1.ステートアップデート/ドロー(SUPD)メトリック
[0029] 例において、ゲーミングモード検出器412は、コンピューティングデバイス410上でゲーミングの作業負荷を検出するために平均のステートアップデート/ドロー(SUPD)メトリックを使用する。SUPDメトリックは、ゲーミングの作業負荷に依存し、所与のドローコールに結びつく(bound to)。例えば、グラフィックスライブラリ(GL)コールは、ゲームアプリケーションによって使用されるAPIsである。SUPDメトリックは、(例えば、2個のeglSwapBuffers間の)レンダリングのフレームごとの単一のGLドローコール(例えば、glDrawElementsおよびglDrawArray)ごとになされたすべてのGLコール(例えば、glUniformMatrix、glBindBuffer、gl*等)の平均の量をトラッキングすることを含み得る。この例において、ゲーミングモード検出器412は、単一のドローコールの前にいくつのGL APIコール(例えば、ステートアップデート)がなされるかをトラッキングし得る。グラフィックスレンダリングのために、トライアングル(triangle)は典型的に、ドローする(draw)ための最も小さいユニットである。ゲーミングモード検出器412は、特定のトライアングルがドローされる前にいくつのGL APIコールがなされるかを決定し得る。レンダリングのフレームごとのGLドローコールごとになされたGLコールのより高い平均の量は、関連付けられた作業負荷がGPU418行き(bound for)であることのより高い可能性を示し得る。
[0030] SUPDメトリックを使用して、ゲーミングモード検出器412が、単一のレンダリングされたフレームに基づいてコンピューティングデバイス410をノンゲーミングモードからゲーミングモードに(またはゲーミングモードからノンゲーミングモードに)切り替え得る。このことは、しかしながら、1フレームごとのベース(frame-by-frame basis)で連続的にゲーミングモードから、およびゲーミングモードに、いったりきたり切り替えることをもたらし得る。それゆえに、特定の状態を満たす持続された重い作業負荷に基づいて、コンピューティングデバイス410をノンゲーミングモードからゲーミングモードに(またはゲーミングモードからノンゲーミングモードに)切り替えることはより望ましくあり得る。そのような発見的なアプローチ(heuristic approach)を使用して、ゲーミングモードから切り替えること、およびゲーミングモードに切り替えることは、一貫性のある経歴(consistent history)に基づくことができ、誤検出(false positives)を避け得る。例えば、ゲーミングの作業負荷の特徴が一貫性があり、散発性がない(not sporadic)ことを確実にするために、スライディングウィンドウ(a sliding window)が使用され得る。この方法において、ゲーミングモード検出器412は、重いOpenGL ESベースのゲーミングの作業負荷対、より軽いユーザインタフェースの作業負荷の間で区別することができ、ゆえにゲーミングの作業負荷のためのCPU周波数最大値をプロアクティブに低減し得る。
[0031] 連続するフレームの既定の量におよぶ(spanning)スライディングウィンドウを組み込むいくつかの実施形態において、ゲーミングモード検出器412は、レンダリングのフレームごとのGLドローコールごとのGLコールの平均の量をトラッキングする。例において、連続するフレームの既定のウィンドウのために、レンダリングのフレームごとのGLドローコールごとのGLコールの平均の量をトラッキングすることの結果が閾値を満たすとき、この状態が満たされるときGPUバウンドである重い、維持された作業負荷が大いに起こり得るため、ゲーミングモード検出器412は、コンピューティングデバイス410上のゲーミングの作業負荷を検出したこととなる。例において、レンダリングのフレームごとのGLドローコールごとのGLコールの平均の量をトラッキングすることの結果は、結果が25以上であるとき、閾値を満たす。
[0032] 同様に、GLコールの平均の量をトラッキングすることの結果が、例えば、25の閾値に達しないとき、ゲーミングモード検出器412は、コンピューティングデバイス410がゲーミングアクティビティ(gaming activity)に従事していないことを決定することができ、コンピューティングデバイス410をノンゲーミングモードに切り替え得る。ある実施形態において、コンピューティングデバイス410をノンゲーミングモードに切り替えることは、CPUのCPU FMaxをリセットすること、または再調整すること(例えば、CPU FMaxの制限を増加させること)を含む。
[0033] SUPDの閾値は、例えば、約25、正確に25、または20−25の範囲であり得る。しかしながら、25の閾値が例によるものであること、および他の値が様々なコンピューティングデバイス410の特徴にしたがって適用され得ることは理解されることとなる。
[0034] 例において、スライディングウィンドウのサイズを定義する連続するフレームの既定の量は、5個のフレームである。OpenGL ESの作業負荷のN個の(例えば、5個の)連続するフレームのスライディングウィンドウのために、ゲーミングモード検出器412は、レンダリングされるためのN個の(例えば、5個の)連続するフレームの各々のためのGLドローコールごとになされたGLコールの平均の量をトラッキングし、ここでNは、ゼロより大きい任意の整数である。例えば、SUPDが25以上である場合、ゲーミングモード検出器412は、(コンピューティングデバイス410が、まだゲーミングモードにない場合)コンピューティングデバイス410をゲーミングモードに入れ得る。
2.SUPDおよびバインドテクスチャドロー(BTPD)メトリック
[0035] 別の例において、ゲーミングモード検出器412は、コンピューティングデバイス410上でゲーミングの作業負荷を検出するためにSUPDおよび平均バインドテクスチャ/ドロー(BTPD)メトリックを使用する。画像がコンピューティングデバイス410のスクリーン上にドローされる前に、テクスチャは、オンスクリーン(onscreen)でレンダリングされるための特定のトライアングルにマップされ得る。ゲームアプリケーションがコンピューティングデバイス410上で実行している場合、CPU416は、CPU416がドローコールを発行し、それをGPU418に送る前に複数のテクスチャをルックアップ(look up)し得る。例えば、テクスチャは、トライアングルの1つのカラーまたは複数のカラーを示すことができ、複数のテクスチャは、フレームのために決定され得る。BTPDメトリックは、ゲーミングの作業負荷に依存し、所与のドローコールに結びつく。BTPDは、(例えば、2個のeglSwapBuffers間の)レンダリングのフレームごとのGLドローコール(例えば、glDrawElementsおよびglDrawArray)ごとになされたテクスチャコールの平均の量をトラッキングすることを含み得る。この例において、ゲーミングモード検出器412は、いくつのGL APIコール(例えば、テクスチャコール)が単一のドローコールの前になされるかをトラッキングし得る。レンダリングのフレームごとのGLドローコールごとのテクスチャコールのより高い平均の量は、より多くのテクスチャがフレームをレンダリングするために使用されることを示す。ゆえに、ゲーミングモード検出状態(gaming mode detection condition)として使用されるSUPDおよびBTPDメトリックは、OpenGL ESのゲーミングの作業負荷の広い範囲にわたってよく機能することができ、モバイルデバイス上でゲーミング中にモバイルプラットフォームによって使用される全体の電力を低減するためにプロアクティブに使用されることができる。
[0036] SUPDおよびBTPDメトリックは、単一のレンダリングされたフレームに基づいてコンピューティングデバイス410をノンゲーミングモードからゲーミングモードに(またはゲーミングモードからノンゲーミングモードに)切り替えるためにゲーミングモード検出器412によって使用され得る。このことは、しかしながら、1フレームごとのベースで連続的にゲーミングモードから、およびゲーミングモードに、いったりきたり切り替えることをもたらし得る。特定の状態を満たす持続された重い作業負荷に基づいて、コンピューティングデバイス410をノンゲーミングモードからゲーミングモードに(またはゲーミングモードからノンゲーミングモードに)切り替えることがより望ましくあり得る。そのような発見的なアプローチで、ゲーミングモードから切り替えること、およびゲーミングモードに切り替えることは、作業負荷の経歴に基づくことができ、誤検出を避け得る。
[0037] 連続するフレームの既定の量のスライディングウィンドウを組み込むいくつかの実施形態において、ゲーミングモード検出器412は、レンダリングのフレームごとのGLドローコールごとのテクスチャコールの平均の量をトラッキングする。OpenGL ESの作業負荷のM個の(例えば、5個の)連続するフレームのスライディングウィンドウのために、ゲーミングモード検出器412は、レンダリングされるためのM個の(例えば、5個の)連続するフレームの各々のためのGLドローコールごとのテクスチャコールの平均の量をトラッキングし、ここでMは、ゼロより大きい任意の整数である。例において、連続するフレームの既定の量のために、レンダリングのフレームごとのGLドローコールごとのGLコールの平均の量をトラッキングすることの結果が第2の閾値を満たすとき、およびレンダリングのフレームごとのGLドローコールごとのテクスチャコールの平均の量をトラッキングすることの結果が第3の閾値を満たすとき、ゲーミングモード検出器412は、コンピューティングデバイス410上のゲーミングの作業負荷を検出したこととなる。GPUバウンドである重い、維持された作業負荷は、この状態が満たされるとき大いに起こり得る。多くのUIのケース(UI cases)が、15のSUPD未満を有する。例において、レンダリングのフレームごとのGLドローコールごとのGLコールの平均の量をトラッキングすることの結果は、結果が15以上であるとき第2の閾値を満たし、レンダリングのフレームごとのGLドローコールごとのテクスチャコールの平均の量をトラッキングすることの結果は、結果が1より大きいとき第3の閾値を満たす。15および1の値が例によるものであること、および他の値が様々なコンピューティングデバイス410の特徴にしたがって適し得ることは理解されることとなる。
[0038] 同様に、グラフィックスライブラリコールの平均の量をトラッキングすることの結果が第2の閾値を満たさないとき、またはテクスチャコールの平均の量をトラッキングすることの結果が第3の閾値を満たさないとき、ゲーミングモード検出器412が、コンピューティングデバイス410がゲーミングアクティビティに従事していないことを決定することができ、コンピューティングデバイス410をノンゲーミングモードに切り替え得る。コンピューティングデバイス410をノンゲーミングモードに切り替えることは、CPUのCPU FMaxをリセットすること(例えば、CPU FMaxの制限を増加させること)を含み得る。例えば、レンダリングのフレームごとのGLドローコールごとのGLコールの平均の量をトラッキングすることの結果は、結果が15未満であるとき第2の閾値を満たさず、レンダリングのフレームごとのGLドローコールごとのテクスチャコールの平均の量をトラッキングすることの結果は、結果が1以下である(例えば、1を越えない)とき第3の閾値を満たさない。
[0039] SUPDの閾値は、例えば、約15、正確に15、または13−17の範囲であり得る。BTPDの閾値は、例えば、約1、正確に1、または0.8−1.2の範囲であり得る。例において、スライディングウィンドウのスパン(span)を定義する連続するフレームの既定の量は、5個のフレームである。別の例において、フレームの既定の量は、5個のフレームより大きい、または5個のフレームより少ない可能性がある。OpenGL ESの作業負荷の5個の連続するフレームのスライディングウィンドウのために、ゲーミングモード検出器412は、レンダリングされるための5個の連続するフレームの各々ごとのGLドローコールごとになされたGLコールの平均の量、およびレンダリングされるための5個の連続するフレームの各々ごとのGLドローコールごとになされたテクスチャコールの平均の量をトラッキングし得る。SUPDが15以上であり、かつBTPDが1より大きいとき、ゲーミングモード検出器412は、(コンピューティングデバイス410が、まだゲーミングモードにない場合)コンピューティングデバイス410をゲーミングモードに入れ得る。
[0040] ゲームは典型的に、1.0の平均BTPDより大きく、それらの作業負荷のトラッキングの全体にわたって2.0より大きい最大値を有し得る。その一方、UIのケースは典型的に、1.0の平均BTPD未満、または1.0の平均BTPDと同じである。多くの極端なGPUバウンド重量のゲーム(Many extreme GPU bound heavy-weight games)(例えば、Asphalt−7(商標)およびNFS−MW(商標))は、25以上のSUPDカウントを有し、一方他のゲーム(例えば、Beach−Buggy(商標)およびAsphalt−8(商標))は、15−25の範囲内でSUPDカウントを有し、それは、UIが使用するケースのうちのいくつかと同様である。ゲームは、UIが使用するケースとは違って、1より大きいそれらのBTPDカウントを有する可能性があり、それは単一のテクスチャルックアップのみを典型的に有する。
[0041] 説明されたように、SUPDカウントは、変わり得る。重い作業負荷を要求するゲームに対し、SUPDカウントは、25まで上がる見込みがある。SUPDが15より大きい場合、作業負荷は、ゲームの広いカテゴリを満たす。SUPDカウントが15と25の間である場合、ゲーミングモード検出器412は、それらが1より大きいか否かを決定するためにテクスチャアップデート(BTPD)をチェックし得る。これら2個の状態は、作業負荷がゲーミングの作業負荷であることの高い可能性に達するために、およびコンピューティングデバイス410をゲーミングモードに入れるために組み合わされ得る。言い換えれば、以下の状態がGLESの作業負荷の5個の連続するフレームのスライディングウィンドウのために満たされる場合、ゲーミングモード検出器412は、コンピューティングデバイス410をゲーミングモードに入れ得る:(SUPD>=25)の場合、または(SUPD>=15かつBTPD>1.0)の場合)。
B.ゲーミングモードに切り替える
[0042] 説明されたように、ゲーミングモード検出器412は、コンピューティングデバイス410をゲーミングモードおよび/またはノンゲーミングモードに入れ得る。いくつかの実施形態では、コンピューティングデバイス410をノンゲーミングモードからゲーミングモードに切り替えることは、CPU FMaxを低減することによってCPU416のCPU周波数を低減することを含む。このようにして、ゲーミングの作業負荷が処理のためにGPU418行きである間、コンピューティングデバイス410のパフォーマンスがおおよそ同じままである間、電力消費は、低減され得る。したがって、ユーザは、CPU416のCPU周波数が、それが少しの重いGPUの作業負荷も処理する必要がないため低減された後で、パフォーマンスのあらゆる欠如に気づかないことがある。CPU416は、2.15GHzのCPU FMaxで典型的に動作し得る。例において、ゲーミングモード検出器412が、コンピューティングデバイス410をゲーミングモードに切り替えるとき、ゲーミングモード検出器412は、CPU FMaxを2.15GHzから1.49GHzと1.72GHz間の範囲に低減する。
[0043] 別の例において、CPU416のCPU FMaxは、増加している。ゲーミングモード検出器412は、コンピューティングデバイス410が処理のためにGPU418行きであるゲーミングの作業負荷をもはや有さないことを検出し得る。CPU416のCPU周波数は、例えば、CPU FMaxの制限を取り除くことによって増加し得る。別の例において、ゲーミングモード検出器412が、コンピューティングデバイス410をノンゲーミングモードに切り替えるとき、それは、もとのデフォルトの2.15GHzにCPU FMaxを(例えば、1.49GHzと1.72GHz間の範囲から)増加させる。
[0044] CPU周波数最大値は、様々な技法を使用して低減され得る。例において、オペレーティングシステム414は、ファイルシステムノード(例えば、「/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq」ノード)をエクスポーズする(exposes)カーネルを含む。オペレーティングシステム414は、例えば、Linux(商標)オペレーティングシステムであり得る。いくつかの実施形態において、ゲーミングモード検出器412は、新しいCPU FMaxをファイルシステムノードに動的に書き込む。ゲーミングモード検出器412がコンピューティングデバイス410をノンゲーミングモードからゲーミングモードに切り替えるとき、ゲーミングモード検出器412は、現在のCPU FMax未満の新しいCPU FMaxをノードに書き込む。ゲーミングモード検出器412がコンピューティングデバイス410をゲーミングモードからノンゲーミングモードに切り替えるとき、ゲーミングモード検出器412は、現在のCPU FMaxより大きい新しいCPU FMaxをノードに書き込む。いくつかの実施形態において、ゲーミングモード検出器412は、CPU FMaxそれ自体を修正するためにプログラムされ、CPU416に新しいCPU FMaxを越えないように命令する。
[0045] 上記に説明され、ここでさらに強調されるように、図1−2は、単に例であり、それらは、特許請求の範囲を過度に限定するべきでない。
III.例示的な方法
[0046] 図3は、いくつかの実施形態にしたがって、少なくとも1つのCPUのCPU周波数をスロットリングする例示的な方法900を例示する流れ図である。方法900は、限定していると意味されず、他のアプリケーションで使用され得る。
[0047] ブロック905において、レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量は、トラッキングされる。例において、このことは、ゲーミングモード検出器412によって行われる。ブロック910において、CPUを含むコンピューティングデバイス上のゲーミングの作業負荷は、レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールのトラッキングされた平均の量に基づいて検出される。例において、ゲーミングモード検出器412は、CPU416を含むコンピューティングデバイス410上のゲーミングの作業負荷のためにこの検出を行う。ブロック920において、コンピューティングデバイスは、ゲーミングモードに切り替えられ、ここで、コンピューティングデバイスをゲーミングモードに切り替えることは、コンピューティングデバイス上で実行しているCPUのCPU周波数最大値を低減することを含む。例において、ゲーミングモード検出器412は、切り替えることを行い、それは、コンピューティングデバイス410上で実行しているCPU416のCPU周波数最大値を低減することを含む。
[0048] 追加のプロセスが上記で説明されたブロック905−920の前、ブロック905−920の間、またはブロック905−920の後で行われ得ることも理解される。本明細書で説明された方法900のブロックの1つ以上が、所望に応じて異なるシーケンスで省略され、組み合わされ、または行われ得ることも理解される。ある実施形態において、ブロック905−920は、CPU416の任意の数のCPUコアのために行われ得る。
IV.例示的なコンピューティングシステム
[0049] 図4は、本明細書で説明された実施形態のうちの任意のものをインプリメントすることに適している例示的なコンピュータシステム1000のブロック図である。様々なインプリメンテーションにおいて、コンピュータシステム1000は、コンピューティングデバイス410であり得る。コンピュータシステム1000は、1つ以上のプロセッサを含み得る。コンピュータシステム1000は、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、任意の他の磁気媒体、CD−ROM、任意の他の光媒体、RAM、PROM、EPROM、FLASH−EPROM、任意の他のメモリチップまたはカートリッジ、および/またはプロセッサまたはコンピュータが読み取るために適合される任意の他の媒体を含むグループから各々選択される1つ以上の記憶デバイスをさらに含み得る。1つ以上の記憶デバイスは、コンピュータネットワーク(示されていない)を使用してクライアントまたはサーバと結合される1つ以上のコンピューティングデバイスおよび/またはコンピュータプログラム(例えば、クライアント)が利用可能であり得る記憶された情報を含み得る。コンピュータネットワークは、LAN、WAN、イントラネット、インターネット、クラウド、ならびに/あるいはシステムの中でコンピューティングデバイスおよび/またはコンピュータプログラムを相互に接続する能力があるそれらのネットワークの任意の組み合わせを含むネットワークの任意のタイプであり得る。
[0050] コンピュータシステム1000は、バス1002、またはコンピュータシステム1000の様々なコンポーネント間で情報データ、信号、および情報を通信するための他の通信メカニズムを含む。コンポーネントは、例えば、キーパッド/キーボードからキーを選択すること、または1つ以上のボタンまたはリンクを選択すること等のユーザアクション(user actions)を処理するためのインプット/アウトプット(I/O)コンポーネント1004を含み、対応する信号をバス1002に送る。I/Oコンポーネント1004は、例えば、ディスプレイ1011等のアウトプットコンポーネント、および例えば、カーソルコントロール1013(例えば、キーボード、キーパッド、マウス等)のようなインプットコントロールも含み得る。
[0051] オーディオI/Oコンポーネント1005は、オーディオ信号を情報信号にコンバートすることによって、ユーザが情報をインプットするために音声を使用することを可能にすることも含まれ得る。オーディオI/Oコンポーネント1005は、ユーザが音声を聞くことを可能にし得る。トランシーバまたはネットワークインタフェース1006は、通信リンク1018を介してコンピュータシステム1000と他のデバイス間で信号をネットワークに送信および受信する。ある実施形態において、送信は、ワイヤレスであるが、他の送信媒体および方法も適切であり得る。マイクロコントローラ、デジタル信号プロセッサ(DSP)、または他の処理コンポーネントであり得るプロセッサ416は、例えば、コンピュータシステム1000のディスプレイ1011上のディスプレイのための、または通信リンク1018を介する他のデバイスへの送信のため等のこれらの様々な信号を処理する。ゲーミングモード検出器412は、プロセッサ416で実行され得る。プロセッサ416は、他のデバイスへの、例えば、クッキーまたはIPアドレス等の情報の送信もコントロールし得る。
[0052] コンピュータシステム1000はまた、GPU418を含む。プロセッサ416は、バス1002を介して、コマンドのストリーム(stream of commands)をGPU418に送ることができ、レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量およびテクスチャコールの平均の量をトラッキングし得る。
[0053] コンピュータシステム1000のコンポーネントはまた、システムメモリコンポーネント1014(例えば、RAM)、静的な記憶装置コンポーネント(static storage component)1016(例えば、ROM)、および/またはコンピュータ可読媒体1017を含む。コンピュータシステム1000は、プロセッサ1012によって特定のオペレーションを、およびシステムメモリコンポーネント1014に包含される命令の1つ以上のシーケンスを実行することによって他のコンポーネントを行う。ロジックは、コンピュータ可読媒体1017で符号化されることができ、それは、実行のためのプロセッサ1012への命令を提供することに関与する任意の媒体を指し得る。そのような媒体は、不揮発性媒体、揮発性媒体、および送信媒体を含むがそれらに限定されない、多くの形式を取り得る。様々な実施形態において、不揮発性媒体は、光、または磁気ディスク、または個体のドライブを含み、揮発性媒体は、例えば、システムメモリコンポーネント1014等の動的なメモリを含み、送信媒体は、バス1002を含むワイヤを含む、同軸ケーブル、銅線、および光ファイバーを含む。ある実施形態において、ロジックは、非一時的なコンピュータ可読媒体で符号化される。コンピュータ可読媒体517は、プロセッサ512によって、またはプロセッサ512に関連して使用される命令を包含する、記憶する、通信する、伝播する、またはトランスポートすることができる任意の装置であり得る。コンピュータ可読媒体517は、電子、磁気、光学、電磁気、赤外線、または半導体デバイスまたは伝播媒体、または任意の他のメモリチップまたはカートリッジ、あるいはコンピュータが読み取るために適合される任意の他の媒体であり得る。ある例において、送信媒体は、例えば、無線波、光学、および赤外線データ通信の間に生成されるそれら等の、音響波または光波の形式を取り得る。
[0054] バス1002がプロセッサ416とGPU418間でデータを配信する経路であるように例示されるが、それは、限定していると意図されず、プロセッサ416とGPU418間でデータを配信するための異なるメカニズムを使用する他の実施形態が、本開示の範囲内である。
[0055] 本開示の様々な実施形態において、本開示を実施するための命令シーケンスの実行が、コンピュータシステム1000によって行われ得る。本開示の様々な他の実施形態において、通信リンク1018によってネットワーク(例えば、LAN、WLAN、PTSN、および/または電気通信、モバイル、およびセルラ電話ネットワークを含む、様々な他のワイヤードまたはワイヤレスネットワーク等)に結合される複数のコンピュータシステム1000は、お互いとの連携で本開示を実施するための命令シーケンスを行い得る。
[0056] 適用可能な場合、本開示によって提供される様々な実施形態は、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェアの組み合わせを使用してインプリメントされ得る。また、適用可能な場合、本明細書に記載された様々なハードウェアコンポーネントおよび/またはソフトウェアコンポーネントは、本開示の趣旨から逸脱することなく、ソフトウェア、ハードウェア、および/またはそれら両方を含む複合のコンポーネントに組み合わされ得る。適用可能な場合、本明細書に記載された様々なハードウェアコンポーネントおよび/またはソフトウェアコンポーネントは、本開示の趣旨から逸脱することなく、ソフトウェア、ハードウェア、またはそれら両方を含むサブコンポーネントに分けられ得る。加えて、適用可能な場合、ソフトウェアコンポーネントは、ハードウェアコンポーネントとしてインプリメントされることができ、逆の場合も同じであり得ることは、企図される。
[0057] 本開示にしたがってアプリケーションソフトウェアは、1つ以上のコンピュータ可読媒体上に記憶され得る。本明細書で識別されるアプリケーションソフトウェアは、ネットワーク化されているおよび/またはそうでない、1つ以上の汎用または専用コンピュータおよび/またはコンピュータシステムを使用してインプリメントされ得ることもまた企図される。適用可能な場合、本明細書で説明された様々なステップの順番は、本明細書で説明された特徴を提供するために、変更され得、複合のステップに組み合わされ得、および/またはサブステップに分割され得る。
[0058] 先の開示は、開示されたものに役立つ特定の分野またはまさにその形式に本開示を限定することは意図されない。そのようなものとして、本明細書に明示的に説明されたか暗示的に説明されたかに関わらず、本開示への様々な代替の実施形態および/または修正が開示を踏まえて見込まれることが企図される。本開示の範囲から逸脱することなく、形式において、詳細に、変更がなされ得る。ゆえに、本開示は、特許請求の範囲によってのみ限定される。

Claims (30)

  1. 少なくとも1つの中央処理装置(CPU)のCPU周波数をスケーリングする方法であって、
    レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量をトラッキングすることと、
    CPUを含むコンピューティングデバイス上のゲーミングの作業負荷を、レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの前記平均の量を前記トラッキングすることに基づいて、検出することと、
    前記コンピューティングデバイスをゲーミングモードに切り替えることと、ここにおいて、前記コンピューティングデバイスを前記ゲーミングモードに前記切り替えることは、前記コンピューティングデバイス上で実行している前記CPUのCPU周波数最大値(FMax)を低減することを含む、
    を備える、方法。
  2. N個の連続するフレームのスライディングウィンドウは、定義され、前記トラッキングすることは、レンダリングの前記N個の連続するフレームの各々ごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量をトラッキングすることを含む、請求項1に記載の方法。
  3. 前記トラッキングすることの結果が閾値を満たさないとき、前記コンピューティングデバイスが、ゲーミングモードを処理していないことを検出することと、
    前記コンピューティングデバイスをノンゲーミングモードに切り替えることと、ここにおいて、前記コンピューティングデバイスをノンゲーミングモードに前記切り替えることは、前記CPU FMaxを最大の許可された周波数にリセットすることを含む、
    をさらに含む、請求項1に記載の方法。
  4. 前記結果が25未満であるとき、前記結果は、前記閾値を満たさない、請求項3に記載の方法。
  5. レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたテクスチャコールの平均の量をトラッキングすることと、
    前記CPUを含む前記コンピューティングデバイス上の前記ゲーミングの作業負荷を、レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたテクスチャコールの平均の量を前記トラッキングすることに基づいて、検出することと、
    をさらに含む、請求項3に記載の方法。
  6. M個の連続するフレームの第2のスライディングウィンドウは、定義され、テクスチャコールの平均の量を前記トラッキングすることは、レンダリングの前記M個の連続するフレームの各々のためのグラフィックスライブラリドローコールごとになされたテクスチャコールの前記平均の量をトラッキングすることを含む、請求項5に記載の方法。
  7. グラフィックスライブラリコールの平均の量を前記トラッキングすることの第1の結果が第2の閾値を満たし、かつテクスチャコールの平均の量を前記トラッキングすることの第2の結果が第3の閾値を満たすとき、前記ゲーミングの作業負荷は、前記コンピューティングデバイス上で検出される、請求項6に記載の方法。
  8. グラフィックスライブラリコールの平均の量を前記トラッキングすることの前記第1の結果が前記第2の閾値を満たさないとき、またはテクスチャコールの平均の量を前記トラッキングすることの前記第2の結果が前記第3の閾値を満たさないとき、前記コンピューティングデバイスが、ゲーミングの作業負荷を処理していないことを検出する、をさらに含む、請求項7に記載の方法。
  9. 連続するフレームの第1のスライディングウィンドウは、5であり、かつ連続するフレームの前記第2のスライディングウィンドウは、5である、請求項8に記載の方法。
  10. 前記第1の結果が15以上であるとき、前記第1の結果は、前記第2の閾値を満たし、前記第2の結果が1より大きいとき、前記第2の結果は、前記第3の閾値を満たす、請求項8に記載の方法。
  11. グラフィックスライブラリコールの平均の量を前記トラッキングすることは、N個の連続するフレームのあらゆるスライディングウィンドウのために、レンダリングの前記N個の連続するフレームの各々のためのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの前記平均の量をトラッキングすることを含む、請求項1に記載の方法。
  12. レンダリングのM個の連続するフレームの各々のためのグラフィックスライブラリドローコールごとになされたテクスチャコールの平均の量をトラッキングすること、
    をさらに含む、請求項11に記載の方法。
  13. グラフィックスライブラリコールの平均の量を前記トラッキングすることの結果が第1の閾値を満たすとき、前記検出することは、前記コンピューティングデバイス上の前記ゲーミングの作業負荷を検出することを含む、請求項12に記載の方法。
  14. グラフィックスライブラリコールの平均の量を前記トラッキングすることの第1の結果が第2の閾値を満たし、かつテクスチャコールの平均の量を前記トラッキングすることの第2の結果が第3の閾値を満たすとき、前記検出することは、前記コンピューティングデバイス上の前記ゲーミングの作業負荷を検出することを含む、請求項13に記載の方法。
  15. 前記第1の結果が25以上であるとき、前記第1の結果は、前記第1の閾値を満たし、前記第1の結果が15以上であるとき、前記第1の結果は、前記第2の閾値を満たし、前記第2の結果が1より大きいとき、前記第2の結果は、前記第3の閾値を満たす、請求項14に記載の方法。
  16. CPU FMaxを前記低減することは、前記CPUの前記CPU FMaxを1.49GHzと1.72GHz間の範囲に制限することを含む、請求項1に記載の方法。
  17. 前記コンピューティングデバイスは、カーネルを含み、CPU FMaxを前記低減することは、前記カーネルの中でAPIコールを呼び出すことを含む、請求項1に記載の方法。
  18. 前記コンピューティングデバイスは、モバイルデバイスである、請求項1に記載の方法。
  19. 前記モバイルデバイスは、スマートフォン、タブレット、ラップトップ、または携帯情報端末である、請求項18に記載の方法。
  20. 少なくとも1つの中央処理装置(CPU)のCPU周波数をスケーリングするためのシステムであって、
    CPUと、
    レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量をトラッキングし、前記CPUを含むコンピューティングデバイス上のゲーミングの作業負荷を、グラフィックスライブラリコールの前記トラッキングされた平均の量の結果に基づいて、検出するゲーミングモード検出器と、ここにおいて、前記ゲーミングの作業負荷を検出することに応答して、前記ゲーミングモード検出器は、前記コンピューティングデバイスをゲーミングモードに切り替え、前記コンピューティングデバイス上で実行している前記CPUのCPU FMaxを低減する、
    を備えるシステム。
  21. 前記ゲーミングモード検出器は、N個のフレームのスライディングウィンドウを定義し、レンダリングの前記N個の連続するフレームの各々のためのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの前記平均の量をトラッキングし、ここにおいて、前記結果が閾値を満たすとき、前記ゲーミングモード検出器は、前記コンピューティングデバイス上の前記ゲーミングモードを検出する、請求項20に記載のシステム。
  22. 前記コンピューティングデバイスが前記ゲーミングモードにあることを決定され、かつ前記結果が前記閾値を満たさないとき、前記ゲーミングモード検出器は、前記コンピューティングデバイスをノンゲーミングモードに切り替える、請求項21に記載のシステム。
  23. 前記結果が25以上であるとき、前記結果は、前記閾値を満たす、請求項21に記載のシステム。
  24. 前記ゲーミングモード検出器は、レンダリングのM個の連続するフレームの各々のためのグラフィックスライブラリドローコールごとになされたテクスチャコールの平均の量をトラッキングし、ここにおいて、グラフィックスライブラリコールの前記平均の量をトラッキングすることの第1の結果が第2の閾値を満たし、かつテクスチャコールの前記平均の量をトラッキングすることの第2の結果が第3の閾値を満たすとき、前記ゲーミングモード検出器は、前記コンピューティングデバイス上の前記ゲーミングの作業負荷を検出する、請求項21に記載のシステム。
  25. 前記第1の結果が25以上であるとき、前記第1の結果は、前記第1の閾値を満たし、前記第1の結果が15以上であるとき、前記第1の結果は、前記第2の閾値を満たし、前記第2の結果が1より大きいとき、前記第2の結果は、前記第3の閾値を満たす、請求項24に記載のシステム。
  26. 前記ゲーミングモード検出器は、前記CPUの前記CPU FMaxを前記CPUの最大の許可された周波数レベルにリセットし、前記CPUの前記CPU FMaxを増加させる、請求項20に記載のシステム。
  27. オペレーションを行うためのコンピュータ実行可能な命令を記憶したコンピュータ可読媒体であって、
    レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量をトラッキングすることと、
    CPUを含むコンピューティングデバイス上のゲーミングの作業負荷を、レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量を前記トラッキングすることに基づいて、検出することと、
    前記コンピューティングデバイスをゲーミングモードに切り替えることと、ここにおいて、前記コンピューティングデバイスをゲーミングモードに前記切り替えることは、前記コンピューティングデバイス上で実行している前記CPUのCPU FMaxを低減することを含む、
    を備える、コンピュータ可読媒体。
  28. 前記オペレーションは、
    N個の連続するフレームのスライディングウィンドウを定義することと、前記トラッキングすることは、レンダリングの前記N個の連続するフレームの各々のためのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量をトラッキングすることを含む、
    グラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの前記平均の量の結果が閾値を満たすとき、前記コンピューティングデバイス上の前記ゲーミングの作業負荷を検出することと、
    をさらに含む、請求項27に記載のコンピュータ可読媒体。
  29. 前記オペレーションは、
    レンダリングのM個の連続するフレームの各々のためのグラフィックスライブラリドローコールごとになされたテクスチャコールの平均の量をトラッキングすることと、
    グラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの前記平均の量の結果が第2の閾値を満たし、かつテクスチャコールの前記平均の量の結果が第3の閾値を満たすとき、前記コンピューティングデバイス上で前記ゲーミングの作業負荷を検出することと、前記第1の閾値が、前記第2の閾値とは異なる、
    をさらに含む、請求項28に記載のコンピュータ可読媒体。
  30. 少なくとも1つの中央処理装置(CPU)のCPU周波数をスケーリングするための装置であって、
    レンダリングのフレームごとのグラフィックスライブラリドローコールごとになされたグラフィックスライブラリコールの平均の量をトラッキングするための手段と、
    CPUを含むコンピューティングデバイス上のゲーミングの作業負荷を検出するための手段と、
    前記コンピューティングデバイス上で実行している前記CPUのCPU FMaxを低減するための手段と、
    を備える、装置。
JP2016529907A 2013-11-13 2014-11-11 ゲーミングの作業負荷のためのcpu周波数を動的にスロットリングするシステムおよび方法 Expired - Fee Related JP6321167B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361903843P 2013-11-13 2013-11-13
US61/903,843 2013-11-13
US14/448,556 US9760967B2 (en) 2013-11-13 2014-07-31 System and method of dynamically throttling CPU frequency for gaming workloads
US14/448,556 2014-07-31
PCT/US2014/065045 WO2015073445A1 (en) 2013-11-13 2014-11-11 System and method of dynamically throttling cpu frequency for gaming workloads

Publications (3)

Publication Number Publication Date
JP2017505931A true JP2017505931A (ja) 2017-02-23
JP2017505931A5 JP2017505931A5 (ja) 2017-11-24
JP6321167B2 JP6321167B2 (ja) 2018-05-09

Family

ID=53043431

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016529907A Expired - Fee Related JP6321167B2 (ja) 2013-11-13 2014-11-11 ゲーミングの作業負荷のためのcpu周波数を動的にスロットリングするシステムおよび方法

Country Status (6)

Country Link
US (1) US9760967B2 (ja)
EP (1) EP3069211A1 (ja)
JP (1) JP6321167B2 (ja)
KR (1) KR101846397B1 (ja)
CN (1) CN105723298A (ja)
WO (1) WO2015073445A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016197152A1 (en) 2015-06-05 2016-12-08 Hassan Ihs Dynamic frequency scaling based on supply current monitoring
JP6658136B2 (ja) * 2016-03-14 2020-03-04 コニカミノルタ株式会社 描画処理装置、画像処理装置、描画処理方法及び描画処理プログラム
US10175731B2 (en) * 2016-06-17 2019-01-08 Microsoft Technology Licensing, Llc Shared cooling for thermally connected components in electronic devices
CN107066073B (zh) * 2017-03-02 2020-07-24 联想(北京)有限公司 一种控制方法及电子设备
US10319065B2 (en) * 2017-04-13 2019-06-11 Microsoft Technology Licensing, Llc Intra-frame real-time frequency control
CA3091602C (en) 2018-05-31 2024-05-28 Huawei Technologies Co., Ltd. Apparatus and method for command stream optimization and enhancement
US11262831B2 (en) 2018-08-17 2022-03-01 Hewlett-Packard Development Company, L.P. Modifications of power allocations for graphical processing units based on usage
US10955900B2 (en) 2018-12-04 2021-03-23 International Business Machines Corporation Speculation throttling for reliability management
US10936041B2 (en) * 2019-03-29 2021-03-02 Intel Corporation Adjusting a throttling threshold in a processor
CN111240835B (zh) * 2020-01-06 2024-04-16 北京小米移动软件有限公司 Cpu工作频率调整方法、cpu工作频率调整装置及存储介质
US11467621B2 (en) * 2020-02-28 2022-10-11 Qualcomm Incorporated Computer processing unit intra-frame clock and voltage scaling based on graphics application awareness
KR20230025666A (ko) * 2020-06-23 2023-02-22 퀄컴 인코포레이티드 디스플레이들에 대한 이미지 생성을 위한 전력 요구 감소
US11763414B2 (en) * 2020-09-23 2023-09-19 Ati Technologies Ulc Glitchless GPU switching at a multiplexer
CN116704087B (zh) * 2022-10-17 2024-02-27 荣耀终端有限公司 一种参数调整方法及电子设备
CN118429173A (zh) * 2023-02-01 2024-08-02 华为技术有限公司 渲染方法、装置、电子设备以及计算机可读存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7770034B2 (en) 2003-12-16 2010-08-03 Intel Corporation Performance monitoring based dynamic voltage and frequency scaling
US7711966B2 (en) 2004-08-31 2010-05-04 Qualcomm Incorporated Dynamic clock frequency adjustment based on processor load
ATE535856T1 (de) 2005-07-14 2011-12-15 Nxp Bv Verwendung von vorgeschichtlichen lastprofilen zur dynamischen justierung der betriebsfrequenz und verfügbaren leistung für einen prozessorkern eines in der hand gehaltenen multimedia-geräts
US8698812B2 (en) * 2006-08-04 2014-04-15 Ati Technologies Ulc Video display mode control
US8001531B1 (en) 2007-07-30 2011-08-16 Nvidia Corporation Translation of a shader assembly language binary for debugging a graphics application running on a remote device
US8184092B2 (en) * 2008-05-22 2012-05-22 International Business Machines Corporation Simulation of writing on game consoles through the use of motion-sensing technology
US8698823B2 (en) * 2009-04-08 2014-04-15 Nvidia Corporation System and method for deadlock-free pipelining
JP2011060193A (ja) 2009-09-14 2011-03-24 Sharp Corp 携帯機器、プログラム、および記録媒体
US8368702B2 (en) 2010-01-06 2013-02-05 Apple Inc. Policy-based switching between graphics-processing units
US9196013B2 (en) 2011-10-31 2015-11-24 Apple Inc. GPU workload prediction and management
US9292070B2 (en) 2012-03-05 2016-03-22 Advanced Micro Devices, Inc. Method and apparatus with stochastic control based power saving operation

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DIETRICH, BENEDIKT: "Time Series Characterization of Gaming Workload for Runtime Power Management", IEEE TRANSACTIONS ON COMPUTERS, vol. vol. 64, No. 1, JPN6017044414, 8 October 2013 (2013-10-08), US, pages pp. 260-273 *
SHENG GUO, PRACTICAL GAME PERFORMANCE ANALYSIS USING INTEL GRAPHICS PERFORMANCE ANALYZER, JPN6017044416, 31 December 2011 (2011-12-31), US, pages 1 - 22 *

Also Published As

Publication number Publication date
JP6321167B2 (ja) 2018-05-09
CN105723298A (zh) 2016-06-29
US20150130821A1 (en) 2015-05-14
KR101846397B1 (ko) 2018-04-06
KR20160084446A (ko) 2016-07-13
EP3069211A1 (en) 2016-09-21
WO2015073445A1 (en) 2015-05-21
US9760967B2 (en) 2017-09-12

Similar Documents

Publication Publication Date Title
JP6321167B2 (ja) ゲーミングの作業負荷のためのcpu周波数を動的にスロットリングするシステムおよび方法
US11586451B2 (en) Resource management with dynamic resource policies
US10347013B2 (en) Session idle optimization for streaming server
JP5945010B2 (ja) 負荷分散システム、方法、プログラム、記録媒体
JP6333180B2 (ja) オンラインゲーム
US10044576B2 (en) Estimation of power consumption of individual websites
KR20130108609A (ko) 범용 프로세서와 그래픽 프로세서 사이의 부하 분산
US20130268573A1 (en) Processing load distribution
US20220023760A1 (en) Virtual object selection method and apparatus, device, and storage medium
US20170164290A1 (en) Reduced power consumption for browsing websites
US9015711B2 (en) Power management of video display devices by virtual machines
US20130055245A1 (en) Mechanism for flow control-based virtual machine (vm) request queuing
CN107835984B (zh) 热减轻用户体验
CN112799696A (zh) 固件升级方法和相关设备
US11745099B2 (en) Systems and methods of transferring state data for applications
JP2020534588A (ja) ビュー切り替え
CN116601602A (zh) 对用户透明地预加载应用
WO2023024894A1 (zh) 一种多设备同步播放方法及装置
JP6550418B2 (ja) オンラインゲーム
CN116737338A (zh) 处理方法、装置、设备和存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171012

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171012

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20171012

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20171110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180221

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180306

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180404

R150 Certificate of patent or registration of utility model

Ref document number: 6321167

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees