(57)【要約】  Ｉ／Ｏ空間を割り当て可能なサイズに制約があっても、使用可能なＰＣＩデバイスの台数の制約を最小にするために、演算装置１００に、ＰＣＩデバイス１０６−１、１０６−２、・・・の構成情報を取得する構成情報取得手段１０１と、各ＰＣＩデバイスが使用可能な空間を判別する使用可能空間判別手段１０２と、構成情報をオペレーティングシステムに通知する構成情報通知手段１０３と、を備える。
2009028007.tif 000002
【特許請求の範囲】
【請求項１】
複数のＰＣＩデバイスと接続可能な演算装置であって、該演算装置上で動作するオペレーティングシステムにしたがって前記ＰＣＩデバイスに対してＩ／Ｏ空間またはメモリ空間を介して操作可能な演算装置において、
前記オペレーティングシステムからの要求に応じて、前記ＰＣＩデバイスが有する構成情報を記憶する構成情報記憶手段を参照し、該構成情報を取得する構成情報取得手段と、
該構成情報に応じて、前記ＰＣＩデバイスがＩ／Ｏ空間またはメモリ空間または、その両空間を使用可能なＰＣＩデバイスか否かを判別する使用可能空間判別手段と、
前記構成情報を前記オペレーティングシステムに通知する手段であって、前記使用可能空間判別手段による判別の結果、前記ＰＣＩデバイスがメモリ空間のみ使用可能なＰＣＩデバイスである旨の通知を行なう構成情報通知手段と、
を備える演算装置。
【請求項２】
前記オペレーティングシステムは、前記構成情報通知手段からメモリ空間のみ使用可能なＰＣＩデバイスである旨の通知を受けると、Ｉ／Ｏ空間の割り当ては行なわずにメモリ空間の割り当てのみを行なう、
ことを特徴とする請求項１に記載の演算装置。
【請求項３】
前記構成情報には、ＰＣＩ・コンフィグレーション・レジスタに格納されるベース・アドレス・レジスタが使用される、
ことを特徴とする請求項１に記載の演算装置。
【請求項４】
前記構成情報取得手段への要求は、オペレーティングシステム起動時または起動直後に行われる、ことを特徴とする請求項１に記載の演算装置。
【請求項５】
前記ＰＣＩデバイスとはＰＣＩブリッジを介して接続可能である、ことを特徴とする請求項１に記載の演算装置。
【請求項６】
複数のＰＣＩデバイスを実装可能な情報処理装置であって、該情報処理装置が有する演算装置上で動作するオペレーティングシステムにしたがって前記ＰＣＩデバイスに対してＩ／Ｏ空間またはメモリ空間を介して操作可能な情報処理装置において、
前記オペレーティングシステムからの要求に応じて、前記ＰＣＩデバイスが有する構成情報を記憶する構成情報記憶手段を参照し、該構成情報を取得する構成情報取得手段と、
該構成情報に応じて、前記ＰＣＩデバイスがＩ／Ｏ空間またはメモリ空間または、その両空間を使用可能なＰＣＩデバイスか否かを判別する使用可能空間判別手段と、
前記構成情報を前記オペレーティングシステムに通知する手段であって、前記使用可能空間判別手段による判別の結果、前記ＰＣＩデバイスがメモリ空間のみ使用可能なＰＣＩデバイスである旨の通知を行なう構成情報通知手段と、
を備える情報処理装置。
【請求項７】
前記構成情報取得手段、使用可能空間判別手段および構成情報取得手段は、前記演算装置に備わる、
ことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記オペレーティングシステムは、前記構成情報通知手段からメモリ空間のみ使用可能なＰＣＩデバイスである旨の通知を受けると、Ｉ／Ｏ空間の割り当ては行なわずにメモリ空間の割り当てのみを行なう、
ことを特徴とする請求項６に記載の情報処理装置。
【請求項９】
演算装置に接続可能な複数のＰＣＩデバイスであって、演算装置上で動作するオペレーティングシステムからＩ／Ｏ空間またはメモリ空間のいずれの空間を用いても操作可能なＰＣＩデバイス、によるＩ／Ｏ空間の要求を抑止する方法であって、
前記オペレーティングシステムからの要求に応じて、前記ＰＣＩデバイスが有する構成情報を記憶する構成情報記憶手段を参照し、該構成情報を取得する構成情報取得処理と、
該構成情報に応じて、前記ＰＣＩデバイスがＩ／Ｏ空間またはメモリ空間または、その両空間を使用可能なＰＣＩデバイスか否かを判別する使用可能空間判別処理と、
前記構成情報を前記オペレーティングシステムに通知する処理であって、前記使用可能空間判別処理による判別の結果、前記ＰＣＩデバイスがメモリ空間のみ使用可能なＰＣＩデバイスである旨の通知を行なう構成情報通知処理と、
を前記演算装置に行なわせる方法。
【請求項１０】
前記オペレーティングシステムは、前記構成情報通知手段からメモリ空間のみ使用可能なＰＣＩデバイスである旨の通知を受けると、Ｉ／Ｏ空間の割り当ては行なわずにメモリ空間の割り当てのみを行なう、
ことを特徴とする請求項９に記載の方法。
【請求項１１】
前記構成情報通知処理は、所定のＰＣＩデバイスを識別する識別情報を記憶する識別情報記憶手段にあらかじめ登録された第１の識別情報と、前記構成情報に登録された第２の識別情報と、を比較し、該比較結果が一致する場合に、前記ＰＣＩデバイスがメモリ空間のみ使用可能なＰＣＩデバイスである旨の通知を行なう、
ことを特徴とする請求項９に記載の方法。
【請求項１２】
前記識別情報には、ベンダＩＤまたはデバイスＩＤの少なくとも一方が含まれる、ことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記構成情報通知処理は、前記ＰＣＩデバイスの上位に接続されたＰＣＩブリッジに対するＩ／Ｏ空間を参照し、該Ｉ／Ｏ空間に対してＰＣＩデバイスの割り当てがない場合に、前記ＰＣＩデバイスがメモリ空間のみ使用可能なＰＣＩデバイスである旨の通知を行なう、
ことを特徴とする請求項９に記載の方法。
【請求項１４】
前記構成情報通知処理は、前記ＰＣＩデバイスの上位に接続されたＰＣＩブリッジに対するＩ／Ｏ空間を参照し、該Ｉ／Ｏ空間に対してＰＣＩデバイスに割り当てる空間が不足している場合に、前記ＰＣＩデバイスがメモリ空間のみ使用可能なＰＣＩデバイスである旨の通知を行なう、
ことを特徴とする請求項９に記載の方法。
【請求項１５】
前記構成情報通知処理は、前記ＰＣＩデバイスに、Ｉ／Ｏ空間を要求するベース・アドレス・レジスタと、メモリ空間を要求するベース・アドレス・レジスタと、が備わる場合に、前記ＰＣＩデバイスがメモリ空間のみ使用可能なＰＣＩデバイスである旨の通知を行なう、
ことを特徴とする請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＣＩデバイスによるＩ／Ｏ空間の要求を抑止する方法に関する。
【背景技術】
【０００２】
現在、多くの情報処理装置で、ＰＣＩ  ＳＩＧ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｓｐｅｃｉａｌ  Ｉｎｔｅｒｅｓｔ  Ｇｒｏｕｐ）によって策定されるＣＰＵ−周辺機器間のインターフェイス規格が採用されている。【０００３】
例えば、「ＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」や、「ＰＣＩ−Ｘ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」、「ＰＣＩ−Ｅｘｐｒｅｓｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ」などである。特許文献１には、ＰＣＩブリッジに関する技術が開示されている。また、特許文献２には、ＰＣＩバスシステムに関する技術が開示されている。【０００４】
これらの仕様では、例えば、ＣＰＵからＰＣＩデバイスを制御するために使用するレジスタを割り当てる空間として、Ｉ／Ｏ空間やメモリ空間を使用することが可能となっている。【０００５】
ここで、Ｉ／Ｏ空間は、ＰＣ／ＡＴ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ／Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ）互換機との互換性を確保する等の理由から、ＰＣ／ＡＴ互換機のアーキテクチャの仕様をひきずった古い仕様となっている。そのため、Ｉ／Ｏ空間を割り当て可能なサイズの上限が６４ＫＢに制約される。【０００６】
例えば、ＰＣＩブリッジが存在する場合、ＰＣＩブリッジに対するＩ／Ｏ空間の最小割り当て単位は４ＫＢとなっているので、Ｉ／Ｏ空間を割り当てることが可能なＰＣＩブリッジの数の上限は、１６台（＝６４ＫＢ／４ＫＢ）までに制限されてしまう。【０００７】
こららは、「ＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｒｅｖｉｓｉｏｎ  ２．３」の仕様に起因する制限である。
従来、１つのバス配下には最大３２台までのＰＣＩデバイスが接続可能な仕様となっている。しかし、近年、ＰＣＩデバイスの伝送速度が高速化に対応するために、ＰＣＩブリッジ配下に接続できるＰＣＩデバイスの数が減少してきている。【０００８】
例えば、ＰＣＩ−Ｘ  １００ＭＨｚのバスでは接続可能なデバイスの数は２台、ＰＣＩ−Ｘ  １３３ＭＨｚのバスでは１台が限界となっている。また、ＰＣＩ−Ｅｘｐｒｅｓｓの仕様ではブリッジとデバイスの対応は仕様で１対１に規定されている。この場合、Ｉ／Ｏ空間に割り当て可能なブリッジの台数の上限（１６台）が、そのまま接続可能なデバイスの上限となってしまう。【０００９】
大規模なサーバシステムでは最大１２８台ものＰＣＩスロットを備えるシステムも多いが、上述の制限をそのまま適用すると、ＰＣＩスロットを１６台までしか搭載できなくなってしまう。【００１０】
そのため、従来のシステムでは、Ｉ／Ｏ空間を要求しないＰＣＩデバイスのみを搭載し、或いは、Ｉ／Ｏ空間を要求するＰＣＩデバイスであっても、実際にはＩ／Ｏ空間を使用せずにメモリ空間のみで動作可能なＰＣＩデバイスのみに制限して動作させる、などして対応しなければならなかった。また、実際には、Ｉ／Ｏ空間を要求しないＰＣＩデバイスは種類が少なく、Ｉ／Ｏ空間を要求しないＰＣＩデバイスのみでシステムを構築するのは難しかった。【００１１】
そこで、Ｉ／Ｏ空間を要求してはいるが、実際にＩ／Ｏ空間を使用しなくても動作可能なＰＣＩデバイス、すなわち、Ｉ／Ｏ空間とメモリ空間のいずれの空間によっても動作可能なＰＣＩデバイス（以下、このＰＣＩデバイスを単に「ＰＣＩデバイス」という）が、様々なＰＣＩデバイス・ベンダから提案されている。【００１２】
しかし、このＰＣＩデバイスでも以下のような問題が残っている。
例えば、オペレーティングシステムは、ＰＣＩデバイスに備わるＰＣＩ・コンフィグレーション・レジスタに格納されているＩ／Ｏ空間を要求するベース・アドレス・レジスタが存在するかどうかで、ＰＣＩデバイスがＩ／Ｏ空間の割り当てを要求しているかどうかを判断している。【００１３】
したがって、Ｉ／Ｏ空間を要求するベース・アドレス・レジスタが存在するＰＣＩデバイスは、全てＩ／Ｏ空間を要求していることになる。
その結果、割り当て可能なＩ／Ｏ空間が不足して新たなＰＣＩデバイスに対してＩ／Ｏ空間を割り当てることができなくなった場合、エラー処理を行って当該ＰＣＩデバイスを使用できなくしてしまう以外に方法がなく、オペレーティングシステムにＩ／Ｏ空間を使用しないようにする特別な仕組みが必要となる。【００１４】
Ｗｉｎｄｏｗｓ(登録商標)の場合は、システム定義ファイルのｉｎｆファイルが利用される。このｉｎｆファイルを介して、ＰＣＩデバイスがＩ／Ｏ空間を使用しないことをオペレーティングシステムに知らせることができる。当該ＰＣＩデバイスがＩ／Ｏ空間を使用しないと判明すると、オペレーティングシステムはＩ／Ｏ空間を要求するベース・アドレス・レジスタが存在しても無視し、当該ＰＣＩデバイスへのＩ／Ｏ空間の割り当てを行わないでメモリ空間のみを割り当てて動作させる。【００１５】
また、Ｌｉｎｕｘの場合は、当該ＰＣＩデバイスに対してＩ／Ｏ空間を要求しないドライバを用意することで対処することができる。
しかし、例えば、Ｗｉｎｄｏｗｓ(登録商標)のインストール時には、上述のｉｎｆファイルがインストール用ＣＤ−ＲＯＭ等に含まれていないため、ｉｎｆファイルを介してＰＣＩデバイスがＩ／Ｏ空間を使用しないことをオペレーティングシステムに知らせることができない。【００１６】
同様に、Ｌｉｎｕｘのインストール時には、インストール用ＣＤ−ＲＯＭ等にＩ／Ｏ空間を使用しないようにしたドライバが含まれていないため、インストールのときはＰＣＩデバイスにＩ／Ｏ空間割り当てが必要となってしまう。【００１７】
結局、ｉｎｆファイルや、Ｉ／Ｏ空間を要求しない特別なドライバもその使用に制約があるために、依然として、Ｉ／Ｏ空間とメモリ空間のいずれの空間を使用してもアクセス可能なＰＣＩデバイスを有効に使用できていないという問題が残存してしまっている。
【特許文献１】特開平１１−２８８４００号公報
【特許文献２】特開２００２−０３２３２４号公報
【発明の開示】
【００１８】
本発明は、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、Ｉ／Ｏ空間を割り当て可能なサイズに制約があっても、使用可能なＰＣＩデバイスの台数の制約を最小にする方法を提供することである。
【００１９】
上記課題を解決するために、本発明の係る演算装置は、複数のＰＣＩデバイスと接続可能な演算装置であって、該演算装置上で動作するオペレーティングシステムにしたがって前記ＰＣＩデバイスに対してＩ／Ｏ空間またはメモリ空間を介して操作可能な演算装置において、前記オペレーティングシステムからの要求に応じて、前記ＰＣＩデバイスが有する構成情報を記憶する構成情報記憶手段を参照し、該構成情報を取得する構成情報取得手段と、該構成情報に応じて、前記ＰＣＩデバイスがＩ／Ｏ空間とメモリ空間の両空間を使用可能なＰＣＩデバイスか否かを判別する使用可能空間判別手段と、前記構成情報を前記オペレーティングシステムに通知する手段であって、前記使用可能空間判別手段による判別の結果、前記ＰＣＩデバイスがＩ／Ｏ空間とメモリ空間の両空間を使用可能な場合には、メモリ空間のみ使用可能なＰＣＩデバイスである旨の通知を行なう構成情報通知手段と、を備える。
【００２０】
本発明によると、ＰＣＩデバイスがＩ／Ｏ空間とメモリ空間の両空間を使用可能である場合、構成情報通知手段が、オペレーティングシステムに対して、当該ＰＣＩデバイスについてメモリ空間のみ使用可能なＰＣＩデバイスである旨を通知する。
【００２１】
その結果、オペレーティングシステムは、Ｉ／Ｏ空間のみを使用するＰＣＩデバイス以外のＰＣＩデバイスに対してＩ／Ｏ空間の割り当てを必要としないので、Ｉ／Ｏ空間の使用を極力抑えることが可能となる。
【００２２】
したがって、本発明によると、Ｉ／Ｏ空間を割り当て可能なサイズに制約があっても、使用可能なＰＣＩデバイスの台数の制約を最小にする方法を提供することが可能となる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施例に係る演算装置の動作原理を説明する図である。
【図２】本発明の実施例に係る演算装置の構成例を示す図である。
【図３】本発明の実施例に係るＰＣＩデバイスに備わるＰＣＩ・コンフィグレーション・レジスタの構成例を示す図である。
【図４】本発明の実施例に係るＰＣＩデバイスに備わるＰＣＩ・コンフィグレーション・レジスタのベース・アドレス・レジスタを説明する図である。
【図５】本発明の実施例に係るＰＣＩデバイスの構成例を示す図である。
【図６】本発明の実施例に係る演算装置の処理を示すフローチャートである。
【図７】本発明の実施例に係る演算装置が使用するＩ／Ｏ空間を説明する図である。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施形態について、図１〜図７に基づいて説明する。
図１は、本発明の実施例に係る演算装置１００の動作原理を説明する図である。
図１に示すように演算装置１００は、ＰＣＩデバイス１０６−１、１０６−２、・・・の構成情報を取得する構成情報取得手段１０１と、各ＰＣＩデバイスが使用可能な空間を判別する使用可能空間判別手段１０２と、構成情報をオペレーティングシステムに通知する構成情報通知手段１０３と、を備える。【００２５】
演算装置１００は、オペレーティングシステム１０５にしたがって動作を行なう演算装置である。例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＣＰＵを含むチップセット、ＣＰＵを含むマザーボート（システムボード）などで実現される。【００２６】
ただし、上述のＣＰＵやチップセット、マザーボードには、ハードウェアだけでなく、当該ハードウェア上で動作するプログラム（例えば、ファームウェア、マイクロプログラムなど）も含まれる。【００２７】
また、演算装置１００は、複数のＰＣＩデバイス１０６−１、１０６−２、・・・と操作可能に接続できる演算装置である。ＰＣＩデバイスがＩ／Ｏ空間を要求する場合には、当該ＰＣＩデバイスに対してＩ／Ｏ空間の割り当てを行なう。また、ＰＣＩデバイスがメモリ空間を要求する場合には、当該ＰＣＩデバイスに対してメモリ空間の割り当てを行なう。ＰＣＩデバイスがＩ／Ｏ空間とメモリ空間の両空間を要求する場合には、当該ＰＣＩデバイスに対して両空間の割り当てを行なう。そして、演算装置１００は、割り当てたＩ／Ｏ空間またはメモリ空間を介して当該ＰＣＩデバイスに対してアクセスする。【００２８】
構成情報取得手段１０１は、例えば、オペレーティングシステム１０５からの要求に応じて、各ＰＣＩデバイス１０６−１、１０６−２、・・・が有する構成情報記憶手段１０６−１ａ、１０６−２ａ、・・・から各構成情報を取得する。そして、構成情報通知手段１０３は、当該構成情報を使用可能空間判別手段１０２に通知する。【００２９】
ここで、構成情報とは、例えば、ＰＣＩ・コンフィグレーション・レジスタの一部または全部である。
使用可能空間判別手段１０２は、構成情報取得手段１０１から構成情報の通知を受けると、当該構成情報を参照し、当該ＰＣＩデバイスがＩ／Ｏ空間とメモリ空間の両空間を使用可能なＰＣＩデバイスか否かを判別する。そして、使用可能空間判別手段１０２は、当該判断結果を構成情報通知手段１０３に通知する。【００３０】
構成情報通知手段１０３は、当該ＰＣＩデバイスがＩ／Ｏ空間とメモリ空間の両空間を使用可能な場合には、メモリ空間のみ使用可能なＰＣＩデバイスである旨の通知を行なう。本実施例では、メモリ空間のみ使用可能なＰＣＩデバイスであることを示すデータに構成情報を変更してオペレーティングシステム１０５に通知する。【００３１】
以上の処理によって、各ＰＣＩデバイスから構成情報を取得すると、オペレーティングシステム１０５は、各構成情報にしたがってＩ／Ｏ空間のリソース割り当てまたはメモリ空間のリソース割り当てを行なうとともに、必要なドライバをロードすることとなる。【００３２】
ここで、Ｉ／Ｏ空間とメモリ空間の両空間を要求するＰＣＩデバイスは、メモリ空間のみを要求するＰＣＩデバイスであるとオペレーティングシステム１０５に通知されるので、オペレーティングシステム１０５は、Ｉ／Ｏ空間のリソース割り当て処理を行なわない（メモリ空間のリソース割り当て処理のみを行なう）。【００３３】
その結果、Ｉ／Ｏ空間しか使用できないＰＣＩデバイス以外は、Ｉ／Ｏ空間を使用しなくなるので、Ｉ／Ｏ空間を割り当て可能なサイズの制約により、使用可能なＰＣＩデバイスの台数が制約されることを最小限度に抑えることが可能となる。【００３４】
図２は、本発明の実施例に係る演算装置１００の構成例を示す図である。
図２に示すように演算装置１００は、ＣＰＵ２０１ａおよび２０１ｂと、揮発性メモリ（例えば、ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成されるメモリ２０２と、ファームウェア等を格納する不揮発性メモリで構成されるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０３と、ＰＣＩブリッジ１ａ〜３４ａと、その配下のＰＣＩブリッジ１ｂ〜６４ｂと、その配下のＰＣＩデバイスを実装するＰＣＩスロット１〜１２８と、各構成要素間のデータの受け渡しを制御するチップセット２０４と、を備える。【００３５】
なお、ＣＰＵ、ＰＣＩブリッジおよびＰＣＩスロットの台数は、例示であって図２に示す構成に限定するものではない。
ＣＰＵ２０１ａおよび２０１ｂ（以下、両ＣＰＵを総じて「ＣＰＵ２０１」という）は、ＲＯＭ２０３からファームウェアを読み出し、ＣＰＵ２０１またはチップセット２０４内に備わる図示しない記憶部に展開する。そして、当該ファームウェア（以下、「ＣＰＵファームウェア」という）を実行する。【００３６】
また、ＣＰＵ２０１は、図示しない外部記憶装置（例えば、磁気ディスク装置）からオペレーティングシステム１０５を読み出して、一部または全部をメモリ２０２に展開し、当該オペレーティングシステム１０５の命令にしたがって処理を行なう。【００３７】
例えば、オペレーティングシステム１０５の起動が完了すると、オペレーティングシステム１０５は、ＣＰＵファームウェアに対して、各ＰＣＩスロット１〜１２８に実装されているＰＣＩデバイスからＰＣＩ・コンフィグレーション・レジスタのベース・アドレス・レジスタの読み出しを指示する。【００３８】
ＣＰＵファームウェアは、オペレーティングシステム１０５の指示に応じて、各ＰＣＩスロット１〜１２８に実装されているＰＣＩデバイスからベース・アドレス・レジスタを読み出し、オペレーティングシステム１０５に通知する。【００３９】
この時、当該ＰＣＩデバイスがＩ／Ｏ空間とメモリ空間の両空間を要求している場合、当該ＰＣＩデバイスがメモリ空間のみを要求している旨を示す値にベース・アドレス・レジスタを変更してオペレーティングシステム１０５に通知する。【００４０】
オペレーティングシステム１０５は、通知されたベース・アドレス・レジスタを参照し、当該ＰＣＩデバイスがＩ／Ｏ空間を要求している場合には、当該ＰＣＩデバイスに対してＩ／Ｏ空間のリソース割り当てを行ない、当該ＰＣＩデバイスがメモリ空間を要求している場合には、当該ＰＣＩデバイスに対してメモリ空間のリソース割り当てを行なう。【００４１】
図３は、本発明の実施例に係るＰＣＩデバイスに備わるＰＣＩ・コンフィグレーション・レジスタの構成例を示す図である。
図３に示すようにＰＣＩ・コンフィグレーション・レジスタ３００は、ベンダＩＤ（０ｘ００〜０ｘ１５）、デバイスＩＤ（０ｘ１６〜０ｘ３１）、ベース・アドレス・レジスタ（０ｘ１０〜０ｘ２７）を少なくとも備える。【００４２】
ベンダＩＤは、ＰＣＩ  ＳＩＧがベンダ毎に割り当てるＩＤである。また、デバイスＩＤは、製造メーカがデバイスを一意に特定するために自由に割り当てるＩＤである。
ベース・アドレス・レジスタには、メモリ空間を示すベース・アドレス・レジスタ（３２ビットまたは６４ビット）や、Ｉ／Ｏ空間を示すベース・アドレス・レジスタ（３２ビットまたは６４ビット）が格納される。【００４３】
なお、その他のデータについては、例えば、「ＰＣＩ  Ｌｏｃａｌ  Ｂｕｓ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ，Ｒｅｖｉｓｉｏｎ２．３」にしたがったデータ構成であるので説明を省略する。【００４４】
図４は、本発明の実施例に係るＰＣＩデバイスに備わるＰＣＩ・コンフィグレーション・レジスタのベース・アドレス・レジスタを説明する図である。
図４に示すベース・アドレス・レジスタ４０１は、メモリ空間を示すベース・アドレス・レジスタである（３２ビットの場合）。【００４５】
ベース・アドレス・レジスタ４０１は、メモリ空間インジケータ（ビット０）と、タイプ（ビット１〜２）と、プリフェッチ可能（ビット３）と、ベースアドレス（ビット４〜３１）と、で構成されている。【００４６】
メモリ空間インジケータは、このレジスタがメモリ空間用のものであることを示し、常に０が格納される。タイプは、メモリブロックを配置可能なアドレス範囲を示す。プリフェッチ可能は、プリフェッチの許可・禁止を制御する。【００４７】
図４に示すベース・アドレス・レジスタ４０２は、Ｉ／Ｏ空間を示すベース・アドレス・レジスタである（３２ビットの場合）。
ベース・アドレス・レジスタ４０２は、Ｉ／Ｏ空間インジケータ（ビット０）と、ベースアドレス（ビット２〜３１）と、で構成されている。【００４８】
Ｉ／Ｏ空間インジケータは、このレジスタがＩ／Ｏ空間用のものであることを示し、１が格納される。
図５は、本発明の実施例に係るＰＣＩデバイスの構成例を示す図である。【００４９】
図５に示すＰＣＩデバイス５００は、図３に示したＰＣＩ・コンフィグレーション・レジスタ３００で構成されるＰＣＩ・コンフィグレーション・レジスタ部５０１と、メモリ空間に割り当てられる各種レジスタで構成されるＭＭＩＯ（Ｍｅｍｏｒｙ  Ｍａｐｐｉｎｇ  Ｉ／Ｏ）レジスタ部５０２と、Ｉ／Ｏ空間に割り当てられる各種レジスタで構成されるＩＯレジスタ部５０３と、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）やＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）など所定の機能を実現する制御部５０４と、を備える。【００５０】
ＰＣＩ・コンフィグレーション・レジスタ部５０１、ＭＭＩＯレジスタ部５０２およびＩＯレジスタ部５０３へのＣＰＵファームウェアからのアクセスは、ＰＣＩバスを介して行なわれる。【００５１】
ＭＭＩＯレジスタ部５０２を構成する各種レジスタ（例えば、Ｒ／Ｗ命令用レジスタなど）は、オペレーティングシステム１０５によってメモリ空間の所定のアドレスに割り当てられる。また、ＩＯレジスタ部５０３を構成する各種レジスタ（例えば、Ｉ／Ｏ Ｒ／Ｗ命令用レジスタなど）は、オペレーティングシステム１０５によってＩ／Ｏ空間の所定のアドレスに割り当てられる。【００５２】
以上の構成により、図５に示すＰＣＩデバイス５００は、ＰＣＩ・コンフィグレーション・レジスタ部５０１のベース・アドレス・レジスタにベース・アドレス・レジスタ４０１および４０２を格納することにより、Ｉ／Ｏ空間とメモリ空間の両空間が使用可能となる。【００５３】
図６は、本発明の実施例に係る演算装置１００の処理を示すフローチャートである。
ステップＳ６０１ａにおいて、例えば、本実施例に係る演算装置１００を実装する情報処理装置に電源が投入されると、演算装置１００によって、図示しない外部記憶装置からオペレーティングシステム１０５が読出され実行可能な状態にメモリ２０２に展開されるＯＳブート処理が行なわれる。【００５４】
ＯＳブート処理が完了すると、オペレーティングシステム１０５が演算装置１００上で動作することとなる。そして、情報処理装置に実装されている全デバイスに対して、以下に説明するＰＣＩデバイスのサーチ処理を行なう。【００５５】
ステップＳ６０２ａにおいて、オペレーティングシステム１０５は、ＣＰＵファームウェアに対して、情報処理装置に実装されている任意のデバイスのベンダＩＤとデバイスＩＤのリード要求を行なう。【００５６】
一方、ステップＳ６０１ｂにおいて、ＣＰＵファームウェアは、オペレーティングシステム１０５からリード要求を受けると、指定されたＰＣＩコンフィグレーションアドレスからベンダＩＤとデバイスＩＤを取得する。そして、ＣＰＵファームウェアは、取得したベンダＩＤとデバイスＩＤを、オペレーティングシステム１０５に通知する。【００５７】
ステップＳ６０３ａにおいて、オペレーティングシステム１０５は、通知されたベンダＩＤとデバイスＩＤから指定されたＰＣＩコンフィグレーションアドレスにＰＣＩデバイスが搭載されているか否かを判別する。本実施例では、ＣＰＵファームウェアによってリードされたベンダＩＤとデバイスＩＤの値が、オール０またはオールＦでない場合に、ＰＣＩデバイスが搭載されていると判断する。【００５８】
さらに、ステップＳ６０３ａにおいて、オペレーティングシステム１０５は、指定されたＰＣＩコンフィグレーションアドレスにＰＣＩデバイスが搭載されていると判断すると、ＣＰＵファームウェアに対して、当該ＰＣＩデバイスのベース・アドレス・レジスタのリード要求を個々のベースレジスタ毎に順に行なう。【００５９】
一方、ステップＳ６０２ｂにおいて、ＣＰＵファームウェアは、オペレーティングシステム１０５からリード要求を受けると、当該ＰＣＩデバイスのＰＣＩ・コンフィグレーション・レジスタからベース・アドレス・レジスタをリードする。【００６０】
ステップＳ６０３ｂにおいて、ＣＰＵファームウェアは、読み出した各ベース・アドレス・レジスタのビット０の値を参照する。そして、読み出したベース・アドレス・レジスタのビット０の値が「１」の場合、ＣＰＵファームウェアは、処理をステップＳ６０４ｂに移行する。【００６１】
また、読み出したベース・アドレス・レジスタが、ビット０の値が「０」の場合、ＣＰＵファームウェアは、処理をステップＳ６０５ｂに移行する。
ステップＳ６０４ｂにおいて、ＣＰＵファームウェアは、該当するベース・アドレス・レジスタの値を「０（Ａｌｌ  ０）」に変更する。そして、ＣＰＵファームウェアは、処理をステップＳ６０５ｂに移行する。【００６２】
ステップＳ６０５ｂにおいて、ＣＰＵファームウェアは、ベース・アドレス・レジスタをオペレーティングシステム１０５に通知する。
ステップＳ６０４ａにおいて、オペレーティングシステム１０５は、ＣＰＵファームウェアからベース・アドレス・レジスタの通知を受けると、当該ベース・アドレス・レジスタのビット０を参照する。【００６３】
そして、ビット０の値が「０」の場合、オペレーティングシステム１０５は、当該ＰＣＩデバイスが、メモリ空間を要求していると判断する。また、ビット０の値が「１」の場合、オペレーティングシステム１０５は、当該ＰＣＩデバイスが、Ｉ／Ｏ空間を要求していると判断する。【００６４】
なお、ベース・アドレス・レジスタの値が「０（Ａｌｌ  ０）」の場合（例えば、ステップＳ６０４ｂで「０（Ａｌｌ  ０）」に変更された場合）、オペレーティングシステム１０５は、当該レジスタがＩ／Ｏ空間もメモリ空間も要求していないと判断して無視する。【００６５】
以上に説明したサーチ処理を、情報処理装置に実装されている全デバイスに対して行なうと、オペレーティングシステム１０５は、処理をステップＳ６０５ｂに移行する。
ステップＳ６０５ｂにおいて、オペレーティングシステム１０５は、ステップＳ６０２ａ〜Ｓ６０４ａのサーチ処理の結果にしたがって、各ＰＣＩデバイスに対して、Ｉ／Ｏ空間のリソース割り当て、または、メモリ空間のリソース割り当てを行なう（ステップＳ６０４ａにおいて、Ｉ／Ｏ空間を要求していると判断したＰＣＩデバイスに対しては、Ｉ／Ｏ空間のリソース割り当てを行ない、メモリ空間を要求していると判断したＰＣＩデバイスに対しては、メモリ空間のリソース割り当てを行なう）。【００６６】
ステップＳ６０６ａにおいて、オペレーティングシステム１０５は、外部記憶装置等からＰＣＩデバイス毎に対応するドライバを読み出してメモリ２０２に実行可能に展開する（ドライバのロードを行なう）。【００６７】
ステップＳ６０２ａ〜Ｓ６０４ａのサーチ処理によって検出した実装ＰＣＩデバイスについて、ステップＳ６０５ａおよび６０６ａの処理が完了すると、オペレーティングシステム１０５は、ステップＳ６０７ａに移行してＩ／Ｏ空間またはメモリ空間のリソース割り当て処理を終了する。【００６８】
以上の処理において、ステップＳ６０３ｂの処理は、以下に示す（１）または（２）または（３）の処理であってもよい。
（１）特定のベンダＩＤやデバイスＩＤをあらかじめ記憶装置等に登録しておき、ステップＳ６０１ｂで読み出したベンダＩＤまたはデバイスＩＤの一部または全部と一致した場合にステップＳ６０３ｂの処理を実行する。【００６９】
（２）当該ＰＣＩデバイスの上位のＰＣＩブリッジ（に係るＩ／Ｏ空間）を参照し、当該ＰＣＩブリッジが当該ＰＣＩデバイスに対してＩ／Ｏ空間を割り当てているかをチェックし、Ｉ／Ｏ空間を割り当てていない場合（または、Ｉ／Ｏ空間を割り当てる領域が足りない場合）にステップＳ６０３ｂの処理を実行する。【００７０】
（３）当該ＰＣＩデバイスが持つ全てのベース・アドレス・レジスタを参照し、Ｉ／Ｏ空間およびメモリ空間を要求するベース・アドレス・レジスタを持っている場合にステップＳ６０３ｂの処理を実行する。【００７１】
図７は、図２に示した構成例の演算装置１００の場合におけるＩ／Ｏ空間を説明する図である。
図７は、説明を簡単にするために、図２に示した全てのＰＣＩスロットに、図５で示したＰＣＩデバイス５００（すなわち、Ｉ／Ｏ空間とメモリ空間の両空間を使用可能なＰＣＩデバイス）を実装した場合のＩ／Ｏ空間を示している。【００７２】
Ｉ／Ｏ空間７０１は、本実施例を適用しない従来例を示し、Ｉ／Ｏ空間７０２は、本実施例を適用した場合のＩ／Ｏ空間を示している。
ここで、図２には、６４台のＰＣＩブリッジが備わっている場合の構成例が示されている。各ＰＣＩブリッジ１〜６４配下のＰＣＩスロットに、図５で示したＰＣＩデバイス５００が実装されると、本実施例を適用しない場合、各ＰＣＩブリッジはＩ／Ｏ空間を要求することになる。【００７３】
例えば、ＰＣＩブリッジ１から順に４ＫＢ毎にＩ／Ｏ空間の割り当てをおこなうが、割り当て可能なＩ／Ｏ空間のサイズが６４ＫＢのため、ＰＣＩブリッジ１〜１６のみＩ／Ｏ空間が割り当てられた状態となる。この時のＩ／Ｏ空間がＩ／Ｏ空間７０１である。【００７４】
一方、本実施例を適用した場合、図５で示したＰＣＩデバイス５００は、ステップＳ６０３ｂの処理によって、ＣＰＵファームウェアからオペレーティングシステム１０５には、メモリ空間のみを要求しているものと通知される。【００７５】
したがって、ＰＣＩブリッジ１〜６４配下のＰＣＩスロット全てにＰＣＩデバイス５００が実装された場合、オペレーティングシステム１０５は、各ＰＣＩブリッジ（ＰＣＩデバイス）に対してメモリ空間のみのリソース割り当てを行ない、Ｉ／Ｏ空間のリソース割り当てを行なわない。この時のＩ／Ｏ空間がＩ／Ｏ空間７０２である。【００７６】
なお、図７は、理解を容易にするために極端な場合を例に説明したのであって、図７に示した場合のみに本発明を限定する趣旨ではないのは当然である。ＰＣＩブリッジ１〜６４配下のいずれかにＩ／Ｏ空間のみを要求するＰＣＩブリッジが実装された場合には、当該ＰＣＩブリッジ（ＰＣＩデバイス）に対してＩ／Ｏ空間が割り当てられることになる。【００７７】
以上に説明したように、本実施例に係る演算装置１００上で動作するオペレーティングシステム１０５は、図６に示したＣＰＵファームウェアによるステップＳ６０３ｂの処理によって、メモリ空間のみを要求していると認識する。したがって、当該ＰＣＩブリッジに対してＩ／Ｏ空間の割り当ては行なわず、メモリ空間の割り当てのみを行なうこととなる。【００７８】
したがって、ＰＣＩデバイスは、メモリ空間の割り当てのみが行なわれる。その結果、Ｉ／Ｏ空間の使用を極力抑えることが可能となるので、Ｉ／Ｏ空間の割り当て可能なサイズに制約があっても、使用可能なＰＣＩデバイスの台数の制約を最小限に抑えることが可能となる。【００７９】
また、オペレーティングシステム１０５のインストール時においても、特別な処理やドライバ等を使用することなく、図５に示したＰＣＩデバイス５００（Ｉ／Ｏ空間とメモリ空間の両空間を使用可能なＰＣＩデバイス）を利用することが可能となる。その結果、利用者の利便性も向上する効果を奏する。
【図１】
2009028007.tif 000003
【図２】
2009028007.tif 000004
【図３】
2009028007.tif 000005
【図４】
2009028007.tif 000006
【図５】
2009028007.tif 000007
【図６】
2009028007.tif 000008
【図７】
2009028007.tif 000009
【国際調査報告】
2009028007.tif 000010
2009028007.tif 000011