(57)【要約】【課題】  オンチップネットワークにおけるパケットルーティング技術を提供すること。【解決手段】１つの実施形態において、オンチップネットワークによって接続された複数のコアを含むマルチコアプロセッサにおけるパケットのルーティング方法は、パケットのルーティング中に、不正であるポートを同定することを含む。入力ポートにおいてパケットを受信した後、パケットの出力ポートの選択中に、いくつかのポートは考慮から除外される。出力ポートは残りのポートから選択され、パケットは、選択された出力ポートへルートされる。【選択図】  図１
2011139413.tif 000002
【特許請求の範囲】
【請求項１】
オンチップネットワークによって接続された複数のコアを含むマルチコアプロセッサ内のパケットをルーティングする方法であって、
前記複数のコアに含まれるコアがプロセッサ及びネットワークスイッチを含み、前記コアの入力ポートにおいてパケットを受信することと、
前記パケットのための潜在的出力ポートとしての考慮から、前記複数のポートからの第１のポート群を除外することと、
前記複数のポートにおける残りのポートから前記パケットのための前記出力ポートを選択することと、
前記パケットを前記出力ポートへルーティングすることと
を含む方法。
【請求項２】
第１のポート群を除外することが、不正ポート予測器で前記第１のポート群を同定することをさらに含み、前記不正ポートが、前記第１のポート群を同定するために、前記複数のポートに少なくとも１つのブルームフィルタを適用する、請求項１に記載の方法。
【請求項３】
前記残りのポートのうち前記出力ポートである可能性が最も高いポートを同定するために、前記残りのポートをランク付けすることをさらに含む、請求項１に記載の方法。
【請求項４】
前記残りのポートが可能性に応じてランク付けされる、請求項１に記載の方法。
【請求項５】
前記パケットのための前記出力ポートの選択が、前記残りのポートを決定するために、前記複数のポートから前記第１のポート群を取り除くことをさらに含む、請求項１に記載の方法。
【請求項６】
２周期以下のクロック周期で前記出力ポートを選択することをさらに含む、請求項１に記載の方法。
【請求項７】
前記第１のポート群のいずれもが前記パケットのための前記出力ポートでないという完全な確実性をもって、前記第１のポート群を除外することをさらに含む、請求項１に記載の方法。
【請求項８】
マルチコアプロセッサのオンチップネットワーク内でパケットをルーティングする方法であって、前記マルチコアプロセッサが、前記オンチップネットワークによって接続されている複数のコアを含み、
複数のポートを含む、前記チップのコアのネットワークスイッチにおいて、前記複数のポートに含まれる出力ポートにルートされるパケットを受信することと、
そのいずれのポートも前記出力ポートでない第１のポート群を前記複数のポートから同定することと、
前記複数のポートに含まれる第２のポート群から前記出力ポートを選択することと、
前記パケットを前記出力ポートへルーティングすることと、
を含む方法。
【請求項９】
前記複数のポートから第１のポート群を同定することが、前記複数のポートのうちのポートであって、前記パケットのルーティングのための正しいポートではないポートを決定することをさらに含む、請求項８に記載の方法。
【請求項１０】
前記複数のポートから第１のポート群を同定することが、前記第１のポート群のいずれもが前記出力ポートでないことを、ブルームフィルタを使用して決定することをさらに含む、請求項９に記載の方法。
【請求項１１】
前記出力ポートを選択するために前記第２のポート群をランク付けすることをさらに含む、請求項８に記載の方法。
【請求項１２】
前記第２のポート群から前記出力ポートを選択する際の考慮から、前記第１のポート群を除外することをさらに含む、請求項８に記載の方法。
【請求項１３】
４周期以下のクロック周期で、前記出力ポートを選択することをさらに含む、請求項８に記載の方法。
【請求項１４】
２周期以下のクロック周期で、前記出力ポートを選択することをさらに含む、請求項８に記載の方法。
【請求項１５】
前記第１のポート群を考慮せずに、前記複数のポートから前記第２のポート群を同定することをさらに含む、請求項８に記載の方法。
【請求項１６】
前記特定のポートを同定する前に、前記第１のポート群が前記第２のポート群から除外される、請求項８に記載の方法。
【請求項１７】
前記複数のポートから第１のポート群を同定することがさらに、前記第１のポート群のいずれのポートも前記出力ポートでないという完全な確実性をもって決定することを含む、請求項８に記載の方法。
【請求項１８】
マルチコアプロセッサであって、複数のプロセッサコアを含み、少なくとも１つのコアが、
プロセッサと、
キャッシュと、
複数のポートであって、前記複数のポートのそれぞれが、入力ポートであることができ、前記複数のポートのそれぞれが出力ポートであることができる複数のポートと、
前記入力ポートにおいて受信したパケットを、前記パケットの到着時に、前記複数のポートから選択される前記出力ポートへルートするネットワークスイッチであって、前記出力ポートの選択時に前記複数のポートに含まれる第１のポート群を考慮から除外するネットワークスイッチと
を含む、マルチコアプロセッサ。
【請求項１９】
前記ネットワークスイッチが、第２のポート群を予測するために出力ポート予測器をさらに含み、前記出力ポートが、前記第２のポート群から選択され、前記パケットが前記選択された出力ポートへルートされる、請求項１８に記載のマルチコアプロセッサ。
【請求項２０】
前記第１のポート群が、前記第２のポート群から除外される、請求項１９に記載のマルチコアプロセッサ。
【請求項２１】
前記予測モジュールが、前記第２のポート群を、前記第２のポート群の各ポートが前記出力ポートである可能性に応じてランク付けする、請求項１９に記載のマルチコアプロセッサ。
【請求項２２】
前記ネットワークスイッチが、前記第１のポート群を同定するために不正ポート予測器をさらに含む、請求項１９に記載のマルチコアプロセッサ。
【請求項２３】
不正ポート予測器が、前記複数のポートから前記第１のポート群を同定するためにブルームフィルタを含む、請求項２２に記載のマルチコアプロセッサ。
【請求項２４】
前記不正ポート予測器が前記出力ポート予測器と並行して動作する、請求項２２に記載のマルチコアプロセッサ。
【請求項２５】
前記不正ポート予測器が、前記第１のポート群を同定するためにブルームフィルタを含む、請求項２２に記載のマルチコアプロセッサ。
【請求項２６】
前記出力ポート予測器の出力及び前記不正ポート予測器の出力から、前記出力ポートを選択するポート選択モジュールをさらに含む、請求項２２に記載のマルチコアプロセッサ。
【請求項２７】
各パケットが、２周期未満のクロック周期で、前記特定のポートへルートされる、請求項１８に記載のマルチコアプロセッサ。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
[0001]  コンピュータ産業において、プロセッサ技術の進歩は、絶えず達成されている。技術におけるこれらの進歩は、しばしば多様な方法で表される。例えば、クロック速度は、性能の指標とされることが多い。より高いクロック速度は、より良い性能を提供する。
【０００２】
[0002]  現在、プロセッサの性能はしばしば、クロック速度だけでなく、利用可能なプロセッサコアの数という点でも表される。例えば、デュアルコアプロセッサは通常、遅いクロック速度で動作する場合であっても、シングルコアプロセッサよりも高い性能を有する。
【０００３】
[0003]  マルチコアプロセッサの初期の発展において、コア（及びその他のコンポーネント）は、従来のバス技術を使用して接続されていた。しかし、このアプローチは、プロセッサ内のコア数が増加するにつれ、実行不能になり、実際は、マルチコアプロセッサの性能に悪影響を与えかねない。その結果、プロセッサの設計者は、オンチップネットワークの概念を検討し始めた。オンチップネットワークは、データ又はパケットを、従来のバス技術よりも速くルーティングすることを可能にする。
【発明の概要】
【発明が解決すべき課題】
【０００４】
[0004]  オンチップネットワークの発展にもかかわらず、マルチコアプロセッサの性能は、十分な発展の余地がある。例えば、従来のマルチコアプロセッサにおけるパケットのルーティング時間は、少なくとも、パケットが作成するよう要求されるホップの数及び各コアにおいてパケットをルートするのに要する時間によって決まる。オンチップネットワーク内で高いスループット及び少ない待ち時間を提供するための性能は、とりわけ、仮想化、コアサイズの上昇及びコア数の増加の動向という点でますます重要になっている。
【図面の簡単な説明】
【０００５】
【図１】[0005]  図１は、複数のプロセッサコアを含むマルチコアプロセッサのブロック図の例示的実施形態を示す。
【図２】[0006]  図２は、少なくともマルチコアプロセッサのプロセッサコアを接続するオンチップネットワークの一例を示すブロック図である。
【図３】[0007]  図３は、マルチコアプロセッサに含まれるコアの一例を示すブロック図である。
【図４】[0008]  図４は、オンチップネットワークで伝送されたパケットをルートするのに好適な、マルチコアプロセッサ内の各コアに含まれるネットワークスイッチの一例を示す。
【図５】[0009]  図５は、パケットのための出力ポートを選択する予測モジュールの一例を示す。
【図６】[0010]  図６は、パケットのための出力ポートを選択する際に考慮から除外されるポートの例を示す。
【図７】[0011]  図７は、オンチップネットワークにおいてパケットのルーティング方法の例示的実施形態のフロー図である。
【図８】[0012]  図８は、オンチップネットワークにおいてパケットのルーティング方法の別の例示的実施形態のフロー図である。
【図９】[0013]  図９は、マルチコアプロセッサを含む計算装置の一例を示す。
【発明を実施するための形態】
【０００６】
[0014]  以下の詳細な説明において、本明細書の一部をなす図面を参照する。図面では、文脈が別途指示する場合を除き、一般に同様の符号は同様の構成要素を示す。詳細な説明、図面及び請求の範囲に記載される例示的な実施例は、限定的であるようには意図されていない。本明細書に提示されている主題の精神又は範囲から逸脱することなく、他の実施例が使用されてよく、かつ他の変更もされてよい。本明細書において一般的に記載されかつ図示される本開示の態様が、多岐にわたる構成で配置され、置き換えられ、組み合わされ、かつ設計されることができ、それらの全てが明確に意図されているということが充分に理解されるだろう。
【０００７】
[0015]  本明細書に記載される実施形態は、マルチコアプロセッサのオンチップネットワークにおけるパケットのルーティングに関する。マルチコアプロセッサにおけるコア及びネットワークスイッチは、通常、複数のポートを含む。結果として、オンチップネットワークにおいて伝送されたパケットを、正しいポートに素早くルーティングすることは、マルチコアプロセッサの性能を向上させることができる。例えば、パケットをどこにルーティングするか決定するために費やす時間が少ないマルチコアプロセッサは、パケットをどのようにルーティングするか決定するためにより多くのクロック周期を費やすマルチコアプロセッサよりもより効率的であるだろう。
【０００８】
[0016]  マルチコアプロセッサにおけるパケットのルーティングは、本明細書に開示されるように、パケットのための出力ポートの選択を含む。この出力ポートの選択又は同定は、パケットのルーティング時にいくつかのポートを考慮から積極的に除外する。パケット数の削減は、正しい出力ポートの同定を容易にする。考慮から除外されるポートは、不正な出力ポートである。
【０００９】
[0017]  いくつかのポートの除外は、ある場合では、素早くパケットをルートするために、正しい出力ポートの予測と組み合わせられることができる。削減されたポート群から出力ポートを予測することによって、正しいポートを選択する可能性が高くなり、ポートの選択が、わずか１クロック周期で達成されることができる。
【００１０】
[0018]  図１は、複数のプロセッサコア１４０を含み、コンピュータ又は他の計算装置に含まれうるマルチコアプロセッサ１００のブロック図の例示的実施形態を示す。マルチコアプロセッサ１００は、コンピュータ及び処理を目的とする他の装置において使用されうる。マルチコアプロセッサ１００は、コンピュータにロード、記憶その他アクセス可能にされたソフトウェア又は他の実行可能な命令の動作又は実行に責任を有する。本明細書により詳細に記載されるとおり、マルチコアプロセッサ１００は、データをルーティングする間、特定のポートを考慮から除外することによって、データを内部でルーティングしうる。
【００１１】
[0019]  マルチコアプロセッサ１００は、プロセッサコア１４０を含む。プロセッサコア１４０は、コンピュータ又はコンピュータシステムにおいて命令を実行し、計算を実行し、また計算及び処理能力を提供する。プロセッサコア１４０は、入力／出力モジュール１０４を介して、コンピュータ内の他のモジュールやコンポーネントと通信することができる。入力／出力モジュール１０４は、しばしばシステムバス１０６上で運ばれるデータを受信／伝送することができる。
【００１２】
[0020]  入力／出力モジュール１０４は、ギガビットイーサーネット、ＸＡＵＩ、ＰＣｌｅ、ＪＴＡＧ、ＴＷＩなどを含むがこれらに限定されない複数のプロトコルに従い構成されるか又は実行可能である。入力／出力モジュール１０４はまた、必要があればデータの直列化／非直列化を行いうる。入力／出力モジュール１０４は、各プロトコルのために構成可能な個別のモジュールを含みうる。入力／出力モジュール１０４は、マルチコアプロセッサ１００又はコンピュータを他のコンピュータと、ローカルエリアネットワーク、インターネットなどのネットワーク上で通信できるようにしうる。例えば、マルチコアプロセッサ１００を有するサーバーコンピュータは、ネットワーク上でクライアントコンピュータと通信しうる。前述の例では、クライアントコンピュータは、マルチコアプロセッサ１００を含んでも、含まなくてもよい。
【００１３】
[0021]  マルチコアプロセッサ１００はまた、コントローラ１０２を含む。コントローラ１０２は、複数のコントローラ１０２を含みうるが、多様なキャッシュレベル、ＲＡＭなど又はこれらの組み合わせなどのシステムメモリへのアクセスを、プロセッサコア１４０に提供しうる。当業者は、マルチコアプロセッサ１００が他のモジュール（例えば、命令デコーダ、バスインターフェースユニット、アドレスジェネレータ、浮動小数点ユニット、整数実行ユニット、レジスタなど）を含みうることが理解できるだろう。さらに、マルチコアプロセッサ１００は、単一のチップに統合されうる。代替的に、本明細書に記載されたモジュールのいくつかは、互いに作用しあう個別のチップに統合されてもよい。
【００１４】
[0022]  図２は、少なくともマルチコアプロセッサ１００のプロセッサコア１４０を接続するオンチップネットワーク２００の一例を示すブロック図である。図２は、マルチコアプロセッサ１００内のプロセッサコア１４０のより詳細な図を提供する。プロセッサコア１４０は、コア２５０ａ、コア２５０ｂ及びコア２５０ｃを含む複数の個別のコア２５０を含む。文脈次第では、コア２５０への参照又は記述は、コア２５０ａ、コア２５０ｂ及びコア２５０ｃのそれぞれに適用される。同様に、コア２５０ａ、コア２５０ｂ及びコア２５０ｃへの参照又は記述はまた、文脈に従い、他のコア２５０に適用されうる。
【００１５】
[0023]  コア２５０のそれぞれは、総じて同一であるが、コア２５０のいくつかは、他のコアと構造的に異なる場合がある。例えば、コア２５０のいくつかのコアは、入力／出力モジュールと直接インターフェースしうるし、あるコアは、他のコアを介して入力／出力モジュールと通信しうる。コア２５０に含まれるコア２５０ａは、コア２５０を介してマルチコアプロセッサ１００のモジュール又はコンポーネントと通信しうる。
【００１６】
[0024]  コア２５０は、異なる構成又はトポロジーで構成されることができる。メッシュトポロジー、格子トポロジー、トーラストポロジー又はファットツリートポロジーは、本明細書において記載されるようにそれぞれが接続されうるコアトポロジーの例である。
【００１７】
[0025]  コア２５０のそれぞれは、プロセッサコア１４０における他のコアとは独立して機能することができるプロセッサを含む。コア２５０のぞれぞれは、必要があれば通常それ自身においてコンピュータプログラムを実行することができる。マルチコアプロセッサ１００の１つの利点は、コア２５０が、アプリケーションの実行又は命令の実行などのために集合的に（例えば、並行して）作動することができることである。
【００１８】
[0026]  アプリケーションを集合的に実行する際、コア２５０は、実行されているアプリケーション内で異なる責任を有しうる。結果として、マルチコアプロセッサ１００は、単一のコアでアプリケーションを実行する場合又は単一のコアプロセッサと比較すると、より早く同じアプリケーションを実行することができる。加えて、コア２５０は、同時にコンピューティングシステム内の異なるアプリケーション又はプロセスにおいて動作することができる。これは、例えば、いくつかのコア２５０が１つのアプリケーションを実行する一方で、他のコア２５０が他のアプリケーション又はプロセスを実行することを許可する。加えて、コア２５０は、アプリケーションプロセスを切り替えることもできる。
【００１９】
[0027]  マルチコアプロセッサ１００におけるプロセス又はアプリケーションの実行時、データ（例えば、アプリケーションデータ、アドレス、命令など）を1つのコア１５０から別のコア２５０へ（例えば、コア２５０ｂから２５０ｃへ）移動させる必要があるかもしれない。これは、コネクション２５２を含むオンチップネットワーク２００を使用してしばしば達成されうる。
【００２０】
[0028]  図２において、コネクション２５２は、コア２５０を互いに接続させるために使用されている。全てのコア２５０が直接互いに接続されない（例えば、コア２５０ｂがコア２５０aに直接接続されていない）一方で、コネクション２５２は、コア２５０のいずれもが他のコア２５０と、直接又は1つ以上の他のコアを介して通信できることを確実にする。例えば、コア２５０がグリッド構成で配置されている場合、コア２５０は、コネクション２５２を、上、右、左及び下の方向に有しうる。本例では、各コネクション２５２は、複数のチャネル２０２を含みうる。このチャネルは、コア２５０間の物理接続を含みうる。結果として、複数のチャネルは、直接接続されたコア２５０間に存在しうる。
【００２１】
[0029]  図３は、マルチコアプロセッサ１００に含まれるコア２５０ａの一例を示すブロック図である。コア２５０ａは、プロセッサ３０２、キャッシュ３０４及びネットワークスイッチ３００を含む。コネクション２５２を使用したデータの配信又は転送の能力は、各コア２５０にネットワークスイッチ３００を提供することによって達成される。ネットワークスイッチ３００は、コネクション２５２の例であるコネクション３０６、コネクション３０８、コネクション３１０及びコネクション３１２によって、他のコア内の隣接するネットワークスイッチに接続されうる。前述のとおり、コネクション２５２、３１２、３０６、３０８及び３１０のそれぞれは、通常、複数のチャネルを含む。結果として、コア２５０ａは、複数のチャネルを介して、隣接の又は直接接続されたコア２５０と通信することができる。
【００２２】
[0030]  ネットワークスイッチ３００は、ポート３２０を介して、コネクション３０６、３０８、３１０及び３１２とインターフェースする。より具体的には、コネクション３１２、３０６、３０８及び３０８のそれぞれによって表されるチャネルは、ポート３２０に含まれる特定のポートに接続される。１つの例では、ネットワークスイッチ３００のポート３２０は、およそ１０のポート、２０のポート又はそれ以上のポートを含む。本例では、コア２５０ａは、少なくとも４つの他のポートと通信しうる。
【００２３】
[0031]  各コネクションは、例としては、５つのチャネルに対応する５つのポートを含みうる。各コネクションが、対応するポートより多い又は少ないチャネルを含みうることは、当業者には理解されよう。本例において、５つのチャネルのそれぞれは、各ポートへの物理接続を提供する。加えて、ネットワークスイッチ３００はプロセッサ３０２を有するチャネルを有しうる。
【００２４】
[0032]  コア２５０ａはまた、キャッシュ３０４を含む。キャッシュ３０４は、コア２５０ａに特有であってよいし、又は、他のコア２５０と共有されてもよい。代替的に、キャッシュ３０４は、ネットワークスイッチ３００に含まれうるか、又は、ネットワークスイッチ３００にアクセス可能であってもよい。
【００２５】
[0033]  図４は、オンチップネットワーク上で伝送されるパケットをルーティングすることに好適な、マルチコアプロセッサ１００におけるコア２５０のそれぞれに含まれるネットワークスイッチ３００の一例を示す。ネットワークスイッチ３００は、図４においてポート３２０ａ及びポート３２０ｂとして示されるポート３２０を含む。便宜上、ポート３２０は入力ポート３２０ａ及び出力ポート３２０ｂとして概念的に示されている。しかし、ポート３２０のいずれも、ネットワークスイッチ３００のための入力ポートでありうるし、また出力ポートでありうる。
【００２６】
[0034]  より具体的には、図４は、ポート３２０が個別のポート４１２、４１４、４１６、４１８、４２０、４２２、４２４及び４２６を含むことを示している。ポート３２０の１つにおけるデータの受信時、他のポートは潜在的出力ポートを構成する。前述したとおり、ネットワークスイッチ３００は、いかなる所望の数のポートを有することができることは、当業者には理解されよう。
【００２７】
[0035]  前述のとおり、パケット４３４で表現されるデータのネットワークスイッチ３００による受信／伝送時、ポート３２０のいずれも、前述のとおり、パケット４３４の入力ポートになりうるし、また、パケット４３４の出力ポートになりうる。パケット４３４は、例として、オンチップネットワーク２００においてコア２５０間で伝送又は通信されうる単一のパケット、複数のパケット、ストリーミングデータ（例えば、オーディオ、ビデオ）、命令、アドレス、若しくは他のデータなど、又はこれらの組み合わせを表しうる。
【００２８】
[0036]  パケット４３４は、それゆえ、オンチップネットワーク３００において伝送されたデータを表す。例として、パケット４３４は、ポート４１２に到着し、それゆえポート４１２はパケット４３４の入力ポートとなる。ルーティングモジュール４３０は、ネットワークスイッチ３００のためのコントローラを含みうるが、パケット４３４が更なるプロセスのために送信先コアに達していない限り、それからパケット４３４をポート４２０（出力ポート）にルーティングしうる。より具体的には、ルーティングモジュール４３０は、出力ポートとしてポート４２０を選択し、次いで、パケット４３４をルーティングする。
【００２９】
[0037]  図４は、ルーティングモジュール４３０が、パケット４３４のための出力ポートを選択するために使用される予測モジュール４３２を含むことを示す。パケット４３４のための出力ポートを選択することによって、出力ポートを選択するために要する時間が短縮できる。例えば、出力ポートを選択するために要する時間を、４クロック周期、２又はそれより少ないクロック周期より少なくすることができるか、又は１クロック周期にすることができる。
【００３０】
[0038]  いくつかの例では、出力ポートの選択は、出力ポートの予測又は出力ポートの部分的予測を含む。パケット４３４の伝送はさらなるクロック周期を要するが、出力ポートの選択は、１つの実施形態では１クロック周期のみを要し、他の実施形態は２つ以上のクロック周期を使用しうる。
【００３１】
[0039]  予測モジュール４３２は、パケット４３４のための出力ポートを選択する。より具体的には、パケット４３４が入力ポートに到着すると、いずれのポート３２０がパケット４３４を送るべき出力ポートであるかを決定するために、予測モジュール４３２は、ルーティングモジュール４３０によって使用される。
【００３２】
[0040]  図５は、パケット４３４のための出力ポート５１０を選択する予測モジュール４３２の一例を示す。予測モジュール４３２は、出力ポート予測器５０２、不正ポート予測器５０４及びポート選択モジュール５０６を含む。出力ポート予測器５０２及び不正ポート予測器５０４から提供された情報を使用し、ポート選択モジュール５０６は、パケット４３４のための出力ポート５１０（これは本例におけるポート３２０の１つである。）を選択する。
【００３３】
[0041]  図４及び５を参照して、例えば、パケット４３４は、この場合では入力ポートであるポート４１２に到着するだろう。予測モジュール４３２は、例えば、出力ポート５１０がポート４２０であると予測する。ルーティングモジュール４３０は、それから、パケット４３４を、本例では出力ポートであるポート４２０にルーティングする。
【００３４】
[0042]  予測モジュール４３２により選択された出力ポートが誤っている場合、パケット４３４の伝送をキルするために強制終了（kill）信号が送信され、パケット４３４は、ついで、ポート３２０から選択された異なる出力ポートへ向けられるか又はルーティングされる。選択された出力ポートは、予測アルゴリズムを使用して選択されうることに一部起因して、誤っている場合がある。予測された出力ポートが正しい出力ポートである場合、パケット４３４の転送遅延は軽減され、性能が改善される。予測された出力ポートが不正な出力ポートである場合、強制終了信号が、パケット４３４が不正に伝播されないようにする。
【００３５】
[0043]  本例では、予測モジュール４３２はまた、出力ポートの二度目の選択を行いうる。しかしこの場合、ポート４２０は、不正として知られており、予測モジュール４３２によって考慮から除外される。
【００３６】
[0044]  予測モジュール４３２は、パケット４３４のための正しい出力ポートが選択される可能性を高める。正しい出力ポートが選択されたとき、とりわけ、パケット４３４が、送信元コア（例えばコア２５０ｃ）と送信先コア（例えばコア２５０ｂ）との間の経路におけるオンチップネットワーク２００上で、いくつかのホップを作成する必要がある場合、マルチコアプロセッサ１００全体の性能が改善される。
【００３７】
[0045]  本例では、不正ポート予測器５０４が、いずれのポート３２０が不正であるかを同定した場合に、出力ポート５１０の選択は達成される。不正ポート予測器５０４は、パケット４３４のための正しい出力ポートでないことを意味する、不正であるポート３２０の組を同定することができる。ポート選択モジュール５０６は、いくつかの実施形態において、不正ポート予測器５０４からの出力を使用することができ、次いで、残存するポート（すなわち、不正ポートとして同定されていないポート）の１つを出力ポート５１０として単に選択することができる。
【００３８】
[0046]  通常、不正ポート予測器５０４の出力で同定されたポートは、正しいポートであることは殆どない。言い換えると、不正ポート予測器５０４の出力で同定されたポートが、不正であることは殆ど確かである。１つの例において、不正ポート又は不正ポートの組は、ブルームフィルタ（Bloom filters）を使用して同定される。
【００３９】
[0047]  ブルームフィルタは、ソフトウェアに実装されうるが、特定の事象が発生しえないときを予測する、低オーバーヘッドのハードウェア構造である。１つの実施形態では、ブルームフィルタは、ハッシュ関数の組及びある長さのベクトルを含む。通常、ハッシュ関数は、ベクトルの長さ内にある値を返却し、ベクトル中のエントリ（例えばビット）は、初めは０に設定されうる。ベクトルは、例えば５０の長さを有し、ハッシュ関数は１から５０の間の値を返却する。
【００４０】
[0048]  次に、全てのハッシュ関数にキーが実行され、結果は、ベクトルへの効果的なオフセットである。ベクトル内のオフセットに対応するエントリは、次いで１に設定される。キーは、徐々に、１を有するベクトル内のエントリのいくつかを代入する。
【００４１】
[0049]  未知のキーがブルームフィルタに提示された場合、この未知のキーがブルームフィルタ内に存在するかどうか確かめるために全てのハッシュと共にハッシュされることができる。全てのハッシュの結果が０であるエントリに対応する場合、ブルームフィルタ内にそのキーは存在しない。全てのハッシュの結果が１である場合、そのキーはブルームフィルタ内に存在しうる。ハッシュ結果のいくつかが０で、別のいくつかが１である場合、キーは誤検出でありうる。
【００４２】
[0050]  本例では、キーは、ブルームフィルタを通過する際に、いずれのポートが不正ポートであるか決定することができる情報又はデータに対応しうる。１つの例では、各ポートはブルームフィルタと関連付けられうる。代替的に、全てのポートは、単一のブルームフィルタによって表されることができる。
【００４３】
[0051]  例えば、入力ポートにおいて受信されたパケット又はその一部は、ブルームフィルタを通して実行されることができるキーでありうる。不正ポート予測器５０４への入力は、パケット又はその一部でありえ、不正ポート予測器５０４の出力は、不正ポートを同定する。より具体的には、不正ポート予測器５０４への入力がハッシュされ、結果が０であるベクトル内のエントリに対応する場合、不正ポートは、殆ど完全な確実性をもって決定されることができる。
【００４４】
[0052]  更なる例として、同一のルートを辿る一連のパケットの１つであるが、その一連の最初のものでないものとしてパケットを同定する目印（indicia）を含むパケットの場合を考える。かかる目印は、パケットヘッダにおいては稀ではない。そのようなパケットが到着し、ソースアドレスからのパケットが特定のポートから出てこなかった場合、ブルームフィルタは、その特定のポートが適切な目的地であり得ないことを同定できる。ブルームフィルタは、単一のクロック周期でアクセスされることができる完全な組み合わせ並列構造でありうる。
【００４５】
[0053]  この場合、不正ポート予測器５０４は、不正なポートを同定するためにブルームフィルタを使用しうる。ブルームフィルタにおいて誤検出は起こりうるが、検出漏れは起こり得ない。結果として、不正ポート予測器５０４は、ポートが実際には正しい場合、これを不正であると同定することは決してない。
【００４６】
[0054]  １つの実施形態では、不正ポート予測器５０４と並行して、出力ポート予測器５０２が、いずれのポート３２０が出力ポートである可能性が高いかを決定するため、ポート３２０をランク付けしうる。ポート３２０はしたがって、例えば、正しい出力ポートである可能性によってランク付けされることができる。
【００４７】
[0055]  例えば、出力ポート予測器５０２は、出力ポート５１０が以前のパケットのための出力ポートと同一である場合、ストラテジを使用して出力ポート５１０を予測しうる。この場合、直近のポートは他のポートよりも高くランク付けされ、正しい出力ポートである最も高い可能性を有しうる。
【００４８】
[0056]  別の例では、予測モジュール４３２は、出力ポートとして使用されたポートの履歴を保持しうる。出力ポート予測器５０２は、次いで、出力ポート５１０として最も頻繁に使用されたポートを選択しうる。最も頻繁に使用されたポートは、最も高くランク付けされる。残りのポートは、次いで、使用頻度に基づきランク付けされることができる。選択された出力ポート５１０は、不正ポート予測器がこれを排除しない限り、最も頻繁に使用されたポートである。
【００４９】
[0057]  別の例では、予測モジュール４３２は、不正ポート予測器によって排除されていないポートから無作為に出力ポート５１０を選択しうる。出力ポート５１０をランク付け又は予測するための追加アルゴリズムは、参照により本明細書に組み込まれる“Ｐｒｅｄｉｃｔｉｏｎ  Ｒｏｕｔｅｒ：  Ｙｅｔ  Ａｎｏｔｈｅｒ  Ｌｏｗ  Ｌａｔｅｎｃｙ  Ｏｎ−Ｃｈｉｐ  Ｒｏｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ”（第１５回ＩＥＥＥ国際シンポジウム（２００９年２月１４〜１８日））に記載される。
【００５０】
[0058]  ポート選択モジュール５０６は、出力ポート５１０を選択するために出力ポート予測器５０２の出力及び不正ポート予測器５０４の出力を受信する。例えば、不正ポート予測器５０４は、ポート４２４が不正であること、及び、ポート４３４がポート４２４へ又はこれを介して伝送されるよう意図されていないことを同定しうる。結果として、出力ポート予測器５０２が、ポート４２４が正しい出力ポートであると確信していたとしても、ポート４２４は、ポート選択モジュール５０６によって考慮から除外されうる。
【００５１】
[0059]  不正ポート予測器５０４は、出力ポート５１０の選択時、ポート選択モジュール５０６によって考慮されるポートの数を効果的に減らす。特定のポートが考慮から除外されているから、ポート選択モジュール５０６は、正しい出力ポート５１０を選択するより高い可能性を有する。ネットワークスイッチ３００の性能は改善され、マルチコアプロセッサ１００のオンチップネットワーク３００において、パケット４３４はより速く、より効率的にルーティングされることができる。
【００５２】
[0060]  不正ポート予測器５０４は、マルチコアプロセッサ１００の複数の候補ポートから第１のポート群を同定することができる。出力ポート予測器５０２は、１つの例における第１のポート群を考慮せずに、複数のポートから第２のポート群を同定することができる。したがって、第２のポート群は、第１のポート群のいくつかを含むかもしれないし、含まないかもしれない。出力ポート予測器５０２によって同定された第２のポート群は、少なくとも第１のポート群のいくつかを含む場合、選択モジュール５０６は、出力ポート５１０を選択する前又は選択中に、それらを除外することができる。
【００５３】
[0061]  以下の例は、不正ポート予測器５０４がポート３２０から不正ポートを同定する方法を示す。本例では、マルチコアプロセッサ１００は、マルチコアプロセッサ１００のオンチップネットワーク上のパケットをルーティングするために、仮想回路（virtual circuit）（送信元コアから送信先コアまでのコア２５０間の経路）を使用又は構築しうる。例えばコア２５０ａは、このような仮想回路に含まれうる。実際、コア２５０ａは、多数の発信コア及び多数の目的コアを含む複数の仮想回路に含まれうる。
【００５４】
[0062]  コア２５０ａが複数の仮想回路に含まれている場合、予測モジュール４３２及び特に不正ポート予測器５０４は、パケット４３４のための出力ポートの選択の考慮から特定のポートが除外されることを同定することができる。コア２５０ａ（又は不正ポート予測器５０４などの、このモジュール）は、コア２５０ａのトラバースを含む仮想回路のいずれも、ポート４２０を使用しないと判断することができる。結果として、不正ポート予測器５０４の出力は、ポート選択モジュール５０６が、出力ポート４１０を選択する際に考慮からポート４２０を除外することができることを示唆する。言い換えると、不正ポート予測器５０４は、いくつかの実施形態において、不正である不正出力ポートを確実性をもって同定することができる。それゆえ、不正出力ポートは、殆ど完全な確実性をもって決定されることができる。
【００５５】
[0063]  ブルームフィルタは、通常、並列ランダムアクセスメモリ構造、プログラマブルレジスタ及び組み合わせ論理の組み合わせを使用して実装されることができる。大型のハードウェア構造を実装するコストに対して、不正ポートの可能な限り最大の組を特定する必要に基づき、広範な設計上の選択が存在する。
【００５６】
[0064]  図６は、パケット４３４のための出力ポート５１０を選択する際の考慮から除外されているポートの例を示す。例示として図６に示されるように、パケット４３４は、入力ポート６０２によって受信された可能性がある。さらに、不正ポート予測器５０４は、出力ポートが選択される考慮からポート６０４の組が除外されると決定したかもしれない。出力ポート予測器５０２は、ポート６０６の組を可能性に応じてランク付けすることができる。出力ポート予測器６０６は、６０４及び６０６の組の全てのポートをランク付けしうるが、不正ポートと決定されたポートは、出力ポート５１０の考慮から除外される。この情報で、ポート選択モジュール５０６は、ポート６０６の組の中から出力ポート５１０を選択することができる。
【００５７】
[0065]  図７は、オンチップネットワークにおけるパケットのルーティング方法の例示的実施形態を示すフロー図である。ブロック７０２において開始され、パケットは、オンチップネットワークにおいて接続されたコアの１つの入力ポートにおいて受信される。前述のとおり、マルチコアプロセッサの各コアは、通常、複数のポートを含み、入力ポートは、これらのいずれのポートであってもよい。コアの目標、及び特に、コアに含まれたネットワークスイッチの目標は、出力ポートをできるだけ早く選択すること、次いで、選択された出力ポートへパケットをルーティングすることである。
【００５８】
[0066]  ブロック７０４において、パケットが受信されたコアは、パケットのための出力ポートとしての考慮からいくつかのポートを除外する。いくつかの実施形態において、不正ポート選択器５０４は、上述のとおり、出力ポートとして考慮から除外されるポートを同定しうる。いくつかのポートを考慮から除外することは、不正であるポートを同定することを含みうる。言い換えると、確実に適切な出力ポートではないこれらのポートは、不正であると同定される。１つの例では、不正であると同定された不正ポートは、ブルームフィルタ又は対応するコアにより記憶された知識を使用して決定される。いくつかの場合においては、不正ポートの同定は、１００パーセントの確実であることができる。代替的に、確実性のより少ない他のフィルタが、不正ポートを同定するために使用されてもよい。
【００５９】
[0067]  ブロック７０６において、コアが残りのポート（すなわち、考慮から除外されなかったポート）から出力ポートを選択する。いくつかの実施形態において、ポート選択モジュール５０６は、上述のとおり、出力ポートを選択する。（不正ポートを除外した後の）残りのポートから出力ポートを選択することは、残りのポートを例えば、それぞれのポートの、出力ポートである可能性に従い順序付けを行うことを含みうる。出力ポートが選択されると、パケットは選択されたポートへルーティングされる。代替的に、全てのポートはランク付け又は順序付けされることができ、不正なポートは、出力ポートの選択時に単純に無視される。
【００６０】
[0068]  本明細書に記載されたこのプロセス及び方法並びに他のプロセス及び方法のために、本プロセス及び方法において実行された機能が、異なる順番で実施されよもよいということが当業者には理解されよう。さらに、説明されたステップ及びオペレーションは、例として提示されたのみであり、ステップ及びオペレーションのいくつかは、記載された実施形態の本質を損なうことなく、選択的であるか、より少ないステップ及びオペレーションへ統合されるか又は追加のステップ及びオペレーションへ拡張されうる。
【００６１】
[0069]  図８は、オンチップネットワークにおいてパケットをルーティングする方法の例示的実施形態を示すフロー図である。ブロック８０２において、パケットはコアのうちの１つの入力ポートにおいて受信される。入力ポートは、パケットの到着前はコアにとって未知でありうる。ブロック８０４において、コア又は不正コア予測器といったコアのモジュールは、コアのポートから不正ポートを同定する。ブロック８０６において、コアは、コアの残りのポート（すなわち、不正ポート予測器によって除外されなかったポート）から出力ポートを選択する。１つの例では、出力ポートの選択は、不正ポートを考慮から除外することを含む。出力ポートが選択された後、ブロック８０８においてパケットは、選択された出力ポートにルートされる。
【００６２】
[0070]  図９は、本開示に従い、マルチコアプロセッサのオンチップネットワークにおいて、パケットをルーティングするために構成された計算装置９００の例を示すブロック図である。極めて基本的な構成９０２において、計算装置９００は、通常、１つ以上のコア９０４及びシステムメモリ９０６を含む。１つ以上のコア９０４のそれぞれは、コアの１例でありうる。コア９０４は、それゆえマルチコアプロセッサの例である。メモリバス９０８は、プロセッサ９０４及びシステムメモリ９０６間の通信のために使用されうる。
【００６３】
[0071]  所望の構成により、コア９０４は、いかなる種類であってもよく、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタル信号プロセッサ（ＤＳＰ）、またはこれらの組み合わせを含むがこれに限定されない。前述のとおり、コア９０４は、コア２５０の１つをあらわしうる。計算装置９００は、それゆえ複数のコア２５０を用いて構成される。コア９０４は、レベル１キャッシュ９１０及びレベル２キャッシュ９１２などのキャッシングの１つ以上のレベル、プロセッサ９１４及びレジスタ９１６を含む。コア９１４の一例は、算術論理演算装置（ＡＬＵ）、浮動小数点演算装置（ＦＰＵ）、デジタル信号処理コア（ＤＳＰコア）又はこれらの組み合わせを含みうる。メモリコントローラ９１８の例は、コア９０４と共に使用されるか、又は、いくつかの実施形態では、メモリコントローラ９１８は、コア９０４の内部部品でありうる。
【００６４】
[0072]  所望の構成により、システムメモリ９０６は、いいかなる種類であってもよく、揮発性メモリ（ＲＡＭなど）、不揮発性メモリ（ＲＯＭ、フラッシュメモリなど）又はこの組み合わせを含むがこれらに限定されない。システムメモリ９０６は、オペレーティングシステム９２０、１つ以上のアプリケーション９２２及びプログラムデータ９２４を含みうる。アプリケーション９２２は、プロセッサ９０４の１つ以上のコアを使用するよう構成されたプログラム９２６を含みうる。プログラムデータ９２４は、以下にさらに記載されるように、アプリケーション９２２を実行する間、コア９０４によってプロセスされたデータ９２８の組を含みうる。いくつかの実施形態において、アプリケーション９２２は、不正ポート予測器５０４が不正なポートを同定できるように、オペレーティングシステム９２０においてプログラムデータ９２４と動作するよう構成されうる。プログラムデータ９２４は、例えば、ブルームフィルタによって要約又は使用されるデータ９２８の組を含みうる。ここで説明した基本構成９０２は、図９の内側の破線内のコンポーネントによって示される。
【００６５】
[0073]  計算装置９００は、基本構成９０２と必要なデバイス及びインターフェースとの間の通信を促進するために追加の特徴又は機能、及び追加のインターフェースを有しうる。例えば、記憶装置インターフェースバス９３４を介した基本構成９０２と１つ以上のデータ記憶デバイス９３２との間の通信を促進するため、バス／インターフェースコントローラ９３０が使用されうる。データ記憶デバイス９３２は、取り外し可能な記憶デバイス９３６、取り外し不能な記憶デバイス９３８又はこれらの組み合わせでありうる。取り外し可能な記憶デバイス及び取り外し不能な記憶デバイスの例は、数例を挙げると、フレキシブルディスクドライブ及びハードディスクドライブ（ＨＤＤ）などの磁気ディスクデバイス、コンパクトディスク（ＣＤ）ドライブ又はデジタル多用途ディスクドライブなどの光学ディスクドライブ、ソリッドステートドライブ（ＳＳＤ）及びテープドライブを含む。コンピュータ記憶媒体の例は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータなどの情報の記憶のための方法又は技術に実装される、揮発性及び不揮発性、取り外し可能及び取り外し不能な媒体を含みうる。
【００６６】
[0074]  システムメモリ９０６、取り外し可能記憶デバイス９３６及び取り外し不能記憶デバイス９３８は、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、以下に限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）若しくは他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置若しくは他の磁気記憶デバイス、又は所望の情報を記憶するために使用され、かつ、計算装置９００によりアクセスされうる他の媒体を含む。このようなコンピュータ記憶媒体のいずれも、計算装置９００の一部であってよい。
【００６７】
[0075]  計算装置９００はまた、多様なインターフェースデバイス（例えば、出力デバイス９４２、周辺インターフェース９４４及び通信デバイス９４６）から基本構成９０２への、バス／インターフェースコントローラ９３０を介した通信を促進するためのインターフェースバス９４０を含みうる。出力デバイス９４２の例は、ディスプレイ又はスピーカーなどの多様な外部デバイスを１つ以上のＡ／Ｖポート９５２を介して通信するように構成されうるグラフィクス処理装置９４８及びオーディオ処理装置９５０を含む。周辺インターフェース９４４の例は、入力デバイス（例えば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなど）又は他の周辺デバイス（例えば、プリンタ、スキャナなど）の外部デバイスを１つ以上のＩ／Ｏポート９５８を介して通信するように構成されうるシリアルインターフェースコントローラ９５４又はパラレルインターフェースコントローラ９５６を含む。通信デバイス９４６の例は、１つ以上の通信ポート９６４を介する、ネットワーク通信リンク上の１つ以上の他の計算装置９６２との通信を促進するように構成されうるネットワークコントローラ９６０を含む。
【００６８】
[0076]  ネットワーク通信リンクは、通信媒体の一例でありうる。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、又は搬送波若しくは他の運搬機構といった変調されたデータ信号の他のデータによって具現化され、また、情報配信媒体を含みうる。「変調されたデータ信号」は、信号内の情報をエンコードするように設定又は変更された特徴を１つ以上有する信号でありうる。限定ではなく例として、通信媒体は、有線ネットワーク又は直接有線接続などの有線媒体、及び、音響、無線周波（ＲＦ）、マイクロ波、赤外線（ＩＲ）及び他の無線媒体などの無線媒媒体を含みうる。本明細書において使用されるコンピュータ可読命令という用語は、記憶媒体と通信媒体の両方を含みうる。
【００６９】
[0077]  計算装置９００は、携帯電話、携帯情報端末（ＰＤＡ）、パーソナルメディアプレイヤーデバイス、無線ウェブ閲覧デバイス、パーソナルヘッドセットデバイス、特定用途向けデバイス、又は上述の機能を含むハイブリッドデバイスなどの小型フォームファクタ携帯（モバイル）電子デバイスの一部として実装されうる。計算装置９００はまた、ラップトップ及び非ラップトップのコンピュータ構成を含むパーソナルコンピュータとして実装されうる。
【００７０】
[0078]  本開示は、多様な態様を説明するよう意図されている本出願において記載された特定の実施形態に限定されるものではない。その精神及び範囲を逸脱することなく様々な変形及び変化がなされてよいことは当業者には明らかである。本明細書に列挙されたものに加え、本開示の範囲内にある機能的に同等な方法及び装置は、上述から当業者にとっては明らかとなろう。そのような変形及び変化は、添付の請求の範囲の範囲内になるように意図されている。本開示は、添付の請求の範囲及びかかる請求の範囲が主張するものと同等の全範囲によってのみ限定される。本開示が、当然多様に変化しうる特定の方法、試薬、化合物、合成物、生体系に限定されるものでないことを理解されたい。本明細書で使用される用語は、特定の実施形態のみを説明する目的のためであり、限定的であるよう意図されていない。
【００７１】
[0079]  本明細書で使用される実質的にあらゆる複数及び／又は単数の用語について、当業者は、文脈及び／又は用途に応じて適切に、複数の用語を単数に、及び／又は単数の用語を複数に置き換えることができる。本明細書では、明確性を目的として、多様な単数／複数の置き換えが明記されうる。
【００７２】
[0080]  一般に、本明細書、特に添付の請求の範囲（例えば、添付の請求の範囲の要部）中で使用される用語は、一般に「非限定的な（open）」用語として意図されている（例えば、「含んでいる(including)」という用語は「・・・を含んでいるが限定されない(including but not limited to)」と解釈されるべきであり、「有している(having)」という用語は「少なくとも・・・を有している(having at least)」と解釈されるべきであり、「含む(includes)」という用語は「・・・を含むが限定されない(includes but is not limited to)」と解釈されるべきである。）ことが当業者には理解されるであろう。さらに、導入されたクレーム記載において特定の数が意図される場合、そのような意図は当該クレーム中に明確に記載され、そのような記載がない場合は、そのような意図も存在しないことが当業者には理解されるであろう。理解を促すために、例えば、後続の添付の請求の範囲では、「少なくとも１つの(at least one)」及び「１つ以上の(one or more)」といった導入句を使用し、クレーム記載を導入することがある。しかし、このような句を使用するからといって「ａ」又は「ａｎ」といった不定冠詞によりクレーム記載を導入した場合に、たとえ同一のクレーム内に、「１つ以上の」又は「少なくとも１つの」といった導入句と「ａ」又は「ａｎ」といった不定冠詞との両方が含まれるとしても、当該導入されたクレーム記載を含む特定のクレームが、当該記載事項を１つのみ含む実施形態に限定されるということが示唆されると解釈されるべきではない（例えば、「ａ」及び／又は「ａｎ」は、「少なくとも１つの」又は「１つ以上の」を意味すると解釈されるべきである。）。定冠詞を使用してクレーム記載を導入する場合にも同様のことが当てはまる。さらに、導入されたクレーム記載において特定の数が明示されている場合であっても、そのような記載は、「少なくとも」記載された数を意味するように解釈されるべきであることは、当業者には理解されるであろう（例えば、他に修飾語のない、単なる「２つの記載事項」という記載がある場合、この記載は、「少なくとも」２つの記載事項、又は「２つ以上の」記載事項を意味する。）さらに、「Ａ、Ｂ及びＣなどのうち少なくとも１つ」に類する表記が使用される場合、一般的に、そのような構造は、当業者がその表記を理解するであろう意味で意図されている（例えば、「Ａ、Ｂ及びＣのうち少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡとＢの両方、ＡとＣの両方、ＢとＣの両方、及び／又は、ＡとＢとＣの全て、などを有するシステムを含むがこれに限定されない）。また、「Ａ、Ｂ又はＣなどのうち少なくとも１つ」に類する表記が使用される場合、一般的に、そのような構造は、当業者がその表記を理解するであろう意味で意図されている（例えば、「Ａ、Ｂ又はＣのうち少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡとＢの両方、ＡとＣの両方、ＢとＣの両方、及び／又は、ＡとＢとＣの全て、などを有するシステムを含むがこれに限定されない）。さらに、２つ以上の選択可能な用語を表す実質的にあらゆる離接語及び／又は離接句は、説明文内であろうと、請求の範囲内であろうと、又は図面内であろうと、それらの用語のうちの１つ、それらの用語のうちのいずれか、又はそれらの用語の両方を含む可能性を意図すると理解されるべきであることが、当業者には理解されるであろう。例えば、「Ａ又はＢ」という句は、「Ａ」又は「Ｂ」若しくは「Ａ及びＢ」の可能性を含むことが理解されよう。
【００７３】
[0081]  加えて、本開示の特徴又は態様がマーカッシュグループによって記載されると、それにより本開示がマーカッシュグループのあらゆる個々の要素、又は要素のサブグループの観点からも記載されるということを当業者は認識するであろう。
【００７４】
[0082]  当業者に理解されるように、記述を提供するなどの、一切の目的のため、本明細書に開示される全ての範囲は、一切の可能な部分範囲及びその部分範囲の組み合わせをも含む。記載されたあらゆる範囲は、少なくとも半分、３分の１、４分の１、５分の１、１０分の１などへと細分化される同一の範囲を十分に記載し、かつ可能にしていることが容易に認識されるだろう。限定されない例として、本明細書に記載される各範囲は、下部３分の１、中部３分の１、上部３分の１などと容易に分けられる。また、当業者には理解されるように、「まで（up to）」、「少なくとも（at least）」などの全ての文言は、記載される数を含み、上述したような部分範囲に細分化しうる範囲を指す。最後に、当業者に理解されるように、範囲は個々の要素を含む。それゆえ、例えば１から３つのセルを有するグループは、１、２又は３つのセルを有するグループを指す。同様に、１から５つのセルを有するグループは、１、２、３、４、又は５つのセルを有するグループなどを指す。
【００７５】
[0083]  上述から、説明の目的上、本開示の多様な実施形態が本明細書に記載されていること及び本開示の範囲及び精神を逸脱することなく多様な変形がなされうることが理解されるだろう。よって、本明細書において開示された多様な実施形態は、限定的であるよう意図されておらず、真の精神及び範囲は、以下の請求の範囲によって示される。
【図１】
2011139413.tif 000003
【図２】
2011139413.tif 000004
【図３】
2011139413.tif 000005
【図４】
2011139413.tif 000006
【図５】
2011139413.tif 000007
【図６】
2011139413.tif 000008
【図７】
2011139413.tif 000009
【図８】
2011139413.tif 000010
【図９】
2011139413.tif 000011
【外国語明細書】
2011139413000001.pdf