(57)【要約】【課題】パケット転送のレイテンシを改善する。【解決手段】ルータ１４は、複数の入力ポート１４０と、複数の出力ポート１４４と、を備える。各入力ポート１４０は、アクセスの種類を決める制御情報を含むパケットを入力し、パケットを格納可能な第１バッファ１４０１及び第２バッファ１４０２を有する。各出力ポート１４４は、パケットを出力する。各入力ポート１４０は、パケットの出力先となる出力ポート１４４の状態と、制御情報と、に基づいて、パケットを格納する第１バッファ１４０１及び第２バッファ１４０２の少なくとも１つを選択する。【選択図】図４
2013251715.tif 000002
【特許請求の範囲】
【請求項１】
アクセスの種類を決める制御情報を含むパケットを入力し、前記パケットを格納可能な第１バッファ及び第２バッファをそれぞれ有する複数の入力ポートと、
前記パケットを出力する複数の出力ポートと、を備え、
各入力ポートは、
前記パケットの出力先となる出力ポートの状態と、前記制御情報と、に基づいて、前記パケットを格納する第１バッファ及び第２バッファの少なくとも１つを選択することを特徴とするルータ。
【請求項２】
前記入力ポートは、
前記第２バッファを経由して前記第１バッファにパケットを格納し、出力する第１チャネルと、前記第２バッファにパケットを格納し、出力する第２チャネルと、前記第１バッファにパケットを格納し、出力する第３チャネルと、のいずれかの転送チャネルを選択することを特徴とする請求項１に記載のルータ。
【請求項３】
アクセスの種類を決める制御情報を含むパケットを発行する複数のコアと、前記複数のコアから出力されたパケットを転送する複数のルータと、を備えるメニーコアシステムであって、
各ルータは、
前記パケットを入力する複数の入力ポートと、
前記パケットを出力する複数の出力ポートと、を備え、
各入力ポートは、前記パケットの出力先となる出力ポートの状態と、前記制御情報と、に基づいて、前記パケットを格納する第１バッファ及び第２バッファの少なくとも１つを選択することを特徴とするメニーコアシステム。
【請求項４】
前記入力ポートは、
前記第２バッファを経由して前記第１バッファにパケットを格納し、出力する第１チャネルと、前記第２バッファにパケットを格納し、出力する第２チャネルと、前記第１バッファにパケットを格納し、出力する第３チャネルと、のいずれかの転送チャネルを選択することを特徴とする請求項３に記載のメニーコアシステム。
【請求項５】
前記ルータ間に設けられた任意の数のバッファをさらに備えることを特徴とする請求項３又は４に記載のメニーコアシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ルータ及びメニーコアシステムに関する。
【背景技術】
【０００２】
メニーコアシステムは、複数のコアと、少なくとも１つのルータと、を含むシステムである。従来のメニーコアシステムでは、コアは、ルータを介して、例えばメモリにデータパケットを転送する場合に、データパケットの転送に使用したパスをロックする。
【０００３】
この場合には、他のコアは、ロックされたパスを使用することはできない。従って、ロックされたパスを使用するためには、他のコアは、当該パスのロックが解除されるまで待機する必要があるデッドロック状態に陥る。
【０００４】
これに対して、他のコアが当該パスのロックを解除することができるように、ロック解除パケット専用のパスをルータに設ける方法が考えられる。しかし、この方法では、ルータのサイズ及び消費電力が増加してしまう。すなわち、従来のメニーコアシステムには、ルータのサイズ及び消費電力を増加させることなく、デッドロック状態を回避することはできない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−４３３５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、ルータのサイズ及び消費電力を増加させることなく、メニーコアシステムのデッドロック状態を回避することにより、パケット転送のレイテンシを改善することである。
【課題を解決するための手段】
【０００７】
本発明の実施形態のルータは、複数の入力ポートと、複数の出力ポートと、を備える。各入力ポートは、アクセスの種類を決める制御情報を含むパケットを入力し、パケットを格納可能な第１バッファ及び第２バッファを有する。各出力ポートは、パケットを出力する。各入力ポートは、パケットの出力先となる出力ポートの状態と、制御情報と、に基づいて、パケットを格納する第１バッファ及び第２バッファの少なくとも１つを選択する。
【図面の簡単な説明】
【０００８】
【図１】本実施形態のメニーコアシステム１０のネットワークトポロジの例を示すブロック図。
【図２】本実施形態のパケットの一例を示す概略図。
【図３】本実施形態のルータ１４の構成を示すブロック図。
【図４】第１実施形態の入力ポート１４０の構成を示すブロック図。
【図５】第１実施形態の出力ポート１４４の構成を示すブロック図。
【図６】第１実施形態の入力ポート１４０の動作パターンの説明図。
【図７】第１実施形態の入力ポート１４０の動作の一例を示す図。
【図８】第１実施形態の入力ポート１４０の動作の一例を示す図。
【図９】第１実施形態の入力ポート１４０の動作の一例を示す図。
【図１０】第１実施形態の入力ポート１４０の動作の一例を示す図。
【図１１】第１実施形態の入力ポート１４０の動作の一例を示す図。
【図１２】第２実施形態の出力ポート１４４の構成を示すブロック図。
【図１３】第２実施形態の入力ポート１４０の構成を示すブロック図。
【図１４】第２実施形態のルータ１４ａ及び１４ｂ間のパケットＰ（ｔ）の転送の説明図。
【発明を実施するための形態】
【０００９】
本実施形態のメニーコアシステムの構成について説明する。図１は、本実施形態のメニーコアシステム１０のネットワークトポロジの例を示すブロック図である。メニーコアシステム１０は、複数のコア１２ａ〜１２ｄと、複数のルータ１４ａ〜１４ｄと、複数のメモリ１６ａ〜１６ｄと、を備える。以下、コア１２ａ〜１２ｄを「コア１２」と表し、ルータ１４ａ〜１４ｄを「ルータ１４」と表し、メモリ１６ａ〜１６ｄを「メモリ１６」と表する場合がある。
【００１０】
コア１２は、メモリ１６に対するリードリクエストと、メモリ１６に対するライトリクエストと、を発行するとともに、リードリクエストに対するレスポンスに対してデータ処理を実行する。例えば、コア１２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。ルータ１４は、データの転送ルートを制御する。メモリ１６は、データを記憶する。例えば、メモリ１６は、２次キャッシュ又は外部メモリ（例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））である。
【００１１】
また、コア１２及びメモリ１６は、リードリクエスト、ライトリクエスト、及びレスポンスを、それぞれ、ルータ１４が転送可能なパケットに変換するとともに、パケット内に、ルータ１４内のポートのポート状態（ロック状態又はアンロック状態）を制御するロック制御情報を設定するインタフェースを備えている。
【００１２】
図２は、本実施形態のパケットの一例を示す概略図である。パケットは、ヘッダフリットと、少なくとも１つのボディフリットと、テイルフリットと、を含む（図２（Ａ））。なお、リードリクエストパケットの場合には、ボディフリット及びテイルフリットは、省略可能である。
【００１３】
ヘッダフリットは、タイプフィールドと、コマンドフィールドと、ソースフィールドと、宛先フィールドと、制御フィールドと、を含む（図２（Ｂ））。
【００１４】
タイプフィールドには、ヘッダフリットであることを示すタイプ情報「ＨＥＡＤＥＲ」が設定される。コマンドフィールドには、パケットに与えられるコマンド（例えば、ライトリクエストコマンド等）が設定される。ソースフィールドには、パケットの転送元モジュールを示すソースＩＤが設定される。例えば、ソースＩＤは、コア１２ａ〜１２ｄの何れかを示す。宛先フィールドには、ルータ１４ａ〜１４ｄ及びメモリ１６ａ〜１６ｄの少なくとも１つを示す宛先ＩＤが設定される。例えば、宛先ＩＤは、メモリ１６ａ〜１６ｄの何れかを示す。
【００１５】
制御フィールドには、制御情報ＣＢが設定される。制御情報ＣＢは、ロックビットＬＢ（例えば、１ビット信号）及びアンロックビットＵＬＢ（例えば、１ビット信号）の組み合わせである。ロックビットＬＢは、ルータの出力ポートをロックするか否かを示す。アンロックビットＬＢは、出力ポートをアンロックするか否かを示す。なお、制御情報ＣＢの構成は、これに限られるものではない。
【００１６】
ボディフリットは、タイプフィールドと、データフィールドと、を含む（図２（Ｃ））。タイプフィールドには、ボディフリットであることを示すタイプ情報「ＢＯＤＹ」が設定される。テイルフリットは、タイプフィールドと、データフィールドと、を含む（図２（Ｄ））。タイプフィールドには、テイルフリットであることを示すタイプ情報「ＴＡＩＬ」が設定される。データフィールドには、書き込むべきデータ（以下「ライトデータ」という）が分割されたもの（以下「分割データ」という）が含まれる。例えば、１ラインサイズが２５６バイトであって、分割データを６４バイトとした場合、３つのボディフリットと１つのテイルフリットとなる。
【００１７】
図３は、本実施形態のルータ１４の構成を示すブロック図である。ルータ１４は、複数の入力ポート１４０（ｎ）（ｎ：１〜Ｎ（Ｎは、２以上の整数））と、クロスバー１４２と、複数の出力ポート１４４（ｎ）と、を備える。入力ポート１４０（ｎ）は、パケットを入力する。クロスバー１４２は、時刻ｔにおいて入力されたパケットＰ（ｔ）のヘッダフリットを参照して、所定のアルゴリズム（例えば、Ｒｏｕｎｄ−Ｒｏｂｉｎアルゴリズム）に基づいて、宛先ＩＤに対応する出力ポート１４４（ｎ）に、パケットＰ（ｔ）を転送する。出力ポート１４４（ｎ）は、クロスバーから転送されたパケットＰ（ｔ）を転送先モジュールへ出力する。
【００１８】
ルータ１４に入力されるパケットの順番は、ヘッダフリット、ボディフリット、及びテイルフリットの順番である。例えば、時刻ｔにおいて、出力ポート１４４（ｎ）がパケットＰ（ｔ）のヘッダフリットを出力すると、パケットＰ（ｔ）のテイルフリットが出力されるまで、出力ポート１４４（ｎ）に対する他のパケット（例えば、時刻（ｔ＋１）のパケットＰ（ｔ＋１））の割り込みは発生しない。
【００１９】
（第１実施形態）
第１実施形態は、入力ポート１４０が、転送チャネルを動的に切り替えながら、上位モジュールから転送されたパケットを下位モジュールに転送する例である。
【００２０】
図４は、第１実施形態の入力ポート１４０の構成を示すブロック図である。入力ポート１４０は、入力制御部１４００と、第１及び第２バッファ（内部バッファ）１４０１及び１４０２と、ロック制御レジスタ１４０４と、セレクタ１４０６と、を備える。第１及び第２バッファ１４０１及び１４０２は、それぞれ単独で又は組合せで、ＦＩＦＯ（First-In-First-Out）メモリとして動作する。
【００２１】
入力制御部１４００は、出力ポート１４４から内部レディ信号ＲＤＹ＿ＩＮを受け付ける。内部レディ信号ＲＤＹ＿ＩＮは、出力ポート１４４が入力ポート１４０からパケットを受付可能であることを示す信号である。
【００２２】
また、入力制御部１４００は、上位モジュール（すなわち、入力ポート１４０に接続されたモジュール）に、外部レディ信号ＲＤＹ＿ＯＵＴを出力する。外部レディ信号ＲＤＹ＿ＯＵＴは、入力ポート１４０が上位モジュールからパケットを入力可能であることを示す信号である。
【００２３】
また、入力制御部１４００は、ロック制御レジスタ１４０４に、出力先となる出力ポート１４４の状態を示す出力ポート状態情報（例えば、１ビット信号）を設定する。セレクタ１４０６は、ヘッダフリットの制御情報ＣＢ（即ち、ロックビットＬＢ及びアンロックビットＵＬＢ）と、ロック制御レジスタ１４０４に設定された出力ポート状態情報と、に基づいて、パケットの転送に使用すべき転送チャネルを選択する。
【００２４】
図５は、第１実施形態の出力ポート１４４の構成を示すブロック図である。出力ポート１４４は、出力制御部１４４０と、ロック管理レジスタ１４４２と、を備える。
【００２５】
出力制御部１４４０は、下位モジュール（すなわち、出力ポート１４４に接続されたモジュール）に、パケットＰ（ｔ）を出力する。
【００２６】
また、出力制御部１４４０は、ロック管理レジスタ１４４２に、ロック管理情報を設定する。ロック管理情報は、出力ポート１４４と共にロックされた入力ポート１４０を示す情報（例えば、Ｎ個のロック管理ビット）を含んでいる。例えば、出力ポート１４４（Ｎ）のロック管理情報に関して、１番目のロック管理ビットが“１”であり、２〜Ｎ番目のロック管理ビットが“０”である場合には、このロック管理情報は、出力ポート１４４（Ｎ）が、入力ポート１４０（１）によってロックされていることを意味する。
【００２７】
第１実施形態のルータ１４の動作について説明する。図６は、第１実施形態の入力ポート１４０の動作パターンの説明図である。入力ポート１４０は、出力ポート１４４の状態（アンロック状態又はロック状態）と、制御情報ＣＢ（ｔ）によって決まるアクセスの種類（通常アクセス、ロックアクセス、又はオープンアクセス）と、の組み合わせに応じた転送チャネル（第１〜第３チャネルの何れか）を用いる。
【００２８】
通常アクセスは、出力ポート１４４のロック及びアンロックを伴わない。ロックアクアセスは、出力ポート１４４のロックを伴う。アンロックアクセスは、出力ポート１４４のアンロックを伴う。
【００２９】
第１チャネルは、第１バッファ１４０１及び第２バッファ１４０２の両方が使用される転送チャネルである。第２チャネルは、第２バッファは使用されるが、第１バッファが使用されない、転送チャネルである。第３チャネルは、第１バッファは使用されるが、第２バッファが使用されない、転送チャネルである。
【００３０】
出力ポート１４４がアンロック状態（Ｎｏ．（１）又は（２））の場合には、アクセスの種類に関わらず、全入力ポート１４０からのアクセスについて、第１チャネルが選択される。
【００３１】
出力ポート１４４がロック状態の場合には、アクセスの種類及びアクセス元に応じて、転送チャネルが変わる。出力ポート１４４と共にロックされた入力ポート（以下「同一入力ポート」という）からの通常アクセス（Ｎｏ．（３））では、第２チャネルが選択される。出力ポート１４４をロックしていない入力ポート（以下「別入力ポート」という）からの通常アクセス（Ｎｏ．（４））では、第２チャネルが選択される。同一入力ポートからのアンロックアクセス（Ｎｏ．（５））では、第３チャネルが選択される。別入力ポートからのロックアクセス又はアンロックアクセス（Ｎｏ．（６）又は（７））では、第２チャネルが選択される。Ｎｏ．（４）、（６）及び（７）では、パケットは、ロック状態がアンロック状態に変わるまで、第２バッファ１４０２で待機する。
【００３２】
図７〜１１は、第１実施形態の入力ポート１４０の動作の一例を示す図である。図７〜１１は、それぞれ、入力されたパケットを出力ポート（１）に出力する時刻ｔ１〜ｔ５における動作を順に示している。
【００３３】
図７は図６のＮｏ．（１）に対応する。時刻ｔ１では、出力ポート１４４（１）は、アンロック状態（出力ポート状態情報＝０）である。このとき、出力ポート１４４（１）を出力先とする通常アクセス（ロックビットＬＢ（ｔ１）＝０且つアンロックビットＵＬＢ（ｔ１）＝１又は０）のパケットＰ（ｔ１）が入力ポート１４０（１）に入力されると（Ｓ１００）、セレクタ１４０６は、第１バッファ１４０１に空きがある場合には、第２バッファ１４０２を経由せずに第１バッファ１４０１にパケットＰ（ｔ１）を供給するパスを選択し（Ｓ１０１）、第１バッファ１４０１に空きがない場合には、第２バッファ１４０２を経由して第１バッファ１４０１に、パケットＰ（ｔ１）を供給する（即ち、第１バッファ１４０１に空きが出るまで、第２バッファ１４０２にパケットＰ（ｔ１）を待機させる）パスを選択する（Ｓ１０２）。
【００３４】
即ち、セレクタ１４０６は、アクセスの種類が通常アクセスであり、出力ポート１４４がアンロック状態の場合、第１チャネルを選択する。その結果、パケットＰ（ｔ１）は、少なくとも第１バッファ１４０１を経由して出力ポート（１）に出力される。
【００３５】
入力制御部１４００は、出力ポート１４４（１）からの内部レディ信号ＲＤＹ＿ＩＮに基づいて（Ｓ１０４）、第１バッファ１４０１に格納されたパケットＰ（ｔ１）を出力する（Ｓ１０６）。この場合には、ロック制御レジスタ１４０４に設定された出力ポート状態情報＝０は、維持される。
【００３６】
図８は、図６のＮｏ．（２）に対応する。時刻ｔ２では、出力ポート１４４（１）は、アンロック状態（出力ポート状態情報＝０）である。このとき、出力ポート１４４（１）を出力先とするロックアクセス（ロックビットＬＢ（ｔ２）＝１且つアンロックビットＵＬＢ（ｔ２）＝１又は０）のパケットＰ（ｔ２）が入力ポート１４０（１）に入力されると（Ｓ２００）、セレクタ１４０６は、第１バッファ１４０１に空きがある場合には、第２バッファ１４０２を経由せずに第１バッファ１４０１にパケットＰ（ｔ２）を供給するパスを選択し（Ｓ２０１）、第１バッファ１４０１に空きがない場合には、第２バッファ１４０２を経由して第１バッファ１４０１に、パケットＰ（ｔ２）を供給するパスを選択する（Ｓ２０２）。
即ち、セレクタ１４０６は、第１チャネルを転送チャネルとして選択し、少なくとも第１バッファ１４０１にパケットＰ（ｔ２）を格納する。
【００３７】
入力制御部１４００は、出力ポート１４４（１）から内部レディ信号ＲＤＹ＿ＩＮを受け付けると（Ｓ２０４）、第１バッファ１４０１に格納されたパケットＰ（ｔ２）を出力する（Ｓ２０６）。その結果、出力ポート１４４（１）のロック管理情報の１番目のロック管理ビットに、“１”が設定される（即ち、入力ポート１４０（１）により出力ポート１４４（１）がロックされる）。テイルフリットＴＦ（ｔ２）が出力されると、入力制御部１４００は、ロック制御レジスタ１４０４に、出力ポート状態情報＝１を設定する（Ｓ２０８）。
【００３８】
図９は、図６のＮｏ．（３）に対応する。時刻ｔ３では、出力ポート１４４（１）がロック状態（出力ポート状態情報＝１）である。このとき、出力ポート１４４（１）を出力先とする通常アクセス（ロックビットＬＢ（ｔ３）＝０且つアンロックビットＵＬＢ（ｔ３）＝１又は０）のパケットＰ（ｔ３）が入力ポート１４０（１）（即ち、同一入力ポート）に入力されると（Ｓ３００）、セレクタ１４０６は、第２バッファ１４０２にパケットＰ（ｔ３）を供給するパスを選択する（Ｓ３０２）。
【００３９】
即ち、セレクタ１４０６は、第２バッファ１４０２を含むが第１バッファ１４０１を含まない、第２チャネルを転送チャネルとして選択する。その結果、第２バッファ１４０２に、パケットＰ（ｔ３）が格納される。一方、第１バッファ１４０１には、パケットＰ（ｔ３）は格納されない。
【００４０】
入力制御部１４００は、出力ポート１４４（１）から内部レディ信号ＲＤＹ＿ＩＮを受け付けると（Ｓ３０４）、第２バッファ１４０２に格納されたパケットＰ（ｔ３）を出力する（Ｓ３０６）。この場合には、時刻ｔ２においてロック制御レジスタ１４０４に設定された出力ポート状態情報＝０は、維持される。
【００４１】
図１０は、図６のＮｏ．（４）に対応する。時刻ｔ４では、出力ポート１４４（１）がロック状態（出力ポート状態情報＝１）である。このとき、出力ポート１４４（１）を出力先とする通常アクセス（ロックビットＬＢ（ｔ４）＝０且つアンロックビットＵＬＢ（ｔ４）＝０）のパケットＰ（ｔ４）が入力ポート１４０（２）（即ち、別入力ポート）に入力されると（Ｓ４００）、セレクタ１４０６は、第２バッファ１４０２にパケットＰ（ｔ４）を供給するパスを選択する（Ｓ４０２）。なお、通常アクセス以外のアクセス（ロックビットＬＢ（ｔ４）及びアンロックビットＵＬＢ（ｔ４）の少なくとも１つが“１”）のパケットＰ（ｔ４）が入力ポート１４０（２）（即ち、別入力ポート）に入力されると（Ｓ４００）、パケットＰ（ｔ４）は、ロック状態がアンロック状態に変わるまで、第２バッファ１４０２で待機する。
【００４２】
入力制御部１４００は、出力ポート１４４（１）から内部レディ信号ＲＤＹ＿ＩＮを受け付けると（Ｓ４０４）、第２バッファ１４０２にパケットＰ（ｔ４）が格納されている場合には、パケットＰ（ｔ４）を出力する（Ｓ４０６）。この場合には、時刻ｔ２においてロック制御レジスタ１４０４に設定された出力ポート状態情報＝１は、維持される。
【００４３】
図１１は、図６のＮｏ．（５）に対応する。時刻ｔ５では、出力ポート１４４（１）がロック状態（出力ポート状態情報＝１）である。このとき、出力ポート１４４（１）を出力先とするアンロックアクセス（ロックビットＬＢ（ｔ５）＝１又は０且つアンロックビットＵＬＢ（ｔ５）＝１）のパケットＰ（ｔ５）が入力ポート１４０（１）（即ち、同一入力ポート）に入力されると（Ｓ５００）、セレクタ１４０６は、第１バッファ１４０１にパケットＰ（ｔ５）を直接供給するパスを選択する（Ｓ５０２）。
【００４４】
即ち、セレクタ１４０６は、第１バッファ１４０１を含むが第２バッファ１４０２を含まない、第３チャネルを転送チャネルとして選択する。その結果、第１バッファ１４０１に、パケットＰ（ｔ５）が格納される。
【００４５】
入力制御部１４００は、出力ポート１４４（１）から内部レディ信号ＲＤＹ＿ＩＮを受け付けると（Ｓ５０４）、第１バッファ１４０１に格納されたパケットＰ（ｔ５）を出力する（Ｓ５０６）。その結果、出力ポート１４４（１）のロック管理情報の１番目のロック管理ビットに、“０”が設定される（即ち、入力ポート１４０（１）により出力ポート１４４（１）がアンロックされる）。テイルフリットＴＦ（ｔ５）が出力されると、入力制御部１４００は、ロック制御レジスタ１４０４に出力ポート状態情報＝０を設定する（Ｓ５０８）。
【００４６】
第１実施形態によれば、入力ポート１４０が、第１〜第３チャネルを備え、アクセスの種類及びアクセス元に応じて、第１〜第３チャネルの中から転送チャネルを選択する。これにより、出力ポート１４４がロック状態であっても、通常アクセス又はアンロックアクセスのパケットを、出力ポート１４４に出力することができる。その結果、ルータ１４のサイズ及び消費電力を増加させることなく、メニーコアシステム１０のデッドロック状態を回避することができ、ひいては、パケット転送のレイテンシを改善することができる。
【００４７】
（第２実施形態）
第２実施形態は、ルータ間に任意の数のバッファを有し、ルータ間のフロー制御方式（バリッドビットに基づいて制御するバリッド方式及び送信可能なフリット数を示すクレジットビットに基づいて制御するクレジット方式）を動的に切り替えながら、パケットを転送する例である。なお、第１実施形態と同様の説明は省略する。
【００４８】
バリッド方式は、ルータ間のバッファに空きがあれば、転送先のモジュールの入力ポート１４０の内部バッファに空きがなくても、転送元のモジュールの出力ポート１４４は、パケットを出力する。一方、クレジット方式は、ルータ間のバッファ１８に空きがあったとしても、転送先のモジュールの入力ポート１４０の内部バッファに空きがない場合には、転送元のモジュールの出力ポート１４４は、パケットを出力しない。
【００４９】
図１２は、第２実施形態の出力ポート１４４の構成を示すブロック図である。出力ポート１４４は、出力制御部１４４０及びロック管理レジスタ１４４２に加えて、クレジット管理レジスタ１４４４を備える。
【００５０】
出力制御部１４４０は、クレジット管理レジスタ１４４４にクレジット管理情報を設定する。クレジット管理情報とは、出力可能なフリット数を示す情報（例えば、Ｎ個のクレジットビット）を含んでいる。例えば、クレジットビットが“０”である場合には、出力可能なフリット数は０個（即ち、出力できない状態）であることを示し、クレジットビットが“３”である場合には、出力可能なフリット数は３個であることを示す。また、出力制御部１４４０は、外部バッファ１８を経由して下位モジュールＤＭから送られるレディ信号ＲＤＹ＿ＤＭに基づいて、クレジット管理情報を更新する。
【００５１】
図１３は、第２実施形態の入力ポート１４０の構成を示すブロック図である。入力ポート１４０は、入力制御部１４００、第１及び第２バッファ１４０１及び１４０２、ロック制御レジスタ１４０４、並びにセレクタ１４０６に加えて、クレジットカウンタ１４０８を備える。
【００５２】
入力制御部１４００は、ロック制御レジスタ１４０４に設定された出力ポート状態情報に基づいて、ルータ間のフロー制御方式を選択する。具体的には、入力制御部１４００は、出力ポート状態情報がアンロック状態を示す場合には、バリッド方式を選択し、出力ポート状態情報がロック状態を示す場合には、クレジット方式を選択する。
【００５３】
また、入力制御部１４００は、クレジットカウンタ１４０８に、クレジットカウントを設定する。クレジットカウントは、第１及び第２バッファ１４０１及び１４０２の空き容量（例えば、フリットを格納可能なバッファの数）を示している。
【００５４】
第２実施形態のルータ間のパケットの転送について説明する。図１４は、第２実施形態のルータ１４ａ及び１４ｂ間のパケットＰ（ｔ）の転送の説明図である。図１４は、ルータ１４ａ（第１モジュールＵＭ）がルータ１４ｂ（第２モジュールＤＭ）にパケットＰ（ｔ）を転送する様子を示している。
【００５５】
ルータ１４ａの出力ポート１４４は、外部バッファ１８を経由してルータ１４ｂの入力ポート１４０に、パケットＰ（ｔ）を転送する。ルータ１４ａ及びルータ１４ｂとの間のフロー制御方式については、入力ポート１４０がアンロック状態の場合には、バリッド方式が選択され、入力ポート１４０がロック状態の場合には、クレジット方式が選択される。
【００５６】
バリッド方式が選択された場合には、ルータ１４ｂの入力制御部１４００は、バッファ１４０１又は１４０２に格納されたパケットＰ（ｔ）をルータ１４ｂの出力ポート（図示せず）に転送した後に、外部バッファ１８を経由してルータ１４ａに、バリッド方式用のレディ信号ＲＤＹ＿ＤＭ（Ｖ）を送信する。レディ信号ＲＤＹ＿ＤＭ（Ｖ）は、ルータ１４ｂがルータ１４ａからパケットを受付可能であることを示す信号である。
【００５７】
一方、クレジット方式が選択された場合には、ルータ１４ａのロック管理レジスタ１４４２は、出力制御部１４４０の制御に従って、クレジット管理情報をリセットするリセット信号ＲＥＳ１を、クレジット管理レジスタ１４４４に与える。これにより、クレジット管理レジスタ１４４４に設定されたクレジット管理情報がリセットされる。また、ルータ１４ｂのロック制御レジスタ１４０４は、入力制御部１４００の制御に従って、クレジットカウントをリセットするリセット信号ＲＥＳ２を、クレジットカウンタ１４０８に与える。これにより、クレジットカウンタ１４０８に設定されたクレジットカウントがリセットされる。リセットされた後のクレジットカウントは、リセットされた時点で使用可能な第１及び第２バッファ１４０１及び１４０２の数を示している。
【００５８】
クレジット方式では、入力制御部１４００は、ルータ１４ａの出力ポート１４４から転送されたパケットＰ（ｔ）の各フリットをバッファ１４０１又は１４０２に格納する度に、クレジットカウンタ１４０８のクレジットカウントに１を加算する。また、入力制御部１４００は、パケットＰ（ｔ）の各フリットをルータ１４ｂの出力ポートに転送した後に、クレジットカウンタ１４０８のクレジットカウントから１を減算し、且つ、外部バッファ１８を経由してルータ１４ａに、クレジット方式用のレディ信号ＲＤＹ＿ＤＭ（Ｃ）を送信する。
【００５９】
クレジット方式では、出力制御部１４４０は、パケットＰ（ｔ）をルータ１４ｂの入力ポート１４０に転送すると、クレジット管理レジスタ１４４４のクレジット管理情報に対して、パケットＰ（ｔ）を転送した入力ポート１４０に対応する入力ポート識別情報ｎに関連付けられたクレジットビットに１を加算する。また、出力制御部１４４０は、クレジット方式用のレディ信号ＲＤＹ＿ＤＭ（Ｃ）を受信すると、クレジット方式用のレディ信号ＲＤＹ＿ＤＭ（Ｃ）を送信した入力ポート１４０に対応する入力ポート識別情報ｎに関連付けられたクレジットビットから１を減算する。
【００６０】
第２実施形態によれば、ルータ１４ａ（第１モジュール）の出力ポート１４４及びルータ１４ｂ（第２モジュール）の入力ポート１４０がアンロック状態である場合には、バリッド方式が選択され、当該出力ポート１４４及び入力ポート１４０がロック状態である場合には、クレジット方式が選択される。これにより、第１実施形態よりも、パケット転送のレイテンシを改善することができる。
【００６１】
本実施形態に係るルータ１４の少なくとも一部は、ハードウェアで構成しても良いし、ソフトウェアで構成しても良い。ソフトウェアで構成する場合には、ルータ１４の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記録媒体に収納し、コンピュータに読み込ませて実行させても良い。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でも良い。
【００６２】
また、本実施形態に係るルータ１４の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線（無線通信も含む）を介して頒布しても良い。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布しても良い。
【００６３】
なお、本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で構成要素を変形して具体化される。また、上述した実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明が形成可能である。例えば、上述した実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００６４】
１０  メニーコアシステム
１２ａ〜１２ｄ  コア
１３ａ〜１３ｈ  インタフェース
１４ａ〜１４ｄ  ルータ
１４０  入力ポート
１４００  入力制御部
１４０１  第１バッファ
１４０２  第２バッファ
１４０４  ロック制御レジスタ
１４０６  セレクタ
１４０８  クレジットカウンタ
１４２  クロスバー
１４４  出力ポート
１４４０  出力制御部
１４４２  ロック管理レジスタ
１４４４  クレジット管理レジスタ
１６ａ〜１６ｄ  メモリ
１８  外部バッファ
ＤＭ  下位モジュール
【図１】
2013251715.tif 000003
【図２】
2013251715.tif 000004
【図３】
2013251715.tif 000005
【図４】
2013251715.tif 000006
【図５】
2013251715.tif 000007
【図６】
2013251715.tif 000008
【図７】
2013251715.tif 000009
【図８】
2013251715.tif 000010
【図９】
2013251715.tif 000011
【図１０】
2013251715.tif 000012
【図１１】
2013251715.tif 000013
【図１２】
2013251715.tif 000014
【図１３】
2013251715.tif 000015
【図１４】
2013251715.tif 000016