JP7724243B2 - 使用ポリシー及びコア制約に基づくコア選択 - Google Patents

使用ポリシー及びコア制約に基づくコア選択

Info

Publication number
JP7724243B2
JP7724243B2 JP2022577194A JP2022577194A JP7724243B2 JP 7724243 B2 JP7724243 B2 JP 7724243B2 JP 2022577194 A JP2022577194 A JP 2022577194A JP 2022577194 A JP2022577194 A JP 2022577194A JP 7724243 B2 JP7724243 B2 JP 7724243B2
Authority
JP
Japan
Prior art keywords
processor core
workload
core
cost
processor
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.)
Active
Application number
JP2022577194A
Other languages
English (en)
Other versions
JP2023531893A (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2023531893A publication Critical patent/JP2023531893A/ja
Application granted granted Critical
Publication of JP7724243B2 publication Critical patent/JP7724243B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/30098Register arrangements
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Description

現代のプロセッサは、命令を並列に実行するための多数のプロセッサコアを含む。プロセッサ又はシステム・オン・チップ(SoC)のプロセッサコアの数が増加するにつれて、プロセッサコアは、電圧及び温度等のインフラストラクチャ制約に対して、広い範囲の周波数応答(frequency response)を有する傾向がある。例えば、各プロセッサコアは、所定の温度で最大周波数に達する様々な最小電圧を有する。加えて、プロセッサコア間の周波数応答の変化は、プロセッサコアのマイクロアーキテクチャ又は構造サイズの差異に起因して生じ得る。SoC上に存在するプロセッサコアの不均一性は、各プロセッサコアが、様々なエネルギー効率及び場合によっては数百メガヘルツ程度の最大動作周波数特性を有することを意味する。
本開示は、添付の図面を参照することによってより良好に理解され、その多くの特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
いくつかの実施形態による、選択したコア識別子をオペレーティングシステムに提供するように構成された処理ユニットを含む処理システムのブロック図である。 いくつかの実施形態による、図1の処理ユニットのコア選択エンジンのブロック図である。 いくつかの実施形態による、ワークロードを実行するためにプロセッサコアの優先キューリストをコンパイルする方法のフロー図である。 いくつかの実施形態による、選択したコア識別情報をオペレーティングシステムに提供するコア選択エンジンのブロック図である。 いくつかの実施形態による、選択したコア識別情報を処理ユニットからオペレーティングシステムに提供する方法を示すフロー図である。
図1~図5は、例えば、電圧対周波数応答等のシステム使用ポリシー及びプロセッサコアの制約の範囲に基づいて、ワークロードを実行するために、処理デバイスの複数のプロセッサコアから1つのプロセッサコア(又はプロセッサコアのセット)を選択し、選択したプロセッサコアをオペレーティングシステム(OS)に伝達するためのシステム及び技術を示す。プロセッサコアが第1のワークロードを実行するための要求をOSから受信したことに応じて、中央処理装置(CPU)又はアクセラレーテッド・プロセッシング・ユニット(APU)等のプロセッサの処理ユニットは、プロセッサコアのそれぞれで第1のワークロードを実行するコストに基づいて、第1のワークロードを実行するために、プロセッサコアの優先キューリストをコンパイルし、コストは、例えば、システム使用ポリシー、第1のワークロードの特性及び各プロセッサコアの1つ以上の物理的制約に基づく。処理ユニットは、第1のワークロードを実行するためのコストに基づいてプロセッサコアを選択し、選択したプロセッサコアの識別子をOSに伝達する。いくつかの実施形態において、処理ユニットは、選択したプロセッサコアの識別子を、OSが読み出すレジスタに書き込む。
処理ユニットが、選択したプロセッサコアの識別子をOSに伝達すると、処理ユニットは、選択したプロセッサコアを優先キューの先頭から除去又はポップする一方で、OSは、選択したプロセッサコアを利用して第1のワークロードを実行する。OSが、選択したプロセッサコア上で第1のワークロードの実行を完了した後で、OSは、選択したプロセッサコアを処理ユニットに戻す。次に、処理ユニットは、選択したプロセッサコアの更新されたコストを計算し、選択したプロセッサコアを、更新されたコストに基づく位置で、優先キューに再挿入する。
処理ユニットは、プロセッサコアの低レベル物理的制約パラメータ値へのアクセスを有し、プロセッサコアの動的に更新された優先キューを維持することによってワークロードを実行するために、何れのプロセッサコアを選択するかを決定するOSにおける計算負荷を低減し、各ワークロードを実行するために、選択したコアの識別子をOSに伝達する。処理ユニットは、処理システムの電力モードの交流(AC)から直流(DC)への変化又はその逆の変化等の割込みイベントに応じて、周期的に、優先キューを更新する。プロセッサコアの静的な順序をOSに提供することとは対照的に、ワークロードを実行するために現在のコストに基づいてプロセッサコアを選択し、選択したプロセッサ識別子をOSに提供することによって、処理ユニットは、処理システムの性能及びエネルギー効率を改善し、OSにおける計算負荷を低減する。
いくつかの実施形態では、選択したプロセッサが第1のワークロードを実行している間に、OSが別のプロセッサコアに第2のワークロードを実行するように要求した場合、処理ユニットは、プロセッサコアの各々で第2のワークロードを実行するコストに基づいて、第2のワークロードを実行するために、プロセッサコアの優先キューリストを更新する(この時点では、第1のワークロードを実行するために選択したプロセッサコアを含まない)。コストは、現在のシステム使用ポリシー、第2のワークロードの特性及び各プロセッサコアの1つ以上の物理的制約に基づく。
いくつかの実施形態では、処理ユニットは、周期的に、又は、更新されたシステム使用ポリシー等の割込みイベントに基づいて、優先キューを更新する。システム使用ポリシーは、例えば、プロセッサの電源がACモードか否か(すなわち、電力網への接続をオフにして動作している)、DCモードか否か(バッテリ電源をオフにして動作している)、又は、現在のアプリケーションが高いグラフィックス強度を伴うか否かに基づいて、動的に変化する。各プロセッサコアの物理的制約は、温度、電力、所定の周波数に到達するために必要な電圧、信頼性、必要な性能レベル、マイクロアーキテクチャ特徴、1秒当たりの命令、メモリ帯域幅、メモリコントローラ内のメモリトラフィック、及び、使用年数(age)等の要因を含む。
周期的に、又は、更新されたシステム使用ポリシー若しくはスケジューリングされる準備ができている新規のワークロード等の割込みに応じて、処理ユニットは、システム使用ポリシー及び各プロセッサコアの物理的制約に基づいて、各プロセッサコアでワークロードを実行するコストを計算する。処理ユニットは、優先キューをコンパイルするために、計算されたコストの降順にプロセッサコアをソートする。現在のコストに基づいて更新した優先キューに基づいて、処理ユニットは、ワークロードごとに現在の使用ポリシーに適合するコアを選択する。
図1は、いくつかの実施形態による、処理システム100のブロック図である。処理システム100は、処理ユニット102と、処理ユニット108と、を含む。様々な実施形態では、処理ユニット108は、1つ以上のシングルコア又はマルチコア・プロセッサ・コア110を含む。処理ユニット102は、処理ユニット108のプロセッサコア110の優先キュー106を生成するコア選択エンジン104を含む。処理システム100は、概して、アプリケーション116等の命令(例えば、コンピュータプログラム)のセットを実行して、電子デバイスの指定されたタスクを行うように構成されている。そのようなタスクの例は、電子デバイスの動作の態様を制御すること、ユーザに情報を表示して、特定のユーザエクスペリエンスを提供すること、他の電子デバイスと通信すること等を含む。したがって、異なる実施形態では、処理システム100は、デスクトップコンピュータ、ラップトップコンピュータ、サーバ、ゲームコンソール、タブレット、スマートフォン等の多数のタイプの電子デバイスのうち何れかで採用される。処理システム100は、図1に示すよりも多い又は少ない構成要素を含み得ることを理解されたい。例えば、処理システム100は、1つ以上の入力インターフェース、不揮発性ストレージ、1つ以上の出力インターフェース、ネットワークインターフェース、及び、1つ以上のディスプレイ又はディスプレイインターフェースを更に含み得る。
図1に示すように、処理システム100は、システムメモリ120と、オペレーティングシステム118と、通信インフラストラクチャ114と、1つ以上のアプリケーション116と、を含む。システムメモリ120へのアクセスは、メモリ120に接続されたメモリコントローラ(図示省略)によって管理される。例えば、システムメモリ120に対する読出し又は書込みのための処理ユニット102又は他のデバイスからの要求は、メモリコントローラによって管理される。いくつかの実施形態では、1つ以上のアプリケーション116は、処理ユニット102において実行される計算を実施するための様々なプログラム又はコマンドを含む。オペレーティングシステム118及び通信インフラストラクチャ114を、以下に詳細に説明する。処理システム100は、入出力メモリ管理ユニット(IOMMU)(図示省略)等のメモリ管理ユニットを更に含む。処理システム100の構成要素は、ハードウェア、ファームウェア、ソフトウェア、又は、それらの任意の組合せとして実装され得る。いくつかの実施形態では、処理システム100は、図1に示されるものに加えて又はそれとは異なる、1つ以上のソフトウェア、ハードウェア及びファームウェア構成要素を含む。
処理システム100内で、システムメモリ120は、DRAM(図示省略)等の非永続的メモリを含む。様々な実施形態では、システムメモリ120は、処理論理命令、定数値、アプリケーション若しくはその他の処理論理の一部の実行中の変数値、又は、その他の所望の情報を記憶する。例えば、様々な実施形態において、処理ユニット102又は処理ユニット108で1つ以上の動作を実施するための制御論理の一部は、処理ユニット102又は処理ユニット108による動作のそれぞれの部分の実行中にシステムメモリ120に存在する。実行中、それぞれのアプリケーション、オペレーティングシステム機能、処理論理コマンド及びシステムソフトウェアは、システムメモリ120に存在する。オペレーティングシステム118にとって基本的な制御論理コマンドは、概して、実行中にシステムメモリ120に存在する。いくつかの実施形態では、他のソフトウェアコマンドも、処理システム100の実行中にシステムメモリ120に存在する。
様々な実施形態では、通信インフラストラクチャ114は、処理システム100の構成要素を相互接続する。通信インフラストラクチャ114は、周辺構成要素相互接続(PCI)バス、拡張PCI(PCI-E)バス、高度マイクロコントローラ・バス・アーキテクチャ(AMBA)バス、高度グラフィックポート(AGP)、又は、その他のこのような通信インフラストラクチャ及び相互接続のうち1つ以上を含む(図示省略)。いくつかの実施形態では、通信インフラストラクチャ114は、イーサネット(登録商標)ネットワーク、又は、アプリケーションのデータ転送速度要件を満たす任意の他の適切な物理的通信インフラストラクチャを含む。また、通信インフラストラクチャ114は、処理システム100の構成要素を含む構成要素を相互接続する機能を含む。
処理ユニット102は、制御プロセッサ、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)又はデジタル信号プロセッサ(DSP)のうち1つ以上を含む(図示省略)。処理ユニット102は、処理システム100の動作を制御する制御論理の少なくとも一部を実行する。例えば、様々な実施形態において、処理ユニット102は、オペレーティングシステム118及び1つ以上のアプリケーション116を実行する。いくつかの実施形態では、処理ユニット102は、1つ以上のアプリケーション116に関連する処理を処理ユニット102間に分散させることによって、1つ以上のアプリケーション116の実行を開始及び制御する。
処理ユニット108は、グラフィックス動作及び並列処理に特に適した他の動作等の選択された機能のためのコマンド及びプログラムを実行する。概して、処理ユニット108は、ピクセル演算、幾何学的計算、及び、ディスプレイへの画像のレンダリング等のようなグラフィックスパイプライン演算を実行するために頻繁に使用される。いくつかの実施形態では、処理ユニット108は、処理ユニット102から受信したコマンド又は命令に基づいて、計算処理演算(例えば、ビデオ演算、物理シミュレーション、計算流体力学等のようにグラフィックスとは無関係な演算)を実行する。例えば、そのようなコマンドは、処理ユニット108の命令セットアーキテクチャ(ISA)では通常定義されない特別な命令を含む。いくつかの実施形態では、処理ユニット108は、画像をレンダリング及び表示するための1つ以上のコマンド又は命令と共に、グラフィックス画像を表す画像ジオメトリを受信する。様々な実施形態では、画像ジオメトリは、2次元(2D)又は3次元(3D)のコンピュータ化されたグラフィックス画像の表現に対応する。
様々な実施形態において、処理ユニット108は、例えば、単一命令複数データ(SIMD)実行モデルに従って、ウェーブフロント(wavefront)内の他のスレッドの実行と同時にスレッドを実行するように構成された1つ以上のSIMDユニット(図示省略)を含む1つ以上のプロセッサコア110等の1つ以上の計算ユニットを含む。SIMD実行モデルは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、したがって、同じプログラムを実行するが、そのプログラムを異なるデータで実行することができるものである。処理ユニット108のいくつかの実施形態は、GPUを実装するために使用され、その場合、プロセッサコア110は、シェーダコア又はストリーミングマルチプロセッサ(SMX)と呼ばれる。処理ユニット108に実装されるプロセッサコア110の数は、設計選択の問題である。各プロセッサコア110は、スカラ及び/又はベクトル浮動小数点ユニット、演算及び論理ユニット(ALU)等の1つ以上の処理要素を含む。様々な実施形態では、プロセッサコア110も、逆平方根ユニット及び正弦/余弦ユニット等の専用処理ユニット(図示省略)を含む。
プロセッサコア110の各々は、特定のワークアイテムのそれぞれのインスタンス生成を実行して、入力データを処理し、1つ以上のプロセッサコア110における実行の基本的な単位は、ワークアイテム(例えば、スレッド)である。各ワークアイテムは、例えば、並列に実行されるコマンドによってデバイス上で起動されたカーネルの並列実行の集合体の単一のインスタンス生成を表す。ワークアイテムは、プロセッサコア110において実行するワークグループの一部として1つ以上の処理要素において実行する。
処理ユニット108は、単一のSIMDユニット上で「ウェーブフロント」又は「ワークロード」として同時に実行されるスレッドのグループを含むワークアイテムを発行及び実行するGPUを含む。また、ウェーブフロントは、ワープ、ベクトル又はスレッドとも互換的に呼ばれることがある。いくつかの実施形態では、ウェーブフロントは、シェーダプログラムの並列実行のインスタンスを含み、各ウェーブフロントは、SIMDパラダイム(例えば、複数のデータと同じ命令のストリームを実行する1つの命令制御ユニット)を用いて、単一のSIMDユニットにおいてインラインで同時に実行する複数のワークアイテムを含む。スケジューラ(図示省略)は、異なるプロセッサコア110で様々なウェーブフロントをスケジューリングすることに関連する動作を実施するように、更に、処理ユニット108上で様々なタスクを編成するための他の動作を実施するように構成されている。
プロセッサコア110は、電圧及び温度等のインフラストラクチャ制約に対する周波数応答等の任意の範囲の物理的制約を有する。プロセッサコアの物理的制約は、システム使用に基づいて、及び、ワークロードごとに変化する可能性がある。例えば、プロセッサコア110の温度が閾値を超えた場合、プロセッサコア110の最大周波数を低下させ、プロセッサコア110の信頼性に悪影響を及ぼし得る。逆に、大きいディープCステートレジデンシ(greater deep C-state residency)は、プロセッサコア110の信頼性を高める傾向がある。
処理ユニット102は、性能を向上させるために、コストに基づいて各ワークロードを実行するためのコア又はコアのセットを動的に選択し、更に、選択したコアをOS118に伝達するコア選択エンジン104を含む。コア選択エンジン104は、電力、温度、所定の周波数に達するために必要な電圧、及び、信頼性等のプロセッサコア110の低レベルの物理的制約パラメータ値にアクセスを有し、プロセッサコア110の動的に更新された優先キュー106を維持することによってワークロードを実行するために、何れのプロセッサコア110を選択するかを決定するOS118における計算負荷を低減し、各ワークロードを実行するために、選択したコア110の識別子112をOS118に伝達する。
例示すると、動作中、処理ユニット102は、プロセッサコアがワークロードを実行するための要求をOS118から受信する。コア選択エンジン104は、現在のシステム使用ポリシー、プロセッサコア110の各々の物理的制約及びワークロードの特性のうち1つ以上を考慮するコスト関数に基づいて、プロセッサコア110の各々においてワークロードを実行するコストを決定する。コア選択エンジン104は、プロセッサコア110の各々において、ワークロードを実行する計算されたコストに基づく順序で、プロセッサコア110を列挙する優先キュー106をコンパイルする。コア選択エンジン104は、ワークロードを実行するために優先キュー106からプロセッサコアを選択し、更に、選択したコアの識別子112をOS118に伝達する。例えば、いくつかの実施形態では、コスト関数は、現在のシステム使用ポリシーを考慮してワークロードを実行するために、高いコストと、高い適合性と、を相関し、コア選択エンジン104は、最も高いコストを有するプロセッサコアを選択する。
いくつかの実施形態では、OS118からのプロセッサコアがワークロードを実行するための要求は、例えば、OS118が優先度の低いバックグラウンドタスクを実行している場合等のように、ワークロードが低い優先度であるという指標を含む。優先キュー106が、プロセッサコアを最高性能から最低性能に既にソートしているので、コア選択エンジン104は、ワークロードが低い優先度であるという指標を受信したことに応じて、最低コストを有するプロセッサコアを選択する。
図2は、いくつかの実施形態による、図1の処理ユニット102のコア選択エンジン104のブロック図である。コア選択エンジン104は、電源モニタ204と、システム使用ポリシー206と、プロセッサコア物理的制約要因210と、コアコスト計算器212と、を含む。コア選択エンジン104は、各プロセッサコア110(図示省略)でワークロード202を実行するコストを決定し、コストの降順にプロセッサコア110を列挙する優先キュー106をコンパイルする。コア選択エンジン104は、ハードウェアにおいて、又は、電力管理ファームウェアコードを実行するマイクロコントローラにおいて実装される。いくつかの実施形態では、コア選択エンジン104は、ハードコーディングされた若しくはプログラム可能な論理、ソフトウェア/ファームウェア命令を実行する1つ以上のプロセッサ、又は、それらの任意の組合せとして実装される。
電源モニタ204は、処理システム100がAC電力モードにあるか又はDC電力モードにあるかを監視する。いくつかの実施形態では、電源モニタ204は、処理システム100がDC電力モードにある場合、バッテリ充電レベルを更に監視する。電源モニタ204は、ハードコードされた若しくはプログラム可能な論理、ソフトウェア/ファームウェア命令を実行する1つ以上のプロセッサ、又は、それらの任意の組合せとして実装される。
システム使用ポリシー206は、いくつかの実施形態では、固定範囲[Zmin,Zmax]を有するトレードオフパラメータZ208として実装され、低い値は、高いバッテリモード/エネルギー効率に関連付けられており、高い値は、高い性能に関連付けられている。したがって、例えば、いくつかの実施形態では、Z208の範囲は、バッテリモード/エネルギー効率の0から、高い性能の1の範囲である。Z208の値は、いくつかの実施形態では連続的であり、他の実施形態では離散化される。いくつかの実施形態では、トレードオフパラメータZ208は、エンドユーザによって又はOS118によって調整可能である。処理システム100の電力モードがACからDC又はその逆に変化する場合、又は、バッテリ充電レベルが閾値を下回る場合、システム使用ポリシー206は、電源モニタ204から指標を受信する。
いくつかの実施形態では、トレードオフ値Z208は、処理システム100において実行する特定のタイプのプログラム又はアプリケーションに関連付けられた特定の動作モードに従って設定されてもよい。例えば、いくつかの実施形態では、トレードオフ値Z208は、「ゲームモード」を示す値に設定されてもよい。ゲームモード値が、エンドユーザ又はOS118によって選択されると、コア選択エンジン104は、ワークロード202に対して最良のコストを有するL3キャッシュ及び他のリソースを共有する2つ以上のコアのグループ(コア複合体)を選択する。
物理的制約要因210は、電力、温度、必要とされる性能レベル、特定の周波数に到達するために必要とされる電圧、信頼性、使用年数等のように、ワークロードごと及びプロセッサコア110ごとのパラメータのリポジトリであり、1秒当たりの命令、メモリ帯域幅及びメモリコントローラにおけるメモリトラフィック等のように、システム全体のマイクロアーキテクチャイベントである。いくつかの実施形態では、物理的制約要因210は、所定の温度でコアごとに最大周波数に達するための検出された最小電圧を含む。トレードオフ値Z208をゲームモード値に設定し得る実施形態では、物理的制約要因210は、L3キャッシュ及び他のリソースを共有するコア複合体の性能パラメータを含む。
コアコスト計算器212は、所定のトレードオフ値Z208について、各プロセッサコア110においてワークロード202を実行するためのコストを決定する。例えば、いくつかの実施形態では、コアコスト計算器212は、コアごとに、以下のコストを決定する。
Cost(Core0)=fCore0(X,X,...,X,Z)
ここで、X及びXは、温度、電力等のパラメータであり、Mは、使用されるパラメータの総数である。より具体的には、いくつかの実施形態では、コアコスト計算器212は、以下の式を使用してコアごとのコストを決定する。

