(57)【特許請求の範囲】
【請求項１】
ｎ個のコアを有するマルチコアプロセッサで実現される方法であって、
前記ｎ個のコアのプロセッサにおいて、専用の低レイテンシ動作を行なうために、前記マルチコアプロセッサの前記ｎ個のコアのうちのｋ個のコアを選択するステップを含み、
ｋはｎ未満であり、
ｍ個のコアは非選択であり、
前記マルチコアプロセッサの各コアは定格コア容量を有し、前記方法はさらに、
前記選択されたｋ個のコアが不使用容量の分、合計でフル使用されないように、前記選択されたｋ個のコアを前記定格コア容量未満で動作させるステップと、
前記ｍ個のコアが前記ｍ個のコアの定格コア容量の合計容量を超える合計容量で動作するように、前記ｍ個のコアのうちの１つ以上を前記定格コア容量を超える容量で動作させるステップと、
前記マルチコアプロセッサにおいて前記ｋ個のコアの選択を周期的に変化させ、各選択で異なるセットのｋ個のコアが選択されるようにするステップとを含む、方法。
【請求項２】
前記ｍ個のコアのうちの１つ以上を前記定格コア容量を超える容量で動作させるステップは、前記ｍ個のコアのうちの前記１つ以上を、ｍ個の定格コア容量および前記不使用容量の合計を超えない容量で動作させるステップを含む、請求項１に記載の方法。
【請求項３】
前記ｍ個のコアのうちの１つ以上を前記定格コア容量を超える容量で動作させるステップは、前記ｍ個のコアのうちの前記１つ以上を、ｍ個の定格コア容量および前記不使用容量の合計を一時的に超える容量で動作させるステップを含む、請求項１に記載の方法。
【請求項４】
前記マルチコアプロセッサはプロセッサ定格容量を有し、
前記ｍ個のコアのうちの１つ以上を前記定格コア容量を超える容量で動作させるステップは、前記ｍ個のコアのうちの前記１つ以上を、前記ｍ個のコアが動作している容量の合計および前記ｋ個のコアが動作している容量の合計が前記プロセッサ定格容量を超えないような容量で動作させるステップを含む、請求項１に記載の方法。
【請求項５】
前記プロセッサ定格容量は、前記ｎ個のコアの定格コア容量の合計未満である、請求項４に記載の方法。
【請求項６】
前記定格コア容量は定格コア動作可能周波数である、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記定格コア容量は、定格コア消費電力である、請求項１〜５のいずれか１項に記載の方法。
【請求項８】
前記定格コア容量は、定格コア動作可能温度である、請求項１〜５のいずれか１項に記載の方法。
【請求項９】
ｋ＋ｍがｎに等しい、請求項１〜８のいずれか１項に記載の方法。
【請求項１０】
前記専用の低レイテンシ動作は、メモリアクセス動作、Ｉ／Ｏ動作、およびプロセッサ間通信のうちの少なくとも１つを含む、請求項１〜９のいずれか１項に記載の方法。
【請求項１１】
前記Ｉ／Ｏ動作は、マイクロ秒Ｉ／Ｏ動作である、請求項１０に記載の方法。
【請求項１２】
ｎ個のコアを有するマルチコアプロセッサに動作を行なわせる命令を格納するプログラムであって、前記動作は、
前記ｎ個のコアのプロセッサにおいて、専用の低レイテンシ動作を行なうために、前記マルチコアプロセッサの前記ｎ個のコアのうちのｋ個のコアを選択するステップを含み、ｋはｎ未満であり、ｍ個のコアは非選択であり、前記マルチコアプロセッサの各コアは定格コア容量を有し、前記動作はさらに、
前記選択されたｋ個のコアが不使用容量の分、合計でフル使用されないように、前記選択されたｋ個のコアを前記定格コア容量未満で動作させるステップと、
前記ｍ個のコアが前記ｍ個のコアの定格コア容量の合計容量を超える合計容量で動作するように、前記ｍ個のコアのうちの１つ以上を前記定格コア容量を超える容量で動作させるステップと、
前記マルチコアプロセッサにおいて前記ｋ個のコアの選択を周期的に変化させるステップとを含む、プログラム。
【請求項１３】
前記ｍ個のコアのうちの１つ以上を前記定格コア容量を超える容量で動作させるステップは、前記ｍ個のコアのうちの前記１つ以上を、ｍ個の定格コア容量および前記不使用容量の合計を超えない容量で動作させるステップを含む、請求項１２に記載のプログラム。
【請求項１４】
前記ｍ個のコアのうちの１つ以上を前記定格コア容量を超える容量で動作させるステップは、前記ｍ個のコアのうちの前記１つ以上を、ｍ個の定格コア容量および前記不使用容量の合計を一時的に超える容量で動作させるステップを含む、請求項１２に記載のプログラム。
【請求項１５】
前記マルチコアプロセッサはプロセッサ定格容量を有し、
前記ｍ個のコアのうちの１つ以上を前記定格コア容量を超える容量で動作させるステップは、前記ｍ個のコアのうちの前記１つ以上を、前記ｍ個のコアが動作している容量の合計および前記ｋ個のコアが動作している容量の合計が前記プロセッサ定格容量を超えないような容量で動作させるステップを含む、請求項１２に記載のプログラム。
【請求項１６】
前記プロセッサ定格容量は、前記ｎ個のコアの定格コア容量の合計未満である、請求項１５に記載のプログラム。
【請求項１７】
前記定格コア容量は定格コア動作可能周波数である、請求項１２〜１６のいずれか１項に記載のプログラム。
【請求項１８】
前記定格コア容量は、定格コア消費電力である、請求項１２〜１６のいずれか１項に記載のプログラム。
【請求項１９】
前記定格コア容量は、定格コア動作可能温度である、請求項１２〜１６のいずれか１項に記載のプログラム。
【請求項２０】
ｋ＋ｍがｎに等しい、請求項１２〜１９のいずれか１項に記載のプログラム。
【請求項２１】
前記専用の低レイテンシ動作は、メモリアクセス動作、Ｉ／Ｏ動作、およびプロセッサ間通信のうちの少なくとも１つを含む、請求項１２〜２０のいずれか１項に記載のプログラム。
【請求項２２】
前記Ｉ／Ｏ動作は、マイクロ秒Ｉ／Ｏ動作である、請求項２１に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
背景
本明細書は、プロセッサ性能を改善するための技術に関する。
【背景技術】
【０００２】
近頃のコンピュータプロセッサは、典型的には、複数の独立したプロセッサコアを含む。現在のコンピューティングシステムは、複数ミリ秒を要するイベントを（プロセスコンテキストスイッチなどの、オペレーティングシステムにサポートされたマルチプログラミングメカニズムによって）効率的に処理するために、または、数十ナノ秒を要するイベントを（プリフェッチ、アウト・オブ・オーダー実行、予測などの、ハードウェアプロセッサ特徴によって）効率的に処理するために、最適化されてきた。
【０００３】
特に低レイテンシの応答時間が求められる場合、複数マイクロ秒を要するイベントを効率的にサポートすることが、依然として課題となっている。そのようなマイクロ秒−粒度のイベントは、高性能のネットワーキングファブリック、フラッシュおよび相変化メモリなどの新たな不揮発性ストレージ技術、または、グラフィックス・プロセッシング・ユニット（ＧＰＵ）などのコンピューティングアクセラレータを用いたデータ交換において、より一般的になりつつある。マイクロ秒レベルのイベントは、コンテキストスイッチのオーバーヘッドおよびオペレーティングシステム割込みをもたらすには短すぎるが、現在のマイクロプロセッサにおけるハードウェアプロセッサアーキテクチャ特徴によって容易に対処するには長すぎる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特定の低レイテンシ動作を処理するためにプロセッサコアを専用とすること（スピニング（spinning）と呼ばれる場合もある）は、マイクロ秒−粒度の動作における低レイテンシを達成するための可能な解決策である。しかしながら、プロセッサを特定のＩ／Ｏ動作専用にすることは、マルチコアプロセッサから実質的な計算能力を減じることになり得る。
【課題を解決するための手段】
【０００５】
概要
概括的に、本明細書に記載された主題の革新的な一態様は、ｎ個のコアを有するマルチコアプロセッサで実現される動作を含む方法で具現化され得る。当該方法は、ｎ個のコアのプロセッサにおいて、専用の低レイテンシ動作を行なうために、マルチコアプロセッサのｎ個のコアのうちのｋ個のコアを選択することを含む。ｋはｎ未満であり、ｍ個のコアは非選択であり、マルチコアプロセッサの各コアは定格コア容量を有する。上記方法は、選択されたｋ個のコアが不使用容量の分、合計でフル使用されないように、選択されたｋ個のコアを定格コア容量未満で動作させる。また、上記方法は、上記ｍ個のコアが当該ｍ個のコアの定格コア容量の合計容量を超える合計容量で動作するように、当該ｍ個のコアのうちの１つ以上を定格コア容量を超える容量で動作させる。
【０００６】
この態様の他の実施形態は、対応するシステム、装置、および、上記方法の動作を行なうように構成されるとともにコンピュータ記憶装置上に符号化されたコンピュータプログラムを含む。
【０００７】
本明細書に記載された主題の特定の実施形態は、以下の利点のうちの１つ以上を達成するために実施され得る。本システムおよび方法によって、マルチコアプロセッサの特定の数の独立のプロセッサコアが入力／出力（Ｉ／Ｏ）動作のみを専用に、それも低減された動作容量で行なうことが可能になる。その結果として、マルチコアプロセッサの残りのコアに追加の動作容量が与えられる。プロセッサコアを低レイテンシ動作専用にすることによって、コアをフル容量で低レイテンシ動作専用にすることのマイナス影響を低減させつつ、マルチコアプロセッサの安定した低レイテンシを実現することができる。プロセッサコアを低減容量で低レイテンシ動作専用にすることによって、フル使用されない専用プロセッサコアから得られたエネルギを用いて、マルチコアプロセッサの残りのコアの性能を高めることができる。
【０００８】
本明細書に記載された主題の１つ以上の実施形態の詳細を添付の図面および以下の説明で述べる。説明、図面、および特許請求の範囲から、主題の他の特徴、態様、および利点が明らかになるであろう。
【図面の簡単な説明】
【０００９】
【図１】特定の数のプロセッサコアを低レイテンシ動作専用にすることができる環境のブロック図であり、各専用処理コアがフル使用されていない図である。
【図２】フル使用されていないプロセッサコアからの余剰エネルギを使用することによって、一般動作プロセッサコアの性能を高めるための処理の例の流れ図である。
【００１０】
さまざまな図面における同様の参照番号および呼称は、同様の要素を指す。
【発明を実施するための形態】
【００１１】
詳細な説明
以下で説明するシステムおよび方法は、低レイテンシを達成するとともに全体の一般動作プロセッサコア性能を高めるために、マルチコアＣＰＵ（たとえば、プロセッサ）内の独立のプロセッサコアを専用とすることに関する。いくつかの実現例では、マルチコアプロセッサの第１のセットのプロセッサコアが、低レイテンシ動作を行なうための専用とされる。たとえば、低レイテンシ動作は、入力／出力（Ｉ／Ｏ）動作、他のプロセッサコアと通信するメモリ（たとえば、ソリッドステートドライブ、フラッシュデバイスなど）内のデータへのアクセス、超高速メッセージ（たとえば、１μＳ〜１００μＳ）をやり取りするためのスーパーコンピューティング型ネットワークファブリックなどの不揮発性ストレージ技術、および他の低レイテンシ動作を含み得る。マルチコアプロセッサの第２のセットのプロセッサコアは、低レイテンシ動作を行なうことのみに限定されないプロセッサコアである。たとえば、第２のセットのプロセッサコアは、プロセッサに要求される多数のさまざまな動作を行ない得る。典型的には、ｎ個のコアのプロセッサにおいて、専用の低レイテンシ動作のためにｋ個のコアが選択され、残りの動作を行なうために残りのコアが選択される。ただし、第２のセットのコアは、必ずしも残りのコアを含むとは限らない。たとえば、ｎ個のコアのプロセッサにおいて、ｎ−ｋ＝ｍとすると、第２のセットのコアは、カーディナリティ（cardinality）ｍ、またはｍ未満であるカーディナリティを有し得る。
【００１２】
典型的には、低レイテンシ動作に専用のプロセッサコアを有するマルチコアプロセッサは、専用の低レイテンシプロセッサコアをフルには使用せず、使用可能なエネルギのうちの未使用分が残る。マルチコアプロセッサは、低レイテンシプロセッサコアによって使用される電力（たとえば、電圧／周波数）の量を低減することができる。低レイテンシプロセッサコアの消費電力を低減することによって生み出された余剰電力容量は、残りの汎用プロセッサコアに使用可能な全体の電力容量に加えられ得る。汎用プロセッサコアによって追加の使用可能な電力容量を使用することによって、残りの汎用プロセッサコアの性能が高まる。これによって、一連の計算能力のうちの一部が排除される。
【００１３】
上記特徴および他の特徴を、以下でより詳細に説明する。
図１は、特定の数のプロセッサコアを低レイテンシ動作専用にすることができる環境１００のブロック図であり、各専用処理コアがフル使用されていない図である。図示のように、環境１００は、バス１０８に接続されたマルチコアプロセッサ１０２を含む。バス１０８は、プロセッサ１０２を、フラッシュメモリ１１０、ランダムアクセスメモリ（ＲＡＭ）１１２、およびグラフィックス・プロセッシング・ユニット（ＧＰＵ）１１４を含む外部リソースのセットに、通信可能に結合している。マルチコアプロセッサ１０２は、命令を実行するように動作可能なプロセッサコア１０４−１〜１０４−ｎ（ｎ個のコア）を含む。また、マルチコアプロセッサ１０２は、プロセッサコア１０４−１とプロセッサコア１０４−２とを含む第１のセットのｋ個のプロセッサコア１０６を有する。図１の例ではｋの値は２であるが、ｋの他の値も用いられ得る。
【００１４】
マルチコアプロセッサ１０２は、複数のプロセッサコア、ストレージリソース、および他のコンポーネントを含む１つの中央処理装置（ＣＰＵ）チップであってもよい。また、マルチコアプロセッサ１０２は、オンチップストレージに格納され、本明細書に記載の技術を実現するように動作可能なファームウェア命令またはマイクロコード命令を含んでもよい。いくつかの実現例では、本明細書に記載の技術を実現するために必要な命令は、シリコンで実現され得る。また、マルチコアプロセッサ１０２は複数のプロセッサを含んでもよく、各プロセッサは、それ自体のプロセッサコア、ストレージリソース、および／または他のコンポーネントを含んでもよい。
【００１５】
マルチコアプロセッサ１０２は、データバス１０８に接続されている。いくつかの実現例では、データバス１０８は、コンピューティングデバイス筐体内のコンポーネント間でデータを伝送するために用いられる高速データ転送メカニズムであってもよい。データバス１０８は、そのようなデータ転送を行なうことが可能な如何なる種類のバスであってもよい。
【００１６】
フラッシュメモリ１１０、ＲＡＭ１１２、およびＧＰＵ１１４を含む複数のリソースがデータバス１０８に接続されている。いくつかの実現例では、追加のリソースがデータバス１０８に接続されてもよい。追加のリソースは、ダイレクトメモリアクセス（ＤＭＡ）コントローラ、グラフィックスカード、ネットワークカード、ＲＡＩＤコントローラ、および／または他のリソースを含むが、これらに限定されない。
【００１７】
図示のように、マルチコアプロセッサ１０２は、プロセッサコア１０４−１〜１０４−ｎを含む。プロセッサコア１０４−１〜１０４−ｎは、データバスまたはブリッジによってマルチコアプロセッサ１０２の他のコンポーネントに接続された別個のコンポーネントであってもよい。マルチコアプロセッサ１０２は、プロセッサコア１０４−１〜１０４−ｎを含んでおり、ｎは、通常のマルチコアプロセッサ１０２の機能を果たすための、プロセッサコアの任意の好適な数である。
【００１８】
マルチコアプロセッサ１０２における各プロセッサコア１０４は、定格コア容量を有する。定格コア容量は、最大性能容量の大きさ（たとえば、プロセッサコアが、当該プロセッサコアへのダメージを生じさせることなく達成でき、かつ、当該プロセッサコアの正常な動作を維持することができる最大の電圧／周波数の比）であり得る。それは、各プロセッサコア１０４が、当該プロセッサコアにダメージを与えることなく消費可能な電力の量を表わす。容量は、消費電力、最大周波数、所与の電圧に対する最大周波数、最大電流、最大動作温度、または、コアによる消費電力を示す他の任意の測定値によってなど、さまざまな方法で測定され得る。
【００１９】
いくつかの実現例では、プロセッサコア１０４は、他の一体化されたコンポーネントを含み得る。たとえば、Ｌ１キャッシュなどの専用キャッシュメモリ、ハードウェアコンテキストストレージ、ファームウェアストレージ、マイクロコードストレージ、および／または、他の一体化されたコンポーネントなどである。
【００２０】
プロセッサコア１０４−１〜１０４−ｎは、スレッドを割当てられてもよい。いくつかの実現例では、スレッドは、プロセッサコア１０４上で実行される命令のセットであってもよい。たとえば、スレッドは、マルチコアプロセッサ１０２上で実行されるソフトウェアアプリケーションであってもよい。スレッドは、１つのソフトウェアアプリケーション内の、マルチコアプロセッサ１０２上で実行されている多数のスレッドのうちの１つであってもよい。
【００２１】
ｋ個のプロセッサコア１０６は、低レイテンシ動作のみに専用の特定の数の処理コアであってもよい。Ｉ／Ｏ動作のみに専用である場合、ｋ個のプロセッサコア１０６は、汎用処理タスクの割当てのためのオペレーティングシステムスケジューラには使用することができず、Ｉ／Ｏに関する命令（たとえば、フラッシュメモリ１１０からのデータ検索／送信、ＲＡＭ１１２からのデータ検索／送信、ＧＰＵ１１４からのデータ検索／送信など）を実行するのみである。いくつかの実現例では、低レイテンシ動作は、マイクロ秒低レイテンシ動作であり、これは、各動作の速度の大きさである。他の実現例では、低レイテンシ動作は専用コアによって行なわれてもよく、ナノ秒動作およびマイクロ秒動作を含んでもよい。図１に示すように、ｋ個のプロセッサコア１０６は２個のプロセッサコア１０６−１および１０６−２を含む。いくつかの実現例では、ｋ個のプロセッサコア１０６は、任意の好適な数のプロセッサコアを含んでもよいが、プロセッサ１０２の正常な動作を保証するために、その数は処理コアの総数よりも少ない。すなわち、ｋ＜ｎである。
【００２２】
ｋ個のプロセッサコア１０６は、低レイテンシ動作に関してマルチコアプロセッサ１０２の応答時間を減少させることによって、プロセッサ１０２のレイテンシを減少させる。マルチコアプロセッサ１０２の応答時間は、ｋ個のコアにおいて低レイテンシ動作を実行することによって減少する。これにより、残りのｍ個のコアにおける他のスレッドを中断して低レイテンシ動作を他のコアによって実行する必要がなくなる。
【００２３】
ｋ個のプロセッサコア１０６は、フル容量までは使用されない。なぜなら、高い使用度は処理待ち行列の一時的な蓄積につながり、それはプロセッサ１０２のレイテンシを増大させることになるからである。残りのプロセッサコア１０４−ｋ〜１０４−ｎ（たとえばｍ個のコア）は、汎用処理タスク専用である。典型的には、残りのプロセッサコア１０４−ｋ〜１０４−ｎの数ｍは、処理コアの総数からｋ個のプロセッサコア１０６を引いたものに等しい。たとえば、ｎ個のコアのプロセッサにおいて、ｎ個のコアは、ｍ個のコアとｋ個のコアとを足したものに等しい。
【００２４】
処理コアの消耗を低減させるために、プロセッサ１０２は、マルチコアプロセッサにおいてｋ個のコア（たとえば、専用の低レイテンシプロセッサコア）の選択を周期的に変化させてもよい。ｋ個のコアを周期的に変化させることによって、ある期間にわたって、各コアが、他のコアと同じ期間フル使用されないことが保証される。これにより、処理コア間での消耗の均一化が促される。
【００２５】
前述の通り、専用の低レイテンシプロセッサコアとして機能するｋ個のプロセッサコア１０６の各々は、フル使用されない。マルチコアプロセッサにおける各コアは、定格コア容量を有する。典型的には、定格コア容量は、各コアで同じである。
【００２６】
ｋ個のプロセッサコアの各々の消費電力は、フルの定格コア容量よりも小さい。ｋ個のプロセッサコア１０６からの残りの余剰電力容量は、ｍ個のコアによって使用される。これによって、ｍ個のコアの性能が高まる。我々の解決策が依拠するのは、近頃のマルチコアＣＰＵは、全てのコアが同時に最大性能で動作できるわけではないように作られている（なぜなら、そのようにすれば、ＣＰＵパッケージが動作温度範囲内に留まりながら熱として放散できるよりも、多くのエネルギが必要となり得るからである）という事実である（先行のダークシリコンの文献参照）。したがって、ＣＰＵがそのコアのサブセットを最大性能（最大周波数設定／最大電圧設定）で動作させることが可能であるのは、残りのＣＰＵのアクティブ度が低く、ひいては発生する熱が少なく、場合によっては低周波数設定／低電圧設定で動作する場合のみである。
【００２７】
ｋ個のコアをフル使用しないことは、既定の熱設計電力（ＴＤＰ）制約下において公称動作電圧でパワーオンすることができるシリコンの量を考慮し得る。結果として生じる相応の汎用計算能力の低下は、ｋ／ｎよりも小さい。このことは、マイクロ秒レベルのＩ／Ｏ動作に関して比較的低いレイテンシを達成するための、低レイテンシ動作専用のコアのマイナス影響を低減する。
【００２８】
図２は、プロセッサコアをフル使用しない結果生じた余剰エネルギを使用することによって、一般動作プロセッサコアの性能を高めるための処理の例の流れ図である。
【００２９】
この処理は、ｎ個のコアを有するマルチコアプロセッサで実現され得る。マルチコアプロセッサ１０２は、エネルギ定格／容量ｎ×Ｅを有する（ｎはコアの数であり、Ｅはコア１個当たりの定格コア容量である）。
【００３０】
上記処理は、ｎ個のコアのプロセッサ１０２に関して、専用の入力／出力動作を行なうために、マルチコアプロセッサ１０２のｎ個のコアのうちのｋ個のコアを選択する（ｋはｎ未満であり、ｍ個のコアは非選択であり、マルチコアプロセッサの各コアは定格コア容量を有する）（２０２）。定格コア容量は、処理コア１０４がダメージを受けることなく動作する技術的限界（たとえば、熱設計電力、クロックスピード、消費電力など）である。たとえば、定格コア容量は、定格コア動作可能周波数、定格コア消費電力、定格コア動作可能温度、または、処理コアがクロックスピード（すなわち周波数）につき使用する電圧量の比であってもよい。
【００３１】
いくつかの実現例では、定格コア容量は、処理コア１０４の最大性能レベル（たとえば、プロセッサコアが、当該プロセッサコアへのダメージを生じさせることなく達成でき、かつ、当該プロセッサコアの正常な動作を維持することができる最大の電圧／周波数の比）に等しい。なお、コアは、ある期間の間、ダメージを受けることなく、定格容量を超えて動作することができる。
【００３２】
さらに、ｎ個のコアのプロセッサは、プロセッサ定格容量を有し得る。プロセッサの定格容量は、定格コア容量の合計、たとえばｎ×Ｅと等しくてもよい。しかしながら、いくつかのプロセッサにおいては、定格プロセッサ容量は、定格コア容量の合計未満であってもよい。これは、ダークシリコン効果によるものである。ダークシリコン効果は、既定の熱設計電力（ＴＤＰ）制約下において公称動作電圧でパワーオンすることができないシリコンの量を規定する。
【００３３】
上記処理は、選択されたｋ個のコアが不使用容量の分、合計でフル使用されないように、当該選択されたｋ個のコアを定格コア容量未満で動作させる（２０４）。前述の通り、ｋ個のコアはｚ容量で動作し、不使用容量（ｕ）は、下記の式（１）に従って算出され得る。
【００３４】
ｕ＝（１００％容量−ｚ容量）    （１）
容量をフル使用しないことによって、マルチコアプロセッサ１０２は追加の電力を使用可能になる。上述の理由により、不使用容量のうちの全てがプロセッサに使用可能なわけではない。
【００３５】
上記処理は、ｍ個のコアが当該ｍ個のコアの合計定格コア容量を超える合計容量で動作するように、当該ｍ個のコアのうちの１つ以上を定格コア容量を超える容量で動作させる（２０６）。いくつかの実現例では、プロセッサ１０２は、残りのコアのうちの全部よりも少ないコアを選択して定格コア容量を超える容量で動作させ得るが、依然として、残りのプロセッサコア全部の合計よりも高い容量で動作させ得る。ｍ個のコアのうちの１つ以上は、下記の式（２）で示されるエネルギ定格／容量またはそれ以下で動作し得る。
【００３６】
ｍ個のコアの電力使用＝［（ｎ−ｋ）＋（ｕ）×ｋ］×Ｅ    （２）
いくつかの実現例では、ｍ個のコアのうちの１つ以上を定格コア容量を超える容量で動作させることは、ｍ個のコアのうちの１つ以上を、ｍ個の定格コア容量および不使用容量の合計を一時的に超える容量で動作させることを含む。１つ以上のプロセッサコアは、個別に、または合計で、定格コア容量を一時的に超える場合がある。
【００３７】
他の実現例では、ｍ個のコアのうちの１つ以上を定格コア容量を超える容量で動作させることは、ｍ個のコアのうちの１つ以上を、ｍ個の定格コア容量および不使用容量の合計を超えない容量で動作させることを含む。ｍ個の定格コアは、ｋ個のコアの不使用容量を超えるに過ぎない容量で動作してもよく、それは定格プロセッサ容量以下であってもよい。たとえば、ｍ個のコアのうちの１つ以上を定格コア容量を超える容量で動作させることは、ｍ個のコアのうちの１つ以上を、ｍ個のコアが動作している容量の合計と、ｋ個のコアが動作している容量の合計とがプロセッサ定格容量を超えないような容量で動作させることを含む。
【００３８】
定格コア容量と同様に、定格プロセッサ容量は、プロセッサがダメージを受けることなく、しかしそれでも最適な性能レベルで動作する技術的限界（たとえば、過剰な電力を消費することなく、高速性能を発揮する電圧／周波数の比）として表わされ得る。プロセッサ定格容量は、ｎ個のコアの定格コア容量の合計未満として定義されてもよい。
【００３９】
ここで論じられたシステムがユーザに関する個人情報を収集するか、または、個人情報を利用し得る状況において、アプリケーションまたは特徴がユーザ情報を収集するか否かを制御する機会（たとえば、ユーザのソーシャルネットワーク、ソーシャルアクションもしくはアクティビティ、職業、ユーザのプレファレンス、または、ユーザの現在の位置に関する情報）、または、当該ユーザにより関連し得るコンテンツを受け取るか否かおよび／もしくは受け取る方法を制御する機会がユーザに与えられ得る。さらに、あるデータは、個人を識別可能である情報が除去されるように、格納または使用される前に１つ以上の態様で処理され得る。たとえば、個人を識別可能である情報が当該ユーザについて特定され得ないようにユーザの身元が処理され得るか、または、位置情報が得られたユーザの地理的な位置が、ユーザの特定の位置が特定され得ないように、（たとえば都市、ＺＩＰコードまたは州レベルまで）一般化され得る。したがって、ユーザは、情報がどのようにユーザに関して収集されるか、および、コンテンツサーバによって使用されるかについて制御を有し得る。
【００４０】
本明細書に記載の主題および動作の実施形態は、デジタル電子回路で実現されてもよく、本明細書に開示の構造およびそれらの構造的等価物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアで実現されてもよく、またはそれらのうちの１つ以上の組合わせで実現されてもよい。本明細書に記載された主題の実施形態は、１つ以上のコンピュータプログラムとして実現されてもよい。すなわち、データ処理装置による実行またはデータ処理装置の動作の制御のために、コンピュータ記憶媒体上に符号化されたコンピュータプログラム命令の１つ以上のモジュールとして実現されてもよい。
【００４１】
コンピュータ記憶媒体は、コンピュータ読取可能な記憶装置、コンピュータ読取可能な記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの１つ以上の組合わせであってもよく、または、それらに含まれてもよい。さらに、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人為的に生成された伝搬信号に符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。また、コンピュータ記憶媒体は、１つ以上の別個の物理コンポーネントまたは媒体（たとえば、複数のＣＤ、ディスク、または他の記憶装置）であってもよく、またはそれらに含まれてもよい。
【００４２】
本明細書に記載の動作は、１つ以上のコンピュータ読取可能な記憶装置に格納されたデータ、もしくは他のソースから受信したデータに対して、データ処理装置によって行なわれる動作として実現することができる。
【００４３】
「データ処理装置」という用語は、例として、プログラム可能なプロセッサ、コンピュータ、システム・オン・チップ、または複数のプロセッサ、コンピュータ、もしくはシステム・オン・チップ、またはこれらの組合せを含む、データを処理するための全ての種類の装置、デバイスおよび機械を包含する。当該装置は、専用論理回路、たとえばＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）を含み得る。当該装置は、ハードウェアに加えて、対象のコンピュータプログラムのための実行環境を作成するコード、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、またはそれらのうちの１つ以上の組合わせを構成するコードも含み得る。装置および実行環境は、ウェブサービス、分散コンピューティングインフラストラクチャおよびグリッドコンピューティングインフラストラクチャなど、さまざまな異なるコンピューティングモデルインフラストラクチャを実現することができる。
【００４４】
コンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプトまたはコードとしても知られる）は、コンパイル言語またはインタープリタ言語、宣言型言語または手続き型言語を含む任意の形式のプログラミング言語で記述することができ、スタンドアロンプログラムとしてまたはコンピューティング環境内の使用に適したモジュール、コンポーネント、サブルーチン、オブジェクトまたはその他のユニットとしての任意の形で用いることができる。コンピュータプログラムは、ファイルシステム内のファイルに対応し得るが、必ずしも対応しなくてもよい。プログラムは、他のプログラムまたはデータ（たとえば、マークアップ言語文書に記憶された１つ以上のスクリプト）を保持するファイルの一部、関与しているプログラムに専用の単一ファイル、または複数の同格ファイル（たとえば、１つ以上のモジュール、サブプログラムまたはコードの一部を記憶するファイル）に記憶されてもよい。コンピュータプログラムは、１つのコンピュータ上で、または１つのサイトに配置されまたは複数のサイトにわたって分散され、通信ネットワークによって相互接続されている複数のコンピュータ上で実行するように実装することができる。
【００４５】
本明細書に記載のプロセスおよびロジックフローは、入力データを処理して出力を生成することによって動作を行う１つ以上のコンピュータプログラムを実行する１つ以上のプログラム可能なプロセッサによって実施され得る。また、プロセスおよびロジックフローは、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）またはＡＳＩＣ（特定用途向け集積回路）などの専用論理回路によって実施されてもよく、装置は、ＦＰＧＡまたはＡＳＩＣなどの専用論理回路として実現されてもよい。
【００４６】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサ、専用マイクロプロセッサ、および任意の種類のデジタルコンピュータの任意の１つ以上のプロセッサを含む。一般的に、プロセッサは、読出専用メモリまたはランダムアクセスメモリまたはその両方から、命令およびデータを受信する。コンピュータの必須要素は、命令に従って動作を実行するためのプロセッサと、命令およびデータを記憶するための１つ以上のメモリデバイスとである。一般的に、コンピュータは、データを記憶するための１つ以上の大容量記憶装置、たとえば磁気ディスク、光磁気ディスクまたは光ディスクを含むであろう。または、コンピュータは、これらの大容量記憶装置との間でデータを送受信するように動作可能に結合されるであろう。しかしながら、コンピュータは、これらの装置を有さなくてもよい。さらに、コンピュータは別のデバイス内に組込まれてもよい。当該別のデバイスの例をほんのいくつか挙げると、携帯電話、携帯情報端末（ＰＤＡ）、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム（ＧＰＳ）受信機、または携帯型記憶装置（たとえば、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブ）などがある。コンピュータプログラム命令およびデータの記憶に適したデバイスは、例として、半導体メモリデバイス（たとえば、ＥＰＲＯＭ、ＥＥＰＲＯＭおよびフラッシュメモリデバイス）、磁気ディスク（たとえば、内蔵ハードディスクまたはリムーバブルディスク）、光磁気ディスク、ＣＤ−ＲＯＭおよびＤＶＤ−ＲＯＭディスクを含む全ての種類の不揮発性メモリ、媒体およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完されてもよく、専用論理回路に組み込まれてもよい。
【００４７】
ユーザとの対話を提供するために、本明細書に記載された主題の実施形態は、情報をユーザに提示するための表示装置（たとえば、ＣＲＴ（陰極線管）モニタまたはＬＣＤ（液晶ディスプレイ）モニタ）、ユーザがコンピュータに入力を提供することができるキーボードおよびポインティングデバイス（たとえば、マウスまたはトラックボール）を備えたコンピュータ上で実現することができる。他の種類の装置を用いて、ユーザとの対話を提供することもできる。たとえば、ユーザに提供されるフィードバックは、任意種類の感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力または触覚入力を含む任意の形で受信することができる。さらに、コンピュータは、ユーザによって使用されるデバイスとの間でドキュメントを送受信することによって、たとえば、ウェブブラウザから受信した要求に応答して、ユーザのユーザ装置上のウェブブラウザにウェブページを送信することによって、ユーザと対話することができる。
【００４８】
本明細書に記載された主題の実施形態は、バックエンドコンポーネント（たとえばデータサーバ）を含むコンピューティングシステムで、またはミドルウェアコンポーネント（たとえばアプリケーションサーバ）を含むコンピューティングシステムで、またはフロントコンポーネント（たとえば、ユーザが本明細書に記載された主題の実装と対話することができるグラフィカルユーザインターフェイスまたはウェブブラウザを有するユーザコンピュータ）を含むコンピューティングシステムで、または１つ以上の上記のバックエンドコンポーネント、ミドルウェアコンポーネントもしくはフロントエンドコンポーネントの任意の組合わせを含むコンピューティングシステムで実現することができる。システムのコンポーネントは、任意の形式または媒体のデジタルデータ通信、たとえば通信ネットワークで相互接続することができる。通信ネットワークの例として、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、ネットワーク間（たとえば、インターネット）、およびピアツーピアネットワーク（たとえば、臨時用ピアツーピアネットワーク）が挙げられる。
【００４９】
コンピューティングシステムは、ユーザおよびサーバを含むことができる。ユーザとサーバとは、一般的に互いに遠隔であり、典型的には通信ネットワークを介して対話する。ユーザとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにユーザ−サーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態において、サーバは、（たとえば、ユーザ装置と対話するユーザにデータを表示し、ユーザからユーザ入力を受信するために）データ（たとえば、ＨＴＭＬページ）をユーザ装置に送信する。ユーザ装置で生成されたデータ（たとえば、ユーザ対話の結果）は、サーバ上でユーザ装置から受信することができる。
【００５０】
本明細書は、多くの具体的な実施詳細を含むが、これらの詳細は、特徴の範囲または請求され得る事項の範囲を限定するものではなく、むしろ特定の実施形態に特有の特徴の説明として考えるべきである。本明細書において別個の実施形態の文脈で記載された特定の特徴は、単一の実施形態において組合わせて実施することもできる。逆に、単一の実施形態の文脈で記載されたさまざまな特徴は、複数の実施形態において、別々にまたは任意の適切なサブコンビネーションで実施することもできる。さらに、特徴が特定の組合わせで作用するものとして上では説明し、初めはそのように請求するが、請求された組合せのうちの１つ以上の特徴は、場合によっては組合わせから削除されてもよく、請求された組合わせは、サブコンビネーションまたはサブコンビネーションの変形例に向けられてもよい。
【００５１】
同様に、動作が特定の順序で図面に示されているが、望ましい結果を達成するために、図示された特定の順序または順番でこれらの動作を実行する必要があると理解すべきではなく、または図示された全ての動作を実行する必要があると理解すべきではない。特定の状況において、マルチタスキングおよび並列処理が有利である場合がある。さらに、上述の実施形態におけるさまざまなシステムコンポーネントの分離は、全ての実施形態においてそのような分離が必要であると理解すべきではなく、記載されたプログラムコンポーネントおよびシステムは、一般的に、単一のソフトウェア製品に一体化されまたは複数のソフトウェア製品にパッケージ化することができると理解すべきである。
【００５２】
このように、主題の特定の実施形態を説明した。他の実施形態は、下記の特許請求の範囲内にある。場合によっては、請求項に列挙された動作は、異なる順序で実行され、依然として望ましい結果を達成することができる。さらに、望ましい結果を達成するために、添付の図面に示されるプロセスは、必ずしも示された特定の順序または順番に従う必要がない。特定の実現例において、マルチタスキングおよび並列処理が有利である場合がある。
【図１】
0006549728.tif 000002
【図２】
0006549728.tif 000003