(57)【特許請求の範囲】
【請求項１】
データ処理システムの複数の拡張スロットにメモリを割り振る装置であって、
前記データ処理システムの初期化の際に、
前記複数の拡張スロットの間に、メモリを固定的に割り振る第１の手段と、
前記複数の拡張スロットのうちの１つに機能的に接続された入出力アダプタが、前記複数の拡張スロットの１つに割り振られたよりも多くのメモリ割り振りを要求することの決定に応じて、前記入出力アダプタによって占有された前記拡張スロットの１つが十分なメモリを割り振られるように、前記複数の拡張スロットの間に、メモリを再割り振りする第２の手段と、
実行時に、前記複数の拡張スロットのうちの選択された拡張スロットに入出力アダプタがホットプラグされたことに応じて、ホットプラグされた入出力アダプタによって要求されるメモリ量が、前記ホットプラグされた入出力アダプタによって占有された拡張スロットに割り振られたよりも多いか否かを決定する第３の手段と、
前記複数の拡張スロットのうちの選択された拡張スロットに割り振られたよりも多くのメモリを要求する前記複数の拡張スロットのうちの選択された拡張スロットにホットプラグされた新しい入出力アダプタに応じて、前記複数の拡張スロットのうちの未占有の拡張スロットから、前記複数の拡張スロットのうちの選択された拡張スロットに、メモリを再割り振りする第４の手段と、
前記新しい入出力アダプタが、前記複数の拡張スロットのうちの未占有の拡張スロットから再割り振りできるよりも多くのメモリ割り振りを要求することの決定に応じて、前記複数の拡張スロットのうちの他の拡張スロットを占有する複数の古い入出力アダプタのうちユーザ決定された入出力アダプタを一時的に構成解除するかまたはリブートさせるかをユーザに対し照会し、前記ユーザから一時的に構成解除することの指示を受けて、前記ユーザ決定された入出力アダプタを一時的に構成解除する第５の手段と、
前記ユーザ決定された入出力アダプタの一時的構成解除に応答して前記複数の拡張スロットのうちの他の拡張スロットから、前記新しい入出力アダプタによって占有された前記複数の拡張スロットのうちの選択された拡張スロットに、メモリを再割り振りする第６の手段と、
前記ユーザによるリブートの選択に応答して前記データ処理システムをリブートする第７の手段と、
を備える装置。
【請求項２】
前記ユーザ決定された入出力アダプタの一時的構成解除に応答する前記メモリの再割り振りは、アドレス・テーブルを更新することを含む、請求項１に記載の装置。
【請求項３】
請求項１または２に記載の装置を用いてデータ処理システムの複数の拡張スロットにメモリを割り振る方法であって、
前記データ処理システムの初期化の際に、
前記複数の拡張スロットの間に、メモリを固定的に前記第1の手段により割り振るステップと、
前記複数の拡張スロットのうちの１つに機能的に接続された入出力アダプタが、前記複数の拡張スロットの１つに割り振られたよりも多くのメモリ割り振りを要求することの決定に応じて、前記入出力アダプタによって占有された前記拡張スロットの１つが十分なメモリを割り振られるように、前記複数の拡張スロットの間に、第２の手段によりメモリを再割り振りするステップと、
実行時に、前記複数の拡張スロットのうちの選択された拡張スロットに入出力アダプタがホットプラグされたことに応じて、ホットプラグされた入出力アダプタによって要求されるメモリ量が、前記ホットプラグされた入出力アダプタによって占有された拡張スロットに割り振られたよりも多いか否かを第３の手段により決定するステップと、
前記複数の拡張スロットのうちの選択された拡張スロットに割り振られたよりも多くのメモリを要求する前記複数の拡張スロットのうちの選択された拡張スロットにホットプラグされた新しい入出力アダプタに応じて、前記複数の拡張スロットのうちの未占有の拡張スロットから、前記複数の拡張スロットのうちの選択された拡張スロットに、第４の手段によりメモリを再割り振りするステップと、
前記新しい入出力アダプタが、前記複数の拡張スロットのうちの未占有の拡張スロットから再割り振りできるよりも多くのメモリ割り振りを要求することの決定に応じて、前記複数の拡張スロットのうちの他の拡張スロットを占有する複数の古い入出力アダプタのうちユーザ決定された入出力アダプタを一時的に構成解除するかまたはリブートさせるかをユーザに対し照会し、前記ユーザから一時的に構成解除することの指示を受けて、前記ユーザ決定された入出力アダプタを第５の手段により一時的に構成解除するステップと、
前記ユーザ決定された入出力アダプタの一時的構成解除に応答して前記複数の拡張スロットのうちの他の拡張スロットから、前記新しい入出力アダプタによって占有された前記複数の拡張スロットのうちの選択された拡張スロットに、第６の手段によりメモリを再割り振りするステップと、
前記ユーザによるリブートの選択に応答して前記データ処理システムを第７の手段によりリブートするステップと、
を含む、方法。
【請求項４】
前記ユーザ決定された入出力アダプタの一時的構成解除に応答する前記メモリの再割り振りは、アドレス・テーブルを更新するステップを含む、請求項３に記載の方法。
【請求項５】
請求項１または２のいずれかに記載の装置を用いてデータ処理システムの複数の拡張スロットにメモリを割り振るために、データ処理システムに用いるコンピュータ読取り可能媒体に記憶されるコンピュータ・プログラムであって、前記コンピュータ・プログラムは、前記装置に対して、
前記データ処理システムの初期化の際に、
前記複数の拡張スロットの間に、メモリを固定的に前記第1の手段により割り振るステップと、
前記複数の拡張スロットのうちの１つに機能的に接続された入出力アダプタが、前記複数の拡張スロットの１つに割り振られたよりも多くのメモリ割り振りを要求することの決定に応じて、前記入出力アダプタによって占有された前記拡張スロットの１つが十分なメモリを割り振られるように、前記複数の拡張スロットの間に、第２の手段によりメモリを再割り振りするステップと、
実行時に、前記複数の拡張スロットのうちの選択された拡張スロットに入出力アダプタがホットプラグされたことに応じて、ホットプラグされた入出力アダプタによって要求されるメモリ量が、前記ホットプラグされた入出力アダプタによって占有された拡張スロットに割り振られたよりも多いか否かを第３の手段により決定するステップと、
前記複数の拡張スロットのうちの選択された拡張スロットに割り振られたよりも多くのメモリを要求する前記複数の拡張スロットのうちの選択された拡張スロットにホットプラグされた新しい入出力アダプタに応じて、前記複数の拡張スロットのうちの未占有の拡張スロットから、前記複数の拡張スロットのうちの選択された拡張スロットに、第４の手段によりメモリを再割り振りするステップと、
前記新しい入出力アダプタが、前記複数の拡張スロットのうちの未占有の拡張スロットから再割り振りできるよりも多くのメモリ割り振りを要求することの決定に応じて、前記複数の拡張スロットのうちの他の拡張スロットを占有する複数の古い入出力アダプタのうちユーザ決定された入出力アダプタを一時的に構成解除するかまたはリブートさせるかをユーザに対し照会し、前記ユーザから一時的に構成解除することの指示を受けて、前記ユーザ決定された入出力アダプタを第５の手段により一時的に構成解除するステップと、
前記ユーザ決定された入出力アダプタの一時的構成解除に応答して前記複数の拡張スロットのうちの他の拡張スロットから、前記新しい入出力アダプタによって占有された前記複数の拡張スロットのうちの選択された拡張スロットに、第６の手段によりメモリを再割り振りするステップと、
前記ユーザによるリブートの選択に応答して前記データ処理システムを第７の手段によりリブートするステップと、
を実行させる、コンピュータ・プログラム。
【請求項６】
前記ユーザ決定された入出力アダプタの一時的構成解除に応答する前記メモリの再割り振りは、アドレス・テーブルを更新するステップを含む、請求項５に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、改良されたデータ処理システム、特に、Ｉ／Ｏデバイスのためのメモリ・マッピングの方法に関する。
【０００２】
【従来の技術】
ＰＣＩ  Ｉ／Ｏデバイスは、システム・メモリにマップされることが必要なカード・メモリおよびレジスタ空間を有している。メモリ空間を割り当てるには、２つの方法がある。第１の方法は、動的割り振りと呼ばれるものである。この動的割り振りでは、システムは、すべてのＰＣＩバスを“ウォーク（ｗａｌｋ）”して、各デバイスを照会して、デバイスがどれだけのメモリ空間を必要としているかを決定して、必要に応じて各デバイスにメモリを割り当てる。第２の方法は、データ処理システムが、スロット毎またはＰＣＩホスト・ブリッジ毎に利用できる一組のメモリ空間量を有する場合の固定的な方法である。
【０００３】
【発明が解決しようとする課題】
例えばＲＳ／６０００サーバ系のような種々のドロワ（ｄｒａｗｅｒ）に配置される多くのＰＣＩホスト・ブリッジ（ＰＨＢ）が存在するシステムにおいて、動的割り振りが行われるとき、動的割り振りについて問題が発生する。ＲＳ／６０００サーバ系は、International Business Machines Corporation（Armonk, New York）から販売されている一連の製品である。ＲＳ／６０００サーバ系では、３２個以上のドロワが存在し、各ドロワは、３〜６個のＰＨＢを有することができる。ホットプラグ（ｈｏｔｐｌｕｇｇｉｎｇ）動作が実行されるときに、アダプタが付加され、あるいはアダプタが追加のメモリ空間を必要とする他のアダプタで置き換えられるならば、動的割り振りの方法に対して、また、問題が発生する。
【０００４】
固定メモリ空間についての問題は、固定メモリ空間が非常に固定的であることである。固定メモリ空間は、今日のデバイス、および計画されるデバイスに対して働く。しかし、将来は常に予測不可能であり、固定メモリ空間構成を打ち破る予測不可能なデバイスが将来開発されるであろう。したがって、固定メモリ空間構成に関係した障害を克服するメモリ・マッピング、および多くのＰＣＩホスト・ブリッジを有するシステムに関係した問題の克服に対するフレキシブルな方法が必要とされる。
【０００５】
【課題を解決するための手段】
本発明は、データ処理システムの複数の拡張スロットにメモリを割り振る方法，システム，および装置を提供する。一実施例では、データ処理システムの初期化の際に、ファームウェアが、複数の拡張スロットの間に、メモリを固定的に割り振る。複数の拡張スロットのうちの１つに機能的に接続された入出力アダプタが以前に割り振られたよりも多くのメモリ割り振りを要求することの決定に応じて、ファームウェアが、入出力アダプタによって占有された拡張スロットの１つが十分なメモリを割り振られるように、複数の拡張スロットの間に、メモリを再割り振りする。実行時に、入出力アダプタが、データ処理システムにホットプラグされ、入出力アダプタが挿入されるスロットに割り振られたよりも多くのメモリを要求するならば、ファームウェアは、まず、未占有の拡張スロットから、次に、必要ならば、占有された拡張スロットのうちの選択された拡張スロットから、メモリを再割り振りして、データ処理システム内のすべての入出力アダプタが、正確かつ最適に機能するのに十分なメモリを割り振られるようにする。
【０００６】
【発明の実施の形態】
図１には、本発明を実現できるデータ処理システムのブロック図を示す。データ処理システム１００は、システム・バス１０６に接続された複数のプロセッサ１０１，１０２，１０３，１０４を含む対称マルチプロセッサ（ＳＭＰ）システムとすることができる。例えば、データ処理システム１００は、ネットワーク内にサーバとして実現されるＩＢＭ  ＲＳ／６０００（International Business Machines Corporationの製品である）とすることができる。あるいはまた、シングルプロセッサ・システムを、用いることができる。また、システム・バス１０６には、メモリ・コントローラ／キャッシュ１０８が接続される。このメモリ・コントローラ／キャッシュ１０８は、複数のローカル・メモリ１６０〜１６３へのインタフェースを与える。Ｉ／Ｏバス・ブリッジ１１０は、システム・バス１０６に接続され、Ｉ／Ｏバス１１２へのインタフェースを与える。メモリ・コントローラ／キャッシュ１０８およびＩ／Ｏバス・ブリッジ１１０は、図示のように一体化することができる。例えば、拡張対話式エグゼクティブ（ＡＩＸ）オペレーティング・システム（International Business Machines Corporationの製品がある）のようなオペレーティング・システムを、データ処理システム１００上で実行することができる。
【０００７】
Ｉ／Ｏバス１１２に接続された周辺コンポーネント相互接続（ＰＣＩ）ホスト・ブリッジ１１４は、ＰＣＩローカル・バス１１５へのインタフェースを与える。多数の入出力アダプタ１２０〜１２１を、ＰＣＩ−ＰＣＩブリッジ１１６〜１１７の各々およびＰＣＩバス１１８〜１１９の各々を経て、ＰＣＩバス１１５に接続することができる。典型的なＰＣＩバス実装は、４個のＩ／Ｏアダプタと８個のＩ／Ｏアダプタとの間をサポートする（すなわち、アドイン・コネクタのための拡張スロット）。各Ｉ／Ｏアダプタ１２０〜１２１は、データ処理システム１００と、例えば他のネットワーク・コンピュータ（データ処理システム１００に対してクライアントである）のような入出力デバイスとの間のインタフェースを与える。
【０００８】
追加のＰＣＩホスト・ブリッジ１２２は、追加のＰＣＩバス１２３に対するインタフェースを与える。ＰＣＩバス１２３は、複数のＰＣＩ−ＰＣＩブリッジ１２４〜１２５に接続される。これらブリッジは、ＰＣＩバス１２６〜１２７の各々によって、ＰＣＩ  Ｉ／Ｏアダプタ１２８〜１２９の各々に、順次接続される。したがって、例えばモデムまたはネットワーク・アダプタのような追加のＩ／Ｏデバイスを、ＰＣＩ  Ｉ／Ｏアダプタ１２８〜１２９の各々によって、サポートすることができる。このようにして、データ処理システム１００は、複数のネットワーク・コンピュータへの接続を可能にする。ＰＣＩ−ＰＣＩブリッジ１１６〜１１７，１２４〜１２５，１４２〜１４３，１３２の各々は、単一のＩ／Ｏアダプタに接続される。
【０００９】
メモリ・マップ・グラフィックス・アダプタ１４８を、図示のように、ＰＣＩホスト・ブリッジ１４０、ＰＣＩ−ＰＣＩブリッジ１４２、ＰＣＩバス１４１，１４４を経て、Ｉ／Ｏバス１１２に接続することができる。ハードディスク１５０を、また、図示のように、ＰＣＩホスト・ブリッジ１４０、ＰＣＩ−ＰＣＩブリッジ１４３、ＰＣＩバス１４１，１４５を経て、Ｉ／Ｏバス１１２に接続することができる。
【００１０】
ＰＣＩホスト・ブリッジ１３０は、ＰＣＩバス１３１をＩ／Ｏバス１１２へ接続するためのインタフェースを与える。ＰＣＩバス１３１は、ＰＣＩホスト・ブリッジ１３０を、サービス・プロセッサ・メールボックス・インタフェースおよびＩＳＡバス・アクセス・パススルー・ロジック１９４と、ＰＣＩ−ＰＣＩブリッジ１３２とに接続する。ＩＳＡバス・アクセス・パススルー・ロジック１９４は、予定されたＰＣＩアクセスを、ＰＣＩ／ＩＳＡブリッジ１９３に送る。ＮＶ−ＲＡＭストレージは、ＩＳＡバス１９６に接続される。サービス・プロセッサ１３５は、ローカルＰＣＩバス１９５を経て、サービス・プロセッサ・メールボックス・インタフェース１９４に接続される。
【００１１】
サービス・プロセッサ１３５は、また、複数のＪＴＡＧ／Ｉ2 Ｃバス１３４を経て、プロセッサ１０１〜１０４に接続される。ＪＴＡＧ／Ｉ2 Ｃバス１３４は、ＪＴＡＧ／スキャン・バス（ＩＥＥＥ１１４９．１参照）とＰｈｉｌｌｉｐｓＩ2 Ｃバスとの組合わせである。しかし、あるいはまた、ＪＴＡＧ／Ｉ2 Ｃバス１３４を、Ｐｈｉｌｌｉｐｓ  Ｉ2 Ｃバスのみ、またはＪＴＡＧ／スキャン・バスのみで、置き換えることもできる。ホスト・プロセッサ１０１，１０２，１０３，１０４のすべてのＳＰ−ＡＴＴＮ信号は、サービス・プロセッサの割込み入力信号に、共に接続される。サービス・プロセッサ１３５は、自身のローカル・メモリ１９１を有し、ハードウェアＯＰパネル１９０をアクセスする。サービス・プロセッサ１３５は、データ処理システム１００内のすべての監視項目に関係した誤り情報を保存しおよび報告する働きをする。サービス・プロセッサ１３５は、また、誤りおよび定められたしきい値の種類に応じて、動作を開始する。
【００１２】
当業者は、図１に示されたハードウェアを変更し得ることを理解するであろう。例えば、光ディスク・ドライブなどのような他の周辺デバイスを、図示のハードウェアに加えて、あるいは置き換えて用いることもできる。図示の例は、本発明に対して、アーキテクチャ的な制限を課することを意味するものではない。
【００１３】
図２に、ＰＨＢ下のスロットのメモリ・マップを調整する装置を示すブロック図を、本発明に従って示す。装置２００は、図１のデータ処理システム１００のようなデータ処理システム内に、実装することができる。装置２００は、ＰＣＩ−ＰＣＩブリッジ２３０〜２４２を経て接続された、複数のＰＨＢ２０６〜２０９下の複数のスロット２１０〜２２１に対する、アドレス・テーブル２０１内のメモリ割り振りを調整するファームウェアを含んでいる。
【００１４】
ファームウェア２０２は、例えば、ＮＶＲＡＭ１９２に格納された１組の命令として、実装することができ、図１のサービス・プロセッサ１３５内で実行できる。アドレス・テーブルは、例えば図１に示されるメモリ１９１またはＮＶＲＡＭ１９２のような、不揮発性メモリに格納することができる。ＰＨＢ２０６〜２０９は、図１のＰＣＩホスト・ブリッジ１１４，１２２，１３０，１４０として実装することができる。ＰＣＩ−ＰＣＩブリッジ２３０〜２４２は、例えば、図１のＰＣＩ−ＰＣＩブリッジ１１６〜１１７，１２４〜１２５，１３２，１４２〜１４３のうちのいずれか１つとして、実装することができる。スロット２１０〜２２１は、拡張スロットである。この拡張スロットでは、例えばＰＣＩ  Ｉ／Ｏアダプタ１２０〜１２１，１２８〜１２９，１３６のようなＩ／Ｏアダプタと、グラフィックス・アダプタ１４８と、ハードディスク・アダプタ１４９とを、データ処理システムへの接続のためにプラグインすることができる。
【００１５】
データ処理システム１００は、最初の構成で各スロット２１０〜２２１にメモリ空間を固定的に割り振るために、ハイブリッド手法を用いている。したがって、データ処理システムのブートアップの際、ファームウェア２０２は、利用できるメモリを各ドロワ２０３，２０４に固定的に割り振って、所定のメモリ量を、各ドロワ２０３，２０４に割り振る。各ドロワ２０３，２０４に割り振られたメモリ量を、特定の実装に対する開発者の必要性に応じて、等しくする、あるいは等しくしないことができる。次に、各ドロワに割り振られたメモリは、ファームウェア２０２によって、各ドロワ２０３，２０４内のＰＨＢ２０６〜２０９間に、さらに割り振られる。次に、ファームウェア２０２は、ＰＨＢ２０６〜２０９の各々に割り当てられて接続されたスロット２０１〜２２１の各々に、ＰＨＢ２０６〜２０９の各々に割り振られたメモリをさらに割り振る。
【００１６】
利用できるメモリが、個々のスロット２１０〜２２１間に割り振られた後に、ファームウェア２０２は、各スロット２０１〜２２１に接続されたＩ／Ｏアダプタをチェックして、Ｉ／Ｏアダプタが、それが接続されているスロットに割り振られたよりも多くのメモリを必要とするか否かを決定する。特定のＩ／Ｏアダプタが、より多くのメモリを必要とするならば、ファームウェア２０２は、特定のＰＨＢ２０６〜２０９に割り振られたメモリを再割り振りする。この場合に、より多くのメモリを必要とするＩ／Ｏアダプタは、Ｉ／Ｏアダプタがより多くのメモリを必要とするスロットが、Ｉ／Ｏアダプタを満足させるに十分なメモリが割り振られるように接続される。Ｉ／Ｏアダプタがより多くのメモリを必要とする特定のＰＨＢ下の他のスロットは、調整されて、これら他のスロットの各々が、異なるメモリ量を割り当てられて、ＰＨＢに割り振られたすべてのメモリが、各Ｉ／Ｏアダプタが適切な実行のために割り振られるべき十分なメモリを有するように、各スロットに割り当てられるようにする。スロット２１０〜２２１のうちの適切なスロットを調整するためには、ファームウェア２０２は、スロット２１０〜２２１のうちの影響を受ける各スロットに関係するＰＣＩ−ＰＣＩブリッジ２３０〜２４２を再プログラムする。
【００１７】
他のスロットおよび調整されたスロットを再割り当てする際に、ファームウェア２０２は、未使用メモリの利用できる量を、スロット間に一様に拡張するように注意することを必要とする。これは、ホットプラグに対する最小量の問題を生じないようにするために行われる。例えば、ファームウェア２０２が、７スロット間に分配するために５１２ＭＢを有し、１つのアダプタが１２８ＭＢを必要とし、他のアダプタが８ＭＢ以下を必要とするならば、ファームウェア２０２は、第１のスロットに１２８ＭＢを割り当て、他のスロットのいくつかに８ＭＢのみ割り当てるのに対して、他の６スロットに各々６４ＭＢを割り当てることを必要とする。これは、将来、カードがホットプラグ・アウトされて、３２ＭＢを必要とするカードで置き換えられるかもしれないからである。したがって基本的には、ファームウェア２０２は、必要性に適合し、同時に最大のフレキシビリティを与えることが必要となる。
【００１８】
次に、ファームウェア２０２は、アドレス・テーブル２０１をリセットして、ファームウェア２０２が各ドロワ２０３〜２０４，各ＰＨＢ２０６〜２０９，各スロット２１０〜２２１に割り当てたメモリの割り振りを反映させる。このようにして、ブートアップの完了時に、ファームウェア２０２は、すべての利用可能なメモリを、ドロワ２０３と２０４との間に割り当てる。次に、各ドロワ２０３，２０４に割り振られたメモリは、各ドロワ２０３，２０４内の複数のＰＨＢ２０６〜２０９間にさらに割り振られ、各ＰＨＢ２０６〜２０９に割り振られたメモリは、ＰＨＢ２０６〜２０９下の各スロット２１０〜２２１にさらに割り振られて、スロット２１０〜２２１に接続された各Ｉ／Ｏアダプタが、正確に実行するのに十分な割り振られたメモリを有するようにする。
【００１９】
実行中の後の時点で、スロット２１０〜２２１のうちの１つにおけるＩ／Ｏアダプタが、ホットプラグ動作時に、スロット２１０〜２２１のうちの前記１つに以前に割り振られた以上に、多くのメモリが割り振られることを要求する新しいＩ／Ｏアダプタで置き換えられると、ファームウェア２０２は、未占有のスロットに割り振られたメモリを採用して、新しいＩ／Ｏアダプタのスロットに割り振るためのアルゴリズムを用いる。このことが、Ｉ／Ｏアダプタに対して十分なメモリを与えないならば、ファームウェア２０２は、アドレス再割り当てを実行するために、どのＩ／Ｏアダプタを一時的に“取りはずし（ｂｒｏｕｇｈｔ  ｄｏｗｎ）”できるかを決定するために、ホットプラグ動作によって影響を受けるＰＨＢ２０６〜２０９のうちの特定のＰＨＢにどのアダプタが接続されるかを決定することを、ユーザに照合する。ファームウェア２０２は、あるいはまた、再構成をリブートするオプションをユーザに与える。ユーザは、これらの両方を行ってはならない。ユーザは、リブートしファームウェアにすべてをリセットさせるか、またはユーザは、ファームウェアに、特定のアダプタを取りはずして、再調整させるかである。数個のＩ／Ｏアダプタを取りはずすよりはむしろリブートする１つの理由は、次のようなものである。すなわち、アプリケーションは、数個のカードのみが再調整のために取りはずされるので、停止させた後再スタートすることが必要とされるすべての依存性アプリケーションを決定しようとする管理者の故に、リブートよりも長くかかって終了し得る。非常に多くのアプリケーションが、それぞれ停止されることを、再調整は要求するからである。次に、ファームウェア２０２は、ＰＣＩ−ＰＣＩブリッジ設定と、アドレス割り当てに対するアドレス・テーブル２０１の使用とを調整することによって、スロットを再プログラムして、新しいＩ／Ｏアダプタと、再プログラムされた他のＩ／Ｏアダプタとが、Ｉ／Ｏアダプタが正確かつ最適に実行することができるように割り振られた十分なメモリを有するようにする。一時的に“取りはずされた（ｔａｋｅｎ  ｄｏｗｎ）”アダプタは、次に、再使用可能にされる。
【００２０】
当業者は、図２に示されたハードウェアを変更できることがわかる。例えば、図２に示されたよりも多くのドロワおよびＰＨＢを用いることができる。多くの実装では、データ処理システムは、３２個以上のドロワを有し、各ドロワは３〜６個のＰＨＢを含む。したがって、図示の例は、本発明に対し、アーキテクチャ的な制限を課すことを意味しない。
【００２１】
本発明の理解を助けるために、以下の例を考察する。データ処理システムは、ＰＨＢに対するメモリの固定的な割り振りに基づいて得られる１ＧＢ（すなわち、１０２４ＭＢ）を有するシステム内に、１つのＰＨＢ下に１０スロットを含むものと仮定する。各スロットは、自身のＰＣＩ−ＰＣＩブリッジの後の自身のバスであるので、メモリ空間は、スロットずつに分割される。したがって、この方法では、ファームウェアは、６スロットの各々に１２８ＭＢを割り当て、６４ＭＢを他の４スロットの各々に割り当てる。ファームウェアが、１２８ＭＢより多いメモリを要求するアダプタに遭遇すると、ファームウェアは、ＰＨＢ下の他の９スロットを調整するアルゴリズムに従う必要がある。ファームウェアは、これを次のようにして行う。すなわち、ＰＣＩ−ＰＣＩブリッジを再プログラムして、アドレスを割り当てるために用いるアドレス・テーブルをリセットする。
【００２２】
後に、２５６ＭＢを要求するアダプタが、１２８ＭＢまたは６４ＭＢが割り振られたスロットのうちの１つにホットプラグされるならば、未使用のスロットに割り振られたメモリが、新しいアダプタを含むスロットに割り振られる。これが十分でないならば、ユーザによって選択された他のスロットが再プログラムされ、アドレス・テーブルはリセットされて、新しいアダプタが、正確かつ最適に実行するのに利用できる十分なメモリを有するようにする。
【００２３】
図３に、ブート時にデータ処理システム内のＩ／Ｏ拡張スロットにメモリを割り当てる本発明の方法の一例を表すフローチャートを示す。まず初めに、ファームウェアは、データ処理システム内の各ドロワ間に、利用可能なメモリを固定的に割り当てる（ステップ３０２）。次に、ファームウェアは、各ドロワの割り振られたメモリを、ドロワ内の各ＰＨＢ間に、固定的に割り当てる（ステップ３０４）。次に、ファームウェアは、各ＰＨＢの割り振られたメモリを、ＰＨＢのアダプタ・スロットの各々の間に、固定的に割り当てる（ステップ３０６）。
【００２４】
次に、ファームウェアは、各ドロワ用の各ＰＨＢに対する各アダプタによって要求されるメモリ量を決定し（ステップ３０８）、１つ以上のアダプタが、そのアダプタのスロットに割り振られたよりも多くのメモリを必要とするか否かを決定する（ステップ３１０）。アダプタが、アダプタの対応スロットに割り振られたよりも多くのメモリを必要としないならば、プロセスは終了する。しかし、１つ以上のアダプタが、割り振られたよりも多くのメモリを必要とするならば、ファームウェアは、影響を受けるアダプタが接続されるＰＨＢ下のすべてのアダプタ・スロットに対して、各アダプタが割り振られた十分なメモリを有するように、メモリ割り振りを再計算する（ステップ３１２）。このようにして、初期化プロセスの終了後、各アダプタ・スロットは、適切かつ最適に機能するに十分な割り振られたメモリを有する。
【００２５】
図４に、実行時にアダプタがデータ処理システムにホットプラグされた後、拡張スロットにメモリを再割り振りする本発明の方法の一例を表すフローチャートを示す。Ｉ／Ｏアダプタを置き換えるために、または以前に占有されていないスロットにホットプラグされる追加のＩ／Ｏアダプタとして、新しいＩ／Ｏアダプタが拡張スロットにホットプラグされた後に、ファームウェアは、新しいホットプラグされたアダプタによって必要とされるメモリ量を決定する（ステップ４０２）。次に、ファームウェアは、新しいホットプラグされたアダプタによって必要とされるメモリ量が、ホットプラグされたアダプタが設けられたスロットに、以前に割り振られたよりも多いか否かを決定する（ステップ４０４）。メモリ要求が、スロットに割り振られたメモリ量より少ないか、または同じであるならば、プロセスは終了する。ホットプラグされたアダプタのメモリ要求が、スロットに割り振られたメモリ量より多いと、ファームウェアは、未占有のスロット（もし、あれば）に割り振られたメモリ空間を採用し、このメモリ空間を、新しいホットプラグされたアダプタを含むスロットに割り当て（ステップ４０６）、アドレス・テーブルを更新して、新しい割り振りを反映させる。
【００２６】
次に、ファームウェアは、新しいホットプラグされたアダプタを含むスロットが、十分なメモリに割り振られて、新しいアダプタをサービスするか否かを決定する（ステップ４０８）。新しいアダプタに十分なメモリが割り振られたならば、プロセスは終了する。未占有のスロットからメモリを採用した後に、アダプタが、割り振られたよりも多くのメモリを依然として必要とするならば、ファームウェアは、データ処理システムをアドレス再割り当ての終了時にリブートするべきか否かについて、あるいはいくつかのアダプタを使用不可にすべきか否かについて、ユーザに照会する（ステップ４１０）。いくつかのアダプタを、使用不可にすべきならば、アドレス再割り当てに対して一時的に使用不可にできるアダプタの識別について、ユーザに照会される。次に、ファームウェアは、ユーザによって指示されたスロットについて、ＰＣＩ−ＰＣＩブリッジを使用不可にし、および再プログラムして、新しいアダプタに十分なメモリを依然として解放しながら、指示されたスロットが、割り振られた十分なメモリを有するようにし、次に、新しいアダプタを再プログラムして、新しく割り振られたメモリを反映する（ステップ４１２）。次に、アドレス・テーブルは、ファームウェアによってリセットされ、メモリの新しい割り振りを反映する。
【００２７】
取りはずされることを必要とする非常に多くのアダプタが存在するならば、あるいは、アダプタのいくつかを取りはずすことによって、非常に多くのアプリケーションの実行が妨げられるならば、ユーザは、どのアダプタを一時的に取りはずすべきかを決定するよりはむしろ、全データ処理システムを簡単にリブートすることを望むことができる。したがって、ユーザがリブートを選択するならば、データ処理システムはリブートされ（ステップ４１４）、メモリの再割り振りは、ブート・プロセス中に実行される。
【００２８】
本発明を、完全に機能するデータ処理システムによって説明したが、当業者は、本発明のプロセスは、命令のコンピュータ読取り可能媒体の形で、および種々の形態で配布することができ、また、本発明は、配布を実施するために実際に用いられる信号保持媒体の特定種類にかかわらず、同様に適用できることがわかることに留意することは重要である。コンピュータ読取り媒体の例は、フロピーディスク（登録商標）、ハードディスク・ドライブ，ＲＡＭ，ＣＤ−ＲＯＭと、デジタルおよびアナログ通信リンクのような伝送タイプ媒体を含む。
【００２９】
本発明の記述は、説明のためになされたものであって、本発明を網羅し、または開示された形態に制限することを意図していない。多くの変形および変更は、当業者には明らかであろう。実施例は、本発明の原理および実際的な応用を最善に説明するために、および、意図される特定の使用に適する種々の変形を有する種々の例について、当業者に本発明を理解させるために、選択し、説明した。
【００３０】
まとめとして、本発明の構成に関して以下の事項を開示する。
（１）データ処理システムの複数の拡張スロットにメモリを割り振る方法であって、
前記データ処理システムの初期化の際に、
前記複数の拡張スロットの間に、メモリを固定的に割り振るステップと、
前記複数の拡張スロットのうちの１つに機能的に接続された入出力アダプタが、前記複数の拡張スロットの１つに割り振られたよりも多くのメモリ割り振りを要求することの決定に応じて、前記入出力アダプタによって占有された前記拡張スロットの１つが十分なメモリを割り振られるように、前記複数の拡張スロットの間に、メモリを再割り振りするステップと、
を含む方法。
（２）実行時に、前記複数の拡張スロットのうちの選択された拡張スロットに割り振られたよりも多くのメモリを要求する前記複数の拡張スロットのうちの選択された拡張スロットにホットプラグされた新しい入出力アダプタに応じて、前記複数の拡張スロットのうちの未占有の拡張スロットから、前記複数の拡張スロットのうちの選択された拡張スロットに、メモリを再割り振りするステップをさらに含む、上記（１）に記載の方法。
（３）前記メモリの再割り振りは、アドレス・テーブルを更新するステップを含む、上記（２）に記載の方法。
（４）前記新しい入出力アダプタが、前記複数の拡張スロットのうちの未占有の拡張スロットから再割り振りできるよりも多くのメモリ割り振りを要求することの決定に応じて、前記複数の拡張スロットのうちの他の拡張スロットを占有する複数の古い入出力アダプタのうちの適切な入出力アダプタを一時的に構成解除するステップと、
前記複数の拡張スロットのうちの他の拡張スロットから、前記新しい入出力アダプタによって占有された前記複数の拡張スロットのうちの選択された拡張スロットに、メモリを再割り振りするステップと、
を含む上記（２）に記載の方法。
（５）前記適切な入出力アダプタを、ユーザによって決定する、上記（４）に記載の方法。
（６）前記データ処理システムをリブートするステップをさらに含む、上記（４）に記載の方法。
（７）実行時に、データ処理システムの複数の拡張スロットにメモリを割り振りする方法であって、
ホットプラグされた入出力アダプタによって要求されるメモリ量を決定するステップと、
前記ホットプラグされた入出力アダプタによって占有された拡張スロットに割り振られたよりも多くのメモリが要求されることの決定に応じて、未占有の拡張スロットに割り当てられたメモリを、前記ホットプラグされた入出力アダプタによって占有された拡張スロットに再割り振りするステップと、
を含む方法。
（８）前記ホットプラグされた入出力アダプタが、前記未占有の拡張スロットから再割り振りできるよりも多くのメモリ割り振りを要求することの決定に応じて、前記占有された拡張スロットのうちの古い入出力アダプタのうちの適切な入出力アダプタを一時的に構成解除するステップと、
前記古い入出力アダプタのうちの適切な入出力アダプタに対応する占有された拡張スロットから、前記ホットプラグされた入出力アダプタによって占有された拡張スロットに、メモリを再割り振りするステップと、
をさらに含む上記（７）に記載の方法。
（９）前記データ処理システムをリブートするステップをさらに含む、上記（８）に記載の方法。
（１０）データ処理システムの複数の拡張スロットにメモリを割り振るために、データ処理システムに用いるコンピュータ読取り可能媒体におけるコンピュータ・プログラムであって、
前記データ処理システムの初期化の際に、
前記複数の拡張スロットの間に、メモリを固定的に割り振る第１の命令と、
前記複数の拡張スロットのうちの１つに機能的に接続された入出力アダプタが、前記複数の拡張スロットの１つに割り振られたよりも多くのメモリ割り振りを要求することの決定に応じて、前記入出力アダプタによって占有された前記拡張スロットの１つが十分なメモリを割り振られるように、前記複数の拡張スロットの間に、メモリを再割り振りする第２の命令と、
を含むコンピュータ・プログラム。
（１１）実行時に、前記複数の拡張スロットのうちの選択された拡張スロットに割り振られたよりも多くのメモリを要求する前記複数の拡張スロットのうちの選択された拡張スロットにホットプラグされた新しい入出力アダプタに応じて、前記複数の拡張スロットのうちの未占有の拡張スロットから、前記複数の拡張スロットのうちの選択された拡張スロットに、メモリを再割り振りする第３の命令をさらに含む、上記（１０）に記載のコンピュータ・プログラム。
（１２）記メモリの再割り振りは、アドレス・テーブルを更新するステップを含む、上記（１１）に記載のコンピュータ・プログラム。
（１３）前記新しい入出力アダプタが、前記複数の拡張スロットのうちの未占有の拡張スロットから再割り振りできるよりも多くのメモリ割り振りを要求することの決定に応じて、前記複数の拡張スロットのうちの他の拡張スロットを占有する複数の古い入出力アダプタのうちの適切な入出力アダプタを一時的に構成解除する第４の命令と、
前記複数の拡張スロットのうちの他の拡張スロットから、前記新しい入出力アダプタによって占有された前記複数の拡張スロットのうちの選択された拡張スロットに、メモリを再割り振りする第５の命令と、
を含む上記（１１）に記載のコンピュータ・プログラム。
（１４）前記適切な入出力アダプタを、ユーザによって決定する、上記（１３）に記載のコンピュータ・プログラム。
（１５）前記データ処理システムをリブートする第６の命令をさらに含む、上記（１３）に記載のコンピュータ・プログラム。
（１６）実行時に、データ処理システムの複数の拡張スロットにメモリを割り振るために、データ処理システムに用いるコンピュータ読取り可能媒体におけるコンピュータ・プログラムであって、
ホットプラグされた入出力アダプタによって要求されるメモリ量を決定する第１の命令と、
前記ホットプラグされた入出力アダプタによって占有された拡張スロットに割り振られたよりも多くのメモリが要求されることの決定に応じて、未占有の拡張スロットに割り当てられたメモリを、前記ホットプラグされた入出力アダプタによって占有された拡張スロットに再割り振りする第２の命令と、
を含むコンピュータ・プログラム。
（１７）前記ホットプラグされた入出力アダプタが、前記未占有の拡張スロットから再割り振りできるよりも多くのメモリ割り振りを要求することの決定に応じて、前記占有された拡張スロットのうちの古い入出力アダプタのうちの適切な入出力アダプタを一時的に構成解除する第３の命令と、
前記古い入出力アダプタのうちの適切な入出力アダプタに相当する占有された拡張スロットから、前記ホットプラグされた入出力アダプタによって占有された拡張スロットに、メモリを再割り振りする第４の命令と、
をさらに含む上記（１０）に記載のコンピュータ・プログラム。
（１８）前記データ処理システムをリブートする第５の命令をさらに含む、上記（１７）に記載のコンピュータ・プログラム。
（１９）データ処理システムの複数の拡張スロットにメモリを割り振る装置であって、
前記データ処理システムの初期化の際に、
前記複数の拡張スロットの間に、メモリを固定的に割り振る第１の手段と、
前記複数の拡張スロットのうちの１つに機能的に接続された入出力アダプタが、前記複数の拡張スロットの１つに割り振られたよりも多くのメモリ割り振りを要求することの決定に応じて、前記入出力アダプタによって占有された前記拡張スロットの１つが十分なメモリを割り振られるように、前記複数の拡張スロットの間に、メモリを再割り振りする第２の手段と、
を備える装置。
（２０）実行時に、前記複数の拡張スロットのうちの選択された拡張スロットに割り振られたよりも多くのメモリを要求する前記複数の拡張スロットのうちの選択された拡張スロットにホットプラグされた新しい入出力アダプタに応じて、前記複数の拡張スロットのうちの未占有の拡張スロットから、前記複数の拡張スロットのうちの選択された拡張スロットに、メモリを再割り振りする第３の手段をさらに備える、上記（１９）に記載の装置。
（２１）前記メモリの再割り振りは、アドレス・テーブルを更新することを含む、上記（２０）に記載の装置。
（２２）前記新しい入出力アダプタが、前記複数の拡張スロットのうちの未占有の拡張スロットから再割り振りできるよりも多くのメモリ割り振りを要求することの決定に応じて、前記複数の拡張スロットのうちの他の拡張スロットを占有する複数の古い入出力アダプタのうちの適切な入出力アダプタを一時的に構成解除する第４の手段と、
前記複数の拡張スロットのうちの他の拡張スロットから、前記新しい入出力アダプタによって占有された前記複数の拡張スロットのうちの選択された拡張スロットに、メモリを再割り振りする第５の手段と、
を備える上記（２０）に記載の装置。
（２３）前記適切な入出力アダプタは、ユーザによって決定される、上記（２３）に記載の装置。
（２４）前記データ処理システムをリブートする第６の手段をさらに備える、上記（２２）に記載の装置。
（２５）実行時に、データ処理システムの複数の拡張スロットにメモリを割り振りする装置であって、
ホットプラグされた入出力アダプタによって要求されるメモリ量を決定する第１の手段と、
前記ホットプラグされた入出力アダプタによって占有された拡張スロットに割り振られたよりも多くのメモリが要求されることの決定に応じて、未占有の拡張スロットに割り当てられたメモリを、前記ホットプラグされた入出力アダプタによって占有された拡張スロットに再割り振りする第２の手段と、
を備える装置。
（２６）前記ホットプラグされた入出力アダプタが、前記未占有の拡張スロットから再割り振りできるよりも多くのメモリ割り振りを要求することの決定に応じて、前記占有された拡張スロットのうちの古い入出力アダプタのうちの適切な入出力アダプタを一時的に構成解除する第３の手段と、
前記古い入出力アダプタのうちの適切な入出力アダプタに対応する占有された拡張スロットから、前記ホットプラグされた入出力アダプタによって占有された拡張スロットに、メモリを再割り振りする第４の手段と、
をさらに備える上記（２５）に記載の装置。
（２７）前記データ処理システムをリブートする第５の手段をさらに備える、上記（２６）に記載の装置。
（２８）データ処理システムの拡張スロットにメモリを割り振る方法であって、
前記データ処理システムの初期化の際に、
ホスト・ブリッジに割り当てられたメモリを、複数の拡張スロットの間に、所定に割り振るステップと、
前記複数の拡張スロットのうちの１つに接続された入出力アダプタが、前記複数拡張スロットの１つに割り振られたよりも多くのメモリ割り振りを要求することの決定に応じて、前記入出力アダプタのメモリ要求が満たされるように、前記複数の拡張スロットの間に、メモリを再割り振りするステップと、
を含む方法。
（２９）実行時に、新しい入出力アダプタが、前記複数の拡張スロットのうちの１つにホットプラグされたことの決定に応じて、
前記新しい入出力アダプタのメモリ要求を決定するステップと、
前記メモリ要求が、前記新しい入出力アダプタによって占有された前記複数の拡張スロットのうちの１つに割り振られたメモリを超えることの決定に応じて、前記複数の拡張スロットのうちの未占有の拡張スロットに割り振られたメモリのうちのいくつかを、前記新しい入出力アダプタによって占有された前記複数のうちの１つに、メモリを再割り振りするステップとを、
さらに含む、上記（２８）に記載の方法。
（３０）前記複数の拡張スロットのうちの未占有の拡張スロットから、メモリを再割り振りした後に、前記新しい入出力アダプタによって、多くのメモリが要求されることの決定に応じて、前記複数の拡張スロットのうちの他の拡張スロットに接続された複数の古い入出力アダプタのうちのどれを、使用不可にできるかを決定するステップと、
前記複数の古い入出力アダプタのうちの決定された入出力アダプタを使用不可にするステップと、
前記複数の古い入出力アダプタのうちの決定された入出力アダプタによって占有された前記複数の拡張スロットのうちの拡張スロットから、前記新しい入出力アダプタによって占有された前記複数の拡張スロットのうちの１つに、いくつかのメモリを再割り振りして、前記新しい入出力アダプタによって占有された前記複数の拡張スロットのうちの１つに、十分なメモリが割り振られ、前記複数の古い入出力アダプタのうちの前記決定された入出力アダプタによって占有された前記複数の拡張スロットのうちの拡張スロットに、十分なメモリが割り振られるようにするステップと、
をさらに含む上記（２９）に記載の方法。
【図面の簡単な説明】
【図１】本発明を実施できるデータ処理システムのブロック図を示す。
【図２】本発明による、ＰＨＢ下のスロットのメモリ・マップを調整する装置を示すブロック図である。
【図３】本発明にしたがって、ブート時にデータ処理システム内のＩ／Ｏ拡張スロットにメモリを割り当てる方法の一例を示すフローチャートである。
【図４】本発明にしたがって、ラン時にデータ処理システムにアダプタがホットプラグされた後に、拡張スロットにメモリを再割り振りする方法の一例を示すフローチャートである。
【符号の説明】
１００  データ処理システム
１０１，１０２，１０３，１０４  プロセッサ
１０６  システム・バス
１０８  メモリ・コントローラ／キャッシュ
１１０  Ｉ／Ｏバス・ブリッジ
１１２  Ｉ／Ｏバス
１１４，１２２，１３０，１４０  ＰＣＩホスト・ブリッジ
１１６，１１７，１２４，１２５，１３２，１４２，１４３  ＰＣＩ−ＰＣＩブリッジ
１１８，１１９，１２６，１２７，１３３，１４４，１４５  ＰＣＩバス
１２０，１２１，１２８，１２９  入出力アダプタ
１３４  ＪＴＡＧ／Ｉ2 Ｃバス
１３５  サービス・プロセッサ
１５０  ハードディスク
１６０〜１６３  ローカル・メモリ
１９０  ハードウェアＯＰパネル
１９３  ＰＣＩ／ＩＳＡブリッジ
１９４  サービス・プロセッサ・メールボックス・インタフェースおよびＩＳＡバス・アクセス・パススルー・ロジック
１９５  ローカルＰＣＩバス
１９６  ＩＳＡバス
２００  装置
２０１  アドレス・テーブル
２０２  ファームウェア
２０６〜２０９  ＰＨＢ
２１０〜２２１  スロット
２３０〜２４２  ＰＣＩ−ＰＣＩブリッジ
【図１】
0004272368.tif 000002
【図２】
0004272368.tif 000003
【図３】
0004272368.tif 000004
【図４】
0004272368.tif 000005