JP2023505459A - 異種プロセッサ間のタスク遷移の方法 - Google Patents

異種プロセッサ間のタスク遷移の方法 Download PDF

Info

Publication number
JP2023505459A
JP2023505459A JP2022533086A JP2022533086A JP2023505459A JP 2023505459 A JP2023505459 A JP 2023505459A JP 2022533086 A JP2022533086 A JP 2022533086A JP 2022533086 A JP2022533086 A JP 2022533086A JP 2023505459 A JP2023505459 A JP 2023505459A
Authority
JP
Japan
Prior art keywords
processor
threshold
task
memory
less powerful
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022533086A
Other languages
English (en)
Inventor
ジェイ. ブラノーバー アレクサンダー
チェン ベンジャミン
エイチ. メドニック エリオット
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2023505459A publication Critical patent/JP2023505459A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3228Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/329Power saving characterised by the action undertaken by task scheduling
    • 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/3293Power saving characterised by the action undertaken by switching to a less power-consuming processor, e.g. sub-CPU
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5094Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/501Performance criteria
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5022Workload threshold
    • 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
    • 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

Abstract

方法、システム及び装置は、パフォーマンスメトリックを、関連する閾値と比較するか、他の指標を使用することによって、1つ以上のタスクを第1のプロセッサから第2のプロセッサに再配置する必要があると判定する。1つ以上のタスクを第1のプロセッサから第2のプロセッサに再配置するために、第1のプロセッサがストールされ、第1のプロセッサからの状態情報が第2のプロセッサにコピーされる。第2のプロセッサは、状態情報を使用して、第1のプロセッサの代わりに着信タスクを処理する。【選択図】図8

Description

