(57)【特許請求の範囲】
【請求項１】
メインメモリ及びプロセッサバスを介したプロセッサに、それぞれ接続されたホストバスブリッジが複数のルーティングレジスタを備え、該ルーティングレジスタの直下方向のそれぞれに、順次、一次ＰＣＩバスと、該一次ＰＣＩバスのそれぞれに対応し、ベースアドレスレジスタを備える複数のＰＣＩ  ｔｏ  ＰＣＩブリッジと、該ＰＣＩ  ｔｏ  ＰＣＩブリッジのそれぞれに対応した二次ＰＣＩバスと、該二次ＰＣＩバスにそれぞれ対応したＰＣＩデバイスとを階層構成接続し、該階層構成接続の部材に対して前記メインメモリのＩ／Ｏアドレス空間の割り当てを行うアドレス割当装置において、
前記アドレス割当装置は、
前記Ｉ／Ｏアドレス空間を前記ベースアドレスレジスタへの割り当てが許容されている所定量のサイズより小さいサイズの空間に分割して複数の細分化Ｉ／Ｏアドレス空間とし、前記細分化Ｉ／Ｏアドレス空間のそれぞれに対して、前記二次ＰＣＩバスをたすき掛け状に対応付けるとともに、前記二次ＰＣＩバスに、前記ベースアドレスレジスタへの割り当てが許容されている所定量のサイズであり、かつ、前記細分化Ｉ／Ｏアドレス空間をそれぞれ含む空間を、同一のルーティングレジスタの配下に存在する前記二次ＰＣＩバス間で重複なく割り当て、前記二次ＰＣＩバスに対応する前記ＰＣＩ  ｔｏ  ＰＣＩブリッジの前記ベースアドレスレジスタのそれぞれに、割り当てた前記所定量のサイズの空間を設定するベースアドレスレジスタ設定手段と、
複数のルーティングレジスタのそれぞれについて、ルーティングレジスタの配下に存在する前記一次ＰＣＩバスに、当該ルーティングレジスタの配下にある前記二次ＰＣＩバスにそれぞれ対応付けられた前記細分化Ｉ／Ｏアドレス空間を割り当て、かつ、当該ルーティングレジスタの配下にある前記二次ＰＣＩバスのいずれかに対応付けられた前記細分化Ｉ／Ｏアドレス空間と、一又は二以上の他のルーティングレジスタの配下にある前記二次ＰＣＩバスのいずれかに対応付けられた前記細分化Ｉ／Ｏアドレス空間を、当該ルーティングレジスタに設定するルーティングレジスタ設定手段と
を備えたことを特徴とするアドレス割当装置。
【請求項２】
請求項１記載のアドレス割当装置において、
前記ルーティングレジスタ設定手段によるＩ／Ｏアドレス空間の割り当てと、前記ベースアドレスレジスタ設定手段によるＩ／Ｏアドレス空間の割り当てとの組み合わせにより、それぞれのＰＣＩデバイスが同一トランザクションの同時受信を防止するようにしたことを特徴とするアドレス割当装置。
【請求項３】
請求項１または請求項２記載のアドレス割当装置において、
前記アドレス割当手段を適用するアーキテクチャは、ＰＣ−ＡＴアーキテクチャであることを特徴とするアドレス割当装置。
【請求項４】
請求項３記載のアドレス割当装置において、
前記ＰＣ−ＡＴアーキテクチャを適用するコンピュータシステムは、サーバであることを特徴とするアドレス割当装置。
【請求項５】
メインメモリ及びプロセッサバスを介したプロセッサに、それぞれ接続されたホストバスブリッジが複数のルーティングレジスタを備え、該ルーティングレジスタの直下方向のそれぞれに、順次、一次ＰＣＩバスと、該一次ＰＣＩバスのそれぞれに対応し、ベースアドレスレジスタを備える複数のＰＣＩ  ｔｏ  ＰＣＩブリッジと、該ＰＣＩ  ｔｏ  ＰＣＩブリッジのそれぞれに対応した二次ＰＣＩバスと、該二次ＰＣＩバスにそれぞれ対応したＰＣＩデバイスとを階層構成接続し、該階層構成接続の部材に対して前記メインメモリのＩ／Ｏアドレス空間の割り当てを行うアドレス割当方法において、
前記Ｉ／Ｏアドレス空間を前記ベースアドレスレジスタへの割り当てが許容されている所定量のサイズより小さいサイズの空間に分割して複数の細分化Ｉ／Ｏアドレス空間とし、前記細分化Ｉ／Ｏアドレス空間のそれぞれに対して、前記二次ＰＣＩバスをたすき掛け状に対応付けるとともに、前記二次ＰＣＩバスに、前記ベースアドレスレジスタへの割り当てが許容されている所定量のサイズであり、かつ、前記細分化Ｉ／Ｏアドレス空間をそれぞれ含む空間を、同一のルーティングレジスタの配下に存在する前記二次ＰＣＩバス間で重複なく割り当て、前記二次ＰＣＩバスに対応する前記ＰＣＩ  ｔｏ  ＰＣＩブリッジの前記ベースアドレスレジスタのそれぞれに、割り当てた前記所定量のサイズの空間を設定するステップと、
複数のルーティングレジスタのそれぞれについて、ルーティングレジスタの配下に存在する前記一次ＰＣＩバスに、当該ルーティングレジスタの配下にある前記二次ＰＣＩバスにそれぞれ対応付けられた前記細分化Ｉ／Ｏアドレス空間を割り当て、かつ、当該ルーティングレジスタの配下にある前記二次ＰＣＩバスのいずれかに対応付けられた前記細分化Ｉ／Ｏアドレス空間と、一又は二以上の他のルーティングレジスタの配下にある前記二次ＰＣＩバスのいずれかに対応付けられた前記細分化Ｉ／Ｏアドレス空間を、当該ルーティングレジスタに設定するステップと
を備えたことを特徴とするアドレス割当方法。
【請求項６】
請求項５記載のアドレス割当方法において、
前記ルーティングレジスタ設定手段によるＩ／Ｏアドレス空間の割り当てと、前記ベースアドレスレジスタ設定手段によるＩ／Ｏアドレス空間の割り当てとの組み合わせにより、同一ＰＣＩデバイスにおける同一トランザクションの同時受信を防止するステップを備えることを特徴とするアドレス割当方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、アドレス割当装置およびその方法に関し、特に、大規模コンピュータシステムにおいて、Ｉ／Ｏアドレス空間の割り当てを効率よく行うようにしたアドレス割当装置およびその方法に関する。
【０００２】
【従来の技術】
大規模コンピュータシステムでは、多数のＰＣＩデバイスを制御するために、システム内に多数のＰＣＩ（Peripheral  Component  Interconnect）バスを持ち、かつ、多数のＰＣＩ ｔｏ ＰＣＩブリッジを持つことが多い。
ここで、従来の大規模コンピュータシステムの一例を、図７，図８に基づいて簡単に説明する。図７は従来の大規模コンピュータシステムのブロック図、図８は従来例のＩ／Ｏアドレスマップである。
なお、図７に示した大規模コンピュータシステムの構成は、後述の本発明の実施形態（図１参照）とほぼ同一構成であるので、詳細説明は実施形態の説明にて行う。
【０００３】
図７に示すように、従来の大規模コンピュータシステムＤＫ１００は、複数のプロセッサ５０〜５１とメインメモリ５４に接続したホストバスブリッジ５３に、順次一次ＰＣＩバス（０）１０，１３と、ＰＣＩ  ｔｏ  ＰＣＩブリッジ２０〜２３と、二次ＰＣＩバス１１，１２，１４，１５と、ＰＣＩデバイス３０〜３３とを階層接続してなる。
５３ａ，５３ｂは、それぞれ一次ＰＣＩバス（０）１０，（３）１３に割り当てられているＩ／Ｏアドレス空間を示すルーティングレジスタである。
そして、例えば、一次ＰＣＩバス（０）１０配下に存在するＰＣＩデバイス３０，３１やＰＣＩ  ｔｏ  ＰＣＩブリッジ２０，２１で必要とする全Ｉ／Ｏアドレス空間を満たすように、ルーティングレジスタを設定している。
【０００４】
【発明が解決しようとする課題】
しかしながら、ＰＣＩ ｔｏ ＰＣＩブリッジがシステム内に存在すると、Ｉ／Ｏアドレス空間を４ＫＢｙｔｅ単位でしか割り当てられないというＰＣＩ ｔｏ ＰＣＩブリッジの仕様（例えば、ＰＣＩ ＳＩＧ（PCI Special Interest Group）発行のPCI-to-PCI Ｂridge Architecture Specification）のため、大量のＩ／Ｏアドレス空間が無駄に消費されていた。
例えば、ＰＣ−ＡＴアーキテクチャではＩ／Ｏアドレス空間が６４ＫＢｙｔｅしかないため、結果的に大量のＰＣＩバスを持つ大規模なコンピュータシステム（例えば、サーバ）においては、全てのＰＣＩデバイス（例えば、サーバ内蔵のＲＯＭ，ＲＡＭ，ＰＣＩカード，ＳＣＳＩカード等）にＩ／Ｏ空間を割り当てることができなくなる可能性が大きくなっていた。
具体的には、図８に示すように、６４ＫＢｙｔｅのＩ／Ｏアドレス空間の内、１２８Ｂｙｔｅのみが使用され、残りは無駄になっていた。但し、図８では１６ＫＢｙｔｅのＩ／Ｏアドレス空間の内、３２バイトのみが使用された状態を示している。
【０００５】
本発明は、上記の事情にかんがみなされたもので、大規模コンピュータシステムにおいて、Ｉ／Ｏアドレス空間の割り当てを効率よく行うようにしたアドレス割当装置およびその方法の提供を目的とする。
【０００６】
【課題を解決するための手段】
上記目的を達成するため請求項１記載の発明は、メインメモリ及びプロセッサバスを介したプロセッサに、それぞれ接続されたホストバスブリッジが複数のルーティングレジスタを備え、該ルーティングレジスタの直下方向のそれぞれに、順次、一次ＰＣＩバスと、該一次ＰＣＩバスのそれぞれに対応し、ベースアドレスレジスタを備える複数のＰＣＩ  ｔｏ  ＰＣＩブリッジと、該ＰＣＩ  ｔｏ  ＰＣＩブリッジのそれぞれに対応した二次ＰＣＩバスと、該二次ＰＣＩバスにそれぞれ対応したＰＣＩデバイスとを階層構成接続し、該階層構成接続の部材に対して前記メインメモリのＩ／Ｏアドレス空間の割り当てを行うアドレス割当装置において、
前記アドレス割当装置は、
前記Ｉ／Ｏアドレス空間を前記ベースアドレスレジスタへの割り当てが許容されている所定量のサイズより小さいサイズの空間に分割して複数の細分化Ｉ／Ｏアドレス空間とし、前記細分化Ｉ／Ｏアドレス空間のそれぞれに対して、前記二次ＰＣＩバスをたすき掛け状に対応付けるとともに、前記二次ＰＣＩバスに、前記ベースアドレスレジスタへの割り当てが許容されている所定量のサイズであり、かつ、前記細分化Ｉ／Ｏアドレス空間をそれぞれ含む空間を、同一のルーティングレジスタの配下に存在する前記二次ＰＣＩバス間で重複なく割り当て、前記二次ＰＣＩバスに対応する前記ＰＣＩ  ｔｏ  ＰＣＩブリッジの前記ベースアドレスレジスタのそれぞれに、割り当てた前記所定量のサイズの空間を設定するベースアドレスレジスタ設定手段と、
複数のルーティングレジスタのそれぞれについて、ルーティングレジスタの配下に存在する前記一次ＰＣＩバスに、当該ルーティングレジスタの配下にある前記二次ＰＣＩバスにそれぞれ対応付けられた前記細分化Ｉ／Ｏアドレス空間を割り当て、かつ、当該ルーティングレジスタの配下にある前記二次ＰＣＩバスのいずれかに対応付けられた前記細分化Ｉ／Ｏアドレス空間と、一又は二以上の他のルーティングレジスタの配下にある前記二次ＰＣＩバスのいずれかに対応付けられた前記細分化Ｉ／Ｏアドレス空間を、当該ルーティングレジスタに設定するルーティングレジスタ設定手段とを備えた構成としてある。
【０００７】
この構成を、図１，図２に示した第１の実施形態のブロック図，Ｉ／Ｏアドレスマップを参照しつつ説明する。
先ず、アドレス割当手段５０Ａ，５１Ａが備えるベースアドレスレジスタ設定手段（図示省略）の行う「たすき掛け状」の割当設定を説明する。
図１，図２に示すように、ベースアドレスレジスタ設定手段は、それぞれのＰＣＩデバイスをそれぞれの細分化Ｉ／Ｏアドレス空間に割り当てる。例えば、ＰＣＩデバイス（０）３０を０x００００〜０x０００７に割り当て、ＰＣＩデバイス（１）３１を０x１０００〜０x１００７に割り当てる。次に、ＰＣＩ ｔｏ ＰＣＩブリッジ（０）２０と（１）２１のＩ／Ｏアドレス空間を、二次ＰＣＩバス（１）１１と（２）１２の双方のＩ／Ｏアドレス空間に、たすき掛け状に割当設定する。
同様に、ベースアドレスレジスタ設定手段は、ＰＣＩ ｔｏ ＰＣＩブリッジ（２）２２と（３）２３のＩ／Ｏアドレス空間を、二次ＰＣＩバス（４）１４と（５）１５の双方のＩ／Ｏアドレス空間に、たすき掛け状に割当設定する。
【０００８】
次に、アドレス割当手段５０Ａ，５１Ａが備えるルーティングレジスタ設定手段（図示省略）の行う「たすき掛け状」の割当設定を説明する。
ルーティングレジスタ（１）５３ｃと（２）５３ｄのＩ／Ｏアドレス空間を、一次ＰＣＩバス（０）１０と（３）１３の双方のＩ／Ｏアドレス空間に、たすき掛け状に割当設定する。
【０００９】
このようにすれば、図２に示すように、Ｉ／Ｏアドレス空間の８ＫＢｙｔｅを二等分し、一方の４ＫＢｙｔｅを使用して一次ＰＣＩバス（０）１０，（３）１３に対するＩ／Ｏアドレス空間設定を行い、二次ＰＣＩバス（１）１１，（４）１４に対するＩ／Ｏアドレス空間設定を行うことができる。
同様に、他方の４ＫＢｙｔｅを使用して一次ＰＣＩバス（０）１０，（３）１３に対するＩ／Ｏアドレス空間設定を行い、二次ＰＣＩバス（２）１２，（５）１５に対するＩ／Ｏアドレス空間設定を行うことができる。
従って、プロセッサから見ると、８ＫＢｙｔｅのＩ／Ｏアドレス空間に、二次ＰＣＩバス（１）と（４）と（２）と（５）へのＩ／Ｏアドレス空間の割り当てが可能となる。即ち、従来例（図８参照）では１６ＫＢｙｔｅのＩ／Ｏアドレス空間を要していたのに対し、本発明によれば８ＫＢｙｔｅのＩ／Ｏアドレス空間で済むので、Ｉ／Ｏアドレス空間の無駄な使用を半分にすることができる。
【００１０】
請求項２記載の発明は、請求項１記載のアドレス割当装置において、
前記ルーティングレジスタ設定手段によるＩ／Ｏアドレス空間の割り当てと、前記ベースアドレスレジスタ設定手段によるＩ／Ｏアドレス空間の割り当てとの組み合わせにより、それぞれのＰＣＩデバイスが同一トランザクションの同時受信を防止するような構成としてある。
【００１１】
このようにすれば、例えば、図１，図２に示すように、二次ＰＣＩバス（１）１１には０x００００から０x０ＦＦＦまでのＩ／Ｏアドレス空間、二次ＰＣＩバス（２）１２には０x１０００から０x１ＦＦＦまでのＩ／Ｏアドレス空間が割り当てられている。そのため、ＰＣＩ ｔｏ ＰＣＩブリッジ（０）２０またはＰＣＩ ｔｏ ＰＣＩブリッジ（１）２１がプロセッサからのトランザクションを受信し、二次ＰＣＩバス（１）１１と（２）１２に送信するが、二次ＰＣＩバス（１）１１に割り当てられているＩ／Ｏアドレス空間と二次ＰＣＩバス（２）１２に割り当てられているＩ／Ｏアドレス空間とでは、重なっている部分は存在しない。
従って、一次ＰＣＩバス（０）１０に発行されたトランザクションを、ＰＣＩｔｏ ＰＣＩブリッジ（０）２０とＰＣＩ ｔｏ ＰＣＩブリッジ（１）２１が同時に受信しようとして、動作が不正となることはない。
【００１２】
請求項３記載の発明は、請求項１記載のアドレス割当手段において、
前記アドレス割当手段を適用するアーキテクチャは、ＰＣ−ＡＴアーキテクチャである構成としてある。
このようにすれば、例えばＰＣ−ＡＴアーキテクチャのサーバのＩ／Ｏアドレス空間を、効率よく使用することができる。
【００１３】
請求項４記載の発明は、請求項３記載のアドレス割当装置において、
前記ＰＣ−ＡＴアーキテクチャを適用するコンピュータシステムは、サーバである構成としてある。
このようにすれば、ＰＣ−ＡＴアーキテクチャを適用したサーバのＩ／Ｏアドレス空間を、効率よく使用することができる。
【００１４】
請求項５記載の発明は、メインメモリ及びプロセッサバスを介したプロセッサに、それぞれ接続されたホストバスブリッジが複数のルーティングレジスタを備え、該ルーティングレジスタの直下方向のそれぞれに、順次、一次ＰＣＩバスと、該一次ＰＣＩバスのそれぞれに対応し、ベースアドレスレジスタを備える複数のＰＣＩ  ｔｏ  ＰＣＩブリッジと、該ＰＣＩ  ｔｏ  ＰＣＩブリッジのそれぞれに対応した二次ＰＣＩバスと、該二次ＰＣＩバスにそれぞれ対応したＰＣＩデバイスとを階層構成接続し、該階層構成接続の部材に対して前記メインメモリのＩ／Ｏアドレス空間の割り当てを行うアドレス割当方法において、
前記Ｉ／Ｏアドレス空間を前記ベースアドレスレジスタへの割り当てが許容されている所定量のサイズより小さいサイズの空間に分割して複数の細分化Ｉ／Ｏアドレス空間とし、前記細分化Ｉ／Ｏアドレス空間のそれぞれに対して、前記二次ＰＣＩバスをたすき掛け状に対応付けるとともに、前記二次ＰＣＩバスに、前記ベースアドレスレジスタへの割り当てが許容されている所定量のサイズであり、かつ、前記細分化Ｉ／Ｏアドレス空間をそれぞれ含む空間を、同一のルーティングレジスタの配下に存在する前記二次ＰＣＩバス間で重複なく割り当て、前記二次ＰＣＩバスに対応する前記ＰＣＩ  ｔｏ  ＰＣＩブリッジの前記ベースアドレスレジスタのそれぞれに、割り当てた前記所定量のサイズの空間を設定するステップと、
複数のルーティングレジスタのそれぞれについて、ルーティングレジスタの配下に存在する前記一次ＰＣＩバスに、当該ルーティングレジスタの配下にある前記二次ＰＣＩバスにそれぞれ対応付けられた前記細分化Ｉ／Ｏアドレス空間を割り当て、かつ、当該ルーティングレジスタの配下にある前記二次ＰＣＩバスのいずれかに対応付けられた前記細分化Ｉ／Ｏアドレス空間と、一又は二以上の他のルーティングレジスタの配下にある前記二次ＰＣＩバスのいずれかに対応付けられた前記細分化Ｉ／Ｏアドレス空間を、当該ルーティングレジスタに設定するステップとを備えた方法としてある。
【００１５】
このようにすれば、前記請求項１の説明の場合と同様にして、細分化Ｉ／Ｏアドレス空間へのそれぞれのＰＣＩデバイスの割り当てと、ベースアドレスレジスタに対するＩ／Ｏアドレス空間のたすき掛け状の割り当てと、ルーティングレジスタに対するＩ／Ｏアドレス空間のたすき掛け状に割り当てを、行うことができる。
【００１６】
請求項６記載の発明は、請求項５記載のアドレス割当方法において、
前記ルーティングレジスタ設定手段によるＩ／Ｏアドレス空間の割り当てと、前記ベースアドレスレジスタ設定手段によるＩ／Ｏアドレス空間の割り当てとの組み合わせにより、同一ＰＣＩデバイスにおける同一トランザクションの同時受信を防止するステップを備える方法としてある。
このようにすれば、例えば図１の大規模コンピュータシステムにおいて、一次ＰＣＩバス（０）１０に発行されたトランザクションを、ＰＣＩ ｔｏ ＰＣＩブリッジ（０）２０とＰＣＩ ｔｏ ＰＣＩブリッジ（１）２１が同時に受信しようとして、動作が不正となることはない。
【００１７】
【発明の実施の形態】
以下、本発明を図示の実施形態に基づいて説明する。
（１）本発明の概要説明
本発明の実施形態の説明に先立ち、本発明の概要を説明する。
本発明は、大量のＰＣＩバスを持つ大規模なコンピュータシステムにおいて、ホストバスブリッジに、直下のＰＣＩバス毎にルーティングレジスタを複数設け、小さなサイズの複数のＩ／Ｏアドレス空間を割り当てることが出来るようにすることにより、ＰＣＩ ｔｏ ＰＣＩブリッジが存在する場合でも、Ｉ／Ｏアドレス空間の効率的な割り当てを可能にする。
【００１８】
例えば図１において、二次ＰＣＩバス（１）１１と（４）１４に同じＩ／Ｏアドレス空間が割り当てられているように、ＰＣＩ ｔｏ ＰＣＩブリッジ（０）２０と（２）２２のブリッジ用ベースアドレスレジスタ２０ａと２２ａを設定する。
同様に、二次ＰＣＩバス（２）１２と（５）１５に同じアドレスが割り当てられているように、ＰＣＩ ｔｏ ＰＣＩブリッジ（１）２１と（３）２３のブリッジ用ベースアドレスレジスタ２１ａと２３ａを設定する。
【００１９】
一方、ホストバスブリッジ５３には、二次ＰＣＩバス（１）１１と（２）１２に割り当てられているＩ／Ｏアドレス空間を一次ＰＣＩバス（０）１０に、二次ＰＣＩバス（４）１４と（５）１５に割り当てられているＩ／Ｏアドレス空間を一次ＰＣＩバス（３）１３に割り当てられているように、直下の一次ＰＣＩバス（０）１０と（３）１３のそれぞれに、複数あるルーティングレジスタ５０Ａと５３ｄを設定する。
このようにすれば、ホストバスブリッジ５３は、例えば、ＰＣＩ ｔｏ ＰＣＩブリッジの仕様の４ＫＢｙｔｅ未満の単位で、Ｉ／Ｏアドレス空間を割り当てることが可能となる。
【００２０】
（２）第１の実施形態
図１は、大量のＰＣＩバスを持ち、かつ、複数のＰＣＩ ｔｏ ＰＣＩブリッジが存在する大規模コンピュータシステムＤＫ１の全体ブロック図である。図２は、メインメモリのＩ／Ｏアドレスマップである。
なお、図１に示した「たすき掛け状」の接続（バス結線）は、本実施形態の重要部分（アドレスの割当設定）を分かり易く示すための概念表現であり、実際の接続（バス結線）は前記図７に示したものと同一である。
【００２１】
図１に示すように、大規模コンピュータシステムＤＫ１は、複数のプロセッサ５０〜５１と、プロセッサバス５２と、ホストバスブリッジ５３と、メインメモリ５４とを備える。さらに、「一次ＰＣＩバス」である一次ＰＣＩバス（０）１０，（３）１３と、「二次ＰＣＩバス」であるＰＣＩバス（１）１１，（２）１２，（４）１４，（５）１５と、ＰＣＩデバイス３０〜３３と、前記一次ＰＣＩバスと二次ＰＣＩバス間を接続するＰＣＩ ｔｏ ＰＣＩバスブリッジ２０〜２３とを備える。
大規模コンピュータシステムＤＫ１は、例えばＰＣ−ＡＴアーキテクチャを用いたサーバであり、ＰＣＩデバイスは、サーバ内蔵のＲＯＭ，ＲＡＭ，ＰＣＩカード，ＳＣＳＩカード等である。ここに、サーバは、ファイルの保管や入出力、アクセス等の管理サービス、プリント出力、通信制御等のサービスを提供する側のコンピュータである。
【００２２】
５０Ａ，５１Ａは、Ｉ／Ｏアドレス空間の割り当てを行うアドレス割当手段であり、「ベースアドレスレジスタ設定手段」（図示省略）と、「ルーティングレジスタ設定手段」（図示省略）とを備える（後述）。
５３ｃ，５３ｄは、それぞれ一次ＰＣＩバス（０）１０，（３）１３毎に割り当てられているＩ／Ｏアドレス空間を設定するルーティングレジスタである（後述）。
２０ａ〜２３ａは、それぞれのＰＣＩ  ｔｏ  ＰＣＩブリッジ２０〜２３のアドレスを設定するブリッジ用ベースアドレスレジスタである。
３０ａ〜３３ａは、それぞれのＰＣＩデバイス３０〜３３のアドレスを設定するデバイス用ベースアドレスレジスタである。
【００２３】
図１における表現の特徴は、ルーティングレジスタ（１）５３ｃとルーティングレジスタ（２）５３ｄを、一次ＰＣＩバス（０）１０と一次ＰＣＩバス（３）１３の双方に「たすき掛け状」に接続して表現した点である。
また、ＰＣＩ ｔｏ ＰＣＩブリッジ（０）２０とＰＣＩ ｔｏ ＰＣＩブリッジ（１）２１を、二次ＰＣＩバス（１）１１と二次ＰＣＩバス（２）１２の双方に「たすき掛け状」に接続して表現した点である。
実際の構成は前述のように、図７の構成と同じく「たすき掛け状」の接続（バス結線）ではなく、「単線状（但し、バス）」の接続（バス結線）である。
【００２４】
次に、図１，図２を参照しつつ、メインメモリ５４上のＩ／Ｏアドレス空間の設定を説明する。Ｉ／Ｏアドレス空間設定は、プロセッサ（１）５０，（２）５１のアドレス割当手段５０Ａ，５１Ａが行う。
ホストバスブリッジ５３は、直下の一次ＰＣＩバス（０）１０，（３）１３のそれぞれに割り当てられている、Ｉ／Ｏアドレス空間を示すルーティングレジスタを二つ有する。即ち、一次ＰＣＩバス（０）１０に対してはルーティングレジスタ５３ｃを有し、一次ＰＣＩバス（３）１３に対してはルーティングレジスタ５３ｄを有する。
各ルーティングレジスタ５３ｃ，５３ｄには、それぞれ２５６Ｂｙｔｅ単位に２５６Ｂｙｔｅ境界から始まるＩ／Ｏアドレス空間を割り当てるよう設定することが可能となっている。
【００２５】
ＰＣＩ ｔｏ ＰＣＩブリッジ２０〜２３は、それぞれ直下の二次ＰＣＩバス（例えば、ＰＣＩ ｔｏ ＰＣＩブリッジ（０）２０に対しては二次ＰＣＩバス（１）１１）に割り当てられているＩ／Ｏアドレス空間を示すブリッジ用ベースアドレスレジスタ２０ａ〜２３ａを有する。例えば、二次ＰＣＩバス（１）１１に対しては、ブリッジ用ベースアドレスレジスタ２０ａを有する。
各ベースアドレスレジスタ２０ａ，２１ａ，２２ａ，２３ａは、ＰＣＩ ｔｏ ＰＣＩブリッジ２０〜２３の仕様により、それぞれ４ＫＢｙｔｅ単位に４ＫＢｙｔｅ境界から始まるＩ／Ｏアドレス空間を割り当てるよう設定することが可能となっている。
逆に言えば、仕様により４Ｋバイト未満の単位でＩ／Ｏアドレス空間を割り当てることは不可能である。
【００２６】
ＰＣＩデバイス３０〜３３は、それぞれ自分に割り当てられているＩ／Ｏアドレス空間を示すデバイス用ベースアドレスレジスタ３０ａ〜３３ａを有する。例えば、ＰＣＩデバイス３０に対してはデバイス用ベースアドレスレジスタ３０ａである。
各ベースアドレスレジスタ３０ａ〜３３ａは、ＰＣＩバスの仕様（例えば、ＰＣＩ ＳＩＧ（PCI Special Interest Group発行の PCI Local Ｂus Specification）により、それぞれ４Ｂｙｔｅ単位に４Ｂｙｔｅ境界から始まるＩ／Ｏアドレス空間を割り当てるよう設定することが可能となっている。本実施形態では各ＰＣＩデバイス３０〜３３は、８ＢｙｔｅのＩ／Ｏアドレス空間を使用するものとする。
ＰＣＩ ｔｏ ＰＣＩブリッジ（０）２０と（２）２２には、直下の二次ＰＣＩバス（（１）１１と（４）１４）に、それぞれ０x００００から０x０ＦＦＦまでの４ＫＢｙｔｅのＩ／Ｏアドレス空間を割り当てられているように、それぞれブリッジ用ベースアドレスレジスタ２０ａ，２２ａを設定する。
【００２７】
ＰＣＩ ｔｏ ＰＣＩブリッジ（１）２１と（３）２３には、直下の二次ＰＣＩバス（（２）１２と（５）１５）に、それぞれ０x１０００から０x１ＦＦＦまでの４ＫＢｙｔｅのＩ／Ｏアドレス空間を割り当てられているように、ブリッジ用ベースアドレスレジスタ２１ａ，２３ａを設定する。
また、ＰＣＩデバイス（０）３０には０x００００から０x０００７まで、ＰＣＩデバイス（１）３１には０x１０００から０x１００７まで、ＰＣＩデバイス（２）３２には０x０８００から０x０８０７まで、ＰＣＩデバイス（３）３３には０x１８００から０x１８０７までの、それぞれ８ＢｙｔｅのＩ／Ｏアドレス空間を割り当てられているように、ベースアドレスレジスタ３０ａ〜３３ａを設定する。
【００２８】
一方、ホストバスブリッジ５３には、直下の一次ＰＣＩバスのうち、一次ＰＣＩバス（０）１０に０x００００から０x０７ＦＦまでの２ＫＢｙｔｅと、０x１０００から０x１７ＦＦまでの２ＫＢｙｔｅのＩ／Ｏアドレス空間を割り当てる。そして、ルーティングレジスタ５３ｃには０x００００から０x０７ＦＦまでの設定を、ルーティングレジスタ５３ｄには０x１０００から０x１７ＦＦまでの設定を行う。
【００２９】
一次ＰＣＩバス（３）１３には０x０８００から０x０ＦＦＦまでの２ＫＢｙｔｅと、０x１８００から０x１ＦＦＦまでの２ＫＢｙｔｅのＩ／Ｏアドレス空間を割り当てる。そして、ルーティングレジスタ５３ｃには０x０８００から０x０ＦＦＦまでの設定を、ルーティングレジスタ５３ｄには０x１８００から０x１ＦＦＦまでの設定を行う。
この場合、プロセッサから見ると二次ＰＣＩバス（１）１１には０x００００から０x０７ＦＦまで、二次ＰＣＩバス（２）１２には０x１０００から０x１７ＦＦまで、二次ＰＣＩバス（４）１４には０x０８００から０x０ＦＦＦまで、二次ＰＣＩバス（５）１５には０x１８００から０x１ＦＦＦまでの、それぞれ２ＫＢｙｔｅが割り当てられているように見える。
【００３０】
以上のような構成における具体的動作を、図３に示すフローチャートを参照しつつ説明する。
例えば、プロセッサ（１）５０がＰＣＩデバイス（０）３０にアクセスする場合、プロセッサ（１）５０は、０x００００から０x０００７までのいずれかのアドレスで、Ｉ／Ｏトランザクションを発行する（ステップＳ１）。
ここでは０x０００４のアドレスでアクセスしたとする。該トランザクションを受け取ったホストバスブリッジ５３は、該トランザクションのアドレスを各ルーティングレジスタ５３ｃ，５３ｄの設定と比較する。そして、そのアドレスが割り当てられている一次ＰＣＩバスを判断し、その一次ＰＣＩバスに該トランザクションを送出する（ステップＳ２）。
【００３１】
今回の場合、一次ＰＣＩバス（０）１０に０x００００から０x０７ＦＦまでのＩ／Ｏアドレス空間が割り当てられているため、一次ＰＣＩバス（０）１０にトランザクションを送出する。次にＰＣＩ ｔｏ ＰＣＩブリッジ（０）２０と（１）２１において、一次ＰＣＩバス（０）１０に発行されたトランザクションのアドレスを各自のブリッジ用ベースアドレスレジスタの設定と比較する（ステップＳ３）。
そして、自分の直下の二次ＰＣＩバスに割り当てられている空間へのトランザクションかどうか判断し、自分の直下の二次ＰＣＩバスに割り当てられている空間へのトランザクションならそのトランザクションを受信する（ステップＳ４）。
【００３２】
今回の場合、二次ＰＣＩバス（１）１１には０x００００から０x０ＦＦＦまでのＩ／Ｏアドレス空間、二次ＰＣＩバス（２）１２には０x１０００から０x１ＦＦＦまでのＩ／Ｏアドレス空間が割り当てられている。そのため、ＰＣＩ ｔｏ ＰＣＩブリッジ（０）２０がプロセッサからのトランザクションを受信し、二次ＰＣＩバス（１）１１と（２）１２に送信するが、二次ＰＣＩバス（１）１１に割り当てられているＩ／Ｏアドレス空間と二次ＰＣＩバス（２）１２に割り当てられているＩ／Ｏアドレス空間とでは、重なっている部分は存在しない。
従って、一次ＰＣＩバス（０）１０に発行されたトランザクションを、ＰＣＩｔｏ ＰＣＩブリッジ（０）２０と（１）２１が同時に受信しようとして、動作が不正となることはない。
【００３３】
次に、ＰＣＩデバイス（０）３０において、二次ＰＣＩバス（１）１１に発行されたトランザクションのアドレスを自分のデバイス用ベースアドレスレジスタの設定と比較する（ステップＳ５）。そして、自分に割り当てられている空間へのトランザクションかどうか判断し、自分に割り当てられている空間へのトランザクションならそのトランザクションを受信する（ステップＳ６）。今回の場合、０x００００から０x０００７までのＩ／Ｏアドレス空間が割り当てられているため、該トランザクションを受信する。
以上が、プロセッサ（１）５０がＰＣＩデバイス（０）３０にアクセスする場合の動作である。
【００３４】
次に、プロセッサ（１）５０がＰＣＩデバイス（２）３２にアクセスする場合、プロセッサ（１）５０は０x０８００から０x０８０７までのいずれかのアドレスでＩ／Ｏトランザクションを発行する。ここでは０x０８０４のアドレスでアクセスしたとする。該トランザクションを受け取ったホストバスブリッジ５３は、該トランザクションのアドレスを各ルーティングレジスタの設定と比較し、そのアドレスが割り当てられているＰＣＩバスを判断し、そのＰＣＩバスに該トランザクションを送出する。
【００３５】
今回の場合、一次ＰＣＩバス（３）１３に０x０８００から０x０ＦＦＦまでのＩ／Ｏアドレス空間が割り当てられているため、一次ＰＣＩバス（３）１３にトランザクションを送出する。次にＰＣＩ ｔｏ ＰＣＩブリッジ（２）２２とＰＣＩ ｔｏ ＰＣＩブリッジ（３）２３において、一次ＰＣＩバス（３）１３に発行されたトランザクションのアドレスを各自のブリッジ用ベースアドレスレジスタの設定と比較し、自分の直下のＰＣＩバスに割り当てられている空間へのトランザクションかどうか判断する。そして、自分の直下のＰＣＩバスに割り当てられている空間へのトランザクションならそのトランザクションを受信する。
【００３６】
今回の場合、二次ＰＣＩバス（４）１４には０x００００から０x０ＦＦＦまでのＩ／Ｏアドレス空間、二次ＰＣＩバス（５）１５には０x１０００から０x１ＦＦＦまでのＩ／Ｏアドレス空間が割り当てられているため、ＰＣＩ ｔｏ ＰＣＩブリッジ（２）２２が該トランザクションを受信し、二次ＰＣＩバス（４）１４に送信する。二次ＰＣＩバス（４）１４に割り当てられているＩ／Ｏアドレス空間と二次ＰＣＩバス（５）１５に割り当てられているＩ／Ｏアドレス空間で、重なっている部分は存在しない。
従って、一次ＰＣＩバス（３）１３に発行されたトランザクションをＰＣＩ ｔｏ ＰＣＩブリッジ（２）２２とＰＣＩ ｔｏ ＰＣＩブリッジ（３）２３が同時に受信しようとして、動作が不正となることはない。
【００３７】
次に、ＰＣＩデバイス（２）３２において、二次ＰＣＩバス（４）１４に発行されたトランザクションのアドレスを自分のデバイス用ベースアドレスレジスタの設定と比較し、自分に割り当てられている空間へのトランザクションかどうか判断し、自分に割り当てられている空間へのトランザクションならそのトランザクションを受信する。今回の場合、０x０８００から０x０８０７までのＩ／Ｏアドレス空間が割り当てられているため、該トランザクションを受信する。
【００３８】
上記の例で示したように、ＰＣＩ ｔｏ ＰＣＩブリッジ（０）２０とＰＣＩ ｔｏ ＰＣＩブリッジ（２）２２、およびＰＣＩ ｔｏ ＰＣＩブリッジ（１）２１とＰＣＩ ｔｏ ＰＣＩブリッジ（３）２３において、直下の二次ＰＣＩバスに同じＩ／Ｏアドレス空間が割り当てられているようにブリッジ用ベースアドレスレジスタが設定されている。しかし、システム全体としては別のＩ／Ｏアドレス空間が割り当てられているかのように動作する。
従って、システム全体では個々のＰＣＩデバイスが同一のトランザクションを受信してしまうことはない。
【００３９】
前記図８は、前記図７のブロック構成における従来の装置でのＩ／Ｏアドレスマップの例を示す図である。
図７，図８に示すように、従来のホストバスブリッジ５３は、直下の一次ＰＣＩバス毎に割り当てられているＩ／Ｏアドレス空間を示すルーティングレジスタを１つしか有していない（例えば、ルーティングレジスタ（１）５３ｃに対する一次ＰＣＩバス（０）１０）。従って、一次ＰＣＩバスおよび二次ＰＣＩバス配下に存在するＰＣＩデバイスやＰＣＩ ｔｏ ＰＣＩブリッジ（この場合は、ＰＣＩデバイス（０）３０と（１）３１）で必要とする全Ｉ／Ｏアドレス空間を満たすように、ルーティングレジスタ（１）５３ｃを設定しなければならない。
【００４０】
ＰＣＩ ｔｏ ＰＣＩブリッジは４ＫＢｙｔｅ未満の単位でＩ／Ｏアドレス空間を割り当てることが仕様上不可能なため、図７のブロック構成では、ホストバスブリッジの一次ＰＣＩバス（０）１０と一次ＰＣＩバス（３）１３には、それぞれ８ＫＢｙｔｅのＩ／Ｏアドレス空間を割り当てなければならない。
しかし、図２と図８とを比較すると分かるように、本実施形態のホストバスブリッジでは、従来のホストバスブリッジと比較して使用するＩ／Ｏアドレス空間のサイズを半分にすることが可能となる。
【００４１】
（３）第２の実施形態
本発明においては、システム内のＰＣＩバスやＰＣＩデバイス，ＰＣＩ ｔｏ ＰＣＩブリッジ，プロセッサ、プロセッサバス，メインメモリの数に制限はなく、ホストバスブリッジから直に出ているＰＣＩバスの数は、二つ以上であれば制限はない。
本実施形態は、ホストバスブリッジから直下に出ているＰＣＩバスの数が三つの場合である。
図４に本実施形態のブロック図を示し、図５に本実施形態におけるＩ／Ｏアドレスマップを示す。図６は本実施形態に対応する従来例のＩ／Ｏアドレスマップである。
【００４２】
図４に示すように、大規模コンピュータシステムＤＫ２は、前記第１の実施形態に比較し、ルーティングレジスタ（３）５３ｅと、一次ＰＣＩバス（６）１６と、二個のＰＣＩ  ｔｏ  ＰＣＩブリッジ（４）２４，（５）２５と、二個の二次ＰＣＩバス（７）１７，（８）１８と、二個のＰＣＩデバイス（４）３４，（５）３５とを、追加してなる。
そして、各ルーティングレジスタ（１）５３ｃ，（２）５３ｄ，（３）５３ｅを、各一次ＰＣＩバス（０）１０，（３）１３，（６）１６に対して、それぞれたすき掛け状に割当設定する。
図５と図６とを比較すれば分かるように、本実施形態のホストバスブリッジは、従来のホストバスブリッジと比較して使用するＩ／Ｏアドレス空間のサイズが３分の１になる。
【００４３】
なお、前記第１の実施形態では、ＰＣＩ ｔｏ ＰＣＩブリッジ（０）２０と（２）２２、ＰＣＩ ｔｏ ＰＣＩブリッジ（１）２１と（３）２３において、直下の二次ＰＣＩバスに同じＩ／Ｏアドレス空間が割り当てられているように、ベースアドレスレジスタを設定している。しかし、一部が重なる別のＩ／Ｏアドレス空間が割り当てられているように、ベースアドレスレジスタを設定することも可能である。また、前記第２の実施形態に対しても、同様である。
【００４４】
【発明の効果】
以上説明したように、本発明によれば、以下の効果を発揮することができる。
第１の効果は、ＰＣＩ ｔｏ ＰＣＩブリッジが存在する場合に、Ｉ／Ｏ空間を割り当てることが出来ないＰＣＩデバイスがでてくる可能性が減ることである。
その理由は、無駄に消費されるＩ／Ｏ空間が減るためである。
第２の効果は、ＰＣＩ ｔｏ ＰＣＩブリッジに細工をする必要が無く、既存のＰＣＩ ｔｏ ＰＣＩブリッジがそのまま使用できることである。
その理由は、ホストバスブリッジに直下のＰＣＩバスに対して複数のＩ／Ｏアドレス空間を割り当てる手段を設けたためである。
【図面の簡単な説明】
【図１】本発明の第１の実施形態を適用する大規模コンピュータシステムのブロック図である。
【図２】同第１の実施形態における、Ｉ／Ｏアドレスマップである。
【図３】同第１の実施形態のフローチャートである。
【図４】本発明の第２の実施形態を適用する大規模コンピュータシステムのブロック図である。
【図５】同第２の実施形態における、Ｉ／Ｏアドレスマップである。
【図６】第２の実施形態に対応する従来例のＩ／Ｏアドレスマップである。
【図７】従来例の大規模コンピュータシステムのブロック図である。
【図８】従来例のＩ／Ｏアドレスマップである。
【符号の説明】
ＤＫ１  第１の実施形態の大規模コンピュータシステム
ＤＫ２  第２の実施形態の大規模コンピュータシステム
ＤＫ１００  従来例の大規模コンピュータシステム
１０  一次ＰＣＩバス（０）
１１  二次ＰＣＩバス（１）
１２  二次ＰＣＩバス（２）
１３  一次ＰＣＩバス（３）
１４  二次ＰＣＩバス（４）
１５  二次ＰＣＩバス（５）
１６  二次ＰＣＩバス（６）
２０  ＰＣＩ ｔｏ ＰＣＩブリッジ（０）
２０ａ  ブリッジ用ベースアドレスレジスタ
２１  ＰＣＩ ｔｏ ＰＣＩブリッジ（１）
２１ａ  ブリッジ用ベースアドレスレジスタ
２２  ＰＣＩ ｔｏ ＰＣＩブリッジ（２）
２２ａ  ブリッジ用ベースアドレスレジスタ
２３  ＰＣＩ ｔｏ ＰＣＩブリッジ（３）
２３ａ  ブリッジ用ベースアドレスレジスタ
２４  ＰＣＩ ｔｏ ＰＣＩブリッジ（４）
２４ａ  ブリッジ用ベースアドレスレジスタ
２５  ＰＣＩ ｔｏ ＰＣＩブリッジ（５）
２５ａ  ブリッジ用ベースアドレスレジスタ
３０  ＰＣＩデバイス（０）
３０ａ  デバイス用ベースアドレスレジスタ
３１  ＰＣＩデバイス（１）
３１ａ  デバイス用ベースアドレスレジスタ
３２  ＰＣＩデバイス（２）
３２ａ  デバイス用ベースアドレスレジスタ
３３  ＰＣＩデバイス（３）
３３ａ  デバイス用ベースアドレスレジスタ
５０  プロセッサ（１）
５０Ａ  アドレス割当手段
５１  プロセッサ（ａ）
５１Ａ  アドレス割当手段
５２  プロセッサバス
５３  ホストバスブリッジ
５３ａ  ルーティングレジスタ（１）
５３ｂ  ルーティングレジスタ（２）
５３ｃ  ルーティングレジスタ（３）
５３ｄ  ルーティングレジスタ（４）
５３ｅ  ルーティングレジスタ（５）
５４  メインメモリ
【図１】
0004106964.tif 000002
【図２】
0004106964.tif 000003
【図３】
0004106964.tif 000004
【図４】
0004106964.tif 000005
【図５】
0004106964.tif 000006
【図６】
0004106964.tif 000007
【図７】
0004106964.tif 000008
【図８】
0004106964.tif 000009