ここで、z∈[0,1]及びPowerCore0は、Core0の電力消費であり、PerfCore0は、コア0の最大達成可能性能である。PowerMAXは、全てのプロセッサコアの最大電力消費値であり、
Powermax=max(PowerCore0,PowerCore1,...,PowerCoreN-1)で示される。
更に、PerfMAXは、全てのプロセッサコアの最大性能値であり、
Perfmax=max(PerfCore0,PerfCore1,...,PerfCoreN-1)で示される。
これらの両方とも、コアコスト計算器212によってわかる。
いくつかの実施形態では、処理システム100がバッテリモードで動作していることを電源モニタ204が示す場合、コアコスト計算器212は、アイドリングに対して低リークを優先するコスト関数を採用する。いくつかの実施形態では、高い温度がプロセッサコア110の最大周波数を低下させ、プロセッサコア110の信頼性に影響を及ぼすので、コアコスト計算器212は、プロセッサコア温度を考慮し、チップ上のホットスポットを決定するコスト関数を採用する。同様に、高い動作電圧がプロセッサコア110の信頼性を低下させる一方で、大きいディープCステートレジデンシが信頼性を高める。温度、電圧及びディープCステートレジデンシ等の要因を考慮するコスト関数を採用することによって、コアコスト計算器212は、そのような条件を反映するプロセッサコア110ごとにコストを計算する。いくつかの実施形態では、コアコスト計算器212は、所定の温度においてプロセッサコア110ごとに最大周波数に達するための最小電圧を考慮するコスト関数、又は、エージングカウンタ(aging counters)に基づくプロセッサコア使用年数を採用する。コアコスト計算器212は、同様の方法でコアごとのコストを計算し、各プロセッサコア110においてワークロード202を実行するコストに基づいて、プロセッサコア110の優先キュー106をコンパイルする。
図3は、いくつかの実施形態による、ワークロードを実行するために、プロセッサコア110の優先キュー106をコンパイルする方法300のフロー図である。ブロック302において、コア選択エンジン104は、ワークロードを実行するために、プロセッサコアごとにパラメータを決定する。ブロック304において、コアコスト計算器212は、物理的制約要因210に記憶されたパラメータ、現在有効なシステム使用ポリシー206、及び、ワークロードの特性に基づいて、ワークロードを実行するために、プロセッサコア110ごとにコストを計算する。ブロック306において、コア選択エンジン104は、それらの計算されたコストに基づいて、プロセッサコア110を列挙する優先キュー106をコンパイルする。いくつかの実施形態では、高いコストは、ワークロードの実行に適したプロセッサコアに相関し、コア選択エンジン104は、コストの降順でプロセッサコア110を列挙する。
コア選択エンジン104は、プロセッサコア110ごとにコストを再計算し、優先キュー106のプロセッサコア110のリストを周期的に再コンパイルする。いくつかの実施形態では、OS118からのプロセッサコア110が新規のワークロードを実行するための要求の受信、システム使用ポリシー206の変更、又は、電力モードの変更の電源モニタ204からの指標等の割込みイベントに応答して、コア選択エンジン104は、プロセッサコア110ごとにコストを再計算し、優先キュー106のプロセッサコア110のリストを再コンパイルする。
図4は、いくつかの実施形態による、選択したコア識別情報をオペレーティングシステム118に提供するコア選択エンジン104のブロック図である。電力モードの電源モニタ204からの指標、トレードオフパラメータZ208設定に基づく現在有効なシステム使用ポリシー206、プロセッサコア110ごとの物理的制約要因210、及び、ワークロードの特性に基づいて、コア選択エンジン104は、ワークロードを実行するために、コストの降順で4つのプロセッサコアを列挙する優先キュー106をコンパイルする。図示した例では、コア選択エンジン104は、ワークロードを実行するための最高コストのプロセッサコアとしてプロセッサコアC3 406を、ワークロードを実行するための2番目に高いコストのプロセッサコアとしてプロセッサコアC1 402を、ワークロードを実行するための3番目に高いコストのプロセッサコアとしてプロセッサコアC4 408を、ワークロードを実行するための4番目に高いコストのプロセッサコアとしてプロセッサコアC2 404をリストしている。
プロセッサコアがワークロードを実行するための要求をOS118から受信したことに応じて、コア選択エンジン104は、プロセッサコアC3 406の識別子をOS118に伝達し、プロセッサコアC3 406を優先キュー106からポップする(すなわち、除去する)。いくつかの実施形態では、コア選択エンジン104は、OS118によって読み出されるレジスタに識別子を書き込むことによって、識別子を伝達する。ワークロードを実行するためにOSがプロセッサコアC3 406を利用している間、優先キュー106は、最高コストのプロセッサコアとしてプロセッサコアC1 402、2番目に高いコストプロセッサコアとしてプロセッサコアC4 408、3番目に高いコストプロセッサコアとしてプロセッサコアC2 404のみを含む。OS118が第2のプロセッサコアを要求する場合、コア選択エンジン104は、プロセッサコアC1 402の識別子をOS118に伝達し、優先キュー106からプロセッサコアC1 402をポップする。このとき、優先キュー106は、プロセッサコアC4 408及びプロセッサコアC2 404のみを含む。
OS118がプロセッサコアC3 406でのワークロードの実行を完了すると、OS118は、ワークロードがプロセッサコアC3 406での実行を完了したことをコア選択エンジン104に示す。指標を受信したことに応じて、コア選択エンジン104は、プロセッサコアC3 406において次のワークロードを実行する新規のコストを計算し、プロセッサコアC3 406を優先キュー106に再挿入する。いくつかの実施形態では、コア選択エンジン104は、更新されたシステム使用ポリシー206等の割込みイベントに応じて又は周期的に、プロセッサコアごとにコストを決定する。
いくつかの実施形態では、OS118からのプロセッサコアがワークロードを実行するための要求は、例えば、OS118が優先度の低いバックグラウンドタスクを実行している場合等のように、ワークロードが低い優先度であるという指標を含む。プロセッサコアが低優先度ワークロードを実行するための要求を受信したことに応じて、コア選択エンジン104は、ワークロードを実行するために、最低コストプロセッサコアC2 404の識別子を伝達し、プロセッサコアC2 404を優先キュー106から除去する。
図5は、いくつかの実施形態による、選択したコア識別情報を、処理ユニットからオペレーティングシステムに提供する方法500を示すフロー図である。方法500は、図1に示す処理ユニット102、及び、図2に示すコア選択エンジン104のいくつかの実施形態で実施される。
ブロック502において、処理ユニット102は、プロセッサコアに関するワークロードの要求をOS118から受信する。ブロック504において、コア選択エンジン104は、トレードオフパラメータZ208の現在の値に基づいて、システム使用ポリシー206を決定する。ブロック506において、コアコスト計算器212は、コスト関数を適用して、電力モードの電源モニタ204からの指標、トレードオフパラメータZ208設定に基づく現在有効なシステム使用ポリシー206、プロセッサコア110ごとの物理的制約要因210、及び、ワークロードの特性に基づいて、ワークロードを実行するためにプロセッサコア110ごとにコストを計算する。
ブロック508において、コア選択エンジン104は、プロセッサコア110のための優先キュー106をコンパイルし、各プロセッサコア110においてワークロードを実行する計算されたコストに基づいて、それらをソートする。いくつかの実施形態では、高いコストは、ワークロードに対して適切なプロセッサコアに相関し、コア選択エンジン104は、最も高いコストのプロセッサコアが優先キュー106内の第1のプロセッサコアであるように、コストに従って降順にプロセッサコアをソートする。いくつかの実施形態では、処理システム100がDCモード(バッテリ)で動作していることを電源モニタ204が示す場合、コア選択エンジン104は、選択したプロセッサコアとして、アイドリングのための最低リークを有するプロセッサコア110を選択する。
ブロック510において、コア選択エンジン104は、ワークロードを実行するための選択したプロセッサコアの識別子をOS118に伝達する。いくつかの実施形態において、コア選択エンジン104は、選択したプロセッサコアの識別子を、OS118によって読み出されるレジスタに書き込む。コアコスト計算器212によって適用されるコスト関数に応じて、AC電力モードからDC電力モードへの切替え等のパラメータ又は条件を変更することは、各プロセッサコアにおいてワークロードを実行するコストの再計算をトリガし、結果として、OS118に伝達される選択したプロセッサコア識別子に対する変更をもたらす。いくつかの実施形態では、更新され選択したプロセッサコア識別子のOS118への伝達は、結果として、OS118が、新規の処理をスケジューリングすること、又は、現在のタスクを他のコアに移行することをもたらす。
ブロック512において、選択したプロセッサコアの識別子をOS118に伝達したことに応じて、コア選択エンジン104は、OS118が、選択したプロセッサコアにおいてワークロードを実行している間に、識別された選択したプロセッサコアを優先キュー106から除去する。ワークロードが、選択したプロセッサコアでの実行を完了すると、OS118は、ワークロードが完了したことをコア選択エンジン104に示す。ブロック514において、コア選択エンジン104は、OS118から、ワークロードが実行を完了したという指標を受信する。ブロック516において、コアコスト計算器212は、選択したプロセッサコアの新規のコストを計算し、コア選択エンジン104は、新規のコストに基づく位置において、選択したプロセッサコアを優先キュー106に戻す。次いで、方法フローは、次のワークロードのためにブロック502に戻って継続する。
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行するプロセッシングシステムの1つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、1つ以上のプロセッサによって実行されると、上記の技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ、キャッシュ、ランダムアクセスメモリ(RAM)等のソリッドステート記憶デバイス、又は、他の1つ以上の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。

