説明

パーティショニングされたデバイス間の通信

【課題】 デバイス間のパーティショニングを過度に弱めることなく、デバイス間で通信できるようにする。
【解決手段】 、本発明において、プロセッサの情報は、コンピュータシステムのコンポーネントに対応し、他のパーティションにとって正常にアクセス可能なレジスタのアドレスおよびサイズを規定するエントリを含む。レジスタは、アドレス領域を画定することができる。使用時には、プロセッサは、他のパーティションが、少なくとも1つのレジスタによって画定された少なくとも1つのアクセス可能なアドレス領域にアクセスすることを許可するように設定され、かつ、他のパーティションが、少なくとも1つのアクセス可能なアドレス領域以外のアドレス領域にアクセスすることを拒否するように設定される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パーティショニングされたデバイス間の通信に関する。
【背景技術】
【0002】
コンピュータおよび他のデータハンドリングシステムでは、システムの部分を互いにパーティショニングすることが時に望ましいことがある。
「パーティショニング」は、大規模システムを、完全には隔離されていないが、あるパーティションから別のパーティションへのアクセスが制限される部分に分割する機構を示す。
パーティショニングは、例えば、あるパーティションの機能不良が別のパーティションの働きを妨害する危険性を低減するのに使用することができる。
パーティショニングは、例えば、あるパーティションの悪意のあるアクティビティが他のパーティションを妨害し得る危険性を低減するのに使用することができる。
パーティショニングは、例えば、プログラマが他のパーティションの存在を無視することを可能にすることによって、プログラミングを簡単にするのに使用することができる。
【0003】
しかしながら、いくつかの目的のため、異なるパーティション同士が通信することが必要であるか、または、望ましい場合がある。
この場合、通信は、パーティショニングを過度に弱めることなく行うことができる。
【非特許文献1】http://www.acpi.info
【発明の開示】
【課題を解決するための手段】
【0004】
一実施の形態では、本発明は、システムファームウェア、情報オブジェクト、コンピュータ可読媒体、およびパーティショニング可能計算システムを提供する。
プロセッサの情報は、コンピュータシステムのコンポーネントに対応する。
一実施の形態では、情報は、他のパーティションにとって正常にアクセス可能なレジスタのアドレスおよびサイズを規定するエントリを含む。
レジスタは、アドレス領域を画定することができる。
使用時には、プロセッサは、他のパーティションが、少なくとも1つのレジスタによって画定された少なくとも1つのアクセス可能なアドレス領域にアクセスすることを許可するように設定され、かつ、他のパーティションが、少なくとも1つのアクセス可能なアドレス領域以外のアドレス領域にアクセスすることを拒否するように設定される。
【0005】
別の実施の形態では、この情報は、プロセッサにとって正常にアクセス可能であり、かつ、アドレス領域を画定することができる他のパーティションのレジスタのアドレスを規定するエントリを含む。
使用時には、プロセッサは、レジスタの少なくとも1つによって画定された、別のパーティションの少なくとも1つのアクセス可能なアドレス領域にアクセスすることを許可され、かつ、少なくとも1つのアクセス可能なアドレス領域以外のアドレス領域にアクセスすることを拒否される。
別の実施の形態では、この情報は、プロセッサを含んだあるパーティションに割り込みを送信することを許可された他のパーティション、および、他のパーティションがプロセッサを含んだ当該あるパーティションに送信することを許可された割り込みベクトルのうちの少なくとも1つを列挙するレジスタのアドレスおよびサイズを規定するエントリを含む。
【0006】
本発明を例示するために、図面が、本発明を具現することができる1つまたは2つ以上の形態を示す。
しかしながら、本発明は、図示した正確な形態に限定されるものではない。
【発明を実施するための最良の形態】
【0007】
最初に、図面のうち図1を参照して、本発明によるコンピュータシステムの一実施の形態は、複数のセルまたはパーティションを備える。
本実施の形態では、「セル」は、大規模コンピュータシステムの物理的な区画であり、通常、物理メモリを含んだアドレス空間を有する中央処理装置、ならびに、さまざまな周辺デバイスおよび補助デバイスを含む。
本実施の形態では、各セルは、1つまたは2つ以上のプロセッサを含む。
本実施の形態では、入力する通信は、主としてセルのレベルで制御される。
「パーティション」は、大規模コンピュータシステムの管理上の区画であり、この管理上の区画は、他のパーティションからほとんど独立して機能し、他のパーティションへのアクセスが制限される。
本実施の形態では、各パーティションは1つまたは2つ以上のセルを有することができる。
【0008】
図1には、2つのパーティション10および12が示されている。
各パーティションは、少なくとも1つのセル11、13をそれぞれ備える。
セル11は、少なくとも1つの中央処理装置(CPU)14、プロセッサインターフェース15、メモリコントローラ18、および割り込みハンドラ22を備え、セル13は、少なくとも1つの中央処理装置(CPU)16、プロセッサインターフェース17、メモリコントローラ20、および割り込みハンドラ24を備える。
これら2つのパーティションは、構造上、実質的に同一のものとすることができる。
2つのパーティションは、同じオペレーティングシステムを実行することができる。
一方、以下で説明するように、2つのパーティション10、12間の相互作用が非常に限られているので、それぞれが、説明する構造および方法を実施して使用することができるという条件で、2つのパーティションは、異なって構成することができ、かつ/または、異なるオペレーティングシステムを実行することができる。
【0009】
この実施の形態では、一方のパーティションから他方のパーティションへ送信される割り込みは、発信元CPU14、16から同じセルの「ローカルな」プロセッサインターフェース15、17へ渡される。
次に、プロセッサインターフェース15、17は、その割り込みを宛先セルの割り込みハンドラ24、22に渡す。
宛先セルの割り込みハンドラ24、22は、その割り込みを宛先CPU16、14に直接渡すことができる。
それ以外に、各プロセッサインターフェース15、17は、それ自身のセルのCPU14、16、メモリコントローラ18、20、および割り込みハンドラ22、24と通信し、他方のセル13、11のメモリコントローラ20、18と通信する。
プロセッサインターフェース15、17は、異なるパーティション10、12にまたがるデータリンクを介して任意の便利な方法で異なるパーティションと通信する。
【0010】
各セル11、13のメモリコントローラ18、20は、固定されたアドレスロケーションの少なくとも1対のアドレスレジスタ26、28および共有設定レジスタ38(一括して、「共有レジスタ」と呼ぶ)にアクセスする。
各1対のアドレスレジスタ26、28は、共有ウィンドウ30の上限アドレスおよび下限アドレスを収容する。
この共有ウィンドウ30は、他のパーティションにアクセス可能なアドレス領域であり、このアドレス領域は、通常、物理メモリの領域である。
共有設定レジスタ38は、メモリの読み出し要求を発信できる、システムのセルのリストを収容し、それら要求のいずれが、関連した共有ウィンドウ30の読み出しを許可されるかを示す。
簡略化するために、図1は、2つのパーティション10、12のそれぞれにおいて、1つのセル11、13、1つの共有ウィンドウ30、およびその関連した共有レジスタのみを示している。
しかしながら、この実施の形態では、数個のセルがあってもよく、また、各セルには数個の共有ウィンドウ30があってもよい。
この場合、各セルは、異なる共有ウィンドウ30を使用して、他の異なるセルまたはパーティションと通信することができる。
以下で説明するように、必ずしも、共有ウィンドウ30とセルまたはパーティションとの1対1の対応があるとは限らない。
【0011】
この実施の形態では、各CPU14、16で実行されるオペレーティングシステムは、システムの共有レジスタ26、28、38のすべてのロケーションをファームウェア39から取得する。
この実施の形態では、各CPU14、16には、通信が必要となる場合があるそれぞれの他方のセルの完全な1組の共有レジスタ26、28、38のベースアドレスまたは開始アドレスが提供される。
さらに、各CPU14、16は、それぞれの他方のセルのすべての共有レジスタがローカルセルの共有レジスタと同じ配置を有すると仮定することによって、それぞれの他方のセルのすべての共有レジスタを検出することができる。
代替的に、CPU14、16には、そのCPUが通信できるそれぞれの他方のセルの共有レジスタのレイアウトを含んだデータファイルを提供することもできる。
代替的に、対称的なシステムでは、共有レジスタ26、28、38は、それらの各パーティション内で対称的なロケーションとすることもできる。
さらに、各CPUには、各パーティションのアドレス範囲(通例、他の目的で必要となる)、および、パーティションベースアドレスから共有レジスタ26、28、38のロケーションへのオフセットのみを提供する必要がある。
この実施の形態では、パーティションが2つ以上のCPUを含む場合に、この情報は、パーティションの単一のロケーションに保持される。
この単一のロケーションは、パーティションのすべてのCPUが当該ロケーションからその情報にアクセスできるロケーションである。
非対称的なシステムでは、中央スーパバイズプロセッサ(図示せず)が、レジスタロケーションの信頼性のあるリストを保持して分配する役割を有することがある。
【0012】
コンピュータシステムの通常動作では、各メモリコントローラ18、20は、ほぼ常に、他のパーティションのCPU(「リモート」CPU)が、そのメモリコントローラ自身のパーティションの共有レジスタ26、28、38を読み出すことを許可することができる。
代替的に、メモリコントローラ18、20は、リモートCPUが、関連した共有ウィンドウ30へのアクセスを許可されたことを共有設定レジスタ38が示す場合にのみ、その特定のリモートCPUがレジスタを読み出すことを許可することができる。
メモリコントローラ18、20は、あるパーティションのCPUが別のパーティションのレジスタの内容を変更することを許可しない。
【0013】
メモリコントローラ18、20は、リモートCPUが、そのメモリコントローラ自身のパーティションの共有ウィンドウ30の内容を読み出すことを許可することができる。
ウィンドウ30に関連した共有設定レジスタ38は、どのリモートパーティションがそのウィンドウの内容の読み出しを許可されているかを特定する。
共有ウィンドウのローカルCPU14、16のみが、その共有ウィンドウ30の内容を変更することができる。
メモリコントローラ18、20は、リモートCPUがアクセスを認可された共有ウィンドウと、共有レジスタ26、28、38とを除いて、その特定のリモートCPUがそのアドレス空間のどの部分にアクセスすることも許可しない。
読み出し要求は、その要求が、共有ウィンドウ30内のアドレス範囲を指定するものであり、かつ、その共有ウィンドウの読み出しを認可されたリモートCPUから発信されたものである場合にのみ許可される。
【0014】
図1に示す実施の形態では、各共有ウィンドウ30は、ウィンドウヘッダ40、あるパーティションから別のパーティションへ転送されるデータ用の送信キューまたはデータ領域32、およびプロデューサポインタ34を含む。
プロデューサポインタ34は、データ領域32の位置を示し、この位置まで、ローカルプロセッサは有効なデータを書き込んでいる。
また、各共有ウィンドウ30は、コンシューマポインタ36およびリモートチャネル識別情報(ID)37も含む。
【0015】
異なるパーティションの2つのCPU14、16間の通信は、各CPUがそれ自身のパーティションの共有ウィンドウ30の送信キュー32にメッセージを置いて、他方のCPUがそれらのメッセージを読み出すことを許可することによって可能となる。
さらに、各CPUは、プロデューサポインタ34を使用して、新たに書き込まれたデータを示し、コンシューマポインタ36を使用して、他方のCPUが提供したデータをどれだけ読み出したかを示す。
CPUは、他方のCPUのパーティションのデータを変更できないので、それ自身の共有ウィンドウ30のコンシューマポインタ36を使用して、リモート送信キュー32をどれだけ読み出したかを信号で伝える。
各CPU14、16は、送信側CPUが、読み出しを待っている新たなデータを当該送信側CPUのパーティションの送信キュー32に置くと、他方のCPUの割り込みハンドラ22、24に割り込みを送信して他方のCPUに注意を喚起することができる。
【0016】
1対の共有ウィンドウ30が、特定の1対のCPU間の対話に割り当てられると、この実施の形態では、各CPUは、それ自身の共有ウィンドウ30のリモートチャネルID37に、他方のCPUの識別情報に関係した情報を表示する(すなわち、書き込む)。
この情報は、パーティション番号、ノード番号またはセル番号、およびセル内のウィンドウ番号のうちの1つまたは2つ以上を含むことができる。
これは、該当するリモートCPUへの確認として機能し、また、その共有ウィンドウの読み出し許可を受けることができる他のあらゆるCPUに対する、そのウィンドウがその特定の対話に割り当てられたことの通告として機能する。
【0017】
次に図2を参照して、コンピュータシステムの第2の実施の形態では、共有ウィンドウ30をいくつかのチャネル30iに分割することができる。
各チャネルは、送信キューまたはデータ領域32a、32b、…、32i、…、32nと、プロデューサポインタ34a、34b、…、34i、…、34nと、コンシューマポインタ36a、36b、…、36i、…、36nと、チャネルヘッダ40a、40b、…、40i、…、40nとを有する。
ウィンドウ内のチャネル数は、特定の事例の状況に従って決定することができる。
チャネル数は、一定として、システムのすべての共有ウィンドウについて同一とすることもできるし、ウィンドウごとに決定することもできる。
チャネル数がウィンドウごとに決定される場合、その情報は、そのウィンドウを使用する2つのプロセッサによってキャッシュすることもできるし、共有ウィンドウ30内のウィンドウヘッダ40に記録することもできるが、任意の特定のチャネルに割り当てることはできない。
【0018】
共有ウィンドウ30内の個々のチャネルは、単一のプロセッサ14、16で実行される異なるオペレーティングシステムもしくは他の実質的に独立したプロセスに割り当てることができ、かつ/または、単一のセル内の異なるプロセッサに割り当てることができる。
これによって、異なるプロセスが単一のチャネルを共有資源として使用することを可能にするのに必要なオーバーヘッドが省かれると同時に、同じ1対のプロセッサ間でいくつかの個別の共有ウィンドウを有するという複雑さが回避される。
さらに、1対の共有ウィンドウ30内で数対のチャネルを使用して通信を行う手順は、数対の共有ウィンドウを使用して通信を行う上述したプロセスとほぼ同様である。
代替的に、個別のチャネルを使用して、1対のプロセッサ14、16間のデータ転送の容量および柔軟性を高めることもできる。
【0019】
代替的に、ローカルプロセッサと、異なるリモートプロセッサとの間の通信に単一のウィンドウ30内の異なるチャネルを割り当てることができる。
これには、共有レジスタ26、28、38の組の個数を削減する利点がある。
単一のウィンドウを使用して2つ以上のリモートプロセッサと通信することの不利な点としては、プライバシーの低減がある。
その理由は、共有ウィンドウ30へのアクセスがウィンドウごとに制御され、その結果、リモートプロセッサは、他のプロセッサのチャネルの通信を含めて、同じウィンドウのすべての通信を読み出すことができるからである。
しかしながら、リモートプロセッサは、共有ウィンドウの内容を変更できないので、他の2つのプロセッサ間の通信を変更することも、混乱させることもできない。
【0020】
この実施の形態では、共有レジスタ26、28、38は、メモリコントローラ18、20のファームウェア39で規定されたアドレスに配置され、最初は、上限レジスタ26および下限レジスタ28が有効なウィンドウ30を特定しない状態に設定される。
そして、共有設定レジスタ38は、最初は、他のパーティションのその「ウィンドウ」へのアクセスが許可されないステータスに設定される。
【0021】
各セル11、13は、1組のデバイスまたはオブジェクトのコピーを有する。
この1組のデバイスまたはオブジェクトは、この実施の形態では、ACPI(アドバンストコンフィギュレーションアンドパワーインターフェース)ファームウェアデバイスまたはオブジェクトである。
セルのCPUがブートアップする際に、このACPIファームウェアデバイスまたはオブジェクトから、構成情報がロードされる。
第1のACPIデバイスは、そのCPU自身のメモリコントローラ18、20内の共有レジスタ26、28、38のアドレスを提供する。
共有レジスタが連続したブロックを形成し、それらレジスタの個数、サイズ、および順序が別に規定される場合には、そのブロックの単一の開始アドレスで十分な場合がある。
しかしながら、この実施の形態では、各レジスタが明示的に規定され、各ウィンドウ30の1組の3つの共有レジスタは、ACPIデバイスとして定義される。
ソースコードで表すと、ACPIデバイスの定義の一般的なものは次のように書かれている。
【0022】


