(57)【要約】      （修正有）【課題】デバイスに付与されるアドレス情報の変更を抑制する。【解決手段】情報処理装置に接続されるデバイスとデバイスに付与されるアドレス情報との関係を記憶するアドレス情報記憶部と、情報処理装置の起動時にアドレス情報記憶部に関係が記憶されている場合に記憶された関係にしたがってデバイスにアドレス情報を付与し、情報処理装置の起動時にアドレス情報記憶部に関係が記憶されていない場合に所定の手順でデバイスにアドレス情報を付与する第１のアドレス情報割当部と、情報処理装置の稼働中に接続されたデバイスに対して、接続済みのデバイスに付与されたアドレス情報と重複しないアドレス情報を付与する第２のアドレス情報割当部によってアドレス情報が付与されると、アドレス情報記憶部に記憶されるデバイスとデバイスに付与されるアドレス情報との関係を更新する対応情報管理部と、を備える情報処理装置。【選択図】図５
2015230600.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置に接続されるデバイスと前記デバイスに付与されるアドレス情報との関係を記憶するアドレス情報記憶部と、
前記情報処理装置の起動時に前記アドレス情報記憶部に前記関係が記憶されている場合に前記記憶された関係にしたがって前記情報処理装置に接続されているデバイスにアドレス情報を付与し、前記情報処理装置の起動時に前記アドレス情報記憶部に前記関係が記憶されていない場合に所定の手順で前記情報処理装置に接続されているデバイスにアドレス情報を付与する第１のアドレス情報割当部と、
前記情報処理装置の稼働中に接続されたデバイスに対して、前記情報処理装置に接続済みのデバイスに付与されたアドレス情報と重複しないアドレス情報を付与する第２のアドレス情報割当部によってアドレス情報が付与されると、前記アドレス情報記憶部に記憶される、前記情報処理装置に接続されるデバイスと前記デバイスに付与されるアドレス情報との関係を更新する対応情報管理部と、
を備える情報処理装置。
【請求項２】
前記対応情報管理部は、前記第２のアドレス情報割当部によるアドレスの割り当ての完了が通知されると、前記情報処理装置に接続されるすべてのデバイスから、それぞれのデバイスに付与されるアドレス情報を取得し、前記アドレス情報記憶部に記憶される前記関係を更新する、
請求項１に記載の情報処理装置。
【請求項３】
前記対応情報管理部は、前記第２のアドレス情報割当部によって割り当てられた前記アドレス情報が通知されると、前記アドレス情報記憶部に記憶される前記関係を更新する、
請求項１に記載の情報処理装置。
【請求項４】
情報処理装置に接続されるデバイスと前記デバイスに付与されるアドレス情報との関係を記憶するアドレス情報記憶部を備える情報処理装置が、
前記情報処理装置の起動時に前記アドレス情報記憶部に前記関係が記憶されている場合に前記記憶された関係にしたがって前記情報処理装置に接続されているデバイスにアドレス情報を付与し、前記情報処理装置の起動時に前記アドレス情報記憶部に前記関係が記憶されていない場合に所定の手順で前記情報処理装置に接続されているデバイスにアドレス情報を付与する第１のアドレス情報割当処理と、
前記情報処理装置の稼働中に接続されたデバイスに対して、前記情報処理装置に接続済みのデバイスに付与されたアドレス情報と重複しないアドレス情報を付与する第２のアドレス情報割当処理によってアドレス情報が付与されると、前記アドレス情報記憶部に記憶される、前記情報処理装置に接続されるデバイスと前記デバイスに付与されるアドレス情報との関係を更新する対応情報管理処理と、
を実行する情報処理方法。
【請求項５】
情報処理装置に接続されるデバイスと前記デバイスに付与されるアドレス情報との関係を記憶するアドレス情報記憶部を備える情報処理装置に、
前記情報処理装置の起動時に前記アドレス情報記憶部に前記関係が記憶されている場合に前記記憶された関係にしたがって前記情報処理装置に接続されているデバイスにアドレス情報を付与し、前記情報処理装置の起動時に前記アドレス情報記憶部に前記関係が記憶されていない場合に所定の手順で前記情報処理装置に接続されているデバイスにアドレス情報を付与する第１のアドレス情報割当処理と、
前記情報処理装置の稼働中に接続されたデバイスに対して、前記情報処理装置に接続済みのデバイスに付与されたアドレス情報と重複しないアドレス情報を付与する第２のアドレス情報割当処理によってアドレス情報が付与されると、前記アドレス情報記憶部に記憶
される、前記情報処理装置に接続されるデバイスと前記デバイスに付与されるアドレス情報との関係を更新する対応情報管理処理と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【０００２】
情報処理装置上で稼働するＯｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＯＳ）は、アドレス情報に基づいてネットワークコントローラやビデオコントローラ等のＩｎｐｕｔ  Ｏｕｔｐｕｔ（ＩＯ）デバイスを利用する。アドレス情報は、例えば、Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ（ＢＩＯＳ）あるいはＯＳによってＩＯデバイスに対して割り当てられる。ＩＯデバイスに割り当てられたアドレス情報は、揮発性の記憶領域に記憶される場合が多い。したがって、情報処理装置が停止されると、割り当てられたアドレス情報は消去される。そのため、情報処理装置が起動されるたびに、アドレス情報は、ＢＩＯＳあるいはＯＳによってＩＯデバイスに割り当てられる。
【０００３】
より具体的には、ＩＯデバイスが使用される場合には、ＯＳのデバイスドライバにＩＯデバイスの設定情報が設定される。ＯＳのデバイスドライバは、以下、本明細書においてデバイスドライバとも称する。例えば、ネットワークコントローラが使用される場合には、設定情報としてＩＰアドレス等のネットワーク情報がデバイスドライバに設定される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−３９７６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＢＩＯＳあるいはＯＳは、アドレス情報を小さい番号（例えば、０番）から順番にＩＯデバイスに割り当てる事が多い。そのため、ＩＯデバイスが追加あるいは切り離しがなされると、ＩＯデバイスに割り当てられるアドレス情報が以前とは異なった値に変更される虞がある。アドレス情報が変更されると、アドレス情報が変更されたＩＯデバイスは、ＯＳから別のＩＯデバイスとして認識される虞がある。さらに、デバイスドライバに設定されたＩＯデバイスの設定情報は、アドレス情報が変更されると消去される虞がある。ＩＯデバイスが別のＩＯデバイスとして認識され、あるいは、ＩＯデバイスの設定情報が消去されると、そのＩＯデバイスを使用するには、再度、ＩＯデバイスに設定情報を設定する作業が発生する。そこで、開示の技術の１つの側面は、ＩＯデバイスが追加あるいは切り離しがなされてもＩＯデバイスに割り当てられるアドレス情報の変更を抑制する。
【課題を解決するための手段】
【０００６】
開示の技術の１つの側面は、次のような情報処理装置によって例示される。本情報処理装置は、情報処理装置に接続されるデバイスとデバイスに付与されるアドレス情報との関係を記憶するアドレス情報記憶部を備える。また、本情報処理装置は、情報処理装置の起動時にアドレス情報記憶部に関係が記憶されている場合に記憶された関係にしたがって情報処理装置に接続されているデバイスにアドレス情報を付与し、情報処理装置の起動時にアドレス情報記憶部に関係が記憶されていない場合に所定の手順で情報処理装置に接続されているデバイスにアドレス情報を付与する第１のアドレス情報割当部を備える。また、本情報処理装置は、情報処理装置の稼働中に接続されたデバイスに対して、情報処理装置に接続済みのデバイスに付与されたアドレス情報と重複しないアドレス情報を付与する第２のアドレス情報割当部によってアドレス情報が付与されると、アドレス情報記憶部に記憶される、情報処理装置に接続されるデバイスとデバイスに付与されるアドレス情報との
関係を更新する対応情報管理部を備える。
【発明の効果】
【０００７】
本情報処理装置は、情報処理装置に接続されるＩＯデバイスが追加され、あるいは切り離されても、ＩＯデバイスに割り当てられるアドレス情報の変更を抑制することができる。
【図面の簡単な説明】
【０００８】
【図１】比較例の情報処理装置の構成を例示する図である。
【図２】比較例において、バス番号が割り当てられる前の状態を例示する図である。
【図３】比較例において、バス番号が割り当てられた後の状態を例示する図である。
【図４】比較例において、ＰＣＩユニットが活性追加された状態を例示する図である。
【図５】第１実施形態の情報処理装置の構成を例示する図である。
【図６】情報処理装置の処理ブロックを例示する図である。
【図７】バス番号テーブルの初期状態を例示する図である。
【図８】ＢＩＯＳによるＩＯデバイスへのバス番号を割り当てる処理の流れを例示する図である。
【図９】ＩＯデバイスの活性追加あるいは活性交換の処理の流れを例示する図である。
【図１０】第１実施形態の情報処理装置に対してＰＣＩユニットを活性追加あるいは活性交換した場合の処理の流れを例示する図である。
【図１１】ＰＣＩユニットが追加された後のバス番号管理テーブルを例示する図である。
【図１２】第１実施形態の情報処理装置に対してＰＣＩユニットを活性追加あるいは活性交換した場合の処理の流れを例示する図である。
【図１３】第２実施形態の情報処理装置の構成を例示する図である。
【図１４】第２実施形態の情報処理装置にＰＣＩユニットを活性追加あるいは活性交換した場合の処理の流れを例示する図である。
【図１５】第２実施形態の情報処理装置にＰＣＩユニットを活性追加あるいは活性交換した場合の処理の流れを例示する図である。
【図１６】第３実施形態の情報処理装置の構成を例示する図である。
【図１７】第３実施形態の情報処理装置にＰＣＩユニットを活性追加あるいは活性交換した場合の処理の流れを例示する図である。
【図１８】第３実施形態の情報処理装置にＰＣＩユニットを活性追加あるいは活性交換した場合の処理の流れを例示する図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して、一実施形態に係る情報処理装置について説明する。以下に示す実施形態の構成は例示であり、本情報処理装置は実施形態の構成に限定されない。
【００１０】
＜比較例＞
比較例では、ＢＩＯＳによって割り当てられるアドレス情報の範囲が、あらかじめＩＯデバイス毎に定められることで、ＩＯデバイスに割り当てられるアドレス情報の変更を抑制する情報処理装置が例示される。アドレス情報は、各ＩＯデバイスに対して重複しないように割り当てられる。以下の説明では、アドレス情報の一例として、バス番号が例示される。以下、図１〜図４を参照して比較例について説明する。
【００１１】
図１は、比較例の情報処理装置８００の構成を例示する図である。情報処理装置８００は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）ユニット８１０、ＩＯ
ユニット８２０およびＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）ユニット８３０を備える。ＩＯユニット８２０およびＰＣＩユニット８３０は、バスＢ１でＣＰＵユニット８１０と接続されている。ＣＰＵユニット８１０、ＩＯユニット８２０およびＰＣＩユニット８３０等のユニットは、それぞれ１以上のＩＯデバイスを含むことができる。１以上のＩＯデバイスを含むユニットは、全体として１つのＩＯデバイスとみることもできる。情報処理装置８００は、ＣＰＵユニット８１０、ＩＯユニット８２０およびＰＣＩユニット８３０をそれぞれ複数備えてもよい。また、情報処理装置８００は、ＰＣＩユニット８３０の代わりに任意のＩＯユニットあるいはＰＣＩユニットを接続可能である。ＩＯユニット８２０およびＰＣＩユニット８３０は「デバイス」の一例である。また、ＩＯユニット８２０に含まれるビデオコントローラ、ハードディスクコントローラ等のＩＯデバイスは、「デバイス」の一例である。また、ＰＣＩユニット８３０のＰＣＩスイッチおよびＰＣＩスロットを介して接続される種々の周辺装置も「デバイス」の一例である。
【００１２】
ＣＰＵユニット８１０は、演算処理を行う。ＣＰＵユニット８１０は、ＣＰＵ８１１、メモリ８１２およびＰＣＩスイッチ８１３を備える。ＰＣＩスイッチ８１３には、ＩＯユニット８２０およびＰＣＩユニット８３０が接続されている。ＰＣＩスイッチ８１３は、ＰＣＩスイッチ８１３に接続されるＩＯデバイスに割り当てられるバス番号を記憶するバス番号レジスタを有する。図１では、ＰＣＩスイッチ８１３に接続されるデバイスとして、ＩＯユニット８２０およびＰＣＩユニット８３０が例示されている。
【００１３】
ＩＯユニット８２０には、各種ＩＯデバイスが接続される。ＩＯユニット８２０は、ＩＯコントローラ８２１およびＲｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ（ＲＯＭ）８２７を備える。図１では、ＩＯコントローラ８２１には、例えば、ビデオコントローラおよびハードディスクコントローラが接続される。また、ＩＯコントローラ８２１は、接続されるＩＯデバイスに割り当てられるバス番号を記憶するバス番号レジスタを備える。ハードディスクコントローラには、ハードディスク８２２が接続されている。ＲＯＭ８２７は、不揮発性メモリである。ＲＯＭ８２７には、例えば、ＢＩＯＳファームウェア８２８が記憶される。ＢＩＯＳファームウェア８２８は、以下、本明細書において、ＢＩＯＳ８２８とも称する。ＢＩＯＳ８２８は、ＩＯデバイスにバス番号を割り当てるＰＣＩバス番号設定部８２９を含む。
【００１４】
ハードディスク８２２は、情報処理装置８００の補助記憶部に相当する。ハードディスク８２２は、各種のプログラム及び各種のデータを読み書き自在に記録媒体に格納する。ハードディスク８２２は、外部記憶装置とも呼ばれる。ハードディスク８２２には、Ｗｉｎｄｏｗｓ（登録商標）等のＯＳ８２３、各種プログラム、各種テーブル等が格納される。
【００１５】
情報処理装置８００の補助記憶部は、ハードディスク８２２以外の態様によって実現されてもよい。補助記憶部は、例えば、Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ（ＥＰＲＯＭ）、ソリッドステートディスク（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ、ＳＳＤ）等を用いることができる。また、補助記憶部は、例えば、Ｃｏｍｐａｃｔ  Ｄｉｓｃ（ＣＤ）ドライブ装置、Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ（ＤＶＤ）ドライブ装置、Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ（ＢＤ）ドライブ装置等を用いてもよい。また、補助記憶部として、Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ（ＮＡＳ）あるいはＳｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＳＡＮ）が用いられてもよい。記録媒体としては、例えば、不揮発性半導体メモリ（フラッシュメモリ）を含むシリコンディスク、ハードディスク、ＣＤ、ＤＶＤ、ＢＤ、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）メモリ等である。
【００１６】
ＯＳ８２３は、通信部（図示を省略）を介して接続される外部装置等とのデータの受け渡しを行う通信インターフェースプログラムを含む。外部装置等には、例えば、ネットワーク等で接続された、他の映像処理装置あるいは外部記憶装置が含まれる。ＯＳ８２３は、ＩＯ初期化部８２４を含む。ＩＯ初期化部８２４は、稼働中の情報処理装置８００に追加あるいは交換されたＩＯデバイスにバス番号を割り当てる。稼働中の情報処理装置８００に追加あるいは交換されたＩＯデバイスは、以下、本明細書において、活性追加あるいは活性交換されたＩＯデバイスと称する。また、ＯＳ８２３には、情報処理装置８００に接続されたＩＯデバイスを制御するデバイスドライバ８２５が導入されている。デバイスドライバ８２５は、ＩＯ初期化完了処理部８２６を含む。ＩＯ初期化完了処理部８２６は、ＩＯデバイスの活性追加あるいは活性交換の完了をＢＩＯＳ８２８に通知する。ＯＳ８２３およびデバイスドライバ８２５は、ハードディスク８２２からＣＰＵユニット８１０のメモリ８１２にローディングされ、ＣＰＵ８１１で実行される。
【００１７】
ＰＣＩユニット８３０は、ＰＣＩスイッチ８３１を備える。ＰＣＩスイッチ８３１には、ＰＣＩスロットが接続されている。ＰＣＩスイッチ８３１は、ＰＣＩスロットに接続されるＩＯデバイスに割り当てられるバス番号を記憶するバス番号レジスタを備える。
【００１８】
情報処理装置８００は、例えば、Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）あるいはインターネット等のネットワーク環境とのインターフェースとなる通信部をさらに備えてもよい。通信部は、ネットワーク環境を介して外部の装置と通信を行う。
【００１９】
情報処理装置８００は、例えば、ユーザ等からの操作指示等を受け付ける入力部をさらに備えてもよい。このような入力部として、キーボード、ポインティングデバイス、タッチパネル、加速度センサーあるいは音声入力装置といった入力デバイスを例示できる。
【００２０】
情報処理装置８００は、例えば、ＣＰＵ８１１で処理されるデータあるいはメモリ８１２に記憶されるデータを出力する出力部を備えるものとしてもよい。このような、出力部として、Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ（ＣＲＴ）ディスプレイ、Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ（ＬＣＤ）、Ｐｌａｓｍａ  Ｄｉｓｐｌａｙ  Ｐａｎｅｌ（ＰＤＰ）、Ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ（ＥＬ）パネル、有機ＥＬパネルあるいはプリンタといった出力デバイスを例示できる。
【００２１】
図２は、比較例において、バス番号が割り当てられる前の状態を例示する図である。図２では、ＣＰＵユニット１、２、ＩＯユニット１、２およびＰＣＩユニット１、２が例示されている。ＣＰＵユニット１には、ＩＯユニット１およびＰＣＩユニット１が接続されている。ＣＰＵユニット２には、ＩＯユニット２およびＰＣＩユニット２が接続されている。図２の状態では、ＢＩＯＳ８２８あるいはＯＳ８２３によってバス番号がまだ割り当てられていない。そのため、図２では、バス番号は初期値の０となっている。図２において、バス番号の値は「バス＝０」と記載されている。
【００２２】
バス番号は、ＢＩＯＳ８２８のＰＣＩバス番号設定部８２９あるいはＯＳ８２３のＩＯ初期化部８２４によってＩＯデバイスに割り当てられる。割り当てられたバス番号は、バス番号レジスタに記憶される。情報処理装置８００の起動時において既に接続されているＩＯデバイスに対しては、ＢＩＯＳ８２８のＰＣＩバス番号設定部８２９がバス番号を割り当てる。活性追加あるいは活性交換されたＩＯデバイスに対しては、ＯＳ８２３のＩＯ初期化部８２４がバス番号を割り当てる。ＩＯ初期化部８２４は、例えば、未割り当てのバス番号から小さい番号順にバス番号をＩＯデバイスに割り当てる。
【００２３】
ところで、バス番号は、ＩＯデバイスに対して小さい番号（例えば０番）から順番に割り当てられることが多い。このようにバス番号を割り当てると、以下のような場合にＩＯ
デバイスに割り当てられたバス番号が変更される虞がある。
【００２４】
例えば、図２に例示された構成からＩＯユニット１を取り外す場合を考える。この状態で、情報処理装置８００が起動されると、ＢＩＯＳ８２８が各ＩＯデバイスに対してバス番号を割り当てる。ＩＯユニット１が取り外されているので、ＩＯユニット２から順番にバス番号が割り当てられる。その結果、ＩＯユニット１が接続されていた状態と比較して、ＩＯデバイスに割り当てられるバス番号が変更される虞がある。
【００２５】
そこで、上記の問題を軽減するため、比較例では、ＰＣＩバス番号設定部８２９によって割り当てられるバス番号の範囲がユニットごとに指定されている。例えば、図２のＩＯユニット１では、ＰＣＩバス番号設定部８２９によって割り当てられるバス番号の範囲は１〜３１となっている。このようにすることで、情報処理装置８００が停止された状態でＩＯユニット１が取り外されても、ＰＣＩバス番号設定部８２９によってＩＯユニット２等に対してあらかじめ定められた範囲のバス番号が割り当てられる。その結果、情報処理装置８００が停止された状態でＩＯユニット１が取り外された場合でも、ＩＯユニット２等に割り当てられるバス番号は変更されない。以下、本明細書において、ユニットごとにバス番号の割り当て範囲を定めてバス番号を割り当てる方法を、「固定のバス番号を割り当てる方法」と称する。
【００２６】
図３は、比較例において、バス番号が割り当てられた後の状態を例示する図である。図３では、各ＩＯデバイスにバス番号が割り当てられている。例えば、図３のＩＯユニット１のＰＣＩスイッチには、バス番号として１が割り当てられている。また、ビデオコントローラには、バス番号として２が割り当てられている。さらに、ハードディスクコントローラには、バス番号として３が割り当てられている。
【００２７】
図４は、比較例において、ＰＣＩユニット１が活性追加された状態を例示する図である。図４は、図３の状態にＰＣＩユニット１が活性追加されている。活性追加されたＰＣＩユニット１に対して、ＯＳ８２３のＩＯ初期化部８２４はバス番号を割り当てる。ＩＯ初期化部８２４は、未割り当てのバス番号から小さい番号順にバス番号をＩＯデバイスに割り当てる。その結果、図４では、活性追加されたＰＣＩユニット１およびＰＣＩユニット１に含まれるＩＯデバイスに対して、バス番号４〜７が割り当てられている。
【００２８】
この状態で、情報処理装置８００が再起動されると、バス番号レジスタに記憶されていたバス番号は消去される。情報処理装置８００が起動されると、ＢＩＯＳ８２８のＰＣＩバス番号設定部８２９は、ＩＯデバイスに対してバス番号を割り当てる。図２に例示される通り、ＰＣＩバス番号設定部８２９によるバス番号の割り当てでは、ＰＣＩユニット１に対して、６５〜９５の範囲でバス番号が割り当てられる。その結果、活性追加時にＯＳ８２３のＩＯ初期化部８２４によって割り当てられたバス番号とは異なるバス番号が、ＰＣＩバス番号設定部８２９によってＰＣＩユニット１に割り当てられる。
【００２９】
比較例では、ＯＳ８２３のＩＯ初期化部８２４とＢＩＯＳ８２８のＰＣＩバス番号設定部８２９とが独立してＩＯデバイスにバス番号を割り当てた。さらに、割り当てられたバス番号は、情報処理装置８００が再起動されると消去された。そのため、ＩＯデバイスの活性追加あるいは活性交換後に情報処理装置８００が再起動されると、ＰＣＩバス番号設定部８２９によって、ＩＯ初期化部８２４によって割り当てられたバス番号とは異なるバス番号が割り当てられる虞がある。
【００３０】
＜第１実施形態＞
比較例では、情報処理装置８００が再起動されると、ＯＳ８２３によって割り当てられたバス番号とは異なるバス番号がＢＩＯＳ８２８によってＩＯデバイスに割り当てられる
虞があった。第１実施形態では、ＩＯデバイスに割り当てられたバス番号が不揮発性の記憶部に保存される。ＢＩＯＳが、その記憶部を参照してＩＯデバイスにバス番号を割り当てる事で、ＩＯデバイスに割り当てられるバス番号の変更が抑制される。以下、図５〜図１２を参照して、第１実施形態について説明する。なお、比較例と共通の構成要素については同一の符号を付し、その説明は省略される。
【００３１】
図５は、第１実施形態の情報処理装置１００の構成を例示する図である。情報処理装置１００は、ＲＯＭ８２７にＢＩＯＳファームウェア１２５およびＩＯデバイスのバス番号テーブル１２６を含む点で情報処理装置８００と異なる。
【００３２】
ＢＩＯＳ１２５は、情報処理装置１００に接続されているＩＯデバイス等の初期化処理等を行う。ＢＩＯＳ１２５は、起動された情報処理装置１００に接続されているＩＯデバイスにバス番号を割り当てる。ＢＩＯＳファームウェア１２５は、以下、本明細書において、ＢＩＯＳ１２５とも称する。バス番号は、各ＩＯデバイスにおいて重複しないように割り当てられる。バス番号は、「アドレス情報」の一例である。
【００３３】
バス番号テーブル１２６には、ＩＯデバイスを特定する情報およびＩＯデバイスに割り当てられたバス番号が記憶される。ＩＯデバイスを特定する情報は、例えば、ＩＯデバイスが接続される接続経路の情報を含む。ＩＯデバイスのバス番号テーブル１２６は、以下、本明細書において、バス番号テーブル１２６とも称する。バス番号テーブル１２６は、「アドレス情報記憶部」の一例である。
【００３４】
ＢＩＯＳ１２５は、ＰＣＩバス番号設定部１２５ａ、ＰＣＩバス番号取得部１２５ｂおよびＩＯデバイスバス番号テーブル管理部１２５ｃを含む。ＰＣＩバス番号設定部１２５ａは、バス番号テーブル１２６に保存された情報を参照して、ＩＯデバイスにバス番号を割り当てる。ＰＣＩバス番号設定部１２５ａは、「第１のアドレス情報割当部」の一例である。ＰＣＩバス番号取得部１２５ｂは、ＩＯデバイスに割り当てられたバス番号を取得する。ＩＯデバイスバス番号テーブル管理部１２５ｃは、ＰＣＩバス番号取得部１２５ｂによって取得されたバス番号とそのバス番号が割り当てられたＩＯデバイスの対応をバス番号テーブル１２６に保存する。また、ＩＯデバイスバス番号テーブル管理部１２５ｃは、バス番号テーブル１２６に保存された情報を読み込む。ＩＯデバイスバス番号テーブル管理部１２５ｃは、「対応情報管理部」の一例である。
【００３５】
＜情報処理装置１００の処理ブロック＞
図６は、情報処理装置１００の処理ブロックを例示する図である。図６では、ＣＰＵ８１１、メモリ８１２が例示されている。図６では、さらに、メモリ８１２に展開された各処理ブロックが例示されている。図６では、処理ブロックとして、第１アドレス割当部１６１、第２アドレス割当部１６２、対応情報管理部１６３、アドレス情報取得部１６４および対応情報記憶部１６５が例示されている。例えば、図５のＣＰＵ８１１が図６の各処理ブロックとしてメモリ８１２に実行可能に展開されたコンピュータプログラムを実行する。ただし、図６のいずれかのブロックの少なくとも一部はハードウェア回路を含んでもよい。
【００３６】
ＣＰＵ８１１は、第１アドレス割当部１６１として、対応情報記憶部１６４に保存された情報を参照して、起動される情報処理装置１００に接続されているＩＯデバイスにアドレス情報を割り当てる。第１アドレス割当部１６１は、「第１のアドレス情報割当部」の一例である。
【００３７】
ＣＰＵ８１１は、第２アドレス割当部１６２として、稼働中の情報処理装置１００に接続されるＩＯデバイスにアドレス情報を割り当てる。第２アドレス割当部１６２は、「第
２のアドレス情報割当部」の一例である。
【００３８】
ＣＰＵ８１１は、対応情報管理部１６３として、アドレス情報取得部１６４によって取得されたアドレス情報とそのアドレス情報が割り当てられたＩＯデバイスの対応を対応情報記憶部１６５に保存する。また、対応情報管理部１６３は、対応情報記憶部１６５に保存された情報を読み込む。対応情報管理部１６３は、「対応情報管理部」の一例である。対応情報記憶部１６５は、「アドレス情報記憶部」の一例である。
【００３９】
ＣＰＵ８１１は、アドレス情報取得部１６４として、ＩＯデバイスに割り当てられたアドレス情報を取得する。
【００４０】
図７は、バス番号テーブル１２５ｃの初期状態を例示する図である。バス番号テーブル１２５ｃには、ユニット１０、デバイス１１およびバス番号１２の各情報が記憶される。ユニット１０には、情報処理装置１００に接続されているユニットのユニット名が記憶される。デバイス１１には、ユニット１０に記憶されたユニット名のユニットからＩＯデバイスへの接続経路が記憶される。ユニット名１０およびデバイス１１によって、ＩＯデバイスから情報処理装置１００までの接続経路は特定される。つまり、ＩＯデバイスは、ユニット名１０およびデバイス１１に記憶された情報によって特定される。バス番号テーブル１２５ｃには、情報処理装置１００に接続され得るユニットおよびＩＯデバイスの情報があらかじめ記憶されている。バス番号１２には、ＩＯデバイスに割り当てられたバス番号が記憶される。図７の状態では、バス番号として初期値を例示する０が記憶されている。
【００４１】
図８は、ＢＩＯＳ１２５によるＩＯデバイスへのバス番号を割り当てる処理の流れを例示する図である。以下、図８を参照して、起動される情報処理装置１００に既に接続されているＩＯデバイスに対して、ＢＩＯＳ１２５がバス番号を割り当てる処理が説明される。
【００４２】
Ｓ１０１では、情報処理装置１００が起動される。情報処理装置１００が起動されると、ＢＩＯＳ１２５は、情報処理装置１００のバスＢ１をスキャンし、情報処理装置１００に接続されているＩＯデバイスを検出する。
【００４３】
Ｓ１０２では、ＩＯデバイスバス番号管理部１２５ｃは、バス番号テーブル１２６を参照する。
【００４４】
バス番号テーブル１２６のバス番号１２に保存されている値がすべて０の場合（Ｓ１０３でＹｅｓ）、処理はＳ１０４に進められる。バス番号テーブル１２６のバス番号１２に０以外の値が保存されている場合（Ｓ１０３でＮｏ）、処理はＳ１０５に進められる。
【００４５】
Ｓ１０４では、ＰＣＩバス番号設定部１２５ａは、固定のバス番号を割り当てる方法に従って、ＩＯデバイスにバス番号を割り当てる。割り当てられたバス番号は、それぞれのＩＯデバイス用のバス番号レジスタに記憶される。「固定のバス番号を割り当てる方法」は、「所定の手順」の一例である。Ｓ１０４の処理は、「第１のアドレス情報割当処理」の一例である。
【００４６】
Ｓ１０５では、ＰＣＩバス番号設定部１２５ａは、バス番号テーブル１２６に従って、ＩＯデバイスにバス番号を割り当てる。割り当てられたバス番号は、それぞれのＩＯデバイス用のバス番号レジスタに記憶される。Ｓ１０５の処理は、「第１のアドレス情報割当処理」の一例である。
【００４７】
以上の処理を行うことで、情報処理装置１００は、バス番号をＩＯデバイスに割り当てる（Ｓ１０６）。
【００４８】
図９は、ＩＯデバイスの活性追加あるいは活性交換の処理の流れを例示する図である。図８では、起動される情報処理装置１００に既に接続されているＩＯデバイスにバス番号を割り当てる処理が説明された。図９では、稼働中の情報処理装置１００に対してＩＯデバイスが追加あるいは交換される場合の処理が説明される。
【００４９】
Ｓ１１１では、情報処理装置１００にＩＯユニットあるいはＰＣＩユニットが活性追加あるいは活性交換される。
【００５０】
Ｓ１１２からＳ１１３では、ＯＳ８２３のＩＯ初期化部８２４が、Ｓ１１１で活性追加あるいは活性交換されたＩＯデバイスの初期化処理を行う。ＩＯ初期化部８２４は、ＩＯデバイスの初期化処理として、例えば、ＩＯデバイスにバス番号を割り当てる。割り当てられたバス番号は、それぞれのＩＯデバイス用のバス番号レジスタに記憶される。Ｓ１１３の処理は、「第２のアドレス情報割当処理」の一例である。
【００５１】
Ｓ１１４では、デバイスドライバ８２５のＩＯ初期化完了処理部８２６は、ＩＯユニットあるいはＰＣＩユニットの活性追加あるいは活性交換の完了をＢＩＯＳ１２５に通知する。Ｓ１１４の処理は、「第２のアドレス情報割当部によるアドレスの割り当ての完了を通知」する処理の一例である。
【００５２】
Ｓ１１５では、Ｓ１１４の通知を受けたＢＩＯＳ１２５のＰＣＩバス番号取得部１２５ｂは、ＩＯデバイスのバス番号レジスタを全て読み込む。
【００５３】
Ｓ１１６では、ＰＣＩバス番号取得部１２５ｂは、Ｓ１１５で読み込んだバス番号をバス番号テーブル１２６のバス番号１２の列において、Ｓ１１５でバス番号を読み込んだＩＯデバイスから情報処理装置１００までの接続経路に対応する行（図７のユニット１０およびデバイス１１の列参照）に保存する。Ｓ１１６の処理は、「対応情報管理処理」の一例である。
【００５４】
以上の処理を行うことで、情報処理装置１００に対するＩＯデバイスの活性追加あるいは活性交換が行われる。
【００５５】
図１０および図１２は、第１実施形態の情報処理装置１００に対してＰＣＩユニットを活性追加あるいは活性交換した場合の処理の流れを例示する図である。図１１は、図１０に例示される処理によってＰＣＩユニットが追加された後のバス番号管理テーブル１２５ｃを例示する図である。ここでは、図３の構成で起動された情報処理装置１００に対して、図４のようにＰＣＩユニット１が活性追加された場合を想定して説明する。以下、図１０〜図１２を参照して、情報処理装置１００にＰＣＩユニットを活性追加あるいは活性交換した場合の処理の流れを説明する。
【００５６】
Ｓ２０１〜Ｓ２０６では、情報処理装置１００の起動時の処理が説明される。
【００５７】
Ｓ２０１では、情報処理装置１００の電源がオンにされる。Ｓ２０２では、ＩＯデバイスバス番号テーブル管理部１２５ｃは、バス番号テーブル１２６を参照する。ＩＯデバイスバス番号テーブル管理部１２５ｃは、バス番号テーブル１２６のバス番号１２に記憶されているバス番号がすべて０であるか確認する。
【００５８】
バス番号１２に記憶されているバス番号がすべて０である場合（Ｓ２０３でＹｅｓ）、
処理はＳ２０４に進められる。バス番号１２に記憶されているバス番号に０以外の値が含まれている場合（Ｓ２０３でＮｏ）、処理はＳ２０５に進められる。ここでは、情報処理装置１００の初回起動なので、バス番号１２に記憶されているバス番号はすべて０となっている。そのため、処理はＳ２０４に進められる。
【００５９】
Ｓ２０４では、ＰＣＩバス番号設定部１２５ａは、ＩＯデバイスのバス番号レジスタに、固定のバス番号を割り当てる方法に従いバス番号を割り当てる。「固定のバス番号を割り当てる方法」は、「所定の手順」の一例である。Ｓ２０４の処理は、「第１のアドレス情報割当処理」の一例である。
【００６０】
Ｓ２０５では、ＰＣＩバス番号設定部１２５ａは、バス番号テーブル１２６に保存された情報に基づいてバス番号をＩＯデバイスに割り当てる。
【００６１】
Ｓ２０６では、情報処理装置１００のＯＳ８２３が起動し、情報処理装置１００の運用が開始される。
【００６２】
Ｓ２０７〜Ｓ２０９では、情報処理装置１００にＰＣＩユニット１が活性追加される処理が説明される。
【００６３】
Ｓ２０７では、情報処理装置１００にＰＣＩユニット１が追加される。ＰＣＩユニット１の追加は、ＯＳ８２３に通知される。ＯＳ８２３は、例えば、割り込みによってＰＣＩユニット１の追加を通知される。割り込みは、例えば、Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ（ＡＣＰＩ）割り込みである。ＡＣＰＩ割り込みは、Ｓｙｓｔｅｍ  Ｃｏｎｔｒｏｌ  Ｉｎｔｅｒｒｕｐｔ（ＳＣＩ）割り込みとも称される。ＡＣＰＩは、例えば、情報処理装置１００のＯＳ８２３にＩＯデバイスの識別等を実現させるインターフェースである。ＳＣＩ割り込みは、例えば、ＡＣＰＩで検出されたイベントをＯＳ８２３に通知する。ＡＣＰＩで検出されたイベントとは、例えば、ＩＯデバイスの活性追加あるいは活性交換である。
【００６４】
Ｓ２０８〜Ｓ２０９では、ＩＯ初期化部８２４が、追加されたＰＣＩユニット１の初期化処理を実行する。初期化処理として、例えば、ＩＯ初期化部８２４は、ＰＣＩユニット１およびＰＣＩユニット１に含まれる各ＩＯデバイスにバス番号を割り当てる。割り当てられたバス番号は、バス番号レジスタに記憶される。
【００６５】
Ｓ２１０〜Ｓ２１２では、ＩＯ初期化部８２４によって割り当てられたバス番号をバス番号テーブル１２６に保存する処理が実行される。
【００６６】
Ｓ２１０では、ＩＯ初期化完了処理部８２６が、ＢＩＯＳ１２５にＰＣＩユニット１の活性追加完了を通知する。この通知には、例えば、Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ
Ｉｎｔｅｒｒｕｐｔｓ（ＳＭＩ）割り込みが用いられる。ＳＭＩ割り込みは、例えば、情報処理装置１００のＣＰＵ８１１をシステム管理モードに遷移させる割り込みである。Ｓ２１０の処理は、「第２のアドレス情報割当部によるアドレスの割り当ての完了を通知」する処理の一例である。
【００６７】
Ｓ２１１では、ＰＣＩバス番号取得部１２５ｂは、Ｓ２１０のＳＭＩ割り込みを受信すると、情報処理装置１００に接続されている全てのＩＯデバイスのバス番号レジスタを読み込む。
【００６８】
Ｓ２１２では、ＩＯデバイスバス番号テーブル管理部１２５ｃは、ＰＣＩバス番号取得部１２５ｂが読み込んだバス番号をバス番号テーブル１２６のバス番号１２の列において
、Ｓ１１５でバス番号を読み込んだＩＯデバイスから情報処理装置１００までの接続経路に対応する行（図１１のユニット１０およびデバイス１１の列参照）に書き込む。Ｓ２１２の処理は、「対応情報管理処理」の一例である。
【００６９】
以上の処理により、情報処理装置１００に接続されているＩＯデバイスのバス番号はバス番号テーブル１２６に保存される。
【００７０】
図１１は、図１０で説明されたＰＣＩユニット１が追加された後のバス番号管理テーブル１２６を例示する図である。図１１を参照すると、バス番号管理テーブル１２６には、ＢＩＯＳ１２５によって割り当てられたバス番号およびＯＳ８２３によって割り当てられたバス番号が保存されている。図１１において、ＢＩＯＳ１２５によって割り当てられたバス番号は、例えば、ＩＯユニット１およびＰＣＩユニット２のバス番号である。図１１において、ＯＳ８２３によって割り当てられたバス番号は、例えば、ＰＣＩユニット１のバス番号である。なお、バス番号管理テーブル１２６の各行は、情報処理装置１００に接続されるＩＯデバイス（ユニット１０およびデバイス１１）とＩＯデバイスに付与されるバス番号（バス番号１２）との関係を記憶している。バス番号管理テーブル１２６のユニット名１０、デバイス１１およびバス番号１２の組み合わせが「関係」の一例である。
【００７１】
図１２を参照して、図１０の処理によってＰＣＩユニット１が活性追加された後、情報処理装置１００が再起動される際の処理を説明する。
【００７２】
Ｓ２１３〜Ｓ２１４では、ＰＣＩユニット１が追加された情報処理装置１００の使用が開始される。
【００７３】
Ｓ２１３では、活性追加されたＩＯデバイスのデバイスドライバに設定情報が設定される。追加されたＩＯデバイスがネットワークコントローラであれば、設定情報としてＩＰアドレス等の情報が設定されればよい。
【００７４】
Ｓ２１４では、ＰＣＩユニット１が追加された情報処理装置１００の運用が開始される。Ｓ２１５では、情報処理装置１００が再起動される。情報処理装置１００の再起動は、例えば、セキュリティパッチの適用、情報処理装置１００の設定変更あるいはメンテナンス等の場合に行われる。
【００７５】
Ｓ２１６〜Ｓ２１９では、情報処理装置１００の起動中の処理が例示される。Ｓ２１６〜Ｓ２１９では、ＢＩＯＳ１２５のＰＣＩバス番号設定部１２５ａによってＩＯデバイスにバス番号が割り当てられる。
【００７６】
Ｓ２１６〜Ｓ２１８の処理は、図１０のＳ２０２〜Ｓ２０４の処理と同様である。そのため、説明は省略される。
【００７７】
Ｓ２１９〜Ｓ２２０の処理は、Ｓ２０５〜Ｓ２０６の処理と同様である。そのため、説明は省略される。
【００７８】
第１実施形態は、ＩＯデバイスの活性追加あるいは活性交換を契機として、情報処理装置１００に接続されているＩＯデバイスに割り当てられたバス番号をバス番号テーブル１２６に保存した。その結果、第１実施形態は、ＢＩＯＳ１２５のＰＣＩバス番号設定部１２５ａおよびＯＳ８２３のＩＯ初期化部８２４のそれぞれによって割り当てられたバス番号をバス番号テーブル１２６に保存できる。
【００７９】
第１実施形態では、ＢＩＯＳ１２５のＰＣＩバス番号設定部１２５ａおよびＯＳ８２３
のＩＯ初期化部８２４のそれぞれによってＩＯデバイスに割り当てられたバス番号がバス番号テーブル１２６に保存された。第１実施形態では、情報処理装置１００が起動されると、ＢＩＯＳ１２５のＰＣＩバス番号設定部１２５ａは、ＩＯデバイスに割り当てられたバス番号がバス番号テーブル１２６に保存されているか否かを判定する。そして、ＩＯデバイスに割り当てられたバス番号がバス番号テーブル１２６に保存されている場合に、ＢＩＯＳ１２５のＰＣＩバス番号設定部１２５ａは、バス番号テーブル１２６を参照してバス番号をＩＯデバイスに割り当てた。その結果、第１実施形態では、ＩＯデバイスの活性追加あるいは活性交換された後に情報処理装置１００が再起動された場合でも、ＩＯデバイスに割り当てられるバス番号の変更が抑制される。すなわち、情報処理装置１００が再起動された場合に、情報処理装置１００の停止前にＢＩＯＳ１２５のＰＣＩバス番号設定部１２５ａおよびＯＳ８２３のＩＯ初期化部８２４のそれぞれによってＩＯデバイスに割り当てられたバス番号が再起動後も継続して停止前と同一のＩＯデバイスに割当られる。
【００８０】
第１実施形態のバス番号テーブル１２６は、情報処理装置１００の停止前にＰＣＩバス番号設定部１２５ａおよびＩＯ初期化部８２４のそれぞれによってＩＯデバイスに割当られたバス番号を当該バス番号が割り当てられたＩＯデバイスと対応付けて保存している。そのため、複数のＩＯデバイスを活性追加あるいは活性交換された後に情報処理装置１００が再起動された場合でも、ＰＣＩバス番号設定部１２５ａは、各ＩＯデバイスに割り当てられていたバス番号をバス番号テーブル１２６から取得できる。その結果、第１実施形態では、複数のＩＯデバイスを活性追加あるいは活性交換された場合でも、ＩＯデバイスに割り当てられるバス番号の変更が抑制される。
【００８１】
＜第２実施形態＞
第１実施形態では、ＢＩＯＳ１２５が、情報処理装置１００に接続されたＩＯデバイスに割り当てられたバス番号を取得した。取得されたバス番号は、ＢＩＯＳ１２５によってバス番号テーブル１２６に保存された。第２実施形態では、デバイスドライバが、情報処理装置に接続されたＩＯデバイスに割り当てられたバス番号を取得する。また、第２実施形態では、デバイスドライバが、取得したバス番号をＢＩＯＳに通知する。通知されたバス番号は、ＢＩＯＳによってバス番号テーブルに記憶される。以下、図１３〜図１５を参照して、第２実施形態について説明する。なお、第１実施形態と共通の構成要素については同一の符号を付し、その説明は省略される。
【００８２】
図１３は、第２実施形態の情報処理装置２００を例示する図である。情報処理装置２００は、第１実施形態の情報処理装置１００と異なり、ＯＳ８２３にデバイスドライバ２２３ｂが導入されている。また、情報処理装置２００は、第１実施形態の情報処理装置１００と異なり、ＲＯＭ８２７にＢＩＯＳファームウェア２２５が記憶されている。
【００８３】
ＯＳ８２３には、情報処理装置２００に接続されたＩＯデバイスを制御するソフトウェアであるデバイスドライバ２２３ｂが導入されている。デバイスドライバ２２３ｂは、ＩＯ初期化完了処理部８２６、ＰＣＩバス番号取得部２２３ｄおよびＰＣＩバス番号通知部２２３ｅを含む。ＯＳ８２３およびデバイスドライバ２２３ｂは、ハードディスク８２２からＣＰＵユニット８１０のメモリ８１２にローディングされ、ＣＰＵ８１１で実行される。
【００８４】
ＰＣＩバス番号取得部２２３ｄは、ＩＯデバイスに割り当てられたバス番号を取得する。ＰＣＩバス番号通知部２２３ｅは、ＰＣＩバス番号取得部２２３ｄによって取得されたバス番号をＢＩＯＳファームウェア２２５のＰＣＩバス番号受信部２２５ｂに通知する。ＰＣＩバス番号通知部２２３ｅは、例えば、ＢＩＯＳ２２５によって提供されるランタイムサービスを利用してＰＣＩバス番号受信部２２５ｂにバス番号を通知する。
【００８５】
ＲＯＭ８２７には、例えば、ＢＩＯＳファームウェア２２５およびバス番号テーブル１２６が記憶される。ＢＩＯＳファームウェア２２５は、以下、本明細書において、ＢＩＯＳ２２５とも称する。ＢＩＯＳ２２５は、ＰＣＩバス番号設定部１２５ａ、ＰＣＩバス番号受信部２２５ｂおよびＩＯデバイスバス番号テーブル管理部１２５ｃを含む。
【００８６】
ＢＩＯＳ２２５のＰＣＩバス番号受信部２２５ｂは、ＰＣＩバス番号通知部２２３ｅからＩＯデバイスに割り当てられたバス番号を受信する。
【００８７】
図１４および図１５は、第２実施形態の情報処理装置２００にＰＣＩユニットを活性追加あるいは活性交換した場合の処理の流れを例示する図である。ここでは、図３の構成で起動された情報処理装置２００に対して、図４のようにＰＣＩユニット１が活性追加された場合を想定して説明する。以下、図１４および図１５を参照して、情報処理装置２００にＰＣＩユニット１を活性追加あるいは活性交換した場合の処理の流れを説明する。
【００８８】
図１４では、稼働中の情報処理装置２００にＰＣＩユニット１が活性追加された場合に、ＰＣＩユニット１およびＰＣＩユニット１に含まれるＩＯデバイスに割り当てられたバス番号がバス番号管理テーブル１２６に書き込まれる処理が説明される。図１４のＳ３０１〜Ｓ３０９の処理は、図１０のＳ２０１〜Ｓ２０９の処理と同様である。そのため、説明は省略される。
【００８９】
Ｓ３１０〜Ｓ３１３では、デバイスドライバ２２３ｂによって取得されたＩＯデバイスのバス番号が、ＢＩＯＳ２２５によってバス番号テーブル１２６に書き込まれる処理が説明される。
【００９０】
Ｓ３１０では、デバイスドライバ２２３ｂのＰＣＩバス番号取得部２２３ｄが、情報処理装置２００に接続されている全てのＩＯデバイスのバス番号レジスタを読み込む。ただし、Ｓ３１０の処理は、情報処理装置２００に接続されている全てのＩＯデバイスのバス番号を読み込む処理に限定されない。ＰＣＩバス番号取得部２２３ｄは、例えば、ＯＳ８２３のＩＯ初期化部８２４によってバス番号が割り当てられたＩＯデバイスのバス番号レジスタを読み込んでもよい。
【００９１】
Ｓ３１１では、デバイスドライバ２２３ｂのＰＣＩバス番号通知部２２３ｅが、Ｓ３１０で取得されたバス番号および接続経路をＢＩＯＳ２２５のＰＣＩバス番号受信部２２５ｂに通知する。ここで、接続経路は、Ｓ３１０でバス番号を読み込んだＩＯデバイスから情報処理装置２００までの経路を特定する情報である。ＰＣＩバス番号通知部２２３ｅは、例えば、ＢＩＯＳ２２５によって提供されるランタイムサービスを利用してバス番号および接続経路をＰＣＩバス番号受信部２２５ｂに通知すればよい。Ｓ３１１の処理は、「前記第２のアドレス情報割当部によって割り当てられた前記アドレス情報を通知」する処理の一例である。
【００９２】
Ｓ３１２では、ＰＣＩバス番号受信部２２５ｂが、ＰＣＩバス番号通知部２２３ｅによって通知されたバス番号と接続経路を受信する。
【００９３】
Ｓ３１３では、ＩＯデバイスバス番号テーブル管理部１２５ｃは、ＰＣＩバス番号受信部２２５ｂが受信したバス番号を、バス番号テーブル１２６のバス番号１２の列のバス番号の列の接続経路に対応する行（図１１のユニット１０およびデバイス１１参照）に書き込む。Ｓ３１３の処理は、「対応情報管理処理」の一例である。
【００９４】
以上で説明したＳ３０１〜Ｓ３１３の処理によって、活性追加あるいは活性交換されたＩＯデバイスに割り当てられたバス番号は、バス番号テーブル１２６に保存される。
【００９５】
図１５では、ＰＣＩユニット１を活性追加あるいは活性交換された後、運用を継続していた情報処理装置２００を再起動した場合の処理が説明される。図１５のＳ３１４〜Ｓ３２１の処理は、図１２のＳ２１３〜Ｓ２２０の処理と同様である。そのため、説明は省略される。
【００９６】
第２実施形態では、デバイスドライバ２２３ｂのＰＣＩバス番号通知部２２３ｅからバス番号が通知されると、ＢＩＯＳ２２５のＰＣＩデバイスバス番号テーブル管理部１２５ｃは、通知されたバス番号をバス番号テーブル１２６に保存した。その結果、第２実施形態は、ＢＩＯＳ２２５のＰＣＩバス番号設定部１２５ａおよびＯＳ８２３のＩＯ初期化部８２４によって割り当てられたバス番号をバス番号テーブル１２６に保存できる。
【００９７】
第２実施形態では、ＢＩＯＳ１２５のＰＣＩバス番号設定部１２５ａは、バス番号テーブル１２６を参照して、バス番号をＩＯデバイスに割り当てた。その結果、第２実施形態では、第１実施形態と同様に、ＩＯデバイスに割り当てられるバス番号の変更が抑制される。
【００９８】
＜第３実施形態＞
第１実施形態および第２実施形態では、バス番号テーブルはＩＯユニットのＲＯＭに保存された。第３実施形態では、情報処理装置の管理を行うコントローラにバス番号テーブルが保存される形態について説明する。情報処理装置の管理を行うコントローラは、サービスプロセッサあるいはベースボード・マネージメント・コントローラ（ＢＭＣ）とも称される。以下、本明細書では、情報処理装置の管理を行うコントローラをサービスプロセッサと称する。以下、図１６〜図１８を参照して、第３実施形態について説明する。なお、第１実施形態と共通の構成要素については同一の符号を付し、その説明は省略される。
【００９９】
図１６は、第３実施形態の情報処理装置３００を例示する図である。情報処理装置３００は、実施形態１の情報処理装置１００のＩＯユニット８２０の代わりにＩＯユニット３２０を備える。また、情報処理装置３００は、実施形態１の情報処理装置１００に対して、さらに、サービスプロセッサ３４０を備える。ＩＯユニット３２０およびサービスプロセッサ３４０は、サーバ管理バスＢ２で接続されている。
【０１００】
ＩＯユニット３２０は、実施形態１のＩＯコントローラ８２０と異なり、ＩＯコントローラ８２１に代えてＩＯコントローラ３２１を備える。ＩＯコントローラ３２１には、実施形態１のＩＯコントローラ８２１に対して、さらに、サービスプロセッサ３４０と接続されるバスインタフェース３２１ａが追加されている。
【０１０１】
ＢＩＯＳファームウェア３２５は、ＲＯＭ８２７に保存される。ＢＩＯＳファームウェア３２５は、以下、本明細書において、ＢＩＯＳ３２５とも称する。ＢＩＯＳ３２５は、ＰＣＩバス番号設定部１２５ａ、ＰＣＩバス番号取得部１２５ｂおよびサービスプロセッサ通信部３２５ａを含む。
【０１０２】
サービスプロセッサ通信部３２５ａは、サービスプロセッサ３４０との通信を行う。サービスプロセッサ通信部３２５ａは、例えば、ＩＯデバイスに割り当てられているバス番号をサービスプロセッサ３４０に通知する。また、サービスプロセッサ通信部３２５ａは、サービスプロセッサ３４０に対し、ＩＯデバイスのバス番号テーブル３４３ａに保存されているバス番号を問い合わせる。
【０１０３】
サービスプロセッサ３４０は、情報処理装置３００の管理に用いられる。サービスプロセッサ３４０は、コントローラ３４１、バスインタフェース３４２、メモリ３４３および
ＲＯＭ３４４を備える。サービスプロセッサ３４０は、サーバ管理バスＢ２によってＩＯユニット３２０と接続されている。
【０１０４】
メモリ３４３は、例えば不揮発性メモリである。メモリ３４３には、ＩＯデバイスのバス番号テーブル３４３ａが保存されている。ＩＯデバイスのバス番号テーブル３４３ａは、以下、本明細書において、バス番号テーブル３４３ａとも称する。バス番号テーブル３４３ａは、サービスプロセッサ３４０上に保存されていることを除いて、バス番号テーブル１２６と同様である。バス番号テーブル３４３ａは、「アドレス情報記憶部」の一例である。
【０１０５】
ＲＯＭ３４４に保存されているファームウェアは、ＩＯデバイスバス番号テーブル管理部３４４ａおよびＢＩＯＳ通信部３４４ｂを含む。ＩＯデバイスバス番号テーブル管理部３４４ａは、サービスプロセッサ３４０上に保存されていることを除いて、ＩＯデバイスバス番号テーブル管理部１２５ｃと同様である。ＩＯデバイスバス番号テーブル管理部３４４ａは、「対応情報管理部」の一例である。ＢＩＯＳ通信部３４４ｂは、サービスプロセッサ３４０とＢＩＯＳ３２５との通信を行う。ＢＩＯＳ通信部３４４ｂは、例えば、バス番号テーブル３４３ａに保存されているバス番号をサービスプロセッサ通信部３２５ａに通知する。ＢＩＯＳ通信部３４４ｂは、例えば、サービスプロセッサ通信部３２５ａからＩＯデバイスに割り当てられたバス番号を受信する。
【０１０６】
図１７および図１８は、情報処理装置３００にＰＣＩユニットを活性追加あるいは活性交換した場合の処理の流れを例示する図である。ここでは、図３の構成で起動された情報処理装置３００に対して、図４のようにＰＣＩユニット１が活性追加された場合を想定して説明する。以下、図１７および図１８を参照して、情報処理装置３００にＰＣＩユニット１を活性追加あるいは活性交換した場合の処理の流れを説明する。
【０１０７】
図１７のＳ４０１の処理は、図１０のＳ２０１の処理と同様である。そのため、説明は省略される。
【０１０８】
Ｓ４０２では、ＢＩＯＳ３２５のサービスプロセッサ通信部３２５ａは、サービスプロセッサ３４０に対し、バス番号テーブル３４３ａに保存されているバス番号を問い合わせる。サービスプロセッサ通信部３２５ａは、サービスプロセッサ３４０への問い合わせにＩｎｔｅｌｌｉｇｅｎｔ  Ｐｌａｔｆｏｒｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｆａｃｅ（ＩＰＭＩ）コマンドを用いればよい。ＩＰＭＩは、例えば、情報処理装置３００のハードウェア監視に用いられるインターフェースである。
【０１０９】
Ｓ４０３では、サービスプロセッサ３４０のＩＯデバイスバス番号テーブル管理部３４４ａは、サービスプロセッサ３４０のバス番号テーブル３４３ａを参照する。ＩＯデバイスバス番号テーブル管理部３４４ａは、バス番号テーブル３４３ａのバス番号１２に記憶されているバス番号がすべて０であるか確認する。
【０１１０】
Ｓ４０４では、サービスプロセッサ３４０のＢＩＯＳ通信部３４４ｂは、バス番号テーブル３４３ａに保存されているバス番号をＢＩＯＳ３２５に通知する。
【０１１１】
Ｓ４０５〜Ｓ４１３の処理は、図１０のＳ２０３〜２１１の処理と同様である。そのため、説明は省略される。
【０１１２】
Ｓ４１４〜Ｓ４１５では、ＢＩＯＳ３２５のサービスプロセッサ通信部３２５ａは、ＢＩＯＳ３２５のＰＣＩバス番号取得部１２５ｂが取得したバス番号をサービスプロセッサ３４０のＢＩＯＳ通信部３４４ｂに通知する。サービスプロセッサ通信部３２５ａは、例
えば、ＩＰＭＩコマンドによってＢＩＯＳ通信部３４４ｂにバス番号を通知すればよい。
【０１１３】
Ｓ４１６では、サービスプロセッサ３４０のＩＯデバイスバス番号テーブル管理部３４４ａは、ＢＩＯＳ通信部３４４ｂが受信したバス番号をバス番号管理テーブル３４３ａに書き込む。Ｓ４１６の処理は、「対応情報管理処理」の一例である。
【０１１４】
Ｓ４１７〜Ｓ４１９の処理は、図１２のＳ２１３〜Ｓ２１５の処理と同様である。そのため、説明は省略される。
【０１１５】
Ｓ４２０〜Ｓ４２２の処理は、図１７のＳ４０２〜Ｓ４０４の処理と同様である。そのため、説明は省略される。Ｓ４２３〜Ｓ４２６の処理は、図１２のＳ２１７〜２２０の処理と同様である。そのため、説明は省略される。
【０１１６】
第３実施形態では、ＩＯデバイスの活性追加あるいは活性交換を契機として、ＩＯデバイスバス番号テーブル管理部３４４ａが、ＩＯデバイスに割り当てられたバス番号をバス番号テーブル３４３ａに保存した。その結果、第３実施形態は、ＢＩＯＳ３２５のＰＣＩバス番号設定部１２５ａおよびＯＳ８２３のＩＯ初期化部８２４によって割り当てられたバス番号をバス番号テーブル１２６に保存できる。
【０１１７】
第３実施形態では、ＢＩＯＳ３２５のＰＣＩバス番号設定部１２５ａは、バス番号テーブル３４３ａを参照して、バス番号をＩＯデバイスに割り当てた。その結果、第３実施形態では、第１実施形態と同様に、ＩＯデバイスに割り当てられるバス番号の変更が抑制される。
【０１１８】
以上で開示した実施形態や変形例はそれぞれ組み合わせる事ができる。
【０１１９】
＜その他＞
以上の第１実施形態〜第３実施形態を含む実施形態に関し、更に以下の態様を開示する。
（付記１）
情報処理装置に接続されるデバイスと前記デバイスに付与されるアドレス情報との関係を記憶するアドレス情報記憶部と、
前記情報処理装置の起動時に前記アドレス情報記憶部に前記関係が記憶されている場合に前記記憶された関係にしたがって前記情報処理装置に接続されているデバイスにアドレス情報を付与し、前記情報処理装置の起動時に前記アドレス情報記憶部に前記関係が記憶されていない場合に所定の手順で前記情報処理装置に接続されているデバイスにアドレス情報を付与する第１のアドレス情報割当部と、
前記情報処理装置の稼働中に接続されたデバイスに対して、前記情報処理装置に接続済みのデバイスに付与されたアドレス情報と重複しないアドレス情報を付与する第２のアドレス情報割当部によってアドレス情報が付与されると、前記アドレス情報記憶部に記憶される、前記情報処理装置に接続されるデバイスと前記デバイスに付与されるアドレス情報との関係を更新する対応情報管理部と、
を備える情報処理装置。
（付記２）
前記対応情報管理部は、前記第２のアドレス情報割当部によるアドレスの割り当ての完了が通知されると、前記情報処理装置に接続されるすべてのデバイスから、それぞれのデバイスに付与されるアドレス情報を取得し、前記アドレス情報記憶部に記憶される前記関係を更新する、
付記１に記載の情報処理装置。
（付記３）
前記対応情報管理部は、前記第２のアドレス情報割当部によって割り当てられた前記アドレス情報が通知されると、前記アドレス情報記憶部に記憶される前記関係を更新する、
付記１に記載の情報処理装置。
（付記４）
情報処理装置に接続されるデバイスと前記デバイスに付与されるアドレス情報との関係を記憶するアドレス情報記憶部を備える情報処理装置が、
前記情報処理装置の起動時に前記アドレス情報記憶部に前記関係が記憶されている場合に前記記憶された関係にしたがって前記情報処理装置に接続されているデバイスにアドレス情報を付与し、前記情報処理装置の起動時に前記アドレス情報記憶部に前記関係が記憶されていない場合に所定の手順で前記情報処理装置に接続されているデバイスにアドレス情報を付与する第１のアドレス情報割当処理と、
前記情報処理装置の稼働中に接続されたデバイスに対して、前記情報処理装置に接続済みのデバイスに付与されたアドレス情報と重複しないアドレス情報を付与する第２のアドレス情報割当処理によってアドレス情報が付与されると、前記アドレス情報記憶部に記憶される、前記情報処理装置に接続されるデバイスと前記デバイスに付与されるアドレス情報との関係を更新する対応情報管理処理と、
を実行する情報処理方法。
（付記５）
前記対応情報管理処理は、前記第２のアドレス情報割当処理によるアドレスの割り当ての完了が通知されると、前記情報処理装置に接続されるすべてのデバイスから、それぞれのデバイスに付与されるアドレス情報を取得する処理と、前記アドレス情報記憶部に記憶される前記関係を更新する処理とを含む、
付記４に記載の情報処理方法。
（付記６）
前記対応情報管理処理は、前記第２のアドレス情報割当処理によって割り当てられた前記アドレス情報が通知されると、前記アドレス情報記憶部に記憶される前記関係を更新する、
付記４に記載の情報処理方法。
（付記７）
情報処理装置に接続されるデバイスと前記デバイスに付与されるアドレス情報との関係を記憶するアドレス情報記憶部を備える情報処理装置に、
前記情報処理装置の起動時に前記アドレス情報記憶部に前記関係が記憶されている場合に前記記憶された関係にしたがって前記情報処理装置に接続されているデバイスにアドレス情報を付与し、前記情報処理装置の起動時に前記アドレス情報記憶部に前記関係が記憶されていない場合に所定の手順で前記情報処理装置に接続されているデバイスにアドレス情報を付与する第１のアドレス情報割当処理と、
前記情報処理装置の稼働中に接続されたデバイスに対して、前記情報処理装置に接続済みのデバイスに付与されたアドレス情報と重複しないアドレス情報を付与する第２のアドレス情報割当処理によってアドレス情報が付与されると、前記アドレス情報記憶部に記憶される、前記情報処理装置に接続されるデバイスと前記デバイスに付与されるアドレス情報との関係を更新する対応情報管理処理と、
を実行させるプログラム。
（付記８）
前記対応情報管理処理は、前記第２のアドレス情報割当処理によるアドレスの割り当ての完了が通知されると、前記情報処理装置に接続されるすべてのデバイスから、それぞれのデバイスに付与されるアドレス情報を取得する処理と、前記アドレス情報記憶部に記憶される前記関係を更新する処理とを含む、
付記７に記載のプログラム。
（付記９）
前記対応情報管理処理は、前記第２のアドレス情報割当処理によって割り当てられた前
記アドレス情報が通知されると、前記アドレス情報記憶部に記憶される前記関係を更新する、
付記７に記載のプログラム。
【符号の説明】
【０１２０】
１００、２００、３００、８００・・・情報処理装置
８１０・・・ＣＰＵユニット
３２０、８２０・・・ＩＯユニット
８３０・・・ＰＣＩユニット
８２４・・・ＩＯ初期化部
８２６・・・ＩＯ初期化完了部
１２５ａ、８２９・・・ＰＣＩバス番号設定部
１２５ｂ、２２３ｄ・・・ＰＣＩバス番号取得部
１２５ｃ、３４４ａ・・・ＩＯデバイス番号テーブル管理部
１２６、３４３ａ・・・ＩＯデバイスのバス番号テーブル
１６１・・・第１アドレス割当部
１６２・・・第２アドレス割当部
１６３・・・対応情報管理部
１６４・・・アドレス情報取得部
１６５・・・対応情報記憶部
２２３ｅ・・・ＰＣＩバス番号通知部
２２５ｂ・・・ＰＣＩバス番号受信部
３２５ａ・・・サービスプロセッサ通信部
３４０・・・サービスプロセッサ
３４４ｂ・・・ＢＩＯＳ通信部
【図１】
2015230600.tif 000003
【図２】
2015230600.tif 000004
【図３】
2015230600.tif 000005
【図４】
2015230600.tif 000006
【図５】
2015230600.tif 000007
【図６】
2015230600.tif 000008
【図７】
2015230600.tif 000009
【図８】
2015230600.tif 000010
【図９】
2015230600.tif 000011
【図１０】
2015230600.tif 000012
【図１１】
2015230600.tif 000013
【図１２】
2015230600.tif 000014
【図１３】
2015230600.tif 000015
【図１４】
2015230600.tif 000016
【図１５】
2015230600.tif 000017
【図１６】
2015230600.tif 000018
【図１７】
2015230600.tif 000019
【図１８】
2015230600.tif 000020