(57)【要約】【課題】マルチオペレーティングシステムのコンピュータシステムにおいて、複数のデバイスを効率よくＰＣＩ機能にマッピングできる方法を提供する。【解決手段】バスに接続され、複数の機能を含むコンフィギュレーション空間に関連付けられた複数の論理デバイスを備えるコンピュータシステムで使用されるコンピュータ実施される方法であって、複数の論理デバイスそれぞれが複数の機能の別個いずれかにマッピングされるべきであることを互換性フラグが示しているかどうかを判断するステップと、（Ｂ）ステップ（Ａ）において、複数の論理デバイスがそのようにマッピングされるべきであると判断された場合には、複数の論理デバイスそれぞれを複数の機能の別個いずれかにマッピングするステップと、（Ｃ）そうでない場合には、複数の論理デバイスの少なくとも２つを複数の機能の単一の機能にマッピングするステップと、を含む。【選択図】図６
2005071345.tif 000002
【特許請求の範囲】
【請求項１】
バス（１０６）に接続され、複数の機能を含むコンフィギュレーション空間（２００）に関連付けられた複数の論理デバイス（１１２ａ〜１１２ｄ）を備えるコンピュータシステム（７０２）で使用されるコンピュータ実施される方法（６００）であって、
（Ａ）前記複数の論理デバイス（１１２ａ〜１１２ｄ）それぞれが、前記複数の機能の別個いずれかにマッピングされるべきであることを、互換性フラグ（７１０）が示しているかどうかを判断するステップ（６０４）と、
（Ｂ）前記ステップ（Ａ）において、前記複数の論理デバイス（１１２ａ〜１１２ｄ）が、そのようにマッピングされるべきであると判断された場合には、前記複数の論理デバイス（１１２ａ〜１１２ｄ）それぞれを、前記複数の機能の別個いずれかにマッピングするステップ（６０６）と、
（Ｃ）そうでない場合には、前記複数の論理デバイス（１１２ａ〜１１２ｄ）の少なくとも２つを前記複数の機能の単一の機能にマッピングするステップ（６０８）と
を含むコンピュータ実施される方法。
【請求項２】
前記バス（１０６）は、周辺機器コンポーネント接続（ＰＣＩ）バスを備える
請求項１に記載のコンピュータ実施される方法。
【請求項３】
前記コンピュータシステム（７０２）は、前記バス（１０６）に接続された複数の物理デバイス（１１４ａ〜１１４ｃ）をさらに備え、
前記複数の物理デバイス（１１４ａ〜１１４ｃ）それぞれは、前記複数の論理デバイス（１１２ａ〜１１２ｄ）の少なくとも１つを実施し、
前記ステップ（Ｃ）は、
（Ｃ）（１）前記複数の物理デバイス（１１４ａ〜１１４ｃ）における各物理デバイスＤに対して、
（ａ）前記物理デバイスＤによって実施される論理デバイスの組Ｓを特定するステップと、
（ｂ）前記組Ｓの前記論理デバイスのすべてを、前記物理デバイスＤに関連付けられた単一の機能にマッピングするステップと、
を含む
請求項１に記載のコンピュータ実施される方法。
【請求項４】
周辺機器コンポーネント接続（ＰＣＩ）バス（１０６）に接続され、複数の機能を含むコンフィギュレーション空間（２００）に関連付けられた複数の物理デバイス（１１４ａ〜１１４ｃ）であって、
前記複数の物理デバイス（１１４ａ〜１１４ｃ）それぞれが、前記ＰＣＩバスに接続された複数の論理デバイス（１１２ａ〜１１２ｄ）の少なくとも１つを実施する、複数の物理デバイスを含むコンピュータシステム（７０２）で使用されるコンピュータ実施される方法（６００）であって、
（Ａ）前記複数の論理デバイス（１１２ａ〜１１２ｄ）それぞれが、前記複数の機能の別個いずれかにマッピングされるべきであることを互換性フラグ（７１０）が示しているかどうかを判断するステップ（６０４）と、
（Ｂ）前記ステップ（Ａ）において、前記複数の論理デバイス（１１２ａ〜１１２ｄ）それぞれが、前記複数の機能の別個いずれかにマッピングされるべきであると判断された場合には、前記複数の物理デバイス（１１４ａ〜１１４ｃ）の各物理デバイスＤに対して、
（１）前記物理デバイスＤによって実施される論理デバイスの組Ｓを特定するステップと、
（２）前記組Ｓの前記論理デバイスそれぞれを、前記物理デバイスＤに関連付けられた別個の機能にマッピングするステップと、
を実行するステップ（６０６）と、
（Ｃ）そうでない場合には、前記複数の物理デバイス（１１４ａ〜１１４ｃ）の各物理デバイスＤに対して、
（１）前記物理デバイスＤによって実施される論理デバイスの組Ｓを特定するステップと、
（２）前記コンフィギュレーション空間（２００）のＰＣＩヘッダ（４０２）部のサブシステムＩＤフィールド（５０２ｍ）に、複数の論理デバイスが単一の機能にマッピングされていることを示す値を記憶することによって、前記組Ｓの前記論理デバイスのすべてを、前記物理デバイスＤに関連付けられたコンフィギュレーション空間の一部の単一の機能にマッピングするステップと、
を実行するステップ（６０８）と
を含むコンピュータ実施される方法。
【請求項５】
バス（１０６）に接続され、複数の機能を含むコンフィギュレーション空間（２００）に関連付けられた複数の論理デバイス（１１２ａ〜１１２ｄ）を含むコンピュータシステム（７０２）で使用されるデバイス（７０４）であって、
前記複数の論理デバイス（１１２ａ〜１１２ｄ）それぞれが、前記複数の機能の別個いずれかにマッピングされるべきであることを、互換性フラグ（７１０）が示しているかどうかを判断する判断手段（６０４）と、
前記複数の論理デバイス（１１２ａ〜１１２ｄ）が、そのようにマッピングされるべきであると前記判断手段（６０４）が判断した場合には、前記複数の論理デバイス（１１２ａ〜１１２ｄ）それぞれを、前記複数の機能の別個いずれかにマッピングする第１のマッピング手段（６０６）と、
前記複数の論理デバイス（１１２ａ〜１１２ｄ）それぞれが、前記複数の機能の別個いずれかにマッピングされるべきであると前記判断手段（６０４）が判断しない場合には、前記複数の論理デバイス（１１２ａ〜１１２ｄ）の少なくとも２つを、前記複数の機能の単一の機能にマッピングする第２のマッピング手段（６０８）と
を含むコンピュータシステムで使用されるデバイス。
【請求項６】
バス（１０６）に接続され、複数の機能を含むコンフィギュレーション空間（２００）に関連付けられた複数の論理デバイス（１１２ａ〜１１２ｄ）を備えるコンピュータシステム（７０２）で使用されるコンピュータ実施される方法（６００）であって、
（Ａ）前記コンピュータシステム（７０２）で実行されるように選択されたオペレーティングシステムが、複数の論理デバイスを単一の機能にマッピングすることをサポートしているかどうかを判断するステップ（６０４）と、
（Ｂ）前記ステップ（Ａ）において、前記コンピュータシステム（７０２）で実行されるように選択された前記オペレーティングシステムが、複数の論理デバイスを単一の機能にマッピングすることをサポートしていないと判断された場合には、前記複数の論理デバイス（１１２ａ〜１１２ｄ）それぞれを前記複数の機能の別個いずれかにマッピングするステップ（６０６）と、
（Ｃ）そうでない場合には、前記複数の論理デバイス（１１２ａ〜１１２ｄ）の少なくとも２つを前記複数の機能の単一の機能にマッピングするステップ（６０８）と
を含むコンピュータ実施される方法。
【請求項７】
周辺機器コンポーネント接続（ＰＣＩ）バス（１０６）に接続され、複数の機能を含むコンフィギュレーション空間（２００）に関連付けられた複数の物理デバイス（１１４ａ〜１１４ｃ）であって、
前記複数の物理デバイス（１１４ａ〜１１４ｃ）それぞれが、前記バス（１０６）に接続された複数の論理デバイス（１１２ａ〜１１２ｄ）の少なくとも１つを実施する、複数の物理デバイスを含むコンピュータシステム（７０２）で使用されるコンピュータ実施される方法（６００）であって、
（Ａ）前記コンピュータシステム（７０２）で実行されるように選択されたオペレーティングシステムが、複数の論理デバイスを単一の機能にマッピングすることをサポートしているかどうかを判断するステップ（６０４）と、
（Ｂ）前記ステップ（Ａ）において、前記コンピュータシステム（７０２）で実行されるように選択されたオペレーティングシステムが、複数の論理デバイスを単一の機能にマッピングすることをサポートしていないと判断された場合には、前記複数の物理デバイスの各物理デバイスＤに対して、
（１）前記物理デバイスＤによって実施される論理デバイスの第１の組Ｓを特定するステップと、
（２）前記第１の組Ｓの前記論理デバイスそれぞれを、前記物理デバイスＤに関連付けられた別々の機能にマッピングするステップと、
を実行するステップ（６０６）と、
（Ｃ）そうでない場合には、前記複数の物理デバイスの各物理デバイスＤに対して、
（１）前記物理デバイスＤによって実施される論理デバイスの第２の組Ｓを特定するステップと、
（２）前記第２の組Ｓの前記論理デバイスのすべてを、前記物理デバイスＤに関連付けられた単一の機能にマッピングするステップと、
を実行するステップ（６０８）と
を含むコンピュータ実施される方法。
【請求項８】
バス（１０６）に接続され、複数の機能を含むコンフィギュレーション空間（２００）に関連付けられた複数の論理デバイス（１１２ａ〜１１２ｄ）を含むコンピュータシステム（７０２）で使用されるデバイス（７０４）であって、
前記コンピュータシステム（７０２）で実行されるように選択されたオペレーティングシステムが、複数の論理デバイスを単一の機能にマッピングすることをサポートしているかどうかを判断する判断手段（６０４）と、
前記コンピュータシステム（７０２）で実行されるように選択された前記オペレーティングシステムが、複数の論理デバイスを単一の機能にマッピングすることをサポートしていないと前記判断手段（６０４）が判断した場合には、前記複数の論理デバイス（１１２ａ〜１１２ｄ）それぞれを前記複数の機能の別個いずれかにマッピングする第１のマッピング手段（６０６）と、
前記コンピュータシステム（７０２）で実行されるように選択された前記オペレーティングシステムが、複数の論理デバイスを単一の機能にマッピングすることをサポートしていると前記判断手段（６０４）が判断した場合には、前記複数の論理デバイス（１１２ａ〜１１２ｄ）の少なくとも２つを前記複数の機能の単一の機能にマッピングする第２のマッピング手段（６０８）と
を含むコンピュータシステムで使用されるデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに使用される通信バスに関し、特に、通信バスに接続された複数のデバイスを効率的にコンフィギュレーションする技法に関する。
【背景技術】
【０００２】
従来のコンピュータシステムは、通常、中央処理装置（ＣＰＵ）と、メインメモリと、データバスを介して相互に通信すると共にＣＰＵと通信する複数のデバイスとを含む。
このデータバスは、入出力（Ｉ／Ｏ）バスとも呼ばれる。
ＣＰＵは、例えば、データバスを介してこれらのデバイス（ハードディスクドライブ、プリンタ、ディスプレイなど）にコマンドおよびデータを送信し、その逆の送信もまた同様に行われる。
小型コンピュータ用周辺機器インタフェース（ＳＣＳＩ）バス、業界標準アーキテクチャ（ＩＳＡ）バス、周辺機器コンポーネントインタフェース（ＰＣＩ）バス、ＩＣ間（Ｉ２Ｃ）バスなど、さまざまな従来のデータバスが存在する。
また、従来のコンピュータシステムは、通常、プロセッサとメインメモリとの間でデータを搬送するシステムバスも含む。
【０００３】
図１を参照して、従来技術のコンピュータシステム１００のブロック図を示す。
このコンピュータシステムは、中央処理装置（ＣＰＵ）１０２およびメインメモリ１０４（例えばＲＡＭ）を含み、これらは、システムバス１０６に接続されている。
また、システム１００はＰＣＩバス１１０も含む。このＰＣＩバス１１０は、システム−ＰＣＩ間ブリッジ１０８によってシステムバス１０６に接続されている。
３つのカード１１４ａ〜１１４ｃ（本明細書では「物理ＰＣＩデバイス」とも呼ぶ）が、ＰＣＩバス１１０に接続されている。
後に詳述するように、これらのカード１１４ａ〜１１４ｃそれぞれは、１つまたは複数の「論理」ＰＣＩデバイスを実施することができる。
図１に示す例では、カード１１４ａは、２つの論理デバイス１１２ａ〜１１２ｂを実施し、カード１１４ｂは、１つの論理デバイス１１２ｃを実施し、カード１１４ｃは、１つの論理デバイス１１２ｄを実施する。
【０００４】
論理デバイス１１２ａおよび１１２ｂは、例えば、ＵＡＲＴ（ユニバーサル非同期レシーバ／トランスミッタ）とすることができる。
ＵＡＲＴは、非同期シリアル通信をハンドリングするコンピュータコンポーネントである。
すべてのコンピュータが、そのコンピュータのシリアルポートを管理する少なくとも１つのＵＡＲＴを含み、いくつかの内部モデムが自身のＵＡＲＴを有する。
特に、デバイス１１２ａ〜１１２ｂは共に、２つのＵＡＲＴとして機能する能力を有するカード１１４ａ上の単一のプロセッサを使用して実施することもできるし、カード１１４ａ上の２つの別々の組のコンポーネントを使用して実施することもできる。
【０００５】
ＣＰＵ１０２およびメインメモリ１０４は、システムバス１０６を介して相互に通信することができる。
デバイス１１２ａ〜１１２ｄは、ＰＣＩバス１１０を介して相互に通信することができる。
ＣＰＵ１０２およびメインメモリ１０４は、システム−ＰＣＩ間ブリッジを介し、システムバス１０６およびＰＣＩバス１１０を通じてデバイス１１２ａ〜１１２ｄと通信することができる。
【０００６】
ＰＣＩバス１１０は、ＰＣＩローカルバス仕様改訂版２．３によって現在規定されている「コンフィギュレーション空間」を提供する。
このコンフィギュレーション空間は、バス１１０に接続されたデバイス（例えば、図１に図示した例ではデバイス１１２ａ〜１１２ｄ）用のコンフィギュレーション情報を記憶するために使用されるものである。
各ＰＣＩデバイス用のコンフィギュレーション空間は、デバイス識別子、供給業者識別子、改訂識別子などのコンフィギュレーション情報を含む。
特定のＰＣＩデバイス用のコンフィギュレーション情報は、通常、ＰＣＩカード上のＥＥＰＲＯＭに記憶され、その後、レジスタにロードされる。
このレジスタから（例えば、初期化ソフトウェアおよびエラーハンドリングソフトウェアによって）このコンフィギュレーション情報にアクセスすることにより、そのデバイスに関する情報を得ることができ、そのデバイスを特定のシステムで適切に機能するようにコンフィギュレーションすることができる。
【０００７】
より具体的に、図２を参照して、一例のＰＣＩコンフィギュレーション空間２００の図を示す。このＰＣＩコンフィギュレーション空間２００は、単一の連続したコンフィギュレーションレジスタセットとして図示されている。
このレジスタセットは、次に詳述するように、ＰＣＩバスとこのようなバス上のデバイスとに割り当てられる。
【０００８】
コンピュータシステム内の各ＰＣＩバスには、コンフィギュレーション空間２００の一部が割り当てられる。
図２に示す例では、コンフィギュレーション空間２００は、３つの部分空間２０２ａ〜２０２ｃに分割されている。
これらの部分空間それぞれは、１つのＰＣＩバスに割り当てられる。
バスコンフィギュレーション空間２０２ａ〜２０２ｃそれぞれは、６４Ｋのメモリを含む。
図１に示すシステム１００は、１つのＰＣＩバス１１０のみを含む。
したがって、このＰＣＩバス１１０には、コンフィギュレーション空間２００の第１の部分２０２ａに割り当てられることになる。
したがって、この部分２０２ａを、本明細書では、「バスコンフィギュレーション空間」と呼ぶ。
【０００９】
図２にさらに示すように、バスコンフィギュレーション空間２０２ａ〜２０２ｃそれぞれは、３２個の部分空間にさらに分割される。
これらの部分空間それぞれは、２Ｋの長さであり、対応するＰＣＩバス上の別々の物理デバイス（例えばカード）に割り当てることができる。
したがって、これらの２Ｋの部分空間それぞれを、本明細書では、「物理デバイスコンフィギュレーション空間」と呼ぶ。
図１を再び参照して、コンピュータシステム１００は、３つの物理ＰＣＩデバイス１１４ａ〜１１４ｃを含む。
ＰＣＩデバイス１１４ａには、例えば、物理デバイスコンフィギュレーション空間２０４ａを割り当てることができ、ＰＣＩデバイス１１４ｂには、物理デバイスコンフィギュレーション空間２０４ｂを割り当てることができ、ＰＣＩデバイス１１４ｃには、物理デバイスコンフィギュレーション空間２０４ｃを割り当てることができる。
【００１０】
ＰＣＩバスアーキテクチャによって、２つ以上の機能を実行するデバイスをＰＣＩバスに接続することが可能になる。
２つ以上の機能を実行するデバイスの一例は、単一チップ上に２つのＳＣＳＩポートを有するデバイスなどのマルチポートデバイスである。
別の例は、デバイス１１４ａである。
デバイス１１４ａは、論理デバイス１１２ａおよび１１２ｂにそれぞれある２つのＵＡＲＴの機能を実施する。
別々のコンフィギュレーション空間は、多機能デバイスの各機能（例えば、ポートまたはＵＡＲＴ）に割り当てられる。
より具体的には、各物理デバイスコンフィギュレーション空間は、８個の「機能コンフィギュレーション空間」に分割される。
これらの機能コンフィギュレーション空間それぞれは、特定の機能用のコンフィギュレーションレジスタを含む。
【００１１】
例えば、図３を参照して、物理デバイスコンフィギュレーション空間２０４ａの図を示す。
この物理デバイスコンフィギュレーション空間２０４ａは、この例では、物理デバイス１１４ａに割り当てられる。
物理デバイスコンフィギュレーション空間２０４ａは、８個の２５６バイトの「機能コンフィギュレーション空間」３００ａ〜３００ｈに分割される。
機能コンフィギュレーション空間３００ａ〜３００ｈそれぞれは、対応する物理デバイス１１４ａの別個の機能（例えば、ポートまたはＵＡＲＴ）用のコンフィギュレーション情報を記憶する。
【００１２】
物理ＰＣＩデバイスは、単一の機能を実施するためにのみ必要とされる。
単一機能デバイスは、例えば、その単一機能用のコンフィギュレーション情報を、その機能コンフィギュレーション空間の最初の部分に提供することができ、このデバイスに割り当てられた残りの機能コンフィギュレーション空間を空の状態のままにしておくことができる。
多機能デバイスは、最大８個の機能まで、その機能コンフィギュレーション空間の２つまたは３つ以上のものにコンフィギュレーション情報を記憶することができる。
【００１３】
図４を参照して、機能コンフィギュレーション空間３００ａ（この例では、ＰＣＩデバイス１１４ａの機能０に対応する）をより詳細に示す。
この機能コンフィギュレーション空間３００ａは、６４バイトのヘッダ部４０２および１９２バイトのコンフィギュレーションレジスタ部４０４の双方を含む。
【００１４】
図５を参照して、機能コンフィギュレーション空間３００ａのヘッダ部４０２をより詳細に図示した図を示す。
ヘッダ部４０２は、図５では、３２ビット（４バイト）幅で１６バイト長の２次元配列として図示されている。
ＰＣＩ仕様によって規定されるように、ヘッダ部４０２は次のフィールドを含む。
すなわち、デバイス識別子（ＩＤ）５０２ａ、供給業者ＩＤ５０２ｂ、ステータス５０２ｃ、コマンド５０２ｄ、クラスコード５０２ｅ、改訂ＩＤ５０２ｆ、ＢＩＳＴ（ビルトインセルフテスト）５０２ｇ、ヘッダタイプ５０２ｈ、待ち時間タイマ５０２ｉ、キャッシュラインサイズ５０２ｊ、ベースアドレスレジスタ５０２ｋ、ＣａｒｄＢｕｓ（カードバス）ＣＩＳポインタ５０２ｌ、サブシステムＩＤ５０２ｍ、サブシステム供給業者ＩＤ５０２ｎ、拡張ＲＯＭベースアドレス５０２ｏ、リザーブ５０２ｐ、機能ポインタ５０２ｑ、リザーブ５０２ｒ、Ｍａｘ＿Ｌａｔ５０２ｓ、Ｍｉｎ＿Ｇｎｔ５０２ｔ、割り込みピン５０２ｕ、および割り込みライン５０２ｖを含む。
本明細書で詳細に説明しないフィールドは、当業者に既知であり、ＰＣＩ仕様により詳細に説明されている。
【００１５】
ＨＰ−ＵＸバージョン１１ｉやそれよりも高位のものなど、いくつかのオペレーティングシステムは、単一のＰＣＩカード上の複数の論理デバイスを単一のＰＣＩ機能に割り当てる（マッピングする）ことを可能にしている。
例えば、上述したように、システム１００の論理デバイス１１２ａおよび１１２ｂ（図１）は、単一のＰＣＩカード１１４ａ上で実施することができる。
したがって、システム１００が、ＨＰ−ＵＸオペレーティングシステムなど、複数のデバイスを単一のＰＣＩ機能にマッピングすることを可能にするオペレーティングシステムを使用して動作する場合に、論理デバイス１１２ａおよび１１２ｂは、単一の機能３３０ａ（図３）にマッピングすることができる。
複数のデバイス（ＵＡＲＴなど）を単一の機能にマッピングできることにより、２つのデバイス用のコンフィギュレーション情報を提供するためにコンフィギュレーションおよび維持を行う必要があるレジスタは、１つの機能のみのレジスタとなるので、機能の使用がより効率的になる。
【００１６】
複数のデバイスを単一のＰＣＩ機能にマッピングする１つの方法は、次のとおりである。
オペレーティングシステム（例えばＨＰ−ＵＸ）は、「複数のデバイスがこの機能にマッピングされる」ことを意味する特別なサブシステムＩＤ値を指定することができる。
この特別なデバイスＩＤ値を、本明細書では、ラベルＭＵＬＴ＿ＤＥＶＩＣＥＳ（マルチデバイス）によって参照することにする。
単一のＰＣＩカード上で実施される２つまたは３つ以上のデバイス（デバイス１１２ａや１１２ｂなど）を、そのカードの物理デバイスコンフィギュレーション空間の単一のＰＣＩ機能にマッピングするために、値ＭＵＬＴＩ＿ＤＥＶＩＣＥＳを、その機能のサブシステムＩＤフィールド５０２ｍ（図５）に記憶することができる。
次いで、これらの２つのデバイスは、それら２つのデバイスに割り当てられたレジスタが、コンフィギュレーションレジスタ４０４内で連続した状態で、コンフィギュレーションレジスタ４０４を共有する。
【００１７】
デバイス１１２ａおよび１１２ｂが共に、単一の機能３００ａにマッピングされたものと仮定し、したがって、デバイス１１２ａおよび１１２ｂが共に、単一のコンフィギュレーション空間のヘッダ４０２を共有すると仮定する。
ＰＣＩバス上の論理デバイスは、バス番号、デバイス番号（ＩＤ）、および機能番号の組み合わせによってアドレス指定される。
デバイス１１２ｃなどのシステム１００のコンポーネントが、バス０、デバイス番号ＭＵＬＴ＿ＤＥＶＩＣＥＳ、および機能０で機能４０２をアドレス指定することによって機能４０２にアクセスしようとすると、オペレーティングシステムは、アドレス指定されている機能には２つのデバイスがマッピングされていることを示す特別の値として、ＭＵＬＴ＿ＤＥＶＩＣＥＳのデバイス番号を解釈することになる。
オペレーティングシステムは、この特別なアドレスに応じてデバイス１１２ａ〜１１２ｂ用のコンフィギュレーションレジスタ４０４に適当にアクセスするようにコンフィギュレーションされる。
【００１８】
しかしながら、Ｍｉｃｒｏｓｏｆｔ（登録商標）の．ＮＥＴなどの他のオペレーティングシステムは、複数のデバイスを単一のＰＣＩ機能にマッピングする能力を提供しないことがあり、ＭＵＬＴ＿ＤＥＶＩＣＥＳの特別なサブシステムＩＤ値の意味を正確に解釈できないことがある。
したがって、このようなオペレーティングシステムがシステム１００にロードされると、そのオペレーティングシステムは、マッピングされた第２のデバイス（例えば、デバイス１１２ｂ）を認識しないおそれがあり、したがって、第２のデバイスにアクセスできないおそれがある。
【００１９】
この問題の解決を試みる１つの方法は、デバイス１１２ａ〜１１２ｄそれぞれを別々のＰＣＩ機能に再マッピングすることである。
Ｍｉｃｏｓｏｆｔ（登録商標）の．ＮＥＴなどのオペレーティングシステムは、この再マッピングを行った後、デバイス１１２ａ〜１１２ｄのすべてに正確にアクセスすることができるようになる。
しかしながら、このような再マッピングを行うと、ＨＰ−ＵＸなどの他のオペレーティングシステムは、デバイス１１２ａ〜１１２ｄのすべてに正確にアクセスできなくなるおそれがある。
オペレーティングシステムの１つまたは複数のものをそれ自体変更することによってこの問題を解決する試みは、高価であり、かつ、多くの時間を要し、また、顧客が自身のオペレーティングシステムをアップグレードすることを必要とする。
【発明の開示】
【発明が解決しようとする課題】
【００２０】
したがって、マルチオペレーティングシステムのコンピュータシステムにおいて、複数のデバイスを単一のＰＣＩ機能にマッピングする改良された技法が必要とされている。
【課題を解決するための手段】
【００２１】
単一のコンピュータシステムが、複数のデバイスを単一のＰＣＩ機能にマッピングすることを許容しているオペレーティングシステムと、このようなマッピングを許容していないオペレーティングシステムとの双方を実行できるようにする技法について開示する。
オペレーティングシステムをロードしかつ実行する前（例えば、システムリセット中）に、コンピュータシステムは、オペレーティングシステムが、複数のデバイスの単一の機能へのマッピングをサポートしているかどうかを判断する。
このようなマッピングがサポートされている場合には、コンピュータシステムは、単一のＰＣＩカード上の複数のデバイスを、そのカード用のＰＣＩコンフィギュレーション空間の単一の機能にマッピングする。
このようなマッピングがサポートされていない場合には、コンピュータシステムは、各デバイスを別々のＰＣＩ機能にマッピングする。
次いで、コンピュータシステムは、オペレーティングシステムをロードして実行する。
これによって、オペレーティングシステムは、当該オペレーティングシステムがサポートする特定のデバイス−機能マッピング方式に従って、バス上のすべてのデバイスにアクセスすることが可能にされる。
【００２２】
例えば、本発明の一態様において、バスに接続され、複数の機能を含むコンフィギュレーション空間に関連付けられた複数の論理デバイスを備えるコンピュータシステムで使用されるコンピュータ実施される方法が提供される。
本方法は、複数の論理デバイスそれぞれが複数の機能の別個いずれかにマッピングされるべきであることを互換性フラグが示しているかどうかを判断するステップと、（Ｂ）ステップ（Ａ）において、複数の論理デバイスがそのようにマッピングされるべきであると判断された場合には、複数の論理デバイスそれぞれを複数の機能の別個いずれかにマッピングするステップと、（Ｃ）そうでない場合には、複数の論理デバイスの少なくとも２つを複数の機能の単一の機能にマッピングするステップと、を含む。
【００２３】
本発明の別の態様において、周辺機器コンポーネント接続（ＰＣＩ）バスに接続され、複数の機能を含むコンフィギュレーション空間に関連付けられた複数の物理デバイスを含むコンピュータシステムで使用されるコンピュータ実施される方法が提供される。
複数の物理デバイスそれぞれが、ＰＣＩバスに接続された複数の論理デバイスの少なくとも１つを実施する。
本方法は、（Ａ）複数の論理デバイスそれぞれが、複数の機能の別個いずれかにマッピングされるべきであることを互換性フラグが示しているかどうかを判断するステップと、（Ｂ）ステップ（Ａ）において、複数の論理デバイスそれぞれが、複数の機能の別個いずれかにマッピングされるべきであると判断された場合には、複数の物理デバイスの各物理デバイスＤに対して、（１）前記物理デバイスＤによって実施される論理デバイスの組Ｓを特定するステップと、（２）組Ｓの論理デバイスそれぞれを、物理デバイスＤに関連付けられた別個の機能にマッピングするステップと、を実行するステップと、（Ｃ）そうでない場合には、複数の物理デバイスの各物理デバイスＤに対して、（１）前記物理デバイスＤによって実施される論理デバイスの組Ｓを特定するステップと、（２）コンフィギュレーション空間のＰＣＩヘッダ部のサブシステムＩＤフィールドに、複数の論理デバイスが単一の機能にマッピングされていることを示す値を記憶することによって、組Ｓの論理デバイスのすべてを、前記物理デバイスＤに関連付けられたコンフィギュレーション空間の一部の単一の機能にマッピングするステップと、を実行するステップと、を含む。
【００２４】
本発明のさらに別の態様において、バスに接続され、複数の機能を含むコンフィギュレーション空間に関連付けられた複数の論理デバイスを含むコンピュータシステムで使用されるデバイスが提供される。
そのデバイスは、複数の論理デバイスそれぞれが、複数の機能の別個いずれかにマッピングされるべきであることを互換性フラグが示しているかどうかを判断する判断手段と、複数の論理デバイスがそのようにマッピングされるべきであると判断手段が判断した場合には、複数の論理デバイスそれぞれを、複数の機能の別個いずれかにマッピングする第１のマッピング手段と、複数の論理デバイスそれぞれが、複数の機能の別個いずれかにマッピングされるべきであると判断手段が判断しない場合には、複数の論理デバイスの少なくとも２つを、複数の機能の単一の機能にマッピングする第２のマッピング手段と、を含む。
【００２５】
本発明のさらなる態様において、バスに接続され、複数の機能を含むコンフィギュレーション空間に関連付けられた複数の論理デバイスを備えるコンピュータシステムで使用されるコンピュータ実施される方法が提供される。
本方法は、（Ａ）コンピュータシステムで実行されるように選択されたオペレーティングシステムが、複数の論理デバイスを単一の機能にマッピングすることをサポートしているかどうかを判断するステップと、（Ｂ）ステップ（Ａ）において、コンピュータシステムで実行されるように選択されたオペレーティングシステムが、複数の論理デバイスを単一の機能にマッピングすることをサポートしていないと判断された場合には、複数の論理デバイスそれぞれを複数の機能の別個いずれかにマッピングするステップと、（Ｃ）そうでない場合には、複数の論理デバイスの少なくとも２つを複数の機能の単一の機能にマッピングするステップと、を含む。
【００２６】
本発明の別の態様において、周辺機器コンポーネント接続（ＰＣＩ）バスに接続され、複数の機能を含むコンフィギュレーション空間に関連付けられた複数の物理デバイスを含むコンピュータシステムで実施される方法が提供される。前記複数の物理デバイスそれぞれが、前記バスに接続された複数の論理デバイスの少なくとも１つを実施する。
本方法は、（Ａ）コンピュータシステムで実行されるように選択されたオペレーティングシステムが、複数の論理デバイスを単一の機能にマッピングすることをサポートしているかどうかを判断するステップと、（Ｂ）ステップ（Ａ）において、コンピュータシステムで実行されるように選択されたオペレーティングシステムが、複数の論理デバイスを単一の機能にマッピングすることをサポートしていないと判断された場合には、複数の物理デバイスの各物理デバイスＤに対して、（１）前記物理デバイスＤによって実施される論理デバイスの第１の組Ｓを特定するステップと、（２）第１の組Ｓの論理デバイスそれぞれを、物理デバイスＤに関連付けられた別個の機能にマッピングするステップと、を実行するステップと、（Ｃ）そうでない場合には、複数の物理デバイスの各物理デバイスＤに対して、（１）前記物理デバイスＤによって実施される論理デバイスの第２の組Ｓを特定するステップと、（２）第２の組Ｓの論理デバイスのすべてを、前記物理デバイスＤに関連付けられた単一の機能にマッピングするステップと、を実行するステップと、を含む。
【００２７】
本発明のさらなる態様において、バスに接続され、複数の機能を含むコンフィギュレーション空間に関連付けられた複数の論理デバイスを含むコンピュータシステムで使用されるデバイスが提供される。
そのデバイスは、コンピュータシステムで実行されるように選択されたオペレーティングシステムが、複数の論理デバイスを単一の機能にマッピングすることをサポートしているかどうかを判断する判断手段と、コンピュータシステムで実行されるように選択されたオペレーティングシステムが、複数の論理デバイスを単一の機能にマッピングすることをサポートしていないと判断手段が判断した場合には、複数の論理デバイスそれぞれを複数の機能の別個いずれかにマッピングする第１のマッピング手段と、コンピュータシステムで実行されるように選択されたオペレーティングシステムが、複数の論理デバイスを単一の機能にマッピングすることをサポートしていると判断手段が判断した場合には、複数の論理デバイスの少なくとも２つを複数の機能の単一の機能にマッピングする第２のマッピング手段と、を含む。
【００２８】
本発明のさまざまな態様および実施の形態の他の特徴および利点は、以下の説明および特許請求の範囲から明らかになる。
【発明を実施するための最良の形態】
【００２９】
単一のコンピュータシステムが、複数のデバイスを単一のＰＣＩ機能にマッピングすることを許容しているオペレーティングシステムと、このようなマッピングを許容していないオペレーティングシステムとの双方を実行できるようにする技法について開示する。
オペレーティングシステムをロードしかつ実行する前（例えば、システムリセット中）に、コンピュータシステムは、オペレーティングシステムが、複数のデバイスの単一の機能へのマッピングをサポートしているかどうかを判断する。
このようなマッピングがサポートされている場合には、コンピュータシステムは、単一のＰＣＩカード上の複数のデバイスを、そのカード用のＰＣＩコンフィギュレーション空間の単一の機能にマッピングする。
このようなマッピングがサポートされていない場合には、コンピュータシステムは、各デバイスを別々のＰＣＩ機能にマッピングする。
次いで、コンピュータシステムは、オペレーティングシステムをロードして実行する。
これによって、オペレーティングシステムは、当該オペレーティングシステムがサポートする特定のデバイス−機能マッピング方式に従って、バス上のすべてのデバイスにアクセスすることが可能にされる。
【００３０】
図６を参照して、本発明の一実施の形態において実行される方法６００であって、コンピュータシステムで実行されるようにコンフィギュレーションされた特定のオペレーティングシステムと互換性のあるようにデバイスをＰＣＩ機能にマッピングする方法６００、のフローチャートを示す。
図７を参照して、コンピュータシステム７０２において、方法６００によって実行される動作を図示したデータフロー図を示す。
【００３１】
方法６００は、例えば、コンピュータシステム７０２の管理プロセッサ７０４によって実行することができる。
管理プロセッサは、サーバで一般に使用されるプロセッサであり、適当なオペレーティングシステムによるサーバのブートアップやＰＣＩコンフィギュレーション空間２００のコンフィギュレーションなどのシステム管理機能を実行するプロセッサである。
コンピュータシステム７０２は、ＣＰＵ、メモリ、データバス（ＰＣＩバスなど）、およびコンピュータシステムに一般に見られる他のコンポーネントを含むが、図７では、図示および説明を簡略化するために、本説明に関係のあるコンポーネントのみを図示している。
【００３２】
方法６００は、コンピュータシステム７０２をブートする命令７０６を受け取る（ステップ６０２）。
このブート命令７０６は、システム７０２のユーザ７０８が提供することもできるし、別のコンピュータなどの別の命令源が提供することもできる。
ブート命令７０６は、例えば、コールドブートを実行する命令であってもよいし、ウォームブートを実行する命令であってもよいし、あるいはコンピュータシステム７０２の他の種類のリセットを実行する命令であってもよい。
また、方法６００は、例えば、コンピュータシステム７０２上で現在実行されているオペレーティングシステムをアンロードした後に実行することもできる。
【００３３】
コンピュータシステム７０２は、２つのオペレーティングシステム７１２ａおよび７１２ｂを含む。
例として、以下の説明では、オペレーティングシステム７１２ａが、複数のデバイスを単一のＰＣＩ機能にマッピングすることをサポートしているオペレーティングシステム（ＨＰ−ＵＸなど）であり、オペレーティングシステム７１２ｂが、複数のデバイスを単一のＰＣＩ機能にマッピングすることをサポートしていないオペレーティングシステム（Ｍｉｃｒｏｓｏｆｔ（登録商標）の．ＮＥＴなど）であると仮定する。
【００３４】
コンピュータシステム７０２は、オペレーティングシステム７１２ａ〜７１２ｂのいずれをコンピュータシステム７０２上で実行するかを示すオペレーティングシステムセレクタ７１４を含む。
コンピュータシステム７０２は、複数のデバイスをシステム７０２の単一のＰＣＩ機能にマッピングできるかどうかを示す互換性フラグ７１０を含む。
この互換性フラグ７１０は、例えば、オペレーティングシステムセレクタ７１４によって選択されたオペレーティングシステムが、複数のデバイスを単一のＰＣＩ機能にマッピングすることが可能であるかどうかを示す値に設定することができる。
互換性フラグ７１０は、例えば、単一のビットによって表すことができ、その値は、複数のデバイスを単一のＰＣＩ機能にマッピングできるかどうかを示す。
【００３５】
管理プロセッサ７０４は、例えば、オペレーティングシステムセレクタ７１４の値、互換性フラグ７１０、および他のコンフィギュレーション情報（図示せず）を変更することをユーザに可能にすることができる。
コンピュータシステム７０２に電源を投入すると、管理プロセッサ７０４は、例えば、ユーザ７０８にコンフィギュレーションユーザインタフェース（ＵＩ）７１６を提示することができる。
このコンフィギュレーションＵＩ７１６は、オペレーティングシステムセレクタ７１４や互換性フラグ７１０など、コンフィギュレーション情報７１８の現在の値を表示する。
ユーザ７０８は、コンフィギュレーションＵＩ７１６を通じてコンフィギュレーション変更コマンド７２０を管理プロセッサ７０４に提供することができる。
それによって、ユーザ７０８は、コンフィギュレーション情報７１８の値を変更するように管理プロセッサ７０４に命令する。
ユーザ７０８が、オペレーティングシステム７１２ａ〜７１２ｂの特定の一方を選択すると、管理プロセッサ７０４は、オペレーティングシステムセレクタ７１４を、選択されたオペレーティングシステムを表す値に設定することができ、互換性フラグ７１０を、選択されたオペレーティングシステムが複数のデバイスを単一のＰＣＩ機能にマッピングすることを許容しているかどうかを示す値に設定することができる。
コンピュータシステム７０２は、オペレーティングシステムセレクタ７１４の値を互換性フラグ７１０の値にマッピングするテーブル（図示せず）を含むことができる。
管理プロセッサ７０４は、このようなテーブルを使用して、オペレーティングシステムセレクタ７１４の値に基づき互換性フラグ７１０の値を設定することができる。
あるいは、ユーザ７０８が、ユーザインタフェース７１６を通じて、互換性フラグ７１０の値を手動で設定することもできる。
【００３６】
オペレーティングシステムセレクタ７１４、互換性フラグ７１０、および他のコンフィギュレーション情報は、フラッシュＲＡＭなど、どの種類の不揮発性メモリにも記憶することができる。
【００３７】
図６に戻って、方法６００は、オペレーティングシステムセレクタによって選択されたオペレーティングシステムが、複数のデバイスの単一のＰＣＩ機能へのマッピングをサポートしているかどうかを判断する（ステップ６０４）。
方法６００は、例えば、互換性フラグ７１０の値を検査して、オペレーティングシステムセレクタ７１４によって選択されたオペレーティングシステムが、複数のデバイスを単一のＰＣＩ機能にマッピングすることをサポートしていることをこの互換性フラグ７１０が示しているかどうかを判断することによって、このステップ６０４を実行することができる。
【００３８】
現在選択されているオペレーティングシステムが、複数のデバイスを単一のＰＣＩ機能にマッピングすることをサポートしている場合には、方法６００は、ＰＣＩバス１１０上の各論理デバイス（例えば、論理デバイス１１２ａ〜１１２ｄ）を別々の機能にマッピングする（ステップ６０６）。
互換性フラグ７１０が、複数のデバイスを単一のＰＣＩ機能にマッピングできることを示している場合には、各ＰＣＩカードに対して、方法６００は、そのカードによって実施されるすべての論理デバイスを、そのカードのコンフィギュレーション空間の単一のＰＣＩ機能にマッピングする（ステップ６０８）。
ステップ６０６および６０８で実行されるオペレーションを、管理プロセッサ７０４がコンフィギュレーション空間２００に発行した再マッピングコマンド７２２によって、図７に図的に示す。
管理プロセッサ７０４が、再マッピングコマンド７２２を実施するコンフィギュレーション空間２００に対して行うことができる変更は、図８Ａおよび図８Ｂに関して後により詳細に説明する。
【００３９】
ステップ６０６および６０８のオペレーションおよび効果を理解するために、以下の例を検討する。
第１の例では、第１のオペレーティングシステム７１２ａが、オペレーティングシステムセレクタ７１４によって選択される。
例として、第１のオペレーティングシステム７１２ａが、複数のデバイスを単一のＰＣＩ機能にマッピングすることをサポートしていることを想起されたい。
したがって、この第１の例では、互換性フラグ７１０は、複数のデバイスを単一の機能にマッピングできることを示している。
【００４０】
この第１の例では、方法６００は、ステップ６０８を実行し、それによって、各ＰＣＩカード内のすべての論理デバイスを、そのカードのコンフィギュレーション空間の単一のＰＣＩ機能にマッピングする。
図１に示す例では、デバイス１１２ａおよび１１２ｂは、単一のＰＣＩカード１１４ａで実施され、デバイス１１２ｃは、第２のＰＣＩカード１１４ｂで実施され、デバイス１１２ｄは、第３のＰＣＩカード１１４ｃで実施される。
【００４１】
図８Ａを参照して、この第１の例において、ステップ６０８の実行結果として生じ得るマッピング８００を図示した図を示す。
このマッピング８００によれば、デバイス１１２ａおよび１１２ｂは共に、ＰＣＩカード１１４ａ用の物理デバイスコンフィギュレーション空間２０４ａの単一のＰＣＩ機能３００ａにマッピングされる。
上述したように、デバイス１１２ａおよび１１２ｂは、物理デバイスコンフィギュレーション空間２０４ａ用の機能コンフィギュレーション空間ヘッダ４０２のサブシステムＩＤフィールド５０２ｍに特別なサブシステムＩＤ値（ＭＵＬＴ＿ＤＥＶＩＣＥＳなど）を記憶することによって、同じ機能３００ａにマッピングすることができる。
一方、デバイス１１２ｃおよび１１２ｄは、別個のＰＣＩ機能８０２および８０４にそれぞれマッピングされる。
ＰＣＩ機能８０２および８０４は、例えば、カード１１４ｂ用の物理デバイスコンフィギュレーション空間２０４ｂおよびカード１１４ｃ用の物理デバイスコンフィギュレーション空間２０４ｃにそれぞれ存在することができる。
【００４２】
上述したように、オペレーティングシステム７１２ａは、単一のＰＣＩ機能にマッピングされる複数のデバイスを認識する。
ステップ６０８を実行し、それによって、図８Ａに示すように機能３００ａ、８０２、および８０４にデバイス１１２ａ〜１１２ｄをマッピングすることにより、オペレーティングシステム７１２ａは、ＰＣＩバス１１０上のデバイス１１２ａ〜１１２ｄのすべてにアクセスすることが可能になる。
【００４３】
第２の例では、第２のオペレーティングシステム７１２ｂが、オペレーティングシステムセレクタ７１４によって選択される。
例として、第２のオペレーティングシステム７１２ｂが、複数のデバイスを単一のＰＣＩ機能にマッピングすることをサポートしていないことを想起されたい。
したがって、この第２の例では、互換性フラグ７１０は、複数のデバイスを単一の機能にマッピングできないことを示している。
【００４４】
この第２の例では、方法６００は、ステップ６０６を実行し、それによって、ＰＣＩバス１１０上の各論理デバイスを別々のＰＣＩ機能にマッピングする。
図８Ｂを参照して、この第２の例において、ステップ６０６の実行結果として生じ得るマッピング８１０を図示した図を示す。
このマッピング８１０によれば、デバイス１１２ａおよび１１２ｂは、カード１１４ａ用の物理デバイスコンフィギュレーション空間２０４ａ（図３）の別々のＰＣＩ機能３００ａおよび３００ｂにそれぞれマッピングされる。
一方、デバイス１１２ｃおよび１１２ｄは、カード１１４ｂ〜１１４ｃ用の別個の物理デバイスコンフィギュレーション空間２０４ｂ〜２０４ｃの別個のＰＣＩ機能８１２および８１４にそれぞれマッピングされる。
その結果、デバイス１１２ａ〜１１２ｄそれぞれは、それ自体の機能コンフィギュレーション空間にマッピングされる。
【００４５】
上述したように、オペレーティングシステム７１２ｂは、単一のＰＣＩ機能にマッピングされる複数のデバイスを認識しない。
ステップ６０６を実行し、それによって、デバイス１１２ａ〜１１２ｄそれぞれを別個のＰＣＩ機能にマッピングすることにより、オペレーティングシステム７１２ｂは、ＰＣＩバス１１０上のデバイス１１２ａ〜１１２ｄのすべてにアクセスすることが可能になる。
【００４６】
ステップ６０６または６０８のいずれかを実行した後、方法６００は、オペレーティングシステムセレクタ７１４によって選択されたオペレーティングシステムをコンピュータシステム７０２にロードし（ステップ６１０）、ロードしたオペレーティングシステムでコンピュータシステム７０２をブートする（ステップ６１２）。
ステップ６１０および６１２を実行する技法は、当業者に既知である。
図７では、管理プロセッサ７０４が、選択されたオペレーティングシステムをロードするように示されているが、方法６００によって実行されるこの機能および他の機能は、システムプロセッサ（図示せず）上で実行されるファームウェア（例えばＢＩＯＳ）などの他のコンポーネントによって実行することもできる。
ブートプロセスが完了すると、ＰＣＩバス１１０上のデバイス１１２ａ〜１１２ｄは、コンピュータシステム７０２で実行されているオペレーティングシステムを使用して、相互にアクセスすることができ、また、コンピュータシステム７０２の他のコンポーネントによってアクセスすることができる。
【００４７】
本発明の利点の中には、以下の１つまたは複数のものが含まれる。
【００４８】
本明細書で開示した技法の１つの利点は、当該技法を使用すると、コンピュータシステム上で現在実行されているオペレーティングシステムと互換性のあるように、ＰＣＩデバイスをＰＣＩ機能にマッピングすることを可能にすることができるということである。
より具体的には、本明細書で開示した技法を使用すると、現オペレーティングシステムが、複数のＰＣＩデバイスを単一のＰＣＩ機能にマッピングすることをサポートしている場合には、このようなマッピング行うことができ、現オペレーティングシステムが、各ＰＣＩデバイスを別個のＰＣＩ機能にマッピングすることを必要とする場合には、このようなマッピングを行うことができる。このように、両種類のオペレーティングシステムは、ＰＣＩバスに接続されたデバイスのすべてを突き止めて使用できることになる。
【００４９】
本明細書で開示した技法の関連した利点は、ＨＰ−ＵＸのさまざまなバージョンやＭｉｃｒｏｓｏｆｔ（登録商標）の．ＮＥＴなどの既存のオペレーティングシステムを変更する必要なしに、当該技法を実施できるということである。
オペレーティングシステムの変更が、オペレーティングシステム開発者にとって多くの時間を要し、費用のかかるプロセスであること、および、オペレーティングシステムのアップグレードが、顧客にとって多くの時間を要し、費用のかかるプロセスであることから、このことは好都合である。したがって、オペレーティングシステムの変更を必要とする解決策を回避することが望ましく、本明細書で開示した技法は、オペレーティングシステムの変更を必要としない解決策を提供する。
【００５０】
さらに、本明細書で開示した技法により、コンピュータシステム上で実行される特定のオペレーティングシステムの、ユーザによる柔軟な選択が可能になる。
多くの環境では、複数のオペレーティングシステムをコンピュータ上にロードし、さまざまな理由から、ユーザがオペレーティングシステム間を切り換えることができるようにすることが望ましい。
本明細書で開示した技法により、互いに異なるオペレーティングシステム間で、それらのオペレーティングシステムがＰＣＩ機能へのデバイスのマッピングをハンドリングするように、このような切り換えを行うことが可能になる。
それによって、マルチＯＳコンピュータシステムが提供する一般的な柔軟性が維持される。
【００５１】
上記では、特定の実施の形態の観点から本発明を説明したが、上記実施の形態は、例示として提供したものにすぎず、本発明の範囲を限定するものでもなく、また画定するものでもないことが理解されるべきである。
他のさまざまな実施の形態も、特許請求の範囲内に含まれる。
これらの他のさまざまな実施の形態には、以下のものが含まれるが、これらに限定されるものではない。
【００５２】
本明細書で説明した要素およびコンポーネントは、さらに別のコンポーネントに分割することもできるし、互いに結合して、同じ機能を実行するより個数の少ないコンポーネントを形成することもできる。
例えば、管理プロセッサ７０４によって実行される機能は、別法では、２つまたは３つ以上のプロセッサによって実行することもできるし、コンピュータシステム７０２の他のコンポーネントによって実行することもできる。
【００５３】
上記では、ＰＣＩバスアーキテクチャと共に、本発明のさまざまな実施の形態を説明したが、本発明は、ＰＣＩバスアーキテクチャと共に使用することに限定されるものではない。
それとは逆に、本明細書で開示した技法は、他のバスアーキテクチャと共に使用することもできる。
さらに、上記では、バスに接続できるデバイスの例としてＵＡＲＴを説明したが、本発明は、ＵＡＲＴと共に使用することに限定されるものではない。
それとは逆に、本明細書で開示した技法は、バス接続されるあらゆるデバイスと共に使用することができる。
【００５４】
上記では、本発明のさまざまな実施の形態と共に使用できるオペレーティングシステムの例として、ＨＰ−ＵＸおよび．ＮＥＴを提供しているが、本発明は、これらのオペレーティングシステムと共に使用することに限定されるものではない。
さらに、図７には、２つのオペレーティングシステム７１２ａおよび７１２ｂを示しているが、本明細書で開示した技法は、２つよりも少ないまたは多いオペレーティングシステムを有するコンピュータシステムにおいて使用することもできる。
【００５５】
上記例では、特定の機能を複数のデバイスにマッピングすることを示すのに、サブシステムＩＤフィールド５０２ｍを使用しているが、これは、一例にすぎない。ヘッダ４０２の他のフィールドまたは他のデータ構造体を使用して、同じ機能を実行することもできる。
【００５６】
特定のＰＣＩカード上のすべてのデバイスを単一のＰＣＩ機能にマッピングすることが必要とされるとは限らない。
ＰＣＩカードのデバイスは、例えば、２つずつ組でまたは他の任意の方法で、ＰＣＩ機能にマッピングすることもできる。
【００５７】
本明細書では、単一の「物理デバイス」が、１つまたは複数の「論理デバイス」を実施することができる。
単一の論理デバイスは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実施することができる。
単一のカード上の複数の論理デバイスは、単一のハードウェアセットを使用して実施することができるが、別々のハードウェアを使用して実施することもできる。
論理デバイスの一例は、ＰＣＩ機能にマッピングできるあらゆる実体である。
論理デバイスは、その論理デバイスを実施する物理デバイスがバスに接続された時に、バス「に接続される」。
【００５８】
上述した技法は、例えば、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実施することができる。
上述した技法は、１つまたは複数のコンピュータプログラムで実施することができる。
これらのコンピュータプログラムは、プログラム可能なコンピュータ上で実行され、このプログラム可能なコンピュータは、プロセッサ（管理プロセッサ７０４など）と、プロセッサによって可読な記憶媒体（例えば、揮発性メモリおよび不揮発性メモリ、ならびに／または記憶素子が含まれる）と、少なくとも１つの入力デバイスと、少なくとも１つの出力デバイスとを含む。
プログラムコードは、入力デバイスを使用して入力された入力に適用されて、上述した機能を実行し、出力を生成することができる。
この出力は、１つまたは複数の出力デバイスに提供することができる。
【００５９】
特許請求の範囲内に含まれる各コンピュータプログラムは、アセンブリ言語、マシン言語、高級手続型プログラミング言語、またはオブジェクト指向型プログラミング言語など、いずれのプログラミング言語でも実施することができる。
プログラミング言語は、例えば、コンパイラ型プログラミング言語であってもよいし、インタープリタ型プログラミング言語であってもよい。
【００６０】
このような各コンピュータプログラムは、マシン可読記憶デバイスに有体物として具体化されてコンピュータプロセッサによって実行されるコンピュータプログラム製品で実施することができる。
本発明の方法のステップは、コンピュータ可読媒体上に有体物として具体化されたプログラムを実行するコンピュータプロセッサによって実行され、入力に対する操作および出力の生成を行うことにより、本発明の機能を実行することができる。
適切なプロセッサには、例として、汎用マイクロプロセッサおよび専用マイクロプロセッサの双方が含まれる。
一般に、プロセッサは、読み出し専用メモリおよび／またはランダムアクセスメモリから命令およびデータを受け取る。
コンピュータプログラム命令を有体物として具体化するのに適した記憶デバイスには、例えば、半導体メモリデバイスなどの不揮発性メモリ、内部ハードディスクや着脱可能ディスクなどの磁気ディスク、光磁気ディスク、およびＣＤ−ＲＯＭのあらゆる形態が含まれる。
半導体メモリデバイスには、ＥＰＲＯＭ、ＥＥＰＲＯＭ、およびフラッシュメモリデバイスが含まれる。
上記のいずれも、特別に設計されたＡＳＩＣ（特定用途向け集積回路）によって補完することもできるし、このＡＳＩＣに実装することもできる。
また、コンピュータは、一般に、内部ハードディスク（図示せず）や着脱可能ディスクなどの記憶媒体からもプログラムおよびデータを受け取ることができる。
これらの要素は、従来のデスクトップコンピュータまたはワークステーションコンピュータ、および本明細書で説明した方法を実施するコンピュータプログラムを実行するのに適した他のコンピュータにおいても見られる。
これらの要素は、あらゆるデジタル印刷エンジンもしくはマーキングエンジン、表示モニタ、または、紙、フィルム、表示スクリーン、もしくは他の出力媒体上にカラーピクセルまたはグレースケールピクセルを生成することができる他のラスタ出力デバイスと共に使用することができる。
【図面の簡単な説明】
【００６１】
【図１】ＰＣＩバスを備える従来技術のコンピュータシステムの図である。
【図２】従来技術のＰＣＩコンフィギュレーション空間の図である。
【図３】従来技術のＰＣＩ物理デバイスコンフィギュレーション空間の図である。
【図４】従来技術のＰＣＩ機能コンフィギュレーション空間の図である。
【図５】従来技術のＰＣＩ機能コンフィギュレーション空間のヘッダの図である。
【図６】本発明の一実施の形態において実行される方法であって、コンピュータシステムで実行されるようにコンフィギュレーションされたオペレーティングシステムと互換性のあるようにデバイスをＰＣＩ機能にマッピングする方法のフローチャートである。
【図７】本発明の一実施の形態による、図６の方法によって実行される動作を図示したデータフロー図である。
【図８Ａ】本発明の一実施の形態による、図６の方法の実行結果として生じ得るデバイスとＰＣＩ機能との間の第１のマッピングを示す図である。
【図８Ｂ】本発明の一実施の形態による、図６の方法の実行結果として生じ得るデバイスとＰＣＩ機能との間の第２のマッピングを示す図である。
【符号の説明】
【００６２】
１０４・・・メインメモリ
１０６・・・システムバス
１０８・・・システム−ＰＣＩ間ブリッジ
１１０・・・ＰＣＩバス
１１２ａ、１１２ｂ、１１２ｃ、１１２ｄ・・・ＰＣＩデバイス
２００・・・コンフィギュレーション空間
３００ａ、３００ｂ・・・ＰＣＩ機能
５０２ａ・・・デバイスＩＤ
５０２ｂ・・・供給業者ＩＤ
５０２ｃ・・・ステータス
５０２ｄ・・・コマンド
５０２ｅ・・・クラスコード
５０２ｆ・・・改訂ＩＤ
５０２ｈ・・・ヘッダタイプ
５０２ｉ・・・待ち時間タイマ
５０２ｊ・・・キャッシュラインサイズ
５０２ｋ・・・ベースアドレスレジスタ
５０２ｌ・・・ＣａｒｄＢｕｓ  ＣＩＳポインタ
５０２ｍ・・・サブシステムＩＤ
５０２ｎ・・・サブシステム供給業者ＩＤ
５０２ｏ・・・拡張ベースアドレス
５０２ｐ、５０２ｒ・・・リザーブ
５０２ｑ・・・機能ポインタ
５０２ｕ・・・割り込みピン
５０２ｖ・・・割り込みライン
７１４・・・ＯＳセレクタ
７１０・・・互換性フラグ
７２２・・・再マッピングコマンド
７０４・・・管理プロセッサ
７１８・・・コンフィギュレーション情報
７２０・・・コンフィギュレーション変更コマンド
７１６・・・コンフィギュレーションユーザインタフェース
７０６・・・ブート命令
８０２、８０４、８１２、８１４・・・ＰＣＩ機能
【図１】
2005071345.tif 000003
【図２】
2005071345.tif 000004
【図３】
2005071345.tif 000005
【図４】
2005071345.tif 000006
【図５】
2005071345.tif 000007
【図６】
2005071345.tif 000008
【図７】
2005071345.tif 000009
【図８Ａ】
2005071345.tif 000010
【図８Ｂ】
2005071345.tif 000011