(57)【要約】【課題】ＮｏＣを備えた半導体装置において、ネットワーク上のレイテンシの低減、またはスループットの向上を実現する。【解決手段】例えば、所定の処理を行う複数のコンポーネントＩＰ０〜ＩＰ７と、各コンポーネントにそれぞれ接続された複数のルータ回路Ｒ０〜Ｒ７と、各ルータ回路間を接続する複数の配線と、複数のルータ回路の有効・無効状態をリアルタイムに監視するルータ管理ユニットＳＯＣ＿ＮＡＶＩを備える。例えば、Ｒ０は、予め設計段階で定められ、Ｒ０を起点としてＲ１〜Ｒ７に到達するまでの経路情報をＲ１〜Ｒ７毎に単数または複数保持している。Ｒ０は、所定のコンポーネントに向けてレクエストを転送する際に、この経路情報にＳＯＣ＿ＮＡＶＩからの情報を反映させて最適な経路を探索する。【選択図】図１
2010109869.tif 000002
【特許請求の範囲】
【請求項１】
１つの半導体チップで実現され、
第１ルータ回路および第２ルータ回路を含む複数のルータ回路と、
前記第１ルータ回路に接続され、所定の処理を行う第１コンポーネントと、
前記第２ルータ回路に接続され、所定の処理を行う第２コンポーネントと、
前記第１ルータ回路と前記第２ルータ回路の間を前記複数のルータ回路の一部を介して接続する第１配線経路と、
前記第１ルータ回路と前記第２ルータ回路の間を前記複数のルータ回路の他の一部を介して接続する第２配線経路と、
前記複数のルータ回路に接続され、前記複数のルータ回路の有効・無効状態を命令サイクル毎に監視するルータ管理ユニットとを具備してなり、
前記第１ルータ回路は、前記第１コンポーネントから前記第２コンポーネントに向けた命令を受け付けた際に、前記ルータ管理ユニットから前記複数のルータ回路の有効・無効状態を入手し、これに基づいて前記第１配線経路か前記第２配線経路かを選択し、この選択した配線経路に前記命令に伴う信号群を転送することを特徴とする半導体装置。
【請求項２】
請求項１記載の半導体装置において、
前記複数のルータ回路のそれぞれは、前記命令に伴う信号群を一時的に保持するためのバッファ回路を備え、
前記ルータ管理ユニットは、前記複数のルータ回路の有効・無効状態として、前記複数のルータ回路内の前記バッファ回路におけるそれぞれの空きの有無を示すバッファ状態信号を第１記憶部に保持していることを特徴とする半導体装置。
【請求項３】
請求項２記載の半導体装置において、
前記複数のルータ回路のそれぞれは、更に、前記命令サイクル毎に前記バッファ回路に対してクロック信号を供給するクロック制御部を備え、
前記クロック制御部は、所定の条件を満たした際に前記クロック信号の供給を停止する第１機能を備え、
前記ルータ管理ユニットは、前記複数のルータ回路の有効・無効状態として、更に、前記複数のルータ回路内の前記第１機能で前記クロック信号の供給が停止しているか否かを示すクロック状態信号を前記第１記憶部に保持していることを特徴とする半導体装置。
【請求項４】
請求項３記載の半導体装置において、
前記ルータ管理ユニットは、前記バッファ状態信号により前記複数のルータ回路内の前記バッファ回路の空きの割合を判断し、これに応じて前記複数のルータ回路内の前記第１機能に向けて前記クロック信号の供給を再開させるための出力を生成する第２機能を備えることを特徴とする半導体装置。
【請求項５】
請求項１記載の半導体装置において、
前記複数のルータ回路のそれぞれは、自身を起点として自身以外のルータ回路を目的地として、予め設計段階で定められる前記目的地に到達するまでの前記目的地毎の単数または複数の配線経路を第２記憶部に保持していることを特徴とする半導体装置。
【請求項６】
請求項５記載の半導体装置において、
前記第２記憶部には、前記目的地毎の単数または複数の配線経路と共に、この配線経路毎の経路長として、前記目的地に到達するまでに経由するルータ回路の個数が保持されていることを特徴とする半導体装置。
【請求項７】
請求項６記載の半導体装置において、
前記第１配線経路の前記経路長が前記第２配線経路の前記経路長よりも短い場合、
前記第１ルータ回路は、前記第１配線経路上で１番目に通過するルータ回路が有効である際には前記第１配線経路を選択し、前記第１配線経路上で１番目に通過するルータ回路が無効である際には、前記第２配線経路上で順に通過する、前記第１配線経路の前記経路長と前記第２配線経路の前記経路長との差分値を反映した数のルータ回路が全て有効である場合に前記第２配線経路を選択することを特徴とする半導体装置。
【請求項８】
請求項６記載の半導体装置において、
前記第２記憶部には、予め定めた最大値以下となる数の経路が前記目的地毎に保持されており、前記最大値以下となる数の経路は、前記経路長が短い順で定められていることを特徴とする半導体装置。
【請求項９】
請求項１記載の半導体装置において、
前記複数のルータ回路のそれぞれは、同一命令サイクルにおいて自身以外の２つ以上のルータ回路から前記命令を受けた際に、いずれを優先して受け付けるかを判定する調停回路を有することを特徴とする半導体装置。
【請求項１０】
請求項１記載の半導体装置において、
前記半導体チップからなる第１半導体チップと、
前記半導体チップからなり、前記第１半導体チップに積層搭載された第２半導体チップを備え、
前記第１半導体チップ内に含まれる前記複数のルータ回路の少なくとも一つは、前記第２半導体チップ内に含まれる前記複数のルータ回路の少なくとも一つと接続され、
前記第１半導体チップ内に含まれる前記ルータ管理ユニットとなる第１ルータ管理ユニットは、前記第２半導体チップ内に含まれる前記ルータ管理ユニットとなる第２ルータ管理ユニットと接続され、前記第２ルータ管理ユニットを介して、前記第２半導体チップ内に含まれる前記複数のルータ回路の少なくとも一つの有効・無効状態を監視することを特徴とする半導体装置。
【請求項１１】
第１ルータ回路および第２ルータ回路と、
前記第１ルータ回路と前記第２ルータ回路とを接続する第１配線経路上に設けられたｎ（ｎ≧１）個のルータ回路と、
前記第１ルータ回路と前記第２ルータ回路とを接続する第２配線経路上に設けられたｍ（ｍ≧ｎ）個のルータ回路とを具備してなり、
前記第１ルータ回路から前記第２ルータ回路に向けてデータ転送を行う際に、前記第１ルータ回路は、前記第１配線経路上で１番目に通過するルータ回路が有効である場合は、前記第１配線経路を選択し、前記第１配線経路上で最初に通過するルータ回路が無効である場合は、前記第２配線経路上で順に通過する、（ｍ−ｎ）の値を反映した数のルータ回路が全て有効である場合に前記第２配線経路を選択することを特徴とする半導体装置。
【請求項１２】
請求項１１記載の半導体装置において、
前記第１ルータ回路は、前記第１配線経路上で最初に通過するルータ回路が無効である場合は、前記第２配線経路上で（ｍ−ｎ＋１）番目までに通過するルータ回路が全て有効である場合に前記第２配線経路を選択することを特徴とする半導体装置。
【請求項１３】
請求項１１記載の半導体装置において、
前記第１ルータ回路は、前記第１配線経路上で最初に通過するルータ回路が無効である場合は、（ｍ−ｎ）＝１の際には前記第２配線経路上で１番目に通過するルータ回路が有効である場合に前記第２配線経路を選択し、（ｍ−ｎ）＞１の際には前記第２配線経路上で（ｍ−ｎ）番目までに通過するルータ回路が全て有効である場合に前記第２配線経路を選択することを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、特に、ネットワークインターフェースによって多数のマスタコンポーネントとスレーブコンポーネントを接続するＮｏＣ（ネットワーク・オン・チップ）を備えたＳｏＣ（システム・オン・チップ）のような半導体装置に適用して有効な技術に関する。
【背景技術】
【０００２】
図２に、インターネットで一般的に知られている経路探索方式と、その利点および欠点を示す。図２に示すように、インターネットでは、経路を固定したスタティック・ルーティング方式と、経路を動的に変更するダイナミック・ルーティング方式が知られている。例えば、ダイナミック・ルーティング方式では、障害等により利用不可となった経路を回避できる一方、設定ミスや機器障害により誤った経路情報がアナウンスされると、ネットワーク全体に波及し、最悪ネットワークがダウンする欠点がある。
【０００３】
また、例えば、特許文献１には、複数のイニシエータとターゲットが接続される２個のバスの間に、各バスのトラフィック状態を監視するトラフィック監視ユニットを備えたデータ処理装置が示されている。トラフィック監視ユニットは、各イニシエータに対して送信された各バス毎のバスグラント信号の発生期間を積分することでいずれのバスが混雑しているか等を判断し、この判断結果に基づいた一方のバスを介してイニシエータからターゲットに向けたデータ転送が行われるように各種切り換えを行う。
【特許文献１】特開２００７−０２６２８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
近年、ＳｏＣに搭載されるＩＰ（インテレクチャル・プロパティ）の数の増加に伴い、それらのＩＰを接続するＮｏＣの構成要素であるルータ回路の個数も増大し、ルータ回路同士の接続関係も複雑化している。ここで、問題となるのは、どのルータ回路を経由してデータのやり取りを行うかであり、経路の選択によっては、レイテンシが増大し、スループットの低下をも招く。
【０００５】
このような問題を解決するため、例えば、特許文献１の技術を応用することが考えられる。すなわち、特許文献１の技術は、各バスにおける過去のアクセス頻度を監視し、最適なバスを選択する方式となっているが、これを応用して、ルータ回路に対する過去のアクセス頻度を監視し、これに基づいてアクセス頻度の少ないルータ回路を介する経路を選択するような方式が考えられる。しかしながら、この方式では、過去のアクセス頻度に基づいて経路選択が行われるため、ＳｏＣで行う処理内容（すなわちアプリケーション）によっては必ずしも最適経路とはならず、レイテンシが増大する虞がある。つまり、例えば、ＳｏＣを汎用的な処理装置として用いた場合、アプリケーションが変わると最適経路も異なるため、必ずしも過去のアクセス頻度が有効活用できるとは限らない。さらに、特許文献１の技術では、バス同士の接続は考慮する必要がないが、ＮｏＣを備えたＳｏＣでは、ルータ回路同士の接続関係を考慮して最適経路を選択する必要があるため、これを効率的に実現する新たな仕組みが求められる。
【０００６】
本発明は、このようなことを鑑みてなされたものであり、その目的の一つは、ＮｏＣを備えた半導体装置において、ネットワーク上のレイテンシの低減、またはスループットの向上を実現することにある。なお、本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
本願において開示される発明のうち、代表的な実施の形態の概要を簡単に説明すれば、次のとおりである。
【０００８】
本実施の形態による半導体装置は、リクエストを発行するマスタコンポーネントと、このリクエストを受信するスレーブコンポーネントと、マスタコンポーネントとスレーブコンポーネント間の複数の経路上に存在する複数のルータ回路と、この複数のルータ回路の有効・無効状態をリアルタイムに監視するルータ管理ユニットとを備えている。マスタコンポーネントに接続されたルータ回路は、スレーブコンポーネントに接続されたルータ回路に向けてリクエストを送信する際に、ルータ管理ユニットから複数のルータ回路の有効・無効状態を入手し、これに基づいて複数の経路の中から１つの経路を選択する。
【０００９】
このように、ルータ回路は、各経路上のルータ回路のリアルタイムな有効・無効情報に基づいて最適な経路探索を行えるため、各ルータ回路間を接続するネットワーク上のレイテンシの低減、またはスループットの向上が実現可能になる。ここで、各ルータ回路の有効・無効状態を示す信号には、各ルータ回路内のバッファ回路が空きか否かを示すバッファ状態信号が含まれる。また、各ルータ回路は、条件に応じて自身の動作クロック信号の供給を停止する機能を備え、各ルータ回路の有効・無効状態を示す信号には、バッファ状態信号に加えて、この動作クロック信号の供給が停止されているか否かを示すクロック状態信号が含まれる。ルータ管理ユニットは、このような各ルータ回路の有効・無効状態を示す信号を内部の記憶部に保持し、これらをリアルタイムに（各クロックサイクル毎に）更新する。
【００１０】
また、各ルータ回路は、内部の記憶部に、自身を起点として自身以外のルータ回路を目的地として、各目的地に到達するまでの経路情報を各目的地毎に単数または複数保持している。各ルータ回路は、この経路情報に前述した各ルータ回路の有効・無効状態を反映させて最適な経路を探索する。この経路情報は、半導体装置の設計段階で予め定めることができるため、ダイナミック・ルーティング方式を採用するものの誤った経路情報がアナウンスされるようなことはない。これによっても、ネットワーク上のレイテンシの低減、またはスループットの向上が実現可能になる。
【発明の効果】
【００１１】
本願において開示される発明のうち、代表的な実施の形態によって得られる効果を簡単に説明すると、ＮｏＣを備えた半導体装置において、ネットワーク上のレイテンシの低減、またはスループットの向上が実現可能になる。
【発明を実施するための最良の形態】
【００１２】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【００１３】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００１４】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１５】
（実施の形態１）
図１は、本発明の実施の形態１による半導体装置において、その構成の一例を示すブロック図である。図１に示す半導体装置ＳＯＣは、複数（ここでは８個）のコンポーネントＩＰ０〜ＩＰ７と、各コンポーネントにそれぞれ対応する複数（ここでは８個）のルータ回路Ｒ０〜Ｒ７と、ルータ管理ユニット（ＳｏＣナビゲータ）ＳＯＣ＿ＮＡＶＩを備えたものとなっている。各コンポーネントＩＰ０〜ＩＰ７は、転送要求を行うことが可能なマスタコンポーネント、または、転送要求に応答することが可能なスレーブコンポーネント、あるいは、その両方となる。
【００１６】
ルータ回路Ｒ０は、ＩＰ０に接続されると共に、他のルータ回路Ｒ１〜Ｒ７の一部または場合によっては全部に接続される。ここでは、半導体装置内部における各ルータ回路間の配線を容易に形成するため、各ルータ回路は、比較的自身の近辺に配置された一部のルータ回路のみに接続されるものとしている。例えば、Ｒ０は、その近辺に配置されたＲ２とＲ１とＲ４に接続される。ルータ回路Ｒ１〜Ｒ７も同様に、それぞれ、対応するコンポーネントＩＰ１〜ＩＰ７に接続されると共に、近辺に配置された複数のルータ回路に接続される。ルータ管理ユニットＳＯＣ＿ＮＡＶＩは、全てのルータ回路Ｒ０〜Ｒ７に接続され、各ルータ回路の利用状況を管理する。各ルータ回路Ｒ０〜Ｒ７のそれぞれは、詳細は後述するが、ＳＯＣ＿ＮＡＶＩとの間の通信情報を利用してリアルタイムに経路選択を行う第１機能や、各コンポーネントＩＰ０〜ＩＰ７からの転送要求の優先順位に基づいて調停を行う第２機能などを備えている。
【００１７】
図３は、図１の半導体装置において、その各ルータ回路を経由するパケットデータ（インタフェース信号）の基本構造例を示す説明図である。図３に示すパケットデータ（インタフェース信号）は、それぞれ任意のビット幅を備えたヘッダ（ＨＤ）およびデータ（ＤＡＴ）からなる。ヘッダ（ＨＤ）は、パケットＩＤ（ＰＫＴ＿ＩＤ）、転送元のソースＩＤ（ＳＲＣ＿ＩＤ）、前回経由したルータ回路を表すミドルＩＤ（ＭＩＤ＿ＩＤ）、転送先のデスティネーションＩＤ（ＤＳＴ＿ＩＤ）、ヘッダとデータの合計サイズとなるパケットサイズ（ＰＫＴ＿ＳＩＺＥ）、プライオリティ（ＰＲＩ）、オペコード（ＯＰＣ）、任意に拡張できる拡張ヘッダ（ＥＸＴ）によって構成される。
【００１８】
ＳＲＣ＿ＩＤ、ＤＳＴ＿ＩＤ、ＭＩＤ＿ＩＤは、半導体装置内部にコンポーネントＩＰおよびルータ回路Ｒを幾つ設けるかに応じて所定のビット幅に定められる。また、ＰＫＴ＿ＳＩＺＥ、ＰＲＩ、ＯＰＣは、半導体装置の仕様に応じて所定のビット幅に定められる。詳細は後述するが、ＭＩＤ＿ＩＤは、自己ループの有無を判定する際に用いられ、ＰＲＩは、あるルータ回路に対して異なるコンポーネントまたはルータ回路から同時に転送要求などが来た場合にどれを優先するかを決定するために用いられる。また、ＰＫＴ＿ＳＩＺＥは、例えば、何サイクルに渡ってパケットデータが転送されるかを識別するために使用され、ＯＰＣは、転送先となるコンポーネントに対して発行する命令コードとなる。なお、ＥＸＴは、必ずしも設ける必要はなく、また、ＰＲＩも、予め固定的に優先順位を定めておけば、省略可能である。
【００１９】
図４は、図１の半導体装置において、マスタコンポーネントとスレーブコンポーネント間の通信方式の一例を模式的に示すものであり、（ａ）は転送要求の際の模式図、（ｂ）は（ａ）の転送要求に対して応答を行う際の模式図である。実際には、図１に示したように、マスタコンポーネントとスレーブコンポーネントの間で複数のルータ回路を経由した通信が行われる場合があるが、ここでは、簡素化のため１個のルータ回路を経由するものとする。なお、複数のルータ回路を経由する場合は、図４（ａ），（ｂ）において、ルータ回路Ｒの後段に更にルータ回路が挿入されることになる。ただし、この場合でも、後述するように、コンポーネントおよびルータ回路に関わらずパケットデータの構造やその送受信手順は固定であるため、後段に挿入されたルータ回路は、図４（ａ），（ｂ）の各ルータ回路Ｒと同様の信号の流れとなる。
【００２０】
図４（ａ）において、マスタコンポーネントＩＰ＿Ｍは、ルータ回路Ｒに向けて、転送要求信号（ＲＥＱ）と共に、パケットＩＤ（ＰＫＴ＿ＩＤ）、転送元のソースＩＤ（ＳＲＣ＿ＩＤ）、前回経由したルータ回路を表すミドルＩＤ（ＭＩＤ＿ＩＤ）、転送先のデスティネーションＩＤ（ＤＳＴ＿ＩＤ）、ヘッダとデータの合計サイズ（ＰＫＴ＿ＳＩＺＥ）、データ（ＤＡＴ）、優先度を表すプライオリティ（ＰＲＩ）、オペコード（ＯＰＣ）を送信する。ルータ回路Ｒは、この転送要求を許可する場合、ＩＰ＿Ｍに向けて転送許可信号（ＧＮＴ）を送信し、このＩＰ＿Ｍから転送されたパケットデータ（ＰＫＴ＿ＩＤ，ＳＲＣ＿ＩＤ，ＭＩＤ＿ＩＤ，ＤＳＴ＿ＩＤ，ＰＫＴ＿ＳＩＺＥ，ＤＡＴ，ＰＲＩ，ＯＰＣ）を内部に保持する。次いで、ルータ回路Ｒは、スレーブコンポーネントＩＰ＿Ｓに向けて、転送要求信号（ＲＥＱ）と共に、前述したＩＰ＿Ｍからの転送に伴って保持しているパケットデータを送信する。なお、このＩＰ＿Ｓに向けて送信を行う際に、ルータ回路Ｒは、ＭＩＤ＿ＩＤを自身のＩＤに書き換えて送信を行う。そして、ＩＰ＿Ｓは、このルータ回路Ｒからの転送要求を許可する場合、ルータ回路Ｒに向けて転送許可信号（ＧＮＴ）を送信し、この転送されたパケットデータにおけるオペコード（ＯＰＣ）やデータ（ＤＡＴ）に応じた処理を行う。
【００２１】
スレーブコンポーネントＩＰ＿Ｓは、前述したＩＰ＿Ｍからの要求に応じた所定の処理を終えると、図４（ｂ）に示すように、ルータ回路Ｒに向けて、転送応答信号（ＲＥＳ）と共に、パケットＩＤ（ＰＫＴ＿ＩＤ）、転送元のソースＩＤ（ＳＲＣ＿ＩＤ）、前回経由したルータ回路を表すミドルＩＤ（ＭＩＤ＿ＩＤ）、転送先のデスティネーションＩＤ（ＤＳＴ＿ＩＤ）、ヘッダとデータの合計サイズ（ＰＫＴ＿ＳＩＺＥ）、レスポンスデータ（Ｒ＿ＤＡＴ）、プライオリティ（ＰＲＩ）、レスポンスオペコード（Ｒ＿ＯＰＣ）を送信する。ルータ回路Ｒは、この転送応答を許可する場合、ＩＰ＿Ｓに向けて転送応答許可信号（Ｒ＿ＧＮＴ）を送信し、このＩＰ＿Ｓから転送されたパケットデータ（ＰＫＴ＿ＩＤ，ＳＲＣ＿ＩＤ，ＭＩＤ＿ＩＤ，ＤＳＴ＿ＩＤ，ＰＫＴ＿ＳＩＺＥ，Ｒ＿ＤＡＴ，Ｒ＿ＯＰＣ）を内部に保持する。以降も、図４（ａ）の場合と逆の信号の流れで、ルータ回路ＲとＩＰ＿Ｍとの間で同様の通信が行われる。
【００２２】
図５は、図１の半導体装置において、各ルータ回路の概要構成例を示すものであり、（ａ）はマスタ機能とスレーブ機能を備えたコンポーネントに対応するルータ回路の概略図、（ｂ）はスレーブ機能を備えたコンポーネントに対応するルータ回路の概略図である。図５（ａ）に示すルータ回路Ｒ０は、それに対応するコンポーネントＩＰ０がマスタ機能とスレーブ機能を備えるものとして、リクエスト処理回路ＲＴＣＴＬ＿ＲＥＱ０と、レスポンス処理回路ＲＴＣＴＬ＿ＲＥＳ０を備えている。また、図５（ｂ）に示すルータ回路Ｒ４は、それに対応するコンポーネントＩＰ４がスレーブ機能のみを備えるものとして、リクエスト処理回路ＲＴＣＴＬ＿ＲＥＱ４と、レスポンス処理回路ＲＴＣＴＬ＿ＲＥＳ４を備えている。
【００２３】
図５（ａ）において、ＲＴＣＴＬ＿ＲＥＱ０は、４個の入力ポートと４個の出力ポートを備え、各入力ポートに、それぞれ、コンポーネントＩＰ０とルータ回路Ｒ１，Ｒ２，Ｒ４が接続され、各出力ポートにも、それぞれ、ＩＰ０とＲ１，Ｒ２，Ｒ４が接続される。４個の入力ポートのそれぞれには、図４で説明したリクエスト系のパケットデータが入力され、ＲＴＣＴＬ＿ＲＥＱ０は、その内の１個のパケットデータを選択すると共に４個の出力ポートのいずれか１個を選択し、この選択した１個のパケットデータを、選択した出力ポートから出力する。同様に、ＲＴＣＴＬ＿ＲＥＳ０も、４個の入力ポートと４個の出力ポートを備え、各入力ポートに、それぞれ、ＩＰ０とＲ１，Ｒ２，Ｒ４が接続され、各出力ポートにも、それぞれ、ＩＰ０とＲ１，Ｒ２，Ｒ４が接続される。４個の入力ポートのそれぞれには、図４で説明したレスポンス系のパケットデータが入力され、ＲＴＣＴＬ＿ＲＥＳ０は、その内の１個のパケットデータを選択すると共に４個の出力ポートのいずれか１個を選択し、この選択した１個のパケットデータを、選択した出力ポートから出力する。
【００２４】
一方、図５（ｂ）において、ＲＴＣＴＬ＿ＲＥＱ４は、３個の入力ポートと４個の出力ポートを備え、各入力ポートに、それぞれ、ルータ回路Ｒ０，Ｒ３，Ｒ５が接続され、各出力ポートに、それぞれ、コンポーネントＩＰ４とＲ０，Ｒ３，Ｒ５が接続される。３個の入力ポートのそれぞれには、図４で説明したリクエスト系のパケットデータが入力され、ＲＴＣＴＬ＿ＲＥＱ４は、その内の１個のパケットデータを選択すると共に４個の出力ポートのいずれか１個を選択し、この選択した１個のパケットデータを、選択した出力ポートから出力する。また、ＲＴＣＴＬ＿ＲＥＳ４は、４個の入力ポートと３個の出力ポートを備え、各入力ポートに、それぞれ、ＩＰ４とＲ０，Ｒ３，Ｒ５が接続され、各出力ポートに、それぞれ、Ｒ０，Ｒ３，Ｒ５が接続される。４個の入力ポートのそれぞれには、図４で説明したレスポンス系のパケットデータが入力され、ＲＴＣＴＬ＿ＲＥＳ４は、その内の１個のパケットデータを選択すると共に３個の出力ポートのいずれか１個を選択し、この選択した１個のパケットデータを、選択した出力ポートから出力する。
【００２５】
この図４および図５（ａ），（ｂ）のようにリクエスト系の処理回路（ＲＴＣＴＬ＿ＲＥＱ）とレスポンス系の処理回路（ＲＴＣＴＬ＿ＲＥＳ）を分離した構成は、スプリットトランザクションと呼ばれ、面積オーバーヘッドがあるものの、処理効率を高めることが可能となる。なお、高い処理効率が必要でなければ、リクエストとレスポンスを区別せずに（例えば、転送応答信号（ＲＥＳ）を転送要求信号（ＲＥＱ）とみなして）、１つの処理回路で共用するルータ構成とすることも可能である。
【００２６】
図６は、図５のルータ回路において、そのリクエスト処理回路ＲＴＣＴＬ＿ＲＥＱの詳細な構成例を示すブロック図である。図６に示すリクエスト処理回路ＲＴＣＴＬ＿ＲＥＱは、入力セレクタＳＥＬ＿Ｉ、入力バッファＢＵＦ＿Ｉ、リクエスト調停回路ＡＲＢ、出力バッファＢＵＦ＿Ｏ、出力セレクタＳＥＬ＿Ｏ、経路情報保持・算出回路ＲＴＣＡＬ、ローカルバッファ管理ユニットＢＵＦ＿ＣＴＬ、クロック制御回路ＣＫ＿ＣＴＬを備えている。ＳＥＬ＿Ｉには、入力ポート６１０を介して、図５（ａ），（ｂ）に示したように、複数のルータ回路Ｒからのパケットデータ（ＰＫＴ＿ＩＤ，ＳＲＣ＿ＩＤ，ＭＩＤ＿ＩＤ，ＤＳＴ＿ＩＤ，ＰＫＴ＿ＳＩＺＥ，ＤＡＴ，ＰＲＩ，ＯＰＣ）や、加えてコンポーネントＩＰからのパケットデータが入力される。そして、この複数のパケットデータの中のいずれか１個がＢＵＦ＿ＣＴＬからの指示によって選択され、それが入力バッファＢＵＦ＿Ｉに転送される。
【００２７】
入力バッファＢＵＦ＿Ｉに転送されたパケットデータは、ＢＵＦ＿ＣＴＬの指示に基づいて出力バッファＢＵＦ＿Ｏに転送される。出力セレクタＳＥＬ＿Ｏは、経路情報保持・算出回路ＲＴＣＡＬからの指示に基づいて出力ポート６１５の選択を行い、ＢＵＦ＿Ｏに転送されたパケットデータを、この選択された出力ポートから出力する。出力ポートには、図５（ａ），（ｂ）に示したように、コンポーネントＩＰと複数のルータ回路Ｒが接続されており、この中のいずれかが選択される。
【００２８】
ローカルバッファ管理ユニットＢＵＦ＿ＣＴＬは、複数のルータ回路Ｒからの転送要求信号（ＲＥＱ）（即ち自身以外のコンポーネントＩＰからのＲＥＱ）や、加えて自身に対応するコンポーネントＩＰからのＲＥＱを受け、その中のいずれか１個を許可する。この際には、各ＲＥＱに対応するプライオリティＰＲＩを参照し、調停回路ＡＲＢを用いて最も優先順位が高いＲＥＱを判断すると共に、ＢＵＦ＿ＩやＢＵＦ＿Ｏの空きの有無も確認した上で、この最も優先順位が高いＲＥＱを許可する。そして、この許可したＲＥＱに対応するルータ回路ＲまたはコンポーネントＩＰに向けて転送許可信号（ＧＮＴ）を送信する。
【００２９】
また、ＢＵＦ＿ＣＴＬは、例えば、自身に向けた全てのＲＥＱが発行されておらず、かつ、入力バッファＢＵＦ＿Ｉと出力バッファＢＵＦ＿Ｏにパケットデータが滞留していない場合に、その期間を内部に備えたカウンタでカウントする。そして、ＢＵＦ＿ＣＴＬは、そのカウント値を予め定めたしきい値と比較して、しきい値に達した場合にクロック制御回路ＣＫ＿ＣＴＬに向けてスタンバイ指示信号６１３を出力する。ＣＫ＿ＣＴＬは、ＢＵＦ＿Ｉ，ＢＵＦ＿Ｏ，ＢＵＦ＿ＣＴＬおよびＲＴＣＡＬ等に対して動作クロックを供給しているが（以降、この状態をクロックオンと呼ぶ）、このスタンバイ指示信号６１３を受けた際には、この動作クロックの供給を停止する（以降、この状態をクロックオフと呼ぶ）。これによって、当該ルータ回路は、省電力モードとなる。また、省電力モードとなった際に、ＣＫ＿ＣＴＬは、ＳＯＣ＿ＮＡＶＩに向けて、クロックオフ信号６１２ａを用いて省電力モードとなったことを通知する。また、ＣＫ＿ＣＴＬは、例えば、ＳＯＣ＿ＮＡＶＩからクロックオン信号６１２ｂを受けた際には、動作クロックの供給を再開する。
【００３０】
さらに、ＢＵＦ＿ＣＴＬは、当該ルータ回路におけるバッファの状態が「空」か「満」かを監視し、この監視結果をバッファ状態信号６１７を用いてＳＯＣ＿ＮＡＶＩに通知する。ここで、ルータ回路のバッファ状態が「空」とは、入力バッファＢＵＦ＿Ｉがパケットデータを受け付ける状態であることを示し、例えば、ＢＵＦ＿Ｉにパケットデータが詰まっている状態でも、後段の出力バッファＢＵＦ＿Ｏがパケットデータを受け付けることが出来る状態であれば、「空」の状態である。一方、ルータ回路のバッファ状態が「満」とは、ＢＵＦ＿Ｉがパケットデータを受け付けることができない状態である。
【００３１】
なお、前述した動作クロックを供給または停止する機能は、必ずしも必要という訳ではないが、半導体装置ＳＯＣ内に多数のＩＰが含まれるほど、消費電力の問題がより顕著なものとなるため、設ける方が望ましい。また、この動作クロックを供給または停止する方式は、前述したような方式に限定されるものではなく、適宜変更可能である。例えば、ＳＯＣ＿ＮＡＶＩが、ローカルバッファ管理ユニットＢＵＦ＿ＣＴＬからの６１７を監視し、一定の期間「空」の状態が続いた場合には、クロック制御回路ＣＫ＿ＣＴＬに向けて動作クロックの供給を停止するよう指示するような方式でもよい。
【００３２】
経路情報保持・算出回路ＲＴＣＡＬは、当該ルータ回路を起点として目的地となるコンポーネントに辿り着くまでの単数または複数の経路情報を、内部に備えた記憶部（例えばレジスタ）に保持している。ＲＴＣＡＬは、詳細は後述するが、ＳＯＣ＿ＮＡＶＩより、当該ルータ以外の全ルータ回路におけるルータ回路の状態（「空」または「満」）ならびに動作クロックの供給または停止状態を他ルータ監視信号６１６を介して受け取り、これらの情報と前述した経路情報とを見比べながら、最適となる経路を決定する。出力セレクタＳＥＬ＿Ｏは、この決定に基づいて出力ポート６１５の選択を行う。
【００３３】
このように、図６においては、リクエスト処理回路ＲＴＣＴＬ＿ＲＥＱの構成例を示したが、図５（ａ），（ｂ）におけるレスポンス処理回路ＲＴＣＴＬ＿ＲＥＳも同様な構成となる。ただし、レスポンス処理回路ＲＴＣＴＬ＿ＲＥＳの場合は、そのローカルバッファ管理ユニットＢＵＦ＿ＣＴＬが、転送応答信号（ＲＥＳ）を入力として、転送応答許可信号（Ｒ＿ＧＮＴ）を出力することになる。また、入力ポート６１０には、データ（ＤＡＴ）やオペコード（ＯＰＣ）の代わりに、レスポンスデータ（Ｒ＿ＤＡＴ）やレスポンスオペコード（Ｒ＿ＯＰＣ）が入力されることになる。なお、クロック制御回路ＣＫ＿ＣＴＬは、ＲＴＣＴＬ＿ＲＥＱとＲＴＣＴＬ＿ＲＥＳとで個別に設けるか、場合によっては共通で設けることも可能である。
【００３４】
図７（ａ），（ｂ）は、図６のリクエスト処理回路ＲＴＣＴＬ＿ＲＥＱにおいて、それぞれ異なるルータ回路内の経路情報保持・算出回路ＲＴＣＡＬが保持している経路テーブルの構造例を示した概略図である。図７（ａ）は、ルータ回路Ｒ０内のリクエスト処理回路ＲＴＣＴＬ＿ＲＥＱ０が備える経路テーブルであり、図７（ｂ）は、ルータ回路Ｒ１内のリクエスト処理回路（ＲＴＣＴＬ＿ＲＥＱ１）が備える経路テーブルである。なお、この経路テーブルは、図１の半導体装置ＳＯＣを例としたものである。
【００３５】
図７（ａ）に示すように、ルータ回路Ｒ０内の経路情報保持・算出回路ＲＴＣＡＬは、ルータ回路Ｒ０を起点として、他のルータ回路Ｒ１〜Ｒ７に到達するまでの経路を各レジスタＲＥＧに備えている。例えば、レジスタＲＥＧ０１＿ｘｘは、Ｒ０からＲ１に到達する経路を保持し、同様に、レジスタＲＥＧ０６＿ｘｘは、Ｒ０からＲ６に到達する経路を保持する。また、例えば、レジスタＲＥＧ０６＿ｘｘにおいて、「ｘｘ」がＲＴ１となるレジスタＲＥＧ０６＿ＲＴ１は、１番目の候補となる経路を保持し、ＲＴ２となるレジスタＲＥＧ０６＿ＲＴ２は、２番目の候補となる経路を保持し、ＲＴ３となるレジスタＲＥＧ０６＿ＲＴ３は、３番目の候補となる経路を保持する。
【００３６】
また、各レジスタＲＥＧ０６＿ＲＴ１〜ＲＥＧ０６＿ＲＴ３は、目的地に到達するまでのルータ回路の経由回数（すなわち経路長）を保持している。ここでは、経路長が、１番目の経路≦２番目の経路≦３番目の経路の順で短くなっている。さらに、この経路テーブルでは、ある目的地までの経路に関して３個以下の候補を備えるものとし、少なくとも１番目の経路と２番目の経路とでは、最初に通過するルータ回路が異なるものとしている。最初に通過するルータ回路は、例えば、ＲＥＧ０６＿ＲＴ１ではＲ２であり、ＲＥＧ０６＿ＲＴ２ではＲ１である。また、図７（ｂ）に示すように、ルータ回路Ｒ１内の経路情報保持・算出回路ＲＴＣＡＬも、図７（ａ）の場合と同様に、ルータ回路Ｒ１を起点として、他のルータ回路Ｒ０，Ｒ２〜Ｒ７に到達するまでの経路を各レジスタＲＥＧに備えている。ルータ回路Ｒ２〜Ｒ７内のＲＴＣＡＬも、図示はしないが、同様にして自身を起点とする経路を自身の各レジスタに備えている。
【００３７】
ここで、図７（ａ），（ｂ）に示したような、経路情報保持・算出回路ＲＴＣＡＬの記憶部（例えばレジスタ）に保持する経路情報は、半導体装置ＳＯＣを設計する際に、予め定めることができる。本実施の形態１による半導体装置は、後述するように、状況に応じて経路を切り換えるダイナミック・ルーティング方式を採用するが、確実に目的地まで辿り着く経路を予め設計段階で定めることができるため、図２に示したインターネットの場合のように、誤った経路情報がアナウンスされるようなことはない。
【００３８】
図８は、図１の半導体装置において、そのルータ管理ユニットＳＯＣ＿ＮＡＶＩが保持する管理テーブルの一例を示す概略図である。図８に示すように、ＳＯＣ＿ＮＡＶＩは、例えば各ルータ回路Ｒ０〜Ｒ７にそれぞれ対応するレジスタＲ０＿ＣＴＲＬ〜Ｒ７＿ＣＴＲＬを備え、各クロックサイクル毎（すなわちリアルタイム）に、Ｒ０〜Ｒ７のそれぞれが前述した「空」または「満」か、およびクロックオンまたはクロックオフかを監視する。これは、図６で述べたように、各ルータ回路内のローカルバッファ管理ユニットＢＵＦ＿ＣＴＬおよびクロック制御回路ＣＫ＿ＣＴＬからバッファ状態信号６１７およびクロックオフ信号６１２ａを受けることで実現される。図８では、Ｒ４が「満」状態あり、Ｒ２がクロックオフである例を示している。ここで、特に限定はされないが、ＳＯＣ−ＮＡＶＩは、図８において例えば半分以上のルータ回路が「満」の状態であれば、クロックオフとなっているルータ回路に対して、図６のクロックオン信号６１２ｂを発行し、動作クロックの供給を再開するように指示を行う。
【００３９】
また、図６で述べたように、各ルータ回路の経路情報保持・算出回路ＲＴＣＡＬは、図８のような管理テーブルの情報を、他ルータ監視信号６１６を介してリアルタイムに入手することが可能となっている。ＲＴＣＡＬは、この管理テーブルの情報を参照して、リアルタイムに、図７（ａ），（ｂ）に示したような各経路が有効か無効かを逐次判断する。したがって、前述した特許文献１のように過去のアクセス頻度に基づいて経路を選択するのではなく、リアルタイムに各ルータ回路の状況を判断して経路を選択できるため、例えば実行するアプリケーション等に依存せずに、常にレイテンシが小さくスループットが高くなるような最適経路を選択することが可能となる。
【００４０】
図９は、図６のリクエスト処理回路ＲＴＣＴＬ＿ＲＥＱにおいて、その経路情報保持・算出回路ＲＴＣＡＬが行う経路探索方法の一例を示すフロー図である。経路探索が開始されると（９０１）、ＲＴＣＡＬは、まず、９０２および９０３において、図７に示した経路テーブルと、転送対象となるパケットデータに含まれるデスティネーションＩＤ（ＤＳＴ＿ＩＤ）を参照し、そのコンポーネントＩＰに対応するルータ回路に到達するまでの１番目の経路について判定を行う。９０２では、この１番目の経路のルータ経由回数をｎとし、９０３では、この１番目の経路について、１つ先のルータ回路が有効（「空」かつクロックオン）であるかを判定する。有効であった場合、経路探索終了（９１０）となる。一方、無効（「満」またはクロックオフ）であった場合、９０４へ移行する。
【００４１】
９０４において、ＲＴＣＡＬは、図７に示した経路テーブルを参照して、２番目の経路が有るかを判定する。２番目の経路が無かった場合、９０２に戻り、１サイクル後に再び１番目の経路について判定を行う。一方、２番目の経路が有った場合、この２番目の経路のルータ経由回数をｍとし（９０５）、この２番目の経路について、（ｍ−ｎ＋１）つ先までのルータ回路が全て有効であるかを判定する（９０６）。有効であった場合、経路探索終了（９１０）となる。一方、少なくともいずれか一つが無効であった場合、９０７へ移行する。
【００４２】
９０７において、ＲＴＣＡＬは、図７に示した経路テーブルを参照して、３番目の経路が有るかを判定する。３番目の経路が無かった場合、９０２に戻り、１サイクル後に再び１番目の経路について判定を行う。一方、３番目の経路が有った場合、この３番目の経路のルータ経由回数をｊとし（９０８）、この３番目の経路について、（ｊ−ｎ＋１）つ先までのルータ回路が全て有効であるかを判定する（９０９）。有効であった場合、経路探索終了（９１０）となる。一方、少なくともいずれか一つが無効であった場合、９０２に戻り、１サイクル後に再び１番目の経路について判定を行う。なお、経路探索終了（９１０）となった場合、ＲＴＣＡＬは、当該経路に向けてパケットデータが出力されるように出力セレクタＳＥＬ＿Ｏに対して指示を出す。
【００４３】
図９のフローを具体例で説明すると、例えば、図１のルータ回路Ｒ０が、ＩＰ６（Ｒ６）をリクエストの転送先とするパケットデータを受けた場合、ＲＴＣＡＬは、図７（ａ）のレジスタＲＥＧ０６＿ＲＴ１の経路について判定を行い、ｎ＝２とし、１つ先のルータ回路Ｒ２が有効であるかを判定する。仮に有効の場合には、経路探索終了となる。すなわち、図１０に示すように、Ｒ０→Ｒ２→Ｒ６の経路が選択され、当該サイクルにおいてＲ２に向けてパケットデータが出力される。
【００４４】
一方、仮にＲ２が無効の場合、ＲＴＣＡＬは、図７（ａ）の経路テーブルに、レジスタＲＥＧ０６＿ＲＴ２が存在するかを判定し、存在する場合はこれについて判定を行う。図７（ａ）ではＲＥＧ０６＿ＲＴ２が存在するため、ＲＴＣＡＬは、ＲＥＧ０６＿ＲＴ２の情報からｍ＝３とし、１つ先のルータ回路Ｒ１と２つ先のルータ回路Ｒ３が有効であるかを判定する。仮に有効の場合には、経路探索終了となる。すなわち、図１１に示すように、Ｒ０→Ｒ１→Ｒ３→Ｒ６の経路が選択され、当該サイクルにおいてＲ１に向けてパケットデータが出力される。一方、仮にＲ１またはＲ３が無効の場合、ＲＴＣＡＬは、同様にして、レジスタＲＥＧ０６＿ＲＴ３について判定を行い、ｊ＝３とし、１つ先のルータ回路Ｒ４と２つ先のルータ回路Ｒ５が有効であるかを判定する。
【００４５】
図１２は、図１の半導体装置において、その各クロックサイクル毎の動作例を示すものであり、各ルータ回路の入力バッファＢＵＦ＿Ｉおよび出力バッファＢＵＦ＿Ｏの状態遷移を示すものである。例えば、時刻（クロックサイクル）ｔ＝Ｔ０において、ルータ回路Ｒ０が、ＩＰ０からＩＰ５に向けて発行された１サイクル分のデータの転送要求信号（ＲＥＱ）を受け付けたものとする。この場合、Ｒ０は、入力バッファＢＵＦ＿ＩにＩＰ０からのパケットデータ（図１２上でＰＤ０と表示）をラッチする。さらに、このｔ＝Ｔ０において、ルータ回路Ｒ４が、ＩＰ４からＩＰ７に向けて発行された２サイクル分のデータの転送要求信号（ＲＥＱ）を受け付けたものとする。この場合、Ｒ４は、入力バッファＢＵＦ＿ＩでＩＰ４からのパケットデータ（図１２上でＰＤ４と表示）をラッチする。
【００４６】
次いでｔ＝Ｔ１において、Ｒ０は、ＢＵＦ＿ＯでパケットデータＰＤ０をラッチすると共にこれに対する経路判定を行う。一方、Ｒ４は、ＢＵＦ＿Ｏで１サイクル目のパケットデータＰＤ４をラッチすると共にこれに対する経路判定を行い、ＢＵＦ＿Ｉで２サイクル目のパケットデータＰＤ４をラッチする。ここで、図１６は、図６のリクエスト処理回路ＲＴＣＴＬ＿ＲＥＱにおける入力バッファＢＵＦ＿Ｉおよび出力バッファＢＵＦ＿Ｏの遷移状態の一例を示す説明図である。
【００４７】
図１６において、ＢＵＦ＿Ｉは、時刻（クロックサイクル）ｔ＝Ｔ１’においてパケットデータＰＤ［１］をラッチすると共にＢＵＦ＿Ｏに出力し、ｔ＝Ｔ２’において次サイクルのパケットデータＰＤ［２］をラッチすると共にＢＵＦ＿Ｏに出力する。一方、ＢＵＦ＿Ｏは、ｔ＝Ｔ２’においてＰＤ［１］をラッチすると共に図６の出力セレクタＳＥＬ＿Ｏに出力し、ｔ＝Ｔ３’においてＰＤ［２］をラッチすると共にＳＥＬ＿Ｏに出力する。この場合、ｔ＝Ｔ１’では、次サイクルでＢＵＦ＿Ｉのパケットデータを確実にＢＵＦ＿Ｏに掃き出せ、ＢＵＦ＿Ｉが入力可能な状態となるため「空」となり、ｔ＝Ｔ３’では、ＢＵＦ＿Ｉが入力可能な状態であるため「空」となる。一方、ｔ＝Ｔ２’では、ＢＵＦ＿ＩとＢＵＦ＿Ｏが埋まっており、次サイクルで必ずしもＢＵＦ＿Ｏのパケットデータが掃き出せるとは限らないため「満」となる。したがって、図１２において、ｔ＝Ｔ１では、Ｒ４が「満」となる。
【００４８】
図１３は、図１２のｔ＝Ｔ１における図１の半導体装置の状況を示す説明図である。図１３においては、前述したようにルータ回路Ｒ４が「満」であることに加えて、ルータ回路Ｒ２がクロックオフであるものとする。この場合、Ｒ０は、前述した経路探索に際して、１番目の経路（最短経路）となるＲ４を通過する経路も、２番目の経路となるＲ２を通過する経路も選択できないため、３番目の経路となるＲ１→Ｒ３→Ｒ６→Ｒ５の経路を選択し、Ｒ１に向けてパケットデータＰＤ０を出力する。一方、Ｒ４は、前述した経路探索に際して、１番目の経路となるＲ５→Ｒ７の経路を選択し、Ｒ５に向けて１サイクル目のパケットデータＰＤ４を出力する。
【００４９】
次いでｔ＝Ｔ２において、Ｒ１は、ＢＵＦ＿ＩでパケットデータＰＤ０をラッチする。Ｒ４は、ＢＵＦ＿Ｏで２サイクル目のパケットデータＰＤ４をラッチすると共にＲ５に向けて２サイクル目のＰＤ４を出力する。Ｒ５は、ＢＵＦ＿Ｉで１サイクル目のパケットデータＰＤ４をラッチする。続いてｔ＝Ｔ３において、Ｒ１は、ＢＵＦ＿ＯでパケットデータＰＤ０をラッチすると共にこれに対する経路判定を行う。Ｒ５は、ＢＵＦ＿Ｏで１サイクル目のパケットデータＰＤ４をラッチすると共にこれに対する経路判定を行い、ＢＵＦ＿Ｉで２サイクル目のパケットデータＰＤ４をラッチする。これに伴い、Ｒ５は「満」となる。
【００５０】
図１４は、図１２のｔ＝Ｔ３における図１の半導体装置の状況を示す説明図である。図１４においては、前述したようにＲ５が「満」であり、Ｒ２がクロックオフである。ここで、Ｒ１の経路テーブルにおいて、ＩＰ５（Ｒ５）に向けた１番目の経路（最短経路）がＲ３→Ｒ４→Ｒ５であるものとし、Ｒ１は、前述した経路探索に際してこの１番目の経路を選択できるため、Ｒ３に向けてパケットデータＰＤ０を出力する。一方、Ｒ５は、前述した経路判定に際して１番目の経路となるＲ７の経路を選択し、Ｒ７に向けて１サイクル目のパケットデータＰＤ４を出力する。
【００５１】
続いてｔ＝Ｔ４において、Ｒ３は、ＢＵＦ＿ＩでパケットデータＰＤ０をラッチする。Ｒ５は、ＢＵＦ＿Ｏで２サイクル目のパケットデータＰＤ４をラッチすると共にＲ７に向けて２サイクル目のＰＤ４を出力する。Ｒ７は、ＢＵＦ＿Ｉで１サイクル目のパケットデータＰＤ４をラッチする。次いで、ｔ＝Ｔ５において、Ｒ３は、ＢＵＦ＿ＯでパケットデータＰＤ０をラッチすると共にこれに対する経路判定を行う。Ｒ７は、ＢＵＦ＿Ｏで１サイクル目のパケットデータＰＤ４をラッチすると共に、ＢＵＦ＿Ｉで２サイクル目のパケットデータＰＤ４をラッチする。これに伴い、Ｒ７は「満」となる。
【００５２】
図１５は、図１２のｔ＝Ｔ５における図１の半導体装置の状況を示す説明図である。図１５においては、前述したようにＲ７が「満」であり、Ｒ２がクロックオフである。ここで、Ｒ３の経路テーブルにおいて、ＩＰ５（Ｒ５）に向けた１番目の経路（最短経路）がＲ４→Ｒ５であるものとし、Ｒ３は、前述した経路探索に際してこの１番目の経路を選択できるため、Ｒ４に向けてパケットデータＰＤ０を出力する。一方、Ｒ７は、ＢＵＦ＿Ｏでラッチした１サイクル目のパケットデータＰＤ４をＩＰ７に出力する。以降、詳細な説明は省略するが、図１２に示すように、順次パケットデータの転送が行われ、ＩＰ０からＩＰ５に向けたリクエストと、ＩＰ４からＩＰ７に向けたリクエストが完了する。
【００５３】
なお、図１２においては、説明を容易にするため、図６に示すローカルバッファ管理ユニットＢＵＦ＿ＣＴＬが「満」を検出してからバッファ状態信号６１７を介してＳＯＣ＿ＮＡＶＩに通知し、ＳＯＣ＿ＮＡＶＩから他ルータ監視信号６１６を介して他ルータ回路に通知するまでのクロックレイテンシを省略している。仮に、これに複数サイクル要する場合、実際には既に「満」となっているルータ回路（［１］とする）に対して他のルータ回路（［２］とする）がパケットデータを出力してしまうような状況が懸念される。ただし、この場合、ルータ回路［２］は、ルータ回路［１］から転送許可信号（ＧＮＴ）を得られずに待つこととなるため、これによる時間的な損失は生じてしまうが、このルータ回路［２］のパケットデータを失うような事態とはならない。また、１つのルータ回路に対して複数のルータ回路等からの転送要求信号（ＲＥＱ）が競合した場合も同様なことが言える。
【００５４】
以上、本実施の形態１によるネットワーク・オン・チップ（ＮｏＣ）を備えた半導体装置を用いることで、代表的には、リアルタイムにルータ回路を経由する最適経路を決定できるようになるため、ネットワーク上のレイテンシの低減、またはスループットの向上が実現可能になる。なお、前述した図７〜図１６の説明においては、リクエスト側の信号経路を想定して各種説明を行ったが、図５で説明したように、加えてレスポンス側の信号経路が独立に設けられている構成においては、リクエスト側とは独立にレスポンス側の信号経路においても図７〜図１６で説明したような動作等が並行して行われることになる。
【００５５】
（実施の形態２）
本実施の形態２では、実施の形態１で述べた半導体装置を用い、さらに、パケットデータ（インタフェース信号）に含まれるプライオリティ（ＰＲＩ）を利用してパケットデータの転送を行う動作例について説明する。プライオリティ（ＰＲＩ）とは、例えば、マスタコンポーネントがある限られたレイテンシ内で転送を行いたい場合、ルータ回路に対して緊急であることを通知する信号である。
【００５６】
図１７は、本発明の実施の形態２による半導体装置において、図１の半導体装置の一部を抜粋した概略図である。図１７においては、以前のサイクルにおいてマスタコンポーネントＩＰ０からの転送要求信号（ＲＥＱ）を受け付けたルータ回路Ｒ０と、マスタコンポーネントＩＰ１とが、あるサイクルにおいて同時にルータ回路Ｒ１に対して転送要求信号（ＲＥＱ）を発行した場合の例を示している。ＩＰ０からのパケットデータＰＤ０に含まれるＰＲＩは「７」であり、ＩＰ１からのパケットデータＰＤ１に含まれるＰＲＩは「５」である。ここでは、ＰＲＩの数字が大きい方が優先度が高いものとする。
【００５７】
この場合、Ｒ１は、この２つの転送要求信号（ＲＥＱ）を同時に受け付けることはできないため、図６に示したローカルバッファ管理ユニットＢＵＦ＿ＣＴＬが、双方のＰＲＩの大きさを調停回路ＡＲＢを用いて比較し、その結果、ＰＤ０の方を採用して、Ｒ０に向けて転送許可信号（ＧＮＴ）を送信する。また、同時に、入力セレクタＳＥＬ＿Ｉに指示を出し、ＰＤ０を入力バッファＢＵＦ＿Ｉに転送する。一方、ＩＰ１は、転送許可信号（ＧＮＴ）が得られなかったため、それが得られるまで何サイクルか待つことになる。
【００５８】
なお、仮にＩＰ１が、あるコンポーネントからの転送要求を受け付けたルータ回路（［３］とする）であり、更に複数の経路が存在するような場合、このルータ回路［３］に、あるサイクルにおいて転送許可信号（ＧＮＴ）が得られなかった際には次サイクルにおいて再び図９に示したような経路探索を行うような機能を持たせるとよい。これによって、図１７において、例えばＰＤ０の転送に伴いルータ回路Ｒ１が「満」状態を当分維持するような状況になれば、この経路を回避することができ、また、仮にルータ回路［３］にとってＲ１を介する経路が１番目の経路（最短経路）でなかった場合に、最短経路に変更できる可能性がある。すなわち、レイテンシの低減やスループットの向上が期待できる。
【００５９】
以上、本実施の形態２の半導体装置を用いることで、実施の形態１で述べた各種効果に加えて、代表的には、緊急の情報をいち早く転送することができ、半導体装置の全体としての処理効率を高めることができる。
【００６０】
（実施の形態３）
本実施の形態３では、実施の形態１で説明した図９とは異なる経路探索方法の一例について説明する。図９の経路探索方法は、判定対象となっている経路を選択するか否かを、その経路の経路長と１番目の経路（最短経路）の経路長との間の差分値に基づいて判定を行い、原則的に１番目の経路よりも先に進める観点で判定を行った。すなわち、例えば、１番目の経路の経路長が３で、２番目の経路の経路長が４であった場合、１番目の経路が通れなくとも２番目の経路でルータ回路を２つ進めれば残りの経路長が２となる。一方、本実施の形態３では、図９の場合と同様に経路長の差分値に基づいて判定を行い、原則的に１番目の経路と同等に進める観点で判定を行う。すなわち、例えば、１番目の経路の経路長が３で、２番目の経路の経路長が４であった場合、１番目の経路が通れなくとも２番目の経路でルータ回路を１つ進めれば残りの経路長が３となる。
【００６１】
図１８は、本発明の実施の形態３による半導体装置において、図６のリクエスト処理回路ＲＴＣＴＬ＿ＲＥＱの経路情報保持・算出回路ＲＴＣＡＬが行う経路探索方法の一例を示すフロー図である。経路探索が開始されると（１８０１）、ＲＴＣＡＬは、まず、１８０２、１８０３、１８１０ａにおいて、図７に示した経路テーブルと、転送対象となるパケットデータに含まれるデスティネーションＩＤ（ＤＳＴ＿ＩＤ）を参照し、そのコンポーネントＩＰに対応するルータ回路に到達するまでの１番目の経路について判定を行う。１８０２では、この１番目の経路のルータ経由回数をｎとし、１８０３では、この１番目の経路について、１つ先のルータ回路が有効（「空」かつクロックオン）であるかを判定する。有効であった場合、１８１０ａの自己ループ判定（詳細は図１９で後述）へ移行し、これを合格した場合は、経路探索終了（１８１１）となる。一方、無効（「満」またはクロックオフ）であった場合、または１８１０ａの自己ループ判定が不合格であった場合は、１８０４へ移行する。
【００６２】
１８０４において、ＲＴＣＡＬは、図７に示した経路テーブルを参照して、２番目の経路が有るかを判定する。２番目の経路が無かった場合、１８０２に戻り、１サイクル後に再び１番目の経路について判定を行う。一方、２番目の経路が有った場合、この２番目の経路のルータ経由回数をｍとし（１８０５）、この２番目の経路について、ｍ＝ｎの場合には１つ先までのルータ回路が有効であるかを判定し、ｍ＞ｎの場合には（ｍ−ｎ）つ先までのルータ回路が全て有効であるかを判定する（１８０６）。有効であった場合、１８１０ｂの自己ループ判定へ移行し、これを合格した場合は、経路探索終了（１８１１）となる。一方、いずれか一つが無効であった場合、または１８１０ｂの自己ループ判定が不合格であった場合は、１８０７へ移行する。
【００６３】
１８０７において、ＲＴＣＡＬは、図７に示した経路テーブルを参照して、３番目の経路が有るかを判定する。３番目の経路が無かった場合、１８０２に戻り、１サイクル後に再び１番目の経路について判定を行う。一方、３番目の経路が有った場合、この３番目の経路のルータ経由回数をｊとし（１８０８）、この３番目の経路について、ｊ＝ｎの場合には１つ先までのルータ回路が有効であるかを判定し、ｊ＞ｎの場合には（ｊ−ｎ）つ先までのルータ回路が全て有効であるかを判定する（１８０９）。有効であった場合、１８１０ｃの自己ループ判定へ移行し、これを合格した場合は、経路探索終了（１８１１）となる。一方、いずれか一つが無効であった場合、または１８１０ｃの自己ループ判定が不合格であった場合は、１８０２に戻り、１サイクル後に再び１番目の経路について判定を行う。なお、経路探索終了（１８１１）となった場合、ＲＴＣＡＬは、当該経路に向けてパケットデータが出力されるように出力セレクタＳＥＬ＿Ｏに対して指示を出す。
【００６４】
図１８のフローを具体例で説明すると、例えば、図２０に示すように、ルータ回路Ｒ０が、ＩＰ４（Ｒ４）をリクエストの転送先とするパケットデータを受けた場合、まず、経路長が１となる最短経路（Ｒ０→Ｒ４）について判定を行い、ｎ＝１とし、１つ先のルータ回路Ｒ４が有効であるかを判定する。仮に有効かつ自己ループ判定も合格の場合には、経路探索終了となり、当該サイクルにおいてＲ４に向けてパケットデータが出力される。一方、仮にＲ４が無効か自己ループ判定が不合格の場合、例えば、図２１に示すように、ＲＴＣＡＬは、２番目の経路について判定を行う。ここでは、２番目の経路は、経路長が３であるＲ０→Ｒ１→Ｒ３→Ｒ４の経路であるものとし、ｍ＝３として、１つ先のルータ回路Ｒ１と２つ先のルータ回路Ｒ３が有効であるかを判定する。仮に有効かつ自己ループ判定も合格の場合には、経路探索終了となり、当該サイクルにおいてＲ１に向けてパケットデータが出力される。
【００６５】
図１９は、図１８のフローにおいて、その自己ループ判定処理１８１０ａ〜１８１０ｃの一例を示すフロー図である。図１９において、自己ループ判定が開始されると（１９０１）、ＲＴＣＡＬは、まず、１９０２において、転送対象となるパケットデータに含まれるソースＩＤ（ＳＲＣ＿ＩＤ）を参照し、図１８で評価対象となっている経路上に、そのＳＲＣ＿ＩＤを持つコンポーネントＩＰに対応するルータ回路が含まれていないかを判定する。含まれていれば、自己ループが行われることになるため自己ループ判定不合格となり（１９０５）、含まれていなければ、１９０３へ移行する。１９０３においては、転送対象となるパケットデータに含まれるミドルＩＤ（ＭＩＤ＿ＩＤ）を参照し、図１８で評価対象となっている経路上に、このＭＩＤ＿ＩＤを持つルータ回路が含まれていないかを判定する。含まれていれば、通過した経路を戻ることになるため自己ループ判定不合格となり（１９０５）、含まれていなければ、自己ループ判定合格となる（１９０４）。
【００６６】
前述した図１８の経路探索フローは、図９の経路探索フローと比較して、実際に採り得る経路の選択肢が広がるものの、自己ループに入る可能性が高くなる。すなわち、例えば、図２１に示したように、パケットデータをＲ１に転送したサイクルでは、一時的に残りの経路長が長くなる（経路が遠ざかる）ため、仮にＲ１において、同様に遠ざかる経路が選択されると、遠回りした後に、再び同じ経路に戻ってくる可能性を否定できない。特に、半導体装置ＳＯＣ内に多数のコンポーネントＩＰが存在し、それらの接続経路も複雑化した場合などでは、この自己ループの可能性が高くなる。そこで、図１８のフローでは、図１９に示すように自己ループ判定を行うことで、自己ループの可能性を低減し、前述した図９のフローでは、アルゴリズムの面から自己ループの可能性を低減している。更に、前述した図７の経路テーブルでは、各目的地毎の経路の選択肢数を経路長が短い順で３個以下とすることで、この選択肢数の点からも自己ループの可能性を低減している。
【００６７】
以上、本実施の形態３の半導体装置を用いることで、実施の形態１で述べた各種効果に加えて、代表的には、実用上選択できる経路の幅を広げることが可能となる。
【００６８】
（実施の形態４）
本実施の形態４では、実施の形態１〜実施の形態３に示した半導体装置を、３次元積層して構成した半導体装置の一例について説明する。図２２は、本発明の実施の形態３による半導体装置において、その構成の一例を示す概略図である。図２２に示す半導体装置は、実施の形態１や実施の形態２で示した半導体装置ＳＯＣが３層積層して構成されている。最下位層は、ロジック機能を備えた半導体装置ＳＯＣ１であり、中層層は、第１のメモリ機能（例えばＤＲＡＭ）を備えた半導体装置ＳＯＣ２であり、最上位層は、第２のメモリ機能（例えばＳＲＡＭ）を備えた半導体装置ＳＯＣ３となっている。
【００６９】
図２３は、図２２のより詳細な構成例を示した図である。ここでは、最下位層の半導体装置ＳＯＣ１から中層層の半導体装置ＳＯＣ２に転送を行う例を示している。ＳＯＣ１は、複数のコンポーネント（例えば演算ユニット）およびそれに対応するルータ回路を備え、同様に、ＳＯＣ２も、複数のコンポーネント（メモリユニット）およびそれに対応するルータ回路を備える。そして、ＳＯＣ１内の複数のルータ回路の中の一部（ここでは３個）のルータ回路Ｒ１０，Ｒ１１，Ｒ１２が、それぞれ、ＳＯＣ２内の複数のルータ回路の中の一部（ここでは３個）のルータ回路Ｒ２０，Ｒ２１，Ｒ２２に３次元接続されているものとする。
【００７０】
また、ＳＯＣ１、ＳＯＣ２およびＳＯＣ３は、それぞれ、ルータ管理ユニットＳＯＣ＿ＮＡＶＩ１、ＳＯＣ＿ＮＡＶＩ２およびＳＯＣ＿ＮＡＶＩ３を備え、これらは互いに３次元接続されている。例えば、ＳＯＣ＿ＮＡＶＩ１は、図８に示したようにＳＯＣ１内の各ルータ回路の状況を監視し、同様に、ＳＯＣ＿ＮＡＶＩ２は、ＳＯＣ２内の各ルータ回路の状況を監視する。さらに、例えば、ＳＯＣ＿ＮＡＶＩ１は、ＳＯＣ＿ＮＡＶＩ２との通信を行うことによって、ＳＯＣ２内のＲ２０，Ｒ２１，Ｒ２２の状況も監視することができる。加えて、ＳＯＣ１内の各ルータ回路は、図７に示したような自身の経路テーブルに、目的地としてＲ２０，Ｒ２１，Ｒ２２を含んでいる。
【００７１】
したがって、図２３に示すように、例えば、ＳＯＣ１内のルータ回路Ｒ１３からＳＯＣ２にパケットデータＰＤを転送したい場合、Ｒ１３は、自身の経路テーブルを参照すると共に、ＳＯＣ＿ＮＡＶＩ１からの各ルータ回路の状況を加味して、最適な経路を選択することができる。すなわち、ＳＯＣ１内の各ルータ回路に加えてＲ２０，Ｒ２１，Ｒ２２の状況も加味して、Ｒ１０からＲ２０にパケットデータＰＤ１３ａを転送することや、Ｒ１１からＲ２１にパケットデータＰＤ１３ｂを転送することや、Ｒ１２からＲ２２にパケットデータＰＤ１３ｃを転送することができる。これによって、各層間で全てのルータ回路同士を接続する場合と比べてコストを低減でき、また、いずれか１箇所を接続する場合と比べて経路長を短くできると共にその出入り口も広がるため、積層された半導体チップ間の通信におけるレイテンシの低減やスループットの向上を低コストで図れる。
【００７２】
以上、本実施の形態４の半導体装置を用いることで、実施の形態１〜３で述べた各種効果に加えて、代表的には、低コストで高性能な半導体装置を実現可能となる。
【００７３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【産業上の利用可能性】
【００７４】
本実施の形態による半導体装置は、ＮｏＣ（ネットワーク・オン・チップ）を備えた半導体装置に適用して有益なものであり、１つの半導体チップに限らず複数の半導体チップからなる半導体装置に対しても適用可能である。
【図面の簡単な説明】
【００７５】
【図１】本発明の実施の形態１による半導体装置において、その構成の一例を示すブロック図である。
【図２】従来技術となるインターネットで一般的に知られている経路探索方式と、その利点および欠点を示した図である、
【図３】図１の半導体装置において、その各ルータ回路を経由するパケットデータ（インタフェース信号）の基本構造例を示す説明図である。
【図４】図１の半導体装置において、マスタコンポーネントとスレーブコンポーネント間の通信方式の一例を模式的に示すものであり、（ａ）は転送要求の際の模式図、（ｂ）は（ａ）の転送要求に対して応答を行う際の模式図である。
【図５】図１の半導体装置において、各ルータ回路の概要構成例を示すものであり、（ａ）はマスタ機能とスレーブ機能を備えたコンポーネントに対応するルータ回路の概略図、（ｂ）はスレーブ機能を備えたコンポーネントに対応するルータ回路の概略図である。
【図６】図５のルータ回路において、そのリクエスト処理回路の詳細な構成例を示すブロック図である。
【図７】（ａ），（ｂ）は、図６のリクエスト処理回路において、それぞれ異なるルータ回路内の経路情報保持・算出回路が保持している経路テーブルの構造例を示した概略図である。
【図８】図１の半導体装置において、そのルータ管理ユニットが保持する管理テーブルの一例を示す概略図である。
【図９】図６のリクエスト処理回路において、その経路情報保持・算出回路が行う経路探索方法の一例を示すフロー図である。
【図１０】図９の補足図である。
【図１１】図９の他の補足図である。
【図１２】図１の半導体装置において、その各クロックサイクル毎の動作例を示すものであり、各ルータ回路の入力バッファおよび出力バッファの状態遷移を示すものである。
【図１３】図１２のＴ１における図１の半導体装置の状況を示す説明図である。
【図１４】図１２のＴ３における図１の半導体装置の状況を示す説明図である。
【図１５】図１２のＴ５における図１の半導体装置の状況を示す説明図である。
【図１６】図６のリクエスト処理回路における入力バッファおよび出力バッファの遷移状態の一例を示す説明図である。
【図１７】本発明の実施の形態２による半導体装置において、図１の半導体装置の一部を抜粋した概略図である。
【図１８】本発明の実施の形態３による半導体装置において、図６のリクエスト処理回路の経路情報保持・算出回路が行う経路探索方法の一例を示すフロー図である。
【図１９】図１８のフローにおいて、その自己ループ判定処理の一例を示すフロー図である。
【図２０】図１８の補足図である。
【図２１】図１８の他の補足図である。
【図２２】本発明の実施の形態４による半導体装置において、その構成の一例を示す概略図である。
【図２３】図２２のより詳細な構成例を示した図である。
【符号の説明】
【００７６】
６１０  入力ポート
６１２ａ  クロックオフ信号
６１２ｂ  クロックオン信号
６１３  スタンバイ指示信号
６１５  出力ポート
６１６  他ルータ監視信号
６１７  バッファ状態信号
ＡＲＢ  調停回路
ＢＵＦ  バッファ
ＢＵＦ＿ＣＴＬ  ローカルバッファ管理ユニット
ＣＫ＿ＣＴＬ  クロック制御回路
ＤＡＴ  データ
ＤＳＴ＿ＩＤ  デスティネーションＩＤ
ＥＸＴ  拡張ヘッダ
ＧＮＴ  転送許可信号
ＨＤ  ヘッダ
ＩＰ  コンポーネント
ＭＩＤ＿ＩＤ  ミドルＩＤ
ＯＰＣ  オペコード
ＰＤ  パケットデータ
ＰＫＴ＿ＩＤ  パケットＩＤ
ＰＫＴ＿ＳＩＺＥ  パケットサイズ
ＰＲＩ  プライオリティ
Ｒ  ルータ回路
Ｒ＿ＤＡＴ  レスポンスデータ
Ｒ＿ＧＮＴ  転送応答許可信号
Ｒ＿ＯＰＣ  レスポンスオペコード
ＲＥＱ  転送要求信号
ＲＥＳ  転送応答信号
ＲＴＣＡＬ  経路情報保持・算出回路
ＲＴＣＴＬ＿ＲＥＱ  リクエスト処理回路
ＲＴＣＴＬ＿ＲＥＳ  レスポンス処理回路
ＳＥＬ  セレクタ
ＳＯＣ  半導体装置
ＳＯＣ＿ＮＡＶＩ  ルータ管理ユニット
ＳＲＣ＿ＩＤ  ソースＩＤ
【図１】
2010109869.tif 000003
【図２】
2010109869.tif 000004
【図３】
2010109869.tif 000005
【図４】
2010109869.tif 000006
【図５】
2010109869.tif 000007
【図６】
2010109869.tif 000008
【図７】
2010109869.tif 000009
【図８】
2010109869.tif 000010
【図９】
2010109869.tif 000011
【図１０】
2010109869.tif 000012
【図１１】
2010109869.tif 000013
【図１２】
2010109869.tif 000014
【図１３】
2010109869.tif 000015
【図１４】
2010109869.tif 000016
【図１５】
2010109869.tif 000017
【図１６】
2010109869.tif 000018
【図１７】
2010109869.tif 000019
【図１８】
2010109869.tif 000020
【図１９】
2010109869.tif 000021
【図２０】
2010109869.tif 000022
【図２１】
2010109869.tif 000023
【図２２】
2010109869.tif 000024
【図２３】
2010109869.tif 000025