JP4543081B2 - リソースの割り当ておよび制限を介するヘテロジニアスチップマルチプロセッサのための装置および方法 - Google Patents

リソースの割り当ておよび制限を介するヘテロジニアスチップマルチプロセッサのための装置および方法 Download PDF

Info

Publication number
JP4543081B2
JP4543081B2 JP2007519337A JP2007519337A JP4543081B2 JP 4543081 B2 JP4543081 B2 JP 4543081B2 JP 2007519337 A JP2007519337 A JP 2007519337A JP 2007519337 A JP2007519337 A JP 2007519337A JP 4543081 B2 JP4543081 B2 JP 4543081B2
Authority
JP
Japan
Prior art keywords
resource
processor
controller
cycle
register
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.)
Expired - Fee Related
Application number
JP2007519337A
Other languages
English (en)
Other versions
JP2008505396A (ja
Inventor
フォサム、トリグヴェ
クリュソス、ジョージ
ダットン、トッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2008505396A publication Critical patent/JP2008505396A/ja
Application granted granted Critical
Publication of JP4543081B2 publication Critical patent/JP4543081B2/ja
Expired - Fee Related 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • 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/30181Instruction operation extension or modification
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • 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/5061Partitioning or combining of resources
    • 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
    • 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)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Power Sources (AREA)
  • Microcomputers (AREA)

Description

