(57)【要約】論理コアを物理的コアに動的に再マッピングするプロセッサが開示される。一実施形態において、プロセッサは、複数の物理的コアを含み、複数の物理的コアに対する論理コアのマッピングを保存するように構成されている。プロセッサは、割当ユニットを含む。割当ユニットは、プロセッサのブート処理の後、論理コアを複数の物理的コアに再マッピングするように構成されている。いくつかの実施形態において、割当ユニットは、複数の物理的コアのうち１つ以上がアイドル状態に入った旨を示す指標の受信に応じて、論理コアを再マッピングするように構成されている。プロセッサは、第１の物理的コアがアイドル状態を終了したとき、複数の物理的コアのうち第１の物理的コアに対して、複数の物理的コアのうち第２の物理的コアの実行状態をロードするように構成されてもよい。【選択図】図１
2014514660.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサであって、
複数の物理的コアであって、前記プロセッサは、前記複数の物理的コアに対する論理コアのマッピングを保存するように構成されている、複数の物理的コアと、
前記プロセッサのブート処理の後、前記論理コアを前記複数の物理的コアに再マッピングするように構成された割当ユニットと、
を備える、プロセッサ。
【請求項２】
前記割当ユニットは、前記複数の物理的コアのうち１つ以上がアイドル状態に入った旨を示す指標を受信するように構成されており、前記割当ユニットは、前記指標の受信に応じて、前記論理コアを再マッピングするように構成されている、請求項１に記載のプロセッサ。
【請求項３】
前記プロセッサは、前記複数の物理的コアのうち第１の物理的コアが前記アイドル状態に入ったのに応じて、前記第１の物理的コアの実行状態を保存するように構成されており、前記プロセッサは、前記第１の物理的コアが前記アイドル状態を終了したのに応じて、前記複数の物理的コアのうち第２の物理的コアの実行状態を前記第１の物理的コアにロードするように構成されている、請求項２に記載のプロセッサ。
【請求項４】
前記割当ユニットは、前記論理コアの前回の再マッピングが行われてから経過した時間の長さを決定するように構成されており、前記割当ユニットは、前記時間の長さが閾値を超えるのに応じて、前記論理コアを再マッピングするように構成されている、請求項１に記載のプロセッサ。
【請求項５】
前記割当ユニットは、前記複数の物理的コアのうち１つ以上の物理的コアそれぞれのワークロードを決定するように構成されており、前記割当ユニットは、前記１つ以上の決定されたワークロードに基づいて、前記論理コアのうち１つ以上の論理コアを前記複数の物理的コアのうち１つ以上の物理的コアに再マッピングするように構成されている、請求項１に記載のプロセッサ。
【請求項６】
前記割当ユニットは、前記複数の物理的コアのうち１つ以上の物理的コアについての温度情報を受信するように構成されており、前記割当ユニットは、前記受信した温度情報に基づいて、前記論理コアのうち１つ以上の論理コアを前記複数の物理的コアのうち１つ以上の物理的コアに再マッピングするように構成されている、請求項１に記載のプロセッサ。
【請求項７】
前記プロセッサは、前記複数の物理的コアのうち第１の物理的コアの実行状態と、前記複数の物理的コアのうち第２の物理的コアの実行状態とを保存するように構成されており、前記プロセッサは、前記割当ユニットが前記第１の物理的コア及び第２の物理的コアにマッピングされた論理コアを再マッピングするのに応じて、前記第２の物理的コアの保存された実行状態を前記第１の物理的コアにロードし、前記第１の物理的コアの保存された実行状態を前記第２の物理的コアにロードするように構成されている、請求項１に記載のプロセッサ。
【請求項８】
前記プロセッサは、前記複数の物理的コアのうち１つの物理的コアをオーバークロックするように構成されており、前記割当ユニットは、前記物理的コアがオーバークロックされている時間の長さに基づいて、論理コアを前記オーバークロックされた物理的コアに再マッピングするように構成されている、請求項１に記載のプロセッサ。
【請求項９】
前記割当ユニットは、前記論理コアの全てを再マッピングすることなく、前記複数の物理的コアのうちいくつかの物理的コアへの、前記論理コアのうち一部の論理コアの再マッピングを行うように構成されている、請求項１に記載のプロセッサ。
【請求項１０】
プロセッサ上の複数の物理的コアが１組のタスクを行うステップであって、前記複数の物理的コアに対する論理コアのマッピングに基づいて、前記１組のタスクが割り当てられるステップと、
前記プロセッサが、オペレーティングシステムの実行中に、前記論理コアを前記複数の物理的コアに再マッピングするステップであって、前記再マッピングに基づいて、追加の組のタスクが割り当てられるステップと、
を含む方法。
【請求項１１】
論理コアが、前記複数の物理的コアのうち第１の物理的コアから前記複数の物理的コアのうち第２の物理的コアに再マッピングされるのに応じて、前記プロセッサが、現在の実行状態を、前記第１の物理的コアから前記第２の物理的コアに転送するステップをさらに含む、請求項１０に記載の方法。
【請求項１２】
前記転送するステップは、前記実行状態を、前記プロセッサに接続されたメモリに保存し、前記実行状態を、前記第２の物理的コア上に再ロードするステップを含む、請求項１１に記載の方法。
【請求項１３】
前記転送するステップは、前記第２の物理的コアをアイドル状態から終了させて、前記第１の物理的コアの実行状態を再ロードするステップを含む、請求項１２に記載の方法。
【請求項１４】
前記プロセッサは、前記複数の物理的コアのうちいくつかの物理的コアの性能状態に基づいて、前記再マッピングを決定する、請求項１０に記載の方法。
【請求項１５】
前記再マッピングするステップは、論理コアを、より高い性能状態にある第１の物理的コアからより低い性能状態にある第２の物理的コアに再マッピングするステップを含む、請求項１４に記載の方法。
【請求項１６】
前記プロセッサは、前記複数の物理的コアから収集された１つ以上の温度に基づいて、前記再マッピングを決定する、請求項１０に記載の方法。
【請求項１７】
前記プロセッサが、前記複数の物理的コアへの前記論理コアの再マッピングを一定間隔で行うステップ、をさらに含む、請求項１０に記載の方法。
【請求項１８】
コンピュータシステムにおいて実行可能なプログラムによって動作されるデータ構造を含むコンピュータ可読記憶媒体であって、前記プログラムは、前記データ構造上で動作して、前記データ構造によって記述された回路を含むプロセッサを作製するプロセスの一部を行い、前記データ構造によって記述された前記回路は、
複数の物理的コアであって、前記プロセッサが、前記複数の物理的コアに対する論理コアのマッピングを保存するように構成されている、複数の物理的コアと、
前記プロセッサのブート処理の後に、前記論理コアを前記複数の物理的コアに再マッピングするように構成された割当ユニットと、
を含む、コンピュータ可読記憶媒体。
【請求項１９】
前記プロセッサは、実行状態を、前記複数の物理的コアのうち第１の物理的コアからメモリに保存し、論理コアが、前記第１の物理的コアから前記複数の物理的コアのうち第２の物理的コアに再マッピングされるのに応じて、前記実行状態を、前記第２の物理的コアにロードするように構成されている、請求項１８に記載のコンピュータ可読記憶媒体。
【請求項２０】
前記コンピュータ可読記憶媒体は、ハードウェア記述言語（ＨＤＬ）データ、Ｖｅｒｉｌｏｇデータ又はグラフィックデータベースシステムＩＩ（ＧＤＳＩＩ）データを保存する、請求項１８に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してプロセッサに関し、より詳細には、複数のプロセッサコアにわたるワークロード（作業負荷）の分配に関する。
【背景技術】
【０００２】
集積回路の長寿命化は、重要な設計目標であることが多い。なぜならば、多くの場合には、消費者が望んでいる回路は、高ストレス下において信頼性良く長期間動作することが可能な回路であるからである。そのため、開発者らは、集積回路の寿命に影響を与える多様な要素を考慮に入れようとしている。
【０００３】
プロセッサの予測寿命に影響を与える１つの重要な要素として、プロセッサが経時的に経験するワークロードがある。高ワークロード下において長時間動作するプロセッサ（例えば、サーバシステムにおいて用いられるプロセッサ）の場合には、より大量のシリコンストレスを受ける場合がある。このようなシリコンストレスは、エレクトロマイグレーション、誘電破壊又は熱的誘導摩耗の原因となる。これらの要素に起因して、プロセッサの寿命が大幅に短くなる場合がある。そのため、場合によっては、平均寿命の向上のために、プロセッサのワークロードの低減が望まれる場合がある。
【発明の概要】
【０００４】
本開示は、論理コアを、物理的コアに動的に再マッピングするための構造及び方法の多様な実施形態について記述する。
【０００５】
一実施形態において、プロセッサが開示される。プロセッサは、複数の物理的コアを含み、論理コアのマッピングを当該複数の物理的コアに格納するように構成されている。プロセッサは、割当ユニットをさらに含む。割当ユニットは、プロセッサのブート処理後に、論理コアを、複数の物理的コアに再マッピングするように構成されている。
【０００６】
一実施形態において、方法が開示される。この方法は、１組のタスクを行うプロセッサ上の複数の物理的コアを含む。１組のタスクは、複数の物理的コアへの論理コアのマッピングに基づいて、割り当てられている。方法は、オペレーティングシステムが実行しているときに、論理コアを複数の物理的コアに再マッピングするプロセッサをさらに含む。再マッピングに基づいて、さらなる１組のタスクが割り当てられる。
【０００７】
一実施形態において、コンピュータ可読記憶媒体が開示される。この記憶媒体は、データ構造を含む。データ構造は、コンピュータシステム上で実行可能なプログラムによって動作される。データ構造上で動作するプログラムは、データ構造によって記述された回路を含むプロセッサを作製するためのプロセスの一部を行うように、実行することが可能である。データ構造によって記述された回路は、複数の物理的コアを含む。プロセッサは、複数の物理的コアへの論理コアのマッピングを保存するように構成されている。また、回路は、プロセッサのブート処理の後、論理コアを複数の物理的コアに再マッピングするように構成された割当ユニットを含む。
【図面の簡単な説明】
【０００８】
【図１】論理コアを物理的コアに動的に再マッピングするように構成されたマルチコアプロセッサを含むコンピュータシステムの一実施形態を示すブロック図である。
【図２】マルチコアプロセッサ内に設けられ得る割当ユニットの一実施形態を示すブロック図である。
【図３】割当ユニット内に含まれ得る決定ユニットの一実施形態を示すブロック図である。
【図４】論理コアを物理的コアに動的に再マッピングするための方法の一実施形態を示すフロー図である。
【図５】例示的なコンピュータシステムの一実施形態を示すブロック図である。
【発明を実施するための形態】
【０００９】
本明細書は、「一実施形態」又は「ある実施形態」との表現を含む。「一実施形態では」又は「ある実施形態では」というフレーズは、必ずしも同一の実施形態を指していない。特定の特徴、構造又は特性を、本開示による任意の様態で組み合わせてもよい。
【００１０】
専門用語。以下の段落では、本開示（添付の特許請求の範囲を含む）において用いられる用語の定義及び／又は文脈を提供する。
【００１１】
「備える、含む（Ｃｏｍｐｒｉｓｉｎｇ）」。この用語は、オープンエンドである。この用語が添付の特許請求の範囲において用いられる場合、この用語は、さらなる構造又はステップを排除しない。「１つ以上のプロセッサユニットを備える装置…」という請求項について検討すると、このような請求項は、装置がさらなる構成要素（例えば、ネットワークインターフェースユニット、グラフィックス回路など）を含む場合を排除しない。
【００１２】
「〜ように構成されている」。多様なユニット、回路又は他の構成要素が、タスク（単数又は複数）を行うように「構成されている」と記述されてもよいし、特許請求されてもよい。このような文脈において、「〜ように構成されている」とは、ユニット／回路／構成要素が、これらのタスク（単数又は複数）を動作中に行う構造（例えば、回路）を含む、ということを示すことによって、構造を暗示するために用いられる。よって、ユニット／回路／構成要素は、その具体的なユニット／回路／構成要素が現在動作していない（例えば、オンではない）場合であっても、タスクを行うように構成されているものと見なされ得る。このような「構成される」という文言と共に用いられるユニット／回路／構成要素としては、ハードウェア（例えば、回路や、動作を実行するために実行可能なプログラム命令を記憶するメモリ等）が挙げられる。ユニット／回路／構成要素が１つ以上のタスクを行うように「構成されている」という場合、そのユニット／回路／構成要素について３５Ｕ．Ｓ．Ｃ．§１１２（第６段落）を行使しないことを明示的に意図する。さらに、「構成されている」としては、問題に際してタスク（単数又は複数）を行うことが可能な態様で動作するためのソフトウェア及び／又はファームウェア（例えば、ＦＰＧＡ若しくはソフトウェアを実行する汎用プロセッサ）によって操作される一般的構造（例えば、一般的回路）が挙げられる。また、「構成されている」は、１つ以上のタスクを実行又は実施するように適合されたデバイス（例えば、集積回路）を作製するための製造プロセス（例えば、半導体製造施設）を適合させることも含んでもよい。
【００１３】
「第１の」、「第２の」など。本明細書中用いられる場合、これらの用語は、これらが先行する名詞の標識として用いられ、いかなる種類の順序を示唆しない（例えば、空間的順序、時間的順序、論理的順序）。例えば、８個の処理要素又はコアを有するプロセッサにおいて、「第１の」処理要素及び「第２の」処理要素という用語は、これら８個の処理要素のうち任意の２個の処理要素を指してもよい。換言すれば、「第１の」処理要素及び「第２の」処理要素は、論理処理要素０及び１に限定されない。
【００１４】
「基づく」。本明細書において用いられる場合、この用語は、決定に影響を与える１つ以上の要素を説明するために使用される。この用語は、決定に影響を与えるさらなる要素を排除しない。すなわち、これらの要素のみに基づいて決定を行ってもよいし、あるいは、少なくとも部分的にこれらの要素に基づいて決定を行ってもよい。「Ｂに基づいてＡを決定する」という句について検討する。Ｂは、Ａの決定に影響を与える要素であってもよく、一方でこのような句は、Ｃに基づくＡの決定を排除しない。他の場合において、Ｂのみに基づいてＡが決定される場合がある。
【００１５】
「プロセッサ」。この用語は、当該分野において通常及び受け入れられている意味を有し、命令を実行可能なデバイスを含む。プロセッサは、中央処理装置（ＣＰＵ）、コプロセッサ、演算処理装置、グラフィックス処理装置、デジタル信号プロセッサ（ＤＳＰ）などを非限定的に指す。プロセッサは、単一のパイプライン又は複数のパイプラインを備えたスーパースカラプロセッサであってもよい。プロセッサは、命令を実行するようにそれぞれ構成された単一のコア又は複数のコアを含んでもよい。
【００１６】
「物理的コア」。この用語は、当該分野において通常及び受け入れられている意味を有し、プロセッサを含む物理的（すなわち、有形の）回路を含む。この回路は、命令を実行するように構成されている。プロセッサは、複数の物理的コアを含んでもよい。
【００１７】
「論理コア」。この用語は、当該分野において通常及び受け入れられている意味を有し、識別子を含む。この識別子は、マルチコアプロセッサ内の物理的コアと関連付けられており、当該コアにタスクを割り当てるために用いられる。例えば、一実施形態において、タスクは、当該タスクをＰ０上において行うことを直接指示する代わりに、物理的コアＰ０にマッピングされた論理コアＬ０によって当該タスクを行うことを特定する場合がある。論理コアＬ０がその後別の物理的コアＰ１に再マッピングされた場合、タスクをコアＰ１上で行ってもよい。よって、「論理コア」とは、異なる時期において同一の物理的コアに対応してもよく、又は対応しなくてもよいコアの識別子である。
【００１８】
「ブート処理」。この用語は、当該分野において通常及び受け入れられている意味を有し、コンピュータシステムを初期化し、コンピュータシステムのためのオペレーティングシステムをロードするプロセスを含む。また、ブート処理は、Ｉ／Ｏデバイスの初期化、メモリ試験等を含んでもよい。
【００１９】
多くの現代のオペレーティングシステムは、各コアのワークロードに基づいて、マルチコアプロセッサ内の異なるプロセッサコアへタスクを分配する能力に対応している。例えば、プロセッサに２つのプロセッサコアが含まれており、１つのコアが重いワークロード下において動作しており、同時にもう一方のコアはそうではない場合、オペレーティングシステム（又は他の何らかの機構）により、プロセッサコア間でタスクを再分配することができる。コア間でタスクの再分配を行うことにより、タスク性能の向上が可能となるだけでなく、過重稼働に起因するコアの早期故障の可能性が低減するため、プロセッサの予測される寿命も向上する。
【００２０】
ワークロードを均等に分配することは困難な場合がある。なぜならば、オペレーティングシステムは、特定のタスクを特定のコアのみで行うことしか許可しない場合があるからである。例えば、特定のオペレーティングシステムにおいてリアルタイムプログラムケイデンスを設定するためにサーバに割り込むタイマーチックは、論理ブートストラッププロセッサコアのために用いられるものであるため、他のコアに分配することはできない。他の例としては、（例えば、親和性（すなわち、キャッシュ内に既に存在する同一キャッシュメモリアクセスデータセットをプロセスが発見する可能性）を向上させるために）特定のコアが所与のアプリケーションプロセスを一貫して取り扱うことを要求するプロセッサ間割り込み、及びデバイスプログラミングを通じて特定のコアに方向付けられるＩＯデバイス割り込みが挙げられる。特定のコアが、このようにしていくつかのタスクを実行するように指定された場合、その他のコアよりも当該コアのワークロードが高くなる場合があり、そのため当該コアの予想寿命が短くなる場合がある。
【００２１】
単一のＣＰＵコアが活性化されるシステムの電圧及び周波数を熱限界内で達成可能な最大限の電圧及び周波数まで上げるための電力管理策において、さらなる進展が発生している。このような進展により、性能は向上したものの、シリコン劣化速度のさらなる上昇も招いている。
【００２２】
シリコンの経時的劣化による影響を軽減する方法は数種類ある。典型的には、ワークロードと、チップ仕様の一部である環境動作条件との組を用いて、シリコン劣化をモデル化する。これらの前提を用いて、シリコンの経時的劣化による影響（詳細には、トランジスタ閾値電圧、飽和電流及び遷移速度に対する影響）を推定する。これを用いて、長期損傷を充分に回避できるように動作周波数を保護帯域設定することにより、当該部分に割り当てられる性能を制限することが可能になる。このような対策は、シリコン劣化のいくつかの局面に対応することは可能であるものの、熱的に誘導される機械摩耗には対応せず、寿命保証に関連して、起動時におけるシステムのピーク性能が制限される。
【００２３】
いくつかのシステムは、シリコンストレスを低減するために、アイドル期間における動作電圧及び周波数の低減を積極的に管理することを試みている。これは、典型的システムにおいて高活性期間及び低活性期間における予測される問題の軽減を支援するものの、部分的な解決法でしかないが、前の段落で記載した動作周波数保護帯域の低減のために用いることが可能である。
【００２４】
いくつかのシステムは、論理コアを物理的コアにマッピングし、ＢＩＯＳパワーオン自己試験フェーズの間にマッピングを変更することにより、この問題の軽減を試みている。例えば、２つの物理的コアＰ０及びＰ１を有するプロセッサは、第１の起動の間にこれらのコアをそれぞれ論理コアＬ０及びＬ１にマッピングしてもよい。その後、論理コアＬ０を指定するタスクを物理的コアＰ０上で実行することができ、その後論理コアＬ１を指定するタスクを物理的コアＰ１上で実行することができる。リセット後、プロセッサは、論理コアＬ０及びＬ１を物理的コアＰ１及びＰ０へそれぞれ再マッピングしてもよい。論理コアＬ０が一般にＬ１よりも重いワークロードを有する場合、各リセットの間に論理コアを再マッピングすると、物理的コアＰ０及びＰ１の寿命を通じて、物理的コアＰ０及びＰ１におけるワークロード分配を向上させることが可能になる。このような再マッピングをリセットの間に行うことは、比較的簡単なことである。なぜならば、オペレーティングシステムは未だロードされていない状態であり、ソフトウェアは、特定のコアが割り込みを取り扱うことを予測していないからである。論理コアをこのように再マッピングした場合の問題は、サーバ（および一定範囲においてデスクトップ）に対するリセットイベントは一般的に稀であることを、本開示は認める。
【００２５】
本開示は、論理コアを物理的コアに動的に再マッピングするための多様な技術について記述する。以下に説明するように、マルチコアプロセッサは、論理コアのマッピングを複数の物理的コアに記憶することができる。このマッピングは、物理的コアのうち様々なコアにタスクを割り当てるために、オペレーティングシステム、Ｉ／Ｏデバイスなどによって用いられてもよい。一実施形態において、マルチコアプロセッサは、（すなわち、プロセッサのブート処理後に）論理コアをライブシステム上の物理的コアに再マッピングするように構成された割当ユニットを含む。例えば、先ず、第１の論理コアは、第１の物理的コアにマッピングされ得る。その後、第１の論理コアにアドレス指定されたタスクは、実行のために第１の物理的コアに割り当てられ得る。その後、割当ユニットは、第１の論理コアを、物理的コアのうち第２の物理的コアに再マッピングすることができる。その結果、第１の論理コアにアドレス指定されたタスクを、その後実行のために第１の物理的コアではなく第２の物理的コアに割り当ててもよい。第１の論理コアが他の論理コアよりも高いワークロードを有することが多い場合、多くの場合において、当該ワークロードを（プロセッサを再起動する必要無く）物理的コアにわたってより均等に分配することができる。
【００２６】
よって、本明細書に記載のプロセッサは、多くの場合において、動的再マッピングを行うように構成されていない他のプロセッサの場合よりも、物理的コア割当をより頻繁に局所的に切り換えることが可能である。多様な実施形態において、このように再マッピングをより高頻度に行うことにより、機能アーキテクチャ仕様を満足しつつ、コアへのワークロード分配を（ＯＳ、Ｉ／Ｏ及びシステム−デバイスプログラミングに関係無く）より均等に行うことが可能になる。その結果、単一の演算エンティティ上におけるプロセッサへのシリコンストレスを低減することができ、プロセッサの長寿命化が可能となる。また、シリコン長寿命化により、さらに信頼性及び性能も向上する。なぜならば、シリコン劣化に関する動作周波数保護帯域を低減することが可能であるからである。さらに、危険性が低減するため、製造時における部品毎のシリコンストレス試験（通常、「バーンイン」試験と呼ばれる）をより限定することができ、その結果製造コスト低減に繋がる。
【００２７】
ここで図１を参照して、コンピュータシステム１００の一実施形態のブロック図を示す。この例示的実施形態において、コンピュータシステム１００は、プロセッサ１１０と、メモリ１２０と、基本入出力システム（ＢＩＯＳ）１３０とを含む。プロセッサ１１０は、プロセッサコア１１２Ａ〜１１２Ｃ（いくつかの実施形態において、プロセッサ１１０は、図示よりも多数又は少数のコア１１２を含み得る）と、割当ユニット１１４とを含む。プロセッサ１１０は、相互接続部１１５を介してメモリ１２０に接続されており、相互接続部１２５を介してＢＩＯＳ１３０に接続されている。上記の例示的実施形態において、メモリ１２０は、オペレーティングシステム１２２と、１つ以上の保存された実行状態１２４とを保存するように構成されている。
【００２８】
プロセッサ１１０は、任意の適切な種類のマルチコアプロセッサであってよい。プロセッサ１１０は、汎用プロセッサ（例えば、中央処理装置（ＣＰＵ））であってよい。プロセッサ１１０は、特殊目的用プロセッサ（例えば、加速処理装置（ＡＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、グラフィックス処理装置（ＧＰＵ）等）であり得る。プロセッサ１１０は、加速論理（例えば、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等）であってよい。プロセッサ１１０は、マルチスレッドスーパースカラプロセッサであってよい。
【００２９】
メモリ１２０は、任意の適切な種類のメモリであってよい。メモリ１２０は、異なる物理的記憶媒体（例えば、ハードディスク記憶装置、フロッピー（登録商標）ディスク記憶装置、リムーバブルディスク記憶装置、フラッシュメモリ、ランダムアクセスメモリ（ＲＡＭ、例えば、静的ＲＡＭ（ＳＲＡＭ）、拡張データ出力（ＥＤＯ）ＲＡＭ、同期型動的ＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＳＤＲＡＭ、ＲＡＭＢＵＳ  ＲＡＭ等）、リードオンリーメモリ（ＲＯＭ、例えば、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）等）を用いて実行することができる。
【００３０】
ＢＩＯＳ１３０は、プロセッサ１１０のブート処理を行うように構成された基本入出力システムの一実施形態である。多様な実施形態において、このブート処理は、コンピュータシステム１００のＩ／Ｏデバイス（例えば、ビデオカード、マウス、キーボード）を特定及び初期化することを含んでよい。このブート処理は、メモリ１２０のデバイスの整合性（ｉｎｔｅｇｒｉｔｙ）を試験することを含んでよい。一実施形態において、ＢＩＯＳ１３０は、ブート処理の終了時において、オペレーティングシステム１２２を永久記憶装置からメモリ１２０のＲＡＭにロードすることと、オペレーティングシステム１２２の実行をプロセッサ１１０に開始させることとを行ってもよい。以下に説明するように、多様な実施形態において、ＢＩＯＳ１３０がプロセッサ１１０のブート処理実行を完了した後、割当ユニット１１４は、論理コアをコア１１２に再マッピングするように構成される。
【００３１】
プロセッサコア１１２は、物理的コアの一実施形態である。これらの物理的コアは、１つ以上のタスクを行うための命令を実行するように構成されている。多様な実施形態において、これらのタスクは、（例えば、時間チッカー割り込みを処理するために）オペレーティングシステム１２２によって割り当てられてよい。これらのタスクは、（例えば、プロセッサ間割り込み（ＩＰＩ）を処理するために）他のコア１１２によって割り当てられてよい。これらのタスクは、（例えば、受信入力をサービスするために）Ｉ／Ｏデバイスによって割り当てられてよい。上述したように、多様な実施形態において、論理コアの物理的コア１１２へのマッピングに基づいて、いくつかのタスクを割り当ててもよい。例えば、オペレーティングシステム１２２は、特定のタスクを、一実施形態においてブートストラッププロセッサに対応し得る第１の論理コアＬ０に割り当ててよい。論理コアＬ０が現在プロセッサ１１２Ａにマッピングされている場合、プロセッサ１１２Ａは上記特定のタスクを行うことができる。しかし、論理コアＬ０がプロセッサ１１２Ｂにマッピングされた場合、プロセッサ１１２Ｂが上記特定のタスクを行うことができる。
【００３２】
いくつかの実施形態において、コア１１２は、異なる動作状態において動作するように構成されてよい。これらの動作状態は、プロセッサ１１０によって事前定義されており、異なる電力状態と、異なる性能状態とを含んでよい。いくつかの実施形態において、これらの電力状態及び／又は性能状態は、「Ｃ」状態及び「Ｐ」状態にそれぞれ対応する。これらの「Ｃ」状態及び「Ｐ」状態は、電力制御インターフェース（ＡＣＰＩ）標準によって規定されている。性能状態とは、コア１１２が特定の電圧／周波数において命令を実行している状態である。例えば、一実施形態において、重要な処理要求が存在する場合、コア１１２は、最高性能状態において動作することができる。この最高性能状態は、性能状態Ｐ０と呼ばれ得る。このような実施形態において、Ｐ０は、コア１１２の最大動作周波数及び最高電力設定に対応する。より少数の要求が存在する場合、コア１１２は、より低い性能状態（例えば、性能状態Ｐ１、Ｐ２）において動作することができる。この場合、コア１１２は、より低い動作周波数およびより低い電力設定において動作する。電力状態は、例えば、コア１１２がフル動作可能であるか、又は全体的若しくは部分的にパワーダウンしているかを示し得る。例えば、一実施形態において、コア１１２に対して一定の処理要求が存在する場合、コア１１２は、命令実行を可能にする電力状態において動作し得る。このような状態は、電力状態Ｃ０と呼ばれ得る。コア１１２に対する要求が存在しない、又はほとんど要求が存在しない場合、一実施形態において、コア１１２は、より低い電力状態（例えば、停止状態又はクロック停止状態）において動作し得る。このような状態は、電力状態Ｃ１又はＣ２とそれぞれ呼ばれ得る。そのため、電力状態は、コア１１２がフル動作可能である（すなわち、命令を実行できる）状態を指す場合もあるし、あるいは、コア１１２が命令を実行していない複数の異なるアイドル状態のうち１つ以上を指す場合もある。
【００３３】
一実施形態において、各コア１１２は、アイドル状態に入ったとき、（上述したコアの動作状態ではなく）自身の実行状態１２４をメモリ１２０に保存するように構成されている。多様な実施形態において、コア１１２の保存された実行状態１２４は、レジスタ、プログラムカウンタ、スタックポインター等の内容を含んでよい。また、保存された実行状態１２４は、命令キャッシュ（Ｉキャッシュ）の内容、データキャッシュ（Ｄキャッシュ）の内容、トランスレーションルックアサイドバッファ（ＴＬＢ）情報等を含んでよい。一実施形態において、コア１１２がアイドル状態を終了するときに、コア１１２は、自身の実行状態１２４をリロードし、リロードされた状態１２４を用いて命令実行を再開するように構成されている。以下に説明するように、いくつかの実施形態において、コア１１２は、論理コアが物理的コアに再マッピングされるのに応じて、別のコア１１２の保存された状態１２４をロードするように構成されてもよい。
【００３４】
一実施形態において、割当ユニット１１４は、論理コアの物理的コア１１２へのマッピング（すなわち、論理コアマッピング）を生成し、論理コアの物理的コア１１２への動的再マッピングを行うように構成されている。本明細書で用いられる場合、動的再マッピングとは、ＢＩＯＳ１３０がプロセッサ１１０のためのブート処理を行った後に行われる再マッピングを指す。換言すれば、一実施形態において、割当ユニット１１４は、オペレーティングシステム１２２がロードされて実行状態となった後、論理コアを物理的コア１１２へ再マッピングするように構成されている。例示的な実施形態において、割当ユニット１１４は、プロセッサ１１０内に配置されるが、特定のコア１１２内には配置されない。いくつかの実施形態では、割当ユニット１１４は、コア１１２内に配置されてもよいし、あるいは、複数のコア１１２間に分配されてもよい（すなわち、コア１１２は、割当ユニット１１４の動作を実行することができる）。いくつかの実施形態では、割当ユニット１１４は、プロセッサ１１０のノースブリッジ論理内に配置されてもよい。いくつかの実施形態では、割当ユニット１１４は、プロセッサ１１０の外部に配置されてもよい（例えば、ＢＩＯＳ１３０内）。いくつかの実施形態では、割当ユニット１１４によって行われると記述された動作は、コンピュータシステム１００内の複数のブロック間に分割されてもよい。
【００３５】
一実施形態において、プロセッサ１１０は、割当ユニット１１４が異なる論理コアを別のコア１１２に再マッピングしたとき、コア１１２の実行状態を当該別のコア１１２に転送するように構成されている。例えば、コア１１２Ａが論理コアＬ０に割り当てられた場合、プロセッサ１１０は、Ｌ０がコア１１２Ｂに再マッピングされた後、コア１１２Ａの状態をコア１１２Ｂに転送することができる。一実施形態において、プロセッサ１１０は、コア１１２間の相互接続部を介してコア１１２間の実行状態を転送するように、構成されている。一実施形態において、プロセッサ１１０は、当該状態を（状態１２４として）メモリ１２０に保存した後に、当該状態を別のコア１１２上に再ロードすることによって、実行状態を転送するように構成されてもよい。いくつかの実施形態において、プロセッサ１１０は、コア１１２がアイドル電力状態（例えば、上記したようなもの）に入った場合及びアイドル電力状態を終了した場合、実行状態を保存及び再ロードするように構成されている。以下に説明するように、一実施形態において、プロセッサ１１０は、割当ユニット１１４が再マッピングを行うのに応じて、１つ以上のコア１１２に対して、アイドル状態に入らせることとアイドル状態を終了させることとを行うように、構成されてもよい。あるいは、割当ユニット１１４は、１つ以上のコア１１２がアイドル状態に遷移した場合、又はアイドル状態から遷移した場合に、再マッピングを行うように構成されてもよい。多様な実施形態において、プロセッサ１１０は、オペレーティングシステム又はソフトウェアについての知識を用いること無く、実行状態を転送するように構成されてもよい。
【００３６】
次に、割当ユニット１１４について、図２に関連して説明する。
【００３７】
図２を参照すると、割当ユニット１１４の一実施形態が図示されている。この例示的実施形態において、割当ユニット１１４は、マッピングレジスタ２１０と、決定ユニット２２０と、カウンタレジスタ２３０とを含む。ユニット２１０〜２３０が単一のユニット１１４内にある様子を図示しているが、いくつかの実施形態において、コンピュータシステム１００内のユニット間でユニット２１０〜２３０を分散させてもよい点に留意されたい。
【００３８】
一実施形態において、マッピングレジスタ２１０は、論理コアの物理的コアへのマッピングを表す識別子を（論理コアマッピング２１２として図示されている）保存するように構成されている。いくつかの実施形態において、レジスタ２１０は、コア１１２ごとのレジスタを含んでもよく、各レジスタ２１０は、コア１１２にマッピングされた論理コアを保存するように構成されてもよい。そのため、レジスタ２１０は、コア１１２Ａに割り当てられた論理コアを保存する第１のレジスタと、コア１１２Ｂに割り当てられた論理コアを保存する第２のレジスタと、等を含んでもよい。多様な実施形態において、オペレーティングシステム１２２、コア１１２、Ｉ／Ｏデバイス等は、論理マッピング２１２をレジスタ２１０から読み出して、タスクをどこに割り当てるべきか（すなわち、コア１１２のうちどのコア１１２に当該タスクを行わせるべきか）を決定するように構成されてもよい。
【００３９】
一実施形態において、決定ユニット２２０は、論理コアの物理的コアへの再マッピングをいつ行うべきかを特定することと、論理コア再マッピングを決定することとを行うように構成されている。決定ユニット２２０は、再マッピングをいつ行うかの決定を、多様な適切な条件のうち任意の条件に基づいて決定してもよい。一実施形態において、決定ユニット２２０は、１つ以上のコア１１２がアイドル状態に入った旨を示す通知を受信したのに応じて、再マッピングを行うように構成されている。上述したように、プロセッサ１１０は、再マッピング中に、１つのコア１１２の実行状態１２４を別のコア１１２に転送することができる。いくつかの実施形態において、プロセッサ１１０は、（アイドル状態終了時において、コア１１２に、別のコア１１２の実行状態１２４をロードさせることにより）上記転送を行うように構成されている。コア１１２がアイドル状態に入った後に再マッピングを行うことにより、一実施形態において、プロセッサ１１０は、１つのコア１１２の状態を（当該コア１１２をアイドル状態にさせる必要無く）別のコアに転送することができる。なぜならば、コア１１２は既にそこに存在するからである。一実施形態において、決定ユニット２２０は、一定間隔で（例えば、前回の再マッピングから特定の長さの時間が経過したことを決定した後に）再マッピングを行うように構成されている。このような実施形態において、割当ユニット１１４は、１つ以上のコア１１２にアイドル状態に入らせ又ははアイドル状態を終了させることで、再マッピング時における実行状態１２４の転送を促進するように構成されてもよい。他の実施形態において、割当ユニット１１４は、上述したような実行状態の転送を促進するための他の技術を用いるように構成されてもよい。一実施形態において、決定ユニット２２０は、コア１１２に対して決定されたワークロードに基づいて、再マッピングを行うように構成されている。例えば、決定ユニット２２０は、特定のコア１１２のワークロードが閾値を超えたこと（例えば、コア１１２Ａが特定の長さの時間にわたって特定の性能状態で動作していること）を決定した後、再マッピングを行うように構成されてもよい。例示的実施形態において、決定ユニット２２０は、オペレーティングシステム１２２から受信したコア情報２２２及び／又はコア１１２から受信したコア情報２２４に基づいて、再マッピングを行うか否かを決定するように構成されている。図３に関連して以下に説明するように、このような情報は、動作状態情報を含んでもよい。この動作状態情報は、例えば、コア１１２の電力及び／又は性能状態、コア１１２の温度を指定する温度情報等を示す。
【００４０】
また、決定ユニット２２０は、多様な適切な基準のうち任意の基準に基づいて、論理コア再マッピングを決定してもよい。一実施形態において、決定ユニット２２０は、事前決定された物理的コア１１２の順序に基づいて、論理コアを再マッピングするように構成されている。例えば、決定ユニット２２０は、先ず、論理コアを初期の物理的コア１１２（例えば、コア１１２Ａ）にマッピングした後、論理コアを上記順序における次の物理的コア１１２（例えば、コア１１２Ｂ）に再マッピングしてもよい。別の実施形態において、決定ユニット２２０は、ランダム生成されたシーケンスに基づいて、論理コアを物理的コア１１２に割り当てるように構成されてもよい。いくつかの実施形態において、決定ユニット２２０は、受信した情報２２２及び／又は２２４に基づいて、再マッピングを決定するように構成されてもよい。以下に説明するように、一実施形態において、決定ユニット２２０は、１つ以上のコア１１２の動作状態に基づいて、再マッピングを決定するように構成されてもよい。一実施形態において、決定ユニット２２０は、１つ以上のコア１１２から測定された温度に基づいて、再マッピングを決定するように構成されてもよい。いくつかの実施形態において、決定ユニット２２０は、コア１１２の動作状態情報及び温度情報の組み合わせに基づいて、局所的コア再マッピングを決定するように構成されている。多様な実施形態において、決定ユニット２２０は、論理コアのうち一部又は全てを物理的コアに再マッピングするか否かを決定するように構成されてもよい。例えば、決定ユニット２２０は、（例えば、コア１１２の温度情報に基づいて）論理コアの一部のみを再マッピングすることを初期に決定した後、（例えば、コア１１２の現在のワークロードに基づいて）コア１１２全てを再マッピングすることを決定してもよい。
【００４１】
一実施形態において、カウンタレジスタ２３０は、論理コア再マッピングを行うか否かを決定する際に決定ユニット２２０が用いることが可能な情報を保存するように構成されている。一実施形態において、カウンタレジスタ２３０は、最終マッピング又は再マッピングから経過した時間を示す値に合わせて構成される。一実施形態において、カウンタレジスタ２３０は、コア１１２が特定の電力及び／又は性能状態においてどれくらいの期間にわたって動作しているかを示す値を、コア１１２ごとに保存するように構成されている。例えば、レジスタ２３０は、コア１１２Ａがオーバークロック性能状態において最後のＮ秒間動作していることを示す値を保存してもよい。一実施形態において、カウンタレジスタ２３０は、コア１１２が特定の閾温度を超える温度において動作している期間の長さを示す値を、コア１１２ごとに保存するように構成されている。
【００４２】
図３を参照すると、決定ユニット２２０のブロック図が図示されている。上述したように、多様な実施形態において、決定ユニット２２０は、再マッピングを行う時期を特定することと、再マッピングを決定することとを行うように構成されている。上記例示的実施形態において、決定ユニット２２０は、動作状態ユニット３１０と、温度ユニット３２０とを含む。
【００４３】
一実施形態において、動作状態ユニット３１０は、決定ユニット２２０のために電力及び性能情報３１２を処理するように構成されている。多様な実施形態において、情報３１２は、コア１１２ごとの電力状態及び性能状態の指標を含む。また、情報３１２は、コア１１２が１つの状態から別の状態に遷移する時期を特定する指標（例えば、コア１１２Ａが性能状態Ｐ１から性能状態Ｐ０に遷移することを示す指標）を含み得る。一実施形態において、動作状態ユニット３１０は、オペレーティングシステム１２２から情報３１２を受信するように構成されている。別の実施形態において、動作状態ユニット３１０は、情報をコア１１２から直接受信するように構成されてもよい。いくつかの実施形態において、動作状態ユニット３１０は、情報を保存及び検索するように構成されている（この情報は、カウンタレジスタ２３０内の情報３１２と関連付けられたカウンタ情報３３２として図示されている）。
【００４４】
一実施形態において、動作状態ユニット３１０は、決定ユニット２２０が新規論理コアマッピング３３２を生成するか否かを決定することを、処理された情報３１２を用いて支援するように構成されている。いくつかの実施形態において、動作状態ユニット３１０は、１つ以上のコア１１２が新規動作状態に遷移するのに応じて、論理コア再マッピングを行わせるように構成されている。例えば、一実施形態において、動作状態ユニット３１０は、少なくとも１つのコア１１２がアイドル状態に入ったのに応じて、再マッピングを行わせるように構成されている。上記したように、いくつかの実施形態において、コア１１２は、アイドル状態に入ったときに自身の実行状態１２４を保存するように構成されてよく、再マッピング後にアイドル状態が終了したときに別のコア１１２の実行状態１２４を再ロードしてもよい。いくつかの実施形態において、動作状態ユニット３１０は、コア１１２が特定の性能状態又は電力状態にある期間の長さに基づいて、再マッピングを行わせるように構成されている。例えば、動作状態ユニット３１０は、特定のコア１１２が一定期間を超える期間にわたって高性能状態（例えば、Ｐ０）にあることを決定したときに、再マッピングを行わせるように構成されてもよい。同様に、動作状態ユニット３１０は、特定のコア１１２が一定期間を超える期間にわたってオーバークロック状態で動作していることを決定したときに、再マッピングを行わせるように構成されてもよい。いくつかの実施形態において、動作状態ユニット３１０は、コア１１２ごとに、コアの動作状態及び当該状態において経過した時間に基づきワークロードスコアを計算するように構成されてもよい。その後、動作状態ユニット３１０は、個々のスコアが閾値を超えた場合、又はスコアの合計が合計閾値を超えた場合に再マッピングを行わせるように構成されてもよい。いくつかの実施形態において、このようなスコアを、（以下に説明する）温度ユニット３２０によって生成されたスコアと組み合わせることにより、再マッピングを行うべき時期を決定することができる。
【００４５】
一実施形態において、動作状態ユニット３１０は、決定ユニット２２０が論理コアマッピング３３２を決定することを、処理された情報３１２を用いて支援するように構成されている。一実施形態において、動作状態ユニット３１０は、決定ユニット２２０に対して、アイドル状態で動作している物理的コア１１２に論理コアを再マッピングさせ、アイドル状態で動作していない物理的コア１１２については論理コアを再マッピングさせないように構成されている。一実施形態において、動作状態ユニット３１０は、決定ユニット２２０に対して、より高い動作状態にあるコア１１２からより低い動作状態にあるコア１１２に論理コアを再マッピングさせるように構成されている。一実施形態において、動作状態ユニット３１０は、決定ユニット２２０に対して、より長期間にわたってより高い動作状態となっているコア１１２に論理コアを再マッピングした後、より短期間にわたってこれらの状態にあるコア１１２に論理コアを再マッピングさせるように構成されている。
【００４６】
一実施形態において、温度ユニット３２０は、決定ユニット２２０のために温度情報３２２を処理するように構成されている。多様な実施形態において、情報３２２は、プロセッサ１１０を通じて収集された１つ以上の温度を含む。一実施形態において、温度ユニット３２０は、コア１１２上に配置された複数のセンサーから情報３２２を受信するように構成されている。いくつかの実施形態において、温度ユニット３２０は、カウンタレジスタ３２０内の情報３２２と関連付けられた情報３３２を保存及び検索するように構成されてもよい。
【００４７】
一実施形態において、温度ユニット３２０は、決定ユニット２２０が新規論理コアマッピング３３２を生成するか否かを決定することを、処理された情報３２２を用いて支援するように構成されている。いくつかの実施形態において、温度ユニット３２０は、コア１１２が最大温度閾値を超えたことを決定したのに応じて、論理コア再マッピングを決定ユニット２２０に行わせるように構成されてもよい。一実施形態において、温度ユニット３２０は、コア１１２が閾温度を超えた否かを決定し、コア１１２が閾温度を超えている場合、コア１１２が当該閾温度を超えてからの経過時間を決定するように構成されてもよい。コア１１２が一定期間にわたってこの温度を超えた後、温度ユニット３２０は、論理コア再マッピングを行わせるように構成されてもよい。一実施形態において、温度ユニット３２０は、（コア１１２から収集された温度と、これらの温度となってから経過した時間とに基づいて）コア１１２ごとにワークロードスコアを計算するように構成されてもよい。温度ユニット３２０は、これらのスコアが閾値を超えた場合、再マッピングを行わせるように構成されてもよい。いくつかの実施形態において、このようなスコアと、動作状態ユニット３１０によって生成されたスコアとを組み合わせて、再マッピングを行うべき時期を決定してもよい。
【００４８】
一実施形態において、温度ユニット３２０は、決定ユニット２２０が論理コアマッピング３３２を決定することを、処理された情報３２２を用いて支援するように構成されている。一実施形態において、温度ユニット３２０は、決定ユニット２２０に対して、より高い温度で動作しているコア１１２からより低い温度で動作しているコア１１２に論理コアを再マッピングさせるように構成されている。一実施形態において、温度ユニット３２０は、決定ユニット２２０に対して、より長時間にわたってより高い温度で動作しているコア１１２へ論理コアを再マッピングした後、より短時間にわたって同様の温度で動作しているコア１１２へ論理コアを再マッピングさせるように構成されてもよい。
【００４９】
図４を参照すると、論理コアを動的に再マッピングするための方法４００のフロー図が図示されている。方法４００は、マルチコアプロセッサ（例えば、プロセッサ１１０）によって行われ得る方法の一実施形態である。多様な実施形態において、方法４００を複数回行うことで、後続の再マッピングを行うことができる。いくつかの場合において、方法４００を行うことにより、プロセッサコア間のワークロード分配を向上させ、その結果、プロセッサ寿命を向上させることができる。
【００５０】
ステップ４１０において、プロセッサ１１０は、論理コアの物理的コアへのマッピングを保存してもよい。上述したように、多様な実施形態において、このマッピングをオペレーティングシステム、他のコア、Ｉ／Ｏデバイス等が用いて、性能のためにタスクを物理的コア（例えば、コア１１２）に割り当てることが可能である。一実施形態において、プロセッサ１１０は、マッピングを、割当ユニット（例えば、割当ユニット１１４）の１組のレジスタ（例えば、レジスタ２３０）内に保存する。他の実施形態において、プロセッサ１１０は、マッピングを、他の場所（例えば、メモリ（例えば、メモリ１２０）、ＢＩＯＳ（例えば、ＢＩＯＳ１３０）等）に保存する。いくつかの場合において、保存されたマッピングは、例えばコンピュータシステム（例えば、システム１００）のブート処理時に生成された初期マッピングであってよい。他の場合において、保存されたマッピングは、前回行われた再マッピング時に生成されたマッピングであってよい。
【００５１】
ステップ４２０において、プロセッサ１１０は、ブート処理後に、（例えば、割当ユニット１１４を用いて）論理コアを物理的コアに再マッピングする。その後、この再マッピングを多様な実施形態で用いて、後続タスクを、性能のために物理的コアに割り当てることができる。上述したように、プロセッサ１１０は、（例えば、決定ユニット２２０を用いて）いつ再マッピングを行うかを（多様な条件のうちの任意の条件に基づいて）特定してもよい。一実施形態において、プロセッサ１１０は、再マッピングを一定間隔で行ってもよい。いくつかの実施形態において、プロセッサ１１０は、再マッピングを行うことを、物理的コアの１つ以上の動作状態に基づいて決定してもよい。例えば、一実施形態において、プロセッサ１１０は、１つ以上のコアがアイドル状態に入るのに応じて、再マッピングを行うことを決定してもよい。いくつかの実施形態において、プロセッサ１１０は、コアから収集された温度情報に基づいて、再マッピングを行うことを決定してもよい。
【００５２】
上述したように、プロセッサ１１０は、多様な適切な基準のうち任意の基準を用いて再マッピングを決定してもよい。一実施形態において、プロセッサ１１０は、物理的コアについての事前決定された順序に基づいて、論理コアを物理的コアに再マッピングしてもよい。例えば、論理コアＬ０が物理的コアＰ０に割り当てられており、かつ、物理的コアＰ１が順序においてＰ０に続いている場合、次いで論理コアＬ０をコアＰ１に再マッピングしてもよい。いくつかの実施形態において、プロセッサ１１０は、コアの動作状態に基づいて、再マッピングを決定してもよい。例えば、一実施形態において、プロセッサ１１０は、論理コアを、より高い動作状態にある物理的コア（例えば、性能状態Ｐ０にある物理的コア）からより低い動作状態にある物理的コア（例えば、性能状態Ｐ１にある物理的コア）に再マッピングすることができる。いくつかの実施形態において、プロセッサ１１０は、物理的コアから測定された温度に基づいて、再マッピングを決定してもよい。例えば、一実施形態において、プロセッサ１１０は、論理コアを、より高い温度で動作している物理的コアからより低い温度で動作している物理的コアに再マッピングしてもよい。
【００５３】
多様な実施形態において、プロセッサ１１０は、再マッピングに応じて、物理的コア間で実行状態を転送する。上述したように、いくつかの実施形態において、プロセッサ１１０は、第１のコアからの実行状態をメモリに保存した後、この実行状態を第２のコア上に再ロードすることにより、実行状態を第２のコアに転送する。一実施形態において、プロセッサ１１０は、第１のコアをアイドル状態に入らせることによって、保存を行う。アイドル状態において、コアは、自身の実行状態をメモリに保存する。プロセッサ１１０は、第２のコアをアイドル状態から終了させて実行状態を再ロードすることによって、再ロードを行ってもよい。
【００５４】
（例示的なコンピュータシステム）
図５を参照すると、プロセッサ１１０を含み得る例示的なコンピュータシステム５００の一実施形態が図示されている。コンピュータシステム５００は、相互接続部５６０（例えば、システムバス）を介してシステムメモリ５２０及びＩ／Ｏインターフェース５４０に接続されたプロセッササブシステム５８０を含む。Ｉ／Ｏインターフェース５４０は、１つ以上のＩ／Ｏデバイス５５０に接続されている。コンピュータシステム５００は、多様な種類のデバイス（例を非限定的に挙げると、サーバシステム、パーソナルコンピュータシステム、デスクトップコンピュータ、ラップトップ若しくはノートブックコンピュータ、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ又は消費者デバイス（例えば、携帯電話、ページャ若しくはパーソナルデータアシスタント（ＰＤＡ））のうち任意のものであり得る。また、コンピュータシステム５００は、任意の種類のネットワーク型の周辺デバイスであってよい（例えば、記憶装置デバイス、スイッチ、モデム、ルータ等）。便宜上単一のコンピュータシステム５００を図示しているが、共に動作する２つ以上のコンピュータシステムとしてシステム５００を実装してもよい。
【００５５】
プロセッササブシステム５８０は、１つ以上のプロセッサ又は処理装置を含み得る。例えば、プロセッササブシステム５８０は、１つ以上の処理装置を含み得る（これらの処理装置はそれぞれ、複数の処理要素又はコアを含み得る）。これらの処理装置は、１つ以上のリソース制御処理要素５２０に接続されている。コンピュータシステム５００の多様な実施形態において、プロセッササブシステム５８０の複数のインスタンスが、相互接続部５６０に接続されてもよい。多様な実施形態において、プロセッササブシステム５８０（あるいは５８０内の各プロセッサユニット若しくは処理要素）は、キャッシュ又は他の形態のオンボードメモリを含み得る。一実施形態において、プロセッササブシステム５８０は、上述したプロセッサ１１０を含み得る。
【００５６】
システムメモリ５２０は、プロセッササブシステム５８０によって用いられ得る。システムメモリ５２０は、異なる物理的記憶媒体（例えば、ハードディスク記憶装置、フロッピー（登録商標）ディスク記憶装置、リムーバブルディスク記憶装置、フラッシュメモリ、ランダムアクセスメモリ（ＲＡＭ、例えば、静的ＲＡＭ（ＳＲＡＭ）、拡張データ出力（ＥＤＯ）ＲＡＭ、同期型動的ＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ）ＳＤＲＡＭ、ＲＡＭＢＵＳＲＡＭ等）、リードオンリーメモリ（ＲＯＭ、例えばプログラマブルＲＯＭ（ＰＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）等））を用いて実行され得る。コンピュータシステム５００内のメモリは、メモリ５２０等の主要記憶装置に限定されない。むしろ、コンピュータシステム５００は、他の形態の記憶装置も含み得る（例えば、プロセッササブシステム５８０内のキャッシュメモリ及びＩ／Ｏデバイス５５０上の第２の記憶装置（例えば、ハードドライブ、記憶装置アレイ）。いくつかの実施形態において、これらの他の形態の記憶装置も、プロセッササブシステム５８０によって実行可能なプログラム命令を保存し得る。
【００５７】
Ｉ／Ｏインターフェース５４０は、多様な実施形態に従って、他のデバイスへ接続され、かつ、他のデバイスと通信するように構成された多様な種類のインターフェースのうち任意のものであってよい。一実施形態において、Ｉ／Ｏインターフェース５４０は、前側から１つ以上の後方側バスへのブリッジチップ（例えば、サウスブリッジ）である。Ｉ／Ｏインターフェース５４０は、１つ以上の対応するバス又は他のインターフェースを介して、１つ以上のＩ／Ｏデバイス５５０に接続されてもよい。Ｉ／Ｏデバイスの例を挙げると、記憶装置デバイス（ハードドライブ、光学ドライブ、リムーバブルフラッシュドライブ、記憶装置アレイ、ＳＡＮ若しくはこれらに関連付けられたコントローラ）、ネットワークインターフェースデバイス（例えば、ローカルネットワーク若しくは広域ネットワークに対するもの）、又は他のデバイス（例えば、グラフィックス、ユーザインターフェースデバイス等）がある。一実施形態において、コンピュータシステム５００は、ネットワークインターフェースデバイスを介して、ネットワークへ接続されている。
【００５８】
コンピュータシステム（例えば、コンピュータシステム５００）によって実行されるプログラム命令は、多様な形態のコンピュータ可読記憶媒体に保存することができる。一般的に、コンピュータ可読記憶媒体は、任意の非一時的／有形の記憶装置媒体を含み得る。このような記憶装置媒体は、コンピュータによって読み出され、その結果、命令及び／又はデータがコンピュータに提供される。例えば、コンピュータ可読記憶媒体は、記憶媒体を含み得る（例えば、磁気媒体又は光学媒体（例えば、ディスク（固定若しくはリムーバブル）、テープ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ又はブルーレイ）。記憶媒体は、揮発性記憶媒体又は不揮発性記憶媒体（例えば、ＲＡＭ（同期型動的ＲＡＭ（ＳＤＲＡＭ）、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３等）ＳＤＲＡＭ、低出力ＤＤＲ（ＬＰＤＤＲ２等）ＳＤＲＡＭ、ＲａｍｂｕｓＤＲＡＭ（ＲＤＲＡＭ）、静的ＲＡＭ（ＳＲＡＭ）等）、ＲＯＭ、フラッシュメモリ、周辺インターフェース（例えば、ユニバーサルシリアルバス（ＵＳＢ）インターフェース等）を介してアクセスすることが可能な不揮発性メモリ（例えば、フラッシュメモリ）等）をさらに含んでもよい。記憶媒体は、微小電気機械システム（ＭＥＭＳ）と、通信媒体（例えば、ネットワーク及び／又は無線リンク）を介してアクセスすることが可能な記憶媒体とを含み得る。
【００５９】
いくつかの実施形態において、コンピュータ可読記憶媒体を用いて、命令を保存することができる。命令は、プログラムによって読み出され、上述したプロセッサ１１０のためのハードウェアを作製するために直接的又は間接的に用いられる。例えば、命令は、ハードウェア機能の挙動レベル又はレジスタ転送レベル（ＲＴＬ）記述を高レベル設計言語（ＨＤＬ）（例えば、Ｖｅｒｉｌｏｇ又はＶＨＤＬ）で記述する１つ以上のデータ構造の概要を示す。記述は、合成ツールによって読み出され得る。合成ツールは、記述を合成してネットリストを生成することができる。ネットリストは、１組のゲート（例えば、合成ライブラリ内に規定されたもの）を含み得る。１組のゲートは、プロセッサ１１０の機能を示す。その後、ネットリストを配置及びルーティングして、データセットを生成することができる。データセットは、マスクに付加されるべき幾何学的形状を記述する。その後、マスクを多様な半導体製造ステップにおいて用いて、プロセッサ１１０に対応する半導体回路又はは回路を生成することができる。
【００６０】
上記において特定の実施形態について説明してきたが、これらの実施形態は、特定の特徴について単一の実施形態のみが記載されている場合においても、本開示の範囲を限定することを意図していない。他に明記無き限り、本開示中に記載される特徴の例は例示的なものであり、限定的なものではない。上記の記載は、本開示の恩恵を有する当業者にとっては明らかであるこのような改変例、変更例及び均等物を網羅することを意図している。
【００６１】
本開示の範囲は、本明細書に記載の問題のうち任意の問題又は全ての問題を軽減するか否かに関わらず、任意の特徴又は本明細書に（明示的若しくは暗示的のいずれかで）開示される特徴の組み合わせまたはこれらの任意の一般化を含む。よって、本出願（またはその優先権を主張する出願）の手続きの間に、このような特徴の任意の組み合わせに合わせて新規の請求項が作成され得る。具体的には、添付の請求項を参照して、従属請求項からの特徴を独立請求項の特徴と組み合わせることができ、添付の特許請求の範囲中に羅列されている特定の組み合わせの他にも、各独立請求項からの特徴を任意の適切な様態で組み合わせることが可能である。
【図１】
2014514660.tif 000003
【図２】
2014514660.tif 000004
【図３】
2014514660.tif 000005
【図４】
2014514660.tif 000006
【図５】
2014514660.tif 000007
【手続補正書】
【提出日】平成25年12月12日(2013.12.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサであって、
複数の物理的コアであって、前記プロセッサは、前記複数の物理的コアに対する論理コアのマッピングを保存するように構成されている、複数の物理的コアと、
前記プロセッサのブート処理の後、前記論理コアを前記複数の物理的コアに再マッピングするように構成された割当ユニットと、
を備える、プロセッサ。
【請求項２】
前記割当ユニットは、前記複数の物理的コアのうち１つ以上がアイドル状態に入った旨を示す指標を受信するように構成されており、前記割当ユニットは、前記指標の受信に応じて、前記論理コアを再マッピングするように構成されている、請求項１に記載のプロセッサ。
【請求項３】
前記プロセッサは、前記複数の物理的コアのうち第１の物理的コアが前記アイドル状態に入ったのに応じて、前記第１の物理的コアの実行状態を保存するように構成されており、前記プロセッサは、前記第１の物理的コアが前記アイドル状態を終了したのに応じて、前記複数の物理的コアのうち第２の物理的コアの実行状態を前記第１の物理的コアにロードするように構成されている、請求項２に記載のプロセッサ。
【請求項４】
前記割当ユニットは、前記論理コアの前回の再マッピングが行われてから経過した時間の長さを決定するように構成されており、前記割当ユニットは、前記時間の長さが閾値を超えるのに応じて、前記論理コアを再マッピングするように構成されている、請求項１に記載のプロセッサ。
【請求項５】
前記割当ユニットは、前記複数の物理的コアのうち１つ以上の物理的コアそれぞれのワークロードを決定するように構成されており、前記割当ユニットは、前記１つ以上の決定されたワークロードに基づいて、前記論理コアのうち１つ以上の論理コアを前記複数の物理的コアのうち１つ以上の物理的コアに再マッピングするように構成されている、請求項１に記載のプロセッサ。
【請求項６】
前記割当ユニットは、前記複数の物理的コアのうち１つ以上の物理的コアについての温度情報を受信するように構成されており、前記割当ユニットは、前記受信した温度情報に基づいて、前記論理コアのうち１つ以上の論理コアを前記複数の物理的コアのうち１つ以上の物理的コアに再マッピングするように構成されている、請求項１に記載のプロセッサ。
【請求項７】
前記プロセッサは、前記複数の物理的コアのうち第１の物理的コアの実行状態と、前記複数の物理的コアのうち第２の物理的コアの実行状態とを保存するように構成されており、前記プロセッサは、前記割当ユニットが前記第１の物理的コア及び第２の物理的コアにマッピングされた論理コアを再マッピングするのに応じて、前記第２の物理的コアの保存された実行状態を前記第１の物理的コアにロードし、前記第１の物理的コアの保存された実行状態を前記第２の物理的コアにロードするように構成されている、請求項１に記載のプロセッサ。
【請求項８】
前記プロセッサは、前記複数の物理的コアのうち１つの物理的コアをオーバークロックするように構成されており、前記割当ユニットは、前記物理的コアがオーバークロックされている時間の長さに基づいて、論理コアを前記オーバークロックされた物理的コアに再マッピングするように構成されている、請求項１に記載のプロセッサ。
【請求項９】
前記割当ユニットは、前記論理コアの全てを再マッピングすることなく、前記複数の物理的コアのうちいくつかの物理的コアへの、前記論理コアのうち一部の論理コアの再マッピングを行うように構成されている、請求項１に記載のプロセッサ。
【請求項１０】
プロセッサ上の複数の物理的コアが１組のタスクを行うステップであって、前記複数の物理的コアに対する論理コアのマッピングに基づいて、前記１組のタスクが割り当てられるステップと、
前記プロセッサが、オペレーティングシステムの実行中に、前記論理コアを前記複数の物理的コアに再マッピングするステップであって、前記再マッピングに基づいて、追加の組のタスクが割り当てられるステップと、
を含む方法。
【請求項１１】
論理コアが、前記複数の物理的コアのうち第１の物理的コアから前記複数の物理的コアのうち第２の物理的コアに再マッピングされるのに応じて、前記プロセッサが、現在の実行状態を、前記第１の物理的コアから前記第２の物理的コアに転送するステップをさらに含む、請求項１０に記載の方法。
【請求項１２】
前記転送するステップは、前記実行状態を、前記プロセッサに接続されたメモリに保存し、前記実行状態を、前記第２の物理的コア上に再ロードするステップを含む、請求項１１に記載の方法。
【請求項１３】
前記転送するステップは、前記第２の物理的コアをアイドル状態から終了させて、前記第１の物理的コアの実行状態を再ロードするステップを含む、請求項１２に記載の方法。
【請求項１４】
前記プロセッサは、前記複数の物理的コアのうちいくつかの物理的コアの性能状態に基づいて、前記再マッピングを決定する、請求項１０に記載の方法。
【請求項１５】
前記再マッピングするステップは、論理コアを、より高い性能状態にある第１の物理的コアからより低い性能状態にある第２の物理的コアに再マッピングするステップを含む、請求項１４に記載の方法。
【国際調査報告】
2014514660.tif 000008
2014514660.tif 000009