(57)【要約】  移転刺激に応答して、移転に続いて移転元処理回路が電力節約状態に入れられる準備として、処理作業負荷の実施が移転元処理回路から移転先処理回路へ移転される。移転に続いて移転先処理回路によって必要となる、メモリ取得回数を削減するために、移転元処理回路のキャッシュは、スヌープ期間中、駆動状態に維持される。スヌープ期間中、キャッシュスヌープ回路は、移転元キャッシュのデータ値をスヌープし、移転先処理回路のためにスヌープデータ値を呼び出す。
2013521556.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置であって、
処理作業負荷が１回に第１の処理回路および第２の処理回路のうちの１つによって実施されるように、前記処理作業負荷を実施するように構成される、第１の処理回路および第２の処理回路と、
前記第１の処理回路および前記第２の処理回路への電力供給を独立的に制御するための電力制御回路と、
移転刺激に応答して、前記電力制御回路によって、移転元処理回路が電力節約状態に入れられる前に、前記移転元処理回路から移転先処理回路への前記処理作業負荷の実施の移転を制御する、作業負荷移転コントローラであって、前記移転元処理回路は、前記第１の処理回路および第２の処理回路のうちの一方であり、前記移転先処理回路は、前記第１の処理回路および前記第２の処理回路のうちのもう一方である、作業負荷移転コントローラと、を備え、
少なくとも前記移転元処理回路は、キャッシュを有し、
前記電力制御回路は、前記移転先処理回路によって前記移転された処理作業負荷の実施の開始に続くスヌープ期間中、前記移転元処理回路の少なくとも前記キャッシュを駆動状態に維持するように構成され、
前記データ処理装置は、前記スヌープ期間中、前記移転元処理回路の前記キャッシュのデータ値をスヌープし、前記移転先処理回路のために前記スヌープしたデータ値を呼び出すように構成される、キャッシュスヌープ回路を備え、
前記電力制御回路は、前記スヌープ期間の終了に続いて、前記移転元処理回路の前記の少なくとも前記キャッシュを前記電力節約状態に入れるように構成される、
データ処理装置。
【請求項２】
前記処理作業負荷は、少なくとも１つの処理アプリケーションと、前記少なくとも１つの処理アプリケーションを実行するための少なくとも１つのオペレーティングシステムとを含む、請求項１に記載のデータ処理装置。
【請求項３】
前記作業負荷移転コントローラは、前記移転中、前記作業負荷の前記移転が前記少なくとも１つのオペレーティングシステムに透過的であるように、前記少なくとも１つのオペレーティングシステムから、既定のプロセッサ固有の構成情報をマスクするように構成される、請求項２に記載のデータ処理装置。
【請求項４】
前記作業負荷移転コントローラは、前記第１の処理回路および前記第２の処理回路から、前記少なくとも１つのオペレーティングシステムを論理的に分離する、少なくとも仮想化ソフトウェアを備える、請求項３に記載のデータ処理装置。
【請求項５】
前記第１の処理回路は、前記データ処理装置によって処理される処理作業負荷が、前記第１の処理回路または前記第２の処理回路のいずれか上で実施することができるように、前記第２の処理回路とアーキテクチャ上の互換性がある、請求項１〜４のいずれかに記載のデータ処理装置。
【請求項６】
前記第１の処理回路は、前記第１の処理回路の性能が前記第２の処理回路の性能とは異なるように、前記第２の処理回路とはマイクロアーキテクチャ上異なる、請求項５に記載のデータ処理装置。
【請求項７】
前記移転先処理回路はキャッシュも備える、請求項１〜６のいずれかに記載のデータ処理装置。
【請求項８】
前記キャッシュスヌープ回路によって前記移転先処理回路のために呼び出された前記スヌープしたデータ値は、前記移転先処理回路の前記キャッシュに記憶される、請求項７に記載のデータ処理装置。
【請求項９】
前記電力制御回路は、前記スヌープ期間中、前記キャッシュ以外の前記移転元処理回路を前記電力節約状態に入れ、前記スヌープ期間の終了に続いて、前記移転元処理回路の前記キャッシュを前記電力節約状態に入れるように構成される、請求項１〜８のいずれかに記載のデータ処理装置。
【請求項１０】
前記移転元処理回路の前記キャッシュは、前記移転元処理回路内のキャッシュ階層の一部であり、前記スヌープ期間中、前記キャッシュは、前記駆動状態に維持され、一方、前記キャッシュ階層内の少なくとも１つの他のキャッシュは、前記電力節約状態にある、請求項９に記載のデータ処理装置。
【請求項１１】
前記移転元処理回路の前記キャッシュは、前記キャッシュ階層の少なくとも１つのレベル１キャッシュに記憶されたデータの全てを記憶するように構成される、レベル２包括的キャッシュである、請求項１０に記載のデータ処理装置。
【請求項１２】
前記電力制御回路は、前記スヌープ期間中、前記移転元処理回路を前記駆動状態に維持し、前記スヌープ期間の終了に続いて、前記キャッシュを含む、前記移転元処理回路を前記電力節約状態に入れるように構成される、請求項１〜８のいずれかに記載のデータ処理装置。
【請求項１３】
前記移転元処理回路の前記キャッシュは、レベル１キャッシュである、請求項１２に記載のデータ処理装置。
【請求項１４】
前記移転元処理回路は、前記スヌープ期間の終了に続き、前記電力制御回路が、前記移転元処理回路の前記キャッシュを前記電力節約状態に入れる前に、前記移転元処理回路の前記キャッシュ上で消去動作を実施して、前記キャッシュから共有メモリへ任意のダーティデータを書き戻すように構成される、請求項１〜１３のいずれかに記載のデータ処理装置。
【請求項１５】
前記移転先処理回路は、前記移転刺激の発生前に、前記電力節約状態にあり、前記電力制御回路は、前記移転刺激に応答して、前記移転先処理回路を前記駆動状態に入れるように構成される、請求項１〜１４のいずれかに記載のデータ処理装置。
【請求項１６】
前記移転先処理回路は、前記移転先処理回路が前記移転された処理作業負荷の実施を開始する前に、前記移転先処理回路の前記キャッシュを無効化するように構成される、請求項７に従属する、請求項８〜１５項のいずれかに記載のデータ処理装置。
【請求項１７】
前記移転元処理回路は、前記移転先処理回路の前記キャッシュが無効化されている間に前記処理作業負荷の実施を継続するように構成され、前記作業負荷移転コントローラは、前記移転先処理回路の前記キャッシュが無効化された後に、前記処理作業負荷の前記実施を前記移転先処理回路へ移転するように構成される、請求項１６に記載のデータ処理装置。
【請求項１８】
前記スヌープ期間は、前記移転先処理回路が前記処理作業負荷の実施を開始する時に始まる、請求項１〜１７項のいずれかに記載のデータ処理装置。
【請求項１９】
前記スヌープ期間は、少なくとも１つのスヌープ停止イベントを含む１組のスヌープ停止イベントのうちのいずれか１つの発生時に終了する、請求項１〜１８項のいずれかに記載のデータ処理装置。
【請求項２０】
前記キャッシュスヌープ回路は、前記１組のスヌープ停止イベントのうちのいずれかが発生したかを監視するように構成される、請求項１９に記載のデータ処理装置。
【請求項２１】
前記少なくとも１つのスヌープ停止イベントは、前記移転元処理回路の前記キャッシュ内のキャッシュヒットになる、前記キャッシュスヌープ回路によって実施されたスヌープの割合が、既定の閾値レベル未満に低下した時に発生するイベントを含む、請求項１９に記載のデータ処理装置。
【請求項２２】
前記少なくとも１つのスヌープ停止イベントは、前記移転先処理回路が、既定のタイプの既定数の処理トランザクションを完了する時に発生するイベントを含む、請求項１９に記載のデータ処理装置。
【請求項２３】
前記少なくとも１つのスヌープ停止イベントは、前記移転先処理回路が前記移転された処理作業負荷の実施を開始した後、既定数の処理サイクルが経過した時に発生するイベントを含む、請求項１９に記載のデータ処理装置。
【請求項２４】
前記第１の処理回路と前記第２の処理回路との間で共有される共有メモリを備え、
前記少なくとも１つのスヌープ停止イベントは、前記移転された処理作業負荷の実施を開始した後、前記共有メモリの特定のメモリ領域が、前記移転先処理回路によって初めてアクセスされる時に発生するイベントを含む、請求項１９に記載のデータ処理装置。
【請求項２５】
前記第１の処理回路と前記第２の処理回路との間で共有される共有メモリを備え、
前記少なくとも１つのスヌープ停止イベントは、前記移転された処理作業負荷の実施を開始した後の初期期間に、前記移転先処理回路によってアクセスされる、前記共有メモリの特定メモリ領域が、既定の期間に前記移転先処理回路によってアクセスされない時に発生するイベントを含む、請求項１９に記載のデータ処理装置。
【請求項２６】
前記第１の処理回路と前記第２の処理回路との間で共有される共有メモリを備え、
前記少なくとも１つのスヌープ停止イベントは、前記移転された処理作業負荷の実施を開始した後、前記移転先処理回路が、前記共有メモリの既定のメモリ場所に初めて書き込む時に発生するイベントを含む、請求項１９に記載のデータ処理装置。
【請求項２７】
スヌープオーバーライド状態に応答して、前記キャッシュスヌープ回路による前記移転元処理回路の前記キャッシュのスヌープをオーバーライドし、前記スヌープ期間の終了を待機することなく、前記処理作業負荷の前記実施の前記移転後に、前記キャッシュを含む前記移転元処理回路を前記電力節約状態に入れるように前記電力制御回路を制御するために、スヌープオーバーライドコントローラを備える、請求項１〜２６のいずれかに記載のデータ処理装置。
【請求項２８】
前記スヌープオーバーライド状態は、前記移転元処理回路の前記キャッシュの前記データが、前記移転先処理回路が前記移転された処理作業負荷を実施するために必要ではない時に発生する、請求項２７に記載のデータ処理装置。
【請求項２９】
前記キャッシュスヌープ回路は、前記第１の処理回路および前記第２の処理回路に連結されるコヒーレント相互接続を備える、請求項１〜２８のいずれかに記載のデータ処理装置。
【請求項３０】
データ処理装置であって、
処理を実施するための第１の処理手段および処理を実施するための第２の処理手段であって、処理作業負荷が１回に前記第１の処理手段および前記第２の処理手段のうちの１つによって実施されるように、前記処理作業負荷を実施するように構成される、第１の処理手段および第２の処理手段と、
前記第１の処理手段および前記第２の処理手段への電力供給を独立的に制御するための電力制御手段と、
移転刺激に応答して、前記電力制御手段によって、移転元処理手段が電力節約状態に入れられる前に、前記移転元処理手段から移転先処理手段への前記処理作業負荷の実施の移転を制御するための、作業負荷移転制御手段であって、前記移転元処理手段は、前記第１の処理手段および第２の処理手段のうちの一方であり、前記移転先処理手段は、前記第１の処理手段および前記第２の処理手段のうちのもう一方である、作業負荷移転制御手段と、を備え、
少なくとも前記移転元処理手段は、キャッシュされたデータ値を記憶するためのキャッシュ手段を有し、
前記電力制御手段は、前記移転先処理手段によって前記移転された処理作業負荷の実施の開始に続くスヌープ期間中、前記移転元処理手段の少なくとも前記キャッシュ手段を駆動状態に維持するように構成され、
前記データ処理装置は、前記スヌープ期間中、前記移転元処理手段の前記キャッシュ手段のデータ値をスヌープし、前記移転先処理手段のために前記スヌープしたデータ値を呼び出すための、キャッシュスヌープ手段を備え、
前記電力制御手段は、前記スヌープ期間の終了に続いて、前記移転元処理手段の前記の少なくとも前記キャッシュ手段を前記電力節約状態に入れるように構成される、
データ処理装置。
【請求項３１】
第１の処理回路と第２の処理回路とを備える装置であって、処理作業負荷が１回に前記第１の処理回路および前記第２の処理回路のうちの１つによって実施されるように、前記処理作業負荷を実施するように構成される、装置のためのデータ処理方法であって、
移転元処理回路を用いて前記処理作業負荷を実施することであって、前記移転元処理回路は、前記第１の処理回路および前記第２の処理回路のうちの一方であり、かつキャッシュを備え、前記第１の処理回路および前記第２の処理回路のうちのもう一方が移転先処理回路である、処理作業負荷を実施することと、
移転刺激に応答して、前記移転元処理回路が電力節約状態に入れられる前に、前記処理作業負荷の実施を、前記移転元処理回路から前記移転先処理回路へ移転することと、
前記移転先処理回路による前記移転された処理作業負荷の実施の開始に続くスヌープ期間中、前記移転元処理回路の少なくとも前記キャッシュを駆動状態に維持することと、
前記スヌープ期間中、前記移転元処理回路の前記キャッシュの中のデータ値をスヌープし、前記移転先処理回路のために前記スヌープしたデータ値を呼び出すことと、
前記スヌープ期間の終了に続いて、前記移転元処理回路の前記の少なくとも前記キャッシュを前記電力節約状態に入れることと、
を含む、方法。
【請求項３２】
データ処理装置であって、
処理作業負荷が１回に第１の処理回路および第２の処理回路のうちの１つによって実施されるように、前記処理作業負荷を実施するように構成される、第１の処理回路および第２の処理回路と、
移転刺激に応答して、前記電力制御回路によって、移転元処理回路が電力節約状態に入れられる前に、前記移転元処理回路から移転先処理回路への前記処理作業負荷の実施の移転を制御する、作業負荷移転コントローラであって、前記移転元処理回路は、前記第１の処理回路および第２の処理回路のうちの一方であり、前記移転先処理回路は、前記第１の処理回路および前記第２の処理回路のうちのもう一方である、作業負荷移転コントローラと、を備え、
少なくとも前記移転先処理回路は、キャッシュを有し、
前記移転先処理回路は、前記移転先処理回路が前記移転された処理作業負荷の実施を開始する前に、前記移転先処理回路の前記キャッシュを無効化するように構成され、
前記移転元処理回路は、前記移転先処理回路の前記キャッシュが無効化されている間に、前記処理作業負荷の実施を継続するように構成され、
前記作業負荷移転コントローラは、前記移転先処理回路の前記キャッシュが無効化された後、前記処理作業負荷の前記実施を前記移転先処理回路へ移転するように構成される、
データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１の処理回路と第２の処理回路との間で作業負荷を切り替えるためのデータ処理装置および方法に関し、特に、切り替え後の作業負荷の処理性能を向上させるための技法に関する。
【背景技術】
【０００２】
現代のデータ処理システムにおいて、ゲーム操作等の高負荷タスクと、ＭＰ３再生等の低負荷タスクとの間の性能要求の差は、１００：１の比を超える場合がある。全てのタスクに単一のプロセッサが使用される場合、そのプロセッサは高性能でなければならないが、プロセッサのマイクロアーキテクチャの原理として、高性能プロセッサは、低性能プロセッサよりもエネルギー効率が低い。広範な性能レベルおよび対応するエネルギー消費特徴を備えたプロセッサを提供するために、動的電圧周波数制御（ＤＶＦＳ）またはパワーゲーティング等の技法を使用して、プロセッサレベルでエネルギー効率を向上させることは知られている。しかしながら、かかる技法は概して、単一のプロセッサがそのような多岐にわたる性能要件を持つタスクを担うことを可能にするには、不十分になっている。
【０００３】
したがって、そのような様々なタスクの実施のためにエネルギー効率の高いシステムを提供するために、マルチコアアーキテクチャを使用することが考えられた。複数のプロセッサコアを備えるシステムは、しばらくの間、処理能力を高めるために異なるコアが異なるタスクを並行して動作することを可能にすることによって、性能を高めるために使用されたが、そのようなシステムがエネルギー効率を向上させるためにどのように使用できるかという分析は、比較的最近の進展である。
【０００４】
文献「Ｔｏｗａｒｄｓ  Ｂｅｔｔｅｒ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｐｅｒ  Ｗａｔｔ  ｉｎ  Ｖｉｒｔｕａｌ  Ｅｎｖｉｒｏｎｍｅｎｔｓ  ｏｎ  Ａｓｙｍｍｅｔｒｉｃ  Ｓｉｎｇｌｅ−ＩＳＡ  Ｍｕｌｔｉ−Ｃｏｒｅ  Ｓｙｓｔｅｍｓ」（Ｖ  Ｋｕｍａｒ  ｅｔ  ａｌによる）（ＡＣＭ  ＳＩＧＯＰＳ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  Ｒｅｖｉｅｗ，４３号、第３巻（２００９年７月））は、同一命令セットアーキテクチャ（ＩＳＡ）を使用するが、機能、複雑性、電力消費、および性能面で異なる、いくつかのコアからなる、非対称単一命令セットアーキテクチャ（ＡＳＩＳＡ：Ａｓｙｍｍｅｔｒｉｃ  Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ａｒｃｈｉｔｅｃｔｕｒｅ）マルチコアシステムを考察する。文書中、仮想作業負荷の特性が研究され、性能およびエネルギー消費を向上させるために、これらの作業負荷がＡＳＩＳＡシステム上でどのようにスケジュールされるべきかについて考察された。文書では、ある種のタスクは高周波数／性能のマイクロアーキテクチャにより適用するが（典型的に演算が集中するタスク）、他のタスクは、より低い周波数／性能のマイクロアーキテクチャにより適しており、副次的効果として、より少ないエネルギーを消費する（典型的に入力／出力が集中するタスク）ことを特定している。かかる研究は、エネルギー効率の高い様式で多様なタスクを実行するために、ＡＳＩＳＡシステムをどのように利用することができるかを示すが、依然として、最も適切なプロセッサに個別のタスクをスケジュールするための機構を提供することが必要である。そのようなスケジュール管理は典型的に、オペレーティングシステムに顕著な負担を強いることになる。
【０００５】
文献「Ｓｉｎｇｌｅ−ＩＳＡ  Ｈｅｔｅｒｏｇｅｎｅｏｕｓ  Ｍｕｌｔｉ−Ｃｏｒｅ  Ａｒｃｈｉｔｅｃｔｕｒｅｓ：Ｔｈｅ  Ｐｏｔｅｎｔｉａｌ  ｆｏｒ  Ｐｒｏｃｅｓｓｏｒ  Ｐｏｗｅｒ  Ｒｅｄｕｃｔｉｏｎ」（Ｒ  Ｋｕｍａｒ  ｅｔ  ａｌによる）（第３６回Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｆ  Ｍｉｃｒｏａｒｃｈｉｔｅｃｔｕｒｅ（ＭＩＣＲＯ−３６’０３）の議事録）は、全てのコアが同一命令セットを実行するが、異なる能力および性能レベルを有する、マルチコアアーキテクチャを考察する。実行時、システムソフトウェアは、アプリケーションのリソース要件を評価し、エネルギー消費を最小限にしながら、これらの要件を最適に満たすことができるコアを選択する。文書の第２項に記載のように、アプリケーションの実行中、オペレーティングシステムソフトウェアは、アプリケーションを異なるコアに組み合わせ、例えば、特定の性能要件等、定義された目的機能を満たそうと試みる。第２．３項には、コアを切り替えるにはコストが存在し、切り替えの粒度の制限が必要となることが特筆されている。次いで、オペレーティングシステムが切り替えが順当であると判定した場合、新しいコアを駆動し、キャッシュのフラッシュをトリガして、全てのダーティキャッシュデータを共有メモリ構造に保存し、次いで、既定のオペレーティングシステムのエントリポイントで、新しいコアに起動するように信号を送信する、という特定の例が考察される。旧コアは、次いで、電源を切断することができ、一方、新しいコアは、メモリから必要なデータを呼び出す。このような手法は、アプリケーションが、オペレーティングシステムによってコア間で切り替えられることを可能にするとして、第２．３項に記載される。文書の後半では、次いで、エネルギー消費削減を目的として、マルチコア環境で、そのような切り替えをどのように動的に実施することができるかを考察する。
【０００６】
上記の文献は、エネルギー消費削減を実現するために、単一ＩＳＡ異種マルチコアアーキテクチャの可能性を考察するが、依然として、オペレーティングシステムに、個別のアプリケーションを実行するためのスケジュール判定を可能にするに十分な機能を提供することを必要とする。この面でオペレーティングシステムの役割は、異なるアーキテクチャ特徴を備えるプロセッサインスタンス間で切り替える場合にはより複雑になる。この点で、文献で検討されたＡｌｐｈａコアＥＶ４からＥＶ８は、例えば、第２．２項の第５段落で考察されるように、完全にＩＳＡ互換ではないことに注意されたい。
【０００７】
さらに、文書は、コア間でアプリケーションを切り替える際に関わる顕著なオーバーヘッドが存在するという問題に対処していないが、この問題は、そのような切り替えから達成される利点を実質的に削減する可能性がある。オーバーヘッドは、移転された作業負荷を実施するプロセッサがない間に切り替えを実施するためにかかる時間だけでなく、切り替えに続いてキャッシュミスによって被るペナルティも含む。移転先コアが移転された処理の実施を開始すると、移転先コアの中に提供されるいずれのキャッシュも有効なデータを含むことなく起動し、したがって、移転先コアは、コールドスタートのキャッシュミスを経験することになる。これは、データがメモリから取得されなければならないことを意味し、処理性能の速度を低下させ、相当な量のエネルギーを使用する。性能およびエネルギー効率は、移転先キャッシュがメモリの中に記憶されたデータ値のうちのいくつかをキャッシュすることによって「準備」した後にのみ回復する。Ｒ．Ｋｕｍａｒ  ｅｔ  ａｌ  による上記の文献は、第４．４項でコールドスタートのキャッシュミスの問題を認識するが、Ｋｕｍａｒはこの問題に対して何ら解決策を提供しない。本技法は、移転先プロセッサへの切り替え後の処理性能を向上させることを模索する。
【０００８】
（発明の概要）
一態様から見ると、本発明は、
処理作業負荷が１回に第１の処理回路および第２の処理回路のうちの１つによって実施されるように、処理作業負荷を実施するように構成される、第１の処理回路および第２の処理回路と、
第１の処理回路および第２の処理回路への電力供給を独立的に制御するための電力制御回路と、
移転刺激に応答して、電力制御回路によって、移転元処理回路が電力節約状態に入れられる前に、移転元処理回路から移転先処理回路への処理作業負荷の実施の移転を制御する、作業負荷移転コントローラであって、移転元処理回路は、第１の処理回路および第２の処理回路のうちの一方であり、移転先処理回路は、第１の処理回路および前記第２の処理回路のうちのもう一方である、作業負荷移転コントローラと、を備え、
少なくとも移転元処理回路は、キャッシュを有し、
電力制御回路は、移転先処理回路によって移転された処理作業負荷の実施の開始に続くスヌープ期間中、移転元処理回路の少なくともキャッシュを駆動状態に維持するように構成され、
データ処理装置は、スヌープ期間中、移転元処理回路のキャッシュのデータ値をスヌープし、移転先処理回路のためにスヌープしたデータ値を呼び出すように構成される、キャッシュスヌープ回路を備え、
電力制御回路は、スヌープ期間の終了に続いて、移転元処理回路の前記少なくともキャッシュを電力節約状態に入れるように構成される、データ処理装置を提供する。
【０００９】
本発明のデータ処理装置は、第１の処理回路および第２の処理回路を有し、処理中の任意の時点で、第１の処理回路および第２の処理回路のうちの１つが処理作業負荷を実施している。移転刺激が発生すると、処理作業負荷の実施は、移転元処理回路（第１の処理回路および第２の処理回路のうち、移転刺激の受信の時点現在作業負荷を実施している方）が電力節約状態に入れられる準備として、移転元処理回路から、移転先処理回路（第１の処理回路および第２の処理回路のうちのもう一方）へ移転される。移転自体がどのように達成されるかに関係なく、本技法は、処理作業負荷が移転先処理回路へ移転された後、移転先回路の性能レベルを向上させる。
【００１０】
本技法は、移転に続いて、移転先処理回路が、移転前に移転元処理回路のキャッシュに記憶されていたデータ値を必要とする場合があることを認識する。移転元処理回路の少なくともキャッシュは、移転先処理回路によって移転された処理作業負荷の実施の開始に続く有限期間（スヌープ期間）中、駆動状態に維持される。キャッシュスヌープ回路は、スヌープ期間中移転元キャッシュの中のデータをスヌープし、移転先処理回路のためにデータを呼び出す。スヌープ期間中、移転元キャッシュへの電力を維持することによって、移転先処理回路は、処理の初期期間、移転元キャッシュの中のデータへのアクセスを有し、このため、データをメモリから取得する必要性を回避する。移転元キャッシュへのアクセスは、メモリにアクセスするよりも迅速で、少ない電力を使用するので、本技法は、処理作業負荷の移転に続いて、移転先処理回路の性能レベル、および装置全体のエネルギー効率を向上させる。
【００１１】
本技法はまた、この移転元キャッシュの中のデータのスヌープが、移転先処理回路による処理作業負荷の実施の開始に続く有限期間のみ有用であることも認識する。最終的に、移転元キャッシュの中のデータは、移転先処理回路によって実施される処理にもはや関係しなくなる。例えば、移転先処理回路が移転元キャッシュからのデータを必要としない別のアプリケーションの処理を開始する場合、または移転元キャッシュの中に記憶された値とは異なる、更新された値が使用されるようになる等、移転先処理回路がデータを処理した場合がある。したがって、スヌープ期間の終了時、キャッシュスヌープ回路は、移転元キャッシュからデータ値をスヌープすることを停止し、電力制御回路は、エネルギーを節約するために、移転元処理回路の少なくともキャッシュを電力節約状態に入れるように構成される。
【００１２】
要約すると、移転先処理回路への処理作業負荷の移転直後に移転元キャッシュの電源を切断する代わりに、移転元キャッシュは、キャッシュスヌープ回路が移転元キャッシュの中のデータ値をスヌープし、移転先処理回路のためにスヌープデータ値を呼び出すことができるスヌープ期間中、駆動状態に維持される。メモリからのデータの取得回数を削減することによって、性能レベルおよびエネルギー効率が向上する。
【００１３】
本明細書は概して、２つの処理回路（第１の処理回路および第２の処理回路）が存在する場合に対して本技法を記載するが、データ処理装置は更なる処理回路を備えてもよく、本技法は、処理回路のうちの任意の２つの間の処理作業負荷の移転に適用されてもよい。さらに、各処理回路は、単一のプロセッサコア、または複数のプロセッサコアを含むことができる。
【００１４】
処理作業負荷は、少なくとも１つの処理アプリケーションと、少なくとも１つの処理アプリケーションを実行するための少なくとも１つのオペレーティングシステムとを含むことができる。任意の特定の時点で、第１の処理回路および第２の処理回路のうちの１つの上だけで実施される作業負荷全体を巨視的エンティティとして取り扱うことによって、作業負荷は、オペレーティングシステムに透過的な様式で、第１の処理回路と第２の処理回路との間で容易に切り替えることができる。そのような手法は、特定の処理回路に対するアプリケーションのスケジュールを管理するために、オペレーティングシステムを使用することからもたらされる、前述の問題に対処する。
【００１５】
作業負荷移転コントローラは、作業負荷の移転が少なくとも１つのオペレーティングシステムに透過的であるように、移転中、既定のプロセッサ固有の構成情報を少なくとも１つのオペレーティングシステムからマスクするように構成される場合がある。これは、オペレーティングシステムが第１の処理回路に関連するプロセッサ固有の構成情報と、第２の処理回路に関連するプロセッサ固有の構成情報との間の違いを認識する必要がないため、オペレーティングシステムの構成が単純化されることを意味する。第１の処理回路および第２の処理回路のプロセッサ固有の違いがオペレーティングシステムからマスクされるので、オペレーティングシステムの観点（およびオペレーティングシステムによって実行されるいずれのアプリケーションの観点）からは、作業負荷は、単一のハードウェアプラットフォーム上で実行されている。作業負荷が第１の処理回路または第２の処理回路上で実行されているかどうかは、ハードウェアプラットフォームのオペレーティングシステムの視点では同じである。これによって、オペレーティングシステムおよびアプリケーションを構成することが容易になる。
【００１６】
作業負荷移転コントローラは、第１の処理回路および第２の処理回路から、少なくとも１つのオペレーティングシステムを論理的に分離する、少なくとも仮想化ソフトウェアを含む場合がある。仮想化ソフトウェアは、オペレーティングシステムからそれぞれの処理回路のハードウェア構成を隠すために、あるレベルの抽象化を提供するので、オペレーティングシステムは、どちらの処理回路が作業負荷を実施しているかを認識しない。このように、オペレーティングシステム構成を単純化することができる。仮想化ソフトウェアは、第１の処理回路または第２の処理回路いずれかへの処理作業負荷の割り当てを制御する場合がある。
【００１７】
第１の処理回路は、データ処理装置によって実施される処理作業負荷が、第１の処理回路または第２の処理回路のいずれか上で実施できるように、第２の処理回路とアーキテクチャ上の互換性があってもよい。すなわち、アプリケーションの観点からは、第１の処理回路上で実行しているアプリケーションと第２の処理回路上で実行しているアプリケーションとの間の唯一の違いは、達成される性能レベルまたはエネルギー効率性である。第１の処理回路と第２の処理回路との間の命令セットの変換に対する必要性は存在しない。オペレーティングシステムおよびオペレーティングシステムによって実行されているアプリケーションを含む、処理作業負荷全体が、単純な方式で第１の処理回路と第２の処理回路との間で交互に移転することができる。
【００１８】
第１の処理回路は、第１の処理回路の性能が第２の処理回路の性能とは異なるように、第２の処理回路とはマイクロアーキテクチャ上異なる。第１の処理回路および第２の処理回路のうちの、より高い性能レベルを有する一方は、概して、第１の処理回路および第２の処理回路のうちのもう一方よりも多くのエネルギーを消費する。すなわち、高性能処理が必要な場合（例えば、ゲームアプリケーションが実施される場合）、作業負荷をより高性能の処理回路へ切り替えることができる。一方、ＭＰ３再生等の低性能処理が実施されることになる場合、処理作業負荷は、エネルギー効率を向上させるために、その全体をより低性能処理回路へ切り替えることができる。このように、マイクロアーキテクチャ上異なる処理回路を提供することによって、処理作業負荷の実施は、実施される作業負荷の性質に応じて、性能またはエネルギー消費を最適化することができる。
【００１９】
処理回路間のマイクロアーキテクチャ上の違いとしては、例えば、異なる実行パイプライン長、または異なる実行リソースを挙げることができる。パイプライン長の違いは、典型的に、動作周波数の違いになり、すなわち、性能に影響を与える。同様に、実行リソースの違いは、処理能力、したがって性能に影響を与える。例えば、より広範な実行リソースを有する処理回路は、任意の特定の時点でより多くの情報を処理することを可能にし、処理能力を向上させる。加えて、または代替として、ある処理回路は、他の処理回路よりも多くの実行リソース、例えば、より多くの算術論理装置（ＡＬＵ）を有する場合があり、これも処理能力を向上させる。異なる実行リソースの別の例として、エネルギー効率の高い処理回路は、簡単な順次パイプラインを備えて提供される場合があり、一方、より高性能の処理回路は、非順次のスーパースカラーパイプラインを備えて提供される場合がある。また、より高性能の処理回路は、分岐が解決される前に、予想される分岐ターゲットを予め取得することによって、処理を短縮する分岐予想能力を有する可能性があり、一方、よりエネルギー効率の高い処理回路は、分岐予想機能を有さない可能性がある。そのようなマイクロアーキテクチャ上の違いは、各アーキテクチャ上の互換性がある処理回路が同じ処理作業負荷を実施する能力に影響しないが、それぞれの処理回路が処理作業負荷を実施する時の性能およびエネルギー消費のレベルの違いとなる。
【００２０】
本技法は、移転元処理回路だけがキャッシュを有する時に使用されてもよい。この場合、スヌープ期間中に移転元キャッシュをスヌープするためにキャッシュスヌープ回路を使用する移転先処理回路によって、いくつかのメモリアクセスを回避することができる。スヌープ期間の終了に続いて、全てのデータがメモリから取得される必要がある。
【００２１】
しかしながら、典型的に、第１の処理回路および第２の処理回路の両方がキャッシュを備えるように、移転先処理回路もキャッシュを備える。この場合、キャッシュスヌープ回路によってスヌープされ、キャッシュスヌープ回路によって移転先処理回路のために呼び出されたデータ値は、データへの将来の参照時間を短縮するために、移転先処理回路のキャッシュの中に記憶することができる。
【００２２】
実施形態において、電力制御回路は、スヌープ期間中、キャッシュ以外の移転元処理回路を電力節約状態に入れ、スヌープ期間の終了に続いて、移転元処理回路のキャッシュを電力節約状態に入れるように構成される場合がある。これによって、作業負荷が移転先プロセッサへハンドオーバーされた後、移転元処理回路の大部分の電力を切断することができるので、データ処理装置の電力消費を削減する。スヌープ期間中、移転元処理回路のキャッシュだけが駆動状態のままであり、キャッシュスヌープ回路が、移転先処理回路のために、移転元キャッシュの中に記憶されたデータを呼び出すことを可能にする。
【００２３】
一実施形態において、キャッシュが移転元処理回路内のキャッシュ階層の一部である場合、スヌープされた移転元キャッシュはスヌープ期間中駆動状態に維持することができ、一方、キャッシュ階層内の少なくとも１つの他のキャッシュは電力節約状態にある。
【００２４】
この状況の例は、スヌープされる移転元キャッシュが、キャッシュ階層の任意のレベル１キャッシュの中に記憶されたデータの全てを記憶するように構成される、レベル２包括的キャッシュである場合である。この場合、レベル２キャッシュは、移転先処理回路のためのキャッシュスヌープ回路からのスヌープを可能にするために、スヌープ期間中駆動状態に残すことができる一方、レベル１キャッシュは、移転元処理回路の残りの部分とともに電力を切断することができる。
【００２５】
代替として、電力制御回路は、スヌープ期間中、移転元処理回路を駆動状態に維持し、スヌープ期間の終了に続いて、キャッシュを含む移転元処理回路全体を電力節約状態に入れるように構成される場合がある。スヌープ期間中に移転元処理回路を駆動状態に残すと電力消費量が増加するが、移転元キャッシュおよび移転元処理回路の残りの部分の両方に対する独立的な電力制御が必要とされないため、データ処理装置の複雑度を削減する。
【００２６】
移転元キャッシュおよび移転元処理回路を一緒に駆動させることが望ましい場合がある例示的状況は、キャッシュスヌープ回路によってスヌープされる移転元処理回路のキャッシュが、レベル１キャッシュの場合である。レベル１キャッシュは、キャッシュおよび移転元処理回路の残りの部分に別個の電力制御を提供することを可能にするには、移転元処理回路内のプロセッサコアに対する統合が緊密すぎる場合がある。この場合、キャッシュを含む移転元処理回路全体は、スヌープ期間中駆動状態に残し、スヌープ期間の終了に続いて電力を切断することができる。
【００２７】
移転元処理回路は、スヌープ期間の終了後、電力制御回路が移転元処理回路のキャッシュを電力節約状態に入れる前に、キャッシュから共有メモリへ任意のダーティデータを書き戻すために、移転元キャッシュ上で消去動作を実施するように構成される場合がある。キャッシュの電力が切断される前に移転元キャッシュを消去することによって、最新の値がまだメモリに書き戻されていない、どのダーティデータも失われないことが保証される。
【００２８】
エネルギーを節約するために、電力制御回路は、移転刺激の発生前に、移転先処理回路を電力節約状態に維持することが有用な場合がある。この場合、電力制御回路は、移転刺激に応答して、移転先処理回路の電源を入れることができる。
【００２９】
移転先処理回路は、移転先処理回路が移転された処理作業負荷の実施を開始する前に、移転先キャッシュを無効化するように構成される場合がある。例えば、移転先処理回路が処理作業負荷の実施の移転前に電力節約状態にあった場合、移転先処理回路の電力を入れる時、移転先キャッシュは疑わしいデータを含む可能性がある。移転先処理回路が移転された処理作業負荷の実施を開始する前に移転先キャッシュを無効化することによって、処理エラーを回避することができる。
【００３０】
処理性能を向上させるために、移転元処理回路は、移転先処理回路のキャッシュが無効化されている間に処理作業負荷の実施を継続するように構成される場合があり、作業負荷移転コントローラは、移転先処理回路のキャッシュが無効化された後に、処理作業負荷の実施を移転先処理回路へ移転するように構成される場合がある。移転先処理回路が処理作業負荷の実施を開始する準備ができるまで、移転元処理回路に処理作業負荷の実施を継続することを可能にすることによって、どちらの処理回路も処理作業負荷を実施しない期間が削減され、したがって、処理作業負荷の性能レベルが向上する。
【００３１】
一実施形態において、スヌープ期間は、移転先処理回路が処理作業負荷の実施を開始する時に始まる場合がある。
【００３２】
スヌープ期間は、少なくとも１つのスヌープ停止イベントを含むスヌープ停止イベントのセットのうちのいずれか１つの発生時に終了する場合がある。移転元キャッシュを駆動状態に保つことにもはや価値がないことを示す、１つ以上のスヌープ停止イベントは、キャッシュスヌープ回路をトリガして、スヌープ期間を終了することができる。典型的に、これらのイベントは、移転元キャッシュの中のデータが、移転先処理回路によってもはや必要とされないことを示す。
【００３３】
キャッシュスヌープ回路は、１組のスヌープ停止イベントのうちのいずれかが発生したかを監視するように構成される場合がある。例えば、キャッシュスヌープ回路は、移転先処理回路の処理および移転先処理回路によって実施されるデータアクセスを監視するために性能カウンタを備える場合がある。性能カウンタを使用して、キャッシュスヌープ回路は、移転元キャッシュの中のデータが、移転先処理回路によって実施されている処理にまだ関連しているかを分析することができる。移転先処理回路ではなく、キャッシュスヌープ回路を、スヌープ停止イベントのうちのいずれかが発生したかを監視するように構成することによって、移転先処理回路は、移転元キャッシュがまだスヌープされているかについて未認識のままにすることができる。これによって、移転先処理回路の構成がより単純になる。
【００３４】
少なくとも１つのスヌープ停止イベントは、キャッシュスヌープ回路によって実施されたスヌープが移転元処理回路のキャッシュ内のキャッシュヒットになる割合が、既定の閾値レベル未満に低下した時に発生するイベントを含む場合がある。移転元キャッシュのキャッシュヒットの割合が低い場合、これは、移転先処理回路によって追及されたデータ値の多くがもはや移転元キャッシュに存在しないことを示し、したがって、移転元キャッシュの中のデータは、移転先処理回路に関係しない。したがって、キャッシュヒットの割合が既定の閾値レベル未満に低下すると、スヌープ期間を終了し、移転元キャッシュをシャットダウンすることによって、電力効率を向上することができる。
【００３５】
少なくとも１つのスヌープ停止イベントは、移転先処理回路が処理作業負荷の移転に続いて、既定の種類の既定数の処理トランザクションを完了する時に発生するイベントを含む場合もある。移転先処理回路は、キャッシュスヌープ回路を介して移転元キャッシュに記憶されたデータにアクセスすることができるが、移転先処理回路は典型的に、移転元キャッシュの中の値を更新することができない。既定数のトランザクションを完了した後、移転先処理回路は、移転元キャッシュに本来記憶されていたデータのうちのいくつかに対して新しい値を生成したであろうと考えることができる。移転先処理回路は、移転元キャッシュにデータを書き込むことはできないので、新しいデータ値は、メモリおよび／または移転先キャッシュの中に記憶されることになり、すなわち、移転元キャッシュの中の本来のデータ値はもはや移転先処理回路には関係しない。したがって、既定の種類の既定数の処理トランザクションの完了は、移転元キャッシュがもはや必要とされないことを示すことができ、このためにスヌープ期間の終了をトリガすることができる。既定の種類の処理トランザクションは、例えば、移転先処理回路によって実施された全てのトランザクションを含む可能性があるが、またはキャッシュ可能なトランザクションだけを含む可能性がある。
【００３６】
別の種類のスヌープ停止イベントは、移転先処理回路が移転された処理作業負荷の実施を開始した後、既定数の処理サイクルが経過した時に発生するイベントにすることができる。上記のように、移転先処理は典型的に、移転元キャッシュの中の値を更新することができない。したがって、移転先処理回路がある数の処理サイクルの処理を実施した後、データ処理回路によって使用されるデータ（例えば、メモリまたは移転先キャッシュの中に記憶されるデータ）は、移転元キャッシュの中にまだ記憶されたデータと同じである可能性は低い。すなわち、移転先処理回路による処理作業負荷の実施の開始以来経過した処理サイクルの数は、移転元キャッシュが移転先処理回路に対してもはや有用ではなく、電源を切断することができることのインジケータとすることができる。
【００３７】
装置が第１の処理回路と第２の処理回路との間で共有される共有メモリを備える場合、少なくとも１つのスヌープ停止イベントは、共有メモリの特定のメモリ領域が、移転された処理作業負荷の実施を開始した後、移転先処理回路によって、初めてアクセスされる時に発生するイベントを含む場合がある。特定のメモリ領域に対する最初のアクセスは、例えば、移転先処理回路によって以前に処理されているアプリケーションとは異なる、移転先処理回路が特定のメモリ領域に関連する新しいアプリケーションを開始したことを示すことができる。これは、移転元キャッシュの中のデータは、新しいアプリケーションに関連せず、もはや移転先処理回路に関係しないことを示すことができる。したがって、特定のメモリ領域に対する最初のアクセスは、スヌープ期間の終了をトリガすることができる。
【００３８】
同様な理由で、スヌープ停止イベントは、移転された処理作業負荷の実施を開始した後の初期期間に、移転先処理回路によってアクセスされた、共有メモリの特定のメモリ領域が、既定の期間に移転先処理回路によってアクセスされない時に発生するイベントも含むことができる。移転先処理回路が、移転元処理回路によって本来処理されていたアプリケーションとは異なるアプリケーションの処理を開始すると、本来のアプリケーションに関連したメモリ領域は、一定期間アクセスされない場合がある。これは、移転元キャッシュの中のデータは、移転先処理回路によってもはや使用されないこと、したがって、スヌープ期間の終了をトリガすることを示すことができる。
【００３９】
別の種類のスヌープ停止イベントは、移転された処理作業負荷の実施を開始した後、移転先処理回路が、共有メモリの既定のメモリ場所に初めて書き込む時に発生するイベントである。これによって、移転先処理回路は、既定のメモリ場所に書き込むことによって、移転元キャッシュの中のデータをもはや必要としないことを、キャッシュスヌープ回路に信号送信することが可能になる。
【００４０】
１組のスヌープ停止イベントは、上記のスヌープ停止イベントならびに他の種類のスヌープ停止イベントのうちのいずれか１つまたは複数を含むことができる。
【００４１】
本明細書に使用される場合、「共有メモリ」という用語は、第１の処理回路および第２の処理回路両方によって直接アクセスすることができるメモリを指し、例えば、相互接続により第１の処理回路および第２の処理回路両方に連結されるメインメモリである。
【００４２】
装置は、スヌープオーバーライド状態に応答して、キャッシュスヌープ回路による移転元処理回路のキャッシュのスヌープをオーバーライドし、スヌープ期間の終了を待機することなく、処理作業負荷の実施の移転後に、キャッシュを含む移転元処理回路を電力節約状態に入れるように電力制御回路を制御するために、スヌープオーバーライドコントローラを備える場合がある。ある状況では、移転元キャッシュのスヌープは、移転先処理回路にとって有用ではない場合がある。そのような状況では、スヌープオーバーライドコントローラは、移転元キャッシュのスヌープを阻止し、スヌープ期間の終了を待機することなく、キャッシュを含む移転元処理回路を電力節約状態に入れるように電力制御回路を制御することによって、キャッシュスヌープ回路をオーバーライドすることができる。スヌープオーバーライドコントローラは、例えば、移転元処理回路上で実行されるファームウェアとして、または処理回路のハードウェア固有の情報をオペレーティングシステムからマスクする仮想化ソフトウェアの一部として提供される場合がある。
【００４３】
例えば、処理作業負荷の実施の移転前に、移転元キャッシュの中のデータが、移転に続いて移転先処理回路によって実施される予定の処理には必要とされないことがわかっている場合がある。例えば、移転元処理回路がゲームアプリケーションの実施をちょうど終了した場合、ゲームアプリケーションによって使用されたデータは、異なるアプリケーションの処理を開始した後、移転先処理回路には有用ではない場合がある。この場合、スヌープオーバーライドコントローラは、キャッシュスヌープ回路および電力制御回路に対して、キャッシュのスヌープが不要であることを信号送信することができる。
【００４４】
キャッシュスヌープ回路は、第１の処理回路および第２の処理回路に連結されたコヒーレント相互接続を備える場合がある。コヒーレント相互接続は、移転元キャッシュおよびデータ処理装置の中に存在する任意の共有メモリの両方の視点を有する。移転先処理回路は、コヒーレント相互接続からデータを簡単にリクエストすることができ、コヒーレント相互接続は、データが移転元キャッシュからスヌープされるか、またはメモリのために取得されるかを管理することができる（スヌープ期間が完了したかどうか、およびデータアクセスリクエストが移転元キャッシュのヒットになったかどうかに依存する）。コヒーレント相互接続は、移転先処理回路がリクエストされたデータの正確な場所に認識する必要がないように、データアクセスを管理する。移転先処理回路は、移転元キャッシュからデータがスヌープされたことを認識しない可能性がある。コヒーレント相互接続は、いくつかの実施形態では、処理作業負荷のハンドオーバー中に、移転元処理回路から移転先処理回路へアーキテクチャ状態データを移転するための便利な機構も提供する。
【００４５】
別の態様から見ると、本発明は、
処理を実施するための第１の処理手段および処理を実施するための第２の処理手段であって、処理作業負荷が１回に第１の処理手段および前記第２の処理手段のうちの１つによって実施されるように、処理作業負荷を実施するように構成される、第１の処理手段および第２の処理手段と、
第１の処理手段および第２の処理手段への電力供給を独立的に制御するための電力制御手段と、
移転刺激に応答して、電力制御手段によって、移転元処理手段が電力節約状態に入れられる前に、移転元処理手段から移転先処理手段への処理作業負荷の実施の移転を制御する、作業負荷移転制御手段であって、移転元処理手段は、第１の処理手段および第２の処理手段のうちの一方であり、移転先処理手段は、第１の処理手段および第２の処理手段のうちのもう一方である、作業負荷移転制御手段と、を備え、
少なくとも移転元処理手段は、キャッシュされたデータ値を記憶するためのキャッシュ手段を有し、
電力制御手段は、移転先処理手段によって移転された処理作業負荷の実施の開始に続くスヌープ期間中、移転元処理手段の少なくともキャッシュ手段を駆動状態に維持するように構成され、
データ処理装置は、スヌープ期間中、移転元処理手段のキャッシュ手段のデータ値をスヌープし、移転先処理手段のためにスヌープしたデータ値を呼び出すように構成される、キャッシュスヌープ手段を備え、
電力制御手段は、スヌープ期間の終了に続いて、移転元処理手段の少なくとも前記キャッシュ手段を電力節約状態に入れるように構成される、データ処理装置を提供する。
【００４６】
また別の態様から見ると、本発明は、処理作業負荷が１回に第１の処理回路および第２の処理回路のうちの１つによって実施されるように、処理作業負荷を実施するように構成される、第１の処理回路と第２の処理回路とを備える装置のためのデータ処理方法であって、
移転元処理回路を用いて処理作業負荷を実施することであって、移転元処理回路は、第１の処理回路および第２の処理回路のうちの一方であり、キャッシュを備え、第１の処理回路および第２の処理回路のうちのもう一方が移転先処理回路であることと、
移転刺激に応答して、移転元処理回路が電力節約状態に入れられる前に、処理作業負荷の実施を、移転元処理回路から移転先処理回路へ移転することと、
移転先処理回路によって移転された処理作業負荷の実施の開始に続くスヌープ期間中、移転元処理回路の少なくともキャッシュを駆動状態に維持することと、
スヌープ期間中、移転元処理回路のキャッシュの中のデータ値をスヌープし、移転先処理回路のためにスヌープしたデータ値を呼び出すことと、
スヌープ期間の終了に続いて、移転元処理回路の前記少なくともキャッシュを電力節約状態に入れることと、を含む、方法を提供する。
【００４７】
更なる態様から見ると、本発明は、
処理作業負荷が１回に第１の処理回路および第２の処理回路のうちの１つによって実施されるように、処理作業負荷を実施するように構成される、第１の処理回路および第２の処理回路と、
移転刺激に応答して、電力制御回路によって、移転元処理回路が電力節約状態に入れられる前に、移転元処理回路から移転先処理回路への処理作業負荷の実施の移転を制御する、作業負荷移転コントローラであって、移転元処理回路は、第１の処理回路および第２の処理回路のうちの一方であり、移転先処理回路は、第１の処理回路および前記第２の処理回路のうちのもう一方である、作業負荷移転コントローラとを備え、
少なくとも移転先処理回路は、キャッシュを有し、
移転先処理回路は、移転先処理回路が移転された処理作業負荷の実施を開始する前に、移転先処理回路のキャッシュを無効化するように構成され、
移転元処理回路は、移転先処理回路の前記キャッシュが無効化されている間に、処理作業負荷の実施を継続するように構成され、
作業負荷移転コントローラは、移転先処理回路のキャッシュが無効化された後、処理作業負荷の実施を移転先処理回路へ移転するように構成される、データ処理装置を提供する。
【００４８】
本技法は、移転先処理回路のキャッシュが無効化されている間に、移転元処理回路が移転刺激の受信に続く期間中に処理作業負荷の実施を継続することを可能にすることによって、処理性能を向上させることができる。移転先処理回路のキャッシュが無効化された後にのみ処理作業負荷の実施を移転元処理回路に転送することによって、どちらの処理回路も作業負荷を実施していない時間を短縮することができる。したがって、処理作業負荷がより高速かつより効率的に実施される。
【図面の簡単な説明】
【００４９】
本発明を、添付の図面に例示されるその実施形態を参照しながら、例示のみの目的でさらに説明する。
【図１】一実施形態によるデータ処理システムのブロック図である。
【図２】一実施形態によるスイッチコントローラ（本明細書において作業負荷移転コントローラとも呼ばれる）の提供が例示され、データ処理装置によって実施されている作業負荷を、その作業負荷を実施するために使用されているデータ処理装置内の特定のハードウェアプラットフォームから論理的に分離する。
【図３】一実施形態による、切り替え刺激に応答して作業負荷を移転元処理回路から移転先回路へ移転するために、移転元プロセッサおよび移転先プロセッサ両方によって実施されるステップを模式的に示す図である。
【図４Ａ】図３の保存動作中に、移転元処理回路の最新アーキテクチャ状態をその関連キャッシュに記憶するステップを模式的に示す。
【図４Ｂ】図３の復元動作中に、移転元処理回路の最新アーキテクチャ状態の移転先処理回路への移転を制御するために、スヌープ制御装置の使用を模式的に示す。
【図５】一実施形態による、移転動作中に移転元処理回路の最新アーキテクチャ状態を移転先処理回路へ移転するための加速機構を提供するための代替構造を示す。
【図６Ａ】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図６Ｂ】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図６Ｃ】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図６Ｄ】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図６Ｅ】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図６Ｆ】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図６Ｇ】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図６Ｈ】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図６Ｉ】一実施形態による、移転元処理回路から移転先処理回路へ作業負荷を移転するために実施されるステップを模式的に示す。
【図７】性能によるエネルギー効率の変動を示し、一実施形態による、図１に示された多様なプロセッサコアがその曲線に沿った多様な点でどのように使用されるかを示すグラフである
【図８Ａ】一実施形態において、低性能プロセッサパイプラインおよび高性能プロセッサパイプラインがそれぞれどのように利用されるかを模式的に示す。
【図８Ｂ】一実施形態において、低性能プロセッサパイプラインおよび高性能プロセッサパイプラインがそれぞれどのように利用されるかを模式的に示す。
【図９】処理作業負荷の実施が低性能、高エネルギー効率の処理回路、および高性能、低エネルギー効率の処理回路の間で切り替えられる際に、データ処理システムによって消費される電力の変動を示すグラフである。
【発明を実施するための形態】
【００５０】
図１は、一実施形態によるデータ処理システムを模式的に示すブロック図である。図１に示されるように、システムは、２つのアーキテクチャ上の互換性がある処理回路インスタンス（処理回路０（１０）および処理回路１（５０））を含むが、これらの異なる処理回路インスタンスは、異なるマイクロアーキテクチャを有する。具体的には、処理回路１０は、処理回路５０よりも高い性能で動作するが、処理回路１０は、処理回路５０よりもエネルギー効率が低いというトレードオフがあるように配置される。マイクロアーキテクチャ上の違いの例は、図８Ａおよび８Ｂを参照して以下に詳細に説明する。
【００５１】
各処理回路は、単一の処理装置（本明細書においては、プロセッサコアとも呼ばれる）を含む場合があるが、代替として、処理回路インスタンスのうちの少なくとも１つはそれ自体、同じマイクロアーキテクチャを備えた１群の処理装置を備える場合がある。
【００５２】
図１に示される例では、処理回路１０は、２つのプロセッサコア１５、２０を含み、両者はアーキテクチャ上でもマイクロアーキテクチャ上でも同じである。対照的に、処理回路５０は、単一のプロセッサコア５５のみを含む。以下の記載では、プロセッサコア１５、２０は典型的に、これらのコアは性能を重視して設計されているために、プロセッサコア５５よりも複雑度が高く、対照的にプロセッサコア５５は典型的に、エネルギー効率を重視して設計されているために実質的に複雑度が低いので、プロセッサコア１５、２０は、「大型」コアと呼ばれ、プロセッサコア５５は「小型」コアと呼ばれる。
【００５３】
図１では、コア１５、２０、５５の各々は、それぞれ、それ独自に関連したローカルレベル１キャッシュ２５、３０、６０を有すると想定され、これらは、関連コアによって参照されるための命令およびデータの両方を記憶するための統一キャッシュとして配置される場合、または個別のレベル１データおよびレベル１命令キャッシュを提供する、ハーバードアーキテクチャによって配置することができる。コアの各々は独自の関連レベル１キャッシュを有すると示されるが、これは要件ではなく、代替の実施形態では、コアのうちの１つ以上はローカルキャッシュを有さない場合がある。
【００５４】
図１に示される実施形態において、処理回路１０はまた、コア１５とコア２０との間で共有されるレベル２キャッシュ３５も含み、スヌープ制御装置４０は、２つのレベル１キャッシュ２５、３０とレベル２キャッシュ３５との間のキャッシュコヒーレンシを保証するために使用される。一実施形態において、レベル２キャッシュは、包括的キャッシュとして配置され、従って、レベル１キャッシュ２５、３０のいずれかに記憶される任意のデータは、レベル２キャッシュ３５にも存在する。当業者によって十分理解されるように、スヌープ制御装置４０の目的は、多様なキャッシュ間のキャッシュコヒーレンシを保証することであり、このため、アクセスリクエストを発行すると、コア１５、２０のいずれかが必ず最新バージョンの任意のデータにアクセスすることを保証することができる。したがって、例示のみを目的として、コア１５が関連レベル１キャッシュ２５の中に存在しないデータに対するリクエストを発行した場合、スヌープ制御装置４０は、レベル１キャッシュ２５から伝播されたリクエストをインターセプトし、レベル１キャッシュ３０および／またはレベル２キャッシュ３５を参照して、そのアクセスリクエストが、これらの他のキャッシュのうちの１つの内容からサービスすることができるかを判定する。データがキャッシュのうちのいずれにも存在しない場合にのみ、アクセスリクエストは、相互接続７０を介して、メインメモリ８０に伝播され、メインメモリ８０は、処理回路１０および処理回路５０の両方の間で共有されるメモリである。
【００５５】
相互接続７０内に提供されたスヌープ制御装置７５は、スヌープ制御装置４０に類似の様式で動作するが、このインスタンスでは、処理装置１０内部に提供されたキャッシュ構造と、処理回路５０内部に提供されたキャッシュ構造との間のコヒーレンシを維持することを模索する。レベル２キャッシュ３５が包括的キャッシュである例では、スヌープ制御装置は、処理回路１０のレベル２キャッシュ３５と、処理回路５０のレベル１キャッシュ６０との間のハードウェアキャッシュコヒーレンシを維持する。しかしながら、レベル２キャッシュ３５が、排他的レベル２キャッシュとして配置される場合、スヌープ制御装置７５は、処理回路１０のキャッシュと処理回路５０のキャッシュ６０との間のキャッシュコヒーレンシを保証するために、レベル１キャッシュ２５、３０の中に保持されたデータもスヌープする。
【００５６】
一実施形態によると、処理回路１０および処理回路５０のうちの１つだけが、任意の時点で作業負荷を積極的に処理することになる。本明細書の目的では、作業負荷は、図２の参照番号１００によって模式的に示されるように、少なくとも１つのアプリケーションと、その少なくとも１つのアプリケーションを実行するための少なくとも１つのオペレーティングシステムを含む。この例では、２つのアプリケーション１０５、１１０は、オペレーティングシステム１１５の制御下で実行中であり、アプリケーション１０５、１１０およびオペレーティングシステム１１５はまとめて作業負荷１００を形成する。アプリケーションは、ユーザレベルに存在すると考えることができ、一方、オペレーティングシステムは、特権レベルに存在し、アプリケーションおよびオペレーティングシステムによって形成される作業負荷はまとめて、ハードウェアプラットフォーム１２５（ハードウェアレベル概念を表す）上で実行する。任意の時点で、そのハードウェアプラットフォームは、処理回路１０、または処理回路５０のいずれかによって提供される。
【００５７】
図１に示されるように、電力制御回路６５は、処理回路１０および処理回路５０に電力を選択的かつ独立的に供給するために、提供される。一方の処理回路からもう一方の処理回路へ作業負荷を移転する前は、処理回路のうちの１つだけ、すなわち、現在作業負荷を実施している処理回路（移転元処理回路）が典型的に完全に駆動し、もう一方の処理回路（移転先処理回路）は典型的に電力節約状態にある。作業負荷が一方の処理回路からもう一方へ移転されるべきであることが判定されると、移転動作中、両方の処理回路が駆動状態にある期間が存在するが、作業負荷が移転される移転元処理回路は、次いで、電力節約状態に入る。
【００５８】
電力節約状態は、実装に応じて、多様な形式をとることができるので、例えば、電源を切断した状態、部分的／完全データ保存状態、休眠状態、またはアイドル状態のうちの１つの場合がある。そのような状態は、当業者によってよく理解され、したがって、本明細書において詳細に記載しない。
【００５９】
記載の実施形態の目的は、作業負荷の必要な性能／エネルギーレベルに応じて、処理回路の間で作業負荷の切り替えを実施することである。したがって、作業負荷に、ゲームアプリケーションの実行等、１つ以上の高負荷タスクの実行が関わる場合、作業負荷は、大型コア１５、２０のうちの１つを使用、または両方を使用のいずれかで、高性能処理回路１０上で実行することができる。しかしながら、対照的に、作業負荷が、ＭＰ３再生等の低負荷タスクだけを実施する場合、作業負荷全体を処理回路５０に移転することができ、したがって、処理回路５０を利用することからエネルギー効率からの利点を実現することができる。
【００６０】
そのような切り替え能力を最大限に利用するためには、作業負荷を移転する動作が、切り替えの利点を否定する程度までエネルギーを消費しないために、さらに切り替えプロセスがそれ自体、何らかの顕著な程度まで性能を低下させないように十分迅速であることを保証するために、切り替えが単純かつ効率的な様式で発生することを可能にする機構を提供することが必要である。
【００６１】
一実施形態において、そのような利点は少なくとも部分的に、処理回路１０を処理回路５０とアーキテクチャ上で互換性があるように配置することによって達成される。これによって、正しい動作を保証しながら、作業負荷が、一方の処理回路からもう一方へ移行することができることを保証する。そのようなアーキテクチャ上の互換性は最低限、同じ命令セットアーキテクチャを共有するために、処理回路１０および５０の両方に必要である。しかしながら、一実施形態では、そのようなアーキテクチャ上の互換性は、２つの処理回路のインスタンスが、プログラマの観点から同一と認識されることを保証するように、より高い互換性要件も必要とする。一実施形態において、これには、同じアーキテクチャレジスタ、およびアプリケーションを実行時にオペレーティングシステムによって使用されるデータを記憶する１つ以上の特殊目的レジスタの使用が関わる。そのようなレベルのアーキテクチャ上の互換性によって、処理回路間の作業負荷の移転をオペレーティングシステム１１５からマスクすることが可能になるので、オペレーティングシステムは、作業負荷が処理回路１０上または処理回路５０上で実行されているかに関して全く認識しない。
【００６２】
一実施形態において、一方の処理回路からもう一方への移転の取扱は、図２に示されるスイッチコントローラ１２０（図中ではバーチャライザ、本明細書の他の場所では作業負荷移転コントローラとも呼ばれる）によって管理される。スイッチコントローラは、ハードウェア、ファームウェア、および／またはソフトウェア特徴の組み合わせによって具現化することができるが、一実施形態では、１つのネイティブ命令セットに書き込まれたアプリケーションが、異なるネイティブ命令セットを適合するハードウェアプラットフォーム上で実行されることを可能にするために、仮想マシンに見出されるハイパーバイザソフトウェアに性質的に類似したソフトウェアを含む。２つの処理回路１０、５０の間のアーキテクチャ上の互換性に起因して、スイッチコントローラ１２０は、既定のプロセッサ固有の構成情報のうちの１つ以上の項目をオペレーティングシステムからマスクすることだけによって、オペレーティングシステム１１５から移転をマスクすることができる。例えば、プロセッサ固有の構成情報は、ＣＰ１５プロセッサＩＤレジスタおよびＣＰ１５キャッシュタイプレジスタの内容を含む場合がある。
【００６３】
そのような実施形態において、スイッチコントローラは、移転先回路が作業負荷の実施を成功裏に引き継ぐ用意ができていることを可能にするために、移転の時点で移転元処理回路によって保持され、移転が開始される時点では共有メモリ８０から既に利用可能ではない、任意の最新アーキテクチャ状態が、移転先処理回路に利用可能になっていることを保証するために必要であるに過ぎない。前述の例を使用すると、そのようなアーキテクチャ状態は典型的に、移転元処理回路のアーキテクチャレジスタファイルの中に記憶された最新値、さらに移転元処理回路の１つ以上の特殊目的レジスタの最新値を含む。処理回路１０、５０の間のアーキテクチャ上の互換性に起因して、この最新アーキテクチャ状態を移転元処理回路から移転先処理回路へ移転することができる場合、移転先処理回路は、移転元処理回路から作業負荷の実施を成功裏に引き継ぐ用意ができている。
【００６４】
処理回路１０、５０の間のアーキテクチャ上の互換性は、２つの処理回路の間の作業負荷全体の移転を促進するが、一実施形態においては、処理回路１０、５０は、２つの処理回路に関連して、異なる性能特徴が存在し、したがってエネルギー消費特徴等、マイクロアーキテクチャ上では相互に異なる。前述のように、一実施形態において、処理回路１０は、高性能で、エネルギー消費が高い回路であり、一方、処理回路５０は、低性能で、エネルギー消費が低い処理回路である。２つの処理回路は、いくつかの点でマイクロアーキテクチャ上では相互に異なる可能性があるが、典型的には、異なる実行パイプライン長、および／または異なる実行リソースのうちの少なくとも１つを有する。パイプライン長の違いは、典型的に、動作周波数の違いになり、すなわち、性能に影響を与える。同様に、実行リソースの違いは、処理能力、したがって性能に影響を与える。したがって、例として、処理回路１０は、処理能力を向上するために、より広範な実行リソースおよび／またはより多くの実行リソースを有する場合がある。さらに、プロセッサコア１５、２０内のパイプラインは、非順次のスーパースカラー処理を実施するように配置される場合があり、一方、エネルギー効率が高い処理回路５０内のより単純なコア５５は、順次パイプラインとして配置される場合がある。マイクロアーキテクチャ上の違いの更なる検討は、図８Ａおよび８Ｂを参照して後述する。
【００６５】
スイッチコントローラ１２０に、ある処理回路から別の処理回路へ作業負荷を移転させるためにハンドオーバー動作をさせる移転刺激の生成は、多様な理由でトリガすることができる。例えば、一実施形態では、アプリケーションは、「大型」、「小型」、または「大型／小型」としてプロファイルされ、マークされる場合があり、それによって、オペレーティングシステムは、これに従い作業負荷を移動するようにスイッチコントローラとインターフェースすることができる。したがって、そのような手法によって、移転刺激の生成は、実行されるアプリケーションの特定の組み合わせにマップすることができ、高性能が必要な場合には、作業負荷が高性能処理回路１０上で実行され、その性能が必要ではない場合には、その代わりにエネルギー効率の高い処理回路５０が使用されることを保証する。他の実施形態においては、１つ以上の入力に基づいて、一方の処理回路からもう一方への作業負荷の移転をいつトリガするかを動的に判定するために、アルゴリズムを実行することができる。例えば、性能に敏感なイベントをカウントするために（例えば、実行された命令の数、またはロードして記憶する動作の数）、処理回路の性能カウンタを設定することができる。サイクルカウンタまたはシステムタイマと組み合わされると、これによって、より高性能の処理回路に切り替えることによって遂行されるほうが適している場合がある、計算が非常に集中するアプリケーションが実行されることを識別すること、エネルギー効率が高い処理回路上で遂行されるほうが適している場合がある、ＩＯが集中するアプリケーションを示すロードと記憶の操作の回数が多いことを識別すること等を可能にする。
【００６６】
移転刺激がいつ刺激される場合があるかの更なる例として、データ処理システムは、動作中にデータ処理システムの温度を監視するための１つ以上の温度センサ９０を含む場合がある。最新の高性能処理回路、例えば、ＧＨｚ周波数で実行する回路は、時として、範囲内で動作することが設計されていた温度限界に到達する、または超える場合があり得る。そのような温度センサ９０を使用することによって、そのような温度限界が到達した時を検出することができ、これらの条件下で、データ処理システムの全体冷却をもたらすために、よりエネルギー効率の高い処理回路への作業負荷の移転をトリガするように、移転刺激を生成することができる。したがって、処理回路１０が高性能処理回路であり、処理回路５０がより低いエネルギーを消費するより低性能処理回路である、図１の例を考えると、デバイスの温度限界に到達した時に処理回路１０から処理回路５０へ作業負荷を移行することによって、より低い処理能力にも関わらず、依然として継続してプログラム実行を行うことを可能にしながら、デバイスのその後の冷却をもたらす。
【００６７】
図１には２つの処理回路１０、５０が示されるが、上述の実施形態の技法は、３つ以上の異なる処理回路を組み入れるシステムにも適用することができ、データ処理システムが、より広範な性能／エネルギーレベルに及ぶことを可能にすることが理解されるであろう。そのような実施形態において、異なる処理回路の各々は、処理回路間の作業負荷全体の容易な移行を可能にするために、アーキテクチャ上では相互に互換性があるように配置されるが、必要な性能／エネルギーレベルに応じて、それらの処理回路の使用の選択を可能にするように、マイクロアーキテクチャ上では相互に異なる。
【００６８】
図３は、移転刺激の受信後に作業負荷が移転元処理回路から移転先処理回路へ移転される時に移転元プロセッサ上および移転先プロセッサ上の両方で実施されるステップの順序を示す流れ図である。そのような移転刺激は、オペレーティングシステム１１５またはバーチャライザ１２０によって生成される場合があり、システムファームウェアインターフェースを介して、ステップ２００で、移転元プロセッサ（作業負荷だけでなく、スイッチコントローラ１２０の少なくとも一部を形成するバーチャライザソフトウェアも実行する）によって切り替え刺激が検出される。ステップ２００の移転刺激（本明細書では切り替え刺激とも呼ばれる）の受信によって、電力コントローラ６５は、移転先プロセッサ上で電源オンおよびリセット動作２０５を開始する。そのような電源オンおよびリセットに続いて、移転先プロセッサは、ステップ２１０でそのローカルキャッシュを無効にし、次いで、ステップ２１５でスヌープを有効にする。この時点で、移転先プロセッサは、作業負荷の移転を行う準備ができていることを移転元処理回路に信号送信し、この信号によって、移転元処理回路に、ステップ２２５での状態保存動作を実行させる。この状態保存動作は、図４Ａを参照して以下に詳細を記載するが、一実施形態においては、ハンドオーバー動作が開始される時点で、移転元処理回路が、共有メモリからは利用可能ではなく、移転先処理回路が作業負荷の実施を成功裏に引き継ぐために必要である、その最新アーキテクチャ状態のうちのいずれかをそのローカルキャッシュに記憶することが関わる。
【００６９】
状態保存動作２２５に続いて、状態切り替え信号が移転先プロセッサ２３０に発行され、移転先プロセッサに対して、必要なアーキテクチャ状態を呼び出すためには、移転元処理回路のスヌープを今開始しなければならないことを示す。このプロセスは、図４Ｂを参照して以下に詳細を記載する状態復元動作２３０を介して発生するが、一実施形態では、移転先処理回路が、相互接続７０内のスヌープ制御装置７５によってインターセプトされ、移転元プロセッサのローカルキャッシュ内にキャッシュされたコピーのアーキテクチャ状態を呼び出し、移転先プロセッサに返すようにさせる、一連のアクセスを開始することが関わる。
【００７０】
ステップ２３０に続いて、移転先プロセッサは、作業負荷の処理を引き継ぐ用意ができ、したがって、ステップ２３５で正常動作が開始する。
【００７１】
一実施形態において、移転先プロセッサ上で正常動作が開始すると、任意のダーティデータを共有メモリ８０にフラッシュするために、ステップ２５０で示されるように、移転元プロセッサのキャッシュを消去することができ、次いで、ステップ２５５で移転元プロセッサの電源を切断することができる。しかしながら、一実施形態では、移転先プロセッサの効率性をさらに向上させるため、移転元処理回路は、図３でスヌープ期間として示される期間、駆動状態のままでいるように配置される。この期間中、移転元回路のキャッシュのうちの少なくとも１つは駆動状態のままでいるので、移転先プロセッサによって発行されたアクセスリクエストに応答して、スヌープ制御回路７５によってその内容をスヌープすることができる。図３に記載されるプロセスを使用して作業負荷全体を移転した後、移転先プロセッサが作業負荷の動作を開始した後、少なくとも最初の期間、作業負荷の実施中に必要なデータのうちのいくつかは、移転元プロセッサのキャッシュに存在する。移転元プロセッサが、その内容をメモリにフラッシュし、電源を切断していた場合、そのローカルキャッシュには大量のキャッシュミスが存在し、共有メモリからデータを多量に取得することになり、移転先プロセッサのキャッシュが「準備中」、すなわち、作業負荷によって指定された動作を実施するために移転先プロセッサによって必要とされるデータ値で充填される間に顕著な性能影響がもたらされるので、移転先プロセッサは、これらの早期段階中、比較的非効率的に動作することになる。しかしながら、スヌープ期間中に移転元プロセッサのキャッシュを駆動したままにすることによって、スヌープ制御回路７５は、移転元回路のキャッシュを参照することによって、大量のこれらのキャッシュミスリクストをサービスすることが可能になり、共有メモリ８０からそのデータを呼び出すことに比較して、顕著な性能利点を生み出す。
【００７２】
しかしながら、この性能利点は、移転元プロセッサのキャッシュの内容が古くなった後、切り替え後の特定の時間のみ継続することが予想される。したがって、ある時点で、スヌープ停止イベントが生成されて、ステップ２４５でスヌープを無効にし、その後、ステップ２５０で移転元プロセッサのキャッシュが消去され、次いで、ステップ２５５で移転元プロセッサの電源が切断される。スヌープ停止イベントが生成される場合がある多様な事例の検討は、図６Ｇを参照して以下に詳細を記載する。
【００７３】
図４Ａは、一実施形態にしたがい、図３のステップ２２５で実施される保存動作を模式的に示す。具体的には、一実施形態において、移転元処理回路３００からローカルキャッシュ３３０に記憶されることが必要なアーキテクチャ状態は、データ処理動作の処理中に算術論理装置（ＡＬＵ）３０５によって参照されるレジスタファイル３１０の内容、さらにその作業負荷が移転先処理回路によって引き継がれることを成功裏に可能するために、作業負荷によって必要とされる多種多様な情報を識別する多様な特殊目的レジスタ３２０の内容からなる。特殊目的レジスタ３２０の内容は、例えば、現在実行されている命令を識別するプログラムカウンタ値、さらに多様な他の情報を含む。例えば、他の特殊目的レジスタとして、プロセッサモードの制御ビット、中断マスキング、実行状態およびフラグを保持する、プロセッサステータスレジスタ（例えば、ＡＲＭアーキテクチャのＣＰＳＲおよびＳＰＳＲ）が挙げられる。他の特殊目的レジスタとして、データエンディアンを変更する、ＭＭＵをオンまたはオフにする、データ／命令キャッシュをオンまたはオフにする等のビットを保持する、アーキテクチャ制御（ＡＲＭアーキテクチャのＣＰ１５システム制御レジスタ）が挙げられる。ＣＰ１５の他の特殊目的レジスタは、例外アドレスおよびステータス情報を記憶する。
【００７４】
図４Ａに模式的に示されるように、移転元処理回路３００は、典型的に、いくつかのプロセッサ固有の構成情報３１５も保持するが、この情報は、移転先処理回路には該当しないので、キャッシュ３３０に保存する必要はない。プロセッサ固有の構成情報３１５は、典型的に、ロジック定数を使用して、移転元処理回路３００にハードコードされ、例えば、ＣＰ１５プロセッサＩＤレジスタの内容（各処理回路で異なる）、またはＣＰ１５キャッシュタイプレジスタの内容（キャッシュ２５、３０、６０の構成に依存し、例えば、キャッシュが異なるライン長を有することを示す）を含む場合がある。オペレーティングシステム１１５が、プロセッサ固有の構成情報３１５を必要とする場合、プロセッサが既にハイパーバイザモードにない限り、ハイパーバイザモードへの実行トラップが発生する。これに応答して、バーチャライザ１２０は、一実施形態において、リクエストされた情報の値を示す場合があるが、別の実施形態では、「仮想」値を返す。プロセッサＩＤ値の場合、この仮想値は、「大型」および「小型」プロセッサ両方で同じであるように選択することができるので、これにより、バーチャライザ１２０によって、実際のハードウェア構成がオペレーティングシステム１１５から隠されるようにする。
【００７５】
図４Ａに模式的に示されるように、保存動作中、レジスタファイル３１０および特殊目的レジスタ３２０の内容は、移転元処理回路によって、キャッシュ３３０の中に記憶されて、キャッシュされたコピー３３５を形成する。このキャッシュされたコピーは、次いで共有可能とマークされ、移転先プロセッサが、スヌープ制御装置７５を介して、この状態をスヌープすることを可能にする。
【００７６】
移転先プロセッサでその次に実施される復元動作は、図４Ｂに模式的に示される。具体的には、移転先処理回路３５０（その独自のローカルキャッシュを有する場合も有さない場合もある）は、アーキテクチャ状態の特定の項目に対するリクエストを発行し、そのリクエストは、スヌープ制御装置７５によってインターセプトされる。スヌープ制御装置は、次いで、移転元処理回路のローカルキャッシュ３３０にスヌープリクエストを発行して、アーキテクチャ状態のその項目が移転元のキャッシュに存在するかを判定する。図４において記載される保存動作中に行われるステップによって、移転元のキャッシュ３３０でヒットが検出され、そのキャッシュされたアーキテクチャ状態は、スヌープ制御回路７５を介して、移転先処理回路３５０へ返されることになる。このプロセスは、アーキテクチャ状態の項目全てが移転元処理回路のキャッシュのスヌープを介して呼び出されるまで、反復的に繰り返すことができる。移転先処理回路３５０に関する任意のプロセッサ固有の構成情報は典型的に、前述のように移転先処理回路３５０にハードコードされる。このため、復元動作が完了すると、移転先処理回路は、作業負荷の取扱を成功裏に引き継ぐことを可能にするために必要な情報を全て有する。
【００７７】
さらに、一実施形態において、作業負荷１００が「大型」処理回路１０または「小型」処理回路５０によって実施されるかどうかに関わりなく、バーチャライザ１２０は、同じ値を有する仮想構成情報をオペレーティングシステム１１５に提供し、このため、「大型」および「小型」処理回路１０、５０の間のハードウェアの違いは、バーチャライザ１２０によってオペレーティングシステム１１５からマスクされる。すなわち、オペレーティングシステム１１５は、作業負荷１００の実施が、異なるハードウェアプラットフォームに移転されたことを認識しない。
【００７８】
図４Ａおよび４Ｂを参照して記載した保存および復元動作によると、多様なプロセッサインスタンス１０、５０は、移転元プロセッサから移転先プロセッサへアーキテクチャ状態を移転する際に関わる時間、エネルギー、およびハードウェアの複雑度を軽減するために、相互にハードウェアキャッシュコヒーレントであるように配置される。本技法は、移転元プロセッサから移転先プロセッサへ移転されなければならず、移転動作が行われる時点で共有メモリからは利用可能ではない、状態の全てを記憶するために移転元プロセッサのローカルキャッシュを使用する。状態は、移転元プロセッサのキャッシュ内で共有可能とマークされているため、これによって、ハードウェアキャッシュコヒーレントの移動先プロセッサが、この情報を移転動作中にスヌープすることを可能にする。そのような技法を使用することによって、その情報をメインメモリ、またはローカルメモリのいずれかがマップした記憶要素に保存する必要なく、プロセッサインスタンス間で情報を移転することが可能である。したがって、これは、顕著な性能およびエネルギー消費の利点を生み、エネルギー消費利点を実現することを模索するために、作業負荷を切り替えることが適切である多様な状況が増える。
【００７９】
しかしながら、前述のキャッシュコヒーレンスを使用する技法は、共有メモリを介して最新アーキテクチャ状態をルーティングすることなく、移転先プロセッサに最新アーキテクチャ状態を利用可能にするための１つの加速機構を提供するが、そのような加速機構を実施することができる唯一の方式ではない。例えば、図５は、ハンドオーバー動作中にアーキテクチャ状態が移転可能であるために、専用バス３８０が移転元処理回路３００と移転先処理回路３５０との間に提供される、代替機構を示す。したがって、このような実施形態では、図３の保存および復元動作２２５、２３０は、専用バス３８０を利用する代替の移転機構によって置換される。そのような手法は典型的に、キャッシュコヒーレンシ手法を採用するよりも高いハードウェアコストを有するが（キャッシュコヒーレンシ手法は典型的に、データ処理システム内に既に位置するハードウェアを利用する）、切り替えを実施するさらに高速の方式を提供することになり、特定の実装においては有利であり得る。
【００８０】
図６Ａ〜６Ｉは、移転元処理回路３００から移転先処理回路３５０へ作業負荷の実施を移転するために実施される、一連のステップを模式的に示す。移転元処理回路３００は、処理回路１０、５０のうち、移転前に作業負荷を実施している方であり、移転先処理回路は、処理回路１０、５０のもう一方である。
【００８１】
図６Ａは、移転元処理回路３００が、電力コントローラ６５によって駆動され、処理作業負荷１００を実施中であり、一方、移転先処理回路３５０が電力節約状態にあるという、初期状態のシステムを示す。この実施形態において、電力節約状態は、電源切断状態であるが、前述のように、他の種類の電力節約状態も使用されてもよい。作業負荷１００は、アプリケーション１０５、１１０と、アプリケーション１０５、１１０を実行するためのオペレーティングシステム１１５とを含み、バーチャライザ１２０によって、移転元処理回路３００のハードウェアプラットフォームから、抽象化される。作業負荷１００を実施中、移転元処理回路３００は、図４Ａに示されるように、例えば、レジスタファイル３１０および特殊目的レジスタ３２０の内容を含む場合がある、アーキテクチャ状態４００を維持する。
【００８２】
図６Ｂでは、移転刺激４３０はバーチャライザ１２０によって検出される。図６Ｂでは、移転刺激４３０は外部イベント（例えば、温度センサ９０による温度上昇の検出）として示されるが、移転刺激４３０はまた、バーチャライザ１２０自体によって、またはオペレーティングシステム１１５（例えば、オペレーティングシステム１１５は、特定のタイプのアプリケーションがプロセスされると、バーチャライザ１２０に伝達するように構成することができる）によってトリガされたイベントであることも可能である。バーチャライザ１２０は、移転刺激４３０に応答して、電力コントローラ６５を制御することによって、移転先処理回路３５０を駆動状態に入れるために、移転先処理回路３５０に電力を供給する。
【００８３】
図６Ｃでは、移転先処理回路３５０が、バーチャライザ１２０の実行を開始する。バーチャライザ１２０は、移転先処理回路３５０を駆動する時に、キャッシュ４２０の中に存在する場合がある、誤ったデータ値によって生じる処理エラーを防止するために、そのキャッシュ４２０を無効にするように、移転先処理回路３５０を制御する。移転先キャッシュ４２０が無効化されている間、移転元処理回路３５０は、作業負荷１００を引き続き実施する。移転先キャッシュ４２０の無効化が完了すると、バーチャライザ１２０は、作業負荷１００のハンドオーバーの準備ができたことを、移転元処理回路３００に信号送信するように、移転先処理回路３５０を制御する。移転先処理回路３５０のハンドオーバー操作の準備できるまで、移転元処理回路３００上で作業負荷１００の処理を継続することによって、ハンドオーバーの実施の影響を軽減することができる。
【００８４】
次の段階で、図６Ｄに示されるように、移転元処理回路３００は、作業負荷１００の実施を停止する。この段階中、移転元処理回路３００も移転先処理回路３５０も作業負荷１００を実施しない。アーキテクチャ状態４００のコピーが、移転元処理回路３００から移転先処理回路３５０へ移転される。例えば、アーキテクチャ状態４００は、図４Ａおよび４Ｂに示されるように、移転元キャッシュ４１０に保存され、移転先処理回路３５０に復元することができる、または図５に示されるように、専用バス上から移転することができる。アーキテクチャ状態４００は、共有メモリ８０の中に既に存在する情報以外に、移転先処理回路３５０が作業負荷１００を実施するために必要な状態情報全てを含む。
【００８５】
アーキテクチャ状態４００を移転先処理回路３５０に移転させると、移転元処理回路３００は、移転元キャッシュ４１０が駆動状態のままである以外、電力制御回路６５（図６Ｅを参照）によって電力節約状態になる。一方、移転先処理回路３５０は、移転されたアーキテクチャ状態４００を使用して、作業負荷１００の実施を開始する。
【００８６】
移転先処理回路３５０が作業負荷１００の処理を開始すると、スヌープ期間が開始する（図６Ｆを参照）。スヌープ期間中、スヌープ制御装置７５は、移転先処理回路３５０に代わって、移転元キャッシュ４１０に記憶されたデータをスヌープし、データを呼び出すことができる。移転先処理回路３５０が、移転先キャッシュ４２０の中に存在しないデータをリクエストすると、移転先処理回路３５０は、スヌープ制御装置７５からデータをリクエストする。スヌープ制御装置７５は、次いで、移転元キャッシュ４１０をスヌープし、スヌープの結果キャッシュヒットがある場合、スヌープ制御装置７５は、移転元キャッシュ４１０からスヌープしたデータを呼び出し、移転先処理回路３５０に返し、そこでスヌープしたデータを移転先キャッシュ４２０に記憶することができる。一方、移転元キャッシュ４１０のスヌープの結果がキャッシュミスの場合、リクエストされたデータは、共有メモリ８０から取得され、移転先処理回路３５０に返される。移転元キャッシュ４１０のデータにアクセスするほうが、共有メモリ８０にアクセスするよりも時間が短く、より少ないエネルギーを必要とするため、ある期間移転元キャッシュ４１０をスヌープすることによって、作業負荷１００の移転先処理回路３５０へのハンドオーバーに続く最初の期間中の処理性能を向上させ、エネルギー消費を削減する。
【００８７】
図６Ｇに示されるステップで、スヌープ制御装置７５は、移転元キャッシュ４１０を駆動状態に維持することがもはや効率的ではないことを示す、スヌープ停止イベントを検出する。スヌープ停止イベントは、スヌープ期間の終了をトリガする。スヌープ停止イベントは、スヌープ制御回路７５によって監視される１組のスヌープ停止イベントのうちの任意の１つの場合がある。例えば、１組のスヌープ停止イベントは、以下のイベントのうちの任意の１つ以上を含むことができる。
ａ）移転先処理回路３５０が作業負荷１００の実施を開始した後に、移転元キャッシュ４１０のキャッシュヒットとなるスヌープヒットの割合または比（すなわち、スヌープヒットの数／合計スヌープの数に比例する量）が、既定の閾値レベル未満になる場合
ｂ）移転先処理回路３５０が作業負荷１００の実施を開始して以来実施されたトランザクションの数、または既定のタイプのトランザクション（例えば、キャッシュ可能なトランザクション）の数が、既定の閾値を超える場合
ｃ）移転先処理回路３５０が作業負荷１００の実施を開始して以来経過した処理サイクルの数が、既定の閾値を超える場合
ｄ）移転先処理回路３５０が作業負荷１００の実施を開始して以来初めて、共有メモリ８０の特定領域がアクセスされた場合
ｅ）移転先処理回路３５０が作業負荷１００の実施を開始した後、初期期間中にアクセスされた、共有メモリ８０の特定領域が、既定のサイクル数または既定の期間中、アクセスされない場合
ｆ）移転先処理回路３５０が、移転された作業負荷１００の実施を開始して以来初めて、既定のメモリ場所に書き込む場合
【００８８】
これらのスヌープ停止イベントは、スヌープ制御装置７５を含む、コヒーレント相互接続７０の中のプログラム可能なカウンタを使用して検出することができる。他の種類のスヌープ停止イベントも、１組のスヌープ停止イベントに含められる場合がある。
【００８９】
スヌープ停止イベントを検出すると、スヌープ制御装置７５は、スヌープ停止信号４４０を移転元プロセッサ３００へ送信する。スヌープ停止装置７５は、移転元キャッシュ４１０のスヌープを停止し、今後は共有メモリ８０からリクエストされたデータを取得し、取得したデータを、取得したデータをキャッシュすることができる、移転先処理回路３５０に返すことによって、移転先処理回路３５０からのデータアクセスリクエストに応答する。
【００９０】
図６Ｈでは、移転元キャッシュの制御回路は、スヌープ停止信号４４０に応答して、共有メモリ８０に任意の有効およびダーティデータ値を保存するために（すなわち、そのキャッシュされた値は、共有メモリ８０の中の対応する値よりも最新である）、キャッシュ４１０を消去する。
【００９１】
図６Ｉでは、移転元キャッシュ４１０は、次いで、電力コントローラ６５によって電力が切断されるので、移転元処理回路３００は全体が電力節約状態になる。移転先処理回路３５０は、作業負荷１００の実施を継続する。オペレーティングシステム１１５の観点から、この状況はこうして図６Ａと同じである。オペレーティングシステム１１５は、作業負荷の実行がある処理回路から別の処理回路へ移転したことを認識しない。別の移転刺激が発生すると、作業負荷の実施を切り替えて第１のプロセッサに戻すために（この場合、処理回路１０、５０の「移転元処理回路」と「移転先処理回路」は逆になる）、図６Ａ〜６Ｉの同じステップを使用することができる。
【００９２】
図６Ａ〜６Ｉの実施形態において、キャッシュ４１０および移転元処理回路３００に対する独立的な電力制御が有効であるので、移転元処理回路３００は、移転元キャッシュ４１０以外、移転先処理回路３５０が作業負荷の実施を開始すると電力を切断することができ（図６Ｅを参照）、一方、移転元処理回路３５０のキャッシュ４１０だけが駆動状態のままである（図６Ｆ〜６Ｈを参照）。移転元キャッシュ４１０は、次いで、図６Ｉで電力が切断される。この手法は、エネルギーを節約するために、特に、移転元処理回路３００が「大型」処理回路１０である場合に有用とすることができる。
【００９３】
しかしながら、スヌープ期間中に移転元処理回路３００全体を引き続き駆動し、次いで、スヌープ期間および移転元キャッシュ４１０の消去の終了に続いて、移転元処理回路３００全体を、図６Ｉの電力節約状態に入れることも可能である。これは、移転元キャッシュ４１０が、移転元プロセッサコアに深く組み込まれているので、移転元プロセッサコアとは独立的に駆動することができない場合により有用な場合がある。この手法はまた、移転元プロセッサが「小型」処理回路５０であり、その電力消費が、「大型」処理回路１０に比較して有意ではない場合、「大型」処理回路１０が移転された作業負荷１００の処理を開始すると、スヌープ期間中に、キャッシュ６０以外の「小型」処理回路５０を電力節約状態に切り替えることは、システムの全体的な電力消費にほとんど影響を有さない場合があるので、より実際的であり得る。これは、「小型」処理回路５０および「小型」コアのキャッシュ６０に対して個別の電力制御を提供する余分のハードウェア複雑度が正当化されない場合があることを意味することができる。
【００９４】
いくつかの状況では、作業負荷の移転前に、移転元キャッシュの中に記憶されたデータは、作業負荷１００の実施を開始する際に、移転先処理回路３５０によって必要とされないことがわかる場合がある。例えば、移転元処理回路３００は、移転が発生する時にアプリケーションをちょうど完了したばかりの場合があり、したがって、移転の時点の移転元キャッシュ４１０のデータは、完了したアプリケーションに関係し、移転後に移転先処理回路３５０によって実施されるアプリケーションには関係しない。そのような場合、スヌープオーバーライドコントローラは、バーチャライザ１２０およびスヌープ制御回路７５をトリガして、移転元キャッシュ４１０のスヌープをオーバーライドし、移転元処理回路３００を制御して、スヌープ停止イベントがスヌープ期間の終了の信号を送信することを待機することなく、移転元キャッシュ４１０を消去して電力を切断する。この場合、図６Ａ〜６Ｉの技法は、データが移転元キャッシュ４１０からスヌープされる、図６Ｆのステップを含まず、図６Ｅのステップから、図６Ｇのステップへ直接進むことになる。このように、前もって、移転元キャッシュ４１０の中のデータが移転先処理回路３５０に有用ではないことがわかっている場合、スヌープ停止イベントを待機することなく、移転元キャッシュ４１０および移転元処理回路を電力節約状態に入れることによって、電力を節約することができる。スヌープオーバーライドコントローラは、バーチャライザ１２０の一部にすることができる、または移転元処理回路３００上で稼動するファームウェアとして実装することができる。スヌープオーバーライドコントローラは要素の組み合わせとして実装することも可能で、例えば、オペレーティングシステム１１５は、アプリケーションが終了した時にバーチャライザ１２０に伝達することができ、バーチャライザ１２０は、次いで、アプリケーションが終了した時に移転が発生する場合、移転元キャッシュ４１０のスヌープをオーバーライドすることができる。
【００９５】
図７はグラフで、線６００は性能に伴いエネルギー消費がどのように変動するかを示す。このグラフの様々な部分で、データ処理システムは、性能とエネルギー消費との間の適切なトレードオフを取得することを模索するために、図１に示されるプロセッサコア１５、２０、５５の様々な組み合わせを利用するように配置することができる。したがって、例として、いくつかの非常に高性能タスクを実行することが必要な場合、所望の性能を達成するために、処理回路１０の大型コア１５、２０の両方を実行することが可能である。任意選択的に供給電圧を変動する技法は、これらの２つのコアを利用する時に性能およびエネルギー消費のいくらかの変動を可能にするために使用することができる。
【００９６】
必要な性能が大型コアのうちの１つだけを使用して達成できるレベルにまで性能要件が低下すると、タスクは、大型コア１５、２０のうちの１つだけに移行することができ、もう一方のコアは電力切断または何らかの他の電力節約状態に入る。ここでも、供給電圧の変動は、そのような単一の大型コアを使用する際に、性能とエネルギー消費との間で何らかの変動を可能にするために使用することができる。２つの大型コアから１つの大型コアへの遷移は、全てのインスタンスで利用されるのが処理回路１０であり、処理回路５０は電力節約状態にあるので、移転刺激の生成も、作業負荷を移転するための上記の技法の使用も必要としないことに注意されたい。しかしながら、図７の破線６１０によって示されるように、小型コアが必要な性能を達成することが可能なレベルにまで性能が低下すると、作業負荷全体が、小型コア５５上で実行され、処理回路１０が電力節約状態に入るように、作業負荷全体を処理回路１０から処理回路５０へ移転するための前述の機構をトリガするために、移転刺激を生成することができる。ここでも、供給電圧を変動する技法は、小型コア５５の性能およびエネルギー消費のいくらかの変動を可能にするために使用することができる。
【００９７】
図８Ａおよび８Ｂはそれぞれ、一実施形態による、低性能プロセッサパイプライン８００と高性能プロセッサパイプライン８５０との間のマイクロアーキテクチャ上の違いを示す。図８Ａの低性能プロセッサパイプライン８００は、図１の小型処理コア５５に適し、図８Ｂの高性能プロセッサパイプライン８５０は、大型コア１５、２０に適する。
【００９８】
図８Ａの低性能プロセッサパイプライン８００は、メモリ８０から命令を取得するための取得段階８１０と、取得した命令を解読するための解読段階８２０と、整数演算を実施するための整数パイプライン８４０、乗算累積演算を実施するためのＭＡＣパイプライン、およびＳＩＭＤ（単一命令、複数データ）演算または浮動小数点演算を実施するためのＳＩＭＤ／ＦＰＵパイプライン８４４を含む、複数の実行パイプラインとを含む。低性能プロセッサパイプライン８００では、発行段階８３０は、一度に単一命令を発行し、命令が取得された順序で命令を発行する。
【００９９】
図８Ｂの高性能プロセッサパイプライン８５０は、メモリ８０から命令を取得するための取得段階８６０と、取得した命令を解読するための解読段階８７０と、解読した命令に指定されたレジスタの名前を変更するための名前変更段階８７５と、実行するための命令をディスパッチするためのディスパッチ段階８８０と、２つの整数パイプライン８９０、８９２、ＭＡＣパイプライン８９４、および２つのＳＩＭＤ／ＦＰＵパイプライン８９６、８９８を含む、複数の実行パイプラインとを含む。高性能プロセッサパイプライン８５０では、ディスパッチ段階８８０は、パイプライン８９０、８９２、８９４、８９６、８９８のうちの異なるものに対して一度に複数の命令を発行することができる、並列発行段階である。また、ディスパッチ段階８８０は、命令を非順次に発行することができる。低性能プロセッサパイプライン８００とは異なり、ＳＩＭＤ／ＦＰＵパイプライン８９６、８９８は、可変長であり、すなわち、ＳＩＭＤ／ＦＰＵパイプライン８９６、８９８を通じて進む動作は、特定の段階をスキップするように制御することができる。そのような手法の利点は、複数の実行パイプラインそれぞれが異なるリソースを有する場合、最短パイプラインを最長パイプラインと同じ長さにするように、人工的に長さを変える必要がなく、その代わりに、異なるパイプラインによって生じる結果の非順次性質に対応するロジックが必要なことである（例えば、処理例外が発生した場合、全てを順次に戻す）。
【０１００】
名前変更段階８７５は、プログラム命令の中に含まれ、プログラマのモデル観点からは、ハードウェアプラットフォームの実際のレジスタである、物理的レジスタに対して、特定のアーキテクチャレジスタを識別する、レジスタ指定子をマップするために提供される。名前変更段階８７５は、プログラマのマイクロプロセッサのモデル観点に存在するよりも大きい集団の物理的レジスタが、マイクロプロセッサによって提供されることを可能にする。このより大きい集団の物理的レジスタは、２つ以上の異なる命令に指定された同じアーキテクチャレジスタを、２つ以上の異なる物理的レジスタにマッピングすることによって、書き込み後書き込み（ＷＡＷ）ハザード等のハザードが回避されることを可能にして、異なる命令が同時に実行することができるため、非順次実行中に有用である。レジスタの名前変更技法の詳細については、読者は、本発明人による米国特許出願第２００８／１１４９６６号および米国特許第７，５９０，８２６号を参照されたい。
【０１０１】
低性能パイプライン８００および高性能パイプライン８５０は、いくつかの点でマイクロアーキテクチャ上異なる。マイクロアーキテクチャ上の違いは、
ａ）異なる段階を有するパイプライン。例えば、高性能パイプライン８５０は、低性能パイプライン８００には存在しない、名前変更段階８７５を有する。
ｂ）異なる能力を有するパイプライン段階。例えば、低性能パイプライン８００の発行段階８３０は、単一の命令発行だけが可能であるが、高性能パイプライン８５０のディスパッチ段階８８０は、並列に命令を発行することができる。並列発行は、パイプラインの処理能力を向上させ、したがって性能が向上する。
ｃ）異なる長さを有するパイプライン段階。例えば、高性能パイプライン８５０の解読段階８７０は、３つの副段階を含む場合があるが、低性能パイプライン８００の解読段階８２０は、単一の副段階だけを含む場合がある。パイプライン段階が長くなればなるほど（副段階の数が大きくなればなるほど）、同時に実行できる命令の数が大きくなり、したがって、パイプラインが動作することができる動作周波数が大きくなり、より高レベルの性能をもたらす。
ｄ）実行パイプラインの異なる数（例えば、高性能パイプライン８５０は、低性能パイプライン８００よりも多い実行パイプラインを有する）。より多くの実行パイプラインを提供することによって、より多くの命令を並列に処理することができ、したがって性能が高まる。
ｅ）順次実行（パイプライン８００のように）または非順次実行（パイプライン８５０のように）を提供する。命令が非順次に実行できる場合、性能を最適化するために命令の実行を動的にスケジュールすることができるので、性能が向上する。例えば、低性能の順次パイプライン８００では、一連のＭＡＣ命令は、その後の命令が整数パイプライン８４０およびＳＩＭＤ／浮動小数点パイプライン８４４のうちの１つによって実行される可能性がある前に、ＭＡＣパイプライン８４２によって１つずつ実行されることが必要である。対照的に、高性能パイプライン８５０では、ＭＡＣ命令はＭＡＣパイプ８９４によって実行することができ、一方（名前変更によって解決することができない任意のハザードに左右されるが）異なる実行パイプライン８９０、８９２、８９６、８９８を使用するその後の命令は、ＭＡＣ命令と並列に実行することができる。すなわち、非順次命令は処理性能を向上させることができる。
【０１０２】
これらの、およびその他の例のマイクロアーキテクチャ上の違いによって、パイプライン８５０が、パイプライン８００よりも高い性能処理を提供することになる。一方、マイクロアーキテクチャ上の違いは、パイプライン８５０がパイプライン８００よりも多くのエネルギーを消費することにもなる。このように、マイクロアーキテクチャ上異なるパイプライン８００、８５０を提供することによって、作業負荷の処理を高性能（高性能パイプライン８５０を有する「大型」処理回路１０を使用することによって）またはエネルギー効率（低性能パイプライン８００を有する「小型」処理回路５０を使用することによって）いずれかのために最適化することが可能になる。
【０１０３】
図９は、作業負荷１００の実施が、大型処理回路１０と小型処理回路５０との間で切り替えられる際の、データ処理システムの電力消費の変動を例示するグラフを示す。
【０１０４】
図９の点Ａでは、作業負荷１００は、小型処理回路５０上で実施されているので、電力消費が低い。点Ｂで、高負荷処理が実施されることを示す移転刺激が発生し、このために、作業負荷の実施は、大型処理回路１０にハンドオーバーされる。すると、大型処理回路１０が作業負荷を実施する間、電力消費が上昇し、点Ｃの高さにとどまる。点Ｄでは、両方の大型コアが、組み合わされて動作して、作業負荷を処理すると想定される。しかしながら、性能要件が、作業負荷が大型コアのうちの１つだけによって取り扱うことができるレベルに低下すると、作業負荷は、大型コアのうちの一方だけに移行し、もう一方はレベルの隣接点Ｅまでの電力の低下によって示されるように、電力が切断される。しかしながら、点Ｅで、別の移転刺激が発生して（低負荷処理へ戻ることが望まれることを示す）、小型処理回路５０への作業負荷の実施の移転をトリガする。
【０１０５】
小型処理回路５０が処理作業負荷の処理を開始すると、大型処理回路の大部分は電力節約状態にあるが、大型処理回路１０のキャッシュは、スヌープ期間中（図９の点Ｆ）駆動状態のままで、キャッシュの中のデータが小型処理回路５０のために呼び出されることを可能にする。したがって、大型処理回路１０のキャッシュによって、点Ｆの電力消費は、小型処理回路５０だけが駆動していた時の点Ａよりも高くなる。スヌープ期間の最後に、大型処理回路１０のキャッシュの電力が切断され、点Ｇで、電力消費は、小型処理回路５０だけが作動していた低レベルに戻る。
【０１０６】
上述のように、図９で、電力消費は、大型処理回路１０のキャッシュがスヌープ期間中駆動しているため、点Ｆのスヌープ期間中、点Ｇよりも高い。この電力消費の増加は、大型から小型への遷移の後のみに示されるが、小型から大型への遷移の後にスヌープ期間が存在する場合があり、その間に小型処理回路５０のキャッシュの中のデータは、スヌープ制御装置７５によって、大型処理回路１０のためにスヌープすることができる。小型から大型の遷移のスヌープ期間は、小型処理回路５０のキャッシュをスヌープ期間中駆動状態のままにすることによって消費される電力が、処理負荷作業を実施する際に大型処理回路１０によって消費される電力に比較して有意ではないので、したがって、小型処理回路５０のキャッシュが駆動していることによる電力消費の非常にわずかな増加は、図９のグラフには視認することができないため、図９には示されていない。
【０１０７】
上述の実施形態は、エネルギー効率または性能のために最適化されたマイクロアーキテクチャを備える２つ以上のアーキテクチャ上の互換性があるプロセッサインスタンスを含むシステムを説明した。オペレーティングシステムおよびアプリケーションによって必要とされるアーキテクチャ状態は、作業負荷全体がプロセッサインスタンス間で切り替えられることを可能にするために、必要な性能／エネルギーレベルに応じて、プロセッサインスタンス間で切り替えることができる。一実施形態において、プロセッサインスタンスのうちの１つだけが任意の指定の時間に作業負荷を実行し、他の処理インスタンスは電力節約状態にあるか、または電力節約状態に入る／終了する過程にある。
【０１０８】
一実施形態において、プロセッサインスタンスは、移転元プロセッサから移転先プロセッサへアーキテクチャ状態を切り替える際に関わる時間、エネルギー、およびハードウェアの複雑度を削減するために、相互にハードウェアキャッシュコヒーレントであるように配置される場合がある。これによって、切り替え動作を実施するための時間を削減し、実施形態の技法を使用することができる可能性を増やす。
【０１０９】
そのようなシステムは、よりエネルギー効率の高いプロセッサをより低い処理作業負荷のために使用することができ、より高い性能のプロセッサをより高い処理作業負荷のために使用することができるように、バッテリー寿命および／または温度管理、および性能の範囲のいずれかのためにエネルギー効率が重要である多様な状況において使用される場合がある。
【０１１０】
２つ以上の処理インスタンスはアーキテクチャ上で互換性があるため、アプリケーションの観点からは、２つのプロセッサ間の唯一の違いは、利用可能な性能である。一実施形態の技法を通じて、オペレーティングシステムおよびアプリケーションがどのプロセッサ上で実行しているかに関して、オペレーティングシステム、およびオペレーティングシステム上で実行しているアプリケーションに対して透過的であるように、オペレーティングシステムを関与する必要なく、プロセッサ間で必要な全てのアーキテクチャ状態を移動することができる。
【０１１１】
前述の実施形態に記載のようにアーキテクチャ上の互換性があるプロセッサインスタンスを使用する場合、移転される必要があるアーキテクチャ状態の全体量は、データキャッシュ内に容易に収容することができ、最新の処理システムはしばしば、キャッシュコヒーレンスを実装するので、切り替えるアーキテクチャ状態をデータキャッシュ内に記憶することによって、移転先プロセッサは、既存の回路構造を利用するエネルギー効率の高い方式で、この状態を迅速にスヌープすることができる。
【０１１２】
１つの記載の実施形態において、切り替え機構は、データ処理システムが温度制限を超えないことを保証するために使用される。具体的には、温度制限に到達しそうな場合、作業負荷全体をよりエネルギー効率の高いプロセッサインスタンスに切り替えることができ、より低い処理能力ではあるが、継続してプログラム実行を行いながら、システム全体を冷却することを可能にする。
【０１１３】
本明細書では特定の実施形態を説明したが、本発明はそれに限定されないこと、本発明の範囲内でそれに対する多数の変更および追加が行われ得ることが理解されるであろう。例えば、本発明の範囲を逸脱することなく、独立請求項の特徴とともに、以下の従属請求項の特徴の多様な組み合わせを作製することができる。
【図１】
2013521556.tif 000003
【図２】
2013521556.tif 000004
【図３】
2013521556.tif 000005
【図４Ａ】
2013521556.tif 000006
【図４Ｂ】
2013521556.tif 000007
【図５】
2013521556.tif 000008
【図６Ａ】
2013521556.tif 000009
【図６Ｂ】
2013521556.tif 000010
【図６Ｃ】
2013521556.tif 000011
【図６Ｄ】
2013521556.tif 000012
【図６Ｅ】
2013521556.tif 000013
【図６Ｆ】
2013521556.tif 000014
【図６Ｇ】
2013521556.tif 000015
【図６Ｈ】
2013521556.tif 000016
【図６Ｉ】
2013521556.tif 000017
【図７】
2013521556.tif 000018
【図８Ａ】
2013521556.tif 000019
【図８Ｂ】
2013521556.tif 000020
【図９】
2013521556.tif 000021
【国際調査報告】
2013521556.tif 000022
2013521556.tif 000023
2013521556.tif 000024