Device(GSMx) // 共有ウィンドウx

{

Name(_UID, x)

Name(_HID, EISAID("HWP1001"))

Name(_CRS, ResourceTemplate()

{

Register(SystemMemory, 64, 0, 0xfed1280) // SHARE_LOWER

Register(SystemMemory, 64, 0, 0xfed1300) // SHARE_UPPER

Register(SystemMemory, 64, 0, 0xfed1200) // SHARE_SET

} ) // _CRS

}

【0023】
文字xは、ウィンドウの識別番号を表し、セル内で一意でなければならない。
各レジスタの開始アドレスである一般的な16進アドレスは、もちろん、各ウィンドウ30につき異なる。
この例では、16個の連続したSHARE_SETレジスタと、16個の連続したSHARE_LOWERレジスタと、16個の連続したSHARE_UPPERレジスタとが、連続したレジスタのブロックを形成することができる。
ただし、他の配置も可能である。
ACPI階層では、GSMxデバイスは、自身が属する「ノード」またはセルのすぐ下に割り当てられる。
【0024】
次に図3を参照して、この実施の形態では、第1のパーティション10のCPU14が、第2のパーティション12と情報を交換したい場合に、ステップ102において、第1のパーティション10は、共有ウィンドウ30のメモリ空間を割り当て、ウィンドウヘッダ40を「静的な」情報でセットアップする。
この静的な情報は、第2のパーティションと一致する必要はなく、ウィンドウが存在する間は変わらない。
ウィンドウに単一のチャネルが存在する場合に、「静的な」ヘッダは、リモートチャネルID37を含むことができる。
この段階で、第1のパーティションは、共有ウィンドウ30を共に使用することになるリモートパーティション12のその情報を知っている。
共有ウィンドウ30用に割り当てられた物理メモリは、第1のパーティション10内の任意の利用可能なメモリとすることができる。
一方、第1のパーティション10が2つ以上のセルを有する場合、メモリコントローラ18が共有ウィンドウ30の完全な制御を有するように、共有ウィンドウ30は、制御側CPU14およびメモリコントローラ18のセル内に完全に含まれるメモリに存在することが好ましい。
2つ以上のセルにわたってインターリーブされるメモリが使用される場合、そのメモリの制御は、通常、関与するセルのメモリコントローラ18間で共有され、完全性を確保することはあまり容易ではない。
【0025】
ステップ104において、第1のセル11は、ウィンドウ制御割り込み用の割り込みベクトルを割り当て、その割り込みを受信した時にどの動作を取るべきかを決定する。
この動作には、セル11が2つ以上のプロセッサを含む場合に、どのプロセッサ14にベクトルを送信するかを指定することが含まれ得る。
本実施の形態では、ウィンドウ制御割り込みは、指定されたプロセッサに送信された、指定されたベクトルを有する。
セルの異なるプロセッサに送信された同じベクトル、または、同じプロセッサに送信された異なるベクトルは、同じウィンドウ制御割り込みとしては認識されず、独立して割り当てられて機能を有することができる。
次に、第1のパーティション10は、割り込みベクトルと、ターゲットプロセッサのアドレスとをウィンドウヘッダ40に表示する。
ウィンドウヘッダ40では、そのウィンドウ30にアクセスすることが許可された他のどのセルも、それら割り込みベクトルおよびアドレスを読み出すことができる。
【0026】
割り込みベクトルおよびターゲットプロセッサの識別情報は、第1のセル11の割り込みハンドラ22の適切なレジスタにロードされる。
第2のACPIデバイスは、それらレジスタのアドレスを提供する。
ソースコードで表すと、ACPIデバイスの定義は次のように書かれている。
【0027】