(関連出願の相互参照)
本願は、2019年12月10日に出願された米国特許出願第16/709,404号の利益を主張するものであり、その内容は、参照によって本明細書に援用される。
従来のコンピュータシステムは、システム内の異なるプロセッサ間でタスクを移動するために、オペレーティングシステムレベル及び他の高レベルのソフトウェアの決定に依存している。これらの従来のソリューションは、パフォーマンスの非効率性と追加の電力消費の点でかなりのオーバーヘッドを伴う。よりきめ細かい追跡と意思決定を使用して異なるプロセッサ間でタスクを移動することにより、消費電力あたりのパフォーマンスが最適化される。
添付の図面と併せて例として与えられた以下の説明から、より詳細な理解を得ることができる。
開示の1つ以上の特徴を実装することができる、例示的なデバイスのブロック図である。 追加の詳細を示す、図1のデバイスのブロック図である。 入力タスクを効率的に処理するためのシステムの例を示すブロック図である。 入力タスクを効率的に処理するためのシステムの別の例を示すブロック図である。 入力タスクを効率的に処理するためのシステムの別の例を示すブロック図である。 第1のプロセッサから第2のプロセッサにタスクを再配置する方法の例を示すフローチャートである。 第1のプロセッサから第2のプロセッサにタスクを再配置する方法の別の例を示すフローチャートである。 第1のプロセッサから第2のプロセッサに1つ以上タスクを再配置する方法の別の例を示すフローチャートである。
以下でさらに詳しく説明するように、実行中のワットあたりのパフォーマンス(performance-per-watt)の細かなスケールでの最適化は、異なるプロセッサ間でタスクをタイムリーに移動することによって実現される。一例では、第1のプロセッサは、比較的高性能でなく、より電力効率の高いプロセッサであり、第2のプロセッサは、比較的高性能でより電力効率の低いプロセッサである。追加的又は代替的に、比較的高性能でないプロセッサは、より消費電力が少ないプロセッサと見なすことができ、比較的高性能なプロセッサは、より電力消費が多いプロセッサと見なすことができる。別の例では、第1のプロセッサと第2のプロセッサは異種であり、すなわち、中央処理ユニット(CPU)とグラフィックス処理ユニット(GPU)である。適用可能な条件を特定し、タスクを次善のプロセッサからより最適なプロセッサに再配置することにより、使用電力量あたりのパフォーマンスが改善され、全体的な処理パフォーマンスが向上する。
一例では、コンピュータで実装されるタスクを比較的高性能でないプロセッサから比較的高性能なプロセッサに再配置する方法は、比較的高性能でないプロセッサによるタスクの実行に関連付けられた1つ以上のメトリックを監視することを含む。さらに、この方法は、1つ以上のメトリックのうち少なくとも1つのメトリックを閾値と比較することを含む。さらに、この方法は、タスクを比較的高性能なプロセッサに選択的に再配置し、比較に基づいて比較的高性能なプロセッサ上でタスクを実行することを含む。
別の例では、少なくとも1つのメトリックは、比較的高性能でないプロセッサのコア使用率メトリックを含む。別の例では、コア使用率メトリックは、高性能でないプロセッサが最大速度で実行されている持続時間の指標を含み、閾値は、持続時間閾値の指標である。タスクは、比較的高性能でないプロセッサが最大速度で実行されている持続時間の指標が持続時間閾値よりも大きいという条件で、比較的高性能なプロセッサに再配置される。
別の例では、少なくとも1つのメトリックは、比較的高性能でないプロセッサと関連付けられたメモリ使用率メトリックを含む。別の例では、メモリ使用率メトリックは、メモリが最大メモリパフォーマンス状態で動作している持続時間の指標を含み、閾値は、持続時間閾値の指標である。タスクは、比較的高性能でないプロセッサが最大速度で実行されている持続時間の指標が持続時間閾値よりも大きいという条件で、比較的高性能なプロセッサに再配置される。
別の例では、1つ以上のメトリックのうち少なくとも1つのメトリックは、ダイレクトメモリアクセス(DMA)データレートを含む。
別の例では、コンピュータで実施されるタスクを比較的高性能のプロセッサから比較的高性能でないプロセッサに再配置する方法は、比較的高性能のプロセッサによるタスクの実行に関連付けられた1つ以上のメトリックを監視することを含む。さらに、この方法は、1つ以上のメトリックのうち少なくとも1つのメトリックを閾値と比較し、タスクを比較的高性能でないプロセッサに選択的に再配置し、比較に基づいて比較的高性能でないプロセッサ上でタスクを実行することを含む。
別の例では、少なくとも1つのメトリックは、比較的高性能なプロセッサのシングルコアが使用される持続時間の指標を含み、閾値は、持続時間閾値の指標である。タスクは、比較的高性能なプロセッサのシングルコアが使用されている持続時間の指標が持続時間閾値よりも小さいという条件で、比較的高性能でないプロセッサに再配置される。
別の例では、少なくとも1つのメトリックは、比較的高性能のプロセッサのコア使用率メトリックを含む。比較的高性能なプロセッサのコア使用率メトリックには、ある時間間隔にわたる平均使用率が含まれ、閾値は使用率閾値の指標である。タスクは、ある時間間隔にわたる平均使用率が使用率閾値よりも小さいという条件で、比較的高性能でないプロセッサに再配置される。
別の例では、比較的高性能なプロセッサのコア使用率メトリックは、アイドル状態の平均存在時間を含み、閾値はアイドル状態の閾値の指標であり、タスクは、アイドル状態の平均存在時間がアイドル状態の閾値を超えているという条件で、比較的高性能でないプロセッサに再配置される。
別の例では、少なくとも1つのメトリックは、比較的高性能でないプロセッサに関連付けられたメモリ使用率メトリックを含み、閾値はメモリ使用率閾値である。タスクは、メモリ使用率メトリックがメモリ使用率閾値よりも小さいという条件で、比較的高性能でないプロセッサに再配置される。
別の例では、第1のプロセッサから第2のプロセッサへのタスク再配置の方法は、第1のプロセッサをアイドル状態又はストール状態にすることを含む。さらに、この方法は、第1のプロセッサのアーキテクチャ状態を第1のメモリ位置に保存し、アーキテクチャ状態を第2のメモリ位置にコピーすることを含む。さらに、この方法は、割り込みを第2のプロセッサにリダイレクトし、第2のプロセッサによって、第2のメモリ位置からアーキテクチャ状態を復元することを含む。さらに、この方法は、第2のプロセッサによって割り込みサービスルーチン(ISR)アドレスをフェッチすることと、第2のプロセッサによって、ISRアドレスを使用してISRを処理することと、第1のプロセッサがアイドル状態又はストール状態のままである間に第2のプロセッサによって1つ以上の後続のタスクを実行することと、を含む。
別の例では、第1のメモリ位置は第1のプロセッサに関連付けられ、第2のメモリ位置は第2のプロセッサに関連付けられている。別の例では、アーキテクチャ状態には、1つ以上のレジスタ設定及び1つ以上のフラグ設定が含まれる。別の例では、この方法は、アーキテクチャ状態を調整することをさらに含む。別の例では、第1のプロセッサの着信割り込みは、アーキテクチャ状態が第2のメモリ位置にコピーされる後までストールされ、割り込みを第2のプロセッサにリダイレクトできるようになる。
別の例では、ISRアドレスは、ローカル高度プログラミング割り込みコントローラ(local advanced programming interrupt controller、LAPIC)からフェッチされる。
別の例では、第1のプロセッサは比較的高性能なプロセッサであり、第2のプロセッサは比較的高性能でないプロセッサである。さらに、この方法は、比較的高性能なプロセッサが十分に活用されていないことを判定し、その判定に基づいて1つ以上のタスクを第2のプロセッサに再配置することを含む。
別の例では、第1のプロセッサは比較的高性能でないプロセッサであり、第2のプロセッサは比較的高性能なプロセッサである。さらに、この方法は、比較的高性能でないプロセッサが過剰に使用されていることを判定し、その判定に基づいて1つ以上のタスクを第2のプロセッサに再配置することを含む。
図1は、本開示の1つ以上の特徴を実装することができる例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、又は、タブレットコンピュータを含むことができる。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含むことができる。デバイス100は、図1に示されていない追加のコンポーネントを含むことができることを理解されたい。
様々な代替例では、プロセッサ102は、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、同一のダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであり得る。様々な代替例では、メモリ104は、プロセッサ102と同一のダイ上に位置してもよいし、プロセッサ102と別に位置してもよい。メモリ104は、揮発性又は不揮発性のメモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ)を含む。
ストレージ106は、固定又は着脱可能ストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックススキャナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションのコンポーネントであり、入力ドライバ112及び出力ドライバ114が存在しない場合にはデバイス100が同様に動作することに留意されたい。出力ドライバ114は、ディスプレイデバイス118に結合されているアクセラレーテッドプロセッシングデバイス(APD)116を含む。APD116は、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れ、それらの計算コマンド及びグラフィックスレンダリングコマンドを処理し、表示のためにディスプレイデバイス118にピクセル出力を提供する。以下のさらに詳細な説明のとおり、APD116は、単一命令複数データ(SIMD)パラダイムに従って計算を実行する1つ以上の並列処理ユニットを含む。したがって、様々な機能が、APD116によって又はAPD116と連動して行われるものとして本明細書に説明されているが、様々な代替例では、APD116によって行われるものとして説明される機能は、ホストプロセッサ(例えば、プロセッサ102)によって駆動されず、ディスプレイデバイス118にグラフィカル出力を提供する同様の機能を有する他のコンピューティングデバイスによって追加的に又は代替的に行われる。例えば、SIMDパラダイムに従って処理タスクを実行する任意の処理システムが、本明細書で説明する機能を実行し得ることが企図されている。代わりに、SIMDパラダイムに従って処理タスクを実行しないコンピューティングシステムは、本明細書で説明される機能を実行することが考慮される。
図2は、APD116上の処理タスクの実行に関連するさらなる詳細を説明する、デバイス100のブロック図である。プロセッサ102は、システムメモリ104において、プロセッサ102による実行のための1つ以上の制御ロジックモジュールを維持する。制御ロジックモジュールは、オペレーティングシステム120と、カーネルモードドライバ122と、アプリケーション126と、を含む。これらの制御ロジックモジュールは、プロセッサ102及びAPD116の操作の様々な特徴を制御する。例えば、オペレーティングシステム120は、ハードウェアと直接的に通信し、プロセッサ102で実行中の他のソフトウェアにハードウェアへのインタフェースを提供する。カーネルモードドライバ122は、例えば、プロセッサ102上で実行されるソフトウェア(例えば、アプリケーション126)にアプリケーションプログラミングインタフェース(API)を提供することによってAPD116の動作を制御し、APD116の様々な機能にアクセスする。また、カーネルモードドライバ122は、APD116の処理コンポーネント(下記にさらに詳細に説明されるSIMDユニット138等)による実行のために、プログラムをコンパイルするジャストインタイムコンパイラを含む。
APD116は、例えばグラフィック処理及び非グラフィック処理等の選択された機能のためのコマンド及びプログラムを実行し、これは並列処理に適したものであり得る。APD116は、例えばピクセル操作、幾何学計算等のグラフィックスパイプライン操作を実行するために、及び、プロセッサ102から受信したコマンドに基づいてディスプレイデバイス118に画像をレンダリングするために使用できる。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオに関連する操作、物理シミュレーション、計算流体力学又は他のタスク等のように、グラフィックス操作に直接関連しない計算処理操作も実行する。
APD116は、SIMDパラダイムに従って並列にプロセッサ102の要求に応じて動作を実行する1つ以上のSIMDユニット138を含む計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、ひいては、同じプログラムを実行するが、異なるデータでそのプログラムを実行することが可能なパラダイムである。一例では、各SIMDユニット138は16個のレーンを含み、各レーンはSIMDユニット138内の他のレーンと同時に同じ命令を実行するが、異なるデータでその命令を実行することができる。全てのレーンが所定の命令を実行する必要があるとは限らない場合には、予測を使用してレーンをオフにすることができる。予測は、分岐する制御フローを有するプログラムを実行するために使用することもできる。より具体的には、制御フローが個々のレーンによって実行される計算に基づく条件付き分岐又は他の命令を有するプログラムの場合、現在実行されていない制御フローパスに対応するレーンの予測、及び、異なる制御フローパスの直列実行は任意の制御フローを可能にする。
計算ユニット132での実行の基本単位はワークアイテム(work-item)である。各ワークアイテムは、特定のレーンにおいて並行で実行されるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のSIMD処理ユニット138上で「ウェーブフロント(wavefront)」として同時に実行され得る。1つ以上のウェーブフロントが「ワークグループ」に含まれ、ワークグループは、同一のプログラムを実行するよう指定されたワークアイテムの集合を含む。ワークグループは、ワークグループを構成するウェーブフロントの各々を実行することによって実行できる。代替例では、ウェーブフロントは、単一のSIMDユニット138上で直列に、又は、異なるSIMDユニット138上で部分的若しくは完全に並列に実行される。ウェーブフロントは、単一のSIMDユニット138で同時に実行できるワークアイテムの最大の集合体と考えることができる。したがって、プロセッサ102から受信したコマンドが、プログラムが単一のSIMDユニット138上で同時に実行できない程度に特定のプログラムが並列処理されることを示す場合、そのプログラムは、2つ以上のSIMDユニット138上で並列処理されるウェーブフロント、又は、同一のSIMDユニット138上で直列処理される(又は、必要に応じて、並列処理及び直列処理の両方が行われる)ウェーブフロントに分割される。スケジューラ136は、異なる計算ユニット132及びSIMDユニット138上で様々なウェーブフロントをスケジュールすることに関連した操作を実行する。
計算ユニット132によって許容される並列性は、画素値計算、頂点変換及び他のグラフィックス操作等のグラフィックス関連操作に適切である。したがって、いくつかの例において、プロセッサ102からグラフィックス処理コマンドを受け取るグラフィックス処理パイプライン134は、並列に実行するために計算タスクを計算ユニット132に提供する。
また、計算ユニット132は、グラフィックスに関係しない、又は、グラフィックス処理パイプライン134の「通常の」操作の一部として実行されない計算タスク(例えば、グラフィックス処理パイプライン134の操作に対して実行される処理を補足するために実行されるカスタム操作)を実行するために使用される。プロセッサ102上で実行しているアプリケーション126又は他のソフトウェアは、実行のためにAPD116に、そのような計算タスクを定義したプログラムを送信する。
図3は、入力タスクを効率的に処理するためのシステム300の例を示すブロック図である。入力310は、処理を必要とする1つ以上のタスク(例えば、割り込み)を表す。タスクを効率的に処理するには、消費電力量を削減するために必要なリソースのみを使用することが最適である。図3に示すように、入力310は、第1のフィルタステージ320に供給される。第1のフィルタステージ320は、初期サービスステージ(例えば、汎用入力/出力(GPIO)ステージ)である。この例では、GPIOステージは、x86命令セットをサポートしていない可能性がある。入力310がGPIOステージによって処理され得るという条件で、330に示すように残りの全てのフィルタステージ及び最高能力コンプレックス340は、電源が切られたままであるか、又は、低電力状態にある。一例では、割り込みは、x86命令の使用を必要としない。したがって、割り込みを処理するためにパワーアップする必要があるのはGPIOのみであり、システム300の残りのコンポーネントはアイドル状態のままである。このシナリオでは、後続のフィルタステージと最高能力コンプレックスを低電力又は電源オフの状態に保つことは、不要な電力消費を回避することによってパフォーマンス効率を向上させる。
入力310が第1のフィルタステージ320によって処理され得ない場合、入力310は、図3に示すような第2のフィルタステージ330等の後続のフィルタステージに渡される。一例では、第2のフィルタステージは、小型又は超小型プロセッサである。この例では、小型又は超小型プロセッサがx86命令セットを使用している。この小型又は超小型プロセッサは、例えば、x86命令を必要とする割り込みサービスルーチン(ISR)タスクを処理でき、デバイス構成レジスタに関連付けられたアーキテクチャ状態の復元、デバイスがその実行を再開するために必要となるマイクロアーキテクチャ状態の復元、又は、オペレーティングシステムの実行等の復元タスクを実行でき、汎用の低命令/サイクル(instructions per cycle、IPC)タスクを実行できる。別の例では、小型又は超小型プロセッサが最終レベルのキャッシュをウォームアップできる。この例では、小型又は超小型プロセッサがコード及び/又はデータを小型又は超小型プロセッサと大型プロセッサとの間の共有キャッシュにフェッチするので、実行が大型プロセッサに切り替わったときに、要求ミスが回避される。ISRが小型又は超小型プロセッサに渡されるという条件で、GPIOステージは、アイドル状態、ストール状態、又は、電源断状態になる。小型又は超小型プロセッサは、例えば、最高能力コンプレックス340からのより高性能なプロセッサ(例えば、大型コアよりも高性能でないプロセッサ)である。一例では、オペレーティングシステム又はカーネルは、小型又は超小型プロセッサを認識していない。例えば、第1のフィルタステージ320に関して上述したものと同様に、あらゆる後続のフィルタステージ及び最高能力コンプレックス340は、低電力又は電源オフ状態のままであり、したがって、電力消費を低減し、使用される電力の単位当たりのパフォーマンスを改善する。
図3の例に示すように、システム300は、第2~第Nのフィルタステージ330を含み、ここで、Nは、2以上の任意の整数である。したがって、上記と同様に、入力310は、適切なフィルタステージが入力310を処理できるようになるまでフィルタステージを通過する。この場合も、このフィルタステージの階層により、後続のフィルタステージ及び最高能力コンプレックス340を低電力又は電源オフの状態に保つことができる。さらに、フィルタステージがタスクを処理するのに適切であると判定されると、前のステージと後続のステージは、アイドル、ストール、電源オフ等の状態になる。図3は、第1のフィルタステージ320及び第2~第Nのフィルタステージ330を示しているが、フィルタステージが無いことを含む任意の数のフィルタステージを実装することができる。追加的又は代替的に、各フィルタステージは、マルチコアコンプレックスの異なるコアにすることができる。
図3の例に示すように、前のフィルタステージの何れも適切でない場合、最高能力コンプレックス340が入力340を処理する。一例では、最高能力コンプレックス340は、1つ以上の大型中央処理ユニット(CPU)コアであり、例えば、小型又は超小型プロセッサよりも比較的高性能である。一例では、最高能力コンプレックス340は、より長いタスク及びより高いIPCタスクを処理するために使用されるCPUコアのコンプレックスである。したがって、入力310がより長い又はより高いIPCタスクである場合、入力310は、処理のために最高能力コンプレックス340に渡され、フィルタステージ320並びに第2~第Nのフィルタステージは、電源断、低電力、ストール等の状態に置かれる。
図4は、入力タスクを効率的に処理するためのシステム400の別の例を示すブロック図である。入力/出力(IO)ドメイン/センサ430は、1つ以上の入力信号をGPIO/初期サービスステージ440に提供する。一例では、IOドメイン/センサ430は、任意の形式の信号又はタスクを提供するか、又は、システムオンチップ(SOC)410に含まれる1つ以上のコンポーネントによって処理されるタスクに関連付けられた信号を提供する。一例では、図4に示すようなGPIO/初期サービスステージ440は、x86命令セットをサポートしない。IOドメイン/センサ430からの入力がGPIO/初期サービスステージ440によって処理できるという条件で、小型プロセッサ450、コアコンプレックス460、ファブリック/ローカル高度プログラミング割り込みコントローラ(LAPIC)タイマ473を含むファブリック420、及び、メインメモリ474は、電源オフのままか、低電力状態のままである。例えば、割り込みはx86命令の使用を必要とせず、GPIO/初期サービスステージ440は、ファブリック420及びそこに含まれるコンポーネントが電源オフ又は低電力状態のままである間、割り込みを処理する。また、GPIO/初期サービスステージ440は、常時オンのタイマ471から入力を受信し、ローカルメモリ472とインタフェースする。GPIO/初期サービスステージ440は、例えば、小型の高度縮小命令セットコンピュータ(RISC)マシン(ARM(商標))コア、小型のマイクロコントローラ、マイクロシーケンサ、小型のハードウェアマシン、又は、パフォーマンス効率も高い可能性がある他の低電力消費デバイスであり得る。GPIO/初期サービスステージ440が着信タスク/割り込みを処理することができ、ファブリック420及びそこに含まれるコンポーネントが電源オフ又は低電力状態のままである場合、不必要な電力消費を回避することによってパフォーマンス効率が改善される。
図4の例に示すように、システム400は、とりわけ、小型/超小型プロセッサ450を含むファブリック420を含む。一例では、小型/超小型プロセッサ450は、GPIO/初期サービスステージ440よりも比較的高性能である。IOドメイン/センサ430からのタスク又は割り込みがGPIO/初期サービスステージ440によってサービスされ得ない場合、小型/超小型プロセッサ450がウェイクアップされ、タスク又は割り込みが小型/超小型プロセッサ450に渡される。小型/超小型プロセッサ450は、例えば、コアコンプレックス460等のより大型のコアコンプレックスの1つのコアであり得る。別の例では、小型/超小型プロセッサ450は、別個のオンダイマイクロコントローラであり得る。一例では、小型/超小型プロセッサがx86命令セットを使用している。この例では、小型/超小型プロセッサは、x86命令を必要とするISRタスクにサービスを提供し、復元タスクを実行し、低命令/サイクル(IPC)タスクを実行する。一例では、小型/超小型プロセッサ450は、例えば、コアコンプレックス460からのより高性能なプロセッサよりも高性能でないプロセッサである。別の例では、オペレーティングシステム又はカーネルは、小型/超小型プロセッサ450を認識していない。小型/超小型プロセッサ450は、ファブリック/LAPICタイマ473から入力を受信し、小型/超小型プロセッサ450は、メインメモリ474とインタフェースする。小型/超小型プロセッサ450が例えば割り込みにサービスを提供する場合、ファブリック420がパワーアップされるが、コアコンプレックス460はオフ状態又は低電力状態のままであり、したがって電力消費を減らし、使用される電力当たりのパフォーマンスを改善する。
図4の例に示すように、コアコンプレックス460は、例えば、GPIO/初期サービスステージ440及び小型/超小型プロセッサ450が処理することができない場合に、割り込みを処理する。一例では、コアコンプレックス460は、例えば、小型又は超小型プロセッサよりも比較的高性能である、及び/又は、比較的電力を消費する1つ以上の中央処理ユニット(CPU)コアである。コアコンプレックス460の1つ以上のCPUコアは、「大型」コアと見なすことができる。一例では、コアコンプレックス460は、より長いタスク及びより高いIPCタスクを処理するために使用されるCPUコアのコンプレックスである。したがって、入力タスクが、OSタスク等のより長い又はより高いIPCタスクであるという条件で、コアコンプレックス460は、入力タスクを処理するためにウェイクアップされる。
図5は、入力タスクを効率的に処理するためのシステム500の別の例を示すブロック図である。システム500は、例えば、タスク又は割り込みを受信するGPIO/初期サービスステージ510を含む。GPIO/初期サービスステージ510は、1つ以上の小型/超小型プロセッサ520に結合されている。GPIO/初期サービス状態510が受信されたタスク又は割り込みを処理することができないという条件で、1つ以上の小型プロセッサ520は、ファブリック580と共にウェイクアップされる。1つ以上の小型/超小型プロセッサ520、1つ以上の大型プロセッサ530、GPU540、IO550、グローバルメモリ相互接続(GMI)560、及び、1つ以上のメモリコントローラ570は、ファブリック580に結合されている。一例では、ファブリックは、トランスポート層と、1つ以上の小型/超小型プロセッサ520、1つ以上の大型プロセッサ530、GPU540、IO550、GMI560及び1つ以上のメモリコントローラ570をトランスポート層に接続するための複数のブリッジと、を含む。
1つ以上の小型/超小型プロセッサ520が受信したタスク又は割り込みを処理できないという条件で、1つ以上の大型プロセッサ530は、ファブリック580とともに、タスク又は割り込みを処理するためにウェイクアップされる。
図6は、第1のプロセッサから第2のプロセッサにタスクを再配置する方法600の例を示すフローチャートである。一例では、第1のプロセッサは、比較的高性能でないプロセッサであり、第2のプロセッサは、比較的高性能なプロセッサである。方法600は、ステップ610で、比較的高性能でないプロセッサによるタスクの実行に関連付けられた1つ以上のメトリックを監視することを含む。
1つ以上のメトリックには、例えば、比較的高性能でないプロセッサのコア使用率メトリックが含まれる。一例では、コア使用率メトリックは、比較的高性能でない、及び/又は、比較的消費電力が少ないプロセッサが最大速度でどれだけ実行されているかの測定値である。この測定値は、例えば、比較的高性能でない、及び/又は、比較的消費電力が少ないプロセッサが最大速度又はその近くで動作しているある期間にわたる時間のパーセンテージを示すことができる。別の例では、コア使用率メトリックは、比較的高性能でない、及び/又は、消費電力が少ないプロセッサのコア存在時間がアクティブ状態にある時間間隔にわたる時間のパーセンテージである。1つ以上のメトリックには、例えば、メモリ使用率メトリックを含めることもできる。一例では、メモリ使用率メトリックは、比較的高性能でないプロセッサによってメモリがどれだけ使用されているかを示す測定値である。この測定値は、一例では、メモリが最大のパフォーマンス状態(p状態と呼ばれることもある)で動作しているある期間にわたる時間のパーセンテージを示す。1つ以上のメトリックには、例えば、ダイレクトメモリアクセス(DMA)進行状況指標も含まれ得る。一例では、DMA進行状況指標は、ある期間にわたるデータレートである。さらに別の例では、1つ以上のメトリックは、割り込み到着レート及び/又は保留中の割り込みの数を含むことができる。この例では、それぞれの数が多いということは、より小型又はより少ない中間プロセッサから、より大型及び/又はより多くの最高能力コンプレックスに切り替える緊急性を示している。
図6に示すように、方法600は、ステップ620で、1つ以上のメトリックの少なくとも1つのメトリックを閾値と比較することを含む。1つ以上のメトリックがコア使用率メトリックを含む例では、コア使用率メトリック、又は、より具体的には、最大速度で動作する比較的高性能でないプロセッサの指標が、コア使用率メトリックと比較される。例えば、比較的高性能でないプロセッサは、時間の50%において最大速度で動作しており、その閾値は40%である。別の例では、1つ以上のメトリックがメモリ使用率メトリックを含み、閾値はメモリ使用率閾値である。この例では、メモリは時間の70%において最大パフォーマンス状態にあり、メモリ使用率閾値は80%である。さらに別の例では、1つ以上の使用率メトリックは、DMAデータレート指標を含み、その閾値は、データレート閾値である。例えば、DMAデータレートの指標は1秒あたり10メガバイトを示し、その閾値は1秒あたり12メガバイトである。
図6に示すように、方法600は、ステップ630で、ステップ620で実行された比較に基づいて、タスクを比較的高性能なプロセッサに再配置することを含む。一例では、コア使用率メトリックがその関連する閾値よりも大きいという条件で、システムは、比較的高性能でないプロセッサが過剰に使用されていると判定し、タスクを比較的高性能なプロセッサに再配置する。コア使用率メトリックが閾値を下回っているという条件で、タスクは再配置されない。別の例では、メモリ使用率メトリックがその関連する閾値よりも大きいという条件で、システムは、比較的高性能でないプロセッサが過剰に使用されていると判定し、タスクを比較的高性能なプロセッサに再配置する。メモリ使用率メトリックが閾値を下回っているという条件で、タスクは再配置されない。さらに別の例では、DMA進行レートが関連付けられた閾値を下回っているという条件で、システムは、比較的高性能でないプロセッサが過剰に使用されており、タスクの処理を十分に進行できないと判定する。そのため、タスクは、比較的高性能なプロセッサに再配置される。DMA進行レートがその関連付けられた閾値を超えている場合、タスクは再配置されない。
図6に示すように、方法600は、ステップ640において、比較に基づいて、タスクを比較的高性能なプロセッサ上で実行することを含む。論理的には、タスクはそれが配置されているプロセッサで実行されることになる。そのため、タスクが比較的高性能なプロセッサに再配置された場合、比較的高性能なプロセッサがタスクを実行する。さらに、比較的高性能でないタスクは電源断になるか、そうでなければ低電力状態になる。タスクが再配置されない場合、タスクは比較的高性能でないプロセッサ上に残り、比較的高性能でないプロセッサによって実行される。
タスクは、上記に開示されたものに加えて、他の指標に基づいて、比較的高性能でないプロセッサから比較的高性能なプロセッサに移動することができる。一例では、ISRは、制御をOSに戻す。この例では、比較的高性能でないプロセッサでOSを実行することはあまり好ましくない。そのため、OSタスクの実行は、比較的高性能なプロセッサに移行される。さらに、比較的高性能でないプロセッサは、電源断になるか、そうでなければ低電力状態になる。別の例では、マシンチェックアーキテクチャ(MCA)イベントには、比較的高性能なプロセッサで実行するのにより適したソフトウェアスタックが必要である。MCAイベントには、例えば、トランザクションエラー、データエラー又はパリティエラーが含まれ得る。別の例では、OSを必要とするシステムレベルの管理を伴うあらゆるイベントは、実行のために比較的高性能なプロセッサに移動される。この場合も、比較的高性能でないプロセッサは電源断になるか、そうでなければ低電力状態になる。
図7は、第1のプロセッサから第2のプロセッサにタスクを再配置する方法700の例を示すフローチャートである。一例では、第1のプロセッサは、比較的高性能なプロセッサであり、第2のプロセッサは、比較的高性能でないプロセッサである。方法700は、ステップ710で、比較的高性能のプロセッサによるタスクの実行に関連付けられた1つ以上のメトリックを監視することを含む。
1つ以上のメトリックは、例えば、コア使用率メトリック、メモリ使用率メトリック、又は、図6に関して上述したようなDMA進行状況メトリックを含むことができる。また、1つ以上のメトリックは、例えば、単一の比較的高性能なコアが一定持続時間使用されている量の指標を含むことができる。例えば、システムには、複数の比較的高性能なプロセッサコアが含まれており、各々比較的高性能なプロセッサとして同等に見なすことができる。一例では、マルチコアのうち単一のコアだけの使用率の測定値が追跡される。この例では、この測定値は同じシングルコアに固有のものではなく、使用中の特定のコアが変更される可能性がある、ある時点でのシングルコアの使用率を追跡する。1つ以上のメトリックにコア使用率メトリックが含まれる例の場合、コア使用率メトリックは、比較的高性能なプロセッサの平均アイドル状態存在時間を示すことができる。例えば、平均アイドル状態存在時間は、比較的高性能なプロセッサが特定のアイドル状態(例えば、cステート)にある時間間隔にわたってどれくらいの頻度であるかを示し、又は、比較的高性能なプロセッサが時間間隔にわたって存在する平均アイドル状態(例えば、cステート)を示す。cステートは、ACPI(Advanced Configuration and Power Interface)アイドル状態であることを認識しておく必要がある。
図7に示すように、この方法700は、ステップ720で、1つ以上のメトリックのうち少なくとも1つのメトリックを閾値と比較することを含む。1つ以上のメトリックに単一の比較的高性能なコアが一定持続時間使用されている量の指標が含まれている例では、シングルコアが閾値のパーセンテージを超えて使用されているという条件で、システムは、比較的高性能なプロセッサが不要であると決定して、タスクを比較的高性能でないプロセッサに再配置し、比較的高性能なプロセッサを電源断とする。
図7に示すように、方法700は、ステップ730において、ステップ720で実行された比較に基づいて、タスクを比較的高性能でないプロセッサに再配置することを含む。一例では、比較的高性能なプロセッサが平均して70%の時間アイドル状態であり、閾値が50%の時間であるという条件で、タスクは、比較的高性能でないプロセッサに再配置される。
図7に示すように、方法700は、ステップ740において、比較に基づいて、タスクを比較的高性能でないプロセッサ上で実行することを含む。論理的には、タスクは、それが配置されているプロセッサで実行されることになる。そのため、タスクが比較的高性能でないプロセッサに再配置された場合、比較的高性能でないプロセッサがタスクの実行を続行する。タスクが再配置されない場合、タスクは、比較的高性能のプロセッサ上に残り、比較的高性能のプロセッサによって実行される。
図8は、第1のプロセッサから第2のプロセッサに1つ以上タスクを再配置する方法800の別の例を示すフローチャートである。一例では、第1のプロセッサは、比較的高性能なプロセッサであり、第2のプロセッサは、比較的高性能でないプロセッサである。別の例では、第1のプロセッサは、比較的高性能でないプロセッサであり、第2のプロセッサは、比較的高性能なプロセッサである。さらに別の例では、2つのプロセッサは、異種であり、例えばCPUとGPUである。
方法800は、ステップ810で、第1のプロセッサがアイドル状態又はストール状態に置かれると判定することを含む。第1のプロセッサをアイドル状態又はストール状態にする必要があるかどうかの判定は、上記の説明に従って実行される。例えば、第1のプロセッサが比較的高性能でないプロセッサであり、第2のプロセッサが比較的高性能なプロセッサである。さらに、この例では、第1のプロセッサのコア使用率は、その関連付けられた閾値を超えている。そのため、1つ以上のタスクを比較的高性能なプロセッサに再配置する必要があると判定される。一例では、比較的高性能でないプロセッサは、小型コア、ミニコア又は超小型コアである。ステップ810は、第1のプロセッサが未だ実行されている間に第2のプロセッサのパワーアッププロセスを開始することをさらに含み得る。第2のプロセッサのパワーアッププロセスは、例えば、電圧レールの立ち上げ、メモリの修復、ヒューズの供給、及び、コア状態の初期化を含み得る。このようにして、第2のプロセッサは、実行がブラックアウトなしで第2のプロセッサに切り替えられるように、アーキテクチャ状態を復元する準備ができた状態であり得る。方法800は、ステップ815で、第1のプロセッサをアイドル状態又はストール状態にすることをさらに含む。一例では、比較的高性能でないプロセッサをストールさせるために、マイクロアーキテクチャ方式が実装されている。別の例では、比較的高性能でないプロセッサをストール状態にする一環として、最初に、全てのマイクロオペランドがリタイアされていること、つまり、未処理の命令がないこと、メモリへの未処理の要求がないこと、内部命令ストリームが残っていないこと、及び、実行中の命令がないことが判定される。いくつかの例では、比較的高性能でないプロセッサは、比較的高性能でないプロセッサをストール状態から解放することなく、そのキャッシュサブシステムへの着信プローブに応答することが期待される。いくつかの例では、割り込みは、比較的高性能でないプロセッサに入るのをブロックされる必要があり、したがって境界で待機する。
別の例では、第1のプロセッサは比較的高性能なプロセッサであり、第2のプロセッサは比較的高性能でないプロセッサである。一例では、より高性能なプロセッサは、平均して、関連する閾値よりもアイドル状態にあると判定される。そのため、1つ以上のタスクを比較的高性能でないプロセッサに再配置する必要があると判定され、比較的高性能なプロセッサは、例えば、cステートになる。上記のように、この再配置は、例えば、GPIO/初期サービスステージと小型/超小型プロセッサとの間であってもよく、又は、この再配置は、小型/超小型プロセッサと大型プロセッサとの間であってもよいことに留意されたい。
さらに、方法800は、ステップ820で、第1のプロセッサのアーキテクチャ状態を第1のメモリ位置に保存することを含む。一例では、アーキテクチャ状態は、1つ以上のレジスタと1つ以上のフラグの組み合わせである。第1のメモリ位置は、いくつかの例では、第1のプロセッサに関連付けられている。別の例では、方法800は、ステップ810と重なり、且つ、ステップ820も終了するときに終了するように、一度にステップ815を開始して、ステップ815の完了に関連付けられたあらゆる遅延を回避することを含む。
さらに、方法800は、ステップ830で、アーキテクチャ状態を第1のメモリアドレスから第2のメモリアドレスにコピーすることを含む。いくつかの例では、第2のメモリアドレスは第2のプロセッサに関連付けられている。いくつかの例では、アーキテクチャ状態は第2のプロセッサ用に調整される。オプションとして、ステップ840で、この調整は、調整されたアーキテクチャ状態が第2のプロセッサに適用されるように実行される。ステップ850で、この方法は、第2のメモリアドレスから第2のプロセッサにアーキテクチャ状態を復元することをさらに含む。別の例では、ステップ830のようにアーキテクチャ状態をコピーし、ステップ850のようにアーキテクチャ状態を復元するために使用されるメモリは、専用のスタティックランダムアクセスメモリ(SRAM)である。さらに別の例では、ステップ830,850でメモリを使用する代わりに、レジスタバスを第1のプロセッサと第2のプロセッサとの間でブリッジして、アーキテクチャ状態をプロセッサ間で直接移動させることができる。ステップ860で、着信割り込みは、第2のプロセッサにリダイレクトされる。ステップ860は、ステップ850に続くものとして図8に示されているが、ステップ850の完了前の任意の時点で受信された着信割り込みがストールされて、その結果ステップ860で、割り込みが第2のプロセッサにリダイレクトされる。ステップ870で、着信割り込みのISRアドレスが第2のプロセッサによってフェッチされ、割り込みが処理される。割り込みの処理が完了した後、ステップ880で、通常の実行が第2のプロセッサで再開される。
上記のいくつかの例では、比較的高性能でないプロセッサ及び比較的高性能なプロセッサが説明されているが、任意の2つ以上の異種プロセッサを使用することができる。例えば、CPUコアからのタスクはGPUコアに再配置され、その逆も同様である。
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上記に説明されたが、各特徴又は要素は、他の特徴及び要素無しに単独で、又は、他の特徴及び要素有り若しくは無しの様々な組み合わせで使用することができる。
図に示す及び/又は本明細書に説明される様々な機能ユニット(限定ではないが、プロセッサ102、入力ドライバ112、入力デバイス108、出力ドライバ114、出力デバイス110、アクセラレーテッドプロセッシングデバイス116、スケジューラ136、グラフィックス処理パイプライン134、計算ユニット132、及び、SIMDユニット138を含む)は、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、プログラム、ソフトウェア若しくはファームウェアとして実装され、非一時的なコンピュータ可読媒体又は別の媒体に記憶され、汎用コンピュータ、プロセッサ又はプロセッサコアによって実行可能であってもよい。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施され得る。適切なプロセッサは、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタルシグナルプロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアと関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のタイプの集積回路(IC)、及び/又は、状態機械を含む。処理されたハードウェア記述言語(HDL)命令の結果と、ネットリストを含む他の中間データ(コンピュータ可読媒体に記憶することが可能であるそのような命令)と、を使用して製造プロセスを構成することによって、このようなプロセッサを製造することができる。そのような処理の結果は、開示の特徴を実装するプロセッサを製造する半導体製造工程において使用されるマスクワークであってもよい。
本明細書で提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために、非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアに実装することができる。非一時的なコンピュータ可読記憶媒体の例としては、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及び着脱可能ディスク等の磁気媒体、光磁気媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体が挙げられる。

