JP2013527516A - コンピュータシステムの細粒度パフォーマンスリソース管理 - Google Patents

コンピュータシステムの細粒度パフォーマンスリソース管理 Download PDF

Info

Publication number
JP2013527516A
JP2013527516A JP2013501534A JP2013501534A JP2013527516A JP 2013527516 A JP2013527516 A JP 2013527516A JP 2013501534 A JP2013501534 A JP 2013501534A JP 2013501534 A JP2013501534 A JP 2013501534A JP 2013527516 A JP2013527516 A JP 2013527516A
Authority
JP
Japan
Prior art keywords
task
rate
processor
clock
performance
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.)
Pending
Application number
JP2013501534A
Other languages
English (en)
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.)
VirtualMetrix Inc
Original Assignee
VirtualMetrix 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 VirtualMetrix Inc filed Critical VirtualMetrix Inc
Publication of JP2013527516A publication Critical patent/JP2013527516A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • 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
    • G06F1/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • 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
    • 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/329Power saving characterised by the action undertaken by task scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/507Low-level
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Power Sources (AREA)
  • Hardware Redundancy (AREA)

Abstract

プロセッサシステムによる複数のタスクの実行が監視される。この監視に基づき、パフォーマンスリソースの調整を要求するタスクは、各タスクに対して、プログレスエラーもしくはプログレス制限エラーのうちの少なくとも1つを計算することによって識別される。その後、各識別されたタスクに対して割り当てられたプロセッサシステムのパフォーマンスリソースが調整される。そのような調整は、タスクを実行しているプロセッサシステムにおける少なくとも1つのプロセッサのクロックレートを調整するステップ、タスクによって利用されるべきキャッシュ及び/もしくはバッファの量を調整するステップ、並びに/又はタスクによって利用されるべき入力/出力(I/O)帯域幅の量を調整するステップを含むことができる。関連したシステム、装置、方法、及び物がまた説明される。

Description

