JP5320512B2 - 中継器、中継器の制御方法、およびプログラム - Google Patents

中継器、中継器の制御方法、およびプログラム Download PDF

Info

Publication number
JP5320512B2
JP5320512B2 JP2012546282A JP2012546282A JP5320512B2 JP 5320512 B2 JP5320512 B2 JP 5320512B2 JP 2012546282 A JP2012546282 A JP 2012546282A JP 2012546282 A JP2012546282 A JP 2012546282A JP 5320512 B2 JP5320512 B2 JP 5320512B2
Authority
JP
Japan
Prior art keywords
data
repeater
data storage
buffer
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012546282A
Other languages
English (en)
Other versions
JPWO2012132264A1 (ja
Inventor
孝雄 山口
篤 吉田
友規 石井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2012546282A priority Critical patent/JP5320512B2/ja
Application granted granted Critical
Publication of JP5320512B2 publication Critical patent/JP5320512B2/ja
Publication of JPWO2012132264A1 publication Critical patent/JPWO2012132264A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/10Packet switching elements characterised by the switching fabric construction
    • H04L49/109Integrated on microchip, e.g. switch-on-chip
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/252Store and forward routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/50Overload detection or protection within a single switching element
    • H04L49/505Corrective measures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Small-Scale Networks (AREA)

Description

本発明は、バスを備えた半導体システムにおける中継器、中継器の制御方法、およびプログラムに関する。
バスを備えたデータ伝送システムにおける伝送制御には種々の方式がある。図53Aおよび図53Bは、従来の半導体システムにおける伝送制御方式の例を示す図である。図53Aは、従来の集中型のバス制御の例を示している。図示される集中型のバス制御によれば、複数のバスマスタとメモリとの間が1本のバス910を介して接続され、アービタ912によって各バスマスタからメモリへのアクセスが調停される。このような構成により、複数のバスマスタとメモリとの間のトラヒック干渉を防ぎながらデータを伝送することができる。しかしながら、集積回路の高機能化およびマルチコア化による回路規模の増大、および伝送路を流れるトラヒックの変動の複雑化が進んでおり、集中型のバス制御による集積回路の設計が困難になってきている。
その一方で、近年、並列計算機における接続技術や、ATM(Asynchronous Transfer Mode)網などのネットワーク制御技術を取り入れた分散型のバスを有する半導体集積回路の開発が進んでいる。図53Bは、分散型のバス制御の例を示している。分散型のバスを有する半導体集積回路は、複数の中継器(ルータ:R)が複数のバスでメッシュ状に接続された構成を有している。近年、図53Bに示すような分散型のバスを用いることにより、大規模化した集積回路内のトラヒックを複数のバスに分散して伝送するネットワークオンチップ(Network on Chip:NoC)の取り組みが広がっている。
図54は、NoC、並列計算機、ATM網などで利用される中継器920の構成例を示す図である。伝送されるデータ(トラヒックデータ)は、パケットやセルの単位に分割され、複数の中継器を経由して宛先のノードまで送信される。図54に示す中継器920は、複数の入力ポート0〜3と、複数の入力バッファ922と、複数の出力ポート0〜3と、各入力バッファおよび各出力ポートを相互に接続するクロスバスイッチ924と、データの宛先に応じてクロスバスイッチの接続を切り替えるアービタ912とを備えている。入力ポート0〜3から中継器920に入力されたデータは、一旦入力バッファ922に蓄えられる。
入力バッファ922は、複数のバッファキューを有している。図54に示す例では、各入力バッファ922は、2つの仮想チャネル(VC0、VC1)をバッファキューとして有している。アービタ912は、受信したデータを解析し、利用する出力ポートを決定するルーティング処理を行う。さらに、転送先の中継器の入力バッファのバッファキューと出力ポートとの対応付け、およびバッファキューからデータを送信するためのスケジューリング処理も行う。なお、クロスバスイッチ924の後に複数のバッファキューを有する出力バッファを設ける構成も可能である。そのような構成では、アービタ912は、出力バッファのバッファキューと出力ポートとの対応付けを行う。これらの処理は、データに定められた優先度を示す情報に基づき、または処理要求順にデータをバッファキューに割り振るラウンドロビン方式により行われる。スケジューリング結果に基づき、データは中継処理され、転送先の中継器やバスマスタへ伝送される。各中継器920は、上記のスケジューリング処理に従ってクロスバスイッチ924の接続を切り替えることにより、入力バッファ922内に格納されたデータを宛先へと中継する。
中継器内では、各バッファでの待ち合わせ、クロスバスイッチでの処理遅延などに起因して、トラヒックデータの転送処理に遅延が発生することがある。遅延を最小限に抑えることが要求されるアプリケーション(例えば、緊急情報の通知)では、この遅延の低減が課題となる。ネットワークの規模が大きくなるほど、中継器の数が増加するため、遅延の問題は一層深刻になる。
中継器で生じる遅延の課題は、例えば映像データのように、途切れなくデータが連続的に伝送されるトラヒック(バーストトラヒック)に顕著である。図55は、バーストトラヒックの一例を示している。横軸は時間を表し、縦軸は伝送されるデータ量を示している。図示される例では、一定期間継続する一連のトラヒックが発生した後、トラヒックが一旦止まり、その後再び一定期間継続する一連のトラヒックが発生している。このようなバーストトラヒックは、中継器内のバッファキューを占有しやすく、他のトラヒックへの影響が大きい。そのため、バーストトラヒックが伝送されていると、トラヒックの混雑が発生し、伝送遅延が生じやすい。
具体例として、ラウンドロビンによる割り当て方式により、パケット化されたバーストトラヒックを各バッファキューに格納した場合を想定する。宛先のノードに至る経路上の他の中継器において、バーストトラヒックと他のトラヒックとの干渉により、スループットが低下した場合、バーストトラヒックを格納する全てのバッファキューからの伝送が円滑に行われなくなる。これにより、各バッファキューのスループットが低下し、システム全体の伝送性能が低下する。
このような課題への対策として、特許文献1には、優先度の高いトラヒックを設計時に予め決められたバッファキューに割当てる方式が開示されている。また、バッファキューにおける待ち合わせと、クロスバスイッチにおける処理遅延の両方によって生じる遅延に対する対策が、非特許文献1および非特許文献2に開示されている。非特許文献1には、中継処理を並列化したり、処理の一部をスキップすることにより、中継器における転送処理を簡略化あるいは高速化し、遅延を低減させる様々な方式が開示されている。また、非特許文献2には、中継器内の転送処理を省略することによって転送処理の遅延を低減する方式が開示されている。
図56は、非特許文献2に開示された中継器940の概略構成を示す図である。この中継器940では、入力ポートに入力された一部のデータは、入力バッファ922およびクロスバスイッチ924を経由せずにバイパス用配線930を通って出力ポートから出力される。このような構成により、中継器940内の転送処理が省略されるため、バイパス用配線930を通るデータは通常の処理によって転送されるデータよりも早く転送される。
このように、中継処理の少なくとも一部を省略したり、一部のトラヒックを優先的にバッファキューに割り当てたり、中継処理を並列化することによって中継器における伝送遅延を低減させることができる。その結果、一部のデータを優先的に転送することが可能となる。本明細書では、上記のように中継処理の少なくとも一部を省略したり、一部のトラヒックを優先的にバッファキューに割り当てたり、中継処理を並列化することによって転送処理の遅延を低減させることを「バイパスする」と表現する。また、本明細書において、バイパスされるトラヒックを「バイパストラヒック」と呼び、バイパスされないトラヒックを「非バイパストラヒック」と呼ぶことがある。また、入力バッファまたは出力バッファにおけるバッファキューを「データ格納部」と呼ぶことがある。
特開2002−344509号公報
松谷 宏紀, 鯉渕 道紘, 天野 英晴, 吉永 努, "低遅延オンチップネットワークのための予測ルータの評価", 第7回先進的計算基盤システムシンポジウム(SACSIS’09)論文集, pp.209-218, May 2009. John Kim, "Low-Cost Router Microarchitecture for On-Chip Networks", MICRO'09, December 12-16, 2009
バイパス処理を行う従来の中継器では、一部のトラヒックをバイパスすることにより、通常の中継処理を経て転送される非バイパストラヒックは、転送処理が後回しになる。そのため、非バイパストラヒックの伝送遅延が大きくなるという問題が生じる。特に、伝送路の負荷が高い状態で一部のトラヒックをバイパスすると、出力先のバッファの多くがバイパストラヒックで占有される結果、非バイパストラヒックの伝送遅延は顕著になる。また、非特許文献1に開示されている方式のように、バイパス先や処理内容などを予測する方式を用いた場合、予測ミスにより、バイパスを行った中継器では想定以上に伝送遅延が大きくなる可能性がある。
本発明の一実施形態による中継器は、データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる。前記中継器は、データを受け取る入力部と、前記入力部が受け取った前記データを格納するための複数のデータ格納部を有するバッファ部と、前記バッファ部に格納された前記データを出力する出力部と、前記入力部が受け取った前記データのバースト性を示す情報に基づいて、前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定する振分け処理部とを備えている。
本発明の一実施形態による制御方法は、データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御方法である。前記方法は、データを受け取るステップと、受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、前記複数のデータ格納部に格納された前記データを出力するステップと、受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、を含む。
本発明の一実施形態による制御プログラムは、データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御プログラムである。前記制御プログラムは、前記中継器に実装されたコンピュータに対し、データを受け取るステップと、受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、前記複数のデータ格納部に格納された前記データを出力するステップと、受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、を実行させる。
本発明の一実施形態によるシミュレーションプログラムは、データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器のためのシミュレーションプログラムである。前記シミュレーションプログラムは、コンピュータに対し、データを受け取るステップと、受け取った前記データを複数のデータ格納部のいずれかに格納するステップと、前記複数のデータ格納部に格納された前記データを出力するステップと、受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、を実行させる。
本発明の実施形態によれば、半導体システムのようなデータ伝送システムにおいて、トラヒックの伝送遅延を低減させることが可能となる。
中継器間でバイパスする場合に生じる課題を説明するための第1の図である。 中継器間でバイパスする場合に生じる課題を説明するための第2の図である。 実施形態1の中継器の動作の概要を示す図である。 実施形態1における伝送システムの構成例を示す図である。 本明細書における中継器の表記を説明するための図である。 実施形態1における中継器の構成図である。 実施形態1における中継器のバッファ選択部の構成図である。 パケットの伝送フォーマットの例を示す図である。 実施形態1における中継器の動作の手順を示す図である。 実施形態1におけるバッファ選択部がバイパスを行うか否かを判定する処理の流れを示す図である。 実施形態1におけるバイパス通知を隣接する中継器に通知する処理を示す図である。 実施形態1におけるバイパス通知を隣接する中継器に通知する処理の他の例を示す図である。 実施形態1におけるバイパス通知パケットの構成例を示す図である。 バラフライ網の構成例を示す図である。 簡易ネットワークモデルを説明するための図である。 実施形態1における簡易ネットワークモデルによるバイパス通知処理の流れを示す図である。 中継器の経路情報の例を示す図である。 バイパス通知を受信した中継器の処理の例を示す図である。 バイパス通知を受信した中継器においてバイパス処理を行わないトラヒックに対して行う処理の第1の例を示す図である。 バイパス通知を受信した中継器においてバイパス処理を行わないトラヒックに対して行う処理の第2の例を示す図である。 バイパス通知を受信した中継器においてバイパス処理を行わないトラヒックに対して行う処理の第3の例を示す図である。 実施形態1において、バイパス処理が行われた場合におけるバイパスされないトラヒックに対する中継器の処理の流れを示す図である。 実施形態1において、バイパス処理が行われた場合にバイパスされないトラヒックに対する中継器の処理を示すフローチャートである。 実施形態1において、経路を切り替えるか否かを決定する処理を示すフローチャートである。 実施形態1において、バイパス処理を行わないトラヒックに対する中継器の処理の第1の例を示す図である。 実施形態1において、バイパス処理を行わないトラヒックに対する中継器の処理の第2の例を示す図である。 出力バッファを有しない中継器の構成例を示す図である。 外部に配線してバイパスを行う中継器の構成例を示す図である。 機能拡張によりバスマスタおよびバイパス経路を追加した場合の例を示す図である。 バイパス配線により、混雑が発生することを示す図である。 送信量の調整によってバイパス配線の課題を解決できることを示す図である。 宛先の変更によってバイパス配線の課題を解決できることを示す図である。 複数のバスマスタを分散型のバスを介して接続したトーラス型のトポロジの例を示す図である。 複数のバスマスタを分散型のバスを介して接続した階層型のトポロジの例を示す図である。 実施形態2における中継器の構成図である。 実施形態2における簡易ネットワークモデルによる中継器の動作の例を示す図である。 中継器の経路情報の例を示す図である。 実施形態2において、高優先度トラヒックが伝送された場合における低優先度トラヒックに対する中継器の処理の流れを示す図である。 実施形態2において、経路を切り替えるか否かを決定する処理の流れを示す図である。 実施形態2における低優先度トラヒックに対する中継器の処理の第1の例を示す図である。 実施形態2における低優先度トラヒックに対する中継器の処理の第2の例を示す図である。 実施形態3における中継器の概略構成を示すブロック図である。 中継器によるバイパス判定処理の一例を示すフロー図である。 中継器によるバイパス判定処理の他の例を示すフロー図である。 実施形態3における伝送システムの構成例を示す図である。 実施形態3における中継器の処理の流れの概略を示す図である。 実施形態3における中継器の動作を説明するための図である。 実施形態3における中継器のバッファ選択部の構成図である。 実施形態3におけるバッファ選択部の動作の手順を示す図である。 実施形態3におけるヘッダフリットの詳細構造を示す図である。 実施形態3におけるヘッダフリット解釈部で解析した結果を示す図である。 実施形態3におけるフリット選別部の構成例を示す図である。 実施形態3におけるフリット選別部の処理の流れを示す図である。 実施形態3におけるフリット選別部の他の構成例を示す図である。 実施形態3における出力バッファを有しない中継器の構成例を示す図である。 実施形態3における外部に配線してバイパスを行う中継器の構成例を示す図である。 実施形態4における中継器の概略構成の第1の例を示す図である。 実施形態4における中継器の概略構成の第2の例を示す図である。 実施形態4における中継器の処理の流れの概略を示す図である。 実施形態4における中継器のバッファ選択部の構成図である。 実施形態4におけるバッファ選択部の動作の手順を示す図である。 実施形態4におけるバイパスバッファ送信管理部の処理の流れを示す図である。 実施形態4におけるフリット選別部による選択基準を動的に補正する方法を示す図である。 実施形態4における負荷値情報の配信例を示す図である。 実施形態4における自中継器のバイパスバッファのバッファキューにバーストトラヒックを割り当てる場合の構成例を示す図である。 実施形態4における転送先の中継器内の入力バッファのバッファキューにバーストトラヒックを割り当てる場合の構成例を示す図である。 実施形態4におけるバイパスバッファまたは入力バッファ内の構成例を示す図である。 実施形態4におけるバイパス機能を有しない中継器における処理の手順を示す図である。 実施形態4における優先度に応じてバッファキューを割り当てる動作の例を示す図である。 中継器のメモリバスへの利用例を示す図である。 中継器のマルチコアプロセッサ上での利用例を示す図である。 従来の集中型のバス制御の例を示す図である。 従来の分散型のバス制御の例を示す図である。 従来の中継器の概略構成を示す図である。 バーストトラヒックの例を示す図である。 従来のバイパスを行う中継器の概略構成を示す図である。
本発明の一実施形態による中継器は、データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる。前記中継器は、データを受け取る入力部と、前記入力部が受け取った前記データを格納するための複数のデータ格納部を有するバッファ部と、前記バッファ部に格納された前記データを出力する出力部と、前記入力部が受け取った前記データのバースト性を示す情報に基づいて、前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定する振分け処理部とを備えている。
ある実施形態において、前記バースト性を示す情報は、単位時間当たりの伝送量、送信周期、送信間隔、連続して伝送されるパケット数、および遅延時間の少なくとも1つである。
ある実施形態において、前記バースト性を示す情報は、前記データの許容スループットおよび許容遅延時間の少なくとも一方である。
ある実施形態において、前記バースト性を示す情報は、バースト性を示す識別子、前記データの優先度、前記データの種類を示す識別子、および前記第1ノードを特定する識別子の少なくとも1つである。
ある実施形態において、前記振分け処理部は、前記データの単位時間当たりの伝送量が予め定められた閾値よりも多い場合、前記データの送信周期が予め定められた閾値よりも短い場合、前記データの送信間隔が予め定められた閾値よりも短い場合、連続して伝送されるパケット数が予め定められた閾値よりも大きい場合、および前記データの許容遅延時間が予め定められた閾値よりも短い場合の少なくとも1つの場合に、前記データを前記バッファ部における予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における予め確保された特定のデータ格納部に格納する。
ある実施形態において、前記中継器は、前記バースト性を示す情報を計測する計測部をさらに備えている。
ある実施形態において、前記バースト性を示す情報は、前記データに予め付与されている。
ある実施形態において、前記振分け処理部は、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を有し、前記入力部が受け取った前記データを前記特定のデータ格納部に格納する場合に、前記情報を更新する。
ある実施形態において、前記振分処理部は、前記特定のデータ格納部に格納された前記データの送信完了後、予め定められた時間が経過したとき、前記データ格納部利用情報から前記データに関する情報を削除する。
ある実施形態において、前記中継器は、前記入力部が受け取ったデータを優先的に処理するバイパス処理を行うか否かを判定し、前記バイパス処理を行うと判定した場合に、前記データを前記バッファ部に送るバイパス判定部をさらに備えている。
ある実施形態において、前記出力部は、複数の出力ポートを含み、前記中継器は、前記入力部が受け取った前記データを解析することにより、前記複数の出力ポートの中から前記データを出力する1つの出力ポートを決定するルーティング処理部をさらに備えている。
ある実施形態において、前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定する送信管理部をさらに備えている。
ある実施形態において、前記送信管理部は、各データに付与された優先度または緊急度を示す情報に基づいて、前記複数のデータ格納部からデータを出力させる1つのデータ格納部を選択する。
ある実施形態において、前記送信管理部は、各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる1つのデータ格納部を選択する。
ある実施形態において、前記送信管理部は、各データに付与された前記許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定する。
ある実施形態において、前記送信管理部は、各データに付与された締切時間、中継回数、および前記データが自中継器より前に経由した他の中継器におけるバイパスバッファでの待ち時間の少なくとも1つの情報に基づいて、前記複数のデータ格納部からデータを出力させる1つのデータ格納部を選択する。
ある実施形態において、前記送信管理部は、各データに付与された締切時間、中継回数、および前記データが自中継器より前に経由した他の中継器におけるバイパスバッファでの待ち時間の少なくとも1つの情報に基づいて、前記複数のデータ格納部からのデータの出力順序を決定する。
ある実施形態において、前記送信管理部は、各データのデータ長に基づいて各データの前記許容残り時間を補正する。
ある実施形態において、前記送信管理部は、少なくとも1つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正する。
ある実施形態において、前記バッファ部の負荷を示す情報は、前記バッファにおけるデータの待ち時間、前記バッファの空き容量、および前記バッファの使用量の少なくとも1つである。
ある実施形態において、前記送信管理部は、前記複数のデータ格納部に格納されたデータのうち、バースト性が最も高いと判断されたデータが格納されているデータ格納部から前記データを出力させる。
本発明の一実施形態による制御方法は、データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御方法である。前記方法は、データを受け取るステップと、受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、前記複数のデータ格納部に格納された前記データを出力するステップと、受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、を含む。
本発明の一実施形態による制御プログラムは、データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御プログラムである。前記制御プログラムは、前記中継器に実装されたコンピュータに対し、データを受け取るステップと、受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、前記複数のデータ格納部に格納された前記データを出力するステップと、受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、を実行させる。
本発明の一実施形態によるシミュレーションプログラムは、データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器のためのシミュレーションプログラムである。前記シミュレーションプログラムは、コンピュータに対し、データを受け取るステップと、受け取った前記データを複数のデータ格納部のいずれかに格納するステップと、前記複数のデータ格納部に格納された前記データを出力するステップと、受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか否かを決定するステップと、を実行させる。
以下、添付の図面を参照しながら、本発明のより具体的な実施形態を説明する。以下の説明において、同一または対応する構成要素には同一の参照符号を付している。
(実施形態1)
<1.本実施形態の概要>
まず、本発明の第1の実施形態を説明する。本実施形態は、バイパス処理が実行された場合に発生し得るトラヒックの混雑の問題を解消する技術を提供する。まず、図1Aおよび図1Bを参照しながら、バイパス処理に伴う課題を説明する。
<1.1.バイパス処理に伴う課題>
図1Aは、複数の中継器R1〜R9を介して複数のバスマスタ(BM)と複数のメモリ(M)との間でデータの送受信を行うデータ伝送システムの構成例を示している。図示される構成例では、複数の中継器R1〜R9がバスによってメッシュ状に接続され、各中継器はバスマスタまたはメモリに接続されている。中継器R9と中継器R7との間にはバイパス経路1dが設けられている。
この構成例において、中継器R9に接続されたバスマスタ1aからはバイパス経路1dを通らずに中継器R9、R8、R7を経由してメモリ5にデータが送信される。一方、バスマスタ1bからはバイパス経路1dを通って中継器R9、R7を経由してメモリ5にデータが送信される。この場合、バスマスタ1bから発生したバイパストラヒックとバスマスタ1aから発生した非バイパストラヒックとの間で、共通の宛先であるメモリ5に接続された中継器R7において混雑が発生している。このため、バイパストラヒックは非バイパストラヒックの影響を受けて遅延する。また、中継器R7において、バイパストラヒックは高い優先度で処理され、非バイパストラヒックは低い優先度で処理されるとすると、非バイパストラヒックは、バイパストラヒックの伝送が完了するまで待たされる。このため、非バイパストラヒックの伝送遅延が問題となる。さらに、待たされている非バイパストラヒックが経路上の各中継器のバッファを占有するため、経路上の各中継器に接続されている他のバスマスタからの伝送が妨げられる。
図1Bは、中継器間をバイパスする場合に発生し得る課題の他の例を示す図である。図示される構成では、バスマスタ1cが、宛先であるメモリ5に中継器R7を介してバイパス経路1eを用いてバイパスする例を示している。この例でも、バスマスタ1aから伝送される非バイパストラヒックとバスマスタ1cから伝送されるバイパストラヒックとの干渉により、中継器R7で混雑が発生している。中継器R7において、バイパストラヒックは高い優先度で処理され、非バイパストラヒックは低い優先度で処理されるとすると、非バイパストラヒックは、バイパストラヒックの伝送が完了するまで待たされる。このため、非バイパストラヒックの伝送遅延が問題となる。さらに、待たされている非バイパストラヒックが経路上の各中継器のバッファを占有するため、経路上の各中継器に接続されている他のバスマスタからの伝送が妨げられる。
このように、バイパストラヒックと非バイパストラヒックとが合流する中継器が存在すると、その中継器を経由するトラヒックの伝送遅延が問題となる。また、この例に限らず、一般にあるトラヒックについてバイパス処理が行われると、その他のトラヒックの伝送は後回しになるため、スループットが低下する。
<1.2.本実施形態の動作の概要>
本実施形態の中継器は、上記の課題に対処するため、バイパス処理を行う場合、バイパス処理が行われたことを示す通知(バイパス通知)を隣接中継器に送信する。また、非バイパストラヒックに対する伝送制御を実行する。以下、各処理の概要を説明する。
<1.2.1.バイパス通知>
本実施形態の中継器は、バイパス処理を行う場合、バイパス処理が行われたことを示す通知(バイパス通知)を隣接中継器に送信する機能を備えている。以下、図2を参照しながら本実施形態におけるバイパス通知処理の基本概念を説明する。
図2は、本実施形態において想定するデータ伝送システムの構成例および中継器の動作の概要を示す図である。図示されるデータ伝送システムは、データを送信する第1ノード(送信ノード)10と、データを受信する第2ノード(受信ノード)20と、第1ノード10および第2ノード20の間でデータを中継する複数の中継器600a、600b、600cとを備えている。図2(a)は、第1ノード10から第2ノード20へ、複数の中継器600a、600b、600cを介してデータが伝送されている様子を示している。なお、図示されるデータ伝送システムの構成はあくまでも一例であり、本発明はこのような構成に限られるものではない。
各中継器は、バイパス処理を行うことにより、優先度や緊急度の高いトラヒックを優先的に転送することができる。バイパス処理を行った場合には、伝送路の負荷状況に応じて他の中継器にバイパス処理を行ったことを示すバイパス通知を送信することができる。これにより、バイパス通知を受け取った他の中継器は、伝送負荷を軽減するための種々の対策を実行することが可能となる。この意味で、バイパス通知は、バイパス処理されないトラヒックの伝送を抑制すべきことを他の中継器に知らせるための通知であるといえる。
図2(b)は、1つの中継器600bがバイパス処理を行ったことを示している。図2(c)は、バイパス処理を行った中継器600bが前段の中継器600aにバイパス通知を送信している様子を表している。図2(d)は、バイパス通知を受けた中継器600aが、データの送信経路を変更したり、流量を制限することによって中継器600bにおける伝送遅延を回避する対策を行っている例を示している。このように、バイパス処理を行った中継器600bが、バイパス通知を他の中継器に送信することにより、システム全体の伝送負荷を軽減することが可能となる。
本実施形態では、バイパスする方法として、後述するように、1つの中継器内、または2つの中継器間にバイパス経路を設定する方法や、バースト性のあるトラヒックのような優先度の高いトラヒックに対し、伝送経路上の各中継器において専用のバッファキューを割当てる方法を採用することができる。
バイパス通知による中継処理のオーバーヘッドを抑制するために、バイパス通知を行う機能を全ての中継器が備えている必要はなく、一部の中継器だけが備えていてもよい。例えば、宛先である第2ノード20(例えば、メモリやI/Oなどのスレーブ)に接続された中継器600cだけに当該機能を付与するだけでもよい。すなわち、中継器600cがバイパス処理を行う場合(例えば、中継器600cから第2ノード20にバースト性のあるデータが転送される場合)にのみ、中継器600bにバイパス通知をする形態でもよい。また、バイパス通知は、隣接する中継器間で行われるトラヒックのフロー制御と兼用してもよい。フロー制御とは、送信元の中継器が、データ転送前に送信先の中継器のバッファ確保の可否を通知する処理である。
具体的には、バーストトラヒックをバイパス経路を用いて中継器600cから第2ノード20に転送中に、その影響によって中継器600cにおいてバースト性のないトラヒックの伝送がブロックされる場合を想定する。すなわち、バースト性のあるトラヒックがバースト性のないトラヒックよりも高優先度で伝送される場合を想定する。このとき、中継器600cでは、バースト性のないトラヒックのためにバッファを確保することができない。この状況下で、中継器600bは、バースト性のないトラヒックを転送する際、中継器600cにバッファ確保の可否の問い合わせを行う。中継器600cは、バッファの確保ができないことを中継器600bに通知する。このフロー制御における通知は、実質的に中継器600cから中継器600bへバイパス伝送が行われていることを示す通知と同じである。このように、バイパス通知とフロー制御の通知処理とを兼用することが可能である。
同様に、中継器600c以外の他の中継器600a、600bは、中継器600cからのバイパス通知の中継を、隣接する中継器または第1ノード10との間のフロー制御と兼用するように構成してもよい。これにより、第1ノード10(例えば、DSPやプロセッサなどのバスマスタ)は、中継器600aとの間のトラヒックのフロー制御の結果として、データの送信タイミングや送信量を適応的に制御することが可能である。同様に、中継器600aは、中継器600bとの間のトラヒックのフロー制御の結果として、データの送信タイミングや送信量を適応的に制御することが可能である。
<1.2.2.非バイパストラヒックに対する伝送制御>
次に、非バイパストラヒックに対する伝送制御を説明する。この伝送制御には、以下の2つの態様がある。
第1の制御は、バイパス処理を実行する場合に、自中継器の伝送状態に基づいて、バイパストラヒックと同一の宛先が設定された非バイパストラヒックの出力に対して行われる制御である。この制御は、例えば図1Aに示す中継器R9のように、バイパスされるデータとバイパスされないデータとを同一の宛先(メモリ5)に向けて送信する中継器において実行され得る。自中継器の伝送状態は、例えば、入力バッファや出力バッファの使用量(空き容量)といった情報である。自中継器の伝送状態を考慮して、非バイパストラヒックの送信経路を変更したり、送信流量を抑制するといった方法により、伝送遅延を抑制することができる。第1の制御の詳細については、後述する。
第2の制御は、バイパス処理が実行されない場合に、非バイパストラヒックと他の中継器から送出されたバイパストラヒックとが合流する中継器の伝送状態に基づいて、非バイパストラヒックの出力に対して行われる。この制御は、例えば図1A、1Bに示す中継器R9のように、伝送先の他の中継器R7においてバイパストラヒックと非バイパストラヒックとの間で混雑が生じている際に、その上流(送信ノード側)に位置する中継器において実行され得る。バイパストラヒックと非バイパストラヒックとが合流する中継器の混雑状況に応じて、非バイパストラヒックの送信経路を変更したり、送信流量を抑制することにより、伝送遅延を抑制することができる。混雑状況は、例えばデータ伝送前に行われるフロー制御の際に他の中継器に通知されるように構成することができる。第2の制御の詳細についても後述する。
本実施形態の中継器は、第1の制御および第2の制御の両方を必ずしも実行する必要はない。これらの制御の少なくとも一方を実行するように構成されていればある程度の効果を得ることができる。
以下、本実施形態の具体的な構成および動作を説明する。
<2.システム構成>
図3は、本実施形態による中継器600を用いたデータ伝送システムの構成例を示す図である。図示されるシステムは、送信ノードとして複数のバスマスタ101(BM0〜BM7)を有し、受信ノードとして複数のメモリ105(M0〜M7)を有している。複数のバスマスタ101および複数のメモリ105は、複数の中継器600を介してバスで多段に接続されている。このように、図3に示す伝送システムは、多段接続網(Multistage Interconnection Network:MIN)を構成している。本実施形態では、個々のバスマスタ101が本発明における第1ノードとして機能し、個々のメモリ105が本発明における第2ノードとして機能する。
本実施形態におけるバスマスタ101は、例えばCPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサであり、バスを用いてデータの転送制御を行うことができるデバイスである。メモリ105は、例えばDRAMやSRAM等の半導体メモリである。中継器600は、例えば半導体回路であり、複数のバスマスタ101および複数のメモリ105の間で伝送されるデータを中継する機能を備えている。
図3に示す構成例では、8個のバスマスタ(BM0〜BM7)と、12個の中継器(R0〜R11)と、8個のメモリ(メモリ0〜7)とがバスで接続されている。12個の中継器は、3つのグループに分類される。第1のグループ(G1)は、8個のバスマスタ101に接続される4個の中継器(R0、R1、R2、R3)を含んでいる。第2のグループ(G2)は、第1のグループの後段に接続される4個の中継器(R4、R5、R6、R7)を含んでいる。第3のグループ(G3)は、第2のグループの後段に接続され、8個のメモリに接続される4個の中継器(R8、R9、R10、R11)を含んでいる。
バスマスタ101からメモリ105へのデータ伝送は、パケット交換方式により行われる。各バスマスタは、図3(a)に示すように、送信すべきパケットをフリットと呼ばれる最小単位に分割してから隣接の中継器に送信する。1つのパケットを分割した複数のフリットのうち、最初に送信されるフリットは、ヘッダフリットと呼ばれる。ヘッダフリットには、パケットの先頭であることを示すフラグ情報や、パケットの送信先のアドレス情報などが記述されている。本実施形態におけるパケットおよびフリットのデータ構造の詳細については後述する。
図3に示す多段接続網を構成する各中継器は、2入力2出力のクロスバスイッチ605を備えている。各中継器は、図3(b)に示すように、クロスバスイッチ605を切り替えることにより、入力元と出力先との組合せを変更することができる。このため、トラヒックの流れを2つの伝送経路(伝送経路1、2)の間で切り替えることができる。出力先の伝送経路が異なっていれば、中継器は2種類のトラヒックを各伝送経路に同時に出力することが可能である。このような多段接続網によれば、各中継器600におけるスイッチの切り替えにより、全バスマスタ101と全メモリ105との間で、必ず1つ以上の伝送経路を構築することができる。
一般に、クロスバスイッチによってN個のバスマスタとM個のメモリの全てを接続するためには、N×M個のスイッチが必要となる。ここで、スイッチとは、ある方向に並行する複数の通信路と他の方向に並行する複数の通信路との交点に設けられ、ON/OFFの切り替えによって通信路を動的に構築できるものをいう。通常、必要なスイッチの数は、バスマスタおよびメモリの数が増えるにつれて急激に増加してしまう。これに対し、多段接続網では、入出力数の少ないクロスバスイッチを階層的に接続することにより、少数のスイッチを用いてバスマスタとメモリとの間の接続を切り替えることができる。
図3に示す構成におけるデータ伝送の一例として、バスマスタBM2からメモリM5へとデータが伝送される場合を想定する。このとき、バスマスタBM2は、メモリM5のアドレス(101)が送信先アドレスとして記述されたパケットを複数のフリットに分割し、中継器R1に送信する。分割された複数のフリットは、中継器R1、R7、R10を経てメモリM5へと送信される。メモリM5は、中継器R10から送信された複数のフリットを受け取り、これらのフリットからパケットを再構築する。以上の処理により、バスマスタBM2からメモリM5へとデータが伝送される。
なお、本実施形態における中継器600は、図3に示すような多段接続網を構成する集積回路に限らず、他のトポロジを有する集積回路であっても同様に適用することが可能である。また、本実施形態では、バスマスタ101からメモリ105へのデータ転送は、パケット交換方式により複数の中継器を介して行われるものとして説明するが、データ転送方式は他の方式であってもよい。本実施形態の中継器は、バスマスタからメモリへのデータ伝送に限らず、複数のノード間でデータを伝送するシステムであれば、同様に適用することができる。例えば、メモリからデータを読み出す場合のように、メモリが送信側のノード、バスマスタが受信側のノードであってもよい。また、バスマスタと送受信する相手のノードは、メモリに限定されず、例えば外付けHDDのような外部記録装置と接続するための入出力ポートであってもよい。そのような入出力ポートの例として、USBポートが挙げられる。
図3に示す構成では、第1および第3グループの各中継器(R0〜R3、R8〜R11)は、第2グループの各中継器(R4〜R7)と同様、1つの機能ブロックとして描かれている。しかし、実際には、第1グループの各中継器とバスマスタとの間、および第3グループの各中継器とメモリとの間には、NIC(Network Interface Controller)等の他の機能部が接続される。
図4は、本実施形態におけるデータ伝送システムの一部を示すブロック図である。図4では、簡単のため、1本の伝送経路上に接続された1組のバスマスタ101、第1グループの中継器600a、第2グループの中継器600b、第3グループの中継器600c、およびメモリ105のみを示している。
図4(a)に示すように、バスマスタ101と第1グループの中継器600aとの間には、NIC620aが接続される。NIC620aは、バスプロトコルの変換処理や、バスマスタ101が要求するメモリサイズを確保できるメモリ105を複数のメモリの中から選択し、選択したメモリ105をバスマスタ101に通知する機能を備えている。
一方、第3グループの中継器600cとメモリ105との間には、NIC620cおよびメモリコントローラ630が接続される。NIC620cは、バスプロトコル変換処理や、データ伝送の往路と復路との対応関係付けを行い、往路に対する復路の応答をNIC620aへ返信する。ここで、往路とはバスマスタ101からメモリ105への方向の伝送経路を意味し、復路とはメモリ105からバスマスタ101への方向の伝送経路を意味する。メモリコントローラ630は、NIC620cに接続され、メモリ105へのアクセス順序の制御などを行う。
本明細書では、表記を簡略化するために、図4(b)に示すように、NIC620a、620c、およびメモリコントローラ630の表記を省略する。すなわち、以下の説明においては、バスマスタ101などの送信ノードに直接接続された中継器は、NICを含んでいるものとする。同様に、メモリ105などの受信ノードに直接接続された中継器はNICおよびメモリコントローラを含んでいるものとする。
<3.中継器の構成>
<3.1.中継器の概略構成>
図5Aは、本実施形態における中継器の概略構成を示す図である。以下の説明では、第2グループの中継器600bを例に説明するが、第1および第3グループの中継器についても転送元および転送先が異なるだけで基本的な構成は同様である。以下、第1グループの中継器600aを「前段の中継器」と呼び、第3グループの中継器600cを「後段の中継器」と呼ぶことがある。また、第1および第3グループの中継器を「隣接中継器」と呼ぶことがある。中継器600bは、前段の中継器600aから後段の中継器600cへの行き先を決定し、トラヒックを中継する。
中継器600bは、複数の入力ポート615および出力ポート617を備えている。前段の中継器600aから入力ポート615を介してフリットを受け取り、出力ポート617を介して後段の中継器600cにフリットを送出する。中継器600bは、前段の中継器600aから送られるフリットを受信し、バイパスするか否かを決定するバッファ選択部603を備えている。また、中継器600bは、バイパスされないフリットを一時的に格納する入力バッファ604と、入力元と出力先との接続を切り替えるクロスバスイッチ605と、クロスバスイッチ605から出力されたデータを一時的に格納する出力バッファ606とを備えている。中継器600bは、さらに、バイパスされないフリットを宛先へと転送するための処理を行うルーティング処理部607、バッファアロケータ608、およびスイッチアロケータ609を備えている。
入力バッファ604および出力バッファ606は、例えばSRAMまたはレジスタなどの一次記憶領域である。クロスバスイッチ605は、例えば公知のスイッチ回路である。ルーティング処理部607、バッファアロケータ608、およびスイッチアロケータ609は、後述する動作を実行できるように構成された論理回路によって構成される。
なお、図5Aに示す例では、中継器600bは、バッファ選択部603を2つ、入力バッファ604を4つ、出力バッファ606を2つ備えているが、本発明はこのような例に限られない。図5Aに示す例では、2つのバッファ選択部603のうちの1つのみがバイパス処理を行うように構成されている。
本実施形態における入力バッファ604および出力バッファ606は、複数のバッファキューから構成されている。バッファキューは、仮想チャネル(Virtual Channel)で構成してもよい。仮想チャネルでバッファキューを構成する場合、複数の仮想回線が構築されることになる。ここで、仮想回線とは、物理的には1本である通信回線について、論理的に複数の通信回線であるとみなされた回線を指す。
バッファ選択部603は、受信したフリットがバイパスを要するか否かを、ヘッダフリットに記述された情報に基づいて判断する。バイパスを要しないと判断した場合、バッファ選択部603は、そのフリットが属するトラヒックを入力バッファ604に格納する。バイパスを要すると判断した場合、バッファ選択部603は、そのトラヒックをバイパス経路BPに送出する。
なお、バイパス経路BPは、バイパストラヒックが出力バッファ606へ入力されるように構成してもよいし(バイパスBP1)、出力バッファ606を介さずに隣接中継器600cに入力されるように構成してもよい(バイパスBP2)。出力バッファ606を介さないバイパス経路BP2を用いた場合、バッファリングによる遅延は生じないが、伝送先の中継器600cの入力バッファを一意に決定しておく必要があるため、バッファ選択の自由度はない。一方、出力バッファ606を介す場合は、バッファリングによる遅延は発生するが、出力バッファ606に一旦、格納されるため、転送先の中継器600cの入力バッファの中から転送先の入力バッファを選択できる。このため、出力バッファ606を介す場合のバッファ選択の自由度は出力バッファ606を介さない場合のバッファ選択の自由度に比べて高い。
一方、バッファ選択部603がバイパスしないと判断したトラヒックは、ルーティング処理部607、バッファアロケータ608、およびスイッチアロケータ609によって決定された経路情報に基づいて転送される。ルーティング処理部607は、フリットに記述された宛先情報に基づいて、フリットの転送先の出力ポート617を決定する。ルーティングのアルゴリズムは、動的に行き先を決定する次元順ルーティングや、設計時に送信元と宛先との関係に基づいて一意に行き先が決定されている静的ルーティングを用いてもよい。本発明は、特定のルーティングアルゴリズムには限定されない。
また、バッファアロケータ608は、ルーティング処理部607によって決定された出力ポート617に対応づけられた出力バッファ606の中から、空いているものを選び、入力バッファ604のバッファキューと使用する出力バッファ606とを対応付ける。
更に、スイッチアロケータ609は、トラヒックデータを伝送するために、対応付けが完了している入力バッファ604のバッファキューと出力バッファ606との組から1組を選ぶ。スイッチアロケータ609は、クロスバスイッチ605を介して、選択された入力バッファ604のバッファキューから出力バッファ606へフリットを転送する。その後、出力バッファ606から、出力ポート617を介して、対応する中継器600cへフリットが転送される。
なお、本実施形態の中継器600bは、出力バッファ606を備えているが、組込用途を想定してメモリ量を抑えるために、出力バッファ606を設けない場合もある。その場合、出力バッファ606と転送先の中継器600cの入力バッファとを共用する構成となる。出力バッファ606の代わりに、転送先の中継器の入力バッファを用いても、本実施形態と同様の効果を得ることができる。出力バッファ606を設けない場合、バッファアロケータ608は、入力バッファ604のバッファキューと転送先の中継器600cの入力バッファのバッファキューとを対応付けるように構成される。
<3.2.バッファ選択部の構成>
次に、本実施形態におけるバッファ選択部603の構成を説明する。図5Bは、バッファ選択部603の詳細な構成を示すブロック図である。
バッファ選択部603は、ヘッダフリットのデータ構造を解釈するヘッダフリット解釈部901と、ヘッダフリットに記述された情報に基づいて、受信したデータをバイパスさせるか否かを決定するフリット選別部902とを備えている。フリット選別部902は、バッファ選択部603が有するメモリ(不図示)に格納された優先度閾値903や締切時刻904の情報と、ヘッダフリットに記述された情報とを比較する。フリット選別部902は、受信したデータの優先度や緊急度が低いと判定した場合、データを入力バッファ604に送出する。受信したデータの優先度や緊急度が高いと判定した場合、データをバイパスする。本実施形態では、フリット選別部902が、本発明におけるバイパス制御部および出力制御部の機能を有する。バイパス処理の詳細については後述する。
バッファ選択部603は、さらに、バイパスされるトラヒックの伝送量および中継継続時間を計測する高優先度トラヒック計測部1003と、入力バッファ604および/または出力バッファ606のバッファ使用量およびバッファ使用時間を計測するバッファ使用量計測部1002と、バイパス経路の伝送負荷やバッファ使用量などに基づいてバイパス通知を隣接中継器600aに送信するバイパス通知判定部(バイパス通知部)1001とを備えている。バイパス通知判定部1001は、不図示のメモリに格納されたトラヒック閾値907およびバッファ閾値905の情報と、計測されたトラヒック情報およびバッファ情報とに基づいてバイパス通知処理を行う。バイパス通知処理の詳細は後述する。
なお、本実施形態の中継器600bは、バイパスする配線およびバイパス通知機能を備えているが、本発明の中継器は、中継器内に必ずしもこれらを備えている必要はない。バイパス配線を行わずにバイパスを行う例は、実施形態2において説明する。
<4.パケット、フリットの構成>
次に、本実施形態におけるパケットおよびフリットの構造を説明する。
図6は、パケット500の伝送フォーマットの一例と、パケット500を複数のフリットに分割した例とを示している。パケット500は、ヘッダフィールド501、データフィールド502、および制御コードフィールド503を有している。
ヘッダフィールド501には、例えば、パケットの先頭であることを示すフラグ情報、送信先のアドレス、送信元のアドレス、パケットの優先度を示す情報、およびパケットが送信されてから経過した時間を示す情報(経時情報)が記述される。経時情報の記述方法は任意であり、送信されてから経過した時間を判別できる値であればどのような記述方法であってもよい。例えば、送信された時刻、送信されてから経過した時間、または通過した中継器の数(ホップ数)などが記述され得る。ヘッダフィールド501には、上記以外の情報が記述されていてもよい。ヘッダフィールド501のデータのうち、送信先のアドレスおよび送信元のアドレスに基づいて、パケット500の中継処理と、受信側での受信処理とが行われる。
データフィールド502には、例えば、映像データや音声データなどが記述される。制御コードフィールド503には、例えば予め定められた終了コードが記述される。終了コードの存在により、パケット500が終了することが判別される。制御コードフィールド503には、終了コード以外の情報が格納されていてもよい。
バスマスタ101は、前述のように、パケット500を、フリットと呼ばれる小さい単位に分解して伝送する。1フリットのサイズは、バスを使って1サイクルで伝送可能なサイズであり、バス幅に応じて決定される。パケット500は、ヘッダフリット504、複数のデータフリット505、およびテイルフリット505に分割される。ヘッダフリット504には、上記のヘッダフィールド501に格納されたフラグ情報や送信先アドレス情報などが含まれる。なお、本明細書では、特別な断りを入れない限り、フリットを含めたデータ列をパケットと表現する。
ヘッダフリット504に続くデータフリット505およびテイルフリット506には、送信先を特定するアドレス情報は格納されていない。その理由は、ヘッダフリット504に続く各フリットは、ヘッダフリット504と同じ宛先に送られるためである。ヘッダフリット504によって宛先が決まり、そのトラヒックのフリットを出力する出力バッファ606が決まると、後に続くフリットは、ヘッダフリット504と同じ出力バッファ606を利用してヘッダフリット504が示す宛先に伝送される。
テイルフリット506には、そのフリットがパケットを構成する最後のフリットであることを示すフラグ情報(制御コードフィールド503に格納されている終了コード)が付与されている。また、ヘッダフリット504とテイルフリット506以外の複数のデータフリット505は、主にデータを伝送するフリットであり、パケット500のデータフィールド502に対応する。
受信側のメモリ105は、テイルフリット506に記述されたフラグ情報(終了コード)を検出すると、その終了コードに基づき、伝送された複数のフリットをパケットへ再構築する。
1パケットのサイズは、例えば128バイトであり、1フリットのサイズは、例えば32ビットまたは64ビットに設定される。ただし、1パケットのサイズおよび1フリットのサイズはアプリケーションによって異なり得るため、上記のサイズは一例に過ぎない。1フリットの長さは、送信先のアドレスや送信元のアドレスなどの制御データを記述できる長さを基準としてもよい。
各中継器600は、前述したように、送られてきたフリットを蓄えるための入力バッファ604を備えている。通常処理(非バイパス処理)において、フリットは、一旦入力バッファ604に蓄えられた後、クロスバスイッチ605の切り替えによって宛先のメモリへと続く中継器、または宛先のメモリへ送信される。
<5.中継器の動作>
<5.1.バイパス動作の概要>
次に、中継器600bの動作を説明する。図7は、中継器600bの動作の概略を示すフローチャートである。
まず、中継器600bのバッファ選択部603は、隣接の中継器600aからフリットを受信する(S801)。次に、バッファ選択部603は、バイパスを行うべきか否かを判定する(S802)。バイパスを行うべきであると判断した場合、バッファ選択部603は、バイパスを行うとともに、バイパス通知を行うべきか否かを判定する(S807)。バイパス通知を行うべきであると判定した場合、バッファ選択部603は、バイパス通知を隣接する中継器600aに送出する(S808)。バイパス通知を行うべきであると判定しなかった場合、バイパス通知は送出されない。バイパスを行ったフリットは出力バッファ606へ送信され、対象とするバッファキューから伝送される(S806)。なお、バイパスを行うか否かの具体的な判定方法、バイパス通知を発行する動作の詳細については後述する。
一方、ステップS802においてバッファ選択部603がバイパスを行わないと判定した場合、ルーティング処理部607は、ヘッダフリットを解析して出力ポートを決定する(S803)。続いて、バッファアロケータ608は、ルーティング処理で選ばれた出力ポートに対応する出力バッファ606のうち、空いている出力バッファ606を選び、当該出力バッファと自中継器600bの入力バッファ604のバッファキューとの対応付けを行う(S804)。なお、出力バッファ606を設けない構成では、バッファアロケータ608は、出力バッファ606の代わりに、転送先の中継器600cの入力バッファと自中継器600bの入力バッファ604との対応付けを行う。次に、スイッチアロケータ609は、トラヒックデータを伝送するために対応付けが完了している入力バッファ604のバッファキューと出力バッファ606との組から1組を選び(S805)、対象とするバッファキューからデータを1フリット単位、またはパケット単位で伝送する(S806)。
以上のS803からS806の処理によれば、中継器600bに入力されたフリットが中継器600bから出力されるのに最低3サイクルかかる。具体的には、以下の3サイクルを要する。
(1)ステップS803に対応する処理。すなわち、ヘッダフリットに記述された宛先アドレスに基づいて、出力ポート617(出力物理チャネル)の計算(Routing computation:RC)が行われる。
(2)ステップS804に対応する処理。すなわち、使用する出力バッファ606または転送先の中継器600cの入力バッファのバッファキュー(出力仮想チャネル)の割り当て(Virtual channel allocation:VA)が行われる。
(3)ステップS805およびS806に対応する処理。すなわち、クロスバスイッチ605のアービトレーション(Switch allocation:SA)が行われ、フリットをクロスバスイッチ605上に送出し、通過させる(Switch traversal:ST)。なお、別の実装方法として、フリットをクロスバスイッチ605上に送出し、通過させる処理を4サイクル目で行う形態もある。
これに対し、ステップS802においてバイパスすべきと判定されたフリットについては、上記のステップS803〜S805の処理は省略され、ステップS806に対応する処理(ST)のみが行われる。その結果、バイパスされたフリットは、最低1サイクルで伝送される。
<5.2.バイパス判定>
次に、ステップS802において行われるバイパス判定の具体的な処理を説明する。
図8は、バッファ選択部603によるバイパスを行うか否かを判定する処理の流れを示す図である。まず、図5Bに示すヘッダフリット解釈部901は、ヘッダフリットの優先度の記述の読取を行う(S901)。次に、フリット選別部902は、メモリに格納された優先度閾値903の値とフリットの優先度とを比較し、フリットの優先度が予め定めた優先度以上であるか否かを判定する(S902)。ここで、フリットの優先度の値は、例えば、低遅延伝送の要求の度合いが高いほど、高い値に設定され、優先度が高いものとして扱われる。
フリットの優先度の値が予め定めた優先度以上であれば、フリット選別部902は、そのフリットを含むフローを、バイパス処理を行うフローであると判定し、対象とするトラヒックをバイパスさせる(S905)。バイパスされたトラヒックは高優先度トラヒック計測部1003に送られた後、伝送される。
一方、優先度の値が予め定めた優先度よりも小さければ、ヘッダフリット解釈部901は、ヘッダフリットの経時情報の記述の読取を行う(S903)。次に、フリット選別部902は、メモリに格納された締切時刻情報904とフリットの経時情報とを比較し、フリットが締切時刻より前に伝送されているか否かを判定する(S904)。締切時刻を経過している場合は緊急度が高いデータであると判断し、フリット選別部902は、バイパス伝送を行う(S905)。締切時刻を経過していない場合は緊急度が低いデータであると判断し、バイパス伝送は行わない。
ヘッダフリットに記述される優先度の値は、データの緊急度や重要度に基づいて設計時に決定され得る。例えば、映像や音声といった低遅延伝送が要求されるデータや、ユーザが操作したコマンドやシステム異常を通知する情報のように、緊急度が高いデータには高い優先度が付与される。逆に、ファイル転送やバックグラウンドで処理を行うアプリケーションのデータなど、緊急性が比較的低いデータには低い優先度が付与される。
ヘッダフリットに記述される経時情報は、データ送信を行うバスマスタ101が付与する。経時情報は、絶対的な記述(例:○時△分×秒)であってもよいし、相対的な記述(例:○○秒以内)であってもよい。
なお、締切時刻を用いずに、中継器を通過する毎に優先度を変更する構成であってもよい。各中継器において、締切時刻が近いデータほど優先度を高く設定することにより、締切時刻の情報を用いなくても、緊急度の高いデータをバイパスさせることが可能となる。例えば、中継器内での残留時間の長いデータの優先度を高い優先度に割り当て直すことで、締切時刻を用いずに優先度の情報のみを用いて上記と同様の効果を得ることが可能である。
また、フリット選別部902は、ヘッダフリットの優先度および経時情報の両方が、それぞれ優先度閾値903および締切時刻904を越えた場合にのみバイパスするように構成されていてもよい。あるいは、図5Aに示すように、バイパスする経路を2種類(バイパスBP1、バイパスBP2)設け、優先度および緊急度に応じていずれかを選択するようにフリット選別部902が構成されていてもよい。例えば、優先度および経時情報の両方が閾値を越えた場合に、出力バッファ606を介さないバイパスBP2を選択し、優先度および経時情報のいずれか一方が閾値を超えた場合に出力バッファ606を介して伝送するバイパスBP1を選択するように構成されていてもよい。このような構成により、緊急度や重要度の高いデータをより早く伝送することが可能となる。
本実施形態では、優先度および経時情報がフリットの低遅延伝送の要求度の高さを示す評価指標として用いられるが、本発明はこのような例に限られない。優先度や経時情報の代わりに、伝送するトラヒックのパケット長や、送信ノードから受信ノードまでに通過する中継器数(中継段数)を評価指標にしてもよい。例えば、パケット長が短く、中継段数が少ないパケットを優先的に伝送することにより、バイパスの効果を高めることが可能である。また、バスマスタ101または中継器600において、バイパスするパケットであることを示すフラグをヘッダフリットに設けることによってバイパスの要否を判断できるようにしてもよい。
あるいは、送信ノードと受信ノードとの対応関係(例:特定のバスマスタのメモリアクセスのみをバイパスさせる)や、トラヒックの種類に応じてバイパスを行うか否かを判定してもよい。これらの情報を用いてバイパスさせる経路を限定することにより、不必要なバイパス経路を持つ必要がなくなり、設計が複雑になることを回避できる。
本実施形態では、図5Aに示すバイパス方式を想定したが、中継器におけるバイパス方式はこのような例に限定されない。動的にバイパスする伝送路を確保する方式であってもよいし、予め設計時にバイパスする伝送路を確保する方式であってもよい。また、図5Aに示すような、転送処理を回避するために物理的に配線を独立させる方式以外の方式を採用してもよい。具体的には、非特許文献1に開示されている、特定の送受信ノード間のトラヒック伝送に対してはルーティング処理などを省略または並列化して低遅延化を図る方式であってもよい。また、中継器の構成として、複数のバッファを設け、パケットに付与された優先度情報や経時情報などに応じて複数のバッファにパケットを振り分け、特定のバッファに格納されたパケットを優先的に伝送する方式であってもよい。さらに、特定の期間、特定のバッファを予約して伝送経路を確保して低遅延化を図る方式であってもよい。
<5.3.バイパス通知判定>
次に、図7のステップS807において行われるバイパス通知を行うか否かの判定の具体的な処理、およびステップS808におけるバイパス通知の具体的な処理を説明する。
図9Aは、バイパス通知を隣接する中継器900aに通知する処理の流れを示す図である。なお、以下の説明において「高優先度トラヒック」とは、図7に示すステップS802においてバイパスすべきと判定されたトラヒックを指す。
図5Bに示すバッファ選択部603の高優先度トラヒック計測部1003は、バイパスされる高優先度トラヒックの伝送量を計測し(S1001)、計測結果をバイパス通知判定部1001に送出する。バイパス通知判定部1001は、トラヒックの単位時間当たりの伝送量が予め定めた伝送量の閾値を越えたか否かを判定する(S1004)。伝送量の閾値を超えたと判定した場合、バイパス通知判定部1001は、バイパスしないトラヒックへの影響が大きくなると判断し、バイパス通知範囲と通知間隔とを決定し、他の中継器に対しバイパス通知を行う(S1007)。なお、伝送量の閾値は、トラヒック閾値907の情報に含まれている。
バイパス通知は、バイパス通知パケットを前段の隣接中継器600aに送信することによって行う。バイパス通知パケットの構造については後述する。
ここで、図3のネットワーク構成から離れ、中継器600がさらに多段的に接続されている構成を考える。すなわち、バスマスタ101からメモリ105までの各伝送経路上において、多数の中継器600が直列的にトラヒックを中継する構成を考える。
このような構成において、中継器の1つがバイパス通知を行うと判断した場合、バイパス通知範囲は、例えば、以下の方法で決定される。1万サイクルを単位時間として、単位時間中にバイパス用の伝送路の物理帯域のうち、1/4以上の帯域が高優先度トラヒックに占有された場合、1ホップ先の中継器までバイパス通知を行う。1/2以上の帯域が高優先度トラヒックに占有された場合、2ホップ先の中継器までバイパス通知を行う。3/4以上の帯域が高優先度トラヒックに占有された場合、バスマスタ101に接続された中継器までバイパス通知を行う。以上の方法により、バイパス処理を行った中継器におけるバイパス用の伝送路の伝送負荷に応じて、バイパス通知範囲を柔軟に変化させることができる。その結果、バイパス通知を受け取った他の中継器は、通知を発行した中継器におけるトラヒック干渉の緩和策を実施することができる。なお、バイパス通知パケットを受信した中継器の振舞いについては、後述する。
また、通知間隔については、例えば、以下の方法で決定される。1万サイクルを単位時間として、単位時間内にバイパスを通過する高優先度トラヒックを検出した場合のみバイパス通知を行う。このような方法により、高優先度トラヒックが頻繁に検出された場合は、短い通知間隔でバイパス通知が行われる。逆に、高優先度トラヒックが頻繁に検出されない場合は、長い通知間隔でバイパス通知が行われる。その結果、トラヒック干渉の頻度が高くなった場合、早急にトラヒック干渉を抑制する処理が可能となる。逆に、トラヒック干渉の頻度が低くなった場合、バイパス通知のメッセージを減少させながら、トラヒック干渉を抑制することが可能となる。
バッファ選択部603における高優先度トラヒック計測部1003は、高優先度トラヒックが途切れずに継続してバイパスを通過する時間(中継継続時間)を計測し(S1002)、計測結果をバイパス通知判定部1001に送出する。バイパス通知判定部1001は、バイパスされたトラヒックの中継継続時間が予め定められた閾値を越えたか否かを判定する(S1005)。中継継続時間が閾値を超えたと判定した場合、バイパス通知判定部1001は、バイパスしないトラヒックへの影響が大きくなると判断し、バイパス通知範囲と通知間隔とを決定し、他の中継器に対してバイパス通知を行う(S1007)。なお、中継継続時間の閾値も、トラヒック閾値907の情報に含まれている。
バイパス通知範囲は、例えば、以下の方法で決定される。1万サイクルを単位時間として、単位時間中に高優先度トラヒックがバイパスを通過する時間が単位時間の1/4を超えた場合、1ホップ先の中継器までバイパス通知を行う。単位時間中に高優先度トラヒックがバイパスを通過する時間が単位時間の1/2を超えた場合、2ホップ先の中継器までバイパス通知を行う。単位時間中に高優先度トラヒックがバイパスを通過する時間が単位時間の3/4を超えた場合、バスマスタに接続された中継器までバイパス通知を行う。以上の方法により、バイパス処理を行った中継器におけるバイパス用の伝送路の伝送負荷に応じて、バイパス通知範囲を柔軟に変化させることができる。その結果、バイパス通知を受け取った他の中継器は、通知を発行した中継器におけるトラヒック干渉の緩和策を実施することができる。
なお、通知間隔については、上記の高優先度トラヒックの伝送量の閾値を超えた場合と同様の方法で決定すればよい。
さらに、バッファ選択部603のバッファ使用量計測部1002は、入力バッファ604および/または出力バッファ606のバッファ使用量の計測を行い(S1003)、計測結果をバイパス通知判定部1001に送出する。バイパス通知判定部1001は、バッファ使用量が予め定めた閾値(バッファ閾値905)を超えたか否かを判定する(S1006)。バッファ使用量が予め定めた閾値を超えたと判定した場合、バイパス通知判定部1001は、バイパスの影響により、バイパスしないトラヒックへの影響が大きくなったと判断し、バイパス通知範囲と通知間隔を決定し、他の中継器に対してバイパス通知を行う(S1007)。
バイパス通知範囲は、例えば、以下の方法で決定される。1万サイクルを単位時間として、入力バッファ604(または、出力バッファ606)の空き容量が、全体の3/4以上であれば、1ホップ先の中継器までバイパス通知を行う。単位時間中の入力バッファ(または出力バッファ)の空き容量が全体の1/2以上であれば、2ホップ先の中継器までバイパス通知を行う。単位時間中の入力バッファ(または出力バッファ)の空き容量が全体の1/2に満たない場合、バスマスタに接続された中継器までバイパス通知を行う。以上の方法により、入力バッファおよび/または出力バッファの空き容量に応じてバイパス通知範囲を柔軟に変化させることができる。その結果、バイパス通知を受け取った他の中継器は、通知を発行した中継器におけるバイパスされないトラヒックの干渉の緩和策を実施することができる。
通知間隔については、上記の高優先度トラヒックの伝送量の閾値を超えた場合と同様の方法で決定すればよい。
なお、バッファの使用量ではなく、バッファでの待ち時間によって判定を行う方法であってもよい。バッファ容量が小さい場合、使用量よりも待ち時間で評価する方が、中継器での混雑状況を反映させやすい場合がある。
バイパス通知パケットの通知範囲の指定は、例えば以下の方法で実現できる。まず、バイパス通知判定部1001は、上記の方法で決定したホップ数を「中継回数」としてヘッダフリットに記述して前段の中継器に送信する。バイパス通知パケットを受け取った中継器は、中継回数の値から所定の値だけ減じ、さらに前段の中継器にバイパス通知パケットを転送する。このように、中継器を通過する毎に中継回数の値を減算し、中継回数の値が0以下になった段階でバイパス通知パケットの転送を中止するように各中継器を構成することによって通知範囲の指定が実現できる。また、通知方向としては、バスマスタ101からメモリ105へ伝送される往路のトラヒックにおいては、上記のように、送信元であるバスマスタ101側にバイパス通知パケットを送信するようにすればよい。一方、メモリ105からバスマスタ101へ伝送される復路のトラヒックにおいては、送信先であるメモリ105側にバイパス通知パケットを送信するようにすればよい。このように、通知方向を送信元であるバスマスタ101側、または送信先であるメモリ105側に限定することで、負荷の高い中継器との間で、効率的にメッセージを通知することが可能となるため、通知メッセージの削減が可能となる。
なお、図9Aに示す例では、高優先度トラヒックの伝送量の計測、中継継続時間の計測、およびバッファ使用量の計測を並列的に行っているが、これらを直列的に行ってもよい。直列的に行う場合、いずれかの判定で閾値を超えた場合にバイパス通知を送信するようにしてもよいし、全ての判定で閾値を超えた場合のみバイパス通知を送信するようにしてもよい。
図9Bは、各判定を直列的に行う場合の処理の一例を示す図である。この例では、バイパス通知判定部1001は、いずれかの判定で閾値を超えた場合にバイパス通知を行う。まず、バイパス通知判定部1001は、高優先度トラヒック計測部1003から高優先度トラヒックの伝送量の情報を取得する(S2001)。次に、高優先度トラヒックの伝送量が閾値を超えたか否かを判定する(S2002)。伝送量が閾値を超えたと判定した場合、バイパス通知判定部1001は、バイパス通知範囲(ホップ数)と通知間隔とを決定し、他の中継器に対し、バイパス通知を行う(S2007)。高優先度トラヒックの伝送量が閾値を超えていないと判定した場合、バイパス通知判定部1001は、高優先度トラヒック計測部1003から高優先度トラヒックの中継継続時間の情報を取得する(S2003)。続いて、中継継続時間が所定の閾値を超えたか否かを判定する(S2004)。中継継続時間が閾値を超えたと判定した場合、バイパス通知判定部1001は、他の中継器に対し、バイパス通知を行う(S2007)。中継継続時間が閾値を超えていないと判定した場合、バイパス通知判定部1001は、バッファ使用量計測部1002からバッファ使用量の情報を取得し(S2005)、バッファ使用量が閾値を超えたか否かを判定する(S2006)。バッファ使用量が閾値を超えたと判定した場合、バイパス通知を行う(S2007)。バッファ使用量が閾値を超えていないと判定した場合、伝送負荷は低いと判断され、処理は終了する。このように、各判定を直列的に行うことにより、最初の判定処理でバイパス通知を行うことを決定した場合に他の判定処理を省略してもよい。
また、映像データのように、振幅が大きく、連続したトラヒックが瞬間的に伝送されることがある。このようなトラヒック(バーストトラヒック)は、他のトラヒックに対し、トラヒック干渉を引き起こすため、影響が大きい。このため、上記の判定基準の他、例えば中継継続時間中のトラヒックの最大振幅や送信間隔に基づいてバイパス通知を行うか否かを判断してもよい。なお、振幅とは、単位時間当たりに伝送されるデータ量を意味し、送信間隔とは、連続で送信されるパケット間の時間間隔を意味する。バイパス通知を行うか否かの判定方法、および通知範囲および通知間隔の決定方法は、上記の例に限らず、どのような方法であってもよい。
なお、以上の説明では、図7のS807に示すバイパス通知を行うか否かの判定が行われる場合の例を示したが、本発明ではステップS807に相当する処理を省略してもよい。すなわち、ステップS802においてバイパスを行うと判定された場合に、常にバイパス通知を行ってもよい。
図10は、バイパス通知パケット1100の構成例を示す図である。前述のように、バイパス通知パケット1100の先頭には、送信元アドレス1101と送信先アドレス1102とが記述される。また、バイパス通知パケット1100は、バイパス通知のメッセージであることを示す識別子1103および中継回数を示す情報1104を有している。バイパス通知パケットの通知方法としては、隣接の中継器に対して同報的に通知してもよいし、トラヒックを送信している中継器に対してのみ通知してもよい。なお、図10に示す例では、通知範囲を中継回数によって指定するが、時刻を直接記載する方法や、送信されてからの経過時間を記述して、通知を行う中継器の範囲を時間で制限してもよい。
このようなバイパス通知パケット1100を周囲の他の中継器に送信することにより、バイパス通知パケット1100を受け取った他の中継器は、転送先でバイパスが生じていることを知ることができる。その結果、遅延を回避するために、例えば、伝送経路を変更する等の対処を行うことができる。これにより、伝送遅延を緩和することが可能となる。
<5.4.バイパス通知を受け取った中継器の動作>
次に、バイパス通知を受け取った中継器が実行する動作の例を説明する。以下の説明では、理解を容易にするために、図3の構成ではなく、図11の構成を例に説明する。
図11は、複数のバスマスタ101から複数の中継器600を介して複数のメモリ105にアクセスできるバタフライ網を示している。バタフライ網は、バスマスタ101からメモリ105へは、どの中継器を介しても論理的に等距離である。図11に示す例では、バスマスタ101からメモリ105へ直進するトラヒック(実線)のみがバイパス対象となる。ここで直進するトラヒックとは、例えば、各中継器において1番目の入出力ポートを経由して伝送されるトラヒックを意味する。一方、バスマスタからメモリへ直進しない伝送経路においては、バイパス処理は行われない。このような構成によれば、中継器のバイパスに必要な配線を削減することが可能である。バタフライ網ではなく、メッシュ網のような他のネットワークトポロジを採用する場合であっても、バイパスの有無をノード配置(バスマスタの配置およびメモリの配置)の関係から決定してよい。
図12は、以下の説明で利用するネットワークモデル(簡易ネットワークモデル)を説明するための図である。以下の説明において用いるネットワークモデルは、図12(c)に示すように、送信元(ノードA)から送信先(ノードD)まで2経路存在する網である。ノードBおよびノードCは中継するノードである。このネットワークモデルでは、必要に応じて2つの伝送経路のうちの1つを選択することが可能である。
図12(a)は、図11に示すバタフライ網であり、図12(c)と対応付けて、送信元、中継、送信先の各ノードの対応関係の一例を示している。なお、本実施形態の中継器は、図3や図11に示すネットワークに限らず、図12(b)に示すようなメッシュ網においても同様に適用できる。図12(b)は、メッシュ網の一例を示しており、同様に、図12(c)に対応付けて、送信元、中継、送信先の各ノードの対応関係の例を示している。以下の説明では、図12(a)、(b)のような送信元、中継、送信先の関係を、簡易的に図12(c)に示す簡易ネットワークモデルを用いて表す。ただし、本発明は、このような簡易ネットワークモデルに限定されるものではない。また、送信元および送信先は、図12に示す例に限られず、例えば送信元が受信ノード(例:メモリ)であってもよい。
図13Aは、本実施形態における中継器がバイパス通知を受け取った場合に想定される経路を簡易ネットワークモデルに基づいて表した図である。まず、経路上の中継器(ノードC)でバイパス処理が発生すると((1)バイパス発生)、中継器(ノードC)は、トラヒックの送信元である中継器(ノードA)に対してバイパス通知のメッセージを送信する((2)通知)。送信元の中継器(ノードA)は、バイパス通知を受け取ると、経路を変更して、中継器(ノードB)を経由して送信先である中継器(ノードD)へデータを伝送する((3)迂回)。図13Aは、ノードAが経路を変更する場合の例を示しているが、ノードAは、後述するように経路の変更ではなく、送信流量の調整によって対処してもよい。
図13Bは、ノードAのルーティング処理部607が管理する経路情報を示す図である。図示される経路情報には、送信元の中継器(ノードA)から他の各中継器(ノードB、ノードC、ノードD)への伝送経路が記述されている。中継器(ノードA)は、この経路情報に基づいて経路を決定する。同様の経路情報を各中継器のルーティング処理部607が管理している。
図14は、バイパス通知を受信した中継器(ノードA)の動作を示すフローチャートである。まず、バッファ選択部603は、受け取ったパケットの識別子1103を読み取り、そのパケットがバイパス通知パケット1100であることを判別する(S1201)。
続いて、バッファ選択部603は、経路を切り替える(迂回路を用いる)か否かを判断する(S1205)。迂回路を用いてバイパスするトラヒックと異なる経路を用いると判断した場合は、バイパス通知パケット1100に記述されている送信元情報に基づき、ルーティング処理部607は、迂回路(A⇒B⇒Dの経路)を選択する(S1202)。続いて、新たに設定された迂回路に対して、バッファアロケータ608、スイッチアロケータ609での転送処理を実行し、迂回伝送を実施((3)迂回)する(S1203)。
バッファ選択部603が迂回路を用いずにバイパスするトラヒックと同じ経路を用いると判断した場合は、中継器(ノードA)は、出力バッファ606からの送信タイミングをバイパス通知パケットの受信タイミングに応じて制御する(S1204)。
迂回路を用いるか否かの判定は、バイパス通知を受信した中継器(ノードA)が、バイパス処理を実行している中継器(ノードC)から通知されるバイパス通知パケットの受信間隔に基づいて判定する。具体的には、バイパス通知パケットを受信したノードAは、ヘッダフリット解釈部901において、そのパケットがバイパス通知パケットであることを判断すると、それをバイパス通知判定部1001に転送する。バイパス通知判定部1001は、バイパス通知パケットの受信間隔が所定の閾値以上である場合には、トラヒック干渉の影響が大きくないと判断し、バイパスしないトラヒックについて、出力バッファ606からの送信間隔を大きくするように出力バッファ606に指示する。これにより、ノードAからノードCへの送信流量が小さくなるように制御される(流量制限)。
逆に、バイパス通知パケットの受信間隔が所定の閾値に満たない場合、ノードAのバイパス通知判定部1001は、バイパスしないトラヒックとバイパスするトラヒックとのトラヒック干渉の影響が大きいと判断する。さらに、送信元(ノードA)のバイパス通知判定部1001が、送信元(ノードA)のルーティング処理部607に迂回路を探索させる。この迂回路に基づき送信元(ノードA)のバッファアロケータ608や送信元(ノードA)のスイッチアロケータ609を動作させ、バイパスしないトラヒックの伝送経路を変更してトラヒック干渉を防ぐ。なお、受信間隔の閾値は、予め設計時に経験的に決めておいてよい。
以上のように、バイパス通知パケットを受け取った中継器は、その受信間隔に応じて経路の切替または送信タイミングの調整によって対応する。経路の切替による効果と送信タイミングの調整による効果との違いは、以下の通りである。経路を切替える場合には、経路の切替のため遅延が発生するが、バイパスされるトラヒックとバイパスされないトラヒックとのトラヒック干渉の影響を抑えることが出来る。逆に、送信タイミングの調整を行う場合は、経路の切替による遅延は発生しないが、バイパスされるトラヒックとバイパスされないトラヒックとのトラヒック干渉の影響が生じる可能性がある。しかし、迂回路を用いる場合であっても、切替えた経路でのトラヒック干渉が問題となる場合はあり得る。
なお、バッファ選択部603は、バイパス通知パケットの受信間隔に応じて経路の切り替えまたは送信タイミングの調整を行うのではなく、他の方法で判断してもよい。例えば、バッファ使用量計測部1002によって計測される出力バッファ605のバッファ使用量およびバッファ使用時間の少なくとも1つの情報に基づいて経路の変更または流量の調整を行ってもよい。
本実施形態によれば、経路を切替えることによるリスク(切替遅延、切替えた経路でのトラヒック干渉)を加味しながら、バイパスしたトラヒックとのトラヒック干渉の影響を適切に抑えることが可能となる。経路を切替える手段を適用する場合、事前に切替え先の経路の伝送負荷を計測した上で、伝送負荷が小さい場合のみ経路切替を行うようにしてもよい。このようにすれば、切替えた経路でのトラヒック干渉の発生を抑えることができる。なお、経路を切り替える処理と流量を調整する処理のいずれか一方を行うのではなく、両者を併用することも可能である。
以上の説明では、経路を切り替える処理として、送信先が同じである迂回路に切り替える例を具体的に示したが、伝送経路とともに送信先を変更してもよい。例えば、バイパス処理を行った中継器が、送信ノードにバイパス通知を行い、送信ノードが新たな送信先(例えば、データの書き込み先となるメモリ)を選択してもよい。また、経路の切替えは、バイパス処理を行っている中継器に入力される予定であるトラヒックにのみ行ってもよい。言い換えれば、バイパス処理を行っている中継器に入力されないトラヒックを経路切換えの対象から除外してもよい。さらに、送信ノードが、バイパス通知に応じて、バイパス処理をしている中継器を経由する予定のトラヒックに対して、バイパスが発生している経路を回避するように経路や宛先を変更してもよい。
次に、図15A〜15Cを参照しながら、本実施形態におけるバイパス通知の範囲と、バイパス通知を受信した中継器の動作の具体例を説明する。図15A〜15Cにおいて、色塗りで示した中継器1305は、バイパス処理およびバイパス通知処理を行う中継器を表し、斜線で表した中継器はバイパス通知の送信範囲を表している。
図15Aは、バイパス処理を行った中継器1305から1ホップ離れた中継器1306までバイパス通知が行われている例を示している。この例において、中継器1301から発生したトラヒック1302は、中継器1305でバイパスされ、メモリへ伝送されている。また、中継器1303から発生したトラヒック1304は、バイパスされることなく中継器1305を経由して、トラヒック1302と同じメモリに伝送されようとしている。この場合、中継器1305からバイパス通知を受信した中継器1306は、トラヒック1304の送信流量を抑制したトラヒック1307を伝送する。トラヒック1307は、当初予定されていたトラヒック1304よりも流量が制限されるが、バイパスされるトラヒック1302との間の干渉を低減できる。
図15Bは、バイパス処理を行った中継器1305から2ホップ離れた中継器1306までバイパス通知が行われている例を示している。この例において、中継器1301から発生したトラヒック1302は、中継器1305でバイパスされ、メモリへ伝送されている。また、中継器1303から発生したトラヒック1304は、バイパスされることなく中継器1305を経由して、トラヒック1302と同じメモリに伝送されようとしている。この場合、中継器1305からバイパス通知を受信した中継器1306は、中継器1305を経由せずに同じ目的のメモリに向かう迂回路を選択してトラヒック1307を伝送する。この結果、中継器1305におけるバイパス処理の影響を受けることなくデータを目的のメモリに伝送することができる。
図15Cは、バスマスタに接続された中継器1306までバイパス通知が行われている例を示している。この例において、中継器1301から発生したトラヒック1302は、中継器1305でバイパスされ、メモリへ伝送されている。また、中継器1303から発生したトラヒック1304は、中継器1305を経由して、トラヒック1302と同じメモリに伝送されようとしている。この場合、中継器1305からバイパス通知を受信した中継器1306(1303)は、トラヒック1302が伝送されるメモリとは異なるメモリへトラヒック1307を伝送する(または、トラヒックの伝送を中断する)。
上記のように、バイパス処理を行う中継器1305とバイパス通知を受信した中継器1306との間の距離(ホップ数)に応じて、バイパス通知を受信した中継器1306の動作(送信流量の調整、迂回、宛先変更など)を設計時に設定しておくことができる。
<5.4.バイパスされないトラヒックに対する動作>
次に、バイパス処理が行われないトラヒックに対する中継器600の動作を説明する。
本実施形態における中継器は、一部のトラヒックに対してバイパス処理を行った場合、トラヒック干渉を防ぐため、バイパスされたトラヒックと同一の宛先が設定された、バイパスされないトラヒックの伝送経路を変更したり、送信流量を調整する等の制御(伝送制御)を行う。この制御は、バイパストラヒックと非バイパストラヒックとが合流する中継器の伝送状態に基づいて実行される。具体的には、図3に示す構成では、自中継器600b内の出力バッファ606または後段の隣接中継器600cの入力バッファでバイパストラヒックと非バイパストラヒックとが合流する。そのため、自中継器600bまたは後段の隣接中継器600cの伝送状態に基づいて伝送制御が行われる。この制御は、例えば、自中継器600bの出力バッファ606または隣接中継器600cの入力バッファの使用量(空き容量)や使用時間などの伝送状態に基づいて実行される。本明細書において、中継器の「伝送状態」とは、バッファ(入力バッファ604または出力バッファ606)の空き容量、使用量、待ち時間、スループット、伝送効率といった、伝送品質を示す情報を意味する。また、バイパストラヒックの伝送量を伝送状態として扱ってもよい。
一方、例えば図1Aに示す構成では、バスマスタ1aから伝送される非バイパストラヒックと、バスマスタ1bから伝送されるバイパストラヒックとが中継器R9で合流することになる。この場合、中継器R9は、自身の伝送状態に基づいて非バイパストラヒックの伝送制御を行えばよい。この例では、中継器R9は、直接接続された隣接中継器R8をスキップしてさらに先の中継器R7にバイパスを行っている。このため、中継器R7でもバイパストラヒックと非バイパストラヒックとが合流する。したがって、中継器R9は、中継器R7の伝送状態をも考慮して、非バイパストラヒックの伝送制御を行うように構成されていてもよい。図1Aに示す状況では、途中の経路上の中継器R8も、中継器R7の伝送状態に基づいて非バイパストラヒックの伝送制御を行ってもよい。
また、図1Bに示す状況においては、宛先のメモリ5に接続された中継器R7においてのみ、バイパストラヒックと非バイパストラヒックとの合流が生じている。そのため、非バイパストラヒックを中継する中継器R8、R9は、伝送先の中継器R7の伝送状態に基づいて非バイパストラヒックに対する伝送制御を行うように構成される。
上記の図1A、1Bに示す例では、中継器R8、R9は、混雑が生じている中継器R7の伝送状態を示す情報を知る必要がある。そのための方法として、例えば、以下の方法を採用することができる。まず、送信元のバスマスタ1aは、宛先のメモリ5へ非バイパストラヒックのデータを伝送する前に、メモリ5に対してメモリ容量等の情報についての問い合わせを行い、メモリ5から当該情報についての応答を受ける。その際、伝送経路上でバイパストラヒックと非バイパストラヒックとが合流している中継器R7は、自身の伝送状態を示す情報をメモリ5からの応答を示す情報に付加してバスマスタ1aに返す。応答を受け取ったバスマスタ1aは、メモリ5へのデータ送信が可能と判断した場合、送信すべきデータに中継器R7の伝送状態を示す情報を付加して、メモリ5宛に当該データを伝送する。伝送経路上の中継器R9、R8は、受け取ったデータに付加された中継器R7の伝送状態を示す情報に基づき、当該データに対する伝送制御を行う。このようにして、中継器R8、R9は、混雑が生じていると想定される中継器R7の伝送状態に基づいて非バイパストラヒックの伝送制御を行うことができる。
なお、上記の方式は一例であり、バイパストラヒックと非バイパストラヒックとが合流する中継器における伝送状態を示す情報を他の中継器に通知できる方式であればどのような方式を採用してもよい。例えば、バイパストラヒックと非バイパストラヒックとが合流する中継器においてデータの遅延が生じている場合、その中継器にデータを転送する中継器は、転送先のバッファを確保できないため、そこでもデータの遅延が発生する。すると、連鎖的に上流の中継器へ混雑状況が伝播することになるため、各中継器は、データ伝送先のいずれかの中継器において混雑が生じていることを知ることができる。この例では、バイパストラヒックと非バイパストラヒックとの合流の影響は、転送先の中継器のバッファが確保できないという状況によって通知されるといえる。
図16は、バイパス処理を行わないトラヒックに対する中継器の処理を説明するための図である。図16は、本実施形態における中継器がバイパス処理を行わないトラヒックの伝送経路を変更する様子を簡易ネットワークモデルに基づいて表している。まず、送信元の中継器Aが、中継器Cを経由して送信先の中継器Dへデータの伝送を行っている状況を想定する((1)送信)。データ伝送中に、中継器Aが一部のトラヒックをバイパスさせると((2)バイパス発生)、中継器Aは、トラヒック間の干渉を抑えるために、バイパスさせないトラヒックの伝送経路を、中継器Bを経由する経路に変更する((3)迂回)。なお、この例では、送信先(中継器D)は、2つの経路から同時にトラヒックが伝送されても、トラヒックを同時に受信可能な能力を備えていることを前提としている。従って、2つの経路から同時にトラヒックが伝送されても、送信先(中継器D)では混雑は発生しない。
なお、図16は、中継器Aが非バイパストラヒックの経路を変更する場合の例を示しているが、後述するように、中継器Aは、経路の変更ではなく送信流量を調整する場合もある。本実施形態では、経路を変更するか送信流量を調整するかは、出力バッファ606の使用量に基づいてバッファ選択部603のバイパス通知判定部1001が判断する。送信流量を調整する方法として、例えば、バイパストラヒックの伝送が完了するまで送信開始タイミングを遅らせたり、一定時間送信を中断する等のアプローチが可能である。
図17Aは、バイパス処理を行った中継器Aが非バイパストラヒックに対して行う動作を示すフローチャートである。まず、トラヒック伝送中に、送信中の経路上で他のトラヒックに対してバイパス処理が行われたとする(S1301)。すると、バイパス通知判定部1001は、非バイパストラヒックに対して、経路を切り替える(迂回路を用いる)か、送信流量を調整するかを、後述する方法で判定する(S1305)。バイパス通知判定部1001が経路を切り替えると判定した場合、バイパス通知判定部1001は、ルーティング処理部607に経路切換を指示するための制御信号を送出する。ルーティング処理部607は、制御信号を受けて迂回路(A⇒B⇒Dの経路)を選択し、迂回路に対応する出力ポートを決定する(S1302)。続いて、バッファアロケータ608、スイッチアロケータ609による転送処理を実行し、迂回路を用いた伝送を実行((3)迂回)する(S1303)。バイパス通知判定部1001が迂回路を用いないと判定した場合、バイパス通知判定部1001は、入力バッファ604に送信タイミングを指示するための制御信号を送出する。入力バッファ604は、制御信号に基づき、フリットを送信するタイミングを調整する(S1304)。
迂回路を用いるか否かの判定(S1305)は、例えば、図17Bに示す手順で行われる。まず、バッファ使用量計測部1002は、出力バッファ606のバッファ使用量を計測する(S1306)。続いて、バイパス通知判定部1001は、計測された出力バッファ606の使用量(バッファ使用量)に基づき、迂回するか否かを判定する(S1307)。具体的には、1万サイクルを単位時間として、バッファの空き容量が多い場合(例えば、出力バッファ606の空き容量が物理容量の1/2以上の場合)、バイパス通知判定部1001は、トラヒック干渉の影響が大きくないと判断し、経路を変更することなく送信タイミングを調整する。この時、バイパス通知判定部1001は、入力バッファ604に対して、バイパスしないトラヒックを入力バッファ604から送信する間隔を大きくするように指示する。これにより、クロスバスイッチ605および出力ポート617から出力されるトラヒックの送信間隔が大きくなり、トラヒックの伝送流量が抑制される。
一方、バッファの空き容量が少ない場合(例えば、出力バッファの空き容量が物理容量の1/2に満たない場合)、バイパス通知判定部1001は、トラヒック干渉の影響が大きいと判断する。トラヒック干渉の影響を早急に抑えるために、バイパス通知判定部1001は、ルーティング処理部607に迂回路を探索させる。ルーティング処理部607が迂回路を探索すると、その迂回路に基づき、バッファアロケータ608およびスイッチアロケータ609が転送処理を実行する。これにより、バイパスされないトラヒックの伝送経路が変更され、トラヒック干渉を防ぐことができる。
なお、上記の判定はあくまでも一例であり、判定方法は想定される伝送遅延に応じて適宜設計してよい。例えば、出力バッファの空き容量が物理容量の2/3以上の場合には何も行わず、1/3以上2/3未満の場合には流量の調整を行い、1/3に満たない場合には経路変更を行う構成を採用してもよい。なお、上記の説明ではバッファの「空き容量」と表現したが、バッファの「使用量」と表現しても同じことである。また、単位時間あたりのバッファの使用量を計測しているので、「スループット」または「伝送効率」に基づいて判定を行っているともいえる。これらのどの表現を用いても、上記と同様の処理内容を表す。
また、出力バッファ606の使用量ではなく、出力バッファ606での待ち時間を計測し、その計測結果を用いて上記と同様の制御を行ってもよい。バッファ容量が小さい場合、バッファ使用量で評価するよりもバッファの待ち時間で評価した方が中継器での混雑状況を反映させやすい場合がある。
バッファの待ち時間に基づく例として、バッファの待ち時間が10サイクル未満の場合は、何も行わず、10サイクル以上50サイクル未満の場合には流量の調整を行い、50サイクル以上の場合には経路変更を行うといった制御を採用してもよい。バッファの待ち時間は、例えば、ヘッダフリット504を自中継器が受信した時点からカウントを開始し、テイルフリット506を転送先の中継器へ送信した後にリセットすることによって計測できる。処理の簡略化のために、待ち時間のカウントは、高優先度のトラヒックに対してのみ行うように構成してもよい。
このように、本実施形態では、バッファ選択部603は、自中継器の伝送状態に基づいて非バイパストラヒックの伝送経路および伝送流量の少なくとも一方を変更するようにクロスバスイッチ605の出力を制御する。なお、本発明はこのような例に限られず、上述のとおり、バイパストラヒックと非バイパストラヒックとが合流する中継器の伝送状態に基づいて非バイパストラヒックの伝送制御を行うように構成されていればよい。ここで、「伝送状態」とは、上述のとおり、バッファの空き容量、使用量、待ち時間、スループット、伝送効率などを意味する。また、バイパストラヒックの伝送量を計測し、その伝送量に基づいて非バイパストラヒックに対する上記の制御を行ってもよい。
経路の切り替えによる効果と送信タイミングの調整による効果との違いは、以下の通りである。経路を切り替える場合には、経路の切り替えのため遅延が発生するが、バイパスされるトラヒックとバイパスされないトラヒックとのトラヒック干渉の影響を抑えることができる。逆に、送信タイミングの調整を行う場合は、経路の切り替えによる遅延は発生しないが、バイパスされるトラヒックとバイパスされないトラヒックとのトラヒック干渉の影響が生じる可能性がある。しかし、迂回路を用いる場合であっても、切り替えた経路でのトラヒック干渉が問題となる場合はあり得る。
本実施形態によれば、経路を切り替えることによるリスク(切替遅延、切り替えた経路でのトラヒック干渉)を加味しながら、バイパストラヒックと非バイパストラヒックとの間の干渉の影響を適切に抑えることが可能となる。経路を切り替える手段を適用する場合、事前に切り替え先の経路の伝送負荷を計測した上で、伝送負荷が小さい場合のみ経路切替を行うようにしてもよい。このようにすれば、切り替え先の経路でのトラヒック干渉の発生をより効果的に抑えることができる。なお、経路を切り替える処理と流量を調整する処理のいずれか一方を行うのではなく、両者を併用してもよい。例えば、切り替え先の経路の伝送負荷が大きい場合には、切り替え後にさらに送信流量を少なくするように調整してもよい。
以上の説明では、経路を切り替える場合、受信ノード(例えば、データの書き込み先となるメモリ)が同じである迂回路に切り替える例を示したが、伝送経路とともに受信ノードを変更してもよい。例えば、バイパス処理を行った中継器が、送信ノードにバイパス処理を行ったことを通知するとともに、通知を受けた送信ノードが新たな受信ノードを選択するように構成されていてもよい。また、経路の切り替えまたは流量の調整は、バイパス処理を行っている中継器に入力される予定であるトラヒックにのみ行ってもよい。言い換えれば、バイパス処理を行っている中継器に入力されないトラヒックを経路切換えまたは流量の調整の対象から除外してもよい。さらに、送信ノードが、バイパス処理をしている中継器を経由する予定のトラヒックに対して、バイパスが発生している経路を回避するように経路や宛先を変更してもよい。
図18A、18Bは、送信流量調整、迂回、および送信先変更の具体例を説明するための図である。図18Aは、1つのバスマスタから1つのメモリにトラヒック13001〜13003が伝送される際に、バイパス処理を行った中継器13004が送信流量を抑制する例を示している。トラヒック13001が中継器13004によってバイパスされる場合、バイパスされないトラヒック13002、13003については、中継器13004の出力バッファ606から出力される流量が抑制される。なお、この例では、送信先は、2つの経路から同時にトラヒックが伝送されても、トラヒックを同時に受信可能な能力を備えていることを前提としている。従って、2つの経路から同時にトラヒックが伝送されても、送信先では混雑は発生しない。
図18Bは、異なる複数のバスマスタから同一のメモリにトラヒック13001〜13003が伝送される際に、バイパス処理を行った中継器13004によって迂回や送信先(メモリ)の変更を行う例を示す図である。トラヒック13001が中継器13004によってバイパスされるとき、バイパスされないトラヒック13002、13003の経路は変更される。ここで、トラヒック13003については、その送信先のメモリも変更される。送信先の変更を行う場合、バイパス処理を行った中継器は、送信元のバスマスタに新たな送信先の問合せを行い、その結果を反映させて送信先の変更を行う。バイパス処理を行った中継器13004が経路変更、流量調整、送信先変更のいずれを行うかの判断基準は、設計時に中継器毎に決定してよい。
以上のように、本実施形態の中継器600は、バイパス通知処理および非バイパストラヒックに対する伝送制御を行うことにより、バイパス処理に伴うトラヒックの混雑を低減させることができる。本実施形態では、バイパス通知処理および非バイパストラヒックに対する伝送制御の両方を行うが、これらの一方のみを行うように中継器が構成されていてもよい。そのような構成であっても、ある程度の効果を得ることができる。
以上の説明では、中継器600の各構成要素は、ブロック化された個別の機能部として表されているが、これらの機能部の処理を規定するプログラムを中継器600に実装されたプロセッサ(コンピュータ)に実行させることによって中継器600の動作が実現されていてもよい。そのようなプログラムの処理手順は、例えば図7、8、9A、9B、14、17A、17Bのフローチャートに記載されているとおりである。
<6.変形例>
<6.1.出力バッファを設けない構成>
図5Aに示す構成では、中継器600bは出力バッファ606を備えているが、前述したように、出力バッファ606を備えていなくてもよい。図19Aは、中継器600bが出力バッファ606を備えておらず、クロスバスイッチ605の出力が後段の隣接中継器600cのバッファ選択部603cに入力される構成例を示している。このような構成によれば、メモリ量を抑えることができるため、組込用途に有効である。
出力バッファ606を設けない場合、後段の隣接中継器600cにおける入力バッファの使用状況に基づいて上述の伝送制御を行えばよい。例えば、バッファ使用量計測部1002によって後段の隣接中継器600cの入力バッファの使用量および待ち時間の少なくとも一方を計測し、計測値に基づいて経路を変更するか流量を調整するかの判断を行うことができる。
<6.2.外部配線>
また、以上の説明では、図5Aに示すように、中継器600b内でバイパスが行われる例(内部配線)を示したが、中継器600bの外部にバイパストラヒックを伝送するように配線されていてもよい(外部配線)。図19Bは、中継器600bの外部に配線してバイパスする構成例を示す図である。この例では、バッファ選択部603は、バイパス経路BP3、BP4によって中継器600bの外部の中継器またはメモリ105にトラヒックを伝送する。
内部配線による構成では、中継器毎にバイパス処理が閉じているため、中継器の処理モジュールとしての再利用性は高い。すなわち、個々の中継器を1つの部品として交換することが容易となる。しかし、宛先までの中継器を全て中継する必要があるため、処理のオーバーヘッドが生じやすい。逆に、外部配線による構成では、内部配線による場合に比べて、中継器の処理モジュールとしての再利用性は低い。しかし、宛先までの中継器を全て中継する必要がないため、処理のオーバーヘッドを低減させることができる。
図20は、外部配線を用いて、バイパスする具体的な応用例を示す図である。図20では、図12(b)に示すメッシュ型のネットワーク構成を用いる場合の例を示している。ここで、図20(a)に示すように、機能拡張のため、新しいバスマスタ101aをネットワークに接続した場合を考える。また、バスマスタ101aからメモリ105aまでの遅延時間が問題になる場合などを想定し、中継する中継器数を削減するために、新たにバイパス経路BPを追加することを考える(b)。
バイパスするバスマスタ101aから発生するトラヒックは、バイパスしたトラヒックであることを識別できるように、ヘッダフリットのフラグを有効にして伝送される。それを受信した中継器R7は、バイパスしたバスマスタ101aがアクセスしようとするメモリ105aへの流入量を抑制させるために、隣接の中継器R4、R8に対して、バイパス通知のメッセージを送信する。バイパス通知を受けた隣接中継器R4、R8は、メッセージに記述された通知範囲を読みとり、必要に応じて他の中継器および/またはバスマスタにメッセージをさらに転送する。
バイパス通知を受けた中継器またはバスマスタは、送信量や宛先メモリを変更する等の制御を行うことによって対象とするメモリ105aへのアクセスを抑制することができる。このように、バイパス通知を使うことにより、許容できる遅延時間が短いバスマスタ101aを既存のネットワークに簡単に追加することが可能となる。
さらに、本実施形態の中継器によれば、バッファの使用状況に応じて非バイパストラヒックの流量の調整や経路の変更等を行うことができるため、より高い性能を実現できる。図21A〜21Cは、中継器間でバイパス配線を設ける際の課題と、本実施形態の中継器を用いることによる効果とを説明するための図である。図21Aは、バイパス配線によって生じる課題を示している。同一の宛先(メモリ105a)にバイパストラヒック50aと非バイパストラヒック50bとが伝送される場合に、転送先の中継器R7ではバス帯域が不足して混雑が発生する可能性がある。そこで、本実施形態では、送信元の中継器R9のバッファの空き容量や待ち時間に基づいて、事前に非バイパストラヒックの送信量や宛先を変更する。送信量の調整で混雑を回避できると判断した場合は、図21Bに示すように、中継器R9は、非バイパストラヒックの送信量を調整する。宛先のメモリを変更することによって混雑を回避できると判断した場合は、図21Cに示すように、中継器R9は、宛先をメモリ105aからメモリ105bに変更する。このような処理を行うことにより、高いスループットおよび低い伝送遅延でトラヒックを伝送することが可能となる。
以上のように、本実施形態によれば、バイパス処理が行われないデータがバイパストラヒックと合流する中継器(図1Aに示す例では中継器R7およびR9、図1Bに示す例では中継器R7)においてバイパス処理が行われるデータと同一の宛先に伝送される場合に、バイパストラヒックと合流する中継器の伝送状態に基づいて送信量の調整や経路の変更などが行われる。このため、宛先までの経路上で発生し得る混雑を事前に回避することが可能になる。
バイパスの方式としては、上述のように、中継器内でバイパスする方式であってもよいし、中継器間でバイパスする方式であってもよい。特に、同一の宛先に向かうバイパストラヒックと非バイパストラヒックとが合流する中継器においてバイパスされるデータの伝送量も含めた伝送状態を把握することにより、宛先までの混雑状態をより正確に予測できるため、混雑の事前回避が可能となる。なお、1つの中継器においてバイパスされるデータの宛先とバイパスされないデータの宛先とが異なっている場合は、両者の競合による混雑は発生しないため、バイパスされないデータに対する送信量の調整や経路の変更は行わなくてもよい。
本実施形態の構成により、宛先までの伝送路上で発生し得る混雑を事前に回避することが可能となり、高いスループットおよび低い伝送遅延でトラヒックを伝送することが容易になる。
<6.3.他のトポロジ>
上記の説明では、集積回路のトポロジが多段接続網の場合(図3、11)、およびメッシュ型の場合(図20)を例に説明したが、本実施形態の中継器600は、多段接続網やメッシュ型での利用に限定されるものではない。例えば、図22Aに示すように、中継器を格子状に並べ、末端の中継器同士を相互に接続したトーラス型のトポロジであってもよい。また、図22Bに示すように、バスを階層的に接続したトポロジであってもよい。複数のバスマスタを分散型のバスを介して接続したトポロジであれば、上記と同様に本実施形態の中継器の適用が可能である。
(実施形態2)
次に、本発明の第2の実施形態による中継器を説明する。
実施形態1では、中継器内部または中継器間にバイパスの配線が設けられた構成を前提としたが、本実施形態の中継器は、バイパスの配線が設けられていない。以下の説明では、実施形態1におけるバイパストラヒックに対応するトラヒックを「高優先度トラヒック」と呼び、非バイパストラヒックに対応するトラヒックを「低優先度トラヒック」と呼ぶ。高優先度トラヒックは、例えば映像や音声といった低遅延伝送が要求されるトラヒックや、ユーザ操作のコマンドやシステム異常を通知する情報のように、緊急度が高いトラヒックである。低優先度トラヒックは、例えばファイル転送やバックグラウンドで処理を行うアプリケーションのデータのように緊急性が比較的低いトラヒックである。トラヒックが高優先度トラヒックであるか低優先度トラヒックであるかは、ヘッダフリットに記述された優先度を示す識別子によって規定され得る。本明細書では、高優先度トラヒックを優先的に伝送することも「バイパス」に含まれるものとする。以下、本実施形態の中継器について、実施形態1と異なる点を中心に説明し、重複する点についての説明は省略する。
本実施形態の中継器によれば、高優先度トラヒックの伝送を継続させながら、高優先度トラヒックと低優先度トラヒックとが合流する中継器の伝送状態(バッファの使用状況など)に応じて低優先度トラヒックの伝送経路の変更、または伝送流量の調整を行うことができる。これにより、低優先度トラヒックと高優先度トラヒックとの干渉を抑制でき、スループットの向上や低遅延伝送が期待できる。
以下、本実施形態における中継器の構成例を説明する。
図23は、本実施形態における中継器700bの概略構成を示す図である。中継器700bは、前段の隣接中継器700aから後段の隣接中継器700cへの行き先を決定し、トラヒックを中継する。中継器700bのルーティング処理部707は、前段の隣接中継器700aから転送されたフリットを受信し、フリットに記述された宛先情報に基づいて転送先の出力ポート717を決定する。ルーティングのアルゴリズムは、実施形態1と同様、動的に行き先を決定する次元順ルーティングや、設計時に送信元と行き先との関係から一意に決定されている静的ルーティングを用いてもよい。本実施形態の各中継器は、特定のルーティングアルゴリズムには限定されない。
また、中継器700bは、出力ポート717と出力バッファ706のバッファキューとを対応付けるバッファアロケータ708を備える。更に、トラヒックデータを伝送するために対応付けが完了している組から1組を選ぶスイッチアロケータ709を備え、スイッチ705を介して、出力バッファ706へフリットを転送する。フリットは、出力バッファ706から対応する中継器へ転送される。なお、本実施形態では出力バッファ706が存在するという前提で説明を行うが、出力バッファ706は必ずしも存在しなくてもよい。出力バッファ706を設けない場合、上述の出力バッファ706を後段の隣接中継器700cの入力バッファで代替させることができる。
本実施形態の中継器700bの特徴の一つは、高優先度トラヒックの伝送を継続させながら、同一の宛先に向かう低優先度トラヒックの伝送制御を行う出力制御部710を備えていることにある。出力制御部710は、受信したトラヒックの優先度の判定処理を行うことによって、高優先度トラヒックを低優先度トラヒックよりも優先的に転送する。このように、本実施形態の出力制御部710は、本発明におけるバイパス制御部としても機能する。出力制御部710は、バッファ計測部(不図示)を有しており、出力バッファ706(または後段の隣接中継器700cの入力バッファ)の使用状況に基づいて低優先度トラヒックに対する伝送制御を行う。具体的には、出力制御部710は、出力バッファ706の空き容量や待ち時間等に基づいて、データの伝送経路および伝送流量の少なくとも一方を変更する制御を行う。
入力バッファ704、出力バッファ706は、複数のバッファキューから構成されている。このバッファキューは、仮想チャネル(Virtual Channel)で構成してもよい。また、本実施形態では、バッファキューは、高優先度用と低優先度用の2種類がある。出力制御部710が、受信したヘッダフリットを解釈することにより、受信したデータの優先度を判定し、格納するバッファキューを特定する。
図24A、24Bは、本実施形態における中継器の処理を説明するための図である。図24Aは、本実施形態における中継器が低優先度トラヒックの伝送経路を変更する様子を簡易ネットワークモデルに基づいて表している。まず、送信元の中継器Aが、中継器Cを経由して送信先の中継器Dへ高優先度トラヒックおよび低優先度トラヒックの転送を行っている状況を想定する((1)転送)。中継器Aが高優先度トラヒックを転送すると((2)高優先度トラヒックの転送)、中継器Aは、トラヒック間の干渉を抑えるために、低優先度トラヒックの伝送経路を、中継器Bを経由する経路に変更する((3)迂回)。
図24Bは、中継器Aのルーティング処理部が管理する経路情報の一例を示す図である。図示される例では、送信元の中継器Aから各中継器(B、C、D)への伝送経路が記述されている。中継器Aは、このような経路情報に基づき、経路を決定する。本実施形態では、同様の経路情報を他の中継器のルーティング処理部でも管理しているものとする。
なお、図24Aは、中継器Aが低優先度トラヒックの経路を変更する場合の例を示しているが、中継器Aは、上記のように、経路の変更ではなく送信流量を調整することによって対処する場合もある。本実施形態では、経路を変更するか送信流量を調整するかは、出力バッファ706(または隣接中継器700cの入力バッファ)の使用状況に基づいて出力制御部710が判断する。
図25Aは、中継器Aが低優先度トラヒックに対して行う動作を示すフローチャートである。まず、トラヒック伝送中に、送信中の経路上で高優先度トラヒックが発生したとする(S2301)。高優先度トラヒックを伝送しているか否かは、例えば、ヘッダフリットに記述された優先度を示す識別子の値が所定の閾値を超えているか否かによって判断される。出力制御部710は、低優先度トラヒックに対して、経路を切り替える(迂回路を用いる)か、送信流量を調整するかを、後述する方法で判定する(S2305)。出力制御部710が経路を切り替えると判定した場合、出力制御部710は、ルーティング処理部707に経路切換を指示するための制御信号を送出する。ルーティング処理部707は、制御信号を受けて迂回路(A⇒B⇒Dの経路)を選択し、迂回路に対応する出力ポートを決定する(S2302)。続いて、バッファアロケータ708、スイッチアロケータ709による転送処理を実行し、迂回路を用いた伝送を実行((3)迂回)する(S2303)。一方、ステップS2305において出力制御部710が迂回路を用いないと判定した場合、出力制御部710は、入力バッファ704に送信タイミングを指示するための制御信号を送出する。入力バッファ704は、制御信号に基づき、フリットを送信するタイミングを調整する(S2304)。
迂回路を用いるか否かの判定(S2305)は、例えば、図25Bに示す手順で行われる。まず、出力制御部710は、出力バッファ706のバッファ使用量を計測する(S2306)。続いて、出力制御部710は、計測された出力バッファ706の使用量(バッファ使用量)に基づき、迂回するか否かを判定する(S2307)。具体的には、1万サイクルを単位時間として、バッファ使用量が少ない場合(例えば、出力バッファ706の空き容量が物理容量の1/2以上の場合)、出力制御部710は、トラヒック干渉の影響が大きくないと判断し、経路を変更することなく送信タイミングを調整する。この時、出力制御部710は、入力バッファ704に対して、低優先度トラヒックを入力バッファ704から送信する間隔を大きくするように指示する。これにより、スイッチ705および出力ポート717から出力されるトラヒックの送信流量が抑制される。
一方、バッファ使用量が大きい場合(例えば、出力バッファの空き容量が物理容量の1/2に満たない場合)、出力制御部710は、トラヒック干渉の影響が大きいと判断する。トラヒック干渉の影響を早急に抑えるために、出力制御部710は、ルーティング処理部707に迂回路を探索させる。ルーティング処理部707が迂回路を探索すると、その迂回路に基づき、バッファアロケータ708およびスイッチアロケータ709が転送処理を実行する。これにより、バイパスされないトラヒックの伝送経路が変更され、トラヒック干渉を防ぐことができる。
上記の判定はあくまでも一例であり、上記の各閾値は想定される伝送遅延に応じて適宜設計される。例えば、出力バッファの空き容量が物理容量の2/3以上の場合には何も行わず、1/3以上2/3未満の場合には流量の調整を行い、1/3に満たない場合には経路変更を行う構成を採用してもよい。
また、出力バッファ706の使用量ではなく、出力バッファ706における待ち時間を計測し、これを用いて上記と同様の制御を行ってもよい。バッファ容量が小さい場合、バッファ使用量で評価するよりもバッファの待ち時間で評価した方が中継器での混雑状況を反映させやすい場合がある。
本実施形態においても、伝送経路を切り替える場合、経路とともに受信ノードを変更してもよい。例えば、高優先度トラヒックの伝送を行っている中継器から、送信元のバスマスタに新たな送信先の問合せを行い、その結果に基づいて送信先の変更を行う構成が可能である。
図26A、26Bは、送信流量調整、迂回、および送信先変更の具体例を示す図である。図26Aは、1つのバスマスタから1つのメモリにトラヒック23001〜23003が伝送される際に、中継器23004が送信流量を抑制する例を示している。トラヒック23001が高優先度トラヒックである場合、低優先度トラヒック23002、23003については、中継器23004の出力バッファから出力される流量が抑制される。
図26Bは、異なる複数のバスマスタから同一のメモリにトラヒック23001〜23003が伝送される際に、中継器23004によって迂回や送信先(メモリ)の変更を行う例を示している。トラヒック23001が高優先度トラヒックであるとき、低優先度トラヒック23002、23003の経路が変更される。ここで、トラヒック23003については、その送信先のメモリも変更される。送信先の変更を行う場合、中継器23004は、送信元のバスマスタに新たな送信先の問合せを行い、その結果を反映させて送信先の変更を行う。中継器23004が経路変更、流量調整、送信先変更のいずれを行うかの判断基準は、設計時に中継器毎に決定してもよい。
本実施形態では、トラヒックを高優先度トラヒックと低優先度トラヒックとに分類し、高優先度トラヒック伝送時に自中継器の伝送状態に基づいて低優先度トラヒックに対して伝送制御を行う例を示した。しかしながら、本発明は、このような形態に限らず、優先的に処理されるバイパストラヒックが伝送された場合に、バイパストラヒックと非バイパストラヒックとが合流する中継器の伝送状態に基づいて、同一の宛先に向かう非バイパストラヒックの伝送経路の変更または伝送流量の調整を行う構成であればよい。
(実施形態3)
次に、本発明の第3の実施形態を説明する。
本実施形態の詳細を説明する前に、まず、本実施形態の基本原理を説明する。図27は、本実施形態の中継器600の概略構成を示すブロック図である。中継器600は、パケットを受け取る入力部400と、入力されたデータ伝送単位(パケット)を優先的に出力するバイパス処理および優先的に出力しない通常処理のいずれを実行するかを判定するバイパス制御部200と、バイパスされないパケットの伝送経路を複数の経路の中から選択するスイッチ605とを備えている。図27に示す例では、バイパス処理が行われるパケットは、バイパス経路300を通って出力され、バイパス処理が行われないパケットは、非バイパス経路350を通って出力される。
バイパス経路300は、例えば図56に示すバイパス用配線930を経由する経路に相当し、非バイパス経路350は、例えば図56に示すクロスバスイッチ924を経由して出力される経路に相当する。ただし、本発明はこのような物理的に配線を独立させる構成に限定されるものではない。非特許文献1に開示されているように、特定の送受信ノード間のトラヒックの伝送に関してルーティング処理などを省略したり、並列化することによって転送遅延を抑制する処理もバイパス処理に含まれる。
図28A、28Bは、バイパス制御部200が行う処理の流れの例を示すフローチャートである。バイパス制御部200は、図28Aおよび図28Bに示す処理の少なくとも一方を実行することにより、受け取ったパケットのバイパスの要否を判定し、必要と判断すればバイパス処理を行う。
図28Aに示す処理では、バイパス制御部200は、パケットに付された時間に関する情報(時間情報)に基づいて、バイパスの要否を判断し、バイパス処理を行うか否かを判定する。バイパス制御部200は、まずステップS10においてパケットを受信すると、ステップS11において、パケットが有する時間情報から許容できる残り時間(許容残り時間)を求める。次に、ステップS12において、許容残り時間が予め定めた時間よりも小さいか否かを判定する。許容残り時間が予め定めた時間よりも小さい場合、バイパス制御部200は、バイパスが必要であると判断し、当該パケットについてバイパス処理を実行する。許容残り時間が予め定めた時間以上である場合、バイパス制御部200は、バイパスは不要であると判断し、当該パケットについては通常処理を実行する。
一方、図28Bに示す処理では、バイパス制御部200は、パケットを受け取ったときのトラヒックの伝送状態に基づいて、当該パケットのバイパスの要否を判定する。まず、ステップS20においてパケットを受信すると、バイパス制御部200は、ステップS21において、トラヒックの伝送状態を検出する。ここで、「トラヒックの伝送状態」とは、受け取ったパケットの前後に伝送されている複数のパケットの集合によって規定される振幅、送信間隔などを指す。なお、振幅とは、単位時間当たりに伝送されるデータ量を意味し、送信間隔とは、連続で送信されるパケット間の時間間隔を意味する。続くステップS22において、バイパス制御部200は、トラヒックの伝送状態に基づいて、伝送負荷が高いか否かを判定する。伝送負荷の判定は、例えば、トラヒックの振幅や送信間隔を予め定められた閾値と比較することによって行われ得る。伝送負荷が高いと判定した場合は、バイパス制御部200は、ステップS23において、受け取ったパケットをバイパス処理する。伝送負荷が高くないと判定した場合は、ステップS24に進み、通常処理が行われる。なお、この例とは逆に、ステップS22において伝送負荷が高いと判定された場合に通常処理を行い、伝送負荷が低いと判定された場合にバイパス処理を行うように設計してもよい。
中継器600は、例えば図28A、28Bの少なくとも一方の処理を行うことにより、受け取ったパケットがバイパスを要するか否かを判断する。これにより、許容できる残り時間および伝送されるトラヒックの特性に応じてバイパスさせるトラヒックを適切に選別することができ、トラヒックの転送遅延を抑制することが可能となる。なお、上記の処理手順は、あくまでも例であり、本実施形態における中継器のバイパス判定方法は、後述するように多様な形態が可能である。中継器は、入力されたパケットが有する時間に関する情報を用いて得られる許容残り時間、およびトラヒックの伝送状態の少なくとも一方に基づいてバイパス処理を行うか否かを判定するように構成されていればよい。
以下、本実施形態の具体的な構成および動作を説明する。以下の説明では、実施形態1と異なる点を中心に説明し、重複する事項についての説明は省略する。
<1.中継器の構成および動作>
<1.1.中継器の概略構成>
図29は、本実施形態における中継器の概略構成を示す図である。本実施形態でも、図3に示す多元接続網の構成を有するシステムを想定する。本実施形態においても第2グループの中継器600bを例に説明するが、第1および第3グループの中継器についても送信先および受信元が異なるだけで基本的な構成は同様である。
本実施形態における中継器600bは、図5Aに示す構成要素の他、バイパスされるフリットを蓄えるバイパスバッファ612をさらに備えている。バイパスバッファ612に格納されたデータは、送信スケジュールが調整された後、バイパス経路BP1を経由して出力バッファ606へ伝送される。なお、送信スケジュールを調整することなく、届いた順にパケットを出力してもよい。本実施形態ではバイパスバッファ612のバッファキューの数は2つであるが、この例に限らず、バッファキューの数はトラヒックの伝送量に応じて適宜設計される。バイパスバッファ612は、入力バッファ604や出力バッファ606と同様、複数のバッファキューから構成されている。バッファキューは、仮想チャネルによって構成してもよい。
バッファ選択部603は、受信したフリットがバイパスを要するか否かを、ヘッダフリットに記述された情報に基づいて判断する。バイパスを要しないと判断した場合、バッファ選択部603は、そのフリットが属するトラヒックを入力バッファ604に格納する。バイパスを要すると判断した場合、バッファ選択部603は、そのトラヒックをバイパスバッファ612に送出する。
本実施形態では、バイパスを行うか否かの判定方法が実施形態1とは異なっている。一方、バイパスしない場合の処理は、実施形態1と同様である。
<1.2.中継器の動作の概略>
図30は、中継器600bがフリットを受信したときの動作を示すフローチャートである。中継器600bのバッファ選択部603は、まずステップS3001において、隣接の中継器600aからフリットを受信する。そして、ステップS3002において、バッファ選択部603でバイパスを行うべきかを判定する。
バッファ選択部603が、受け取ったフリットについて、バイパスを行うフローに属するフリットであると判断した場合は、バイパスバッファ612へ当該フリットを送出する。バイパスバッファ612に格納されたフリットは、ステップS3007において、バイパスバッファ612によってスケジューリングが行われる。その後、ステップS3006において、出力バッファ606へ送信される。なお、バッファ選択部603によるバイパスの具体的な判定方法については図33〜図35を参照しながら後述する。
一方、バイパスを行わない場合は、ステップS3003において、ルーティング処理部607でヘッダフリットを解析して出力ポート613を決定する。次に、ステップS3004において、バッファアロケータ608により、出力ポートと宛先の中継器の入力バッファのバッファキューとの対応付けを行う。続いて、ステップS3005において、スイッチアロケータ609により、トラヒックデータを伝送するために対応付けが完了している組から1組を選ぶ。その後、ステップS3006において、対象とするバッファキューからデータを1フリット単位又は、パケット単位で伝送する。
図31に、バイパス処理を行わない一般的な中継器の処理の手順を示す。一般的な中継器における構成や処理手順は、基本的に前述のバイパスを行わない場合における図29の構成や図30の処理手順と同じである。
まず、(1)ヘッダフリットを解析して宛先アドレスから出力ポートを決定する(Routing computation:RC)。この処理は、本実施形態では、ルーティング処理部607が担当し、S3003の処理ステップに対応する。
次に、(2)転送先の隣接中継器の入力バッファのバッファキュー(または出力バッファ606のバッファキュー)を決定する(Virtual channel allocation:VA)。この処理は、本実施形態ではバッファアロケータ608が担当し、S3004の処理ステップに対応する。出力ポートとバッファキューとを対応付ける順序として、ラウンドロビン、パケットの到着順、締切時間順などの選択基準に基づいて決定することができる。
続いて、(3)トラヒックデータを伝送するために対応付けが完了している組から1組を選ぶ(Switch allocation:SA)。このステップでも同様に、対応付けが完了している組から1組を選ぶ選び方として、ラウンドロビン、パケットの到着順、締切時間順、中継処理の優先度やトラヒックのバースト性などの選択基準に基づいて決定することができる。トラヒックのバースト性を区別して、バースト性のあるトラヒックを優先して選択することにより、バーストトラヒックの伝送性能の確保、すなわち、許容遅延時間内での低遅延伝送や、許容スループット内での高スループット伝送が容易になる。但し、選択されても、転送先の中継器600cが受け入れ可能でなければ、データを伝送できない。そのため、転送先の中継器600cが受け入れ可能であると判断できた場合のみ、データを伝送する。この処理は本実施形態では、スイッチアロケータ609が担当し、S3005の処理ステップに対応する。
そして、(4)対象とするバッファキューからデータを1フリット単位で伝送する(Switch traversal:ST)。この処理は本実施形態では、スイッチアロケータ609が担当し、S3006の処理ステップに対応する。伝送するデータのサイズは、前述のように、1フリット単位ではなく、パケット単位であってもよい。
なお、バースト性を示すトラヒックデータの特徴は、単位時間当たりの伝送量、送信周期、送信間隔、連続して伝送されるパケット数、および遅延時間の少なくとも1つで表現できる。具体的には、データの単位時間当たりの伝送量が予め定められた閾値よりも多い場合、データの送信周期が予め定められた閾値よりも短い場合、およびデータの送信間隔が予め定められた閾値よりも短い場合、連続して伝送されるパケット数が予め定めた閾値よりも大きい場合、データの許容遅延時間が予め定められた閾値よりも短い場合の少なくとも1つの場合に、当該データはバースト性を備えていると判定できる。トラヒックのバースト性は、例えば前述の観点からバースト性を備えるか否かを判断し、その結果を処理の優先度を示す情報として表現することができる。あるいは、バースト性の有無または程度を識別子(例えば、バースト性を示す情報や、バーストトラヒックを送信するバスマスタを識別できる情報)としてパケットのヘッダに記述することもできる。そのような情報により、バーストトラヒックをバースト性を備えないトラヒックと区別することができる。
具体的な実現例としては、バスマスタが送信するデータのバースト性の有無(もしくは優先度)を、図4に示すバスマスタ側のNIC620aが判断し、図6に示すヘッダフリット504にバースト性の有無を示す情報(もしくは優先度)を付与することができる。これにより、各中継器のヘッダフリット解釈部901は、ヘッダフリットからバースト性の有無を判断して、バースト性の有無(もしくは優先度)に応じた中継処理を行うことができる。
<1.3.バッファ選択部の構成および動作>
図32は、本実施形態におけるバッファ選択部603の構成を示すブロック図である。バッファ選択部603により、中継器600bが受信したトラヒックをバイパスするか、通常の処理により転送するかが決定される。バッファ選択部603は、図6に示すフリットの構造を解析するヘッダフリット解釈部901と、トラヒックデータをバイパスバッファ612または入力バッファ604のいずれかに振り分けるフリット選別部902と、バイパスバッファ612から出力されるトラヒックデータの送信を管理するバイパスバッファ送信管理部903とを備える。
フリット選別部902は、解析したトラヒックデータの構造に基づき、受信したトラヒックデータをバイパスさせるか否かを決定する。受信したトラヒックデータをバイパスする場合は、トラヒックデータをバイパスバッファ612へ転送する。
バイパスバッファ612へ転送されたデータは、ヘッダフリット解釈部901の解析結果に基づき、バイパスバッファ送信管理部903によってスケジューリングが調整された後、バイパスバッファ612から送信される。バイパスバッファ送信管理部903によるスケジューリングは、例えば、ラウンドロビン、締切時間、優先情報に基づいて行われる。
また、受信したトラヒックデータをバイパスさせない場合は、フリット選別部902は、トラヒックデータを入力バッファ604へ送信する。各部の処理の詳細は後述する。
図33は、バッファ選択部603の動作の流れを示すフロー図である。まず、ヘッダフリット解釈部901にてトラヒック情報を収集し、解釈する(S3301)。続いて、ヘッダフリット解釈部901にて解析したトラヒック情報に基づき、フリット選別部902は、伝送に残された時間(残り時間)および伝送するコンテンツの特性のうち少なくともいずれかの観点からバイパスするトラヒックと、バイパスさせないトラヒックに分類する(S3302)。バイパスするトラヒックはバイパスバッファ612へ送信され、バイパスバッファ送信管理部903によって送信流量が制御される。バイパスしないトラヒックは入力バッファ604へ送信され、図30に示すS3003からS3005までの処理を経て、出力バッファ606へ送信される(S3303)。
<1.4.ヘッダフリットの詳細構造>
図34は、本実施形態におけるヘッダフリット504の詳細構造を示す図である。ヘッダフリット504は、以下の構造で構成されている。すなわち、送受信ノード間での送信元1101と送信先1102を記述するフィールド、個々のトラヒックデータを識別するためのフローIDを記述するフィールド1103、トラヒックデータの重要度を定義する優先度を記述するフィールド1104、トラヒックデータの締切時間を記述するフィールド1105、トラヒックデータが中継器で中継された回数を記述するフィールド1106、トラヒックデータのデータサイズを記述するフィールド1107、トラヒックデータがバイパスした回数を記述するフィールド1108、およびトラヒックデータがバイパスバッファに滞在した時間を記述するフィールド1109である。
図35は、ヘッダフリット解釈部901が解析した結果を説明するための図である。フローIDは、トラヒックデータをシステム上で一意に特定するためのIDである。フローIDは、バスマスタが接続された中継器によって付与される。フローIDを割当てる中継器毎にIDの割当範囲を定義しておくことにより、システム上で一意なIDを割当てることが可能である。
優先度は、送信するトラヒックデータの重要度を示す。例えば、低遅延要求の高い映像や音声、制御データなどに対しては高い優先度を割当てる。逆に、低遅延要求の低いテキストやイメージなどのデータに対しては低い優先度を割当てる。
締切時間は、送信元から送信先に到着するまでに許容できる時間を記す。時間の表現形式としては、例えばクロック数、μ秒などの単位で表される。また、時刻をシステム上の絶対時刻で表現してもよいし、予め定めた基準時刻からの相対時間で表現してもよい。図35に示す例では、フローID 321は、フローID 234よりも締切時間が短い(1201)。
中継回数は、送信元から送信先までに通過する中継器の個数を記す。個数のカウントは、トラヒックデータが中継器を通過する毎に、ヘッダフリットの中継回数のフィールドを加算することによって実現される。図35に示す例では、フローID 456は、フローID 567よりも中継回数が多い(1204)。中継回数が多いフローの方が中継遅延の影響により、伝送遅延が大きくなっていると考えられる。
データサイズは、送信するデータのデータサイズを記す。一般に、制御データはサイズが小さく、映像や音声データはサイズが大きくなる(1205)。トラヒックデータの特徴を表すパラメータとして、ここではデータサイズを示したが、データサイズ以外の情報をヘッダフリットに記述してもよい。映像データのように、トラヒックデータの振幅が激しく、トラヒックデータが瞬間的(短い送信間隔)に連続して伝送されるトラヒック(バーストトラヒック)は、他のトラヒックデータに与える影響(例えばトラヒック干渉)が大きい。このため、トラヒックデータの最大振幅値、データの送信間隔や送信周期を記して、なるべく同一伝送経路や同一中継器で合流しないように設計することが好ましい。このような設計により、伝送性能の向上が期待できる。これらの具体的な応用については図36を参照しながら後述する。
バイパス回数は、送信元から送信先までに伝送される間に中継器のバイパスを通過した回数を記す(1203)。バイパス回数は、トラヒックデータが中継器のバイパスを通過する毎に、各中継器がヘッダフリットのバイパス回数のフィールドを加算することによって実現される。
バイパスバッファ滞在時間は、中継器のバイパスバッファで待たされた時間の累計を示す。送信元から送信先までに各中継器のバイパスバッファで待たされた時間が累積される。時刻の表現形式としては、クロック数、μ秒などの単位で表され得る。また、時刻をシステム上の絶対時刻で表現してもよいし、予め定めた基準時刻からの相対時間で表現してもよい。図35の例では、フローID 123は0、フローID 321は200だけバイパスバッファで待たされている(1202)。なお、バイパスバッファ滞在時間は、経由した全ての中継器におけるバイパスバッファでの滞在時間の累積ではなく、そのうちの一部の中継器におけるバイパスバッファでの滞在時間の累積であってもよい。これらの情報の収集対象となる他の中継器の範囲や、収集間隔(対象とする中継器のバイパスバッファでの滞在時間を収集する時間間隔)を、自中継器におけるバイパスバッファでの待ち時間に基づいて決定することも可能である。また、累積ではなく、平均値やピーク値をバイパスバッファ滞在時間として用いてもよい。
ヘッダフリット解釈部901は、図35に示す解析結果を示す情報を解析データとして、トラヒックデータとは別にフリット選別部902に送出する。
<1.5.フリット選別部によるバイパス判定処理>
<1.5.1.優先度、残り時間、その他の評価項目に基づくバイパス判定処理>
次に、中継対象となるトラヒックの許容残り時間に基づいてバイパス処理を行うか否かを判定する処理を説明する。なお、本実施形態では、残り時間に基づく判定処理のみならず、パケット(フリット)に付された優先度を示す情報およびその他の評価項目に基づく判定処理も行う。
図36は、フリット選別部902の構成を示すブロック図である。フリット選別部902は、ヘッダフリット解釈部901によるヘッダフリットの解析結果に基づき、フリットを選別する。図36に示すように、フリット選別部902には、ヘッダフリット解釈部901から、解析データとトラヒックデータとが入力される。フリット選別部902は、ヘッダフリットに記述された優先度を示す情報に基づきバイパスするか否かの判定を行う優先度判定部3601と、各トラヒックデータが許容できる残り時間(詳細は後述)に基づいてバイパスするか否かの判定を行う残り時間比較部3601と、着目する評価項目(詳細は後述)に基づき、バイパスするか否かの判定を行う評価項目比較部3603と、これら各部の判定結果に基づき、バイパスバッファ612または入力バッファ604のいずれかにパケットを転送する転送先選択部3604を備える。
図37は、フリット選別部902の処理の流れを示すフローチャートである。フリット選別部902は、まず受け取ったフリットのヘッダに記述された優先度の値が、予め定めた優先度以上であるかを判断する(S3701)。優先度の値が予め定めた優先度以上である場合、転送先選択部3604は、バイパスバッファ612にトラヒックデータを送信する(S3707)。ここで、優先度が高いほど、低遅延要求の度合いが高いものとする。優先度の値が予め定めた優先度未満である場合、残り時間比較部3602は、バイパスバッファ612に格納された各トラヒックデータが許容できる残り時間を求める(S3702)。残り時間の求め方としては、例えば以下のいずれかの方法で求める。
(1)残り時間 = 締切時刻 − 現在時刻
(2)残り時間 = 許容遅延時間 − (滞在時間+中継遅延×中継回数)
ここで、締切時刻および滞在時間(バイパスバッファ滞在時間)は、図34に示すヘッダフリットの要素である。現在時刻は、自中継器がトラヒックデータを受信した時刻である。許容遅延時間は、送受信ノード間で定義するアプリケーションにおいて許容できる最大遅延時間である。許容遅延時間は、ヘッダフリットに記述してもよいし、設計時に各中継器で定義、登録しておいてもよい。また、中継遅延は、中継器を経由する毎に必要となる中継処理により生じる遅延時間である。具体的には、固定値(例えば4サイクル)が1つの中継器あたりの中継遅延として設定される。これらの情報から上記(1)、(2)のいずれかの式を用いて残り時間が計算される。式(2)における滞在時間は、上述のように、当該フリットが自中継器に到達するまでに経由した各中継器のバイパスバッファで生じる遅延時間の累積を表す。中継遅延×中継回数は、自中継器から目的地である受信ノードまで入力バッファを介した通常処理によって伝送する場合の遅延時間(転送処理およびバッファでの待ち合わせ時間の合計)を表している。滞在時間と(中継遅延×中継回数)との和を、送信ノードから受信ノードまで伝送される間に中継処理によって生じる遅延と定義している。なお、自中継器から受信ノードまでの中継回数は、送信ノードから受信ノードまでに通過する中継器の個数から、ヘッダフリットに記述された通過した中継回数を減算することにより求められる。
上記の式(1)、(2)の代わりに、上記式(1)または(2)を用いて計算した残り時間からパケット長によって決まる所定の時間を減算した値を残り時間としてもよい。これにより、長いパケットと短いパケットとが混在しても、より正確な残り時間を求めることが可能となる。
図37に示すステップS3703において、残り時間比較部3602は、上記のいずれかの方法で求めた残り時間が、予め定めた残り時間未満であるか否かを判定する。予め定めた時間未満である場合は、転送先選択部3604は、残り時間に余裕が無いと判断し、ステップS3707において、バイパスバッファ612にデータを送信する。残り時間が予め定めた時間以上であれば、残り時間に余裕があると判断され、処理はステップS3704に進む。
ステップS3704において、評価項目比較部3603は、着目する評価項目に関して評価対象のフロー毎に予め定められた閾値と受信したデータの実際の値とを比較する。ここで、着目する評価項目とは、例えば、図34に示すバイパスバッファ滞在時間、バイパス回数、中継回数などの各項目である。システム設計時にどの評価項目に着目するかを任意に決めることができる。閾値は、システム設計時に平均的な値で与えられる。例えば、バイパス回数については「2回」、中継回数については「5回」といった数値が閾値として設定される。
続いて、ステップS3705において、評価項目比較部3603は、中継器のバイパスする伝送路の伝送負荷(例えばバイパスバッファ612の空き容量、またはバイパスバッファ612での待ち合わせ時間)が許容値より小さいか否かを判断する。ここで、バイパスバッファ612での待ち合わせ時間とは、バイパスバッファ612にパケットが到着してから送信されるまでに必要な時間を意味する。伝送負荷は、例えば不図示の計測部によって計測される。伝送負荷が予め定められた許容値より小さく、かつ、上記の評価項目について対象とするフローの閾値との比較結果からバイパスが必要と判断された場合、ステップS3707において、転送先選択部3604は、バイパスバッファ612にデータを送信する。そうでない場合、ステップS3706において、転送先選択部3604は、データを入力バッファ604に送信する。
以上のような処理により、バイパスの伝送能力に余裕がある場合(例えば、バイパスバッファの占有率が50%未満、バイパスバッファ612での待ち時間が100サイクル未満の場合)、着目する評価項目に関して、バイパスさせる複数のフロー間の伝送品質の格差を小さくすることが可能となる。例えば、バイパス回数に関する情報を評価項目として用いた場合、バイパス回数が少ないフローを優先的に伝送することにより、特定のフローのみがバイパスされることを防ぐことができる。これにより、フロー間の伝送性能(伝送遅延やスループット)のバラツキを解消することが可能となる。
なお、中継器は、図37に示す処理フローに限らず、少なくともステップS3702で求められる許容できる残り時間に基づいてバイパス処理を行うか否かの決定が行われるように構成されていればよい。
<1.5.2.トラヒック特性に基づくバイパス判定処理>
図38はフリット選別部902の他の例を示す図である。この例では、フリット選別部902は、ヘッダフリット解釈部901によるヘッダフリットの解析結果を受け、トラヒックの特性に基づいてバイパスするか否かの判定を行うトラヒック特性判定部3605と、この判定結果に基づいてバイパスバッファ612または入力バッファ604にデータを送出する転送先選択部3604とを備えている。
バイパスバッファ612の空き容量またはバイパスバッファ612での待ち時間だけではなく、伝送するデータの特性に基づいてバイパスの要否を判断してもよい。具体的には、トラヒック特性判定部3605は、伝送中のバーストトラヒックの有無や程度に基づいて、バイパスするか否かを判断してもよい。例えば、トラヒック特性判定部3605は、映像のようなバースト性の強いトラヒックに対して、ヘッダフリット解釈部901の解釈結果からトラヒックデータの最大振幅値、パケットの送信間隔や送信周期に関する情報などを取得する。それらの情報が予め設計時に定めた閾値以上であれば、トラヒック干渉の影響が強いと判断し、対象とするフローのバイパスを行わないと判定することができる。逆に、バースト性の強いトラヒックをバイパスさせる場合に、他のトラヒックとの干渉が強くなるため、バースト性の弱いトラヒックはバイパスしないと判定してもよい。判定結果に基づき、転送先選択部3604は、トラヒックデータをバイパスバッファ612または入力バッファ604へ転送する。
一般に、トラヒックのバースト性が強い場合、トラヒックの最大振幅値は大きく、パケットの送信間隔や送信周期は短い。パケットの送信間隔や送信周期が所定の閾値よりも短いトラヒックをバーストトラヒックと定義してもよい。バースト性を定義する閾値は、例えば、設計時にシミュレーションにより、実験的に求められる。なお、トラヒックデータの最大振幅値、パケットの送信間隔や送信周期に関する情報などの情報は、ヘッダフリット解釈部901によってフロー毎に中継器が計測することによって取得してもよいし、図35に示すヘッダフリットに予め記述しておき、ヘッダフリット解釈部901で解釈してもよい。
バースト性のあるトラヒックをバースト性のないトラヒックと分離し、バースト性のあるトラヒックをバイパス経路で伝送し、バースト性のないトラヒックを通常の伝送経路で伝送することにより、バースト性のあるトラヒックとバースト性のないトラヒックとのトラヒック干渉を防ぐことができる。これにより、バーストトラヒックに要求される伝送性能、すなわち、許容遅延時間内での低遅延伝送や、高いスループットの確保が可能となる。
バースト性のあるトラヒックを、バースト性のないトラヒックと分離する方法としては、前述したように、中継器の内部でバイパスする経路を設定する方法や、中継器の外部にバスパス経路を設けること方法がある。このような方法により、中継器内のバッファの共用によるトラヒックの干渉を防ぐとともに、中継器内のクロスバスイッチによる処理競合を無くすことができる。なお、中継器内でバイパスする場合においても、バイパスを行うかどうかの判定は、バスマスタに接続された中継器のみで行い、バスマスタに接続されていない途中の中継器ではバイパスを行うか否かの判定を行わないようにシステムを構成してもよい。そのような構成により、バイパスを行うか否かの判定処理によるバーストトラヒックとバースト性のないトラヒックとの間のトラヒック干渉を防ぐことが可能となる。この場合には、通常は隣接する中継器間で行われるフロー制御を、バスマスタに接続された中継器とメモリに接続された中継器との間で行うようにする必要がある。また、長距離に配線する場合には、バスバッファ(長配線を分割するリピータ)をバイパス経路に設ける必要がある。さらに、バースト性のあるトラヒックが複数ある場合には、中継器の外部にバイパス経路を設ける方法と同様に、バースト性のあるトラヒック毎に、独立にバイパスする伝送経路を設けることが効果的である。そのような構成では、トラヒック干渉を生じる箇所が少ないため、バーストトラヒックの伝送性能の改善効果は顕著である。
詳細は後述するが、バースト性のあるトラヒックのみに中継器内に専用のバッファを割当ててもよい。このようにすることで、トラヒック干渉の影響は残るものの、バイパス経路を設ける方法よりは簡単にトラヒック干渉を防ぐことが可能となる。バースト性のあるトラヒックが複数ある場合には、バースト性のあるトラヒック毎に伝送経路上の各中継器に専用のバッファを割当てることが有効である。これにより、トラヒック干渉が生じる機会が減るため、バーストトラヒックの伝送性能の改善効果は顕著である。具体的なバッファの構成方法は、実施形態4で説明する。
なお、本明細書では、バースト性のあるトラヒック毎に伝送経路上の各中継器に専用のバッファを割当てる方法も、独立したバイパス経路を実現する1つの方法と位置づける。すなわち、バースト性のあるトラヒックに対して、伝送経路上の各中継器に割当てたバッファをバイパスする伝送経路に対応付ける。トラヒックの特性(許容遅延時間、保証すべきスループット、バーストするトラヒックの数、トラヒック数など)に応じて、上記のアプローチを組み合わせて伝送路の設計をしてもよい。
また、音声データや制御データのようなサイズの小さいデータや、最大振幅値が小さいデータ、送信間隔や送信周期が長いデータを優先的にバイパスさせるようにしてもよい。これにより、バイパスされる伝送路でのトラヒック間の干渉を小さくすることができる。
さらに、トラヒックの伝送状態の別の表現方法としては、ヘッダフリットにバイパスすべきトラヒックであることを示す識別子を設けてもよい。トラヒックのバースト性やリアルタイム性などのトラヒック特性の観点や、伝送経路で生じるトラヒック干渉の影響などの観点から、設計者が判断して、設計時に、対象トラヒックのヘッダフリットにバイパスさせるか否かを示す情報を予め記述しておくことができる。この場合、各中継器のヘッダフリット解釈部901がバイパスの有無の識別子を解釈して、バイパス動作の有無の判定をさせるようにしてもよい。
なお、本実施形態では、フリット選別部902は、図36または図38の構成を有しているが、これらの構成に限定されない。例えば、これらの両方の構成を有していてもよい。その場合、パケットに付された情報から求められる時間情報と、トラヒックの負荷の両方の観点からバイパスの要否が判定される。
<1.6.バイパスバッファ送信管理部によるスケジューリング>
次に、図30に示すステップS3007におけるバイパスバッファ612による送信スケジューリングの例を説明する。図32に示すバイパスバッファ送信管理部903は、図36に示す残り時間比較部3602によって求められた許容残り時間に基づいて、バイパスバッファ612から出力されるデータの送信順序または送信時間(送信する間隔や送信タイミング)を決定する。送信順序や送信時間は、許容残り時間に限らず、他の情報に基づいて決定してもよい。例えば、入力されたパケットの締切時間、パケットが入力されたときのトラヒックのバイパスバッファ612での滞在時間、中継回数などの情報を適宜組み合わせて決定してもよい。このようなスケジューリングを行うことにより、迅速な転送が必要なパケットほど早く送信されるため、バイパストラヒックの遅延をさらに低減することができる。
以上の説明では、中継器600の各構成要素は、ブロック化された個別の機能部として表されているが、これらの機能部の処理を規定するプログラムを中継器600に実装されたプロセッサ(コンピュータ)に実行させることによって中継器600の動作が実現されていてもよい。そのようなプログラムの処理手順は、例えば図30、33、37のフローチャートに記載されているとおりである。
<2.変形例>
<2.1.出力バッファを設けない構成>
図29に示す構成では、中継器600bは出力バッファ606を備えているが、前述したように、出力バッファ606を備えていなくてもよい。図39は、中継器600bが出力バッファ606を備えておらず、クロスバスイッチ605の出力が後段の隣接中継器600cのバッファ選択部603cに入力される構成例を示している。このような構成によれば、メモリ量を抑えることができるため、組込用途に有効である。
<2.2.外部配線>
また、以上の説明では、図29に示すように、中継器600b内でバイパスが行われる例(内部配線)を示したが、実施形態1と同様、中継器600bの外部にバイパストラヒックを伝送するように配線(外部配線)されていてもよい。図40は、中継器600bの外部に配線してバイパスする構成例を示す図である。この例では、バッファ選択部603は、バイパス経路BP3、BP4によって中継器600bの外部の中継器またはメモリ105にトラヒックを伝送する。
内部配線による構成では、中継器毎にバイパス処理が閉じているため、中継器の処理モジュールとしての再利用性は高い。すなわち、個々の中継器を1つの部品として交換することが容易となる。しかし、宛先までの中継器を全て中継する必要があるため、処理のオーバーヘッドが生じやすい。逆に、外部配線による構成では、内部配線による場合に比べて、中継器の処理モジュールとしての再利用性は低い。しかし、宛先までの中継器を全て中継する必要がないため、処理のオーバーヘッドを低減させることができる。
本実施形態においても、図20を参照しながら説明した応用が可能である。図20に示すバスマスタ101aから発生するトラヒックについて、中継器R9は、入力されたパケットが有する時間に関する情報を用いて得られる許容残り時間、およびパケットが入力されたときのトラヒックの伝送状態の少なくとも一方に基づいて、パケットを優先的に出力するバイパス処理を行う。ここで、バスマスタは複数種類のトラヒックを出力してもよい。具体的には、締切時刻や優先度の異なるトラヒックや、振幅や送信間隔が異なるトラヒックを混在させて送信してもよい。また、外部配線と内部配線とを組合せてネットワークを構築してもよい。例えば、中継器R9を内部配線によって構成することにより、外部配線または内部配線のみで構築するよりも低遅延化が容易になる。
<2.3.他のトポロジ>
上記の説明では、集積回路のトポロジが多段接続網の場合(図3)を例に説明したが、本実施形態の中継器600も、実施形態1と同様、多段接続網での利用に限定されるものではない。例えば、図12(b)に示すような、中継器を格子状に並べたメッシュ型のトポロジ、図22Aに示すようなトーラス型のトポロジ、図22Bに示すような、バスを階層的に接続したトポロジであってもよい。複数のバスマスタを分散型のバスを介して接続したトポロジであれば、同様に本実施形態の中継器の適用が可能である。
(実施形態4)
次に、本発明の第4の実施形態を説明する。本実施形態の具体的な構成および動作を説明する前に、本実施形態の基本概念を説明する。
本実施形態の中継器は、バーストトラヒックに対して、バッファキュー(データ格納部)を適切に割当てることにより、バッファキューの利用効率を高めながら、トラヒック干渉を抑制し、低遅延伝送を実現することを可能にする。一般に、バースト性の高いトラヒックは、トラヒックデータの最大振幅値は大きく、パケットの送信間隔や送信周期は短いため、トラヒック干渉が生じやすく、伝送遅延が生じやすい。そこで、本実施形態の中継器は、バーストトラヒックに対して特定のバッファキューを占有的に割り当てて格納することにより、バッファキューの利用効率を高め、トラヒック干渉を抑制する。
図41Aは、本実施形態の中継器600の概略構成の例を示す図である。図41Aに示すように、本実施形態による中継器600は、データを受け取る入力部400と、データを一時的に蓄える複数のデータ格納部31を含むバッファ部30と、バッファ部30に格納されたデータを順次出力する出力部450と、受け取ったデータのバースト性を示す情報に基づいていずれかのデータ格納部31にデータを振り分ける振分け処理部1404とを備えている。
振分け処理部1404は、入力部400が受け取ったトラヒックデータのバースト性を示す情報に基づいて、当該データを予め確保された特定のデータ格納部に振り分けるか否かを決定する。例えば、受け取ったトラヒックデータの最大振幅値が予め設定された閾値よりも大きい場合や、送信周期や送信間隔が予め設定された閾値よりも短い場合に、空いている1つのデータ格納部31を確保し、当該データをそのデータ格納部31に格納する。
中継器600は、図41Bに示す構成を有していてもよい。図41Bに示す構成では、振分け処理部1404は、自中継器600−1ではなくデータの転送先の中継器600−2における複数のデータ格納部31−2に当該データを振分ける。この構成は、例えば自中継器600−1内のバッファ部30−1を経由せず、転送先の中継器600−2内のバッファ部30−2にデータをバイパスさせるような場合に採用され得る。振分処理部1404−1は、上記の例と同様、受け取ったデータのバースト性に基づき、転送先の中継器600−2における予め確保した特定のデータ格納部31−2に当該データを振分ける。
以上の構成により、バースト性の高いトラヒックデータは、特定のデータ格納部31を利用することになるため、他のトラヒックとの干渉が抑制される。結果として、トラヒックの伝送遅延を低減させることが可能となる。
本実施形態において、バースト性を示す情報としては、上記のトラヒックデータの振幅、送信周期、送信間隔に限らず、他の指標を用いてもよい。例えば、特定の種類のデータ(例えば特定の映像、音声データ)をバーストトラヒックとして扱ってもよい。バースト性を示す情報は、自中継器内の計測部で計測してもよいし、送信されるデータに付与されていてもよい。例えば送信元のバスマスタがバースト性が高いことを示すフラグをデータに付与して送信するような形態でもよい。具体的には、トラヒックデータのバースト性を示す情報は、先に述べたトラヒック特性に基づき、設計時に、ヘッダフリットに付与されていてもよい。ヘッダフリットにバーストトラヒックであるか否かを示す識別子を設けて、他のトラヒックデータと区別できるようにすることで、各中継器でトラヒック特性の観測を行わずに、簡単に各中継器でバーストトラヒックの処理をできるようになる。
以下の説明では、まず、バイパス機能を備えた中継器の具体的な構成を説明するとともに、バイパス機能を備えた中継器において、バーストトラヒックに対して特定のバッファキューを占有的に割り当てる実施形態を説明する。続いて、バイパス機能を備えない一般的な中継器においてバーストトラヒックに対して特定のバッファキューを占有的に割り当てる実施形態を説明する。後者の例に示すように、本発明の中継器は、必ずしもバイパス配線を備えている必要はない。
以下、本実施形態の具体的な構成および動作を説明する。本実施形態と実施形態3との主な相違点は、バイパスバッファ612およびバイパスバッファ送信管理部903の構成および動作にある。以下の説明では、実施形態3と異なる点を中心に説明し、重複する事項についての説明は省略する。
<1.中継器の構成および動作>
<1.1.中継器の概略構成>
本実施形態における中継器の物理構成は、図29に示す構成と同様である。また、本実施形態でも、図3に示す多元接続網の構成を有するシステムを想定する。さらに、図30〜35を参照しながら説明した構成および動作については、本実施形態でもそのまま適用される。
なお、本実施形態におけるバイパスバッファ612、入力バッファ604、および出力バッファ606は、複数のバッファキューを含むバッファ部を有している。バッファ部は、仮想チャネル(Virtual Channel)で構成してもよい。仮想チャネルによってバッファを構成する場合、複数の仮想回線が構築されることになる。本実施形態では、バッファキューや仮想チャネルが本発明におけるデータ格納部の機能を有する。
<1.2.フリット選別部の動作>
図42は、本実施形態におけるフリット選別部902の処理の例を示すフロー図である。実施形態3と同様、フリット選別部902は、ヘッダフリット解釈部901によって解析された結果に基づいて、バイパスを行うか否かの判断を行う。フリット選別部902は、まず、ステップS4201において、受け取ったフリットに付与された優先度が予め定めた閾値以上か否かを判定する。優先度が閾値以上である場合、ステップS4206に進み、フリット選別部902は、フリットをバイパスバッファ612に送信する。優先度が閾値に満たない場合は、ステップS4202に進み、フリット選別部902は、送信完了までに許容できる残り時間を求める。残り時間は、例えば、ヘッダフリットに記述された締切時間の情報から得られる締切時刻から現在時刻を減算することによって求められる。続いて、ステップS4203において、フリット選別部902は、残り時間が予め定めた閾値よりも小さいか否かを判定する。残り時間が予め定めた閾値よりも小さい場合、ステップS4206に進み、当該フリットはバイパスバッファに送信される。残り時間が予め定めた閾値以上である場合、ステップS4204において、フリット選別部902は、当該フリットの中継回数またはバイパス回数が予め定めた閾値よりも多いか否かを判定する。中継回数またはバイパス回数が予め定めた閾値よりも大きい場合、ステップS4206に進み、当該フリットはバイパスバッファに送信される。中継回数およびバイパス回数が予め定めた閾値以下である場合は、ステップS4205に進み、当該フリットは入力バッファ604に送信される。
なお、図42に示すフリット選別部902の動作は、あくまでも一例であり、図示されるフローのとおりに動作しなくてもよい。例えば、ステップS4201、S4203、S4204のいずれか1つの判定だけを行ってもよいし、図34に示す他の情報に基づいて判定を行ってもよい。
<1.3.バイパスバッファ、バイパスバッファ送信管理部の構成・動作>
<1.3.1.バイパスバッファ、バイパスバッファ送信管理部の構成>
次に、バイパスバッファ送信管理部903およびバイパスバッファ612の構成を説明する。
図43は、図32に示すバイパスバッファ送信管理部903およびバイパスバッファ612の詳細構成を示すブロック図である。バイパスバッファ612は、振分け処理部1404と、複数のバッファキューを含むバッファ部1405とを有している。なお、本実施形態では、バッファ選択部603および振分け処理部1404が協働してバイパス制御部の機能を実現する。
フリット選別部902によってバイパスバッファ612に振り分けられたトラヒックデータは、振分処理部1404に入力される。振分け処理部1404は、受け取ったトラヒックデータを、そのバースト性を示す情報に基づいて複数のバッファキューに振り分ける。なお、本実施形態では振分け処理部1404は、バイパスバッファ612の内部に設けられているが、外部に設けられていてもよい。また、バッファ部1405は、図43に示す構成に限らず、バイパス先の他の中継器内に独立にバッファキューを設ける構成であってもよいし、バイパス先の他の中継器の入力バッファのバッファキューをバイパスされない他のトラヒックと共用する構成であってもよい。
バースト性の高いトラヒックでは、トラヒックデータの最大振幅値は大きく、パケットの送信間隔や送信周期は短い。そのため、バーストトラヒックが伝送されると、トラヒック干渉が生じやすく、伝送遅延を引き起こす可能性が高い。そこで、本実施形態の中継器は、バイパストラヒックのバースト性に着目して複数のバッファキューへの割当を適切に行うことにより、トラヒック干渉を抑制する。トラヒック特性に関する情報は、自中継器で計測してもよいし、図34に示す各情報のようにバスマスタからの送信時にヘッダフリットに記述しておき、自中継器で解釈してもよい。
バースト性を示す情報は、例えば単位時間当たりの伝送量、送信周期、送信間隔、連続して伝送されるパケット数、および遅延時間の少なくとも1つであり得る。また、バースト性を示す情報は、データの許容スループット、許容遅延時間の少なくとも1つであってもよい。許容スループットは、単位時間当たりの伝送量、送信周期、送信間隔、連続して伝送されるパケット数とも表現され、設計時に、バスマスタ毎に設計要求値として満たさなければならない値として定義される。許容遅延時間も、中継遅延や処理遅延なども含めた、伝送路の片道または往復の伝送遅延時間として表現され、バスマスタ毎に設計要求値として満たさなければならない値として定義される。
前述のように、データの単位時間当たりの伝送量が予め定められた閾値よりも多い場合、データの送信周期が予め定められた閾値よりも短い場合、およびデータの送信間隔が予め定められた閾値よりも短い場合、連続して伝送されるパケット数が予め定められた閾値よりも大きい場合、データの許容遅延時間が予め定められた閾値よりも短い場合の少なくとも1つの場合に、当該データはバースト性を有すると判定することができる。バースト性があるデータが送信されるケースには、例えば、映像、音声や制御データなどのように、許容遅延時間が小さいデータがパケット化されて、多くの連続したパケットとして、同一のバスマスタから送信されるケースがある。
バスマスタが送信するデータのバースト性の有無は、上記の判断基準に基づいて、図4に示すバスマスタ側のNIC620aによって判断され、ヘッダフリットにバースト性の有無を示す情報を付与して宛先へ伝送することができる。これにより、ヘッダフリット解釈部901はヘッダフリットの内容に基づいてバースト性の有無を判断することができるため、各中継器にてバースト性の有無に応じた中継処理を行うことが可能になる。
バースト性を示す情報は、必ずしも許容スループットや許容遅延時間を表す情報としてデータとともに送信する必要はない。例えば、バースト性を示す識別子、データの優先度、送信ノードを特定できる識別子のいずれかの表現形態で、データとともに伝送してもよい。例えば、データの優先度を特異な値(例えば高い値)に設定を行って区別したり、バースト性のあるトラヒックを送信する送信ノード(バスマスタ)を特定する識別子を付与することによって区別してもよい。本実施形態では、バースト性を示す情報の表現方法は特定の方法に限定はされない。
バイパスバッファ送信管理部903は、トラヒックデータの伝送に残された時間を計算する残り時間計算部1401と、計算した残り時間からバッファ部1405の各バッファキューからのトラヒックデータの送信頻度を計算する送信頻度計算部1402と、計算した送信頻度から、バッファ部1405の各バッファキューからの送信間隔を制御する送信間隔制御部1403とを有している。本実施形態では、バイパスバッファ送信管理部903が、本発明における送信管理部および計測部の機能を有している。バイパスバッファ送信管理部903における各部の具体的な動作については、後述する。
<1.3.2.バッファキューへのトラヒックの割当動作>
図44は、複数のバッファキューへのデータの割当動作を示すフロー図である。振分け処理部1404は、受け取ったトラヒックデータのバースト性に基づいて当該データをバッファ部1405の各バッファキューに振り分ける。
まずステップS1401において、振分け処理部1404は、バイパスされたトラヒックがバースト性の強いトラヒック(バーストトラヒック)であるか否かを判断する。バースト性が強いか否かは、ヘッダフリット解釈部901によって解析されたヘッダフリットの情報(図35)、またはトラヒックの最大振幅値等の計測結果に基づいて判断される。ヘッダフリットの情報を利用する場合、振分け処理部1404は、ヘッダフリット解釈部901による解釈結果に基づいて判断すればよい。一方、計測結果を利用する場合、例えば、バイパスバッファ送信管理部903が、トラヒックの振幅(単位時間あたりの送信データ量)、送信周期、送信間隔等を計測し、その結果を振分け処理部1404が受け取るように構成されていればよい。あるいは、振分処理部1404自身がこれらの計測機能を備えていてもよい。振分処理部1404は、予め設定された閾値と計測結果とを比較し、その結果に基づいて受信したトラヒックがバーストトラヒックであるか否かを判断するように構成すればよい。
当該トラヒックがバーストトラヒックではないと判断された場合、ステップS1405に進み、振分け処理部1404は、バーストトラヒック向けに割り当てられていないバッファキューに当該データを割り当てる。一方、バースト性が強いトラヒックがバイパスされた場合、ステップS1402に進み、振分け処理部1404は、受信したバーストトラヒックが新たに受信したバーストトラヒックであるか否かを判断する。当該トラヒックが既に受信済みのバーストトラヒックである場合、ステップS1403に進み、過去に割り当てたバッファキューに当該トラヒックを割り当てる。受信したバーストトラヒックが新たに受信したバーストトラヒックである場合、ステップS1406に進む。
バッファキューへのトラヒックの割当ては、例えば以下のように管理される。振分け処理部1404は、どのバーストトラヒックをどのバッファキューに割当てたかを示すバッファキューリスト(データ格納部利用情報)を保有している。図44(a)は、ある時点におけるバッファキューリストの内容の例を示している。バッファキューリストによって、トラヒックのフローIDと割当先バッファキューとの対応付けが管理される。バッファキューリストを参照することにより、振分け処理部1404は、当該トラヒックが新たに受信したバーストトラヒックであるか否かを判断する。また、バッファキューリストには、最終受信時刻を示す情報も登録される。最終受信時刻は、後述するようにバッファキューリストを解放する動作のために用いられる。なお、図44(a)に示すバッファキューリストの例では、基準時刻からの相対時間で最終受信時刻が表されているが、最終受信時刻の表現形式はどのような形式であってもよい。
ステップS1406において、振分け処理部1404は、受信した新たなトラヒックに空きのバッファキューを割り当て、バッファキューリストへの登録を新たに行う。なお、全てのバッファキューが割り当て済みの場合は、バッファキューの空きができるまで前段の隣接中継器で待ち状態となるように各中継器を構成してもよい。
S1403、S1405、S1406のいずれかのステップにおいて、受信したトラヒックのバッファキューへの割当が完了すると、ステップS1407に進み、トラヒックを受信した時刻がバッファキューリストに登録または更新される。その後、ステップS1408において、各バーストトラヒックの送信が停止しているか否かが判断される。具体的には、予め決められた期間伝送されていないバーストトラヒックが存在するか否かをバッファキューリストに登録された各フローの最終送信時刻と現在時刻とを比較して判断する。最終受信時刻が予め定められた閾値より前(例えば、現時刻より1万サイクル以上前)であるトラヒックがバッファキューリストに存在すれば、そのバーストトラヒックは送信が停止していると判断される。その場合、ステップS1409において、振分け処理部1404は、他のトラヒックのために伝送が停止していると判断したバーストラヒックに割り当てられていたバッファキューを解放する。具体的には、バッファキューリストから停止しているトラヒックに該当するフローの情報を削除する。予め決められた期間伝送されていないバーストトラヒックが存在しない場合、どのバーストトラヒックも送信が停止していないと判断され、バッファキューは解放されることなく処理が終了する。
なお、上記の説明では、各中継器が自律的にバッファキューを解放するものとしたが、バッファキューの解放動作は上記の例に限られるものではない。例えば、送信側のNICまたはバスマスタが、対象とするバーストトラヒックの送信が終了したことを各中継器に通知し、通知を受信した各中継器がバッファキューリストから対象となるフローを削除する方式であってもよい。
また、トラヒックのバースト性の有無の判断は、上記の例に限らず、例えば設計時に他のトラヒックへの影響を加味してバースト性の有無が決定されていてもよい。例えば、音声データのようにトラヒックデータの最大振幅値は小さいが、パケットの送信間隔や送信周期が短いトラヒックについてはバーストトラヒックであるものとして上記の処理を適用してもよい。さらに、トラヒックの振幅などのトラヒック特性を示す情報を送信しなくても、バーストトラヒックを区別できる方法であればどのような方法であってもよい。例えば、バーストトラヒックであることを示すビットフラグや優先度を示す情報をヘッダフリットに付与し、その値に基づいてバーストトラヒックであるか否かを区別できるようにしてもよい。
以上の構成によれば、従来のラウンドロビン方式のように、全てのバッファキューにバーストパケットを順次割当てていく従来のアルゴリズムを用いた構成とは異なり、バーストラヒックによる影響を特定のバッファキューに限定することができる。その結果、バーストトラヒックが混雑に遭遇して伝送遅延が上昇した場合でも、システム全体の伝送遅延の上昇を抑制することが可能となる。また、本実施形態によれば、従来方式とは異なり、バッファキューの定常的な確保を行わずに、バーストトラヒックが流れている時だけ占有的に特定のバッファキューを確保し、流れが止まればバッファキューを開放する。このため、バッファキューの利用効率は高まり、システムの伝送効率は向上する。
<1.3.3.バイパスバッファ送信管理部の動作>
次に、バイパスバッファ送信管理部903の動作を説明する。図45は、バイパスバッファ送信管理部903の動作の流れを示すフロー図である。バイパスバッファ送信管理部903は、中継対象となるトラヒックの伝送について許容できる残された時間に基づいて、バイパスバッファ612の各バッファキューからの送信スケジューリングを行う。
バイパスバッファ送信管理部903は、複数のバッファキューに互いに異なるトラヒックデータが格納されている場合に、どのバッファキューからデータを送信させるかを決定する。バイパスバッファ送信管理部903は、例えば、トラヒックデータの優先度や緊急度を示す情報に基づいて、データを出力させるバッファキューを選択するとともに、各バッファキューからのデータの出力順序を決定する。バイパスバッファ送信管理部903は、バースト性の強いトラヒックから順に出力させてもよい。以下の説明では、各データの許容できる残り時間に基づいてデータの出力順序が決定される例を説明する。
前述したように、バイパスバッファ612は、複数のバッファキューを有しており、トラヒックデータは、一旦、バイパスバッファ612の各バッファキューに蓄えられる。バイパスバッファ612において、トラヒックデータは、宛先に到着するまでの残り時間に基づき、送信スケジュールが調整された上で出力バッファ606へ送信される。送信スケジュール調整の具体的な手順について、以下に示す。
図43に示す残り時間計算部1401は、バイパスバッファ612に格納された各トラヒックデータのフロー伝送について、許容できる残り時間を求める(S1501)。残り時間は、例えば以下のいずれかの方法で求められる。
(1)残り時間 = 締切時刻 − 現在時刻、
(2)残り時間 = 許容遅延時間 − (滞在時間+中継遅延×中継回数)
ここで、締切時刻および滞在時間(バイパスバッファの各バッファキューでの滞在時間)は、図35に示すヘッダフリットの要素である。現在時刻は、自中継器がトラヒックデータを受信した時刻である。許容遅延時間は、送受信ノード間で定義するアプリケーションで許容できる最大遅延時間である。許容遅延時間は、ヘッダフリットに記述してもよいし、設計時に各中継器で定義、登録しておいてもよい。また、中継遅延は、中継する毎に必要となる中継処理により生じる遅延時間である。具体的には、固定値(例えば4サイクル)が1つの中継器あたりの中継遅延として設定され得る。これらの情報から上記(1)、(2)のいずれかの式を用いて残り時間が計算される。式(2)における滞在時間は、上述のように、当該フリットが自中継器に到達するまでに経由した各中継器のバイパスバッファの各バッファキューで生じる遅延時間の累積を表す。中継遅延×中継回数は、自中継器から目的地である受信ノードまで入力バッファを介した通常処理によって伝送する場合の遅延時間(転送処理およびバッファキューでの待ち合わせ時間の合計)を表している。滞在時間と(中継遅延×中継回数)との和を、送信ノードから受信ノードまで伝送される間に中継処理によって生じる遅延と定義している。なお、自中継器から受信ノードまでの中継回数は、送信ノードから送信ノードまでに通過する中継器の個数から、ヘッダフリットに記述された通過した中継回数を減算することにより求められる。
上記の式(1)、(2)の代わりに、上記式(1)または(2)を用いて計算した残り時間からパケット長によって決まる所定の時間を減算した値を残り時間としてもよい。これにより、長いパケットと短いパケットとが混在しても、より正確な残り時間を求めることが可能となる。
次に、送信頻度計算部1402は、バッファキュー毎の残り時間(Tn)に基づき、送信頻度(Wn)を計算する(S1502)。ここで、nはバッファキューの番号である。バイパスバッファ612が4つのバッファキューを有する場合、Wnを求める計算式は、例えば以下の式(3)のように定義すればよい。
(3) Wn= 1−Tn/(T1+T2+T3+T4)
このように定義すれば、残り時間の少ないバッファキューほど送信頻度が高くなる。
また、バッファキュー1からバッファキュー4までの全送信時間をLとする。バッファキュー1からバッファキュー4までの伝送処理に必要な時間を1サイクルとして、1サイクルで各バッファキューの送信に割当てる送信時間Fnを次の式(4)で定義する。
(4) Fn=L × Wn
送信間隔制御部1403は、上記の式(4)に基づき、バッファキュー1から順に、割当時間Fnを計算し、各バッファキュー内のデータを割当時間Fnの間送信する(S1503)。
本実施形態では、予め決められた時間内にデータ伝送を完了させるという性能保証の観点から、上記のスケジューリングが行われる。他のスケジューリングの方法として、図35に示す評価項目のいずれかに着目してスケジューリングしてもよい。具体的には、締切時間が短い順、バイパスバッファ滞在時間の長い順、中継回数の多い順に送信してもよい。そのような方法によってもフロー間の伝送遅延のバラツキを解消することができる。また、締切時間、滞在時間、中継回数を上記のTnの代わりに置き換えて、トラヒック毎の送信時間を求めてもよい。但し、締切時間を用いる場合は、前述したように、現在時刻からの差をとり、残り時間として評価する。
図46は、フリット選別部902による選択基準を動的に補正する方法を説明するための図である。図46は、自中継器だけではなく、他の中継器のバイパスバッファでの待ち時間を用いて、残り時間を算出することで、中継器間の混雑の偏りを加味して残り時間を算出する方法を示している。
まず、図45に示す例と同様に、バッファに格納されたフロー伝送について許容できる残り時間を求める(S1601)。次に、隣接の中継器のバッファの負荷値を収集し、残り時間に反映する(S1602)。具体的には、隣接の中継器のバイパスバッファの待ち時間に関する情報を収集し、その平均値を隣接の中継器のバッファの負荷値とする。すると、隣接の中継器のバッファの負荷値は次の式(5)で表される。
(5) 隣接の中継器のバッファの負荷値
=Σ 隣接の負荷値/収集した中継器数
また、図46に示す例で求めた残り時間を、残り時間(反映前)とする。残り時間(反映前)に、自中継器の負荷値と隣接の中継器の負荷値との差分を自中継器の負荷値で正規化した値の和を求め、隣接の中継器数で割り、平均する。その値に残り時間(反映前)を掛け合わせて、システム全体の負荷量を加味した残り時間(反映後)を算出する。すると、残り時間(反映後)は、次の式(6)で表される。
(6) 残り時間(反映後)
=残り時間(反映前)
+残り時間(反映前)×Σ(自中継器の負荷値−隣接の中継器の負荷値)/(自中継器の負荷値×隣接の中継器数)
ここで、他の中継器から収集する負荷値情報としては、バッファでの待ち時間の代わりに、バッファの空き容量や使用量を用いてもよい。バイパスバッファの待ち時間は、平均値又は、ピーク値で情報を収集すればよい。また、上記の説明では、隣接の中継器から負荷情報を収集することとしたが、隣接しない他の中継器から負荷情報を収集してもよい。
図47は、負荷値情報の配信例を説明するための図である。ここでは、説明のため、バタフライ網によるシステム構成を想定する。各中継器は、接続されている各中継器に自らのバイパスバッファの待ち時間の情報(自中継器の負荷値)を通知する。通知間隔は、一定であってもよいし、自中継器の負荷の大きさに基づいて通知間隔を決定してもよい。自中継器の負荷が高い場合は、システム全体でのバイパスバッファの負荷量が高くなっていると判断し、通知間隔を短くしてもよい。一方、自中継器の負荷が低い場合は、通知によるオーバーヘッドを抑えるために、通知間隔を長くしてもよい。
また、通知範囲についても、自中継器の負荷が高い場合は、システム全体でのバイパスバッファの負荷量を早く低下させるために広範囲に通知するように設計されていることが好ましい。一方、自中継器の負荷が低い場合は、通知によるオーバーヘッドを抑えるために、通知範囲を小さくすることが好ましい。通知範囲の指定方法は、例えば、通知を送出する中継器が通知対象の中継器数をヘッダフリットに記述し、中継器を通過する毎に中継器数の値を減算することによって実現できる。
さらに、通知方向としては、送信元であるバスマスタ側や、送信先であるメモリ側に限定することで、負荷値の高い中継器との間で、効率的にメッセージを通知することが可能となるため、通知メッセージの効率的な削減が可能となる。
上記の例では、自中継器から他中継器にメッセージを通知する方法を示したが、自中継器から他中継器に負荷状態を収集する形式であってもよい。他中継器のバッファの負荷値を収集し、自中継器でのトラヒックの許容残り時間を、収集した負荷値を用いて補正することで、中継器間の混雑の偏りが減少し、システム全体の伝送性能向上が期待できる。これにより、スループットや、低遅延伝送の実現が期待できる。
以上の説明では、中継器600の各構成要素は、ブロック化された個別の機能部として表されているが、これらの機能部の処理を規定するプログラムを中継器600に実装されたプロセッサ(コンピュータ)に実行させることによって中継器600の動作が実現されていてもよい。そのようなプログラムの処理手順は、例えば図42、44、45、46のフローチャートに記載されているとおりである。
<2.変形例>
<2.1.出力バッファを設けない構成>
本実施形態でも、中継器600bは出力バッファ606を備えていなくてもよい。図39に示すように、中継器600bが出力バッファ606を備えておらず、クロスバスイッチ605の出力が後段の隣接中継器600cのバッファ選択部603cに入力される構成を採用してもよい。このような構成によれば、メモリ量を抑えることができるため、例えば組込用途に有効である。
<2.2.外部配線>
また、本実施形態においても、図40に示すように、中継器600bの外部にバイパストラヒックを伝送するように配線(外部配線)が設けられていてもよい。内部配線による構成では、中継器毎にバイパス処理が閉じているため、中継器の処理モジュールとしての再利用性は高い。すなわち、個々の中継器を1つの部品として交換することが容易となる。しかし、宛先までの中継器を全て中継する必要があるため、処理のオーバーヘッドが生じやすい。逆に、外部配線による構成では、内部配線による場合に比べて、中継器の処理モジュールとしての再利用性は低い。しかし、宛先までの中継器を全て中継する必要がないため、処理のオーバーヘッドを低減させることができる。
<2.3.バイパスバッファを設けない構成>
本実施形態では、各中継器はバイパスバッファ612を備えていることとしたが、バイパスバッファ612は必須の構成要素ではない。バイパスバッファ612を設けない場合、バイパス先の中継器における入力バッファにバイパストラヒックのためのバッファキューを設けるように構成されていればよい。図48A〜48Cは、バイパスバッファ612を設ける場合の概略構成および設けない場合の概略構成を示す図である。
図48Aは、上記の説明で前提としたバイパスバッファ612を各中継器が個別に備えている場合における、バイパス経路BPを介して互いに接続された2つの中継器600−1、600−2の概略構成を示している。図中において、中継器600−1の構成要素には参照符号に「−1」を付し、中継器600−2の構成要素には参照符号に「−2」を付している。上述したように、バイパストラヒックは、自中継器600−1のバイパスバッファ612−1のバッファキューに格納された後、転送先の中継器600−2に入力される。
図48Bは、バイパスバッファ612を設けずに、中継器600−2の入力バッファ604−2をバイパストラヒックと非バイパストラヒックとが共用する場合の構成例を示している。この構成例では、自中継器600−1でバイパス処理されたトラヒックは、転送先の中継器600−2の入力バッファ604−2のバッファキューに格納される。このように、各中継器は、自中継器600−1に出力バッファを設ける代わりにバイパス先の中継器600−2の入力バッファを用いてもよい。
図48Cは、バイパストラヒックが格納されるバイパスバッファ612−1または入力バッファ604−2の構成を示す図である。図48Aに示す構成においては、上述のとおり、バイパスバッファ612−1内に振り分け処理部1404および複数のバッファキューを含むバッファ部1405が設けられる。一方、図48Bの構成を採用する場合は、入力バッファ604−2内に振分け処理部1404および複数のバッファキューを含むバッファ部1405が設けられていれば、上述の振分処理を実現することができる。
図48Aに示す構成の場合、中継器としての汎用性は高くなるが、バッファ使用量は高くなる。逆に、図48Bに示す構成の場合、中継器としての汎用性は低くなるが、バッファ使用量は小さくできる。
<2.4.バイパス処理を行わない構成>
以上の説明では、各中継器は、例えば図42に示すバイパス判定処理により、一部のトラヒックを優先的に処理するバイパス処理を行うこととしたが、本実施形態の中継器は、必ずしもこのようなバイパス処理を行わなくてもよい。バイパス配線およびバイパスバッファ612を有しない一般的な中継器の構成を用いた場合であっても、受信したトラヒックのバースト性に基づいて特定のバッファキューに占有的にトラヒックを振り分けるように構成されていればよい。以下、上述の説明における振分け処理部1404および送信間隔制御部1403の処理を、バイパス配線およびバイパスバッファ612を有しない一般的な中継器に適用する例を説明する。
一般的な中継器でも、図29に示す構成と同様、ヘッダフリットを解析して出力ポートを決定するルーティング処理部607と、転送先の隣接中継器における入力バッファのバッファキュー(又は自中継器における出力バッファのバッファキュー)を決定するバッファアロケータ部608と、トラヒックデータを伝送するために対応付けが完了している組から1組を選ぶスイッチアロケータ部609とを備えている。また、隣接中継器600aから受信したデータを蓄える入力バッファ604と、隣接中継器600cへデータを出力する出力ポート617とを備えている。ただし、バイパスバッファ612やバイパス配線BP1、BP2は備えていない。
このような中継器において、上述の振分け処理およびスケジューリング処理を適用するには、以下のようにすればよい。まず、図43に示す振分け処理部1404の機能を、図29に示すバッファアロケータ部608に追加する。また、図43に示す送信間隔制御部1403の機能を、図29に示すスイッチアロケータ部609に追加する。バッファアロケータ部608により、図46におけるステップS1602において求めたように、残り時間を求め、残り時間の小さい順に出力ポートとバッファキューとの対応付けを行ってもよい。また、スイッチアロケータ部609は、バースト性の強いトラヒックから順番に処理してもよい。
図49は、このような中継器における動作の一例を示すフロー図である。中継器600bは、まず、隣接中継器600aからフリットを受信する(S101)。次に、ルーティング処理部607によりヘッダフリットを解析して出力ポート617を決定する(S102)。続いて、バッファアロケータ部608により、出力ポート617と転送先の隣接中継器600cの入力バッファのバッファキュー(または自中継器600bの出力バッファ606のバッファキュー)との対応付けを決定する(S103)。バッファキューの割当方法としては、図44を参照して説明したように、バーストトラヒックに対して占有的に特定のバッファキューを割当てる方法を用いる。次に、スイッチアロケータ部609により、トラヒックデータを伝送するために対応付けが完了している組から1組を選ぶ(S104)。選択方法として、バースト性の高いトラヒックほど優先的に選択してもよい。また、別の方法としては、図45を参照して説明したように、許容できる残り時間に基づいて送信する1組を選択してもよい。さらに、ヘッダフリットに付与された締切時間、滞在時間、中継回数等の情報を用いて送信する1組を選択してもよい。最後に、選択したバッファキューからデータがフリット単位またはパケット単位で伝送される(S105)。
次に図50を参照する。図50は、複数の中継器600a〜600dを介して、メモリMに複数のバスマスタBM1〜BM4が接続された具体例を示す。ここでは、バースト性のあるトラヒック毎に伝送経路上の各中継器に専用のバッファ(入力バッファ604)を割当てることにより、バイパス経路を設定することを想定する。バスマスタからメモリまでの伝送経路上にある各中継器によって割当てられる入力バッファ604のバッファキューがバイパス経路に対応する。
図50に示す構成例では、4つのバスマスタ、すなわち、バーストトラヒックTBを伝送するバスマスタBM1、高優先度のトラヒックTHを伝送するバスマスタBM2およびBM3、低優先度のトラヒックTLを伝送するバスマスタBM4が設けられている。各中継器の入力バッファ604は、バーストトラヒック向けのバッファキュー5001と、高優先度トラヒック向けのバッファキュー5002と、低優先度向けトラヒックのバッファキュー5003とを備える。なお、この例ではバーストトラヒックは1種類であるが、バーストトラヒックが複数ある場合は、バーストトラヒック向けのバッファキューを複数個、独立に各中継器に設けてもよいし、複数のバーストトラヒックで1つのバッファキューを共有してもよい。また、複数のバーストトラヒック間でのトラヒック干渉を抑えるために、物理的に独立した伝送路を用意して伝送経路を構築してもよい。
各中継器では、優先度の最も高いバーストトラヒックから順に、バースト、高優先度、低優先度の順にバッファキューを割当てる。具体的な入力バッファ604の割当は、図30を参照しながら説明した転送先の隣接中継器の入力バッファのバッファキュー(または自中継器の出力バッファのバッファキュー)を決定する処理(VA)であり、前述の優先度に基づいてバッファアロケータ部608にて実行される。
これらのバッファキューは、プライオリティーキュー/プライオリティ・スケジューリングに基づいて構成され、高優先度のバッファキューのデータが優先的に伝送され、低優先度のバッファキューのデータは高優先度のバッファキューにデータが存在する際にはデータ伝送はできない。具体的なデータ伝送手順は、図30を参照しながら説明したトラヒックデータを伝送するために対応付けが完了している組から1組を選ぶ処理(SA)であり、前述の優先度に基づいてスイッチアロケータ部609にて実行される。
バーストトラヒックTBは、メモリMまでの各中継器のバッファキューにおいて、最も優先的に割当てられ、最も優先的にメモリまで伝送される。一方、バーストトラヒックTBよりも優先度の低い高優先度トラヒックTHおよび低優先度トラヒックTLについては、上記のプライオリティ・スケジューリングに基づき、バーストトラヒックTBの伝送が完了するまで伝送が抑制される。この状態は、具体的には、図30を参照しながら説明したバッファアロケータ部608による転送先の中継器への入力バッファの割当要求の発行の際に、転送先の中継器からバッファ割当を拒否されるケースに対応する。
図50に示す例では、中継器600cのバーストトラヒック用のバッファキュー5001からデータを伝送する際には、高優先度と低優先度のトラヒックの伝送は抑制される。また、高優先度のバッファキュー5002および低優先度のバッファキュー5003が一杯の場合は、直前の中継器や、データの送信元である中継器またはバスマスタへ順次、データ伝送を抑制するように伝えてもよい。データ伝送の抑制を通知された中継器やバスマスタは、データ送信の停止や、データの流量を絞ったり、データ伝送の宛先メモリを変更することによって混雑の解消を図ることができる。この状態は、上記のように、バッファアロケータ部608による転送先の中継器への入力バッファの割当要求の発行の際に、転送先の中継器からバッファ割当を拒否されるケースに対応する。
バースト性のあるトラヒックであるか否かは、例えば、パケットが有する時間に関する情報に基づいて得られる許容残り時間、中継処理の優先度、およびバースト性を示す情報の少なくとも一つに基づいて判断することができる。各中継器が解釈するパケット情報としては、上述のように、バースト性を示す識別子、データの優先度、バーストトラヒックを送信する送信ノードを特定できる識別子(設計時に決まる)として表現される。
また、バースト性を示す特徴は、単位時間当たりの伝送量、送信周期、送信間隔、連続して伝送されるパケット数、および遅延時間の少なくとも1つに基づいて決めることもできる。具体的には、上述のように、バースト性があるデータは、データの単位時間当たりの伝送量が予め定められた閾値よりも多い場合、データの送信周期が予め定められた閾値よりも短い場合、およびデータの送信間隔が予め定められた閾値よりも短い場合、連続して伝送されるパケット数が予め定めた閾値よりも大きい場合、データの許容遅延時間が予め定められた閾値よりも短い場合の少なくとも1つの場合として特徴づけできる。さらに、バースト性を示す情報は、設計時の要求仕様として、各バスマスタのデータの許容スループットや、許容遅延時間を用いて表現することもできる。
次に、バッファアロケータ部608の入力バッファの確保の動作として発生するトラヒックのフロー制御(送信元の中継器が、データ転送前に送信先の中継器のバッファ確保の可否を通知する処理)と、バイパス伝送が行われていることを示す通知機能との関係を説明する。バースト性のあるトラヒックが、メモリMの直前にある中継器600cからメモリMに転送されている間に、その影響により、前述のように中継器600cにおいてバースト性のないトラヒックの伝送がブロックされる場合を想定する。この場合、中継器600cでは、バースト性のないトラヒック向けのバッファ確保ができない。この状況で、バスマスタ側に近い中継器600b(または中継器600d)が、バースト性のないトラヒックを転送時に、メモリの直前にある中継器600cにバッファ確保の可否を問い合わせた場合を考える。この場合、バッファの確保ができないことが、中継器600cからバスマスタ側に近い中継器600b(または中継器600d)に通知されるトラヒックのフロー制御の通知処理の際に通知される。この通知処理は、メモリの直前にある中継器600cからバスマスタ側に近い中継器600b(または中継器600d)へ、中継器600cにおいてバイパス伝送が行われていることを示す通知処理と同じことを意味している。すなわち、実施形態1において説明したとおり、フロー制御の通知処理とバーストトラヒックによって伝送できないことを示す情報の通知(広義のバイパス通知)とを兼用することが可能である。なお、バーストトラヒックの伝送中(またはバイパスする伝送経路の使用中)は、バースト性のないトラヒックデータの伝送はブロックされる。このため、図50の構成では、中継器600cは、バースト性のないトラヒックデータに対するフロー制御の結果(バースト性がないトラヒック向けのバッファキューが確保できないことを示す通知)を、データの送信元である中継器やバスマスタへ順次、データ伝送を抑制するように伝える。最終的に、バスマスタにおいてバースト性のないトラヒックデータの送信量や送信の停止/中断を行うか否かの判断を行うことができる。中継器600dおよび中継器600cにおける上記の機能は、一般的にはDRAMやSRAMなどのメモリを制御するメモリコントローラの処理の一部として実現してもよい。
なお、隣接する中継器間のトラヒックのフロー制御は、転送元の中継器のバッファアロケータ部608から転送先の中継器のバッファアロケータ部608に入力バッファの割当要求を発行し、転送先の中継器のバッファアロケータ部608から転送元の中継器のバッファアロケータ部608へ、転送先の中継器での入力バッファの割当の可否を返信することにより、実現できる。また、中継器間のトラヒックの伝送量は、例えば、入力バッファの割当要求や入力バッファの割当の可否の通知のタイミングで調整され得る。
以上の処理により、バイパス配線を設けない中継器でも、トラヒック特性に応じたバッファキューの利用、およびパケット伝送の許容時間を加味した伝送が可能となる。なお、このような中継器においても、フリット選別部902による選択基準を動的に補正する方法を適用してもよい。また、バーストトラヒックの種類(例えば、音声、映像、送信ノードと受信ノードとの対応関係)を区別して、出力ポートと転送先の中継器のバッファキューとを対応付けてもよいし、区別せずに出力ポートと転送先の中継器の特定のバッファキューとを対応付けてもよい。
<2.5.他のトポロジ>
以上の説明では、集積回路のトポロジが多段接続網の場合(図3)を例に説明したが、本実施形態の中継器600も、多段接続網での利用に限定されるものではない。例えば、図12(b)に示すような、中継器を格子状に並べたメッシュ型のトポロジ、図22Aに示すようなトーラス型のトポロジ、図22Bに示すような、バスを階層的に接続したトポロジであってもよい。複数のバスマスタを分散型のバスを介して接続したトポロジであれば、同様に本実施形態の中継器の適用が可能である。
(利用例1)
以下、上記の各実施形態による中継器の実際の機器への利用例を説明する。図51は、半導体回路上の複数のバスマスタと複数のメモリおよび外部とデータを通信するための共用の入出力ポート(I/Oポート)とを分散型のバスを利用して接続した例を示している。このような半導体回路は、例えば、携帯電話、PDA(Personal Digital Assistants)、電子書籍リーダーなどの携帯端末や、TV、ビデオレコーダ、ビデオカメラ、監視カメラ等の機器で用いられ得る。バスマスタは、例えば、CUP、DSP、伝送処理部、画像処理部などである。メモリは、揮発性のDRAMであってもよいし、不揮発性のフラッシュメモリであってもよい。また、揮発性メモリおよび不揮発性メモリが混在していてもよい。入出力ポートは、外付けのハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、DVDドライブのような記録装置に接続するためのUSBやイーサネット(登録商標)などの通信インターフェースであり得る。
複数の映像や音楽などの再生、記録、トランスコード、および書籍、写真、地図データ等の閲覧や編集、ゲームのプレイなど、複数のアプリケーションやサービスを同時に利用する場合、各バスマスタからメモリへのアクセスが増える。このため、メモリの数が1つしかない場合、アクセスが1箇所に集中してしまう。これを解決するためには、メモリ側の入出力の伝送帯域を広げる必要があり、コストが高くなってしまう。
メモリアクセスの集中を回避する方法として、アプリケーションやサービス等の種類によってバスマスタが利用するメモリを物理的に分ける方法や、外付けのHDDなどの外部の記録装置を利用する方法を適用することにより、これらのバスマスタとメモリとを分散型のバスで接続させることが有効である。
しかし、例えば、あるバスマスタが、映像データを保存するためにメモリAに対して高いレートでデータパケットを送信した場合、伝送経路上のバッファが全てメモリA宛のパケットで占有される頻度が多くなる。その結果、他のメモリへデータが流れにくくなり、他のアプリケーションやサービスの性能が低下したり、処理時間が増加してしまう。この問題は、各中継器が送られてきたデータパケットの順序を単純に維持したまま中継することにより発生する。
これに対し、本発明の実施形態による中継器を用いた場合には、緊急度や重要度の高いパケットは優先的に伝送されるため、特定のメモリに向かうパケットによるバッファの占有が回避される。これにより、アプリケーションやサービスで重要となるデータを締切時刻までに伝送することが可能となる。その結果、アプリケーションやサービスのユーザ応答性の確保や、映像・音声の品質確保などが可能となる。さらに、優先度の低いデータに対しても、優先度の高いデータとのトラヒックの干渉を抑えることが可能となるため、システム全体の伝送効率が改善するとともに、省電力化も期待できる。特に、設計時の想定以上にデータ伝送の遅延が発生した場合に、緊急的に重要なデータを優先的に伝送できるため、システムが想定外に過負荷になった場合の対処方法としても有効である。
(利用例2)
次に、上記の各実施形態による中継器のマルチコアプロセッサ(multi−core processor)への利用例を説明する。
図52は、CPUやGPU、DSP等のコアプロセッサの処理能力を向上させるために、複数のコアプロセッサをメッシュ状に配列し、これらを分散バスで接続したマルチコアプロセッサを示している。この構成では、各コアプロセッサが本発明における第1ノードとして機能し得るし、第2ノードとしても機能し得る。
マルチコアプロセッサ上では、各コアプロセッサ間で通信が行われる。例えば、各コアプロセッサには、演算処理に必要なデータを記憶しておくキャッシュメモリが備えられており、コアプロセッサ間で互いのキャッシュメモリの情報をやり取りすることができる。これによって情報の共有が可能となり、処理性能を向上させることができる。
しかし、マルチコアプロセッサ上で発生するコアプロセッサ間の通信は、それぞれ位置関係や距離(中継ホップ数)、通信頻度が異なる。このため、データパケットの順序を単純に維持したまま中継すると、バッファが全て特定のコアプロセッサ宛のパケットにより占有されパケットデータが流れにくい中継器が発生する。その結果、マルチコアプロセッサの性能の低下や、処理時間の増加を引き起こす。
これに対し、上記の各実施形態による中継器を用いた場合には、緊急度や重要度の高いパケットは優先的に伝送されるため、特定のメモリに向うパケットによるバッファの占有が回避される。そのため、重要なデータを締切時刻までに伝送することが可能となる。同様に、アプリケーションやサービスのユーザ応答性の確保や映像・音声の品質確保などが可能となる。また、優先度の低いデータ伝送に対しても、トラヒック干渉を抑えることが可能となるため、システム全体の伝送効率の改善が可能となるとともに、省電力化も期待できる。特に、設計時に想定していた以上にデータ伝送で遅延が発生した場合に、緊急的に重要なデータを優先的に伝送できるため、システムが想定外に過負荷になった場合の対処方法としても有効である。
(利用例3)
上述の実施形態および利用例では、本願発明がチップ上で実装された際の構成を説明した。本願発明は、チップ上に実装されるだけでなく、チップ上に実装するための設計及び検証を行うシミュレーションプログラムとしても実施され得る。そのようなシミュレーションプログラムは、コンピュータによって実行される。例えば図5A、5Bに示される各構成要素は、シミュレーションプログラム上のオブジェクト化されたクラスとして実装される。各クラスは、予め定められたシミュレーションシナリオを読み込むことにより、各構成要素に対応する動作をコンピュータ上で実現する。言い換えると、各構成要素に対応する動作は、コンピュータの処理ステップとして直列的または並列的に実行される。
中継器として実装されたクラスは、シミュレータで定義されたシミュレーションシナリオを読み込むことにより、優先度閾値、締切時刻、トラヒック閾値、バッファ閾値等の条件を決定する。また、他の中継器のクラスから送信されるパケットの送信タイミング、送信先、優先度、経時情報等の条件を決定する。
バイパス配線を備えた中継器として実装されたクラスは、個々のシミュレーションシナリオにおいて、他の中継器のクラスからデータの入力を受け、そのデータがバイパスすべきデータか否かに応じて、バイパス処理および通常処理のいずれかを選択的に実行する。バイパス処理を実行する場合には、上記の実施形態1のように、トラヒック状態やバッファ状態に応じて他の中継器のクラスに対してバイパス通知パケットを通知してもよい。
バイパス通知パケットが通知された中継器のクラスは、出力バッファまたは後段の隣接中継器における入力バッファの使用状況などの、バイパストラヒックと合流する中継器の伝送状態に基づいて流量の調整や伝送経路の変更を行うことによって伝送負荷の低減を図る。また、バイパス通知パケットの中継回数が規定値以下の場合、さらに他の中継器のクラスにバイパス通知パケットを通知する。
また、バイパス配線を備えていない中継器として実装されたクラスは、個々のシミュレーションシナリオにおいて、高優先度トラヒック伝送時に、出力バッファまたは後段の隣接中継器における入力バッファの使用状況などの、バイパストラヒックと合流する中継器における伝送状態に基づいて低優先度トラヒックに対して流量の調整や経路の変更を行う。
中継器として実装されたクラスは、シミュレーションシナリオに記述されたシミュレーションの終了条件が成立する迄の間、動作を行う。動作中のスループットやレイテンシ、バスの流量の変動の様子、動作周波数、消費電力の見積値等を算出しプログラムの利用者に提供する。これらに基づき、プログラムの利用者はトポロジや性能の評価を行い、設計及び検証を行う。
シミュレーションシナリオの各行には、例えば、送信元ノードのID、宛先ノードのID、送信するパケットのサイズ、送信するタイミング等の情報が記述されるのが普通である。また複数のシミュレーションシナリオをバッチ処理的に評価することで、想定した全てのシナリオで所望の性能が保証できているか否かを効率的に検証できる。またバスのトポロジやノード数、送信ノード、中継器、宛先ノードの配置を変化させて性能比較することにより、シミュレーションシナリオに最も適したネットワーク構成を特定することもできる。上記の実施形態のいずれもが本態様の設計及び検証ツールとしても適用可能である。このように、本願発明は、設計及び検証ツールとして実施される際にも適用可能である。
以上の各実施形態における中継器を実際の機器に適用する際には、各実施形態の処理を単独で適用する場合に限らず、これらを複合的に組み合わせてもよい。例えば、実施形態3におけるデータのバースト性に基づくバイパス処理の有無の判定処理を行うとともに、実施形態1におけるバイパス通知や非バイパストラヒックに対する伝送制御を行うように中継器を構成してもよい。また、実施形態4におけるデータのバースト性に基づくバッファキューの割当て処理を行うとともに、実施形態1におけるバイパス通知や非バイパストラヒックに対する伝送制御を行うようにしてもよい。それ以外にも、例えば実施形態2の処理と実施形態3または実施形態4の処理とを組み合わせてもよい。このように、上記の各実施形態における処理を可能な範囲で組み合わせることができる。これらの実施形態の処理を複合的に組み合わせることにより、相乗的な効果が期待できる。
本発明に係る中継器は、システムLSIなどのデータ伝送システム上のデータ伝送に利用できる。
1a、1b バスマスタ
5 メモリ
10 第1ノード
20 第2ノード
50a、50b バイパス経路
101 バスマスタ
105 メモリ
200 バイパス制御部
300 バイパス
350 非バイパス
400 入力部
500 パケット
501 ヘッダフィールド
502 データフィールド
503 制御コードフィールド
504 ヘッダフリット
505 データフリット
506 テイルフリット
600、600a、600b、600c、600d 中継器
603、603c バッファ選択部
604、604c 入力バッファ
605 クロスバスイッチ
606 出力バッファ
607 ルーティング処理部
608 バッファアロケータ
609 スイッチアロケータ
BP、BP1、BP2、BP3、BP4 バイパス配線
615 入力ポート
617 出力ポート
620a、620c NIC
630 メモリコントローラ
700a、700b、700c 中継器
704 入力バッファ
705 クロスバスイッチ
706 出力バッファ
707 ルーティング処理部
708 バッファアロケータ
709 スイッチアロケータ
710 出力制御部
715 入力ポート
717 出力ポート
901 ヘッダフリット解釈部
902 フリット選別部
903 優先度閾値
904 締切時刻
905 バッファ閾値
907 トラヒック閾値
1001 バイパス通知判定部
1002 バッファ使用量計測部
1003 高優先度トラヒック計測部
1100 バイパス通知パケット
1101 送信元
1102 送信先
1103 識別子
1104 中継回数
13001 バイパストラヒック
13002、13003 非バイパストラヒック
13004 中継器
23001 高優先度トラヒック
23002、23003 低優先度トラヒック
23004 中継器

Claims (24)

  1. データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器であって、
    データを受け取る入力部と、
    前記入力部が受け取った前記データを格納するための複数のデータ格納部を有するバッファ部と、
    前記バッファ部に格納された前記データを出力する出力部と、
    前記入力部が受け取った前記データのバースト性を示す情報に基づいて、前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定する振分け処理部と、
    を備え、
    前記振分け処理部は、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を有し、前記入力部が受け取った前記データを前記特定のデータ格納部に格納する場合に、前記情報を更新する、
    中継器。
  2. 前記バースト性を示す情報は、単位時間当たりの伝送量、送信周期、送信間隔、連続して伝送されるパケット数、遅延時間、前記データの許容スループット、許容遅延時間、バースト性を示す識別子、前記データの優先度、前記データの種類を示す識別子、および前記第1ノードを特定する識別子の少なくとも1つである、請求項1に記載の中継器。
  3. 前記振分け処理部は、前記データの単位時間当たりの伝送量が予め定められた閾値よりも多い場合、前記データの送信周期が予め定められた閾値よりも短い場合、前記データの送信間隔が予め定められた閾値よりも短い場合、連続して伝送されるパケット数が予め定められた閾値よりも大きい場合、および前記データの許容遅延時間が予め定められた閾値よりも短い場合の少なくとも1つの場合に、前記データを前記バッファ部における予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における予め確保された特定のデータ格納部に格納する、請求項1に記載の中継器。
  4. 前記バースト性を示す情報を計測する計測部をさらに備えている、請求項1から3のいずれかに記載の中継器。
  5. 前記バースト性を示す情報は、前記データに予め付与されている、請求項1から4のいずれかに記載の中継器。
  6. 前記振分処理部は、前記特定のデータ格納部に格納された前記データの送信完了後、予め定められた時間が経過したとき、前記データ格納部利用情報から前記データに関する情報を削除する、請求項1から5のいずれかに記載の中継器。
  7. 前記入力部が受け取ったデータを優先的に処理するバイパス処理を行うか否かを判定し、前記バイパス処理を行うと判定した場合に、前記データを前記バッファ部に送るバイパス判定部をさらに備えている、請求項1から6のいずれかに記載の中継器。
  8. 前記出力部は、複数の出力ポートを含み、
    前記入力部が受け取った前記データを解析することにより、前記複数の出力ポートの中から前記データを出力する1つの出力ポートを決定するルーティング処理部をさらに備えている、
    請求項1から7のいずれかに記載の中継器。
  9. データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器であって、
    データを受け取る入力部と、
    前記入力部が受け取った前記データを格納するための複数のデータ格納部を有するバッファ部と、
    前記バッファ部に格納された前記データを出力する出力部と、
    前記入力部が受け取った前記データのバースト性を示す情報に基づいて、前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定する振分け処理部と、
    前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定する送信管理部と、
    を備え、
    前記送信管理部は、各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる1つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定し、
    前記送信管理部は、前記各データのデータ長に基づいて各データの前記許容残り時間を補正する、
    中継器。
  10. 前記送信管理部は、各データに付与された優先度または緊急度を示す情報に基づいて、前記複数のデータ格納部からデータを出力させる1つのデータ格納部を選択する、請求項9に記載の中継器。
  11. 前記送信管理部は、各データに付与された締切時間、中継回数、および前記データが自中継器より前に経由した他の中継器におけるバイパスバッファでの待ち時間の少なくとも1つの情報に基づいて、前記複数のデータ格納部からデータを出力させる1つのデータ格納部を選択する、請求項10に記載の中継器。
  12. 前記送信管理部は、各データに付与された締切時間、中継回数、および前記データが自中継器より前に経由した他の中継器におけるバイパスバッファでの待ち時間の少なくとも1つの情報に基づいて、前記複数のデータ格納部からのデータの出力順序を決定する、請求項11に記載の中継器。
  13. データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器であって、
    データを受け取る入力部と、
    前記入力部が受け取った前記データを格納するための複数のデータ格納部を有するバッファ部と、
    前記バッファ部に格納された前記データを出力する出力部と、
    前記入力部が受け取った前記データのバースト性を示す情報に基づいて、前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定する振分け処理部と、
    前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定する送信管理部と、
    を備え、
    前記送信管理部は、各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる1つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定し、
    前記送信管理部は、少なくとも1つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正する、
    中継器。
  14. 前記バッファ部の負荷を示す情報は、前記バッファにおけるデータの待ち時間、前記バッファの空き容量、および前記バッファの使用量の少なくとも1つである、請求項13に記載の中継器。
  15. 前記送信管理部は、前記複数のデータ格納部に格納されたデータのうち、バースト性が最も高いと判断されたデータが格納されているデータ格納部から前記データを出力させる、請求項13または14に記載の中継器。
  16. データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御方法であって、
    データを受け取るステップと、
    受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
    前記複数のデータ格納部に格納された前記データを出力するステップと、
    受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
    受け取った前記データを前記特定のデータ格納部に格納する場合に、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を更新するステップと、
    を含む制御方法。
  17. データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御方法であって、
    データを受け取るステップと、
    受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
    前記複数のデータ格納部に格納された前記データを出力するステップと、
    受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
    前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
    各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる1つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
    前記各データのデータ長に基づいて各データの前記許容残り時間を補正するステップと、
    を含む制御方法。
  18. データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御方法であって、
    データを受け取るステップと、
    受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
    前記複数のデータ格納部に格納された前記データを出力するステップと、
    受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
    前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
    各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる1つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
    少なくとも1つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正するステップと、
    を含む制御方法。
  19. データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御プログラムであって、
    前記制御プログラムは、前記中継器に実装されたコンピュータに対し、
    データを受け取るステップと、
    受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
    前記複数のデータ格納部に格納された前記データを出力するステップと、
    受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
    受け取った前記データを前記特定のデータ格納部に格納する場合に、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を更新するステップと、
    を実行させる、制御プログラム。
  20. データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御プログラムであって、
    前記制御プログラムは、前記中継器に実装されたコンピュータに対し、
    データを受け取るステップと、
    受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
    前記複数のデータ格納部に格納された前記データを出力するステップと、
    受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
    前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
    各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる1つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
    前記各データのデータ長に基づいて各データの前記許容残り時間を補正するステップと、
    を実行させる、制御プログラム。
  21. データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器の制御プログラムであって、
    前記制御プログラムは、前記中継器に実装されたコンピュータに対し、
    データを受け取るステップと、
    受け取った前記データを前記中継器に実装された複数のデータ格納部のいずれかに格納するステップと、
    前記複数のデータ格納部に格納された前記データを出力するステップと、
    受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
    前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
    各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる1つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
    少なくとも1つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正するステップと、
    を実行させる、制御プログラム。
  22. データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器のためのシミュレーションプログラムであって、
    前記シミュレーションプログラムは、コンピュータに対し、
    データを受け取るステップと、
    受け取った前記データを複数のデータ格納部のいずれかに格納するステップと、
    前記複数のデータ格納部に格納された前記データを出力するステップと、
    受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
    受け取った前記データを前記特定のデータ格納部に格納する場合に、前記複数のデータ格納部の各々がどのデータによって利用されているかを示すデータ格納部利用情報を更新するステップと、
    を実行させる、シミュレーションプログラム。
  23. データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器のためのシミュレーションプログラムであって、
    前記シミュレーションプログラムは、コンピュータに対し、
    データを受け取るステップと、
    受け取った前記データを複数のデータ格納部のいずれかに格納するステップと、
    前記複数のデータ格納部に格納された前記データを出力するステップと、
    受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
    前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
    各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる1つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
    前記各データのデータ長に基づいて各データの前記許容残り時間を補正するステップと、
    を実行させる、シミュレーションプログラム。
  24. データを送信する第1ノードと、前記第1ノードから送信された前記データを受信する第2ノードと、前記第1ノードおよび前記第2ノードの間で伝送される前記データをバスを介して中継する複数の中継器とを備えたデータ伝送システムにおいて用いられる中継器のためのシミュレーションプログラムであって、
    前記シミュレーションプログラムは、コンピュータに対し、
    データを受け取るステップと、
    受け取った前記データを複数のデータ格納部のいずれかに格納するステップと、
    前記複数のデータ格納部に格納された前記データを出力するステップと、
    受け取った前記データのバースト性を示す情報に基づいて、受け取った前記データを前記複数のデータ格納部のうちの予め確保された特定のデータ格納部、または出力先の他の中継器のバッファ部における複数のデータ格納部のうちの予め確保された特定のデータ格納部に格納するか予め確保されていないデータ格納部に格納するかを決定するステップと、
    前記複数のデータ格納部の各々が互いに異なるデータを格納している場合において、どのデータ格納部からデータを出力させるかを決定するステップと、
    各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からデータを出力させる1つのデータ格納部を選択し、または各データに付与された許容残り時間に基づいて、前記複数のデータ格納部からのデータの出力順序を決定するステップと、
    少なくとも1つの他の中継器におけるバッファ部の負荷を示す情報を収集し、前記情報に基づいて、各データの前記許容残り時間を補正するステップと、
    を実行させる、シミュレーションプログラム。
JP2012546282A 2011-03-28 2012-03-09 中継器、中継器の制御方法、およびプログラム Expired - Fee Related JP5320512B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012546282A JP5320512B2 (ja) 2011-03-28 2012-03-09 中継器、中継器の制御方法、およびプログラム

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
JP2011070640 2011-03-28
JP2011070638 2011-03-28
JP2011070639 2011-03-28
JP2011070639 2011-03-28
JP2011070640 2011-03-28
JP2011070637 2011-03-28
JP2011070638 2011-03-28
JP2011070637 2011-03-28
PCT/JP2012/001625 WO2012132264A1 (ja) 2011-03-28 2012-03-09 中継器、中継器の制御方法、およびプログラム
JP2012546282A JP5320512B2 (ja) 2011-03-28 2012-03-09 中継器、中継器の制御方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP5320512B2 true JP5320512B2 (ja) 2013-10-23
JPWO2012132264A1 JPWO2012132264A1 (ja) 2014-07-24

Family

ID=46930058

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2012546282A Expired - Fee Related JP5320512B2 (ja) 2011-03-28 2012-03-09 中継器、中継器の制御方法、およびプログラム
JP2012546288A Expired - Fee Related JP5200197B2 (ja) 2011-03-28 2012-03-09 中継器、中継器の制御方法、およびプログラム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2012546288A Expired - Fee Related JP5200197B2 (ja) 2011-03-28 2012-03-09 中継器、中継器の制御方法、およびプログラム

Country Status (4)

Country Link
US (2) US9294402B2 (ja)
JP (2) JP5320512B2 (ja)
CN (2) CN103283192A (ja)
WO (2) WO2012132264A1 (ja)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013054497A1 (ja) * 2011-10-14 2013-04-18 パナソニック株式会社 中継器、中継器の制御方法、およびコンピュータプログラム
WO2014017069A1 (ja) * 2012-07-24 2014-01-30 パナソニック株式会社 バスシステムおよび中継器
WO2014073188A1 (ja) * 2012-11-08 2014-05-15 パナソニック株式会社 半導体回路のバスシステム
US9319310B2 (en) * 2012-11-15 2016-04-19 Compass Electro Optical Systems Ltd. Distributed switchless interconnect
US9823951B2 (en) 2013-02-27 2017-11-21 International Business Machines Corporation Link optimization for callout request messages
JP6229985B2 (ja) * 2013-03-12 2017-11-15 パナソニックIpマネジメント株式会社 バスシステムおよびコンピュータプログラム
US9571402B2 (en) * 2013-05-03 2017-02-14 Netspeed Systems Congestion control and QoS in NoC by regulating the injection traffic
US9634866B2 (en) * 2013-09-06 2017-04-25 Intel Corporation Architecture and method for hybrid circuit-switched and packet-switched router
JP2015061195A (ja) * 2013-09-18 2015-03-30 ソニー株式会社 送信装置及び送信方法、受信装置及び受信方法、並びにコンピューター・プログラム
US10601713B1 (en) * 2013-10-15 2020-03-24 Marvell Israel (M.I.S.L) Ltd. Methods and network device for performing cut-through
US9722954B2 (en) * 2013-10-21 2017-08-01 Avago Technologies General Ip (Singapore) Pte. Ltd. Dynamically tunable heterogeneous latencies in switch or router chips
CN103595627A (zh) * 2013-11-28 2014-02-19 合肥工业大学 基于多播维序路由算法的NoC路由器及其路由算法
US9832030B2 (en) * 2014-01-21 2017-11-28 International Business Machines Corporation Multicast packet routing via crossbar bypass paths
JP6295767B2 (ja) * 2014-03-25 2018-03-20 富士通株式会社 スイッチ装置、情報処理システムおよびスイッチ装置の制御方法
CN105306382B (zh) 2014-07-28 2019-06-11 华为技术有限公司 一种无缓存noc数据处理方法及noc电子元件
CN105830416B (zh) * 2014-11-28 2020-06-02 华为技术有限公司 一种片上网络、通信控制方法及控制器
US9614766B2 (en) 2014-12-16 2017-04-04 Cisco Technology, Inc. System and method to analyze congestion in low latency network
US9621484B2 (en) 2014-12-29 2017-04-11 Oracle International Corporation System and method for supporting efficient buffer reallocation in a networking device
US9832143B2 (en) * 2014-12-29 2017-11-28 Oracle International Corporation System and method for supporting efficient virtual output queue (VOQ) packet flushing scheme in a networking device
US9838330B2 (en) 2014-12-29 2017-12-05 Oracle International Corporation System and method for supporting credit management for output ports in a networking device
US9838338B2 (en) 2014-12-29 2017-12-05 Oracle International Corporation System and method for supporting efficient virtual output queue (VOQ) resource utilization in a networking device
JP6511875B2 (ja) * 2015-03-09 2019-05-15 富士通株式会社 情報処理システム、スイッチ装置及び情報処理システムの制御方法
WO2017002244A1 (ja) * 2015-07-01 2017-01-05 三菱電機株式会社 スレーブ装置及び通信方法及び通信プログラム
US11736405B2 (en) * 2015-08-31 2023-08-22 Comcast Cable Communications, Llc Network packet latency management
US10547559B2 (en) 2015-12-26 2020-01-28 Intel Corporation Application-level network queueing
SG10201600224SA (en) * 2016-01-12 2017-08-30 Huawei Int Pte Ltd Dedicated ssr pipeline stage of router for express traversal (extra) noc
US10142258B2 (en) * 2016-04-08 2018-11-27 Advanced Micro Devices, Inc. Methods and apparatus for processing in a network on chip (NOC)
US10496578B2 (en) * 2017-01-06 2019-12-03 Samsung Electronics Co., Ltd. Central arbitration scheme for a highly efficient interconnection topology in a GPU
US10469386B2 (en) * 2017-05-17 2019-11-05 General Electric Company Network shunt with bypass
JP6873001B2 (ja) * 2017-07-28 2021-05-19 富士通セミコンダクターメモリソリューション株式会社 無線通信機能を備えた半導体記憶装置及び書き込み制御方法
EP3916961A1 (en) 2017-10-26 2021-12-01 Panasonic Intellectual Property Corporation of America Communication system and communication method
US11502934B2 (en) * 2018-08-21 2022-11-15 The George Washington Univesity EZ-pass: an energy performance-efficient power-gating router architecture for scalable on-chip interconnect architecture
US11108704B2 (en) * 2018-12-04 2021-08-31 Nvidia Corp. Use of stashing buffers to improve the efficiency of crossbar switches
US10936511B2 (en) * 2018-12-26 2021-03-02 Intel Corporation Addressable distributed memory in a programmable logic device
US11281830B2 (en) * 2019-03-11 2022-03-22 Intel Corporation Method and apparatus for performing profile guided optimization for first in first out sizing
WO2020236277A1 (en) 2019-05-23 2020-11-26 Cray Inc. System and method for facilitating tracer packets in a data-driven intelligent network
US11398980B2 (en) 2019-11-19 2022-07-26 Advanced Micro Devices, Inc. Packet router with virtual channel hop buffer control
US11455268B2 (en) * 2020-02-13 2022-09-27 Arm Limited Method, system and device for electronic interconnect delay bound determination
JP7338586B2 (ja) * 2020-08-07 2023-09-05 トヨタ自動車株式会社 車載ネットワークシステム
US11296995B2 (en) 2020-08-31 2022-04-05 Micron Technology, Inc. Reduced sized encoding of packet length field
US11418455B2 (en) 2020-08-31 2022-08-16 Micron Technology, Inc. Transparent packet splitting and recombining
US11412075B2 (en) * 2020-08-31 2022-08-09 Micron Technology, Inc. Multiple protocol header processing
US11360920B2 (en) 2020-08-31 2022-06-14 Micron Technology, Inc. Mapping high-speed, point-to-point interface channels to packet virtual channels
US11539623B2 (en) 2020-08-31 2022-12-27 Micron Technology, Inc. Single field for encoding multiple elements
KR20220102160A (ko) * 2021-01-11 2022-07-20 삼성전자주식회사 패킷 전송을 위한 스위치, 그것을 갖는 네트워크 온 칩, 및 그것의 동작 방법
US20220029936A1 (en) * 2021-06-01 2022-01-27 Fujitsu Limited Packet transmission device and packet transmission method
US20230052672A1 (en) * 2021-08-10 2023-02-16 International Business Machines Corporation Queue bypassing interrupt handling
WO2023141770A1 (zh) * 2022-01-25 2023-08-03 华为技术有限公司 中继器的旁路电路及测试方法
US11770215B2 (en) 2022-02-17 2023-09-26 Nvidia Corp. Transceiver system with end-to-end reliability and ordering protocols

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000201158A (ja) * 1999-01-08 2000-07-18 Hitachi Ltd Atm交換機
JP2000269969A (ja) * 1999-03-17 2000-09-29 Matsushita Electric Ind Co Ltd Atm通信の送出帯域保証制御方法およびatm通信装置
JP2007510345A (ja) * 2003-10-31 2007-04-19 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データの欠乏を避けるための集積回路および方法
JP2007228148A (ja) * 2006-02-22 2007-09-06 Furuno Electric Co Ltd パケット通信装置

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6347094B1 (en) * 1998-07-21 2002-02-12 Microsoft Corporation Data rate smoothing
US20050058149A1 (en) * 1998-08-19 2005-03-17 Howe Wayne Richard Time-scheduled and time-reservation packet switching
CA2371026C (en) * 1999-05-11 2007-11-06 British Telecommunications Public Limited Company A node and method for processing high priority transit packets in an optical communications network
JP4294821B2 (ja) * 2000-01-26 2009-07-15 株式会社日立製作所 ネットワーク中継装置
JP2002344509A (ja) 2001-05-17 2002-11-29 Nippon Telegr & Teleph Corp <Ntt> ルータとパケットの読み出しレート制御方法およびその処理プログラム
JP4007942B2 (ja) * 2003-05-28 2007-11-14 日本電信電話株式会社 スケーラブルノード
US7907610B2 (en) * 2005-05-23 2011-03-15 Nxp B.V. Integrated circuit with internal communication network
US7809009B2 (en) 2006-02-21 2010-10-05 Cisco Technology, Inc. Pipelined packet switching and queuing architecture
US7826468B2 (en) 2006-08-04 2010-11-02 Fujitsu Limited System and method for bypassing an output queue structure of a switch
US8121977B2 (en) * 2006-08-30 2012-02-21 Iwmage Systems, Inc. Ensuring data persistence and consistency in enterprise storage backup systems
JP2008294586A (ja) 2007-05-22 2008-12-04 Research Organization Of Information & Systems ルータおよび並列分散システム
US8432913B2 (en) 2008-04-22 2013-04-30 Nec Corporation Relay device, network system, route switching method, and recording medium
JP2010114592A (ja) 2008-11-05 2010-05-20 Toyota Motor Corp データ転送装置、及びデータ転送方法
US8009567B2 (en) 2009-02-05 2011-08-30 Cisco Technology, Inc. System and method for improved data transmission reliability over a network
US8874808B2 (en) * 2010-09-07 2014-10-28 International Business Machines Corporation Hierarchical buffer system enabling precise data delivery through an asynchronous boundary

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000201158A (ja) * 1999-01-08 2000-07-18 Hitachi Ltd Atm交換機
JP2000269969A (ja) * 1999-03-17 2000-09-29 Matsushita Electric Ind Co Ltd Atm通信の送出帯域保証制御方法およびatm通信装置
JP2007510345A (ja) * 2003-10-31 2007-04-19 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データの欠乏を避けるための集積回路および方法
JP2007228148A (ja) * 2006-02-22 2007-09-06 Furuno Electric Co Ltd パケット通信装置

Also Published As

Publication number Publication date
JPWO2012132264A1 (ja) 2014-07-24
WO2012132263A1 (ja) 2012-10-04
WO2012132264A1 (ja) 2012-10-04
CN103238302A (zh) 2013-08-07
US20130194927A1 (en) 2013-08-01
US9294402B2 (en) 2016-03-22
JPWO2012132263A1 (ja) 2014-07-24
CN103283192A (zh) 2013-09-04
US9444740B2 (en) 2016-09-13
CN103238302B (zh) 2016-07-06
US20130142066A1 (en) 2013-06-06
JP5200197B2 (ja) 2013-05-15

Similar Documents

Publication Publication Date Title
JP5320512B2 (ja) 中継器、中継器の制御方法、およびプログラム
JP5036920B1 (ja) 中継装置、中継装置の制御方法、およびプログラム
JP5603481B2 (ja) 中継装置
JP4880802B1 (ja) 中継装置
JP5895202B2 (ja) 中継器、中継器の制御方法、およびコンピュータプログラム
JP5335892B2 (ja) パケット交換オンチップ相互接続ネットワークの高速仮想チャネル
JP5838365B2 (ja) バスシステムおよび中継器
JP5552196B2 (ja) 中継装置、中継装置の制御方法、およびコンピュータプログラム
US9606945B2 (en) Access controller, router, access controlling method, and computer program
JP5834178B2 (ja) 半導体回路のバスシステム
JP2008060700A (ja) バッファ制御装置及びバッファ制御方法
JP2015069345A (ja) 情報処理装置,データ転送装置,およびデータ転送方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130618

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130712

R150 Certificate of patent or registration of utility model

Ref document number: 5320512

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees