(57)【特許請求の範囲】
【請求項１】
宛先アドレスを有するヘッダ部とデータ部を含む第１のパケットを受信するとともに、前記第１のパケットの宛先アドレス、フリット長、及び、前記第１のパケットが到着するまでのサイクル数である先行サイクル数を含む第２のパケットを前記第１のパケットに先行して受信する受信部と、
前記第２のパケットに含まれる前記第１のパケットの宛先アドレスを参照して前記第１のパケットのルーティングを行うルーティング部と、
前記第２のパケットに含まれる前記第１のパケットの宛先アドレス、フリット長、及び、先行サイクル数を参照して前記第１のパケットに対するアービトレーションを行い、前記第１のパケットが到着するタイミングにおいて、前記第１のパケットのフリット長に対応するサイクル数の出力チャネルを予約するアービタ部と、
前記ルーティング部によるルーティング及び前記アービタ部によるアービトレーションにしたがって前記第１のパケットをバッファに格納することなく転送する転送部と、を備え、
前記転送部は、前記第２のパケットに含まれる先行サイクル数と前記アービトレーションに要するサイクル数との大小関係に応じて、前記第２のパケットを後段のルータに転送するか否かを判定する、ルータ装置。
【請求項２】
前記転送部は、受信時の前記第２のパケットに含まれる先行サイクル数を、前記アービトレーションに要するサイクル数だけ減算した後、前記第２のパケットを後段のルータに転送する、請求項１に記載のルータ装置。
【請求項３】
前記転送部は、受信時の前記第２のパケットに含まれる先行サイクル数が１である場合、前記第２のパケットを後段のルータに転送しない、請求項２に記載のルータ装置。
【請求項４】
前記第２のパケットは、前記第１のパケットの優先度を含み、
前記アービタ部は、前記優先度に応じてアービトレーションを行い、優先度の低い前記第１のパケットの予約を取り消し、
予約を取り消された前記第１のパケットが到着した場合、前記ルーティング部は、前記第１のパケットのヘッダ部に含まれる宛先アドレスに基づいてルーティングを行い、前記アービタ部は、バッファに格納された前記第１のパケットを出力すべき出力チャネルが空いているか否かを判定し、空いているときに該出力チャネルを前記第１のパケットに割り当てる、請求項１乃至３のいずれか１項に記載のルータ装置。
【請求項５】
前記アービタ部は、前記優先度に応じてアービトレーションを行った場合において、先行するアービトレーションを取り消したときには、前記第２のパケットが転送された後段のルータへその旨を通知する、請求項４に記載のルータ装置。
【請求項６】
複数のＩＰコアと、
前記複数のＩＰコア間のパケットを転送する請求項１乃至５のいずれか１項に記載のルータ装置と、を備える、半導体集積回路装置。
【請求項７】
前記複数のＩＰコア間を接続するとともに前記第１のパケットを転送する第１の通信チャネルと、
前記複数のＩＰコア間を接続するとともに第２のパケットを転送する第２の通信チャネルと、をさらに備える、請求項６に記載の半導体集積回路装置。
【請求項８】
ルータ装置が、宛先アドレスを有するヘッダ部とデータ部を含む第１のパケットを受信する前に、前記第１のパケットの宛先アドレス、フリット長、及び、前記第１のパケットが到着するまでのサイクル数である先行サイクル数を含む第２のパケットを受信する工程と、
前記第２のパケットに含まれる前記第１のパケットの宛先アドレスを参照して前記第１のパケットのルーティングを行う工程と、
前記第２のパケットに含まれる前記第１のパケットの宛先アドレス、フリット長、及び、先行サイクル数を参照して前記第１のパケットに対するアービトレーションを行い、前記第１のパケットが到着するタイミングにおいて、前記第１のパケットのフリット長に対応するサイクル数の出力チャネルを予約する工程と、
前記ルーティング及び前記アービトレーションにしたがって前記第１のパケットをバッファに格納することなく転送する工程と、
前記第２のパケットに含まれる先行サイクル数と前記アービトレーションに要するサイクル数との大小関係に応じて、前記第２のパケットを後段のルータに転送するか否かを判定する工程と、を含む、ルーティング方法。
【請求項９】
前記ルータ装置が、受信時の前記第２のパケットに含まれる先行サイクル数を、前記アービトレーションに要するサイクル数だけ減算した後、前記第２のパケットを後段のルータに転送する工程を含む、請求項８に記載のルーティング方法。
【請求項１０】
前記第２のパケットは、前記第１のパケットの優先度を含み、
前記ルータ装置が、前記優先度に応じて前記アービトレーションを行い、優先度の低い前記第１のパケットの予約を取り消す工程と、
予約を取り消された前記第１のパケットが到着した場合、前記第１のパケットのヘッダ部に含まれる宛先アドレスに基づいてルーティングを行い、バッファに格納された前記第１のパケットを出力すべき出力チャネルが空いているか否かを判定し、空いているときに該出力チャネルを前記第１のパケットに割り当てる工程と、を含む、請求項８又は９に記載のルーティング方法。
【請求項１１】
宛先アドレスを有するヘッダ部とデータ部を含む第１のパケットを受信する前に、前記第１のパケットの宛先アドレス、フリット長、及び、前記第１のパケットが到着するまでのサイクル数である先行サイクル数を含む第２のパケットを受信する処理と、
前記第２のパケットに含まれる前記第１のパケットの宛先アドレスを参照して前記第１のパケットのルーティングを行う処理と、
前記第２のパケットに含まれる前記第１のパケットの宛先アドレス、フリット長、及び、先行サイクル数を参照して前記第１のパケットに対するアービトレーションを行い、前記第１のパケットが到着するタイミングにおいて、前記第１のパケットのフリット長に対応するサイクル数の出力チャネルを予約する処理と、
前記ルーティング及び前記アービトレーションにしたがって前記第１のパケットをバッファに格納することなく転送する処理と、
前記第２のパケットに含まれる先行サイクル数と前記アービトレーションに要するサイクル数との大小関係に応じて、前記第２のパケットを後段のルータに転送するか否かを判定する処理と、をコンピュータに実行させる、プログラム。
【請求項１２】
受信時の前記第２のパケットに含まれる先行サイクル数を、前記アービトレーションに要するサイクル数だけ減算した後、前記第２のパケットを後段のルータに転送する処理を前記コンピュータに実行させる、請求項１１に記載のプログラム。
【請求項１３】
前記第２のパケットは、前記第１のパケットの優先度を含み、
前記優先度に応じて前記アービトレーションを行い、優先度の低い前記第１のパケットの予約を取り消す処理と、
予約を取り消された前記第１のパケットが到着した場合、前記第１のパケットのヘッダ部に含まれる宛先アドレスに基づいてルーティングを行い、バッファに格納された前記第１のパケットを出力すべき出力チャネルが空いているか否かを判定し、空いているときに該出力チャネルを前記第１のパケットに割り当てる処理とを、前記コンピュータに実行させる、請求項１１又は１２に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２００９−０７２５０７号（２００９年  ３月２４日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、ルータ装置、半導体集積回路装置、ルーティング方法及びプログラムに関し、特に、半導体集積回路装置に設けられたＩＰコア間の通信のためのルータ装置、そのルータ装置を有する半導体集積回路装置、ルーティング方法及びプログラムに関する。
【背景技術】
【０００２】
ＳｏＣ（Ｓｙｓｔｅｍ  Ｏｎ  ａ  Ｃｈｉｐ）とは、複数のＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）コアを集積した半導体集積回路装置をいう。従来、ＳｏＣに搭載されたＩＰコア間の通信は、バスを介して行われてきた。例えば、ＡＲＭ社によって提唱されたＡＭＢＡ（Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ  Ｂｕｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ）は、ＩＰコア間のバスの標準であり、ＩＰコアの個数の増加、及び、ＳｏＣの複雑化に対応して、ＡＨＢ（Ａｄｖａｎｃｅｄ  Ｈｉｇｈ−ｐｅｒｆｏｒｍａｎｃｅ  Ｂｕｓ）、マルチレイヤＡＨＢ、ＡＸＩ（Ａｄｖａｎｃｅｄ  ｅＸｔｅｎｓｉｂｌｅ  Ｉｎｔｅｒｆａｃｅ）のように進化してきた。【０００３】
しかし、バス構成によると、配線長が長くなり周波数の向上に対応することが困難である。また、バス構成によると、複数のＩＰコアからのアクセス競合に対する調停を集中的に行う必要があるため、ＩＰコアの個数の増加に伴ってバスを作り直す必要が生じている。現状では、この問題に対して、バスを階層的に接続することによって、通信のローカリティ（局所性）を確保する方法が用いられている。【０００４】
一方、非特許文献１において、データをパケット化して送ることにより、通信のローカリティを有効に活用しつつ、調停を各ルータに分散させることによってスケーラビリティを確保したＮｏＣ（Ｎｅｔｗｏｒｋ  ｏｎ  Ｃｈｉｐ）が記載されている。【０００５】
ＮｏＣを採用したチップとして、例えば、Ｔｉｌｅｒａ社のＴＩＬＥ６４、Ｉｎｔｅｌ社の８０コアチップ、ＣＥＡ−ＬＥＴＩ社のＦＡＵＳＴチップ、ＳＴＭｉｃｒｏｅｌｅｃｔｒｏｎｉｃｓ社のＳＴＮｏＣが挙げられる。【０００６】
図３は、ＮｏＣを採用したＳｏＣの構成を示すブロック図である。図５は、通常パケットのフリット構成を示す図である。図５を参照すると、通常パケットは、複数のフリットから構成される。図３及び図５を参照すると、ＳｏＣ２１においては、ルータ装置Ｒ０〜Ｒ１５と通信チャネル２５によってネットワークが構成される。ＩＰコアＩＰ０〜ＩＰ１５間の通信は、図５に示した通常パケットを、このネットワークに流すことによって実現される。【０００７】
しかし、ＮｏＣ構成を採用した場合には、データの送信ＩＰコアから受信ＩＰコアまでデータを届けるためのサイクル数（すなわち、遅延時間（レイテンシ））が、バス構成における遅延時間と比較して長くなる。バス構成を採用した場合には、アービトレーション（調停）が完了すれば送信ＩＰコアから受信ＩＰコアまでのチャネルが確立するため、データ転送の速度とレイテンシは、バスの動作周波数と、その周波数を満たすために一定配線長毎に挿入されたパイプラインレジスタの段数によって決定される。【０００８】
一方、ＮｏＣ構成を採用した場合には、パケットの先頭フリットが到着した後、そのパケットの行き先の計算、行き先に基づいた出力スイッチ及びチャネルの調停、並びに、出力バッファへのラッチを複数のサイクルを要して行う必要がある。通信を行うＩＰコア間の距離にも依存するものの、複数のルータ装置を経由する場合には、ＮｏＣ構成によると、バス構成と比較して大きい遅延が生じうる。【０００９】
この問題に対して、ルーティングを一つ手前のルータ装置で行うＮＲＣ（Ｎｅｘｔ  Ｒｏｕｔｉｎｇ  Ｃｏｍｐｕｔａｔｉｏｎ）が提案されている。図３を参照すると、ＮＲＣにおいては、ルータ装置Ｒ０からルータ装置Ｒ１を経由してルータ装置Ｒ５に至るパケットを送信する場合、ルータ装置Ｒ０はルータ装置Ｒ１のルーティングを行い、ルータ装置Ｒ１はルータ装置Ｒ５のルーティングを行なう。【００１０】
非特許文献２において、ＥＶＣ（Ｅｘｐｒｅｓｓ  Ｖｉｒｔｕａｌ  Ｃｈａｎｎｅｌ）が記載されている。図１２は、非特許文献２に記載されたＥＶＣについて説明するための図である。図１２を参照すると、いくつかの中継ルータ装置によるルーティング及び調停をバイパスするＥＶＣ２０４を張ることによって、中継ルータ装置において必要とされるパイプラインの段数を削減する。バイパス時には、パケットは２サイクルでルータ装置を通過する。【００１１】
図１２を参照すると、ルータ装置Ｒ０〜Ｒ１５は、双方向の通信チャネル２０２で接続されている。ルータ装置Ｒ１からルータ装置Ｒ１５への通信が多数存在する場合には、ＥＶＣ２０４を定義する。ルータ装置Ｒ２、Ｒ７、及びＲ１１は、ＥＶＣ２０４で到着したパケットのルーティング及びスイッチ調停を省略する。したがって、ルータ装置Ｒ１からルータ装置Ｒ３への遅延時間、及びルータ装置Ｒ３からＲ１５への遅延時間は短くなる。【００１２】
非特許文献３において、予測ルーティングが記載されている。すなわち、到着したパケットに対するルーティングと並行して、所定の予測ルールに基づいて、投機的にパケットの出力方向を予測し、その方向のスイッチ調停及びスイッチ通過を行い、パケットを出力してしまう。投機が成功した場合には、ルーティングのサイクルに応じて遅延時間が短縮される。ルーティング計算の結果、投機が失敗した場合には、出力ラッチ、並びに、投機的に出力した方向のルータ装置内の入力ラッチ及び入力データＦＩＦＯに格納された当該パケットのフリットを取り消すとともに、正しい出力方向に対するスイッチ調停及びスイッチ通過をやり直す。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】ダブリュー・ジェイ・ダリー（Ｗ．Ｊ．  Ｄａｌｌｙ）、他１名、「（ルート・パケッツ、ノット・ワイヤーズ：オン・チップ・インターコネクション・ネットワークス（Ｒｏｕｔｅ  Ｐａｃｋｅｔｓ、  Ｎｏｔ  Ｗｉｒｅｓ：  Ｏｎ−Ｃｈｉｐ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ  Ｎｅｔｗｏｒｋｓ）」、デザイン・オートメーション・カンファレンス（Ｄｅｓｉｇｎ  Ａｕｔｏｍａｔｉｏｎ  Ｃｏｎｆｅｒｅｎｃｅ）、（米国）、２００１年、ｐ．６８４−６８９
【非特許文献２】エイ・クマー（Ａ．  Ｋｕｍａｒ）、他３名、「トゥワード・アイディール・オン・チップ・コミュニケーション・ユージング・エキスプレス・バーチャル・チャネルズ（Ｔｏｗａｒｄ  Ｉｄｅａｌ  Ｏｎ−Ｃｈｉｐ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｕｓｉｎｇ  Ｅｘｐｒｅｓｓ  Ｖｉｒｔｕａｌ  Ｃｈａｎｎｅｌｓ）」、アイトリプルイー・マイクロ（ＩＥＥＥ  Ｍｉｃｒｏ）、（米国）、２８巻、１号、２００８年１月−２月、ｐ．８０−９０
【非特許文献３】鯉渕道紘、他４名、「予測機構を持つルータを用いた低遅延チップ内ネットワークに関する研究」、先進的計算基盤システムシンポジウムＳＡＣＳＩＳ２００８論文集、２００８年６月、ｐ．３９３−４０１
【発明の概要】
【発明が解決しようとする課題】
【００１４】
上記非特許文献１〜３の全開示内容はその引用をもって本書に繰込み記載する。
以下の分析は、本発明者によってなされたものである。上記のＮＲＣによると、パケットとともにルーティング計算の結果を次のルータ装置へ送信する必要が生じるため、配線量が増加する。また、各ルータ装置は自身に接続された複数のルータ装置のルーティングを行う必要があり、ルーティングが複雑化する。【００１５】
また、非特許文献２に記載されたＥＶＣによると、近接ノード間の遅延を削減することができず、バイパスする複数の中継ルータ装置を結ぶチャネル間にまたがる調停及びフロー制御、並びに、各中継ルータ装置内におけるチャネル確保のための調停が必要となり、遅延時間を短縮する効果は乏しい。また、ＥＶＣを実現するには、ルータ装置のバッファ数を増やす必要がある。【００１６】
さらに、非特許文献３に記載された予測ルータにおいては、投機がはずれた場合には回復処理が必要となる。したがって、投機が確定するまで、パケットを先頭データからバッファに保持しておく必要がある。また、投機が失敗した場合には、余分な電力を消費する。【００１７】
また、これらの方式では、ルーティングの遅延時間を短縮できるものの、スイッチ調停時間の短縮はできないため、構成が複雑化する割には、短縮することができる遅延時間は限られている。【００１８】
そこで、ルータ装置において短い遅延時間でパケットを転送することが課題となる。本発明の目的は、かかる課題を解決するルータ装置、半導体集積回路装置、ルーティング方法及びプログラムを提供することにある。
【課題を解決するための手段】
【００１９】
本発明の第１の視点に係るルータ装置は、宛先アドレスを有するヘッダ部とデータ部を含む第１のパケットを受信するとともに、第１のパケットの宛先アドレス、フリット長、及び、前記第１のパケットが到着するまでのサイクル数である先行サイクル数を含む第２のパケットを前記第１のパケットに先行して受信する受信部と、第２のパケットに含まれる第１のパケットの宛先アドレスを参照して第１のパケットのルーティングを行うルーティング部と、第２のパケットに含まれる第１のパケットの宛先アドレス、フリット長、及び、先行サイクル数を参照して第１のパケットに対するアービトレーションを行い、前記第１のパケットが到着するタイミングにおいて、前記第１のパケットのフリット長に対応するサイクル数の出力チャネルを予約するアービタ部と、ルーティング部によるルーティング及びアービタ部によるアービトレーションにしたがって第１のパケットをバッファに格納することなく転送する転送部と、を有し、転送部は、前記第２のパケットに含まれる先行サイクル数と前記アービトレーションに要するサイクル数との大小関係に応じて、前記第２のパケットを後段のルータに転送するか否かを判定する。
【００２０】
本発明の第２の視点に係る半導体集積回路装置は、複数のＩＰコアと、当該複数のＩＰコア間のパケットを転送する上記のルータ装置と、を備えている。【００２１】
本発明の第３の視点に係るルーティング方法は、ルータ装置が、宛先アドレスを有するヘッダ部とデータ部を含む第１のパケットを受信する前に、前記第１のパケットの宛先アドレス、フリット長、及び、前記第１のパケットが到着するまでのサイクル数である先行サイクル数を含む第２のパケットを受信する工程と、第２のパケットに含まれる第１のパケットの宛先アドレスを参照して第１のパケットのルーティングを行う工程と、第２のパケットに含まれる第１のパケットの宛先アドレス、フリット長、及び、先行サイクル数を参照して第１のパケットに対するアービトレーションを行い、前記第１のパケットが到着するタイミングにおいて、前記第１のパケットのフリット長に対応するサイクル数の出力チャネルを予約する工程と、当該ルーティング及び当該アービトレーションにしたがって第１のパケットをバッファに格納することなく転送する工程と、前記第２のパケットに含まれる先行サイクル数と前記アービトレーションに要するサイクル数との大小関係に応じて、前記第２のパケットを後段のルータに転送するか否かを判定する工程と、を含む。
【００２２】
本発明の第４の視点に係るプログラムは、宛先アドレスを有するヘッダ部とデータ部を含む第１のパケットを受信する前に、前記第１のパケットの宛先アドレス、フリット長、及び、前記第１のパケットが到着するまでのサイクル数である先行サイクル数を含む第２のパケットを受信する処理と、前記第２のパケットに含まれる前記第１のパケットの宛先アドレスを参照して前記第１のパケットのルーティングを行う処理と、前記第２のパケットに含まれる前記第１のパケットの宛先アドレス、フリット長、及び、先行サイクル数を参照して前記第１のパケットに対するアービトレーションを行い、前記第１のパケットが到着するタイミングにおいて、前記第１のパケットのフリット長に対応するサイクル数の出力チャネルを予約する処理と、前記ルーティング及び前記アービトレーションにしたがって前記第１のパケットをバッファに格納することなく転送する処理と、前記第２のパケットに含まれる先行サイクル数と前記アービトレーションに要するサイクル数との大小関係に応じて、前記第２のパケットを後段のルータに転送するか否かを判定する処理と、をコンピュータに実行させる。なお、プログラムは、再構成可能デバイスに対するコンフィギュレーションファイルであってもよい。
【発明の効果】
【００２３】
本発明に係るルータ装置、半導体集積回路、ルーティング方法及びプログラムによると、ルータ装置において短い遅延時間でパケットを転送することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明の第１の実施形態に係るルータ装置の構成を示すブロック図である。
【図２】本発明の第２の実施形態に係るルータ装置の構成を示すブロック図である。
【図３】本発明の第２の実施形態に係る半導体集積回路装置の構成を示すブロック図である。
【図４】本発明の第２の実施形態におけるアービタ部の構成を示すブロック図である。
【図５】本発明の第２の実施形態に係るルータ装置によって転送される通常パケットのフリット構成を示す図である。
【図６】本発明の第２の実施形態に係るルータ装置によって転送される予約要求パケットのフリット構成を示す図である。
【図７】本発明の第２の実施形態に係るルータ装置の動作を示すタイミングチャートである。
【図８】本発明の第２の実施形態に係るルータ装置の動作を示すタイミングチャートである。
【図９】本発明の第２の実施形態における予約テーブルの動作について説明するための図である。
【図１０】本発明の第２の実施形態における予約テーブルの動作について説明するための図である。
【図１１】本発明の第３の実施形態に係る半導体集積回路装置の構成を示す図である。
【図１２】非特許文献２に記載されたＥＶＣについて説明するための図である。
【発明を実施するための形態】
【００２５】
第１の展開形態のルータ装置は、上記第１の視点に係るルータ装置であることが好ましい。
【００２６】
第２の展開形態のルータ装置は、第２のパケットが、到着タイミングとして第２のパケットを受信してから第１のパケットを受信するまでのサイクル数である先行サイクル数を含むとともに、第１のパケットのフリット長を含み、アービタ部が、先行サイクル数及びフリット長に基づいて上記アービトレーションを行うことが好ましい。
【００２７】
第３の展開形態のルータ装置は、転送部が、第２のパケットに含まれる先行サイクル数を更新するとともに、ルーティング部によるルーティングにしたがって当該第２のパケットを後段のルータ装置へ転送することが好ましい。
【００２８】
第４の展開形態のルータ装置は、第２のパケットが、第１のパケットの優先度を含み、アービタ部が、優先度に応じて上記アービトレーションを行うことが好ましい。
【００２９】
第５の展開形態のルータ装置は、アービタ部が、優先度に応じてアービトレーションを行った場合において、先行するアービトレーションを取り消したときには、第２のパケットが転送された後段のルータへその旨を通知することが好ましい。
【００３０】
第６の展開形態の半導体集積回路装置は、上記第２の視点に係る半導体集積回路装置であることが好ましい。
【００３１】
第７の展開形態の半導体集積回路装置は、第４の展開形態の半導体集積回路装置において、複数のＩＰコア間を接続するとともに第１のパケットを転送する第１の通信チャネルと、複数のＩＰコア間を接続するとともに第２のパケットを転送する第２の通信チャネルと、をさらに備えていることが好ましい。
【００３２】
第８の展開形態のルーティング方法は、上記第３の視点に係るルーティング方法であることが好ましい。
【００３３】
第９の展開形態のルーティング方法は、第２のパケットが、到着タイミングとして第２のパケットを受信してから第１のパケットを受信するまでのサイクル数である先行サイクル数を含むとともに、第１のパケットのフリット長を含み、ルータ装置は、先行サイクル数及びフリット長に基づいて、アービトレーションを行うことが好ましい。
【００３４】
第１０の展開形態のルーティング方法は、第２のパケットが、第１のパケットの優先度を含み、ルータ装置は、優先度に応じてアービトレーションを行うことが好ましい。
【００３５】
（実施形態１）
本発明の第１の実施形態に係るルータ装置について、図面を参照して説明する。図１を参照すると、ルータ装置３０は、受信部３１、ルーティング部３２、アービタ部３３、及び転送部３４を有する。
【００３６】
受信部３１は、第１のパケットを受信するとともに第１のパケットの宛先アドレス及び到着時刻を含む第２のパケットを受信する。
【００３７】
ルーティング部３２は、第２のパケットに含まれる第１のパケットの宛先アドレスを参照して第１のパケットのルーティングを行う。
【００３８】
アービタ部３３は、第２のパケットに含まれる第１のパケットの宛先アドレス及び到着時刻を参照して第１のパケットに対するアービトレーションを行う。
【００３９】
転送部３４は、ルーティング部３２によるルーティング及びアービタ部３３によるアービトレーションにしたがって第１のパケットを転送する。
【００４０】
このとき、ルータ装置３０は、第１のパケットを受信した後に第１のパケットに対するルーティング及びアービトレーションを行う必要がないため、短い遅延時間で第１のパケットを転送することができる。
【００４１】
（実施形態２）
本発明の第２の実施形態について図面を参照して詳細に説明する。図２は、本実施形態に係るルータ装置２０の構成を示すブロック図である。図２の各構成要素は、Ｎ方向、Ｓ方向、Ｅ方向、Ｗ方向、及びＩＰコアの入力チャネル１から入力されたパケットに対して同様の動作を行うことから、これらの各構成要素の符号には、それぞれ添字（サフィックス）ｎ、ｅ、ｓ、ｗ、及びｉを付した。以下の説明においては、便宜のため、添え字を省略する。
【００４２】
図２を参照すると、ルータ装置２０は、入力チャネル１、入力ＦＩＦＯバッファ２、スルーライン３、入力ＦＩＦＯバッファ出力チャネル４、セレクタ６、１２、出力ラッチ７、出力チャネル８、アービタ部９、入力ラッチ１０、ルーティング部１１、及び、予約パケット生成部１３を有する。
【００４３】
図３は、ネットワークオンチップ（ＮｏＣ）を利用したシステムオンチップ（半導体集積回路装置）の構成を示すブロック図である。図３を参照すると、半導体集積回路装置２１は、ＩＰコアＩＰ０〜ＩＰ１５、ネットワークインタフェースＮＩＦ、ルータＲ０〜Ｒ１５、及び、通信チャネル２５を有する。
【００４４】
ＩＰコアＩＰ０〜ＩＰ１５は、それぞれネットワークインタフェースＮＩＦを介して通信チャネル２５に接続される。ルータＲ０〜Ｒ１５は、通信チャネル２５を通るパケットのルーティングを行い、パケットは所望の方向の通信チャネル２５に送信される。ルータ装置Ｒ０〜Ｒ１５として、図２に示したルータ装置２０が設けられる。
【００４５】
図２のルータ装置は、Ｎ方向、Ｅ方向、Ｓ方向、Ｗ方向及びＩ方向の５つ方向の入力チャネル１からパケットを受信する。入力ラッチ１０は、受信したパケットを一旦ラッチする。ルーティング部１１は、パケットの転送先の計算（ルーティング）を行う。ルーティング部１１は、パケット送信の予約を行う場合には、アービタ部９に対して、予約要求を行う。入力ＦＩＦＯバッファ２は、予約要求の後のフリットデータを蓄積する。入力ＦＩＦＯバッファ出力チャネル４は、クロスバー５へ接続される。スルーライン３は、予約されたパケットを、入力ＦＩＦＯバッファ２を経由することなく、短い遅延時間でクロスバー５へ出力する。セレクタ１２は、スルーライン３から入力ＦＩＦＯバッファ２へフリットデータを受け渡す。
【００４６】
セレクタ６は、１０本の入力のうち出力と同一方向以外の８本の入力信号を受信し、アービタ部９による指示にしたがって、受信した入力信号の１つを出力信号として出力する。出力された出力信号は、ルータ装置２０からのデータ出力のタイミングをそろえる出力ラッチ７を介して出力チャネル８へ出力される。
【００４７】
予約要求パケット生成部１３は、予約要求パケットを生成する。予約要求パケット生成部１３は、ルータ装置２０において予約が取れたか否かの情報をアービタ部９から受信して、予約が取れた場合には、他のパケット送出が行われていないタイミングにおいて、次段のルータへ予約要求パケットを送信する。セレクタ１４は、このために設けられたセレクタである。
【００４８】
図４は、本実施形態におけるアービタ部９の構成を示すブロック図である。図４を参照すると、アービタ部９は、セレクタアービタ５１、予約アービタ５２、予約テーブル５３、及び残カウンタ５６を有する。
【００４９】
セレクタアービタ５１は、入力ＦＩＦＯバッファ２からの通常のパケット調停要求６１、及び予約テーブル５３からの予約情報６２を受け取り、予約情報６２を優先してセレクタ６の信号を選択することができるような調停を行い、調停結果信号６３をセレクタ６へ出力する。
【００５０】
予約アービタ５２は、予約要求パケットに含まれる予約要求６４をルーティング部１１から受信し、予約テーブル５３の属性エントリ５４を参照して、通常パケットの到着のタイミングにおいてルータ装置２０が空いているか否かを判定する。ルータ装置２０が空いている場合には、予約アービタ５２は、属性エントリ５４を有効にセット（設定）し、通常パケットを受信する入力チャネル１を入力チャネルエントリ５５へ書き込む。
【００５１】
予約アービタ５２は、予約テーブル５３のエントリがあふれた場合には、残カウンタ５６の残数レジスタ５８へ適当な値を書き込む。予約が取れた場合には、予約アービタ５２は、予約が取れたことを通知する予約結果通知信号６６を予約要求パケット生成部１３へ送信する。予約要求パケット生成部１３は、予約結果通知信号６６を受信した場合には、次段のルータ装置に対して予約要求パケットを送信する。
【００５２】
図５及び図６は、本実施形態に係るルータ装置２０によって転送されるパケットのフォーマット（フリット構成）を示す図である。図５は、通常のパケットのフリット構成を示す。一方、図６は、予約要求パケットのフリット構成を示す。図５又は図６を参照すると、通常パケット又は予約要求パケットは、パケットボディ信号８１又は９１及びサイドバンド信号８２又は９２を含む。サイドバンド信号８２又は９２は、パケットボディ信号８１又は９１の属性を示し、一例として、次のフォーマットによってエンコードされる。
【００５３】
属性        パケットボディの意味
０ｂ０００  無効状態
０ｂ００１  予約要求パケット
０ｂ０１０  予約取り消しパケット
０ｂ０１１  未定義
０ｂ１００  通常パケット制御情報先頭
０ｂ１０１  通常パケットアドレス
０ｂ１１０  通常パケットデータ末尾
０ｂ１１１  通常パケットデータ中間
【００５４】
図６を参照すると、通常パケットは、複数のフリット０〜ｎから構成され、複数のサイクルにわたって転送される。サイドバンド信号８２が０ｂ１００であるフリットは、通常パケットの先頭のフリットであり、宛先アドレス８３、フリット長８４、及び制御情報８５を含む。サイドバンド信号８２が０ｂ１０１であるフリットは、アクセスアドレス８６及びアクセス属性８７を含む。サイドバンド信号８２が０ｂ１１０又は０ｂ１１１であるフリットは、パケットはデータ８８を含む。サイドバンド信号８２が０ｂ１１０であるフリットは、パケットの末尾のデータを含む。
【００５５】
図６を参照すると、予約要求パケットに相当するフリットのサイドバンド信号９２は０ｂ００１であり、フリットは、宛先アドレス９３、フリット長９４、及び先行サイクル数９５を含む。先行サイクル数９５は、予約要求パケットの到着から通常パケットの到着までの間のサイクル数を示す。
【００５６】
次に、タイミングチャートを参照して、本実施形態に係るルータ装置２０の動作について説明する。図７は、予約要求がない場合におけるルータ装置２０のパケットルーティング動作を示す。一方、図８は、予約要求が行われた場合におけるルータ装置２０のパケットルーティング動作を示す。
【００５７】
図７に示したルータ装置２０の動作は、従来のルータ装置の動作と同様である。まず、Ｔ１サイクルにおいて、先頭フリットが入力チャネル１に到着する。次に、Ｔ２サイクルにおいて、入力ラッチ１０は、このフリットをラッチし、ルーティング部１１は、この先頭フリットの宛先アドレス８３に基づいてルーティングを行い、このパケットをいずれの方向へ転送すべきかを決定する。
【００５８】
次に、Ｔ３サイクルにおいて、先頭フリットは入力ＦＩＦＯバッファ２に格納される。ここで、アービタ部９は、このパケットを出力すべき出力チャネル８が空いているか否かを判定し、空いている場合には、出力先に相当するセレクタ６を割り付ける。
【００５９】
次に、Ｔ４サイクルにおいて、先頭フリットは実際にセレクタ６を通過し、出力ラッチ７にラッチされる。さらに、Ｔ５サイクルにおいて、先頭フリットは出力される。後続のフリットは、先頭フリットとタイミングを合わせて、入力され、ルーティングがされ、出力される。図７を参照すると、パケットがルータ装置２０を通過するために、４サイクルの遅延が生じる。
【００６０】
次に、図８を参照して、予約要求パケットによる予約要求が行われた場合におけるルータ装置２０のパケットルーティングについて説明する。Ｔ１サイクルにおいて、予約要求パケットが到着する。予約要求パケットは通常パケットの先頭フリットが到着したときと同様に、Ｔ２サイクルにおいて、入力ラッチ１０によってラッチされる。ルーティング部１１は、この先頭フリット（すなわち、予約要求パケット）の宛先アドレス９３を参照してルーティングを行い、このパケットをいずれの方向へ転送すべきかを決定する。
【００６１】
次に、Ｔ３サイクルにおいて、予約アービタ５２は、予約要求パケットに含まれる先行サイクル数９５及びフリット長９４、並びに予約テーブル５３を参照して、通常パケットが到着するタイミングにおいて、出力チャネル８に空きがあるか否かを判定する。空きがある場合には、予約アービタ５２は、当該サイクルの属性エントリ５４を空き状態００から予約状態０１（先頭）、１１（中間）、１０（末尾）へ変更するとともに、入力チャネルエントリ５５へ入力チャネル１を記入する。予約が取れた場合には、予約アービタ５２は、予約が取れたことを示す予約結果通知信号６６と現在のセレクタアービタの状態を示す調停結果通知信号６５とを予約要求パケット生成部１３に送信する。予約要求パケット生成部１３は、予約結果通知信号６６に基づいて、次段のルータに対する予約要求パケットを生成する。生成された予約要求パケットは、セレクタ１４を経由して、出力ラッチ７によってラッチされる。
【００６２】
次に、Ｔ４サイクルにおいて、予約要求パケットは、次段のルータへ送信される。
【００６３】
次に、Ｔ５サイクルにおいて、通常パケットの先頭フリットが到着する。ルータ装置２０に対する予約が成立していることから、先頭フリットは、入力ラッチ１０及び入力ＦＩＦＯバッファ２を経由することなく、直接セレクタ６を経由する。したがって、先頭フリットは、Ｔ６サイクルにおいて出力ラッチ７にラッチされるとともに、Ｔ７サイクルにおいて出力チャネル８へ出力される。
【００６４】
図８を参照すると、通常パケットがルータ装置２０を通過する場合には、２サイクルの遅延が生じる。したがって、本実施形態のルータ装置２０によると、予約を行った場合には、予約を行わない場合と比較して２サイクル分遅延時間を短縮することができる。図８に示した例においては、ルータ装置２０を通過する前の予約要求パケットと通常パケットとの間隔は３サイクルであり、ルータ装置２０を通過した後の間隔は２サイクルである。短縮されるサイクル数は、Ｔ３サイクルにおいて予約が取れた時点において判明する。したがって、Ｔ４サイクルにおいて次段のルータへ送信される予約要求パケットに含まれる先行サイクル数９５を１減らして２サイクルとして送信する。先行サイクル数９５が１サイクル以下になった場合には、予約要求パケットを後段のルータに対して送信しないようにする。なぜなら、後段のルータにおいては、予約要求パケットに基づいて予約が行われる以前に通常パケットが到着するからである。
【００６５】
また、Ｔ３サイクルにおいて、ルータ装置２０に対して他の通常パケットの転送がすでに予約されている場合には、ルータ装置２０は、パケットの優先度に基づいて次のいずれかの処理を行う。
【００６６】
ルータ装置２０は、新たに到着した予約要求パケットを無効とし、新たに到着した予約要求パケットに対応する通常パケットについては通常のスケジューリングを行う（第１の処理）。このとき、ルータ装置２０は、次段のルータ装置に対して予約要求パケットを発行しない。
【００６７】
ルータ装置２０は、すでに予約されていたスケジュールを無効とし、すでに予約を行っていた通常パケットを通常パケットとして扱うとともに、新たに到着した予約要求パケットに基づいて新たな予約を行う（第２の処理）。このとき、ルータ装置２０は、次段のルータに対して予約要求パケットを発行する。
【００６８】
ルータ装置２０が第２の処理を行なった場合には、次段のルータ装置も同様の処理を行う。また、先に予約を行ったパケットと後に予約を行ったパケットとの間で宛先アドレス（ターゲットＩＰコア）が異なる場合には、先に予約を行ったパケットのルートと後に予約を行ったパケットのルートは途中から異なるルートとなる。これらのパケットに対するルートが同一のルートから異なるルートへと分岐する箇所に設けられたルータ装置２０は、同一の予約サイクルかつ同一の入力チャネル１に対する予約がすでにされていたことを、予約テーブル５３を参照することによって認識し、先の予約がなされていた出力チャネル８に対して、必要に応じて予約取り消しパケットを発行する。
【００６９】
次に、本実施形態に係るルータ装置２０の動作について、具体例に基づいて説明する。ここでは、一例として、図３に示す半導体集積回路装置２１において、ＩＰコアＩＰ０からＩＰコアＩＰ９への通信に対する予約要求パケットが発行されるとともに、ＩＰコアＩＰ４からＩＰコアＩＰ１３への通信に対する予約要求パケットも発行され、通常パケットの予約が競合する場合について考える。
【００７０】
ＩＰコアＩＰ０からＩＰコアＩＰ９へのパケットは、ＩＰコアＩＰ０→ルータＲ０→ルータＲ４→ルータＲ８→ルータＲ９→ＩＰコアＩＰ９というルートを経由するものとする。一方、ＩＰコアＩＰ４からＩＰコアＩＰ１３へのパケットは、ＩＰコアＩＰ４→ルータＲ４→ルータＲ８→ルータＲ１２→ルータＲ１３→ＩＰコアＩＰ１３というルートを経由するものとする。このとき、ルータＲ４とルータＲ８との間においてパケットの予約が競合しうる。
【００７１】
図９は、ルータ装置Ｒ４の予約テーブル５３の動作について説明するための図である図９は、ルータ装置Ｒ４において、先の予約が取り消される場合における予約テーブル５３の動作を示す。
【００７２】
Ｔ１サイクルにおいて、ＩＰコアＩＰ０からの予約要求パケットがルータＲ０を経由してルータＲ４に到着する。Ｔ１＋７サイクルにおいてフリット長６の通常パケットが到着する旨の情報が予約パケットに含まれている場合には、ルータ装置Ｒ４の予約アービタ５２は、そのタイミングにおける予約テーブル５３のエントリを参照する。
【００７３】
予約アービタ５２は、予約が可能であると判定し、Ｔ１サイクルの１サイクル後のＴ２サイクルにおいて、＋６〜＋１１サイクルに対応する属性エントリ１０１を有効とすると同時に、ルータ装置Ｒ０からの予約要求であるため、入力チャネルエントリ１０２をＮにセットする。同時に、ルータ装置Ｒ４は、次段のルータ装置Ｒ８に向けて予約要求パケットを発行する。
【００７４】
次に、Ｔ３サイクルにおいては、１サイクル進んだだめ、Ｎ方向の入力チャネル１ｎから入力を予約していた範囲は、＋５〜＋１０サイクルへシフトする。この時点で、ＩＰコアＩＰ４からの予約要求パケットがルータ装置Ｒ４に到着する。ルータ装置Ｒ４がＴ３サイクルから＋９〜＋１４サイクルにおいて通常パケットの予約を行おうとした場合には、Ｔ３サイクル＋９、１０サイクルにおいて先に予約されたＮ方向の入力チャネル１ｎに対する予約と競合する。
【００７５】
ここで、ＩＰコアＩＰ４によって発行された後の予約要求の優先度の方が先の予約要求の優先度よりも高い場合には、ルータ装置Ｒ４は、Ｔ３＋５〜＋１０サイクルにおけるＮ方向からの入力の予約を取り消して、新たにＩＰコアＩＰ４からの予約を行う。
【００７６】
Ｔ４サイクルにおいては、Ｔ４＋８〜＋１３サイクルに対してＩ方向の入力チャネル１ｉからの入力が新たに予約される。なお、優先度は、例えば、予約要求パケット又は予約テーブル５３に保持するようにしてもよく、又は、ルータ装置においてＩＰ４の優先度をつねに高く設定するようにしてもよい。
【００７７】
図１０は、ルータ装置Ｒ８の予約テーブル５３の動作について説明するための図である。図１０は、ルータ装置Ｒ８における先の予約の取り消しに伴う、他の方向に対する予約取消動作を説明するための図である。
【００７８】
図１０を参照すると、Ｔ４サイクルにおいて、ルータ装置Ｒ８へＩＰコアＩＰ０からの予約要求パケットが到着し、Ｔ５サイクルにおいて、ルータ装置Ｒ８のＥ方向（Ｒ９方向）の予約テーブル５３に対する予約が成立する。
【００７９】
しかし、Ｔ６サイクルにおいて、ルータ装置Ｒ８へＩＰコアＩＰ４からの予約要求パケットが到着することから、これらの予約要求パケットは、Ｔ６＋７、＋８サイクルにおいて競合し、ルータ装置Ｒ８はＩＰコアＩＰ０からの要求がキャンセルされたことを認識する。したがって、Ｔ７サイクルにおいては、Ｅ方向へ出力されるＩＰコアＩＰ０からの予約はキャンセルされる。ルータ装置Ｒ８は、これと同時に、Ｅ方向（Ｒ９方向）へ予約取消パケットを送出する。これによって、ルータ装置Ｒ９における予約も取り消される。
【００８０】
上記の動作により、ＩＰコアＩＰ０からの通常パケットは、予約を伴わないシーケンスに従ってネットワークを流れる。通常パケットを構成する複数のフリット間に、他のパケットを構成するフリットが挿入されることが許されない場合には、ＩＰコアＩＰ０からのパケットは、ＩＰコアＩＰ４によって予約された通常パケットの通過が完了するまで、ルータ装置Ｒ４の入力ＦＩＦＯバッファ２に留まる。
【００８１】
なお、予約テーブル５３のエントリ数には限りがあるため、図４に示したように、残カウンタ５６を設けることが好ましい。エントリ数の上限を超えて予約を行う場合には、残カウンタ５６の残数レジスタ５８に、エントリ数の上限を超えた数を記録する。図４は、一例として、エントリ数の上限（＋１６）を超えて４サイクルにわたって同一のパケットが続く場合を示す。このとき、予約アービタ５２は、残数レジスタ５８へ４をセットするとともに、最上限エントリ＋１６の入力チャネルエントリ５５と同一の入力チャネル（Ｓ）を入力チャネルエントリ５９へセットする。１サイクルごとに、残カウンタ５６はカウントダウンされ、予約テーブル５３の内容はシフトする。このとき、最上限エントリ＋１６に対し、属性生成部５７によって生成された属性とともに、入力チャネルエントリ５９の値がセットされる。これによって、エントリ数の上限を超えたルーティングの予約が可能となる。
【００８２】
（第３の実施形態）
本発明の第３の実施形態に係る半導体集積回路装置について、図面を参照して説明する。
【００８３】
上記の第２の実施形態に係る半導体集積回路装置２１においては、ネットワークは１系統のみであった。すなわち、通常パケットのみならず、予約要求パケット及び予約取消パケットもこの１系統のネットワーク介して送受信される。しかし、かかる構成によると、予約要求パケットと通常パケットとが競合することによって、パケットの転送効率が低下することが考えられる。そこで、予約要求パケットを通常パケットとは別のネットワークを介して送受信するようにしてもよい。
【００８４】
図１１は、本実施形態に係る半導体集積回路装置１２１の構成を示す図である。半導体集積回路装置１２１は、ネットワークオンチップ（ＮｏＣ）を２重化したシステムオンチップ（ＳｏＣ）である。半導体集積回路装置１２１においては、通常のネットワークと制御用ネットワークとが分離されている。
【００８５】
図１１を参照すると、半導体集積回路装置１２１は、ＩＰコアＩＰ０〜ＩＰ１５、ネットワークインタフェースＮＩＦ、メインルータ装置ＭＲ０〜ＭＲ１５、制御ルータ装置ＣＲ０〜ＣＲ１５、メイン通信チャネル１２５、及び、制御通信チャネル１２７を有する。
【００８６】
ＩＰコアＩＰ０〜ＩＰ１５は、それぞれネットワークインタフェースＮＩＦを介して、メイン通信チャネル１２５に接続されている。メインルータ装置ＭＲ０〜ＭＲ１５は、メイン通信チャネル１２５を通るパケットのルーティングを行い、パケットを所望の方向のメイン通信チャネル１２５へ送出する。
【００８７】
ネットワークインタフェースＮＩＦ及び制御ルータ装置ＣＲ０〜ＣＲ１５は、制御通信チャネル１２７を介して接続されている。メインルータ装置ＭＲ０〜ＭＲ１５は、それぞれ、制御ルータ装置ＣＲ０〜ＣＲ１５に接続されている。制御ルータ装置ＣＲ０〜ＣＲ１５は、制御通信チャネル１２７を通るパケットのルーティングを行う。制御用のネットワークに対して、予約要求パケット及び予約取消パケットを流すことによって、メインルータ装置ＭＲ０〜ＭＲ１５のパケットスケジューリングを予約し、又は取り消す。
【００８８】
制御用のネットワークは、フリット長の長いパケットを流す必要がないため、入力ＦＩＦＯバッファ（非図示）のエントリ数を少なくすることができる。また、制御通信チャネル１２７に対するビット幅をメイン通信チャネル１２５に対するビット幅と比較して削減することによって、制御通信チャネル１２７は、通常のネットワークよりも低コストに実現しうる。また、データフリットを伴わない、メモリに対するリード要求のようなアクセス要求パケットも、制御用のネットワークに流すことによって、ネットワークのトラフィックを好適化することができる。
【００８９】
なお、上記の実施形態においては、データを格納した通常パケットを発行する前に、予約要求パケットを発行する必要がある。しかし、ＩＰコアが外部メモリ又は内部メモリ（例えば、ＳＤＲＡＭ）に接続されている場合には、これらのデバイスへアクセス要求を行ってからデータが出力されるまでに数サイクルの期間を要する場合がある。これらのデバイスと接続されたネットワークインタフェースＮＩＦは、メモリアクセス要求を行うと同時に、予約要求パケットをネットワークに発行することが好ましい。データが得られる前に、ネットワークのルーティング及びスイッチの予約が完了することができるからである。このとき、ネットワークの遅延時間を隠蔽することができる。
【００９０】
以上の記載は実施形態に基づいて行ったが、本発明は、上記実施形態に限定されるものではない。
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【００９１】
なお、上記実施形態の一部又は全部は、以下の付記として記載することができるものであるが、これらに限定されるものではない。
【００９２】
（付記１）第１のパケットを受信するとともに該第１のパケットの宛先アドレス及び到着タイミングを含む第２のパケットを受信する受信部と、
前記第２のパケットに含まれる前記第１のパケットの宛先アドレスを参照して前記第１のパケットのルーティングを行うルーティング部と、
前記第２のパケットに含まれる前記第１のパケットの宛先アドレス及び到着タイミングを参照して前記第１のパケットに対するアービトレーションを行うアービタ部と、
前記ルーティング部によるルーティング及び前記アービタ部によるアービトレーションにしたがって前記第１のパケットを転送する転送部と、を備えていることを特徴とするルータ装置。
【００９３】
（付記２）前記第２のパケットは、前記到着タイミングとして前記第２のパケットを受信してから前記第１のパケットを受信するまでのサイクル数である先行サイクル数を含むとともに、前記第１のパケットのフリット長を含み、
前記アービタ部は、前記先行サイクル数及び前記フリット長に基づいて前記アービトレーションを行うことを特徴とする、付記１に記載のルータ装置。
【００９４】
（付記３）前記転送部は、前記第２のパケットに含まれる先行サイクル数を更新するとともに、前記ルーティング部によるルーティングにしたがって前記第２のパケットを後段のルータ装置へ転送することを特徴とする、付記２に記載のルータ装置。
【００９５】
（付記４）前記第２のパケットは、前記第１のパケットの優先度を含み、
前記アービタ部は、前記優先度に応じてアービトレーションを行うことを特徴とする、付記１乃至３のいずれか一に記載のルータ装置。
【００９６】
（付記５）前記アービタ部は、前記優先度に応じてアービトレーションを行った場合において、先行するアービトレーションを取り消したときには、前記第２のパケットが転送された後段のルータへその旨を通知することを特徴とする、付記４に記載のルータ装置。
【００９７】
（付記６）複数のＩＰコアと、
前記複数のＩＰコア間のパケットを転送する付記１乃至５のいずれか一に記載のルータ装置と、を備えていることを特徴とする半導体集積回路装置。
【００９８】
（付記７）前記複数のＩＰコア間を接続するとともに前記第１のパケットを転送する第１の通信チャネルと、
前記複数のＩＰコア間を接続するとともに第２のパケットを転送する第２の通信チャネルと、をさらに備えていることを特徴とする、付記６に記載の半導体集積回路装置。
【００９９】
（付記８）ルータ装置が、第１のパケットを受信する前に該第１のパケットの宛先アドレス及び到着タイミングを含む第２のパケットを受信する工程と、
前記第２のパケットに含まれる前記第１のパケットの宛先アドレスを参照して前記第１のパケットのルーティングを行う工程と、
前記第２のパケットに含まれる前記第１のパケットの宛先アドレス及び到着タイミングを参照して前記第１のパケットに対するアービトレーションを行う工程と、
前記ルーティング及び前記アービトレーションにしたがって前記第１のパケットを転送する工程と、を含むことを特徴とするルーティング方法。
【０１００】
（付記９）前記第２のパケットは、前記到着タイミングとして前記第２のパケットを受信してから前記第１のパケットを受信するまでのサイクル数である先行サイクル数を含むとともに、前記第１のパケットのフリット長を含み、
前記ルータ装置は、前記先行サイクル数及び前記フリット長に基づいて、前記アービトレーションを行うことを特徴とする、付記８に記載のルーティング方法。
【０１０１】
（付記１０）前記第２のパケットは、前記第１のパケットの優先度を含み、
前記ルータ装置は、前記優先度に応じて前記アービトレーションを行うことを特徴とする、付記８又は９に記載のルーティング方法。
【０１０２】
（付記１１）第１のパケットを受信する前に該第１のパケットの宛先アドレス及び到着タイミングを含む第２のパケットを受信する処理と、
前記第２のパケットに含まれる前記第１のパケットの宛先アドレスを参照して前記第１のパケットのルーティングを行う処理と、
前記第２のパケットに含まれる前記第１のパケットの宛先アドレス及び到着タイミングを参照して前記第１のパケットに対するアービトレーションを行う処理と、
前記ルーティング及び前記アービトレーションにしたがって前記第１のパケットを転送する処理と、をコンピュータに実行させることを特徴とするプログラム。
【０１０３】
（付記１２）前記第２のパケットは、前記到着タイミングとして前記第２のパケットを受信してから前記第１のパケットを受信するまでのサイクル数である先行サイクル数を含むとともに、前記第１のパケットのフリット長を含み、
前記先行サイクル数及び前記フリット長に基づいて、前記アービトレーションを行う処理をコンピュータに実行させることを特徴とする、付記１１に記載のプログラム。
【０１０４】
（付記１３）前記第２のパケットは、前記第１のパケットの優先度を含み、
前記優先度に応じて前記アービトレーションを行う処理をコンピュータに実行させることを特徴とする、付記１１又は１２に記載のプログラム。
【０１０５】
（付記１４）付記１１乃至１３のいずれか一に記載のプログラムが記録されていることを特徴とする、コンピュータ読み取り可能な記録媒体。
【符号の説明】
【０１０６】
１、１ｎ、１ｅ、１ｓ、１ｗ、１ｉ  入力チャネル
２、２ｎ、２ｅ、２ｓ、２ｗ、２ｉ  入力ＦＩＦＯバッファ
３、３ｎ、３ｅ、３ｓ、３ｗ、３ｉ  スルーライン
４、４ｎ、４ｅ、４ｓ、４ｗ、４ｉ  入力ＦＩＦＯバッファ出力チャネル
５  クロスバー
６、６ｎ、６ｅ、６ｓ、６ｗ、６ｉ、１２、１２ｎ、１２ｅ、１２ｓ、１２ｗ、１２ｉ、１４  セレクタ
７、７ｎ、７ｅ、７ｓ、７ｗ、７ｉ  出力ラッチ
８、８ｎ、８ｅ、８ｓ、８ｗ、８ｉ  出力チャネル
９、９ｎ、９ｅ、９ｓ、９ｗ、９ｉ、３３、５０  アービタ部
１０、１０ｎ、１０ｅ、１０ｓ、１０ｗ、１０ｉ  入力ラッチ
１１、１１ｎ、１１ｅ、１１ｓ、１１ｗ、１１ｉ、３２  ルーティング部
１３、１３ｎ、１３ｅ、１３ｓ、１３ｗ、１３ｉ  予約要求パケット生成部
２０、３０、Ｒ０〜Ｒ１５  ルータ装置
２１、１２１  半導体集積回路装置
２５、２０２  通信チャネル
３１  受信部
３４  転送部
５１  セレクタアービタ
５２  予約アービタ
５３  予約テーブル
５４、１０１  属性エントリ
５５、５９、１０２  入力チャネルエントリ
５６  残カウンタ
５７  属性生成部
５８  残数レジスタ
６０  減算ユニット
６１  入力ＦＩＦＯバッファからの調停要求
６２  予約情報
６３  調停結果信号
６４  予約要求
６５  調停結果通知信号
６６  予約結果通知信号
８１、９１  パケットボディ信号
８２、９２  サイドバンド信号
８３、９３  宛先アドレス
８４、９４  フリット長
８５  制御情報
８６  アクセスアドレス
８７  アクセス属性
８８  データ
８９  ライトバッファ
９５  先行サイクル数
１２５  メイン通信チャネル
１２７  制御通信チャネル
２０４  ＥＶＣ（Ｅｘｐｒｅｓｓ  Ｖｉｒｔｕａｌ  Ｃｈａｎｎｅｌ）
ＣＲ０〜ＣＲ１５  制御ルータ装置
ＩＰ０〜ＩＰ１５  ＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）コア
ＭＲ０〜ＭＲ１５  メインルータ装置
ＮＩＦ  ネットワークインタフェース
【図１】
0005488589.tif 000002
【図２】
0005488589.tif 000003
【図３】
0005488589.tif 000004
【図４】
0005488589.tif 000005
【図５】
0005488589.tif 000006
【図６】
0005488589.tif 000007
【図７】
0005488589.tif 000008
【図８】
0005488589.tif 000009
【図９】
0005488589.tif 000010
【図１０】
0005488589.tif 000011
【図１１】
0005488589.tif 000012
【図１２】
0005488589.tif 000013