(57)【要約】  複数の入力ポート（３）と、前記複数の入力ポート（３）それぞれから入力された情報が書き込まれる複数のバッファ（５）と、少なくとも１つの出力ポート（７）とを備えたバッファ装置であって、前記複数のバッファ（５）のうちの所定のバッファ群（５０）に割り当てられた入力ポート（３）から情報が入力された場合、前記バッファ群（５０）のバッファ（５）における書込位置を示す情報に基づいて前記バッファ群（５０）から選択された書込対象のバッファ（５）に前記入力された情報を書き込むとともに、前記書込位置を示す情報に応じて、前記書込対象のバッファ（５）を前記バッファ群（５０）のうちの他のバッファ（５）に切り替える入力切替部（４０）と、前記バッファ群（５０）のバッファ（５）における読出位置を示す情報に基づいて選択された読出対象のバッファ（５）から、情報を読み出して前記出力ポート（７）に出力する出力制御部（６）とを備える。
2012169032.tif 000002
【特許請求の範囲】
【請求項１】
複数の入力ポートと、前記複数の入力ポートそれぞれから入力された情報が書き込まれる複数のバッファと、前記バッファから読み出された情報が出力される少なくとも１つの出力ポートとを備えたバッファ装置であって、
前記複数のバッファのうちの所定のバッファ群に割り当てられた入力ポートから情報が入力された場合、前記バッファ群のバッファにおける書込位置を示す情報に基づいて前記バッファ群から選択された書込対象のバッファに前記入力された情報を書き込むとともに、前記書込位置を示す情報に応じて、前記書込対象のバッファを前記バッファ群のうちの他のバッファに切り替える入力切替部と、
前記バッファ群のバッファにおける読出位置を示す情報に基づいて選択された読出対象のバッファから、情報を読み出して前記出力ポートに出力する出力制御部とを備えることを特徴とする、バッファ装置。
【請求項２】
前記入力切替部は、
前記書込位置を示す第１ポインタ値を保持する第１ポインタと、
前記第１ポインタ値に応じて値が変化する第２ポインタ値を保持する第２ポインタと、
前記第２ポインタ値の変化に応じて、前記書込対象のバッファを前記他のバッファに切り替え、切り替え後の書込対象のバッファにおける前記第１ポインタ値が示す書込位置に、前記入力ポートから入力された情報を書き込む第１切替部とを備えることを特徴とする、請求項１記載のバッファ装置。
【請求項３】
前記第１ポインタは、前記入力ポートから入力された情報が前記書込対象のバッファに書き込まれるときに前記第１ポインタ値を変化させるとともに、前記第１ポインタ値が第１閾値を超えると前記第１ポインタ値をリセットし、
前記第２ポインタは、前記第１ポインタ値が前記第１閾値を超えると前記第２ポインタ値を変化させるとともに、前記第２ポインタ値が第２閾値を超えると前記第２ポインタ値をリセットすることを特徴とする、請求項２記載のバッファ装置。
【請求項４】
前記第１ポインタは、前記バッファ群のうちのいずれかのバッファに対応して備えられた書込制御ポインタであることを特徴とする、請求項２又は請求項３記載のバッファ装置。
【請求項５】
前記入力切替部は、
前記複数のバッファそれぞれに対応した第１バッファ選択情報を保持する第１レジスタをさらに備え、
前記第１切替部は、前記第２ポインタ値と一致する第１バッファ選択情報に対応するバッファを、書込対象のバッファとして選択することを特徴とする、請求項２〜４のいずれか１項記載のバッファ装置。
【請求項６】
前記第１切替部は、前記バッファ群以外のバッファを書込対象のバッファとして選択することを抑止するとともに、前記バッファ群以外のバッファに対応する入力ポートから入力された情報を、前記バッファ群以外のバッファに書き込むことを特徴とする、請求項５記載のバッファ装置。
【請求項７】
前記バッファ群に割り当てられた前記入力ポートから情報が入力された場合に、前記入力された情報を前記入力切替部に出力する入力設定部をさらに備え、
前記入力切替部は、前記入力設定部から入力された情報を、前記書込位置に基づいて、前記書込対象のバッファに書き込むことを特徴とする、請求項１〜６のいずれか１項記載のバッファ装置。
【請求項８】
前記入力設定部は、
前記バッファ群に割り当てられた前記入力ポートを示す情報を保持する第２レジスタと、
前記第２レジスタに保持された情報に基づいて、前記複数の入力ポートから前記バッファ群に割り当てられた前記入力ポートを選択し、選択した前記入力ポートから入力された情報を前記入力切替部に出力する選択部とを備えること特徴とする、請求項７記載のバッファ装置。
【請求項９】
前記バッファ群以外のバッファに対応する入力ポートから入力された情報は、前記選択部を経由せずに前記入力切替部に入力され、対応する前記バッファ群以外のバッファに書き込まれることを特徴とする、請求項７又は請求項８記載のバッファ装置。
【請求項１０】
前記出力制御部は、
前記読出対象のバッファから情報を読み出して前記出力ポートに出力するとともに、前記読出位置を示す情報に応じて、前記読出対象のバッファを前記バッファ群のうちの他のバッファに切り替える出力切替部を備えることを特徴とする、請求項１〜９のいずれか１項記載のバッファ装置。
【請求項１１】
前記出力切替部は、
前記読出位置を示す第３ポインタ値を保持する第３ポインタと、
前記第３ポインタ値に応じて値が変化する第４ポインタ値を保持する第４ポインタと、
前記第４ポインタ値の変化に応じて、前記読出対象のバッファを前記他のバッファに切り替え、切り替え後の読出対象のバッファにおける前記第３ポインタ値が示す読出位置から情報を読み出す第２切替部とを備えることを特徴とする、請求項１０記載のバッファ装置。
【請求項１２】
前記第３ポインタは、前記バッファ群の読出対象のバッファから情報が読み出されるときに前記第３ポインタ値を変化させるとともに、前記第３ポインタ値が第１閾値を超えると前記第３ポインタ値をリセットし、
前記第４ポインタは、前記第３ポインタ値が前記第１閾値を超えると前記第４ポインタ値を変化させるとともに、前記第４ポインタ値が第２閾値を超えると前記第４ポインタ値をリセットすることを特徴とする、請求項１１記載のバッファ装置。
【請求項１３】
前記出力制御部は、
前記複数のバッファに書き込まれた情報の読出指示を発行する調停部をさらに備え、
前記出力切替部は、前記調停部から発行された読出指示に応じて、前記読出対象のバッファから情報を読み出すとともに、
前記第３ポインタは、前記調停部から読出指示が発行されると、前記第３ポインタ値を変化させることを特徴とする、請求項１２記載のバッファ装置。
【請求項１４】
前記出力切替部は、
前記複数のバッファそれぞれに対応した第２バッファ選択情報を保持する第３レジスタをさらに備え、
前記第２切替部は、前記第４ポインタ値と一致する第２バッファ選択情報に対応するバッファを、読出対象のバッファとして選択することを特徴とする、請求項１３記載のバッファ装置。
【請求項１５】
前記複数の入力ポートのうちの２つ以上の入力ポートからデータが入力される場合、
前記第２切替部は、前記調停部から発行された読出指示が、前記バッファ群に書き込まれた情報の読出指示である場合、前記読出指示により指定されたバッファに対応する第２バッファ選択情報と、前記第４ポインタ値と、が一致する場合に、前記読出指示により指定されたバッファを、読出対象のバッファとして選択する一方、前記調停部から発行された読出指示が、前記バッファ群以外のバッファに書き込まれた情報の読出指示である場合に、前記読出指示により指定された前記バッファ群以外のバッファを、読出対象のバッファとして選択することを特徴とする、請求項１４記載のバッファ装置。
【請求項１６】
前記第３ポインタは、前記バッファ群のうちのいずれかのバッファに対応して備えられた読出制御ポインタであることを特徴とする、請求項１１〜１５のいずれか１項記載のバッファ装置。
【請求項１７】
前記バッファ群を構成するバッファ及び前記バッファ群に割り当てられた入力ポートは、前記バッファ装置を監視するファームウェアにより設定及び更新されることを特徴とする、請求項１〜１６のいずれか１項記載のバッファ装置。
【請求項１８】
複数の入力ポートと、前記複数の入力ポートそれぞれから入力された情報が書き込まれる複数のバッファと、前記バッファから読み出された情報が出力される少なくとも１つの出力ポートとを備えたバッファ装置におけるバッファ制御装置であって、
前記複数のバッファのうちの所定のバッファ群に割り当てられた入力ポートから情報が入力された場合、前記バッファ群のバッファにおける書込位置を示す情報に基づいて前記バッファ群から選択された書込対象のバッファに前記入力された情報を書き込むとともに、前記書込位置を示す情報に応じて、前記書込対象のバッファを前記バッファ群のうちの他のバッファに切り替える入力切替部と、
前記バッファ群のバッファにおける読出位置を示す情報に基づいて選択された読出対象のバッファから、情報を読み出して前記出力ポートに出力する出力制御部とを備えることを特徴とする、バッファ制御装置。
【請求項１９】
複数の入力ポートと、前記複数の入力ポートそれぞれから入力された情報が書き込まれる複数のバッファと、前記バッファから読み出された情報が出力される少なくとも１つの出力ポートとを備えたバッファ装置におけるバッファ制御方法であって、
前記複数のバッファのうちの所定のバッファ群に割り当てられた入力ポートから情報が入力された場合、前記バッファ群のバッファにおける書込位置を示す情報に基づいて、前記バッファ群から書込対象のバッファを選択し、
前記選択された書込対象のバッファに前記入力された情報を書き込み、
前記書込位置を示す情報に応じて、前記書込対象のバッファを前記バッファ群のうちの他のバッファに切り替え、
前記バッファ群のバッファにおける読出位置を示す情報に基づいて、前記バッファ群から読出対象のバッファを選択し、
前記選択された読出対象のバッファから、情報を読み出して前記出力ポートに出力することを特徴とする、バッファ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、情報処理システムにおけるバッファ装置，バッファ制御装置，及びバッファ制御方法に関する。
【背景技術】
【０００２】
情報処理システムにおいて、複数のデータパスから入力されたデータを保持し、保持されたデータを１つのポートから出力する、例えば図１６に示すような複数入力１出力に対応するバッファ装置が用いられることがある。
図１６は、複数入力１出力に対応するバッファ装置２００の構成例を示す図であり、図１７及び図１８は、図１６に例示するバッファ装置２００を備える情報処理システム１００−１及び１００−２の構成例をそれぞれ示す図である。【０００３】
なお、図１６では、３入力１出力に対応するバッファ装置２００を示す。また、図１７及び図１８における矢印の向きは、データの伝送方向を示す。なお、図１７及び図１８では、図の簡略化のため、ＸＢ１２０−１の内部の構成、及びＸＢ１２０−２のバッファ装置２００−１〜２００−４の一部の構成を省略している。
図１６に例示するように、バッファ装置２００は、バッファ５００−１〜５００−３を入力ポート３００−１〜３００−３ごとに並列に備え、各バッファ５００は、対応する入力ポート３００−１〜３００−３から入力パス３００Ａ〜３００Ｃを介して入力されたデータを格納する。以下、バッファ５００−１〜５００−３を区別しない場合には、単にバッファ５００という。バッファ５００としては、例えばＲＡＭ（Random Access Memory）等の揮発性メモリが挙げられる。【０００４】
また、バッファ装置２００は、調停部６６０による調停結果に基づいて、出力するデータを出力対象のバッファ５００から選択して出力パス７００Ａに出力する。つまり、出力対象のバッファ５００から読み出したデータを出力ポート７００から出力する。
バッファ装置２００は、バッファ５００それぞれに対応した書込制御ポインタ５００ａ−１〜５００ａ−３及び読出制御ポインタ５００ｂ−１〜５００ｂ−３を備える。以下、書込制御ポインタ５００ａ−１〜５００ａ−３及び読出制御ポインタ５００ｂ−１〜５００ｂ−３を区別しない場合には、それぞれ単に書込制御ポインタ５００ａ及び読出制御ポインタ５００ｂという。書込制御ポインタ５００ａ及び読出制御ポインタ５００ｂは、それぞれ図１６中、ＷＰ及びＲＰと表記している。【０００５】
書込制御ポインタ５００ａには、バッファ５００の書き込みアドレスがポインタ値として記録されており、バッファ５００への入力データは、対応する書込制御ポインタ５００ａのポインタ値が示すアドレス位置に書き込まれる。また、書込制御ポインタ５００ａは、対応するバッファ５００に入力データが書き込まれるごとに、対応するポインタ値をインクリメントさせる。【０００６】
読出制御ポインタ５００ｂには、バッファ５００からの出力データの読み出しアドレスがポインタ値として記録されており、バッファ５００に格納されたデータは、対応する読出制御ポインタ５００ｂのポインタ値が示すアドレス位置から読み出される。また、読出制御ポインタ５００ｂは、対応するバッファ５００から出力データが読み出されるごとに、自身のポインタ値をインクリメントさせる。【０００７】
調停部６６０は、バッファ５００からのデータの読出タイミングの調整、及び読出対象のバッファ５００の選択（調停）を行なう。調停部６６０は、セレクタ６３０に対して、読出タイミングごとに、調停結果として読出対象のバッファ５００を選択させる制御信号を出力する。なお、調停部６６０は、読出対象のバッファ５００の選択を、例えばＬＲＵ（Least Recently Used）方式やラウンドロビン方式を用いて行なう。【０００８】
セレクタ６３０は、調停部６６０による調停結果に基づき、読出対象のバッファ５００に対応する読出制御ポインタ５００ｂのポインタ値が示すアドレス位置から、出力データを読み出し、出力パス７００Ａに出力するものである。
なお、入力ポート３００−１〜３００−３及び出力ポート７００には、それぞれ、例えばサーバ等の情報処理装置やシステムボード（ＳＢ；System Board：以下、ＳＢという）等が接続される。【０００９】
図１６に示すバッファ装置２００は、例えば、図１７に示す情報処理システム１００−１や図１８に示す情報処理システム１００−２において、クロスバチップ（ＸＢ；Cross Bar：以下、ＸＢという）等に備えられる。
図１７に示す例において、バッファ装置２００にそれぞれ対応するバッファ装置２００−１〜２００−４は、ＸＢ１２０に備えられる。また、各バッファ装置２００−１〜２００−４の出力側、つまり出力ポート７００は、対応するＳＢ１１０−１〜１１０−４に接続され、各バッファ装置２００−１〜２００−４の入力側、つまり入力ポート３００−１〜３００−３は、対応するＳＢ以外のＳＢ１１０−１〜１１０−４にそれぞれ接続される。【００１０】
図１７に例示するバッファ装置２００−１〜２００−４により、ＳＢ１１０−１〜１１０−４は、それぞれＸＢ１２０を介して、相互に通信可能に接続される。
図１８に例示する情報処理システム１００−２は、長距離伝送パスを介して相互に通信可能に接続されたＸＢ１２０−１及び１２０−２を備える。ＸＢ１２０−１は、相互に通信可能に接続されたＳＢ１１０−１〜１１０−３を備え、ＸＢ１２０−２は、相互に通信可能に接続されたＳＢ１１０−４〜１１０−６を備える。【００１１】
図１８に示す例において、ＸＢ１２０−２は、図１７に示すＸＢ１２０と同様に、バッファ装置２００にそれぞれ対応するバッファ装置２００−１〜２００−４を備える。なお、ＸＢ１２０−１は、図１８において図示は省略しているが、ＸＢ１２０−２や図１７に示すＸＢ１２０と同様の構成である。
図１８に例示するように、ＸＢ１２０−２におけるバッファ装置２００−１の出力側は、長距離伝送パスを介してＸＢ１２０−１に接続され、各バッファ装置２００−２〜２００−４の出力側は、対応するＳＢ１１０−４〜１１０−６に接続される。一方、ＸＢ１２０−２におけるバッファ装置２００−１の入力側は、ＳＢ１１０−４〜１１０−６にそれぞれ接続される。また、ＸＢ１２０−２における各バッファ装置２００−２〜２００−４の入力側は、対応するＳＢ以外のＳＢ１１０−４〜１１０−６、及び長距離伝送パスを介してＸＢ１２０−１にそれぞれ接続される。【００１２】
図１８に例示する情報処理システム１００−２においても、情報処理システム１００−１と同様に、ＳＢ１１０−１〜１１０−３とＳＢ１１０−４〜１１０−６とは、ＸＢ１２０−１、長距離伝送パス、及びＸＢ１２０−２を介して、相互に通信可能に接続される。
なお、関連する技術として、空きＦＩＦＯ（First In, First Out）の番号を記憶する空きＦＩＦＯキューを備え、書き込みポインタの示すＦＩＦＯに容量がなくなると、空きＦＩＦＯキューから空きＦＩＦＯ番号を書き込みポインタへ読み出して、空きＦＩＦＯに書き込みを行なう技術がある。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開平５−３３６１５３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
パケット等のデータの伝送において、受信バッファの容量は、伝送距離に大きく影響される。
例えば、受信バッファが溢れることを防ぐための手法として、受信バッファや受信バッファに接続された受信側の装置が、送信側の装置に対してビジー（busy）信号を送信する等の手法が採られることがある。送信側の装置は、ビジー信号を受信するとデータの送信を抑止するが、伝送距離が長いほど、ビジー信号が送信されてから送信側の装置により受信されるまでに時間がかかるため、送信側の装置がデータ送信を抑止するまでに時間がかかる。【００１５】
従って、データ伝送に用いられる受信バッファは、伝送距離が長いほどより多くのデータを溜め込むこと、つまり多くのデータが格納可能であることが要求される。すなわち、長距離伝送において用いられる受信バッファの容量を確保することは、長距離伝送における重要な問題の一つであるといえる。
なお、受信バッファの容量を確保する手法として、上述した空きＦＩＦＯの番号を記憶する空きＦＩＦＯキューを備える技術が挙げられる。【００１６】
しかしながら、空きＦＩＦＯキューを備える技術において、書き込み手段は、空きＦＩＦＯを使用する際に、これまで書き込みを行なっていたＦＩＦＯ内に専用のフラグや空きＦＩＦＯ番号を書き込むため、ＦＩＦＯへの書き込みデータに対して細工が必要となる。また、書き込み手段や読み出し手段は、それぞれ書き込みや読み出しの際に、専用のフラグの有無とバッファ番号とに基づいて、書き込みポインタや読み出しポインタを書き換える処理を行なう必要がある。【００１７】
このように、空きＦＩＦＯキューを備える技術において、書き込み又は読み出しＦＩＦＯの切り替えに係る制御は、簡便な制御とは言い難い。
ここまで、バッファ装置がＸＢに複数備えられ、複数の情報処理装置やＳＢ等が、ＸＢを介して相互に通信可能に接続される場合について説明したが、複数の情報処理装置やＳＢ等が、１つのバッファ装置を介して、相互に通信可能に接続される場合においても同様の問題がある。【００１８】
上述の点に鑑み、本件の目的の１つは、簡素な構成により、バッファ装置におけるバッファ容量を容易に確保することである。
なお、前記目的に限らず、後述する発明を実施するための形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本発明の他の目的の１つとして位置付けることができる。
【課題を解決するための手段】
【００１９】
本件のバッファ装置は、複数の入力ポートと、前記複数の入力ポートそれぞれから入力された情報が書き込まれる複数のバッファと、前記バッファから読み出された情報が出力される少なくとも１つの出力ポートとを備えたバッファ装置であって、前記複数のバッファのうちの所定のバッファ群に割り当てられた入力ポートから情報が入力された場合、前記バッファ群のバッファにおける書込位置を示す情報に基づいて前記バッファ群から選択された書込対象のバッファに前記入力された情報を書き込むとともに、前記書込位置を示す情報に応じて、前記書込対象のバッファを前記バッファ群のうちの他のバッファに切り替える入力切替部と、前記バッファ群のバッファにおける読出位置を示す情報に基づいて選択された読出対象のバッファから、情報を読み出して前記出力ポートに出力する出力制御部とを備えるものである。【００２０】
また、本件のバッファ制御装置は、上記バッファ装置における入力制御部及び出力制御部を備えるものである。
さらに、本件のバッファ制御方法は、複数の入力ポートと、前記複数の入力ポートそれぞれから入力された情報が書き込まれる複数のバッファと、前記バッファから読み出された情報が出力される少なくとも１つの出力ポートとを備えたバッファ装置におけるバッファ制御方法であって、前記複数のバッファのうちの所定のバッファ群に割り当てられた入力ポートから情報が入力された場合、前記バッファ群のバッファにおける書込位置を示す情報に基づいて、前記バッファ群から書込対象のバッファを選択し、前記選択された書込対象のバッファに前記入力された情報を書き込み、前記書込位置を示す情報に応じて、前記書込対象のバッファを前記バッファ群のうちの他のバッファに切り替え、前記バッファ群のバッファにおける読出位置を示す情報に基づいて、前記バッファ群から読出対象のバッファを選択し、前記選択された読出対象のバッファから、情報を読み出して前記出力ポートに出力するものである。
【発明の効果】
【００２１】
開示の技術によれば、簡素な構成により、バッファ装置におけるバッファ容量を容易に確保することができる。
【図面の簡単な説明】
【００２２】
【図１】一実施形態に係るバッファ装置の構成例を示す図である。
【図２】本実施形態のバッファ装置の詳細な構成例を示す図である。
【図３】本実施形態のバッファ装置による通常運用及び結合運用の初期設定手順を説明するフローチャートである。
【図４】本実施形態のバッファ装置の入力制御部による結合運用における動作例を説明するフローチャートである。
【図５】本実施形態のバッファ装置の出力制御部による結合運用における動作例を説明するフローチャートである。
【図６】図２に示すバッファ装置の結合運用における動作例を説明する図である。
【図７】本実施形態に係る情報処理システムの構成例を示す図である。
【図８】一実施形態に係るバッファ装置の構成の変形例を示す図である。
【図９】本変形例のバッファ装置の比較回路におけるパスセレクト例を示す図である。
【図１０】本変形例のバッファ装置の比較回路におけるパスセレクト例を示す図である。
【図１１】本変形例のバッファ装置による通常運用及び結合運用の初期設定手順を説明するフローチャートである。
【図１２】本変形例のバッファ装置の入力制御部による結合運用における動作例を説明するフローチャートである。
【図１３】本変形例のバッファ装置の出力制御部による結合運用における動作例を説明するフローチャートである。
【図１４】図８に示すバッファ装置の結合運用における動作例を説明する図である。
【図１５】図８に示すバッファ装置の結合運用における動作例を説明する図である。
【図１６】複数入力１出力に対応するバッファ装置の構成例を示す図である。
【図１７】図１６に例示するバッファ装置を備える情報処理システムの構成例を示す図である。
【図１８】図１６に例示するバッファ装置を備える情報処理システムの構成例を示す図である。
【発明を実施するための形態】
【００２３】
以下、図面を参照して本発明の実施の形態を説明する。
〔１〕一実施形態
〔１−１〕一実施形態の構成
図１は、一実施形態に係るバッファ装置２の構成例を示す図である。
図１に示すように、バッファ装置２は、複数、例えば３つの入力ポート３−１〜３−３、入力制御部４、複数、例えば３つのバッファ５−１〜５−３、出力制御部６、及び出力ポート７を備える。なお、以下、特に区別しない場合には、入力ポート３−１〜３−３を単に入力ポート３といい、バッファ５−１〜５−３を単にバッファ５という。
【００２４】
バッファ装置２は、例えばサーバ等の情報処理装置やＳＢ等の、図示しない外部の装置間で伝送されるパケット等のデータ、つまり情報を中継する装置である。以下、外部の装置を単に外部装置という。
入力ポート３は、それぞれ、送信側の外部装置からバッファ装置２に入力されるデータを受け入れるポートであり、伝送パスを介して送信側の外部装置に接続される。入力ポート３−１〜３−３に入力されたデータは、それぞれ入力パス３Ａ〜３Ｃを介して入力制御部４に入力される。
【００２５】
入力パス３Ａ〜３Ｃは、それぞれ、一端が入力ポート３−１〜３−３に接続され、他端が入力制御部４に接続されたパスである。
バッファ５は、入力ポート３−１〜３−３ごとに並列に備えられ、入力ポート３それぞれから入力されたデータが、入力制御部４を介して書き込まれる記憶装置である。バッファ５に書き込まれたデータは、出力制御部６により読み出され、出力パス７Ａを介して出力ポート７から出力される。なお、バッファ５としては、例えばＲＡＭ等の揮発性メモリが挙げられる。
【００２６】
出力ポート７は、出力制御部６によってバッファ５から読み出されたデータをバッファ装置２から受信側の外部装置に出力する少なくとも１つのポートであり、伝送パスを介して受信側の外部装置に接続される。
出力パス７Ａは、一端が出力制御部６に接続され、他端が出力ポート７に接続されたパスである。
【００２７】
ここで、本実施形態に係るバッファ装置２は、入力制御部４及び出力制御部６により、複数入力１出力を行なう運用と、複数のバッファ５を論理的に結合して、１入力１出力を行なう運用と、を切り替えて運用することができる。以下、バッファ装置２が複数入力１出力を行なう運用を通常運用といい、１入力１出力を行なう運用を結合運用という。
具体的に、結合運用は、データ伝送に係るバッファ容量を確保するために行なわれるバッファ装置２の運用の形態の一つであり、入力制御部４により、通常運用における入力ポート３とバッファ５との対応関係が、所定の対応関係に切り替えられる運用をいう。
【００２８】
例えば、複数の入力ポート３−１〜３−３全てからではなく、入力ポート３−１〜３−３のいずれか１つのポート３から入力されたデータを１つの出力ポート７に出力したい場合、使用しない入力ポート３−１〜３−３に対応して備えられたバッファ資源は未使用領域となる。
本実施形態では、この未使用領域のバッファ５を活用して、結合運用において、バッファ装置２における、例えば長距離伝送を行なうことが可能なバッファ容量を確保する。
【００２９】
入力制御部４は、バッファ装置２の結合運用において、特定の入力ポート３から入力されたデータを、バッファ５のうちの一部又は全部のバッファ５を論理的に結合した、所定の結合バッファ（バッファ群）５０に対して書き込む。
図１に例示する結合バッファ５０は、バッファ５−１〜５−３のうちの全部のバッファ５により構成される。また、図１に例示する結合バッファ５０は、特定の入力ポートとして入力ポート３−１が割り当てられる。つまり、バッファ５の結合運用において、特定の入力ポートである入力ポート３−１から入力されたデータは、入力制御部４によって、結合バッファ５０を構成するバッファ５−１〜５−３に対して書き込まれる。
【００３０】
具体的には、入力制御部４（後述する入力切替部４０）は、結合運用において、結合バッファ５０に割り当てられた入力ポート３−１からデータが入力された場合、結合バッファ５０を構成するバッファ５−１〜５−３における、書込位置を示す情報に基づいて、結合バッファ５０から書込対象のバッファ５を選択する。そして、入力制御部４は、選択した書込対象のバッファ５に、入力ポート３−１から入力されたデータを書き込む。なお、入力制御部４による、書込位置を示す情報に基づいた書込対象のバッファ５の選択の手法については、入力制御部４の詳細な構成の説明とともに、図２を用いて後述する。
【００３１】
また、入力制御部４は、バッファ装置２の通常運用において、入力ポート３−１〜３−３から入力パス３Ａ〜３Ｃを介して入力されたデータを、対応するバッファ５に対して書き込む。具体的には、入力制御部４は、通常運用において、入力ポート３−１から入力パス３Ａを介して入力されたデータをバッファ５−１に書き込む。同様に、入力制御部４は、通常運用において、入力ポート３−２から入力パス３Ｂを介して入力されたデータをバッファ５−２に書き込み、入力ポート３−３から入力パス３Ｃを介して入力されたデータをバッファ５−３に書き込む。
【００３２】
出力制御部６は、結合運用において、結合バッファ５０を構成するバッファ５−１〜５−３における、読出位置を示す情報に基づいて、結合バッファ５０から読出対象のバッファ５を選択する。そして、出力制御部６は、選択した読出対象のバッファ５からデータを読み出して出力ポート７に出力する。なお、出力制御部６による、読出位置を示す情報に基づいた読出対象のバッファ５の選択の手法については、出力制御部６の詳細な構成の説明とともに、図２を用いて後述する。
【００３３】
また、出力制御部６は、通常運用において、バッファ５−１〜５−３から読出対象のバッファ５を選択し、選択した読出対象のバッファ５に書き込まれたデータを読み出して、出力ポート７に対して出力する。
上述のように、図１に例示するバッファ装置２は、結合運用において、入力ポート３−１に入力されたデータを出力ポート７から出力する、１入力１出力に対応した受信バッファとして機能する。
【００３４】
また、入力制御部４及び出力制御部６は、バッファ装置２の運用の形態に応じて、バッファ５に対するデータの書き込み及び読み出しの制御を行なう、バッファ制御装置として機能する。
〔１−２〕バッファ装置の詳細な構成
次に、上述したバッファ装置２の詳細な構成を、図２を用いて説明する。
【００３５】
図２は、図１に示すバッファ装置２の詳細な構成例を示す図である。
なお、図２に例示するバッファ装置２における結合バッファ５０は、バッファ５−１〜５−３により構成されるものとして説明する。
バッファ装置２は、バッファ５−１〜５−３それぞれに対応した書込制御ポインタ５ａ−１〜５ａ−３及び読出制御ポインタ５ｂ−１〜５ｂ−３を備える。なお、図の簡略化のために、図２において、バッファ５−１に対応した書込制御ポインタ５ａ−１及び読出制御ポインタ５ｂ−１のみを図示している。以下、書込制御ポインタ５ａ−１〜５ａ−３及び読出制御ポインタ５ｂ−１〜５ｂ−３を区別しない場合には、それぞれ単に書込制御ポインタ５ａ及び読出制御ポインタ５ｂという。図２において、書込制御ポインタ５ａ及び読出制御ポインタ５ｂは、それぞれＷＰ及びＲＰと表記している。
【００３６】
通常運用において、書込制御ポインタ５ａには、対応するバッファ５への書込位置を示す書き込みアドレスがポインタ値として記録されており、バッファ５への入力データは、入力制御部４によって、対応する書込制御ポインタ５ａのポインタ値が示すアドレス位置に書き込まれる。また、通常運用において、書込制御ポインタ５ａは、対応するバッファ５に入力データが書き込まれるごとに、自身のポインタ値を変化、例えばインクリメントさせる。
【００３７】
通常運用において、読出制御ポインタ５ｂには、対応するバッファ５からの出力データの読出位置を示す読み出しアドレスがポインタ値として記録されており、バッファ５からの出力データは、出力制御部６によって、対応する読出制御ポインタ５ｂのポインタ値が示すアドレス位置から読み出される。また、通常運用において、読出制御ポインタ５ｂは、対応するバッファ５から出力データが読み出されるごとに、自身のポインタ値を変化、例えばインクリメントさせる。
【００３８】
なお、書込制御ポインタ５ａ及び読出制御ポインタ５ｂのポインタ値は、それぞれ、例えばインクリメントによって、バッファ５における使用可能なアドレスの上限等を超えた場合、書込制御ポインタ５ａ及び読出制御ポインタ５ｂにより初期値にリセットされる。
〔１−２−１〕入力制御部の詳細な構成
入力制御部４は、入力切替部４０、及び入力設定部４６を備える。
【００３９】
入力設定部４６は、通常運用及び結合運用のいずれの運用においても、入力ポート３−１〜３−３から入力されたデータを、対応する入力パス３Ａ〜３Ｃを介して、入力切替部４０に出力する。
また、入力設定部４６は、結合運用において、結合バッファ５０に割り当てられた特定の入力ポート３からデータが入力された場合に、入力されたデータを結合パス３Ｄを介して、入力切替部４０に出力する。
【００４０】
入力切替部４０は、通常運用において、入力設定部４６から入力パス３Ａ〜３Ｃを介して入力されたデータを、対応するバッファ５−１〜５−３に書き込む。
また、入力切替部４０は、結合運用において、入力設定部４６から結合パス３Ｄを介して入力されたデータを、結合バッファ５０の書込対象のバッファ５に書き込む。
すなわち、入力制御部４は、入力切替部４０及び入力設定部４６によって、通常運用においては、入力ポート３−１〜３−３から入力パス３Ａ〜３Ｃを介して入力されたデータを対応するバッファ５に書き込む。一方、入力制御部４は、結合運用においては、特定の入力ポート３から結合パス３Ｄを介して入力されたデータを、結合バッファ５０における書込対象のバッファ５に書き込む。
【００４１】
以下、入力切替部４０及び入力設定部４６の詳細な構成について説明する。
はじめに、入力設定部４６について説明する。
入力設定部４６は、設定レジスタ（第２レジスタ）４７、及び選択部４８を備える。
設定レジスタ４７は、結合バッファ５０に割り当てられた特定の入力ポート３、つまり特定の入力パス３Ａ〜３Ｃを示す情報を、例えば結合運用の初期設定において設定され、保持するものである。以下、設定レジスタ４７は、特定の入力ポート３として入力ポート３−１を示す情報を保持するものとして説明する。
【００４２】
選択部４８は、結合運用において、設定レジスタ４７に保持された情報に基づいて、複数の入力ポート３−１〜３−３から結合バッファ５０に割り当てられた入力ポート３を選択し、選択した入力ポート３から入力されたデータを、結合パス３Ｄを介して入力切替部４０に出力する。
選択部４８は、セレクタ４８ａ、及びデコーダ４８ｂを備える。
【００４３】
セレクタ４８ａは、入力パス３Ａ〜３Ｃそれぞれから分岐した複数のパスが入力側に接続される一方、結合パス３Ｄが出力側に接続される。
デコーダ４８ｂは、設定レジスタ４７に保持された情報に基づいて、結合バッファ５０に割り当てられた特定の入力ポート３に対応するパスを選択するように、セレクタ４８ａに対して制御信号（選択信号）を出力する。なお、デコーダ４８ｂは、図２中、ＤＥＣと表記している。
【００４４】
つまり、セレクタ４８ａは、結合運用において、デコーダ４８ｂからの制御信号によって選択されたパス、すなわち入力ポート３−１に対応するパスを、入力側に接続された複数のパスから選択する。そして、セレクタ４８ａは、選択したパスを介して入力ポート３−１から入力されるデータを、結合パス３Ｄに出力する。
なお、既述の如く、設定レジスタ４７に設定されるレジスタ値等の情報により、結合バッファ５０に割り当てられる特定の入力ポート３が決定される。この設定レジスタ４７への設定は、本実施形態のバッファ装置２が適用されるＸＢと、周辺のＳＢや他のＸＢ等のＬＳＩとの接続トポロジにより決定されるものである。
【００４５】
システム構成の変更等によって接続トポロジが変更される際には、例えばバッファ装置２が適用されたシステム構成を監視するファームウェアや、システムの管理者等が、設定レジスタ４７に対して適切なレジスタ値等の情報を設定し直すことができる。以下、ファームウェアや、システムの管理者等をまとめてファームウェアという。
つまり、ファームウェアは、システム構成の変更により、バッファ装置２が例えば１入力１出力の受信バッファとして用いられる場合には、設定レジスタ４７に対して特定の入力ポート３を設定することができる。また、ファームウェアは、システム構成の変更により、バッファ装置２が複数入力１出力の受信バッファとして用いられる場合には、設定レジスタ４７に設定された特定の入力ポート３をリセットして、バッファ装置２を通常運用を行なうべく構成することができる。
【００４６】
ファームウェアによる設定レジスタ４７の設定値の変更は、バッファ装置２が適用されたシステムが運用中であっても同様に行なうことができる。例えば、バッファ装置２やバッファ装置２が適用されたＸＢ等に、設定レジスタ４７の設定変更を行なうバッファ装置２へ到来するデータを一時的に遮断する機能を設けることで、システムをダウンさせることなく、動的に設定レジスタ４７の設定変更ができる。
【００４７】
次に、入力切替部４０について説明する。
入力切替部４０は、結合運用において、結合バッファ５０のバッファ５における書込位置を示す情報に応じて、書込対象のバッファ５を結合バッファ５０のうちの他のバッファ５に切り替える。
入力切替部４０は、下位ビットポインタ（第１ポインタ）４１、上位ビットポインタ（第２ポインタ）４２、第１切替部４３、及び閾値設定レジスタ４４を備える。
【００４８】
下位ビットポインタ４１は、結合バッファ５０のうちの書込対象のバッファ５、つまり結合バッファ５０を構成するバッファ５のうちのいずれかのバッファ５における書込位置を示す第１ポインタ値を保持する。つまり、下位ビットポインタ４１は、結合運用において、結合バッファ５０を構成するバッファ５−１〜５−３によって共通に用いられる書込制御ポインタである。なお、下位ビットポインタ４１は、図２中、下位ｂｉｔと表記している。
【００４９】
入力切替部４０は、下位ビットポインタ４１として、バッファ５に対応して備えられた書込制御ポインタ５ａと同様の書込制御ポインタ４１を備えても良いし、結合バッファ５０を構成するバッファ５−１〜５−３のうちのいずれかのバッファ５に対応して備えられた書込制御ポインタ５ａを転用しても良い。
以下、本実施形態において、下位ビットポインタ４１は、バッファ５−１が備える書込制御ポインタ５ａ−１を転用したものとして説明する。なお、図２中、書込制御ポインタ５ａ−１から下位ビットポインタ４１に向かう破線矢印は、書込制御ポインタ５ａ−１が下位ビットポインタ４１として転用されることを示す。
【００５０】
下位ビットポインタ４１は、結合運用において、特定の入力ポート３から入力されたデータが、書込対象のバッファ５に書き込まれる際に、書込位置、つまりアドレス位置を指定する。
また、下位ビットポインタ４１は、結合運用において、特定の入力ポート３から入力されたデータが書込対象のバッファ５に書き込まれると、第１ポインタ値を変化、例えばインクリメントさせる。
【００５１】
下位ビットポインタ４１の第１ポインタ値は、書込制御ポインタ５ａのポインタ値と同様に、バッファ５における使用可能なアドレスの上限等を超えた場合、下位ビットポインタ４１により、バッファ５における使用可能なアドレスの下限等の初期値にリセットされる。
以下、バッファ５における使用可能なアドレスの上限等、バッファ５を構成するＲＡＭ等の記憶領域がフル（full）の状態を示す閾値を、第１閾値という。
【００５２】
また、下位ビットポインタ４１、例えば図２に示す書込制御ポインタ５ａ−１と、結合バッファ５０を構成するバッファ５それぞれとは、ライン４１ａを介して接続される。下位ビットポインタ４１は、ライン４１ａを介して書込対象のバッファ５にデータが書き込まれるアドレス位置を指定したり、第１ポインタ値をインクリメントするトリガとして、データが書き込まれたことを検出したりすることができる。
【００５３】
なお、書込制御ポインタ５ａのうち、結合バッファ５０を構成するバッファ５に備えられるものであって、下位ビットポインタ４１として用いられないものについては、結合運用の初期設定等において、無効に設定され、結合運用の間は無効の状態が維持される。つまり、下位ビットポインタ４１として書込制御ポインタ５ａ−１が用いられる場合、図示しない書込制御ポインタ５ａ−２及び５ａ−３は、結合運用において無効の状態が維持され、対応するバッファ５−２及び５−３にデータが書き込まれる際の動作を行なわない。
【００５４】
上位ビットポインタ４２は、下位ビットポインタ４１の第１ポインタ値に応じて値が変化、例えばインクリメントする第２ポインタ値を保持するポインタである。なお、上位ビットポインタ４２は、図２中、上位ｂｉｔと表記している。
具体的には、上位ビットポインタ４２は、結合運用において、第１ポインタ値が第１閾値に達すると、第２ポインタ値を例えばインクリメントさせる。換言すれば、上位ビットポインタ４２が保持する第２ポインタ値は、下位ビットポインタ４１が保持する第１ポインタ値の更に上位のビットを示すポインタ値であるといえる。
【００５５】
第２ポインタ値は、後述する第１切替部４３により、結合バッファ５０を構成するバッファ５−１〜５−３から書込対象のバッファ５を選択するために用いられる。
例えば、本実施形態においては、第１切替部４３により、書込対象のバッファ５として、第２ポインタ値が“00”のときバッファ５−１が選択され、第２ポインタ値が“01”のときバッファ５−２が選択され、第２ポインタ値が“10”のときバッファ５−３が選択される。つまり、入力切替部４０は、連続した第２ポインタ値それぞれと、結合バッファ５０を構成するバッファ５−１〜５−３それぞれとを対応付け、第２ポインタ値に応じて、対応するバッファ５を書込対象のバッファ５として選択する。
【００５６】
つまり、バッファ５に割り当てられる第２ポインタ値の設定によって、書込対象のバッファ５として選択されるバッファ５の順番を任意に決定することができる。
また、第２ポインタ値は、第２閾値を超えた場合、上位ビットポインタ４２により、例えば最小の値である“00”等の初期値にリセットされる。
ここで、第２閾値とは、結合バッファ５０を構成するバッファ５−１〜５−３を示す第２ポインタ値のうちの、例えば最大の値であり、本実施形態においては、バッファ５−３が選択されるときの第２ポインタ値、つまり“10”である。従って、上位ビットポインタ４２では、第２ポインタ値に応じて、書込対象のバッファ５が、結合バッファ５０を構成するバッファ５−１〜５−３から所定の順序で周期的に選択される。
【００５７】
また、上位ビットポインタ４２は、通常運用において、第１切替部４３に対する第２ポインタ値の出力を抑止するように構成される。又は、上位ビットポインタ４２は、通常運用において、通常運用を示す所定のポインタ値、例えば結合バッファ５０を構成するバッファ５−１〜５−３に対応付けられていない“11”等、第２閾値よりも大きいポインタ値を、第１切替部４３に出力しても良い。
【００５８】
閾値設定レジスタ４４は、結合運用の初期設定等において、第１閾値及び第２閾値を設定され、保持する。下位ビットポインタ４１及び上位ビットポインタ４２は、それぞれ、結合運用において、閾値設定レジスタ４４に保持された第１閾値及び第２閾値に基づいて、上述した第１ポインタ値及び第２ポインタ値のインクリメントやリセット等の処理を行なう。
【００５９】
第１切替部４３は、結合運用において、上位ビットポインタ４２の第２ポインタ値の変化に応じて、結合バッファ５０における書込対象のバッファ５を結合バッファ５０のうちの他のバッファ５に切り替える。また、第１切替部４３は、書込対象のバッファ５における第１ポインタ値が示す書込位置に、入力ポート３−１から入力されたデータを書き込む。
【００６０】
第１切替部４３は、入力ポート３−１〜３−３及びバッファ５−１〜５−３にそれぞれ対応するセレクタ４３ａ〜４３ｃと、デコーダ４３ｄとを備える。なお、デコーダ４３ｄは、図２中、ＤＥＣと表記している。
セレクタ４３ａ〜４３ｃは、それぞれ対応する入力パス３Ａ〜３Ｃが入力側に接続されるとともに、結合パス３Ｄが入力側に接続される一方、対応するバッファ５−１〜５−３が出力側に接続される。
【００６１】
つまり、セレクタ４３ａは、入力ポート３−１に対応する入力パス３Ａと、結合パス３Ｄとが入力側に接続される一方、バッファ５−１が出力側に接続される。同様に、セレクタ４３ｂは、入力ポート３−２に対応する入力パス３Ｂと結合パス３Ｄとが入力側に接続される一方、バッファ５−２が出力側に接続される。また、セレクタ４３ｃは、入力ポート３−３に対応する入力パス３Ｃと結合パス３Ｄとが入力側に接続される一方、バッファ５−３が出力側に接続される。
【００６２】
デコーダ４３ｄは、結合運用において、上位ビットポインタ４２の第２ポインタ値に基づいて書込対象のバッファ５を選択するとともに、特定の入力ポート３から入力されたデータが書込対象のバッファ５に書き込まれるように、セレクタ４３ａ〜４３ｃに対してそれぞれ制御信号（選択信号）を出力する。
具体的には、デコーダ４３ｄは、結合運用において、第２ポインタ値に対応したバッファ５を書込対象のバッファ５として選択する。そして、デコーダ４３ｄは、書込対象のバッファ５に対応したセレクタ４３ａ〜４３ｃに対して、結合パス３Ｄを選択するように、制御信号を出力する。一方、デコーダ４３ｄは、書込対象のバッファ５以外の結合バッファ５０を構成するバッファ５に対応したセレクタ４３ａ〜４３ｃに対して、対応する入力パス３Ａ〜３Ｃ、及び結合パス３Ｄのいずれも選択しないように、それぞれ制御信号を出力する。
【００６３】
例えば、本実施形態においては、デコーダ４３ｄは、第２ポインタ値が“00”のとき書込対象のバッファ５としてバッファ５−１を選択し、バッファ５−１に対応するセレクタ４３ａに対して、結合パス３Ｄを選択することを示す制御信号を出力する。一方、デコーダ４３ｄは、セレクタ４３ｂ及び４３ｃに対して、対応する入力パス３Ｂ及び３Ｃ、及び結合パス３Ｄのいずれも選択しないように、制御信号を出力する。
【００６４】
セレクタ４３ａは、デコーダ４３ｄからの制御信号によって選択された結合パス３Ｄを、入力側に接続されたパスから選択し、選択した結合パス３Ｄを介して特定の入力ポート３、つまり入力ポート３−１から入力されるデータを、対応する書込対象のバッファ５−１に書き込む。
一方、セレクタ４３ｂ及び４３ｃは、デコーダ４３ｄからの制御信号に基づいて、対応する入力パス３Ｂ及び３Ｃ並びに結合パス３Ｄのいずれのパスも選択せず、対応するバッファ５−２及び５−３へのデータの書き込みを行なわない。
【００６５】
第２ポインタ値が“01”又は“10”であり、デコーダ４３ｄにより、書込対象のバッファ５としてバッファ５−２又は５−３が選択された場合についても、デコーダ４３ｄ及びセレクタ４３ａ〜４３ｃの処理は、第２ポインタ値が“00”の場合と同様である。
つまり、本実施形態では、デコーダ４３ｄは、結合運用において、第２ポインタ値が“00”のときセレクタ４３ａを選択し、“01”のときセレクタ４３ｂを選択し、“10”のときセレクタ４３ｃを選択するように、制御信号を制御する。すなわち、デコーダ４３ｄによる制御信号の制御によって、書込対象のバッファ５に、入力ポート３−１から結合パス３Ｄを介して入力されるデータを書き込むセレクタ４３ａ〜４３ｃが選択される。
【００６６】
なお、入力切替部４０は、上述した第２ポインタ値と、書込対象のバッファ５として選択されるバッファ５−１〜５−３、つまりセレクタ４３ａ〜４３ｃとの対応関係を示す情報を保持するレジスタ等を備えても良い。このレジスタには、例えば結合運用の初期設定等において、第２ポインタ値とバッファ５、つまりセレクタ４３ａ〜４３ｃとの対応関係が設定される。
【００６７】
また、デコーダ４３ｄは、通常運用においては、入力ポート３−１〜３−３から入力パス３Ａ〜３Ｃを介して入力されたデータが、対応するバッファ５に書き込まれるように、セレクタ４３ａ〜４３ｃに対してそれぞれ制御信号を出力する。
つまり、通常運用において、セレクタ４３ａ〜４３ｃは、それぞれ、デコーダ４３ｄからの制御信号によって選択された対応する入力パス３Ａ〜３Ｃを、入力側に接続されたパスから選択する。そして、セレクタ４３ａ〜４３ｃは、それぞれ、選択した入力パス３Ａ〜３Ｃを介して対応する入力ポート３−１〜３−３から入力されるデータを、対応するバッファ５−１〜５−３に書き込む。
【００６８】
なお、入力切替部４０は、デコーダ４３ｄによる第２ポインタ値に基づくパスセレクトについての有効／無効フラグを備え、第２ポインタ値に基づいたセレクタ４３ａ〜４３ｃの選択の有効化／無効化の切り替えを管理することができる。
つまり、デコーダ４３ｄは、有効／無効フラグの値によって、結合運用及び通常運用の切り替えを行なうことができる。
【００６９】
有効／無効フラグは、例えば、結合運用の初期設定等に有効に設定され、通常運用の初期設定等に無効に設定される。
なお、有効／無効フラグが備えられない場合には、デコーダ４３ｄは、第２ポインタ値が上位ビットポインタ４２から入力されない場合や、第２ポインタ値が通常運用を示す“11”等の所定のポインタ値であった場合に、通常運用であると判断しても良い。
【００７０】
〔１−２−２〕出力制御部の詳細な構成
出力制御部６は、出力切替部６０、及び調停部６６を備える。
調停部６６は、通常運用及び結合運用のいずれの運用においても、バッファ５からのデータの読出タイミングの調整を行なう。なお、調停部６６は、読出対象のバッファ５の選択を、例えばＬＲＵ方式やラウンドロビン方式を用いて行なう。
【００７１】
具体的には、調停部６６は、結合運用において、バッファ５からのデータの読出タイミングごとに、出力切替部６０に対して、バッファ５に書き込まれたデータの読出指示を出力する。
なお、調停部６６は、例えば出力ポート７から伝送パスを介して接続された図示しない受信側の外部装置と接続され、受信側の外部装置からタイミング情報を入力される。調停部６６は、入力されたタイミング情報に基づいて、バッファ５からのデータの読出タイミングを調整する。タイミング情報には、例えば、一定の時間間隔で出力ポート７からデータを出力する指示や、受信側の外部装置がビジー状態である場合等に、出力ポート７からのデータの出力の中断及び再開を示す指示等が含まれる。
【００７２】
また、調停部６６は、通常運用において、読出対象のバッファ５の選択（調停）を行なう。
具体的には、調停部６６は、通常運用において、バッファ５からのデータの読出タイミングごとに、出力切替部６０に対して、選択した読出対象のバッファ５に書き込まれたデータの読出指示を出力（発行）する。
【００７３】
なお、図２中、図示を省略しているが、調停部６６から読出制御ポインタ５ｂ−１〜５ｂ−３それぞれに対して、通常運用において読出位置を示すポインタ値をインクリメントするためのラインが備えられる。つまり、調停部６６は、通常運用において、読出対象のバッファ５からデータを読み出すときに、対応する読出制御ポインタ５ｂに、ポインタ値をインクリメントさせる。
【００７４】
出力切替部６０は、結合運用において、調停部６６から入力されたデータの読出指示に基づいて、結合バッファ５０を構成するバッファ５から読出対象のバッファ５を選択し、選択したバッファ５からデータを読み出して、出力パス７Ａを介して出力ポート７に出力する。
また、出力切替部６０は、通常運用において、調停部６６から入力されたデータの読出指示に基づいて、読出対象のバッファ５からデータを読み出し、出力パス７Ａを介して出力ポート７に出力する。
【００７５】
以下、出力切替部６０について説明する。
出力切替部６０は、下位ビットポインタ（第３ポインタ）６１、上位ビットポインタ（第４ポインタ）６２、第２切替部６３、及び閾値設定レジスタ６４を備える。
下位ビットポインタ６１は、結合バッファ５０のうちの読出対象のバッファ５における読出位置を示す第３ポインタ値を保持する。つまり、下位ビットポインタ６１は、結合運用において、結合バッファ５０を構成するバッファ５−１〜５−３によって共通に用いられる読出制御ポインタである。なお、下位ビットポインタ６１は、図２中、下位ｂｉｔと表記している。
【００７６】
出力切替部６０は、下位ビットポインタ６１として、バッファ５に対応して備えられた読出制御ポインタ５ｂと同様の読出制御ポインタ６１を備えても良いし、結合バッファ５０を構成するバッファ５−１〜５−３のうちのいずれかのバッファ５に対応して備えられた読出制御ポインタ５ｂを転用しても良い。
以下、本実施形態において、下位ビットポインタ６１は、バッファ５−１が備える読出制御ポインタ５ｂ−１を転用したものとして説明する。なお、図２中、読出制御ポインタ５ｂ−１から下位ビットポインタ６１に向かう破線矢印は、読出制御ポインタ５ｂ−１が下位ビットポインタ６１として転用されることを示す。
【００７７】
下位ビットポインタ６１は、結合運用において、調停部６６から読出指示が入力され、結合バッファ５０を構成するバッファ５−１〜５−３からデータを読み出す際に、読出位置、つまりアドレス位置を指定する。また、下位ビットポインタ６１は、結合運用において、調停部６６から読出指示が入力されたとき、又は第２切替部６３によって読出対象のバッファ５からデータが読み出されたときに、第３ポインタ値を変化、例えばインクリメントさせる。
【００７８】
下位ビットポインタ６１の第３ポインタ値は、入力切替部４０の下位ビットポインタ４１の第１ポインタ値と同様に、第１閾値を超えた場合、下位ビットポインタ６１により、バッファ５における使用可能なアドレスの下限等の初期値にリセットされる。
また、下位ビットポインタ６１、例えば図２に示す読出制御ポインタ５ｂ−１と、結合バッファ５０を構成するバッファ５それぞれとは、ライン６１ａを介して接続される。下位ビットポインタ６１は、ライン６１ａを介して、読出対象のバッファ５からデータが読み出されるアドレス位置を指定したり、第３ポインタ値をインクリメントするトリガとして、データが読み出されたことを検出したりすることができる。
【００７９】
なお、読出制御ポインタ５ｂのうち、結合バッファ５０を構成するバッファ５に備えられるものであって、下位ビットポインタ６１として用いられないものについては、結合運用の初期設定等において、無効に設定され、結合運用の間は無効の状態が維持される。つまり、下位ビットポインタ６１として読出制御ポインタ５ｂ−１が用いられる場合、図示しない読出制御ポインタ５ｂ−２及び５ｂ−３は、結合運用において無効の状態が維持され、対応するバッファ５−２及び５−３からデータが読み出される際の動作を行なわない。
【００８０】
上位ビットポインタ６２は、下位ビットポインタ６１の第３ポインタ値に応じて値が変化、例えばインクリメントする第４ポインタ値を保持するポインタである。なお、上位ビットポインタ６２は、図２中、上位ｂｉｔと表記している。
具体的には、上位ビットポインタ６２は、結合運用において、第３ポインタ値が第１閾値に達すると、第４ポインタ値を例えばインクリメントさせる。換言すれば、上位ビットポインタ６２が保持する第４ポインタ値は、下位ビットポインタ６１が保持する第３ポインタ値の更に上位のビットを示すポインタ値であるといえる。
【００８１】
第４ポインタ値は、後述する第２切替部６３により、結合バッファ５０を構成するバッファ５−１〜５−３から読出対象のバッファ５を選択するために用いられる。
例えば、本実施形態においては、第２切替部６３により、読出対象のバッファ５として、第４ポインタ値が“00”のときバッファ５−１が選択され、第４ポインタ値が“01”のときバッファ５−２が選択され、第４ポインタ値が“10”のときバッファ５−３が選択される。つまり、出力切替部６０は、連続した第４ポインタ値それぞれと、結合バッファ５０を構成するバッファ５−１〜５−３それぞれとを対応付け、第４ポインタ値に応じて、対応するバッファ５を読出対象のバッファ５として選択する。
【００８２】
つまり、バッファ５に割り当てられる第４ポインタ値の設定によって、読出対象のバッファ５として選択されるバッファ５の順番を任意に決定することができる。
また、第４ポインタ値は、入力切替部４０の上位ビットポインタ４２と同様に、第２閾値を超えた場合、上位ビットポインタ６２により、例えば最小の値である“00”等の初期値にリセットされる。
【００８３】
従って、上位ビットポインタ６２では、第４ポインタ値に応じて、読出対象のバッファ５が、結合バッファ５０を構成するバッファ５−１〜５−３から所定の順序で周期的に選択される。
また、上位ビットポインタ６２は、通常運用において、第２切替部６３に対する第４ポインタ値の出力を抑止するように構成されても良い。
【００８４】
閾値設定レジスタ６４は、結合運用の初期設定等において、第１閾値及び第２閾値を設定され、保持する。下位ビットポインタ６１及び上位ビットポインタ６２は、それぞれ、結合運用において、閾値設定レジスタ６４に保持された第１閾値及び第２閾値に基づいて、上述した第３ポインタ値及び第４ポインタ値のインクリメントやリセット等の処理を行なう。
【００８５】
なお、閾値設定レジスタ４４及び６４のいずれか一方から、下位ビットポインタ４１及び６１並びに上位ビットポインタ４２及び６２が第１閾値及び第２閾値を取得可能な場合には、他方の閾値設定レジスタ４４又は６４を省略しても良い。
第２切替部６３は、結合運用において、上位ビットポインタ６２の第４ポインタ値の変化に応じて、結合バッファ５０における読出対象のバッファ５を結合バッファ５０のうちの他のバッファ５に切り替える。また、第２切替部６３は、読出対象のバッファ５における第３ポインタ値が示す読出位置からデータを読み出して出力ポート７に出力する。
【００８６】
第２切替部６３は、セレクタ６３ａ、及びデコーダ６３ｂを備える。なお、デコーダ６３ｂは、図２中、ＤＥＣと表記している。
セレクタ６３ａは、バッファ５−１〜５−３にそれぞれ対応する読出パス６Ａ〜６Ｃが入力側に接続される一方、出力パス７Ａが出力側に接続される。
デコーダ６３ｂは、結合運用において、上位ビットポインタ６２の第４ポインタ値に基づいて読出対象のバッファ５を選択するとともに、読出対象のバッファ５からデータを読み出すように、セレクタ６３ａに対して制御信号（選択信号）を出力する。
【００８７】
具体的には、デコーダ６３ｂは、結合運用において、第４ポインタ値に対応したバッファ５を読出対象のバッファ５として選択する。そして、デコーダ６３ｂは、セレクタ６３ａに対して、読出対象のバッファ５に接続された読出パス６Ａ〜６Ｃを選択するように、制御信号を出力する。
例えば、本実施形態においては、デコーダ６３ｂは、第４ポインタ値が“00”のとき読出対象のバッファ５としてバッファ５−１を選択し、セレクタ６３ａに対して、読出パス６Ａを選択することを示す制御信号を出力する。
【００８８】
セレクタ６３ａは、デコーダ６３ｂからの制御信号によって選択された読出パス６Ａを、入力側に接続されたパスから選択し、選択した読出パス６Ａを介して、読出対象のバッファ５からデータを読み出して、出力側に接続された出力パス７Ａに出力する。
第４ポインタ値が“01”又は“10”であり、デコーダ６３ｂにより、読出対象のバッファ５としてバッファ５−２又は５−３が選択された場合についても、デコーダ６３ｂ及びセレクタ６３ａの処理は、第４ポインタ値が“00”の場合と同様である。
【００８９】
つまり、本実施形態では、デコーダ６３ｂは、結合運用において、第２ポインタ値が“00”のとき読出パス６Ａを選択し、“01”のとき読出パス６Ｂを選択し、“10”のとき読出パス６Ｃを選択するように、セレクタ６３ａに出力する制御信号を制御する。すなわち、デコーダ６３ｂによる制御信号の制御によって、読出対象のバッファ５からデータを読み出す読出パス６Ａ〜６Ｃが選択される。
【００９０】
なお、出力切替部６０は、上述した第４ポインタ値と、読出対象のバッファ５として選択されるバッファ５−１〜５−３、つまり読出パス６Ａ〜６Ｃとの対応関係を示す情報を保持するレジスタ等を備えても良い。このレジスタには、例えば結合運用の初期設定等において、第４ポインタ値とバッファ５、つまり読出パス６Ａ〜６Ｃとの対応関係が設定される。
【００９１】
また、デコーダ６３ｂは、調停部６６と接続され、通常運用において、調停部６６から読出対象のバッファ５を指定した読出指示を入力されると、読出対象のバッファ５からデータを読み出すように、セレクタ６３ａに対して制御信号（選択信号）を出力する。
つまり、通常運用において、セレクタ６３ａは、調停部６６からの読出指示に基づくデコーダ６３ｂからの制御信号に応じて、デコーダ６３ｂにより選択された読出パス６Ａ〜６Ｃを、入力側に接続されたパスから選択する。そして、セレクタ６３ａは、選択した読出パス６Ａ〜６Ｃを介して、読出対象のバッファ５からデータを読み出して、出力側に接続された出力パス７Ａに出力する。
【００９２】
なお、出力切替部６０は、入力切替部４０と同様に、デコーダ６３ｂによる第４ポインタ値に基づくパスセレクトについての有効／無効フラグを備え、第４ポインタ値に基づいたセレクタ６３ａの選択の有効化／無効化の切り替えを管理することができる。
つまり、デコーダ６３ｂは、有効／無効フラグの値によって、結合運用及び通常運用の切り替えを行なうことができる。
【００９３】
有効／無効フラグは、例えば、結合運用の初期設定等に有効に設定され、通常運用の初期設定等に無効に設定される。
なお、有効／無効フラグが備えられない場合には、デコーダ６３ｂは、第４ポインタ値が上位ビットポインタ６２から入力されない場合や、調停部６６から読出対象のバッファ５を指定した読出指示が入力された場合に、通常運用であると判断しても良い。
【００９４】
なお、調停部６６は、通常運用において、デコーダ６３ｂに対して読出対象のバッファ５を指定する情報を出力する代わりに、セレクタ６３ａに対して、読出対象のバッファ５に対応した読出パス６Ａ〜６Ｃを選択するように、制御信号を出力しても良い。
〔１−３〕バッファ装置の動作
次に、上述の如く構成された本実施形態の一例としてのバッファ装置２における動作例を、図３〜図６を参照しながら説明する。
【００９５】
図３は、本実施形態のバッファ装置２による通常運用及び結合運用の初期設定手順を説明するフローチャートである。
図４は、本実施形態のバッファ装置２の入力制御部４による結合運用における動作例を説明するフローチャートであり、図５は、本実施形態のバッファ装置２の出力制御部６による結合運用における動作例を説明するフローチャートである。
【００９６】
図６は、図２に示すバッファ装置２の結合運用における動作例を説明する図である。
まず、図３を参照しながら、本実施形態の一例としてのバッファ装置２における初期設定手順を説明する。
はじめに、ファームウェアにより、バッファ装置２が１入力１出力を行なうデータ伝送用の受信バッファとして用いられるか否か、つまり結合運用を行なうか否かが判断される（ステップＳ１）。この判断は、システム内のＸＢ等に設けられた、出力バッファ機構として機能するバッファ装置２ごとに、接続トポロジに応じて行なわれる。
【００９７】
なお、ファームウェアによるステップＳ１の判断は、システムの停止中に行なわれても良いし、システムの運用中に、バッファ装置２に入力されるデータを一時的に遮断して行なわれても良い。
ステップＳ１において、バッファ装置２が１入力１出力を行なうデータ伝送用の受信バッファとして用いられると判断された場合には（ステップＳ１のＹｅｓルート）、ファームウェアにより、結合運用の初期設定として、バッファ装置２が１入力１出力を行なう際にデータが入力される入力ポート３が特定される。そして、ファームウェアにより、特定した入力ポート３を示す情報が設定レジスタ４７に設定され、特定した入力ポート３が結合運用において固定的に用いられる（ステップＳ２）。つまり、ファームウェアにより、特定の入力ポート３から入力されたデータを入力切替部４０に出力する結合パス３Ｄが有効化される。
【００９８】
次いで、ファームウェアにより、入力制御部４及び出力制御部６の有効／無効フラグが有効に設定される（ステップＳ３）。すなわち、デコーダ４３ｄ及び６３ｂによる、第２及び第４ポインタ値によるパスセレクト、つまり、第２ポインタ値に基づいたセレクタ４３ａ〜４３ｃの選択及び第４ポインタ値に基づいた読出パス６Ａ〜６Ｃの選択が有効化される。
【００９９】
なお、下位ビットポインタ４１及び６１が書込制御ポインタ５ａ及び読出制御ポインタ５ｂから転用される場合には、ファームウェアにより、転用される書込制御ポインタ５ａ及び読出制御ポインタ５ｂに対して、下位ビットポインタ４１及び６１として用いるための設定が有効化される。また、ファームウェアにより、転用されない書込制御ポインタ５ａ及び読出制御ポインタ５ｂが無効化される。
【０１００】
ステップＳ３の処理が行なわれると、バッファ装置２において結合運用が行なわれ、特定の入力ポート３から入力されたデータの結合バッファ５０への書込制御、及び結合バッファ５０からのデータ読出制御が行なわれる（ステップＳ４）。なお、ステップＳ４の書込制御の動作例については、図４のステップＳ８〜Ｓ１４及び図６を参照して後述し、読出制御の動作例については、図５のステップＳ１５〜Ｓ２１及び図６を参照して後述する。
【０１０１】
一方、ステップＳ１において、バッファ装置２が１入力１出力を行なうデータ伝送用の受信バッファとして用いられないと判断された場合には（ステップＳ１のＮｏルート）、ファームウェアにより、通常運用の初期設定として、設定レジスタ４７に設定された値がリセットされる（ステップＳ５）。つまり、ファームウェアにより、結合パス３Ｄが無効化され、全ての入力ポート３が使用可能に設定される。
【０１０２】
次いで、ファームウェアにより、入力制御部４及び出力制御部６の有効／無効フラグが無効に設定される（ステップＳ６）。すなわち、デコーダ４３ｄ及び６３ｂによる、第２及び第４ポインタ値によるパスセレクト、つまり、第２ポインタ値に基づいたセレクタ４３ａ〜４３ｃの選択及び第４ポインタ値に基づいた読出パス６Ａ〜６Ｃの選択が無効化される。
【０１０３】
ステップＳ６の処理が行なわれると、バッファ装置２において、通常運用として、入力ポート３から入力パス３Ａ〜３Ｃを介して入力されたデータが、デコーダ４３ｄによるセレクタ４３ａ〜４３ｃに対する制御により、対応するバッファ５に対して書き込まれる。また、バッファ装置２において、通常運用として、調停部６６及びデコーダ６３ｂによる読出パス６Ａ〜６Ｃの制御により、読出指示に応じた読出対象のバッファ５からデータの読み出しが行なわれる（ステップＳ７）。
【０１０４】
次に、図４及び図６を参照しながら、本実施形態のバッファ装置２の入力制御部４による結合運用における動作例を説明する。
以下、図６に示すバッファ装置２は、図３のステップＳ１〜Ｓ３の処理が完了しており、入力ポート３−１を特定の入力ポート３としてステップＳ４の結合運用が行なわれる場合について説明する。
【０１０５】
はじめに、図４に示すように、入力制御部４は、入力ポート３からのデータの入力待ちの状態である（ステップＳ８）。入力ポート３−１にデータの入力があった場合、入力制御部４により、上位ビットポインタ４２の第２ポインタ値が示す書込対象のバッファ５における、下位ビットポインタ４１の第１ポインタ値が示すアドレス位置に、データが書き込まれる（ステップＳ９）。
【０１０６】
図６に示す例においては、入力ポート３−１から入力されたデータが、選択部４８のセレクタ４８ａに入力され、結合パス３Ｄを介して、第１切替部４３に入力される。
バッファ装置２の初期状態では、第１ポインタ値及び第２ポインタ値は、いずれも全ビットが“0”である。従って、書込対象のバッファ５は、第２ポインタ値“00”に対応するバッファ５−１となり、結合パス３Ｄからの入力データは、デコーダ４３ｄにより選択されたセレクタ４３ａにより、バッファ５−１に書き込まれる（図６の（１）参照）。
【０１０７】
第１ポインタ値は、結合バッファ５０を構成するバッファ５−１〜５−３のいずれかのバッファ５にデータが書き込まれるとインクリメントされる（ステップＳ１０）。また、バッファ５にデータが書き込まれるたびに、下位ビットポインタ４２により、第１ポインタ値が第１閾値を超えたか否かが判断される（ステップＳ１１）。第１ポインタ値が第１閾値を超えていないと判断されると（ステップＳ１１のＮｏルート）、次のデータの入力待ちとなり、ステップＳ８に移行する。
【０１０８】
一方、第１ポインタ値が第１閾値を超えたと判断されると（ステップＳ１１のＹｅｓルート）、バッファ５−１がフルの状態になり、下位ビットポインタ４１によって、第１ポインタ値の全ビットが“0”にリセットされる。また、上位ビットポインタ４２の第２ポインタ値がインクリメントされる（ステップＳ１２）。
また、第２ポインタ値がインクリメントされるたびに、第２ポインタ値が第２閾値を超えたか否かが判断される（ステップＳ１３）。第２ポインタ値が第２閾値を超えていないと判断されると（ステップＳ１３のＮｏルート）、次のデータの入力待ちとなり、ステップＳ８に移行する。
【０１０９】
第２ポインタ値がインクリメントされることにより、書込対象のバッファ５−１は、第２ポインタ値“01”に対応するバッファ５−２に切り替わる。従って、結合パス３Ｄからの入力データは、デコーダ４３ｄにより選択されたセレクタ４３ｂにより、バッファ５−２に書き込まれる（図６の（２）参照）。
また、第１ポインタ値が第１閾値を超え、バッファ５−２がフルの状態になると、第１ポインタ値の全ビットが“0”にリセットされるとともに、第２ポインタ値がインクリメントされる。第２ポインタ値がインクリメントされることにより、書込対象のバッファ５−２は、第２ポインタ値“10”に対応するバッファ５−３に切り替わる。従って、結合パス３Ｄからの入力データは、デコーダ４３ｄにより選択されたセレクタ４３ｃにより、バッファ５−３に書き込まれる（図６の（３）参照）。
【０１１０】
さらに、第１ポインタ値が第１閾値を超え、バッファ５−３がフルの状態になると、第１ポインタ値の全ビットが“0”にリセットされるとともに、第２ポインタ値がインクリメントされて“11”になる。このとき、第２ポインタ値は第２閾値を超えるため（ステップＳ１３のＹｅｓルート）、上位ビットポインタ４２により第２ポインタ値が“00”にリセットされ（ステップＳ１４）、書込対象のバッファ５−３が、バッファ５−１に切り替わる。従って、結合パス３Ｄからの入力データは、デコーダ４３ｄにより選択されたセレクタ４３ａにより、バッファ５−１に書き込まれる（図６の（１）参照）。
【０１１１】
上述のように、結合運用において、入力制御部４は、入力パス３Ａ〜３Ｃを併用せず、設定レジスタ４７に設定された特定の入力ポート３からのデータを結合パス３Ｄに導く。また、結合パス３Ｄを介して第１切替部４３に入力されるデータは、第１切替部４３により、第１及び第２ポインタ値の変化に応じて書込対象のバッファ５が切り替えられて、結合バッファ５０に書き込まれる。
【０１１２】
次に、図５及び図６を参照しながら、本実施形態のバッファ装置２の出力制御部６による結合運用における動作例を説明する。
はじめに、図５に示すように、出力切替部６０は、調停部６６からの読出指示待ちの状態である（ステップＳ１５）。読出指示が出力切替部６０に入力された場合、出力制御部６により、上位ビットポインタ６２の第４ポインタ値が示す読出対象のバッファ５における、下位ビットポインタ６１の第３ポインタ値が示すアドレス位置から、データが読み出される（ステップＳ１６）。
【０１１３】
図６に示す例において、バッファ装置２の初期状態では、下位ビットポインタ６１及び上位ビットポインタ６２の第３ポインタ値及び第４ポインタ値は、いずれも全ビットが“0”である。従って、読出対象のバッファ５は、第４ポインタ値“00”に対応するバッファ５−１となり、デコーダ６３ｂによる制御信号を入力されたセレクタ６３ａによって、バッファ５−１に書き込まれたデータが読出パス６Ａを介して読み出される（図６の（４）参照）。
【０１１４】
第３ポインタ値は、調停部６６から読出指示を入力されると、下位ビットポインタ６１によりインクリメントされる（ステップＳ１７）。また、第３ポインタ値がインクリメントされるたびに、下位ビットポインタ６２により、第３ポインタ値が第１閾値を超えたか否かが判断される（ステップＳ１８）。第３ポインタ値が第１閾値を超えていないと判断されると（ステップＳ１８のＮｏルート）、次の読出指示待ちとなり、ステップＳ１５に移行する。
【０１１５】
一方、第３ポインタ値が第１閾値を超えたと判断されると（ステップＳ１８のＹｅｓルート）、バッファ５−１のデータ格納領域の最後までデータが読み出された状態になり、下位ビットポインタ６１によって、第３ポインタ値の全ビットが“0”にリセットされる。また、上位ビットポインタ６２の第４ポインタ値がインクリメントされる（ステップＳ１９）。
【０１１６】
また、第４ポインタ値がインクリメントされるたびに、第４ポインタ値が第２閾値を超えたか否かが判断される（ステップＳ２０）。第４ポインタ値が第２閾値を超えていないと判断されると（ステップＳ２０のＮｏルート）、次の読出指示待ちとなり、ステップＳ１５に移行する。
第４ポインタ値がインクリメントされることにより、読出対象のバッファ５−１は、第４ポインタ値“01”に対応するバッファ５−２に切り替わる。従って、デコーダ６３ｂによる制御信号を入力されたセレクタ６３ａによって、バッファ５−２に書き込まれたデータが読出パス６Ｂを介して読み出される（図６の（５）参照）。
【０１１７】
また、第３ポインタ値が第１閾値を超え、バッファ５−２のデータ格納領域の最後までデータが読み出された状態になると、第３ポインタ値の全ビットが“0”にリセットされるとともに、第４ポインタ値がインクリメントされる。第４ポインタ値がインクリメントされることにより、読出対象のバッファ５−３は、第２ポインタ値“10”に対応するバッファ５−３に切り替わる。従って、デコーダ６３ｂによる制御信号を入力されたセレクタ６３ａによって、バッファ５−３に書き込まれたデータが読出パス６Ｃを介して読み出される（図６の（６）参照）。
【０１１８】
さらに、第３ポインタ値が第１閾値を超え、バッファ５−３のデータ格納領域の最後までデータが読み出された状態になると、第３ポインタ値の全ビットが“0”にリセットされるとともに、第４ポインタ値がインクリメントされて“11”になる。このとき、第４ポインタ値は第２閾値を超えるため（ステップＳ２０のＹｅｓルート）、上位ビットポインタ６２により第４ポインタ値が“00”にリセットされ（ステップＳ２１）、読出対象のバッファ５−３が、バッファ５−１に切り替わる。従って、デコーダ６３ｂによる制御信号を入力されたセレクタ６３ａによって、バッファ５−１に書き込まれたデータが読出パス６Ａを介して読み出される（図６の（４）参照）。
【０１１９】
上述のように、結合バッファ５０に書き込まれたデータは、出力制御部６により、第３及び第４ポインタ値の変化に応じて読出対象のバッファ５が切り替えられ、対応する読出パス６Ａ〜６Ｃを介して読み出されて、出力ポート７に出力される。
上述の如く構成された本実施形態の一例としてのバッファ装置２によれば、バッファ制御装置である入力制御部４及び出力制御部６を備えることにより、入力制御部４及び出力制御部６に対して結合運用を行なうための設定を行なうだけで、特定の入力ポート３に対して結合バッファ５０を割り当てることができる。すなわち、バッファ装置２によれば、複数の入力ポート３からの入力データをセレクトして、出力パス７に出力するバッファ構造を、容易に１つのＦＩＦＯ構造に切り替えることができる。
【０１２０】
つまり、複数の入力ポート３及び少なくとも１つの出力ポート７のバッファ装置に対して、入力制御部４及び出力制御部６による切り替え機構を設けることにより、従来よりも長距離の１対１伝送が可能になる。従って、本実施形態の一例としてのバッファ装置２によれば、単純な入出力ポートの切り替え機構を設けることによって、簡素な構成、且つ簡便な制御で、バッファ装置２の例えば長距離伝送に用いられるバッファ容量を容易に確保することができ、従来よりも長距離での１入力１出力を行なうデータ伝送が可能となる。
【０１２１】
また、例えば、バッファ装置２は、図７に例示する情報処理システム１において、ＸＢ等に備えることができる。
図７は、本実施形態に係る情報処理システム１の構成例を示す図である。なお、図７における矢印の向きは、データの伝送方向を示す。また、図７では、図の簡略化のため、ＸＢ１２−１の内部の構成、及びＸＢ１２−２のバッファ装置２−１〜２−４の一部の構成を省略している。
【０１２２】
上述した図１７に示すＸＢ１２０は、予めバッファ装置２００−１〜２００−４における入力ポート３００−１〜３００−３とバッファ５００−１〜５００−３とが対応付けられた専用のチップとして構成されることが多い。
上述した図１８に示すＸＢ１２０−１及び１２０−２は、図１７に示すＸＢ１２０と同様の構成であるが、図１８に示すＳＢ１１０−４〜１１０−６は、バッファ装置２００−２〜２００−４を介さずに相互に通信可能に接続されている。つまり、ＳＢ１１０−１〜１１０−３間の通信及びＳＢ１１０−４〜１１０−６間の通信は、それぞれＸＢ１２０−１及び１２０−２を介さないが、距離の離れたＳＢ１１０−１〜１１０−３群とＳＢ１１０−４〜１１０−６群との間の通信はＸＢ１２０−１及び１２０−２を介して行なわれる。
【０１２３】
従って、図１８に示すバッファ装置２００−２〜２００−４におけるバッファＤ、Ｅ、Ｇ、Ｉ、Ｋ、Ｌは、ＸＢ１２０−１及び１２０−２において未使用のバッファとなる。
近年、コスト削減等の理由により、情報処理システム等の分野においても部品の共通化が推進されており、例えば上述した図１７及び図１８に示す情報処理システム１００−１及び１００−２のどちらの構成においても、同一のＸＢチップを使用したいという要望がある。
【０１２４】
本実施形態の一例としてのバッファ装置２によれば、ある特定の構成に対してのみ最適化されたバッファ構造を持っていたＸＢチップ等のＬＳＩ（Large Scale Integration）に、例えば図７に示すように、構成に応じた適切なバッファ構造を持たせることができる。
例えば、図７に例示する本実施形態の一例としての情報処理システム１は、図１８に例示する情報処理システム１００−２と同様の接続関係を持つＳＢ１１−１〜１１−６並びにＸＢ１２−１及び１２−２を備える。
【０１２５】
ＸＢ１２−２は、本実施形態に係るバッファ装置２にそれぞれ対応するバッファ装置２−１〜２−４を備える。また、ＸＢ１２−１は、図７において図示は省略しているが、ＸＢ１２−２と同様の構成である。
図７に示すように、ＸＢ１２−２におけるバッファ装置２−１の出力側、つまり図示しない出力ポート７は、長距離伝送パスを介してＸＢ１２−１に接続され、各バッファ装置２−２〜２−４の出力側は、対応するＳＢ１１−４〜１１−６に接続される。他方、ＸＢ１２−２におけるバッファ装置２−１の入力側、つまり図示しない入力ポート３−１〜３−３は、ＳＢ１１−４〜１１−６にそれぞれ接続され、各バッファ装置２−２〜２−４の入力側は、長距離伝送パスを介してＸＢ１２−１に接続される。
【０１２６】
つまり、図７に例示するように、バッファ装置２−２は、ＸＢ１２−１から長距離伝送パス及び特定の入力ポート３を介して入力されたデータを、結合バッファ５０として構成されたバッファＤ〜Ｆに対して書き込むことができる。同様に、バッファ装置２−３及び２−４は、ＸＢ１２−１から長距離伝送パス及び特定の入力ポート３を介して入力されたデータを、結合バッファ５０として構成されたバッファＧ〜Ｉ及びＪ〜Ｌに、それぞれ書き込むことができる。
【０１２７】
図７を用いて述べたように、本実施形態に係るバッファ装置２を用いることにより、例えば上述した図１７及び図１８に示す情報処理システム１００−１及び１００−２のどちらの構成であっても同一のＸＢチップにより制御が可能となる。従って、本実施形態に係るバッファ装置２によれば、情報処理システムにおいて、簡素な構成及び簡便な制御により、従来よりもＬＳＩを汎用的に用いることが可能となる。すなわち、本実施形態に係るバッファ装置２は、構成が多岐にわたるＸＢチップに適用される際に、特に有効である。
【０１２８】
また、本実施形態に係るバッファ装置２の入力及び出力切替部４０及び６０によれば、バッファ５におけるデータの書込位置及び読出位置が、下位ビットポインタ４１及び６１が保持する第１及び第３ポインタ値が示す位置となる。また、書込対象及び読出対象のバッファ５は、上位ビットポインタ４２及び６２が保持する第２及び第４ポインタ値に応じて選択される。そして、第１切替部４３により、書込位置を示す情報に応じて、書込対象のバッファ５が結合バッファ５０のうちの他のバッファ５に切り替えられるとともに、第２切替部６３により、読出対象のバッファ５が結合バッファ５０のうちの他のバッファ５に切り替えられる。
【０１２９】
従って、結合運用において、下位ビットポインタ４１及び６１、上位ビットポインタ４２及び６２、並びに第１及び第２切替部４３及び６３を備えるだけで、複数のバッファ５を結合した結合バッファ５０に対して、簡素な構成でデータの書き込み及び読み出しを行なうことができる。
さらに、下位ビットポインタ４１及び６１には、それぞれ結合バッファ５０のうちのいずれかのバッファ５に対応して備えられた書込及び読出制御ポインタ５ａ及び５ｂを転用することができる。
【０１３０】
従って、下位ビットポインタ４１及び６１を新たに設けずに済み、バッファ装置２の製造コストを低減することができる。
また、本実施形態に係るバッファ装置２の入力設定部４６によれば、設定レジスタ４７により、結合バッファ５０に割り当てられた特定の入力ポート３を示す情報が保持され、選択部４８により、複数の入力ポート３のうちの特定の入力ポート３から入力されたデータが、入力切替部４０に出力される。
【０１３１】
従って、設定レジスタ４７に特定の入力ポート３を示す情報を設定するだけの簡便な制御により、結合バッファ５０に割り当てられる入力ポート３を決定することができる。
さらに、結合バッファ５０を構成するバッファ５及び結合バッファ５０に割り当てられた入力ポート３は、バッファ装置２を監視するファームウェアにより設定及び更新することができる。
【０１３２】
従って、バッファ装置２が適用された情報処理システム１等の接続トポロジが変更された場合にも、ファームウェアによる結合バッファ５０及び特定の入力ポート３の設定の変更により、システム構成の変更に柔軟にすることができる。また、バッファ装置２が適用された情報処理システム１等が運用中であっても、システムをダウンさせることなく、動的に設定変更ができる。
【０１３３】
〔２〕変形例
上述の如く構成された本実施形態の一例としてのバッファ装置２は、結合運用において、特定の一の入力ポート３を用いた１入力１出力を行なう受信バッファとして機能させることができる。
しかし、情報処理システム１の構成、すなわち接続トポロジによっては、バッファ装置２の入力ポート３のうちの通常運用よりも少ない数の入力ポート３を用いて、データ伝送が行なわれることも考えられる。
【０１３４】
つまり、ファームウェアは、接続トポロジに応じて、上述したバッファ装置２において、全ての入力ポート３を用いた通常運用を行なうか、又は１の入力ポート３のみを用いた結合運用を行なうか、を選択することになる。一方、ファームウェアは、一部の入力ポート３及びバッファ５が使用されない場合には、上述したバッファ装置２において、一部の入力ポート３及びバッファ５が使用されないまま、通常運用を行なうことを選択することになる。
【０１３５】
本変形例に係るバッファ装置２によれば、バッファ装置２における入力ポート３の数ｎよりも少ない数ｍの入力ポート３及びバッファ５が使用される場合においても、複数のバッファ５を論理的に結合して、ｍ入力１出力を行なう受信バッファとして機能することができる。以下、ｍ入力１出力を行なう運用を、混合運用という。
以下、本変形例に係るバッファ装置２について、図８〜図１４を参照しながら説明する。
【０１３６】
図８は、一実施形態に係るバッファ装置２の構成の変形例を示す図である。
図９及び図１０は、本変形例のバッファ装置２の比較回路４３ｅ及び６３ｃにおけるパスセレクト例を示す図である。
図１１は、本変形例のバッファ装置２による通常運用、結合運用及び混合運用の初期設定手順を説明するフローチャートである。
【０１３７】
図１２は、本変形例のバッファ装置２の入力制御部４による混合運用における動作例を説明するフローチャートであり、図１３は、本変形例のバッファ装置２の出力制御部６による混合運用における動作例を説明するフローチャートである。
図１４及び図１５は、図８に示すバッファ装置２の混合運用における動作例を説明する図である。
【０１３８】
はじめに、図８に示す本変形例に係るバッファ装置２の構成例について説明する。
本変形例に係るバッファ装置２は、入力ポート３−３が使用されず、入力制御部４により、入力ポート３−１から入力されるデータが、バッファ５−１及び５−３に選択的に書き込まれるとともに、入力ポート３−２から入力されるデータが通常運用と同様にバッファ５−２に書き込まれる。
【０１３９】
つまり、バッファ５−１及び５−３により、結合バッファ５０が構成される。
また、本変形例に係るバッファ装置２は、出力制御部６により、結合バッファ５０を構成するバッファ５−１及び５−３と、バッファ５−２とから選択的にデータが読み出され、出力ポート７から出力される。
入力制御部４の入力切替部４０は、複数パス設定レジスタ４５を備えるとともに、第１切替部４３は、デコーダ４３ｄに代えて比較回路４３ｅを備える。
【０１４０】
出力制御部６の出力切替部６０は、複数パス設定レジスタ６５を備えるとともに、第２切替部６３は、デコーダ６３ｂに代えて比較回路６３ｃを備える。
また、本変形例に係る調停部６６は、混合運用において、出力切替部６０に対して、読出対象のバッファ５を指定した読出指示を出力する。すなわち、本変形例に係る調停部６６は、図２に示すバッファ装置２の通常運用における調停部６６と同様に、バッファ５からのデータの読出タイミングごとに、出力切替部６０に対して、選択した読出対象のバッファ５に書き込まれたデータの読出指示を出力（発行）する。
【０１４１】
本変形例に係るバッファ装置２は、図２に示すバッファ装置２と上述した点が異なるが、その他の構成は同一又は略同一である。
なお、図８において、実際には、下位ビットポインタ４１，６１が結合バッファ５０を構成するバッファ５の書込，読出位置を指定するためのライン４１ａ，６１ａは、それぞれ図２に示すバッファ装置２と同様に、下位ビットポインタ４１，６１とバッファ５−２とを接続する。本変形例においては、バッファ５−２は結合バッファ５０に含まれないため、説明の便宜上、下位ビットポインタ４１，６１とバッファ５−２とを接続するライン４１ａ，６１ａを省略している。
【０１４２】
また、図８において、実際には、調停部６６が通常運用においてバッファ５の読出制御ポインタ５ｂをインクリメントするためのラインは、調停部６６と各読出制御ポインタ５ｂ−１及び５ｂ−３それぞれとを接続する。本変形例においては、読出制御ポインタ５ｂ−１及び５ｂ−３は結合バッファ５０を構成するバッファ５に対応するため、説明の便宜上、調停部６６と読出制御ポインタ５ｂ−１及び５ｂ−３とを接続するラインを省略している。
【０１４３】
複数パス設定レジスタ４５は、バッファ５−１〜５−３それぞれ、つまりセレクタ４３ａ〜４３ｃそれぞれに対応した第１バッファ選択情報を保持するレジスタである。
第１バッファ選択情報は、第２ポインタ値と、書込対象のバッファ５として選択されるバッファ５−１〜５−３、つまりセレクタ４３ａ〜４３ｃとの対応関係を示すものであり、混合運用の初期設定等において、ファームウェアにより設定される。
【０１４４】
つまり、ファームウェアは、複数パス設定レジスタ４５に設定されるレジスタ値によって、書込対象のバッファ５として選択されるバッファ５の順番を任意に決定することができる。
本変形例において、第１バッファ選択情報には、図９に示すように、バッファ５−１、つまりセレクタ４３ａに対応する第２ポインタ値として“000”が、バッファ５−２、つまりセレクタ４３ｂに対応する第２ポインタ値として“111”が、バッファ５−３、つまりセレクタ４３ｃに対応する第２ポインタ値として“001”が、それぞれレジスタ値として設定される。
【０１４５】
比較回路４３ｅは、上位ビットポインタ４２の第２ポインタ値と一致する第１バッファ選択情報に対応するバッファ５を、書込対象のバッファ５として選択する。
すなわち、比較回路４３ｅは、図２に示すバッファ装置２におけるデコーダ４３ｄと同様に、第２ポインタ値の変化に応じて、書込対象のバッファ５を切り替えるものである。
ここで、セレクタ４３ｂに対応付けられるレジスタ値“111”は、特殊ビットであり、第２閾値は、混合運用の初期設定等において、ファームウェアにより、閾値設定レジスタ４４に対して特殊ビットの値以下となるように設定される。
【０１４６】
従って、結合バッファ５０に含まれないバッファ５−２は、混合運用において、上位ビットポインタ４２の第２ポインタ値によって指定されない。つまり、比較回路４３ｅは、バッファ５−２に対応するセレクタ４３ｂに対しては、結合バス３Ｄを介して入力されたデータを選択させる制御信号を出力しない。換言すれば、比較回路４３ｅは、混合運用において、特殊ビットが設定されたセレクタ４３ｂに対応するバッファ５−２を、特定の入力ポート３−１から入力されたデータに係る書込対象のバッファ５として選択することを抑止する。
【０１４７】
本変形例においては、図９に示すように、第２ポインタ値は“000”又は“001”となり、第２閾値は“001”となる。従って、比較回路４３ｅは、第２ポインタ値の変化に応じて、書込対象のバッファ５としてバッファ５−１又は５−３を選択するように、セレクタ４３ａ又は４３ｃに対して、結合パス３Ｄを選択させる制御信号を出力する。
一方、比較回路４３ｅは、第１バッファ選択情報に特殊ビットが設定されているセレクタ４３ｂに対して、対応する入力パス３Ａ〜３Ｃを選択させる制御信号を出力する。
【０１４８】
以上のように、複数パス設定レジスタ４５が保持する第１バッファ選択情報には、混合運用の初期設定等において、通常運用と同様の入出力を行なわせるバッファ５に対応するセレクタ４３ａ〜４３ｃに対して、特殊ビットが設定される。
複数パス設定レジスタ６５は、バッファ５−１〜５−３それぞれ、つまり読出パス６Ａ〜６Ｃそれぞれに対応した第２バッファ選択情報を保持するレジスタである。
【０１４９】
第２バッファ選択情報は、第４ポインタ値と、読出対象のバッファ５として選択されるバッファ５−１〜５−３、つまり読出パス６Ａ〜６Ｃとの対応関係を示すものであり、混合運用の初期設定等において、ファームウェアにより設定される。
つまり、ファームウェアは、複数パス設定レジスタ６５に設定されるレジスタ値によって、読出対象のバッファ５として選択されるバッファ５の順番を任意に決定することができる。
【０１５０】
本変形例において、第２バッファ選択情報には、第１バッファ選択情報と同様、図１０に示すように、バッファ５−１、つまり読出パス６Ａに対応する第４ポインタ値として“000”が、バッファ５−２、つまり読出パス６Ｂに対応する第４ポインタ値として“111”が、バッファ５−３、つまり読出パス６Ｃに対応する第４ポインタ値として“001”が、それぞれレジスタ値として設定される。
【０１５１】
比較回路６３ｃは、調停部６６から読出対象のバッファ５が指定された読出指示を入力されると、上位ビットポインタ６２の第４ポインタ値と、読出対象のバッファ５に設定された第２バッファ選択情報とが一致する場合に、読出対象のバッファ５からデータを読み出すべく、セレクタ６３ａに制御信号を出力する。
ここで、読出パス６Ｂに対応付けられるレジスタ値“111”は、特殊ビットであり、第２閾値は、閾値設定レジスタ６４において、特殊ビットの値以下となるように設定される。
【０１５２】
従って、結合バッファ５０に含まれないバッファ５−２は、混合運用において、上位ビットポインタ６２の第４ポインタ値によって指定されない。つまり、本変形例においては、第２閾値は“010”となり、図１０に示すように、第４ポインタ値は“000”又は“001”となる。
比較回路６３ｃは、調停部６６からの読出指示及び第４ポインタ値の変化に応じて、読出対象のバッファ５としてバッファ５−１又は５−３を選択するように、セレクタ６３ａに対して、読出パス６Ａ又は６Ｃを選択させる制御信号を出力する。
【０１５３】
一方、比較回路６３ｃは、特殊ビットが設定されている読出パス６Ｂに対応するバッファ５が、調停部６６から入力された読出指示において読出対象のバッファ５として選択されると、第４ポインタ値に関わらず、セレクタ６３ａに対して、読出パス６Ｂを選択させる制御信号を出力する。
つまり、比較回路６３ｃは、調停部６６からの読出指示において、結合バッファ５０を構成するバッファ５が読出対象のバッファ５に指定された場合は、第２バッファ選択情報と第４ポインタ値とを比較して、一致した場合に、読出対象のバッファ５からデータを読み出す制御信号をセレクタ６３ａに出力する。一方、比較回路６３ｃは、調停部６６からの読出指示において、結合バッファ５０以外のバッファ５が読出対象のバッファ５に指定された場合は、第２バッファ選択情報と第４ポインタ値との比較を行なわずに、読出対象のバッファ５からデータを読み出す制御信号をセレクタ６３ａに出力する。
【０１５４】
次に、本変形例に係るバッファ装置２の動作例について、図１１〜図１４を参照して説明する。
図１１に示す動作例は、図３に示す動作例に対して、新たにステップＳ１−２，Ｓ２２〜Ｓ２４を加えたものである。なお、ステップＳ１−１のＹｅｓルート、ステップＳ１−２のＹｅｓルート、及びステップＳ２〜Ｓ５の処理は、図３に示す動作例と同様のため、詳細な説明は省略する。
【０１５５】
はじめに、ステップＳ１−１において、ファームウェアにより、バッファ装置２が１対１伝送用の受信バッファとして用いられないと判断された場合には（ステップＳ１−１のＮｏルート）、さらに、全ての入力ポート３が使用されるか否か、つまり通常運用が行なわれるか否かが判断される（ステップＳ１−２）。
ファームウェアにより、全ての入力ポート３が使用されないと判断された場合には（ステップＳ１−２のＮｏルート）、ファームウェアにより、混合運用の初期設定として、バッファ装置２がｍ入力１出力を行なう際に、結合バッファ５０に書き込まれるデータが入力される入力ポート３が特定される。そして、ファームウェアにより、特定した入力ポート３を示す情報が設定レジスタ４７に設定され、特定した入力ポート３が結合バッファ５０に対する書き込みに固定的に用いられる（ステップＳ２２）。つまり、ファームウェアにより、特定の入力ポート３から入力されたデータを入力切替部４０に出力する結合パス３Ｄが有効化される。
【０１５６】
次いで、ファームウェアにより、入力制御部４及び出力制御部６の有効／無効フラグが有効に設定される（ステップＳ２３）。すなわち、比較回路４３ｅ及び６３ｃによる、第２及び第４ポインタ値によるパスセレクト、つまり、第２ポインタ値に基づいたセレクタ４３ａ〜４３ｃの選択及び第４ポインタ値に基づいた読出パス６Ａ〜６Ｃの選択が有効化される。
【０１５７】
なお、下位ビットポインタ４１及び６１が書込制御ポインタ５ａ及び読出制御ポインタ５ｂから転用される場合には、ファームウェアにより、転用される書込制御ポインタ５ａ及び読出制御ポインタ５ｂに対して、下位ビットポインタ４１及び６１として用いるための設定が有効化される。また、ファームウェアにより、結合バッファ５０を構成するバッファ５に対応して備えられ、且つ転用されない書込制御ポインタ５ａ及び読出制御ポインタ５ｂが無効化される。
【０１５８】
また、ステップＳ２３では、複数パス設定レジスタ４５及び６５において、結合バッファ５０を構成しないバッファ５に、第２及び第４ポインタ値により指定されない値の特殊ビットが対応付けられる。
さらに、閾値設定レジスタ４５及び６５には、特殊ビットの値以下となるような第２閾値が設定される。
【０１５９】
ステップＳ２３の処理が行なわれると、バッファ装置２において混合運用が行なわれ、特定の入力ポート３から入力されたデータの結合バッファ５０への書込制御、及び特定の入力ポート３以外の入力ポート３から入力されたデータの、対応するバッファ５への書込制御が行なわれる。また、結合バッファ５０及び結合バッファ５０以外のバッファ５からのデータの読出制御が行なわれる（ステップＳ２４）。
【０１６０】
次に、図１２、図１４及び図１５を参照しながら、本実施形態のバッファ装置２の入力制御部４による混合運用における動作例を説明する。
以下、図１４及び図１５に示すバッファ装置２は、図１１のステップＳ２２及びＳ２３の処理が完了しており、入力ポート３−１を特定の入力ポート３とし、入力ポート３−２を通常の入出力を行なう入力ポート３として、ステップＳ２４の混合運用が行なわれる場合について説明する。また、バッファ５−１〜５−３には、図９及び図１０に示す複数パス設定レジスタ４５及び６５の第１及び第２バッファ選択情報が設定され、閾値設定レジスタ４４及び６４には、第２閾値“001”が設定されたと仮定して説明する。
【０１６１】
はじめに、図１２に示すように、入力制御部４が入力ポート３からのデータの入力待ちの状態である（ステップＳ２５）。
特定の入力ポート３−１からデータの入力があった場合（ステップＳ２６のＹｅｓルート）、入力制御部４により、上位ビットポインタ４２の第２ポインタ値が示す書込対象のバッファ５における、下位ビットポインタ４１の第１ポインタ値が示すアドレス位置に、データが書き込まれる（ステップＳ２７）。
【０１６２】
図１４に示す例において、第２ポインタ値が“000”の場合、比較回路４３ｅにより、第２ポインタ値“000”に対応するセレクタ４３ａに対して、結合パス３Ｄを選択させる制御信号が出力される。そして、入力ポート３−１から結合パス３Ｄを介して入力されたデータは、セレクタ４３ａを介して、対応するバッファ５−１における第１ポインタ値が示すアドレス位置に書き込まれる（図１４の（１）参照）。
【０１６３】
また、第２ポインタ値が“001”の場合、比較回路４３ｅにより、第２ポインタ値“001”に対応するセレクタ４３ｃに対して、結合パス３Ｄを選択させる制御信号が出力される。そして、入力ポート３−１から結合パス３Ｄを介して入力されたデータは、セレクタ４３ｃを介して、対応するバッファ５−３における第１ポインタ値が示すアドレス位置に書き込まれる（図１４の（２）参照）。
【０１６４】
なお、ステップＳ２８〜Ｓ３２の処理は、図４のステップＳ１０〜Ｓ１４の処理と同様のため、詳細な説明を省略する。
一方、入力ポート３−２からデータの入力があった場合（ステップＳ２６のＮｏルート）、セレクタ４３ｂでは、比較回路４３ｅにより入力パス３Ｂを選択させる制御信号が入力されている。従って、入力ポート３−２から入力パス３Ｂを介して入力されたデータは、図１５に示すように、セレクタ４３ｂを経由して、バッファ５−２の書込制御ポインタ５ａ−２のポインタ値が示すアドレス位置に書き込まれる（ステップＳ３３）。
【０１６５】
図１２、図１４及び図１５を参照して説明したように、入力ポート３−１から結合パス３Ｄを介して第１切替部４３に入力されるデータは、第１切替部４３により、第１及び第２ポインタ値の変化に応じて書込対象のバッファ５が切り替えられて、結合バッファ５０に書き込まれる。また、入力ポート３−２から入力パス３Ｂを介して第１切替部４３に入力されるデータは、第１切替部４３により、対応するバッファ５に書き込まれる。
【０１６６】
次に、図１３〜図１５を参照しながら、本実施形態のバッファ装置２の出力制御部６による混合運用における動作例を説明する。
はじめに、図１３に示すように、出力切替部６０は、調停部６６からの読出指示待ちの状態である（ステップＳ３４）。読出指示が出力切替部６０に入力された場合、出力制御部６により、特殊ビットが設定されたバッファ５からの読出指示であるか否かが判断される。つまり、出力制御部６により、読出指示において指定された読出対象のバッファ５が、複数パス設定レジスタ６５において特殊ビットが設定された読出パス６Ａ〜６Ｃに対応するバッファ５であるか否かが判断される（ステップＳ３５）。
【０１６７】
特殊ビットが設定されたバッファ５からの読出指示ではない場合（ステップＳ３５のＮｏルート）、比較回路６３ｃにより、読出指示により指定された読出対象のバッファ５から、データを読み出すための条件が満たされているか否かが判断される（ステップＳ３６）。具体的には、ステップＳ３６において、比較回路６３ｃにより、読出指示で指定された読出対象のバッファ５に対応する第２バッファ選択情報のレジスタ値と、上位ビットポインタ６２の第４ポインタ値と、が一致するか否かが判断される。
【０１６８】
条件が満たされていない場合には（ステップＳ３６のＮｏルート）、次の読出指示待ちとなり、ステップＳ３４に移行する。
一方、条件が満たされている場合には（ステップＳ３６のＹｅｓルート）、上位ビットポインタ６２の第４ポインタ値が示す読出対象のバッファ５における、下位ビットポインタ６１の第３ポインタ値が示すアドレス位置から、データが読み出される（ステップＳ３７）。
【０１６９】
図１４に示す例において、第４ポインタ値が“000”の場合、比較回路６３ｃにより、セレクタ６３ａに対して、第４ポインタ値“000”に対応する読出パス６Ａを選択させる制御信号が出力される。そして、バッファ５−１に書き込まれたデータは、セレクタ６３ａにより、第３ポインタ値が示すアドレス位置から読出パス６Ａを介して読み出され、出力ポート７に出力される（図１４の（３）参照）。
【０１７０】
また、第４ポインタ値が“001”の場合、比較回路６３ｃにより、セレクタ６３ａに対して、第４ポインタ値“001”に対応する読出パス６Ｃを選択させる制御信号が出力される。そして、バッファ５−３に書き込まれたデータは、セレクタ６３ａにより、第３ポインタ値が示すアドレス位置から読出パス６Ｃを介して読み出され、出力ポート７に出力される（図１４の（４）参照）。
【０１７１】
なお、ステップＳ３８〜Ｓ４２の処理は、図５のステップＳ１７〜Ｓ２１の処理と同様のため、詳細な説明を省略する。
一方、特殊ビットが設定されたバッファ５、例えばバッファ５−２からの読出指示である場合（ステップＳ３５のＹｅｓルート）、出力制御部６により、読出対象のバッファ５−２における、読出制御ポインタ５ｂ−２が示すアドレス位置から、読出パス３Ｂを介してデータが読み出され、出力ポート７に出力される（ステップＳ３３）。
【０１７２】
すなわち、ステップＳ３３において、比較回路６３ｃによる制御信号を入力されたセレクタ６３ａによって、バッファ５−２に書き込まれたデータが読出パス６Ｂを介して読み出される。
図１３〜図１５を参照して説明したように、結合バッファ５０に書き込まれたデータは、出力制御部６により、読出指示並びに第３及び第４ポインタ値の変化に応じて読出対象のバッファ５が切り替えられ、対応する読出パス６Ａ又は６Ｃを介して読み出されて、出力ポート７に出力される。また、結合バッファ５０以外のバッファ５−２に書き込まれたデータは、出力制御部６により、読出指示に応じて選択され、対応する読出パス６Ｂを介して読み出されて、出力ポート７に出力される。
【０１７３】
なお、本変形例において、結合バッファ５０に対応する入力ポート３−１の他に、通常の入出力が行なわれる入力ポート３が１つ（入力ポート３−２）の場合について説明したが、これに限定されるものではない。複数パス設定レジスタ４５において特殊ビットが設定されるバッファ５、つまりセレクタの数は、使用される入力ポート３の数に応じて、例えば２つ以上であっても良い。
【０１７４】
また、レジスタ値に設定される特殊ビットにより、結合バッファ５０を使用する特定の入力ポート３及び使用しない入力ポート３について、図９、図１０、図１４及び図１５に示す組み合わせ以外の組み合わせを実現してもよい。
上述の如く構成された、図８に示す本変形例に係るバッファ装置２によれば、図２に示す本実施形態に係るバッファ装置２と同様の効果を奏することができる。
【０１７５】
また、混合運用の初期設定等において、ファームウェアは、結合バッファ５を構成しないバッファ５について複数パス設定レジスタ４５及び６５に特殊ビットを設定することで、特定の入力ポート３を介して入力されるデータについてバッファ容量を確保した上で、結合バッファ５０に書き込ませない他の入力ポート３に、対応するバッファ５を使用させることができる。すなわち、図２に示すバッファ装置２に対して、複数パス設定レジスタ４５及び６５を備えるとともに、デコーダ４３ｄ及び６３ｂに代えて比較回路４３ｅ及び６３ｃを備えるだけの簡素な構成で、ｍ入力１出力を行なう受信バッファ２を実現することができる。
【０１７６】
図８に示す本変形例に係るバッファ装置２によれば、ｍ入力１出力を行なう混合運用を実現することができるとともに、図４及び図５を用いて既述の如き１入力１出力を行なう結合運用、及び従来と同様の複数入力１出力を行なう通常運用を実現することができる。
従って、本変形例に係るバッファ装置２によれば、簡素な構成及び簡便な制御により、複数の運用の形態を切り替えることができ、汎用性の高い受信バッファを実現することができる。
【０１７７】
〔３〕その他
以上、本発明の好ましい実施形態及び変形例について詳述したが、本発明は、かかる特定の実施形態及び変形例に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
例えば、本実施形態に係るバッファ装置２における第２及び第４ポインタ値のビット数は２ビットとし、本変形例に係るバッファ装置２における第２及び第４ポインタ値のビット数は３ビットとして説明したが、これに限定されるものではない。つまり、第２及び第４ポインタ値のビット数は、入力ポート３の数、つまり結合バッファ５０を構成し得るバッファ５の数に応じて、任意に増減させることができる。
【０１７８】
また、本実施形態及び本変形例に係るバッファ装置２において、入力ポート３及び入力パス３Ａ〜３Ｃ、並びにバッファ５が、それぞれ３つ備えられる場合について説明したが、これに限定されず、バッファ装置２の構成に応じて、それぞれ任意の数が備えられて良い。
さらに、本実施形態及び本変形例に係るバッファ装置２において、下位ビットポインタ４１及び６１は、それぞれバッファ５−１が備える書込制御ポインタ５ａ−１及び読出制御ポインタ５ｂ−１を転用したものであるが、これに限定されるものではない。下位ビットポインタ４１及び６１は、バッファ５が備える書込制御ポインタ５ａ及び読出制御ポインタ５ｂが転用される場合には、結合バッファ５０を構成するバッファ５のうちの、いずれのバッファ５が備える書込制御ポインタ５ａ及び読出制御ポインタ５ｂであっても良い。
【符号の説明】
【０１７９】
１，１００−１，１００−２    情報処理システム
１１−１〜１１−６，１１０−１〜１１０−６    システムボード
１２−１，１２−２，１２０，１２０−１，１２０−２    クロスバチップ
２，２−１〜２−４，２００，２００−１〜２００−４    バッファ装置
３，３−１〜３−３，３００−１〜３００−３    入力ポート
３Ａ〜３Ｃ，３００Ａ〜３００Ｃ    入力パス
３Ｄ    結合パス
４    入力制御部
４０    入力切替部
４１    下位ビットポインタ（書込制御ポインタ，第１ポインタ）
４１ａ，６１ａ    ライン
４２    上位ビットポインタ（第２ポインタ）
４３    第１切替部
４３ａ〜４３ｃ，４８ａ，６３ａ，６３０    セレクタ
４３ｄ，４８ｂ，６３ｂ    デコーダ
４３ｅ，６３ｃ    比較回路
４４，６４    閾値設定レジスタ
４５    複数パス設定レジスタ（第１レジスタ）
４６    入力設定部
４７    設定レジスタ（第２レジスタ）
４８    選択部
５，５−１〜５−３，５００，５００−１〜５００−３    バッファ
５ａ，５ａ−１〜５ａ−３，５００ａ，５００ａ−１〜５００ａ−３    書込制御ポインタ
５ｂ，５ｂ−１〜５ｂ−３，５００ｂ，５００ｂ−１〜５００ｂ−３    読出制御ポインタ
５０    結合バッファ（バッファ群）
６    出力制御部
６Ａ〜６Ｃ    読出パス
６０  出力切替部
６１    下位ビットポインタ（読出制御ポインタ，第３ポインタ）
６２    上位ビットポインタ（第４ポインタ）
６３    第２切替部
６５    複数パス設定レジスタ（第３レジスタ）
６６，６６０    調停部
７，７００    出力ポート
７Ａ，７００Ａ    出力パス
【図１】
2012169032.tif 000003
【図２】
2012169032.tif 000004
【図３】
2012169032.tif 000005
【図４】
2012169032.tif 000006
【図５】
2012169032.tif 000007
【図６】
2012169032.tif 000008
【図７】
2012169032.tif 000009
【図８】
2012169032.tif 000010
【図９】
2012169032.tif 000011
【図１０】
2012169032.tif 000012
【図１１】
2012169032.tif 000013
【図１２】
2012169032.tif 000014
【図１３】
2012169032.tif 000015
【図１４】
2012169032.tif 000016
【図１５】
2012169032.tif 000017
【図１６】
2012169032.tif 000018
【図１７】
2012169032.tif 000019
【図１８】
2012169032.tif 000020
【手続補正書】
【提出日】平成25年12月20日(2013.12.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の入力ポートと、前記複数の入力ポートそれぞれから入力された情報が書き込まれる複数のバッファと、前記バッファから読み出された情報が出力される少なくとも１つの出力ポートとを備えたバッファ装置であって、
前記複数のバッファのうちの所定のバッファ群に割り当てられた入力ポートから情報が入力された場合、前記バッファ群のバッファにおける書込位置を示す情報に基づいて前記バッファ群から選択された書込対象のバッファに前記入力された情報を書き込むとともに、前記書込位置を示す情報に応じて、前記書込対象のバッファを前記バッファ群のうちの他のバッファに切り替える入力切替部と、
前記バッファ群のバッファにおける読出位置を示す情報に基づいて選択された読出対象のバッファから、情報を読み出して前記出力ポートに出力する出力制御部とを備え、
前記複数のバッファの各々は、ＦＩＦＯ（First In, First Out）バッファであり、
前記入力切替部は、
前記書込位置を示す第１ポインタ値を保持する第１ポインタと、
前記第１ポインタ値に応じて値が変化する第２ポインタ値を保持する第２ポインタと、
前記第２ポインタ値の変化に応じて、前記書込対象のバッファを前記他のバッファに切り替え、切り替え後の書込対象のバッファにおける前記第１ポインタ値が示す書込位置に、前記入力ポートから入力された情報を書き込む第１切替部とを備えることを特徴とする、バッファ装置。
【請求項２】
前記第１ポインタは、前記バッファ群のうちのいずれかのバッファに対応して備えられた書込制御ポインタであることを特徴とする、請求項１記載のバッファ装置。
【請求項３】
前記入力切替部は、
前記複数のバッファそれぞれに対応した第１バッファ選択情報を保持する第１レジスタをさらに備え、
前記第１切替部は、前記第２ポインタ値と一致する第１バッファ選択情報に対応するバッファを、書込対象のバッファとして選択することを特徴とする、請求項１又は請求項２記載のバッファ装置。
【請求項４】
前記バッファ群に割り当てられた前記入力ポートから情報が入力された場合に、前記入力された情報を前記入力切替部に出力する入力設定部をさらに備え、
前記入力切替部は、前記入力設定部から入力された情報を、前記書込位置に基づいて、前記書込対象のバッファに書き込むことを特徴とする、請求項１〜３のいずれか１項記載のバッファ装置。
【請求項５】
前記入力設定部は、
前記バッファ群に割り当てられた前記入力ポートを示す情報を保持する第２レジスタと、
前記第２レジスタに保持された情報に基づいて、前記複数の入力ポートから前記バッファ群に割り当てられた前記入力ポートを選択し、選択した前記入力ポートから入力された情報を前記入力切替部に出力する選択部とを備えること特徴とする、請求項４記載のバッファ装置。
【請求項６】
前記出力制御部は、
前記読出対象のバッファから情報を読み出して前記出力ポートに出力するとともに、前記読出位置を示す情報に応じて、前記読出対象のバッファを前記バッファ群のうちの他のバッファに切り替える出力切替部を備えることを特徴とする、請求項１〜５のいずれか１項記載のバッファ装置。
【請求項７】
複数の入力ポートと、前記複数の入力ポートそれぞれから入力された情報が書き込まれる複数のバッファと、前記バッファから読み出された情報が出力される少なくとも１つの出力ポートとを備えたバッファ装置におけるバッファ制御装置であって、
前記複数のバッファのうちの所定のバッファ群に割り当てられた入力ポートから情報が入力された場合、前記バッファ群のバッファにおける書込位置を示す情報に基づいて前記バッファ群から選択された書込対象のバッファに前記入力された情報を書き込むとともに、前記書込位置を示す情報に応じて、前記書込対象のバッファを前記バッファ群のうちの他のバッファに切り替える入力切替部と、
前記バッファ群のバッファにおける読出位置を示す情報に基づいて選択された読出対象のバッファから、情報を読み出して前記出力ポートに出力する出力制御部とを備え、
前記複数のバッファの各々は、ＦＩＦＯ（First In, First Out）バッファであり、
前記入力切替部は、
前記書込位置を示す第１ポインタ値を保持する第１ポインタと、
前記第１ポインタ値に応じて値が変化する第２ポインタ値を保持する第２ポインタと、
前記第２ポインタ値の変化に応じて、前記書込対象のバッファを前記他のバッファに切り替え、切り替え後の書込対象のバッファにおける前記第１ポインタ値が示す書込位置に、前記入力ポートから入力された情報を書き込む第１切替部とを備えることを特徴とする、バッファ制御装置。
【請求項８】
複数の入力ポートと、前記複数の入力ポートそれぞれから入力された情報が書き込まれる複数のバッファと、前記バッファから読み出された情報が出力される少なくとも１つの出力ポートとを備え、前記複数のバッファの各々はＦＩＦＯ（First In, First Out）バッファであるバッファ装置におけるバッファ制御方法であって、
前記複数のバッファのうちの所定のバッファ群に割り当てられた入力ポートから情報が入力された場合、前記バッファ群のバッファにおける書込位置を示す情報に基づいて、前記バッファ群から書込対象のバッファを選択し、
前記選択された書込対象のバッファに前記入力された情報を書き込み、
前記書込位置を示す情報に応じて、前記書込対象のバッファを前記バッファ群のうちの他のバッファに切り替え、
前記バッファ群のバッファにおける読出位置を示す情報に基づいて、前記バッファ群から読出対象のバッファを選択し、
前記選択された読出対象のバッファから、情報を読み出して前記出力ポートに出力し、さらに、
第１ポインタに保持された前記書込位置を示す第１ポインタ値に応じて、第２ポインタに保持された第２ポインタ値を変化させ、
前記第２ポインタ値の変化に応じて、前記書込対象のバッファを前記他のバッファに切り替え、
切り替え後の書込対象のバッファにおける前記第１ポインタ値が示す書込位置に、前記入力ポートから入力された情報を書き込むことを特徴とする、バッファ制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
本件のバッファ装置は、複数の入力ポートと、前記複数の入力ポートそれぞれから入力された情報が書き込まれる複数のバッファと、前記バッファから読み出された情報が出力される少なくとも１つの出力ポートとを備えたバッファ装置であって、前記複数のバッファのうちの所定のバッファ群に割り当てられた入力ポートから情報が入力された場合、前記バッファ群のバッファにおける書込位置を示す情報に基づいて前記バッファ群から選択された書込対象のバッファに前記入力された情報を書き込むとともに、前記書込位置を示す情報に応じて、前記書込対象のバッファを前記バッファ群のうちの他のバッファに切り替える入力切替部と、前記バッファ群のバッファにおける読出位置を示す情報に基づいて選択された読出対象のバッファから、情報を読み出して前記出力ポートに出力する出力制御部とを備え、前記複数のバッファの各々は、ＦＩＦＯ（First In, First Out）バッファであり、前記入力切替部は、前記書込位置を示す第１ポインタ値を保持する第１ポインタと、前記第１ポインタ値に応じて値が変化する第２ポインタ値を保持する第２ポインタと、前記第２ポインタ値の変化に応じて、前記書込対象のバッファを前記他のバッファに切り替え、切り替え後の書込対象のバッファにおける前記第１ポインタ値が示す書込位置に、前記入力ポートから入力された情報を書き込む第１切替部とを備えるものである。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
また、本件のバッファ制御装置は、上記バッファ装置における入力制御部及び出力制御部を備えるものである。
さらに、本件のバッファ制御方法は、複数の入力ポートと、前記複数の入力ポートそれぞれから入力された情報が書き込まれる複数のバッファと、前記バッファから読み出された情報が出力される少なくとも１つの出力ポートとを備え、前記複数のバッファの各々はＦＩＦＯ（First In, First Out）バッファであるバッファ装置におけるバッファ制御方法であって、前記複数のバッファのうちの所定のバッファ群に割り当てられた入力ポートから情報が入力された場合、前記バッファ群のバッファにおける書込位置を示す情報に基づいて、前記バッファ群から書込対象のバッファを選択し、前記選択された書込対象のバッファに前記入力された情報を書き込み、前記書込位置を示す情報に応じて、前記書込対象のバッファを前記バッファ群のうちの他のバッファに切り替え、前記バッファ群のバッファにおける読出位置を示す情報に基づいて、前記バッファ群から読出対象のバッファを選択し、前記選択された読出対象のバッファから、情報を読み出して前記出力ポートに出力し、さらに、第１ポインタに保持された前記書込位置を示す第１ポインタ値に応じて、第２ポインタに保持された第２ポインタ値を変化させ、前記第２ポインタ値の変化に応じて、前記書込対象のバッファを前記他のバッファに切り替え、切り替え後の書込対象のバッファにおける前記第１ポインタ値が示す書込位置に、前記入力ポートから入力された情報を書き込むものである。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００８９
【補正方法】変更
【補正の内容】
【００８９】
つまり、本実施形態では、デコーダ６３ｂは、結合運用において、第４ポインタ値が“00”のとき読出パス６Ａを選択し、“01”のとき読出パス６Ｂを選択し、“10”のとき読出パス６Ｃを選択するように、セレクタ６３ａに出力する制御信号を制御する。すなわち、デコーダ６３ｂによる制御信号の制御によって、読出対象のバッファ５からデータを読み出す読出パス６Ａ〜６Ｃが選択される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１０７
【補正方法】変更
【補正の内容】
【０１０７】
第１ポインタ値は、結合バッファ５０を構成するバッファ５−１〜５−３のいずれかのバッファ５にデータが書き込まれるとインクリメントされる（ステップＳ１０）。また、バッファ５にデータが書き込まれるたびに、下位ビットポインタ４１により、第１ポインタ値が第１閾値を超えたか否かが判断される（ステップＳ１１）。第１ポインタ値が第１閾値を超えていないと判断されると（ステップＳ１１のＮｏルート）、次のデータの入力待ちとなり、ステップＳ８に移行する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】０１１７
【補正方法】変更
【補正の内容】
【０１１７】
また、第３ポインタ値が第１閾値を超え、バッファ５−２のデータ格納領域の最後までデータが読み出された状態になると、第３ポインタ値の全ビットが“0”にリセットされるとともに、第４ポインタ値がインクリメントされる。第４ポインタ値がインクリメントされることにより、読出対象のバッファ５−２は、第２ポインタ値“10”に対応するバッファ５−３に切り替わる。従って、デコーダ６３ｂによる制御信号を入力されたセレクタ６３ａによって、バッファ５−３に書き込まれたデータが読出パス６Ｃを介して読み出される（図６の（６）参照）。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１７８
【補正方法】変更
【補正の内容】
【０１７８】
また、本実施形態及び本変形例に係るバッファ装置２において、入力ポート３及び入力パス３Ａ〜３Ｃ、並びにバッファ５が、それぞれ３つ備えられる場合について説明したが、これに限定されず、バッファ装置２の構成に応じて、それぞれ任意の数が備えられて良い。
さらに、本実施形態及び本変形例に係るバッファ装置２において、下位ビットポインタ４１及び６１は、それぞれバッファ５−１が備える書込制御ポインタ５ａ−１及び読出制御ポインタ５ｂ−１を転用したものであるが、これに限定されるものではない。下位ビットポインタ４１及び６１は、バッファ５が備える書込制御ポインタ５ａ及び読出制御ポインタ５ｂが転用される場合には、結合バッファ５０を構成するバッファ５のうちの、いずれのバッファ５が備える書込制御ポインタ５ａ及び読出制御ポインタ５ｂであっても良い。
〔４〕付記
以上の実施形態及び変形例に関し、更に以下の付記を開示する。
（付記１）
複数の入力ポートと、前記複数の入力ポートそれぞれから入力された情報が書き込まれる複数のバッファと、前記バッファから読み出された情報が出力される少なくとも１つの出力ポートとを備えたバッファ装置であって、
前記複数のバッファのうちの所定のバッファ群に割り当てられた入力ポートから情報が入力された場合、前記バッファ群のバッファにおける書込位置を示す情報に基づいて前記バッファ群から選択された書込対象のバッファに前記入力された情報を書き込むとともに、前記書込位置を示す情報に応じて、前記書込対象のバッファを前記バッファ群のうちの他のバッファに切り替える入力切替部と、
前記バッファ群のバッファにおける読出位置を示す情報に基づいて選択された読出対象のバッファから、情報を読み出して前記出力ポートに出力する出力制御部とを備えることを特徴とする、バッファ装置。
（付記２）
前記入力切替部は、
前記書込位置を示す第１ポインタ値を保持する第１ポインタと、
前記第１ポインタ値に応じて値が変化する第２ポインタ値を保持する第２ポインタと、
前記第２ポインタ値の変化に応じて、前記書込対象のバッファを前記他のバッファに切り替え、切り替え後の書込対象のバッファにおける前記第１ポインタ値が示す書込位置に、前記入力ポートから入力された情報を書き込む第１切替部とを備えることを特徴とする、付記１記載のバッファ装置。
（付記３）
前記第１ポインタは、前記入力ポートから入力された情報が前記書込対象のバッファに書き込まれるときに前記第１ポインタ値を変化させるとともに、前記第１ポインタ値が第１閾値を超えると前記第１ポインタ値をリセットし、
前記第２ポインタは、前記第１ポインタ値が前記第１閾値を超えると前記第２ポインタ値を変化させるとともに、前記第２ポインタ値が第２閾値を超えると前記第２ポインタ値をリセットすることを特徴とする、付記２記載のバッファ装置。
（付記４）
前記第１ポインタは、前記バッファ群のうちのいずれかのバッファに対応して備えられた書込制御ポインタであることを特徴とする、付記２又は付記３記載のバッファ装置。
（付記５）
前記入力切替部は、
前記複数のバッファそれぞれに対応した第１バッファ選択情報を保持する第１レジスタをさらに備え、
前記第１切替部は、前記第２ポインタ値と一致する第１バッファ選択情報に対応するバッファを、書込対象のバッファとして選択することを特徴とする、付記２〜４のいずれか１項記載のバッファ装置。
（付記６）
前記第１切替部は、前記バッファ群以外のバッファを書込対象のバッファとして選択することを抑止するとともに、前記バッファ群以外のバッファに対応する入力ポートから入力された情報を、前記バッファ群以外のバッファに書き込むことを特徴とする、付記５記載のバッファ装置。
（付記７）
前記バッファ群に割り当てられた前記入力ポートから情報が入力された場合に、前記入力された情報を前記入力切替部に出力する入力設定部をさらに備え、
前記入力切替部は、前記入力設定部から入力された情報を、前記書込位置に基づいて、前記書込対象のバッファに書き込むことを特徴とする、付記１〜６のいずれか１項記載のバッファ装置。
（付記８）
前記入力設定部は、
前記バッファ群に割り当てられた前記入力ポートを示す情報を保持する第２レジスタと、
前記第２レジスタに保持された情報に基づいて、前記複数の入力ポートから前記バッファ群に割り当てられた前記入力ポートを選択し、選択した前記入力ポートから入力された情報を前記入力切替部に出力する選択部とを備えること特徴とする、付記７記載のバッファ装置。
（付記９）
前記バッファ群以外のバッファに対応する入力ポートから入力された情報は、前記選択部を経由せずに前記入力切替部に入力され、対応する前記バッファ群以外のバッファに書き込まれることを特徴とする、付記７又は付記８記載のバッファ装置。
（付記１０）
前記出力制御部は、
前記読出対象のバッファから情報を読み出して前記出力ポートに出力するとともに、前記読出位置を示す情報に応じて、前記読出対象のバッファを前記バッファ群のうちの他のバッファに切り替える出力切替部を備えることを特徴とする、付記１〜９のいずれか１項記載のバッファ装置。
（付記１１）
前記出力切替部は、
前記読出位置を示す第３ポインタ値を保持する第３ポインタと、
前記第３ポインタ値に応じて値が変化する第４ポインタ値を保持する第４ポインタと、
前記第４ポインタ値の変化に応じて、前記読出対象のバッファを前記他のバッファに切り替え、切り替え後の読出対象のバッファにおける前記第３ポインタ値が示す読出位置から情報を読み出す第２切替部とを備えることを特徴とする、付記１０記載のバッファ装置。
（付記１２）
前記第３ポインタは、前記バッファ群の読出対象のバッファから情報が読み出されるときに前記第３ポインタ値を変化させるとともに、前記第３ポインタ値が第１閾値を超えると前記第３ポインタ値をリセットし、
前記第４ポインタは、前記第３ポインタ値が前記第１閾値を超えると前記第４ポインタ値を変化させるとともに、前記第４ポインタ値が第２閾値を超えると前記第４ポインタ値をリセットすることを特徴とする、付記１１記載のバッファ装置。
（付記１３）
前記出力制御部は、
前記複数のバッファに書き込まれた情報の読出指示を発行する調停部をさらに備え、
前記出力切替部は、前記調停部から発行された読出指示に応じて、前記読出対象のバッファから情報を読み出すとともに、
前記第３ポインタは、前記調停部から読出指示が発行されると、前記第３ポインタ値を変化させることを特徴とする、付記１２記載のバッファ装置。
（付記１４）
前記出力切替部は、
前記複数のバッファそれぞれに対応した第２バッファ選択情報を保持する第３レジスタをさらに備え、
前記第２切替部は、前記第４ポインタ値と一致する第２バッファ選択情報に対応するバッファを、読出対象のバッファとして選択することを特徴とする、付記１３記載のバッファ装置。
（付記１５）
前記複数の入力ポートのうちの２つ以上の入力ポートからデータが入力される場合、
前記第２切替部は、前記調停部から発行された読出指示が、前記バッファ群に書き込まれた情報の読出指示である場合、前記読出指示により指定されたバッファに対応する第２バッファ選択情報と、前記第４ポインタ値と、が一致する場合に、前記読出指示により指定されたバッファを、読出対象のバッファとして選択する一方、前記調停部から発行された読出指示が、前記バッファ群以外のバッファに書き込まれた情報の読出指示である場合に、前記読出指示により指定された前記バッファ群以外のバッファを、読出対象のバッファとして選択することを特徴とする、付記１４記載のバッファ装置。
（付記１６）
前記第３ポインタは、前記バッファ群のうちのいずれかのバッファに対応して備えられた読出制御ポインタであることを特徴とする、付記１１〜１５のいずれか１項記載のバッファ装置。
（付記１７）
前記バッファ群を構成するバッファ及び前記バッファ群に割り当てられた入力ポートは、前記バッファ装置を監視するファームウェアにより設定及び更新されることを特徴とする、付記１〜１６のいずれか１項記載のバッファ装置。
（付記１８）
複数の入力ポートと、前記複数の入力ポートそれぞれから入力された情報が書き込まれる複数のバッファと、前記バッファから読み出された情報が出力される少なくとも１つの出力ポートとを備えたバッファ装置におけるバッファ制御装置であって、
前記複数のバッファのうちの所定のバッファ群に割り当てられた入力ポートから情報が入力された場合、前記バッファ群のバッファにおける書込位置を示す情報に基づいて前記バッファ群から選択された書込対象のバッファに前記入力された情報を書き込むとともに、前記書込位置を示す情報に応じて、前記書込対象のバッファを前記バッファ群のうちの他のバッファに切り替える入力切替部と、
前記バッファ群のバッファにおける読出位置を示す情報に基づいて選択された読出対象のバッファから、情報を読み出して前記出力ポートに出力する出力制御部とを備えることを特徴とする、バッファ制御装置。
（付記１９）
複数の入力ポートと、前記複数の入力ポートそれぞれから入力された情報が書き込まれる複数のバッファと、前記バッファから読み出された情報が出力される少なくとも１つの出力ポートとを備えたバッファ装置におけるバッファ制御方法であって、
前記複数のバッファのうちの所定のバッファ群に割り当てられた入力ポートから情報が入力された場合、前記バッファ群のバッファにおける書込位置を示す情報に基づいて、前記バッファ群から書込対象のバッファを選択し、
前記選択された書込対象のバッファに前記入力された情報を書き込み、
前記書込位置を示す情報に応じて、前記書込対象のバッファを前記バッファ群のうちの他のバッファに切り替え、
前記バッファ群のバッファにおける読出位置を示す情報に基づいて、前記バッファ群から読出対象のバッファを選択し、
前記選択された読出対象のバッファから、情報を読み出して前記出力ポートに出力することを特徴とする、バッファ制御方法。
【国際調査報告】
2012169032.tif 000021
2012169032.tif 000022
2012169032.tif 000023
2012169032.tif 000024