(57)【要約】 【課題】簡易な構成で、リードアクセスのスループットの低下を防止することが可能なスイッチ装置およびデータ転送制御方法を提供する。【解決手段】相互にデータ転送を行う第１ホストシステム１００と第２ホストシステム２００とを接続するスイッチ装置３００は、出力バッファ３２０とバッファ制御部３４０とを備える。出力バッファ３２０は、第１ホストシステム１００から第２ホストシステム２００に対するデータの書き込み要求を示すライトパケット、または、第１ホストシステム１００から第２ホストシステム２００に対するデータの読み出し要求を示すリードリクエストパケットを一時的に記憶する。バッファ制御部３４０は、出力バッファ３２０内のライトパケット数が閾値以上の場合は、第１ホストシステム１００からのライトパケット送信を停止させる制御を行う。【選択図】図６
2014010613.tif 000002
【特許請求の範囲】
【請求項１】
相互にデータ転送を行う第１装置と第２装置とを接続するスイッチ装置であって、
前記第１装置から前記第２装置に対するデータの読み出し要求を示す読み出し要求情報、または、前記第１装置から前記第２装置に対するデータの書き込み要求を示す書き込み要求情報を一時的に記憶する第１記憶部と、
前記第１記憶部内の前記書き込み要求情報の数が閾値以上の場合は、前記第１装置からの前記書き込み要求情報の送信を停止させる制御を行う制御部と、を備える、
スイッチ装置。
【請求項２】
前記制御部は、前記第１記憶部内の前記書き込み要求情報の数が閾値以上であり、かつ、少なくとも１つの前記読み出し要求情報が前記第１記憶部に格納されている場合は、前記書き込み要求情報の送信を停止させる制御を行う一方、前記第１記憶部内に前記読み出し要求情報が存在しない場合は、前記書き込み要求情報の送信を停止させる制御を行わない、
請求項１のスイッチ装置。
【請求項３】
前記第１装置から送信される前記読み出し要求情報を、一時的に格納した後に前記第１記憶部へ入力する第２記憶部と、
前記第１装置から送信される前記書き込み要求情報を、一時的に格納した後に前記第１記憶部へ入力する第３記憶部と、をさらに備え、
前記制御部は、前記第１記憶部内の前記書き込み要求情報の数が閾値以上であり、かつ、少なくとも１つの前記読み出し要求情報が、前記第１記憶部または前記第２記憶部の何れかに格納されている場合は、前記書き込み要求情報の送信を停止させる制御を行う一方、前記第１記憶部および前記第２記憶部の何れにも前記読み出し要求情報が存在しない場合は、前記書き込み要求情報の送信を停止させる制御を行わない、
請求項１のスイッチ装置。
【請求項４】
前記制御部は、前記書き込み要求情報の送信を停止させる制御を行った後、前記第１記憶部内の前記書き込み要求情報の数が前記閾値を下回った場合は、前記書き込み要求情報の送信停止を解除する制御を行う、
請求項２または請求項３のスイッチ装置。
【請求項５】
前記第１装置と前記スイッチ装置とを接続するバス、および、前記第２装置と前記スイッチ装置とを接続するバスの各々の規格は、ＰＣＩ−Ｅｘｐｒｅｓｓである、
請求項１のスイッチ装置。
【請求項６】
第１装置と第２装置との間のデータ転送を制御するデータ転送制御方法であって、
前記第１装置から前記第２装置に対するデータの書き込み要求を示す書き込み要求情報、または、前記第１装置から前記第２装置に対するデータの読み出し要求を示す読み出し要求情報を一時的に記憶する第１記憶部内の前記書き込み要求情報の数が閾値以上の場合は、前記第１装置からの前記書き込み要求情報の送信を停止させる制御を行う制御ステップを含む、
データ転送制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スイッチ装置およびデータ転送制御方法に関する。
【背景技術】
【０００２】
従来、スイッチを介して複数のホスト間を接続し、一方のホストがマスタとなって、もう一方のホスト内のメモリに対してライト・リードアクセスすることで、ホスト間の双方向データ転送を行うシステムにおいて、ライトアクセスとリードアクセスが競合した場合にライトパケットが優先的に処理されて、リードアクセスのスループットが低下することを防ぐ技術が知られている。
【０００３】
例えば特許文献１には、複数のホスト間でのデータ転送において、リードパケットの転送のプライオリティがライトパケットより低い場合でも、リードパケットを遅延することなく相手先ホストへ届ける目的で、リードアクセスをライトパケットで実現する技術が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に開示された技術では、リードアクセス用のライトパケットの送受信機能（リードアクセス用のライトパケットを生成する機能も含む）や、受信したパケットを識別し、その識別結果によりリードアクセスを実行する機能などの特別な機能が必要となり、構成が複雑化するという問題がある。
【０００５】
本発明は、上記に鑑みてなされたものであって、簡易な構成で、リードアクセスのスループットの低下を防止することが可能なスイッチ装置およびデータ転送制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明は、相互にデータ転送を行う第１装置と第２装置とを接続するスイッチ装置であって、前記第１装置から前記第２装置に対するデータの書き込み要求を示す書き込み要求情報、または、前記第１装置から前記第２装置に対するデータの読み出し要求を示す読み出し要求情報を一時的に記憶する第１記憶部と、前記記憶部内の前記書き込み要求情報の数が閾値以上の場合は、前記第１装置からの前記書き込み要求情報の送信を停止させる制御を行う制御部と、を備えるスイッチ装置である。
【０００７】
また、本発明は、第１装置と第２装置との間のデータ転送を制御するデータ転送制御方法であって、前記第１装置から前記第２装置に対するデータの書き込み要求を示す書き込み要求情報、または、前記第１装置から前記第２装置に対するデータの読み出し要求を示す読み出し要求情報を一時的に記憶する第１記憶部内の前記書き込み要求情報の数が閾値以上の場合は、前記第１装置からの前記書き込み要求情報の送信を停止させる制御を行う制御ステップを含むデータ転送制御方法である。
【発明の効果】
【０００８】
本発明によれば、簡易な構成で、リードアクセスのスループットの低下を防止することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態のシステムの概略構成例を示すブロック図である。
【図２】図２は、実施形態のスイッチ装置内のバッファ構成例を模式的に示す図である。
【図３】図３は、ライトアクセスとリードアクセスが競合した場合におけるＰＣＩ−Ｅｘｐｒｅｓｓ上のパケット送受信のタイミングの例を模式的に示す図である。
【図４】図４は、図３に示すタイミングでパケットが送信された場合の、実施形態のスイッチ装置内のバッファの状態を模式的に示す図である。
【図５】図５は、ＰＣＩ−Ｅｘｐｒｅｓｓにおける送信側と受信側のフロー制御の概要を模式的に示す図である。
【図６】図６は、実施形態のスイッチ装置の構成例を示すブロック図である。
【図７】図７は、実施形態のスイッチ装置の動作例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照しながら、本発明に係るスイッチ装置およびデータ転送制御方法の実施形態を詳細に説明する。
【００１１】
図１は、本実施形態のシステム１の概略構成例を示すブロック図である。図１に示すように、システム１は、第１ホストシステム１００と、第２ホストシステム２００と、第１ホストシステム１００と第２ホストシステム２００とを接続するスイッチ装置３００と、を備える。
【００１２】
本実施形態では、スイッチ装置３００は、ＰＣＩ−Ｅｘｐｒｅｓｓスイッチであり、第１ホストシステム１００とスイッチ装置３００とを接続するバス、および、第２ホストシステム２００とスイッチ装置３００とを接続するバスの各々の規格はＰＣＩ−Ｅｘｐｒｅｓｓである。ここでは、スイッチ装置３００がＰＣＩ−Ｅｘｐｒｅｓｓスイッチである例を挙げて説明するが、これに限られるものではない。要するに、スイッチ装置は、相互にデータ転送を行う第１装置と第２装置とを接続するものであればよい（見方を変えれば、スイッチ装置を介して、第１装置と第２装置との間のデータ転送が行われる形態であればよい）。
【００１３】
第１ホストシステム１００は、ＣＰＵ１１０と、チップセット１２０と、記憶装置１３０とを含む。ＣＰＵ１１０と記憶装置１３０は、チップセット１２０を介して互いに接続される。この例では、チップセット１２０は、ＰＣＩ−Ｅｘｐｒｅｓｓのシステムを構成する要素であるルート・コンプレックス（Root  Complex）である。第１ホストシステム１００は、請求項の「第１装置」に対応する。
【００１４】
第２ホストシステム２００は、ＣＰＵ２１０と、チップセット２２０と、記憶装置２３０とを含む。ＣＰＵ２１０と記憶装置２３０は、チップセット２２０を介して互いに接続される。この例では、チップセット２２０は、ＰＣＩ−Ｅｘｐｒｅｓｓのシステムを構成する要素であるルート・コンプレックス（Root  Complex）である。第２ホストシステム２００は、請求項の「第２装置」に対応する。
【００１５】
第１ホストシステム１００から第２ホストシステム２００へデータを転送する場合は、チップセット１２０が記憶装置１３０からデータを読み出し、ＰＣＩ−Ｅｘｐｒｅｓｓ経由で記憶装置２３０にデータを書き込むため、ＰＣＩ−Ｅｘｐｒｅｓｓスイッチであるスイッチ装置３００に対しライトパケット（第２ホストシステム２００に対するデータの書き込み要求を示す書き込み要求情報の一例）を送信する。ライトパケットを受信したスイッチ装置３００は、未送信のパケットがバッファに残っている場合は、受信したパケットをバッファに格納し、未送信のパケットがバッファに残っていない場合は、受信したパケットをそのままチップセット２２０に対して送信する。パケットを受信したチップセット２２０は、記憶装置２３０にデータを書き込んで転送完了となる。
【００１６】
次に、第２ホストシステム２００から第１ホストシステム１００へデータを転送する場合は、チップセット１２０がＰＣＩ−Ｅｘｐｒｅｓｓ経由で記憶装置２３０からデータを読み出すため、スイッチ装置３００に対してリードリクエストパケット（第２ホストシステム２００に対するデータの読み出し要求を示す読み出し要求情報の一例）を送信する。リードリクエストパケットを受信したスイッチ装置３００は、未送信のパケットがバッファに残っている場合は、受信したパケットをバッファに格納し、未送信のパケットがバッファに残っていない場合は、受信したパケットをそのままチップセット２２０に対して送信する。パケットを受信したチップセット２２０は、記憶装置２３０からデータを読み出して、リードデータパケットとしてスイッチ装置３００へ送信する。リードデータパケットを受信したスイッチ装置３００は、未送信のパケットがバッファに残っている場合は、受信したパケットをバッファに格納し、未送信のパケットがバッファに残っていない場合は、受信したパケットをそのままチップセット１２０に対して送信する。パケットを受信したチップセット１２０は、記憶装置１３０へデータを書き込んで転送完了となる。
【００１７】
図２は、スイッチ装置３００内のバッファ構成例を模式的に示す図である。図２に示すように、スイッチ装置３００内のバッファは、入力バッファ３１０と出力バッファ３２０とを含む。入力バッファ３１０は、トランザクションごとに、Ｎｏｎ−Ｐｏｓｔｅｄ  Ｂｕｆｆｅｒ３１１と、Ｐｏｓｔｅｄ  Ｂｕｆｆｅｒ３１２と、Ｃｏｍｐｌｅｔｉｏｎ  Ｂｕｆｆｅｒ３１３と、に分かれる。この例では、Ｎｏｎ−Ｐｏｓｔｅｄ  Ｂｕｆｆｅｒ３１１には、主にリードリクエストパケットが格納され、Ｐｏｓｔｅｄ  Ｂｕｆｆｅｒ３１２にはライトパケットが格納される。出力バッファ３２０は、全てのトランザクションに共通となる。以下の説明では、Ｎｏｎ−Ｐｏｓｔｅｄ  Ｂｕｆｆｅｒ３１１を、「第１入力バッファ３１１」と呼び、Ｐｏｓｔｅｄ  Ｂｕｆｆｅｒ３１２を「第２入力バッファ３１２」と呼ぶ場合がある。
【００１８】
図３は、第１ホストシステム１００がマスタとなって、第２ホストシステム２００へのライトアクセスとリードアクセスが競合した場合におけるＰＣＩ−Ｅｘｐｒｅｓｓ上のパケット送受信のタイミングの例を模式的に示す図である。送信開始直後は、ライトパケットとリードリクエストパケットが同じように送信されるが、リードリクエストパケットは、その応答となるリードデータパケットが返ってくるまで送信元で保持しておく必要があるため、送信元のバッファサイズ分だけしかパケットを送信できない（図３の例では４個）。その後、リードリクエストパケットに対する応答のリードデータが送信元へ返ってくるまではライトパケットのみが送信され続ける。リードデータが戻ってくると、送信側のバッファが空いて次のリードリクエストが送信される。
【００１９】
図４は、図３に例示されたタイミングでパケットが送信された場合の、スイッチ装置３００内のバッファの状態を模式的に示す図である。最初の数回のリードリクエストパケット受信後は、その後、リードリクエストパケットに対する応答のリードデータが返信されるまでライトパケットのみを連続で受信するため、出力バッファ３２０及び第２入力バッファ３１２（Ｐｏｓｔｅｄ  Ｂｕｆｆｅｒ）がライトパケットで埋まってしまい、その後に受信したリードリクエストパケットは第１入力バッファ３１１（Ｎｏｎ−Ｐｏｓｔｅｄ  Ｂｕｆｆｅｒ）に格納され、出力バッファ３２０及び第２入力バッファ３１２（Ｐｏｓｔｅｄ  Ｂｕｆｆｅｒ）内のライトパケットを送信完了するまで、次のリードリクエストパケットを送信できなくなるため、リードアクセスのスループットが低下する。本実施形態のスイッチ装置３００は、リードアクセスのスループットの低下を防止するために、出力バッファ３２０内のライトパケット数が閾値以上の場合は、第１ホストシステム１００からのライトパケットの送信を停止させる制御を行う。この詳細な内容については後述する。
【００２０】
図５は、ＰＣＩ−Ｅｘｐｒｅｓｓにおける送信側と受信側のフロー制御の概要を模式的に示す図である。受信側のデバイスは送信側のデバイスに対し、定期的にフロー制御パケットを発行する。このフロー制御パケットは、受信側の入力バッファにどの程度空きがあるかを通知するためのクレジット情報を含む。また、このフロー制御パケットは、パケットの種類（Ｐｏｓｔｅｄ，Ｎｏｎ−Ｐｏｓｔｅｄ，Ｃｏｍｐｌｅｔｉｏｎ）ごとに発行され、パケットの種類を示す情報はフロー制御パケット内にＤＬＬＰタイプとして付加される。送信側は、このフロー制御パケットを確認して、受信側のバッファに空きがあればパケットを送信する。
【００２１】
図６は、本実施形態のスイッチ装置３００の構成例を示すブロック図である。スイッチ装置３００は、第１入力バッファ３１１と、第２入力バッファ３１２と、出力バッファ３２０と、入力リードパケットカウンタ３３１と、入力ライトパケットカウンタ３３２と、出力リードパケットカウンタ３３３と、出力ライトパケットカウンタ３３４と、バッファ制御部３４０と、フロー制御部３５０とを備える。
【００２２】
第１入力バッファ３１１は、上述のＮｏｎ−Ｐｏｓｔｅｄ  Ｂｕｆｆｅｒであり、第１ホストシステム１００から送信されるリードリクエストパケットを一時的に格納する。第１入力バッファ３１１に格納されたリードリクエストパケットは出力バッファ３２０に順次入力される。第１入力バッファ３１１は、請求項の「第２記憶部」に対応する。
【００２３】
第２入力バッファ３１２は、上述のＰｏｓｔｅｄ  Ｂｕｆｆｅｒであり、第１ホストシステム１００から送信されるライトパケットを一時的に格納する。第２入力バッファ３１２に格納されたライトパケットは出力バッファ３２０に順次入力される。第２入力バッファ３１２は、請求項の「第３記憶部」に対応する。
【００２４】
出力バッファ３２０は、リードリクエストパケットまたはライトパケットを一時的に格納する。この例では、出力バッファ３２０は、請求項の「第１記憶部」に対応する。出力バッファ３２０に格納されたパケット（リードリクエストパケットまたはライトパケット）は順次に第２ホストシステム２００へ送信される。
【００２５】
入力リードパケットカウンタ３３１は、第１入力バッファ３１１に格納されているリードリクエストパケットの数をカウントする。入力ライトパケットカウンタ３３２は、第２入力バッファ３１２に格納されているライトパケットの数をカウントする。出力リードパケットカウンタ３３３は、出力バッファ３２０に格納されているリードリクエストパケットの数をカウントする。出力ライトパケットカウンタ３３４は、出力バッファ３２０に格納されているライトパケットの数をカウントする。
【００２６】
バッファ制御部３４０は、上記各カウンタ（入力リードパケットカウンタ３３１、入力ライトパケットカウンタ３３２、出力リードパケットカウンタ３３３、出力ライトパケットカウンタ３３４）を監視して、ライトアクセスとリードアクセスが競合していて、かつ、バッファ（出力バッファ３２０）に格納されたライトパケットが、あらかじめ設定された制限値（閾値）以上である場合は、第１ホストシステム１００からのライトパケットの送信を停止させる制御を行う。
【００２７】
より具体的には以下のとおりである。まず、バッファ制御部３４０は、フロー制御部３５０に対して、ライトパケットの送信の停止（以下、「ライト抑止」と呼ぶ場合がある）を指示する。フロー制御部３５０は、通常時は、入力リードパケットカウンタ３３１及び入力ライトパケットカウンタ３３２の空き状態により、第１ホストシステム１００に対してフロー制御パケットを送信するが、バッファ制御部３４０によりライト抑止を指示された場合は、そのときの入力ライトパケットカウンタ３３２の値に関係なく、バッファに空きがない状態であることを示すフロー制御パケットを、第１ホストシステム１００へ送信する。バッファに空きがない状態であることを示すフロー制御パケットを受信した場合、第１ホストシステム１００は、スイッチ装置３００に対するライトパケットの送信を行わない。
【００２８】
以上のように、バッファ制御部３４０は、出力バッファ３２０に格納されたライトパケットの数が閾値以上の場合は、第１ホストシステム１００からのライトパケットの送信を停止させる制御を行う。より具体的には、バッファ制御部３４０は、出力バッファ３２０に格納されたライトパケットの数が閾値以上であり、かつ、少なくとも１つのリードリクエストパケットが出力バッファ３２０に格納されている場合は、第１ホストシステム１００からのライトパケットの送信を停止させる制御を行う。一方、バッファ制御部３４０は、出力バッファ３２０に格納されたライトパケットの数が閾値以上であっても、出力バッファ３２０内にリードリクエストパケットが存在しない場合は、第１ホストシステム１００からのライトパケットの送信を停止させる制御を行わない（フロー制御部３５０に対してライト抑止を指示しない）。
【００２９】
さらに詳述すれば、バッファ制御部３４０は、出力バッファ３２０に格納されたライトパケットの数が閾値以上であり、かつ、少なくとも１つのリードリクエストパケットが出力バッファ３２０または第１入力バッファ３１１の何れかに格納されている場合は、第１ホストシステム１００からのライトパケットの送信を停止させる制御を行う。一方、バッファ制御部３４０は、出力バッファ３２０に格納されたライトパケットの数が閾値以上であっても、出力バッファ３２０および第１入力バッファ３１１の何れにもリードリクエストパケットが存在しない場合は、第１ホストシステム１００からのライトパケットの送信を停止させる制御を行わない（フロー制御部３５０に対してライト抑止を指示しない）。ここでは、バッファ制御部３４０は、請求項の「制御部」に対応する。
【００３０】
さらに、バッファ制御部３４０は、第１ホストシステム１００がライトパケットの送信を行わないライト抑止状態で（言い換えれば、第１ホストシステム１００からのライトパケットの送信を停止させる制御を行った後）、出力バッファ３２０内のライトパケットの数が閾値を下回った場合は、第１ホストシステム１００からのライトパケットの送信停止を解除する制御を行う。より具体的には、バッファ制御部３４０は、フロー制御部３５０に対して、ライト抑止の解除を指示する。フロー制御部３５０は、ライト抑止解除を指示されると、通常時の制御に戻る。
【００３１】
本実施形態では、以上の構成を有するスイッチ装置３００は、半導体集積回路で構成されるスイッチチップである。すなわち、本実施形態では、上述の第１入力バッファ３１１、第２入力バッファ３１２、出力バッファ３２０、入力リードパケットカウンタ３３１、入力ライトパケットカウンタ３３２、出力リードパケットカウンタ３３３、出力ライトパケットカウンタ３３４、バッファ制御部３４０、および、フロー制御部３５０の各々の機能はハードウェア回路により実現される。
【００３２】
なお、これに限らず、例えばＣＰＵ、ＲＯＭおよびＲＡＭ等から構成されるコンピュータがスイッチ装置３００に搭載され、ＣＰＵがＲＯＭ等に格納されたプログラムをＲＡＭ上に展開して実行することにより、上述の第１入力バッファ３１１、第２入力バッファ３１２、出力バッファ３２０、入力リードパケットカウンタ３３１、入力ライトパケットカウンタ３３２、出力リードパケットカウンタ３３３、出力ライトパケットカウンタ３３４、バッファ制御部３４０、および、フロー制御部３５０の各々の機能のうちの少なくとも１つの機能が実現される形態であってもよい。
【００３３】
この場合、スイッチ装置３００で実行されるプログラム（スイッチ装置３００に搭載されたＣＰＵが実行するプログラム）は、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。さらに、スイッチ装置３００で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、スイッチ装置３００で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【００３４】
次に、本実施形態のスイッチ装置３００の動作例を説明する。図７は、本実施形態のスイッチ装置３００の動作例を示すフローチャートである。まず、スイッチ装置３００の初期設定時に、バッファ制御部３４０は、出力バッファ３２０内のライトパケット数の制限値（閾値）を設定する（ステップＳ７０１）。次に、パケットの送受信時に、バッファ制御部３４０は、各カウンタ（入力リードパケットカウンタ３３１、入力ライトパケットカウンタ３３２、出力リードパケットカウンタ３３３、出力ライトパケットカウンタ３３４）の値を読み出す（ステップＳ７０２）。
【００３５】
次に、バッファ制御部３４０は、出力ライトパケットカウンタ３３４の値（出力バッファ３２０内のライトパケット数を示すカウント値）が、ステップＳ７０１で設定した制限値以上であり、かつ、出力リードパケットカウンタ３３３の値（出力バッファ３２０内のリードリクエストパケット数を示すカウント値）、または、入力リードパケットカウンタ３３１の値（第１入力バッファ３１１内のリードリクエストパケット数を示すカウント値）が「１」以上であるか否かを判定する（ステップＳ７０３）。
【００３６】
上述のステップＳ７０３において、出力ライトパケットカウンタ３３４の値がステップＳ７０１で設定した制限値以上であり、かつ、出力リードパケットカウンタ３３３の値、または、入力リードパケットカウンタ３３１の値が「１」以上であると判定した場合（ステップＳ７０３の結果：ＹＥＳの場合）、バッファ制御部３４０は、フロー制御部３５０に対してライト抑止を指示する（ステップＳ７０４）。ライト抑止の指示を受けたフロー制御部３５０は、バッファに空きがない状態であることを示すフロー制御パケットを第１ホストシステム１００へ送信する（ステップＳ７０５）。
【００３７】
一方、出力ライトパケットカウンタ３３４の値がステップＳ７０１で設定した制限値を下回る場合、または、出力ライトパケットカウンタ３３４の値がステップＳ７０１で設定した制限値以上であるものの、出力リードパケットカウンタ３３３の値、および、入力リードパケットカウンタ３３１の値の何れもが「０」であると判定した場合（ステップＳ７０３の結果：ＮＯの場合）、バッファ制御部３４０は、現在、第１ホストシステム１００がライトパケットの送信を行わないライト抑止状態で、出力ライトパケットカウンタ３３４の値がステップＳ７０１で設定した制限値を下回るか否かを判定する（ステップＳ７０６）。
【００３８】
上述のステップＳ７０６において、現在、第１ホストシステム１００がライトパケットの送信を行わないライト抑止状態で、出力ライトパケットカウンタ３３４の値がステップＳ７０１で設定した制限値を下回ると判定した場合（ステップＳ７０６の結果：ＹＥＳの場合）、バッファ制御部３４０は、フロー制御部３５０に対して、ライト抑止の解除を指示する（ステップＳ７０７）。ライト抑止の解除の指示を受けたフロー制御部３５０は、本来の第２入力バッファ３１２の状態を示すフロー制御パケットを送信する（ステップＳ７０８）。
【００３９】
一方、上述のステップＳ７０６において、現在、第１ホストシステム１００がライトパケットの送信を行わないライト抑止状態ではない、または、ライト抑止状態であるものの、出力ライトパケットカウンタ３３４の値がステップＳ７０１で設定した制限値以上であると判定した場合（ステップＳ７０６の結果：ＮＯの場合）、処理は上述のステップＳ７０２に戻り、ステップＳ７０２以降の処理を繰り返す。
【００４０】
以上に説明したように、本実施形態では、出力バッファ３２０内のライトパケットの数が閾値以上であり、かつ、少なくとも１つのリードリクエストパケットが出力バッファ３２０または第１入力バッファ３１１の何れかに格納されている場合は、第１ホストシステム１００からのライトパケットの送信を停止させるので、出力バッファ３２０内に閾値以上のライトパケットが溜まることを防止できる。これにより、リードリクエストパケットを処理する時間を確保することができ、リードアクセスのスループットの低下を防ぐことができる。また、本実施形態では、特許文献１に開示された技術のように、リードアクセス用のライトパケットの送受信機能（リードアクセス用のライトパケットを生成する機能も含む）や、受信したパケットを識別し、その識別結果によりリードアクセスを実行する機能などの特別な機能を必要としないので、より簡易な構成で、リードアクセスのスループットの低下を防止できるという有利な効果を奏する。
【００４１】
以上、本発明の実施形態について説明したが、本発明は上述の実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の変形が可能である。
【符号の説明】
【００４２】
１      システム
１００  第１ホストシステム
１２０  チップセット
１３０  記憶装置
２００  第２ホストシステム
２２０  チップセット
２３０  記憶装置
３００  スイッチ装置
３１０  入力バッファ
３１１  第１入力バッファ
３１２  第２入力バッファ
３２０  出力バッファ
３３１  入力リードパケットカウンタ
３３２  入力ライトパケットカウンタ
３３３  出力リードパケットカウンタ
３３４  出力ライトパケットカウンタ
３４０  バッファ制御部
３５０  フロー制御部
【先行技術文献】
【特許文献】
【００４３】
【特許文献１】特開２０１０−２１２９８７号公報
【図１】
2014010613.tif 000003
【図２】
2014010613.tif 000004
【図３】
2014010613.tif 000005
【図４】
2014010613.tif 000006
【図５】
2014010613.tif 000007
【図６】
2014010613.tif 000008
【図７】
2014010613.tif 000009