(57)【要約】      （修正有）【課題】データ送信におけるレイテンシの悪化を防止する。【解決手段】送信装置２１から受信装置３１へのデータの送信を制御する制御装置１は、受信装置３１に備えられたバッファ３２の空き容量を示す第１の情報と、送信するデータのサイズを表わす第２の情報とを比較する第１比較部３と、第１の情報と第２の情報に所定値を加算した第３の情報とを比較する第２比較部４と、データが送信されてから第１の情報が更新されるまでは、第２比較部による比較結果に基づくデータ出力制御信号を出力する一方で、第１の情報が更新された後は、第１比較部による比較結果に基づくデータ出力制御信号を出力する制御部５とをそなえる。【選択図】図３
2014045417.tif 000002
【特許請求の範囲】
【請求項１】
送信装置から受信装置へのデータの送信を制御する制御装置であって、
前記受信装置に備えられたバッファの空き容量を示す第１の情報と、送信するデータのサイズを表わす第２の情報とを比較する第１比較部と、
前記第１の情報と前記第２の情報に所定値を加算した第３の情報とを比較する第２比較部と、
前記データが送信されてから前記第１の情報が更新されるまでは、前記第２比較部による比較結果に基づくデータ出力制御信号を出力する一方で、前記第１の情報が更新された後は、前記第１比較部による比較結果に基づくデータ出力制御信号を出力する制御部とをそなえることを特徴とする、制御装置。
【請求項２】
前記制御部が、前記データが送信されてから前記第１の情報が更新されるまでの間出力される制御信号に基づいて、前記第１比較部と第２比較部との切り替え制御を行なうことを特徴とする、請求項１記載の制御装置。
【請求項３】
前記所定値が前記制御信号の出力期間に相当することを特徴とする、請求項１又は２記載の制御装置。
【請求項４】
受信装置にデータを送信する送信装置であって、
前記受信装置に送信するデータを格納する第１バッファと、
前記受信装置に備えられた第２バッファの空き容量を示す第１の情報と、送信する前記データのサイズを表わす第２の情報とを比較する第１比較部と、
前記第１の情報と前記第２の情報に所定値を加算した第３の情報とを比較する第２比較部と、
前記データが送信されてから前記第１の情報が更新されるまでは、前記第２比較部による比較結果に基づくデータ出力制御信号を出力する一方で、前記第１の情報が更新された後は、前記第１比較部による比較結果に基づくデータ出力制御信号を出力する制御部とをそなえ、
前記第１バッファは前記データ出力制御信号が前記データの出力許可を示す場合に、自身が格納している前記データを前記受信装置に送信することを特徴とする、送信装置。
【請求項５】
送信装置から受信装置へのデータの送信を制御する方法であって、
前記受信装置に備えられたバッファの空き容量を示す第１の情報と、送信するデータのサイズを表わす第２の情報とを比較し、
前記第１の情報と前記第２の情報に所定値を加算した第３の情報とを比較し、
前記データが送信されてから前記第１の情報が更新されるまでは、前記第１の情報と前記第３の情報との比較結果に基づくデータ出力制御信号を出力する一方で、前記第１の情報が更新された後は、前記第１の情報と前記第２の情報との比較結果に基づくデータ出力制御信号を出力することを特徴とする、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、送信装置及び制御方法に関する。
【背景技術】
【０００２】
パケット交換方式を採用した通信において、受信側のキュー（バッファ）のオーバーフローを回避するための手法として、クレジット方式が知られている。
クレジット方式では、受信側は、自身の受信側キューの空き容量を監視し、受信側キューの空き容量を表わす値（この値をクレジット値、あるいはクレジットと呼ぶ）を、送信側に通知し、送信側は、連続して送信するパケットのデータ量をクレジット値以下に制限する。
【０００３】
この手法では、送信側は、パケットを送信する毎にその送信パケット分の値をクレジット値から減算していき、クレジット値が送信待ちパケットのデータ量よりも小さくなった場合に、パケットの送信を停止する。これにより、受信側のキューの空き容量を越えるパケットを連続的に送信して受信側のキューがオーバーフローすることを防いでいる。
ここで、クレジット値とは受信可能なパケットのデータ量を示す値である。このクレジット値の上限値は、受信側キューの空き容量から決定される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−６９６１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
この方式では、送信側は、パケットの送信を開始した直後からクレジット値が更新されるまでの間は、新たなパケットを送信することができない。
そのため、クレジット値の更新にかかる時間よりも短いパケットが連続して送信される場合、パケットの受信直後にパケットを送信できない期間が発生し、レイテンシが悪化してしまう。
【０００６】
１つの側面では、本発明は、データ送信におけるレイテンシの悪化を防止することを目的とする。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【０００７】
１つの側面では、この制御装置は、送信装置から受信装置へのデータの送信を制御する制御装置であって、前記受信装置に備えられたバッファの空き容量を示す第１の情報と、送信するデータのサイズを表わす第２の情報とを比較する第１比較部と、前記第１の情報と前記第２の情報に所定値を加算した第３の情報とを比較する第２比較部と、前記データが送信されてから前記第１の情報が更新されるまでは、前記第２比較部による比較結果に基づくデータ出力制御信号を出力する一方で、前記第１の情報が更新された後は、前記第１比較部による比較結果に基づくデータ出力制御信号を出力する制御部とをそなえる。
【０００８】
別の側面では、この送信装置は、受信装置にデータを送信する送信装置であって、前記受信装置に送信するデータを格納する第１バッファと、前記受信装置に備えられた第２バッファの空き容量を示す第１の情報と、送信する前記データのサイズを表わす第２の情報とを比較する第１比較部と、前記第１の情報と前記第２の情報に所定値を加算した第３の情報とを比較する第２比較部と、前記データが送信されてから前記第１の情報が更新されるまでは、前記第２比較部による比較結果に基づくデータ出力制御信号を出力する一方で、前記第１の情報が更新された後は、前記第１比較部による比較結果に基づくデータ出力制御信号を出力する制御部とをそなえ、前記第１バッファは前記データ出力制御信号が前記データの出力許可を示す場合に、自身が格納している前記データを前記受信装置に送信する。
【０００９】
更に別の側面では、この制御方法は、送信装置から受信装置へのデータの送信を制御する方法であって、前記受信装置に備えられたバッファの空き容量を示す第１の情報と、送信するデータのサイズを表わす第２の情報とを比較し、前記第１の情報と前記第２の情報に所定値を加算した第３の情報とを比較し、前記データが送信されてから前記第１の情報が更新されるまでは、前記第１の情報と前記第３の情報との比較結果に基づくデータ出力制御信号を出力する一方で、前記第１の情報が更新された後は、前記第１の情報と前記第２の情報との比較結果に基づくデータ出力制御信号を出力する。
【発明の効果】
【００１０】
開示の技術によれば、データ送信におけるレイテンシの悪化を防止することができる。
【図面の簡単な説明】
【００１１】
【図１】第１実施形態の一例に係るクレジット判定回路を示す回路図である。
【図２】図１のクレジット判定回路の動作を示すフローチャートである。
【図３】第１実施形態の一例に係る図１の制御回路を採用した通信回路を示す回路図である。
【図４】クレジット充足時の図３の通信回路の動作例を示すタイミングチャートである。
【図５】クレジット枯渇時の図３の通信回路の動作例を示すタイミングチャートである。
【図６】第２実施形態の一例に係るクレジット判定回路を示す回路図である。
【図７】第２実施形態の一例に係る図６のクレジット判定回路を採用した通信回路を示す回路図である。
【図８】図７の通信回路の動作例を示すタイミングチャートである。
【図９】図１のクレジット判定回路を持たない、クレジット方式に基づく通信制御回路を示す回路図である。
【図１０】クレジット充足時の図９の通信制御回路の動作例を示すタイミングチャートである。
【図１１】クレジット枯渇時の図９の通信制御回路の動作例を示すタイミングチャートである。
【発明を実施するための形態】
【００１２】
（Ａ）実施の形態
以下、図面を参照して本発明の実施の形態を説明する。
図１〜図５を参照して、第１実施形態の一例に係るクレジット判定回路（制御装置）１及び当該回路をそなえる通信回路１０を示す。
図１は、第１実施形態の一例に係るクレジット判定回路１の回路図である。
【００１３】
図１のクレジット判定回路１は、送信待ちパケット（データ）のクレジット値pkt_crdと、送信先のキューの空き容量を示すクレジット値available_crdを比較して送信可否を判定する際、厳密な比較とラフな比較との２種類の比較を行なう。クレジット判定回路１は、後述の如く、通常は厳密な比較の結果を用いるが、パケットを送信した開始直後からクレジット値が更新されるまでの間は、ラフな比較の結果を用いてパケット送信を行なう。
【００１４】
図１に示すように、クレジット判定回路１は、加算器２、比較器（第１比較部）３、比較器（第２比較部）４、セレクタ（制御部）５、及びＡＮＤ回路６を有する。
加算器２は、次に送信予定のパケットの長さに相当するクレジット値pkt_crdと、パケット送信開始直後からクレジット値更新までに要するサイクル数に相当するクレジット値delay_crdとを入力し、pkt_crdとdelay_crdとの和をsumとして出力する。
【００１５】
比較器３は、入力Ａとして前述のpkt_crdと、入力Ｂとして、クレジット判定回路１の後段の回路の受信側キュー３２の空き容量を示すクレジット値available_crdとを取る。そして、入力Ａと入力Ｂとを比較し、Ａ≦Ｂの場合、すなわち、pkt_crd≦available_crdの場合、cmp_1＝１を出力する。一方、Ａ＞Ｂの場合、すなわち、pkt_crd＞available_crdの場合、cmp_1＝０を出力する。
【００１６】
比較器４は、入力Ａとして加算器２の出力を、入力Ｂとして前述のavailable_crdとを取る。そして、入力Ａと入力Ｂとを比較し、Ａ≦Ｂの場合、すなわち、sum≦available_crdの場合、cmp_2＝１を出力する。一方、Ａ＞Ｂの場合、すなわち、sum＞available_crdの場合、cmp_2＝０を出力する。
セレクタ５は、比較器３の出力cmp_1と、比較器４の出力cmp_2と、後述するcrd_invalidとを入力する。そして、crd_invalid＝０の場合はcmp_1を出力し、crd_invalid＝１の場合はcmp_2を出力する。
【００１７】
ＡＮＤ回路６は、当該クレジット判定回路１をそなえる送信側回路２１（図３参照）の送信側キュー２３内に送信待ちパケットが存在するかどうかを示すpkt_valと、セレクタ５からの出力とのＡＮＤ演算を行ない、求めた値をsend_startとして出力する。
信号pkt_valは、例えば、送信側キュー２３内に送信待ちパケットが存在する場合は値“１”を、送信側キュー２３内に送信待ちパケットが存在しない場合は値“０”を取る。
【００１８】
つまり、セレクタ５の出力が１かつpkt_val＝１のとき、send_start＝１となり、送信側キュー２３からのパケットの送信が許可される。一方、ＡＮＤ回路６の出力send_startが値“０”の場合、送信側キュー２３からのパケットの送信が抑制される。
また、信号crd_invalidは、パケット送信開始直後からクレジット値更新までの間は値“１”となる。
【００１９】
次に、図２を参照して、図１のクレジット判定回路１の動作を説明する。
図２は、図１のクレジット判定回路１の動作を示すフローチャートである。
まず、ステップＳ１において、図３を参照して後述する送信側回路２１が、不図示の前段の回路からパケットを受信する。
次に、ステップＳ２において、図１のクレジット判定回路１は、前回のパケット通信によるクレジット値の更新が完了しているかどうかを判定する。詳細には、クレジット判定回路１は、crd_invalidの値が０かどうかを判定する。
【００２０】
前回のパケット通信によるクレジット値の更新が完了している場合（ステップＳ２のＹＥＳルート参照）、クレジット判定回路１は、ステップＳ３において、厳密なクレジット値比較を行ない、クレジット値が足りているかどうかを判定する。詳細には、クレジット判定回路１は、厳密なクレジット値比較の結果（後述のcmp_1）を参照し、例えばこの値が１の場合にはクレジット値が足りていると判定し、この値が０の場合にはクレジット値が不足していると判定する。
【００２１】
厳密なクレジット値比較の結果、クレジット値が足りている場合（ステップＳ３のＹＥＳルート参照）、クレジット判定回路１は、ステップＳ６においてパケットを送信する。
一方、厳密なクレジット値比較の結果、クレジット値が不足している場合（ステップＳ３のＮＯルート参照）、クレジット判定回路１は、ステップＳ５において１サイクル待機し、その後、ステップＳ２に戻り、クレジット値更新完了の判定からやり直す。
【００２２】
一方、ステップＳ２でクレジット値更新が未完了の場合（ステップＳ２のＮＯルート参照）、クレジット判定回路１は、ステップＳ４においてラフなクレジット値比較を行ない、クレジット値が足りているかどうかを判定する。詳細には、クレジット判定回路１は、ラフなクレジット値比較の結果（後述のcmp_2）を参照し、例えばこの値が１の場合にはクレジット値が足りていると判定し、この値が０の場合にはクレジット値が不足していると判定する。
【００２３】
ラフなクレジット値比較の結果、クレジット値が足りている場合（ステップＳ４のＹＥＳルート参照）、クレジット判定回路１は、ステップＳ６においてパケットを送信する。
一方、ラフなクレジット値比較の結果、クレジット値が不足している場合（ステップＳ４のＮＯルート参照）、クレジット判定回路１は、ステップＳ５において１サイクル待機し、その後、ステップＳ２に戻り、クレジット値更新完了の判定からやり直す。
【００２４】
次に、図３を参照して、図１のクレジット判定回路１を採用した通信回路１０の例を示す。
図３は、第１実施形態の一例に係る図１のクレジット判定回路１を採用した通信回路１０を示す回路図である。
この通信回路１０は、送信側回路（送信装置）２１と、受信側回路３１とを有し、送信側回路２１と受信側回路３１とは不図示の信号線で接続されている。
【００２５】
送信側回路２１は、不図示の前段の回路からパケットを受け取り、このパケットを受信側回路３１に転送する。この際、受信側回路３１内の受信側キュー３２がオーバーフローしないことを保証するために、送信側回路２１と受信側回路３１とはクレジット方式を採用している。
送信側回路２１は、クレジット判定回路１、送信側キュー（バッファ，第１バッファ）２３、送信側送信制御回路２４、遅延要因２５、演算回路２６、及びレジスタ２７をそなえる。
【００２６】
クレジット判定回路１は、図１，図２を参照して説明したものと同じ構成及び機能をそなえるため、その説明は省略する。
送信側キュー２３は、不図示の前段の回路から受け取ったパケットpkt_inを格納し、送信側送信制御回路２４にパケット情報を送信する。更に、送信側キュー２３は、後述の送信側通信制御回路２４の制御下で、受信側通信回路３１にパケットpkt_outを送信する。
【００２７】
送信側送信制御回路２４は、送信側キュー２３内に送信待ちのパケットが存在するかどうかを示す情報と、各パケットの長さ情報とを保持する。送信側送信制御回路２４は、送信待ちパケットが存在するかどうかを示すpkt_valと、次に送信する予定のパケットの長さに相当するクレジット値pkt_crdとを出力する。更に、送信側送信制御回路２４は、送信側キュー２３に対して送信制御を行なう。その際、送信側送信制御回路２４は、後述の遅延要因２５に、pre_used_crdを出力する。
【００２８】
遅延要因２５は、送信側送信制御回路２４と後述の演算回路２６との物理的距離が遠いなど、送信側回路２１内に遅延を引き起こす各種要因である。遅延要因２５は、図３において送信側回路２１の構成要素として図示されているが、実際には回路の構成要素でなく、このような要因をまとめて模式的に示すものである。遅延要因２５による遅延値は固定値であり、例えば４サイクルなどである。遅延要因２５は、送信側送信制御回路２４からのpre_used_crdをused_crdとして出力し、その遅延時間が４サイクルとなる。
【００２９】
演算回路２６は、後述のレジスタ２７と共に、クレジット値available_crdの管理を行なう。演算回路２６は、入力Ｘとして後述するavailable_crdを、入力Ｙとしてused_crdを、入力Ｚとして、送信側回路２１に返却されたクレジット値を示す後述するreturn_crdをそれぞれ取る。そして、Ｘ−Ｙ＋Ｚを演算し、使用可能なクレジット値を示す値を、出力Ｏとして後述するレジスタ２７に出力する。
【００３０】
レジスタ２７は、演算回路２６から出力されたクレジット値を保持し、available_crdとして出力する。
一方、受信側回路３１は、受信側キュー（第２バッファ）３２及び受信側送信制御回路３３をそなえる。
受信側キュー３２は、送信側回路から受け取ったパケットpkt_outを格納し、受信側送信制御回路３３にパケット情報を送信する。更に、受信側キュー３２は、後述の受信側送信制御回路３３の制御下で、不図示の後段の回路にパケットを送信する。
【００３１】
受信側送信制御回路３３は、受信側キュー３２内に送信待ちのパケットが存在するかどうかを示す情報と、各パケットの長さ情報とを保持する。更に、受信側送信制御回路３３は、受信側キュー３２に対して送信制御を行なう。
この通信回路１０においては、送信側回路２１が、レジスタ２７において受信側キュー３２の空き容量を示す値（クレジット値）を保持し、空き容量がパケットサイズ以上の場合のみパケットを送信することで、受信側キュー３２がオーバーフローしないように制御する。
【００３２】
次に、この通信回路１０における制御を説明する。
送信側回路２１に入力されたパケットpkt_inは送信側キュー２３に格納される。このとき、送信側キュー２３から送信側送信制御回路２４にパケット情報が送られる。
クレジット判定回路１は、比較器３において、受信側キュー３２の空き容量を示すクレジット値available_crdとpkt_crdとの比較を行ない、available_crd≧pkt_crdであればcmp_1＝１とする。加えて、クレジット判定回路１は、比較器４において、available_crdとpkt_crdにパケット送信開始直後からクレジット値更新までに要するサイクル数に相当するクレジット値delay_crdを加算した値sumとの比較も行ない、available_crd≧sumであればcmp_2＝１とする。cmp_1、cmp_2はセレクタ５に入力され、セレクタ５からcrd_invalid＝０の場合はcmp_1が出力され、crd_invalid＝１場合はcmp_2が出力される。
【００３３】
パケット送信開始直後からクレジット値更新までの期間、available_crd≧cmp_2を満たす限り、送信側回路２１から受信側回路３１にパケットを送信しても受信側キュー３２がオーバーフローしないことが保証される。この理由を以下に説明する。
受信側キュー３２がオーバーフローしないことを保証するには、あるパケットｘを送信してクレジット値の更新が完了した時点でavailable_crd≧pkt_crdであればよい。このことから、パケットｘ送信開始直後のタイミングではavailable_crd≧pkt_crd＋（パケットｘ送信開始直後からクレジット値更新完了までの期間に送信され得る最大長のパケットに相当するクレジット値）であればよい。つまり、available_crd≧pkt_crd＋delay_crdであればよい。
【００３４】
送信側送信制御回路２４は、send_start＝１のときに、送信側キュー２３に対して送信制御を行ない、送信側キュー２３内のパケットが受信側回路３１へ送信される。
前述のように、available_crdの管理は、クレジット値を保持するレジスタ２７と、クレジット値の加算減算を行なう演算回路２６とが行なう。演算回路２６は、送信側キュー２３から受信側回路３１へパケットを送信したとき、つまり受信側回路３１内の受信側キュー３２の空き容量が減ると、available_crdから送信パケットの長さに相当するクレジット値used_crdを減算する。また、受信側キュー３２内のパケットが後段の回路等に送信されて受信側キュー３２の空き容量が増加したとき、その増加した容量に相当するクレジット値return_crdが送信側回路２１に返却されるので、演算回路２６は、レジスタ２７の値にreturn_crdを加算する。
【００３５】
used_crdは、送信側送信制御回路２４が送信側キュー２３に対して送信制御を行なう際に出力する制御信号pre_used_crdが、遅延要因２５からused_crdとして出力されたものである。遅延要因２５の存在や演算回路２６の論理段数の多さなどにより、pre_used_crdが入力されてからレジスタ２７に入力されるまでの期間が、１サイクルを超えることがある。このような場合、送信側送信制御回路２４が送信制御を開始してから、レジスタ２７の値が更新されるまでの間は、レジスタ２７の値が受信側キュー３２の空き容量を正確に表わさなくなる。このため、送信側送信制御回路２４が、cmp_1の値を参照してパケット送信の可否を決めると、受信側キュー３２がオーバーフローするおそれがある。これを阻止するため、送信側送信制御回路２４は、パケットの送信開始直後からクレジット値が更新されるまでの間はcrd_invalid＝１を出力し、cmp_2の値を参照してパケット送信の可否を決める。
【００３６】
図４は、クレジット充足時の図３の通信回路１０の動作例を示すタイミングチャートである。
図４において、最初に受信するパケットpkt_1が時点（time）１で送信側キュー２３に入力される。なお、以下の例では、１サイクル分のパケットのクレジット値を“１”とする。また、pre_used_crdからused_crdまでの遅延時間を４サイクル、used_crdからレジスタ２７の入力までを同じサイクルとする。このとき、pre_used_crdからレジスタ２７の入力まで４サイクルかかるため、crd_invalidはパケット送信開始から４サイクル後まで値“１”に設定される。また、delay_crdは4となる。
【００３７】
続いて、パケットpkt_2、pkt_3が出力される。pkt_2受信後、時点６でcrd_invalid＝１であるため、セレクタ５が値cmp_2を出力してsend_start＝１となり、パケットpkt_2の送信が開始される。同様にpkt_3受信後、時点１０でsend_start＝１となり、パケットpkt_3の送信が開始される。
図５は、クレジット枯渇時の図３の通信回路１０の動作例を示すタイミングチャートである。
【００３８】
クレジット値が枯渇寸前状態では、時点４でpkt_val＝１となるが、このタイミングではcrd_invalid＝１かつcmp_2＝０であるためsend_start＝０となり、パケットpkt_2はまだ送信されない。図５に示すように、パケットpkt_2は時点７で送信が開始される。パケットpkt_3は、パケットpkt_2の送信完了後の時点９ではsend_start＝０であるため送信を開始できず、時点１５でパケットpkt_3の送信が開始される。
【００３９】
次に、図６〜図８を参照して、第２実施形態の一例として、図１のクレジット判定回路１をＶＣ（Virtual Channel：仮想チャネル）を扱うＸＢ（クロスバー）に適用した例を示す。
図６は、第２実施形態の一例に係るクレジット判定回路４０を示す回路図である。
以下、図中、既出の構成要素と同一の符号を有する構成要素は、既出の構成要素と同等の構成及び機能をそなえるため、その説明を省略する。また、既出の信号と同一の符号を有する信号も、既出の信号と同等の機能をそなえるため、その説明を省略する。
【００４０】
ここで、ＶＣとは、物理的には１本の信号線に対して仮想的に複数の信号線を割り当てる手法である。
このため、ＶＣ毎に独立してフロー制御を行なうために、図６のクレジット判定回路４０やキューは、ＶＣ毎に設ける必要がある。
図７は、第２実施形態の一例に係る図６のクレジット判定回路４０を採用した通信回路５０を示す回路図である。また、図８は、図７の通信回路５０の動作例を示すタイミングチャートである。
【００４１】
図７，図８の例においては、ＶＣ０〜３の４つのチャネルを使用しており、図６のクレジット判定回路４０を、クレジット判定回路４０−０〜４０−３として４つ設けている。
図７に示す通信回路５０は、ＸＢ５１と、ＩＯユニット（ＩＯＵ）６１とを有し、ＸＢ５１とＩＯＵ６１とは不図示の信号線で接続されている。
ＸＢ５１はスイッチング回路であり、複数のシステムボード（ＳＢ）７１や他のＸＢ５１に接続し、ＳＢ７１とＳＢ７１間、或いはＳＢ７１とＩＯＵ６１間のデータ通信のスイッチング制御を行なう。
【００４２】
図７の例では、ＳＢ７１がＶＣ０〜３のいずれかのＶＣに属するパケットを送信し、ＸＢ５１を経由してＩＯＵ６１がパケットを受信する。この際、ＩＯＵ６１内のキュー６２−０〜６２−３がオーバーフローしないことを保証するために、ＸＢ５１とＩＯＵ６１とはクレジット方式を採用している。
ＸＢ５１は、クレジット判定回路４０−０〜４０−３、キュー５３−０〜５３−３、ＸＢ送信制御回路５４、遅延要因５５、及びセレクタ５９をそなえる。
【００４３】
クレジット判定回路４０−０及びキュー５３−０はチャネルＶＣ０用、クレジット判定回路４０−１及びキュー５３−１はチャネルＶＣ１用、クレジット判定回路４０−２及びキュー５３−２はチャネルＶＣ２用、クレジット判定回路４０−３及びキュー５３−３はチャネルＶＣ３用である。
以下、ＸＢ５１のクレジット判定回路を示す符号としては、複数のクレジット判定回路のうち１つを特定する必要があるときには符号４０−０〜４０−３を用いるが、任意のクレジット判定回路を指すときには符号４０を用いる。
【００４４】
また、ＸＢ５１のキューを示す符号としては、複数のキューのうち１つを特定する必要があるときには符号５３−０〜５３−３を用いるが、任意のキューを指すときには符号５３を用いる。
クレジット判定回路４０は、図６に示す構成をそなえる。
なお、図６〜図８並びに以下の説明において、信号や構成要素を示す各符号の末尾の「＊」は、“０”〜“３”のいずれかを表わす。詳細には、“０”はチャネルＶＣ０用、“１”はチャネルＶＣ１用、“２”はチャネルＶＣ２用、“３”はチャネルＶＣ３用であることをそれぞれ示す。
【００４５】
図６のクレジット判定回路４０は、演算回路４６及びレジスタ４７をそなえる点を除いて、図１のクレジット判定回路１と同様に構成されている。また、演算回路４６及びレジスタ４７は、図３の通信回路１０の演算回路２６及びレジスタ２７と同じ構成及び機能を有する。
ＸＢ送信制御回路５４は、キュー５３−０〜５３−３内に送信待ちのパケットが存在するかどうかを示す情報と、各パケットの長さ情報とを保持する。ＸＢ送信制御回路５４は、送信待ちパケットが存在するかどうかを示すpkt_val_vc0〜pkt_val_vc3と、次に送信する予定のパケットの長さに相当するクレジット値pkt_crd_vc0〜pkt_crd_vc3とを出力する。更に、ＸＢ送信制御回路５４は、キュー５３−０〜５３−３に対して送信制御を行なう。その際、ＸＢ送信制御回路５４は、遅延要因５５に、pre_used_crdを出力する。
【００４６】
セレクタ５９は、ＸＢ送信制御回路５４の制御下で、パケットを送信するキューとして、キュー５３−０〜５３−３のいずれかを選択する。
なお、図７のクレジット判定回路４０の他の構成要素は、前述の第１実施形態の対応する構成要素と同様であるため、その詳細な説明は省略する。
一方、ＩＯＵ６１は、キュー６２−０〜６２−３、ＩＯＵ送信制御回路６３、ルーティング部６４、及びデータ処理回路６５−０〜６５−３をそなえる。
【００４７】
キュー６２−０及びデータ処理回路６５−０はチャネルＶＣ０用、キュー６２−１及びデータ処理回路６５−１はチャネルＶＣ１用、キュー６２−２及びデータ処理回路６５−２はチャネルＶＣ２用、キュー６２−３及びデータ処理回路６５−３はチャネルＶＣ３用である。それ以外の構成要素の構成及び機能は、図３に示した通信回路１０のものと同じであるため、説明は省略する。
【００４８】
以下、ＩＯＵ６１のキューを示す符号としては、複数のキューのうち１つを特定する必要があるときには符号６２−０〜６２−３を用いるが、任意のキューを指すときには符号６２を用いる。
また、ＩＯＵ６１のデータ処理回路を示す符号としては、複数のデータ処理回路のうち１つを特定する必要があるときには符号６５−０〜６５−３を用いるが、任意のデータ処理回路を指すときには符号６５を用いる。
【００４９】
ルーティング部６４は、ＸＢ５１から受信したパケットの仮想チャネルに応じて、パケットをキュー６２−０〜６２−３のいずれかに振り分ける。
ＩＯＵ送信制御回路６３は、キュー６２−０〜６２−３内に送信待ちのパケットが存在するかどうかを示す情報と、各パケットの長さ情報とを保持する。更に、ＩＯＵ送信制御回路６３は、キュー６２−０〜６２−３から対応するデータ処理回路６５−０〜６５−３にデータが読み出されると、return_crd_vc0〜return_crd_vc3をＸＢ５１に出力する。
【００５０】
データ処理回路６５−０〜６５−３は、対応するキュー６２−０〜６２−３からパケットを読み出して、そのパケットを処理する回路である。
次に、通信回路５０における制御を説明する。
ＳＢ７１が送信したパケットpkt_inがＸＢ５１に入力されると、パケットの属するＶＣに応じてキュー５３−０〜５３−３のいずれかに格納され、送信待ちパケットとなる。このとき、パケットが格納されたキュー５３−０〜５３−３から、ＸＢ送信制御回路５４にパケット情報が送られる。
【００５１】
ＸＢ送信制御回路５４は、キュー５３−０〜５３−３内に送信待ちパケットが存在するかどうかを示す情報と、各パケットの長さ情報とを保持する。ＸＢ送信制御回路５４は、各キューに送信待ちパケットが存在することを示すpkt_val_vc0〜pkt_val_vc3と、各キューで次に送信する予定のパケットの長さに相当するクレジット値pkt_crd_vc0〜pkt_crd_vc3を出力する。
【００５２】
pkt_val_vc0〜pkt_val_vc3及びpkt_crd_vc0〜pkt_crd_vc3は、対応するクレジット判定回路４０−０〜４０−３に入力される。クレジット判定回路４０−０〜４０−３は、ＩＯＵ６１内のキュー６２−０〜６２−３の空き容量を示す値（送信クレジット値）available_crd_vc0〜available_crd_vc3を保持する。クレジット判定回路４０−０〜４０−３は、この値とpkt_val_vc0〜pkt_val_vc3、pkt_crd_vc0〜pkt_crd_vc3を基に、各ＶＣのパケットが送信可能であるかどうかを判定し、送信可能であれば、送信可能であることを示す信号send_ok_vc0〜send_ok_vc3＝１を出力する。
【００５３】
ＸＢ送信制御回路５４は、send_ok_vc0〜send_ok_vc3＝１であるＶＣのうちの１つを選択し、キュー５３−０〜５３−３やセレクタ５９に対して送信制御を行ない、port_1経由で、ＩＯＵ６１にパケットを送信する。
ＩＯＵ６１がパケットを受信すると、パケットのＶＣ情報を基にルーティング部６４によってパケットが振り分けられ、キュー６２−０〜６２−３のいずれかに格納される。このとき、ＩＯＵ６１内のキュー６２−０〜６２−３の空き容量が減るため、available_crdから送信パケットの長さに相当するクレジット値used_crdを減算する必要がある。このため、ＸＢ送信制御回路５４からクレジット判定回路４０−０〜４０−３にused_crdが送られ、available_crd_vc*からused_crdの値が減算される。
【００５４】
ＩＯＵ６１内のキュー６２−０〜６２−３にパケットが格納された後、データ処理回路６５−０〜６５−３が、対応するキュー６２−０〜６２−３内のパケットを読み出してデータ処理を行なう。このときキューの空き容量が増加するため、ＸＢ５１のクレジット判定回路４０−０〜４０−３内のavailable_crdに対して、ＩＯＵ６１内キューの空き容量増加分に相当するクレジット値を加算する必要がある。このため、ＩＯＵ６１内の送信制御回路ＩＯＵ６１が増加分に相当するクレジット値をreturn_crd_vc*として出力し、その値がＸＢ５１のクレジット判定回路４０−０〜４０−３内のavailable_crd_vc*に加算される。
【００５５】
クレジット判定回路４０−０〜４０−３ではパケット送信可否の判定として、通常は厳密なクレジット値比較を行ない、パケット送信開始直後からクレジット値更新までの期間はラフなクレジット値比較を行なう。
図６に示すように、厳密な比較においては、比較器３において、available_crd_vc*とpkt_crd_vc*とを比較し、available_crd_vc*≧pkt_crd_vc*であればcmp_1＝１とする。
【００５６】
ラフな比較においては、比較器４において、available_crd_vc*と、pkt_crd_vc*にパケット送信開始直後からクレジット値の更新までに要するサイクル数に相当するクレジット値delay_crdを加算した値sumとの比較を行ない、available_crd_vc*≧sumであればcmp_2＝１とする。cmp_1、cmp_2はセレクタ５に入力され、crd_invalid＝０のときcmp_1が出力され、crd_invalid_vc*＝１のときcmp_2が出力される。
【００５７】
ＡＮＤ回路６において、セレクタ５からの出力の値が“１”であり、かつpkt_val_vc*＝１のとき、send_ok_vc*＝１となる。前述のcrd_invalid_vc*は、対応するＶＣでのパケット送信開始直後からクレジット値が更新されるまでの期間、“１”に設定される。
次に、図７の通信回路５０の動作例を図８に示す。
図８は、通信回路５０の動作例を示すタイミングチャートである。
【００５８】
この例においても１サイクル分のパケットのクレジット値を“１”、delay_crd＝４としている。この例は、ＶＣ０のパケットが２個、ＶＣ１のパケットが３個入力される例を示すので、ＶＣ２，ＶＣ３の信号は省略している。
パケットpkt_00a（ＶＣ０）の受信後、時点２においてcrd_invalid_vc0＝０かつcmp_1（ＶＣ０）＝１（つまり、available_crd_vc0≧pkt_crd_vc0）であるためsend_ok_vc0＝１となり、pkt_00aの送信が開始される。
【００５９】
pkt_00aの送信完了直後の時点４では、crd_invalid_vc0＝１かつcmp_2（ＶＣ０）＝１（つまり、available_crd_vc0≧pkt_crd_vc0＋delay_crd）であるため、send_ok_vc0＝１となり、pkt_00bの送信が開始される。
同様にpkt_01a（ＶＣ１）も送信されるが、pkt_01aの送信完了後の時点８ではcrd_invalid_vc1＝１かつcmp_2（ＶＣ１）＝１であるため、送信待ち状態のpkt_01bの送信を開始することができない。
【００６０】
その後、時点１１においてcrd_invalid＝０となり、このタイミングでpkt_01bの送信が開始される。pkt_01b送信完了後の時点１３以降、pkt_01cが送信待ちパケットとして残るが、図８に示す時点２０までの間は、クレジット値の条件を満たさないため送信されない。
（Ｂ）効果
本発明の第１及び第２実施形態の一例としてのクレジット判定回路及び通信回路は上述のごとく構成されているので、厳密なクレジット値比較とラフなクレジット値比較を切り替えてパケット送信可否を判定する。これにより、短パケットが連続するケースでのレイテンシ悪化が軽減される。
【００６１】
以下、比較のために、第１実施形態の一例のクレジット判定回路１を持たない通信回路１１０を示す。
図９は、図１のクレジット判定回路１を持たない通信回路１１０を示す回路図である。
この通信回路１１０は、送信側回路１２１と、受信側回路３１とを有し、送信側回路１２１と受信側回路３１とは不図示の信号線で接続されている。
【００６２】
送信側回路１２１は、不図示の前段の回路からパケットを受け取り、このパケットを受信側回路３１に転送する。この際、受信側回路３１内の受信側キュー３２がオーバーフローしないことを保証するために、送信側回路１２１と受信側回路３１とはクレジット方式を採用している。
送信側回路１２１は、比較器１０１、ＡＮＤ回路１０６、送信側キュー２３、送信側送信制御回路２４、遅延要因２５、演算回路２６、及びレジスタ２７をそなえる。
【００６３】
比較器１０１は、受信側キュー３２の空き容量を示すクレジット値available_crdとpkt_crdとの比較を行ない、available_crd≧pkt_crdであればcmp＝１とする。
ＡＮＤ回路１０６は、送信側送信制御回路２４からのcrd_invalidの反転値、pkt_val及びcmpのＡＮＤ演算を行ない、その結果をsend_startとして出力する。
その他の送信側回路１２１及び受信側回路３１の各種構成要素は、図３を参照して説明したものと同じ構成及び機能をそなえるため、その説明は省略する。
【００６４】
図１０は、クレジット充足時の図９の通信回路１１０の動作例を示すタイミングチャートである。この図１０は、前述の図４と同じタイミングでパケットpkt_1〜pkt_3が通信回路に入力された例を示す。
図１０において、最初に受信するパケットpkt_1が時点１で送信側キュー２３に入力される。なお、以下の例でも、１サイクル分のパケットのクレジット値を“１”とする。また、pre_used_crdからused_crdまでの遅延時間を４サイクル、used_crdからレジスタ２７の入力までを同じサイクルとする。このとき、pre_used_crdからレジスタ２７の入力まで４サイクルかかるため、crd_invalidはパケット送信開始から４サイクル後まで値“１”に設定される。また、delay_crdは４となる。
【００６５】
図１０では、送信側回路１２１がパケットpkt_1、pkt_2、pkt_3の３個のパケットを受信する。パケットpkt_1受信後、時点２でavailable_crd≧pkt_crdかつpkt_val＝１であるためsend_start＝１となり、パケットpkt_1の送信が開始される。
一方、パケットpkt_2受信後、時点５ではpkt_val＝１かつavailable_crd≧pkt_crdであるがcrd_invalid＝１であるため、send_start＝０のままとなりパケットpkt_2は送信されない。
【００６６】
時点７でcrd_invalid＝０となるため、このタイミングでパケットpkt_2の送信が開始される。パケットpkt_3も同様に、時点１０ではcrd_invalid＝１であるため送信を開始できず、時点１２で送信が開始される。これに対し、第１実施形態の一例に係る図４の通信回路１０では、時点１０でパケットpkt_3の送信が開始される。
図１１は、クレジット枯渇時の図９の通信回路１１０の動作例を示すタイミングチャートである。この図１１は、前述の図５と同じタイミングでパケットpkt_1〜pkt_3が通信回路に入力された例を示す。
【００６７】
パケットpkt_1、pkt_2の入出力後、時点１２でpkt_val＝１かつcrd_invalid＝０となったときavailable_crd＜pkt_crdであるため、クレジットの不足によりパケットpkt_3を出力することができない。その後、時点１４でreturn_crdが返却され、時点１５でavailable_crd≧pkt_crdとなり、パケットpkt_3の送信が開始される。
このように、図９の回路においては、図１０に示す場合のようなクレジット値更新にかかる時間がパケット長よりも長いケースことに起因するレイテンシ悪化には対処できない。
【００６８】
上記のように、クレジット方式に基づいた通信回路１１０でパケット送信開始直後からクレジット値更新完了までに遅延がある場合に、送信先回路がオーバーフローしないことを保証するために、図９の通信回路１１０はパケット送信直後からパケット更新までの期間、パケット送信を抑止する。このため、短パケットが連続する場合にレイテンシが悪化する。
【００６９】
これに対し、第１及び第２実施形態の一例に係るクレジット判定回路１，４０では厳密なクレジット値比較とラフなクレジット値比較を切り替えてパケット送信可否を判定する。クレジット判定回路１，４０は、通常時は厳密な比較の結果を用い、パケットを送信した開始直後からクレジット値が更新されるまでの間はラフな比較の結果を用いてパケット送信を行なう。
【００７０】
これにより、短いパケットが連続した場合にもパケット送信ができない期間をできるだけ短縮することが可能になる。これによりパケット送信におけるレイテンシの悪化を防止できる。
また、送信側送信制御回路２４からの出力信号crd_invalidを、クレジット判定回路１，４０のセレクタ５用のセレクタ信号として用いることができるので、既存の送信側送信制御回路２４を変更する必要がなく、製造や開発コストを押さえることができ、回路構成を簡略化できる。
【００７１】
（Ｃ）その他
なお、開示の技術は上述した第１及び第２実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。
（Ｄ）付記
以上の実施形態に関し、更に以下の付記を開示する。
【００７２】
(付記１）
送信装置から受信装置へのデータの送信を制御する制御装置であって、
前記受信装置に備えられたバッファの空き容量を示す第１の情報と、送信するデータのサイズを表わす第２の情報とを比較する第１比較部と、
前記第１の情報と前記第２の情報に所定値を加算した第３の情報とを比較する第２比較部と、
前記データが送信されてから前記第１の情報が更新されるまでは、前記第２比較部による比較結果に基づくデータ出力制御信号を出力する一方で、前記第１の情報が更新された後は、前記第１比較部による比較結果に基づくデータ出力制御信号を出力する制御部とをそなえることを特徴とする、制御装置。
【００７３】
(付記２）
前記制御部が、前記データが送信されてから前記第１の情報が更新されるまでの間出力される制御信号に基づいて、前記第１比較部と第２比較部との切り替え制御を行なうことを特徴とする、付記１記載の制御装置。
(付記３）
前記所定値が前記制御信号の出力期間に相当することを特徴とする、付記１又は２記載の制御装置。
【００７４】
(付記４）
受信装置にデータを送信する送信装置であって、
前記受信装置に送信するデータを格納する第１バッファと、
前記受信装置に備えられた第２バッファの空き容量を示す第１の情報と、送信する前記データのサイズを表わす第２の情報とを比較する第１比較部と、
前記第１の情報と前記第２の情報に所定値を加算した第３の情報とを比較する第２比較部と、
前記データが送信されてから前記第１の情報が更新されるまでは、前記第２比較部による比較結果に基づくデータ出力制御信号を出力する一方で、前記第１の情報が更新された後は、前記第１比較部による比較結果に基づくデータ出力制御信号を出力する制御部とをそなえ、
前記第１バッファは前記データ出力制御信号が前記データの出力許可を示す場合に、自身が格納している前記データを前記受信装置に送信することを特徴とする、送信装置。
【００７５】
(付記５）
前記制御部が、前記データが送信されてから前記第１の情報が更新されるまでの間出力される制御信号に基づいて、前記第１比較部と第２比較部との切り替え制御を行なうことを特徴とする、付記４記載の送信装置。
(付記６）
前記所定値が前記制御信号の出力期間に相当することを特徴とする、付記４又は５記載の送信装置。
【００７６】
(付記７）
送信装置から受信装置へのデータの送信を制御する制御方法であって、
前記受信装置に備えられたバッファの空き容量を示す第１の情報と、送信するデータのサイズを表わす第２の情報とを比較し、
前記第１の情報と前記第２の情報に所定値を加算した第３の情報とを比較し、
前記データが送信されてから前記第１の情報が更新されるまでは、前記第１の情報と前記第３の情報との比較結果に基づくデータ出力制御信号を出力する一方で、前記第１の情報が更新された後は、前記第１の情報と前記第２の情報との比較結果に基づくデータ出力制御信号を出力することを特徴とする、制御方法。
【００７７】
(付記８）
前記データが送信されてから前記第１の情報が更新されるまでの間出力される制御信号に基づいて、前記第１の情報と前記第２の情報との前記比較結果と、前記第１の情報と前記第２の情報との前記比較結果との切り替え制御を行なうことを特徴とする、付記７記載の制御方法。
【００７８】
(付記９）
前記所定値が前記制御信号の出力期間に相当することを特徴とする、付記７又は８記載の制御方法。
【符号の説明】
【００７９】
１                クレジット判定回路（制御装置）
１０              通信回路（通信装置）
２                加算器
２１              送信側回路（送信装置）
２３              送信側キュー（バッファ，第１バッファ）
２４              送信側送信制御回路
２６              演算回路
２７              レジスタ
３                比較器（第１比較部）
３１              受信側回路（受信装置）
３２              受信側キュー（第２バッファ）
３３              受信側送信制御回路
４                比較器（第２比較部）
５                セレクタ（制御部）
５１              ＸＢ
６                ＡＮＤ回路
６１              ＩＯＵ
【図１】
2014045417.tif 000003
【図２】
2014045417.tif 000004
【図３】
2014045417.tif 000005
【図４】
2014045417.tif 000006
【図５】
2014045417.tif 000007
【図６】
2014045417.tif 000008
【図７】
2014045417.tif 000009
【図８】
2014045417.tif 000010
【図９】
2014045417.tif 000011
【図１０】
2014045417.tif 000012
【図１１】
2014045417.tif 000013