Claims (14)

  1. 処理システムの複数のプロセッサコアの各プロセッサコアにおいて第1のワークロードを実行するための第1のコストを決定するステップと、
    前記処理システムの処理ユニットにおいて、前記第1のコストに基づいて、前記第1のワークロードを実行するための第1のプロセッサコアを選択するステップと、
    前記第1のプロセッサコアの識別子を、前記処理システムのオペレーティングシステムに伝達するステップと、を含む、
    方法。
  2. 前記第1のコストは、システム使用ポリシー、前記第1のワークロードの特性、及び、各プロセッサコアの1つ以上の物理的制約のうち少なくとも1つに基づいている、
    請求項1の方法。
  3. 前記システム使用ポリシーは、エネルギー効率と性能との間のトレードオフに基づいている、
    請求項2の方法。
  4. 前記システム使用ポリシーの変更を検出したことに応じて、前記第1のコストを更新するステップを更に含む、
    請求項2の方法。
  5. 各プロセッサコアにおいて前記第1のワークロードを実行するための前記第1のコストに基づいて、前記複数のプロセッサコアについての第1の優先キューをコンパイルするステップを更に含み、
    前記選択するステップは、最も高い第1のコストを有するプロセッサコアを選択するステップを含む、
    請求項1の方法。
  6. 前記第1のワークロードが低い優先度を有するという指標を前記オペレーティングシステムから受信するステップと、
    各プロセッサコアにおいて前記第1のワークロードを実行するための前記第1のコストに基づいて、前記複数のプロセッサコアについての第1の優先キューをコンパイルするステップと、を更に含み、
    前記選択するステップは、最も低い第1のコストを有するプロセッサコアを選択するステップを含む、
    請求項1の方法。
  7. 第1のプロセッサコアが前記第1のワークロードを実行するための要求を前記オペレーティングシステムから受信するステップと、
    選択されたプロセッサコアの識別子を前記オペレーティングシステムに伝達したことに応じて、前記選択されたプロセッサコアを前記第1の優先キューから除去するステップと、を更に含む、
    請求項5の方法。
  8. 前記処理ユニットにおいて、前記選択されたプロセッサコアにおける第1のワークロードの実行を完了したという指標を前記オペレーティングシステムから受信するステップと、
    前記選択されたプロセッサコアを前記第1の優先キューに戻すステップと、
    前記処理ユニットにおいて、前記複数のプロセッサコアの各プロセッサコアにおいて第2のワークロードを実行するための第2のコストを決定するステップと、
    前記処理ユニットにおいて、各プロセッサコアにおいて前記第2のワークロードを実行するための前記第2のコストに基づいて、前記複数のプロセッサコアについての第2の優先キューをコンパイルするステップと、を更に含む、
    請求項7の方法。
  9. 複数のプロセッサコアと、
    処理ユニットと、を備え、
    前記処理ユニットは、
    各プロセッサコアにおいて第1のワークロードを実行するための第1のコストに基づいて、前記複数のプロセッサコアについての第1の優先キューを決定することと、
    前記第1の優先キューに基づいて、前記第1のワークロードを実行するために選択された第1のプロセッサコアの識別子をオペレーティングシステムに伝達することと、
    を行うように構成されている、
    デバイス。
  10. 前記処理ユニットは、前記選択された第1のプロセッサコアの識別子を、前記オペレーティングシステムによって読み出されるように構成されたレジスタに書き込むように更に構成されている、
    請求項のデバイス。
  11. 前記第1のコストは、システム使用ポリシー、前記第1のワークロードの特性、及び、各プロセッサコアの1つ以上の物理的制約に基づいている、
    請求項のデバイス。
  12. 前記処理ユニットは、前記システム使用ポリシーの変更を検出したことに応じて、前記第1のコストを更新するように更に構成されている、
    請求項11のデバイス。
  13. 前記処理ユニットは、
    第1のプロセッサコアが前記第1のワークロードを実行するための要求を前記オペレーティングシステムから受信することと、
    前記選択された第1のプロセッサコアの識別子を前記オペレーティングシステムに伝達したことに応じて、前記選択された第1のプロセッサコアを前記第1の優先キューから除去することと、
    を行うように更に構成されている、
    請求項のデバイス。
  14. 前記処理ユニットは、
    前記選択された第1のプロセッサコアにおける第1のワークロードの実行を完了したという指標を前記オペレーティングシステムから受信することと、
    前記選択された第1のプロセッサコアを前記第1の優先キューに戻すことと、
    前記複数のプロセッサコアの各プロセッサコアにおいて第2のワークロードを実行するための第2のコストを決定することと、
    各プロセッサコアにおいて前記第2のワークロードを実行するための前記第2のコストに基づいて、前記複数のプロセッサコアについての第2の優先キューを決定することと、
    を行うように更に構成されている、
    請求項13のデバイス。