ここで説明された主題は、プロセッサシステムにおいて実行するタスクによって利用されたパフォーマンスリソースの管理のためのシステム、方法、及び物に関する。
関連出願の相互参照
本出願は、2010年3月26日付けで出願された、発明の名称が「コンピュータシステムの細粒度パフォーマンスリソース管理のための方法及び装置」の米国仮出願第61/341,170号、及び2010年3月26日付けで出願された、発明の名称が「プロセッサキャッシュメモリ占有の制御のための方法及び装置」の米国仮出願第61/341,069号に対して優先権の利益を主張し、それらの開示が参照によりここに組み込まれる。
コンピューティングシステムは、(プロセッサ、メモリ、周辺機器、バスなどの)物理リソースからだけでなく、例えばプロセッササイクル、クロック速度、メモリ空間並びにI/O帯域幅及びメイン/キャッシュメモリの空間などのパフォーマンスリソースからも構成される。伝統的なアプローチでは、パフォーマンスリソースは一般的に、非効率的に管理されていたか、もしくはまったく管理されていなかった。結果として、プロセッサは十分に利用されず、過剰なエネルギーが消費され、それらのパフォーマンスポテンシャルのいくつかが奪われた。
米国特許出願公開第2009/0,055,829号明細書 米国特許出願公開第2011/0,238,919号明細書
多くのコンピュータシステムは、システム及び/又は1つもしくは複数のプロセッサクロック周波数を動的に制御することができる。クロック周波数を低減するとプロセッサ供給電圧を低くすることが可能となるという半導体スケーリング効果によって、クロック周波数を低減させることによって電力消費量を劇的に低減させることができる。従って、コンピュータシステムが必要に応じて実行するという条件で、クロック周波数を減少することができることは、エネルギー消費量、熱発生などの減少へと導く。同様に、関連したインターフェース及び/もしくは周辺機器のみならず多くのプロセッサは、それらがそれらの1つもしくは複数の動作状態と比較して非常に少ない量のエネルギーを消費してもよい場合には、アイドルステートもしくはスリープステートに急速に出入りすることができる。クロック周波数を低減させることと同様に、1つもしくはそれ以上のプロセッサ及び/又はコンピュータシステムの一部もしくは全部をスリープステートにセットすることが、コンピュータシステムが必要に応じて実行されるという条件で全体のエネルギーの消費量を減少させるために使用される。
実際には、1つもしくはそれ以上のプロセッサがアイドルステートとされるかもしくはより低いクロック速度で実行することができそれ故にエネルギーを節約することができるとき、従来の電力管理アプローチはアイドル時間もしくは低速システム応答を用いた「使用モード」を検出する。「使用モード」に基づいた電力管理はしばしば、非常に粒度が粗すぎて、その間ずっとすべてのエネルギー削減機会を効率的に利用することはできない。
プロセッサシステムによる複数のタスクの実行が監視される。この監視に基づき、追加的なパフォーマンスリソースを要求するタスクが、各タスクに対して、プログレスエラー及び/又は1つもしくはそれ以上のプログレス制限エラーを計算することによって識別される。その後、各識別されたタスクに対して割り当てられたプロセッサシステムのパフォーマンスリソースが調整される。そのような調整は、タスクを実行するプロセッサシステムにおける少なくとも1つのプロセッサのクロックレートを調整するステップと、タスクによって利用されるべきキャッシュ及び/もしくはバッファの量を調整するステップと、並びに/又はタスクによって利用されるべき入力/出力(I/O)帯域幅の量を調整するステップとを含むことができる。
各タスクは、単一のタスク、タスクのグループ、スレッド、スレッドのグループ、単一のステート機械、ステート機械のグループ、単一の仮想機械、及び仮想機械のグループを含むグループ、並びにそれらの任意の組み合わせから選択される。プロセッサは、単一のプロセッサ、マルチプロセッサ、(例えば、同時もしくは擬似同時マルチスレッディングなどの)マルチスレッディングを支持するプロセッサシステム、及び/又はマルチコアプロセッサを含むことができる。
実行している/実行されるべきタスクに関連付けられた監視されたパフォーマンスメトリクス(数的指標)は変更することができる。例えば、最初にデータ転送が監視され、後でプロセッササイクルが監視される。
プログレスエラーレートは、タスクによって完了された作業とタスクによって完了されるべき作業との間の差と等しくすることができる。代替には、プログレスエラーレートは、完了された作業に対する作業完了レートとタスクに対して期待された作業レートとの間の差に等しい。各タスクは、関連した実行優先度及び実行デッドラインを有することができる。(そのような優先度及び/もしくはデッドラインはスケジューラによって特定され、並びに/又はそれはレート適応関数もしくはレート適応関数に対するパラメータの一部として得られ/使用される。)そのような場合において、プロセッサシステムのパフォーマンスリソースは、各識別されたタスクがその対応する実行デッドラインより前にその対応する実行優先度に従って完了されるように調整される。
パフォーマンスリソースはタスク毎のベースに対して調整される。各タスクは、タスクに対する実行優先度及び実行デッドラインを確立するために使用される関連したパフォーマンスプロファイルを有することができる。関連したパフォーマンスプロファイルは、少なくとも1つのパフォーマンスパラメータを特定することができる。パフォーマンスパラメータは、例えば、タスクによって使用されるべき初期の最大の及び/もしくは最小の量のバッファを特定するキャッシュ占有割当量とすることができ、そのキャッシュ占有割当量は、プログレスエラー、タスクに対するキャッシュミスレート、キャッシュヒットレートもしくはパフォーマンスを示す任意の他のメトリクスのうちの少なくとも1つに基づいて動的に調整される。
パフォーマンスパラメータはタスクの実行に対する初期の帯域幅要件を特定することができ、そのような帯域幅要件はタスクの実行の間に動的に調整される。
各タスクによって要求されたプロセッサクロックデマンドレートが決定される。そのような決定に基づき、すべてのタスクに対して決定されたプロセッサクロックデマンドレートに基づいたアグリゲートクロックデマンドレートが計算される。それに応じて、プロセッサシステムクロックレートはアグリゲートクロックデマンドレートを収容するように調整される。いくつかのケースでは、プロセッサシステムクロックレートは、オーバヘッドデマンドレートを加算したアグリゲートクロックデマンドレートに調整される。プロセッサクロックデマンドレートは、時間間隔によって分割されたタスクの完了に対する期待された実行時間を用いた現在のプロセッサシステムクロックレートの積として計算される。各タスクに対するプロセッサクロックデマンドレートは、タスクのパフォーマンスに影響を及ぼすエラーに基づいて更新され、結果として、アグリゲートクロックデマンドレートは、各タスクに対して更新されたプロセッサクロックデマンドレートに基づいて更新される。各タスクに対するプロセッサクロックデマンドレートもしくはアグリゲートクロックデマンドレートの更新は、急速なレート変化を弱めるかもしくは強めるために少なくとも1つの適応関数を使用することができる。スケジューラもしくは(例えば、タスクがブロックされるI/O要求を完了するI/Oサブシステムなどの、)タスクが実行できる状態にあるときを決定する他のシステム構成要素によって決定されるように、タスクが実行できる状態にあるときに各タスクに対するプロセッサクロックレートはアグリゲートクロックデマンドレートに対して加算される。アグリゲートクロックデマンドレートは、ある期間にわたって計算され、その結果、時にはプロセッサシステムクロックレートはアグリゲートクロックデマンドレートよりも高く、またある時にはプロセッサシステムクロックレートはアグリゲートクロックデマンドレートよりも低くなる。
プロセッサシステムは、少なくとも2つのプロセッサを含むことができ、アグリゲートクロックデマンドレートは、少なくとも2つのプロセッサのそれぞれに対して決定され、対応するプロセッサを用いて実行するタスクに対するプロセッサデマンドレートに基づくことができる。そのような装置において、少なくとも2つのプロセッサのそれぞれに対するクロックレートは別々にかつそれ相応に調整される。
各タスクは物理メモリに割り当てられる。少なくとも1つのタスクは、物理メモリの少なくとも1つの部分に対してマッピングされた少なくとも1つの仮想メモリ空間を利用することができる。
もう1つの態様では、プロセッサシステムによる複数のタスクの実行が監視されて各タスクに対して少なくとも1つの監視された値を決定する。少なくとも1つの監視された値は、プロセッサシステムによって対応するタスクのパフォーマンスに影響を及ぼす少なくとも1つのファクタを特徴付ける。各タスクは、少なくとも1つのパフォーマンスパラメータを特定する、関連したタスクパフォーマンスプロファイルを有する。各タスクに対して、対応する監視された値は関連したタスクパフォーマンスプロファイルにおいて特定された、対応する少なくとも1つのパフォーマンスパラメータと比較される。この比較に基づき、比較に基づいた各タスクに対して、タスクの実行のために利用されたパフォーマンスリソースが調整されるべきかどうか、もしくはタスクの実行のために利用されたパフォーマンスリソースが維持されるべきかどうかが決定される。その後、パフォーマンスリソースは、そのようなタスクに対して割り当てられたパフォーマンスリソースが調整されるべきであることが決定された各タスクに対して、プロセッサクロックレートを修正することによって、及びタスクに対して割り当てられたパフォーマンスリソースが維持されるべきであることが決定された各タスクに対してパフォーマンスリソースを維持することによって調整される。
監視された値は、タスクによって完了された作業量を特徴付けることができる。タスクによって完了された作業量は、タスクを実行するときに転送されたデータ量と、タスクを実行するときに完了されたプロセッサ命令の数、プロセッササイクル、実行時間などのうちの少なくとも1つから得られる。
いくつかの変形例では、現在のプログラムステートが各タスクに対して決定され、関連したタスクパフォーマンスプロファイルは、異なるパフォーマンスパラメータを有する2つもしくはそれ以上のプログラムステートを特定する。そのような装置によって、監視された値は、現在のプログラムステートに対するパフォーマンスパラメータと比較される。(監視されることが変更される(例えば、命令データ転送など)。)
実行されたタスクの少なくとも1つのパフォーマンスプロファイルは、対応するパフォーマンスパラメータが変更されるように修正される。結果として、監視された値は変更されたパフォーマンスパラメータと比較される。
各タスクによって要求されたプロセッサクロックデマンドレートが決定される。その後、アグリゲートクロックデマンドレートは、すべてのタスクに対して決定されたプロセッサクロックデマンドレートに基づいて計算される。結果として、プロセッサシステムクロックレートはアグリゲートクロックデマンドレートを収容するように調整される。特定のタスクによって要求されたプロセッサクロックデマンドレートは、期待されたもしくは完了された作業レートと、(例えばプログレス制限エラーなどの)少なくとも1つのプログレス制限レートとの間の差に基づいて動的に調整される。各タスクによって要求されたプロセッサクロックデマンドレートは、対応するタスクの完了の期待された時間に基づくことができる。
プロセッサシステムクロックレートは、タスクの完了の期待された時間に影響を及ぼさないレベルまで選択的に減少させることができる。プロセッサシステムクロックレートは、アグリゲートクロックデマンドがゼロよりも大きい時間までに、スリープもしくはアイドルのいずれかのステートに対して設定される。ある期間中の平均プロセッサシステムクロックレートがアグリゲートクロックデマンドレートを超えるという条件で、プロセッサシステムクロックレートは、その期間中、アグリゲートクロックデマンドレートの上下に変動することができる。
パフォーマンスプロファイルは、タスクが利用できる、多数のバッファを制限する占有割当量を特定することができる。占有割当量は、期待された及び完了された作業レートと、(例えばプログレス制限エラーなどの)1つもしくはそれ以上のプログレス制限レートとの間の差に基づいて動的に調整される。単一のソースもしくは複数のソースからの他のパフォーマンスメトリクスが占有割当量を調整するために使用される。
プロセッサシステムの入力/出力サブシステムによる帯域幅の利用が、各タスクのパフォーマンス要件が満たされるように選択的に制御される。利用された帯域幅の量は、期待された及び完了された作業レートと、(例えばプログレスエラーなどの)1つもしくはそれ以上のプログレス制限レートとの間の差に基づいて動的に調整される。単一のソースもしくは複数のソースからの(例えばプログレス制限エラーなどの)他のパフォーマンスメトリクスが占有割当量を調整するために使用される。
別の態様において、システムは、少なくとも1つのプロセッサと、複数のバッファと、
スケジューラモジュールと、メータリングモジュールと、適応クロックマネージャモジュールと、キャッシュ占有マネージャモジュールと、入力/出力帯域幅マネージャモジュールとを含む。スケジューラモジュールは、少なくとも1つのプロセッサによって実行されるべき複数のタスクをスケジューリングすることができる。(いくつかの実施形態においては、各タスクは関連した実行優先度及び/もしくは実行デッドラインを有する。)メータリングモジュールは、複数のタスクの実行を監視して追加的な処理リソースを要求するタスクを識別することができる。適応クロックマネージャモジュールは、タスクを実行するときに少なくとも1つのプロセッサのクロックレートを選択的に調整することができる。キャッシュ占有マネージャモジュールは、タスクによって利用されるべきバッファの最大量を選択的に調整することができる。入力/出力帯域幅マネージャモジュールは、タスクによって利用されるべき入力/出力(I/O)帯域幅の最大量を選択的に調整することができる。
コンピュータによって実行されるときにそのコンピュータがここでの操作を実行できる、コンピュータ読み出し可能な媒体に対して永久に格納されたコンピュータ実行可能な命令を含む物の製造がまた説明される。同様に、プロセッサに接続されたプロセッサ及びメモリを含んでもよいコンピュータシステムがまた説明される。メモリは一時的にもしくは永久に、プロセッサがここで説明された1つもしくはそれ以上の操作を実行することができる1つもしくはそれ以上のプログラムを格納してもよい。
ここで説明された主題は、多くの利点を提供する。例えば、パフォーマンス保証/目標を提供するような方法で、(パフォーマンス要件に基づいて、)キャッシュ/バッファ利用並びにI/O帯域幅を最適化する一方で、同時に最小リソースを使用することによって、コンピュータシステムがより大きな容量を持つことが可能となる。(その理由は、各構成要素に対して要求されたリソースが最小化されるからである。)さらに、現在の主題は、コンピュータシステムが物理コンピュータリソースをより少なく/より小さくすることができ、それによってコストを下げることができ、及び/もしくは物理サイズを減少させることができる。さらに、より少ない電力を消費するリソースが必要とされるので、全体の電力消費量は削減される。さらに、例えばアグリゲートクロックレートなどのマルチプロセッサ情報を用いて、プログレスエラー及びプログレス制限エラーがどのプロセッサにタスクをスケジューリングさせるかを知らせるために用いることができる。
ここで、説明された主題の1つもしくはそれ以上の変形例の詳細が添付の図面及び以下の説明において説明される。ここで説明された主題の他の特徴及び利点が、以下の説明、図面及び特許請求の範囲から明らかとなろう。
種々の図面中の類似の参照記号は類似の要素を示す。
パフォーマンスリソース管理を有するコンピュータシステムのブロック図である。 メータリングモジュールのブロック図である。 パフォーマンスリソースマネージャモジュールのブロック図である。 カレンダーキューを例示する図である。 プロセッサシステムパフォーマンスリソース管理のための技術を例示する処理フロー図である。
図1は、プロセッサシステム10、管理モジュール106、I/O(入力/出力)サブシステム108及びシステムメモリ150を含むコンピュータシステムの簡単化されたブロック図である。プロセッサシステム及びコンピュータシステムのいくつかの共通に知られた要素は、現在の主題を理解する目的のために図面では図示しない。プロセッサシステム10は、中央処理ユニット、プロセッサ、マイクロプロセッサ、プロセッサコアなどのうちの1つもしくはそれ以上を含むことができる。例えば、プロセッサシステム10は、複数のプロセッサ及び/又はマルチコアプロセッサを含むことができる。図1に図示されたプロセッサシステムの機能的な要素は、ハードウェアにおいて実施されるかもしくはハードウェアとソフトウェア(もしくはファームウェア)との組み合わせで実施される。
プロセッサシステム10は、命令キャッシュ104、命令フェッチ/ブランチユニット115、命令デコーダモジュール125、実行ユニット135、ロード/格納ユニット140、データキャッシュ145、プロセッサシステムの1つもしくは複数のクロック速度を制御するためのクロックモジュール180、プロセッサシステムのアイドルもしくはスリープステートを制御するためのアイドルステートモジュール184、DMA(ダイレクトメモリアクセス)モジュール186、パフォーマンス管理システム105、及びスケジューラモジュール130を含むことができる。パフォーマンス管理システム105は、メータリングモジュール110及びパフォーマンスリソース管理モジュール120を含むことができる。一実施形態では、タスクに対するタスクパフォーマンスプロファイルを格納するタスクコンテキストメモリがシステムメモリ150内に組み込まれる。他の実施形態では、タスクコンテキストメモリは、システムメモリ150から独立してもよい。
この明細書を通して、タスクはプロセッサシステム10により実行されるべき命令セットとして言及されてもよい。用語「タスク」はときどき単数に言及されるのだが、用語「タスク」は、(特に指定のない限り)複数のタスクのグループを含むように解釈される。タスクはまた、例えば1つもしくはそれ以上の同時実行のスレッド又は擬似同時実行のスレッドが実行されるコンピュータプログラムのインスタンスなどの処理を含むことができ、1つもしくはそれ以上の(例えばマイクロプロセッサなどの)プロセッサシステム10内又は1つもしくはそれ以上のプロセッサ上の仮想実行環境などの仮想機械内で実行する、リソースを密接に共有するコンピュータプログラムのインスタンスを実行する。仮想機械(VM)は、実際の機械のようにプログラムを実行するソフトウェア実装の機械(コンピュータ)である。いくつかの実施形態において、タスクは、例えば画像プロセッサ、暗号化プロセッサなどのステート機械とすることができる。
管理モジュール106は、(例えば、システムメモリ150内に存在するプログラムなどの)処理モジュールに接続されたコンピュータシステムの一部とすることができる。管理モジュール106は、パフォーマンスプロファイルを創造することができる、並びに/又はシステムメモリ150からもしくは例えばハードディスクドライブ、不揮発性メモリなどの記憶装置(ストレージデバイス)から以前に創造されたパフォーマンスプロファイルを検索することができ、タスクパフォーマンスパラメータを特定するタスクパフォーマンスプロファイルを直接的にもしくはそれらのタスクコンテキスト(特定のタスクを管理するために必要とされる情報を含むデータのセット)を介してタスクに割り当てることができる。いくつかの実施形態において、管理モジュール106は、(例えば、規定/ルールのセットなどを介して、)タスクパフォーマンスプロファイルを決定/制御することによってリソースの割り当てを制御することができる。
I/Oサブシステムモジュール108は、(例えば、システムメモリ150内に存在するプログラムなどの)処理モジュールに接続されたコンピュータシステムの一部とすることができる。I/Oサブシステムモジュール108は、処理システムと、外部の世界、もしかしたら人間、記憶装置、もしくはもう1つの処理システムとの間の通信のための手段を制御し、及び/又は有効にし、及び/又は提供することができる。
入力はシステムによって受信された信号もしくはデータであって、出力はそれから送信された信号もしくはデータである。記憶装置は、後で検索するための情報を格納するために使用され、記憶装置の例には、ハードディスクドライブ及び不揮発性半導体メモリを含む。例えばモデム及びネットワークカードなどの、コンピュータシステム間の通信のためのデバイスは、典型的には、入力と出力との両方の役目を果たす。
プロセッサシステム10のパフォーマンス管理システム105は、個々のタスクに対する、プロセッサシステムのためのプロセッサパフォーマンスリソースの割り当てを制御することができる。いくつかの実施形態において、パフォーマンス管理システム105は、ステート機械において実行する個々のタスクに対するステート機械パフォーマンスリソースの割り当てを制御することができる。他の実施形態において、管理モジュール106は、(例えば規定/ルールなどを介して、)タスクパフォーマンスプロファイルを決定/制御することによって、リソースの割り当てを制御することができる。例えば、すべてのタスクに対するパフォーマンスリソースの割り当てを制御することによって、各タスクにはスループット及び応答時間の保証が提供される。さらに、すべてのタスクに対する最小のパフォーマンスリソースを割り当てることによって、プロセッサシステム10及び/もしくは当該プロセッサシステム10が組み込まれた(I/Oサブシステムモジュール108及びシステムメモリ150などを含む)コンピューティングシステムのプロセッサリソースの最小量のパフォーマンスリソースが利用される。一実施例では、パフォーマンスリソースの最小化はエネルギー消費量を低減させ、かつより少なく/より小さい物理コンピュータリソースを必要とすることにより効率を増加させて、その結果としてコストの低減につながる。もう1つの実施例では、各タスクに割り当てられたパフォーマンスリソースの最小化によって、プロセッサシステム10は、より多くのタスクがシステム上で実行されることを可能とする一方で、同様により多くの数のタスクに対してスループット及び応答時間の保証を提供してより大きな容量を有することができる。
タスクには、タスクパフォーマンスパラメータを特定するパフォーマンスプロファイルが割り当てられる。タスクパフォーマンスパラメータの例には、この明細書の他の箇所で説明された、完了されるべき作業We、時間間隔Ti、完了されるべき最大作業Wm、並びにキャッシュ占有及びI/O(入力/出力)帯域幅要件を含む。時間間隔は、タスクがTi時間内でWe作業を完了することが期待されるように、デッドラインを示すことができる。完了されるべき作業は、それが実行のためにスケジューリングされたときにタスクによって実行されるべき期待された作業を決定することができる。もし例えばその期待された作業の完了が延期されれば、完了されるべき最大作業は、タスクが蓄積してもよい最大作業を特定することができる。他のパフォーマンスパラメータのみならず時間間隔はまた、例えば、タスクが実行すべきときもしくはデッドライン(タスクがその期待された作業を完了することができる最大時間)として影響を及ぼすための時間間隔などを用いて、スケジューリング決定に影響を及ぼすために、スケジューリングモジュール130によって利用される。作業レートWrは、関係式Wr=We/Tiにより表わされる。一実施形態において、これらのパラメータは、パフォーマンスプロファイルパラメータが、タスクの実行の間に、各セットが1つもしくはそれ以上のプログラムステートと関連付けされて動的に変更されてもよいパラメータのセットとできるように、タスクステートとともに動的に変更することができる。(現在の主題に関連して使用された関連した態様のみならず)スケジューラモジュールの一実施例が特許文献1で説明され、その内容が参照によりここで完全に組み込まれる。
パフォーマンスプロファイルは、個々のタスクに対して、パフォーマンスプロファイルに類似したタスクのグループに割り当てられる。一実施形態において、グループのメンバーであるタスクは、共通のパフォーマンスプロファイルを共有し、パフォーマンスリソースパラメータはその共通のプロファイルから得られる。
いくつかの変形例において、パフォーマンスパラメータのサブセットは、グループパフォーマンスプロファイルの一部とすることができる一方で、他のものは個々のタスクのパフォーマンスプロファイルの一部とすることができる。例えば、タスクプロファイルは、期待作業パラメータを含むことができる一方で、タスクはI/O帯域幅及びキャッシュ占有パフォーマンスパラメータを共有するグループのメンバーである。グループの多重度は、パフォーマンスリソースマネージャによって利用されたパラメータが、(規定/ルールのセットを介して、)種々のパフォーマンスプロファイルから得られた場合に、タスクが共通のパフォーマンスプロファイルパラメータと分離したパフォーマンスプロファイルパラメータとの両方を特定する1つ又はそれ以上のグループのメンバーである場合に存在することができる。
作業は、データ転送、完了されたプロセッサ命令、又は例えば画像プロセッサ、暗号化プロセッサなどのプロセッサシステム10もしくはステート機械によって実行された作業の測度の他の意味のある単位の測度とすることができる。この作業は細粒度に対して測定されるので、パフォーマンスリソースは細粒度に対して同様に管理される。
プロセッサシステム10は、多数の命令がシステムメモリ150内に格納されたデータに対して演算する場合に、システムメモリ150内に格納された命令を実行することができる。この明細書においては、命令は、命令セットもしくはプログラム命令と呼ばれる。システムメモリ150は、コンピュータシステムにおいて物理的に分配される。命令キャッシュ104は、システムメモリ150からの命令を一時的に格納することができる。命令キャッシュ104は、システムメモリ150とプロセッサシステム10との間のバッファメモリとしての役目を果たすことができる。命令が実行されるべき場合、それらは典型的にはシステムメモリ150から検索され、命令キャッシュ104の中にコピーされる。もし同一の命令もしくは命令のグループがプログラム命令セットにおいてしばしば使用されれば、命令キャッシュ104におけるこれらの命令の記憶装置は、システムメモリアクセスが除去されるので、スループットの増加を生じさせることができる。
フェッチ/ブランチユニット115は、命令キャッシュ104に接続され、命令キャッシュ104内の記憶装置に対してシステムメモリ150から命令を検索するように構成される。命令デコーダモジュール125は、検索された命令を解釈して実行することができる。一実施形態において、デコーダモジュール125は、複数の命令を、プロセッサシステム10の他の部分に対する有意性を有する複数の部分に分けることができる。実行ユニット135は、制御信号のシーケンスとしてのデコードされた情報を、例えば、プロセッサシステム10の関連した機能ユニットに通過させて命令によって要求された動作を実行することができる。実行ユニットは、レジスタファイル及び算術論理演算ユニット(ALU)を含むことができる。命令によって要求された動作は、レジスタから値を読み出すこと、その値をALU(図示せず。)に通過させてそれらを合計すること、及びその結果をレジスタに書き込むことを含むことができる。実行ユニット135は、データキャッシュ145に対するアクセスを実行するように構成されたロード/格納ユニット140を含むことができる。他の実施形態において、ロード/格納ユニット140は、実行ユニット135から独立することができる。データキャッシュ145は、例えばシステムメモリ150から最近アクセスされたデータアイテムを含む、例えばランダムアクセスメモリなどの高速の記憶装置とすることができる。一実施形態では、データキャッシュ145は、命令キャッシュ104から独立してアクセスされる。
図2はメータリングモジュール102のブロック図である。説明の目的のために、図2が図1を参照して説明されるであろう。メータリングモジュール110は、1つもしくは複数の現在実行しているタスクによって実行された作業もしくは完了された作業量を測定することができる。一実施形態において、メータリングモジュール110は、タスクの実行を監視してタスクに対して完了された作業量に関連した監視された値を決定することができる。完了された作業量に関連した監視された値は、完了された作業の実際の量、カウンタ値、又は例えば完了された作業量に比例もしくは関連した同様のものとすることができる。
一般的に、一実施形態のメータリングモジュール110には、完了された作業モジュール210(Wc)、完了されるべき作業モジュール220(We)、比較器モジュール230、及び加算器モジュール240を含むことができる。完了された作業モジュール1210は、完了された作業カウンタとすることができ、完了されるべき作業モジュール220はまた、完了されるべき作業カウンタとすることができる。完了されるべき作業カウンタは、作業レートに基づいて更新されて経過時間を計上することができる。完了されるべき作業は、例えば、パフォーマンスリソースマネージャにタスク選択を知らせるスケジューラモジュール130によってプロセッサシステムに対する実行のためにタスクが選択されるときに、パフォーマンスリソースマネージャによって計算される。
メータリングモジュール110は、プロセッサシステム10上で現在実行されているタスクによって完了された作業を測定して監視することができる。1つもしくはそれ以上のタスクは、(例えば、同時もしくは擬似同時のマルチスレッド処理を行うマルチプロセッサを利用する1つもしくは複数のプロセッサなどの)プロセッサシステム10上で実行される。一実施形態において、完了された作業もしくは完了された作業量についての情報の監視された値が、完了された命令の量によって測定され、図1の矢印170によって示されるように、命令フェッチ/ブランチユニット115から得られる。監視された値はまた、図1の矢印165によって示されるように、メモリ操作により転送されたデータ量によって測定され、ロード/格納ユニット140から得られる。メータリングモジュール110は、メモリ操作(帯域幅)を監視するために使用されるときに、(例えばビデオフレームバッファなどの)特定のアドレスに対する及び当該特定のアドレスからの、メモリ操作を計上だけをするように構成される。この構成は、(タスクコンテキストもしくはタスクパフォーマンスプロファイルの構成情報を用いて、)タスクごとのベースに対して変更することができる。いくつかの実施形態において、コンピュータシステム実装の特定の詳細によって、命令完了及びメモリ操作のために分離したメータリングモジュール110が存在することができる。これらのメータリングモジュールは、単一のメータリングモジュール110と同様であろう。いくつかの処理モジュール10は複数のタスク(複数のスレッド)を同時に処理するので、完了された命令情報は、(典型的には、1つもしくは複数の、スレッドもしくは処理もしくはタスクの識別子を用いてその情報にタグを付けることによって、)スレッドが特定の命令を完了したことに関する情報を含むことができる。同様に、メモリ操作情報は、メータリングモジュール110がこれらの操作を正確なタスクに関連付けるために、このスレッド識別子を含むことができる。処理ユニット、プロセッサ、マイクロプロセッサ、プロセッサコアなどのうちの1つもしくはそれ以上を含む処理モジュール10は、そのようなプロセッサそれぞれに対して複数のメータリングモジュール110を含むことができる。
実行された作業もしくは完了された作業Wcに関連する監視された値は、メモリに対するアクセス、完了された命令、及び/又は現在実行している1つもしくは複数のタスクによる作業の意味のある測定である他の測定可能な数量をカウントすることによって測定される。例えば、アクセスのサイズを含むことができる、メモリに対するアクセス回数などの監視された値は、それらが加算されて完了された作業モジュール210に供給される加算器モジュール240で受信される。監視された値はまた、図1の矢印165によって示されるように、ロード/格納ユニット140から得られたメモリ操作によって測定される。完了されるべき作業モジュール220は、完了されるべき作業量に関連するパラメータ値Weを受信することができる。完了されるべき作業量及び/もしくは作業レートに関連するパラメータ値は、タスクのタスクパフォーマンスプロファイルに格納された予め決定された値とすることができる。完了されるべき作業パラメータ値は、完了されるべき作業の実際の量、カウンタ値、又は完了されるべき作業量に比例及び/もしくは関連する同様のものなどとすることができる。パラメータ値は、一定のパラメータとすることができ、もしくは作業レートから計算することができ、例えばタスクが作業レートに経過時間を乗算することによって、実行されるための待つ時間を計上するために計算される作業クレジットを含むことができる。作業クレジットはまた、連続的にもしくは周期的に計算され、その結果、実行されるべき作業は、タスクが実行している間でさえ、作業レートにおける経過時間とともなって増加する。この実行されるべき計算された作業は、最大の作業パラメータよりも大きくならないように制限される。一実施形態において、パラメータ値は、タスクをコンピュータシステムにマッピング処理する間に管理モジュール106によって予め決定される。
完了された作業は、比較器モジュール230によって完了されるべき作業と比較される。この比較の結果のプログレスエラーは、比較における時間を含むことによって、完了された作業と完了されるべき作業との間、及び/又は作業完了レートと完了されるべき作業レート(期待された作業レート)との間の差を示す値とすることができる。一実施形態は、期待された実行時間内で、完了されるべきその期待された作業を獲得するタスクに基づいて、プログラスエラーを計算することができる。例えば、エラーは次の関係式によって計算される。すなわち、プログレスエラー=(qt/Qi)×We−Wc。ここで、qtはタスクが実行をスタートした後の経過時間であって、Qiは完了されるべき作業を完了するために期待された時間であって、それはプロセッサ及び/もしくは例えばプロセッサシステムクロック周波数などのコンピュータシステムステートに依存してもよい。上述した関係式において、作業完了を示すことができる負のプログレスエラーは、経過時間qtにおける期待された作業よりも大きい。プログレスエラーは、この明細書の他の箇所で詳細説明されたように、タスクに対する、リソースに関連するパフォーマンスの割当を割り当てるために、もしくは調整するために使用される。
メータモジュールの1つもしくはそれ以上のインスタンスはメータモジュールが計測する数量であって、例えばそれらの数量をメータリングしてそれらを予め計算されたパラメータと比較することによって、メモリアクセス数又はキャッシュミス発生回数(すなわち、バッファ内のデータの一部を読み出そうとする試みもしくは書き込もうとする試みが失敗して結果としてメインメモリにアクセスするなど。)などの数量によって、(直接的にもしくは間接的に)タスクのプログレスが制限されるかどうかをメータモジュールが決定するために利用される。一実施形態において、プログレス制限測定は、Weモジュール220のメータモジュールインスタンスを、Wcモジュール210において蓄積されたメータリングされた数量と比較されるべき値に提供することによって獲得される。モジュール220に供給された値は、プログレス制限パラメータと考えられる。次に、比較器機能は、例えば特定のキャッシュミスレートもしくはメモリアクセスレートによって制限された、測定された数量によってプログレスが制限されるかどうかを決定するための、時間に対する比較を含む2つの値を比較することができる。その結果は、プログレスエラーとして表される(留意すべきことは、この結果は、完了された作業を完了されるべき作業と比較することから生じる第1のプログレスエラーとは異なる、ということである。)。プログレス制限エラー値は、この明細書において他の箇所で詳細説明したように、タスクに対する、リソースに関連したパフォーマンスの割当を割り当てるために、もしくは調整するために使用される。プログレス制限パラメータは、タスクのパフォーマンスプロファイルの一部であってもよい。
現在時刻及びタスクがプロセッサシステム上で実行した以前の時間から、プログレスエラー及びプログレス制限エラー値の履歴(ヒストリー)は、この明細書の他の箇所で詳細説明されたように、タスクに対する、リソースに関連したパフォーマンスの割当を割り当てるために、もしくは調整するために利用される。これらの値は、例えば累積されたプログレス及びプログレス制限エラー値としてもしくは(タスクのパフォーマンスプロファイルの一部であってもよい)一連の現在の値及び履歴の値として表わされる。
適応クロックマネージャモジュール320は、要求されたクロック速度を決定することによって、及びクロック制御モジュール180によりプロセッサシステム10のクロックレートを設定することによって、プロセッサシステムの1つもしくは複数のクロック速度を管理することができる。プロセッサシステムの1つもしくは複数のクロック速度は、コンピュータシステムにおけるタスクのアグリゲートクロックデマンドレートを計算することによって決定される。考えられるすべてのタスクの累積デマンドレートを示すアグリゲートクロックデマンドレートArdは、SUMTasks{Trd[i]}+Roと等しくすることができ、ここで、Trd[i]はタスクiに対するタスクデマンドレートであって、Roは個々のタスクのデマンドレートにおいて計上されないプロセッサ/システムのオーバヘッドデマンドレートである。タスクデマンドレートは、時間間隔もしくはデッドラインTi内で、その期待された作業Weを完了するためのタスクiに対するクロックレートデマンドを示すことができる。一実施形態において、アグリゲートデマンドレートは、実行できる状態にあるタスクからのデマンドレートを含むことができる一方で、他の実施形態においては、デマンドレートは実行できる状態にあるタスクからではなく、それらのタスクがいつ実行する状態とするかに対して計算し及び/もしくは推測して、推定されたデマンドレートを含むことができる。
オーバヘッドデマンドレートは、オーバヘッドデマンドレートに対する1つもしくはそれ以上の値がシステムステートによって選択されるように、一定のパラメータとすることができ、又はそれはシステムに依存することができる。いくつかの実施形態に対して、オーバヘッドデマンドレートはタスクデマンドレートに含まれる。(その場合には、タスクの代わりにプロセッサシステムオーバヘッドアクティビィティが組み込まれる。)一実施形態において、オーバヘッドデマンドレートは、タスクのコンピュータシステムに対するマッピング処理の間に、管理モジュール106によって予め決定される。
タスクiが実行している間、プロセッサシステムのクロック周波数Fが一定である場合は、タスクデマンドレートは周波数と期待された実行時間との積を時間間隔で除算することによって計算される。すなわち、Trd[i]=(F×Qi)/Tiであって、ここで、Fはタスクの期待された実行時間Qiの間の実際のクロックレートであって、Tiは時間間隔もしくはデッドラインである。期待された実行時間は、タスクがその期待された作業が完了するために期待された時間であって、タスクのパフォーマンスプロファイルの一部とすることができる。一般的には、期待された実行時間は、(プロセッサシステム上で実行する)タスクの以前の実行から得られ、タスクの完了されるべき期待された作業に対する累積時間の測度とすることができる。さらに、期待された実行時間は、典型的には、プロセッサシステム周波数に依存している。タスクのデマンドレートは、その時間間隔もしくはデッドラインのTi内で、タスクがその期待された作業を完了するための最小クロックレートとすることができる。(アグリゲートクロックデマンドレートがインスタンスに対して変化するので、)タスク実行中にプロセッサシステムの周波数が変化するもう1つの実施形態では、タスクデマンドレートは、SUMFrequencyChanges{(F[j]×Qi[j]/Ti}として計算され、ここで、期待された実行時間は各周波数(変化)サブの間隔に対して1つのセグメントに分割される。タスクデマンドレートは、タスクのパフォーマンスプロファイルの一部とすることができる。
一実施形態において、クロックマネージャモジュール320は、アグリゲートデマンドレートArdに関連するクロック周波数においてプロセッサの実行を要求することができ、Ardが特定の従属関係に従って変化するときにそのような要求を行うことがこの明細書における他の箇所で説明される。プロセッサシステム周波数がアグリゲートデマンドレートよりも大きいかもしくは等しくなるように、システムが支持された周波数に設定された場合に、実際のシステムは、別個のプロセッサ及びシステムクロック周波数の設定を支持することだけができる。いくつかのプロセッサシステムでは、要求されたクロックレートがクロックスイッチング時間を計上するように調整される場合には、複数のクロックサイクルがクロック周波数を変更するために必要とされる。
各タスクの実行の間、プログレスエラー及び/もしくはプログレス制限エラーは監視され、タスクデマンドレートは、これらの値の1つもしくはそれ以上に基づいて、例えば周期的な間隔において更新される。一実施形態において、更新されたタスクデマンドレートは、この明細書において他に箇所で説明されたように、プロセッサシステムのクロックを変更することを結果としてもたらす新しいアグリゲートデマンドレートを結果としてもたらす。プログレスエラー及びプログレス制限エラーは、直接的にもしくは適応クロックマネージャモジュール320によって実行された1つもしくはそれ以上のレート適応関数によってデマンドレートを調整するために使用される。例えば、もしエラーが特定の制限よりも大きければ、1つのレート適応関数はタスクデマンドレートを調整することができる一方で、もしエラーが特定の期間よりも長く存続すれば、もう1つの適応関数がデマンドレートを変更することができる。1つもしくは複数のレート適応関数は、特定のプロセッサシステムにおいて望ましくないかもしれない、タスク及び/もしくはアグリゲートデマンドレートにおける、並びに/又は特定のタスクから生じる急速な変化を弱めるように使用され、システム依存性及び/もしくはタスク依存性とすることができる。レート適応関数は、タスクのパフォーマンスプロファイルの一部とすることができる。
適応クロックマネージャモジュール320は、個々のタスクデマンドレートを調整することによってアグリゲートデマンドを調整してそれらの期待された時間においてそれらの期待された作業を満たすタスクを計上することができる。もう1つの変形例において、プログレスエラー及びプログレス制限エラー値から生じる両方の調整により、個々のタスクデマンドレートを別々に調整する間に、プロセッサクロック周波数はアグリゲートデマンドレートと比較して調整される。従って、プロセッサクロック周波数、アグリゲートデマンドレート、及び個々のタスクデマンドレートは、考えられるすべてのタスクの完了された期待された作業の合計が、閉じられたループ形式において完了するべきそれらの作業と一致するように調整される。
デマンドレート調整によって、オーバヘッドデマンドレートが個々のタスクデマンドレートに含まれてそれ故にオプションのパラメータとすることができる。
最小及び最大のしきい値パラメータは、タスクデマンドレートと関連付けられる。これらの最小及び最大のしきい値パラメータは、プログレスエラー及びプログレス制限エラーに関連することができ、最小の及び/もしくは最大のタスクデマンドレートを制限するために使用される。もう1つの実施形態において、しきい値はタスクの実行の間に選択された、最小及び最大のプロセッサクロック周波数を制限することができる。最小のしきい値パラメータと最大のしきい値パラメータとは、タスクのパフォーマンスプロファイルの一部とすることができる。
適応クロックマネージャモジュール320は、プロセッサクロック周波数をより高く調整することによって完了された作業レートを増加させないときと、逆に完了された作業のレートを減少させることなしに要求されたクロックレートが下に調整されるときとを検出することができる。この条件は、例えばプロセッサ周波数が変化されるようなプログレスエラーにおいて、変化もしくはその不足を観察することによって検出される。クロックマネージャモジュール320は、タスクのステートが変更するときに要求されたクロックレートをより高く調整することができ、その結果、クロック周波数をより高く増加させることによって完了された作業レートを実に増加させる。この検出は、プロセッサクロック周波数を設定することによって完了され、その結果、プログレスエラーは特定のしきい値基準を満たし、エラーが特定のしきい値を下回るとき、プログレスエラーにおける減少によって示されるプログレスがより大きくなるにつれてクロック周波数はより高く調整される。プログレスエラー及び/もしくはプログレス制限エラーを含むことができる、特定の1つもしくは複数のレート適応関数は、プロセッサクロック周波数を計算するときに利用される。これらのレート適応関数はシステム及び/もしくはタスク依存性とすることができ、並びにタスクパフォーマンスプロファイルの一部とすることができる。
タスクデマンドレート、レート適応パラメータ、プログレス制限パラメータ、及び/もしくはしきい値などは、タスクステートとともに動的に変化することができ、その結果、パフォーマンスプロファイルパラメータは各セットが1つもしくはそれ以上のプログラムステートと関連付けられ、管理モジュール106によるタスクの実行の間に動的に変化されるパラメータのセットである。さらにもしくは代替には、そのようなタスクデマンドレート、レート適応パラメータ、プログレス制限パラメータ、及び/もしくはしきい値などが、(管理モジュール106よりむしろ)タスクによって直接的に調整される。
タスクのデマンドレートは、タスクが実行できる状態となるときにアグリゲートデマンドレートに加算され、それは、(例えば、スケジューリングもしくは例えばI/O操作に対するブロックを解除するなどの他のイベントに基づいて、)スケジューラモジュール130、又は例えばI/Oサブシステムなどの他のサブシステムによって決定されてもよい。初期に、このデマンドレートはタスクパフォーマンスプロファイルによって特定されるかもしくはタスクパフォーマンスプロファイルから計算され、例えばプログレスエラーの関数などのレート適応関数により更新された、長期にわたるタスクの作業完了プログレスに基づいて更新される。パフォーマンスプロファイルは、1つもしくはそれ以上のタスクステート依存性パフォーマンスパラメータを含むことができる。そのような場合には、タスクデマンドレートは、これらのパラメータがタスクステートもしくはシステムステートによって変更されるときに更新され、変更し、さらに更新される一方で、(パフォーマンスプロファイルパラメータの計算においてプログレスエラー及び/もしくはプログレス制限エラーを用いて、)レートエラー適応によりプロセッサシステム上でタスクは実行している。
(例えばスケジューリングもしくは例えばI/O操作に対してブロックされるなどの他のイベントなどに基づいて、)タスクが実行不可能となる場合に、アグリゲートデマンドレートは個々のタスクデマンドレートから再計算される。個々のタスクデマンドレートそれぞれを計算することと比較すると、オーバヘッド要件を減少することができたもう1つの実施形態では、新しいアグリゲートデマンドレートは、(期待された作業が完了されたときに)時間間隔もしくは現在の実行の終わりにおけるタスクの累積デマンドレートを減算することによって、いずれが遅い方でも構わないが、将来における特定の時間における特定の情報を提示する、例えばカレンダーキューなどの時間ベースのキューイングシステムにおいて累積デマンドレートをセットすることによって計算される。この実施形態は、いずれが遅い方でも構わないが、その時間間隔もしくはその実行の完了までに、タスクレートが最初に加算された時間からアグリゲートデマンドレート内でタスクのデマンドレートを予約する。
適応クロックマネージャモジュール320は、例えば、(他のカレンダーキュー技術が利用された)カレンダーキューエントリー1などのカレンダーキューを利用することができる。適応クロックマネージャモジュール320は、タスクの累積クロックデマンドレートを、(例えばカレンダーキューエントリー(N−1)のもとでのタスクなどの)将来における、(時間間隔からカレントリアルタイムRtまでの差である)ロケーション(Ti−Rt)のユニットに挿入することができる。カレンダーキューは有限のサイズであるので、インデックスは、MAX(Ti−Rt,MAX_CALENDAR_SIZE−1)として計算され、ここで、MAX_CALENDAR_SIZE(N)はカレンダーキューの離散時間エントリーの数である。カレントリアルタイムRtは非空のカレンダーロケーションまで進むと、クロックマネージャモジュール320は、アグリゲートデマンドレートから、Ti=Rtであるそのロケーションにおける各タスクの累積されたクロックデマンドレートを減算することができる。これが図4に示されたカレンダーキューエントリー0におけるTi=Rtのときに発生する。インデックスは現在時刻もしくはリアルタイムから将来における値に関連した時間を表すことができる。Ti>Rtを有するタスクは特定のしきい値内でカレンダーキューに再挿入される。カレンダーのしきい値及びサイズは、システム設計、リアルタイムクロックの精度及び所望された時間粒度に依存することができる。カレンダーキューは、リアルタイムの時間が進むにつれて、前の現在時刻エントリーはカレンダーキューにおける最後のエントリーとなるように、サーキュラーキューとすることができる。図4の例の400において、リアルタイムがエントリー1まで進むと、エントリー0は最も古いキューエントリーとなる。インデックスはカレンダーがサーキュラーキューであるという事実を考慮することができる。現在時刻インデックスは、リアルタイムが進むにつれて0から(N−1)まで進むことができる。従って、ポイント(N−1)において、現在時刻インデックスは0に戻って完了する。
さらに、適応クロックマネージャモジュール320は、プロセッサシステムのアイドルステートに入ることとプロセッサシステムのアイドルステートから再開することとを管理することができる。もしアグリゲートクロックデマンドがゼロならば、クロックマネージャモジュール320は、アグリゲートクロックレートがゼロよりも大きい時間及びゼロよりも大きくなるであろう時間までプロセッサシステムをアイドルステートにセットすることができる。いくつかのプロセッサシステムにおいて、複数のクロックサイクルは、アイドルステートに入ること及びアイドルステートから再開することのために必要とされてもよく、アイドルステートに入る時間とアイドルステートを再開する時間のみならず動作状態を再開するときに必要とされるクロックレートが(クロックスイッチング時間のみならず)アイドルに入る時間及び再開時間を計上するように調整される。
クロックマネージャモジュール320はまた、アグリゲートデマンドレートよりも大きい周波数もしくは等しい周波数を要求することによって、及び(ゼロの周波数を有するアイドル時間を考慮して、)平均周波数がアグリゲートデマンドレートに等しいかもしくは高くなるように、プロセッサシステムをアイドルステートにセットすることによって、ある期間にわたって、特定のアグリゲートデマンドレートを取得することができる。プロセッサシステム10がより高い周波数で実行してより高いエネルギー効率を有する実施形態において、その場合にプロセッサシステム10は特定のアグリゲートデマンドレートを満たすためにアイドルステートにセットされる。いくつかの実施形態では、要求されたレートは計算されたアグリゲートデマンドレートよりも高くなるように適合化されて処理システムをアイドルステートにセットしてバイアスをかけることができる。
周波数及びアイドルステートが選択されるパラメータは、1つもしくは複数のタスクをコンピュータシステムに対するマッピングの処理の間に管理モジュール106によりプロセッサシステムを特徴付けることから得られる。
適応クロック管理モジュールは、アイドルステートモジュール184にプロセッサシステムがアイドルとなるように信号を送ることによって、プロセッサシステムがアイドルステートに入ることを要求することができる。例えばI/Oデバイスもしくはタイマーなどからのインタラプトなどのイベントが発生するときにアイドルステートは終了することができる。
マルチプロセッサシステムにおいて、アグリゲートデマンドレートは、各プロセッサに対して個々に、又はすべてのプロセッサもしくはプロセッサのサブセットもしくはこれらの組み合わせに対して集合的に計算される。いくつかのタスクは特定のプロセッサに対して割り当てられる一方で、他のタスクはプロセッサの任意のセットもしくは特定のセットに対して自由に実行してもよい。アグリゲートデマンドレートは、制限を遵守するすべてのプロセッサに対して計算され、束縛のない各タスクは、特定のプロセッサ上でタスクを実行することが望ましいアフィニティ特性を含む特定のプロセッサ上で実行する必要がある。
マルチプロセッサシステムの一実施形態において、各プロセッサクロックレートとアイドルステートとは個々に制御される。この場合、クロックマネージャモジュール320は、最小のエネルギーを得るための、1つもしくはそれ以上のプロセッサのアイドリングの間に、クロックレートの組み合わせを選択することができる。クロックレートが個々に調整されずにアイドルステートが個々に調整されてもよい場合には、単一のクロックレートは、最小のエネルギー消費量を得るための、1つもしくはそれ以上のプロセッサのアイドリングの間に選択される。マルチプロセッサシステムのもう1つの実施形態では、クロックレートは、すべてのプロセッサ、もしくはプロセッサの複数のサブセットに対するアグリゲートデマンドレートが、例えばスループットを最大化し、又は個々のタスクのもしくは複数のタスクによって実行される並列計算のタスク完了時間を最小化するなどの特定の所望された目標を達成するために、プロセッサ間で分割される。(どのプロセッサにおいてどの1つもしくは複数のタスクが実行するかの決定において、)スケジュールモジュール130とのインタラクションが、所望された目標を達成するために必要とされてもよい。
クロックモジュール180及びアイドルステートモジュール184は、図面には図示されないが、他のコンピュータシステム構成要素とのインタラクションを有することができる。これらのインタラクションは、1つもしくはそれ以上のプロセッサのクロック速度もしくはアイドルステートを変化させることを可能とするために必要であってもよい。例えば、プロセッサ周波数の変更は、バス、周辺機器のクロック速度、システムメモリ150のクロック速度などの変更を要求することができる。同様に、プロセッサをアイドルステートにセットしもしくはアイドルステートから再開するために、特定のバス、周辺機器、システムメモリ150などが(例えばI/Oデバイスを静止することやそのバッファをシステムメモリに対して書き込むことなどの)ステートに入る前に準備を必要としてもよく、もしくは(例えば1つもしくは複数の操作を開始するためのI/Oデバイスの初期化などの)動作状態が再開される。
キャッシュ占有管理モジュール340は、バッファもしくはキャッシュ占有割当量の使用を管理することができる。これらの占有割当量は、タスクが使用するかもしれない(もしくは使用するべきである)バッファの数の数の制限とすることができる。占有割当量Oq及び現在の占有Ocはタスクのパフォーマンスプロファイルにおいて追加的に格納される。キャッシュ占有は、例えば、同時係属の2011年3月25日に出願された、発明の名称が「プロセッサキャッシュメモリ占有の制御」であって、米国仮出願第61/341,069号に対する優先権を主張する特許文献2で説明されたキャッシュ置換アルゴリズムなどのキャッシュ置換アルゴリズムを使用して選択的に割り当てられる。両方の出願の内容が参照によりここに組み込まれる。
このケースにおける占有は、タスクによって使用されたバッファの実際の数の表示として特徴付けられる。バッファは、(例えば入力/出力バッファキャッシュなどの、)それが1つの場所からもう1つの場所まで移動されている間に一時的にデータを保持するために使用されるためのメモリもしくはメモリの領域、もしくは(例えばプロセッサ命令/データキャッシュなどの、)より速いアクセスを可能とするために使用されるメモリもしくはメモリの領域である。バッファ(すなわち、キャッシュブロック/ライン)がタスクに対して割り当てられるので、占有カウンタOcはインクリメントされ、バッファはタスクに対する割り当てを解除されるので、占有カウンタはデクリメントされる。占有割当量が占有カウンタよりも大きいときはいつでも(Oc>Oq)、タスクはその占有割当量を超えている。占有割当量を超えることによって、そのタスクのバッファが優先的に置き換えられ(キャッシュブロック/ラインの置換)、もしくはエンティティがその割当量に従うまでは(Oc=<Oq)、新しいバッファの割当を回避させることができる。占有割当量には、より高いもしくはより低い優先度が占有とこれらの追加的な割当量との比較に対して与えられるように、複数の割当量パラメータを含むことができる。
タスクの占有割当量は、そのパフォーマンスプロファイルの一部とすることができる。このパフォーマンスプロファイルパラメータは静的に設定されてもよく、もしくはプログラムステートに依存してもよく、もしくはキャッシュ占有マネージャによって動的に計算されてもよい。動的占有割当量は、例えばデッドラインに間に合うなどのタスクのパフォーマンスに基づいて調整されてもよく、この明細書における他の箇所で説明されたように、プログレスエラー及び/もしくはプログレス制限エラーを用いて、完了された作業と期待された作業との比較に関して、その実行の間もしくは実行からのフィードバックの間のキャッシュミス情報に基づいて調整されてもよい。
キャッシュ占有マネージャは、占有割当量を調整することができる。そのような調整は、例えば、システムレベル設定された制限とタスクのパフォーマンスプロファイルにおいて含まれた制限との順々の組み合わせとすることができる、予め定義された/設定された制限に基づくことができる。一実施形態において、占有割当量は、インスタンスに対するプログレスエラーもしくはキャッシュミスレート、又は2つの組み合わせを利用して、タスクの期待された作業レートと完了された作業レートとの間の差に基づいて調整される。そのような変形例では、占有割当量の計算は、タスクがその期待された作業レートよりも下回るときもしくはキャッシュミスレートが特定のしきい値よりも上回るときに占有割当量が増加されるように行われる。反対に、タスクがその期待された作業を超えているときもしくはキャッシュミスレートが特定のしきい値を下回るときに占有割当量は減少される。この計算はまた、例えばプログレスが占有以外のもう1つのファクタによって制限されていることを検出することによって、プログレス制限エラー値を考慮することができる。
キャッシュ占有管理モジュールは、もしそれらが占有割当量制御機構、又は例えばシステムメモリ150に格納されたプログラムなどの、処理システムもしくはコンピュータシステムの一部とすることができ、又は当該処理システムもしくはコンピュータシステムに接続された、他のバッファ/キャッシング構成要素を持つならば、命令キャッシュ104及び/もしくはデータキャッシュ145において割当量を設定することによって占有割当量を制御することができる。キャッシュ占有パラメータはタスク(もしくはグループのタスク)に関連することができ、その結果、もしキャッシュ占有管理モジュール及びそれぞれのI/Oサブシステムの両方によって利用されれば、システムはおそらくタスクを追跡し、占有割当量をタスクに割り当てるかもしくはタスクの代わりに割り当てる。割当量制御機構は、ハードウェアもしくはソフトウェア(ファームウェア)又は両方の組み合わせにおいて実施される。
キャッシュ占有は、タスクが1つもしくは複数の物理アドレス空間から分離してもよい1つもしくは複数の仮想メモリアドレス空間を利用できるメモリ管理技術である、仮想メモリを物理メモリにマッピングすることを含むことができる。実際には、物理メモリは複数のタスクが物理メモリを共有することを可能とするキャッシュとしての役目を果たし、ここで、1つもしくは複数の仮想メモリ空間の全体サイズは、物理メモリのサイズよりも大きくてもよく、又は1つもしくはそれ以上のタスクに割り当てられた物理メモリよりも大きくてもよく、それ故に物理メモリ、及び/もしくはその一部は、「キャッシュ」として役目を果たす。この明細書の他の箇所で説明されたように、タスクの物理メモリ占有は管理される。管理モジュールは、106におけるように、分離したモジュールであってもよく、1つもしくはそれ以上のオペレーティングシステム、仮想機械モニタなどの一体部分であってもよい。
キャッシュ及び/もしくはバッファサブシステムの多重度が存在しそれ故にタスクのパフォーマンスプロファイルにおいて利用され格納されたいくつかの占有割当量パラメータが存在することができる。これらのキャッシュ及びバッファは、ハードウェアもしくはソフトウェア(ファームウェア)又は両方の組み合わせにおいて実施化される。
完了された作業レートが占有が期待された作業レートを満たすように増加され、及び/もしくは期待された作業レートが満たされているときもしくは超えられたときに減少される、閉じられたループ形態において、完了された期待された作業レートと一致するように、タスクの1つもしくは複数の占有割当量が修正される。
1つもしくは複数の占有割当量の修正は、タスクであってもよい及びタスクステートに依存してもよいレート適応関数を利用することができる。
占有割当量に対するタスクの優先順位付けは、特定のより高い優先度のタスクはより低い優先度のタスクを犠牲にしてそれらの期待された作業を満たすことを保証するために利用される。いくつかの実施形態において、管理モジュール106は、最大及び最小の占有割当量並びに/又は(規定/ルールのセットを介して、)占有割当量などに対して許可された最大及び最小の変化を決定すること/制御することによって、占有割当量の全体の割当を制御することができる。
I/O帯域幅管理モジュール360は、(単位時間当たりのデータ転送の測度である、)コンピュータシステムの1つもしくは複数の入力出力サブシステムの帯域幅の利用を管理することができる。タスクによって、もしくはインスタンスに対するタスクの1つもしくは複数のI/O要求の代わりにオペレーティングシステムによって実行されたI/O操作は、I/O帯域幅マネージャによるパフォーマンスリソースとして管理されてI/O操作のタスクパフォーマンス要件が満たされることを確実とすることができる。
タスクのI/O帯域幅は、そのパフォーマンスプロファイルの一部とすることができる。このパフォーマンスは、(例えば、プログラムステートなどに基づいて、)静的に設定することができ、もしくはそれは、例えばI/O帯域幅マネージャなどによって動的に計算される。動的なI/O帯域幅値は、例えば、期待された作業レートと完了された作業レートとの比較に関して、その計算されたデッドラインもしくは実行からのフィードバックを満たして、タスクのパフォーマンスに基づいて調整される。
I/O帯域幅マネージャは、システムレベル設定された制限とタスクのパフォーマンスプロファイルに含まれた制限との組み合わせとすることができる特定の設定された制限内で、I/O帯域幅パラメータを調整することができる。I/O帯域幅は、プログレスエラー及び/もしくはプログレス制限エラー値、又は期待されたI/Oレート、又はこれらの組み合わせを利用して修正される。I/O帯域幅がプログレス及び/もしくはプログレス制限エラー値並びにしきい値によって増加もしくは減少されるように、I/O帯域幅レートの計算が行われる。一般的に、これらの値及びしきい値は、不必要にI/O帯域幅を使用することなしに、タスクの完了された作業レートを、完了されるべき作業レートに一致させるように決定される。タスクの作業は、タスクの第1の作業が特定のレートにおけるI/Oデータの転送である場合に、もしかしたらI/O帯域幅レートとすることができる。完了された作業レートが閉じられたループ形態において完了されるべき作業レートと一致するように、タスクのI/O帯域幅が調整され、ここで、I/O帯域幅が期待された作業レートを満たすように増加され、並びに/又はプログレス及びプログレス制限エラーを考慮して期待された作業レートが超えようとするときに減少される。
I/Oリソースは、I/O帯域幅割当を介して割り当てられ、システムパフォーマンス保証を提供するような方法で、I/O帯域幅マネージャを介して管理される。そのような保証は、(規定/ルールのセットを介して、)全体のI/O帯域幅がすべて使用完了とならないように割り当てられもしくは特定のタスクが他のものを犠牲にしてそれらのI/O帯域幅を受信することとできる。
I/O帯域幅管理モジュールは、存在するそのような帯域幅制御機構、又は例えばシステムメモリ150に格納されたプログラムなどの処理システムもしくはコンピュータシステムの一部もしくは当該処理システムもしくはコンピュータシステムに接続されてもよい他のI/O構成要素に対するI/Oサブシステムモジュール108において帯域幅パラメータを設定することによって、I/O帯域幅を制御することができる。I/O帯域幅パラメータは、システムが帯域幅をタスクに割り当てるかもしくはタスクの代わりに割り当てるように、タスク(もしくはタスクのグループ)に関連することができる。いくつかの変形例において、これがタスクIDを追跡してI/O操作と関連付けることを含むことができ、その結果、I/O帯域幅管理モジュール及びそれぞれのI/Oサブシステムはデータ転送を特定のタスクの属性と考えてもよい。I/O帯域幅制御機構は、ハードウェアもしくはソフトウェア(ファームウェア)又は両方の組み合わせにおいて実施される。
いくつかの実施形態において、DMAコントローラが利用される。直接的なメモリアクセスは、コンピュータ内の特定のハードウェアサブシステムが、中央処理ユニットと独立した読み出し及び/もしくは書き出しのためにシステムメモリにアクセスすることを可能とする現代のコンピュータ及びマイクロプロセッサの特徴である。多数のハードウェアシステムは、ディスクドライバコントローラ、グラフィックカード、ネットワークカード、サウンドカード及びグラフィック処理ユニット(GPU)を含むDMAを使用する。DMAはまた、マルチコアプロセッサにおいて、特にマルチプロセッサシステムオンチップにおけるチップ内データ転送のために使用され、ここで、その処理要素は、(しばしばスクラッチドパッドメモリと呼ばれる)局部メモリが備えられ、DMAは局部メモリとメインメモリとの間でデータを転送するために使用される。
I/O帯域幅マネージャは、帯域幅制御機構をI/O操作に提供する機構を介して、すなわち帯域幅シェーピング(形成)を介してI/O帯域幅を制御することができる。転送のためのクレジットを蓄積するための十分な時間が経過するまで、特定のデータ転送要求を遅延させることによって帯域幅シェーピングが完了される。(ここで、クレジットとは、特定のレートにおいて時間とともに蓄積されたデータの測度であって、帯域幅を表す。)I/O操作もしくはDMAを含むデータ転送の帯域幅管理の操作は、ハードウェアもしくはソフトウェア(ファームウェア)において実施される。
I/Oサブシステム、もしくはサブシステム、デバイス及びインターフェースのインスタンスの多重度が存在することができ、それ故にタスクのパフォーマンスプロファイルにおいて利用されて格納された複数のI/O帯域幅パラメータが存在してもよい。これらのI/Oサブシステムは、ハードウェアもしくはソフトウェア(ファームウェア)又は両方の組み合わせにおいて実施される。
I/O帯域幅に対するタスクの優先順位付けは、特定のより高い優先度のタスクがより低い優先度のタスクを犠牲にしてそれらの期待された作業を満たすことを保証するために利用される。もう1つの実施形態において、I/O帯域幅管理システムは、プログレスエラー及びプログレス制限エラーを考慮すれば、それらの完了された作業をそれらの完了されるべき作業と一致するタスクに基づいて、I/O操作優先順位付けを要求することができる。これは、例えば、対象となるすべてのタスクに対してプログレスエラー及びプログレス制限エラーを考慮することができ、その結果、特定のプログレス制限エラー値内で、より大きいプログレスエラーを有するタスクが、プログレス制限エラー値内で、より小さいプログレスエラーを有するタスクを超えた優先度が与えられる。
プログレスエラー及びプログレス制限エラーは、直接的にもしくはI/O帯域幅マネージャによって実行された1つもしくはそれ以上のレート適応関数を介して、タスクのI/O帯域幅パラメータを調整するために使用される。例えば、1つのレート適応関数は、もしエラーが特定の制限よりも大きければ、I/O帯域幅だけを調整する一方で、もう1つの適応関数は、もしエラーが特定の期間よりも長い間存続すれば、デマンドレートだけを変更することができる。レート適応関数は、タスクのパフォーマンスプロファイルの一部とすることができる。
I/O帯域幅に対するタスクの優先順位付けは、特定のより高い優先度のタスクがより低い優先度のタスクを犠牲にしてそれらの期待された作業を満たすことを保証するために利用される。いくつかの実施形態において、管理モジュール106は、(例えば、規定/ルールのセットを介して、)最大及び最小のI/O帯域幅並びに/又は帯域幅パラメータを決定する/制御することによって、I/O帯域幅の全体の割当を制御することができる
スケジューラモジュール130は、タスク優先度を含むタスクパラメータに基づいて、そのタスクのリストから実行されるべき次の1つもしくは複数のタスクを選択することができる。スケジューラモジュール130は、プロセッサシステム10に対してより高い優先度のタスクが準備できていることが示される。プロセッサシステム10(もしくはプロセッサシステム10上のソフトウェア)は、現在実行しているタスクから先制してスイッチし、より高い優先度のタスクを実行するように決定することができる。プロセッサシステムにおけるスケジューラモジュール130もしくはソフトウェアは、たぶん現在実行しているタスクを置換して、より高い優先度タスクが実行のために選択されるべきことを示すことができる。その場合は、プロセッサシステム10において現在実行しているもしくは実行されたタスクがまたパフォーマンスリソースマネージャ120に対して指示される。これが起こると、現在実行しているタスクのために利用された、1つもしくは複数のメータリングモジュール110のステートは、タスクのコンテキストに保存され、メータリングモジュールは、(メータリングモジュール内の、モジュール210及び220並びに1つもしくは複数の比較器機能を更新することによって、)パフォーマンスリソースマネージャによって、新しく選択されたタスクを監視するように指示される。パフォーマンスリソースマネージャにおける追加的なステートは、このタスクのスイッチングの結果として同様に修正される。マルチプロセッサシステムにおいて、スケジューリングは、プロセッサごとのベースに対して割り当てられ、その結果、特定のプロセッサに対するタスクはそのタスクのプログレスエラー及び/もしくはプログレス制限エラーによって影響が及ぼされる。これがまた、マルチスレッドシステムに対する、スレッドごとのベースに対して実行される。
図5は、方法500を例示する処理フロー図であって、ここで、510では、プロセッサシステムによる複数のタスクの実行が監視される。その監視に基づいて、520では、パフォーマンスリソースの調整を要求するタスクは、各タスクに対するプログレスエラーとプログレス制限エラーとのうちの少なくとも1つを計算することによって識別される。引き続いて、530では、各識別されたタスクに対して割り当てられたプロセッサシステムのパフォーマンスリソースが調整される。その調整には、例えば、タスクを実行するプロセッサシステムにおける少なくとも1つのプロセッサのクロックレートを調整すること、タスクによって利用されるべきキャッシュ及び/もしくはバッファの量を調整すること、並びにタスクによって利用されるべき入力/出力(I/O)帯域幅の量を調整することのうちの1つもしくはそれ以上を含むことができる。
ここで説明された主題の種々の実施形態は、デジタル電子回路、集積回路、特に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア並びに/又はそれらの組み合わせで実現化されてもよい。これらの種々の実施形態は、記憶装置システム、少なくとも1つの入力デバイス、並びに少なくとも1つの出力デバイスからデータ及び命令を受信するために、並びに当該記憶装置システム、少なくとも1つの入力デバイス、並びに少なくとも1つの出力デバイスに対してデータ及び命令を送信するために接続された、特別のもしくは一般的な目的であってもよい、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステムに対して実行可能な及び/もしくは解釈可能な1つもしくはそれ以上のコンピュータプログラムにおける実行を含んでもよい。
(プログラム、ソフトウェア、ソフトウェアアプリケーションもしくはコードとしてもまた知られた)これらのコンピュータプログラムは、プログラマブルプロセッサに対する機械命令を含み、高水準手続きの及び/もしくはオブジェクト指向のプログラミング言語、及び/もしくはアセンブリ/機械言語で実行されてもよい。ここで使用されたように、用語「機械読み出し可能な媒体」とは、任意のコンピュータプログラム製品、装置並びに/又は、機械命令及び/もしくはデータを、機械命令を機械読み出し可能な信号として受信する機械読み出し可能な媒体を含むプログラマブルプロセッサに供給するために使用された(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD)などの)デバイスに言及する。用語「機械読み出し信号」とは、機械命令及び/もしくはデータをプログラマブルプロセッサに供給するために使用された任意の信号に言及する。
2,3の変形例が詳細に上述説明されたが、他の変更が可能である。例えば、添付の図面で説明され、ここで説明されたロジックフローは、望ましい結果を得るためには、図示された特定の順番、もしくはシーケンシャルの順番は必要とされない。以下の特許請求の範囲の範囲内で他の実施形態が可能である。

