(57)【特許請求の範囲】
【請求項１】
２以上のコアを有するコンピュータシステム内で実行しているアプリケーションプログラムをスケジューリングするための方法であって、各コアは各自のコア構成要素を利用することが可能であり、前記コア構成要素は前記コアの機能又は処理を実行する前記コア内の要素であり、
当該方法は、
第１評価を生成するためプロセス変動に基づき第１コア構成要素を解析するステップであって、前記プロセス変動は公称値と異なる第１パフォーマンス値により前記第１コア構成要素を機能させる、前記第１コア構成要素を解析するステップと、
第２評価を生成するため前記プロセス変動に基づき第２コア構成要素を解析するステップであって、前記第２コア構成要素は第１構成要素タイプを有し、前記プロセス変動は前記公称値と異なる第２パフォーマンス値により前記第２コア構成要素を機能させる、前記第２コア構成要素を解析するステップと、
前記第１評価と前記第２評価とに基づき第１コア構成要素を選択するステップと、
前記第１コア構成要素を使用することによって、スケジューリングされたコア上で実行されるよう前記アプリケーションプログラムをスケジューリングするステップと、
を含む方法。
【請求項２】
前記アプリケーションプログラムによって使用されるアプリケーションコア構成要素タイプを決定するステップをさらに含み、前記アプリケーションコア構成要素タイプが前記第１構成要素タイプである、請求項１に記載の方法。
【請求項３】
前記第１構成要素タイプが、分岐予測器、キャッシュ、浮動小数点演算ユニット、バス、フォワーディング回路、レジスタファイル、および命令キューからなるグループから選択される、請求項１に記載の方法。
【請求項４】
前記プロセス変動がコア間プロセス変動である、請求項１に記載の方法。
【請求項５】
前記第１及び第２コア構成要素を解析するステップが、
前記第１及び第２コア構成要素のそれぞれの動作状態を決定するステップと、
前記第１及び第２コア構成要素のそれぞれの前記動作状態をブルームフィルタ内に格納するステップと、
を含む、請求項１に記載の方法。
【請求項６】
前記第１及び第２コア構成要素を解析するステップが、前記第１及び第２パフォーマンス値に基づき前記第１及び第２コア構成要素のそれぞれをランク付けすることを含む、請求項１に記載の方法。
【請求項７】
前記第１構成要素タイプは、第１コア構成要素タイプであり、
前記公称値は、第１公称値であり、
前記プロセス変動は、第１プロセス変動であり、
当該方法はさらに、
第３評価を生成するため第２プロセス変動に基づき第３コア構成要素を解析するステップであって、前記第３コア構成要素は第２構成要素タイプを有し、前記第２構成要素タイプは第２公称値を有し、前記第２プロセス変動は、前記第２公称値と異なる第３パフォーマンス値により前記第３コア構成要素を機能させる、前記第３コア構成要素を解析するステップと、
第４評価を生成するため前記第２プロセス変動に基づき第４コア構成要素を解析するステップであって、前記第４コア構成要素は前記第２構成要素タイプを有し、前記第２プロセス変動は、前記第２公称値と異なる第４パフォーマンス値により前記第４コア構成要素を機能させる、前記第４コア構成要素を解析するステップと、
前記第３評価と前記第４評価とに基づき第３コア構成要素を選択するステップと、
前記第３コア構成要素を使用することが可能なスケジューリングされたコア上で実行されるよう前記アプリケーションプログラムをスケジューリングするステップと、
をさらに含む、請求項１に記載の方法。
【請求項８】
前記アプリケーションプログラムによって使用される第１アプリケーションコア構成要素タイプおよび第２アプリケーションコア構成要素タイプを決定するステップをさらに含み、前記第１アプリケーションコア構成要素タイプならびに前記第２アプリケーションコア構成要素タイプが、前記第１コア構成要素タイプおよび第２コア構成要素タイプである、請求項７に記載の方法。
【請求項９】
前記第１構成要素タイプおよび前記第２構成要素タイプが、分岐予測器、キャッシュ、浮動小数点演算ユニット、バス、フォワーディング回路、レジスタファイル、および命令キューからなるグループから独立して選択される、請求項７に記載の方法。
【請求項１０】
前記第３及び第４コア構成要素を解析するステップが、
前記第３構成要素および前記第４構成要素のそれぞれの動作状態を決定するステップと、
前記第３構成要素および前記第４構成要素のそれぞれの前記動作状態をブルームフィルタ内に格納するステップと、
を含む、請求項７に記載の方法。
【請求項１１】
前記第３及び第４コア構成要素を解析するステップが、前記第３及び第４パフォーマンス値に基づき前記第３及び第４コア構成要素のそれぞれをランク付けすることを含む、請求項７に記載の方法。
【請求項１２】
前記第１及び第３コア構成要素が異なるコア上にある、請求項７に記載の方法。
【請求項１３】
２以上のコアを有するコンピュータシステム上で実行しているアプリケーションプログラムをスケジューリングするためのコンピュータプログラムであって、各コアは各自のコア構成要素を利用することが可能であり、前記コア構成要素は各コアの機能又は処理を実行する前記コア内の要素であり、
当該コンピュータプログラムは、コンピュータに、
第１評価を生成するためプロセス変動に基づき第１コア構成要素を解析するステップであって、前記第１コア構成要素は第１構成要素タイプを有し、前記第１構成要素タイプは公称値を有し、前記プロセス変動は前記公称値と異なる第１パフォーマンス値により前記第１コア構成要素を機能させる、前記第１コア構成要素を解析するステップと、
第２評価を生成するため前記プロセス変動に基づき第２コア構成要素を解析するステップであって、前記第２コア構成要素は前記第１構成要素タイプを有し、前記プロセス変動は前記公称値と異なる第２パフォーマンス値により前記第２コア構成要素を機能させる、前記第２コア構成要素を解析するステップと、
前記第１評価と前記第２評価とに基づき第１コア構成要素を選択するステップと、
前記第１コア構成要素を使用することによって、スケジューリングされたコア上で実行されるよう前記アプリケーションプログラムをスケジューリングするステップと、
を実行させるためのコンピュータプログラム。
【請求項１４】
前記コンピュータに、前記アプリケーションプログラムによって使用されるアプリケーションコア構成要素タイプを決定するステップをさらに実行させ、前記アプリケーションコア構成要素タイプが前記第１構成要素タイプである、請求項１３に記載のコンピュータプログラム。
【請求項１５】
前記プロセス変動がコア間プロセス変動であり、
前記第１構成要素タイプは、分岐予測器、キャッシュ、浮動小数点演算ユニット、バス、フォワーディング回路、レジスタファイル、および命令キューからなるグループから選択される、請求項１３に記載のコンピュータプログラム。
【請求項１６】
前記コンピュータに、
前記第１及び第２コア構成要素のそれぞれの動作状態を決定するステップと、
前記第１及び第２コア構成要素のそれぞれの前記動作状態をブルームフィルタ内に格納するステップと、
をさらに実行させる、請求項１３に記載のコンピュータプログラム。
【請求項１７】
前記第１構成要素タイプは、第１コア構成要素タイプであり、
前記公称値は、第１公称値であり、
前記プロセス変動は、第１プロセス変動であり、
前記コンピュータに、
第３評価を生成するため第２プロセス変動に基づき第３コア構成要素を解析するステップであって、前記第３コア構成要素は第２構成要素タイプを有し、前記第２構成要素タイプは第２公称値を有し、前記第２プロセス変動は、前記第２公称値と異なる第３パフォーマンス値により前記第３コア構成要素を機能させる、前記第３コア構成要素を解析するステップと、
第４評価を生成するため前記第２プロセス変動に基づき第４コア構成要素を解析するステップであって、前記第４コア構成要素は前記第２構成要素タイプを有し、前記第２プロセス変動は、前記第２公称値と異なる第４パフォーマンス値により前記第４コア構成要素を機能させる、前記第４コア構成要素を解析するステップと、
前記第３評価と前記第４評価とに基づき第３コア構成要素を選択するステップと、
前記第３コア構成要素を使用することが可能なスケジューリングされたコア上で実行されるよう前記アプリケーションプログラムをスケジューリングするステップと、
をさらに実行させる、請求項１３に記載のコンピュータプログラム。
【請求項１８】
前記第１及び第３コア構成要素が異なるコア上にある、請求項１７に記載のコンピュータプログラム。
【請求項１９】
各コアが第１及び第２コア構成要素タイプのコア構成要素を利用することが可能な２以上のコアであって、前記コア構成要素は前記コアの機能又は処理を実行する前記コア内の要素である、前記２以上のコアと、
前記２以上のコアに動作接続される非一時的なコンピュータ可読媒体と、
を有するコンピュータシステムであって、
前記非一時的なコンピュータ可読媒体は、当該コンピュータシステムに、
第１評価を生成するためプロセス変動に基づき第１コア構成要素を解析するステップであって、前記第１コア構成要素は第１構成要素タイプを有し、前記第１構成要素タイプは公称値を有し、前記プロセス変動は前記公称値と異なる第１パフォーマンス値により前記第１コア構成要素を機能させる、前記第１コア構成要素を解析するステップと、
第２評価を生成するため前記プロセス変動に基づき第２コア構成要素を解析するステップであって、前記第２コア構成要素は前記第１構成要素タイプを有し、前記プロセス変動は前記公称値と異なる第２パフォーマンス値により前記第２コア構成要素を機能させる、前記第２コア構成要素を解析するステップと、
前記第１評価と前記第２評価とに基づき第１コア構成要素を選択するステップと、
前記第１コア構成要素を使用することによって、スケジューリングされたコア上で実行されるよう前記アプリケーションプログラムをスケジューリングするステップと、
を実行させるためのコンピュータプログラムを有するコンピュータシステム。
【請求項２０】
前記コンピュータプログラムは、当該コンピュータシステムに、
第３評価を生成するため第２プロセス変動に基づき第３コア構成要素を解析するステップであって、前記第３コア構成要素は第２構成要素タイプを有し、前記第２構成要素タイプは第２公称値を有し、前記第２プロセス変動は、前記第２公称値と異なる第３パフォーマンス値により前記第３コア構成要素を機能させる、前記第３コア構成要素を解析するステップと、
第４評価を生成するため前記第２プロセス変動に基づき第４コア構成要素を解析するステップであって、前記第４コア構成要素は前記第２構成要素タイプを有し、前記第２プロセス変動は、前記第２公称値と異なる第４パフォーマンス値により前記第４コア構成要素を機能させる、前記第４コア構成要素を解析するステップと、
前記第３評価と前記第４評価とに基づき第３コア構成要素を選択するステップと、
前記第３コア構成要素を使用することが可能なスケジューリングされたコア上で実行されるよう前記アプリケーションプログラムをスケジューリングするステップと、
をさらに実行させる、請求項１９に記載のコンピュータシステム。
【請求項２１】
前記第１及び第２コア構成要素を解析するステップが、前記第１及び第２コア構成要素の電力効率に基づいて、前記第１及び第２コア構成要素のそれぞれをランク付けするステップを含む、請求項１に記載の方法。
【請求項２２】
前記スケジューリングされたコア上で実行される前記アプリケーションプログラムをスケジューリングするステップは、前記スケジューリングされたコアに関する前記第１コア構成要素を利用するため前記アプリケーションプログラムをスケジューリングするステップを有する、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、以下の同時継続出願、すなわち、２００９年７月２３日に出願された「Ｔｈｒｅａｄ  Ｔｈｒｏｔｔｌｉｎｇ」という表題の出願番号第１２／５０７，９５２号に関する。
【背景技術】
【０００２】
集積回路技術が高まり続けるにつれて、プロセス変動、すなわち、その公称仕様からのプロセスパラメータの逸脱は、アーキテクチャレベルおよびシステムレベルで無視できない問題になっている。実際に、変動は、チップにおける漏れ電力消費の増大およびプロセッサ周波数改善の制限など、重大な影響を有する［１］。
【０００３】
チップマルチプロセッサ（ＣＭＰ）システム、またはＣＭＰシステム内の構成要素の関連で、現在の技術および近未来の技術におけるダイ内プロセス変動は、チップ内の個々のコアをそれらのコアが消費し得る電力量およびそれらのコアがサポートし得る最大周波数の点で実質的に異ならせる可能性がある。他の箇所で報告されているこの影響［３］は、大型のＣＭＰシステムを均一システムと考えることはもはや正しくないことを示唆している。
【発明の概要】
【課題を解決するための手段】
【０００４】
第１の態様では、本開示は、一般に、プロセス変動に関して第１のコア構成要素タイプの第１の複数のコア構成要素を解析すること、それらの第１の複数のコア構成要素を解析することに基づいて、それらの第１の複数のコア構成要素から第１の最適なコア構成要素を選択すること、その第１の最適なコア構成要素上で実行するように、あるアプリケーションプログラムをスケジューリングすることを含む、複数のコアを有するコンピュータシステム内で実行しているアプリケーションプログラムをスケジューリングするための方法を説明する。
【０００５】
第２の態様では、本開示は、一般に、複数のコアを有するコンピュータシステム内で実行しているアプリケーションプログラムをスケジューリングするために、コンピュータ可読媒体内で符号化されたソフトウェアを有するコンピュータプログラム製品を説明する。このソフトウェアは、実行されたとき、プロセス変動に関して第１のコア構成要素タイプの第１の複数のコア構成要素を解析すること、それらの第１の複数のコア構成要素を解析することに基づいて、第１の複数のコア構成要素から第１の最適なコア構成要素を選択すること、その第１の最適なコア構成要素上で実行するように、あるアプリケーションプログラムをスケジューリングすることを行うように動作可能な命令を含む。
【０００６】
第３の態様では、本開示は、一般に、複数のコアと、それらの複数のコアに動作可能に結合されたコンピュータ可読媒体とを有するコンピュータシステムを説明する。複数のコアのそれぞれは、第１のコア構成要素タイプおよび第２のコア構成要素タイプのコア構成要素を含む。このコンピュータ可読媒体は、コンピュータシステムによって実行されたとき、プロセス変動に関して第１のコア構成要素タイプの第１の複数のコア構成要素を解析し、その第一１の複数のコア構成要素を解析することに基づいて、第１の複数のコア構成要素から第１の最適なコア構成要素を選択し、その第１の最適なコア構成要素上で実行するようにそのアプリケーションプログラムをスケジューリングするようにそのコンピュータシステムを構成するコンピュータ実行可能命令を含む。
【０００７】
前述の要約は、単に例示的であり、決して限定的であることが意図されない。上で説明された例示的な態様、実施形態、および特徴に加えて、さらなる態様、実施形態、および特徴は、図面および以下の発明を実施するための形態を参照することによって明らかになるであろう。
【０００８】
本開示は、以下の図面と共に、以下の詳細および添付の特許請求の範囲からよりよく理解されよう。これらの図面内の構成要素は、原寸に比例しているとは限らず、代わりに、開示される主題の原理を例示することに重点が置かれている。これらの図面は本開示によるいくつかの実施形態だけを示し、したがって、その範囲を限定すると見なされないことを理解し、本開示は、添付の図面の使用により、追加の特異性および詳細を用いて説明される。
【図面の簡単な説明】
【０００９】
【図１】本開示の少なくともいくつかの実施形態によるコンピュータシステムを例示する図である。
【図２】図２Ａおよび図２Ｂのマルチプロセッサのそれぞれのコアの詳細図を含む、本開示の少なくともいくつかの実施形態に従ってオペレーティングシステムによって実行されているアプリケーションプログラムを例示する図である。
【図３】本開示の少なくともいくつかの実施形態に従ってメモリコントローラに送信される要求を発行するスレッドに分割されているアプリケーションプログラムの概略図である。
【図４】本開示の少なくとも本開示の実施形態に従って構成された流れ図である。
【発明を実施するための形態】
【００１０】
以下の説明は、特許請求される主題の十分な理解をもたらすために、特定の詳細と共に様々な例を記載する。しかし、特許請求される主題は、本明細書で開示される特定の詳細のうちのいくつかまたはより多くの当該詳細なしに実行可能である点を当業者は理解されよう。さらに、状況によっては、よく知られている方法、手順、システム、構成要素、および／または回路は、特許請求される主題を不必要にあいまいにすることを回避するために、詳しく説明されていない。以下の詳細な説明では、その説明の一部を形成する添付の図面が参照される。図面では、別段文脈によって示されない限り、類似の符号は、通常、類似の構成要素を識別する。発明を実施するための形態、図面、および特許請求の範囲において説明される例示的な実施形態は、限定的なものとしない。本明細書で提示される主題の趣旨または範囲から逸脱せずに、その他の実施形態を利用することが可能であり、ここに提示される主題の趣旨および範囲から逸脱せずに、その他の変更を行うことも可能である。本明細書で一般に説明され、図面において例示される本開示の態様は、そのすべてが明示的に企図され、本開示の一部である幅広い異なる構成で構成、置換、組合せ、および設計され得る点を容易に理解されよう。
【００１１】
チップ内プロセス変動を考慮する間にスレッドを知的にスケジューリングすることは有益である。しかし、チップ内のコアの数が増大するにつれて、どのコアが所与のスレッドを効果的に実行することになるかを決定することは複雑な任務になる。
【００１２】
ここで企図されるように、ダイ内プロセス変動は、ＣＭＰシステム内の個々のコアを消費される静的電力とサポートされる最大周波数の両方の点で異ならせる可能性がある。同様に、ダイ内プロセス変動は、ＣＭＰシステム内の個々のコア内の構成要素を消費される静的電力とサポートされる最大周波数の両方の点で異ならせる可能性がある。この環境において、アプリケーションをスケジューリングするとき、またはアプリケーションからのスレッドをスケジューリングするときに、変動の影響を無視することは最適以下であり得る。
【００１３】
ダイ内プロセス変動により、コア構成要素として知られている個々のコア内の構成要素は、故障する、または最適以下のパフォーマンスをもたらす可能性がある。コア構成要素は、例えば、分岐予測器、キャッシュ、浮動小数点演算ユニット、メモリバスなどの特定のタイプのバス、パイプライン設計において使用されるフォワーディング回路（ｆｏｒｗａｒｄｉｎｇ  ｃｉｒｃｕｉｔ）、レジスタファイル、または命令キューを含むことが可能である。コア構成要素が、故障する、または最適以下のパフォーマンスをもたらす場合、これはＣＭＰシステムのパフォーマンスを減速させる可能性がある。
【００１４】
これらの環境において、ダイ内プロセス変動の影響を無視することは、結果として、ＣＭＰシステム全体の最適以下のパフォーマンスをもたらす可能性がある。ある種のコア内のダイ内プロセス変動の影響を決定する際に使用できるいくつかのハードウェア構成要素が利用可能な場合がある。実際に、コアの電力不均一を測定および管理するために、ＩｎｔｅｌのＦｏｘｔｏｎ技術［４］のオンチップ電力モニタおよびオンチップ電力コントローラなど、洗練されたオンチップ電力モニタおよびオンチップ電力コントローラを使用することが可能である。さらに、コアの周波数の不均一性を活用するために、ＡＭＤのＱｕａｄ−Ｃｏｒｅ  Ｏｐｔｅｒｏｎ［２］におけるように、複数のオンチップ周波数領域をサポートして、それぞれのコアの周波数を独立して変更する能力を使用することが可能である。
【００１５】
結果として、本開示は、電力を節約して、スループットを改善するために、ＣＭＰシステム内またはＣＭＰシステム内の様々なコア構成要素内のダイ内プロセス変動を認識して、アプリケーションもしくはアプリケーション内のスレッドをスケジューリングすることが有利であり得ることを確認する。それぞれの個々のコアの異なる電力特性および周波数特性を考慮に入れて、または特定の１つもしくは複数のコア内のコア構成要素に関するダイ内プロセス変動を考慮に入れて、変動認識様式でアプリケーションをスケジューリングすることによって、または特定の１つもしくは複数のコア内のコア構成要素に関するダイ内プロセス変動を考慮に入れることによって、電力のかなりの節約またはスループットのかなりの増大が達成可能であり得る。
【００１６】
図１は、本開示の少なくともいくつかの実施形態に従って構成されたコンピュータシステムを例示する。図１は、プロセッサ１１０と、メモリ１２０と、１つまたは複数のドライブ１３０とを含むコンピュータ１００を例示する。ドライブ１３０およびその関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータの記憶装置をコンピュータ１００に提供することが可能である。ドライブ１３０は、オペレーティングシステム１４０と、アプリケーションプログラム１５０と、プログラムモジュール１６０と、データベース１８０とを含むことが可能である。オペレーティングシステム１４０および／またはアプリケーションプログラム１５０は、例えば、コンピュータ１００に図４に指定される機能および／または動作を実行させるためのプログラム命令を含むことが可能である。コンピュータ１００は、それを介してユーザがコマンドおよびデータを入力できるユーザ入力デバイス１９０を含むことが可能である。入力デバイスは、電子デジタイザと、マイクロフォンと、キーボードと、一般に、マウス、トラックボールまたはタッチパッドと呼ばれるポインティングデバイスとを含むことが可能である。その他の入力デバイスは、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナなどを含むことが可能である。
【００１７】
これらの入力デバイスおよびその他の入力デバイスは、システムバスに結合可能なユーザ入力インターフェースを介してプロセッサ１１０に結合可能であるか、あるいは当該入力デバイスは、パラレルポート、ゲームポート、もしくはユニバーサルシリアルバス（ＵＳＢ）など、その他のインターフェースまたはバス構造によって接続可能である。コンピュータ１００は、出力周辺インターフェース１９４などを介して接続可能なスピーカ、プリンタ、またはディスプレイ２０２など、周辺出力デバイスを含むことが可能である。
【００１８】
コンピュータ１００は、ネットワークインターフェース１９６に接続された遠隔コンピュータなど、１つまたは複数のコンピュータに対する論理接続を使用して、ネットワーキング環境で動作してよい。この遠隔コンピュータは、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の共通ネットワークノードであってよく、コンピュータ１００に関連して上で説明された要素の多くまたはすべてを含むことが可能である。
【００１９】
ネットワーキング環境は、事務所、企業広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、イントラネット、およびインターネットを含むことが可能である。一例では、コンピュータ１００は、そこからデータが移動されている送信元機械であってよく、遠隔コンピュータは、宛先機械を備えてよく、またはその逆であってもよい。送信元ソース機械および宛先機械は、ネットワーク１０８または任意の他の手段によって接続できず、代わりに、データは、送信元プラットフォームによって書き込まれて、１つまたは複数の宛先プラットフォームによって読み取られることが可能な任意の媒体を経由して移動可能である。ＬＡＮまたはＷＬＡＮのネットワーキング環境では、コンピュータ１００は、ネットワークインターフェース１９６もしくはアダプタを介して、ＬＡＮまたはＷＡＮに接続可能である。ＷＡＮネットワーキング環境では、コンピュータ１００は、モデム、またはインターネットもしくはネットワーク１０８など、ＷＡＮ上で通信を確立するためのその他の手段を含むことが可能である。コンピュータ同士の間で通信リンクを確立するその他の手段を使用することも可能である。
【００２０】
コンピュータ周辺装置は、システムバスを介してコンピュータ１００のプロセッサ１１０およびメモリ１２０に結合された任意のデバイスを含むことが可能である。コンピュータ周辺装置は、ディスプレイ２０２、プリンタ、またはスピーカを含む出力周辺インターフェースと、ドライブ１３０と、キーボード、マウス、およびマイクロフォンなどのユーザ入力デバイス１９０と、ネットワークインターフェース１９６とに接続された任意のデバイスを含むことが可能である。コンピュータ周辺装置の構成要素は、電力を使用することが可能であり、スピーカ、発光ダイオードなどの照明要素、またはディスプレイに照明を提供するために使用されるバックライト、ＬＣＤ、ＬＥＤ、ＯＬＥＯ、ＣＲＴ、もしくはプラズマディスプレイなどのディスプレイ要素、または中央処理装置（ＣＰＵ）、グラフィック処理ユニット（ＧＰＵ）、メモリなどの半導体チップなど、任意のデバイスであってよい、コンピュータ周辺装置内の任意のデバイスを含むことが可能である。一実施形態によれば、プロセッサ１１０および／またはプログラムモジュール１６０が、ユーザ経験に対する不利益を最低限に抑えながら、電力低減および電力保存を実行できるように、コンピュータ１００をネットワーキング環境において接続することが可能である。
【００２１】
いくつかの例では、コンピュータシステム内で実行しているアプリケーションプログラムをスケジューリングするための方法が説明される。このコンピュータシステムは、第１のコアおよび第２のコアを有するマルチプロセッサと、アプリケーションプログラム内で実行しているオペレーティングシステムとを含むことが可能である。第１のコアは、第１のコア構成要素タイプならびに第２のコア構成要素タイプの第１のコア構成要素および第２のコア構成要素をそれぞれ有することが可能である。第２のコアは、第１のコア構成要素タイプならびに第２のコア構成要素タイプの第３のコア構成要素および第４のコア構成要素をそれぞれ有することが可能である。この方法は、任意のダイ内プロセス変動に関して第１のコア構成要素、第２のコア構成要素、第３のコア構成要素、および第４のコア構成要素を解析すること、それらの第１のコア構成要素、第２のコア構成要素、第３のコア構成要素、および第４のコア構成要素の動作状態を決定することを含むことが可能である。この方法は、それぞれの構成要素タイプに関して最適なコア構成要素を選択すること、そのアプリケーションプログラムによってどのコア構成要素タイプが使用されるかを決定することを含むことが可能である。この方法は、アプリケーションプログラムによって使用されるコア構成要素タイプに関して最適なコア構成要素を有するコア上で実行するように、そのアプリケーションプログラムをスケジューリングすることを含むことが可能である。
【００２２】
いくつかのその他の例では、コンピュータシステム内で実行している複数のアプリケーションプログラムをスケジューリングするための方法が説明される。このコンピュータシステムは、第１のコアおよび第２のコアを有するマルチプロセッサと、アプリケーションプログラムを実行するオペレーティングシステムとを含むことが可能である。第１のコアは、第１のコア構成要素タイプならびに第２コア構成要素タイプの第１のコア構成要素および第２のコア構成要素をそれぞれ有することが可能である。第２のコアは、第１のコア構成要素タイプならびに第２のコア構成要素タイプの第３のコア要素および第４のコア要素をそれぞれ有することが可能である。この方法は、第１のコア構成要素、第２のコア構成要素、第３のコア構成要素、および第４のコア構成要素の動作状態を決定すること、それぞれの構成要素タイプに関して最適なコア構成要素を選択することを含むことが可能である。この方法は、それぞれのアプリケーションプログラムによってどのコア構成要素タイプが使用されるかを決定すること、それぞれのアプリケーションプログラムによって使用されるコア構成要素タイプに関して最適なコア構成要素を有するコア上で実行するように、それぞれのアプリケーションプログラムをスケジューリングすることを含むことが可能である。
【００２３】
さらにその他の例では、コンピュータシステム内で実行しているアプリケーションプログラムをスケジューリングするための方法が説明される。このコンピュータシステムは、第１のコアおよび第２のコアと、アプリケーションプログラム上で実行しているオペレーティングシステムとを含むことが可能である。第１のコアは、第１のコア構成要素タイプならびに第２のコア構成要素タイプの第１のコア構成要素および第２のコア構成要素をそれぞれ含むことが可能である。第２のコアは、第１のコア構成要素タイプならびに第２のコア構成要素タイプの第３のコア構成要素および第４のコア構成要素をそれぞれ含むことが可能である。この方法は、第１のコア構成要素、第２のコア構成要素、第３のコア構成要素、および第４のコア構成要素の動作状態を決定すること、それぞれのアプリケーションプログラムによってどのコア構成要素タイプが使用されるかを決定することを含むことが可能である。この方法は、そのアプリケーションプログラムによって使用されるコア構成要素タイプに関して最適なコア構成要素を有するコア上で実行するように、そのアプリケーションプログラムをスケジューリングすることを含むことが可能である。
【００２４】
図２は、本開示の少なくともいくつかの実施形態に従ってオペレーティングシステムによって実行されているアプリケーションプログラムを例示する。図２に示されるように、オペレーティングシステム１４０は、ドライブ１３０からアプリケーションプログラム１５０を実行することができる。オペレーティングシステム１４０および／またはアプリケーションプログラム１５０は、例えば、コンピュータ１００に図４に指定された機能および／または動作を実行させるためのプログラム命令を含むことが可能である。アプリケーションプログラム１５０は、マイクロプロセッサ１１１内のオペレーティングシステム１４０によって実行可能な任意のアプリケーション、プログラム、プログラムの部分、またはスレッドであってよい。アプリケーションプログラム１５０は、メモリコントローラ２１０を使用して、データ２３０をメモリ１２０内にロードすることが可能であり、メモリ１２０からデータ２３０にアクセスする。アプリケーションプログラム１５０は、１つまたは複数の要求２２６を使用して、メモリ１２０のメモリバンク１２２内にデータ２３０をロードし、メモリ１２０のメモリバンク１２２からデータ２３０にアクセスするなどのタスクを達成するために、スレッド２２０と呼ばれる複数のサブアプリケーションを実行することが可能である。スレッド２２０は、アプリケーションプログラム１５０によって実行可能である。アプリケーションプログラム１５０は、タスクの実行を、アプリケーションプログラムがそのタスクを達成するために必要と見なすだけの数のスレッド２２０に分割することが可能である。例えば、アプリケーションプログラム１５０が複数のページを有する文書を用いたワード処理プログラムであり、アプリケーションプログラム１５０がその文書のそれぞれのページのスペルチェックのタスクを達成するように構成される場合、アプリケーションプログラム１５０は、それぞれのスレッド２２０がその文書の一部をスペルチェックできるように、文書のスペルチェックのタスクを複数のスレッド２２０に分割することが可能である。それぞれのスレッド２２０は、実行のためにマルチプロセッサ１１１に送信可能である。マルチプロセッサ１１１内で実行されたとき、それぞれのスレッド２２０は、メモリ１２０内でデータ２３０に関する要求２２６を作成することが可能である。要求２２６は、マルチプロセッサ１１１が効率的に動作するように要求２２６を組織できるメモリコントローラ２１０に送信可能である。
【００２５】
いくつかの実施形態では、図２に示されるように、マルチプロセッサ１１１は、２つ以上のスレッド２２０を同時に実行できるプロセッサを含むことが可能である。マルチプロセッサ１１１は、コア４１２および５１２として知られる複数のプロセッサを含むことが可能であり、またはマルチスレッドプロセッサとしても知られている、複数のスレッド２２０を同時に実行できる単一のプロセッサ（４１２もしくは５１２のうちの１つだけ）を含むことも可能である。図２は、２つのコア４１２および５１２を含む例示的なマルチプロセッサ１１１を示すが、任意の特定数のコアに限定されない。「コア」という用語は、本明細書において、単一のスレッドを処理することが可能であり、単一のスレッドを処理できるプロセッサまたはプロセッサ内の部分を指す場合がある任意のデバイスを指すために使用される。マルチスレッドプロセッサは、複数のコアを有するプロセッサと呼ばれる場合がある。複数のプロセッサを有するコンピュータ１００は、本明細書において、複数のコアを有するコンピュータ１００と呼ばれる場合がある。
【００２６】
図２Ａおよび図２Ｂは、それぞれ、コア４１２および５１２の詳細を示す、マルチプロセッサ１１１の詳細図を含む。示されるように、それぞれのコア４１２または５１２は、コアに関するセット機能またはセット動作を実行できる、それぞれのコア内の要素であり得るコア構成要素４１３または５１３を含むことが可能である。例えば、分岐予測器（４１５もしく５１５）、キャッシュ（４１７もしくは５１７）、浮動小数点演算ユニット（４１９もしくは５１９）、メモリバスなどの特定のタイプのバス（４２１もしくは５２１）、またはパイプライン設計において使用されるフォワーディング回路（４２３もしくは５２３）、レジスタ（４２５もしくは５２５）、または命令キュー（４２７もしくは５２７）を含み得る、コア構成要素タイプとしても知られる様々なタイプのコア構成要素４１３もしくは５１３が存在し得る。コア構成要素４１３または５１３が、故障する、または最適以下のパフォーマンスをもたらす場合、これはコアのパフォーマンスを減速させ、最終的に、マルチプロセッサ１１１のパフォーマンスを減速させる可能性がある。さらに、コア４１２は、例えば、コア５１２の分岐予測器５１５よりもより早く実行できる分岐予測器４１５を有することが可能である。かかる例では、分岐予測器の多用を必要とするアプリケーションプログラム１５０は、第２のコア５１２よりも第１のコア４１２上でより良好に実行することが可能である。
【００２７】
図３は、本開示の少なくともいくつかの実施形態に従って、メモリコントローラに送信される要求を発行するスレッドに分割されているアプリケーションプログラムの概略図を示す。図３に示されるように、アプリケーション１５０は、複数のスレッド２２０ａ〜２２０ｎに分割可能であり、この場合、ｎはスレッド２２０の数を表すことが可能であり、それぞれのスレッドは、アプリケーション１５０に関するタスクを実行することが可能であり、例えば、図２のマルチプロセッサ１１１上で実行可能である。このマルチプロセッサは、アプリケーションプログラム１５０から複数のスレッド２２０ａ〜２２０ｎを個々にまたは同時に受信および実行するように構成され得る。マルチプロセッサ上で実行されるそれぞれのスレッド２２０は、それぞれの他のスレッド２２０から独立して実行可能であり、メモリ１２０内に格納されたデータ２３０に関して複数の要求２２６ａ１〜２２６ｎｏ
を発行することが可能であり、この場合、第１の指数（ａ．．．ｎ）は、要求２２６に関連するスレッド２２０を表し、第２の指数（１．．．ｏ）は、特定のスレッド２２０に関連する要求２２６の数を表す。
【００２８】
図２Ａおよび図２Ｂに示されるそれぞれのコア構成要素４１３または５１３は、製造されたとき、ある程度のプロセス変動を受ける場合があり、これにより、コア構成要素は、故障する、または最適以下のパフォーマンスをもたらす可能性がある。プロセス変動は、その公称値を超える、半導体処理関係のパラメータ（例えば、ドーピング密度、移動度、抵抗、容量、インダクタンス、利得、速度、帯域幅、スレッド電圧、寄生効果、漏れなどに関係するパラメータ）の変化を指す場合があり、例えば、小さなフィーチャサイズでの製造が困難であることに起因する可能性がある。モデル形成および解析のために、変動は、ダイ間（Ｄ２Ｄ）変動（または、コア間変動）とダイ内（ＷＩＤ）変動（または、コア内変動）とに分類することができる。ＷＩＤプロセス変動は、システム効果とランダム効果とにさらに分類することができる。ＷＩＤプロセス変動は、コンピュータ内の電力および周波数におけるコア間変動に直接的な影響を有する可能性がある。
【００２９】
ＷＩＤプロセス変動によって影響を受ける可能性のある例示的な半導体処理パラメータは、例えば、しきい値電圧（Ｖｔｈ）および実効ゲート長（Ｌｅｆｆ）を含む。これらの例示的なパラメータは、トランジスタのスイッチング速度および漏れ電力に影響を及ぼす可能性がある。より高いＶｔｈおよびＬｅｆｆ変動は、チップ全域のトランジスタ速度（または、帯域幅）の高い変動に対応し得る。プロセッサ内またはコア構成要素内のより遅いトランジスタは、プロセッサの周波数またはプロセッサ内のコア構成要素のパフォーマンスを決定する場合があるため、これは、
結果として、より遅いプロセッサ（もしくは、マルチプロセッサ）またはより遅いコア構成要素をもたらす可能性がある。マルチプロセッサ１１１において、異なるコアは異なる周波数をサポートすることが可能であり、コア内の異なるコア構成要素は様々なパフォーマンスを有する場合がある。また、Ｖｔｈが変化するにつれて、プロセッサまたはマルチプロセッサの全域でトランジスタ漏れは異なる可能性がある。低Ｖｔｈトランジスタは、高Ｖｔｈトランジスタが節約するよりもより多くの電力を消費する可能性がある。結果として、変動により、プロセッサおよびマルチプロセッサは、実質的により多くの漏れ電力を消費する可能性がある。マルチプロセッサにおいて、異なるコアは、可変量のトランジスタ漏れを有する場合がある。
【００３０】
システム変動をモデル形成するために、プロセッサもしくはマルチプロセッサ、またはプロセッサ内もしくはマルチプロセッサ内の個々のコア構成要素を格子に分割することが可能である。μ＝０および標準偏差σｓｙｓを有する正規分布を有することが仮定され得る、パラメータの体系的構成要素の１つの値をそれぞれの格子点に与えることができる。システム変動は空間相関を特徴とする可能性があり、その結果、チップ上の隣接する区域は、およそ同じシステム構成要素値を有する可能性がある。
【００３１】
ランダム変動は、個々のトランジスタのレベルで発生する可能性があり、ランダム変動は、μ＝０および標準偏差σｒａｎを有する正規分布を用いて解析的にモデル形成可能である。ランダム構成要素およびシステム構成要素は、通常、分散されて、独立している可能性があるため、それらの効果は加法的であり得る。
【００３２】
プロセス変動を伴う環境において、マルチプロセッサ内のそれぞれのプロセッサコアは、異なる量の電力を消費する可能性があり、異なる最大周波数をサポートすることが可能であり、結果として、コアによって、パフォーマンスの点で変動をもたらす。加えて、プロセッサ（または、マルチプロセッサ）コア内のそれぞれのコア構成要素は、異なる量の電力を消費する可能性があり、異なる最大数周波数をサポートすることが可能であり、結果として、コアによって、パフォーマンスの点で変動をもたらす。さらに、ある種のコア構成要素は、完全に故障する、または最適以下の形で実行する場合がある。結果として、故障したコア構成要素または最適以下のパフォーマンスをもたらすコア構成要素を有するコアは、それらのコア構成要素により依存する他のアプリケーションプログラムほど、ある種のアプリケーションプログラムを効率的に実行できない。
【００３３】
様々な説明される実施形態において、変動の影響を受けたマルチプロセッサが不均一システムであった場合と同様に、マルチプロセッサのパフォーマンスを最大化するため、またはマルチプロセッサの電力使用を最小限に抑えるために、図４で説明されたアプリケーションスケジューリングアルゴリズムなど、アプリケーションスケジューリングアルゴリズムを使用して、アプリケーションをスケジューリングすることが可能である。この環境において、２つのハイレベルの設計問題が存在し得る。第１の問題は、マルチプロセッサの異なるコアが同じ周波数（均一周波数）で循環しなければならない可能性があるか否か（不均一周波数）であり得る。第２の問題は、マルチプロセッサのコアの周波数および電圧が動的に変更され得るか（ＤＶＦＳ）否か（ＤＶＦＳなし）であり得る。これらの構成のために、オペレーティングシステムまたはアプリケーションプログラムは、電力を最小限に抑えるために、またはパフォーマンスを最大化するために、アプリケーションスケジューリングおよび電力管理に関する変動認識アプリケーションスケジューリングを含むことが可能である。これらのアプリケーションスケジューリングアルゴリズムは、優先順位、公平性、または未処理（ｓｔａｒｖａｔｉｏｎ）回避など、オペレーティングシステムによって使用され得る他のスケジューリング基準を補完することができる。アプリケーションスケジューリングアルゴリズムに関するさらなる情報は、本出願に一致しない場合を除いて、そのすべてが、参照により本明細書に組み込まれている、Ｒａｄｕ  ＴｅｏｄｏｒｅｓｃｕおよびＪｏｓｅｐｈ  Ｔｏｒｒｅｌｌａｓ、「Ｖａｒｉａｔｉｏｎ−Ａｗａｒｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｓｃｈｅｄｕｌｉｎｇ  ａｎｄ  Ｐｏｗｅｒ  Ｍａｎａｇｅｍｅｎｔ  ｆｏｒ  Ｃｈｉｐ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒｓ」、２００８  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＣＡ）、３６３〜３７４ページ、２００８年に見出すことができる。
【００３４】
図４は、本開示の少なくともいくつかの実施形態に従って構成された流れ図を例示する。図４を参照すると、それぞれの個々のコアのパフォーマンスを改善するために、または電力使用特性を最小限に抑えるために、アプリケーションスケジューリングアルゴリズム６００を使用して、オペレーティングシステムによって特定のコア上またはコア構成要素上で変動認識様式で実行するようにアプリケーションプログラムをスケジューリングすることが可能である。アプリケーションスケジューリングアルゴリズム６００は、特定の１つまたは複数のコア内のコア構成要素に関するプロセス変動を考慮に入れることが可能であり、アプリケーションプログラムを動作せるとき、電力の実質的な節約またはスループットの実質的な増大を可能にすることができる。
【００３５】
使用の際、オペレーティングシステムおよび／またはアプリケーションプログラムは、ブロック６０１において、アプリケーションスケジューリングアルゴリズム６００を活動化することが可能であり、アプリケーションスケジューリングアルゴリズム６００は、ブロック６０２において、プロセス変動に関してマルチプロセッサのそれぞれのコア内のコア構成要素を解析するように構成可能である。プロセス変動に関してコア構成要素を解析するとき、アプリケーションスケジューリングアルゴリズム６００は、ブロック６０４において、そのコア構成要素が機能的であるか否かを決定するように構成可能である。そのコア構成要素が機能的であると決定された場合、アプリケーションスケジューリングアルゴリズム６００は、ダイ内プロセス変動および／またはダイ間プロセス変動を検査して、同じタイプの他のコア構成要素と比較したとき、そのコア構成要素がどのくらい良好に機能するかを決定するように構成可能である。一例では、アプリケーションスケジューリングアルゴリズム６００が特定の分岐予測器が機能的であることを決定した場合、アプリケーションスケジューリングアルゴリズム６００は、その分岐予測器のパフォーマンスを他の分岐予測器のパフォーマンスと、または類似の分岐予測器に関する平均動作電圧および／もしくは平均動作周波数など、所定の一連の測定のパフォーマンスと比較することができる。コア構成要素のパフォーマンスを同じタイプの別のコア構成要素のパフォーマンスと比較するとすぐ、アプリケーションスケジューリングアルゴリズム６００は、ブロック６０６において、そのコア構成要素の動作状態を機能的としてまたは非機能的として表示する（例えば、記録する、または格納する）ように構成可能であり、機能的である場合、アプリケーションスケジューリングアルゴリズム６００は、例えば、パフォーマンスまたは電力効率に関して、そのコア構成要素がどのくらい良好に機能するかを評価する（例えば、ランク付けする、または採点する）ように構成可能である。そのコア構成要素がどのくらい良好に機能するかの評価は、１．０から１０．０までなどの基準であってよく、または任意のその他の合理的な基準であってもよい。
【００３６】
それぞれのコア構成要素を表示および評価するとすぐに、アプリケーションスケジューリングアルゴリズム６００は、ブロック６０８において、オペレーティングシステム上で実行しているそれぞれのアプリケーションプログラムによってどのコア構成要素タイプが使用され得るか、またはそれぞれのアプリケーションプログラムに関して、どのコア構成要素タイプが重要であり得るかを決定するように構成可能であり、これはアプリケーションのコンパイルの間に発生し得る。コンパイラは、どの構成要素がそれぞれのアプリケーションまたはスレッドによって使用されるかを記載する情報を生成することが可能である。アルゴリズム６００は、ブロック６１０において、アプリケーションプログラムによって使用されるコア構成要素タイプの少なくとも１つの最適なコア構成要素を有するコア上で実行するようにそれぞれのアプリケーションプログラムをスケジューリングすることが可能である。最適なコア構成要素は、機能的であり得、機能的な動作状態を有し得るコア構成要素であってよい。一例では、最適なコア構成要素は、最高ランキングを有する動作状態を有し得るコア構成要素であってよい。もう１つの例では、最適なコア構成要素は、平均を上回るランキングを有し得るコア構成要素であってよい。一実施形態では、アプリケーションスケジューリングアルゴリズム６００は、アプリケーションプログラムによって使用されるコア構成要素タイプの最適なコア構成要素を有するコア上で実行するように、そのアプリケーションプログラムをスケジューリングすることが可能である。
【００３７】
アプリケーションスケジューリングアルゴリズム６００は、どのアプリケーションプログラムがどのコア上で実行するようにスケジューリングされるかを決定することが可能である。例えば、分岐予測器は１とラベル付することができ、浮動小数点乗算器は２とラベル付することができ、整数乗算器は３とラベル付けすることができるなど、それぞれのコア構成要素をラベル付することが可能である。それぞれのコアに関して、別個のブルームフィルタが存在する可能性があり、それぞれのブルームフィルタは、関連するコアに関して故障しているコア構成要素の（１つまたは複数の）ラベルを格納する。例えば、特定のコアの分岐予測器が故障している場合、１は分岐予測器のラベルであるため、その関連するブルームフィルタは要素１を含むことが可能である。アプリケーション（または、スレッド）がスケジューリングされることになる場合、アプリケーションスケジューリングアルゴリズム６００は、アプリケーション要件と特定のコアの能力との間に一致が存在するかどうかを検査することが可能である。例えば、そのアプリケーションが浮動小数点乗算器を必要とする場合、アプリケーションスケジューリングアルゴリズム６００は、個々のコアのブルームフィルタを検査して、それらのブルームフィルタが（浮動小数点乗算器ラベルに対応する）要素２を含むかどうかを確かめることができる。そのブルームフィルタ表がその要素を含む場合、そのアプリケーションを別のコア上にスケジューリングすることが可能である。そのブルームフィルタ表がその要素を含まない場合、そのコアをそのアプリケーションに関して使用することが可能である。
【００３８】
様々な実施形態では、これらの開示された方法は、コンピュータシステムと共に使用するためのコンピュータプログラム製品として実装可能である。かかる実装形態は、コンピュータ可読媒体（例えば、ディスケット、ＣＤ−ＲＯＭ、ＲＯＭ、もしくは固定ディスク）など、有形媒体上に固定されるか、またはモデム、もしくは、媒体上でネットワークに接続された通信アダプタなど、その他のインターフェースデバイスを経由してコンピュータシステムに送信可能な一連のコンピュータ命令を含むことが可能である。この媒体は、有形媒体（例えば、光通信線もしくはアナログ通信線）であってよく、または無線技法（例えば、マイクロ波、赤外線伝送技法もしくはその他の伝送技法）を用いて実装される媒体であってもよい。これらの一連のコンピュータ命令は、このシステムに関して本明細書でこれまで説明された機能性のすべてまたは一部を実施する。当業者は、かかるコンピュータ命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムと共に使用するために、いくつかのプログラミング言語で書込み可能である点を理解されたい。さらに、かかる命令は、半導体、磁気メモリデバイス、光メモリデバイス、またはその他のメモリデバイスなど、任意のメモリデバイス内に格納可能であり、光伝送技術、赤外線伝送技術、マイクロ波伝送技術、またはその他の伝送技術など、任意の通信技術を使用して送信可能である。かかるコンピュータプログラム製品は、（例えば、システムＲＯＭ上もしくは固定ディスク上に）コンピュータシステムを用いて事前にロードされた、印刷文書もしくは電子文書を伴う取出し可能媒体（例えば、シュリンクラップソフトウェア）として供給可能であるか、あるいはネットワーク上でサーバまたは電子掲示板（例えば、インターネットもしくはワールドワイドウェブ）から供給可能であることが予想される。当然、この開示された主題のいくつかの実施形態は、ソフトウェア（例えば、コンピュータプログラム製品）とハードウェアの両方の組合せとして実装可能である。この開示された主題のさらに他の実施形態は、完全にハードウェアとして、または完全にソフトウェア（例えば、コンピュータプログラム製品）として実装される。
【００３９】
本明細書で説明される主題は、時には、異なる他の構成要素内に含まれた異なる構成要素、または異なる他の構成要素に接続された異なる構成要素を例示する。そのような示されたアーキテクチャは単なる例示であり、実際には、同じ機能性を達成する、多くのその他のアーキテクチャが実装可能である点を理解されよう。概念的な意味で、同じ機能性を達成するための構成要素のいずれの構成も、所望される機能性が達成されるように、有効に「関連付けられる」。したがって、特定の機能性を達成するために組み合わされる、本明細書のいずれの２つの構成要素も、アーキテクチャまたは中間構成要素にかかわらず、所望される機能性が達成されるように互いに「関連付けられる」と見なすことができる。同様に、そのように関連付けられたいずれの２つの構成要素も、所望される機能性を達成するために、互いに「動作可能に接続されている」または「動作可能に結合されている」と見なすこともでき、そのように関連付けられているいずれの２つの構成要素も、所望される機能性を達成するために、互いに「動作可能に結合続可能である」と見なすこともできる。動作可能に結合可能な特定の例は、物理的に噛み合わせ可能な（ｍａｔｅａｂｌｅ）構成要素および／もしくは物理的に相互作用する構成要素、ならびに／または無線で相互作用可能な構成要素および／もしくは無線で相互作用する構成要素、ならびに／または論理的に相互作用する構成要素および／もしくは論理的に相互作用可能な構成要素を含むが、これらに限定されない。
【００４０】
本明細書における実質的に任意の複数用語および／または単数用語の使用に関して、当業者は、文脈および／もしくは応用例に応じて、複数から単数にかつ／または単数から複数に変換することが可能である。分かりやすくするために、本明細書において、様々な単数／複数の置換が明示的に記載される場合がある。
【００４１】
概して、本明細書、および、特に添付の特許請求の範囲（例えば、添付の特許請求の範囲の本文）において使用される用語は、一般に、「開放的な」用語として意図される（例えば、「含んでいる」という用語は、「含むが、それに限定されない」と解釈されるべきであり、「有する」という用語は、「少なくとも含む」と解釈されるべきであり、「含む」という用語は、「含むが、それに限定されない」と解釈されるべきである、など）ことを理解されよう。当業者は、特定の数の導入される請求項の列挙が意図される場合、かかる意図は、特許請求の範囲内で明示的に列挙されることになり、かかる列挙がない場合、かかる意図は存在しない点をさらに理解されよう。例えば、理解の支援として、以下の特許請求の範囲は、請求項の列挙を導入するために、「少なくとも１つの」および「１つまたは複数の」という導入句の使用を含む場合がある。しかし、かかる句の使用は、同じ請求項が、導入句「１つもしくは複数の」または「少なくとも１つの」、ならびに「ａ」または「ａｎ」などの不定冠詞を含むときですら、不定冠詞「ａ」または「ａｎ」による請求項の列挙の導入が、そのように導入された請求項の列挙を含む任意の特定の請求項を１つのかかる列挙だけを含む発明に限定することを意味すると解釈されるべきではなく（例えば、「ａ」および／または「ａｎ」は、典型的には、「少なくとも１つの」または「１つもしくは複数の」を意味すると解釈されるべきである）、同じことは、請求項の列挙を導入するために使用される定冠詞の使用に関しても当てはまる。加えて、特定の数の導入された請求項の列挙が明示的に列挙されているときですら、当業者は、かかる列挙は、一般に、少なくとも列挙された数を意味する（例えば、修飾語句を伴わない「２つの列挙」の単なる列挙は、一般に、少なくとも２つの列挙、または２つ以上の列挙を意味する）と解釈されるべきである点を理解されよう。さらに、「Ａ、Ｂ、およびＣのうちの少なくとも１つの、など」に類似する表現方法が使用される場合、一般に、そのような構造は、当業者がその表現を理解するであろう意味が意図される（例えば、「Ａ、Ｂ、およびＣのうちの少なくとも１つを有するシステム」は、Ａだけを有するシステム、Ｂだけを有するシステム、Ｃだけを有するシステム、ＡとＢとを共に有するシステム、ＡとＣとを共に有するシステム、ＢとＣとを共に有するシステム、および／またはＡと、Ｂと、Ｃとを共に有するシステムなどを含むことになるが、これらに限定されない）。「Ａ、Ｂ、またはＣのうちの少なくとも１つ、など」に類似する表現方法が使用される場合、一般に、そのような構造は、当業者がその表現を理解するであろう意味が意図される（例えば、「Ａ、Ｂ、またはＣのうちの少なくとも１つを有するシステム」は、Ａだけを有するシステム、Ｂだけを有するシステム、Ｃだけを有するシステム、ＡとＢとを共に有するシステム、ＡとＣとを共に有するシステム、ＢとＣとを共に有するシステム、および／またはＡと、ＢとＣとを共に有するシステムなどを含むことになるが、これらに限定されない）。当業者は、明細書内であれ、特許請求の範囲内であれ、または図面内であれ、２つ以上の代替用語を提示する実質的にいかなる離接語および／または離接句も、それらの用語のうちの１つ、それらの用語のどちらか、またはそれらの用語の両方を含む可能性を企図すると理解されるべきである点をさらに理解されよう。例えば、「ＡまたはＢ」という成句は、「Ａ」、もしくは「Ｂ」、または「ＡおよびＢ」の可能性を含むと理解されるになる。
【００４２】
この開示された主題の様々な実施形態が説明されているが、本開示の範囲内でその他の実施形態および実装形態が可能である点は当業者に明らかであろう。したがって、この開示された主題は、添付の特許請求の範囲およびそれらの均等物の観点からを除いて、限定されるべきではない。
【００４３】
参考文献
【００４４】
［１］Ｓ．Ｂｏｒｋａｒ、Ｔ．Ｋａｒｎｉｋ、Ｓ．Ｎａｒｅｎｄｒａ、Ｊ．Ｔｓｃｈａｎｚ、Ａ．Ｋｅｓｈａｖａｒｚｉ、およびＶ．Ｄｅ、「Ｐａｒａｍｅｔｅｒ  ｖａｒｉａｔｉｏｎｓ  ａｎｄ  ｉｍｐａｃｔ  ｏｎ  ｃｉｒｃｕｉｔｓ  ａｎｄ  ｍｉｃｒｏａｒｃｈｉｔｅｃｔｕｒｅ」、Ｄｅｓｉｇｎ  Ａｕｔｏｍａｔｉｏｎ  Ｃｏｎｆｅｒｅｎｃｅ、２００３年６月。
【００４５】
［２］Ｊ．Ｄｏｒｓｅｙ、Ｓ．Ｓｅａｒｌｅｓ、Ｍ．Ｃｉｒａｕｌａ、Ｓ．Ｊｏｈｎｓｏｎ、Ｎ．Ｂｕｊａｎｏｓ、Ｄ．Ｗｕ、Ｍ．Ｂｒａｇａｎｚａ、Ｓ．Ｍｅｙｅｒｓ、Ｅ．Ｆａｎｇ、およびＲ．Ｋｕｍａｒ、「Ａｎ  ｉｎｔｅｇｒａｔｅｄ  ｑｕａｄｃｏｒｅ  Ｏｐｔｅｒｏｎ  ｐｒｏｃｅｓｓｏｒ」、Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｃｉｒｃｕｉｔｓ  Ｃｏｎｆｅｒｅｎｃｅ、２００７年２月。
【００４６】
［３］Ｅ．Ｈｕｍｅｎａｙ、Ｄ．Ｔａｒｊａｎ、およびＫ．Ｓｋａｄｒｏｎ、「Ｔｈｅ  ｉｍｐａｃｔ  ｏｆ  ｓｙｓｔｅｍａｔｉｃ  ｐｒｏｃｅｓｓ  ｖａｒｉａｔｉｏｎｓ  ｏｎ  ｓｙｍｍｅｔｒｉｃａｌ  ｐｅｒｆｏｒｍａｎｃｅ  ｉｎ  ｃｈｉｐ  ｍｕｌｔｉｐｒｏｃｅｓｓｏｒｓ」、Ｄｅｓｉｇｎ、Ａｕｔｏｍａｔｉｏｎ  ａｎｄ  Ｔｅｓｔ  ｉｎ  Ｅｕｒｏｐｅ、２００７年４月。
【００４７】
［４］Ｒ．ＭｃＧｏｗｅｎ、Ｃ．Ａ．Ｐｏｉｒｉｅｒ、Ｃ．Ｂｏｓｔａｋ、Ｊ．Ｉｇｎｏｗｓｋｉ、Ｍ．Ｍｉｌｌｉｃａｎ、Ｗ．Ｈ．Ｐａｒｋｓ、およびＳ．Ｎａｆｆｚｉｇｅｒ、「Ｐｏｗｅｒ  ａｎｄ  ｔｅｍｐｅｒａｔｕｒｅ  ｃｏｎｔｒｏｌ  ｏｎ  ａ  ９０ｎｍ  Ｉｔａｎｉｕｍ  ｆａｍｉｌｙ  ｐｒｏｃｅｓｓｏｒ」、Ｊｏｕｒｎａｌ  ｏｆ  Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｃｉｒｃｕｉｔｓ、２００６年１月。
【図１】
0005526420.tif 000002
【図２】
0005526420.tif 000003
【図２Ａ】
0005526420.tif 000004
【図２Ｂ】
0005526420.tif 000005
【図３】
0005526420.tif 000006
【図４】
0005526420.tif 000007