(57)【特許請求の範囲】
【請求項１】
第１のプロセッサコアと第２のプロセッサコアとを有するマルチコアプロセッサのための熱管理方法であって、
スケジューリング間隔の第１の部分の間に前記第１のプロセッサコアについての第１の温度読取値を取得するステップと、
前記スケジューリング間隔の第２の部分の間に前記第２のプロセッサコアについての第２の温度読取値を取得するステップと、
前記スケジューリング間隔の間に取得された前記第１の温度読取値と前記第２の温度読取値との比較に基づいて、前記第１のプロセッサコアに実行されるべき第１のタスクを割り当てるステップと、
前記第１のタスクと関連付けられる第１の作業負荷のレベルを判定し、判定されたレベルにさらに基づいて前記第１のタスクを割り当てるステップと、
前記第１の温度読取値と前記第２の温度読取値との第１の温度差が閾値を超えると判定されると、前記第１のタスクを中断し、実行のために前記第１のタスクを前記第２のプロセッサコアに再割り当てするステップと、
を含む方法。
【請求項２】
前記スケジューリング間隔の前記第１の部分と前記スケジューリング間隔の前記第２の部分とが、前記スケジューリング間隔の実質的に同じ部分、前記スケジューリング間隔の重なり合う部分、または前記スケジューリング間隔の異なる部分のいずれかである請求項１に記載の方法。
【請求項３】
前記第１の温度読取値が前記第２の温度読取値よりも低い請求項１に記載の方法。
【請求項４】
前記第１の温度が前記第２の温度読取値より高いと判定されると、前記第１のタスクを中断し、実行のために前記第１のタスクを前記第２のプロセッサコアに再割り当てするステップ
をさらに含む請求項３に記載の方法。
【請求項５】
前記第１の温度読取値が第１の時刻に収集される第１の温度測定値のセットに基づくものであり、前記第２の温度読取値が、前記第１の時刻に、またはおおよそ前記第１の時刻に収集される温度測定値のセットに基づくものである請求項１に記載の方法。
【請求項６】
前記第１のプロセッサコアについての前記第１の温度読取値、前記第２のプロセッサコアについての前記第２の温度読取値、および前記第１のタスクが、プロセッサによって取得され、かつ／または割り当てられる請求項１に記載の方法。
【請求項７】
プロセッサによる実行に応じて、前記プロセッサに、
スケジューリング間隔の第１の部分の間に第１の温度読取値を取得させ、
前記スケジューリング間隔の第２の部分の間に第２の温度読取値を取得させ、
前記スケジューリング間隔の間に取得された前記第１の温度読取値と前記第２の温度読取値との比較に基づいて、前記第１のプロセッサコアに実行されるべき第１のタスクを割り当てさせる、マルチコアプロセッサにおける熱環境を管理するための命令と、
前記第１の温度読取値と前記第２の温度読取値とに基づいて再割り当てイベントが発生したかどうか判定させ、
前記再割り当てイベントが発生したと判定されると前記第１のタスクを中断させ、実行のために前記第１のタスクを前記第２のプロセッサコアに再割り当てさせる命令と、
前記第１の温度読取値と前記第２の温度読取値との温度差が所定の閾値を超えると、前記再割り当てイベントが発生したと判定させる命令と、
前記第１のタスクと関連付けられる第１の作業負荷のレベルを判定させ、
前記第１の作業負荷の前記判定されたレベルにさらに基づいて、前記第１のタスクを前記プロセッサコアのうちの１つに割り当てさせる命令、を含むコンピュータ可読媒体。
【請求項８】
前記プロセッサが、前記スケジューリング間隔の前記第１の部分と前記スケジューリング間隔の前記第２の部分とが、前記スケジューリング間隔の実質的に同じ部分、前記スケジューリング間隔の重なり合う部分、または前記スケジューリング間隔の異なる部分のいずれかであるように適合される請求項７に記載のコンピュータ可読媒体。
【請求項９】
前記プロセッサによる実行に応じて、前記第１の温度読取値と前記第２の温度読取値との関係が変化すると、前記プロセッサに前記再割り当てイベントが発生したと判定させるさらに別の命令をさらに含む請求項７に記載のコンピュータ可読媒体。
【請求項１０】
第１のプロセッサコアと第２のプロセッサコアとを有するマルチコアプロセッサのための熱管理システムであって、
第１の温度測定値のセットを出力するように構成された第１の温度センサと、
第２の温度測定値のセットを出力するように構成された第２の温度センサと、
前記第１の温度測定値のセットと前記第２の温度測定値のセットとを記憶するように構成されているメモリサブシステムと、
スケジューリング間隔の第１の部分の間に前記メモリサブシステムから前記第１のプロセッサコアについての第１の温度読取値を取得し、
前記スケジューリング間隔の第２の部分の間に前記メモリサブシステムから前記第２のプロセッサコアについての第２の温度読取値を取得し、
前記スケジューリング間隔の間に取得された前記第１の温度読取値と前記第２の温度読取値との比較に基づいて、前記第１のプロセッサコアに前記メモリサブシステムから取得された実行されるべき第１のタスクを割り当てる
ように構成されたプロセッサであって、
前記第１の温度読取値と前記第２の温度読取値とに基づいて、再割り当てイベントが発生したかどうか判定し、前記再割り当てイベントが発生したと判定されると、前記第１のタスクを中断し、実行のために前記第１のタスクを前記第２のプロセッサコアに再割り当てるように構成され、ここで前記第１の温度読取値と前記第２の温度読取値との温度差が所定の閾値を超えるときに前記再割り当てイベントが発生したと判定するように構成されており、また、
前記第１のタスクと関連付けられる第１の作業負荷のレベルを判定し、前記第１の作業負荷の前記判定されたレベルにさらに基づいて、前記第１のタスクを前記プロセッサコアのうちの１つに割り当てるように構成されているプロセッサ、
を備える熱管理システム。
【請求項１１】
前記スケジューリング間隔の前記第１の部分と前記スケジューリング間隔の前記第２の部分とが、前記スケジューリング間隔の実質的に同じ部分、前記スケジューリング間隔の重なり合う部分、または前記スケジューリング間隔の異なる部分のいずれかである請求項１０に記載のシステム。
【請求項１２】
前記プロセッサが、前記第１の温度測定値のセットと前記第２の温度測定値のセットとに関数を適用して、それぞれ、前記第１の温度読取値と前記第２の温度読取値とを確立するようにさらに構成されている請求項１０に記載のシステム。
【請求項１３】
前記関数が、前記第１の温度測定値のセットと前記第２の温度測定値のセットとに基づいて、最小値、最大値、中央値、または平均値を確立するためのものである請求項１２に記載のシステム。
【請求項１４】
前記プロセッサが、前記第１の温度読取値と前記第２の温度読取値との関係が変化すると、前記再割り当てイベントが発生したと判定するようにさらに構成されている請求項１０に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にプロセッサ技術に関し、より詳細にはマルチコアプロセッサにおける熱管理に関する。
【背景技術】
【０００２】
本明細書において特に指示しない限り、本項に記載される手法は本出願における特許請求の範囲の先行技術ではなく、本項に含まれることにより先行技術であると認められるものではない。
【０００３】
従来のマルチコアプロセッサは、アレイとして配置された２つ以上の独立のプロセッサコアを含む。各プロセッサコアは、一般に、プロセッサコア間のインターフェースを簡略化するために同じ電圧制御回路およびクロック信号制御回路を共用する。
【０００４】
本開示では、そのような共用制御回路を有することがマルチコアプロセッサの電源管理能力を制限する可能性があると認識している。さらに、プロセッサコアが不均等に利用されるときに、マルチコアプロセッサのダイのある領域内のあるプロセッサコアが、同じダイ上の別のプロセッサコアよりもかなり熱くなる可能性もある。不均等な温度は、ダイに対する物理的応力を生じ得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
本開示の一実施形態は、一般に、第１のプロセッサコアと第２のプロセッサコアとを有するマルチコアプロセッサのための熱管理方法に関するものとし得る。一例示的方法は、スケジューリング間隔の第１の部分の間に第１のプロセッサコアについての第１の温度読取値を取得するステップと、スケジューリング間隔の第２の部分の間に第２のプロセッサコアについての第２の温度読取値を取得するステップと、スケジューリング間隔の間に取得された第１の温度読取値と第２の温度読取値との比較に基づいて、第１のプロセッサコアに実行されるべき第１のタスクを割り当てるステップとを含み得る。
【０００６】
本開示の別の実施形態は、一般に、マルチコアプロセッサにおける熱環境を管理するための命令を含むコンピュータ可読媒体に関するものとし得る。例示的命令がプロセッサによって実行されるときに、プロセッサは、スケジューリング間隔の第１の部分の間に第１の温度読取値を取得し、スケジューリング間隔の第２の部分の間に第２の温度読取値を取得し、スケジューリング間隔の間に取得された第１の温度読取値と第２の温度読取値との比較に基づいて、第１のプロセッサコアに実行されるべき第１のタスクを割り当てるように構成され得る。
【０００７】
本開示のさらに別の実施形態は、一般に、第１のプロセッサコアと第２のプロセッサコアとを有するマルチコアプロセッサのための熱管理システムに関するものとし得る。一例示的熱管理システムは、第１の温度測定値のセットを出力するように構成された第１の温度センサと、第２の温度測定値のセットを出力するように構成された第２の温度センサと、第１の温度測定値のセットと第２の温度測定値のセットとを記憶するように構成されているメモリサブシステムと、プロセッサとを含み得る。プロセッサは、スケジューリング間隔の第１の部分の間にメモリサブシステムから第１のプロセッサコアについての第１の温度読取値を取得し、スケジューリング間隔の第２の部分の間にメモリサブシステムから第２のプロセッサコアについての第２の温度読取値を取得し、スケジューリング間隔の間に取得された第１の温度読取値と第２の温度読取値との比較に基づいて、第１のプロセッサコアにメモリサブシステムから取得された実行されるべき第１のタスクを割り当てるように構成され得る。
【０００８】
以上の概要は例示にすぎず、いかなる点においても限定を意図するものではない。図面および以下の詳細な説明を参照すれば、前述の例示的態様、実施形態、および特徴に加えて、さらに別の態様、実施形態、および特徴が明らかになるであろう。
【０００９】
本開示の上記その他の特徴は、以下の説明および添付の特許請求の範囲を、添付の図面と併せて読めばより十分に明らかになるであろう。これらの図面には、本開示と合致するいくつかの実施形態が描かれているにすぎず、したがって、本開示の範囲を限定するものとみなすべきではない。添付の図面を使用して、本開示をさらに具体的かつ詳細に説明する。
【図面の簡単な説明】
【００１０】
【図１】マルチコアプロセッサのための例示的熱管理システムを示す図である。
【図２】マルチコアプロセッサ内の１つまたは複数のプロセッサコアと関連付けられた温度測定値を処理するための方法を示す流れ図である。
【図３】マルチコアプロセッサ内の１つまたは複数のプロセッサコアに１つまたは複数のタスクを割り当てるための方法を示す流れ図である。
【図４】マルチコアプロセッサ内の１つまたは複数のプロセッサコアに１つまたは複数のタスクを再割り当てするための方法４００を示す流れ図である。
【図５】１つまたは複数のプロセッサコアの温度読取値に基づいて、マルチコアプロセッサ内の１つまたは複数のプロセッサコアに１つまたは複数のタスクを割り当てるためのコンピュータプログラム製品を示す概略図である。
【図６】すべてが本開示の少なくともいくつかの実施形態に従って構成された、マルチコアプロセッサとプロセッサとを有する例示的コンピューティング機器を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下の詳細な説明では、本出願の一部を形成する添付の図面を参照する。図面では、文脈上別の意味に解される場合を除き、類似の記号は、通常、類似の構成要素を識別する。詳細な説明、図面、および特許請求の範囲に記載される例示的実施形態は、限定を意図するものではない。本明細書で提示する主題の趣旨または範囲を逸脱することなく、他の実施形態が利用されてもよく、他の変更が加えられてもよい。本明細書において概説し、図に例示する本開示の態様は、多種多様な構成として配置し、置換し、結合し、分離し、設計することができ、それらすべてが明確に企図されており、本開示の一部を構成するものであることが容易に理解されるであろう。
【００１２】
本開示は、とりわけ、以下で説明するような、マルチコアプロセッサにおける熱管理に関連した機器、方法、およびコンピュータプログラムを対象とするものである。本開示の全体を通して、「温度読取値」という用語は、大まかには、１つまたは複数の温度センサによって収集される１つまたは複数の温度測定値を処理した結果として得られる温度の表現を指すものとすることができる。温度測定値は、電圧や電流といったアナログ信号として、または測定値を表すバイナリコードといったディジタル信号として収集され得る。
【００１３】
本明細書で説明する技法は、一般に、２つ以上のプロセッサコアを含むマルチコアプロセッサに関するものである。例示的実施形態は、マルチコアプロセッサにおける熱管理に関連した機器、システム、方法、および／またはコンピュータプログラムを説明し得る。ある例示的方法は、スケジューリング間隔の間に第１のプロセッサコアについての第１の温度読取値を取得するステップと、やはりスケジューリング間隔の間に第２のプロセッサコアについての第２の温度読取値を取得するステップと、スケジューリング間隔の間に取得された第１の温度読取値と第２の温度読取値との比較に基づいて、第１のプロセッサコアに実行されるべき第１のタスクを割り当てるステップとを含み得る。
【００１４】
図１に、本開示の少なくともいくつかの実施形態に従って構成された、マルチコアプロセッサ１０２のための例示的熱管理システム１００を示す。マルチコアプロセッサ１０２は、集積回路上に２次元配列の行および列として配置された、プロセッサコア１０４、プロセッサコア１０５、プロセッサコア１０７といった複数のプロセッサコアを含み得る。ある実施態様では、プロセッサコアは、プログラム、プロセス、スレッド、またはそれらの部分を実行するように適合され得る。熱管理システム１００は、各プロセッサコアに結合された１つまたは複数の温度センサ１０６、１つまたは複数の量子化回路１０８、熱処理サブシステム１１０、タスクディストリビュータ１１２、およびメモリサブシステム１１４を含み得る。温度センサ１０６は、一般に、プロセッサコアと同じダイ上に置かれ得る。
【００１５】
ある実施態様では、各温度センサ１０６（温度センサ機器として動作するように適合された所定の電流／電圧特性を有する１つまたは複数のダイオードなど）は、プロセッサコアの様々な物理的位置における温度を測定し、測定された温度に対応するアナログ出力信号を生成するように構成され得る。例えば、温度センサ１０６のうちの１つは、図１に示すようにプロセッサコア１０５に結合されていてよく、温度センサ１０６の位置（プロセッサコア１０５の左上隅など）における、またはその近くの周囲温度を測定するように構成されていてよい。別の実施態様では、複数の温度センサ１０６が同じプロセッサコア１０５（不図示）に結合されていてよく、それによって、プロセッサコア１０５と関連付けられる複数のホットスポットにおける、またはその近くの周囲温度が測定されてもよい。
【００１６】
ある実施態様では、量子化回路１０８は、２つのプロセッサコアの間に配置され得る。量子化回路１０８の例にはアナログ・ディジタル変換器（ＡＤＣ）が含まれていてよく、それによって温度センサ１０６のアナログ温度測定値（アナログ電流やアナログ電圧測定値など）が離散ディジタル値に変換され得る。ある例示的量子化回路１０８は、必要に応じて、アナログ温度測定値の信号利得をバッファし、かつ／または調整するための１つまたは複数のバッファ、増幅器、または減衰器を含み得る。利得または減衰は、線形特性、非線形特性、またはそれらの何らかの組み合わせを備えていてよい。さらに別のある例示的量子化回路１０８は、不安定性を防止し、かつ／またはアナログ温度測定値における雑音関連の問題を低減するように適合された能動フィルタおよび／または受動フィルタを含み得る。別のある例示的量子化回路１０８は、望ましくない可能性のある特定のレベルを超えるアナログ温度測定値を防止するためのリミッタまたはクランプを含み得る。ある例示的量子化回路１０８は、アナログ温度測定値と関連付けられるアナログ信号レベルをサンプリングするように適合されたサンプル・アンド・ホールド回路、トラック・アンド・ホールド回路、および／またはスイッチトキャパシタ回路を含み得る。別のある例示的量子化回路１０８は、アナログマルチプレクサを使用して１つまたは複数の温度センサ１０６に結合し得る。他のある実施態様では、単一の例示的量子化回路１０８があらゆるプロセッサコアをモニタし得る。
【００１７】
マルチコアプロセッサ１０２と関連付けられる可能な熱不均衡（マルチコアプロセッサ１０２において熱放散の不均一な分布を有するなど）を検出するために、熱処理サブシステム１１０は、温度センサ１０６の温度測定値を処理するように構成され得る。ある実施態様では、熱処理システム１１０は、それだけに限らないが、１つまたは複数の汎用または専用のプロセッサコア、マルチプレクサ、および／またはバッファを含む、量子化回路の１つまたは複数から測定値を取り込むのを助長するように構成された様々な回路を含み得る。熱処理サブシステム１１０は、ある期間にわたり、特定の処理コアについての連続する温度測定値を（プロセッサおよび／またはマルチプレクサなどによって）収集し、（プロセッサなどによって）集約し、それだけに限らないが、最小値、最大値、中央値、平均値といった関数を利用して、当該処理コアについての温度読取値を計算するように構成され得る。同じ処理コアについて、熱処理サブシステム１１０は、１つまたは複数の温度センサ１０６から温度測定値を収集し得る。収集された温度測定値に基づいて温度読取値を計算した後で、熱処理サブシステム１１０は、プロセッサコアについての計算された温度読取値をメモリサブシステム１１４に記憶するように構成され得る。本明細書の以下の考察、例えば図２についての考察では、熱処理サブシステム１１０のいくつかの動作をさらに詳細に論じる。
【００１８】
ある実施態様では、タスクディストリビュータ１１２は、メモリサブシステム１１４から取得される温度読取値に基づいて、マルチコアプロセッサ１０２の１つまたは複数のプロセッサコアに１つまたは複数のタスクを割り当てるように構成され得る。タスクディストリビュータ１１２は、１つまたは複数の汎用または専用のプロセッサコア上で実行されるオペレーティングシステムによって提供されるサービスとすることができる。スケジューリング間隔またはタイムスライスの間に、タスクディストリビュータ１１２は、（メモリサブシステム１１４に置かれ得る）タスクバッファの中からタスクのセットを選択するように構成されてもよく、かつ／または、それだけに限らないが、タスクと関連付けられる作業負荷のレベルやプロセッサコアの温度読取値といったパラメータのセットに基づいて、マルチコアプロセッサ１０２の１つまたは複数のプロセッサコアによって実行されるべきタスクのセットの中からの１つまたは複数のタスクを割り当てるように構成されてもよい。本明細書の以下の考察では、それらに関連した図面と併せて、タスクディストリビュータ１１２のいくつかの動作をさらに詳細に論じる。
【００１９】
メモリサブシステム１１４は、熱処理サブシステム１１０とタスクディストリビュータ１１２の両方からアクセスできるように構成され得る。ある実施態様では、メモリサブシステム１１４は、例えば、それだけに限らないが、熱処理サブシステム１１０の処理結果および／または前述のタスクバッファなどを記憶するための異なるレベルのキャッシュを含み得る。タスクディストリビュータ１１２は、タスクバッファからの１つまたは複数のそのようなタスクをマルチコアプロセッサ１０２内の１つまたは複数のプロセッサコアに割り当てる際に、そのような処理結果を取得し、利用するように構成され得る。
【００２０】
図２は、本開示の少なくともいくつかの実施形態に従って構成された、マルチコアプロセッサ内の１つまたは複数のプロセッサコアと関連付けられた温度測定値を処理するための方法２００を示す流れ図である。方法２００は、ブロック２０２、２０４、２０６、および／または２０８の１つまたは複数で示される１つまたは複数の動作、機能または処置を含み得る。各ブロックは順番に示されているが、これらのブロックは、並列に、かつ／または本明細書に記載される順序と異なる順序で実施されてもよい。また、様々なブロックは、所望の実施態様に基づいて、より少数のブロックへと組み合わされてもよく、さらに多数のブロックへと分割されてもよく、かつ／または除去されてもよい。
【００２１】
方法２００についての処理は、ブロック２０２、「第１のプロセッサコアについての第１の温度測定値を収集する」から開始し得る。ブロック２０２に続いてブロック２０４、「第２のプロセッサコアについての第２の温度測定値を収集する」が実施され得る。ブロック２０４に続いてブロック２０６、「収集された第１の温度測定値および収集された第２の温度測定値を処理する」が実施され得る。ブロック２０６に続いてブロック２０８、「第１の温度読取値および第２の温度読取値を記憶する」が実施され得る。
【００２２】
ブロック２０２では、マルチコアプロセッサ内の第１のプロセッサコアについての１つまたは複数の温度測定値が、第１のプロセッサコアに結合された１つまたは複数の温度センサから収集され得る。一例として図１を使用すると、第１のプロセッサコア（プロセッサコア１０５など）についての温度センサ１０６の温度測定値が、熱処理サブシステム１１０によって、スケジューリング間隔の間に１回または複数回収集され得る。複数の温度センサ１０６がプロセッサコア１０５に結合されている場合には、複数の温度センサ１０６の温度測定値がプロセッサコア１０５について収集され得る。
【００２３】
また、ブロック２０４でも、同じマルチコアプロセッサ内の第２のプロセッサコアについての１つまたは複数の温度測定値が、第２のプロセッサコアに結合された１つまたは複数の温度センサから収集され得る。ある実施態様では、第１のプロセッサコアと第２のプロセッサコアとについての温度測定値は、同じスケジューリング間隔の間に収集され得る。他のある実施態様では、第１のプロセッサコアと第２のプロセッサコアとについての温度測定値は、異なるスケジューリング間隔の間に温度センサから収集され得る。
【００２４】
ブロック２０６では、収集された第１の温度測定値および収集された第２の温度測定値が、熱処理サブシステムによって処理され得る。ある実施態様では、ブロック２０６の処理が、ある数の第１の温度測定値および／または第２の温度測定値が収集された後で、やはり熱処理サブシステムによって開始され得る。図１に関連して、熱処理サブシステム１１０によって、収集された第１の温度測定値と収集された第２の温度測定値とに関数が適用されて、それぞれ、第１のプロセッサコアについての第１の温度読取値と、第２のプロセッサコアについての第２の温度読取値とが確立され得る。いくつかの関数の例には、それだけに限らないが、収集された温度測定値に基づいて最小値、最大値、中央値、および平均値を確立することが含まれ得る。
【００２５】
ブロック２０８では、第１のプロセッサコアについての第１の温度読取値および第２のプロセッサコアについての第２の温度読取値が、さらに処理するために、熱処理サブシステムによって記憶され得る。
【００２６】
ある実施態様では、方法２００が繰り返し実施されて、異なる時刻に複数の温度測定値が収集され、収集された温度測定値が処理され、結果として得られた温度読取値が記憶され得る。言い換えると、第１のプロセッサコアについての１つまたは複数の第１の温度読取値と、第２のプロセッサコアについての１つまたは複数の第２の温度読取値とが記憶され得る。各温度読取値は、ある時刻に、またはある一定の時間間隔にわたって収集される温度測定値のセットに対応し得る。以下の考察では、時刻１と関連付けられる第１の温度読取値は、時刻１において収集される第１の温度測定値に対応し、第１の温度読取値＿時刻１で表示され得る。同様に、やはり時刻１と関連付けられる第２の温度読取値は、時刻１において収集される第２の温度測定値に対応し、第２の温度読取値＿時刻１で表示され得る。さらに方法２００は、アナログ領域とディジタル領域のどちらで実施されてもよい。よって、ブロック２０２とブロック２０４とでそれぞれ収集される第１の温度測定値と第２の温度測定値とは、具体的な実施態様に応じて、離散アナログ値または離散ディジタル値のセットに対応し得る。図１を参照して説明した量子化回路１０８といった、１つまたは複数の量子化回路が、そのような測定値を生成するのに利用され得る。
【００２７】
図３は、本開示の少なくともいくつかの実施形態に従って構成された、マルチコアプロセッサ内の１つまたは複数のプロセッサコアに１つまたは複数のタスクを割り当てるための方法３００を示す流れ図である。方法３００は、ブロック３０２、３０４、３０６、および／または３０８の１つまたは複数によって示される１つまたは複数の動作、機能または処置を含み得る。各ブロックは順番に示されているが、これらのブロックは、並列に、かつ／または本明細書に記載される順序と異なる順序で実施されてもよい。また、様々なブロックは、所望の実施態様に基づいて、より少数のブロックへと組み合わされてもよく、さらに多数のブロックへと分割されてもよく、かつ／または除去されてもよい。
【００２８】
方法３００についての処理は、ブロック３０２、「第１のプロセッサコアについての第１の温度読取値を取得する」から開始し得る。ブロック３０２に続いてブロック３０４、「第２のプロセッサコアについての第２の温度読取値を取得する」が実施され得る。ブロック２０４に続いてブロック３０６、「第１の温度読取値と第２の温度読取値との比較に基づいてタスクを割り当てる」が実施され得る。ブロック３０６に続いてブロック３０８、「タスクを周期的に再割り当てする」が実施され得る。
【００２９】
ブロック３０２では、同じ第１のプロセッサコアについての第１の温度測定値の処理の結果として得られる第１のプロセッサコアについての第１の温度読取値が、図１に示すメモリサブシステム１１４といったメモリサブシステムから、１つまたは複数の汎用または専用のプロセッサコアによって実行され得るタスクディストリビュータによって取得され得る。第１の温度読取値の取得は、第１の温度読取値が確立され、記憶されるスケジューリング間隔と異なるスケジューリング間隔の第１の部分の間に行われ得る。別の実施態様では、第１の温度読取値の取得と第１の温度読取値の記憶とは、同じスケジューリング間隔において行われ得る。
【００３０】
ブロック３０４では、同じ第２のプロセッサコアについての第２の温度測定値の処理の結果として得られる第２のプロセッサコアについての第２の温度読取値も、スケジューリング間隔の第２の部分の間に同じメモリサブシステムからタスクディストリビュータによって取得され得る。ある実施態様では、第１のプロセッサコアについての第１の温度読取値と関連付けられるスケジューリング間隔の第１の部分と、第２のプロセッサコアについての第２の温度読取値と関連付けられるスケジューリング間隔の第２の部分とは、当該スケジューリング間隔の実質的に同じ部分とすることができる。別の実施態様では、第１の部分と第２の部分とは、当該スケジューリング間隔の重なり合う部分とすることができる。さらに別の実施態様では、第１の部分と第２の部分とは、当該スケジューリング間隔の異なる部分とすることができる。加えて、第１の温度読取値と第２の温度読取値とは、それぞれ、同じ時刻またはほぼ同じ時刻である時刻１において収集される第１の温度測定値と第２の温度測定値とに基づくものとすることもできる。
【００３１】
ブロック３０６では、タスクディストリビュータによって実施される第１の温度読取値と第２の温度読取値との比較に基づいて、１つまたは複数のタスクが１つまたは複数のプロセッサコアに割り当てられ得る。ある実施態様では、比較は、最低の温度読取値を有するプロセッサコアを特定し、それによって、最小量の処理すべき作業負荷を有する可能性があるそのようなプロセッサコアに１つまたは複数のタスクが割り当てられるようにすることとし得る。タスク割り当ては、第１の温度読取値および第２の温度読取値の取得と同じスケジューリング間隔の間に、タスクディストリビュータによって実施され得る。
【００３２】
ブロック３０８では、１つまたは複数のタスクが、タスクディストリビュータによって、１つまたは複数のプロセッサコアに周期的に再割り当てされ得る。再割り当ての間には、最初に第１のプロセッサコア割り当てられたタスクが第２のプロセッサコアに再割り当てされてもよく、逆もまた同様である。図４と関連付けられる以下の考察では、タスク再割り当てのいくつかの動作をさらに詳細に説明する。
【００３３】
図４は、本開示の少なくともいくつかの実施形態に従って構成された、マルチコアプロセッサ内の１つまたは複数のプロセッサ個に１つまたは複数のタスクを再割り当てするための方法４００を示す流れ図である。方法４００は、ブロック４０２、４０４、４０６、４０８、４１０、および／または４１２の１つまたは複数によって示される１つまたは複数の動作、機能または処置を含み得る。各ブロックは順番に示されているが、これらのブロックは、並列に、かつ／または本明細書に記載される順序と異なる順序で実施されてもよい。また、様々なブロックは、所望の実施態様に基づいて、より少数のブロックへと組み合わされてもよく、さらに多数のブロックへと分割されてもよく、かつ／または除去されてもよい。
【００３４】
方法４００についての処理は、ブロック４０２、「第１のプロセッサコアについての第１の温度読取値を取得する」から開始し得る。ブロック４０２に続いてブロック４０４、「第２のプロセッサコアについての第２の温度測定値を取得する」が実施され得る。ブロック４０４に続いてブロック４０６、「再割り当てイベントが発生したか」が実施され得る。再割り当てイベントが発生したと判定されるときには、ブロック４０６に続いてブロック４０８、「タスクを中断する」が実施され、続いてブロック４１０、「タスクと関連付けられる作業負荷を解析する」が実施され得る。ブロック４１０に続いてブロック４１２、「温度読取値比較および／または作業負荷に基づいてタスクを再割り当てする」が実施され得る。他方、ブロック４０６で、再割り当てイベントが発生していないと判定された場合には、処理はブロック４０２に進み、そこで別の温度読取値のセットが取得され得る。
【００３５】
ブロック４０２では、第１のプロセッサコアについての第１の温度読取値が、図１に示すメモリサブシステム１１４といったメモリサブシステムから、１つまたは複数の汎用または専用のプロセッサコアによって実行され得るタスクディストリビュータによって取得され得る。ある実施態様では、取得される第１の温度読取値は、前述の方法３００において説明した収集時刻、時刻１に続く時刻２において収集される第１の温度測定値についてのものとすることができる。
【００３６】
ブロック４０４では、第２のプロセッサコアについての第２の温度読取値も、同じメモリサブシステムから、タスクディストリビュータによって取得され得る。ある実施態様では、第２の温度読取値は、やはり同じ時刻２に、またはほぼ同じ時刻２に収集され得る第２の温度測定値に基づくものとすることができる。加えて、ブロック４０２およびブロック４０４の取得動作は、同じスケジューリング間隔の実質的に同じ部分において行われても、重なり合う部分において行われても、異なる部分において行われてもよい。
【００３７】
ブロック４０６では、第１の温度読取値と第２の温度読取値とに基づいて、方法４００は、再割り当てイベントが発生したかどうかタスクディストリビュータが判定するように構成され得る。ある実施態様では、再割り当てイベントは、第１の温度読取値と第２の温度読取値との温度差が所定の閾値を超えるときに発生したとみなされ得る。温度差が２つの隣接するプロセッサコア（図１に示すプロセッサコア１０４とプロセッサコア１０５など）の温度読取値の間にあり、または、２つの隣接しないプロセッサコア（図１に示すプロセッサコア１０４とプロセッサコア１０７など）の温度読取値の間にあることは注目に値する。代替の実施態様では、再割り当てイベントは、第１の温度読取値と第２の温度読取値との関係が変化したときに発生したとみなされ得る。例えば、第１の温度読取値が最初、第２の温度読取値より低いものと仮定する。温度読取値間のこの関係が変化するとき、例えば、第１の温度読取値が第２の温度読取値より高くなるときに、再割り当てイベントが発生したとみなされ得る。ブロック４０６でタスクディストリビュータによって再割り当てイベントが発生したとみなされ得るときに、方法４００はブロック４０８に進み得る。そうでない場合、方法４００は、ブロック４０２とブロック４０４とに戻って、それぞれ、別の第１の温度読取値と別の第２の温度読取値とを取得し得る。
【００３８】
ブロック４０８では、タスクディストリビュータが異なるプロセッサコアにタスクを再割り当てする前に、タスクが中断され得る。あるプロセッサコア（第１のプロセッサコアなど）における中断タスクを別のプロセッサコア（第２のプロセッサコアなど）上で再開させるために、２つのプロセッサコアは、それだけに限らないが、ＭＥＳＩプロトコルといった公知のメモリ一貫性プロトコルによってサポートされる共有仮想メモリ空間を使用し得る。
【００３９】
ブロック４１０では、再割り当てについて評価されるべきタスクと関連付けられる作業負荷が、タスクディストリビュータによって解析され得る。ある実施態様では、専用レジスタのセットとすることができる１つまたは複数の性能カウンタを利用して、マルチコアプロセッサの性能関連のアクティビティが測定され、収集され得る。例えば、１つまたは複数の性能カウンタは、所与の時間間隔内の浮動小数点演算の回数を追跡するように構成されてもよい。性能カウンタは、リオーダバッファにおいて完了を待つ演算の平均数を追跡してもよい。性能カウンタは、平均メモリアクセス時間を追跡してもよい。また性能カウンタは、利用される命令発行スロットの割合を追跡してもよい。
【００４０】
ブロック４１２では、最初にあるプロセッサコア（第１のプロセッサコアなど）に割り当てられたタスクが、タスクディストリビュータによって、別のプロセッサコア（第２のプロセッサコアなど）に再割り当てされ得る。例示のために、第１のタスクが第２のタスクより高レベルの作業負荷と関連付けられると判定され、第１のタスクが最初に第１のプロセッサコアに割り当てられるものと仮定する。また、第１のプロセッサコアについての第１の温度読取値が、第２のプロセッサコアについての第２の温度読取値より高くなったとも仮定する。ある実施態様では、第１のタスクがより低い温度読取値を有する第２のプロセッサコアに再割り当てされ、それによって、第２のプロセッサコアが計算集約的な第１のタスクを処理するように適合され得る。
【００４１】
図５は、本開示の少なくともいくつかの実施形態に従って構成された、１つまたは複数のプロセッサコアの温度読取値に基づいてマルチコアプロセッサ内の１つまたは複数のプロセッサコアに１つまたは複数のタスクを再割り当てするためのコンピュータプログラム製品５００を示す概略図である。コンピュータプログラム製品５００は、前述の、図２、図３、および図４に示す方法など、本明細書で説明する方法を実行するための１つまたは複数の実行可能命令の設置５０２を含み得る。コンピュータプログラム製品５００は、信号担持媒体５０４または別の類似の通信媒体５０６において送信され得る。またコンピュータプログラム製品５００は、コンピュータ可読媒体５０８または別の類似の書込み可能媒体５１０に記録されてもよい。
【００４２】
図６は、本開示の少なくともいくつかの実施形態に従って構成された、マルチコアプロセッサとプロセッサとを有する例示的コンピューティング機器のブロック図である。非常に基本的な構成において、コンピューティング機器６００は通常、１つまたは複数のコア６０４およびシステムメモリ６０６を含む。メモリバス６０８は、プロセッサ６０４とシステムメモリ６０６との間の通信に使用され得る。実施態様によっては、このプロセッサ６０４が汎用プロセッサを指していてもよい。
【００４３】
所望の構成に応じて、プロセッサ６０４は、それだけに限らないが、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、ディジタル信号プロセッサ（ＤＳＰ）、またはこれらの任意の組み合わせを含む任意の種類のものとすることができる。プロセッサ６０４は、レベル１キャッシュ６１０やレベル２キャッシュ６１２といった１つまたは複数のレベルのキャッシング、プロセッサコア６１４、およびレジスタ６１６を含み得る。レジスタ６１６は、割り当てられるべき様々なタスクと関連付けられた作業負荷のレベルを追跡するための前述の性能カウンタを実施するのに利用され得る。例示的プロセッサコア６１４は、算術論理演算装置（ＡＬＵ）、浮動小数点演算装置（ＦＰＵ）、ディジタル信号処理コア（ＤＳＰコア）、またはこれらの任意の組み合わせを含み得る。また例示的メモリコントローラ６１８がプロセッサ６０４と共に使用されてもよく、実装形態によっては、メモリコントローラ６１８はプロセッサ６０４の内部部分とすることもできる。
【００４４】
所望の構成に応じて、システムメモリ６０６は、それだけに限らないが、揮発性メモリ（ＲＡＭなど）、不揮発性メモリ（ＲＯＭ、フラッシュメモリなど）、またはこれらの任意の組み合わせを含む任意の種類のものとすることができる。システムメモリ６０６は、オペレーティングシステム６２０、１つまたは複数のアプリケーション６２２、プログラムデータ６２４を含み得る。ある実施態様では、オペレーティングシステム６２０は、図１に示す熱処理サブシステム１１０といった熱処理サブシステム６２５と、図１に示すタスクディストリビュータ１１２といったタスクディストリビュータを含み得るスケジューラ６２６とを含み得る。熱処理サブシステム６２５は、少なくとも図２の方法２００に関して説明した機能を含む、本明細書で説明する機能を果たすように構成され得る。スケジューラ６２６は、少なくとも、図３の方法３００および図４の方法４００に関して説明した機能を含む、本明細書で説明する機能を果たすように構成され得る。あるいは、アプリケーション６２２が、熱処理サブシステム６２５とスケジューラ６２６（図６には示されていない）とを含んでいてもよく、アプリケーション６２２が、オペレーティングシステム６２０上でプログラムデータ６２４を用いて動作するように構成されてもよい。プログラムデータ６２４は、それだけに限らないが、スケジューラ６２６がマルチコアプロセッサ６６４内の１つまたは複数のプロセッサコアに割り当てるためのタスクのセットを含むタスクバッファ、スケジューラ６２６がタスク割り当てのために利用し得る、図２の方法２００、図３の方法３００、および図４の方法４００において論じたような温度読取値などといった、タスク関連の情報を含み得る。ここで説明した基本構成６０２は、図６において、内側の破線内の構成要素によって示されている。
【００４５】
コンピューティング機器６００は、さらに別の機構または機能と、基本構成６０２と任意の必要な機器およびインターフェースとの間の通信を円滑化するためのさらに別のインターフェースとを備えていてもよい。例えば、記憶インターフェースバス６３４を介した基本構成６０２と１台または複数のデータ記憶装置６３２との間の通信を円滑化するためにバス／インターフェースコントローラ６３０が使用されてもよい。データ記憶装置６３２は、取り外し可能記憶装置６３６、取り外し不能記憶装置６３８、またはこれらの組み合わせとすることができる。取り外し可能記憶装置および取り外し不能記憶装置の例には、いくつか例を挙げると、フレキシブル・ディスク・ドライブやハード・ディスク・ドライブ（ＨＤＤ）といった磁気ディスク装置、コンパクトディスク（ＣＤ）ドライブやディジタル多用途ディスク（ＤＶＤ）ドライブといった光ディスクドライブ、ソリッド・ステート・ドライブ（ＳＤＤ）、テープドライブなどが含まれる。コンピュータ記憶媒体の例には、コンピュータ可読命令、データ構造、プログラムモジュール、その他のデータといった情報の記憶のための任意の方法または技術において実施される揮発性および不揮発性、取り外し可能および取り外し不能の媒体が含まれ得る。
【００４６】
システムメモリ６０６、取り外し可能記憶装置６３６および取り外し不能記憶装置６３８がコンピュータ記憶媒体の例である。コンピュータ記憶媒体には、それだけに限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリその他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）その他の光記憶、磁気カセット、磁気テープ、磁気ディスク記憶その他の磁気記憶装置、あるいは所望の情報を記憶するのに使用され、コンピューティング機器６００によってアクセスされ得る他の任意の媒体が含まれる。そのような任意のコンピュータ記憶媒体をコンピューティング機器６００の一部とすることができる。
【００４７】
またコンピューティング機器６００は、バス／インターフェースコントローラ６３０を介した、様々なインターフェース機器（出力機器６４２、周辺インターフェース６４４、通信機器６４６など）から基本構成６０２への通信を円滑に行わせるためのインターフェースバス６４０も含み得る。出力機器６４２の例にはグラフィックス・プロセッシング・ユニット６４８およびオーディオ・プロセッシング・ユニット６５０が含まれ、これらは、１つまたは複数のＡ／Ｖポート６５２を介して、ディスプレイやスピーカといった様々な外部機器と通信するように構成され得る。周辺インターフェース６４４の例には、シリアル・インターフェース・コントローラやパラレル・インターフェース・コントローラが含まれ、これらは、１つまたは複数の入出力ポート６５８を介して、入力機器（例えばキーボード、マウス、ペン、音声入力機器、タッチ入力機器など）や他の周辺機器（例えばプリンタ、スキャナなど）といった外部機器と通信するように構成され得る。通信機器６４６の一例はネットワークコントローラを含み、これは、１つまたは複数の通信ポートを介したネットワーク通信リンク上での１台または複数の他のコンピューティング機器６６２との通信を円滑化するように構成され得る。実施態様によっては、コンピューティング機器６００はマルチコアプロセッサ６６４を含み、マルチコアプロセッサ６６４はインターフェースバス６４０を介してプロセッサ６０４と通信し得る。
【００４８】
ネットワーク通信リンクは、通信媒体の一例とすることができる。通信媒体は通常、搬送波や他の伝送機構といった変調データ信号におけるコンピュータ可読命令、データ構造、プログラムモジュールその他のデータによって実施することができ、任意の情報受渡し媒体を含み得る。「変調データ信号」とは、その特性の１つまたは複数が信号において情報を符号化するように設定され、または変更されている信号とすることができる。例を挙げると、それだけに限らないが、通信媒体には、有線ネットワークや直接配線接続といった有線媒体、および音響、無線周波数（ＲＦ）、マイクロ波、赤外線（ＩＲ）その他の無線媒体といった無線媒体が含まれ得る。コンピュータ可読媒体という語は、本明細書で使用する場合、記憶媒体と通信媒体の両方を含み得る。
【００４９】
コンピューティング機器６００は、携帯電話、携帯情報端末（ＰＤＡ）、パーソナル・メディア・プレーヤ機器、無線ウェブウォッチ（web-watch）機器、パーソナルヘッドセット機器、アプリケーション特有の機器、上記機能のいずれかを含むハイブリッド機器といったスモール・フォーム・ファクタの携帯用（またはモバイル）電子機器の一部として実施され得る。またコンピューティング機器６００は、ラップトップコンピュータ構成と非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとしても実施され得る。
【００５０】
システムの態様のハードウェア実施態様とソフトウェア実施態様との間にはほとんど区別がない。ハードウェアを使用するかソフトウェアを使用するかは、（状況によっては、ハードウェアとソフトウェアのどちらを選択するかが重要となり得るという点で、常にそうであるとはいえないが）一般には、コスト対効率のトレードオフを意味する設計上の選択である。本明細書で説明するプロセスおよび／またはシステムおよび／または他の技術を実施するための様々な手段（ハードウェア、ソフトウェア、および／またはファームウェアなど）があり、好ましい手段は、プロセス、システム、または他の技術が展開される状況によって異なる。例えば、実施者が、速度と正確さが最優先であると判断する場合には、実施者は、主に、ハードウェアまたはファームウェアの手段を選択し得る。柔軟性が最優先である場合には、実施者は、主にソフトウェア実装を選択し得る。さらに、代替として実施者は、ファームウェアありまたはなしのハードウェア、ソフトウェアの何らかの組み合わせを選択してもよい。
【００５１】
以上の詳細な説明では、ブロック図、流れ図、および／または例を使用して、機器および／またはプロセスの様々な実施形態を示した。そのようなブロック図、流れ図、および／または例が１つまたは複数の機能および／または動作を含む限りにおいて、そのようなブロック図、流れ図、または例に含まれる各機能および／または動作は、広範なハードウェア、ソフトウェア、ファームウェア、または事実上それらの任意の組み合わせによって、個別に、かつ／または一括して実施することができることが当業者には理解されるであろう。一実施形態では、本明細書で説明する主題のいくつかの部分は、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、ディジタル信号プロセッサ（ＤＳＰ）、または他の集積形式によって実施され得る。しかし、本明細書で開示する実施形態のいくつかの態様は、集積回路において、その全部または一部を、１台または複数のコンピュータ上で走る１つまたは複数のコンピュータプログラムとして（例えば、１つまたは複数のコンピュータシステム上で走る１つまたは複数のプログラムとして）も、１つまたは複数のプロセッサ上で走る１つまたは複数のプログラムとして（例えば１つまたは複数のマイクロプロセッサ上で走る１つまたは複数のプログラムとして）も、ファームウェアとしても、事実上それらの任意の組み合わせとしても同等に実施することができること、ならびにソフトウェアおよび／またはファームウェアのための回路の設計および／またはコードの作成は、本開示を踏まえれば十分に当業者の技能範囲内となるはずであることを当業者は理解するであろう。加えて当業者は、本明細書で説明する主題の機構を様々な形態のプログラム製品として配布することができること、および本明細書で説明する主題の例示的実施形態は、実際に配布を実行するのに使用される信号担持媒体の特定の種類にかかわらず適用できることも理解するであろう。信号担持媒体の例には、それだけに限らないが、以下が含まれる。フロッピーディスク、ハード・ディスク・ドライブ、コンパクトディスク（ＣＤ）、ディジタル多用途ディスク（ＤＶＤ）、ディジタルテープ、コンピュータメモリなどといった書込み可能型媒体、ならびに、ディジタルおよび／またはアナログ通信媒体（例えば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）といった伝送型媒体。
【００５２】
当分野においては、機器および／またはプロセスを本明細書に示すように記載し、その後、技術的手法を用いてそのように記載される機器および／またはプロセスをデータ処理システムへと統合することが一般的であることを、当業者は理解するであろう。すなわち、本明細書で説明する機器および／またはプロセスの少なくとも一部分を、妥当な量の実験を経てデータ処理システムへと統合することができる。典型的なデータ処理システムは、一般に、システム・ユニット・ハウジング、ビデオ表示装置、揮発性メモリや不揮発性メモリといったメモリ、マイクロプロセッサやディジタル信号プロセッサといったプロセッサ、オペレーティングシステム、ドライバ、グラフィカル・ユーザ・インターフェース、アプリケーションプログラムといったコンピュータエンティティ、タッチパッドや画面といった１つまたは複数の対話装置、ならびに／または、フィードバックループおよび制御モータを含む制御システム（位置および／もしくは速度を感知するためのフィードバック、構成要素および／もしくは量を移動および／もしくは調整するための制御モータなど）のうちの１つまたは複数を含むことを当業者は理解するであろう。典型的なデータ処理システムは、データ計算／通信システムおよび／またはネットワーク計算／通信システムに典型的に見られるような、任意の適切な市販の構成要素を利用して実施され得る。
【００５３】
本明細書で説明する主題は、場合によっては、別の異なる構成要素内に含まれた、または別の異なる構成要素と接続された別個の構成要素を示すことがある。そのように描かれるアーキテクチャは単なる例示にすぎず、実際は、同じ機能を達成する他の多くのアーキテクチャを実施することができることを理解すべきである。概念的には、同じ機能を達成するための構成要素の任意の配置は、事実上、所望の機能が達成されるように「関連付けられている」。したがって、特定の機能を達成するように組み合わされる本明細書の任意の２つの構成要素は、アーキテクチャや介在する構成要素にかかわらず、所望の機能が達成されるように相互に「関連付けられた」ものとみなすことができる。同様に、そのように関連付けられた任意の２つの構成要素を、所望の機能を達成するように相互に「動作可能に接続され」、または「動作可能に結合され」ているものとみなすこともでき、そのように関連付けることができる任意の２つの構成要素を、所望の機能を達成するように相互に「動作可能に結合可能である」ものとみなすこともできる。動作可能に結合可能であるものの具体例には、それだけに限らないが、物理的に結合可能であり、かつ／もしくは物理的に相互作用する構成要素、および／または無線で相互作用可能であり、かつ／もしくは無線で相互作用する構成要素、および／または論理的に相互作用し、かつ／もしくは論理的に相互作用可能な構成要素が含まれる。
【００５４】
本明細書における実質的にあらゆる複数形および／または単形数の用語の使用について、当業者は、状況および／または用途に適するように、複数形から単数形に、かつ／または単数形から複数形に変換することができる。明確にするために本明細書においては様々な単数形／複数形の変形が明示され得る。
【００５５】
一般に、本明細書において、特に添付の特許請求の範囲（例えば添付の特許請求の範囲の本文など）において使用される語は、一般には、「非限定的な（open）」語として意図されていること（例えば、「including（〜を含み）」という語は「それだけに限らないが〜を含み」と解釈すべきであり、「having（〜を有し）」という語は「少なくとも〜を有し」と解釈すべきであり、「includes（〜を含む）」という語は、「それだけに限らないが、〜を含む」と解釈すべきであるなど）が当業者には理解されるであろう。さらに、特定の数の導入請求項記載が意図される場合、そのような意図は当該請求項において明示的に記載され、そのような記載がない場合にはそのような意図が存在しないことも当業者には理解されるであろう。例えば、理解の一助として、添付の特許請求の範囲は、請求項記載を導入するために、「少なくとも１つの」および「１つまたは複数の」という導入句の使用を含み得る。しかし、そのような句の使用は、同じ請求項が「１つまたは複数の」あるいは「少なくとも１つの」という導入句および「a」や「an」といった不定冠詞を含むときでさえも、不定冠詞「a」または「an」による請求項記載の導入が、そのような導入請求項記載を含む任意の特定の請求項を、ただ１つのそのような記載を含む発明だけに限定することを意味するものと解釈されるべきではない（例えば、「a」および／または「an」は、通常は、「少なくとも１つの」または「１つまたは複数の」を意味するものと解釈されるべきであるなど）。同じことが、請求項記載を導入するのに使用される定冠詞の使用についても当てはまる。加えて、特定の数の導入請求項記載が明示的に記載されている場合でさえも、当業者は、そのような記載が、通常は、少なくとも記載される数を意味するものと解釈されるべきであることを理解するであろう（例えば、他の修飾語句を伴わない「２つの記載」という記載だけで、通常は、少なくとも２つの記載、または２つ以上の記載を意味するなど）。さらに、「Ａ、Ｂ、およびＣのうちの少なくとも１つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである（例えば、「Ａ、Ｂ、およびＣのうちの少なくとも１つを有するシステム」は、それだけに限らないが、Ａだけを、Ｂだけを、Ｃだけを、ＡとＢとを共に、ＡとＣとを共に、ＢとＣとを共に、かつ／またはＡ、Ｂ、およびＣを共に有するシステムを含むはずであるなど）。「Ａ、Ｂ、またはＣのうちの少なくとも１つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである（例えば、「Ａ、Ｂ、またはＣのうちの少なくとも１つを有するシステム」は、それだけに限らないが、Ａだけを、Ｂだけを、Ｃだけを、ＡとＢとを共に、ＡとＣとを共に、ＢとＣとを共に、かつ／またはＡ、Ｂ、およびＣを共に有するシステムを含むはずであるなど）。さらに、２つ以上の択一的項目を提示する事実上あらゆる選言的な語および／または句は、本明細書においてであれ、特許請求の範囲においてであれ、図面においてであれ、それらの項目のうちの１つ、それらの項目のうちのどちらか、またはそれらの項目の両方を含む可能性を企図するものと理解すべきであることも当業者には理解されるであろう。例えば、「ＡまたはＢ」という句は、「Ａ」または「Ｂ」または「ＡおよびＢ」の可能性を含むものと理解されるであろう。
【００５６】
本明細書には様々な態様および実施形態が開示されているが、当業者には他の態様および実施形態も明らかであろう。本明細書で開示した様々な態様および実施形態は例示のためのものであり、限定を意図するものではなく、その真の範囲および趣旨は添付の特許請求の範囲によって指示される。
【図１】
0005559891.tif 000002
【図２】
0005559891.tif 000003
【図３】
0005559891.tif 000004
【図４】
0005559891.tif 000005
【図５】
0005559891.tif 000006
【図６】
0005559891.tif 000007