特許文献1の中継装置は、品質要求の違いに応じてトラヒック毎の送信スケジュール制御を行う。そのため、品質要求の種類だけバッファを用意すると、中継装置内のバッファ面積がバッファの種類に応じて増大する。
そこで本願発明者らは、中継装置において、要求品質を区別するクラスごとにバッファを備え、格納するバッファのクラスを伝送経路上で変更(マッピング)する方式を考えた。
まず、バスマスタが、優先度が予め定められた(N+1)種類の品質要求のうちの1つの品質要求の情報を格納したパケットを送信する状況を考える。本願発明者らは、中継装置に、N種類以下のバッファと、バッファ割当部を設けた。バッファ割当部は、送信先の中継装置が有するN種類以下のバッファのうち、どの種類のバッファに前記パケットを格納させるかを決定する。その上で、(N+1)種類の品質要求の種類に応じてトラヒックの送信スケジュールの制御を行う。
例えば、図2は、本願発明者らが考察した、中継装置を用いた接続構成例を示す。ローカルバス1では、遅延保証型トラヒック(A1)と出来高型トラヒック(C)とを収容し、ローカルバス2ではスループット保証型トラヒック(A2)と出来高型リアルタイムトラヒック(B)とを収容する。それぞれのローカルバスでトラヒックの品質要求の種類を2種類にした場合には、優先度を変えることで中継装置内のバッファの種類も2種類にまで削減できる。なお、バッファにはトラヒックを構成するパケットが格納される。
本願発明者らは、このような中継装置を用いると、パケットを格納するバッファの割当の際に品質要求の優先度の付け替えは行われるが、送信スケジューリングに対する優先度を付け替えた効果が十分に伝送性能に反映されない場合があり得る、と考えた。
具体的には、出来高型リアルタイムのトラヒック(B)は、ローカルバス2ではLoクラスのバッファに格納され、基幹バス(backbone bus)ではHiクラスのバッファに格納されるが、送信スケジュールの優先順位が反映されない場合があり得る。つまり、各バスにおいて、それぞれLo、Hiのバッファに格納されたとしても、送信順序に関しては、Lo、Hiの優先順位では伝送されるとは限らない。
本開示では、伝送性能に差のある複数のバスやノードを介してトラヒックが伝送されるときに生じる伝送性能の低下を改善する技術を提案する。ここでいう「伝送性能」とは、遅延やスループットの程度によって定められる、伝送に関する評価値であるとする。以下、優先度を付け替えてトラヒックを伝送することで性能の低下を抑制し、高い伝送性能を維持するバスシステムを説明する。
図3(A)および(B)はそれぞれ、伝送性能差を生じさせる原因として想定しうる、2つのケースを示す。
図3(A)は、バスの帯域差で伝送性能差が生じる例を示す。「広帯域」もしくは「低遅延」のバス1と「狭帯域」もしくは「高遅延」のバス2を組み合わせてバスシステムを構成した場合、バス1を伝送されるトラヒックは相対的に低遅延で伝送され、バス2を伝送されるトラヒックは高遅延で伝送される。特にバス2が「狭帯域」のバス(具体的には、例えば、相対的にバス幅が小さく、バス周波数が低いバス)の場合、バス1からバス2に向かう伝送において、伝送性能が確保できず、単位時間あたりのトラヒック伝送量が少なくなる。そのため、トラヒック同士の干渉による影響が大きくなり、ルータを含めた伝送にかかる遅延時間が大きくなる。後述するように、本開示によれば、このような場合であっても、伝送遅延を低減することが可能である。
また、図3(B)は、ノードの処理性能差で伝送性能差が生じる例を示す。処理性能の高いノードと、処理性能の低いノードとを組み合わせてバスシステムを構成した場合、処理性能の高いノード間では高い伝送性能を維持してトラヒックを伝送することができる。ここでは、処理性能の高いノードとして、たとえば、ルータやマスタ、メモリコントローラを想定している。また、処理性能の低いノードとして、たとえばメモリデバイス、I/Oを想定している。
なお、ノードの「処理性能」とは、ノードがデータを処理する速度を意味する。言い換えると、ノードが単位時間あたりに処理することが可能なデータ量を意味する。ノードがルータであるか、メモリであるか、またはマスタであるかによって、処理の内容は異なる。具体例は以下のとおりである。
まず、ルータの処理性能とは、受信したパケットを送信するために必要な処理(たとえばルーティング処理、バッファ割当処理、および送信処理)に関して、ルータが単位時間あたりに処理することが可能なデータ量を意味する。次に、メモリの処理性能とは、受信したデータ書き込み要求に関するアクセスデータを用いてメモリが実際に記憶領域にデータを書き込む場合には、メモリが単位時間当たりに書き込むことが可能なデータ量を意味する。あるいは、受信したデータ読み出し要求に関するアクセスデータを用いて、メモリが記憶領域からデータを読み出す場合には、メモリが単位時間当たりに読み出すことが可能なデータ量を意味する。最後に、マスタの処理性能とは、データ受信時にマスタが単位時間あたりに受信したデータを処理することが可能な演算データ量を意味する。
図3(B)に示されるような、マスタ0、ルータ0、メモリコントローラ0を接続するバス1の伝送性能は高い。一方、メモリコントローラ0とメモリデバイス0とを接続するバス2の伝送性能は低い。いま、図3(B)のバス1からバス2への通信のように、処理性能の高いノードから処理性能の低いノードへトラヒックを伝送する例を考える。この例の場合、処理性能の低いノードの処理性能がボトルネックになり、それに応じて処理性能の高いノードはトラヒックを高い伝送性能を維持して伝送できなくなる。すなわち、それらのノードの間のバスの伝送性能が低下したとみなすことができる。
本開示では、まず図3(A)の構成に関連する技術を説明する。その後、図3(B)の構成を説明する。また、本開示は、図3(A)と図3(B)とが複合する場合や往路と復路が分離されたバスシステムも対象とする。
ローカルバスと基幹バスの間を低速なオフチップバスで接続すると、低速なオフチップバスを通る際、一般には、トラヒックの伝送性能は低下する。ここでいう「オフチップバス」とは、チップ間の外部バスをいう。たとえば、マスタに相当するチップと、メモリコントローラを構成するチップとの間を接続するバスが「オフチップバス」に相当する。低速リンクを通るオフチップのトラヒックに関しては、オフチップバスを通らない他のオンチップのトラヒックよりも、オフチップバスの通過時に大きな遅延が生じる可能性がある。これにより、そのトラヒックが宛先ノードに届くまでの遅延時間が大きくなる。そのため、オンチップの場合と同じように優先度を設計すると、オフチップのトラヒックの伝送性能が著しく低下する場合がある。また、オフチップバスの配線の長さによっても遅延時間が変化する。オフチップバスの遅延を考慮しない場合には、さらに遅延時間が大きくなる。
そのため、オフチップバスの伝送遅延を考慮し、伝送の優先順位を表すクラスや伝送の締切時刻で表現される「優先度」を適切に変更することで、伝送性能の低下を防ぐ必要がある。
なお、本明細書において、「優先度が高い」とは、ルータにおけるパケットの伝送処理の順番について、優先的に、早く処理されることを意味し、優先度を表現している数字の大小にはよらない。例えば、優先度のクラスに対し、クラスAを0、クラスBを1、クラスCを2と数字で表現し、値の小さい順に、例えば0,1,2の順に、優先度を高く設定してもよい。
なお、オフチップバスについては、例えば、半導体のチップ同士をプリント基板上の配線で接続した場合や、柔らかい外部ケーブルで接続した場合、伝送特性がオンチップの配線と異なり、伝送遅延が大きくなる。また、オフチップではなく、同じチップ内において伝送の遅いバスを備えるバスシステムであっても同様の伝送遅延が発生し得る。すなわち、同じチップ内において、ネットワーク化されたバスを備える複数のモジュール同士を、例えば、多段のリピータバッファを備える、長い配線によって接続することが可能である。ただし、その配線によって大きな遅延が生じる場合には、その配線を低速リンクと捉えることができる。すると上述の遅延の発生が考えられ得る。
いま、例えば、図2で中継装置R1とゲートウェイGWの間が低速なリンクで接続され、中継装置R3とゲートウェイGWの間が高速なリンクで接続されている場合を考える。同じ優先度の2つのパケットがそれぞれ、GWからR1へ、GWからR3へ送信される場合、同じ優先度であるにも関わらず、GWからR1へ通るパケットの方が、低速リンクの遅延時間分だけパケット到着時刻が遅くなる。このような場合には、低速リンクを通るトラヒックの伝送性能は低下し得る。
よって、伝送性能を低下させずに、高い伝送性能を有する、柔軟な設定が可能なバスシステムの開発が必要とされている。
本開示は、伝送性能をより高く維持し、柔軟な設定が可能なバスシステムを提供する。
本発明の一態様の概要は以下のとおりである。
本発明の一態様であるバスシステムは、ネットワーク化されたバスにおいて、前記バスに配置された中継装置を介して、第1ノードおよび少なくとも1つの第2ノードの間でデータを伝送する、半導体回路のバスシステムであって、前記バスシステムは、相対的に低遅延の第1のバスと相対的に高遅延の第2のバスとを備え、前記第1ノードは、データを格納するバッファ部と、前記バッファ部に格納されたデータに、前記中継装置における伝送の優先度を特定する情報を付与して複数のパケットを生成するパケット生成部とを備え、前記中継装置は、前記複数のパケットの各々の優先度を高遅延のバスの伝送遅延に基づいて決定された優先度に変換するための優先度変換ルールに基づいて、前記優先度を変換する優先度変換部と、変換された前記優先度に基づいて、前記パケットを送信する送信先の中継装置のバッファの割当を行うバッファ割当部と、前記優先度の高い順に、パケットの送信を行う送信制御部と、前記優先度に基づいて、パケットを格納するバッファ部と備えている。
前記中継装置は、たとえば前記優先度変換ルールを記憶する記憶部を更に備えている。
本発明の他の一態様であるバスシステムは、ネットワーク化されたバスにおいて、前記バスに配置された中継装置を介して、第1ノードおよび少なくとも1つの第2ノードの間でデータを伝送する、半導体回路のバスシステムであって、前記バスシステムは、相対的に低遅延の第1のバスと、相対的に高遅延の第2のバスとを備え、前記第1ノードは、データを格納するバッファ部と、前記バッファ部に格納されたデータに、相対的に伝送遅延が大きい高遅延バスの伝送遅延に基づいて決定された、前記中継装置における伝送の優先度を特定する情報を付与して複数のパケットを生成するパケット生成部とを備え、前記中継装置は、前記優先度に基づいて、前記パケットを送信する送信先の中継装置のバッファの割当を行うバッファ割当部と、前記優先度の高い順に、パケットの送信を行う送信制御部と、前記優先度に基づいて、パケットを格納するバッファ部とを備えている。
たとえば、前記中継装置は、予め定められた優先度変換ルールに基づいて、前記複数のパケットの各々の優先度を変換する優先度変換部をさらに備え、前記バッファ割当部は、変換された前記優先度に基づいて、前記パケットを送信する送信先の中継装置のバッファの割当を行う。
たとえば、相対的に高遅延のバスを介して伝送されるパケットに関し、前記優先度変換部は優先度がより高くなるよう前記優先度を変換する。
たとえば、相対的に高遅延の前記バスを介して伝送されないパケットに関し、前記優先度変換部は優先度がより低くなるよう前記優先度を変換する。
前記優先度は、たとえば要求品質の厳しさを表現するクラス、および要求品質の許容遅延を表す締切時刻の少なくとも一方によって決定される。
前記優先度が、要求品質の許容遅延を表す締切時刻によって決定される場合において、たとえば前記優先度変換部は、パケットが通過する相対的に高遅延の前記第2のバスごとに、一定の時間、締切時刻が短くなるよう前記優先度を変換する。
たとえば、前記バッファ部は、相対的に高遅延のバスを介して伝送されるパケットと、相対的に低遅延のバスを介して伝送されるパケットを分離して格納する。
たとえば、前記優先度が、要求品質の許容遅延を表す締切時刻によって決定される場合において、前記送信制御部は、締切時刻が短い順にパケットの送信を行う。
たとえば、前記要求品質の厳しさを表現するクラスは、前記バス上の所定のノードが要求するスループット、許容遅延時間のうち、少なくとも1つにより定義される。
たとえば、前記優先度が、前記要求品質の厳しさを表現するクラスによって決定される場合において、前記中継装置のバッファ割当部および前記送信制御部は、前記優先度の低いクラスに関して、優先度の高いクラスよりも低い粒度で締切時刻の比較処理を行う。
たとえば前記優先度が、前記要求品質の厳しさを表現するクラスによって決定される場合において、前記中継装置のバッファ部は、前記優先度の高いクラスのバッファ数よりも、前記優先度の低いクラスのバッファ数を少なく設定する。
たとえば、前記バスは、相対的に伝送遅延が大きい高遅延バスを含んでおり、前記伝送遅延は、配線長、リピータ数、伝送材料、伝送路の伝送誤り率、伝送路での再送回数の少なくともひとつに基づいて決定される。
たとえば少なくとも2つのバスシステムが、異なる2つの伝送経路で相互接続されている場合において、前記第1ノードおよび前記少なくとも1つの第2ノードは、それぞれ異なるバスシステムに存在しており、前記2つの伝送経路は、それぞれパケットの往路および復路の経路として利用され、前記往路にはパケットを中継する往路中継装置が設けられ、前記復路にはパケットを中継する復路中継装置が設けられており、前記往路中継装置は、少なくとも、前記第1ノードから前記少なくとも1つの第2ノードへ伝送されるパケットを中継し、前記復路中継装置は、少なくとも、前記少なくとも1つの第2ノードから前記第1ノードへ伝送されるパケットを中継し、前記往路中継装置および前記復路中継装置は互いに接続されている。
本発明の他の一態様であるコンピュータプログラムは、ネットワーク化されたバスにおいて、前記バスに配置された中継装置を介して、第1ノードおよび少なくとも1つの第2ノードの間で複数のデータを伝送する半導体回路のバスシステムに設定する伝送の優先度を計算するための、コンピュータによって実行されるコンピュータプログラムであって、前記バスシステムは、相対的に低遅延の第1のバスと、相対的に高遅延の第2のバスとを備え、前記コンピュータプログラムはコンピュータに対し、前記第2のバスの伝送遅延に基づいて決定された優先度に変換するための優先度変換ルール、および予め定められた優先度の情報の入力を受け取るステップと、予め定められた前記優先度および前記優先度変換ルールに基づいて、前記中継装置における伝送の優先度を計算するステップとを実行させる。
本発明のさらに他の態様であるバスシステムは、ネットワーク化されたバスにおいて、前記バスに配置された少なくとも1つの中継装置を介して、第1ノードおよび第2ノードの間でデータを伝送する半導体回路のバスシステムであって、前記第2ノードは、前記中継装置よりも相対的に低い処理能力を有しており、前記第1ノードおよび前記中継装置は第1のバスを介して接続され、前記中継装置および前記第2ノードは第2のバスを介して接続されており、前記第1のバスにおいては、前記要求品質の厳しさを表現するクラス単位でパケット処理を行う第1のクラス分類が定義され、前記第2のバスにおいては前記第1ノード単位でパケット処理を行う第2のクラス分類が定義されており、前記第1ノードは、前記データを格納するバッファ部と、前記バッファ部に格納されたデータに、前記中継装置における伝送の優先度を特定するクラスを付与して複数のパケットを生成するパケット生成部とを備え、前記中継装置は、前記第1のバスを介して、前記複数のパケットを受信するバッファ管理部と、受信した前記パケットを格納するバッファ部と、前記複数のパケットの送信元の第1ノードを識別し、クラス単位のパケット処理から前記第1ノード単位のパケット処理に変換して優先処理を行う優先度変換部と、変換された、パケットの送信順位を示す優先度の高い順に、前記データを前記第2のバスを介して送信する送信制御部とを備えている。
本発明のさらに他の態様であるバスシステムは、ネットワーク化されたバスにおいて、前記バスに配置された複数の中継装置を介して、第1ノードおよび第2ノードの間でデータを伝送する、半導体回路のバスシステムであって、前記第2ノードは、前記中継装置よりも相対的に低い処理能力を有しており、前記バスシステムは、パケットが伝送される経路として往路と復路とを独立して備えており、前記第1ノードおよび前記中継装置は、前記往路を構成する第1のバスを介して接続され、前記中継装置および前記第2ノードは、前記復路を構成する第2のバスを介して接続されており、前記第1のバスにおいては、前記要求品質の厳しさを表現するクラス単位でパケット処理を行う第1のクラス分類が定義され、前記第2のバスにおいては前記第1ノード単位でパケット処理行う第2のクラス分類が定義されており、前記第1のバスと前記第2のバスとの間には第1の中継装置が配置されており、前記第1の中継装置は、前記第1のバスを介して、前記複数のパケットを受信するバッファ管理部と、受信した前記パケットを格納するためのバッファ部と、前記複数のパケットの送信元の第1ノードを識別し、クラス単位のパケット処理から前記第1ノード単位のパケット処理に変換して優先処理を行う優先度変換部と、変換された、パケットの送信順位を示す優先度の高い順に、前記データを前記第2のバスを介して送信する送信制御部とを備え、前記復路には第2の中継装置が配置されており、前記第2の中継装置は、前記第2ノードから前記第1ノードへ複数のパケットを伝送し、前記複数のパケットの送信の優先度を区別せずに伝送する。
たとえば前記第1の中継装置は、前記第1ノード毎に送信レートを記憶するレート管理部と、前記バッファ部に格納された複数のパケットに、前記レート管理部に設定された送信レートに基づいた第1の優先順位と、前記第1ノード単位に変換された前記クラスの優先度に基づく第2の優先順位を割り当て、前記第1の優先順位を優先的に用いて、前記データの送信を行う送信制御部とをさらに備えている。
たとえば前記第1の中継装置は、送信先の前記第2ノードから、前記データの受信可否状態を取得するフロー制御部をさらに備えている。
たとえば、前記第1の中継装置は、変換されたクラスの優先度が同じになる場合には、同じ優先度の複数の第1ノード間で送信レートが均等になるように送信処理を行う送信制御部を備えている。
以下、添付の図面を参照しながら、本発明の一実施形態である中継装置を説明する。
本明細書では、半導体の集積回路における分散型バス(NoC)において、異なる半導体のモジュールを組み合わせたときに、高い伝送性能を維持しつつ、トラヒックの伝送に必要な優先度の設定を柔軟に行える技術を説明する。
本願発明者らは、中継装置においてトラヒックの優先度の変換を行った。すなわち、ローカルバスからシステムバスへ、その間の低速なリンクを通ってトラヒックが伝送されるときに、システムバスで定義された要求品質の優先度を、ローカルバスで定義された要求品質より高い優先度として解釈を行った。換言すれば、当初定義された要求品質の優先度をより、それよりも高い優先度に変換した。
本発明の一実施形態である中継装置では、要求品質の厳しさを表すクラスと締切時刻を優先度として用いて、優先度に応じて、優先度の高い順にパケットのバッファ割当と送信順序の制御を行う。優先度は、各マスタから送信されるトラヒックの要求品質の違い、およびバスの伝送帯域から、設計者により事前に相対的に定義される。「優先度の変換」とは、送信元側のバスと送信先側のバスにおいて、同じパケットを異なる優先度(クラスと締切時刻)で伝送できるように、優先度の切り替えを行うことである。優先度の変換は、パケットの優先度の上書き(パケットの中の優先度を記憶している領域に、変換後の優先度を書き直すこと)をせずに、伝送に用いる優先度を切り替えることも含む。各々のシリコン上にマスタやルータが実装された複数の半導体を組み合わせる場合には、ローカルバスとシステムバスは、低速なオフチップバスを介して接続され、低速なバスによって大きな遅延時間が生じるため、より高い優先度へ優先度変換を行う。これにより、低遅延化を実現することが可能となった。オフチップバスを通るトラヒックに関しては、オフチップバスを通らない他のトラヒックよりも、オフチップバス通過時に生じる大きな遅延により、宛先ノードに届くまでの遅延時間が大きくなりやすい。また、オフチップバスの配線の長さによっても遅延時間が変化しうる。これらの伝送にかかる遅延時間の増大に対応するためにも、相対的により高い優先度への変換を行うことで、より低遅延での伝送処理を可能とした。詳細は後述する例示的な実施形態に関連して説明する。
図4は、本実施形態にかかる処理のポリシーを示す。
複数のローカルバス0〜Nがシステムバスに低速リンクで接続される。システムバスには、各ローカルバスに配置された複数のマスタのトラヒックが合流する。ローカルバスは過去の開発資産を効率的に利用できるように、設定の変更量を少なくする。そのために、システムバスでは、ローカルバスで定義された優先度とは異なる優先度で伝送を行えるように、優先度が変換される。また、低速リンクの伝送遅延分を考慮し、低速リンクを通るトラヒックを、より高優先度で伝送する。さらに、システムバスの中継装置では、格納するバッファの割当時に発生する干渉を抑えるために、低速リンクを通るトラヒックとそれ以外のトラヒックを分離してバッファに格納し、低速リンクを通るトラヒックをさらに低遅延で伝送する。
本開示の例では、ローカルバスは、特定の機器同士での高速なデータの交換を実現するために、通常のバスとは別に用意された、機器同士を直結するか、あるいはそれに準ずる形で接続されるバスを意味する。システムバスは、複数のローカルバスを相互接続するためのバスであることを意味する。
本明細書では、中継装置を「ルータ」と呼ぶこともある。
図5は、本実施形態にかかるバスシステム100の構成を示す。図5にはまた、バスシステム100において、優先度変換処理を行うルータの配置も示されている。
本実施形態にかかるバスシステム100では、バスに配置された複数のマスタ(第1ノード)がネットワーク・インタフェース・コントローラ(Network Interface Controller;NIC)を介して、ルータと接続されている。NICは、マスタが送信したスレーブへのアクセスデータをパケットに変換する。パケットは少なくとも1つのルータを通り、宛先のスレーブ(第2ノード)に到着する。
スレーブは、パケットからアクセスデータを抽出して、例えばDRAMなどのメモリデバイス(図示せず)へのアクセス処理を行う。スレーブは、デバイスのアクセスに対する応答データを再びパケットに変換し、応答パケットとしてマスタへ送信する。
ローカルバス全体の設定変更量をなるべく少なくするために、ローカルバスとシステムバスとを接続するオフチップバスに直接接続された中継装置が優先度変換処理を行うことが効率的である。例えば、ルータ1とルータ2とが低速なオフチップバスで接続されている場合、ルータ1およびルータ2の少なくとも一方が優先度変換処理を行えばよい。たとえばルータ1が変換処理を行う場合、ルータ2側のバスの設定を変更する必要が無い。一方、ルータ2が変換処理を行う場合、ルータ1側のバスの設定を変更しなくて済む。後者の例としては、ルータ1側のバスがモジュール化された外付けチップ内に構成されており、外付けチップの設定が変更できない場合が考えられる。本実施形態では、ルータ2が変換処理を行う例を説明する。
優先度変換処理は、オフチップバスに直接接続された中継装置ではなく、ルータ0やルータ4が行ってもよい。ルータ1またはルータ2以外のルータが優先度変換処理を行うことにより、局所的な伝送性能を向上させることが可能である。
ただし、その場合には、設定の効率や伝送効率が低下する可能性がある点に留意されたい。ルータ1が処理する場合には、ローカルバス0に配置されたすべてのマスタのトラヒックが変換の対象になる一方、ルータ0が処理する場合にはルータ0を通過するマスタのみが変換の対象となるからである。そのため、ローカルバス0のすべてのマスタのトラヒックに変換を行うためには、別のルータも変換処理を行うことが必要になる場合がある。よって変換の設定を行う中継装置の数が増加する可能性がある。また、ルータ0では、トラヒックの要求品質が若干低下したり、常に最適な送信スケジューリングでバスの伝送路の帯域を利用することができない可能性がある。その理由は、本来のローカルバスにおける優先度の定義ではなく、変換後の優先度の定義でトラヒックが送信されるためである。同様に、ルータ4が変換処理を行う場合でも、ルータ2では変換される前のローカルバスの優先度の定義で送信スケジューリングが行われるため、同様に効率が低下しうる。
図6は、NIC200の構成を示す。
NIC200は、マスタからスレーブへのアクセスデータを受信し、優先度の情報を付与してパケットに変換し、ルータへ送信する。NIC200は、たとえば回路として実装される。次に説明するNIC200の構成要素は、そのような機能・動作を行うよう、予めプログラムされた動作を行う回路素子として実装され得る。
NIC200は、バッファ管理部201と、バッファ部202と、フロー制御部203と、バッファ割当部204と、マスタ情報記憶部205と、締切時刻決定部206と、パケット生成部207とを備えている。
バッファ管理部201は、マスタからスレーブへのアクセスデータを受信し、バッファ部202の空いているバッファにアクセスデータを格納する。バッファ管理部201は受信端子(図示せず)を有していてもよい。
バッファ部202はいわゆるバッファである。バッファ部202には受信したアクセスデータが格納される。
フロー制御部203は、送信先のルータの空きバッファIDを取得する。
バッファ割当部204は、取得した空きバッファIDによって送信先のルータで格納されるバッファIDを割り当てる。
マスタ情報記憶部205は、例えば、フリップフロップのような記憶素子で実装され、マスタID、クラス、許容遅延時間の情報を記憶する。
締切時刻決定部206は、トラヒックの伝送に関する締切時刻を決定する。締切時刻は、例えば、半導体バスシステムに供給されるバスクロックによって駆動されるカウンタ値によって実装することができる。また、本実施形態においては、同一クラス内では締切時刻の比較に基づいて伝送順位を決定する方法を説明するが、締切時刻は、同じクラス内でパケットの伝送に対する時間的な緊急度を表す情報であればよい。例えば、締切時刻の代わりに、パケットの要求発生時刻で、伝送に対する時間的な緊急度を表してもよい。
パケット生成部207は、バッファ部に格納されたアクセスデータに対し、マスタID、クラス、締切時刻、格納先バッファID、開始コード、終了コードを付与してパケットに変換し、ルータへ送信する。
上述のフロー制御部203、バッファ割当部204、締切時刻決定部206、およびパケット生成部207は、半導体回路によって形成されている。
図7は、NIC200の動作フローを示す。
ステップS10において、バッファ管理部201は、マスタから、アクセスデータ、宛先ID、アクセスの要求発生時刻を受信し、バッファ部202に格納する。
ステップS11において、フロー制御部203は、送信先のルータから、送信先の空きバッファIDを取得する。
ステップS12において、バッファ割当部204は、送信先ルータの空きバッファIDを用いて、格納先バッファIDを決定する。
ステップS13において、締切時刻決定部206は、マスタ情報記憶部205に格納された許容遅延時間とバッファ部202の要求発生時刻に基づき、要求発生時刻に許容遅延時間を加えた値で締切時刻を決定する。
ステップS14において、パケット生成部207は、バッファ部202に格納されたアクセスデータと宛先IDに対し、マスタ情報記憶部205のマスタIDとクラス、締切時刻決定部の決定した締切時刻、バッファ割当部204の決定した格納先バッファID、開始コード、終了コードを付与し、パケットを生成し、生成したパケットを送信する。なお、要求発生時刻は、マスタからアクセスデータを受信した時刻をもって、要求発生時刻としてもよい。
図8は、マスタ情報記憶部205に記憶される情報の構成例を示す。
マスタ情報記憶部205は、パケットの送信元を表すマスタID、およびパケットの伝送の優先度を決めるための、クラスと許容遅延時間を備えている。なお、許容遅延時間とは、マスタの要求品質に基づき、パケットが伝送先となるノードに到着するまでに費やしてもよい最大の伝送遅延時間を表し、到着の締切時刻を算出する際に用いられる。例えば、伝送先となるノードは、アクセスの宛先であるスレーブや、スレーブからの応答パケットを受け取る送信元のマスタであってもよい。
図9は、パケットの構成を示す。
パケットは、開始コード、宛先ID、マスタID、クラス、締切時刻、格納先バッファID、アクセスデータ、終了コードを備えている。
図10は、優先度の変換を行うルータ250の構成を示す。
優先度の変換を行うルータ250は、送信元のバス側の優先度の定義とは異なる優先度の定義で、パケットの優先度変換を行い、変換された優先度に基づいてバッファ割当および送信順序決定を行う。また、送信先の通常のルータでも、ここで行われた優先度の変換が反映されるようにする。
優先度の変換を行うルータ250は、バッファ管理部251と、バッファ部252と、ルーティング処理部253と、フロー制御部254と、優先度変換部255と、優先度変換ルール記憶部256と、バッファ割当部257と、送信制御部258とを有している。
バッファ管理部251は、パケットを受信し、バッファ部252にパケットを格納する。パケットを格納する際、パケットの格納先バッファIDに対応するバッファにパケットを格納する。なおバッファ管理部251は受信端子(図示せず)を有していてもよい。
バッファ部252は、第1バッファ252aおよび第2バッファ252bを有する。第1バッファ252aは、低速リンクを通過するパケットを格納するためのバッファであり、第2バッファ252bは、第1バッファ252aに格納されないパケットを格納するためのバッファである。第1バッファ252aおよび第2バッファ252bに格納されるパケットは、それぞれ、クラスごとに分けて格納してもよい。
パケットを「分離して格納する」とは、格納可能なバッファを物理的に分離し、バッファごとに送信を切り替えられるようにすることを意味する。これにより、分離したトラヒック間の干渉を抑制することができる。また、ランダムアクセス可能なメモリなどを用いて、論理的に分離されていれば、物理的に分離しなくてもよい。具体的には、送信の切り替えが可能で、かつ使用するバッファ領域を論理的に分けて管理できていればよい。
ルーティング処理部253は、宛先IDに応じてパケットを送信する出力ポートを決定する。
フロー制御部254は、送信先のルータの空きバッファIDを取得する。
優先度変換部255は、後述する優先度変換ルール記憶部256に記憶されたルールを参照して、パケットの優先度を変換する。
優先度変換ルール記憶部256(以下、「記憶部256」と記述する。)は、例えば、フリップフロップのような記憶素子で実装され、優先度変換のためのルールを記憶する。
バッファ割当部257は、変換後の優先度に基づき送信先のルータにおける格納先バッファIDを決定する。
送信制御部258は、変換後の優先度の高い順にパケットの送信を制御する。
上述のルーティング処理部253、フロー制御部254、優先度変換部255、バッファ割当部257、および送信制御部258は、半導体回路によって形成されている。
なお、ルータ250によって行われた優先度変換の結果は、送信先のルータへ引き継がれるようにする。具体的には、クラスについては、送信先のルータが受信したパケットをクラスごとに分離してバッファに格納し、格納されたバッファIDによってパケットのクラスを判定する。例えば、各ルータにおいてバッファ0がクラスA、バッファ1がクラスB、バッファ2がクラスCに割り当てられ、クラスBのパケットをクラスAに変換する場合、バッファ1に格納されたパケットを、送信先のルータのバッファ0に格納されるように割り当てを行うことで、パケットのクラスの切り替えを行うことができ、送信先のルータではパケットに付与されたクラスによらず、バッファIDに基づいてクラスAと判定することができる。
なお、別の方法としては、変換されたクラスを、パケットのクラスを上書きするようにしてパケットに記録し、送信先のルータにおいてパケットのクラスの優先度に基づいて、バッファ割当と送信制御を行ってもよい。また、締切時刻については、変換された締切時刻をパケットに付与された締切時刻を上書きするように記録し、送信先のルータではパケットに上書きされた締切時刻に基づいて、バッファ割当と送信制御を行う。このようにして、変換された優先度(クラスと締切時刻)を送信先のルータへ引き継ぐことができる。
図11は、優先度の変換を行うルータ250の動作フローを示す。
ステップS20において、バッファ管理部251はパケットを受信し、そのパケットが低速リンクを通過するか否かに基づいて、パケットをバッファ部252の第1バッファ252aまたは第2バッファ252bに格納する。このとき、第1バッファ252a内または第2バッファ252b内では、パケットのクラスに応じた格納が行われる。
ステップS21において、ルーティング処理部253は、ルーティングテーブルとパケットの宛先IDに基づき、対応する出力ポートを決定する。
ステップS22において、フロー制御部254は、送信先のルータから、送信先の空きバッファIDを取得する。
ステップS23において、優先度変換部255は、バッファ部252から、各バッファのバッファID、クラス、および各バッファに格納されたパケットのマスタID、締切時刻を取得し、記憶部256に記憶された優先度変換ルールを用いて、クラスと締切時刻の変換を行う。
ステップS24において、優先度変換部255は、変換された締切時刻をパケットに記録する。
ステップS25において、バッファ割当部257は、変換されたクラスと締切時刻、および送信先のルータの空きバッファIDを用いて、クラスの優先度の高いパケットの中から、締切時刻の早い順に、格納先バッファIDを決定し、パケットに記録する。
ステップS26において、送信制御部258は、出力ポートごとに、変換されたクラスと締切時刻を用いて、クラスの優先度の高いパケットの中から、締切時刻の早い順に、送信するパケットを決定し送信する。
なお、締切時刻の早い順にパケットを選ぶ処理については、時刻の比較にかかる処理時間が大きくなりやすいため、あらかじめ設計者が半導体の組み合わせ方に応じて、処理に必要なリソースと伝送性能を考慮しつつ、締切時刻の比較に用いるbit数を設定できるようにしてもよい。そのとき、要求品質の厳しい高優先度のクラスについては、許容遅延時間が小さく、比較に必要な締切時刻の範囲も狭いため、時刻の数値表現の粒度は変えずに、比較に不要な時刻の数値の上位bitを削減してもよい。
また、品質要求の比較的厳しくない低優先度のクラスについては、時刻の数値表現の粒度を下げつつ、処理時間を削減するために、数値の下位bitを削減してもよい。具体的には、ルータ250のバッファ割当部257と送信制御部258に、クラスごとに時刻の比較に使用するbitを指定するためのレジスタ(記憶素子)を備える。レジスタの設定方法は、例えば、バスシステム100の起動時に固定的に設定されるようにしてもよいし、バスシステム100全体にレジスタ用の信号線を配線し、プロセッサが信号線を介してレジスタに設定値を書き込むことで、設定してもよい。また、締切時刻の比較に用いる比較演算回路は、バッファ割当部257と送信制御部258について、それぞれ備えていてもよいし、同じ回路を共用してもよい。
また同様に、あらかじめ設計者が半導体の組み合わせ方に応じて、処理に必要なリソースと伝送性能を考慮しつつ、優先度の比較にかかる処理時間を削減するために、各クラスに割り当てるバッファの数を設定できるようにしてもよい。そのとき、要求品質の厳しい高優先度のクラスについては、伝送性能が低下しないように十分なバッファ数を用意し、要求品質の比較的厳しくないクラスについては、リソースを削減するために、バッファ数を少なくしてもよい。具体的には、バッファ割当部に、送信先のルータの各バッファに対するクラスを指定するレジスタ(記憶素子)を備える。レジスタは、締切時刻のbit指定用のレジスタと同様に、起動時に固定的に設定されるようにしてもよいし、プロセッサが信号線を介してレジスタに設定値を書き込むことで、設定してもよい。
図12は、優先度変換部255の動作フローを示す。
ステップS30において、優先度変換部255は、バッファ部252から、各バッファのバッファID、クラス、および各バッファに格納されたパケットのマスタID、締切時刻を取得する。ステップS31において、優先度変換部255は、記憶部256から、優先度変換ルールを取得する。ステップS32において、優先度変換部255は、優先度変換ルールに基づき取得したマスタIDに対応する、変換後のクラスと締切時刻に対するオフセット時間を取得する。ステップS33において、優先度変換部255は、取得した締切時刻と、締切時刻に対するオフセット時間に基づき、締切時刻からオフセット時間を差し引いた時刻を変換後の締切時刻とする。
図13は、記憶部256に記憶される優先度変換ルールを示す。
優先度変換ルールは、マスタIDと、変換後のクラスあるいは締切時刻に対するオフセット時間のうち少なくとも一方との対応を表したテーブルで構成される。例えば、クラスにはクラスA、B、Cの3クラスがあり、オフセット時間はバスクロックのサイクル単位の整数値で表現される。低速リンクを通過するマスタ0は、本来のクラスはクラスBであるが、変換後のクラスはより高優先のクラスAとして変換される。また、締切時刻に対するオフセット時間は400であるため、締切時刻から400サイクル差し引いた時刻を変換後の締切時刻となる。これらの変換されたクラスと締切時刻に基づいて、バッファ割当と送信制御が行われる。
なお、変換されたクラスとオフセット時間については、例えば、伝送シミュレーションや、配線長やプリント基板の配線の伝送特性に基づいて、決定されるバスの伝送遅延に基づいて、設計者が事前に解析的に決める。また同様に、マスタ1については、本来のクラスはクラスCであり、ローカルバスにおいては、マスタ0のクラスと区別されて伝送される。変換後のクラスはマスタ0と同じく、クラスAで変換されるため、同じクラスの優先度で伝送される。締切時刻に対するオフセット時間は、マスタ0と同じ低速リンクを共有しており、同じ伝送遅延がかかるため、マスタ0と同じ値(400サイクル)で設定を行う。低速リンクを通過しないマスタ2については、変換前と変換後で同じ優先度を使うように、変換前と変換後のクラスを同じにし、締切時刻に対するオフセット時間を0サイクルで設定する。マスタ2はクラスBで、マスタ0の本来のクラスと同じクラスであるが、マスタ0の低速リンクによる遅延を考慮し、マスタ0をより高優先で宛先に伝送できるように、マスタ0のパケットはマスタ2とは異なるクラスAで変換される。また、マスタ4、5に関しては、マスタ0、1とは異なるオフチップバスを通ってシステムバスに合流するため、オフチップバスでの伝送遅延が異なり、締切時刻に対するオフセット時間を異なる値(たとえば、500サイクル)で設定する。
また、優先度変換ルールを実装する上で、優先度変換ルールはレジスタ(記憶素子)で設定できるようにしてもよい。レジスタの設定方法は、例えば、バスシステム100の起動時に固定的に設定されるようにしてもよいし、バスシステム100全体にレジスタ用の信号線を配線し、プロセッサが信号線を介してレジスタに設定値を書き込むことで、設定してもよい。
また、変換後のクラスを指定する別の方法として、クラスの優先度の変換前と変換後の相対的な差分で指定してもよい。例えば、オフチップにプロセッサ(CPU)のマスタと動画のデコード処理のマスタを備えていた場合、マスタを区別し、遅延の厳しくないプロセッサのマスタに対してはクラスを「1」段階高い優先度のクラスで変換し、遅延の厳しいデコード処理のマスタに対してはクラスを「2」段階高い優先度のクラスで変換する。このように、変換後の変換前に対する相対的な優先度の差分で指定してもよい。
また、優先度を変換するために、オフチップのマスタとオンチップのマスタを区別する、より簡単な実装方法として、パケットに対し低速なオフチップバスの通過の有無を表すフラグを付与してもよい。例えば、オフチップのマスタから送信されるパケットについてはフラグを「1」に設定し、オンチップのマスタから送信されるパケットについてはフラグを「0」に設定する。優先度を変換するルータ250においては、そのフラグに基づいて、優先度を変換する。例えば、フラグが「0」のパケットに対しては優先度変換を行わず、フラグが「1」のパケットに対しては、マスタによらず、変換後のクラスをクラスAとして、同じ優先度で変換する方法や、変換後のクラスを変換前に対し相対的に2段階高い優先度のクラスで変換する方法であってもよい。
図14は、マスタIDに代えて、バッファIDを用いて優先度を変換した場合の、優先度変換部255の動作フローを示す。
マスタIDではなく、バッファIDを用いて優先度を変換する場合、バッファ部は低速リンクを通過するパケットを格納するバッファと低速リンクを通過しないパケットを格納するバッファとを別々に備えることで、低速リンクを通るパケットと通らないパケットとを区別して優先度を変換することができる。図14の優先度変換部255の動作フローは、ステップS42を除いて、図12と同じである。ステップS42では、優先度変換部255は、優先度変換ルールに基づき取得したバッファIDに対応する、変換後のクラスと締切時刻に対するオフセット時間を取得する。つまり、図12のステップS32では、優先度変換部255は、優先度変換ルールを用いて優先度を変換する際に、マスタIDに対応する要素(変換後のクラス、締切時刻に対するオフセット時間)を取得していたが、ステップS42では、ステップS32の処理が、バッファIDに対応する要素を取得する処理に変更されている。
マスタIDを用いて優先度を変換する場合とバッファIDを用いて優先度を変換する場合を比較すると、以下の相違点がある。すなわち、前者は、マスタごとに優先度を設定することができるが、マスタ数が増えた場合に優先度変換ルールを適用する際の処理時間の増加と、設定項目の増加というデメリットがある。後者は、パケットの格納されたバッファごとに優先度の変換ルールが決まり、マスタごとの変換後の優先度の違いが表現できない。しかしながら、後者はマスタIDをパケットから抽出しなくてよく、マスタを区別せずにバッファ数の粒度で優先度変換ルールを適用できるため、マスタ数よりもバッファ数が少ない場合に変換の処理時間を短縮できる。
図15は、バッファIDを用いた場合の優先度変換ルール記憶部の記憶する優先度変換ルールを示す。
例えば、低速リンクを通過するクラスAのパケットが格納されるバッファ0に対し、変換後のクラスはクラスAで、締切時刻に対するオフセット時間は450サイクルとして設定されている。同様に、低速リンクを通過するクラスBのパケットが格納されるバッファ1は、変換後のクラスがクラスA、締切時刻に対するオフセット時間は450サイクルとして設定されている。また同様にして、低速リンクを通過しないクラスAのパケットは、バッファ3に格納され、変換後の優先度は変化せず、変換後のクラスはクラスAで、締切時刻に対するオフセット時間は0サイクルである。
本実施形態においては、マスタID、バッファIDのいずれかに基づいて、優先度変換を行っているが、同様にして、同じマスタから送信されるトラヒックを識別可能なトラヒックIDを用いて、優先度変換を行ってもよい。その場合は、優先度変換ルールは、少なくともトラヒックIDと変換後の優先度との対応を表すテーブルで構成され、NIC200は、送信元マスタから取得したトラヒックIDをパケットに付与し、ルータ250は付与されたトラヒックIDと優先度変換ルールに基づいて、優先度変換を行う。トラヒックIDを用いた場合、マスタIDを用いた場合と比較して、ひとつのマスタから送信される複数のトラヒックの種別ごとに優先度変換ルールを決める事ができる。例えば、プロセッサのマスタが送信する複数のトラヒックのうち、とりわけスループット保証の必要なアプリケーション(例えば、音声を用いるアプリケーション)が発行しているトラヒックは、優先度変換ルールにより、高優先の優先度に切り替えて伝送し、それ以外のスループット保証の必要ないアプリケーションについては、優先度を変更しないという使い方が考えられる。この場合、マスタIDを用いた優先度の変換ではなく、トラヒックIDを用いて優先度を変換することで、ひとつのマスタから送信される複数のトラヒックに対し、異なる優先度変換ルールを適用することができる。
図16は、マスタIDに代えて、トラヒックIDを用いて優先度を変換した場合の、優先度変換部255の動作フローを示す。図12との関係では、図16は、ステップS30およびS32が異なり、ステップS31およびS33は同じである。
ステップS30では、優先度変換部255は、バッファ部から、各バッファのバッファID、クラス、および各バッファに格納されたパケットのトラヒックID、締切時刻を取得する。つまり、図12のステップS32において、優先度変換部255は、優先度変換ルールを用いて優先度を変換する際に、マスタIDに対応する要素(変換後のクラス、締切時刻に対するオフセット時間)を取得していたが、ステップ50ではトラヒックIDに対応する要素を取得する処理に変更されている。この相違に起因して、図16のステップS52においても、マスタIDがトラヒックIDに変更されている。
パケットに付与されたトラヒックIDに関しては、パケットに付与された宛先IDと同様に、マスタがアクセスデータを送信する際に、トラヒックIDをアクセスデータに付与して送信し、NIC200がパケットを送信する際に、アクセスデータにトラヒックIDを付与してパケットを生成し、パケットを送信する。
図17は、トラヒックIDを用いた場合の優先度変換ルール記憶部に記憶される優先度変換ルールを示す。
例えば、図17は、低速リンクを通過するトラヒック0のパケットに対し、変換後のクラスはクラスAで、締切時刻に対するオフセット時間は400サイクルで設定されている。同様に、低速リンクを通過するトラヒック1のパケットは、変換後のクラスがクラスA、締切時刻に対するオフセット時間は400サイクルとして設定されている。また同様にして、低速リンクを通過しないトラヒック3のパケットは、変換後の優先度は変化せず、変換後のクラスはクラスBで、締切時刻に対するオフセット時間は0サイクルである。
図18(A)および(B)は、マスタの許容遅延時間と伝送遅延に基づいて、設計者が変換後のクラスを決める例を示す。
図18(A)は、それぞれのマスタの要求する許容遅延時間とクラス分類を表す。例えば、各マスタの許容遅延時間の長さに応じて、マスタ0はクラスBの基準時間より小さいためクラスBに分類され、同様に、マスタ1はクラスC、マスタ2はクラスB、マスタ3はクラスAに分類される。
図18(B)は、低速リンクでの遅延時間を考慮した場合の、変換後のクラス分類を表す。例えば、今、マスタ0とマスタ1は、伝送遅延400サイクルの低速リンクを通り、マスタ2とマスタ3は低速リンクを通らず、マスタ4とマスタ5は伝送遅延500サイクルの低速リンクを通るとする。マスタ0とマスタ1は、低速リンクの伝送遅延を許容遅延時間から差し引き、それぞれクラスAの基準時間より小さいため、クラスAに分類される。マスタ2とマスタ3は、低速リンクを通らないため、本来の許容遅延時間に基づいてクラス分類が行われ、同様にして、それぞれクラスBとクラスAに分類される。マスタ4、マスタ5は、マスタ0、マスタ1とは異なる低速リンクを通過し、通過する低速リンクに応じた伝送遅延時間を差し引いた上で、それぞれクラスA、クラスBに分類される。
図19(A)および(B)は、マスタの許容遅延時間と伝送遅延に基づいてクラスを決める別の方法として、各クラスのマスタ数を均等に近づけるようにクラス分類する例を示す。例えば、今、クラスの数を3、マスタの数を6とした場合、図19(A)は、それぞれのマスタを許容遅延時間の厳しい順に並べ、許容遅延時間の厳しいマスタから、2マスタずつ優先度の高い順にクラスを分類する。このとき、各クラスのマスタ数を均等に近づけるように分類したが、各クラスの送信するトラヒック量を均等に近づけるように分類してもよい。図19(B)は、低速リンクでの遅延時間を考慮した場合の、変換後のクラス分類を表す。それぞれのマスタの許容遅延時間から、低速リンクを通るマスタについては低速リンクの伝送遅延時間を差し引いた許容遅延時間の値に基づいて、差し引いた後の許容遅延時間の厳しい順に各マスタを並べ、各クラス2マスタずつ分類されるようにクラスを割当てる。なお、クラス分類については、上述の方法以外にも、設計者が各クラスの要求品質を保証しつつ、バスの動作周波数を小さく抑えられるように、伝送遅延、要求帯域および伝送シミュレーションに基づき解析的に決めてもよい。
図20は、低速リンクの伝送遅延(Latency)の算出方法を示す。
低速リンクの伝送遅延は、パケットのデータサイズを低速リンクの伝送帯域で割った値を用いて算出してもよい。具体的には、低速リンクの伝送遅延をLatency[μsec]、パケットのデータサイズをN[Byte]、伝送帯域をR[MByte/s]、オフチップバスの伝送特性によって決まる経路上の電圧信号が安定するまでに要する時間α[μsec]とすると、低速リンクの伝送遅延Latencyを次の式で算出してもよい。
Latency = N/R +α
締切時刻に対するオフセット時間は、低速リンクの伝送遅延を考慮するために、低速リンクの伝送遅延の値としてよい。すなわち実際に、低速リンクを通るトラヒックと通らないトラヒックは、同じ締切時刻に設定されていても、低速リンクを通るトラヒックの方がその伝送遅延分だけ遅く到着しやすい。それらがシステムバスで合流する際には、低速リンクを通るパケットに関しては、その低速リンクの伝送遅延分を締切時刻に対し考慮し、伝送遅延分を差し引いた、より早い締切時刻で変換し、より高優先度で伝送処理を行う。なお、オフチップバスの例としては、三次元実装で積層されたLSI間の伝送、プリント基板上の伝送、フレキシブルプリント基板を使ったプリント基板間の伝送、車載LAN(例えば、イーサーネット)を介した伝送を想定してもよい。また、伝送特性を高遅延化する要因として、伝送路で生じる伝送誤り率や再送回数で生じる要因(伝送誤りと再送による伝送路の品質)を含めてもよい。一般に、伝送誤り率が高く、再送回数が多い伝送路は高遅延になりやすい。
図21は、スレーブからの応答パケットが伝送される、復路の経路上での優先度変換処理を示す。
なお、本実施形態においては、マスタからスレーブへパケットが伝送される「往路」と、スレーブからマスタへ応答パケットが伝送される「復路」について、バスおよびルータがそれぞれ往復分離した構成で説明するが、分離せずに往路と復路で同じルータを介してパケットを伝送してもよい。
復路においても、往路と同様に優先度変換をルータで行い、優先度をローカルバスで定義された優先度に復元することで、システムバスで定義された伝送の優先度と、ローカルバスで定義された伝送の優先度を、バスごとに最適な優先度に変更することができる。
例えば、ルータ102では、スレーブ0が送信した応答パケットを受信し、低速リンクを通ってルータ101へパケットを伝送する。今、ルータ102がマスタ0行きのクラスAのパケットを受信したとき、往路と同様に優先度変換ルールに基づき、ローカルバスで定義されたクラスであるクラスBで変換し、バッファ割当と送信制御を行う。締切時刻に関しても、パケットに付与された締切時刻に対し、オフセット時間400を加えた時刻をパケットに記録し、変換された締切時刻に基づいて送信制御を行う。
なお、復路に関しては、高速なシステムバスから低速リンクへ伝送する際の伝送速度差を吸収するために、優先度を変換するルータに速度差吸収用のバッファを備えていてもよい。具体的には、バッファ部のバッファを、送信先であるローカルバスに配置された各マスタが最大同時送信可能なパケット数の和に基づいて、同時にバス上に存在しうる、同じローカルバス行きのすべての応答パケットを格納可能なバッファ量を備える。それにより、低速リンクへ伝送しきれないパケットが、速度差吸収バッファ以外の経路上のルータのバッファに長い時間留まることがなくなり、経路上のトラヒック同士のバッファ割当時の干渉を抑制することができる。
なお、本実施形態においては、復路で優先度を復元する形態について説明したが、メモリの数が少ない場合に、復路のバスの伝送帯域を十分大きくすることで、復路では優先度(クラスと締切時間)を使わずに、伝送する複数のパケットを同じ優先度で伝送してもよい。なぜならば、メモリの数が少ない場合、往路は、多数のマスタから送信された複数のパケットがスレーブ付近の少数の中継装置に集中しやすく、パケット間の干渉が大きくなりやすいため、低速リンクの遅延を考慮した優先度で伝送したときに得られる効果が大きい。一方、復路は、スレーブから送信されるパケットが特定の中継装置に比較的集中しにくいため、伝送帯域を十分大きくし、優先度に基づく伝送を行わなくとも、パケット間の干渉を小さく抑えることができる。そこで復路では、優先度の変換を行わなくてもよい。
たとえば図22(A)および(B)は、往路と復路とで優先度変換処理に差を設ける例を示す。図22(A)に示されるように、往路については、経路上のルータで、低速リンクの遅延を考慮した優先度の変換を行う。図22(B)に示されるように、復路については、優先度変換および優先度に基づく伝送を行わなくてもよい。このように、復路に優先度変換する中継装置を用意せずに、各パケットを同じ優先度で伝送することで、復路の中継装置をより簡便に実装することができる。
(変形例1)
前述の実施形態にかかるバスシステム100においては、優先度を付け替えるルータにおいて、優先度変換ルールに基づき優先度変換を行っていたが、他の実施形態として、NIC200において変換された優先度を予め設定し、ルータでは、パケットに付与された変換された優先度を用いて優先度付替えを行う場合の実施形態について説明する。
NIC200において変換された優先度を予め設定する場合、変換された優先度と、変換される前のローカルバスで定義される優先度の両方をパケットに付与して送信し、優先度を付け替えるルータでは、付与された変換後の優先度に基づいて伝送処理を行う。これにより、ルータでは、優先度変換の処理を行う回路面積と処理時間を削減しつつ、優先度付替えを行うことができ、また、オフチップ側のNIC200の設定だけで、オフチップ側のバスとオンチップ側のバスの両方の優先度を変更することができる。
図23は、変換後の優先度を付与したパケットの構成の例を示す。
変換後の優先度を付与したパケットは、前述の実施形態にかかるパケットの構成に対し、「変換後のクラス」および「変換後の締切時刻」を追加した構成をとる。
図24(A)〜(C)は、図23に示したパケットの構成に対し、実際のマスタから得られる情報で構成した例を示す。
例えば、図24(A)は、低速リンクを通るマスタ0のパケットであって、パケットの宛先となるスレーブの宛先IDが0、送信元となるマスタIDは0、ローカルバスにおいて定義されたクラスはクラスB、送信元のマスタに応答パケットが到着する締切時刻は500、変換後のクラスはクラスA、変換後の締切時刻は100で設定されている。
また、図24(B)は、同様に、宛先IDは0、マスタIDは1、ローカルバスにおいて定義されたクラスはクラスC、応答パケットが到着する締切時刻は700、変換後のクラスはクラスA、変換後の締切時刻は300で設定されている。このとき、締切時刻の変換に用いられたオフセット時間は、マスタ0とマスタ1で同じ低速リンクを通過するため、同じ伝送遅延時間400サイクルで計算されている。
図24(C)は、低速リンクを通らないマスタ2のパケットであって、宛先IDは0、マスタIDは2、ローカルバスにおいて定義されたクラスはクラスB、応答パケットが到着する締切時刻は550、変換後のクラスはクラスB、変換後の締切時刻は550で設定されている。なお、マスタ2は低速リンクを通らないため、変換によってクラスと締切時刻は変更されない。
なお、NIC200においてパケットに、変換前のローカルバスで定義される優先度と、変換後の優先度の両方を付与しているが、前者を付与せず、変換後の優先度のみを付与してもよい。その場合、ローカルバスにおいては、変換後の優先度で伝送処理を行わないといけなくなるため、伝送が非効率になりうる。具体的には、ローカルバスにおいて最適な伝送を行うためのクラス分類ではなくなるため、各マスタの要求品質を保証するためにローカルバスの伝送帯域を過剰に大きくする必要がある。一方、各ルータにおいては、パケットは変換後の優先度のみ付与されているため、優先度を選んで変換を行う処理を行わなくてよい。そのため、処理に必要な回路面積を抑える事ができる。
図25は、変換後の優先度を付与したパケットを生成するためのNIC200の動作フローを示す。
前述の実施形態におけるNIC200の動作フロー(図7)との違いは、ステップS63およびS64である。すなわちステップS63において、締切時刻決定部は、要求発生時刻に変換後の許容遅延時間を加えた値で変換後の締切時刻を決定する。またステップS64において、パケット生成部は、マスタ情報記憶部205から変換後のクラスを取得し、締切時刻決定部から変換後の締切時刻を取得しつつ、取得した変換後のクラスと締切時刻を付与することでパケットを生成する。
図26は、変換後の優先度を付与したパケットを生成するためのマスタ情報記憶部の構成を示す。
前述の実施形態におけるマスタ情報記憶部の構成(図8)との違いは、変換後のクラスと変換後の許容遅延時間を備える点である。これらの情報に基づいて、パケット生成部は変換後のクラスを取得し、締切時刻決定部は、変換後の締切時刻を決定する。
なお、本実施形態は、マスタ情報記憶部は、変換後の締切時刻を求めるために、変換後の許容遅延時間を備えているが、変換後の許容遅延時間ではなく、変換に用いるオフセット時間の値を備えていてもよい。その場合、変換後の許容遅延時間の算出は、NIC200の締切時刻決定部において、マスタ情報記憶部の許容遅延時間およびオフセット時間に基づいて、許容遅延時間からオフセット時間を差し引いた値として、算出してもよい。
図27は、ルータ260の構成を示す。
前述の実施形態におけるルータ250(図10)の構成との違いは、ルータ260には、優先度変換部255と記憶部256が設けられていないことである。これは、本実施形態におけるルータ260では優先度変換ルールに基づく優先度変換を行う必要がないことに起因している。
なお、オフチップのバスに配置されたルータ、オンチップのバスに配置されたルータを、優先度の切り替えを行うルータと同じ構成のルータで実装するために、パケットから優先度を読み出す位置を切り替えるためのレジスタを用意してもよい。具体的には、バッファ割当部257と送信制御部258に、読み出し切り替え用のレジスタを設け、レジスタの値に応じて、パケットの変換前の優先度を読み出すか、変換後の優先度を読み出すか、切り替えてもよい。レジスタの設定方法は、例えば、バスシステムの起動時に固定的に設定されるようにしてもよいし、バスシステム全体にレジスタ用の信号線を配線し、プロセッサが信号線を介してレジスタに設定値を書き込むことで、設定してもよい。
図28は、ルータ260の動作フローを示す。
前述の実施形態におけるルータ250の動作フロー(図11)との違いは、まず、優先度変換部255が優先度変換を行う処理(ステップS23)と、優先度変換部255が変換された締切時刻をパケットに記録する処理(ステップS24)が行われないことである。さらなる相違点は、図11のステップS25およびS26が、図28ではステップS75およびS76に変更されている点である。具体的には、図11のステップS25およびS26における「変換後のクラス」および「変換後の締切時刻」の情報が、図28では、バッファ割当部と送信制御部によって、バッファ部に格納されたパケットから取得されている。
図29は、本実施形態にかかるバスシステムにおいて、コンピュータプログラムを用いて変換後の優先度をNICに設定する方法を示す。このコンピュータプログラムは、バスシステムの設計時に、設計者の開発環境で利用される。本明細書では、設計者はPC上で当該プログラムを実行するとして説明する。実行結果として得られた変換後の優先度が、NICに設定される。なお、本実施形態では、設計者のPCによってプログラムを実行する形態について説明する。しかしながらこれは一例であり、それ以外の方法を排除することを意図するものではない。たとえば、同じ優先度の変換計算を手計算などの別の方法で実行してもよい。
図30は、設計者が利用するPC300のハードウェア構成を示す。PC300は、CPU301と、メモリ302と、グラフィックコントローラ303と、通信端子304とを備えている。これらの構成要素はバス306によって相互に通信可能に接続されている。メモリ302は、優先度計算プログラム305を格納している。
CPU301は、優先度計算プログラム305を実行する演算回路である。
メモリ302はたとえばRAMである。優先度計算プログラム305は、当初、ハードディスクドライブなどの記憶装置(図示せず)に格納されている。CPU301が記憶装置から優先度計算プログラム305を読みだして、メモリ302上に展開する。
グラフィックコントローラ303は、表示装置(図示せず)に演算結果等を表示させるための映像信号を生成する。
通信端子304は、たとえば図29に示すシステムとPC300とを接続するための端子である。
優先度計算プログラム305を実行したCPU301は、優先度計算プログラム305に規定された命令にしたがって、変換後のクラスおよび変換後の許容遅延時間を算出する。そして、通信端子304を介して、求めたクラス、許容遅延時間を各NICのマスタ情報記憶部に設定する。各NICでは、設定されたクラス、許容遅延時間に基づいて、変換後のクラスと変換後の締切時刻を決定し、変換後のクラスと変換後の締切時刻をパケットに付与して送信する。
図31は、優先度計算プログラムの処理フローを示す。
ステップS80において、CPU301は、設計者からマスタID、優先度変換ルール、許容遅延時間、伝送遅延時間の入力を待ち受ける。ステップ81において、CPU301は、優先度変換ルールとマスタIDに基づき、対応するクラスを算出する。CPU301は、許容遅延時間から伝送遅延時間を差し引いた値を、新しい許容遅延時間として算出する。CPU301は、計算結果として、算出後のクラスと許容遅延時間を出力する。上記を、設計ツールとして実現してもよい。
(利用例1)
以下、本発明の例示的な実施形態によるバスシステムの実際の機器への利用例を説明する。
図32は、画像処理の外付けチップと組み合わせ、画像認識向けのチップを開発する例を示している。オフチップには画像処理を行うマスタが存在し、オンチップには、2つのプロセッサ(CPU)のマスタと、周辺機器との入出力(I/O)を処理するマスタ、および2つのメモリが、ネットワーク化されたバスを介して接続されている。画像処理チップは外付けチップのため、低速なオフチップバスを介して接続される。
画像認識向けの半導体チップは、デジタル・カメラの顔認識や自動車の運転支援、屋外監視カメラでの人物や物体追跡など、応用範囲が広い。また一方で、画像処理エンジンの処理内容は、処理対象や処理アルゴリズムの変更により、頻繁に変更を要する。そういった状況の中で、半導体を効率よく開発するためには、画像認識に相当するモジュール部分を外部チップ化した上で、チップを組み合わせて開発する方法が考えられる。例えば、処理内容の変更には画像処理チップを作り変えることで対応し、搭載する機種の変更には、画像処理チップは作り変えず、システムバスを備える側のメインのチップを作り変えることで対応することで、効率的に開発を行うことができる。
本発明の例示的な実施形態によるバスシステムを適用することで、組み合わせるときに変更を加えるチップを選んで、優先度の設定を行うことが可能になり、効率的に開発を行うことができる。例えば、オフチップ側を作り変える場合には、オフチップ側で優先度を変換するルータの設定を変更し、システムバスを備えるメインのチップを作り変える場合には、メインのチップ側で優先度を変換するルータの設定を変更すればよい。また、そのとき、低速リンクとなるオフチップバスの伝送速度や配線長に応じ、伝送遅延を考慮して、画像処理のパケットに対する伝送の優先度がより高優先度になるように、変換後の優先度を設定すればよい。このようにして、さまざまなチップの組合せのバリエーションに対し、オフチップのパケットの伝送性能を落とさずに優先度の設定を行うことが可能になる。
(他の実施例)
図33は、往路と復路とを分離したシステムバスの構成例である。わかりやすく表現するために、図では往路と復路とを物理的に分離して配置している。実際の利用に際しては、往路と復路は近くに配置される。また、図の例ではバタフライ網で、往路と復路は同様のネットワーク構成で実現しているが、往路と復路は異なったネットワーク構成であってもよい。
図に示すように、往路と復路の伝送路は分離されているため、往路と復路でトラヒック干渉が生じない。しかし、マスタ間で通信を行う場合には、これまでは全てのマスタはシステムバスに備えられたスレーブ(メモリ)を介して通信を行わなければならなかったため、スレーブでの負荷集中やルータの中継処理が大きくなり、伝送遅延が大きくなりやすい。
以下では、システムバスのスレーブを介さずに、システムバスを介したローカルバス間、又はローカルバス内で、マスタ同士の直接通信を行う例を説明する。これにより、伝送遅延の低減や、システムバスのメモリの負荷集中を抑制できる。
上述の実施形態では、2種類の経路について、優先度変換の行うルータを適用する形態について説明した。2種類の経路とは、マスタからローカルバス、システムバスの順に通り、スレーブに到着する往路バスの経路、およびスレーブからシステムバス、ローカルバスの順に通り、マスタに到着する復路バスの経路であった。上述の実施形態に関連する他の例として、マスタからローカルバス、システムバスの順に通り、スレーブに到着せずに、再びローカルバスを通って、マスタに到着するマスタ間通信の経路について、本実施形態にかかるルータを適用してもよい。
図34は、低速リンクを通るマスタ間通信に本実施形態を適用したバスシステム110の例を示す。図34における、ルータ1およびルータ2の間、およびルータ107およびルータ108の間が、バスシステム内で相対的に伝送速度が低い低速リンクである。
低速リンクを通るマスタ間通信では、低速リンクを通るパケットをシステムバスでより高い優先度で伝送するため、パケットの優先度を、システムバスに伝送されるときに、より高い優先度に変換する。また、パケットシステムバスから再び別のローカルバスに伝送されるときに、伝送先の別のローカルバスで定義された優先度に変換して伝送を行う。
例えば今、ローカルバス0のマスタ0から送信されたパケットを考える。このパケットには、宛先IDとして、ローカルバスNのマスタ4が付与されているとする。このパケットがルータ1もしくはルータ2で伝送されるとき、低速リンクの遅延を考慮して、その優先度はより高い優先度に変換される。そしてそのパケットが伝送される。ルータ2を経由して、ルータ8を通るときに、パケットはマスタ間通信用に設けられた、往路と復路の間の折り返し用リンクを通って復路側のルータ108へ伝送される。
なお、折り返し用リンクについては、往路復路分離のバスに対し、システムバスとローカルバスを接続する、往路側ルータ(例えば、ルータ8)の送信制御部と復路側ルータ(例えば、ルータ108)のバッファ管理部との間を接続することで、スレーブまで伝送することなく経路の途中で往路から復路へ折り返すことができる。また、往復分離のバスにおいて、同じローカルバス内のマスタ間通信の場合に対しても、前述の折り返し用リンクを経由することで、システムバスを通る他のパケットとの干渉を抑えながら、各ローカルバスに対して少なくとも1つの折り返しリンクを備えればよいので、少ないリソースでマスタ間通信用の折り返し経路を提供することができる。
このパケットが折り返し用リンクを通って復路側のルータ108まで伝送されると、その優先度は、伝送先であるローカルバスNの要求品質で定義された優先度に変換される。そしてそのパケットが伝送される。具体的には、クラスに関しては、ローカルバスNに配置されたマスタの要求品質の厳しさに応じて決められたクラスに変換される。また、締切時刻に関しては、ルータ108とルータ107の間の低速リンクの伝送遅延を考慮し、伝送遅延分を足して、より低優先度で伝送する。なお、復路側では、バスの伝送帯域が十分大きく、復路のローカルバスにおいて優先度による伝送制御によって得られる効果が小さい場合、復路での優先度の変換は行わなくてもよい。
(多段接続のバスシステムにおける優先度変換の例)
前述の実施形態では、ローカルバスとシステムバスの間で優先度を変換する形態で説明したが、複数のローカルバスを低速リンクで多段に接続するバスシステムにおいて、優先度を変換するルータを多段に適用してもよい。
図35は、複数のローカルバスを低速リンクで多段に接続する例を示す。この場合、前述の実施形態のローカルバスとシステムバスの間の優先度変換だけではなく、ローカルバス同士の接続の間でも優先度変換を行ってもよい。図の例では、ルータ1とルータ9との間で優先度変換を行い、さらにルータ7とルータ2との間でも優先度変換を行えばよい。
例えば、同じパケットであっても、ローカルバス0で定義された優先度、ローカルバスNで定義された優先度、システムバスで定義された優先度で、優先度を切り替えて伝送することができる。その際、各ローカルバス間、およびローカルバスとシステムバスの間の低速リンクの伝送遅延を考慮して、優先度(クラスと締切時刻)がより高優先度になるように変換してもよい。例えば、ローカルバス0のルータ1からローカルバスNのルータ9へ伝送されるときは、優先度をローカルバス0とローカルバスNの間の低速リンクの伝送遅延に基づいて、より高優先度になるように変換する。また、ローカルバスNのルータ7からシステムバスのルータ2へ伝送されるときは、再びローカルバスNとシステムバスの間の低速リンクの伝送遅延に基づいて、優先度をさらに高優先度になるように変換する。
(システムバス側の優先度を相対的に下げる例)
前述の実施形態では、低速リンクを通るパケットの優先度について、変換される前よりも変換された後の優先度を高くして伝送処理を行うが、低速リンクを通らないパケットの優先度を低くして処理することで、低速リンクを通るパケットの優先度を相対的に高くしてもよい。
図36は、低速リンクを通らないパケットの優先度を低くする場合の、優先度変換ルールを示す。例えば、低速リンクを通るマスタ0は、優先度(クラスと締切時刻)を変更せず、クラスは変更前と同じクラスB、締切時刻に対するオフセット時間は0となる。また、低速リンクを通らないマスタ2は、優先度(クラスと締切時刻)を低くするため、本来のクラスであるクラスBから、低優先度であるクラスCに変換される。また、締切時刻に対するオフセット時間は「−450」で、本来の締切時刻に対し「−450」差し引き、すなわち「450」だけ加えつつ、締切時刻をより遅く設定することで、優先度をより低優先度に変換する。このように、低速リンクを通らないパケットの優先度を低く変換することで、低速リンクを通るパケットの優先度を相対的に高くなるように変換してもよい。
(変形例2:ケース(B)ノードの処理性能差でバス伝送性能差が生じる例)
前述の実施形態においては、低速リンクを通過するパケットと、低速リンクを通過しないパケットを区別し、低速リンクを通過するパケットに対して、低速リンクの遅延時間に基づき、優先度を相対的に高く変換することで、高い伝送性能を維持するための形態について述べた(ケース(A))。一方、本実施形態では、ある中継装置を通るすべてのパケットが同じ低速リンクを通過する場合に、優先度を変換することで、高い伝送性能を維持するための形態について述べる(ケース(B))。
なお、本実施形態においては、遅延が大きいバスやスループットの小さいバスのことを「低速リンク」と呼び、特にバスの伝送にかかる遅延時間だけでなく、バスに接続されたノードの処理能力が低いために、そのバスに直接接続されたノードにおける遅延時間(スループット)が他ノードよりも相対的に大きく(小さく)なる場合、そのバスも低速リンクと呼ぶ。具体的には、DRAMのようなメモリデバイスのノードは、アクセスデータを受信してから応答を送信するまでの遅延時間が他のノード(例えばルータ)よりも非常に大きいノードであるため、メモリデバイスに接続されたバスは低速リンクに含まれる。例えば、メモリデバイスはバンク切り替えなどの処理が含まれるため、ルータにくらべて、処理遅延が大きくなる。また、本実施形態においては、処理性能の低いノードに接続されたリンク(ケース(B))について述べるが、同様にケース(A)の高遅延のリンクについても本開示を適用することができる。さらに、メモリデバイスだけでなく、I/Oなどの低速デバイスも対象としてよい。また、「中継装置」とは、バスを介してデータを受信し、受信したデータを送信する任意のノードのことを呼び、受信したパケットからデータを抽出してメモリデバイスへのデータの送信順序制御などを行うメモリコントローラも中継装置に含めてもよい。
ある中継装置に伝送されるすべてのパケットが同じ低速リンクを通過する場合、優先度をクラス単位からマスタ単位に変換することで、より高い伝送性能を維持できる。まず、半導体における各マスタはメモリとの間でそれぞれ異なる要求品質(保証すべき遅延とスループット)でデータ通信を行っている。中継装置がクラスと締切時刻による伝送を行う場合、これらの要求品質を保証するためには、十分大きな伝送帯域を用意する必要がある。だが一方、メモリデバイスのように処理能力が低い低速リンクを通過するときは、バスの伝送速度を高めても一定時間に処理できる量は制限される。このため、クラスと締切時刻の優先度を用いて伝送を行った場合、各マスタの許容遅延や要求スループットを保証できなくなる可能性がある。そこで、マスタごとの要求性能を確保できるようにするため、メモリコントローラはクラスからマスタごとの優先度に変換し、さらにマスタごとに送信レートを制御しながら伝送処理を行う必要がある。
図37は、本実施形態にかかるバスシステムの構成の例を示す。
このバスシステムは、マスタによるメモリデバイスへのアクセス要求を、マスタからスレーブのメモリデバイスまで伝送する「往路」と、アクセス要求に対するメモリデバイスの応答データを、メモリデバイスからマスタへ伝送する「復路」を有する。なお、メモリデバイスを複数個備える構成であってもよい。往路に関して、各マスタとメモリデバイスへのアクセス処理を行うメモリコントローラとの間の経路は、相対的に低遅延のバス(例えば、システムバスやローカルバス)とノードで構成される(バス1)。一方、メモリデバイスは遅延の大きいノードであるため、メモリコントローラからメモリデバイスまでの間の経路は相対的に高遅延となる(バス2)。同様に、復路に関して、メモリデバイスは処理遅延が大きいものの、メモリコントローラやルータの処理遅延がメモリデバイスの処理遅延よりも小さい場合、メモリデバイスから各マスタまでの間の経路は相対的に低遅延となる(バス1)。
優先度変換処理は、往路に関しては、相対的に低遅延の経路(バス1)から高遅延の経路(バス2)へ中継するメモリコントローラが行う。また復路に関しては、高遅延の経路(バス2)から低遅延の経路(バス1)へ中継するメモリコントローラが優先度変換処理による優先度の復元を行う。このとき、復路では、バス帯域が十分確保され、復路のメモリコントローラの処理能力がルータと同様に処理能力の高い場合には、メモリコントローラにトラヒックが残留しにくくなるため、各パケットを同一の優先度で扱い、実質的に優先度を使わない伝送を行うことで、復路の実装を簡便にすることができる。具体的には、各パケットについて優先度(クラスと締切時間)を付与せずに伝送することでデータ通信量を削減し、メモリコントローラも含めた中継装置について優先度の比較処理にかかる比較回路を削減することができる。
なお、往路での優先度変換ルールは、前述の実施形態におけるマスタIDと変換後の優先度との対応関係を表したテーブルであってもよいし、メモリコントローラがマスタごとに対応するバッファを備え、マスタIDではなくバッファIDと変換後の優先度との対応関係を表したテーブルであってもよい。
図38(A)および(B)は、メモリコントローラにおいて、優先度変換を行わない場合と行う場合の違いを示す。
図38(A)および(B)は、各場合について、往路のルータ、メモリコントローラ、メモリデバイスの各ノードにおける、パケットの送信時刻と受信時刻を示す。クラスAのマスタ0から送信された複数のパケットと、クラスAのマスタ1から送信された複数のパケットが伝送されている。各パケットの締切時刻については、マスタ0の送信したパケットの締切時刻を時刻t0、マスタ1の送信したパケットの締切時刻を時刻t1とし、時刻t1は時刻t0よりも大きいとする。また、変換後の優先度については、マスタ0はマスタ1よりも高優先とする。
メモリコントローラで優先度を変換しない図38(A)の場合、伝送の優先順位はクラスと締切時刻によって決まるため、締切時刻の早いマスタ0のパケットを優先的に早く伝送する。この場合、クラスと締切時刻に基づく送信スケジューリングになるため、マスタごとの保証すべきスループットを保証できなくなる可能性がある。一方、優先度を変換する図38(B)の場合、メモリコントローラに到着している複数のパケットの中から、変換後の優先度の高い順に、マスタごとに送信レートを制御して伝送する。これにより、マスタごとのスループットを保証することでマスタごとの締切時刻を保証することが可能になる。
図39は、往路のメモリコントローラ400の構成を示す。
メモリコントローラ400は、受信したパケットのマスタIDを識別し、マスタごとに対応するバッファにパケットを格納するバッファ管理部401、受信したパケットをマスタごとに分離して格納するためのバッファ部402と、送信先のメモリデバイスの空き状態を確認し、バッファ部402の空きバッファIDを送信元の中継装置に通知するためのフロー制御部403、マスタごとに優先度を変換する優先度変換ルールを記憶する優先度変換ルール記憶部404、各パケットのマスタIDを識別し、識別されたマスタIDと優先度変換ルールに基づき、優先度を変換する優先度変換部405、マスタごとにデータの送信レートを管理するためのレート管理部406、レート管理部406の管理している送信レートと優先度変換部405で変換された優先度に基づき、バッファ部402に格納されたパケットのデータの送信を制御する送信制御部407を備える。なお、バッファは物理的にマスタごとに分離されている必要はなく1つのバッファを論理的に分けて実装してもよい。また、復路のメモリコントローラは、前述したように、宛先および優先度を区別しない構成で実現できるため、メモリデバイスから送信される応答データを格納するバッファ部と送信先の中継装置の空きバッファIDを取得するフロー制御部403と送信先の空きバッファIDの有無に応じてバッファ部に格納された応答データを送信する送信制御部を備える構成(図示せず)になる。
図40は、メモリコントローラ400の動作フローを示す。
バッファ管理部がルータからパケットを受信し、パケットのマスタIDに対応するバッファ部のバッファにパケットを格納する(S90)。フロー制御部403が、送信先のメモリデバイスからメモリデバイスの処理の受付可否の状態を取得し、バッファ部の空きバッファIDを送信元の中継装置へ通知する(S91)。優先度変換部が、各バッファに格納されたパケットのマスタIDを取得し、マスタIDと優先度変換ルールを用いて、優先度の変換を行う(S92)。送信制御部がレート管理部の管理するマスタごとに設定された送信間隔と現在の送信間隔を取得する(S93)。送信制御部がバッファ部に格納されたパケットに対し、現在の送信間隔(前回の送信時刻からの経過時間)から設定された送信間隔を差し引いた差分値の大きい順に「送信間隔に基づく優先順位」を割り当てる(S94)。送信制御部がバッファ部に格納されたパケットに対し、変換後の優先度の高い順に「要求品質に基づく優先順位」を割り当てる(S95)。変換後の要求品質に基づく優先度の同じパケットが複数存在する場合、マスタごとに送信レートが均等になるように(たとえば、全てのマスタの送信レートが同じ値になるよう、または予め定められ得た範囲内(たとえば5%以内)に収まるように)、現在の送信間隔(前回の送信時刻からの経過時間)の大きいマスタから順に要求品質に基づく優先順位を割り当てる(S96)。送信制御部が、現在の送信間隔が設定された送信間隔より大きいパケット(グループ1のパケット)に対しては送信間隔に基づく優先順位の順に、それ以外のパケット(グループ2のパケット)に対しては要求品質に基づく優先順位の順に、グループ2のパケットよりもグループ1のパケットを優先的に、メモリデバイスの空いているときに、パケットのデータをメモリデバイスへ送信する(S97)。送信制御部が、送信したデータのマスタIDをレート管理部に通知する(S98)。
図41は、優先度変換ルール記憶部404に記憶される優先度変換ルールを示す。本実施形態における優先度変換ルールは、マスタIDごとに対応する変換後のクラスを備えるテーブルで実装する。例えば、このルールを用いることで、パケットのマスタIDがマスタ0のパケットは、クラスAから同じ優先度であるクラスAに変換される。また、マスタ1のパケットは、マスタ0と同じクラスのクラスAから、クラスAより優先度の低いクラスBに変換される。マスタ4およびマスタ5のパケットは、クラスCから変換後のクラスの中で最も優先度の低いクラスEに変換される。
図42は、レート管理部406が管理するマスタごとの送信レートを示す。
本実施形態においては、送信レートは、送信するデータの送信間隔で制御する。なお、送信レートは送信間隔ではなく、単位時間当たりに送信したデータ量で制御してもよい。送信間隔で制御する場合、例えば、あらかじめ設計者がレート管理部にマスタごとの送信間隔を設定し、レート管理部は現在の送信間隔(前回の送信時刻からの経過時間)をパケットの送信タイミングに基づき、送信されるとカウンタ値が「0」となるカウンタで、送信待ち時はカウントアップされるカウンタで送信間隔を制御する。具体的には、図42に示すように、マスタ0について、設定された送信間隔は10(サイクル)で、現在のカウンタ値は2(サイクル)である。また、マスタ1について、設定された送信間隔は10(サイクル)で、現在のカウンタ値は12(サイクル)である。このように、現在のカウンタ値が設定された送信間隔よりも大きいパケットについては、送信制御部はその差が大きいパケットから順に送信する「送信間隔に基づく優先順位」を高く割り当てる(グループ1)。マスタ2について、設定された送信間隔は100(サイクル)、現在のカウンタ値は25(サイクル)である。現在のカウンタ値が設定された送信間隔よりも小さいパケットについては、変換後のクラスの優先度の高い順に「要求品質に基づく優先順位」を高く割り当てる(グループ2)。さらに、変換後の要求品質に基づく優先度が同じクラスに割り当てられるマスタが複数存在する(たとえば、クラスEのマスタ4とマスタ5)場合については、送信レートがマスタ間で均等になるように、たとえば、送信制御部は現在のカウンタ値が大きい方から順に要求品質に基づく優先順位を高く割り当てる。あるいは、一定時間に送信したデータ量を積算しておいて、一定時間に送信するデータ量がマスタ間で均等になるように、直前に一定時間に送信したデータ量の小さい方のマスタに対し優先順位を高く割り当ててもよい。なお、スループットと遅延時間の両方を保証しないマスタについては、レート管理部の送信間隔を「−1」で設定し、カウンタ値と設定された送信間隔の差分の計算をせずに、送信のための優先順位は最も低い優先順位を割り当てる。
送信制御部は、例えば、図41と図42の例では、送信制御のためのカウンタ値が設定された送信間隔より大きいマスタ1については(グループ1)、最も高優先である優先順位「1」が割り当てられる(値が小さい方が高優先とする)。次に、送信制御のためのカウンタ値が設定された送信間隔以下のマスタ0、2、3については、要求品質に基づく優先順位に従い(グループ2)、変換後のクラスがクラスAのマスタ0が優先順位「2」、クラスCのマスタ2が優先順位「3」、クラスDのマスタ3が優先順位「4」を割り当てられる。また、スループットおよび遅延時間の両方を保証しない非保証のマスタ4とマスタ5については、最も低い優先順位を割り当て、変換後のクラスが同じクラスEにあたるため、カウンタ値の大きいマスタ5が優先順位「5」、マスタ6が優先順位「6」を割り当てられる。
このようにして、送信制御部は、各マスタの送信レートを設定された送信レートで保証しつつ、優先順位の最も高いパケットをメモリデバイスへ送信する。