Claims (37)

  1. プロセッサシステムによって複数のタスクの実行を監視するステップと、
    上記監視に基づいて、各タスクに対するプログレスエラーとプログレス制限エラーとのうちの少なくとも1つを計算することによって、パフォーマンスリソースの調整を要求するタスクを識別するステップと、
    上記各識別されたタスクに対して割り当てられた上記プロセッサシステムのパフォーマンスリソースを調整するステップとを含む方法であって、
    上記パフォーマンスリソースを調整するステップは、
    上記タスクを実行する上記プロセッサシステムにおける少なくとも1つのプロセッサのクロックレートを調整するステップと、
    上記タスクによって利用されるべきキャッシュ及び/もしくはバッファの量を調整するステップと、
    上記タスクによって利用されるべき入力/出力(I/O)帯域幅の量を調整するステップとを含むことを特徴とする方法。
  2. 上記プログレスエラーは、上記タスクによって完了された作業と上記タスクによって完了されるべき作業との間の差と等しいことを特徴とする請求項1記載の方法。
  3. 上記プログレス制限エラーは、上記完了された作業に対する作業完了レートと上記タスクのリマインダーに対する期待された作業レートとの間の差と等しいことを特徴とする請求項1又は2記載の方法。
  4. 上記各タスクは、単一のタスク、タスクのグループ、スレッド、スレッドのグループ、単一のステート機械、ステート機械のグループ、単一の仮想機械、及び仮想機械のグループを含むグループから選択されたことを特徴とする請求項1から3のうちのいずれか1つに記載の方法。
  5. 上記プロセッサは、単一のプロセッサ、マルチプロセッサ、同時マルチスレッディングを支持するプロセッサシステム、及びマルチコアプロセッサを含むグループから選択されたことを特徴とする請求項1から4のうちのいずれか1つに記載の方法。
  6. 上記各タスクは、関連した実行優先度及び実行デッドラインを有し、
    上記プロセッサシステムの上記パフォーマンスリソースは、上記各識別されたタスクが、その対応する実行デッドラインまでに、その対応する実行優先度に従って完了されることを可能とするように調整されることを特徴とする請求項1から5のうちのいずれか1つに記載の方法。
  7. 上記パフォーマンスリソースは、タスクごとのベースに対して調整されたことを特徴とする請求項1から6のうちのいずれか1つに記載の方法。
  8. 上記各タスクは、上記タスクに対する上記実行優先度及び上記実行デッドラインを確立するために、スケジューラモジュールによって使用された関連したパフォーマンスプロファイルを有することを特徴とする請求項1から7のうちのいずれか1つに記載の方法。
  9. 上記関連したパフォーマンスプロファイルは、少なくとも1つのパフォーマンスパラメータにおいて特定することを特徴とする請求項8記載の方法。
  10. 上記パフォーマンスパラメータは、上記タスクによって使用されるべき初期の最大及び/もしくは最小の量のバッファを特定するキャッシュ占有割当量であって、
    上記キャッシュ占有割当量は、上記タスクの実行の間に動的に調整されたことを特徴とする請求項9記載の方法。
  11. 上記キャッシュ占有割当量は、上記タスクに対するプログレスエラーに基づいて動的に調整されたことを特徴とする請求項10記載の方法。
  12. 上記パフォーマンスパラメータは、上記タスクの実行に対する初期の帯域幅要件を特定し、
    上記帯域幅要件は、上記タスクの実行の間に動的に調整されたことを特徴とする請求項10又は11記載の方法。
  13. 上記各タスクによって要求されたプロセッサクロックデマンドレートを決定するステップと、
    すべてのタスクに対する上記決定されたプロセッサクロックデマンドレートに基づいて、アグリゲートクロックデマンドレートを計算するステップとをさらに含み、
    上記プロセッサシステムクロックレートは、上記アグリゲートクロックデマンドレートを収容するように調整されたことを特徴とする請求項1から12のうちのいずれか1つに記載の方法。
  14. 上記プロセッサシステムクロックレートは、上記アグリゲートクロックデマンドレートにオーバヘッドデマンドレートを加算するように調整されたことを特徴とする請求項13記載の方法。
  15. 上記プロセッサクロックデマンドレートを決定するステップは、時間間隔内に分割された上記タスクの完了のために期待された実行時間を用いた、現在のプロセッサシステムクロックレートの積であることを特徴とする請求項13又は14記載の方法。
  16. 上記各タスクに対する上記プロセッサクロックデマンドレートは、上記タスクの上記パフォーマンスに影響を及ぼすプログレスエラーに基づいて更新され、
    上記アグリゲートクロックデマンドレートは、上記各タスクに対して上記更新されたプロセッサクロックデマンドレートに基づいて更新されたことを特徴とする請求項13から15のうちのいずれか1つに記載の方法。
  17. 上記各タスクに対する上記プロセッサクロックデマンドレートもしくは上記アグリゲートクロックデマンドレートの更新は、急速なレート変化を弱めるかもしくは強めるために少なくとも1つの適応関数を使用することを特徴とする請求項16記載の方法。
  18. 上記各タスクに対する上記プロセッサクロックレートは、上記タスクが実行できる状態であるときに上記アグリゲートクロックデマンドレートに加算されることを特徴とする請求項13から17のうちのいずれか1つに記載の方法。
  19. 上記アグリゲートクロックデマンドレートは、ときには上記プロセッサシステムクロックレートが上記アグリゲートクロックデマンドレートよりも高く、それ以外のときには上記プロセッサシステムクロックレートが上記アグリゲートクロックデマンドレートよりも低くなるように、ある期間にわたって計算されたことを特徴とする請求項13から18のうちのいずれか1つに記載の方法。
  20. 上記プロセッサシステムは、少なくとも2つのプロセッサを含み、
    上記アグリゲートクロックデマンドレートは、上記少なくとも2つのプロセッサのそれぞれに対して決定され、上記対応するプロセッサを使用して実行するタスクに対する上記プロセッサデマンドレートに基づき、
    上記少なくとも2つのプロセッサのそれぞれに対する上記クロックレートが別々に及びそれ相応に調整されたことを特徴とする請求項13から19のうちのいずれか1つに記載の方法。
  21. 上記各タスクは物理メモリに割り当てられ、
    上記方法はさらに、
    少なくとも1つのタスクが、少なくとも1つの仮想メモリアドレス空間を利用できるようにするステップを含み、
    上記少なくとも1つの仮想メモリアドレス空間は、上記物理メモリの少なくとも1つの部分にマッピングされたことを特徴とする請求項1から20のうちのいずれか1つに記載の方法。
  22. プロセッサシステムによって複数のタスクの実行を監視して上記各タスクに対して少なくとも1つの監視された値を決定するステップを含む方法であって、
    上記少なくとも1つの監視された値は、上記プロセッサシステムによって、上記対応するタスクのパフォーマンスに影響を及ぼす少なくとも1つのファクタを特徴付け、
    上記各タスクは少なくとも1つのパフォーマンスパラメータを特定する関連したタスクパフォーマンスプロファイルを有し、
    上記方法は、
    上記各タスクに対して、上記対応する監視された値を、上記関連したタスクパフォーマンスプロファイルにおいて特定された上記対応する少なくとも1つのパフォーマンスパラメータと比較するステップと、
    上記比較に基づいた上記各タスクに対して、上記タスクの実行のために利用されたパフォーマンスリソースが調整されるべきかどうか、もしくは上記タスクの実行のために利用されたパフォーマンスリソースが維持されるべきであるかどうかを決定するステップと、
    そのようなタスクに対して割り当てられたパフォーマンスリソースが調整されるべきであることが決定された各タスクに対してプロセッサクロックレートを修正することによって、及び上記タスクに対して割り当てられたパフォーマンスリソースが維持されるべきであることが決定された各タスクに対してパフォーマンスリソースを維持することによって、上記パフォーマンスリソースを調整するステップとを含むことを特徴とする方法。
  23. 上記監視された値は、上記タスクによって完了された作業量を特徴付けることを特徴とする請求項22記載の方法。
  24. 上記タスクによって完了された作業量は、上記タスクを実行するときに転送されたデータ量と、上記タスクを実行するときに完了されたプロセッサ命令の数、プロセッササイクル、及び実行時間のうちの少なくとも1つから得られたことを特徴とする請求項23記載の方法。
  25. 上記各タスクに対して、上記タスクに対する現在のプログラムステートを決定するステップをさらに含み、
    上記関連したタスクパフォーマンスプロファイルは、異なるパフォーマンスパラメータを有する2つもしくはそれ以上のプログラムステートを特定し、
    上記監視された値は、上記現在のプログラムステートに対する上記パフォーマンスパラメータと比較されたことを特徴とする請求項22から24のうちのいずれか1つに記載の方法。
  26. 対応するパフォーマンスパラメータが変更されるように、実行されているタスクの少なくとも1つのパフォーマンスプロファイルを修正するステップをさらに含み、
    上記監視された値は、上記変更されたパフォーマンスパラメータと比較されたことを特徴とする請求項22から25のうちのいずれか1つに記載の方法。
  27. 上記各タスクによって要求されたプロセッサクロックデマンドレートを決定するステップと、
    すべてのタスクに対して、上記決定されたプロセッサクロックデマンドレートに基づいて、アグリゲートクロックデマンドレートを計算するステップと、
    プロセッサシステムクロックを調整して上記アグリゲートクロックデマンドレートを収容するステップとをさらに含むことを特徴とする請求項22から26のうちのいずれか1つに記載の方法。
  28. 期待された及び完了された作業レートと少なくとも1つのプログレス制限レートとの間の差に基づいて、特定のタスクによって要求されたプロセッサクロックデマンドレートを動的に調整するステップをさらに含むことを特徴とする請求項27記載の方法。
  29. 上記各タスクによって要求された上記プロセッサクロックデマンドレートは、上記対応するタスクの完了の期待された時間に基づいたことを特徴とする請求項28記載の方法。
  30. 上記プロセッサシステムクロックレートを、上記タスクの完了の期待された時間に影響を及ぼさないレベルまで減少させるステップをさらに含むことを特徴とする請求項29記載の方法。
  31. スリープもしくはアイドルのいずれか一方における上記プロセッサシステムクロックレートを、上記アグリゲートクロックデマンドがゼロよりも大きい時間まで減少させるステップをさらに含むことを特徴とする請求項28から30のうちのいずれか1つに記載の方法。
  32. 上記プロセッサシステムクロックレートは、ある期間中の平均プロセッサシステムクロックレートが上記アグリゲートクロックデマンドレートよりも大きいかもしくは等しいという条件で、上記期間中において、上記アグリゲートクロックデマンドレートの上下に変動することを特徴とする請求項28から31のうちのいずれか1つに記載の方法。
  33. 上記パフォーマンスプロファイルはさらに、タスクが利用することができる、キャッシュ及び/もしくはバッファの量に影響を及ぼす占有割当量を特定することを特徴とする請求項22から32のうちのいずれか1つに記載の方法。
  34. 上記占有割当量は、期待されたもしくは完了された作業レートと少なくとも1つのプログレス制限レートとの間の差に基づいて動的に調整されたことを請求項33記載の方法。
  35. 上記各タスクのパフォーマンス要件が満たされるように、上記プロセッサシステムの入力/出力サブシステムによる帯域幅の利用が制御されたことを特徴とする請求項22から34のうちのいずれか1つに記載の方法。
  36. 利用された帯域幅の量は、期待された及び完了された作業レートと少なくとも1つのプログレス制限レートとの間の差に基づいて動的に調整されたことを特徴とする請求項35記載の方法。
  37. 少なくとも1つのプロセッサと、
    複数のバッファと、
    上記少なくとも1つのプロセッサによって実行されるべき複数のタスクをスケジューリングするためのスケジューラモジュールと、
    上記複数のタスクの実行を監視して追加的な処理リソースを要求するタスクを識別するためのメータリングモジュールと、
    タスクを実行するときに上記少なくとも1つのプロセッサのクロックレートを選択的に調整するための適応クロックマネージャモジュールと、
    タスクによって利用されるべきキャッシュ及び/もしくはバッファの最大量を選択的に調整するためのキャッシュ占有マネージャモジュールと、
    タスクによって利用されるべき入力/出力(I/O)帯域幅の最大量を選択的に調整するための入力/出力帯域幅マネージャモジュールとを備えたことを特徴とするプロセッサシステム。