JP2022577194A 2020-06-26 2021-06-24 使用ポリシー及びコア制約に基づくコア選択 Active JP7724243B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063044533P 2020-06-26 2020-06-26
US63/044,533 2020-06-26
US16/945,519 2020-07-31
US16/945,519 US11886224B2 (en) 2020-06-26 2020-07-31 Core selection based on usage policy and core constraints
PCT/US2021/038879 WO2021262968A1 (en) 2020-06-26 2021-06-24 Core selection based on usage policy and core constraints

Publications (2)

Publication Number Publication Date
JP2023531893A JP2023531893A (ja) 2023-07-26
JP7724243B2 true JP7724243B2 (ja) 2025-08-15

Family

ID=79032040

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022577194A Active JP7724243B2 (ja) 2020-06-26 2021-06-24 使用ポリシー及びコア制約に基づくコア選択

Country Status (6)

Country Link
US (1) US11886224B2 (ja)
EP (1) EP4172770A4 (ja)
JP (1) JP7724243B2 (ja)
KR (1) KR20230025464A (ja)
CN (1) CN115867893A (ja)
WO (1) WO2021262968A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115599513B (zh) * 2022-04-07 2023-11-03 荣耀终端有限公司 资源调度方法及电子设备
US12511153B2 (en) * 2023-09-29 2025-12-30 Advanced Micro Devices, Inc. Arbitrated interrupt steering in heterogeneous processors
CN118884838B (zh) * 2024-09-25 2025-10-14 创旗技术有限公司 一种用于网络安全设备的cpu自适应动态调整方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050013705A1 (en) 2003-07-16 2005-01-20 Keith Farkas Heterogeneous processor core systems for improved throughput
US20130205126A1 (en) 2012-02-04 2013-08-08 Empire Technology Development Llc Core-level dynamic voltage and frequency scaling in a chip multiprocessor
US20150169363A1 (en) 2013-12-18 2015-06-18 Qualcomm Incorporated Runtime Optimization of Multi-core System Designs for Increased Operating Life and Maximized Performance
US20160253212A1 (en) 2014-02-27 2016-09-01 Empire Technology Development Llc Thread and data assignment in multi-core processors
US20190042280A1 (en) 2018-03-27 2019-02-07 Intel Corporation System, Apparatus And Method For Providing Hardware Feedback Information In A Processor
CN110955499A (zh) 2018-09-26 2020-04-03 Oppo广东移动通信有限公司 处理器核心配置方法、装置、终端及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924975B2 (en) 2009-07-23 2014-12-30 Empire Technology Development Llc Core selection for applications running on multiprocessor systems based on core and application characteristics
US8321615B2 (en) 2009-12-18 2012-11-27 Intel Corporation Source core interrupt steering
US8949207B2 (en) * 2010-12-09 2015-02-03 Canon Kabushiki Kaisha Method and apparatus for decoding encoded structured data from a bit-stream
US9311209B2 (en) * 2012-11-27 2016-04-12 International Business Machines Corporation Associating energy consumption with a virtual machine
US9348560B2 (en) * 2013-06-04 2016-05-24 Qualcomm Incorporated Efficient execution of graph-based programs
US9703613B2 (en) 2013-12-20 2017-07-11 Qualcomm Incorporated Multi-core dynamic workload management using native and dynamic parameters
US9323574B2 (en) * 2014-02-21 2016-04-26 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Processor power optimization with response time assurance
CN106155807A (zh) * 2015-04-15 2016-11-23 阿里巴巴集团控股有限公司 一种实现资源调度的方法与设备
US10509677B2 (en) * 2015-09-30 2019-12-17 Lenova (Singapore) Pte. Ltd. Granular quality of service for computing resources
US10841236B1 (en) * 2018-03-30 2020-11-17 Electronic Arts Inc. Distributed computer task management of interrelated network computing tasks
US20210109795A1 (en) * 2019-10-11 2021-04-15 Microsoft Technology Licensing, Llc Latency-Aware Thread Scheduling

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050013705A1 (en) 2003-07-16 2005-01-20 Keith Farkas Heterogeneous processor core systems for improved throughput
US20130205126A1 (en) 2012-02-04 2013-08-08 Empire Technology Development Llc Core-level dynamic voltage and frequency scaling in a chip multiprocessor
US20150169363A1 (en) 2013-12-18 2015-06-18 Qualcomm Incorporated Runtime Optimization of Multi-core System Designs for Increased Operating Life and Maximized Performance
US20160253212A1 (en) 2014-02-27 2016-09-01 Empire Technology Development Llc Thread and data assignment in multi-core processors
US20190042280A1 (en) 2018-03-27 2019-02-07 Intel Corporation System, Apparatus And Method For Providing Hardware Feedback Information In A Processor
CN110955499A (zh) 2018-09-26 2020-04-03 Oppo广东移动通信有限公司 处理器核心配置方法、装置、终端及存储介质

