(57)【特許請求の範囲】
【請求項１】
マルチノード・コンピュータ・システムのメモリマップト入出力（ＭＭＩＯ）装置をサポートする方法であって、前記マルチノード・コンピュータ・システムは、複数のＭＭＩＯアドレス空間範囲レジスタを有する相互接続と、複数の中央処理装置（ＣＰＵ）ノードと、それぞれが少なくとも１つのＭＭＩＯ装置を含む複数の入出力（ＩＯ）ノードと、を備え、前記複数のＭＭＩＯアドレス空間範囲レジスタが、ＭＭＩＯアドレス空間における前記複数のＩ／Ｏノードの先頭アドレスおよびサイズを設定し、前記サイズは粒度の整数倍で表され、前記方法は、
マルチノード・コンピュータ・システムによって使用されるＭＭＩＯアドレス空間の総量を決定し、
前記決定されたＭＭＩＯアドレス空間の総量と前記複数のＭＭＩＯアドレス空間範囲レジスタの数に基づいてＭＭＩＯアドレス空間の前記粒度を決定し、さらに
決定された前記粒度に基づいて前記相互接続の範囲レジスタを設定する、
各ステップを含む、マルチノード・コンピュータ・システムのＭＭＩＯ装置をサポートする方法。
【請求項２】
ＭＭＩＯ装置をサポートするために、決定された粒度に基づいて前記ＩＯノードのＭＭＩＯレジスタを設定するステップを更に含む、請求項１に記載の方法。
【請求項３】
ＭＭＩＯ装置をサポートするために、決定された粒度に基づいて前記ＣＰＵノードのＭＭＩＯレジスタを設定するステップを更に含む、請求項２に記載の方法。
【請求項４】
ＭＭＩＯアドレス空間の総量を決定するステップは、
各ＩＯノードに含まれる各ＭＭＩＯ装置をスキャンし、
ＭＭＩＯ装置が必要とするＭＭＩＯアドレス空間量を決定し、さらに
コンピュータシステムに含まれる全ＭＭＩＯ装置が必要とするＭＭＩＯアドレス空間量を生成する、各ステップを含む、請求項１に記載の方法。
【請求項５】
ＭＭＩＯアドレス空間の粒度を決定するステップは、
予め生成した任意の粒度値に基づいて範囲レジスタ数を生成し、
前記生成された範囲レジスタ数をシステムによって提供される範囲レジスタの最大数と比較し、さらに
前記比較結果に基づいて、ＭＭＩＯアドレス空間の適切な粒度を生成する、各ステップを含む、請求項１に記載の方法。
【請求項６】
複数のメモリマップト入出力（ＭＭＩＯ）アドレス空間範囲レジスタを含む相互接続と、
各々が少なくとも１つのＭＭＩＯ装置を含む複数の入出力（ＩＯ）ノード、および
少なくとも１つのＣＰＵノードがＩＯノードの全ＭＭＩＯ装置をサポートするのに必要なＭＭＩＯアドレス空間の粒度を決定するように設定された、複数のＣＰＵノード、
を含み、前記複数のＭＭＩＯアドレス空間範囲レジスタが、ＭＭＩＯアドレス空間における前記複数のＩ／Ｏノードの先頭アドレスおよびサイズを設定し、前記サイズは前記粒度の整数倍で表されるコンピュータシステム。
【請求項７】
前記少なくとも１つのＣＰＵノードが、ＭＭＩＯ装置のメモリマッピングプロセスをサポートするために決定された粒度に基づいて、相互接続の前記ＭＭＩＯアドレス空間範囲レジスタを設定するようにプログラムされている、請求項６に記載のシステム。
【請求項８】
マルチノード・コンピュータ・システムのメモリマップト入出力（ＭＭＩＯ）装置のサポートを可能とするコンピュータプログラムを含むコンピュータ可読媒体であって、前記マルチノード・コンピュータ・システムは、複数のＭＭＩＯアドレス空間範囲レジスタを有する相互接続と、複数の中央処理装置（ＣＰＵ）ノードと、および各々が少なくとも１つのＭＭＩＯ装置を含む複数の入出力（ＩＯ）ノードとを含み、前記複数のＭＭＩＯアドレス空間範囲レジスタが、ＭＭＩＯアドレス空間における前記複数のＩ／Ｏノードの先頭アドレスおよびサイズを設定し、前記サイズは粒度の整数倍で表され、前記コンピュータプログラムは、複数のＣＰＵノードのうちの１つで実行された場合に、
マルチノード・コンピュータ・システムで使用されるＭＭＩＯアドレス空間の総量を決定し、
前記決定されたＭＭＩＯアドレス空間の総量とＭＭＩＯアドレス空間範囲レジスタの数に基づいてＭＭＩＯアドレス空間の粒度を決定し、
決定された粒度に基づいて相互接続の範囲レジスタを設定し、
ＭＭＩＯ装置をサポートするために決定された粒度に基づいてＩＯノードのＭＭＩＯレジスタを設定し、さらに
ＭＭＩＯ装置をサポートするために決定された粒度に基づいてＣＰＵノードのＭＭＩＯレジスタを設定する方法を実行する、コンピュータ可読媒体。
【請求項９】
複数のメモリマップト入出力（ＭＭＩＯ）アドレス空間範囲レジスタを有する相互接続と、
前記相互接続に接続され、各々が少なくとも１つのＭＭＩＯ装置を含む複数の入出力（ＩＯ）ノードと、
前記相互接続に接続される複数の中央処理装置（ＣＰＵ）ノードと、を有し、前記複数のＭＭＩＯアドレス空間範囲レジスタが、ＭＭＩＯアドレス空間における前記複数のＩ／Ｏノードの先頭アドレスおよびサイズを設定し、前記サイズは粒度の整数倍で表され、および
ＭＭＩＯアドレス空間範囲レジスタの数に基づいて、システムの全ＭＭＩＯ装置をサポートするのに必要なＭＭＩＯアドレス空間の粒度を決定する手段、とを有するコンピュータシステム。
【請求項１０】
マルチノード・コンピュータ・システムで使用されるＭＭＩＯアドレス空間の総量を決定する手段を更に有する、請求項９に記載のシステム。
【請求項１１】
決定された粒度に基づき、相互接続の範囲レジスタを設定する手段を更に有する、請求項１０に記載のシステム。
【請求項１２】
ＭＭＩＯ装置をサポートするために、決定された粒度に基づきＩＯノードのＭＭＩＯレジスタを設定する手段を更に有する、請求項１１に記載のシステム。
【請求項１３】
ＭＭＩＯ装置をサポートするために、決定された粒度に基づきＣＰＵノードのＭＭＩＯレジスタを設定する手段を更に有する、請求項１２に記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般に相互接続ベースのマルチノード・コンピュータ・システムに関し、特にマルチノード・コンピュータ・システム用のメモリマップト入出力（ＭＭＩＯ）処理へのサポートに関する。
【０００２】
【従来の技術】
マルチノード・コンピュータ・システムは、典型的には、複数の中央処理装置（ＣＰＵ）、複数の相互接続および複数の入出力（ＩＯ）ノードを有する。各ＩＯノードは多くのＩＯ装置、すなわちペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）、スモール・コンピュータ・システム・インタフェイス（ＳＣＳＩ）型装置等の従来の周辺装置、と接続される。このようなマルチノード・コンピュータ・システムでは、多数のＩＯ装置と同時に対話する等の複雑な電算処理タスクを行うことができる。
【０００３】
マルチノード・コンピュータ・システムにおいては、ＩＯ装置の幾つかもしくは全てがメモリマップトＩＯ（ＭＭＩＯ）装置でも良い。メモリマップトＩＯ（ＭＭＩＯ）装置は、ＩＯノードおよびＣＰＵノード内のアドレスおよびデータ線に、メモリ装置の接続に類似する方法で接続される。ＩＯノード又はＣＰＵノードがＩＯ装置に対応するアドレスを読み出す又は書き込む度に、ＩＯノード又はＣＰＵノードはＩＯ装置へ又はＩＯ装置からデータを転送できる。このようなメモリマップトＩＯ装置の利点の一つは、ＣＰＵノード内のプロセッサ又は相互接続が、まずデータをプロセッサに移動し、データを処理し、その後ＩＯ装置ポートへ戻して書き込むのではなく、メモリ空間にアクセスする１命令だけでＩＯ装置ポートへ送信されたデータを操作することができることにある。こうすることにより、メモリマップトＩＯ装置は、典型的にはプロセッサの電算処理負荷を低減させる。
【０００４】
【発明が解決しようとする課題】
これらのメモリマップトＩＯ装置をサポートするためには、ＣＰＵノードおよびＩＯノードを含むマルチノード・コンピュータ・システムの構成要素のメモリユニットに大量の物理アドレス空間を割り当てる必要がある。従来のマルチノード・コンピュータ・システムでは、相互接続は一定数のＭＭＩＯ範囲レジスタのみを有し、特定のＩＯノードに接続されるメモリマップトＩＯ装置へ割り当てるアドレス空間の範囲を指定している。このような相互接続レジスタは典型的には「ベース」型および「サイズ」型レジスタであり、相互接続と接続される各ＣＰＵノードおよびＩＯノードにベースおよびサイズの宣言を要求する。コンピュータシステムにｎ個のノードがある場合、ｎ個のベースレジスタおよびｎ個のサイズレジスタが必要となる。従って、従来の「ベース」および「サイズ」型レジスタはかなりのリソースを消費する。
【０００５】
更に、従来の「ベース」および「サイズ」型レジスタではマルチノード・コンピュータ・システムにおけるメモリマッピングの拡張性が得られない。ＩＯノードが多数のＩＯ装置と接続される場合、マルチノード・コンピュータ・システムに対するＭＭＩＯアドレス空間の要求は不特定多数となる。プログラマが各ＩＯ装置用に相互接続のベースおよびサイズを指定するために、一つ一つのＭＭＩＯ範囲レジスタを設定するのは非常に効率が悪い。
【０００６】
従って、相互接続ベースのマルチノード・コンピュータ・システムにおいて動的にＭＭＩＯ装置をサポートする効率的で拡張性のある方法およびシステムを提供することが望まれる。
【０００７】
【課題を解決するための手段】
本発明では、相互接続ベースのマルチノード・コンピュータ・システムにおいて、メモリマップトＩＯ（ＭＭＩＯ）装置を動的にサポートする方法およびシステムを提供する。特に、本方法およびシステムは、一定数の相互接続範囲レジスタで不特定多数のＭＭＩＯアドレス空間をサポートし、マルチノード・コンピュータ・システムで割り当てられたＭＭＩＯメモリ空間を効率的に使用するものである。ある実施態様では、この方法は（１）全ＭＭＩＯ装置に対するＭＭＩＯアドレス空間要求の総量を動的に決定し、（２）総ＭＭＩＯアドレス空間要求をサポートするためのＭＭＩＯ範囲粒度の最適値を算出し、（３）決定された粒度に基づいて、相互接続のＭＭＩＯレジスタをプログラミングし、そして、（４）決定された粒度に基づいて、ＩＯノード・コントローラおよびＣＰＵノード・コントローラをプログラミングする、各ステップを含む。
【０００８】
【発明の実施の形態】
図１は、複数の中央処理装置（ＣＰＵ）ノードコントローラ１０３（＃１、＃２、＃３、…、＃ｎ）、相互接続１０１および複数の入力／出力（ＩＯ）ノード１０７を典型的に含むマルチノード・コンピュータ・システム１００を示す。ＣＰＵコントローラ１０３およびＩＯノード１０２は全て相互接続１０１に接続される。典型的には、ＣＰＵノードコントローラ１０３は、拡張ポート１０５を介して相互接続１０１と接続される。マルチノード・コンピュータ・システム１００は、複数の相互接続１０１を含んでもよい。各相互接続１０１は、システム１００内の異なるノードおよび装置に命令およびデータを送信する。相互接続ベースのマルチノード・コンピュータ・システムの詳細は、当該分野ではよく知られており、本発明の明快な説明を分かりにくくしないために、ここでは説明しない。
【０００９】
各ＩＯノード１０２内には、典型的にはＩＯノードコントローラ１０７、ブリッジ１１３およびＩＯ装置１１１が含まれる。ＩＯ装置１１１の別々のグループが各ブリッジ１１３（例、ブリッジ＃１、＃２、…、＃ｂ）とそれぞれ接続され、ブリッジ１１３は対応するハブリンク１０９を介してＩＯノードコントローラ１０７に接続される。ＩＯ装置１１１は、ＰＣＩ、ＳＣＳＩ型装置のような従来の周辺装置である。ある実施態様では、ＩＯノード１０２は少なくとも一つのＭＭＩＯ装置を含む。ＩＯノード１０２には、システム１００の運用上の必要性に応じてＩＯマップトＩＯ装置も接続してもよい。
【００１０】
システム１００内の全ＭＭＩＯ装置１１１又は他のＭＭＩＯ構成要素をサポートするために、マルチノード・コンピュータ・システム１００は、システム全体に渡って分布し、全ての構成要素１０２、１０３から全体に渡ってアクセス可能なメモリユニットを含む。システム１００のこれらのメモリユニットによって供給されるアドレス空間を管理するために、相互接続１０１は、図１に示されるように、アドレス・デコーダ１０７および複数のＭＭＩＯアドレス範囲レジスタ１１５を含む。例えば、ＭＭＩＯ装置１１１に関しては、ＭＭＩＯアドレス範囲レジスタ１１５が、特定の機能およびポートに基づき、ＭＭＩＯ装置１１１に供給されるアドレス空間の範囲を格納する。
【００１１】
アドレス・デコーダ１０７は、典型的には、ＭＭＩＯ装置１１１とＣＰＵノードコントローラ１０３の間の対話が行われている間、各ＩＯノード１０２からの読み出し又は書き込み（ｒ／ｗ）要求を受け取る。メモリマッピング処理の一部として、アドレス・デコーダ１０７は、ＭＭＩＯアドレス範囲レジスタ１１５、例えば範囲レジスタ０、１、…、ｒ、に格納されるアドレス範囲情報に基づき、どのＭＭＩＯ装置１１１から要求がくるのか判断する。判断後、アドレス・デコーダ１０７は、メモリマッピング処理のために、対応するＣＰＵノードコントローラ１０３にその要求を指示できる。
【００１２】
本発明のある実施態様では、ＭＭＩＯ装置１１１が必要とするアドレス空間を管理するために、プログラム可能な範囲粒度値を供給する。プログラム可能な粒度により、システム１００は様々な構成要素１０１、１０２、１０３のメモリ空間をより効率的な方法で管理できる。例えば、相互接続１０１のプロセッサは、範囲レジスタ１１５に書き込み、低減したクロックサイクル時間を利用して新たに粒度を調整し、マルチノード・コンピュータ・システム１００の性能を向上させることができる。
【００１３】
図２は、本発明の実施態様による、ＭＭＩＯ範囲粒度の動的な決定方法を示すフローチャートである。この方法は、システム１００のブートストラップ・プロセッサ（ＢＳＰ）によって行うことが出来る。システム１００の初期設定プロセスの間、ＣＰＵノードコントローラ１０３の一つがＢＳＰに指定され、ＭＭＩＯ粒度決定プロセスを実行する。システム１００のＭＭＩＯ装置の数に何らかの変化があった場合、ＢＳＰは相互接続１０７、ＩＯノードコントローラ１０２および他のＢＳＰでないＣＰＵノードコントローラ１０３と通信し、拡張ポート１０５を介して、ここに述べるＭＭＩＯ粒度決定ルーチンを実行する。以下に詳述するように、ＢＳＰとして動作するＣＰＵノードコントローラ１０３は、ＩＯノード１０２をスキャンし、相互接続１０１内の範囲レジスタ１１５の粒度を決定し、ＩＯノード１０２およびＣＰＵノードコントローラ１０３のプログラムを組み、ＭＭＩＯ装置をサポートするように新たな粒度を調整する。
【００１４】
本発明の実施態様によると、ＢＳＰは全てのＩＯノード１０２に対して要求されるＭＭＩＯアドレス空間量の決定２０１を行う。図３を参照して更に説明されるように、各ＩＯノード内のメモリマップトＩＯ装置１１１用に要求されるＭＭＩＯアドレス空間量を集計し、システム１００全体のためのＭＭＩＯアドレス空間の総量を生成する。ＭＭＩＯアドレス空間の総量が決定された後、ＢＳＰはアドレス範囲レジスタ１１５によって管理されるＭＭＩＯアドレス空間の適切な粒度の算出２０３を行う。好ましい実施態様においては、粒度は、見いだされた全ＭＭＩＯアドレス空間要求をサポートするための、ＭＭＩＯ範囲粒度の最適値である。ＢＳＰ２０５は粒度に基づき、相互接続１０１内の範囲レジスタ１１５のプログラム２０５を行う。ＢＳＰは粒度に基づいてＩＯノード１０２によって使用されるＭＭＩＯレジスタのプログラム２０７、ＣＰＵノードコントローラ１０３内のＭＭＩＯレジスタのプログラム２０９を行う。
【００１５】
図３は、システム１００のＭＭＩＯアドレス空間の総量を決定する方法を示す。ある実施態様によれば、ＢＳＰはシステム１００の全ＭＭＩＯ装置１１１をスキャンし、各ＩＯノード１０２内の各ＭＭＩＯ装置１１１に必要なＭＭＩＯアドレス空間量を集計する。ＢＳＰは、この処理を開始するのに、まずいずれかのＩＯノード１０２ｉ、例えばｉ＝１、からスキャン３０１を行う。各ＩＯノード１０２ｉに関し、ＢＳＰはＩＯノードコントローラ１０７ｉに接続される各ハブリンク１０９ｌ（例えば、ｌ＝１、…、ｎ）のスキャン３０３を行う。各ハブリンク１０９ｌには、典型的にはＩＯノード１０２ｉ内のＩＯ装置１１１をＩＯノードコントローラ１０７ｉに接続するブリッジ１１３が存在する。ＩＯ装置１１１は対応するブリッジ１１３ｂ（ｂ＝１、…、ｍ）に接続される。したがって、各ハブリンク１０９に関し、ＢＳＰはＩＯノード１０２ｉ内の各ブリッジ１１３ｂのスキャン３０５を行い、その後ブリッジ１１３ｂに接続されている全ＭＭＩＯ装置に使用されるＭＭＩＯアドレス空間の決定３０７を行う。ＢＳＰは、各ＩＯノード１０２ｉのＭＭＩＯアドレス空間量の累積３０９を行う。一つのＩＯノード１０２ｉ内の全ての装置１１１をスキャンした後、ＢＳＰは次のＩＯノード１０２ｉのスキャン３１５を引き続き行い、最後のＩＯノード１０２ｉの最後のＭＭＩＯ装置に至るまで、ＭＭＩＯサイズを累積していく。具体的には、ＢＳＰは各ＩＯノード１０２ｉのＭＭＩＯアドレス空間サイズをＩＯ＿ＭＭＩＯｒｅｑＡｒｒａｙ［ｉ］の配列に格納する。
【００１６】
総ＭＭＩＯ量決定の例をアペンディックス１に示す。
【００１７】
図４は、相互接続１０１内の範囲レジスタ１１５によって規定されるＭＭＩＯアドレス空間の粒度決定方法を示す。全ＭＭＩＯ装置１１１が要求するＭＭＩＯアドレス空間の総量を決定する際、ＢＳＰは以下に述べるようなステップで全ＭＭＩＯアドレス空間の粒度を決定する。
【００１８】
ある実施態様によれば、ＢＳＰは可変のｇｒａｎｆｉｅｌｄを格納し、そのｇｒａｎｆｉｅｌｄの事前値を０に設定する４０１。以下に述べるように、可変のｇｒａｎｆｉｅｌｄの最大値は、システム１００のハードウエア性能に依存する。ＢＳＰは以下のようにＭＭＩＯアドレス空間の粒度サイズ（Ｇｒａｎ）を規定する。
Ｇｒａｎ＝１６メガバイトｘ２＾ｇｒａｎｆｉｅｌｄ        式（１）
【００１９】
ある具体例では、式（１）の１６メガバイトは、一つのＭＭＩＯ装置１１１に一般的に使用される最小アドレス空間サイズである。別の実施態様では、システム１００の実際の要求応じて、アドレス空間サイズは別の値が設定されてもよい。式（１）によって決定される粒度値Ｇｒａｎに基づいて、ＢＳＰはＭＭＩＯアドレス空間要求の総量を満足させるのに必要な範囲レジスタ数の算出４０５を行う。ある具体例では、各ＩＯノード１０２ｉに必要な範囲レジスタの数は、
範囲レジスタ数［ｉ］＝ＩＯ＿ＭＭＩＯｒｅｑＡｒｒａｙ［ｉ］／Ｇｒａｎ        式（２）
によって算出される。
【００２０】
同様に、全ＩＯノード１０２に必要な範囲レジスタの総数は各ＩＯノード１０２ｉに関する式（２）の結果を集計することによって得られる。範囲レジスタの総数は、その後、相互接続１０１によって現在供給されている範囲レジスタの最大数と比較される（４０７）。システム１００の最大性能を超える場合には、ＢＳＰは可変のｇｒａｎｆｉｅｌｄを１増やし４０９、式（１）に従って新たに粒度値を再計算する。新たな粒度値が生成された後、必要な範囲レジスタ数が相互接続１０１に提供される最大ハードウエア性能を超えなくなるまで、ステップ４０３から４０７が繰り返される。この結果、対応する粒度値（Ｇｒａｎ）は範囲サイズの好ましい粒度値となる。この粒度値は、その後、相互接続１０１、ＣＰＵコントローラ１０３およびＩＯノード１０２の関連するＭＭＩＯファームウエアのプログラムを組むのに使用される。
【００２１】
粒度決定プロセスの例をアペンディックス２に示す。
【００２２】
図２に戻ると、好ましい実施態様においては、ＢＳＰは始めにステップ２０３で導き出される粒度値に基づいて相互接続１０１内のＭＭＩＯ範囲レジスタのプログラムを作成する。一例を挙げると、相互接続１０１は、典型的には、特定のＩＯノード１０２ｉの特定のＭＭＩＯ装置１１１のメモリマッピングのための開始アドレスと、そのＭＭＩＯ装置１１１に割り当て得るＭＭＩＯアドレス空間の限度を指定するＭＭＩＯ範囲レジスタを含む。ステップ２０３で決定された粒度は、その後、ＭＭＩＯレジスタが各ＭＭＩＯ装置１１１の開始アドレスおよび対応するアドレス空間長を規定するために使用できる。
【００２３】
相互接続１０１内のＭＭＩＯ範囲レジスタのプログラミング例をアペンディックス３に示す。システム１００は複数の相互接続を含むことが可能であり、そのうちの幾つかはデフォルトでない相互接続であり得るため、ＢＳＰはシステム１００に含まれる全ての相互接続内のＭＭＩＯ範囲レジスタもプログラムできることに留意すべきである。
【００２４】
更に図２を参照すると、相互接続１０１内のＭＭＩＯレジスタをプログラムした後、ＢＳＰは決定された粒度値に基づき、各ＩＯノードコントローラ１０７ｉのＭＭＩＯレジスタのプログラムも行う。好ましい実施態様においては、各ＩＯノードコントローラ１０７ｉには、例えばＭＭＩＯアドレス空間の基準アドレスを指定するＭＭＩＯＢＬやメモリマッピングのためにＩＯノード１０２によって割り当てられたＭＭＩＯアドレス空間の限界を指定するＭＭＩＯＬＬのようなＭＭＩＯレジスタが存在する。これらのＭＭＩＯレジスタは、特定のハブリンク１０９ｌに接続される各々特定のＭＭＩＯ装置１１１に使用されるアドレス空間も規定できる。粒度値に基づき、ＢＳＰは各特定のＭＭＩＯ装置を個々にプログラミングする必要なしに、これらのＭＭＩＯレジスタを均一な方法で設定できる。決定された粒度により、各ＭＭＩＯ装置にメモリマッピングのために十分なアドレス空間を確実に割り当てられるようにする。
【００２５】
同様に、ＢＳＰはＣＰＵノードコントローラ１０３内のＭＭＩＯレジスタをプログラムできる。従来のＣＰＵノードコントローラ１０３も、メモリマッピングに使用されるアドレス空間の開始アドレスおよびサイズ限度を規定するＭＭＩＯレジスタを含む。粒度値は、全ＭＭＩＯ装置に使用されるＭＭＩＯアドレス空間の限度を提供する。従って、ＣＰＵノードコントローラ１０３はこの情報を使用して自身のＭＭＩＯレジスタを設定する。
【００２６】
ＩＯノードコントローラ１０７およびＣＰＵノードコントローラ１０３内のＭＭＩＯレジスタのプログラミング例をアペンディックス４に示す。
【００２７】
要約すると、本発明は、マルチノード・コンピュータ・システムのＭＭＩＯ装置に使用されるＭＭＩＯアドレス空間の動的な変化をサポートする方法およびシステムを提供する。本発明は、ＭＭＩＯアドレス空間総量の適切な粒度値を決定し、その粒度値を使用してコンピュータシステムの様々な構成要素内の対応するＭＭＩＯレジスタをプログラムする。このようにして、本発明ではＭＭＩＯ装置数の変化した場合に、特定のＭＭＩＯ装置用のＭＭＩＯレジスタを設定するという複雑で非効率な方法を避ける。更に、ＭＭＩＯアドレス空間の粒度を決定することにより、マルチノード・コンピュータ・システムのメモリの効率的な使用が可能となる。
【００２８】
（付記１）  マルチノード・コンピュータ・システムのメモリマップト入出力（ＭＭＩＯ）装置をサポートする方法であって、前記マルチノード・コンピュータ・システムは、複数のＭＭＩＯアドレス空間範囲レジスタを有する相互接続と、複数の中央処理装置（ＣＰＵ）ノードと、それぞれが少なくとも１つのＭＭＩＯ装置を含む複数の入出力（ＩＯ）ノード、とを備えるものにおいて、前記方法は、
マルチノード・コンピュータ・システムによって使用されるＭＭＩＯアドレス空間の総量を決定し、
ＭＭＩＯアドレス空間範囲レジスタの数に基づいてＭＭＩＯアドレス空間の粒度を決定し、さらに
決定された粒度に基づいて前記相互接続の範囲レジスタを設定する、
各ステップを含む、マルチノード・コンピュータ・システムのＭＭＩＯ装置をサポートする方法。
【００２９】
（付記２）  ＭＭＩＯ装置をサポートするために、決定された粒度に基づいて前記ＩＯノードを設定するステップを更に含む、付記１に記載の方法。
【００３０】
（付記３）  ＭＭＩＯ装置をサポートするために、決定された粒度に基づいて前記ＣＰＵノードを設定するステップを更に含む、付記２に記載の方法。
【００３１】
（付記４）  ＭＭＩＯアドレス空間の総量を決定するステップは、
各ＩＯノードに含まれる各ＭＭＩＯ装置をスキャンし、
ＭＭＩＯ装置が必要とするＭＭＩＯアドレス空間量を決定し、さらに
コンピュータシステムに含まれる全ＭＭＩＯ装置が必要とするＭＭＩＯアドレス空間量を生成する、各ステップを含む、付記１に記載の方法。
【００３２】
（付記５）  ＭＭＩＯアドレス空間の粒度を決定するステップは、
事前粒度値を生成し、
前記事前粒度値に基づいて範囲レジスタ数を生成し、
前記生成された範囲レジスタ数をシステムによって提供される範囲レジスタの最大数と比較し、さらに
範囲レジスタの最大数に基づいて、ＭＭＩＯアドレス空間の適切な粒度を生成する、各ステップを含む、付記１に記載の方法。
【００３３】
（付記６）  複数のメモリマップト入出力（ＭＭＩＯ）アドレス空間範囲レジスタを含む相互接続と、
各々が少なくとも１つのＭＭＩＯ装置を含む複数の入出力（ＩＯ）ノード、および
複数の中央処理装置（ＣＰＵ）ノードであって、少なくとも１つのＣＰＵノードがＩＯノードの全ＭＭＩＯ装置をサポートするのに必要なＭＭＩＯアドレス空間の粒度を決定するように設定されたもの、
を含む、コンピュータシステム。
【００３４】
（付記７）  前記少なくとも１つのＣＰＵノードが、ＭＭＩＯ装置のメモリマッピングプロセスをサポートするために決定された粒度に基づいて、相互接続の範囲レジスタをプログラムするよう設定されている、付記６に記載のシステム。
【００３５】
（付記８）  少なくとも１つのＣＰＵノードが、ＭＭＩＯ装置をサポートするために決定された粒度に基づいて、ＩＯノードをプログラムするよう設定されている、付記７に記載のシステム。
【００３６】
（付記９）  少なくとも１つのＣＰＵノードが、ＭＭＩＯ装置をサポートするために決定された粒度に基づいて、ＣＰＵノードをプログラムするよう設定されている、付記８に記載のシステム。
【００３７】
（付記１０）  マルチノード・コンピュータ・システムのメモリマップト入出力（ＭＭＩＯ）装置のサポートを可能とするコンピュータプログラムを含むコンピュータ可読媒体であって、前記マルチノード・コンピュータ・システムは、複数のＭＭＩＯアドレス空間範囲レジスタを有する相互接続と、複数の中央処理装置（ＣＰＵ）ノードと、および各々が少なくとも１つのＭＭＩＯ装置を含む複数の入出力（ＩＯ）ノードとを含み、前記コンピュータプログラムは、複数のＣＰＵノードのうちの１つで実行された場合に、
マルチノード・コンピュータ・システムで使用されるＭＭＩＯアドレス空間の総量を決定し、
ＭＭＩＯアドレス空間範囲レジスタの数に基づいてＭＭＩＯアドレス空間の粒度を決定し、
決定された粒度に基づいて相互接続の範囲レジスタを設定し、
ＭＭＩＯ装置をサポートするために決定された粒度に基づいてＩＯノードを設定し、さらに
ＭＭＩＯ装置をサポートするために決定された粒度に基づいてＣＰＵノードを設定する方法を実行する、コンピュータ可読媒体。
【００３８】
（付記１１）  複数のメモリマップト入出力（ＭＭＩＯ）アドレス空間範囲レジスタを有する相互接続と、
前記相互接続に接続され、各々が少なくとも１つのＭＭＩＯ装置を含む複数の入出力（ＩＯ）ノードと、
前記相互接続に接続される複数の中央処理装置（ＣＰＵ）ノードと、および
ＭＭＩＯアドレス空間範囲レジスタの数に基づいて、システムの全ＭＭＩＯ装置をサポートするのに必要なＭＭＩＯアドレス空間の粒度を決定する手段、とを有するコンピュータシステム。
【００３９】
（付記１２）  マルチノード・コンピュータ・システムで使用されるＭＭＩＯアドレス空間の総量を決定する手段を更に有する、付記１１に記載のシステム。
【００４０】
（付記１３）  決定された粒度に基づき、相互接続の範囲レジスタを設定する手段を更に有する、付記１２に記載のシステム。
【００４１】
（付記１４）  ＭＭＩＯ装置をサポートするために、決定された粒度に基づきＩＯノードを設定する手段を更に有する、付記１３に記載のシステム。
【００４２】
（付記１５）  ＭＭＩＯ装置をサポートするために、決定された粒度に基づきＣＰＵノードを設定する手段を更に有する、付記１４に記載のシステム。
【図面の簡単な説明】
【図１】本発明の実施態様による相互接続ベースのマルチノード・コンピュータ・システムを示す概略図。
【図２】本発明の実施態様によるＭＭＩＯアドレス空間要求をサポートする方法を示すフローチャート。
【図３】マルチモード・コンピュータ・システムのＭＭＩＯアドレス空間要求の総量を決定する方法を示すフローチャート。
【図４】本発明の実施態様による最適なＭＭＩＯ範囲粒度を決定する方法を示すフローチャート。
【符号の説明】
１００…マルチ・ノード・コンピュータ・システム
１０１…相互接続
１０２…ＩＯノード
１０３…ＣＰＵノードコントローラ
１０５…拡張ポート
１０７…ＩＯノード
１０９…ハブリンク
１１１…ＩＯ装置
１１３…ブリッジ
１１５…ＭＭＩＯアドレス範囲レジスタ
【図１】
0004338363.tif 000002
【図２】
0004338363.tif 000003
【図３】
0004338363.tif 000004
【図４】
0004338363.tif 000005