(57)【特許請求の範囲】
【請求項１】
パケットを受信する、入力ポート部と、
前記パケットを送信する、複数の出力ポートと、
前記パケットの出力ポートを示す出力ポート情報が格納されたホップフィールドを前記パケットのヘッダ情報から抽出する、ヘッダ解析部と、
前記抽出されたホップフィールドの出力ポート情報に基づき、前記複数の出力ポートのうちいずれかを選択して切り替える、スイッチ部と、
前記パケットの出力先のオンチップルータが前記パケットの転送に使用するホップフィールドの出力ポート情報をデコードし、該ホップフィールドの出力ポート情報を前記デコードした出力ポート情報に書き換えたパケットを前記選択された出力ポートに出力する、ヘッダ書換部と、
を備えることを特徴とするオンチップルータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、オンチップルータ及びそれを用いたマルチコアシステムに関する。
【背景技術】
【０００２】
マルチコアシステムでは、多数のプロセッサコア（以下、単に「コア」という。）間や、コアとメモリ間を接続するバス配線が長くなる傾向がある。このため、配線資源の確保、また、データを送受信するタイミング合わせが困難である。タイミングを合わせるために、マルチコアシステムの最大動作周波数が制限される。
【０００３】
上記のタイミング問題を解決する技術として、ネットワークオンチップ（ＮｏＣ）と呼ばれる技術がある。この技術では、イーサネット等のようにデータをパケット化し、パケットをオンチップルータ（以下、単に「ルータ」という。）を介して所望のターゲット（コア、メモリ）へ転送する。
【０００４】
パケットを転送する方式には、主に、適応型ルーティング方式とソースルーティング（固定型ルーティングとも呼ばれる。）方式がある。適応型ルーティング方式では、パケットを受信したルータが、パケットの宛先アドレスに基づいて経路計算を行い、次の転送先を決定する。この方式の長所は、パケットのヘッダ長が短いことであるが、短所は中継ルータによる経路計算の負荷が大きいことである。
【０００５】
一方のソースルーティング方式では、送信元のコア（もしくはルータ、イニシエータ、ネットワークインタフェース）が、パケットの転送経路を予め全て計算し、転送経路に関する情報をヘッダに格納する。転送経路は、最初に一意に決められ、経路の混雑情報等によって動的に変更されることはない。この方式の長所は、中継ルータによる経路計算の負荷が低減されることであり、短所は適応型ルーティング方式と比べてヘッダ長が長くなるということである。
【０００６】
上記のように、ソースルーティング方式においては、中継ルータの数が増えるほど、パケットのヘッダ長が長くなりバッファの使用量が増え、それによってレイテンシが増大するという問題があった。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００８−５１８５１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明が解決しようとする課題は、ソースルーティング方式を採用したマルチコアシステムにおいて、パケットのヘッダ長を短くし、レイテンシを減少させることが可能なオンチップルータ及びそれを用いたマルチコアシステムを提供することである。
【課題を解決するための手段】
【０００９】
実施形態のオンチップルータは、パケットを受信する複数の入力ポートと、前記パケットを送信する複数の出力ポートと、前記各入力ポートに対応して設けられ、前記入力ポートを介して受信されたパケットの少なくとも一部を蓄積する複数のバッファと、前記パケットが前記複数の出力ポートのいずれかから送信されるように、前記パケットの出力先を切り替えるスイッチ部と、前記各バッファに対応して設けられた複数のホップフィールド抽出部を有するヘッダ解析部と、前記ホップフィールド抽出部により抽出されたホップフィールドの出力ポート情報が示す出力ポートから前記パケットが送信されるように、前記スイッチ部を制御するスイッチ制御部と、を備える。
【００１０】
前記各ホップフィールド抽出部は、対応する前記バッファに蓄積された前記パケットのヘッダ情報を入力し、出力ポート情報を格納した複数のホップフィールドから、前記入力ポートを介して受信したパケットが出力される出力ポートを示す出力ポート情報を格納したホップフィールドを抽出する。
【００１１】
実施形態のオンチップルータは、ヘッダ書換部をさらに備える。前記ヘッダ書換部は、前記スイッチ部から出力されたパケットを入力し、前記複数のホップフィールドのうち、前記パケットの出力先のオンチップルータが前記パケットの転送に使用するホップフィールドの出力ポート情報を、デコードされた出力ポート情報に書き換え、前記出力ポート情報を書き換えたパケットを前記出力ポートに出力する。
【図面の簡単な説明】
【００１２】
【図１】ツリー型のマルチコアシステムの一例を示す図である。
【図２】ネットワークオンチップのパケットの全体構造の概略を示す図である。
【図３】ソースルーティング方式のパケットのヘッダの一例を示す図である。
【図４】経路情報を圧縮したパケットのヘッダの一例を示す図である。
【図５】第１の実施形態に係るルータの概略的な構成を示す図である。
【図６】第１の実施形態に係るルータの一部の詳細な構成を示す図である。
【図７】ソースルーティング方式のパケットのヘッダの一例を示す図である。
【図８】経路情報を圧縮したパケットのヘッダの一例を示す図である。
【図９】第２の実施形態に係るルータの概略的な構成を示す図である。
【図１０】第２の実施形態に係るルータの一部の詳細な構成を示す図である。
【図１１】第２の実施形態に係る出力ポート選択部の詳細な構成を示す図である。
【図１２】ソースルーティング方式のパケットのヘッダの一例を示す図である。
【図１３】経路情報を圧縮したパケットのヘッダの一例を示す図である。
【図１４】第３の実施形態に係る出力ポート選択部の詳細な構成を示す図である。
【図１５】メッシュ型のマルチコアシステムの構成例を示す図である。
【発明を実施するための形態】
【００１３】
本発明に係る実施形態について説明する前に、従来のソースルーティング方式によるパケットの転送について説明する。
【００１４】
図１は、ソースルーティング方式のネットワークオンチップを適用した、ツリー型のマルチコアシステムの一例を示している。このマルチコアシステムは、１６個のコア１０１〜１１６と、６個のルータ２０１〜２０６と、４個のメモリ３０１〜３０４と、１個のＩ／Ｏポート４０１とを備える。なお、図１においてルータを示す円内の数字は、ルータの識別子（ＩＤ）を示している。即ち、ルータ２０１〜２０６の識別子はそれぞれ、０〜５である。
【００１５】
コア１０１〜１１６は、ルータ２０１〜２０６を介して、メモリ３０１〜３０４およびＩ／Ｏポート４０１と接続されている。例えば、コア１０１〜１０４は、ルータ２０１およびルータ２０５を介してメモリ３０１〜３０４と接続されている。
【００１６】
コア１０１〜１１６は、メモリ３０１〜３０４に対して、読み出しおよび書き込み等を要求するためのリクエストパケットを送信する。パケットを受信したメモリは、読み出しデータ等を格納したパケットを、リクエストパケットを発信した発信元コアに返す。
【００１７】
図２は、マルチコアシステムの通信で用いられるパケットの全体構造を示している。パケットは、宛先や転送経路などに関する情報が格納されるヘッダと、書き込みデータ又は読み出しデータ等が格納されるボディとから構成される。ヘッダおよびボディはフリット（Ｆｌｉｔ）と呼ばれるデータ単位から構成されている。なお、１フリットあたりのビット数は、例えばコアのビット数（３２ｂｉｔ）に等しいがこれに限らない。図２の例では、ヘッダは２つのヘッダフリット０、１からなり、ボディは５つのボディフリット０〜４からなる。発信元コア、または、コアやメモリからリクエストパケットを受信した最初のルータが、図２に示すようなパケットを生成する。
【００１８】
図３は、パケットのヘッダの一例を示している。ヘッダフリット０は、コマンドフィールド（Cmd）と、宛先アドレスフィールド（Dest Address）と、ソースコアフィールド（Src Core）と、ホップフィールド（Hop1 OutPort）とを有する。ヘッダフリット１は、４個のホップフィールド（Hop2〜5 OutPort）を有する。
【００１９】
Cmdは、パケットの種類（読み出しリクエスト、書き込みリクエスト、読み出しレスポンス、書き込みレスポンスなど）を示すコマンドフィールドである。Dest Addressは、メモリの宛先アドレスを格納する宛先アドレスフィールドである。Src Coreは、リクエストパケットを発信した発信元コアの識別子を格納するソースコアフィールドである。
【００２０】
Hop OutPortは、出力ポート情報を格納するホップフィールドである。出力ポート情報は、受信パケットを出力する出力ポートを示し、例えば、出力ポート番号である。図３の例では、ワンホットビット形式の出力ポート情報が格納されている。この場合、ホップフィールドのビット数と出力ポート数が等しい。本実施形態では、ビットが“１”である出力ポートからパケットを出力する。例えば、出力ポート情報“０００１”は、ポート番号０の出力ポートからパケットを出力することを示し、“０１００”は、ポート番号２の出力ポートからパケットを出力することを示す。図１に示す“０”、“１”、・・・は、出力ポート番号である。例えば、ルータ２０１は出力ポート“０”を介してルータ２０５と接続されており、ルータ２０５は出力ポート“２”を介してメモリ３０３と接続されている。
【００２１】
ソースルーティング方式においては、中継ルータの数が増えるほど、ホップフィールドの数が増える。このため、ヘッダ長は、中継ルータの数が増えるにつれて長くなる傾向にある。
【００２２】
発信元コアから最初にパケットを受信したルータは、Hop1 OutPortに格納された出力ポート情報を参照してパケットの出力先を決める。図３の例では、最初のルータはポート番号“０”の出力ポートからパケットを送信する。２番目のルータはHop2 OutPortを参照し、出力ポート番号“１”の出力ポートからパケットを送信する。以下同様に、３番目、４番目、５番目のルータは、それぞれ出力ポート番号“２”、“３”、“０”の出力ポートからパケットを送信する。
【００２３】
以下、本発明に係る実施形態について図面を参照しながら説明する。なお、各図において同等の機能を有する構成要素には同一の符号を付し、同一符号の構成要素の詳しい説明は繰り返さない。
【００２４】
（第１の実施形態）
第１の実施形態では、ホップフィールドにエンコードされた出力ポート情報を格納したパケットを用いる。パケットを受信したルータは、次段のルータで使用される出力ポート情報をデコードしてワンホットビット形式に書き換えた後、次段のルータに送信する。これにより、パケットのヘッダ長を可及的に短くしつつ、出力ポートを迅速に決めてパケットの転送処理時間を短縮することができる。
【００２５】
図４は、第１の実施形態で用いられる、経路情報を圧縮したパケットのヘッダの一例を示している。最初のルータが使用するHop1 OutPortについてはワンホットビット形式で出力ポート情報を格納し、２番目以降のルータが使用するHop2〜9 OutPortについては、出力ポートの番号を例えば１６進数で格納する。即ち、最初の転送で使用されるホップフィールド以外のホップフィールドに格納された出力ポート情報は、エンコードされている。このため、中継ルータの数が同じであれば、図３で説明したパケットよりもヘッダ長を短くすることができる。
【００２６】
次に、図５を用いて、第１の実施形態に係るルータ１０の概略的な構成を説明する。図５は、ルータ１０の概略的な構成図である。ルータ１０は、５入力５出力のルータであり、入力ポート部と、スイッチ部２２と、ヘッダ解析部２３と、スイッチ制御部２４と、ヘッダ書換部２５ａ〜２５ｅと、パケットを送信する出力ポート２６ａ〜２６ｅとを有する。ここで、入力ポート部は、パケットを受信する入力ポート２０ａ〜２０ｅと、受信したパケットを一旦格納するバッファ２１ａ〜２１ｅとを有する。
【００２７】
バッファ２１ａ〜２１ｅはそれぞれ、入力ポート２０ａ〜２０ｅに対応して設けられ、入力ポートを介して受信したパケットの少なくとも一部を蓄積する。なお、バッファは、１フリット以上の容量を有する。
【００２８】
スイッチ部２２は、バッファ２１ａ〜２１ｅからパケットを入力し、パケットが出力ポート２６ａ〜２６ｅのうちのいずれかから送信されるように、パケットの出力先を切り替える。スイッチ部２２は、ヘッダ解析部２３により抽出されたホップフィールドの出力ポート情報に基づき、出力ポート２６ａ〜２６ｅのうちいずれかを選択して切り替える。
【００２９】
図６は、第１の実施形態に係るルータ１０の一部の詳細な構成図である。ヘッダ解析部２３は、自ルータで用いるホップフィールドをパケットのヘッダ情報から抽出する。また、ヘッダ解析部２３は、図６に示すように、バッファ２１ａ〜２１ｅに対応して設けられた複数のホップフィールド抽出部２３ａ〜２３ｅを有する。このように入力ポートの数だけホップフィールド抽出部を設けることで、複数の入力ポートが同時にパケットを受信した場合ついてもパケットの転送が可能となるとともに、複数の出力ポートから同時にパケットを送信することが可能となる。
【００３０】
ホップフィールド抽出部は、対応するバッファに蓄積されたパケットのヘッダ情報から、自ルータで使用する出力ポート情報を格納したホップフィールドを抽出する。図１において、例えばコア１０１がメモリ３０１にリクエストパケットを送信する場合、ルータ２０１のホップフィールド抽出部２３ａはHop1 OutPortを抽出し、ルータ２０５のホップフィールド抽出部２３ａはHop2 OutPortを抽出する。
【００３１】
スイッチ制御部２４は、ホップフィールド抽出部２３ａ〜２３ｅにより抽出されたホップフィールドの出力ポート情報が示す出力ポートからパケットが送信されるように、スイッチ部２２を制御する。スイッチ制御部２４は、抽出されたホップフィールドの出力ポート情報を用いて、選択信号を生成する。
【００３２】
ヘッダ書換部２５ａ〜２５ｅは、入力されたパケットの複数のホップフィールドのうち、パケットの出力先のオンチップルータ（即ち、次段のルータ）がパケットの転送に使用するホップフィールドの出力ポート情報をデコードする。そして、ヘッダ書換部は、次段のルータが使用するホップフィールドの出力ポート情報をデコードした出力ポート情報に書き換えたパケットを選択された出力ポートに出力する。なお、出力ポート情報のデコード処理は、パケットのボディフリットに格納されたデータに対する処理と並行して行うことができる。そのため、レイテンシの増大に繋がらない。
【００３３】
なお、ヘッダ書換部は、ヘッダ長が長くなることを防止するため、パケットの転送に使用したホップフィールドを削除する。先の例の場合、ルータ２０１のヘッダ書換部２５ａは、Hop1 OutPortを削除し、Hop2 OutPort以降のホップフィールドをヘッダの前に詰める。
【００３４】
次に、図６を用いて、スイッチ部２２、ヘッダ解析部２３（ホップフィールド抽出部２３ａ〜２３ｅ）およびスイッチ制御部２４の詳細な構成について説明する。
【００３５】
スイッチ部２２は、出力ポート２６ａ〜２６ｅに対応して設けられたマルチプレクサ２２ａ〜２２ｅを有する。マルチプレクサ２２ａ〜２２ｅの各々は、全てのバッファ２１ａ〜２１ｅと接続されている。
【００３６】
ホップフィールド抽出部２３ａ〜２３ｅはそれぞれ、対応するバッファ２１ａ〜２１ｅに蓄積されたパケットのヘッダ情報を解析し、抽出したホップフィールドに格納された出力ポート情報（ワンホットビット形式）をスイッチ制御部２４に送信する。
【００３７】
スイッチ制御部２４は、ワンホットビット形式の出力ポート情報を用いて、選択信号を生成し、マルチプレクサに送信する。マルチプレクサは、スイッチ制御部２４が生成した選択信号に基づいて、バッファ２１ａ〜２１ｅのうちのいずれかに蓄積されたパケットを、対応する出力ポートに接続されたヘッダ書換部に出力する。
【００３８】
なお、スイッチ制御部２４は、好ましくは、出力ポートの使用を調停する機能を有する。即ち、異なる入力ポート経由で複数のパケットを受信し、かつ、それらのパケットの出力先が同じである場合に、スイッチ制御部２４は、それらのパケットが所定のルールに基づいて送信されるようにスイッチ部２２を制御する。例えば、受信した複数のパケットを、バッファ２１ａ，２１ｂ，２１ｃ，２１ｄ，２１ｅ，２１ａ・・・に蓄積されたパケットの順で出力するようにスイッチ部２２を制御する。その他、入力ポートに優先度を設定しておき、優先度の高い入力ポート経由で受信したパケットを優先的に送信するようにスイッチ部２２を制御してもよい。また、パケットに優先度を設定しておき、優先度の高いパケットを優先的に送信するようにスイッチ部２２を制御してもよい。  第１の実施形態では、ホップフィールドにエンコードされた出力ポート情報を格納することで、ヘッダ長を短くしている。さらに、次段のルータが使用するホップフィールドの出力ポート情報をデコードした情報（即ち、ワンホットビット形式の情報）に書き換えて、次段のルータに転送する。言い換えると、自ルータで用いる出力ポート情報は、既に前段のルータにてデコードしたワンホットビット形式に変換されている。これにより、パケットを受信したルータは、ヘッダ解析部２３での出力ポート情報のデコードを行う必要が無くなり、出力ポートを迅速に決めることが可能になる。また、自ルータで用いたホップフィールドを削除するため、デコードによるヘッダの長さは長くならない。その結果、第１の実施形態によれば、ヘッダ長を可及的に短くしつつ、レイテンシを減少させることができる。さらに、ヘッダ解析部２３でのデコード処理が不要であるため、ヘッダ解析部２３およびスイッチ制御部２４を簡素で高速な回路で実現することができる。
【００３９】
以下に説明する第２および第３の実施形態では、ネットワーク内のトラフィックの偏りを利用して、パケット中の経路情報を圧縮する。
【００４０】
（第２の実施形態）
第２の実施形態では、ホップフィールドの有効／無効を示すバリッドフラグが設けられたパケットを用いる。パケットを受信したルータは、受信パケットのヘッダに有効なホップフィールドが存在しない場合、そのパケットをデフォルト設定の出力ポートから送信する。
【００４１】
図７は、各ホップフィールドに対応してバリッドフラグが設けられたパケットのヘッダの一例を示している。ホップフィールドのそれぞれの前に、バリッドフラグが設けられている。この例では、バリッドフラグが“１”である場合は、対応するホップフィールドが有効（Valid）であることを示し、バリッドフラグが“０”である場合は、対応するホップフィールドが無効（Invalid）であることを示している。
【００４２】
図７は、コア１０１がメモリ３０３に読み出し要求を行う際に用いられるパケットの例である。コマンドフィールドの“ＲＲＱ”はリードリクエスト（Read ReQuest）を示し、ソースコアフィールドの“ｃｏｒｅ０”はコア１０１の識別子を示している。また、Hop1 OutPortおよびHop2 OutPortは有効であり、Hop3〜5 OutPortは無効である。
【００４３】
パケットを受信したルータは、自ルータに対応するホップフィールドのバリッドフラグが有効を示す場合、ホップフィールドに格納された出力ポート情報に基づいて、対応する出力ポートからパケットを出力する。一方、バリッドフラグが無効を示す場合、デフォルト設定された出力ポートからパケットを出力する。
【００４４】
以下、図７のパケットを受信した場合の動作について説明する。コア１０１からパケットを受信したルータ２０１は、Hop1 Validを参照する。Hop1 Valid が“１”であるため、Hop1 OutPortは有効である。ルータ２０１は、Hop1 OutPortに格納された出力ポート情報が示す出力ポート“０”からパケットをルータ２０５に送信する。パケットを受信したルータ２０５は、Hop2 Validを参照する。Hop2 Valid が“１”であるため、Hop2 OutPortは有効である。ルータ２０５はHop2 OutPortに格納された出力ポート情報が示す出力ポート“２”からパケットをメモリ３０３に送信する。
【００４５】
ところで、所定のアプリケーションが動作した場合、コアが特定のメモリ等に頻繁にアクセスすることにより、パケットは高い頻度で特定の経路を経由する。このような場合、ルータは特定（デフォルト設定）の出力ポートからパケットを出力するようにスイッチ部を制御する。例えば、各ルータにおける特定の出力ポートを“０”とする。なお、特定の出力ポートは、ルータ毎に設定してもよい。
【００４６】
図８は、経路情報を圧縮したパケットのヘッダの一例を示している。Hop Validには、Hop OutPortが無効であることを示す“０”が格納されている。なお、Hop OutPortに格納される情報はdon’t careである。
【００４７】
図８のパケットを受信した場合の動作について説明する。まず、コア１０１からパケットを受信したルータ２０１は、有効なホップフィールドがあるか否かを判定する。判定の結果、ヘッダに有効なホップフィールドが存在しないため、ルータ２０１は、パケットをデフォルト設定の出力ポート“０”からルータ２０５に送信する。ルータ２０５は、ルータ２０１と同様の処理を行う。有効なホップフィールドが存在しないため、ルータ２０５は出力ポート“０”からパケットをメモリ３０１に送信する。
【００４８】
第２の実施形態では、ホップフィールドに対して有効／無効を示すバリッドフラグを設け、有効なホップフィールドが存在しない場合、デフォルト設定の出力ポートからパケットを送信する。これにより、デフォルト設定の出力ポートからパケットを送信する場合の経路情報を省略することができ、パケットのヘッダ長を短くすることができる。
【００４９】
次に、第２の実施形態に係るルータの構成例について、図９〜図１１を用いて説明する。図９は、第２の実施形態に係るルータ１０Ａの概略的な構成を示している。図１０は、スイッチ部２２、ヘッダ解析部（出力ポート選択部２７ａ〜２７ｅ）およびスイッチ制御部２４の構成を示している。図１１は、出力ポート選択部２７ａ〜２７ｅの詳細な構成を示している。
【００５０】
図９のルータ１０Ａは、５入力５出力のルータであり、入力ポート２０ａ〜２０ｅと、バッファ２１ａ〜２１ｅと、スイッチ部２２と、ヘッダ解析部２７と、スイッチ制御部２４と、出力ポート２６ａ〜２６ｅとを備える。以下、第１の実施形態と異なる構成についてのみ説明する。
【００５１】
図１０に示すスイッチ制御部２４は、出力ポート選択部２７ａ〜２７ｅにより選択された出力ポート情報を用いて、選択信号を生成する。
【００５２】
ヘッダ解析部２７は、バッファ２１ａ〜２１ｅに対応して設けられた出力ポート選択部２７ａ〜２７ｅを有する。このように入力ポートの数だけ出力ポート選択部を設けることで、複数の入力ポートが同時にパケットを受信した場合ついてもパケットの転送が可能となるとともに、複数の出力ポートから同時にパケットを送信することが可能となる。
【００５３】
出力ポート選択部は、対応するバッファに蓄積されたパケットのヘッダ情報から、自ルータに対応するホップフィールドのバリッドフラグが有効か無効か判定する。自ルータに対応するホップフィールドのバリッドフラグが有効を示す場合、そのホップフィールドに格納された出力ポート情報を選択する。一方、ヘッダに有効なホップフィールドが存在しない場合、デフォルト設定の出力ポート情報を選択する。
【００５４】
図１１に示すように、出力ポート選択部２７ａ〜２７ｅはそれぞれ、ホップフィールド抽出部３１と、バリッドフラグ抽出部３２と、設定レジスタ３３と、マルチプレクサ３４とを備えている。ホップフィールド抽出部３１は、パケットのヘッダから、自ルータに対応するホップフィールドHopX OutPortを抽出する。バリッドフラグ抽出部３２は、パケットのヘッダから、自ルータに対応するバリッドフラグHopX Validを抽出する。設定レジスタ３３は、デフォルト設定の出力ポート情報を記憶する。なお、デフォルト設定の出力ポート情報は、固定値でもよいし、コアから随時設定されてもよい。後者の場合は、例えば、マルチコアシステム上で動作するアプリケーションの種類に応じて、トラフィックの偏りが変化する場合に有効である。また、デフォルト設定の出力ポート情報は、無効な識別子であってもよい。
【００５５】
マルチプレクサ３４は、バリッドフラグ抽出部３２からの有効／無効を示す信号に応じて、ホップフィールド抽出部３１または設定レジスタ３３からの出力ポート情報をスイッチ制御部２４に出力する。より詳しくは、マルチプレクサ３４は、バリッドフラグ抽出部３２から“１”が入力された場合にはホップフィールド抽出部３１の信号を出力し、バリッドフラグ抽出部３２から“０”が入力された場合には設定レジスタ３３からの信号を出力する。
【００５６】
以上説明したように、第２の実施形態では、アクセス・トラフィックの偏りを利用して、ヘッダに格納する経路情報を圧縮する。その結果、パケットのヘッダ長を短くすることができ、メモリやＩ／Ｏポートにアクセスする際のレイテンシを減少させることができる。また、消費電力を削減することもできる。
【００５７】
なお、第２の実施形態によるルータは、スイッチ部においてパケットの転送に用いた出力ポート情報を格納するホップフィールドを削除するヘッダ書換部を備えてもよい。このヘッダ書換部は、当該ホップフィールドが削除されたパケットを出力ポートに送信する。これにより、パケットがルータを経由するたびに、ヘッダ長を短くすることができる。
【００５８】
（第３の実施形態）
第３の実施形態では、バリッドフラグに代えて、ルータ識別子フィールドを設ける。ルータにおいて出力ポートを指定する場合は、ルータ識別子フィールドにそのルータの識別子を格納し、対応するホップフィールドに出力ポート情報を格納する。一方、出力ポートを指定しない（デフォルト設定の）ルータの識別子は、ルータ識別子フィールドに無効なルータ識別子を格納するか、または、ルータ識別子フィールドを使用しない。
【００５９】
ルータはパケットを受信すると、自身の識別子を格納するルータ識別子フィールドを検索する。検索の結果、自身の識別子を格納するルータ識別子フィールドが存在した場合、ルータは対応するホップフィールドに格納された出力ポートからパケットを送信する。一方、自ルータの識別子を格納したフィールドが存在しない場合には、ルータはデフォルト設定の出力ポートからパケットを送信する。
【００６０】
以下、図１２のパケットを受信した場合の動作について説明する。図１２は、各ホップフィールドに対応してルータ識別子フィールド（HopX Router ID）が設けられたパケットのヘッダの一例を示している。ルータ識別子フィールドには、対応するホップフィールドを使用するルータの識別子が格納されている。なお、特定の出力ポートを指定しないHopX Router IDには無効なルータの識別子が格納されている。
【００６１】
図１２のパケットは、図１において、コア１０１がＩ／Ｏポート４０１に読み出し要求を行う際の例である。ルータ２０１は、ルータ識別子フィールドに自身の識別子“０”と同じ値が格納されているか検索する。そして、Hop1 Router IDの値が自身の識別子に一致するため、ルータ２０１は、Hop1 OutPortに格納された出力ポート“１”からパケットをルータ２０６に送信する。ルータ２０６は、ルータ識別子フィールドを検索する。そして、Hop2 Router IDの値が自身の識別子“５”に一致するため、ルータ２０６はHop2 OutPortに格納された出力ポート“０”からパケットをＩ／Ｏポート４０１に送信する。
【００６２】
以下、図１３のパケットを受信した場合の動作について説明する。図１３は、経路情報を圧縮したパケットのヘッダの一例を示している。Hop Router IDには“４”が格納され、Hop OutPortには“０”が格納されている。図１３のパケットは、コア１０１からルータ２０１に送信されたものとする。
【００６３】
まず、ルータ２０１は、ルータ識別子フィールドを検索する。検索の結果、自身の識別子と一致するルータ識別子フィールドが存在しないため、ルータ２０１は、パケットをデフォルト設定の出力ポート“０”からルータ２０５に送信する。ルータ２０５は、ルータ識別子フィールドを検索する。検索の結果、自身の識別子と一致するルータ識別子フィールドHop Router IDが存在するので、対応するHop OutPortに格納された出力ポート“０”からパケットをメモリ３０１に送信する。このようにして、コア１０１から送信されたパケットはメモリ３０１に転送される。
【００６４】
第３の実施形態では、経路上アクセス頻度の高い出力ポートをデフォルト設定しておき、パケットの経路情報を省略する。これにより、ヘッダ長の短いパケットを用いてパケットの転送を行うことができる。
【００６５】
次に、第３の実施形態に係るルータの構成について、第２の実施形態に係るルータとの相違点のみを説明する。第３の実施形態に係るルータは、ルータ１０Ａのヘッダ解析部２７に代えてヘッダ解析部２８を備える。このヘッダ解析部２８は、バッファ２１ａ〜２１ｅに対応して設けられた複数の出力ポート選択部２８ａ〜２８ｅを有する。
【００６６】
出力ポート選択部は、受信したパケットのヘッダに、自ルータの識別子と等しい識別子を格納したルータ識別子フィールドが存在する場合、ルータ識別子フィールドに対応付けられたホップフィールドに格納された出力ポート情報を選択し、そうでなければ、デフォルト設定の出力ポート情報を選択する。
【００６７】
図１４は、出力ポート選択部の構成図である。出力ポート選択部２８ａ〜２８ｅは、ホップフィールド抽出部３１と、設定レジスタ３３と、ルータ識別子フィールド抽出部３５と、比較器３６と、マルチプレクサ３７と、を備えている。ホップフィールド抽出部３１と設定レジスタ３３は第２の実施形態と同じなので説明を省略する。
【００６８】
ルータ識別子フィールド抽出部３５は、ヘッダからルータ識別子フィールドに格納された識別子の値を抽出する。ヘッダが複数のルータ識別子フィールドを含む場合、ルータ識別子フィールド抽出部３５は、各々のルータ識別子フィールドに格納された識別子の値を全て抽出する。
【００６９】
比較器３６は、抽出された値を自ルータの識別子と比較し、両者が一致する場合には“１”を出力し、不一致の場合には“０”を出力する。ルータ識別子フィールド抽出部３５が複数の値を抽出した場合、比較器３６は、自ルータの識別子と一致する値があるかどうか検索し、ある場合には“１”を出力し、ない場合には“０”を出力する。
【００７０】
ホップフィールド抽出部３１は、自ルータＩＤが格納されたルータ識別子フィールドに対応するホップフィールドを抽出する。
【００７１】
マルチプレクサ３７は、比較器３６からの信号に応じて、ホップフィールド抽出部３１または設定レジスタ３３の出力ポート情報をスイッチ制御部２４に出力する。より詳しくは、マルチプレクサ３７は、比較器３６から“１”を入力した場合にはホップフィールド抽出部３１から出力ポート情報を出力し、比較器３６から“０”を入力した場合には設定レジスタ３３から出力ポート情報を出力する。
【００７２】
第３の実施形態によれば、ヘッダに自身の識別子が存在するか否かにより、出力ポートが決定される。すなわち、デフォルト設定が可能な出力ポートへの出力に対しては、ルータ識別子フィールドの設定を省略することができる。例えば、図１において、コア１０１がメモリ３０１〜３０４のいずれかにアクセスする頻度が高い場合には、コア１０１はルータ２０５までの経路の設定を省略し、ルータ識別子フィールドにルータ２０５の識別子“４”を設定し、対応するホップフィールドに出力先となるポート番号情報を格納したパケットを生成すればよい。このように第３の実施形態では、パケット転送経路の任意の区間について個別に出力ポートを指定することができる。
【００７３】
なお、第３の実施形態によるルータは、スイッチ部においてパケットの転送に用いた出力ポート情報を格納するホップフィールドを削除するヘッダ書換部を備えてもよい。このヘッダ書換部は、当該ホップフィールドが削除されたパケットを出力ポートに送信する。これにより、パケットがルータを経由するたびに、ヘッダ長を短くすることができる。
【００７４】
以上説明したように、第３の実施形態では、パケットの転送経路の一部のみに、アクセス頻度の偏りがあるマルチコアシステムにおいても、アクセス・トラフィックの偏りを利用して、ヘッダに格納する経路情報を圧縮する。その結果、パケットのヘッダ長を短くすることができ、メモリやＩ／Ｏポートにアクセスする際のレイテンシを減少させることができる。また、消費電力を削減することもできる。
【００７５】
本発明に係る３つの実施形態について説明した。第２および第３の実施形態をより一般的に言えば、ホップフィールドと対応付けられた判定フィールド（バリッドフラグ、ルータ識別子フィールド）に基づいて、出力ポートを選択する。即ち、ヘッダ解析部（出力ポート選択部）は、受信したパケットのヘッダ情報を解析し、判定フィールドに基づいて、デフォルト設定の出力ポート情報、またはホップフィールドに格納された出力ポート情報を選択する。
【００７６】
なお、本発明のマルチコアシステムのネットワーク構成は、図１に示すようなツリー型のトポロジに限らず、図１５に示すようなメッシュ型のトポロジでもよい。図１５のマルチコアシステムは、コア１０１〜１１６と、ルータ２０１〜２２０と、メモリ３０１〜３０４とを含んでいる。ルータ２０１〜２２０は格子状に配置され、メッシュ型のネットワークを構成している。この場合、ルータがネットワークにおける自身の位置および転送先の位置を把握できるように、ルータ識別子をルータの水平・垂直位置（ｘ座標、ｙ座標）等で指定する。
【００７７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００７８】
１０，１０Ａ  ルータ
２０ａ，２０ｂ，２０ｃ，２０ｄ，２０ｅ  入力ポート
２１ａ，２１ｂ，２１ｃ，２１ｄ，２１ｅ  バッファ
２２  スイッチ部
２２ａ，２２ｂ，２２ｃ，２２ｄ，２２ｅ  マルチプレクサ
２３  ヘッダ解析部
２３ａ，２３ｂ，２３ｃ，２３ｄ，２３ｅ  ホップフィールド抽出部
２４  スイッチ制御部
２５ａ，２５ｂ，２５ｃ，２５ｄ，２５ｅ  ヘッダ書換部
２６ａ，２６ｂ，２６ｃ，２６ｄ，２６ｅ  出力ポート
２７  ヘッダ解析部
２７ａ，２７ｂ，２７ｃ，２７ｄ，２７ｅ  出力ポート選択部
２８ａ，２８ｂ，２８ｃ，２８ｄ，２８ｅ  出力ポート選択部
３１  ホップフィールド抽出部
３２  バリッドフラグ抽出部
３３  設定レジスタ
３４，３７  マルチプレクサ
３５  ルータ識別子フィールド抽出部
３６  比較器
１０１〜１１６  コア
２０１〜２０６  ルータ
３０１〜３０４  メモリ
４０１  Ｉ／Ｏポート
【図１】
0005624579.tif 000002
【図２】
0005624579.tif 000003
【図３】
0005624579.tif 000004
【図４】
0005624579.tif 000005
【図５】
0005624579.tif 000006
【図６】
0005624579.tif 000007
【図７】
0005624579.tif 000008
【図８】
0005624579.tif 000009
【図９】
0005624579.tif 000010
【図１０】
0005624579.tif 000011
【図１１】
0005624579.tif 000012
【図１２】
0005624579.tif 000013
【図１３】
0005624579.tif 000014
【図１４】
0005624579.tif 000015
【図１５】
0005624579.tif 000016