(57)【要約】  一般に、分散型プロセッサアーキテクチャにおけるデータマルチキャスティングに関する方法、手順、装置、コンピュータプログラム、コンピュータアクセス可能媒体、処理構成、およびシステムが説明される。様々な実装形態は、ソースから第１のメッセージを受信するように構成された複数のターゲット命令を識別することと、ターゲット命令によって一般に共有される選択された情報を含めて、ターゲット命令のそれぞれに関して第１のメッセージにターゲットルーティング命令を提供することと、識別されたターゲット命令のうちの２つがルータに対して互いに異なる方向に配置されているとき、第１のメッセージを複製して、複製されたメッセージを、識別されたターゲット命令のそれぞれに対して異なる方向にルーティングすることを含むことが可能である。ターゲットルーティング命令を提供することは、ターゲット命令によって一般に共有され、左オペランド、右オペランド、またはプレディケートオペランドとして識別されているビットのサブセットを利用する、選択された情報をさらに含むことが可能であり、ターゲット命令の複数の複数命令サブセットのうちの１つの選択を含むことが可能である。【特許請求の範囲】
【請求項１】
複数の相互に接続された処理コアを有する分散型処理アーキテクチャにおけるデータマルチキャスティングのための方法であって、
ソースから第１のメッセージを受信するように構成された複数のターゲット命令を識別することと、
それぞれの識別されたターゲットに関して前記第１のメッセージにターゲットルーティング命令を提供することであって、それぞれのターゲットルーティング命令が、前記識別されたターゲット命令によって一般に共有される選択された情報を含む、提供することと、
前記識別されたターゲット命令のうちの２つがルータに対して互いに異なる方向に配置された処理コアと関連付けられるとき、前記第１のメッセージを複製して、前記複製されたメッセージを前記異なる方向で前記識別されたターゲット命令のそれぞれにルーティングすることとを含む方法。
【請求項２】
ターゲットルーティング命令を前記提供することが、前記ターゲット命令によって一般に共有されるビットのサブセットを利用して、前記選択された情報を符号化することをさらに含む、請求項１に記載の方法。
【請求項３】
前記ターゲット命令によって一般に共有される前記選択された情報が、左オペランド、右オペランド、またはプレディケートオペランドのうちの１つとして識別される、請求項１に記載の方法。
【請求項４】
前記ターゲット命令によって一般に共有される前記選択された情報が、前記ターゲット命令のいくつかの複数命令サブセットのうちの１つの選択を含む、請求項１に記載の方法。
【請求項５】
前記ターゲット命令の複数命令サブセットの数が８である、請求項４に記載の方法。
【請求項６】
前記ターゲットルーティング命令が、命令符号化のタイプを指定するために使用されるビットを含む、請求項１に記載の方法。
【請求項７】
ターゲットルーティング命令を前記提供することが、別の命令によって作成されたビットマスクを利用することをさらに含む、請求項１に記載の方法。
【請求項８】
前記複製されたメッセージをルーティングすることが、前記ターゲットルーティング命令を決定するために、前記第１のメッセージのヘッダを読み取ることを含む、請求項１に記載の方法。
【請求項９】
ターゲットルーティング命令を前記提供することが、前記ルーティング命令が、共通リンクを共有する、前記ソースから異なる方向の前記２つのターゲット命令へのルートを含むとき、前記第１のメッセージおよび前記複製されたメッセージが前記共通リンクを一度だけ通過するように前記ルーティング命令を構成することをさらに含む、請求項１に記載の方法。
【請求項１０】
前記複製されたメッセージを前記識別されたターゲット命令のそれぞれにルーティングすることが、前記第１のメッセージまたは前記複製されたメッセージのうちの少なくとも１つを抽出して、前記ルータが、それぞれの識別されたターゲット命令が前記ローカル処理コアに常駐することを決定すると、それをローカル処理コアに送ることを含む、請求項１に記載の方法。
【請求項１１】
複数の相互に接続された処理コアを有する分散型プロセッサアーキテクチャにおけるデータマルチキャスティングのための装置であって、
ソースから第１のメッセージを受信するように構成された複数のターゲット命令を識別し、
前記ターゲット命令によって一般に共有される選択された情報を含めて、前記ターゲット命令に関して前記第１のメッセージにターゲットルーティング命令を提供する
ように構成された前記ソースと、
前記ターゲット命令のそれぞれの位置を決定するために、前記ターゲットルーティング命令を読み取り、
前記ターゲット命令のうちの２つがルータに対して互いに異なる方向に配置された処理コアと関連付けられるとき、前記メッセージを複製することを含めて、前記第１のメッセージを前記ターゲット命令のそれぞれにルーティングする
ように構成された前記ルータと含む装置。
【請求項１２】
前記ソースが、前記ターゲット命令によって一般に共有されるビットのサブセットを利用して、前記選択された情報を符号化するようにさらに構成される、請求項１１に記載の装置。
【請求項１３】
前記ソースが、前記ターゲット命令によって一般に共有された前記選択された情報が、左オペランド、右オペランド、またはプレディケートオペランドのうちの１つを識別するように、前記選択された情報を符号化するようにさらに構成される、請求項１１に記載の装置。
【請求項１４】
前記ソースが、前記ターゲット命令によって一般に共有される前記選択された情報が前記ターゲット命令の複数の複数命令サブセットのうちの１つの前記選択を識別するように、前記選択された情報を符号化するようにさらに構成される、請求項１１に記載の装置。
【請求項１５】
前記ルータが、前記第１のメッセージまたは前記複製されたメッセージのうちの少なくとも１つを抽出して、前記ターゲットが前記ローカル処理コアに常駐していることを決定すると、前記抽出されたメッセージをローカル処理コアに送るように構成される、請求項１１に記載の装置。
【請求項１６】
複数の相互に接続された処理コアを有する分散型処理アーキテクチャにおけるデータマルチキャスティングのためのシステムであって、
オンチップネットワークを経由して相互に接続された複数の処理コアを有する分離型処理構成であって、ソースが前記複数の処理コアのうちの１つに関連し、複数のターゲット命令が前記複数の処理コアのうちの少なくとも１つに関連する、分離型処理構成と、
複数のルータとを含み、
前記複数の処理コアのそれぞれが前記複数のルータの対応する１つに関連し、前記複数のルータのうちの１つまたは複数が、
前記ソースからメッセージを受信することと、
前記メッセージからターゲットルーティング命令を識別することであって、前記識別されたターゲットルーティング命令が、前記ターゲット命令のそれぞれの位置を決定するために、前記ターゲット命令によって一般に共有される選択された情報を含む、識別することと、
前記ターゲット命令のうちの２つが前記ルータに対して互いに異なる方向に配置された処理コアと関連付けられるとき、前記メッセージを複製することと、
前記複製されたメッセージを前記ターゲット命令のそれぞれにルーティングすることとを行うように構成されたシステム。
【請求項１７】
前記ソースが、前記ターゲット命令によって一般に共有されるビットのサブセットを利用して、前記選択された情報を符号化するようにさらに構成される、請求項１６に記載のシステム。
【請求項１８】
前記ソースが、前記選択された情報から、左オペランド、右オペランド、またはプレディケートオペランドのうちの１つを識別するように構成される、請求項１６に記載のシステム。
【請求項１９】
前記ターゲット命令によって一般に共有される前記選択された情報が、前記ターゲット命令の複数命令サブセットの前記選択を含む、請求項１６に記載のシステム。
【請求項２０】
前記複数のルータのうちの少なくとも１つが、前記メッセージを前記ネットワークから抽出して、前記抽出されたメッセージ内の前記複数のターゲット命令のターゲット命令が前記ローカル処理コア内に常駐することを決定すると、前記抽出されたメッセージをローカル処理コアに送るように構成される、請求項１６に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
政府支援研究に関する記述書
本発明は、少なくとも一部、国防高等研究計画局、認可番号Ｆ３３６１５−０３−Ｃ−４１０６によって米国政府のサポートにより行われた。したがって、米国政府は、本発明に対して一定の権利を有する。
【０００２】
従来の（非分散型）処理アーキテクチャでは、命令が実行するとき、命令は、その結果を待っている任意の命令が速やかにその結果を使用できるように、その結果を集中レジスタファイルに送り、それをブロードキャストバイパスバス上でブロードキャストする。
【０００３】
オペランドネットワーク（ｏｐｅｒａｎｄ  ｎｅｔｗｏｒｋ）を経由して相互に接続された複数の処理コアから構成され得る分散型プロセッサアーキテクチャでは、命令の符号化は、通常、値を必要とする１つまたは複数の消費命令（consuming instructions）を表示する識別子を含む。分散型プロセッサアーキテクチャは、例えば、米国特許出願公開第２００５／０００５０８４号で説明されている。
【０００４】
分散型プロセッサアーキテクチャにおいて命令が実行するとき、命令は、通常、結果として生じる値を、その値を待っている消費命令だけに送る。このタイプの命令符号化は、生産命令（producing instructions）および消費命令が異なる処理コア上にある分散型アーキテクチャ実装形態にうまく整合する場合があるが、かかる実装形態において、命令結果が多くの消費命令に送られなければならないとき、ある種の課題が発生する可能性がある。類似の課題は、標準のキャッシュコヒーレントなオンチップマルチコアシステムにおいて発生する可能性もある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２００５／０００５０８４号
【発明の概要】
【０００６】
分散型プロセッサアーキテクチャにおけるデータマルチキャスティングに関する方法、手順、装置、コンピュータプログラム、コンピュータアクセス可能媒体、処理構成（processing arrangement）、およびシステムが一般に説明される。様々な実装形態は、ソースから第１のメッセージを受信するように構成された複数のターゲット命令を識別することと、ターゲット命令によって一般に共有される選択された情報を含めて、ターゲット命令のそれぞれに関して第１のメッセージにターゲットルーティング命令を提供することと、識別されたターゲット命令のうちの２つがルータに対して互いに異なる方向に配置されているとき、第１のメッセージを複製して、複製されたメッセージを、識別されたターゲット命令のそれぞれに対して異なる方向にルーティングすることとを含むことが可能である。ターゲットルーティング命令を提供することは、ターゲット命令によって一般に共有され、左オペランド、右オペランド、またはプレディケート（ｐｒｅｄｅｉｃａｔｅ）オペランドとして識別されているビットのサブセットを利用する、選択された情報をさらに含むことが可能であり、ターゲット命令の複数の複数命令サブセットのうちの１つを選択することを含むことが可能である。
【０００７】
一例では、複数の相互に接続された処理コアを有する分散型処理アーキテクチャにおけるデータマルチキャスティングに関する方法が提供される。この方法は、ソースから第１のメッセージを受信するように構成された複数のターゲット命令を識別することを含むことが可能である。この方法は、それぞれの識別されたターゲットに関して第１のメッセージにターゲットルーティング命令を提供することを含むことが可能であり、それぞれのターゲットルーティング命令は、識別されたターゲット命令によって一般に共有される選択された情報を含む。この方法は、識別されたターゲット命令のうちの２つがルータに対して互いに異なる方向に配置された処理コアと関連付けられると、第１のメッセージを複製して、複製されたメッセージを、識別されたターゲット命令のそれぞれに対して異なる方向にルーティングすることをさらに含むことが可能である。
【０００８】
もう１つの例では、複数の相互に接続された処理コアを有する分散型プロセッサアーキテクチャにおけるデータマルチキャスティングのための装置が提供される。この装置は、ソースとルータとを含むことが可能である。ソースは、該ソースから第１のメッセージを受信するように構成された複数のターゲット命令を識別し、ターゲット命令によって一般に共有される選択された情報を含めて、ターゲット命令に関して第１のメッセージにターゲットルーティング命令を提供するように構成され得る。ルータは、ターゲット命令のそれぞれの位置を決定するために、ターゲットルーティング命令を読み取り、ターゲット命令のうちの２つがルータに対して互いに異なる方向に配置されている処理コアと関連付けられるとき、メッセージを複製することを含めて、第１のメッセージをターゲット命令のそれぞれにルーティングするように構成され得る。 
【０００９】
さらにもう１つの例では、複数の相互に接続された処理コアを有する分散型処理アーキテクチャにおけるデータマルチキャスティングのためのシステムを提供することが可能である。このシステムは、オンチップネットワークを経由して相互に接続された複数の処理コアを有する分散型処理構成を含むことが可能である。ソースは、複数の処理コアのうちの１つと関連付けられることが可能である。複数のターゲット命令は、複数の処理コアのうちの少なくとも１つと関連付けられることが可能である。このシステムは、複数のルータをさらに含むことが可能である。複数の処理コアのそれぞれは、複数のルータのうちの対応する１つと関連付けられることが可能である。複数のルータのうちの１つまたは複数は、ソースからメッセージを受信することと、メッセージからターゲットルーティング命令を識別することであって、識別されたターゲットルーティング命令が、ターゲット命令のそれぞれの位置を決定するために、ターゲット命令によって一般に共有される選択された情報を含む、識別することと、ターゲット命令のうちの２つがルータに対して互いに異なる方向に配置された処理コアと関連付けられるとき、メッセージを複製することと、複製されたメッセージをターゲット命令のそれぞれにルーティングすることとを行うように構成可能である。
【００１０】
複数の例が開示されるが、以下の詳細な説明から、依然としてその他の例が当業者に明らかになるであろう。明らかになるように、本明細書で開示されるシステム、装置、および方法は、すべて本明細書の教示の趣旨および範囲から逸脱せずに、様々な明らかな態様において修正可能であり得る。したがって、詳細な説明は、限定的ではなく、事実上、例示的と見なされるべきである。
【００１１】
本開示の特徴は、添付の図面と共に、以下の説明および添付の特許請求の範囲からより十分に明らかになるであろう。これらの図面は本開示によるいくつかの例だけを示し、したがって、その範囲の限定と見なされるべきでない点を理解して、本開示は、添付の図面の使用により、追加の特異性と詳細とを用いて説明される。
【図面の簡単な説明】
【００１２】
【図１】すべて本開示の少なくともいくつかの実施形態に従って構成された、分散型プロセッサアーキテクチャにおけるデータマルチキャスティングのために構成されたコンピュータシステムのハードウェア構成の一例を示す図である。
【図２】すべて本開示の少なくともいくつかの実施形態に従って構成された、処理タイルの一例を示す図である。
【図３】すべて本開示の少なくともいくつかの実施形態に従って構成された、メッシュネットワークを経由して結合された処理タイルの４×４アレイの一例を示す図である。
【図４】すべて本開示の少なくともいくつかの実施形態に従って構成された、命令に関するビットマップの一例を示す図である。
【図５】すべて本開示の少なくともいくつかの実施形態に従って構成された、その中でレジスタ内または予約局内にビットマスクが含まれる命令に関するビットマップのもう１つの例を示す図である。
【図６】すべて本開示の少なくともいくつかの実施形態に従って構成された、図４に示された例示的な命令の符号化を指定する１つの例示的な方法を示す流れ図である。
【図７】すべて本開示の少なくともいくつかの実施形態に従って構成された、図３に示された例に示されるルータによって実行されるルーティングに関する１つの例示的な方法を示す流れ図である。
【発明を実施するための形態】
【００１３】
以下の詳細な説明において、その一部を形成する添付の図面が参照される。図面において、文脈上その他の規定がない限り、類似の記号は、通常、類似の構成要素を識別する。詳細な説明、図面、および特許請求の範囲において説明される説明のための実施例は、限定的であることが意味されない。その他の実施形態を利用することが可能であり、本明細書で提示される主題の趣旨および範囲から逸脱せずに、その他の変更を行うことが可能である。本明細書で一般に説明され、図面において例示される本開示の態様は、そのすべてが明示的および暗示的に企図され、本開示の一部である、幅広い異なる構成で、構成され、置換され、組み合わされ、分離され、設計されることが可能である点を容易に理解されよう。
【００１４】
本明細書において開示され説明される様々な態様、特徴、例、または実装形態は、単独で使用可能であり、または様々な組合せの形で使用されることも可能である。本開示による方法は、ソフトウェア、ハードウェア、またはハードウェアとソフトウェアの組合せによって実装可能である。
【００１５】
図１は、本開示の少なくともいくつかの実装形態に従って構成された、分散型ユニプロセッサアーキテクチャなど、分散型プロセッサアーキテクチャにおけるデータマルチキャスティングのために構成されたコンピュータシステムのハードウェア構成の一例を示す。コンピュータシステム１００は、処理構成１０１と、システムバス１０２と、オペレーティングシステム１０３と、アプリケーション１０４と、読出し専用メモリ１０５と、ランダムアクセスメモリ１０６と、ディスクアダプタ１０７と、ディスクユニット１０８と、通信アダプタ１０９と、インターフェースアダプタ１１０と、ディスプレイアダプタ１１１と、キーボード１１２と、マウス１１３と、スピーカー１１４と、ディスプレイモニタ１１５と、処理タイル１１８と、処理コア１２０と、ルータ１２１とを含む。任意の特定のハードウェアシステム構成に限定されないが、図１に例示されるように、システムバス１０２によって処理構成１０１を様々なその他の構成要素に結合することが可能である。本明細書で使用される場合、処理タイル１１８は、タイル１１８と呼ばれる場合もあり、処理コア１２０は、コア１２０と呼ばれる場合もある。処理構成１０１は、１つもしくは複数の集積回路チップおよび／または集積回路ダイとして実装可能である。処理構成１０１は、マルチコア処理チップであってよく、それぞれが関連する処理コア１２０と対応するルータ１２１とを有する、いくつかの処理タイル１１８を含むことが可能である。複数の処理タイル１１８は、オンチップネットワークなど、処理構成１０１上のネットワークによって相互に接続することが可能であり、相互に運用可能である。オペレーティングシステム１０３は、制御を提供して、図１に示される様々な構成要素の機能を調整するために、処理構成１０１上で実行することが可能である。本開示の原理に従って構成されたアプリケーション１０４は、オペレーティングシステム１０３と共に実行することが可能であり、オペレーティングシステム１０３に呼び出し（calls）を渡すことが可能であり、この場合、呼び出しは、アプリケーション１０４によって実行されることになる様々な機能またはサービスを実施する。
【００１６】
図１を参照すると、読出し専用メモリ（「ＲＯＭ」）１０５は、システムバス１０２に結合可能であり、コンピュータデバイス１００のいくつかの基本的な機能を制御する基本入力出力システム（「ＢＩＯＳ」）を含むことが可能である。ランダムアクセスメモリ（「ＲＡＭ」）１０６とディスクアダプタ１０７とをシステムバス１０２に結合することも可能である。オペレーティングシステム１０３とアプリケーション１０４とを含むソフトウェア構成要素は、コンピュータシステムの実行のためのメインメモリであり得るＲＡＭ１０６内にロード可能である点に留意されたい。ディスクアダプタ１０７は、ディスクユニット１０８、例えば、ディスクドライブと通信するインテグレーテッドドライブエレクトロニクス（ｉｎｔｅｇｒａｔｅｄ  ｄｒｉｖｅ  ｅｌｅｃｔｒｏｎｉｃｓ）（「ＩＤＥ」）アダプタ（例えば、パラレルアドバンスドテクノロジーアタッチメント（Ｐａｒａｌｌｅｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）すなわち「ＰＡＴＡ」）、または、いくつかの例を挙げると、シリアルアドバンスドテクノロジーアタッチメント（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）（「ＳＡＴＡ」）アダプタ、ユニバーサルシリアルバス（「ＵＳＢ」）アダプタ、小型コンピュータシステムインターフェース（「ＳＣＳＴ」）など、任意のその他の適切なアダプタであってよい。
【００１７】
コンピュータシステム１００は、バス１０２に結合された通信アダプタ１０９をさらに含むことが可能である。通信アダプタ１０９は、バス１０２を外部ネットワーク（図示せず）に相互に接続することが可能であり、それによって、コンピュータシステム１００が他の類似のデバイスと通信することを可能にする。インターフェースアダプタ１１０とディスプレイアダプタ１１１とを経由して、Ｉ／Ｏデバイスをコンピュータシステム１００に結合することも可能である。キーボード１１２と、マウス１１３と、およびスピーカー１１４とはすべて、ユーザインターフェースアダプタ１１０を介してバス１０２と相互に接続することが可能である。これらのデバイスのいずれかを介してデータをコンピュータシステム１００に入力することが可能である。ディスプレイモニタ１１５は、ディスプレイアダプタ１１１によってシステムバス１０２に結合できる。このようにして、ユーザは、キーボード１１２またはマウス１１３を介して、コンピュータシステム１００と相互に作用して、ディスプレイ１１５またはスピーカー１１４を経由して、コンピュータシステム１００から出力を受信することが可能である。
【００１８】
図２は、本開示の少なくともいくつかの実装形態に従って構成された処理タイルの一例を示す。図２は、処理タイル２１０と、リンク２１１、２１２と、処理コア２１３と、ルータ２１４と、メッセージ２１５と、リンク２１６とを含む。示されるように、処理タイル２１０は、その上でメッセージ２１５が移動できるリンク２１１、２１２を経由して、他の処理タイルに結合できる。処理タイル２１０は、リンク２１６によって互いに結合され得る処理コア２１３とルータ２１４とをさらに含むことが可能である。処理コア２１３およびルータ２１４は、本開示によるマルチキャストルーティングの方法および手順の例を実行するように構成され得る。処理タイル２１０は、シングルスレッドプログラムまたはマルチスレッドプログラムのいずれかを実行するために、他の処理タイルと共働するように構成可能である。図３に例示されるような、いくつかの例では、それぞれの処理タイルは、マルチキャストを経由して、最高で１２８個までの命令と通信できる命令を保持することが可能である。
【００１９】
図３は、本開示の少なくともいくつかの実装形態に従って構成された、メッシュネットワークを経由して結合された処理タイルの４×４アレイの一例を示す。図３は、４×４アレイ３１０と、メッシュネットワーク３１２と、処理コア２１３と、ルータ２１４と、メッセージ３１５、３１５ａ、３１５ｂ、３１５ｃ、３１５ｄ、３１５ｅ、３１５ｆ、３１５ｇと、ルータ３１６と、処理タイル２１０と、処理タイル＜０、０＞３２１と、処理タイル＜２、２＞３２２と、処理タイル＜３、０＞３２４と、処理タイル＜０、１＞３２６と、処理タイル＜３、３＞３２８と、リンク３３０、３３２、３３８、３４２と、処理タイル＜２、１＞３３４と、ルータ３３６と、処理タイル＜０、１＞３４０と、処理タイル＜３、０＞３４４とを含む。個々の処理タイル２１０は、アレイ３１０内の位置（行、列）によって参照され得る。例えば、処理タイル＜０、１＞３４０の位置は、アレイ３１０の第１の行、第２の列内に特定できる。それぞれの処理タイル２１０に関連するのは、処理コア２１３およびルータ２１４であり、処理タイル２１０と、処理コア２１３と、ルータ２１４とは、図２で示された例の処理タイル、処理コア、ルータと同じであってよい。処理タイル２１０は、シングルスレッドプログラムまたはマルチスレッドプログラムのいずれかを実行するために共働するように構成可能であり、図３に例示される例など、いくつかの例では、それぞれの処理タイルは、マルチキャストを経由していくつかの命令（例えば、最高で１２８個までの命令）と通信できる命令を保持することが可能である。
【００２０】
それぞれの命令識別子は、処理タイル２１０のアレイ３１０内の特定の座標にマッピングされ得る。ｘ座標に関して２ビット、およびｙ座標に関して２ビットを用いて、１６個の処理タイル２１０をマップすることが可能である。この例ではブロック内に合計で１２８個の考えられるターゲット命令が存在する可能性があるため、それぞれの処理タイル２１０は、８個の命令を受信することが可能である。したがって、いくつかの例では、命令に関して、処理タイル２１０の処理コア２１３内の可能な８個のスロット（例、位置）のうちの１つを指定するために、３ビットを使用できる。
【００２１】
図３の例に示されるように、命令は、タイル＜２、２＞３２２によって実行可能であり、タイル＜２、２＞３２２は、実行された命令結果をタイル＜３、０＞３２４と、＜０、１＞３２６と、＜３、３＞３２８とに送ることが可能である。タイル＜３、０＞３２４、＜０、１＞３２６、および、＜３、３＞３２８に常駐するこれらのターゲットは、例えば、図４および５の例に示される例示的なマルチキャストフォーマットを使用して、命令内で符号化できる。タイル＜２、２＞３２２の東方向（例えば、右）と西方向（例えば、左）の両方の列内のタイル２１０によって値が必要とされることを決定するために、メッセージ３１５のサブセットとビットマスクビットとを解釈するようにタイル＜２、２＞３２２におけるルータ３１６を構成することが可能である。タイル＜２、２＞３２２上の命令は、本開示による例示的なターゲット符号化を用いて、メッセージ３１５ａ、３１５ｂの２つの複写をネットワーク３１２内に注入できる。図３に例示されるように、メッセージ３１５ａは西に向けられてよく、一方、メッセージ３１５ｂは東に向けられてよい。
【００２２】
命令座標とルーティングとの間の整合性を達成するために、この例で実装可能な処理タイル２１０に対する命令の多くの異なる可能なマッピングが存在する。マッピングの一例は、すべての１６個の処理タイル２１０を通して命令識別子を均一にインターリーブすることが可能である。例えば、識別子「０」、「１６」、「３２」「４８」などをアレイ３１０の左上角の処理タイル＜０、０＞３２１にマッピングすることが可能であり、識別子「１」、「１７」、「３３」、「４９」などを処理タイル＜０、１＞３２４にマッピングすることが可能である、等々である。この例示的なマッピングを用いて、図４に示される例からのサブセット０などのサブセットは、１６個のタイルのそれぞれにマッピングされる１つの命令を指定することが可能である。図４のサブセット４２２など、他のサブセットのそれぞれに関しても同じである。タイルへの命令のマッピングは、命令がマッピングされる処理コアを選択するために、命令識別子からのどのビットが使用されるかに依存し得る。改変例が有用である場合があり、これらの命令は、不均一に処理コアにマップされる場合がある（例えば、いくつかのブロックは、１つの処理コアにマッピングされたすべての命令を有する場合があり、他のブロックは、すべての処理コアに分散された命令を有する場合があり、他のブロックは、２つ以上であるが、処理コアのすべてに満たない処理コアにマップされた命令を有する場合がある）。
【００２３】
ルータ３１６は、メッセージ３１５を複製して、それぞれ、行２内のリンク３３２および３３０に沿って、メッセージ３１５の複写を（メッセージ３１５ａによって示されるように）西方向と（メッセージ３１５ｂによって示されるように）東方向の両方に送るように構成され得る。東方向メッセージ３１５ｂは、さらなる複製を必要とせず、メッセージ３１５ｆによって例示されるように、タイル＜３、３＞３２８に直接的にルーティングされ得る。西方向メッセージ３１５ａがタイル＜２、１＞３３４内でルータ３３６に到着するとき、ルータ３３６は、メッセージ複製が必要であることを認識できる。したがって、ルータ３３６は、メッセージ３１５ｃの１つの複写をタイル＜１、１＞３４０に向けてリンク３３８に沿って北方向（例えば、上方向）に送り、メッセージ３１５ｄの別の複写をタイル＜２、０＞３４４に向けてリンク３４２に沿って西方向に送ることができる。メッセージ３１５ｃおよび３１５ｄのこれらの複写のそれぞれは、次いで、メッセージ３１５ｅおよび３１５ｇによって示されるように、さらなる複製の必要なしに、それぞれのターゲット（タイル＜０、１＞３２６、タイル＜３、０＞３２４）に直接的にルーティングされ得る。ルーティング経路は、メッセージの２つ以上の複写を配信するためにリンクが使用されない、最少スパニングツリーを形成することが可能である。例えば、いくつかの例では、メッセージ３１５の複写は、特定のリンクを一度だけ通過することが可能である。
【００２４】
ルータ３１６が、本開示のいくつかの例に従って符号化することから、複数のターゲットを解釈するように構成されている状態で、図３に示された例に従ってマルチキャストを実装することが可能である。処理タイル２１０に関する座標は、例えば、１６ビットのビットマスクから導出できる。ルータ２１４は、ビットマスクを復号することができ、以下の動作のうちの１つまたは複数を決定できる組合せ論理を含むことが可能である。
１）ルータ２１４と同じ処理タイル２１０に常駐している処理コア２１３に対応するビットが設定される場合、ルータ２１４は、メッセージ３１５の複写を同じ処理タイル２１０に常駐している処理コア２１３に提供することが可能である。あるいは、処理コア２１３は、メッセージ３１５内に含まれたオペランドを自ら転送することが可能である。
２）ビットのうちのいずれかが、ルータ２１４の北側により多くのターゲットが存在することを表示する場合、ルータ２１４は、メッセージ３１５の複写を作成することが可能であり、その複写をアレイ３１０上の位置の北に送ることが可能である。ルータ２１４は、ルータ２１４の北に位置付けられないターゲットに関するビットマスクビットをゼロ設定することも可能である。
３）ルータ２１４は、ルータ２１４の南、東、および西に位置付けられた可能なターゲットに関して動作「２」を繰り返すように構成可能である。
【００２５】
上述の動作（１〜３）は、並列ハードウェアによって並行して実行可能である。加えて、アレイ３１０内のルータ２１４の座標に応じて、それぞれのルータ２１４に関して、動作１〜３に関する組合せ論理を調整することが可能である。図３に示される例は、Ｘ−Ｙ  ＤＯＲ（次元順ルーティング（ｄｉｍｅｎｓｉｏｎ−ｏｒｄｅｒ  ｒｏｕｔｉｎｇ）を使用する。しかし、様々なその他のルーティングアルゴリズムを使用できる点は明らかであろう。
【００２６】
図４は、本開示の少なくともいくつかの実装形態による、命令に関するビットマップの一例を示す。図４は、コンパイル時間および／または実行時間の命令スケジューラ４００と、命令４１０と、オペレーションコードフィールド４１１と、プレディケートフィールド４１２と、未使用ビット４１３と、ビットマスクモードビット４１４と、２ビットの左オペランドフィールド／右オペランドフィールド／プレディケートオペランドフィールド４１６と、３ビットのサブセットフィールド４１８と、１６ビットのビットマスク４２０とを含む。コンパイル時間および／または実行時間の命令スケジューラ４００は、例えば、ターゲットによって読み取られることになる値と、ターゲットがその値をどうするかに関する詳細とを含み得る命令４１０を、例えば、指定するため、コンパイルするため、かつ／またはスケジューリングするために利用可能である。２ビットのプレディケートフィールド４１２は、ターゲットに常駐するプレディケート条件に基づいて、いくつかの可能性、この例では、４つの可能性、例えば、（１）命令がターゲットによって実行される、（２）真であるとき、命令が実行される、（３）偽であるとき、命令が実行される、または（４）命令はそのターゲットによって実行されない、を指定できる。ターゲットがプレディケートされていない（ｕｎｐｒｅｄｉｃａｔｅｄ）場合、２ビットのプレディケートフィールド４１２内で何が指定されるかにかかわらず、命令は実行できる。その他の例では、より多くのビットのプレディケートフィールドまたはより少ないビットのプレディケートフィールドを使用することが可能である。
【００２７】
図４に示された例など、いくつかの例によれば、命令４１０は、例えば、最高で１６個までの異なるターゲットを指定するのを助けるために、伝統的には使用されない、いくつかのビットを使用することが可能であり、このターゲットの数は、ビット割当てに応じて変化し得る。これは、共通点を有するターゲットをグループ化することによって、一部達成可能である。例えば、ビットマスクモードビット４１４は、命令符号化のタイプを指定するために使用可能であり、その決定は、コンパイル時間および／または実行時間の命令スケジューラ４００によって行うことができる。このようなケースで、０に設定された場合、命令は、当技術分野で知られているその他の符号化技法を使用することが可能である。例えば、同一のメッセージが（例えば、典型的なオンチップネットワークのデフォルトモードを使用して）ポイントツーポイントメッセージ方式で多くのターゲットのそれぞれに別個に送られる場合、同じデータを送るために、同じリンクを複数回再使用する必要があり得る。しかし、ビット４１４が１に設定される場合、図４に示された符号化を使用して、例えば、値が、この同じ仕様を共有するターゲットのすべてに関して、左オペランドに送られることになるか、右オペランドに送られることになるか、またはプレディケートオペランドに送られることになるかを指定するために、２ビット４１６を使用することが可能である。１６ビット４２０のもう１つの可能性は、２ビットの８つの対を指定することであり、それぞれの対が、異なるタイプのオペランドを指定し、その結果、マルチキャストのために、より少ないが、ターゲットに関する柔軟性を有するオペランドがもたらされる。
【００２８】
本開示のいくつかの例によるマッピングを使用すると、オペランドが、例えば、処理タイル３２６など、ターゲット処理タイルに達すると、左オペランド／右オペランド／プレディケートオペランドと、図４に示されるサブセット４１８などのサブセットに対応するスロットとを指定するために、共通ビット４１６などの共通ビットを使用することが可能である。いくつかの例は、例えば、３つ以上のターゲットを含めて、様々な数のターゲットが生産命令によって指定されることを可能にでき、ターゲットの数は、例えば、ビット割当てに応じて変化し得る。加えて、ネットワーク３１２自体は、生産命令処理タイル（例えば、処理コア３１６）とターゲット消費命令処理タイル（例えば、処理タイル３２４、３２６、３２８）との間のネットワーク内メッセージ複製を自動的に実行することが可能である。ネットワーク内メッセージ複製のかかる例は、ネットワーク内のリンクを一度通過する必要があるオペランドメッセージ（例えば、メッセージ３１５）に関して提供できる（例えば、生産命令処理タイルは、１つのメッセージをネットワーク（例えば、ネットワーク３１２）内に注入でき、ネットワークは自動的にファンアウトして、必要に応じて、メッセージを自動的に複製しながら、メッセージをターゲットタイルにルーティングすることができる）。
【００２９】
さらに、３ビットを用いることによって、命令は、１２８個の可能なターゲット命令のうち８個の可能な１６命令サブセット４１８のうちの１つを選択することが可能である。選択されたサブセット４１８をターゲットとする１６個の命令は、１６ビットのビットマスク４２０によって識別可能である。これらのターゲット命令は、したがって、同じサブセット４１８と、左オペランドフィールド／右オペランドフィールド／プレディケートオペランドフィールド４１６とを共有できる。コンパイル時間および／または実行時間の命令スケジューラ４００は、ターゲット命令が単一のマルチキャスト命令内で指定され得るように、ターゲット命令をサブセット４１８にパックすることが可能であり、同じオペランドを必要とする命令を同じサブセット４１８に割り当てることによって、プログラムを最適化することが可能である。例えば、図４に示される命令に関する符号化は、以下の命令識別子を含む、８個の可能なサブセット４１８を有し得る。
サブセット０：［０〜１５］、
サブセット１：［１６〜３１］、
サブセット２：［３２〜４７］、
サブセット３：［４８〜６３］、
サブセット４：［６４〜７９］、
サブセット５：［８０〜９５］、
サブセット６：［９６〜１１１］、および
サブセット７：［１１２〜１２７］。
【００３０】
加えて、１６ビット４２０は、サブセット４１８内の１６個のターゲット命令のうちのどれがオペランドを受信することになるのかを表示するターゲットビットマスクを指定することが可能である。１ビット４１３は、未使用であってよく、またはいくつかの他の使用のために予約されてもよい。その他の様々な例示的な符号化も可能である。１つのかかる例示的な符号化は、１５ビットのビットマスクを使用することによって、１ビットを節約できる。
【００３１】
図５は、本開示の少なくともいくつかの実装形態による、その中でビットマスクがレジスタ内または予約局内に含まれる命令に関するビットマップのもう１つの例を示す。図５は、コンパイル時間および／または実行時間の命令スケジューラ５００と、命令５１０と、オペレーションコードフィールド４１１と、プレディケートフィールド４１２と、４ビット５１３と、ビットマスクモードビット５１４と、２ビットの左オペランドフィールド／右オペランドフィールド／プレディケートオペランドフィールド５１６と、１ビットサブセットフィールド５１８と、１５ビット５２０とを含む。例示されるように、命令５１０は、図４に示された例に示されるのと同じオペレーションコードフィールド４１１とプレディケートフィールド４１２とを有し得るが、命令５１０内の共通ビットの異なるセットを符号化する。図４に示された例に類似して、１つのビットマスクモードビット５１４は、命令符号化のタイプを指定するために使用可能である。この場合、０に設定されている場合、その命令は、当技術分野で知られている限定数のターゲットを提供する他の符号化技法を使用することが可能である。しかし、ビット５１４が１に設定されている場合、この同じ仕様書を共有するターゲットのすべてに関して左オペランド、右オペランド、またはプレディケートオペランドにその値が送られることになるかどうかを指定するために、２ビットの左オペランドフィールド／右オペランドフィールド／プレディケートオペランドフィールド５１６を使用することが可能である。１ビットのサブセットフィールド５１８は、マルチキャストのターゲットのすべてに関して１ビットが共通して使用され得ることを指定して、この例では、１２８個の可能なターゲット命令の２つの可能な６４ビットサブセットのうちの１つを符号化することが可能である。これらのターゲット命令は、したがって、同じサブセットフィールド５１８と、左オペランドフィールド／右オペランドフィールド／プレディケートオペランドフィールド５１６とを共有することが可能である。例えば、図５に示される命令５１０に関する符号化は、以下の命令識別子を含めて、２つの可能なサブセットを有し得る。
サブセット０：［０〜６３］、および
サブセット１：［６４〜１２７］。
【００３２】
１つもしくは複数のその他の命令によって６４ビットのビットマスクを作成し、指定されたサブセット内の６４個の可能なターゲット命令のうちの１つもしくは複数を指定するために、マルチキャスト命令５１０によって、明示的にまたは暗示的に、その６４ビットのビットマスクを使用することが可能であり、命令５１０内のビットの残り（例えば、５１３、５２０）は未使用であってよい（または、他の使用のために予約されてよい）。例えば、４個の可能な３２命令サブセットのうちの１つを指定するために、２ビットを備える３２ビットのビットマスクを使用することを含めて、その他の様々な実装形態が可能である。命令符号化４１０、５１０における微変更を伴って、図４および５に示される説明のための実施例の両方を合わせて使用することも可能である。例えば、ビットマスク内のビットの数とサブセット内のビットの数とを変更して、それらに割り当てられたビットの様々な組合せを使用することによって、様々な数のターゲットを達成することが可能である。
【００３３】
図６は、本開示の少なくともいくつかの実装形態による、図４に示された例示的な命令の符号化を指定する１つの例示的な方法を示す流れ図である。１６個より多い命令もしくは１６個より少ない命令を識別できる代替のターゲットビットマスクおよび／またはビット割当ても間得られるが、いくつかの例のために、最高で１６個までの命令を識別できるターゲットビットマスクおよびビット割当てが例示される。図６は、ブロック６１０、６２０、６３０、６４０、６５０、６６０、および／または６７０によって示されるような機能工程あるいは機能動作の１つもしくは複数を含み得るプロセス６００を例示する。
【００３４】
プロセス６００は、（左オペランド、右オペランド、またはプレディケートオペランドのいずれかとして、単一の命令から値を必要とする最高で１６個までの命令を識別する）ブロック６１０、（同じ共通サブセットビットを共有するターゲット命令のうちのいくつかまたはすべてをサブセット内に配置する）ブロック６２０、（マルチキャスト生産命令ビットマスクモードビットを設定する）ブロック６３０、（左オペランド、右オペランドまたはプレディケートオペランドとなるようにマルチキャストオペランドタイプビットを設定する）ブロック６４０、（１６個の命令の８個のサブセットのうちの１つを符号化するために、マルチキャストオペランドサブセットビットを設定する）ブロック６５０、（１６個の命令サブセット内の対応する命令がそのオペランドを受信するとした場合、ビットマスクフィールド内にそれぞれのビットを設定する）ブロック６６０、および／または（終了する）ブロック６７０のうちの１つもしくは複数を含むことが可能である。ビットマップのビット割当ては、あるいは、図４の例の８個のサブセットよりも多いサブセットまたは８個のサブセットよりも少ないサブセットを処理するために、修正可能である。図６に例示されるプロセス６００は、例えば、コンパイラによって実行可能である。プロセス６００は、この例では、コンパイラによって実装可能であるが、例示のための実施例の方法は、様々なその他の処理構成によって実行されることも可能である。
【００３５】
図６を参照すると、ブロック６１０において、プロセス６００は、例えば、最高で１６個までの命令を識別することが可能であり、ターゲットの数は、ビット割当てに応じて変更し得る。これらの命令は、左オペランド、右オペランド、またはプレディケートオペランドのいずれかとして、単一の命令から値を必要とする場合がある。次に、ブロック６２０において、例示的な方法によれば、プロセス６００は、同じ共通のサブセットビットを共有するターゲット命令をサブセット（例えば、１６個の命令の８個のサブセットのうちの１つ）内に配置することが可能である。ブロック６３０において、プロセス６００は、マルチキャスト生産命令ビットマスクモードビット（ビット２１）＝１を設定することが可能である。次に、ブロック６４０において、プロセス６００は、ブロック６１０において識別されたように、左オペランド、右オペランド、またはプレディケートオペランドとなるように、マルチキャストオペランドタイプビット（ビット２０：１９）を設定することが可能である。次に、ブロック６５０において、プロセス６００は、１６個の命令の８個のサブセットのうちの１つを符号化するために、マルチキャストオペランドサブセットビット（１８：１６）を設定することが可能である。ブロック６６０において、１６個の命令サブセット内の対応する命令がそのオペランドを受信するとした場合、プロセス６００は、ビットマスクフィールド内にそれぞれのビットを設定することが可能であり、次いで、プロセスは完了する（ブロック６７０）。
【００３６】
図７は、本開示の少なくともいくつかの実装形態に従って構成された、図３に示された図に示されるルータによって実行されるルーティングのための１つの例示的な方法を示す流れ図である。図７は、ブロック７０１、７１０、７２０、７２５、７３０、７３５、７４０、７４５、７５０、７５５、７６０、７６５、７７０、および／または７７５によって示される機能工程あるいは機能動作のうちの１つもしくは複数を含み得るプロセス７００を例示する。
【００３７】
プロセス７００は、（着信メッセージから始まる）ブロック７０１、着信メッセージ７０５、（着信メッセージのヘッダを読み取る）ブロック７１０、（メッセージのターゲットの位置が北方向であるかどうかを問い合わせる）ブロック７２０、（メッセージの複写を作成して、その複写を北に送る）ブロック７２５、（メッセージのターゲットの位置が東方向に位置付けられるかどうかを問い合わせる）ブロック７３０、（メッセージの複写を作成して、その複写を東に送る）ブロック７３５、（メッセージのターゲットの位置が南方向に位置付けられるかどうかを問い合わせる）ブロック７４０、（メッセージの複写を作成して、その複写を南に送る）ブロック７４５、（メッセージのターゲットの位置が西方向であるかどうかを問い合わせる）ブロック７５０、（メッセージの複写を作成して、その複写を西に送る）ブロック７５５、（メッセージのターゲットの位置がローカル処理コアであるかどうかを問い合わせる）ブロック７６０、（ネットワークからメッセージの複写を取り出して、それをローカル処理コアに提供する）ブロック７６５、（別の着信メッセージが存在するかどうかを問い合わせる）ブロック７７０、（終了する）ブロック７５５のうちの１つまたは複数を含むことが可能である。
【００３８】
この例示のための実施例は、プロセス７００によってルーティングされる必要がある着信メッセージ７０５を用いてブロック７０１から始まる。いくつかの例では、プロセス７００は、例えば、図２および３に示された例のルータ２１４の形で実装可能である。
【００３９】
ブロック７１０において、プロセス７００は、メッセージ７０５のターゲットの位置を決定するために、着信メッセージのヘッダを読み取ることが可能である。これは、例えば、図５を参照して上で説明された組合せ論理によって達成され得る。ブロック７２０において、プロセス７００は、メッセージ７０５のターゲットの位置が、例えば、アレイ３１０などのアレイ上のプロセス７００の位置の北方向（例えば、上向き）であるかどうかを問い合わせることが可能である。「はい」である場合、ブロック７２５において、プロセス７００は、メッセージ７０５の複写を作成して、その複写をその位置から北に送ることが可能である。次に、ブロック７３０において、プロセス７００は、メッセージのターゲットの位置がアレイ上のその位置の東方向（例えば、右）に位置するかどうかを問い合わせることが可能である。「はい」である場合、ブロック７３５において、プロセス７００は、そのメッセージの複写を作成して、その複写をその位置から東に送ることが可能である。次に、ブロック７４０において、プロセス７００は、メッセージのターゲットの位置がアレイ上のその位置の南方向（例えば、下向き）に位置するかどうかを問い合わせる。「はい」である場合、ブロック７４５において、プロセス７００は、そのメッセージの複写を作成して、その複写をその位置から南に送ることが可能である。次に、ブロック７５０において、プロセス７００は、メッセージのターゲットの位置がアレイ上のその位置から西方向（例えば、左側）であるかどうかを問い合わせることが可能である。「はい」である場合、ブロック７５５において、プロセス７００は、そのメッセージの複写を作成して、その複写をアレイ上のその位置から西に送ることが可能である。
【００４０】
プロセス７００は、ブロック７６０において、メッセージのターゲットの位置がプロセス７００に関連する処理タイル（例えば、２１０）に位置する処理コア（例えば、２１３）であるかどうかを問い合わせることが可能である。「はい」である場合、ブロック７６５において、プロセス７００は、ネットワークからそのメッセージの複写を抽出することが可能であり、それを（例えば、プロセス７００と同じ処理タイル上に常駐している）ローカル処理コアに提供することが可能である。次に、ブロック７７０において、プロセス７００は、ルーティングされる必要があり得る別の着信メッセージ７０５が存在するかどうかを問い合わせることが可能である。「はい」である場合、この方法は、プロセス７００が、着信メッセージ７０５のターゲットの位置を決定するために、着信メッセージ７０５のヘッダを読み取ることが可能なブロック７１０に戻ることができる。別の着信メッセージが存在しない場合、この方法は、別の着信メッセージが存在し、その時点で、ポイントプロセス７００が、図７で例示され、本明細書で説明される動作を繰り返すことが可能になるまで、ブロック７７５で終了できる。
【００４１】
いくつかの例によれば、メッセージ７０５は、例えば、図３に示されるように、北方向または南方向にルーティングされる前に、東方向または西方向にルーティングされ得る。その他の例によれば、そのメッセージを北方向または南方向に送ることは、メッセージを東方向または西方向に送ることよりも優先する場合がある。いくつかの例では、プロセスが、メッセージの複製を含めて、メッセージが（１つまたは複数の）ターゲットに達するために移動するであろうリンクの総数を最小限に抑えるために、（１つまたは複数の）どの方向にメッセージをまず送るべきかを決定する動的な優先順位付けを実施することが可能である。いくつかの例は、メッセージの複製を含めて、メッセージが（１つまたは複数の）ターゲットに達するために移動するであろうリリンクの総数を増大することにならないとき、ある方向が別の方向よりも優先するように、動的な実装形態と、方向優先実装形態のうちの１つとの組合せを利用することが可能である。
【００４２】
例えば、ＴＦｌｅｘマイクロアーキテクチャなど、コンポーザブルライトウェイトプロセッサ（Ｃｏｍｐｏｓａｂｌｅ  Ｌｉｇｈｔｗｅｉｇｈｔ  Ｐｒｏｃｅｓｓｏｒ）（ＣＬＰ）において、本明細書で説明されるユニプロセッサアーキテクチャなど、分散型プロセッサアーキテクチャにおけるデータマルチキャスティングに関する様々な例を利用することが可能である。ＴＦｌｅｘマイクロアーキテクチャは、普通のタイルが動的に一緒に集約されることを可能にするＣＬＰである。ＴＦｌｅｘは、複数の分散型ロードストアバンク（ｌｏａｄ−ｓｔｏｒｅ  ｂａｎｋｓ）を有し、最高で５１２個までのロードおよびストアを用いて、最高で６４までの発行幅と、最高で４，０９６個までの命令の実行窓とをサポートする、３２個のタイルの十分に分散されたアーキテクチャである。
【００４３】
ＴＦｌｅｘマイクロアーキテクチャは、命令のフェッチ、完成、およびコミットに関する制御プロトコルが、最高で１２８個までの命令のブロック上で動作できることを意味するアトミック実行動作（ａｔｏｍｉｃ  ｅｘｅｃｕｔｉｏｎ  ｓｅｍａｎｔｉｃｓ）を有するブロックのシーケンスとしてプログラムを符号化することが可能な、ＴＲＩＰＳ・ＥＤＧＥ（エクスプリジット・データ・グラフィック・エグゼキューション；Ｅｘｐｌｉｃｉｔ  Ｄａｔａ  Ｇｒａｐｈｉｃ  Ｅｘｅｃｕｔｉｏｎ）命令セットアーキテクチャ（ＩＳＡ）を使用する。ＴＦｌｅｘ  ＣＬＰマイクロアーキテクチャは、異なる動作目標、例えば、パフォーマンス、面積効率、またはエネルギー効率に基づいて最善の構成を見出すために、それぞれの個々のスレッドに関して、最高で３２個までの任意の数のタイルの動的集約を可能にし得る。ＴＦｌｅｘマイクロアーキテクチャは、（例えば、それぞれのクロックに関するＰＬＬなどの構造以外に）集中型マイクロアーキテクチャ構造を有さない。共有タイルにわたった構造（structures across participating tiles）は、アドレスに基づいて区分化可能である。その開始アドレス（ＰＣ）に基づいて、それぞれのブロックに所有者タイルを割り当てることが可能である。ブロック内の命令は、命令ＩＤに基づいて、共有タイルにわたって区分化可能であり、ロードストア待ち行列（ＬＳＱ）およびデータキャッシュは、例えば、ロードデータアドレス／ストアデータアドレスに基づいて、区分化可能である。
【００４４】
本明細書で提供され、説明されるのは、例えば、複数の相互に接続された処理タイルを有する分散型プロセッサアーキテクチャにおけるデータマルチキャスティングのための方法である。この方法は、ソースから第１のメッセージを受信するように構成された複数のターゲットを識別することと、ターゲットによって一般に共有される選択された情報を含めて、ターゲットのそれぞれに関して第１のメッセージにターゲットルーティング命令を提供することと、識別されたターゲットのうちの２つがルータに対して互いに異なる方向に配置されているとき、第１のメッセージを複製して、例えば、ルータの異なる出力リンクを経由して、複製されたメッセージを、識別されたターゲットのそれぞれに対して異なる方向にルーティングすることとを含むことが可能である。この例では、複製されたメッセージは、ソースから続いてルーティングされた第１のメッセージと、その複写とを含む。ターゲットルーティング命令を提供することは、選択された情報がそれらのターゲットによって一般に共有されるビットのサブセットを利用することをさらに含むことが可能である。ターゲットによって一般に共有されるこの選択された情報は、左オペランド、右オペランド、またはプレディケートオペランドとして識別可能であり、例えば、ターゲットの複数の複数命令サブセットのうちの１つの選択を含むことが可能である。いくつかの例では、複数命令サブセットの数は８であってよい。ターゲットルーティング命令は、命令符号化のタイプを指定するために使用されているビットを含むことが可能である。いくつかの例では、ターゲットルーティング命令を提供することは、別の命令によって作成されたビットマスクを利用することをさらに含むことが可能である。複製されたメッセージをルーティングすることは、ターゲットルーティング命令を決定するために、着信メッセージのヘッダを読み取ることを含むことが可能である。いくつかのその他の例では、ルーティング命令を処理することは、ルーティング命令が、共通リンクを共有する、ソースから異なる方向のターゲットへのルートを含むとき、複製されたメッセージが共通リンクを集団で（collectively）通過できるように、ルーティング命令を構成することをさらに含むことが可能である。複製されたメッセージをターゲットのそれぞれにルーティングすることは、第１のメッセージおよび／または複製されたメッセージを抽出して、ルータが、そのターゲットがローカル処理コアに常駐することを決定すると、その抽出されたメッセージをローカル処理コアに送ることを含み得る。
【００４５】
やはり本明細書で提供され、説明されるのは、例えば、ソースから第１のメッセージを受信するように構成された複数のターゲットを識別して、ターゲットによって一般に共有される選択された情報を含めて、ターゲットに関して第１のメッセージにターゲットルーティング命令を提供するように構成されたソースを含む、分散型処理アーキテクチャにおけるデータマルチキャスティングのための装置である。この装置は、ターゲットのそれぞれの位置を決定するために、ターゲットルーティング命令を読み取り、ターゲットのうちの２つがルータに対して互いに異なる方向に配置されているとき、メッセージを複製して、それぞれのターゲットが１つのメッセージだけを受信することを確実にするために十分なだけ複製することを含めて、メッセージをターゲットのそれぞれにルーティングするように構成されたルータを含むことも可能である。この情報は、ターゲットによって一般に共有されるビットのサブセットを利用して符号化され得る。ターゲットによって一般に共有される選択された情報は、左オペランド、右オペランド、またはプレディケートオペランドとして識別可能であり、例えば、ターゲットの複数の複数命令サブセットのうちの１つの選択を含むことが可能である。ルータは、メッセージを抽出して、ターゲットがローカル処理コアに常駐していることを決定すると、そのメッセージをローカル処理コアに送るように構成可能である。
【００４６】
やはり本明細書で提供され、説明されるのは、例えば、オンチップネットワークと複数のルータとを経由して相互に接続された複数の処理コアを有する分散型処理構成を含む、分散型処理アーキテクチャにおけるデータマルチキャスティングのためのシステムである。ソースを複数の処理コアのうちの１つと関連付けることが可能であり、少なくとも１つのターゲットを複数の処理コアのうちの１つまたは複数と関連付けることが可能である。複数のルータのうちの１つ１つを複数の処理コアの対応する１つと関連付けることが可能であり、複数のルータのうちの１つ１つは、ソースからメッセージを受信することと、メッセージのターゲットルーティング命令を識別することであって、識別されたターゲットルーティング命令が、ターゲットのそれぞれの位置を決定し、メッセージをターゲットにルーティングするために、ターゲットによって一般に共有される、受信されたメッセージから選択された情報を含む、識別することと、ターゲット命令のうちの２つがルータに対して互いに異なる方向に配置されているとき、メッセージを複製して、メッセージをターゲットにルーティングすることとを行うように構成可能である。例えば、ソースは、ターゲットによって一般に共有されるビットのサブセットを利用して、選択された情報を符号化するように構成可能である。いくつかの例では、このソースは、左オペランド、右オペランド、またはプレディケートオペランドのうちの１つを識別するように構成可能であり、例えば、ターゲットの複数命令サブセットの選択を含むことが可能である。いくつかの例では、ルータは、ネットワークからそのメッセージを抽出して、ターゲット命令がローカル処理コアに常駐することを決定すると、その抽出されたメッセージをローカル処理コアに送る（または、そうでない場合、メッセージまたはそのメッセージの複写をローカル処理コアに提供する）ように構成可能である。
【００４７】
前述の詳細な説明は、ブロック図、流れ図、および／もしくは例を使用することによりデバイスならびに／またはプロセスの様々な例を記載した。かかるブロック図、流れ図、および／または例が、１つもしくは複数の機能および／または動作を含む限りにおいて、かかるブロック図、流れ図、ならびに／または例の中のそれぞれの機能および／もしくは動作は、幅広いハードウェア、ソフトウェア、ファームウェア、もしくは実質的にそれらの任意の組合せによって、個々にかつ／または集合的に実装可能である点を当業者は理解されよう。例えば、本明細書で説明される主題のいくつかの部分は、特定用途向け集積回路（「ＡＳＩＣ」）、フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）、デジタル信号プロセッサ（「ＤＳＰ」）、またはその他の統合形式の形で実装可能である。しかし、本明細書で開示された例のいくつかの態様は、全部または一部において、１つもしくは複数のコンピュータ上で実行している１つもしくは複数のコンピュータプログラムとして（例えば、１つもしくは複数のコンピュータシステム上で実行している１つもしくは複数のプログラムとして）、１つもしくは複数のプロセッサ上で実行している１つもしくは複数のプログラムとして（例えば、１つもしくは複数のマイクロプロセッサ上で実行している１つもしくは複数のプログラムとして）、ファームウェアとして、または実質的にそれらの任意の組合せとして集積回路内で均等に実装可能であり、回路の設計ならびに／またはソフトウェアおよび／もしくはファームウェアに関するコードの書込みは、本開示に照らして、十分に当業者の能力の範囲内であろう点を当業者は認識されよう。例えば、ユーザが、速度および制度が最重要であると決定した場合、そのユーザは、主にハードウェア手段および／もしくはファームウェア手段を選択でき、柔軟性が最重要である場合、ユーザは、主にソフトウェア実装形態を選択でき、または、さらにこの場合も代替として、ユーザは、ハードウェア、ソフトウェア、および／もしくはファームウェアの何らかの組合せを選択できる。
【００４８】
加えて、当業者は、本明細書で説明された主題の機構は、様々な形でプログラム製品として流通可能であり、本明細書で説明された主題の説明のための実施例は、その流通を実際に実行するために使用される特定のタイプの信号担持媒体にかかわらず適用される。信号担持媒体の例は、以下を含むが、これらに限定されない。すなわち、フレキシブルディスク、ハードディスクドライブ、コンパクトディスク（「ＣＤ」）、デジタルビデオディスク（「ＤＶＤ」）、デジタルテープ、コンピュータメモリなどの記憶可能タイプの媒体、ならびにデジタル通信媒体および／またはアナログ通信媒体（例えば、光ファイバケーブル、導波管、有線通信リンク、無線通信リンクなど）などの伝送タイプ媒体である。
【００４９】
当業者は、デバイスおよび／またはプロセスを本明細書に記載された形で説明すること、ならびにその後、かかる説明されたデバイスおよび／またはプロセスをデータ処理システムに統合するために、技術的手法を使用することは当技術分野において一般的であることを認識されよう。すなわち、本明細書で説明されたデバイスおよび／またはプロセスの少なくとも一部は、合理的な量の経験を経て、データ処理システム内に統合され得る。当業者は、典型的なデータ処理システムは、一般に、システムユニットハウジング、ビデオディスプレイデバイス、揮発性メモリおよび不揮発性メモリなどのメモリ、マイクロプロセッサおよびデジタル信号プロセッサなどのプロセッサ、オペレーティングシステム、ドライバ、グラフィカルユーザインターフェース、およびアプリケーションプログラムなどの計算エンティティ、タッチパッドもまたはスクリーンなど、１つもしくは複数のインタラクションデバイス、ならびに／あるいはフィードバックループおよび制御モータ（例えば、位置および／もしくは速度を感知するためのフィードバック、構成要素および／もしくは質量を移動しかつ／または調整するための制御モータ）を含む制御システムのうちの１つもしくは複数を含む点を理解されよう。典型的なデータ処理システムは、通常、データコンピューティング／データ通信、および／またはネットワークコンピューティングシステム／ネットワーク通信システムの形で見出されるものなど、任意の適切な市販の構成要素を利用して実施可能である。
【００５０】
本明細書で説明された主題は、時として、異なる他の構成要素内に含まれた、または異なる他の構成要素と結合された異なる構成要素を例示する。かかる示されたアーキテクチャは単なる例であり、実際に、同じ機能性を達成する多くのその他のアーキテクチャが実装可能であることを理解されたい。概念的な意味で、同じ機能性を達成するための構成要素の任意の構成は、所望される機能性が達成されるように、効果的に「関連付けられる（ａｓｓｏｃｉａｔｅｄ）」。したがって、特定の機能性を達成するために組み合わされる、本明細書の任意の２つの構成要素は、アーキテクチャであるかまたは中間構成要素であるかにかかわらず、所望される機能性が達成されるように、互いに「関連付けられる（ａｓｓｏｃｉａｔｅｄ  ｗｉｔｈ）」と見なされてよい。同様に、そのように関連付けられる任意の２つの構成要素は、所望される機能性を達成するために、互いと「動作可能に接続されている」か、または「動作可能に結合されている」として理解することもでき、そのように関連付けられることが可能な任意の２つの構成要素は、所望される機能性を達成するために、互いに「動作可能に結合可能」であるとして理解することもできる。動作可能に結合可能な特定の例は、物理的に噛み合わせ可能な構成要素および／もしく物理的に相互作用する構成要素、ならびに／または無線で相互作用可能な構成要素および／もしく無線で相互作用する構成要素、ならびに／または論理的に相互作用する構成要素および／もしくは論理的に相互作用可能な構成要素を含むが、これらに限定されない。
【００５１】
本明細書における実質的に任意の複数形の用語および／または単数形の用語の使用に関して、当業者は、状況および／もしくは応用例に適するように、複数形から単数形に、ならびに／または単数形から複数形に変換することが可能である。様々な単数形／複数形の置換は、説明を明瞭にするために、本明細書において明示的に記載される場合がある。
【００５２】
当業者は、一般に、本明細書、および特に、添付の特許請求の範囲（例えば、添付の特許請求の範囲の本文）において使用される用語は、一般に、「開かれた」用語として意図される点（例えば、「含んでいる（ｉｎｃｌｕｄｉｎｇ）」という用語は、「含んでいるが、これに限定されない」として解釈されるべきであり、「有する（ｈａｖｉｎｇ）」という用語は、「を少なくとも有する」として解釈されるべきであり、「含む（ｉｎｃｌｕｄｅｓ）」という用語は「を含むが、それに限定されない」と解釈されるべきである、など）を理解されよう。特定の数の紹介された請求項の列挙が意図される場合、かかる意図は、特許請求の範囲において明示的に列挙されることになり、かかる列挙がない場合、かかる意図は存在しないことを当業者はさらに理解されよう。例えば、理解するための助けとして、以下の添付の特許請求の範囲は、請求項の列挙を紹介するために、「少なくとも１つの」および「１つまたは複数の」という導入句の使用を含む場合がある。しかし、同じ請求項が「１つもしくは複数の」または「少なくとも１つの」という導入句、および「ａ」または「ａｎ」などの不定冠詞を含む（例えば、「ａ」および／または「ａｎ」は、通常、「少なくとも１つの」または「１つもしくは複数の」を意味するように解釈されるべきである）ときですら、かかる句の使用は、不定冠詞「ａ」または「ａｎ」によって請求項の列挙を紹介することが、そのように紹介された請求項の列挙を含む任意の特定の請求項を１つのかかる列挙だけを含む発明に限定することを意味すると解釈されるべきではなく、同じことは、請求項の列挙を紹介するために使用される定冠詞の使用に関しても当てはまる。加えて、特定数の紹介された請求項の列挙が明示的に列挙されている場合ですら、当業者は、一般に、かかる列挙は少なくとも列挙された数を意味すると解釈されるべきである点を理解されよう（例えば、他の修飾語句を伴わない、「２つの列挙」を単に列挙することは、通常、少なくとも２つの列挙、または２つ以上の列挙を意味する）。さらに、「Ａ、Ｂ、およびＣなどのうちの少なくとも１つ、など」に類似する通常の表現が使用される場合、一般に、かかる構文は、当業者がその表現を理解することになる意味が意図される（例えば、「Ａ、Ｂ、およびＣのうちの少なくとも１つを有するシステム」は、Ａだけを有するシステム、Ｂだけを有するシステム、Ｃだけを有するシステム、ＡおよびＢを共に有するシステム、ＡおよびＣを共に有するシステム、ＢおよびＣを共に有するシステム、ならびに／またはＡ、Ｂ、およびＣを共に有するシステムを含むが、これらに限定されないことになる、など）。「Ａ、Ｂ、またはＣのうちの少なくとも１つ、など」に類似する通常の表現が使用される場合、一般に、かかる構文は、当業者がその表現を理解することになる意味が意図される（例えば、「Ａ、Ｂ、またはＣのうちの少なくとも１つを有するシステム」は、Ａだけを有するシステム、Ｂだけを有するシステム、Ｃだけを有するシステム、ＡおよびＢを共に有するシステム、ＡおよびＣを共に有するシステム、ＢおよびＣを共に有するシステム、ならびに／またはＡ、Ｂ、およびＣを共に有するシステムを含むが、これらに限定されないことになる、など）。明細書においてであれ、特許請求の範囲においてであれ、または図面においてであれ、実質的に、２つ以上の代替用語を示す任意の離接語および／または離接句は、それらの用語のうちの１つ、それらの用語のうちのいずれか、または両方の用語を含む可能性を企図すると理解されるべきである点を当業者はさらに理解されよう。例えば、「ＡまたはＢ」という句は、「Ａ」、もしくは「Ｂ」、または「ＡおよびＢ」の可能性を含むと理解されることになる。
【００５３】
様々な態様および例が本明細書において開示されているが、その他の態様および実施形態は当業者に明らかであろう。本明細書で開示された様々な態様および実施形態は、例示のためであり、限定することが意図されず、真の範囲および趣旨は以下の特許請求の範囲によって示される。
【図１】
2013501299.tif 000002
【図２】
2013501299.tif 000003
【図３】
2013501299.tif 000004
【図４】
2013501299.tif 000005
【図５】
2013501299.tif 000006
【図６】
2013501299.tif 000007
【図７】
2013501299.tif 000008
【手続補正書】
【提出日】平成24年3月9日(2012.3.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の相互に接続された処理コアを有する分散型処理アーキテクチャにおけるデータマルチキャスティングのための方法であって、
ソースから第１のメッセージを受信するように構成された複数のターゲット命令を識別することと、
それぞれの識別されたターゲット命令に関して前記第１のメッセージにターゲットルーティング命令を提供することであって、それぞれのターゲットルーティング命令が、前記識別されたターゲット命令によって一般に共有される選択された情報を含む、提供することと、
前記識別されたターゲット命令のうちの２つがルータに対して互いに異なる方向に配置された処理コアと関連付けられるとき、前記第１のメッセージを複製して、前記複製されたメッセージを前記異なる方向で前記識別されたターゲット命令のそれぞれにルーティングすることとを含む方法。
【請求項２】
ターゲットルーティング命令を前記提供することが、前記ターゲット命令によって一般に共有されるビットのサブセットを利用して、前記選択された情報を符号化することをさらに含む、請求項１に記載の方法。
【請求項３】
前記ターゲット命令によって一般に共有される前記選択された情報が、左オペランド、右オペランド、またはプレディケートオペランドのうちの１つとして識別される、請求項１に記載の方法。
【請求項４】
前記ターゲット命令によって一般に共有される前記選択された情報が、前記ターゲット命令のいくつかの複数命令サブセットのうちの１つの選択を含む、請求項１に記載の方法。
【請求項５】
前記ターゲット命令の複数命令サブセットの数が８である、請求項４に記載の方法。
【請求項６】
前記ターゲットルーティング命令が、命令符号化のタイプを指定するために使用されるビットを含む、請求項１に記載の方法。
【請求項７】
ターゲットルーティング命令を前記提供することが、別の命令によって作成されたビットマスクを利用することをさらに含む、請求項１に記載の方法。
【請求項８】
前記複製されたメッセージをルーティングすることが、前記ターゲットルーティング命令を決定するために、前記第１のメッセージのヘッダを読み取ることを含む、請求項１に記載の方法。
【請求項９】
ターゲットルーティング命令を前記提供することが、前記ターゲットルーティング命令が、共通リンクを共有する、前記ソースから異なる方向の前記２つのターゲット命令へのルートを含むとき、前記第１のメッセージおよび前記複製されたメッセージが前記共通リンクを一度だけ通過するように前記ルーティング命令を構成することをさらに含む、請求項１に記載の方法。
【請求項１０】
前記複製されたメッセージを前記識別されたターゲット命令のそれぞれにルーティングすることが、前記第１のメッセージまたは前記複製されたメッセージのうちの少なくとも１つを抽出して、前記ルータが、それぞれの識別されたターゲット命令が前記ローカル処理コアに常駐することを決定すると、それをローカル処理コアに送ることを含む、請求項１に記載の方法。
【請求項１１】
複数の相互に接続された処理コアを有する分散型プロセッサアーキテクチャにおけるデータマルチキャスティングのための装置であって、
ソースから第１のメッセージを受信するように構成された複数のターゲット命令を識別し、
前記ターゲット命令によって一般に共有される選択された情報を含めて、前記ターゲット命令に関して前記第１のメッセージにターゲットルーティング命令を提供する
ように構成された前記ソースと、
前記ターゲット命令のそれぞれの位置を決定するために、前記ターゲットルーティング命令を読み取り、
前記ターゲット命令のうちの２つがルータに対して互いに異なる方向に配置された処理コアと関連付けられるとき、前記メッセージを複製することを含めて、前記第１のメッセージを前記ターゲット命令のそれぞれにルーティングする
ように構成された前記ルータと含む装置。
【請求項１２】
前記ソースが、前記ターゲット命令によって一般に共有されるビットのサブセットを利用して、前記選択された情報を符号化するようにさらに構成される、請求項１１に記載の装置。
【請求項１３】
前記ソースが、前記ターゲット命令によって一般に共有された前記選択された情報が、左オペランド、右オペランド、またはプレディケートオペランドのうちの１つを識別するように、前記選択された情報を符号化するようにさらに構成される、請求項１１に記載の装置。
【請求項１４】
前記ソースが、前記ターゲット命令によって一般に共有される前記選択された情報が前記ターゲット命令の複数の複数命令サブセットのうちの１つの前記選択を識別するように、前記選択された情報を符号化するようにさらに構成される、請求項１１に記載の装置。
【請求項１５】
前記ルータが、前記第１のメッセージまたは前記複製されたメッセージのうちの少なくとも１つを抽出して、前記ターゲット命令が前記ローカル処理コアに常駐していることを決定すると、前記抽出されたメッセージをローカル処理コアに送るように構成される、請求項１１に記載の装置。
【請求項１６】
複数の相互に接続された処理コアを有する分散型処理アーキテクチャにおけるデータマルチキャスティングのためのシステムであって、
オンチップネットワークを経由して相互に接続された複数の処理コアを有する分離型処理構成であって、ソースが前記複数の処理コアのうちの１つに関連し、複数のターゲット命令が前記複数の処理コアのうちの少なくとも１つに関連する、分離型処理構成と、
複数のルータとを含み、
前記複数の処理コアのそれぞれが前記複数のルータの対応する１つに関連し、前記複数のルータのうちの１つまたは複数が、
前記ソースからメッセージを受信することと、
前記メッセージからターゲットルーティング命令を識別することであって、前記識別されたターゲットルーティング命令が、前記ターゲット命令のそれぞれの位置を決定するために、前記ターゲット命令によって一般に共有される選択された情報を含む、識別することと、
前記ターゲット命令のうちの２つが前記ルータに対して互いに異なる方向に配置された処理コアと関連付けられるとき、前記メッセージを複製することと、
前記複製されたメッセージを前記ターゲット命令のそれぞれにルーティングすることとを行うように構成されたシステム。
【請求項１７】
前記ソースが、前記ターゲット命令によって一般に共有されるビットのサブセットを利用して、前記選択された情報を符号化するようにさらに構成される、請求項１６に記載のシステム。
【請求項１８】
前記ソースが、前記選択された情報から、左オペランド、右オペランド、またはプレディケートオペランドのうちの１つを識別するように構成される、請求項１６に記載のシステム。
【請求項１９】
前記ターゲット命令によって一般に共有される前記選択された情報が、前記ターゲット命令の複数命令サブセットの前記選択を含む、請求項１６に記載のシステム。
【請求項２０】
前記複数のルータのうちの少なくとも１つが、前記メッセージを前記オンチップネットワークから抽出して、前記抽出されたメッセージ内の前記複数のターゲット命令のターゲット命令が前記ローカル処理コア内に常駐することを決定すると、前記抽出されたメッセージをローカル処理コアに送るように構成される、請求項１６に記載のシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
図３は、本開示の少なくともいくつかの実装形態に従って構成された、メッシュネットワークを経由して結合された処理タイルの４×４アレイの一例を示す。図３は、４×４アレイ３１０と、メッシュネットワーク３１２と、処理コア２１３と、ルータ２１４と、メッセージ３１５、３１５ａ、３１５ｂ、３１５ｃ、３１５ｄ、３１５ｅ、３１５ｆ、３１５ｇと、ルータ３１６と、処理タイル２１０と、処理タイル＜０、０＞３２５と、処理タイル＜２、２＞３２２と、処理タイル＜３、０＞３２４と、処理タイル＜０、１＞３２６と、処理タイル＜３、３＞３２８と、リンク３３０、３３２、３３８、３４２と、処理タイル＜２、１＞３３４と、ルータ３３６と、処理タイル＜１、１＞３４０と、処理タイル＜２、０＞３４４とを含む。個々の処理タイル２１０は、アレイ３１０内の位置（行、列）によって参照され得る。例えば、処理タイル＜０、１＞３２６の位置は、アレイ３１０の第１の行、第２の列内に特定できる。それぞれの処理タイル２１０に関連するのは、処理コア２１３およびルータ２１４であり、処理タイル２１０と、処理コア２１３と、ルータ２１４とは、図２で示された例の処理タイル、処理コア、ルータと同じであってよい。処理タイル２１０は、シングルスレッドプログラムまたはマルチスレッドプログラムのいずれかを実行するために共働するように構成可能であり、図３に例示される例など、いくつかの例では、それぞれの処理タイルは、マルチキャストを経由していくつかの命令（例えば、最高で１２８個までの命令）と通信できる命令を保持することが可能である。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２２
【補正方法】変更
【補正の内容】
【００２２】
命令座標とルーティングとの間の整合性を達成するために、この例で実装可能な処理タイル２１０に対する命令の多くの異なる可能なマッピングが存在する。マッピングの一例は、すべての１６個の処理タイル２１０を通して命令識別子を均一にインターリーブすることが可能である。例えば、識別子「０」、「１６」、「３２」「４８」などをアレイ３１０の左上角の処理タイル＜０、０＞３２５にマッピングすることが可能であり、識別子「１」、「１７」、「３３」、「４９」などを処理タイル＜０、１＞３２６にマッピングすることが可能である、等々である。この例示的なマッピングを用いて、図４に示される例からのサブセット０などのサブセットは、１６個のタイルのそれぞれにマッピングされる１つの命令を指定することが可能である。図４のサブセット４２２など、他のサブセットのそれぞれに関しても同じである。タイルへの命令のマッピングは、命令がマッピングされる処理コアを選択するために、命令識別子からのどのビットが使用されるかに依存し得る。改変例が有用である場合があり、これらの命令は、不均一に処理コアにマップされる場合がある（例えば、いくつかのブロックは、１つの処理コアにマッピングされたすべての命令を有する場合があり、他のブロックは、すべての処理コアに分散された命令を有する場合があり、他のブロックは、２つ以上であるが、処理コアのすべてに満たない処理コアにマップされた命令を有する場合がある）。