説明

第1の処理回路と第2の処理回路との間で作業負荷を切り替えるためのデータ処理装置および方法

2つの処理回路の間で作業負荷の実施を切り替えるためのデータ処理装置および方法を提供する。データ処理装置は、第2の処理回路とアーキテクチャ上の互換性がある、第1の処理回路を有するが、第1の処理回路は、マイクロアーキテクチャ上で第2の処理回路とは異なる。任意の時点で、少なくとも1つのアプリケーションとそのアプリケーションを実行するための少なくとも1つのオペレーティングシステムとからなる作業負荷が、第1の処理回路および第2の処理回路のうちの1つによって実施される。スイッチコントローラは、移転刺激に応答して、移転元処理回路から移転先処理回路へ作業負荷の実施を移転するようにハンドオーバー動作を実施し、移転元処理回路は、第1の処理回路および第2の処理回路のうちの一方であり、移転先処理回路は、第1の処理回路および第2の処理回路のうちのもう一方である。ハンドオーバー動作中、スイッチコントローラは、移転元処理回路に、その最新アーキテクチャ状態を移転先処理回路に利用可能にさせ、この最新アーキテクチャ状態は、ハンドオーバー動作が開始された時に共有メモリからは利用できない状態であり、移転先処理回路が、移転元処理回路から作業負荷の実施を成功裏に引き継ぐために必要である。加えて、スイッチコントローラは、作業負荷の移転がそのオペレーティングシステムに透過的であるように、少なくとも1つのオペレーティングシステムから既定のプロセッサ固有の構成情報をマスクする。かかる手法は、処理回路間でアプリケーションを切り替える能力を備えるオペレーティングシステムを提供することに関連する複雑性を回避しながら、顕著なエネルギー消費利点を生み出すことが見出された。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、第1の処理回路と第2の処理回路との間で作業負荷を切り替えるためのデータ処理装置および方法に関し、特に、データ処理装置のエネルギー効率を向上させるために、かかる切り替えを実施するための技法に関する。
【背景技術】
【0002】
現代のデータ処理システムにおいて、ゲーム操作等の高負荷タスクと、MP3再生等の低負荷タスクとの間の性能要求の差は、100:1の比を超える場合がある。全てのタスクに単一のプロセッサが使用される場合、そのプロセッサは高性能でなければならないが、プロセッサのマイクロアーキテクチャの原理として、高性能プロセッサは、低性能プロセッサよりもエネルギー効率が低い。広範な性能レベルおよび対応するエネルギー消費特徴を備えたプロセッサを提供するために、動的電圧周波数制御(DVFS)またはパワーゲーティング等の技法を使用して、プロセッサレベルでエネルギー効率を向上させることは知られている。しかしながら、かかる技法は概して、単一のプロセッサがそのような多岐にわたる性能要件を持つタスクを担うことを可能にするには、不十分になっている。
【0003】
したがって、そのような様々なタスクの実施のためにエネルギー効率の高いシステムを提供するために、マルチコアアーキテクチャを使用することが考えられた。複数のプロセッサコアを備えるシステムは、しばらくの間、処理能力を高めるために異なるコアが異なるタスクを並行して動作することを可能にすることによって、性能を高めるために使用されたが、そのようなシステムがエネルギー効率を向上させるためにどのように使用できるかという分析は、比較的最近の進展である。
【0004】
文献「Towards Better Performance Per Watt in Virtual Environments on Asymmetric Single−ISA Multi−Core Systems」(V Kumar et alによる)(ACM SIGOPS Operating Systems Review,43号、第3巻(2009年7月)に収容)は、同一命令セットアーキテクチャ(ISA)に対応するが、機能、複雑性、電力消費、および性能面で異なる、いくつかのコアからなる、非対称単一命令セットアーキテクチャ(ASISA:Asymmetric Single Instruction Set Architecture)マルチコアシステムを論じる。文書中、仮想作業負荷の特性が研究され、性能およびエネルギー消費を向上させるために、これらの作業負荷がASISAシステム上でどのようにスケジュールされるべきかについて考察された。文書では、所定のタスクは高周波数/性能のマイクロアーキテクチャ(典型的に演算が集中するタスク)により適用するが、他のタスクは、より低い周波数/性能のマイクロアーキテクチャにより適しており、副作用として、より少ないエネルギーを消費する(典型的に入力/出力が集中するタスク)。かかる研究は、エネルギー効率の高い様式で多様なタスクを実行するために、ASISAシステムをどのように利用することができるかを示すが、依然として、最も適切なプロセッサに個別のタスクをスケジュールするための機構を提供することが必要であり、そのようなスケジュール管理は典型的に、オペレーティングシステムに顕著な負担を強いることになる。
【0005】
文献「Single−ISA Heterogeneous Multi−Core Architectures:The Potential for Processor Power Reduction」(R Kumar et alによる)(第36回International Symposium of Microarchitecture(MICRO−36’03)の議事録)は、全てのコアが同一命令セットを実行するが、異なる能力および性能レベルを有する、マルチコアアーキテクチャを論じる。実行時、システムソフトウェアは、アプリケーションのリソース要件を評価し、エネルギー消費を最小限にしながら、これらの要件を最適に満たすことができるコアを選択する。文書の第2項に記載のように、アプリケーションの実行中、オペレーティングシステムソフトウェアは、アプリケーションを異なるコアに組み合わせ、例えば、特定の性能要件等、定義された目的機能を満たそうと試みる。第2.3項には、コアを切り替えるにはコストが存在し、切り替えの粒度の制限が必要となることが特筆されている。次いで、オペレーティングシステムが切り替えが順当であると判定した場合、新しいコアを駆動し、キャッシュのフラッシュをトリガして、全てのダーティキャッシュデータを共有メモリ構造に保存し、次いで、既定のオペレーティングシステムのエントリポイントで、新しいコアに起動するように信号を送信する、という特定の例が論じられる。旧コアは、次いで、電源を切断することができ、一方、新しいコアは、メモリから必要なデータを呼び出す。このような手法は、アプリケーションが、オペレーティングシステムによってコア間で切り替えられることを可能にするとして、第2.3項に記載される。文書の後半では、次いで、エネルギー消費削減を目的として、マルチコア環境で、そのような切り替えをどのように動的に実施することができるかを論じる。
【0006】
上記の文献は、エネルギー消費削減を実現するために、単一ISA異種マルチコアアーキテクチャの可能性を論じるが、依然として、オペレーティングシステムに、個別のアプリケーションを実行するためのスケジュール判定を可能にするに十分な機能を提供することを必要とする。この面でオペレーティングシステムの役割は、異なるアーキテクチャ特徴を備えるプロセッサインスタンス間で切り替える場合にはより複雑になる。この点で、文献で検討されたAlphaコアEV4からEV8は、例えば、第2.2項の第5段落で論じられるように、完全にISA互換ではないことに注意されたい。
【0007】
さらに、文書は、コア間でアプリケーションを切り替える際に関わる顕著なオーバーヘッドが存在するという問題に対処していないが、この問題は、そのような切り替えから達成される利点を実質的に削減する可能性がある。
【0008】
(発明の概要)
一態様から見ると、本発明は、データ処理動作を実施するための第1の処理回路と、データ処理動作を実施するための第2の処理回路とを備え、第1の処理回路は、データ処理装置によって実施される作業負荷が、第1の処理回路または第2の処理回路のいずれか上で実施することができるように、第2の処理回路とアーキテクチャ上の互換性があり、前記作業負荷は、少なくとも1つのアプリケーションと、少なくとも1つのアプリケーションを実行するための少なくとも1つのオペレーティングシステムとを含み、第1の処理回路は、第1の処理回路の性能が第2の処理回路の性能とは異なるように、マイクロアーキテクチャ上で第2の処理回路とは異なり、第1の処理回路および第2の処理回路は、任意の時点で、作業負荷が第1の処理回路および第2の処理回路のうちの1つによって実施されるように構成され、移転刺激に応答して、移転元処理回路から移転先処理回路へ作業負荷の実施を移転するようにハンドオーバー動作を実施するスイッチコントローラであって、移転元処理回路は、第1の処理回路および第2の処理回路のうちの一方であり、移転先処理回路は、第1の処理回路および第2の処理回路のうちのもう一方である、スイッチコントローラをさらに備え、スイッチコントローラは、ハンドオーバー動作中に、(i)移転元処理回路に、ハンドオーバー動作が開始される時に第1の処理回路と第2の処理回路との間で共有される共有メモリからは利用可能ではない状態であり、移転先処理回路が、移転元処理回路から、作業負荷の実施を成功裏に引き継ぐために必要である、その最新アーキテクチャ状態を移転先処理回路に利用可能にさせ、(ii)作業負荷の移転が少なくとも1つのオペレーティングシステムに透過的であるように、少なくとも1つのオペレーティングシステムから、既定のプロセッサ固有の構成情報をマスクするように配置される、データ処理装置を提供する。
【0009】
本発明によると、データ処理装置は、アーキテクチャ上では相互に互換性があるが、マイクロアーキテクチャ上では異なる、第1の処理回路および第2の処理回路を備えて提供される。第1の処理回路および第2の処理回路のアーキテクチャ上の互換性に起因して、1つ以上のアプリケーションからなるだけでなく、それらの1つ以上のアプリケーションを実行するための少なくとも1つのオペレーティングシステムも含む、作業負荷は、第1の処理回路と第2の処理回路との間で移動することができる。さらに、第1の処理回路および第2の処理回路がマイクロアーキテクチャ上で異なるため、第1の処理回路および第2の処理回路の性能特徴(したがって、エネルギー消費特徴)は異なる。
【0010】
本発明によると、任意の時点で、作業負荷は、第1の処理回路および第2の処理回路のうちの1つによって実施され、スイッチコントローラは、移転刺激に応答して、処理回路の間で作業負荷の実施を移転するためにハンドオーバー動作を実施する。移転刺激の受信時、2つの処理回路のうち、作業負荷を現在実施している方が移転元処理回路と見なされ、もう一方が移転先処理回路と見なされる。ハンドオーバー動作を実施することを担うスイッチコントローラは、移転元処理回路の最新アーキテクチャ状態を移転先処理回路に利用可能にさせ、さらに、作業負荷の一部を形成している少なくとも1つのオペレーティングシステムから、既定のプロセッサ固有の構成情報をマスクし、作業負荷の移転がそのオペレーティングシステムに透過的であるようにする。
【0011】
本発明の使用を通じて、一方の処理回路からもう一方の処理回路へ作業負荷全体を移行し、一方で、その移転をオペレーティングシステムからマスクし、さらにハンドオーバー動作が開始される時点で共有メモリに利用可能ではない必要なアーキテクチャ状態が、移転先処理回路に利用可能であることを保証し、作業負荷の実施を成功裏に引き継ぐことができるようにすることが可能である。
【0012】
任意の特定の時点で、第1の処理回路および第2の処理回路のうちの1つの上だけで実施される作業負荷全体を巨視的エンティティとして取り扱うことによって、本発明の技法は、移転先処理回路が、作業負荷の実施を成功裏に引き継ぐことを可能にするために必要な情報全てを有することを保証しながら、作業負荷が、オペレーティングシステムに透過的である様式で、第1の処理回路と第2の処理回路との間で容易に切り替えられることを可能にする。かかる手法は、特定の処理回路に対するアプリケーションのスケジュールを管理するために、オペレーティングシステムを使用することからもたらされる前述の問題に対処し、顕著なエネルギー消費節約が達成できることが見出された。
【0013】
一実施形態において、データ処理装置は、第1の処理回路および第2の処理回路に提供される電力を独立的に制御するための電力制御回路をさらに備え、移転刺激の発生前に、移転先処理回路は、電力節約状態にあり、ハンドオーバー動作中に、電力制御回路は、移転先処理回路が作業負荷の実施を引き継ぐ前に、移転先処理回路に電力節約状態を終了させる。そのような電力制御回路の使用を通じて、作業負荷を現在実施していない任意の処理回路によって消費されるエネルギーを削減することが可能である。
【0014】
一実施形態において、ハンドオーバー動作に続いて、電力制御回路は、移転元処理回路に電力節約状態に入らせる。これは、ハンドオーバー動作の直後に発生することができる、または代替の実施形態において、移転元処理回路は、いくらかの既定の時間が経過した後のみに電力節約状態に入るように配置される場合があり、移転元処理回路によってまだ保存されているデータが、よりエネルギー効率が高く、より高い性能様式で移転先処理回路に利用可能にさせられることを可能にすることができる。
【0015】
異なる処理回路の間での切り替えが発生する様式に関係なく、先行技術に存在するさらなる問題は、高速かつエネルギー効率の高い様式で、その切り替えが成功するために必要な情報をどのように移転するかである。具体的には、前述の最新アーキテクチャ状態が移転先処理回路に利用可能になることが必要である。これを達成することができる1つの方式は、その最新アーキテクチャ状態をハンドオーバー動作の一部として共有メモリに全て書き込み、したがって、移転先処理回路によってその後共有メモリから読み出すことができるようにすることである。本明細書に使用される場合、「共有メモリ」という用語は、第1の処理回路および第2の処理回路両方によって直接アクセスすることができるメモリを言い、例えば、相互接続により第1の処理回路および第2の処理回路両方に連結されるメインメモリである。
【0016】
しかしながら、最新アーキテクチャ状態の全てを共有メモリに書き込む際に発生する問題は、そのようなプロセスは相当な時間がかかり、さらに相当なエネルギーも消費することで、これは、切り替えを実施することによって実現することができる潜在的な利点を大幅に相殺する可能性がある。
【0017】
一実施形態によると、移転動作中、スイッチコントローラは、最新アーキテクチャ状態を取得するために、移転先処理回路が共有メモリを参照しなくても、その最新アーキテクチャを移転先処理回路に利用可能にするように、移転元処理回路に加速機構を採用させる。したがって、そのような実施形態によると、移転先処理回路に利用可能にするために、共有メモリを介してルーティングされるアーキテクチャ状態の要件を回避する機構が提供される。これは、移転動作中の性能向上だけでなく、移転動作に関連するエネルギー消費の削減ももたらす。
【0018】
一実施形態において、少なくとも移転元回路は、関連キャッシュを有し、データ処理装置は、スヌープ制御回路をさらに有し、加速機構は、移転元回路の関連キャッシュおよびスヌープ制御回路の使用を通じて、移転先処理回路へ最新アーキテクチャ状態を移転することを含む。
【0019】
この技法によると、移転先プロセッサに利用可能にしなければならない最新アーキテクチャ情報を記憶するために、移転元処理回路のローカルキャッシュが使用される。その状態は、次いで共有可能とマークされ、その状態がスヌープ制御回路を使用する移転先処理回路によってスヌープされることが可能になる。したがって、そのような実施形態において、第1の処理回路および第2の処理回路は、相互にハードウェアキャッシュコヒーレントになり、これによって、移転元処理回路から移転先処理回路への切り替えに関わる時間、エネルギー、およびハードウェアの複雑度を削減する。
【0020】
1つの特定の実施形態において、加速機構は、保存および復元機構であり、移転元処理回路にその最新アーキテクチャ状態をその関連キャッシュに記憶させ、移転先処理回路に復元動作を実施させる。この復元動作により、スヌープ制御回路は、移転元処理回路の関連キャッシュから最新アーキテクチャ状態を呼び出し、その呼び出された最新アーキテクチャ状態を移転先処理回路に提供する。保存/記憶機構は、アーキテクチャ状態を移転元回路のローカルキャッシュに保存し、移転先処理回路が次いでその状態を呼び出すために、特に効率的な技法を提供する。
【0021】
そのような手法は、移転先処理回路が独自の関連ローカルキャッシュを有するかどうかに関わらず使用される場合がある。アーキテクチャ状態の項目に対するリクエストが、移転先処理回路から直接、またはキャッシュミスの場合に移転先処理回路の関連ローカルキャッシュからのいずれかで、スヌープ制御回路によって受信されると必ず、アーキテクチャ状態の必要な項目が移転元回路に関連するローカルキャッシュに記憶され、移転先処理回路に返すために、そのデータを移転元回路のローカルキャッシュから(直接、または存在する場合は移転先処理回路の関連キャッシュを介してのいずれかで)呼び出すことを決定する。
【0022】
1つの特定の実施形態において、移転先処理回路は、スヌープ制御回路によって取得された移転されたアーキテクチャ状態が移転先処理回路によって参照するために記憶される、関連キャッシュを有する。
【0023】
しかしながら、上記のハードウェアキャッシュコヒーレンシ手法は、前述の加速機構を提供するために使用することができる唯一の技法ではない。例えば、代替の実施形態において、加速機構は、移転元処理回路と移転先処理回路との間に、移転元処理回路がその最新アーキテクチャ状態を移転先処理回路に提供する、専用バスを備える。そのような手法は典型的に、キャッシュコヒーレンシ手法を採用するよりも高いハードウェアコストを有するが、切り替えを実施するさらに高速の方式を提供することになり、所定の実装においては有利であり得る。
【0024】
スイッチコントローラは、多様な形式をとることができる。しかしながら、一実施形態において、スイッチコントローラは、第1の処理回路および第2の処理回路から、少なくとも1つのオペレーティングシステムを論理的に分離する、少なくとも仮想化ソフトウェアを含む。異なるネイティブ命令セットを有するハードウェア上で実行される特定のネイティブ命令セットを使用するアプリケーションの書き込みを可能にするために、仮想マシンを使用することが知られている。アプリケーションは、アプリケーションの命令が仮想マシンにネイティブである、仮想マシン環境で実行されるが、仮想マシンは、異なるネイティブ命令セットを有するハードウェア上で実行するソフトウェアによって実装される。上記の実施形態のスイッチコントローラによって提供される仮想化ソフトウェアは、作業負荷と基底のハードウェアプラットフォームとの間に分離を提供するので、仮想マシン環境のハイパーバイザに類似の方式で動作すると考えることができる。本発明のコンテキストでは、仮想化ソフトウェアは、作業負荷をある処理回路から別の処理回路へ移転するための効率的な機構を提供し、一方、その作業負荷を形成するオペレーティングシステムから、プロセッサ固有の構成情報をマスクする。
【0025】
移転刺激は、多様な理由で生成される可能性がある。しかしながら、一実施形態において、移転刺激のタイミングは、データ処理装置のエネルギー効率を向上させるように選択される。これは、多様な方式で達成することができる。例えば、性能に敏感なイベントをカウントするために(例えば、実行された命令の数、またはロードして記憶する動作の数)、処理回路の性能カウンタを設定することができる。サイクルカウンタまたはシステムタイマと組み合わされると、これによって、より高性能の処理回路に切り替えることによって遂行されるほうが適している場合がある、演算が集中するアプリケーションが実行中であることを識別すること、エネルギー効率が高い処理回路上で遂行されるほうが適している場合がある、IOが集中するアプリケーションを示すロードして記憶する動作の回数が多いことを識別すること等を可能にする。代替の手法は、アプリケーションが「大型」、「小型」、または「大型/小型」としてプロファイルされ、マークされることで、それによって、オペレーティングシステムは、これに従い作業負荷を移動するようにスイッチコントローラとインターフェースすることができる(本明細書において「大型」という用語は、より高性能の処理回路を指し、「小型」という用語は、よりエネルギー効率の高い処理回路を指す)。
【0026】
移転先処理回路が移転元処理回路から作業負荷の実施を成功裏に引き継ぐために必要なアーキテクチャ状態は、多様な形式をとることができる。しかしながら、一実施形態において、アーキテクチャ状態は、プログラムカウンタ値を含む、移転元処理回路の1つ以上の特殊目的レジスタの少なくとも最新値を含む。プログラムカウンタ値に加えて、多様な他の情報が特殊目的レジスタ内に記憶される場合がある。例えば、他の特殊目的レジスタとして、プロセッサモードの制御ビット、中断マスキング、実行状態およびフラグを保持する、プロセッサステータスレジスタ(例えば、ARMアーキテクチャのCPSRおよびSPSR)が挙げられる。他の特殊目的レジスタとして、データエンディアンを変更する、MMUをオンまたはオフにする、データ命令キャッシュをオンまたはオフにする等のためのビットを保持する、アーキテクチャ制御(ARMアーキテクチャのCP15システム制御レジスタ)が挙げられる。CP15の他の特殊目的レジスタは、例外アドレスおよびステータス情報を記憶する。
【0027】
一実施形態において、アーキテクチャ状態はさらに、移転元処理回路のアーキテクチャレジスタファイルに記憶された最新値を含む。当業者によって理解されるように、アーキテクチャレジスタファイルは、アプリケーションが稼動中に実行される命令によって参照されるレジスタを含み、これらのレジスタは、演算のためのソースオペランドを保持し、これらの演算の結果が記憶される場所を提供する。
【0028】
一実施形態において、第1の処理回路および第2の処理回路のうちの少なくとも1つは、単一処理装置を備える。さらに、一実施形態において、第1の処理回路および第2の処理回路のうちの少なくとも1つは、同一のマイクロアーキテクチャを備える1群の処理装置を備える。1つの特定の実施形態において、第1の処理回路は、同一のマイクロアーキテクチャを備える1群の処理装置を備える場合があり、一方、第2の処理回路は、(第1の処理回路を形成する群内の処理装置のマイクロアーキテクチャとは異なるマイクロアーキテクチャを備える)単一の処理装置を備える。
【0029】
電力制御回路が第1の処理回路および第2の処理回路を選択的に入れることができる、電力節約状態は、多様な形式をとることができる。一実施形態において、電力節約状態は、電源を切断した状態、部分的/完全データ保存状態、休眠状態、またはアイドル状態のうちの1つである。そのような状態は、当業者によってよく理解され、従って、本明細書において詳細に記載しない。
【0030】
第1の処理回路および第2の処理回路をマイクロアーキテクチャ上異なるように配置することができる方式はいくつか存在する。一実施形態において、第1の処理回路および第2の処理回路は、異なる実行パイプライン長、または異なる実行リソースのうちの少なくとも1つを有することによって、マイクロアーキテクチャ上異なる。パイプライン長の違いは、典型的に、動作周波数の違いになり、すなわち、性能に影響を与える。同様に、実行リソースの違いは、処理能力、したがって性能に影響を与える。例えば、より広範な実行リソースを有する処理回路は、任意の特定の時点でより多くの情報を処理することを可能にし、処理能力を向上させる。加えて、または代替として、ある処理回路は、他の処理回路よりも多くの実行リソース、例えば、より多くの算術論理装置(ALU)を有する場合があり、これも処理能力を向上させる。異なる実行リソースの別の例として、エネルギー効率の高い処理回路は、簡単な順次パイプラインを備えて提供される場合があり、一方、より高性能の処理回路は、非順次のスーパースカラーパイプラインを備えて提供される場合がある。
【0031】
例えば、GHz周波数で実行する、高性能処理回路を使用する際に発生する可能性がある更なる問題は、そのようなプロセッサが、範囲内で動作するように設計された温度限界に到達する、さらに時々は超える時に発生する可能性がある。これらの問題に対処することを模索するために知られている技法は、熱出力を削減するために、処理回路を低出力状態に入れることが関わり、クロックスロットルおよび/または電圧低下を含む場合があり、処理回路を一定期間完全にオフにする可能性さえある。しかしながら、本発明の実施形態の技法を適合すると、熱限界を超えることを回避するために代替の手法を実装することが可能である。具体的には、一実施形態において、移転元処理回路は、移転先処理回路よりも性能が高く、データ処理装置は、移転元処理回路の熱出力を監視し、前記熱出力が既定のレベルに到達すると前記移転刺激をトリガするための温度監視回路をさらに備える。そのような技法によると、作業負荷全体を、より高い性能の処理回路からより低い性能の処理回路へ移行することができ、その後、より少ない熱が生成され、移転元処理回路を冷却することを可能にする。したがって、より低い処理能力ではあるが、継続してプログラム実行を行うことができる間に、2つの処理回路を含むパッケージを冷却することができる。
【0032】
データ処理装置は、多様な方式で配置することができる。しかしながら、一実施形態において、第1の処理回路および第2の処理回路は、単一の集積回路内に存在する。
【0033】
第2の態様から見ると、本発明は、データ処理動作を実施するための第1の処理手段と、データ処理動作を実施するための第2の処理手段とを備え、第1の処理手段は、データ処理装置によって実施される作業負荷が、第1の処理手段または第2の処理手段のいずれか上で実施することができるように、第2の処理手段とアーキテクチャ上の互換性があり、前記作業負荷は、少なくとも1つのアプリケーションと、少なくとも1つのアプリケーションを実行するための少なくとも1つのオペレーティングシステムとを含み、第1の処理手段は、第1の処理手段の性能が第2の処理手段の性能とは異なるように、マイクロアーキテクチャ上で第2の処理手段とは異なり、第1の処理手段および第2の処理手段は、任意の時点で、作業負荷が第1の処理手段および第2の処理手段のうちの1つによって実施されるように構成され、移転刺激に応答して、移転元処理手段から移転先処理手段へ作業負荷の実施を移転するようにハンドオーバー動作を実施する移転制御手段であって、移転元処理手段は、第1の処理手段および第2の処理手段のうちの一方であり、移転先処理手段は、第1の処理手段および第2の処理手段のうちのもう一方である、移転制御手段をさらに備え、移転制御手段は、ハンドオーバー動作中に、(i)移転元処理手段に、ハンドオーバー動作が開始される時に第1の処理手段と第2の処理手段との間で共有される共有メモリからは利用可能ではない状態であり、移転先処理手段が、移転元処理手段から作業負荷の実施を成功裏に引き継ぐために必要である、その最新アーキテクチャ状態を移転先処理手段に利用可能にさせ、(ii)作業負荷の移転が少なくとも1つのオペレーティングシステムに透過的であるように、少なくとも1つのオペレーティングシステムから、既定のプロセッサ固有の構成情報をマスクするためである、データ処理装置を提供する。
【0034】
第3の態様から見ると、本発明は、データ処理動作を実施するための第1の処理回路と、データ処理動作を実施するための第2の処理回路であって、第1の処理回路は、データ処理装置によって実施される作業負荷が、第1の処理回路または第2の処理回路のいずれか上で実施することができるように、第2の処理回路とアーキテクチャ上の互換性があり、作業負荷は、少なくとも1つのアプリケーションと、少なくとも1つのアプリケーションを実行するための少なくとも1つのオペレーティングシステムとを備え、第1の処理回路は、第1の処理回路の性能が、第2の処理回路の性能とは異なるように、マイクロアーキテクチャ上で第2の処理回路とは異なる、第1の処理回路と第2の処理回路とを有するデータ処理装置を動作する方法であって、任意の時点で、第1の処理回路および第2の処理回路のうちの1つの上で作業負荷を実施するステップと、移転刺激に応答して、移転元処理回路から移転先処理回路へ作業負荷の実施を移転するようにハンドオーバー動作を実施するステップであって、移転元処理回路は、第1の処理回路および第2の処理回路のうちの一方であり、移転先処理回路は、第1の処理回路および第2の処理回路のうちのもう一方であり、ハンドオーバー動作中に、(i)移転元処理回路に、ハンドオーバー動作が開始される時に第1の処理回路と第2の処理回路との間で共有される共有メモリからは利用可能ではない状態であり、移転先処理回路が、移転元処理回路から作業負荷の実施を成功裏に引き継ぐために必要である、その最新アーキテクチャ状態を移転先処理回路に利用可能にさせ、(ii)作業負荷の移転が少なくとも1つのオペレーティングシステムに透過的であるように、少なくとも1つのオペレーティングシステムから、既定のプロセッサ固有の構成情報をマスクする、ステップと、を含む、方法を提供する。
【図面の簡単な説明】
【0035】
本発明を、添付の図面に例示されるその実施形態を参照しながら、例示のみの目的でさらに説明する。
【図1】一実施形態によるデータ処理システムのブロック図である。
【図2】一実施形態によるスイッチコントローラ(本明細書において作業負荷移転コントローラとも呼ばれる)の提供が例示され、データ処理装置によって実施されている作業負荷を、その作業負荷を実施するために使用されているデータ処理装置内の特定のハードウェアプラットフォームから論理的に分離する。
【図3】一実施形態による、切り替え刺激に応答して作業負荷を移転元プロセッサから移転先プロセッサへ移転するために、移転元プロセッサおよび移転先プロセッサ両方によって実施されるステップを模式的に示す図である。
【図4A】図3の保存動作中に、移転元処理回路の最新アーキテクチャ状態をその関連キャッシュに記憶するステップを模式的に示す。
【図4B】図3の復元動作中に、移転元処理回路の最新アーキテクチャ状態の移転先処理回路への移転を制御するために、スヌープ制御装置の使用を模式的に示す。
【図5】一実施形態による、移転動作中に移転元処理回路の最新アーキテクチャ状態を移転先処理回路へ移転するための加速機構を提供するための代替構造を示す。
【図6A】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図6B】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図6C】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図6D】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図6E】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図6F】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図6G】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図6H】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図6I】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図7】性能によるエネルギー効率の変動を示し、一実施形態による、図1に示された多様なプロセッサコアがその曲線に沿った多様な点でどのように使用されるかを示すグラフである
【図8A】一実施形態において、低性能プロセッサパイプラインおよび高性能プロセッサパイプラインがそれぞれどのように利用されるかを模式的に示す。
【図8B】一実施形態において、低性能プロセッサパイプラインおよび高性能プロセッサパイプラインがそれぞれどのように利用されるかを模式的に示す。
【図9】処理作業負荷の実施が低性能、高エネルギー効率の処理回路、および高性能、低エネルギー効率の処理回路の間で切り替えられる際に、データ処理システムによって消費される電力の変動を示すグラフである。
【発明を実施するための形態】
【0036】
図1は、一実施形態によるデータ処理システムを模式的に示すブロック図である。図1に示されるように、システムは、2つのアーキテクチャ上の互換性がある処理回路インスタンス(処理回路0(10)および処理回路1(50))を含むが、これらの異なる処理回路インスタンスは、異なるマイクロアーキテクチャを有する。具体的には、処理回路10は、処理回路50よりも高い性能で動作するが、処理回路10は、処理回路50よりもエネルギー効率が低いというトレードオフがあるように配置される。マイクロアーキテクチャ上の違いの例は、図8Aおよび8Bを参照して以下に詳細に説明する。
【0037】
各処理回路は、単一の処理装置(本明細書においては、プロセッサコアとも呼ばれる)を含む場合があるが、代替として、処理回路インスタンスのうちの少なくとも1つはそれ自体、同じマイクロアーキテクチャを備えた1群の処理装置を備える場合がある。
【0038】
図1に示される例では、処理回路10は、2つのプロセッサコア15、20を含み、両者はアーキテクチャ上でもマイクロアーキテクチャ上でも同じである。対照的に、処理回路50は、単一のプロセッサコア55のみを含む。以下の記載では、プロセッサコア15、20は典型的に、これらのコアは性能を重視して設計されているために、プロセッサコア55よりも複雑度が高く、対照的にプロセッサコア55は典型的に、エネルギー効率を重視して設計されているために実質的に複雑度が低いので、プロセッサコア15、20は、「大型」コアと呼ばれ、プロセッサコア55は「小型」コアと呼ばれる。
【0039】
図1では、コア15、20、55の各々は、それぞれ、それ独自に関連したローカルレベル1キャッシュ25、30、60を有すると想定され、これらは、関連コアによって参照されるための命令およびデータの両方を記憶するための統一キャッシュとして配置される場合、または個別のレベル1データおよびレベル1命令キャッシュを提供する、ハーバードアーキテクチャによって配置することができる。コアの各々は独自の関連レベル1キャッシュを有すると示されるが、これは要件ではなく、代替の実施形態では、コアのうちの1つ以上はローカルキャッシュを有さない場合がある。
【0040】
図1に示される実施形態において、処理回路10はまた、コア15とコア20との間で共有されるレベル2キャッシュ35も含み、スヌープ制御装置40は、2つのレベル1キャッシュ25、30とレベル2キャッシュ35との間のキャッシュコヒーレンシを保証するために使用される。一実施形態において、レベル2キャッシュは、包括的キャッシュとして配置され、従って、レベル1キャッシュ25、30のいずれかに記憶される任意のデータは、レベル2キャッシュ35にも存在する。当業者によって十分理解されるように、スヌープ制御装置40の目的は、多様なキャッシュ間のキャッシュコヒーレンシを保証することであり、このため、アクセスリクエストを発行すると、コア15、20のいずれも必ず最新バージョンの任意のデータにアクセスすることを保証することができる。したがって、例示のみを目的として、コア15が関連レベル1キャッシュ25の中に存在しないデータに対するアクセスリクエストを発行した場合、スヌープ制御装置40は、レベル1キャッシュ25から伝播されたリクエストをインターセプトし、レベル1キャッシュ30および/またはレベル2キャッシュ35を参照して、そのアクセスリクエストが、これらの他のキャッシュのうちの1つの内容からサービスすることができるかを判定する。データがキャッシュのうちのいずれにも存在しない場合にのみ、アクセスリクエストは、相互接続70を介して、メインメモリ80に伝播され、メインメモリ80は、処理回路10および処理回路50の両方の間で共有されるメモリである。
【0041】
相互接続70内に提供されたスヌープ制御装置75は、スヌープ制御装置40に類似の様式で動作するが、このインスタンスでは、処理回路10内部に提供されたキャッシュ構造と、処理回路50内部に提供されたキャッシュ構造との間のコヒーレンシを維持することを模索する。レベル2キャッシュ35が包括的キャッシュである例では、スヌープ制御装置は、処理回路10のレベル2キャッシュ35と、処理回路50のレベル1キャッシュ60との間のハードウェアキャッシュコヒーレンシを維持する。しかしながら、レベル2キャッシュ35が、排他的レベル2キャッシュとして配置される場合、スヌープ制御装置75は、処理回路10のキャッシュと処理回路50のキャッシュ60との間のキャッシュコヒーレンシを保証するために、レベル1キャッシュ25、30の中に保持されたデータもスヌープする。
【0042】
一実施形態によると、処理回路10および処理回路50のうちの1つだけが、任意の時点で作業負荷を積極的に処理することになる。本明細書の目的では、作業負荷は、図2の参照番号100によって模式的に示されるように、少なくとも1つのアプリケーションと、その少なくとも1つのアプリケーションを実行するための少なくとも1つのオペレーティングシステムを含む。この例では、2つのアプリケーション105、110は、オペレーティングシステム115の制御下で実行中であり、アプリケーション105、110およびオペレーティングシステム115はまとめて作業負荷100を形成する。アプリケーションは、ユーザレベルに存在すると考えることができ、一方、オペレーティングシステムは、特権レベルに存在し、アプリケーションおよびオペレーティングシステムによって形成される作業負荷はまとめて、ハードウェアプラットフォーム125(ハードウェアレベル概念を表す)上で実行する。任意の時点で、そのハードウェアプラットフォームは、処理回路10、または処理回路50のいずれかによって提供される。
【0043】
図1に示されるように、電力制御回路65は、処理回路10および処理回路50に電力を選択的かつ独立的に供給するために、提供される。一方の処理回路からもう一方の処理回路へ作業負荷を移転する前は、処理回路のうちの1つだけ、すなわち、現在作業負荷を実施している処理回路(移転元処理回路)が典型的に完全に駆動し、もう一方の処理回路(移転先処理回路)は典型的に電力節約状態にある。作業負荷が一方の処理回路からもう一方へ移転されるべきであることが判定されると、移転動作中、両方の処理回路が駆動状態にある期間が存在するが、移転動作のある時点で、作業負荷が移転される移転元処理回路は、次いで、電力節約状態に入る。
【0044】
電力節約状態は、実装に応じて、多様な形式をとることができるので、例えば、電源を切断した状態、部分的/完全データ保存状態、休眠状態、またはアイドル状態のうちの1つの場合がある。そのような状態は、当業者によってよく理解され、したがって、本明細書において詳細に記載しない。
【0045】
記載の実施形態の目的は、作業負荷の必要な性能/エネルギーレベルに応じて、処理回路の間で作業負荷の切り替えを実施することである。したがって、作業負荷に、ゲームアプリケーションの実行等、1つ以上の高負荷タスクの実行が関わる場合、作業負荷は、大型コア15、20のうちの1つを使用、または両方を使用のいずれかで、高性能処理回路10上で実行することができる。しかしながら、対照的に、作業負荷が、MP3再生等の低負荷タスクだけを実施する場合、作業負荷全体を処理回路50に移転することができ、したがって、処理回路50を利用することからエネルギー効率からの利点を実現することができる。
【0046】
そのような切り替え能力を最大限に利用するためには、作業負荷を移転する動作が、切り替えの利点を否定する程度までエネルギーを消費しないために、さらに切り替えプロセスがそれ自体、何らかの顕著な程度まで性能を低下させないように十分迅速であることを保証するために、切り替えが単純かつ効率的な様式で発生することを可能にする機構を提供することが必要である。
【0047】
一実施形態において、そのような利点は少なくとも部分的に、処理回路10を処理回路50とアーキテクチャ上で互換性があるように配置することによって達成される。これによって、正しい動作を保証しながら、作業負荷が、一方の処理回路からもう一方へ移行することができることを保証する。そのようなアーキテクチャ上の互換性は最低限、同じ命令セットアーキテクチャを共有するために、処理回路10および50の両方に必要である。しかしながら、一実施形態では、そのようなアーキテクチャ上の互換性は、2つの処理回路のインスタンスが、プログラマの観点から同一と認識されることを保証するように、より高い互換性要件も必要とする。一実施形態において、これには、同じアーキテクチャレジスタ、およびアプリケーションを実行時にオペレーティングシステムによって使用されるデータを記憶する1つ以上の特殊目的レジスタの使用が関わる。そのようなレベルのアーキテクチャ上の互換性によって、処理回路間の作業負荷の移転をオペレーティングシステム115からマスクすることが可能になるので、オペレーティングシステムは、作業負荷が処理回路10上または処理回路50上で実行されているかに関して全く認識しない。
【0048】
一実施形態において、一方の処理回路からもう一方への移転の取扱は、図2に示されるスイッチコントローラ120(図中ではバーチャライザ、本明細書の他の場所では作業負荷移転コントローラとも呼ばれる)によって管理される。スイッチコントローラは、ハードウェア、ファームウェア、および/またはソフトウェア特徴の組み合わせによって具現化することができるが、一実施形態では、1つのネイティブ命令セットに書き込まれたアプリケーションが、異なるネイティブ命令セットを適合するハードウェアプラットフォーム上で実行されることを可能にするために、仮想マシンに見出されるハイパーバイザソフトウェアに性質的に類似したソフトウェアを含む。2つの処理回路10、50の間のアーキテクチャ上の互換性に起因して、スイッチコントローラ120は、既定のプロセッサ固有の構成情報のうちの1つ以上の項目をオペレーティングシステムからマスクすることだけによって、オペレーティングシステム115から移転をマスクすることができる。例えば、プロセッサ固有の構成情報は、CP15プロセッサIDレジスタおよびCP15キャッシュタイプレジスタの内容を含む場合がある。
【0049】
そのような実施形態において、スイッチコントローラは、移転先回路が作業負荷の実施を成功裏に引き継ぐ用意ができていることを可能にするために、移転の時点で移転元処理回路によって保持され、移転が開始される時点では共有メモリ80から既に利用可能ではない、任意の最新アーキテクチャ状態が、移転先処理回路に利用可能になっていることを保証する必要があるに過ぎない。前述の例を使用すると、そのようなアーキテクチャ状態は典型的に、移転元処理回路のアーキテクチャレジスタファイルの中に記憶された最新値、さらに移転元処理回路の1つ以上の特殊目的レジスタの最新値を含む。処理回路10、50の間のアーキテクチャ上の互換性に起因して、この最新アーキテクチャ状態を移転元処理回路から移転先処理回路へ移転することができる場合、移転先処理回路は、移転元処理回路から作業負荷の実施を成功裏に引き継ぐ用意ができている。
【0050】
処理回路10、50の間のアーキテクチャ上の互換性は、2つの処理回路の間の作業負荷全体の移転を促進するが、一実施形態においては、処理回路10、50は、2つの処理回路に関連して、異なる性能特徴が存在し、したがってエネルギー消費特徴等、マイクロアーキテクチャ上では相互に異なる。前述のように、一実施形態において、処理回路10は、高性能で、エネルギー消費が高い回路であり、一方、処理回路50は、低性能で、エネルギー消費が低い処理回路である。2つの処理回路は、いくつかの点でマイクロアーキテクチャ上では相互に異なる可能性があるが、典型的には、異なる実行パイプライン長、および/または異なる実行リソースのうちの少なくとも1つを有する。パイプライン長の違いは、典型的に、動作周波数の違いになり、すなわち、性能に影響を与える。同様に、実行リソースの違いは、処理能力、したがって性能に影響を与える。したがって、例として、処理回路10は、処理能力を向上するために、より広範な実行リソースおよび/またはより多くの実行リソースを有する場合がある。さらに、プロセッサコア15、20内のパイプラインは、非順次のスーパースカラー処理を実施するように配置される場合があり、一方、エネルギー効率が高い処理回路50内のより単純なコア55は、順次パイプラインとして配置される場合がある。マイクロアーキテクチャ上の違いの更なる検討は、図8Aおよび8Bを参照して後述する。
【0051】
スイッチコントローラ120に、ある処理回路から別の処理回路へ作業負荷を移転させるためにハンドオーバー動作をさせる移転刺激の生成は、多様な理由でトリガすることができる。例えば、一実施形態では、アプリケーションは、「大型」、「小型」、または「大型/小型」としてプロファイルされ、マークされる場合があり、それによって、オペレーティングシステムは、これに従い作業負荷を移動するようにスイッチコントローラとインターフェースすることができる。したがって、そのような手法によって、移転刺激の生成は、実行されるアプリケーションの特定の組み合わせにマップすることができ、高性能が必要な場合には、作業負荷が高性能処理回路10上で実行され、その性能が必要ではない場合には、その代わりにエネルギー効率の高い処理回路50が使用されることを保証する。他の実施形態においては、1つ以上の入力に基づいて、一方の処理回路からもう一方への作業負荷の移転をいつトリガするかを動的に判定するために、アルゴリズムを実行することができる。例えば、性能に敏感なイベントをカウントするために(例えば、実行された命令の数、またはロードして記憶する動作の数)、処理回路の性能カウンタを設定することができる。サイクルカウンタまたはシステムタイマと組み合わされると、これによって、より高性能の処理回路に切り替えることによって遂行されるほうが適している場合がある、計算が非常に集中するアプリケーションが実行されることを識別すること、エネルギー効率が高い処理回路上で遂行されるほうが適している場合がある、IOが集中するアプリケーションを示すロードと記憶の操作の回数が多いことを識別すること等を可能にする。
【0052】
移転刺激がいつ刺激される場合があるかの更なる例として、データ処理システムは、動作中にデータ処理システムの温度を監視するための1つ以上の温度センサ90を含む場合がある。最新の高性能処理回路、例えば、GHz周波数で実行する回路は、時として、範囲内で動作することが設計されていた温度限界に到達する、または超える場合があり得る。そのような温度センサ90を使用することによって、そのような温度限界が到達した時を検出することができ、これらの条件下で、データ処理システムの全体冷却をもたらすために、よりエネルギー効率の高い処理回路への作業負荷の移転をトリガするように、移転刺激を生成することができる。したがって、処理回路10が高性能処理回路であり、処理回路50がより低いエネルギーを消費するより低性能処理回路である、図1の例を考えると、デバイスの温度限界に到達した時に処理回路10から処理回路50へ作業負荷を移行することによって、より低い処理能力にも関わらず、依然として継続してプログラム実行を行うことを可能にしながら、デバイスのその後の冷却をもたらす。
【0053】
図1には2つの処理回路10、50が示されるが、上述の実施形態の技法は、3つ以上の異なる処理回路を組み入れるシステムにも適用することができ、データ処理システムが、より広範な性能/エネルギーレベルに及ぶことを可能にすることが理解されるであろう。そのような実施形態において、異なる処理回路の各々は、処理回路間の作業負荷全体の容易な移行を可能にするために、アーキテクチャ上では相互に互換性があるように配置されるが、必要な性能/エネルギーレベルに応じて、それらの処理回路の使用の選択を可能にするように、マイクロアーキテクチャ上では相互に異なる。
【0054】
図3は、移転刺激の受信後に作業負荷が移転元プロセッサから移転先プロセッサへ移転される時に移転元プロセッサ上および移転先プロセッサ上の両方で実施されるステップの順序を示す流れ図である。そのような移転刺激は、オペレーティングシステム115またはバーチャライザ120によって生成される場合があり、システムファームウェアインターフェースを介して、ステップ200で、移転元プロセッサ(作業負荷だけでなく、スイッチコントローラ120の少なくとも一部を形成するバーチャライザソフトウェアも実行する)によって切り替え刺激が検出される。ステップ200の移転刺激(本明細書では切り替え刺激とも呼ばれる)の受信によって、電力コントローラ65は、移転先プロセッサ上で電源オンおよびリセット動作205を開始する。そのような電源オンおよびリセットに続いて、移転先プロセッサは、ステップ210でそのローカルキャッシュを無効にし、次いで、ステップ215でスヌープを有効にする。この時点で、移転先プロセッサは、作業負荷の移転を行う準備ができていることを移転元プロセッサに信号送信し、この信号によって、移転元プロセッサに、ステップ225での状態保存動作を実行させる。この状態保存動作は、図4Aを参照して以下に詳細を記載するが、一実施形態においては、ハンドオーバー動作が開始される時点で、移転元処理回路が、共有メモリからは利用可能ではなく、移転先プロセッサが作業負荷の実施を成功裏に引き継ぐために必要である、その最新アーキテクチャ状態のうちのいずれかをそのローカルキャッシュに記憶することが関わる。
【0055】
状態保存動作225に続いて、状態切り替え信号が移転先プロセッサ230に発行され、移転先プロセッサに対して、必要なアーキテクチャ状態を呼び出すためには、移転元プロセッサのスヌープを今開始しなければならないことを示す。このプロセスは、図4Bを参照して以下に詳細を記載する状態復元動作230を介して発生するが、一実施形態では、移転先処理回路が、相互接続70内のスヌープ制御装置75によってインターセプトされ、移転元プロセッサのローカルキャッシュ内にキャッシュされたコピーのアーキテクチャ状態を呼び出し、移転先プロセッサに返すようにさせる、一連のアクセスを開始することが関わる。
【0056】
ステップ230に続いて、移転先プロセッサは、作業負荷の処理を引き継ぐ用意ができ、したがって、ステップ235で正常動作が開始する。
【0057】
一実施形態において、移転先プロセッサ上で正常動作が開始すると、任意のダーティデータを共有メモリ80にフラッシュするために、ステップ250で示されるように、移転元プロセッサのキャッシュを消去することができ、次いで、ステップ255で移転元プロセッサの電源を切断することができる。しかしながら、一実施形態では、移転先プロセッサの効率性をさらに向上させるため、移転元プロセッサは、図3でスヌープ期間として示される期間、駆動状態のままでいるように配置される。この期間中、移転元回路のキャッシュのうちの少なくとも1つは駆動状態のままでいるので、移転先プロセッサによって発行されたアクセスリクエストに応答して、スヌープ制御回路75によってその内容をスヌープすることができる。図3に記載されるプロセスを使用して作業負荷全体を移転した後、移転先プロセッサが作業負荷の動作を開始する前の少なくとも最初の期間、作業負荷の実施中に必要なデータのうちのいくつかは、移転元プロセッサのキャッシュに存在する。移転元プロセッサが、その内容をメモリにフラッシュし、電源を切断していた場合、そのローカルキャッシュには大量のキャッシュミスが存在し、共有メモリからデータを多量に取得することになり、移転先プロセッサのキャッシュが「準備中」、すなわち、作業負荷によって指定された動作を実施するために移転先プロセッサによって必要とされるデータ値で充填される間に顕著な性能影響がもたらされるので、移転先プロセッサは、これらの早期段階中、比較的非効率的に動作することになる。しかしながら、スヌープ期間中に移転元プロセッサのキャッシュを駆動したままにすることによって、スヌープ制御回路75は、移転元回路のキャッシュを参照することによって、大量のこれらのキャッシュミスリクストをサービスすることが可能になり、共有メモリ80からそのデータを呼び出すことに比較して、顕著な性能利点を生み出す。
【0058】
しかしながら、この性能利点は、切り替え後の所定時間のみ継続することが予想され、その後は、移転元プロセッサのキャッシュの内容が古くなる。したがって、ある時点で、スヌープ停止イベントが生成されて、ステップ245でスヌープを無効にし、その後、ステップ250で移転元プロセッサのキャッシュが消去され、次いで、ステップ255で移転元プロセッサの電源が切断される。スヌープ停止イベントが生成される場合がある多様な事例の検討は、図6Gを参照して以下に詳細を記載する。
【0059】
図4Aは、一実施形態にしたがい、図3のステップ225で実施される保存動作を模式的に示す。具体的には、一実施形態において、移転元処理回路300からローカルキャッシュ330に記憶されることが必要なアーキテクチャ状態は、データ処理動作の処理中に算術論理装置(ALU)305によって参照されるレジスタファイル310の内容、さらにその作業負荷が移転先処理回路によって引き継がれることを成功裏に可能するために、作業負荷によって必要とされる多種多様な情報を識別する多様な特殊目的レジスタ320の内容からなる。特殊目的レジスタ320の内容は、例えば、現在実行されている命令を識別するプログラムカウンタ値、さらに多様な他の情報を含む。例えば、他の特殊目的レジスタとして、プロセッサモードの制御ビット、中断マスキング、実行状態およびフラグを保持する、プロセッサステータスレジスタ(例えば、ARMアーキテクチャのCPSRおよびSPSR)が挙げられる。他の特殊目的レジスタとして、データエンディアンを変更する、MMUをオンまたはオフにする、データ/命令キャッシュをオンまたはオフにする等のビットを保持する、アーキテクチャ制御(ARMアーキテクチャのCP15システム制御レジスタ)が挙げられる。CP15の他の特殊目的レジスタは、例外アドレスおよびステータス情報を記憶する。
【0060】
図4Aに模式的に示されるように、移転元処理回路300は、典型的に、いくつかのプロセッサ固有の構成情報315も保持するが、この情報は、移転先処理回路には該当しないので、キャッシュ330に保存する必要はない。プロセッサ固有の構成情報315は、典型的に、ロジック定数を使用して、移転元処理回路300にハードコードされ、例えば、CP15プロセッサIDレジスタの内容(各処理回路で異なる)、またはCP15キャッシュタイプレジスタの内容(キャッシュ25、30、60の構成に依存し、例えば、キャッシュが異なるライン長を有することを示す)を含む場合がある。オペレーティングシステム115が、プロセッサ固有の構成情報315を必要とする場合、プロセッサが既にハイパーバイザモードにない限り、ハイパーバイザモードへの実行トラップが発生する。これに応答して、バーチャライザ120は、一実施形態において、リクエストされた情報の値を示す場合があるが、別の実施形態では、「仮想」値を返す。プロセッサID値の場合、この仮想値は、「大型」および「小型」プロセッサ両方で同じであるように選択することができるので、これにより、バーチャライザ120によって、実際のハードウェア構成がオペレーティングシステム115から隠されるようにする。
【0061】
図4Aに模式的に示されるように、保存動作中、レジスタファイル310および特殊目的レジスタ320の内容は、移転元処理回路によって、キャッシュ330の中に記憶されて、キャッシュされたコピー335を形成する。このキャッシュされたコピーは、次いで共有可能とマークされ、移転先プロセッサが、スヌープ制御装置75を介して、この状態をスヌープすることを可能にする。
【0062】
移転先プロセッサでその次に実施される復元動作は、図4Bに模式的に示される。具体的には、移転先処理回路350(その独自のローカルキャッシュを有する場合も有さない場合もある)は、アーキテクチャ状態の特定の項目に対するリクエストを発行し、そのリクエストは、スヌープ制御装置75によってインターセプトされる。スヌープ制御装置は、次いで、移転元処理回路のローカルキャッシュ330にスヌープリクエストを発行して、アーキテクチャ状態のその項目が移転元のキャッシュに存在するかを判定する。図4において記載される保存動作中に行われるステップによって、移転元のキャッシュ330でヒットが検出され、そのキャッシュされたアーキテクチャ状態は、スヌープ制御装置75を介して、移転先処理回路350へ返されることになる。このプロセスは、アーキテクチャ状態の項目全てが移転元処理回路のキャッシュのスヌープを介して呼び出されるまで、反復的に繰り返すことができる。移転先処理回路350に関する任意のプロセッサ固有の構成情報は典型的に、前述のように移転先処理回路350にハードコードされる。このため、復元動作が完了すると、移転先処理回路は、作業負荷の取扱を成功裏に引き継ぐことを可能にするために必要な情報を全て有する。
【0063】
さらに、一実施形態において、作業負荷100が「大型」処理回路10または「小型」処理回路50によって実施されるかどうかに関わりなく、バーチャライザ120は、同じ値を有する仮想構成情報をオペレーティングシステム115に提供し、このため、「大型」および「小型」処理回路10、50の間のハードウェアの違いは、バーチャライザ120によってオペレーティングシステム115からマスクされる。すなわち、オペレーティングシステム115は、作業負荷100の実施が、異なるハードウェアプラットフォームに移転されたことを認識しない。
【0064】
図4Aおよび4Bを参照して記載した保存および復元動作によると、多様なプロセッサインスタンス10、50は、移転元プロセッサから移転先プロセッサへアーキテクチャ状態を移転する際に関わる時間、エネルギー、およびハードウェアの複雑度を軽減するために、相互にハードウェアキャッシュコヒーレントであるように配置される。本技法は、移転元プロセッサから移転先プロセッサへ移転されなければならず、移転動作が行われる時点で共有メモリからは利用可能ではない、状態の全てを記憶するために移転元プロセッサのローカルキャッシュを使用する。状態は、移転元プロセッサのキャッシュ内で共有可能とマークされているため、これによって、ハードウェアキャッシュコヒーレントの移転先プロセッサが、この情報を移転動作中にスヌープすることを可能にする。そのような技法を使用することによって、その状態をメインメモリ、またはローカルメモリのいずれかがマップした記憶要素に保存する必要なく、プロセッサインスタンス間で状態を移転することが可能である。したがって、これは、顕著な性能およびエネルギー消費の利点を生み、エネルギー消費利点を実現することを模索するために、作業負荷を切り替えることが適切である多様な状況が増える。
【0065】
しかしながら、前述のキャッシュコヒーレンスを使用する技法は、共有メモリを介して最新アーキテクチャ状態をルーティングすることなく、移転先プロセッサに最新アーキテクチャ状態を利用可能にするための1つの加速機構を提供するが、そのような加速機構を実施することができる唯一の方式ではない。例えば、図5は、ハンドオーバー動作中にアーキテクチャ状態が移転可能であるために、専用バス380が移転元処理回路300と移転先処理回路350との間に提供される、代替機構を示す。したがって、このような実施形態では、図3の保存および復元動作225、230は、専用バス380を利用する代替の移転機構によって置換される。そのような手法は典型的に、キャッシュコヒーレンシ手法を採用するよりも高いハードウェアコストを有するが(キャッシュコヒーレンシ手法は典型的に、データ処理システム内に既に位置するハードウェアを利用する)、切り替えを実施するさらに高速の方式を提供することになり、所定の実装においては有利であり得る。
【0066】
図6A〜6Iは、移転元処理回路300から移転先処理回路350へ作業負荷の実施を移転するために実施される、一連のステップを模式的に示す。移転元処理回路300は、処理回路10、50のうち、移転前に作業負荷を実施している方であり、移転先処理回路は、処理回路10、50のもう一方である。
【0067】
図6Aは、移転元処理回路300が、電力コントローラ65によって駆動され、処理作業負荷100を実施中であり、一方、移転先処理回路350が電力節約状態にあるという、初期状態のシステムを示す。この実施形態において、電力節約状態は、電源切断状態であるが、前述のように、他の種類の電力節約状態も使用されてもよい。作業負荷100は、アプリケーション105、110と、アプリケーション105、110を実行するためのオペレーティングシステム115とを含み、バーチャライザ120によって、移転元処理回路300のハードウェアプラットフォームから、抽象化される。作業負荷100を実施中、移転元処理回路300は、図4Aに示されるように、例えば、レジスタファイル310および特殊目的レジスタ320の内容を含む場合がある、アーキテクチャ状態400を維持する。
【0068】
図6Bでは、移転刺激430はバーチャライザ120によって検出される。図6Bでは、移転刺激430は外部イベント(例えば、温度センサ90による温度上昇の検出)として示されるが、移転刺激430はまた、バーチャライザ120自体によって、またはオペレーティングシステム115(例えば、オペレーティングシステム115は、特定のタイプのアプリケーションがプロセスされると、バーチャライザ120に伝達するように構成することができる)によってトリガされたイベントであることも可能である。バーチャライザ120は、移転刺激430に応答して、電力コントローラ65を制御することによって、移転先処理回路350を駆動状態に入れるために、移転先処理回路350に電力を供給する。
【0069】
図6Cでは、移転先処理回路350が、バーチャライザ120の実行を開始する。バーチャライザ120は、移転先処理回路350を駆動する時に、キャッシュ420の中に存在する場合がある、誤ったデータ値によって生じる処理エラーを防止するために、そのキャッシュ420を無効にするように、移転先処理回路350を制御する。移転先キャッシュ420が無効化されている間、移転元処理回路350は、作業負荷100を引き続き実施する。移転先キャッシュ420の無効化が完了すると、バーチャライザ120は、作業負荷100のハンドオーバーの準備ができたことを、移転元処理回路300に信号送信するように、移転先処理回路350を制御する。移転先処理回路350のハンドオーバー動作の準備できるまで、移転元処理回路300上で作業負荷100の処理を継続することによって、ハンドオーバーの実施の影響を軽減することができる。
【0070】
次の段階で、図6Dに示されるように、移転元処理回路300は、作業負荷100の実施を停止する。この段階中、移転元処理回路300も移転先処理回路350も作業負荷100を実施しない。アーキテクチャ状態400のコピーが、移転元処理回路300から移転先処理回路350へ移転される。例えば、アーキテクチャ状態400は、図4Aおよび4Bに示されるように、移転元キャッシュ410に保存され、移転先処理回路350に復元することができる、または図5に示されるように、専用バス上から移転することができる。アーキテクチャ状態400は、共有メモリ80の中に既に存在する情報以外に、移転先処理回路350が作業負荷100を実施するために必要な状態情報全てを含む。
【0071】
アーキテクチャ状態400を移転先処理回路350に移転させると、移転元処理回路300は、移転元キャッシュ410が駆動状態のままである以外、電力制御回路65(図6Eを参照)によって電力節約状態になる。一方、移転先処理回路350は、移転されたアーキテクチャ状態400を使用して、作業負荷100の実施を開始する。
【0072】
移転先処理回路350が作業負荷100の処理を開始すると、スヌープ期間が開始する(図6Fを参照)。スヌープ期間中、スヌープ制御装置75は、移転先処理回路350に代わって、移転元キャッシュ410に記憶されたデータをスヌープし、データを呼び出すことができる。移転先処理回路350が、移転先キャッシュ420の中に存在しないデータをリクエストすると、移転先処理回路350は、スヌープ制御装置75からデータをリクエストする。スヌープ制御装置75は、次いで、移転元キャッシュ410をスヌープし、スヌープの結果キャッシュヒットがある場合、スヌープ制御装置75は、移転元キャッシュ410からスヌープしたデータを呼び出し、移転先処理回路350に返し、そこでスヌープしたデータを移転先キャッシュ420に記憶することができる。一方、移転元キャッシュ410のスヌープの結果がキャッシュミスの場合、リクエストされたデータは、共有メモリ80から取得され、移転先処理回路350に返される。移転元キャッシュ410のデータにアクセスするほうが、共有メモリ80にアクセスするよりも時間が短く、より少ないエネルギーを必要とするため、ある期間移転元キャッシュ410をスヌープすることによって、作業負荷100の移転先処理回路350へのハンドオーバーに続く最初の期間中の処理性能を向上させ、エネルギー消費を削減する。
【0073】
図6Gに示されるステップで、スヌープ制御装置75は、移転元キャッシュ410を駆動状態に維持することがもはや効率的ではないことを示す、スヌープ停止イベントを検出する。スヌープ停止イベントは、スヌープ期間の終了をトリガする。スヌープ停止イベントは、スヌープ制御回路75によって監視される1組のスヌープ停止イベントのうちの任意の1つの場合がある。例えば、1組のスヌープ停止イベントは、以下のイベントのうちの任意の1つ以上を含むことができる。
a)移転先処理回路350が作業負荷100の実施を開始した後に、移転元キャッシュ410のキャッシュヒットとなるスヌープヒットのパーセントまたは比(すなわち、スヌープヒットの数/合計スヌープの数に比例する量)が、既定の閾値レベル未満になる場合
b)移転先処理回路350が作業負荷100の実施を開始して以来実施されたトランザクションの数、または既定のタイプのトランザクション(例えば、キャッシュ可能なトランザクション)の数が、既定の閾値を超える場合
c)移転先処理回路350が作業負荷100の実施を開始して以来経過した処理サイクルの数が、既定の閾値を超える場合
d)移転先処理回路350が作業負荷100の実施を開始して以来初めて、共有メモリ80の特定領域がアクセスされた場合
e)移転先処理回路350が作業負荷100の実施を開始した後、初期期間中にアクセスされた、共有メモリ80の特定領域が、既定のサイクル数または既定の期間中、アクセスされない場合
f)移転先処理回路350が、移転された作業負荷100の実施を開始して以来初めて、既定のメモリ場所に書き込む場合
【0074】
これらのスヌープ停止イベントは、スヌープ制御装置75を含む、コヒーレント相互接続70の中のプログラム可能なカウンタを使用して検出することができる。他の種類のスヌープ停止イベントも、1組のスヌープ停止イベントに含められる場合がある。
【0075】
スヌープ停止イベントを検出すると、スヌープ制御装置75は、スヌープ停止信号440を移転元プロセッサ300へ送信する。スヌープ制御装置75は、移転元キャッシュ410のスヌープを停止し、今後は共有メモリ80からリクエストされたデータを取得し、取得したデータを、取得したデータをキャッシュすることができる、移転先処理回路350に返すことによって、移転先処理回路350からのデータアクセスリクエストに応答する。
【0076】
図6Hでは、移転元キャッシュの制御回路は、スヌープ停止信号440に応答して、共有メモリ80に任意の有効およびダーティデータ値を保存するために(すなわち、そのキャッシュされた値は、共有メモリ80の中の対応する値よりも最新である)、キャッシュ410を消去する。
【0077】
図6Iでは、移転元キャッシュ410は、次いで、電力コントローラ65によって電力が切断されるので、移転元処理回路300は全体が電力節約状態になる。移転先処理回路350は、作業負荷100の実施を継続する。オペレーティングシステム115の観点から、この状況はこうして図6Aと同じである。オペレーティングシステム115は、作業負荷の実行がある処理回路から別の処理回路へ移転したことを認識しない。別の移転刺激が発生すると、作業負荷の実施を切り替えて第1のプロセッサに戻すために(この場合、処理回路10、50の「移転元処理回路」と「移転先処理回路」は逆になる)、図6A〜6Iの同じステップを使用することができる。
【0078】
図6A〜6Iの実施形態において、キャッシュ410および移転元処理回路300に対する独立的な電力制御が有効であるので、移転元処理回路300は、移転元キャッシュ410以外、移転先処理回路350が作業負荷の実施を開始すると電力を切断することができ(図6Eを参照)、一方、移転元処理回路350のキャッシュ410だけが駆動状態のままである(図6F〜6Hを参照)。移転元キャッシュ410は、次いで、図6Iで電力が切断される。この手法は、エネルギーを節約するために、特に、移転元処理回路300が「大型」処理回路10である場合に有用とすることができる。
【0079】
しかしながら、スヌープ期間中に移転元処理回路300全体を引き続き駆動し、次いで、スヌープ期間および移転元キャッシュ410の消去の終了に続いて、移転元処理回路300全体を、図6Iの電力節約状態に入れることも可能である。これは、移転元キャッシュ410が、移転元プロセッサコアに深く組み込まれているので、移転元プロセッサコアとは独立的に駆動することができない場合により有用な場合がある。この手法はまた、移転元プロセッサが「小型」処理回路50であり、その電力消費が、「大型」処理回路10に比較して有意ではない場合、「大型」処理回路10が移転された作業負荷100の処理を開始すると、スヌープ期間中に、キャッシュ60以外の「小型」処理回路50を電力節約状態に切り替えることは、システムの全体的な電力消費にほとんど影響を有さない場合があるので、より実際的であり得る。これは、「小型」処理回路50および「小型」コアのキャッシュ60に対して個別の電力制御を提供する余分のハードウェア複雑度が正当化されない場合があることを意味することができる。
【0080】
いくつかの状況では、作業負荷の移転前に、移転元キャッシュの中に記憶されたデータは、作業負荷100の実施を開始する際に、移転先処理回路350によって必要とされないことがわかる場合がある。例えば、移転元処理回路300は、移転が発生する時にアプリケーションをちょうど完了したばかりの場合があり、したがって、移転の時点の移転元キャッシュ410のデータは、完了したアプリケーションに関係し、移転後に移転先処理回路350によって実施されるアプリケーションには関係しない。そのような場合、スヌープオーバーライドコントローラは、バーチャライザ120およびスヌープ制御回路75をトリガして、移転元キャッシュ410のスヌープをオーバーライドし、移転元処理回路300を制御して、スヌープ停止イベントがスヌープ期間の終了の信号を送信することを待機することなく、移転元キャッシュ410を消去して電力を切断する。この場合、図6A〜6Iの技法は、データが移転元キャッシュ410からスヌープされる、図6Fのステップを含まず、図6Eのステップから、図6Gのステップへ直接進むことになる。このように、前もって、移転元キャッシュ410の中のデータが移転先処理回路350に有用ではないことがわかっている場合、スヌープ停止イベントを待機することなく、移転元キャッシュ410および移転元処理回路を電力節約状態に入れることによって、電力を節約することができる。スヌープオーバーライドコントローラは、バーチャライザ120の一部にすることができる、または移転元処理回路300上で稼動するファームウェアとして実装することができる。スヌープオーバーライドコントローラは要素の組み合わせとして実装することも可能で、例えば、オペレーティングシステム115は、アプリケーションが終了した時にバーチャライザ120に伝達することができ、バーチャライザ120は、次いで、アプリケーションが終了した時に移転が発生する場合、移転元キャッシュ410のスヌープをオーバーライドすることができる。
【0081】
図7はグラフで、線600は性能に伴いエネルギー消費がどのように変動するかを示す。このグラフの様々な部分で、データ処理システムは、性能とエネルギー消費との間の適切なトレードオフを取得することを模索するために、図1に示されるプロセッサコア15、20、55の様々な組み合わせを利用するように配置することができる。したがって、例として、いくつかの非常に高性能タスクを実行することが必要な場合、所望の性能を達成するために、処理回路10の大型コア15、20の両方を実行することが可能である。任意選択的に供給電圧を変動する技法は、これらの2つのコアを利用する時に性能およびエネルギー消費のいくらかの変動を可能にするために使用することができる。
【0082】
必要な性能が大型コアのうちの1つだけを使用して達成できるレベルにまで性能要件が低下すると、タスクは、大型コア15、20のうちの1つだけに移行することができ、もう一方のコアは電力切断または何らかの他の電力節約状態に入る。ここでも、供給電圧の変動は、そのような単一の大型コアを使用する際に、性能とエネルギー消費との間で何らかの変動を可能にするために使用することができる。2つの大型コアから1つの大型コアへの遷移は、全てのインスタンスで利用されるのが処理回路10であり、処理回路50は電力節約状態にあるので、移転刺激の生成も、作業負荷を移転するための上記の技法の使用も必要としないことに注意されたい。しかしながら、図7の破線610によって示されるように、小型コアが必要な性能を達成することが可能なレベルにまで性能が低下すると、作業負荷全体が、小型コア55上で実行され、処理回路10が電力節約状態に入るように、作業負荷全体を処理回路10から処理回路50へ移転するための前述の機構をトリガするために、移転刺激を生成することができる。ここでも、供給電圧を変動する技法は、小型コア55の性能およびエネルギー消費のいくらかの変動を可能にするために使用することができる。
【0083】
図8Aおよび8Bはそれぞれ、一実施形態による、低性能プロセッサパイプライン800と高性能プロセッサパイプライン850との間のマイクロアーキテクチャ上の違いを示す。図8Aの低性能プロセッサパイプライン800は、図1の小型処理コア55に適し、図8Bの高性能プロセッサパイプライン850は、大型コア15、20に適する。
【0084】
図8Aの低性能プロセッサパイプライン800は、メモリ80から命令を取得するための取得段階810と、取得した命令を解読するための解読段階820と、実行するための命令を発行する発行段階830と、整数演算を実施するための整数パイプライン840、乗算累積演算を実施するためのMACパイプライン、およびSIMD(単一命令、複数データ)演算または浮動小数点演算を実施するためのSIMD/FPUパイプライン844を含む、複数の実行パイプラインとを含む。低性能プロセッサパイプライン800では、発行段階830は、一度に単一命令を発行し、命令が取得された順序で命令を発行する。
【0085】
図8Bの高性能プロセッサパイプライン850は、メモリ80から命令を取得するための取得段階860と、取得した命令を解読するための解読段階870と、解読した命令に指定されたレジスタの名前を変更するための名前変更段階875と、実行するための命令をディスパッチするためのディスパッチ段階880と、2つの整数パイプライン890、892、MACパイプライン894、および2つのSIMD/FPUパイプライン896、898を含む、複数の実行パイプラインとを含む。高性能プロセッサパイプライン850では、ディスパッチ段階880は、パイプライン890、892、894、896、898のうちの異なるものに対して一度に複数の命令を発行することができる、並列発行段階である。また、ディスパッチ段階880は、命令を非順次に発行することができる。低性能プロセッサパイプライン800とは異なり、SIMD/FPUパイプライン896、898は、可変長であり、すなわち、SIMD/FPUパイプライン896、898を通じて進む動作は、所定の段階をスキップするように制御することができる。そのような手法の利点は、複数の実行パイプラインそれぞれが異なるリソースを有する場合、最短パイプラインを最長パイプラインと同じ長さにするように、人工的に長さを変える必要がなく、その代わりに、異なるパイプラインによって生じる結果の非順次性質に対応するロジックが必要なことである(例えば、処理例外が発生した場合、全てを順次に戻す)。
【0086】
名前変更段階875は、プログラム命令の中に含まれ、プログラマのモデル観点からは、ハードウェアプラットフォームの実際のレジスタである、物理的レジスタに対して、特定のアーキテクチャレジスタを識別する、レジスタ指定子をマップするために提供される。名前変更段階875は、プログラマのマイクロプロセッサのモデル観点に存在するよりも大きい集団の物理的レジスタが、マイクロプロセッサによって提供されることを可能にする。このより大きい集団の物理的レジスタは、2つ以上の異なる命令に指定された同じアーキテクチャレジスタを、2つ以上の異なる物理的レジスタにマッピングすることによって、書き込み後書き込み(WAW)ハザード等のハザードが回避されることを可能にして、異なる命令が同時に実行することができるため、非順次実行中に有用である。レジスタの名前変更技法の詳細については、読者は、本発明人による米国特許出願第2008/114966号および米国特許第7,590,826号を参照されたい。
【0087】
低性能パイプライン800および高性能パイプライン850は、いくつかの点でマイクロアーキテクチャ上異なる。マイクロアーキテクチャ上の違いは、
a)異なる段階を有するパイプライン。例えば、高性能パイプライン850は、低性能パイプライン800には存在しない、名前変更段階875を有する。
b)異なる能力を有するパイプライン段階。例えば、低性能パイプライン800の発行段階830は、単一の命令発行だけが可能であるが、高性能パイプライン850のディスパッチ段階880は、並列に命令を発行することができる。並列発行は、パイプラインの処理能力を向上させ、したがって性能が向上する。
c)異なる長さを有するパイプライン段階。例えば、高性能パイプライン850の解読段階870は、3つの副段階を含む場合があるが、低性能パイプライン800の解読段階820は、単一の副段階だけを含む場合がある。パイプライン段階が長くなればなるほど(副段階の数が大きくなればなるほど)、同時に実行できる命令の数が大きくなり、したがって、パイプラインが動作することができる動作周波数が大きくなり、より高レベルの性能をもたらす。
d)実行パイプラインの異なる数(例えば、高性能パイプライン850は、低性能パイプライン800よりも多い実行パイプラインを有する)。より多くの実行パイプラインを提供することによって、より多くの命令を並列に処理することができ、したがって性能が高まる。
e)順次実行(パイプライン800のように)または非順次実行(パイプライン850のように)を提供する。命令が非順次に実行できる場合、性能を最適化するために命令の実行を動的にスケジュールすることができるので、性能が向上する。例えば、低性能の順次パイプライン800では、一連のMAC命令は、その後の命令が整数パイプライン840およびSIMD/浮動小数点パイプライン844のうちの1つによって実行される可能性がある前に、MACパイプライン842によって1つずつ実行されることが必要である。対照的に、高性能パイプライン850では、MAC命令はMACパイプ894によって実行することができ、一方(名前変更によって解決することができない任意のハザードに左右されるが)異なる実行パイプライン890、892、896、898を使用するその後の命令は、MAC命令と並列に実行することができる。すなわち、非順次命令は処理性能を向上させることができる。
【0088】
これらの、およびその他の例のマイクロアーキテクチャ上の違いによって、パイプライン850が、パイプライン800よりも高い性能処理を提供することになる。一方、マイクロアーキテクチャ上の違いは、パイプライン850がパイプライン800よりも多くのエネルギーを消費することにもなる。このように、マイクロアーキテクチャ上異なるパイプライン800、850を提供することによって、作業負荷の処理を高性能(高性能パイプライン850を有する「大型」処理回路10を使用することによって)またはエネルギー効率(低性能パイプライン800を有する「小型」処理回路50を使用することによって)いずれかのために最適化することが可能になる。
【0089】
図9は、作業負荷100の実施が、大型処理回路10と小型処理回路50との間で切り替えられる際の、データ処理システムの電力消費の変動を例示するグラフを示す。
【0090】
図9の点Aでは、作業負荷100は、小型処理回路50上で実施されているので、電力消費が低い。点Bで、高負荷処理が実施されることを示す移転刺激が発生し、このために、作業負荷の実施は、大型処理回路10にハンドオーバーされる。すると、大型処理回路10が作業負荷を実施する間、電力消費が上昇し、点Cの高さにとどまる。点Dでは、両方の大型コアが、組み合わされて動作して、作業負荷を処理すると想定される。しかしながら、性能要件が、作業負荷が大型コアのうちの1つだけによって取り扱うことができるレベルに低下すると、作業負荷は、大型コアのうちの一方だけに移行し、もう一方はレベルの隣接点Eまでの電力の低下によって示されるように、電力が切断される。しかしながら、点Eで、別の移転刺激が発生して(低負荷処理へ戻ることが望まれることを示す)、小型処理回路50への作業負荷の実施の移転をトリガする。
【0091】
小型処理回路50が処理作業負荷の処理を開始すると、大型処理回路の大部分は電力節約状態にあるが、大型処理回路10のキャッシュは、スヌープ期間中(図9の点F)駆動状態のままで、キャッシュの中のデータが小型処理回路50のために呼び出されることを可能にする。したがって、大型処理回路10のキャッシュによって、点Fの電力消費は、小型処理回路50だけが駆動していた時の点Aよりも高くなる。スヌープ期間の最後に、大型処理回路10のキャッシュの電力が切断され、点Gで、電力消費は、小型処理回路50だけが作動していた低レベルに戻る。
【0092】
上述のように、図9で、電力消費は、大型処理回路10のキャッシュがスヌープ期間中駆動しているため、点Fのスヌープ期間中、点Gよりも高い。この電力消費の増加は、大型から小型への遷移の後のみに示されるが、小型から大型への遷移の後にスヌープ期間が存在する場合があり、その間に小型処理回路50のキャッシュの中のデータは、スヌープ制御装置75によって、大型処理回路10のためにスヌープすることができる。小型から大型の遷移のスヌープ期間は、小型処理回路50のキャッシュをスヌープ期間中駆動状態のままにすることによって消費される電力が、処理負荷作業を実施する際に大型処理回路10によって消費される電力に比較して有意ではないので、したがって、小型処理回路50のキャッシュが駆動していることによる電力消費の非常にわずかな増加は、図9のグラフには視認することができないため、図9には示されていない。
【0093】
上述の実施形態は、エネルギー効率または性能のために最適化されたマイクロアーキテクチャを備える2つ以上のアーキテクチャ上の互換性があるプロセッサインスタンスを含むシステムを説明した。オペレーティングシステムおよびアプリケーションによって必要とされるアーキテクチャ状態は、作業負荷全体がプロセッサインスタンス間で切り替えられることを可能にするために、必要な性能/エネルギーレベルに応じて、プロセッサインスタンス間で切り替えることができる。一実施形態において、プロセッサインスタンスのうちの1つだけが任意の指定の時間に作業負荷を実行し、他の処理インスタンスは電力節約状態にあるか、または電力節約状態に入る/終了する過程にある。
【0094】
一実施形態において、プロセッサインスタンスは、移転元プロセッサから移転先プロセッサへアーキテクチャ状態を切り替える際に関わる時間、エネルギー、およびハードウェアの複雑度を削減するために、相互にハードウェアキャッシュコヒーレントであるように配置される場合がある。これによって、切り替え動作を実施するための時間を削減し、実施形態の技法を使用することができる可能性を増やす。
【0095】
そのようなシステムは、よりエネルギー効率の高いプロセッサをより低い処理作業負荷のために使用することができ、より高い性能のプロセッサをより高い処理作業負荷のために使用することができるように、バッテリー寿命および/または温度管理、および性能の範囲のいずれかのためにエネルギー効率が重要である多様な状況において使用される場合がある。
【0096】
2つ以上の処理インスタンスはアーキテクチャ上で互換性があるため、アプリケーションの観点からは、2つのプロセッサ間の唯一の違いは、利用可能な性能である。一実施形態の技法を通じて、オペレーティングシステムおよびアプリケーションがどのプロセッサ上で実行しているかに関して、オペレーティングシステム、およびオペレーティングシステム上で実行しているアプリケーションに対して透過的であるように、オペレーティングシステムを関与する必要なく、プロセッサ間で必要な全てのアーキテクチャ状態を移動することができる。
【0097】
前述の実施形態に記載のようにアーキテクチャ上の互換性があるプロセッサインスタンスを使用する場合、移転される必要があるアーキテクチャ状態の全体量は、データキャッシュ内に容易に収容することができ、最新の処理システムはしばしば、キャッシュコヒーレンスを実装するので、切り替えるアーキテクチャ状態をデータキャッシュ内に記憶することによって、移転先プロセッサは、既存の回路構造を利用するエネルギー効率の高い方式で、この状態を迅速にスヌープすることができる。
【0098】
1つの記載の実施形態において、切り替え機構は、データ処理システムが温度制限を超えないことを保証するために使用される。具体的には、温度制限に到達しそうな場合、作業負荷全体をよりエネルギー効率の高いプロセッサインスタンスに切り替えることができ、より低い処理能力ではあるが、継続してプログラム実行を行いながら、システム全体を冷却することを可能にする。
【0099】
本明細書では特定の実施形態を説明したが、本発明はそれに限定されないこと、本発明の範囲内でそれに対する多数の変更および追加が行われ得ることが理解されるであろう。例えば、本発明の範囲を逸脱することなく、独立請求項の特徴とともに、以下の従属請求項の特徴の多様な組み合わせを作製することができる。