Also Published As

Publication number Publication date
KR20230025464A (ko) 2023-02-21
US11886224B2 (en) 2024-01-30
CN115867893A (zh) 2023-03-28
WO2021262968A1 (en) 2021-12-30
US20210406092A1 (en) 2021-12-30
EP4172770A1 (en) 2023-05-03
EP4172770A4 (en) 2024-03-20
JP2023531893A (ja) 2023-07-26

Similar Documents

Publication Publication Date Title
TWI591542B (zh) 雲端計算節點、方法與系統及電腦可讀媒體
JP7724243B2 (ja) 使用ポリシー及びコア制約に基づくコア選択
US7389440B2 (en) Method, system, and apparatus for improving multi-core processor performance
KR101992827B1 (ko) 마이크로프로세서 내의 열 설계 전력을 구성하기 위한 방법 및 장치
US8489904B2 (en) Allocating computing system power levels responsive to service level agreements
US8914515B2 (en) Cloud optimization using workload analysis
JP5688462B2 (ja) 処理ノードの動的パフォーマンス制御
CN104115091B (zh) 多层级cpu高电流保护
JP5695766B2 (ja) マルチコアシステムエネルギー消費最適化
CN102812439B (zh) 用于在多处理器计算机系统中分派任务的方法和系统
Castro et al. A joint CPU-RAM energy efficient and SLA-compliant approach for cloud data centers
Stavrinides et al. Energy-aware scheduling of real-time workflow applications in clouds utilizing DVFS and approximate computations
WO2013090788A1 (en) Allocating compute kernels to processors in a heterogeneous system
US20150130825A1 (en) Shared Memory Eigensolver
KR20120066189A (ko) 매니코어 시스템에서 응용 프로그램의 상태를 동적으로 재구성하는 장치 및 방법
Cong et al. Architecture support for domain-specific accelerator-rich cmps
TW201023046A (en) Delegated virtualization across physical partitions of a multi-core processor (MCP)
Kiertscher et al. Cherub: Power consumption aware cluster resource management
TWI582565B (zh) 用以配置微處理器中之熱設計功率的方法和裝置
KR101814988B1 (ko) 동시 이기종 컴퓨팅 환경에서의 동적 시스템 상태 조절 방법 및 장치
Cong-Feng et al. Patpro: Power aware thin provisioning of resources in virtualized servers
Kelly Complementing Green Hardware with Green Software

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230215

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240530

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250804

R150 Certificate of patent or registration of utility model

Ref document number: 7724243

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150