JP2013501534A 2010-03-26 2011-03-25 コンピュータシステムの細粒度パフォーマンスリソース管理 Pending JP2013527516A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US34117010P 2010-03-26 2010-03-26
US34106910P 2010-03-26 2010-03-26
US61/341,069 2010-03-26
US61/341,170 2010-03-26
PCT/US2011/030096 WO2011120019A2 (en) 2010-03-26 2011-03-25 Fine grain performance resource management of computer systems

Publications (1)

Publication Number Publication Date
JP2013527516A true JP2013527516A (ja) 2013-06-27

Family

ID=44673905

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013501534A Pending JP2013527516A (ja) 2010-03-26 2011-03-25 コンピュータシステムの細粒度パフォーマンスリソース管理

Country Status (5)

Country Link
EP (1) EP2553573A4 (ja)
JP (1) JP2013527516A (ja)
KR (1) KR20130081213A (ja)
CN (1) CN102906696A (ja)
WO (1) WO2011120019A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015524595A (ja) * 2012-09-29 2015-08-24 インテル・コーポレーション インテリジェントファーメモリ帯域幅スケーリング
WO2015145598A1 (ja) * 2014-03-26 2015-10-01 株式会社 日立製作所 並列演算処理システムのデータ配分装置、データ配分方法、及びデータ配分プログラム

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013177313A2 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Processing structured and unstructured data using offload processors
US20130318268A1 (en) 2012-05-22 2013-11-28 Xockets IP, LLC Offloading of computation for rack level servers and corresponding methods and systems
JP6042170B2 (ja) * 2012-10-19 2016-12-14 ルネサスエレクトロニクス株式会社 キャッシュ制御装置及びキャッシュ制御方法
US9378161B1 (en) 2013-01-17 2016-06-28 Xockets, Inc. Full bandwidth packet handling with server systems including offload processors
EP2946296A4 (en) 2013-01-17 2016-11-16 Xockets Ip Llc DELIBRATION PROCESSOR MODULES FOR CONNECTING TO A SYSTEM MEMORY
US10353765B2 (en) * 2013-03-08 2019-07-16 Insyde Software Corp. Method and device to perform event thresholding in a firmware environment utilizing a scalable sliding time-window
KR101587579B1 (ko) * 2014-02-19 2016-01-22 한국과학기술원 가상화 시스템에서 메모리 조정방법
CN103929769B (zh) * 2014-05-04 2017-02-15 中国科学院微电子研究所 一种应用于无线通信系统仿真的调度方法及系统
CN105357097A (zh) * 2014-08-19 2016-02-24 中兴通讯股份有限公司 虚拟网络的调节方法及系统
WO2016097806A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Fully associative cache memory budgeted by memory access type
US10157081B2 (en) * 2015-11-13 2018-12-18 Telefonaktiebolaget Lm Ericsson (Publ) Trainer of many core systems for adaptive resource control
CN107291370B (zh) * 2016-03-30 2021-06-04 杭州海康威视数字技术股份有限公司 一种云存储系统调度方法和装置
CN106126336B (zh) 2016-06-17 2019-06-04 上海兆芯集成电路有限公司 处理器以及调度方法
US10146583B2 (en) * 2016-08-11 2018-12-04 Samsung Electronics Co., Ltd. System and method for dynamically managing compute and I/O resources in data processing systems
CN107547270A (zh) * 2017-08-14 2018-01-05 天脉聚源(北京)科技有限公司 一种智能分配任务分片的方法及装置
CN107463357B (zh) * 2017-08-22 2024-03-12 中车青岛四方车辆研究所有限公司 任务调度系统、调度方法、制动仿真系统及仿真方法
KR101958112B1 (ko) * 2017-09-29 2019-07-04 건국대학교 산학협력단 태스크 스케줄링 장치 및 태스크 스케줄링 방법
CN108897619B (zh) * 2018-06-27 2020-05-05 国家超级计算天津中心 一种用于超级计算机的多层级资源柔性配置方法
CN110852965A (zh) * 2019-10-31 2020-02-28 湖北大学 一种基于生成对抗网络的视频光照增强方法及系统
CN112965885B (zh) * 2019-12-12 2024-03-01 中科寒武纪科技股份有限公司 访存带宽的检测方法、装置、计算机设备及可读存储介质
CN110874272A (zh) * 2020-01-16 2020-03-10 北京懿医云科技有限公司 资源配置方法及装置、计算机可读存储介质、电子设备
EP4111379A1 (en) 2020-02-28 2023-01-04 3M Innovative Properties Company Deep causal learning for data storage and processing power management
JP2023505617A (ja) * 2020-02-28 2023-02-09 スリーエム イノベイティブ プロパティズ カンパニー 高度モデル予測制御のための深層因果学習
CN111506402B (zh) * 2020-03-31 2023-06-27 上海氪信信息技术有限公司 面向机器学习建模的计算机任务调度方法、装置、设备及介质
CN114724233A (zh) * 2020-12-21 2022-07-08 青岛海尔多媒体有限公司 用于终端设备姿势控制的方法及装置、终端设备
CN112559440B (zh) * 2020-12-30 2022-11-25 海光信息技术股份有限公司 多小芯片系统中实现串行业务性能优化的方法及装置
US11543877B2 (en) 2021-03-31 2023-01-03 Advanced Micro Devices, Inc. Low power state selection based on idle duration history
CN112925633A (zh) * 2021-05-12 2021-06-08 浙江华创视讯科技有限公司 嵌入式的任务调度方法、装置、电子设备及存储介质
CN113589916A (zh) * 2021-07-29 2021-11-02 维沃移动通信有限公司 内存的控制方法和装置
KR20230119832A (ko) * 2022-02-08 2023-08-16 삼성전자주식회사 태스크에 메모리 자원을 할당하는 전자 장치 및 전자 장치의 동작 방법
CN117348715A (zh) * 2022-06-28 2024-01-05 华为技术有限公司 节能管理方法、装置、计算设备及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006135759A (ja) * 2004-11-08 2006-05-25 Internatl Business Mach Corp <Ibm> ウェブアプリケーションを実行するための通信を制御するコンピュータおよびその方法
WO2007141849A1 (ja) * 2006-06-07 2007-12-13 Hitachi, Ltd. 半導体集積回路
JP2009245047A (ja) * 2008-03-31 2009-10-22 Fujitsu Ltd メモリバッファ割当装置およびプログラム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7228546B1 (en) * 2000-01-28 2007-06-05 Hewlett-Packard Development Company, L.P. Dynamic management of computer workloads through service level optimization
US6845456B1 (en) * 2001-05-01 2005-01-18 Advanced Micro Devices, Inc. CPU utilization measurement techniques for use in power management
US7539994B2 (en) * 2003-01-03 2009-05-26 Intel Corporation Dynamic performance and resource management in a processing system
US7770034B2 (en) * 2003-12-16 2010-08-03 Intel Corporation Performance monitoring based dynamic voltage and frequency scaling
US20050198636A1 (en) * 2004-02-26 2005-09-08 International Business Machines Corporation Dynamic optimization of batch processing
US7281145B2 (en) * 2004-06-24 2007-10-09 International Business Machiness Corporation Method for managing resources in a CPU by allocating a specified percentage of CPU resources to high priority applications
US7721127B2 (en) * 2006-03-28 2010-05-18 Mips Technologies, Inc. Multithreaded dynamic voltage-frequency scaling microprocessor
JP2008282150A (ja) * 2007-05-09 2008-11-20 Matsushita Electric Ind Co Ltd 信号処理装置及び信号処理システム
WO2009029549A2 (en) * 2007-08-24 2009-03-05 Virtualmetrix, Inc. Method and apparatus for fine grain performance management of computer systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006135759A (ja) * 2004-11-08 2006-05-25 Internatl Business Mach Corp <Ibm> ウェブアプリケーションを実行するための通信を制御するコンピュータおよびその方法
WO2007141849A1 (ja) * 2006-06-07 2007-12-13 Hitachi, Ltd. 半導体集積回路
JP2009245047A (ja) * 2008-03-31 2009-10-22 Fujitsu Ltd メモリバッファ割当装置およびプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015524595A (ja) * 2012-09-29 2015-08-24 インテル・コーポレーション インテリジェントファーメモリ帯域幅スケーリング
WO2015145598A1 (ja) * 2014-03-26 2015-10-01 株式会社 日立製作所 並列演算処理システムのデータ配分装置、データ配分方法、及びデータ配分プログラム