Claims (20)

  1. コンピュータで実施されるタスクを、比較的高性能でないプロセッサから比較的高性能なプロセッサに再配置するための方法であって、
    前記比較的高性能でないプロセッサによる前記タスクの実行に関連する1つ以上のメトリックを監視することと、
    前記1つ以上のメトリックのうち少なくとも1つのメトリックを閾値と比較することと、
    前記タスクを前記比較的高性能なプロセッサに選択的に再配置し、前記比較に基づいて前記比較的高性能なプロセッサ上で前記タスクを実行することと、を含む、
    方法。
  2. 前記少なくとも1つのメトリックは、前記比較的高性能でないプロセッサのコア使用率メトリックを含む、
    請求項1の方法。
  3. コア使用率メトリックは、前記高性能でないプロセッサが最大速度で動作している持続時間の指標を含み、
    前記閾値は、持続時間閾値の指標であり、
    前記タスクは、前記比較的高性能でないプロセッサが最大速度で動作している前記持続時間の前記指標が前記持続時間閾値よりも大きいという条件で、前記比較的高性能なプロセッサに再配置される、
    請求項2の方法。
  4. 前記少なくとも1つのメトリックは、前記比較的高性能でないプロセッサに関連するメモリ使用率メトリックを含む、
    請求項1の方法。
  5. 前記メモリ使用率メトリックは、メモリが最大メモリパフォーマンス状態で動作している持続時間の指標を含み、
    前記閾値は、持続時間閾値の指標であり、
    前記タスクは、前記比較的高性能でないプロセッサが最大速度で動作している前記持続時間の前記指標が前記持続時間閾値よりも大きいという条件で、前記比較的高性能なプロセッサに再配置される、
    請求項4の方法。
  6. 前記1つ以上のメトリックのうち少なくとも1つのメトリックは、ダイレクトメモリアクセス(DMA)データレートを含む、
    請求項1の方法。
  7. コンピュータで実施されるタスクを、比較的高性能のプロセッサから比較的高性能でないプロセッサに再配置するための方法であって、
    前記比較的高性能のプロセッサによる前記タスクの実行に関連する1つ以上のメトリックを監視することと、
    前記1つ以上のメトリックのうち少なくとも1つのメトリックを閾値と比較することと、
    前記タスクを前記比較的高性能でないプロセッサに選択的に再配置し、前記比較に基づいて前記比較的高性能でないプロセッサ上で前記タスクを実行することと、を含む、
    方法。
  8. 前記少なくとも1つのメトリックは、前記比較的高性能なプロセッサの単一のコアが使用される持続時間の指標を含み、
    前記閾値は、持続時間閾値の指標であり、
    前記タスクは、前記比較的高性能なプロセッサの前記単一のコアが使用されている前記持続時間の前記指標が前記持続時間閾値よりも小さいという条件で、前記比較的高性能でないプロセッサに再配置される、
    請求項7の方法。
  9. 前記少なくとも1つのメトリックは、前記比較的高性能のプロセッサのコア使用率メトリックを含む、
    請求項7の方法。
  10. 前記比較的高性能なプロセッサの前記コア使用率メトリックは、ある時間間隔にわたる平均使用率を含み、
    前記閾値は使用率閾値の指標であり、
    前記タスクは、ある時間間隔にわたる前記平均使用率が前記使用率閾値よりも小さいという条件で、前記比較的高性能でないプロセッサに再配置される、
    請求項9の方法。
  11. 前記比較的高性能なプロセッサの前記コア使用率メトリックは、アイドル状態平均存在時間を含み、
    前記閾値はアイドル状態閾値の指標であり、
    前記タスクは、前記アイドル状態平均存在時間が前記アイドル状態閾値よりも大きいという条件で、前記比較的高性能でないプロセッサに再配置される、
    請求項9の方法。
  12. 前記少なくとも1つのメトリックは、前記比較的高性能でないプロセッサに関連するメモリ使用率メトリックを含み、
    前記閾値はメモリ使用率閾値であり、
    前記タスクは、前記メモリ使用率メトリックが前記メモリ使用率閾値よりも小さいという条件で、前記比較的高性能でないプロセッサに再配置される、
    請求項7の方法。
  13. 第1のプロセッサから第2のプロセッサへのタスク再配置の方法であって、
    前記第1のプロセッサをアイドル状態又はストール状態にすることと、
    前記第1のプロセッサのアーキテクチャ状態を第1のメモリ位置に保存することと、
    前記アーキテクチャ状態を前記第1のメモリ位置から第2のメモリ位置にコピーすることと、
    割り込みを前記第2のプロセッサにリダイレクトすることと、
    前記第2のプロセッサによって、前記第2のメモリ位置から前記アーキテクチャ状態を復元することと、
    前記第2のプロセッサによって、割り込みサービスルーチン(interrupt service routine、ISR)アドレスをフェッチすることと、
    前記第2のプロセッサによって、前記ISRアドレスを使用して前記ISRを処理することと、
    前記第1のプロセッサが前記アイドル状態又は前記ストール状態にある間に、前記第2のプロセッサによって1つ以上の後続のタスクを実行することと、を含む、
    方法。
  14. 前記第1のメモリ位置は前記第1のプロセッサに関連付けられており、前記第2のメモリ位置は前記第2のプロセッサに関連付けられている、
    請求項13の方法。
  15. 前記アーキテクチャ状態は、1つ以上のレジスタ設定及び1つ以上のフラグ設定を含む、
    請求項13の方法。
  16. 前記コピーすることは、前記アーキテクチャ状態を調整することを含む、
    請求項13の方法。
  17. 前記第1のプロセッサに対する着信割り込みは、前記リダイレクトするまでストールされる、
    請求項13の方法。
  18. 前記ISRアドレスは、ローカル高度プログラミング割り込みコントローラ(local advanced programming interrupt controller、LAPIC)からフェッチされる、
    請求項13の方法。
  19. 前記第1のプロセッサは比較的高性能なプロセッサであり、
    前記第2のプロセッサは比較的高性能でないプロセッサであり、
    前記方法は、
    前記比較的高性能なプロセッサが十分に活用されていないことを判定することと、
    前記判定に基づいて、1つ以上のタスクを前記第2のプロセッサに再配置することと、を含む、
    請求項13の方法。
  20. 前記第1のプロセッサは比較的高性能でないプロセッサであり、
    前記第2のプロセッサは比較的高性能なプロセッサであり、
    前記方法は、
    前記比較的高性能でないプロセッサが過剰に使用されていることを判定することと、
    前記判定に基づいて、1つ以上のタスクを前記第2のプロセッサに再配置することと、を含む、
    請求項13の方法。
