JP5838365B2 - バスシステムおよび中継器 - Google Patents

バスシステムおよび中継器 Download PDF

Info

Publication number
JP5838365B2
JP5838365B2 JP2014501125A JP2014501125A JP5838365B2 JP 5838365 B2 JP5838365 B2 JP 5838365B2 JP 2014501125 A JP2014501125 A JP 2014501125A JP 2014501125 A JP2014501125 A JP 2014501125A JP 5838365 B2 JP5838365 B2 JP 5838365B2
Authority
JP
Japan
Prior art keywords
packet
data
transmission
class
repeater
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
JP2014501125A
Other languages
English (en)
Other versions
JPWO2014017069A1 (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 Intellectual Property Management Co Ltd
Original Assignee
Panasonic Intellectual Property Management 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 Intellectual Property Management Co Ltd filed Critical Panasonic Intellectual Property Management Co Ltd
Priority to JP2014501125A priority Critical patent/JP5838365B2/ja
Application granted granted Critical
Publication of JP5838365B2 publication Critical patent/JP5838365B2/ja
Publication of JPWO2014017069A1 publication Critical patent/JPWO2014017069A1/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/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2441Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6215Individual queue per QOS, rate or priority
    • 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

Description

本願は、半導体の集積回路に設けられた、ネットワーク化された通信バス(分散型バス)を備えるバスシステムにおいて、通信バスの制御を行うための技術に関する。
NoC(Network−on−Chip)は、半導体の集積回路である半導体チップ上に設けられた、ネットワーク化された通信バスである。NoCでは、中継器(ルータ)でバスを接続し、複数のマスタから送信されるトラヒックを同じバスを共有して伝送する。これにより、バスの本数を削減し、バスを効率よく利用することが可能となる。
ところが、NoCにおいては、バスを複数のマスタのトラヒックで共有するため、性能保証(スループット保証と遅延保証)が困難となる。
複数のマスタは、独立して異なる性能を要求するトラヒックを流す。そのため、同じバスの中を、たとえば短い遅延時間で伝送したいトラヒック(遅延保証)、常に一定の伝送量を保証したいトラヒック(スループット保証)、および不定期に大容量のデータ通信を必要とするトラヒックが混在した状態で伝送される。
NoCにおいては、最低限必要なバス帯域で、各トラヒックの要求性能(スループットおよび遅延時間の少なくとも一方)を満たすことを保証する、性能保証の仕組みの実現が必要である。NoCの性能保証が実現されると、バスをより効率よく利用すること、および要求性能を満たす必要最小限のバス帯域で設計することが可能になる。その結果、バスのハード設計と開発が容易となる。
従来の中継器の中には、トラヒックの優先度を判断するものが存在する。この中継器は、バッファに優先度の高いトラヒックのデータが格納された場合、そのバッファを高優先に切り替えて伝送処理する。図1(A)は、バッファ302〜304のうち、優先度の高いトラヒックが格納されているバッファ304および303のトラヒックのデータを先に出力する中継器301の構成例を示す。数字の値が大きいほど、優先度が高いとする。中継器301は、入力バッファの先頭のデータの優先度に応じて、出力するトラヒックのデータを決定する。
しかしながらそのような中継器では、同一バッファ内に異なる優先度のトラヒックが混在する。その結果、高優先のトラヒックが低優先のトラヒックの干渉の影響を受けるという問題がある。
たとえば特許文献1および非特許文献1は、そのような問題に対応するための技術を開示している。図1(B)は、図1(A)の中継器301において、格納されたメッセージの中で最も高い優先度を用いて入力バッファの優先度を決定し、入力バッファの優先度に応じてデータを出力する構成例を示す。
図示された例では、入力バッファ302には、優先度が3のメッセージと、優先度が1のメッセージとが格納されている。また、入力バッファ303には、優先度が2のメッセージと、優先度が1のメッセージとが格納されている。そして、入力バッファ304には、優先度が1のメッセージと、優先度が2のメッセージと、優先度が3のメッセージとが格納されている。
各入力バッファの優先度は格納されているメッセージの最高の優先度を用いて決定される。そのため、入力バッファ302の優先度は3、入力バッファ303の優先度は2、入力バッファ304の優先度は3となる。その結果、送信されるメッセージは優先度の高い順、すなわち入力バッファ302と入力バッファ304の先頭に格納されたメッセージとなる。
結果として、優先度が3のメッセージが入った入力バッファ302は、それより前に格納されているメッセージの優先度に依存することなく、優先的に伝送処理を進めることが可能になる。そして優先度の高いメッセージの遅延を、バッファの先方を低い優先度のメッセージが占めていても、小さくすることができる。
米国特許出願公開第2005/0117589号明細書
Jean-Jacques Lecler、Gilles Baillieu 著、"Application Driven Network on Chip Architecture Exploration & Refinement for a Complex SoC"、Springer Verlag's Design Automation for Embedded Systems Journal, Volume 15, Number 2, pp.133-158
ところが、従来技術の方式では、優先度の高いメッセージは、少なくともそれより前に格納された他のメッセージの伝送が完了されるまでは、伝送されなかった。そのため優先度の高いメッセージの中継器における遅延時間は、優先度の低いメッセージにより影響を受け、大きく設定されやすかった。
このような条件下で性能を保証するためには、実際に必要な帯域よりも過剰に大きな帯域を用意しなければならない。また、バッファ内の高優先度と低優先度の割合で、必要な伝送帯域は異なってくる。
上記課題を解決するために、本発明の一態様は、ネットワーク化されたバスと、前記バスに配置された少なくとも1つの中継器とを介して第1ノードおよび少なくとも1つの第2ノードの間でデータを伝送する、半導体回路のバスシステムを含む。伝送されるデータは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含む。前記第1ノードは、伝送されるデータ、および伝送されるデータの要求性能を識別するための識別情報を含むパケットを複数生成するパケット生成部と、前記パケットの送信を制御する送信制御部とを備えている。前記少なくとも1つの中継器は、受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、前記識別情報ごとに、識別情報に対応するすべての第1ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部とを備えている。
上述の一般的かつ特定の態様は、システム、方法およびコンピュータプログラムを用いて実装され、またはシステム、方法およびコンピュータプログラムの組み合わせを用いて実現され得る。
本発明のある実施形態にかかるバスシステムによれば、中継器において、要求性能に応じて伝送すべきデータを切り替えられるバッファ構成と、マスタと中継器における送信スケジューリングとによって、相互の干渉を抑制することができ、性能保証できるバス動作周波数を小さく見積もることができる。例えば、高優先の性能保証クラスのトラヒックが低優先の非性能保証クラスのトラヒックの干渉を受けずに伝送できることで、バス帯域を見積もる時に干渉するトラヒック量を減らすことができ、過剰に見積もることなく、小さいバス動作周波数で性能保証可能なバスを構築できる。またワースト見積もりによって発生するバスの余剰帯域を、マスタと中継器での送信スケジューリングによってできるだけ低減する、換言すればバスの余剰帯域の利用効率を大きくすることが可能になる。
(A)は、バッファ302〜304のうち、優先度の高いトラヒックが格納されているバッファ304および303のトラヒックのデータを先に出力する中継器301の構成例を示す図であり、(B)は、図1(A)の中継器301において、格納されたメッセージの中で最も高い優先度を用いて入力バッファの優先度を決定し、入力バッファの優先度に応じてデータを出力する構成例を示す図である。 性能保証クラス/非性能保証クラスに応じて適用される、本実施形態による処理のポリシーを示す図である。 本発明の一実施形態である中継器103によって構成されるNoCの一例を示す図である。 NoCの構成要素の概念を示す図である。 図3のNoCの構成を模式的に示す図である。 (A)および(B)は、中継器ごとに設定される送信レート値の例を示す図である。 (A)および(B)は、中継器103の構成をインターネットに適用した場合と、半導体のバスシステムに適用した場合の効果の違いを示す図である。 本発明のある実施形態にかかる中継器を備えるNoCの動作を示すフローチャートである。 必要なバス動作周波数の見積もりを下げるために、少なくとも性能保証データと非性能保証データを区別可能なクラス分類規則の例を示す図である。 マスタの発行するトラヒックの要求仕様の定義の具体例を示す図である。 バスマスタ101ごとに分類されるクラスおよびその具体例を示す図である。 マスタ側NIC102の構成を示す図である。 マスタ側NIC102の動作フローを示す図である。 パケット202のデータ構造を示す図である。 マスタ側NIC102に設けられるレート制御部804の構成を示す図である。 レート値記憶部1003が記憶するレート値を示す図である。 レート制御部804の動作フローを示す図である。 送信可否決定部1001による送信可否の決定処理S1103の動作フローを示す図である。 タイマー処理部1002の動作フローを示す図である。 マスタ側NIC102と中継器103で行う一般的なフロー制御を説明する図である。 (A)および(B)は、フロー制御とレート制御の違いを示す図である。 中継器103の構成を示す図である。 クラス記憶部1411に記憶されるクラスの優先度情報を示す図である。 中継器103の出力調停部1410が送信すべきバッファの優先順位を調停した結果の具体例である。 中継器103の動作フローを示す図である。 中継器103のクラス解析部1403の入出力関係を示す図である。 中継器103のレート制御部1409の構成を示す図である。 レート制御部1409の動作フローを示す図である。 レート制御部1409の送信可否の決定処理の動作フローを示す図である。 タイマー処理部の管理情報の具体例を示す図である。 レート制御部1409のタイマー処理部2002の動作フローを示す図である。 レート制御値記憶部2003がクラスごとに管理している送信レート値の一例を示す図である。 出力調停部1410の動作フローを示す図である。 出力調停部1410が送信すべき入力バッファ1415を調停する処理(S2805)のフローチャートを示す図である。 中継器103のバッファ情報記憶部1407の管理情報の構成例を示す図である。 (a)〜(c)は、本発明の他の実施形態として適用できるNoC網の例を示す図である。 コマンドとデータを分離した場合のバッファ構成の例を示す図である。 コマンドとデータを分離した場合の効果として、コマンドに対する遅延を短縮できることを示す図である。 パケットを多重化して伝送する方法の概要を示す図である。 (A)および(B)は、パケット多重化の有無に応じたパケット伝送例を示す図である。 パケット多重化のためのパケット202の構成を示す図である。 パケット多重化のためのマスタ側NIC102の動作フローを示す図である。 パケット多重化のためのスレーブ側NIC104の構成を示す図である。 パケット多重化のためのスレーブ側NIC104の動作フローを示す図である。 半導体回路上の複数のマスタと複数のメモリおよび外部とデータを通信するための共用の入出力ポート(I/Oポート)とを分散型のバスを利用して接続した例を示す図である。 CPUやGPU,DSP等のコアプロセッサの処理能力を向上させるために、複数のコアプロセッサをメッシュ状に配列し、これらを分散バスで接続したマルチコアプロセッサを示す図である。 (a)〜(c)は、それぞれ、遅延保証クラスの優先度に関連する分類の例を示す。
本発明の例示的な実施形態は、バスを流れる個々のトラヒックの要求性能に対し、過剰な見積もりにならないバス帯域を求める。その上で、ワーストケースで見積もられたことで発生するバスの余剰帯域をできるだけ低減する。
本開示の例示的な実施形態を説明する前に、本願明細書で使用する用語を説明する。なお、以下の用語以外にも、実施形態の説明中で用語を適宜説明している。
「バースト性を有する」とは、たとえばバスマスタがトラヒックの通信データを連続的に送信しつつ、それらのトラヒックの許容遅延時間が短く、もしくは要求帯域が大きいことを指す。例えば、バースト性を有するバスマスタが送信する通信データには、映像系のデータが分類される。バースト性を有しない遅延保証クラスの通信データにはUSBのデータが分類される。バースト性があるかないかは、設計者の観点で決定される。
「非性能保証データ」とは、スループットおよび遅延の両方を保証しなくてよいデータである。
「要求帯域」とは、スループット保証によって保証されるトラヒックの単位時間あたりの伝送量のことである。
トラヒックの「締切時刻」とは、トラヒックの伝送を開始したバスマスタによって指定される、宛先(スレーブ)に到着する時刻を表す。
たとえば本発明の例示的な実施形態によれば、以下のバスシステムおよび中継器を得ることができる。
すなわちある実施形態によれば、半導体回路のバスシステムは、ネットワーク化されたバスと、前記バスに配置された少なくとも1つの中継器とを介して第1ノードおよび少なくとも1つの第2ノードの間でデータを伝送する、半導体回路のバスシステムであって、伝送されるデータは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含み、前記第1ノードは、伝送されるデータ、および伝送されるデータの要求性能を識別するための識別情報を含むパケットを複数生成するパケット生成部と、前記パケットの送信を制御する送信制御部とを備え、前記少なくとも1つの中継器は、受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、前記識別情報ごとに、識別情報に対応するすべての第1ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部とを備えている。
ある実施形態において、前記少なくとも1つの中継器は複数存在し、複数の中継器は同一の動作周波数で動作し、かつ前記複数の中継器に備えられた各中継制御部は、同一の送信レートで前記各パケットの送信を制御しており、前記同一の送信レートは、前記複数の中継器が保証すべき各送信レートのうちの最大の送信レート以上に設定されている。
ある実施形態において、各性能保証データには、保証すべき送信レートが予め設定されており、前記送信制御部は、前記性能保証データの保証すべき送信レートを超えた所定レートで、または送信レートに制限を設けることなく、前記性能保証データのパケットの送信を制御し、前記少なくとも1つの中継器は、保証すべき前記送信レートを維持可能な第1の帯域、および余剰帯域である第2の帯域を利用して、保証すべき送信レートを超えたレートで前記性能保証データのパケットを伝送可能であり、前記中継制御部は、前記バッファ部に格納された複数のパケットのうち、前記性能保証データの各パケットを、前記識別情報に基づいて、前記第1の帯域を利用して伝送するか、前記第1の帯域および前記第2の帯域を利用して伝送するかに分類し、前記第1の帯域を利用する各パケットを優先的に伝送する。
ある実施形態において、前記伝送されるデータは、スループット及び許容遅延時間の両方を保証しない非性能保証データをさらに含み、前記送信制御部は、送信レートに制限を設けることなく前記非性能保証データのパケットの送信を制御し、前記バッファ部は、受信した前記非性能保証データのパケットをさらに分離して格納し、前記中継制御部は、前記性能保証データのパケット、および前記非性能保証データのパケットの順に伝送する。
ある実施形態において、前記パケット生成部は、前記パケットの締切時間に関する時間情報を前記パケットにさらに付与しており、前記中継制御部は、同一の識別情報が付与されたパケットについては各パケットの前記締切時間に応じて伝送する順位を決定する。
ある実施形態において、前記締切時間に関する時間情報は、前記パケットが前記少なくとも1つの第2ノードに到達すべき締切時間の情報、前記第1ノードが前記パケットを送信した時刻の情報、前記第1ノードおよび前記中継器の処理時間の累積値の情報、および前記パケットの前記第1ノードにおける送信順序を表す送信カウンタの値の情報のいずれかである。
ある実施形態において、前記締切時間に関する時間情報は、前記パケットが前記少なくとも1つの第2ノードに到達すべき締切時間の情報、前記第1ノードが前記パケットを送信した時刻の情報、前記第1ノードおよび前記中継器の処理時間の累積値の情報、および前記パケットの前記第1ノードにおける送信順序を表す送信カウンタの値の情報のいずれかである。
ある実施形態において、前記締切時間に関する時間情報が前記締切時間を示す場合、前記中継制御部は、前記締切時間が早いパケットから優先して送信する。
ある実施形態において、前記第1の帯域および前記第2の帯域を利用して伝送される各パケットに関し、前記中継制御部および前記送信制御部は、保証すべき送信レートを超えたレートを、バスシステムのボトルネックとなるノードまたはリンクの処理能力に基づいて決定する。
ある実施形態において、前記性能保証データは、バースト性のあるバーストデータ、および、バースト性のない非バーストデータを含んでおり、前記パケット生成部が付与する前記識別情報は、前記バーストデータ、非バーストデータを識別可能であり、前記少なくとも1つの中継器のバッファ部は、前記複数のバッファに、前記バーストデータ、非バーストデータを分離して格納し、前記少なくとも1つの中継器の前記中継制御部は、前記バーストデータ、非バーストデータの順で、前記パケットを伝送する。
ある実施形態において、前記第1ノードの送信制御部は、前記バーストデータを予め定めた送信レートで送信し、前記中継制御部は、少なくとも前記バーストデータを予め定めた送信レートで送信する。
ある実施形態において、前記少なくとも1つの第2ノードは複数存在しており、前記少なくとも1つの中継器のバッファ部は、前記複数のバッファに、第2ノード毎のパケットを分離して格納する。
ある実施形態において、パケットには、コマンドを送るパケットとデータを送るパケットが存在しており、前記中継制御部は、前記コマンドを送るパケットに対し送信レート制限を設けずに送信する。
ある実施形態において、パケットには、コマンドを送るパケットとデータを送るパケットが存在しており、前記少なくとも1つの中継器のバッファ部は、前記複数のバッファに、前記コマンドを送るパケットと、前記データを送るパケットとを分離して格納する。
ある実施形態において、前記第1ノードのパケット生成部は、複数のパケットを多重化して伝送する。
ある実施形態において、多重化された前記パケットを送信する前記第1ノードおよび前記少なくとも1つの中継器は、多重化された前記パケットを個々のデータに復元するための分割位置を示す情報を伝送する信号線を備えている。
本発明の他の実施形態にかかる中継器は、半導体回路のバスシステムに設けられたネットワーク化されたバスに配置され、前記バスシステムの第1ノードおよび少なくとも1つの第2ノードの間で伝送されるデータを中継する中継器であって、前記第1ノードは、伝送される前記データ、および伝送される前記データの要求性能を識別するための識別情報を含むパケットを複数生成して送信し、伝送される前記データは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含んでおり、受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、前記識別情報ごとに、識別情報に対応するすべての第1ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部とを備えている。
以下、添付の図面を参照しながら、本発明の一実施形態である中継器を説明する。
本明細書では、半導体の集積回路における分散型バス(NoC)において、バスを流れる、異なる要求性能を有する複数のトラヒックに対し、相互の干渉を抑制しつつ、定量的試算に基づき小さいバス動作周波数でバスの伝送効率を上げる技術を説明する。併せて、NoCにおいて用いられる、性能(スループットと許容遅延時間)を保証するための中継器の構成、および分散型バスにおけるQoS(Quality of Service)に関しても説明する。
本願発明者らは、トラヒックの要求性能に応じて、トラヒックに「クラス」を設定した。すなわち出力ノードであるバスマスタから出力されるトラヒックに、複数のクラスのうちのいずれかを設定し、中継器において、クラス間の干渉を抑制するためにクラスごとにトラヒックを格納するバッファを分離して設けた。たとえば本願明細書では、大きく分けて2つのクラス、すなわち性能保証クラスと、性能非保証クラスが設定される。各々は要求性能に応じて、さらに細かなクラスに分けられ得る。詳細は後述する例示的な実施形態に関連して説明する。
本発明のある実施形態においては、中継器とバスマスタにおいて、要求性能が相対的に厳しい性能保証クラスのトラヒックに対しては、高優先度でかつレート制御の下で伝送処理が行われる。また性能保証クラスの中でも要求性能が相対的に厳しくないトラヒック、もしくは要求性能が存在しない非性能保証クラスのトラヒックに対しては、低優先度ではあるが要求帯域を超えてトラヒックを伝送する。これにより、まず性能保証クラスのトラヒックに対しては性能を保証することが可能になる。一方、性能保証クラスの中でも要求性能が相対的に厳しくないトラヒック、もしくは非性能保証クラスのトラヒックに対しては、ワースト見積もりによって発生するバスの余剰帯域を利用して伝送を行うことができる。要求性能ごとの干渉を抑制し、バスの利用効率を上げることで、性能を保証するのに必要なバス帯域を過剰に見積もる必要が無く、小さいバス動作周波数で性能保証可能なバスを構築することができる。さらに、バス動作周波数を抑制できることにより、バスの消費電力の抑制、実装面積の抑制、レイアウトの自由度の増大、バス配線の抑制が可能となる。
図2は、性能保証クラス/非性能保証クラスに応じて適用される、本実施形態による処理のポリシーを示す。
今、図2に示すように、性能保証クラスA、B、C、非性能保証クラスZがトラヒックのクラスとして規定されているとする。
クラスA、Bのトラヒックに関しては、中継器とバスマスタにおいて、要求帯域に基づく送信レート値(上限値)を設定しトラヒックの送信レートを制御することで、性能が保証される。特にクラスAは、クラスBより要求性能が厳しく、クラスAのトラヒックはより高優先度で伝送される。
クラスCのトラヒックは、中継器とバスマスタにおいて、要求帯域を超えた送信レートで送信される。これにより、性能を保証しつつ、バスの余剰帯域を利用することができる。
クラスZは、上述したクラスの中では最も低い優先度で処理される。非性能保証データを、送信レートの上限なく送信し、バスの余剰帯域を利用することができる。また、中継器においては、バッファをクラスごとに分離し、クラスごとの伝送制御により、クラス間の干渉を抑制することができ、かつ高優先のトラヒックをより低遅延で伝送することができる。これらにより、小さいバス動作周波数で、性能を保証しつつ、バスの利用効率を向上する事ができる。
なお、「ワースト見積もり」とは、設計時にバスシステムのワースト時のトラヒックの状態を想定して、性能を保証できるバス帯域を算出することである。実際はワースト時よりもトラヒック量が小さくなることがあり、それによって余剰帯域、すなわちバスに余裕が発生する。
<全体構成>
図3は、本発明の一実施形態である中継器103によって構成されるNoCの一例を示す。図3には、中継器103のバッファ構成例と、パケットによる伝送例とが示されている。
NoCは、バスマスタ101、マスタ側ネットワーク・インタフェース・コントローラ(Network Interface Controller;NIC)102、少なくとも1つの中継器(たとえば中継器103)、スレーブ側NIC104、およびスレーブ105を備える。
バスマスタ101(「マスタ」と略記することもある。)はマスタ側NIC102と接続される。マスタ側NIC102およびスレーブ側NIC104は、少なくとも1つの中継器(たとえば中継器103)を介して接続される。スレーブ側NIC104はスレーブ105と接続される。なお、以下の説明に置いては、上述の少なくとも1つの中継器は、いずれも同じ構成を有し、同じ動作を行う。したがって、以下では少なくとも1つの中継器として、中継器103を例に挙げて説明する。
中継器103は、パケット202を格納する入力バッファ部1404を備えている。入力バッファ部1404は、中継するパケット202のクラスに応じて、クラスごとにパケット202を格納する。このような入力バッファ部1404を有することにより、中継器103は伝送するパケット202の優先順位を調停することが可能となる。詳細は後述する。また、マスタ側NIC102および中継器103は、クラスごとにあらかじめ設定されたレートでパケットを送信するために、それぞれがレート制御部(後述)を備える。
マスタ側NIC102は、バスマスタ101から受信した通信データ201から、1以上のパケット202を生成する。マスタ側NIC102は、パケット202を、バスの動作周波数の1サイクルで送出可能なサイズに分割して伝送する。本願明細書では、バスの動作周波数の1サイクルで送出可能なサイズを有するデータ単位を「フリット」(flit)と呼ぶ。図3には、複数のフリット203が示されている。
伝送されるパケットは、中継器103が備える入力バッファ部1404に格納され、中継器103からフリット203単位で送出されながら、スレーブ側NIC104まで伝送される。スレーブ側NIC104は、受信した複数のフリット203から各パケットを構築し、さらに複数のパケットから元の通信データを構築して、スレーブ105へと伝送する。
図4は、NoCの構成要素の概念を示す。
本明細書では、以下のように用語を定義する。
バスマスタ101およびマスタ側NIC102を総称して「第1ノード211」と呼ぶ。
スレーブ105およびスレーブ側NIC104を総称して「第2ノード215」と呼ぶ。
1つまたは複数の中継器103を巨視的に見て1つの中継器と見なし、中継器206と呼ぶ。
第1ノード211、第2ノード215および中継器206全体を、「バスシステム5501」と呼ぶ。
以下、本発明の例示的な実施の形態にかかる中継器206について、図面を参照しながら説明する。
図5は、図3のNoCの構成を模式的に示す。
まず、マスタ側NIC102は、入力バッファ部(図示せず)においてマスタ101から各トラヒックのデータを受け取り、各トラヒックの要求性能を満たすのに必要な、マスタ101ごとに設定された送信レートでパケット202を送信する。
中継器103は入力バッファ部1404およびレート制御部1409を備えている。
入力バッファ部1404(バッファ部)は、宛先ごと、かつ、クラスごとに分離されたトラヒックを格納する入力バッファ1405を備えている。図5は、FIFO(First In, First Out)のバッファで構成する例を示している。このような入力バッファ部1404を備えることにより、中継器103では、高優先度のクラスのトラヒックが低優先度のクラスのトラヒックによる影響を受けずに送信の切り替えができる。なお、本実施形態においては、バッファを入力バッファとして説明するが、バッファを出力バッファとして備えていても、同様に適用することができる。その理由は、バッファを備える位置には依存せず、要求性能に応じてパケットを分離して格納でき、隣接する中継器またはスレーブ側NICへのパケットの送信レートを制御できればよいからである。
レート制御部1409は、クラスごとに設定された送信レートでパケットを伝送する。例えばレート制御部1409は、送信間隔という形態で、送信レートを設定してもよい。なお、本願明細書において、レート制御部は「中継制御部」と呼ぶこともある。
中継器103のレート制御部1409の送信レートについては、複数のマスタから発行されたパケットが合流するため、マスタ側NIC102において保証すべき送信レート以上の送信レート値をクラスごとに設定しておく。例えば、同じクラスに分類されたN個のマスタが存在し、所定の送信間隔で送信レートを設定する場合は、送信間隔はマスタ側NICの送信間隔をNで割った値以下に設定する。つまり、各マスタの保証すべき送信レートの和以上の送信レートで伝送する。また、マスタ側NICだけではなく、中継器においてもレート制御を行うことで、エンドツーエンドで各クラスの遅延保証とスループット保証が可能である。
具体的には、中継器での送信レートの設定方法として、各中継器を通過する保証すべきトラヒック量に基づき、中継器ごとに個別の送信レート値を設定する方法が考えられる。
図6(A)および(B)は、中継器ごとに設定される送信レート値の例を示す。
図6(A)は、各中継器を流れるトラヒックに基づいて、保証すべき最小限の送信レート値を設定をする例を示す。例えば、図6(A)に示すように、マスタA0、A1からの各トラヒックに関して保証すべき送信レートの和が、中継器R2のトラヒックの送信レートとして設定され制御される。このような方法によって各中継器の送信レートを設定すれば、各中継器のバス動作周波数を最小化できる。ただし、最適な周波数で各中継器を設計しなければならなくなるため実装コストが大きくなる。
他の例示的な実施形態として、各中継器に対し同一の送信レート値を設定することも考えられる。つまり、各クラスに対し、システム全体の中で保証すべきトラヒック量が最も多く合流する中継器の送信レートに基づいて、各中継器のトラヒックの送信レートとして設定され制御される。
例えば、図6(B)に示すように、中継器R2では、最も多くトラヒックが合流する中継器R3の送信レート値(マスタB0、B1、B2の保証レートの和)に基づいて、各中継器におけるトラヒックの送信レートを設定する。系全体の中で最も大きくなる送信レートを各中継器の送信レートとして設定することによりネットワーク全体でボトルネックができにくくなる。そのため性能保証が容易になり、また、単一の動作周波数で設計可能なためハードウェアの実装が容易になる。
なお、各中継器の中継制御部における送信レートとして、系全体の中で最も大きくなる送信レートを共通に設定するとしたが、これは一例である。系全体の中で最も大きくなる送信レートより大きい送信レートを設定してもよい。
ただし、各中継器が同一の動作周波数で動作し、かつ各中継制御部に同一の送信レートが設定される場合には、一部の中継器は必要以上に大きい送信レートが設定されることになる。その結果、必要以上に大きい動作周波数で動作することになる。
なお、保証すべき送信レートの和で動作させるための動作周波数が過剰に大きくなる場合には、すべての中継器を同一の動作周波数で駆動しなくてもよい。例えば、システムバスやローカルバスのように、バスの役割の単位で、動作周波数を変え、最大送信レートの中継器を選択し、送信レートを設定する。それにより、マスタに比較的近いローカルバスの中継器の動作周波数が、過剰に大きくなるのを抑えることができる。
入力バッファ部1404におけるクラス構成としては、例えば、遅延を考慮すべき遅延保証クラスと遅延を考慮する必要が無い非遅延保証クラスに分類することが考えられる。遅延保証クラスは、特にバースト性を有するクラスAと、それ以外のクラスBに細分類する。本実施形態では、細分類された下位クラスに応じて入力バッファを割り当てている。
なお、遅延保証クラスと非遅延保証クラスの下位のクラス構成に対しては、それぞれ任意のクラス数で任意の入力バッファ数を割り当てできる。
本実施形態では、「遅延保証クラス」の分類を、許容され得る遅延に基づいて行っている。しかしながら、遅延ではなく、スループットに基づいて「遅延保証クラス」の分類を行ってもよい。本実施形態においては、遅延およびスループットの少なくとも一方の保証に基づいて遅延保証クラスの分類を行えばよい。
中継器103の入力バッファ部1404およびマスタ側NIC102の入力バッファ部(図示せず)は、宛先ごとにバッファを分離して構成する。クラスごとの分離だけでなく、宛先ごとにバッファを分離することにより、宛先ごとのトラヒックの干渉を抑制することができ、ある宛先行きのトラヒックでバスの中が混雑した場合にも、他の宛先行きのトラヒックがバッファを確保できることが保証され、他の宛先行きのトラヒックを確実に伝送することができる。
また、バッファを分離すると、バッファをFIFOで構成した場合にクラスと宛先ごとに送信を切り替えることで、優先度間のトラヒックの干渉、異なる宛先間のトラヒックの干渉を抑制することができる。ただし、ランダムアクセス可能なメモリなどを用いて、送信の切り替えが可能で、かつクラスごと、および宛先ごとに使用するバッファを管理できていれば、バッファを物理的に分離しなくてもよい。
例えば、中継器103にランダムアクセス可能なメモリとともに、データであるアドレステーブルを設ければよい。アドレステーブルは、メモリ内を各クラスの宛先スレーブごとに格納するアドレスと格納したパケットとを管理するテーブルである。当該メモリおよびアドレステーブルを用いることにより、中継器103の入力バッファに格納された任意のパケットを自由に読み書きすることができる。これにより、バッファを論理的に分離された効果が得られる。低優先のパケットもしくはある特定の宛先行きのパケットがバッファに格納されている場合にも、それらと干渉することなく高優先のパケットもしくは別の宛先行きのパケットを伝送することが可能である。
また別の例として、低優先のトラヒックが使用するバッファを高優先のトラヒックが利用できるよう構成してもよい。この場合、高優先のトラヒックが利用できるバッファには、低優先のトラヒックに干渉されないバッファと干渉するバッファの両方が存在するが、干渉されないバッファが少なくとも1つ以上確保されていればよい。その結果、低優先度のトラヒックによる干渉を抑制することができる。
また、中継器103のレート制御部1409と、マスタ側NIC102のレート制御部(図示せず)との間で送信レートを制御する方式として、本実施形態では実装の簡便さからパケットの送信間隔を制御している。例えば、より大きい送信レートでトラヒックを伝送したい場合、送信間隔をより小さく設定することで、送信レートを大きくすることができる。具体的には、トラヒックの送信レートを2倍にしたい場合、送信間隔を半分に設定する。送信レートを半分にしたい場合には、送信間隔を2倍に設定する。しかしながら、例えば、単位時間もしくは単位サイクルあたりの送信データ量もしくは送信データ長を計測する方法など、他の手段によって実現してもよい。また、スレーブは、一般的にはメモリやメモリコントローラによって構成されるが、メモリだけではなくマスタやI/O、中継器など任意のノードであってもよい。
本実施形態にかかる中継器103によるフロー制御は、インターネットに適用されるフロー制御とは大きく異なっている。以下、図7を参照しながらその理由を説明する。
図7は、上述した中継器103の構成をインターネットに適用した場合と、半導体のバスシステムに適用した場合の効果の違いを示す。
インターネット(図7(A))では、マスタから送信されるデータのフロー制御は、TCP(Transmission Control Protocol)により、マスタとスレーブの間でのやり取りに基づいて行われる。その一方で伝送経路上の中継器では、伝送経路を決定するルーティング制御やQoS制御が行われる。しかしながらインターネットの中継器においては、フロー制御は行われない。インターネットでは、隣接するノードのバッファに空き状態に関係なくデータの送信を行うため、バッファ溢れによるデータのロスが発生する可能性がある。
図7(A)の例では、バッファに空きのある中継器1、中継器2、スレーブは、隣接するノードから送信されたデータを受信できる。一方、バッファに空きがない中継器3ではデータをバッファに格納できずバッファ溢れが発生してしまう。また、輻輳回避を目的として、バッファ溢れが発生する前にルータ側でパケット廃棄を行うことでもデータのロスが発生する。
一方、本実施形態が対象とする半導体のバスシステム(図7(B))では、伝送経路上の全てのノード間でフロー制御が行われる。具体的には、各ノードはデータを送信する際に、隣接する送信先のノードのバッファの空状態を確認し、バッファに空きがある場合のみデータを送信する。
このため、送信先のノードのバッファに空きがない場合には、データの送信を停止することでバッファ溢れを回避できる。図7(B)の例では、隣接する送信先のノード(中継器を含む。)のバッファに空きがあることを確認できたマスタ、中継器1、中継器3のみがデータを送信する。隣接する送信先ノードのバッファの空きがあることを確認できなかった中継器2はデータの送信を停止する。これにより、バッファ溢れによるデータの損失を回避することができる。このように本実施形態が対象とする半導体のバスシステムでは、伝送経路上でのデータのロスが発生しないことを前提としている点においてインターネット技術とは大きく異なっている。
上述の実施形態の開示を仮にインターネットに適用すると、レート制御されないトラヒックや、要求帯域を超えて伝送が行われるトラヒックに関して、過剰に送りつけられたデータにより、経路上でバッファ溢れ、およびパケットロスが発生する。そのパケットロスを検出した送信ノードは、動的にデータ量を小さくしてデータを送信し直すため、余剰帯域の利用効率を最大化すること、および遅延とスループットの性能を保証することが困難である。
一方、上述した、半導体のバスシステムでは、過剰に送りつけられたデータはロスすることなく、中継器のバッファに蓄積される。そのため、中継器は、例えば高優先度のデータが送信されていない時間帯を利用して、バッファにためておいた低優先度のデータを送信することができ、バスの利用効率を向上させることができる。中継器では高優先度のデータの伝送が行われていない時間帯が存在しており、その時間帯ではバスの帯域に余裕がある。後述するように、本実施形態にかかる中継器は、その余剰帯域を利用してデータを流すことができる。
<全体フロー>
図8は、本発明のある実施形態にかかる中継器を備えるNoCの動作を示すフローチャートである。
バスマスタ101が通信データ201をマスタ側NIC102へ送信する(S501)。マスタ側NIC102は、受信した通信データ201をパケット202に変換し、クラスごとに設定される送信レートで、パケット202を中継器103へ伝送する(S502)。
遅延保証クラスのクラスAおよびBの送信レートについては、マスタ側NIC102は、各クラスの要求帯域と遅延の性能とを保証できる送信レートを設定する。クラスCの送信レートについては、マスタ側NIC102は、要求帯域と遅延の性能を保証しつつ余剰帯域を利用するために、要求帯域を超える上限値で送信レートを設定するか、あるいは上限を設定しない。
非遅延保証クラス(クラスZ)の送信レートについては、マスタ側NIC102は、余剰帯域を利用するために送信レートの上限を設定しない。なお、これらの4クラスに対し、クラスA、B、C、Zの順に伝送の優先度が高いと定義する。つまりクラスAが最も高優先度で処理される。図2は、性能保証クラスA〜Cおよび非性能保証クラスZ間の優先度、およびレート制御に関する相違点を示す。
1つまたはそれ以上の中継器103は、受け取ったパケット202の宛先スレーブID及びクラスに応じて、優先度の高いクラスから順に、設定されたレート値でパケットを伝送する(S503)。
スレーブ側NIC104は、中継器103から受け取ったパケット202を元の通信データ201に変換し、通信データをスレーブ105へ伝送する(S504)。スレーブ105は受け取った通信データ201を解釈し、応答する必要があれば(S505のYes)、応答のための通信データを生成し、スレーブ側NIC104へ送信する(S506)。スレーブ側NIC104は、スレーブから受信した応答の通信データ201をパケット202に変換し、中継器103へパケット202を伝送する(S507)。中継器103は受信したパケット202の宛先を見て、転送先を決定して伝送する(S508)。マスタ側NIC102は、受け取ったパケット202を通信データ201に変換し、通信データ201をバスマスタ101へ送信する(S509)。
図9は、必要なバス動作周波数の見積もりを下げるために、少なくとも性能保証データと非性能保証データを区別可能なクラス分類規則の例を示している。バスシステムの設計者は、このクラス分類規則に沿ってバスマスタのクラスを設定する。中継器等の動作ではないが、以下に説明する。
各マスタのクラスをあらかじめ分類するために、まず設計時において設計者は、すべてのマスタが発行するトラヒックの要求仕様を定義する(S3201)。
設計者は、優先度が低く、バスが空いているときにだけ流せばよいマスタをクラスZに分類する(S3202)。クラスZは、非性能保証のトラヒックを発行するマスタである。例えば、プロセッサが出力するデータが、非性能保証のトラヒックに該当する。
設計者は、要求帯域以上のデータ転送が必要なマスタをクラスCに分類する(S3205)。例えば、クラスCには、一部のプロセッサ処理やグラフィックス系の処理を担うマスタが該当する。また、例えばフィルタ系の処理のように、時間変動で、常に一定レート以上の伝送の保証が必要で、時間的に見ると、先行的に平均要求帯域以上に伝送を行ってもよいトラヒックもクラスCに該当する。また、例えばフィルタ系の処理のように、時間的に変動し、常に一定レート以上の伝送の保証が必要なトラヒックであって、時間的に見ると、先行的に平均要求帯域以上に伝送を行ってもよいトラヒックを出力するマスタもクラスCに該当する。
設計者は、遅延保証クラスの中で、要求帯域や、許容遅延時間の要求が厳しく、バースト性のあるマスタをクラスAに分類する(S3203)。クラスAのマスタのトラヒックは最も優先的に伝送が処理されるため、中継器において他のクラスのトラヒックとは干渉なく伝送される。そのため、より小さいバス動作周波数で各トラヒックの遅延とスループットの性能を保証できる。
設計者は、残りのマスタをクラスBに分類する(S3204)。
図10は、マスタの発行するトラヒックの要求仕様の定義の具体例を示している。
要求仕様の定義は、種々のパラメータによって決定される。パラメータは、たとえばマスタIDやトラヒックの要求帯域、許容遅延時間、パケット生成時のパケット長、宛先スレーブIDである。スレーブがメモリの場合にはReadアクセスやWriteアクセスなどの通信データの種別も定義される。例えば、図10の表中の2行目の要素は、マスタIDが0のマスタが発行するトラヒックの属性を表す。このトラヒックは、要求帯域が800MBytes/s、許容遅延時間が0.2μ秒、1パケット長は10フリット(flit)、スレーブIDが0のスレーブに対する、Writeアクセスであることを示している。
<各構成要素>
図11は、バスマスタ101ごとに分類されるクラスおよびその具体例を示す。なお、本実施形態ではバスマスタ101が定まればクラスが定まるとしているが、あるバスマスタが複数種類の処理を行い、トラヒックを送出する場合には、トラヒック毎にクラスを定めればよい。
トラヒックごとにクラスを定める方法として、たとえば、以下の2通りの方法が考えられる。
たとえば、バスマスタが、トラヒックを構成するデータにクラスを指定する情報を付与してマスタ側NICに送出することにより、トラヒックごとにクラスを定めることが可能である。上述のように、各バスマスタのトラヒックの要求仕様は、設計者によって定義されている。バスマスタはトラヒックの要求仕様を当然に把握しているため、クラスを指定することが可能である。
または、マスタ側NICがトラヒックごとにクラスを定めてもよい。マスタ側NICは、トラヒックの識別子とクラスとを対応付けたテーブル(図示せず)を予めメモリに保持している。バスマスタが、トラヒックの要求仕様に応じた識別子をトラヒックを構成するデータに付与してマスタ側NICに送出する。マスタ側NICは、受け取ったトラヒックの識別子に基づいてテーブルを参照することにより、そのトラヒックのクラスを決定することができる。
バスマスタ101は、本実施形態においては、図9のクラス分類規則によって、各クラスに分類される。クラスは、遅延を考慮すべき遅延保証クラス(クラスA、B、C)と、許容遅延時間が大きく遅延を考慮しなくても保証ができる非遅延保証クラス(クラスZ)とに分類される。
更に、遅延保証クラスは、要求帯域を超えてトラヒックを送信するクラス(クラスC)、特に許容遅延時間が小さい、もしくは要求帯域が大きい、バースト性を有するトラヒックを発行するクラス(クラスA)、それ以外の遅延やスループットを考慮すべきクラス(クラスB)に区分する。
例えば、クラスAには、短い周期で大容量のデータ伝送を必要とするエンコーダやデコーダのマスタが分類される。クラスBにはペリフェラルやI/Oのマスタが分類される。クラスCには性能保証が必要なデータ転送を含む一部のプロセッサやグラフィックス系の処理を担うマスタが分類される。
非遅延保証クラス(クラスZ)には、スループットと遅延の性能を保証する必要が無いトラヒックで、優先度が低くバスが空いているときにだけ伝送されればよいトラヒックを発行するマスタが分類される。もちろん、上述の通り、トラヒックごとにクラスを分類してもよい。例えば、性能保証が不要なグラフィックス系の処理のトラヒックやプロセッサが出力するデータのトラヒックはクラスZに該当する。なお、プロセッサやグラフィックス系においても、遅延やスループットのいずれかの保証が必要なデータを含む場合は、クラスZとは区別して、性能保証のクラスとして設定してもよい。
なお、各クラスの中でも特に満たすべき性能(許容遅延時間、もしくは要求帯域)の厳しいトラヒックやマスタに対し、さらに優先度の高いクラスを設け、分類しても良い。
図47(a)〜(c)は、それぞれ、遅延保証クラスの優先度に関連する分類の例を示す。図の上方ほど優先度が高いことを示している。なお、図47(a)〜(c)はそれぞれ独立してクラス分けが行われる例である。図47(a)〜(c)の相互間では優先度の高低は関連がないことに留意されたい。
図47(a)は、これまで説明したクラスA〜Cの優先度の例を示す。優先度に関しては、クラスAが最も高く、次いでクラスB、クラスCの順に設定されている。
他の例として、クラスCの一部のプロセッサのトラヒックに対し、遅延を短くするために、クラスCの中の他のトラヒックと区別して別の高優先クラスDを設けてもよい。図47(b)は、クラスBより低優先度で、かつクラスCより高優先度のクラスDを示す。このようなクラスDには一部のプロセッサのトラヒックが該当する。少なくともクラスDに設定される要求帯域分のトラヒックは、低遅延化のために、クラスCのトラヒックより高優先で伝送を行う。
また、さらに他の例として、上述のクラスDに分類されるトラヒックを細分化してクラスを割り当ててもよい。図47(c)は、要求帯域を超えて送出するトラヒックを考慮した、さらに細分化されたクラスの例を示す。この例では、優先度の高い順に、クラスA、B、D、C1、C、C2が設定されている。
まず、クラスDに分類されるトラヒックのうち、要求帯域を超えたトラヒックのクラスを、クラスC1に設定する。これにより、要求帯域を超えたトラヒックは、クラスCに分類される要求帯域を超えたトラヒックより高優先度で送出される。
あるいは、クラスDに分類されるトラヒックのうち、要求帯域を超えたトラヒックのクラスを、クラスC2に設定してもよい。これにより、要求帯域を超えたトラヒックは、クラスCに分類されるトラヒックより低優先度で送出される。
当初クラスDに分類されたトラヒックの全体をできるだけ高優先で送る場合には、クラスDのトラヒックの遅延をクラスCより小さくすることができる。また、クラスDに要求される要求帯域を超えたトラヒックを低優先で送る場合には、その超過分のトラヒックをクラスC2に設定することにより、クラスCのトラヒックの遅延をより小さくすることができる。
また、クラスDのトラヒックを優先して送出するために、事前に余剰帯域を確保しておくことが考えられる。たとえば、クラスCに要求される帯域でトラヒックを送出し、さらにクラスDのトラヒックを伝送していない時間帯に、余剰帯域を利用して先行してクラスCのトラヒックを送出する。これにより、将来的には、先行して送出したクラスCのトラヒックの伝送を行う必要がなくなる。これは、将来の余剰帯域を確保することを意味する。具体的には、クラスDのトラヒックを伝送していない時間帯に、クラスCのトラヒックを要求帯域以上に伝送しておく。これにより、将来のクラスCの送信量を減らし、余剰帯域を他のトラヒックの送出に充てることができる。結果として、クラスCのトラヒックとの干渉を抑制することができ、クラスDのトラヒックの遅延時間を短くすることができる。
図12は、マスタ側NIC102の構成を示す。マスタ側NIC102は、主としてハードウェア回路として実現されている。各構成要素は、複数の回路素子の組合せによって実現される。なお、1つの集積回路、または複数の集積回路によって実現されていてもよい。
マスタ側NIC102は、宛先解析部801、入力バッファ部802、マスタ情報記憶部803、レート制御部804、出力切替部805、パケット生成部806、およびバッファ利用情報通信部807を備えている。
宛先解析部801は、バスマスタ101との通信によって、通信データ201、宛先スレーブID705、締切時刻707、送信元ID704を受信し、各データを格納する。
入力バッファ部802は、通信データ201を宛先ごとに格納する。
マスタ情報記憶部803は、宛先解析部801がバスマスタ101との通信で取得された、そのバスマスタ101を示す送信元ID704、そのバスマスタ101のクラス、締切時刻707、あるいは宛先スレーブID705を格納する。
レート制御部804は、レート値記憶部1003にあらかじめ設定されたレート値に基づいて送信レートを決定し、パケットの送信レートを制御する。本願明細書では、レート制御部を「送信制御部」と呼ぶこともある。
要求性能が厳しい性能保証のデータを送信するバスマスタは、送信レートを保証すべき送信レートに設定する。また、要求帯域を超えて送信するバスマスタは、余剰帯域を利用するために、トラヒックのレート値(上限値)を要求帯域を超えた送信レートに設定するか、もしくはトラヒックのレート値(上限値)を設定しない。非性能保証のクラスのトラヒックに対しては、バスマスタはトラヒックの送信レートのレート値(上限値)を設定しない。これにより、常にトラヒックを送信可の状態とし、余剰帯域を利用して伝送を行うことが可能となる。
なお、レート値(上限値)を要求帯域を超えた送信レートに設定する場合には、バスシステム全体のボトルネックとなるノードまたはリンクの処理能力に基づいてレート値(上限値)を決定してもよい。例えば、バスシステムの中のある特定のリンクが、トラヒックの最も集中する、バスシステム全体のボトルネックであるとする。このとき、そのリンクの利用効率を最大化できるように、バスの動作周波数とバス幅からリンクの伝送能力を求め、伝送能力に基づいて送信レート値(上限値)を決定する。また、この時に、あるユースケースを想定し、他のバスマスタから送信される性能保証のデータの要求帯域分を差し引いて余剰帯域を求め、レート値を決定してもよい。また、スレーブがメモリの場合は、通信データに対するメモリの処理能力がボトルネックとなりうる。そのため、メモリが継続的に処理できるだけのデータ量を送信するのに必要な値を、送信レート(上限値)として決定してもよい。これにより、過剰にトラヒックを伝送することなく、バスシステムのボトルネックの利用効率を最大化することができる。
出力切替部805は、入力バッファ部802に格納された通信データ201と、レート制御部804の送信可否、バッファ利用情報通信部807から取得したスレーブ側の中継器1402の空きバッファ情報に基づいて、送信するバッファを切り替え、入力バッファ部802に格納したデータを、パケット生成部に出力する。
パケット生成部806は、出力切替部805から送られてきた通信データをパケットに変換して、フリットに分割して伝送する。パケットに変換する際、パケット生成部806は、後述する通り、通信対象となるデータにヘッダおよび終了コードを付与する。
図13は、マスタ側NIC102の動作フローを示す。
宛先解析部801は、バスマスタ101との通信で情報を取得し、マスタ情報記憶部803に伝送するべきトラヒックの、宛先スレーブID、締切時刻を記録する(S901)。締切時刻を示す情報はマスタ側NIC102によってパケットに付与される。また本実施形態においては、許容遅延時間については、例えば、送信元ノードから送信される時刻と送信先ノードに到着する時刻の最大の相対時間(差分値)で表現される。締切時刻については、送信先ノードへ到着する絶対時間で表現される。これらは絶対時間もしくは相対時間のいずれかに統一して表現してもよい。
宛先解析部801は、受信した通信データ201を入力バッファ部802の宛先スレーブごとに対応する入力バッファに格納する(S902)。
出力切替部805は、入力バッファの送信可否をレート制御部804に問い合わせる。レート制御部804は、受信した問い合わせに応じて、設定された送信レートを超えないよう、出力切替部805へ送信可否を通知する(S903)。
バッファ利用情報通信部807は、スレーブ側の中継器1402の空きバッファ情報を取得する。出力切替部805は、バッファ利用情報通信部807から取得した空きバッファ情報に基づいて、入力バッファ部802に格納された通信データに対し、送信先の空きバッファを割当てる。
出力切替部805は、通知された送信可否と、バッファ割当結果に基づいて、送信可の入力バッファから通信データ201を転送する(S904)。
パケット生成部806は、受信した通信データ201に対し、マスタ情報記憶部から取得した情報(送信元ID704、宛先スレーブID705、締切時刻707、マスタ情報記憶部803にあらかじめ設定されたクラス706)とバッファ割当結果である入力バッファ番号708に基づいてヘッダ701を生成する。そしてパケット生成部806は、通信データ201にヘッダ701と終了コード702を付与し、パケット202を生成し、パケットをフリットに分割して転送する(S905)。
図14は、パケット202のデータ構造を示す。
パケット202は、通信データ201、ヘッダ情報701、および終了コード702を有する。
通信データ201は、バスマスタ101がスレーブ105に通信する実データであり、例えば、動画の画像や音声のデータである。
ヘッダ情報701は、パケットの開始を判定するための開始コード703、マスタを識別するための送信元ID704、伝送先であるスレーブを識別するための宛先スレーブID705、トラヒックのクラス分類を示すクラス706、スレーブ105、またはバスマスタ101に通信データが到着する締切時刻707、および各中継器103で格納される入力バッファ番号の割当結果708の情報を有する。
終了コード702は、パケットの終了を示す情報である。
なお、本実施形態では、パケット202を生成する際に、クラス706を含めてヘッダ701を生成することで、中継器103で、データをクラスごとに区別して伝送を行うことができる。この際、クラス706は、データの要求性能の違いを識別できる情報(識別情報)であればよく、例えば、クラス706ではなく、それぞれのデータ区別に基づく伝送の優先順位情報を含めて、パケットを生成してもよい。また、データを識別できる情報の他の例として、各中継器で格納可能なバッファ番号の組合せを含めてパケット生成し、中継器では格納されたバッファ番号で伝送の優先順位を決めてもよい。
図15は、マスタ側NIC102に設けられるレート制御部804の構成を示す。
レート制御部804は、送信可否決定部1001、タイマー処理部1002、およびレート値記憶部1003を有する。
送信可否決定部1001は、出力切替部805から各入力バッファの送信可否の問合せを受信すると、送信レートに基づいて送信可否を決定し、決定結果を出力切替部805へ通知する。
タイマー処理部1002は、送信レートを制御するためにパケット201の送信間隔を計測するためのタイマーを有する。
レート値記憶部1003は、マスタから送信されるパケットの送信レートを制御するために、あらかじめ設定された送信レートの値を記憶する。
レート制御部804は、各構成要素が別個のハードウェアによって実現される。たとえば送信可否決定部1001およびタイマー処理部1002は、各々が複数の回路素子の組合せ、あるいは1つの集積回路として実現されていてもよい。レート値記憶部1003の送信レートの設定方法は、例えば、バスシステムが起動する電源投入時に不揮発性のメモリから読み込む方法、信号線の配線を介し、別のノードから設定された送信レートを読み込む方法がある。なお、レート制御部804は、コンピュータプログラムおよびそのプログラムを実行するコンピュータ(集積回路)として実現されてもよい。
図16は、レート値記憶部1003が記憶するレート値を示す。送信レートをパケットの送信間隔で制御する場合、あらかじめ送信間隔の値が設定される。なお、送信レートはクラスごとに同じ値を設定しても、マスタ単位で個別に値を設定しても良い。なお図16の「送信間隔」という文言は記載の便宜のためである。実際には記憶されていなくてもよい。記憶領域などを明確にすることにより、送信間隔の値そのもの、または送信間隔の値に対応する情報(換言すれば送信レートの値を示す情報)が保持されていればよい。
なお、以下で参照する図面において、類似の形式でデータ構造が記載されているものについても、1行目に記載されている文字は実際には記憶されていなくてもよい。
図17は、レート制御部804の動作フローを示す。
タイマー処理部1002は、設定されたレート値をレート値記憶部1003から読み込む(S1101)。設定の具体例として、遅延保証クラスに分類されるクラスに対しては遅延とスループットの性能を保証できるレート値を設定し、非遅延保証クラスに分類されるクラスに対しては余剰帯域の利用効率を最大化するためにレート値の上限を設定しない。
出力切替部805から入力バッファ部802の入力バッファの送信可否の問合せを受信した場合(S1102のYes)、送信可否決定部1001は、タイマー処理部1002のタイマー値に基づいて送信可否を決定する(S1103)。
送信可否決定部1001は、決定された送信可否情報を出力切替部805へ通知する(S1104)。
図18は、送信可否決定部1001による送信可否の決定処理S1103の動作フローを示す。
送信可否決定部1001は、タイマー処理部1002から、入力バッファごとの現在のタイマー値を取得する(S1201)。
タイマー値が正でない場合(S1202のNo)、送信可とし、正の場合(S1202のYes)、送信不可とする。
図19は、タイマー処理部1002の動作フローを示す。
タイマー処理部1002は、送信レートを制御するためのタイマー制御を行う。処理の開始に先立って、まずタイマー処理部1002は、タイマー処理部1002が有するタイマーの値を「0」に初期化する。タイマー処理部1002は、入力バッファの通信データを送信する時に、送信結果を受信した場合(S1302のYes)、タイマー値をレート値記憶部1003から読み込んだレート値にセットする(S1303)。
タイマー処理部1002は、タイマーの値が0になるまで、バスの動作周波数の1サイクルごとにデクリメントする(S1304)。
上述の処理によれば、タイマー処理部1002は、タイマーが正の間は、対応するバッファに格納された通信データ201の送信を抑制する。これにより、送信レートを設定されたレート値以上にならないように制御することができる。なお、前述したように、送信レート制御の実現方法は、ここで示した方法以外で実現してもよい。
図20は、マスタ側NIC102と中継器103で行う一般的なフロー制御を説明する図である。フロー制御とは、送信先の通信状況を受信して、通信状況に応じてパケットを送信する制御のことを示す。例えば、マスタ側NIC102が送信元から送信先までの経路上にある中継器やスレーブ側NICの空きバッファ情報を取得し、空きバッファ情報に基づいてパケットを送信する制御は、フロー制御の一例である。
図21(A)および(B)は、フロー制御とレート制御の違いを示す。図21(A)は、レート制御を行ったときの単位時間当たりの伝送量を示し、図21(B)は、レート制御を行わなかったときの単位時間当たりの伝送量を示す。図21(A)に示されるように、レート制御により、マスタ側NICもしくは中継器から送信されるパケットの単位時間あたりの伝送量が、あらかじめ設定されたレート値(上限値)を超えないように制御される。図21(B)に示されるように、レート制御を行わずフロー制御を行った場合には、フロー制御による物理帯域内での伝送制御が支配的になる。例えば、送信レートに制限なく、バスの物理帯域をすべて利用してパケットを伝送することができる。また、要求帯域を超えてレート値(上限値)を設定する場合にも、レート値を十分大きくすることで、フロー制御による伝送制御が支配的になる。また、本実施形態におけるフロー制御については、中継器103とマスタ側NIC102では送信先の入力バッファ部の空きバッファ情報に基づいてパケットを送信するフロー制御を行う。
<中継器>
図22は、中継器103の構成を示す。
中継器103は、マスタ側の中継器1401あるいは、マスタ側NIC102からパケット202を受信し、スレーブ側の中継器1402、あるいは、スレーブ側NIC104へとパケット202を伝送する。それらの間は、バス配線で接続されている。
中継器103は、クラス解析部1403、入力バッファ部1404、出力ポート選択部1406、バッファ情報記憶部1407、バッファ利用情報通信部1408、レート制御部1409、出力調停部1410、クラス記憶部1411、およびスイッチ切替部1412を備える。
クラス解析部1403は、パケット202を受信してパケットの開始コード703に基づいてヘッダ情報701を解析し、クラス、宛先スレーブID、締切時刻を取得する。またクラス解析部1403は、バッファ利用情報通信部1408からスレーブ側の中継器1402の空きバッファ情報を取得し、クラスに対応した入力バッファの割当を行う。割当結果は、バッファ情報記憶部1407に記録される。
入力バッファ部1404は、パケットをクラスごとに格納する。
出力ポート選択部1406は、クラス解析部1403により取得した宛先スレーブIDから出力ポート番号を決定し、バッファ情報記憶部1407に記憶する。
バッファ情報記憶部1407は、入力バッファ部1404に格納されたパケット202の情報(クラス、宛先スレーブID、締切時刻、出力ポート番号、スレーブ側マスタの入力バッファ割当結果)を記憶する。
バッファ利用情報通信部1408は、スレーブ側の中継器1402のバッファの空き情報を取得し、また、バッファ情報記憶部1407から、入力バッファ部1404の空き情報を取得し、マスタ側の中継器1401のバッファ利用情報通信部1408へ空き情報を通知する。
レート制御部1409は、バッファ情報記憶部1407から、入力バッファ部1404に格納されたパケット202のクラスを取得し、クラスごとにパケットの保証すべき送信レートに基づいて、パケットの送信を制御する。なお、クラスごとに保証すべき送信レートは、レート値記憶部2003(詳細は後述。図22に記載なし)に設定されたレート値に基づき決定する。
レート制御部1409は、レート制御の結果を、パケットの送信許可信号として、出力調停部1410へ通知する。出力調停部1410は、取得した送信許可信号に基づいて、保証すべき送信レート以下のパケットから順に高優先度で調停し、送信レートを超えるパケットは低優先度で調停を行う。
後述するレート値記憶部2003に設定されるレート値については、同じクラスに属するトラヒックが要求帯域を維持しつつ合流できるように、マスタ側NIC102で設定した保証すべきレート値以上の値を設定する。例えば、送信間隔によるレート制御の場合、同じクラスに属するマスタ数(N)で、マスタ側NIC102で設定した送信間隔(P)を割った値(P/N)を用いて中継器103の送信間隔を設定することで、それぞれのマスタの要求帯域を維持してトラヒックを伝送できる。また、非遅延保証クラスに対しては、バスの余剰帯域の利用効率を高められるように、送信レートの上限を設定しない。
出力調停部1410は、クラス記憶部1411に記憶したクラス優先度と、バッファ情報記憶部1407から取得した締切時刻、レート制御部1409から取得した送信許可信号とにより、送信するパケットの送信順位を調停する。
クラス記憶部1411は、あらかじめクラスに対応した優先度を記憶している。
図23は、クラス記憶部1411に記憶されるクラスの優先度情報を示す。
この例では、優先度の値が小さいほど、優先的に伝送処理される。例えば、クラスAの優先度の値は、「1」であり、クラスAは最も優先的に処理される。クラスBの優先度の値は「2」であり、クラスCの優先度の値は「3」であるから、クラスBはクラスAの次に優先して処理される。クラスCは、クラスBの次に処理される。設計したクラス数に応じた任意の優先度を割り当てればよい。
中継器103の出力調停部1410は、ここで定義された優先度と締切時刻に基づき、優先度が高く、締切時刻の早い順に送信すべき入力バッファを調停し、送信処理する。
図24は、中継器103の出力調停部1410が送信すべきバッファの優先順位を調停した結果の具体例である。例えば、出力ポート番号ごとに、かつ、クラスA、クラスB、クラスC、クラスZのクラスごとに、入力バッファにパケットが存在するとする。いま、たとえば出力ポート番号0および1に対して、それぞれ、クラスA、B、C、Zの各入力バッファにパケットが存在しているとする。まず出力調停部1410は、出力ポート番号0に対し、送信可のパケットが格納されている入力バッファの中から、一番優先度が高いクラスの入力バッファ(例えば、クラスAの入力バッファ)を抽出する。さらに出力調停部1410は、抽出された入力バッファの中で、締切時刻の最も早い入力バッファを抽出する。入力バッファがひとつも抽出されなかった場合、出力調停部1410は、送信不可の入力バッファから、クラスの優先度が高く、締切時刻が早い順に入力バッファをひとつ抽出する。出力調停部1410は、抽出された結果を、出力ポート番号0に対して送信する入力バッファとする。次に、出力調停部1410は、出力ポート番号1に対して、上記の調停処理で送信する入力バッファを選択する。
スイッチ切替部1412は、出力調停部1410の調停結果とバッファ情報記憶部1407に記憶される出力ポート番号とに基づいてスイッチを切り替えてパケットを伝送する。
なお、本実施形態においては、同一クラス内では締切時刻の比較に基づいて伝送順位を決定する方法を説明する。締切時刻は、同じクラス内でパケットの伝送に対する時間的な緊急度を表す情報であればよい。例えば、締切時刻は、宛先スレーブに通信データが到着する時刻、あるいは送信元マスタにスレーブからの返信が到着する時刻であってもよい。同様に、許容遅延時間は、例えばマスタからスレーブに到着するまでの往路にかかる時間、あるいは送信元マスタに返信が戻ってくるまでの往復にかかる時間であってよい。また、締切時刻の代わりに、パケットが送信された時刻や、送信時刻からの経過時間(マスタ側NIC102および中継器103の処理時間の累積値の情報)、送信時点でそれまでに送信されたパケット数の値(パケットのマスタ側NIC102における送信順序を表す送信カウンタの値)などで、伝送に対する時間的な緊急度を表してもよい。本願明細書では、これらの情報を包括して「締切時間に関する時間情報」と表現することがある。
なお実装にあたっては、時刻は、例えば、半導体バスシステムに供給されるバスクロックによって駆動されるカウンタ値によって表現される。また、締切時刻の代わりに送信時刻からの経過時間を用いる場合、締切時刻の代わりに経過時間を計測するためのカウンタ値を保持する領域をヘッダに用意し、マスタ側NIC102および中継器103において動作クロックごとにカウンタ値を+1増やせばよい。あるいは、締切時刻の代わりにパケットの送信順序を表す送信カウンタを用いる場合、パケット生成部806に送信カウンタを用意し、パケット生成部806はパケットを送信するごとに送信カウンタを+1増やし、送信時点での送信カウンタの値をヘッダに付与することで実現できる。なお、これらはアップカウンタでの例を示したが、アップカウンタではなくダウンカウンタで実装してもよい。
図25は、中継器103の動作フローを示す。
クラス解析部1403は、マスタ側の中継器1401からパケット202を受信する(S1501)。
クラス解析部1403は、パケット202のヘッダ情報701(宛先スレーブID、クラス、締切時刻)を解析し、バッファ情報記憶部1407に登録する(S1502)。
クラス解析部1403は、パケット202から入力バッファ番号を抽出し、パケットを対応する入力バッファ部1404の入力バッファ1405に格納する(S1503)。
出力ポート選択部1406は宛先スレーブIDに基づいてパケット202の出力ポート番号を選択する(S1504)。なお、出力ポート番号の選択には、一般的に中継器の接続関係によって静的に決まるルーティングテーブルを利用する方法や、宛先スレーブIDを用いてある一定の規則に基づく計算によって求める方法などがある。
レート制御部1409は各クラスの出力ポート番号ごとにパケットの送信レートを計測し、実際の送信レートが設定されたレート値を超えるかどうかを出力調停部1410が判断できるように、入力バッファ部1404に格納されたパケットの送信許可を決定する(S1505)。なお、レート制御部1409に設定されるレート値(上限値)を、保証すべきレート値に設定されたトラヒックに対しては、そのトラヒックのレートを保証することができる。このトラヒックを、本実施形態においては、第1の帯域(そのトラヒックの保証すべき帯域)を利用して伝送するトラヒックと呼ぶ。また、保証すべきレート値を超えて設定されたトラヒックに対しては、送信レートを保証しつつ、余剰帯域を利用することができる。このトラヒックを、本実施形態においては、第1の帯域と第2の帯域(余剰帯域)を利用して伝送するトラヒックと呼ぶ。また、レート制御のレート値(上限値)がない場合は、例えば送信間隔を「0」に設定することで、連続的にトラヒックを送信することが可能になり、余剰帯域を、最大、バスの物理帯域上限まで利用することが可能になる。
バッファ利用情報通信部1408は、スレーブ側の中継器1402のバッファを割り当てるときに利用する空きバッファの情報を取得する(S1506)。空きバッファの情報とは、スレーブ側の中継器1402の各クラスの宛先スレーブごとに割り当てられた各入力バッファ1405に対し、格納されているパケットの有無と空きフリット数である。なお、入力バッファ部1404がひとつのランダムアクセス可能なメモリと、アドレスを各クラスの宛先スレーブごとに管理するアドレステーブルとにより構成される場合、ひとつの入力バッファで複数のパケットを格納できるため、各クラスの宛先ごとに対応した空きパケット数と空きフリット数とを空きバッファの情報とする。
クラス解析部1403は、スレーブ側の中継器において格納される入力バッファが未割当の入力バッファに対し、スレーブ側の中継器1402が持つ空きバッファを、各クラスの宛先スレーブIDごとに割り当てる(S1507)。
出力調停部1410は、入力バッファ部1405に格納されたパケットの中で送信するパケットを優先度の高い順に調停し、余剰帯域があればレート制御部1409が送信不可としたパケットに対しても、低優先度で送信順序を調停する(S1508)。中継器におけるレート制御部1409は、要求帯域に基づくレート値(上限値)で伝送を制御することで、必要な性能は保証しつつ、要求帯域を超えるトラヒック、もしくは非性能保証のトラヒックに対しては、バスに余剰帯域があれば伝送を行うことで、余剰帯域の利用効率を向上する。
スイッチ切替部1412は、出力調停部1410の決定結果に基づき、パケット202を送信するためにスイッチを切替え、パケット202の送信を開始する(S1509)。
パケット202の送信が終了した場合(S1510のYes)、バッファ情報記憶部1407が該当する入力バッファの情報を初期化する(S1511)。終了しない場合(S1510のNo)はパケットの送信を継続する。
図26は、中継器103のクラス解析部1403の入出力関係を示す。
クラス解析部1403は、マスタ側の中継器1401からパケット202を受信し、転送先を決めるために、出力ポート選択部1406に対し、宛先スレーブIDを通知する。そしてクラス解析部1403は、出力ポート番号を取得し、バッファ情報記憶部1407に出力ポート番号を記録する。クラス解析部1403は、スレーブ側の中継器1402の入力バッファを割り当てるために、バッファ利用情報通信部1408から、スレーブ側の中継器1402の空きバッファ情報を各クラスの宛先スレーブIDごとに取得する。クラス解析部1403は、バッファ情報記憶部1407に、パケット202のヘッダ701と出力ポート番号を記録させる。クラス解析部1403は、入力バッファ部1404に、パケット202を格納させる。
図27は、中継器103のレート制御部1409の構成を示す。レート制御部1409は、マスタ側NIC102のレート制御部804と同様に、タイマーを用いてパケットの送信間隔を制御する方式でレート制御を行う。タイマー処理部2002が各クラスの出力ポート番号ごとに独立にタイマーを管理し、送信可否決定部2001は、クラス、出力ポート番号に対応するタイマー値を取得して送信可否を決定する。また、レート値記憶部2003には、クラスごとに設定されたレート値が記憶され、各クラスの出力ポートごとに、送信レートがそのレート値を超えるかどうか判定できるように入力バッファの送信可否を決定する。なお、出力調停部1410は、余剰帯域を利用するために、送信不可の入力バッファの中から送信を行うこともある。また、各クラスのレート値は、要求性能に応じてあらかじめ設計者が設定しておく。例えば、性能保証トラヒックは、保証すべき伝送レートでレート値を設定し、非性能保証トラヒックは、レート値(上限値)を設定しない。また、レート制限を設定しない場合は、例えば送信間隔の値を「0」に設定しておけばよい。
図28は、レート制御部1409の動作フローを示す。
まず、レート制御部1409のタイマー処理部2002は、レート値記憶部2003から各クラスのレート値を読み込む(S2101)。
送信可否決定部2001は、出力調停部1410から各入力バッファの出力ポート番号とクラスを、取得する(S2102)。
送信可否決定部2001は、取得した出力ポート番号とクラスに対してタイマー処理部2002のタイマー値に基づき送信可否を決定する(S2103)。
送信可否決定部2001は、出力調停部1410へ送信可否情報を通知する(S2104)。
図29は、レート制御部1409の送信可否の決定処理の動作フローを示す。
レート制御部1409の送信可否決定部2001は、出力調停部1410から出力ポートとクラス情報とを受信する(S2201)。
送信可否決定部2001はタイマー処理部2002から出力ポートとクラスに対応するタイマー値とを取得する(S2202)。
送信可否決定部2001は、取得したタイマー値が正の場合は(S2203のYes)送信不可とする。タイマー値が正でない場合(S2203のNo)、送信可否決定部2001は、性能保証クラスの場合(クラスZでない場合)(S2205のNo)に送信可とし、非性能保証クラス(クラスZ)の場合(S2205のYes)、送信不可とする。
図30は、タイマー処理部の管理情報の具体例を示す。例えば、図30の表の2行目は、出力ポート番号0に対するクラスAに対するタイマー値が、「0」であることを示す。タイマー値が「0」であるということは、前回のパケット送信時刻から設定された送信間隔の時間以上、パケットを送信しなかったため、「送信可」の状態である。また、同じく3行目は、出力ポート番号0に対するクラスBに対するタイマー値が6であることを示しており、レート値記憶部2003に設定された送信レート以下にパケットの送信レートを制限するために、送信が抑制される「送信不可」の状態であり、6サイクル後にタイマー値は0になり、「送信可」の状態になる。また、非性能保証クラスに対しレート値を設定しない場合、例えば、送信間隔は「0」で設定しておくことで、タイマー値は後述の動作により常に「0」となる。非性能保証クラス(例えば、クラスZ)は、常に低優先度で処理するために、タイマー値によらず、常に送信不可となる。また、要求帯域を超えて伝送を行うクラス(例えば、クラスC)または非性能保証クラスの場合は、送信可のパケットが入力バッファに存在しなければ、送信不可であっても、送信されることがある。これにより、バスの余剰帯域を利用することができる。
図31は、レート制御部1409のタイマー処理部2002の動作フローを示す。
タイマー処理部2002は、動作開始時に各タイマー値を0に初期化し、パケットを送信したタイミングで出力調停部1410から送信結果(送信された入力バッファのクラスと出力ポート番号)を受信した場合(S2401がYes)、対応するタイマー値をレート値記憶部2003に設定されたレート値(この場合は送信間隔)で設定する。送信結果を受信した場合(S2401のYes)も受信しなかった場合(S2401のNo)も、バス動作周波数のサイクルごとにタイマー値を1ずつ小さくし、0になるまでタイマー値を小さくする(S2403)。なお、本実施形態のタイマー処理部2002は、中継器103での送信レート制御の実現例であり、別の方法で実現しても良い。具体的には、ビットレートで送信レートを制御しても良いし、ある一定期間に送信するパケットのサイクル数を指定する方法、サイクル単位ではなく時間単位で送信間隔を指定する方法などでもよい。なお実施形態によっては、長期的に見て送信レートを満たしていれば、短期的に見て、十分小さい量の送信レートを超えてもよい。
図32は、レート制御値記憶部2003がクラスごとに管理している送信レート値の一例を示す。例えば、レート制御が送信間隔によって制御される場合、設定される値は送信間隔を表す。図32において、クラスAの値は「10」で設定され、中継器103の出力ポートごとに、最大で10サイクルごとにパケットを送信できる。クラスZは、値が「0」で設定され、クラスZのトラヒックのパケットは、中継器103において送信間隔を空けることなく連続して送信できることを示す。なお、設定された送信間隔は小さい方が、送信レートは大きくなり、送信間隔が大きい場合は、送信レートは小さくなる。また、レート制御値記憶部2003の送信レートの設定方法は、例えば、バスシステムが起動する電源投入時に不揮発性のメモリから読み込む方法、信号線の配線を介し、別のノードから設定された送信レートを読み込む方法がある。
図33は、出力調停部1410の動作フローを示す。
出力調停部1410は、クラス記憶部1411から、各クラスの優先度を取得する(S2801)。
出力調停部1410は、送信すべき入力バッファ1415を選択するために、バッファ情報記憶部1407から、入力バッファ1415の情報(出力ポート番号、クラスの属性情報、締切時刻)を取得する(S2802)。
レート制御部1409へ送信可否を問い合わせるために、出力調停部1410は入力バッファの出力ポート番号とクラスの属性情報を通知し(S2803)、レート制御部1409から送信可否を取得する(S2804)。
出力調停部1410は、取得した送信可否、出力ポート番号、クラスの属性、締切時刻に基づき、送信可の入力バッファの中から、出力ポート番号ごとにクラスの優先度が最も高いバッファを選択する。優先度が重複した場合には、出力調停部1410は、締切時刻が早いバッファを選ぶ。これにより出力調停部1410は、送信すべき入力バッファを調停する(S2805)。
出力調停部1410は、スイッチ切替部1412へ送信すべき入力バッファと出力ポート番号の組合せを通知し(S2806)、送信した入力バッファ1415の結果(送信する入力バッファのクラスと出力ポート番号)をレート制御部1409へ通知する(S2806)。
図34は、出力調停部1410が送信すべき入力バッファ1415を調停する処理(S2805)のフローチャートを示す。
出力調停部1410は、送信可の入力バッファを高優先度で伝送し、送信不可の入力バッファを送信可の入力バッファより低優先度で伝送するよう制御する。
出力調停部1410は、入力バッファ1415の中から送信可の入力バッファを抽出し(S2901)、抽出された入力バッファの中から、出力ポート番号ごとにクラスの優先順位の最も高い入力バッファを抽出する(S2902)。
出力ポート番号ごとに、出力調停部1410は締切時刻の最も早い入力バッファを抽出し、送信すべき入力バッファとする(S2903)。
出力調停部1410は、送信するべき入力バッファが抽出できなかった出力ポート番号に対し、出力ポート番号ごとに、クラスA、Bを除くクラスの入力バッファ1415の中から送信不可の入力バッファを抽出する(S2904)。出力調停部1410は、抽出された入力バッファの中から出力ポート番号ごとに、クラスの優先順位の最も高い入力バッファを抽出する(S2905)。出力調停部1410は、抽出された入力バッファの中から出力ポート番号ごとに、締切時刻の最も早い入力バッファを抽出する(S2906)。
図35は、中継器103のバッファ情報記憶部1407の管理情報の構成例を示す。
バッファ情報記憶部1407は、各入力バッファ1405に対応するクラスと宛先スレーブIDを記憶している。バッファ情報記憶部1407には、各入力バッファ1405に格納されたパケットの有無や、締切時刻、宛先スレーブIDに基づいて選択された出力ポート番号、およびスレーブ側の中継器1402の入力バッファの割り当て結果(入力バッファID)が格納されている。
例えば、図35の表の2行目の要素について説明する。この要素は、中継器103の入力ポート番号0の入力バッファID0に対応する情報を示している。この要素に関しては、入力バッファ1405には、クラスAで宛先スレーブIDが0のパケットが格納されており、そのパケットの締切時刻は100、出力ポート選択部1406によって割り当てられた出力ポート番号は0である。クラス解析部1403によって割り当てられたスレーブ側の中継器1402の入力バッファIDは0である。
同じく表の3行目の要素は、入力ポート番号0の入力バッファID1に対応する情報を示している。この要素に関しては、入力バッファ1405には、クラスAの宛先スレーブIDが1のトラヒックのパケットが格納される。この要素では、データの有無が「無し」になっていることより、格納されたパケットが存在しないことがわかる。
図36は、本発明の他の実施形態として適用できるNoC網の例を示している。
なお、本発明の一実施形態にかかる中継器は、要求性能に応じたバッファ分離構成と伝送制御方式によって性能保証に必要なバス動作周波数を小さくし、余剰帯域の利用効率を大きくしている。そのため、NoC網の中継器の接続関係には依存せず、図36(a)のメッシュ型のNoCや、図36(b)のトーラス型、図36(c)のツリー型のような接続関係であっても適用することができる。
上述の実施形態によれば、中継器において上述したクラス分類によってバッファを分離して備え、低優先度クラスによる干渉を抑制しつつ、必要なバス帯域を小さくできた。しかしながら、パケットの種別によってバッファを分離してもよい。
パケットには、コマンドを送るパケットとデータを送るパケットという、2つの種類が存在する。
コマンドは2種類存在する。すなわち、スレーブに対するReadアクセスの際に、データの読み出しに必要となるリクエスト情報を含むコマンドと、スレーブに対するWriteアクセスの際に、データの書き込みのレスポンス情報を含むコマンドがある。Readリクエストのコマンドは、マスタから送信され、スレーブに受信される。Writeレスポンスのコマンドは、スレーブから送信され、マスタに受信される。
一方、データも同様に2種類存在する。すなわち、Writeアクセスの際に、スレーブに書き込むための内容を含むデータと、Readアクセスの際に、スレーブから読みだした内容を含むデータである。Writeデータを含むパケットは、マスタから送信され、スレーブで受信される。Readデータを含むパケットは、スレーブから送信され、マスタで受信される。
例えば、Readアクセスに対する遅延を小さくする目的で、Readアクセスのコマンドを含むパケットに対しては中継器においてレート制御を行わず、Writeアクセスのデータを含むパケットに対してのみレート制御を行うことが考えられる。その場合、それらのコマンドとデータに対して分離してバッファを備えることで、コマンドとデータの制御方式の違いによる干渉を抑制することができる。その結果として、コマンドの最大遅延時間をより小さく見積もることができ、性能を保証するのに必要なバス帯域を小さくすることができる。
図37は、コマンドとデータを分離した場合のバッファ構成の例を示している。コマンドに対してはレート制御は行われず、データに対してのみレート制御が行われる。なお、本実施形態では、バッファを物理的に分離した構成に基づいて説明するが、論理的に分離されていれば、物理的に分離していなくてもよい。
図38は、コマンドとデータを分離した場合の効果として、コマンドに対する遅延を短縮できることを示している。
図37において、中継器103は、コマンド用の入力バッファ3701とデータ用の入力バッファ3702とを備える入力バッファ部1404を備えている。コマンドとデータごとに入力バッファ1405を分離して構成することで、コマンドとデータの間で伝送を切り替えることが可能になり、互いの干渉を抑制することができる。例えば、入力バッファ3702に格納されたクラスAのWriteアクセスのデータ用のパケットがレート制御により伝送を抑制されているとする。その間に、レート制御の不要なReadアクセスのコマンド用のパケットが到着し、コマンド用の入力バッファ3701に格納されたとする。その場合は、中継器103は、分離されている効果により、Readアクセスのパケットの伝送をすぐに開始できる。図38(A)は、コマンドとデータごとに入力バッファ1405を分離した場合における、パケット送信時刻の様子を示す。
一方、例えば、これらのパケットが到着順に同じ入力バッファに格納され、それらのパケット間で伝送切り替えができない場合(例えば入力バッファが一つのFIFOで構成されている場合)、先に到着したWriteアクセスのパケットはレート制御により送信を抑制され、後から到着したReadアクセスのパケットはそれより前方にいるWriteアクセスのパケットの影響を受けて送信を抑制される。図38(B)は、パケット間で伝送切り替えができない場合におけるパケット送信時刻を示す。つまり、同じ入力バッファに格納されるパケットに対し、互いに干渉を受けることで遅延が大きくなり、性能を保証するのに必要な動作周波数を大きく見積もる必要がある。
よって、レート制御を行うWriteデータパケットと、レート制御を行わないReadコマンドパケットに対して入力バッファを分離し、それらの間で伝送を切り替えられる方式にすることで、Readコマンドパケットの伝送遅延を緩和できる。これにより、互いの影響による中継器における遅延時間を小さくし、性能を保証するのに必要なバス動作周波数を小さくすることができる。
次に、パケットを多重化して伝送することで、特定のマスタの送信間隔あたりのスループットを向上し、必要な動作周波数の見積もりが低減する方法を説明する。
図39は、パケットを多重化して伝送する方法の概要を示す。「パケットを多重化する」とは、マスタ側NIC102が、複数の通信データからひとつのパケットを生成することを言う。パケットの「多重化」の逆の処理が、パケットの「逆多重化」である。スレーブ側NIC104は、受信した多重化されたパケットを逆多重化して、元の複数の通信データに復元する。
図40(A)および(B)は、パケット多重化の有無に応じたパケット伝送例を示す。図40(A)は、パケットを多重化しない場合の例を示す。この例では、通信データごとにパケットが生成され、伝送が行われる。図40(B)は、パケットを多重化した場合の例を示す。この例では、複数の通信データに基づいてひとつのパケットが生成され、伝送が行われる。
各マスタの要求仕様に基づき、各マスタに対し「スループット性能を保証できる送信間隔の最大値」を求めてパケットの多重化を行う場合、送信間隔あたりの伝送量を増やすことで、送信間隔の最大値を大きくすることができる。同一のクラスに分類される複数のマスタは、中継器において同一の送信間隔で制御される。よって、スループット性能を保証できる送信間隔の最大値に大きな差がある場合、送信間隔を必要以上に小さくする必要があり、動作周波数の見積もりが過剰になりやすい。そのため、同一クラス内で送信間隔の最大値が小さいマスタに対して、パケットを多重化して伝送することで、スループット性能を保証できる最大の送信間隔を大きくすることができ、必要な動作周波数を低減することができる。
図41は、パケット多重化のためのパケット202の構成を示す。パケットは、パケットの開始コード703とは別に、ひとつのパケットの中に複数の通信データを格納するために、通信データの開始コード709を各通信データの先頭に備え、通信データの開始コード709を送信するための専用の信号線をバスシステムに備える。通信データの開始コード709は、通信データを復元する際に、分割の目印となる位置に挿入され、専用の信号線を介して、パケットと共に伝送される。専用の信号線を用いることで、複雑な構造を用意することなく、パケットの多重化を実現できる。
なお、本実施形態においては、パケットの多重化の際に、通信データの開始コード709を送信するための専用の信号線を用いたが、ヘッダに多重化した複数の通信データの構造を表す情報を付与してもよい。例えば、多重化した通信データの数と、それぞれの通信データのデータ長の情報をヘッダに付与する方法でも、通信データの復元が可能である。
パケット多重化のためのマスタ側NIC102の構成は、図12と同じである。
図42は、パケット多重化のためのマスタ側NIC102の動作フローを示す。パケット多重化のため、出力切替部805は送信可の入力バッファから、格納された複数の通信データを転送する(S6204)。パケット生成部806は、受信した複数の通信データに対し、通信データの開始コード709を各通信データの先頭に付与し、ヘッダ701と終了コード702を付与してパケットを生成する(S6205)。
なお、多重化する数の決定方法は、前記のように格納された通信データの数とする方法以外で実現してもよい。例えば、マスタが既定の発行パターンでのみトラヒックを発行する場合には、挙動が設計時に完全に想定でき、多重化数を設計時に決める方法でもよい。また、マスタが不定の発行パターンでトラヒックを発行する場合には、あらかじめ設定したパケット長に達した時にひとつのパケットとして伝送する方法でもよい。
図43は、パケット多重化のためのスレーブ側NIC104の構成を示す。多重化されたパケットから複数の通信データを復元するために、通信データ復元部6303を備える。スレーブ側NIC104は、通信データ復元部6303の他に、パケットを受信するためのパケット受信部6301、パケットの情報(送信元ID、締切時刻、クラス)を格納するためのバッファ情報記憶部6302、復元した通信データを格納する入力バッファ部6304、スレーブ105からスレーブ105のバッファの空き情報を取得し、スレーブ側NIC104のバッファの空き情報をマスタ側の中継器1401に通知するバッファ利用情報通信部6307、バッファの空き情報と、クラス、送信元IDに基づいてスレーブで格納するバッファ番号を割り当てた上で、締切時刻、クラスに基づいて送信する順番を決定する出力切替部6305を備える。
図44は、パケット多重化のためのスレーブ側NIC104の動作フローを示す。パケット受信部6301が、マスタ側の中継器から、パケット202を受信する(S6401)。パケット受信部は、パケットの情報(送信元ID、締切時刻、クラス)を、パケット情報記憶部6302に記録する(S6402)。通信データ復元部6303が、パケットからヘッダ701と終了コード702を取り外し、通信データ201に復元する(S6403)。多重化されたパケットの場合、パケットと一緒に受信した通信データの開始コード709に基づいて、通信データへと復元する際に、複数の通信データに分割する。
通信データ復元部6303が、通信データ201をヘッダ701が有する入力バッファ番号708に基づいて、入力バッファ部6304に格納する(S6404)。
スレーブ側NIC104において、スレーブ105で格納するバッファ番号を割り当てるために、スレーブ105からスレーブ105のバッファの空き情報を取得し、マスタ側の中継器1401において、スレーブ側NIC104で格納するバッファ番号を割り当てるために、マスタ側の中継器1401に対しスレーブ側NIC104のバッファの空き情報を通知する(S6405)。出力切替部6305が、取得したスレーブのバッファの空き情報と、バッファ情報記憶部6302の情報(送信元ID、クラス)に基づいて、スレーブ105で格納するバッファ番号を割り当てる(S6406)。出力切替部6305が、クラス、締切時刻に応じて、入力バッファ部6304に格納された通信データ202の送信する順番を決定し、通信データ202、および、割り当てた入力バッファ番号708を、スレーブ105へ送信する(S6407)。
(利用例1)
以下、本発明の例示的な実施形態による中継器の実際の機器への利用例を説明する。
図45は、半導体回路上の複数のマスタと複数のメモリおよび外部とデータを通信するための共用の入出力ポート(I/Oポート)とを分散型のバスを利用して接続した例を示している。このような半導体回路は、例えば、携帯電話、PDA(Personal Digital Assistants)、電子書籍リーダーなどの携帯端末や、TV、ビデオレコーダ、ビデオカメラ、監視カメラ等の機器で用いられ得る。マスタは、例えば、CPU、DSP、伝送処理部、画像処理部などである。スレーブは、揮発性のDRAMであってもよいし、不揮発性のフラッシュメモリであってもよい。また、揮発性メモリおよび不揮発性メモリが混在していてもよい。また、入出力ポートは、外付けのHDDやSSD、DVDなどの記憶装置と接続するためのUSBやイーサネット(登録商標)などの通信インターフェイスであり得る。
複数の映像や音楽などの再生、記録、トランスコード、および書籍、写真、地図データ等の閲覧や編集、ゲームのプレイなど、複数のアプリケーションやサービスを同時に利用する場合、各マスタからメモリへ、異なる要求性能のアクセスが行われる。このとき、バスを設計する際に、性能保証の可能な必要最小限のバス帯域を見積もり、バス帯域の利用効率を最大化することができれば、開発の実装コストを下げることができ、製品化を加速化することができる。
実現手段として例えば、アプリケーションやサービス等の種類によってマスタが利用する要求帯域や許容遅延時間を定義し、要求性能に応じたクラス分類に基づくバッファ分離構成、伝送制御方式により、トラヒック間の干渉を抑制しつつ、余剰帯域の利用効率を大きくすることで、性能保証に必要なバス帯域を小さく見積もることができる。
(利用例2)
次に、本発明の例示的な実施形態にかかる中継器のマルチコアプロセッサ(multi−core processor)への利用例を説明する。
図46は、CPUやGPU,DSP等のコアプロセッサの処理能力を向上させるために、複数のコアプロセッサをメッシュ状に配列し、これらを分散バスで接続したマルチコアプロセッサを示している。この構成では、各コアプロセッサが上述の第1ノードとして機能し得るし、第2ノードとしても機能し得る。
マルチコアプロセッサ上では、各コアプロセッサ間で通信が行われる。例えば、各コアプロセッサには、演算処理に必要なデータを記憶しておくキャッシュメモリが備えられており、コアプロセッサ間で互いのキャッシュメモリの情報をやり取りすることができる。これによって情報の共有が可能となり、処理性能を向上させることができる。
しかし、マルチコアプロセッサ上で発生するコアプロセッサ間の通信は、それぞれ位置関係や距離(中継ホップ数)、通信頻度が異なる。このため、データパケットの順序を単純に維持したまま中継すると、優先度の高いアプリケーションのトラヒックが優先度の低いアプリケーションのトラヒックの干渉を受け、伝送時間も大きくなる。その結果、マルチコアプロセッサの性能の低下を引き起こす。
これに対し、本発明のある実施形態による中継器を用いた場合には、各CPUが実行するアプリケーションの属性でクラス分類を行うことで、バス帯域を効率よく利用することができ、必要なバス帯域をより小さく見積もることができる。例えば、高頻度でメモリにアクセスするアプリケーションの場合は、他のアプリケーションより優先度の高いクラスに分類し、低頻度で定期的にアクセスするアプリケーションで、アクセス要求を先行的に発行可能な場合は、優先度を下げつつ、要求帯域を超えて送信レートを制御することで、トラヒックがバス中を伝送される時間を抑え、バスの余剰帯域を利用することができ、その結果として、各コアプロセッサの性能向上、および処理時間の効率を向上させることができる。
(利用例3)
以上の説明では、第1ノード、中継器、第2ノードの各構成要素は、ブロック化された個別の機能部として表されているが、これらの機能部の処理を規定するプログラムを中継器に実装されたプロセッサ(コンピュータ)に実行させることによって中継器の動作が実現されていてもよい。そのようなプログラムの処理手順は、例えば図示されたフローチャートに記載されているとおりである。
上述の実施形態および利用例では、本願発明がチップ上で実装された際の構成を説明した。本願発明は、チップ上に実装されるだけでなく、チップ上に実装するための設計及び検証を行うシミュレーションプログラムとしても実施され得る。そのようなシミュレーションプログラムは、コンピュータによって実行される。例えば、図12に示される各構成要素は、シミュレーションプログラム上のオブジェクト化されたクラスとして実装される。各クラスは、予め定められたシミュレーションシナリオを読み込むことにより、各構成要素に対応する動作をコンピュータ上で実現する。言い換えると、各構成要素に対応する動作は、コンピュータの処理ステップとして直列的または並列的に実行される。
中継器として実装されたデータクラスは、シミュレータで定義されたシミュレーションシナリオを読み込むことにより、バスマスタのクラス等の条件を決定する。また、他の中継器のデータクラスから送信されるパケットの送信タイミング、送信先、優先度、締切時間等の条件を決定する。
中継器として実装されたデータクラスは、シミュレーションシナリオに記述されたシミュレーションの終了条件が成立する迄の間、動作を行う。動作中のスループットやレイテンシ、バスの流量の変動の様子、動作周波数、消費電力の見積値等を算出しプログラムの利用者に提供する。これらに基づき、プログラムの利用者はトポロジや性能の評価を行い、設計及び検証を行う。
シミュレーションシナリオの各行には、例えば、送信元ノードのID、宛先ノードのID、送信するパケットのサイズ、送信するタイミング等の情報が記述されるのが普通である。また複数のシミュレーションシナリオをバッチ処理的に評価することで、想定した全てのシナリオで所望の性能が保証できているか否かを効率的に検証できる。またバスのトポロジやノード数、送信ノード、中継器、宛先ノードの配置を変化させて性能比較することにより、シミュレーションシナリオに最も適したネットワーク構成を特定することもできる。上記の実施形態のいずれもが本態様の設計及び検証ツールとしても適用可能である。このように、本願発明の例示的な実施形態は、設計及び検証ツールとして実現され得る。
本発明のある実施形態は、半導体の集積回路における分散型バスにおいて、バスを流れる、異なる要求性能を有する複数のトラヒックに対し、定量的試算に基づき比較的小さい(たとえば最も小さい)バス動作周波数でバスの伝送効率を最大化でき、かつ、性能を保証する中継器の構成とQoSの技術を備えた半導体バスに利用できる。
101 バスマスタ
102 マスタ側NIC
103 中継器
104 スレーブ側NIC
801 宛先解析部
802 入力バッファ部
803 マスタ情報記憶部
804 レート制御部(送信制御部)
805 出力切替部
806 パケット生成部
807 バッファ利用情報通信部
1403 クラス解析部
1404 入力バッファ部
1406 出力ポート選択部
1407 バッファ情報記憶部
1408 バッファ利用情報通信部
1409 レート制御部(中継制御部)
1410 出力調停部
1411 クラス記憶部
1412 スイッチ切替部

Claims (16)

  1. ネットワーク化されたバスと、前記バスに配置された少なくとも1つの中継器とを介して第1ノードおよび少なくとも1つの第2ノードの間でデータを伝送する、半導体回路のバスシステムであって、
    伝送されるデータは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含み、
    前記第1ノードは、
    伝送されるデータ、および伝送されるデータの要求性能を識別するための識別情報を含むパケットを複数生成するパケット生成部と、
    前記パケットの送信を制御する送信制御部とを備え、
    前記少なくとも1つの中継器は、
    受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、
    前記識別情報ごとに、識別情報に対応するすべての第1ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部と
    を備え
    各性能保証データには、保証すべき送信レートが予め設定されており、
    前記送信制御部は、前記性能保証データの保証すべき送信レートを超えた所定レートで、または送信レートに制限を設けることなく、前記性能保証データのパケットの送信を制御し、
    前記少なくとも1つの中継器は、保証すべき前記送信レートを維持可能な第1の帯域、および余剰帯域である第2の帯域を利用して、保証すべき送信レートを超えたレートで前記性能保証データのパケットを伝送可能であり、
    前記中継制御部は、前記バッファ部に格納された複数のパケットのうち、前記性能保証データの各パケットを、前記識別情報に基づいて、前記第1の帯域を利用して伝送するか、前記第1の帯域および前記第2の帯域を利用して伝送するかに分類し、前記第1の帯域を利用する各パケットを優先的に伝送する、バスシステム。
  2. 前記少なくとも1つの中継器は複数存在し、
    複数の中継器は同一の動作周波数で動作し、かつ前記複数の中継器に備えられた各中継制御部は、同一の送信レートで前記各パケットの送信を制御しており、
    前記同一の送信レートは、前記複数の中継器が保証すべき各送信レートのうちの最大の送信レート以上に設定されている、請求項1に記載のバスシステム。
  3. 前記伝送されるデータは、スループット及び許容遅延時間の両方を保証しない非性能保証データをさらに含み、
    前記送信制御部は、送信レートに制限を設けることなく前記非性能保証データのパケットの送信を制御し、
    前記バッファ部は、受信した前記非性能保証データのパケットをさらに分離して格納し、
    前記中継制御部は、前記性能保証データのパケット、および前記非性能保証データのパケットの順に伝送する、請求項1に記載のバスシステム。
  4. 前記パケット生成部は、前記パケットの締切時間に関する時間情報を前記パケットにさらに付与しており、
    前記中継制御部は、同一の識別情報が付与されたパケットについては各パケットの前記締切時間に応じて伝送する順位を決定する、請求項1に記載のバスシステム。
  5. 前記締切時間に関する時間情報は、前記パケットが前記少なくとも1つの第2ノードに到達すべき締切時間の情報、前記第1ノードが前記パケットを送信した時刻の情報、前記第1ノードおよび前記中継器の処理時間の累積値の情報、および前記パケットの前記第1ノードにおける送信順序を表す送信カウンタの値の情報のいずれかである、請求項に記載のバスシステム。
  6. 前記締切時間に関する時間情報が前記締切時間を示す場合、
    前記中継制御部は、前記締切時間が早いパケットから優先して送信する、請求項に記載のバスシステム。
  7. 前記第1の帯域および前記第2の帯域を利用して伝送される各パケットに関し、
    前記中継制御部および前記送信制御部は、保証すべき送信レートを超えたレートを、バスシステムのボトルネックとなるノードまたはリンクの処理能力に基づいて決定する、請求項に記載のバスシステム。
  8. ネットワーク化されたバスと、前記バスに配置された少なくとも1つの中継器とを介して第1ノードおよび少なくとも1つの第2ノードの間でデータを伝送する、半導体回路のバスシステムであって、
    伝送されるデータは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含み、
    前記第1ノードは、
    伝送されるデータ、および伝送されるデータの要求性能を識別するための識別情報を含むパケットを複数生成するパケット生成部と、
    前記パケットの送信を制御する送信制御部とを備え、
    前記少なくとも1つの中継器は、
    受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、
    前記識別情報ごとに、識別情報に対応するすべての第1ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部と
    を備え、
    前記性能保証データは、バースト性のあるバーストデータ、および、バースト性のない非バーストデータを含んでおり、
    前記パケット生成部が付与する前記識別情報は、前記バーストデータ、非バーストデータを識別可能であり、
    前記少なくとも1つの中継器のバッファ部は、前記複数のバッファに、前記バーストデータ、非バーストデータを分離して格納し、
    前記少なくとも1つの中継器の前記中継制御部は、前記バーストデータ、非バーストデータの順で、前記パケットを伝送する、バスシステム。
  9. 前記第1ノードの送信制御部は、前記バーストデータを予め定めた送信レートで送信し、
    前記中継制御部は、少なくとも前記バーストデータを予め定めた送信レートで送信する、請求項に記載のバスシステム。
  10. 前記少なくとも1つの第2ノードは複数存在しており、
    前記少なくとも1つの中継器のバッファ部は、前記複数のバッファに、第2ノード毎のパケットを分離して格納する、請求項1に記載のバスシステム。
  11. パケットには、コマンドを送るパケットとデータを送るパケットが存在しており、
    前記中継制御部は、前記コマンドを送るパケットに対し送信レート制限を設けずに送信する、請求項1、2およびのいずれかに記載のバスシステム。
  12. パケットには、コマンドを送るパケットとデータを送るパケットが存在しており、
    前記少なくとも1つの中継器のバッファ部は、前記複数のバッファに、前記コマンドを送るパケットと、前記データを送るパケットとを分離して格納する、請求項11に記載のバスシステム。
  13. 前記第1ノードのパケット生成部は、複数のパケットを多重化して伝送する、請求項2に記載のバスシステム。
  14. 多重化された前記パケットを送信する前記第1ノードおよび前記少なくとも1つの中継器は、多重化された前記パケットを個々のデータに復元するための分割位置を示す情報を伝送する信号線を備えた、請求項13に記載のバスシステム。
  15. 半導体回路のバスシステムに設けられたネットワーク化されたバスに配置され、前記バスシステムの第1ノードおよび少なくとも1つの第2ノードの間で伝送されるデータを中継する中継器であって、
    前記第1ノードは、伝送される前記データ、および伝送される前記データの要求性能を識別するための識別情報を含むパケットを複数生成して送信し、
    伝送される前記データは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含んでおり、
    受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、
    前記識別情報ごとに、識別情報に対応するすべての第1ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部と
    を備え
    各性能保証データには、保証すべき送信レートが予め設定されており、
    前記第1ノードは、前記性能保証データの保証すべき送信レートを超えた所定レートで、または送信レートに制限を設けることなく、前記性能保証データのパケットの送信を制御し、
    前記中継器は、保証すべき前記送信レートを維持可能な第1の帯域、および余剰帯域である第2の帯域を利用して、保証すべき送信レートを超えたレートで前記性能保証データのパケットを伝送可能であり、
    前記中継制御部は、前記バッファ部に格納された複数のパケットのうち、前記性能保証データの各パケットを、前記識別情報に基づいて、前記第1の帯域を利用して伝送するか、前記第1の帯域および前記第2の帯域を利用して伝送するかに分類し、前記第1の帯域を利用する各パケットを優先的に伝送する、中継器。
  16. 半導体回路のバスシステムに設けられたネットワーク化されたバスに配置され、前記バスシステムの第1ノードおよび少なくとも1つの第2ノードの間で伝送されるデータを中継する中継器であって、
    前記第1ノードは、伝送される前記データ、および伝送される前記データの要求性能を識別するための識別情報を含むパケットを複数生成して送信し、
    伝送される前記データは、スループット及び許容遅延時間の少なくとも一方を保証する性能保証データを含んでおり、
    受信した前記パケットを、前記識別情報に基づいて前記要求性能ごとに分離して格納するバッファ部と、
    前記識別情報ごとに、識別情報に対応するすべての第1ノードの保証すべき送信レートの合計値以上の送信レートで、前記バッファ部に格納された各パケットの送信を制御する中継制御部と
    を備え、
    前記性能保証データは、バースト性のあるバーストデータ、および、バースト性のない非バーストデータを含んでおり、
    前記パケット生成部が付与する前記識別情報は、前記バーストデータ、非バーストデータを識別可能であり、
    前記バッファ部は、前記複数のバッファに、前記バーストデータ、非バーストデータを分離して格納し、
    前記中継制御部は、前記バーストデータ、非バーストデータの順で、前記パケットを伝送する、中継器。
JP2014501125A 2012-07-24 2013-07-22 バスシステムおよび中継器 Expired - Fee Related JP5838365B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014501125A JP5838365B2 (ja) 2012-07-24 2013-07-22 バスシステムおよび中継器

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2012163833 2012-07-24
JP2012163833 2012-07-24
JP2014501125A JP5838365B2 (ja) 2012-07-24 2013-07-22 バスシステムおよび中継器
PCT/JP2013/004449 WO2014017069A1 (ja) 2012-07-24 2013-07-22 バスシステムおよび中継器

Publications (2)

Publication Number Publication Date
JP5838365B2 true JP5838365B2 (ja) 2016-01-06
JPWO2014017069A1 JPWO2014017069A1 (ja) 2016-07-07

Family

ID=49996897

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014501125A Expired - Fee Related JP5838365B2 (ja) 2012-07-24 2013-07-22 バスシステムおよび中継器

Country Status (4)

Country Link
US (1) US9270604B2 (ja)
JP (1) JP5838365B2 (ja)
CN (1) CN103828312B (ja)
WO (1) WO2014017069A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9237581B2 (en) * 2013-03-14 2016-01-12 Cavium, Inc. Apparatus and method for media access control scheduling with a sort hardware coprocessor
US9571402B2 (en) * 2013-05-03 2017-02-14 Netspeed Systems Congestion control and QoS in NoC by regulating the injection traffic
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
JP6540095B2 (ja) * 2015-02-27 2019-07-10 日本電気株式会社 通信装置、情報処理システム、電文処理方法
KR102255334B1 (ko) 2015-03-11 2021-05-24 삼성전자주식회사 전자 장치에서 네트워크 온 칩을 생성하는 장치 및 방법
US10305952B2 (en) 2015-11-09 2019-05-28 T-Mobile Usa, Inc. Preference-aware content streaming
US10193943B2 (en) 2015-11-09 2019-01-29 T-Mobile Usa, Inc. Data-plan-based quality setting suggestions and use thereof to manage content provider services
US10728152B2 (en) * 2016-02-08 2020-07-28 T-Mobile Usa, Inc. Dynamic network rate control
US10966070B2 (en) * 2017-01-30 2021-03-30 Veniam, Inc. Systems and methods for managing data with heterogeneous multi-paths and multi-networks in an internet of moving things
CN111917656B (zh) * 2017-07-27 2023-11-07 超聚变数字技术有限公司 传输数据的方法和设备
EP3793108B1 (en) * 2018-05-10 2024-01-10 Mitsubishi Electric Corporation Electronic control apparatus
JP6973956B2 (ja) 2019-07-04 2021-12-01 株式会社Kokusai Electric 基板処理装置、半導体装置の製造方法、プログラムおよび記録媒体
CN112702056B (zh) * 2020-12-03 2023-07-21 成都海光集成电路设计有限公司 集成电路、集成电路的广播方法、中继模块及电子设备
CN114884765A (zh) * 2022-01-14 2022-08-09 天地融科技股份有限公司 基于中继设备的plc总线通信方法、系统及中继设备
CN115102875B (zh) * 2022-07-15 2024-04-09 深信服科技股份有限公司 一种数据包处理方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007510345A (ja) * 2003-10-31 2007-04-19 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データの欠乏を避けるための集積回路および方法
JP2008109534A (ja) * 2006-10-27 2008-05-08 Renesas Technology Corp パケット中継装置及び半導体チップ
JP2009253949A (ja) * 2008-04-11 2009-10-29 Yamaha Corp 通信システム、送信装置およびプログラム
JP2011229192A (ja) * 2010-03-05 2011-11-10 Panasonic Corp 中継器
WO2012132264A1 (ja) * 2011-03-28 2012-10-04 パナソニック株式会社 中継器、中継器の制御方法、およびプログラム

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3733784B2 (ja) * 1999-05-21 2006-01-11 株式会社日立製作所 パケット中継装置
JP4879382B2 (ja) * 2000-03-22 2012-02-22 富士通株式会社 パケットスイッチ、スケジューリング装置、廃棄制御回路、マルチキャスト制御回路、およびQoS制御装置
JP4484317B2 (ja) * 2000-05-17 2010-06-16 株式会社日立製作所 シェーピング装置
JP3816314B2 (ja) * 2000-07-11 2006-08-30 三菱電機株式会社 パケット交換装置
JP2002185503A (ja) 2000-12-11 2002-06-28 Nippon Telegr & Teleph Corp <Ntt> パケット処理装置および通信システム
JP3643827B2 (ja) * 2002-12-17 2005-04-27 株式会社半導体理工学研究センター ルータ装置とその出力ポート回路及びその制御方法
FR2858895B1 (fr) 2003-08-13 2006-05-05 Arteris Procede et dispositif de gestion de priorite lors de la transmission d'un message
EP1728359A1 (en) * 2004-03-08 2006-12-06 Koninklijke Philips Electronics N.V. Integrated circuit and method for packet switching control
CN2859942Y (zh) * 2005-12-21 2007-01-17 浙江大学 多路控制器局域网总线物理中继器
JP4333780B2 (ja) 2007-05-25 2009-09-16 船井電機株式会社 デジタル放送受信機
JP2010258844A (ja) * 2009-04-27 2010-11-11 Hitachi Ltd 通信システム
WO2011004566A1 (ja) * 2009-07-07 2011-01-13 パナソニック株式会社 バス制御装置
WO2011089899A1 (ja) * 2010-01-25 2011-07-28 パナソニック株式会社 半導体システム、中継器およびチップ回路
EP2613479B1 (en) 2010-09-03 2015-09-30 Panasonic Intellectual Property Management Co., Ltd. Relay device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007510345A (ja) * 2003-10-31 2007-04-19 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ データの欠乏を避けるための集積回路および方法
JP2008109534A (ja) * 2006-10-27 2008-05-08 Renesas Technology Corp パケット中継装置及び半導体チップ
JP2009253949A (ja) * 2008-04-11 2009-10-29 Yamaha Corp 通信システム、送信装置およびプログラム
JP2011229192A (ja) * 2010-03-05 2011-11-10 Panasonic Corp 中継器
WO2012132264A1 (ja) * 2011-03-28 2012-10-04 パナソニック株式会社 中継器、中継器の制御方法、およびプログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6013052045; John Dielissen et al.: 'Concepts and Implementation of the Philips Network-on-Chip' Proceedings of IP Based SoC Design 2003 , 2003 *
JPN6015021610; E. Rijpkema et al.: 'Trade-offs in the design of a router with both guaranteed and best-effort services for networks on c' Computers and Digital Techniques, IEE Proceedings Volume:150, Issue:5, 20030922, p.294-302, IET *

Also Published As

Publication number Publication date
JPWO2014017069A1 (ja) 2016-07-07
CN103828312A (zh) 2014-05-28
CN103828312B (zh) 2017-06-30
US9270604B2 (en) 2016-02-23
US20140204740A1 (en) 2014-07-24
WO2014017069A1 (ja) 2014-01-30

Similar Documents

Publication Publication Date Title
JP5838365B2 (ja) バスシステムおよび中継器
JP5200197B2 (ja) 中継器、中継器の制御方法、およびプログラム
JP5036920B1 (ja) 中継装置、中継装置の制御方法、およびプログラム
JP5603481B2 (ja) 中継装置
JP4880802B1 (ja) 中継装置
JP6229985B2 (ja) バスシステムおよびコンピュータプログラム
JP5552196B2 (ja) 中継装置、中継装置の制御方法、およびコンピュータプログラム
JP5975446B2 (ja) アクセス制御装置、中継装置、アクセス制御方法、コンピュータプログラム
JP5842174B2 (ja) バス制御装置、中継装置およびバスシステム
CN101110744A (zh) 一种调整环网节点带宽的方法和设备

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

R151 Written notification of patent or utility model registration

Ref document number: 5838365

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees