(57)【要約】【課題】待ち行列バッファの先頭に順序保障の必要なデータが格納された場合、先頭バッファへ移すことができず待たされてしまうことになり、特定のポートのビジーが、他の全てのポートの転送性能に大きな影響を与えてしまうという問題点を解決する。【解決手段】バッファ制御装置は、外部からのデータを格納する待ち行列バッファと、  前記待ち行列バッファの先頭に順序保証の必要なデータが格納されると、前記外部からの出力先情報、および、順序保障が必要かどうかを示す順序保障情報に基づき順序保証の必要なデータの出力先情報対応の出力先回路がビジーの場合には、順序保証の必要なデータを前記待ち行列バッファの登録済み最後尾にローテートする待ち行列制御回路とを含む。【選択図】      図１
2013120484.tif 000002
【特許請求の範囲】
【請求項１】
外部からのデータを格納する待ち行列バッファと、
前記待ち行列バッファの先頭に順序保証の必要なデータが格納されると、前記外部からの出力先情報、および、順序保障が必要かどうかを示す順序保障情報に基づき順序保証の必要なデータの出力先情報対応の出力先回路がビジーの場合には、順序保証の必要なデータを前記待ち行列バッファの登録済み最後尾にローテートする待ち行列制御回路と、
を含むことを特徴とするバッファ制御装置。
【請求項２】
順序保障の必要なデータに対し、対応する前記出力先回路ごとに転送順を示す転送番号を付与し前記待ち行列バッファに格納し、前記待ち行列バッファの先頭に格納された順序保障の必要なデータの転送番号が転送すべき順番に一致しないと、前記待ち行列バッファの登録済み最後尾にローテートする前記待ち行列制御回路を、
含むことを特徴とする請求項１のバッファ制御装置。
【請求項３】
それぞれ、データを受け取れないビジーであることを示すビジー信号を前記待ち行列制御回路に出力する前記出力先回路と、
ビジー信号に基づき、前記出力先回路のそれぞれが、ビジーかどうかを判断する前記待ち行列制御回路と、
を含むことを特徴とする請求項１、または、２のバッファ制御装置。
【請求項４】
順序保障の必要なデータに対し対応する前記出力先回路ごとに転送順を示す転送番号を生成し前記待ち行列バッファに出力する入力制御部と、
データと、そのデータに対応する出力先情報、順序保障情報、転送番号を各シフトバッファに格納する前記待ち行列バッファと、
先頭の前記シフトバッファからの順序保障の必要なデータに対応する転送番号と、内部に保持するそのデータの出力先対応の転送番号とを比較することにより、転送番号が転送すべき順番に一致するかどうかを判断し、一致すれば、出力先情報に対応する前記出力先回路がビジーでないと、先頭の前記シフトバッファからの順序保障の必要なデータを対応する前記出力先回路に出力し、内部に保持するそのデータの出力先対応の転送番号をカウントアップする出力制御部と、
を含むことを特徴とする請求項３のバッファ制御装置。
【請求項５】
対応する前記出力先回路がビジー、または、転送番号が転送すべき順番に一致しなければローテートを示し、ビジーでなく、かつ、一致すれば、出力の完了を示す出力制御情報を出力する前記出力制御部と、
前記出力制御部からの出力制御情報に基づいて、前記待ち行列バッファのローテート、シフトを制御するセレクタ制御部と、
を含むことを特徴とする請求項４のバッファ制御装置。
【請求項６】
前記待ち行列バッファへのデータの新規登録の制御、および、前記出力制御部の動作の起動を行う前記セレクタ制御部を、
含むことを特徴とする請求項５のバッファ制御装置。
【請求項７】
前記出力先回路対応に、ビジー開始からカウントアップを開始しビジー解除で初期値に戻るカウンタを含み、対応する前記出力先回路がビジーである場合、対応する前記タイマが事前に設定した一定値を超えてから、ローテートを実施させる前記出力制御部を、
含むことを特徴とする請求項６のバッファ制御装置。
【請求項８】
請求項１、２、３、４、５、６、または、７の前記バッファ制御装置を、
含むことを特徴とする情報処理装置。
【請求項９】
外部からのデータを待ち行列バッファに格納し、
前記待ち行列バッファの先頭に順序保証の必要なデータが格納されると、前記外部からの出力先情報、および、順序保障が必要かどうかを示す順序保障情報に基づき順序保証の必要なデータの出力先情報対応の出力先回路がビジーの場合には、順序保証の必要なデータを前記待ち行列バッファの登録済み最後尾にローテートする、
ことを特徴とするバッファ制御方法。
【請求項１０】
順序保障の必要なデータに対し、対応する前記出力先回路ごとに転送順を示す転送番号を付与し前記待ち行列バッファに格納し、前記待ち行列バッファの先頭に格納された順序保障の必要なデータの転送番号が転送すべき順番に一致しないと、前記待ち行列バッファの登録済み最後尾にローテートする、
ことを特徴とする請求項９のバッファ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファ制御装置、情報処理装置、および、バッファ制御方法に関する。
【背景技術】
【０００２】
バッファ制御に関する技術の一例が、特許文献１に記載されている。特許文献１には、待ち行列バッファの先頭に順序保証の必要がないデータが格納されたとき、そのデータの出力先のポートがビジーの場合には、そのデータを待ち行列バッファの登録済み最後尾にローテートする技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−１８３０７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１記載の技術では、待ち行列バッファの先頭に順序保証の必要なデータが格納されたとき、そのデータの出力先のポートがビジーの場合には、そのポートへの転送順番を守るためにビジーが解除されるまでデータを先頭バッファで待たせていた。
【０００５】
したがって、後続に他ポートへ転送可能なデータが存在していても先頭バッファへ移すことができず待たされてしまうことになり、特定のポートのビジーが、他の全てのポートの転送性能に大きな影響を与えてしまうという問題点があった。
【０００６】
本発明の目的は、上記問題点を解決したバッファ制御装置、情報処理装置、および、バッファ制御方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明のバッファ制御装置は、外部からのデータを格納する待ち行列バッファと、前記待ち行列バッファの先頭に順序保証の必要なデータが格納されると、前記外部からの出力先情報、および、順序保障が必要かどうかを示す順序保障情報に基づき順序保証の必要なデータの出力先情報対応の出力先回路がビジーの場合には、順序保証の必要なデータを前記待ち行列バッファの登録済み最後尾にローテートする待ち行列制御回路とを含む。
【０００８】
本発明のバッファ制御方法は、外部からのデータを待ち行列バッファに格納し、前記待ち行列バッファの先頭に順序保証の必要なデータが格納されると、前記外部からの出力先情報、および、順序保障が必要かどうかを示す順序保障情報に基づき順序保証の必要なデータの出力先情報対応の出力先回路がビジーの場合には、順序保証の必要なデータを前記待ち行列バッファの登録済み最後尾にローテートする。
【発明の効果】
【０００９】
本発明は、性能が向上するという効果を持つ。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第３の実施の形態の構成を示すブロック図である。
【図３】本発明の第４の実施の形態の待ち行列制御回路、出力先回路の構成を示すブロック図である。
【図４】本発明の第４の実施の形態の待ち行列バッファの構成を示すブロック図である。
【図５】先頭のシフトバッファに格納される内容を示す説明図である。
【図６】入力制御部の詳細構成を示す詳細ブロック図である。
【図７】出力制御部の詳細構成を示す詳細ブロック図である。
【図８】本発明の第４の実施の形態の動作を示すタイムチャートである。
【図９】本発明の第５の実施の形態のデータ制御部の構成を示すブロック図である。
【図１０】本発明の第６の実施の形態の構成を示すブロック図である。
【発明を実施するための形態】
【００１１】
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。図１は、第１の実施の形態の構成を示すブロック図である。
【００１２】
図１を参照すると、第１の実施の形態のバッファ制御装置００Ａは、待ち行列バッファ００Ｂ、および、待ち行列制御回路００Ｃを含む。待ち行列制御回路００Ｃは、外部（たとえば、入力ポート）からの付加情報、および、データを受け取る。また、待ち行列制御回路００Ｃは、データを出力ポート対応の出力先回路に出力する。
【００１３】
付加情報は、データの出力ポートを示す出力先情報、および、データの順序保障が必要であるかどうかを示す順序保障情報を含む。待ち行列制御回路００Ｃは、入力ポートからのデータを、順次、先頭に近い無登録の箇所から待ち行列バッファ００Ｂに格納させ、登録する。待ち行列制御回路００Ｃは、データを順次シフトさせ、データを待ち行列バッファ００Ｂの先頭から出力ポート対応に出力させる。
【００１４】
待ち行列制御回路００Ｃは、たとえば、順序保障情報に基づき、待ち行列バッファ００Ｂの先頭に格納されたデータが順序保証の必要なデータであるかどうかを判断する。待ち行列制御回路００Ｃは、待ち行列バッファ００Ｂの先頭に順序保証の必要なデータが格納されると、そのデータの出力ポート対応の出力先回路がビジーの場合には、そのデータを待ち行列バッファ００Ｂの登録済み最後尾にローテートする。
【００１５】
そして、待ち行列制御回路００Ｃは、ローテートの結果、新たに先頭に格納されたデータの出力の処理を行う。新たに先頭に格納されたデータの出力ポート対応の出力先回路がビジーでない場合には、待ち行列制御回路００Ｃは、新たに先頭に格納されたデータを出力ポート対応の出力先回路に出力する。
【００１６】
待ち行列制御回路００Ｃが、順序保証の不必要なデータもローテートする構成、または、順序保証の不必要なデータをローテートしない構成のどちらも可能である。
【００１７】
次に、第１の実施の形態の効果について説明する。
【００１８】
第１の実施の形態は、待ち行列バッファ００Ｂの先頭に順序保証の必要なデータが格納されると、そのデータの出力ポート対応の出力先回路がビジーの場合には、そのデータを待ち行列バッファ００Ｂの登録済み最後尾にローテートする構成である。
【００１９】
したがって、第１の実施の形態は、後続の他の出力ポート対応の出力先回路がビジーでない転送可能なデータを、優先して転送を可能にすることで、データの転送性能を向上させる効果を持つ。
【００２０】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。第２の実施の形態は、第１の実施の形態の一例である。待ち行列制御回路００Ｃは、順序保障の必要なデータに対し対応する出力ポートごとに転送順を示す転送番号を付与し、待ち行列バッファ００Ｂに格納する。
【００２１】
待ち行列制御回路００Ｃは、待ち行列バッファ００Ｂの先頭に格納されたデータの転送番号が転送すべき順番に一致しないと、そのデータを待ち行列バッファ００Ｂの登録済み最後尾にローテートする。
【００２２】
待ち行列制御回路００Ｃは、待ち行列バッファ００Ｂの先頭に格納されたデータが順序保障の必要なデータであると、次のように処理する。すなわち、待ち行列制御回路００Ｃは、データの転送番号が転送すべき順番に一致し、かつ、そのデータの出力ポート対応の出力先回路がビジーでない場合に、そのデータを出力ポート対応の出力先回路に出力する。
【００２３】
次に、第２の実施の形態の効果について説明する。
【００２４】
第２の実施の形態は、第１の実施の形態の一例なので、第１の実施の形態と同一の効果を持つ。
【００２５】
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。図２は、第３の実施の形態の構成を示すブロック図である。第３の実施の形態は、第１、または第２の実施の形態の一例である。
【００２６】
図２を参照すると、第３の実施の形態のバッファ制御装置００Ａは、データの出力ポート対応の出力先回路０Ｄ０、出力先回路０Ｄ１、・・・、出力先回路０Ｄｍ（ｍ：整数）を含む。出力先回路０Ｄ０〜０Ｄｍは、それぞれ、データを受け取れないビジーであることを示すビジー信号３００を待ち行列制御回路００Ｃに出力する。
【００２７】
出力先回路０Ｄ０〜０Ｄｍは、たとえば、それぞれ、出力ポート対応の、レジスタ、バッファ等で構成することが可能である。また、出力先回路０Ｄ０〜０Ｄｍは、それぞれ、対応する出力ポートに接続される構成が可能である。
【００２８】
待ち行列制御回路００Ｃは、ビジー信号３００に基づき、出力先回路０Ｄ０〜０Ｄｍのそれぞれが、ビジーかどうかを判断する。待ち行列制御回路００Ｃは、先頭に格納されたデータの出力ポートのビジー信号３００により、データの出力先がビジーであるかどうかを判断する。
【００２９】
出力先回路０Ｄ０〜０Ｄｍは、それぞれのビジー信号３００がビジーを示さないと、待ち行列制御回路００Ｃから出力されたデータを受け取る。一方、出力先回路０Ｄ０〜０Ｄｍからのそれぞれのビジー信号３００がビジーを示す場合、待ち行列制御回路００Ｃは、出力先情報に基づき、データを待ち行列バッファ００Ｂの登録済み最後尾にローテートする。
【００３０】
次に、第３の実施の形態の効果について説明する。
【００３１】
第３の実施の形態は、第１、または、第２の実施の形態の一例なので、第１の実施の形態と同一の効果を持つ。また、第３の実施の形態は、各出力ポート対応の出力先回路０Ｄ０〜０Ｄｍを持つので、出力ポートごとにデータを蓄積できるので、データの転送性能が向上するという効果を持つ。
【００３２】
次に、本発明の第４の実施の形態について図面を参照して詳細に説明する。第４の実施の形態は、第３の実施の形態の一例である。第４の実施の形態の全体構成は、図２に示される構成である。
【００３３】
図３は、待ち行列制御回路００Ｃ、および、出力先回路０Ｄ０〜０Ｄｍの構成を示すブロック図である。図４は、待ち行列バッファ００Ｂの構成を示すブロック図である。図３、図４において、丸内の同一の番号の箇所で結合される。
【００３４】
図３を参照すると、待ち行列制御回路００Ｃは、入力レジスタ０１０、入力制御部０８０、セレクタ制御部０７０、および、出力制御部０６０を含む。また、出力先回路０Ｄ０〜０Ｄｍは、それぞれ、出力ポート０バッファ０９０、出力ポート１バッファ０９１、・・・、出力ポートｍバッファ０９ｍで構成される。
【００３５】
入力レジスタ０１０は、外部（たとえば、入力ポート）からの出力先情報、順序保障が必要かどうかを示す順序保障情報、および、データを格納する。入力制御部０８０は、出力先情報、および、順序保障情報を入力し、順序保障の必要なデータに対し、出力先（出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍ）ごとに転送番号を生成する。そして、入力制御部０８０は、待ち行列バッファ００Ｂのセレクタ０２０〜０２ｎ（ｎ：整数）を経由して、シフトバッファ０３０〜０３ｎに格納されるように、生成した転送番号を出力する。
【００３６】
出力制御部０６０は、セレクタ制御部０７０からの出力要求信号２０２、先頭のシフトバッファ０３０からの出力、および、出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍからのビジー信号３００に基づいて制御を行う。そして、出力制御部０６０は、出力先情報に対応する出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍに、データを出力し、セレクタ制御部０７０に出力制御情報２００を出力する。
【００３７】
セレクタ制御部０７０は、シフトバッファ０３０〜０３ｎそれぞれに対応する登録情報（登録・非登録を示す）を内部に保持する。そして、セレクタ制御部０７０は、登録情報、および、出力制御部０６０からの出力制御情報２００に基づいて、待ち行列バッファ００Ｂのセレクタ０２０〜０２ｎの選択を制御し、出力制御部０６０に、出力要求信号２０２を出力する。
【００３８】
図４を参照すると、待ち行列バッファ００Ｂは、セレクタ０２０、セレクタ０２１、セレクタ０２２、・・・、セレクタ０２ｎ−２、セレクタ０２ｎ−１、セレクタ０２ｎを含む。
【００３９】
さらに、待ち行列バッファ００Ｂは、シフトバッファ０３０（先頭）、シフトバッファ０３１、シフトバッファ０３２、・・・、シフトバッファ０３ｎ−２、シフトバッファ０３ｎ−１、シフトバッファ０３ｎを含む。シフトバッファ０３０〜０３ｎは、それぞれ、セレクタ０２０〜０２ｎからの出力を受け取り格納する。シフトバッファ０３０〜０３ｎのそれぞれは、先頭からアドレス等が付与され、エントリと呼ばれる。
【００４０】
セレクタ０２０〜０２ｎは、セレクタ制御部０７０の制御により、それぞれ、シフトバッファ０３０〜シフトバッファ０３ｎへの入力を選択する。また、セレクタ０２０〜０２ｎは、入力レジスタ０１０、入力制御部０８０、先頭のシフトバッファ０３０、および、対応するシフトバッファ０３０〜０３ｎ等からの出力を選択し、対応するシフトバッファ０３０〜０３ｎに出力する。
【００４１】
セレクタ０２０〜０２ｎ−１の選択の動作は、待ち行列制御回路００Ｃから出力の登録選択（新規内容の登録）、シフト選択（自エントリより１つ老番のエントリの出力登録）、ローテート選択（シフトバッファ０３０の出力登録、ホールド選択（自エントリの内容の保持）の４種類に分類される。
【００４２】
ただし、シフトバッファ０３０に対するローテート選択とホールド選択とは、シフトバッファ０３０自身の登録なので同一となり、また、シフトバッファ０３ｎに対しては、以降に老番エントリが存在しないのでシフト選択はない。
【００４３】
図５は、シフトバッファ０３０に格納される内容を示す説明図である。図５を参照すると、シフトバッファ０３０は、先頭データ０Ｆ０、先頭データ０Ｆ０に対応する先頭出力先情報０４０、先頭転送番号０５０、および、先頭順序保障情報０Ｊ０を格納し、出力制御部０６０に出力する。
【００４４】
シフトバッファ０３１〜０３ｎも、それぞれ、同様に、データと、データに対応する出力先情報、転送番号、および、順序保障情報を格納する。
【００４５】
次に、入力制御部０８０について図面を参照して詳細に説明する。図６は、入力制御部０８０の詳細構成を示す詳細ブロック図である。
【００４６】
図６を参照すると、入力制御部０８０は、順序保障の必要なデータの出力先情報に対応する転送番号を生成するカウンタ１１０、カウンタ１１１、・・・、カウンタ１１ｍを含む。ここでは、出力先情報は、出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍを指し示す内容である。
【００４７】
さらに、入力制御部０８０は、カウンタ制御部１２０、および、セレクタ１５０を含む。
【００４８】
セレクタ１５０は、カウンタ制御部１２０からの選択信号１４０に基づいてカウンタ１１０〜１１ｍの出力（内容は転送番号）のうち１つを選択し、待ち行列バッファ００Ｂへ出力する。
【００４９】
カウンタ制御部１２０は、入力レジスタ０１０から出力先情報、順序保障情報を入力し、出力先情報に基づいて選択信号１４０をセレクタ１５０に出力する。さらに、カウンタ制御部１２０は、データが待ち行列バッファ００Ｂに新規登録されるごとに、出力先情報に対応するカウンタ１１０〜１１ｍをインクリメントさせるインクリメント信号１３０を出力する。
【００５０】
次に、出力制御部０６０について図面を参照して詳細に説明する。図７は、出力制御部０６０の詳細構成を示す詳細ブロック図である。
【００５１】
図７を参照すると、出力制御部０６０は、順序保障の必要なデータの出力先情報に対応する転送番号を生成するカウンタ２１０、カウンタ２１１、・・・、カウンタ２１ｍを含む。ここでは、出力先情報は、出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍを示す内容である。
【００５２】
さらに、出力制御部０６０は、カウンタ制御部２２０、セレクタ２５０、比較回路２６０、および、データ制御部２７０を含む。
【００５３】
セレクタ２５０は、カウンタ制御部２２０からの選択信号２４０に基づいてカウンタ２１０〜２１ｍの出力（内容は転送番号）のうち１つを選択し、比較転送番号２８０として比較回路２６０へ出力する。
【００５４】
カウンタ制御部２２０は、シフトバッファ０３０からの先頭出力先情報０４０に基づいて選択信号２４０を生成しセレクタ２５０に出力する。
【００５５】
カウンタ制御部２２０は、先頭データ０Ｆ０がデータ制御部２７０から出力されるごとに、先頭出力先情報０４０に対応するカウンタ２１０〜２１ｍをインクリメントさせるインクリメント信号２３０を出力する。ここで、カウンタ制御部２２０は、出力制御情報２０１を受け取り、先頭順序保障情報０Ｊ０が順序保障の必要なデータであることを示すと、インクリメント信号２３０を出力する。
【００５６】
データ制御部２７０は、セレクタ制御部０７０から、出力要求信号２０２を、シフトバッファ０３０から、先頭データ０Ｆ０、先頭順序保障情報０Ｊ０、および、先頭出力先情報０４０を入力する。さらに、データ制御部２７０は、出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍから、ビジー信号３００を入力し、比較回路２６０から、比較結果２９０を入力する。
【００５７】
データ制御部２７０は、出力要求信号２０２により動作を起動する。データ制御部２７０は、比較結果２９０が一致を示すと、先頭転送番号０５０に対応するビジー信号３００がビジーでなければ、対応する出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍに先頭データ０Ｆ０を出力する。データ制御部２７０は、先頭データ０Ｆ０を出力するごとに、出力制御情報２０１を出力し、カウンタ制御部２２０に出力する。
【００５８】
また、データ制御部２７０は、比較結果２９０が不一致を示す場合、または、先頭転送番号０５０に対応するビジー信号３００がビジーである場合、シフトバッファ０３０の内容を、待ち行列バッファ００Ｂの登録済みの最後尾へローテートする制御を行う。
【００５９】
データ制御部２７０は、セレクタ制御部０７０に、シフト選択、ローテート選択、ホールド選択等を示す出力制御情報２００を出力する。
【００６０】
以上のローテートの動作は、順序保障の必要なデータに対して、実施される。順序保障の不必要なデータに対しては、以上のローテートの動作が実施される構成と、実施されない構成のどちらも可能である。
【００６１】
次に、第４の実施の形態の動作について詳細に説明する。順序保障の不必要なデータに対しても、ローテートの動作が実施される構成の動作について説明する。以下の説明において、出力先情報は、出力ポート０に対応する出力ポート０バッファ０９０、・・・、出力ポートｍに対応する出力ポートｍバッファ０９ｍを指定する。
【００６２】
ｎ＋１個のシフトバッファ０３０〜０３ｎは、それぞれのエントリに対応するセレクタ０２０〜０２ｎによって選択されたデータを保持する。
【００６３】
セレクタ０２０〜０２ｎの選択制御の指示は、セレクタ制御部０７０で行われるが、なにも登録されないエントリに対する選択制御の指示は、常にホールド選択（動作せず）となるように制御される。
【００６４】
入力レジスタ０１０で受け取られた出力先情報、順序保障情報は、入力制御部０８０に出力される。入力制御部０８０は、順序保障情報に基づき、順序保障の必要なデータの場合は、出力先情報に対応するカウンタ１１０〜１１ｍの値を入力データの転送番号として出力する。そして、同時に、入力制御部０８０は、その対応するカウンタ１１０〜１１ｍの値に＋１を行う。一方、順序保障の必要でないデータの場合、入力制御部０８０は、転送番号未使用を示す、たとえばオール“０”を出力し、カウンタ１１０〜１１ｍの値に＋１を行わない。
【００６５】
入力制御部０８０から出力される転送番号は、出力先情報、順序保障情報と共に、データに付随し、待ち行列バッファ００Ｂへと書き込まれ、セレクタ制御部０７０内の対応する登録情報が登録の状態にされる。この際に、データ、転送番号、出力先情報、および、順序保障情報は、データ待ち行列バッファ００Ｂを構成するシフトバッファ０３０〜０３ｎのいずれかのエントリに常に若番優先で登録される。
【００６６】
たとえば、シフトバッファ０３０が非登録（空き）エントリの場合は、シフトバッファ０３０に対応するセレクタ０２０が、登録選択を行う。シフトバッファ０３０が登録済みで、シフトバッファ０３１が非登録（空き）エントリの場合は、セレクタ０２０は、ホールド選択で登録済みデータの保持を選択し、セレクタ０２１が、登録選択で書き込みデータの登録を行う。
【００６７】
すなわち、シフトバッファ０３０〜０３ｎ−１までが登録済みで、シフトバッファ０３ｎへ登録する場合は、セレクタ０２０〜０２ｎ−１までがホールド選択を行い、セレクタ０２ｎが登録選択を行うことになる。
【００６８】
セレクタ制御部０７０が、セレクタ０２０〜０２ｎの選択制御の指示を行う。セレクタ制御部０７０は、シフトバッファ０３０〜０３ｎの登録情報に基づいて、データを登録すべきエントリを判定して登録選択を指示する。そのエントリよりも若番のエントリは、既に登録済みのデータが存在する場合、セレクタ制御部０７０は、そのエントリよりも若番のエントリに対して、全てホールド選択を指示する。
【００６９】
このような制御により、待ち行列バッファ００Ｂには、シフトバッファ０３０を先頭のバッファとして隙間ないデータ登録が実現される。
【００７０】
また、シフトバッファ０３０〜０３ｎが、全て登録済みになった場合は、データ消滅を抑止するために、入力レジスタ０１０への登録を待ち合わせる。
【００７１】
次に、実際の動作について、シフトバッファ０３０〜０３ｎ−２までが登録済みで、シフトバッファ０３ｎ−１〜０３ｎが未登録の場合を例に説明する。シフトバッファ０３０〜０３ｎにデータが１つ以上存在すれば、シフトバッファ０３０を先頭に隙間のないデータ登録が行われているため、シフトバッファ０３０には、必ず登録データが存在する。
【００７２】
セレクタ制御部０７０から出力要求信号２０２を受け取った出力制御部０６０は、先頭データ０Ｆ０と共に、シフトバッファ０３０からの先頭出力先情報０４０、先頭順序保障情報０Ｊ０、および、先頭転送番号０５０を入力し、解読する。
【００７３】
ここで、順序保障の必要なデータと、順序保障の必要でないデータとでは、判定方法が異なるので、それぞれの動作を順番に説明する。
【００７４】
まず、順序保障の必要ないデータの場合について説明する。
【００７５】
出力制御部０６０のデータ制御部２７０は、第一に、先頭出力先情報０４０に基づいて、先頭データ０Ｆ０の出力先が、出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍのうちどれであるかを判定する。出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍからは、その出力ポートそれぞれに対応したビジー信号３００が出力され、データ制御部２７０で、制御に使用される。
【００７６】
第二に、データ制御部２７０は、出力先と判定した出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍがビジーか否かを、ビジー信号３００に基づいて判定する。ビジーでない場合、データ制御部２７０は、データ出力可能と判断して、シフトバッファ０３０の先頭データ０Ｆ０を出力先と判定した出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍへ転送する。
【００７７】
この時、データ制御部２７０は、転送の完了したことを出力制御情報２００によりセレクタ制御部０７０へ通知する。セレクタ制御部０７０は、出力制御情報２００によって、既に登録済みのセレクタ０２０〜０２ｎ−３へは、シフト選択を指示し、対応する登録情報を非登録状態にする。
【００７８】
これにより、シフトバッファ０３０にこれまで存在した先頭データ０Ｆ０は、出力先と判定された出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍへ転送され、シフトバッファ０３０に存在しなくなる。シフトバッファ０３０〜０３ｎ−３へは、それぞれ１エントリずつ老番のシフトバッファ０３１〜０３ｎ−２に存在したデータが、シフト登録され、シフトバッファ０３ｎ−２に対応する登録情報は、非登録状態にされる。
【００７９】
一方、前述の第二の判定で、出力先と判定した出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍがビジーの場合は、データ制御部２７０は、ローテートが可能であることを出力制御情報２００によりセレクタ制御部０７０へ通知する。セレクタ制御部０７０は、既に登録済みのシフトバッファ０３０〜０３ｎ−２のそれぞれのエントリに対応してセレクタ０２０〜０２ｎ−３にはシフト選択を指示し、セレクタ０２ｎ−２にはローテート選択を指示する。
【００８０】
これにより、シフトバッファ０３０にこれまで存在した内容（先頭データ０Ｆ０、先頭順序保障情報０Ｊ０、先頭出力先情報０４０、先頭転送番号０５０）は、登録済みの最後尾のシフトバッファ０３ｎ−２にローテートされる。また、シフトバッファ０３０〜０３ｎ−３へは、それぞれ１エントリずつ老番のシフトバッファ０３１〜０３ｎ−２に存在した内容がシフト登録される。
【００８１】
そして、シフトバッファ０３０には、シフトバッファ０３１からの内容がシフトされ、新たな先頭データ０Ｆ０、先頭順序保障情報０Ｊ０、先頭出力先情報０４０、先頭転送番号０５０となる。
【００８２】
その後、シフトバッファ０３０の新たな内容に対する出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍへの転送の動作が実施される。そして、シフトバッファ０３ｎ−２へローテートされた内容は、ｎ−２回のシフト処理の後、再び、シフトバッファ０３０へシフトされてくる。
【００８３】
次に、順序保障の必要なデータの場合について説明する。
【００８４】
データ制御部２７０は、第一に、データの出力先が、出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍのうちどれであるかを判定する。
【００８５】
データ制御部２７０は、第二に、出力先と判定した出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍがビジーか否かを判定する。ビジーでない場合は、第三に、比較回路２６０において比較された比較結果２９０が使用される。
【００８６】
カウンタ制御部２２０は、先頭出力先情報０４０に基づいて選択信号２４０を作成する。セレクタ２５０は、選択信号２４０に基づいて、カウンタ２１０〜２１ｍの値の１つを選択し出力する。比較回路２６０は、先頭出力先情報０４０と、セレクタ２５０の出力とを比較し、比較結果２９０として出力する。
【００８７】
比較結果２９０が一致を示す場合には、データ制御部２７０が、データ出力可能と判断して、シフトバッファ０３０の先頭データ０Ｆ０を、出力先と判定した出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍへ転送する。
【００８８】
この時、データ制御部２７０は、転送が完了したことを出力制御情報２００により、セレクタ制御部０７０へ通知する。同時に、データ制御部２７０は、出力制御情報２０１により、カウンタ２１０〜２１ｍの１つを更新させる指示をカウンタ制御部２２０に出力する。
【００８９】
カウンタ制御部２２０は、出力制御情報２０１に基づき、先頭出力先情報０４０で示される出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍに対応するカウンタ２１０〜２１ｍの値に＋１を実施させるインクリメント信号２３０を出力する。インクリメント信号２３０により、対応するカウンタ２１０〜２１ｍは、値を＋１する。
【００９０】
セレクタ制御部０７０は、出力制御情報２００に基づいて、既に登録済みのセレクタ０２０〜０２ｎ−３へはシフト選択を指示し、セレクタ０２ｎ−２へはクリア選択を指示する。
【００９１】
これにより、シフトバッファ０３０にこれまで存在した先頭データ０Ｆ０は、出力先と判定された出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍへ転送され、シフトバッファ０３０に存在しなくなる。シフトバッファ０３０〜０３ｎ−３へは、それぞれ１エントリずつ老番のシフトバッファ０３１〜０３ｎ−２に存在したデータが、シフト登録され、シフトバッファ０３ｎ−２に対応する登録情報は、非登録状態にされる。
【００９２】
一方、比較結果２９０が不一致を示す場合には、データ制御部２７０は、ローテートが可能であることを出力制御情報２００により、セレクタ制御部０７０へ通知する。データ制御部２７０は、出力先と判定した出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍからのビジー信号３００の状態にかかわりなく、通知する。
【００９３】
セレクタ制御部０７０は、既に登録済みのシフトバッファ０３０〜０３ｎ−２のそれぞれのエントリに対応してセレクタ０２０〜０２ｎ−３にはシフト選択を指示し、セレクタ０２ｎ−２にはローテート選択を指示する。
【００９４】
これにより、シフトバッファ０３０にこれまで存在した内容（先頭データ０Ｆ０、先頭順序保障情報０Ｊ０、先頭出力先情報０４０、先頭転送番号０５０、先頭登録番号０Ｔ０）は、登録済みの最後尾のシフトバッファ０３ｎ−２にローテートされる。また、シフトバッファ０３０〜０３ｎ−３へは、それぞれ１エントリずつ老番のシフトバッファ０３１〜０３ｎ−２に存在した内容がシフト登録される。
【００９５】
その後、シフトバッファ０３０の新たな内容に対する出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍへの転送の動作が実施される。そして、シフトバッファ０３ｎ−２へローテートされた内容は、ｎ−２回のシフト処理の後、再び、シフトバッファ０３０へシフトされてくる。
【００９６】
第二の判定で、出力先と判定された出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍからのビジー信号３００がビジーを示す場合、比較結果２９０にかかわらず、ローテートの動作が実施される。
【００９７】
なお、セレクタ制御部０７０が、入力ポートからの起動信号を受け取り、入力レジスタ０１０の制御、待ち行列バッファ００Ｂへの新規登録を行う構成が可能である。
【００９８】
次に、順序保障の必要なデータのローテートの動作について、図面を参照してさらに詳細に説明する。図８は、第４の実施の形態の動作を示すタイムチャートである。図８において、Ｐ＝０、Ｐ＝１は、それぞれ、出力先情報がシフトバッファ０３０、シフトバッファ０３１を指し示していることを表す。Ｎ＝０、Ｎ＝１、Ｎ＝２は、それぞれ、転送番号が、“０”、“１”、“２”であることを表す。
【００９９】
図８を参照すると、シフトバッファ０３ｎ−１までデータが隙間なく保持されている（サイクルＴ１）。シフトバッファ０３０には、先頭データ０Ｆ０、順序保障の必要なことを示す先頭順序保障情報０Ｊ０、出力ポート０バッファ０９０を示す先頭出力先情報０４０、転送番号＝１を示す先頭転送番号０５０が格納されている（サイクルＴ１）。
【０１００】
比較結果２９０は、一致を示すが、出力ポート０バッファ０９０がビジー状態なので、出力ポート０バッファ０９０には、先頭データ０Ｆ０が転送されない（サイクルＴ１）。
【０１０１】
次に、シフトバッファ０３０内容は、登録済みの最後尾のシフトバッファ０３ｎ−１にローテートシフトされ、同時に、シフトバッファ０３１〜０３ｎ−１に保持されていた内容は、若番方向に１つシフトされる（サイクルＴ２の開始時点）。
【０１０２】
シフトバッファ０３０には、順序保障の必要ない出力ポート１バッファ０９１への先頭データ０Ｆ０が格納されている（サイクルＴ２）。出力ポート１バッファ０９１が、ビジー状態でないので、先頭データ０Ｆ０は、出力ポート１バッファ０９１へ転送され、出力ポート１バッファ０９１で受け取られる（サイクルＴ３の開始時点）。
【０１０３】
また、シフトバッファ０３１〜０３ｎ−１に保持されていた内容は、若番方向に１つシフトされる（サイクルＴ３の開始時点）。
【０１０４】
シフトバッファ０３０には、順序保障の必要ない出力ポート０バッファ０９０への先頭データ０Ｆ０が格納されている（サイクルＴ３）。出力ポート０バッファ０９０が、ビジー状態でないので、先頭データ０Ｆ０は、出力ポート０バッファ０９０へ転送され、出力ポート０バッファ０９０で受け取られる（サイクルＴ４の開始時点）。
【０１０５】
また、シフトバッファ０３１〜０３ｎ−２に保持されていた内容は、若番方向に１つシフトされる（サイクルＴ４の開始時点）。
【０１０６】
サイクルＴ２の開始時点でシフトバッファ０３ｎ−１にローテートシフトされた内容は、順次シフトされ、また、シフトバッファ０３０に格納される。
【０１０７】
次に、第４の実施の形態の効果について説明する。
【０１０８】
第４の実施の形態は、第３の実施の形態の一例なので、第３の実施の形態と同一の効果を持つ。また、第４の実施の形態は、入力制御部０８０、および、出力制御部０６０に出力先ごとに転送番号を保持し、順序保障の必要なデータの転送の順番を管理するので、制御が簡単であるという効果を持つ。
【０１０９】
次に、本発明の第５の実施の形態について図面を参照して詳細に説明する。第５の実施の形態は、第４の実施の形態の一例である。第５の実施の形態の全体構成は、図２に示される構成である。図９は、第５の実施の形態のデータ制御部２７０の構成を示すブロック図である。
【０１１０】
図９を参照すると、第５の実施の形態のバッファ制御装置００Ａの出力制御部０６０のデータ制御部２７０は、出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍ対応にタイマ０Ｅ０、タイマ０Ｅ１、・・・、タイマ０Ｅｍを含む。タイマ０Ｅ０〜０Ｅｍは、それぞれ、出力ポート０バッファ０９０〜出力ポートｍバッファ０９ｍからのビジー信号３００に基づいて、ビジー開始からカウントアップを開始し、ビジー解除で初期値に戻る。データ制御部２７０は、ビジー信号３００がビジーを示す場合においても、すぐにはローテートを実施せず、対応するタイマ０Ｅ０〜０Ｅｍが事前に設定した一定値を超えてから、ローテートを実施する。また、一定値を可変とすることが可能である。
【０１１１】
次に、第５の実施の形態の効果について説明する。
【０１１２】
第５の実施の形態は、第４の実施の形態の一例なので、第４の実施の形態と同一の効果を持つ。
【０１１３】
また、第５の実施の形態は、ビジーである時間が一定時間より短い場合に、ローテートを実施しない構成である。したがって、待ち行列バッファ００Ｂに同一の出力先への順序保障の必要なデータが多量に格納されている場合、最後尾にローテートされたデータが先頭に戻るまでの時間が、ビジー解除までの時間より長くなる事態が防止される可能性がある。
【０１１４】
よって、第５の実施の形態は、待ち行列バッファ００Ｂに格納されているデータの性質によっては、第４の実施の形態よりも性能が向上するという効果を持つ。
【０１１５】
次に、本発明の第６の実施の形態について図面を参照して詳細に説明する。図１０は、第６の実施の形態の構成を示すブロック図である。図１０を参照すると、第６の実施の形態の情報処理装置００Ｇは、第１、第２、第３、第４、または、第５の実施の形態のバッファ制御装置００Ａを含む。
【０１１６】
次に、本発明の第６の実施の形態の効果について説明する。
【０１１７】
第６の実施の形態は、第１、第２、第３、第４、または、第５の実施の形態のバッファ制御装置００Ａを含むので、第１、第２、第３、第４、または、第５の実施の形態と同一の効果を持つ。
【０１１８】
上記の実施の形態の一部、または、全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１１９】
［付記１］
外部からのデータを格納する待ち行列バッファと、
前記待ち行列バッファの先頭に順序保証の必要なデータが格納されると、前記外部からの出力先情報、および、順序保障が必要かどうかを示す順序保障情報に基づき順序保証の必要なデータの出力先情報対応の出力先回路がビジーの場合には、順序保証の必要なデータを前記待ち行列バッファの登録済み最後尾にローテートする待ち行列制御回路と、
を含むことを特徴とするバッファ制御装置。
【０１２０】
［付記２］
順序保障の必要なデータに対し、対応する前記出力先回路ごとに転送順を示す転送番号を付与し前記待ち行列バッファに格納し、前記待ち行列バッファの先頭に格納された順序保障の必要なデータの転送番号が転送すべき順番に一致しないと、前記待ち行列バッファの登録済み最後尾にローテートする前記待ち行列制御回路を、
含むことを特徴とする付記１のバッファ制御装置。
【０１２１】
［付記３］
それぞれ、データを受け取れないビジーであることを示すビジー信号を前記待ち行列制御回路に出力する前記出力先回路と、
ビジー信号に基づき、前記出力先回路のそれぞれが、ビジーかどうかを判断する前記待ち行列制御回路と、
を含むことを特徴とする付記１、または、２のバッファ制御装置。
【０１２２】
［付記４］
順序保障の必要なデータに対し対応する前記出力先回路ごとに転送順を示す転送番号を生成し前記待ち行列バッファに出力する入力制御部と、
データと、そのデータに対応する出力先情報、順序保障情報、転送番号を各シフトバッファに格納する前記待ち行列バッファと、
先頭の前記シフトバッファからの順序保障の必要なデータに対応する転送番号と、内部に保持するそのデータの出力先対応の転送番号とを比較することにより、転送番号が転送すべき順番に一致するかどうかを判断し、一致すれば、出力先情報に対応する前記出力先回路がビジーでないと、先頭の前記シフトバッファからの順序保障の必要なデータを対応する前記出力先回路に出力し、内部に保持するそのデータの出力先対応の転送番号をカウントアップする出力制御部と、
を含むことを特徴とする付記３のバッファ制御装置。
【０１２３】
［付記５］
対応する前記出力先回路がビジー、または、転送番号が転送すべき順番に一致しなければローテートを示し、ビジーでなく、かつ、一致すれば、出力の完了を示す出力制御情報を出力する前記出力制御部と、
前記出力制御部からの出力制御情報に基づいて、前記待ち行列バッファのローテート、シフトを制御するセレクタ制御部と、
を含むことを特徴とする付記４のバッファ制御装置。
【０１２４】
［付記６］
前記待ち行列バッファへのデータの新規登録の制御、および、前記出力制御部の動作の起動を行う前記セレクタ制御部を、
含むことを特徴とする付記５のバッファ制御装置。
【０１２５】
［付記７］
前記出力先回路対応に、ビジー開始からカウントアップを開始しビジー解除で初期値に戻るカウンタを含み、対応する前記出力先回路がビジーである場合、対応する前記タイマが事前に設定した一定値を超えてから、ローテートを実施させる前記出力制御部を、
含むことを特徴とする付記６のバッファ制御装置。
【０１２６】
［付記８］
付記１、２、３、４、５、６、または、７の前記バッファ制御装置を、
含むことを特徴とする情報処理装置。
【０１２７】
［付記９］
外部からのデータを待ち行列バッファに格納し、
前記待ち行列バッファの先頭に順序保証の必要なデータが格納されると、前記外部からの出力先情報、および、順序保障が必要かどうかを示す順序保障情報に基づき順序保証の必要なデータの出力先情報対応の出力先回路がビジーの場合には、順序保証の必要なデータを前記待ち行列バッファの登録済み最後尾にローテートすることを特徴とするバッファ制御方法。
【０１２８】
［付記１０］
順序保障の必要なデータに対し、対応する前記出力先回路ごとに転送順を示す転送番号を付与し前記待ち行列バッファに格納し、前記待ち行列バッファの先頭に格納された順序保障の必要なデータの転送番号が転送すべき順番に一致しないと、前記待ち行列バッファの登録済み最後尾にローテートすることを特徴とする付記９のバッファ制御方法。
【０１２９】
［付記１１］
前記出力先回路から、それぞれ、データを受け取れないビジーであることを示すビジー信号を入力し、
ビジー信号に基づき、前記出力先回路のそれぞれが、ビジーかどうかを判断することを特徴とする付記９、または、１０のバッファ制御方法。
【０１３０】
［付記１２］
順序保障の必要なデータに対し対応する前記出力先回路ごとに転送順を示す転送番号を生成し、前記対応する出力先情報、順序保障情報、転送番号を各シフトバッファに格納する待ち行列バッファに出力し、
先頭の前記シフトバッファからの順序保障の必要なデータに対応する転送番号と、内部に保持するそのデータの出力先対応の転送番号とを比較することにより、転送番号が転送すべき順番に一致するかどうかを判断し、一致すれば、出力先情報に対応する前記出力先回路がビジーでないと、先頭の前記シフトバッファからの順序保障の必要なデータを対応する前記出力先回路に出力し、内部に保持するそのデータの出力先対応の転送番号をカウントアップすることを特徴とする付記１１のバッファ制御方法。
【０１３１】
［付記１３］
対応する前記出力先回路がビジー、または、転送番号が転送すべき順番に一致しなければローテートを示し、ビジーでなく、かつ、一致すれば、出力の完了を示す出力制御情報に基づいて、前記待ち行列バッファのローテート、シフトを制御することを特徴とする付記１２のバッファ制御方法。
【符号の説明】
【０１３２】
００Ａ    バッファ制御装置
００Ｂ    待ち行列バッファ
００Ｃ    待ち行列制御回路
０Ｄ０    出力先回路
０Ｄ１    出力先回路
０Ｄｍ    出力先回路
０２０    セレクタ
０２１    セレクタ
０２２    セレクタ
０２ｎ−２    セレクタ
０２ｎ−１    セレクタ
０２ｎ    セレクタ
０３０    シフトバッファ
０３１    シフトバッファ
０３２    シフトバッファ
０３ｎ−２    シフトバッファ
０３ｎ−１    シフトバッファ
０３ｎ    シフトバッファ
０４０    先頭出力先情報
０５０    先頭転送番号
０Ｊ０    先頭順序保障情報
０Ｆ０    先頭データ
０１０    入力レジスタ
０６０    出力制御部
０７０    セレクタ制御部
０８０    入力制御部
０９０    出力ポート０バッファ
０９１    出力ポート１バッファ
０９ｍ    出力ポートｍバッファ
２００    出力制御情報
２０１    出力制御情報
２０２    出力要求信号
３００    ビジー信号
１１０    カウンタ
１１１    カウンタ
１１ｍ    カウンタ
１２０    カウンタ制御部
１３０    インクリメント信号
１４０    選択信号
１５０    セレクタ
２１０    カウンタ
２１１    カウンタ
２１ｍ    カウンタ
２２０    カウンタ制御部
２３０    インクリメント信号
２４０    選択信号
２５０    セレクタ
２６０    比較回路
２７０    データ制御部
２８０    比較転送番号
２９０    比較結果
０Ｅ０    タイマ
０Ｅ１    タイマ
０Ｅｍ    タイマ
００Ｇ    情報処理装置
【図１】
2013120484.tif 000003
【図２】
2013120484.tif 000004
【図３】
2013120484.tif 000005
【図４】
2013120484.tif 000006
【図５】
2013120484.tif 000007
【図６】
2013120484.tif 000008
【図７】
2013120484.tif 000009
【図８】
2013120484.tif 000010
【図９】
2013120484.tif 000011
【図１０】
2013120484.tif 000012