(57)【要約】  データ転送装置（３００）は、複数の入力キュー（３１０）と、入力キューごとに設けられた調停制御回路（３２０）と、入力キューごとに設定された優先順位に基づいて入力キューのいずれかを選択し、選択した入力キュー（３１０）からデータを出力させる入力キュー選択回路（３３０）とを備える。そして、調停制御回路（３２０）は、所定の上限値が記憶されるレジスタ（３２１）と、対応する入力キューから出力されたデータ量を計数するカウンタ（３２５）と、カウンタの値がレジスタに記憶されている上限値以上となった場合に、入力キュー選択回路に優先順位を更新させるとともに、カウンタの値をリセットさせる制御回路（３２４）とを有する。
2009147731.tif 000002
【特許請求の範囲】
【請求項１】
複数の入力キューと、
前記入力キューごとに設けられた調停制御部と、
前記入力キューごとに設定された優先順位に基づいて前記入力キューのいずれかを選択し、選択した入力キューからデータを出力させる入力キュー選択部とを備え、
前記調停制御部は、
所定の上限値が記憶されるレジスタと、
対応する入力キューから出力されたデータ量を計数するカウンタと、
前記カウンタの値が前記レジスタに記憶されている上限値以上となった場合に、前記入力キュー選択部に前記優先順位を更新させるとともに、前記カウンタの値をリセットさせる制御回路と
を有することを特徴とするデータ転送装置。
【請求項２】
前記制御回路は、さらに、対応する入力キューから出力されるデータがなくなった場合に、前記入力キュー選択部に前記優先順位を更新させるとともに、前記カウンタの値をリセットさせることを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記入力キュー選択部は、前記入力キューのいずれかを選択した場合に、選択した入力キューに対応する前記調停制御部へその旨を通知し、
前記調停制御部は、前記入力キュー選択部からの通知を契機として、前記カウンタに計数を開始させることを特徴とする請求項１に記載のデータ転送装置。
【請求項４】
前記調停制御部は、対応する入力キューの先頭に格納されているデータのデータ長を取得するデータ長取得部をさらに備え、
前記カウンタは、前記データ長取得部によって取得されたデータ長を加算していくことにより、対応する入力キューから出力されたデータ量を計数することを特徴とする請求項１に記載のデータ転送装置。
【請求項５】
複数の入力キューと、
前記入力キューごとに設けられた調停制御部と、
前記入力キューごとに設定された優先順位に基づいて前記入力キューのいずれかを選択し、選択した入力キューからデータを出力させる入力キュー選択部とを備え、
前記調停制御部は、
所定の上限値が記憶されるレジスタと、
対応する入力キューから出力されたデータ量を計数するカウンタと、
前記カウンタの値が前記レジスタに記憶されている上限値以上となった場合に、前記入力キュー選択部に前記優先順位を更新させるとともに、前記カウンタの値をリセットさせる制御回路と
を有することを特徴とする情報処理装置。
【請求項６】
前記制御回路は、さらに、対応する入力キューから出力されるデータがなくなった場合に、前記入力キュー選択部に前記優先順位を更新させるとともに、前記カウンタの値をリセットさせることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記入力キュー選択部は、前記入力キューのいずれかを選択した場合に、選択した入力キューに対応する前記調停制御部へその旨を通知し、
前記調停制御部は、前記入力キュー選択部からの通知を契機として、前記カウンタに計数を開始させることを特徴とする請求項５に記載の情報処理装置。
【請求項８】
前記調停制御部は、対応する入力キューの先頭に格納されているデータのデータ長を取得するデータ長取得部をさらに備え、
前記カウンタは、前記データ長取得部によって取得されたデータ長を加算していくことにより、対応する入力キューから出力されたデータ量を計数することを特徴とする請求項５に記載の情報処理装置。
【請求項９】
複数の入力キューと、
前記入力キューごとに設けられた調停制御部と、
前記入力キューごとに設定された優先順位に基づいて前記入力キューのいずれかを選択し、選択した入力キューからデータを出力させる入力キュー選択部とを備える情報処理装置における制御方法であって、
前記調停制御部が、対応する入力キューから出力されたデータ量をカウンタに記憶させるステップと、
前記カウンタの値が前記レジスタに記憶されている上限値以上となった場合に、前記調停制御部が、前記入力キュー選択部に前記優先順位を更新させるとともに、前記カウンタの値をリセットさせるステップと
を含むことを特徴とする制御方法。
【請求項１０】
対応する入力キューから出力されるデータがなくなった場合に、前記入力キュー選択部に前記優先順位を更新させるとともに、前記制御回路が、前記カウンタの値をリセットさせるステップをさらに含むことを特徴とする請求項９に記載の制御方法。
【請求項１１】
前記入力キュー選択部が、前記入力キューのいずれかを選択した場合に、選択した入力キューに対応する前記調停制御部へその旨を通知するステップをさらに含み、
前記調停制御部は、前記入力キュー選択部からの通知を契機として、前記データ量をカウンタに記憶させるステップを開始させることを特徴とする請求項９に記載の制御方法。
【請求項１２】
前記調停制御部が、対応する入力キューの先頭に格納されているデータのデータ長を取得するステップをさらに含み、
前記調停制御部は、前記データ長を取得するステップによって取得されたデータ長を前記カウンタに加算していくことにより、対応する入力キューから出力されたデータ量を計数することを特徴とする請求項９に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ転送装置、情報処理装置および制御方法に関し、特に、パケット（データ）のサイズが一律でない場合でも各送信元のスループットを同等にすることができ、かつ、いずれの送信元のパケット（データ）も選択されない状況が発生することがないデータ転送装置、情報処理装置および制御方法に関する。
【背景技術】
【０００２】
ＣＰＵ（Central  Processing  Unit）やＲＡＭ（Random  Access  Memory）を備えたシステムボード等の演算処理モジュールと、各種入出力装置や各種入出力インターフェースを備えた入出力モジュールとを複数備え、それらを高速なスイッチで接続して構成された情報処理装置が知られている。このような構成の情報処理装置においては、複数のモジュールがスイッチへ向けて出力するコマンドパケットやデータパケットの競合を調停する必要がある。【０００３】
一般的に、パケット競合の調停（アービトレーション）は、ラウンドロビン方式で実現される。ラウンドロビン方式とは、あるモジュールから出力されたパケットが選択されたら、そのモジュールの優先順位を最下位へ下げて、他のモジュールの優先順位を上げる方式である。このラウンドロビン方式は実装が容易であるものの、出力されるパケットのサイズが一律でない場合に、各モジュールのスループットにばらつきが生じてしまうという問題がある。【０００４】
すなわち、ラウンドロビン方式では、単位時間当たりに出力可能なパケット数が全てのモジュールでほぼ同一となるため、サイズの大きいパケットを多く出力するモジュールのスループットは高くなり、サイズの小さいパケットを多く出力するモジュールのスループットは相対的に低くなってしまう。この問題を解決するため、ルータ装置等の通信装置の分野では、パケットの競合を調停するために、ディフィシットラウンドロビン（ＤＲＲ：Deficit  Round  Robin）方式やその改良方式が用いられることがある。【０００５】
ディフィシットラウンドロビン方式とは、パケットの出力元毎にキューとカウンタを設け、各カウンタに所定値ｄを加えていき、カウンタの値とキューの先頭パケットのサイズを比較しながら選択するパケットを決定する方式である。各キューの先頭パケットは、対応するキューの値が自身のサイズよりも大きくなった時点で選択され、このとき、対応するキューの値は、選択された先頭パケットのサイズ分だけ減算される。ディフィシットラウンドロビン方式では、パケットのサイズが考慮されるため、出力されるパケットのサイズが一律でない場合であっても、各モジュールのスループットを同等にすることができる。【０００６】
【特許文献１】特開２００１−２１７８６８号公報
【特許文献２】特開２００１−２２３７４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、ディフィシットラウンドロビン方式には、上記の所定値ｄが適正値よりも小さいと、カウンタの値が先頭パケットのサイズよりも大きくなるまでに要する時間が長くなり、いずれの出力元のパケットも選択されない状況が発生するという問題があった。ルータ装置等の通信装置よりもさらに高速な動作が求められる情報処理装置においては、パケットを出力しようとしているモジュールが複数あるにも関わらず、いずれのモジュールのパケットも選択されない状況が発生することは大幅な性能低下を招くため、回避しなければならない。【０００８】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、パケット（データ）のサイズが一律でない場合でも各送信元のスループットを同等にすることができ、かつ、いずれの送信元のパケット（データ）も選択されない状況が発生することがないデータ転送装置、情報処理装置および制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、本願の開示するデータ転送装置および情報処理装置は、一つの態様において、複数の入力キューと、前記入力キューごとに設けられた調停制御部と、前記入力キューごとに設定された優先順位に基づいて前記入力キューのいずれかを選択し、選択した入力キューからデータを出力させる入力キュー選択部とを備え、前記調停制御部は、所定の上限値が記憶されるレジスタと、対応する入力キューから出力されたデータ量を計数するカウンタと、前記カウンタの値が前記レジスタに記憶されている上限値以上となった場合に、前記入力キュー選択部に前記優先順位を更新させるとともに、前記カウンタの値をリセットさせる制御回路とを有する。【００１０】
この発明の態様によれば、まず、入力キューからデータが出力され、出力されたデータ量に基づいて調停が行われるので、データのサイズが一律でない場合でも各送信元のスループットを同等にすることができ、かつ、いずれの送信元のデータも選択されない状況が発生することを抑止できる。【００１１】
なお、本願の開示するデータ転送装置および情報処理装置の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも上述した課題を解決するために有効である。
【発明の効果】
【００１２】
本願の開示するデータ転送装置、情報処理装置および制御方法の一つの態様によれば、データのサイズが一律でない場合でも各送信元のスループットを同等にすることができ、かつ、いずれの送信元のデータも選択されない状況が発生することを抑止できるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１−１】図１−１は、入力キューに格納されているデータパケットの一例を示す図である。
【図１−２】図１−２は、本実施例に係る調停方法によるデータパケットの選択例を示す図である。
【図２−１】図２−１は、入力キューに格納されているコマンドパケットの一例を示す図である。
【図２−２】図２−２は、本実施例に係る調停方法によるコマンドパケットの選択例を示す図である。
【図３】図３は、本実施例に係る情報処理装置の構成の一例を示す図である。
【図４】図４は、図３に示したデータ転送装置の構成の一例を示す図である。
【図５】図５は、入力キュー選択回路の動作を示すフローチャートである。
【図６】図６は、出力データ量測定回路の動作を示すフローチャートである。
【図７】図７は、出力データ量測定回路の構成の一例を示す図である。
【図８】図８は、入力キュー選択回路の構成の一例を示す図である。
【図９】図９は、従来の調停方法によるデータパケットの選択例を示す図である。
【図１０】図１０は、従来の調停方法によるコマンドパケットの選択例を示す図である。
【符号の説明】
【００１４】
１０    システムボード（ＳＢ）
１１    ＣＰＵ
１２    ＣＰＵ制御部
１３    メモリ制御部
１４    ＲＡＭ
１５    ＦＷＨ
２０    ＩＯボード（ＩＯＢ）
２１    ＩＯ制御部
２２    ＰＣＩ制御部
２３    ＰＣＩインターフェース
２４    ＩＣＨ
３１    データクロスバ
３２    アドレスクロスバ
３００    データ転送装置
３１０    入力キュー
３２０    調停制御回路
３２１    上限値設定レジスタ
３２２    ＪＴＡＧ回路またはＳＭＢｕｓ回路
３２３    パケット長デコード回路
３２４    出力データ量測定回路
３２４ａ、３２４ｂ、３２４ｄ、３２４ｅ  ＡＮＤ回路
３２４ｃ、３２４ｆ  加算指示回路
３２４ｇ  比較器
３２４ｈ  リセット指示回路
３２４ｉ  ＯＲ回路
３２５    出力データ量測定カウンタ
３３０  入力キュー選択回路
３３１ａ〜３３１ｃ  ポインタ更新回路
３３２    最優先ポインタ
３３３    ラウンドロビン回路
３３４    ＯＲ回路
３３５    セレクタ
３３６    パケット長カウンタ
３３７ａ〜３３７ｃ  選択期間生成回路
３４０    セレクタ
３５０    出力キュー
【発明を実施するための最良の形態】
【００１５】
以下に、本願の開示するデータ転送装置、情報処理装置および制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１６】
まず、本実施例に係る調停方法の概要について、従来の調停方法と比較しながら説明する。図１−１は、入力キューに格納されているデータパケットの一例を示す図である。この例は、入力キュー＃０〜＃２に格納されたパケットがセレクタによって選択され、出力キュー＃３へ出力される場面を示している。入力キュー＃０〜２は、それぞれ異なる出力元から出力されたパケットが一時的に格納されるキューである。【００１７】
この例では、８ｂｙｔｅのヘッダ部と２４ｂｙｔｅのデータ部とからなる３２ｂｙｔｅのデータパケットと４ｂｙｔｅのヘッダ部と４ｂｙｔｅのデータ部とからなる８ｂｙｔｅのデータパケットとが混在している。入力キュー＃０には、３２ｂｙｔｅのパケットＡおよびＢが格納されている。入力キュー＃１には、８ｂｙｔｅのパケットＣ〜Ｇが格納されている。また、入力キュー＃２には、８ｂｙｔｅのパケットＨおよびＩと、３２ｂｙｔｅのパケットＪと、８ｂｙｔｅのパケットＫが格納されている。【００１８】
図９は、従来の調停方法によるデータパケットの選択例を示す図である。図１−１に示した場面において、単純なラウンドロビン方式を用いて、最優先とする入力キューを＃０→＃１→＃２→＃０→＃１→＃２と巡回させると、この例のように、まず、入力キュー＃０のパケットＡが選択され、出力キュー＃３に格納される。続いて、入力キュー＃１のパケットＣ、入力キュー＃２のパケットＨ、入力キュー＃０のパケットＢ、入力キュー＃１のパケットＤ、入力キュー＃２のパケットＩが順に選択され、出力キュー＃３に格納される。【００１９】
この例では、入力キュー＃０からは合計６４ｂｙｔｅ分のパケットが選択されているのに対して、入力キュー＃１および＃２からは、同じ期間内で、合計１６ｂｙｔｅ分のパケットしか選択されていない。このように、従来の調停方法においては、出力されるパケットのサイズの違いによって、単位時間当たりに選択されるデータサイズが入力キューごとに異なってしまう。【００２０】
全ての入力キューにおいて単位時間当たりに選択されるデータサイズが同等になるように制御するためにディフィシットラウンドロビン方式を採用することも考えられる。しかし、その場合、設定が適切でないと、出力可能なパケットがあるにも関わらず、いずれの入力キューのパケットも選択されない状況が生じ得る。【００２１】
図１−２は、本実施例に係る調停方法によるデータパケットの選択例を示す図である。本実施例に係る調停方法は、既に選択されたパケットのサイズに基づいて各入力キューの優先順位を変動させる。具体的には、本実施例に係る調停方法では、ある入力キューのパケットが選択されると、その入力キューから出力されるパケットのサイズの集計が開始され、集計値が予め設定された上限値以上となるか、その入力キューから出力可能なパケットがなくなるまで、その入力キューのパケットが選択され続ける。そして、集計値が予め設定された上限値以上となるか、出力可能なパケットがなくなると、その入力キューの優先順位が最下位へ下げられ、他の入力キューのパケットが選択されるようになる。【００２２】
この方式では、各入力キューに設定する上限値を同一の値とすることにより、全ての入力キューにおいて単位時間当たりに選択されるデータサイズを同等にすることができる。また、この方式では、入力キューから出力する前のパケットのサイズに基づいて出力の開始を判定するのではなく、まず、出力可能なパケットの出力が開始され、出力したサイズに基づいて出力の停止が判断されるので、出力可能なパケットがあるにも関わらず、いずれの入力キューのパケットも選択されない状況は発生しない。【００２３】
図１−２の例では、上限値として３２ｂｙｔｅが各キューに設定されている。このため、最優先とする入力キューが＃０→＃１→＃２と一巡する間に、入力キュー＃０からはパケットＡが選択され、入力キュー＃１からはパケットＣ〜Ｆが選択され、入力キュー＃２からはパケットＨおよびＩが選択されている。図９と図１−２を比較すれば明らかなように、本実施例に係る調停方法の方が、従来の調停方法よりも、単位時間当たりに選択されるデータサイズが均一に近くなっている。【００２４】
なお、本実施例に係る調停方法では、各入力キューに設定する上限値を異なる値とすることにより、各入力キューにおいて単位時間当たりに選択されるデータサイズを意図的に変更することもできる。例えば、高スループットが必要な出力元から出力されるパケットが格納される入力キューに上限値として大きな値を設定することにより、単位時間当たりに選択されるデータ量を増やすことができる。【００２５】
なお、上記の説明では、データパケットの調停について、本実施例に係る調停方法と従来の調停方法とを比較したが、本実施例に係る調停方法は、コマンドパケットの調停においても有効である。すなわち、図２−１に示すように、ＩＯへのライトコマンドのような比較的サイズの大きいコマンドパケットと、メモリのリードコマンドのような比較的サイズの小さいコマンドパケットが混在している場合、単純なラウンドロビン方式に基づく従来の調停方法では、図１０に示すように、単位時間当たりに選択されるパケットサイズが入力キューごとに異なってしまう。一方、本実施例に係る調停方法では、図２−２に示すように、単位時間当たりに選択されるパケットサイズをほぼ均一にすることができる。【００２６】
次に、本実施例に係る調停方法を実行するデータ転送装置と、そのデータ転送装置を備える情報処理装置の構成について説明する。図３は、本実施例に係る情報処理装置の構成の一例を示す図である。図３に示すように、本実施例に係る情報処理装置は、複数のシステムボード（以下、「ＳＢ」と略記する）１０と、複数のＩＯボード（以下、「ＩＯＢ」と略記する）２０と、データクロスバ３１と、アドレスクロスバ３２とを有する。【００２７】
ＳＢ１０は、演算処理を実行する演算処理モジュールであり、ＣＰＵ１１と、ＣＰＵ制御部１２と、メモリ制御部１３と、ＲＡＭ１４と、ＦＷＨ（FirmWare  Hub）１５等を有する。ＣＰＵ１１は、各種演算を実行する演算回路であり、ＣＰＵ制御部１２は、複数のＣＰＵ１１のリクエストの競合を調停するとともに、ＣＰＵ１１のリクエストをメモリ制御部１３もしくはＩＯＢ２０へ振り分ける回路である。メモリ制御部１３は、ＲＡＭ１４へのアクセスを制御する回路であり、ＲＡＭ１４は情報を一時的に記憶する記憶回路である。ＦＷＨ１５は、ファームウェアを記憶する記憶回路である。【００２８】
ＩＯＢ２０は、メモリアクセス以外の各種入出力制御を実行する入出力モジュールであり、ＩＯ制御部２１と、ＰＣＩ（Peripheral  Component  Interconnect）制御部２２と、ＰＣＩインターフェース２３と、ＩＣＨ（IO  Controller  Hub）２４を有する。ＩＯ制御部２１は、ＩＯＢ２０を全体制御する回路であり、ＰＣＩ制御部２２は、ＰＣＩインターフェース２３に接続される各種ＰＣＩデバイスを制御する回路である。ＩＣＨ２４は、ＩＯＢ２０上に実装されたネットワークインターフェース（ＬＡＮ）、画面制御装置（ＶＧＡ）、シリアル入出力制御装置（ＳＩＯ）、ベースボード管理装置（ＢＭＣ）等を制御する回路である。【００２９】
データクロスバ３１およびアドレスクロスバ３２は、複数のＳＢ１０および複数のＩＯＢ２０を電気的に接続させる接続モジュールであり、それぞれ、高速なスイッチであるデータ転送装置３００を有する。【００３０】
図４は、図３に示したデータ転送装置３００の構成の一例を示す図である。なお、ここでは、説明を簡単にするため、調停に関連する構成のみを図示している。また、データパケットとコマンドパケットの区別もおこなわないこととする。【００３１】
図４に示すように、データ転送装置３００は、入力キュー３１０と調停制御回路３２０の組合せを複数と、入力キュー選択回路３３０と、セレクタ３４０と、出力キュー３５０とを有する。入力キュー３１０は、あるモジュールから出力されたパケットが一時的に格納されるキューである。調停制御回路３２０は、入力キュー３１０ごとに設けられ、対応する入力キュー３１０から出力されるデータ量を監視する回路であり、上限値設定レジスタ３２１と、ＪＴＡＧ回路またはＳＭＢｕｓ回路３２２と、パケット長デコード回路３２３と、出力データ量測定回路３２４と、出力データ量測定カウンタ３２５とを有する。【００３２】
上限値設定レジスタ３２１は、出力するデータ量の上限値を記憶する。上限値設定レジスタ３２１は、入力キュー３１０ごとに存在するため、出力するデータ量の上限値は、入力キュー３１０ごとに異なった値とすることもできるし、全ての入力キュー３１０において同一の値とすることもできる。ＪＴＡＧ回路またはＳＭＢｕｓ回路３２２は、上限値設定レジスタ３２１に対して、外部から上限値を設定するための回路である。【００３３】
パケット長デコード回路３２３は、対応する入力キュー３１０の先頭パケットのサイズを取得する回路である。パケットのサイズは、パケットのヘッダ部の所定の位置を参照することにより取得することができる。【００３４】
出力データ量測定回路３２４は、対応する入力キューの先頭パケットが選択される旨の信号を受信するたびに、パケット長デコード回路３２３によって取得された先頭パケットのサイズを出力データ量測定カウンタ３２５に加算させる。そして、加算後の出力データ量測定カウンタ３２５の値が、上限値設定レジスタ３２１の値以上となった場合には、出力データ量測定回路３２４は、出力データ量測定カウンタ３２５の値をリセットさせるとともに、入力キュー選択回路３３０に対して入力キューの優先順位の変更を指示する。また、出力データ量測定回路３２４は、対応する入力キューの先頭パケットが選択される旨の信号を受信した後に、対応する入力キューに出力可能なパケットがなくなった旨の信号を受信した場合にも、出力データ量測定カウンタ３２５の値をリセットさせるとともに、入力キュー選択回路３３０に対して入力キューの優先順位の変更を指示する。出力データ量測定カウンタ３２５は、出力データ量を記憶する。【００３５】
入力キュー選択回路３３０は、優先順位に基づいていずれかの入力キュー３１０の先頭パケットを選択してセレクタ３４０へ出力させるとともに、先頭パケットを選択する旨の信号を、そのパケットが格納されている入力キューに対応する出力データ量測定回路３２４へ送信する。セレクタ３４０は、入力キュー３１０から出力されたパケットを出力キュー３５０に格納させる。出力キュー３５０は、パケットが一時的に格納されるキューである。【００３６】
次に、図４に示したデータ転送装置３００の動作について説明する。図５は、入力キュー選択回路３３０の動作を示すフローチャートである。図５に示すように、入力キュー選択回路３３０は、優先順位に従って、出力可能なパケットが格納された入力キュー３１０の中から選択するキューを決定する（ステップＳ１０１）。【００３７】
続いて、入力キュー選択回路３３０は、決定した入力キュー３１０の先頭パケット長を取得する（ステップＳ１０２）。そして、入力キュー選択回路３３０は、取得したパケット長に基づいて、先頭パケットを出力させるために必要な期間を求め、決定した入力キュー３１０がその期間選択されるように設定する（ステップＳ１０３）。また、入力キュー選択回路３３０は、決定した入力キュー３１０の先頭パケットが出力される旨を通知する信号を、その入力キュー３１０に対応する出力データ量測定回路３２４へ送信する（ステップＳ１０４）。【００３８】
また、入力キュー選択回路３３０は、出力データ量測定回路３２４から入力キューの優先順位の変更を指示された場合には（ステップＳ１０５肯定）、その出力データ量測定回路３２４に対応する入力キュー３１０の優先順位が最下位になるように優先順位を更新する（ステップＳ１０６）。入力キュー選択回路３３０は、以上のステップＳ１０１〜Ｓ１０６の手順を繰り返し実行する。なお、ステップ１０１〜Ｓ１０４の手順と、ステップＳ１０５〜Ｓ１０６の手順はこの通り順次実行する必要はなく、それぞれ独立して非同期で実行することができる。【００３９】
図６は、出力データ量測定回路３２４の動作を示すフローチャートである。同図に示すように、対応する入力キュー３１０の先頭パケットが選択される旨の信号を受信すると（ステップＳ２０１）、出力データ量測定回路３２４は、先頭パケットのパケット長を出力データ量測定カウンタ３２５に加算する（ステップＳ２０２）。【００４０】
そして、加算後の出力データ量測定カウンタ３２５の値を、上限値設定レジスタ３２１に記憶されている上限値と比較し（ステップＳ２０３）、加算後の値が上限値以上であれば（ステップＳ２０４肯定）、出力データ量測定回路３２４は、出力データ量測定カウンタ３２５の値をリセットするとともに（ステップＳ２０５）、入力キュー選択回路３３０に対して、入力キューの優先順位の変更を指示する（ステップＳ２０６）。【００４１】
一方、加算後の値が上限値未満の場合は（ステップＳ２０４否定）、対応する入力キューに出力可能なパケットが残っていない旨の信号が受信されれば（ステップＳ２０７肯定）、出力データ量測定回路３２４は、出力データ量測定カウンタ３２５の値をリセットするとともに（ステップＳ２０５）、入力キュー選択回路３３０に対して、入力キューの優先順位の変更を指示する（ステップＳ２０６）。【００４２】
入力キュー選択回路３３０は、対応する入力キュー３１０の先頭パケットが選択される旨の信号を受信するたびに、上記のステップＳ２０１〜Ｓ２０７の手順を実行する。【００４３】
次に、上記の動作を実現させるための出力データ量測定回路３２４と入力キュー選択回路３３０の構成について説明する。図７は、出力データ量測定回路３２４の構成の一例を示す図である。なお、この例では、説明を簡単にするため、パケット長が２ｂｙｔｅもしくは８ｂｙｔｅであることを想定しているが、パケット長はこの２種類に限定されるものではない。【００４４】
図７に示す構成においては、先頭パケットが選択される旨を通知するパケット出力信号が受信されたときに、パケット長デコード回路３２３から先頭パケットのサイズが２ｂｙｔｅである旨を示す信号が送信されていると、ＡＮＤ回路３２４ａの出力がＯＮになる。そして、ＡＮＤ回路３２４ａの出力がＯＮになり、かつ、上限値設定レジスタ３２１に設定されている上限値と出力データ量測定カウンタ３２５の値を比較する比較器３２４ｇから上限値がカウンタ値以上である旨の信号が出力されていないと、ＡＮＤ回路３２４ｂの出力もＯＮになる。そして、ＡＮＤ回路３２４ｂの出力がＯＮになると、加算指示回路３２４ｃから増分２の加算指示が出力データ量測定カウンタ３２５へ送信されることになる。【００４５】
また、先頭パケットが選択される旨を通知するパケット出力信号が受信されたときに、パケット長デコード回路３２３から先頭パケットのサイズが８ｂｙｔｅである旨を示す信号が送信されていると、ＡＮＤ回路３２４ｄの出力がＯＮになる。そして、ＡＮＤ回路３２４ｄの出力がＯＮになり、かつ、比較器３２４ｇから上限値がカウンタ値以上である旨の信号が出力されていないと、ＡＮＤ回路３２４ｅの出力もＯＮになる。そして、ＡＮＤ回路３２４ｅの出力がＯＮになると、加算指示回路３２４ｆから増分８の加算指示が出力データ量測定カウンタ３２５へ送信されることになる。【００４６】
また、比較器３２４ｇから上限値がカウンタ値以上である旨の信号が出力された場合には、ＯＲ回路３２４ｉの出力がＯＮになる。また、対応する入力キュー３１０に出力可能なパケットがなくなった旨を示すブランク信号が受信された場合にも、ＯＲ回路３２４ｉの出力がＯＮになる。そして、ＯＲ回路３２４ｉの出力がＯＮになると、リセット指示回路３２４ｈからリセット指示が出力データ量測定カウンタ３２５へ送信されるとともに、優先順位変更指示が入力キュー選択回路３３０へ送信される。【００４７】
図８は、入力キュー選択回路３３０の構成の一例を示す図である。なお、この例では、説明を簡単にするため、入力キュー３１０が３個あり、それぞれ＃０〜＃２として識別されることを想定しているが、入力キュー３１０の数は３個に限定されるものではない。【００４８】
図８に示す構成においては、＃０の入力キュー３１０に対応する調停制御回路３２０から優先順位変更指示が受信されると、ポインタ更新回路３３１ａが最優先ポインタ３３２の値を＃１に更新する。また、＃１の入力キュー３１０に対応する調停制御回路３２０から優先順位変更指示が受信されると、ポインタ更新回路３３１ｂが最優先ポインタ３３２の値を＃２に更新する。また、＃２の入力キュー３１０に対応する調停制御回路３２０から優先順位変更指示が受信されると、ポインタ更新回路３３１ｃが最優先ポインタ３３２の値を＃０に更新する。【００４９】
また、１ないし複数の入力キュー３１０から出力可能なパケットが存在することを示すリクエストが受信されると、ラウンドロビン回路３３３は、最優先ポインタ３３２に設定されている番号に対応する入力キュー３１０を最優先とする優先順位に基づいて、リクエストを送信した入力キュー３１０のいずれを選択するかを決定し、該当入力キュー３１０のパケット出力信号を送信する。入力キュー３１０のいずれかのパケット出力信号がＯＮになると、ＯＲ回路３３４の出力がＯＮになる。そして、ＯＲ回路３３４の出力がＯＮになると、ラウンドロビン回路３３３によって決定された入力キュー３１０の先頭パケット長がセレクタ３３５において選択され、パケット長カウンタ３３６に格納される。【００５０】
そして、パケット長カウンタ３３６に格納されたパケット長は、パケット長に基づいて入力キュー３１０の選択期間を生成する選択期間生成回路３３７ａ〜３３７ｃに出力される。そして、選択期間生成回路３３７ａ〜３３７ｃのうち、ラウンドロビン回路３３３によって決定された入力キュー３１０に対応するものが、対応する入力キュー３１０を生成された期間だけ選択させるとともに、先頭パケットが選択される旨を示すパケット出力信号を対応する調停制御回路３２０へ送信する。
【図１−１】
2009147731.tif 000003
【図１−２】
2009147731.tif 000004
【図２−１】
2009147731.tif 000005
【図２−２】
2009147731.tif 000006
【図３】
2009147731.tif 000007
【図４】
2009147731.tif 000008
【図５】
2009147731.tif 000009
【図６】
2009147731.tif 000010
【図７】
2009147731.tif 000011
【図８】
2009147731.tif 000012
【図９】
2009147731.tif 000013
【図１０】
2009147731.tif 000014
【手続補正書】
【提出日】平成22年8月2日(2010.8.2)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データ転送装置、情報処理装置および制御方法に関し、特に、パケット（データ）のサイズが一律でない場合でも各送信元のスループットを同等にすることができ、かつ、いずれの送信元のパケット（データ）も選択されない状況が発生することがないデータ転送装置、情報処理装置および制御方法に関する。
【背景技術】
【０００２】
ＣＰＵ（Central  Processing  Unit）やＲＡＭ（Random  Access  Memory）を備えたシステムボード等の演算処理モジュールと、各種入出力装置や各種入出力インターフェースを備えた入出力モジュールとを複数備え、それらを高速なスイッチで接続して構成された情報処理装置が知られている。このような構成の情報処理装置においては、複数のモジュールがスイッチへ向けて出力するコマンドパケットやデータパケットの競合を調停する必要がある。
【０００３】
一般的に、パケット競合の調停（アービトレーション）は、ラウンドロビン方式で実現される。ラウンドロビン方式とは、あるモジュールから出力されたパケットが選択されたら、そのモジュールの優先順位を最下位へ下げて、他のモジュールの優先順位を上げる方式である。このラウンドロビン方式は実装が容易であるものの、出力されるパケットのサイズが一律でない場合に、各モジュールのスループットにばらつきが生じてしまうという問題がある。
【０００４】
すなわち、ラウンドロビン方式では、単位時間当たりに出力可能なパケット数が全てのモジュールでほぼ同一となるため、サイズの大きいパケットを多く出力するモジュールのスループットは高くなり、サイズの小さいパケットを多く出力するモジュールのスループットは相対的に低くなってしまう。この問題を解決するため、ルータ装置等の通信装置の分野では、パケットの競合を調停するために、ディフィシットラウンドロビン（ＤＲＲ：Deficit  Round  Robin）方式やその改良方式が用いられることがある。
【０００５】
ディフィシットラウンドロビン方式とは、パケットの出力元毎にキューとカウンタを設け、各カウンタに所定値ｄを加えていき、カウンタの値とキューの先頭パケットのサイズを比較しながら選択するパケットを決定する方式である。各キューの先頭パケットは、対応するキューの値が自身のサイズよりも大きくなった時点で選択され、このとき、対応するキューの値は、選択された先頭パケットのサイズ分だけ減算される。ディフィシットラウンドロビン方式では、パケットのサイズが考慮されるため、出力されるパケットのサイズが一律でない場合であっても、各モジュールのスループットを同等にすることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−２１７８６８号公報
【特許文献２】特開２００１−２２３７４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、ディフィシットラウンドロビン方式には、上記の所定値ｄが適正値よりも小さいと、カウンタの値が先頭パケットのサイズよりも大きくなるまでに要する時間が長くなり、いずれの出力元のパケットも選択されない状況が発生するという問題があった。ルータ装置等の通信装置よりもさらに高速な動作が求められる情報処理装置においては、パケットを出力しようとしているモジュールが複数あるにも関わらず、いずれのモジュールのパケットも選択されない状況が発生することは大幅な性能低下を招くため、回避しなければならない。
【０００８】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、パケット（データ）のサイズが一律でない場合でも各送信元のスループットを同等にすることができ、かつ、いずれの送信元のパケット（データ）も選択されない状況が発生することがないデータ転送装置、情報処理装置および制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するため、本願の開示するデータ転送装置および情報処理装置は、一つの態様において、複数の入力キューと、前記入力キューごとに設けられた調停制御部と、前記入力キューごとに設定された優先順位に基づいて前記入力キューのいずれかを選択し、選択した入力キューからデータを出力させる入力キュー選択部とを備え、前記調停制御部は、所定の上限値が記憶されるレジスタと、対応する入力キューから出力されたデータ量を計数するカウンタと、前記カウンタの値が前記レジスタに記憶されている上限値以上となった場合に、前記入力キュー選択部に前記優先順位を更新させるとともに、前記カウンタの値をリセットさせる制御回路とを有する。
【００１０】
この発明の態様によれば、まず、入力キューからデータが出力され、出力されたデータ量に基づいて調停が行われるので、データのサイズが一律でない場合でも各送信元のスループットを同等にすることができ、かつ、いずれの送信元のデータも選択されない状況が発生することを抑止できる。
【００１１】
なお、本願の開示するデータ転送装置および情報処理装置の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも上述した課題を解決するために有効である。
【発明の効果】
【００１２】
本願の開示するデータ転送装置、情報処理装置および制御方法の一つの態様によれば、データのサイズが一律でない場合でも各送信元のスループットを同等にすることができ、かつ、いずれの送信元のデータも選択されない状況が発生することを抑止できるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１−１】図１−１は、入力キューに格納されているデータパケットの一例を示す図である。
【図１−２】図１−２は、本実施例に係る調停方法によるデータパケットの選択例を示す図である。
【図２−１】図２−１は、入力キューに格納されているコマンドパケットの一例を示す図である。
【図２−２】図２−２は、本実施例に係る調停方法によるコマンドパケットの選択例を示す図である。
【図３】図３は、本実施例に係る情報処理装置の構成の一例を示す図である。
【図４】図４は、図３に示したデータ転送装置の構成の一例を示す図である。
【図５】図５は、入力キュー選択回路の動作を示すフローチャートである。
【図６】図６は、出力データ量測定回路の動作を示すフローチャートである。
【図７】図７は、出力データ量測定回路の構成の一例を示す図である。
【図８】図８は、入力キュー選択回路の構成の一例を示す図である。
【図９】図９は、従来の調停方法によるデータパケットの選択例を示す図である。
【図１０】図１０は、従来の調停方法によるコマンドパケットの選択例を示す図である。
【発明を実施するための形態】
【００１４】
以下に、本願の開示するデータ転送装置、情報処理装置および制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１５】
まず、本実施例に係る調停方法の概要について、従来の調停方法と比較しながら説明する。図１−１は、入力キューに格納されているデータパケットの一例を示す図である。この例は、入力キュー＃０〜＃２に格納されたパケットがセレクタによって選択され、出力キュー＃３へ出力される場面を示している。入力キュー＃０〜２は、それぞれ異なる出力元から出力されたパケットが一時的に格納されるキューである。
【００１６】
この例では、８ｂｙｔｅのヘッダ部と２４ｂｙｔｅのデータ部とからなる３２ｂｙｔｅのデータパケットと４ｂｙｔｅのヘッダ部と４ｂｙｔｅのデータ部とからなる８ｂｙｔｅのデータパケットとが混在している。入力キュー＃０には、３２ｂｙｔｅのパケットＡおよびＢが格納されている。入力キュー＃１には、８ｂｙｔｅのパケットＣ〜Ｇが格納されている。また、入力キュー＃２には、８ｂｙｔｅのパケットＨおよびＩと、３２ｂｙｔｅのパケットＪと、８ｂｙｔｅのパケットＫが格納されている。
【００１７】
図９は、従来の調停方法によるデータパケットの選択例を示す図である。図１−１に示した場面において、単純なラウンドロビン方式を用いて、最優先とする入力キューを＃０→＃１→＃２→＃０→＃１→＃２と巡回させると、この例のように、まず、入力キュー＃０のパケットＡが選択され、出力キュー＃３に格納される。続いて、入力キュー＃１のパケットＣ、入力キュー＃２のパケットＨ、入力キュー＃０のパケットＢ、入力キュー＃１のパケットＤ、入力キュー＃２のパケットＩが順に選択され、出力キュー＃３に格納される。
【００１８】
この例では、入力キュー＃０からは合計６４ｂｙｔｅ分のパケットが選択されているのに対して、入力キュー＃１および＃２からは、同じ期間内で、合計１６ｂｙｔｅ分のパケットしか選択されていない。このように、従来の調停方法においては、出力されるパケットのサイズの違いによって、単位時間当たりに選択されるデータサイズが入力キューごとに異なってしまう。
【００１９】
全ての入力キューにおいて単位時間当たりに選択されるデータサイズが同等になるように制御するためにディフィシットラウンドロビン方式を採用することも考えられる。しかし、その場合、設定が適切でないと、出力可能なパケットがあるにも関わらず、いずれの入力キューのパケットも選択されない状況が生じ得る。
【００２０】
図１−２は、本実施例に係る調停方法によるデータパケットの選択例を示す図である。本実施例に係る調停方法は、既に選択されたパケットのサイズに基づいて各入力キューの優先順位を変動させる。具体的には、本実施例に係る調停方法では、ある入力キューのパケットが選択されると、その入力キューから出力されるパケットのサイズの集計が開始され、集計値が予め設定された上限値以上となるか、その入力キューから出力可能なパケットがなくなるまで、その入力キューのパケットが選択され続ける。そして、集計値が予め設定された上限値以上となるか、出力可能なパケットがなくなると、その入力キューの優先順位が最下位へ下げられ、他の入力キューのパケットが選択されるようになる。
【００２１】
この方式では、各入力キューに設定する上限値を同一の値とすることにより、全ての入力キューにおいて単位時間当たりに選択されるデータサイズを同等にすることができる。また、この方式では、入力キューから出力する前のパケットのサイズに基づいて出力の開始を判定するのではなく、まず、出力可能なパケットの出力が開始され、出力したサイズに基づいて出力の停止が判断されるので、出力可能なパケットがあるにも関わらず、いずれの入力キューのパケットも選択されない状況は発生しない。
【００２２】
図１−２の例では、上限値として３２ｂｙｔｅが各キューに設定されている。このため、最優先とする入力キューが＃０→＃１→＃２と一巡する間に、入力キュー＃０からはパケットＡが選択され、入力キュー＃１からはパケットＣ〜Ｆが選択され、入力キュー＃２からはパケットＨおよびＩが選択されている。図９と図１−２を比較すれば明らかなように、本実施例に係る調停方法の方が、従来の調停方法よりも、単位時間当たりに選択されるデータサイズが均一に近くなっている。
【００２３】
なお、本実施例に係る調停方法では、各入力キューに設定する上限値を異なる値とすることにより、各入力キューにおいて単位時間当たりに選択されるデータサイズを意図的に変更することもできる。例えば、高スループットが必要な出力元から出力されるパケットが格納される入力キューに上限値として大きな値を設定することにより、単位時間当たりに選択されるデータ量を増やすことができる。
【００２４】
なお、上記の説明では、データパケットの調停について、本実施例に係る調停方法と従来の調停方法とを比較したが、本実施例に係る調停方法は、コマンドパケットの調停においても有効である。すなわち、図２−１に示すように、ＩＯへのライトコマンドのような比較的サイズの大きいコマンドパケットと、メモリのリードコマンドのような比較的サイズの小さいコマンドパケットが混在している場合、単純なラウンドロビン方式に基づく従来の調停方法では、図１０に示すように、単位時間当たりに選択されるパケットサイズが入力キューごとに異なってしまう。一方、本実施例に係る調停方法では、図２−２に示すように、単位時間当たりに選択されるパケットサイズをほぼ均一にすることができる。
【００２５】
次に、本実施例に係る調停方法を実行するデータ転送装置と、そのデータ転送装置を備える情報処理装置の構成について説明する。図３は、本実施例に係る情報処理装置の構成の一例を示す図である。図３に示すように、本実施例に係る情報処理装置は、複数のシステムボード（以下、「ＳＢ」と略記する）１０と、複数のＩＯボード（以下、「ＩＯＢ」と略記する）２０と、データクロスバ３１と、アドレスクロスバ３２とを有する。
【００２６】
ＳＢ１０は、演算処理を実行する演算処理モジュールであり、ＣＰＵ１１と、ＣＰＵ制御部１２と、メモリ制御部１３と、ＲＡＭ１４と、ＦＷＨ（FirmWare  Hub）１５等を有する。ＣＰＵ１１は、各種演算を実行する演算回路であり、ＣＰＵ制御部１２は、複数のＣＰＵ１１のリクエストの競合を調停するとともに、ＣＰＵ１１のリクエストをメモリ制御部１３もしくはＩＯＢ２０へ振り分ける回路である。メモリ制御部１３は、ＲＡＭ１４へのアクセスを制御する回路であり、ＲＡＭ１４は情報を一時的に記憶する記憶回路である。ＦＷＨ１５は、ファームウェアを記憶する記憶回路である。
【００２７】
ＩＯＢ２０は、メモリアクセス以外の各種入出力制御を実行する入出力モジュールであり、ＩＯ制御部２１と、ＰＣＩ（Peripheral  Component  Interconnect）制御部２２と、ＰＣＩインターフェース２３と、ＩＣＨ（IO  Controller  Hub）２４を有する。ＩＯ制御部２１は、ＩＯＢ２０を全体制御する回路であり、ＰＣＩ制御部２２は、ＰＣＩインターフェース２３に接続される各種ＰＣＩデバイスを制御する回路である。ＩＣＨ２４は、ＩＯＢ２０上に実装されたネットワークインターフェース（ＬＡＮ）、画面制御装置（ＶＧＡ）、シリアル入出力制御装置（ＳＩＯ）、ベースボード管理装置（ＢＭＣ）等を制御する回路である。
【００２８】
データクロスバ３１およびアドレスクロスバ３２は、複数のＳＢ１０および複数のＩＯＢ２０を電気的に接続させる接続モジュールであり、それぞれ、高速なスイッチであるデータ転送装置３００を有する。
【００２９】
図４は、図３に示したデータ転送装置３００の構成の一例を示す図である。なお、ここでは、説明を簡単にするため、調停に関連する構成のみを図示している。また、データパケットとコマンドパケットの区別もおこなわないこととする。
【００３０】
図４に示すように、データ転送装置３００は、入力キュー３１０と調停制御回路３２０の組合せを複数と、入力キュー選択回路３３０と、セレクタ３４０と、出力キュー３５０とを有する。入力キュー３１０は、あるモジュールから出力されたパケットが一時的に格納されるキューである。調停制御回路３２０は、入力キュー３１０ごとに設けられ、対応する入力キュー３１０から出力されるデータ量を監視する回路であり、上限値設定レジスタ３２１と、ＪＴＡＧ回路またはＳＭＢｕｓ回路３２２と、パケット長デコード回路３２３と、出力データ量測定回路３２４と、出力データ量測定カウンタ３２５とを有する。
【００３１】
上限値設定レジスタ３２１は、出力するデータ量の上限値を記憶する。上限値設定レジスタ３２１は、入力キュー３１０ごとに存在するため、出力するデータ量の上限値は、入力キュー３１０ごとに異なった値とすることもできるし、全ての入力キュー３１０において同一の値とすることもできる。ＪＴＡＧ回路またはＳＭＢｕｓ回路３２２は、上限値設定レジスタ３２１に対して、外部から上限値を設定するための回路である。
【００３２】
パケット長デコード回路３２３は、対応する入力キュー３１０の先頭パケットのサイズを取得する回路である。パケットのサイズは、パケットのヘッダ部の所定の位置を参照することにより取得することができる。
【００３３】
出力データ量測定回路３２４は、対応する入力キューの先頭パケットが選択される旨の信号を受信するたびに、パケット長デコード回路３２３によって取得された先頭パケットのサイズを出力データ量測定カウンタ３２５に加算させる。そして、加算後の出力データ量測定カウンタ３２５の値が、上限値設定レジスタ３２１の値以上となった場合には、出力データ量測定回路３２４は、出力データ量測定カウンタ３２５の値をリセットさせるとともに、入力キュー選択回路３３０に対して入力キューの優先順位の変更を指示する。また、出力データ量測定回路３２４は、対応する入力キューの先頭パケットが選択される旨の信号を受信した後に、対応する入力キューに出力可能なパケットがなくなった旨の信号を受信した場合にも、出力データ量測定カウンタ３２５の値をリセットさせるとともに、入力キュー選択回路３３０に対して入力キューの優先順位の変更を指示する。出力データ量測定カウンタ３２５は、出力データ量を記憶する。
【００３４】
入力キュー選択回路３３０は、優先順位に基づいていずれかの入力キュー３１０の先頭パケットを選択してセレクタ３４０へ出力させるとともに、先頭パケットを選択する旨の信号を、そのパケットが格納されている入力キューに対応する出力データ量測定回路３２４へ送信する。セレクタ３４０は、入力キュー３１０から出力されたパケットを出力キュー３５０に格納させる。出力キュー３５０は、パケットが一時的に格納されるキューである。
【００３５】
次に、図４に示したデータ転送装置３００の動作について説明する。図５は、入力キュー選択回路３３０の動作を示すフローチャートである。図５に示すように、入力キュー選択回路３３０は、優先順位に従って、出力可能なパケットが格納された入力キュー３１０の中から選択するキューを決定する（ステップＳ１０１）。
【００３６】
続いて、入力キュー選択回路３３０は、決定した入力キュー３１０の先頭パケット長を取得する（ステップＳ１０２）。そして、入力キュー選択回路３３０は、取得したパケット長に基づいて、先頭パケットを出力させるために必要な期間を求め、決定した入力キュー３１０がその期間選択されるように設定する（ステップＳ１０３）。また、入力キュー選択回路３３０は、決定した入力キュー３１０の先頭パケットが出力される旨を通知する信号を、その入力キュー３１０に対応する出力データ量測定回路３２４へ送信する（ステップＳ１０４）。
【００３７】
また、入力キュー選択回路３３０は、出力データ量測定回路３２４から入力キューの優先順位の変更を指示された場合には（ステップＳ１０５肯定）、その出力データ量測定回路３２４に対応する入力キュー３１０の優先順位が最下位になるように優先順位を更新する（ステップＳ１０６）。入力キュー選択回路３３０は、以上のステップＳ１０１〜Ｓ１０６の手順を繰り返し実行する。なお、ステップ１０１〜Ｓ１０４の手順と、ステップＳ１０５〜Ｓ１０６の手順はこの通り順次実行する必要はなく、それぞれ独立して非同期で実行することができる。
【００３８】
図６は、出力データ量測定回路３２４の動作を示すフローチャートである。同図に示すように、対応する入力キュー３１０の先頭パケットが選択される旨の信号を受信すると（ステップＳ２０１）、出力データ量測定回路３２４は、先頭パケットのパケット長を出力データ量測定カウンタ３２５に加算する（ステップＳ２０２）。
【００３９】
そして、加算後の出力データ量測定カウンタ３２５の値を、上限値設定レジスタ３２１に記憶されている上限値と比較し（ステップＳ２０３）、加算後の値が上限値以上であれば（ステップＳ２０４肯定）、出力データ量測定回路３２４は、出力データ量測定カウンタ３２５の値をリセットするとともに（ステップＳ２０５）、入力キュー選択回路３３０に対して、入力キューの優先順位の変更を指示する（ステップＳ２０６）。
【００４０】
一方、加算後の値が上限値未満の場合は（ステップＳ２０４否定）、対応する入力キューに出力可能なパケットが残っていない旨の信号が受信されれば（ステップＳ２０７肯定）、出力データ量測定回路３２４は、出力データ量測定カウンタ３２５の値をリセットするとともに（ステップＳ２０５）、入力キュー選択回路３３０に対して、入力キューの優先順位の変更を指示する（ステップＳ２０６）。
【００４１】
入力キュー選択回路３３０は、対応する入力キュー３１０の先頭パケットが選択される旨の信号を受信するたびに、上記のステップＳ２０１〜Ｓ２０７の手順を実行する。
【００４２】
次に、上記の動作を実現させるための出力データ量測定回路３２４と入力キュー選択回路３３０の構成について説明する。図７は、出力データ量測定回路３２４の構成の一例を示す図である。なお、この例では、説明を簡単にするため、パケット長が２ｂｙｔｅもしくは８ｂｙｔｅであることを想定しているが、パケット長はこの２種類に限定されるものではない。
【００４３】
図７に示す構成においては、先頭パケットが選択される旨を通知するパケット出力信号が受信されたときに、パケット長デコード回路３２３から先頭パケットのサイズが２ｂｙｔｅである旨を示す信号が送信されていると、ＡＮＤ回路３２４ａの出力がＯＮになる。そして、ＡＮＤ回路３２４ａの出力がＯＮになり、かつ、上限値設定レジスタ３２１に設定されている上限値と出力データ量測定カウンタ３２５の値を比較する比較器３２４ｇから上限値がカウンタ値以上である旨の信号が出力されていないと、ＡＮＤ回路３２４ｂの出力もＯＮになる。そして、ＡＮＤ回路３２４ｂの出力がＯＮになると、加算指示回路３２４ｃから増分２の加算指示が出力データ量測定カウンタ３２５へ送信されることになる。
【００４４】
また、先頭パケットが選択される旨を通知するパケット出力信号が受信されたときに、パケット長デコード回路３２３から先頭パケットのサイズが８ｂｙｔｅである旨を示す信号が送信されていると、ＡＮＤ回路３２４ｄの出力がＯＮになる。そして、ＡＮＤ回路３２４ｄの出力がＯＮになり、かつ、比較器３２４ｇから上限値がカウンタ値以上である旨の信号が出力されていないと、ＡＮＤ回路３２４ｅの出力もＯＮになる。そして、ＡＮＤ回路３２４ｅの出力がＯＮになると、加算指示回路３２４ｆから増分８の加算指示が出力データ量測定カウンタ３２５へ送信されることになる。
【００４５】
また、比較器３２４ｇから上限値がカウンタ値以上である旨の信号が出力された場合には、ＯＲ回路３２４ｉの出力がＯＮになる。また、対応する入力キュー３１０に出力可能なパケットがなくなった旨を示すブランク信号が受信された場合にも、ＯＲ回路３２４ｉの出力がＯＮになる。そして、ＯＲ回路３２４ｉの出力がＯＮになると、リセット指示回路３２４ｈからリセット指示が出力データ量測定カウンタ３２５へ送信されるとともに、優先順位変更指示が入力キュー選択回路３３０へ送信される。
【００４６】
図８は、入力キュー選択回路３３０の構成の一例を示す図である。なお、この例では、説明を簡単にするため、入力キュー３１０が３個あり、それぞれ＃０〜＃２として識別されることを想定しているが、入力キュー３１０の数は３個に限定されるものではない。
【００４７】
図８に示す構成においては、＃０の入力キュー３１０に対応する調停制御回路３２０から優先順位変更指示が受信されると、ポインタ更新回路３３１ａが最優先ポインタ３３２の値を＃１に更新する。また、＃１の入力キュー３１０に対応する調停制御回路３２０から優先順位変更指示が受信されると、ポインタ更新回路３３１ｂが最優先ポインタ３３２の値を＃２に更新する。また、＃２の入力キュー３１０に対応する調停制御回路３２０から優先順位変更指示が受信されると、ポインタ更新回路３３１ｃが最優先ポインタ３３２の値を＃０に更新する。
【００４８】
また、１ないし複数の入力キュー３１０から出力可能なパケットが存在することを示すリクエストが受信されると、ラウンドロビン回路３３３は、最優先ポインタ３３２に設定されている番号に対応する入力キュー３１０を最優先とする優先順位に基づいて、リクエストを送信した入力キュー３１０のいずれを選択するかを決定し、該当入力キュー３１０のパケット出力信号を送信する。入力キュー３１０のいずれかのパケット出力信号がＯＮになると、ＯＲ回路３３４の出力がＯＮになる。そして、ＯＲ回路３３４の出力がＯＮになると、ラウンドロビン回路３３３によって決定された入力キュー３１０の先頭パケット長がセレクタ３３５において選択され、パケット長カウンタ３３６に格納される。
【００４９】
そして、パケット長カウンタ３３６に格納されたパケット長は、パケット長に基づいて入力キュー３１０の選択期間を生成する選択期間生成回路３３７ａ〜３３７ｃに出力される。そして、選択期間生成回路３３７ａ〜３３７ｃのうち、ラウンドロビン回路３３３によって決定された入力キュー３１０に対応するものが、対応する入力キュー３１０を生成された期間だけ選択させるとともに、先頭パケットが選択される旨を示すパケット出力信号を対応する調停制御回路３２０へ送信する。
【符号の説明】
【００５０】
１０    システムボード（ＳＢ）
１１    ＣＰＵ
１２    ＣＰＵ制御部
１３    メモリ制御部
１４    ＲＡＭ
１５    ＦＷＨ
２０    ＩＯボード（ＩＯＢ）
２１    ＩＯ制御部
２２    ＰＣＩ制御部
２３    ＰＣＩインターフェース
２４    ＩＣＨ
３１    データクロスバ
３２    アドレスクロスバ
３００    データ転送装置
３１０    入力キュー
３２０    調停制御回路
３２１    上限値設定レジスタ
３２２    ＪＴＡＧ回路またはＳＭＢｕｓ回路
３２３    パケット長デコード回路
３２４    出力データ量測定回路
３２４ａ、３２４ｂ、３２４ｄ、３２４ｅ  ＡＮＤ回路
３２４ｃ、３２４ｆ  加算指示回路
３２４ｇ  比較器
３２４ｈ  リセット指示回路
３２４ｉ  ＯＲ回路
３２５    出力データ量測定カウンタ
３３０  入力キュー選択回路
３３１ａ〜３３１ｃ  ポインタ更新回路
３３２    最優先ポインタ
３３３    ラウンドロビン回路
３３４    ＯＲ回路
３３５    セレクタ
３３６    パケット長カウンタ
３３７ａ〜３３７ｃ  選択期間生成回路
３４０    セレクタ
３５０    出力キュー
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の入力キューと、
前記入力キューごとに設けられた調停制御部と、
前記入力キューごとに設定された優先順位に基づいて前記入力キューのいずれかを選択し、選択した入力キューからデータを出力させる入力キュー選択部とを備え、
前記調停制御部は、
所定の上限値が記憶されるレジスタと、
対応する入力キューから出力されたデータ量を計数するカウンタと、
前記カウンタの値が前記レジスタに記憶されている上限値以上となった場合に、前記入力キュー選択部に前記優先順位を更新させるとともに、前記カウンタの値をリセットさせる制御回路と
を有することを特徴とするデータ転送装置。
【請求項２】
前記制御回路は、さらに、対応する入力キューから出力されるデータがなくなった場合に、前記入力キュー選択部に前記優先順位を更新させるとともに、前記カウンタの値をリセットさせることを特徴とする請求項１に記載のデータ転送装置。
【請求項３】
前記入力キュー選択部は、前記入力キューのいずれかを選択した場合に、選択した入力キューに対応する前記調停制御部へその旨を通知し、
前記調停制御部は、前記入力キュー選択部からの通知を契機として、前記カウンタに計数を開始させることを特徴とする請求項１に記載のデータ転送装置。
【請求項４】
前記調停制御部は、対応する入力キューの先頭に格納されているデータのデータ長を取得するデータ長取得部をさらに備え、
前記カウンタは、前記データ長取得部によって取得されたデータ長を加算していくことにより、対応する入力キューから出力されたデータ量を計数することを特徴とする請求項１に記載のデータ転送装置。
【請求項５】
複数の入力キューと、
前記入力キューごとに設けられた調停制御部と、
前記入力キューごとに設定された優先順位に基づいて前記入力キューのいずれかを選択し、選択した入力キューからデータを出力させる入力キュー選択部とを備え、
前記調停制御部は、
所定の上限値が記憶されるレジスタと、
対応する入力キューから出力されたデータ量を計数するカウンタと、
前記カウンタの値が前記レジスタに記憶されている上限値以上となった場合に、前記入力キュー選択部に前記優先順位を更新させるとともに、前記カウンタの値をリセットさせる制御回路と
を有することを特徴とする情報処理装置。
【請求項６】
前記制御回路は、さらに、対応する入力キューから出力されるデータがなくなった場合に、前記入力キュー選択部に前記優先順位を更新させるとともに、前記カウンタの値をリセットさせることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記入力キュー選択部は、前記入力キューのいずれかを選択した場合に、選択した入力キューに対応する前記調停制御部へその旨を通知し、
前記調停制御部は、前記入力キュー選択部からの通知を契機として、前記カウンタに計数を開始させることを特徴とする請求項５に記載の情報処理装置。
【請求項８】
前記調停制御部は、対応する入力キューの先頭に格納されているデータのデータ長を取得するデータ長取得部をさらに備え、
前記カウンタは、前記データ長取得部によって取得されたデータ長を加算していくことにより、対応する入力キューから出力されたデータ量を計数することを特徴とする請求項５に記載の情報処理装置。
【請求項９】
複数の入力キューと、
前記入力キューごとに設けられた調停制御部と、
前記入力キューごとに設定された優先順位に基づいて前記入力キューのいずれかを選択し、選択した入力キューからデータを出力させる入力キュー選択部とを備える情報処理装置における制御方法であって、
前記調停制御部が、対応する入力キューから出力されたデータ量をカウンタに記憶させるステップと、
前記カウンタの値が前記レジスタに記憶されている上限値以上となった場合に、前記調停制御部が、前記入力キュー選択部に前記優先順位を更新させるとともに、前記カウンタの値をリセットさせるステップと
を含むことを特徴とする制御方法。
【請求項１０】
対応する入力キューから出力されるデータがなくなった場合に、前記入力キュー選択部に前記優先順位を更新させるとともに、前記制御回路が、前記カウンタの値をリセットさせるステップをさらに含むことを特徴とする請求項９に記載の制御方法。
【国際調査報告】
2009147731.tif 000015
2009147731.tif 000016