(57)【要約】  複数のプロセッサコアとプロセッサコアの少なくともいくつかによって共有されるキャッシュメモリとを有するマルチコアプロセッサに関係する技法を全体的に説明する。マルチコアプロセッサを、キャッシュメモリ結合性のそれぞれのレベルを処理コアのそれぞれに別々に割り当てるように構成することができる。
2013502645.tif 000002
【特許請求の範囲】
【請求項１】
複数の個々のプロセッサコアを含むマルチコアプロセッサと、
前記複数の前記個々のプロセッサコアの少なくともいくつかによってアクセス可能になるように構成されたキャッシュメモリと、
前記マルチコアプロセッサに結合されたキャッシュコントローラであって、前記キャッシュコントローラは、前記キャッシュメモリ内のメモリ空間を割り当てるように構成され、前記キャッシュコントローラは、前記複数の前記個々のプロセッサコアの少なくともいくつかに関して異なるそれぞれのレベルの結合性を伴う、前記複数の前記個々のプロセッサコアの少なくともいくつかによる前記キャッシュメモリへのアクセスを、容易にするようにさらに構成される、キャッシュコントローラと
を含むコンピューティングシステム。
【請求項２】
前記複数の個々のプロセッサコアに結合されたコアコントローラをさらに含み、前記コアコントローラは、どの処理タスクが前記複数の個々のプロセッサコアのそれぞれによって処理されるべきかを判定するように構成される、請求項１に記載のコンピューティングシステム。
【請求項３】
前記複数の個々のプロセッサコアに結合されたコアコントローラをさらに含み、前記コアコントローラは、どのスレッドが前記キャッシュメモリに格納されるべきなのかを判定するように構成される、請求項１に記載のコンピューティングシステム。
【請求項４】
前記個々のプロセッサコアの少なくともいくつかは、ストライデッド参照を識別するように構成されたそれぞれの分岐プレディクタを含み、前記コンピューティングシステムは、前記複数の個々のプロセッサコアのうちで前記キャッシュメモリにアクセスするように構成された少なくともいくつかに結合されたコアコントローラをさらに含み、前記コアコントローラは、前記ストライデッド参照の前記識別に少なくとも部分的に基づいて前記キャッシュメモリ内のメモリ空間を割り当てるように構成される、請求項１に記載のコンピューティングシステム。
【請求項５】
前記コンピューティングシステムは、前記複数の個々のプロセッサコアに結合されたコアコントローラをさらに含み、前記コアコントローラは、前記個々のプロセッサコアのそれぞれに関連するハードウェア特性に少なくとも部分的に基づいて前記個々のプロセッサコアに前記キャッシュメモリ内のメモリ空間を割り当てるように構成される、請求項１に記載のコンピューティングシステム。
【請求項６】
前記キャッシュコントローラは、前記キャッシュメモリにアクセスできる前記個々のプロセッサコアのそれぞれに、前記キャッシュメモリのロウのそれぞれに関する結合性のそれぞれのレベルを割り当てるように構成される、請求項１に記載のコンピューティングシステム。
【請求項７】
前記キャッシュメモリにアクセスするように構成される前記個々のプロセッサコアのそれぞれは、複数の中位アドレスビットを含むアドレスを出力するように構成され、前記キャッシュコントローラは、前記キャッシュメモリ内のメモリセルのそれぞれのロウを選択するためのインデックスとして前記中位アドレスビットを使用するように構成される、請求項１に記載のコンピューティングシステム。
【請求項８】
前記キャッシュメモリにアクセスするように構成された前記個々のプロセッサコアのそれぞれは、複数の上位アドレスビットを含むアドレスを出力するように構成され、前記キャッシュコントローラは、前記個々のプロセッサコアの１つからのアドレスの前記上位アドレスビットを、格納されたタグのそれぞれと比較することによって、前記キャッシュメモリ内に格納されたそれぞれの前記タグとして前記上位アドレスビットを使用するように構成され、前記キャッシュコントローラは、前記個々のプロセッサコアの前記１つである個々のプロセッサコアに、前記タグが格納される位置に対応する前記キャッシュメモリ内の位置に格納されたデータにアクセスさせるために、アドレスの前記上位アドレスビットと前記格納されたタグの１つとの間の一致に応答するように構成される、請求項１に記載のコンピューティングシステム。
【請求項９】
前記キャッシュメモリにアクセスするように構成された前記個々のプロセッサコアのそれぞれは、複数の下位アドレスビットを含むアドレスを出力するように構成され、前記キャッシュコントローラは、前記キャッシュメモリのロウに格納されたデータの複数のビットを選択するのに前記下位アドレスビットを使用するように構成される、請求項１に記載のコンピューティングシステム。
【請求項１０】
前記キャッシュメモリの各カラムは、ビットベクトルを格納するように構成され、前記キャッシュコントローラは、前記個々のプロセッサコアのどれが前記キャッシュメモリのそれぞれの前記カラムにアクセスできるのかを判定するのに前記ビットベクトルを使用するように構成される、請求項１に記載のコンピューティングシステム。
【請求項１１】
前記キャッシュコントローラは、ライトバックキャッシュ書込ポリシを使用して命令およびデータを前記キャッシュメモリに書き込ませるように構成される、請求項１に記載のコンピューティングシステム。
【請求項１２】
前記キャッシュコントローラは、前記個々のプロセッサコアのそれぞれに関連するハードウェア特性に少なくとも部分的に基づいて、関連性のそれぞれのレベルを有する前記キャッシュメモリにアクセスするように構成された前記個々のプロセッサコアのそれぞれによってキャッシュメモリがアクセスされることを可能にするように構成される、請求項１に記載のコンピューティングシステム。
【請求項１３】
前記キャッシュコントローラは、前記複数の個々のプロセッサコアの少なくともいくつかに関連する実行のスレッドの実行特性に少なくとも部分的に基づいて、結合性のそれぞれのレベルを有する前記複数の個々のプロセッサコアの前記少なくともいくつかによって前記キャッシュメモリがアクセスされることを可能にするように構成される、請求項１に記載のコンピューティングシステム。
【請求項１４】
複数のプロセッサコアがキャッシュメモリにアクセスすることを可能にする方法であって、
前記複数のプロセッサコアのそれぞれにキャッシュメモリ結合性のそれぞれのレベルを割り当てることであって、前記複数のプロセッサコアの少なくとも１つに割り当てられるキャッシュメモリ結合性の前記レベルは、前記複数のプロセッサコアの別の少なくとも１つに割り当てられるキャッシュメモリ結合性の前記レベルとは異なる、割り当てることと、
前記複数のプロセッサコアのそれぞれが、前記割り当てられたそれぞれの結合性のレベルを有する前記キャッシュメモリにアクセスするのを容易にすることと
を含む方法。
【請求項１５】
ＬＲＵ置換ポリシを使用して前記キャッシュメモリ内に格納されたデータを追い出すことをさらに含む、請求項１４に記載の方法。
【請求項１６】
前記複数のプロセッサコアのそれぞれに結合性のそれぞれのレベルを割り当てることは、前記キャッシュメモリにアクセスできる前記複数のプロセッサコアのそれぞれにキャッシュメモリのロウのそれぞれに関する結合性のそれぞれのレベルを割り当てることを含み、前記ロウのいくつかに割り当てられる結合性の前記レベルは、前記ロウのうち他のものに割り当てられる結合性の前記レベルとは異なる、請求項１４に記載の方法。
【請求項１７】
特定の量より多くの非ループ命令を含むスレッドを識別することと、
キャッシュ不能フラグを用いて前記識別されたスレッドをマークすることと、
前記マークされたスレッドが前記キャッシュメモリ内に格納されることを阻止することと
をさらに含む、請求項１４に記載の方法。
【請求項１８】
前記複数のプロセッサコアのそれぞれに結合性のそれぞれのレベルを割り当てることは、前記割り当てられた結合性のレベルが時間に伴って変化するように、前記複数のプロセッサコアのそれぞれに結合性のレベルを動的に割り当てることを含む、請求項１４に記載の方法。
【請求項１９】
コンピューティングシステムにおいて複数のプロセッサコアがキャッシュメモリにアクセスすることを可能にする手順を実行するコンピュータ実行可能命令をその上に格納したコンピュータアクセス可能媒体であって、前記手順は、
前記複数のプロセッサコアのそれぞれにキャッシュメモリ結合性のそれぞれのレベルを割り当てることであって、前記複数のプロセッサコアの少なくとも１つに割り当てられるキャッシュメモリ結合性の前記レベルは、前記複数のプロセッサコアの別の少なくとも１つに割り当てられるキャッシュメモリ結合性の前記レベルとは異なる、割り当てることと、
前記複数のプロセッサコアのそれぞれが、前記割り当てられたそれぞれの結合性のレベルを有する前記キャッシュメモリにアクセスするのを可能にすることと
を含む、コンピュータアクセス可能媒体。
【請求項２０】
前記複数のプロセッサコアのそれぞれにキャッシュメモリ結合性のそれぞれのレベルを割り当てることは、前記複数のプロセッサコアのそれぞれを前記キャッシュメモリの複数のロウのそれぞれ内の特定のカラムに関連付けることを含む、請求項１９に記載のコンピュータアクセス可能媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
マルチコアプロセッサは、パーソナルコンピュータ（ＰＣ）領域、サーバ領域、および組込み領域を含む主要なマーケットセグメントで主流コンピューティングプラットフォームとして現れた。所与のチップ上のプロセッサコアの数が増えるにつれて、そのチップのローカルメモリに対する潜在的要求も増える。たとえば、プロセッサが命令を実行するときに、プロセッサは、より時間のかかる他の場所（たとえば、オフチップまたはメインメモリチップ上）でデータの検索を実行することを避けるために、その命令に関連するデータを見つけるためにまずそのオンチップキャッシュを調べる。複数のプロセッサコアが、一次キャッシュまたは、Ｌ２キャッシュもしくはＬ３キャッシュなどのキャッシュ階層内の他の場所のキャッシュのいずれかの、単一のキャッシュを共有することができる。複数のコアと共に、複数の入ってくるアプリケーションストリームが、共有キャッシュ空間を探す間にお互いと干渉する場合があり、その結果として、共有キャッシュに、したがってプロセッサに非効率的に動作させる場合がある。複数のコアに関係する他の要因も、効率を下げる場合がある。
【０００２】
しかし、すべてのアプリケーションが、追加のキャッシュリソースの可用性から実質的に利益を得るわけではない。一例が、データがキャッシュへとフェッチされ、処理され、その後、再利用される可能性が低い、ストリーミングアプリケーションである。したがって、等しい優先順位を有してキャッシュ空間を共有する異なるタイプのアプリケーションが、キャッシュリソースの準最適割当をもたらす場合がある。共有キャッシュの使用に関するプロセッサコアの間の衝突は、オフチップメモリへの追加の要求の結果として、待ち時間と電力との両方に関して高価である可能性がある。
【発明の概要】
【０００３】
複数のプロセッサコアと、少なくともいくつかのプロセッサコアによって共有されるキャッシュメモリとを有するマルチコアプロセッサに関係する技法を、全体的に説明する。マルチコアプロセッサを、処理コアのそれぞれにキャッシュメモリ結合性（ｃａｃｈｅ  ｍｅｍｏｒｙ  ａｓｓｏｃｉａｔｉｖｉｔｙ）のそれぞれのレベルを別々に割り当てるように構成することができる。
【０００４】
一例では、コンピューティングシステムが提供される。このコンピューティングシステムは、マルチコアプロセッサと、キャッシュメモリと、マルチコアプロセッサに結合されたキャッシュコントローラとを含むことができる。マルチコアプロセッサは、複数の個々のプロセッサコアを含むことができる。キャッシュメモリは、複数の個々のプロセッサコアの少なくともいくつかによってアクセス可能になるように構成され得る。キャッシュコントローラは、キャッシュメモリ内のメモリ空間を割り当てるように構成され得る。キャッシュコントローラは、複数の個々のプロセッサコアの少なくともいくつかに関して異なるそれぞれのレベルの結合性を伴う、複数の個々のプロセッサコアの少なくともいくつかによるキャッシュメモリへのアクセスを容易にするようにさらに構成され得る。
【０００５】
もう１つの例では、複数のプロセッサコアがキャッシュメモリにアクセスすることを可能にする方法が提供される。この方法は、複数のプロセッサコアのそれぞれにキャッシュメモリ結合性のそれぞれのレベルを割り当てることを含むことができる。複数のプロセッサコアの少なくとも１つに割り当てられるキャッシュメモリ結合性のレベルは、複数のプロセッサコアの別の少なくとも１つに割り当てられるキャッシュメモリ結合性のレベルとは異なるものとすることができる。この方法は、複数のプロセッサコアのそれぞれが、割り当てられたそれぞれの結合性のレベルを有するキャッシュメモリにアクセスするのを容易にすることをさらに含むことができる。
【０００６】
もう１つの例では、複数のプロセッサコアがコンピューティングシステム内のキャッシュメモリにアクセスすることを可能にする手順を実行するコンピュータ実行可能命令をその上に格納されたコンピュータアクセス可能媒体が提供される。この手順は、複数のプロセッサコアのそれぞれにキャッシュメモリ結合性のそれぞれのレベルを割り当てることを含むことができる。複数のプロセッサコアの少なくとも１つに割り当てられるキャッシュメモリ結合性のレベルは、複数のプロセッサコアの別の少なくとも１つに割り当てられるキャッシュメモリ結合性のレベルとは異なるものとすることができる。この手順は、複数のプロセッサコアのそれぞれが、割り当てられたそれぞれの結合性のレベルを有するキャッシュメモリにアクセスするのを可能にすることをさらに含むことができる。
【０００７】
複数の例が開示されるが、他の例が、次の詳細な説明から当業者に明白になるであろう。明白であるように、本明細書で説明されるシステム、装置、および方法を、本明細書の教示の趣旨および範囲から逸脱せずに、さまざまな明白な態様において変更することが可能である場合がある。したがって、この詳細な説明は、性質において例示的であって、制限的ではないとみなされなければならない。
【０００８】
本開示の前述および他の特徴は、添付図面に関連して解釈される次の説明および添付の特許請求の範囲からより十分に明白になる。これらの図面が、本開示による複数の例を示すのみであり、したがって、その範囲について限定的と考えられてはならないことを理解して、本開示を、添付図面の使用によって追加の限定性および詳細を伴って説明する。
【図面の簡単な説明】
【０００９】
【図１】本開示の少なくともいくつかの例に従って配置された、マルチコアプロセッサを示す概略図である。
【図２】本開示の少なくともいくつかの例に従って配置された、共有キャッシュメモリを示す概略図である。
【図３】本開示の少なくともいくつかの例に従って配置された、プロセッサコアによって個別に割り当てられる結合性のレベルを有するキャッシュメモリの例を示す概略図である。
【図４】本開示の少なくともいくつかの例に従って配置された、それぞれがアドレスを出力できる複数のプロセッサコアの例を示すブロック図である。
【図５】本開示の少なくともいくつかの例に従って配置された、複数のプロセッサコアによって出力されるアドレスの構成の例を示す概略図である。
【図６】本開示の少なくともいくつかの例に従って配置された、キャッシュメモリ内に格納されたタグをプロセッサコアからのアドレスの一部と比較するように構成された比較器を示すブロック図である。
【図７】本開示の少なくともいくつかの例に従って配置された、プロセッサコアによって個別に割り当てられる結合性のレベルを有するキャッシュメモリのもう１つの例を示す概略図である。
【図８】本開示の少なくともいくつかの例に従って配置された、キャッシュ割当のプロセスを示すブロック図である。
【図９】本開示の少なくともいくつかの例に従って配置された、キャッシュ割当のシステムおよびプロセスを示すブロック図である。
【図１０】本開示の少なくともいくつかの例に従って配置された、キャッシュ可能またはキャッシュ不能として処理スレッドを作るためにマルチコアプロセッサを構成する命令を格納する任意のコンピュータ可読媒体の例を示す図である。
【発明を実施するための形態】
【００１０】
次の詳細な説明では、本明細書の一部を形成する添付図面を参照する。図面では、文脈がそうではないと規定しない限り、同様の符号が、通常は同様のコンポーネントを識別する。この詳細な説明、図面、および特許請求の範囲で説明される例示的な例は、限定的であることを意図されたものではない。本明細書で提示される主題の趣旨または範囲から逸脱せずに、他の例を利用することができ、他の変更を行うことができる。本明細書で全体的に説明され図面に示された本開示の諸態様を、さまざまな異なる構成で配置し、置換し、組み合わせ、分離し、設計でき、そのすべてが本明細書で暗黙のうちに企図されることが、たやすく理解されるであろう。
【００１１】
本開示は、特に、キャッシュにアクセスする個々のプロセッサコアにキャッシュ内のメモリ空間を別々に割り当てることに関係する方法、装置、システム、およびコンピュータプログラム製品に引き付けられる。マルチコアプロセッサシステムでは、複数のアプリケーションが、別々のプロセッサコア上で並列に動作している場合があり、各プロセッサコアは、それ自体のメモリ要件を有する。しかし、メモリ空間は、有限である。チップの設計に依存して、個々のプロセッサコアが、１つまたは複数の他のプロセッサコアとローカルメモリ空間を共有しなければならない場合がある。このローカルメモリは、たとえば、レベル２（Ｌ２）キャッシュまたはレベル３（Ｌ３）キャッシュを含むことができる。
【００１２】
マルチプロセッサのいくつかのコアの要件が、そのプロセッサの他のコアの要件と異なる場合があり、これらの要件が、経時的に変化する場合もある。１つのそのような要件を、適切な処理性能を達成するのに必要なキャッシュメモリの量および／または特性とすることができる。たとえば、あるコアが、メインメモリ内のあるアドレスに格納されたデータをキャッシュメモリ内の１つの位置だけに格納できるようにするために直接マッピングされるキャッシュメモリへのアクセスを有するときに、そのコアが、適切に動作する場合がある。このタイプのキャッシュメモリは、その特性、より低いキャッシュヒットレート（そのコアの最適性能にクリティカルではない可能性がある）を犠牲にして、より短い待ち時間を提供することができる。その一方で、もう１つのコアが、たとえば、長い待ち時間を伴って良好に動作することができるが、相対的に高いキャッシュヒットレートを要求する場合がある。この要件を有するコアは、直接マッピングされるキャッシュメモリによって提供されるものより高い結合性のレベルを伴ってより効率的に動作することができる。たとえば、メインメモリ内のあるアドレスに格納されたデータを、４個の位置などキャッシュメモリ内の複数の異なる位置のうちの１つに格納することができる。そのようなキャッシュメモリは、Ｎウェイセットアソシアティブと呼ばれ、ここで、Ｎは、データをキャッシュメモリ内で格納できる位置の個数である。キャッシュメモリの結合性をコアによって割り当てることができるのと同様に、メインメモリに格納された命令またはデータをキャッシングするかどうかの判断は、さまざまな処理スレッドの特性によって変化する場合がある。たとえば、いくつかのスレッドが、同一の命令が繰り返してアクセスされることを必要とする可能性がある多数の命令ループを含む場合がある。これらのスレッドは、その命令をキャッシュ内に格納させることによって大きい利益を得ることができる。他のスレッドが、主に、低い局所性を有する命令からなる場合があり、その結果、命令のキャッシングによって大きい利益を得ない。他のスレッドが、非常に少数の分岐を有するスレッドなど、予測可能な形で実行される命令からなる場合がある。そのようなスレッド内の命令のキャッシングは、これらの命令の実行の予測可能性が、それらがプロセッサによる実行のために使用可能になるようにそれらをプリフェッチすることを簡単にするので、制限された利益を提供する場合もある。
【００１３】
本明細書で説明するように、マルチコアコンピューティング環境での共有キャッシュリソースの効率的な使用のさまざまな例が、開示される。どのプロセッサコアが異なる特性を有するキャッシュメモリへのアクセスから利益を得ることができるのかを理解することによって、異なるプロセッサコアがキャッシュメモリにアクセスできる形を、マルチコアプロセッサの異なるコアについて異なるものとすることができる。たとえば、キャッシュメモリを、あるプロセッサコアについて４ウェイセットアソシアティブとし、別のプロセッサコアについて２ウェイセットアソシアティブとし、もう１つのプロセッサコアについて直接マッピングとすることができる。さらに、プロセッサコアのアプリケーション実行特性または他の特性が経時的に変化するので、キャッシュ結合性は、動的に変化し、したがって全体的なシステム性能を動的に最適化することができる。他の例では、スレッドが、予測可能な形で実行されると期待できる命令を含むか、かなりの個数の非ループ命令（ストライデッド参照（ｓｔｒｉｄｅｄ  ｒｅｆｅｒｅｎｃｅ）と呼ばれる）を含む場合に、そのスレッドに、キャッシュ不能としてフラグを立てることができる。ストライデッド参照は非ループなので、ストライデッド参照を含むスレッドは、キャッシュメモリ内に格納されることから利益を得ない可能性がある。他のスレッドは、相対的に多数の非ストライデッド命令を含む場合があり、これらのスレッドは、キャッシュメモリに格納され得る。
【００１４】
図１は、本開示の少なくともいくつかの例によるマルチコアプロセッサ１００を示す概略図である。マルチコアプロセッサ１００は、プロセッサコアアレイ１０２を有する単一の集積回路を含むことができる。プロセッサコアアレイ１０２は、ある個数（Ｎ）のプロセッサコア１０４（１）〜１０４（Ｎ）を含むことができる。任意の適切な個数のプロセッサコア１０４を設けることができる。各プロセッサコア１０４は、一般に、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、ディジタル信号プロセッサ（ＤＳＰ）、またはその任意の組合せを含むがこれらに限定されない任意の所望の構成とすることができる。したがって、各プロセッサコア１０４は、プログラム命令を実行する論理ならびに、算術論理ユニット（ＡＬＵ）、浮動小数点ユニット（ＦＰＵ）、ディジタル信号処理（ＤＳＰ）コア、レジスタ、アキュムレータなどの他の機能ブロックを含むことができる。コア１０４のすべてまたは一部だけが、キャッシュメモリ（図示せず）を含むことができる。
【００１５】
マルチコアプロセッサ１００は、コア１０４のいずれか内の任意のキャッシュメモリに加えて、キャッシュメモリ１０６を含むことができる。キャッシュメモリ１０６を、揮発性または不揮発性とすることができる任意のタイプのメモリデバイスを用いて実施することができる。キャッシュメモリ１０６を、たとえば、２〜３例を挙げると、ダイナミックランダムアクセスメモリ（「ＤＲＡＭ」）デバイス、スタティックランダムアクセスメモリ（「ＳＲＡＭ」）デバイス、またはフラッシュメモリデバイスを用いて実施することができる。キャッシュメモリ１０６は、レベル１キャッシュなど、コア１０４に関して任意のレベルにあるものとすることができ、いくつかの例で、追加のレベルを含めても含めなくてもよい。キャッシュメモリ１０６を、コア１０４の一部またはすべてによって共有することができる。マルチコアプロセッサ１００は、下で詳細に説明するように、コア１０４がキャッシュメモリ１０６にアクセスできる形を制御するように適合され得るキャッシュコントローラ１１８を含むことができる。
【００１６】
マルチコアプロセッサ１００を、直接にまたはメモリコントローラ１２２などのインターフェースデバイスを介してのいずれかでメインメモリデバイス１２０に結合することができる。メインメモリデバイス１２０は、ＤＲＡＭデバイスまたはＳＲＡＭデバイスなどの揮発性メモリ、読取り専用メモリ（ＲＯＭ）デバイスまたはフラッシュメモリデバイスなどの不揮発性メモリ、磁気ディスクストレージ（たとえば、ハードディスクドライブすなわちＨＤＤ）、テープストレージ、光ストレージ（たとえば、コンパクトディスクすなわちＣＤ、ディジタル多用途ディスクすなわちＤＶＤ）などのデータストレージデバイス、またはリムーバブル、ノンリムーバブル、揮発性、もしくは不揮発性とすることができる他の機械可読記憶媒体を含むがこれらに限定されない任意の適切な形のメモリとすることができる。バス１１２は、マルチコアプロセッサ１００と、入出力（Ｉ／Ｏ）デバイス１１４、外部センサ、または類似物などの別のコンポーネントとの間のインターフェースをサポートすることもでき、あるいは、プロセッサコア１０４の任意のサブセットによって共有されるリソースとすることができる。
【００１７】
上で述べたように、マルチコアプロセッサ１００は、任意の適切な個数のプロセッサコア１０４を有することができる。たとえば、マルチコアプロセッサ１００は、２つのコア、４つのコア、１０個のコア、および数百個以上のプロセッサコアさえ有することができる。いくつかのマルチコアプロセッサは、プロセッサコアのそれぞれが単一のコア設計を使用するように、同種とすることができる。他のマルチコアプロセッサは、プロセッサコアのうちの１つまたは複数を他のプロセッサコアのうちの１つまたは複数と異なるものとすることができ、各コアまたはコアのサブセットをマルチコアプロセッサ１００内で異なる役割のために設計できるように、異種とすることができる。
【００１８】
マルチコアプロセッサ１００は、コアコントローラ１１６を含むことができる。コアコントローラ１１６を、「スレッド」として知られる処理タスクのどれが個々のプロセッサコア１０４によって処理されるのか、ならびにどのスレッドがキャッシュメモリ１０６に格納されまたは格納されないのかを判定するように構成することができる。この判定は、プロセッサコア１０４によって実行されるコードに挿入される、フラグなどのしるし（indicia）を基礎として行うことができる。このしるしを、ソースコードからのコンパイル中に実行可能コードに挿入することができ、あるいは、プロセッサコア１０４上で動作するオペレーティングシステムまたは他の手段によって挿入することができる。
【００１９】
図１は、マルチコアプロセッサの例示的概略であって、それに示されたコンポーネント物理的位置を示すものではない。本明細書で説明されるマルチコアプロセッサ１００が、例示的であることと、例および変更が可能であることとを了解されたい。設計選択は、たとえば、ハードウェアサイズおよび複雑さ対性能、熱エネルギ、および熱散逸、プロセッサ速度、全体的スループットなどの考慮によって駆動されるものとすることができる。
【００２０】
当業者によって了解されるように、マルチコアプロセッサ１００を、パーソナルコンピュータ（ＰＣ）などの適切なコンピューティング環境内に設けることができる。コンピューティング環境は、マルチコアプロセッサ１００、メインメモリ１２０、１つまたは複数のバス、キーボード、マウス、タッチスクリーン、ＣＲＴまたはＬＣＤベースのモニタなどのディスプレイデバイス、ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ（ＵＳＢ）または他のポート接続、ＣＤドライブ、ＤＶＤドライブなどの１つまたは複数のＩ／Ｏデバイス、および類似物を含むことができる。さまざまなコンポーネントの間のバス接続を、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）、ＰＣＩ  Ｅｘｐｒｅｓｓ、Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（ＡＧＰ）、ＨｙｐｅｒＴｒａｎｓｐｏｒｔ、または任意の他の適切なバスプロトコルなどのバスプロトコルを使用して実施することができ、異なるデバイスの間の接続は、異なるプロトコルを使用することができる。ＰＣは、１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境で動作することができる。そのようなリモートコンピュータは、たとえば、他のＰＣ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードとすることができ、マルチコアプロセッサ１００に関して上で説明した要素の多くまたはすべてを含むことができる。論理接続は、たとえば、ローカルエリアネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）、イントラネット、およびインターネットを含むことができる。
【００２１】
図２は、本開示の少なくともいくつかの例による、共有キャッシュメモリを示す概略図である。図２は、マルチコアプロセッサシステム内での使用に適する複数のプロセッサコア２０１〜２０４を示す。プロセッサコア２０１〜２０４のそれぞれは、コア２０１〜２０４の変化するサイズによって表されるように、異なる性能特性を有する可能性がある。たとえば、より大きいコア２０１および２０３は、より少ない複雑さのソフトウェアアプリケーションを処理するのに適切である可能性があるより小さいコア２０２および２０４と比較して、より高い性能を有し、より複雑なソフトウェアアプリケーションに適するものとすることができる。より多数またはより少数のコアを設けることができることと、コアを、均一なサイズまたは変化するサイズを有するものとすることができることと、本明細書でのコアの特定の説明が、限定的であることを意図されていないこととを了解されたい。
【００２２】
図３は、本開示の少なくともいくつかの例による、共有キャッシュメモリ３００を示す概略図である。図３に示されているように、キャッシュメモリ３００は、複数のプロセッサコア２０１〜２０４の間で個別に割り当てられる異なるレベルの結合性を有することができる。コア２０１〜２０４のそれぞれを、共有キャッシュメモリ３００との間でデータを転送するように配置することができる。キャッシュコントローラ１１８（図１）は、単独であれコアコントローラ１１６と組み合わされてであれ、コア２０１〜２０４のそれぞれがキャッシュメモリ３００にアクセスできる形を制御するように適合され得る。キャッシュメモリ３００は、リースト・リーセントリ・ユーズド（「ＬＲＵ」）置換ポリシなど、新しいエントリを用いてキャッシュエントリを追い出すための任意の適切な置換ポリシを使用することができる。プロセッサコア２０１〜２０４を、キャッシュメモリ３００がライトスルーキャッシュメモリ（プロセッサコア２０１〜２０４がキャッシュメモリ３００に書き込むたびにプロセッサコア２０１〜２０４がメインメモリ１２０に書き込む）またはライトバックキャッシュメモリ（プロセッサコア２０１〜２０４が命令またはデータをキャッシュメモリ３００に書き込むときにプロセッサコア２０１〜２０４が命令またはデータをメインメモリ１２０に即座には書き込まない）であることによるなど、任意の適切な書込ポリシを使用して命令およびデータをキャッシュメモリ３００に書き込むように構成することができる。他の書込ポリシを使用することもできる。
【００２３】
図４は、本開示の少なくともいくつかの例による、それぞれがアドレスを出力できる複数のプロセッサコア２０１〜２０４を示すブロック図である。より具体的に言うと、図４に示されているように、各プロセッサコア２０１〜２０４は、直接にまたはメモリコントローラ（図示せず）を介してのいずれかで、それぞれのアドレスＡ１〜４を出力することができる。アドレスＡ１〜４を使用して、メインメモリ１２０（図１）およびおそらくはキャッシュメモリ３００に格納されたデータを読み取ることができる。
【００２４】
図５は、本開示の少なくともいくつかの例によって配置された、複数のプロセッサコア２０１〜２０４によって出力されるアドレスＡ１〜４の構成の例を示す概略図である。図５に示されているように、アドレスＡ１〜４を、複数のアドレスビットから構成することができ、これらのアドレスビットを、下位アドレスビットＡＬ、中位アドレスビットＡＭ、および上位アドレスビットＡＨに分割することができる。どのビットをグループのそれぞれに配置すべきかの選択は、変化する可能性があり、複数の設計パラメータに依存する可能性がある。中位アドレスビットＡＭを、キャッシュメモリ３００内のメモリセルのそれぞれのロウを選択するためのインデックスとして使用することができる。したがって、異なるインデックスまたはインデックスの範囲は、キャッシュメモリ３００内のメモリセルの異なるロウを選択する。図３に示されているように、キャッシュメモリ３００は、概念的に、メモリセルの各ロウが複数のカラムに分割され、各カラムが個別にまたはグループとしてのいずれかでアドレッシングされ得るメモリ位置の「深さ」を有する、３次元アレイと考えることができる。実際には、図３に示されたロウの各カラムを、Ｎ個おきのカラムとすることができ、間にあるＮ個のカラムは、図３に示されたメモリ位置の「深さ」として働く。
【００２５】
キャッシュコントローラ１１８は、単独であれコアコントローラ１１６と組み合わされてであれ、それぞれＣ１〜Ｃ４によって指定されるプロセッサコア２０１〜２０４のうちの特定の１つによってアクセスされるキャッシュメモリ３００の各ロウ内のコラムのいくつかを指定するように適合され得る。たとえば、図３に示された最初のロウの最初の４つのカラムには、コア２０１によってのみアクセスでき、最初のロウの次の２つのカラムには、コア２０２によってのみアクセスでき、次の２つのカラムのそれぞれには、それぞれコア２０３およびコア２０４によってのみアクセスすることができる。図３にさらに示されているように、カラムのそれぞれの最初の位置は、コア２０１〜２０４のうちの特定の１つによって使用されるタグＴ１〜４を格納する。タグＴ１〜４を、メモリアドレスの上位ビットＡＨからなるものとすることができる。したがって、たとえば、最初のロウの最初の４つのカラムは、プロセッサコア２０１によってアクセスできるデータに対応する４つのタグＴ１を格納することができる。最初のロウの次の２つのカラムは、プロセッサコア２０２によってアクセスできるデータに対応する２つのタグＴ２を格納することができる。最後に、最初のロウの次の２つのカラムのそれぞれは、それぞれプロセッサコア２０３および２０４によってアクセスできるデータにそれぞれ対応する単一のタグＴ３およびＴ４を格納することができる。タグＴ１〜４のそれぞれに対応するデータを、各カラム内のメモリ位置に格納することができ、このデータには、下位アドレスビットＡＬによってアクセスすることができる。
【００２６】
図６は、本開示の少なくともいくつかの例による、キャッシュメモリ３００内に格納されたタグをプロセッサコア２０１〜２０４のうちの１つからのアドレスの一部と比較するように構成された比較器５００のブロック図である。動作中に、たとえば、プロセッサコア２０１は、メインメモリ１２０からデータを読み取るためにアドレスＡ１を発行することができる。アドレスＡ１の中央ビットＡＭは、キャッシュメモリ３００内のメモリセルの対応するロウに格納されたタグにアクセスするためのインデックスとして使用される。図５に示されているように、ロウの最初の４つのカラム内のタグＴ１が、比較器５００に順次適用され、比較器５００は、キャッシュコントローラ１１８（図１）の一部、ある他のコンポーネントの一部、または独立のデバイスとすることができる。次に、比較器５００は、タグＴ１のそれぞれを、アドレスＡ１の上位アドレスビットＡＨと比較する。一致の場合には、比較器５００は、「ヒット」表示情報を出力し、このヒット表示情報は、アドレスＡ１に対応するデータが、キャッシュメモリ３００ならびにメインメモリ１２０内に格納されていることを示す。ヒット表示情報は、インデックスＡＭに対応するロウおよびタグＴが格納されているカラムに格納されたデータにアクセスするのに下位アドレスビットＡＬを使用することによって、アドレスＡ１に対応するデータにアクセスするためにキャッシュコントローラ１１８によって使用され得る。
【００２７】
上で説明し、図３に示したように、プロセッサコア２０１によって発行されたメモリアドレスＡ１に対応するデータは、アドレスＡ１の中位ビットＡＭによって指定されるロウ内の４つカラムのいずれか１つに格納される可能性がある。プロセッサコア２０１によって読み取られるデータがキャッシュメモリ３００内の４つのカラム（カラムＣ１によって指定される）のうちのいずれか１つに格納され得る限り、キャッシュメモリ３００は、プロセッサコア２０１について４ウェイセットアソシアティブと考えられる。しかし、本開示の原理によれば、キャッシュメモリ３００は、他のプロセッサコア２０２〜２０４について結合性の異なるレベルを有することができる。たとえば、プロセッサコア２０２によって読み取られるデータは、キャッシュメモリ３００内の２つのカラム（カラムＣ２によって指定される）のうちのいずれか１つに格納され得、その結果、キャッシュメモリ３００は、プロセッサコア２０２について２ウェイセットアソシアティブと考えられる。最後に、プロセッサコア２０３および２０４のそれぞれによって読み取られるデータは、１つのカラム（それぞれＣ３およびＣ４によって指定される）にのみ格納され得るので、キャッシュメモリ３００は、プロセッサコア２０３および２０４について直接マッピングされると考えられる。各プロセッサコア２０１〜２０４の結合性のレベルを、たとえば、プロセッサコアのそれぞれの特性もしくは能力またはプロセッサコアのそれぞれによって実行されているソフトウェアの性質に基づくものとすることができる。
【００２８】
プロセッサコア２０１〜２０４の結合性のレベルを、固定されたものとすることができるが、いくつかの例では、各プロセッサコア２０１〜２０４の結合性のレベルを動的とすることができ、その結果、結合性のレベルが、プロセッサコアによって実行されているソフトウェアの性質などの条件が変化するときに変化することができるようになる。そのような場合に、キャッシュコントローラ１１８を、個数においてプロセッサコアの結合性の現在のレベルに対応するメインメモリ１２０への各書込に応答してキャッシュメモリ３００にタグを格納するように再プログラムすることができる。たとえば、プロセッサコア２０２に関するキャッシュメモリ３００の結合性のレベルが、２ウェイセットアソシアティブから３ウェイセットアソシアティブに増やされる場合に、プロセッサコア２０１に関するキャッシュメモリ３００の結合性のレベルを、それに対応して４ウェイセットアソシアティブから３ウェイセットアソシアティブに下げることができる。そのような場合に、図３でＣ１によって指定される４番目のカラムが、プロセッサコア２０２によるアクセスのために使用可能になり、今はＣ２によって指定されるようになる。
【００２９】
各プロセッサコア２０１〜２０４に関するキャッシュメモリ３００の結合性のレベルを、メモリセルのロウのすべてについて同一とすることができるが、いくつかの実施形態では、キャッシュコントローラ１１８は、ロウごとのベースでプロセッサコア２０１〜２０４に伴って変化するキャッシュメモリ３００の結合性のレベルをセットすることができる。たとえば、キャッシュメモリ３００のロウＮを、プロセッサコア２０１のために４ウェイセットアソシアティブとすることができ、キャッシュメモリ３００のロウＮ＋Ｍではプロセッサコア２０１のために２ウェイセットアソシアティブとすることができる。
【００３０】
図３の例に示されたキャッシュメモリ３００の各カラムには、個々のプロセッサコア２０１〜２０４のうちの単一の１つによってのみアクセスできるが、他の実施形態では、キャッシュメモリ３００の各カラムに、個々のプロセッサコア２０１〜２０４のうちの１つまたは複数によってアクセスすることができる。たとえば、図７は、本開示の少なくともいくつかの他の例による、共有キャッシュメモリ３００を示す概略図である。図７に示されているように、キャッシュメモリ３００へのアクセスは、単独であれコアコントローラ１１６と組み合わされてであれ、キャッシュコントローラ１１８によって制御される。キャッシュコントローラ１１８を、それぞれのビットベクトルＶの値に依存してプロセッサコア２０１〜２０４のうちの任意の１つまたは複数によってアクセスされるキャッシュメモリ３００の各ロウ内のカラムＣ１〜４のそれぞれを指定するように適合させることができ、ビットベクトルＶを、それぞれのカラム内の最初の位置に格納することができる。たとえば、ビットベクトルＶを、ベクトルの各ビットがプロセッサコア２０１〜２０４のうちのそれぞれの１つに対応する、４ビットベクトルとすることができる。ビットベクトルが「１」である場合には、そのカラムに、プロセッサコア２０１〜２０４のうちの対応する１つによってアクセスすることができる。たとえば、あるカラムのビットベクトルＶが「１０１０」である場合には、そのカラムに、プロセッサコア２０１またはプロセッサコア２０３のいずれかによってアクセスすることができる。「１１１１」のビットベクトルＶを有するカラムの場合には、そのカラムに、４つのプロセッサコア２０１〜２０４の任意の１つによってアクセスすることができる。
【００３１】
カラムのそれぞれのビットベクトルＶの特定の値にかかわりなく、カラムのそれぞれの最初の位置は、そのカラムにアクセスできるコア２０１〜２０４による使用のためにタグＴを格納する。タグＴは、図３のキャッシュメモリ３００に格納されるタグＴ１〜４と同一の構成を有することができ、図３のキャッシュメモリ３００に格納されるＴ１〜４と同一の形で使用され得る。具体的に言うと、タグＴには、下位アドレスビットＡＬによってアクセスすることができ、比較器５００は、タグＴのそれぞれをアドレスＡ１の上位アドレスビットＡＨと比較することができる。一致の場合には、比較器５００は、「ヒット」表示情報を出力し、このヒット表示情報を、アドレスＡ１に対応するデータにアクセスするのにキャッシュコントローラ１１８によって使用することができる。
【００３２】
本開示のもう１つの態様によれば、キャッシュコントローラ１１８を、プロセッサコア２０１〜２０４上で動作している実行のアプリケーションスレッド（以下では「スレッド」と呼ぶ）に少なくとも部分的に基づいて、メインメモリ１２０内に格納されたキャッシュデータをキャッシングすべきかどうかを判定するように構成することができる。たとえば、あるアプリケーションは、スレッド内の命令またはスレッドによって使用されるデータがキャッシュメモリ３００に格納されるときにより効率的に動作することができるが、別のアプリケーションの効率は、スレッド内の命令またはスレッドによって使用されるデータがキャッシュメモリ３００に格納されることによって大きくは利益を得ない場合がある。たとえば、キャッシュメモリ３００内に命令またはデータを格納するための判断を、スレッドの局所性を参照することによって達成することができる。たとえば、あるアプリケーションプログラム内で、いくつかの命令がループされる（複数回実行される）が、他の命令がループされない（単一回だけ実行される）場合がある。そのような非ループ命令を、ストライデッド参照と呼ぶ。ストライデッド参照は非ループであり、たとえば、同一の命令を複数回繰り返さないので、ストライデッド参照は、キャッシュメモリ３００に格納されることから利益を得ない可能性がある。他の命令は、予測可能な形で実行される場合があり、この場合には、それらの命令を、メインメモリ１２０からプリフェッチすることができ、したがって、それらの命令をキャッシュメモリ内に格納する必要を減らすことができる。
【００３３】
図８は、本開示の少なくともいくつかの例による、キャッシュ割当のプロセスを示すブロック図である。図８に示されているように、複数の実行のスレッド５０１〜５０２を含むことができるコンピューティング環境５００からの命令を、それらの命令がループされるのかループされないのか（たとえば、分岐プレディクタ６００がこの命令を複数回見たかどうか）の判定のために分岐プレディクタ６００に送ることができる。分岐プレディクタ６００が、命令がループされず、したがってストライデッド参照であると判定する場合には、命令が絶対に共有キャッシュメモリ３００に送られないように、キャッシュ不能フラグを用いて命令をマークすることができる［ブロック６０１］。その代わりに、分岐プレディクタ６００が、命令がループされると判定する場合には［ブロック６０２］、命令をキャッシュメモリ３００に送ることができる。したがって、キャッシュメモリ３００へのアクセスを、キャッシュ空間からより大きい利益を有することのできる命令に制限することができる。
【００３４】
ソフトウェアアプリケーション実行特性が、動的に変化する場合があることを了解されたい。したがって、本明細書で開示される例のうちの１つまたは複数では、キャッシュ不能フラグを用いて命令をマークする判断（ブロック６０１）を、動的な形で経時的に変化するように構成することができる。
【００３５】
図９は、本開示の少なくともいくつかの例による、キャッシュ割当のシステムおよびプロセスを示すブロック図である。図９に示されているように、コンピュータシステム７００は、共有キャッシュを区分するプロセスの例を実行するように構成されたプロセッサ７０１を含むことができる。他の例では、プロセスのさまざまな動作またはさまざまな動作の諸部分を、プロセッサ７０１の外部で実行することができる。動作７０２では、プロセスは、プロセッサコア２０１〜２０４のうちの少なくとも１つ（１つまたは複数）に関連して実行される少なくとも１つ（１つまたは複数）のスレッドの特性を判定することを含むことができる。動作７０４では、プロセスは、コアコントローラ１１６（図１）が、スレッドの特性に少なくとも部分的に基づいて、マルチコアプロセッサに結合されたソフトウェアを使用して、個々のプロセッサコア２０１〜２０４にキャッシュメモリ３００内のメモリ空間を別々に割り当てることを含むことができる。
【００３６】
図１０に、本開示の少なくともいくつかの例による、キャッシュ可能またはキャッシュ不能として処理スレッドを作るためにマルチコアプロセッサを構成する命令を格納するように配置された任意のコンピュータ可読媒体８０２の例を示す。コンピュータ可読媒体８０２は、オペレーティングシステム、コンパイラ、またはアプリケーションなど、コンピュータプログラム製品８００の一部とすることができる。コンピュータ可読媒体８０２を、前に説明したプロセスまたは方法のうちの１つまたは複数を実行するようにマルチコアプロセッサを構成するように配置され得る命令８０４を格納するように適合させることができる。これらの命令８０４は、たとえば、処理スレッドがストライデッド参照を含む度合を判定する１つまたは複数の実行可能命令８０６を含むことができる。コンピュータ可読媒体８０２に格納される実行可能命令８０４は、処理スレッドがストライデッド参照を含むかどうかの判定に基づいてスレッドをキャッシュ可能またはキャッシュ不能としてマークするようにマルチコアプロセッサを構成する実行可能命令８０８をも含むことができる。コンピュータ可読媒体８０２に格納されるもう１つの実行可能命令８１０を、キャッシュ不能としてマークされなかったまたはキャッシュ可能としてマークされたスレッド内の命令をキャッシュメモリ内に格納するようにマルチコアプロセッサを構成するように配置することができる。
【００３７】
前述は、プロセッサコアベースのキャッシュ割当のさまざまな例を説明するものである。次は、プロセッサベースのキャッシュ割当の方法およびシステムの特定の例である。これらは、例示のみのためのものであって、限定的であることは意図されていない。
【００３８】
第１の例で開示されるのは、マルチコアプロセッサと、少なくとも２つのプロセッサコアによってアクセス可能な少なくとも１つのキャッシュメモリと、キャッシュメモリにアクセスする個々のプロセッサコアにキャッシュメモリ結合性を別々に割り当てる、マルチコアプロセッサに結合されたキャッシュコントローラとを含むコンピューティングシステムである。いくつかのさらなる例では、キャッシュメモリ結合性を、プロセッサコアのハードウェア特性に少なくとも部分的に基づいてプロセッサコアに割り当てることができる。他の例では、キャッシュメモリ結合性を、プロセッサコアに関連して実行される１つまたは複数のスレッドの実行特性に少なくとも部分的に基づいてプロセッサコアに割り当てることができる。いくつかのさらなる例では、キャッシュメモリ結合性の割当を、これが時間に伴って変化できるようにするために、動的に達成することができる。これらおよび他の例では、キャッシュメモリ結合性を、キャッシュメモリの異なるロウについて別々に決定することができる。さらに他の例では、システムまたはソフトウェアは、処理スレッド内のストライデッド参照を識別し、該スレッドの命令がキャッシュメモリ内に格納されないように、キャッシュ不能フラグを用いて該スレッドをマークするように構成された、分岐プレディクタなどの１つまたは複数のコンポーネントを含む。
【００３９】
本開示は、さまざまな態様の例示として意図された、本願で説明される特定の例に関して、限定されてはならない。当業者には明らかであろうが、本開示の趣旨および範囲から逸脱せずに、多数の修正形態および例を作ることができる。本明細書で列挙されるものに加えて、本開示の範囲に含まれる機能的に同等の方法および装置は、前述の説明から当業者には明白であろう。そのような修正形態および例は、添付の特許請求の範囲の範囲に含まれることが意図されている。本開示は、添付の特許請求の範囲に与えられる均等物のすべての範囲と共に、添付の特許請求の範囲の用語のみによって限定されなければならない。本開示が、もちろん変化することのできる特定の方法、試薬、化合物、合成物、または生体系に限定されてはならないことを理解されたい。本明細書で使用される用語法が、特定の例を説明するためのみのものであって、限定的であることを意図されていないことをも理解されたい。
【００４０】
本明細書での実質的にすべての複数形および／または単数形の用語の使用に関して、当業者は、文脈および／または応用例に適切に、複数形から単数形におよび／または単数形から複数形に変換することができる。さまざまな単数／複数の置換が、明瞭にするために本明細書で明示的に示される場合がある。
【００４１】
一般に、本明細書、特に添付の特許請求の範囲（たとえば、添付の特許請求の範囲の本体）で使用される用語が、一般に、「開かれた」用語として意図されている（たとえば、用語「ｉｎｃｌｕｄｉｎｇ（含む）」は、「ｉｎｃｌｕｄｉｎｇ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ（を含むがこれに限定されない）」と解釈されなければならず、用語「ｈａｖｉｎｇ（有する）」は、「ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ（少なくとも〜を有する）」と解釈されなければならず、用語「ｉｎｃｌｕｄｅｓ（含む）」は、「ｉｎｃｌｕｄｅｓ  ｂｕｔ  ｎｏｔ  ｌｉｍｉｔｅｄ  ｔｏ（を含むがこれに限定されない）」と解釈されなければならないなど）ことが、当業者によって理解されるであろう。
【００４２】
さらに、特定の個数の導入される請求項記述が意図される場合には、そのような意図が、特許請求の範囲で明示的に記述され、そのような記述がない場合には、そのような意図が存在しないことが、当業者によって理解されるであろう。たとえば、理解の助けとして、次の添付の特許請求の範囲は、請求項記述を導入するために導入句「ａｔ  ｌｅａｓｔ  ｏｎｅ（少なくとも１つの）」および「ｏｎｅ  ｏｒ  ｍｏｒｅ（１つまたは複数の）」の使用を含む場合がある。しかし、そのような句の使用は、同一の請求項が導入句「ｏｎｅ  ｏｒ  ｍｏｒｅ」または「ａｔ  ｌｅａｓｔ  ｏｎｅ」および「ａ」または「ａｎ」などの不定冠詞を含むときであっても、不定冠詞「ａ」または「ａｎ」による請求項記述の導入が、そのように導入された請求項記述を含む任意の特定の請求項を１つのみのそのような記述を含む例に限定することを暗示すると解釈されてはならず（たとえば、「ａ」および／または「ａｎ」は、「ａｔ  ｌｅａｓｔ  ｏｎｅ」または「ｏｎｅ  ｏｒ  ｍｏｒｅ」を意味すると解釈されなければならない）、同一のことが、請求項記述を導入するのに使用される定冠詞の使用にもあてはまる。さらに、特定の個数の導入される請求項記述が明示的に記述される場合であっても、当業者は、そのような記述を、少なくとも記述された数を意味する（たとえば、他の修飾成句を伴わない「２つの記述」という裸の記述は、少なくとも２つの記述または複数の記述を意味する）と解釈しなければならないことを認めるであろう。
【００４３】
さらに、「ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ａ，  Ｂ，  ａｎｄ  Ｃ，  ｅｔｃ．（Ａ、Ｂ、およびＣのうちの少なくとも１つ、など）」に類似する慣例が使用される場合に、一般に、そのような構文は、当業者がその慣例を理解する意味であることが意図されている（たとえば、「ａ  ｓｙｓｔｅｍ  ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ａ，  Ｂ，  ａｎｄ  Ｃ（Ａ、Ｂ、およびＣのうちの少なくとも１つを有するシステム）」は、Ａのみ、Ｂのみ、Ｃのみ、ＡとＢとを一緒に、ＡとＣとを一緒に、ＢとＣとを一緒に、ならびに／またはＡ、Ｂ、およびＣを一緒に有するシステムを含むが、これに限定はされないなど）。「ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ａ，  Ｂ，  ｏｒ  Ｃ，  ｅｔｃ．（Ａ、Ｂ、またはＣのうちの少なくとも１つ、など）」に類似する慣例が使用される場合に、一般に、そのような構文は、当業者がその慣例を理解する意味であることが意図されている（たとえば、「ａ  ｓｙｓｔｅｍ  ｈａｖｉｎｇ  ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ａ，  Ｂ，  ｏｒ  Ｃ（Ａ、Ｂ、またはＣのうちの少なくとも１つを有するシステム）」は、Ａのみ、Ｂのみ、Ｃのみ、ＡとＢとを一緒に、ＡとＣとを一緒に、ＢとＣとを一緒に、ならびに／またはＡ、Ｂ、およびＣを一緒に有するシステムを含むが、これに限定はされないなど）。さらに、複数の代替の項目を提示する事実上すべての離接的単語および／または句は、この説明、特許請求の範囲、または図面のいずれに含まれるものであれ、項目のうちの１つ、項目のいずれか、または両方の項目を含む可能性を企図すると理解されなければならないことが、当業者によって理解されるであろう。たとえば、句「Ａ  ｏｒ  Ｂ（ＡまたはＢ）」は、「Ａ」または「Ｂ」または「ＡおよびＢ」の可能性を含むと理解される。
【００４４】
さらに、本開示の特徴または態様が、Ｍａｒｋｕｓｈ  ｇｒｏｕｐに関して説明される場合に、当業者は、本開示が、これによってＭａｒｋｕｓｈ  ｇｒｏｕｐの任意の個々のメンバまたはメンバのサブグループに関しても説明されることを認めるであろう。
【００４５】
当業者によって理解されるように、書かれた説明を提供することに関してなど、すべてにおいて、本明細書で開示されるすべての範囲は、任意のすべての可能な部分範囲およびその部分範囲の組合せをも包含する。すべてのリストされた範囲を、少なくとも等しい半分、１／３、１／４、１／５、１／１０などに分割された同一の範囲を十分に記述し、可能にするものとしてたやすく認めることができる。非限定的な例として、本明細書で述べられる各範囲を、下側１／３、中央１／３、および上側１／３などにたやすく分解することができる。やはり当業者によって理解されるように、「ｕｐ  ｔｏ（まで）」、「ａｔ  ｌｅａｓｔ（少なくとも）」、「ｇｒｅａｔｅｒ  ｔｈａｎ（より大きい）」、「ｌｅｓｓ  ｔｈａｎ（より小さい）」、および類似物などのすべての言葉は、記述された数を含み、その後に上で述べたように部分範囲に分割され得る範囲に言及する。最後に、当業者によって理解されるように、範囲は、各個々のメンバを含む。したがって、たとえば、１〜３個のアイテムを有する群は、１個、２個、または３個のアイテムを有する群に言及する。同様に、１〜５個のアイテムを有する群は、１個、２個、３個、４個、または５個のアイテムを有する群に言及するなどである。
【００４６】
前述の詳細な説明は、ブロック図、流れ図、および／または例の使用を介してデバイスおよび／またはプロセスのさまざまな例を示し、そのようなブロック図、流れ図、および／または例は、１つまたは複数の機能および／または動作を含むが、そのようなブロック図、流れ図、または例に含まれる各機能および／または各動作を、個別におよび／または集合的に、広範囲のハードウェア、ソフトウェア、ファームウェア、または事実上すべてのその組合せによって実施できることが、当業者によって理解されるであろう。一例では、本明細書で説明される主題の複数の部分を、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディジタル信号プロセッサ（ＤＳＰ）、または他の集積フォーマットを介して実施することができる。しかし、当業者は、本明細書で開示される例のいくつかの態様を、全体的にまたは部分的に、集積回路内で、１つまたは複数のコンピュータ上で動作する１つまたは複数のコンピュータプログラムとして（たとえば、１つまたは複数のコンピュータシステム上で動作する１つまたは複数のプログラムとして）、１つまたは複数のプロセッサ上で動作する１つまたは複数のプログラムとして（たとえば、１つまたは複数のマイクロプロセッサ上で動作する１つまたは複数のプログラムとして）、ファームウェアとして、または事実上すべてのそれらの組合せとして同等に実施できることと、回路網の設計ならびに／あるいはソフトウェアおよびまたはファームウェアのコードの記述が、本開示を考慮すると当業者の技量に十分に含まれることとを認めるであろう。たとえば、ユーザが、速度および正確さが主要であると判定する場合に、ユーザは、主にハードウェア手段および／またはファームウェア手段を選ぶことができ、柔軟性が主要である場合には、ユーザは、主にソフトウェア実施態様を選ぶことができ、あるいは、やはりその代わりに、ユーザは、ハードウェア、ソフトウェア、および／またはファームウェアのある組合せを選ぶことができる。
【００４７】
さらに、当業者は、本明細書で説明される主題の機構を、さまざまな形でプログラム製品として配布できることと、本明細書で説明される主題の例示的な例が、配布を実際に実行するのに使用される信号担持媒体の特定のタイプにかかわりなく適用されることとを了解するであろう。信号担持媒体の例は、フロッピディスク、ハードディスクドライブ、コンパクトディスク（ＣＤ）、ディジタルビデオディスク（ＤＶＤ）、ディジタルテープ、コンピュータメモリ、その他などの記録可能型媒体と、ディジタル通信媒体および／またはアナログ通信媒体（たとえば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）などの伝送型媒体とを含むが、これらに限定はされない。
【００４８】
当業者は、当技術分野で、デバイスおよび／またはプロセスを本明細書で示す形で記述し、その後、工学的実践を使用して、そのように記述されたデバイスおよび／またはプロセスをデータ処理システムに統合することが一般的であることを認めるであろう。すなわち、本明細書で説明されるデバイスおよび／またはプロセスの少なくとも一部を、妥当な量の実験を介してデータ処理システムに統合することができる。当業者は、通常のデータ処理システムが、一般に、システムユニットハウジング、ビデオディスプレイデバイス、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびディジタル信号プロセッサなどのプロセッサ、オペレーティングシステム、ドライバ、グラフィカルユーザインターフェース、およびアプリケーションプログラムなどの計算エンティティ、タッチパッドまたはタッチスクリーンなどの１つまたは複数の対話デバイス、ならびに／あるいはフィードバックループおよび制御モータ（たとえば、位置および／または速度を感知するフィードバック、コンポーネントおよび／または量を移動しかつ／または調整する制御モータ）を含む制御システムのうちの１つまたは複数を含むことを認めるであろう。通常のデータ処理システムを、通常、データコンピューティング／通信および／またはネットワークコンピューティング／通信システムで見られるものなど、任意の適切な市販コンポーネントを利用して実施することができる。
【００４９】
本明細書で説明される主題は、時々、異なる他のコンポーネントに含まれるかこれに接続される異なるコンポーネントを示す。そのような図示のアーキテクチャが、単に例であることと、実際に、同一の機能性を達成する多数の他のアーキテクチャを実施できることとを理解されたい。概念的な意味で、同一の機能性を達成するためのコンポーネントのすべての配置は、所望の機能性が達成されるように効果的に「関連付けられる」。したがって、特定の機能性を達成するために組み合わされる本明細書の任意の２つのコンポーネントを、アーキテクチャまたは中間コンポーネントにかかわりなく、所望の機能性が達成されるように互いに「関連付けられる」とみなすことができる。同様に、そのように関連付けられた任意の２つのコンポーネントを、所望の機能性を達成するために互いに「動作可能に接続される」または「動作可能に結合される」とみなすこともでき、そのように関連付けられ得る任意の２つのコンポーネントを、所望の機能性を達成するために互いに「動作可能に結合可能である」とみなすこともできる。動作可能に結合可能の特定の例は、物理的に嵌合可能なコンポーネントおよび／または物理的に相互作用するコンポーネント、ならびに／あるいは無線で相互作用可能なコンポーネントおよび／または無線で相互作用するコンポーネント、ならびに／あるいは論理的に相互作用するコンポーネントおよび／または論理的に相互作用可能なコンポーネントを含むが、これらに限定はされない。
【００５０】
さまざまな態様および例を本明細書で開示したが、他の態様および例が、当業者に明白であろう。本明細書で開示されたさまざまな態様および例は、例示のためのものであって、限定的であることは意図されておらず、真の範囲および趣旨は、次の特許請求の範囲によって示される。
【図１】
2013502645.tif 000003
【図２】
2013502645.tif 000004
【図３】
2013502645.tif 000005
【図４】
2013502645.tif 000006
【図５】
2013502645.tif 000007
【図６】
2013502645.tif 000008
【図７】
2013502645.tif 000009
【図８】
2013502645.tif 000010
【図９】
2013502645.tif 000011
【図１０】
2013502645.tif 000012
【国際調査報告】
2013502645.tif 000013