JP2011018352A - 同時マルチスレッディングプロセッサを用いてバッファ型アプリケーションのエネルギー消費を低減する方法 - Google Patents

同時マルチスレッディングプロセッサを用いてバッファ型アプリケーションのエネルギー消費を低減する方法 Download PDF

Info

Publication number
JP2011018352A
JP2011018352A JP2010188252A JP2010188252A JP2011018352A JP 2011018352 A JP2011018352 A JP 2011018352A JP 2010188252 A JP2010188252 A JP 2010188252A JP 2010188252 A JP2010188252 A JP 2010188252A JP 2011018352 A JP2011018352 A JP 2011018352A
Authority
JP
Japan
Prior art keywords
buffer
threads
state
application
resources
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
JP2010188252A
Other languages
English (en)
Other versions
JP5097251B2 (ja
Inventor
Minerva Yeung
イェウン、ミネルバ
Yen-Kuang Chen
チェン、イェン−クァン
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2011018352A publication Critical patent/JP2011018352A/ja
Application granted granted Critical
Publication of JP5097251B2 publication Critical patent/JP5097251B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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]
    • 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
    • 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/3296Power saving characterised by the action undertaken by lowering the supply or operating voltage
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/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
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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
    • 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
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Power Sources (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】コンピュータシステム内の複数のリソースの管理によりシステムのエネルギー消費を低減する方法を提供する。
【解決手段】複数のアプリケーションステート及びマルチスレッディングシステム内の複数のスレッドステートをモニタし、システム内の複数のリソース調整を実施する。複数のソフトウェアアプリケーションにより使用される仮データ用のデータバッファをモニタすることで、複数のリソースは、複数のバッファレベルに依存して増やされ、または減らされる。複数のリソースの複数の調整では、プロセッサの電圧および周波数を変更する。準備ができたスレッドは、複数のスレッドの同時実行の機会を増やすために遅らされる。複数のスレッドの同時実行は、システムアイドル時間のための機会を増やすことに役立ち、したがって、エネルギー消費は、減らされる。
【選択図】図4A

Description

本発明は、複数のコンピュータシステムの領域に関し、より詳細には、複数のコンピュータシステムの電力消費を低減する方法および装置に関する。
マルチスレッディングは、並列に処理されるように、複数の命令を、複数の実行の複数のストリーム(または複数のスレッド)に分割する技術である。
図1は、マルチスレッディングをサポートするために使用されることができる先行技術システムの一例を説明するブロック図である。システム100は、2つの物理プロセッサ105および110を備え、複数のマルチスレッドソフトウェアを実行するために使用される。複数の物理プロセッサ105および110のそれぞれは、複数のリソースの同様の一式(例えば、複数のアーキテクチャステート、複数の実行レジスタ、複数のキャッシュなど)を有する。2つの物理プロセッサは、共通システムバス115および共通メインメモリ120を共有する。
一般的に、並列度を増やすために、システム100は、スレッドがディスパッチされる準備ができた場合はいつでもスレッドをディスパッチするスケジューリング技術を使用する。
下記の複数の図面は、本発明のさまざまな実施形態を、説明の目的としてのみ開示し、本発明の範囲を制限するようには意図されない。
マルチスレッディングをサポートするために使用される先行技術システムの一例を説明するブロック図である。
1つの実施形態に従ってハイパースレッディング技術をサポートする1基のプロセッサを伴うシステムの一例を説明するブロック図である。
1つの実施形態に係るデータバッファを用いる複数のアプリケーションの一例を説明するブロック図である。
1つの実施形態に係るマルチスレッディングシステムにおける異なる複数のステートを説明するブロック図である。
複数の図3Aおよび3Bは、1つの実施形態に係るソフトウェアアプリケーションにより使用される複数のバッファの2つの例を説明する。 複数の図3Aおよび3Bは、1つの実施形態に係るソフトウェアアプリケーションにより使用される複数のバッファの2つの例を説明する。
複数の図4Aおよび4Bは、1つの実施形態に係るマルチスレッディングシステムおいてディスパッチされた複数のスレッドの複数の例を説明する。 複数の図4Aおよび4Bは、1つの実施形態に係るマルチスレッディングシステムおいてディスパッチされた複数のスレッドの複数の例を説明する。
1つの実施形態に係る遅延ディスパッチスキームを用いてマルチスレッディングシステムにおいてディスパッチされた複数のスレッドの一例を説明するブロック図である。
1つの実施形態に係るビデオ復号化プロセスの一例を説明する図である。
発明の詳細な説明
1つの実施形態に関して、システム内の複数のリソースを管理する方法が開示される。本方法は、ソフトウェアアプリケーションに関連した複数のバッファをモニタすることおよびシステムにおける複数のスレッドをモニタすることを備える。利用可能な複数のリソース(例えば、電圧、周波数、複数のアーキテクチャパラメータなど)は、現在のバッファレベルおよびスレッド状態の少なくとも1つに基づいて増やされ、または減らされる。
下記の説明において、説明の目的のために、多くの特定の詳細が、本発明の完全な理解を提供するために示される。しかしながら、当業者にとって、本発明がこれら特定の複数の詳細なしで実施できることは、明らかである。他の複数の例において、周知の複数の構造、複数のプロセスおよび複数のデバイスは、過度の詳細のない説明を提供するために、ブロック図形式で示され、または要約した方式で参照される。
ハイパースレッディング技術は、Intel(登録商標)Corporation(Santa Clara、 California)からの技術であり、1つの物理プロセッサを用いて複数のスレッドを並列に実行することを可能にする。ハイパースレッディング技術は、1つの物理プロセッサ上で複数のソフトウェアアプリケーションの複数のスレッドが同時に実行される同時マルチスレッディング技術(SMT)の形式である。これは、アーキテクチャステートを二重にし、それぞれのアーキテクチャステートが、複数のプロセッサ実行リソースの一式を共有することにより遂行される。
図1Bは、ハイパースレッディング技術をサポートしている1つのプロセッサを伴うシステムの一例を説明するブロック図である。システム101は、物理プロセッサ150が2つの論理プロセッサ155、160として認識されるために、2つのアーキテクチャステート185、190を有する物理プロセッサ150を備える。2つの論理プロセッサ155、160は、同じ複数の実行リソース165、複数のキャッシュ170、システムバス175およびメインメモリ180を共有する。物理プロセッサ150は、複数の論理プロセッサ155、160のどちらが利用可能かに依存してインターリーブ方式で複数のスレッドをスケジュールする。ハイパースレッディング技術は、複数のプロセッサ実行リソース165および全体のスループットの増加した活用をもたらす。
ハイパースレッディング技術は、複数の実行ユニットをより忙しくし、したがって、複数の実行ユニットは、ハイパースレッディング技術をサポートしないプロセッサと比べてより多くの電力を消費する。電力消費は、現代の複数のシステム、特に、バッテリ動作の複数のモバイルシステムにとって、重要な検討事項になってきている。これらの複数のバッテリ動作システムにおいて、既知の固定のアプリケーションのための平均電力消費は、システムの全体の性能の評価のために考慮すべき重要なパラメータである。例えば、動的電圧制御(DVM)などを含む電力消費の低減のための異なる複数の技術が提案された。DVMを用いて、プロセッサの性能および電力消費は、適用される周波数および/または電圧を変えることにより設定される。
アプリケーション制約
多くのソフトウェアアプリケーションは、複数のデータ配信要求により制約される。図1Cは、1つの実施形態に係るデータバッファを用いる複数のアプリケーションの一例を説明するブロック図である。図1Cに説明されるように、第一のアプリケーション182は、データを生成し、第一のデータバッファ184に記憶する。第一のデータバッファ184内のデータは、その後入力として第二のアプリケーション192に使用される。第二のアプリケーション192は、その後第二のデータバッファ194に記憶されるデータを生成する。第一のアプリケーション182および第二のアプリケーション192がいずれのデータ配信要求にも制約されない場合、データがどの程度の速さで第一のデータバッファ184または第二のデータバッファ194に記憶されるかについての周波数、およびデータがどの程度の速さでこれら複数のバッファから取り出されるかについての周波数を任意に変えることは、第一のアプリケーション182および第二のアプリケーション192にほとんど影響をおよばさない。
しかしながら、第一のアプリケーション182および第二のアプリケーション192が複数のデータ配信要求の幾つかの方法により制約される場合、この要因を考慮しないことは、ユーザの経験および/またはソフトウェアアプリケーションの信頼性に干渉する。例えば、マルチメディアをストリーミングすること、または他の複数のリアルタイムアプリケーションのために、不適切な時間の低周波数プロセッサは、アプリケーションを機能させなくし、スキップした複数のフレームまたは劣化した複数のイメージを引き起こす。
1つの実施形態に関して、システム内の複数のリソースを制御することは、1つ以上のバッファを使用する1つ以上のソフトウェアアプリケーションをモニタすることにより実行される。ソフトウェアアプリケーションは、1つ以上のスレッドを有する。スレッドは、複数回ディスパッチされる。システムにおいて、同時に実行している2つ以上のスレッドがある。これら複数のスレッドは、同じソフトウェアアプリケーションから、または異なるソフトウェアアプリケーションからである。複数のソフトウェアアプリケーションは、複数のリアルタイムソフトウェアアプリケーションを含む。システムは、マルチスレッディングをサポートする1つ以上のプロセッサ(例えば、ハイパースレッディング技術をサポートするプロセッサ)を備える。システムは、マルチスレッディングシステムと称される。
ステート
図2は、1つの実施形態に係るマルチスレッディングシステムにおいて複数のリソースを管理するために使用される異なる複数のステートの1つの例を説明するブロック図である。システム200は、アプリケーションステート205、第一のスレッドステート206、第一のマシンステート207、およびリソースマネージャ210を備える。アプリケーションステート205、第一のスレッドステート206、および第一のマシンステート207に依存して、リソースマネージャ210は、例えば、システム200を第一のマシンステート207から第二のマシンステート220に遷移させ、および/またはシステム内のスレッドを第一のスレッドステート206から第二のスレッドステート215に遷移させる。
第一のマシンステート207および第二のマシンステート220は、システム200が任意の特定の時刻にありうるステートの複数の例である。1つの実施形態に関して、マシンステートは、システム200内の1つ以上のハードウェアコンポーネントの複数の構成または複数の性能レベルに関連する。マシンステートは、プロセッサに適用される周波数および/または電圧の複数のレベル、複数の不具合エントリの数、複数のハードウェアバッファ、メモリまたはキャッシュのサイズ、算術ロジックユニット(ALU)、複数のレジスタなどに関連する。例えば、システム200は、プロセッサに適用される周波数/電圧が減らされる場合、低電力消費ステート(例えば、第一のマシンステート207)にあってよい。同様に、システム200は、プロセッサに適用される周波数/電圧が増やされる場合、標準電力消費ステート(例えば、第二のマシンステート220)にあってよい。異なる複数のマシンステートがある。
リソースマネージャ
リソースマネージャ210は、システム内で現在利用可能な複数のリソースのレベルを決定することに責任を持つ。リソースマネージャ210は、利用可能な複数のリソースを増やし、または減らす。したがって、システム200を第一のマシンステート207から第二のマシンステート220へ遷移させる。例えば、リソースマネージャ210は、システム200内のプロセッサに適用される周波数および/または電圧を動的にスケーリングするために複数の動作を実行する。リソースマネージャ210は、同様に、ソフトウェアアプリケーションにより使用される複数のバッファのサイズを変更する。一般的に、リソースマネージャ210は、システム200内のハードウェア回路の少なくとも一部分を構成する。ハードウェア回路は、例えば、プロセッサ、メモリ、キャッシュ、チップセットなどの複数のハードウェアコンポーネントを含む。ハードウェア回路を構成することは、1つ以上のハードウェアコンポーネントを電源オフまたは電源オンすることを含む。これは、リソースマネージャ210がソフトウェアアプリケーションの実行に間接的に影響することを可能にする。例えば、利用可能な複数のリソースを増やすことは、ソフトウェアアプリケーションに、より速いレートで実行させ、また、利用可能な複数のリソースを減らすことは、ソフトウェアアプリケーションに、より遅いレートで実行させる。
リソースマネージャ210は、同様に、スレッドを第一のスレッドステート206から第二のスレッドステート215に遷移させることにより複数のリソースを保持する。例えば、第一のスレッドステート206は、ディスパッチされる準備ができた(または、レディ)、第二のスレッドステート215は、ディスパッチされることを遅らせる(または、待ち行列)ステートである。スレッドのスレッドステートを変更することは、その実行準備性(例えば、レディから待ち行列、または、待ち行列からレディ)、システム200の電力消費を低減することに役立つ。状況に依存して、リソースマネージャ210は、スレッドのスレッドステートおよび/またはシステム200のマシンステートを変更しても、しなくてもよいことを留意すべきである。
アプリケーションステート
ソフトウェアアプリケーションは、任意の特定の時刻において、異なるアプリケーションステート205にあってよい。例えば、ソフトウェアアプリケーションは、バッファ内のデータをバッファリングしており、バッファの現在のバッファレベルは、バッファがアンダーフロー条件に近いことを示してよく、1つのアプリケーションステートを表す。バッファの現在のバッファレベルが変化するにつれて、ソフトウェアアプリケーションは、異なるアプリケーションステートにある。ソフトウェアアプリケーションにより使用されるバッファの現在のバッファレベルは、標準条件および潜在的な複数のクリティカル条件を決定するためにモニタされる。複数のクリティカル条件は、バッファアンダーフロー条件、バッファオーバーフロー条件などを含む。
現在のバッファレベルおよびバッファの使用方法(例えば、入力または出力バッファ)に依存して、どれだけ速くデータがバッファに置かれ、またはバッファから読み出されるかのレートが、増やされ、または減らされる。これは、リソースマネージャ210が、システム200内の利用可能な複数のリソースを増やし、または減らすことを要求する。例えば、入力バッファの現在のバッファレベルが潜在的なバッファオーバーフロー条件を示す場合、リソースマネージャ210は、入力バッファのサイズを増やす。他の例として、リソースマネージャ210は、システム200内のプロセッサに適用される周波数/電圧を増やす。
図3Aおよび図3Bは、1つの実施形態に係るソフトウェアアプリケーションにより使用される複数のバッファの2つの例を説明する。図3Aは、ソフトウェアアプリケーションが1つのバッファ300内のデータを伴う複数の動作を含む状況の一例を説明する。例えば、ソフトウェアアプリケーションは、バッファ300からデータを読み出す。データは、バッファ300に変化するレートで受信され(バッファ300に通じる指向的な矢印により説明されるように)、ソフトウェアアプリケーションは、そのレート上で最小の制御を有する。
1つの実施形態に関して、バッファ300のバッファレベル302は、システム内の複数のリソースのための要求を決定するために使用される。例えば、バッファレベル302が所定の低バッファマークL0より下の場合、システム200内のプロセッサに適用される周波数および電圧は、ソフトウェアアプリケーションがバッファ300からより遅いレートで読み出される(バッファ300から出る指向的な矢印により説明されるように)ように減らされる。これは、潜在的なバッファアンダーフロー条件からバッファを保護することに役立つ。同様に、バッファレベル302が所定の高バッファマークH0より上の場合、ソフトウェアアプリケーションが潜在的なバッファオーバーフロー条件からバッファ300を保護するためにより速いレートでバッファ300からデータを読み出すように、プロセッサに適用される周波数および電圧は、増やされる。この例では、斜線部分が、バッファ300内のデータを説明する。
図3Bは、ソフトウェアアプリケーションが2つのバッファ305および315内のデータを伴う複数の動作を含む状況の一例を説明する。1つの実施形態に関して、複数のバッファ305および315のそれぞれは、所定の低バッファマークL1およびL2のそれぞれに、ならびに所定の高バッファマークH1およびH2のそれぞれに関連する。複数のバッファ305および315のそれぞれは、現在のバッファレベル310および320にそれぞれ関連している。1つの実施形態に関して、ソフトウェアアプリケーションは、例えば、マルチメディアソフトウェアアプリケーションなどのリアルタイムソフトウェアアプリケーションである。リアルタイムソフトウェアアプリケーションの1つの特性は、例えば、30フレーム/秒でビデオデータを表示する要求などの周期的なデッドラインの可能性である。そのような複数のソフトウェアアプリケーションは、なめらかなプレイバック、再生、録音などを保証するために全てのデッドラインに会うための幾つかのバッファを通常有する。例で用いられる用語「フレーム」は、複数のビデオアプリケーションまたは複数のオーディオアプリケーションに関連することが留意される。より一般的には、用語「フレーム」は、処理されるデータの一片と考えられる。
現在の例において、2つのバッファ305および315は、ビデオデコーダプロセスに使用される。バッファ305は、ビットストリームバッファであり、第一のレート330でネットワークまたはデータソースからデータを受信する(バッファ305に通じる指向性の矢印により説明されるように)。第一のレート330は、変数である。バッファ305内のデータは、ビデオデコーダプロセスにより操作され、その後、バッファ315に記憶される(バッファ315に通じる指向性の矢印により説明されるように)。ビデオデコーダプロセスは、第二のレート340で動作する。バッファ315は、非圧縮フレームバッファである。データは、その後、第三のレート350で表示されるためにバッファ315から読み出される(バッファ315から出る指向性の矢印により説明されるように)。任意の与えられる時刻において、第一のレート330、第二のレート340、および第三のレート350は、全て互いに異なる。1つの実施形態に関して、リソースマネージャ210は、第一のレート330、第二のレート340、および第三のレート350の1つ以上を変更するために、システム200のマシンステートおよびシステム200内のスレッドのスレッドステートを変更する。この変更は、動的に実行される。幾つかのソフトウェアアプリケーションは、入力データレートおよび出力データレートの両方の上での複数の制約を有するので、これは、必要である。
1つの実施形態に関して、入力データレートおよび出力データレートの両方の上に複数の制約がある場合、複数の図3Aおよび3Bで説明される複数のバッファモニタリング動作の組み合わせは、システム200内の複数のリソースを管理するために使用される。図3B内の図を参照して、複数のバッファ305および315の複数のバッファ充満レベルに依存して、システム200内の複数のリソースのための要求は異なる。1つの実施形態に関して、バッファ305のバッファレベル310が、バッファ305内のデータの量が少ない(低レベルマークL1の下)、または標準(低レベルマークL1と高レベルマークH1との間)のどちらかであることを示し、また、バッファ315のバッファレベル320が、バッファ315内のデータが多い(高レベルマークH2の上)ことを示す場合、複数のリソースのための要求は、第二のレート340を低減するために低減される。これは、例えば、プロセッサに適合される周波数および電圧を減らすことを含む。これは、ソフトウェアアプリケーションが、バッファ315を潜在的なバッファオーバーフロー条件から保護するために、データをバッファ315に、より遅い第二のレート340で書き込むことを可能にする。
1つの実施形態に関して、バッファ305のバッファレベル310が、バッファ305内のデータの量が標準(低レベルマークL1と高レベルマークH1との間)または多い(高レベルマークH1の上)のどちらかであることを示し、およびバッファ315のバッファレベル320が、バッファ315内のデータが少ない(低レベルマークL2の下)ことを示す場合、複数のリソースのための要求は、第二のレート340を増やすために増やされる。これは、例えば、プロセッサに適用される周波数および電圧を増やすことを含む。これは、ソフトウェアアプリケーションが、バッファ315を潜在的なバッファアンダーフロー条件から保護するために、データをバッファ315に、より速い第二のレート340で書き込むことを可能にする。
複数のバッファレベル310および320をモニタリングすることに加えて、システム200内の複数のリソースを管理する場合、データ依存性は、考慮される必要がある要因である。例えば、デッドラインの前にフレームを解凍/圧縮するために、時折、アンカーフレームを前もって解凍/圧縮することが必要である。データ依存性が存在する場合、リソースマネージャ210は、複数のリソースを管理するために、それが通常に行うことと異なるように何かをする必要がある。
ソフトウェアアプリケーションがビデオプレーヤアプリケーション(ビデオデコーダアプリケーションとは異なる)である例において、ソフトウェアアプリケーションは、複数のバッファ305および315内のデータの量が多い場合、および次のフレームが現行のフレームに依存する場合、ディスプレイレートをリサンプリングする必要がある。ディスプレイレートをリサンプリングすることは、例えば、バッファ315が第二のレート340で記憶される復号化されたフレームを記憶するための十分な空間を有するように、複数のフレームを1/30秒(ビデオプレーヤアプリケーションのための標準の第三のレート350)よりも速いレートで表示することを含む。
その上、ソフトウェアアプリケーションは、次のフレームが現行のフレームに依存しない場合、および複数のバッファ305および315内のデータの量が多い(それぞれ、複数の高レベルマークH1およびH2の上)場合、フレームを落とす、または破棄する必要がある。例えば、バッファ305から取り除かれたフレームは、バッファ315に記憶される代わりに落とされる。これは、複数のバッファ305および315の潜在的なバッファオーバーフローを防止することに役立つ。フレームを落とすこと、または破棄することは、例えば、関連したスレッドを実行しないことを含む。データのバッファリングおよびデータの依存性は、アプリケーションステートの複数の例である。表1は、上記の複数の例の要約を提供する。図3Bで説明された複数のバッファ305および315は、それぞれビットストリームバッファおよび非圧縮フレームバッファとして表1でリストにされる。「−」を示す表エントリは、情報が実行される動作に関係しないことを示す。
Figure 2011018352
スレッドステート
スレッドステートは、複数のソフトウェアアプリケーション内の複数のスレッドがディスパッチされる方法に関連する。上記で説明されたように、ソフトウェアアプリケーションは、同時に実行する複数のスレッドを有する。1つの実施形態に関して、ソフトウェアアプリケーションに関連したスレッドのディスパッチは、複数のスレッドが同時に実行する複数の機会を増やすために遅らされる。スレッドのディスパッチを遅らすことは、複数のリソースのための要求を低減することを助け、したがって、システム200が、例えば、第一のマシンステート207から第二のマシンステート220に遷移することを可能にする。例えば、他に実行しているスレッドがない場合、スレッドは、ディスパッチされる準備ができた(または、レディ)ステート(例えば、第一のスレッドステート206)からディスパッチされることを遅らされる(または、待ち行列)ステート(例えば、第二のスレッドステート215)に遷移される。両方のスレッドが共にディスパッチされるように、スレッドは、他のスレッドが準備できるまで、待ち行列に入れられ、または遅らされる。共にディスパッチされる複数のスレッドは、同じソフトウェアアプリケーションに関連し、またはそれらは、異なる複数のソフトウェアアプリケーションに関連する。
概して、最大のスループットのために、準備のできた複数のスレッドは、即座にディスパッチされる。これは、複数のスレッドが、できるだけ速く終了することを可能にする。これは、一般的に、スループット指向の複数のソフトウェアアプリケーションにとって功を奏する。複数のスレッドをディスパッチすることにおける任意の遅延は、さもすればソフトウェアアプリケーションの性能に影響を与えていることと見なされる。1つのスレッドがその仕事を終えた場合、それは、次のスレッドが取りかかれるためにデータをバッファに書き込む。
図4Aは、2つの例のスレッド401および402を説明する。それぞれのスレッドは、繰り返し、異なる時刻にディスパッチされる。この例において、スレッドがディスパッチされるたびにそれは、アクティビティと称される。例えば、複数のアクティビティ405および410は、異なる時刻にディスパッチされた同じスレッド401に関連する。同様に、複数のアクティビティ415および420は、同じスレッド402に関連する。この例において、第二のスレッド402は、第一のスレッド401に依存しており、第一のスレッド401の完了の直後にのみディスパッチされる。例えば、アクティビティ415は、アクティビティ405の完了の後にディスパッチされる。同様に、アクティビティ420は、アクティビティ410の完了の後にディスパッチされる。リアルタイムビデオアプリケーションにおいて、ビデオを取り込む1つのスレッド、ビットストリームを符号化する1つのスレッド、およびビットストリームを送り出す他のスレッドが存在する。これら複数のスレッドは、本来、ビデオフレームバッファ(例えば、バッファ315)およびビットストリームバッファ(例えば、バッファ305)により同期された。通常、データが準備できた場合、次のスレッドは、即座に、データに取りかかる。
スレッドがディスパッチされる時刻(1つのアクティビティとして)と、同じスレッドがディスパッチされる次の時刻(他のアクティビティとして)との間の期間は、サイクル期間と称される。ソフトウェアアプリケーションに依存して、サイクル期間は、小さいまたは大きい。サイクル期間が小さい場合、他のアクティビティとの幾つかの実行オーバーラップが存在する。図4Aを参照して、2つのアクティビティ405および410は、同じスレッド401からである。この例において、アクティビティ405とアクティビティ410との間のサイクル期間400は、アクティビティ405およびアクティビティ415の結合された実行時間と比較して小さい。そのようなものとして、アクティビティ410とアクティビティ415との間に実行オーバーラップが存在する。アクティビティ415は、それがディスパッチされる準備ができる前に、アクティビティ405の完了を待つ必要がある。これは、アクティビティ415の実行は、アクティビティ405の完了および出力に依存するからである。アクティビティ410は、しかしながら、アクティビティ415の完了に依存せず、それ故に、アクティビティ415の完了の前にディスパッチされる。これは、オーバーラップ期間490で示されるように、アクティビティ410とアクティビティ415との間の実行オーバーラップをもたらすことを留意すべきである。
アクティビティ415は、アクティビティ410がディスパッチされる時刻まで実行している唯一のアクティビティである。これは、システム200が複数の論理プロセッサをサポートする場合、唯一の論理プロセッサは、アクティビティ415を実行することで忙しいが、他の論理プロセッサは、アクティビティ410がディスパッチされるまで、アイドルまたは停止となる。アクティビティ410がディスパッチされた後、2つの論理プロセッサは、期間490の間、2つのアクティビティ410および415を同時に実行することに忙しくなる。アクティビティ415が実行している唯一のアクティビティである期間は、ソフトウェアアプリケーションのシングルアクティビティ部分と称され、アクティビティ415がアクティビティ410と同時に実行している期間は、ソフトウェアアプリケーションのマルチスレッディング部分と称される。実行オーバーラップが存在するので、ソフトウェアアプリケーションは、ソフトウェアアプリケーションが一度に1つのスレッド実行する通常のプロセッサを伴い実行している場合は、より早く完了される。
サイクル期間が大きい場合、複数のアクティビティの間で任意の実行オーバーラップが存在しない。例えば、図4Bに説明されるように、スレッド403は、複数のアクティビティ455および460を有し、スレッド404は、アクティビティ465を有する。この例において、アクティビティ455とアクティビティ460との間のサイクル期間450は、複数のアクティビティ465および455の総実行時間より大きいことを留意すべきである。そのようなこととして、アクティビティ460とアクティビティ465との間には、実行オーバーラップは、存在しない。この例において、アクティビティ465は、それがディスパッチされる用意ができる前に、アクティビティ455の完了を待つ必要があるが、アクティビティ460は、ディスパッチされるために、アクティビティ465の完了を待つ必要はない。複数のアクティビティの間に実行オーバーラップが存在しない場合、マルチスレッディングシステム200は、通常のシングルスレッディングシステムのように振る舞い、複数のアクティビティは、逐次的に実行しているように見なされる。
図5は、1つの実施形態に係る遅延ディスパッチスキームを用いるマルチスレッディングシステムにおいてディスパッチされた複数のスレッドの一例を説明するブロック図である。1つの実施形態に関して、複数のアクティビティがディスパッチされる準備ができたら直ぐに複数のアクティビティをディスパッチする代わりに、リソースマネージャ210は、複数のアクティビティを協調してディスパッチする。例えば、リソースマネージャ210は、複数のアクティビティ(または複数のスレッド)のディスパッチを、実行オーバーラップの増加があるように、協調させる。
図5の図は、スレッド501およびスレッド502の複数の例を説明する。スレッド501は、複数のアクティビティ505および510を有する。スレッド502は、複数のアクティビティ515および520を有する。この例において、アクティビティ515は、アクティビティ505がその実行を完了した場合、ディスパッチされる準備ができたステートにある。ディスパッチされる準備ができたステートは、図2の例に説明されるように、第一のスレッドステート206と称される。しかしながら、アクティビティ505の完了の直後にアクティビティ515をディスパッチする代わりに、リソースマネージャ210は、アクティビティ515のディスパッチを、アクティビティ510がディスパッチされる準備ができるまで遅延させる。アクティビティ515の遅延ステートは、図2の例に説明されるように、第二のスレッドステート215と称される。遅延させることにより、アクティビティ510およびアクティビティ515は、それらが同時に実行するように、共に実行される。これは、オーバーラップ期間525として説明される。
幾つかの状況において、アクティビティ515は、実行オーバーラップが生じるように、それがディスパッチされる前に1サイクル期間500より多くの間、遅らされなければならない。あるいは、アクティビティ515は、ディスパッチされることを待機している他のアクティビティが存在する場合、遅らされる必要はない。この他のアクティビティのディスパッチは、以前に遅らされた。この状況において、複数のアクティビティの両方は、共にディスパッチされる。
複数のアクティビティ510および515の1つまたは両方が実行している期間は、非停止期間530と称される。非停止期間530の間、システム200は、ビジーのままであり、複数のリソースを消費する。非停止期間530は、同様に、オーバーラップ期間525を有することを留意すべきである。アクティビティ515のディスパッチを遅れさせることにより、実行されない期間が導入される。この期間は、停止した、またはアイドル期間535と称される。1つの実施形態に関して、停止した期間535の間、システム200は、よりビジーではなく、したがって、より少ないリソースを必要とする。例えば、ハイパースレッディング技術をサポートするプロセッサを用いる場合、複数のリソースのための複数の要求は、両方の論理プロセッサがアイドルなので、停止した期間の間はより少ない。複数のリソースのための複数の要求は、複数の論理プロセッサのどちらかまたは両方が忙しい場合で、およそ同様である。したがって、1つの論理プロセッサの複数のビジーサイクルを他のプロセッサの複数のビジーサイクルと重複させることは、複数のリソースを保持するために都合がよい。
1つの実施形態に関して、必要以上にスレッドを遅延させることを避けるために、タイムアウトスキームが実装される。例えば、タイムアウトスキームは、遅延の所定の量を設定することを含み、それにより、アクティビティは、ディスパッチされる前に待ち行列内で遅らされる。他の実施形態に関して、複数のアクティビティは、異なる複数の優先度を有し、それぞれの優先度は、ディスパッチされる前の異なる遅延時間に関連する。アクティビティが、たとえ実行しているいずれの他のアクティビティが存在しなくても、遅延なしでディスパッチされることを必要とする複数の状況が存在することが、留意される。例えば、アクティビティは、クリティカルとしてフラグを立てられ、そのディスパッチは、アクティビティの準備ができている場合は直ちに実行される。
アプリケーションステート、スレッドステート、およびマシンステート
1つの実施形態に関して、リソースマネージャ210は、システム200を1つのマシンステートから他のマシンステートに遷移させるかどうかを決定するために、ソフトウェアアプリケーションのアプリケーションステートおよびスレッドのスレッドステートを評価する。図3Bで説明された例において、スレッドは、バッファ305からフレームを復号化するアクティビティを有する。フレームを復号化することは、直接的に、または間接的にバッファ305内のデータ量に影響を与える。バッファ305のバッファレベル310が、バッファ305内のデータ量が少ない(低レベルマークL1の下)ことを示す場合、およびバッファ315のバッファレベル320が、バッファ315内のデータが標準(低レベルマークL2と高レベルマークH2との間)であることを示す場合、リソースマネージャ210は、現在のアクティビティをディスパッチするかどうかを決定する前に、システム200内の他の複数のアクティビティを評価する。1つの実施形態に関して、他の実行しているアクティビティが存在し、そのアクティビティは、現在のアクティビティに関連している(例えば、前回のフレームを現行フレームに復号化する)場合、リソースマネージャ210は、利用可能な複数のリソースを減らすことにより(例えば、プロセッサに適用される周波数/電圧を減らす)、システム200のマシンシステムを変更する。これは、実行中のアクティビティの実行を遅くし、バッファ305内のデータ量がすでに少ないので、バッファ305を使い果たすこと、またはアンダーフローさせることの可能性を減らす。
他の実施形態において、実行中の他のアクティビティが存在し、そのアクティビティは、現在のアクティビティが現在のアクティビティと関連しない場合(例えば、実行中のアクティビティは、現在のフレームの前のフレームを復号化していない)、現在のアクティビティのディスパッチは、遅らされる。これは、例えば、現在のアクティビティを、1つ以上のサイクル期間のために、待ち行列の中に配置することを含む。現在のアクティビティのディスパッチを遅らせることにより、バッファ305を消耗することの潜在性は、減らされる。
一般的に、1つ以上のアクティビティの一式のディスパッチを遅らせることおよび利用可能な複数のリソース減らすことは、可能性のある複数のバッファアンダーフローまたはオーバーフロー条件を減らす。1つ以上のアクティビティの一式のディスパッチを遅らせることは、複数の同時マルチスレッディングプロセッサ上の複数のプロセッサリソースのより効果的な活用を可能にする。表2は、上記複数の例の要約を提供する。
バッファ305 → ビットストリームバッファレベル → 低
バッファ315 → 非圧縮フレームバッファ → 標準
Figure 2011018352
1つの実施形態に関して、バッファレベル310が、バッファ305内のデータ量が標準(低レベルマークL1と、高レベルマークH1との間)であることを示し、バッファレベル320が、バッファ315内のデータ量が標準(低レベルマークL2と、高レベルマークH2との間)であることを示す場合、リソースマネージャ210は、現在のアクティビティをディスパッチする前に、システム200内の他の複数のアクティビティを評価する。実行している他のアクティビティが存在する場合、またはディスパッチされる準備ができている他のアクティビティが存在する場合、現在のアクティビティは、実行オーバーラップが存在するように、リソースマネージャ210によりディスパッチされる。しかしながら、実行している他のアクティビティが存在しない場合、または、ディスパッチされる準備ができている他のアクティビティが存在しない場合、リソースマネージャ210は、現在のアクティビティのディスパッチを遅らせる。この状況において、遅延は、複数のバッファ305および315内のデータの現在の複数のバッファレベル上に依存しない(なぜなら、それらは、両方とも標準レベルにある)。しかしながら、遅延は、実行オーバーラップのための可能性を増やし、それは、複数のスレッドのための要求を減らすことを助ける。表3は、上記複数の例の要約を提供する。
バッファ305 → ビットストリームレベル → 標準
バッファ315 → 非圧縮フレームバッファレベル → 標準
Figure 2011018352
1つの実施形態に関して、バッファレベル310が、バッファ305内のデータ量が多い(高レベルマークH1の上)ことを示し、バッファ315のバッファレベル320が、バッファ315内のデータが標準(低レベルマークL2と高レベルマークH2との間)であることを示す場合、リソースマネージャ210は、現在のアクティビティをディスパッチする前に、システム200における他の複数のアクティビティを評価する。他の実行中のアクティビティがある場合、または他のディスパッチされる準備ができたアクティビティがある場合、現在のアクティビティは、実行オーバーラップが存在するように、ディスパッチされる。しかしながら、他の実行中のアクティビティがない場合、およびディスパッチされる準備ができたアクティビティがない場合、リソースマネージャ210は、可能なだけ早くデータをバッファ305の外に出すために現在のアクティビティをディスパッチする。これは、バッファ305内のデータ量が高レベルであり、現在のアクティビティをディスパッチすることにおける任意の不必要な遅延は、潜在的に、バッファ305に起こるバッファオーバーフロー条件を引き起こすからである。1つの実施形態に関して、現在のアクティビティをディスパッチすることに加えて、リソースマネージャ210は、同様に、バッファ305から読み出され、または処理されるデータのレートを上げるために、利用可能な複数のリソース(例えば、プロセッサに適用される周波数/電圧を上げる)を増やす。これは、システム200を、1つのマシンステートから他のマシンステートに遷移させ、バッファ305への潜在的なオーバーフロー条件を避けることに役立つ。図4は、上記複数の例のデータの要約を提供する。
バッファ305 → ビットストリームバッファレベル → 高
バッファ315 → 非圧縮フレームバッファ → 標準
Figure 2011018352
他の実施形態に関して、複数のアプリケーションステートおよび/または複数のスレッドステートは、マルチスレッディングシステムにおいてリソース管理のために積極的に作成される。例えば、複数のアプリケーションは、複数のスレッドの形式の複数のサブタスクに細分される。これは、たとえアプリケーションがマルチスレッドでなくてもなされる。データバッファは、複数のスレッドのためにセットアップされ、一時的なアプリケーションデータ記憶のために使用される。その上、複数のバッファ指示部レベルは、バッファオーバーフロー条件および/またはアンダーフロー条件を定義するために設定される。バッファの複数のステートは、オーバーフロー指示部またはアンダーフロー指示部に対する現在のバッファ充満レベルを判定することにより、モニタされる。バッファの複数のステートおよび/または複数のスレッドの複数のステートをモニタすることにより、マルチスレッディングシステム内の複数のリソースが調整される。
図6は、1つの実施形態に係るビデオ復号化プロセスの一例を説明する図である。ブロック605において、フレームが受信され、復号化される準備ができる。このフレームは、例えば、図3Bに説明されるようなバッファ305などのバッファから受信される。ブロック610において、例えば、図3Bに説明されるようなバッファ315などの非圧縮フレームバッファ内に十分な非圧縮フレームがあるかどうかを判断するテストが実施される。バッファ315内に十分なデータが存在しない場合(例えば、現在のバッファレベル320は、低レベルマークL2の下)、プロセスは、ブロック690へ流れ、適切な復号化アクティビティが、フレームを復号化するためにディスパッチされる。
ブロック610から、十分な非圧縮フレームが存在する場合(バッファ315内に)、プロセスは、ブロック615へ流れ、次のフレームが現在のフレームに依存するかどうかを判断するためにテストが実施される。依存性が存在する場合、プロセスは、ブロック615からブロック640へ流れ、実行中の他のアクティビティまたはスレッドがあるかどうかを判断するためのテストが実施される。実行中の他のアクティビティが存在する場合、現在のアクティビティは、実行オーバーラップを可能にするためにディスパッチされる。
ブロック640から、実行中の他のアクティビティが存在しない場合、プロセスは、ブロック645へ流れ、ディスパッチされる準備ができている他のアクティビティが存在するかどうかを判断するためにテストが実施される。これは、以前に遅らされたアクティビティである。ディスパッチされる準備のできたアクティビティが存在する場合、現在のアクティビティおよびディスパッチされる準備のできたアクティビティは、ブロック660に示されるように、共にディスパッチされる。
ブロック645から、ディスパッチされる準備のできた他のアクティビティが存在しない場合、現在のアクティビティは、ディスパッチされることから遅延される。これは、ブロック650に示されるように、例えば、現在のアクティビティを待ち行列に配置することを含む。現在のアクティビティは、他のアクティビティがディスパッチされる準備ができるまで、待ち行列の中で待機する。1つの実施形態に関して、アクティビティが待ち行列の中で待機する時間を制限するために、所定の時間が使用される。他の実施形態に関して、ブロック655に示されるように、現在のアクティビティが遅らされることができるかどうかを判断するためにテストが実施され、ブロック690に示されるように、現在のアクティビティが遅らされることができない場合、現在のアクティビティは、ディスパッチされる。
ブロック615から、次のフレームが現在のフレームに依存しない場合、プロセスは、ブロック620に流れ、復号化される準備ができた他のフレームが存在するかどうかを判断するためにテストが実施される。復号化される準備のできた他のフレームが存在する場合、現在のフレームおよび他のフレームは、共に復号化される(例えば、両方のアクティビティが共にディスパッチされる)。ブロック620から、復号化される他のフレームがない場合、プロセスは、ブロック650へ流れ、上記で説明されたように、待機が生じる。
これらさまざまな方法の複数の動作は、コンピュータシステム内のプロセッサにより実装され、プロセッサは、マシン可読記憶媒体と見なされるメモリに記憶される複数のコンピュータプログラム命令の複数のシーケンスを実行する。メモリは、ランダムアクセスメモリ、読み出し専用メモリ、大容量記憶デバイスなどの固定記憶域メモリ(persistent storage memory)、またはそれらデバイスの任意の組み合わせでよい。命令の複数のシーケンスの実行は、プロセッサに、図6の例に説明されるような動作を実行させる。
複数の命令は、ストレージデバイスから、または1つ以上の他のコンピュータシステム(例えば、サーバコンピュータシステム)からコンピュータシステムのメモリへロードされる。複数の命令は、幾つかのストレージデバイス(例えば、DRAMおよび仮想メモリなどのハードディスク)に、同時に記憶される。したがって、これら複数の命令の実行は、プロセッサにより直接実行される。他の複数のケースにおいて、複数の命令は、プロセッサにより直接実行され、またはそれらは直接実行されない。これらの状況の下、複数の実行は、プロセッサに複数の命令を解釈するインタープリタを実行させることにより、またはプロセッサに受信された複数の命令をプロセッサにより直接実行されることができる複数の命令に変換するコンパイラを実行させることにより実行される。他の複数の実施形態において、本発明を実装するために、複数の命令の代わりに、または複数の命令と組み合わせて、結線回路が使用される。例えば、リソースマネージャは、上記で説明された1つ以上の動作(例えば、複数のアプリケーションステートをモニタリングすること、複数のリソースを調整することなど)を実行するロジックを含むために実装される。したがって、本発明は、ハードウェア回路およびソフトウェアのいずれの特定の組み合わせに、またはコンピュータシステムにより実行される複数の命令のためのいずれの特定のソースに制限されない。
複数のシステムにおいて複数のリソースを管理するための複数の方法および複数のシステムが開示された。複数のリソースのための要求は、データのバッファリングをモニタすることおよびソフトウェアアプリケーションの複数のスレッドのディスパッチを協調させることにより、減らされ、または増やされる。これは、プロセッサアイドル時間を増やすことに役立つ。
本発明は、特定の例の複数の実施形態を参照して説明されたが、様々な修正および変更が、複数の請求項に記載の本発明の上位精神および範囲を逸脱することなく、これら複数の実施形態になされることは、明白である。例えば、本明細書は、複数のスレッドおよび複数のアクティビティのディスパッチを参照したが、説明された複数の技術は、例えば、複数のプロセッサ、複数のタスク、複数のプロセスの複数の部分、複数のタスクの複数の部分などの他の複数の実体をスケジューリングするために、同様に使用される。その上、複数の技術は、他の複数のマルチスレッディングプロセッサに同様に使用され、ハイパースレッディング技術をサポートする複数のプロセッサに制限されない。例えば、プロセッサは、デュアルコアを有するプロセッサであり、複数のスレッドを同時に実行できる。したがって、本明細書および複数の図面は、限定的な意味ではなく説明のためである。

Claims (50)

  1. システム内で実行中のアプリケーションのステートをモニタする段階であって、前記アプリケーションに関連した1つ以上のバッファをモニタする段階を有する段階、
    前記システム内の1つ以上のスレッドのディスパッチを制御する段階であって、前記システム内の少なくとも1つのスレッドは、前記アプリケーションに関連する段階、および
    前記システム内の前記アプリケーションの前記ステートおよび前記1つ以上のスレッドの前記ステートに少なくとも基づいて前記システム内の複数のリソースを管理する段階
    を備える方法。
  2. スレッドは、1つ以上のアクティビティを有し、
    前記システム内の前記1つ以上のスレッドの前記ディスパッチを制御する段階は、前記1つ以上のアクティビティの実行準備性を評価する段階を有する請求項1に記載の方法。
  3. 前記システム内の前記1つ以上のスレッドの前記ディスパッチを制御する段階は、ディスパッチされる準備ができたアクティビティをディスパッチされることから遅らせる段階を有する請求項2に記載の方法。
  4. 第一のアクティビティおよび第二のアクティビティの両方が、共にディスパッチされることができるように、前記第一のアクティビティは、前記第二のアクティビティの準備ができるのを待つために、ディスパッチされることから遅らされ、前記第一のアクティビティおよび前記第二のアクティビティは、1つ以上のアプリケーションからである請求項3に記載の方法。
  5. 前記システムのマシンステートをモニタする段階であって、
    前記システム内の利用可能な複数のリソースを決定する段階、および
    前記システム内の前記アプリケーションの前記ステートおよび前記1つ以上のスレッドの前記ステートに基づいて前記システム内の利用可能な前記複数のリソースを増やす段階または減らす段階
    を有する段階をさらに備える請求項1に記載の方法。
  6. 前記複数のリソースは、設定可能な複数のハードウェアコンポーネントを有する請求項5に記載の方法。
  7. 前記設定可能なハードウェアコンポーネントは、前記システム内の1つ以上のプロセッサ、複数のハードウェアバッファ、メモリ、キャッシュ、算術論理ユニット(ALU)、および複数のレジスタを有する請求項6に記載の方法。
  8. 前記システム内の利用可能な前記複数のリソースを増やす段階または減らす段階は、前記システム内の少なくとも前記1つ以上のプロセッサに適用される前記複数の周波数を設定する段階を有する請求項7に記載の方法。
  9. 前記システム内の利用可能な前記複数のリソースを増やす段階または減らす段階は、前記システム内の少なくとも前記1つ以上のプロセッサに適用される前記複数の電圧を設定する段階を有する請求項8に記載の方法。
  10. 前記システム内の前記複数のリソースを増やす段階または減らす段階は、前記システム内の回路の少なくとも一部を電源オンする段階または電源オフする段階を有する請求項7に記載の方法。
  11. 前記アプリケーションに関連した前記1つ以上のバッファをモニタする段階は、前記1つ以上のバッファの複数のバッファ充満レベルをモニタする段階を有する請求項1に記載の方法。
  12. 前記複数のバッファ充満レベルをモニタする段階は、前記アプリケーションに関連したそれぞれのバッファに対して、バッファレベルを所定の複数のバッファ充満レベルと比較する段階を有し、
    前記所定の複数のバッファ充満レベルは、高レベルマークおよび低レベルマークを含む請求項11に記載の方法。
  13. 比較する段階は、バッファオーバーフローおよびバッファアンダーフロー条件を判断することである請求項12に記載の方法。
  14. 複数の実行可能命令を備え、
    前記複数の命令がプロセッシングシステム内で実行された場合、前記プロセッシングシステムに、
    システム内で実行中のアプリケーションのステートをモニタする段階であって、前記アプリケーションに関連した1つ以上のバッファの複数のバッファ充満レベルをモニタする段階を有する段階、
    前記システム内の1つ以上のスレッドのディスパッチを制御する段階であって、前記システム内の少なくとも1つのスレッドは、前記アプリケーションに関連する段階、および
    前記システム内の前記アプリケーションの前記ステートおよび前記1つ以上のスレッドの前記ステートに少なくとも基づいて前記システム内の複数のリソースを管理する段階
    を備える方法を実行させるコンピュータ可読媒体。
  15. 前記システム内の前記1つ以上のスレッドの前記ディスパッチを制御する段階は、ディスパッチされる準備ができたスレッドをディスパッチされることから遅らせる段階を有する請求項14に記載のコンピュータ可読媒体。
  16. 前記システムのマシンステートをモニタする段階であって、
    前記システム内の利用可能な複数のリソースを決定する段階、および
    前記システム内の前記アプリケーションの前記ステートおよび前記1つ以上のスレッドの前記ステートに基づいて前記システム内の利用可能な前記複数のリソースを増やす段階または減らす段階
    を有する段階をさらに備える請求項14に記載のコンピュータ可読媒体。
  17. 前記複数のリソースは、設定可能な複数のハードウェアコンポーネントを有する請求項16に記載のコンピュータ可読媒体。
  18. 前記システム内の利用可能な前記複数のリソースを増やす段階または減らす段階は、前記システム内の少なくとも前記1つ以上のプロセッサに適用される前記複数の周波数および/または前記複数の電圧を設定する段階を有する請求項16に記載のコンピュータ可読媒体。
  19. 前記複数のバッファ充満レベルをモニタする段階は、前記アプリケーションに関連したそれぞれのバッファに対して、バッファレベルを所定の複数のバッファ充満レベルと比較する段階を有し、
    前記所定の複数のバッファ充満レベルは、高レベルマークおよび低レベルマークを含む請求項14に記載のコンピュータ可読媒体。
  20. システム内の実行中のアプリケーションにより使用される1つ以上のバッファの複数のバッファ充満レベルをモニタすることにより、および前記システム内の複数のスレッドのディスパッチを協調させることにより、前記システム内の複数のリソースを管理する段階を備える方法。
  21. 前記1つ以上のバッファの前記複数のバッファ充満レベルをモニタする段階は、バッファオーバーフロー条件またはアンダーフロー条件を判断するために前記1つ以上のバッファのそれぞれのバッファレベルをモニタする段階を有する請求項20に記載の方法。
  22. 前記システム内の前記複数のスレッドの前記ディスパッチを協調させる段階は、複数のスレッドの実行の中のオーバーラップを増やすために実行される請求項20に記載の方法。
  23. 前記複数のスレッドの実行内の前記オーバーラップを増やす段階は、スレッドをレディステートから待ち行列ステートに変更する段階を有する請求項22に記載の方法。
  24. 前記スレッドは、両方のスレッドが共にディスパッチされることができるように、前記レディステートである他のスレッドが存在するまで、前記待ち行列ステートのままである請求項23に記載の方法。
  25. 前記システム内の前記複数のスレッドの前記ディスパッチを協調させる段階は、複数のスレッドの依存性を決定する段階を有し、
    前記アプリケーションの現在のスレッドと次のスレッドとの間に依存性があり、また、前記複数のバッファの全ての前記複数のバッファ充満レベルが潜在的なオーバーフロー条件を示す場合、前記システム内の前記複数のリソースは、増やされる請求項20に記載の方法。
  26. 前記複数のバッファの全ての前記複数のバッファ充満レベルがクリティカル局面に達した場合、前記システム内の前記複数のリソースは、調整される請求項20に記載の方法。
  27. 複数の実行可能命令を備え、
    前記複数の命令がプロセッシングシステム内で実行された場合、前記プロセッシングシステムに、
    システム内の実行中のアプリケーションにより使用される1つ以上のバッファの複数のバッファ充満レベルをモニタすることにより、および前記システム内の複数のスレッドのディスパッチを協調させることにより、前記システム内の複数のリソースを管理する段階を備える方法を実行させるコンピュータ可読媒体。
  28. 前記複数のバッファ充満レベルをモニタする段階は、バッファオーバーフロー条件またはアンダーフロー条件のためにモニタする段階、および相応して、前記バッファオーバーフロー条件またはアンダーフロー条件を避けるために前記システム内の前記複数のリソースを増やす段階または減らす段階を有する請求項27に記載のコンピュータ可読媒体。
  29. 前記システム内の前記複数のスレッドの前記ディスパッチを協調させる段階は、実行オーバーラップを増やすために、スレッドをレディステートから待ち行列ステートに変更する段階および複数のスレッドをディスパッチする段階を有する請求項27に記載のコンピュータ可読媒体。
  30. システム内の1つ以上のスレッドの複数のステートをモニタする段階であって、前記1つ以上のスレッドをディスパッチするために準備性をモニタする段階を有する段階、および
    前記システム内の前記1つ以上のスレッドの前記複数のステートに少なくとも基づいて前記システム内の複数のリソースを管理する段階であって、前記複数のリソースは、前記システム内の複数の設定可能ハードウェアコンポーネントを有する段階
    を備える方法。
  31. 前記システム内の前記複数のリソースを管理する段階は、前記システム内の少なくとも1つ以上のプロセッサに適用される前記複数の周波数および/または複数の電圧を設定する段階を有する請求項30に記載の方法。
  32. 前記システム内の前記複数のリソースを管理する段階は、前記システム内の回路の一部を電源オンする段階または電源オフする段階をさらに有する請求項30に記載の方法。
  33. 前記システム内で実行中のアプリケーションのステートを管理する段階をさらに備え、
    前記アプリケーションの前記ステートは、前記アプリケーションにより使用される1つ以上のバッファの複数のバッファ充満レベルを有し、
    前記システム内の前記複数のリソースは、前記アプリケーションの前記ステートに基づいて増やされ、または減らされる請求項30に記載の方法。
  34. システム内で実行中のアプリケーションのステートをモニタする段階であって、前記アプリケーションに関連した1つ以上のバッファの複数のバッファ充満レベルをモニタする段階を有する段階、および
    前記アプリケーションの前記ステートに基づいて前記システム内の複数のリソースを管理する段階
    を備える方法。
  35. 前記システム内の1つ以上のスレッドの実行準備性を管理する段階をさらに備え、
    前記複数のリソースを管理する段階は、前記アプリケーションに関連する少なくとも1つのスレッドの前記実行準備性にさらに基づく請求項34に記載の方法。
  36. 前記実行準備性は、ディスパッチされる準備ができたステートおよびディスパッチされることから遅らせるステートを有する請求項35に記載の方法。
  37. 前記システム内の前記1つ以上のスレッドの前記実行準備性を管理する段階は、スレッドをディスパッチされる準備ができたステートからディスパッチされることから遅らせるステートに置く段階を有する請求項36に記載の方法。
  38. 前記1つ以上のバッファの前記複数のバッファ充満レベルをモニタする段階は、
    潜在的なバッファアンダーフロー条件またはオーバーフロー条件を判断する段階、および
    前記潜在的なバッファアンダーフロー条件またはオーバーフロー条件を避けるために前記システム内の利用可能な複数のリソースを変更するために前記システム内の1つ以上のコンポーネントを設定する段階
    を有する請求項37に記載の方法。
  39. データおよび複数の命令を記憶するためのメモリと、
    バス上で前記メモリに結合されたプロセッサであって、複数の命令を実行できるプロセッサと
    を備え、
    前記プロセッサは、
    前記メモリからの複数の命令のシーケンスを受信するバスユニットと、
    前記バスユニットに結合された実行ユニットであって、複数の命令の前記シーケンスを実行する実行ユニットと
    を有し、
    複数の命令の前記シーケンスは、前記実行ユニットに、
    システム内で実行中のアプリケーションのステートをモニタする手順であって、前記アプリケーションに関連した1つ以上のバッファの複数のバッファ充満レベルをモニタすることを有する手順、
    前記システム内の1つ以上のスレッドのディスパッチを制御する手順であって、前記システム内の少なくとも1つのスレッドは、前記アプリケーションに関連する手順、および
    前記システム内の前記アプリケーションの前記ステートおよび前記1つ以上のスレッドの前記ステートに少なくとも基づいて前記システム内の複数のリソースを管理する手順
    を実行させるシステム。
  40. 前記システム内の前記1つ以上のスレッドの前記ディスパッチを制御する手順は、ディスパッチされる準備ができたスレッドをディスパッチされることから遅らせる手順を有する請求項39に記載のシステム。
  41. 複数の命令をさらに備え、
    前記複数の命令は、前記実行ユニットに、
    前記システムのマシンステートをモニタする手順であって、
    前記システム内の利用可能な複数のリソースを決定する手順、および
    前記システム内の前記アプリケーションの前記ステートおよび前記1つ以上のスレッドの前記ステートに基づいて前記システム内の利用可能な前記複数のリソースを増やす手順または減らす手順
    を有する手順を実行させる請求項39に記載のシステム。
  42. 前記複数のリソースは、複数の設定可能ハードウェアコンポーネントを有する請求項41に記載のシステム。
  43. 前記システム内の利用可能な前記複数のリソースを増やす手順または減らす手順は、前記システム内の少なくとも前記1つ以上のプロセッサに適用される前記複数の周波数および前記複数の電圧を設定する手順を有する請求項41に記載のシステム。
  44. マルチスレッディングプロセッサ、および
    前記マルチスレッディングプロセッサに結合されたリソースマネージャであって、
    システム内で実行中のアプリケーションの複数のステートをモニタし、前記アプリケーションの前記複数のステートは、前記アプリケーションにより使用される1つ以上のバッファの複数のバッファ充満レベルを有し、
    実行準備性のために前記システム内の1つ以上のスレッドの複数のステートをさらにモニタし、前記システム内の前記アプリケーションの前記複数のステートおよび/または前記1つ以上のスレッドの前記複数のステートに依存して前記システム内の利用可能な複数のリソースを増やし、または減らすリソースマネージャ
    を備えるシステム。
  45. 前記リソースマネージャは、他のスレッドの実行と続いて起こるスレッド実行とのオーバーラップを増やすために、スレッドの前記実行準備性をレディステートから待ち行列ステートに変更する請求項44に記載のシステム。
  46. 前記リソースマネージャは、スレッド実行がない場合、続いて起こるシステムアイドル時間を増やすために、スレッドの前記実行準備性をレディステートから待ち行列ステートに変更する請求項45に記載のシステム。
  47. 前記リソースマネージャは、前記1つ以上のバッファで生じるバッファアンダーフロー条件またはオーバーフロー条件を避けるために前記システム内の利用可能な前記複数のリソースを増やし、または減らす請求項46に記載のシステム。
  48. システム内で実行中のアプリケーションの複数のステートをモニタするロジックであって、前記アプリケーションの前記複数のステートは、前記アプリケーションにより使用される1つ以上のバッファの複数のバッファ充満レベルを有するロジック、
    実行準備性のために前記システム内の1つ以上のスレッドの複数のステートをモニタするロジック、および
    前記システム内の前記アプリケーションの前記ステートおよび/または前記1つ以上のスレッドの前記複数のスレッドに基づいて前記システム内の利用可能な複数のリソースを調整するロジック
    を備える装置。
  49. 他の実行中またはディスパッチされる準備ができたスレッドがないと判断される場合、スレッドの前記実行準備性をレディステートから待ち行列ステートに変換するロジックをさらに備える請求項48に記載の装置。
  50. 前記システム内の前記利用可能な複数のリソースを調整するロジックは、1つ以上のバッファの複数のバッファ充満レベルがクリティカル局面にあるかどうかを判断するロジックを含む請求項48に記載の装置。
JP2010188252A 2004-02-06 2010-08-25 同時マルチスレッディングプロセッサを用いてバッファ型アプリケーションのエネルギー消費を低減する方法 Active JP5097251B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/774,178 2004-02-06
US10/774,178 US9323571B2 (en) 2004-02-06 2004-02-06 Methods for reducing energy consumption of buffered applications using simultaneous multi-threading processor

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2006552129A Division JP4603554B2 (ja) 2004-02-06 2005-01-14 同時マルチスレッディングプロセッサを用いてバッファ型アプリケーションのエネルギー消費を低減する方法

Publications (2)

Publication Number Publication Date
JP2011018352A true JP2011018352A (ja) 2011-01-27
JP5097251B2 JP5097251B2 (ja) 2012-12-12

Family

ID=34860806

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006552129A Expired - Fee Related JP4603554B2 (ja) 2004-02-06 2005-01-14 同時マルチスレッディングプロセッサを用いてバッファ型アプリケーションのエネルギー消費を低減する方法
JP2010188252A Active JP5097251B2 (ja) 2004-02-06 2010-08-25 同時マルチスレッディングプロセッサを用いてバッファ型アプリケーションのエネルギー消費を低減する方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2006552129A Expired - Fee Related JP4603554B2 (ja) 2004-02-06 2005-01-14 同時マルチスレッディングプロセッサを用いてバッファ型アプリケーションのエネルギー消費を低減する方法

Country Status (6)

Country Link
US (1) US9323571B2 (ja)
JP (2) JP4603554B2 (ja)
CN (1) CN100430897C (ja)
DE (1) DE112005000307T5 (ja)
GB (1) GB2426096B (ja)
WO (1) WO2005078580A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016520933A (ja) * 2013-06-28 2016-07-14 インテル コーポレイション マルチコンポーネントプラットフォームにおけるアクティビティ管理のための技術およびシステム

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100663864B1 (ko) * 2005-06-16 2007-01-03 엘지전자 주식회사 멀티-코어 프로세서의 프로세서 모드 제어장치 및 방법
JP4519082B2 (ja) * 2006-02-15 2010-08-04 株式会社ソニー・コンピュータエンタテインメント 情報処理方法、動画サムネイル表示方法、復号化装置、および情報処理装置
JP4732195B2 (ja) * 2006-03-03 2011-07-27 富士通株式会社 制御プログラム、制御装置、制御方法
US8869152B1 (en) * 2007-01-11 2014-10-21 Marvell International Ltd. Methods and procedures to dynamically adjust processor frequency
CN101571744A (zh) * 2008-04-30 2009-11-04 扬智科技股份有限公司 应用于计算机系统中的功率控制装置以及功率控制方法
US8933953B2 (en) * 2008-06-30 2015-01-13 Intel Corporation Managing active thread dependencies in graphics processing
US9032254B2 (en) * 2008-10-29 2015-05-12 Aternity Information Systems Ltd. Real time monitoring of computer for determining speed and energy consumption of various processes
WO2010058246A1 (en) * 2008-11-24 2010-05-27 Freescale Semiconductor, Inc. Management of multiple resource providers
FR2950714B1 (fr) * 2009-09-25 2011-11-18 Bull Sas Systeme et procede de gestion de l'execution entrelacee de fils d'instructions
WO2012031799A1 (en) * 2010-09-09 2012-03-15 Siemens Aktiengesellschaft A system to manage power consumption of a processor at run time
CN102540968B (zh) * 2010-12-09 2013-12-04 中国科学院沈阳计算技术研究所有限公司 一种面向数控系统的数据流反馈调度方法
JP2012243176A (ja) * 2011-05-23 2012-12-10 Renesas Electronics Corp 半導体装置及び制御方法
CN103891303B (zh) 2011-08-16 2018-03-09 黛斯悌尼软件产品有限公司 基于脚本的视频呈现
KR20140093088A (ko) * 2013-01-17 2014-07-25 삼성전자주식회사 전자 장치에서 트래픽 제어 방법 및 장치
US20150355700A1 (en) * 2014-06-10 2015-12-10 Qualcomm Incorporated Systems and methods of managing processor device power consumption
US20160077545A1 (en) * 2014-09-17 2016-03-17 Advanced Micro Devices, Inc. Power and performance management of asynchronous timing domains in a processing device
US11481298B2 (en) * 2015-01-20 2022-10-25 Sap Se Computing CPU time usage of activities serviced by CPU
US10437313B2 (en) * 2016-06-10 2019-10-08 Apple Inc. Processor unit efficiency control
US11283990B2 (en) * 2017-04-18 2022-03-22 Sony Corporation Display control device, imaging device, and display control method
GB2598396A (en) * 2020-09-01 2022-03-02 Advanced Risc Mach Ltd In-core parallelisation in a data processing apparatus and method
CN112316419B (zh) * 2020-11-03 2022-06-28 腾讯科技(深圳)有限公司 应用程序的运行方法、装置、设备及可读存储介质
CN113038276A (zh) * 2021-03-08 2021-06-25 Oppo广东移动通信有限公司 视频播放方法、装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1069394A (ja) * 1996-06-10 1998-03-10 Lsi Logic Corp オブジェクト指向言語プログラム由来の中間コードデータストリーム、またはマルチメディアデータストリームの処理システム及び方法
JPH11282815A (ja) * 1998-03-31 1999-10-15 Nec Corp マルチスレッド計算機システム及びマルチスレッド実行制御方法
JP2002099432A (ja) * 2000-09-22 2002-04-05 Sony Corp 演算処理システム及び演算処理制御方法、タスク管理システム及びタスク管理方法、並びに記憶媒体
WO2003040912A1 (en) * 2001-11-07 2003-05-15 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (numa) computer system

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3215177A1 (de) * 1982-04-23 1983-10-27 Hartmann & Braun Ag, 6000 Frankfurt Ueberwachungssystem fuer eine oder mehrere, gleichartig aufgebaute prozessstationen
US4811208A (en) * 1986-05-16 1989-03-07 Intel Corporation Stack frame cache on a microprocessor chip
EP0312764A3 (en) * 1987-10-19 1991-04-10 International Business Machines Corporation A data processor having multiple execution units for processing plural classes of instructions in parallel
JPH0237422A (ja) 1988-07-28 1990-02-07 Oki Electric Ind Co Ltd 数値管理方式
US5261076A (en) * 1989-12-20 1993-11-09 Samsung Semiconductor Inc. Method for programming a pin compatible memory device by maintaining a reset clock signal longer than a regular reset duration
JP3082297B2 (ja) * 1991-04-30 2000-08-28 日本電気株式会社 タスク制御方式
US5450546A (en) * 1992-01-31 1995-09-12 Adaptec, Inc. Intelligent hardware for automatically controlling buffer memory storage space in a disk drive
JPH05216842A (ja) * 1992-02-05 1993-08-27 Mitsubishi Electric Corp 資源管理装置
DE69409445D1 (de) * 1993-07-27 1998-05-14 Ibm Prozessüberwachung in einem Mehrfachverarbeitungsanbieter
EP0644483B1 (en) * 1993-09-14 1999-01-20 International Business Machines Corporation Computer system and method for performing multiple tasks
JPH0793168A (ja) * 1993-09-21 1995-04-07 Fuji Electric Co Ltd タスク管理方式
US5668993A (en) * 1994-02-28 1997-09-16 Teleflex Information Systems, Inc. Multithreaded batch processing system
JPH07262079A (ja) * 1994-03-16 1995-10-13 Fujitsu Ltd バッファ再割当システム
US5579452A (en) * 1994-09-29 1996-11-26 Xerox Corporation Method of managing memory allocation in a printing system
US6021457A (en) * 1995-09-28 2000-02-01 Intel Corporation Method and an apparatus for minimizing perturbation while monitoring parallel applications
US5812860A (en) * 1996-02-12 1998-09-22 Intel Corporation Method and apparatus providing multiple voltages and frequencies selectable based on real time criteria to control power consumption
US6209041B1 (en) * 1997-04-04 2001-03-27 Microsoft Corporation Method and computer program product for reducing inter-buffer data transfers between separate processing components
US6658447B2 (en) * 1997-07-08 2003-12-02 Intel Corporation Priority based simultaneous multi-threading
US6577602B1 (en) * 1997-10-16 2003-06-10 Siemens Aktiengesellschaft Module for OAM processing of ATM cells of a cell flux on virtual connections
JPH11143727A (ja) 1997-11-05 1999-05-28 Nec Mobile Commun Ltd 入出力管理装置および方法
JP3495242B2 (ja) * 1998-02-06 2004-02-09 富士通株式会社 情報処理装置、モード制御方法及び記憶媒体
AU3300499A (en) * 1998-02-26 1999-09-15 Sun Microsystems, Inc. Method and apparatus for the suspension and continuation of remote processes
US6092108A (en) * 1998-03-19 2000-07-18 Diplacido; Bruno Dynamic threshold packet filtering of application processor frames
US6052325A (en) * 1998-05-22 2000-04-18 Micron Technology, Inc. Method and apparatus for translating signals
US6141762A (en) 1998-08-03 2000-10-31 Nicol; Christopher J. Power reduction in a multiprocessor digital signal processor based on processor load
GB2342528A (en) 1998-10-05 2000-04-12 Ibm Interactive voice response
SE9901146D0 (sv) * 1998-11-16 1999-03-29 Ericsson Telefon Ab L M A processing system and method
US6839762B1 (en) * 1998-12-31 2005-01-04 U-Systems, Inc. Ultrasound information processing system and ultrasound information exchange protocol therefor
US6493741B1 (en) * 1999-10-01 2002-12-10 Compaq Information Technologies Group, L.P. Method and apparatus to quiesce a portion of a simultaneous multithreaded central processing unit
WO2001035243A1 (en) * 1999-11-08 2001-05-17 Megaxess, Inc. QUALITY OF SERVICE (QoS) NEGOTIATION PROCEDURE FOR MULTI-TRANSPORT PROTOCOL ACCESS FOR SUPPORTING MULTI-MEDIA APPLICATIONS WITH QoS ASSURANCE
US6442697B1 (en) * 2000-03-24 2002-08-27 Intel Corporation Method and apparatus to control processor power and performance for single phase lock loop (PLL) processor systems
JP3840045B2 (ja) * 2000-08-04 2006-11-01 株式会社東芝 データ処理方法及びデータ処理装置
EP1215663A1 (en) * 2000-12-15 2002-06-19 BRITISH TELECOMMUNICATIONS public limited company Encoding audio signals
ATE464740T1 (de) * 2000-12-15 2010-04-15 British Telecomm Übertagung von ton- und/oder bildmaterial
US6990598B2 (en) * 2001-03-21 2006-01-24 Gallitzin Allegheny Llc Low power reconfigurable systems and methods
JP4206653B2 (ja) 2001-07-13 2009-01-14 日本電気株式会社 タスクスケジューリングシステムおよび方法、プログラム
US7006511B2 (en) * 2001-07-17 2006-02-28 Avaya Technology Corp. Dynamic jitter buffering for voice-over-IP and other packet-based communication systems
US6510099B1 (en) * 2001-09-28 2003-01-21 Intel Corporation Memory control with dynamic driver disabling
US7318164B2 (en) 2001-12-13 2008-01-08 International Business Machines Corporation Conserving energy in a data processing system by selectively powering down processors
US6865653B2 (en) * 2001-12-18 2005-03-08 Intel Corporation System and method for dynamic power management using data buffer levels
US7114086B2 (en) * 2002-01-04 2006-09-26 Ati Technologies, Inc. System for reduced power consumption by monitoring instruction buffer and method thereof
US7058786B1 (en) * 2002-01-17 2006-06-06 Hewlett-Packard Development Company Operating system data communication method and system
US7260106B2 (en) * 2002-01-24 2007-08-21 Intel Corporation Method and apparatus for managing energy usage of processors while executing protocol state machines
JP2003256071A (ja) * 2002-02-28 2003-09-10 Fujitsu Ltd 記憶装置およびクロック制御回路
US7085704B2 (en) 2002-05-07 2006-08-01 Zarlink Semicorporation V.N. Inc. Time-indexed multiplexing as an efficient method of scheduling in hardware
US20040003019A1 (en) * 2002-06-28 2004-01-01 Sun Microsystems, Inc., A Delaware Corporation Process management for real time systems management controller
DE60208474T2 (de) * 2002-08-27 2006-07-13 Matsushita Electric Industrial Co., Ltd., Kadoma Verfahren zur Übertragung von Datenströmen abhängig vom überwachten Zustand des Anwendungsspeichers des Nutzers
US20040198223A1 (en) * 2002-10-08 2004-10-07 Loh Weng Wah Flow control in a bluetooth wireless communication system
US7653906B2 (en) * 2002-10-23 2010-01-26 Intel Corporation Apparatus and method for reducing power consumption on simultaneous multi-threading systems
US7657893B2 (en) * 2003-04-23 2010-02-02 International Business Machines Corporation Accounting method and logic for determining per-thread processor resource utilization in a simultaneous multi-threaded (SMT) processor
US7155600B2 (en) * 2003-04-24 2006-12-26 International Business Machines Corporation Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor
US7213135B2 (en) * 2003-04-24 2007-05-01 International Business Machines Corporation Method using a dispatch flush in a simultaneous multithread processor to resolve exception conditions
US7647585B2 (en) * 2003-04-28 2010-01-12 Intel Corporation Methods and apparatus to detect patterns in programs
US6862500B2 (en) * 2003-05-12 2005-03-01 Circumnav Networks, Inc. Methods for communicating between elements in a hierarchical floating car data network
US20050050135A1 (en) * 2003-08-25 2005-03-03 Josef Hallermeier Handheld digital multimedia workstation and method
US7188198B2 (en) * 2003-09-11 2007-03-06 International Business Machines Corporation Method for implementing dynamic virtual lane buffer reconfiguration

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1069394A (ja) * 1996-06-10 1998-03-10 Lsi Logic Corp オブジェクト指向言語プログラム由来の中間コードデータストリーム、またはマルチメディアデータストリームの処理システム及び方法
JPH11282815A (ja) * 1998-03-31 1999-10-15 Nec Corp マルチスレッド計算機システム及びマルチスレッド実行制御方法
JP2002099432A (ja) * 2000-09-22 2002-04-05 Sony Corp 演算処理システム及び演算処理制御方法、タスク管理システム及びタスク管理方法、並びに記憶媒体
WO2003040912A1 (en) * 2001-11-07 2003-05-15 International Business Machines Corporation Method and apparatus for dispatching tasks in a non-uniform memory access (numa) computer system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016520933A (ja) * 2013-06-28 2016-07-14 インテル コーポレイション マルチコンポーネントプラットフォームにおけるアクティビティ管理のための技術およびシステム

Also Published As

Publication number Publication date
US9323571B2 (en) 2016-04-26
JP5097251B2 (ja) 2012-12-12
WO2005078580A1 (en) 2005-08-25
DE112005000307T5 (de) 2007-01-18
GB2426096A (en) 2006-11-15
CN100430897C (zh) 2008-11-05
GB0615281D0 (en) 2006-09-06
GB2426096B (en) 2008-06-11
CN1938685A (zh) 2007-03-28
JP2007522561A (ja) 2007-08-09
JP4603554B2 (ja) 2010-12-22
US20050188189A1 (en) 2005-08-25

Similar Documents

Publication Publication Date Title
JP5097251B2 (ja) 同時マルチスレッディングプロセッサを用いてバッファ型アプリケーションのエネルギー消費を低減する方法
US10489209B2 (en) Management of resources within a computing environment
JP5312478B2 (ja) データ・プロセッサのパフォーマンス予測
EP2593862B1 (en) Out-of-order command execution in a multimedia processor
US8046758B2 (en) Adaptive spin-then-block mutual exclusion in multi-threaded processing
KR101686010B1 (ko) 실시간 멀티코어 시스템의 동기화 스케쥴링 장치 및 방법
US7627770B2 (en) Apparatus and method for automatic low power mode invocation in a multi-threaded processor
US7653906B2 (en) Apparatus and method for reducing power consumption on simultaneous multi-threading systems
KR101552079B1 (ko) 그래픽스 프로세싱 유닛 상의 그래픽스 및 비그래픽스 어플리케이션들의 실행
US8922564B2 (en) Controlling runtime execution from a host to conserve resources
JP2016511489A (ja) ゲストオペレーティングシステムおよび仮想プロセッサとともにハイパーバイザを使用するシステムおよび方法
JP2008527558A (ja) タスクスケジューリングのデータ処理システム及び方法
US20100050184A1 (en) Multitasking processor and task switching method thereof
US20130290644A1 (en) Method and System Method and System For Exception-Less System Calls For Event Driven Programs
US20020124043A1 (en) Method of and system for withdrawing budget from a blocking task
Kang et al. Priority-driven spatial resource sharing scheduling for embedded graphics processing units
TW202107408A (zh) 波槽管理之方法及裝置
US20040122983A1 (en) Deadline scheduling with buffering
US20230099950A1 (en) Scheduling and clock management for real-time system quality of service (qos)
EP4034992A1 (en) Soft watermarking in thread shared resources implemented through thread mediation
JP3043748B1 (ja) タスクスケジュ―リング方法及び装置
CN111381887B (zh) 在mvp处理器中进行图像运动补偿的方法、装置及处理器
WO2023231937A1 (zh) 调度装置、方法及相关设备
MARZ et al. Reducing power consumption and latency in mobile devices by using a gui scheduler
WO2012026124A1 (ja) スレッド調停システム、プロセッサ、映像記録再生装置、およびスレッド調停方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120321

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120621

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: 20120904

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120921

R150 Certificate of patent or registration of utility model

Ref document number: 5097251

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150928

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250