(57)【特許請求の範囲】
【請求項１】
電源をオフするタイミングに、接続ポートに接続したことのあるデバイスの情報と該デバイスの接続先の論理ポート及び物理ポートの関係情報とが格納された第１の接続リストを更新する更新部と、
電源をオフした後、次に電源をオンするタイミングに、前記第１の接続リストに格納された関係情報に示す前記デバイスの接続先の論理ポート及び物理ポートに基づき、該デバイスの接続を前記物理ポートと前記論理ポートとの接続をスイッチングするポートスイッチングにより管理する接続管理部と、
を有する情報処理装置。
【請求項２】
電源をオンするタイミングに、デバイスの情報と該デバイスの接続先の物理ポートの情報とが格納された第２の接続リストを作成する実行部を有し、
前記接続管理部は、前記第１の接続リスト及び前記第２の接続リストに格納された前記デバイスの情報が一致する場合、前記第１の接続リストに基づき該デバイスの接続を管理する、
請求項１に記載の情報処理装置。
【請求項３】
クロスバスイッチ回路を有し、
前記接続管理部は、前記クロスバスイッチ回路を制御することにより前記ポートスイッチングを実施する、
請求項１または請求項２に記載の情報処理装置。
【請求項４】
電源をオフするタイミングに、接続ポートに接続したことのあるデバイスの情報と該デバイスの接続先の論理ポート及び物理ポートの関係情報とが格納された第１の接続リストを更新し、
電源をオフした後、次に電源をオンするタイミングに、前記第１の接続リストに格納された関係情報に示す前記デバイスの接続先の論理ポート及び物理ポートに基づき、該デバイスの接続を前記物理ポートと前記論理ポートとの接続をスイッチングするポートスイッチングにより管理する、
処理をコンピュータに実行させるデバイス接続管理プログラム。
【請求項５】
電源をオフするタイミングに、接続ポートに接続したことのあるデバイスの情報と該デバイスの接続先の論理ポート及び物理ポートの関係情報とが格納された第１の接続リストを更新し、
電源をオフした後、次に電源をオンするタイミングに、前記第１の接続リストに格納された関係情報に示す前記デバイスの接続先の論理ポート及び物理ポートに基づき、該デバイスの接続を前記物理ポートと前記論理ポートとの接続をスイッチングするポートスイッチングにより管理する、
処理をコンピュータが実行するデバイス接続管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、デバイス接続管理プログラム及びデバイス接続管理方法に関する。
【背景技術】
【０００２】
ＵＳＢポートに接続されたＵＳＢデバイスをＵＳＢホストコントローラを介して制御することが行われている（例えば、特許文献１参照）。ＵＳＢポートにＵＳＢデバイスを接続する場合、起動前に接続していたＵＳＢデバイスと同一のＵＳＢデバイスであっても、次回の起動時に異なるＵＳＢポートに接続するとエニュメレーションが動作する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１８７３６８号公報
【特許文献２】特開２００５−１８２４８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、エニュメレーションが動作すると、完了するまでに所定時間を要する。また、エニュメレーションの動作中、ＵＳＢデバイスによってはＵＳＢドライバの再インストールを要求することがあり、ＯＳが起動されるまでに更なる時間を要し、業務に支障をきたすことがある。また、ＵＳＢデバイスが接続された順番によってＵＳＢデバイスの動作自体が不安定になることがある。
【０００５】
そこで、一側面では、本発明は、ユーザがいずれの接続ポートにデバイスを接続しても、該デバイスの使用を可能とすることを目的とする。
【課題を解決するための手段】
【０００６】
一つの案では、電源をオフするタイミングに、接続ポートに接続したことのあるデバイスの情報と該デバイスの接続先の論理ポート及び物理ポートの関係情報とが格納された第１の接続リストを更新する更新部と、電源をオフした後、次に電源をオンするタイミングに、前記第１の接続リストに格納された関係情報に示す前記デバイスの接続先の論理ポート及び物理ポートに基づき、該デバイスの接続を前記物理ポートと前記論理ポートとの接続をスイッチングするポートスイッチングにより管理する接続管理部と、を有する情報処理装置が提供される。
【発明の効果】
【０００７】
一側面によれば、ユーザがいずれの接続ポートにデバイスを接続しても、該デバイスを使用することができる。
【図面の簡単な説明】
【０００８】
【図１】一実施形態にかかる情報処理装置のハードウェア構成の一例を示す図。
【図２】一実施形態にかかる情報処理装置の機能構成の一例を示す図。
【図３】一実施形態にかかるポート・デバイスリストの一例を示す図。
【図４】一実施形態にかかるアプリ作成接続リストの一例を示す図。
【図５】一実施形態にかかるグッドリストの一例を示す図。
【図６】一実施形態にかかるルーティングリスト及びルーティングレジスタの一例を示す図。
【図７】一実施形態にかかる情報処理装置の電源オンからシャットダウンまでの一連の動作の一例を示す図。
【図８】一実施形態にかかる電源オンからＯＳ起動までの処理の一例を示すフローチャート。
【図９】一実施形態にかかるＵＳＢ初期化処理の一例を示すフローチャート。
【図１０】一実施形態にかかるルーティングリスト作成処理の一例を示すフローチャート。
【図１１】一実施形態にかかる他のデバイスの設定処理の一例を示すフローチャート。
【図１２】一実施形態にかかるシャットダウン処理（ＯＳ）の一例を示すフローチャート。
【図１３】一実施形態にかかるシャットダウン処理（ＢＩＯＳ）の一例を示すフローチャート。
【図１４】一実施形態にかかるグッドリスト作成処理の一例を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
【００１０】
［情報処理装置のハードウェア構成］
まず、本発明の一実施形態に係る情報処理装置のハードウェア構成の一例について、図１を参照しながら説明する。図１は、一実施形態に係る情報処理装置の一例としてＰＣ（Personal Computer）１０を一例として説明する。ただし、情報処理装置は、ＰＣに限らず、例えば、タブレット型機器等であってもよい。
【００１１】
本実施形態に係るＰＣ１０は、ＣＰＵ１１、メインメモリ１２、ＲＯＭ（Read Only Memory）１３、チップセット１４、ルーティング回路１５、ＵＳＢ接続ポート２４ａ、２４ｂ、２４ｃ(以下、「接続ポート２４」ともいう。)、ＳＭＲＡＭ（System Management Ram）１６及びＦｌａｓｈＲＯＭ（Read Only Memory）１７を有する。
【００１２】
ＣＰＵ１１は、ＣＰＵコアメモリコントローラを含むＰＣ１０の中枢回路であり、ＰＣ１０の全体を制御する。メインメモリ１２は、ＯＳ（Operating System）２１を含む各種プログラム及び各種データを記憶する。例えば、メインメモリ１２には、リスト作成アプリケーション２８が格納されている。ＣＰＵ１１は、ＯＳ２１を起動し、メインメモリ１２に記憶されているリスト作成アプリケーション２８を実行し、後述されるアプリ作成接続リストを作成する。アプリ作成接続リストは、ＳＭＲＡＭ１６に保存される。
【００１３】
ＲＯＭ１３には、例えばＢＩＯＳ(Basic Input Output System)２２が実行するプログラムが格納される。例えば、ＲＯＭ１３には、本実施形態にかかるＵＳＢデバイスの接続管理処理を行うためのデバイス接続管理プログラム２３が記憶されている。
【００１４】
ＢＩＯＳ２２は、ＰＣ１０の電源がオンされ、ＰＣ１０が起動するときに最初に実行され、接続ポート２４ａ、２４ｂ、２４ｃに接続されているＵＳＢデバイス３１，３２、３３を含むデバイスを初期化した後、ＯＳを起動する基本プログラムである。なお、ＲＯＭ１１０内のＢＩＯＳ２２は、ＵＥＦＩ(Unified Extensible Firmware Interface)の形式であってもよい。
【００１５】
チップセット１４は、周辺装置とのインタフェースを集約した回路部分である。チップセット１４には、ＵＳＢコントローラ１４ａが内蔵されている。図１には、ＵＳＢコントローラ１４ａのポートＨ１、Ｈ２、Ｈ３の信号線が示されているが、信号線の数はこれに限らない。ＵＳＢコントローラ１４ａのポートは、ＵＳＢ２．０ポート及びＵＳＢ３．０のＳＳ(Super Speed)のリンクを含むポートのいずれかである。ＵＳＢ２．０のポートとＵＳＢ３．０のＳＳのポートとの組み合わせは自由で、ポートＨ１、Ｈ２、Ｈ３・・・の信号線は予め決定されたＵＳＢ２．０のポートとＵＳＢ３．０のＳＳのポートとのペアを区別しないで示す。
【００１６】
ポートＰ１、Ｐ２、Ｐ３・・・のそれぞれは、ポートＨ１、Ｈ２、Ｈ３・・・のいずれかとペアになる。本実施形態では、ＵＳＢデバイスをポートＨ１、Ｈ２、Ｈ３・・・に直接接続せず、ルーティング回路１５を介したポートＰ１、Ｐ２、Ｐ３・・・に接続する。チップセット１４は、Ｉ２Ｃバスのインタフェース回路を内蔵しており、ルーティング回路１５は、チップセット１４に接続するＩ２Ｃデバイスとして機能してもよい。
【００１７】
本実施形態に依れば、ＵＳＢコントローラのＨｘのポート番号は、ルーティング回路１５によってデバイスが実際に接続されるＰｙのポート番号に読み替えられ、それ故Ｈｘのポートは、Ｐｙの物理ポートに対して論理ポートになる。
【００１８】
ルーティング回路１５は、ＧＰＩＯ（General Purpose Input/Output）チップ２５、ドライバ回路２６及びクロスバスイッチ回路２７を有する。ＧＰＩＯチップ２５は、Ｉ２Ｃバスを通じて読み書き可能なルーティングレジスタ５５を有する。
【００１９】
ルーティングレジスタ５５は、ルーティング回路１５内のＩ２Ｃバスに接続されたＧＰＩＯチップ２５中にあるレジスタである。ルーティングレジスタ５５は、ＵＳＢコントローラ１４ａ側ポートのポートＨ１、Ｈ２・・・と接続ポート２４（物理コネクタ）のポートＰ１、Ｐ２・・・との接続を指定するためのレジスタである。
【００２０】
ルーティングレジスタ５５は、例えば、Ｈ１レジスタ５５ａ、Ｈ２レジスタ５５ｂ、Ｈ３レジスタ５５ｃ・・・ようにＵＳＢコントローラ１４ａのポート数分のレジスタを有する。各レジスタには物理ポート分のビットが定義され、該当ポートのビット位置に「１」を設定することで論理ポートと物理ポートが関係付けられる。論理ポートと物理ポートを関係付けた関係情報により、図１のＨ１レジスタ５５ａでは、論理ポートＨ１と物理ポートＰ２とが接続され、Ｈ２レジスタ５５ｂでは、論理ポートＨ２と物理ポートＰ１とが接続され、Ｈ３レジスタ５５ｃでは、論理ポートＨ３と物理ポートＰ３とが接続される。
【００２１】
ＧＰＩＯチップ２５は、クロスバスイッチ回路２７を制御するドライバ回路２６に接続されている。ドライバ回路２６は、ＧＰＩＯチップ２５の出力電圧をクロスバスイッチ回路２７の必要とするゲート信号の入力レベルとするための、電圧変換のための回路で、ＧＰＩＯチップ２５から出力された、例えば５Ｖの電圧を、１２Ｖに変換する。
【００２２】
クロスバスイッチ回路２７には、マトリクス状にＦＥＴスイッチが配列されており、それは、ルーティングレジスタ５５の設定に応じてオン及びオフが個々にコントロールされる。クロスバスイッチ回路２７は、論理ポートＨｎを横軸、物理ポートＰｎを縦軸とした配線の交点に、Ｈｎ＿Ｐｎ信号（図には示さない）をゲート入力としたＮ＿ｃｈのＦＥＴスイッチ(図には示さない)を排したマトリクスになっており、例えば、ＵＳＢコントローラ１４ａの論理ポートＨ１を接続ポート２４の物理ポートＰ２に接続するときには、Ｈ１レジスタ５５ａのＰ２のビット位置に「１」をセットする。これにより、ＧＰＩＯチップ２５のＨ１＿Ｐ２の信号に＋５Ｖが出力され、ドライバ回路２６に＋１２Ｖが与えられる。これにより、クロスバスイッチ回路２７のＦＥＴがオンとなり、クロスバスイッチ回路２７の論理ポートＨ１と物理ポートＰ２のインタフェース信号線を接続するポートのルーティングが行われる。
【００２３】
このように、本実施形態では、ＵＳＢデバイスは、ｘＨＣＩなどＵＳＢコントローラ１４ａのポートには直接接続されず、クロスバスイッチ回路２７を介在して接続される。これにより、本実施形態にかかるＵＳＢデバイスの接続管理方法では、前回のシャットダウン時と今回の電源オン時において、ＵＳＢデバイスが接続される接続ポート２４の物理ポートが変わっても、クロスバスイッチ回路２７がポートスイッチングを行うことで、同じ論理ポートへの接続が行える、ポートの仮想化が実現される。
ポートの仮想化が行える。
【００２４】
［ＢＩＯＳの機能構成］
次に、本実施形態に係るＢＩＯＳ２２の機能構成の一例について、図２を参照しながら説明する。ＢＩＯＳ２２は、エニュメレーション実行部４１、更新部４２及び接続管理部４３の各機能を有する。エニュメレーションは、ＰＣ１０の接続ポート２４に接続されているＵＳＢデバイス３１を検出する一連の手続きをいう。ＢＩＯＳは、ＵＳＢキーボードなど入力機器やＵＳＢメモリやハードディスクのファイルなど、システムの立ち上げを行うに当たって必要なＵＳＢデバイスの検出のためエニュメレーションを行う。またＯＳもシステム立ち上げ時、またデバイスの接続の都度、それの運用に利用するため、エニュメレーションを独自で行っている。
【００２５】
エニュメレーション実行部４１は、接続ポート２４に接続されているＵＳＢデバイス３１〜３３を認識するために以下の（１）〜（３）の処理を行う。
（１）すべてのＵＳＢデバイス共通の接続直後のデフォルトアドレス「０」になるように、ポートをリセットする。
（２）セットアドレス（Set Address）リクエストを送ってＵＳＢデバイスにアドレスを割り付ける。
（３）ゲット・ディスクリプタ（Get Descriptor）リクエストを送って、ＵＳＢデバイスの追加情報を要求し、必要な情報を入手する。ところが、上記方法では、デバイスによっては、ＵＳＢデバイスが認識、検出されない場合がある。ＢＩＯＳの行うエニュメレーションはシステム立ち上げに必要なＵＳＢデバイスの検出を目的としたものであるため、一般にこの段階での未検出は問題にはならないが、ＯＳの段階で未検出が起こると、本来の意図した目的でシステムが使えないことになり、重大な問題ととらえられる。
【００２６】
このような場合、操作者は従来の方法に依れば、ＵＳＢデバイスを抜き差し、別ポートに接続し不具合の解消を試みる。これは操作者のポートの不具合を意識した自然な行為として行われるが、必ずしもポートに物理的不具合があるとは限らず、接続ポートが過去のポートと違うことを検出してＯＳ２１配下で動作しているアプリケーションが未検出を故意に発生している場合もある。
【００２７】
本実施形態にかかるＵＳＢデバイスの接続管理方法では、ＵＳＢデバイスの物理的な差し替え行為無しに、ＵＳＢポートを仮想化、過去の認識に成功した接続ポートの復元、最適な新たな組み合わせの自動選択が行える。このことで接続ポートの違いによる故意の未検出、そもそもＵＳＢデバイスとポートの相性による未検出を回避出来る。
【００２８】
エニュメレーション実行部４１は、エニュメレーションを実行する際、物理ポート毎に検出したＵＳＢデバイス情報（ディスクリプタ情報）をハッシュ化し、ポート・デバイスリスト５１（第２の接続リスト）を作成する。
【００２９】
ポート・デバイスリスト５１の一例を図３に示す。ポート・デバイスリスト５１は、物理ポート５１ａ、ハッシュ値５１ｂ、設定フラグ５１ｃ及びポート割当フラグ５１ｄの各情報を有する。物理ポート５１ａには、物理ポート番号が記憶される。ハッシュ値５１ｂには、ディスクリプタ情報をハッシュ関数に代入して得られた値（ハッシュ値）である。設定フラグ５１ｃは、後述されるルーティングリスト５４に設定済のポートであるか、未設定のポートであるかを示すフラグである。ポート割当フラグ５１ｄは、ハッシュ値５１ｂで示されるデバイスに接続ポート２４が割当済みであるか、未割当であるかを示すフラグである。なお、ポート・デバイスリスト５１にディスクリプタ情報又はディスクリプタ情報から抽出したＵＳＢデバイス情報を記憶してもよい。
【００３０】
更新部４２は、ＰＣ１０の電源をオフするタイミングに、接続ポート２４に接続されたことのあるＵＳＢデバイスの情報と該ＵＳＢデバイスの接続先のポートＨとポートＰとの関係情報とが格納されたグッドリスト５３を更新する。更新部４２は、ＰＣ１０の電源をオフするタイミングに、ＯＳ２１が生成したアプリ作成接続リスト５２に基づき、グッドリスト５３（第１の接続リスト）を更新する。ＯＳ２１が操作者の指示によってＰＣ１０の電源をオフするタイミングに生成するアプリ作成接続リスト５２の一例を図４に示す。アプリ作成接続リスト５２は、グッドリスト５３のサブセットで、ＰＣ１０の電源がオフされる直前のＯＳ２１上の論理ポート５２ａ及びＵＳＢデバイス情報５２ｂを有する。
【００３１】
アプリ作成接続リスト５２には、シャットダウン前のＯＳ２１が把握している、論理ポート５２ａ及びＵＳＢデバイス情報５２ｂが記憶されている。アプリ作成接続リスト５２は、シャットダウン時のＢＩＯＳ２２のシャットダウンメソッドに先行してＯＳ２１がリスト作成アプリケーションにシャットダウン通知することによって、リスト作成アプリケーションによって作成され、例えばメインメモリ１２上のＳＭＲＡＭ１６に配置される。アプリ作成接続リスト５２をＳＭＲＡＭ１６に配置するのは、物理空間しか扱えないＢＩＯＳ２２とのインタフェースに好適であることによる。
【００３２】
ただし、アプリ作成接続リスト５２は、ＳＭＲＡＭ１６に配置されることに限定されない。例えば、ハードディスク上に専用不揮発性ファイルを作り、アプリケーションが直接ハードディスク上の専用不揮発性ファイルにアプリ作成接続リスト５２を配置し、後にＢＩＯＳ２２がそれを参照する方法であってよい。
【００３３】
グッドリスト５３の一例を図５に示す。グッドリスト５３は、論理ポート５３ａ、物理ポート５３ｂ、ハッシュ値５３ｃ及びＵＳＢデバイス情報５３ｄを有する。ＵＳＢデバイス情報５３ｄは、ディスクリプタ情報から抽出されたＵＳＢデバイスに関する情報であってもよいし、ディスクリプタ情報と同一情報であってもよい。グッドリスト５３は、接続ポート２４に過去接続されていたか、現在接続されているＵＳＢデバイスに関する情報を巡回格納するサーキュラーバッファになっている。
【００３４】
物理ポート５３ｂは、ルーティング回路１５を使用してルーティングされた論理ポート５３ａのルーティング先のポートになる。
【００３５】
接続管理部４３は、ＰＣ１０の電源をオフした後、次に電源をオンするタイミングに、グッドリスト５３に格納された関係情報に示されるＵＳＢデバイスの接続先の論理ポートと物理ポートとに基づき、ポートスイッチングを行い、ＵＳＢデバイスの接続を管理する。
【００３６】
接続管理部４３は、グッドリスト５３に記憶されたハッシュ値５３ｃとポート・デバイスリスト５１に記憶されたハッシュ値５１ｃとを比較する。接続管理部４３は、ハッシュ値の一致を判定すると、そのハッシュ値に対応してグッドリスト５３に示された論理ポート５３ａ及び物理ポート５３ｂをルーティングリスト５４にセットする。
【００３７】
ルーティングリスト５４及びルーティングレジスタ５５の一例を図６に示す。ルーティングリスト５４は、論理ポート５４ａ、物理ポート５４ｂ、ハッシュ値５４ｃ及び使用フラグ５４ｄを有する。
【００３８】
ルーティングリスト５４はルーティングレジスタの設定を行うためのもので、論理ポート５４ａに接続すべき物理ポート５４ｂの該当ビット位置に「１」をセットしてそれを示す。例えば、接続管理部４３は、図３のポート・デバイスリスト５１のハッシュ値５１ｂ「１５３」と図５のグッドリスト５３のハッシュ値５３ｃ「１５３」とが一致すると判定する。この場合、接続管理部４３は、グッドリスト５３のハッシュ値５３ｃ「１５３」の論理ポート５３ａ「Ｈ１」及び物理ポート５３ｂ「Ｐ２」に基づき、ルーティングリスト５４の論理ポート５４ａ「Ｈ１」の物理ポート５４ｂの「Ｐ２」のビットに「１」をセットする。これにより、論理ポートを変更せずに、ルーティングリスト５４の物理ポート５４ｂを、ポート・デバイスリスト５１の物理ポート５１ａ「Ｐ１」からグッドリスト５３の物理ポート５３ｂ「Ｐ２」に変更することができる（ポートスイッチング）。このように操作者は、接続ポート２４を意識することなく、接続ポート２４のどのポートにＵＳＢデバイスを接続したとしても、デバイスの同じ論理ポートへの接続が可能で、ＯＳ２１の未検出が回避され、ＵＳＢデバイスを使用することができる。さらに、ルーティングリスト５４には、ハッシュ値５４ｃ及び使用フラグ５４ｄが保存されている。使用フラグ５４ｄは、論理ポート５４ａ及び物理ポート５４ｂで示される接続ポート２４が使用済みか、未使用かを示すフラグである。接続管理部４３は、ルーティングリスト５４を作成後、その内容をルーティングレジスタ５５へ書き込む。
【００３９】
［電源オンからシャットダウンまでの一連の動作］
電源オンからシャットダウンまでの一連の動作を図７に簡略化して示す。図７に、ＢＩＯＳやＵＥＦＩのようなＰＣ組込み型のファームウェア(システムファームウェア)の起動プロセスの一例を示す。
【００４０】
ＰＣの電源がオンされると、ＢＩＯＳ２２は、プラットフォームの初期化を実行する（ＤＸＥ  Ｐｈａｓｅ）。ＤＸＥ  Ｐｈａｓｅにて各コンポーネントをサポートするために各種ＤＸＥドライバーが組み込まれる。このうちの一つがＵＳＢドライバーである。
【００４１】
ＤＸＥ  Ｐｈａｓｅの早いタイミングで、ＢＩＯＳ２２は、ルーティングリスト５４の作成、ＵＳＢポートのスイッチング等を行う。その際、ＢＩＯＳ２２は、ポート・デバイスリスト５１を作成し、前回のシャットダウンの際に作成されたグッドリスト５３を参照して、ルーティングリスト５４を作成する。ルーティングリスト５４の作成後、ルーティングレジスタ５５に書き込まれた論理ポートと物理ポートとの対応関係に基づき、ポートスイッチング処理において論理ポートに対する物理ポートのスイッチングが実行される。
【００４２】
ＢＩＯＳ２２は、ＤＸＥ  Ｐｈａｓｅで接続されているＵＳＢデバイスを含むデバイスに対して初期化を行う。ＤＸＥ  Ｐｈａｓｅは、ＯＳ２１起動前の処理であり、ＢＩＯＳ２２は、ＤＸＥ  ＰｈａｓｅでＯＳ２１上でＵＳＢデバイスを動かすための基本的な初期化（ポートスピード変更や起動抑止等）を実行する。ＯＳ２１起動後、Ｒｕｎｔｉｍｅ  Ｄｒｉｖｅｒを除き、ＢＩＯＳ２２の処理は停止される。
【００４３】
電源オフの直前に実行されるＡＬ  Ｐｈａｓｅでは、ＢＩＯＳ２２は、グッドリスト５３を作成し、ＦｌａｓｈＲＯＭ１７に保存する。グッドリスト５３は、シャットダウンの直前にＯＳ２１により作成されたアプリ作成接続リスト５２に基づき作成される。ＦｌａｓｈＲＯＭ１７は独立したチップであっても良いし、ＲＯＭ１３と共用であってもよい。
【００４４】
［電源オン時の処理］
次に、本実施形態に係るＰＣ１０の電源オン時の処理について図８を参照して説明する。図８は、一実施形態にかかる電源オン時の処理の一例を示すフローチャートである。
【００４５】
ＰＣ１０の電源がオンすると、ＢＩＯＳ２２は、自己診断テストＰＯＳＴ（Power On Self Test）を実行する（ステップＳ１２）。具体的には、ＢＩＯＳ２２は、図７に示したＰＥＩ及びＤＸＥ  Ｐｈａｓｅにて、メモリの初期化、ボード上の各種コントローラのコンフィグレーションを実行し、デバイスの検出、初期化及び設定を行う。このとき、ＢＩＯＳ２２は、ビデオ、キーボード、マウス、ストレージ、シリアルポート、パラレルポート等と主にＵＳＢポート及びデバイスの初期化を行う。
【００４６】
次に、ＢＩＯＳ２２は、ＵＳＢ初期化処理を行う（ステップＳ１４）。ＵＳＢ初期化処理において、ルーティング回路１５を使用したポートスイッチングが行われる。次に、ＢＩＯＳ２２は、ＵＳＢデバイスを含めた周辺デバイスの初期化完了後、ブート処理を実行し（ステップＳ１６）、本処理を終了する。
【００４７】
［ＵＳＢ初期化処理］
図８のステップＳ１４にて実行されるＵＳＢ初期化処理について、図９を参照して説明する。図９は、一実施形態にかかるＵＳＢ初期化処理の一例を示すフローチャートである。ＵＳＢ初期化処理では、エニュメレーション実行部４１は、ＵＳＢデバイスのディスクリプタ情報を読み込み、ＵＳＢデバイス情報を取得し、ポート・デバイスリスト５１を作成する（ステップＳ１２０）。ポート・デバイスリスト５１を作成する際に使用されるＵＳＢデバイス情報は、ディスクリプタ情報の一部であってもよいし、ディスクリプタ情報の全部であってもよい。
【００４８】
次に、接続管理部４３は、Ｆｌａｓｈ  ＲＯＭ１７からグッドリスト５３を読み出し（ステップＳ１２２）、ポート・デバイスリスト５１とグッドリスト５３とを比較する（ステップＳ１２４）。次に、接続管理部４３は、ルーティングリスト作成処理を実行する（ステップＳ１２６）。
【００４９】
（ルーティングリスト作成処理）
図１０を参照しながら、ルーティングリスト作成処理を説明する。接続管理部４３は、変数Ｊに１を設定する（ステップＳ１４０）。次に、接続管理部４３は、グッドリスト５３のＪ番目（ここでは、１番目）のハッシュ値が、ポート・デバイスリスト５１のハッシュ値のいずれかと一致するかを判定する（ステップＳ１４２）。ハッシュ値が一致しないと判定された場合、直ちにステップＳ１４６に進む。ハッシュ値が一致すると判定された場合、接続管理部４３は、そのハッシュ値に対応してグッドリスト５３に記憶された論理ポート５３ａ及び物理ポート５３ｂをルーティングリスト５４に設定する。
【００５０】
次に、接続管理部４３は、グッドリスト５３の最後のＵＳＢデバイスまでチェックしたかを判定する（ステップＳ１４６）。グッドリスト５３の最後のＵＳＢデバイスまでチェックしていない場合、接続管理部４３は、変数Ｊに１加算し（ステップＳ１４８）、ステップＳ１４２に戻って、ステップＳ１４２〜Ｓ１４６の処理を行う。グッドリスト５３の最後のＵＳＢデバイスまでチェックした場合、他のデバイスの設定処理に移行する（ステップＳ１５０）。
【００５１】
（他のデバイスの設定処理）
図１１を参照しながら、他のデバイスの設定処理を説明する。他のデバイスの設定処理では、グッドリスト５３に存在しないＵＳＢデバイスであって、ポート・デバイスリスト５１に存在するＵＳＢデバイスについて、任意の接続ポート２４にルーティングする処理が実行される。
【００５２】
接続管理部４３は、変数Ｋに１を設定する（ステップＳ１５２）。次に、接続管理部４３は、ポート・デバイスリスト５１のＫ番目（ここでは、１番目）の設定フラグ５１ｃ及びポート割当フラグ５１ｄの少なくともいずれかのフラグが未設定又は未割振りであるかを判定する（ステップＳ１５４）。未設定又は未割振りのフラグは存在しないと判定された場合、直ちにステップＳ１６２に進む。他方、未設定又は未割振りのフラグが存在すると判定された場合、乱数を発生し、未設定デバイス又は未割当デバイスに対するポート番号をランダムに選択する（ステップＳ１５６）。
【００５３】
次に、接続管理部４３は、選択されたポート番号の物理ポートで示される接続ポート２４が使用されているかを判定する（ステップＳ１５８）。選択されたポート番号で示される接続ポート２４が使用されていると判定された場合、接続管理部４３は、ステップＳ１５６に戻り、使用されていない接続ポート２４が選択されるまで、ステップＳ１５６及びＳ１５８の処理を繰り返す。
【００５４】
選択されたポート番号の物理ポートで示される接続ポート２４は使用されていないと判定された場合、接続管理部４３は、ルーティングリスト５４の論理ポート５４ａに物理ポート番号をセット（つまり、物理ポート５４ｂの該当ビット位置に「１」を設定）する。
【００５５】
次に、接続管理部４３は、ポート・デバイスリスト５１の最後のＵＳＢデバイスまでチェックしたかを判定する（ステップＳ１６２）。ポート・デバイスリスト５１の最後のＵＳＢデバイスまでチェックしていない場合、接続管理部４３は、変数Ｋに１加算し（ステップＳ１６４）、ステップＳ１５４に戻って、ステップＳ１５４〜Ｓ１６２の処理を行う。ポート・デバイスリスト５１の最後のＵＳＢデバイスまでチェックした場合、図９のステップＳ１２６に戻る。
【００５６】
次いで、図９のステップＳ１２８において、接続管理部４３は、ルーティングリスト５４に記憶された情報をルーティングレジスタ５５へ書き込む。このことでルーティング回路１５のクロスバスイッチ回路によってポートスイッチングが行われ（ステップＳ１３０）、本処理を終了する。
【００５７】
なお、グッドリスト５３に存在しないＵＳＢデバイスを、ＵＳＢデバイスが接続されていない接続ポート２４に割り当てる場合、接続管理部４３は、使用されていないＵＳＢポートのうち、未割当のポート番号を例えば最も大きい論理ポートから順番に割り当てる。そして、接続管理部４３は、ルーティングリスト５４の論理ポート５４ａに対応する物理ポート５４ｂの該当ビット位置に「１」を設定する。この物理ポート５４ｂの割当は、未割当の論理ポート番号の最も大きいポートから始め、ポート番号の小さい方向に、物理ポートをランダムに選び、故意に選択をバラ付かせながら進めることが好ましい。
【００５８】
物理ポートをランダムに選択するのは、グッドリスト５３へのポート番号の未設定が何らかの不具合によって生じたことを想定し、同じポートに接続することで再度不具合が生じることを回避するためである。すなわち、ＢＩＯＳ２２は、ポート番号が未設定のＵＳＢデバイスを検出すると、乱数を発生し、該当接続ポート２４が空いているかどうかをポート・デバイスリスト５１のポート割当フラグ５１ｄから検出する。ＢＩＯＳ２２は、接続ポート２４の空きが検出されたらポート・デバイスリスト５１のポート割当フラグ５１ｄに「１」を設定する。また、ＢＩＯＳ２２は、ルーティングリスト５４の論理ポート５４ａに対応する、空いた接続ポート２４の物理ポート５４ｂの該当ビット位置に「１」を設定する。ＢＩＯＳ２２は、乱数のポート番号が存在しなければ、ポート番号が見つかるまで乱数発生をやり直し、ポート番号が未設定のＵＳＢデバイスが無くなるまで続け、未設定のＵＳＢデバイスが無くなったとき、ルーティングリスト５４の作成を完了する。
【００５９】
［シャットダウン処理］
次に、本実施形態に係るＰＣ１０のシャットダウン処理について図１２及び図１３を参照して説明する。図１２は、一実施形態にかかるＯＳ２１が行うシャットダウン処理の一例を示す。図１３は、一実施形態にかかるＢＩＯＳ２２が行うシャットダウン処理の一例を示す。
【００６０】
（シャットダウン処理：ＯＳ）
電源オフ時、ＯＳ２１は、図１２のシャットダウン処理を実行する。具体的には、ＯＳ２１は、アプリ作成接続リスト５２を作成する（ステップＳ２２）。次に、ＯＳ２１は、作成したアプリ作成接続リスト５２をＳＭＲＡＭ１６に保存する（ステップＳ２４）。次に、ＯＳ２１は、アプリケーションへのメッセージに続いて、ハードウェアを電源オフやスリープとすることを通知するためのシャットダウンの通知をＢＩＯＳ２２へ送る。ＢＩＯＳ２２は、ＯＳ２１からのシャットダウンの通知に応じて、図１３のシャットダウン処理を実行する。（ステップＳ２６）。
【００６１】
（シャットダウン処理：ＢＩＯＳ）
図１３のシャットダウン処理では、ＢＩＯＳ２２は、ＳＭＲＡＭ１６からアプリ作成接続リスト５２を取得する（ステップＳ３２）。ＢＩＯＳ２２は、取得したアプリ作成接続リスト５２からグッドリスト５３を作成し（ステップＳ３４：グッドリスト作成処理）、グッドリストをＦｌａｓｈＲＯＭ１７に保存し（ステップＳ３６）、ＰＣの電源をオフする（ステップＳ３８）。
【００６２】
（グッドリスト作成処理）
図１３のステップＳ３４におけるグッドリスト作成処理について、図１４を参照しながら説明する。更新部４２は、取得したアプリ作成接続リスト５２と前回のシャットダウン時に作成したグッドリスト５３とを比較する（ステップＳ３４２）。次に、更新部４２は、グッドリスト５３に存在するＵＳＢデバイスかを判定する（ステップＳ３４４）。グッドリスト５３に存在するＵＳＢデバイスであれば、過去に接続実績のあるＵＳＢデバイスであると判定できる。よって、グッドリスト５３に存在するＵＳＢデバイスであると判定された場合、更新部４２は、アプリ作成接続リスト５２に保存された情報（最新のポート情報）でグッドリスト５３を更新する（ステップＳ３４６）。次に、更新部４２は、更新されたグッドリスト５３をＦｌａｓｈＲＯＭ１７に保存し（ステップＳ３５０）、本処理を終了する。
【００６３】
他方、ステップＳ３４４において、グッドリスト５３に存在するＵＳＢデバイスでないと判定された場合、更新部４２は、グッドリスト５３を更新し、新たなＵＳＢデバイスとしてグッドリスト５３に登録する（ステップＳ３４８）。次に、更新部４２は、更新されたグッドリスト５３をＦｌａｓｈＲＯＭ１７に保存し（ステップＳ３５０）、本処理を終了する。
【００６４】
以上に説明したように、一実施形態に係る接続管理方法によれば、論理ポートを変更せずに、ＢＩＯＳ起動時に前回シャットダウンしたときの物理ポートにＵＳＢデバイスを接続することができる。これによれば、ＯＳ２１にディスクリプタ情報を通知する前にポートスイッチングが行われる。つまり、本実施形態では、ＯＳ２１が管理する論理ポートは変えずに、ＢＩＯＳ２２が管理する物理ポートを変えることにより、ポートスイッチングが実行される。これにより、ユーザが接続ポート２４を意識せずにいずれかの接続ポート２４にＵＳＢデバイスを接続しても、そのＵＳＢデバイスを使用することができる。これにより、デバイスを安定的に稼働させることができる。また、デバイスをどの物理ポートに接続してもＯＳ２１はデバイスを認識できるため、デバイスのアクセス時間を短縮することができ、
以上、情報処理装置、デバイス接続管理プログラム及びデバイス接続管理方法を上記実施形態により説明したが、本発明にかかる情報処理装置、デバイス接続管理プログラム及びデバイス接続管理方法は上記実施形態に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能である。また、上記実施形態及び変形例が複数存在する場合、矛盾しない範囲で組み合わせることができる。
【００６５】
例えば、本発明では、ポートスイッチングによるポートの仮想化を、クロスバスイッチ回路２７等のハードウェアによっても実現した。しかしながら、ポートの仮想化は、これに限らず、ソウトウェアによっても実現可能で、本発明はそれら実装の違いには特定されない。その場合、ルーティング回路１５の動作をプログラムで記述し、そのプログラムをＣＰＵ１１が実行することで、ルーティングレジスタ５５に応じたポートスイッチングが可能になる。
【００６６】
以上の説明に関し、更に以下の項を開示する。
（付記１）
電源をオフするタイミングに、接続ポートに接続したことのあるデバイスの情報と該デバイスの接続先の論理ポート及び物理ポートの関係情報とが格納された第１の接続リストを更新する更新部と、
電源をオフした後、次に電源をオンするタイミングに、前記第１の接続リストに格納された関係情報に示す前記デバイスの接続先の論理ポート及び物理ポートに基づき、該デバイスの接続を管理する接続管理部と、
を有する情報処理装置。
（付記２）
電源をオンするタイミングに、デバイスの情報と該デバイスの接続先の論理ポートの情報とが格納された第２の接続リストを作成する実行部を有し、
前記接続管理部は、前記第１の接続リスト及び前記第２の接続リストに格納された前記デバイスの情報が一致する場合、前記第１の接続リストに基づき該デバイスの接続を管理する、
付記１に記載の情報処理装置。
（付記３）
電源をオフするタイミングに、接続ポートに接続したことのあるデバイスの情報と該デバイスの接続先の論理ポート及び物理ポートの関係情報とが格納された第１の接続リストを更新し、
電源をオフした後、次に電源をオンするタイミングに、前記第１の接続リストに格納された関係情報に示す前記デバイスの接続先の論理ポート及び物理ポートに基づき、該デバイスの接続を管理する、
処理をコンピュータに実行させるデバイス接続管理プログラム。
（付記４）
電源をオンするタイミングに、デバイスの情報と該デバイスの接続先の論理ポートの情報とが格納された第２の接続リストを作成し、
前記第１の接続リスト及び前記第２の接続リストに格納された前記デバイスの情報が一致する場合、前記第１の接続リストに基づき該デバイスの接続を管理する、
付記３に記載のデバイス接続管理プログラム。
（付記５）
電源をオフするタイミングに、接続ポートに接続したことのあるデバイスの情報と該デバイスの接続先の論理ポート及び物理ポートの関係情報とが格納された第１の接続リストを更新し、
電源をオフした後、次に電源をオンするタイミングに、前記第１の接続リストに格納された関係情報に示す前記デバイスの接続先の論理ポート及び物理ポートに基づき、該デバイスの接続を管理する、
処理をコンピュータが実行するデバイス接続管理方法。
（付記６）
電源をオンするタイミングに、デバイスの情報と該デバイスの接続先の論理ポートの情報とが格納された第２の接続リストを作成し、
前記第１の接続リスト及び前記第２の接続リストに格納された前記デバイスの情報が一致する場合、前記第１の接続リストに基づき該デバイスの接続を管理する、
付記５に記載のデバイス接続管理方法。
【符号の説明】
【００６７】
１０：ＰＣ
１１：ＣＰＵ
１２：メインメモリ
１３：ＲＯＭ
１４：チップセット
１４ａ：ＵＳＢコントローラ
１５：ルーティング回路
２１：ＯＳ
２２：ＢＩＯＳ
２４ａ、２４ｂ、２４ｃ：接続ポート
２５：ＧＰＩＯチップ
２６：ドライバ回路
２７：クロスバスイッチ回路
４１：エニュメレーション実行部
４２：更新部
４３：接続管理部
５１：ポート・デバイスリスト
５２：アプリ作成接続リスト
５３：グッドリスト
５４：ルーティングリスト
５５：ルーティングレジスタ
【図１】
0006582704.tif 000002
【図２】
0006582704.tif 000003
【図３】
0006582704.tif 000004
【図４】
0006582704.tif 000005
【図５】
0006582704.tif 000006
【図６】
0006582704.tif 000007
【図７】
0006582704.tif 000008
【図８】
0006582704.tif 000009
【図９】
0006582704.tif 000010
【図１０】
0006582704.tif 000011
【図１１】
0006582704.tif 000012
【図１２】
0006582704.tif 000013
【図１３】
0006582704.tif 000014
【図１４】
0006582704.tif 000015