JP2022533086A 2019-12-10 2020-11-12 異種プロセッサ間のタスク遷移の方法 Pending JP2023505459A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/709,404 US11586472B2 (en) 2019-12-10 2019-12-10 Method of task transition between heterogenous processors
US16/709,404 2019-12-10
PCT/US2020/060301 WO2021118754A1 (en) 2019-12-10 2020-11-12 Method of task transition between heterogenous processors

Publications (1)

Publication Number Publication Date
JP2023505459A true JP2023505459A (ja) 2023-02-09

Family

ID=76209769

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022533086A Pending JP2023505459A (ja) 2019-12-10 2020-11-12 異種プロセッサ間のタスク遷移の方法

Country Status (6)

Country Link
US (2) US11586472B2 (ja)
EP (1) EP4073646A4 (ja)
JP (1) JP2023505459A (ja)
KR (1) KR20220105678A (ja)
CN (1) CN114787777A (ja)
WO (1) WO2021118754A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023020219A (ja) * 2021-07-30 2023-02-09 株式会社リコー 情報処理装置、方法およびプログラム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200627258A (en) * 2005-01-27 2006-08-01 Lite On Technology Corp Medium transfer-recording control method and the embedded system using the same
US8284205B2 (en) * 2007-10-24 2012-10-09 Apple Inc. Methods and apparatuses for load balancing between multiple processing units
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
EP2383648B1 (en) * 2010-04-28 2020-02-19 Telefonaktiebolaget LM Ericsson (publ) Technique for GPU command scheduling
US8874941B2 (en) 2011-06-14 2014-10-28 Utah State University Apparatus and method for designing an architecturally homogeneous power-performance heterogeneous multicore processor using simulated annealing optimization
US9378112B2 (en) * 2012-06-25 2016-06-28 International Business Machines Corporation Predictive alert threshold determination tool
US9471395B2 (en) * 2012-08-23 2016-10-18 Nvidia Corporation Processor cluster migration techniques
US10162687B2 (en) * 2012-12-28 2018-12-25 Intel Corporation Selective migration of workloads between heterogeneous compute elements based on evaluation of migration performance benefit and available energy and thermal budgets
KR102082859B1 (ko) 2013-01-07 2020-02-28 삼성전자주식회사 복수의 이종 코어들을 포함하는 시스템 온 칩 및 그 동작 방법
JP6038699B2 (ja) * 2013-03-22 2016-12-07 シャープ株式会社 電子機器
US9823673B2 (en) * 2014-04-08 2017-11-21 Qualcomm Incorporated Energy efficiency aware thermal management in a multi-processor system on a chip based on monitored processing component current draw
US20160077871A1 (en) * 2014-09-17 2016-03-17 Advanced Micro Devices, Inc. Predictive management of heterogeneous processing systems
WO2016078008A1 (zh) * 2014-11-19 2016-05-26 华为技术有限公司 调度数据流任务的方法和装置
US9891964B2 (en) * 2014-11-19 2018-02-13 International Business Machines Corporation Network traffic processing
US10037227B2 (en) 2015-12-17 2018-07-31 Intel Corporation Systems, methods and devices for work placement on processor cores
US9940156B2 (en) * 2016-01-29 2018-04-10 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Decreasing hardware resource amount assigned to virtual machine as utilization of hardware resource decreases below a threshold
US10936449B2 (en) 2017-03-21 2021-03-02 Intel Corporation Component redundancy systems, devices, and methods
US20180365425A1 (en) * 2017-06-15 2018-12-20 Qualcomm Incorporated Systems and methods for securely booting a system on chip via a virtual collated internal memory pool
US10698472B2 (en) * 2017-10-27 2020-06-30 Advanced Micro Devices, Inc. Instruction subset implementation for low power operation
US11502696B2 (en) * 2018-10-15 2022-11-15 Intel Corporation In-memory analog neural cache
KR102552954B1 (ko) * 2018-11-07 2023-07-06 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템의 동작 방법