Device(GSMI)

{

Name(_UID, 0x0)

Name(_HID, EISAID("HWP1002")

Name(_CRS, ResourceTemplate()

{

Register(SystemMemory, 64, 0, 0xfed0f10) // INT_TARGET_ENABLE

Register(SystemMemory, 64, 0, 0xfed01c8) // INT_VECTOR_ ENABLE_0

Register(SystemMemory, 64, 0, 0xfed01d0) // INT_VECTOR_ ENABLE_1

Register(SystemMemory, 64, 0, 0xfed01d8) // INT_VECTOR_ ENABLE_2

Register(SystemMemory, 64, 0, 0xfed01e0) // INT_VECTOR_ ENABLE_3

Register(SystemMemory, 64, 0, 0xfed0138) // INT_ERROR_ VECTOR

} ) // _CRS

}

【0028】
INT_TARGET_ENABLEは、パーティション10の外部からの割り込みベクトルを転送できるセル11内のプロセッサを列挙するレジスタ42である。
4つのINT_VECTOR_ENABLEレジスタ44は、セル内のプロセッサに転送することができる割り込みベクトルを列挙する。
INT_TARGET_ENABLEレジスタ42およびINT_VECTOR_ENABLEレジスタ44の双方がその割り込みを許可可能と示している場合にのみ、入力する割り込みは、ターゲットプロセッサに転送されることになる。
それらのレジスタのそれぞれは、1ビットが、可能な各ターゲットまたはベクトルに割り当てられる。
そのビットは、入力する割り込みを許可するか、または、拒否するかに設定することができる。
この例では、割り込みベクトルは8ビット長であるので、4つのINT_VECTOR_ENABLEレジスタ44が存在する。
したがって、256個の可能な割り込みベクトルが存在し、256個のレジスタビットが必要となる。
ただし、この例のレジスタ定義は、1つのレジスタにつき64ビットに限られる。
INT_ERROR_VECTORレジスタ46はエラーベクトルを含む。
このエラーベクトルは、以下で説明するように、INT_TARGET_ENABLEレジスタ42によって許可されるが、INT_VECTOR_ENABLEレジスタ44によって拒否される割り込みのベクトルの代わりに使用することができる。
ACPI階層では、GSMIデバイスは、自身が属する「ノード」またはセルのすぐ下に割り当てられる。
【0029】
共有ウィンドウ30のウィンドウ制御割り込みが割り当てられると、セル11は、割り当てられた割り込みベクトルを、割り当てられたターゲットプロセッサに転送することを可能にする適切なビットが転送を可能にするように依然として設定されていない場合に、それらのビットを設定する。
【0030】
第1のパーティションは、この段階で、共有ウィンドウ30内にチャネルを規定することができる。
次に、ステップ106において、ウィンドウのチャネルごとに、第1のプロセッサ14は、チャネルヘッダ40iのアドレスを与えるポインタをウィンドウヘッダ40に配置する。
次に、ステップ108において、第1のプロセッサ14は、「静的な」情報をチャネルヘッダに記入する。
この実施の形態では、各CPU14、16には、該当するパーティションのローカルセルとシステムの他のセルとの間の通信用の数対のチャネルのデータベースが提供される。
したがって、各チャネルの静的なデータは、特定のリモートパーティションの特定のチャネルを特定するデータを含むことができる。
代替的に、通信が実際に確立されるまで、チャネル対をオープンしておくこともできる。
【0031】
ステップ110において、該当するチャネルのデータ領域または送信キュー32i用に、メモリが割り当てられ、その送信キューの下限および上限を指定するポインタがチャネルヘッダに書き込まれる。
ステップ112において、「ハロー」メッセージが送信キュー32iに置かれる。
ステップ114において、チャネルのコンシューマポインタ36iが0に設定され、第1のパーティション10が、対応するリモートチャネルの送信キューを読み出すのに依然として検出および開始されていないことが示される。
【0032】
ステップ116において、ステップ104に関して上述したのと基本的に同じプロセスに従って、第1のパーティション10はチャネル割り込みを割り当て、INT_TARGET_ENABLEレジスタおよびINT_VECTOR_ENABLEレジスタの必要なビットを設定し、ターゲットプロセッサおよび割り込みベクトルをチャネルヘッダ40iに表示する。
ステップ118において、そのチャネルが「オープン中(opening)」、すなわち、チャネルがセットアップされたが、リモートパーティション12のチャネルに依然として接続されていないことを示すように、チャネルステータスフラグが設定される。
【0033】
共有ウィンドウ30が、2つ以上のチャネルを有するように意図されていない場合、チャネルヘッダおよびウィンドウヘッダはマージすることができ、詳細には、ステップ102と108とをマージすることができ、ステップ104と116とをマージすることができる。
さらに、共有ウィンドウ30は、単一のデータ領域32、単一のプロデューサポインタ34、および単一のコンシューマポインタ26を有する、図1に示す構成を有することができる。
【0034】
共有ウィンドウ30が完全にセットアップされると、ステップ120において、下限レジスタ26および上限レジスタ28が、ウィンドウ30のアドレス範囲を特定するように設定され、共有設定レジスタ38が、共有ウィンドウへのアクセスが許可された1つまたは複数のパーティションを特定するように設定される。
【0035】
図3に示すプロセスは、第1のパーティション10が最初にブートアップされた時、または、関係する第2のパーティション12との実際の通信を行う必要が生じた時に実行することができる。
【0036】
第1のCPU14は、通信する機会がある時に、図3に示すように、特定の第2のパーティション12用の共有ウィンドウ30をセットアップすることができる。
次に、第1のCPU14は、目的の第2のパーティション12に対応するウィンドウ30を配置するように直ちに試みる。
その代わり、各CPU14、16は、図3に示すように、スタートアップ時に、他のパーティション(実際上、そのCPUが絶えず通信を許可されたシステムの他のあらゆるパーティション)用に共有ウィンドウ30をセットアップすることができる。
各CPU14、16は、それ自身の共有ウィンドウ30をセットアップすると、他のパーティションに対応するウィンドウを配置することに進む。
【0037】
次に図4を参照して、本実施の形態では、ステップ130において、第1のCPU14は、どの共有ウィンドウが第2のパーティション12において当該CPUに利用可能であるかを決定するために、可能な第2のパーティションにおける共有レジスタのロケーションをACPIファームウェアオブジェクトから取得し、各リモート共有ウィンドウ30の共有設定レジスタ38の読み出し要求を送出する。
図12を参照して、このACPIファームウェアオブジェクトは、正確なACPIデバイスとして定義されていない。
その理由は、ACPI標準規格が、デバイスを起動するオペレーティングシステムと同じパーティションの当該デバイスに制限されるからである。
図12に示すテーブルは、個々の製造業者によって全体が定義された「ベンダロング(vendor long)」オブジェクトとしてACPI標準規格の下で定義される。
テーブルのフィールドは次のように定義される。
図12に示すテーブルは、共有ウィンドウを有することができるすべてのセルの情報を含み、それらセルのすべてにグローバルに利用可能である。
ACPI標準規格は、http://www.acpi.infoで入手可能である。
【0038】
RESは、この資源が何であるかをソフトウェアに告げる、ACPIが定義した1バイトの値50である。
その値は0x84であり、これは、その資源が、ベンダが定義したオブジェクトであることを意味する。
LENGTHは、バイトで計測されたGSMRの「データ領域」(RES値およびLENGTH値が占有する3バイトを含まない)の長さを与える2バイトの値52である。
本例において、3つの64ビット(8バイト)アドレスが各セルについて列挙される場合、この値は24×N+21に等しい。
ここで、Nは、列挙されたセルの個数である。
TYPEは、GUID56と共に使用されて、これがどの種類の資源であるかを告げる「サブタイプ指示子」54である。
TYPEフィールドは、標準的なACPIフィールドであるが、その値は、個々のオブジェクトの設計者によって選択される。
GUID(グローバル一意識別子)56は、16バイトの標準的なACPIフィールドであり、その値は個々の製造業者によって決定される。
GUIDは、2つの製造業者が偶然に同じ番号を生成できないように生成される意味で「グローバル一意」である。
【0039】
REVは、テーブルの改訂を与える1バイトの値58である。
テーブルの定義が変わる場合、この番号をインクリメントしなければならならい。
CELLは、テーブルに表されたセルの個数Nを与える1バイトの値60である。
【0040】
テーブルのフィールドの残りは、すべて長さが8バイトであり、アドレスを表す。
各セルにつき、3つのアドレスがある。
これら3つのアドレスの群は、マシン全体に存在するセル(すべてのパーティションをカウントする)と同数存在する。
各セルの3つのアドレスは次の通りである。
【0041】
セルiのGSM CSRベースアドレス62iは、セルiのGSMx CSRのすべてを計算できる起点のベースアドレスである。
上記で与えたGSMiデバイスの例では、CSRベースアドレスは、第1のGSMデバイスのSHARE_SETレジスタ38の開始アドレスである。
この値によって、第1のセル11は、リモートセルのすべてにおいて共有ウィンドウのすべてを検出することが可能になり、それらの共有ウィンドウがローカルセルと共有可能であるかどうかを調べることが可能になる。
【0042】
セルiの有効ウィンドウ64iの下限は、セルiの共有ウィンドウの最小有効アドレスである。
セルiの有効ウィンドウ64iの上限は、セルiの共有ウィンドウの最大有効アドレスである。
これら2つの境界の間のアドレス範囲が、セルに利用可能な物理メモリ全体よりも小さい場合には、ステップ102において、第1のセル11は、セルiが、共有ウィンドウ30を、図12のテーブルによって指定された当該共有ウィンドウ自身のセルの有効範囲内に配置していることを保証しなければならない。
【0043】
第1のCPU14は、そのリモート共有ウィンドウ30にアクセスする権利を有する場合に、CPU14のステータスを示すビットが「許可」に設定された共有設定レジスタ38のコピーを受信する。
本実施の形態では、第1のCPU14は、その共有ウィンドウにアクセスする権利を有しない場合に、受け入れられない要求を示すエラー信号を受信する。
【0044】
代替的に、第1のCPU14は、要求側CPUのビットが「拒否」に設定されたリモートウィンドウ30の共有設定レジスタ38のコピーを受信することができる。
リモートウィンドウ30が図3に示すように依然として初期化されていない場合、第1のCPUは、エラー信号、または、すべてのビットが「拒否」に設定されたリモート共有設定レジスタのコピーのいずれかを受信する。
本実施の形態では、すべてのエラー信号は、「オール1」信号または「−1」信号から成る。
したがって、「拒否」ビットは1であることが好ましい。
【0045】
第1のパーティション10がリモートウィンドウの共有設定レジスタ38から良好な応答を受信すると、ステップ132において、第1のパーティション10は、パーティション12内のリモートウィンドウのアドレスレジスタ26、28を検査する。
意味のあるウィンドウ30を定義するために、上限は下限より大きくなければならない。
ウィンドウが一定のサイズを有しなければならないことや、メモリ境界と位置合わせされていなければならないこと等、他の制約条件も存在することがある。
適合しない1対のアドレスレジスタを故意に使用して、関連した共有ウィンドウ30が利用可能でないことを示すこともできるし、第2のパーティション12の問題の徴候を示すこともできる。
【0046】
第2のセル13のSHARE_LOWERアドレスレジスタ26およびSHARE_UPPERアドレスレジスタ28によって画定された共有ウィンドウ30が意味のあるものである場合、ステップ134において、第1のセル11は、レジスタ26、28の双方から読み出した値をチェックして、それらの値が、図12のテーブルから得られた第2のセルの有効ウィンドウの下限と同程度に大きいことを検証しなければならない。
また、第1のセル11は、それらの値をチェックして、それらの値が図12のテーブルから得られた第2のセルの有効ウィンドウの上限よりも小さいことも検証しなければならない。
第2のセル13のレジスタ26、28のアドレスを図12のテーブルに対して検証することによって、誤ったエントリにより、第1のプロセッサ14がメモリの不適切な領域の読み出しを試みることになる危険性が低減される。
このメモリは、例えば、アクセスできないメモリ、存在しないメモリ、および/または、第2のパーティション12に存在しないメモリである。
このような不適切な読み出しの試みによって、第1のプロセッサのオペレーションは遅延する可能性があり、いくつかの状況では、その試みの結果、回復が困難なエラー状態になるおそれがある。
【0047】
有効な共有ウィンドウアドレスが存在すると、ステップ136において、第1のパーティション10は、第2のパーティション12に、その共有ウィンドウのウィンドウヘッダ40の読み出し要求を送信する。
有効なデータが受信されると、第1のパーティション10は、ウィンドウ30内のチャネルの検査に進む。
【0048】
リモートチャネルヘッダが有効であると、ステップ138において、第1のCPU14は、自身がそのリモートウィンドウ30で使用するのに利用可能なチャネルをチェックする。
ステップ102および108で利用可能な情報量に応じて、第1のパーティションの各ローカルチャネルを、第2のリモートパーティション12の特定のウィンドウの特定のリモートチャネルに事前に割り当てることもできるし、第2のリモートパーティションのチャネルを、ある程度、割り当てないこともできる。
チャネルが事前に完全に割り当てられていると、第1のCPU14は、自身に割り当てられるリモートチャネルを検出するまで検索を続ける。
第1のCPU14は、リモートチャネルのステータスがステップ118で設定されたように「オープン中」であることをチェックする。
いずれの場合も、第1のパーティションは、自身のローカル共有ウィンドウのチャネルIDを、チャネルヘッダ40iのチャネルIDフィールドに記入する。
第2のパーティションのリモートウィンドウが事前に割り当てられていると、第1のパーティションは、第2のリモートパーティションのチャネルIDを、第1のパーティションのローカル共有ウィンドウにおける第1のパーティションのチャネルヘッダのリモートチャネルIDフィールドに記入する。
リモートチャネルが事前に割り当てられていないと、第1のローカルパーティションは、リモートチャネルIDフィールドのOSインスタンスフィールド、ローカル性フィールド、およびウィンドウ#フィールドを自身のローカル共有ウィンドウに記入し、自身のリモートチャネルIDのチャネル#フィールドに255の値を置いて、チャネルが未指定であることを示す。
【0049】
有効なリモート共有ウィンドウ30の有効なチャネルが特定されると、第1のパーティション10は、リモートパーティションのアドレスレジスタ26、28を繰り返し読み出す必要がないように自身のアドレスをキャッシュすることが好ましい。
これは、事前に割り当てられたチャネルが使用される場合にのみ行われる。
【0050】
次に、ステップ140において、第1のプロセッサ14は、リモートチャネルから「ハロー」メッセージを読み出し、「ハロー」メッセージの終端を指し示すように自身のコンシューマポインタ36を更新して、第1のプロセッサがメッセージを読み出したことを示す。
次に、ステップ142において、第1のプロセッサ14は、自身の対応するチャネルのステータスを「オープン(open)」に設定し、そのチャネルが別のセルのチャネルに合致しており、通信に利用可能であることを示す。
一方、この段階で、第2のCPU16は、チャネルが合致していることに気付いておらず、第2のパーティション12のチャネルは、第2のCPUがチャネルをセットアップする時に、依然として、ステップ118で割り当てられた「オープン中」のステータスを有する。
【0051】
ステップ144において、第1のプロセッサ14は、リモートチャネルヘッダから、チャネルのチャネル割り込みターゲットプロセッサアドレスおよび割り込みベクトルを読み出す。
次に、第1のプロセッサ14は、その割り込みベクトルを割り込みハンドラ24を介してそのターゲットプロセッサへ送信し、第1のパーティション10のチャネルから「ハロー」メッセージを読み出すように第2のプロセッサ16に通告する。
【0052】
第1のパーティションが事前に割り当てられたチャネルを検出しておらず、第2のリモートパーティションに、リモートウィンドウにチャネルを割り当てるように依頼したい場合には、第1のパーティションは、ステップ104でリモートウィンドウに配置された第2のパーティションのウィンドウ制御割り込みベクトルおよびアドレスを読み出し、第2のパーティションにウィンドウ制御割り込みを送信する。
【0053】
図4に簡単に示したように、第1のプロセッサ14は、コンピュータシステム全体のあらゆるセルのあらゆるウィンドウのあらゆるチャネルの検査に進み、通信用のすべての可能な対のチャネルのセットアップに進む。
一方、共有ウィンドウ30の共有設定レジスタ38が、その第1のプロセッサ14がそのウィンドウにアクセスすることを許可しない場合には、第1のプロセッサは、直ちに次のウィンドウにスキップすることができる。
これに加えて、第1のプロセッサ14は、通例、各リモートセルにおいて、いくつのウィンドウにいくつのチャネルが利用可能であるべきかを知っている。
その結果、第1のプロセッサ14は、自身の割り当てを満たすと、不要なテストをスキップすることができる。
例えば、第1のプロセッサ14は、第2のセル13において利用可能なチャネルを1つだけ有するべきであると知っていると、そのチャネルが特定されてオープンされると、第1のプロセッサは、次のターゲットセルに直ちにスキップすることができる。
例えば、第1のプロセッサ14が、自身に利用可能な1つのリモートウィンドウ30のすべてのチャネルを有するべきであると知っている場合、第1のプロセッサ14は、その正しいウィンドウを検出すると、そのウィンドウのすべてのチャネルをセットアップすることができるが、同じセルのそれ以外のウィンドウをスキップすることができる。
代替的に、第1のプロセッサ14は、特定の目的で通信パスのセットアップを試みている場合に、それら共有ウィンドウ30のみを検索することができる。
この共有ウィンドウ30は、通常、その特定の目的に有用な、特定のリモートパーティション12の1つまたは複数のセルの1つまたは複数の共有ウィンドウである。
【0054】
エラーメッセージまたは適用できないリモートチャネルID37が、第2のパーティション12のあらゆる共有ウィンドウ30から受信されると、第1のパーティション10は、第2のパーティション12では、自身に利用可能なチャネルがないと結論する。
本システムが課した制約条件のため、その場合、第1のパーティション10は、目的の第2のパーティション12が適切なチャネルをセットアップするまで、自身の通信の試みを一時中断することができる。
第1のCPU14は、スタートアップ時に自身の共有ウィンドウ30をセットアップしている場合に、後にスタートアップするリモートパーティションとの通信を確立できない場合があり、通例、それらのリモートパーティションが現れて、第1のパーティションにおけるそれらリモートパーティションの対応するウィンドウを探すのを待つ必要がある。
セルをインストールまたはアクティブにすることが許可されたシステムでは、システムの実行中に、第1のCPU14は、ウィンドウがセットアップされる時にシステムの一部を形成しない第2のセル13と共に使用される共有ウィンドウ30、さらには共有チャネル30iをもセットアップすることができる。
このようなどのウィンドウまたはチャネルも、目的の第2のセル13がアクティブになり、図3および図4に関して上述したステップを実行するまで、アクティブでない状態にある。
【0055】
次に図5を参照して、第1のプロセッサ14がリモートチャネル30iを検出し、ステップ146でそのチャネルに割り込みを送信すると、第2のセル13の割り込みハンドラ24は、ステップ147でその割り込みを受信する。
割り込みは、ステップ118で割り当てられた「オープン中」のステータスを有するチャネル30iに特有のものであるので、第2のパーティションは、その割り込みを、チャネル30iをオープンする要求であると解釈する。
【0056】
その要求は、第1のパーティション10のCPUが第2のパーティション12の割り込みハンドラ24に送信した割り込みの形式を取っている。
送信された割り込みは、第1のプロセッサ14から第2のプロセッサ16へのメッセージである実際の割り込みベクトルと、双方のプロセッサのアドレスとを含んだパケットである。
本実施の形態では、与えられた宛先アドレスは、単一のプロセッサ16を特定することが好ましい。
第2のパーティションの割り込みハンドラ24は、図7に関して以下で説明するように、この割り込みを検証する。
【0057】
割り込みハンドラ24が、第1のCPU14から入力する割り込みを受け取り、その割り込みを第2のCPU16に転送すると仮定すると、第2のCPUは、その割り込みを送信した第1のCPUとの接触を確立することに進む。
本実施の形態では、割り込みハンドラ24は、割り込みの送信元アドレスを第2のCPU16に転送しないが、実際の割り込みベクトルのみを転送する。
特定の第2のCPU16に送信された特定の割り込みベクトルは、パーティション12内のローカルチャネルを一意に特定するが、リモートチャネルを特定しない。
次に、ステップ148において、第2のCPU16は、他のどのプロセッサが、自身との通信を試みているかを決定する。
チャネル割り当てが事前に決定されていると、第2のCPU16は、該当するローカルチャネルが割り当てられるリモートチャネルを捜して、割り当てられたリモートチャネルと接触することができる。
【0058】
代替的に、第2のCPU16は、該当するローカルチャネルの「ハロー」メッセージを含むリモートチャネルを検索しなければならない場合がある。
したがって、ステップ148は、第2のプロセッサ16が、待っている「ハロー」メッセージを検出するまで、図5の後続のステップ149を繰り返すことから構成することができる。
チャネルが部分的に事前に割り当てられている場合、第2のCPU16は、割り込みのほぼ正確な発信源を推定できる場合があり、そのほぼ正確な発信源のリモート共有ウィンドウ30のみをポーリングすることができる。
代替的に、送信元アドレスが割り込みと共に転送される場合、第2のCPU16は、ステップ148で送信元アドレスを読み出すことができ、次いで、第2のCPUは、図5のステップ149を実行して、セル11、パーティション10、または割り込みの送信元アドレスによって特定された他の近傍の共有ウィンドウ30のみをポーリングすることができる。
受信した割り込みが不完全な送信元アドレスを運ぶ場合、割り込みハンドラ24は、異なる送信元からの類似した割り込みをキューに入れて転送しなければならず、また、第2のプロセッサ16は、このような各割り込みを個別に処理しなければならない。
【0059】
ステップ149において、第2のCPU16は、図4のステップ130〜144のプロセスを実行して、ステップ147で割り込みを送信した少なくともリモートチャネルを検出する。
【0060】
ステップ146に関して説明したように、第2のプロセッサ16は、第1のプロセッサ14に割り込みを送信して、現在、利用可能なチャネル30iが第2のパーティション12のオープンした共有ウィンドウ30にあることを第1のプロセッサ14に知らせることができる。
代替的に、第1のプロセッサ14は、ステップ146で割り込みを送信した後、適切な遅延を待つことができ、次いで、ステップ149において、第1のプロセッサ14は、ステップ130〜144を繰り返して、第1のプロセッサ14にとってオープンした共有ウィンドウ30が現在第2のパーティション12にあると判断する。
【0061】
図3および図4に関して説明したプロセスのある時点で、共有ウィンドウ30がすでにオープンであって、第1のパーティション10と第2のパーティション12との間の通信に利用可能であることが判明し、利用可能なチャネルがそのウィンドウでオープンでないことが判明し、かつ、オープンでないチャネルが利用可能であることが判明すると、図3および/または図4のうち、チャネルのセットアップに関係した部分のみを、既存のウィンドウに対して実行する必要がある。
【0062】
次に図6を参照して、第1のパーティション10が第2のパーティション12と通信したい場合、第1のパーティションは、第2のパーティションが、その第1のパーティションにとってアクセス可能な共有ウィンドウ30を有するが、その共有ウィンドウ内のチャネル30iのいずれも第1のパーティションにとって利用可能でないことを検出する場合がある。
これは、適切な第2のチャネル30iが依然としてセットアップされていないことによるか、または、第1のパーティションが2つのパーティション間で使用するチャネル数を増加させたく、増加を許可されることにより生じる場合がある。
その場合、第1のパーティション10は、適切なローカルチャネル30iをセットアップし、次いで、ステップ104で割り当てられたウィンドウ制御割り込みを第2のパーティションに送信する。
【0063】
ステップ150において、第1のパーティションが自身に割り当てられたチャネル数を増加させたいか、または、チャネル割り当てが部分的にしかセットアップされていなかったことから、第2のパーティションのCPUは、第1のパーティションが送信したウィンドウ制御割り込みを受信する。
このウィンドウ制御割り込みに応答して、ステップ152において、第2のパーティションは、第2のウィンドウ30の新たなチャネル30iをセットアップする。
次に、ステップ154において、第2のパーティションは、リモートチャネルを第1のパーティション10に配置し、上述したような通信を確立する。
ウィンドウ制御割り込みは、割り込みを送信したセルを具体的に特定しないので、第2のパーティションは、図6に示すように、適切なリモートウィンドウを検索する。
この場合、図4に示す検索および照合のプロセス全体を実行することは必要でない場合がある。
その理由は、ウィンドウ制御割り込みが、第2のウィンドウ30を読み出することを許可されたセルであって、ウィンドウ制御割り込みを第2のパーティションに送信することを許可されたセルから来たものに違いないことを第2のパーティション12が知っているからである。
特定の対のウィンドウが事前に割り当てられている場合、検索は、1対のチャネルを、該当する第2のウィンドウ30と適切に共有できる第1のセルとなり得るもののウィンドウにさらに制限することができる。
【0064】
図7を参照して、あるパーティションの割り込みハンドラ24が割り込みを受信すると常に、検証プロセスが実行される。
図7では、割り込みを受信したパーティションは第2のパーティション12と呼ばれるが、本実施の形態では、入力する割り込みを受信したあらゆる割り込みハンドラによって同じ検証手順が実行される。
ステップ156において、割り込みハンドラ24は割り込みを受信し、ステップ157において、割り込みハンドラは、その割り込みの送信元アドレスおよび宛先アドレスを検査して、それらのアドレスにアクセスする。
送信元が、ターゲットCPU16が高く信頼したプロセッサ、例えば、ターゲットCPU16と同じパーティション12のプロセッサである場合、割り込みハンドラ24は、ステップ158でさらに検査することなく、その割り込みを転送することができる。
ステップ159において、ホストは、その割り込みに応じた適切などんな動作でも実行する。
【0065】
割り込みの送信元が、ターゲットCPU16が割り込みを受け取るプロセッサでない場合、割り込みはステップ160でさらに検査されることなく廃棄することができる。
ステップ161において、ホストプロセッサはゲストプロセッサ14に応答しない。
所定の時期に、ステップ162において、ゲストプロセッサ14はタイムアウトし、通信の試みを中止する。
【0066】
割り込みの送信元が、ホストプロセッサ16が一部の割り込みを受け取るが、すべての割り込みを受け取るとは限らない別のパーティション10のプロセッサ14である場合、割り込みハンドラ24は、割り込みの内容を検査する。
ステップ164において、割り込みハンドラ24は、割り込みがアドレス指定されたターゲットプロセッサをINT_TARGET_ENABLEレジスタと照合する。
ターゲットプロセッサが許可されない場合、割り込みはステップ160で廃棄される。
ターゲットプロセッサが許可される場合、ステップ165において、割り込みベクトルがINT_VECTOR_ENABLEレジスタと照合される。
ターゲットベクトルが許可されない場合、その元の割り込みはステップ166で廃棄され、ステップ168で、元の割り込みで指定されたターゲットプロセッサへの割り込みに置き換えられる。
しかしこの割り込みは、INT_ERROR_VECTORレジスタが指定した割り込みベクトルを有する。
ターゲットベクトルが許可されると、割り込みハンドラ24は、ステップ158でプロセッサ16に割り込みを送信する。
本実施の形態では、異なるパーティションの第1のプロセッサ14からの割り込みは、通常、その割り込みがステップ104でウィンドウ制御割り込みとして割り当てられたものであるか、または、ステップ116でチャネルメッセージ割り込みとして割り当てられたものである場合に限って受け取ることができる。
【0067】
次に図8を参照して、パーティション10、12の共有ウィンドウ30の1対のチャネルを使用して通信が確立されると、例えば、第1のプロセッサ14が第2のパーティション12にメッセージを送信したい場合に、ステップ170において、第1のプロセッサ14は、ローカルパーティション10における共有ウィンドウ30のチャネル30iの送信キュー32iにメッセージを置く。
第1のプロセッサ14は、メッセージの終端を指し示すように自身のプロデューサポインタ34iを更新する。
ステップ172において、第1のプロセッサ14は、第2のプロセッサ16にメッセージ割り込みを送信する。
第1のプロセッサは、ステップ144で判明した割り込みベクトルを、ステップ144で判明した割り込みターゲットに送信する。
ステップ174において、入力する他の割り込みと同様に、第2のパーティションの割り込みハンドラ24は、ステップ156〜168に関して上述したように割り込みを検査する。
割り込みが受け取り可能であると仮定すると、割り込みは、ステップ176で第2のCPU16に転送される。
割り込みは、リモート共有ウィンドウ30の割り当てられたチャネル30iに第2のCPU16の新たなメッセージがあることを第2のCPU16に知らせる。
この割り込みは、ステップ116で割り当てられた特定の割り込みであり、また、1対のリモートチャネルとローカルチャネルとの間の通信は、ステップ130〜156で確立されたものであるので、第2のCPU16は、メッセージがどのリモートセルのチャネルにあるかを知る。
【0068】
リモートチャネルのキャッシュされたアドレスを使用すると、第2のCPU16は、第1のCPU14がそのアドレスに置いたメッセージをステップ178で直ちに読み出すことができる。
第2のCPU16がメッセージを読み出したことを示すために、第2のプロセッサ16は、当該第2のプロセッサが読み出したリモート送信キュー32iのメッセージの終端を指し示すようにコンシューマポインタ36を更新する。
第2のプロセッサ16は、第1のパーティション10に書き込みアクセスを行わないので、第2のプロセッサ16は、第2のパーティション12の共有チャネル30iのコンシューマポインタ36を更新する。
第1のプロセッサ14は、第2のパーティションの共有ウィンドウ30のコンシューマポインタ36を読み出して、第2のプロセッサが、第1のパーティションの送信キュー32iからメッセージを読み出したことを確認する。
【0069】
各プロセッサがステップ170〜182を順に繰り返し、2つのプロセッサが、自身のプロデューサポインタ34およびコンシューマポインタ36を更新することによって進行を信号で伝達することで、2つのプロセッサ間の対話を進めることができることが分かる。
最終的には、会話は終了する。
【0070】
チャネルをクローズすることが望まれる場合、CPU14または16のいずれかがクローズを開始することもできるし、双方が同時にクローズを開始することもできる。
以下では、第1のCPU14がクローズを開始するものと仮定する。
次に図9を参照して、ステップ190において、第1のCPU14は、まず、リモートコンシューマポインタ36とローカルプロデューサポインタ34とを比較する。
ステップ192において、リモートプロセッサがローカル送信キューの最後のメッセージを依然として読み出していない場合、第1のプロセッサ14は、リモートプロセッサが最後のメッセージを読み出すのを待たなければならない。
第1のプロセッサ14は、リモート送信キューの最後のメッセージを依然として読み出していない場合に、そのメッセージを読み出し、ローカルコンシューマポインタを更新して、メッセージが読み出されたことを示す。
【0071】
次に、ステップ194において、第1のプロセッサ14は、それ自身のチャネルのステータスを「クローズ中(closing)」に変更して、チャネルメッセージ割り込みを送信する。
ステップ196において、第2のプロセッサ16は、リモートウィンドウ30のチャネルを読み出す。
第2のプロセッサは、新たなメッセージがなく、ステータスが「クローズ中」に設定されていることを知る。
ステップ198において、第2のプロセッサ16は、それ自身のチャネルのステータスを「クローズ済み(closed)」に設定して、チャネルメッセージ割り込みを第1のプロセッサ14に送信することにより応答する。
ステップ200において、第1のプロセッサ14は、その応答を見て、ローカルチャネルのステータスを「クローズ済み」に設定する、次に、各プロセッサは、チャネルメッセージ割り込みを割り当て解除することができ、ステップ106〜110で設定された、ウィンドウ定義により固定されないヘッダデータのいずれもヌルに設定することができる。
【0072】
共有ウィンドウ30のチャネルのすべてがクローズされると、ウィンドウをクローズすることができる。
このウィンドウのクローズは、下限レジスタ26および上限レジスタ28をヌル設定または無効な設定に設定すること、共有設定レジスタ38を「全拒否」設定またはヌル設定に設定すること、および、このウィンドウ自体に割り当てられたメモリと、ステップ104で割り当てられたウィンドウ制御割り込みと、ステップ200で割り当て解除されなかったあらゆるチャネルメッセージ割り込みとを割り当て解除すること、によって行われる。
システムの実行中に、ウィンドウ30がクローズされることがある。
その理由は、そのウィンドウが配置されたセル11、13またはパーティション10、12がクローズダウンまたは再起動する必要があるか、または、それ以外に、ウィンドウに割り当てられた資源を解放する必要があるからである。
これは、オープンのチャネルを含まないオープンのウィンドウを有する別のセルまたはパーティションを残すことがある。
本実施の形態では、そのウィンドウは、通例、オープンの状態に維持され、その結果、クローズしたウィンドウを有するセルが再起動する時、そのセルは、図3および図4に関して上述したステップに従うことによって通信を容易に確立することができる。
セルを除去するか、または、置き換える必要がある場合、新たなセルは、他のセルまたはパーティションのいずれも再構成する必要なく、除去されたセルのウィンドウ割り当ておよびチャネル割り当てを再開することができる。
パーティションのあるセルが切断されると、切断されたセルが通信を行う他のパーティションに、切断されたセルと同じパーティションの他のセルとの数対のチャネルを追加して確立するように指令することができる。
切断されたセルが回復するか、または、置き換えられると、これらの追加された接続をクローズすることができ、切断されたセルへの接続は回復する。
【0073】
ウィンドウ割り込みまたはチャネル割り込みが割り当て解除された後、プロセッサは、INT_TARGET_ENABLEレジスタおよびINT_VECTOR_ENABLEレジスタをチェックし、他のウィンドウ制御割り込みもチャネル制御割り込みも、依然として同じベクトルまたはターゲットを使用していない場合に、そのベクトルまたはターゲットを許可されないものとして設定する。
【0074】
本実施の形態では、2つのパーティション10と12との間の相互作用を制御する理由から、図1〜図9に示すシステムは、システムのあらゆる部分の故障に高度な耐性を有する。
ゲストパーティションの故障は、一般に、ホストパーティションに影響を与えない。
回復不能なエラーがゲストパーティションに発生すると、ゲストパーティションはシャットダウンするが、ホストパーティションはオペレーションを続ける。
最悪の場合、ホストパーティションは、ゲストパーティションが共有ウィンドウ30のメッセージを読み出したという確認を受信せず、接続は最終的にはタイムアウトする。
【0075】
次に図10を参照して、ステップ250において、ゲストパーティション10は、ホストパーティション12からデータを得たい場合があり、適切な要求を自身のプロセッサインターフェース15に送信する。
ステップ252において、ゲストプロセッサインターフェース15は、ホストメモリ20の「タイムアウトフラグ」が設定されているかどうかをチェックする。
タイムアウトフラグは、最初は、未設定であり、したがって、プロセスが最初にステップ252に達した時、プロセスはNOに分岐する。
次に、ステップ254において、ゲストプロセッサインターフェース15は、ホストメモリ20にデータを要求する。
ステップ256において、ホストパーティションが、「良好な」応答、すなわち、要求されたデータを供給する明確で有効な応答、を送信すると、ステップ258において、ゲストプロセッサインターフェース15は、要求側のゲストCPU14にデータを返す。
接続が故障しなかった場合または回復した場合、ゲストパーティション10は、ホストメモリ20からのデータを必要とするごとに、ステップ250〜258を繰り返すことになる。
【0076】
ステップ256において、ゲストパーティション10のプロセッサインターフェース15が、要求に対して、認識できない応答、不完全な応答、またはそれ以外に使用できない応答を受信すると、プロセッサインターフェース15は、ステップ260でその応答を廃棄し、ステップ262でエラーメッセージを要求側CPUに返す。
この実施の形態では、エラーメッセージは、有効にすることができない内容を有するデータパケットから構成することができる。
例えば、パケットフォーマットが、有効などのパケットもすべて1から構成されないようにしている場合に、ゲストプロセッサインターフェース15は、ゲストCPU14に、すべて1を含むデータパケットを供給することができる。
次に、プロセスは、さらに動作を行うことなくステップ250に戻る。
ステップ256において、要求に対する応答が、ホストメモリ20から全く受信されない場合、ゲストプロセッサインターフェース15は、応答が単に遅れているだけでなく存在しないことを確実にするために、タイムアウト期間が終了するまで待つ。
次に、ステップ264において、ゲストプロセッサインターフェース15は、「エラー」データを要求側CPUに返すメッセージを組み立てるステップ262に進む前に、ホストメモリ20のタイムアウトフラグを設定する。
【0077】
タイムアウトフラグがステップ264で設定された後、ゲストプロセッサインターフェース15が、ステップ250において、ホストメモリ20から別のデータブロックの要求を受信すると、ステップ252は、タイムアウトフラグが設定されていることを示し、ゲストプロセッサインターフェースは、ステップ262に直接進んで「エラー」データを要求側CPUに返すメッセージを組み立てる。
タイムアウトフラグは、ホストメモリ20への接続が完全に喪失したものと仮定するように図10のプロセスに命令する効果を有する。
このように、ゲストパーティション10は、通常ならば、ステップ256においてタイムアウト期間が満了するのを待つことで費やされる時間をバイパスしている。
【0078】
したがって、データ要求に対する応答が欠落するか、または、判読不能に変形した結果、一時的な割り込みのみが実際に存在し、その後のホストメモリ20への接触の試みが成功していたことになる場合に、ゲストパーティション10は、ホストパーティションへの接続が喪失したものとみなすことができる。
これによる最悪の結果は、ゲストパーティションによるその後の作業が、ホストパーティションからのデータが利用可能でないことによって不必要に妨げられるおそれがあり、処理時間をいくらか損失することである。
【0079】
次に図11を参照して、ステップ210において、ゲストパーティション10は、ホストパーティション12から複数のデータブロックの「所有権」を取得することができる。
本実施の形態では、所有権の付与は、通例、そのデータを変更する「書き込み」許可を移転するものではなく、データが変更されないことの保証を移転するものである。
したがって、ホストパーティション12は、そのデータを変更するそれ自身の「書き込み」許可を一時中止する。
ステップ212において、2つのパーティション間の接続がそれらの状況下で故障すると、ホストパーティション12は、ゲストパーティション10がそのデータを現状のまま維持する必要が依然としてあるかどうかを知ることはできない。
接続は、ゲストパーティション10の問題が原因で故障することもあるし、2つのパーティションを接続するファブリックの問題が原因で故障することもある。
その故障がどの程度の重度のものであるかは、ホストパーティション12にすぐに明らかでないことがある。
確かに、ホストパーティション12は、そのゲストパーティション10と次に通信を試みるまで、故障が存在することを発見することができない。
ゲストパーティション10は、致命的なエラーを受けて、シャットダウンする必要がある場合に、他のパーティションから借りたすべてのデータを返すことが理想的ではあるが、これは可能でない場合がある。
【0080】
ステップ214において、ホストメモリ20は、ゲストCPU14が所有するデータブロックの1つについて別の要求を受信することがある。
この要求は、データのゲストパーティションの所有権と矛盾するものである。
ステップ216において、ホストメモリ20は、ゲストCPU14の「タイムアウトフラグ」が設定されているかどうかをチェックする。
タイムアウトフラグは、最初は未設定であり、したがって、プロセスが最初にステップ216に達した時、プロセスはNOに分岐する。
次に、ステップ218において、ホストメモリ20は、データを「リコール(recall)」するように試みる。
これは、そのデータが現状のままであることを信用するゲストパーティションの権利を無効にする効果を有する。
ステップ220において、ゲストパーティションが、「良好な」応答、すなわち、リコールを受け取り、データの所有権を引き渡す明確で有効な応答、を送信すると、ステップ222において、ホストメモリ20は要求側CPUにデータを返す。
接続が故障しなかった場合または回復した場合、ホストメモリ20は、ゲストCPU14からの所有権をリコールする必要があるデータ要求を受信するごとに、ステップ214〜222を繰り返すことになる。
【0081】
ステップ220において、ホストパーティション12のメモリ20が、リコール要求に対して、認識できない応答、不完全な応答、またはそれ以外に使用できない応答を受信すると、メモリは、ステップ224でその応答を廃棄し、ステップ222でそのデータを要求側CPUに返す。
次に、プロセスは、さらに動作を行うことなくステップ214に戻る。
ステップ220において、リコール要求に対して、応答がゲストCPU14から全く受信されない場合、ホストメモリ20は、応答が単に遅れているだけでなく存在しないことを確実にするために、タイムアウト期間の終了まで待つ。
次に、ステップ226において、ホストメモリ20は、データを要求側CPUに返すメッセージを組み立てるステップ222に進む前に、ゲストCPU14のタイムアウトフラグを設定する。
【0082】
タイムアウトフラグがステップ226で設定された後、ホストメモリ20が、ステップ214において、ゲストプロセッサ14が所有する別のデータブロックの要求を受信すると、ステップ216は、タイムアウトフラグが設定されていることを示し、ホストメモリ20は、ステップ222に直接進んでデータを要求側CPUに返すメッセージを組み立てる。
タイムアウトフラグは、ゲストCPU14への接続が完全に喪失したものと仮定するように図10のプロセスに命令する効果を有する。
このように、ホストメモリ20は、通常ならば、ステップ220においてタイムアウト期間が満了するのを待つことで費やされる時間をバイパスしている。
【0083】
したがって、リコールメッセージに対する応答が欠落するか、または、判読不能に変形した結果、ゲストパーティション10がリコールメッセージを受信していなかった場合、ホストパーティション12は、リコールが成功したものとみなすことができ、ホストパーティションのデータを自由に変更できるようにすることができる。
これによる最悪の結果は、リコールされたデータがもはや有効ではない場合に、ゲストパーティションによるその後の作業がそのデータに依拠するおそれがあり、いくぶん無駄な作業になることである。
【0084】
ゲストパーティションは、ホストパーティションの共有ウィンドウに書き込む権限を有しないので、共有ウィンドウのデータの完全性は影響を受けない。
したがって、ホストパーティションは、共有ウィンドウのデータ領域32をアクティブな作業メモリとして使用することが可能である。
代替的に、メッセージを非共有メモリで準備することができ、次いで、専ら共有の目的のみで共有ウィンドウ30にコピーを置くことができる。
共有メモリに置かれたコピーは、その後、特に共有の目的で生成されたチェックワードまたは他の認証データと共に容易に提供することができる。
本実施の形態では、すべてが1から成るメッセージがエラー信号として使用される。
したがって、1の長い列から成る可能性があるデータを送信する場合、チェックビットまたはチェックワードを含めることができ、データのメッセージがすべて1にならないように、これらのチェックビットまたはチェックワードを定義することができる。
【0085】
本実施の形態では、ホストパーティションの故障は、ゲストパーティションが、要求したデータを得ることができない程度にしかゲストパーティションに影響しない。
ホストパーティションに「致命的な」エラーがあっても、ゲストパーティションにとって致命的ではない。
回復不能なエラーがホストパーティションに発生すると、ホストパーティションはシャットダウンするが、ゲストパーティションはオペレーションを続けることができる。
一方、この実施の形態では、故障は、明示的なエラーメッセージの形でホストパーティションからゲストへ通信されるか、または、タイムアウト前の応答の失敗によって通信される。
応答の失敗は、ゲストパーティションのプロセッサインターフェースによって、明示的なエラーメッセージに変換することができる。
その後、ゲストパーティションは、適切な損傷軽減対策を続けることができる。
2つのパーティション間の共通の通信媒体の故障も、同様に、対話のタイムアウトにしかならない。
【0086】
回復不能なエラーがホストパーティションとゲストパーティションとの間の通信を提供するファブリックに発生すると、各パーティションは、オペレーションを続けることができるが、他方のパーティションが、あたかも回復不能のエラーに続いてシャットダウンしたのと同じように2つのパーティション間の通信を取り扱うことができる。
一方、本実施の形態では、異なるパーティションを接続する通信ファブリックも、パーティション内のセル間の通信に使用することができる。
その結果、そのファブリックの故障は、2つのパーティション間の通信に対するその影響から独立して、一方または双方のパーティション内の故障を構成することができる。
【0087】
本実施の形態のパーティション間の相互作用に対する制御は、敵意のあるパーティションが故意に別のパーティションの妨害を試みることができる多くのメカニズムをも防止する。
敵意のある情報は、その情報をプロデューサの共有ウィンドウ30から読み出すようにコンシューマを促すことによってのみ、パーティション10と12との間で転送することができる。
しかしながら、読み出されたマテリアルのハンドリングは、コンシューマパーティションの制御下にあり、コンシューマパーティションは、マテリアルの制御において、自身が望むだけ慎重になることができる。
コンシューマパーティションは、割り当てられたチャネルまたはウィンドウのデータ領域32iの内容のみを読み出し、このチャネルまたはウィンドウは規定されたサイズを有するので、この実施の形態では、受信側パーティションにおいて、指定された書き込み可能領域をオーバーフローする超過した長さのメッセージによって引き起こされるセキュリティの侵害は排除される。
【0088】
パーティション間の通信は、マルチプロセッサコンピュータシステムの異なるプロセッサ間にすでに提供されている高速通信パスを使用できるので、本実施の形態の通信速度は高速にすることができる。
セキュリティは、許可されるメッセージの性質および内容に対して維持された非常に厳密な制御によって保証され、また、準拠しないどのメッセージも廃棄することによって保証される。
【0089】
本発明の例示の実施の形態に関して本発明を説明および図示してきたが、添付した特許請求の範囲に列挙した本発明の趣旨および範囲から逸脱することなく、さまざまな変更、省略、および追加を本発明に行えることが当業者には理解されよう。
例えば、図1に示すプロセスは、単一のゲストパーティション10の単一のゲストプロセッサ14と単一のホストパーティション12の単一のホストプロセッサ16との間のプロセスとして説明されている。
しかしながら、上記で説明したように、3つの以上のパーティションが存在することもでき、各パーティションには2つ以上のCPUが存在することもできる。
1つのパーティションにつき2つ以上のCPUが存在できる場合、共有ウィンドウは、個々のCPUとリンクするように設定することができる。
詳細には、各セルが1つまたは2つ以上のプロセッサ、メモリ、および補助デバイスを備える複数のセルにシステムが構造化されると、共有ウィンドウはそれらのセルをリンクすることができる。
さらに、各セルが、指定された他のセルに付与する許可を変更するだけで、セルをパーティションにグループ化することができる。
割り込みまたは他のメッセージがセルに入る2つ以上の物理パスが存在する場合、いずれの割り込みまたはいずれの他のメッセージを承認するか、また、いずれを排除するかを決定する上述した手順は、それぞれがセルに入る時に並列に実行することができる。
【0090】
共有ウィンドウ30によって互いにリンクされる3つの以上のパーティション、セル、または他のエンティティが存在する場合、各エンティティは、そのエンティティが安全な通信を必要とする通信相手の他のエンティティと同数の共有ウィンドウ30を有することができる。
代替的に、上述したように、例えば、第1のプロセッサから第2のプロセッサおよび第3のプロセッサへの通信パスは、第1のパーティション内の単一のウィンドウの異なるチャネルを使用することができる。
第2のプロセッサおよび第3のプロセッサは、そのウィンドウの読み出しアクセスしか行わないので、このような機構は、例えば、第2のプロセッサにおける故障が第3のパーティションに悪影響を与える可能性がある実際の危険性を生み出すことはない。
単一のセル、パーティション、または他のエンティティにおける異なる共有ウィンドウ30は、他の異なるパーティションがそれら共有ウィンドウにアクセスすることを許可する共有設定レジスタ38を有することができる。
特定の共有ウィンドウ30が特定の他のパーティションまたはセルと通信するのに割り当てられる場合、その特定の他のパーティションまたはセルのみがその共有ウィンドウを読み出すことを許可するように共有設定レジスタ38を設定することができる。
【0091】
2つ以上の対話が同時に行われる場合、各対話は、その対話に関与するパーティションのそれぞれにおいて1つずつ、個別の1対の共有ウィンドウ30を使用することができる。
この場合、対話のすべてが故障した資源を独立に使用する場合を除いて、ある対話における故障は他の対話に影響しない。
代替的に、単一の共有ウィンドウ30をいくつかの対話に使用することもできる。
これらのいくつかの対話が関係しない場合、それら対話のそれぞれに、共有ウィンドウ30の個別の部分を占有するチャネルを割り当てることができる。
このチャネルは、それ自身のプロデューサポインタ34i、コンシューマポインタ36i、およびリモートチャネルID37iを有する。
これによって、別個の共有ウィンドウ30を維持するのに必要なオーバーヘッドが削減される。
【0092】
多数の他のパーティション10が読み出すことができる共有ウィンドウ30を使用して、ブロードキャスト接続を確立することができる。
信頼できるブロードキャストが確保されると、各読み出し側パーティション10は、コンシューマポインタ36iを有する対応したチャネルを割り当てなければならず、ブロードキャスト側パーティション12は、ブロードキャストを別のデータで上書きする前に当該ブロードキャストを読み出したことを示すために、読み出し側パーティションのすべてが自身のコンシューマポインタ36iを更新したことをチェックしなければならない。
代替的に、接続が、パーティションのほとんどの対またはすべての対の間で正常にオープンしていると、パーティション対パーティション接続を使用して、ブロードキャストメッセージを各受信側パーティションに個別に送信することもできる。
【図面の簡単な説明】
【0093】
【図1】本発明の一実施の形態によるコンピュータシステムの一形態のブロック図である。
【図2】本発明の一実施の形態におけるウィンドウ内のフィールドのブロック図である。
【図3】ローカルパーティション内の共有ウィンドウおよびチャネルをセットアップするプロセスの一実施の形態のフローチャートである。
【図4】リモートパーティション内に利用可能なチャネルを配置して、当該リモートパーティションとの通信を確立するプロセスの一実施の形態のフローチャートである。
【図5】メッセージ割り込みに応答してチャネルを確立するプロセスの一実施の形態のフローチャートである。
【図6】特定のチャネルが事前に割り当てられていない場合、または、新たなチャネルを既存のウィンドウに追加するように第1のパーティションが要求した場合のいずれかに、ウィンドウ制御割り込みに応答してチャネルを確立するプロセスの一実施の形態のフローチャートである。
【図7】入力する割り込みをハンドリングするプロセスの一実施の形態のフローチャートである。
【図8】パーティション間でデータを転送するプロセスの一実施の形態のフローチャートである。
【図9】チャネルをクローズするプロセスの一実施の形態のフローチャートである。
【図10】ゲストパーティションがホストパーティションにデータを要求するプロセスの一実施の形態のフローチャートである。
【図11】ホストパーティションがゲストプロセッサに付与されたデータ所有権をリコールするプロセスの一実施の形態のフローチャートである。
【図12】アドバンストコンフィギュレーションアンドパワーインターフェース(ACPI)テーブル内のフィールドの一実施の形態のブロック図である。
【符号の説明】
【0094】
10,12・・・パーティション,
11,13・・・セル,
14,16・・・中央処理装置(CPU),
15,17・・・プロセッサインターフェース,
18・・・メモリコントローラ,
22・・・割り込みハンドラ,
20・・・メモリコントローラ,
24・・・割り込みハンドラ,
26,28・・・アドレスレジスタ,
38・・・共有設定レジスタ,
30・・・共有ウィンドウ,
30i・・・チャネル,
32a〜32n・・・データ領域,
34a〜34n・・・プロデューサポインタ,
36a〜36n・・・コンシューマポインタ,
40a〜40n・・・チャネルヘッダ,

【特許請求の範囲】
【請求項1】
プロセッサと、コンピュータシステムのコンポーネントに対応した情報でポピュレートされたメモリとを備えた少なくとも1つのパーティションを有するパーティショニング可能計算システムであって、
前記情報は、他のパーティションにとって正常にアクセス可能であり、
アドレス領域を画定することができるレジスタのアドレスおよびサイズを規定するエントリ
を含み、
前記プロセッサは、
他のパーティションが、前記少なくとも1つのレジスタによって画定された少なくとも1つのアドレス領域にアクセスすることを許可するように設定され、
他のパーティションが、前記少なくとも1つのアクセス可能なアドレス領域以外のアドレス領域にアクセスすることを拒否するように設定される、
計算システム。
【請求項2】
レジスタのアドレスおよびサイズを規定するエントリを含む前記情報は、少なくとも1組のレジスタのアドレスおよびサイズを規定し、
前記1組のレジスタのそれぞれは、
前記少なくとも1つのアドレス領域を画定するアドレス用の1対のレジスタと、
前記少なくとも1つのアドレス領域にアクセスすることが許可された他のパーティションを特定するレジスタと
を含む請求項1に記載の計算システム。
【請求項3】
コンピュータシステムのコンポーネントに対応した情報でポピュレートされたメモリおよびプロセッサを備えた少なくとも1つのパーティションと、
少なくとも1つの他のパーティションと
を有するパーティショニング可能計算システムであって、
前記情報は、前記少なくとも1つの他のパーティションのプロセッサにとって正常にアクセス可能であり、
アドレス領域を画定することができるレジスタのアドレスを規定するエントリ
を含み、
前記少なくとも1つの他のパーティションは、
前記プロセッサが、前記レジスタの少なくとも1つによって画定された少なくとも1つのアクセス可能なアドレス領域にアクセスすることを許可するように設定され、
前記プロセッサが、前記少なくとも1つのアクセス可能なアドレス領域以外のアドレス領域にアクセスすることを拒否するように設定される
計算システム。
【請求項4】
アドレスを規定する前記エントリは、
それぞれがレジスタのブロックのベースアドレスを含んだエントリ
を含む
請求項3に記載の計算システム。
【請求項5】
前記情報は、
アクセス可能なアドレス領域の許可されたアドレスの範囲を画定するエントリ
を含む
請求項3または4に記載の計算システム。
【請求項6】
プロセッサと、
レジスタと、
コンピュータシステムのコンポーネントに対応した情報でポピュレートされたメモリと
を備えた少なくとも1つのパーティション
を有するパーティショニング可能計算システムであって、
前記情報は、
前記レジスタのアドレスおよびサイズを規定するエントリ
を含み、
前記レジスタは、前記少なくとも1つのパーティションに割り込みを送信することを許可された他のパーティション、および、他のパーティションが前記少なくとも1つのパーティションに送信することを許可された割り込みベクトルのうちの少なくとも1つを列挙する
計算システム。
【請求項7】
前記レジスタは、前記少なくとも1つのパーティションに割り込みを送信することを許可された他のパーティションを列挙し、
前記少なくとも1つのパーティションは、別のパーティションが前記レジスタに列挙されていない場合に、前記別のパーティションによって送信された割り込みを拒否するように設定される
請求項6に記載の計算システム。
【請求項8】
前記レジスタは、他のパーティションが前記少なくとも1つのパーティションに送信することを許可された割り込みベクトルを列挙し、
前記少なくとも1つのパーティションは、別のパーティションによって送信された割り込みベクトルが前記レジスタに列挙されていない場合に、前記割り込みベクトルを拒否するように設定される
請求項6または7に記載の計算システム。
【請求項9】
前記情報は、
エラー割り込みベクトルを列挙するレジスタのアドレスおよびサイズを規定するエントリ
を含み、
前記少なくとも1つのパーティションは、別のパーティションが前記レジスタに列挙されていない割り込みベクトルを送信した場合に、前記プロセッサに前記エラー割り込みベクトルを送信するように設定される
請求項6〜8のいずれかに記載の計算システム。
【請求項10】
情報でポピュレートされた前記メモリは、
前記情報の読み出しを許可され、前記情報の変更を許可されないハードウェアデバイス
を備える
請求項1〜9のいずれかに記載のパーティショニング可能計算システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate