JP2006040286A - パーティショニングされたデバイス間の通信 - Google Patents
パーティショニングされたデバイス間の通信 Download PDFInfo
- Publication number
- JP2006040286A JP2006040286A JP2005213850A JP2005213850A JP2006040286A JP 2006040286 A JP2006040286 A JP 2006040286A JP 2005213850 A JP2005213850 A JP 2005213850A JP 2005213850 A JP2005213850 A JP 2005213850A JP 2006040286 A JP2006040286 A JP 2006040286A
- Authority
- JP
- Japan
- Prior art keywords
- partition
- window
- interrupt
- partitions
- channel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
Abstract
【解決手段】 本発明は、他のパーティションにとってほぼ常にアドレス可能あり、かつ、アドレス領域を画定する少なくとも1つのレジスタをパーティションに設けること、他のパーティションが、少なくとも1つのレジスタによって画定された少なくとも1つのアドレス領域にアクセスすることを許可すること、および他のパーティションが、少なくとも1つのアクセス可能アドレス領域以外のアドレス領域にアクセスすることを防止することによって、パーティション間の通信を提供する。
【選択図】図1
Description
「パーティショニング」は、大規模システムを、完全には隔離されていないが、あるパーティションから別のパーティションへのアクセスが制限される部分に分割する機構を示す。
パーティショニングは、例えば、あるパーティションの機能不良が別のパーティションの働きを妨害する危険性を低減するのに使用することができる。
パーティショニングは、例えば、あるパーティションの悪意のあるアクティビティが他のパーティションを妨害し得る危険性を低減するのに使用することができる。
パーティショニングは、例えば、プログラマが他のパーティションの存在を無視することを可能にすることによって、プログラミングを簡単にするのに使用することができる。
この場合、通信は、パーティショニングを過度に弱めることなく行われるように設定することができる。
http://www.acpi.info
回復不能なエラーが第1のパーティションに発生すると、第1のパーティションはシャットダウンし、第2のパーティションはオペレーションを続ける。
回復不能なエラーが第1のパーティションと第2のパーティションとの間に通信を提供するファブリックに発生すると、第1のパーティションおよび第2のパーティションはオペレーションを続ける。
しかしながら、本発明は、図示した正確な形態に限定されるものではない。
本実施の形態では、「セル」は、大規模コンピュータシステムの物理的な区画であり、通常、物理メモリを含んだアドレス空間を有する中央処理装置、ならびに、さまざまな周辺デバイスおよび補助デバイスを含む。
本実施の形態では、各セルは、1つまたは2つ以上のプロセッサを含む。
本実施の形態では、入力する通信は、主としてセルのレベルで制御される。
「パーティション」は、大規模コンピュータシステムの管理上の区画であり、この管理上の区画は、他のパーティションからほとんど独立して機能し、他のパーティションへのアクセスが制限される。
本実施の形態では、各パーティションは1つまたは2つ以上のセルを有することができる。
各パーティションは、少なくとも1つのセル11、13をそれぞれ備える。
セル11は、少なくとも1つの中央処理装置(CPU)14、プロセッサインターフェース15、メモリコントローラ18、および割り込みハンドラ22を備え、セル13は、少なくとも1つの中央処理装置(CPU)16、プロセッサインターフェース17、メモリコントローラ20、および割り込みハンドラ24を備える。
これら2つのパーティションは、構造上、実質的に同一のものとすることができる。
2つのパーティションは、同じオペレーティングシステムを実行することができる。
一方、以下で説明するように、2つのパーティション10、12間の相互作用が非常に限られているので、それぞれが、説明する構造および方法を実施して使用することができるという条件で、2つのパーティションは、異なって構成することができ、かつ/または、異なるオペレーティングシステムを実行することができる。
次に、プロセッサインターフェース15、17は、その割り込みを宛先セルの割り込みハンドラ24、22に渡す。
宛先セルの割り込みハンドラ24、22は、その割り込みを宛先CPU16、14に直接渡すことができる。
それ以外に、各プロセッサインターフェース15、17は、それ自身のセルのCPU14、16、メモリコントローラ18、20、および割り込みハンドラ22、24と通信し、他方のセル13、11のメモリコントローラ20、18と通信する。
プロセッサインターフェース15、17は、異なるパーティション10、12にまたがるデータリンクを介して任意の便利な方法で異なるパーティションと通信する。
各1対のアドレスレジスタ26、28は、共有ウィンドウ30の上限アドレスおよび下限アドレスを収容する。
この共有ウィンドウ30は、他のパーティションにアクセス可能なアドレス領域であり、このアドレス領域は、通常、物理メモリの領域である。
共有設定レジスタ38は、メモリの読み出し要求を発信できる、システムのセルのリストを収容し、それら要求のいずれが、関連した共有ウィンドウ30の読み出しを許可されるかを示す。
簡略化するために、図1は、2つのパーティション10、12のそれぞれにおいて、1つのセル11、13、1つの共有ウィンドウ30、およびその関連した共有レジスタのみを示している。
しかしながら、この実施の形態では、数個のセルがあってもよく、また、各セルには数個の共有ウィンドウ30があってもよい。
この場合、各セルは、異なる共有ウィンドウ30を使用して、他の異なるセルまたはパーティションと通信することができる。
以下で説明するように、必ずしも、共有ウィンドウ30とセルまたはパーティションとの1対1の対応があるとは限らない。
この実施の形態では、各CPU14、16には、通信が必要となる場合があるそれぞれの他方のセルの完全な1組の共有レジスタ26、28、38のベースアドレスまたは開始アドレスが提供される。
さらに、各CPU14、16は、それぞれの他方のセルのすべての共有レジスタがローカルセルの共有レジスタと同じ配置を有すると仮定することによって、それぞれの他方のセルのすべての共有レジスタを検出することができる。
代替的に、CPU14、16には、そのCPUが通信できるそれぞれの他方のセルの共有レジスタのレイアウトを含んだデータファイルを提供することもできる。
代替的に、対称的なシステムでは、共有レジスタ26、28、38は、それらの各パーティション内で対称的なロケーションとすることもできる。
さらに、各CPUには、各パーティションのアドレス範囲(通例、他の目的で必要となる)、および、パーティションベースアドレスから共有レジスタ26、28、38のロケーションへのオフセットのみを提供する必要がある。
この実施の形態では、パーティションが2つ以上のCPUを含む場合に、この情報は、パーティションの単一のロケーションに保持される。
この単一のロケーションは、パーティションのすべてのCPUが当該ロケーションからその情報にアクセスできるロケーションである。
非対称的なシステムでは、中央スーパバイズプロセッサ(図示せず)が、レジスタロケーションの信頼性のあるリストを保持して分配する役割を有することがある。
代替的に、メモリコントローラ18、20は、リモートCPUが、関連した共有ウィンドウ30へのアクセスを許可されたことを共有設定レジスタ38が示す場合にのみ、その特定のリモートCPUがレジスタを読み出すことを許可することができる。
メモリコントローラ18、20は、あるパーティションのCPUが別のパーティションのレジスタの内容を変更することを許可しない。
ウィンドウ30に関連した共有設定レジスタ38は、どのリモートパーティションがそのウィンドウの内容の読み出しを許可されているかを特定する。
共有ウィンドウのローカルCPU14、16のみが、その共有ウィンドウ30の内容を変更することができる。
メモリコントローラ18、20は、リモートCPUがアクセスを認可された共有ウィンドウと、共有レジスタ26、28、38とを除いて、その特定のリモートCPUがそのアドレス空間のどの部分にアクセスすることも許可しない。
読み出し要求は、その要求が、共有ウィンドウ30内のアドレス範囲を指定するものであり、かつ、その共有ウィンドウの読み出しを認可されたリモートCPUから発信されたものである場合にのみ許可される。
プロデューサポインタ34は、データ領域32の位置を示し、この位置まで、ローカルプロセッサは有効なデータを書き込んでいる。
また、各共有ウィンドウ30は、コンシューマポインタ36およびリモートチャネル識別情報(ID)37も含む。
さらに、各CPUは、プロデューサポインタ34を使用して、新たに書き込まれたデータを示し、コンシューマポインタ36を使用して、他方のCPUが提供したデータをどれだけ読み出したかを示す。
CPUは、他方のCPUのパーティションのデータを変更できないので、それ自身の共有ウィンドウ30のコンシューマポインタ36を使用して、リモート送信キュー32をどれだけ読み出したかを信号で伝える。
各CPU14、16は、送信側CPUが、読み出しを待っている新たなデータを当該送信側CPUのパーティションの送信キュー32に置くと、他方のCPUの割り込みハンドラ22、24に割り込みを送信して他方のCPUに注意を喚起することができる。
この情報は、パーティション番号、ノード番号またはセル番号、およびセル内のウィンドウ番号のうちの1つまたは2つ以上を含むことができる。
これは、該当するリモートCPUへの確認として機能し、また、その共有ウィンドウの読み出し許可を受けることができる他のあらゆるCPUに対する、そのウィンドウがその特定の対話に割り当てられたことの通告として機能する。
各チャネルは、送信キューまたはデータ領域32a、32b、…、32i、…、32nと、プロデューサポインタ34a、34b、…、34i、…、34nと、コンシューマポインタ36a、36b、…、36i、…、36nと、チャネルヘッダ40a、40b、…、40i、…、40nとを有する。
ウィンドウ内のチャネル数は、特定の事例の状況に従って決定することができる。
チャネル数は、一定として、システムのすべての共有ウィンドウについて同一とすることもできるし、ウィンドウごとに決定することもできる。
チャネル数がウィンドウごとに決定される場合、その情報は、そのウィンドウを使用する2つのプロセッサによってキャッシュすることもできるし、共有ウィンドウ30内のウィンドウヘッダ40に記録することもできるが、任意の特定のチャネルに割り当てることはできない。
これによって、異なるプロセスが単一のチャネルを共有資源として使用することを可能にするのに必要なオーバーヘッドが省かれると同時に、同じ1対のプロセッサ間でいくつかの個別の共有ウィンドウを有するという複雑さが回避される。
さらに、1対の共有ウィンドウ30内で数対のチャネルを使用して通信を行う手順は、数対の共有ウィンドウを使用して通信を行う上述したプロセスとほぼ同様である。
代替的に、個別のチャネルを使用して、1対のプロセッサ14、16間のデータ転送の容量および柔軟性を高めることもできる。
これには、共有レジスタ26、28、38の組の個数を削減する利点がある。
単一のウィンドウを使用して2つ以上のリモートプロセッサと通信することの不利な点としては、プライバシーの低減がある。
その理由は、共有ウィンドウ30へのアクセスがウィンドウごとに制御され、その結果、リモートプロセッサは、他のプロセッサのチャネルの通信を含めて、同じウィンドウのすべての通信を読み出すことができるからである。
しかしながら、リモートプロセッサは、共有ウィンドウの内容を変更できないので、他の2つのプロセッサ間の通信を変更することも、混乱させることもできない。
そして、共有設定レジスタ38は、最初は、他のパーティションのその「ウィンドウ」へのアクセスが許可されないステータスに設定される。
この1組のデバイスまたはオブジェクトは、この実施の形態では、ACPI(アドバンストコンフィギュレーションアンドパワーインターフェース)ファームウェアデバイスまたはオブジェクトである。
セルのCPUがブートアップする際に、このACPIファームウェアデバイスまたはオブジェクトから、構成情報がロードされる。
第1のACPIデバイスは、そのCPU自身のメモリコントローラ18、20内の共有レジスタ26、28、38のアドレスを提供する。
共有レジスタが連続したブロックを形成し、それらレジスタの個数、サイズ、および順序が別に規定される場合には、そのブロックの単一の開始アドレスで十分な場合がある。
しかしながら、この実施の形態では、各レジスタが明示的に規定され、各ウィンドウ30の1組の3つの共有レジスタは、ACPIデバイスとして定義される。
ソースコードで表すと、ACPIデバイスの定義の一般的なものは次のように書かれている。
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
}
各レジスタの開始アドレスである一般的な16進アドレスは、もちろん、各ウィンドウ30につき異なる。
この例では、16個の連続したSHARE_SETレジスタと、16個の連続したSHARE_LOWERレジスタと、16個の連続したSHARE_UPPERレジスタとが、連続したレジスタのブロックを形成することができる。
ただし、他の配置も可能である。ACPI階層では、GSMxデバイスは、自身が属する「ノード」またはセルのすぐ下に割り当てられる。
この静的な情報は、第2のパーティションと一致する必要はなく、ウィンドウが存在する間は変わらない。
ウィンドウに単一のチャネルが存在する場合に、「静的な」ヘッダは、リモートチャネルID37を含むことができる。
この段階で、第1のパーティションは、共有ウィンドウ30を共に使用することになるリモートパーティション12のその情報を知っている。
共有ウィンドウ30用に割り当てられた物理メモリは、第1のパーティション10内の任意の利用可能なメモリとすることができる。
一方、第1のパーティション10が2つ以上のセルを有する場合、メモリコントローラ18が共有ウィンドウ30の完全な制御を有するように、共有ウィンドウ30は、制御側CPU14およびメモリコントローラ18のセル内に完全に含まれるメモリに存在することが好ましい。
2つ以上のセルにわたってインターリーブされるメモリが使用される場合、そのメモリの制御は、通常、関与するセルのメモリコントローラ18間で共有され、完全性を確保することはあまり容易ではない。
この動作には、セル11が2つ以上のプロセッサを含む場合に、どのプロセッサ14にベクトルを送信するかを指定することが含まれ得る。
本実施の形態では、ウィンドウ制御割り込みは、指定されたプロセッサに送信された、指定されたベクトルを有する。
セルの異なるプロセッサに送信された同じベクトル、または、同じプロセッサに送信された異なるベクトルは、同じウィンドウ制御割り込みとしては認識されず、独立して割り当てられて機能を有することができる。
次に、第1のパーティション10は、割り込みベクトルと、ターゲットプロセッサのアドレスとをウィンドウヘッダ40に表示する。
ウィンドウヘッダ40では、そのウィンドウ30にアクセスすることが許可された他のどのセルも、それら割り込みベクトルおよびアドレスを読み出すことができる。
第2のACPIデバイスは、それらレジスタのアドレスを提供する。
ソースコードで表すと、ACPIデバイスの定義は次のように書かれている。
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
}
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デバイスは、自身が属する「ノード」またはセルのすぐ下に割り当てられる。
次に、ステップ106において、ウィンドウのチャネルごとに、第1のプロセッサ14は、チャネルヘッダ40iのアドレスを与えるポインタをウィンドウヘッダ40に配置する。
次に、ステップ108において、第1のプロセッサ14は、「静的な」情報をチャネルヘッダに記入する。
この実施の形態では、各CPU14、16には、該当するパーティションのローカルセルとシステムの他のセルとの間の通信用の数対のチャネルのデータベースが提供される。
したがって、各チャネルの静的なデータは、特定のリモートパーティションの特定のチャネルを特定するデータを含むことができる。
代替的に、通信が実際に確立されるまで、チャネル対をオープンしておくこともできる。
ステップ112において、「ハロー」メッセージが送信キュー32iに置かれる。
ステップ114において、チャネルのコンシューマポインタ36iが0に設定され、第1のパーティション10が、対応するリモートチャネルの送信キューを読み出すのに依然として検出および開始されていないことが示される。
ステップ118において、そのチャネルが「オープン中(opening)」、すなわち、チャネルがセットアップされたが、リモートパーティション12のチャネルに依然として接続されていないことを示すように、チャネルステータスフラグが設定される。
さらに、共有ウィンドウ30は、単一のデータ領域32、単一のプロデューサポインタ34、および単一のコンシューマポインタ26を有する、図1に示す構成を有することができる。
次に、第1のCPU14は、目的の第2のパーティション12に対応するウィンドウ30を配置するように直ちに試みる。
その代わり、各CPU14、16は、図3に示すように、スタートアップ時に、他のパーティション(実際上、そのCPUが絶えず通信を許可されたシステムの他のあらゆるパーティション)用に共有ウィンドウ30をセットアップすることができる。
各CPU14、16は、それ自身の共有ウィンドウ30をセットアップすると、他のパーティションに対応するウィンドウを配置することに進む。
図12を参照して、このACPIファームウェアオブジェクトは、正確なACPIデバイスとして定義されていない。
その理由は、ACPI標準規格が、デバイスを起動するオペレーティングシステムと同じパーティションの当該デバイスに制限されるからである。
図12に示すテーブルは、個々の製造業者によって全体が定義された「ベンダロング(vendor long)」オブジェクトとしてACPI標準規格の下で定義される。
テーブルのフィールドは次のように定義される。
図12に示すテーブルは、共有ウィンドウを有することができるすべてのセルの情報を含み、それらセルのすべてにグローバルに利用可能である。
ACPI標準規格は、http://www.acpi.infoで入手可能である。
その値は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つの製造業者が偶然に同じ番号を生成できないように生成される意味で「グローバル一意」である。
テーブルの定義が変わる場合、この番号をインクリメントしなければならならい。
CELLは、テーブルに表されたセルの個数Nを与える1バイトの値60である。
各セルにつき、3つのアドレスがある。
これら3つのアドレスの群は、マシン全体に存在するセル(すべてのパーティションをカウントする)と同数存在する。
各セルの3つのアドレスは次の通りである。
上記で与えたGSMiデバイスの例では、CSRベースアドレスは、第1のGSMデバイスのSHARE_SETレジスタ38の開始アドレスである。
この値によって、第1のセル11は、リモートセルのすべてにおいて共有ウィンドウのすべてを検出することが可能になり、それらの共有ウィンドウがローカルセルと共有可能であるかどうかを調べることが可能になる。
セルiの有効ウィンドウ64iの上限は、セルiの共有ウィンドウの最大有効アドレスである。
これら2つの境界の間のアドレス範囲が、セルに利用可能な物理メモリ全体よりも小さい場合には、ステップ102において、第1のセル11は、セルiが、共有ウィンドウ30を、図12のテーブルによって指定された当該共有ウィンドウ自身のセルの有効範囲内に配置していることを保証しなければならない。
本実施の形態では、第1のCPU14は、その共有ウィンドウにアクセスする権利を有しない場合に、受け入れられない要求を示すエラー信号を受信する。
リモートウィンドウ30が図3に示すように依然として初期化されていない場合、第1のCPUは、エラー信号、または、すべてのビットが「拒否」に設定されたリモート共有設定レジスタのコピーのいずれかを受信する。
本実施の形態では、すべてのエラー信号は、「オール1」信号または「−1」信号から成る。
したがって、「拒否」ビットは1であることが好ましい。
意味のあるウィンドウ30を定義するために、上限は下限より大きくなければならない。
ウィンドウが一定のサイズを有しなければならないことや、メモリ境界と位置合わせされていなければならないこと等、他の制約条件も存在することがある。
適合しない1対のアドレスレジスタを故意に使用して、関連した共有ウィンドウ30が利用可能でないことを示すこともできるし、第2のパーティション12の問題の徴候を示すこともできる。
また、第1のセル11は、それらの値をチェックして、それらの値が図12のテーブルから得られた第2のセルの有効ウィンドウの上限よりも小さいことも検証しなければならない。
第2のセル13のレジスタ26、28のアドレスを図12のテーブルに対して検証することによって、誤ったエントリにより、第1のプロセッサ14がメモリの不適切な領域の読み出しを試みることになる危険性が低減される。
このメモリは、例えば、アクセスできないメモリ、存在しないメモリ、および/または、第2のパーティション12に存在しないメモリである。
このような不適切な読み出しの試みによって、第1のプロセッサのオペレーションは遅延する可能性があり、いくつかの状況では、その試みの結果、回復が困難なエラー状態になるおそれがある。
有効なデータが受信されると、第1のパーティション10は、ウィンドウ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の値を置いて、チャネルが未指定であることを示す。
これは、事前に割り当てられたチャネルが使用される場合にのみ行われる。
次に、ステップ142において、第1のプロセッサ14は、自身の対応するチャネルのステータスを「オープン(open)」に設定し、そのチャネルが別のセルのチャネルに合致しており、通信に利用可能であることを示す。
一方、この段階で、第2のCPU16は、チャネルが合致していることに気付いておらず、第2のパーティション12のチャネルは、第2のCPUがチャネルをセットアップする時に、依然として、ステップ118で割り当てられた「オープン中」のステータスを有する。
次に、第1のプロセッサ14は、その割り込みベクトルを割り込みハンドラ24を介してそのターゲットプロセッサへ送信し、第1のパーティション10のチャネルから「ハロー」メッセージを読み出すように第2のプロセッサ16に通告する。
一方、共有ウィンドウ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つまたは複数の共有ウィンドウである。
本システムが課した制約条件のため、その場合、第1のパーティション10は、目的の第2のパーティション12が適切なチャネルをセットアップするまで、自身の通信の試みを一時中断することができる。
第1のCPU14は、スタートアップ時に自身の共有ウィンドウ30をセットアップしている場合に、後にスタートアップするリモートパーティションとの通信を確立できない場合があり、通例、それらのリモートパーティションが現れて、第1のパーティションにおけるそれらリモートパーティションの対応するウィンドウを探すのを待つ必要がある。
セルをインストールまたはアクティブにすることが許可されたシステムでは、システムの実行中に、第1のCPU14は、ウィンドウがセットアップされる時にシステムの一部を形成しない第2のセル13と共に使用される共有ウィンドウ30、さらには共有チャネル30iをもセットアップすることができる。
このようなどのウィンドウまたはチャネルも、目的の第2のセル13がアクティブになり、図3および図4に関して上述したステップを実行するまで、アクティブでない状態にある。
割り込みは、ステップ118で割り当てられた「オープン中」のステータスを有するチャネル30iに特有のものであるので、第2のパーティションは、その割り込みを、チャネル30iをオープンする要求であると解釈する。
送信された割り込みは、第1のプロセッサ14から第2のプロセッサ16へのメッセージである実際の割り込みベクトルと、双方のプロセッサのアドレスとを含んだパケットである。
本実施の形態では、与えられた宛先アドレスは、単一のプロセッサ16を特定することが好ましい。
第2のパーティションの割り込みハンドラ24は、図7に関して以下で説明するように、この割り込みを検証する。
本実施の形態では、割り込みハンドラ24は、割り込みの送信元アドレスを第2のCPU16に転送しないが、実際の割り込みベクトルのみを転送する。
特定の第2のCPU16に送信された特定の割り込みベクトルは、パーティション12内のローカルチャネルを一意に特定するが、リモートチャネルを特定しない。
次に、ステップ148において、第2のCPU16は、他のどのプロセッサが、自身との通信を試みているかを決定する。
チャネル割り当てが事前に決定されていると、第2のCPU16は、該当するローカルチャネルが割り当てられるリモートチャネルを捜して、割り当てられたリモートチャネルと接触することができる。
したがって、ステップ148は、第2のプロセッサ16が、待っている「ハロー」メッセージを検出するまで、図5の後続のステップ149を繰り返すことから構成することができる。
チャネルが部分的に事前に割り当てられている場合、第2のCPU16は、割り込みのほぼ正確な発信源を推定できる場合があり、そのほぼ正確な発信源のリモート共有ウィンドウ30のみをポーリングすることができる。
代替的に、送信元アドレスが割り込みと共に転送される場合、第2のCPU16は、ステップ148で送信元アドレスを読み出すことができ、次いで、第2のCPUは、図5のステップ149を実行して、セル11、パーティション10、または割り込みの送信元アドレスによって特定された他の近傍の共有ウィンドウ30のみをポーリングすることができる。
受信した割り込みが不完全な送信元アドレスを運ぶ場合、割り込みハンドラ24は、異なる送信元からの類似した割り込みをキューに入れて転送しなければならず、また、第2のプロセッサ16は、このような各割り込みを個別に処理しなければならない。
代替的に、第1のプロセッサ14は、ステップ146で割り込みを送信した後、適切な遅延を待つことができ、次いで、ステップ149において、第1のプロセッサ14は、ステップ130〜144を繰り返して、第1のプロセッサ14にとってオープンした共有ウィンドウ30が現在第2のパーティション12にあると判断する。
これは、適切な第2のチャネル30iが依然としてセットアップされていないことによるか、または、第1のパーティションが2つのパーティション間で使用するチャネル数を増加させたく、増加を許可されることにより生じる場合がある。
その場合、第1のパーティション10は、適切なローカルチャネル30iをセットアップし、次いで、ステップ104で割り当てられたウィンドウ制御割り込みを第2のパーティションに送信する。
このウィンドウ制御割り込みに応答して、ステップ152において、第2のパーティションは、第2のウィンドウ30の新たなチャネル30iをセットアップする。
次に、ステップ154において、第2のパーティションは、リモートチャネルを第1のパーティション10に配置し、上述したような通信を確立する。
ウィンドウ制御割り込みは、割り込みを送信したセルを具体的に特定しないので、第2のパーティションは、図6に示すように、適切なリモートウィンドウを検索する。
この場合、図4に示す検索および照合のプロセス全体を実行することは必要でない場合がある。
その理由は、ウィンドウ制御割り込みが、第2のウィンドウ30を読み出することを許可されたセルであって、ウィンドウ制御割り込みを第2のパーティションに送信することを許可されたセルから来たものに違いないことを第2のパーティション12が知っているからである。
特定の対のウィンドウが事前に割り当てられている場合、検索は、1対のチャネルを、該当する第2のウィンドウ30と適切に共有できる第1のセルとなり得るもののウィンドウにさらに制限することができる。
図7では、割り込みを受信したパーティションは第2のパーティション12と呼ばれるが、本実施の形態では、入力する割り込みを受信したあらゆる割り込みハンドラによって同じ検証手順が実行される。
ステップ156において、割り込みハンドラ24は割り込みを受信し、ステップ157において、割り込みハンドラは、その割り込みの送信元アドレスおよび宛先アドレスを検査して、それらのアドレスにアクセスする。
送信元が、ターゲットCPU16が高く信頼したプロセッサ、例えば、ターゲットCPU16と同じパーティション12のプロセッサである場合、割り込みハンドラ24は、ステップ158でさらに検査することなく、その割り込みを転送することができる。
ステップ159において、ホストは、その割り込みに応じた適切などんな動作でも実行する。
ステップ161において、ホストプロセッサはゲストプロセッサ14に応答しない。
所定の時期に、ステップ162において、ゲストプロセッサ14はタイムアウトし、通信の試みを中止する。
ステップ164において、割り込みハンドラ24は、割り込みがアドレス指定されたターゲットプロセッサをINT_TARGET_ENABLEレジスタと照合する。
ターゲットプロセッサが許可されない場合、割り込みはステップ160で廃棄される。
ターゲットプロセッサが許可される場合、ステップ165において、割り込みベクトルがINT_VECTOR_ENABLEレジスタと照合される。
ターゲットベクトルが許可されない場合、その元の割り込みはステップ166で廃棄され、ステップ168で、元の割り込みで指定されたターゲットプロセッサへの割り込みに置き換えられる。
しかしこの割り込みは、INT_ERROR_VECTORレジスタが指定した割り込みベクトルを有する。
ターゲットベクトルが許可されると、割り込みハンドラ24は、ステップ158でプロセッサ16に割り込みを送信する。
本実施の形態では、異なるパーティションの第1のプロセッサ14からの割り込みは、通常、その割り込みがステップ104でウィンドウ制御割り込みとして割り当てられたものであるか、または、ステップ116でチャネルメッセージ割り込みとして割り当てられたものである場合に限って受け取ることができる。
第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は、メッセージがどのリモートセルのチャネルにあるかを知る。
第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からメッセージを読み出したことを確認する。
最終的には、会話は終了する。
以下では、第1のCPU14がクローズを開始するものと仮定する。
次に図9を参照して、ステップ190において、第1のCPU14は、まず、リモートコンシューマポインタ36とローカルプロデューサポインタ34とを比較する。
ステップ192において、リモートプロセッサがローカル送信キューの最後のメッセージを依然として読み出していない場合、第1のプロセッサ14は、リモートプロセッサが最後のメッセージを読み出すのを待たなければならない。
第1のプロセッサ14は、リモート送信キューの最後のメッセージを依然として読み出していない場合に、そのメッセージを読み出し、ローカルコンシューマポインタを更新して、メッセージが読み出されたことを示す。
ステップ196において、第2のプロセッサ16は、リモートウィンドウ30のチャネルを読み出す。
第2のプロセッサは、新たなメッセージがなく、ステータスが「クローズ中」に設定されていることを知る。
ステップ198において、第2のプロセッサ16は、それ自身のチャネルのステータスを「クローズ済み(closed)」に設定して、チャネルメッセージ割り込みを第1のプロセッサ14に送信することにより応答する。
ステップ200において、第1のプロセッサ14は、その応答を見て、ローカルチャネルのステータスを「クローズ済み」に設定する、次に、各プロセッサは、チャネルメッセージ割り込みを割り当て解除することができ、ステップ106〜110で設定された、ウィンドウ定義により固定されないヘッダデータのいずれもヌルに設定することができる。
このウィンドウのクローズは、下限レジスタ26および上限レジスタ28をヌル設定または無効な設定に設定すること、共有設定レジスタ38を「全拒否」設定またはヌル設定に設定すること、および、このウィンドウ自体に割り当てられたメモリと、ステップ104で割り当てられたウィンドウ制御割り込みと、ステップ200で割り当て解除されなかったあらゆるチャネルメッセージ割り込みとを割り当て解除すること、によって行われる。
システムの実行中に、ウィンドウ30がクローズされることがある。
その理由は、そのウィンドウが配置されたセル11、13またはパーティション10、12がクローズダウンまたは再起動する必要があるか、または、それ以外に、ウィンドウに割り当てられた資源を解放する必要があるからである。
これは、オープンのチャネルを含まないオープンのウィンドウを有する別のセルまたはパーティションを残すことがある。
本実施の形態では、そのウィンドウは、通例、オープンの状態に維持され、その結果、クローズしたウィンドウを有するセルが再起動する時、そのセルは、図3および図4に関して上述したステップに従うことによって通信を容易に確立することができる。
セルを除去するか、または、置き換える必要がある場合、新たなセルは、他のセルまたはパーティションのいずれも再構成する必要なく、除去されたセルのウィンドウ割り当ておよびチャネル割り当てを再開することができる。
パーティションのあるセルが切断されると、切断されたセルが通信を行う他のパーティションに、切断されたセルと同じパーティションの他のセルとの数対のチャネルを追加して確立するように指令することができる。
切断されたセルが回復するか、または、置き換えられると、これらの追加された接続をクローズすることができ、切断されたセルへの接続は回復する。
ゲストパーティションの故障は、一般に、ホストパーティションに影響を与えない。
回復不能なエラーがゲストパーティションに発生すると、ゲストパーティションはシャットダウンするが、ホストパーティションはオペレーションを続ける。
最悪の場合、ホストパーティションは、ゲストパーティションが共有ウィンドウ30のメッセージを読み出したという確認を受信せず、接続は最終的にはタイムアウトする。
ステップ252において、ゲストプロセッサインターフェース15は、ホストメモリ20の「タイムアウトフラグ」が設定されているかどうかをチェックする。
タイムアウトフラグは、最初は、未設定であり、したがって、プロセスが最初にステップ252に達した時、プロセスはNOに分岐する。
次に、ステップ254において、ゲストプロセッサインターフェース15は、ホストメモリ20にデータを要求する。
ステップ256において、ホストパーティションが、「良好な」応答、すなわち、要求されたデータを供給する明確で有効な応答、を送信すると、ステップ258において、ゲストプロセッサインターフェース15は、要求側のゲストCPU14にデータを返す。
接続が故障しなかった場合または回復した場合、ゲストパーティション10は、ホストメモリ20からのデータを必要とするごとに、ステップ250〜258を繰り返すことになる。
この実施の形態では、エラーメッセージは、有効にすることができない内容を有するデータパケットから構成することができる。
例えば、パケットフォーマットが、有効などのパケットもすべて1から構成されないようにしている場合に、ゲストプロセッサインターフェース15は、ゲストCPU14に、すべて1を含むデータパケットを供給することができる。
次に、プロセスは、さらに動作を行うことなくステップ250に戻る。
ステップ256において、要求に対する応答が、ホストメモリ20から全く受信されない場合、ゲストプロセッサインターフェース15は、応答が単に遅れているだけでなく存在しないことを確実にするために、タイムアウト期間が終了するまで待つ。
次に、ステップ264において、ゲストプロセッサインターフェース15は、「エラー」データを要求側CPUに返すメッセージを組み立てるステップ262に進む前に、ホストメモリ20のタイムアウトフラグを設定する。
タイムアウトフラグは、ホストメモリ20への接続が完全に喪失したものと仮定するように図10のプロセスに命令する効果を有する。
このように、ゲストパーティション10は、通常ならば、ステップ256においてタイムアウト期間が満了するのを待つことで費やされる時間をバイパスしている。
これによる最悪の結果は、ゲストパーティションによるその後の作業が、ホストパーティションからのデータが利用可能でないことによって不必要に妨げられるおそれがあり、処理時間をいくらか損失することである。
本実施の形態では、所有権の付与は、通例、そのデータを変更する「書き込み」許可を移転するものではなく、データが変更されないことの保証を移転するものである。
したがって、ホストパーティション12は、そのデータを変更するそれ自身の「書き込み」許可を一時中止する。
ステップ212において、2つのパーティション間の接続がそれらの状況下で故障すると、ホストパーティション12は、ゲストパーティション10がそのデータを現状のまま維持する必要が依然としてあるかどうかを知ることはできない。
接続は、ゲストパーティション10の問題が原因で故障することもあるし、2つのパーティションを接続するファブリックの問題が原因で故障することもある。
その故障がどの程度の重度のものであるかは、ホストパーティション12にすぐに明らかでないことがある。
確かに、ホストパーティション12は、そのゲストパーティション10と次に通信を試みるまで、故障が存在することを発見することができない。
ゲストパーティション10は、致命的なエラーを受けて、シャットダウンする必要がある場合に、他のパーティションから借りたすべてのデータを返すことが理想的ではあるが、これは可能でない場合がある。
この要求は、データのゲストパーティションの所有権と矛盾するものである。
ステップ216において、ホストメモリ20は、ゲストCPU14の「タイムアウトフラグ」が設定されているかどうかをチェックする。
タイムアウトフラグは、最初は未設定であり、したがって、プロセスが最初にステップ216に達した時、プロセスはNOに分岐する。
次に、ステップ218において、ホストメモリ20は、データを「リコール(recall)」するように試みる。
これは、そのデータが現状のままであることを信用するゲストパーティションの権利を無効にする効果を有する。
ステップ220において、ゲストパーティションが、「良好な」応答、すなわち、リコールを受け取り、データの所有権を引き渡す明確で有効な応答、を送信すると、ステップ222において、ホストメモリ20は要求側CPUにデータを返す。
接続が故障しなかった場合または回復した場合、ホストメモリ20は、ゲストCPU14からの所有権をリコールする必要があるデータ要求を受信するごとに、ステップ214〜222を繰り返すことになる。
次に、プロセスは、さらに動作を行うことなくステップ214に戻る。
ステップ220において、リコール要求に対して、応答がゲストCPU14から全く受信されない場合、ホストメモリ20は、応答が単に遅れているだけでなく存在しないことを確実にするために、タイムアウト期間の終了まで待つ。
次に、ステップ226において、ホストメモリ20は、データを要求側CPUに返すメッセージを組み立てるステップ222に進む前に、ゲストCPU14のタイムアウトフラグを設定する。
タイムアウトフラグは、ゲストCPU14への接続が完全に喪失したものと仮定するように図10のプロセスに命令する効果を有する。
このように、ホストメモリ20は、通常ならば、ステップ220においてタイムアウト期間が満了するのを待つことで費やされる時間をバイパスしている。
これによる最悪の結果は、リコールされたデータがもはや有効ではない場合に、ゲストパーティションによるその後の作業がそのデータに依拠するおそれがあり、いくぶん無駄な作業になることである。
したがって、ホストパーティションは、共有ウィンドウのデータ領域32をアクティブな作業メモリとして使用することが可能である。
代替的に、メッセージを非共有メモリで準備することができ、次いで、専ら共有の目的のみで共有ウィンドウ30にコピーを置くことができる。
共有メモリに置かれたコピーは、その後、特に共有の目的で生成されたチェックワードまたは他の認証データと共に容易に提供することができる。
本実施の形態では、すべてが1から成るメッセージがエラー信号として使用される。
したがって、1の長い列から成る可能性があるデータを送信する場合、チェックビットまたはチェックワードを含めることができ、データのメッセージがすべて1にならないように、これらのチェックビットまたはチェックワードを定義することができる。
ホストパーティションに「致命的な」エラーがあっても、ゲストパーティションにとって致命的ではない。
回復不能なエラーがホストパーティションに発生すると、ホストパーティションはシャットダウンするが、ゲストパーティションはオペレーションを続けることができる。
一方、この実施の形態では、故障は、明示的なエラーメッセージの形でホストパーティションからゲストへ通信されるか、または、タイムアウト前の応答の失敗によって通信される。
応答の失敗は、ゲストパーティションのプロセッサインターフェースによって、明示的なエラーメッセージに変換することができる。
その後、ゲストパーティションは、適切な損傷軽減対策を続けることができる。
2つのパーティション間の共通の通信媒体の故障も、同様に、対話のタイムアウトにしかならない。
一方、本実施の形態では、異なるパーティションを接続する通信ファブリックも、パーティション内のセル間の通信に使用することができる。
その結果、そのファブリックの故障は、2つのパーティション間の通信に対するその影響から独立して、一方または双方のパーティション内の故障を構成することができる。
敵意のある情報は、その情報をプロデューサの共有ウィンドウ30から読み出すようにコンシューマを促すことによってのみ、パーティション10と12との間で転送することができる。
しかしながら、読み出されたマテリアルのハンドリングは、コンシューマパーティションの制御下にあり、コンシューマパーティションは、マテリアルの制御において、自身が望むだけ慎重になることができる。
コンシューマパーティションは、割り当てられたチャネルまたはウィンドウのデータ領域32iの内容のみを読み出し、このチャネルまたはウィンドウは規定されたサイズを有するので、この実施の形態では、受信側パーティションにおいて、指定された書き込み可能領域をオーバーフローする超過した長さのメッセージによって引き起こされるセキュリティの侵害は排除される。
セキュリティは、許可されるメッセージの性質および内容に対して維持された非常に厳密な制御によって保証され、また、準拠しないどのメッセージも廃棄することによって保証される。
例えば、図1に示すプロセスは、単一のゲストパーティション10の単一のゲストプロセッサ14と単一のホストパーティション12の単一のホストプロセッサ16との間のプロセスとして説明されている。
しかしながら、上記で説明したように、3つの以上のパーティションが存在することもでき、各パーティションには2つ以上のCPUが存在することもできる。
1つのパーティションにつき2つ以上のCPUが存在できる場合、共有ウィンドウは、個々のCPUとリンクするように設定することができる。
詳細には、各セルが1つまたは2つ以上のプロセッサ、メモリ、および補助デバイスを備える複数のセルにシステムが構造化されると、共有ウィンドウはそれらのセルをリンクすることができる。
さらに、各セルが、指定された他のセルに付与する許可を変更するだけで、セルをパーティションにグループ化することができる。
割り込みまたは他のメッセージがセルに入る2つ以上の物理パスが存在する場合、いずれの割り込みまたはいずれの他のメッセージを承認するか、また、いずれを排除するかを決定する上述した手順は、それぞれがセルに入る時に並列に実行することができる。
代替的に、上述したように、例えば、第1のプロセッサから第2のプロセッサおよび第3のプロセッサへの通信パスは、第1のパーティション内の単一のウィンドウの異なるチャネルを使用することができる。
第2のプロセッサおよび第3のプロセッサは、そのウィンドウの読み出しアクセスしか行わないので、このような機構は、例えば、第2のプロセッサにおける故障が第3のパーティションに悪影響を与える可能性がある実際の危険性を生み出すことはない。
単一のセル、パーティション、または他のエンティティにおける異なる共有ウィンドウ30は、他の異なるパーティションがそれら共有ウィンドウにアクセスすることを許可する共有設定レジスタ38を有することができる。
特定の共有ウィンドウ30が特定の他のパーティションまたはセルと通信するのに割り当てられる場合、その特定の他のパーティションまたはセルのみがその共有ウィンドウを読み出すことを許可するように共有設定レジスタ38を設定することができる。
この場合、対話のすべてが故障した資源を独立に使用する場合を除いて、ある対話における故障は他の対話に影響しない。
代替的に、単一の共有ウィンドウ30をいくつかの対話に使用することもできる。
これらのいくつかの対話が関係しない場合、それら対話のそれぞれに、共有ウィンドウ30の個別の部分を占有するチャネルを割り当てることができる。
このチャネルは、それ自身のプロデューサポインタ34i、コンシューマポインタ36i、およびリモートチャネルID37iを有する。
これによって、別個の共有ウィンドウ30を維持するのに必要なオーバーヘッドが削減される。
信頼できるブロードキャストが確保されると、各読み出し側パーティション10は、コンシューマポインタ36iを有する対応したチャネルを割り当てなければならず、ブロードキャスト側パーティション12は、ブロードキャストを別のデータで上書きする前に当該ブロードキャストを読み出したことを示すために、読み出し側パーティションのすべてが自身のコンシューマポインタ36iを更新したことをチェックしなければならない。
代替的に、接続が、パーティションのほとんどの対またはすべての対の間で正常にオープンしていると、パーティション対パーティション接続を使用して、ブロードキャストメッセージを各受信側パーティションに個別に送信することもできる。
11,13・・・セル,
14,16・・・中央処理装置(CPU),
15,17・・・プロセッサインターフェース,
18・・・メモリコントローラ,
22・・・割り込みハンドラ,
20・・・メモリコントローラ,
24・・・割り込みハンドラ,
26,28・・・アドレスレジスタ,
38・・・共有設定レジスタ,
30・・・共有ウィンドウ,
30i・・・チャネル,
32a〜32n・・・データ領域,
34a〜34n・・・プロデューサポインタ,
36a〜36n・・・コンシューマポインタ,
40a〜40n・・・チャネルヘッダ,
Claims (10)
- パーティションを有する計算デバイスであって、
少なくとも1つのパーティションが、
他のパーティションにとって正常にアクセス可能であり、アドレス領域を画定することができる少なくとも1つのレジスタ
を備え、
前記少なくとも1つのパーティションは、他のパーティションが、前記少なくとも1つのレジスタによって画定された少なくとも1つのアドレス領域にアクセスすることを許可するように設定され、他のパーティションが、前記少なくとも1つのアクセス可能なアドレス領域以外のアドレス領域にアクセスすることを拒否するように設定される
計算デバイス。 - 前記少なくとも1つのアクセス可能なメモリ領域は、別のパーティションから読み出し可能であり、書き込み可能でない
請求項1に記載の計算デバイス。 - 前記少なくとも1つのパーティションは、前記少なくとも1つのアドレス領域にアクセスする試みがどのパーティションから発信されたかを特定するように設定され、他のいくつかのパーティションのみからのアクセスを許可するように設定される
請求項1または2に記載の計算デバイス。 - 少なくとも第2のパーティションが、
他のパーティションにとって常にアクセス可能であり、アドレス領域を画定することができる少なくとも1つのレジスタと、
他のパーティションが、前記少なくとも1つのレジスタによって画定された少なくとも1つのアドレス領域にアクセスすることを許可するように設定され、他のパーティションが、前記少なくとも1つのアクセス可能なアドレス領域以外のアドレス領域にアクセスすることを拒否するように設定されたメモリコントローラと
備える
請求項1〜3のいずれかに記載の計算デバイス。 - 前記パーティションは、割り込み信号を送信することによって通信するように設定され、
前記少なくとも1つのパーティションは、前記少なくとも1つのパーティションが、他のどのパーティションから割り込み信号を受け取るかを指定する情報を提供される
請求項1〜4のいずれかに記載の計算デバイス。 - パーティション間の通信方法であって、
他のパーティションにとって、実質的に常にアクセス可能であり、アドレス領域を画定する少なくとも1つのレジスタをパーティションに設けることと、
少なくとも1つの他のパーティションが、前記少なくとも1つのレジスタによって画定された少なくとも1つのアドレス領域にアクセスすることを許可することと、
他のパーティションが、前記少なくとも1つのアクセス可能アドレス領域以外のアドレス領域にアクセスすることを防止することと
を含む通信方法。 - あるパーティションが、別のパーティションの少なくとも1つのアクセス可能なメモリ領域から読み出すことを許可し、前記メモリ領域に書き込むことを許可しないこと
を含む請求項6に記載の通信方法。 - 他のパーティションが、前記少なくとも1つのレジスタおよび前記少なくとも1つのレジスタによって画定されたアドレス領域にのみアクセスすることを許可すること
を備える請求項6または7に記載の通信方法。 - いくつかのパーティション間の通信について、互いに通信する1群のパーティションの各パーティションに、前記1群の他のパーティションにのみアクセス可能なアクセス可能アドレス領域を設けること
を含む請求項6〜8のいずれかに記載の通信方法。 - パーティション間の通信について、
あるパーティションが別のパーティションに、割り込みを送信する前記あるパーティションの前記少なくとも1つのアクセス可能アドレス領域内に読み出される新たな情報が存在することを示す許可された割り込みを送信することを許可することと、
あるパーティションが、アクセス可能アドレス領域および前記アクセス可能アドレス領域の管理に関係した情報以外の他のパーティションのあらゆるアドレス領域を読み出すことを防止することと、
あるパーティションが、前記許可された割り込み以外の他のパーティションからの割り込みを受信することを防止することと、
あるパーティションが別のパーティションへあらゆるものを書き込むことを防止すること
を含む請求項6〜9のいずれかに記載の通信方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/902,341 US8898246B2 (en) | 2004-07-29 | 2004-07-29 | Communication among partitioned devices |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006040286A true JP2006040286A (ja) | 2006-02-09 |
Family
ID=35733698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005213850A Pending JP2006040286A (ja) | 2004-07-29 | 2005-07-25 | パーティショニングされたデバイス間の通信 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8898246B2 (ja) |
JP (1) | JP2006040286A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010086410A (ja) * | 2008-10-01 | 2010-04-15 | Canon Inc | メモリ保護方法、情報処理装置、メモリ保護プログラム及びメモリ保護プログラムを記録した記録媒体 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007166299A (ja) * | 2005-12-14 | 2007-06-28 | Sony Corp | 固体撮像素子、色分解撮像光学系及び撮像装置 |
JP5292706B2 (ja) * | 2007-02-28 | 2013-09-18 | 富士通セミコンダクター株式会社 | コンピュータシステム |
US10884818B2 (en) | 2018-11-08 | 2021-01-05 | International Business Machines Corporation | Increasing processing capacity of virtual machines |
US10884845B2 (en) * | 2018-11-08 | 2021-01-05 | International Business Machines Corporation | Increasing processing capacity of processor cores during initial program load processing |
US10990434B2 (en) | 2019-02-05 | 2021-04-27 | International Business Machines Corporation | Increasing processing capacity of virtual machines for an abnormal event |
US11327767B2 (en) | 2019-04-05 | 2022-05-10 | International Business Machines Corporation | Increasing resources for partition to compensate for input/output (I/O) recovery event |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5155807A (en) * | 1986-02-24 | 1992-10-13 | International Business Machines Corporation | Multi-processor communications channel utilizing random access/sequential access memories |
US4905141A (en) * | 1988-10-25 | 1990-02-27 | International Business Machines Corporation | Partitioned cache memory with partition look-aside table (PLAT) for early partition assignment identification |
US5210828A (en) * | 1988-12-29 | 1993-05-11 | International Business Machines Corporation | Multiprocessing system with interprocessor communications facility |
US5117352A (en) * | 1989-10-20 | 1992-05-26 | Digital Equipment Corporation | Mechanism for fail-over notification |
US5159673A (en) * | 1990-03-22 | 1992-10-27 | Square D Company | Apparatus for networking programmable logic controllers to host computers |
US5423044A (en) * | 1992-06-16 | 1995-06-06 | International Business Machines Corporation | Shared, distributed lock manager for loosely coupled processing systems |
US5408612A (en) * | 1992-09-09 | 1995-04-18 | Digital Equipment Corporation | Microprocessor system for selectively accessing a processor internal register when the processor has control of the bus and partial address identifying the register |
US5675807A (en) * | 1992-12-17 | 1997-10-07 | Tandem Computers Incorporated | Interrupt message delivery identified by storage location of received interrupt data |
US5964835A (en) * | 1992-12-17 | 1999-10-12 | Tandem Computers Incorporated | Storage access validation to data messages using partial storage address data indexed entries containing permissible address range validation for message source |
JPH06187178A (ja) * | 1992-12-18 | 1994-07-08 | Hitachi Ltd | 仮想計算機システムの入出力割込み制御方法 |
US5394555A (en) * | 1992-12-23 | 1995-02-28 | Bull Hn Information Systems Inc. | Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory |
US5819061A (en) * | 1994-07-25 | 1998-10-06 | International Business Machines Corporation | Method and apparatus for dynamic storage reconfiguration in a partitioned environment |
US5745747A (en) * | 1995-02-06 | 1998-04-28 | International Business Machines Corporation | Method and system of lock request management in a data processing system having multiple processes per transaction |
US5940870A (en) * | 1996-05-21 | 1999-08-17 | Industrial Technology Research Institute | Address translation for shared-memory multiprocessor clustering |
US5933598A (en) * | 1996-07-17 | 1999-08-03 | Digital Equipment Corporation | Method for sharing variable-grained memory of workstations by sending particular block including line and size of the block to exchange shared data structures |
US6151688A (en) * | 1997-02-21 | 2000-11-21 | Novell, Inc. | Resource management in a clustered computer system |
US5944788A (en) * | 1997-03-26 | 1999-08-31 | Unisys Corporation | Message transfer system and control method for multiple sending and receiving modules in a network supporting hardware and software emulated modules |
US5872981A (en) * | 1997-05-30 | 1999-02-16 | Oracle Corporation | Method for managing termination of a lock-holding process using a waiting lock |
US6047391A (en) * | 1997-09-29 | 2000-04-04 | Honeywell International Inc. | Method for strong partitioning of a multi-processor VME backplane bus |
US6314501B1 (en) * | 1998-07-23 | 2001-11-06 | Unisys Corporation | Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory |
US6397345B1 (en) * | 1998-10-09 | 2002-05-28 | Openwave Systems Inc. | Fault tolerant bus for clustered system |
US7233977B2 (en) * | 1998-12-18 | 2007-06-19 | Emc Corporation | Messaging mechanism employing mailboxes for inter processor communications |
US6920616B1 (en) * | 1998-12-18 | 2005-07-19 | Tangis Corporation | Interface for exchanging context data |
JP4123621B2 (ja) * | 1999-02-16 | 2008-07-23 | 株式会社日立製作所 | 主記憶共有型マルチプロセッサシステム及びその共有領域設定方法 |
US6499031B1 (en) * | 1999-07-26 | 2002-12-24 | Microsoft Corporation | Systems and methods for using locks with computer resources |
US6763458B1 (en) * | 1999-09-27 | 2004-07-13 | Captaris, Inc. | System and method for installing and servicing an operating system in a computer or information appliance |
US6590907B1 (en) * | 1999-10-01 | 2003-07-08 | Stmicroelectronics Ltd. | Integrated circuit with additional ports |
US20020144010A1 (en) * | 2000-05-09 | 2002-10-03 | Honeywell International Inc. | Communication handling in integrated modular avionics |
US20010049710A1 (en) * | 2000-05-16 | 2001-12-06 | Curey Randall K. | Partitioned executive structure for real-time programs |
US6985951B2 (en) * | 2001-03-08 | 2006-01-10 | International Business Machines Corporation | Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment |
US7305658B1 (en) * | 2001-05-07 | 2007-12-04 | Microsoft Corporation | Method and system for application partitions |
US6877107B2 (en) * | 2001-07-05 | 2005-04-05 | Softwired Ag | Method for ensuring operation during node failures and network partitions in a clustered message passing server |
EP1415425B1 (en) * | 2001-07-06 | 2019-06-26 | CA, Inc. | Systems and methods of information backup |
US6910108B2 (en) * | 2002-01-09 | 2005-06-21 | International Business Machines Corporation | Hardware support for partitioning a multiprocessor system to allow distinct operating systems |
US7266658B2 (en) * | 2002-09-12 | 2007-09-04 | International Business Machines Corporation | System, method, and computer program product for prohibiting unauthorized access to protected memory regions |
US7181744B2 (en) * | 2002-10-24 | 2007-02-20 | International Business Machines Corporation | System and method for transferring data between virtual machines or other computer entities |
US7035658B2 (en) * | 2003-02-28 | 2006-04-25 | Motorola, Inc. | Wireless communication device and network controller for affiliation with associated groups and method thereof |
US7428598B2 (en) * | 2003-11-20 | 2008-09-23 | International Business Machines Corporation | Infiniband multicast operation in an LPAR environment |
US7099977B2 (en) * | 2004-01-12 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | Processor interrupt filtering |
-
2004
- 2004-07-29 US US10/902,341 patent/US8898246B2/en active Active
-
2005
- 2005-07-25 JP JP2005213850A patent/JP2006040286A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010086410A (ja) * | 2008-10-01 | 2010-04-15 | Canon Inc | メモリ保護方法、情報処理装置、メモリ保護プログラム及びメモリ保護プログラムを記録した記録媒体 |
Also Published As
Publication number | Publication date |
---|---|
US8898246B2 (en) | 2014-11-25 |
US20060026299A1 (en) | 2006-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006040285A (ja) | パーティショニングされたデバイス間の通信 | |
JP4224477B2 (ja) | パーティショニングされたデバイス間の通信 | |
US8346997B2 (en) | Use of peripheral component interconnect input/output virtualization devices to create redundant configurations | |
US8225005B2 (en) | Use of peripheral component interconnect input/output virtualization devices to create high-speed, low-latency interconnect | |
JP4799118B2 (ja) | 情報処理装置、情報処理システム、通信中継装置および通信制御方法 | |
TWI453625B (zh) | 資訊處理裝置及未授權存取之防止方法 | |
CZ20012154A3 (cs) | Architektura přerušení pro systém zpracování dat s neuniformním paměťovým přístupem (numa) | |
JP2006040286A (ja) | パーティショニングされたデバイス間の通信 | |
US20180189094A1 (en) | Virtual machine to host device bridging | |
US8615586B2 (en) | Discovery of logical images at storage area network endpoints | |
US20080137676A1 (en) | Bus/device/function translation within and routing of communications packets in a pci switched-fabric in a multi-host environment environment utilizing a root switch | |
JP6663478B2 (ja) | データ移行方法及び計算機システム | |
US11928070B2 (en) | PCIe device | |
CN107562669B (zh) | 一种NVMe协议命令处理方法、装置及*** | |
KR102568909B1 (ko) | PCIe 펑션 및 그 동작 방법 | |
JPWO2010097925A1 (ja) | 情報処理装置 | |
WO2014206078A1 (zh) | 内存访问方法、装置及*** | |
JP2008021252A (ja) | 計算機システム及びアドレス割当方法 | |
US20140067771A2 (en) | Management of a Scalable Computer System | |
US10936506B2 (en) | Method for tagging control information associated with a physical address, processing system and device | |
US8139595B2 (en) | Packet transfer in a virtual partitioned environment | |
US7266631B2 (en) | Isolation of input/output adapter traffic class/virtual channel and input/output ordering domains | |
JP2001333137A (ja) | 自主動作通信制御装置及び自主動作通信制御方法 | |
CN113497747A (zh) | 存储***、其存储装置及其操作方法 | |
CN116107697A (zh) | 一种不同操作***之间互相通信的方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061121 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070219 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070521 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070918 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20070926 |
|
A912 | Removal of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20071019 |