Also Published As

Publication number Publication date
EP4073646A4 (en) 2023-12-13
US20230185623A1 (en) 2023-06-15
US20210173715A1 (en) 2021-06-10
US11586472B2 (en) 2023-02-21
WO2021118754A1 (en) 2021-06-17
EP4073646A1 (en) 2022-10-19
KR20220105678A (ko) 2022-07-27
CN114787777A (zh) 2022-07-22

Similar Documents

Publication Publication Date Title
US10802567B2 (en) Performing local power gating in a processor
RU2520411C2 (ru) Устройство обработки данных и способ переключения рабочей нагрузки между первой и второй компоновкой схем обработки
TWI494850B (zh) 通透地提供給作業系統之非對稱多核心處理器系統
JP5702407B2 (ja) 移転元処理回路と移転先処理回路との間で作業負荷を移転するためのデータ処理装置および方法
CN106155265B (zh) 有功率效率的处理器体系结构
CN103842933B (zh) 多核平台中的受约束引导技术
TWI489266B (zh) 指定應用程式執行緒的效能狀態之指令
TW201337771A (zh) 用於包括執行緒合併之能源效率及能源節約的方法、裝置及系統
JP2013536532A (ja) 処理ノードの動的パフォーマンス制御
CN113748397A (zh) 用于动态控制处理器的处理电路的电流消耗的系统、装置和方法
US11886918B2 (en) Apparatus and method for dynamic control of microprocessor configuration
US20230185623A1 (en) Method of task transition between heterogenous processors
US20230350485A1 (en) Compiler directed fine grained power management
US9684541B2 (en) Method and apparatus for determining thread execution parallelism
WO2023225991A1 (en) Dynamic establishment of polling periods for virtual machine switching operations
US20210065758A1 (en) Adaptable allocation of sram based on power

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231106