JP5603481B2 - 中継装置 - Google Patents

中継装置 Download PDF

Info

Publication number
JP5603481B2
JP5603481B2 JP2013506019A JP2013506019A JP5603481B2 JP 5603481 B2 JP5603481 B2 JP 5603481B2 JP 2013506019 A JP2013506019 A JP 2013506019A JP 2013506019 A JP2013506019 A JP 2013506019A JP 5603481 B2 JP5603481 B2 JP 5603481B2
Authority
JP
Japan
Prior art keywords
packet
transmission
relay device
virtual channel
buffer
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.)
Active
Application number
JP2013506019A
Other languages
English (en)
Other versions
JPWO2013014851A1 (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 JP2013506019A priority Critical patent/JP5603481B2/ja
Application granted granted Critical
Publication of JP5603481B2 publication Critical patent/JP5603481B2/ja
Publication of JPWO2013014851A1 publication Critical patent/JPWO2013014851A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L12/40143Bus networks involving priority mechanisms
    • H04L12/4015Bus networks involving priority mechanisms by scheduling the transmission of messages at the communication node
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9036Common buffer combined with individual queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools

Description

本願は、分散型のバスを備える半導体の集積体回路において、バス間を接続する複数の中継装置間を流れる複数のトラヒックの送信スケジューリングを調整する技術に関する。特に、本願は、複数のバッファに、異なるトラヒックを構成するパケットが分散して格納されている場合において、バッファに格納されたパケットの送信を制御する技術に関する。
図1(A)は、集中型のバス制御の例を示す。集中型のバス制御を行う従来の集積回路では、主に複数のバスマスタとメモリとの間は1つのバスによって接続され、アービタによって各バスマスタからメモリへのアクセスが調停される。しかし、集積回路の高機能化、マルチコア化により、回路の規模が増大し、トラヒックも複雑に変動しながらバスを流れており、集中型のバス制御による集積回路の設計が困難になってきている。
その一方で、近年、並列計算機での接続技術や、ATM(Asynchronous Transfer Mode)網などのネットワーク制御の技術を取り入れた分散型のバスを有する半導体集積回路の開発が進んでいる。図1(B)は、分散型のバス制御の例を示す。分散型のバスを有する半導体集積回路は、複数の中継装置が複数のバスで接続されて構成されている。近年、図1(B)に示すような分散型のバスを用いることにより、大規模化した集積回路内のトラヒックを、複数のバスに分散して伝送するネットワークオンチップ(Network on Chip)の取り組みがある。
図2は、NoC(Network on chip)や並列計算機、ATM網などで利用される中継装置の基本的な構成の概略である。これらの中継装置では、トラヒックデータはパケットやセルの単位に分割されて、宛先のノードまで送信される。中継装置に送られたデータは、一旦バッファに蓄えられる。
また、異なるパケットを入力ポート毎に並行して送信処理するために、入力ポート毎に複数のバッファを並列化した仮想的なチャネル(「バーチャルチャネル」又は「VC:Virtual Channel」とも呼ばれる)を備える。仮想チャネルの実体は中継装置のバッファメモリであるが、入力ポート毎に、かつ、各入力ポートに対して複数のバッファを物理的に実装して良いし、又は、複数のバッファが存在するかのようにバッファメモリ上のデータを管理することにより、仮想的なチャネルを実装することが可能である。
クロスバスイッチは、各入力ポートと出力ポートの排他的な接続を決定するスイッチである。また、クロスバスイッチによる入力ポートと出力ポートの排他的な接続はアービタによって決定される。
このように、中継装置では、アービタにより、クロスバスイッチの接続を切り替えることで、バッファ内に格納されたデータを目的の宛先へと中継する。
次に、中継装置の入力ポートと出力ポートの接続の切替え処理を説明する。中継装置の入力ポートと出力ポートはクロスバスイッチによって、それぞれ排他的に接続される。ここで「排他的な接続」とは、複数の入力ポートと複数の出力ポートとを同時に接続する場合に、1つの出力ポートには、多くても1つの入力ポートだけが接続されている状態と定義する。
次に、NoCの中継装置が伝送するデータのデータ構造を説明する。
図3は、パケット300の伝送フォーマットの一例と、パケット300を複数のフリットに分割した例を示す。
NoCの中継装置では、一般的に並列計算機、ATM網などで利用される中継装置と異なり、送信ノードで生成されたパケットを、さらにフリットと呼ばれる単位に分割して中継する。フリットの大きさは、バスを使って1サイクルで伝送可能なデータサイズとして決定される。
パケット300は、ヘッダフィールド301、データフィールド302、及び制御コードフィールド303を備えている。
ヘッダフィールド301には、例えば、送信先(受信ノード)のアドレス、送信元(送信ノード)のアドレス、パケットが送信されてから受信ノードに届くまでの締切り時刻などの情報(時間情報)が記述される。時間情報の記述方法は任意であるが、そのパケットが送信されてからの経過時間や、宛先に届くまでの締切り時刻などを他のパケットとの間で比較できる値であれば良い。
データフィールド302には、例えば映像データや、音声データが記述される。制御コードフィールド303には、例えば、予め定められたパケット303の終了コードが記述される。
上述のヘッダフィールド301のデータのうち、受信ノードのアドレスと、送信ノードのアドレスとに基づいて、パケット300の中継処理と、受信側での受信処理とが行われる。
送信側のノードは、パケット300を、フリットと呼ばれる小さなデータ単位に分解して伝送する。1フリットは、バスを使って1サイクルで伝送可能なデータであり、そのサイズはバス幅の大きさによって決定される。パケット300を分割したフリットのうち、最初に送信されるフリットは、ヘッダーフリット1104と呼ばれる。ヘッダーフリット304には、パケットの先頭であることを示すフラグ情報、及びパケットの受信ノードのアドレス情報が付与されている。
なお、ヘッダーフリット304に続く各フリットには、受信ノードを特定するアドレス情報は格納されていない。その理由は、ヘッダーフリット304に続くフリットは、ヘッダーフリット304と同じ宛先に送られるためである。ヘッダーフリット304によって宛先が決まり、そのトラヒックのフリットを出力する出力バッファが決まると、後に続くフリットは、ヘッダーフリット304と同じ出力バッファを利用してヘッダーフリット304が示す宛先に伝送される。
また、パケットの最終のフリットはテイルフリット306と呼ばれる。テイルフリット306には、そのフリットがパケットを構成する最後のフリットであることを示すフラグ情報が付与されている。また、ヘッダーフリット304とテイルフリット306以外のフリットは、主にデータを伝送するフリットでありデータフリット305と呼ぶ。
受信側のノードは、制御コードフィールド303に記述された終了コードを検出すると、その終了コードに基づき、伝送された複数のフリットからパケットへ再構築する。
例えば、1パケットのサイズは128バイト、1フリットのサイズは64ビットである。この場合、1パケットは16フリットに分割して送信される。ただし、1パケットのサイズ、及び1フリットのサイズはアプリケーションやバス幅によって異なり得るため、上述のサイズは一例に過ぎないことに留意されたい。フリットの長さは、受信ノードのアドレスと、送信ノードのアドレスなど、制御データを記述できる長さを基準としてもよい。
図4(A)は、NoCにおいて、各中継装置が受信したパケットを隣接する中継装置又は受信ノードへと送信する際の中継装置の一連の処理動作を説明するフローチャートである。
また、図4(B)は、図4(A)のフリットの送信に関連する中継装置の仮想チャネルの構成を示した図である。図4(B)に示す例では、各中継装置は入力ポート、出力ポートをそれぞれ2つ備え、さらに入力ポート毎にフリットを格納するための仮想チャネル(VC)を2つずつ備えている。
入力ポート内の仮想チャネルおよび出力ポートは、クロスバスイッチ(SW)の接続を切り替えることで接続され、仮想チャネル内のフリットを、出力ポートを介して送信する。なお、図4(B)には、図を簡略化するために入力ポート0の仮想チャネル(VC1、VC2)のみが記載されており、入力ポート1内の仮想チャネルの記載は省略されている。
図4(C)は、中継装置でパケットが受信されてから、次の中継装置、又は受信ノードへ送信されるまでの、各フリットの状態変化を1サイクル毎に示す。
NoCにおける中継装置では、フリットに分割されたパケットを目的の宛先まで中継するために、受信したフリットに対してルーティング(RC:Routing Computation)、仮想チャネル割当(VA:Virtual channel Allocation)、スイッチ割当 (SA:Switch Allcation)、フリット送信(ST:Switch Traversal)の処理のすべて、または一部を実行する(例えば非特許文献1)。
まず、図4(A)のフローチャートと図4(B)の中継装置の構成図を用いて、NoCにおける中継装置の基本動作を説明する。図4(B)に示すように、上流側の中継装置を「中継装置A」とし、下流側の中継装置を「中継装置B」として説明する。
図4(A)のステップ401において、中継装置Aは、フリットが存在している仮想チャネル(VC)が存在するかどうかを判定する。フリットが存在している仮想チャネル(VC)が存在していれば、中継装置Aの処理はステップ402に移る。フリットが存在する仮想チャネル(VC)がなければ、フリットが存在すると判定されるまで、ステップ401の処理を繰り返す。
仮想チャネル(VC)にフリットが存在する場合は、ステップ402において中継装置Aは、仮想チャネル(VC)の先頭のフリットがヘッダーフリットであるかどうかを判定する。仮想チャネル(VC)の先頭フリットがヘッダーフリットである場合には、中継装置Aの処理は、ステップ403に移る。仮想チャネル(VC)の先頭フリットがヘッダーフリットではない場合、中継装置Aの処理は、ステップ405に移る。
図4(B)の中継装置Aの例では、仮想チャネルの1つにヘッダーフリットが格納されているため、中継装置Aの処理は、ステップ403に移る。
仮想チャネルの先頭フリットがヘッダーフリットであった場合、ステップ403において、中継装置Aはヘッダーフリットに記載されている宛先情報を参照し、ルーティング処理を実行する(RC:Routing Computation)。ルーティング処理では、中継装置Aから、パケットの宛先へ続く出力ポートを1つ選択する。
図4(B)の中継装置Aでは、ルーティング処理によって、「宛先」へ続く中継装置Bと接続している出力ポート0が選択される。
ルーティング処理により出力ポートが選択されると、処理はステップ404に移り、中継装置Aが送信したパケットを、隣接する中継装置Bのどの仮想チャネルに格納するかを選択する。
NoCにおいては、パケットはフリットに分割されて中継される。また、中継のための制御に必要な基本情報はヘッダーフリットのみに記載されているため、異なるパケットのフリットが、1つの仮想チャネルに混在してしまうと、正しくフリットを宛先に届かない場合や、宛先において届いたフリットを正しく元のパケットに戻せない場合が発生する。
これを回避するために、NoCの中継装置では、パケット毎にヘッダーフリットからテイルフリットまでが通過する期間、1つの仮想チャネルを占有し、他のパケットのフリットが、占有した仮想チャネルを利用できなくする。
例えば、図4(B)の中継装置Aは、ヘッダーフリットを格納している仮想チャネルVC1に対し、フリットが送信される中継装置Bで未使用の仮想チャネルを1つ割り当てる(VA:Virtual channel Allocation)。
仮想チャネルの割り当て(VA)が完了すると、中継装置Aの処理は、ステップ405に移る。
一方、隣接する中継装置Bに未使用の仮想チャネルがない場合、中継装置Aは、中継装置Bの仮想チャネルに空きができ、仮想チャネル割り当て(VA)が完了するまで、ステップ404の状態を維持する。
図4(B)では、中継装置Aは、ヘッダーフリットを格納している仮想チャネルVC1に対し、中継装置Bにおいて格納するバッファとして仮想チャネルVC1を選択して割り当てる。
出力ポートの決定(RC)と、隣接する中継装置でフリットを格納する仮想チャネルの割り当て(VA)が完了すると、中継装置Aの処理はステップ405に移り、格納しているフリットの送信待ち状態となる。
ステップ405において、中継装置Aは、仮想チャネルからフリットを送信するために、クロスバスイッチを切り替えて、中継装置Aの仮想チャネルVC1をその出力ポートに割り当てる(SA:Switch Allocation)。
出力ポートの数に対して、その出力ポートへの送信を要求している仮想チャネルが複数ある場合には、フリットの送信を許可する仮想チャネルを出力ポート毎に決定するSW割当て(SA:Switch Allocation)を実行する。
なおNoCの中継装置は、このSW割当において、パケットの種類(遅延保証型、ベストエフォート型など)や優先度、送信時刻、到着締切り時刻などの情報に基づいて、パケット格納している仮想チャネルから出力ポートへ接続の割当量を調整してもよい。これにより、異なる送信ノードからのパケットの送信スケジューリングを調整が可能となる。
ステップ405のSW割当(SA)によって、フリットの送信待ち状態にある仮想チャネルに対して出力ポートが割り当てられて両者が接続されると、中継装置Aの処理は、ステップ406に移り、接続された仮想チャネル内のフリットを、選択された出力ポートから送信する。(ST:Switch Traversal)。
以上のように、中継装置は、仮想チャネル毎に、ステップ401からステップ406まで処理を行うことで、届いたフリットを宛先へと送信する。
次に、図4(B)の中継装置Aが1個のパケットを中継する際の動作を、図4(C)を用いて説明する。パケットサイズが4フリットの場合を例に、各時刻でのフリットの処理内容を説明する。
時刻1において、まずヘッダーフリットが中継装置Aに到着すると、中継装置Aは、ヘッダーフリットに付与された宛先情報を基に、ルーティング処理(RC)を実行して、次に送信する出力ポートを選択する。
時刻2において、中継装置Aは、VC割当て(VA)を実行し、ヘッダーフリットが格納された仮想チャネルを、ルーティング処理(RC)で決定された出力ポートの先に接続されている中継装置Bのどの仮想チャネルに割り当てるかを決定する。
また、時刻2ではデータフリット1が中継装置Aに到着する。仮想チャネルの先頭にはヘッダーフリットが存在しているため、データフリット1に対して処理は実行しない。
時刻3において、中継装置AはSW割当て(SW)を実行し、ヘッダーフリットを先頭に格納している仮想チャネルに対し、出力ポートの割当を決定する。
また、時刻3ではデータフリット2が中継装置Aに到着する。仮想チャネルの先頭にはヘッダーフリットが存在しているため、データフリット1とデータフリット2に対して、処理は実行しない。
時刻4において、中継装置Aはヘッダーフリットを送信する(ST)。また、ヘッダーフリットが送信された後も、同じ仮想チャネルと出力チャネルとを引き続き接続するためのSW割当て(SW)を継続する。
また、時刻4では、テイルフリットが中継装置Aに到着する。仮想チャネルの先頭にはデータフリット1が存在するため、データフリット2とテイルフリットに対しては、処理を実行しない。
時刻5において、中継装置Aはデータフリット1を送信する(ST)。また、データフリット1が送信された後も、同じ仮想チャネルと出力チャネルとを引き続き接続するためのSW割当て(SW)を継続する。仮想チャネルの先頭にはデータフリット1が存在するため、データフリット2とテイルフリットに対しては、処理を実行しない。
時刻6において、中継装置Aはデータフリット2を送信する(ST)。また、データフリット2が送信された後も、同じ仮想チャネルと出力チャネルとを引き続き接続するためのSW割当て(SW)を継続する。
時刻7において、中継装置Aはテイルフリットを送信する(ST)。これにより1個のパケットの中継が完了する。
図4(C)に示す1個のパケットの中継に関する一連の処理は、その各々が1サイクルで完了できる例である。しかしながら、たとえばVC割当て(VA)において、出力先の中継装置Bに仮想チャネルの空がない場合には、空きができるまでVC割当て(VA)を完了することができず、後続のフリットも含め、中継処理に待ち状態が発生する。
また、SW割当て(SA)に関しても、複数の仮想チャネルが、同じ出力ポートに対して送信要求を出す場合には、各仮想チャネルに対し、要求された出力ポートを割り当てるための送信スケジューリングにより送信待ちが発生する。
一般的に並列計算機やATMにおける中継装置では、NoCの中継装置に比べて、パケットのサイズに対し送信バッファ(仮想チャネル)を比較的多く確保することができるため、仮想チャネルの不足によるC割当(VA)での遅延発生の影響は小さい。その一方で送信バッファ(仮想チャネル)内の各フリットをいかに効率よく送信するか、その送信スケジューリングの最適化に重点が置かれる。このため、並列計算機やATMの中継装置では、送信バッファ(仮想チャネル)と出力ポートの最適な組み合わせを探索する“Wavefront allocator”や、中継装置の入力ポート側と出力ポート側で、それぞれ最適な組合せを繰り返し求める“Parallel Iterative Matching”などの方法が用いられている(例えば、非特許文献1)。
また、複数の仮想チャネルが同じ出力ポートへの接続を要求する場合も考えられる。このような例に関してはAge−Based方式が提案されている(例えば特許文献1)。Age−Based方式では、パケットが送信された順番を維持し、また、パケット間での遅延時間の増加やバラツキを抑制するために、送信からの経過時間の長さや中継したホップ数に基づいて”Age”と呼ばれる値を定義する。そして、Ageが最も大きい(または小さい)パケットを、先に送信する。
米国特許第6674720号明細書
W. DALLY, B. TOWLES, "PRINCIPLES AND PRACTICES OF INTERCONNETION NETOWRKS", MORGAN KAUFMANN PUBLISHERS
これに対し、NoCでは集積回路上に複数の中継装置を構成する必要があるため、並列計算機やATM網の中継装置に比べて、各中継装置上で構成できる仮想チャネルの数やサイズを多く設けることができない。例えば1個の仮想チャネルのサイズは1個のパケットと同じ程度である。
このため、NoCでは、より短い遅延時間内に、異なる送信ノードから送信されたパケットに対して、SW割当てにおいて送信スケジューリングが適切に行えるように、限られた仮想チャネルを効率的に割り当てること(VA)が重要になる。
本願の、限定的ではない例示的なある実施形態は、特定の送信ノードから送信されたパケットの伝送性能(スループットや遅延時間)の低下を抑制し、NoC全体の伝送性能を向上させる中継装置を提供する。
本発明の一態様は、パケット交換方式の分散型バスを備える集積回路において、ノード間で伝送されるパケットを中継する中継装置であって、送信ノードを特定する情報が付加されたパケットを格納する複数のバッファと、パケットを格納した前記複数のバッファを、前記パケットの送信ノードに基づいて複数のグループに分類する分類部と、各グループに属するバッファを少なくとも1つ選択する選択部と、選択された前記バッファに格納されたパケットを順次出力する出力ポートとを備えた、中継装置を含む。
本発明の一態様にかかる中継装置によれば、中継装置内の仮想チャネルのサイズや数を増やすことなく、複数のパケットに対して、送信ノードを区別して隣接する中継装置で利用する仮想チャネルを均一に割当て、同じ送信ノードからのパケットによる占有を回避する。これにより、中継装置において、送信ノードの異なるパケットに対し、送信スケジューリングの維持が可能となり、NoCにおける伝送性能(高スループット、低遅延)の低下を改善できる。
(A)は、集中型のバス制御の例を示す図であり、(B)は、分散型のバス制御の例を示す図である。 中継装置の基本的な構成の概略図である。 パケット300の伝送フォーマットの一例と、パケット300を複数のフリットに分割した例を示す図である。 (A)は、NoCにおいて、各中継装置が受信したパケットを隣接する中継装置又は受信ノードへと送信する際の中継装置の一連の処理動作を説明するフローチャートであり、(B)は、(A)のフリットの送信に関連する中継装置の仮想チャネルの構成を示す図である。(C)は、(B)の中継装置Aが1個のパケットを中継する際の動作を示す図である。 本願発明者らが考察した問題点の一例を説明する図である。 例示的な実施形態1による中継装置の動作の概要を説明する図である。 例示的な実施形態1において想定する分散型のバスの構成図である。 例示的な実施形態1にかかる中継装置1201の構成図である。 仮想チャネル情報管理部805で管理され保持される仮想チャネル情報901の一例を示す図である。 中継装置801の動作手順を示すフローチャートである。 (A)は中継装置801内の、仮想チャネル813の様子を示す図であり、(B)は、中継装置801の入力ポート0において、まだフリットを受信していない状態の時の、仮想チャネル情報901を示す図である。 (A)は、入力ポート0に届いたヘッダーフリット304が仮想チャネル0に格納された様子を示す図であり、(B)は、ヘッダーフリット304に付与された送信ノードおよび宛先のアドレス、送信時刻情報が反映された後の仮想チャネル情報901の内容を示す図である。 (A)は、ヘッダーフリットに続いて、データフリットが仮想チャネル0に格納された様子を示す図であり、(B)は、中継装置801の仮想チャネル815の出力ポート814が選択された後の仮想チャネル情報901を示す図である。 (A)は、仮想チャネル0にヘッダーフリット304、データフリット305に続き、テイルフリット306が格納された様子を示す図であり、(B)は中継装置801出力チャネル815が決定された後の仮想チャネル情報901を示す図である。 (A)は、図14(A)から1サイクル時間が進んだ中継装置801の仮想チャネル815の様子を示す図であり、(B)は、ヘッダーフリットからデータフリットまでが送信されている状態における仮想チャネル情報901の様子を示す図である。 (A)は、テイルフリットが中継装置803から送信された時の、各仮想チャネル813の様子を示す図であり、(B)は、テイルフリット1106が送信された後の仮想チャネル情報901を示す図である。 図10のステップ1007において、出力チャネル選択部809が、仮想チャネル813に対して出力チャネル815の出力チャネルを割り当てる仮想チャネル割当処理を示すフローチャートである。 (A)は、中継装置801に複数のパケットが同時に届いた場合の仮想チャネル813の様子を示す図であり、(B)は、仮想チャネル813が図18(A)の状態にある場合の仮想チャネル情報901の内容を示す図である。 中継装置801の仮想チャネル813の内容が図18(B)の場合における、送信ノード分類部807が仮想チャネルを分類した結果の例を示す図である。 (A)および(B)は、図10のステップ1008において、仮想チャネル選択部810とスイッチ切替部811が、出力ポートと出力チャネルが選択された仮想チャネル813に対して出力ポートへの接続し、フリットの送信タイミングを割り当てるスイッチ割当処理を説明する図である。 時間情報、及び時間情報に基づく優先度の比較基準の例を示す図である。 (A)および(B)は、中継装置R9からみた種々の宛先の定義、及び各定義に該当し得る宛先の具体例を示す図である。 (A)および(B)は、複数の送受信ノードを1つのグループとして扱う際のグループ分けされたメッシュ型NoCの例を示す図である。 同じローカルバスに属する複数のバスマスタを1つのグループとして扱う例を示す図である。 例示的な実施形態2における中継装置の動作を説明する図である。 例示的な実施形態2における中継装置の構成を説明する図である。 例示的な実施形態2における中継装置の動作を説明するフローチャートである。 NoC上の中継装置801において、パケットの流れの混み具合を示す指標の一例を説明する図である。 出力チャネル割当量決定部2402の動作の一例を説明する図である。 (A)はメッシュ型トポロジーの構成例を示す図であり、(B)はトーラス型トポロジーの構成例を示す図であり、(C)は階層型トポロジーの構成例を示す図である。 本発明の一態様にかかる中継装置をメモリバスに利用した例を説明する図である。 本発明の一態様にかかる中継装置をマルチコアプロセッサ(multi−core processor)上で利用した例を説明する図である。
以下、本願発明者らが考察した問題点を説明する。その後、添付の図面を参照しながら、本発明の例示的な実施形態にかかる中継装置を説明する。
図5は、本願発明者らが考察した問題点の一例を説明する図である。
図5は、マスタAとマスタBとは、NoC上の中継装置Aと中継装置Bを介して共通のメモリに接続され、マスタAとマスタBがそれぞれそのメモリ対してパケットを送信した様子を示している。
中継装置Aと中継装置Bは、それぞれ入力ポートおよび出力ポートを2つずつ備え、各入力ポートは4個の仮想チャネル(VC)を備えるとする。
中継装置A内の8個の仮想チャネルから、中継装置Bにパケットを送信する場合、中継装置Aが利用できる中継装置Bの仮想チャネルの数は4つである。よって、中継装置Aの8個の仮想チャネルが同時に中継装置Bの仮想チャネルを確保することができない。このため、パケットの送信ノードを区別せず、パケットが中継装置Aに届いた順序や宛先のノードに届くまでの締切時刻の順序、パケットに付与された優先度の順番などに基づいて、隣接する中継装置の仮想チャネルを選択する。その結果、同じ送信ノードから出力されたパケットが、中継装置B内の仮想チャネルをすべて占有する状況が発生する。
例えば、図5に示すように、中継装置Aの仮想チャネルのうち、マスタAのパケットを格納する仮想チャネルのみに対して中継措置Bの仮想チャネルを割り当てると、中継装置Bの仮想チャネルが不足する。中継装置Aは、マスタBからのパケットを送信できず、異なる送信ノードであるマスタAとマスタBのパケットに対し、スイッチ割当て(SA)による送信スケジューリングが行えない。その結果、各送信ノードに対して適切な伝送性能を維持した伝送が困難となる。
このため、中継装置において、SW割当て(SA)によるスケジューリングを適切に行うためには、送信ノードが異なるパケット毎に1つ以上の仮想チャネル(VC)を割り当てる必要がある。
並列計算機やATMが利用される一般的なネットワークの通信はベストエフォート型通信であり、遅延が許容される。また、送信バッファ(仮想チャネル)のサイズに対する制約も、半導体の場合と比べて小さい。同じ宛先に向かうパケットが連続して送信されても、中継装置内の仮想チャネルが同じ送信ノードから送信されたパケットによって、すべて占有される状況が発生しにくい。また、同じ送信ノードから受信されたパケットで中継装置の仮想チャネルが占有されたとしても、占有状態が続く時間に比べ、並列計算やATMで許容できるパケットの遅延時間が長いため伝送性能への影響は少ない。
一方、NoCにおける通信の多くはリアルタイム性が必要とされることが多く、遅延が許されないなど、遅延に関する制約は大きい。そして、半導体回路上に中継装置を実装するため、仮想チャネルの数やサイズに対する制約が大きく、中継装置内の仮想チャネルの不足が発生しやすい。その結果、不足した仮想チャネルが開放されるまでの遅延時間が伝送性能に対し大きく影響する。
本願発明者らは、上述の問題点に関し、本願発明をなすに至った。
本発明の一態様の概要は以下のとおりである。
本発明の一態様である中継装置は、パケット交換方式の分散型バスを備える集積回路において、ノード間で伝送されるパケットを中継する中継装置であって、送信ノードを特定する情報が付加されたパケットを格納する複数のバッファと、パケットを格納した前記複数のバッファを、前記パケットの送信ノードに基づいて複数のグループに分類する分類部と、各グループに属するバッファを少なくとも1つ選択する選択部と、選択された前記バッファに格納されたパケットを順次出力する出力ポートとを備えている。
ある態様において、前記パケットには、時間情報が付加されており、分類されたグループにバッファが2以上属しているときは、前記選択部は、各バッファに格納された前記パケットの時間情報に基づいて、2以上のバッファのうちの1つを、優先順位が最も高いバッファとして選択し、分類されたグループにバッファが1つのみ属しているときは、前記選択部は、前記バッファを優先順位が最も高いバッファとして選択する。
ある態様において、前記出力ポートは、各グループの前記優先順位が最も高いバッファに格納された各パケットを、各パケットの時間情報に基づいて定められる順序で出力する。
ある態様において、前記時間情報は、パケットが送信先のノードに届くべき締切時刻であり、前記出力ポートは、各グループの前記優先順位が最も高いバッファに格納された各パケットを、前記締切時刻の近い順に出力する。
ある態様において、前記時間情報は、パケットが送信元のノードから送信された送信時刻であり、前記出力ポートは、各グループの前記優先順位が最も高いバッファに格納された各パケットを、前記送信時刻が古い順に出力する。
ある態様において、前記中継装置は、送信ノードごとに、パケットの流れの混み具合の程度を示す指標を測定する測定部であって、前記混み具合が大きいほど、大きい指標を測定する測定部と、前記指標が大きい送信ノードほど、前記出力ポートからより多くのパケットが出力されるよう、出力量を決定する決定部とをさらに備えている。
ある態様において、前記測定部は、前記分類部によって分類されたバッファの数を、前記パケットの流れの混み具合を示す指標として測定する。
ある態様において、前記測定部は、パケットが自中継装置に到着してから、出ていくまでの通過時間を、前記パケットの流れの混み具合を示す指標として測定する。
ある態様において、前記測定部は、バスの利用帯域を、前記パケットの流れの混み具合を示す指標として測定する。
ある態様において、前記送信ノードは、1つのバスマスタ、または複数のバスマスタの集合体であり、前記分類部は、前記1つのバスマスタ、前記複数のバスマスタの集合体、または、前記パケットが伝送経路上で通過した1つまたは複数の中継装置に基づいて、前記複数のバッファを前記複数のグループに分類する。
ある態様において、前記分類部は、前記パケットが伝送経路上で通過した中継装置に応じて、パケットを格納した前記複数のバッファを、複数のグループに分類する。
ある態様において、送信ノードは複数存在し、かつ、各送信ノードは予め複数のグループのいずれかに属するよう分類されており、前記分類部は、前記パケットを送信した送信ノードが所属するグループに応じて、パケットを格納した前記複数のバッファを複数のグループに分類する。
(実施形態1)
図6は、本実施形態による中継装置の動作の概要を説明する図である。マスタAとマスタBとは、NoC上の中継装置Aと中継装置Bを介して共通のメモリに接続されている。マスタAとマスタBがそれぞれそのメモリ対してパケットを送信した様子を示している。
中継装置Aと中継装置Bは、それぞれ入力ポートと出力ポートを2つずつ備え、各入力ポートには4つずつ仮想チャネル(VC)を備えている。
本実施形態にかかる中継装置は、仮想チャネルの割当て(VA)を行う際に、割当て済みの仮想チャネルで送信されるパケットの送信ノードを参照する。そして、複数の送信ノードからパケット(フリット)を受信している場合には、各送信ノードから送信されたパケット(フリット)が格納された仮想チャネルに対し、隣接する中継装置の少なくとも1つの仮想チャネルを割り当てる(VA)。換言すると、ある送信ノードから送信されたパケットが、隣接する中継装置の仮想チャネルを占有しないよう、そして、全ての送信ノードのパケットが送信スケジューリングを維持できるよう、各送信元に対し、中継装置の仮想チャネルを1つ以上割り当てる(VA)。
例えば図6では、本発明の一態様にかかる中継装置Aは、中継装置Bにおいて仮想チャネルを割り当てられたパケットの送信ノードをそれぞれ特定し、マスタAとマスタBとから送信された各パケットを格納した仮想チャネルに対して、割り当てられる中継装置Bの仮想チャネルの数が同じになるよう、仮想チャネルの割当てを行う。中継装置Aが、マスタAとマスタBからのパケットを格納した仮想チャネルに対して中継装置Bの仮想チャネルを1つ以上割り当てる。これにより、クロスバスイッチの切替え(SA)による送信スケジューリングが可能となり、マスタ毎の要求に合わせた帯域制御を維持することが可能なる。
図7は、本実施形態において想定する分散型のバスの構成図である。
本実施形態では、送信ノードとしての複数のバスマスタ(BM)と、受信ノードとしての複数のメモリ(M)とを、複数の中継装置(R)を介して接続した構成(多段接続網、MIN:Multistage Interconnection Network)を例に説明する。各中継装置は、2入力2出力であるとする。
図7では、8個のバスマスタ(BM0〜BM7)と、12個の中継装置(R0〜R11)と、8個のメモリ(M0〜7)とがバスで接続される回路の様子を示している。図7の最も左に示された3桁の数字は、バスマスタ(送信ノード)のアドレスを示す。また、図7の最も右に示された3桁の数字は、メモリ(宛先ノード)のアドレスを示す。
12個の中継装置は、4個ずつ3つのグループに分類されている。3つのグループは、8個のバスマスタに接続されるグループ(R0、R1、R2、R3)、8個のメモリに接続されるグループ(R8、R9、R10、R11)、及びバスマスタ、又はメモリに接続する中継装置を結ぶグループ(R4、R5、R6、R7)である。
多段接続網を構成する各中継装置は、2入力2出力のクロスバスイッチを備えている。各中継装置では、クロスバスイッチを切替え、入力ポートと出力ポートの接続の組合せを変更することで、パケットの伝送経路を変更できる。なお、1つの中継装置から出力ポートが異なる伝送経路に対しては、フリットを同時に送信できる。
多段接続網では、各中継装置でのスイッチの切替えによって、全バスマスタと全メモリ間で、必ず1つ以上の伝送経路を構築することができる。
一般的に、クロスバスイッチによって、N個のバスマスタとM個のメモリのすべてを接続するためには、スイッチがN×M個の必要となる。そしてバスマスタやメモリの数が増えるにつれて、スイッチの数は急激に増加してしまう。これに対し、多段接続網(MIN)では、入出力ポートの数が少ないクロスバスイッチを階層的に接続することで小さなスイッチのみでバスマスタとメモリ間の接続を切り替えることができるという特徴がある。
なお、本実施形態においては多段接続網を例に挙げて説明するが、これは一例である。集積回路の構成がその他のトポロジーであっても上述した技術を適用することが可能である。また、本実施形態では、バスマスタからメモリへのデータ転送は、パケット交換方式により複数の中継装置を介して行われるとして説明する。
また各中継装置に、送られてきたフリットは、スイッチの切替えによって目的の経路へと続く中継装置や、宛先のノードへ送信される。
なお図7では、バスマスタからメモリにフリットが送信される例を想定しているが、これは一例である。フリットの宛先はメモリには限られない。フリットの宛先は、例えば、他のバスマスタであってもよいし、周辺機器と接続するための入出力インターフェイスであってもよい。
図8は、本実施形態にかかる中継装置1201の構成図である。
中継装置801は、入力バッファ802と、スイッチ803と、出力バッファ804と、仮想チャネル情報管理部805と、出力ポート選択部806と、送信ノード分類部807と、時間情報比較部808と、出力チャネル選択部809と、仮想チャネル選択部810と、スイッチ切替部811とを有している。
以下、各構成要素の機能を説明する。
入力ポート812は、隣接する中継装置、又は送信ノード(たとえば図7のBM0〜BM7)から送られてきたフリットを受信する。
入力バッファ802は、入力ポート側で隣接する中継装置801a(又は送信ノード)から送られてきたフリットを蓄えるバッファである。
入力バッファ802を構成する一時バッファは、中継装置801の入力ごとに1つ設けられていてもよいし、又は異なるパケット毎に個別のチャネルを利用して送信スケジュール制御ができるように、入力ごとに複数の仮想チャネル813が設けられていてもよい。本実施形態では、図8に示すように入力バッファ812毎に4個ずつ仮想チャネル813を備えているとする。
クロスバスイッチ803は、中継装置801の入力ポート812と出力ポート814の排他的な接続を切り替えるスイッチである。
出力バッファ804は、後述する出力ポート814の先に接続された中継装置群801bへ、フリットを送信する際に利用される一時バッファである。
出力バッファ804には、さらに複数の出力チャネル815が設けられている。出力チャネル815は、出力ポート814の先に接続された中継装置801bの入力バッファ内の仮想チャネルと同じ数だけ設けられており、隣接の中継装置群801bの仮想チャネルと1対1の対応関係が決められている。
出力ポート814は中継装置801から、隣接する中継装置801b、又は受信ノードへフリットを送信する。
中継装置801から送信されるフリットは、送信に利用した出力チャネルに対応する出力ポート814の先に接続された中継装置801bの仮想チャネルに蓄えられる。すなわち、中継装置801は、フリットの送信に利用する出力チャネル815を選択することで、出力ポート先814の中継装置801bにおいて送信したフリットを格納する仮想チャネルの指定ができる。
仮想チャネル情報管理部805は、各仮想チャネル813に格納されるフリットに関する情報を管理する。仮想チャネル情報管理部805が管理している情報の内容の詳細は、後に図9を用いて説明する。
出力ポート選択部806は、入力バッファ814に新しいヘッダーフリットが送られてくると、ヘッダーフリットに記述された宛先情報を基に、次に受け渡す中継装置801bへと続く出力ポートを選択する。
送信ノード分類部807は、各仮想チャネル内に格納されているパケットの送信ノードの違いによって、仮想チャネルのグループ分けを行う。
時間情報比較部808は、各仮想チャネル813に格納されたパケットに付与された時間情報に基づく優先度を比較し、優先度の高い順に仮想チャネルに仮想チャネルの割当ての順番をつける。
本実施形態では、パケットに付与される時間情報は、パケットが宛先ノードに到着する締切時刻であるとする。また時間情報に基づく優先度は、パケットが宛先ノードに到着するまでの締切り時間が一番短いパケットほど優先度が高いとする。
出力チャネル選択部809は、各仮想チャネル813内に格納されているフリットのうち、送信ノード分類部807による送信ノード毎の分類結果と、さらに時間情報比較部808によるパケットの締切時刻の比較結果を基に、出力バッファ804における未割当の出力チャネル815を選択する。
仮想チャネル選択部810は、入力ポート812毎に複数の仮想チャネル813の中から、フリットを送信する仮想チャネル813の候補を1つ選択する。
スイッチ切替部811は、クロスバスイッチ803の接続を切り替えることによって、仮想チャネル選択部810で選択された仮想チャネルと各出力ポート814の間での排他的な接続を決定し、クロスバスイッチ803の接続を切り替える。
なお、本願明細書では中継装置801が受信したフリットを仮想チャネルに格納する処理に関与する入力ポート812、入力バッファ802、仮想チャネル813の集まりをまとめて入力部と定義する。また、仮想チャネルに格納されているフリットを中継装置801から出力する処理に関与するクロスバスイッチ803、仮想チャネル選択部810、スイッチ切替部811、出力バッファ804、出力チャネル815、出力ポート814の集まりをまとめて、出力部と定義する。
図9は、仮想チャネル情報管理部805で管理され保持される仮想チャネル情報901の一例である。
仮想チャネル情報901は、各仮想チャネルを区別するために、入力ポートと仮想チャネルの識別番号が割り当てられており、さらに、仮想チャネルにパケットが格納されると、パケットの送信ノードを特定するためのアドレス情報、パケットの宛先を特定するためのアドレス情報、パケットが宛先に届くまでの締切時間など、パケットの送信スケジューリングにおいて利用される時間情報、パケットを宛先へ届けるための出力ポートの番号、出力チャネルの番号が管理される。なお、時間情報は締切時間でなくてもよく、例えば、パケットの送信時刻であってもよい。
また、出力チャネル番号は、出力ポートから送信したパケットを格納する、受信ノードである中継装置の仮想チャネルの番号に対応している。
本実施形態では、出力ポート814に出力チャネル815を備えた中継装置801の例を説明するが、出力チャネル815を備えない中継装置では、仮想チャネル情報901の出力チャネル番号として、隣接する中継装置801bにおいて利用する仮想チャネルの番号が記録される。
次に、各中継装置801の動作と仮想チャネル情報901の関係を、図10のフローチャートと図11から図18とを用いて説明する。なお、図11から図18において、図8、図9と同じ構成には、同じ番号を付与し説明を省略する。
NoCの回路が起動すると中継装置801は、入力ポート812を介して隣接する中継装置801a、又は送信ノードからのフリットの受信待ち状態となる。これにより図10に示す処理が開始される。
図11(A)は中継装置801内の、仮想チャネル813の様子を示している。また、図11(B)は、中継装置801の入力ポート0において、まだフリットを受信していない状態の時の、仮想チャネル情報901を示している。
以下、本明細書では入力ポート0に関する仮想チャネル情報901のみを例示する。
図11では、まだフリットが届いていないため、仮想チャネルは未使用状態となる。
図10のステップ1001において、中継装置801の入力ポート812は、フリットを受信したかどうかを判断する。
フリットを受信した場合には処理はステップ1002に進み、フリットを受信していない場合には処理はステップ1003に進む。フリットを受信した場合には処理はステップ1002に進み、フリットを受信していない場合には処理はステップ1003に進む。
ステップ1002において、入力ポート812は、仮想チャネル813に受信したフリットを格納する。なおフリットが格納される仮想チャネル813は、隣接する中継装置801aや送信ノードによって予め決定されている。
ステップ1003において、入力バッファ802は、各仮想チャネル813内にフリットが存在するか否かを判断する。フリットが存在する場合には、処理はステップ1004に進み、フリットが存在しない場合には、処理はステップ1001に戻る。
ステップ1004において、中継装置801の仮想チャネル813は、仮想チャネル813の先頭に格納されたフリットが、ヘッダーフリット304であるかどうかを判定する。仮想チャネル813の先頭フリットがヘッダーフリットである場合は処理はステップ1005に進み、ヘッダーフリットでない場合は処理はステップ1008へ進む。
図12(A)は、図11(A)から1サイクル時間が進み、入力ポート0に届いたヘッダーフリット304が仮想チャネル0に格納された様子を示している。
ヘッダーフリット304が仮想チャネル813に届くと、仮想チャネル情報管理部805は、図10のステップ1005において、中継装置801での送信スケジューリングにおいてパケットの送信順序の決定に利用される情報を仮想チャネル情報901に記録する。パケットの送信順序の決定に利用される情報とは、たとえば、ヘッダーフリット304に記載されている送信ノード送信元と受信ノード宛先のノードのそれぞれのアドレス、パケット全体が宛先のノードに届くまでの締切時刻である。
また、図12(B)は、ヘッダーフリット304に付与された送信ノードおよび宛先のアドレス、送信時刻情報が反映された後の仮想チャネル情報901の内容を示す。ここでは、パケットの送信ノードとしてBM2のアドレス010(図7)と、宛先としてメモリ5のアドレス101(図7)と、パケットが宛先ノードに届くまでの締切時刻90(サイクル)とが仮想チャネル情報901に記録される。
図13(A)は、図12(A)からさらに1サイクル時間が進み、ヘッダーフリットに続いて、データフリットが仮想チャネル0に格納された様子を示す。
中継装置801の出力ポート選択部806は、図10のステップ1006において、ステップ1005で更新された仮想チャネル情報901を参照してパケットの宛先を特定し、パケットを宛先へ送信するための出力ポート814を選択する。
ここで、図7に示した多段接続網を用いて、出力ポート814を選択する方法の一例を説明する。図7に示す多段接続網では、各メモリには、3桁の2進数でアドレスが割り当てられ、各パケットのヘッダーフリットには、宛先となるメモリのアドレスが、3桁の2進数で付与されている。
実施形態1の出力ポート選択部806は、ヘッダーフリットに付与された3桁のアドレスのうち、左から中継装置の段数と同じ桁の数字を読み取る。そしてその値が0ならば図12において出力ポート0を選択し、値が1ならば図12で出力ポート1を選択する。
例えばバスマスタBM2(アドレス:010)から、メモリ5(アドレス:101)へデータを送る場合を考える。メモリ5のアドレスに記載された3桁の数字に従って、まず中継装置R1は右下の中継装置R7へフリットを送信する。次に中継装置R7は右上の中継装置R10にフリットを送信する。最後に中継装置R10は右下のメモリ5へフリットを送信する。これにより、バスマスタBM5からメモリ2へとフリットが伝送される。
なお、出力ポート選択部806で出力ポートの選択方法としては、分散バスのトポロジーに応じて、適切に目的地までフリットが送られる方法であれば、上記以外の方法であってもよい。
図13(B)は、中継装置801の仮想チャネル815の出力ポート814が選択された後の仮想チャネル情報901を示している。出力ポート0が選択されていることが理解される。これにより、中継装置801は仮想チャネル0の内のパケットを、宛先であるメモリ5へと向う出力ポート0へ送信することが可能になる。
図14(A)は、図13(A)から1サイクル時間が進み、仮想チャネル0にヘッダーフリット304、データフリット305に続き、テイルフリット306が格納された様子を示している。
中継装置801は、図10のステップ1007において、送信ノード分類部807と、時間情報比較部808、出力チャネル選択部809は、仮想チャネル情報管理部805を参照し、仮想チャネルに格納されているパケットを送信ノードの違いに基づくグループに分類し、さらに分類されたグループ毎にパケットが宛先に届くまでの締切時間が最も短いパケットを格納している仮想チャネルを特定する。さらに特定された仮想チャネルのうちで、出力チャネルが未設定のものがあれば、その仮想チャネルに対して出力チャネルを割り当てる。
先の図13(A)に示されるように、中継装置801には、出力ポート0が選択されたものの、出力チャネルが未選択の仮想チャネル0が存在する。また、出力ポート0に未使用の出力バッファ0が存在する。そこで出力チャネル選択部809は、入力ポート0の仮想チャネル0に対して、出力ポート0の出力チャネル0を割り当てる。
図14(B)は中継装置801出力チャネル815が決定された後の仮想チャネル情報901を示している。仮想チャネル情報901では、仮想チャネル0に対して選択された出力チャネル番号0が選定される。
ここでは説明を簡単にするため、起動直後の中継装置801に1個のパケットが届いた場合を例に説明を行ったが、複数のパケットが中継装置801に届いた直後に、各仮想チャネル813に対して、出力チャネル814を割り当てる処理については、図17を用いて後で詳細に説明する。
図15(A)は、図14(A)から1サイクル時間が進んだ中継装置801の仮想チャネル815の様子を示している。
図10のステップ1008において、中継装置801の仮想チャネル選択部810は、入力ポート812毎に、出力チャネルが割当て済みの仮想チャネルの中から仮想チャネルを1つ選択する。
さらに、中継装置801のスイッチ切替部811は、仮想チャネル選択部810により、入力ポート812毎に1つ選択された仮想チャネル間で、出力ポートが競合しているか否かを判定する。もし、出力ポートが競合する仮想チャネルがあれば、その中から1つ仮想チャネルを選択する。
これにより、出力ポート814毎にフリットを送信する仮想チャネル813が選択され、その結果に基づきスイッチ切替部811は、選択された仮想チャネル813を含む入力ポート812と出力ポート814が接続するようにクロスバスイッチ803の接続を切り替える。
クロスバスイッチが切り替えられると、ステップ1009おいて、仮想チャネル選択部810とスイッチ切替部811で選択された仮想チャネル813は、それぞれフリットを送信する。
図15(B)は、ヘッダーフリットからデータフリットまでが送信されている状態における仮想チャネル情報901の様子を示している。テイルフリットはまだ送信されていない。
図16(A)は、テイルフリットが中継装置803から送信された時の、各仮想チャネル813の様子を示している。
図10のステップ1010において、仮想チャネル814は、フリットを送信する際に、送信したフリットがパケットを構成する最後のフリットであるかどうかを判定する。
図10のステップ1011において、送信したフリットがパケットを構成する最後のフリットであった場合には、別のパケットがその仮想チャネルを利用できるよう、これまで確保されていた仮想チャネルを開放する。仮想チャネル情報管理部805は、テイルフリットを送信した仮想チャネル814に関する情報を初期化する。
図16(B)は、テイルフリット1106が送信された後の仮想チャネル情報901を示している。入力ポート0の仮想チャネル0内からテイルフリットが送信されたことにより、仮想チャネル情報管理部805は、入力ポート0の仮想チャネル0に関する情報を初期化する。
以上、ステップ1001からステップ1011の処理を繰り返すことで、中継装置801は、パケットを宛先へと中継処理を行う。
図17は、図10のステップ1007において、出力チャネル選択部809が、仮想チャネル813に対して出力チャネル815の出力チャネルを割り当てる処理(仮想チャネル割当:Virtual channel Allocation)を示すフローチャートである。
また図18(A)は、中継装置801に複数のパケットが同時に届いた場合の仮想チャネル813の様子を示している。中継装置801には、同じパケットを構成するフリットが連続して届く場合だけではなく、異なるパケットを構成するフリットが混じって届く場合が発生する。また、図18(B)は、仮想チャネル813が図18(A)の状態にある場合の仮想チャネル情報901の内容を示している。
図18(A)、及び図18(B)によれば、中継装置801に設けられた入力ポート0の仮想チャネル1には、送信ノード010から宛先000へのパケットが到達している。そして、締切時刻が140以内のパケットを構成するヘッダーフリットとデータフリットが1つ格納され、出力ポート0が設定されている。出力チャネルは未設定である。
一方、入力ポート0の仮想チャネル2には、送信ノード010から宛先000へ送信されるパケットが到達している。そして、締切時刻が105サイクルのパケットがパケットを構成するデータフリットが1つ格納され、出力ポート0と出力チャネル0が設定されている。
一方、入力ポート1の仮想チャネル0には、送信ノード111から宛先010へ送信されるパケットが到達している。そして、締切時刻が125サイクルのパケットを構成するヘッダーフリットと、データフリットが1つ格納され、出力ポート0が設定されている。
入力ポート1の仮想チャネル1には、送信ノード110から宛先011へ送信されるパケットが到達している。締切時刻が130サイクルのパケットを構成するヘッダーフリットが格納され、出力ポート0が設定されている。
入力ポート1の仮想チャネル2には、送信ノード111から宛先010へ送信されるパケットが到達している。締切時刻が118サイクルのパケットを構成するヘッダーフリットが格納され、出力ポート0が設定されている。
以下、中継装置801の仮想チャネルが図18の状態にある場合を例に、図17を用いて仮想チャネルに対する出力チャネルの割当の詳細を説明する。
ステップ1701において、出力チャネル選択部809は、出力ポートが選択され、かつ、出力チャネルが未選択の仮想チャネル813が存在するかどうかを判断する。出力ポートが選択され、出力チャネルが未選択の仮想チャネル813が存在しなければ、ステップ1701を繰り返す。出力ポートが選択され、出力チャネルが未選択の仮想チャネル813が存在すれば、処理はステップ1702に移る。
ステップ1702において、仮想チャネル813は、出力ポート814に空きの出力チャネル815が存在するかどうかを判定する。出力チャネル815に空きが無ければステップ1702を繰り返す。出力チャネル815に空きがあれば処理はステップ1703に移る。
ステップ1703において、送信ノード分類部807は、パケットの送信ノードの違いに応じて、出力チャネルが未選択の仮想チャネルをグループ分けする。
図19は、中継装置801の仮想チャネル813の内容が図18(B)の場合における、送信ノード分類部807が仮想チャネルを分類した結果の例を示す。つまり図19は、送信ノードの違いによる仮想チャネルのグループ分けを示す。
図18(B)に示されるように、仮想チャネル815には、3種類の送信ノード(アドレスは010、110、111)から到達したフリットが格納されている。すなわち仮想チャネルは送信ノードに応じて、すなわち送信元のアドレスに応じて3つのグループに分類される。送信ノードのアドレスが010のグループには入力ポート0の仮想チャネル1が分類され、送信ノードのアドレスが110のグループには、入力ポート1の仮想チャネル1が分類され、送信ノードのアドレスが111のグループには、入力ポート1の仮想チャネル0と仮想チャネル3が分類される。
なお、図19の最下段に示される「設定済みの出力チャネル数」とは、出力チャネル番号の設定までが完了している仮想チャネル数を示している。図18(B)の例では、仮想チャネル番号2の仮想チャネルが出力チャネル番号まで設定されており、他の仮想チャネルは出力チャネル番号が設定されていない。したがって、送信元のアドレスごとに分類すると、アドレス「010」の送信元の欄のみ「1」が記載され、他は「0」となる。
次にステップ1704において、時間情報比較部808は、仮想チャネル情報901に記録されている締切時刻を参照し、送信ノードのアドレスの違いで分類された各グループの仮想チャネル毎に、締切時刻がもっとも近いパケットを格納する仮想チャネルを優先順位1として選択する。このとき、既に割り当て済みの仮想チャネルは優先順位の設定対象から除外される。
図19では、送信ノードのアドレスが010のグループでは、入力ポート0の仮想チャネル1が選択され、送信ノードのアドレスが110のグループでは、入力ポート1の仮想チャネル1が選択され、送信ノードのアドレスが111のグループでは、入力ポート1の仮想チャネル0が選択される。
このステップS1704の処理により、出力チャネル選択部809は、すべての送信ノードに対して1つ以上出力チャネルを割り当てることができる。なお、ある送信ノードに関し、すべての仮想チャネルに対して元々出力チャネルが割り当てられている場合には、その送信ノードに関しては、上述の処理による優先順位の決定から除外される。
次にステップ1705において、設定済み出力チャネル数が0の送信ノードのパケットが存在するか否かを判断する。存在する場合には処理はステップS1706に進み、存在しない場合には処理はステップS1707に進む。
出力チャネルが設定されていない送信ノードのアドレスがあれば、ステップ1706に移り、出力チャネルが設定されていない送信ノードのアドレスがなければ、ステップ1707に移る。
図19の例では、送信ノードのアドレスが010のグループでは、既に送信ノードのアドレスが同じ入力ポート0の仮想チャネル2に対し出力チャネルが割当てられているので、設定済みの出力チャネル数は1となる。送信ノードのアドレスが110と111のグループでは、送信ノードのアドレスが同じ仮想チャネルで、出力チャネルが割当りあてられているものが存在しないため、設定済みの出力チャネル数は0となる。このため図19の例では、出力チャネルが未設定である送信ノードのアドレス(110、111)が存在するので、ステップ1706に移る。
次にステップ1706において、出力チャネル選択部809は、出力チャネルが未設定の送信ノードの仮想チャネルの中で、締切時間が最も近い仮想チャネル、換言すると、優先度が最も高い仮想チャネルを1つ選択する。
図19の例では、出力チャネルが未設定のグループ(110、111)の中で、締切時間が最も近い入力ポート1の仮想チャネル0が選択される。
すべての送信ノードに対して、1つ以上、出力チャネルが割当てられる仮想チャネルが存在する場合には、ステップ1707において、出力チャネル選択部809は、すべてのグループの中で、締切時刻が最も近い仮想チャネルに対して出力チャネルを割り当てる。
以上のように、ステップ1701からステップ1707を繰り返すことにより、中継装置801は、すべての送信ノードに対して、1つ以上出力チャネルを割当てつつ、締切時間の近い仮想チャネルから優先的に出力チャネルを割当てることができる。
図20(A)および(B)は、図10のステップ1008において、仮想チャネル選択部810とスイッチ切替部811が、出力ポートと出力チャネルが選択された仮想チャネル813に対して出力ポートへの接続し、フリットの送信タイミングを割り当てる処理(スイッチ割当:Switch Allocation)を説明する図である。
図20(A)はその動作の一例を説明するフローチャートである。また図20(B)は、仮想チャネルが選択済みの仮想チャネルに対して、出力ポートの接続が決定する動作の流れを説明する図である。
ステップ2001において、仮想チャネル選択部810は、入力ポート毎に、出力チャネルが設定されている仮想チャネルを1つ選択する。
例えば図20(B)の例では、入力ポート0と入力ポート1にそれぞれ仮想チャネルが4個ずつ備えられており、入力ポート0では、仮想チャネル0と3に対して出力チャネルが設定されている状態にある。また入力ポート1では、仮想チャネル0と1と2に対して出力チャネルが設定されている状態にある。
仮想チャネル選択部810は、それぞれの入力ポートにおいて、出力チャネルが設定済みになっている仮想チャネルの中から1つ仮想チャネルを選択する。図20(B)では、仮想チャネル選択部810は入力ポート0に対しては仮想チャネル0を選択し、入力ポート1に対しては仮想チャネル1を選択している。
次にステップ2002において、スイッチ切替部811は、出力ポート毎に、入力ポート側で選択された仮想チャネルで、出力ポートの設定が競合するもののなかから1つ仮想チャネルを選択する。
図20(B)において、例えば入力ポート0で選択された仮想チャネル、および入力ポート1で選択された仮想チャネルが共に、出力ポート0に設定されている場合、スイッチ切替部811は、2つの仮想チャネルの一方を選択する。
なお、スイッチ割当てについては、上記に説明した以外の方法であっても良い。
例えば図20(A)のステップ2001における入力ポート毎の仮想チャネルの選択と、ステップ2002において出力ポート毎の仮想チャネルの選択において、複数の仮想チャネルを1サイクル毎に、ラウンドロビンにより順番に選択する方法や、確率的にランダムに選択しても良い。このように1サイクル毎に、フリットを送信する仮想チャネルを変更した場合には、送信元の異なるパケットをフリット単位でインターリーブして複数のパケットを見かけ上並列的に出力を行うことができる。
このように、本実施形態の中継装置801は、パケットの送信ノードを区別して、NoCの中継装置において限られた仮想チャネルを異なる送信ノードから送信されたパケットに対して割り当てることで、送信ノードが同じのパケットが中継装置801の仮想チャネルを占有し、送信ノードが異なるパケット間で送信タイミングのスケジューリングが行えなくなる状況を回避し、伝送性能(スループット、遅延時間、ジッター)の低下を抑制する。
本実施形態では、時間情報比較部808において、パケットに付与された締切時刻に基づいて出力チャネルの割当を行った。しかしながら、締切時間以外でも、パケットの中継に関する時間情報を基準に、出力チャネルの割当の優先順位を定義してもよい。
図21は、時間情報、及び時間情報に基づく優先度の比較基準の例を示す。
時間情報としては、例えば、パケットが送信されてからの経過時間を用いても良い。
時間情報として送信時刻を管理するためには、半導体システムが動作している期間を表現できるだけの桁数が必要である。よって、半導体システムが長時間動作する場合には時間情報の桁数が大きくなる。
これに対し、時間情報としてパケットが送信されてからの経過時間を用いる場合には、パケットが送信されてから受信されるまでにかかる時間を表現するだけの桁数があればよいので、比較的、時間情報の桁数を小さく抑えることが可能になる。時間情報として扱う値の桁数が小さければ、時間情報比較部808における時間情報の比較回路を小さくできるため、半導体システムのリソース削減に有効である。
また、送信時刻を用いるとしても、年月日時分秒で表現される送信時刻の一部(例えば、M桁の送信時刻で、位の小さい方からn桁の値(n:M>nとなる整数))を用いることで、時間情報として扱う桁数を小さくすることができる。n桁の値としては、例えばパケットが送信されてから受信されるまでにかかる時間を表現するだけの桁数を用いることができる。
また、時間情報として、パケットが受信ノードに届くまでの締切時刻を用いて、締切時刻が近いパケットから順に出力チャネルを割り当てても良い。
一般的に、バスマスタの種類や処理の内容によって、パケットが受信ノードに届くまでに許容できる遅延時間が異なる。このため、送信ノードから、締切時刻までの時間が比較的に長いパケットが複数送信された後に、締切時刻までの時間が短いパケットが送信される状況を想定すると、中継装置において、送信時刻の古いパケットから順番に出力チャネルを割り当ててパケットを送信するよりも、締切時刻までの残り時間の短いパケットから出力チャネルを割り当ててパケットを送信する方が、より多くのパケットに対し、許容できる遅延時間を遵守できる。
また、時間情報として、締切り時刻の代わりに締切り時刻までの残り時間を用いても良い。
本実施形態では、送信ノード分類部807において、送信ノードの区別を送信ノードのアドレスとして例に説明を行った。しかしながら、送信ノードの区別の定義は送信ノードのアドレスに限定されるものではない。
たとえば送信ノードとして、中継装置を指定してもよい。図22(A)および(B)は、中継装置R9からみた種々の宛先の定義、及び各定義に該当し得る宛先の具体例を示している。例えば、図22(A)の構成において、パケットの送信ノードとなりうる伝送経路上で通過する途中の中継装置を、送信ノードと定義することができる。
図22(A)の中継装置R9に対して、送信ノードがバスマスタであるとすると、中継装置R9にとっての送信ノードは、バスマスタ0から、バスマスタ7までの8個が対象となる。一方、送信ノードがその中継装置からみて2つ前までの中継装置とすると、中継装置R9にとっての送信ノードは、4つの中継装置R0〜R3となり得る。さらに、宛先の定義を1つ前の中継装置とすると、2つの中継装置R4、及びR5が送信ノードとなり得る。
また、図22(A)において、n段目の中継装置が1つ前に通過した中継装置を区別する方法としては、パケットに付与された送信元のアドレスのうち右から(n+1)桁目の数値で区別することができる。
例えば、図22(A)の中継装置R9は、1段目の中継装置である。そこで、受信したパケットの送信元のアドレスを参照し、右から2桁目の数値が0であれば中継装置R4を通過したパケットと判定する。また右から2桁目の数値が1であれば中継装置R5を通過したパケットと判定する。このように、それぞれパケットが1つ前に通過した中継装置を区別することができる。
また、n段目の中継装置が2つ前に通過した中継装置を判定する方法としては、パケットに付与された送信元のアドレスのうち右から(n+1)桁目と(n+2)桁目の数値で区別することができる。
例えば図22(A)の1段目の中継装置R9において受信したパケットの送信元のアドレスを参照する。そして、右から2桁目と3桁目の数値が00であれば中継装置R0を通過したパケットと判定する。また、右から2桁目と3桁目の数値が01であれば中継装置R1を通過したパケットと判定する。また、右から2桁目と3桁目の数値が10であれば中継装置R2を通過したパケットと判定する。また、右から2桁目と3桁目の数値が11であれば中継装置R3を通過したパケットと判定する。このような手順により、それぞれパケットが2つ前に通過した中継装置を区別することができる。
このように送信ノードの定義を伝送経路上の途中の中継装置とすることで、実際にパケットを送信するバスマスタを送信ノードとした場合よりも、送信ノード分類部807で分類するグループの数を削減でき、仮想チャネル間での送信ノードの比較処理を軽減できる。
また、送信ノード分類部807で分類するグループの数を削減するために、複数の送信ノード毎を1つグループにまとめて、これらを1つの送信元として扱ってもよい。
たとえば図23(A)は、メッシュ型のNoCにおけるバスマスタのアドレスを示す。また図23(B)は、アドレス(X、Y)の1桁目の値によるバスマスタのグループ分けを示す。
以下、図23(A)に示すメッシュ型のNoCを例に、複数の送受信ノードを1つのグループとして扱う方法を説明する。
図23(A)には、(00,00)などのアドレスが与えられた複数のバスマスタと、複数の中継装置(R)とによって構成されたメッシュ型NoCが示されている。
図23(A)のNoCでは、16個のバスマスタが縦横4列ずつ格子状に配置されており、中継装置によって接続されている。図23(A)において、各バスマスタのアドレスは、図23の横方向をX軸、縦方向をY軸として、X軸方向とY軸方向における番号をそれぞれ2桁の2進数で定義されている。
ここで、各バスマスタのアドレスのXとYの値の、左から1桁目の値でバスマスタを区別すると、図23(B)に示すように、16個のバスマスタをそれぞれ、アドレスが(0,0)、(0,1)、(1,0)、(1、1)の4つのグループに分類することができる。
そして、あるグループに属する中継装置に着目すると、自身が所属するグループ内から送信されたパケットと、他の3つのグループの各々から送信されたパケットを格納した仮想チャネルについて、締切時刻がもっとも近いパケットを格納する仮想チャネルを優先順位1として選択すればよい。
なお、複数の送受信ノードを1つのグループにまとめる方法は、例えば各送受信ノードのアドレスのX座標とY座標のそれぞれの左から2桁目の値を用いてもよい。
また、NoCのトポロジーの形や、各バスマスタのアドレスの決定方法に合わせて変更しても良い。
送信ノードとされた中継装置にパケットが到達した場合には、その中継装置は再び、図21(B)のいずれかの定義にしたがって送信ノードを設定し、パケットを送出すればよい。
また、送信ノード分類部807で分類するグループの数を削減するために、集積回路内のトポロジーやバスの種類の違いに基づいて、複数の送信ノードを1つグループにまとめて、これらを1つの送信元として扱ってもよい。つまり、微視的には複数の送信ノードが存在するが、それら複数の送信ノードを巨視的に見て、全体で1つの送信ノードとして取り扱うことも可能である。
図24は、複数のバスマスタ(バスマスタ群)の集合体を1つの送信ノードと見なして取り扱う集積回路100の構成を示す。
図24の集積回路100は、広い範囲を高速に結ぶ基幹バス101と、比較的近い距離を低速に結ぶローカルバス102a〜102cの2種類のバスから構成されている。基幹バス101とローカルバス102a〜102cは、中継装置103a〜103cによって接続されている。この中継装置は、伝送帯域の異なるバス間でデータを伝送可能な性能を有している。そのような性能を有する中継装置は、専用に設けられてもよい。
図24の例では、ローカルバスAに属するバスマスタの集まり(バスマスタ群)を送信ノードA、ローカルバスBに属するバスマスタ群を送信ノードB、ローカルバスCに属するバスマスタ群を送信ノードCとして扱う。なお、ローカルバス内の中継装置は、各バスマスタを各送信ノードとして動作する。
一般的に、バスの配線や動作周波数の制約により、集積回路上の全てのバスマスタを高速なバスで接続することは容易ではない。そのため、図24のように、ローカルバスを利用して複数のバスマスタからの送信データを集約し、最寄りの基幹バスまで伝送を行うことで、回路設計において、バスの配線や動作周波数の制約を減らすことができる。
このように、複数のバスマスタ間の接続が、異なるローカルバスによって分かれている場合に、基幹バス上の中継装置において、送信ノード分類部807で分類するグループの数を削減するために、同じローカルバスに属しているバスマスタの集まりを纏めて1つの送信ノードとして扱っても良い。
バスマスタがどのローカルバスに属しているかを識別する方法としては、複数考えられる。たとえば、以下のとおりである。
(1)送信元のバスマスタを識別できる送信ノードアドレスと、そのバスマスタが所属するローカルバスとの対応関係を定義したテーブルを、各中継装置が送信ノード分類部807に保持し、受信したパケットの送信ノードアドレスとテーブルの内容を比較する。これにより、各中継装置は、そのパケットがどのローカルバスから送信されたパケットであるかを識別することができる。
(2)パケットのヘッダフィールド301に、ローカルバスを特定する情報を付与しておき、送信ノード分類部807が、パケットを受信した中継装置がヘッダフィールド301を参照する。これにより、そのパケットがどのローカルバスから送信されたパケットであるかを識別できる。
図24では、共通のローカルバスに接続されている複数のバスマスタが、1つの送信ノードと見なされている。なお、ローカルバス単位で送信ノードを規定する必要はなく、たとえばトポロジーやバスの種類の違いに基づいて送信ノードを規定することができる。
より具体的には、複数のローカルバスを1つに纏めて1つの送信ノードとしても良い。例えば、ローカルバスCに属するバスマスタ数に対して、ローカルバスAとローカルバスBに属するバスマスタ数がそれぞれ少なく、また送信量も少ない場合には、ローカルバスAとローカルバスBに属するバスマスタを纏めて1つの送信ノードとして扱う。各送信ノードに属するバスマスタ数の差を減らすことで、送信量の差を減らすことができる。
(実施形態2)
実施形態1では、実装において仮想チャネル数やサイズの制約のある、半導体回路上の中継装置において、中継装置が送信するパケットの送信ノードを区別して、それぞれの送信ノードのパケットに対して、隣接する受信ノードである中継装置の仮想チャネルを1つ以上割当てるとした。これにより、異なる送信ノードから届いた複数のパケットに対し送信スケジューリング可能な状態を維持し、その伝送効率(スループットや伝送遅延)の向上を行った。
本実施形態では、さらに、送信ノードごとにパケットの送信レートが異なる場合、中継装置は、隣接する受信ノードである中継装置で仮想チャネルの割り当て数を、それぞれの送信ノードからのパケットの込み具合に応じて調整し、混雑しているパケットに対し、優先的に隣接する中継装置の仮想チャネルを割当てることでNoCでの伝送効率を向上させる。
送信ノードの違いによって中継装置内でのパケットの込み具合が異なる場合として、例えば、図5の例ではマスタAからのパケットの送信間隔が、マスタBの送信間隔よりも短く、マスタAからのパケットの流れが、マスタBのパケットの流れよりも混雑しており、中継装置Aにおいて、それぞれのマスタから送信されたパケットが格納されている仮想チャネルの数が4個と2個といった状況が発生する。
中継装置Aが自身の仮想チャネルに対して、送信したパケットを中継装置Bで格納する仮想チャネルの割当てを、図6のように公平に行うと、混雑の大きいマスタAからのパケットの流れが、中継器Aまでの経路上で仮想チャネルを占有しやすくなり、別の送信ノード(例えばマスタC)が後からパケットを送信しようとしても、経路上に仮想チャネルの空きがないため、すぐに送信できないという課題が発生しやすい。
図25は、本実施形態にかかる中継装置の動作を説明する図である。
図25の構成は、図5、図6と同じであるため説明を省略する。
実施形態2の中継装置Aは、各送信ノードのパケットに対して、送信スケジューリングを維持できるように、中継装置Bの仮想チャネルを最低1つ割当て、さらに中継装置Aでの仮想チャネルの利用数と中継装置Bの仮想チャネル利用数の関係に基づき、混雑が大きい送信ノードのパケットに対して中継装置Bの仮想チャネルを優先的に割当てる。
図25の中継装置Aは、例えば、マスタAからのパケットとマスタBからのパケットに対して、中継装置Bの仮想チャネルを、まず1ずつ割り当て、さらに中継装置A利用している仮想チャネルの数と中家装置Bで利用している仮想チャネルの差分が均一に近づくように、各マスタからのパケットに対する中継装置Bの仮想チャネルの割り当て量を決定する。
図25の例では、まずマスタAからのパケット、マスタBからのパケットに対してそれぞれ中継装置Bの仮想チャネルを1個ずつ割り当て、さらに、マスタAからのパケットとマスタBからのパケットが中継措置Aで利用する仮想チャネル数の比率が4対1であるため、中継装置Bにおいても利用数が4対1に近づくように、マスタAからのパケットに対して中継装置Bの仮想チャネルを優先的に多く(3つ)割当てる。
図26は、本実施形態における中継装置の構成を説明する図である。
実施形態1と同じ構成については、同じ符号を付与して説明を省略する。
送信負荷測定部2401は、送信ノード毎に、パケットの流れ(トラヒック)の負荷、または混み具合を示す値(指標)を測定する。出力チャネル割当量決定部2402は、送信ノードの違いで区別されたパケットの送信負荷に応じて、受信ノードである中継装置801bの仮想チャネルの割当量を決定する。
図27は、本実施形態における中継装置の動作を説明するフローチャートである。図10と同じ処理については、同じ符号を付与し説明を省略する。
ステップ1704において、中継装置801に格納されているパケットのすべての送ノードに対して1つ以上、出力チャネル815が割当てられている場合、ステップ2501において、中継装置801の送信負荷測定部2401は、送信ノード毎にパケットの流れの込み具合を測定する。
図28は、NoC上の中継装置801において、パケットの流れの混み具合を示す指標の一例を説明する図である。
送信ノードで区別したパケットの流れの混み具合を示す指標としては、(1)仮想チャネルの利用数、(2)パケットが中継装置に到着してから、出ていくまでの通過時間、(3)バスの利用帯域(使用帯域、設計帯域)などがあげられる。
以下の説明では、送信ノードで区別したパケットの流れの混み具合を示す指標として、(1)仮想チャネルの利用数を例に説明する。
ステップ2502において、出力チャネル割当量決定部2402は、中継装置801の仮想チャネルにおいて、送信ノード毎に区別して出力チャネルが未設定の仮想チャネル数と、送信ノード毎に区別して設定済みの出力チャネル(中継装置801bの仮想チャネルに対応)の数を比較し、その差分を元に割り当ての優先順位を決定する。
図29は、出力チャネル割当量決定部2402の動作の一例を説明する図である。
図29において、中継装置Aにおいて、出力チャネルが未選択である仮想チャネルが4つあり、その送信ノードはアドレスが010、110、111の3種類ある。そして、送信ノードのアドレスが010のパケットは1つ、送信ノードのアドレスが110のパケットは1つ、送信ノードのアドレスが111のパケットは2つあるとする。既に各送信ノードに対して1つ出力チャネルが割り当てられている。
出力チャネル割当量決定部2402は、送信ノードを区別して出力チャネルが未設定の仮想チャネルの利用数から出力チャネル利用数の差分を求め、それをその送信ノードのパケットに対する出力チャネルの残り割当量とする。
図29では、送信ノードのアドレスが010のパケットに対する出力チャネルの残り割当量は0、送信ノードのアドレスが110のパケットに対する出力チャネルの残り割当量は0、送信ノードのアドレスが111のパケットに対する出力チャネルの残り割当量は1となる。
ステップ2503において、出力チャネル選択部809は、出力チャネルの残り割当量が1以上のパケットがあればステップ2504に移る。出力チャネルの残り割当量がすべて0であり、出力チャネルの割当が行われている場合は、ステップ1706に移る。
さらに、ステップ2504において、出力チャネル選択部809は、残り割当量が1以上の送信ノードがあれば、その中で最も優先度の高いパケットに対して出力チャネルを割当てる。
図29の例では、送信ノードのアドレス111の残り割当量が1であるため、その中で最も締切時間が近い、入力ポート1の仮想チャネル0に格納されるパケットに対して出力チャネルを割り当てる。
以上、図26の構成と図27の動作を行うことで、実施の形態2の中継装置は、送信ノード毎にパケットの送信レートが異なる場合、送信ノードで区別したパケットの流れの中で混雑している流れに対し、優先的に隣接する中継装置の仮想チャネルを割り当てることで混雑の増加を緩和でいるため、NoCでの伝送効率を向上させる。
以上、本発明の例示的な実施形態を説明した。
実施形態1および2では、集積回路のトポロジーが多段接続網の場合を例に説明したが、本発明の例示的な中継装置は多段接続網での利用に限定されるものではない。例えば、図30(A)に示すように中継装置を格子状に並べてメッシュ型トポロジーを構成してもよい。また図30(B)に示すように上下左右で中継装置をリング状に接続したトーラス型トポロジーを構成してもよい。さらに図30(C)に示すようにバスを階層的に接続した階層型トポロジーなどを構成してもよい。複数のバスマスタを分散型のバスを介して接続したトポロジーであれば、同様に上述した中継装置の適用が可能である。
図31は、本発明の一態様にかかる中継装置をメモリバスに利用した例を説明する図である。
図31では、携帯電話やPDA(Personal Digital Assistants)、電子書籍リダーなどの携帯端末や、TV、ビデオレコーダ、ビデオカメラ、監視カメラ等で用いられる半導体回路上のバスマスタ(CUP,DSP、伝送処理部、画像処理部など)と複数のメモリを分散型のバスを利用して接続させた利用例を示している。
複数の映像や音楽などの再生、記録、トランスコード、書籍や写真、地図での閲覧や編集、ゲームのプレイなど、複数のアプリケーションやサービスを同時に利用する場合、各バスマスタからメモリへのアクセスが増える。各バスマスタからアクセスするメモリの数が1つだけの場合、アクセスが1箇所に集中してしまう。アクセス集中の解決のためには、メモリ側の入出力の伝送帯域を広げる必要があり、コストが高くなってしまう。
このメモリアクセスの集中を回避する方法として、アプリケーションやサービス等の種類によってバスマスタが利用するメモリを物理的に分け、これらのバスマスタとメモリを分散型のバスで接続させることで、メモリアクセスの集中の回避が可能となる。
しかし、例えば図31において、あるバスマスタが、映像データを保存するためにメモリAに対して高いレートでデータパケットを送信した場合、各中継装置が送られてきたデータパケットの順序を単純に維持したまま中継すると、伝送経路上の仮想チャネルがすべてメモリA宛のパケットで占有される頻度が多くなる。その結果、他のメモリへデータが流れにくくなり、他のアプリケーションやサービスの性能が低下や処理時間の増加が発生してしまう。
これに対し、本発明の例示的な中継装置を用いた場合には、各中継装置の仮想チャネルにおいて、宛先の異なるパケットに対して、均一に仮想チャネルを割り当てられるため、特定のメモリに向うパケットによる仮想チャネルの占有が回避され、半導体回路上のすべてのアプリケーションやサービスの性能の向上や、処理時間の短縮化ができる。
なお、上述のメモリは、揮発性のDRAMであってもよいし、不揮発性のフラッシュメモリであってもよい。揮発性メモリ、及び不揮発性メモリが混在していてもよい。
図32は、本発明の例示的な中継装置をマルチコアプロセッサ(multi−core processor)上で利用した例を説明する図である。
図32では、CPUやGPU、DSP等のコアプロセッサの処理能力を向上させるために、複数のコアプロセッサをメッシュ状に並べ、これらを分散バスで接続したマルチコアプロセッサである。
マルチコアプロセッサ上では、各コアプロセッサ間で通信が行われており、例えば、各コアプロセッサには、演算処理に必要なデータを記憶しておくキャッシュメモリが備えられており、コアプロセッサ間で互いのキャッシュメモリの情報をやり取りし、共有が可能であり、これにより性能を向上させることができる。
しかし、マルチコアプロセッサ上で発生するコアプロセッサ間の通信は、それぞれ配置や距離(中継ホップ数)、通信頻度が異なる。このため、データパケットの順序を単純に維持したまま中継すると、仮想チャネルがすべて特定のコアプロセッサ宛のパケットにより占有されパケットデータが流れにくい中継装置が発生し、マルチコアプロセッサの性能の低下や、処理時間の増加を引き起こす。
これに対し、本発明の例示的な中継装置を用いた場合には、各中継装置の仮想チャネルにおいて、宛先の異なるパケットに対して、均一に仮想チャネルを割り当てられるため、特定のコアプロセッサに向うパケットにより仮想チャネルが占有された中継装置の発生が回避され、各コアプロセッサの性能の向上や、処理時間の短縮化ができる。
上述した中継装置は、ハードウェアまたはソフトウェアによって実現することが可能である。たとえば図8に示す各構成要素は、ハードウェア回路として実装され得る。または、それらの中継装置の各構成要素の動作を、設計ツール内の処理として実装し、種々の動作条件をパラメータとして与えることにより、シミュレーションを実行して実際の回路設計を行っても良い。中継装置の1つまたは複数の構成要素を設計ツールとして実装することにより、バスの帯域設計を計算プログラム等で行えるようになり、シミュレーションやエミュレーションによるバス帯域のカット・アンド・トライによる設計と検証が不要となり、開発工数が短縮できるという優れた効果を有する。
本発明の一実施形態にかかる中継装置は、分散型のバスを備える集積回路において、実装時の制約の大きい仮想チャネルを増やすことなく、送信パケットに対する各中継装置での仮想チャネルの割当て順番のスケジューリングを効率的に行うことで、NoC全体での伝送性能(スループット、伝送遅延、ジッター)を向上できる。このため、例えば複数のメディア処理用のDSPや、高速なファイル転送を行うCPUなどを、分散バスを用いて1つのSoC(System on Chip)上に集積化する際に、実装に必要なリソースの省資源化と、処理の低遅延化の双方を実現する上で有用である。
また、リソースの省資源化と処理の低遅延化による、集積回路全体での省電化に対しても有用である。
300 パケット
301 ヘッダフィールド
302 データフィールド
303 制御コードフィールド
304 ヘッダーフリット
305 データフリット
307 テイルフリット
801 801a 801b 中継装置
802 入力バッファ
803 クロスバスイッチ
804 出力バッファ
805 仮想チャネル情報管理部
806 出力ポート選択部
807 送信ノード分類部
808 時間情報比較部
809 出力チャネル選択部
810 仮想チャネル選択部
811 スイッチ切替部
812 入力ポート
813 仮想チャネル
814 出力ポート
815 出力チャネル
901 仮想チャネル情報
2401 送信負荷測定部
2402 出力チャネル割当量決定部

Claims (8)

  1. パケット交換方式の分散型バスを備える集積回路において、前記集積回路に接続されるノード間で伝送されるパケットを中継する中継装置であって、
    送信ノードを特定する情報が付加されたパケットを格納する複数のバッファと、
    パケットを格納した前記複数のバッファを、前記パケットの送信ノードに基づいて複数のグループに分類する分類部と、
    各グループに属するバッファを少なくとも1つ選択する選択部と、
    選択された前記バッファに格納されたパケットを順次出力する出力ポートと
    を備え
    前記パケットには、時間情報が付加されており、
    分類されたグループにバッファが2以上属しているときは、前記選択部は、各バッファに格納された前記パケットの時間情報に基づいて、2以上のバッファのうちの1つを、優先順位が最も高いバッファとして選択し、
    分類されたグループにバッファが1つのみ属しているときは、前記選択部は、前記バッファを優先順位が最も高いバッファとして選択し、
    前記出力ポートは、各グループの前記優先順位が最も高いバッファに格納された各パケットを、各パケットの時間情報に基づいて定められる順序で出力し、
    前記時間情報は、パケットが送信先のノードに届くべき締切時刻であり、
    前記出力ポートは、各グループの前記優先順位が最も高いバッファに格納された各パケットを、前記締切時刻の近い順に出力する、中継装置。
  2. パケット交換方式の分散型バスを備える集積回路において、前記集積回路に接続されるノード間で伝送されるパケットを中継する中継装置であって、
    送信ノードを特定する情報が付加されたパケットを格納する複数のバッファと、
    パケットを格納した前記複数のバッファを、前記パケットの送信ノードに基づいて複数のグループに分類する分類部と、
    各グループに属するバッファを少なくとも1つ選択する選択部と、
    選択された前記バッファに格納されたパケットを順次出力する出力ポートと
    を備え、
    前記パケットには、時間情報が付加されており、
    分類されたグループにバッファが2以上属しているときは、前記選択部は、各バッファに格納された前記パケットの時間情報に基づいて、2以上のバッファのうちの1つを、優先順位が最も高いバッファとして選択し、
    分類されたグループにバッファが1つのみ属しているときは、前記選択部は、前記バッファを優先順位が最も高いバッファとして選択し、
    前記出力ポートは、各グループの前記優先順位が最も高いバッファに格納された各パケットを、各パケットの時間情報に基づいて定められる順序で出力し、
    前記時間情報は、パケットが送信元のノードから送信された送信時刻であり、
    前記出力ポートは、各グループの前記優先順位が最も高いバッファに格納された各パケットを、前記送信時刻が古い順に出力する、中継装置。
  3. パケット交換方式の分散型バスを備える集積回路において、前記集積回路に接続されるノード間で伝送されるパケットを中継する中継装置であって、
    送信ノードを特定する情報が付加されたパケットを格納する複数のバッファと、
    パケットを格納した前記複数のバッファを、前記パケットの送信ノードに基づいて複数のグループに分類する分類部と、
    各グループに属するバッファを少なくとも1つ選択する選択部と、
    選択された前記バッファに格納されたパケットを順次出力する出力ポートと
    を備え、
    前記送信ノードは、1つのバスマスタ、または複数のバスマスタの集合体であり、
    前記分類部は、前記1つのバスマスタ、前記複数のバスマスタの集合体、または、前記パケットが伝送経路上で通過した1つまたは複数の中継装置に基づいて、前記複数のバッファを前記複数のグループに分類し、
    前記分類部は、前記パケットが伝送経路上で通過した中継装置に応じて、パケットを格納した前記複数のバッファを、複数のグループに分類する、中継装置。
  4. パケット交換方式の分散型バスを備える集積回路において、前記集積回路に接続されるノード間で伝送されるパケットを中継する中継装置であって、
    送信ノードを特定する情報が付加されたパケットを格納する複数のバッファと、
    パケットを格納した前記複数のバッファを、前記パケットの送信ノードに基づいて複数のグループに分類する分類部と、
    各グループに属するバッファを少なくとも1つ選択する選択部と、
    選択された前記バッファに格納されたパケットを順次出力する出力ポートと
    を備え、
    前記送信ノードは、1つのバスマスタ、または複数のバスマスタの集合体であり、
    前記分類部は、前記1つのバスマスタ、前記複数のバスマスタの集合体、または、前記パケットが伝送経路上で通過した1つまたは複数の中継装置に基づいて、前記複数のバッファを前記複数のグループに分類し、
    送信ノードは複数存在し、かつ、各送信ノードは予め複数のグループのいずれかに属するよう分類されており、
    前記分類部は、前記パケットを送信した送信ノードが所属するグループに応じて、パケットを格納した前記複数のバッファを複数のグループに分類する、中継装置。
  5. 送信ノードごとに、パケットの流れの混み具合の程度を示す値を測定する測定部であって、前記混み具合が大きいほど、大きい値を測定する測定部と、
    前記値が大きい送信ノードほど、前記出力ポートからより多くのパケットが出力されるよう、出力量を決定する決定部と
    をさらに備えた、請求項1から4のいずれかに記載の中継装置。
  6. 前記測定部は、前記分類部によって分類されたバッファの数を、前記パケットの流れの混み具合を示す値として測定する、請求項に記載の中継装置。
  7. 前記測定部は、パケットが自中継装置に到着してから、出ていくまでの通過時間を、前記パケットの流れの混み具合を示す値として測定する、請求項に記載の中継装置。
  8. 前記測定部は、バスの利用帯域を、前記パケットの流れの混み具合を示す値として測定する、請求項に記載の中継装置。
JP2013506019A 2011-07-22 2012-06-14 中継装置 Active JP5603481B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2013506019A JP5603481B2 (ja) 2011-07-22 2012-06-14 中継装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011161149 2011-07-22
JP2011161149 2011-07-22
PCT/JP2012/003911 WO2013014851A1 (ja) 2011-07-22 2012-06-14 中継装置
JP2013506019A JP5603481B2 (ja) 2011-07-22 2012-06-14 中継装置

Publications (2)

Publication Number Publication Date
JP5603481B2 true JP5603481B2 (ja) 2014-10-08
JPWO2013014851A1 JPWO2013014851A1 (ja) 2015-02-23

Family

ID=47600729

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013506019A Active JP5603481B2 (ja) 2011-07-22 2012-06-14 中継装置

Country Status (4)

Country Link
US (1) US9094231B2 (ja)
JP (1) JP5603481B2 (ja)
CN (1) CN103348640B (ja)
WO (1) WO2013014851A1 (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8885510B2 (en) 2012-10-09 2014-11-11 Netspeed Systems Heterogeneous channel capacities in an interconnect
US9160477B2 (en) * 2013-02-14 2015-10-13 Nec Laboratories America, Inc. Virtual networking embedding procedure in an optical wavelength division multiplexing (WDM) network
US9237093B2 (en) * 2013-03-14 2016-01-12 Silicon Graphics International Corp. Bandwidth on-demand adaptive routing
US9571402B2 (en) * 2013-05-03 2017-02-14 Netspeed Systems Congestion control and QoS in NoC by regulating the injection traffic
US9471726B2 (en) 2013-07-25 2016-10-18 Netspeed Systems System level simulation in network on chip architecture
US9473388B2 (en) 2013-08-07 2016-10-18 Netspeed Systems Supporting multicast in NOC interconnect
US20150049758A1 (en) * 2013-08-13 2015-02-19 Utah State University Hot carrier injection tolerant network on chip router architecture
US10193827B2 (en) 2013-08-13 2019-01-29 Dean Michael Ancajas Hot carrier injection tolerant network on chip router architecture
US9699079B2 (en) 2013-12-30 2017-07-04 Netspeed Systems Streaming bridge design with host interfaces and network on chip (NoC) layers
US9473415B2 (en) 2014-02-20 2016-10-18 Netspeed Systems QoS in a system with end-to-end flow control and QoS aware buffer allocation
US9742630B2 (en) 2014-09-22 2017-08-22 Netspeed Systems Configurable router for a network on chip (NoC)
US9571341B1 (en) 2014-10-01 2017-02-14 Netspeed Systems Clock gating for system-on-chip elements
US9660942B2 (en) 2015-02-03 2017-05-23 Netspeed Systems Automatic buffer sizing for optimal network-on-chip design
US9444702B1 (en) 2015-02-06 2016-09-13 Netspeed Systems System and method for visualization of NoC performance based on simulation output
US9928204B2 (en) 2015-02-12 2018-03-27 Netspeed Systems, Inc. Transaction expansion for NoC simulation and NoC design
US9568970B1 (en) 2015-02-12 2017-02-14 Netspeed Systems, Inc. Hardware and software enabled implementation of power profile management instructions in system on chip
US10050843B2 (en) 2015-02-18 2018-08-14 Netspeed Systems Generation of network-on-chip layout based on user specified topological constraints
US10348563B2 (en) 2015-02-18 2019-07-09 Netspeed Systems, Inc. System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology
US9825809B2 (en) 2015-05-29 2017-11-21 Netspeed Systems Dynamically configuring store-and-forward channels and cut-through channels in a network-on-chip
US9864728B2 (en) 2015-05-29 2018-01-09 Netspeed Systems, Inc. Automatic generation of physically aware aggregation/distribution networks
US10218580B2 (en) 2015-06-18 2019-02-26 Netspeed Systems Generating physically aware network-on-chip design from a physical system-on-chip specification
US10181939B2 (en) * 2016-07-08 2019-01-15 Chronos Tech Llc Systems and methods for the design and implementation of an input and output ports for circuit design
US10452124B2 (en) 2016-09-12 2019-10-22 Netspeed Systems, Inc. Systems and methods for facilitating low power on a network-on-chip
US20180159786A1 (en) 2016-12-02 2018-06-07 Netspeed Systems, Inc. Interface virtualization and fast path for network on chip
US10237198B2 (en) 2016-12-06 2019-03-19 Hewlett Packard Enterprise Development Lp Shared-credit arbitration circuit
US10452573B2 (en) 2016-12-06 2019-10-22 Hewlett Packard Enterprise Development Lp Scripted arbitration circuit
US10721185B2 (en) 2016-12-06 2020-07-21 Hewlett Packard Enterprise Development Lp Age-based arbitration circuit
US10944694B2 (en) 2016-12-06 2021-03-09 Hewlett Packard Enterprise Development Lp Predictive arbitration circuit
US10313269B2 (en) 2016-12-26 2019-06-04 Netspeed Systems, Inc. System and method for network on chip construction through machine learning
US10063496B2 (en) 2017-01-10 2018-08-28 Netspeed Systems Inc. Buffer sizing of a NoC through machine learning
US10084725B2 (en) 2017-01-11 2018-09-25 Netspeed Systems, Inc. Extracting features from a NoC for machine learning construction
US10469337B2 (en) 2017-02-01 2019-11-05 Netspeed Systems, Inc. Cost management against requirements for the generation of a NoC
US10298485B2 (en) 2017-02-06 2019-05-21 Netspeed Systems, Inc. Systems and methods for NoC construction
JP2019016063A (ja) * 2017-07-04 2019-01-31 株式会社リコー データ転送装置及びデータ転送方法
US10547514B2 (en) 2018-02-22 2020-01-28 Netspeed Systems, Inc. Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation
US10983910B2 (en) 2018-02-22 2021-04-20 Netspeed Systems, Inc. Bandwidth weighting mechanism based network-on-chip (NoC) configuration
US10896476B2 (en) 2018-02-22 2021-01-19 Netspeed Systems, Inc. Repository of integration description of hardware intellectual property for NoC construction and SoC integration
US11144457B2 (en) 2018-02-22 2021-10-12 Netspeed Systems, Inc. Enhanced page locality in network-on-chip (NoC) architectures
US11176302B2 (en) 2018-02-23 2021-11-16 Netspeed Systems, Inc. System on chip (SoC) builder
US11023377B2 (en) 2018-02-23 2021-06-01 Netspeed Systems, Inc. Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA)
JP6688334B2 (ja) * 2018-03-27 2020-04-28 矢崎総業株式会社 ネットワークノード、ネットワーク通信システム及びネットワーク通信方法
US10715437B2 (en) * 2018-07-27 2020-07-14 Intel Corporation Deadline driven packet prioritization for IP networks
EP3857559A1 (en) 2018-09-25 2021-08-04 Koninklijke Philips N.V. Controlling light exposure for circadian phase management
US10693811B2 (en) 2018-09-28 2020-06-23 Hewlett Packard Enterprise Development Lp Age class based arbitration
CN110927349B (zh) * 2019-12-27 2022-04-01 中央储备粮三明直属库有限公司 一种基于Lora的粮仓气体监测方法
US11748289B2 (en) * 2021-11-16 2023-09-05 Xilinx, Inc. Protocol aware bridge circuit for low latency communication among integrated circuits

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004248105A (ja) * 2003-02-14 2004-09-02 Ntt Docomo Inc 無線基地局、移動局、無線通信システム、及び無線通信方法
JP2007306623A (ja) * 2007-08-06 2007-11-22 Ntt Docomo Inc 無線基地局、移動局、無線通信システム、及び無線通信方法
JP2008131602A (ja) * 2006-11-24 2008-06-05 Kddi Corp パス選択装置およびパス選択方法、通信中継装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6570876B1 (en) * 1998-04-01 2003-05-27 Hitachi, Ltd. Packet switch and switching method for switching variable length packets
US6674720B1 (en) 1999-09-29 2004-01-06 Silicon Graphics, Inc. Age-based network arbitration system and method
WO2006089560A1 (en) 2005-02-28 2006-08-31 Teklatech A/S A method of and a system for controlling access to a shared resource
CN101129033B (zh) * 2005-02-28 2012-10-10 特克拉科技公司 控制对共享资源的访问的方法和系统
FR2883117B1 (fr) * 2005-03-08 2007-04-27 Commissariat Energie Atomique Architecture de noeud de communication dans un systeme de reseau sur puce globalement asynchrone.
US8412867B2 (en) 2007-06-08 2013-04-02 Nec Corporation Semiconductor integrated circuit and filter and informational delivery method using same
WO2009133918A1 (ja) * 2008-04-30 2009-11-05 日本電気株式会社 ルータ、そのルータを有する情報処理装置及びパケットのルーティング方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004248105A (ja) * 2003-02-14 2004-09-02 Ntt Docomo Inc 無線基地局、移動局、無線通信システム、及び無線通信方法
JP2008131602A (ja) * 2006-11-24 2008-06-05 Kddi Corp パス選択装置およびパス選択方法、通信中継装置
JP2007306623A (ja) * 2007-08-06 2007-11-22 Ntt Docomo Inc 無線基地局、移動局、無線通信システム、及び無線通信方法

Also Published As

Publication number Publication date
CN103348640A (zh) 2013-10-09
JPWO2013014851A1 (ja) 2015-02-23
WO2013014851A1 (ja) 2013-01-31
US9094231B2 (en) 2015-07-28
CN103348640B (zh) 2016-11-23
US20130250792A1 (en) 2013-09-26

Similar Documents

Publication Publication Date Title
JP5603481B2 (ja) 中継装置
JP4880802B1 (ja) 中継装置
JP5036920B1 (ja) 中継装置、中継装置の制御方法、およびプログラム
US11188388B2 (en) Concurrent program execution optimization
JP5320512B2 (ja) 中継器、中継器の制御方法、およびプログラム
JP6060316B2 (ja) NoCを構成するための方法及びシステム並びにコンピュータ可読記憶媒体
US8155134B2 (en) System-on-chip communication manager
US9606945B2 (en) Access controller, router, access controlling method, and computer program
JP5552196B2 (ja) 中継装置、中継装置の制御方法、およびコンピュータプログラム
JP2004200905A (ja) ルータ装置とその出力ポート回路及びその制御方法
JP5834178B2 (ja) 半導体回路のバスシステム
JPWO2010104033A1 (ja) プロセッサ間通信システム及び通信方法、ネットワークスイッチ、及び並列計算システム
WO2022147762A1 (zh) 一种数据包排序方法及装置
JP2004140538A (ja) 大容量化と低遅延化に対応したアービタおよびそれを用いたルータ
CN117857466A (zh) 网络流量的确定性编排处理方法、装置、设备及存储介质
ATRI et al. Design of a Scalable 2D Mesh-Torus Router for Network on Chip

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: 20140729

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140821

R151 Written notification of patent or utility model registration

Ref document number: 5603481

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151