JP2013501297A - スレッドシフト:コアへのスレッド割振り - Google Patents

スレッドシフト:コアへのスレッド割振り Download PDF

Info

Publication number
JP2013501297A
JP2013501297A JP2012523619A JP2012523619A JP2013501297A JP 2013501297 A JP2013501297 A JP 2013501297A JP 2012523619 A JP2012523619 A JP 2012523619A JP 2012523619 A JP2012523619 A JP 2012523619A JP 2013501297 A JP2013501297 A JP 2013501297A
Authority
JP
Japan
Prior art keywords
thread
heterogeneous processor
processor core
core
allocating
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
JP2012523619A
Other languages
English (en)
Other versions
JP5615361B2 (ja
Inventor
ウルフ,アンドリュー
コンテ,トーマス,エム.
Original Assignee
エンパイア テクノロジー ディベロップメント エルエルシー
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 エンパイア テクノロジー ディベロップメント エルエルシー filed Critical エンパイア テクノロジー ディベロップメント エルエルシー
Publication of JP2013501297A publication Critical patent/JP2013501297A/ja
Application granted granted Critical
Publication of JP5615361B2 publication Critical patent/JP5615361B2/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]
    • 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/505Allocation 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 load
    • 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
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/508Monitor

Abstract

スレッドを異種プロセッサコア上に割り振るための技法について一般に述べる。例示的な技法は、スレッドを処理する異種プロセッサコアに関係するリアルタイムコンピューティングデータを監視すること、リアルタイムコンピューティングデータに少なくとも部分的に基づいてスレッドを異種プロセッサコアに割り振ること、および/または、割り振られたそれぞれの異種プロセッサコアによってスレッドを実行することを含むことができる。

Description

関連出願の相互参照
本出願は、参照によりその開示全体が本明細書に組み込まれる、2009年9月11日に出願された「THREAD SHIFT:ALLOCATING THREADS TO CORES」という名称の米国特許出願第12/557,971号に対する優先権を主張する。
本発明は、参照によりその開示全体が本明細書に組み込まれる、2009年4月21日に出願されたWolfe他による「THREAD MAPPING IN MULTI−CORE PROCESSORS」という名称の同時係属の米国特許出願第12/427,602号、2009年9月11日に出願されたWolfe他による「MAPPING OF COMPUTER THREADS ONTO HETEROGENEOUS RESOURCES」という名称の米国特許出願第12/557,985号、および/または、2009年9月11日に出願されたWolfe他による「CACHE PREFILL ON THREAD MIGRATION」という名称の同時係属の米国特許出願第12/557,864号に関するものとすることができる。
本開示は、マルチコアコンピュータシステムに関し、より詳細には、マルチコアコンピュータシステムに関係するリアルタイムコンピューティングデータに少なくとも部分的に基づいてスレッドのコア割振りを効率的に調整することに関する。
本開示は一般に、マルチコアコンピュータ処理に関する。
具体的には、本開示は、リアルタイムコンピューティングデータに基づいてスレッドのコア割振りを調整することに関する。
本開示の第1の態様では、一般に、スレッドを異種プロセッサコア上に割り振る方法について述べる。このような方法は、異種プロセッサコア(複数可)に関係するリアルタイムコンピューティングデータを監視すること、および、監視されたリアルタイムコンピューティングデータに少なくとも部分的に基づいてスレッドを異種プロセッサコア(複数可)に割り振ることを含むことができる。
第1の態様のいくつかの例では、この方法はまた、割り振られたそれぞれの異種プロセッサコアによってスレッドを実行することを含むことができる。いくつかの例では、リアルタイムコンピューティングデータを監視することは、スレッドがスレッド完了目標期限より遅れているのがいつかを決定することを含むことができる。いくつかの例では、スレッドを割り振ることは、スレッドがスレッド完了目標期限より遅れたかどうかに少なくとも部分的に基づくことができる。いくつかの例では、リアルタイムコンピューティングデータは、スレッドがスレッド完了目標期限より遅れていることを示す情報を含むことができる。
第1の態様のいくつかの例では、リアルタイムコンピューティングデータは、サイクル・パー・インストラクション(CPI:cycles per instruction)レートを含むことができる。いくつかの例では、CPIレートは、ある期間にわたって完了される命令ごとのクロックサイクルの総数の比率によって少なくとも部分的に決定することができる。
第1の態様のいくつかの例はまた、CPIレートをターゲットCPIレートと比較することを含むことができる。このような例では、スレッドを割り振ることは、CPIレートとターゲットCPIレートとの比較に少なくとも部分的に基づくことができる。いくつかの例では、スレッドを割り振ることは、スレッドを異種プロセッサコア(複数可)に動的に割り振ることを含むことができる。
第1の態様のいくつかの例では、この方法はまた、監視されたリアルタイムコンピューティングデータをスレッド割振りソフトウェアツールに送ること、および、監視されたリアルタイムコンピューティングデータに基づいてスレッド割振りツールソフトウェアによってスレッドを所定の異種プロセッサコアに割り振ることを含むことができる。
いくつかの例では、リアルタイムコンピューティングデータは、スレッドが所定の時点で第1の異種プロセッサコアから第2の異種プロセッサコアに割り振られるべきであることを命令するチェックポイント(複数可)を含むことができる。このような例では、スレッドを割り振ることは、チェックポイント(複数可)に少なくとも部分的に基づくことができる。
第1の態様のいくつかの例では、この方法はまた、複数のスレッドのそれぞれを異種プロセッサコア(複数可)に独立して割り振ることを含むことができる。このような例では、スレッドは複数のスレッドを含むことができ、各スレッドはリアルタイムコンピューティングデータに関連する。
本開示の第2の態様では、一般に、スレッドを第1の異種プロセッサコアから第2の異種プロセッサコアに割り振る方法について述べる。このような方法は、第1の異種プロセッサコアに関連するクロックサイクルの総数を監視すること、第1の異種プロセッサコアによって完了される命令の総数を監視すること、所定の期間にわたって完了される命令ごとのクロックサイクルの総数の比率に少なくとも部分的に基づいてCPI値を計算すること、および、CPI値に少なくとも部分的に基づいてスレッドを第2の異種プロセッサコアに割り振ることを含むことができる。
第2の態様のいくつかの例では、この方法はまた、スレッドを割り振る前に、CPI値を、スレッド割振り前のターゲットCPI値と比較することを含むことができる。このような例では、割り振ることは、CPI値がターゲットCPI値と等しいことに少なくとも部分的に基づくことができる。いくつかの例は、CPI値を、スレッド割振り前のターゲットCPI値と比較することを含むことができる。このような例では、割り振ることは、CPI値がターゲットCPI値を超えることに少なくとも部分的に基づくことができる。いくつかの例では、ターゲットCPI値は、スレッドに関連するソフトウェアアプリケーションの実行前および/または実行中に定義することができる。
第2の態様のいくつかの例では、リアルタイムコンピューティングデータは、スレッドが所定の時点で第1の異種プロセッサコアから第2の異種プロセッサコアに割り振られるべきであることを命令するチェックポイント(複数可)を含むことができる。このような例では、割り振ることは、チェックポイント(複数可)に関連する所定の時点に少なくとも部分的に基づくことができる。
本開示の第3の態様では、一般に、機械可読命令が記憶された記憶媒体などの物品について述べる。このような機械可読命令が処理ユニット(複数可)によって実行されたとき、機械可読命令は、コンピューティングプラットフォームが、スレッドを処理する第1の異種プロセッサコアに関係するリアルタイムコンピューティングデータを監視すること、および、監視されたリアルタイムコンピューティングデータに少なくとも部分的に基づいてスレッドを第2の異種プロセッサコアに割り振ることを、可能にすることができる。
第3の態様のいくつかの例では、機械可読命令はさらに、コンピューティングプラットフォームが、スレッドがスレッド完了目標期限より遅れているかどうか判定することを可能にすることができる。このような例では、スレッドを割り振ることは、スレッドがスレッド完了目標期限より遅れたかどうかに少なくとも部分的に基づくことができる。
第3の態様のいくつかの例では、この物品はまた、リアルタイムコンピューティングデータを受け取って、リアルタイムコンピューティングデータに少なくとも部分的に基づいてスレッドを所定の異種プロセッサコアに割り振るように構成されたスレッド割振りソフトウェアツールを備えることができる。いくつかの例では、機械可読命令はさらに、コンピューティングプラットフォームが、監視されたリアルタイムコンピューティングデータに少なくとも部分的に基づいてスレッドを第2の異種プロセッサコアに動的に割り振ることを可能にすることができる。
本開示の第4の態様は、一般に、マルチコアプロセッサについて述べる。このようなマルチコアプロセッサは、第1の異種プロセッサコアと第2の異種プロセッサコアとを備えることができる。マルチコアプロセッサは、スレッドを処理する第1の異種プロセッサコアに関係するリアルタイムコンピューティングデータを監視し、監視されたリアルタイムコンピューティングデータに少なくとも部分的に基づいてスレッドを第2の異種プロセッサコアに割り振り、スレッドが第2の異種プロセッサコアに割り振られた後で第2の異種プロセッサコアによってスレッドを実行するように構成することができる。
いくつかの例では、マルチコアプロセッサは異種ハードウェアを備えるように、第1のプロセッサコアは、第1の機能を有することができ、第2のプロセッサコアは、第1の機能とは異なる第2の機能を有することができる。いくつかの例では、第1の機能および第2の機能はそれぞれ、グラフィックスリソース、数学的計算リソース、命令セット、アクセラレータ、SSE、キャッシュサイズ、および/または分岐予測器に対応する。
以上の概要は、例示に過ぎず、決して限定的なものとはしない。図面および後続の詳細な記述を参照することにより、前述の例示的な態様、実施形態、および特徴に加えて、さらに他の態様、実施形態、および特徴が明らかになるであろう。
本開示の前述のおよび他の特徴は、添付の図面と共に後続の記述および添付の特許請求の範囲を読めばより完全に明らかになるであろう。これらの図面が本開示によるいくつかの実施形態のみを示し、したがってその範囲を限定するものと考えるべきでないことを理解した上で、添付の図面を使用して本開示をさらに具体的かつ詳細に述べる。
本開示の少なくともいくつかの実施形態により構成された、複数の異種コアを有する例示的なマルチコアシステムを示すブロック図である。 本開示の少なくともいくつかの実施形態により構成された、複数の異種プロセッサコアのうちの少なくとも1つにスレッドを割り振る例示的な方法を示すフローチャートである。 本開示の少なくともいくつかの実施形態により構成された、スレッドを第1の異種プロセッサコアから第2の異種プロセッサコアに割り振る例示的な方法を示すフローチャートである。 本開示の少なくともいくつかの実施形態により構成された、機械可読命令を含む記憶媒体を備える例示的な物品を示す概略図である。 本開示の少なくともいくつかの実施形態により構成された、スレッド割振り実装形態のために配置することのできる例示的なコンピューティングデバイスを示すブロック図である。
後続の詳細な記述では、本明細書の一部をなす添付の図面を参照する。図面では、文脈によって別段に定められない限り、同様の記号は通常、同様のコンポーネントを識別する。詳細な記述、図面、および特許請求の範囲で述べる例示的な実施形態は、限定的なものとはしない。ここに提示する主題の趣旨または範囲を逸脱することなく、他の実施形態を利用してもよく、他の変更を加えてもよい。本明細書に概説し図に示す本開示の態様を、様々な異なる構成で配置、代用、結合、および設計することができ、これらが全て明示的に企図され本開示の一部をなすことは、容易に理解されるであろう。
本開示は、とりわけ、マルチコアコンピュータシステムに関係する方法、システム、デバイス、および/または装置を対象とし、より詳細には、マルチコアコンピュータシステムに関係するリアルタイムコンピューティングファクタに少なくとも部分的に基づいてスレッドのコア割振りを効率的に調整することを対象とする。
本開示は、いくつかのコンピュータシステムが複数のプロセッサコアを備えることができることを企図する。異種ハードウェアを有するマルチコアシステムでは、いくつかのコアが、他のコアには利用可能でないある種のハードウェア機能を有することができる。いくつかの例示的なコンピュータシステムでは、少なくとも1つのスレッド(一連の命令とすることができ、他のスレッドと並列で実行することができる)を適切なコアに割り当てることができる。スレッド割振りを利用して、スレッドを適切なコアに関連付けることができる。いくつかの例示的なコンピュータシステムでは、スレッドの実行中に、スレッドをあるコアから別のコアに再割当てすることができる。本開示は一般にスレッドに言及するが、プロセスやタスクなどのマッピングを含めることも本開示の範囲内である。
例示的な一実施形態では、スレッドに関連するデータを使用して、いつスレッドを別のコアに割り振るべきか、および/または、どのコアにスレッドを割り振るべきかを決定することができる。例えば、システムは、スレッドに関係するリアルタイムコンピューティングデータを使用して、スレッドが目標期限より遅れているかどうか判定することができる。スレッドが目標期限より遅れている場合は、例えばスレッドをより速いコアに移行させることができる。
図1は、本開示の少なくともいくつかの実施形態により構成された、複数の異種コアを有する例示的なマルチコアシステムを示すブロック図である。例示的なマルチコアシステム100は、複数のプロセッサコア102、104、および/または106を備えることができる。例示的な一実施形態では、マルチコアシステム100は、異なる機能をそれぞれが有する1つまたは複数のコア102、104、および/または106を備えることができる。言い換えれば、マルチコアシステム100は、異種ハードウェアを備えることができる。例えば、あるコア102は、強化されたグラフィックスリソースを備えることができ、別のコア104は、強化された数学的計算リソースを備えることができ、別のコア106は大容量キャッシュを備えることができる。
図1に示すように、ソフトウェアアプリケーション108が、いくつかのスレッド(または、プロセッサおよび/もしくはタスク)を含むことができる。リアルタイムコンピューティングファクタに基づいてスレッドを適切なコアに効率的に割り振るために、ソフトウェアアプリケーション108に動作可能に接続されたスレッド割振りシステム112によって、本明細書に述べるスレッド割振り方法を実施することができる。いくつかの実施形態では、リアルタイムコンピューティング監視システム110もまたスレッド割振りシステム112に動作可能に結合させて、スレッド114、116、および/または118を1つまたは複数のコア102、104、および/または106に効率的に割り振るのを助けることができ、これについては以下により詳細に述べる。
図1の例示的な実施形態では、スレッド割振りシステム112は、スレッドを適切なコアに割り振ることができる。具体的には、スレッド割振りシステム112は、第1のスレッド(スレッド#1)114をコア102にマッピングすることができ、第2のスレッド(スレッド#2)116をコア102にマッピングすることができ、第3のスレッド(スレッド#3)118をコア106にマッピングすることができる。
いくつかの例示的な実施形態では、強化されたグラフィックス機能の利益を当初得ることができるスレッドを、強化されたグラフィックスリソースを有するコア上で当初実行することができる。強化された数学的計算機能の利益をスレッドが後で得ることができるという予想に少なくとも部分的に基づいて、スレッドに関係するデータを、強化された数学的計算を有するコアに送って、その実行を完了させることができる。
いくつかの例示的な実施形態では、コアは、異なる命令セット、異なるアクセラレータ(例えばDSP(ディジタル信号プロセッサ)および/もしくは異なるSSE(ストリーミングSIMD(単一命令、複数データ)エクステンション)、より大きい、かつ/もしくはより小さいキャッシュ(L1およびL2キャッシュなど)、異なる分岐予測器(プログラムの命令フロー中の条件付き分岐に進む可能性が高いか否かを決定するプロセッサ部分)、ならびに/またはその他を含むことができる。コア間のこれらおよび/または他の違いに少なくとも部分的に基づいて、異なるコアが、いくつかのタスクのために異なる機能を提供することができる。
いくつかの例示的な実施形態では、コアのハードウェア機能に少なくとも部分的に基づいて、スレッドを個々のコアに割り振る(例えばスレッド割振りシステム112を利用して)ことができる。例えば、大きいL1キャッシュ(メモリ)需要に関連するスレッドを、大きいL1ハードウェアを備えるコアに割り振ることができる。同様に、大きいSSE(命令セット)需要に関連するスレッドを、ネイティブSSEハードウェア実装を備えるコアに割り振ることができる。これらの例は限定ではなく、任意のハードウェア特性、命令セット、ならびに/または、コアおよび/もしくはスレッドの特性に少なくとも部分的に基づいてスレッドを割り振ることができることは理解されるであろう。さらに、本開示は、スレッドがハードウェア機能に基づいて割り振られない場合には代わりにソフトウェアエミュレーションを使用してスレッドを処理できることも企図するが、これはこのスレッドに対する処理時間を増加させる。
いくつかの例示的な実施形態では、スレッドを異なるコアに割り振るかどうか、および/または、いつそのような割振りを実施するかを決定することは、スレッドの事前実行に関係するデータを含むことのできる実行プロファイルの、少なくとも一部を評価することを含むことができる。いくつかの例示的な実施形態では、実行プロファイルは、参照により組み込まれる米国特許出願公開第2007/0050605号に開示されている、フリーズドライゴーストページ実行プロファイル生成方法(freeze−dried ghost page execution profile generation method)を使用して生成することができる。この方法は、シャドウプロセッサ、またはいくつかの実施形態ではシャドウコアを使用して、スレッドの少なくとも一部の実行を事前にシミュレートし、この実行に関係する性能統計および測定値を生成することができる。
いくつかの例示的な実施形態では、プログラムが実行されるときに情報を収集するようにプロセッサおよび/またはキャッシュを構成することができる。例えば、このような情報は、プログラムがどのキャッシュラインを参照するかを含むことができる。いくつかの例示的な実施形態では、キャッシュ使用に関するデータを評価して、どのスレッドを置換すべきか判定することができる(例えば、残りのスレッドプロセスのラインの数をカウントすることによって)。例示的な一実施形態では、性能カウンタは、実行中のスレッドのライン排除(eviction)を追跡するように構成することができ、かつ/または、この情報を使用して、どのタスクをフラッシュアウトしてより優先順位の高いタスクを開始できるかを決定することができる。性能カウンタはまた、タスク開始以後のライン排除を追跡するように構成することもできる。
例示的なマルチコアシステムは、本開示による使用に適合された性能カウンタを備えることができる。性能カウンタには、様々なコアを動作可能に結合することができる。性能カウンタは、例えば、コンピュータシステム内のハードウェア関連アクティビティの数を示すカウントを記憶するように構成することができる。性能カウンタによって収集されたデータを使用して、スレッド割振り(例えばあるコアから別のコアへの)を少なくとも部分的に決定することができる。
いくつかの例示的な実施形態は、特定のタスクに対するキャッシュフットプリントのサイズを考慮することができる。いくつかの例示的な実施形態では、ブルームフィルタを使用して、スレッドに対してキャッシュフットプリントがどれくらい大きいかを特徴付けることができる。例示的なブルームフィルタは、要素が集合のメンバであるかどうかテストするのに使用できる、空間効率のよい確率的データ構造とすることができる。いくつかの例示的なブルームフィルタを使用するとき、偽陽性はあり得るが、偽陰性はあり得ない。いくつかの例示的なブルームフィルタでは、要素を集合に追加することはできるが、除去することはできない(ただしこれはカウンティングフィルタによって対処することができる)。いくつかの例示的なブルームフィルタでは、要素が集合に追加されればされるほど、偽陽性の確率は高くなる。空のブルームフィルタは、全て0にセットされたmビットのビット配列とすることができる。加えて、k個の異なるハッシュ関数を定義することができ、各ハッシュ関数は、何らかの集合要素を一様ランダム分布によってm個の配列位置のうちの1つにマッピングまたはハッシュすることができる。要素を追加するには、要素をk個のハッシュ関数のそれぞれに供給してk個の配列位置を得ることができる。これらの位置におけるビットを1にセットすることができる。要素を照会する(例えば要素が集合中にあるかどうかテストする)には、要素をk個のハッシュ関数のそれぞれに供給してk個の配列位置を得ることができる。いくつかの例示的なブルームフィルタでは、これらの位置のうちのいずれかにおけるビットが0である場合は、要素は集合中にない。要素が集合中にあるとすれば、要素が挿入されたときにk個の配列位置における全てのビットが1にセットされたであろう。いくつかの例示的なブルームフィルタでは、k個の配列位置における全てのビットが1である場合は、要素が集合中にあるか、または他の要素の挿入中にビットが1にセットされたかのいずれかである。
いくつかの例示的な実施形態では、ブルームフィルタを使用して、キャッシュのどの位置が現在のスレッドによって使用されているかを追跡することができる。例えば、スレッドが初めてコア上にスケジュールされるとき、フィルタを空にすることができる。キャッシュラインがスレッドによって使用される度に、キャッシュラインをフィルタ集合に追加することができる。キャッシュデータ移行のコストを評価するために、一連のクエリを使用してスレッドフットプリントを推定することができる。いくつかの例示的な実施形態では、フィルタ中の「1」ビットの数の単純なポピュレーションカウントを使用して、スレッドのキャッシュフットプリントを推定することができる。いくつかの例示的な実施形態では、カウンティングブルームフィルタを使用することができる。カウンティングブルームフィルタでは、各フィルタ要素は、キャッシュラインがスレッドによって使用されるときにインクリメントでき、キャッシュラインが無効化されるときにデクリメントできる、カウンタとすることができる。
いくつかの例示的な実施形態では、スレッド移行のためのキャッシュデータをプリフェッチすることができる。プリフェッチは、当技術分野で知られているようにハードウェアプリフェッチャによって実施することができる。このようなプリフェッチャの1つが、参照により組み込まれる米国特許第7,318,125号に開示されている。すなわち、システムがスレッドを新しいコアに送る準備をしているとき、現在のコアからの参照を新しいコアに送って移行に備えることができる。このように、新しいコアを移行に備えて「ウォームアップ」させることができる。いくつかの実施形態では、移行させるスレッドに関係するデータのほぼ全てを、新しいコアによってプリフェッチすることができる。いくつかの他の例示的な実施形態では、移行させるスレッドに関係するデータの一部を、新しいコアによってプリフェッチすることができる。例えば、キャッシュミス、ヒット、および/またはライン排除をプリフェッチすることができる。いくつかの例示的な実施形態では、データを新しいコアにキャッシュする(それにより、最終的には必要とされないかもしれないデータで新しいコアを満たす)のではなく、データを例えばサイド/ストリームバッファにプリフェッチすることができる。
本明細書において、「キャッシュヒット」は、キャッシュされている参照データへの試みの成功、ならびに対応するデータを指すことができる。本明細書において、「キャッシュミス」は、キャッシュ内に見つからなかった参照データへの試み、ならびに対応するデータを指すことができる。本明細書において、「ライン排除」は、キャッシュ中に別のデータのための空間を作るなどの目的で、キャッシュされたラインをキャッシュから除去することを指すことができる。ライン排除はまた、書き戻し動作を含むこともでき、それにより、キャッシュ中の修正されたデータが、キャッシュから除去される前にメインメモリまたはより高いキャッシュレベルに書き込まれる。
図2は、本開示の少なくともいくつかの実施形態により構成された、複数の異種プロセッサコアのうちの少なくとも1つにスレッドを割り振る例示的な方法200を示すフローチャートである。例示的な方法200は、処理動作202および/または204のうちの1つまたは複数を含むことができる。処理は動作202で開始することができ、動作202は、1つまたは複数の異種プロセッサコアに関係するリアルタイムコンピューティングデータを監視することを含むことができ、各異種プロセッサコアはスレッドを処理するように適合される。処理は、動作202から動作204に移ることができる。動作204は、監視されたリアルタイムコンピューティングデータに少なくとも部分的に基づいて、スレッドを1つまたは複数の異種プロセッサコアに割り振ることを含むことができる。
いくつかの実施形態では、監視動作202は、スレッドがスレッド完了目標期限より遅れているかどうか判定することを含むことができ、割振り動作204は、スレッドがスレッド完了目標期限より遅れたかどうかに少なくとも部分的に基づくことができる。いくつかの他の実施形態では、リアルタイムコンピューティングデータは、スレッドがスレッド完了目標期限より遅れているという判定を含むことができる。
いくつかの実施形態では、監視動作202(別のプロセッサコア上の別個のハードウェアによって実施されてよい)は、スレッド処理と同時に行うことができ、あるいは断続的に行うことができる(すなわち、チェックポイントにおいてまたはスケジューリング中断において行われる)。スレッドは、任意の時点で、実行されていてよく、あるいはサスペンド(すなわち一時停止)されてよい。いくつかの例では、スレッドは、完了の期限を有することができ、別のコアに再割振りされるまで1つのコア上で実行されている可能性が高いものとすることができる。いくつかの実施形態では、リアルタイムデータを同時に評価することができる。いくつかの例では、スレッドをサスペンドすることができ、リアルタイムデータを評価することができ、スレッドを同じコアまたは異なるコアに再割振りすることができる。
例示的な一実施形態では、リアルタイムコンピューティングデータは、CPIレートを含むことができ、CPIレートは、所定の期間にわたって完了される命令ごとのクロックサイクルの総数の比率として少なくとも部分的に決定することができる。別の例示的な実施形態では、CPIレートをターゲットCPIレートと比較することができ、割振り動作204は、CPIレートとターゲットCPIレートとの比較に少なくとも部分的に基づくことができる。さらに別の例示的な実施形態では、割振り動作2045は動的に行うことができる。
さらに別の実施形態では、リアルタイムコンピューティングデータは、スレッドが所定の時点である異種プロセッサコアから別の異種プロセッサコアに割り振られるべきであることを命令する少なくとも1つのチェックポイントを含むことができ、割振り動作204は、少なくとも1つのチェックポイントに少なくとも部分的に基づくことができる。
別の実施形態では、方法200はさらに、リアルタイムコンピューティングデータをスレッド割振りソフトウェアツールに送ることを含むことができる。スレッド割振りソフトウェアツールは、スレッドを所定の異種プロセッサコアに割り振るように構成することができる。別の実施形態では、スレッドは複数のスレッドとすることができ、複数のスレッドのそれぞれはリアルタイムコンピューティングデータに関連することができ、各スレッドは独立して異種プロセッサコアに割り振ることができる。
図3は、本開示の少なくともいくつかの実施形態により構成された、スレッドを第1の異種プロセッサコアから第2の異種プロセッサコアに割り振る例示的な方法300を示すフローチャートである。例示的な方法300は、処理動作302、304、および/または306のうちの1つまたは複数を含むことができる。
処理は動作302で開始することができ、動作302は、スレッドを処理する第1の異種プロセッサコアに関連するクロックサイクルの総数、および/または、第1の異種プロセッサコアによって完了される命令の総数のうちの、1つまたは複数を監視することを含むことができる。処理は動作302から動作304に進むことができ、動作304は、ある期間にわたって完了される命令ごとのクロックサイクルの総数の比率に少なくとも部分的に基づいて、CPI(cycles per instruction)値を計算することを含むことができる。次いで処理は動作304から動作306に進むことができ、動作306は、CPI値に少なくとも部分的に基づいてスレッドを第2の異種プロセッサコアに割り振ることを含むことができる。
例示的な一実施形態では、方法はさらに、割振り動作308の前にCPI値をターゲットCPI値と比較することを含むことができ、割振り動作308は、CPI値がターゲットCPI値にほぼ等しいことに少なくとも部分的に基づくことができる。別の実施形態では、方法はさらに、割振り動作308の前にCPI値をターゲットCPI値と比較することを含むことができ、割振り動作308は、CPI値がターゲットCPI値を超えることに少なくとも部分的に基づくことができる。
別の実施形態では、ターゲットCPI値は、スレッドに関連するソフトウェアアプリケーションの実行前または実行中に定義することができる。
さらに別の実施形態では、リアルタイムコンピューティングデータは、スレッドを所定の時点である異種プロセッサコアから別の異種プロセッサコアに割り振るべきであることを命令するように構成された1つまたは複数のチェックポイントを含むことできる。このようにして、割振り動作308は、少なくとも1つのチェックポイントに関連する所定の時点に少なくとも部分的に基づくことができる。
図4は、本開示の少なくともいくつかの実施形態により構成された、機械可読命令を含む記憶媒体400を備える例示的な物品の概略図である。機械可読命令が1つまたは複数の処理ユニットによって実行されたとき、機械可読命令は、コンピューティングプラットフォームが、スレッドを処理する第1の異種プロセッサコアに関係するリアルタイムコンピューティングデータを監視すること(動作402)、リアルタイムコンピューティングデータに少なくとも部分的に基づいてスレッドを第2の異種プロセッサコアに割り振ること(動作404)を、動作可能にすることができる。
いくつかの実施形態では、機械可読命令はさらに、コンピューティングプラットフォームが、スレッドがスレッド完了目標期限より遅れているかどうか判定することを、動作可能にできるよう構成することができる。このようにして、割振り動作404は、スレッドがスレッド完了目標期限より遅れたかどうかに少なくとも部分的に基づくことができる。
別の実施形態では、この物品はさらに、リアルタイムコンピューティングデータを受け取るように構成されたスレッド割振りソフトウェアツールを備えることができる。スレッド割振りソフトウェアツールは、スレッドを所定の異種プロセッサコアに割り振るように構成することができる。
いくつかの実施形態では、機械可読命令はさらに、コンピューティングプラットフォームが、監視されたリアルタイムコンピューティングデータに少なくとも部分的に基づいてスレッドを別の異種プロセッサコアに動的に割り振ることを、動作可能にするよう構成することができる。
いくつかの実施形態では、マルチコアプロセッサが、第1の異種プロセッサコアおよび第2の異種プロセッサコアを備えることができる。このようなマルチコアプロセッサは、スレッドを処理する第1の異種プロセッサコアに関係するリアルタイムコンピューティングデータを監視し、監視されたリアルタイムコンピューティングデータに少なくとも部分的に基づいてスレッドを第2の異種プロセッサコアに割り振り、スレッドが第2の異種プロセッサコアに割り振られた後でスレッドを第2の異種プロセッサコアによって実行するように構成することができる。
図5は、本開示の少なくともいくつかの実施形態による、スレッド割振りのために配置された例示的なコンピューティングデバイス900を示すブロック図である。非常に基本的な構成901では、コンピューティングデバイス900は通常、1つまたは複数のプロセッサ910と、システムメモリ920とを備えることができる。プロセッサ910とシステムメモリ920との間の通信には、メモリバス930を使用することができる。
所望の構成に応じて、プロセッサ910は、マイクロプロセッサ(μP)、マイクロコントローラ(μC)、ディジタル信号プロセッサ(DSP)、またはこれらの任意の組合せを含めて(ただしこれらに限定されない)、任意のタイプのものとすることができる。プロセッサ910は、レベル1キャッシュ911およびレベル2キャッシュ912など1つまたは複数のレベルのキャッシングと、プロセッサコア913と、レジスタ914とを含むことができる。プロセッサコア913は、演算論理ユニット(ALU)、浮動小数点ユニット(FPU)、ディジタル信号処理コア(DSPコア)、またはこれらの任意の組合せを含むことができる。メモリコントローラ915をプロセッサ910と共に使用することもでき、あるいはいくつかの実装形態では、メモリコントローラ915は、プロセッサ910内部の部分とすることができる。
所望の構成に応じて、システムメモリ920は、揮発性メモリ(RAMなど)、不揮発性メモリ(ROMやフラッシュメモリなど)、またはこれらの任意の組合せを含めて(ただしこれらに限定されない)、任意のタイプのものとすることができる。システムメモリ920は通常、オペレーティングシステム921、1つまたは複数のアプリケーション922、およびプログラムデータ924を含む。アプリケーション922は、リアルタイムコンピューティングデータを監視して、監視されたリアルタイムコンピューティングデータに少なくとも部分的に基づいてスレッドを少なくとも1つの異種ハードウェアコンポーネントに割り振るように構成することのできる、スレッド割振りアルゴリズム923を含むことができる。プログラムデータ924は、スレッドを適切な異種ハードウェアコンポーネントに割り振るのに有用とすることのできる、スレッド割振りデータ925を含むことができる。いくつかの実施形態では、アプリケーション922は、本明細書に述べた様々な方法に従ってスレッドを効率的に割り振ることができるように、オペレーティングシステム921上でプログラムデータ924と共に動作するように構成することができる。この説明した基本構成は、図5では破線901内のコンポーネントによって示される。
コンピューティングデバイス900は、追加の特徴または機能を有することができ、基本構成901と任意の必要なデバイスおよびインタフェースとの間の通信を容易にするための追加のインタフェースを有することができる。例えば、バス/インタフェースコントローラ940を使用して、記憶装置インタフェースバス941を介した基本構成901と1つまたは複数のデータ記憶デバイス950との間の通信を容易にすることができる。データ記憶デバイス950は、取外し可能記憶デバイス951、取外し不可能記憶デバイス952、またはこれらの組合せとすることができる。取外し可能記憶装置デバイスおよび取外し不可能記憶デバイスの例は、少数を挙げると、フレキシブルディスクドライブやハードディスクドライブ(HDD)などの磁気ディスクデバイスと、コンパクトディスク(CD)ドライブやディジタル多用途ディスク(DVD)ドライブなどの光学ディスクドライブと、固体ドライブ(SSD)と、テープドライブとを含む。例示的なコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実現された、揮発性および不揮発性、取外し可能および取外し不可能な媒体を含むことができる。
システムメモリ920、取外し可能記憶装置951、および取外し不可能記憶装置952は全て、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、もしくは他のメモリ技術、CD−ROM、ディジタル多用途ディスク(DVD)、もしくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、または、所望の情報を記憶するのに使用できコンピューティングデバイス900によってアクセスできる他の任意の媒体を含むが、これらに限定されない。このようなコンピュータ記憶媒体はいずれも、デバイス900の一部とすることができる。
コンピューティングデバイス900はまた、バス/インタフェースコントローラ940を介した様々なインタフェースデバイス(例えば出力インタフェース、周辺インタフェース、および通信インタフェース)から基本構成901への通信を容易にするためのインタフェースバス942を備えることができる。例示的な出力デバイス960は、グラフィックス処理ユニット961およびオーディオ処理ユニット962を含み、これらは、1つまたは複数のA/Vポート963を介して表示装置やスピーカなど様々な外部デバイスに通信するように構成することができる。例示的な周辺インタフェース970は、シリアルインタフェースコントローラ971またはパラレルインタフェースコントローラ972を含み、これらは、1つまたは複数の入出力ポート973を介して、入力デバイス(例えばキーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス等)などの外部デバイスと、または他の周辺デバイス(例えばプリンタ、スキャナ等)と通信するように構成することができる。例示的な通信デバイス980は、ネットワークコントローラ981を含み、これは、1つまたは複数の通信ポート982を介しネットワーク通信を通じた1つまたは複数の他のコンピューティングデバイス990との通信を容易にするように構成することができる。通信接続は、通信媒体の一例である。通信媒体は通常、搬送波や他のトランスポート機構などの被変調データ信号の中のコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータによって具体化することができ、任意の情報送達媒体を含む。「被変調データ信号」は、信号中の情報が符号化されるようにしてその1つまたは複数の特性が設定または変更される信号とすることができる。限定ではなく例として、通信媒体は、有線ネットワークや直接有線接続などの有線媒体と、音響、無線周波数(RF)、赤外線(IR)などのワイヤレス媒体および他のワイヤレス媒体とを含むことができる。本明細書におけるコンピュータ可読媒体という用語は、記憶媒体と通信媒体の両方を含むことができる。
コンピューティングデバイス900は、セルホン、パーソナルデータアシスタント(PDA)、パーソナルメディアプレーヤデバイス、ワイヤレスウェブウォッチデバイス、パーソナルヘッドセットデバイス、特定用途向けデバイス、またはこれらの機能のいずれかを含むハイブリッドデバイスなど、小さいフォームファクタのポータブル(またはモバイル)電子デバイスの一部として実現することができる。コンピューティングデバイス900はまた、ラップトップコンピュータ構成と非ラップトップコンピュータ構成の両方を含めたパーソナルコンピュータとして実現することもできる。
本明細書に述べた主題は、異なる他のコンポーネント内に含まれるかまたはそれらに接続された、異なるコンポーネントを例示することがある。描写したこのようなアーキテクチャは例に過ぎず、実際には、同じ機能を達成する他の多くのアーキテクチャを実現することができることを理解されたい。概念的な意味では、同じ機能を達成するためのどんなコンポーネント構成も、所望の機能が達成されるように効果的に「関連付けられる(associated)」。したがって、特定の機能を達成するために結合された本明細書における任意の2つのコンポーネントは、アーキテクチャまたは媒介コンポーネントにかかわらず、所望の機能が達成されるように相互に「関連付けられる(associated with)」と見なすことができる。同様に、そのように関連付けられる任意の2つのコンポーネントはまた、所望の機能を達成するために相互に「動作可能に接続される」または「動作可能に結合される」と見なすことができ、そのように関連付けることのできる任意の2つのコンポーネントはまた、所望の機能を達成するために相互に「動作可能に結合可能」と見なすことができる。動作可能に結合可能の具体的な例は、物理的に対合可能な、かつ/もしくは物理的に対話するコンポーネント、および/または、ワイヤレスに対話可能な、かつ/もしくはワイヤレスに対話するコンポーネント、および/または、論理的に対話する、かつ/もしくは論理的に対話可能なコンポーネントを含むが、これらに限定されない。
本明細書におけるほぼどんな複数および/または単数の用語の使用に関しても、当業者なら、文脈および/または適用例に適切なように複数から単数へ、かつ/または単数から複数へ変換することができる。本明細書では、明確にするために、様々な単数/複数の置換を明白に示す場合がある。
一般に、本明細書において、特に添付の特許請求の範囲(例えば添付の特許請求の範囲の本文)において使用される用語が概して「オープンな」用語として意図されることは、当業者には理解されるであろう(例えば、用語「含む(備える)(including)」は「含む(備える)がそれに限定されない」と解釈すべきであり、用語「有する(having)」は「少なくとも有する」と解釈すべきであり、用語「含む(備える)(includes)」は「含む(備える)がそれに限定されない」と解釈すべきである等)。さらに、導入請求項記述の特定の数が意図される場合、そのような意図は請求項中で明示的に記述されることになり、そのような記述がない場合は、そのような意図がないことは、当業者には理解されるであろう。例えば、理解の助けとして、後続の特許請求の範囲は、請求項記述を導入するために導入句「少なくとも1つ」および「1つまたは複数」の使用を含む場合がある。しかし、このような句の使用は、同じ請求項が導入句「1つまたは複数」または「少なくとも1つ」、および「a」や「an」などの不定冠詞を含むときであっても、不定冠詞「a」または「an」による請求項記述の導入によって、そのような導入請求項記述を含むいずれか特定の請求項がそのような記述を1つだけ含むことに限定されることを意味すると解釈すべきではない(例えば、「a」および/または「an」は通常、「少なくとも1つ」または「1つまたは複数」を意味すると解釈すべきである)。同じことは、請求項記述を導入するのに使用される定冠詞の使用にも当てはまる。加えて、導入請求項記述の特定の数が明示的に記述される場合でも、そのような記述は通常、少なくとも記述された数を意味すると解釈すべきであることは、当業者なら認識するであろう(例えば、他の修飾語を伴わない「2つの記述」だけの記述は通常、少なくとも2つの記述か、2つまたは複数の記述を意味する)。さらに、「A、B、およびCのうちの少なくとも1つ、等」のような慣例が使用される場合、一般にこのような構造は、当業者がその慣例を理解することになる意味において意図される(例えば、「A、B、およびCのうちの少なくとも1つを有するシステム」は、Aのみを有する、Bのみを有する、Cのみを有する、AとBを共に有する、AとCを共に有する、BとCを共に有する、および/またはA、B、Cを共に有する、等のシステムを含むことになるが、これらに限定されない)。「A、B、またはCのうちの少なくとも1つ、等」のような慣例が使用される場合、一般にこのような構造は、当業者がその慣例を理解することになる意味において意図される(例えば、「A、B、またはCのうちの少なくとも1つを有するシステム」は、Aのみを有する、Bのみを有する、Cのみを有する、AとBを共に有する、AとCを共に有する、BとCを共に有する、および/またはA、B、Cを共に有する、等のシステムを含むことになるが、これらに限定されない)。さらに、2つまたはそれ以上の代替の用語を提示するほぼどんな離接語および/または句も、記述中であろうと特許請求の範囲中であろうと図面中であろうと、用語のうちの1つ、用語のうちのいずれか、または両方の用語を含む可能性を企図するものと理解すべきであることは、当業者には理解されるであろう。例えば、句「AまたはB」は、「A」または「B」または「AおよびB」の可能性を含むものと理解されることになる。
様々な態様および実施形態を本明細書に開示したが、他の態様および実施形態も当業者には明らかであろう。本明細書に開示した様々な態様および実施形態は、例示目的のものであって限定するものとはせず、真の範囲および趣旨は、後続の特許請求の範囲によって示される。
図1の例示的な実施形態では、スレッド割振りシステム112は、スレッドを適切なコアに割り振ることができる。具体的には、スレッド割振りシステム112は、第1のスレッド(スレッド#1)114をコア102にマッピングすることができ、第2のスレッド(スレッド#2)116をコア104にマッピングすることができ、第3のスレッド(スレッド#3)118をコア106にマッピングすることができる。
例示的な一実施形態では、リアルタイムコンピューティングデータは、CPIレートを含むことができ、CPIレートは、所定の期間にわたって完了される命令ごとのクロックサイクルの総数の比率として少なくとも部分的に決定することができる。別の例示的な実施形態では、CPIレートをターゲットCPIレートと比較することができ、割振り動作204は、CPIレートとターゲットCPIレートとの比較に少なくとも部分的に基づくことができる。さらに別の例示的な実施形態では、割振り動作204は動的に行うことができる。
例示的な一実施形態では、方法はさらに、割振り動作306の前にCPI値をターゲットCPI値と比較することを含むことができ、割振り動作306は、CPI値がターゲットCPI値にほぼ等しいことに少なくとも部分的に基づくことができる。別の実施形態では、方法はさらに、割振り動作306の前にCPI値をターゲットCPI値と比較することを含むことができ、割振り動作306は、CPI値がターゲットCPI値を超えることに少なくとも部分的に基づくことができる。
さらに別の実施形態では、リアルタイムコンピューティングデータは、スレッドを所定の時点である異種プロセッサコアから別の異種プロセッサコアに割り振るべきであることを命令するように構成された1つまたは複数のチェックポイントを含むことできる。このようにして、割振り動作306は、少なくとも1つのチェックポイントに関連する所定の時点に少なくとも部分的に基づくことができる。

Claims (24)

  1. スレッドを1つまたは複数の異種プロセッサコア上に割り振る方法であって、
    前記1つまたは複数の異種プロセッサコアに関係するリアルタイムコンピューティングデータを監視すること、および、
    前記監視されたリアルタイムコンピューティングデータに少なくとも部分的に基づいて前記スレッドを前記異種プロセッサコアのうちの1つまたは複数に割り振ることを含む方法。
  2. 前記割り振られたそれぞれの異種プロセッサコアによって前記スレッドを実行することをさらに含む、請求項1に記載の方法。
  3. リアルタイムコンピューティングデータを監視することが、前記スレッドがスレッド完了目標期限より遅れているのがいつかを決定することを含み、
    前記スレッドを割り振ることが、前記スレッドが前記スレッド完了目標期限より遅れたかどうかに少なくとも部分的に基づく、請求項1に記載の方法。
  4. 前記リアルタイムコンピューティングデータが、前記スレッドがスレッド完了目標期限より遅れていることを示す情報を含む、請求項1に記載の方法。
  5. 前記リアルタイムコンピューティングデータがサイクル・パー・インストラクション・(CPI)レートを含む、請求項1に記載の方法。
  6. 前記CPIレートを、ある期間にわたって完了される命令ごとのクロックサイクルの総数の比率によって少なくとも部分的に決定することをさらに含む、請求項5に記載の方法。
  7. 前記CPIレートをターゲットCPIレートと比較することをさらに含み、
    前記スレッドを割り振ることが、前記CPIレートと前記ターゲットCPIレートとの比較に少なくとも部分的に基づく、請求項6に記載の方法。
  8. 前記スレッドを割り振ることが、前記スレッドを前記異種プロセッサコアのうちの1つまたは複数に動的に割り振ることを含む、請求項1に記載の方法。
  9. 前記監視されたリアルタイムコンピューティングデータをスレッド割振りソフトウェアツールに送ること、および、
    前記監視されたリアルタイムコンピューティングデータに基づいて前記スレッド割振りツールソフトウェアによって前記スレッドを前記異種プロセッサコアのうちの所定の1つに割り振ることをさらに含む、請求項1に記載の方法。
  10. 前記リアルタイムコンピューティングデータが、前記スレッドが所定の時点で第1の異種プロセッサコアから第2の異種プロセッサコアに割り振られるべきであることを命令する1つまたは複数のチェックポイントを含み、
    前記スレッドを割り振ることが前記1つまたは複数のチェックポイントに少なくとも部分的に基づく、請求項1に記載の方法。
  11. 複数のスレッドのそれぞれを前記異種プロセッサコアのうちの1つまたは複数に独立して割り振ることをさらに含み、前記スレッドが複数のスレッドを含み、前記複数のスレッドのそれぞれが前記リアルタイムコンピューティングデータに関連する、請求項1に記載の方法。
  12. スレッドを第1の異種プロセッサコアから第2の異種プロセッサコアに割り振る方法であって、
    前記第1の異種プロセッサコアに関連するクロックサイクルの総数を監視すること、
    前記第1の異種プロセッサコアによって完了される命令の総数を監視すること、
    所定の期間にわたって完了される命令ごとのクロックサイクルの総数の比率に少なくとも部分的に基づいてCPI値を計算すること、および、
    前記CPI値に少なくとも部分的に基づいて前記スレッドを第2の異種プロセッサコアに割り振ることを含む方法。
  13. 前記スレッドを割り振る前に前記CPI値をターゲットCPI値と比較することをさらに含み、
    前記割り振る動作が、前記CPI値が前記ターゲットCPI値と等しいことに少なくとも部分的に基づく、請求項12に記載の方法。
  14. 前記スレッドを割り振る前に前記CPI値をターゲットCPI値と比較することをさらに含み、
    前記割り振る動作が、前記CPI値が前記ターゲットCPI値を超えることに少なくとも部分的に基づく、請求項12に記載の方法。
  15. 前記ターゲットCPI値が、前記スレッドに関連するソフトウェアアプリケーションの実行前に定義される、請求項12に記載の方法。
  16. 前記ターゲットCPI値が、前記スレッドに関連するソフトウェアアプリケーションの実行中に定義される、請求項12に記載の方法。
  17. 前記リアルタイムコンピューティングデータが、前記スレッドが所定の時点で第1の異種プロセッサコアから第2の異種プロセッサコアに割り振られるべきであることを命令する少なくとも1つのチェックポイントを含み、
    前記割り振る動作が、前記少なくとも1つのチェックポイントに関連する前記所定の時点に少なくとも部分的に基づく、請求項12に記載の方法。
  18. 機械可読命令が記憶された記憶媒体を含む物品であって、前記機械可読命令が1つまたは複数の処理ユニットによって実行されたとき、前記機械可読命令は、コンピューティングプラットフォームが、
    スレッドを処理する第1の異種プロセッサコアに関係するリアルタイムコンピューティングデータを監視すること、および、
    前記監視されたリアルタイムコンピューティングデータに少なくとも部分的に基づいて前記スレッドを第2の異種プロセッサコアに割り振ることを、動作可能にする、物品。
  19. 前記機械可読命令はさらに、コンピューティングプラットフォームが、前記スレッドがスレッド完了目標期限より遅れているかどうか判定することを、動作可能にし、
    前記スレッドを割り振ることが、前記スレッドが前記スレッド完了目標期限より遅れたかどうかに少なくとも部分的に基づく、請求項18に記載の物品。
  20. 前記リアルタイムコンピューティングデータを受け取るように構成されたスレッド割振りソフトウェアツールをさらに備え、前記スレッド割振りソフトウェアツールが、前記リアルタイムコンピューティングデータに少なくとも部分的に基づいて前記スレッドを前記異種プロセッサコアのうちの所定の1つに割り振るように構成された、請求項18に記載の物品。
  21. 前記機械可読命令はさらに、コンピューティングプラットフォームが、前記監視されたリアルタイムコンピューティングデータに少なくとも部分的に基づいて前記スレッドを第2の異種プロセッサコアに動的に割り振ることを、動作可能にする、請求項18に記載の物品。
  22. 第1の異種プロセッサコアと、
    第2の異種プロセッサコアとを備えるマルチコアプロセッサであって、
    スレッドを処理する前記第1の異種プロセッサコアに関係するリアルタイムコンピューティングデータを監視し、前記監視されたリアルタイムコンピューティングデータに少なくとも部分的に基づいて前記スレッドを前記第2の異種プロセッサコアに割り振り、前記スレッドが前記第2の異種プロセッサコアに割り振られた後で前記第2の異種プロセッサコアによって前記スレッドを実行するように構成されたマルチコアプロセッサ。
  23. 前記マルチコアプロセッサが異種ハードウェアを備えるように、前記第1の異種プロセッサコアが第1の機能を有し、前記第2の異種プロセッサコアが、前記第1の機能とは異なる第2の機能を有する、請求項22に記載のマルチコアプロセッサ。
  24. 前記第1の機能および前記第2の機能がそれぞれ、グラフィックスリソース、数学的計算リソース、命令セット、アクセラレータ、SSE、キャッシュサイズ、および/または分岐予測器のうちの少なくとも1つに対応する、請求項23に記載のマルチコアプロセッサ。
JP2012523619A 2009-09-11 2010-06-04 スレッドシフト:コアへのスレッド割振り Active JP5615361B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/557,971 US8881157B2 (en) 2009-09-11 2009-09-11 Allocating threads to cores based on threads falling behind thread completion target deadline
US12/557,971 2009-09-11
PCT/US2010/037496 WO2011031356A1 (en) 2009-09-11 2010-06-04 Thread shift: allocating threads to cores

Publications (2)

Publication Number Publication Date
JP2013501297A true JP2013501297A (ja) 2013-01-10
JP5615361B2 JP5615361B2 (ja) 2014-10-29

Family

ID=43731741

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012523619A Active JP5615361B2 (ja) 2009-09-11 2010-06-04 スレッドシフト:コアへのスレッド割振り

Country Status (6)

Country Link
US (1) US8881157B2 (ja)
JP (1) JP5615361B2 (ja)
KR (1) KR101362017B1 (ja)
CN (1) CN102473113B (ja)
GB (1) GB2485683B (ja)
WO (1) WO2011031356A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021015614A (ja) * 2017-03-01 2021-02-12 アイングラ アイアイオーティー ソシエダッド リミターダ 産業設備における機械の監視及び制御のための装置、及び複数のこのような装置を含むシステム

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2626786B1 (en) * 2010-10-05 2016-04-20 Fujitsu Limited Multicore processor system, method of monitoring control, and monitoring control program
US8751720B2 (en) * 2010-11-08 2014-06-10 Moon J. Kim Computationally-networked unified data bus
US8832414B2 (en) 2011-03-24 2014-09-09 Empire Technology Development Llc Dynamically determining the profitability of direct fetching in a multicore architecture
US8782645B2 (en) * 2011-05-11 2014-07-15 Advanced Micro Devices, Inc. Automatic load balancing for heterogeneous cores
US8683468B2 (en) * 2011-05-16 2014-03-25 Advanced Micro Devices, Inc. Automatic kernel migration for heterogeneous cores
US8990830B2 (en) * 2011-07-19 2015-03-24 International Business Machines Corporation Thread management in parallel processes
US8875146B2 (en) 2011-08-01 2014-10-28 Honeywell International Inc. Systems and methods for bounding processing times on multiple processing units
US8621473B2 (en) 2011-08-01 2013-12-31 Honeywell International Inc. Constrained rate monotonic analysis and scheduling
US8887160B2 (en) * 2011-11-21 2014-11-11 Hewlett-Packard Development Company, L.P. Mapping tasks to execution threads
KR101869325B1 (ko) * 2011-12-13 2018-06-21 한국전자통신연구원 이종 멀티코어 환경에서의 코어 배정 장치
US9207977B2 (en) 2012-02-06 2015-12-08 Honeywell International Inc. Systems and methods for task grouping on multi-processors
EP2828748A4 (en) * 2012-03-21 2016-01-13 Nokia Technologies Oy METHOD IN A PROCESSOR, DEVICE AND COMPUTER PROGRAM PRODUCT
US9003218B2 (en) * 2012-05-21 2015-04-07 International Business Machines Corporation Power shifting in multicore platforms by varying SMT levels
US9141361B2 (en) * 2012-09-30 2015-09-22 Intel Corporation Method and apparatus for performance efficient ISA virtualization using dynamic partial binary translation
US9612868B2 (en) 2012-10-31 2017-04-04 Honeywell International Inc. Systems and methods generating inter-group and intra-group execution schedules for instruction entity allocation and scheduling on multi-processors
US9317331B1 (en) * 2012-10-31 2016-04-19 The Mathworks, Inc. Interactive scheduling of an application on a multi-core target processor from a co-simulation design environment
US9940170B2 (en) * 2012-12-24 2018-04-10 Empire Technology Development Llc Dynamically managing distribution of data and computation across cores for sequential programs
RU2630753C2 (ru) * 2012-12-26 2017-09-12 Хуавэй Текнолоджиз Ко., Лтд. Способ обработки для многоядерного процессора и многоядерный процессор
CN103012146A (zh) * 2013-01-10 2013-04-03 厦门大学 从糖的醇解液中萃取乙酰丙酸乙酯的方法
KR101553649B1 (ko) * 2013-05-13 2015-09-16 삼성전자 주식회사 멀티 코어 장치 및 멀티 코어 장치의 작업 스케줄링 방법
CN106030805A (zh) 2013-08-15 2016-10-12 英派尔科技开发有限公司 用基于石墨烯的晶体管对处理器进行良率优化
US10095658B2 (en) 2013-08-15 2018-10-09 Empire Technology Development Llc Heterogeneous multicore processor with graphene-based transistors
KR101684677B1 (ko) * 2013-12-26 2016-12-09 한국전자통신연구원 멀티코어 시스템의 시스템 성능 최적화 장치 및 방법
EP3111333B1 (en) 2014-02-27 2022-03-30 Mercury Kingdom Assets Limited Thread and data assignment in multi-core processors
KR102197874B1 (ko) 2014-09-01 2021-01-05 삼성전자주식회사 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 쓰레드 스케줄링 방법
US20190146837A1 (en) * 2014-09-29 2019-05-16 Samsung Electronics Co., Ltd. Distributed real-time computing framework using in-storage processing
US9348644B2 (en) * 2014-10-08 2016-05-24 International Business Machines Corporation Application-level dispatcher control of application-level pseudo threads and operating system threads
KR102352756B1 (ko) 2015-04-29 2022-01-17 삼성전자주식회사 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치
US10402072B2 (en) * 2015-05-04 2019-09-03 Graphisoft Se Predictive background updating
KR102384345B1 (ko) * 2015-05-15 2022-04-19 삼성전자 주식회사 스레드를 실행하는 방법, 프로세서 및 기록매체
KR102509988B1 (ko) * 2015-12-15 2023-03-14 삼성전자주식회사 커넥션 기반 로드 밸런싱을 위한 저장 시스템 및 방법
US10223171B2 (en) * 2016-03-25 2019-03-05 Intel Corporation Mitigating load imbalances through hierarchical performance balancing
US10334334B2 (en) 2016-07-22 2019-06-25 Intel Corporation Storage sled and techniques for a data center
US11513805B2 (en) 2016-08-19 2022-11-29 Wisconsin Alumni Research Foundation Computer architecture with synergistic heterogeneous processors
KR101852610B1 (ko) * 2017-11-16 2018-04-27 (주)시큐레이어 Ai 학습 기반 실시간 분석 시스템을 이용한 자원 사용 방법 및 이를 사용한 매니지먼트 서버
EP3676704A4 (en) * 2017-12-26 2020-09-30 Samsung Electronics Co., Ltd. METHOD AND SYSTEM FOR PREDICTING OPTIMUM NUMBER OF WIRES FOR AN APPLICATION PERFORMING ON AN ELECTRONIC DEVICE
CN110737358A (zh) * 2019-09-02 2020-01-31 Oppo(重庆)智能科技有限公司 一种线程绑定方法及终端、存储介质
US11392418B2 (en) 2020-02-21 2022-07-19 International Business Machines Corporation Adaptive pacing setting for workload execution
US11531563B2 (en) * 2020-06-26 2022-12-20 Intel Corporation Technology for optimizing hybrid processor utilization

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628323A (ja) * 1992-07-06 1994-02-04 Nippon Telegr & Teleph Corp <Ntt> プロセス実行制御方法
JP2006235907A (ja) * 2005-02-24 2006-09-07 Renesas Technology Corp 情報処理装置およびオペレーティングシステム
JP2007108944A (ja) * 2005-10-12 2007-04-26 Renesas Technology Corp 半導体集積回路装置
JP2008090546A (ja) * 2006-09-29 2008-04-17 Toshiba Corp マルチプロセッサシステム
JP2008123205A (ja) * 2006-11-10 2008-05-29 Internatl Business Mach Corp <Ibm> ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム
US20090217277A1 (en) * 2008-02-27 2009-08-27 Sun Microsystems, Inc. Use of cpi power management in computer systems

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0594871A1 (en) 1992-10-09 1994-05-04 Fujitsu Limited Multi-media scheduling system
US5651124A (en) * 1995-02-14 1997-07-22 Hal Computer Systems, Inc. Processor structure and method for aggressively scheduling long latency instructions including load/store instructions while maintaining precise state
US5968115A (en) 1997-02-03 1999-10-19 Complementary Systems, Inc. Complementary concurrent cooperative multi-processing multi-tasking processing system (C3M2)
US6243788B1 (en) 1998-06-17 2001-06-05 International Business Machines Corporation Cache architecture to enable accurate cache sensitivity
GB0015276D0 (en) 2000-06-23 2000-08-16 Smith Neale B Coherence free cache
GB2372847B (en) 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
JP2003006175A (ja) 2001-06-26 2003-01-10 Hitachi Ltd プロセス実行時のプログラム動作特性に基づくプロセススケジューリング方法及びこれを用いたプログラム及びデータ処理装置
JP3964821B2 (ja) 2003-04-21 2007-08-22 株式会社東芝 プロセッサ、キャッシュシステム及びキャッシュメモリ
US7093147B2 (en) 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
JP2005031771A (ja) 2003-07-08 2005-02-03 Hitachi Ltd ジョブスケジューリング管理方法及びシステム並びにプログラム
US7353516B2 (en) 2003-08-14 2008-04-01 Nvidia Corporation Data flow control for adaptive integrated circuitry
US7614056B1 (en) 2003-09-12 2009-11-03 Sun Microsystems, Inc. Processor specific dispatching in a heterogeneous configuration
US7360218B2 (en) 2003-09-25 2008-04-15 International Business Machines Corporation System and method for scheduling compatible threads in a simultaneous multi-threading processor using cycle per instruction value occurred during identified time interval
US7461376B2 (en) 2003-11-18 2008-12-02 Unisys Corporation Dynamic resource management system and method for multiprocessor systems
US7360102B2 (en) 2004-03-29 2008-04-15 Sony Computer Entertainment Inc. Methods and apparatus for achieving thermal management using processor manipulation
GB2415060B (en) * 2004-04-16 2007-02-14 Imagination Tech Ltd Dynamic load balancing
US7318125B2 (en) 2004-05-20 2008-01-08 International Business Machines Corporation Runtime selective control of hardware prefetch mechanism
JP2006028323A (ja) 2004-07-15 2006-02-02 Toyobo Co Ltd ポリマー組成物の製造方法
US20060037017A1 (en) 2004-08-12 2006-02-16 International Business Machines Corporation System, apparatus and method of reducing adverse performance impact due to migration of processes from one CPU to another
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US7526661B2 (en) 2004-12-02 2009-04-28 Intel Corporation Performance state-based thread management
US20060168571A1 (en) 2005-01-27 2006-07-27 International Business Machines Corporation System and method for optimized task scheduling in a heterogeneous data processing system
JP2007021045A (ja) 2005-07-20 2007-02-01 Topcon Corp 収差補正装置、光学装置及び眼底観察装置
US20070033592A1 (en) 2005-08-04 2007-02-08 International Business Machines Corporation Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors
US20070050605A1 (en) 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US7412353B2 (en) 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
JP4523921B2 (ja) 2006-02-24 2010-08-11 三菱電機株式会社 計算機リソース動的制御装置
US7434002B1 (en) 2006-04-24 2008-10-07 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
JP4936517B2 (ja) 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
US20070294693A1 (en) 2006-06-16 2007-12-20 Microsoft Corporation Scheduling thread execution among a plurality of processors based on evaluation of memory access data
US8006077B2 (en) 2007-03-29 2011-08-23 Intel Corporation Thread migration control based on prediction of migration overhead
US8230425B2 (en) 2007-07-30 2012-07-24 International Business Machines Corporation Assigning tasks to processors in heterogeneous multiprocessors
US20090089792A1 (en) * 2007-09-27 2009-04-02 Sun Microsystems, Inc. Method and system for managing thermal asymmetries in a multi-core processor
US7930574B2 (en) 2007-12-31 2011-04-19 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US7890298B2 (en) * 2008-06-12 2011-02-15 Oracle America, Inc. Managing the performance of a computer system
US8561073B2 (en) 2008-09-19 2013-10-15 Microsoft Corporation Managing thread affinity on multi-core processors
JP5526567B2 (ja) 2009-03-10 2014-06-18 日産自動車株式会社 溶接接合部材
US9189282B2 (en) * 2009-04-21 2015-11-17 Empire Technology Development Llc Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter
US8683476B2 (en) * 2009-06-30 2014-03-25 Oracle America, Inc. Method and system for event-based management of hardware resources using a power state of the hardware resources
JP2011031134A (ja) 2009-07-30 2011-02-17 Toto Ltd 光触媒塗装体、および光触媒コーティング液

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628323A (ja) * 1992-07-06 1994-02-04 Nippon Telegr & Teleph Corp <Ntt> プロセス実行制御方法
JP2006235907A (ja) * 2005-02-24 2006-09-07 Renesas Technology Corp 情報処理装置およびオペレーティングシステム
JP2007108944A (ja) * 2005-10-12 2007-04-26 Renesas Technology Corp 半導体集積回路装置
JP2008090546A (ja) * 2006-09-29 2008-04-17 Toshiba Corp マルチプロセッサシステム
JP2008123205A (ja) * 2006-11-10 2008-05-29 Internatl Business Mach Corp <Ibm> ジョブ実行方法、ジョブ実行システム及びジョブ実行プログラム
US20090217277A1 (en) * 2008-02-27 2009-08-27 Sun Microsystems, Inc. Use of cpi power management in computer systems

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021015614A (ja) * 2017-03-01 2021-02-12 アイングラ アイアイオーティー ソシエダッド リミターダ 産業設備における機械の監視及び制御のための装置、及び複数のこのような装置を含むシステム
JP7125457B2 (ja) 2017-03-01 2022-08-24 アイングラ アイアイオーティー ソシエダッド リミターダ 産業用アプリケーション機械を監視及び制御するためのシステム、装置、及び方法

Also Published As

Publication number Publication date
CN102473113B (zh) 2015-06-10
GB2485683B (en) 2017-10-18
KR101362017B1 (ko) 2014-02-11
US20110067029A1 (en) 2011-03-17
US8881157B2 (en) 2014-11-04
WO2011031356A1 (en) 2011-03-17
GB2485683A (en) 2012-05-23
CN102473113A (zh) 2012-05-23
JP5615361B2 (ja) 2014-10-29
KR20120017471A (ko) 2012-02-28
GB201121591D0 (en) 2012-01-25

Similar Documents

Publication Publication Date Title
JP5615361B2 (ja) スレッドシフト:コアへのスレッド割振り
JP5487307B2 (ja) 異種のリソース上へのコンピュータスレッドのマッピング
KR101361928B1 (ko) 스레드 이송 시의 캐시 프리필링
TWI564719B (zh) 具有多個資料預取器的處理器、所述處理器的操作方法及所述處理器操作的電腦程式產品
US10268600B2 (en) System, apparatus and method for prefetch-aware replacement in a cache memory hierarchy of a processor
US9442861B2 (en) System and method for out-of-order prefetch instructions in an in-order pipeline
US8671293B2 (en) Multi-core system energy consumption optimization
US10776270B2 (en) Memory-efficient last level cache architecture
TW201631478A (zh) 根據記憶體存取類型的效益並配合積極層級的預取
US10108548B2 (en) Processors and methods for cache sparing stores
CN106575220B (zh) 多个经集群极长指令字处理核心
US20120233393A1 (en) Scheduling Workloads Based On Cache Asymmetry
EP3500936A1 (en) Tracking stores and loads by bypassing load store units
US8490071B2 (en) Shared prefetching to reduce execution skew in multi-threaded systems
US9880849B2 (en) Allocation of load instruction(s) to a queue buffer in a processor system based on prediction of an instruction pipeline hazard
US20190286567A1 (en) System, Apparatus And Method For Adaptively Buffering Write Data In A Cache Memory
JP6038955B2 (ja) 高時間的参照局所性のデータフィルバッファの排除防止
US10846095B2 (en) System and method for processing a load micro-operation by allocating an address generation scheduler queue entry without allocating a load queue entry
US20230418688A1 (en) Energy efficient computing workload placement
CN111340678A (zh) 一种数据缓存系统、图形处理器及数据缓存方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130705

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131004

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20140203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140529

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140605

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140909

R150 Certificate of patent or registration of utility model

Ref document number: 5615361

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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