本発明の一つ以上の実施例は一般に、集積回路およびコンピュータシステム設計の分野に関する。より詳しくは、本発明の一つ以上の実施例は、リソースの割り当ておよび制限を介するヘテロジニアスチップマルチプロセッサのための方法および装置に関する。
チップマルチプロセッサ(CMP)は、この十年間の終わりまでには主流となるだろう。現在のCMPは、「コピー・イグザクトリ」アプローチを使用して製造される。コピー・イグザクトリ・アプローチを使用して製造されたCMPにおいては、CMP上のCPUはすべて同一であり、ALU、キャッシュおよびパイプラインの正確なコピーを有する。このアプローチによって、CMP設計の複雑性が最小化される。設計する必要があるのは一つのCPUのみであり、それが多数回にわたり具体化されるからである。
シングルスレッド性能に左右されやすいソフトウェアアプリケーションもあれば、マルチスレッドまたはスループット性能に左右されやすいソフトウェアアプリケーションもある。シングルスレッド性能に左右されやすく、かつ、多くのリソースからの恩恵を受け得るアプリケーションにとっては、シングルスレッドを実行しているCPUに対してより多くのリソースを割り当てて、性能にあまり敏感ではないスレッドを実行しているCPUにはより少ないリソースを割り当てることが望ましい。マルチスレッド性能に左右されやすいアプリケーションにとっては、すべてのスレッド間でより均一にリソースを共有させることが有利である。さらに、アプリケーション自体が変化して、性能がシングルスレッドに左右されやすくなることもあれば、すべてのスレッドに対してそうなることもある。
開発段階にあるCMPはまた、電力損失および電流引き込みに関する制限に対処する必要がある。例えば、すべてのCPUが同時にフルアクティブである場合には、CMPが電流および電力の制限値以下に確実に維持されるように、電圧および周波数が低下される必要がある。しかし、一つのCPUがアクティブである場合には、電圧および周波数は、最大の電圧および周波数に設定することができ、利用可能なすべてのリソースがそれに割り当てられる。電力および電流がCPUごとに割り当てられる場合は、より大きな電力を割り当てられたCPUは、より少なく割り当てられた他のCPUよりもプログラムを速く実行することができる。知能(ソフトウェアによる命令、またはソフトウェアもしくはハードウェアのアルゴリズムによる推定のいずれか)が追加されることによって、CMPは、一つ以上の特定の実行スレッドの性能を向上させるように電力を割り当てること、またはすべてのスレッドのスループットを最大化させるように電力のバランスをとることができる。すなわち、チップの電力は、割り当てられるべきリソースとなる。
本発明の様々な実施例が、添付の図面において、限定としてではなく例として示される。
リソース制限を介するヘテロジニアスチップマルチプロセッサ(CMP)のための方法および装置である。一実施例において、方法は、リソース利用レジスタにアクセスしてリソース利用ポリシーを特定することを含む。ひとたびアクセスされると、プロセッサコアは、プロセッサコントローラにより、リソース利用ポリシーによって特定された態様で共有リソースを確実に利用できるようになる。一実施例において、CMP内の各プロセッサコアは、命令発行スロットルリソース利用レジスタ、命令フェッチスロットルリソース利用レジスタおよびその他の、最小レベルから最大レベルの間で共有リソースの利用を制限する方法を含む。一実施例において、リソース制限は、ハードウェアまたはソフトウェアによって制御され得るCMPプロセッサコアに電流および電力のリソースを割り当てるための弾力的なメカニズムを与える。
システム
図1は、一実施例に係る、プロセッサコントローラと少なくとも一つのリソース利用レジスタ130(130−1,...,130−N)とを有するプロセッサコア(CPU)110(110−1,...,110−N)を含み、少なくとも一つのプログラムサイクル中の少なくとも一つのリソース制限または割り当てに従ってCPU110のアクティビティを制限するチップマルチプロセッサ(CMP)100を示すブロック図である。代表的には、CMP100は、同一のダイ上に製造された複数のCPU110、共有キャッシュおよびその他の機能部を含む。図示のように、CPU110は、共有キャッシュ180にアクセスするべく相互接続ネットワーク170に接続される。一実施例において、各CPU110は、最小から最大利用レベルまでに制限されたリソースをCPU110が利用することを制限するために特権ソフトウェアによって書き込まれるスロットルリソース利用レジスタ130を含む。
一実施例において、CPU110は、相互接続ネットワーク170に接続されたシステムメモリバス192を介してシステムメモリ190にアクセスする。一実施例において、システムメモリ190は、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、スタティックRAM(SRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレート(DDR)SDRAM(DDR−SDRAM)、ラムバスDRAM(RDRAM)または各メモリモジュール内データの高速な一時格納をサポートすることができる任意の装置からなるメモリモジュールを含む両面メモリパッケージを含むが、これに限られない。
CMP100のようなCMP設計には、共有キャッシュ、共有メモリポート、共有電力供給等、実行プログラム間で共有されるリソースが含まれる。平均的な使用が良好でも、プログラムは時々、いくつかの共有リソースへの過剰要求をもたらす同期パターンに入り込むことがある。これは、余分なキューイング遅延をもたらし、ライブロックまたはデッドロックとなりかねない。このため、一実施例において、かかる問題を回避すべく共有CMPリソースに対するプロセッサコアアクティビティを制限することで共有CMPリソースへのアクセスを制限するために、CMPリソース制限が用いられる。
一実施例において、リソース割り当てによって、共有CMPリソースは、CMP100の少なくとも一つのプロセッサコアに対して、サイクル当たりのリソース要求数を制限する。その他の実施例において、リソース割り当ては、CMP100の少なくとも一つのプロセッサコアに対し、未決の同時リソース要求数を固定数にまで制限することによって、リソース利用を制限する。その他の実施例において、リソース割り当ては、CMP100の一つ以上のプロセッサコアに対して弾力的に区切られたリソースを、その他の一つ以上のプロセッサコアに対するそれよりも多く確保する。
図1に示されるように、各CPU110は、アクティビティスロットリングリソース利用レジスタ130を含む。一実施例において、プロセッサリソースに関連する最小アクティビティレベルから最大アクティビティレベルまでの一つからの一つ以上のプログラムサイクル中に、プロセッサコアリソースアクティビティを定義するべく各アクティビティスロットルベクトルが投入される。一実施例において、図2に示されるように、最小アクティビティレベルは、無効のすなわちゼロのアクティビティレベルを言及する。一実施例において、アクティビティスロットルベクトル130は、プロセッサアクティビティレベルを、サイクル当たりのまたはいくつかのサイクルにわたってのリソース利用のパーセンテージまで制限する。
一実施例において、アクティビティスロットルベクトル130は、命令サイクル当たりのプロセッサの最大発行速度を制限するための命令発行スロットルベクトルを含む。例えば、命令発行制限は、プログラムサイクル当たり2つの命令まで最大命令発行速度を制限することを介して行われる。その制限がなければ、プロセッサはサイクル当たり4つの命令を発行する。一実施例において、この種の命令は、電力消費のまたはその他の必要なリソースに基づいて制限され得る。
本明細書に記載されるリソース制限は、バッファ制限(例えば、インフライトのメモリ参照数の制限)、キャッシュ経路制限、およびその他のリソース割り当て形態のような、リソース割り当てを与えるためのリソース制御ベクトルを含む。一実施例において、共有キャッシュ180内のキャッシュ経路アクセスはキャッシュトラッキングによって中央キャッシュレベルに割り当てられており、そのコアはリソース制御ベクトル182に従って要求を生成してキャッシュのサブセット内に結果的データを割り当てる。一実施例において、メモリ要求の中央キューへの割り当てが、リソース制御ベクトルに従って実行される。一実施例において、コントローラまたは特権ソフトウェアは、各プロセッサコアに対して最大リミットをセッティングすることによって、リソース制御ベクトルを投入する。一実施例において、割り当てリソース制御ベクトルに対するプログラムのアクティビティがモニタされて、リソースの割り当ては、システムの集約プログラムアクティビティの全体的プロファイルをベストフィットさせるように調整できる。
一実施例において、アクティビティスロットルベクトル130は、図2に示されるように、特権ソフトウェアによって書き込み可能なNビットのバレルシフトレジスタである。図2は、一実施例に係る、図1に示されるプロセッサコントローラ120をさらに示すブロック図である。代表的には、アクティビティスロットルベクトル130のビット位置132は、リソースが所定サイクルで使用を許可されるか否かを示す。一実施例において、スロットルベクトル130の要素(content)はサイクルごとにシフトされる。図2に示されるように、一実施例において、各CPU110は、リソース有効/無効ロジック122を有するプロセッサコントローラ120を含む。
代表的には、リソース有効/無効ロジック122は、対応スロットルベクトル130の現在のビット位置132にアクセスする。代表的には、現在のビット位置132は、現在ののまたは来たるべきプログラムサイクル内の各プロセッサリソースが完全に利用可能であることを示すようにセットされる。それとは逆に、一実施例において、現在のビット位置132は、現在ののまたは来たるべきプログラムサイクル内の各プロセッサリソースが利用不可能であることを示すようにディアサートされる。別の実施例において、アクティビティレベルは、最小アクティビティレンジから最大アクティビティレンジまでのアクティビティスロットルベクトルによって特定される。以下に記載するように、CPU110は、プロセッサ命令発行、プロセッサ命令フェッチ、浮動小数点(FP)命令発行、整数命令発行、メモリ要求発行またはその他のCPUアクティビティのようなプロセッサアクティビティを制御する多重スロットルベクトルを含んでよい。
このため、一実施例において、各プログラムまたはクロックサイクル中に、プロセッサコントローラ120は、リソース有効/無効ロジック122を介して、アクティビティスロットルベクトル130の現在のビット位置132にアクセスして、各サイクル中にリソースにプロセッサアクセスを許可すべきか否かを決定する。このため、一実施例において、Nビット値をスロットルベクトル130内に格納することによって、例えば特権ソフトウェアは、CPU110のアクティビティを、最小アクティビティレベルから最大アクティビティレベルまでのプログラムサイクル増分のN分の1に定義することが可能となる。本明細書で使用される「N」は整数である。一実施例において、リソース有効/無効ロジック122は、状態機械、マイクロコードまたは集積回路ロジックを用いて実装される。
図1を参照すると、一実施例において、CMP100は、CPU110ごとのアクティビティスロットルベクトル130を含む。ここで、任意の所定サイクルにおける命令発行が、ベクトル130によって許可または不許可となる。一実施例において、CPU110は、スロットルベクトルの0番目のビット位置が「1」(セット)である場合に命令を発行するように許可されるのみである。スロットルベクトルが各々16ビットであれば、ソフトウェアは、各CPUの命令発行アクティビティを、ノーアクティビティからフルアクティビティまでの増分の16分の1に制限することができる。所定のプロセッサリソースがこのフルレンジを許可しない場合もあるが、スロットルベクトルは、アクティビティレベルを所定の最小レベルから所定の最大レベルまでに制御するべく使用される。
本明細書に記載される、CPU110、リソースコントローラ200またはその他のシステムコンポーネントのような、CMP100のコンポーネントによって検出または発行された様々な信号は、アクティブ高信号またはアクティブ低信号を表す。このため、本明細書に記載される用語「アサート」、「アサートする」、「アサートされる」、「セット」、「セッティング」、「ディアサート」、「ディアサートされる」、「ディアサートする」またはその他の類似用語は、アクティブ低信号またはアクティブ高信号のいずれかのデータ信号を言及する。したがって、信号に関連する場合、かかる用語は、アクティブ高信号またはアクティブ低信号のいずれかを要求するかまたは意味するために互換的に使用される。
図3Aは、一実施例に係る、リソース利用レジスタ(RUR)130を備えるCMP100を示す。一実施例において、RUR130は、制限されたリソースに利用ポリシーを与えるCSR(保護されたI/Oアドレス空間にマッピングされて特権ソフトウェアによって書き込み可能な設定システムレジスタ)である。代表的には、CPU110は、ステータス情報をリソースコントローラ200に伝達する。一実施例において、実際に発行されたCPU110のプロセッサ命令処理カウント(IPC)のスナップショットは、例えば、CPU110−1が命令を発行してカウンタオーバーフローを電力コントローラ200に送るたびに、CPU110−1内のカウンターを増加させることによって報告される。
一実施例において、各CPU110は、実行プログラムの性能特性をトラッキングし続ける。この情報がリソースコントローラ200に送られる。一実施例において、リソースコントローラ200はその後、共有キャッシュ180のリソース制御ベクトル182のような共有CMPリソースのリソース制御ベクトルを投入することによりCMP100の全体的な性能を向上させるべく、リソースの再割り当てを決定する。この再割り当ては、プログラム実行中に、サービスをなんら阻害することなく発生する。例えば、並列プログラムが実行されていて、一つ以上がまだ実行中であるにもかかわらずほとんどのCPU110が同期点に達している場合、リソースコントローラ200は、リソースを初期フィニッシャ(finishers)からストラグラ(stragglers)まで動的にシフトさせてCMP性能を向上させることができる。一実施例において、電力コントローラ200は、状態機械、マイクロコードまたは集積回路ロジックを用いて実装される。
図3Bは、命令発行アクティビティスロットルベクトル130を備えたCMP100を示すブロック図である。代表的には、CPU110−1が、その発行スロットルベクトル130をすべて1にセッティングすることによって、CPU110−2からCPU110−Nまでよりも優先される一方で、CPU110−2からCPU110−Nは、電力節約のため8サイクルのうち1サイクルで命令を発行するように制限される。一実施例において、高性能CPU110−1が性能上最も重要なスレッドに与えられるように、CMP100のCPU110がアンバランスにされる。その結果、CMP100は、並列処理の恩恵を実行プログラムに与える一方で、作業の一部が直列化して並列実行により与えられる全体的な性能向上を制限する障害が頻繁に生じることを防止する。
一実施例において、プロセッサコアは、例えばヘルパースレッドのような、あまりリソース集中的でないアプリケーションスレッドを実行するべく選択される。ヘルパースレッドは先端技術であり、いくつかのスレッドが別のスレッドよりも先に実行されてその別のスレッドの作業負荷を制限することによりメモリデータのプリフェッチ効果を作り出すにもかかわらず、実際のプログラムの作業は行わない、というものである。ヘルパースレッドに対するリソース要求は極めて小さく、適切にリソース割り当てを低減してメインスレッドのために電力を節約することができる。
図4は、一実施例に係る、CPUリソースに向けられたCPUアクティビティスロットリングをさらに示すためのCPU110のマイクロアーキテクチャを、さらに示すブロック図である。図示の実施例において、CPU110は、動的実行を行うように設定される。しかし、当業者であれば、CMP100内のCPU110は、動的実行を行う必要がなく、本明細書に記載の実施例の範囲内にあることがわかるだろう。本明細書に記載される動的実行とは、プログラム順序に従って次の命令をフェッチして、システムパイプライン内でその後実行するべくその命令を準備するためのフロントエンドロジック140の使用を言及する。
代表的には、フロントエンドロジック140は、実行のために来たるべきプログラム命令をフェッチして、システムパイプライン内で将来的に使用するべくその命令を準備する命令フェッチユニット(IFU)142からなる。実際には、フロントエンドロジック140の命令発行ロジックは、デコードされた命令の高帯域幅ストリームを、命令の実行(実際の完了)を指示する実行コア116に供給する。このため、フロントエンドロジック140は、例えば、バスインターフェースユニット(BIU)112を介して共有キャッシュ180からマクロ命令をフェッチするための命令フェッチユニット(IFU)142を含む。
ひとたび命令がフェッチされると、命令はデコードされて、実行ユニット(EU)118が実行するマイクロオペレーション(uOP)として本明細書に言及されるベーシックオペレーションになる。すなわち、IFU142は、マクロ命令を、例えば共有キャッシュ180からフェッチする。共有キャッシュ180は、命令発行ロジック150の命令デコーダ(ID)152に与えられる。受け取られたマクロ命令に応答して、ID152は、マクロ命令を、命令デコーダキュー(IDQ)154に与えられる一つ以上のuOPにデコードする。
一実施例において、フロントエンドロジック140は、リソース有効/無効ロジック122を含むプロセッサコントローラ120を含む。代表的には、プロセッサコントローラ120は、一つ以上のリソース利用レジスタ(RUR)130(130−1,...,130−N)に接続される。一実施例において、リソース利用レジスタ130−1は命令発行アクティビティスロットルベクトル130−1であり、リソース利用レジスタ130−Nは命令フェッチアクティビティスロットルベクトル130−Nである。代表的には、例えば、命令フェッチスロットルベクトル130−Nの現在のビット位置の値に基づいて、プロセッサコントローラ120は、命令フェッチユニット142をプログラムサイクル中に無効にする。ここで、命令フェッチスロットルベクトル130−Nの現在のビット値はディアサートされる。しかし、命令フェッチスロットルベクトル130−Nの現在のビット値がセットされるプログラムサイクル中は、プロセッサコントローラ120は、IFU142が通常のオペレーティング条件に従って機能することを許可する。一般には、スロットルベクトルは、制限CMPリソースに対して最小および最大のアクティビティレベルを定義することによって、単純なオンまたはオフの状態ではないリソースを制御するためのカウンタおよび制限値を含む。
さらに図示されているように、一実施例において、命令発行スロットルベクトル130−1はまた、プロセッサコントローラ120によってモニタされ、命令発行スロットルベクトル130−Nの現在のビット値がディアサートされるプログラムサイクル中、プロセッサコントローラ120は命令発行ロジック150を無効にする。このため、かかる非アクティビティのサイクル中は、CPU110によって消費される電力および電流が制限される。これは、OOOコア116および実行ユニット118が、発行された命令を受け取らないことによって、CPU110が消費するプロセッサリソースを低減するからである。
一実施例において、スロットルベクトル130は、電力割り当ての向上を目的として、CPU110アクティビティを細粒度で制限することができる。例えば、CPU110ごとのスロットルベクトル130の代わりは、いくつかあり得る。フェッチを制御するスロットルベクトル、浮動小数点(FP)命令発行を制御するスロットルベクトル、整数命令発行を制御するスロットルベクトル、およびメモリ発行を制御するスロットルベクトルである。さらに、所定の作業負荷がFP実行リソースを使用することはほとんどない。CMP100の電圧点および周波数点は、電流問題すなわち突然の電圧降下を引き起こしかねない突然のアクティビティのバーストの責任を負えるように選択される必要がある。FP実行がほとんどないので、FPスロットルベクトルは、性能に悪影響を及ぼすことなく最大FP発行速度を16サイクル当たり1に制限するようセットアップできる。これで、電圧および周波数を、FPアクティビティのバーストによって引き起こされるエラーの恐れなしに高くセットできる。
それとは逆に、HPTC(高性能テクニカルコンピューティング)アプリケーションは、FPユニットを広範に使用する。FPユニットの実際のIPCのニーズをモニタすることによって、電力コントローラ200または特権ソフトウェアは、アプリケーションのニーズに応じて電圧点および周波数点を調整することができる。一実施例において、電力コントローラ200は、このIPC情報を利用してCPU110ごとのスロットルベクトル130、ならびに電圧および周波数を修正し、多岐にわたる特性を備える様々な作業負荷に対して性能を最大限にする。
図4を参照すると、命令が発行されない場合は、CPUマイクロアーキテクチャ110の機能ユニットおよびそれに関連するロジックは不要である。所定サイクルに命令発行がないことは、プロセッサコントローラ120を使用することによって事前に予測される。プロセッサコントローラ120は、スロットルベクトル130内の別の(将来の)ビット位置を検査し、一つ以上の検出されたCPU非アクティビティサイクル中にクロックゲート化ロジックのクリティカルパスを無効にする。このため、命令発行が禁止されて、対象となるCPU110の動的な電流引き込みおよび電力損失が低減される結果となる。さらに、CPUの発行アクティビティを制限することは必ずしも、発行許可の減少に伴い直線的にその性能も減少するということではない。CPUは一般に、すべてのサイクルで命令を発行するわけではないからである。一つ以上の実施例を行うための手順的な方法を説明する。
動作
図5は、一実施例に係る、リソース利用ポリシーに従って少なくとも一つのプログラムサイクル中に少なくとも一つのプロセッサコアのリソース利用レジスタを使用する、リソース制限のための方法300を示すフローチャートである。一実施例において、例えば図1から図4に示すように、リソース利用レジスタは、チップマルチプロセッサ(CMP)のプロセッサコア(CPU)の、アクティビティスロットルベクトルである。一実施例において、リソース利用ポリシーは、制限されたリソースに関連するプロセッサアクティビティを特定する。このプロセッサアクティビティは、例えば、プロセッサ命令発行、プロセッサ命令フェッチ、浮動小数点(FP)命令発行、整数命令発行、メモリ発行またはその他の、一つ以上のプロセッサコアの電流および電力消費ならびに共有CMPリソースへの負荷を低減するためのプロセッサアクティビティ等を含む。
代表的には、工程ブロック310において、アクティビティスロットルベクトルがアクセスされて、任意のリソース制限が特定される。工程ブロック320において、少なくとも一つのプログラムサイクル中にアクティビティスロットルベクトルがリソース制限を示すか否かが決定される。制限されたプロセッサアクティビティが示されると、工程ブロック322において、プロセッサアクティビティレベルのようなリソース利用ポリシーが決定される。工程ブロック350において、少なくとも一つのプログラムサイクル中のリソース利用ポリシーに従って、決定されたプロセッサアクティビティレベルまでプロセッサアクティビティが制限される。工程ブロック360において、CMPシャットダウンが検出されるまで、CMPの各プロセッサコアに対して工程ブロック310〜350が並列して繰り返される。
図6は、一実施例に係る、図5の工程ブロック322のプロセッサアクティビティを制限するための方法330を示すフローチャートである。工程ブロック332において、アクティビティスロットルベクトルの現在のビット位置が問い合わせられる。工程ブロック334において、利用ポリシーは、アクティビティスロットルベクトルの現在のビット位置の値に従って現在のプログラムサイクル中に有効または無効にされた、制限されたリソースに関連するプロセッサアクティビティを特定する。工程ブロック336において、アクティビティスロットルベクトルの現在のビット位置がディアサートされているか否かを決定する。スロットルベクトルの現在のビット位置がディアサートされている場合、工程ブロック338においてプロセッサが無効にされて、現在のプログラムサイクル中は、制限されたリソースに向けられたアクティビティを行えなくなる。そうでない場合は、工程ブロック340においてプロセッサが有効にされて、現在のプログラムサイクル中にリソースアクティビティを行うことができる。一実施例において、図5および図6の方法は、図1に示されるCMP100の各CPU110に対して並列して行われる。
図7は、一実施例に係る、最小アクティビティレベルから最大アクティビティレベルまでのプロセッサアクティビティを定義するリソース利用ポリシーに従って、一つ以上のアクティビティスロットルベクトルを投入するための方法400を示すフローチャートである。工程ブロック410において、プログラムサイクル増分のN分の1のプロセッサアクティビティのようなリソース利用ポリシーを定義するプロセッサアクティビティスロットルベクトル内に、Nビット値が特権ソフトウェアによって書き込まれる。一実施例において、工程ブロック410は、例えば、図1に示すCMPの各プロセッサコアに対して並列に行われる。工程ブロック420において、プロセッサコア命令処理カウント(IPC)が、各CMPプロセッサコアから定期的に受け取られる。工程ブロック430において、アクティビティスロットルベクトル内に格納されたNビット値が、増加プロセスアクティビティまたは減少プロセスアクティビティのいずれかに変更される。一実施例において、リソースコントローラは、共有CMPリソースのリソース制御ベクトルを投入して、サイクル当たりのプロセッサコア要求を所定の定義値に制限する。
図8は、一実施例に係る、来たるべきプロセッサコアリソースの非アクティビティに従って、CMPのCPU機能ユニットおよびそれに関連するロジックを有効/無効にするための方法440を示すフローチャートである。工程ブロック442において、CMPのCPUが選択される。ひとたび選択されると、工程ブロック444において、選択されたCPUのスロットルベクトルが検査されて、リソース非アクティビティに係る一つ以上の来たるべきプログラムサイクルが特定される。ひとたび検出されると、工程ブロック446において、機能ユニットおよびそれに関連するリソースロジックは、リソース非アクティビティに係る特定されたプログラムサイクル中に無効にされて、CMPの電力および電流の消費が低減される。工程ブロック448において、工程ブロック442〜446が各CMPのCPUに対して繰り返される。
図9は、一実施例に係る、CMPプロセッサコアの決定された作業負荷特性に従ってCMPの電圧要求および周波数要求を変更するための方法450を示すフローチャートである。工程ブロック452において、各CMPプロセッサコアから受け取られたIPCに従って、CMPプロセッサコアに対して作業負荷特性が決定される。ひとたび決定されると、工程ブロック454において、CMPの電圧要求および周波数要求が、工程ブロック452の作業負荷特性に決定された通りに変更される。
したがって、一実施例において、ソフトウェアまたはハードウェアのコントローラは、作業負荷情報を利用して、CPUごとのリソース利用レジスタならびに電圧および周波数を修正して、多岐にわたる特性を備える様々な作業負荷に対して性能を最大限にすることができる。一実施例において、ソフトウェアは、各プロセッサコア上で実行されている各スレッドの作業負荷のリソース利用特性に関連して、ハードウェアによって収集されたIPCまたはその他のフィードバックを読み取ることができる。リソース利用レジスタをアップデートして、リソース利用が作業負荷特性により良くマッチするように変更することができる。電圧および周波数を、新しいリソース利用レジスタセッティングに合うように変更することができる。
一実施例において、アクティビティスロットリングは、電力を最も有効なところにシフトさせる。しかし、その他のリソースもまた、本技術によって、間接的ではあるが割り当てられる。CMPの発行速度をスロットリングすることによって、CPUの負荷がシステムリソースに基づいて制御される。システムリソースは、その後、その他の要求を自由に与えることができる。これは、3次レベルキャッシュ、システムロック、メインメモリ、相互プロセッサリンクおよびI/O(入力/出力)のような共有リソースへのアクセスを制御するためには特に重要である。
図10は、開示の技術を用いて、設計をシミュレーション、エミュレーションおよび製造するための様々な表現またはフォーマットを示すブロック図である。設計を表現するデータは、いくつかの態様で設計を表現することができる。まず、シミュレーションにおいて有用であるが、ハードウェアは、ハードウェア記述言語、またはその他の機能記述言語を用いて表現される。これにより、設計されたハードウェアがどのように機能すると予測されるかに係るコンピュータ処理モデルが基本的に与えられる。ハードウェアモデル510は、コンピュータメモリのような記憶媒体500に格納される。特定のテストスイート(test suite)530をそのハードウェアモデルに適用して、それが実際に意図されたように機能するか否かを決定するシミュレーションソフトウェア520を用いてそのモデルがシミュレーションされる。いくつかの実施例においては、シミュレーションソフトウェアは、媒体に記録され、取り込まれ、または含まれることがない。
設計のいずれの表現においても、データは、任意の形態の機械読み取り可能媒体に格納される。機械読み取り可能媒体とは、かかる情報を伝送するべく変調またはさもなければ生成された光波もしくは電波560、メモリ550、または磁気的もしくは光学的記憶装置540である。これらの媒体はいずれも、設計情報を運ぶ。すなわち、用語「運ぶ」(例えば、情報を運ぶ機械読み取り可能媒体)は、記憶装置に格納された情報、または搬送波の中もしくは上にエンコードもしくは変調された情報をカバーする。設計または設計の詳細を記述するビットのセットは、(キャリアまたは記憶媒体のような機械読み取り可能媒体に埋め込まれた場合)それ自身の内または外にシールされるか、または、さらなる設計または製造のためにその他のものによって用いられる物品である。
代替実施例
上述における、ロジック実装、信号およびバスのサイズおよび名称、システムコンポーネントの種類および相互関係、ならびにロジックのパーティショニング/インテグレーション選択のような多数の具体的詳細が、さらに徹底的な理解を与えるために示される。しかし、当業者であれば、かかる具体的詳細がなくとも本発明が実施できることがわかるだろう。その他の場合では、本発明をあいまいにするのを避けるため制御構造およびゲートレベル回路は詳細に示さない。当業者であれば、本明細書の記載によって、過度の実験なしに所定のロジックまたはソフトウェアを実装することができるだろう。
上述において、本発明の特徴を説明するために所定の技術用語が使用される。例えば、「ロジック」とは、一つ以上の機能を実行するために設定されるハードウェアおよび/またはソフトウェアを表す。例えば、「ハードウェア」の例は、集積回路、有限状態機械またはさらに組み合わせ論理回路(combinatorial logic)を含むが、これらに制限または限定されない。集積回路は、マイクロプロセッサ、特定用途向け集積回路、デジタル信号プロセッサ、マイクロコントローラ等の形態をとる。
「ソフトウェア」の例は、アプリケーション、アプレット、ルーチンまたはさらに一連の命令の形態の実行可能なコードを含む。一実施例において、製造物品は、ソフトウェアが格納された機械またはコンピュータ読み取り可能媒体を含む。この読み取り可能媒体は、一実施例に係る工程を行うべくコンピュータ(またはその他の電子装置)をプログラムするために用いられる。コンピュータまたは機械読み取り可能媒体は、プログラミング可能電子回路、揮発性メモリ(例えば、ランダムアクセスメモリ等)および/または不揮発性メモリ(例えば、任意の種類のリードオンリーメモリ「ROM」、フラッシュメモリ)を含む半導体メモリ装置、フロッピディスク(登録商標)、光学ディスク(例えば、コンパクトディスクまたはデジタルビデオディスク「DVD」)、ハードドライブディスク、テープ等を含むがこれらに限られない。
なお、その他の実施例に対しては、異なるシステム設定が用いられる。例えば、システム100はチップマルチプロセッサシステムを含む一方、その他の実施例では、少なくとも一つのプロセッサコアを有するシステムが、様々な実施例のプロセッサベクトルスロットリングの恩恵を受ける場合もある。例えば、サーバ、ワークステーション、デスクトップコンピュータシステム、ゲームシステム、組み込みコンピュータシステム、ブレードサーバ等のような、さらに異なる種類のシステムまたは異なる種類のコンピュータシステムがその他の実施例に対して用いられてよい。
開示の実施例およびベストモードがあれば、以下の請求項によって定義される本発明の実施例の範囲内にありながらも、開示の実施例に対する修正および変形を行うことができる。
一実施例に係る、CMPリソースを割り当てるためのプロセッサアクティビティを制限するためのプロセッサコントローラを有する一つ以上のプロセッサコアを含むチップマルチプロセッサ(CMP)を示すブロック図である。 一実施例に係る、図1に示すプロセッサコントローラをさらに示すブロック図である。 一実施例に係る、図1のCMPと、リソース制限を与える関連プロセッサコアとをさらに示すブロック図である。 一実施例に係る、図1のCMPと、プロセッサアクティビティ・スロットリングを与える関連プロセッサコアとをさらに示すブロック図である。 一実施例に係る、図3のプロセッサコアをさらに示すブロック図である。 一実施例に係る、プロセッサアクティビティがCMPリソースを割り当てるのを制限するための方法を示すフローチャートである。 一実施例に係る、プロセッサアクティビティスロットルベクトルに従って少なくとも一つの現在のプログラムサイクルのプロセッサアクティビティを制限するための方法を示すフローチャートである。 一実施例に係る、CMPの一つ以上のアクティビティスロットルベクトルを投入して、プロセッサアクティビティを、最小アクティビティレベルから最大アクティビティレベルまでのプログラムサイクル増分のN分の1に定義するための方法を示すフローチャートである。 一実施例に係る、制限されたアクティビティプロセッササイクル中に共有リソースにかかる電力/消費および負荷を低減するためにリソースロジックを無効にするための方法を示すフローチャートである。 一実施例に係る、CMPのプロセッサコアから受け取られた命令処理カウントに従って、CMP電圧、周波数およびその他のCMPリソース要求を変化させるための方法を示すフローチャートである。 開示の技術を用いて、エミュレーション、シミュレーションおよび製造のための様々な設計の表現またはフォーマットを示すブロック図である。

Claims (35)

  1. (a)リソース利用ポリシーを決定するべく、Nビット値のベクトルを含むリソース利用レジスタに、プロセッサコントローラがアクセスすることと、
    (b)制限されたリソースに向けられるプロセッサ利用を、前記決定されたリソース利用ポリシーに従って、前記プロセッサコントローラが制限することと、
    (c)前記プロセッサコントローラが、前記リソース利用レジスタ内に格納された前記Nビット値をシフトさせて、隣接ビット値を現在のビット位置の値として中に移動させることと、
    (a)から(c)を各プログラムサイクルに対して、前記プロセッサコントローラが繰り返すことと、
    を含み、
    前記ベクトルに含まれる各ビットは、前記制限されたリソースに向けられるプロセッサ利用が許可および不許可のうちの一つであるサイクルを表す、方法。
  2. 前記リソース利用レジスタの現在のビット位置がディアサートされる場合、前記プロセッサコントローラが、現在のプログラムサイクル中に前記制限されたリソースの前記プロセッサ利用を無効にする、請求項1に記載の方法。
  3. 前記制限されたリソースは、プロセッサアクティビティ、メモリ参照および共有キャッシュメモリのうちの一つである、請求項1に記載の方法。
  4. 前記プロセッサアクティビティは、プロセス命令発行、プロセッサ命令フェッチおよびプロセッサメモリ要求発行のうちの一つである、請求項3に記載の方法。
  5. チップマルチプロセッサの少なくとも一つのプロセッサコアに対するサイクル当たりの許可された所定数のリソース要求をリソース制御ベクトルに従って制限するべく、リソースコントローラが共有リソースを制限することをさらに含む、請求項1に記載の方法。
  6. アクセスすることに先立って、前記制限されたリソースに向けられるプロセッサ利用に対するリソース利用ポリシーを、Nを整数とした場合の最小アクティビティレベルから最大アクティビティレベルまでのプログラムサイクル増分のN分の1に定義するべく、特権ソフトウェアによって前記リソース利用レジスタ内にNビット値を書き込むことをさらに含む、請求項1に記載の方法。
  7. 前記プロセッサ利用を制限することは、前記決定されたリソース利用ポリシーに従って、前記プロセッサコントローラがサイクルごとに行う、請求項1に記載の方法。
  8. 命令処理カウントを、リソースコントローラが前記プロセッサから定期的に受け取ることと、
    前記処理カウントに応答してプロセッサアクティビティの増加または減少のいずれかを特定するべく前記リソース利用ポリシーを調整して前記リソース利用レジスタを前記リソースコントローラがアップデートすることと、
    をさらに含む、請求項1に記載の方法。
  9. 制限されたリソースに関連する最小利用レベルから最大利用レベルまでにリソース利用ポリシーを定義するべく、リソースコントローラがチップマルチプロセッサの少なくとも一つのプロセッサコアのリソース利用レジスタを投入することと、
    前記プロセッサコアから命令処理カウントを、前記リソースコントローラが定期的に受け取ることと、
    前記処理カウントに応答して前記リソース利用ポリシーを調整するべく、前記リソースコントローラが前記リソース利用をアップデートすることと、
    を含み、
    前記リソース利用レジスタはサイクルごとにシフトされる、ビットのベクトルである少なくとも1つのアクティビティスロットルベクトルを含み、
    前記ベクトルに含まれる各ビットは、前記制限されたリソースに向けられるプロセッサ利用が許可および不許可のうちの一つであるサイクルを表す、方法。
  10. チップマルチプロセッサリソースのリソース利用レジスタを投入して、前記チップマルチプロセッサの少なくとも一つのプロセッサコアからの、サイクル当たり所定数の許可された要求を、前記リソースコントローラが制限すること、をさらに含む請求項9に記載の方法。
  11. 投入することは、
    アプリケーションの最も性能上重要なスレッドを実行するべく割り当てられたプロセッサコアの前記少なくとも1つのアクティビティスロットルベクトルの1つに、特権ソフトウェアが値を書き込み、最大プロセッサコアアクティビティレベルを定義するリソース利用ポリシーに従って前記プロセッサコアを動作させることをさらに含む、請求項9に記載の方法。
  12. アップデートすることは、
    前記チップマルチプロセッサの性能を向上させるべく各プロセッサコアから受け取られた前記命令処理カウントから決定された作業負荷特性に従って、前記リソースコントローラが少なくとも一つのプロセッサコアの前記少なくとも1つのアクティビティスロットルベクトルの1つを修正することをさらに含む、請求項9に記載の方法。
  13. 前記チップマルチプロセッサの性能を向上させるべく受け取られた前記命令処理カウントによって決定された作業負荷特性に従って、前記リソースコントローラが前記チップマルチプロセッサの電圧要求および周波数要求を変更することをさらに含む、請求項9に記載の方法。
  14. システムを、
    制限されたリソースに関連する最小利用レベルから最大利用レベルまでにリソース利用ポリシーを定義するべく、リソースコントローラがチップマルチプロセッサの少なくとも一つのプロセッサコアのリソース利用レジスタを投入し、
    前記プロセッサコアから命令処理カウントを、前記リソースコントローラが定期的に受け取り、
    前記処理カウントに応答して前記リソース利用ポリシーを調整するべく、前記リソースコントローラが前記リソース利用をアップデートする、
    ように機能させるプログラムであって、
    前記リソース利用レジスタはサイクルごとにシフトされる、ビットのベクトルである少なくとも1つのアクティビティスロットルベクトルを含み、
    前記ベクトルに含まれる各ビットは、前記制限されたリソースに向けられるプロセッサ利用が許可および不許可のうちの一つであるサイクルを表す、プログラム。
  15. チップマルチプロセッサリソースのリソース利用レジスタを投入して、前記チップマルチプロセッサの少なくとも一つのプロセッサコアからの、サイクル当たり所定数の許可された要求を、前記リソースコントローラが制限するように、前記システムをさらに機能させる、請求項14に記載のプログラム。
  16. 投入することは、
    アプリケーションの最も性能上重要なスレッドを実行するべく割り当てられたプロセッサコアの前記少なくとも1つのアクティビティスロットルベクトルの1つに値を、特権ソフトウェアが書き込み、
    最大プロセッサコアアクティビティレベルを定義するリソース利用ポリシーに従って前記プロセッサコアを動作させることをさらに含む、請求項14に記載のプログラム。
  17. アップデートすることは、
    前記チップマルチプロセッサの性能を向上させるべく各プロセッサコアから受け取られた前記命令処理カウントにより決定された作業負荷特性に従って、前記リソースコントローラが少なくとも一つのプロセッサコアの前記少なくとも1つのアクティビティスロットルベクトルの1つを修正することをさらに含む、請求項14に記載のプログラム。
  18. 前記チップマルチプロセッサの性能を向上させるべく受け取られた前記命令処理カウントによって決定された作業負荷特性に従って、前記リソースコントローラが前記チップマルチプロセッサの電圧要求および周波数要求を変更するように、前記システムをさらに機能させる、請求項14に記載のプログラム。
  19. 少なくとも一つのプロセッサコアを含み、
    前記プロセッサコアは、リソース利用レジスタおよびプロセッサコントローラを含み、
    前記プロセッサコントローラは、リソース利用ポリシーを決定するべく前記リソース利用レジスタにアクセスし、制限されたリソースに向けられるプロセッサ利用を、前記決定されたリソース利用ポリシーに従って制限し、
    前記リソース利用レジスタはサイクルごとにシフトされる、ビットのベクトルを含み、
    前記ベクトルに含まれる各ビットは、前記制限されたリソースに向けられるプロセッサ利用が許可および不許可のうちの一つであるサイクルを表す、装置。
  20. 前記リソース利用レジスタは、プログラムサイクル当たりの最大発行速度に従って、少なくとも一つのプログラムサイクル中に前記プロセッサコントローラにプロセッサ命令発行を制限させる命令発行スロットルベクトルをさらに含む、請求項19に記載の装置。
  21. 前記リソース利用レジスタは、プログラムサイクル当たりの最大命令フェッチ速度に従って、少なくとも一つのプログラムサイクル中に前記プロセッサコントローラにプロセッサ命令発行を制限させる浮動小数点命令発行スロットルベクトルをさらに含む、請求項20に記載の装置。
  22. 前記リソース利用レジスタは、前記制限されたリソース非アクティビティのプロセッサコア利用に対するリソース利用ポリシーを、Nを整数とした場合の最小利用レベルから最大利用レベルまでのプログラムサイクル増分のN分の1に定義するNビットのバレルシフトレジスタを含む、請求項19に記載の装置。
  23. 前記プロセッサコアに接続されたリソースコントローラをさらに含み、前記リソースコントローラは、前記プロセッサコアから命令処理カウントを受け取り、前記命令処理カウントを少なくとも一つのソフトウェア可視レジスタ内に記録する、請求項19に記載の装置。
  24. 相互接続ネットワークに接続されたシステムメモリと、
    前記相互接続ネットワークに接続された少なくとも複数のプロセッサコアを含むチップマルチプロセッサと、
    前記複数のプロセッサコアに接続されたリソースコントローラと、を含み、
    各プロセッサコアは、少なくとも一つのリソース利用レジスタと、前記リソース利用レジスタに接続されたプロセッサコントローラとを含み、
    前記プロセッサコントローラは、リソース利用ポリシーを決定するべく前記リソース利用レジスタにアクセスし、制限されたリソースに向けられるプロセッサコア利用を、前記リソース利用レジスタへの前記アクセスが少なくとも一つのサイクル中にリソース制限を示す場合に、前記決定されたリソース利用ポリシーに従って制限し、
    前記リソースコントローラは、各プロセッサコアから命令処理カウントを受け取り、各プロセッサコアから受け取った前記命令処理カウントを少なくとも一つのソフトウェア可視レジスタ内に格納し、
    前記リソース利用レジスタはサイクルごとにシフトされる、ビットのベクトルを含み、
    前記ベクトルに含まれる各ビットは、前記制限されたリソースに向けられるプロセッサ利用が許可および不許可のうちの一つであるサイクルを表す、システム。
  25. 前記リソースコントローラは、前記チップマルチプロセッサの性能を向上させるべく各プロセッサコアからの前記受け取られた命令処理カウントによって決定された作業負荷特性に従って前記プロセッサコアの前記リソース利用レジスタを修正する、請求項24に記載のシステム。
  26. 前記リソースコントローラは、前記チップマルチプロセッサの性能を向上させるべく前記受け取られた命令処理カウントによって決定された作業負荷特性に従って前記チップマルチプロセッサの電圧要求および周波数要求を変更する、請求項24に記載のシステム。
  27. 前記リソースコントローラは、共有チップマルチプロセッサリソースのリソース制御ベクトルを投入して、前記チップマルチプロセッサの少なくとも一つのプロセッサコアに対するサイクル当たり所定数の許可された要求を制限する、請求項24に記載のシステム。
  28. 前記リソース利用レジスタは、
    プロセッサコントローラに少なくとも一つのプログラムサイクル中のプロセッサ命令発行を禁止させる命令発行スロットルベクトルと、
    前記プロセッサコントローラに少なくとも一つのプログラムサイクル中のプロセッサ命令フェッチを禁止させる命令フェッチスロットルベクトルと、
    をさらに含む、請求項24に記載のシステム。
  29. 前記プロセッサコアは、それぞれ前記リソース利用レジスタを有する、請求項5または9に記載の方法。
  30. 前記プロセッサコアは、それぞれ前記リソース利用レジスタを有する、請求項14に記載のプログラム。
  31. 前記プロセッサコントローラが、前記リソース利用レジスタの所定のビット位置を検査することと、
    前記ビット位置が不許可のサイクルを表す場合、前記プロセッサコントローラが、前記プロセッサのクロックゲーティングロジックのクリティカルパスを無効にすることと、
    をさらに含む、請求項1に記載の方法。
  32. プロセッサコントローラが、前記リソース利用レジスタの所定のビット位置を検査することと、
    前記ビット位置が不許可のサイクルを表す場合、前記プロセッサコントローラが、前記プロセッサコアのクロックゲーティングロジックのクリティカルパスを無効にすることと、
    をさらに含む、請求項9に記載の方法。
  33. プロセッサコントローラが、前記リソース利用レジスタの所定のビット位置を検査することと、
    前記ビット位置が不許可のサイクルを表す場合、前記プロセッサコントローラが、前記プロセッサコアのクロックゲーティングロジックのクリティカルパスを無効にすることと、
    をさらに含む、請求項14に記載のプログラム。
  34. 前記プロセッサコントローラが、前記リソース利用レジスタの所定のビット位置を検査することと、
    前記ビット位置が不許可のサイクルを表す場合、前記プロセッサコントローラが、前記プロセッサコアのクロックゲーティングロジックのクリティカルパスを無効にすることと、
    をさらに含む、請求項19に記載の装置。
  35. 前記プロセッサコントローラが、前記リソース利用レジスタの所定のビット位置を検査することと、
    前記ビット位置が不許可のサイクルを表す場合、前記プロセッサコントローラが、前記プロセッサコアのクロックゲーティングロジックのクリティカルパスを無効にすることと、
    をさらに含む、請求項24に記載のシステム。
JP2007519337A 2004-07-02 2005-06-25 リソースの割り当ておよび制限を介するヘテロジニアスチップマルチプロセッサのための装置および方法 Expired - Fee Related JP4543081B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/884,359 US8190863B2 (en) 2004-07-02 2004-07-02 Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
PCT/US2005/022773 WO2006014254A1 (en) 2004-07-02 2005-06-25 An apparatus and method for heterogenous chip multiprocessors via resource allocation and restriction

Publications (2)

Publication Number Publication Date
JP2008505396A JP2008505396A (ja) 2008-02-21
JP4543081B2 true JP4543081B2 (ja) 2010-09-15

Family

ID=34981954

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007519337A Expired - Fee Related JP4543081B2 (ja) 2004-07-02 2005-06-25 リソースの割り当ておよび制限を介するヘテロジニアスチップマルチプロセッサのための装置および方法

Country Status (5)

Country Link
US (2) US8190863B2 (ja)
JP (1) JP4543081B2 (ja)
CN (1) CN100561461C (ja)
TW (1) TW200723111A (ja)
WO (1) WO2006014254A1 (ja)

Families Citing this family (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040064745A1 (en) * 2002-09-26 2004-04-01 Sudarshan Kadambi Method and apparatus for controlling the rate at which instructions are executed by a microprocessor system
US8020141B2 (en) * 2004-12-06 2011-09-13 Microsoft Corporation Operating-system process construction
US7502948B2 (en) 2004-12-30 2009-03-10 Intel Corporation Method, system, and apparatus for selecting a maximum operation point based on number of active cores and performance level of each of the active cores
JP4082706B2 (ja) * 2005-04-12 2008-04-30 学校法人早稲田大学 マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
US8849968B2 (en) * 2005-06-20 2014-09-30 Microsoft Corporation Secure and stable hosting of third-party extensions to web services
US7490254B2 (en) * 2005-08-02 2009-02-10 Advanced Micro Devices, Inc. Increasing workload performance of one or more cores on multiple core processors
US7484131B2 (en) * 2005-09-13 2009-01-27 International Business Machines Corporation System and method for recovering from a hang condition in a data processing system
US7577875B2 (en) * 2005-09-14 2009-08-18 Microsoft Corporation Statistical analysis of sampled profile data in the identification of significant software test performance regressions
US8074231B2 (en) 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US20070094495A1 (en) * 2005-10-26 2007-04-26 Microsoft Corporation Statically Verifiable Inter-Process-Communicative Isolated Processes
US8032898B2 (en) * 2006-06-30 2011-10-04 Microsoft Corporation Kernel interface with categorized kernel objects
US20080244507A1 (en) * 2007-03-30 2008-10-02 Microsoft Corporation Homogeneous Programming For Heterogeneous Multiprocessor Systems
US8789063B2 (en) 2007-03-30 2014-07-22 Microsoft Corporation Master and subordinate operating system kernels for heterogeneous multiprocessor systems
US7818592B2 (en) * 2007-04-18 2010-10-19 Globalfoundries Inc. Token based power control mechanism
US7992017B2 (en) 2007-09-11 2011-08-02 Intel Corporation Methods and apparatuses for reducing step loads of processors
US8245232B2 (en) * 2007-11-27 2012-08-14 Microsoft Corporation Software-configurable and stall-time fair memory access scheduling mechanism for shared memory systems
US20090138683A1 (en) * 2007-11-28 2009-05-28 Capps Jr Louis B Dynamic instruction execution using distributed transaction priority registers
US8886918B2 (en) * 2007-11-28 2014-11-11 International Business Machines Corporation Dynamic instruction execution based on transaction priority tagging
WO2009136628A1 (ja) * 2008-05-08 2009-11-12 日本電気株式会社 情報処理システムと方法およびプログラム
US8589875B2 (en) * 2009-06-16 2013-11-19 International Business Machines Corporation Computing system with compile farm
US8578026B2 (en) * 2009-06-22 2013-11-05 Citrix Systems, Inc. Systems and methods for handling limit parameters for a multi-core system
US9098274B2 (en) * 2009-12-03 2015-08-04 Intel Corporation Methods and apparatuses to improve turbo performance for events handling
US20110153984A1 (en) * 2009-12-21 2011-06-23 Andrew Wolfe Dynamic voltage change for multi-core processing
EP2667284A4 (en) * 2011-01-20 2016-10-19 Nec Corp CONTROL SYSTEM
US9298918B2 (en) 2011-11-30 2016-03-29 Elwha Llc Taint injection and tracking
US9465657B2 (en) * 2011-07-19 2016-10-11 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US8813085B2 (en) * 2011-07-19 2014-08-19 Elwha Llc Scheduling threads based on priority utilizing entitlement vectors, weight and usage level
US9575903B2 (en) 2011-08-04 2017-02-21 Elwha Llc Security perimeter
US9098608B2 (en) * 2011-10-28 2015-08-04 Elwha Llc Processor configured to allocate resources using an entitlement vector
US9443085B2 (en) 2011-07-19 2016-09-13 Elwha Llc Intrusion detection using taint accumulation
US9798873B2 (en) 2011-08-04 2017-10-24 Elwha Llc Processor operable to ensure code integrity
US9558034B2 (en) 2011-07-19 2017-01-31 Elwha Llc Entitlement vector for managing resource allocation
US9170843B2 (en) * 2011-09-24 2015-10-27 Elwha Llc Data handling apparatus adapted for scheduling operations according to resource allocation based on entitlement
US9460290B2 (en) 2011-07-19 2016-10-04 Elwha Llc Conditional security response using taint vector monitoring
US9471373B2 (en) 2011-09-24 2016-10-18 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US8943313B2 (en) 2011-07-19 2015-01-27 Elwha Llc Fine-grained security in federated data sets
US8955111B2 (en) 2011-09-24 2015-02-10 Elwha Llc Instruction set adapted for security risk monitoring
US9098309B2 (en) 2011-09-23 2015-08-04 Qualcomm Incorporated Power consumption optimized translation of object code partitioned for hardware component based on identified operations
JP5877348B2 (ja) * 2011-09-28 2016-03-08 パナソニックIpマネジメント株式会社 メモリ制御システム及び電力制御方法
US9009451B2 (en) * 2011-10-31 2015-04-14 Apple Inc. Instruction type issue throttling upon reaching threshold by adjusting counter increment amount for issued cycle and decrement amount for not issued cycle
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US9875105B2 (en) 2012-05-03 2018-01-23 Nvidia Corporation Checkpointed buffer for re-entry from runahead
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US9575806B2 (en) * 2012-06-29 2017-02-21 Intel Corporation Monitoring accesses of a thread to multiple memory controllers and selecting a thread processor for the thread based on the monitoring
US9645929B2 (en) 2012-09-14 2017-05-09 Nvidia Corporation Speculative permission acquisition for shared memory
US10001996B2 (en) 2012-10-26 2018-06-19 Nvidia Corporation Selective poisoning of data during runahead
US9740553B2 (en) 2012-11-14 2017-08-22 Nvidia Corporation Managing potentially invalid results during runahead
US9235252B2 (en) * 2012-12-21 2016-01-12 Intel Corporation Dynamic balancing of power across a plurality of processor domains according to power policy control bias
US9569214B2 (en) 2012-12-27 2017-02-14 Nvidia Corporation Execution pipeline data forwarding
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US10140129B2 (en) * 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US9542193B2 (en) 2012-12-28 2017-01-10 Intel Corporation Memory address collision detection of ordered parallel threads with bloom filters
US9361116B2 (en) 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US9547602B2 (en) 2013-03-14 2017-01-17 Nvidia Corporation Translation lookaside buffer entry systems and methods
US9244684B2 (en) * 2013-03-15 2016-01-26 Intel Corporation Limited range vector memory access instructions, processors, methods, and systems
US9606842B2 (en) * 2013-05-08 2017-03-28 National Science Foundation Resource and core scaling for improving performance of power-constrained multi-core processors
US9292362B2 (en) * 2013-06-25 2016-03-22 Intel Corporation Method and apparatus to protect a processor against excessive power usage
US9582280B2 (en) 2013-07-18 2017-02-28 Nvidia Corporation Branching to alternate code based on runahead determination
GB2510655B (en) * 2013-07-31 2015-02-25 Imagination Tech Ltd Prioritizing instructions based on type
CN103543986B (zh) * 2013-10-30 2017-04-05 曙光信息产业(北京)有限公司 Cfx的计算任务的实现方法和装置
US9436786B1 (en) * 2014-02-12 2016-09-06 Xilinx, Inc. Method and circuits for superclocking
US10409350B2 (en) 2014-04-04 2019-09-10 Empire Technology Development Llc Instruction optimization using voltage-based functional performance variation
US9817465B2 (en) 2014-06-27 2017-11-14 Microsoft Technology Licensing, Llc Low latency computer system power reduction
US10877530B2 (en) * 2014-12-23 2020-12-29 Intel Corporation Apparatus and method to provide a thermal parameter report for a multi-chip package
US10339295B2 (en) 2016-07-28 2019-07-02 Microsoft Technology Licensing, Llc Tracking work between system entities
US10379904B2 (en) * 2016-08-31 2019-08-13 Intel Corporation Controlling a performance state of a processor using a combination of package and thread hint information
US10628228B1 (en) * 2017-08-28 2020-04-21 Amazon Technologies, Inc. Tiered usage limits across compute resource partitions
US11030007B2 (en) * 2017-12-19 2021-06-08 Western Digital Technologies, Inc Multi-constraint dynamic resource manager
US11281501B2 (en) * 2018-04-04 2022-03-22 Micron Technology, Inc. Determination of workload distribution across processors in a memory system
EP3608779B1 (en) * 2018-08-09 2024-04-03 Bayerische Motoren Werke Aktiengesellschaft Method for processing a predetermined computing task by means of a distributed, vehicle-based computing system as well as computing system, server device, and motor vehicle
CN110687997B (zh) * 2019-09-06 2021-06-11 苏州浪潮智能科技有限公司 一种动态调整fpga的功耗的方法及装置

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0432359A3 (en) * 1989-11-21 1993-03-17 International Business Machines Corporation Method and apparatus for performing memory protection operations in a parallel processor system
US5708788A (en) * 1995-03-03 1998-01-13 Fujitsu, Ltd. Method for adjusting fetch program counter in response to the number of instructions fetched and issued
US5896528A (en) * 1995-03-03 1999-04-20 Fujitsu Limited Superscalar processor with multiple register windows and speculative return address generation
US5809268A (en) * 1995-06-29 1998-09-15 International Business Machines Corporation Method and system for tracking resource allocation within a processor
US5719800A (en) 1995-06-30 1998-02-17 Intel Corporation Performance throttling to reduce IC power consumption
US5996092A (en) * 1996-12-05 1999-11-30 International Business Machines Corporation System and method for tracing program execution within a processor before and after a triggering event
US6237073B1 (en) * 1997-11-26 2001-05-22 Compaq Computer Corporation Method for providing virtual memory to physical memory page mapping in a computer operating system that randomly samples state information
RU2131145C1 (ru) * 1998-06-16 1999-05-27 Закрытое акционерное общество Научно-технический центр "Модуль" Нейропроцессор, устройство для вычисления функций насыщения, вычислительное устройство и сумматор
US6304978B1 (en) 1998-11-24 2001-10-16 Intel Corporation Method and apparatus for control of the rate of change of current consumption of an electronic component
US6564328B1 (en) * 1999-12-23 2003-05-13 Intel Corporation Microprocessor with digital power throttle
US6636949B2 (en) * 2000-06-10 2003-10-21 Hewlett-Packard Development Company, L.P. System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
EP1182552A3 (en) 2000-08-21 2003-10-01 Texas Instruments France Dynamic hardware configuration for energy management systems using task attributes
US6662278B1 (en) * 2000-09-22 2003-12-09 Intel Corporation Adaptive throttling of memory acceses, such as throttling RDRAM accesses in a real-time system
US7174194B2 (en) * 2000-10-24 2007-02-06 Texas Instruments Incorporated Temperature field controlled scheduling for processing systems
US7111178B2 (en) * 2001-09-28 2006-09-19 Intel Corporation Method and apparatus for adjusting the voltage and frequency to minimize power dissipation in a multiprocessor system
US7281140B2 (en) * 2001-12-28 2007-10-09 Intel Corporation Digital throttle for multiple operating points
US6931559B2 (en) * 2001-12-28 2005-08-16 Intel Corporation Multiple mode power throttle mechanism
US7036032B2 (en) * 2002-01-04 2006-04-25 Ati Technologies, Inc. System for reduced power consumption by phase locked loop and method thereof
US7076681B2 (en) * 2002-07-02 2006-07-11 International Business Machines Corporation Processor with demand-driven clock throttling power reduction
KR20050115227A (ko) * 2003-01-23 2005-12-07 유니버시티 오브 로체스터 다중 클록 도메인 마이크로프로세서
US7174469B2 (en) * 2003-09-30 2007-02-06 International Business Machines Corporation Processor power and energy management

Also Published As

Publication number Publication date
US8190863B2 (en) 2012-05-29
CN1981280A (zh) 2007-06-13
JP2008505396A (ja) 2008-02-21
CN100561461C (zh) 2009-11-18
US20060005082A1 (en) 2006-01-05
TW200723111A (en) 2007-06-16
WO2006014254A1 (en) 2006-02-09
US20120239875A1 (en) 2012-09-20
US8924690B2 (en) 2014-12-30

Similar Documents

Publication Publication Date Title
JP4543081B2 (ja) リソースの割り当ておよび制限を介するヘテロジニアスチップマルチプロセッサのための装置および方法
US9864681B2 (en) Dynamic multithreaded cache allocation
JP6154071B2 (ja) アクティブなプロセッサに基づく動的電圧及び周波数管理
JP5688462B2 (ja) 処理ノードの動的パフォーマンス制御
US9658877B2 (en) Context switching using a context controller and on-chip context cache
JP5175335B2 (ja) 電力/パフォーマンスのサービス品質のための優先度に基づくスロットリング
US8489904B2 (en) Allocating computing system power levels responsive to service level agreements
US20160019168A1 (en) On-Demand Shareability Conversion In A Heterogeneous Shared Virtual Memory
US9342122B2 (en) Distributing power to heterogeneous compute elements of a processor
US20190065243A1 (en) Dynamic memory power capping with criticality awareness
US20070239940A1 (en) Adaptive prefetching
JP2009093665A (ja) マルチスレッド・プロセッサ性能を制御する装置及び方法
KR20080038389A (ko) 멀티플 코어 프로세서에서 하나 또는 그 이상의 코어의워크로드 성능의 향상 및 향상 방법
KR20110134917A (ko) 캐시에서의 웨이 할당 및 웨이 로킹 방법
US10482017B2 (en) Processor, method, and system for cache partitioning and control for accurate performance monitoring and optimization
EP4394598A1 (en) Region-aware memory bandwidth allocation control
Sivakumaran et al. Priority based yield of shared cache to provide cache QoS in multicore systems
CN118277082A (zh) 区域感知存储器带宽分配控制
Ausavarungnirun et al. High-Performance and Energy-Effcient Memory Scheduler Design for Heterogeneous Systems
WO2024006020A1 (en) Adaptive power throttling system
Krappman Identifying and alleviating shared cache contention: Achieving reliability of real-time tasks on a multi-OS and multi-core system
Jeong Core-characteristic-aware off-chip memory management in a multicore system-on-chip

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090630

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091117

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100216

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100223

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100315

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100323

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100415

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100422

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100517

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130702

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

LAPS Cancellation because of no payment of annual fees