(57)【要約】【課題】周辺デバイスに効率的かつ容易にＩ／Ｏ空間リソースを割り当てることのできるコンピュータシステムを提供する。【解決手段】システム管理コントローラ１４は周辺デバイス１６1〜１６4毎にデバイスドライバがＩ／Ｏ空間リソースを必要とするか否かを記述したＩ／Ｏリソースファイルを格納した不揮発性メモリ１５を備えている。そして、システム管理コントローラ１４は起動時に不揮発性メモリ１５からＩ／Ｏリソースファイルを読み出してメインメモリ１２に展開する。プロセッサは、システム管理コントローラ１４によってメインメモリ１２に展開されたＩ／Ｏリソースファイルを参照することによって周辺デバイス１６1〜１６4のデバイスドライバがＩ／Ｏ空間リソースを必要とするか否かを調べる。そして、プロセッサは、Ｉ／Ｏ空間リソースが必要な周辺デバイスに対してだけＩ／Ｏ空間リソースを割り当てる。【選択図】図１
2008071042.tif 000002
【特許請求の範囲】
【請求項１】
周辺デバイスを接続することのできるコンピュータシステムであって、
周辺デバイス毎にデバイスドライバがＩ／Ｏ空間リソースを必要とするか否かを記述したＩ／Ｏリソースファイルを格納した不揮発性メモリを備え、起動時に該不揮発性メモリから該Ｉ／Ｏリソースファイルを読み出してメインメモリに展開するシステム管理コントローラと、
前記システム管理コントローラによって前記メインメモリに展開された前記Ｉ／Ｏリソースファイルを参照することによって前記周辺デバイスのデバイスドライバがＩ／Ｏ空間リソースを必要とするか否かを調べ、Ｉ／Ｏ空間リソースが必要な周辺デバイスに対してだけＩ／Ｏ空間リソースを割り当てるプロセッサと、を有するコンピュータシステム。
【請求項２】
前記プロセッサは、周辺デバイスへのアクセスを試みることによって周辺デバイスが存在するか否か判定し、周辺デバイスが存在すれば該周辺デバイスのデバイスドライバがＩ／Ｏ空間リソースを必要とするか否かを調べる、請求項１に記載のコンピュータシステム。
【請求項３】
前記プロセッサは、存在することが分かった周辺デバイスの内部レジスタにアクセスすることによって該周辺デバイスの制御に必要なＩ／Ｏ空間リソースの容量を取得する、請求項２に記載のコンピュータシステム。
【請求項４】
起動時、前記プロセッサはリセットされている状態であり、
前記システム管理コントローラは、前記不揮発性メモリから前記メインメモリに前記Ｉ／Ｏリソースファイルを展開した後に前記プロセッサのリセットを解除する、請求項１から３のいずれか１項に記載のコンピュータシステム。
【請求項５】
前記周辺デバイスはＰＣＩデバイスである、請求項１から４のいずれか１項に記載のコンピュータシステム。
【請求項６】
コンピュータシステムに接続された周辺デバイスに対してＩ／Ｏ空間リソースを割り当てるためのＩ／Ｏ空間リソース割り当て方法であって、
周辺デバイス毎にデバイスドライバがＩ／Ｏ空間リソースを必要とするか否かを記述したＩ／Ｏリソースファイルを不揮発性メモリが予め格納しており、
システム管理コントローラが起動時に前記不揮発性メモリから前記Ｉ／Ｏリソースファイルを読み出してメインメモリに展開し、
プロセッサが、前記システム管理コントローラによって前記メインメモリに展開された前記Ｉ／Ｏリソースファイルを参照することによって前記周辺デバイスのデバイスドライバがＩ／Ｏ空間リソースを必要とするか否かを調べ、Ｉ／Ｏ空間リソースが必要な周辺デバイスに対してだけＩ／Ｏ空間リソースを割り当てる、Ｉ／Ｏ空間リソース割り当て方法。
【請求項７】
前記プロセッサが、周辺デバイスへのアクセスを試みることによって周辺デバイスが存在するか否か判定し、周辺デバイスが存在すれば該周辺デバイスのデバイスドライバがＩ／Ｏ空間リソースを必要とするか否かを調べる、請求項６に記載のＩ／Ｏ空間リソース割り当て方法。
【請求項８】
前記プロセッサが、存在することが分かった周辺デバイスの内部レジスタにアクセスすることによって該周辺デバイスの制御に必要なＩ／Ｏ空間リソースの容量を取得する、請求項７に記載のＩ／Ｏ空間リソース割り当て方法。
【請求項９】
起動時、前記プロセッサはリセットされている状態であり、
前記システム管理コントローラは、前記不揮発性メモリから前記メインメモリに前記Ｉ／Ｏリソースファイルを展開した後に前記プロセッサのリセットを解除する、請求項６から８のいずれか１項に記載のＩ／Ｏ空間リソース割り当て方法。
【請求項１０】
前記周辺デバイスはＰＣＩデバイスである、請求項６から９のいずれか１項に記載のＩ／Ｏ空間リソース割り当て方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、周辺デバイスを接続することができるコンピュータシステムに関する。
【背景技術】
【０００２】
現在、コンピュータシステムの内部バスとしてＰＣＩバスが業界標準となっている。ＰＣＩバスには様々な周辺デバイス（ＰＣＩデバイス）が接続されうる。ＰＣＩデバイスは、デバイスドライバと呼ばれるソフトウェアによって制御される。ＰＣＩデバイス毎にデバイスドライバは異なる。デバイスドライバの中には、動作のためにＩ／Ｏ空間リソースを必要とするものと、必要としないものとがある。Ｉ／Ｏ空間とは、デバイスドライバがＰＣＩデバイスを制御するために使う空間のことである。
【０００３】
『ＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ』によれば、１つのコンピュータシステムにおけるＩ／Ｏ空間リソースの最大サイズは６４Ｋｂｙｔｅと規定されている。このＩ／Ｏ空間リソースが必要に応じて各ＰＣＩデバイスに割り当てられることとなる。
【０００４】
この種のコンピュータシステムには様々な規模のものがある。大規模なコンピュータシステムでは多数のＰＣＩデバイスを接続するためにＰＣＩ−ｔｏ−ＰＣＩバスブリッジが採用されることがある。その場合、ＰＣＩ−ｔｏ−ＰＣＩバスブリッジ配下に接続されたＰＣＩデバイスに対して必要に応じてＩ／Ｏ空間リソースが割り当てられる。
【０００５】
『ＰＣＩ  ｔｏ  ＰＣＩ  Ｂｒｉｄｇｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ』によれば、ＰＣＩ−ｔｏ−ＰＣＩバスブリッジ配下に接続されたＰＣＩデバイスにＩ／Ｏ空間リソースを割り当てる場合、ＰＣＩ−ｔｏ−ＰＣＩバスブリッジには４Ｋｂｙｔｅ単位でＩ／Ｏ空間リソースを割り当てることが規定されている。
【０００６】
上述したようにコンピュータシステム内のＩ／Ｏ空間リソースには上限があるので、ＰＣＩデバイスが多数接続される大規模なコンピュータシステムではＩ／Ｏ空間リソースの枯渇が起きやすい傾向となる。そこでＩ／Ｏ空間リソースの枯渇をできるだけ防ぐために効率の良い割り当て方法の確立が望まれる。
【０００７】
ＰＣＩデバイスへのＩ／Ｏ空間リソースの割り当てはＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）によって行われる。ＢＩＯＳは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）とハードウェアとの仲介役になってコンピュータシステムの初期化などを司るファームウェアである。ＢＩＯＳは、ＰＣＩデバイスへのＩ／Ｏ空間リソースの割り当てに際して、各ＰＣＩデバイスがＩ／Ｏ空間リソースを必要とするか否かを識別し、Ｉ／Ｏ空間リソースを必要とするＰＣＩデバイスにＩ／Ｏ空間リソースを割り当てる。
【０００８】
ＰＣＩデバイスに対するＩ／Ｏ空間リソースの割り当て方法としては３通りの方法が知られている。
【０００９】
第１の方法は、Ｉ／Ｏ空間リソースを必要とするか否かに関わらず、コンピュータシステム内の全てのＰＣＩデバイスにＩ／Ｏ空間リソースを割り当てるという方法である。この方法ではＩ／Ｏ空間リソースを必要としないＰＣＩデバイスに対してもＩ／Ｏ空間リソースが割り当てられる。Ｉ／Ｏ空間リソースの無駄な割り当てによって大規模なコンピュータシステムではＩ／Ｏ空間リソースの枯渇が起きやすくなる。
【００１０】
第２の方法は、ＰＣＩデバイス内ベースアドレスレジスタの内容からＩ／Ｏ空間リソースが必要か否か判断し、Ｉ／Ｏ空間リソースが必要と判断されたＰＣＩデバイスにだけＩ／Ｏ空間リソースを割り当てるという方法である。
【００１１】
ＰＣＩデバイス内のベースアドレスレジスタによってＩ／Ｏ空間リソースの要否が判断できるが、実はその判断が常に正しいとは限らないという問題がある。つまり、ＰＣＩデバイス内ベースアドレスレジスタからＩ／Ｏ空間リソースが必要と判断されたにも関わらず、そのＰＣＩデバイスを制御するデバイスドライバがＩ／Ｏ空間リソースを全く使わないということがあり得る。これは、元々は必要であったＩ／Ｏ空間リソースがデバイスドライバの改造によって不要になることがあり、その改造はＰＣＩデバイス内ベースアドレスレジスタには反映されないからである。その結果、第２の方法でも、やはりＩ／Ｏ空間リソースが無駄に割り当てられる可能性がある。
【００１２】
第３の方法は、ＰＣＩデバイス毎にＩ／Ｏ空間リソースを割り当てるか否かをユーザによる人手で設定する方法である（例えば特許文献１参照）。例えばＳｙｓｔｅｍ  ＢＩＯＳ  ＳｅｔｕｐメニューでユーザにＩ／Ｏ空間リソースの要否を設定させる方法がある。第３の方法を確実に行えばＩ／Ｏ空間リソースの無駄な割り当てを防止することができる。
【特許文献１】特開２００２−２８８１０４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、上述した第３の方法はユーザに設定の作業を強いるものであり利便性の面で好ましいものではなかった。また、ユーザがＰＣＩデバイス毎のＩ／Ｏ空間リソースの要否を把握している必要があり、だれもが容易に行える方法ではなかった。
【００１４】
本発明の目的は、周辺デバイスに効率的かつ容易にＩ／Ｏ空間リソースを割り当てることのできるコンピュータシステムを提供することである。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、本発明のコンピュータシステムは、周辺デバイスを接続することのできるコンピュータシステムであって、
周辺デバイス毎にデバイスドライバがＩ／Ｏ空間リソースを必要とするか否かを記述したＩ／Ｏリソースファイルを格納した不揮発性メモリを備え、起動時に該不揮発性メモリから該Ｉ／Ｏリソースファイルを読み出してメインメモリに展開するシステム管理コントローラと、
前記システム管理コントローラによって前記メインメモリに展開された前記Ｉ／Ｏリソースファイルを参照することによって前記周辺デバイスのデバイスドライバがＩ／Ｏ空間リソースを必要とするか否かを調べ、Ｉ／Ｏ空間リソースが必要な周辺デバイスに対してだけＩ／Ｏ空間リソースを割り当てるプロセッサと、を有している。
【００１６】
したがって、コンピュータシステムに予め記録したＩ／Ｏ空間リソースファイルにＩ／Ｏ空間リソースが必要と記載されているＰＣＩデバイスにだけＩ／Ｏ空間リソースを割り当てることができる。
【００１７】
また、前記プロセッサは、周辺デバイスへのアクセスを試みることによって周辺デバイスが存在するか否か判定し、周辺デバイスが存在すれば該周辺デバイスのデバイスドライバがＩ／Ｏ空間リソースを必要とするか否かを調べることにしてもよい。
【００１８】
また、前記プロセッサは、存在することが分かった周辺デバイスの内部レジスタにアクセスすることによって該周辺デバイスの制御に必要なＩ／Ｏ空間リソースの容量を取得することにしてもよい。
【００１９】
また、起動時、前記プロセッサはリセットされている状態であり、
前記システム管理コントローラは、前記不揮発性メモリから前記メインメモリに前記Ｉ／Ｏリソースファイルを展開した後に前記プロセッサのリセットを解除することにしてもよい。
【００２０】
また、前記周辺デバイスはＰＣＩデバイスであるとしてもよい。
【発明の効果】
【００２１】
本発明によれば、コンピュータシステムに予め記録されたＩ／Ｏ空間リソースファイルにＩ／Ｏ空間リソースが必要と記載されているＰＣＩデバイスにだけＩ／Ｏ空間リソースを割り当てるので、周辺デバイスに効率的かつ容易にＩ／Ｏ空間リソースを割り当てることができる。
【発明を実施するための最良の形態】
【００２２】
本発明を実施するための形態について図面を参照して詳細に説明する。
【００２３】
図１は、本実施形態によるコンピュータシステムの構成を示すブロック図である。ここでは基本的な構成のコンピュータシステムを例示する。図１を参照すると、コンピュータシステム１０はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、メインメモリ１２、ＳＭＣ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）１３、ＮｖＲＡＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１４、ＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１５、ＰＣＩデバイス１６1〜１６4を有している。
【００２４】
ＣＰＵ１１、メインメモリ１２、およびＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３はＨｏｓｔバス１７で相互に接続されている。ＳＭＣ１４はＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３に接続されている。ＰＣＩデバイス１６1、１６2はＰＣＩバス１８1でＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３に接続されており、ＰＣＩデバイス１６3、１６4はＰＣＩバス１８2でＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３に接続されている。
【００２５】
ＣＰＵ１１は、メインメモリ１２に格納されているＢＩＯＳコード、ＯＳコード、デバイスドライバコード、アプリケーションコード等の各種コード（命令列）の命令を読み出して実行する。
【００２６】
メインメモリ１２は、各種コードや演算データ等を記憶する。
【００２７】
ＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３は、ＨＯＳＴバス１７とＰＣＩバス１８1，１８2との間のトランザクション転送を制御する。また、ＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３は、コンピュータシステム１０内のハードウェアに対するＳＭＣ１１０による制御を可能にする。
【００２８】
ＳＭＣ１４は、コンピュータシステム１０のハードウェアに対する制御を行う。ＳＭＣ１４による制御の例として電源制御や初期化などがある。
【００２９】
ＮｖＲＡＭ１５は、ＳＭＣ１４からアクセスが可能な不揮発性ＲＡＭであり、ＳＭＣ１４がコンピュータシステム１０内のハードウェアを制御するために必要な情報を格納している。ＮｖＲＡＭ１５に格納されている情報の例としてＢＩＯＳコードやシステム構成情報がある。
【００３０】
ＰＣＩデバイス１６1〜１６4はＰＣＩバス１８1，１８2に接続することのできる周辺デバイスであり各種機能のものがある。ＰＣＩデバイス１６1〜１６4は『ＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ』の規定に準拠している。ＰＣＩデバイス１６1〜１６4の例として、ネットワーク接続用のデバイス、外付けディスク接続用のデバイスなどがある。
【００３１】
図２は、本実施形態のコンンピュータシステム１０に用いられるファームウェアおよびソフトウェアの関係を示す図である。図２を参照すると、ハードウェア２０に近い方から順にＳＭＣ２１、ＢＩＯＳ２２、ＯＳ２３が階層化されている。また、それ以外にＯＳ２３とハードウェア２０の間にデバイスドライバ２４が存在する。
【００３２】
ハードウェア２０はコンピュータシステム１０のハードウェアそのものであり、ＣＰＵ１１、メインメモリ１２、ＰＣＩデバイス１６1〜１６4を含む。
【００３３】
ＳＭＣ２１は、図１に示したＳＭＣ１４の機能を実現するファームウェアであり、ハードウェア２０の電源制御や初期化を行う。ＳＭＣ２１は、その他のファームウェアやソフトウェアと比べて最もハードウェア２０に近い位置付けにある。
【００３４】
ＢＩＯＳ２２は、ハードウェア２０に含まれる周辺デバイスを制御するファームウェアである。ＢＩＯＳ２２の主な機能として、周辺デバイスの初期化、およびＯＳ２３とハードウェア２０の仲介役がある。ＢＩＯＳ２２はＯＳ４０３とハードウェア４００の仲介役としてハードウェア２０を抽象化（仮想化）してＯＳ２３に見せる。これによりＯＳ２３は様々なコンピュータシステムのハードウェア構成の差異を意識する必要がなくなる。
【００３５】
ＯＳ２３は、コンピュータシステム１０の全体を管理する基本ソフトウェアである。ＯＳ２３は、ＢＩＯＳ２２によって抽象化されたハードウェアモデルから、コンピュータシステム１０の有するハードウェア機能を知ることができる。
【００３６】
デバイスドライバ２４は、ＰＣＩデバイス１６1〜１６4などの周辺デバイスを制御するソフトウェアである。例えば、ネットワークに接続するためにコンピュータシステム１０にＬＡＮカードを追加したとする。その場合、ＬＡＮカードを動作させるためには専用のデバイスドライバが必要となる。
【００３７】
コンピュータシステム１０では、図２に示した様なファームウェアおよびソフトウェアが相互に関連して動作する。
【００３８】
図３は、本実施形態のコンピュータシステムにおいてＰＣＩデバイスへＩ／Ｏ空間リソースを割り当てる方法を示すフローチャートである。ＰＣＩデバイスに対するＩ／Ｏ空間リソースの割り当ては、ＳＭＣ１４による処理（ＳＭＣ処理）と、ＣＰＵ１１によるＢＩＯＳ２２の処理（ＢＩＯＳ処理）とからなる。
【００３９】
本実施形態によるＩ／Ｏ空間リソース割り当て方法ではＮｖＲＡＭ１５に格納されているＩ／Ｏリソースファイルが利用される。コンピュータシステム１０はＮｖＲＡＭ１５にＢＩＯＳコード情報とＩ／Ｏリソースファイルとが格納された状態で出荷される。Ｉ／Ｏリソースファイルは本実施形態のＩ／Ｏ空間リソース割り当て方法を実現するための特有のものである。
【００４０】
図４は、本実施形態のコンピュータシステムにおけるＩ／Ｏリソースファイルの内容の一例を示す図である。図４を参照すると、本実施形態のＩ／Ｏリソースファイルには、各ＰＣＩデバイスのＶＩＤ、ＤＩＤ、ＳＶＩＤ、およびＳＩＤと、そのＰＣＩデバイスのＩ／Ｏリソース要否情報とが記録されている。
【００４１】
ＶＩＤ、ＤＩＤ、ＳＶＩＤ、およびＳＩＤはＰＣＩデバイスを識別するための識別情報であり、『ＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ』に規定された値である。ＶＩＤ、ＤＩＤ、ＳＶＩＤ、およびＳＩＤはＰＣＩデバイス１６1〜１６4の内部にあるレジスタに格納されており、そこを参照することで各ＰＣＩデバイス１６1〜１６4の識別が可能である。ＶＩＤ、ＤＩＤ、ＳＶＩＤ、およびＳＩＤのレジスタはそれぞれが２Ｂｙｔｅである。
【００４２】
ＶＩＤとＳＶＩＤは、ＰＣＩＳＩＧと呼ばれるＰＣＩ規格に関する業界団体で管理されており、ベンダー毎に異なる値が配布される。また、ＤＩＤとＳＩＤは、各ベンダーで管理されており、ＰＣＩデバイス毎に異なる値が格納されている。したがって、ＶＩＤ、ＤＩＤ、ＳＶＩＤ、およびＳＩＤを連結した８Ｂｙｔｅの値は世界中においてユニークな値となる。
【００４３】
Ｉ／Ｏリソースファイルにおいては、これらＶＩＤ、ＤＩＤ、ＳＶＩＤ、およびＳＩＤによってＰＣＩデバイスが識別される。
【００４４】
Ｉ／Ｏリソース要否情報は、デバイスドライバがＰＣＩデバイスを制御するときにＩ／Ｏ空間リソースを必要とするか否かを示す情報である。この例では、“１”はＩ／Ｏ空間リソースが必要なことを示し、“０”はＩ／Ｏ空間リソースが不要なことを示すものとする。
【００４５】
Ｉ／Ｏリソースファイルにおいては、ＶＩＤ、ＤＩＤ、ＳＶＩＤ、およびＳＩＤからなる識別情報とそれに対応するＩ／Ｏリソース要否情報とによって各ＰＣＩデバイスのＩ／Ｏ空間リソースの要否が分かるようになっている。
【００４６】
Ｉ／Ｏリソースファイルは、コンピュータシステム１０の製造元で作成され、ＮｖＲＡＭ１５に格納されるものとする。製造元ではコンピュータシステムはＰＣＩデバイスを搭載して正常に動作するか否か評価される。この評価時に、ＰＣＩデバイスを制御するデバイスドライバがＩ／Ｏ空間リソースを必要とするか否かが分る。そこで製造元は各ＰＣＩデバイスのリソース要否をＩ／Ｏリソースファイルに記録してコンピュータシステム１０を出荷する。
【００４７】
図３を参照すると、オペレータがコンピュータシステム１０の電源を投入する。電源が投入されるとまずＳＭＣ１４に電源が供給され、そしてＳＭＣ１４によってＳＭＣ処理が順次実行される。
【００４８】
まず最初に、ＳＭＣ１４はＳｙｓｔｅｍ  Ｐｏｗｅｒ  ＯＮ処理を実行する（ステップ１０１）。この処理においてＳＭＣ１４はコンピュータシステム１０内のＣＰＵ１１やメインメモリ１２等に電源やクロックを供給する。
【００４９】
続いて、ＳＭＣ１４はハードウェア初期化処理を実行する（ステップ１０２）。この処理でＳＭＣ１４はＣＰＵ１１、メインメモリ１２、およびＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３を初期化し、これらの部品が正常に動作できる状態にする。
【００５０】
続いて、ＳＭＣ１４はＢＩＯＳ展開処理を実行する（ステップ１０３）。この処理でＳＭＣ１４はＮｖＲＡＭ１５に格納されているＢＩＯＳ２２のＢＩＯＳコードを読み出し、ＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３を経由してメインメモリ１２の特定領域に展開する。
【００５１】
続いて、ＳＭＣ１４はＩ／Ｏリソースファイル展開処理を実行する（ステップ１０４）。この処理は本実施形態によるＩ／Ｏ空間リソース割り当て方法に特有な処理である。ＳＭＣ１４はステップ１０３のＢＩＯＳ展開処理と同様に、ＮｖＲＡＭ１５に格納されているＩ／Ｏリソースファイルを読み出し、ＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３を経由してメインメモリ１２の特定領域に展開する。
【００５２】
続いて、ＳＭＣ１４はＣＰＵ起動処理を実行する（ステップ１０５）。この処理においてＳＭＣ１４はＣＰＵ１１のリセットを解除する。リセットが解除されたＣＰＵ１１はＢＩＯＳ展開処理でメインメモリ１２に展開されたＢＩＯＳコードを読み出し、その実行を開始する。ＢＩＯＳコードは以下に説明するＢＩＯＳ処理を順次実行する様に記述されている。
【００５３】
ＢＩＯＳ処理において、ＣＰＵ１１はまずＰＣＩデバイス検索処理を実行する（ステップ２０１）。この処理においてＣＰＵ１１はＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３を介して各ＰＣＩデバイス１６1〜１６4内のＶＩＤレジスタにアクセスを試みることによって、ＰＣＩデバイスが存在するか否か調べる。
【００５４】
仮にＰＣＩデバイスが存在しなければ、ＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３がＣＰＵ１１にＦＦＦＦｈ値（１６進数表現２Ｂｙｔｅ値）を返す。ＰＣＩＳＩＧでは、ＶＩＤとしてＦＦＦＦｈ値という値を配布していないので、ＶＩＤがＦＦＦＦｈ値であれば、ＰＣＩデバイスが存在しないと分かる。
【００５５】
ＰＣＩデバイスが存在した場合、ＣＰＵ１１は続いてＰＣＩデバイスリソース情報取得処理を実行する（ステップ２０２）。この処理においてＣＰＵ１１はＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１０２を介して各ＰＣＩデバイス１６1〜１６4内の特定レジスタにアクセスし、ＰＣＩデバイスの制御に必要なリソースの種類および容量を取得する。このときＣＰＵ１１はＩ／Ｏ空間リソースについては必要な容量の情報だけを取得する。ＰＣＩデバイスにＩ／Ｏ空間リソースが必要か否かは別途判断される。
【００５６】
続いて、ＣＰＵ１１はＰＣＩデバイス識別情報取得処理を実行する（ステップ２０３）。この処理においてＣＰＵ１００はＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３を介して各ＰＣＩデバイス１６1〜１６4内のＶＩＤ、ＤＩＤ、ＳＶＩＤ、ＳＩＤのレジスタにアクセスし、それらの値を取得する。なお、ＶＩＤはステップ２０１のＰＣＩデバイス検索処理で既に取得されているので、ＣＰＵ１１はＶＩＤを再び取得しなくてもよい。
【００５７】
続いて、ＣＰＵ１１はＩ／Ｏリソースファイル検索処理を実行する（ステップ２０４）。この処理は本実施形態によるＩ／Ｏ空間リソース割り当て方法に特有な処理である。この処理においてＣＰＵ１１は、ＰＣＩデバイス識別情報取得処理にてＰＣＩデバイス１６1〜１６4の内部から取得した各ＰＣＩデバイスのＶＩＤ、ＤＩＤ、ＳＶＩＤ、ＳＩＤをキーとして、メインメモリ１２に展開されているＩ／Ｏリソースファイル内を検索する。ＣＰＵ１１は、検索でＶＩＤ、ＤＩＤ、ＳＶＩＤ、およびＳＩＤが一致したＰＣＩデバイスのＩ／Ｏリソース要否情報から、各ＰＣＩデバイスについてＩ／Ｏ空間リソースの割り当てが必要か否か判断する。
【００５８】
続いて、ＣＰＵ１１はＩ／Ｏ空間リソース割り当て処理を実行する（ステップ２０５）。この処理は本実施形態によるＩ／Ｏ空間リソース割り当て方法に特有な処理である。この処理においてＣＰＵ１１は、Ｉ／Ｏリソースファイル検索処理２０４でＩ／Ｏ空間リソースが必要と判断されたＰＣＩデバイスに対してのみＩ／Ｏ空間リソースを割り当て、Ｉ／Ｏ空間リソースが不要と判断されたＰＣＩデバイスに対してはＩ／Ｏ空間リソースを割り当てない。
【００５９】
ここでＩ／Ｏ空間リソースの割り当てとは、ＰＣＩデバイス１６1〜１６4の内部の特定レジスタに使用してよいＩ／Ｏ空間アドレスの範囲を設定すると共に、ＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３内に各ＰＣＩバス１８1〜１８2のＩ／Ｏ空間アドレスの範囲を設定することである。ＰＣＩデバイス１６1〜１６4の特定レジスタにＩ／Ｏ空間アドレスの範囲を設定する処理はＣＰＵ１１からＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３を介して行われる。ＨＯＳＴ−ｔｏ−ＰＣＩブリッジ１３内に各ＰＣＩバス１８1〜１８2のＩ／Ｏ空間アドレスの範囲を設定することにより、ＣＰＵ１１からＩ／Ｏ空間へのアクセスが適切なＰＣＩデバイスに転送される様になる。
【００６０】
以上説明したとおり、本実施形態によれば、ＮｖＲＡＭ１５にＰＣＩデバイス毎にデバイスドライバがＩ／Ｏ空間リソースを必要とするか否かを記述したＩ／Ｏリソースファイルを格納しておき、ＳＭＣ１４がＮｖＲＡＭ１５からＩ／Ｏリソースファイルを読み出してメインメモリ１２に展開し、ＣＰＵ１１が、メインメモリ１２に展開されたＩ／Ｏリソースファイルを参照することによって、各ＰＣＩデバイスのデバイスドライバがＩ／Ｏ空間リソースを必要とするか否かを調べ、Ｉ／Ｏ空間リソースが必要なＰＣＩデバイスに対してだけＩ／Ｏ空間リソースを割り当てる。したがって、コンピュータシステム１０の製造元で作成されたＩ／Ｏ空間リソースファイルにＩ／Ｏ空間リソースが必要と記載されているＰＣＩデバイスにだけＩ／Ｏ空間リソースを割り当てるので、周辺デバイスに効率的かつ容易にＩ／Ｏ空間リソースを割り当てることができる。
【図面の簡単な説明】
【００６１】
【図１】本実施形態によるコンピュータシステムの構成を示すブロック図である。
【図２】本実施形態のコンンピュータシステムに用いられるファームウェアおよびソフトウェアの関係を示す図である。
【図３】本実施形態のコンピュータシステムにおいてＰＣＩデバイスへＩ／Ｏ空間リソースを割り当てる方法を示すフローチャートである。
【図４】本実施形態のコンピュータシステムにおけるＩ／Ｏリソースファイルの内容の一例を示す図である。
【符号の説明】
【００６２】
１０    コンピュータシステム
１１    ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）
１２    メインメモリ
１３    ＳＭＣ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）
１４    ＮｖＲＡＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）
１５    ＨＯＳＴ−ｔｏ−ＰＣＩブリッジ
１６1〜１６4    ＰＣＩデバイス
１７    Ｈｏｓｔバス
１８1，１８2    ＰＣＩバス
２０    ハードウェア
２１    ＳＭＣ
２２    ＢＩＯＳ
２３    ＯＳ
２４    デバイスドライバ
１０１〜１０５，２０１〜２０５    ステップ
【図１】
2008071042.tif 000003
【図２】
2008071042.tif 000004
【図３】
2008071042.tif 000005
【図４】
2008071042.tif 000006