説明

半導体装置

【課題】NoCを備えた半導体装置において、ネットワーク上のレイテンシの低減、またはスループットの向上を実現する。
【解決手段】例えば、所定の処理を行う複数のコンポーネントIP0〜IP7と、各コンポーネントにそれぞれ接続された複数のルータ回路R0〜R7と、各ルータ回路間を接続する複数の配線と、複数のルータ回路の有効・無効状態をリアルタイムに監視するルータ管理ユニットSOC_NAVIを備える。例えば、R0は、予め設計段階で定められ、R0を起点としてR1〜R7に到達するまでの経路情報をR1〜R7毎に単数または複数保持している。R0は、所定のコンポーネントに向けてレクエストを転送する際に、この経路情報にSOC_NAVIからの情報を反映させて最適な経路を探索する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置に関し、特に、ネットワークインターフェースによって多数のマスタコンポーネントとスレーブコンポーネントを接続するNoC(ネットワーク・オン・チップ)を備えたSoC(システム・オン・チップ)のような半導体装置に適用して有効な技術に関する。
【背景技術】
【0002】
図2に、インターネットで一般的に知られている経路探索方式と、その利点および欠点を示す。図2に示すように、インターネットでは、経路を固定したスタティック・ルーティング方式と、経路を動的に変更するダイナミック・ルーティング方式が知られている。例えば、ダイナミック・ルーティング方式では、障害等により利用不可となった経路を回避できる一方、設定ミスや機器障害により誤った経路情報がアナウンスされると、ネットワーク全体に波及し、最悪ネットワークがダウンする欠点がある。
【0003】
また、例えば、特許文献1には、複数のイニシエータとターゲットが接続される2個のバスの間に、各バスのトラフィック状態を監視するトラフィック監視ユニットを備えたデータ処理装置が示されている。トラフィック監視ユニットは、各イニシエータに対して送信された各バス毎のバスグラント信号の発生期間を積分することでいずれのバスが混雑しているか等を判断し、この判断結果に基づいた一方のバスを介してイニシエータからターゲットに向けたデータ転送が行われるように各種切り換えを行う。
【特許文献1】特開2007−026284号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
近年、SoCに搭載されるIP(インテレクチャル・プロパティ)の数の増加に伴い、それらのIPを接続するNoCの構成要素であるルータ回路の個数も増大し、ルータ回路同士の接続関係も複雑化している。ここで、問題となるのは、どのルータ回路を経由してデータのやり取りを行うかであり、経路の選択によっては、レイテンシが増大し、スループットの低下をも招く。
【0005】
このような問題を解決するため、例えば、特許文献1の技術を応用することが考えられる。すなわち、特許文献1の技術は、各バスにおける過去のアクセス頻度を監視し、最適なバスを選択する方式となっているが、これを応用して、ルータ回路に対する過去のアクセス頻度を監視し、これに基づいてアクセス頻度の少ないルータ回路を介する経路を選択するような方式が考えられる。しかしながら、この方式では、過去のアクセス頻度に基づいて経路選択が行われるため、SoCで行う処理内容(すなわちアプリケーション)によっては必ずしも最適経路とはならず、レイテンシが増大する虞がある。つまり、例えば、SoCを汎用的な処理装置として用いた場合、アプリケーションが変わると最適経路も異なるため、必ずしも過去のアクセス頻度が有効活用できるとは限らない。さらに、特許文献1の技術では、バス同士の接続は考慮する必要がないが、NoCを備えたSoCでは、ルータ回路同士の接続関係を考慮して最適経路を選択する必要があるため、これを効率的に実現する新たな仕組みが求められる。
【0006】
本発明は、このようなことを鑑みてなされたものであり、その目的の一つは、NoCを備えた半導体装置において、ネットワーク上のレイテンシの低減、またはスループットの向上を実現することにある。なお、本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0007】
本願において開示される発明のうち、代表的な実施の形態の概要を簡単に説明すれば、次のとおりである。
【0008】
本実施の形態による半導体装置は、リクエストを発行するマスタコンポーネントと、このリクエストを受信するスレーブコンポーネントと、マスタコンポーネントとスレーブコンポーネント間の複数の経路上に存在する複数のルータ回路と、この複数のルータ回路の有効・無効状態をリアルタイムに監視するルータ管理ユニットとを備えている。マスタコンポーネントに接続されたルータ回路は、スレーブコンポーネントに接続されたルータ回路に向けてリクエストを送信する際に、ルータ管理ユニットから複数のルータ回路の有効・無効状態を入手し、これに基づいて複数の経路の中から1つの経路を選択する。
【0009】
このように、ルータ回路は、各経路上のルータ回路のリアルタイムな有効・無効情報に基づいて最適な経路探索を行えるため、各ルータ回路間を接続するネットワーク上のレイテンシの低減、またはスループットの向上が実現可能になる。ここで、各ルータ回路の有効・無効状態を示す信号には、各ルータ回路内のバッファ回路が空きか否かを示すバッファ状態信号が含まれる。また、各ルータ回路は、条件に応じて自身の動作クロック信号の供給を停止する機能を備え、各ルータ回路の有効・無効状態を示す信号には、バッファ状態信号に加えて、この動作クロック信号の供給が停止されているか否かを示すクロック状態信号が含まれる。ルータ管理ユニットは、このような各ルータ回路の有効・無効状態を示す信号を内部の記憶部に保持し、これらをリアルタイムに(各クロックサイクル毎に)更新する。
【0010】
また、各ルータ回路は、内部の記憶部に、自身を起点として自身以外のルータ回路を目的地として、各目的地に到達するまでの経路情報を各目的地毎に単数または複数保持している。各ルータ回路は、この経路情報に前述した各ルータ回路の有効・無効状態を反映させて最適な経路を探索する。この経路情報は、半導体装置の設計段階で予め定めることができるため、ダイナミック・ルーティング方式を採用するものの誤った経路情報がアナウンスされるようなことはない。これによっても、ネットワーク上のレイテンシの低減、またはスループットの向上が実現可能になる。
【発明の効果】
【0011】
本願において開示される発明のうち、代表的な実施の形態によって得られる効果を簡単に説明すると、NoCを備えた半導体装置において、ネットワーク上のレイテンシの低減、またはスループットの向上が実現可能になる。
【発明を実施するための最良の形態】
【0012】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【0013】
さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【0014】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【0015】
(実施の形態1)
図1は、本発明の実施の形態1による半導体装置において、その構成の一例を示すブロック図である。図1に示す半導体装置SOCは、複数(ここでは8個)のコンポーネントIP0〜IP7と、各コンポーネントにそれぞれ対応する複数(ここでは8個)のルータ回路R0〜R7と、ルータ管理ユニット(SoCナビゲータ)SOC_NAVIを備えたものとなっている。各コンポーネントIP0〜IP7は、転送要求を行うことが可能なマスタコンポーネント、または、転送要求に応答することが可能なスレーブコンポーネント、あるいは、その両方となる。
【0016】
ルータ回路R0は、IP0に接続されると共に、他のルータ回路R1〜R7の一部または場合によっては全部に接続される。ここでは、半導体装置内部における各ルータ回路間の配線を容易に形成するため、各ルータ回路は、比較的自身の近辺に配置された一部のルータ回路のみに接続されるものとしている。例えば、R0は、その近辺に配置されたR2とR1とR4に接続される。ルータ回路R1〜R7も同様に、それぞれ、対応するコンポーネントIP1〜IP7に接続されると共に、近辺に配置された複数のルータ回路に接続される。ルータ管理ユニットSOC_NAVIは、全てのルータ回路R0〜R7に接続され、各ルータ回路の利用状況を管理する。各ルータ回路R0〜R7のそれぞれは、詳細は後述するが、SOC_NAVIとの間の通信情報を利用してリアルタイムに経路選択を行う第1機能や、各コンポーネントIP0〜IP7からの転送要求の優先順位に基づいて調停を行う第2機能などを備えている。
【0017】
図3は、図1の半導体装置において、その各ルータ回路を経由するパケットデータ(インタフェース信号)の基本構造例を示す説明図である。図3に示すパケットデータ(インタフェース信号)は、それぞれ任意のビット幅を備えたヘッダ(HD)およびデータ(DAT)からなる。ヘッダ(HD)は、パケットID(PKT_ID)、転送元のソースID(SRC_ID)、前回経由したルータ回路を表すミドルID(MID_ID)、転送先のデスティネーションID(DST_ID)、ヘッダとデータの合計サイズとなるパケットサイズ(PKT_SIZE)、プライオリティ(PRI)、オペコード(OPC)、任意に拡張できる拡張ヘッダ(EXT)によって構成される。
【0018】
SRC_ID、DST_ID、MID_IDは、半導体装置内部にコンポーネントIPおよびルータ回路Rを幾つ設けるかに応じて所定のビット幅に定められる。また、PKT_SIZE、PRI、OPCは、半導体装置の仕様に応じて所定のビット幅に定められる。詳細は後述するが、MID_IDは、自己ループの有無を判定する際に用いられ、PRIは、あるルータ回路に対して異なるコンポーネントまたはルータ回路から同時に転送要求などが来た場合にどれを優先するかを決定するために用いられる。また、PKT_SIZEは、例えば、何サイクルに渡ってパケットデータが転送されるかを識別するために使用され、OPCは、転送先となるコンポーネントに対して発行する命令コードとなる。なお、EXTは、必ずしも設ける必要はなく、また、PRIも、予め固定的に優先順位を定めておけば、省略可能である。
【0019】
図4は、図1の半導体装置において、マスタコンポーネントとスレーブコンポーネント間の通信方式の一例を模式的に示すものであり、(a)は転送要求の際の模式図、(b)は(a)の転送要求に対して応答を行う際の模式図である。実際には、図1に示したように、マスタコンポーネントとスレーブコンポーネントの間で複数のルータ回路を経由した通信が行われる場合があるが、ここでは、簡素化のため1個のルータ回路を経由するものとする。なお、複数のルータ回路を経由する場合は、図4(a),(b)において、ルータ回路Rの後段に更にルータ回路が挿入されることになる。ただし、この場合でも、後述するように、コンポーネントおよびルータ回路に関わらずパケットデータの構造やその送受信手順は固定であるため、後段に挿入されたルータ回路は、図4(a),(b)の各ルータ回路Rと同様の信号の流れとなる。
【0020】
図4(a)において、マスタコンポーネントIP_Mは、ルータ回路Rに向けて、転送要求信号(REQ)と共に、パケットID(PKT_ID)、転送元のソースID(SRC_ID)、前回経由したルータ回路を表すミドルID(MID_ID)、転送先のデスティネーションID(DST_ID)、ヘッダとデータの合計サイズ(PKT_SIZE)、データ(DAT)、優先度を表すプライオリティ(PRI)、オペコード(OPC)を送信する。ルータ回路Rは、この転送要求を許可する場合、IP_Mに向けて転送許可信号(GNT)を送信し、このIP_Mから転送されたパケットデータ(PKT_ID,SRC_ID,MID_ID,DST_ID,PKT_SIZE,DAT,PRI,OPC)を内部に保持する。次いで、ルータ回路Rは、スレーブコンポーネントIP_Sに向けて、転送要求信号(REQ)と共に、前述したIP_Mからの転送に伴って保持しているパケットデータを送信する。なお、このIP_Sに向けて送信を行う際に、ルータ回路Rは、MID_IDを自身のIDに書き換えて送信を行う。そして、IP_Sは、このルータ回路Rからの転送要求を許可する場合、ルータ回路Rに向けて転送許可信号(GNT)を送信し、この転送されたパケットデータにおけるオペコード(OPC)やデータ(DAT)に応じた処理を行う。
【0021】
スレーブコンポーネントIP_Sは、前述したIP_Mからの要求に応じた所定の処理を終えると、図4(b)に示すように、ルータ回路Rに向けて、転送応答信号(RES)と共に、パケットID(PKT_ID)、転送元のソースID(SRC_ID)、前回経由したルータ回路を表すミドルID(MID_ID)、転送先のデスティネーションID(DST_ID)、ヘッダとデータの合計サイズ(PKT_SIZE)、レスポンスデータ(R_DAT)、プライオリティ(PRI)、レスポンスオペコード(R_OPC)を送信する。ルータ回路Rは、この転送応答を許可する場合、IP_Sに向けて転送応答許可信号(R_GNT)を送信し、このIP_Sから転送されたパケットデータ(PKT_ID,SRC_ID,MID_ID,DST_ID,PKT_SIZE,R_DAT,R_OPC)を内部に保持する。以降も、図4(a)の場合と逆の信号の流れで、ルータ回路RとIP_Mとの間で同様の通信が行われる。
【0022】
図5は、図1の半導体装置において、各ルータ回路の概要構成例を示すものであり、(a)はマスタ機能とスレーブ機能を備えたコンポーネントに対応するルータ回路の概略図、(b)はスレーブ機能を備えたコンポーネントに対応するルータ回路の概略図である。図5(a)に示すルータ回路R0は、それに対応するコンポーネントIP0がマスタ機能とスレーブ機能を備えるものとして、リクエスト処理回路RTCTL_REQ0と、レスポンス処理回路RTCTL_RES0を備えている。また、図5(b)に示すルータ回路R4は、それに対応するコンポーネントIP4がスレーブ機能のみを備えるものとして、リクエスト処理回路RTCTL_REQ4と、レスポンス処理回路RTCTL_RES4を備えている。
【0023】
図5(a)において、RTCTL_REQ0は、4個の入力ポートと4個の出力ポートを備え、各入力ポートに、それぞれ、コンポーネントIP0とルータ回路R1,R2,R4が接続され、各出力ポートにも、それぞれ、IP0とR1,R2,R4が接続される。4個の入力ポートのそれぞれには、図4で説明したリクエスト系のパケットデータが入力され、RTCTL_REQ0は、その内の1個のパケットデータを選択すると共に4個の出力ポートのいずれか1個を選択し、この選択した1個のパケットデータを、選択した出力ポートから出力する。同様に、RTCTL_RES0も、4個の入力ポートと4個の出力ポートを備え、各入力ポートに、それぞれ、IP0とR1,R2,R4が接続され、各出力ポートにも、それぞれ、IP0とR1,R2,R4が接続される。4個の入力ポートのそれぞれには、図4で説明したレスポンス系のパケットデータが入力され、RTCTL_RES0は、その内の1個のパケットデータを選択すると共に4個の出力ポートのいずれか1個を選択し、この選択した1個のパケットデータを、選択した出力ポートから出力する。
【0024】
一方、図5(b)において、RTCTL_REQ4は、3個の入力ポートと4個の出力ポートを備え、各入力ポートに、それぞれ、ルータ回路R0,R3,R5が接続され、各出力ポートに、それぞれ、コンポーネントIP4とR0,R3,R5が接続される。3個の入力ポートのそれぞれには、図4で説明したリクエスト系のパケットデータが入力され、RTCTL_REQ4は、その内の1個のパケットデータを選択すると共に4個の出力ポートのいずれか1個を選択し、この選択した1個のパケットデータを、選択した出力ポートから出力する。また、RTCTL_RES4は、4個の入力ポートと3個の出力ポートを備え、各入力ポートに、それぞれ、IP4とR0,R3,R5が接続され、各出力ポートに、それぞれ、R0,R3,R5が接続される。4個の入力ポートのそれぞれには、図4で説明したレスポンス系のパケットデータが入力され、RTCTL_RES4は、その内の1個のパケットデータを選択すると共に3個の出力ポートのいずれか1個を選択し、この選択した1個のパケットデータを、選択した出力ポートから出力する。
【0025】
この図4および図5(a),(b)のようにリクエスト系の処理回路(RTCTL_REQ)とレスポンス系の処理回路(RTCTL_RES)を分離した構成は、スプリットトランザクションと呼ばれ、面積オーバーヘッドがあるものの、処理効率を高めることが可能となる。なお、高い処理効率が必要でなければ、リクエストとレスポンスを区別せずに(例えば、転送応答信号(RES)を転送要求信号(REQ)とみなして)、1つの処理回路で共用するルータ構成とすることも可能である。
【0026】
図6は、図5のルータ回路において、そのリクエスト処理回路RTCTL_REQの詳細な構成例を示すブロック図である。図6に示すリクエスト処理回路RTCTL_REQは、入力セレクタSEL_I、入力バッファBUF_I、リクエスト調停回路ARB、出力バッファBUF_O、出力セレクタSEL_O、経路情報保持・算出回路RTCAL、ローカルバッファ管理ユニットBUF_CTL、クロック制御回路CK_CTLを備えている。SEL_Iには、入力ポート610を介して、図5(a),(b)に示したように、複数のルータ回路Rからのパケットデータ(PKT_ID,SRC_ID,MID_ID,DST_ID,PKT_SIZE,DAT,PRI,OPC)や、加えてコンポーネントIPからのパケットデータが入力される。そして、この複数のパケットデータの中のいずれか1個がBUF_CTLからの指示によって選択され、それが入力バッファBUF_Iに転送される。
【0027】
入力バッファBUF_Iに転送されたパケットデータは、BUF_CTLの指示に基づいて出力バッファBUF_Oに転送される。出力セレクタSEL_Oは、経路情報保持・算出回路RTCALからの指示に基づいて出力ポート615の選択を行い、BUF_Oに転送されたパケットデータを、この選択された出力ポートから出力する。出力ポートには、図5(a),(b)に示したように、コンポーネントIPと複数のルータ回路Rが接続されており、この中のいずれかが選択される。
【0028】
ローカルバッファ管理ユニットBUF_CTLは、複数のルータ回路Rからの転送要求信号(REQ)(即ち自身以外のコンポーネントIPからのREQ)や、加えて自身に対応するコンポーネントIPからのREQを受け、その中のいずれか1個を許可する。この際には、各REQに対応するプライオリティPRIを参照し、調停回路ARBを用いて最も優先順位が高いREQを判断すると共に、BUF_IやBUF_Oの空きの有無も確認した上で、この最も優先順位が高いREQを許可する。そして、この許可したREQに対応するルータ回路RまたはコンポーネントIPに向けて転送許可信号(GNT)を送信する。
【0029】
また、BUF_CTLは、例えば、自身に向けた全てのREQが発行されておらず、かつ、入力バッファBUF_Iと出力バッファBUF_Oにパケットデータが滞留していない場合に、その期間を内部に備えたカウンタでカウントする。そして、BUF_CTLは、そのカウント値を予め定めたしきい値と比較して、しきい値に達した場合にクロック制御回路CK_CTLに向けてスタンバイ指示信号613を出力する。CK_CTLは、BUF_I,BUF_O,BUF_CTLおよびRTCAL等に対して動作クロックを供給しているが(以降、この状態をクロックオンと呼ぶ)、このスタンバイ指示信号613を受けた際には、この動作クロックの供給を停止する(以降、この状態をクロックオフと呼ぶ)。これによって、当該ルータ回路は、省電力モードとなる。また、省電力モードとなった際に、CK_CTLは、SOC_NAVIに向けて、クロックオフ信号612aを用いて省電力モードとなったことを通知する。また、CK_CTLは、例えば、SOC_NAVIからクロックオン信号612bを受けた際には、動作クロックの供給を再開する。
【0030】
さらに、BUF_CTLは、当該ルータ回路におけるバッファの状態が「空」か「満」かを監視し、この監視結果をバッファ状態信号617を用いてSOC_NAVIに通知する。ここで、ルータ回路のバッファ状態が「空」とは、入力バッファBUF_Iがパケットデータを受け付ける状態であることを示し、例えば、BUF_Iにパケットデータが詰まっている状態でも、後段の出力バッファBUF_Oがパケットデータを受け付けることが出来る状態であれば、「空」の状態である。一方、ルータ回路のバッファ状態が「満」とは、BUF_Iがパケットデータを受け付けることができない状態である。
【0031】
なお、前述した動作クロックを供給または停止する機能は、必ずしも必要という訳ではないが、半導体装置SOC内に多数のIPが含まれるほど、消費電力の問題がより顕著なものとなるため、設ける方が望ましい。また、この動作クロックを供給または停止する方式は、前述したような方式に限定されるものではなく、適宜変更可能である。例えば、SOC_NAVIが、ローカルバッファ管理ユニットBUF_CTLからの617を監視し、一定の期間「空」の状態が続いた場合には、クロック制御回路CK_CTLに向けて動作クロックの供給を停止するよう指示するような方式でもよい。
【0032】
経路情報保持・算出回路RTCALは、当該ルータ回路を起点として目的地となるコンポーネントに辿り着くまでの単数または複数の経路情報を、内部に備えた記憶部(例えばレジスタ)に保持している。RTCALは、詳細は後述するが、SOC_NAVIより、当該ルータ以外の全ルータ回路におけるルータ回路の状態(「空」または「満」)ならびに動作クロックの供給または停止状態を他ルータ監視信号616を介して受け取り、これらの情報と前述した経路情報とを見比べながら、最適となる経路を決定する。出力セレクタSEL_Oは、この決定に基づいて出力ポート615の選択を行う。
【0033】
このように、図6においては、リクエスト処理回路RTCTL_REQの構成例を示したが、図5(a),(b)におけるレスポンス処理回路RTCTL_RESも同様な構成となる。ただし、レスポンス処理回路RTCTL_RESの場合は、そのローカルバッファ管理ユニットBUF_CTLが、転送応答信号(RES)を入力として、転送応答許可信号(R_GNT)を出力することになる。また、入力ポート610には、データ(DAT)やオペコード(OPC)の代わりに、レスポンスデータ(R_DAT)やレスポンスオペコード(R_OPC)が入力されることになる。なお、クロック制御回路CK_CTLは、RTCTL_REQとRTCTL_RESとで個別に設けるか、場合によっては共通で設けることも可能である。
【0034】
図7(a),(b)は、図6のリクエスト処理回路RTCTL_REQにおいて、それぞれ異なるルータ回路内の経路情報保持・算出回路RTCALが保持している経路テーブルの構造例を示した概略図である。図7(a)は、ルータ回路R0内のリクエスト処理回路RTCTL_REQ0が備える経路テーブルであり、図7(b)は、ルータ回路R1内のリクエスト処理回路(RTCTL_REQ1)が備える経路テーブルである。なお、この経路テーブルは、図1の半導体装置SOCを例としたものである。
【0035】
図7(a)に示すように、ルータ回路R0内の経路情報保持・算出回路RTCALは、ルータ回路R0を起点として、他のルータ回路R1〜R7に到達するまでの経路を各レジスタREGに備えている。例えば、レジスタREG01_xxは、R0からR1に到達する経路を保持し、同様に、レジスタREG06_xxは、R0からR6に到達する経路を保持する。また、例えば、レジスタREG06_xxにおいて、「xx」がRT1となるレジスタREG06_RT1は、1番目の候補となる経路を保持し、RT2となるレジスタREG06_RT2は、2番目の候補となる経路を保持し、RT3となるレジスタREG06_RT3は、3番目の候補となる経路を保持する。
【0036】
また、各レジスタREG06_RT1〜REG06_RT3は、目的地に到達するまでのルータ回路の経由回数(すなわち経路長)を保持している。ここでは、経路長が、1番目の経路≦2番目の経路≦3番目の経路の順で短くなっている。さらに、この経路テーブルでは、ある目的地までの経路に関して3個以下の候補を備えるものとし、少なくとも1番目の経路と2番目の経路とでは、最初に通過するルータ回路が異なるものとしている。最初に通過するルータ回路は、例えば、REG06_RT1ではR2であり、REG06_RT2ではR1である。また、図7(b)に示すように、ルータ回路R1内の経路情報保持・算出回路RTCALも、図7(a)の場合と同様に、ルータ回路R1を起点として、他のルータ回路R0,R2〜R7に到達するまでの経路を各レジスタREGに備えている。ルータ回路R2〜R7内のRTCALも、図示はしないが、同様にして自身を起点とする経路を自身の各レジスタに備えている。
【0037】
ここで、図7(a),(b)に示したような、経路情報保持・算出回路RTCALの記憶部(例えばレジスタ)に保持する経路情報は、半導体装置SOCを設計する際に、予め定めることができる。本実施の形態1による半導体装置は、後述するように、状況に応じて経路を切り換えるダイナミック・ルーティング方式を採用するが、確実に目的地まで辿り着く経路を予め設計段階で定めることができるため、図2に示したインターネットの場合のように、誤った経路情報がアナウンスされるようなことはない。
【0038】
図8は、図1の半導体装置において、そのルータ管理ユニットSOC_NAVIが保持する管理テーブルの一例を示す概略図である。図8に示すように、SOC_NAVIは、例えば各ルータ回路R0〜R7にそれぞれ対応するレジスタR0_CTRL〜R7_CTRLを備え、各クロックサイクル毎(すなわちリアルタイム)に、R0〜R7のそれぞれが前述した「空」または「満」か、およびクロックオンまたはクロックオフかを監視する。これは、図6で述べたように、各ルータ回路内のローカルバッファ管理ユニットBUF_CTLおよびクロック制御回路CK_CTLからバッファ状態信号617およびクロックオフ信号612aを受けることで実現される。図8では、R4が「満」状態あり、R2がクロックオフである例を示している。ここで、特に限定はされないが、SOC−NAVIは、図8において例えば半分以上のルータ回路が「満」の状態であれば、クロックオフとなっているルータ回路に対して、図6のクロックオン信号612bを発行し、動作クロックの供給を再開するように指示を行う。
【0039】
また、図6で述べたように、各ルータ回路の経路情報保持・算出回路RTCALは、図8のような管理テーブルの情報を、他ルータ監視信号616を介してリアルタイムに入手することが可能となっている。RTCALは、この管理テーブルの情報を参照して、リアルタイムに、図7(a),(b)に示したような各経路が有効か無効かを逐次判断する。したがって、前述した特許文献1のように過去のアクセス頻度に基づいて経路を選択するのではなく、リアルタイムに各ルータ回路の状況を判断して経路を選択できるため、例えば実行するアプリケーション等に依存せずに、常にレイテンシが小さくスループットが高くなるような最適経路を選択することが可能となる。
【0040】
図9は、図6のリクエスト処理回路RTCTL_REQにおいて、その経路情報保持・算出回路RTCALが行う経路探索方法の一例を示すフロー図である。経路探索が開始されると(901)、RTCALは、まず、902および903において、図7に示した経路テーブルと、転送対象となるパケットデータに含まれるデスティネーションID(DST_ID)を参照し、そのコンポーネントIPに対応するルータ回路に到達するまでの1番目の経路について判定を行う。902では、この1番目の経路のルータ経由回数をnとし、903では、この1番目の経路について、1つ先のルータ回路が有効(「空」かつクロックオン)であるかを判定する。有効であった場合、経路探索終了(910)となる。一方、無効(「満」またはクロックオフ)であった場合、904へ移行する。
【0041】
904において、RTCALは、図7に示した経路テーブルを参照して、2番目の経路が有るかを判定する。2番目の経路が無かった場合、902に戻り、1サイクル後に再び1番目の経路について判定を行う。一方、2番目の経路が有った場合、この2番目の経路のルータ経由回数をmとし(905)、この2番目の経路について、(m−n+1)つ先までのルータ回路が全て有効であるかを判定する(906)。有効であった場合、経路探索終了(910)となる。一方、少なくともいずれか一つが無効であった場合、907へ移行する。
【0042】
907において、RTCALは、図7に示した経路テーブルを参照して、3番目の経路が有るかを判定する。3番目の経路が無かった場合、902に戻り、1サイクル後に再び1番目の経路について判定を行う。一方、3番目の経路が有った場合、この3番目の経路のルータ経由回数をjとし(908)、この3番目の経路について、(j−n+1)つ先までのルータ回路が全て有効であるかを判定する(909)。有効であった場合、経路探索終了(910)となる。一方、少なくともいずれか一つが無効であった場合、902に戻り、1サイクル後に再び1番目の経路について判定を行う。なお、経路探索終了(910)となった場合、RTCALは、当該経路に向けてパケットデータが出力されるように出力セレクタSEL_Oに対して指示を出す。
【0043】
図9のフローを具体例で説明すると、例えば、図1のルータ回路R0が、IP6(R6)をリクエストの転送先とするパケットデータを受けた場合、RTCALは、図7(a)のレジスタREG06_RT1の経路について判定を行い、n=2とし、1つ先のルータ回路R2が有効であるかを判定する。仮に有効の場合には、経路探索終了となる。すなわち、図10に示すように、R0→R2→R6の経路が選択され、当該サイクルにおいてR2に向けてパケットデータが出力される。
【0044】
一方、仮にR2が無効の場合、RTCALは、図7(a)の経路テーブルに、レジスタREG06_RT2が存在するかを判定し、存在する場合はこれについて判定を行う。図7(a)ではREG06_RT2が存在するため、RTCALは、REG06_RT2の情報からm=3とし、1つ先のルータ回路R1と2つ先のルータ回路R3が有効であるかを判定する。仮に有効の場合には、経路探索終了となる。すなわち、図11に示すように、R0→R1→R3→R6の経路が選択され、当該サイクルにおいてR1に向けてパケットデータが出力される。一方、仮にR1またはR3が無効の場合、RTCALは、同様にして、レジスタREG06_RT3について判定を行い、j=3とし、1つ先のルータ回路R4と2つ先のルータ回路R5が有効であるかを判定する。
【0045】
図12は、図1の半導体装置において、その各クロックサイクル毎の動作例を示すものであり、各ルータ回路の入力バッファBUF_Iおよび出力バッファBUF_Oの状態遷移を示すものである。例えば、時刻(クロックサイクル)t=T0において、ルータ回路R0が、IP0からIP5に向けて発行された1サイクル分のデータの転送要求信号(REQ)を受け付けたものとする。この場合、R0は、入力バッファBUF_IにIP0からのパケットデータ(図12上でPD0と表示)をラッチする。さらに、このt=T0において、ルータ回路R4が、IP4からIP7に向けて発行された2サイクル分のデータの転送要求信号(REQ)を受け付けたものとする。この場合、R4は、入力バッファBUF_IでIP4からのパケットデータ(図12上でPD4と表示)をラッチする。
【0046】
次いでt=T1において、R0は、BUF_OでパケットデータPD0をラッチすると共にこれに対する経路判定を行う。一方、R4は、BUF_Oで1サイクル目のパケットデータPD4をラッチすると共にこれに対する経路判定を行い、BUF_Iで2サイクル目のパケットデータPD4をラッチする。ここで、図16は、図6のリクエスト処理回路RTCTL_REQにおける入力バッファBUF_Iおよび出力バッファBUF_Oの遷移状態の一例を示す説明図である。
【0047】
図16において、BUF_Iは、時刻(クロックサイクル)t=T1’においてパケットデータPD[1]をラッチすると共にBUF_Oに出力し、t=T2’において次サイクルのパケットデータPD[2]をラッチすると共にBUF_Oに出力する。一方、BUF_Oは、t=T2’においてPD[1]をラッチすると共に図6の出力セレクタSEL_Oに出力し、t=T3’においてPD[2]をラッチすると共にSEL_Oに出力する。この場合、t=T1’では、次サイクルでBUF_Iのパケットデータを確実にBUF_Oに掃き出せ、BUF_Iが入力可能な状態となるため「空」となり、t=T3’では、BUF_Iが入力可能な状態であるため「空」となる。一方、t=T2’では、BUF_IとBUF_Oが埋まっており、次サイクルで必ずしもBUF_Oのパケットデータが掃き出せるとは限らないため「満」となる。したがって、図12において、t=T1では、R4が「満」となる。
【0048】
図13は、図12のt=T1における図1の半導体装置の状況を示す説明図である。図13においては、前述したようにルータ回路R4が「満」であることに加えて、ルータ回路R2がクロックオフであるものとする。この場合、R0は、前述した経路探索に際して、1番目の経路(最短経路)となるR4を通過する経路も、2番目の経路となるR2を通過する経路も選択できないため、3番目の経路となるR1→R3→R6→R5の経路を選択し、R1に向けてパケットデータPD0を出力する。一方、R4は、前述した経路探索に際して、1番目の経路となるR5→R7の経路を選択し、R5に向けて1サイクル目のパケットデータPD4を出力する。
【0049】
次いでt=T2において、R1は、BUF_IでパケットデータPD0をラッチする。R4は、BUF_Oで2サイクル目のパケットデータPD4をラッチすると共にR5に向けて2サイクル目のPD4を出力する。R5は、BUF_Iで1サイクル目のパケットデータPD4をラッチする。続いてt=T3において、R1は、BUF_OでパケットデータPD0をラッチすると共にこれに対する経路判定を行う。R5は、BUF_Oで1サイクル目のパケットデータPD4をラッチすると共にこれに対する経路判定を行い、BUF_Iで2サイクル目のパケットデータPD4をラッチする。これに伴い、R5は「満」となる。
【0050】
図14は、図12のt=T3における図1の半導体装置の状況を示す説明図である。図14においては、前述したようにR5が「満」であり、R2がクロックオフである。ここで、R1の経路テーブルにおいて、IP5(R5)に向けた1番目の経路(最短経路)がR3→R4→R5であるものとし、R1は、前述した経路探索に際してこの1番目の経路を選択できるため、R3に向けてパケットデータPD0を出力する。一方、R5は、前述した経路判定に際して1番目の経路となるR7の経路を選択し、R7に向けて1サイクル目のパケットデータPD4を出力する。
【0051】
続いてt=T4において、R3は、BUF_IでパケットデータPD0をラッチする。R5は、BUF_Oで2サイクル目のパケットデータPD4をラッチすると共にR7に向けて2サイクル目のPD4を出力する。R7は、BUF_Iで1サイクル目のパケットデータPD4をラッチする。次いで、t=T5において、R3は、BUF_OでパケットデータPD0をラッチすると共にこれに対する経路判定を行う。R7は、BUF_Oで1サイクル目のパケットデータPD4をラッチすると共に、BUF_Iで2サイクル目のパケットデータPD4をラッチする。これに伴い、R7は「満」となる。
【0052】
図15は、図12のt=T5における図1の半導体装置の状況を示す説明図である。図15においては、前述したようにR7が「満」であり、R2がクロックオフである。ここで、R3の経路テーブルにおいて、IP5(R5)に向けた1番目の経路(最短経路)がR4→R5であるものとし、R3は、前述した経路探索に際してこの1番目の経路を選択できるため、R4に向けてパケットデータPD0を出力する。一方、R7は、BUF_Oでラッチした1サイクル目のパケットデータPD4をIP7に出力する。以降、詳細な説明は省略するが、図12に示すように、順次パケットデータの転送が行われ、IP0からIP5に向けたリクエストと、IP4からIP7に向けたリクエストが完了する。
【0053】
なお、図12においては、説明を容易にするため、図6に示すローカルバッファ管理ユニットBUF_CTLが「満」を検出してからバッファ状態信号617を介してSOC_NAVIに通知し、SOC_NAVIから他ルータ監視信号616を介して他ルータ回路に通知するまでのクロックレイテンシを省略している。仮に、これに複数サイクル要する場合、実際には既に「満」となっているルータ回路([1]とする)に対して他のルータ回路([2]とする)がパケットデータを出力してしまうような状況が懸念される。ただし、この場合、ルータ回路[2]は、ルータ回路[1]から転送許可信号(GNT)を得られずに待つこととなるため、これによる時間的な損失は生じてしまうが、このルータ回路[2]のパケットデータを失うような事態とはならない。また、1つのルータ回路に対して複数のルータ回路等からの転送要求信号(REQ)が競合した場合も同様なことが言える。
【0054】
以上、本実施の形態1によるネットワーク・オン・チップ(NoC)を備えた半導体装置を用いることで、代表的には、リアルタイムにルータ回路を経由する最適経路を決定できるようになるため、ネットワーク上のレイテンシの低減、またはスループットの向上が実現可能になる。なお、前述した図7〜図16の説明においては、リクエスト側の信号経路を想定して各種説明を行ったが、図5で説明したように、加えてレスポンス側の信号経路が独立に設けられている構成においては、リクエスト側とは独立にレスポンス側の信号経路においても図7〜図16で説明したような動作等が並行して行われることになる。
【0055】
(実施の形態2)
本実施の形態2では、実施の形態1で述べた半導体装置を用い、さらに、パケットデータ(インタフェース信号)に含まれるプライオリティ(PRI)を利用してパケットデータの転送を行う動作例について説明する。プライオリティ(PRI)とは、例えば、マスタコンポーネントがある限られたレイテンシ内で転送を行いたい場合、ルータ回路に対して緊急であることを通知する信号である。
【0056】
図17は、本発明の実施の形態2による半導体装置において、図1の半導体装置の一部を抜粋した概略図である。図17においては、以前のサイクルにおいてマスタコンポーネントIP0からの転送要求信号(REQ)を受け付けたルータ回路R0と、マスタコンポーネントIP1とが、あるサイクルにおいて同時にルータ回路R1に対して転送要求信号(REQ)を発行した場合の例を示している。IP0からのパケットデータPD0に含まれるPRIは「7」であり、IP1からのパケットデータPD1に含まれるPRIは「5」である。ここでは、PRIの数字が大きい方が優先度が高いものとする。
【0057】
この場合、R1は、この2つの転送要求信号(REQ)を同時に受け付けることはできないため、図6に示したローカルバッファ管理ユニットBUF_CTLが、双方のPRIの大きさを調停回路ARBを用いて比較し、その結果、PD0の方を採用して、R0に向けて転送許可信号(GNT)を送信する。また、同時に、入力セレクタSEL_Iに指示を出し、PD0を入力バッファBUF_Iに転送する。一方、IP1は、転送許可信号(GNT)が得られなかったため、それが得られるまで何サイクルか待つことになる。
【0058】
なお、仮にIP1が、あるコンポーネントからの転送要求を受け付けたルータ回路([3]とする)であり、更に複数の経路が存在するような場合、このルータ回路[3]に、あるサイクルにおいて転送許可信号(GNT)が得られなかった際には次サイクルにおいて再び図9に示したような経路探索を行うような機能を持たせるとよい。これによって、図17において、例えばPD0の転送に伴いルータ回路R1が「満」状態を当分維持するような状況になれば、この経路を回避することができ、また、仮にルータ回路[3]にとってR1を介する経路が1番目の経路(最短経路)でなかった場合に、最短経路に変更できる可能性がある。すなわち、レイテンシの低減やスループットの向上が期待できる。
【0059】
以上、本実施の形態2の半導体装置を用いることで、実施の形態1で述べた各種効果に加えて、代表的には、緊急の情報をいち早く転送することができ、半導体装置の全体としての処理効率を高めることができる。
【0060】
(実施の形態3)
本実施の形態3では、実施の形態1で説明した図9とは異なる経路探索方法の一例について説明する。図9の経路探索方法は、判定対象となっている経路を選択するか否かを、その経路の経路長と1番目の経路(最短経路)の経路長との間の差分値に基づいて判定を行い、原則的に1番目の経路よりも先に進める観点で判定を行った。すなわち、例えば、1番目の経路の経路長が3で、2番目の経路の経路長が4であった場合、1番目の経路が通れなくとも2番目の経路でルータ回路を2つ進めれば残りの経路長が2となる。一方、本実施の形態3では、図9の場合と同様に経路長の差分値に基づいて判定を行い、原則的に1番目の経路と同等に進める観点で判定を行う。すなわち、例えば、1番目の経路の経路長が3で、2番目の経路の経路長が4であった場合、1番目の経路が通れなくとも2番目の経路でルータ回路を1つ進めれば残りの経路長が3となる。
【0061】
図18は、本発明の実施の形態3による半導体装置において、図6のリクエスト処理回路RTCTL_REQの経路情報保持・算出回路RTCALが行う経路探索方法の一例を示すフロー図である。経路探索が開始されると(1801)、RTCALは、まず、1802、1803、1810aにおいて、図7に示した経路テーブルと、転送対象となるパケットデータに含まれるデスティネーションID(DST_ID)を参照し、そのコンポーネントIPに対応するルータ回路に到達するまでの1番目の経路について判定を行う。1802では、この1番目の経路のルータ経由回数をnとし、1803では、この1番目の経路について、1つ先のルータ回路が有効(「空」かつクロックオン)であるかを判定する。有効であった場合、1810aの自己ループ判定(詳細は図19で後述)へ移行し、これを合格した場合は、経路探索終了(1811)となる。一方、無効(「満」またはクロックオフ)であった場合、または1810aの自己ループ判定が不合格であった場合は、1804へ移行する。
【0062】
1804において、RTCALは、図7に示した経路テーブルを参照して、2番目の経路が有るかを判定する。2番目の経路が無かった場合、1802に戻り、1サイクル後に再び1番目の経路について判定を行う。一方、2番目の経路が有った場合、この2番目の経路のルータ経由回数をmとし(1805)、この2番目の経路について、m=nの場合には1つ先までのルータ回路が有効であるかを判定し、m>nの場合には(m−n)つ先までのルータ回路が全て有効であるかを判定する(1806)。有効であった場合、1810bの自己ループ判定へ移行し、これを合格した場合は、経路探索終了(1811)となる。一方、いずれか一つが無効であった場合、または1810bの自己ループ判定が不合格であった場合は、1807へ移行する。
【0063】
1807において、RTCALは、図7に示した経路テーブルを参照して、3番目の経路が有るかを判定する。3番目の経路が無かった場合、1802に戻り、1サイクル後に再び1番目の経路について判定を行う。一方、3番目の経路が有った場合、この3番目の経路のルータ経由回数をjとし(1808)、この3番目の経路について、j=nの場合には1つ先までのルータ回路が有効であるかを判定し、j>nの場合には(j−n)つ先までのルータ回路が全て有効であるかを判定する(1809)。有効であった場合、1810cの自己ループ判定へ移行し、これを合格した場合は、経路探索終了(1811)となる。一方、いずれか一つが無効であった場合、または1810cの自己ループ判定が不合格であった場合は、1802に戻り、1サイクル後に再び1番目の経路について判定を行う。なお、経路探索終了(1811)となった場合、RTCALは、当該経路に向けてパケットデータが出力されるように出力セレクタSEL_Oに対して指示を出す。
【0064】
図18のフローを具体例で説明すると、例えば、図20に示すように、ルータ回路R0が、IP4(R4)をリクエストの転送先とするパケットデータを受けた場合、まず、経路長が1となる最短経路(R0→R4)について判定を行い、n=1とし、1つ先のルータ回路R4が有効であるかを判定する。仮に有効かつ自己ループ判定も合格の場合には、経路探索終了となり、当該サイクルにおいてR4に向けてパケットデータが出力される。一方、仮にR4が無効か自己ループ判定が不合格の場合、例えば、図21に示すように、RTCALは、2番目の経路について判定を行う。ここでは、2番目の経路は、経路長が3であるR0→R1→R3→R4の経路であるものとし、m=3として、1つ先のルータ回路R1と2つ先のルータ回路R3が有効であるかを判定する。仮に有効かつ自己ループ判定も合格の場合には、経路探索終了となり、当該サイクルにおいてR1に向けてパケットデータが出力される。
【0065】
図19は、図18のフローにおいて、その自己ループ判定処理1810a〜1810cの一例を示すフロー図である。図19において、自己ループ判定が開始されると(1901)、RTCALは、まず、1902において、転送対象となるパケットデータに含まれるソースID(SRC_ID)を参照し、図18で評価対象となっている経路上に、そのSRC_IDを持つコンポーネントIPに対応するルータ回路が含まれていないかを判定する。含まれていれば、自己ループが行われることになるため自己ループ判定不合格となり(1905)、含まれていなければ、1903へ移行する。1903においては、転送対象となるパケットデータに含まれるミドルID(MID_ID)を参照し、図18で評価対象となっている経路上に、このMID_IDを持つルータ回路が含まれていないかを判定する。含まれていれば、通過した経路を戻ることになるため自己ループ判定不合格となり(1905)、含まれていなければ、自己ループ判定合格となる(1904)。
【0066】
前述した図18の経路探索フローは、図9の経路探索フローと比較して、実際に採り得る経路の選択肢が広がるものの、自己ループに入る可能性が高くなる。すなわち、例えば、図21に示したように、パケットデータをR1に転送したサイクルでは、一時的に残りの経路長が長くなる(経路が遠ざかる)ため、仮にR1において、同様に遠ざかる経路が選択されると、遠回りした後に、再び同じ経路に戻ってくる可能性を否定できない。特に、半導体装置SOC内に多数のコンポーネントIPが存在し、それらの接続経路も複雑化した場合などでは、この自己ループの可能性が高くなる。そこで、図18のフローでは、図19に示すように自己ループ判定を行うことで、自己ループの可能性を低減し、前述した図9のフローでは、アルゴリズムの面から自己ループの可能性を低減している。更に、前述した図7の経路テーブルでは、各目的地毎の経路の選択肢数を経路長が短い順で3個以下とすることで、この選択肢数の点からも自己ループの可能性を低減している。
【0067】
以上、本実施の形態3の半導体装置を用いることで、実施の形態1で述べた各種効果に加えて、代表的には、実用上選択できる経路の幅を広げることが可能となる。
【0068】
(実施の形態4)
本実施の形態4では、実施の形態1〜実施の形態3に示した半導体装置を、3次元積層して構成した半導体装置の一例について説明する。図22は、本発明の実施の形態3による半導体装置において、その構成の一例を示す概略図である。図22に示す半導体装置は、実施の形態1や実施の形態2で示した半導体装置SOCが3層積層して構成されている。最下位層は、ロジック機能を備えた半導体装置SOC1であり、中層層は、第1のメモリ機能(例えばDRAM)を備えた半導体装置SOC2であり、最上位層は、第2のメモリ機能(例えばSRAM)を備えた半導体装置SOC3となっている。
【0069】
図23は、図22のより詳細な構成例を示した図である。ここでは、最下位層の半導体装置SOC1から中層層の半導体装置SOC2に転送を行う例を示している。SOC1は、複数のコンポーネント(例えば演算ユニット)およびそれに対応するルータ回路を備え、同様に、SOC2も、複数のコンポーネント(メモリユニット)およびそれに対応するルータ回路を備える。そして、SOC1内の複数のルータ回路の中の一部(ここでは3個)のルータ回路R10,R11,R12が、それぞれ、SOC2内の複数のルータ回路の中の一部(ここでは3個)のルータ回路R20,R21,R22に3次元接続されているものとする。
【0070】
また、SOC1、SOC2およびSOC3は、それぞれ、ルータ管理ユニットSOC_NAVI1、SOC_NAVI2およびSOC_NAVI3を備え、これらは互いに3次元接続されている。例えば、SOC_NAVI1は、図8に示したようにSOC1内の各ルータ回路の状況を監視し、同様に、SOC_NAVI2は、SOC2内の各ルータ回路の状況を監視する。さらに、例えば、SOC_NAVI1は、SOC_NAVI2との通信を行うことによって、SOC2内のR20,R21,R22の状況も監視することができる。加えて、SOC1内の各ルータ回路は、図7に示したような自身の経路テーブルに、目的地としてR20,R21,R22を含んでいる。
【0071】
したがって、図23に示すように、例えば、SOC1内のルータ回路R13からSOC2にパケットデータPDを転送したい場合、R13は、自身の経路テーブルを参照すると共に、SOC_NAVI1からの各ルータ回路の状況を加味して、最適な経路を選択することができる。すなわち、SOC1内の各ルータ回路に加えてR20,R21,R22の状況も加味して、R10からR20にパケットデータPD13aを転送することや、R11からR21にパケットデータPD13bを転送することや、R12からR22にパケットデータPD13cを転送することができる。これによって、各層間で全てのルータ回路同士を接続する場合と比べてコストを低減でき、また、いずれか1箇所を接続する場合と比べて経路長を短くできると共にその出入り口も広がるため、積層された半導体チップ間の通信におけるレイテンシの低減やスループットの向上を低コストで図れる。
【0072】
以上、本実施の形態4の半導体装置を用いることで、実施の形態1〜3で述べた各種効果に加えて、代表的には、低コストで高性能な半導体装置を実現可能となる。
【0073】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【産業上の利用可能性】
【0074】
本実施の形態による半導体装置は、NoC(ネットワーク・オン・チップ)を備えた半導体装置に適用して有益なものであり、1つの半導体チップに限らず複数の半導体チップからなる半導体装置に対しても適用可能である。
【図面の簡単な説明】
【0075】
【図1】本発明の実施の形態1による半導体装置において、その構成の一例を示すブロック図である。
【図2】従来技術となるインターネットで一般的に知られている経路探索方式と、その利点および欠点を示した図である、
【図3】図1の半導体装置において、その各ルータ回路を経由するパケットデータ(インタフェース信号)の基本構造例を示す説明図である。
【図4】図1の半導体装置において、マスタコンポーネントとスレーブコンポーネント間の通信方式の一例を模式的に示すものであり、(a)は転送要求の際の模式図、(b)は(a)の転送要求に対して応答を行う際の模式図である。
【図5】図1の半導体装置において、各ルータ回路の概要構成例を示すものであり、(a)はマスタ機能とスレーブ機能を備えたコンポーネントに対応するルータ回路の概略図、(b)はスレーブ機能を備えたコンポーネントに対応するルータ回路の概略図である。
【図6】図5のルータ回路において、そのリクエスト処理回路の詳細な構成例を示すブロック図である。
【図7】(a),(b)は、図6のリクエスト処理回路において、それぞれ異なるルータ回路内の経路情報保持・算出回路が保持している経路テーブルの構造例を示した概略図である。
【図8】図1の半導体装置において、そのルータ管理ユニットが保持する管理テーブルの一例を示す概略図である。
【図9】図6のリクエスト処理回路において、その経路情報保持・算出回路が行う経路探索方法の一例を示すフロー図である。
【図10】図9の補足図である。
【図11】図9の他の補足図である。
【図12】図1の半導体装置において、その各クロックサイクル毎の動作例を示すものであり、各ルータ回路の入力バッファおよび出力バッファの状態遷移を示すものである。
【図13】図12のT1における図1の半導体装置の状況を示す説明図である。
【図14】図12のT3における図1の半導体装置の状況を示す説明図である。
【図15】図12のT5における図1の半導体装置の状況を示す説明図である。
【図16】図6のリクエスト処理回路における入力バッファおよび出力バッファの遷移状態の一例を示す説明図である。
【図17】本発明の実施の形態2による半導体装置において、図1の半導体装置の一部を抜粋した概略図である。
【図18】本発明の実施の形態3による半導体装置において、図6のリクエスト処理回路の経路情報保持・算出回路が行う経路探索方法の一例を示すフロー図である。
【図19】図18のフローにおいて、その自己ループ判定処理の一例を示すフロー図である。
【図20】図18の補足図である。
【図21】図18の他の補足図である。
【図22】本発明の実施の形態4による半導体装置において、その構成の一例を示す概略図である。
【図23】図22のより詳細な構成例を示した図である。
【符号の説明】
【0076】
610 入力ポート
612a クロックオフ信号
612b クロックオン信号
613 スタンバイ指示信号
615 出力ポート
616 他ルータ監視信号
617 バッファ状態信号
ARB 調停回路
BUF バッファ
BUF_CTL ローカルバッファ管理ユニット
CK_CTL クロック制御回路
DAT データ
DST_ID デスティネーションID
EXT 拡張ヘッダ
GNT 転送許可信号
HD ヘッダ
IP コンポーネント
MID_ID ミドルID
OPC オペコード
PD パケットデータ
PKT_ID パケットID
PKT_SIZE パケットサイズ
PRI プライオリティ
R ルータ回路
R_DAT レスポンスデータ
R_GNT 転送応答許可信号
R_OPC レスポンスオペコード
REQ 転送要求信号
RES 転送応答信号
RTCAL 経路情報保持・算出回路
RTCTL_REQ リクエスト処理回路
RTCTL_RES レスポンス処理回路
SEL セレクタ
SOC 半導体装置
SOC_NAVI ルータ管理ユニット
SRC_ID ソースID

