(57)【要約】【課題】全サーバのソフトウェアのインストール等のデータ転送時間を大幅に短縮し、運用の手間と時間を削減する。【解決手段】ＵＳＢデバイス共有システムは、複数のサーバＡ１００を有する。サーバＡ１００のインタフェース部１０１は、ＵＳＢバス１を流れるパケットを解析する入力パケット解析部１１１と、その解析結果に応じてデータが取り込まれるデータバッファ１１０と、ＵＳＢコントローラ１０２からのパケットを一時保存するＦＩＦＯ１０６と、そのパケットを解析する出力パケット解析部１０５と、その解析結果に応じてリードデータと同一のデータがデータバッファ１１０に存在するか否かを判断し、これが存在するときにＦＩＦＯ１０６のパケットをＵＳＢバス１に出力することなく、データバッファ１１０からＵＳＢコントローラ１０２に同一データを返却するパケット出力制御部１０５とを備える。【選択図】図１
2007272643.tif 000002
【特許請求の範囲】
【請求項１】
複数のサーバを有し、前記複数のサーバが共通のＵＳＢバスを介してＵＳＢデバイスに接続されたシステムにおいて、
前記複数のサーバは、
前記ＵＳＢデバイスとの間でパケットを送受信するＵＳＢコントローラと、
前記ＵＳＢコントローラと前記ＵＳＢバスの間に配置されるインタフェース手段とを備え、
前記インタフェース手段は、
前記ＵＳＢバスを流れるパケットの内容を解析する第１のパケット解析手段と、
前記第１のパケット解析手段による前記パケットの解析結果に応じて前記複数のサーバと前記ＵＳＢデバイスとの間でリード及びライトされるデータをバッファに取り込むデータ取り込み手段と、
前記ＵＳＢコントローラから前記ＵＳＢデバイスに出力されるパケットを一時保存する一時保存手段と、
前記ＵＳＢコントローラから前記ＵＳＢデバイスに出力されるパケットの内容を解析する第２のパケット解析手段と、
前記第２のパケット解析手段による前記パケットの解析結果に応じて前記ＵＳＢデバイスからリードしようとするデータと同一のデータが前記バッファに存在するか否かを判断する判断手段と、
前記バッファに前記同一のデータが存在するときに前記一時保存手段のパケットを前記ＵＳＢバスに出力することなく、前記バッファから前記ＵＳＢコントローラに前記同一のデータを返却するパケット出力制御手段とを備えたことを特徴とするＵＳＢデバイス共有システム。
【請求項２】
前記第１のパケット解析手段は、前記ＵＳＢバスを流れるデバイスリクエストのアドレス情報から前記バッファのライトアドレスを生成し、
前記データ取り込み手段は、前記バッファのライトアドレスに基づいて前記ＵＳＢバスを流れるデータを前記バッファに取り込み、
前記第２のパケット解析手段は、前記ＵＳＢコントローラから前記ＵＳＢデバイスに対するデータリードのデバイスリクエストが発行されたときに前記デバイスリクエストのアドレス情報から前記バッファのリードアドレスを生成し、
前記判断手段は、前記バッファのリードアドレスに基づいて前記バッファに前記同一のデータが存在するか否かを判断することを特徴とする請求項１記載のＵＳＢデバイス共有システム。
【請求項３】
前記パケット出力制御手段は、
前記ＵＳＢコントローラに出力するためのハンドシェークパケットを生成するハンドシェーク生成部と、
前記ハンドシェーク生成部、前記ＵＳＢバス、及び前記バッファの出力側を選択的に切り替えて前記ＵＳＢコントローラ側に接続するマルチプレクサとを有することを特徴とする請求項２記載のＵＳＢデバイス共有システム。
【請求項４】
前記パケット出力制御手段は、
前記ＵＳＢコントローラからデータリードのデバイスリクエストが発行されたときに前記バッファに前記データリードに対応する同一のデータが存在する場合、前記デバイスリクエストを破棄するように前記一時保存手段に制御指令を与え、前記デバイスリクエストに対するＡＣＫハンドシェークパケットを生成するように前記ハンドシェーク生成部に制御指令を与え、前記ハンドシェーク生成部により生成された前記ＡＣＫハンドシェークパケットを前記ＵＳＢコントローラに出力するように前記マルチプレクサに制御指令を与える手段と、
前記ＡＣＫハンドシェークパケットに応答して前記ＵＳＢコントローラからＩＮトークンパケットが発行されたときに前記ＩＮトークンパケットを破棄するように前記一時保存手段に制御指令を与え、前記バッファから前記ＵＳＢコントローラに前記同一のデータを出力するように前記マルチプレクサに制御指令を与える手段と、
前記同一のデータが出力された後にＡＣＫハンドシェークパケットを生成するように前記ハンドシェーク生成部に制御指令を与え、前記ハンドシェーク生成部により生成された前記ＡＣＫハンドシェークパケットを前記ＵＳＢコントローラに出力するように前記マルチプレクサに制御指令を与える手段とをさらに有することを特徴とする請求項３記載のＵＳＢデバイス共有システム。
【請求項５】
前記パケット出力制御手段は、
前記ＵＳＢコントローラからデータリードのデバイスリクエストが発行されたときに前記バッファに前記データリードに対応する同一のデータが存在しないときに前記デバイスリクエストを前記ＵＳＢバスに出力するように前記一時保存手段に制御指令を与え、前記デバイスリクエストに応答して前記ＵＳＢデバイスから前記ＵＳＢバス経由で送られてくるＡＣＫハンドシェークパケットを前記ＵＳＢコントローラに出力するように前記マルチプレクサに制御指令を与える手段と、
前記ＡＣＫハンドシェークパケットに応答して前記ＵＳＢコントローラからＩＮトークンパケットが発行されたときに前記ＩＮトークンパケットを前記ＵＳＢバスに出力するように前記一時保存手段に制御指令を与え、前記ＩＮトークンパケットに応答して前記ＵＳＢデバイスから前記ＵＳＢバス経由で送られてくるデータパケットを前記ＵＳＢコントローラに出力するように前記マルチプレクサに制御指令を与える手段とをさらに有することを特徴とする請求項４記載のＵＳＢデバイス共有システム。
【請求項６】
前記パケット出力制御手段は、
前記ＵＳＢコントローラによるデータライトのデバイスリクエストが発行されたときに前記デバイスリクエストを前記ＵＳＢバスに出力するように前記一時保存手段に制御指令を与え、前記デバイスリクエストに応答して前記ＵＳＢデバイスから前記ＵＳＢバス経由で送られてくるＡＣＫハンドシェークパケットを前記ＵＳＢコントローラに出力するように前記マルチプレクサに制御指令を与える手段と、
前記ＡＣＫハンドシェークパケットに応答して前記ＵＳＢコントローラからＯＵＴトークンパケットが発行されたときに前記ＯＵＴトークンパケット及びこれに対応するデータパケットを前記ＵＳＢバスに出力するように前記一時保存手段に制御指令を与え、
前記データパケットの転送が完了したときに前記ＵＳＢデバイスから前記ＵＳＢバス経由で送られてくるＡＣＫハンドシェークパケットを前記ＵＳＢコントローラに出力するように前記マルチプレクサに制御指令を与える手段とを有することを特徴とする請求項３乃至５のいずれか１項に記載のＵＳＢデバイス共有システム。
【請求項７】
前記パケット出力制御手段は、
前記ＵＳＢバスが他のサーバにより使用されている間に前記ＵＳＢコントローラからパケットが出力されたときに前記パケットを破棄するように前記一時保存手段に指令を与え、前記デバイスリクエストに対するＮＡＣＫハンドシェークパケットを生成するように前記ハンドシェーク生成部に制御指令を与え、前記ハンドシェーク生成部により生成された前記ＮＡＣＫハンドシェークパケットを前記ＵＳＢコントローラに出力するように前記マルチプレクサに制御指令を与える手段をさらに有することを特徴とする請求項３乃至６のいずれか１項に記載のＵＳＢデバイス共有システム。
【請求項８】
複数のサーバが共通のＵＳＢバスを介してＵＳＢデバイスに接続されたシステムで使用され、前記複数のサーバに搭載されたＵＳＢコントローラと前記ＵＳＢバスとの間に配置されるインタフェース装置であって、
前記ＵＳＢバスを流れるパケットの内容を解析する第１のパケット解析手段と、
前記第１のパケット解析手段による前記パケットの解析結果に応じて前記複数のサーバと前記ＵＳＢデバイスとの間でリード及びライトされるデータをバッファに取り込むデータ取り込み手段と、
前記ＵＳＢコントローラから前記ＵＳＢデバイスに出力されるパケットを一時保存する一時保存手段と、
前記ＵＳＢコントローラから前記ＵＳＢデバイスに出力されるパケットの内容を解析する第２のパケット解析手段と、
前記第２のパケット解析手段による前記パケットの解析結果に応じて前記ＵＳＢデバイスからリードしようとするデータと同一のデータが前記バッファに存在するか否かを判断する判断手段と、
前記バッファに前記同一のデータが存在しないときに前記一時保存手段のパケットを前記ＵＳＢバスに出力する一方、前記バッファに前記同一のデータが存在するときに前記一時保存手段のパケットを前記ＵＳＢバスに出力することなく、前記バッファから前記ＵＳＢコントローラに前記同一のデータを返却するパケット出力制御手段とを備えたことを特徴とするサーバのインタフェース装置。
【請求項９】
複数のサーバが共通のＵＳＢバスを介してＵＳＢデバイスに接続されたシステムで使用され、前記複数のサーバに搭載されたＵＳＢコントローラと前記ＵＳＢバスとの間に配置されるインタフェース装置の動作方法であって、
前記ＵＳＢバスを流れるパケットの内容を解析し、その解析結果に応じて前記複数のサーバと前記ＵＳＢデバイスとの間でリード及びライトされるデータをバッファに取り込むステップと、
前記ＵＳＢコントローラから前記ＵＳＢデバイスに出力されるパケットを一時保存すると共に、そのパケットの内容を解析するステップと、
前記パケットの解析結果に応じて前記ＵＳＢデバイスからリードしようとするデータと同一のデータが前記バッファに存在するか否かを判断し、前記バッファに前記同一のデータが存在するときに一時保存されたパケットを前記ＵＳＢバスに出力することなく、前記バッファから前記ＵＳＢコントローラに前記同一のデータを返却するステップとを備えたことを特徴とするインタフェース装置の動作方法。
【請求項１０】
複数のサーバが共通のＵＳＢバスを介してＵＳＢデバイスに接続されたシステムで使用され、前記複数のサーバに搭載されたＵＳＢコントローラと前記ＵＳＢバスとの間に配置されるインタフェース装置の動作プログラムであって、
前記ＵＳＢバスを流れるパケットの内容を解析し、その解析結果に応じて前記複数のサーバと前記ＵＳＢデバイスとの間でリード及びライトされるデータをバッファに取り込むステップと、
前記ＵＳＢコントローラから前記ＵＳＢデバイスに出力されるパケットを一時保存すると共に、そのパケットの内容を解析するステップと、
前記パケットの解析結果に応じて前記ＵＳＢデバイスからリードしようとするデータと同一のデータが前記バッファに存在するか否かを判断し、前記バッファに前記同一のデータが存在するときに一時保存されたパケットを前記ＵＳＢバスに出力することなく、前記バッファから前記ＵＳＢコントローラに前記同一のデータを返却するステップとをコンピュータに実行させることを特徴とするインタフェース装置の動作プログラム。
【請求項１１】
複数のサーバを有し、前記複数のサーバが共通のバスを介してデバイスに接続されたシステムにおいて、
前記複数のサーバは、
前記デバイスとの間でパケットを送受信するコントローラと、
前記コントローラと前記バスの間に配置されるインタフェース手段とを備え、
前記インタフェース手段は、
前記バスを流れるパケットの内容を解析する第１のパケット解析手段と、
前記第１のパケット解析手段による前記パケットの解析結果に応じて前記複数のサーバと前記デバイスとの間でリード及びライトされるデータをバッファに取り込むデータ取り込み手段と、
前記コントローラから前記デバイスに出力されるパケットを一時保存する一時保存手段と、
前記コントローラから前記デバイスに出力されるパケットの内容を解析する第２のパケット解析手段と、
前記第２のパケット解析手段による前記パケットの解析結果に応じて前記デバイスからリードしようとするデータと同一のデータが前記バッファに存在するか否かを判断する判断手段と、
前記バッファに前記同一のデータが存在するときに前記一時保存手段のパケットを前記バスに出力することなく、前記バッファから前記コントローラに前記同一のデータを返却するパケット出力制御手段とを備えたことを特徴とするデバイス共有システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のサーバが共通のＵＳＢバスを介してＵＳＢデバイスに接続されたＵＳＢデバイス共有システム、これで用いるサーバのインタフェース装置、その動作方法、その動作プログラム、及びデバイス共有システムに係り、特に複数のサーバがＵＳＢデバイスのデータキャッシュ機能を持ち、ＵＳＢデバイスを同時に使用可能としたＵＳＢデバイス共有方式に関する。
【背景技術】
【０００２】
ブレードサーバのように複数のサーバを一台のシャーシに搭載するような装置では、各サーバにＣＤ−ＲＯＭ（Compact Disk Read Only Memory）ドライブやフロッピー（登録商標）ディスクドライブ（以下、ＦＤＤ）などの周辺装置を搭載すると実装面積やコストの面で問題がある。このため、シャーシに各周辺装置を一台ずつ搭載し、複数のサーバが同時にその周辺装置を使用しないようにスイッチで周辺装置を使用するサーバを切り替える方式が取られていた。
【０００３】
サーバと周辺装置を接続するインタフェースには、現在最も普及しているためコストと装置の品揃えの点で有利なＵＳＢ（Universal Serial Bus）が普通使用される。また、サーバ用途においては、周辺装置は主にＯＳ（オペレーティングシステム）などのソフトウェアのインストールに使用され、運用中に使用されることは少ない。
【０００４】
なお、本発明に関連する先行技術として、データ転送にかかる時間を短縮するようにした並列型ディジタル信号処理装置（特許文献１参照）や、コモンバス方式を採用した記憶システム（特許文献２参照）が提案されている。
【特許文献１】特開平０４−１３８５５４号公報
【特許文献２】特許第３２６４４６５号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、前述したような周辺装置を使用するサーバを切り替える方式の装置では、一台ずつ順番にソフトウェアのインストールを行わなければならないため、特にサーバ台数が多くなると多大な手間と時間が必要であった。前述した先行技術は、必ずしもこのような課題を認識してなされたものではない。
【０００６】
本発明は、このような従来の事情を考慮してなされたもので、複数のサーバが同一の周辺装置を使用するシステムにおいて、サーバ台数に拠らず全サーバのソフトウェアのインストール等のデータ転送時間を大幅に短縮し、運用の手間と時間を削減することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明に係るＵＳＢデバイス共有システムは、複数のサーバを有し、前記複数のサーバが共通のＵＳＢバスを介してＵＳＢデバイスに接続されたシステムにおいて、前記複数のサーバは、前記ＵＳＢデバイスとの間でパケットを送受信するＵＳＢコントローラと、前記ＵＳＢコントローラと前記ＵＳＢバスの間に配置されるインタフェース手段とを備え、前記インタフェース手段は、前記ＵＳＢバスを流れるパケットの内容を解析する第１のパケット解析手段と、前記第１のパケット解析手段による前記パケットの解析結果に応じて前記複数のサーバと前記ＵＳＢデバイスとの間でリード及びライトされるデータをバッファに取り込むデータ取り込み手段と、前記ＵＳＢコントローラから前記ＵＳＢデバイスに出力されるパケットを一時保存する一時保存手段と、前記ＵＳＢコントローラから前記ＵＳＢデバイスに出力されるパケットの内容を解析する第２のパケット解析手段と、前記第２のパケット解析手段による前記パケットの解析結果に応じて前記ＵＳＢデバイスからリードしようとするデータと同一のデータが前記バッファに存在するか否かを判断する判断手段と、前記バッファに前記同一のデータが存在するときに前記一時保存手段のパケットを前記ＵＳＢバスに出力することなく、前記バッファから前記ＵＳＢコントローラに前記同一のデータを返却するパケット出力制御手段とを備えたことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、複数のサーバが同一の周辺装置を使用するシステムにおいて、サーバ台数に拠らず全サーバのソフトウェアのインストール等のデータ転送時間を大幅に短縮し、運用の手間と時間を削減することができる。
【発明を実施するための最良の形態】
【０００９】
次に、本発明に係るＵＳＢデバイス共有システム、これで用いるサーバのインタフェース装置及びその動作方法を実施するための最良の形態について図面を参照して詳細に説明する。
【００１０】
図１を参照すると、本発明の一実施例としてのＵＳＢデバイス共有システムのブロック図が示されている。
【００１１】
図において、サーバＡ１００とサーバＢ２００は、全く同一のハードウェア構成となっており、ＵＳＢバス１を介してＵＳＢ  ＨＵＢ（ＵＳＢハブ）２に接続されている。ＵＳＢ  ＨＵＢ２には、ＵＳＢデバイスであるＣＤ−ＲＯＭドライブ３とＦＤＤドライブ４が接続され、ＵＳＢバス１、ＵＳＢ  ＨＵＢ２を介してサーバＡ１００、サーバＢ２００に共有される。
【００１２】
サーバＡ１００は、ＵＳＢコントローラ１０２と、これとＵＳＢバス１との間に設けられるインタフェース部（本発明のインタフェース手段又は装置を成す）１０１とを備える。なお、ＵＳＢコントローラ１０２と、インタフェース部１０１とは、それぞれの機能を実現可能な構成であれば、一体の装置でも、或いは別体の装置でも、いずれでも構成することが可能である。
【００１３】
インタフェース部１０１は、マルチプレクサ１０４、出力パケット解析部１０５、出力パケット一時待避ＦＩＦＯ（First in First out）（ＦＩＦＯバッファ）１０６、ハンドシェーク生成部１０７、パケット出力判断部１０８、データバッファ１１０、入力リクエスト解析部１１１、及びＵＳＢバス監視部１１２を備える。これら各部の少なくとも一部の機能は、プロセッサ（例えばＣＰＵ（Central Processing Unit））により実行されるプログラムコードで実現することが可能である。この場合、プロセッサ及びプログラムコードが構成要素として含まれる。
【００１４】
ＵＳＢコントローラ１０２が出力したデバイスリクエストは、出力パケット解析部１０５と出力パケット一時待避ＦＩＦＯ１０６が受信する。
【００１５】
出力パケット解析部１０５は、ＵＳＢコントローラ１０２が出力したデバイスリクエストを解析し、そのデバイスリクエスト内のアドレス情報からデータバッファ１１０のリードアドレスを生成する。また、ＵＳＢコントローラ１０２が出力したデバイスリクエスト、トークンパケットの種類をパケット出力判断部１０８へ報告する。
【００１６】
出力パケット一時待避ＦＩＦＯ１０６は、ＵＳＢコントローラ１０２が出力したパケットを一時的に保存し、パケット出力判断部１０８の指示に応じて、パケットをＵＳＢバス１に出力するか破棄するかのどちらかの処理を行う。
【００１７】
パケット出力判断部１０８は、出力パケット解析部１０５から受け取るパケットの情報とデータバッファ１１０のデータ格納状況とＵＳＢバス監視部１１２から受け取るＵＳＢバスの使用状況から、出力パケット一時待避ＦＩＦＯ１０６に保存されているパケットをＵＳＢバス１に出力するかどうかの判断と、マルチプレクサ１０４をどの向きに切り替えるかの判断と、ハンドシェーク生成部１０７がどのハンドシェークを生成するかの判断とを行い、その状況に応じて指示を出す。
【００１８】
ＵＳＢバス監視部１１２は、ＵＳＢバス１が使用中かどうかを監視し、ＵＳＢバス１の使用状況をパケット出力判断部１０８に伝える。
【００１９】
入力リクエスト解析部１１１は、ＵＳＢバス１に流れるデバイスリクエストを解析し、そのデバイスリクエスト内のアドレス情報からデータバッファ１１０のライトアドレスを生成する。
【００２０】
データバッファ１１０は、ＵＳＢバス１に流れるデータパケットを入力パケット解析部１１１から指定されたアドレスへ書き込み、出力パケット解析部１０５が指定したアドレスのデータをマルチプレクサ１０４へ出力する。また、出力パケット解析部１０５が指定したアドレスにデータが格納されているかどうかをパケット出力判断部１０８へ報告する。
【００２１】
ハンドシェーク生成部１０７は、パケット出力判断部１０８の指示に従い、ＡＣＫまたはＮＡＣＫハンドシェークパケットを生成する。
【００２２】
マルチプレクサ１０４は、パケット出力判断部１０８の指示に応じて、ＵＳＢバス１から入力したパケット、データバッファ１１０が出力したデータパケット、ハンドシェーク生成部１０７が生成したハンドシェークパケットのいずれかから、ＵＳＢコントローラ１０２に出力するパケットを選択する。
【００２３】
サーバＢ２００も、上記のサーバＡ１００と同一の構成であり、ＵＳＢコントローラ２０２及びインタフェース部２０１を備える。インタフェース部２０１は、マルチプレクサ２０４、出力パケット解析部２０５、出力パケット一時待避ＦＩＦＯ２０６、ハンドシェーク生成部２０７、パケット出力判断部２０８、データバッファ２１０、入力リクエスト解析部２１１、及びＵＳＢバス監視部２１２を備える。これら各部の機能は、上記のサーバＡ１００の各部の機能と同一であるため、その説明は省略する。
【００２４】
次に、図１の回路の動作について、図２〜図４を参照して説明する。図２〜図４は、パケット出力判断部１０８の処理動作を示す。
（データリード時）
最初に、図２を参照して、ＵＳＢデバイスからデータをリードする場合の動作を説明する。
【００２５】
まず、サーバＡ１００がＣＤ−ＲＯＭドライブ３からデータをリードする場合、ＵＳＢコントローラ１０２は、最初にデバイスリクエストを発行する。デバイスリクエストは、トークンパケットとデータパケットから構成される。ＵＳＢコントローラ１０２が出力したデバイスリクエストは、パケット一時待避ＦＩＦＯ１０６に保存されると同時に、出力パケット解析部１０５が受信する。
【００２６】
出力パケット解析部１０５は、受信したデバイスリクエストを解析し、そのデバイスリクエスト内のアドレス情報からデータバッファ１１０のリードアドレスを生成すると同時に、パケット出力判断部１０８へデータリードのデバイスリクエストが発行されたことを通知する。データバッファ１１０は、出力パケット解析部１０５により生成されたリードアドレスに対応したデータが格納されているかどうかをパケット出力判断部１０８に通知する。ここで、データバッファ１１０にデータが格納されていない場合と、既に格納されている場合とで処理が分かれる。
【００２７】
データバッファ１１０にデータが格納されていない場合、パケット出力判断部１０８は、データリードのデバイスリクエストが発行されたことと、データバッファ１１０にデータが格納されていないことの二点の条件より、デバイスリクエストをＵＳＢバス１に出力し、出力されたデバイスリクエストに対するハンドシェークパケットがＣＤ−ＲＯＭドライブから返却されると判断する（ステップＳｔ１：ＹＥＳ、ステップＳｔ２：ＮＯ）。その判断結果より、パケット出力判断部１０８は、パケット一時待避ＦＩＦＯ１０６に保存しているデバイスリクエストをＵＳＢバス１に出力するよう指示し、マルチプレクサ１０４をＵＳＢバス１側に切り替える（ステップＳｔ３）。ＵＳＢバス１に出力されたデバイスリクエストは、サーバＡ１００とサーバＢ２００、およびＵＳＢ  ＨＵＢ２が受信する。
【００２８】
サーバＡ１００、サーバＢ２００の入力パケット解析部１１１、２１１は、受信したデバイスリクエストを解析し、そのデバイスリクエスト内のアドレス情報からデータバッファ１１０、２１０のライトアドレスを生成する。ＵＳＢ  ＨＵＢ２は、受信したデバイスリクエストをＣＤ−ＲＯＭ３に出力し、ＣＤ−ＲＯＭ３は、デバイスリクエストを受信したため、ＡＣＫハンドシェークパケットを出力する。出力されたＡＣＫハンドシェークパケットは、ＵＳＢ  ＨＵＢ２を経由して、ＵＳＢバス１へ出力され、サーバＡ１００とサーバＢ２００が受信する。
【００２９】
サーバＡ１００は、マルチプレクサ１０４がＵＳＢバス１側を向いているため、ＡＣＫハンドシェークパケットは、ＵＳＢコントローラ１０２へ出力される。サーバＢ２００は、マルチプレクサ２０４がＵＳＢバス１側を向いていないため、ＡＣＫハンドシェークパケットは破棄される。
【００３０】
サーバＡ１００のＵＳＢコントローラ１０２は、ＡＣＫハンドシェークパケット受信により、ＣＤ−ＲＯＭドライブ３がデータパケットを出力する準備ができたと認識し、ＩＮトークンパケットを出力する。出力されたＩＮトークンパケットは、出力パケット解析部１０５と出力パケット一時待避ＦＩＦＯ１０６が受信し、出力パケット解析部１０５は、パケット出力判断部１０８へＩＮトークンパケットが発行されたことを報告する。
【００３１】
パケット出力判断部１０８は、ＩＮトークンパケット発行の報告を受けると（ステップＳｔ４：ＹＥＳ）、出力パケット一時待避ＦＩＦＯ１０６へＩＮトークンパケットをＵＳＢバス１へ出力するよう指示し、さらにＣＤ−ＲＯＭ３から返却されるデータパケットをＵＳＢコントローラ１０２が受信できるようマルチプレクサ１０４をＵＳＢバス１側に切り替える（ステップＳｔ５）。ＵＳＢバス１に出力されたＩＮトークンパケットはＵＳＢ  ＨＵＢを経由してＣＤ−ＲＯＭドライブ３が受信し、ＣＤ−ＲＯＭドライブ３は、それによりデータパケットを出力する。データパケットは、ＵＳＢ  ＨＵＢ２を経由してＵＳＢバス１へ出力され、サーバＡ１００とサーバＢ２００が受信する。
【００３２】
サーバＡ１００、サーバＢ２００のデータバッファ１１０、２１０は、入力パケット解析部１１１、２１１が指示したアドレスへデータパケットを格納する。サーバＡ１００では、マルチプレクサ１０４がＵＳＢバス１側を向いているため、データパケットはバッファ１１０に格納されると共にＵＳＢコントローラ１０２へ出力される。
【００３３】
ＵＳＢコントローラ１０２は、データパケットを全て受信するとＡＣＫハンドシェークパケットを出力する。出力されたＡＣＫハンドシェークはＩＮトークンと同様の手順でＣＤ−ＲＯＭドライブ３へ転送され、ＣＤ−ＲＯＭドライブ３からのデータリードが完了する。この時点で、サーバＡ１００とサーバＢ２００のデータバッファ１１０、２１０にＣＤ−ＲＯＭドライブ３のデータが格納された状態となる。
【００３４】
データバッファ１１０にデータが格納されている場合、パケット出力判断部１０８は、データリードのデバイスリクエストが発行されたことと、データバッファ１１０にデータパケットが格納されていることの二点の条件より、デバイスリクエストをＵＳＢバス１に出力しないで、データバッファ１１０に格納されたデータパケットをＵＳＢコントローラ１０２に出力すると判断する（ステップＳｔ１：ＹＥＳ、ステップＳｔ２：ＹＥＳ）。その判断結果より、パケット出力判断部１０８は、パケット一時待避ＦＩＦＯ１０６に保存していたデバイスリクエストを破棄し、ＡＣＫハンドシェークパケットを生成するようハンドシェーク生成部１０７に指示し、マルチプレクサ１０４をハンドシェーク生成部１０７側に切り替える（ステップＳｔ６）。生成されたＡＣＫハンドシェークパケットは、マルチプレクサ１０４を経由し、ＵＳＢコントローラ１０２へ出力される。
【００３５】
ＵＳＢコントローラ１０２は、ハンドシェークパケット受信によりＣＤ−ＲＯＭドライブ３がデータを出力する準備ができたと認識し、ＩＮトークンパケットを出力する。出力されたＩＮトークンパケットは、出力パケット解析部１０５と出力パケット一時待避ＦＩＦＯ１０６が受信し、出力パケット解析部１０５は、パケット出力判断部１０８へＩＮトークンパケットが発行されたことを報告する。
【００３６】
パケット出力判断部１０８は、ＩＮトークンパケット発行の報告を受けると（ステップＳｔ７：ＹＥＳ）、出力パケット一時待避ＦＩＦＯ１０６へＩＮトークンパケットを破棄するよう指示し、マルチプレクサ１０４をデータバッファ１１０側へ切り替える（ステップＳｔ８）。データバッファ１１０が出力したデータパケットはマルチプレクサ１０４を経由してＵＳＢコントローラ１０２へ出力されると同時にパケット出力判断部１０８により監視される。
【００３７】
続いて、パケット出力判断部１０８は、データパケットが全て出力されると（ステップＳｔ９：ＹＥＳ）、ハンドシェーク生成部１０７へＡＣＫハンドシェークパケットを生成するよう指示し、マルチプレクサ１０４をハンドシェーク生成部１０７側へ切り替える（ステップＳｔ１０）。生成されたＡＣＫハンドシェークをＵＳＢコントローラ１０２が受信し、データリードが完了する。このように、データバッファ１１０に既にデータが格納されている場合、ＵＳＢバス１には全くパケットが流れない。
（データライト時）
次に、図３を参照して、ＵＳＢデバイスにデータをライトする場合の動作を説明する。
【００３８】
サーバＡ１００がＦＤＤドライブ４へデータをライトする場合、ＵＳＢコントローラ１０２は最初にデバイスリクエストを発行する。ＵＳＢコントローラ１０２が出力したデバイスリクエストは、パケット一時待避ＦＩＦＯ１０６に保存されると同時に、出力パケット解析部１０５が受信する。出力パケット解析部１０５は受信したデバイスリクエストを解析し、パケット出力判断部１０８へデータライトのデバイスリクエストが発行されたことを通知する。
【００３９】
パケット出力判断部１０８は、データライトのデバイスリクエストが発行されたため、デバイスリクエストをＵＳＢバス１に出力し、出力されたデバイスリクエストに対するハンドシェークパケットがＦＤＤドライブ３から返却されると判断する（ステップＳｔ１１：ＹＥＳ）。
【００４０】
その判断結果より、パケット出力判断部１０８は、パケット一時待避ＦＩＦＯ１０６に、保存していたデバイスリクエストをＵＳＢバス１に出力するよう指示し、マルチプレクサ１０４をＵＳＢバス１側に切り替える（ステップＳｔ１２）。ＵＳＢバス１に出力されたデバイスリクエストは、サーバＡ１００とサーバＢ２００、および、ＵＳＢ  ＨＵＢ２が受信する。
【００４１】
サーバＡ１００、サーバＢ２００の入力パケット解析部１１１、２１１は受信したデバイスリクエストを解析し、データバッファ１１０、２１０のライトアドレスを生成する。ＵＳＢ  ＨＵＢ２はデバイスリクエストをＦＤＤドライブ４に出力し、ＦＤＤドライブ４はデバイスリクエストを受信したため、ＡＣＫハンドシェークパケットを出力する。出力されたハンドシェークパケットはＵＳＢ  ＨＵＢ２を経由して、ＵＳＢバス１へ出力され、サーバＡ１００とサーバＢ２００が受信する。
【００４２】
サーバＡ１００は、マルチプレクサ１０４がＵＳＢバス１側を向いているため、ハンドシェークパケットはＵＳＢコントローラ１０２へ出力される。サーバＢ２００は、マルチプレクサ２０４がＵＳＢバス１側を向いていないため、ハンドシェークパケットは破棄される。
【００４３】
サーバＡ１００のＵＳＢコントローラ１０２は、ハンドシェークパケットを受信により、ＦＤＤドライブ４がデータを受信する準備ができたと判断し、ＯＵＴトークンパケットとデータパケットを出力する。出力されたＯＵＴトークンパケットは、出力パケット解析部１０５と出力パケット一時待避ＦＩＦＯ１０６が受信し、出力パケット解析部１０５はパケット出力判断部１０８へＯＵＴトークンパケットが発行されたことを報告する。
【００４４】
パケット出力判断部１０８は、ＯＵＴトークンパケット発行の報告を受けると（ステップＳｔ１３：ＹＥＳ）、出力パケット一時待避ＦＩＦＯ１０６へＯＵＴトークンパケットと、その後ＵＳＢコントローラ１０２が出力するデータパケットをＵＳＢバス１へ出力するよう指示する（ステップＳｔ１４）。ＵＳＢバス１に出力されたＯＵＴトークンパケットとデータパケットは、サーバＡ１００とサーバＢ２００、およびＵＳＢ  ＨＵＢ２が受信する。
【００４５】
ＵＳＢ  ＨＵＢ２は受信したパケットをＦＤＤドライブ４へ転送する。サーバＡ１００とサーバＢ２００が受信したＯＵＴトークンパケットは破棄され、データパケットはデータバッファ１１０、２１０に格納される。このとき、格納するアドレスは入力パケット解析部１１１、２１１がデバイスリクエストから生成したものである。
【００４６】
ＵＳＢコントローラ１０２がデータパケットを出力している間、パケット出力判断部１０８は、データパケットの転送完了を監視する（ステップＳｔ１５）。データパケットの転送が完了すると（ステップＳｔ１５：ＹＥＳ）、パケット出力判断部１０８は、ＦＤＤドライブ４が出力するハンドシェークパケットをＵＳＢコントローラ１０２が受信できるようにするため、マルチプレクサ１０４をＵＳＢバス１側に切り替える（ステップＳｔ１６）。
【００４７】
ＦＤＤドライブ４は、データパケットを全て受信すると、ＡＣＫハンドシェークパケットを出力する。出力されたＡＣＫハンドシェークパケットはＵＳＢ  ＨＵＢ２を経由してＵＳＢバス１へ出力され、サーバＡ１００とサーバＢ２００が受信する。
【００４８】
サーバＡ１００では、マルチプレクサ１０４がＵＳＢバス１側を向いているため、ＡＣＫハンドシェークパケットはＵＳＢコントローラ１０２へ出力される。サーバＢ２００では破棄される。このように、ＵＳＢコントローラ１０２がＵＳＢデバイスにデータをライトした場合、データバッファ１１０、２１０の内容も更新されるためデータの整合が保たれる。
（他のサーバがＵＳＢバス使用時）
最後に、図４を参照して、ＵＳＢバスが他のサーバに使用されている場合の動作を説明する。
【００４９】
サーバＢ２００がＵＳＢバス１を使用する場合、最初にトークンパケットがＵＳＢバス１を流れ、最後にハンドシェークパケットがＵＳＢバス１を流れる。サーバＡ１００のＵＳＢバス監視部１１２は、ＵＳＢバス１にトークンパケットが流れてからハンドシェークパケットが流れるまでの間、パケット出力判断部１０８へＵＳＢバス１へのパケット出力を抑止するよう指示する。
【００５０】
パケット出力判断部１０８は、ＵＳＢバス監視部１１２からパケット出力を抑止するよう指示されている間に、ＵＳＢコントローラ１０２がパケットを出力しようとした場合（ステップＳｔ２１：ＹＥＳ）、出力パケット一時待避ＦＩＦＯ１０６へのパケット破棄と、ハンドシェーク生成部１０７へのＮＡＣＫハンドシェークパケット生成を指示し、マルチプレクサ１０４をハンドシェーク１０７側へ切り替え、ＵＳＢコントローラ１０２へＮＡＣＫハンドシェークパケットを出力する（ステップＳｔ２２）。
【００５１】
ＵＳＢコントローラ１０２は、ＮＡＣＫハンドシェークパケットを受信したため、リトライ処理を行う。
【００５２】
以上説明したように、本実施例では、サーバＡ１００がＣＤ−ＲＯＭドライブ３からデータを取得する際、ＵＳＢコントローラ１０２が発行したデバイスリクエストを、サーバＡ１００、サーバＢ２００それぞれの入力パケット解析部１１１、２１１が解析し、リクエスト内のアドレス情報からデータバッファ１１０、２１０のライトアドレスを生成する。そして、ＣＤ−ＲＯＭドライブ３から前記デバイスリクエストに対する応答が帰ってくると、データバッファ１１０、２１０にＣＤ−ＲＯＭドライブ３からの応答内容を記録する。サーバＢ２００が同一アドレスに対するデータを取得する場合は、ＵＳＢコントローラ２０２が発行したデバイスリクエストを出力パケット解析部２０５が解析し、そのリクエスト内のアドレス情報からデータバッファ２１０のリードアドレスを生成し、データを読み出す。
【００５３】
このように、本実施例では、ＵＳＢデバイスの内容を各サーバにバッファすることで、各サーバがＵＳＢデバイスを同時に使用することを可能とする。また、各サーバにＵＳＢデバイスのデータをキャッシュすることにより、サーバの切り替えによるオーバヘッドが減少し、さらに、ＵＳＢバスの使用効率が向上するため、全サーバのソフトウェアのインストール時間を大幅に短縮することが可能となる。また、サーバを切り替えるためのスイッチ操作が不要となるため、運用の手間が削減できる。
【００５４】
従って、本実施例によれば、複数のホストとなるサーバがＵＳＢデバイスを共有する装置において、ホスト側にＵＳＢデバイスのデータキャッシュ機能を持たせることにより、複数のホストがＵＳＢデバイスを同時に使用できる。
【００５５】
以上説明したように、本実施例によれば、以下に記載するような効果を奏する。
【００５６】
第１の効果は、各サーバにデータがキャッシュされている場合、ＵＳＢバスを使用することなくデータ転送が完了するので、ＵＳＢバスを有効活用できることである。
【００５７】
第２の効果は、各サーバがＵＳＢデバイスのデータをキャッシュしているので、サーバを切り替えることなくＵＳＢデバイスを共有できることである。
【００５８】
第３の効果は、サーバを切り替えることなくＵＳＢデバイスを共有できるので、運用の手間を削減できることである。
【００５９】
なお、本実施例では、２台のサーバＡ１００、Ｂ２００でＵＳＢデバイスを共有する例を示したが、図５に示すようにインタフェース部１０１、２０１と同様のインタフェース部３０１、…、ｎ０１を３台目以降の各サーバＣ３００、…、サーバｎ００のＵＳＢコントローラ３０１、…、ｎ０１とＵＳＢバス１との間に設ければ、３台以上のサーバ１００、２００、３００、…、ｎ００でも共通のＵＳＢバス１を介してＵＳＢデバイス（ＣＤ−ＲＯＭドライブ３、ＦＤＤドライブ４）を共有することが可能である。この場合でも、上記と同様の作用効果が得られる。
【００６０】
また、本実施例では、複数のサーバが共通のＵＳＢバスを介してＵＳＢデバイスを共有する場合を説明したが、複数のサーバがＵＳＢバス以外の共通のバスを介してＵＳＢデバイス以外の周辺装置を共有する場合でも適用可能である。
【００６１】
以上、本発明の実施例を詳細に説明したが、本発明は、代表的に例示した上述の実施例に限定されるものではなく、当業者であれば、特許請求の範囲の記載内容に基づき、本発明の要旨を逸脱しない範囲内で種々の態様に変形、変更することができる。これらの変形例や変更例も本発明の権利範囲に属するものである。
【００６２】
また、本実施例に係るＵＳＢデバイス共有システムを構成する各部の少なくとも一部の機能を、プログラムコードを用いて実現する場合、かかるプログラムコード及びこれを記録する記録媒体は、本発明の範疇に含まれる。この場合のプログラムコードは、オペレーティングシステムや他のアプリケーションソフト等と共同して上記機能が実現される場合は、それらのプログラムコードも含まれる。また、記録媒体としては、ハードディスクやＲＯＭ（Read Only Memory）のほか、フレキシブルディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、磁気テープ、不揮発性のメモリカード等を用いることができる。
【産業上の利用可能性】
【００６３】
本発明は、例えばブレードサーバのように複数のサーバを一台のシャーシに搭載するような装置の用途にも適用できる。
【図面の簡単な説明】
【００６４】
【図１】本発明の実施例に係るＵＳＢデバイス共有システムの全体構成を示すブロック図である。
【図２】本発明の実施例において、データリード時のパケット出力制御部の処理を示すフローチャートである。
【図３】本発明の実施例において、データライト時のパケット出力制御部の処理を示すフローチャートである。
【図４】本発明の実施例において、他のサーバがＵＳＢバスを使用している時のパケット出力制御部の処理を示すフローチャートである。
【図５】本発明の実施例を３台以上のサーバに適用した場合のＵＳＢデバイス共有システムの全体構成を示す概略ブロック図である。
【符号の説明】
【００６５】
１  ＵＳＢバス
２  ＵＳＢ  ＨＵＢ
３  ＣＤ−ＲＯＭドライブ
４  ＦＤＤドライブ
１００、２００  サーバＡ、Ｂ
１０１、２０１  インタフェース部
１０２、２０２  ＵＳＢコントローラ
１０４、２０４  マルチプレクサ
１０５、２０５  出力パケット解析部
１０６、２０６  出力パケット一時待避ＦＩＦＯ
１０７、２０７  ハンドシェーク生成部
１０８、２０８  パケット出力判断部
１１０、２１０  データバッファ
１１１、２１１  入力パケット解析部
１１２、２１２  ＵＳＢバス監視部
【図１】
2007272643.tif 000003
【図２】
2007272643.tif 000004
【図３】
2007272643.tif 000005
【図４】
2007272643.tif 000006
【図５】
2007272643.tif 000007