本発明の実施形態の説明に先立って、まず本発明による中継装置の動作原理を説明する。
本発明の中継装置は、入力されたデータを格納するための複数のデータ格納部と、これらのデータ格納部に格納されたデータの送信を調停するアービターとを備えている。中継装置に入力されたデータは、複数のデータ格納部のいずれかに一旦格納される。アービターは、これらのデータ格納部の少なくとも1つに格納された、伝送経路の少なくとも一部が共通するデータに関するデータ格納部の利用状況と、当該データに関する隣接中継装置におけるデータ格納部の利用状況とを比較する。そして、比較結果に基づいて、当該データを出力するか否かを決定する。ここで、「伝送経路の少なくとも一部が共通するデータ」とは、伝送経路上の共通する点を通過するデータの集合を意味するものとする。例えば、同一の宛先に到達する一群のデータ、同一の送信元から送信された一群のデータ、同一の他の中継装置を経由する一群のデータ、自中継装置における同一の入力ポートまたは出力ポートを経由して転送される一群のデータ等を指す。
一例として、データに宛先アドレスや送信元アドレス等のアドレス属性が規定されている場合、アービターは、各データ格納部に格納されたデータについて、そのデータと共通のアドレス属性を有するデータがデータ格納部をどの程度利用しているかを表す情報を、隣接する中継装置との間で比較する。そして、その比較結果に基づいて、当該データを出力するか否かを決定する。例えば、アービターは、隣接中継装置から、宛先アドレスごとの複数のデータ格納部の利用状況を示す情報を収集し、その情報に基づいてデータ格納部の割当を隣接中継装置と協調して行う。以下、本発明の中継装置の動作の例を説明する。
図1は、図35と同様の構成を備える伝送システムにおける本発明の中継装置の動作の概要を例示するための図である。図1に示す例では、各中継装置内の個々の仮想チャネルが本発明におけるデータ格納部として機能する。伝送経路上の各中継装置R0、R1、R2、R3は、バスマスタB0からメモリM0へと向かうトラヒックT0の伝送中、トラヒックT0に含まれるパケットが、送信先の隣接中継装置で利用する仮想チャネルの数を示す情報(隣接チャネル利用情報)を取得する。そして、トラヒックT0に関して、自中継装置における仮想チャネルの利用数から送信先の隣接中継装置における仮想チャネルの利用数を引いた差分が予め設定された閾値(例えば0)以上である場合には、各中継装置は、次の中継装置における仮想チャネルを新たに確保し、パケットを次の中継装置へ送信する。一方、上記差分が予め設定された閾値よりも小さい場合には、新たな仮想チャネルを確保しない。このため、仮想チャネルを確保しすぎることを回避できる。なお、差分ではなく、自中継装置における仮想チャネルの利用数と次の隣接中継装置における仮想チャネルの利用数との比率に基づいてパケットを送信するか否かを決定してもよい。
図1(a)に示すように、各中継装置R0、R1、R2、R3において、トラヒックT0が2個の仮想チャネルを利用している状況を想定する。このとき、図1(b)に示すように、バスマスタB1からメモリM1に向かうトラヒックT1の送信要求が発生した場合、伝送経路上の各中継装置に仮想チャネルの空きがあるため、各中継装置は、トラヒックT1のために仮想チャネルを確保することができる。その結果、バスマスタB1は、トラヒックT1をメモリM1まですぐに送信することが可能となる。
このように、本発明によれば、複数の中継装置を介してトラヒックを伝送する際に、個々のトラヒックが利用する仮想チャネルを伝送経路上で均一に近づけ、特定の中継装置における仮想チャネルの不足を回避することができる。これにより、急なトラヒック送信の要求が発生しても、すぐにトラヒックを送信することが可能となり、NoC全体の伝送性能を向上できる。
一般的な並列計算機やATMなどのシステムで利用される中継装置においては、NoCに比べて仮想チャネルの数およびサイズについての制約が少ないため、伝送経路上で仮想チャネルが不足するという問題については考慮されてこなかった。これらのシステムでは、一般に、中継装置自身が格納するパケットを、より多く次の中継装置や受信ノードに届けることに重点が置かれていた。
これに対し、本発明が主に対象とするNoCでは、仮想チャネルの数やサイズを増やすことは困難である。そこで、本発明では、各中継装置において個々のトラヒックが利用する仮想チャネルの数が均一になるように、伝送経路上の隣接する中継装置間で、利用する仮想チャネルの割当を連携して行う。これにより、一部のトラヒックによる仮想チャネルの利用の集中を回避し、仮想チャネルの不足を抑制することができる。
なお、図1では、トラヒックT0とトラヒックT1との区別を分かりやすくするために、中継装置R0、R1、R2、R3において、トラヒックT0については図の上から順に仮想チャネルを割り当て、トラヒックT1については図の下から順に仮想チャネルを割当てている。図1は、仮想チャネルの割当て方の一例であり、パケット毎に区別して仮想チャネルが割り当てられる方式であれば、図1の方式に限定されるものではない。また、図1は、2つのバスマスタから2つのメモリへ4つの中継装置を介してトラヒックを伝送するシステムを示しているが、本発明の利用用途はこのようなシステムに限定されるものではない。
また、バスマスタを送信側のノード、メモリを受信側のノードとして説明したが、本発明はこの組合せに限定されるものではない。例えばメモリからデータを読み出す場合のように、メモリが送信側のノード、バスマスタが受信側のノードであってもよい。また、バスマスタと送受信する相手のノードは、メモリに限定されず、例えば外付けHDDのような外部記憶装置と接続するための入出力ポート(I/O)であってもよい。そのような入出力ポートの例として、USBポートが挙げられる。本発明は、送信ノードから受信ノードへ複数の中継装置を介してデータが伝送されるシステムであればどのようなシステムにも利用され得る。
図1では、各中継装置は、送信先の隣接中継装置から隣接チャネル利用情報を取得するが、送信元の隣接中継装置から当該情報を取得してもよいし、両方の隣接中継装置から当該情報を取得してもよい。また、隣接チャネル利用情報に基づく仮想チャネルの割り当て方は上記の例に限らず、後述するように様々な方法が適用できる。
以下、本発明の実施形態を説明する。以下の説明において、重複する構成要素には同一の参照符号を付している。
(実施形態1)
図2は、本発明の第1の実施形態による中継装置を用いた分散型のデータ伝送システムの構成例を示す図である。図示されるシステムは、送信ノードとして複数のバスマスタ(BM)101を有し、受信ノードとして複数のメモリ105を有している。複数のバスマスタ101および複数のメモリ105は、複数の中継装置800を介してバスで多段に接続されている。このように、図2に示す伝送システムは、多段接続網(Multistage Interconnection Network:MIN)を構成している。本実施形態では、個々のバスマスタ101が本発明における第1ノードとして機能し、個々のメモリ105が本発明における第2ノードとして機能する。
本実施形態におけるバスマスタ101は、例えばCPU(Central Processor Unit)やDSP(Digital Signal Processor)などの、バスを用いてデータの転送制御を行うことができるデバイスである。メモリ105は、例えばDRAMやSRAM等の半導体メモリである。中継装置800は、例えば半導体回路で構成され、複数のバスマスタ101および複数のメモリ105の間で伝送されるデータを中継する機能を備えている。
図2に示す構成例では、8個のバスマスタ(BM0〜BM7)と、12個の中継装置(R0〜R11)と、8個のメモリ(メモリ0〜7)とがバスで接続されている。12個の中継装置は、3つのグループに分類される。第1のグループ(第1G)は、8個のバスマスタ101に接続される4個の中継装置(R0、R1、R2、R3)を含んでいる。第2のグループ(第2G)は、第1のグループの後段に接続される4個の中継装置(R4、R5、R6、R7)を含んでいる。第3のグループは、第2のグループの後段に接続され、8個のメモリ105に接続される4個の中継装置(R8、R9、R10、R11)を含んでいる。
図2に示す多段接続網を構成する各中継装置は、2入力2出力のクロスバスイッチを備えている。各中継装置は、図2の吹き出しに示すように、クロスバスイッチを切り替えることによって入力と出力の組合せを変更することができる。このため、トラヒックの流れを2つの伝送経路(伝送経路1、2)の間で切り替えることができる。出力先の伝送経路が異なっていれば、中継装置は2つのトラヒックを各伝送経路に同時に出力することが可能である。このような多段接続網によれば、各中継装置内のクロスバスイッチの切り替えによって、全バスマスタと全メモリ間で、必ず1つ以上の伝送経路を構築することができる。
一般に、クロスバスイッチによってN個のバスマスタとM個のメモリの全てを接続するためには、N×M個のスイッチが必要となる。ここでスイッチとは、ある方向に並行する複数の通信路と他の方向に並行する複数の通信路との交点に設けられ、ON/OFFの切り替えによって通信路を動的に構築できるものをいう。一般に、必要なスイッチの数は、バスマスタやメモリの数が増えるにつれて急激に増加する。これに対し、多段接続網では、入出力数の少ないクロスバスイッチを階層的に接続することにより、少ないスイッチでバスマスタとメモリとの間の接続を切り替えることができる。
バスマスタ101からメモリ105へのデータ伝送は、パケット交換方式により行われる。各バスマスタ101は、送信すべきパケットをフリットと呼ばれる最小単位に分割してから隣接の中継装置に送信する。1つのパケットを分割した複数のフリットのうち、最初に送信されるフリットは、ヘッダフリットと呼ばれる。ヘッダフリットには、パケットの先頭であることを示すフラグ情報や、パケットの送信先のアドレス情報などが記述されている。本実施形態におけるパケットおよびフリットのデータ構造については後述する。
図2に示す構成において、例えば、BM2からメモリ5へとデータが伝送される場合、BM2は、メモリ5のアドレス(101)が送信先アドレスとして記述されたパケットを複数のフリットに分割し、中継装置R1に送信する。分割された複数のフリットは、中継装置R1、R7、R10を経由してメモリ5へと伝送される。メモリ5は、中継装置R10から複数のフリットを受け取り、これらのフリットからパケットを再構築する。以上の処理により、BM2からメモリ5へとデータが伝送される。パケットおよびフリットのデータ構造については後述する。
なお、本実施形態における中継装置は、図2に示すような多段接続網を構成する集積回路に限らず、他のトポロジーを有する集積回路であっても同様に適用することが可能である。また、本実施形態では、バスマスタからメモリへのデータ伝送は、パケット交換方式により複数の中継装置を介して行われるものとして説明するが、データ伝送方式は他の方式であってもよい。本実施形態の中継装置は、バスマスタからメモリへのデータ伝送に限らず、複数のノード間でデータを伝送するシステムであれば、同様に適用することができる。
図2に示す構成では、第1および第3グループの各中継装置(R0〜R3、R8〜R11)は、第2グループの各中継装置(R4〜R7)と同様、1つの機能ブロックとして描かれている。しかし、実際には、第1グループの各中継装置とバスマスタとの間、および第3グループの各中継装置とメモリとの間には、NIC(Network Interface Controller)等の他の機能部が接続され得る。
図3は、本実施形態におけるデータ伝送システムの一部を示すブロック図である。図3では、簡単のため、1本の伝送経路上に接続された1組のバスマスタ101、第1グループの中継装置800a、第2グループの中継装置800b、第3グループの中継装置800c、およびメモリ105のみを示している。
図3(a)に示すように、バスマスタ101と第1グループの中継装置800aとの間には、NIC820aが接続される。NIC820aは、バスプロトコルの変換処理や、バスマスタ101が要求するメモリサイズを確保できるメモリ105を複数のメモリの中から選択し、選択したメモリ105をバスマスタ101に通知する機能を備えている。
一方、第3グループの中継装置800cとメモリ105との間には、NIC820cおよびメモリコントローラ830が接続される。NIC820cは、バスプロトコル変換処理や、データ伝送における往路と復路との対応関係付けを行い、往路に対する復路の応答をNIC820aへ返信する。ここで、往路とはバスマスタ101からメモリ105への方向の伝送経路を意味し、復路とはメモリ105からバスマスタ101への方向の伝送経路を意味する。メモリコントローラ830は、NIC820cに接続され、メモリ105へのアクセス順序の制御などを行う。
本明細書では、表記を簡略化するために、図3(b)に示すように、NIC820a、820c、およびメモリコントローラ830の表記を省略する。すなわち、以下の説明においては、バスマスタ101などの送信ノードに直接接続された中継装置は、NICを含んでいるものとする。同様に、メモリ105などの受信ノードに直接接続された中継装置は、NICおよびメモリコントローラを含んでいるものとする。
次に、本実施形態におけるパケットおよびフリットの構造を説明する。
図4は、パケット700の伝送フォーマットの一例と、パケット700を複数のフリットに分割した例とを示している。パケット700は、ヘッダフィールド701、データフィールド702、および制御コードフィールド703を有している。
ヘッダフィールド701には、例えば、パケットの先頭であることを示すフラグ情報、送信先のアドレス、送信元のアドレスが記述される。ヘッダフィールド701には、上記以外の情報が記述されていてもよい。ヘッダフィールド701のデータのうち、送信先のアドレスおよび送信元のアドレスに基づいて、パケット700の中継処理と、受信側での受信処理とが行われる。
データフィールド702には、例えば、映像データや音声データなどが記述される。制御コードフィールド703には、予め定められた終了コードが記述される。終了コードによってパケット700が終了することが判別できる。制御コードフィールド703には、終了コード以外の情報が格納されていてもよい。
バスマスタ101は、前述のように、パケット700を、フリットと呼ばれる小さなパケット単位に分解して伝送する。1フリットのサイズは、バスを使って1サイクルで伝送可能なサイズであり、バス幅に応じて決定される。パケット700は、ヘッダフリット704、複数のデータフリット705、およびテイルフリット705に分割される。ヘッダフリット704には、上記のヘッダフィールド701に格納されたフラグ情報や送信先アドレス情報などが含まれる。
ヘッダフリット704に続く各フリット(データフリット705、テイルフリット706)には、送信先を特定するアドレス情報は格納されていない。その理由は、ヘッダフリット704に続く各フリットは、ヘッダフリット704と同じ宛先に送られるためである。ヘッダフリット704によって宛先が決まり、そのトラヒックのフリットを出力する出力バッファが決まると、後に続くフリットは、ヘッダフリット704と同じ出力バッファを利用してヘッダフリット704が示す宛先に伝送される。
テイルフリット706には、そのフリットがパケットを構成する最後のフリットであることを示すフラグ情報(制御コードフィールド703に格納されている終了コード)が付与されている。また、ヘッダフリット704とテイルフリット706以外の複数のデータフリット705は、主にデータを伝送するフリットであり、パケット700のデータフィールド702に対応する。
受信側のメモリ105は、テイルフリット706に記述されたフラグ情報(終了コード)を検出すると、その終了コードに基づき、伝送された複数のフリットをパケットへ再構築する。
1パケットのサイズは、例えば128バイトであり、1フリットのサイズは、例えば32ビットまたは64ビットに設定される。ただし、1パケットのサイズおよび1フリットのサイズはアプリケーションによって異なり得るため、上記のサイズは一例に過ぎない。1フリットの長さは、送信先のアドレスや送信元のアドレスなどの制御データを記述できる長さを基準としてもよい。
各中継装置は、送られてきたフリットを蓄えるための入力バッファを備えている。フリットは、一旦入力バッファに蓄えられた後、クロスバスイッチの切り替えによって宛先のメモリへと続く中継装置または宛先のメモリへ送信される。なお、図2の構成例では、バスマスタ101からメモリ105にフリットが送信されることを想定しているが、これは一例である。図2とは異なる構成を採用した場合、フリットの宛先はメモリに限られず、たとえば他のバスマスタや、周辺機器と接続するための入出力インターフェイス等であり得る。
次に、本実施形態による中継装置の構成を説明する。
図5は、本実施形態における中継装置の構成を示すブロック図である。以下では、第2グループの中継装置800bの構成を例に説明するが、第1および第3グループの中継装置についても送信先および受信元が異なるだけで基本的な構成は同様である。以下、第1グループの中継装置800aを前段の中継装置と呼び、第3グループの中継装置800cを後段の中継装置と呼ぶことがある。また、第1および第3グループの中継装置を、隣接中継装置と呼ぶことがある。中継装置800bは、前段の中継装置800aから後段の中継装置800cへの経路を決定し、トラヒックを中継する。
中継装置800bは、入力ポート801と、入力バッファ802と、クロスバスイッチ803と、出力バッファ804と、出力ポート805と、アービター850とを備えている。アービター850は、仮想チャネル情報管理部806、出力ポート選択部807、チャネル利用数測定部808、チャネル利用情報通信部809、隣接チャネル利用情報管理部810、仮想チャネル利用数比較部811、出力チャネル選択部812、仮想チャネル選択部813、スイッチ切替部814を有している。アービター850は、後述する動作を実行可能に構成された論理回路によって構成され得る。入力バッファ802および出力バッファ804は、例えばSRAMまたはレジスタなどの一時記憶領域である。クロスバスイッチ803は、公知のスイッチ回路である。
以下、各構成要素の機能を説明する。
入力ポート801は、バスを介してパケットを前段の隣接中継装置800aから受信するインターフェイスである。図5の構成例では2つの入力ポート0、1が設けられているが、入力ポートの数は2つに限られない。本実施形態では、入力ポート0、1には、互いに異なる隣接中継装置800aが接続される。
出力ポート805は、バスを介してパケットを後段の隣接中継装置800cに送信するインターフェイスである。図5の構成例では、2つの出力ポート0、1が設けられているが、出力ポートの数は2つに限られない。本実施形態では、出力ポート0、1には、互いに異なる隣接中継装置800cが接続される。
入力バッファ802は、隣接中継装置800a(またはバスマスタ101)から送られてきたフリットを蓄える。入力バッファ802を構成する一時バッファは、中継装置800bの入力ポートごとに1つ設けられていてもよいし、異なる宛先のパケット毎に個別のチャネルを利用して送信スケジュール制御ができるように、入力ポートごとに複数の仮想チャネル817が設けられていてもよい。本実施形態では、図5に示すように、入力バッファ802ごとに仮想チャネル817が4個ずつ用意されている。
クロスバスイッチ803は、中継装置800bの入力ポート801と出力ポート805との間の接続を切り替えるスイッチである。図示される構成の場合、各入力ポートが受信したフリットは、クロスバスイッチ803によって出力ポート0、1のいずれかから出力される。
出力バッファ804は、出力ポート805を介して隣接する中継装置800cへフリットを送信する際に利用されるバッファである。出力バッファ804には、複数の出力チャネル818が設けられている。出力チャネル818は、隣接中継装置800cの入力バッファ内の仮想チャネルと同じ数だけ設けられており、それらの仮想チャネルと1対1の対応が決められている。
中継装置800bから送信されたフリットは、送信に利用した出力チャネル818に対応する隣接中継装置800c内の仮想チャネルに格納される。すなわち、中継装置800bは、出力チャネル818を選択することにより、送信するフリットが次に格納される隣接中継装置800c内の仮想チャネルを指定できる。
なお、本実施形態では、入力バッファ802および出力バッファ804は、複数の仮想回線からなるチャネルで構成されているが、各バッファは、複数の物理チャネルで構成されていてもよい。
仮想チャネル情報管理部806は、各仮想チャネル817に格納されるフリットの情報を管理する。仮想チャネル情報管理部806が管理する情報の詳細については、図6を用いて後述する。
出力ポート選択部807は、仮想チャネル817に新しくヘッダフリットが格納されると、ヘッダフリットに記述された宛先情報(送信先アドレス)に基づいて、次にフリットを受け渡す中継装置800cを選択する。中継装置800cの選択は、出力ポート0、1のいずれかを選択することによって行われる。
チャネル利用数測定部808は、各入力バッファ802において、トラヒック毎の仮想チャネルの利用数を測定する。ここで「トラヒック」とは、宛先のアドレスが共通するフリットの集合を意味するものとする。チャネル利用数測定部808は、仮想チャネル情報管理部806が管理する情報に基づいて、宛先のアドレスが共通するフリットが格納されている仮想チャネル817の数を測定する。
チャネル利用情報通信部809は、隣接する中継装置800a、800cとの間で、各トラヒックが利用する仮想チャネルの数を示す情報(チャネル利用情報)の通信を行う。具体的には、チャネル利用情報通信部809は、チャネル利用数測定部808によって測定されたチャネル利用情報を隣接中継装置800a、800cに送信するとともに、後段の隣接中継装置800a、800cから各装置のチャネル利用情報を受信する。これにより、各中継装置は、隣接する中継装置における仮想チャネルの利用状況を把握することができる。
隣接チャネル利用情報管理部810は、チャネル利用情報通信部809を介して、隣接する中継装置800a、800cから取得した仮想チャネル情報を記録する。なお、チャネル利用情報管理部810で管理される情報の詳細については、図6を用いて後述する。
仮想チャネル利用数比較部811は、自中継装置800bで各トラヒックが利用している仮想チャネルの数と、隣接中継装置800a、800cで各トラヒックが利用している仮想チャネルの数とを比較する。これにより、伝送経路上の各中継装置におけるトラヒックごとの仮想チャネルの利用数の偏りの大きさを定量的に把握することが可能となる。
出力チャネル選択部812は、仮想チャネル利用数比較部811で行われた定量的な比較の結果に基づき、仮想チャネル817に対する出力チャネル818の割り当てを決定する。出力チャネル選択部812による処理の詳細は、図15から図17を用いて後述する。
仮想チャネル選択部813は、入力バッファ802ごとに複数の仮想チャネル817の中から、フリットを送信する仮想チャネル817の候補を1つ選択する。候補の選択の仕方については後述する。
スイッチ切替部814は、仮想チャネル選択部813によって入力バッファ802ごとに1つずつ選択された仮想チャネル817の候補と、出力ポート805との排他的な組合せを決定し、その結果に基づきクロスバスイッチ803を切り替える。
次に、本実施形態における仮想チャネル情報の内容を説明する。
図6は、仮想チャネル情報管理部806に記録される仮想チャネル情報901の内容の例を示している。仮想チャネル情報901は、各仮想チャネル817を区別するために、入力ポート801を識別するための入力ポート番号と、仮想チャネル817を識別するための仮想チャネル番号とを含んでいる。いずれかの仮想チャネル817にフリットが格納されると、そのフリットの宛先を特定するための宛先アドレス情報、フリットを宛先まで送信するために利用される出力ポート805の番号、および利用される出力チャネル818の番号が記録される。
例えば、中継装置800bが図5に示す構成を備えている場合、中継装置800bは、入力ポートを2つ、仮想チャネルを入力ポートごとに4個有しているため、図6に示すように8個の仮想チャネルの情報が管理される。図6に示す仮想チャネル情報は、入力ポート0の仮想チャネル1、2、および入力ポート1の仮想チャネル0〜2にフリットが格納されている状況を示している。この例では、入力ポート0の仮想チャネル1および出力ポート1の仮想チャネル1については出力チャネルが未設定の状態である。仮想チャネルが利用されていない状態(図6では入力ポート0の仮想チャネル0、3、および入力ポート1の仮想チャネル3)では、宛先アドレスは未使用の状態、出力ポート番号と出力チャネル番号は未設定の状態となる。
仮想チャネル情報901における宛先アドレスは、仮想チャネル817にヘッダフリット704が届いた際に、ヘッダフリットに記述された送信先のアドレス情報が反映される。また、終了コードを含むテイルフリット703が仮想チャネル817から送信されると、当該仮想チャネルにおける宛先アドレス、出力ポート番号、出力チャネル番号の情報は初期化される。
次に、隣接チャネル利用情報の内容を説明する。
図7は、隣接チャネル利用情報管理部810に記録される隣接チャネル利用情報1001の内容を示している。隣接チャネル利用情報1001として、自中継装置と隣接中継装置とを接続している入力ポートまたは出力ポートの識別番号(接続ポート番号)と、接続ポート番号によって特定される隣接中継装置で利用されている仮想チャネルに格納されたフリットの宛先アドレスと、宛先アドレスごとの仮想チャネルの利用数とが記録される。なお、接続ポート番号の代わりに、隣接する中継装置を区別するための識別番号が記録されていてもよい。図5に示す中継装置800bは、2つの入力ポート0、1と、2つの出力ポート0、1とを介して4台の中継装置と隣接するため、図7に示すように、4つの隣接チャネル利用情報が管理される。
次に、図8から図14を参照しながら、中継装置800bの動作の概要を説明する。
図8は、中継装置800bの処理の流れを示すフローチャートである。まず、ステップS1101において、チャネル利用情報通信部809は、隣接する中継装置より、各々の仮想チャネルの利用状況に関する情報が届いたか否かを判断する。隣接チャネル利用情報が届いた場合には、ステップS1102に進み、隣接チャネル利用情報管理部810は、取得した情報を用いて隣接チャネル利用情報を更新する。隣接チャネル利用情報が届かなかった場合には、ステップS1102をスキップし、ステップS1103に進む。
中継装置800bは、入力ポート801を介して隣接する中継装置800aまたは送信ノード(バスマスタ101)から送信されるフリットの受信待ち状態となる。
このときの仮想チャネル817の状態を図9に示す。図9(a)は、中継装置800bが未だフリットを受信していない状態における入力ポート0に関する仮想チャネル情報901を示している。図9(b)は、このときの各バッファの様子を示している。以下、簡単のため、入力ポート0に関する仮想チャネル情報901のみを例示する。中継装置800bが起動した直後は、未だフリットが届いていないため、全ての仮想チャネルが未使用状態となる。
次に、図8に示すステップS1103において、入力ポート801は、フリットを受信したかどうかを判断する。フリットを受信した場合には処理はステップS1104に進み、フリットを受信していない場合には処理はステップS1105に進む。
ステップS1104において、入力ポート801は、仮想チャネル817に受信したフリットを格納する。なお、格納先の仮想チャネル817は、事前に前段の隣接中継装置で決定されている。
続いて、ステップS1105において、仮想チャネル情報管理部806は、中継装置800の入力バッファ802にフリットが格納されているか否かを判定する。入力バッファ802にフリットが格納されている場合には処理はステップS1106に進み、そうでない場合にはステップS1101へ戻る。
ステップS1106において、仮想チャネル情報管理部806は、各仮想チャネル817の先頭に格納されているフリットがヘッダフリットであるかどうかを判定する。先頭のフリットがヘッダフリットであった場合には処理はステップS1107に進み、ヘッダフリットではない場合にはステップS1112へ進む。
ステップS1107において、仮想チャネル情報管理部806は、仮想チャネル817の先頭に格納されたヘッダフリットに記録されている宛先のアドレスを仮想チャネル情報901に記録する。
このときの仮想チャネル817の状態を図10に示す。図10(a)は、中継装置800にヘッダフリット704が届き、仮想チャネル817に格納された直後の仮想チャネル情報901を示している。図10(b)は、入力ポート0で受信されたヘッダフリット704が、ステップS1104において、仮想チャネル0に格納されたときの各バッファの様子を示している。
ヘッダフリット704が仮想チャネルに届くと、ヘッダフリット704に記載されている宛先のアドレス(図10の例ではメモリ0のアドレス「000」)が仮想チャネル情報901に記録される。
続いて、図8に示すステップS1108において、チャネル利用数測定部808は、仮想チャネル情報管理部806を参照し、利用されている仮想チャネル817の数を宛先アドレスごとに測定する。そして、チャネル利用情報通信部809は、隣接する中継装置800a、800cに対し、チャネル利用数測定部808によって測定されたパケットの宛先ごとの仮想チャネル817の利用数を示す情報を通知する。例えば、図10に示す状態においては、宛先アドレス000へ向かうパケットによって仮想チャネル817が1つだけ利用されているため、その情報が隣接する中継装置800a、800cへ通知される。
続くステップS1109において、出力ポート選択部807は、仮想チャネル情報901を参照し、出力ポート805の番号が未設定の仮想チャネルに対し利用する出力ポート805を決定する。本実施形態では、出力ポート805は、各パケットの送信先アドレスに基づいて決定される。例えば、図2に示す多段接続網の構成においては、3桁の2進数で表されるアドレスが各メモリに割り当てられており、各パケットのヘッダフリットには、宛先のメモリに割り当てられたアドレスが付与されている。各中継装置の出力ポート選択部807は、ヘッダフリットに付与された3桁のアドレスのうち、右から中継装置の段数と同じ桁の数字を読み取る。そしてその値が0ならば出力ポート0側の中継装置へフリットを送り、値が1ならば出力ポート1側の中継装置へフリットを送るように経路を決定する。
例えば、図2に示す例では、バスマスタBM2から、メモリ5(アドレス:101)へデータを送る場合には、アドレスに記載された3桁の数字に基づいて、まず宛先のメモリから見て3段目(第1G)の中継装置R1ではメモリ5へのアドレス101の右から3桁目の値を参照し、その値が1であるため、出力ポート1側の中継装置R7へフリットを送信する。次に、中継装置R7では、メモリ5へのアドレス101の右から2桁目を参照し、その値が0であるため、出力ポート0側の中継装置R10へフリットを送信する。最後に、中継装置R10は、メモリ5へのアドレスの右から1桁目の値を参照し、その値が1であるため、出力ポート1側のメモリ5へフリットが送信する。これにより、バスマスタBM5からメモリ2への伝送経路が選択され、フリットが目的の宛先へと伝送される。
なお、出力ポート選択部807による出力ポートの選択方法は、分散バスのトポロジーに応じて、目的地までパケットが送られる経路を選択できれば、上記以外の方法であってもよい。
図11(a)は、中継装置800bにおいて仮想チャネル817の出力ポート805が設定された後の仮想チャネル情報901の内容を示している。図11(b)は中継装置800bの各仮想チャネル817の様子を示している。図11(a)では、入力ポート0の仮想チャネル0には、宛先のアドレスが000のメモリ0へ送信されるフリットが格納されているため、出力ポート選択部807は、フリットをメモリ0へと向う出力ポート0から送信するために、出力ポート番号の値を0に設定する。
次に、図8に示すステップS1110において、仮想チャネル利用数比較部811は、隣接チャネル利用情報管理部810で管理されている隣接チャネル利用情報1001と、チャネル利用数測定部808で測定された自中継装置の仮想チャネル利用数を示す情報とを参照する。そして、自身の仮想チャネルの利用数と、隣接中継装置800a、800cの仮想チャネルの利用数とを、パケットの宛先毎に区別して比較し、それらの差分を求める。
続いて、ステップS1111において、出力チャネル選択部812は、仮想チャネル利用数比較部811による比較結果に基づいて、出力チャネル818が未設定の仮想チャネル817に対して、仮想チャネルの割当を決定する。
図12(a)は、中継装置800bにおいて、出力チャネル818が決定された後の仮想チャネル情報901を示している。図12(b)は、そのときの各バッファの様子を示している。図12(b)に示すように、出力ポート0に対応する出力チャネル818はいずれも未使用である。本実施形態では、入力ポート0の仮想チャネル0に格納されたフリットに出力チャネル0を利用させるために、図12(a)に示すように、出力チャネル番号に0が設定される。なお、出力チャネル818の割り当ての詳細については、図15、図16を用いて後述する。
次に、図8に示すステップS1112において、仮想チャネル選択部813は、仮想チャネル情報901を参照し、入力ポート801ごとに出力チャネル818が設定済みの仮想チャネル817を1つ選択する。また、スイッチ切替部814は、仮想チャネル情報901を参照し、仮想チャネル選択部813によって入力ポート801ごとに選択された仮想チャネルの中に、同一の出力ポート805を利用するものがないかを判定する。同一の出力ポート805を利用するものがある場合(競合が発生した場合)、競合している複数の仮想チャネル817の中から、いずれか1つを選択する。このようにして、各入力ポートの1つの仮想チャネル817と出力ポート805との間で排他的な接続が決定される。その結果に基づき、スイッチ切替部814は、クロスバスイッチ803の接続を切り替える。
クロスバスイッチ803の切替が完了すると、ステップS1113において、仮想チャネル選択部813により選択された仮想チャネル817は、仮想チャネル情報901に記録された出力ポート805の出力チャネル818を利用してフリットを送信する。
図13(a)は、中継装置800bがフリットを送信している状態における仮想チャネル情報901を示している。また、図13(b)は、そのときの各バッファの様子を示している。図13に示す例では、中継装置800b内でパケットが1種類しかないため、入力ポート0に対応する仮想チャネル0内のフリットが順番に、仮想チャネル情報901に記録されている出力ポート0に対応する出力チャネル0を通してメモリ0を宛先として送信される。なお、図13(b)では自中継装置とメモリとの間に存在する隣接中継装置の記載は省略している。
続いて、図8のステップS1114において、仮想チャネル817は、フリットを送信する際に、送信したフリットがパケットを構成する最後のフリット(テイルフリット)であるか否かを判定する。送信したフリットがテイルフリットであった場合には、処理はステップS1115に進み、そうでない場合にはステップS1101に戻る。ステップS1115において、仮想チャネル情報管理部806は、別のパケットがその仮想チャネルを利用できるように、当該仮想チャネルの情報を初期化し、当該仮想チャネルを解放する。
図14(a)は、テイルフリット706が送信された後の仮想チャネル情報901を示している。また、図14(b)は、そのときの各チャネルの様子を示している。図14では、テイルフリット706が送信されたことにより、入力ポート0に対応する仮想チャネル0内のフリットが全て送信され、未使用状態となる。よって、仮想チャネル情報管理部806は、仮想チャネル情報901における仮想チャネル0に関する情報を初期化する。
続いて、図8に示すステップS1116において、チャネル利用数測定部808は、仮想チャネル情報管理部806における仮想チャネル情報901を参照し、利用されている仮想チャネル817の数を宛先アドレスごとに測定する。そして、チャネル利用情報通信部809は、隣接する中継装置800a、800bに対し、チャネル利用数測定部808によって測定されたパケットの宛先ごとの仮想チャネル817の利用数を示す情報を通知する。これにより、仮想チャネルの初期化を隣接中継装置800a、800cに通知することができる。
以上のステップS1101からステップS1116の処理を繰り返すことにより、各中継装置800は、送られてきたパケットを宛先の受信ノードに向けて送信することができる。
以下、図15、図16を参照しながら、ステップS1111における処理、すなわちヘッダフリット704が仮想チャネル817に格納された場合に仮想チャネル817に出力チャネル818を割り当てる動作を説明する。
図15は、出力チャネル選択部812により、仮想チャネル817に出力チャネル818を割り当てる処理の流れを示すフローチャートである。また、図16は、本実施形態における各中継装置の、ある瞬間における仮想チャネルの利用状況の例を示す図である。図16(a)は、2個のバスマスタBM0、BM1が、3台の中継装置R0、R4、R8を介して、2個のメモリM0、M1へとトラヒックを送信している時の、ある時刻における仮想チャネルの利用の様子を示している。なお、図16(a)では、送受信に関与しない他のバスマスタ、中継装置、メモリの表示は省略している。図16(b)は、このときの中継装置R0の仮想チャネル情報を示している。
図16(a)に示す中継装置R0、R4、R8は、いずれも4つの仮想チャネルを持つ。なお、説明を簡略化するために、ここでは仮想チャネルを入力ポート毎に区別せずに説明する。図16(a)では、図1、33と同様、バスマスタBM0からメモリM0へと送信されるトラヒックをT0と表し、バスマスタBM1からメモリM1へと送信されるトラヒックをT1と表している。トラヒックT0とトラヒックT1との区別を分かりやすくするために、各中継装置R0、R4、R8において、トラヒックT0については図の上から順に仮想チャネルを割り当て、トラヒックT1については図の下から順に仮想チャネルを割当てるものとする。なお、仮想チャネルの割り当て方は、パケット毎に区別して仮想チャネルが割り当てられる方法であればどのような方法でもよく、図16(a)に示す割り当て方に限定されるものではない。
図15に示すステップS1801において、出力チャネル選択部812は、仮想チャネル情報管理部806における仮想チャネル情報901を参照し、出力ポート805が設定済みで、出力チャネルが未設定の仮想チャネルが存在するか否かを判定する。出力ポート805が設定済みで、出力チャネル818が未設定の仮想チャネル817が存在する場合、処理はステップ1802へ進み、そうでなければステップ1801を繰り返す。
例えば、図16に示す中継装置R0は、仮想チャネルの0番と3番において出力ポート805が設定済みであるが、出力チャネル818が未設定であるため、処理はステップS1802へ進む。
ステップS1802において、出力チャネル選択部812は、仮想チャネル情報管理部806における仮想チャネル情報901と出力バッファ804とを参照し、いずれの仮想チャネル817にも利用されていない空き状態の出力チャネル818が存在するか否かを判定する。出力チャネル818に空きがあれば処理はステップS1803に進み、空きがなければステップS1802を繰り返す。
図16に示す例では、中継装置R4の仮想チャネルの0番、1番、3番がすでに利用されており、2番の仮想チャネルが利用されていない。本実施形態においては、中継装置R0の出力チャネル818の識別番号と中継装置R4の仮想チャネルの識別番号とが1対1に対応するため、中継装置R0の出力チャネル2もまた空き状態であることがわかる。このため、中継装置R0について、処理はステップS1803に進む。
ステップS1803において、出力チャネル選択部812は、仮想チャネル利用数比較部811によって求められた、自中継装置におけるトラヒックの宛先ごとの仮想チャネルの利用数と隣接中継装置におけるトラヒックの宛先ごとの仮想チャネルの利用数との差分の情報を参照する。そして、当該差分情報に基づき、出力ポート805が設定済みで、かつ出力チャネル818が未設定の仮想チャネル817に格納されたトラヒックの宛先ごとに、差分値の比較を行う。
図17は、図16(a)の中継装置R0、R4、R8ごとの、メモリM0宛のトラヒックおよびメモリM1宛のトラヒックが利用する仮想チャネル数、および送信先の中継装置との間の仮想チャネル利用数の差分を示す図である。図16(a)に示す状況では、中継装置R0において、メモリM0宛のトラヒックは仮想チャネルを1つ利用し、メモリM1宛のトラヒックは仮想チャネルを1つ利用している。中継装置R4では、メモリM0宛のトラヒックは仮想チャネルを2つ利用し、メモリM1宛のトラヒックは仮想チャネルを1つ利用している。中継装置R8では、メモリM0宛のトラヒックは仮想チャネルを1つ利用し、メモリM1宛のトラヒックは仮想チャネルを1つ利用している。このため、中継装置R0における仮想チャネルの利用数と送信先の中継装置R4における仮想チャネルの利用数との差分は、メモリM0宛のトラヒックについては「−1」、メモリM1宛のトラヒックについては「0」となる。また、中継装置R4における仮想チャネルの利用数と送信先の中継装置R8における仮想チャネルの利用数との差分は、メモリM0宛のトラヒックについては「1」、メモリM1宛のトラヒックについては「0」となる。
続いて、図15に示すステップS1804において、出力チャネル選択部812は、仮想チャネルの利用数の差分が0以上となるトラヒックが存在するか否かを判定する。すなわち、自中継装置における仮想チャネルの利用数の方が後段の隣接中継装置における仮想チャネルの利用数よりも多いか、または同数であるトラヒックが存在するか否かを判定する。そのようなトラヒックが存在する場合、処理はステップS1805に進む。そのようなトラヒックが存在しない場合、ステップS1804を繰り返す。
図16、17に示す例では、中継装置R0については、メモリM1宛てのトラヒックT0がΔR0≧0を満たしているため、ステップS1805に進む。また、中継装置R4については、メモリM0宛ておよびメモリM1宛のいずれのトラヒックもΔR4≧0を満たしているため、ステップS1805に進む。
続くステップS1805では、仮想チャネル選択部813は、仮想チャネルの利用数の差分値が0以上かつ最大となる宛先に向かうトラヒックのパケットを格納している仮想チャネルの中から、出力チャネルが未設定の仮想チャネルを1つ選択する。
図16、17に示す例では、中継装置R0においては、メモリM0に向かうトラヒックT0についての差分値はΔR0=−1であるため、トラヒックT0が利用している仮想チャネル0は選択されない。一方、メモリM1に向かうトラヒックT1についての差分値はΔR0=0であるため、トラヒックT1を格納する仮想チャネル3が選択される。
中継装置R4においては、トラヒックT0についての差分値はΔR4=1であり、トラヒックT1についての差分値はΔR4=0である。両者とも差分値が0以上であるため、両者のうち、差分値が相対的に大きいトラヒックT0が利用する仮想チャネル0、1のうち、出力チャネルが未設定のものが1つ選択される。
なお、本実施形態では、上記差分が0以上であるか否かによって判定が行われるが、判定の基準に用いる値は0である必要はなく、所定の閾値以上であるか否かによって判定を行うことができる。また、差分ではなく、自中継装置におけるチャネル利用数と次の中継装置におけるチャネル利用数との比率に基づいて同様の判定を行ってもよい。
例えば、次の中継装置における仮想チャネルの利用数を、自中継装置での仮想チャネルの利用数で割った値が1以上の場合に、出力チャネルの割当を行うようにしてもよい。
また、例えば中継装置内の回路の占有面積を削減するために、各中継装置内の仮想チャネルの数を2個に抑えた場合、次の中継装置の仮想チャネルが全て利用されることを回避するために、次の中継装置における仮想チャネルの利用数ではなく、仮想チャネルが利用されているか否か(すなわちチャネルが1個利用されているか否か)に基づいて判定を行なってもよい。この場合も、自中継装置において仮想チャネルを利用していることが前提であるため、自中継装置における仮想チャネルの利用状況と隣接中継装置における仮想チャネルの利用状況とを比較した結果に基づいてデータを出力するか否かが決定される。
続いて、図15に示すステップS1806において、出力チャネル選択部812は、選択された仮想チャネル817に対して、利用されていない出力チャネル818を割り当て、仮想チャネル情報901の内容を更新する。
以上のステップS1801〜S1806の処理により、仮想チャネルに対する出力チャネルの割り当てが完了する。その後、処理は、図8に示すステップS1112に進む。
以下、ステップS1112における入出力ポート間の排他接続の決定方法を説明する。
図18は、仮想チャネル817と各出力ポート805とを排他的に接続するクロスバスイッチ803の切り替え方法の手順を示している。
まず、ステップS2101において、仮想チャネル選択部813は、入力ポート801毎にフリットを送信する候補として、出力ポート805および出力チャネル818の両方が設定済みの仮想チャネル817を1つ選択する。なお、出力ポート805および出力チャネル818の両方が設定済みの仮想チャネル817が複数存在する場合に1つの仮想チャネル817を選択する方法は任意である。
続くステップS2102において、スイッチ切替部814は、仮想チャネル選択部813によって選択された仮想チャネル817間で、設定されている出力ポート805に競合が有るかどうかを判断する。例えば、入力ポート0に関連付けられた仮想チャネルと入力ポート1に関連付けられた仮想チャネルとが、ともに同じ出力ポートを使用する場合、競合が発生する。競合が発生している場合には処理はステップS2103に進み、競合がない場合にはステップS2104に進む。
競合が発生している場合、ステップS2103において、スイッチ切替部814は、仮想チャネル選択部813によって選択された、出力ポート818が競合している複数の仮想チャネル817の中から1つの仮想チャネルを選択する。なお、選択の方法はどのような方法であってもよい。例えば、ラウンドロビン方式に従って選択してもよいし、パケットに優先度情報や時間情報(パケットの締切時刻など)が記述されている場合は、その情報に基づいて選択してもよい。
次に、ステップS2104において、スイッチ切替部814は、ステップS2101〜S2103で選択された仮想チャネル817と設定された出力ポート805とを接続するようにクロスバスイッチ803を切り替え、仮想チャネル817内のフリットを送信する。
以上のように、本実施形態の中継装置によれば、パケットの宛先毎に区別して、伝送経路上の各中継装置における仮想チャネルの利用数を均一化するように、仮想チャネルの割当を行うことができる。これにより、特定の宛先のパケットによって経路上の中継装置の仮想チャネルが占有されることを抑制することが可能となる。その結果、他の宛先へと送信されるパケットが送信できなくなる状況を回避し、遅延時間の減少および伝送性能(スループット)の向上を実現することができる。
なお、本実施形態における中継装置800bは、後段の隣接中継装置800cとのみ仮想チャネル利用数の比較を行うが、本発明はこのような形態に限られない。例えば、前段の隣接中継装置800aとのみ比較を行ってもよいし、隣接中継装置800a、800cの両方と比較した結果を利用してもよい。
例えば、前段の隣接中継装置800aと仮想チャネルの利用数を比較する場合、トラヒックの宛先ごとに、隣接中継装置800aにおける仮想チャネルの利用数から自中継装置800bにおける仮想チャネルの利用数を引いた差分値に基づいて同様の処理を行うことができる。この場合、当該差分値が所定の閾値以上であり、かつ、最大の値となるトラヒックに対して優先的に出力チャネル818の割り当てを行えばよい。
また、前段の中継装置800aにおける仮想チャネル利用数から自中継装置800bにおける仮想チャネル利用数を引いた差分と、自中継装置800bにおける仮想チャネル利用数から後段の中継装置800cにおける仮想チャネル利用数を引いた差分との和に基づいて同様の処理を行ってもよい。この場合、当該和の値が所定の閾値以上であり、かつ、最大の値となるトラヒックに対して優先的に出力チャネル818の割当を行えばよい。
以上の説明では、各中継装置800は、出力バッファ804を備えているが、メモリ量を抑えるために、出力バッファ804を設けない構成であってもよい。出力バッファ804を設けない場合、アービター850は、自中継装置の入力バッファにおける仮想チャネルと後段の中継装置の入力バッファにおける仮想チャネルとの対応付けを決定するように構成されていればよい。
(実施形態2)
次に、本発明の第2の実施形態を説明する。
本実施形態の中継装置は、実施形態1の中継装置と比べ、仮想チャネル利用数比較部811における処理のみが異なり、その他の構成要素は同一である。以下、実施形態1と異なる点を説明し、重複する事項についての説明は省略する。
実施形態1では、トラヒックを宛先の違いによって区別し、トラヒックごとに、伝送経路上の各中継装置で利用する仮想チャネルの利用数を均一にすることが可能となる。これにより、伝送経路上の特定の中継装置における仮想チャネルが特定のトラヒックによって占有され、他の宛先のトラヒックの伝送が妨げられる状態を回避できる。
これに対し、本実施形態の中継装置によれば、宛先が異なるトラヒックを中継する中継装置において、送信レートの違いやパケットの到着時間の違いによって発生し得る中継装置内でのトラヒック間の仮想チャネル利用数の偏りの均一化が可能となる。
まず、本実施形態で扱う課題を、図19、図20を用いて説明する。
図19は、図16と同様の構成において発生する課題を説明するための図である。図19(a)は、2個のバスマスタBM0、BM1から、中継装置R0、R4、R8を介して、2個のメモリM0、M1へとトラヒックを送信している時の、ある時刻における仮想チャネルの利用の様子を示している。図19(b)は、このときの中継装置R0の仮想チャネル情報を示している。
図20は、図19(a)に示す各中継装置R0、R4、R8における、メモリM0へ向かうトラヒックT0、およびメモリM1へ向かうトラヒックT1の仮想チャネルの利用数と、後段の隣接中継装置との間の仮想チャネル利用数の差分を示す図である。
図19(a)において、中継装置R0では、メモリM0宛のトラヒックT0は仮想チャネルを2つ利用し、メモリM1宛のトラヒックT1は仮想チャネルを1つ利用している。中継装置R4では、トラヒックT0は仮想チャネルを1つ利用し、トラヒックT1は仮想チャネルを利用していない。中継装置R8でも、トラヒックT0は仮想チャネルを1つ利用し、トラヒックT1は仮想チャネルを利用していない。このため、中継装置R0では、送信先の隣接中継装置R4との仮想チャネル利用数の差分ΔR0は、トラヒックT0については「1」、トラヒックT1については「1」となる。また、中継装置R1では、送信先の隣接中継装置R8との仮想チャネル利用数の差分ΔR1は、トラヒックT0、T1のいずれについても「0」となる。
中継装置R0、R4、R8における仮想チャネルが図19に示す状態にある場合、図20に示すとおり、トラヒックT0、T1のいずれについても、中継装置R0と中継装置R4との間の仮想チャネルの利用数の差分は「1」となり、両者は同数である。
このため、実施形態1の中継装置を用いた場合、メモリM0へ向うトラヒックT0と、メモリM1へ向うトラヒックT1には、どちらにも仮想チャネルが割当てられる可能性がある。
この時、中継装置R0の仮想チャネルの1番に対して出力チャネル(または中継装置R4の仮想チャネル)が割当てられると、中継装置R4において、トラヒックT0は2つの仮想チャネルを利用し、トラヒックT1は1つも仮想チャネルを利用していない状況となる。その結果、宛先の異なるトラヒックT0とT1との間で仮想チャネルの利用数に偏りが生じる。仮想チャネルが割り当てられなかったメモリM1へ向かうトラヒックT1では、伝送品質(スループット)の低下、伝送遅延の増大が生じる。
本実施形態では、自中継装置と隣接中継装置との間で、仮想チャネル利用数の差分値が等しいトラヒックが複数存在する場合、隣接中継装置における仮想チャネル利用数が相対的に少ないトラヒックに優先的に出力チャネル818が割り当てられる。これにより、1つの中継装置において、宛先の異なる複数のトラヒック間で仮想チャネルの利用数に偏りが生じることを回避できる。
以下、本実施形態における処理の流れを説明する。
図21は、実施形態2の中継装置800において、出力チャネル選択部812の動作を説明するフローチャートである。図21において、図15に示す動作と共通する動作については、同じ番号を付与している。以下、図15に示す処理と異なる点を説明する。
ステップS1804において、差分が0以上の宛先が存在した場合、続くステップS2501において、出力チャネル選択部815は、自中継装置800bの仮想チャネルの利用数と、隣接する中継装置の仮想チャネルの利用数とを比較し、その差分が最大となる宛先が複数存在するか否かを判定する。当該差分が最大となる宛先が複数存在する場合には、ステップS2502に移る。当該差分が最大(0以上)となる宛先が1つだけの場合はステップS1805に移る。
例えば、図19(a)に示す構成において、中継装置R0がステップS2501の状態にある場合、図20に示すように、トラヒックT0、T1のいずれに関しても、差分値ΔR0が同じであるため、処理はステップS2502に移る。
ステップS2502において、仮想チャネル利用数比較部811は、隣接チャネル利用情報管理部810を参照し、差分が最大と判定されたトラヒックのうち、後段の中継装置における出力チャネル818の利用数が最も少ない宛先のトラヒックが利用している仮想チャネル817を1つ選択し、その仮想チャネル817に出力チャネル818を割り当てる。これにより、各トラヒックの仮想チャネル利用数を均一に近づけることができる。
例えば、図20において、差分値ΔR0は、トラヒックT0、T1のいずれについてもΔR0=1であるが、次の中継装置R1における仮想チャネルの利用数は、トラヒックT0については1個、トラヒックT1については0個である。そのため、トラヒックT1のフリットを格納する3番の仮想チャネル(図19)が選択される。
このように、自中継装置における仮想チャネルの利用数と隣接中継装置における仮想チャネルの利用数との差分が同一となるトラヒックが複数存在する場合には、隣接中継装置における仮想チャネルの割当数が少ないトラヒックに優先的に出力チャネルが割り当てられる。これにより、宛先の異なる複数のトラヒックについて、仮想チャネルの利用数を均一化できる。
一般に、送信レートの高いトラヒックを中継する場合や、特定の宛先へ向かうパケットを短い時間で中継する場合には、これらのトラヒックが中継装置内の仮想チャネルをより多く占有しやすい。すると、送信レートの低いトラヒックや、遅れて届いたトラヒックが仮想チャネルをすぐに利用できない状況が発生する。
これに対し、実施形態2の中継装置は、転送先の隣接中継装置における仮想チャネルの利用数がどの宛先のトラヒックに関しても均一に近づくように出力を制御する。このため、送信レートの違いやパケットの到着のタイミングに依らず、特定のトラヒックによる仮想チャネルの占有を抑制しつつ、宛先の異なるトラヒック間で伝送性能(スループット、遅延時間)の均一化を図ることができる。
(実施形態3)
次に、本発明の第3の実施形態を説明する。
上記の実施形態1、2では、宛先でトラヒックを区別し、伝送経路上の中継装置内での仮想チャネルの利用数が均一に近づくように、仮想チャネルの割当制御が行われる。これにより、特定の宛先へ向かうトラヒックによって中継装置内の全ての仮想チャネルが占有され、伝送性能が低下することを抑制することができる。
本実施形態では、さらに、パケットに付与された時間情報に基づいて中継装置内の複数の仮想チャネルに保存されている、同一の宛先が設定された複数のパケットの送信順序の調整を行う。これにより、各トラヒックの遅延時間に対する品質を確保した伝送を実現することができる。
一般に、アプリケーションの種類や処理の内容によって、バスマスタが送信したパケットが受信側のノードに届くまでの締切時間(許容遅延時間)が異なる。このため、特定の宛先のトラヒックによって伝送経路上の特定の中継装置の全ての仮想チャネルが占有されることを回避するだけでなく、締切時間が短いパケットには、優先的に仮想チャネルを割当てる必要がある。そうでなければ、締切時間内にパケットが届かず、正しくシステムを動作させることができなくなる。
本実施形態の中継装置は、共通の宛先が設定されたトラヒック内で、締切時間が短いパケットを、締切時間が長いパケットよりも優先的に送信する。これにより、より多くのパケットを締切時間内に受信ノードに送信することができる。
以下、本実施形態における中継装置800bの構成および動作を説明する。実施形態1、2と共通する構成要素および動作については説明を省略する。
図22は、本実施形態の中継装置の構成を示す図である。図23は、本実施形態において伝送されるパケットのデータ構造を示す図である。図22、23において、実施形態1、2と同様の構成要素については、同じ参照符号を付している。
本実施形態の中継装置800bは、仮想チャネル情報管理部806で管理される仮想チャネル情報に基づいて、複数の仮想チャネル817に格納された複数のフリットの時間情報を比較する時間情報比較部840をさらに備えている。
本実施形態では、図23に示すように、伝送されるパケット700のヘッダフリット704には、パケットの送信時刻やパケットが受信側のノードに届くまでの締切時間などの、パケットの送信順序を決定するために利用される時間情報が付与されている。本実施形態における仮想チャネル情報管理部806は、この時間情報も他の情報と同様に仮想チャネル情報に記録する。
図24は、本実施形態における仮想チャネル情報2701の一例である。仮想チャネル情報2701には、各仮想チャネルに格納されているパケットのヘッダフリット704に記録されていた時間情報が管理されている。以下、時間情報として、パケットが受信側ノードに届くまでの締切時間を用いた場合の例を説明する。
図25は、本実施形態における中継装置800bにおける仮想チャネル817および出力チャネル818の割当動作の流れを示すフローチャートである。図25において、実施形態1、2と同様の動作については、同一の番号を付している。
本実施形態では、ステップS2501までの動作は実施形態2における動作と同様である。ステップS2501において、仮想チャネルの利用数の差分が最大となる宛先が複数存在すると判定された場合、処理はステップS2801に進む。
ステップS2801において、出力チャネル選択部812は、送信先の隣接中継装置800cの仮想チャネルの利用数をトラヒックの宛先で区別して比較し、利用数が最も少ない宛先を候補の宛先として1つ選択する。一方、ステップS2805では、ステップS2501で差分が最大であると判定された宛先を候補の宛先とする。
図26は、図19と同様の構成における各中継装置の仮想チャネルの例を示す図である。図26(a)は、中継装置R0、R4,R8を介して、バスマスタBM0から、1個のメモリM0へとトラヒックを送信している時の、ある時刻における仮想チャネルの利用の様子を示している。図26(b)は、このときの中継装置R0の仮想チャネル情報を示している。この例でも、各中継装置R0、R4、R8は、いずれも4つの仮想チャネルを持つものとする。図26では、説明の簡略化のため、入力ポート毎の仮想チャネルの区別は省略している。また、図26(a)では、バスマスタBM0からメモリ0へと送信されるトラヒックについて、図の上側から順に仮想チャネルを割り当てられるものとしている。なお、図26(a)は、仮想チャネルの割り当て方の一例であり、パケット毎に区別して仮想チャネルが割り当てられる方法であれば図26(a)に示す割り当て方に限定されるものではない。
図26に示す例では、中継装置R0の全ての仮想チャネルに宛先がメモリM0であるパケットが格納されているため、ステップS2801において、候補の宛先としてメモリM0が選択される。
候補の宛先が決定すると、続くステップS2802において、出力チャネル選択部812は、当該宛先が設定されたパケットが格納された仮想チャネル817が複数存在するか否かを判定する。当該宛先が設定されたパケットが格納された仮想チャネル817が複数存在する場合にはステップS2803に移り、そうでない場合にはステップS2804に移る。
図26の例では、中継装置R0において、ステップS2801で選択されたメモリM0宛のパケットが格納された仮想チャネルが複数存在するため、処理はステップS2803へ移る。
ステップS2803において、時間情報比較部840は、仮想チャネル情報2701に記載された「時間情報」を参照する。そして、ステップS2801で選択された宛先へ向かうパケットを格納する仮想チャネルの中から、時間情報に基づく優先度が最も高い仮想チャネルを1つ選択する。
図26に示す例では、中継装置R0がステップS2803の状態にあるとき、時間情報比較部2601は、出力チャネルが未設定の仮想チャネル1番、仮想チャネル2番、仮想チャネル3番の時間情報を比較する。ここではパケットが受信ノードに届くまでの締切時間が最も小さいパケットから優先的に送信するとする。その結果、出力チャネルが未設定で、締切時間が最も小さい仮想チャネル2番が選択される。
一方、ステップS2802において、候補の宛先について、出力チャネルが未設定の仮想チャネルが1つだけであると判定された場合、ステップS2804において、出力チャネル選択部812は、当該仮想チャネルを選択する。
ステップS2802またはS2803で送信すべきパケットが格納された仮想チャネルが選択されると、ステップS1805において、出力チャネル選択部812は、選択された仮想チャネルに対して、空いている出力チャネル818を1つ割り当てる。
以下、本実施形態における時間情報の例を説明する。
上記の説明では、時間情報比較部840は、パケットの締切時間が短いパケットから優先的に出力チャネル818の割当を行うが、時間情報として締切時間以外の時間情報を基準に出力チャネルの割当順序を決定してもよい。
図27は、本実施形態で用いられ得る時間情報の例、およびそれらの時間情報の比較基準の例を示している。時間情報として、例えば、パケットが送信された時刻を用いて、送信時刻の古いものから順に出力チャネルを割り当ててもよい。これにより、パケット間で送信時の順番を維持しつつ、受信ノードまでパケットを中継することができる。また、パケットの送信時刻の代わりに、送信してからの経過時間を時間情報として利用し、経過時間が長いパケットから順に出力チャネルの割当を行ってもよい。
送信時刻を管理する場合、時間情報は半導体システムが動作している期間を表現できるだけの桁数が必要となるため、半導体システムが長時間動作する場合には、時間情報の桁数が大きくなる。これに対し、時間情報としてパケットが送信されてからの経過時間を用いる場合には、パケットが送信されてから受信されるまでにかかる時間を表現するだけの桁数があればよいので、比較的、時間情報の桁数を小さくできるというメリットがある。時間情報として扱う値の桁数が小さければ、時間情報比較部840における時間情報の比較回路を小さくできるため、半導体システムのリソース削減において有効である。
また、送信時刻を用いる場合であっても、例えば、送信時刻の位の小さい方からn桁の値のみを用いることにより、時間情報として扱う桁数を小さくすることができる。n桁の値としては、例えばパケットが送信されてから受信されるまでに要する時間を表現するだけの桁数を用いればよい。
時間情報の他の例として、パケットを受信ノードに届けるべき締切時刻を用いて、締切時刻に近いパケットから順に出力チャネルの割当てを行ってもよい。また、上記の例のように、パケットを受信ノードに届けるべき締切時刻までの残り時間を用いて、残り時間の短いパケットから順に出力チャネルを割り当ててもよい。
以上のように、本実施形態の中継装置によれば、宛先の異なるトラヒックに対して、伝送経路上の各中継装置における仮想チャネルの利用数の偏りを抑制しながら、トラヒックの伝送品質を維持した伝送が可能となる。このため、例えば、締切時間が長いベストエフォート型のトラヒックと、締切時間が短い品質保証型のトラヒックとが混在して送信される場合に、送信時間に対する品質を高めることができる。具体的には、品質保証型のトラヒックを優先的に送信することにより、締切時間内に品質保証型のトラヒックを受信ノードまで届けることができる。一方、ベストエフォート型のトラヒックについては、伝送経路上の複数の中継装置の仮想チャネルに分散してパケットを格納することができる。これにより、特定の中継装置の仮想チャネルが特定のトラヒックで占有されることを回避できる。その結果、品質保証型のトラヒックが後から送信されても、経路上で仮想チャネルの空きができるまで待つことなく、すぐに当該トラヒックを送信することができる。
このように、本実施形態の中継装置によれば、品質についての要求が異なる複数種類のトラヒックに対し、それらの要求に合わせた流量制御をしながら、NoC内の仮想チャネルを有効に利用することができる。
(実施形態4)
次に、本発明の第4の実施形態を説明する。
実施形態1、2、3における中継装置は、宛先の異なるトラヒック毎に伝送経路上の各中継装置で仮想チャネルの利用数を均一に近づけることによって伝送経路上の特定の中継装置の仮想チャネルが特定のトラヒックによって占有されることを回避する。
これに対し、本実施形態の中継装置では、さらに伝送経路上の仮想チャネルにおいて特定のトラヒックによる仮想チャネルの利用数が所定の閾値を越えた場合に、中継装置とバスマスタとの間のフロー制御の調整によって、バスマスタからのトラヒックの送信量を制限する。これにより、伝送経路上の全ての仮想チャネルが占有されることを回避することができる。
なお、「トラヒックの送信量を制限する」とは、例えば(a)トラヒックの送信量を減らすこと、(b)トラヒックの送信を停止すること、(c)トラヒックの送信量の上限値と下限値の両方、または上限値のみを設定し、その範囲内の送信量でトラヒックを送信すること、などを意味している。
まず、本実施形態で扱う課題を、図28を用いて説明する。
図28は、バスマスタBM0からメモリM0に対して、中継装置R0、R4、R8を介してトラヒックT0を送信している状況を示している。バスマスタMB0から中継装置R0へ送信されるトラヒックT0の送信量に比べ、中継装置R8からメモリM0へのトラヒックT0の送信量が少ない場合、この状態が長時間続くと、伝送経路上の中継装置間で、仮想チャネルの利用数を均一化する制御だけでは、伝送経路上の中継装置内の仮想チャネルの全てがトラヒックT0によって利用されている状態で均一化されてしまう。このため、他の宛先へのトラヒックが送信できなくなる(図40a)。
このため、本実施形態では、バスマスタBM0に直接接続されている中継装置R0におけるトラヒックT0の仮想チャネルの利用数が所定の閾値よりも多い場合に、中継装置R0とバスマスタBM0との間でトラヒックT0の送信量を制限する制御が行われる。この制御により、伝送経路上の全ての中継装置で、トラヒックT0によって、全ての仮想チャネルが占有されることを回避することができる(図40b)。
以下、本実施形態においてバスマスタと隣接する中継装置800の構成および動作を説明する。以下、実施形態1と共通する構成要素および動作については説明を省略する。
図29は、本実施形態の中継装置の構成を示す図である。本実施形態における中継装置800は、バスマスタ4101と直接接続している。アービター850は、実施形態1における構成要素に加え、バスマスタ4101から送信されるトラヒックの送信量を調整するフロー制御調整部4102をさらに備える。
バスマスタ4101と中継装置800との間のフロー制御は、以下のようにして行われる。バスマスタ4101から中継装置800に対してパケットの送信要求が出力され、これに応答して中継装置800からバスマスタ4101に許可信号を返すことによってバスマスタ4101からのパケット送信が実行される。フロー制御調整部4102は、バスマスタ4101からの送信要求に対して、許可信号の返信のタイミングを調整することにより、バスマスタ4101から中継装置800への送信量の制限を行う。
図30は、本実施形態における中継装置800が実行するバスマスタ4101とのフロー制御の調整に関する動作を示すフローチャートである。中継装置800は、ステップS4201において、入力ポート毎の仮想チャネルの利用数を測定する。続くステップS4202において、フロー制御調整部4102は、特定の宛先へ送信されるトラヒックの仮想チャネルの利用数が所定の閾値よりも多いか否かを判定する。閾値を超えるトラヒックが存在しなければステップS4201に戻る。閾値を超えるトラヒックが存在した場合、ステップS4203に移り、そのトラヒックを送信しているバスマスタに対して、トラヒックの送信量の制限を行うように指示することによってフロー制御の調整を行う。
例えば図28(b)に示す例では、所定の閾値は1に設定されている。中継装置R0は、トラヒックT0による2個以上の仮想チャネルを検出すると、仮想チャネルの利用数が2個よりも少なくなるまで、バスマスタBM0に対してトラヒック送信の許可信号の出力を停止し、バスマスタBM0によるトラヒックの送信を停止させる。これにより、図28(B)に示すように、伝送経路上の中継装置間で仮想チャネルの利用数を均一に保ちつつ、伝送経路上の仮想チャネルの全てがトラヒックT0によって占有されることを回避できる。 本実施形態では、上記のフロー制御と、実施形態1における隣接中継装置同士の仮想チャネル利用数の均一化の制御とを組み合わせることにより、フロー制御だけを行った場合と比較して、有利な効果を奏する。
伝送経路上の中継装置間で、同じ宛先のトラヒックに対し、仮想チャネルの利用数の均一化の制御を行わない場合、伝送経路上の特定の中継装置で仮想チャネルの占有による混雑が発生しても、バスマスタに隣接する中継装置は、直ちにその混雑状況を把握できない。すなわち、その混雑がトラヒックの送信元に順次伝搬し、バスマスタに隣接する中継装置に至るまで、トラヒックを送信しているバスマスタは、伝送経路上の混雑の状態を特定できない。
これに対し、伝送経路上の中継装置間で、同じ宛先のトラヒックに対して仮想チャネルの利用数の均一化の制御を行った場合、伝送経路上の中継装置におけるフローが均一に近づく。このため、各中継装置におけるチャネル利用状況を測定することなく、バスマスタに接続された中継装置のチャネル利用状況のみに基づいて、トラヒックの混雑状況を把握することができる。その結果、トラヒックを送信しているバスマスタは、伝送経路上の特定の中継装置で仮想チャネルの占有が発生する前に、伝送経路上の混雑を把握することが可能である。本実施形態における制御によれば、バスマスタが送信する特定のトラヒックに伝送経路上の中継装置の仮想チャネルが占有されることによって他のトラヒックが伝送できなくなる状況の発生を回避できる。
なお、フロー制御調整部4102が上記のフロー制御を行う対象とするトラヒックは、宛先が共通するトラヒックに限らず、伝送経路の少なくとも一部が共通するトラヒックであればよい。また、また、本実施形態におけるフロー制御は、バスマスタに接続された中継装置のチャネル利用数に限らず、流量や遅延時間などに基づいていてもよい。
本実施形態では、実施形態1における伝送制御とフロー制御とを組み合わせたが、実施形態2、3における伝送制御とフロー制御とを組み合わせても同様の効果がある。
(他の実施形態)
上記の実施形態1から4では、パケットの宛先の違いに基づいてトラヒックの区別を行ったが、パケットの送信元の違いに基づいてトラヒックを区別し、仮想チャネルの割当てを行ってもよい。
例えば、複数のバスマスタから1つの宛先のノードにトラヒックが送信される場合、パケットの宛先だけに基づいてトラヒックを区別すると、特定のバスマスタから送信されたパケットが伝送経路上の中継装置の仮想チャネルを占有してしまう可能性がある。その場合、他のバスマスタから送信されたパケットをすぐに伝送できない状況が発生する。
これに対し、パケットの送信元の違いに基づいてトラヒックを区別した場合には、同じ宛先に送信されたトラヒックであっても、それらの送信元で区別することにより、各中継装置の仮想チャネルの利用数が均一になるように制御することができる。このため、各バスマスタからの伝送品質を維持したデータ伝送が可能となる。また、パケットの宛先および送信元の組み合せに基づいてトラヒックを区別し、仮想チャネルの割当てを行ってもよい。
上記の説明においては、「宛先(送信先)」および「送信元」の用語を、パケットが最終的に到達するノードおよびそのパケットを最初に送信したノードを指すものとして用いたが、これらの用語の意味を以下のように解釈してもよい。すなわち、「宛先」や「送信元」として、パケットが通過する他の中継装置や入出力ポート等の、特定の経路の通過を指定する情報を用いてもよい。図31(a)、(b)は、中継装置R1から見た種々の宛先の定義および宛先の具体例を示している。例えば、図31(a)に示す構成において、パケットが受信ノード(メモリ)に届くまでの伝送経路上で通過する途中の中継装置を「宛先」と定義してもよい。
図31(a)に示す中継装置R1について、宛先の定義を受信ノード(メモリ)とすると、メモリ0からメモリ7までの8個のメモリが宛先となり得る。一方、宛先の定義を2つ先の中継装置とすると、4つの中継装置R8〜R11が宛先となり得る。また、宛先の定義を1つ先の中継装置とすると、2つの中継装置R5およびR7が宛先となり得る。
なお、パケットの宛先をメモリや中継装置などのノードとするのではなく、利用する出力ポートの違いにより宛先を定義してもよい。この場合、中継装置R1にとって、出力ポート0および出力ポート1、すなわち、2つの中継装置R5およびR7が宛先となり得る。
宛先とされた中継装置にパケットが到達した場合には、その中継装置は再び、その中継装置での定義に従って宛先を設定し、パケットを送出すればよい。
上記の例では、宛先にだけ着目したが、送信元についても同様の考え方を適用して中継装置ごとに種々の送信元を定義することができる。すなわち、送信元のバスマスタのみならず、1つ前の中継装置、2つ前の中継装置、利用する入力ポート等を送信元として定義してもよい。
実施形態1から4では、集積回路のトポロジーが多段接続網の場合を例に説明したが、本発明の中継装置は多段接続網での利用に限定されるものではない。例えば、図32(a)に示すように中継装置を格子状に並べたメッシュ型トポロジーを構成してもよい。また、図32(b)に示すように上下左右で中継装置をリング状に接続したトーラス型トポロジーであってもよい。さらに、図32(c)に示すようにバスを階層的に接続した階層型トポロジーなどを構成してもよい。複数のバスマスタを分散型のバスを介して接続したトポロジーであれば、同様に本発明の中継装置の適用が可能である。
以上の説明では、中継装置の各構成要素は、ブロック化された個別の機能部として表されているが、これらの機能部の処理を規定するプログラムを中継装置に実装されたプロセッサ(コンピュータ)に実行させることによって中継装置の動作が実現されていてもよい。そのようなプログラムの処理手順は、例えば図8、15、18、21、25のフローチャートに記載されているとおりである。
(利用例1)
以下、本発明による中継装置の実際の機器への利用例を説明する。図33は、半導体回路上の複数のバスマスタと複数のメモリおよび外部とデータを通信するための共用の入出力ポート(I/Oポート)とを分散型のバスを利用して接続した例を示している。このような半導体回路は、例えば、携帯電話、PDA(Personal Digital Assistants)、電子書籍リーダーなどの携帯端末や、TV、ビデオレコーダ、ビデオカメラ、監視カメラ等の機器で用いられ得る。バスマスタは、例えば、CUP、DSP、伝送処理部、画像処理部などである。メモリは、揮発性のDRAMであってもよいし、不揮発性のフラッシュメモリであってもよい。また、揮発性メモリおよび不揮発性メモリが混在していてもよい。また、入出力ポートは、外付けのHDDやSSD、DVDなどの記憶装置と接続するためのUSBやイーサネット(登録商標)などの通信インターフェイスであり得る。
複数の映像や音楽などの再生、記録、トランスコード、および書籍、写真、地図データ等の閲覧や編集、ゲームのプレイなど、複数のアプリケーションやサービスを同時に利用する場合、各バスマスタからメモリへのアクセスが増える。このため、メモリの数が1つしかない場合、アクセスが1箇所に集中してしまう。これを解決するためには、メモリ側の入出力の伝送帯域を広げる必要があり、コストが高くなってしまう。
メモリアクセスの集中を回避する方法として、アプリケーションやサービス等の種類によってバスマスタが利用するメモリを物理的に分ける方法や、外付けのHDDドライブなど外部の記憶装置を利用する方法などを適用することにより、これらのバスマスタとメモリとを分散型のバスで接続させることが有効である。
しかし、例えば、あるバスマスタが、映像データを保存するためにメモリAに対して高いレートでデータパケットを送信した場合、伝送経路上のバッファが全てメモリA宛のパケットで占有される頻度が多くなる。その結果、他のメモリへデータが流れにくくなり、他のアプリケーションやサービスの性能が低下したり、処理時間が増加してしまう。
これに対し、本発明の中継装置を用いた場合には、各中継装置の仮想チャネルにおいて、宛先などが異なるパケットに対して、均一に仮想チャネルが割り当てられるため、特定のメモリに向うパケットによる仮想チャネルの占有を回避できる。その結果、半導体回路上の全てのアプリケーションやサービスの性能の向上や、処理時間の短縮化を図ることができる。
(利用例2)
次に、本発明の中継装置のマルチコアプロセッサ(multi−core processor)への利用例を説明する。
図34は、CPUやGPU,DSP等のコアプロセッサの処理能力を向上させるために、複数のコアプロセッサをメッシュ状に配列し、これらを分散バスで接続したマルチコアプロセッサを示している。この構成では、各コアプロセッサが本発明における第1ノードとして機能し得るし、第2ノードとしても機能し得る。
マルチコアプロセッサ上では、各コアプロセッサ間で通信が行われる。例えば、各コアプロセッサには、演算処理に必要なデータを記憶しておくキャッシュメモリが備えられており、コアプロセッサ間で互いのキャッシュメモリの情報をやり取りすることができる。これによって情報の共有が可能となり、処理性能を向上させることができる。
しかし、マルチコアプロセッサ上で発生するコアプロセッサ間の通信は、それぞれ位置関係や距離(中継ホップ数)、通信頻度が異なる。このため、データパケットの順序を単純に維持したまま中継すると、バッファが全て特定のコアプロセッサ宛のパケットにより占有されパケットデータが流れにくい中継装置が発生する。その結果、マルチコアプロセッサの性能の低下や、処理時間の増加を引き起こす。
これに対し、本発明の実施形態による中継装置を用いた場合には、各中継装置の仮想チャネルにおいて、宛先の異なるパケットに対して、均一に仮想チャネルが割り当てられるため、特定のコアプロセッサに向うパケットによって中継装置の仮想チャネルが占有されることを回避できる。その結果、各コアプロセッサの性能の向上や、処理時間の短縮化を図ることができる。
(利用例3)
上述の実施形態および利用例では、本願発明がチップ上で実装された際の構成を説明した。本願発明は、チップ上に実装されるだけでなく、チップ上に実装するための設計及び検証を行うシミュレーションプログラムとしても実施され得る。そのようなシミュレーションプログラムは、コンピュータによって実行される。例えば図2、5、22に示される各構成要素は、シミュレーションプログラム上のオブジェクト化されたクラスとして実装される。各クラスは、予め定められたシミュレーションシナリオを読み込むことにより、各構成要素に対応する動作をコンピュータ上で実現する。言い換えると、各構成要素に対応する動作は、コンピュータの処理ステップとして直列的または並列的に実行される。
中継装置として実装されたクラスは、シミュレータで定義されたシミュレーションシナリオを読み込むことにより、送信先アドレス、送信元アドレス、時間情報等の条件を決定する。また、他の中継のクラスから送信されるパケットの送信タイミング等の条件を決定する。
中継装置として実装されたクラスは、シミュレーションシナリオに記述されたシミュレーションの終了条件が成立する迄の間、動作を行う。動作中のスループットやレイテンシ、バスの流量の変動の様子、動作周波数、消費電力の見積値等を算出しプログラムの利用者に提供する。これらに基づき、プログラムの利用者はトポロジや性能の評価を行い、設計及び検証を行う。
シミュレーションシナリオの各行には、例えば、送信元ノードのID、宛先ノードのID、送信するパケットのサイズ、送信するタイミング等の情報が記述されるのが普通である。また複数のシミュレーションシナリオをバッチ処理的に評価することで、想定した全てのシナリオで所望の性能が保証できているか否かを効率的に検証できる。またバスのトポロジやノード数、送信ノード、中継装置、宛先ノードの配置を変化させて性能比較することにより、シミュレーションシナリオに最も適したネットワーク構成を特定することもできる。上記の実施形態のいずれもが本態様の設計及び検証ツールとしても適用可能である。このように、本願発明は、設計及び検証ツールとして実施される際にも適用可能である。