Also Published As

Publication number Publication date
WO2011120019A3 (en) 2012-01-26
EP2553573A2 (en) 2013-02-06
EP2553573A4 (en) 2014-02-19
KR20130081213A (ko) 2013-07-16
WO2011120019A2 (en) 2011-09-29
CN102906696A (zh) 2013-01-30

Similar Documents

Publication Publication Date Title
JP2013527516A (ja) コンピュータシステムの細粒度パフォーマンスリソース管理
US8782653B2 (en) Fine grain performance resource management of computer systems
US8302098B2 (en) Hardware utilization-aware thread management in multithreaded computer systems
US8397236B2 (en) Credit based performance managment of computer systems
US7958316B2 (en) Dynamic adjustment of prefetch stream priority
US8924690B2 (en) Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
US8219993B2 (en) Frequency scaling of processing unit based on aggregate thread CPI metric
US8484498B2 (en) Method and apparatus for demand-based control of processing node performance
US7721127B2 (en) Multithreaded dynamic voltage-frequency scaling microprocessor
US8522245B2 (en) Thread criticality predictor
US20190065243A1 (en) Dynamic memory power capping with criticality awareness
US9342122B2 (en) Distributing power to heterogeneous compute elements of a processor
US10908955B2 (en) Systems and methods for variable rate limiting of shared resource access
Garcia-Garcia et al. Contention-aware fair scheduling for asymmetric single-ISA multicore systems
Lee et al. Prefetch-aware memory controllers
Zhang et al. Workload consolidation in alibaba clusters: the good, the bad, and the ugly
Reineke et al. Selfish-LRU: Preemption-aware caching for predictability and performance
US20240004725A1 (en) Adaptive power throttling system
Michaud Replacement policies for shared caches on symmetric multicores: a programmer-centric point of view

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130926

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141014

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150114

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150216

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150313

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150707