(57)【要約】【課題】動作速度を向上出来るルータを提供すること。【解決手段】実施形態によれば、ルータは、入力ポートINと、スイッチ33と、複数のレジスタ35と、制御部(32,36〜39)とを備える。入力ポートINは、入力信号を受信する。スイッチ33は、入力ポートINで受信された入力信号をマルチキャスト可能である。レジスタ35は、スイッチ33で送信された入力信号を一時的に保持し、外部へ出力する。制御部(32,36〜39)は、スイッチ33に対して入力信号をマルチキャストで送信させると共に、マルチキャストによる送信のうち、正しい宛先への送信を有効とし、誤った宛先への送信を無効とする(S12〜S14)。【選択図】図４
2014230261.tif 000002
【特許請求の範囲】
【請求項１】
入力信号を受信する複数の入力ポートと、
前記入力ポートで受信された前記入力信号をマルチキャスト可能なスイッチと、
前記スイッチで送信された前記入力信号を一時的に保持し、外部へ出力する複数のレジスタと、
前記スイッチに対して前記入力信号をマルチキャストで送信させると共に、前記マルチキャストによる送信のうち、正しい宛先への送信を有効とし、誤った宛先への送信を無効とする制御部と
を備えることを特徴とするルータ。
【請求項２】
前記制御部は、前記スイッチによる前記入力信号のマルチキャスト送信と並行して、前記入力信号の正しい宛先を検出する
ことを特徴とする請求項１記載のルータ。
【請求項３】
前記複数のレジスタに対応付けられた複数の選択回路を更に備え、
前記選択回路の各々は、前記スイッチによってマルチキャストされた前記入力信号を受信すると共に、前記制御部の制御に基づいて、前記正しい宛先に対応する前記レジスタに前記入力信号を出力し、その他の前記レジスタには無効な信号を出力する
ことを特徴とする請求項１または２記載のルータ。
【請求項４】
前記制御部は、前記入力信号につき可能性のある宛先における入力バッファの空き状況を監視すると共に、前記マルチキャストされた前記入力信号が前記レジスタから外部に出力される前に、前記可能性のある宛先における入力バッファを獲得する
ことを特徴とする請求項１乃至３いずれか１項記載のルータ。
【請求項５】
前記制御部は、前記可能性のある宛先の全てにおいて入力バッファの空きがある場合に、前記入力信号をマルチキャストで送信する
ことを特徴とする請求項４記載のルータ。
【請求項６】
前記スイッチはクロスバースイッチである
ことを特徴とする請求項１乃至５いずれか１項記載のルータ。
【請求項７】
前記入力信号は、複数のフリットの集合であるパケットであり、
前記パケットは、クロックに同期して前記フリット単位でパイプライン処理される
ことを特徴とする請求項１乃至６いずれか１項記載のルータ。
【請求項８】
前記制御部は、いずれの入力ポートで前記入力信号を受信したかに応じて、前記マルチキャストの宛先を決定する
ことを特徴とする請求項１乃至７いずれか１項記載のルータ。
【請求項９】
前記制御部は、前記入力信号の種類に応じて、前記マルチキャストの宛先を決定する
ことを特徴とする請求項１乃至８いずれか１項記載のルータ。
【請求項１０】
前記制御部は、いずれか１つの入力ポートでのみ前記入力信号が受信された場合に、前記入力信号をマルチキャストで送信する
ことを特徴とする請求項１乃至９いずれか１項記載のルータ。
【請求項１１】
前記制御部は、複数の前記入力ポートで同時に前記入力信号を受信した場合、該複数の入力信号につき可能性のある宛先が重複するか否かを判断し、
重複しないと判断した場合に、前記スイッチに対して該複数の入力信号を同時にマルチキャストで送信させる
ことを特徴とする請求項１乃至９いずれか１項記載のルータ。
【請求項１２】
前記制御部は、複数の前記入力ポートで同時に前記入力信号を受信し、且つ前記入力信号の宛先が重複する場合、前記入力ポート毎の優先度に応じてマルチキャストする
ことを特徴とする請求項１乃至９いずれか１項記載のルータ。
【請求項１３】
前記制御部は、複数の前記入力ポートで同時に前記入力信号を受信し、且つ前記入力信号の宛先が重複する場合、前記入力信号の種類毎の優先度に応じてマルチキャストする
ことを特徴とする請求項１乃至９いずれか１項記載のルータ。
【請求項１４】
前記ルータは、複数のプロセッサコアを備えたメニーコアプロセッサにおいて、前記複数のプロセッサコア間での信号の送受信を制御する
ことを特徴とする請求項１乃至１３いずれか１項記載のルータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ルータに関する。
【背景技術】
【０００２】
近年、ＮｏＣ（Network on Chip）を用いたメニーコアＳｏＣ（System on Chip）が着目されている。ＮｏＣはでは、ルータを用いてパケットが複数のコア間で送受信される。
【０００３】
ルータのレイテンシは、システム性能を決める主要因となる。そのため、種々のルータ・アーキテクチャに関する研究が進められている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Li-Shiuan Peh他著、“A Delay Model and Speculative Architecture gor Pipelined Routers”、Proceedings of the Seventh International Symposium on high-Performance Computer Architecture (HPCA’01)、2001年
【非特許文献２】H.Matsutani他著、“Prediction Router: a low-latency on-chip router architecture with multiple predictors”、IEEE Transactions on Computers、60(6): 783-799、2011年
【発明の概要】
【発明が解決しようとする課題】
【０００５】
動作速度を向上出来るルータを提供する。
【課題を解決するための手段】
【０００６】
実施形態のルータによれば、複数の入力ポートと、スイッチと、複数のレジスタと、制御部とを備える。入力ポートは、入力信号を受信する。スイッチは、入力ポートで受信された入力信号をマルチキャスト可能である。レジスタは、スイッチで送信された入力信号を一時的に保持し、外部へ出力する。制御部は、スイッチに対して入力信号をマルチキャストで送信させると共に、マルチキャストによる送信のうち、正しい宛先への送信を有効とし、誤った宛先への送信を無効とする。
【図面の簡単な説明】
【０００７】
【図１】第１実施形態に係るメニーコアプロセッサのブロック図。
【図２】第１実施形態に係るプロセッサコアのブロック図。
【図３】パケットの構成を示すブロック図。
【図４】第１実施形態に係るルータのブロック図。
【図５】第１実施形態に係るルータの動作を示すフローチャート。
【図６】第１実施形態に係るルータのパイプライン処理を示すタイムチャート。
【図７】第１実施形態に係るルータのパイプライン処理を示すタイムチャート。
【図８】第１実施形態に係るルータのブロック図。
【図９】第１実施形態に係るルータのブロック図。
【図１０】第１実施形態に係るルータのブロック図。
【図１１】ルータのパイプライン処理を示すタイムチャート。
【図１２】ルータのパイプライン処理を示すタイムチャート。
【図１３】ルータのパイプライン処理を示すタイムチャート。
【図１４】各種ルータの比較結果を示すグラフ。
【図１５】各種ルータの比較結果を示すグラフ。
【図１６】ルータの動作条件を示す図。
【図１７】第２実施形態に係る転送ルールを示すダイアグラム。
【図１８】第２実施形態に係るプロセッサの一部領域を示すブロック図。
【図１９】第２実施形態に係るルータの動作を示すフローチャート。
【図２０】第２実施形態に係るルータのブロック図。
【図２１】第２実施形態に係る転送ルールを示すダイアグラム。
【図２２】第２実施形態に係るルータのブロック図。
【図２３】第３実施形態に係るルータの動作を示すフローチャート。
【図２４】第３実施形態に係るルータのブロック図。
【図２５】第１乃至第３実施形態の変形例に係るメニーコアプロセッサのブロック図。
【図２６】第１乃至第３実施形態の変形例に係る優先度テーブルを示すダイアグラム。
【図２７】第１乃至第３実施形態の変形例に係る優先度テーブルを示すダイアグラム。
【図２８】第１乃至第３実施形態の変形例に係るルータの動作を示すフローチャート。
【発明を実施するための形態】
【０００８】
以下、実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００９】
１．第１実施形態  
第１実施形態に係るルータについて説明する。本実施形態では一例として、メニーコアプロセッサ（many core processor）に使用されるルータについて説明する。
【００１０】
１．１  メニーコアプロセッサの全体構成について  
まず、本実施形態に係るメニーコアプロセッサの構成について、図１を用いて説明する。図１はメニーコアプロセッサのブロック図である。
【００１１】
図示するようにメニーコアプロセッサ１は、１６個のプロセッサコア１０（１０−１〜１０−１６）を備えている。本例におけるプロセッサコア１０の数は１６個であるが、もちろんこれは一例に過ぎず、３２個や６４個等でも良く、複数であれば限定されない。また図１では、プロセッサコア１０が（４×４）のマトリクス状に配置されているが、プロセッサコア１０のレイアウトもこれに限定されるものではない。
【００１２】
メニーコアプロセッサ１は更に、各プロセッサコア１０に対応付けて設けられたルータ１１（１１−１〜１１−１６）を備えている。隣接するルータ１１間は、配線１３によって接続される。ルータ１１は、プロセッサコア１０間におけるデータの送受信を制御する。すなわち、プロセッサコア１０間において、データはパケットとして送受信される。そしてルータ１１は、受信したパケットの宛先に基づいて、対応付けられたプロセッサコア１０にパケットを送信し、または別のプロセッサコア１０に対応付けられたルータ１１にパケットを送信する。
【００１３】
図２は、プロセッサコア１０の構成を示すブロック図である。図示するようにプロセッサコア１０は、コア部２０、キャッシュメモリ２１、及びメモリコントローラ２２を備えている。コア部２０は一次キャッシュメモリを含み、対応するルータ１１と配線によって通信可能に接続されている。そしてコア部２０は、ルータ１１からパケットを受信し、受信したパケットを用いて各種の演算を行い、またパケットをルータ１１に送信する。キャッシュメモリ２１は、コア部２０に対する二次キャッシュ（Ｌ２キャッシュ）として機能する。キャッシュメモリ２１も、対応するルータ１１と配線によって通信可能に接続されている。そして、ルータ１１からパケットを受信し、これを一時的に保持し、またパケットをルータ１１に送信する。メモリコントローラ２２は、プロセッサ１外部のメインメモリへのデータ要求を調停する。例えばメモリコントローラ２２は、Ｌ２キャッシュ２１でキャッシュミスが発生した場合、Ｌ２キャッシュ２１（あるいはキャッシュコントローラ）の生成した、メインメモリへのデータ要求パケットを受信する。そしてメモリコントローラ２２は、このデータ要求パケットに基づいてメインメモリへアクセスし、データ要求パケットを生成したＬ２キャッシュ２１、及び当該データを要求したコア部２０に対して転送する。
【００１４】
なおメモリコントローラ２２は、一部のルータ１１にのみ対応付けて設けられるのが一般的である。すなわち、図１の例では１６個のプロセッサコア１０が含まれるが、メモリコントローラ２２の数は例えば１〜４個であるのが通常である。従ってこの場合、特定のルータ１１のみがメモリコントローラ２２と接続され、その他のルータ２２はメモリコントローラ２２とは接続されない。もちろん、プロセッサコア１０またはルータ２２と同数のメモリコントローラ２２が設けられても良い。
【００１５】
図３は、パケットの構成を示す概念図である。図示するようにパケットは、フリット（flit）と呼ばれるデータの集合であり、フリットはクロック１サイクルで処理される単位である。パケットの先頭にはヘッダフリット（header flit）が設けられる。ヘッダフリットはパケットの種類や宛先等、当該パケットに関する情報を保持する。ヘッダフリットの後ろには、正味のデータを保持するボディフリットが続く。最後のフリットはテイルフリット（tail flit）と呼ばれる。
【００１６】
１．２  ルータの構成について  
次に、ルータ１１の構成について図４を用いて説明する。図４は、本実施形態に係るルータ１１のブロック図である。図４において、太線で示した矢印はフリットまたはフリットと同じビット幅の信号を示し、細線で示した矢印はそれ以外の制御信号等を示している。
【００１７】
図示するようにルータ１１は、複数のバーチャルチャネル３０、選択回路３１、３２、スイッチ３３、キャンセル部３４、パイプラインレジスタ３５、マルチキャストユニット３６、ルート計算部３７、ＶＣ（virtual channel）アロケータ３８、及びスイッチアロケータ３９を備えている。
【００１８】
複数のバーチャルチャネル３０はそれぞれ、ルータ１１に設けられた複数の入力ポートＩＮ１〜ＩＮｎ（ｎは２以上の自然数）に対応付けて設けられる。バーチャルチャネル３０は入力バッファとして機能し、対応する入力ポートにフリットが入力された際に、これを一時的に保持する。バーチャルチャネル３０は、受信したフリットを一時的に保持するバッファとして機能し、例えばＦＩＦＯメモリである。なお、入力ポートＩＮは、配線１３によって接続されるルータ毎に設けられ、更に対応するプロセッサコア１０のコア部２０、Ｌ２キャッシュ２１、及びメモリコントローラ２２毎に設けられる。従って、図１のルータ１１−６の例では７個の入力ポートＩＮ１〜ＩＮ７が設けられることになる。後述する出力ポートＯＵＴ１〜ＯＵＴｎも同様である。
【００１９】
複数の選択回路３１はそれぞれ、複数のバーチャルチャネル３０の各々に対応付けて設けられる。そして選択回路３１は、マルチキャストユニット３６の命令に従って、バーチャルチャネル３０から出力されるフリットと、入力ポートＩＮに入力されたフリットとのいずれかを選択する。つまり選択回路３１は、フリットに対してバーチャルチャネル３０をバイパスさせることが出来る。
【００２０】
スイッチ３３は、選択回路３１で選択されたフリットを、出力ポートＯＵＴ１〜ＯＵＴｎの少なくともいずれかを宛先として、マルチキャストまたはユニキャストで送信する。そしてフリットは、出力ポートＯＵＴから所望の宛先となるルータ１１へ送信される。スイッチ３３は、例えばクロスバースイッチである。
【００２１】
キャンセル部３４は、スイッチ３３から送信されたフリットを、正しい宛先に対応するパイプラインレジスタ３５に転送すると共に、誤った宛先への送信をキャンセルする。すなわちキャンセル部３４は、ＡＮＤゲート４０及び複数の選択回路４１を備える。
【００２２】
ＡＮＤゲート４０は、ＶＣアロケータ３８及びスイッチアロケータ３９からの制御信号の論理積演算を行う。この論理積演算結果は、複数の選択回路４１のうち、いずれが正しい宛先に対応するのかを示す情報である。
【００２３】
複数の選択回路４１はそれぞれ、出力ポートＯＵＴ１〜ＯＵＴｎに対応付けられて設けられる。そして選択回路４１は、ＡＮＤゲート４０の出力信号に基づいて、スイッチ３３からの信号（フリット）と、論理“Low”レベル（フリットと同一のビット幅を有し、且つ全ビットが“０”の信号）とのいずれかを選択する。すなわち、正しい宛先に対応する選択回路４１は、スイッチ３３から出力されるフリットを選択し、その他の選択回路４１は論理“Low”レベルを選択して出力する。
【００２４】
パイプラインレジスタ３５は例えばフリップフロップ等のバッファであり、出力ポートＯＵＴ１〜ＯＵＴｎに対応付けて設けられる。そしてパイプラインレジスタ３５はクロックＣＬＫに同期して、対応する選択回路４１の出力を内部に取り込む。そしてパイプラインレジスタ３５は、取り込んだフリットを、対応付けられた出力ポートＯＵＴを介して次のルータ１１へ転送する。
【００２５】
マルチキャストユニット３６、ルート計算部３７、ＶＣアロケータ３８、スイッチアロケータ３９、及び選択回路３２は、上記バーチャルチャネル３０、選択回路３１、スイッチ３３、キャンセル部３４、及びパイプラインレジスタ３５を制御する制御部として機能する。以下、それぞれについて説明する。
【００２６】
マルチキャストユニット３６は、受信したフリットをマルチキャストで送信するかユニキャストで送信するかを判断する。そしてマルチキャストユニット３６は、その判断結果に基づいて選択回路３１、３２を制御し、またスイッチ３３に対してマルチキャストで送信を実行させる命令を発行する。
【００２７】
ルート計算部３７は、入力ポートＩＮで受信したヘッダフリットを解析して、当該パケットの宛先を判断する。そして、いずれの選択回路４１に対してスイッチ３３の出力を選択させるべきかを示す信号をＡＮＤゲート４０へ出力する。またルート計算部３７は、フリットがマルチキャストされない場合において、宛先に対応するバーチャルチャネルを獲得するようＶＣアロケータ３８を制御する。
【００２８】
スイッチアロケータ３９は、フリットをマルチキャストで送信しない場合において、スイッチ３３の制御信号を生成する。また、ヘッダフリット送信時におけるスイッチ３３の制御状態を記憶する。
【００２９】
選択回路３２は、マルチキャストユニット３６の命令に応答して、スイッチアロケータからの制御信号と、マルチキャストユニット３６からのマルチキャスト信号とのいずれかを選択し、スイッチ３３に出力する。スイッチ３３は、選択回路３２からの信号に基づいてフリットの送信を実行する。
【００３０】
ＶＣアロケータ（Virtual channel allocator）３８は、隣接するルータ１１から情報を受信し、隣接するルータ１１におけるバーチャルチャネル３０の空き状況を常に監視する（図４では、“Credits in”及び“Credits out”で示す）。そして入力ポートＩＮでフリットを受信した際に、マルチキャストユニット３６の命令に応答して、隣接するルータ１１のバーチャルチャネル３０を獲得する。
【００３１】
１．３  ルータの動作について  
次に、上記構成のルータ１１の動作につき、図５を用いて説明する。図５は、本実施形態に係るルータ１１の動作を示すフローチャートである。
【００３２】
まず、いずれかの入力ポートＩＮで受信されたフリットは、対応するバーチャルチャネル３０に保持されると共に、その受信情報がマルチキャストユニット３６に送信される。マルチキャストユニット３６に送信される受信情報は、フリット内の必要ないずれかのビットのみであっても良いし、あるいはフリット全体であっても良い。
【００３３】
次にマルチキャストユニット３６は、上記受信情報に基づいて、受信したフリットがヘッダフリットであるか否かを判断する（ステップＳ１０）。この判断は、フリットのタイプフィールドを参照することで判断出来る。そしてヘッダフリットであった場合（ステップＳ１０、ＹＥＳ）、マルチキャストユニット３６は、マルチキャストによる送信が可能であるか否かを判断する（ステップＳ１１）。
【００３４】
マルチキャストによる送信が可能な場合の一例は、下記の全てが満たされた場合である。すなわち、
(1) 当該フリットの宛先となり得る全てのルータにおいて、バーチャルチャネル３０が獲得可能なこと（バーチャルチャネル３０に空きがあること）、  
(2) 当該ルータに到着したフリットが１つだけであること、及び、  
(3) 当該ルータには、他のフリットが存在しないこと（直前のサイクルでフリットがスイッチ３３を使用していないこと）。
【００３５】
上記(1)の条件は、ＶＣアロケータ３８によって判断出来る。上記(2)の条件は、マルチキャストユニット３６が入力ポートＩＮ１〜ＩＮｎを監視することで判断出来る。そして上記(3)の条件は、スイッチアロケータ３９からの情報で判断出来る。すなわちスイッチアロケータ３９は、直前のサイクルでスイッチ３３がフリットを送信したか否かを認識している。従って、この情報をスイッチアロケータ３９から受信することで、マルチキャストユニット３６は(3)の条件を判断出来る。
【００３６】
マルチキャストユニット３６がマルチキャストでの送信が可能であると判断した場合（ステップＳ１１、ＹＥＳ）、ステップＳ１２において以下の処理が行われる。すなわち、マルチキャストユニット３６は、選択回路３１に対して、入力ポートＩＮからのフリットを選択するよう命令する。これにより、フリットはバーチャルチャネル３０をバイパスする。また、スイッチ３３に対してフリットをマルチキャストで送信させる命令（以下、マルチキャスト信号と呼ぶ）を出力し、選択回路３２を制御して当該マルチキャスト信号をスイッチ３３に供給させる。更にルート計算部３７は、バーチャルチャネル３０内のヘッダフリットを解析して、ルート計算を行う。すなわち、正しい宛先に対応する出力ポートＯＵＴがいずれであるかを判断し、その旨を示す制御信号をＡＮＤゲート４０へ出力する。更に、ＶＣアロケータ３８は、フリットの宛先となる可能性のあるルータ１１におけるバーチャルチャネル３０を獲得する。言い換えれば、出力ポートＯＵＴ１〜ＯＵＴｎの全てに対応するバーチャルチャネル３０を獲得する。更にスイッチアロケータ３９は、マルチキャストユニット３６の命令に応答して、ヘッダフリットの次に入力されるであろうボディフリットを送信する際のスイッチ３３の制御情報を保持する。
【００３７】
そしてスイッチ３３はマルチキャスト信号に応答して、入力ポートＩＮで受信されたフリットをマルチキャストする。これによりフリットは、選択回路４１の入力まで達する。そしてキャンセル部３４が、誤った宛先（出力ポートＯＵＴ）への送信を全てキャンセルする（ステップＳ１３）。すなわち、ルート計算部３７によるルート計算の結果に基づいてＡＮＤゲート４０は、正しい宛先に対応する選択回路４１に対してのみ論理“high”レベルを出力し、その他の選択回路４１には論理“low”を出力する。その結果、正しい宛先に対応する選択回路４１のみが、対応するパイプラインレジスタ３５にフリットを出力する。そして、このパイプラインレジスタ３５から、次のルータ１１へフリットが転送される（ステップＳ１４）。
【００３８】
なお、ステップＳ１０において受信したフリットがヘッダフリットでなかった場合（ステップＳ１０、ＮＯ）、フリットはユニキャストで送信される。すなわち、スイッチアロケータ３９は、ヘッダフリット送信時におけるステップＳ１２で保持したスイッチ３３の制御情報に基づいて、スイッチ３３を制御する。つまり、入力フリットがヘッダフリットでなかったということは、受信したフリットはボディフリットであり、このボディフリットの宛先はヘッダフリット受信時に既に判明しているはずである。従ってスイッチアロケータ３９は、ヘッダフリット送信時の状況に基づいて、ボディフリットをユニキャストで正しい宛先となる出力ポートＯＵＴへ送信する（ステップＳ１５）。
【００３９】
また、ステップＳ１１でマルチキャストが不可能であった場合には、マルチキャストユニット３６は、従来の方法を用いてフリットを送信する（ステップＳ１６）。
【００４０】
ルータ１１は、上記の処理をパイプライン処理する。図６は、あるルータ１１が１つのパケットを次のルータ１１に送信する際のパイプラインステージを示すタイミングチャートである。図６では、パケットに４個のボディフリットが含まれる場合を示している。
【００４１】
図中において、“ＲＣ（routing computing）”はフリットの宛先を求めるステージを示し、“ＶＡ（virtual-channel allocation）”は送信先のルータのバーチャルチャネル３０を割り当てるステージを示し、“ＳＡ（switch allocation）”はスイッチ３３の使用権を獲得するステージを示し、“ＭｃＳＴ（muticast switch traversal）”及び“ＳＴ（switch traversal）”はフリットが実際にスイッチ３３を通過するステージを示す。“ＭｃＳＴ”及び“ＳＴ”のうち、“ＭｃＳＴ”は、フリットがマルチキャストされるステージであり、“ＳＴ”はフリットが非マルチキャスト（例えばユニキャスト）されるステージである。
【００４２】
図示するように、ヘッダフリットを受信した場合には、図５でも説明したように、“ＲＣ”ステージ、“ＭｃＳＴ”ステージ、及び“ＶＡ”ステージが同時に実行される。すなわち、ヘッダフリットが入力ポートＩＮで受信されてからスイッチ３３を通過するのに要するクロックサイクル数は１サイクルである。
【００４３】
また、ヘッダフリットについての処理と同時に、ヘッダフリットに後続する先頭のボディフリットについての“ＳＡ”ステージが実行される（これは、図５で説明した「ボディフリットを送信する際のスイッチ３３の制御情報を保持する」ことに相当する）。そして、次のサイクルで“ＳＴ”ステージが実行され、また同時に次のボディフリットについての“ＳＡ”ステージが実行される。以下同様である。
【００４４】
従って、マルチキャスト可能な場合、例えば図６に示すようにフリット総数が５個のパケットを次のルータに送信するまでに必要なサイクル数は、５サイクルである。
【００４５】
図７は、一例としてフリット（ヘッダフリット）がルータ１１−１からルータ１１−２に転送され、引き続きルータ１１−２からルータ１１−３に転送される様子を示している。また図７では、ルータ１１−１はマルチキャスト出来ず、ルータ１１−２及び１１−３はマルチキャスト可能であった場合について示している。
【００４６】
図示するようにルータ１１−１は、通常の方法でフリットをルータ１１−２へ転送する。図７の例では、４サイクルかけて“ＲＣ”ステージ、“ＶＡ”ステージ、“ＳＡ”ステージ、及び“ＳＴ”ステージを順次実行する場合を示している。
【００４７】
ルータ１１−１からフリットを受信したルータ１１−２は、マルチキャストが可能であるので、１サイクルでフリットをルータ１１−２に転送出来る。ルータ１１−２からフリットを受信したルータ１１−３も同様である。
【００４８】
１．４  ルータの動作の具体例  
次に、上記ルータ１１の動作を、図８乃至図１０を用いてより具体的に説明する。図８乃至図１０はルータ１１のブロック図であり、一例として入力ポートＩＮ及び出力ポートＯＵＴがそれぞれ４つの場合について示している。入力ポートＩＮ１〜ＩＮ４には、バーチャルチャネル３０−１〜３０−４及び選択回路３１−１〜３１−４が対応付けられ、出力ポートＯＵＴ１〜ＯＵＴ４には選択回路４１−１〜４１−４及びパイプラインレジスタ３５−１〜３５−４が対応付けられている。図８乃至図１０において破線で示した矢印は、非活性の制御信号あるいは非選択の信号経路を表す。
【００４９】
まず図８に示すように、入力ポートＩＮ１に、あるルータ１１からヘッダフリットが入力されたと仮定する。このヘッダフリットは、入力ポートＩＮ１に対応付けられたバーチャルチャネル３０−１に保持される。マルチキャストユニット３６は、入力ポートＩＮ１にフリットが入力されたことを検知すると、出力ポートＯＵＴ１〜ＯＵＴ４に対応するルータ１１においてバーチャルチャネル３０に空きがあるか否か（すなわち、バーチャルチャネル３０を獲得可能か否か）を確認する。また、入力ポートＩＮ１以外の入力ポートＩＮ２〜ＩＮ４にフリットが入力されたか否かを確認する。更にマルチキャストユニット３６は、当該ルータ１１に他のフリットが存在するか否か（直前のサイクルでスイッチ３３が使用されたか否か）を確認する。
【００５０】
これらの条件が全て満たされていることを確認すると、マルチキャストユニット３６は、入力ポートＩＮ１で受信したヘッダフリットをマルチキャストすることを決定する。そしてマルチキャストユニット３６は、選択回路３１−１に対して、入力バッファ３０−１内のヘッダフリットではなく、入力ポートＩＮ１のヘッダフリットを選択させる。その他の選択回路３１−２〜３１−４は選択動作を行わない。
【００５１】
またマルチキャストユニット３６はマルチキャスト信号を発行して、これを選択回路３２へ出力する。選択回路３２は、マルチキャストユニット３６の命令に基づき、マルチキャスト信号をスイッチ３３へ出力する。するとスイッチ３３は、マルチキャスト信号に応答して、選択回路３１−１から出力されるヘッダフリットをマルチキャストで送信する。すなわちスイッチ３３は図８に示すように、ヘッダフリットを選択回路４１−１〜４１−４の全てへ送信する。
【００５２】
ヘッダフリットが入力ポートＩＮ１から選択回路４１−１〜４１−４へと転送されている間、ルート計算部３７は、バーチャルチャネル３０−１内のヘッダフリットを解析して、当該ヘッダフリットの宛先を検出する。
【００５３】
またＶＣアロケータ３８は、出力ポートＯＵＴ１〜ＯＵＴ４の全てに対応するバーチャルチャネル３０を獲得する。そしてＶＣアロケータ３８は、バーチャルチャネル３０の獲得が完了すると、その旨を示す信号（図８の例では論理“high”レベル）をＡＮＤゲート４０へ出力する。
【００５４】
そしてルート計算部３７は、ルート計算を完了すると、図９に示すように正しい宛先を示す信号をＡＮＤゲート４０へ出力する。図９の例では、正しい宛先は出力ポートＯＵＴ１である。するとＡＮＤゲート４０は、ルート計算部３７から受信した信号に応じた制御信号を発行して、これを選択回路１−１〜４１−４に出力する。すなわちＡＮＤゲート４０は、選択回路４１−１には論理“high”レベルを出力する。これにより、選択回路４１−１はスイッチ３３から送信されたヘッダフリットをパイプラインレジスタ３５−１に出力する。このヘッダフリットは、クロックに同期してパイプラインレジスタ３５−１に取り込まれ、更に出力ポートＯＵＴ１から次のルータへ転送される。
【００５５】
他方でＡＮＤゲート４０は、誤った宛先に対応する選択回路４１−２〜４１−４には論理“low”レベルを出力する。従って選択回路４１−２〜４１−４は、ヘッダフリットでは無く論理“low”レベルを選択する。よって、出力ポートＯＵＴ２〜ＯＵＴ４にはヘッダフリットは送信されない。
【００５６】
またスイッチアロケータ３９は、上記のように正しい宛先が出力ポートＯＵＴ１であったことを検出することにより、次のサイクルで受信するであろうボディフリットを選択回路３１−１から選択回路４１−１に送信すれば良い旨の情報を保持する。
【００５７】
以上の動作が１クロックサイクルの期間に行われる。
【００５８】
図１０は、引き続きボディフリットを受信した場合について示している。マルチキャストユニット３６は、ヘッダフリット受信時と同様に選択回路３１−１を制御して、バーチャルチャネル３０−１をバイパスさせる。またマルチキャストユニット３６は、入力ポートＩＮ１で受信されたフリットがボディフリットであることを検知すると、マルチキャスト信号を解除する。
【００５９】
またスイッチアロケータ３９は、図８及び図９で説明したヘッダフリット送信時の状況を記憶している。従ってスイッチアロケータ３９は、スイッチ３３に対して選択回路３１−１と選択回路４１−１とを接続させる命令を発行する。そして選択回路３１−１は、マルチキャストユニット３６の命令に応答して、スイッチアロケータ３９からの命令を選択する。
【００６０】
この結果、スイッチ３３は、選択回路３１−１から出力されるボディフリットを、選択回路４１−１へユニキャストで送信する。すなわち、ボディフリットは選択回路４１−２〜４１−４には送信されない。
【００６１】
またＡＮＤゲート４０は、ヘッダフリット送信時と同様の信号を出力する。その結果、選択回路４１−１はボディフリットを選択する。選択されたボディフリットは、クロックに応答してパイプラインレジスタ３５−１に格納され、出力ポートＯＵＴ１から次のルータへ出力される。
【００６２】
１．５  本実施形態に係る効果  
上記のように、本実施形態に係るルータであると、その動作速度を向上出来る。本効果につき、以下詳細に説明する。
【００６３】
１．５．１  一般的なルータについて  
マルチメディア機器の高性能化に伴い、一般的に使用されているマルチコアプロセッサよりもプロセッサコア数を増やしたメニーコアプロセッサの実用化が期待されている。このように多くのプロセッサコアを備えたプロセッサでは、プロセッサコア間での信号の送受信は、従来のオンチップバスでは無く、ＮｏＣを用いて行うことが望ましい。そしてＮｏＣでは、データはパケット化され、複数のルータを介して宛先ルータまで転送される。
【００６４】
従って、プロセッサの高速動作のためには、ルータのレイテンシを短くすることが重要となる。以下、本実施形態の比較例としての種々のルータのパイプライン動作の一例について説明する。
【００６５】
図１１は、最も単純なルータの動作を示している。図示するようにルータの動作は、“ＲＣ”ステージ、“ＶＡ”ステージ、“ＳＡ”ステージ、及び“ＳＴ”ステージの４サイクルによって行われる。これらのパイプラインステージは互いに依存関係を有するため、この順序で実行される必要がある。
【００６６】
図１２は、図１１における“ＶＡ”ステージと“ＳＡ”ステージとを並列して実行することで、サイクル数を４サイクルから３サイクルに低減させたルータである（ＶＳＡルータ）。本方式であると、“ＶＡ”処理及び“ＳＡ”処理の両方に成功すれば、ヘッダは“ＶＡ”及び“ＳＡ”ステージ（“ＶＳＡ”ステージ）を通過でき、サイクル数を削減出来る。しかし、どちらか一方の処理に失敗した場合、“ＶＳＡ”ステージをやり直す必要がある。従って、サイクル数の低減効果は十分とは言えない。
【００６７】
図１３は、予測ルータの例を示す。予測ルータでは、次のパケット転送で使用されるであろう出力チャネルを予測し、パケット到着前にアービトレショーンを完了させておくものである。本方法によれば、予測がヒットした場合には、処理を１サイクルに短縮出来る。しかし予測がミスした場合には、図１１の場合と同様に４サイクルの処理が必要となる。そして本方法では、予測のヒット率を極めて高く出来なければ、動作の高速化の効果は不十分である。
【００６８】
１．５．２  本実施形態に係るルータについて  
本実施形態に係る構成であると、図１３の予測ルータのような予測動作を必要とすることなく、マルチキャストが可能な状況であれば１サイクルで処理を完了させることが出来る。
【００６９】
すなわち本実施形態に係るルータであると、マルチキャスト可能な状況であった場合には、ルータに到着したフリットはバーチャルチャネル３０をバイパスする経路によってスイッチ３３へ転送される。そして、スイッチ３３によってマルチキャストで送信される。送信先は、本実施形態では全ての出力ポートＯＵＴである。更にルート計算部３７は、マルチキャストと並行してルート計算を行い、フリットの正しい宛先を求める（図８及び図９の例では出力ポートＯＵＴ１）。そして、フリットの誤った宛先（図８及び図９の例では出力ポートＯＵＴ２〜ＯＵＴ４）への送信は、キャンセル部３４によってキャンセルされる。
【００７０】
このように本実施形態であると、フリットの宛先に関わらず、盲目的に複数の出力ポートＯＵＴにフリットを送信する。但し、この場合では誤った宛先にもフリットが送信される。そこで、マルチキャストと並列にルート計算を行うことで、正しい宛先にのみフリットを送信出来る。つまり、図１１のルータにおいて“ＲＣ”ステージ→“ＳＴ”ステージと逐次的に行っていた処理を、本実施形態では“マルチキャスト＋ＲＣ”→“キャンセル”に置き換えることで、レイテンシを大幅に短縮出来る。
【００７１】
また本実施形態によれば、ＶＣアロケータ３８が、全出力ポートＯＵＴに対応するルータ１１に空きバーチャルチャネル３０が存在するか否かを常にチェックしている。そして空きがある場合にマルチキャストを行う。すなわち、マルチキャストする際には、当該フリットの宛先ルータのバーチャルチャネル３０が獲得出来ることが保証されている。従って、図１１の“ＶＡ”ステージが不要となる。
【００７２】
更に本実施形態によれば、マルチキャストは、到着フリット以外のフリットがルータ１１内に存在しない場合に行われる。従って、スイッチ３３を使用する他のフリットが存在しないため、スイッチ３３の使用権を調停する必要が無い。つまり図１１の“ＳＡ”ステージが不要となる。
【００７３】
以上のように本実施形態では、“ＶＡ”ステージ及び“ＳＡ”ステージを行う必要が無く、また“ＲＣ”ステージと“ＳＴ”ステージとを並列に実行出来る。そのため、フリットがルータ１１を１サイクルで通過することを可能とし、ルータ１１のレイテンシを大幅に短縮出来る。
【００７４】
１．５．３  性能向上に関するシミュレーションについて  
図１４及び図１５は、本実施形態に係るルータと、図１１に示すルータ（Conventional Router）、図１２に示すルータ（VSA Router）、及び図１３に示すルータ（Prediction Router(LPM), (FCM)）とを比較したシミュレーション結果である。図１４は、Conventional Routerを１とした時の各ルータのレイテンシを示し、図１５はConventional Routerを１とした時の各ルータの動作高速化の度合いを示すグラフである。なお、図１４及び図１５のシミュレーションは、図１６に示す条件で行った。
【００７５】
図１４に示すように、本実施形態に係るルータのレイテンシは、比較対象となる他のルータのいずれよりも短く、Conventional Routerに比べて約２２％の短縮化を図ることが出来た。また図１５に示すように、本実施形態に係るルータは、比較対象となる他のルータのいずれよりも高速動作が可能となり、Conventional Routerの約１．２８倍の速度向上を図ることが出来た。
【００７６】
また本実施形態は、マルチキャストが可能な状況が多い程、高い効果が得られる。この点につき、以下説明する。メニーコアプロセッサ内の各ルータが同じ構成を有し、また負荷が同一である場合に、ある条件下において各ルータに存在するフリット数の割合を計算したシミュレーション結果は以下の通りである。
【００７７】
・No flit:    81%  
・1 flit:     17%  
・2 flits:    2%  
・3 flits:    0%  
・4 flits:    0%  
・5 flits:    0%  
・6 flits:    0%  
・7 flits:    0%  
このように、８１％の確率でルータにはフリットが存在せず、１つのフリットが存在する確率は１７％である。つまり、少なくとも８割の確率で、本実施形態で説明したマルチキャストが可能であることが分かる。従って、本実施形態を適用することで、レイテンシの大幅な短縮が可能となる。
【００７８】
２．第２実施形態  
次に、第２実施形態に係るルータについて説明する。本実施形態は、上記第１実施形態において、一部の出力ポートに対してのみマルチキャストする方法に関する。以下では、第１実施形態と異なる点についてのみ説明する。
【００７９】
２．１  本実施形態の概念について  
図１において、例えばルータ１１−６は四方を別のルータ１１−２、１１−５、１１−７、及び１１−１０に取り囲まれている。しかしながら、この４つのルータ１１−２、１１−５、１１−７、及び１１−１０と必ずしも常に通信可能なわけではなく、限られたルータとしか通信しないことが一般的である。このようなルールは、デッドロックの発生を防止する目的で、例えばプロセッサ設計時に予め定められている。
【００８０】
図１７はそのようなルールの一例を示している。図中のNorth、South、West、及びEastは、あるルータに着目した際に四方で隣接するルータを示し、その関係は図１８に示す通りである。図１８では、一例としてルータ１１−６に着目した際のNorth、South、West、及びEastに対応するルータを示す。
【００８１】
図示するように、図１８においてルータ１１−６に上方で隣接するルータ１１−２がNorthルータであり、右側で隣接するルータ１１−７がEastルータであり、下方で隣接するルータ１１−１０がSouthルータであり、左側で隣接するルータ１１−５がWestルータである。
【００８２】
すると、図１７のルールによれば、Northルータ１１−２から送信されるフリットの宛先としては、Southルータ１１−１０しか許されていない。またSouthルータ１１−１０から送信されるフリットの宛先としては、Northルータ１１−２しか許されていない。Westルータ１１−５及びEastルータ１１−７から送信されるフリットの宛先としては、それぞれWestルータ１１−５及びEastルータ１１−７以外のルータであれば許容される。
【００８３】
図１９は、本実施形態に係るマルチキャストユニット３６がマルチキャスト信号を発行する際のフローチャートである。例えばマルチキャストユニット３６は、図１７に示す送受信ルール（これを転送ルールテーブルと呼ぶ）を内蔵メモリ等に保持している。マルチキャストユニット３６はまず、転送ルールテーブルを参照する（ステップＳ２０）。そして、宛先として可能性のある出力ポートに対してのみ、フリットをマルチキャストする（ステップＳ２１）。
【００８４】
２．２  本実施形態の具体例について（その１）  
図１９の具体例を、図２０を用いて説明する。図２０はルータ１１−６のブロック図であり、入力ポートＩＮ１〜ＩＮ４がそれぞれ、Northルータ１１−２、Southルータ１１−１０、Westルータ１１−５、及びEastルータ１１−７に接続されている。また、出力ポートＯＵＴ１〜ＯＵＴ４がそれぞれ、Northルータ１１−２、Southルータ１１−１０、Westルータ１１−５、及びEastルータ１１−７に接続されている。そして、Westルータ１１−５からフリットが入力ポートＩＮ３に入力されたと仮定する。なお図２０では、プロセッサコア１０−６のコア部２０、Ｌ２キャッシュ２１、及びメモリコントローラ２２に関する入出力ポートについては省略している。
【００８５】
するとマルチキャストユニット３６は、転送ルールテーブルを参照することにより、宛先として可能性のある出力ポートは、出力ポートＯＵＴ１、ＯＵＴ２、及びＯＵＴ４のみであり、出力ポートＯＵＴ３が宛先となる可能性が無いことを認識する。従ってマルチキャストユニット３６は、図２０に示すように、出力ポートＯＵＴ１、ＯＵＴ２、及びＯＵＴ４のみを宛先としてマルチキャストするよう、マルチキャスト信号を発行する。
【００８６】
その他の入力ポートにフリットが入力された場合も同様である。例えばNorthルータ１１−２からフリットが入力ポートＩＮ１に入力された場合には、マルチキャストユニット３６は、出力ポートＯＵＴ２（及びコア部、Ｌ２キャッシュ、及びメモリコントローラの少なくとも一部）に対してフリットを送信し、出力ポートＯＵＴ１、ＯＵＴ３、ＯＵＴ４に対しては送信しない。
【００８７】
２．３  本実施形態の具体例について（その２）  
本実施形態の別の具体例について説明する。図１７の例は、ルータ１１間におけるフリット送受信のルールに関するものであった。しかし、ルータ１１と、当該ルータ１１に対応するプロセッサコア１０のコア部２０、Ｌ２キャッシュ２１、及びメモリコントローラ２２との間の送受信に関しても、フリットの種類毎にルールが定められている場合がある。本例は、そのような場合に関するものである。
【００８８】
図２１は、一例としてＭＯＥＳＩキャッシュコヒーレンスプロトコルにおけるルールの一例を示している。図中の“Request”、“Forward”、及び“Response”はフリットの種類を示す。“Request”は、当該フリットが、宛先となるプロセッサコア１１のコア部２０またはＬ２キャッシュ２１に対してデータを要求することを意味する。“Forward”は、当該フリットが、宛先となるメモリコントローラ２２に対してデータの要求と特定のコア部２０に対するデータ転送指示を行うことを意味する。“Response”は、当該フリットが、宛先となるプロセッサコア１１のコア部２０、Ｌ２キャッシュ２１、またはメモリコントローラ２２への応答メッセージであることを意味する。フリットの種類及び宛先は、ヘッダフリットを解析することで判断出来る。
【００８９】
図２１の例では、“Request”フリットは、コア２１及びＬ２キャッシュ２２への送信は許可されるが、メモリコントローラ２３への送信は禁止される。また“Forward”フリットは、コア部２１及びＬ２キャッシュ２２への送信が禁止され、メモリコントローラ２３への送信のみが許可される。そして“Response”フリットは、コア部２１、Ｌ２キャッシュ２２、及びメモリコントローラ２３の全てへの送信が許可される。
【００９０】
図１７及び図２１に示すルールの下におけるルータ１１の動作について、図２２を用いて説明する。図２２は一例としてルータ１１−６のブロック図を示しており、Westルータ１１−５から“Request”フリットが送信された場合について示している。また図２２では、入力ポートＩＮ５〜ＩＮ７及び出力ポートＯＵＴ５〜ＯＵＴ７がそれぞれ、プロセッサコア１０−６のコア２１、Ｌ２キャッシュ２２、及びメモリコントローラ２３に対応付けられている。
【００９１】
前述のように、マルチキャストユニット３６は転送ルールテーブルを参照する。すると、まずマルチキャストユニット３６は、Westルータ１１−５が宛先となる可能性が無いことを図１７のテーブルから認識する。更にマルチキャストユニット３６は、プロセッサコア１１−６のメモリコントローラ２３が宛先となる可能性が無いことを、図２１のテーブルから認識する。
【００９２】
従って図２２に示すように、マルチキャストユニット３６は、出力ポートＯＵＴ３及びＯＵＴ７を宛先から除外して、フリットをマルチキャストする。
【００９３】
２．４  本実施形態に係る効果  
本実施形態によれば、フリットの宛先が送信元ルータに依存して限定されることに着目して、スイッチ３３によるフリットの送信先を制限している。送信先が限定されることで、バーチャルチャネル３０を予め確保しておくべきルータの数も限定される。従って、マルチキャスト可能な機会を、第１実施形態よりも増大出来る。よって、ルータの動作をより高速化出来る。また、第１実施形態に比べて無駄な送信を削減し、消費電力を低減出来る。
【００９４】
３．第３実施形態  
次に、第３実施形態に係るルータについて説明する。本実施形態は、上記第１、第２実施形態におけるマルチキャストの条件を緩和したものである。以下では、第１、第２実施形態と異なる点についてのみ説明する。
【００９５】
３．１  本実施形態の概念について  
上記第１、第２実施形態では、ルータに到着したフリットは１つだけであること、がマルチキャスト可能な条件の１つであった。本実施形態は、この条件を緩和する。図２３は、本実施形態に係るマルチキャストユニット３６によるマルチキャスト可能か否かの判断処理を示すフローチャートであり、あるルータ１１に複数のフリットが同時に到着した際の処理を示す。
【００９６】
図示するように、マルチキャストユニット３６はまず転送ルールテーブルを参照する（ステップＳ２０）。この転送ルールテーブルは、第２実施形態で説明した図１７及び図２１のような情報である。
【００９７】
そしてマルチキャストユニット３６は転送ルールテーブルに基づき、複数の入力フリットの宛先が重複する可能性があるか否かを判断する（ステップＳ３０）。そして重複する可能性が無ければ（ステップＳ３２、ＮＯ）、マルチキャストユニット３６は、その他の条件に応じて、複数の入力フリットをマルチキャストする（ステップＳ３２）。他方、宛先が重複する可能性がある場合には（ステップＳ３２、ＹＥＳ）、マルチキャストしない（ステップＳ３３）。
【００９８】
３．２  本実施形態の具体例について  
本実施形態の具体例について、図１７、図２１、及び図２４を用いて説明する。図２４は、一例としてルータ１１−６のブロック図である。
【００９９】
プロセッサ１において、図１７及び図２１のようなルールがあったと仮定する。そして、ルータ１１−６に対して、“Request”フリットがNorthルータ１１−２から入力ポートＩＮ１に入力され、同時に“Forward”フリットがSouthルータ１１−１０から入力ポートＩＮ２に入力されたと仮定する。
【０１００】
すると、図１７及び図２１に示すように、“Request”フリットにつき可能性のある宛先は、Southルータ１１−１０、ルータ１１−６のコア２１、及びＬ２キャッシュ２２だけである。また“Forward”フリットにつき可能性のある宛先は、Northルータ１１−１２及びルータ１１−６のメモリコントローラ２３だけである。
【０１０１】
つまり、“Request”フリットにつき可能性のある宛先と、“Forward”フリットにつき可能性のある宛先とは重複しない。従ってこの場合、図２４に示すようにマルチキャストユニット３６は、２つのフリットを同時にマルチキャストする。
【０１０２】
この場合、選択回路３１−１及び３１−２は、それぞれバーチャルチャネル３０−１及び３０−２をバイパスして入力ポートＩＮ１及びＩＮ２のフリットを選択する。またルート計算部３７は、２つのフリットを解析して、２つのフリットの正しい宛先を検出する。そしてＡＮＤゲート４０の制御に基づき、選択回路４１が２つのフリットを正しい宛先にのみ送信する。
【０１０３】
３．３  本実施形態に係る効果について  
上記のように本実施形態によれば、複数のフリットが同時にルータに到着した場合であってもマルチキャストが可能となる。従って、第１、第２実施形態よりも更にマルチキャスト出来る機会を増大させ、プロセッサの動作をより高速化出来る。
【０１０４】
なお、図２４の例では２つのフリットがルータに同時に到着した場合について示しているが、３つ以上のフリットが同時に到着した場合でも適用可能なことは言うまでもない。
【０１０５】
４．  変形例等  
以上のように、上記実施形態に係るルータは、複数の入力ポート(IN1-INn in FIG4)と、スイッチ(33 in FIG4)と、複数のレジスタ(35 in FIG4)と、制御部(32, 36-39 in FIG4)とを備える。入力ポート(IN1-INn in FIG4)は、入力信号を受信する。スイッチ(33 in FIG4)は、入力ポートINで受信された入力信号をマルチキャスト可能である。レジスタ(35 in FIG4)は、スイッチ33で送信された入力信号を一時的に保持し、外部へ出力する。制御部(32, 36-39 in FIG4)は、スイッチ33に対して入力信号をマルチキャストで送信させると共に、マルチキャストによる送信のうち、正しい宛先への送信を有効とし、誤った宛先への送信を無効とする(S12-S14 in FIG5)。  
本構成により、ルータのレイテンシを短縮し、ルータの動作速度を向上出来る。
【０１０６】
しかしながら、上記実施形態は種々の変形が可能である。例えば、図１の例ではルータ１１はプロセッサコア１０と１対１で対応付けられている。しかしこのような例に限らず、例えば１つのルータ１１に複数のプロセッサコア１０が接続されている場合であっても良い。このような一例を図２５に示す。図２５はメニーコアプロセッサ１のブロック図である。図示するように本例では、プロセッサコア１０が１６個であるのに対して、ルータ１１の数は４個である。そして、ルータ１１−１はプロセッサコア１０−１、１０−２、１０−５、及び１０−６に接続される。ルータ１１−２はプロセッサコア１０−３、１０−４、１０−７、及び１０−８に接続される。ルータ１１−３はプロセッサコア１０−９、１０−１０、１０−１３、及び１０−１４に接続される。ルータ１１−４はプロセッサコア１０−１１、１０−１２、１０−１５、及び１０−１６に接続される。
【０１０７】
またルータのブロック構成は図４に限定されず、図５の処理を実行可能な構成であれば限定されない。例えばマルチキャストユニット３６は独立した１つのブロックとして存在するのでは無く、その機能がＶＣアロケータ３８やスイッチアロケータ３９に割り当てられても良い。またスイッチ３３はクロスバースイッチに限らず、マルチキャスト可能な構成であれば限定されない。
【０１０８】
また転送ルールとして図１７及び図２１を例示したが、これはあくまで一例に過ぎず、メニーコアプロセッサ１の仕様に応じて適宜選択出来る。
【０１０９】
更に、図５のステップＳ１６における「通常の方法」としては、図１１乃至図１３で説明した方法を用いることが出来る。この方法では、フリットはマルチキャストではなくユニキャストで送信される。
【０１１０】
また、複数のフリットが同時に入力された際について第３実施形態を用いて説明した。しかし、複数のフリット同時入力の際の処理としては、種々のその他の方法を適用しても良い。例えば、予め定められた優先順位に基づいて、優先順位の高いフリットをマルチキャストする場合であっても良い。このような例を、図２６乃至図２８を用いて説明する。
【０１１１】
図２６及び図２７は、例えばルータ１１の各々が保持する優先度テーブルである。優先度テーブルは、図２６の例では、ポートＩＮ毎に優先度が定められており、入力ポートＩＮ１に入力されたフリットの優先順位が最も高く設定されている。図２７の例では、フリットの種類毎に優先度が定められており、“Request”フリットの優先順位が最も高く設定されている。もちろん、図２６及び図２７が組み合わされる場合であっても良いし、別の基準に従って優先順位が設定されていても良い。
【０１１２】
図２８は、複数のフリットが同時に入力された際のルータ１１の動作を示すフローチャートである。図示するように、ルータ１１はまず優先度テーブルを参照する（ステップＳ４０）。そしてルータ１１は、優先度の高いフリットをマルチキャストし（ステップＳ４１）、その後、優先度の低いフリットを通常の方法により送信（ユニキャスト）する（ステップＳ４２）。この場合、ステップＳ４１の期間、マルチキャストユニット３６は例えば、優先度の低いフリットを入力バッファ３０で待たせておく。また図２８において、ステップＳ４０の前に、第３実施形態の図２３で説明したステップＳ２０及びＳ３０の処理を行っても良い。そして、宛先が重複する場合にのみ、ステップ４０以降の処理を行っても良い。
【０１１３】
図２８の例では、優先度の低いフリットは通常の方法で送信される場合を示したが、マルチキャストで送信されても良い。また、３つ以上のフリットが同時に入力された場合には、優先度に従って順次マルチキャストされる場合であっても良い。
【０１１４】
もちろん、優先順位等に関わらず、例えばランダムに選択された一方のフリットを入力バッファ３０で待たせておき、その間に他方のフリットをマルチキャストする方法であっても良い。つまり上記実施形態は、複数のフリットが同時に到着した場合、いずれか１つをマルチキャスト出来る方法であれば、特に限定されるものでは無い。
【０１１５】
更に、メニーコアプロセッサ１のプロセッサコアの数は２個以上であれば限定されない。また上記実施形態で説明したルータは、メニーコアプロセッサに適用される場合に限らず、インターネットを通じて通信端末間を接続するものであっても良い。この場合でも、同様の効果が得られる。但し、ルータのレイテンシが動作速度に与える影響は、メニーコアプロセッサにおいて顕著であり、従って上記実施形態はメニーコアプロセッサに適用した場合に特に有利な効果が得られる。
【０１１６】
また、上記説明したフローチャートは、可能な限り順序を入れ替えることができ、また複数の処理を同時に実行出来る。また、信号の論理“high”及び“low”は適宜入れ替えることが出来る。
【０１１７】
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１８】
１…メニーコアプロセッサ、１０…プロセッサコア、１１…ルータ、２０…コア、２１…Ｌ２キャッシュ、２２…メモリコントローラ、３０…入力バッファ、３１、３２、４１…選択回路、３３…スイッチ、３４…キャンセル部、３５…パイプラインレジスタ、３６…マルチキャストユニット、３７…ルート計算部、３８…ＶＣアロケータ、３９…スイッチアロケータ、４０…ＡＮＤゲート
【図１】
2014230261.tif 000003
【図２】
2014230261.tif 000004
【図３】
2014230261.tif 000005
【図４】
2014230261.tif 000006
【図５】
2014230261.tif 000007
【図６】
2014230261.tif 000008
【図７】
2014230261.tif 000009
【図８】
2014230261.tif 000010
【図９】
2014230261.tif 000011
【図１０】
2014230261.tif 000012
【図１１】
2014230261.tif 000013
【図１２】
2014230261.tif 000014
【図１３】
2014230261.tif 000015
【図１４】
2014230261.tif 000016
【図１５】
2014230261.tif 000017
【図１６】
2014230261.tif 000018
【図１７】
2014230261.tif 000019
【図１８】
2014230261.tif 000020
【図１９】
2014230261.tif 000021
【図２０】
2014230261.tif 000022
【図２１】
2014230261.tif 000023
【図２２】
2014230261.tif 000024
【図２３】
2014230261.tif 000025
【図２４】
2014230261.tif 000026
【図２５】
2014230261.tif 000027
【図２６】
2014230261.tif 000028
【図２７】
2014230261.tif 000029
【図２８】
2014230261.tif 000030