JP2002532806A - コンピュータ・システムの異なるパーティション中で複数のオペレーティング・システムを動作させ、異なるパーティションが共用メモリを介して相互に通信できるようにするコンピュータ・システムおよび方法 - Google Patents
コンピュータ・システムの異なるパーティション中で複数のオペレーティング・システムを動作させ、異なるパーティションが共用メモリを介して相互に通信できるようにするコンピュータ・システムおよび方法Info
- Publication number
- JP2002532806A JP2002532806A JP2000588687A JP2000588687A JP2002532806A JP 2002532806 A JP2002532806 A JP 2002532806A JP 2000588687 A JP2000588687 A JP 2000588687A JP 2000588687 A JP2000588687 A JP 2000588687A JP 2002532806 A JP2002532806 A JP 2002532806A
- Authority
- JP
- Japan
- Prior art keywords
- partition
- memory
- computer system
- window
- shared memory
- 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
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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Hardware Redundancy (AREA)
- Storage Device Security (AREA)
Abstract
Description
、米国特許商標庁の特許ファイルまたは記録に出ている特許文書または特許開示
を誰がファクシミリ複製しようとも異議を有しないが、その他の場合は、何であ
ろうともあらゆる権利を保持する。
Unixwareは、The Santa Cruz Operation,I
nc.の登録商標である。Microsoft、Window、Window
NTおよび/または本明細書で参照するその他のMicrosoft製品は、M
icrosoft Corporationの商標または登録商標である。In
tel、Pentium、Pentium II Xeon、Merced、お
よび/または本明細書で参照するその他のIntel製品は、Intel Co
rporationの商標または登録商標である。
タ・システム上の異なるパーティション中で複数のオペレーティング・システム
を動作させ、異なるパーティションが共用メモリを介して相互に通信できるよう
にするコンピュータ・システムに関する。
装置(例えばプリンタ、ネットワーク・インターフェース、グラフィック・ディ
スプレイ(図形表示)インターフェース)を含む。コンピュータ・システムは、
データ項目のソースまたは宛先を指定するためのアドレス指定方式を用いる。デ
ータのアクセスを含めたメモリ管理機能、ならびに他の管理機能は、オペレーテ
ィング・システムを介して制御される。様々なオペレーティング・システムが市
販されており、それぞれは、それ自体の独自の特徴および能力を有している。従
来のコンピュータ・システムは、通常、単一のオペレーティング・システムを採
用する。
のオペレーティング・システムを採用する必要性が増している。残念ながら、複
数のオペレーティング・システムは、コンピュータ・システムの動作の複雑さを
かなり増大させる。
ムが、コンピュータ・システム上の異なるパーティション中で動作できるように
し、異なるパーティション中で稼動するオペレーティング・システムおよびその
他のクライアントとを含む、異なるパーティションが、共用メモリを介して相互
に通信できるようにする、コンピュータ・システムおよび方法が必要とされてい
る。
テクチャ内の異なるパーティション中で動作できるようにし、異なるパーティシ
ョンが共用メモリを介して相互に通信できるようにする、コンピュータ・システ
ムおよび方法を対象とする。
ジュールと、メイン・メモリとを含み、各処理モジュールは、メイン・メモリの
すべてにわたりプロセッサ・メモリ待ち時間が各処理モジュールごとに同じにな
るように、メイン・メモリに接続される。1つまたは複数の処理モジュールのグ
ループが、コンピュータ・システム内の別々のパーティションとして構成され、
各パーティションは、別々のオペレーティング・システムの制御下で動作する。
さらに本発明のこの第1の態様によれば、メイン・メモリは、少なくとも1つの
共用メモリ・ウインドウをその中に規定し、この共用メモリ・ウインドウへは、
少なくとも2つの異なるパーティションが共用アクセス権を有する。異なるパー
ティション上で実行されるプログラム・コードにより、これらの異なるパーティ
ションは、共用メモリ・ウインドウを介して相互に通信することができる。
ティションごとに、排他メモリ・ウインドウをその中に規定することもできる。
この排他メモリ・ウインドウへは、そのパーティションだけしかアクセス権を有
さず、そのパーティションのオペレーティング・システムがその中で実行される
。異なる2つのパーティション上にある別々のオペレーティング・システムは、
異なるオペレーティング・システムでもよく、同じオペレーティング・システム
の異なるインスタンスでもよい。
スを管理することにより)可能にするプログラム・コードは、送信するパーティ
ションがプロセッサ間割込みを受信するパーティション上で生成して、共用メモ
リ・ウインドウを介して受信するパーティションに情報が転送されていることを
受信するパーティションに信号(signal)で知らせるための、プロセスを実装す
る。この実施形態によれば、共用メモリ・ウインドウは、各パーティションに関
連付けられた入力待ち行列のセットを含み、所与のパーティションに関連するセ
ット中の各入力待ち行列は、別のパーティションに対応し、その別のパーティシ
ョンからの通信を表すエントリを格納する。あるパーティション(送信するパー
ティション)が別のパーティション(受信するパーティション)と通信するよう
にするために、送信するパーティション上のプログラム・コードは、(i)受信
するパーティションの、送信するパーティションに対応する入力待ち行列中にエ
ントリを作成するようにし、次いで、(ii)受信するパーティション上でプロ
セッサ間割込みを生成して、その入力待ち行列中にエントリが作成されたことを
受信するパーティションに信号(signal)で知らせるようにする。
込みベクトルが各パーティションに1つだけしか割り当てられていない一実施形
態を仮定すると、受信するパーティション上でプロセッサ間割込みが検出された
とき、受信するパーティション上のプログラム・コードは、(i)その入力待ち
行列それぞれを検査して、どの入力待ち行列が他のパーティションからの通信を
表すエントリを含んでいるかを決定するようにし、(ii)そのようなエントリ
を、それらを含む入力待ち行列から抽出するようにする。各入力待ち行列は、そ
の待ち行列中にあるエントリの数のカウントを含むことが好ましい。
能性のある他のパーティションそれぞれに別々の割込みベクトルを割り当て、送
信するパーティションが、プロセッサ間割込みを受信するパーティションに送る
ときに、それに割り当てられた割込みベクトルを指定する一実施形態では、受信
するパーティションは、指定された割込みベクトルを使用して送信するパーティ
ションに関連付けられた入力待ち行列を識別し、それを直接処理することができ
る。この場合、その入力待ち行列すべてを循環すること(各パーティションが共
用メモリのプロセッサ間割込みに割込みベクトルを1つだけしか割り当てない場
合のように)は必要ではない。
モリ・ページも含む。これらを必要に応じてパーティションに割り振って、それ
らの間における情報の通信を容易にすることができる。送信するパーティション
と受信するパーティションの間の通信を表す入力待ち行列エントリは、共用メモ
リ・ウインドウの、割り振られた1つまたは複数のページに対するハンドルを含
むこともできる。送信するパーティションは、割り振られた1つまたは複数のペ
ージを使用して、受信するパーティションに通信すべきメッセージを表すデータ
を格納することができる。
トリを格納することができ、入力待ち行列が一杯になったときに設定されるオー
バーフロー・フラグを含む。送信するパーティションは、入力待ち行列中にエン
トリが作成されたことによってその入力待ち行列が一杯になった場合に、その入
力待ち行列のオーバーフロー・フラグが設定されるようにする。受信する側では
、オーバーフロー・フラグが設定された入力待ち行列に受信するパーティション
が遭遇した場合、受信するパーティションはその待ち行列を空にし、次いでオー
バーフロー・フラグをリセットする。次いで受信するパーティションは、送信す
るパーティションに通信を返信して、入力待ち行列がもはや一杯ではないことを
送信するパーティションに知らせることができる。一杯になった入力待ち行列を
介して通信が送信されようとした場合は、送信するパーティションは、エラーを
返すことができる。別法として、各パーティションは、指定された入力待ち行列
のオーバーフロー・フラグが以前に設定されたせいでその入力待ち行列中に配置
できなかった入力待ち行列エントリを格納するために、その排他メモリ・ウイン
ドウ中の、ある位置を保持しておくこともできる。この排他メモリ・ウインドウ
位置に記憶されたエントリは、指定された入力待ち行列のオーバーフロー・フラ
グが受信するパーティションによってリセットされるまで、そこに留めておくこ
とができる。
ンドウの割り振り可能な各ページごとに、そのページが使用されているか、それ
とも割り振り(allocation)に利用可能かを判定するためのテーブルをさらに含
む。割り振りに利用可能なページは、相互にリンクさせて、利用可能なページの
リンク・リストを形成するのが好ましい。少なくともいくつかのタイプのページ
では、1つまたは複数のパーティションによるページの所有権(ownership)を
、そのページ自体の内にあるヘッダ中に含まれる情報によって示すのが好ましい
。その他のタイプのページの所有権は、各ページの利用可能度も指定するテーブ
ル中の情報によって示すことができる。
ク・フィールドにより、あるパーティションが、例えばあるページのヘッダ中の
所有権情報を更新するために、そのページへの排他アクセス権を獲得することが
できる。このフィールドは、本発明のより広範なロック機構の一部であり、この
ロック機構により、異なるパーティションが必要に応じて、かつ一貫した方式で
、共用メモリ・ウインドウの様々な構造、ページ、およびテーブルへのアクセス
をロックして、一度に1つのパーティションだけしか所与の構造、ページ、また
はテーブルを修正できないようにする(すなわち、これらの構造へのアクセスの
同期をとる)ことができる。本発明のロック機構の重要な機能の1つによれば、
メモリ・ページが最初に割り振られるとき、割り振るパーティションは、割り振
りの間にそのページへのアクセスをロックするために、システム全体のロックを
獲得しなければならない。しかし、割り振られた1つまたは複数のページの所有
権を拡張するか、または他のパーティションに移転するときは、関係するページ
のロックを獲得するだけでよい。この目的で、これらのページ中のロック・フィ
ールドが使用される。これにより、システム全体をロックするための競合がなく
なるので、パーティション間の通信のスループットを増大させることが容易にな
る。
ング・プロセスを実装するが、このポーリング・プロセスにより、各パーティシ
ョンは、共用メモリ・ウインドウ内のエリアをポーリングして、それに向けられ
た通信が別のパーティションから共用メモリ・ウインドウ中に配置されたかどう
かを決定する。この実施形態では、各パーティションによってポーリングされる
エリアは複数の出力待ち行列を含み、これはパーティションごとに1つである。
所与のパーティション用の出力待ち行列は、そのパーティションが、他のパーテ
ィションに向けた通信を共用メモリ・ウインドウ中に配置したかどうかを示す。
各パーティションは、他のパーティションの出力待ち行列をポーリングして、そ
れらのパーティションがそれに向けた通信を共用メモリ・ウインドウ中で配置し
たかどうかを決定する。各パーティションには、メッセージ・バッファの別々の
プールが割り振られ、このバッファ中に、他のパーティションに向けた通信を出
すことができる。送信するパーティションは、それに割り振られたバッファの1
つの中に受信するパーティションに向けた通信を配置すると、次いで、その出力
待ち行列中でそのバッファの位置を指定する。
ード・ツー・ノード(node-to-node)待ち行列を含み、1つのノード・ツー・ノ
ード待ち行列は、通信を渡す先となる可能性のある他の各パーティションに関連
する。各ノード・ツー・ノード待ち行列は、関連するパーティションに向けられ
た通信が共用メモリ中に出されたかどうかを示す。したがって各パーティション
は、他の各パーティションの出力待ち行列中で、それに関連するノード・ツー・
ノード待ち行列をポーリングして、これら他のパーティションがそれに向けた通
信を共用メモリ・ウインドウ中に配置したかどうかを決定する。送信するパーテ
ィションからバッファ中に出されたメッセージ・データに対し、受信するパーテ
ィションに関連するノード・ツー・ノード待ち行列は、受信するパーティション
がメッセージ・データを取り出すことができるようにバッファの位置を指定する
ことになる。
ィション中のプロセッサの物理アドレス空間を、そのパーティションに割り当て
られたそれぞれの排他メモリ・ウインドウにマッピングする手段も備える。具体
的には、このマッピングする手段は、所与のパーティション上にあるプロセッサ
の物理アドレス空間内の位置への参照を、そのパーティションに割り当てられた
排他メモリ・ウインドウ内の対応する位置に再配置する手段を備える。このよう
にして、メイン・メモリの異なるエリア中に物理的に配置された、各パーティシ
ョンの排他メモリ・ウインドウを、それぞれのオペレーティング・システムには
メイン・メモリ中の同じベース物理アドレスを有すると見えるようにすることが
できる(例えばベース・アドレス0)。このことは、ある種のオフザ・シェルフ
(off-the-shelf)オペレーティング・システム(例えばUnix、Windo
wsNTなど)を異なるパーティション中で稼動させるのに必要である。という
のは、これらのオペレーティング・システムは、メイン・メモリがアドレス0で
開始することを前提としているからである。各パーティション中のプロセッサ・
アドレス空間をその排他メモリ・ウインドウにマッピングすることにより、オペ
レーティング・システムは、それらが実行されているプロセッサの物理アドレス
空間中でそれらが通常するようにメモリを参照し続けることができる。したがっ
て、オペレーティング・システムの修正は必要ない。
ドレスから所与のパーティションに割り当てられた排他メモリ・ウインドウの開
始までのオフセット(RL OS)を保持するレジスタと、そのパーティション中
のプロセッサによるその物理アドレス空間内の位置への各参照にこのオフセット
(RL OS)を加算する加算器と備える。この結果、これらの参照は、そのパー
ティションの排他メモリ・ウインドウ内のこれらに対応する位置に再配置される
。
ス空間が、メモリ記憶に利用不可能なアドレスの範囲(例えば、メモリ・マップ
されたI/0(入出力)に専用になっている範囲)、このようなメモリ・ホール
と規定する範囲を含み、コンピュータ・システムはさらに、パーティションの排
他メモリ・ウインドウの、通常ならそのメモリ・ホールに対応することになるそ
の部分を、他の用途に再利用する手段も備えることができる。より具体的には、
コンピュータ・システムは、メモリ・ホールを認識し、そのメモリ・ホールより
も上のアドレスをハイ・メモリ範囲と規定し、そのメモリ・ホールよりも低いア
ドレスをロー・メモリ範囲と規定する。メイン・メモリのベース物理アドレスか
ら、所与のパーティションに割り当てられた排他メモリ・ウインドウの開始まで
のオフセット(RL OS)に加えてまた、メモリ・ホールのサイズを指定する値
(RC OS)も記憶される。次いで、(i)所与のパーティション中のプロセッ
サによるその物理アドレス空間のロー・メモリ範囲内の位置への各参照にオフセ
ット(RL OS)を加え(それにより、これらの参照を排他メモリ・ウインドウ
内のこれらに対応する位置に再配置し)、(ii)オフセットからメモリ・ホー
ルのサイズを表す値を引いたもの((RL OS−RC OS)を、所与のパーティ
ション中のプロセッサによるその物理アドレス空間のハイ・メモリ範囲内の位置
への各参照に加える(それにより、これらの参照を排他メモリ・ウインドウ内の
これらに対応する位置に再配置すると同時に、排他メモリ・ウインドウの、通常
ならメモリ・ホールに対応することになる部分を再利用する(reclaiming))こ
とにより、再配置および再利用が達成される。
ることができる。具体的には、前述のように、各パーティションごとの排他メモ
リ・ウインドウに加えて共用メモリ・ウインドウも規定することができる。この
ウインドウへのアクセス権を共用するために、各パーティションは、そのプロセ
ッサの物理アドレス空間の一部を、メイン・メモリ内の共用メモリ・ウインドウ
に対応するものとして指定する。次いで本発明によれば、各パーティション上に
あるプロセッサの物理アドレス空間の指定部分は、メイン・メモリ中の同じ共用
メモリ・ウインドウにマッピングされる。好ましい一実施形態でこれは、各パー
ティション中で、(i)パーティション上にあるプロセッサの物理アドレス空間
のベース・アドレスから、物理アドレス空間の、共用メモリ・ウインドウに対応
するものとして指定された部分の開始までのオフセット(SBASE OS)を記
憶し、(ii)メイン・メモリのベース・アドレスから、メイン・メモリ内の共
用メモリ・ウインドウの開始までの別のオフセット(SBASE MSU)を記憶
し、(iii)オフセット間の差(SBASE MSU−SBASE OS)を、そ
のパーティション中のプロセッサによる指定部分内の位置への各参照に加え、そ
れにより、これらの参照を、メイン・メモリ中の共用メモリ・ウインドウ内のこ
れらに対応する位置に再配置することにより達成される。
本発明の様々な実施形態の構造および動作を、添付の図面を参照しながら以下に
詳細に述べる。
よび方法の例としての使用 A.共用メモリ・デバイス・ドライバ B.ワイヤによる通信の外観を維持すること V.結論
のマルチプロセッサ・コンピュータ・システムは、1つまたは複数のプロセッサ
・モジュールと1つまたは複数のメモリ記憶装置を備えるメイン・メモリを有し
て、コンピュータ・システムの異なるパーティション内で複数のオペレーティン
グ・システムを並行に実行し、かつその異なるパーティションが共用メモリを通
じて相互に通信することを可能にしている。そのメイン・メモリは、複数のメモ
リ記憶装置(memory storage units - MSUと呼ぶ)に分割される。メイン・
メモリは、異なるパーティション間に割り当てられる。データの一貫性および整
合性はそれらのパーティション間で維持される。
求と、メイン・メモリのウインドウ中のそれに対応するアドレスの(関係として
)間に規定される。このアドレス・マッピング関数fpaは、概念上は、ウイン
ドウイング(windowing)、再利用(reclamation)、変換(translation)とい
う3つの別個の部分を持つと考えることができる。
ィション(およびそれに関連づけられたオペレーティング・システム)には、メ
イン・メモリのアドレス空間内で排他的なメモリ・ウインドウが割り当てられる
。共用メモリ・ウインドウは、複数のパーティションが共用アクセス権を有する
ことが可能なメイン・メモリ内に定義してもよい。ウインドウイング機能は、各
パーティション内のプロセッサの物理アドレス空間を、それらのパーティション
に割り当てられた各排他メモリ・ウインドウにマップする。この方式では、各パ
ーティションの排他メモリ・ウインドウが、その各オペレーティング・システム
にとって、メイン・メモリ中で同一のベース物理アドレス(例えばアドレス・ゼ
ロ)を持つように見せている。市販のオペレーティング・システム(例えばUn
ix、Windows NTなど)は、通常、物理メモリがアドレス・ゼロで開
始することを予期しているので、ウインドウイング機能は、コンピュータ・シス
テム上の異なるパーティション内で市販のオペレーティング・システムを実行す
るために必要とされる。
ace(PCI)、Advanced Programmable Inter
rupt Controller(APIC)、およびメモリ・マップされた基
本システム、および入出力装置(例えばフロッピー(登録商標)・コントローラ 、シリアル・ポート、パラレル・ポートなど)によって占められる、メモリ・マ ップされたI/O(入出力)アドレス空間の背後に位置するメイン・メモリを再 利用するが、再配置されない場合これはコンピュータ・システムにとって使用不 可能になる。言い換えれば、各オペレーティング・システムによって入出力装置 に割り当てられるメモリ・アドレスが再利用されると、オペレーティング・シス テムは、メイン・メモリ中に追加のメモリ空間を持つように見える。
・アドレスは、コンピュータ・システムにどのようにメモリ記憶装置が実装(po
pulate)されているかにより、メモリ記憶装置間でインターリーブするかまたは
スタックすることができる。
。処理モジュールは、PodでもサブPodでもよい。Podは2つのサブPo
dを備える。好ましい実施形態では、コンピュータ・システムの最大構成には、
4つのPodすなわち8つのサブPodが含まれる。本発明によると、コンピュ
ータ・システムは、PodおよびサブPodどちらの境界上でもパーティション
に区分することができる。したがって、最大構成が8つのサブPodからなる好
ましい実施形態では、コンピュータ・システムは最大で8つのパーティションに
区分することができ、それぞれは別々のサブPodによって定義される。本発明
によるとさらに、各パーティションは、それ自体のオペレーティング・システム
の制御下で動作する。異なるパーティション上で実行されるオペレーティング・
システムは、異なるオペレーティング・システムでも、同一オペレーティング・
システムの異なるインスタンスでもよい。
用するための、グローバル共用メモリ・アプローチを提供する。一実施形態では
、グローバル共用メモリ・アプローチは、各パーティションのためにメイン・メ
モリ内に排他メモリ・ウインドウを提供し、さらに、複数のパーティションがア
クセスできる共用メモリ・ウインドウを提供する。パーティションと、そのオペ
レーティング・システムおよび/またはそのパーティション内で実行される他の
クライアントは、共用メモリ・ウインドウを通じて相互に通信することができる
。
理することができる。一実施形態では、共用メモリを通じてのパーティション間
通信は、割込み駆動技術(interrupt-driven technique)によって管理される。
別の実施形態では、共用メモリによる通信を管理するのにポーリング技術が使用
される。
よび機械的構成要素を含むハードウェアと、アプリケーション・プログラムおよ
びオペレーティング・システムを含むソフトウェアを指す。一般には、オペレー
ティング・システムには、命令と、コンピュータがそのタスクを実行するのに処
理するデータが含まれる。ハードウェアは基本的な計算資源を供給する。ソフト
ウェアは、それらの資源をユーザーの計算問題を解くために使用する方式を定義
する。
ーに向けた多様なアプリケーション・プログラム間におけるハードウェアの使用
を制御し、調整するプログラム・コードを指す。オペレーティング・システムは
、コンピュータ・システムをオン(turn on)にしてから、コンピュータ・シス
テムのメイン・メモリにロードされる最初のプログラム・コードである。オペレ
ーティング・システムの中核(central core)は、常にメモリ空間内にある。本明
細書で使用する用語「オペレーティング・システム・アドレス」は、コンピュー
タ・システムのプロセッサの物理アドレス空間(メモリおよび入出力)を意味し
、そのコンピュータ・システム上で実行されるオペレーティング・システムから
見ると、従来のコンピュータ・システムのアドレス空間になる。
ら見た、コンピュータの構造および動作を指す。これはプロセッサやメモリなど
さまざまな機能モジュールの仕様に関連し、それらを合わせてコンピュータ・シ
ステムに構造化する。コンピュータ・アーキテクチャはハードウェアを利用して
実施される。
るメモリ空間を指す。各メモリ記憶装置には、時にDRAM(ダイナミックRA
M)と呼ばれる複数のメモリ記憶装置が含まれる。本明細書で使用する用語「メ
モリ記憶装置アドレス」とは、コンピュータ・システムから見たアドレス位置を
指す。
ムの単一インスタンス(instance)の制御下にある、1つまたは複数の処理モジュ
ールを指す。本明細書で使用する用語「パーティション」とは、パーティション
の処理モジュール、パーティション上で実行されるオペレーティング・システム
、パーティションに割り当てられた任意の排他メモリ・ウインドウ、パーティシ
ョン上で実行される他のクライアントまたはアプリケーション・プログラム、あ
るいはこれらの任意の組み合わせのすべてあるいは一部を指す。
セッサを意味する。下記の好ましい実施形態の説明で例示するように、Podお
よびサブPodはどちらも処理モジュールの例である。1つまたは複数のPod
またはサブPod(すなわち1つまたは複数の処理モジュール)を、コンピュー
タ・システム内のパーティションとして定義してもよい。
やプロセッサなどの機械(machine)によって実行されると、コンピュータ・シス
テムやプロセッサに何らかの操作(operation)を実行させる命令セットを意味す
る。ただし、コンピュータ・システム中のいくつかの動作または機能性は、動作
や機能を実行する回路の形でハード・コード化するか、あるいは実行可能命令と
回路の組み合わせによって実行してもよいことを認識すると、用語「プログラム
・コード」には、上記のような回路や実行可能命令と回路の組み合わせも含まれ
ることになる。
セッサ・システムを示している。プロセッサ・モジュール110、112、11
4は、同程度の互換性がある。ただし本発明では、異種(heterogeneous)のプ
ロセッサおよび/またはオペレーティング・システムが共存することをさらに意
図している。各プロセッサ・モジュール110、112、114は自己充足型(
self-contained)である。プロセッサ・モジュール110、112、114は、
それぞれ複数のプロセッサを含むことができる。プロセッサ・モジュール110
、112、114のうち2つ以上は、通常はシステム相互接続130などシステ
ム相互接続メカニズムを通じて、メイン(またはグローバル)メモリ160およ
び/またはI/O装置120、122、124へのアクセスを共有している。プ
ロセッサ・モジュール110、112、114は、メイン・メモリ160を通じ
て(共通データ・エリア中に残されるメッセージおよびステータス情報により)
相互に通信することができる。
システム内で別々のパーティションとして構成して、複数のパーティションをコ
ンピュータ・システム内に存在させ、各パーティションが別々のオペレーティン
グ・システムの制御下で動作するようにしてもよい。例えば、図1の各プロセッ
サ・モジュール110、112、114は、個々のオペレーティング・システム
170、172、174を介して制御される個々のパーティションとして定義す
ることができる。各オペレーティング・システム170、172、174は、そ
れぞれがメイン・メモリ160にアクセスする唯一の存在であるかのように、メ
イン・メモリを別々に見ている。
なければならない。マルチ・コンピュータ・システムは、コンピュータが通信線
を介して互いと相互接続され、コンピュータ・ネットワークを形成するシステム
である。このコンピュータは自立走行式(autonomous)であり、相互に通信して
もしなくてもよい。コンピュータ間の通信は、固定経路を介するか、あるいは何
らかのメッセージ交換メカニズムを介して行われる。それに対して、従来型のマ
ルチ・プロセッサ・システムは、プロセッサ間の相互作用を提供する1つのオペ
レーティング・システムによって制御され、問題の解法を求める際にはシステム
のすべての構成要素が協働する。
細図を示す。コンピュータ・システム200には、図にメイン・メモリ160と
して示すメイン・メモリと、各第3レベル・キャッシュ・モジュール230およ
びクロスバー相互接続290を介してメイン・メモリに接続された複数の処理モ
ジュール240が含まれる。この実施形態では、処理モジュールおよびメイン・
メモリは対称的な多重処理アーキテクチャで構成されており、したがってプロセ
ッサからメモリへの待ち時間は、メイン・メモリのすべてにおいて、各処理モジ
ュールにとって同一である。
ステムであり、例えばUNIX/NTシステムで用いられるメモリ整合性モデル
など、さまざまなメモリ整合性モデルをサポートすることができる。メイン・メ
モリ160には、メモリ記憶装置220A、220B、220C、220Dなど
複数のメモリ記憶装置(MSU)220が含まれる。各メモリ記憶装置220A
、220B、220C、220Dは、少なくとも8ギガバイトのメモリを含むこ
とが好ましい。各メモリ記憶装置220A、220B、220C、220Dは、
4本の2倍幅データバスおよび8本の単方向アドレスバスを共用する、16個の
準独立型バンクを含むことが好ましい。
ベル・キャッシュ・モジュール230には、TST270Aから270Hなど、
複数の第3レベル・キャッシュ・アプリケーション固有の集積回路(すなわちT
CT)が含まれる。当実施形態では、対をなすプロセッサ(例えば240Aと2
40B)は、所与のTLC(例えば230A)内に単一TCT(例えば270A
)をもった共通バス(例えば280A)を共用している。各TCT270は、下
記でより完全に述べるように、アドレスの再配置、再利用、およびそれが接続さ
れるプロセッサによって発行されるメモリ・アドレスの変換を実行する。
複数プロセッサ(MP)240Aから240Sに接続される。具体的には、当実
施形態では、各TLC230は4つのプロセッサに接続される。各TLC230
およびその個々の4つのプロセッサは、サブPodを定義する。当実施形態によ
るとさらに、2つのサブPodは、クロスバー相互接続(例えばクロスバー相互
接続290Aまたは290B)を介して接続されてPodを形成する。したがっ
て図2の実施形態では、それぞれクロスバー相互接続290Aおよび290Bを
介して接続されたサブPodが4つあり、2つのPodを形成している。
セッサ240をメモリ記憶装置220にインターフェースしている。クロスバー
相互接続290はクロスバー・メモリ・アプローチを用いており、それにより、
複数のクロスポイントが、プロセッサ240とメモリ記憶装置220の間の共通
部分に置かれる。クロスポイント内には、プロセッサ・バス280からメモリ記
憶装置220への経路を決定するスイッチがある。各スイッチ・ポイントは、プ
ロセッサ240とメイン・メモリ160の間に転送経路をセットアップする制御
論理を有する。この制御論理は、プロセッサ・バス280上に置かれるアドレス
を調べ、その特定メモリ記憶装置220のアドレスが指定されているかどうかを
決定する。制御論理はまた、同一のメモリ記憶装置220への複数のアクセス要
求を、あらかじめ定められた優先順位で解決する。各クロスバー相互接続290
は、下記により詳細に述べるように、ペアになった第3レベル・キャッシュ・メ
モリ・インターフェース・アプリケーション固有集積回路(TCM)285をさ
らに備え、これは、アドレス再配置、再利用、I/O装置からのメモリ要求の変
換を実行する。
と、ダイレクト入出力ブリッジ(DIB)250Aから250Dなどダイレクト
入出力ブリッジを介して接続された、PCI260Aから260Dなど複数の周
辺コンポーネント相互接続(PCI)とが含まれる。
て、第3レベル・キャッシュ・モジュール230と双方向で通信する。クロスバ
ー相互接続290は、入出力バス210を介してダイレクト入出力ブリッジ25
0と双方向に通信し、またTCT270を通じてプロセッサ240と通信する。
ダイレクト入出力ブリッジ250は、周辺構成要素相互接続260と双方向に通
信する。
ばPentium Pro、Pentium II Xeon、Merced)や、Unisys E−modeス
タイル・プロセッサ(Unisys A Series および Clearpath HMP NXエンタプラ
イズ・サーバで使用される)や、Unisys 2200スタイル・プロセッサ
(Unisys 2200およびClearpath HMP IX エンタプライズ・サーバで使用される
)を備えることが可能である。所与のサブPodは、同一タイプの4つのプロセ
ッサを用いることが好ましい。ただし本発明では、異なるサブPodが、異なる
タイプのプロセッサを用いてもよいことを意図している。例えば1つのサブPo
dが4つのIntelプロセッサを用い、一方で別のサブPodが4つのUni
sys E−modeスタイル・プロセッサを用いることが可能である。このよ
うな構成では、Intelプロセッサを用いるサブPodを1つのパーティショ
ンとして定義し、UnixまたはWindows NTのバージョンなど、In
telとの互換性があるオペレーティング・システムの制御下で実行し、その一
方でUnisys E−modeスタイル・プロセッサを用いるサブPodは別
のパーティションとして定義し、UnisysMCPオペレーティング・システ
ムの制御下で実行することが可能である。別の代替策として、異なる2つのパー
ティション中のサブPodはどちらもIntelプロセッサを用いることができ
るが、1つのパーティションはIntelと互換性のあるオペレーティング・シ
ステム(例えばWindows NT)の制御下で実行するのに対し、もう一方
のパーティションは、そのパーティション内のIntelプロセッサ上のUni
sys A Seriesコンピュータ・アーキテクチャのエミュレーションを
通じて、Unisys MCPオペレーティング・システムの制御下で実行する
ことが可能である。
追加詳細は、これに先立つ同時係属の、本出願の譲受人に譲渡された出願中の「
他出願への相互参照」と題するセクション中に記載して提供され、各項はすべて
参照として本明細書に組み込まれる。
びサブPodの境界で区分することができる。図28に示すように、コンピュー
タ・システム200の部分2801は、PodとサブPodの境界を含んでいる
。Pod2802には、クロスバー相互接続290A、第1サブPod2804
A、第2サブPod2804Bが含まれる。サブPod2804Aおよび280
4Bは、実質的に互いと同種である。例えばサブPod2804Aには、TCT
270Aおよび270Bを含む第3レベル・キャッシュ230Aが含まれる。サ
ブPod2804には、さらに、プロセッサ240A〜240Dが含まれる。し
たがってPod2802には、2つのTLC230、4つのTCT270、8つ
のプロセッサ240、およびクロスバー相互接続290が含まれることになる。
は4つのPod2802が含まれ、Pod2802にはそれぞれ2つのサブPo
d2804が含まれる。したがって最大構成において、コンピュータ・システム
200には、(4Pod)x(Podごとに8つずつのプロセッサ)=32のプ
ロセッサが含まれる。コンピュータ・システム200は、PodまたはサブPo
dのどのような境界の組み合わせでも区分することができる。ただし本発明では
、他の多重処理環境および構成を意図していることを理解されたい。例えばコン
ピュータ・システム200は、さらに多くのメモリ記憶装置220およびさらに
多くのPodまたはサブPodと接続する(plug in)ことにより、拡張するこ
とができる。
よび250Bを含むように定義される。ある実施形態では、サブPod2804
および2806は、ダイレクト入出力ブリッジ250Aおよび250Bをそれぞ
れ含むように定義される。
それぞれが1つまたは複数のPodまたはサブPodを備えることができ、それ
ぞれが別のオペレーティング・システムの制御下で動作する。異なるパーティシ
ョン上で実行されるオペレーティング・システムは、同一でも異なっていてもよ
い。例えば本発明では、オペレーティング・システムの少なくとも2つが異なっ
ていて、1つのオペレーティング・システムが、2番目のオペレーティング・シ
ステムを制御または管理しない環境を意図している。
ムで生成することのできる例示的メモリ構成を示している。この例では、3つの
オペレーティング・システム(OS)はそれぞれ、それ自体のアドレス空間50
2(すなわち、それらのオペレーティング・システムが実行される各処理モジュ
ールの物理アドレス空間)を持っている。メイン・メモリ160はアドレス空間
504を有する。本発明によると、各オペレーティング・システム(すなわちパ
ーティション)ごとに1つの3つの排他メモリ・ウインドウ540A、540B
、540Cと、3つのオペレーティング・システム540A、540B、540
C(すなわちパーティション)のすべてからアクセス可能な1つの共用メモリ・
ウインドウ537が、メイン・メモリ160のアドレス空間504内に定義され
る。
インドウ、ロー・メモリ・ホール512などロー・メモリ・ホール、ハイ・メモ
リ・ウインドウ513などハイ・メモリ・ウインドウ、共用メモリ・ウインドウ
514など共用メモリ・ウインドウとして定義された部分、ハイ・メモリ・ホー
ル515などハイ・メモリ・ホールが、そのアドレス空間内に含まれる。ロー・
メモリ・ウインドウ511、ロー・メモリ・ホール512、ハイ・メモリ・ウイ
ンドウ513、ハイ・メモリ・ホール515は、オペレーティング・システムO
S#1にとって排他的である。共用メモリ・ウインドウ514として定義される
アドレス空間部分は、共用されるよう意図されている。
が入出力装置に割り当てられているために、データや命令の記憶には使用できな
い、メモリ記憶装置のハイ・アドレス範囲中のメモリ空間を指す。本明細書で使
用する「ロー・メモリ・ホール」とは、関連付けられたアドレスが入出力装置に
割り当てられているために、データや命令の記憶には使用できない、メモリ記憶
装置の低アドレス範囲中のメモリ空間を指す。本明細書で使用する「ウインドウ
」とは、上限および下限のあるアドレス範囲である。ウインドウの可視性、すな
わち、ウインドウへのアクセスは、所有権(ownership rights)によって管理さ
れる。本明細書で使用する「共用ウインドウ」とは、少なくとも2つのオペレー
ティング・システムが合同で所有するアドレス範囲を指す。すなわち、複数のオ
ペレーティング・システムが、共用ウインドウへの可視性およびアクセス権を有
する。本明細書で使用する用語「排他ウインドウ」とは、1つのオペレーティン
グ・システムだけが所有するアドレス範囲を指す。すなわち、1つのオペレーテ
ィング・システムだけが、排他ウインドウを見ることができ、それにアクセスす
ることができる。それでも、データの一貫性および整合性はオペレーティング・
システム間で維持される。
#1と同様の構造を有する。説明を簡潔にするために、これらのアドレス空間に
ついては詳細には説明しない。
れた入出力(I/O)アドレスの両方からなる。メイン・メモリのトランザクショ
ンは、主記憶装置に向けられる。I/Oトランザクションは、I/Oサブシステ
ムに転送される。I/Oアドレスは主記憶装置の外側の追加メモリにアクセスす
るので、このシステムには、2つのメモリ位置を参照するプロセッサ・アドレス
があるということになる。整合性のためには、これらのメモリ位置のうち1つを
使用不可能にしなければならない。これらの主記憶位置を使用不可能にすること
により、メイン・メモリのアドレス指定においてホールが形成され、その結果、
メモリ内に不使用部分が残されるる。I/Oメモリ・アドレス空間が大きい場合
、相当のメモリブロックが使用できないままになる。複数のOSパーティション
がシステムに追加されると、複数のI/Oホールが生成され、その結果おそらく
は多数のホールがメイン・メモリのアドレス空間中に散在することになる。本発
明によると、図5に示すように、ロー・メモリ・ホール511、541、571
などロー・メモリ・ホールと、ハイ・メモリ・ホール515、545、575な
どハイ・メモリ・ホールは、図にMSUメモリ空間504として描写したような
連続したアドレス空間に再利用されリマップされる。MSUメモリ空間504は
、メイン・メモリ160の概念視点である。再利用(reclamation)については
下記で詳細に説明する。
31、533、535などロー・メモリと、ハイ・メモリ532、534、53
6などハイ・メモリと、共用メモリ537など共用メモリが含まれる。ロー・メ
モリ531およびハイ・メモリ532は、オペレーティング・システムOS#1
にとって排他的な排他ウインドウを備える。ロー・メモリ533およびハイ・メ
モリ534は、OS#2にとって排他的な排他ウインドウを備える。ロー・メモ
リ535およびハイ・メモリ536は、オペレーティング・システムOS#3に
とって排他的な排他ウインドウを備える。メイン・メモリ160中にはメモリ・
アドレス・ホールがない。メイン・メモリ160の連続アドレス空間は、メモリ
拡張、参照変換のタイプ(下記で詳細に説明する)、あるいは共用メモリ環境と
は無関係に維持される。
る。この空間へのアクセスおよびこの空間の可視性は、所有権(ownership righ
ts)によって制限される。本発明では、排他と共用の2タイプのウインドウを提
供する。
って所有される。オペレーティング・システムのすべてのインスタンスは、それ
自体のウインドウの制限内で動作しなければならない。このウインドウのアドレ
ス空間は可視ではなく、他のパーティション/オペレーティング・システムにア
クセスすることもできない。好ましい実施形態では、すべてのウインドウは、a
mod 32MBで表されるアドレス境界で始まる。ただし本発明では他の境
界も意図される。オペレーティング・システム、特にUnixおよびWindo
ws NTのような市販のオペレーティング・システムから見ると、そのアドレ
ス空間(すなわちそれが実行されるプロセッサの物理アドレス空間)は常に、図
5の左部分に示すようにアドレス・ゼロで始まる(すなわちその下限はゼロであ
る)。メイン・メモリ160から見ると、アドレス範囲は、再配置(RL)値で
始まる。RL値については下記で詳細に説明する。好ましい実施形態では、排他
ウインドウの上限は、共用ウインドウのベース・アドレスSBASE OSに対比
して設定される。
り、この空間は、複数のオペレーティング・システム(すなわちパーティション
)にとって、それ自体の排他ウインドウでそれぞれが実行されているときに、可
視でありアクセスすることができる。共用ウインドウは、例えばそのオペレーテ
ィング・システムを含む異なる部分が通信し、データを共用できる共通エリアで
ある。好ましい実施形態ではこのエリアも、a mod 32MBのアドレス境
界で開始する。共用ウインドウのサイズは、Nx32MBにすることができる。
共用ウインドウと関連付けられた構成パラメータは2つある。1つのパラメータ
には、オペレーティング・システムのアドレス空間内で共用ウインドウとして定
義される部分のベース・アドレス、SBASE OSが含まれる(すなわち、それ
ぞれOS#1、OS#2、OS#3のための部分514、544、574のベー
ス・アドレス)。もう一方のパラメータは、メイン・メモリ160のアドレス空
間504内の、それに対応する共用エリアのベース・アドレスSBASE MSU を保持する。好ましい実施形態では、各オペレーティング・システムの共用エリ
アの上限は、そのオペレーティング・システムの「メモリのトップ」値である。
下限SBASE OSは、a mod 32MBアドレス境界上になければならな
い。排他エリアが使用可能にされる場合、MSUメモリ空間504内の共用メモ
リ537の位置は、このエリアを共用しているすべてのオペレーティング・シス
テムの各排他ウインドウの上になければならない。この最後の要件は、ハードウ
ェア設計のトレードオフとして実施される。共用エリアは上限TOSを境界とす
るが、この上限は、オペレーティング・システムのアドレス指定の観点から見る
とオペレーティング・システムのメモリ参照のトップになる。TOSより上のア
ドレスはトラップされ、メイン・メモリ160に渡されることはない。したがっ
て、共用メモリ537は完全に境界を定められる。
に共用された空間内で他のオペレーティング・システムと共存することができる
。MSUブロック全体を共用するように設定する場合がその例である。この場合
、他のオペレーティング・システムのアドレス空間を見ることができるように、
各オペレーティング・システムを構成することができる。この方式で構成される
と、メモリの個々のページへのアクセス権を維持する重荷が、協働するオペレー
ティング・システムに課される。ハードウェアはもはや、アクセス権および可視
性を個々のオペレーティング・システムに対して制限しない。プロセスがメモリ
を破壊するのを防ぐために、オペレーティング・システムは、プロセッサ・ペー
ジ制御または何らかの他の手段により、メモリ・ページ・アクセス権を制御しな
ければならない。この操作法は、連携オペレーティング・システムによって使用
される。オペレーティング・システムは、別のオペレーティング・システムのメ
モリ・ページから直接読み出しをすることができる。また1つのオペレーティン
グ・システム・インスタンスは、別のオペレーティング・システムを宛先とする
データを、一時的バッファリングをいずれも回避して、他のオペレーティング・
システムのデータ・エリアに直接ロードすることができる。図10は、このタイ
プの構成例を示している。図10を参照すると、各オペレーティング・システム
の構成は、それ自体のオペレーティング・システム・インスタンスのコピーを含
む、MSUメモリ全体のビューをその共用エリアが提供するような方式で行われ
ている。以降、このエイリアス・アドレスをシャドー・アドレスと呼ぶ。各オペ
レーティング・システムのビュー内の共用エリアの下にあるアドレス範囲は、ロ
ーカルアドレスと呼ぶ。
で1つまでに制限する。ただし、他の実施形態では、排他ウインドウを複数の共
用ウインドウと関連付けることもできる。この場合、そのような共用ウインドウ
それぞれのために、SBASE MSUおよびSBASE OSの値が別個にあるこ
とになる。
ち、そのパーティション上のオペレーティング・システムから見たアドレス空間
)は、メイン・メモリ160のアドレス空間504内のそのパーティションに割
り当てられた、それに対応する排他メモリ・ウインドウにマップあるいは再配置
される。メイン・メモリ160のアドレス空間は、説明のために、単一のメモリ
ブロックと見なすべきである。ただし本発明ではさらに、メモリ記憶装置220
間でアドレス・インタリービングを生成するために、アドレスを個々のメモリ記
憶装置220に追加的にマップする変換機能(下記で説明する)を企図している
。
空間を占める、2つのオペレーティング・システムOS0およびOS1を含む単
純なシステムを示す。各オペレーティング・システムのアドレス空間は、それ自
体のメモリ・マップされたI/O(入出力)空間415および435を有する。
この例では、メモリ・マップI/O(入出力)と関連付けられたホールは、DR
AMメモリ・エリアをオーバーレイしない。
RC」についてさらに説明することができる。再配置とは、ベース・アドレスを
排他メモリ・ウインドウに割り当てることである。このベース・アドレスは、メ
イン・メモリ160のアドレス空間内におけるこのウインドウの開始アドレス(
すなわちアドレス・ゼロからのオフセット)であり、a mod 32MBアド
レス境界上になければならない。図4を参照すると、オペレーティング・システ
ム・ウインドウ430(OS0)のためのRL値は、このウインドウがメイン・
メモリ160のボトムで始まるのでゼロになる。オペレーティング・システム・
ウインドウ410(OS1)は、2GBで始まるメイン・メモリ160のアドレ
ス空間にその物理アドレス・ゼロ位置が再配置されているので、2GBのRL値
を有する。
再利用するために、ウインドウ内のアドレス空間をリマップすることである。再
利用がアクティブではなく、メモリ・トップの下にあたる部分にI/O範囲が割
り当てられたメモリ・マップI/Oをウインドウが有する場合、ウインドウ・メ
モリ・アドレス空間内にホールが生成される。図4の例では、メモリ・マップI
/Oに関連付けられたホールがDRAMメモリ・エリアをオーバーレイしていな
いので、再利用は必要ではない。ただし図5を参照すると、ロー・メモリ・ホー
ル512、542、572(すなわち、32ビットメモリ・マップI/O装置が
マップされている)に対しては再利用を実行することができる。再利用は、ホー
ル・サイズと等しいホール上部の使用可能メモリ・アドレス空間を増大するもの
と見ることができる。好ましい実施形態では、再利用は、ホール・サイズが12
8MBまたはそれ以上である場合にのみ実行される。これはハードウェア・トレ
ードオフである。また設計トレードオフの理由から、オペレーティング・システ
ム・インスタンスにつき1つのアドレス・ホールだけが再利用される。ただし本
発明では、上記の2つの設計トレードオフを実行せずにコンピュータ・システム
を実施できることを企図している。再利用については下記で詳細に説明する。
S#1、OS#2、OS#3はすべて、メモリ・アドレス空間をオーバーレイす
るメモリ・マップI/Oを含んでいる。ただし、オペレーティング・システム・
アドレス空間OS#1のロー・メモリ・ホール512が最低128MBのブロッ
ク・サイズよりも小さいので、再利用は実行されない。ただしロー・メモリ・ホ
ールは、その他の2つのオペレーティング・システムのためにそれらの排他ウイ
ンドウ540Aおよび540B内でそれぞれ再利用される。
ンス)を含んだ、別の可能な構成を示している。この場合OS#1およびOS#
4は共通エリアを共用し、一方でOS#2およびOS#3は別の共通エリアを共
用する。メイン・メモリ160のアドレス空間への個々のウインドウの配置が、
RL変数によって制御されることに留意されたい。図3は、これらのウインドウ
をMSUメモリ空間350へマップする多くの可能な方式のうち1つだけを示し
ている。
、構成パラメータセットRL OS、RC OS、SBASE OS、SBASE MS U を供給する構成レジスタを関連付けている。単純にオペレーティング・システ
ム・ウインドウの構成パラメータを変更することにより、異なるウインドウ・マ
ッピングが容易に生成される。
成レジスタ値を示している。メモリ・ホールの再利用は、構成レジスタの内容に
よって決まる。表Aには、当該の各オペレーティング・システムについての行が
含まれる。再配置フィールドRL OSは、メモリ記憶装置220中で再配置され
た、当該のオペレーティング・システム・ウインドウのベース(すなわち開始)
アドレスを格納する。再利用フィールドRC OSは、当該のオペレーティング・
システム・ウインドウ中のロー・メモリ・ホールのサイズに対応するアドレス範
囲を格納する。共用ベースOSフィールドSBASE OSは、共用部分として指
定されたオペレーティング・システム・アドレス空間部分のベース・アドレスを
格納する。共用ベースMSUフィールドSBASE MSUは、メモリ記憶装置メ
モリ220のアドレス空間内の共用ウインドウ537のベース・アドレスを格納
する。
のTCT270は、そのTCTにインターフェースされたプロセッサによって発
行されるアドレスに対して再配置、再利用、変換を実行するための、構成レジス
タ、他のレジスタ、および論理を含む。TCM285は、各DIB250を介し
てI/Oプロセッサ(例えばPCIカード)から受信したメモリ要求に対して、
同一の再配置、再利用、変換を実行しなければならないので、これらのレジスタ
および論理はクロスバー相互接続290のTCM285内でも複写される。
のTCT270は、ロー・メモリ、ハイ・メモリ、ロー・メモリ・ホール、ハイ
・メモリ・ホール、および共用メモリのためにアドレス範囲を決定する。例えば
、オペレーティング・システムOS#3のアドレス空間内で、ロー・メモリ・ウ
インドウ571はアドレス位置0.000Hで開始し、3.875ギガバイトの
メモリ空間を含む。ハイ・メモリ・ウインドウ573は、アドレス位置1.50
00.000Hで開始し、5.250ギガバイトのメモリ空間を含む。ロー・メ
モリ・ホール572は、再利用されるべき125メガバイトの不使用メモリ空間
を含む。ハイ・メモリ・ホール575は、再利用されるべき250メガバイトの
不使用メモリを含む。
メイン・メモリ160のアドレス空間504内の排他メモリ・ウインドウをその
パーティションに割り当てる。各排他メモリ・ウインドウ内には、ロー・メモリ
およびハイ・メモリのためのアドレス範囲がある。例えば排他ウインドウ540
Bでは、ロー・メモリ・ウインドウ533はアドレス位置1.4000.000
0Hで開始し、5.000ギガバイトのメモリ空間を含む。ハイ・メモリ・ウイ
ンドウ534はアドレス位置2.8000.000Hで開始し、排他ウインドウ
540B内のトータルで10.500ギガバイトのメモリ空間に対し10.00
0ギガバイトを含む。排他ウインドウ540Aでは、ロー・メモリ・ウインドウ
535はアドレス位置2.A000.0000Hで開始し、5.125ギガバイ
トのメモリ空間を含む。ハイ・メモリ・ウインドウ534はアドレス位置3.E
800.000Hで開始し、1.625ギガバイトのメモリ空間を含む。
ライン上にアドレス(「参照アドレス」あるいは「プロセッサ・アドレス」)を
発行すると、そのプロセッサのためのTCT270は、必要に応じて任意の再配
置、再利用、または共用ウインドウイングのためにそのアドレスを調整して、メ
イン・メモリ160内のそれに対応する位置のアドレスを生成する。構成レジス
タのさまざまなフィールドの値(表A)はこのプロセス中に使用される。具体的
には、参照されるアドレスが、共用ウインドウとして指定されたオペレーティン
グ・システム・アドレス空間の部分内にある場合、その参照アドレスは、構成レ
ジスタの共用ベースOSフィールドおよび共用ベースMSUフィールド内に含ま
れる値によってオフセット(offset)される。参照アドレスがオペレーティング
・システムのアドレス空間のハイ・メモリ・ウインドウ内にある場合、その参照
アドレスは、構成レジスタの再配置フィールドおよび再利用フィールドに含まれ
る値でオフセット(offset)される。参照アドレスがオペレーティング・システ
ムのアドレス空間のロー・メモリ・ウインドウ内にある場合、その参照アドレス
は、構成レジスタの再配置フィールドに含まれる値でオフセット(offset)され
る。したがって本明細書で述べるように、TCT270は、各パーティション内
のプロセッサの物理アドレス空間を各パーティションに割り当てられた各排他メ
モリ・ウインドウにマップする手段を提供し、より具体的には、各パーティショ
ン上のプロセッサの物理アドレス空間内の位置への参照を、そのパーティション
に割り当てられた排他メモリ・ウインドウ内のそれに対応する位置に再配置する
手段を提供する。上記のように、同様の方式で、TCM285は、DIBおよび
TCMを介して通信するI/Oプロセッサ(例えばPCIカード)から受信する
したメモリ・アドレスに必要とされる任意の再配置または再利用をメイン・メモ
リに対して実行する。
ティションのプロセッサの物理アドレス空間)を、メイン・メモリ中のそれに対
応する排他メモリ・ウインドウに再配置および再利用することを実施するための
擬似コードを示す。一般に、メモリ・マップI/OアドレスはTCT270によ
って除外(filter out)され、メイン・メモリ160への参照だけが残される。
残りのアドレスは次いで、下記で詳細に述べるように表Bに示すアルゴリズムを
通じて渡される。最終的に、再配置されたメモリ参照はメイン・メモリ160に
渡される。
説明では表Aも参照する。ステップ810に示すように、参照アドレス(すなわ
ち、所与のオペレーティング・システムを実行している所与のパーティション内
の処理モジュールのプロセッサの1つによって発行されるアドレス)OSADR が、共用メモリ・ウインドウとして指定されたオペレーティング・システムのア
ドレス空間の部分内にあるかどうかを決定するためにチェックが行われる。部分
内にあれば、参照されるアドレスはステップ815に示すように、式:OSAD R +[SBASE MSU−SBASE OS]に基づくアドレスに再配置される。
このアドレスは再配置アドレス(relocated address)と呼ばれ、メイン・メモ
リ160にアクセスするために使用される。再配置アドレスは、メイン・メモリ
160内に定義される共用メモリ・ウインドウ内の対応する位置のアドレスであ
る。
ス空間のハイ・メモリ部分(例えばハイ・メモリ513、543、573)内に
あるかどうかを決定するためにチェックが実行される。これはステップ820に
示している。ハイ・メモリ部分内にある場合、ステップ825に示すように、参
照アドレスが、式:OSADR+[RL OS−RC OS]に基づくアドレスに再
配置される。再配置アドレスは、そのパーティションのための排他メモリ・ウイ
ンドウ内のそれに対応する位置を識別する。
アドレスがオペレーティング・システム・アドレス空間のロー・メモリ部分(例
えばロー・メモリ511、541、571)内にあたるものと推定する。この場
合、参照アドレスは、式:OSADR+[RL OS]に基づくアドレスに再配置
される。したがって、パーティション内のプロセッサの物理アドレス空間(すな
わちオペレーティング・システムによって見られるアドレス空間)内でのアドレ
ス参照は、メイン・メモリ中でそのパーティションのために定義された排他メモ
リ・ウインドウ内のそれに対応する位置か、またはメイン・メモリ中で定義され
た共用メモリ・ウインドウ内のそれに対応する位置に再配置される。
るための、レジスタおよび論理の形の装置を表すブロック図である。この論理は
各TCT270内に提供され、TCT270にインターフェースされたプロセッ
サ(MP)240によって発行されるメモリ・アドレスに対して、本発明の再配
置機能および再利用機能を実行する。上記のように、各DIB250を介してI
/Oプロセッサによって発行されたメモリ・アドレスの再配置および再利用を実
行する目的で、この論理は各TCM285中でも複写される。
イン上で発行された(または各DIB250を介してI/Oプロセッサによって
発行された)メモリ・アドレスは、Processor_Addressレジス
タ3310内でキャプチャされる。好ましい実施形態では、メイン・メモリは8
バイトビットのワードでアドレス指定可能であり(1ワード=8バイト=64ビ
ット)、したがってプロセッサ・アドレスの最下位3ビットは、調整済みアドレ
スの生成には必要ではない。したがって図に示すように、ビット[35:3]だ
けがProcessor_Addressレジスタ3310でキャプチャされる
。好ましい実施形態ではさらに、メイン・メモリは8ワード(8ワード=64バ
イト)のブロックでキャッシュされるので、ビット[35:6]は有効キャッシ
ュ・ブロック・アドレスを表す。図に示すように、これらのビットは後続のCa
che_Block_Addressレジスタ3312でキャプチャされる。
ドウは「排他」も「共用」もa mod 32MBアドレス境界で開始しなけれ
ばならない。その結果、プロセッサ・アドレスを特定の排他メモリ・ウインドウ
または共用メモリ・ウインドウに再配置する際に、計算に必要なのは、プロセッ
サ・アドレスのビット[35:25]だけになる。したがって、図に示すように
これらのビットはテンポラリ・レジスタ3314にキャプチャされる。
置3318、3320、3330、3340に記憶される。これらのレジスタ位
置は集合的に、上記の構成レジスタを構成する。実際には、これらのレジスタ位
置は、単一のより大きなレジスタの別々のフィールドを構成することができ、あ
るいは4つの別々のレジスタとして実施することができる。プロセッサ・アドレ
スが、共用メモリ・ウインドウとして指定されたプロセッサのアドレス空間の部
分内にあたる場合は、減算器3405が、レジスタ位置3318内のSBASE MSU 値からレジスタ位置3320内のSBASE OS値を減算し、その結果得
られるオフセット値をレジスタ3350に格納する。プロセッサ・アドレスが、
そのプロセッサが属するパーティションに割り当てられた排他メモリ・ウインド
ウのハイ・メモリ部分内にあたる場合は、減算器3410が、レジスタ3330
内のRL OS値からレジスタ3340内のRC OS値を減算し、その結果得られ
るオフセット値をレジスタ3370に格納する。さらに示すように、RC OS値
の5ビットは(追加機能3400を使用して)、最下位ビット位置中の2論理ゼ
ロビット、および最上位ビット位置中の4論理ゼロビットで埋められ、RL OS 値のビットからの減算のためにビットを適切に位置合わせする。本発明では、再
利用は128MBの単位でしか実行できないと上記で述べたことを思い出された
い。プロセッサの排他メモリ・ウインドウのロー・メモリ部分内にあたるプロセ
ッサ・アドレスの場合、レジスタ3330内のRL OS値は必要とされるオフセ
ットであり、したがって、この値はレジスタ3360に直接記憶される。
共用メモリ・ウインドウに指定されたプロセッサのアドレス空間の部分内にあた
るかどうか、またはそのアドレスが、プロセッサが属する部分に割り当てられた
排他メモリ・ウインドウのロー・メモリ内またはハイ・メモリ内にあたるかどう
かを判定する上記のステップを実行する。この比較に基づき、レジスタ3350
、3360、3370のうち1つからの適切なオフセットが、3:1セレクタ3
380によって選択される。次いで加算器3420は、選択されたオフセット値
を、レジスタ3314に記憶されているプロセッサ・アドレスのビット[35:
25]に加算し、その結果がレジスタ3430に記憶される。次いでレジスタ3
430中のビットは、キャッシュ・ブロック・アドレスのビット[24:6]の
最初に付加されて、調整済みのアドレスを形成し、このアドレスはAdjust
ed_Partition_Addressレジスタ3316に記憶される。レ
ジスタ3316中の調整済みアドレスは、次いで、メイン・メモリにアクセスす
るために使用される(下記で説明する本発明のインターリービング機構による変
換の後に)。
割り当てられたアドレスは再利用することができる。このアドレスは、ロー・メ
モリ・ホール512などロー・メモリ・ホールと呼ばれる。好ましい実施形態で
は、ロー・メモリ・ホールは常に4GBのすぐ下で開始し、・ホール・サイズに
等しい、関連するオペレーティング・システムのアドレス空間内で下方に拡張す
る。明らかなように、ロー・メモリ・ホールの配置は設計変更(design choice
)である。メモリの再利用を使用すべきなのは、インストールされたメモリ量に
対して、メモリ・アドレスのトップがメモリオーバーラップ領域のボトム(すな
わち4GB−(マイナス)オーバーラップ・ホール・サイズ)よりも大きい場合
だけである。言い換えれば、再利用は、PCI APIC範囲とインストールさ
れたDRAMメモリ間にオーバーラップがないシステムでは使用すべきではない
。
プロセッサ/オペレーティング・システム・アドレス空間内で上にスライドして
いると考えることができる。したがって、ホールのボトムの後ろにありそこで開
始するメモリは、アドレス4GBで開始しこのポイントから上に拡張することに
なる。メモリ・アドレス指定はなお4GB開始アドレスから連続しており、新し
いメモリ・トップ、すなわち元のメモリ・トップとホール・サイズの合計まで拡
張する。
4GBあるいはそれ以下のメモリを備え、PCI APIC範囲と部分的にメモ
リ・オーバーレイがあるシステムの場合には、再利用を使用することができる。
このシステムでは、オーバーラップされたメモリは4GBで開始するようにマッ
プされる。図12はこの点を表している。サブPodはプロセッサの調整済みメ
モリ要求アドレスを受け取り、それが4GB境界よりも上にあることを判定する
と、そのアドレスから固定値を減算する。このメモリ・アドレスは、PCI A
PIC範囲のシステム・アドレス空間への挿入を反映する。したがって、調整オ
フセットはPCI APIC範囲のホール・サイズと等しく、上記のように12
8MBのブロックごとに固定される。
である。図5および表Aを参照する。最初の例は、排他ウインドウ内のアドレス
参照を扱うものである。2番目の例は共用ウインドウを参照する。
メインメモリアドレス10.5GBに再配置(RL)されている。再利用は、ロ
ー・メモリ・ホール572の後ろの128MB(0.125GB)を回復するよ
うに設定される。OSADR=1.5000.0000Hをメモリ参照として使
用することにより、TCT270は関数OSADR+[RL−RC]を実行して
、MSUメモリ空間504内にアドレスを生成する。RLおよびRCの値は表A
に挙げる。したがって、OSADR+[RL−RC]は、1.5000.000
0H+[2.A000.0000H−0.0800.0000H]になる。これ
は1.5000.0000H+2.9800.0000Hになり、これは3.E
800.0000H(15.625GB)になる。このアドレスは、オペレーテ
ィング・システムOS#3と関連付けられた排他ウインドウ540A内の位置に
相当する。単純な計算により、このアドレスは、4GBのハイメモリエリアベー
ス・アドレスからのオフセット1.25GBであることが分かる。上記で計算さ
れたアドレスは、OS#3の再配置ハイ・メモリ・ベース・アドレス(14.3
75GB)からのオフセット1.25GBでもある。
.5000.0000Hを発行する場合、代って再配置アドレスが、そのパーテ
ィション(すなわちウインドウ540B)に割り当てられた排他メモリ・ウイン
ドウ内にあたることになる。したがってOSADR+[RL−RC]は、1.5
000.0000H+[1.4000.0000H−0.1000.0000H ]になる。これは1.5000.0000H+1.3000.0000Hになり
、これは2.8000.0000H(10.00GB)になる。このアドレスは
明らかにメイン・メモリ160のハイ・メモリ・エリア534内にあたり、これ
はOS#2を実行するパーティションに割り当てられた排他メモリ・ウインドウ
(540B)の部分である。この例では、異なる2つのパーティション内のオペ
レーティング・システムにはそれぞれ、そのアドレス空間があたかも同一のベー
ス・アドレス(すなわちアドレス・ゼロ)で開始するように見えるが、それらの
アドレス空間内でのアドレス参照は、メイン・メモリ内の各パーティションに割
り当てられた排他メモリ・ウインドウ内のそれに対応する位置に適切に再配置さ
れることを実証している。言うまでもなく、本発明の再配置フィーチャは、異な
るパーティション上でオーバーラップする物理アドレス空間をどれでも2つ(両
方がアドレス・ゼロで始まるものに限らず)、メイン・メモリ内の各排他メモリ
・ウインドウにマップするのに使用することができる。
照を使用する。この例では、OS#3が、アドレス1.B900.0000H(
6.890GB)への参照を試みると想定する。TCT270は、このアドレス
が共用メモリの範囲内にあると決定する。したがって、本発明はマッピングする
関数OSADR+[SBASE MSU−SBASE OS]を適用して、MSUメ
モリ空間504にアクセスするのに適したアドレスを生成する。したがってマッ
プ関数は、1.B9000.0000H+[4.5000.0000H−1.B
8000.0000H]になる。これは、1.B9000.0000H+2.9
8000.0000Hになり、これは4.5100.0000H(17.265
6GB)になる。このアドレスは、MSUメモリ空間504の共用メモリ・ウイ
ンドウ537の範囲内にあたる。
グ・システムOS#2の共用ベース・アドレスに適用することにより、これに相
当するアドレスをOS#2について計算することができる。OSADRは5.7
50GB+0.0156GBに等しく、これは5.7656GB(1.7100
.0000H)に等しい。このマップ関数OSADR+[SBASE MSU−S BASE OS ]を適用すると、1.7100.0000H+[4.5000.0
000H−1.7000.0000H]が得られる。したがって、このマップ関
数は、4.5100.0000H(17.2656GB)のメモリ・アドレスを
生成する。したがって、1.B900.0000H(6.8906GB)のオペ
レーティング・システムOS#3によるメモリ参照と、1.7100.0000 H (5.7656GB)のオペレーティング・システムOS#2によるメモリ参
照はどちらも、アドレス4.5100.0000H(17.2656GB)にお
いてメイン・メモリ160にアクセスする。
ン・メモリ160内の特定のメモリ記憶装置にマップするプロセスである。図2
を参照すると、メイン・メモリ160は、概念上、複数のMSUペア222およ
び224(MSU_PAIRと呼ぶ)に分割されている。MSU_Pair内の
個々のMSU220は、一意的には接続されていない。図2には2つのMSU_
PAIR222、224のみを説明のためだけに示している。本発明では、2つ
以上のMSU_PAIRを企図している。
中、に生成された調整済みアドレス(すなわちメモリ参照)を利用し、次いでメ
モリ記憶装置ペア222、224間で、調整済みメモリ参照をインターリーブま
たはスタックする。本発明の目標は、各プロセッサ240と関連付けられたメイ
ン・メモリ要求をそれぞれ、メイン・メモリ160のグローバル・アドレス空間
(すなわち全DRAMアドレス空間)にわたって分配して、メモリ資源の競合を
最小にするために、連続したメモリ・アクセスが異なるメモリ記憶装置220間
で分配することである。インターリービングを実行できない場合には、メモリ・
アドレスが連続的な順序でメモリ記憶装置のペアに向けられ、本明細書ではこれ
をスタッキングと呼ぶ。
22およびメモリ記憶装置ペア224など2組のメモリ記憶装置がある。各メモ
リ記憶装置ペア(以降MSU_Pairと呼ぶ)には、メモリ記憶装置220A
および220Bなど2つのメモリ記憶装置が含まれる。インターリービングはメ
モリ記憶装置ペア222および224間で達成される。次いで、メモリ記憶装置
ペア222および224内のメモリ記憶装置220間でそれぞれインターリービ
ングが達成される。有効な結果は、4重(four-way)インターリービングである
。
メモリ記憶装置があるとする。メモリへの参照は、メモリ記憶装置220Aとメ
モリ記憶装置220Bの間で交互に行われる(ping-pong)ことが最適である。
すなわち、メモリへの最初の参照はメモリ記憶装置220Aにアクセスするのに
対し、2番目の参照はメモリ記憶装置220Bにアクセスする。メモリ記憶装置
220Aが1つだけのバンクを移植(populate)しているのに対して、メモリ記
憶装置220Bが8つのバンクを移植(populate)していて、メモリ記憶装置2
20Aとメモリ記憶装置220Bを交互に用いる場合、ある時点で、メモリ記憶
装置220Aはメモリ空間を使い果たしてしまう。この場合は、メモリ記憶装置
220B内の残りのメモリにスタックされる。すなわち、メモリ記憶装置220
Bの連続的アドレス指定(または参照)を手段とする。
メモリ記憶装置があっても複数のメモリ記憶装置があってもよいことである。さ
らにメモリ記憶装置は、異なる比率で移植(populate)することができる。すな
わち、1つのメモリ記憶装置は1つのDRAMバンクを移植(populate)させ、
別のメモリ記憶装置は8つのDRAMバンクを移植(populate)させることがで
きる。
装置ペア224の間およびMSU220の間において、メモリ参照のインターリ
ービングおよびスタッキングを用いる。このプロセスは、プロセッサ(MP)2
40から発行されるメモリ要求に対しては、各TCT270によって実行される
。DIBを介してI/Oプロセッサ(例えばPCIカード)から発行されるメモ
リ要求に対しては、このプロセスは各TCM285によって実行される。
20が、最初のキャッシュ・ライン・アドレス(すなわちTCT270からのア
ドレス)を受け取るべきかを初期化時に指定する機構が提供される。TCT27
0は、プロセッサのメモリ書き込み/読み取りアドレスを(任意の再配置後およ
び/または再利用後に)受け取り、アドレス変換機能を通じてそれをパスする。
好ましい実施形態では、メモリ記憶装置220は28ビットのキャッシュ・ライ
ン・アドレス(すなわちメモリ参照)、および8バイトのコンテナアドレスを、
16ギガバイトのメモリ空間を表すマルチサイクル信号から受信する。下記で説
明するアドレス変換オプションの設定に基づき、変換機能は、要求を受け取るメ
モリ記憶装置と関連付けられたMSU数を、28ビットMSUマップアドレスの
上位10ビットとともに生成する。TCT270はMSUのマップアドレスの下
位18ビットも供給するが、これらのビットは変換機能によって変更されない。
U220間でのメモリ・アクセスの、インターリービングおよびスタッキングの
多様な組み合わせを可能にする。表Cには、MSU_PAIRおよびその個々の
MSU220間での、メモリのインターリービング/スタッキングの8つの組み
合わせを挙げる。
つおきに交互のMSU_PAIRに分配している(例えばキャッシュ・ライン・
アドレス0はMSU_PAIR222に転送される)。アルゴリズムはさらに、
MSU_PAIRに向けられたキャッシュ・ラインを1つおきに、MSU_PA
IR222、224内の交互のMSU220に分配する(例えばキャッシュ・ラ
イン・アドレス0は、下位数のMSU220に向けられる)。
・ラインを1つおきに交互のMSU_PAIR222、224に分配する(例え
ばキャッシュ・ライン・アドレス0はMSU_PAIR222に転送される)。
本発明によりスタックされたMSU_PAIR222、224内のMSU220
の場合、アルゴリズムはさらに、もう一方のMSU220を連続的に満たす前に
そのMSU220が一杯になるまで、選択されたMSU_PAIR222、22
4の下位数のMSU220に、連続的にアドレス指定されたアクセスを向ける。
本発明によりインターリーブされたMSU_PAIR222、224内のMSU
220の場合、アルゴリズムはさらに、MSU_PAIR222、224に向け
られたキャッシュ・ラインを1つおきに、交互のMSU220に分配する(すな
わち、キャッシュ・ライン・アドレス0は、MSU_PAIR222、224内
の下位数のMSU220に向けられる)。
順次満たす前にそのMSU_PAIR222、224が一杯になるまで、下位数
のMSU_PAIR222、224(構成レジスタによって決定される)を連続
的に充填する。このアルゴリズムはさらに、もう一方のMSU220を連続的に
充填する前にそのMSU220が一杯になるまで、選択されたMSU_PAIR
222、224内の下位数のMSU220に連続的にアクセスを向ける。
AIR222、224を順次満たす前にそのMSU_PAIR222、224が
一杯になるまで、下位数のMSU_PAIR222、224を連続的に充填する
。スタックされたMSU_PAIR222、224内のMSU220の場合、本
発明は、もう一方のMSU_PAIR222、224を連続的に充填する前にそ
のMSU_PAIR222、224が一杯になるまで、選択されたMSU_PA
IR222、224のローMSU220のアドレスを連続的に指定する。インタ
ーリーブされるMSU_PAIR222、224内のMSU220の場合、本発
明は、MSU_PAIR222、224のキャッシュ・ラインを1つおきに、交
互のMSU220に分配する。キャッシュ・ライン・アドレス0は、そのMSU
_PAIR222、224内の下位数のMSU220に向けられる。
ンが1つおきに実行され、メモリ記憶装置ペアに対して交互に実行される、。す
なわち、最初のキャッシュ・ライン・アドレスはメモリ記憶装置ペア222に転
送され、次のキャッシュ・ライン・アドレスはメモリ記憶装置224に転送され
る。本発明では、メモリ記憶装置220Aが一杯になるまで、メモリ参照をメモ
リ記憶装置220A内に連続的にスタックする。メモリ記憶装置220Aが一杯
になると、本発明は次いで、メモリ記憶装置220Bが一杯になるまでそこにメ
モリ参照を連続的にスタックする。同様に、メモリ記憶装置220Cが一杯にな
ると、本発明は次いで、メモリ記憶装置220Dが一杯になるまでそこにメモリ
参照をスタックする。
再利用レジスタ内の当該の各アドレス・ビットについての行が含まれる。各行に
は機能フィールドおよびデフォルト値フィールドが含まれる。機能フィールドは
、当該のアドレス・ビットの機能を表す。デフォルト値フィールドは、初期化の
際にアドレス・ビットがデフォルトとして選択する値である。メモリ・アドレス
変換および再利用レジスタ内のビット・ステータスは、メモリ・アドレス空間の
再利用が使用可能であるかどうか、およびアドレス変換が使用可能であるかどう
かを決定する。これはまた、どのメモリ記憶装置ペアを選択するか、およびどの
メモリ記憶装置を変換プロセスのために選択するかを指定する。
ーブすることは、メモリ・コントローラ(図示せず)の責任である。
複数レジスタ内の設定によって決まる。例えば、表EおよびFは、第1メモリ記
憶装置ペアおよび第2メモリ記憶装置ペアにそれぞれ対応する、メモリ・アドレ
ス変換レジスタの初期化時における内容を示している。メモリ・アドレス変換レ
ジスタには、当該の各ビットのための行が含まれる。各行には、機能フィールド
およびデフォルト値フィールドが含まれる。機能フィールドは、当該のアドレス
・ビットの機能を含む。デフォルト値フィールドは、アドレス・ビットが初期化
時にデフォルトとして選択する値である。
、メモリ記憶装置の特定ペアに対するインターリービングが使用可能であるかど
うか、またはスタッキングが使用可能であるかどうかを決定する。メモリ・アド
レス変換レジスタ内のビット・ステータスはさらに、メモリ記憶装置ペアの2つ
のメモリ記憶装置のうち小さい方を示す。
される構成情報を示す。表Gは図2と次のように関連している。MSU_Pai
r0はMSU_Pair222、MSU_Pair1はMSU_Pair224
,MSU#0はMSU220A、MSU#1はMSU220B、MSU#2はM
SU220C、およびMSU#3はMSU220Dである。
plementation specific)であり、変換アルゴリズムを理解するためには必要で
はない。
の128MBバンクは、000_0000Hから700_0000Hのアドレス
範囲を有するが、そのサイズは800_0000Hである。このサイズを36ビ
ット[35:0]に拡張すると、0_800_0000Hになる。このサイズに
最上位の9ビット[35:27]を使用すると、この例のサイズレジスタは00
0000001Bまたは001Hでロードされる。
は、TCM285(各DIBを介した出入力プロセッサからのメモリ要求に対し
て)およびTCT270(プロセッサ240からのメモリ要求に対して)の両方
にある。アルゴリズムは2つのステップで実行される。第1ステップでは、どの
MSU_PAIRを選択するべきかを決定し、第2ステップでは、アドレスを送
るために、選択されたペアのどちらのMSUを選択すべきかを決定する。App
endixAに示すのは、フォワード・アドレス変換アルゴリズムの単純化した
擬似コードである。この擬似コードには、MSU_PAIRSの数、またはMS
U_PAIRごとのMSUの数などの基準を検証するチェックは含まれない。当
分野の技術者には直ちに明らかであるように、これらのチェックは、変換プロセ
スをより容易に理解できるように擬似コードから意図的に除外した。
り(take as)、レジスタPAIR_MODE、SMALLEST_PA
IR_SZおよびPAIR_SELを使用する。このアルゴリズムは、任意の必
要な調整後のアドレスである出力TEMP_ADDRを生成し、また、どのMS
U_PAIRが選択されているかを示すRCVING_PAIRを生成する。最
初、TEMP_ADDR[29:0]は、任意のアドレス再配置が実行された後
のアドレスである。TEMP_ADDR[29:0]はADDR_IN[35:
6]に等しい。TOP_OF_INTRLV_RANGEは、インターリービン
グのためのメモリがもう残っていないアドレス値である。すなわち、これはメモ
リ・アドレスのスタッキングが開始するアドレスである。TOP_OF_INT
RLV_RANGEは、SMALLEST_PAIR_SZの2倍に等しい。
U_Pairの選択は段階900に示される。段階902では、ペア間のインタ
ーリービングが使用可能であるかどうかを決定する。使用可能である場合段階9
04に示すように、このアルゴリズムはまず、インターリーブされたメモリ範囲
内にアドレスがあるかどうかを調べる。キャッシュ・ライン・アドレスがインタ
ーリーブ範囲の上にある場合、ステップ910に示すように、本発明は大きい方
のMSU_PAIRにスタックする。インターリーブ範囲の上にない場合、流れ
はステップ906へと続き、複数のMSU_PAIRの中からどのMSU_PA
IRを選択するかを決定する。好ましい実施形態では、低位のキャッシュ・ライ
ン・アドレス・ビット、TEMP_ADDR[0]がMSU_PAIRを選択す
るために使用される。
シュ・ライン・アドレスをスタックする。好ましい実施形態では、本発明は、キ
ャッシュ・ライン・アドレスをMSU_PAIR0にスタックし始める。MSU
_PAIR0(すなわちMSU_Pair222)が一杯になると、スタッキン
グ・プロセスはMSU_PAIR1(すなわちMSU_Pair224)に進行
する。スタッキングは、最上位のMSU_PAIRが一杯になるまで続行する。
これは一般にステップ912に示される。
ずれから)、キャッシュ・ライン・アドレスが再調整される。この調整の方法は
、インターリービングまたはスタッキングが選択されているかどうかによって決
まる。インターリービングの場合、キャッシュ・ライン・アドレス(TEMP_
ADDR)は、アドレスを右に1位置ずらし、最上位のアドレス・ビットをゼロ
充填することにより再調整される。スタッキングの場合、キャッシュ・ライン・
アドレスは同じままであるか、または擬似コードから明らかなように、TEMP
_ADDR−SMALLEST_PAIR_SZと等しくなるようにセットされ
る。
に進行する。このアルゴリズム段階は、入力TEMP_ADDRを有するが、こ
れはステップ908で調整されていることもありうる。段階920では次のレジ
スタを使用する:PAIR0_MODE、PAIR0_SMALLEST_MS
U_SZ、PAIR_SEL。段階920からの出力は、必要とされる任意の調
整後のキャッシュ・ライン・アドレスであるTEMP_ADDRと、どのMSU
がキャッシュ・ライン・アドレスを受け取るかを示すRCVING_MSUであ
る。初期化時において、PAIR0_TOP_OF_INTLV_RANGEは
、MSU_PAIR0のMSU間のインタリービングのためにメモリがもう残っ
ていないアドレス値である。PAIR1_TOP_OF_INTLV_RANG
Eは、MSU_PAIR1のMSU間のインターリービングのためにメモリがも
う残っていないアドレス値である。
RCVING_PAIRがMSU0またはMSU1に等しいかどうかを決定する
。同様に、段階900でMSU_Pair1を選択した場合は、次いで段階92
0で、RCVING_PAIRがMSU2またはMSU3と等しいかどうかを決
定する。説明を簡潔にするために、MSU0とMSU1間の選択だけを説明する
。
が使用可能であるかどうかを決定する。インターリービングが使用可能である場
合、ステップ926に示すように、アルゴリズムはまず、キャッシュ・ライン・
アドレスがインターリーブされたメモリ範囲内にあるかどうかを判定する。キャ
ッシュ・ライン・アドレスがインターリーブされたメモリ範囲内にある場合、ス
テップ928に示すように、低位のキャッシュ・ライン・アドレス・ビットが、
適切なMSUを選択するために使用される。次いでそのキャッシュ・ライン・ア
ドレスは、ステップ930に示すように、キャッシュ・ライン・アドレス・ビッ
トを右に1位置ずらし、最上位のアドレス・ビットをゼロ充填することにより再
調整される。
にある場合、ステップ932に示すように、アルゴリズムは大きい方のMSUに
スタックする。流れは次いでステップ930に進行し、TEMP_ADDRをT
EMP_ADDR_PAIR0_SMALLEST_MSU_SZに設定するこ
とにより、アドレスがスタッキングのために調整される。
ステップ934に示すように、本発明はまずMSU0にスタックし、次いで残り
をMSU1にスタックする。再度、アドレスは、ローMSUまたはハイMSUの
どちらが最初に使用されるかに基づいてステップ930で調整される。ローMS
Uが最初に使用される場合、TEMP_ADDRは変更されないままである。ハ
イMSUが最初に使用される場合、TEMP_ADDRはTEMP_ADDR_
PAIR0_SMALLEST_MSU_SZに設定される。
手順に従って行われる。
調整済みのTEMP_ADDR[29:0]に割り当てられ、RCVING_P
AIRはRCVING_MSU標識と連結されて、MSU_SEL[1:0]を
形成する。これにより、フォワード・アドレス変換アルゴリズムが完了する。
ドである。リバース・アドレス変換機能は、MSUコントローラ(図示せず)内
だけにある。
6は、2つのMSU_PAIR610、640を有するメイン・メモリ600を
示している。MSU_Pair610が2つのMSU620、630を有するの
に対し、MSU_Pair640は単一のMSU650を有する。MSU620
は1つの128メガバイト・メモリ・バンク1020を有し、MSU630は2
つの128メガバイト・バンク1030(すなわち256メガバイトのメモリ空
間)を有し、MSU650は4つの128メガバイト・バンク1040(すなわ
ち512メガバイトのメモリ空間)を有する。MSU620のトップは80.0
000Hである。これは、80.0000Hが、インターリービングのためにメ
モリが残っていないアドレス位置であることを意味する。MSU630のトップ
は100.0000Hである。したがって、MSU_Pair610は180.
0000Hのペア・サイズを有する。MSU650のトップは200.0000 H である。したがって、MSU_Pair610は200.0000Hのペア・
サイズを有する。MSU_Pair640は単一のMSU650しか含まないも
のの、概念上は1組のMSUとして扱われることに留意されたい。
0.0040H、0.0000.0080H、および0.0000.00C0H があり、それぞれが、任意のアドレス再配置実行後の、4つのオペレーティング
・システムからの4つのメモリ参照を表していると想定する。この例では、メイ
ン・メモリは図6に示すように構成される。この構成が、この数のメモリ・バン
クに対する最も効率のよいメモリ構成ではないことに留意されたい。
0(インターリーブ)に等しく、PAIR0_MODEは0(インターリーブ)
に等しく、PAIR1_MODEは1(スタック)に等しく、SMALLEST
_PAIR_SZは003Hに等しく、PAIR0_SMALLEST_MSU
_SZは001Hに等しく、PAIR1_SMALLEST_MSU_SZは0
04Hに等しく、PAIR_SELは1に等しく、PAIR0_SELは1に等
しく、PAIR_SELは0に等しい。上記のセットアップは変換のIISオプ
ションを表す。
の結果が得られる。 両位相のための初期化: PROCESSOR_ADDR[35:0]=000000000H TEMP_ADDR[29:0]=00000000H TOP_OF_INTRLV_RANGE=003H PAIR0_TOP_OF_INTLV_RANGE=002H PAIR1_TOP_OF_INTLV_RANGE=004H MSU_Pair選択位相: In TEMP_ADDR[29:0]=00000000H Results: RCVING_MSU=0(MSU_PAIR0) TEMP_ADDR[29:0]=00000000H MSU#選択位相: In TEMP_ADDR[29:0]=00000000H Results: RCVING_MSU=0(MSU#0) TEMP_ADDR[29:0]=00000000H the final results(最終結果): MSU_ADDR[29:0]=000000000H MSU_SEL[1:0]=00(MSU_PAIR0 のMSU#0) 第2アドレスの処理 初期化: PROCESSOR_ADDR[35: 000000040H 0]= TEMP_ADDR[29:0]=00000001H RCVING_PAIR=1(MSU_PAIR1) TEMP_ADDR[29:0]=00000000H RCVING_MSU=0(MSU#2) TEMP_ADDR[29:0]=00000000H 最終結果: MSU_ADDR[29:0]=00000000H MSU_SEL[1:0]=10(MSU_PAIR1 のMSU#2) 第3のアドレスからは次が得られる 初期化: PROCESSOR_ADDR[35: 000000080H 0]= TEMP_ADDR[29:0]=00000002H RCVING_PAIR=1(MSU_PAIR1) TEMP_ADDR[29:0]=00000001H RCVING_MSU=0(MSU#2) TEMP_ADDR[29:0]=00000000H 最終結果: MSU_ADDR[29:0]=00000000H MSU_SEL[1:0]=01(MSU_PAIR0のMSU#1) 以上に対し第4アドレスからは最終結果が得られる 初期化: PROCESSOR_ADDR[35: 0000000C0H 0]= TEMP_ADDR[29:0]=00000003H RCVING_PAIR=1(MSU_PAIR1) TEMP_ADDR[29:0]=00000001H RCVING_MSU=0(MSU#2) TEMP_ADDR[29:0]=00000000H 最終結果: MSU_ADDR[29:0]=00000000H MSU_SEL[1:0]=01(MSU_PAIR1 のMSU#2) 図7はこの例の結果を示している。
わせで実施できることを理解されたい。このような実施形態では、本発明の機能
を実行するために、種々の構成要素およびステップを、ハードウェアおよび/ま
たはソフトウェアで実施してよい。現在使用可能な、あるいは将来開発されるコ
ンピュータ・ソフトウェア言語および/またはハードウェア構成要素を、本発明
の上記の実施形態に用いることができる。特に、上記で説明し、上記および以下
の付表中に提供する擬似コードは、ソフトウェア実施形態を作成するのに特に有
用である。
・システム200のパーティションへの区分は、本発明により、ブート時に実行
される。メモリをパーティションに区分化し、マップし、インターリービングを
セットアップする例示的プロセスを以下で説明する。これらの初期化操作は、M
IP高速走査インターフェースを介して、Basic Input/Outpu
t System(BIOS)およびManagement Interfac
e Processor(MIP)によりブート時に実行することができる。M
IPは、管理アプリケーション・プラットフォーム(MAP)のハードウェア・
インターフェース部分であり、コンピュータ・システム200の初期化およびエ
ラー回復を実行する。例示的実施形態では、MIP高速走査インターフェースは
IEEE TAP Linker Specification1149.1に
準ずる。
れることがある。本明細書で使用する場合、この2つの用語は同義であり、オペ
レーティング・システムの1インスタンスによって制御されるシステムの部分を
指す。
ータが決定してMAP上にあるデータベースに入力することができる。パーティ
ション区分情報は、特定ウインドウに割り当てるべきシステム資源と、ウインド
ウ内でロードするオペレーティング・システムのタイプと、2つのパーティショ
ンが共用メモリを介して通信するかどうかと、また通信する際はどのように通信
するかを識別する。図2の例示的実施形態では、パーティションへの区分はサブ
PodおよびダイレクトI/Oブリッジ(DIB)の境界上で行われることが好
ましい。
。例えば、Windows NTおよびUnixware(Santa Cru
z Operation社から入手可能)などの市販のオープンアーキテクチャ
のオペレーティング・システムは、ディスク・コントローラ(SCSIファイバ
・チャンネルなど)、VGAコントローラ、互換性PCIボード、互換性周辺装
置(CD−ROM、テープ、およびディスク)を必要とする。これらの適切なハ
ードウェアはシステム上になければならず、システムはこれらの要件を確実に満
たす方式でパーティションに区分するべきである。このことは、パーティション
情報をMAP上のデータベースに入力する際に考慮に入れすべきである。
。
ドする。
内でロードする。この情報は、構成データベースに記憶されていたものを部分的
に反映する。
る。サブPodが調停し、1つのサブPodがBIOSサブPod(BSP)に
なることが好ましい。BSP内では、1つのプロセッサがマスタになり、このプ
ロセッサがBIOSコードを実行する。本明細書の残りの部分にわたって、BI
OSを実行するプロセッサはBSPと呼ぶことができる。このBSPは、下記の
複数の機能を実行する。
中の各PCIバスへのアクセス権を得、これはBSPのサブPod内のクロスバ
ー相互接続からMSUに延び、別のサブPod上の別のクロスバー相互接続を通
じて最終的にインターフェースを通ってDIBに通じる経路を通る。BSPは、
MSUにアクセスせずに、それ自体のサブPodと関連付けられたDIBにアク
セスすることができる。
ロードされた構成データを読み出して、どのDIBがどのパーティションにある
のかを決定する。BSPは、上記の経路を使用して、各互換性DIB内の「パー
ティション・レジスタ内のDIB」にパーティションID(PID)を書き込む
。このPIDは、通常のシステム動作中に、メッセージがDIBによって受け取
られる際に使用される。メッセージは、DIBがメッセージと同じPIDを有す
る場合にのみ処理される。PIDは、同一のオペレーティング・システムの下で
実行されているパーティション中のすべてのユニットが相互に対話することを許
可し、また、PIDは共用メモリを通じてメッセージを送るためにも使用される
。
タを読み出すことにより、ハイ・メモリ・ホールおよびロー・メモリ・ホールの
サイズを計算して、各PCIカードに対する入出力およびメモリ要件を決定する
。I/O空間をメイン・メモリにオーバーレイすることは、Intel Mul
ti−Processor Specificationにより、またある市販
PCIカードは64ギガバイト以上のアドレスを認識できないという事実から必
要である。
プI/O空間の量を、MIPに知らせる。これは、BIOS−MIP間の割込み
、および関連するメール・ボックスを介して行われる。この情報はMIPと関連
付けられた構成データベース内に含まれているので、MIPは、メイン・メモリ
のサイズ、およびオペレーティング・システム間で共用されることになるメモリ
量をすでに知っている。したがって、必要な入出力空間量がMIPに知らされる
と、MIPはTclスクリプトを使用して次の情報を計算することができる。
用する業界標準のシミュレーション言語である。シミュレーション・スクリプト
はまた、ハードウェアの初期化を達成するためにMIPにポートされる。
データベース中に置かれたデータと合わせて使用して、サブPod(TCT)、
クロスバー相互接続(TCM)、メモリ記憶装置(MSU)内のレジスタを設定
する。TCMを初期化すると、パーティションへの区分、DIBのためのアドレ
ス変換、DIBのためのメモリ・アドレス変換レジスタが設定される。これらの
定数は、インターリーブ機能およびメモリ再利用に使用することができる。
トが各TCM中にある。これには、範囲レジスタおよびブロードキャスト・レジ
スタが含まれる。
めの正当な(legal)メモリ範囲が含まれる。TCM内のインターフェースは、
パーティション定義に従って、使用可能/使用不可能にされる。
で初期化される。このレジスタは、特定のサブPodがメッセージに対して動作
すべきかを決定するために使用される。このレジスタ内と同じパ−ティションI
Dを持つメッセージは受信するされることになる。
わたるブロードキャスト・メッセージのために使用される。ブロードキャスト・
メッセージには、このレジスタで識別されるパーティションIDによりタグがつ
けられる。
ンドウのプロセッサへの割込みを有効にするために使用される。
された空間に対するアドレス範囲を含んでいる。パーティションIDレジスタは
、そのDIBへのメッセージだけが受信するされるように、パーティションID
を含む。
ク間のインターリーブを設定する。MIPは、インターリーブ操作を設定するた
めに、メモリ・アドレス変換レジスタ(表EおよびF参照)を初期化する。この
インターリーブ操作は、初期化の前にユーザーによって指定される。
用して、メモリ・マップI/O空間の位置、共用メモリ開始アドレス、再利用開
始アドレス、および新しいメモリ・トップを計算する。MIPは、MIPとBI
OS間の割込みおよびメイン・メモリ内の関連するメール・ボックスを使用して
、これらの開始アドレスをBIOSに戻す。MIPはさらに、ユーザー指定の構
成データと合わせてこの情報を使用して、構成レジスタ(上の表A)、変換およ
び再利用レジスタ(上の表D)を初期化する。これらのレジスタおよびメモリ・
アドレス変換レジスタ(上の表EおよびF)に記憶されている初期化データは、
ウインドウイング、再利用、アドレス変換機能を実行するためにアドレス変換論
理によって必要とされる。上記のように、これらのレジスタと関連する論理のコ
ピーは各TCT270内に位置し(プロセッサ240からのメモリ要求について
)、また各TCM285中にも位置する(DIBを介した入出力プロセッサから
のメモリ要求について)。MIPはさらに、各DIB、入出力ポート、APIC
メモリ・マップ空間、メモリ・アドレス空間のためのメモリ・マップ空間のため
の有効なアドレス範囲で、プロセッサ用の範囲レジスタを初期化する。
テムのための、メモリ内の構成テーブルをセットアップする。この情報は、共用
メモリの位置を各パーティションに通信する。構成テーブルはどのユーザー定義
のフォーマットでもよい。例示的実施形態では、Intel社から入手可能なM
ultiProcessor Specificationで定義されるMP構
成テーブルを使用する。MP構成テーブル内の「OEMテーブル・ポインタ」と
呼ばれるフィールドは、共用メモリ・エリアの位置および長さを含むユーザー定
義のエリアをポイントするのに使用される。UnixwareおよびNTドライ
バは、メモリ割り当ての目的と、待ち行列位置を決定する目的でこの情報を使用
する。
MIPはこのレジスタへのアクセス権を持っていないので、BIOSはこのレジ
スタをセットアップする。例示的実施形態では、これはIntelプロセッサの
ために行われ、例えばオペレーティング・システムに通信する各プロセッサ内の
トップ・オブ・メモリ・レジスタ(top of memory register - TOMR)に、
メモリ・トップがどこにあるかを示すために、各プロセッサ中でレジスタを書き
込むことが伴う。オペレーティング・システムは、TOMR値以上のメモリへの
アクセスを試みることは許可されない。
れたI/O、APIC割込み空間、メイン・メモリなど)内に存在するかをプロ
セッサに通信するメモリタイプ範囲レジスタ(memory type range register -
MTRR)も含むことができる。MTRRは、どのようにメモリ・アクセスを処
理するかをプロセッサに伝えるのに使用される。例えば、メモリ・マップI/O
空間に指定されるメモリ範囲へのプロセッサ読み出し操作は、プロセッサのキャ
ッシュには入れられない。オペレーティング・システムのインスタンスを実行し
ているプロセッサは、同じ値をその各MTRRにロードすべきである。
ペレーティング・システムのブートセクタを、構成データベース内の情報によっ
て決定されたメモリ内の適切な位置に読み込む。
割込みを発行し、これらのプロセッサは、指定された入出力装置から関連するオ
ペレーティング・システムをロードし始める。これが完了すると、オペレーティ
ング・システムは、そのウインドウ内の資源の制御を引き受ける。これにより、
BIOSによるオペレーティング・システムの遷移および処理が完了する。
) 前述のグローバル共用メモリ手法は、各パーティションごとの専用メモリ空間
を提供することができ、それに加えて、パーティションのすべてがアクセスする
ことのできる共用メモリ領域を提供することができる。共用メモリ領域は1つま
たは複数の読み出し専用領域を含むことができる。パーティションは、そのパー
ティション上で動作しているオペレーティング・システムおよび他のクライアン
トを含め、この共用メモリを介して互いに通信を行うことができる。
システムの一部によって、またはパーティション上に常駐することが可能な他の
ソフトウェアおよび/またはハードウェアによって管理され得る。共用メモリ領
域は、Microsoft Corp.から市販されるWindows NT、
The Santa Cruz Operation Inc.(SCO)から
市販されるUNIXWARE、Unisys Corp.から市販される、A―
Seriesファミリーのコンピュータ・システムに取って代るUNISYS
Clearpath HMP NXコンピュータ・システムに対して適合された
オペレーティング・システムであり、やはりUnisys Corp.から市販
されるMaster Control Program(MCP)、またはUN
ISYS Clearpath HMP IXコンピュータ・システムに対して
適合されたオペレーティング・システムであるOS2200を含むが、それらに
は限定されない様々なオペレーティング・システムによって管理され得る。
る。実施形態は、本明細書では、例示の目的で記載しており、制限するためにで
はない。他の実施形態(本明細書に記載する実施形態の等価形態、変形形態、偏
倚形態などを含む)は、本明細書に含まれる教示に基づいて、関連分野の技術者
には明白となる。本発明は、そうした代替の実施形態を含むことを意図し、その
ように適合されている。
例えば、1つまたは複数のPodまたはサブPod)内で動作している各オペレ
ーティング・システムには、共用メモリ160の一部分が関連付けられている、
または割り振られている。オペレーティング・システムは、共用メモリのそれが
関連する部分に書き込み、またそこから読み取ることができるが、他のオペレー
ティング・システムと関連するメモリの部分に書き込むことはできない。ただし
、すべてのオペレーティング・システムは、共用メモリ全体から読み取ることが
できる。
パーティションまたはそのオペレーティング・システムに専用の排他メモリ・ウ
インドウ(これ以降、時として、その「ローカル・モリ空間」とも呼ぶ)が割り
当てられる。オペレーティング・システムまたはそのオペレーティング・システ
ムと関連するアプリケーションが、メッセージを別のオペレーティング・システ
ムまたはそのオペレーティング・システムに関連するアプリケーションに送信す
るとき、この送信するエンティティは、そのメッセージが、ネットワークを介し
て転送されるように作成されたとすれば、行われたであろう方式と同じ方式で、
そのローカル・メモリ空間内のバッファにメッセージを作成する。送信するエン
ティティは、次に、このメッセージの一部分またはすべてを共用メモリ160の
その割り振られた部分にコピーする。
から読み取ることはできるが、そこに書き込むことのできない目標パーティショ
ン/オペレーティング・システムは、新しいメッセージが入手可能であることを
検出して、そのメッセージを共用メイン・メモリからその独自のローカル・メモ
リ(その排他メモリ・ウインドウ)内にコピーする。
ほとんどのデータ構造は、そのオペレーティング・システムのためのローカル・
メモリ空間内に常駐する。いくつかの新しいデータ構造は、好ましくは、共用メ
モリ160内に常駐する。
ョン間またはオペレーティング・システム間の通信を円滑にする。第1タイプは
、メッセージ・データを格納するメッセージ記憶構造を含み、この構造は、出力
メッセージ・バッファに組み込まれている。第2タイプは、メッセージ待ち行列
領域内に記憶される待ち行列構造を含み、この構造は、関連する出力メッセージ
・バッファ内に記憶されたメッセージ・データに対するポインタを含む。好まし
くは、これら2つのタイプのデータ構造は、共用メイン・メモリ160内に記憶
して、他方、様々なオペレーティング・システムおよび関連するアプリケーショ
ン・プログラムによって利用される他のコードおよび他のデータ構造は、関連す
るローカル・メモリ空間内に常駐する。これはシステム保全性を保護する。
待ち行列領域1414を含んだ、共用メモリ160の部分を図示している。一般
的に、出力メッセージ・バッファ・プール領域1402は、各パーティションと
関連付けられている。メッセージが同報通信されたとき、バッファ1410が、
メッセージに対して割り振られ、そこに1つまたは複数の待ち行列エンティティ
がポイントする。
プール領域1402に対する読み取りアクセスを有する。しかし、各パーティシ
ョンは、その関連する出力メッセージ・バッファ・プール領域1402内のバッ
ファ1410にのみ、書き込みアクセスを有する。
用であるn個のノード出力待ち行列1412に分割されている。すべてのパーテ
ィションは、メッセージ待ち行列領域1414全体に対する読み取りアクセスを
有するが、パーティションは、その関連するノード出力待ち行列1412のみを
変更することができる。このアクセス制御は、ハードウェア内で実施することが
でき、ハードウェアロックを不必要にして、これにより、回復オペレーションお
よび点検オペレーションを単純化する。
領域1414の例としての実施形態を図示している。ノード出力待ち行列141
2aは、各パーティションごとのノード間待ち行列1510を含んでいるのが図
示されている。本明細書で使用する「ノード」という用語は、「パーティション
」という用語と等価である。
の情報を図示している。例としてのノード出力待ち行列1412の最初の16ワ
ードは、関連するノードについての制御情報を含み、この情報は、後述するとお
り、ノード・オペレーティング・システム・タイプ(Node_OS_ID)1
610、ノード・メディア・アクセス制御(MAC)アドレス1612、および
回復中に使用する様々なリセット・フラグ(例えば、Reset_OK)を含む
。
力待ち行列に格納する8つのDequeued_offsetフィールドをさら
に含み、下記に説明するとおり、どれが、それぞれの異なるノードから受信すべ
き新しいメッセージであるかを示す。
が、制御情報の最初の16ワードに続く。各ノード間待ち行列1510は、メッ
セージを指定の異なるノードに送信するために、関連するオペレーティング・シ
ステムによって使用される。例えば、ノード0−ノード1間待ち行列1510a
は、メッセージをノード1に送信するために、ノード0によって使用される。単
純にするため、ノード間待ち行列1510は、各ノードごとに、それ自体にメッ
セージを送信するために提供することができる。
「Need_Reset」フラグおよび「Enqueue_offset」を含
んだ制御情報を含む。Need_Resetは、送信するノードが、ノード間待
ち行列のうちの1つをリセットしようとするとき、Reset_OKフラグのう
ちの選択した1つと併せて使用する。「Enqueue_offset」は、例
えば、1と511の間の数を含み、それぞれのノード間待ち行列1510内での
次に利用可能なエントリにポイントするのに使用する。ノード間待ち行列151
0の残りのワード(例えば、511ワード)のそれぞれは、関連する出力メッセ
ージ・バッファ1410内の関連するメッセージ・データ構造1416にポイン
トするオフセット・ポインタを含む。
ジ・バッファ1410の開始からの64ビット・ワードの数である。ポインタは
、実アドレスまたは仮想アドレスからではなく、なんらかのベース・アドレスか
らのオフセットでなければならない。ポインタは、仮想アドレスに基づくもので
あってはならない。というのは、ノードが異種ノードであるとき、それらが、共
通仮想アドレス変換を有さない可能性があるからである。ポインタは、実アドレ
スに基づくものであってはならない。というのは、前述のアドレス変換方式の結
果、1つのノードによって使用される実アドレスは、一般的に、別のアドレスに
よって使用される実アドレスと一致しないからである。
システムが、ノード初期設定中に、前述の管理アプリケーション・プラットフォ
ーム(MAP)から受信した情報から計算することのできるアドレスからのオフ
セットである。
は、例えば、図16Aおよび16Bに図示するとおり、512ワード長であるこ
とが可能であり、各ノード出力待ち行列1412が、16+8(512)ワード
長になるようになっている。
ったとき、関連する待ち行列がいっぱいにならないのを確実にすることを助ける
。待ち行列の深さは、初期設定中に、マネージャ・アプリケーション・プラット
フォーム(MAP)によって指定され得る。前述のとおり、MAPは、コンピュ
ータ・システム200に対する初期設定およびエラー回復を実行するためのサポ
ートシステムである。
計することができる。このデータは、構成テーブルのそれぞれへのエントリとし
て追加することができ、このテーブルは、システム内の各オペレーティング・シ
ステム・インスタンスごとに、MAPによって提供されて、それぞれのオペレー
ティング・システムに共用メイン・メモリの場所などの必要なシステム・パラメ
ータを知らせるデータ構造である。
いる。各メッセージ・データ構造1416は、好ましくは、0のオフセットで関
連する出力メッセージ・バッファ1410内に配置され、ヘッダ領域1710お
よびメッセージ・データ領域1712を含む。ヘッダ領域1710は、ワード0
〜nを占有することが図示されており、バッファ長、ヘッダ長、およびカウント
情報を含む。カウント情報は、好ましくは、2200オペレーティング・システ
ム(すなわち、Unisys Corporationから市販される2200
型プロセッサに対して適合されたオペレーティング・システム)によってメッセ
ージを書き込むために含まれる。というのは、2200オペレーティング・シス
テムによってメモリに書き込まれたメッセージは、連続するメモリ・ロケーショ
ンを占有しないからである。2200オペレーティング・システムを実行するノ
ードが、共用メモリ内にメッセージ・データを記録するとき、各64ビット・メ
イン・メモリ・ワードは、せいぜい32ビットのデータを格納するに過ぎず、こ
れは、各64ビット・メイン・メモリ・ワードの最下位ビットに配置されること
になる。いくつかのワードは、メッセージがワード境界で開始または終了しない
場合、より少ないビットを格納する可能性がある。したがって、第1バイト・ス
キップ・カウントが、プロトコル・ヘッダとメッセージ・データ間でスキップさ
れるべきバイト数を示す。バイト転送カウントは、関連する有効メッセージ・フ
ィールドのバイト長を示す。バイト・スキップ・カウントとバイト転送カウント
の合計は、(バッファ長−ヘッダ長)*4に等しいか、それより少なくなければ
ならない。
に対して1500バイト・ワード、つまり37564ビットワードである。一実
施形態では、本発明は、ネットワーク入力/出力処理アーキテクチャ(NIOP
)を含み、これは、米国特許第5659794に記載され、Unisysに譲渡
された、Unisys Corporationによって開発されたメッセージ
・ハンドラであり、これは、50の別々のデータストリームを1つのメッセージ
・セグメントに結合して、ネットワークを介して送信することを可能にする。し
たがって、427ワードの出力メッセージ・バッファ・サイズは、2200オペ
レーティング・システムが、イーサネット(登録商標)LAN環境の場合と同じ ように、本発明の共用メモリ環境で機能し続けることを可能にすることになる。 511の待ち行列の深さおよび427ワードのバッファ・サイズを所与として、 (511*427*8)//4096=1748992ワードのノード・バッフ ァ・プール・サイズである。したがって、共用メモリ環境当たり必要な合計共用 メモリは、(65536+1748992*8)//4096=1405747 2ワードである。
ーティング・システムOS1が、第2オペレーティング・システムOS2にメッ
セージを送信しようとしていると想定する。OS1−OS2間ノード出力待ち行
列1412は、いっぱいになっていないとさらに想定して、OS1は、OS1出
力メッセージ・バッファ領域1410a内の利用可能なメッセージ・データ構造
(すなわち、バッファ)1416aを得る。バッファ1410aは上述のとおり
、好ましくは、アドレス・オフセット・ポインタによって識別される。OS1は
、そのメッセージに対するプロトコル・ヘッダ1710を作成して、このヘッダ
1710およびメッセージ1712をOS2のローカル・メイン・ストーレッジ
からこの利用可能なメッセージ・バッファ1416aに転送する。次に、OS1
は、OS1−OS2間待ち行列1510a内のEnqueued_offset
の内容を増分して、OS1−OS2間待ち行列1510a内の次に利用可能なエ
ントリにポイントする。OS1は、メッセージ・データ構造(すなわち、バッフ
ァ)1416aにポイントするオフセット・ポインタをこの次の利用可能なエン
トリにコピーする。好ましい実施形態では、Enqueued_offsetは
、巡回待ち行列として維持される。
ングする。これは、OS2のノード出力待ち行列1412aの制御領域内に記憶
されているOS2に関する適切なDequeued_offsetの内容を、O
S1のノード出力待ち行列1412bのOS1−OS2間出力待ち行列内に記憶
されている適切なEnqueued_offsetに比較することによって行わ
れる。好ましい実施形態では、Dequeued_offsetは、巡回待ち行
列として維持される。
れは、ノードのノード出力待ち行列1412のうちの対応する送信する待ち行列
内のエントリにポイントする1と511の間の値を格納する。例えば、OS2の
出力待ち行列のワード8内に記憶されているDequeued_offsetは
、OS1のノード出力待ち行列1412a内の「ノード0−ノード1間待ち行列
」にポイントするオフセット値を格納する。同様に、OS2のノード出力待ち行
列1412のワード15内に記憶されているDequeued_offsetは
、「ノード7−ノード1間待ち行列」にポイントするオフセット値を格納する。
前述のとおり、データ構造は、ノード出力待ち行列1412、および各ノードま
たは各オペレーティング・システムが、それ自体にメッセージを送信することを
可能にする、関連するDequeued_offset、例えば、OS1−OS
1間ノード出力待ち行列を含む。
ued_offsetフィールドが、OS1−OS2間待ち行列内のEnque
ued_offsetフィールドに比較される。この2つのオフセット・エント
リが同じである場合、その待ち行列は、空である。Enqueued_offs
etがDequeued_offsetとは異なる場合、1つまたは複数のエン
トリが、OS1−OS2待ち行列上に存在する。
offsetの内容を使用して、そのメッセージをリトリーブして、次に、De
queued_offsetを増分する。メッセージ・オフセット・ポインタを
使用してメッセージをリトリーブして、それをローカル・ストーレッジ内に格納
する。
ング機構と同様の機構を使用して、エントリを適切な待ち行列に追加するのに先
立って、待ち行列がいっぱいであるかどうかを決定することができる。つまり、
受信側待ち行列内のDequeued_offsetが、送信するノードの出力
待ち行列内の適切なEnqueued_offsetに比較される。Enque
ued_offsetの内容が、Dequeued_offsetの内容と同じ
である場合、その待ち行列は、いっぱいになっており、その時点で何もメッセー
ジを追加することができない。Enqueued_offsetおよびDequ
eued_offsetは、すべてのオペレーティング・システムが、他のすべ
てのオペレーティング・システムの待ち行列領域を読み取ることができるが、オ
ペレーティング・システムは、それ独自の待ち行列領域のみを変更することがで
きるという想定に適合する。
メモリから大容量ストーレッジに、そのメイン・メモリ内に追加の空間を作ると
いうオペレーティング・システムの指示の下で、転送または「ページ送り」され
得る。本発明の例としての実施形態では、ページ送りは、ローカル・メモリ領域
内に記憶されているコードおよび/データに対して許されるが、共用メモリ16
0内に常駐するデータ構造に対しては許されない。この制約は、共用メモリ空間
160を使用するオペレーティング・システムが、共用メモリ空間160内に記
憶されているデータ構造の場所と内容について、前提を有することを可能にする
。
ションが、Intelベースのアプリケーション(例えば、Intelプラット
フォーム上でWindows NTのために書かれたアプリケーション)と通信
を行い、そこでは、唯一の実質的なオペレーティング・システムの関与は、共用
メモリを管理すること(例えば、メッセージ待ち行列の初期設定を要求すること
)だけである。この例としての実施形態では、2200オペレーティング・シス
テムは、Intelノードのためにサービスを要求する、またはサービスを実行
することをしない。代わりに、サービスは、アプリケーション間要求を介して実
行される。関連分野の技術者は、2200オペレーティング・システムを、別法
として、直接にIntelノードのサービスを要求するように変更するのが可能
であることを理解されよう。
ィング・システム・アプリケーション・プログラムとNTアプリケーション・プ
ログラムおよび/またはUnixアプリケーション・プログラムとの間で通信を
行うことを可能にする。これは、MCPオペレーティング・プログラムの下で動
作するアプリケーションとNTオペレーティング・システムおよび/またはUn
ixオペレーティングとの間での通信を円滑にするのにも使用することができ、
またオペレーティング・システム間の通信のためにも使用することができる。同
様に、これは、NTオペレーティング・システムの関連する異なるインスタンス
の下で動作するアプリケーション間の通信を円滑にするのに、また、Unixオ
ペレーティング・システムの関連する異なるインスタンスの下で動作するアプリ
ケーション間の通信のために使用することができる。共用メモリ機構は、220
0オペレーティング・システムとMCPオペレーティング・システムの間の通信
を円滑にするのに使用することができる。
通常、ASCII文字であるが、1バイト、2バイト、または4バイトの正の整
数などの正の整数およびビット情報も含み得る。2200オペレーティング・シ
ステムは、36ビットワード上で動作して、ASCII文字を9ビット・バイト
内の8ビットとして表す。Intelプラットフォームは、IA32アーキテク
チャまたはIA64アーキテクチャを使用して、それぞれ、32ビット・ワード
または64ビット・ワード上で動作して、ASCII文字を8ビット・バイト内
の8ビットとして表す。したがって、共用メモリに書き込まれた、またはそこか
ら読み取られたデータは、変換処理を受けなければならない。この変換は、22
00オペレーティング・システム・ハードウェア命令によって実行され得る。2
200型プロセッサは、ブロック転送圧縮(Block Transfer P
ack)(BTP)命令を使用して、ASCIIデータを9ビットから8ビット
・バイトに圧縮して、メイン・メモリの64ビットワード内の最上位の32ビッ
トをゼロ充填する。
ージ・データが連続するバイト内に含まれることを予期する。2200オペレー
ティング・システムのブロック転送圧縮(BTP)命令は、メッセージ・データ
を共用メモリ内の連続するバイト内に入力しない(ワード内の4バイトが、通常
、使用されない)ので、Intelプラットフォーム上で動作するデバイス・ド
ライバは、メッセージを処理できるようにするには、まず、そのメッセージ・デ
ータをローカル・メイン・メモリ内の連続するバイト内に移動しなければならな
い。同様に、2200型プロセッサは、メッセージを受信したとき、ブロック転
送圧縮解除(Block Transfer Unpack)(BTU)命令を
使用して、共用メイン・メモリからASCIIデータを圧縮解除して、それを関
連するローカル・メモリ内に移動する。ブロック転送圧縮命令およびブロック転
送圧縮解除命令は、また、ビッグ・エンディアン(big−endian)/リ
トル・エンディアン(little−endian)変換も実行する。2200
―Intel間メッセージ、Intel−2200間メッセージ、およびInt
el−Intel間メッセージに関する、共用メモリ414への、またそこから
のデータ移動の例を下記に提供する。
ウェアには、できる限りトランスペアレントにして、ソフトウェア変更が最小限
に抑えられ、またシステムが、様々なオープン・システム規格とできる限り互換
性を有するようにする。例えば、本発明の一態様によれば、システムは、あたか
もワイヤによる通信が維持されているかのように、ソフトウェアの上層から現れ
るようにすることができる(下記のセクションIV.B.を参照)。例としての
実施形態では、システムは、イーサネット・プロトコルを使用する。関連分野の
技術者は、ATMプロトコルなどの他のプロトコルを使用できることを理解され
よう。
、NICデバイス・ドライバ内で可視であり、このドライバは、オープン規格相
互接続(OSI)通信モデルのLLC/MACレベルに存在する。LLC/MA
Cは、OSIレベル2通信モデルの2つの副層である。LLCは、層2と層3の
間のインターフェースであり得る。MACは、イーサネット、トークンリング、
トークンバスなどの様々なLANを扱うIEEE副層である。
ACレベルでも起きる。この設計上の選択は、また、他のパーティションがワイ
ヤによる通信を維持する一方で、いくつかのパーティションが共用メモリを介し
て通信するのを容易にもする。この2つのタイプの通信は、ソフトウェアの上層
からは同一であると見られる。
大きなメッセージは、いくつかのセグメントに分割して、複数のメッセージ転送
オペレーション中に転送しなければならない。
を有する。したがって、イーサネット接続が、共用メモリで置き換えられた場合
、1500バイトが、別のノードに対する出力のために待ち行列に入れられるバ
ッファ内にどれだけのデータを入れることができるかに対する制限となる。すべ
ての通信プロトコルの場合と同様に、任意サイズのメッセージを送信することが
できるが、それは、いくつかの別々の伝送(バッファ)で送信しなければならな
い可能性がある。
ジ・データを共用メモリ内に転送することができる。
tion) 割込み主導共用メモリ管理の実施を、代替実施形態として、次に説明する。こ
れには、この代替実施形態により、どのように共用メモリ領域、または区域にア
クセスし、またこれを管理するかの説明も含まれる。この実施形態では、共用メ
モリ・ウインドウの管理は、各パーティション上に常駐するコア・サービス・ソ
フトウェアとして実現されたプログラム・コードによって実行される。各パーテ
ィション上のコア・サービス・ソフトウェアは、アプリケーション・プログラム
・インターフェース(API)を提供し、これは、そのパーティション内で動作
するクライアントが呼び出して、ある共用メモリ・サービスを要求することがで
き、これは、例えば、別のパーティション上のクライアントとの、共用メモリ・
ウインドウを介する通信などである。本明細書および請求項で使用する「クライ
アント」は、オペレーティング・システム、デバイス・ドライバ、アプリケーシ
ョン・プログラム、または共用メモリ・ウインドウの使用を必要とする、パーテ
ィション上で動作する任意の他のソフトウェア・コードまたはプログラム・コー
ドであり得る。また、本明細書および請求項で使用する「通信」という用語は、
信号(後述する)、データの形式でのメッセージ(これは、共用メモリ・ウイン
ドウ内で割り振られたバッファ内に記憶されることも、記憶されないこともあり
得る)、または任意の目的で、パーティション間で通信される任意の他の形式の
情報またはデータを意味することが可能である。ポーリング技法を使用して、通
信がパーティション間で転送されるかどうかを決定する前の実施形態の場合とは
異なり、この実施形態は、下記により十分に説明するとおり、プロセッサ間割込
み機構を使用して、パーティション間の通信を行う。
ステム(例えば、Unisys MCP、Unisys OS2200、Win
dows NT、Unixなど)の制御下で動作するパーティション間、または
同一オペレーティング・システムの異なるインスタンスの制御下で動作するパー
ティション間の通信を円滑にするのに使用することができる。
図示している。示すとおり、制御構造1900は、共用メモリ・ウインドウのベ
ースに常駐して、それに共用メモリ・ウインドウの残りの部分1916が続き、
これは、別々のページに分割されている。本実施形態では、各ページは、4Kバ
イトを含む。ただし、このサイズは、他の実施形態では異なり得る。各ページは
、使用中、使用可能、使用不可であり得る。後述のとおり、クライアントは、例
えば、バッファを定義するために、共用メモリ・ウインドウの一部分がそれに割
り振られることを要求することができ、コア・サービス・ソフトウェアが、必要
な数のページを割り振って、その要求を満たす。
on structure)1912と、関連するヘッダ1914を有する複数のパーティシ
ョン入力待ち行列とを含む。制御構造内の情報は、専用である。この情報への直
接アクセスは、コア・サービス・ソフトウェアのクライアントには提供されない
。代わりに、コア・サービス・ソフトウェアAPIは、クライアント関連情報を
クライアントに、手続きパラメータを介して戻すコールを提供する。本実施形態
では、制御構造内のワードは、64ビットを含み、そこでの上位32ビットは、
異なるプロセッサ・アーキテクチャによって使用される異なるサイズのワードを
考慮に入れて、0である。
いものを追跡するために、使用可能ページは、各ページの第1ワード内のポイン
タを介してリンクされて、使用可能ページのリンク済みリストを形成する。使用
可能ページのリンク済みリストは、本明細書では、空きページ・リストと呼ぶ。
制御構造1900が、リンクされるリストの第1ページ(すなわち、空きページ
・リストの始め)に対するポインタを提供する。
のページを割り振って、クライアント・ディレクトリ・テーブル(図示せず)を
格納する。クライアント・ディレクトリ・テーブルは、共用メモリ・ウインドウ
を使用している各パーティション上のクライアントの登録である。より詳細には
、本実施形態では、任意のパーティション上のコア・サービス・ソフトウェアの
各クライアントが、コア・サービス・ソフトウェアにクライアント・グループの
メンバとして登録しなければならない。同一パーティション上の2つのクライア
ントが、同一クライアント・グループのメンバであることはできない。コア・サ
ービス・ソフトウェアの複数のクライアントが存在する場合、それぞれが、異な
るクライアント・グループのメンバとして登録しなければならない。各クライア
ント・グループは、関連する名前(クライアント・グループ名)および識別子(
クライアント・グループID)を有する。クライアント・ディレクトリ・テーブ
ルは、クライアント・グループ名を指定する各クライアント・グループごとのエ
ントリを含み、そのグループのメンバとして登録されたクライアントを有する各
パーティションをリストする。クライアントが、コア・サービス・ソフトウェア
に特定のクライアント・グループのメンバとして登録したとき、コア・サービス
・ソフトウェアは、クライアント・グループIDをそのクライアントに戻す。こ
のクライアント・グループIDは、後述のとおり、メッセージが、共用メモリ・
ウインドウを介して渡されたとき、送信するクライアントおよび受信するクライ
アントを識別するのに使用する。
のいくらかの部分を割り振るクライアント要求のために、共用メモリの1つまた
は複数のページを割り振ることができる。本実施形態では、4つの異なるページ
・タイプを定義する。
・ソフトウェアによる使用のためのみに割り振ることができる。クライアントが
タイプ1ページの割り振りを要求するのを可能にするインターフェースは、存在
しない。一例として、前述のクライアント・ディレクトリ・テーブルは、コア・
サービス・ソフトウェアによって割り振られた1つまたは複数のタイプ1ページ
内に記憶される。コア・サービス・ソフトウェアが、タイプ1メモリ・ページを
割り振ったとき、コア・サービス・ヘッダが、そのページの始めに作成される。
図32Aは、本実施形態による、タイプ1ページに対するコア・サービス・ヘッ
ダの内容を図示している。
そのページに対するアクセス権を有するかの指示を格納するのに使用する。詳細
には、パーティション所有権マスクは、コンピュータ・システム内でそれぞれの
可能なパーティションごとに1ビットの、8ビットを含む。そのページに対する
所有権を有する各パーティションは、その対応するビットをパーティション所有
権マスクセット内に有することになる。クライアント・ディレクトリ・テーブル
の場合、例えば、このテーブルにアクセスを要求する各パーティションは、この
テーブルのすべてまたは一部を含んだ各ページ内で、パーティション所有権マス
クのそのビットを有することになる。
能にするインターフェースは存在しないが、クライアントがタイプ1ページを要
求するのを可能にする、望まれ得るさらなる実施形態に対応すると、タイプ1ペ
ージ内のコア・サービス・ヘッダは、クライアント・グループIDフィールドを
さらに含むことになる。このIDフィールドは、そのページに対する所有権を有
するクライアントのクライアント・グループIDを保持するのに使用されること
になる。ただし、本実施形態では、このフィールドは、使用しない。
整するのに使用する。このフィールドは、コア・サービス・ソフトウェアを介し
て実施される、本発明のより広いロック機構の一部であり、この機構は、異なる
パーティションが、必要に応じて、共用メモリ・ウインドウの様々な構造、ペー
ジ、およびテーブルに対するアクセスを整合性のある方式でロックするのを可能
にして、一度に1つのパーティションだけが、任意の構造、ページ、またはテー
ブルを変更できることを確実にする(すなわち、これらの構造に対するアクセス
を同期化するため)。
のロック・フィールドは、ワード0およびワード1と呼ばれる、2つの64ビッ
ト・ワードから成る。ワード0は、ロック・ステータス・ワードを定義し、ワー
ド1は、所有者ワードを定義する。ワード0の下位ビットは、「使用中」ビット
を定義する。このビットを設定することは、ロック済みステータスを示す。ワー
ド1は、ロックを獲得するパーティションのパーティションIDを格納するのに
使用して、そのロックの所有者を判定できるようにする。
セッサは、オペレーティング・システムおよびこれらのオペレーティング・シス
テムの下で動作するクライアントが、それによって任意のデータ構造に対するロ
ックを獲得することができる方法を提供する。本明細書で使用するロック・フィ
ールド形式は、例えば、Windows NT、UnixWare、およびUn
isys MCPを含むいくつかのオペレーティング・システムと互換性がある
。任意のパーティション上のコア・サービスは、そのパーティションのオペレー
ティング・システムおよびプロセッサ・アーキテクチャに対して調整されなけれ
ばならない。
割り振られたとき、割り振りを行うパーティションは、割り振り中にそのページ
に対するアクセスをロックするためにシステム・ワイド・ロック(system wide
lock)(後述する割り振り構造のフィールド)を獲得しなければならない。ただ
し、1つまたは複数の割り振り済みページの所有権が、他のパーティションに拡
張または移転されたとき、関与するページに対するロックだけを獲得すればよい
。これらのページ内のDeallocationLockフィールドが、この目
的で使用される。これは、パーティション間の通信のより大きなスループットを
容易にする。というのは、システム・ワイド・ロックに対する競合が回避される
からである。
のパーティション上のクライアントに渡すためのバッファを定義するために、ク
ライアントによって要求され得る。タイプ1ページの場合と同様に、タイプ2メ
モリ・ページが、任意のクライアントに割り振られたとき、コア・サービス・ヘ
ッダが、そのページの始めに作成される。図32Bは、本実施形態による、タイ
プ2ページに対するコア・サービス・ヘッダの内容を図示している。
フィールドは、タイプ1ページに対するヘッダ内の対応するフィールドと同一で
ある。つまり、パーティション所有権マスクは、どのパーティションが、そのペ
ージに対する所有権を有し、クライアントIDフィールドは、そのページに対す
る所有権を有するクライアントのクライアント・グループIDを含む。そのペー
ジが最初に割り振られたとき、このフィールドは、その割り振りを要求したクラ
イアントのクライアント・グループIDを含むことになる。
の対応するフィールドと同様に、ページの所有権の変更を調整するのに使用する
。ページの所有権の変更を実現しようとするどのパーティションも、まず、De
allocationLockフィールドを介して、そのページに対するロック
を獲得しなければならない。
本発明の追加の特徴に関連し、これにより、タイプ2メモリ・ページを割り振る
要求の一環として、その割り振り要求でのバッファ・サイズを満たすために、ゼ
ロまたは複数のタイプ3ページをタイプ2要求と関連して割り振ることができる
。タイプ3ページ・カウント・フィールドは、タイプ2ページと関連するタイプ
3メモリ・ページの総数を指定し、またタイプ3ページ参照フィールドは、関連
するタイプ3ページへの参照(すなわち、ポインタ)を含むタイプ2ページ内の
位置を指定する。
せて使用する。タイプ3ページは、クライアント・データを含み、クライアント
・グループによって所有されている。ただし、タイプ3ページは、明示的なクラ
イアント・グループ情報を含まない。代わりに、タイプ3ページのクライアント
・グループ所有権は、その関連するタイプ2メモリ・ページの所有権によって、
そのタイプ2ページのコア・サービス・ヘッダのクライアント・グループIDフ
ィールド内に指定されるとおり、管理されている。タイプ3ページの所有権は、
その関連するタイプ2ページの所有権が変更されたときはいつでも、暗黙的に変
更される。
所有権のためのものである。タイプ1、2、3メモリ・ページとは異なり、タイ
プ4メモリ・ページの所有権は、後述する割り振りテーブル内で指定される。し
たがって、タイプ4ページの所有権に対するすべての変更は、システム・ワイド
・ロックの獲得を必要とする。
バージョンIDフィールドは、コンピュータ上で動作しているコア・サービス・
ソフトウェアの特定のリリース、つまりバージョンを識別する。共用メモリ・ス
テータス・フィールドは、共用メモリのステータス(例えば、「未初期設定」、
「初期設定中」、「初期設定済み」、および「クリーンアップ」)を示す。マス
タ・パーティションのパーティションIDフィールドは、どのパーティションが
、共用メモリ・ウインドウの「マスタ(Master)」として指定されているかを識
別する。マスタ・パーティションは、下記により十分に説明するとおり、共用メ
モリ・ウインドウを管理するための責任(responsibilities)を追加している。
共用メモリパーティション・チェックイン間隔フィールドは、パーティションが
、その時点で、あるステータス情報を更新して、他のパーティションにそれがア
クティブであることを示すことが必要となる時間間隔を指定する。クライアント
・ディレクトリ・テーブル・ヘッダ・フィールドは、クライアント・ディレクト
リ・テーブルの始めに対するポインタ、および本発明のロック機構に従って、そ
のテーブルへのアクセスを調整するのに使用するロック・フィールドを含む。
れぞれに関する情報で終了し、これは、そのパーティション上で動作しているオ
ペレーティング・システムのタイプ(例えば、NT、UnixWare、MCP
など)、およびそのパーティションに対してプロセッサ間割込みを発行するのに
必要な情報を含む。
せず)を介して円滑になっている。共用メモリ・ウインドウ内の各割り振りペー
ジは、この割り振りテーブル内のエントリによって表されている。各エントリは
、対応するページが、「使用中(in use)」、「使用可能(available)」であ
るかどうかを示し、あるいは使用不可であるメモリを参照し、また、ページ・タ
イプの指定も行い得る。タイプ4メモリ・ページの場合、エントリは、タイプ1
メモリ・ページおよびタイプ2メモリ・ページのヘッダ内に見られるようなパー
ティション所有権マスクの形式で、どのパーティションが、そのページに所有権
を有するかをさらに指定する。したがって、この点では、タイプ4ページの所有
権は、タイプ1ページ、タイプ2ページ、およびタイプ3ページの場合(所有権
情報が、ページ自体のコア・サービス・ヘッダ内に常駐する)とは異なる方式で
維持される。割り振りテーブルは、クライアント・ディレクトリ・テーブルと同
様に、それ自体、共用メモリ・ウインドウの1つまたは複数のページを占有する
。
ーブルおよび他の構造に関連するいくつかのパラメータを制御する。図21は、
本発明の実施形態による割り振り構造の内容を図示している。ロック・フィール
ド(割り振りロック)が、割り振りテーブルに対するアクセスを制御するのに使
用される。これは、前述したシステム・ワイド・ロック(タイプ1ページおよび
タイプ2ページのヘッダ内の個々のページ・ロックに対比される)である。パー
ティションは、ページのどの初期割り振りについても、このロックを獲得しなけ
ればならない。このロックは、タイプ4ページの所有権のどの後続の変更にも要
求されなければならない。というのは、タイプ4ページの所有権は、そのそれぞ
れの割り振りテーブル・エントリ内で維持されているからである。ただし、前述
のとおり、タイプ1ページおよびタイプ2ページの所有権の後続の変更には、そ
れらのページ自体のヘッダ内にある個々のページ・ロックだけを獲得すればよい
。個々のページ(タイプ1および2)をロックできるこの機能は、パーティショ
ン間のより大きなスループットを容易にする。というのは、システム・ワイド・
ロック(割り振りロック)に対する競合が除去されるからである。
割り振り可能ページの数を指定する。共用メモリ・ページ・ポインタ・フィール
ドは、割り振りページの始めに対するポインタを提供する。空きページ・リスト
・ヘッダは、空きページ・リストの始めに対するポインタを提供し、また割り振
りテーブル・ヘッダは、割り振りテーブルの始めに対するポインタを提供する。
なカテゴリの信号が存在する。(1)パーティション間のコア・サービス間信号
、および(2)パーティション間のクライアント間信号である。コア・サービス
間信号は、異なるパーティション上で動作するコア・サービス・ソフトウェア間
で送信されるものである。クライアント間信号は、異なるパーティション上のク
ライアント間で送信されるものである。各カテゴリの信号は、1つまたは複数の
信号サブ・タイプを有する。各信号は、コア・サービス情報セクションおよびク
ライアント情報セクションを含む。これらのセクションのそれぞれは、いくつか
のワードを含み、その定義は、そのタイプに依存する。
定義されない。すべての情報は、コア・サービス情報セクションに含まれる。下
記のコア・サービス間信号サブ・タイプが、本実施形態で定義される。
ービス・ソフトウェアに登録または登録抹消したときはいつでも、コア・サービ
ス・ソフトウェアは、同一クライアント・グループに登録しているクライアント
を有する、それぞれの他のパーティション上のコア・サービス・ソフトウェアに
、この信号を送信して、それらに、そのクライアントが登録する/登録抹消する
ことを知らせなければならない。この信号のコア・サービス情報セクションは、
クライアントがそこに登録する/そこから登録抹消するクライアント・グループ
のクライアント・グループIDを含むことになる。
るパーティション上のコア・サービス・ソフトウェアに、それに対する信号送信
を再開できることを警報するのに使用される(この信号の使用は、各入力待ち行
列のオーバーフロー・フラグの説明に関連して、下記にさらに説明する)。
は、マスタ・パーティション上のコア・サービス・ソフトウェアによって、マス
タが機能していないと決定したパーティションに送信される。
イアント情報セクションの両方が定義される。本実施形態では、下記のクライア
ント間信号サブ・タイプだけが定義されている。これは、信号送達信号である。
下記にさらに詳細に説明するとおり、1つのパーティション上のクライアントが
、別のパーティション上のクライアントに信号を送信する(また、多分、メッセ
ージ・データのバッファを渡す)ことを望むとき、このクライアントは、コア・
サービスAPIの信号送信インターフェースを呼び出す。これに応答して、コア
・サービス・ソフトウェアは、信号送達信号を、クライアントがその上で動作し
ているパーティションに送信する。信号送達信号のコア・サービス情報セクショ
ンは、送信するクライアントおよび受信するクライアントのクライアント・グル
ープIDを含み、また、例えば、受信するパーティションに向けられた共用メモ
リ・オブジェクトを含んだバッファを定義するため、クライアントに割り振られ
ている共用メモリの1つまたは複数のページに対するハンドル(すなわち参照)
も含み得る。共用メモリ・オブジェクトの例は、クライアント・メッセージ、ク
ライアント・データストリーム、クライアント・イベント、およびコア・サービ
ス・イベントである。クライアント情報セクションは、コア・サービス・ソフト
ウェアには不透明であるが、送信するクライアントおよび受信するクライアント
により、任意の所望の目的で使用され得る。例えば、クライアント情報セクショ
ンは、クライアント間の短いメッセージの通信を行うのに使用することが可能で
ある。本実施形態では、クライアント情報セクションは、最大で5つのワードを
含む。
ティションにデータが入手可能であることを合図するのに使用する。各パーティ
ションは、コンピュータ・システム内のそれぞれの他の可能なパーティションご
とに、別々の入力待ち行列を有する。本発明では、各パーティションは、また、
それ自体に対する入力待ち行列も有し、これは、例えば、パーティション上のコ
ア・サービス・ソフトウェアが、同一パーティション上のクライアントに信号を
送信する必要がある場合、使用される。したがって、コンピュータ・システムを
最大で8つの別々のパーティションに分けて構成することのできる(すなわち、
8つのサブPODのそれぞれが、別個のパーティションを定義する)本実施形態
では、各パーティションは、8つの別々の入力待ち行列(他の7つのパーティシ
ョンのそれぞれに1つ、およびそれ自体に1つ)を有し、合計では、64個の入
力待ち行列になる。これらの入力待ち行列は、ヘッダとともに、共用メモリ制御
構造1900の部分1914内に常駐する。信号は、1つのパーティション上の
コア・サービス・ソフトウェアによって生成されて、別のパーティション上のコ
ア・サービス・ソフトウェアに、それらの間の対応する入力待ち行列を介して送
達される。
待ち行列ポインタ・フィールドは、実際の入力待ち行列の始めに対するポインタ
を保持する。入力待ち行列数フィールドは、入力待ち行列領域1914内の入力
待ち行列の数(本実施形態では、64)を指定する。入力待ち行列長さフィール
ドは、各入力待ち行列の長さ(ワード数での)を指定する。本実施形態では、こ
の長さは、2048ワードと指定されている。入力待ち行列信号サイズ・フィー
ルドは、各信号の全体の長さ(コア・サービス情報セクション+クライアント情
報セクション)を指定する。各信号の全体サイズは、同一であり、固定されてい
る。最後に、入力待ち行列内信号数フィールドは、各入力待ち行列が一度に収容
できる可能な信号の総数を指定する。
とおり、各入力待ち行列は、その入力待ち号列に対するアクセスを、待ち行列内
の情報を更新している間、ロックするのにコア・サービス・ソフトウェアによっ
て使用されるロック・フィールド3010、その待ち行列内の現行の信号数を指
定するカウント・フィールド3012、およびその待ち行列が容量に達している
が、空間が使用可能になり次第、すぐにその待ち行列に転送されるべき追加の信
号が存在することを示すのに使用されるオーバーフロー・フラグ3014を有す
る。これらのフィールドには、その後に、固定数の信号(入力待ち行列ヘッダの
入力待ち行列内信号数フィールドのなかで指定される、図29参照)のための空
間3016が続く。
領域1914内に連続してグループ化される。つまり、この構造内の最初の8つ
の入力待ち行列は、第1パーティションに属し、8つの入力待ち行列の後続グル
ープは、他の7つのパーティションの後続のものに属する。
別のパーティションに信号を送信する要求を受けたときはいつでも、そのクライ
アントによって供給された情報に基づいて信号を作成して、その信号を、受信す
るパーティションに対する適切な入力待ち行列内の使用可能なエントリに入れよ
うとする。使用可能なエントリがない場合には、入力待ち行列のオーバーフロー
・フラグ3014を設定して、転送されるのを待っているが、入力待ち行列が一
杯であるために、転送され得なかった信号が存在することを受信するパーティシ
ョンに警報して、そのクライアントにエラーを戻す。そうした場合、受信するパ
ーティションが、その後に入力待ち行列を空けたとき、オーバーフロー・フラグ
3014をクリアして、送信再開信号を送信するパーティションに送り返し、こ
の送信するパーティションに、そのクライアントによって発行されたどの後続の
信号も、現時点で、受信するパーティションに対する通信のための入力待ち行列
に対して送信できることを警報する。
送信するパーティションからプロセッサ間割込みを受信したとき、関連する入力
待ち行列のそれぞれのなかのカウント・フィールドを検査して、どの入力待ち行
列が入手可能な信号を有するかを決定する。コア・サービス・ソフトウェアは、
入手可能な信号を有する入力待ち行列を見つけたとき、それらをその排他メモリ
・ウインドウ内のローカル処理バッファに転送して、入力待ち行列内のカウント
をリセットする。所与の入力行列から抽出された各受信信号は、次に、適切なク
ライアントに(その信号内のクライアント・グループIDに基づいて)、すべて
のクライアントが、それを実装することを要求されている信号受信コールバック
・インターフェースを介して渡される。
ント信号をより効率的に移動させるために、各パーティション上のコア・サービ
ス・ソフトウェアは、それぞれの可能な宛先パーティションごとに、その排他メ
モリ・ウインドウ内にパーティション送信待ち行列(すなわち、バッファ)(図
示せず)をセットアップする。この代替実施形態では、パーティション上のコア
・サービス・ソフトウェアは、入力待ち行列にそれが追加の信号を入れることを
妨げるいっぱいの入力待ち行列に遭遇したときはいつでも、オーバーフロー・フ
ラグをその入力待ち行列内に設定して、次に、その待ち行列内でエントリが再び
使用可能になるまで、それらの信号要求を適切なローカル送信待ち行列内に入れ
る。
、ローカル・クライアント信号タンク待ち行列をその排他メモリ・ウインドウ内
に、コア・サービス・ソフトウェアに対して自ら識別を明らかにしたクライアン
トごとに1つ、セットアップする。受信するパーティションの所与の入力待ち行
列から抽出した各受信信号は、指定受信するクライアント(やはり、その信号内
のクライアント・グループIDに基づく)に対応するクライアント信号タンク(
tank)待ち行列に転送される。タンク待ち行列内の各信号は、最終的に、指定受
信するクライアントに、クライアントの信号受信インターフェースへのコールを
介して渡される。
オーバーフロー・フラグの使用と併せて、コア・サービス・ソフトウェアのクラ
イアントのすべてに、共用メモリ・リソースの効率的で平等な使用を提供するこ
とを目的としている。各クライアントの信号は、ローカル方式で待ち行列に入れ
られるので、共用メモリ・ウインドウ内の入力待ち行列は、通信のために効率的
な方式で空けておかれる。入力待ち行列が容量に達したとき、失われる信号がな
く、また、入力待ち行列が迅速に空けられて、信号が所与の送信待ち行列内で待
つ時間を最小限に抑える。
1つのなかに、送信するパーティションによって入れられたことを受信するパー
ティションに警報するのに使用する。詳細には、本実施形態では、各パーティシ
ョンは、すべての他のパーティションがそれにプロセス間割込みを送信するのに
それを使用する、単一割込みベクトルを確立する。送信するパーティションが、
信号を所与の受信するパーティションに対する入力待ち行列内に入れて、これが
入力待ち行列を空状態(カウント=0)から空ではない状態(カウント>0)に
移行させるときはいつでも、送信するパーティション上のコア・サービス・ソフ
トウェアは、受信するパーティションのプロセッサのうちの1つに対するプロセ
ッサ間割込みを生成する。受信するパーティションのプロセッサは、そのパーテ
ィション上のコア・サービス・ソフトウェアの割込みサービス・ルーチン(図示
せず)を呼び出すことによって、この割込みに応答する。各パーティションは、
他のパーティションからの割込みの受信に対して、単一の割込みベクトルだけを
割り当てるので、受信するパーティション上のコア・サービス・ソフトウェアは
、どの他のパーティションが、プロセッサ割込みを発行したか分からない。した
がって、受信するパーティション上のコア・サービス・ソフトウェアは、それら
の待ち行列のうちのどれかで入手可能な信号がないかどうか決定するために、そ
の入力待ち行列のそれぞれのなかのカウント・フィールド3012を検査しなけ
ればならない。
は、それらの信号を受信するパーティションの排他メモリ・ウインドウ内のロー
カル処理バッファに転送して、その入力待ち行列内のカウント・フィールド30
12をリセットする。特定の入力待ち行列のオーバーフロー・フラグ3014も
また、設定されている場合、コア・サービス・ソフトウェアは、オーバーフロー
・フラグをリセットして、前述のとおり、送信再開信号を送信するパーティショ
ンに送り返す。次に、コア・サービス・ソフトウェアは、ローカル処理バッファ
を走査して、各受信信号を抽出し、その信号内のクライアント・グループIDか
ら宛先クライアントを判定して、次にその信号をその宛先クライアントに、その
クライアントの信号受信コールバック・インターフェースを介して送達する。次
に、コア・サービスは、やはり入手可能な信号を有する(すなわち、カウント>
0)それぞれの他の入力待ち行列に対して、これらのステップを繰り返す。
サ間割込み機構は、プロセッサとオペレーティング・システムの両方に依存する
。一例として、以下は、Intel Pentiumファミリーのマイクロプロ
セッサを使用し、Microsoft Windows NTオペレーティング
・システムを実行するパーティションの場合に、本実施形態により、どのように
プロセッサ間割込みが生成され、使用されるかの説明である。
ング・システムのハードウェア抽象化層(HAL)を変更して、任意のパーティ
ション上でのHALの初期設定中、HALが、そのパーティションによる共用メ
モリ・プロセッサ間割込みの受信に対して、まず、プロセッサ間割込みベクトル
を選択するようにする。割込みベクトルは、Windows NTオペレーティ
ング・システムのHALによって着信割込みハードウェア信号に割り当てられた
数である。例えば、割込みベクトルは、通常、HALにより、システム上の様々
なデバイスI/Oハードウェア割込み信号に割り当てられる。プロセッサ間割込
みは、1つのプロセッサから別のプロセッサに(I/Oデバイスからプロセッサ
に、に対比して)送信される特別タイプのハードウェア割込み信号である。一般
のI/O割込みの場合と同様に、HALも、すべてのプロセッサ間割込み信号に
ベクトルを割り当てなければならない(I/O割込みベクトルが選択されている
のと同じ数空間から)。したがって、本実施形態では、変更したHALが、その
パーティション上のローカル・コア・サービス・ソフトウェアによって受信され
るプロセッサ間割込みに対して、割込みベクトルを割り当てて、その入力待ち行
列のうちの少なくとも1つのなかで、1つまたは複数の信号が入手可能であるこ
とをこのソフトウェアに警報する。
のプロセッサと関連する高機能プログラム済み割込みコントローラ(APIC)
によって生成され、受信される。送信するプロセッサに関連するAPICが、受
信するプロセッサに関連するAPICに対するハードウェア信号を生成する。複
数のプロセッサが割込みを受信することになる場合には、送信するプロセッサの
APICは、それぞれの指定受信側のAPICに対して、ハードウェア信号を生
成する。各受信するプロセッサのAPICは、このハードウェア信号を受信して
、対応する割込みベクトルを処理のためにプロセッサに送達する。
の受信に対して割込みベクトルを割り当てることに加えて、変更したHALは、
そうした割込みを処理する、そのパーティション内の1つまたは複数のプロセッ
サを指定する。本実施形態では、複数のサブPODを含むパーティションの場合
、指定されるプロセッサは、それらのサブPODのうちの単一のもののメンバで
なければならない(これは、コンピュータ・システム・プラットフォームの本実
施形態によって課された制限であり、他の実施形態での制限ではない可能性があ
る)。サブPOD上の複数のプロセッサが指定されたとき、着信割込みは、それ
らのプロセッサのそれぞれのローカルAPICで受信されることになる。次に、
これらのAPICが、調停して、プロセッサのうちのどれがその割込みを処理す
るかを決定する。この調停処理に関するさらなる詳細は、Intel Corp
orationから入手可能なPentium Pro Family Dev
eloper′s Guide:Volume3で提供されている。APICに
関する追加の情報は、やはりIntelから入手可能なIntel Multi
Processor Specification,version1.4で見
ることができる。
ン上で初期設定されたとき、コア・サービス・ソフトウェアは、カスタム・イン
ターフェースを介して、そのパーティション上のNTオペレーティング・システ
ムのHALを照会して、割込みベクトル、およびそのパーティションに着信する
共用メモリ・プロセッサ間割込みを処理するために、HALによって指定された
プロセッサに関する情報を得る。次に、コア・サービス・ソフトウェアは、この
情報を制御構造ヘッダ1910のパーティション情報セクション内に格納する(
図20を参照)。これは、その情報を他のパーティション上のコア・サービス・
ソフトウェアにアクセス可能にする。次に、コア・サービス・ソフトウェアは、
HALに、別のインターフェースを介して、コア・サービス・ソフトウェアの一
部である割込みサービス・ルーチンに対する参照を供給する。そのパーティショ
ン上の指定されたプロセッサは、指定された割込みベクトルを有するプロセッサ
間割込みを受信した場合、その割込みサービス・ルーチンを実行して、コア・サ
ービス・ソフトウェアがその割込みに応答することができるようにする。
列のうちの1つに入れられたことを受信するパーティションに通知するため、送
信するパーティション上のコア・サービス・ソフトウェアが、制御構造ヘッダ1
910内で、指定受信するパーティションのプロセッサ間割込み情報をルックア
ップする。次に、コア・サービス・ソフトウェアは、そのパーティション上のH
ALに対する別のカスタム・インターフェースを呼び出して、HALに受信する
パーティションに関するプロセッサ間割込み情報を供給する。この情報を使用し
て、送信するパーティション上のHALは、そのプロセッサのうちの1つのAP
IC上の登録を操作して、プロセッサ間割込み信号が、そのAPICから、そう
したプロセッサ間割込みを受信する受信するパーティション上の、HALによっ
て指定された各プロセッサのAPICに対して生成されるようにする。次に、受
信するパーティション上のこれらのAPICが、その割込みを処理するように調
停して、この調停に勝ったプロセッサが、受信するパーティション上のコア・サ
ービス・ソフトウェアの割込みサービス・ルーチンを呼び出すことになる。
れかからの共用メモリ・プロセッサ間割込みの受信に対して、単一の割込みベク
トルが割り当てられる。このため、受信するパーティションは、他のどのパーテ
ィションが受信した割込みを生成したのか分からない。したがって、受信するパ
ーティションは、その入力待ち行列のそれぞれを順番に検査して、その割込みを
生成した送信するパーティションから信号を受信することを確実にしなければな
らない。
らの共用メモリ・プロセッサ間割込みの受信に対して、別々の割込みベクトルを
割り当てる。次に、送信するパーティションが、受信するパーティションによっ
てそれに割り当てられた対応する割込みベクトルを使用して、受信するパーティ
ションに対するプロセッサ間割込みを生成することになる。この実施形態の利点
は、受信するパーティションが、他のパーティションが生成した割込みベクトル
から、着信割込みを知ることである。次に、受信するパーティション上のコア・
サービス・ソフトウェアは、適切な入力待ち行列にアクセスして、前述の実施形
態のように入力待ち行列のすべてを巡回することなく、着信信号をリトリーブす
ることが可能である。
、コア・サービス・ソフトウェアは、クライアントが、コア・サービス・ソフト
ウェアのサービスを起動すために呼び出すことのできるインターフェース(すな
わち、呼び出し可能なメソッド)を提供する定義済みアプリケーション・プログ
ラミング・インターフェース(API)を有する。下記は、前述の機能を実行す
るためにコア・サービスAPIの一部として提供されるインターフェースのリス
トである。
ビス・ソフトウェアにそれ自体を識別するためにクライアントによって使用され
る。コア・サービス・ソフトウェアはクライアント・リファレンス識別子をクラ
イアントに返す。
共用メモリのユーザーとしてもはや参加していないことをコア・サービス・ソフ
トウェアに知らせるために、クライアントによって使用される。
アに任意のクライアント・グループのメンバとして登録するために、クライアン
トによって使用される。各クライアントは、共用メモリがそれに割り振られるこ
とを要求できるようになるには、登録しなければならない。クライアントは、所
望のクライアント・グループ名およびそのクライアント参照識別子をそのコール
の一部として供給する。次に、コア・サービス・ソフトウェアが、その所望のク
ライアント・グループへのこのクライアントの追加を反映するように、クライア
ント・ディレクトリ・テーブルに適切な変更を加えることになる。次に、インタ
ーフェースが、クライアントIDをそのクライアントに戻す。
ループから登録抹消するために、クライアントによって使用される。
1つまたは複数のページの割り振りを要求するために、クライアントによって使
用される。クライアントは、そのクライアントID、および要求しているバッフ
ァ・サイズ(バイト数での)供給する。コア・サービス・ソフトウェアは、割り
振りテーブルをロックし、その要求を満たす十分なページが空きページ・リスト
内で入手可能であるかどうかを決定して、次に、それらのページを空きページ・
リストから除去する。各割り振り済みページに対する割り振りページエントリは
、それらのページが「使用中(in use)」であることを反映するように更新され
る。タイプ1ページおよびタイプ2ページの場合、コア・サービス・ヘッダが、
ページ内に作成されて、これは、前述のとおり、パーティションおよびクライア
ントによるそのページの所有権を示す。タイプ2ページに関連するどのタイプ3
ページも、タイプ2ページのヘッダ内で参照付けられる。タイプ4ページの場合
、パーティション所有権は、対応する割り振りテーブル・エントリ内に反映され
る。次に、コア・サービス・ソフトウェアが、ハンドルをクライアントに戻し、
これをクライアントが、後で、割り振り済みバッファを含むページを参照するの
に使用する。
するすべてのページが割り振り解除されることを要求するために、クライアント
によって使用される。その要求するパーティションが、割り振り解除されるべき
ページの唯一の所有者である場合には、そのページは、空きページ・リストに戻
される(これを行うためには、システム・ワイド・ロックを獲得しなければなら
ない)。そうではない場合には、所有権情報のみが(タイプ1ページまたはタイ
プ2ページのコア・サービス・ヘッダ内、またはタイプ4ページに対する割り振
りテーブル・エントリ内で)更新される。
信号を挿入させるために、クライアントが使用するインターフェースである。こ
のインターフェースを呼び出すクライアントは、(i)受信するクライアントお
よびそれがそのメンバであるクライアント・グループのクライアント・グループ
IDと、(ii)どのパーティションが、信号を受信することになるクライアン
トを有するかの指示(任意のパーティション上の1つのクライアントのみが、特
定クライアント・グループのメンバであり得るため、この指示およびクライアン
ト・グループIDだけが、各パーティション上の受信するクライアントを識別す
るのに必要な一片の情報である)と、(iii)クライアント情報セクション内
で、信号と共に供給される実際の情報と、(iv)これがポイント間信号、また
はマルチキャスト信号のいずれであるかを示すフラグ(ポイント間は、1つだけ
の受信するパーティションを有し、他方、マルチキャストは、複数の受信するパ
ーティションを有する)と、(v)クライアント・メッセージを含んだバッファ
(1つまたは複数の共用メモリ・ページ)などの、共用メモリ・オブジェクトに
対するオプションのハンドルを提供する。信号送信コールに応答して、コア・サ
ービス・ソフトウェアは、(i)信号のコア・サービス情報セクションおよびク
ライアント情報セクションを作成し、(ii)共用メモリのステータスを検査し
、(iii)信号を適切な入力待ち行列に挿入して、その信号が空の待ち行列に
入れられた場合、(iv)受信するパーティション上でプロセッサ間割込みを生
成する。指定受信するパーティションの入力待ち行列がいっぱいである場合、ま
たは指定受信するパーティションがダウンしている場合、適切なエラー指示が戻
されることになる。
加えて、コア・サービス・ソフトウェアの任意のクライアントは、クライアント
にあるイベントを通知するためにコア・サービス・ソフトウェアが起動すること
のできるいくつかのコールバック・インターフェースを実装しなければならない
。本実施形態では、こられのコールバック・インターフェースは、(i)信号が
受信されたことをクライアントに通知するためのインターフェース(「信号受信
インターフェース」)と、(ii)そのクライアント・グループ内でメンバシッ
プ変更があったことをクライアントに通知するためのインターフェースと、(i
ii)共用メモリが、「アップ」または「ダウン」であることをクライアントに
通知するためのインターフェースと、(iv)コア・サービス・ソフトウェアが
シャットダウンしていることをクライアントに通知するためのインターフェース
と、(v)1つまたは複数の共用メモリ・ページがメモリエラーを有することを
クライアントに通知するためのインターフェースとを含む。
31Aおよび31Bが、2つのパーティション上のクライアントおよびコア・サ
ービス・ソフトウェアによって、一方のクライアントから他方のクライアントに
メッセージを通信するために実行されるステップを図示する流れ図を含んでいる
。
いる。ステップ3110で、クライアントが、コア・サービスAPIの共用メモ
リ割り振りインターフェースを呼び出し、メッセージを受信するパーティション
上のクライアントに転送するのに使用することになるバッファを要求する。この
例では、クライアントは、タイプ2ページが割り振られることを要求する。クラ
イアントは、その要求とともに必要なバッファ・サイズを提供する。これに応答
して、ステップ3112で、コア・サービス・ソフトウェアが、要求されたバッ
ファを満たすのに必要となる共用メモリ・ページの数(すなわち、タイプ2ペー
ジとともに、追加のタイプ3ページを割り振るかどうか)を決定する。ステップ
3114で、コア・サービス・ソフトウェアが、(i)システムワイド割り振り
ロックを獲得し、(ii)空きページ・リストから、必要な数のページが入手可
能であるかどうかを決定し、入手可能であると想定して、(iii)それらのペ
ージをクライアントに割り振る。コア・サービス・ソフトウェアは、割り振りテ
ーブルを更新して、それらのページが「使用中(in use)」であることを示し、
次に、それらのページの所有権をタイプ2ページのコア・サービス・ヘッダ内で
示す。ステップ3116で、コア・サービス・ソフトウェアが、割り振り済みペ
ージに対するハンドルをクライアントに戻して、割り振りロックを解放する。
ージ・データで埋める。次に、ステップ3120で、クライアントが、コア・サ
ービスAPIの信号送信インターフェースを呼び出して、(i)クライアント・
グループIDおよび受信するパーティション(これらが一緒に、受信するクライ
アントを識別する)と、(ii)信号のクライアント情報セクション内で提供す
べき任意の情報と、(iii)割り振り済みバッファに対するハンドルと、(i
v)これが、マルチキャスト要求ではなく、ポイント間要求であることを示すフ
ラグと提供する。前述の内容から、クライアントは、本発明のマルチキャスト機
能を使用して、複数のパーティションに信号を送信するオプションを有すること
を想起されたい。
アが、指定された受信するパーティションに基づいて適切な入力待ち行列を識別
する。次に、コア・サービス・ソフトウェアは、その入力待ち行列をロックして
(ステップ3124)、カウント・フィールドを増分し(ステップ3126)、
入力待ち行列内に信号をその待ち行列内のエントリとして作成する(ステップ3
128)。次に、その入力待ち行列が、その前に空であった(すなわち、カウン
トが、ゼロから1になった)場合には(ステップ3130)、コア・サービス・
ソフトウェアが、受信するパーティション上でプロセッサ間割込みを生成する(
ステップ3123)。入力待ち行列のカウント・フィールドが、既に非ゼロの場
合、コア・サービス・ソフトウェアは、割込みを生成する必要がない。次に、コ
ア・サービス・ソフトウェアは、入力待ち行列に対するロックを解放する(ステ
ップ3131またはステップ3133)。
プが示されている。ステップ3134で、そのパーティションの事前指定された
サブPOD上のAPICのうちの1つが、そのプロセッサのために調停し、また
それに送信するパーティションによって生成されたプロセッサ間割込みを送達す
る。これに応答して、プロセッサは、コア・サービス・ソフトウェアの割込みサ
ービス・ルーチン(図示せず)を呼び出す。割込みサービス・ルーチンの一環と
して、コア・サービス・ソフトウェアは、ステップ3136で、その入力待ち行
列のうちの最初のものを検査し始める(本実施形態では、各パーティションごと
に8つの入力待ち行列が存在する)。ステップ3138で、コア・サービス・ソ
フトウェアが、その入力待ち行列のカウント・フィールドを検査する。そのカウ
ントがゼロであった場合には、その入力待ち行列に対応する送信するパーティシ
ョンから送信された信号は存在せず、コア・サービス・ソフトウェアは、次の入
力待ち行列に進む。
存在し、制御は、ステップ3140に移る。ステップ3140で、コア・サービ
ス・ソフトウェアはが、入力待ち行列内の各信号をローカル処理バッファにコピ
ーして、次に、ステップ3142で、カウントをゼロにリセットする。次に、ス
テップ3143で、コア・サービス・ソフトウェアが、入力待ち行列内にオーバ
ーフロー・フラグが設定されているかどうかを決定する。オーバーフロー・フラ
グが設定されている場合、コア・サービス・ソフトウェアは、そのオーバーフロ
ー・フラグをリセットして、次に、送信再開信号を送信するパーティションに送
信し、これにより、入力待ち行列がもはやいっぱいではないことを送信するパー
ティションに警報する。
された各信号に対して実行される。詳細には、ステップ3144で、コア・サー
ビス・ソフトウェアが、信号をローカル処理バッファから抽出する。ステップ3
146で、コア・サービス・ソフトウェアが、受信するクライアント(信号内の
クライアント・グループIDによって識別された)の信号受信インターフェース
を呼び出して、クライアント情報セクションおよびその信号に関連する割り振り
済みバッファ(それが存在すれば)に対するハンドルを渡す。ステップ3148
で、クライアントが、例えば、ハンドルを使用して、参照付けされたバッファ内
のメッセージ・データにアクセスすることも含めて、信号を処理する。ステップ
3144および3146は、ローカル処理バッファ内の各信号ごとに繰り返す。
これが終了したとき、コア・サービス・ソフトウェアが、ステップ3136ない
し3146を、その他の入力待ち行列のそれぞれに対して繰り返す。本実施形態
では、図31Bに図示していないが、受信するパーティション上のコア・サービ
ス・ソフトウェアは、待ち信号を全く見つけることなく(すなわち、カウント>
0を有するもの無く)、入力待ち行列のすべてを完全にパススルーするまで、そ
の入力待ち行列のなかを巡回し続ける。次に、入力待ち行列処理は、別のプロセ
ッサ間割込みが受信されるまで停止する。
リ・ページの割り振り解除である。送信するクライアントが、バッファ(すなわ
ち、1つまたは複数の共用メモリ・ページ)の割り振りを要求し、そのハンドル
を受信するパーティションに信号を介して渡すことによって、そのバッファを受
信するパーティションに転送するとき、送信するパーティションは、(i)その
バッファのページに対する所有権を受信するクライアントに拡張する(この場合
、両方のクライアントが所有権を有することになる)か、あるいは(ii)所有
権を受信するパーティションに移転する(この場合、送信するクライアントは、
所有権を放棄する)かのオプションを有する。どちらのオプションを選択するか
にかかわらず、なんらかの時点で、クライアントは、割り振り済みページの割り
振り解除を所望することがあり得る。これは、共用メモリ割り振り解除インター
フェースを使用して行われる。詳細には、クライアントが、共用メモリ割り振り
解除インターフェースを呼び出して、割り振り解除すべきページに対するハンド
ルを渡す。それらのページの所有者である他のクライアントが存在しない場合に
は、それらのページは、空きページ・リストに戻されて、その対応する割り振り
テーブル・エントリが、それらの可用性を反映するように更新される。ただし、
他のクライアントもそれらのページに対する所有権を有する場合には、こららの
ページは、まだ、空きページ・リストに戻すことができない。代わりに、コア・
サービス・ソフトウェアが、それらのページをロック・ダウン(lock down)し
て、タイプ2ページのコア・サービス・ヘッダ内の所有者情報を更新する。
される。
まず、共用メモリ・ウインドウの可用性およびステータスを確認して、次に、適
切なプラットフォームのインターフェースを起動して、下記の情報を得る。それ
は、共用メモリの物理アドレスおよびサイズ、パーティション識別子(各パーテ
ィションは、関連する識別子を有する)、そのパーティションに対するプロセッ
サ間割込みを生成するのに、他のパーティションによって必要とされる情報、お
よびそのパーティション上で動作しているオペレーティング・システムのタイプ
およびバージョンである。コア・サービス・ソフトウェアは、コピーをそのパー
ティションの排他メモリ・ウインドウ内、ならびに例えば、制御構造ヘッダ19
10のパーティション情報フィールドおよび割り振り構造1912の共用メモリ
領域の長さフィールドなどの、共用メモリ制御構造1900の様々なフィールド
内に、この情報のコピーを格納する。
ションが他のパーティションに加わるためには、そのパーティションは、共用メ
モリ・ウインドウを使用して、それ自体を他のパーティションに認知させなけれ
ばならない。現行のマスタ・パーティションが存在しない場合には、それらは、
それら自体のなかで調停を行って、マスタ・パーティションを選択しなければな
らない。この目的で、コア・サービスは、「チェック・イン」機構を有する。こ
の「チェック・イン」機構は、ロックを使用することなく、各パーティションが
、制御構造ヘッダ内の共用メモリ・ステータス・フィールドの妥当性を決定して
、アクティブなマスタが存在しないとき、新しいマスタを動的に選択することが
できるようにする。
共用メモリをクリーンな方式でエグジット(exit)するのも、コア・サービス・
ソフトウェアの責任である。このことは、マスタ・パーティションと非マスタ・
パーティションの両方に該当する。どの離れていく(leave)パーティションに
も共通の責任は、(i)適切なクライアント・コールバック・インターフェース
を呼び出すことによって、共用メモリ・ウインドウが消え去ることをそのローカ
ル・クライアントに通知すること、(ii)それがロックしたどのデータ構造も
ロック解除すること(例えば、割り振りテーブル、入力待ち行列など)、(ii
i)その入力待ち行列をクリーンアップすること、(iv)それが所有するどの
共用メモリ・ページも割り振り解除すること、(v)それが所有するどのローカ
ル・メモリも戻すこと、および(vi)制御構造ヘッダ1910内でのそのステ
ータスを「未初期設定」に変更することである。
ョンであり、他に活動しているパーティションが存在しない場合には、それは、
共用メモリ・ウインドウをシャットダウンして、通知がMIPに送信される。離
れていくパーティション(departing partition)が、マスタ・パーティション
であり、共用メモリ・ウインドウとまだ通信中である少なくとも1つの他のパー
ティションが存在する場合には、新しいマスタ・パーティションが、その残って
いるアクティブなパーティションによって選択される。
ーティションが活動を止めたとき、および共用メモリがシャットダウンしたとき
、特定の責任を有する。下記の責務が、マスタ・パーティションのために予約さ
れている。 (1)制御構造ヘッダ、割り振り構造、割り振りテーブル、空きページ・リス
ト、入力待ち行列ヘッダ、入力待ち行列、クライアント・ディレクトリ・テーブ
ル・ヘッダ、およびクライアント・ディレクトリ・テーブルを含む共用メモリ構
造を初期設定することと、 (2)パーティションが活動を止めたとき、共用メモリ構造および使用中の共
用メモリ・ページに対して、ハウスクリーニング・オペレーションを実行するこ
とと、 (3)共用メモリがシャットダウンしたとき、共用メモリ構造に対してハウス
クリーニング・オペレーションを実行する、 ことである。
る。 (1)所定の共用メモリパーティション・チェックイン間隔で他のパーティシ
ョンのステータスを監視することと、 (2)新しいマスタ・パーティションを選択する必要があるかを決定すること
と、 (3)共用メモリ構造内の適切な領域を更新して、共用メモリ・ウインドウを
離れることを選択した場合には、所有しているどの共用メモリ・ページも割り振
り解除することと、 (4)クライアントが、共用メモリ・ウインドウへの参加から離脱した場合、
またはクライアントに障害が起きた場合、そのクライアントによって所有される
どの共用メモリ・ページも割り振り解除する ことである。
構を実施するプログラム・コードは、オペレーティング・システム・コード(例
えば、HALに対する変更)と別個のコンピュータ・プログラム(例えば、コア
・サービス・ソフトウェア)の両方の組み合わせとして実装される。ただし、他
の実施形態では、このプログラム・コードは、添付の請求項によって定義される
本発明の趣旨および範囲を逸脱することなく、完全にオペレーティング・システ
ム・コードとしてか、あるいは完全に別個のコンピュータ・プログラムとして実
装することが可能である。さらに、プログラム・コードは、ハード・ワイヤド回
路で、またはハード・ワイヤド回路およびソフトウェア・コードの組み合わせで
実装することもできる。前述のとおり、「プログラム・コード」という用語は、
すべてのそうした可能性を包括するものとする。
および方法の例としての使用 オペレーティング・システム間および/またはそのオペレーティング・システ
ムの下で動作するアプリケーション間の通信を円滑にするための、前述のコンピ
ュータ・システムの例としての使用を、その共用メモリ管理機能も含めて、下記
に説明する。これらの使用の例としての実施形態は、下記に、例示の目的で説明
するものであり、制限するためにではない。代替実施形態(本明細書に記載する
実施形態の等価形態、拡張形態、変形形態、逸脱形態などを含め)は、本明細書
に含まれる教示に基づき、関連分野の技術者には明白となる。本発明は、そうし
た代替実施形態を含むことを意図し、それに適合している。
)デバイス・ドライバを実装して、標準市販アプリケーションが、前述の複数パ
ーティション・システム上で動作できるようにすることが可能である。共用メモ
リNDISデバイス・ドライバは、例えば、類似のLAN構成上でよりも高速な
帯域通過および短い待ち時間を有するネットワーク機能インターフェースおよび
/またはクラスタ化インターフェースを提供する。この共用メモリNDISデバ
イス・ドライバは、セクションIII.B.で前述した割込み主導共用メモリ管
理機構のコア・サービス・ソフトウェアの上に構築され、またそれを利用する。
している。斜線のないボックスは、標準Windows NT構成要素を表して
いる。斜線を引いたボックスは、本発明の一環として実装され得る構成要素を表
している。
ターフェースおよび下端(lower-edge)インターフェースをサポートする。上端
インターフェース上で、共用メモリNDISドライバ1802は、標準ネットワ
ーク・プロトコル・ドライバに対する標準NDISインターフェースをサポート
する。共用メモリNDISデバイス・ドライバ1802は、NDIS階層化ドラ
イバとして機能する。より詳細には、共用メモリNDISデバイス・ドライバ1
802は、NDISミニポート・インターフェースに適合して、NDISインタ
ーフェースを使用してNDISデバイス・ドライバを介して通信を行う任意のネ
ットワーク・プロトコルをサポートする。例えば、TCP/IPプロトコルおよ
びSPX/IPXプロトコルを実施することができる。
スは、セクションIII.B.に記載したコア・サービス・ソフトウェアに対す
る専用インターフェースであり、これは、グローバル共用メモリ機能を直接にサ
ポートする。このインターフェースは、通常の階層化IOドライバ・インターフ
ェース(IRP)と密結合IOドライバ・インターフェース(直接手続きコール
)の混成を含む。IRPは、非同期機能のために使用する。密結合IOドライバ
・インターフェースは、同期機能のために使用する。
ンターフェースをコア・サービスAPI上にマップすることである。ネットワー
キング・パケット(NDISパケット)を含んだローカル・システム・バッファ
が、NDISインターフェースを介して、共用メモリNDISデバイス・ドライ
バ1802に渡される。共用メモリNDISデバイス・ドライバ1802が、ネ
ットワーク・パケットをローカル・システム・バッファ(パーティション排他メ
モリ・ウインドウ内の)から共用メモリ・バッファにコピーする。共用メモリ・
バッファに対する参照が、ネットワーク・パケット内の宛先MACアドレスによ
って選択された別のパーティション内の適切な共用メモリNDISデバイス・ド
ライバに対する待ち行列に入れられる。同報通信またはマルチキャストのMAC
アドレスを有するパケットが、共用メモリNDISデバイス・ドライバ1820
の共用メモリグループ内のデバイス・ドライバをサポートする各パーティション
に対して直接に送信を行うのに、必要とされるだけの共用メモリ・バッファにコ
ピーされ、これにより、同報通信/マルチキャストをシミュレートする。共用メ
モリから受信したバッファは、NDISパケットに再び圧縮され、NDISイン
ターフェースに提供されて、そこでそれらは、ネットワーク・プロトコル・ドラ
イバによって処理される。このNDISパケットは、共用メモリNDISデバイ
ス・ドライバ1802に戻される。
れる各パーティションごとの共用メモリ・バッファのリストを維持して、コア・
サービス・ソフトウェアを介して共用メモリ・バッファを割り振ることと割り振
り解除することのオーバーヘッドを抑える。共用メモリ・バッファは、ネットワ
ーク・パケット情報を別のパーティションに送信するために、SendList
から選択される。受信するパーティションは、発信パーティションSendLi
stに対応するハンドルのRevListを有することになる。受信するパーテ
ィションは、メッセージ処理を終了したとき、バッファがSendList内で
使用可能状態に戻されるべきであることを示すメッセージを送信する。Send
List内のバッファの数が、最小値よりも低下したとき、追加のバッファが、
コア・サービス・ソフトウェアから割り振られる。SendList内のバッフ
ァの数が最大で、すべてが使用されていないとき、バッファは、割り振り解除さ
れて、コア・サービス・ソフトウェアに戻される。最小SendListサイズ
および最大SendListサイズは、コード内で所定のデフォルト値を有する
が、これらは、登録内の特定キーを設定することによってオーバーライドされ得
る。
04上でコア・サービス・ソフトウェアを使用して、共用メモリNDISデバイ
ス・ドライバ1802のコピーを実行しているすべてのパーティション間のFD
DI LANをシミュレートする。共用メモリNDISデバイス・ドライバ18
02は、FDDI LANの基本セマンティックスをサポートする。これはポイ
ント間メッセージ交換、同報通信メッセージ交換、マルチキャスト・メッセージ
交換、および4491バイトメッセージのサイズを含む。
メモリ管理では、パーティション間(すなわち、Pod、サブPod、またはオ
ペレーティング・システム)でのメモリの共用が、ワイヤによる通信の外観を維
持しながら達せられる。これは、従来のアプリケーション・プログラム、従来の
アプリケーション・プログラム・インターフェース(API)、ならびに従来の
通信ハードウェアおよびソフトウェアを使用して、データを共用メモリに送信す
ることを可能にする。この適用形態は、セクションIII.A.で記載した機構
の上に構築され、そこでは、パーティション間通信は、ポーリング技法に従って
管理される。
これは、パーティション間またはオペレーティング・システム間でのワイヤによ
る通信の外観を得るのに必要な追加のソフトウェア構成要素を含む。図22では
、2つのパーティション2202aおよび2202nが示され、そのそれぞれは
、例えば、単一のサブPodを含んでいる。各サブPod2202は、別個のオ
ペレーティング・システム2206の制御下で動作する。オペレーティング・シ
ステム2206は、同一オペレーティング・システムの別々のインスタンスであ
り得る、またはそれらは、異なるオペレーティング・システムであり得る。1つ
または複数のアプリケーション・プログラム2208が、各パーティション22
02上で、そのパーティション上で動作するオペレーティング・システム220
6の下で動作することができる。
)モジュール2210が、メッセージを送信するために、1つまたは複数のアプ
リケーション・プログラム2208に関連付けられていることが可能である。例
えば、サブPod2202a上で、アプリケーション・プログラム2208aは
、API2208aを使用して、メッセージ送信オペレーションを開始すること
ができる。API2208aは、ネットワーク通信インターフェース・モジュー
ル2212に対する入力のためにメッセージを準備する。
ークを介するなどして、パーティション間で互いにインターフェースを取る従来
のシステムであり得る。ネットワーク・インターフェース通信モジュール221
2は、ネットワーク・ドライバ2216を介して従来のネットワーク型ワイヤ2
214上で、他のパーティション2202に転送するため、メッセージをフォー
マットする。例としての実施形態では、ネットワーク・インターフェース通信モ
ジュール2212は、メッセージを、あたかもそれらが従来のネットワーク型ワ
イヤ転送システム2214に向かうかのように、回線2220aおよび2220
b上に出力する。したがって、この時点まで、パーティション2202aからの
メッセージの送信は、従来方式で実行される。
信インターフェース・モジュール2212から従来のネットワーク・ドライバ2
216に送信する代わりに、共用メモリ160に向けられたメッセージは、共用
メモリ・ドライバ2218を介して処理される。例としての実施形態では、宛先
アドレスが、各メッセージに関連付けられている。アドレスが、ワイヤ2214
に結合されたコンピュータまたは他の宛先に対応する場合には、メッセージは、
ネットワーク・ドライバ2216を介してワイヤ2214に送信される。しかし
、そのアドレスが共用メモリ160内のアドレスに対応する場合、そのメッセー
ジは、共用メモリ・ドライバ2218にダイレクトされる。
記憶のために、メッセージを受信して、再フォーマットする。再フォーマットは
、例えば、他のパーティション2202上で動作するアプリケーション・プログ
ラム2208によって認識され得る標準形式にメッセージを再フォーマットする
ことを含み得る。再フォーマットは、また、例えば、共用メモリ160に関連す
る仕様に従った再フォーマットも含み得る。
の例としての実施形態では、パーティション2202a上のオペレーティング・
システム2206aは、Unisys Corporationから市販される
2200オペレーティング・システムとして図示され、またパーティション22
02n上のオペレーティング・システム2206nは、Windows NTま
たはUNIXオペレーティング・システムとして図示されている。
ュール2212が、オープン・システム相互接続(OSI)7層通信モデルの従
来のトランスポート層(すなわち、層4)を実施する1つまたは複数のソフトウ
ェア・モジュール2310を含む。OSI7層通信モデルは、関連分野の技術者
にはよく知られている。このトランスポート層は、いくつかの異なるプロトコル
を使用して実施することが可能であり、これは、伝送制御プロトコル(TCP)
およびユーザー・データグラム・プロトコル(User Datagram Protocol - UD
P)を含む。選択されたプロトコルは、その後の通信オペレーション中の信頼性
および重複の可能性を決定することになる。例としての実施形態では、TCPを
利用して、確実な重複のないデータ送達を提供することができる。
Iプロトコルの層3であるネットワーク層2312を実施するソフトウェア・モ
ジュールとインターフェースを取る。これは、例えば、業界承認のインターネッ
ト・プロトコル(IP)およびインターネット制御メッセージ・プロトコル(I
CMP)を使用して実行することができる。IPは、データ転送のために使用さ
れるプロトコルを指定する。ICMPは、エラーの処理と分析が実行される方式
を定義する。
4とインターフェースを取る。通信ハンドラ2314は、メッセージ・データを
パケットにフォーマットする。フォーマットは、いくつかの通信プロトコルのう
ちの選択されたものに準拠することが可能である。これらのプロトコルは、例え
ば、イーサネット、トークンリング、ファイバ分散データ・インターフェース(
FDDI)、非同期転送モード(ATM)などを含み得る。例としての実施形態
では、イーサネット・プロトコルを実施するイーサネット・ハンドラが使用され
る。
14が、デバイス・ドライバを呼び出す。「通常の(normal)」通信シナリオの
最中、I/Oドライバが呼び出されて、ネットワークを介して通信を実行する。
例としての実施形態では、これは、Unisys Corporationから
市販されるネットワーク入力/出力デバイス・ドライバ(NIOP)2316で
ある。NIOP2316は、OSIモデルの層2および1を実施し、これらは、
それぞれ、このモデルのデータリンクおよび物理層である。
るとき、共用メモリ・ドライバ2218が呼び出される。例えば、パーティショ
ン2202a上で、通信が、ネットワークを介してではなく、共用メモリ160
を介して実行されるとき、通信ハンドラ2314が、NIOPドライバ2316
の代わりに、HMP共用メモリ・ドライバ2318を呼び出すことができる。通
信ハンドラ2314は、NIOPドライバ2316に対するコールとHMP共用
メモリ・ドライバ2318に対するコールを区別する必要がない。通信ハンドラ
2314の視点からは、すべてのメッセージは、ネットワークを介して転送され
る。オペレーティング・システムが、下記にさらに説明するとおり、これら2つ
のタイプのコールのうち、どちらを行うかを決定する。HMP共用メモリ・ドラ
イバ内に含まれる機能性を下記に説明する。
ウェア・モジュール内に含まれる機能性は、パーティション2202nのNTま
たはUnixのオペレーティング・システム内に常駐する同様のモジュール内に
含まれる。図23で、これらのモジュールは、API2210n(Winsoc
k/Socketとして示される)およびネットワーク通信インターフェース・
モジュール2212(TCP/UDP/IPS2310n、IP/ICMP23
12n、およびイーサネット・ハンドラ2314nとして示される)を含み得る
。メモリ160との通信は、HMP共用メモリNICデバイス・ドライバ232
0を介する。2200オペレーティング・システム・ソフトウェア・モジュール
の場合と同様に、APIおよび通信ソフトウェアを含むアプリケーション・プロ
グラムにインターフェースを取るソフトウェアの層は、ネットワーク通信または
共用メモリ通信の間で区別をしない。これらのソフトウェア構成要素は、すべて
の通信オペレーションが、ネットワークを介して行われているものと見なす。
に実装されたHMP共用メモリ・ドライバ2320のさらなる詳細を提供する。
図24では、NTユーザー・アプリケーション2410が、動的リンク・ライブ
ラリ2412に対するインターフェースを取る。動的リンク・ライブラリ241
2は、Windows Socket2414とインターフェースを取る。Wi
ndows Socket2414は、NTシステムのためのMicrosof
t定義のAPIであるトランスポート・ドライバ・インターフェース(TDI)
2416とインターフェースを取る。API2416は、OSI通信モデルの層
3および4を実行するTCP/IPモジュール2418に対してインターフェー
スを取る。TCP/IPモジュール2418は、Microsoftおよび3C
om Corporationsによって開発されたネットワーク・ドライバ・
インターフェース仕様(NDIS)に従って設計されたAPI2420を介して
、デバイス・ドライバとインターフェースを取ることができる。デバイス・ドラ
イバは、例えば、イーサネット・ネットワークを介してメッセージ伝送を実行す
るCOSTイーサネット・デバイス・ドライバ2422などの市販のドライバで
あり得る、またはHMP共用メモリNICデバイス・ドライバ2320であり得
る。API2420がデバイス・ドライバにコールを行うとき、API2420
は、2つのタイプのコールの間で区別を行わず、すべての通信は、ネットワーク
を介して実行されているように見える。
424モジュール、CONTROL2426モジュール、SHM2428モジュ
ール、およびBIOS2430モジュールを含み得る。これらのモジュールの動
作および機能性を下記に説明する。
のさらなる詳細を図示する処理の流れ図である。このプロセスは、ステップ25
10で開始し、そこで、アプリケーション・プログラムが、メッセージおよび関
連するヘッダ情報をローカル・メモリ内に作成する。
び出す。プログラムは、APIに、メッセージの長さ、目標ホストのIPアドレ
ス、およびメッセージ・データに対する1つまたは複数のポインタを渡す。メッ
セージがネットワークを介して渡される場合、IPアドレスは、NIOP(22
00オペレーティング・システム側の)またはイーサネットLAN NICデバ
イス・ドライバ(NT側またはUNIX側の)などのデバイス・ドライバを指定
する。メッセージが共用メモリを介して渡される場合、IPアドレスは、関連す
るHMP共用メモリ・ドライバが使用されるべきことを示す。
モジュールが、様々なヘッダをメッセージに追加して、選択された通信プロトコ
ルの要件に適合するようにメッセージ・データをフォーマットする。例えば、イ
ーサネット・プロトコルは、単一のメッセージ伝送が1500バイトより多くを
含み得ないことを必要とする。したがって、より長いメッセージは、複数のメッ
セージ伝送を介して送信されるように、複数のバッファにフォーマットしなけれ
ばならない。
サネット・ハンドラである)が、デバイス・ドライバのアドレスを求めて、オペ
レーティング・システム(OS)に対してコールを行う。関連分野の技術者は、
例えば、より大きなネットワーク・データ・パケット・サイズを有するプロトコ
ルを含め、他のプロトコルを使用するのが可能であることを理解されよう。
ージも受信される前に、デバイス・ドライバに接続することになる。通信ハンド
ラは、それ自体の「同報通信(broadcast)」メッセージをネットワーク介して
発信して、皆がその識別で応答するように求める。これは、結果として、TCP
/IPの場合、IPアドレスが戻されることになる。このようにして、通信ハン
ドラは、どのIPアドレスにアクセスできるかを知る。
スに関連するデバイス・ドライバア・ドレスを選択して、そのアドレスを通信ハ
ンドラに渡す。例としての実施形態では、オペレーティング・システムは、IP
アドレスを様々なデバイス・ドライバにマップするテーブルを維持する。デバイ
ス・ドライバア・ドレスは、ネットワーク通信を実行するデバイス・ドライバ(
NIOPドライバまたはイーサネットLAN NICドライバなどの)を指定す
ることができる。別法では、デバイス・ドライバは、共用メモリを介して通信を
実行するデバイス・ドライバを指定することができる。通信ハンドラは、2つの
タイプのアドレスの間で区別を行うことができない。共用メモリのための220
0オペレーティング・システム・デバイス・ドライバは、Unisysに譲渡さ
れた米国特許第5659794号に記載されるとおり、2200オペレーティン
グ・システムNIOPから適合することができる。
ことをアドレスが示すとき、HMP共用メモリ・ドライバ(2200オペレーテ
ィング・システム)2318またはHMP共用メモリNICデバイス・ドライバ
(NT/UNIX)2320が呼び出される。呼び出されたドライバは、まず、
目標ホストIDをノードのうちの1にマップする。これは、送信するノードの出
力待ち行列内にある待ち行列のうちのどれが利用されるかを決定する。
要とするかどうかを呼び出されたドライバが決定する。目標システムのための待
ち行列がリセットを必要とする場合、処理は、ステップ2526に進み、そこで
、送信するシステム(または送信する「ノード」)が、メッセージを廃棄して、
目標システム(または目標「ノード」)のための待ち行列内にNeed_Res
etフラグを設定する。Need_Resetフラグが設定されたとき、リセッ
ト手続きを実行することができる。
の損失なしに廃棄することができる。これは、メッセージが受信されたことを示
す受信するシステムからの肯定応答をTCPが待つためである。これは、メッセ
ージIDを使用して追跡される。各メッセージは、関連する肯定応答が受信され
るまで、送信するシステムのローカル・ストーレッジ内に保持される。肯定応答
が所定の期間内に受信されなかった場合、そのメッセージを再送信するように、
別のコールがオペレーティング・システムに対して行われる。TCPではなくU
DPを利用する場合、メッセージは、失われる。というのは、UDPは、受信す
るシステムからの肯定応答の受信を追跡しないからである。
用するかを決定する。この決定は、共用メモリにはトランスペアレントである。
例としての実施形態では、本発明の共用メモリは、共用メモリを扱うデバイス・
ドライバと接続するUDPプロトコル、TCPプロトコル、およびより高い層の
プロトコルをサポートする。通信ハンドラの視点からは、本発明の共用メモリは
、余り多くのノードが接続されていない、単にもう1つのLANに過ぎない。
み、そこで、送信するシステムは、目標待ち行列がいっぱいであるかをチェック
して決定する。例としての実施形態では、これは、適切なEnqueued_o
ffset(送信するノードの出力待ち行列内の)内に記憶されている値を関連
するDequeued_offset(受信するノードの入力待ち行列内の)に
比較することによって行われる。新しいエントリを目標出力待ち行列内に入れる
ことが、Enqueued_offsetをDequeued_offsetに
等しくする場合には、目標出力待ち行列はいっぱいである。
そこで、メッセージが廃棄される。メッセージは、ステップ2518および25
26に関連して前述したとおり、後に再送信することができる。
、そこで、共用メモリ内のメッセージ・バッファが、送信するノードのメッセー
ジ・バッファ・プールから得られる。関連分野の技術者は、これは様々な方式で
実施するのが可能なことを理解されよう。例としての実施形態では、メモリ管理
モジュールは、空のバッファを追跡するために、各ノード上の共用メモリ・デバ
イス・ドライバに関連付けられている。
んだバッファ・プールが利用可能となる。各バッファは、例えば、427個の8
バイト・ワードの長さであり得る。例としての実施形態では、各バッファ・プー
ルは、各ワードが8バイト長である4Kワードページ境界で開始する。つまり、
新しいバッファ・プールは、各4Kバイトページ境界ごとに開始することが可能
である。これは、より効率的なメモリ管理を可能にする。
992ワード長であり、ここで、511は、待ち行列エントリの数であり、42
7は、1500バイト長のメッセージを扱うのに必要なワード数および2200
オペレーティング・システム要件を扱うのに必要なエクストラ・ヘッダである。
1500を4で割ると375に等しく、これに50個の最大部分およびバッファ
長およびヘッダ長として2を足して、合計427になる。8は、パーティション
の最大数であり、4096は、保護の理由でページ境界まで切り上げるためのも
のである。
モリから共用メモリ・バッファにコピーすることによって、メッセージが出力待
ち行列に入れられる。この処理中、ヘッダが生成されて、これが、OSIモデル
の物理層、層1で定義されるヘッダとして機能する。
は、MAC層およびLLC層は、共用メモリ・デバイス・ドライバによって受信
されたとき、メッセージ上にあるからである。これらのヘッダは、少なくともL
LC層が、受信するノードで行われ得る経路指定のために必要なため、残ること
になる。バッファ内のヘッダは、2200型プロセッサおよびIntelプラッ
トフォームの異なるメモリ・アクセス特性のために必要であり、物理層でデータ
がどのようであるかを表す。
行しているとき、ブロック転送圧縮(BTP)ハードウェア命令が、メッセージ
・データをローカルから共用メモリに移動するのに使用される。この命令は、メ
ッセージ・データを9ビット・バイトから8ビット・バイトに変換して、ゼロ充
填オペレーションおよびビッグ・エンディアン(2200型プロセッサ)−リト
ル・エンディアン(Intel)変換を実行する。別法として、この変換は、ソ
フトウェア内で実行することが可能である。
行列内の適切な位置に追加して、次に、適切なEnqueued_offset
を送信するノードの出力待ち行列で増分することによって、メッセージが出力待
ち行列に追加される。このポインタは、送信するノードのバッファ領域の始めか
らのオフセットである。好ましくは、すべてのノードが共用メモリ内の同一アド
レスに達し得るように、実アドレスまたは仮想アドレスではなく、オフセットを
使用する。(受信するノードの仮想アドレスまたは実アドレスは、必ずしも、別
のノードの仮想アドレスまたは実アドレスとして同一ロケーションにマップされ
ない。)
テム・ノードがメッセージを送信しているとき、デバイス・ドライバア・ドレス
を求めて、オペレーティング・システムに対してコールが行われる。2200オ
ペレーティング・システムは、IPアドレスを使用して、通信オペレーション中
にNIOPデバイス・ドライバが利用されるべきか、またはHMP共用メモリ・
ドライバが利用されるべきかを判断する。NTノードがメッセージを送信してい
る場合、同様の機能性が提供される。VLAN構成要素が、NDISからメッセ
ージ送信コールを受信する。VLANは、このコールをCONTROLに渡して
、これが、そのメッセージ送信オペレーションに関連するIPアドレスをイーサ
ネット・デバイス・ドライバにマップするか、またはSHMデバイス・ドライバ
にマップするかを決定して、適切なデバイスコールを行う。SHMモジュールが
、ステップ2518〜2528で図示される機能性を実行する。
ドごとの出力待ち行列を検査するループを実行する。例としての実施形態では、
各ノードは、より少ないノードが利用可能な場合でさえ、あたかもシステムが最
大数の8つのノードで完全に構成されているかのように、この検査を実行する。
利用可能ではないノードの出力待ち行列は、入手可能なメッセージが存在しない
ように見えるように、初期設定することができる。各ノードは、それ自体の出力
待ち行列を検査して、それがそれ自体にメッセージを送信しているかを、それが
一般的には発生しないにしても、決定する。これらは、コードを単純化するため
に実施することが可能な設計判断である。
待ち行列だけが検査されるように、システム初期設定中に、各ノードに対して通
信され得る。この実施形態では、共用メモリに参加するノード数の各変更が、そ
の変更が発生したときに、参加ノードに通信される。
を図示している。この処理は、ステップ2610で開始し、そこで、メッセージ
受信ノードが、別のサブPodの出力待ち行列内のNeed_Resetフラグ
を検査する。例えば、ノード0が、ノード1出力待ち行列内のノード1−ノード
0間待ち行列内のNeed_Resetフラグを検査する。Need_Rese
tフラグが設定されている場合、処理は、ステップ2612に進み、そこで、初
期設定シーケンスが実行される。
14に進み、そこでメッセージ受信するサブPodが、適切なEnqueued
_offsetフラグをそれ自体の出力待ち行列内のそれ自体のDequeue
d_offsetフラグと比較する。例えば、図16Aおよび16Bでは、ノー
ド0が、ノード1出力待ち行列内のノード1−ノード0間待ち行列内のEnqu
eued_offsetフラグをそれ自体の出力待ち行列(Dequeued_
offsetのワード1)内のノード1に対するDequeued_offse
tに比較する。その2つのフィールド内に記憶されている値が等しい場合、その
待ち行列は空であり、処理は、ステップ2624に進み、そこでルーチンをエグ
ジット(終了)する。
利用可能なバッファが、ローカル・メモリ内で得られる。共用メモリ・ドライバ
のためのバッファ・プールは、下記に説明するとおり、通信ハンドラと協力して
、オペレーティング・システムによって維持され得る。バッファが利用可能でな
い場合、待ちループ2617を実行することができる。ステップ2618で、バ
ッファが得られて、共用メモリに対するポインタをリトリーブするのに、待ち行
列に入れるオフセットとしてDequeued_offsetを使用する。この
ポインタは、好ましくは、送信するサブPodのバッファ・プールの始めからの
オフセットである。このポインタを使用して、共用メモリ内の送信するサブPo
dのメッセージ・バッファのうちの1つから、メッセージ・データをリトリーブ
する。
れる。2200オペレーティング・システムからメッセージを受信するNT/U
NIXサブPod上で、短縮処理を実行することができ、これは、メッセージバ
イトをワードのすべてのビット(例えば、64ビット)を使用する連続するロケ
ーションに移動する。これは、2200オペレーティング・システムのメッセー
ジ・データが、ワードの最下位4バイトのみを占有し、残りがゼロ充填されてい
るため、好ましい。2200オペレーティング・システム側では、メッセージ・
データは、ハードウェア・ブロック転送圧縮解除(BTU)命令を使用して、共
用メモリからコピーすることができ、この命令は、メッセージ・データを8ビッ
ト・バイトから9ビット・バイトに変換して、リトル・エンディアン(Inte
l)−ビッグ・エンディアン(2200型プロセッサ)変換を実行する。この変
換は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わ
せで実行することができる。
ることができ、これにより、メッセージ受信するIntelプラットフォームが
、ビッグ・エンディアンとリトル・エンディアンの間で変換を行って、2200
型プロセッサによって必要とされるエキストラ・ビットを追加/除去することに
なる。
プ2622に進み、そこで、共用メモリ・ドライバが、メッセージをローカル・
メモリ待ち行列に追加する。共用メモリ・ドライバは、次に、受信処理(例えば
、アプリケーション2208)が、メッセージを処理するのに使用可能であるこ
とを知る検査をする。2200オペレーティング・システム側では、共用メモリ
・ドライバが、Unisys Corporationによって開発された協調
処理通信プログラム(co-operative processing communications program - C
PCOMM)が「スリープ(sleeping)」状態であることをフラグが示している
かを知る検査をする。CPCOMMは、メッセージが送信されたときに、通信プ
ロトコル層を扱う。CPCOMMがスリープ状態にある場合、共用メモリ・ドラ
イバは、新しく待ち行列に入れたメッセージでCPCOMMを起こすために、オ
ペレーティング・システムに対してコールを行う。別法では、メッセージがロー
カル・メモリ内で入手可能かを決定するために、ポーリングを利用することが可
能である。
でのCPCOMMのための例としての処理を図示している。送信するメッセージ
の場合と同様に、CPCOMMは、受信メッセージが、共用メモリを介して転送
されたことを知らない。CPCOMMの視点からは、メッセージは、ネットワー
クを介して送信/受信される。
たとき、「スリープ」状態にあることが可能である。この割込みは、メッセージ
がCPCOMMのローカル・メッセージ待ち行列に入れられたことを示す共用メ
モリ・ドライバからのコールをオペレーティング・システムが受信したことの結
果である。CPCOMMに割込みがあったとき、それは、処理ループ2708に
入る。この処理は、ステップ2710で開始し、そこでバッファが、ローカル・
メモリ内で獲得される。ステップ2712で、CPCOMMが、2200オペレ
ーティング・システムを呼び出して、バッファ・アドレスを渡す。2200オペ
レーティング・システムは、そのバッファを、必要に応じて、デバイス・ドライ
バのうちの1つに関連するバッファ・プールのうちの1つに入れる。共用メモリ
・デバイス・ドライバは、これらのバッファ・プールのうちの1つに関連付けら
れている。これらのプール内のバッファが、次に、受信メッセージ・データに対
して使用可能である。
テップ2714に進み、そこで、メッセージがその入力待ち行列で入手可能であ
るかをCPCOMMが知る検査をする。CPCOMMが、オペレーティング・シ
ステムから割り込まれたと想定すると、メッセージは、入手可能である。
のメッセージをその待ち行列から待ち行列解除して、それをコードの上層に渡す
。処理は、次に、ステップ2710に戻り、そこでCPCOMMが、別のバッフ
ァを獲得する。
かった場合、処理は、ステップ2718に進み、そこで、十分な空のバッファが
、様々なデバイス・ドライバによる使用のために利用可能であるかどうかをCP
COMMが決定する。十分なバッファが利用可能である場合、処理は、ステップ
2720に進み、そこで、CPCOMMは再び、スリープ状態に入る。
せで実施できることを理解されたい。そうした実施形態では、様々な構成要素お
よびステップをハードウェア、ファームウェア、および/またはソフトウェアに
実装して、本発明の機能を実行することができる。現在、入手可能である、また
は将来開発されるコンピュータ・ソフトウェア言語および/またはハードウェア
構成要素を本発明のそうした実施形態で使用することができる。詳細には、前記
に、また下記の添付に議論し、提供する疑似コードが、そのソフトウェア実施形
態を作成するために特に役立つ。
趣旨および範囲を逸脱することなく、そこで様々な形態および詳細の変更を加え
得ることが、当分野の技術者によって理解されよう。
同じ参照番号は、同一要素または機能的に類似する要素を示す。また、左端の桁
は、添付の図面の中で最初にその参照が出ている図を指す。
。
る。
が有する4つのパーティションを伴った一例におけるメモリの図である。
例におけるメモリの図である。
が有する3つのパーティションを伴った一例におけるメモリの図である。
ある。
示す図である。
示す図である。
るデータ構造を示す図である。
す図である。
る例示的な情報を示す図である。
る例示的な情報を示す図である。
・システムおよび方法の例示的な使用を示す図である。
レイアウトを示す図である。
ワイヤで通信する様相を維持しながらも共用メモリによって通信することができ
る、本システムのコンピュータ・システムおよび方法の別の例示的な使用を示す
ブロック図である。
うに設計されたソフトウェアをさらに詳細に示す図である。
うに設計されたソフトウェアをさらに詳細に示すプロセス・フローチャートであ
る。
境で実行されるように設計されたソフトウェアをさらに詳細に示すプロセス・フ
ローチャートである。
ェアプログラムの詳細を含むソフトウェアをさらに詳細に示すプロセス・フロー
チャートである。
ある。
。
。
図である。
図である。
用方法を実施するための装置のブロック図である。
ムが、コンピュータ・システム上の個々のパーティション中で動作できるように
し、個々のパーティション中で稼動するオペレーティング・システムおよびその
他のクライアントとを含む個々のパーティションが、共用メモリを介して相互に
通信できるようにするコンピュータ・システムおよび方法が必要とされている。 米国特許第5590301号には、ハード・ワイヤードのメモリ区分化方式が
開示されており、この方式では、4つのプロセッサ「クラスタ」のそれぞれに固
有のクラスタ番号が割り当てられ、次いでその番号が、プロセッサ・メモリ参照
と共に、ハード・ワイヤードで柔軟性のない変換機構に従って変形されるが、こ
の変換機構は、前述のことを達成するのに必要なフレキシビリティおよびプログ
ラム可能性に欠けている。米国特許第5142683号および欧州特許出願04
44376A1には、システム間通信技術が記述されているが、これらには、単
独でも米国特許第5590301号との組み合わせでも、望まれる種類のシステ
ムは記述されていない。
Claims (96)
- 【請求項1】 複数の処理モジュールであって、1つまたは複数の処理モジ
ュールのグループは、コンピュータ・システム内の別々のパーティションとして
構成され、各パーティションは、別々のオペレーティング・システムの制御下で
動作する処理モジュールと、 メイン・メモリすべてにわたってプロセッサ・メモリ待ち時間が各処理モジュ
ールごとに同じになるように各処理モジュールが接続されたメイン・メモリであ
って、少なくとも1つの共用メモリ・ウインドウをその中に規定しており、少な
くとも2つの異なるパーティションは前記共用メモリ・ウインドウへの共用アク
セス権を有する、メイン・メモリと、 前記少なくとも2つの異なるパーティション上で実行され、その異なるパーテ
ィションが前記共用メモリ・ウインドウを介して相互に通信できるようにするプ
ログラム・コードと を備えることを特徴とするコンピュータ・システム。 - 【請求項2】 前記メイン・メモリは、さらに、前記コンピュータ・システ
ム内で構成された異なるパーティションごとに、そのパーティションだけしかア
クセス権を有しない排他メモリ・ウインドウをその中に規定していることを特徴
とする請求項1に記載のコンピュータ・システム。 - 【請求項3】 前記パーティションの1つ1つは、異なるオペレーティング
・システムの制御下で動作することを特徴とする請求項1に記載のコンピュータ
・システム。 - 【請求項4】 パーティションの1つ1つは、同じオペレーティング・シス
テムの異なるインスタンスの制御下で動作することを特徴とする請求項1に記載
のコンピュータ・システム。 - 【請求項5】 所与のパーティション上の前記プログラム・コードは、(i
)そのパーティション上の前記オペレーティング・システムの一部、(ii)そ
のパーティション上で稼動する別個のコンピュータ・プログラム、(iii)前
記オペレーティング・システムの一部と、別個のコンピュータ・プログラムとの
組み合わせ、(iv)前記プログラム・コードがハード・コードである回路、お
よび(v)回路と組み合わせられたプログラム・コード、のうちの1つとして実
装されることを特徴とする請求項1に記載のコンピュータ・システム。 - 【請求項6】 前記プログラム・コードは、送信するパーティションがプロ
セッサ間割込みを受信するパーティション上で生成して、前記共用メモリ・ウイ
ンドウを介して情報が受信するパーティションに転送されていることを前記受信
するパーティションに信号で知らせるための、プロセスを実装することを特徴と
する請求項1に記載のコンピュータ・システム。 - 【請求項7】 前記共用メモリ・ウインドウは、各パーティションに関連付
けられた入力待ち行列のセットを含み、所与のパーティションに関連するセット
の各入力待ち行列は、別のパーティションに対応し、その別のパーティションか
らの通信を表すエントリを格納することを特徴とする請求項6に記載のコンピュ
ータ・システム。 - 【請求項8】 前記共用メモリ・ウインドウは、さらに、パーティション間
の情報の通信を容易にするために必要に応じて前記パーティションに割り振るこ
とのできる複数のメモリ・ページを含むことを特徴とする請求項7に記載のコン
ピュータ・システム。 - 【請求項9】 送信するパーティションと受信するパーティションとの間の
通信を表す入力待ち行列エントリが、前記共用メモリ・ウインドウの1つまたは
複数のページへのハンドルを含むことができることを特徴とする請求項8に記載
のコンピュータ・システム。 - 【請求項10】 送信するパーティションが、割り振られた1つまたは複数
のページを使用して、受信するパーティションに通信されるメッセージを表すデ
ータを格納することができることを特徴とする請求項8に記載のコンピュータ・
システム。 - 【請求項11】 あるパーティション(送信するパーティション)が別のパ
ーティション(受信するパーティション)と通信するようにするために、送信す
るパーティション上のプログラム・コードは、 (i)前記送信するパーティションに対応する、前記受信するパーティション
の前記入力待ち行列中にエントリを作成するようにし、 (ii)前記受信するパーティション上にプロセッサ間割込みを生成して、そ
の入力待ち行列中に前記エントリが作成されたことを前記受信するパーティショ
ンに信号で知らせるようにする ことを特徴とする請求項7に記載のコンピュータ・システム。 - 【請求項12】 前記受信するパーティション上で前記プロセッサ間割込み
が検出されたとき、前記受信するパーティション上の前記プログラム・コードは
、 (i)その各入力待ち行列を検査して、どの入力待ち行列が他のパーティショ
ンからの通信を表すエントリを含んでいるかを決定するようにし、 (ii)そのようなエントリを、それらを含む前記入力待ち行列から抽出する
ようにする ことを特徴とする請求項11に記載のコンピュータ・システム。 - 【請求項13】 前記共用メモリ・ウインドウは、各パーティションに関連
付けられた入力待ち行列の前記セットを含み、所与のパーティションに関連する
各入力待ち行列は、別のパーティションに対応し、その別のパーティションから
の通信を表すエントリを記憶し、各入力待ち行列が、事前定義された数のエント
リを格納することができ、前記入力待ち行列が一杯になったときに設定されるオ
ーバーフロー・フラグを含むことを特徴とする請求項2に記載のコンピュータ・
システム。 - 【請求項14】 あるパーティション(送信するパーティション)が別のパ
ーティション(受信するパーティション)と通信するようにするために、送信す
るパーティション上のプログラム・コードは、 (i)前記送信するパーティションに対応する、前記受信するパーティション
の前記入力待ち行列中にエントリを作成するようにし、 (ii)前記エントリを作成したことによって前記入力待ち行列が一杯になっ
た場合に、前記入力待ち行列の前記オーバーフロー・フラグが設定されるように
し、 (iii)前記受信するパーティション上でプロセッサ間割込みを生成して、
その入力待ち行列中に前記エントリが作成されたことを前記受信するパーティシ
ョンに信号で知らせるようにすることを特徴とする請求項13に記載のコンピュ
ータ・システム。 - 【請求項15】 前記受信するパーティション上でプロセッサ間割込みが検
出されたとき、前記受信するパーティション上のプログラム・コードは、 (i)その各入力待ち行列を検査して、前記入力待ち行列のいずれが他のパー
ティションからの通信を表すエントリを含んでいるかを決定するようにし、 (ii)そのようなエントリを、それらを含む前記入力待ち行列から抽出する
ようにし、 (iii)エントリが抽出された入力待ち行列の前記オーバーフロー・フラグ
が設定されている場合に、前記オーバーフロー・フラグをリセットすることを特
徴とする請求項14に記載のコンピュータ・システム。 - 【請求項16】 指定された入力待ち行列の前記オーバーフロー・フラグが
、前記入力待ち行列が一杯になったことを示すように以前に設定されていた理由
で、その入力待ち行列中に配置できなかった入力待ち行列エントリを格納するた
めに、各パーティションが、その排他メモリ・ウインドウ中のある位置を保持し
、 前記排他メモリ・ウインドウ位置に記憶された前記エントリは、前記指定され
た入力待ち行列の前記オーバーフロー・フラグがリセットされて、もはや一杯で
はないことが示されるまでそこに留まり、それから前記エントリは入力待ち行列
に転送されることを特徴とする請求項15に記載のコンピュータ・システム。 - 【請求項17】 各パーティションは、所与の入力待ち行列から抽出された
待ち行列エントリが一時的に記憶される位置を、その排他メモリ・ウインドウ中
に保持することを特徴とする請求項15に記載のコンピュータ・システム。 - 【請求項18】 各パーティションが、プロセッサ間割込みをそれから受け
取る可能性のある他のパーティションそれぞれに別々の割込みベクトルを割り当
て、前記送信するパーティションが、前記プロセッサ間割込みを前記受信するパ
ーティションに送るときに、それに割り当てられた割込みベクトルを指定し、さ
らに、プロセッサ間割込みに応答して、前記受信するパーティションは、 (i’)前記指定された割込みベクトルを使用して、前記送信するパーティシ
ョンに関連する前記入力待ち行列を識別し、 (ii’)前記識別した入力待ち行列からエントリが抽出されるようにし、 (iii’)前記識別した入力待ち行列の前記オーバーフロー・フラグが設定
されている場合に、前記オーバーフロー・フラグをリセットすることを特徴とす
る請求項15に記載のコンピュータ・システム。 - 【請求項19】 各入力待ち行列は、その中に記憶されたエントリの数を示
すカウントを含むことを特徴とする請求項7に記載のコンピュータ・システム。 - 【請求項20】 前記共用メモリ・ウインドウはさらに、ページが使用され
ているか、それとも割り振りに利用可能かをページごとに示すためのテーブルを
含むことを特徴とする請求項8に記載のコンピュータ・システム。 - 【請求項21】 割り振りに利用可能な前記ページが相互にリンクされて、
利用可能なページのリンク・リストが形成されることを特徴とする請求項20に
記載のコンピュータ・システム。 - 【請求項22】 各パーティションは特定のページにおける所有権を有する
ことができ、前記ページは、どのパーティションが前記ページにおける所有権を
有するかを指定する情報を含むヘッダを有することを特徴とする請求項8に記載
のコンピュータ・システム。 - 【請求項23】 前記ページの前記ヘッダはさらにロック・フィールドを含
み、前記ロック・フィールドにより、あるパーティションが、前記ページの前記
ヘッダ中の所有権情報を更新するために前記ページへの排他アクセス権を獲得す
ることができ、それにより、異なるパーティションから前記ページへの複数アク
セスの同期をとる機構が提供されることを特徴とする請求項22に記載のコンピ
ュータ・システム。 - 【請求項24】 前記共用メモリ・ウインドウは、それに関連する、システ
ム全体のロック・フィールドを有し、前記ロック・フィールドにより、あるパー
ティションは、前記共用メモリ・ウインドウの1つまたは複数のページを割り振
るために前記共用メモリ・ページへの排他アクセスを獲得することができ、それ
により、異なるパーティションからの複数のメモリ・ページ割り振り要求の同期
をとる機構が提供されることを特徴とする請求項23に記載のコンピュータ・シ
ステム。 - 【請求項25】 前記ページの前記ロック・フィールドを獲得することによ
り、システム全体のロック・フィールドを獲得する必要なしに、ページの所有権
情報を更新することができることを特徴とする請求項24に記載のコンピュータ
・システム。 - 【請求項26】 前記プログラム・コードはポーリング・プロセスを実装し
、ポーリング・プロセスにより、各パーティションは、前記共用メモリ・ウイン
ドウ中のエリアをポーリングして、それに向けられた通信が別のパーティション
から前記共用メモリ・ウインドウ中に配置されたかどうかを決定することを特徴
とする請求項1に記載のコンピュータ・システム。 - 【請求項27】 各パーティションに、他のパーティションに向けた通信を
その中に配置することのできるメッセージ・バッファの別々のプールが割り当て
られることを特徴とする請求項26に記載のコンピュータ・システム。 - 【請求項28】 前記エリアは、各パーティションに1つずつ複数の出力待
ち行列を含み、所与のパーティション用の前記出力待ち行列は、そのパーティシ
ョンが他のパーティションに向けた通信を共用メモリ・ウインドウ中に配置した
かどうかを示し、各パーティションは、前記他のパーティションの前記出力待ち
行列をポーリングして、それら他のパーティションがそれに向けた通信を前記共
用メモリ・ウインドウ中に配置したかどうかを決定することを特徴とする請求項
26に記載のコンピュータ・システム。 - 【請求項29】 送信するパーティションから前記共用メモリ・ウインドウ
中に配置され、別のパーティションに受け取られるように意図された通信に対し
、前記送信するパーティションの前記出力待ち行列は、その通信を含むバッファ
の共用メモリ・ウインドウ内の位置を指定することを特徴とする請求項28に記
載のコンピュータ・システム。 - 【請求項30】 所与のパーティションの前記出力待ち行列は、1つまたは
複数のノード・ツー・ノード待ち行列を含み、1つのノード・ツー・ノード待ち
行列は、通信を渡す先となる可能性のある他の各パーティションに関連し、各ノ
ード・ツー・ノード待ち行列は、関連する前記パーティションに向けられた通信
が前記共用メモリ・ウインドウ中に出されたかどうかを示し、各パーティション
は、他の各パーティションの出力待ち行列中の、それに関連するノード・ツー・
ノード待ち行列をポーリングして、それら他のパーティションがそれに向けた通
信を前記共用メモリ・ウインドウ中に出したかどうかを決定することを特徴とす
る請求項28に記載のコンピュータ・システム。 - 【請求項31】 送信するパーティションから前記共用メモリ・ウインドウ
中に配置され、受信するパーティションに受け取られるように意図された通信に
対し、前記送信するパーティションの前記出力待ち行列中の、前記受信するパー
ティションに関連する前記ノード・ツー・ノード待ち行列は、その通信の存在を
示し、その通信を含むバッファの前記共用メモリ・ウインドウ内の位置を指定す
ることを特徴とする請求項30に記載のコンピュータ・システム。 - 【請求項32】 前記コンピュータ・システムの各パーティションはさらに
、共用メモリ・ドライバを含み、共用メモリ・ドライバは、別のパーティション
に通信を送る要求を受け取り、それに応答して、前記共用メモリ・ウインドウ中
の利用可能なバッファ中に前記通信が出されるようにし、前記送信するパーティ
ションの前記出力待ち行列中に前記通信の指示が出されるようにすることを特徴
とする請求項29に記載のコンピュータ・システム。 - 【請求項33】 ネットワークを介して他のコンピュータ・システムに通信
が送信されるのと同じ方式で、各パーティション上のアプリケーション・プログ
ラムおよび前記オペレーティング・システムが前記共用メモリ・ウインドウを介
して他のパーティションに通信を送れるように、各パーティション上の前記共用
メモリ・ドライバは、ネットワーク・デバイス・ドライバと同じインターフェー
スを実装し、それにより、前記共用メモリ・ドライバは、共用メモリを介したパ
ーティション間の通信がネットワークを介してなされているような様相を呈する
ことを特徴とする請求項32に記載のコンピュータ・システム。 - 【請求項34】 複数の処理モジュールと、メイン・メモリすべてにわたっ
てプロセッサ・メモリ待ち時間が各処理モジュールごとに同じになるように各処
理モジュールが接続されたメイン・メモリとを備えたコンピュータ・システムで
用いられる方法において、 前記コンピュータ・システムの異なる処理モジュールを前記コンピュータ・シ
ステム内の異なるパーティションに構成するステップであって、各パーティショ
ンは1つまたは複数の処理モジュールを含み、各パーティションが別々のオペレ
ーティング・システムを実行するステップと、 複数の前記パーティションが共用アクセス権を有する少なくとも1つの共用メ
モリ・ウインドウを割り当てるステップと、 前記送信するパーティションは、前記共用メモリ・ウインドウ内のある位置に
前記情報を記憶し、かつ、前記受信するパーティション上でプロセッサ間割込み
を生成して、前記受信するパーティションに通信される前記情報がその位置に格
納されていることを前記受信するパーティションに信号で伝えるようにすること
により、送信するパーティションから受信するパーティションに情報を通信する
ステップ を含むことを特徴とする方法。 - 【請求項35】 前記共用メモリ・ウインドウ中に、各パーティションごと
の入力待ち行列のセットを作成するステップをさらに含み、所与のパーティショ
ンのセットの各入力待ち行列は、別のパーティションに対応し、その別のパーテ
ィションからの通信を表すエントリを格納することを特徴とする請求項34に記
載の方法。 - 【請求項36】 前記通信するステップは、 前記送信するパーティションに対応する、前記受信するパーティションの前記
入力待ち行列中に、前記受信するパーティションに送るべき通信を表すエントリ
を作成するステップと、 前記受信するパーティション上でプロセッサ間割込みを生成して、前記エント
リが作成されたことを前記受信するパーティションに信号で知らせるステップと を含むことを特徴とする請求項35に記載の方法。 - 【請求項37】 前記受信するパーティション上で実施される複数のステッ
プであって、 前記プロセッサ間割込みを検出するステップと、 前記プロセッサ間割込みに応答して、前記受信するパーティションの前記入力
待ち行列の各セットを検査して、前記入力待ち行列のいずれが他のパーティショ
ンからの通信を表すエントリを含むかを決定するステップと、 そのようなエントリを、それらを含む前記入力待ち行列から抽出するステップ とをさらに含むことを特徴とする請求項36に記載の方法。 - 【請求項38】 各パーティションは、プロセッサ間割込みをそれから受け
取る可能性のある他のパーティションそれぞれに別々の割込みベクトルを割り当
て、前記送信するパーティションは、プロセッサ間割込みを前記受信するパーテ
ィションに送るときに、前記受信するパーティションによってそれに割り当てら
れた前記割込みベクトルを指定する、請求項37に記載の方法において、さらに
、前記受信するパーティションは、前記プロセッサ間割込みに応答して、 前記指定された割込みベクトルを使用して、前記送信するパーティションに関
連する前記入力待ち行列を識別するステップと、 前記識別した入力待ち行列からエントリを抽出するステップと、 前記識別した入力待ち行列の前記オーバーフロー・フラグが設定されている場
合に、前記オーバーフロー・フラグをリセットするステップと の代替ステップを実施することを特徴とする請求項37に記載の方法。 - 【請求項39】 各パーティションごとに、前記パーティションが排他アク
セス権を有する排他メモリ・ウインドウを前記メイン・メモリ内に規定するステ
ップと、 受信するパーティションの入力待ち行列からエントリを抽出した後で、その排
他メモリ・ウインドウ内の一時的な位置に前記エントリを格納するステップと をさらに含むことを特徴とする請求項37に記載の方法。 - 【請求項40】 前記共用メモリ・ウインドウ内で規定する前記ステップは
、パーティション間の通信を容易にするために、必要に応じて、パーティション
に割り振ることのできる複数のメモリ・ページを含む領域をさらに含むことを特
徴とする請求項35に記載の方法。 - 【請求項41】 前記通信するステップは、 前記共用メモリ・ウインドウの1つまたは複数のページを前記送信するパーテ
ィションに割り振るステップと、 前記送信するパーティションから前記受信するパーティションに通信すべき情
報を、前記割り振ったページにコピーするステップと、 前記送信するパーティションに対応する、前記受信するパーティションの前記
入力待ち行列中に、前記割り振ったページへのハンドルを含む前記エントリを作
成するステップと、 前記受信するパーティション上でプロセッサ間割込みを生成して、前記エント
リが作成されたことを前記受信するパーティションに信号で知らせるステップ とを含むことを特徴とする請求項40に記載の方法。 - 【請求項42】 前記受信するパーティション上で実施される複数のステッ
プであって、 前記プロセッサ間割込みを検出するステップと、 前記プロセッサ間割込みに応答して、前記受信するパーティションの前記セッ
トの各入力待ち行列を検査して、入力待ち行列のいずれが他のパーティションか
らの通信を表すエントリを含むかを決定するステップと、 そのようなエントリを、それらを含む前記入力待ち行列から抽出するステップ
と、 抽出したエントリが、割り振られた1つまたは複数のメモリ・ページへのハン
ドルを含む場合に、前記ハンドルを利用して、前記割り振られたページにアクセ
スするステップ とをさらに含むことを特徴とする請求項41に記載の方法。 - 【請求項43】 各パーティションが、プロセッサ間割込みをそれから受け
取る可能性のある他のパーティションそれぞれに別々の割込みベクトルを割り当
て、前記送信するパーティションが、プロセッサ間割込みを前記受信するパーテ
ィションに送るときに、前記受信するパーティションによってそれに割り当てら
れた前記割込みベクトルを指定する請求項41の方法において、さらに、前記プ
ロセッサ間割込みに応答して、前記受信するパーティションは、 前記指定された割込みベクトルを使用して、前記送信するパーティションに関
連する前記入力待ち行列を識別するステップと、 前記識別した入力待ち行列からエントリを抽出するステップと、 抽出したエントリが、割り振られた1つまたは複数のメモリ・ページへのハン
ドルを含む場合に、前記ハンドルを利用して、前記割り振られたページにアクセ
スするステップと の代替ステップを実施することを特徴とする請求項41に記載の方法。 - 【請求項44】 各入力待ち行列が、事前定義された数のエントリを格納す
ることができ、前記入力待ち行列が一杯になったときに設定できるオーバーフロ
ー・フラグを含むことを特徴とする請求項35に記載の方法。 - 【請求項45】 前記通信するステップは、 前記送信するパーティションに対応する、前記受信するパーティションの前記
入力待ち行列中に、前記受信するパーティションに送るべき情報を表すエントリ
を作成するステップと、 前記エントリを作成したことによって前記入力待ち行列が一杯になった場合に
、前記入力待ち行列の前記オーバーフロー・フラグを設定するステップと、 前記受信するパーティション上でプロセッサ間割込みを生成して、その入力待
ち行列中に前記エントリが作成されたことを前記受信するパーティションに信号
で知らせるステップ とを含むことを特徴とする請求項44に記載の方法。 - 【請求項46】 受信するパーティション上で実施される複数のステップで
あって、 前記プロセッサ間割込みを検出するステップと、 前記プロセッサ間割込みに応答して、前記受信するパーティションの前記入力
待ち行列の各セットを検査して、前記入力待ち行列のいずれが他のパーティショ
ンからの通信を表すエントリを含むかを決定するステップと、 そのようなエントリを、それらを含む前記入力待ち行列から抽出するステップ
と、 エントリが抽出された入力待ち行列の前記オーバーフロー・フラグが設定され
ている場合に、前記オーバーフロー・フラグをリセットするステップと をさらに含むことを特徴とする請求項45に記載の方法。 - 【請求項47】 各パーティションは、プロセッサ間割込みをそれから受け
取る可能性のある他のパーティションそれぞれに別々の割込みベクトルを割り当
て、前記送信するパーティションがプロセッサ間割込みを前記受信するパーティ
ションに送るときに、前記受信するパーティションによってそれに割り当てられ
た前記割込みベクトルを指定する請求項45に記載の方法であって、さらに、プ
ロセッサ間割込みに応答して、受信するパーティションは、 前記指定された割込みベクトルを使用して、前記送信するパーティションに関
連する前記入力待ち行列を識別するステップと、 前記識別した入力待ち行列からエントリを抽出するステップと、 エントリが抽出された入力待ち行列の前記オーバーフロー・フラグが設定され
ている場合に、前記オーバーフロー・フラグをリセットするステップと の代替ステップを実施することを特徴とする請求項45に記載の方法。 - 【請求項48】 各パーティションごとに、前記パーティションが排他アク
セス権を有する別々の排他メモリ・ウインドウを前記メイン・メモリ内に規定す
るステップをさらに含むことを特徴とする請求項35に記載の方法。 - 【請求項49】 各入力待ち行列は、事前定義された数のエントリを格納す
ることができ、前記入力待ち行列が一杯になったときに設定できるオーバーフロ
ー・フラグを含むことを特徴とする請求項48に記載の方法。 - 【請求項50】 前記通信するステップは、 前記送信するパーティションに対応する、前記受信するパーティションの前記
入力待ち行列中に、前記受信するパーティションに送るべき情報を表すエントリ
を作成するステップと、 前記エントリの前記作成によって前記入力待ち行列が一杯になった場合に、前
記入力待ち行列に前記オーバーフロー・フラグを設定し、その後、前記入力待ち
行列中に作成すべき追加のエントリがあれば、入力待ち行列がもはや一杯ではな
くなったときに後で入力待ち行列に配置できるように、追加のエントリを前記送
信するパーティションの前記排他メモリ・ウインドウ内のある位置に一時的に格
納するステップと、 前記受信するパーティション上でプロセッサ間割込みを生成して、前記入力待
ち行列が前記受信するパーティションに対するエントリを含むことを前記受信す
るパーティションに信号で知らせるステップ とを含むことを特徴とする請求項49に記載の方法。 - 【請求項51】 前記受信するパーティション上で実施される、 前記プロセッサ間割込みを検出し、別のパーティションからの通信を表すエン
トリを含む入力待ち行列を突き止めるステップと、 前記入力待ち行列から前記エントリを抽出するステップと、 エントリが抽出された入力待ち行列の前記オーバーフロー・フラグが設定され
ている場合に、前記オーバーフロー・フラグをリセットし、対応する送信するパ
ーティションの、前記対応する入力待ち行列中のエントリを介して、前記対応す
る送信するパーティションに通信を返信して、その送信するパーティションの排
他メモリ・ウインドウ中に一時的に記憶されている可能性のあるエントリの送信
をその送信するパーティションが再開できることを示すステップと をさらに含むことを特徴とする請求項50に記載の方法。 - 【請求項52】 複数のオペレーティング・システムがコンピュータ・シス
テム上で動作できるようにする方法であって、前記コンピュータ・システムが複
数の処理モジュールと、メイン・メモリとを備え、前記方法は、 前記コンピュータ・システムの異なる処理モジュールを、前記コンピュータ・
システム内の異なるパーティションに構成するステップであって、各パーティシ
ョンは1つまたは複数の処理モジュールを含み、各パーティションは別々のオペ
レーティング・システムを実行するように構成するステップと、 各パーティションに前記メイン・メモリ内の排他メモリ・ウインドウを割り当
て、複数の前記パーティションが共用アクセス権を有する少なくとも1つの共用
メモリを割り当てるステップと、 各パーティションが前記共用メモリのエリアをポーリングして、それに向けら
れたメッセージが別のパーティションから共用メモリ・ウインドウ中に配置され
たかどうかを決定するためのポーリング・プロセスに従って、前記共用メモリを
介してある送信するパーティションからその他の受信するパーティションにメッ
セージを通信するステップ を含むことを特徴とする方法。 - 【請求項53】 パーティションが他のパーティションに向けたメッセージ
をその中に配置できる前記共用メモリ・ウインドウ内のメッセージ・バッファの
別々のプールを、別々のオペレーティング・システムそれぞれに割り振るステッ
プをさらに含むことを特徴とする請求項52に記載の方法。 - 【請求項54】 前記パーティションによってポーリングされる、前記共用
メモリの前記エリアは、各パーティションに1つずつ複数の出力待ち行列を含み
、所与のパーティション用の前記出力待ち行列は、そのパーティションが前記他
のパーティションに向けたメッセージを前記共用メモリ・ウインドウ中に配置し
たかどうかを示し、前記通信するステップは、各パーティションが、前記他のパ
ーティションの前記出力待ち行列をポーリングして、それら他のパーティション
がそれに向けたメッセージを前記共用メモリ・ウインドウ中に配置したかどうか
を決定することを含むことを特徴とする請求項53に記載の方法。 - 【請求項55】 別のパーティションにメッセージを送るつもりであるパー
ティション(送信するパーティション)が、前記共用メモリ・ウインドウ内のバ
ッファ中に前記メッセージを配置するステップと、 前記送信するパーティションが、前記別のパーティションに向けたメッセージ
が前記バッファ中に配置されたことの標識をその出力待ち行列中に記憶し、さら
に前記バッファへのポインタも格納するステップと、 前記メッセージを向けられた前記パーティションが、送信するパーティション
の前記出力待ち行列をポーリングして、それにより、前記メッセージが前記バッ
ファ中に配置されたことを決定し、前記記憶されたポインタを使用してバッファ
を突き止め、前記バッファから前記メッセージを取り出すステップと をさらに含むことを特徴とする請求項54に記載の方法。 - 【請求項56】 複数の処理モジュールであって、各処理モジュールは複数
のプロセッサを備え、1つまたは複数の処理モジュールのグループは、前記コン
ピュータ・システム内の別々のパーティションとして構成され、各パーティショ
ンが別々のオペレーティング・システムの制御下で動作する処理モジュールと、 メイン・メモリであって、各パーティションに排他メモリ・ウインドウがメイ
ン・メモリ内で割り当てられており、排他メモリ・ウインドウへは、そのパーテ
ィションだけしかアクセス権を有さず、排他メモリ・ウインドウ中では、そのパ
ーティションのオペレーティング・システムが動作する、メイン・メモリと、 各パーティション中の前記プロセッサの物理アドレス空間を、前記パーティシ
ョンに割り当てられた前記それぞれの排他メモリ・ウインドウにマッピングする
手段であって、それにより、各パーティションの前記排他メモリ・ウインドウが
、それぞれのオペレーティング・システムにはメイン・メモリ中に同じベース(
基底)物理アドレスを有すると見えるようにするマッピング手段と を備えることを特徴とするコンピュータ・システム。 - 【請求項57】 各排他メモリ・ウインドウは、それぞれのオペレーティン
グ・システムには0のベース(基底)物理アドレスを有すると見えるようにされ
ることを特徴とする請求項56に記載のコンピュータ・システム。 - 【請求項58】 前記マッピングする手段が、所与のパーティション上にあ
る前記プロセッサの前記物理アドレス空間内の位置への参照を、そのパーティシ
ョンに割り当てられた前記排他メモリ・ウインドウ内の前記対応する位置に再配
置する手段を備えることを特徴とする請求項56に記載のコンピュータ・システ
ム。 - 【請求項59】 前記再配置する手段は、 メイン・メモリのベース(基底)物理アドレスから、前記所与のパーティショ
ンに割り当てられた前記排他メモリ・ウインドウの前記開始までのオフセット(
RL OS)を保持するレジスタと、 前記所与のパーティション中のプロセッサによるその物理アドレス空間内の位
置への各参照に前記オフセット(RL OS)を加算し、それにより、これらの参
照を前記排他メモリ・ウインドウ内のこれらに対応する位置に再配置する加算器
と を備えることを特徴とする請求項58に記載のコンピュータ・システム。 - 【請求項60】 所与のパーティションの前記プロセッサの前記物理アドレ
ス空間は、メモリ記憶に利用不可能なアドレスの範囲を含むことができ、前記利
用不可能な範囲はメモリ・ホールを規定し、前記メモリ・ホールより上のアドレ
スはハイ・メモリ範囲を規定し、メモリ・ホールより下のアドレスはロー・メモ
リ範囲を規定し、前記コンピュータ・システムはさらに、前記マッピング機能の
結果として、前記所与のパーティションの前記排他メモリ・ウインドウの、通常
ならメモリ・ホールに対応することになる、部分を他の用途に再利用する手段を
備えることを特徴とする請求項56に記載のコンピュータ・システム。 - 【請求項61】 前記マッピングする手段は、 メイン・メモリの前記ベース(基底)物理アドレスから、前記所与のパーティ
ションに割り当てられた前記排他メモリ・ウインドウの前記開始までのオフセッ
ト(RL OS)を保持するレジスタと、 前記メモリ・ホールのサイズを表す値(RC OS)を保持するレジスタと、 (i)その物理アドレス空間のロー・メモリ範囲内の位置への、前記所与のパ
ーティション中のプロセッサによる、各参照に前記オフセット(RL OS)を加
算し、それにより、これらの参照を、前記排他メモリ・ウインドウ内のこれらに
対応する位置に再配置し、 (ii)オフセットから前記メモリ・ホールの前記サイズを表す前記値を引い
た値(RL OS−RC OS)を、その物理アドレス空間のハイ・メモリ範囲内の
位置への、前記所与のパーティション中のプロセッサによる各参照に加算し、そ
れにより、これらの参照を、前記排他メモリ・ウインドウ内のこれらに対応する
位置に再配置して、前記排他メモリ・ウインドウの、通常なら前記メモリ・ホー
ルに対応することになる部分を再利用する、ための加算器と を備えることを特徴とする請求項60に記載のコンピュータ・システム。 - 【請求項62】 前記メイン・メモリは、さらに、前記排他メモリ・ウイン
ドウとは別個の共用メモリ・ウインドウを備え、前記コンピュータ・システムは
さらに、各パーティション上で、そのパーティションの前記プロセッサの前記物
理アドレス空間の指定部分を前記メイン・メモリ内の前記共用メモリ・ウインド
ウにマッピングする手段を備えることを特徴とする請求項56に記載のコンピュ
ータ・システム。 - 【請求項63】 所与のパーティション上にある前記プロセッサの前記物理
アドレス空間の指定部分を前記共用メモリ・ウインドウにマッピングする前記手
段は、さらに、 前記パーティション上にある前記プロセッサの前記物理アドレス空間の前記ベ
ース(基底)アドレスから、その物理アドレス空間の前記指定部分の前記開始ま
でのオフセット(SBASE OS)を保持するレジスタと、 前記メイン・メモリの前記ベース(基底)アドレスから、前記メイン・メモリ
内の前記共用メモリ・ウインドウの前記開始までのオフセット(SBASE MS U )を保持するレジスタと、 オフセット間の差(SBASE MSU−SBASE OS)を、前記所与のパー
ティション中のプロセッサによる前記指定部分内の位置への各参照に加え、それ
により、これらの参照を、前記メイン・メモリの前記共用メモリ・ウインドウ内
のこれらに対応する位置に再配置する加算器と を備えることを特徴とする請求項59に記載のコンピュータ・システム。 - 【請求項64】 前記パーティションの1つ1つは、異なるオペレーティン
グ・システムの前記制御下で動作することを特徴とする請求項56に記載のコン
ピュータ・システム。 - 【請求項65】 前記パーティションの1つ1つは、同じオペレーティング
・システムの異なるインスタンスの前記制御下で動作することを特徴とする請求
項56に記載のコンピュータ・システム。 - 【請求項66】 (i)複数の処理モジュールであって、各処理モジュール
は複数のプロセッサを備え、1つまたは複数の処理モジュールのグループは、コ
ンピュータ・システム内の別々のパーティションとして構成され、各パーティシ
ョンは別々のオペレーティング・システムの制御下で動作する、処理モジュール
と、(ii)メイン・メモリであって、各パーティションに排他メモリ・ウイン
ドウがメイン・メモリ内で割り当てられており、排他メモリ・ウインドウへは、
そのパーティションだけしかアクセス権を有さず、排他メモリ・ウインドウ中で
は、そのパーティションのオペレーティング・システムが動作する、メイン・メ
モリとを備えるコンピュータ・システムにおいて、各パーティションの前記排他
メモリ・ウインドウを、それぞれのオペレーティング・システムには、メイン・
メモリ中の同じベース(基底)物理アドレスを有すると見えるようにする方法で
あって、 所与のパーティション上にある前記プロセッサの前記物理アドレス空間内の位
置への参照を、そのパーティションに割り当てられた前記排他メモリ・ウインド
ウ内の前記対応する位置に再配置するステップ を含むことを特徴とする方法。 - 【請求項67】 前記再配置するステップは、 前記メイン・メモリの前記ベース(基底)物理アドレスから、所与のパーティ
ションに割り当てられた前記排他メモリ・ウインドウの前記開始までのオフセッ
ト(RL OS)を表す値を格納するステップ、および そのパーティション中のプロセッサによるその物理アドレス空間内の位置への
各参照に前記オフセット(RL OS)を加算し、それにより、これらの参照を前
記排他メモリ・ウインドウ内のこれらに対応する位置に再配置するステップ を含むことを特徴とする請求項66に記載の方法。 - 【請求項68】 所与のパーティションの前記プロセッサの前記物理アドレ
ス空間は、メモリ記憶に利用不可能なアドレスの範囲を含むことができ、前記利
用不可能な範囲はメモリ・ホールを規定し、前記メモリ・ホールより上のアドレ
スはハイ・メモリ範囲を規定し、前記メモリ・ホールより下のアドレスはロー・
メモリ範囲を規定し、前記方法はさらに、前記再配置するステップの結果として
、前記所与のパーティションの前記排他メモリ・ウインドウの、通常なら前記メ
モリ・ホールに対応することになる部分を他の用途に再利用することを含むこと
を特徴とする請求項56に記載の方法。 - 【請求項69】 前記再配置するステップと再利用するステップは、 メイン・メモリの前記ベース(基底)物理アドレスから、前記所与のパーティ
ションに割り当てられた前記排他メモリ・ウインドウの前記開始までのオフセッ
ト(RL OS)を表す値を格納するステップと、 前記メモリ・ホールのサイズを表す値(RC OS)を格納するステップと、 前記所与のパーティション中のプロセッサによるその物理アドレス空間の前記
ロー・メモリ範囲内の位置への各参照にオフセット(RL OS)を加算し、それ
により、これらの参照を、前記排他メモリ・ウインドウ内のこれらに対応する位
置に再配置するステップ、および 前記オフセットから前記メモリ・ホールの前記サイズを引いた値(RL OS−
RC OS)を、前記所与のパーティション中のプロセッサによるその物理アドレ
ス空間の前記ハイ・メモリ範囲内の位置への各参照に加算し、それにより、これ
らの参照を、前記排他メモリ・ウインドウ内のこれらに対応する位置に再配置し
て、前記排他メモリ・ウインドウの、通常なら前記メモリ・ホールに対応するこ
とになる部分を再利用するステップ を含むことを特徴とする請求項68に記載の方法。 - 【請求項70】 前記メイン・メモリはさらに、前記排他メモリ・ウインド
ウとは別個の共用メモリ・ウインドウを備え、前記方法はさらに、 各パーティション上で、そのパーティションの前記プロセッサの前記物理アド
レス空間の一部を前記メイン・メモリ内の前記共用メモリ・ウインドウに対応す
るように指定するステップ、および パーティションのプロセッサによるその物理アドレス空間の前記指定部分内の
位置への参照を、前記メイン・メモリ内の前記共用メモリ・ウインドウ内の前記
対応する位置に再配置するステップ を含むことを特徴とする請求項56に記載の方法。 - 【請求項71】 パーティション上のプロセッサによるその物理アドレスの
前記指定部分への参照を、前記共用メモリ・ウインドウ中の前記対応する位置に
再配置する前記ステップは、 そのパーティション上にある前記プロセッサの前記物理アドレス空間の前記ベ
ース(基底)アドレスから、その物理アドレス空間の前記指定部分の前記開始ま
でのオフセット(SBASE OS)を表す値を格納するステップと、 前記メイン・メモリの前記ベース(基底)アドレスから、前記メイン・メモリ
内の前記共用メモリ・ウインドウの前記開始までのオフセット(SBASE MS U )を表す値を格納するステップと、および 前記格納したオフセット間の前記差(SBASE MSU−SBASE OS)を
、そのパーティション中のプロセッサによる前記指定部分内の位置への参照に加
えるステップ を含み、それにより、これらの参照を、前記メイン・メモリの前記共用メモリ
・ウインドウ内のこれらに対応する位置に再配置することを特徴とする請求項7
0に記載の方法。 - 【請求項72】 各排他メモリ・ウインドウは、それぞれのオペレーティン
グ・システムには0のベース(基底)物理アドレスを有すると見えるようにされ
ることを特徴とする請求項56に記載の方法。 - 【請求項73】 複数の処理モジュールであって、各処理モジュールは複数
のプロセッサを備え、1つまたは複数の処理モジュールのグループは前記コンピ
ュータ・システム内の別々のパーティションとして構成され、各パーティション
が別々のオペレーティング・システムの制御下で動作する処理モジュールと、 メイン・メモリであって、各パーティションに排他メモリ・ウインドウがメイ
ン・メモリ内で割り当てられており、排他メモリ・ウインドウへは、そのパーテ
ィションだけしかアクセス権を有さず、排他メモリ・ウインドウ中では、そのパ
ーティションの前記オペレーティング・システムが動作し、複数のパーティショ
ンが共用アクセス権を有する共用メモリ・ウインドウもその中にあるメイン・メ
モリと、 各パーティション中の前記プロセッサの前記物理アドレス空間を、前記パーテ
ィションに割り当てられた前記それぞれの排他メモリ・ウインドウにマッピング
し、それにより、各パーティションの前記排他メモリ・ウインドウが、それぞれ
のオペレーティング・システムには前記メイン・メモリ中の同じベース(基底)
物理アドレスを有すると見えるようにする手段と、 前記複数のパーティション上で実行され、それらのパーティションが前記共用
メモリ・ウインドウを介して相互に通信できるようにするプログラム・コードと
を備えることを特徴とするコンピュータ・システム。 - 【請求項74】 前記パーティションの1つ1つは、前記異なるオペレーテ
ィング・システムの制御下で動作することを特徴とする請求項73に記載のコン
ピュータ・システム。 - 【請求項75】 前記パーティションの1つ1つは、同じオペレーティング
・システムの異なるインスタンスの制御下で動作することを特徴とする請求項7
3に記載のコンピュータ・システム。 - 【請求項76】 前記プログラム・コードは、送信するパーティションがプ
ロセッサ間割込みを受信するパーティション上で生成して、前記共用メモリ・ウ
インドウを介して情報が受信するパーティションに転送されていることを前記受
信するパーティションに信号で知らせるための、プロセスを実装することを特徴
とする請求項73に記載のコンピュータ・システム。 - 【請求項77】 前記共用メモリ・ウインドウは、各パーティションに関連
する入力待ち行列のセットを含み、所与のパーティションに関連する前記セット
の各入力待ち行列が、別のパーティションに対応し、その別のパーティションか
らの通信を表すエントリを格納することを特徴とする請求項76に記載のコンピ
ュータ・システム。 - 【請求項78】 前記共用メモリ・ウインドウがさらに、パーティション間
の情報の通信を容易にするために必要に応じて前記パーティションに割り振るこ
とのできる複数のメモリ・ページを含むことを特徴とする請求項77に記載のコ
ンピュータ・システム。 - 【請求項79】 各パーティションが特定のページにおける所有権を有する
ことができ、前記ページは、どのパーティションが前記ページにおける所有権を
有するかを指定する情報を含むヘッダを有することを特徴とする請求項78に記
載のコンピュータ・システム。 - 【請求項80】 前記ページの前記ヘッダはさらにロック・フィールドを含
み、前記ロック・フィールドにより、あるパーティションが、あるページの前記
ヘッダ中の所有権情報を更新するために前記ページへの排他アクセス権を獲得す
ることができ、それにより、異なるパーティションから前記ページへの複数アク
セスの同期をとる機構が提供されることを特徴とする請求項79に記載のコンピ
ュータ・システム。 - 【請求項81】 前記共用メモリ・ウインドウは、それに関連する、システ
ム全体のロック・フィールドを有し、前記ロック・フィールドにより、あるパー
ティションは、1つまたは複数のページを割り振るために前記共用メモリ・ペー
ジへの排他アクセスを獲得することができ、それにより、異なるパーティション
からの複数のメモリ・ページ割り振り要求の同期をとる機構が提供されることを
特徴とする請求項80に記載のコンピュータ・システム。 - 【請求項82】 ページのロック・フィールドを獲得することにより、前記
システム全体のロック・フィールドを獲得する必要なしに前記ページの所有権情
報を更新することができることを特徴とする請求項80に記載のコンピュータ・
システム。 - 【請求項83】 あるパーティション(送信するパーティション)が別のパ
ーティション(受信するパーティション)と通信するようにするために、送信す
るパーティション上のプログラム・コードは、 (i)前記送信するパーティションに対応する、前記受信するパーティション
の前記入力待ち行列中にエントリを作成するようにし、 (ii)前記受信するパーティション上でプロセッサ間割込みを生成して、そ
の入力待ち行列中にエントリが作成されたことを前記受信するパーティションに
信号で知らせるようにする ことを特徴とする請求項77に記載のコンピュータ・システム。 - 【請求項84】 前記受信するパーティション上で前記プロセッサ間割込み
が検出されたとき、前記受信するパーティション上の前記プログラム・コードは
、 (i)その各入力待ち行列を検査して、前記入力待ち行列が他のパーティショ
ンからの通信を表すエントリを含んでいるかを決定するようにし、 (ii)そのようなエントリを、それらを含む前記入力待ち行列から抽出する
ようにする ことを特徴とする請求項83に記載のコンピュータ・システム。 - 【請求項85】 各入力待ち行列は、事前定義された数のエントリを格納す
ることができ、前記入力待ち行列が一杯になったときに設定されて、前記入力待
ち行列からエントリが抽出されたときに受信するパーティションによってリセッ
トされるオーバーフロー・フラグを含むことを特徴とする請求項77に記載のコ
ンピュータ・システム。 - 【請求項86】 前記プログラム・コードはポーリング・プロセスを実装し
、ポーリング・プロセスにより、各パーティションは、前記共用メモリ・ウイン
ドウ内のエリアをポーリングして、それに向けられた通信が別のパーティション
から前記共用メモリ・ウインドウ中に配置されたかどうかを決定することを特徴
とする請求項73に記載のコンピュータ・システム。 - 【請求項87】 前記エリアは、各パーティションに1つずつ複数の出力待
ち行列を含み、所与のパーティション用の前記出力待ち行列は、そのパーティシ
ョンが前記他のパーティションに向けた通信を前記共用メモリ・ウインドウ中に
配置したかどうかを示し、各パーティションは、前記他のパーティションの前記
出力待ち行列をポーリングして、それら他のパーティションがそれに向けた通信
を前記共用メモリ・ウインドウ中に配置したかどうかを決定することを特徴とす
る請求項86に記載のコンピュータ・システム。 - 【請求項88】 送信するパーティションから前記共用メモリ・ウインドウ
中に配置され、別のパーティションに受け取られるように意図された通信に対し
、前記送信するパーティションの前記出力待ち行列は、前記共用メモリ・ウイン
ドウ内の、その通信を含むバッファの前記位置を指定することを特徴とする請求
項87に記載のコンピュータ・システム。 - 【請求項89】 各パーティションに、他のパーティションに向けた通信を
その中に配置すことのできるメッセージ・バッファの別々のプールが割り当てら
れることを特徴とする請求項88に記載のコンピュータ・システム。 - 【請求項90】 各排他メモリ・ウインドウが、それぞれのオペレーティン
グ・システムには0のベース(基底)物理アドレスを有すると見えるようにされ
ることを特徴とする請求項73に記載のコンピュータ・システム。 - 【請求項91】 前記マッピングする手段が、所与のパーティション上にあ
る前記プロセッサの前記物理アドレス空間内の位置への参照を、そのパーティシ
ョンに割り当てられた前記排他メモリ・ウインドウ内の前記対応する位置に再配
置する手段をさらに備えることを特徴とする請求項73に記載のコンピュータ・
システム。 - 【請求項92】 前記再配置する手段は、 メイン・メモリの前記ベース(基底)物理アドレスから、前記所与のパーティ
ションに割り当てられた前記排他メモリ・ウインドウの開始までのオフセット(
RL OS)を保持するレジスタと、 前記所与のパーティション中のプロセッサによるその物理アドレス空間内の位
置への各参照に前記オフセット(RL OS)を加算し、それにより、これらの参
照を、前記排他メモリ・ウインドウ内のこれらに対応する位置に再配置する加算
器と を備えることを特徴とする請求項91に記載のコンピュータ・システム。 - 【請求項93】 所与のパーティションの前記プロセッサの前記物理アドレ
ス空間は、メモリ記憶に利用不可能なアドレスの範囲を含むことができ、前記利
用不可能な範囲はメモリ・ホールを規定し、前記メモリ・ホールより上のアドレ
スはハイ・メモリ範囲を規定し、前記メモリ・ホールより下のアドレスはロー・
メモリ範囲を規定し、前記コンピュータ・システムはさらに、前記マッピング機
能の結果として、前記所与のパーティションの排他メモリ・ウインドウの、通常
ならメモリ・ホールに対応することになる部分を他の用途に再利用する手段を備
えることを特徴とする請求項73に記載のコンピュータ・システム。 - 【請求項94】 前記マッピングする手段は、 メイン・メモリの前記ベース(基底)物理アドレスから、前記所与のパーティ
ションに割り当てられた前記排他メモリ・ウインドウの前記開始までのオフセッ
ト(RL OS)を保持するレジスタと、 前記メモリ・ホールのサイズを表す値(RC OS)を保持するレジスタと、 (i)前記所与のパーティション中のプロセッサによるその物理アドレス空間
の前記ロー・メモリ範囲内の位置への各参照に前記オフセット(RL OS)を加
算し、それにより、これらの参照を、排他メモリ・ウインドウ内のこれらに対応
する位置に再配置し、 (ii)前記オフセットから前記メモリ・ホールの前記サイズを表す前記値を
引いた値(RL OS−RC OS)を、前記所与のパーティション中のプロセッサ
によるその物理アドレス空間の前記ハイ・メモリ範囲内の位置への各参照に加算
し、それにより、これらの参照を、前記排他メモリ・ウインドウ内のこれらに対
応する位置に再配置して、排他メモリ・ウインドウの、通常なら前記メモリ・ホ
ールに対応することになるその部分を再利用する ための、加算器と を備えることを特徴とする請求項93に記載のコンピュータ・システム。 - 【請求項95】 各パーティション上で、そのパーティションの前記プロセ
ッサの前記物理アドレス空間の指定部分を前記メイン・メモリ内の前記共用メモ
リ・ウインドウにマッピングする手段をさらに備えることを特徴とする請求項7
3に記載のコンピュータ・システム。 - 【請求項96】 所与のパーティション上にある前記プロセッサの前記物理
アドレス空間の指定部分を前記共用メモリ・ウインドウにマッピングする前記手
段は、さらに、 前記パーティション上にある前記プロセッサの前記物理アドレス空間の前記ベ
ース(基底)アドレスから、その物理アドレス空間の前記指定部分の前記開始ま
でのオフセット(SBASE OS)を保持するレジスタと、 前記メイン・メモリの前記ベース(基底)アドレスから、前記メイン・メモリ
内の前記共用メモリ・ウインドウの前記開始までのオフセット(SBASE MS U )を保持するレジスタと、 前記オフセット間の前記差(SBASE MSU−SBASE OS)を、前記所
与のパーティション中のプロセッサによる前記指定部分内の位置への各参照に加
え、それにより、これらの参照を、前記メイン・メモリの前記共用メモリ・ウイ
ンドウ内のこれらに対応する位置に再配置する加算器と を備えることを特徴とする請求項95に記載のコンピュータ・システム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/215,424 | 1998-12-18 | ||
US09/215,424 US6314501B1 (en) | 1998-07-23 | 1998-12-18 | 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 |
PCT/US1999/030437 WO2000036509A2 (en) | 1998-12-18 | 1999-12-17 | 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 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006049063A Division JP2006216068A (ja) | 1998-12-18 | 2006-02-24 | コンピュータ・システムの異なるパーティション中で複数のオペレーティング・システムを動作させ、異なるパーティションが共用メモリを介して相互に通信できるようにするコンピュータ・システムおよび方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2002532806A true JP2002532806A (ja) | 2002-10-02 |
Family
ID=22802929
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000588687A Pending JP2002532806A (ja) | 1998-12-18 | 1999-12-17 | コンピュータ・システムの異なるパーティション中で複数のオペレーティング・システムを動作させ、異なるパーティションが共用メモリを介して相互に通信できるようにするコンピュータ・システムおよび方法 |
JP2006049063A Pending JP2006216068A (ja) | 1998-12-18 | 2006-02-24 | コンピュータ・システムの異なるパーティション中で複数のオペレーティング・システムを動作させ、異なるパーティションが共用メモリを介して相互に通信できるようにするコンピュータ・システムおよび方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006049063A Pending JP2006216068A (ja) | 1998-12-18 | 2006-02-24 | コンピュータ・システムの異なるパーティション中で複数のオペレーティング・システムを動作させ、異なるパーティションが共用メモリを介して相互に通信できるようにするコンピュータ・システムおよび方法 |
Country Status (8)
Country | Link |
---|---|
US (2) | US6314501B1 (ja) |
EP (1) | EP1145122B1 (ja) |
JP (2) | JP2002532806A (ja) |
AT (1) | ATE359550T1 (ja) |
BR (1) | BR9916308A (ja) |
CA (1) | CA2355065C (ja) |
DE (1) | DE69935805T2 (ja) |
WO (1) | WO2000036509A2 (ja) |
Cited By (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004530196A (ja) * | 2001-03-08 | 2004-09-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 区分処理環境におけるリソース平衡化 |
JP2008041093A (ja) * | 2006-08-01 | 2008-02-21 | Internatl Business Mach Corp <Ibm> | 多数の論理パーティションにわたって仮想入力/出力操作を分散させるためのシステム及び方法 |
JP2008152786A (ja) * | 2006-12-19 | 2008-07-03 | Internatl Business Mach Corp <Ibm> | データ処理システム内で1つまたは複数のエンドポイントの第1の物理機能から第2の物理機能に仮想機能を移行するための方法、プログラム、およびシステム(単一ルート・ステートレス仮想機能の移行のためのシステムおよび方法) |
JP2009003935A (ja) * | 2007-06-20 | 2009-01-08 | Nvidia Corp | 書込み操作を同報通信するためのシステム、方法、およびコンピュータプログラム製品 |
US7644252B2 (en) | 2004-03-23 | 2010-01-05 | Nec Corporation | Multi-processor system and memory accessing method |
JP2011508349A (ja) * | 2007-12-27 | 2011-03-10 | プライアント テクノロジー インコーポレイテッド | プロセッサを内部メモリに接続するクロスバー・スイッチを含むフラッシュメモリ用ストレージコントローラ |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US8909982B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | System and method for detecting copyback programming problems |
US8910020B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | Intelligent bit recovery for flash memory |
US8924815B2 (en) | 2011-11-18 | 2014-12-30 | Sandisk Enterprise Ip Llc | Systems, methods and devices for decoding codewords having multiple parity segments |
US8938658B2 (en) | 2011-11-07 | 2015-01-20 | Sandisk Enterprise Ip Llc | Statistical read comparison signal generation for memory systems |
US8954822B2 (en) | 2011-11-18 | 2015-02-10 | Sandisk Enterprise Ip Llc | Data encoder and decoder using memory-specific parity-check matrix |
US9003264B1 (en) | 2012-12-31 | 2015-04-07 | Sandisk Enterprise Ip Llc | Systems, methods, and devices for multi-dimensional flash RAID data protection |
US9009576B1 (en) | 2013-03-15 | 2015-04-14 | Sandisk Enterprise Ip Llc | Adaptive LLR based on syndrome weight |
US9043517B1 (en) | 2013-07-25 | 2015-05-26 | Sandisk Enterprise Ip Llc | Multipass programming in buffers implemented in non-volatile data storage systems |
US9048876B2 (en) | 2011-11-18 | 2015-06-02 | Sandisk Enterprise Ip Llc | Systems, methods and devices for multi-tiered error correction |
US9070481B1 (en) | 2014-05-30 | 2015-06-30 | Sandisk Technologies Inc. | Internal current measurement for age measurements |
US9093160B1 (en) | 2014-05-30 | 2015-07-28 | Sandisk Technologies Inc. | Methods and systems for staggered memory operations |
US9092370B2 (en) | 2013-12-03 | 2015-07-28 | Sandisk Enterprise Ip Llc | Power failure tolerant cryptographic erase |
US9092350B1 (en) | 2013-03-15 | 2015-07-28 | Sandisk Enterprise Ip Llc | Detection and handling of unbalanced errors in interleaved codewords |
US9122636B2 (en) | 2013-11-27 | 2015-09-01 | Sandisk Enterprise Ip Llc | Hard power fail architecture |
US9129665B2 (en) | 2013-12-17 | 2015-09-08 | Sandisk Enterprise Ip Llc | Dynamic brownout adjustment in a storage device |
US9152555B2 (en) | 2013-11-15 | 2015-10-06 | Sandisk Enterprise IP LLC. | Data management with modular erase in a data storage system |
US9158349B2 (en) | 2013-10-04 | 2015-10-13 | Sandisk Enterprise Ip Llc | System and method for heat dissipation |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9170941B2 (en) | 2013-04-05 | 2015-10-27 | Sandisk Enterprises IP LLC | Data hardening in a storage system |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
US9235509B1 (en) | 2013-08-26 | 2016-01-12 | Sandisk Enterprise Ip Llc | Write amplification reduction by delaying read access to data written during garbage collection |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9250676B2 (en) | 2013-11-29 | 2016-02-02 | Sandisk Enterprise Ip Llc | Power failure architecture and verification |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
US9280429B2 (en) | 2013-11-27 | 2016-03-08 | Sandisk Enterprise Ip Llc | Power fail latching based on monitoring multiple power supply voltages in a storage device |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9323637B2 (en) | 2013-10-07 | 2016-04-26 | Sandisk Enterprise Ip Llc | Power sequencing and data hardening architecture |
US9329928B2 (en) | 2013-02-20 | 2016-05-03 | Sandisk Enterprise IP LLC. | Bandwidth optimization in a non-volatile memory system |
US9348377B2 (en) | 2014-03-14 | 2016-05-24 | Sandisk Enterprise Ip Llc | Thermal isolation techniques |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9442670B2 (en) | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9485851B2 (en) | 2014-03-14 | 2016-11-01 | Sandisk Technologies Llc | Thermal tube assembly structures |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9519319B2 (en) | 2014-03-14 | 2016-12-13 | Sandisk Technologies Llc | Self-supporting thermal tube structure for electronic assemblies |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9549457B2 (en) | 2014-02-12 | 2017-01-17 | Sandisk Technologies Llc | System and method for redirecting airflow across an electronic assembly |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9645749B2 (en) | 2014-05-30 | 2017-05-09 | Sandisk Technologies Llc | Method and system for recharacterizing the storage density of a memory device or a portion thereof |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9928185B2 (en) | 2015-01-30 | 2018-03-27 | Fujitsu Limited | Information processing apparatus and computer-readable recording medium having program recorded therein |
US10049037B2 (en) | 2013-04-05 | 2018-08-14 | Sandisk Enterprise Ip Llc | Data management in a storage system |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
Families Citing this family (373)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6282578B1 (en) * | 1995-06-26 | 2001-08-28 | Hitachi, Ltd. | Execution management method of program on reception side of message in distributed processing system |
US6343313B1 (en) * | 1996-03-26 | 2002-01-29 | Pixion, Inc. | Computer conferencing system with real-time multipoint, multi-speed, multi-stream scalability |
US6029168A (en) * | 1998-01-23 | 2000-02-22 | Tricord Systems, Inc. | Decentralized file mapping in a striped network file system in a distributed computing environment |
IL125273A (en) * | 1998-07-08 | 2006-08-20 | Marvell Israel Misl Ltd | Communication architecture |
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 |
DE69929450D1 (en) * | 1998-10-10 | 2006-04-06 | Transitive Ltd | Endian-transformation |
US6480941B1 (en) * | 1999-02-23 | 2002-11-12 | International Business Machines Corporation | Secure partitioning of shared memory based multiprocessor system |
US8245260B1 (en) * | 1999-05-04 | 2012-08-14 | Unisys Corporation | Video server |
US6601089B1 (en) | 1999-06-21 | 2003-07-29 | Sun Microsystems, Inc. | System and method for allocating buffers for message passing in a shared-memory computer system |
US6535963B1 (en) * | 1999-06-30 | 2003-03-18 | Cisco Technology, Inc. | Memory apparatus and method for multicast devices |
US6976260B1 (en) * | 1999-09-24 | 2005-12-13 | International Business Machines Corporation | Method and apparatus for serializing a message queue in a multiprocessing environment |
JP2001101033A (ja) * | 1999-09-27 | 2001-04-13 | Hitachi Ltd | オペレーティングシステム及びアプリケーションプログラムの障害監視方法 |
US7007275B1 (en) * | 1999-10-21 | 2006-02-28 | Unisys Corporation | Method and apparatus for automatic execution of concatenated methods across multiple heterogeneous data sources |
US6490585B1 (en) * | 1999-11-12 | 2002-12-03 | Unisys Corp | Cellular multiprocessor data warehouse |
US6772416B1 (en) * | 1999-11-19 | 2004-08-03 | General Dynamics Decision Systems, Inc. | Separation kernel with memory allocation, remote procedure call and exception handling mechanisms |
US6735765B1 (en) * | 1999-12-07 | 2004-05-11 | Storage Technology Corporation | Sharing data between operating systems |
US7257079B1 (en) | 1999-12-23 | 2007-08-14 | Intel Corporation | Physical layer and data link interface with adaptive speed |
US6782001B1 (en) | 1999-12-23 | 2004-08-24 | Intel Corporation | Physical layer and data link interface with reset/sync sharing |
US6795881B1 (en) * | 1999-12-23 | 2004-09-21 | Intel Corporation | Physical layer and data link interface with ethernet pre-negotiation |
US6718417B1 (en) | 1999-12-23 | 2004-04-06 | Intel Corporation | Physical layer and data link interface with flexible bus width |
US7346075B1 (en) * | 2000-02-25 | 2008-03-18 | International Business Machines Corporation | Portable networking interface method and apparatus for distributed switching system |
US6633962B1 (en) * | 2000-03-21 | 2003-10-14 | International Business Machines Corporation | Method, system, program, and data structures for restricting host access to a storage space |
JP2001290665A (ja) * | 2000-04-11 | 2001-10-19 | Nec Software Hokuriku Ltd | プロセッサシステム |
US20020144010A1 (en) * | 2000-05-09 | 2002-10-03 | Honeywell International Inc. | Communication handling in integrated modular avionics |
US7058750B1 (en) * | 2000-05-10 | 2006-06-06 | Intel Corporation | Scalable distributed memory and I/O multiprocessor system |
US6981260B2 (en) * | 2000-05-25 | 2005-12-27 | International Business Machines Corporation | Apparatus for minimizing lock contention in a multiple processor system with multiple run queues when determining the threads priorities |
CA2335561A1 (en) * | 2000-05-31 | 2001-11-30 | Frank J. Degilio | Heterogeneous client server method, system and program product for a partitioned processing environment |
JP3770306B2 (ja) * | 2000-06-20 | 2006-04-26 | 日本電気株式会社 | ベースバイアス回路及びこのベースバイアス回路を用いた電力増幅器 |
US6799317B1 (en) * | 2000-06-27 | 2004-09-28 | International Business Machines Corporation | Interrupt mechanism for shared memory message passing |
US7620775B1 (en) * | 2004-03-26 | 2009-11-17 | Emc Corporation | System and method for managing storage networks and providing virtualization of resources in such a network using one or more ASICs |
US6757748B1 (en) | 2000-07-20 | 2004-06-29 | Rlx Technologies, Inc. | Modular network interface system and method |
US6985967B1 (en) | 2000-07-20 | 2006-01-10 | Rlx Technologies, Inc. | Web server network system and method |
US6747878B1 (en) | 2000-07-20 | 2004-06-08 | Rlx Technologies, Inc. | Data I/O management system and method |
US6411506B1 (en) * | 2000-07-20 | 2002-06-25 | Rlx Technologies, Inc. | High density web server chassis system and method |
US6665777B2 (en) | 2000-07-26 | 2003-12-16 | Tns Holdings, Inc. | Method, apparatus, network, and kit for multiple block sequential memory management |
FR2814555B1 (fr) * | 2000-09-25 | 2003-02-28 | Thomson Multimedia Sa | Systeme et procede de gestion memoire de coherence de donnees et reseau multiprocesseur associe |
JP2002108837A (ja) * | 2000-09-29 | 2002-04-12 | Nec Corp | 計算機システムとその計算制御方法 |
US7343419B1 (en) | 2000-10-05 | 2008-03-11 | Aol Llc | Rerouting media to selected media applications |
US6728764B1 (en) * | 2000-11-08 | 2004-04-27 | Unisys Corporation | Method and apparatus for operating a data processing system |
US6772320B1 (en) * | 2000-11-17 | 2004-08-03 | Intel Corporation | Method and computer program for data conversion in a heterogeneous communications network |
US6813522B1 (en) * | 2000-12-29 | 2004-11-02 | Emc Corporation | Method of sharing memory in a multi-processor system including a cloning of code and data |
JP2002251326A (ja) * | 2001-02-22 | 2002-09-06 | Hitachi Ltd | 耐タンパ計算機システム |
US6665759B2 (en) * | 2001-03-01 | 2003-12-16 | International Business Machines Corporation | Method and apparatus to implement logical partitioning of PCI I/O slots |
US6601148B2 (en) * | 2001-03-01 | 2003-07-29 | International Business Machines Corporation | Infiniband memory windows management directly in hardware |
US20020129274A1 (en) * | 2001-03-08 | 2002-09-12 | International Business Machines Corporation | Inter-partition message passing method, system and program product for a security server in a partitioned processing environment |
US7089558B2 (en) * | 2001-03-08 | 2006-08-08 | International Business Machines Corporation | Inter-partition message passing method, system and program product for throughput measurement in a partitioned processing environment |
US20020129172A1 (en) * | 2001-03-08 | 2002-09-12 | International Business Machines Corporation | Inter-partition message passing method, system and program product for a shared I/O driver |
US6578128B1 (en) * | 2001-03-29 | 2003-06-10 | Emc Corporation | Address management for a shared memory region on a multi-processor controller board |
JP4443067B2 (ja) * | 2001-04-26 | 2010-03-31 | 富士通マイクロエレクトロニクス株式会社 | プロセッサおよびそのリセット制御方法 |
US20020167902A1 (en) * | 2001-04-27 | 2002-11-14 | Foster Michael S. | Method and system for performing security via virtual addressing in a communications network |
US20020188718A1 (en) * | 2001-05-04 | 2002-12-12 | Rlx Technologies, Inc. | Console information storage system and method |
US20020188709A1 (en) * | 2001-05-04 | 2002-12-12 | Rlx Technologies, Inc. | Console information server system and method |
US6587921B2 (en) * | 2001-05-07 | 2003-07-01 | International Business Machines Corporation | Method and apparatus for cache synchronization in a clustered environment |
JP4632574B2 (ja) * | 2001-05-25 | 2011-02-16 | 株式会社日立製作所 | 記憶装置およびファイルデータのバックアップ方法およびファイルデータのコピー方法 |
US6874014B2 (en) * | 2001-05-29 | 2005-03-29 | Hewlett-Packard Development Company, L.P. | Chip multiprocessor with multiple operating systems |
US7103747B2 (en) * | 2001-06-28 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | Memory table and memory manager for use in managing memory |
US6795907B2 (en) * | 2001-06-28 | 2004-09-21 | Hewlett-Packard Development Company, L.P. | Relocation table for use in memory management |
US7213081B2 (en) * | 2001-06-29 | 2007-05-01 | Fujitsu Limited | Dynamic determination of memory mapped input output range granularity for multi-node computer system |
US6968398B2 (en) * | 2001-08-15 | 2005-11-22 | International Business Machines Corporation | Method of virtualizing I/O resources in a computer system |
US7290104B2 (en) * | 2001-09-19 | 2007-10-30 | Intel Corporation | Increasing code separation between applications |
US6920485B2 (en) * | 2001-10-04 | 2005-07-19 | Hewlett-Packard Development Company, L.P. | Packet processing in shared memory multi-computer systems |
US6999998B2 (en) * | 2001-10-04 | 2006-02-14 | Hewlett-Packard Development Company, L.P. | Shared memory coupling of network infrastructure devices |
US20030069949A1 (en) * | 2001-10-04 | 2003-04-10 | Chan Michele W. | Managing distributed network infrastructure services |
JP3878508B2 (ja) | 2001-11-08 | 2007-02-07 | 松下電器産業株式会社 | 回路群制御システム |
US6757785B2 (en) * | 2001-11-27 | 2004-06-29 | International Business Machines Corporation | Method and system for improving cache performance in a multiprocessor computer |
US20030110205A1 (en) * | 2001-12-07 | 2003-06-12 | Leith Johnson | Virtualized resources in a partitionable server |
US6795902B2 (en) * | 2002-01-09 | 2004-09-21 | Sun Microsystems, Inc. | Inter-domain data transfer |
US6910108B2 (en) * | 2002-01-09 | 2005-06-21 | International Business Machines Corporation | Hardware support for partitioning a multiprocessor system to allow distinct operating systems |
US6826653B2 (en) | 2002-02-06 | 2004-11-30 | Hewlett-Packard Development Company, L.P. | Block data mover adapted to contain faults in a partitioned multiprocessor system |
US20030163651A1 (en) * | 2002-02-26 | 2003-08-28 | International Business Machines Corporation | Apparatus and method of transferring data from one partition of a partitioned computer system to another |
US6834296B2 (en) | 2002-03-01 | 2004-12-21 | International Business Machines Corporation | Apparatus and method of multicasting or broadcasting data from one partition of a partitioned computer system to a plurality of other partitions |
US20030177334A1 (en) * | 2002-03-14 | 2003-09-18 | International Business Machines Corporation | Address mapping for disk drive to accommodate multiple operating systems |
US20030177367A1 (en) * | 2002-03-14 | 2003-09-18 | International Business Machines Corporation | Controlling access to a disk drive in a computer system running multiple operating systems |
US6968415B2 (en) * | 2002-03-29 | 2005-11-22 | International Business Machines Corporation | Opaque memory region for I/O adapter transparent bridge |
US7219121B2 (en) * | 2002-03-29 | 2007-05-15 | Microsoft Corporation | Symmetrical multiprocessing in multiprocessor systems |
US6725289B1 (en) * | 2002-04-17 | 2004-04-20 | Vmware, Inc. | Transparent address remapping for high-speed I/O |
US7529844B2 (en) * | 2002-04-26 | 2009-05-05 | Sun Microsystems, Inc. | Multiprocessing systems employing hierarchical spin locks |
US7051102B2 (en) * | 2002-04-29 | 2006-05-23 | Microsoft Corporation | Peer-to-peer name resolution protocol (PNRP) security infrastructure and method |
US7478139B2 (en) * | 2002-04-29 | 2009-01-13 | International Business Machines Corporation | Shared resource support for internet protocol |
US8103754B1 (en) * | 2002-05-02 | 2012-01-24 | Hewlett-Packard Development Company, L.P. | Reserving a shared volume in a multiple node data storage system |
US7747747B1 (en) | 2002-05-06 | 2010-06-29 | Apple Inc. | Method and arrangement for supressing duplicate network resources |
JP4032816B2 (ja) * | 2002-05-08 | 2008-01-16 | 株式会社日立製作所 | ストレージネットワークトポロジ管理システム |
US6941436B2 (en) * | 2002-05-09 | 2005-09-06 | International Business Machines Corporation | Method and apparatus for managing memory blocks in a logical partitioned data processing system |
FR2840082B1 (fr) * | 2002-05-24 | 2006-04-07 | Bull Sa | Procede d'echange d'informations entre systemes d'exploitation cohabitant sur un meme ordinateur |
JP2004005213A (ja) * | 2002-05-31 | 2004-01-08 | Toshiba Corp | 情報処理装置 |
US20030229721A1 (en) * | 2002-06-05 | 2003-12-11 | Bonola Thomas J. | Address virtualization of a multi-partitionable machine |
US20040010612A1 (en) | 2002-06-11 | 2004-01-15 | Pandya Ashish A. | High performance IP processor using RDMA |
US7444636B2 (en) * | 2002-07-15 | 2008-10-28 | Hewlett-Packard Development Company, L.P. | Method and system of determining attributes of a functional unit in a multiple processor computer system |
US7111303B2 (en) * | 2002-07-16 | 2006-09-19 | International Business Machines Corporation | Virtual machine operating system LAN |
MXPA05002225A (es) * | 2002-08-28 | 2005-09-12 | Grass Valley Inc | Red de almacenamiento de video con un desempeno mejorado. |
US20040059850A1 (en) * | 2002-09-19 | 2004-03-25 | Hipp Christopher G. | Modular server processing card system and method |
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 |
US7028218B2 (en) * | 2002-12-02 | 2006-04-11 | Emc Corporation | Redundant multi-processor and logical processor configuration for a file server |
US7007160B1 (en) * | 2002-12-03 | 2006-02-28 | Hewlett-Packard Development Company, L.P. | System and method for loading an advanced configuration and power interface (ACPI) original equipment manufacturer (OEM) description table |
US7103766B2 (en) * | 2002-12-20 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | System and method for making BIOS routine calls from different hardware partitions |
US7188062B1 (en) * | 2002-12-27 | 2007-03-06 | Unisys Corporation | Configuration management for an emulator operating system |
US7000046B1 (en) * | 2003-01-17 | 2006-02-14 | Unisys Corporation | Standard channel I/O processor (SCIOP) |
CA2422252C (en) * | 2003-03-14 | 2008-09-02 | Ibm Canada Limited - Ibm Canada Limitee | Reduced synchronization reservation system and method for a shared memory buffer |
JP4012517B2 (ja) * | 2003-04-29 | 2007-11-21 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 仮想計算機環境におけるロックの管理 |
US7251815B2 (en) * | 2003-04-29 | 2007-07-31 | International Business Machines Corporation | Multiple virtual machines sharing processor and work queue in memory having program/dispatch functions for assigning and accessing work items while the virtual machine was not idle |
US7299468B2 (en) * | 2003-04-29 | 2007-11-20 | International Business Machines Corporation | Management of virtual machines to utilize shared resources |
US8892878B2 (en) * | 2003-05-09 | 2014-11-18 | Oracle America, Inc. | Fine-grained privileges in operating system partitions |
US7100034B2 (en) * | 2003-05-23 | 2006-08-29 | Hewlett-Packard Development Company, L.P. | System for selecting another processor to be the boot strap processor when the default boot strap processor does not have local memory |
US20040243783A1 (en) * | 2003-05-30 | 2004-12-02 | Zhimin Ding | Method and apparatus for multi-mode operation in a semiconductor circuit |
US7685254B2 (en) * | 2003-06-10 | 2010-03-23 | Pandya Ashish A | Runtime adaptable search processor |
US7356818B2 (en) * | 2003-06-24 | 2008-04-08 | International Business Machines Corporation | Virtual machine communicating to external device without going through other virtual machines by using a list of IP addresses managed only by a single virtual machine monitor |
US20040268362A1 (en) * | 2003-06-25 | 2004-12-30 | International Business Machines Corporation | Method, apparatus and program storage device for providing a two-step communication scheme |
JP3892829B2 (ja) | 2003-06-27 | 2007-03-14 | 株式会社東芝 | 情報処理システムおよびメモリ管理方法 |
US20050015645A1 (en) * | 2003-06-30 | 2005-01-20 | Anil Vasudevan | Techniques to allocate information for processing |
US7620950B2 (en) * | 2003-07-01 | 2009-11-17 | International Business Machines Corporation | System and method to monitor amount of usage of applications in logical partitions |
KR100518584B1 (ko) * | 2003-07-12 | 2005-10-04 | 삼성전자주식회사 | 공유 라이브러리 시스템 및 상기 시스템 구축 방법 |
US8028130B1 (en) | 2003-07-22 | 2011-09-27 | Oracle America, Inc. | Pipeline structure for a shared memory protocol |
US7085910B2 (en) * | 2003-08-27 | 2006-08-01 | Lsi Logic Corporation | Memory window manager for control structure access |
US7743381B1 (en) * | 2003-09-16 | 2010-06-22 | Symantec Operating Corporation | Checkpoint service |
US7664823B1 (en) | 2003-09-24 | 2010-02-16 | Cisco Technology, Inc. | Partitioned packet processing in a multiprocessor environment |
US20050071665A1 (en) * | 2003-09-30 | 2005-03-31 | Zimmer Vincent J. | Methods and apparatus to associate boot objects with trust credentials |
US8122361B2 (en) * | 2003-10-23 | 2012-02-21 | Microsoft Corporation | Providing a graphical user interface in a system with a high-assurance execution environment |
US7660322B2 (en) * | 2003-12-11 | 2010-02-09 | International Business Machines Corporation | Shared adapter |
JP4408692B2 (ja) * | 2003-12-19 | 2010-02-03 | 富士通株式会社 | 通信装置管理プログラム |
US20050198461A1 (en) * | 2004-01-12 | 2005-09-08 | Shaw Mark E. | Security measures in a partitionable computing system |
TWI253014B (en) * | 2004-02-10 | 2006-04-11 | Intervideo Digital Technology | Architecture for sharing application programs between operation systems with power-saving effect and method thereof |
US7383555B2 (en) * | 2004-03-11 | 2008-06-03 | International Business Machines Corporation | Apparatus and method for sharing a network I/O adapter between logical partitions |
US8782654B2 (en) | 2004-03-13 | 2014-07-15 | Adaptive Computing Enterprises, Inc. | Co-allocating a reservation spanning different compute resources types |
CA2558892A1 (en) | 2004-03-13 | 2005-09-29 | Cluster Resources, Inc. | System and method for a self-optimizing reservation in time of compute resources |
US20050216695A1 (en) * | 2004-03-26 | 2005-09-29 | Jean-Pierre Bono | Memory extension for a data processor to provide both common and separate physical memory areas for virtual memory spaces |
US7620774B1 (en) * | 2004-03-26 | 2009-11-17 | Emc Corporation | System and method for managing storage networks and providing virtualization of resources in such a network using one or more control path controllers with an embedded ASIC on each controller |
US20050240806A1 (en) * | 2004-03-30 | 2005-10-27 | Hewlett-Packard Development Company, L.P. | Diagnostic memory dump method in a redundant processor |
US8533716B2 (en) * | 2004-03-31 | 2013-09-10 | Synopsys, Inc. | Resource management in a multicore architecture |
US7598956B2 (en) | 2004-04-15 | 2009-10-06 | Microsoft Corporation | Blended object attribute keyframing model |
US7246217B1 (en) * | 2004-04-19 | 2007-07-17 | Sandia Corporation | Interconnection arrangement of routers of processor boards in array of cabinets supporting secure physical partition |
JP4607489B2 (ja) * | 2004-04-21 | 2011-01-05 | 株式会社エヌ・ティ・ティ・ドコモ | データ処理装置およびデータ処理方法 |
US7478204B2 (en) * | 2004-04-29 | 2009-01-13 | International Business Machines Corporation | Efficient sharing of memory between applications running under different operating systems on a shared hardware system |
US7941799B2 (en) | 2004-05-27 | 2011-05-10 | International Business Machines Corporation | Interpreting I/O operation requests from pageable guests without host intervention |
US8214622B2 (en) | 2004-05-27 | 2012-07-03 | International Business Machines Corporation | Facilitating management of storage of a pageable mode virtual environment absent intervention of a host of the environment |
US7206915B2 (en) * | 2004-06-03 | 2007-04-17 | Emc Corp | Virtual space manager for computer having a physical address extension feature |
US20070266388A1 (en) | 2004-06-18 | 2007-11-15 | Cluster Resources, Inc. | System and method for providing advanced reservations in a compute environment |
US7434022B1 (en) * | 2004-06-29 | 2008-10-07 | Emc Corporation | Distributed workflow techniques |
US8914606B2 (en) * | 2004-07-08 | 2014-12-16 | Hewlett-Packard Development Company, L.P. | System and method for soft partitioning a computer system |
US20060020940A1 (en) * | 2004-07-08 | 2006-01-26 | Culter Bradley G | Soft-partitioning systems and methods |
US20060026367A1 (en) * | 2004-07-27 | 2006-02-02 | Sanjoy Das | Storage task coordination apparatus method and system |
US8898246B2 (en) * | 2004-07-29 | 2014-11-25 | Hewlett-Packard Development Company, L.P. | Communication among partitioned devices |
US7386688B2 (en) * | 2004-07-29 | 2008-06-10 | Hewlett-Packard Development Company, L.P. | Communication among partitioned devices |
US7356613B2 (en) * | 2004-08-17 | 2008-04-08 | International Business Machines Corporation | Routable application partitioning |
CA2577493A1 (en) * | 2004-08-18 | 2006-02-23 | Jaluna Sa | Operating systems |
US8176490B1 (en) | 2004-08-20 | 2012-05-08 | Adaptive Computing Enterprises, Inc. | System and method of interfacing a workload manager and scheduler with an identity manager |
US7539832B2 (en) * | 2004-08-23 | 2009-05-26 | Hewlett-Packard Development Company, L.P. | Option ROM code acquisition |
US7299376B2 (en) | 2004-08-25 | 2007-11-20 | International Business Machines Corporation | Apparatus, system, and method for verifying backup data |
US20060053092A1 (en) * | 2004-09-01 | 2006-03-09 | Chris Foo | Method and system to perform dynamic search over a network |
US20060058658A1 (en) * | 2004-09-13 | 2006-03-16 | Siemens Medical Solutions Usa, Inc. | Communications between co-located operating systems for medical diagnostic ultrasound and other systems |
US9038070B2 (en) * | 2004-09-14 | 2015-05-19 | Synopsys, Inc. | Debug in a multicore architecture |
US20060070042A1 (en) * | 2004-09-24 | 2006-03-30 | Muratori Richard D | Automatic clocking in shared-memory co-simulation |
US7685319B2 (en) | 2004-09-28 | 2010-03-23 | Cray Canada Corporation | Low latency communication via memory windows |
US7424739B2 (en) * | 2004-10-29 | 2008-09-09 | Microaoft Corporation | On-machine communication verification |
JP2006133989A (ja) * | 2004-11-04 | 2006-05-25 | Hitachi Ltd | ストレージシステムの管理方法、及び装置 |
US8145872B2 (en) * | 2004-11-08 | 2012-03-27 | International Business Machines Corporation | Autonomic self-tuning of database management system in dynamic logical partitioning environment |
CA2827035A1 (en) | 2004-11-08 | 2006-05-18 | Adaptive Computing Enterprises, Inc. | System and method of providing system jobs within a compute environment |
JP4606142B2 (ja) * | 2004-12-01 | 2011-01-05 | 株式会社ソニー・コンピュータエンタテインメント | スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム |
JP2006163516A (ja) * | 2004-12-02 | 2006-06-22 | Fujitsu Ltd | ネットワーク装置、ファイバーチャネルスイッチおよび共用メモリアクセス制御方法 |
US7580915B2 (en) * | 2004-12-14 | 2009-08-25 | Sap Ag | Socket-like communication API for C |
US7593930B2 (en) * | 2004-12-14 | 2009-09-22 | Sap Ag | Fast channel architecture |
US8533717B2 (en) * | 2004-12-14 | 2013-09-10 | Sap Ag | Fast platform independent inter-process communication |
US7600217B2 (en) * | 2004-12-14 | 2009-10-06 | Sap Ag | Socket-like communication API for Java |
US7694065B2 (en) * | 2004-12-28 | 2010-04-06 | Sap Ag | Distributed cache architecture |
US7971001B2 (en) * | 2004-12-28 | 2011-06-28 | Sap Ag | Least recently used eviction implementation |
US7539821B2 (en) * | 2004-12-28 | 2009-05-26 | Sap Ag | First in first out eviction implementation |
US7672949B2 (en) | 2004-12-28 | 2010-03-02 | Sap Ag | Connection manager having a common dispatcher for heterogeneous software suites |
US8370448B2 (en) * | 2004-12-28 | 2013-02-05 | Sap Ag | API for worker node retrieval of session request |
US8204931B2 (en) | 2004-12-28 | 2012-06-19 | Sap Ag | Session management within a multi-tiered enterprise network |
US7500133B2 (en) * | 2004-12-28 | 2009-03-03 | Sap Ag | Connection manager for handling message oriented protocol-based requests |
US7552153B2 (en) * | 2004-12-28 | 2009-06-23 | Sap Ag | Virtual machine monitoring using shared memory |
US7523196B2 (en) * | 2004-12-28 | 2009-04-21 | Sap Ag | Session monitoring using shared memory |
US20060143256A1 (en) * | 2004-12-28 | 2006-06-29 | Galin Galchev | Cache region concept |
US7591006B2 (en) * | 2004-12-29 | 2009-09-15 | Sap Ag | Security for external system management |
US7412705B2 (en) * | 2005-01-04 | 2008-08-12 | International Business Machines Corporation | Method for inter partition communication within a logical partitioned data processing system |
KR100645537B1 (ko) * | 2005-02-07 | 2006-11-14 | 삼성전자주식회사 | 안정적인 패킷 포워딩을 위한 동적인 큐 관리방법 및 이를위한 네트워크 프로세서의 구성요소 |
US7765405B2 (en) * | 2005-02-25 | 2010-07-27 | Microsoft Corporation | Receive side scaling with cryptographically secure hashing |
US8863143B2 (en) | 2006-03-16 | 2014-10-14 | Adaptive Computing Enterprises, Inc. | System and method for managing a hybrid compute environment |
US9075657B2 (en) | 2005-04-07 | 2015-07-07 | Adaptive Computing Enterprises, Inc. | On-demand access to compute resources |
US9231886B2 (en) | 2005-03-16 | 2016-01-05 | Adaptive Computing Enterprises, Inc. | Simple integration of an on-demand compute environment |
KR101064878B1 (ko) * | 2005-03-17 | 2011-09-16 | 엠텍비젼 주식회사 | 복수의 프로세서에 의한 메모리 공유 방법 및 메모리 공유구조를 가지는 휴대형 단말기 |
JP4711709B2 (ja) * | 2005-03-18 | 2011-06-29 | 富士通株式会社 | パーティション割り振り方法及びコンピュータシステム |
KR100591371B1 (ko) * | 2005-03-23 | 2006-06-20 | 엠텍비젼 주식회사 | 공유 메모리의 분할 영역 크기 가변 방법 및 공유 메모리를가지는 휴대형 단말기 |
KR100592105B1 (ko) * | 2005-03-25 | 2006-06-21 | 엠텍비젼 주식회사 | 공유 메모리의 분할 영역의 다중 억세스 제어 방법 및 공유메모리를 가지는 휴대형 단말기 |
US7987306B2 (en) | 2005-04-04 | 2011-07-26 | Oracle America, Inc. | Hiding system latencies in a throughput networking system |
US7779164B2 (en) * | 2005-04-04 | 2010-08-17 | Oracle America, Inc. | Asymmetrical data processing partition |
US7415034B2 (en) | 2005-04-04 | 2008-08-19 | Sun Microsystems, Inc. | Virtualized partitionable shared network interface |
US8510491B1 (en) * | 2005-04-05 | 2013-08-13 | Oracle America, Inc. | Method and apparatus for efficient interrupt event notification for a scalable input/output device |
US7817647B2 (en) * | 2005-04-22 | 2010-10-19 | Microsoft Corporation | Flower-petal resolutions for PNRP |
US8589562B2 (en) | 2005-04-29 | 2013-11-19 | Sap Ag | Flexible failover configuration |
US7337171B2 (en) * | 2005-05-12 | 2008-02-26 | International Business Machines Corporation | Apparatus and method for sharing a virtual file system between logical partitions |
US7689800B2 (en) | 2005-05-12 | 2010-03-30 | Microsoft Corporation | Partition bus |
US7788642B2 (en) * | 2005-05-16 | 2010-08-31 | Texas Instruments Incorporated | Displaying cache information using mark-up techniques |
US7689660B2 (en) * | 2005-06-09 | 2010-03-30 | Sap Ag | Application server architecture |
US7636943B2 (en) * | 2005-06-13 | 2009-12-22 | Aladdin Knowledge Systems Ltd. | Method and system for detecting blocking and removing spyware |
GB2427715A (en) * | 2005-06-24 | 2007-01-03 | Advanced Risc Mach Ltd | Managing snoop operations in a multiprocessor system |
US7441112B2 (en) | 2005-06-30 | 2008-10-21 | Intel Corporation | Offloading the processing of a network protocol stack |
JP4725955B2 (ja) * | 2005-06-30 | 2011-07-13 | 株式会社リコー | 情報処理装置、メッセージ管理方法、プログラムおよび記憶媒体 |
US8195624B2 (en) * | 2005-06-30 | 2012-06-05 | Phoenix Technologies Ltd. | Shared file system management between independent operating systems |
US7966412B2 (en) * | 2005-07-19 | 2011-06-21 | Sap Ag | System and method for a pluggable protocol handler |
US7647469B2 (en) * | 2005-07-22 | 2010-01-12 | International Business Machines Corporation | Method of assigning virtual import/export element addresses |
US7843961B2 (en) * | 2005-07-25 | 2010-11-30 | International Business Machines Corporation | Hardware device emulation |
US7568013B1 (en) * | 2005-08-03 | 2009-07-28 | Sun Microsystems, Inc. | Multiple message send routine for network packets |
US7720925B1 (en) * | 2005-08-03 | 2010-05-18 | Oracle America, Inc. | Multiple message receive routine for network packets |
US7945677B2 (en) * | 2005-09-06 | 2011-05-17 | Sap Ag | Connection manager capable of supporting both distributed computing sessions and non distributed computing sessions |
US9342945B2 (en) | 2005-09-09 | 2016-05-17 | Bally Gaming, Inc. | Gaming device with a virtualization manager |
KR100634566B1 (ko) * | 2005-10-06 | 2006-10-16 | 엠텍비젼 주식회사 | 공유 메모리 제어 방법 및 공유 메모리 동작 제어를수행하는 사용자 단말기 |
TWI277324B (en) * | 2005-10-19 | 2007-03-21 | Ind Tech Res Inst | Network packet storage method and network packet transmitting apparatus using the same |
US20070106683A1 (en) * | 2005-11-08 | 2007-05-10 | 3Com Corporation | Distributed database |
US7516291B2 (en) * | 2005-11-21 | 2009-04-07 | Red Hat, Inc. | Cooperative mechanism for efficient application memory allocation |
US8707323B2 (en) * | 2005-12-30 | 2014-04-22 | Sap Ag | Load balancing algorithm for servicing client requests |
US20070156907A1 (en) | 2005-12-30 | 2007-07-05 | Galin Galchev | Session handling based on shared session information |
US20070162594A1 (en) * | 2006-01-12 | 2007-07-12 | Microsoft Corporation | Controlled disconnection of a network device |
US20070174723A1 (en) * | 2006-01-18 | 2007-07-26 | Omar Cardona | Sub-second, zero-packet loss adapter failover |
US8028071B1 (en) * | 2006-02-15 | 2011-09-27 | Vmware, Inc. | TCP/IP offload engine virtualization system and methods |
US7872973B2 (en) * | 2006-03-17 | 2011-01-18 | Alcatel Lucent | Method and system for using a queuing device as a lossless stage in a network device in a communications network |
US8042109B2 (en) * | 2006-03-21 | 2011-10-18 | Intel Corporation | Framework for domain-specific run-time environment acceleration using virtualization technology |
US20070239965A1 (en) * | 2006-03-31 | 2007-10-11 | Saul Lewites | Inter-partition communication |
US7610481B2 (en) | 2006-04-19 | 2009-10-27 | Intel Corporation | Method and apparatus to support independent systems in partitions of a processing system |
EP2016496B1 (en) * | 2006-04-21 | 2014-03-12 | Oracle America, Inc. | Hiding system latencies in a throughput networking system |
WO2007123517A1 (en) | 2006-04-21 | 2007-11-01 | Sun Microsystems, Inc. | Asymmetrical processing for networking functions and data path offload |
EP2018614B1 (en) * | 2006-04-21 | 2013-06-12 | The Open Computing Trust I | Virtualized partitionable shared network interface |
US20070256076A1 (en) * | 2006-04-27 | 2007-11-01 | Thompson James W | System and method for separating multiple workloads processing in a single computer operating environment |
US8769703B2 (en) * | 2006-04-27 | 2014-07-01 | Unisys Corporation | System and method for providing a mechanism to virtualize a perpetual, unique system identity on a partitioned computer system |
US20080005494A1 (en) * | 2006-06-07 | 2008-01-03 | Zimmer Vincent J | Supporting flash access in a partitioned platform |
US20070288938A1 (en) * | 2006-06-12 | 2007-12-13 | Daniel Zilavy | Sharing data between partitions in a partitionable system |
US20070288921A1 (en) * | 2006-06-13 | 2007-12-13 | King Steven R | Emulating a network-like communication connection between virtual machines on a physical device |
US7426604B1 (en) * | 2006-06-14 | 2008-09-16 | Sun Microsystems, Inc. | Virtual output buffer architecture |
US8447936B2 (en) * | 2006-06-30 | 2013-05-21 | Microsoft Corporation | Module state management in a virtual machine environment |
US8214828B2 (en) * | 2006-06-30 | 2012-07-03 | Microsoft Corporation | Module state management in a virtual machine environment |
US7434025B2 (en) * | 2006-07-18 | 2008-10-07 | Microsoft Corporation | Leverage guest logical to physical translation for host-side memory access |
WO2008010598A1 (fr) * | 2006-07-18 | 2008-01-24 | Nec Corporation | Dispositif de traitement de communication d'informations, terminal de communication d'informations, système de communication d'informations, procédé de commutation de fonction, et programme de commmutation de fonction |
US8001540B2 (en) * | 2006-08-08 | 2011-08-16 | International Business Machines Corporation | System, method and program product for control of sequencing of data processing by different programs |
US20080040458A1 (en) * | 2006-08-14 | 2008-02-14 | Zimmer Vincent J | Network file system using a subsocket partitioned operating system platform |
US7949815B2 (en) * | 2006-09-27 | 2011-05-24 | Intel Corporation | Virtual heterogeneous channel for message passing |
US20080126652A1 (en) * | 2006-09-27 | 2008-05-29 | Intel Corporation | Managing Interrupts in a Partitioned Platform |
US7925809B2 (en) * | 2006-10-24 | 2011-04-12 | Apple Inc. | Systems and methods for storage management in a data processing device |
US9202087B2 (en) * | 2006-10-31 | 2015-12-01 | Verizon Patent And Licensing Inc. | Method and apparatus for controlling access to local storage devices |
US9141557B2 (en) | 2006-12-08 | 2015-09-22 | Ashish A. Pandya | Dynamic random access memory (DRAM) that comprises a programmable intelligent search memory (PRISM) and a cryptography processing engine |
US7996348B2 (en) | 2006-12-08 | 2011-08-09 | Pandya Ashish A | 100GBPS security and search architecture using programmable intelligent search memory (PRISM) that comprises one or more bit interval counters |
US20080163063A1 (en) * | 2006-12-29 | 2008-07-03 | Sap Ag | Graphical user interface system and method for presenting information related to session and cache objects |
JP2008217591A (ja) * | 2007-03-06 | 2008-09-18 | Fuji Xerox Co Ltd | 情報処理装置、画像処理装置、画像形成装置、画像形成システム、アドレス変換処理プログラム |
US8479208B2 (en) * | 2007-03-30 | 2013-07-02 | Intel Corporation | System partitioning to present software as platform level functionality including mode logic to maintain and enforce partitioning in first and configure partitioning in second mode |
US8880582B2 (en) * | 2007-03-30 | 2014-11-04 | Hewlett-Packard Development Company, L.P. | User access to a partitionable server |
US8271258B2 (en) * | 2007-03-30 | 2012-09-18 | International Business Machines Corporation | Emulated Z-series queued direct I/O |
US7899663B2 (en) * | 2007-03-30 | 2011-03-01 | International Business Machines Corporation | Providing memory consistency in an emulated processing environment |
US7941613B2 (en) | 2007-05-31 | 2011-05-10 | Broadcom Corporation | Shared memory architecture |
EP2161663B1 (en) * | 2007-06-01 | 2014-04-16 | Fujitsu Limited | Information processing apparatus and method for reconfiguring information processing apparatus |
US20080306818A1 (en) * | 2007-06-08 | 2008-12-11 | Qurio Holdings, Inc. | Multi-client streamer with late binding of ad content |
US7996482B1 (en) | 2007-07-31 | 2011-08-09 | Qurio Holdings, Inc. | RDMA based real-time video client playback architecture |
US8041773B2 (en) | 2007-09-24 | 2011-10-18 | The Research Foundation Of State University Of New York | Automatic clustering for self-organizing grids |
US20090119584A1 (en) * | 2007-11-02 | 2009-05-07 | Steve Herbst | Software Tool for Creating Outlines and Mind Maps that Generates Subtopics Automatically |
KR101439844B1 (ko) * | 2007-11-14 | 2014-09-17 | 삼성전자주식회사 | 저장 공간 할당 방법 및 장치 |
US7454478B1 (en) * | 2007-11-30 | 2008-11-18 | International Business Machines Corporation | Business message tracking system using message queues and tracking queue for tracking transaction messages communicated between computers |
US8762476B1 (en) | 2007-12-20 | 2014-06-24 | Qurio Holdings, Inc. | RDMA to streaming protocol driver |
US8645965B2 (en) * | 2007-12-31 | 2014-02-04 | Intel Corporation | Supporting metered clients with manycore through time-limited partitioning |
US8090767B2 (en) * | 2008-01-07 | 2012-01-03 | Apple Inc. | Pairing and storage access scheme between a handheld device and a computing system |
US9081694B2 (en) * | 2008-01-14 | 2015-07-14 | Bivio Networks, Inc. | Systems and methods for asymmetric multiprocessing |
US8893126B2 (en) * | 2008-02-01 | 2014-11-18 | International Business Machines Corporation | Binding a process to a special purpose processing element having characteristics of a processor |
US8060904B1 (en) | 2008-02-25 | 2011-11-15 | Qurio Holdings, Inc. | Dynamic load based ad insertion |
US8458438B2 (en) * | 2008-02-26 | 2013-06-04 | International Business Machines Corporation | System, method and computer program product for providing quiesce filtering for shared memory |
US8527715B2 (en) * | 2008-02-26 | 2013-09-03 | International Business Machines Corporation | Providing a shared memory translation facility |
US8380907B2 (en) * | 2008-02-26 | 2013-02-19 | International Business Machines Corporation | Method, system and computer program product for providing filtering of GUEST2 quiesce requests |
US8140834B2 (en) * | 2008-02-26 | 2012-03-20 | International Business Machines Corporation | System, method and computer program product for providing a programmable quiesce filtering register |
US8432810B2 (en) * | 2008-03-28 | 2013-04-30 | Apple Inc. | Techniques for reducing buffer overflow in a communication system |
WO2009128837A1 (en) * | 2008-04-18 | 2009-10-22 | Lucent Technologies Inc. | Diameter bus communications between processing nodes of a network element |
US8429675B1 (en) * | 2008-06-13 | 2013-04-23 | Netapp, Inc. | Virtual machine communication |
US7650488B2 (en) * | 2008-06-18 | 2010-01-19 | Intel Corporation | Communication between processor core partitions with exclusive read or write to descriptor queues for shared memory space |
US8745314B1 (en) * | 2008-06-24 | 2014-06-03 | Virident Systems, Inc. | Methods for a random read and read/write block accessible memory |
US9513695B2 (en) | 2008-06-24 | 2016-12-06 | Virident Systems, Inc. | Methods of managing power in network computer systems |
US7743375B2 (en) | 2008-06-27 | 2010-06-22 | International Business Machines Corporation | Information handling system including dynamically merged physical partitions |
US8271996B1 (en) * | 2008-09-29 | 2012-09-18 | Emc Corporation | Event queues |
US8244518B2 (en) * | 2009-01-19 | 2012-08-14 | International Business Machines Corporation | Input/output processor (IOP) based zSeries emulation |
US8225069B2 (en) | 2009-03-31 | 2012-07-17 | Intel Corporation | Control of on-die system fabric blocks |
US8996556B2 (en) * | 2009-06-05 | 2015-03-31 | Microsoft Technology Licensing, Llc | Parallel processing of an ordered data stream |
US8171280B2 (en) * | 2009-06-22 | 2012-05-01 | Matthew Laue | Method of running multiple operating systems on an X86-based computer system having a dedicated memory region configured as a do not use region |
JP5413001B2 (ja) * | 2009-07-09 | 2014-02-12 | 富士通株式会社 | キャッシュメモリ |
US9256560B2 (en) * | 2009-07-29 | 2016-02-09 | Solarflare Communications, Inc. | Controller integration |
KR101593993B1 (ko) * | 2009-08-10 | 2016-02-26 | 삼성전자주식회사 | 웹 애플리케이션 간의 데이터 통신 장치 및 방법 |
US20110103391A1 (en) | 2009-10-30 | 2011-05-05 | Smooth-Stone, Inc. C/O Barry Evans | System and method for high-performance, low-power data center interconnect fabric |
US9069929B2 (en) | 2011-10-31 | 2015-06-30 | Iii Holdings 2, Llc | Arbitrating usage of serial port in node card of scalable and modular servers |
US9077654B2 (en) | 2009-10-30 | 2015-07-07 | Iii Holdings 2, Llc | System and method for data center security enhancements leveraging managed server SOCs |
US9465771B2 (en) | 2009-09-24 | 2016-10-11 | Iii Holdings 2, Llc | Server on a chip and node cards comprising one or more of same |
US9054990B2 (en) | 2009-10-30 | 2015-06-09 | Iii Holdings 2, Llc | System and method for data center security enhancements leveraging server SOCs or server fabrics |
US20130107444A1 (en) | 2011-10-28 | 2013-05-02 | Calxeda, Inc. | System and method for flexible storage and networking provisioning in large scalable processor installations |
US9876735B2 (en) | 2009-10-30 | 2018-01-23 | Iii Holdings 2, Llc | Performance and power optimized computer system architectures and methods leveraging power optimized tree fabric interconnect |
US8599863B2 (en) | 2009-10-30 | 2013-12-03 | Calxeda, Inc. | System and method for using a multi-protocol fabric module across a distributed server interconnect fabric |
US9648102B1 (en) | 2012-12-27 | 2017-05-09 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US9311269B2 (en) | 2009-10-30 | 2016-04-12 | Iii Holdings 2, Llc | Network proxy for high-performance, low-power data center interconnect fabric |
US11720290B2 (en) | 2009-10-30 | 2023-08-08 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US10877695B2 (en) | 2009-10-30 | 2020-12-29 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US9680770B2 (en) | 2009-10-30 | 2017-06-13 | Iii Holdings 2, Llc | System and method for using a multi-protocol fabric module across a distributed server interconnect fabric |
EP2497026B1 (en) * | 2009-11-04 | 2016-12-07 | Deere & Company | Electronic data processing system having a virtual bus server application |
US8402259B2 (en) * | 2009-11-30 | 2013-03-19 | International Business Machines Corporation | Accelerating wake-up time of a system |
US8453149B2 (en) * | 2010-01-21 | 2013-05-28 | International Business Machines Corporation | Efficient multi-core processing of events |
US8341643B2 (en) * | 2010-03-29 | 2012-12-25 | International Business Machines Corporation | Protecting shared resources using shared memory and sockets |
US8477610B2 (en) * | 2010-05-31 | 2013-07-02 | Microsoft Corporation | Applying policies to schedule network bandwidth among virtual machines |
US8634302B2 (en) | 2010-07-30 | 2014-01-21 | Alcatel Lucent | Apparatus for multi-cell support in a network |
US8229943B2 (en) * | 2010-08-26 | 2012-07-24 | Hewlett-Packard Development Company, L.P. | System and method for modifying an executing query |
US8473565B2 (en) | 2010-09-10 | 2013-06-25 | International Business Machines Corporation | Abstracting special file interfaces to concurrently support multiple operating system levels |
US20120093047A1 (en) * | 2010-10-14 | 2012-04-19 | Alcatel-Lucent USA Inc. via the Electronic Patent Assignment System (EPAS) | Core abstraction layer for telecommunication network applications |
US8504744B2 (en) | 2010-10-28 | 2013-08-06 | Alcatel Lucent | Lock-less buffer management scheme for telecommunication network applications |
US8737417B2 (en) | 2010-11-12 | 2014-05-27 | Alcatel Lucent | Lock-less and zero copy messaging scheme for telecommunication network applications |
US8730790B2 (en) | 2010-11-19 | 2014-05-20 | Alcatel Lucent | Method and system for cell recovery in telecommunication networks |
US8861434B2 (en) | 2010-11-29 | 2014-10-14 | Alcatel Lucent | Method and system for improved multi-cell support on a single modem board |
US8966222B2 (en) * | 2010-12-15 | 2015-02-24 | Microsoft Corporation | Message passing in a cluster-on-chip computing environment |
WO2012097015A2 (en) | 2011-01-11 | 2012-07-19 | A10 Networks Inc. | Virtual application delivery chassis system |
EP2482220A1 (en) * | 2011-01-27 | 2012-08-01 | SafeNet, Inc. | Multi-enclave token |
US8813071B2 (en) | 2011-01-31 | 2014-08-19 | Symantec Corporation | Storage reclamation systems and methods |
US8806159B2 (en) | 2011-04-08 | 2014-08-12 | Symantec Corporation | Data storage resource management systems and methods |
US20140025859A1 (en) * | 2011-04-13 | 2014-01-23 | Michael R. Krause | Input/output processing |
US20140032795A1 (en) | 2011-04-13 | 2014-01-30 | Hewlett-Packard Development Company, L.P. | Input/output processing |
US20140032796A1 (en) * | 2011-04-13 | 2014-01-30 | Michael R. Krause | Input/output processing |
US8799592B2 (en) | 2011-04-20 | 2014-08-05 | International Business Machines Corporation | Direct memory access-like data transfer between guest operating systems |
US8954435B2 (en) | 2011-04-22 | 2015-02-10 | Symantec Corporation | Method and system for reclaiming storage on a shared storage device or independent of the mount state of a file system |
US8751768B2 (en) * | 2011-04-29 | 2014-06-10 | Symantec Corporation | Data storage reclamation systems and methods |
US8756548B2 (en) | 2011-05-06 | 2014-06-17 | Xcelemor, Inc. | Computing system with hardware reconfiguration mechanism and method of operation thereof |
US20140115308A1 (en) * | 2011-05-30 | 2014-04-24 | Beijing Lenovo Software Ltd. | Control method, control device and computer system |
US9154577B2 (en) | 2011-06-06 | 2015-10-06 | A10 Networks, Inc. | Sychronization of configuration file of virtual application distribution chassis |
US9357482B2 (en) | 2011-07-13 | 2016-05-31 | Alcatel Lucent | Method and system for dynamic power control for base stations |
US9619247B2 (en) * | 2011-07-15 | 2017-04-11 | Microsoft Technology Licensing, Llc | Enabling fast string acquisition in an operating system for efficient interoperations with various language projections |
US9213618B2 (en) | 2011-09-16 | 2015-12-15 | Symantec Corporation | Storage management systems and methods in hierarchical storage systems |
US20140245328A1 (en) * | 2011-09-26 | 2014-08-28 | Nec Corporation | Information processing system, information processing method, information processing device and its control method and control program |
US9473596B2 (en) | 2011-09-27 | 2016-10-18 | International Business Machines Corporation | Using transmission control protocol/internet protocol (TCP/IP) to setup high speed out of band data communication connections |
WO2013048943A1 (en) | 2011-09-30 | 2013-04-04 | Intel Corporation | Active state power management (aspm) to reduce power consumption by pci express components |
KR101949417B1 (ko) * | 2011-12-02 | 2019-02-20 | 삼성전자주식회사 | 프로세서, 명령어 생성 장치 및 방법 |
KR101920239B1 (ko) * | 2012-03-06 | 2018-11-20 | 삼성전자주식회사 | 파일 시스템 기능을 제공하는 단말기의 장치 및 방법 |
CN102662853A (zh) * | 2012-03-22 | 2012-09-12 | 北京北大众志微系统科技有限责任公司 | 实现使用存储级并行的内存管理方法及装置 |
US8615766B2 (en) * | 2012-05-01 | 2013-12-24 | Concurix Corporation | Hybrid operating system |
US9396101B2 (en) | 2012-06-12 | 2016-07-19 | International Business Machines Corporation | Shared physical memory protocol |
US8930507B2 (en) | 2012-06-12 | 2015-01-06 | International Business Machines Corporation | Physical memory shared among logical partitions in a VLAN |
US8880935B2 (en) | 2012-06-12 | 2014-11-04 | International Business Machines Corporation | Redundancy and load balancing in remote direct memory access communications |
US8924952B1 (en) * | 2012-06-27 | 2014-12-30 | Amazon Technologies, Inc. | Updating software utilizing multiple partitions |
WO2014074239A2 (en) * | 2012-09-25 | 2014-05-15 | Openpeak Inc. | Method and system for sharing vpn connections between applications |
US9047057B2 (en) | 2012-11-16 | 2015-06-02 | International Business Machines Corporation | Accessing additional memory space with multiple processors |
US20140143372A1 (en) * | 2012-11-20 | 2014-05-22 | Unisys Corporation | System and method of constructing a memory-based interconnect between multiple partitions |
US9459910B1 (en) * | 2013-03-13 | 2016-10-04 | Emc Corporation | Controlling a layered driver |
US9431077B2 (en) | 2013-03-13 | 2016-08-30 | Qualcomm Incorporated | Dual host embedded shared device controller |
US9658867B2 (en) * | 2013-05-30 | 2017-05-23 | Hewlett Packard Enterprise Development Lp | Preserving object code translations of a library for future reuse by an emulator |
US9813485B2 (en) * | 2013-06-14 | 2017-11-07 | 1E Limited | Communication of virtual machine data |
US9628433B2 (en) * | 2013-08-27 | 2017-04-18 | International Business Machines Corporation | Transmission of short message service (SMS) message and notifications in virtualized wireless mobile computing device based on the status of intended recipient |
EP3053025A4 (en) | 2013-09-30 | 2017-05-17 | Hewlett-Packard Development Company, L.P. | Selecting operating systems based on a computing device mode |
CN104699627B (zh) * | 2013-12-06 | 2019-05-07 | 上海芯豪微电子有限公司 | 一种缓存系统和方法 |
US9639478B2 (en) | 2014-01-17 | 2017-05-02 | International Business Machines Corporation | Controlling direct memory access page mappings |
US10049216B2 (en) | 2014-02-06 | 2018-08-14 | Intel Corporation | Media protection policy enforcement for multiple-operating-system environments |
US9846658B2 (en) * | 2014-04-21 | 2017-12-19 | Cisco Technology, Inc. | Dynamic temporary use of packet memory as resource memory |
WO2015161456A1 (zh) * | 2014-04-22 | 2015-10-29 | 华为终端有限公司 | 一种具有多操作系统的终端 |
US10742559B2 (en) | 2014-04-24 | 2020-08-11 | A10 Networks, Inc. | Eliminating data traffic redirection in scalable clusters |
US9961130B2 (en) | 2014-04-24 | 2018-05-01 | A10 Networks, Inc. | Distributed high availability processing methods for service sessions |
US10152331B2 (en) | 2014-05-16 | 2018-12-11 | Wind River Systems, Inc. | Method and system for enforcing kernel mode access protection |
WO2016014017A1 (en) * | 2014-07-21 | 2016-01-28 | Hewlett-Packard Development Company, L.P. | Operating system device access using a virtual machine |
US9262407B1 (en) * | 2014-09-19 | 2016-02-16 | International Business Machines Corporation | Optimization of a multi-language user interface layout via reverse pseudo-translation |
US9424173B2 (en) | 2014-10-23 | 2016-08-23 | GlobalFoundries, Inc. | Performing secure address relocation within a multi-processor system sharing a same physical memory channel to external memory |
CN106293956A (zh) * | 2015-06-03 | 2017-01-04 | 中兴通讯股份有限公司 | 一种应用程序间数据传输的方法及装置 |
US10657274B2 (en) * | 2015-06-29 | 2020-05-19 | Samsng Electronics Co., Ltd. | Semiconductor device including memory protector |
US10318288B2 (en) | 2016-01-13 | 2019-06-11 | A10 Networks, Inc. | System and method to process a chain of network applications |
CN106021000B (zh) * | 2016-06-02 | 2018-06-01 | 北京百度网讯科技有限公司 | 用于机器人操作系统的共享内存管理方法和装置 |
US10114559B2 (en) * | 2016-08-12 | 2018-10-30 | International Business Machines Corporation | Generating node access information for a transaction accessing nodes of a data set index |
US9971691B2 (en) * | 2016-09-12 | 2018-05-15 | Intel Corporation | Selevtive application of interleave based on type of data to be stored in memory |
US9678865B1 (en) * | 2016-09-23 | 2017-06-13 | International Business Machines Corporation | Pre-allocating save areas of a memory |
US10481951B2 (en) * | 2016-11-15 | 2019-11-19 | Red Hat Israel, Ltd. | Multi-queue device assignment for application groups |
US10635336B1 (en) * | 2016-12-16 | 2020-04-28 | Amazon Technologies, Inc. | Cache-based partition allocation |
CN106874105A (zh) * | 2016-12-23 | 2017-06-20 | 北京北大众志微系统科技有限责任公司 | 一种基于数据对象感知的内存库划分方法和装置 |
US10241688B2 (en) * | 2017-03-09 | 2019-03-26 | International Business Machines Corporation | I/O amplification for determining to increase workload |
US10289330B2 (en) | 2017-03-30 | 2019-05-14 | Western Digital Technologies, Inc. | Allocating shared memory among multiple tasks in a multiprocessor environment |
US10416963B2 (en) * | 2017-06-19 | 2019-09-17 | Arm Limited | Bounds checking |
US11061642B2 (en) | 2017-09-29 | 2021-07-13 | Knowles Electronics, Llc | Multi-core audio processor with flexible memory allocation |
US10866740B2 (en) * | 2018-10-01 | 2020-12-15 | Western Digital Technologies, Inc. | System and method for performance-based multiple namespace resource allocation in a memory |
US11531627B2 (en) | 2019-03-08 | 2022-12-20 | International Business Machines Corporation | Secure storage isolation |
US11487906B2 (en) | 2019-03-08 | 2022-11-01 | International Business Machines Corporation | Storage sharing between a secure domain and a non-secure entity |
US11640361B2 (en) | 2019-03-08 | 2023-05-02 | International Business Machines Corporation | Sharing secure memory across multiple security domains |
DE102019215295A1 (de) * | 2019-10-04 | 2021-04-08 | Robert Bosch Gmbh | Datenstruktur, Speichermittel und Vorrichtung |
US20220345378A1 (en) * | 2021-04-26 | 2022-10-27 | Hewlett Packard Enterprise Development Lp | Electronic paper-based display device node fault visualization |
CN113699637A (zh) * | 2021-09-05 | 2021-11-26 | 江阴市子龙呢绒有限公司 | 一种新型提花机操作系统 |
Family Cites Families (88)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3641505A (en) | 1969-06-25 | 1972-02-08 | Bell Telephone Labor Inc | Multiprocessor computer adapted for partitioning into a plurality of independently operating systems |
US3787816A (en) | 1972-05-12 | 1974-01-22 | Burroughs Corp | Multiprocessing system having means for automatic resource management |
US4000485A (en) | 1975-06-30 | 1976-12-28 | Honeywell Information Systems, Inc. | Data processing system providing locked operation of shared resources |
US4253146A (en) | 1978-12-21 | 1981-02-24 | Burroughs Corporation | Module for coupling computer-processors |
US4253144A (en) | 1978-12-21 | 1981-02-24 | Burroughs Corporation | Multi-processor communication network |
US4245306A (en) | 1978-12-21 | 1981-01-13 | Burroughs Corporation | Selection of addressed processor in a multi-processor network |
US4240143A (en) | 1978-12-22 | 1980-12-16 | Burroughs Corporation | Hierarchical multi-processor network for memory sharing |
US4488217A (en) | 1979-03-12 | 1984-12-11 | Digital Equipment Corporation | Data processing system with lock-unlock instruction facility |
US4392196A (en) | 1980-08-11 | 1983-07-05 | Harris Corporation | Multi-processor time alignment control system |
US4466059A (en) | 1981-10-15 | 1984-08-14 | International Business Machines Corporation | Method and apparatus for limiting data occupancy in a cache |
US4441155A (en) | 1981-11-23 | 1984-04-03 | International Business Machines Corporation | Page controlled cache directory addressing |
US4464717A (en) | 1982-03-31 | 1984-08-07 | Honeywell Information Systems Inc. | Multilevel cache system with graceful degradation capability |
US4586133A (en) | 1983-04-05 | 1986-04-29 | Burroughs Corporation | Multilevel controller for a cache memory interface in a multiprocessing system |
US4562536A (en) | 1983-06-30 | 1985-12-31 | Honeywell Information Systems Inc. | Directory test error mode control apparatus |
US4667288A (en) | 1983-06-30 | 1987-05-19 | Honeywell Information Systems Inc. | Enable/disable control checking apparatus |
US4686621A (en) | 1983-06-30 | 1987-08-11 | Honeywell Information Systems Inc. | Test apparatus for testing a multilevel cache system with graceful degradation capability |
US4564903A (en) | 1983-10-05 | 1986-01-14 | International Business Machines Corporation | Partitioned multiprocessor programming system |
US5392409A (en) * | 1984-01-18 | 1995-02-21 | Hitachi, Ltd. | I/O execution method for a virtual machine system and system therefor |
US5067071A (en) | 1985-02-27 | 1991-11-19 | Encore Computer Corporation | Multiprocessor computer system employing a plurality of tightly coupled processors with interrupt vector bus |
US4875155A (en) | 1985-06-28 | 1989-10-17 | International Business Machines Corporation | Peripheral subsystem having read/write cache with record access |
JPS62194563A (ja) | 1986-02-21 | 1987-08-27 | Hitachi Ltd | バツフア記憶装置 |
JPS62219147A (ja) * | 1986-03-20 | 1987-09-26 | Fujitsu Ltd | 仮想計算機システムにおける共通メモリ方式 |
US5123101A (en) | 1986-11-12 | 1992-06-16 | Xerox Corporation | Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss |
US5142683A (en) | 1987-03-09 | 1992-08-25 | Unisys Corporation | Intercomputer communication control apparatus and method |
US4843541A (en) * | 1987-07-29 | 1989-06-27 | International Business Machines Corporation | Logical resource partitioning of a data processing system |
US5016167A (en) | 1987-12-21 | 1991-05-14 | Amdahl Corporation | Resource contention deadlock detection and prevention |
US5251308A (en) | 1987-12-22 | 1993-10-05 | Kendall Square Research Corporation | Shared memory multiprocessor with data hiding and post-store |
JPH01246656A (ja) | 1988-03-29 | 1989-10-02 | Nec Corp | プロセッサ間共有メモリ管理方式 |
EP0348053B1 (en) | 1988-06-21 | 1995-08-16 | Amdahl Corporation | Controlling the initiation of logical systems in a data processing system with logical processor facility |
EP0365731B1 (en) * | 1988-10-28 | 1994-07-27 | International Business Machines Corporation | Method and apparatus for transferring messages between source and destination users through a shared memory |
JPH02128267A (ja) * | 1988-11-09 | 1990-05-16 | Fujitsu Ltd | 共有メモリによる通信方式 |
US4929940A (en) | 1988-11-18 | 1990-05-29 | International Business Machines Corporation | Collision crossbar switch |
US5117350A (en) | 1988-12-15 | 1992-05-26 | Flashpoint Computer Corporation | Memory address mechanism in a distributed memory architecture |
US5142676A (en) | 1988-12-28 | 1992-08-25 | Gte Laboratories Incorporated | Separate content addressable memories for storing locked segment addresses and locking processor identifications for controlling access to shared memory |
US4967414A (en) | 1989-01-06 | 1990-10-30 | International Business Machines Corp. | LRU error detection using the collection of read and written LRU bits |
US5060136A (en) | 1989-01-06 | 1991-10-22 | International Business Machines Corp. | Four-way associative cache with dlat and separately addressable arrays used for updating certain bits without reading them out first |
US5237670A (en) | 1989-01-30 | 1993-08-17 | Alantec, Inc. | Method and apparatus for data transfer between source and destination modules |
JP2833062B2 (ja) | 1989-10-30 | 1998-12-09 | 株式会社日立製作所 | キャッシュメモリ制御方法とこのキャッシュメモリ制御方法を用いたプロセッサおよび情報処理装置 |
US5136714A (en) * | 1989-12-04 | 1992-08-04 | International Business Machines Corporation | Method and apparatus for implementing inter-processor interrupts using shared memory storage in a multi-processor computer system |
JP2826857B2 (ja) | 1989-12-13 | 1998-11-18 | 株式会社日立製作所 | キャッシュ制御方法および制御装置 |
US5123094A (en) | 1990-01-26 | 1992-06-16 | Apple Computer, Inc. | Interprocessor communications includes second CPU designating memory locations assigned to first CPU and writing their addresses into registers |
EP0444376B1 (en) | 1990-02-27 | 1996-11-06 | International Business Machines Corporation | Mechanism for passing messages between several processors coupled through a shared intelligent memory |
US5297269A (en) | 1990-04-26 | 1994-03-22 | Digital Equipment Company | Cache coherency protocol for multi processor computer system |
JPH0619759B2 (ja) * | 1990-05-21 | 1994-03-16 | 富士ゼロックス株式会社 | マルチプロセッサシステムにおける相互通信方法 |
US5276896A (en) | 1990-06-11 | 1994-01-04 | Unisys Corporation | Apparatus for implementing data communications between terminal devices and user programs |
JPH04119445A (ja) | 1990-09-11 | 1992-04-20 | Canon Inc | 計算機システム |
EP0490595B1 (en) * | 1990-12-14 | 1998-05-20 | Sun Microsystems, Inc. | Method for operating time critical processes in a window system environment |
JPH04367963A (ja) | 1991-06-15 | 1992-12-21 | Hitachi Ltd | 共有記憶通信方法 |
US5687342A (en) | 1991-09-18 | 1997-11-11 | Ncr Corporation | Memory range detector and translator |
US5727179A (en) | 1991-11-27 | 1998-03-10 | Canon Kabushiki Kaisha | Memory access method using intermediate addresses |
US5426748A (en) | 1992-01-03 | 1995-06-20 | International Business Machines Corporation | Guest/host extended addressing method and means with contiguous access list entries |
US5408629A (en) | 1992-08-13 | 1995-04-18 | Unisys Corporation | Apparatus and method for controlling exclusive access to portions of addressable memory in a multiprocessor system |
JPH06110781A (ja) | 1992-09-30 | 1994-04-22 | Nec Corp | キャッシュメモリ装置 |
EP0613088A1 (en) | 1993-02-24 | 1994-08-31 | Digital Equipment Corporation | Method of memory interleaving and memory systems interleaved thereby |
JP2809961B2 (ja) | 1993-03-02 | 1998-10-15 | 株式会社東芝 | マルチプロセッサ |
JPH06314264A (ja) | 1993-05-06 | 1994-11-08 | Nec Corp | セルフ・ルーティング・クロスバー・スイッチ |
US5499354A (en) | 1993-05-19 | 1996-03-12 | International Business Machines Corporation | Method and means for dynamic cache management by variable space and time binding and rebinding of cache extents to DASD cylinders |
US5652885A (en) | 1993-05-25 | 1997-07-29 | Storage Technology Corporation | Interprocess communications system and method utilizing shared memory for message transfer and datagram sockets for message control |
FR2707774B1 (fr) | 1993-07-15 | 1995-08-18 | Bull Sa | Procédé de gestion cohérente des échanges entre des niveaux d'une hiérarchie de mémoires à au moins trois niveaux. |
US5504874A (en) | 1993-09-29 | 1996-04-02 | Silicon Graphics, Inc. | System and method of implementing read resources to maintain cache coherency in a multiprocessor environment permitting split transactions |
WO1995025306A2 (en) | 1994-03-14 | 1995-09-21 | Stanford University | Distributed shared-cache for multi-processors |
US5530837A (en) | 1994-03-28 | 1996-06-25 | Hewlett-Packard Co. | Methods and apparatus for interleaving memory transactions into an arbitrary number of banks |
US5490280A (en) | 1994-03-31 | 1996-02-06 | Intel Corporation | Apparatus and method for entry allocation for a resource buffer |
JPH07281925A (ja) * | 1994-04-06 | 1995-10-27 | Fujitsu Ltd | マルチプロセッサシミュレーション装置 |
US5465336A (en) | 1994-06-30 | 1995-11-07 | International Business Machines Corporation | Fetch and store buffer that enables out-of-order execution of memory instructions in a data processing system |
US5555399A (en) * | 1994-07-07 | 1996-09-10 | International Business Machines Corporation | Dynamic idle list size processing in a virtual memory management operating system |
US5842226A (en) | 1994-09-09 | 1998-11-24 | International Business Machines Corporation | Virtual memory management for a microkernel system with multiple operating systems |
JP2783164B2 (ja) | 1994-09-14 | 1998-08-06 | 日本電気株式会社 | 通信網 |
US5717942A (en) | 1994-12-27 | 1998-02-10 | Unisys Corporation | Reset for independent partitions within a computer system |
US5689713A (en) | 1995-03-31 | 1997-11-18 | Sun Microsystems, Inc. | Method and apparatus for interrupt communication in a packet-switched computer system |
US5809539A (en) | 1995-04-27 | 1998-09-15 | Hitachi, Ltd. | Processor system having address allocation and address lock capability adapted for a memory comprised of synchronous DRAMs |
US5838955A (en) | 1995-05-03 | 1998-11-17 | Apple Computer, Inc. | Controller for providing access to a video frame buffer in split-bus transaction environment |
US5619471A (en) | 1995-06-06 | 1997-04-08 | Apple Computer, Inc. | Memory controller for both interleaved and non-interleaved memory |
US5925099A (en) * | 1995-06-15 | 1999-07-20 | Intel Corporation | Method and apparatus for transporting messages between processors in a multiple processor system |
US5852718A (en) | 1995-07-06 | 1998-12-22 | Sun Microsystems, Inc. | Method and apparatus for hybrid packet-switched and circuit-switched flow control in a computer system |
US5657390A (en) * | 1995-08-25 | 1997-08-12 | Netscape Communications Corporation | Secure socket layer application program apparatus and method |
US5590301A (en) | 1995-10-06 | 1996-12-31 | Bull Hn Information Systems Inc. | Address transformation in a cluster computer system |
US5940870A (en) | 1996-05-21 | 1999-08-17 | Industrial Technology Research Institute | Address translation for shared-memory multiprocessor clustering |
US5717897A (en) | 1996-09-09 | 1998-02-10 | Unisys Corporation | System for coordinating coherency of cache memories of multiple host computers of a distributed information system |
US6381668B1 (en) | 1997-03-21 | 2002-04-30 | International Business Machines Corporation | Address mapping for system memory |
US6092166A (en) * | 1997-04-30 | 2000-07-18 | International Business Machines Corporation | Cross-system data piping method using an external shared memory |
US5870589A (en) * | 1997-07-23 | 1999-02-09 | International Business Machines Corporation | Method for enhanced broadcast and unknown server operation |
US5935212A (en) * | 1997-08-07 | 1999-08-10 | I-Planet, Inc. | Connection-oriented session emulation |
US5894566A (en) * | 1997-09-26 | 1999-04-13 | Mci Communications Corporation | System and method for emulating network outages a segmented architecture |
US6366947B1 (en) * | 1998-01-20 | 2002-04-02 | Redmond Venture, Inc. | System and method for accelerating network interaction |
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 |
EP1145128B1 (en) | 1998-12-18 | 2003-10-29 | Unisys Corporation | A memory address translation system and method for a memory having multiple storage units |
US6658469B1 (en) * | 1998-12-18 | 2003-12-02 | Microsoft Corporation | Method and system for switching between network transport providers |
-
1998
- 1998-12-18 US US09/215,424 patent/US6314501B1/en not_active Expired - Lifetime
-
1999
- 1999-12-17 BR BR9916308-0A patent/BR9916308A/pt not_active Application Discontinuation
- 1999-12-17 WO PCT/US1999/030437 patent/WO2000036509A2/en active IP Right Grant
- 1999-12-17 EP EP99964305A patent/EP1145122B1/en not_active Expired - Lifetime
- 1999-12-17 DE DE69935805T patent/DE69935805T2/de not_active Expired - Fee Related
- 1999-12-17 CA CA002355065A patent/CA2355065C/en not_active Expired - Fee Related
- 1999-12-17 AT AT99964305T patent/ATE359550T1/de not_active IP Right Cessation
- 1999-12-17 JP JP2000588687A patent/JP2002532806A/ja active Pending
-
2001
- 2001-08-06 US US09/923,175 patent/US7571440B2/en not_active Expired - Fee Related
-
2006
- 2006-02-24 JP JP2006049063A patent/JP2006216068A/ja active Pending
Cited By (91)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004530196A (ja) * | 2001-03-08 | 2004-09-30 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 区分処理環境におけるリソース平衡化 |
US7644252B2 (en) | 2004-03-23 | 2010-01-05 | Nec Corporation | Multi-processor system and memory accessing method |
JP2008041093A (ja) * | 2006-08-01 | 2008-02-21 | Internatl Business Mach Corp <Ibm> | 多数の論理パーティションにわたって仮想入力/出力操作を分散させるためのシステム及び方法 |
JP2008152786A (ja) * | 2006-12-19 | 2008-07-03 | Internatl Business Mach Corp <Ibm> | データ処理システム内で1つまたは複数のエンドポイントの第1の物理機能から第2の物理機能に仮想機能を移行するための方法、プログラム、およびシステム(単一ルート・ステートレス仮想機能の移行のためのシステムおよび方法) |
JP2009003935A (ja) * | 2007-06-20 | 2009-01-08 | Nvidia Corp | 書込み操作を同報通信するためのシステム、方法、およびコンピュータプログラム製品 |
US8762620B2 (en) | 2007-12-27 | 2014-06-24 | Sandisk Enterprise Ip Llc | Multiprocessor storage controller |
US8386700B2 (en) | 2007-12-27 | 2013-02-26 | Sandisk Enterprise Ip Llc | Flash memory controller garbage collection operations performed independently in multiple flash memory groups |
US8621137B2 (en) | 2007-12-27 | 2013-12-31 | Sandisk Enterprise Ip Llc | Metadata rebuild in a flash memory controller following a loss of power |
US8959282B2 (en) | 2007-12-27 | 2015-02-17 | Sandisk Enterprise Ip Llc | Flash storage controller execute loop |
US8775717B2 (en) | 2007-12-27 | 2014-07-08 | Sandisk Enterprise Ip Llc | Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories |
US9483210B2 (en) | 2007-12-27 | 2016-11-01 | Sandisk Technologies Llc | Flash storage controller execute loop |
US9152556B2 (en) | 2007-12-27 | 2015-10-06 | Sandisk Enterprise Ip Llc | Metadata rebuild in a flash memory controller following a loss of power |
US9448743B2 (en) | 2007-12-27 | 2016-09-20 | Sandisk Technologies Llc | Mass storage controller volatile memory containing metadata related to flash memory storage |
US9158677B2 (en) | 2007-12-27 | 2015-10-13 | Sandisk Enterprise Ip Llc | Flash storage controller execute loop |
US9239783B2 (en) | 2007-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Multiprocessor storage controller |
JP2011508349A (ja) * | 2007-12-27 | 2011-03-10 | プライアント テクノロジー インコーポレイテッド | プロセッサを内部メモリに接続するクロスバー・スイッチを含むフラッシュメモリ用ストレージコントローラ |
US8959283B2 (en) | 2007-12-27 | 2015-02-17 | Sandisk Enterprise Ip Llc | Flash storage controller execute loop |
US8910020B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | Intelligent bit recovery for flash memory |
US8909982B2 (en) | 2011-06-19 | 2014-12-09 | Sandisk Enterprise Ip Llc | System and method for detecting copyback programming problems |
US8938658B2 (en) | 2011-11-07 | 2015-01-20 | Sandisk Enterprise Ip Llc | Statistical read comparison signal generation for memory systems |
US9058289B2 (en) | 2011-11-07 | 2015-06-16 | Sandisk Enterprise Ip Llc | Soft information generation for memory systems |
US8954822B2 (en) | 2011-11-18 | 2015-02-10 | Sandisk Enterprise Ip Llc | Data encoder and decoder using memory-specific parity-check matrix |
US9048876B2 (en) | 2011-11-18 | 2015-06-02 | Sandisk Enterprise Ip Llc | Systems, methods and devices for multi-tiered error correction |
US8924815B2 (en) | 2011-11-18 | 2014-12-30 | Sandisk Enterprise Ip Llc | Systems, methods and devices for decoding codewords having multiple parity segments |
US9699263B1 (en) | 2012-08-17 | 2017-07-04 | Sandisk Technologies Llc. | Automatic read and write acceleration of data accessed by virtual machines |
US9501398B2 (en) | 2012-12-26 | 2016-11-22 | Sandisk Technologies Llc | Persistent storage device with NVRAM for staging writes |
US9612948B2 (en) | 2012-12-27 | 2017-04-04 | Sandisk Technologies Llc | Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device |
US9239751B1 (en) | 2012-12-27 | 2016-01-19 | Sandisk Enterprise Ip Llc | Compressing data from multiple reads for error control management in memory systems |
US9454420B1 (en) | 2012-12-31 | 2016-09-27 | Sandisk Technologies Llc | Method and system of reading threshold voltage equalization |
US9003264B1 (en) | 2012-12-31 | 2015-04-07 | Sandisk Enterprise Ip Llc | Systems, methods, and devices for multi-dimensional flash RAID data protection |
US9329928B2 (en) | 2013-02-20 | 2016-05-03 | Sandisk Enterprise IP LLC. | Bandwidth optimization in a non-volatile memory system |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
US9244763B1 (en) | 2013-03-15 | 2016-01-26 | Sandisk Enterprise Ip Llc | System and method for updating a reading threshold voltage based on symbol transition information |
US9367246B2 (en) | 2013-03-15 | 2016-06-14 | Sandisk Technologies Inc. | Performance optimization of data transfer for soft information generation |
US9092350B1 (en) | 2013-03-15 | 2015-07-28 | Sandisk Enterprise Ip Llc | Detection and handling of unbalanced errors in interleaved codewords |
US9236886B1 (en) | 2013-03-15 | 2016-01-12 | Sandisk Enterprise Ip Llc | Universal and reconfigurable QC-LDPC encoder |
US9009576B1 (en) | 2013-03-15 | 2015-04-14 | Sandisk Enterprise Ip Llc | Adaptive LLR based on syndrome weight |
US10049037B2 (en) | 2013-04-05 | 2018-08-14 | Sandisk Enterprise Ip Llc | Data management in a storage system |
US9170941B2 (en) | 2013-04-05 | 2015-10-27 | Sandisk Enterprises IP LLC | Data hardening in a storage system |
US9159437B2 (en) | 2013-06-11 | 2015-10-13 | Sandisk Enterprise IP LLC. | Device and method for resolving an LM flag issue |
US9524235B1 (en) | 2013-07-25 | 2016-12-20 | Sandisk Technologies Llc | Local hash value generation in non-volatile data storage systems |
US9043517B1 (en) | 2013-07-25 | 2015-05-26 | Sandisk Enterprise Ip Llc | Multipass programming in buffers implemented in non-volatile data storage systems |
US9384126B1 (en) | 2013-07-25 | 2016-07-05 | Sandisk Technologies Inc. | Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems |
US9639463B1 (en) | 2013-08-26 | 2017-05-02 | Sandisk Technologies Llc | Heuristic aware garbage collection scheme in storage systems |
US9235509B1 (en) | 2013-08-26 | 2016-01-12 | Sandisk Enterprise Ip Llc | Write amplification reduction by delaying read access to data written during garbage collection |
US9361221B1 (en) | 2013-08-26 | 2016-06-07 | Sandisk Technologies Inc. | Write amplification reduction through reliable writes during garbage collection |
US9442670B2 (en) | 2013-09-03 | 2016-09-13 | Sandisk Technologies Llc | Method and system for rebalancing data stored in flash memory devices |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9158349B2 (en) | 2013-10-04 | 2015-10-13 | Sandisk Enterprise Ip Llc | System and method for heat dissipation |
US9323637B2 (en) | 2013-10-07 | 2016-04-26 | Sandisk Enterprise Ip Llc | Power sequencing and data hardening architecture |
US9298608B2 (en) | 2013-10-18 | 2016-03-29 | Sandisk Enterprise Ip Llc | Biasing for wear leveling in storage systems |
US9436831B2 (en) | 2013-10-30 | 2016-09-06 | Sandisk Technologies Llc | Secure erase in a memory device |
US9263156B2 (en) | 2013-11-07 | 2016-02-16 | Sandisk Enterprise Ip Llc | System and method for adjusting trip points within a storage device |
US9244785B2 (en) | 2013-11-13 | 2016-01-26 | Sandisk Enterprise Ip Llc | Simulated power failure and data hardening |
US9152555B2 (en) | 2013-11-15 | 2015-10-06 | Sandisk Enterprise IP LLC. | Data management with modular erase in a data storage system |
US9703816B2 (en) | 2013-11-19 | 2017-07-11 | Sandisk Technologies Llc | Method and system for forward reference logging in a persistent datastore |
US9520197B2 (en) | 2013-11-22 | 2016-12-13 | Sandisk Technologies Llc | Adaptive erase of a storage device |
US9122636B2 (en) | 2013-11-27 | 2015-09-01 | Sandisk Enterprise Ip Llc | Hard power fail architecture |
US9520162B2 (en) | 2013-11-27 | 2016-12-13 | Sandisk Technologies Llc | DIMM device controller supervisor |
US9280429B2 (en) | 2013-11-27 | 2016-03-08 | Sandisk Enterprise Ip Llc | Power fail latching based on monitoring multiple power supply voltages in a storage device |
US9250676B2 (en) | 2013-11-29 | 2016-02-02 | Sandisk Enterprise Ip Llc | Power failure architecture and verification |
US9092370B2 (en) | 2013-12-03 | 2015-07-28 | Sandisk Enterprise Ip Llc | Power failure tolerant cryptographic erase |
US9235245B2 (en) | 2013-12-04 | 2016-01-12 | Sandisk Enterprise Ip Llc | Startup performance and power isolation |
US9129665B2 (en) | 2013-12-17 | 2015-09-08 | Sandisk Enterprise Ip Llc | Dynamic brownout adjustment in a storage device |
US9549457B2 (en) | 2014-02-12 | 2017-01-17 | Sandisk Technologies Llc | System and method for redirecting airflow across an electronic assembly |
US9703636B2 (en) | 2014-03-01 | 2017-07-11 | Sandisk Technologies Llc | Firmware reversion trigger and control |
US9519319B2 (en) | 2014-03-14 | 2016-12-13 | Sandisk Technologies Llc | Self-supporting thermal tube structure for electronic assemblies |
US9348377B2 (en) | 2014-03-14 | 2016-05-24 | Sandisk Enterprise Ip Llc | Thermal isolation techniques |
US9485851B2 (en) | 2014-03-14 | 2016-11-01 | Sandisk Technologies Llc | Thermal tube assembly structures |
US9454448B2 (en) | 2014-03-19 | 2016-09-27 | Sandisk Technologies Llc | Fault testing in storage devices |
US9448876B2 (en) | 2014-03-19 | 2016-09-20 | Sandisk Technologies Llc | Fault detection and prediction in storage devices |
US9390814B2 (en) | 2014-03-19 | 2016-07-12 | Sandisk Technologies Llc | Fault detection and prediction for data storage elements |
US9626400B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Compaction of information in tiered data structure |
US9390021B2 (en) | 2014-03-31 | 2016-07-12 | Sandisk Technologies Llc | Efficient cache utilization in a tiered data structure |
US9626399B2 (en) | 2014-03-31 | 2017-04-18 | Sandisk Technologies Llc | Conditional updates for reducing frequency of data modification operations |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US8891303B1 (en) | 2014-05-30 | 2014-11-18 | Sandisk Technologies Inc. | Method and system for dynamic word line based configuration of a three-dimensional memory device |
US9703491B2 (en) | 2014-05-30 | 2017-07-11 | Sandisk Technologies Llc | Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US9093160B1 (en) | 2014-05-30 | 2015-07-28 | Sandisk Technologies Inc. | Methods and systems for staggered memory operations |
US9070481B1 (en) | 2014-05-30 | 2015-06-30 | Sandisk Technologies Inc. | Internal current measurement for age measurements |
US10656842B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10114557B2 (en) | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US9645749B2 (en) | 2014-05-30 | 2017-05-09 | Sandisk Technologies Llc | Method and system for recharacterizing the storage density of a memory device or a portion thereof |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US9443601B2 (en) | 2014-09-08 | 2016-09-13 | Sandisk Technologies Llc | Holdup capacitor energy harvesting |
US9928185B2 (en) | 2015-01-30 | 2018-03-27 | Fujitsu Limited | Information processing apparatus and computer-readable recording medium having program recorded therein |
Also Published As
Publication number | Publication date |
---|---|
WO2000036509A3 (en) | 2001-04-19 |
EP1145122A2 (en) | 2001-10-17 |
JP2006216068A (ja) | 2006-08-17 |
BR9916308A (pt) | 2001-12-11 |
US6314501B1 (en) | 2001-11-06 |
US20030037178A1 (en) | 2003-02-20 |
WO2000036509A2 (en) | 2000-06-22 |
EP1145122B1 (en) | 2007-04-11 |
DE69935805D1 (de) | 2007-05-24 |
CA2355065A1 (en) | 2000-06-22 |
DE69935805T2 (de) | 2007-12-27 |
ATE359550T1 (de) | 2007-05-15 |
US7571440B2 (en) | 2009-08-04 |
CA2355065C (en) | 2004-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6314501B1 (en) | 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 | |
US6785892B1 (en) | Communications between partitioned host processors and management processor | |
US9747134B2 (en) | RDMA (remote direct memory access) data transfer in a virtual environment | |
JP3606551B2 (ja) | 割込アーキテクチャを含むデータ処理システム、方法および記憶媒体 | |
TW544589B (en) | Loosely coupled-multi processor server | |
US6163834A (en) | Two level address translation and memory registration system and method | |
JP4012545B2 (ja) | リモート・ダイレクト・メモリ・アクセス対応ネットワーク・インタフェース・コントローラのスイッチオーバーとスイッチバックのサポート | |
US8521912B2 (en) | Method and system for direct device access | |
US7003586B1 (en) | Arrangement for implementing kernel bypass for access by user mode consumer processes to a channel adapter based on virtual address mapping | |
US8850098B2 (en) | Direct memory access (DMA) address translation between peer input/output (I/O) devices | |
US20050081202A1 (en) | System and method for task queue management of virtual devices using a plurality of processors | |
US20020169938A1 (en) | Remote address translation in a multiprocessor system | |
US6950945B2 (en) | Apparatus and method for intersystem lock optimization | |
CN1667601A (zh) | 在逻辑分区之间共享网络i/o适配器的装置与方法 | |
CN113495795A (zh) | 一种进程间通信方法及相关设备 | |
WO2002041157A2 (en) | Method and apparatus for converting address information between pci bus protocol and a message passing queue-oriented bus protocol | |
US8006252B2 (en) | Data processing system with intercepting instructions | |
US7039692B2 (en) | Method and apparatus for maintaining profiles for terminals in a configurable data processing system | |
EP1145128B1 (en) | A memory address translation system and method for a memory having multiple storage units | |
WO2005036313A2 (en) | Queue register configuration structure | |
JP3375649B2 (ja) | 並列計算機 | |
US20240211392A1 (en) | Buffer allocation | |
Whitcroft et al. | The CBIC: Architectural support for message passing | |
CN117170854A (zh) | 一种内存访问方法及相关设备 | |
Liaaen et al. | Dolphin SCI Adapter Cards. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050329 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050622 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20050622 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20051111 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060209 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20060209 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20060209 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20060310 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20060901 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090304 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090309 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090406 |