【特許請求の範囲】
【請求項1】
1つの半導体チップで実現され、
第1ルータ回路および第2ルータ回路を含む複数のルータ回路と、
前記第1ルータ回路に接続され、所定の処理を行う第1コンポーネントと、
前記第2ルータ回路に接続され、所定の処理を行う第2コンポーネントと、
前記第1ルータ回路と前記第2ルータ回路の間を前記複数のルータ回路の一部を介して接続する第1配線経路と、
前記第1ルータ回路と前記第2ルータ回路の間を前記複数のルータ回路の他の一部を介して接続する第2配線経路と、
前記複数のルータ回路に接続され、前記複数のルータ回路の有効・無効状態を命令サイクル毎に監視するルータ管理ユニットとを具備してなり、
前記第1ルータ回路は、前記第1コンポーネントから前記第2コンポーネントに向けた命令を受け付けた際に、前記ルータ管理ユニットから前記複数のルータ回路の有効・無効状態を入手し、これに基づいて前記第1配線経路か前記第2配線経路かを選択し、この選択した配線経路に前記命令に伴う信号群を転送することを特徴とする半導体装置。
【請求項2】
請求項1記載の半導体装置において、
前記複数のルータ回路のそれぞれは、前記命令に伴う信号群を一時的に保持するためのバッファ回路を備え、
前記ルータ管理ユニットは、前記複数のルータ回路の有効・無効状態として、前記複数のルータ回路内の前記バッファ回路におけるそれぞれの空きの有無を示すバッファ状態信号を第1記憶部に保持していることを特徴とする半導体装置。
【請求項3】
請求項2記載の半導体装置において、
前記複数のルータ回路のそれぞれは、更に、前記命令サイクル毎に前記バッファ回路に対してクロック信号を供給するクロック制御部を備え、
前記クロック制御部は、所定の条件を満たした際に前記クロック信号の供給を停止する第1機能を備え、
前記ルータ管理ユニットは、前記複数のルータ回路の有効・無効状態として、更に、前記複数のルータ回路内の前記第1機能で前記クロック信号の供給が停止しているか否かを示すクロック状態信号を前記第1記憶部に保持していることを特徴とする半導体装置。
【請求項4】
請求項3記載の半導体装置において、
前記ルータ管理ユニットは、前記バッファ状態信号により前記複数のルータ回路内の前記バッファ回路の空きの割合を判断し、これに応じて前記複数のルータ回路内の前記第1機能に向けて前記クロック信号の供給を再開させるための出力を生成する第2機能を備えることを特徴とする半導体装置。
【請求項5】
請求項1記載の半導体装置において、
前記複数のルータ回路のそれぞれは、自身を起点として自身以外のルータ回路を目的地として、予め設計段階で定められる前記目的地に到達するまでの前記目的地毎の単数または複数の配線経路を第2記憶部に保持していることを特徴とする半導体装置。
【請求項6】
請求項5記載の半導体装置において、
前記第2記憶部には、前記目的地毎の単数または複数の配線経路と共に、この配線経路毎の経路長として、前記目的地に到達するまでに経由するルータ回路の個数が保持されていることを特徴とする半導体装置。
【請求項7】
請求項6記載の半導体装置において、
前記第1配線経路の前記経路長が前記第2配線経路の前記経路長よりも短い場合、
前記第1ルータ回路は、前記第1配線経路上で1番目に通過するルータ回路が有効である際には前記第1配線経路を選択し、前記第1配線経路上で1番目に通過するルータ回路が無効である際には、前記第2配線経路上で順に通過する、前記第1配線経路の前記経路長と前記第2配線経路の前記経路長との差分値を反映した数のルータ回路が全て有効である場合に前記第2配線経路を選択することを特徴とする半導体装置。
【請求項8】
請求項6記載の半導体装置において、
前記第2記憶部には、予め定めた最大値以下となる数の経路が前記目的地毎に保持されており、前記最大値以下となる数の経路は、前記経路長が短い順で定められていることを特徴とする半導体装置。
【請求項9】
請求項1記載の半導体装置において、
前記複数のルータ回路のそれぞれは、同一命令サイクルにおいて自身以外の2つ以上のルータ回路から前記命令を受けた際に、いずれを優先して受け付けるかを判定する調停回路を有することを特徴とする半導体装置。
【請求項10】
請求項1記載の半導体装置において、
前記半導体チップからなる第1半導体チップと、
前記半導体チップからなり、前記第1半導体チップに積層搭載された第2半導体チップを備え、
前記第1半導体チップ内に含まれる前記複数のルータ回路の少なくとも一つは、前記第2半導体チップ内に含まれる前記複数のルータ回路の少なくとも一つと接続され、
前記第1半導体チップ内に含まれる前記ルータ管理ユニットとなる第1ルータ管理ユニットは、前記第2半導体チップ内に含まれる前記ルータ管理ユニットとなる第2ルータ管理ユニットと接続され、前記第2ルータ管理ユニットを介して、前記第2半導体チップ内に含まれる前記複数のルータ回路の少なくとも一つの有効・無効状態を監視することを特徴とする半導体装置。
【請求項11】
第1ルータ回路および第2ルータ回路と、
前記第1ルータ回路と前記第2ルータ回路とを接続する第1配線経路上に設けられたn(n≧1)個のルータ回路と、
前記第1ルータ回路と前記第2ルータ回路とを接続する第2配線経路上に設けられたm(m≧n)個のルータ回路とを具備してなり、
前記第1ルータ回路から前記第2ルータ回路に向けてデータ転送を行う際に、前記第1ルータ回路は、前記第1配線経路上で1番目に通過するルータ回路が有効である場合は、前記第1配線経路を選択し、前記第1配線経路上で最初に通過するルータ回路が無効である場合は、前記第2配線経路上で順に通過する、(m−n)の値を反映した数のルータ回路が全て有効である場合に前記第2配線経路を選択することを特徴とする半導体装置。
【請求項12】
請求項11記載の半導体装置において、
前記第1ルータ回路は、前記第1配線経路上で最初に通過するルータ回路が無効である場合は、前記第2配線経路上で(m−n+1)番目までに通過するルータ回路が全て有効である場合に前記第2配線経路を選択することを特徴とする半導体装置。
【請求項13】
請求項11記載の半導体装置において、
前記第1ルータ回路は、前記第1配線経路上で最初に通過するルータ回路が無効である場合は、(m−n)=1の際には前記第2配線経路上で1番目に通過するルータ回路が有効である場合に前記第2配線経路を選択し、(m−n)>1の際には前記第2配線経路上で(m−n)番目までに通過するルータ回路が全て有効である場合に前記第2配線経路を選択することを特徴とする半導体装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate


【公開番号】特開2010−109869(P2010−109869A)
【公開日】平成22年5月13日(2010.5.13)
【国際特許分類】
【出願番号】特願2008−281737(P2008−281737)
【出願日】平成20年10月31日(2008.10.31)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】