【特許請求の範囲】
【請求項1】
データ処理装置であって、
データ処理動作を実施するための第1の処理回路と、
データ処理動作を実施するための第2の処理回路と、を備え、
前記第1の処理回路は、前記データ処理装置によって実施される作業負荷が、前記第1の処理回路または前記第2の処理回路のいずれか上で実施することができるように、前記第2の処理回路とアーキテクチャ上の互換性があり、前記作業負荷は、少なくとも1つのアプリケーションと、前記少なくとも1つのアプリケーションを実行するための少なくとも1つのオペレーティングシステムとを含み、
前記第1の処理回路は、前記第1の処理回路の性能が前記第2の処理回路の性能とは異なるように、マイクロアーキテクチャ上で前記第2の処理回路とは異なり、
前記第1の処理回路および前記第2の処理回路は、任意の時点で、前記作業負荷が前記第1の処理回路および前記第2の処理回路のうちの1つによって実施されるように構成され、
前記データ処理装置はさらに、移転刺激に応答して、移転元処理回路から移転先処理回路へ前記作業負荷の実施を移転するようにハンドオーバー動作を実施するスイッチコントローラであって、前記移転元処理回路は、前記第1の処理回路および前記第2の処理回路のうちの一方であり、前記移転先処理回路は、前記第1の処理回路および前記第2の処理回路のうちのもう一方である、スイッチコントローラを備え、
前記スイッチコントローラは、前記ハンドオーバー動作中に、
(i)前記移転元処理回路に、前記ハンドオーバー動作が開始される時に前記第1の処理回路と前記第2の処理回路との間で共有される共有メモリからは利用可能ではない状態であり、かつ前記移転先処理回路が、前記移転元処理回路から前記作業負荷の実施を成功裏に引き継ぐために必要である、その最新アーキテクチャ状態を前記移転先処理回路に利用可能にさせ、かつ、
(ii)前記作業負荷の前記移転が前記少なくとも1つのオペレーティングシステムに透過的であるように、前記少なくとも1つのオペレーティングシステムから、既定のプロセッサ固有の構成情報をマスクするように配置される、データ処理装置。
【請求項2】
前記第1の処理回路および前記第2の処理回路に提供される電力を独立的に制御するための電力制御回路をさらに備え、
前記移転刺激の発生前に、前記移転先処理回路は、電力節約状態にあり、前記ハンドオーバー動作中に、前記電力制御回路は、前記移転先処理回路が前記作業負荷の実施を引き継ぐ前に、前記移転先処理回路に前記電力節約状態を終了させる、請求項1に記載のデータ処理装置。
【請求項3】
前記ハンドオーバー動作に続いて、前記電力制御回路は、前記移転元処理回路に前記電力節約状態に入らせる、請求項2に記載のデータ処理装置。
【請求項4】
前記移転動作中、前記スイッチコントローラは、最新アーキテクチャ状態を取得するために、前記移転先処理回路によって前記共有メモリを参照することなく、その最新アーキテクチャ状態を前記移転先処理回路に利用可能にさせるように、前記移転元処理回路に加速機構を採用させる、請求項1〜3のいずれかに記載のデータ処理装置。
【請求項5】
少なくとも前記移転元回路は、関連キャッシュを有し、
前記データ処理装置は、スヌープ制御回路をさらに備え、
前記加速機構は、前記移転元回路の関連キャッシュおよび前記スヌープ制御回路の使用を通じた、前記移転先処理回路への前記最新アーキテクチャ状態の移転を含む、請求項4に記載のデータ処理装置。
【請求項6】
前記加速機構は、保存および復元機構であり、前記移転元処理回路に、その最新アーキテクチャ状態をその関連キャッシュに記憶させ、前記移転先処理回路に復元動作を実施させ、前記復元動作により、前記スヌープ制御回路が、前記移転元処理回路の関連キャッシュから前記最新アーキテクチャ状態を呼び出し、その呼び出された最新アーキテクチャ状態を前記移転先処理回路に提供する、請求項5に記載のデータ処理装置。
【請求項7】
前記移転先処理回路は、前記スヌープ制御回路によって取得される前記移転されたアーキテクチャ状態が、前記移転先処理回路によって参照されるために記憶される、関連キャッシュを有する、請求項5または請求項6に記載のデータ処理装置。
【請求項8】
前記加速機構は、前記移転元処理回路が、その最新アーキテクチャ状態を前記移転先処理回路に提供する、前記移転元処理回路と前記移転先処理回路との間の専用バスを備える、請求項4〜7のいずれかに記載のデータ処理装置。
【請求項9】
前記スイッチコントローラは、前記第1の処理回路および前記第2の処理回路から、前記少なくとも1つのオペレーティングシステムを論理的に分離する、少なくとも仮想化ソフトウェアを備える、請求項1〜8のいずれかに記載のデータ処理装置。
【請求項10】
前記移転刺激のタイミングは、前記データ処理装置のエネルギー効率を向上させるように選択される、請求項1〜9のいずれかに記載のデータ処理装置。
【請求項11】
前記アーキテクチャ状態は、プログラムカウンタ値を含む、前記移転元処理回路の特殊目的レジスタの1つ以上の、少なくとも最新値を含む、請求項1〜10のいずれかに記載のデータ処理装置。
【請求項12】
前記アーキテクチャ状態は、前記移転元処理回路のアーキテクチャレジスタファイルの中に記憶された前記最新値をさらに含む、請求項11に記載のデータ処理装置。
【請求項13】
前記第1の処理回路および前記第2の処理回路のうちの少なくとも1つは、単一処理装置を備える、請求項1〜12のいずれかに記載のデータ処理装置。
【請求項14】
前記第1の処理回路および前記第2の処理回路のうちの少なくとも1つは、同一のマイクロアーキテクチャを備える一群の処理装置を備える、請求項1〜13のいずれかに記載のデータ処理装置。
【請求項15】
前記電力節約状態は、
電源を切断した状態、
部分的/完全データ保存状態、
休眠状態、または
アイドル状態、のうちの1つである、請求項2に従属する請求項3〜14のいずれかに記載のデータ処理装置。
【請求項16】
前記第1の処理回路および第2の処理回路は、
異なる実行パイプライン長、または
異なる実行リソースのうちの少なくとも1つを有することによって、マイクロアーキテクチャ上異なる、請求項1〜15のいずれかに記載のデータ処理装置。
【請求項17】
前記移転元処理回路は、前記移転先処理回路よりも高い性能であり、前記データ処理装置は、
前記移転元処理回路の熱出力を監視し、前記熱出力が既定レベルに到達すると、前記移転刺激をトリガするための温度監視回路をさらに備える、請求項1〜16のいずれかに記載のデータ処理装置。
【請求項18】
前記第1の処理回路および前記第2の処理回路は、単一集積回路内に存在する、請求項1〜17のいずれかに記載のデータ処理装置。
【請求項19】
データ処理装置であって、
データ処理動作を実施するための第1の処理手段と、
データ処理動作を実施するための第2の処理手段と、を備え、
前記第1の処理手段は、前記データ処理装置によって実施される作業負荷が、前記第1の処理手段または前記第2の処理手段のいずれか上で実施することができるように、前記第2の処理手段とアーキテクチャ上の互換性があり、前記作業負荷は、少なくとも1つのアプリケーションと、前記少なくとも1つのアプリケーションを実行するための少なくとも1つのオペレーティングシステムとを含み、
前記第1の処理手段は、前記第1の処理手段の性能が前記第2の処理手段の性能とは異なるように、マイクロアーキテクチャ上で前記第2の処理手段とは異なり、
前記第1の処理手段および前記第2の処理手段は、前記作業負荷が、任意の時点で前記第1の処理手段および前記第2の処理手段のうちの1つによって実施されるように構成され、
前記データ処理装置はさらに、移転刺激に応答して、移転元処理手段から移転先処理手段へ前記作業負荷の実施を移転するようにハンドオーバー動作を実施する移転制御手段であって、前記移転元処理手段は、前記第1の処理手段および前記第2の処理手段のうちの一方であり、前記移転先処理手段は、前記第1の処理手段および前記第2の処理手段のうちのもう一方である、移転制御手段を備え、
前記移転制御手段は、前記ハンドオーバー動作中に、
(i)前記移転元処理手段に、前記ハンドオーバー動作が開始される時に前記第1の処理手段と前記第2の処理手段との間で共有される共有メモリ手段からは利用可能ではない状態であり、かつ前記移転先処理手段が、前記移転元処理手段から前記作業負荷の実施を成功裏に引き継ぐために必要である、その最新アーキテクチャ状態を前記移転先処理手段に利用可能にさせ、かつ、
(ii)前記作業負荷の前記移転が前記少なくとも1つのオペレーティングシステムに透過的であるように、前記少なくとも1つのオペレーティングシステムから、既定のプロセッサ固有の構成情報をマスクするためのものである、データ処理装置。
【請求項20】
データ処理動作を実施するための第1の処理回路と、データ処理動作を実施するための第2の処理回路とを有するデータ処理装置を動作する方法であって、前記第1の処理回路は、前記データ処理装置によって実施される作業負荷が、前記第1の処理回路または前記第2の処理回路のいずれか上で実施することができるように、前記第2の処理回路とアーキテクチャ上の互換性があり、前記作業負荷は、少なくとも1つのアプリケーションと、前記少なくとも1つのアプリケーションを実行するための少なくとも1つのオペレーティングシステムとを備え、前記第1の処理回路は、前記第1の処理回路の性能が前記第2の処理回路の性能とは異なるように、マイクロアーキテクチャ上で前記第2の処理回路とは異なり、前記方法は、
任意の時点で、前記第1の処理回路および前記第2の処理回路のうちの1つの上で前記作業負荷を実施するステップと、
移転刺激に応答して、移転元処理回路から移転先処理回路へ前記作業負荷の実施を移転するようにハンドオーバー動作を実施するステップであって、前記移転元処理回路は、前記第1の処理回路および前記第2の処理回路のうちの一方であり、前記移転先処理回路は、前記第1の処理回路および前記第2の処理回路のうちのもう一方である、ハンドオーバー動作を実施するステップと、
前記ハンドオーバー動作中に、
(i)前記移転元処理回路に、前記ハンドオーバー動作が開始される時に前記第1の処理回路と第2の処理回路との間で共有される共有メモリからは利用可能ではない状態であり、かつ前記移転先処理回路が、前記移転元処理回路から前記作業負荷の実施を成功裏に引き継ぐために必要である、その最新アーキテクチャ状態を前記移転先処理回路に利用可能にさせるステップと、
(ii)前記作業負荷の前記移転が前記少なくとも1つのオペレーティングシステムに透過的であるように、前記少なくとも1つのオペレーティングシステムから、既定のプロセッサ固有の構成情報をマスクするステップと、を含む、方法。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4A】
image rotate

【図4B】
image rotate

【図5】
image rotate

【図6A】
image rotate

【図6B】
image rotate

【図6C】
image rotate

【図6D】
image rotate

【図6E】
image rotate

【図6F】
image rotate

【図6G】
image rotate

【図6H】
image rotate

【図6I】
image rotate

【図7】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図9】
image rotate


【公表番号】特表2013−521557(P2013−521557A)
【公表日】平成25年6月10日(2013.6.10)
【国際特許分類】
【出願番号】特願2012−555487(P2012−555487)
【出願日】平成23年2月17日(2011.2.17)
【国際出願番号】PCT/GB2011/050317
【国際公開番号】WO2011/107776
【国際公開日】平成23年9月9日(2011.9.9)
【出願人】(594154428)エイアールエム リミテッド (85)
【Fターム(参考)】