JP4634548B2 - マルチプロセッサコンピュータシステム及びその動作方法 - Google Patents

マルチプロセッサコンピュータシステム及びその動作方法 Download PDF

Info

Publication number
JP4634548B2
JP4634548B2 JP35066198A JP35066198A JP4634548B2 JP 4634548 B2 JP4634548 B2 JP 4634548B2 JP 35066198 A JP35066198 A JP 35066198A JP 35066198 A JP35066198 A JP 35066198A JP 4634548 B2 JP4634548 B2 JP 4634548B2
Authority
JP
Japan
Prior art keywords
instance
memory
partition
cpu
page
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.)
Expired - Fee Related
Application number
JP35066198A
Other languages
English (en)
Other versions
JP2000132530A (ja
Inventor
エル ノエル カレン
ベンソン トーマス
エイチ ジョーダン グレゴリー
アール コーフマン ジェームズ
エイチ メイソン アンドリュー
ケイ ハーター ジュニア ポール
エイ ビショップ リチャード
ジー クラインソーガ フレデリック
エフ シャロン スティーヴン
エイチ ザレウスキー スティーヴン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US09/095,266 external-priority patent/US6199179B1/en
Priority claimed from US09/095,521 external-priority patent/US6542926B2/en
Priority claimed from US09/095,379 external-priority patent/US6381682B2/en
Priority claimed from US09/095,264 external-priority patent/US6332180B1/en
Priority claimed from US09/095,265 external-priority patent/US6260068B1/en
Priority claimed from US09/095,543 external-priority patent/US6647508B2/en
Priority claimed from US09/095,368 external-priority patent/US6633916B2/en
Priority claimed from US09/095,277 external-priority patent/US20020016891A1/en
Priority claimed from US09/090,027 external-priority patent/US6226734B1/en
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JP2000132530A publication Critical patent/JP2000132530A/ja
Application granted granted Critical
Publication of JP4634548B2 publication Critical patent/JP4634548B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

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)
  • Hardware Redundancy (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、プロセッサ及び他のコンピュータハードウェアリソースが区画においてグループ編成され、その各々がオペレーティングシステムインスタンスを有するようなマルチプロセッサコンピュータアーキテクチャに係る。
【0002】
【従来の技術】
現在の計算環境における多数のアプリケーションの効率的な動作は、高速で、パワフルなそして融通性のある計算システムによって左右される。このようなシステムの構成及び設計は、多数の個別の部門や、多数の異なる問題形式や、常時変化する計算ニーズが存在する「事業的」商業環境にこのようなシステムを使用すべきときには非常に複雑なものとなる。このような環境のユーザは、一般に、システムの容量、その速度及びその構成を迅速且つ容易に変更できることを希望する。又、ユーザは、システム上でのアプリケーションプログラムの実行を停止せずにリソースの良好な使用を達成するためにシステムの作業容量を拡張しそして構成を変更することも希望する。更に、ユーザは、リソースの利用性が最大になるようにシステムを構成して各アプリケーションに最適な計算構成をもたせるようにすることも希望する。
【0003】
【発明が解決しようとする課題】
従来、計算速度は、データ、ビジネスロジック及びグラフィックユーザインターフェイスが別々の接続体であって、各接続体に専用の特定の計算リソースを有するような「何も共用しない」計算アーキテクチャを使用することにより対処されている。最初は、単一の中央処理ユニットが使用され、そしてこの単一の中央処理ユニットのクロックレートを高めることによりこのような計算システムのパワー及び速度が増加された。最近、1つの大きさプロセッサが単独で動作するのではなく、チームとして動作する多数のプロセッサを使用する計算システムが開発されている。このように、複雑なアプリケーションが単一のプロセッサにより実行されるのを待機するのではなく、それを多数のプロセッサ間に分散させることができる。このようなシステムは、一般に、単一のオペレーティングシステムにより制御される多数の中央処理ユニット(CPU)で構成される。「系統的多処理」又はSMPと称するマルチプロセッサシステムの形態においては、アプリケーションが全てのプロセッサにわたって等しく分散される。プロセッサはメモリも共用する。「非系統的多処理」又はAMPと称する別の態様においては、1つのプロセッサが「マスター」として働き、そして他の全てのプロセッサが「スレーブ」として働く。それ故、オペレーティングシステムを含む全てのオペレーションは、マスターを通った後にスレーブプロセッサへ通されねばならない。これら多処理アーキテクチャは、付加的なプロセッサを追加することにより性能を高められるという利点を有するが、このようなシステムで実行されるソフトウェアは多数のプロセッサの利点を取り入れるために入念に書き込まれねばならず、そしてプロセッサの数が増加するにつれてソフトウェアを拡張することが困難であるという欠点もある。現在の商業的なワークロードは、単一SMPシステムとして8ないし24個のCPUを越えて拡張することができず、その厳密な数は、プラットフォーム、オペレーティングシステム及びアプリケーションの混合によって左右される。
【0004】
性能を高めることについては、コンピュータリソース(マシン)をあるアプリケーション専用としてマシンリソースをそのアプリケーションに最適に同調する別の典型的な回答がある。しかしながら、異なる売主により開発された多数のアプリケーション及び別々のデータベースがほとんどの場所にあるために、大部分のユーザはこのような解決策を採用していない。それ故、特に、アプリケーションの混合体が常時変化するような環境においては全てのアプリケーションの間でリソースを専用化することは困難であり且つ経費がかかる。更に、専用リソースでは、特に異なる売り主が含まれる場合、リソースをあるコンピュータシステムから別のコンピュータシステムへ迅速且つ容易に移動することが本質的に不可能である。たとえこのような移動を実行することができても、通常、システムアドミニストレータの介在を伴い、少なくとも幾つかのコンピュータシステムをパワーダウンして再ブートすることが必要となる。
【0005】
或いは又、コンピュータにおけるリソースのサブセットを特定のアプリケーションに使用できるように、コンピュータシステムをハードウェアで区画化することもできる。この解決策は、区画を変更できるのでリソースの永久的な専用化を回避するが、区画間のリソースの負荷バランス及びリソースの利用性により性能改善に関する問題は依然として残される。
利用性及びメンテナンス性の問題は、ほとんどのリソースを含む大きな集中型の頑丈なサーバが、多数の小さな複雑でないクライエントネットワークコンピュータとネットワーク形成されてそれらにサービスするような「全てを共用する」モデルによって対処されている。或いは、各システム即ち「 ノード」 がそれ自身のメモリを有しそしてそれ自身のオペレーティングシステムによって制御されるような「クラスター」が使用される。システムは、ディスクを共用しそしてある形式の通信ネットワークを経てそれらの間にメッセージを通すことにより対話する。クラスターシステムは、付加的なシステムをクラスターに容易に追加できるという利点を有する。しかしながら、ネットワーク及びクラスターは、共用メモリが欠乏し、そして相互接続帯域巾に限度があって、性能上制限を課するという悩みがある。
【0006】
多くの事業用計算環境においては、2つの別々の計算モデルを同時に受け入れて、各モデルを最適化しなければならないことが明らかである。更に、いずれのシステムも再ブートせずに「オンザフライ」でコンピュータ構成を変更できることも強く要望される。このような受け入れを試みるために多数の公知解決策が使用されている。例えば、ニューヨーク州、アーモンクのインターナショナル・ビジネス・マシン・コーポレーションにより開発されて市場に出された「バーチャルマシン」又はVMと称する設計は、多数のバーチャルマシンを模擬するソフトウェアと組み合わせて1つ以上の物理的なプロセッサを伴う単一の物理的なマシンを使用している。これらバーチャルマシンの各々は、原理的に、その基礎となるリアルコンピュータの全ての物理的リソースにアクセスする。各バーチャルマシンへのリソースの指定は、「ハイパーバイザー」と称するプログラムによって制御される。システムには1つのハイパーバイザーしかなく、そしてそれは、全ての物理的なリソースを受け持つ。従って、他のオペレーティングシステムではなく、ハイパーバイザーが物理的ハードウェアの割り当てを取り扱う。ハイパーバイザーは、他のオペレーティングシステムからのリソースの要求をインターセプトし、そしてそれらの要求を全体的に正しいやり方で取り扱う。
【0007】
VMアーキテクチャは、「論理的区画」即ちLPARの概念をサポートする。
各LPARは、その区画に論理的に指定された使用可能な物理的CPU及びリソースの幾つかを含む。同じリソースを2つ以上の区画に指定することができる。
LPARは、アドミニストレータにより静的に設定されるが、負荷の変化に動的に、且つ再ブートを伴わずに、多数の仕方で応答し得る。例えば、各々10個のCPUを含む2つの論理的な区画が、10個の物理的CPUを含む物理的システムに共用され、そして論理的な10個のCPUの区画が相補的なピーク負荷を有する場合には、ワークロードがシフトするときに再ブート又はオペレータの介入を伴わずに各区画が物理的な10個のCPUのシステム全体を引き継ぐことができる。
【0008】
更に、各区画に論理的に指定されたCPUは、通常のオペレーティングシステムのオペレータコマンドによって再ブートを伴わずに動的にターン「オン」及び「オフ」にすることができる。唯一の制約は、システムの初期化時にアクティブなCPUの数が、任意の区画においてターン「オン」することのできるCPUの最大数である点である。
更に、全ての区画の全体的なワークロード需要が、物理的なシステムによって供給できるもの以上になる場合には、LPARの重みを使用して、全CPUリソースのいかに多くを各区画に与えるかを定めることができる。これらの重みは、何ら障害を伴わずにオペレータがオンザフライで変更することができる。
別の公知システムは、「パラレルシスプレックス(Parallel Sysplex)」と称するもので、これも、インターナショナル・ビジネス・マシン・コーポレーションにより開発されて市場に出されたものである。このアーキテクチャは、各CPUに取り付けられる「カプリング・ファシリティ」と称するハードウェアエンティティを経てクラスター化された1組のコンピュータで構成される。各ノードにおけるカプリング・ファシリティは光ファイバリンクを経て接続され、そして各ノードは、最大10個のCPUを伴う従来のSMPマシンとして働く。あるCPU命令は、カプリング・ファシリティを直接的にインボークする。例えば、あるノードは、カプリング・ファシリティと共にデータ構造体を登録し、次いで、カプリング・ファシリティは、各ノードのローカルメモリ内でデータ構造体をコヒレントに維持するように注意を払う。
【0009】
カリフォルニア州、マウンテンビューのサン・マイクロシステムズにより開発されて市場に出されたエンタープライズ10000ユニックスサーバは、「ダイナミック・システム・ドメインズ」と称する区画化構成体を使用して、単一物理的サーバのリソースを、各々スタンドアローンサーバとして動作する多数の区画即ちドメインへと論理的に分割する。各区画は、CPU、メモリ及びI/Oハードウェアを有する。動的な再構成は、システムアドミニストレータが、再ブートを伴わずにドメインをオンザフライで形成し、サイズ変更し又は削除することができるようにする。各ドメインは、システム内の他のドメインから論理的に分離されたままであり、他のドメインにより発生されるソフトウェアエラー、或いはCPU、メモリ又はI/Oエラーからそれを完全に分離する。いずれのドメイン間でもリソースの共用はない。
【0010】
スタンフォード大学で行われたハイブプロジェクト(Hive Project)は、1組のセルとして構成されたアーキテクチャを使用している。システムがブートするときに、各セルには、実行全体にわたってそれが所有するある範囲のノードが指定される。各セルは、あたかもそれが独立したオペレーティングシステムであるかのように、これらノードにおけるプロセッサ、メモリ及びI/Oデバイスを管理する。これらのセルは、ユーザレベルプロセスに単一システムの幻覚を与えるように協働する。
ハイブセルは、それらのリソースをローカル要求とリモート要求との間でいかに分割するかを決定する役目を負わない。各セルは、その内部リソースを維持しそしてそれが割り当てられたりソース内で性能を最適化するという役目のみを果たす。全体的なリソース割り当ては、「ワックス(wax) 」と称するユーザレベルプロセスにより行われる。ハイブシステムは、セル間にある欠陥含有境界を使用することによりデータの崩壊を防止するように試みる。セル間の欠陥含有境界にも拘わらずマルチプロセッサシステムから予想される緊密な共用を実施するために、種々のセルカーネルの協働によりリソース共用が実施されるが、そのポリシーは、ワックスプロセスにおいてカーネルの外部で実施される。メモリ及びプロセッサの両方を共用することができる。
【0011】
カリフォルニア州、マウンテンビューのシリコン・グラフィックス・インクにより開発されて市場に出された「セルラーIRIX」と称するシステムは、従来の系統的な多処理システムを拡張することによってモジュラー計算をサポートする。セルラーIRIXアーキテクチャは、全体的なカーネルテキスト及びデータを最適なSMPサイズのチャンク即ち「セル」へと分散する。セルは、1つ以上のマシンモジュールより成る制御ドメインを表わし、各モジュールは、プロセッサ、メモリ及びI/Oより成る。これらセルにおいて実行されるアプリケーションは、オペレーティングシステムテキスト及びカーネルデータ構造体のローカルコピーを含むローカルオペレーティングシステムサービスの全セットに大きく依存し、オペレーティングシステムの1つのインスタンスのみが全システムに存在する。セル間整合は、アプリケーションイメージが、データコピー又は余計なコンテクストスイッチのオーバーヘッドを被ることなく他のセルからの処理、メモリ及びI/Oリソースを直接的及び透過的に利用できるようにする。
【0012】
オレゴン州、ビューバートンのシーケント・コンピュータ・システム・インクにより開発されて市場に出されたNUMA―Qと称する別の既存のアーキテクチャは、メモリの一部分当たり4つのプロセッサのグループ即ち「クオド」を、NUMA−Q SMPノードのための基本的なビルディングブロックとして使用している。各クオドにI/Oを追加すると、性能が更に改善される。それ故、NUMA―Qアーキテクチャは、物理的メモリを分散するだけでなく、所定数のプロセッサ及びPCIスロットを各プロセッサの次に入れる。各クオドのメモリは、慣例的な意味のローカルメモリではない。むしろ、これは、物理的なメモリアドレス空間の一部分であり、特定のアドレス範囲を有する。アドレスマップは、メモリにわたって均一に分割され、各クオドはアドレス空間の隣接部分を含む。オペレーティングシステムの1つのコピーのみが実行され、そしていずれのSMPシステムの場合とも同様に、それはメモリにあって、1つ以上のプロセッサにおいて区別なく同時にプロセスを実行する。
【0013】
従って、融通性のあるコンピュータシステムを提供するために多数の試みがなされているが、既存のシステムは、どれも、著しい欠点を有する。それ故、改良された融通性、リソース利用性、リソース移動能力及び拡張性を与える新規なコンピュータシステム設計をもつことが要望される。
【0014】
【課題を解決するための手段】
本発明は、プロセッサ、メモリ及びI/O回路を含む複数の指定可能なシステムリソースを有するコンピュータシステムに関する。このコンピュータシステムは、各プロセッサが全てのメモリ及び少なくともあるI/O回路に電気的にアクセスするように、プロセッサ、メモリ及びI/O回路を電気的に相互接続するための相互接続メカニズムと;少なくとも1つのプロセッサ、あるメモリ及びあるI/O回路を各々含む複数の区画に上記指定可能なシステムリソースを指定するためのソフトウェアメカニズムと;各区画において実行されるオペレーティングシステムインスタンスとを備えたことを特徴とする。
本発明は、プロセッサ、メモリ及びI/O回路を含む複数の指定可能なシステムリソースを有するコンピュータシステムを動作する方法として実施することができる。この方法は、各プロセッサが全てのメモリ及び少なくともあるI/O回路に電気的にアクセスするように、プロセッサ、メモリ、及びI/O回路を電気的に相互接続し;少なくとも1つのプロセッサ、あるメモリ及びあるI/O回路を各々含む複数の区画に上記指定可能なシステムリソースを指定し;そして各区画においてオペレーティングシステムインスタンスを実行するという段階を備えたことを特徴とする。
【0015】
【発明の実施の形態】
本発明の上記及び更に別の効果は、添付図面を参照した以下の詳細な説明から良く理解されよう。
A.全システム
本発明の原理により構成されたコンピュータプラットホームは、オペレーティングシステムソフトウェアの多数のインスタンスを同時に実行できるように区画化することのできるマルチプロセッサシステムである。このシステムは、そのメモリ、CPU及びI/Oサブシステムを区画化するためのハードウェアサポートを必要としないが、あるハードウェアを使用して、欠陥を分離しそしてソフトウェアエンジニアリングのコストを最小にするための付加的なハードウェア支援を与えることもできる。本発明のソフトウェアアーキテクチャをサポートするのに必要なインターフェイス及びデータ構造体を以下に説明する。ここに述べるインターフェイス及びデータ構造体は、特定のオペレーティングシステムを使用しなければならないことを意味するものでもないし、又、単一形式のオペレーティングシステムのみが同時に実行することを意味するものでもない。以下に述べるソフトウェア要件を実施するオペレーティングシステムは、本発明のシステムオペレーションに関与することができる。
【0016】
システムビルディングブロック
本発明のソフトウェアアーキテクチャは、多数のCPU、メモリ及びI/Oハードウェアを組み込んだハードウェアプラットホームにおいて動作する。図1に示すようなモジュラーアーキテクチャを使用するのが好ましいが、他のアーキテクチャも使用できることが当業者に明らかであり、これらのアーキテクチャは、モジュラーである必要がない。図1は、4つの基本的なシステムビルディングブロック(SBB)100―106で構成されたコンピュータシステムを示す。ここに示す実施形態では、ブロック100のような各ビルディングブロックは同一のものであり、多数のCPU108―114と、多数のメモリスロット(メモリ120として集合的に示されている)と、I/Oプロセッサ118と、システムを別のシステムに接続できるスイッチ(図示せず)を含むポート116とを備えている。しかしながら、他の実施形態では、ビルディングブロックは、同一である必要はない。所望数のシステムビルディングブロックをそれらのポートにより接続することにより大きなマルチプロセッサシステムを構成することができる。バス技術ではなく、スイッチ技術を使用して、ビルディングブロック要素を接続し、改良された帯域巾が得られると共に、非均一なメモリアーキテクチャ(NUMA)を得ることができる。
【0017】
本発明の原理によれば、ハードウェアスイッチは、ライン122で概略的に示すように構成されたビルディングブロックの数に拘わりなく各CPUが使用可能な全てのメモリ及びI/Oポートをアドレスできるように構成される。更に、全てのCPUは、プロセッサ間割り込みのような従来のメカニズムによって全てのSBBのいずれかの又は全ての他のCPUと通信することができる。従って、CPU及び他のハードウェアリソースは、ソフトウェアのみに関連することができる。このようなプラットホームアーキテクチャは、本来拡張可能であり、多量の処理能力、メモリ及びI/Oを単一のコンピュータで得ることができる。
ソフトウェアの観点から本発明の原理に基づいて構成されたAPMPコンピュータシステム200が図2に示されている。このシステムでは、多数のオペレーティングシステムインスタンス208、210、212を同時に実行できるようにハードウェア要素が割り当てられている。好ましい実施形態では、この割り当ては、「コンソール」プログラムと称するソフトウェアプログラムにより実行され、これは、以下で詳細に述べるように、パワーアップ時にメモリにロードされる。コンソールプログラムは、プログラム213、215及び217として図2に概略的に示されている。コンソールプログラムは、既存のアドミニストレーティブプログラム又は個別のプログラムの変形であって、これは、オペレーティングシステムと対話して好ましい実施形態のオペレーションを制御する。コンソールプログラムは、システムリソースを仮想化せず、即ち実行中のオペレーティングシステム208、210及び212と、メモリ及びI/Oユニット(図2には示さず)のような物理的なハードウェアとの間にソフトウェアレイヤを形成しない。又、同じハードウェアにアクセスするために、実行中のオペレーティングシステム208、210及び212がスワップされる状態もない。むしろ、本発明のシステムは、ハードウェアを区画へと論理的に分割する。オペレーティングシステムインスタンス208、210及び212の役割は、リソースを適切に使用して、リソース割り当て及び共用の整合を与えることである。ハードウェアプラットホームは、リソースを分割するためのハードウェア支援を任意に与えることができ、そしてオペレーティングシステムがメモリを崩壊したり或いは別のオペレーティングシステムコピーにより制御されるデバイスに悪影響を及ぼすおそれを最小にするための欠陥バリアを与えることもできる。
【0018】
コピー208のようなオペレーティングシステムの単一のコピーに対する実行環境は「区画」202と称され、そして区画202における実行中のオペレーティングシステム208は、「インスタンス」208と称される。各オペレーティングシステムインスタンスは、コンピュータシステムにおける他の全てのオペレーティングシステムインスタンスとは独立してブート及び実行することができ、そして以下に述べるように、オペレーティングシステムインスタンス間でにリソースの共用に協働的に参加することができる。
オペレーティングシステムインスタンスを実行するために、区画は、ハードウェア再スタートパラメータブロック(HWRPB)と、コンソールプログラムのコピーと、ある量のメモリと、1つ以上のCPUと、コンソールに対する専用の物理的ポートをもたねばならない少なくとも1つのI/Oバスとを含まねばならない。HWRPBは、コンソールプログラムとオペレーティングシステムとの間に通される構成ブロックである。コンソールプログラム213、215及び217の各々は、ポート214、216及び218として各々示されたコンソールポートに接続される。ポート214、216及び218のようなコンソールポートは、一般的に、シリアルラインポート、又は取り付けられるグラフィックス、キーボード及びマウスオプションの形態である。本発明のコンピュータシステムの説明上、専用のグラフィックポート及び関連入力デバイスをサポートする能力は必要とされないが、特定のオペレーティングシステムはそれを必要とする。各区画に対してシリアルポートで充分であるというように基本的に仮定する。個別のターミナル又は独立したグラフィックコンソールを用いて、各コンソールにより発生された情報を表示できるが、ワークステーション、PC又はLAT228に取り付けられた単一のマルチプレクサ226にシリアルライン220、222及び224を全て接続してコンソール情報を表示できるのが好ましい。
【0019】
区画は、システムビルディングブロックと同意語ではないことに注意するのが重要である。例えば、区画202は、図1のビルディングブロック100及び106のハードウェアを構成するが、区画204及び206は、各々、ビルディングブロック102及び104のハードウェアを構成してもよい。又、区画は、ビルディングブロックのハードウェアの一部分を含んでもよい。
区画は、「初期化」或いは「非初期化」することができる。初期化された区画は、オペレーティングシステムインスタンスを実行するのに充分なリソースを有し、イメージロードされたコンソールプログラムと、使用可能で且つ実行を行う一次CPUとを有する。初期化された区画は、コンソールプログラムの制御下にあってもよいし、或いはオペレーティングシステムインスタンスを実行してもよい。初期化された状態においては、区画は、それに指定されたハードウェア要素の完全な所有権及び制御権を有し、そして区画それ自体だけがその要素を解除できる。
【0020】
本発明の原理によれば、リソースは、1つの初期化された区画から別の区画へ再指定することができる。リソースの再指定は、リソースが現在指定されている初期化された区画でしか実行できない。ある区画が非初期化状態にあるときは、他の区画は、そのハードウェア要素を再指定したり、それを削除したりすることができる。
非初期化の区画とは、コンソールプログラム又はオペレーティングシステムの制御下で実行する一次CPUをもたない区画である。例えば、ある区画は、パワーアップ時に一次CPUを実行するに充分なリソースがないために非初期化とされるか、又はシステムアドミニストレータがコンピュータシステムを再構成するときに非初期化とされる。非初期化状態にあるときは、ある区画は、そのハードウェア要素を再指定することもできるし、その区画を別の区画によって削除することもできる。非指定のリソースは、いずれの区画によって指定することもできる。区画は、協働リソース共用を許すために個別の実行コンテクストをグループ分けするための基礎となる「コミュニティ」に編成することができる。同じコミュニティ内の区画は、リソースを共用することができる。同じコミュニティ内にない区画は、リソースを共用できない。リソースは、同じコミュニティにない区画間では、システムアドミニストレータによりリソースを指定解除し(及び使用を停止し)そしてリソースを手動で再構成することによって手動で移動するしかない。コミュニティは、独立したオペレーティングシステムドメインを形成したり、又はハードウェア使用のためのユーザポリシーを実施したりするのに使用できる。図2において、区画202及び204は、コミュニティ230へと編成されている。区画206は、それ自身のコミュニティ205にある。これらのコミュニティは、以下に述べる構成ツリーを用いて形成することができ、そしてハードウェアにより実施することができる。
【0021】
コンソールプログラム
本発明の原理により構成されたコンピュータシステムがプラットホームにおいてイネーブルされたときには、多数のHWRPBを形成しなければならず、多数のコンソールプログラムコピーをロードしなければならず、そして各HWRPBがシステムの特定の要素に関連するようにシステムリソースを指定しなければならない。これを行うために、実行すべき第1のコンソールプログラムは、システムないの全てのハードウェアを表わす構成ツリー構造体をメモリに形成する。このツリーは、又、ソフトウェア区画化情報、及び区画に対するハードウェア指定も含み、このツリーについては、以下で詳細に述べる。より詳細には、APMPシステムがパワーアップされるときには、システムが動作しているプラットホームに特有のハードウェアにより、あるCPUが従来のやり方で一次CPUとして選択される。一次CPUは、次いで、コンソールプログラムのコピーをメモリにロードする。このコンソールコピーは、「マスターコンソール」プログラムと称される。一次CPUは、最初に、マスターコンソールプログラムの制御の下で動作し、マシン全体を所有している単一のシステムが存在するという仮定でテスト及びチェックを実行する。その後、システム区画を定義する1組の環境変数がロードされる。最終的に、マスターコンソールは、環境変数に基づいて区画を形成しそして初期化する。この後者のプロセスにおいて、マスターコンソールは、構成ツリーを形成し、付加的なHWRPBデータブロックを形成し、付加的なコンソールプログラムコピーをロードし、そして別のHWRPBにおけるCPUを始動するように動作する。各区画は、次いで、そこで実行されるオペレーティングシステムインスタンスを有し、このインスタンスは、これも又その区画で実行されるコンソールプログラムコピーと協働する。非構成のAPMPシステムでは、マスターコンソールプログラムは、一次CPUと、最低量のメモリと、プラットホーム特定のやり方で選択された物理的なシステムアドミニストレータのコンソールとを含む単一の区画を最初に形成する。コンソールプログラムコマンドは、次いで、システムアドミニストレータが付加的な区画を形成すると共に、各区画に対するI/Oバス、メモリ及びCPUを構成できるようにする。
【0022】
区画に対するリソースの関連付けがコンソールプログラムによって行われた後に、その関連性が不揮発性RAMに記憶され、その後のブート中にシステムを自動的に構成できるようにされる。その後のブート中に、マスターコンソールプログラムは、新たな要素の追加及び除去を取り扱うために現在の構成を記憶された構成で確認しなければならない。新たに追加される要素は、それらがシステムアドミニストレータによって指定されるまで非指定状態に入れられる。ハードウェア要素を除去したときに、区画のもつリソースがオペレーティングシステムを実行するのに不充分なものとなる場合には、リソースがその区画に指定され続けるが、付加的な新たなりソースがそこに指定されるまでオペレーティングシステムインスタンスを実行することはできない。既に述べたように、コンソールプログラムは、オペレーティングシステムのブートアップ中にオペレーティングシステムへ通されたHWRPBによりオペレーティングシステムインスタンスと通信する。コンソールプログラムに対する基本的な要件は、HWRPBそれ自体及びその多数のコピーを形成できねばならないことである。コンソールプログラムにより形成された各HWRPBコピーは、独立したオペレーティングシステムインスタンスをメモリのプライベート区分へとブートすることができ、そしてこのようにブートされる各オペレーティングシステムインスタンスは、HWRPBに入れられる独特の値によって識別することができる。この値は区画を指示し、そしてオペレーティングシステムインスタンスIDとしても使用される。
【0023】
更に、コンソールプログラムは、区画内で実行されているオペレーティングシステムによる要求に応答してその区画内で使用できるCPUからあるCPUを除去するためのメカニズムを形成するように構成される。各オペレーティングシステムインスタンスは、コンソールプログラムに制御権が通されるように、遮断、停止又はさもなくばクラッシュできねばならない。逆に、各オペレーティングシステムインスタンスは、他のオペレーティングシステムインスタンスとは独立して、あるオペレーションモードへと再ブートできねばならない。
コンソールプログラムにより形成された各HWRPBは、システム内にあるか又はシステム全体をパワーダウンせずにシステムに追加できる各CPUに対してCPUスロット特有のデータベースを含む。物理的に存在する各CPUは、「存在」とマークされるが、特定の区画において最初に実行するCPUだけは、区画のHWRPBにおいて「使用可能」とマークされる。ある区画において実行されるオペレーティングシステムインスタンスは、HWRPBのCPUごとの状態フラグフィールドにおける「存在」(PP)ビットにより将来のある時間にCPUを使用できると確認することができ、そしてこれを表わすデータ構造体を形成することができる。CPUごとの状態フラグフィールドにおける「使用可能」(PA)ビットは、これがセットされると、その関連CPUが区画に現在関連されていて、SMPオペレーションに加えるように案内できることを指示する。
【0024】
構成ツリー
上述したように、マスターコンソールプログラムは、ハードウェアの構成と、各区画に対するシステムの各要素の指定とを表わす構成ツリーを形成する。次いで、各コンソールプログラムは、HWRPBにツリーのポインタを入れることにより構成ツリーをそれに関連したオペレーティングシステムインスタンスに識別する。図3に戻ると、構成ツリー300は、システム内のハードウェア要素と、プラットホームの制約及び最小値と、ソフトウェア構成とを表わす。マスターコンソールプログラムは、以前の初期化中に発生された構成情報を含む不揮発性RAMに記憶された情報と、ハードウェアの検知とにより発見された情報を用いてツリーを形成する。
【0025】
マスターコンソールは、全てのオペレーティングシステムインスタンスによってコピーが共用されるところのツリーの単一コピーを発生することもできるし、又は各インスタンスごとにツリーを複写することもできる。ツリーの単一コピーは、独立したメモリを伴うシステムに単一の欠陥点を形成し得るという欠点がある。しかしながら、多数のツリーコピーを発生するプラットホームは、コンソールプログラムがツリーに対する変化を同期状態に保持できることを必要とする。
構成ツリーは、根ノード、子ノード及び兄弟ノードを含む多数のノードより成る。各ノードは、固定のヘッダと、オーバーレイデータ構造体に対する可変長さ延長部とで形成される。ツリーは、全システムボックスを表わすツリー根ノード302で出発し、その後、ハードウェア構成(ハードウェア根ノード304)、ソフトウェア構成(ソフトウェア根ノード306)及び最小区画要件(テンプレート根ノード308)を示すブランチが続く。図3において、矢印は、子供及び兄弟関係を表わす。あるノードの子供は、ハードウェア及びソフトウェア構成の構成要素を表わす。兄弟は、同じ親をもつ意外関係のない要素の同等のものを表わす。ツリー300のノードは、ソフトウェアコミュニティ及びオペレーティングシステムインスタンス、ハードウェア構成、構成制約、性能境界及びホットスワップ能力に関する情報を含む。又、これらノードは、ハードウェア対ソフトウェア所有権の関係又はハードウェア要素の共用も与える。これらのノードは、メモリ内に隣接して記憶され、そしてツリー300のツリー根ノード302から特定ノードへのアドレスオフセットが「ハンドル」を形成し、これは、オペレーティングシステムインスタンスにおける同じ要素を明確に識別するためにオペレーティングシステムインスタンスにより使用することができる。更に、本発明のコンピュータシステムの各要素は、個別のIDを有する。これは、説明上、64ビットの無符号値である。このIDは、要素の形式及びサブ形式値と組み合わされたときには独特の要素を特定しなければならない。即ち、所与の形式の要素に対し、IDは、特定の要素を識別しなければならない。IDは、単純な数字、例えば、CPU IDであってもよいし、他の何らかの独特のエンコード又は物理的なアドレスであってもよい。要素ID及びハンドルは、任意の数のコンピュータシステムがハードウェア又はソフトウェアの特定の部片を識別できるようにする。即ち、いずれの特定方法を使用するいかなる区画も、同じ仕様を用いて同じ結果を得ることができねばならない。
【0026】
上記のように、本発明のコンピュータシステムは、1つ以上のコミュニティより成り、これらコミュニティは、次いで、1つ以上の区画より成る。独立したコミュニティにわたって区画を分割することにより、本発明のコンピュータシステムは、デバイス及びメモリの共用を制限し得る構成にすることができる。コミュニティ及び区画は、高密度でパックされるIDを有する。ハードウェアプラットホームは、システムに存在するハードウェアに基づいて区画の最大数を決定し、そしてプラットホーム最大限界を有する。区画及びコミュニティIDは、ランタイム中にこの値を決して越えることがない。IDは、削除された区画及びコミュニティに対して再使用される。コミュニティの最大数は、区画の最大数と同じである。更に、各オペレーティングシステムインスタンスは、独特のインスタンス識別子、例えば、区画IDと具体的な数字との組み合わせにより識別される。
【0027】
コミュニティ及び区画は、ソフトウェア根ノード306により表わされ、これは、コミュニティノード子供(そのコミュニティノード310が示されている)と、区画ノード孫(その2つのノード312及び314が示されている)とを有する。ハードウェア要素は、ハードウェア根ノード304により表わされ、これは、コンピュータシステムに現在存在する全てのハードウェアのハイアラーキー表示を示す子供を含む。ハードウェア要素の「所有権」は、適当なソフトウェアノード(310、312又は314)を指す関連ハードウェアノードにおけるハンドルにより表わされる。これらのハンドルは図4に示されており、これについて、以下に説明する。特定の区画が所有する要素は、その区画を表わすノードを指すハンドルを有する。多数の区画が共用するハードウェア(例えば、メモリ)は、その共用が拘束されるコミュニティを指すハンドルを有する。未所有のハードウェアは、ゼロのハンドル(根ノード302を表わす)を有する。
【0028】
ハードウェア要素は、所有権をいかに分割するかについて構成上の制約を課する。各要素に関連した構成ツリーノードにおける「config」ハンドルは、ハードウェア根ノード304を指すことにより要素をコンピュータシステムのどこにでも自由に関連させるべきかどうか決定する。しかしながら、あるハードウェア要素は、祖先ノードに結合することができ、そしてこのノードの一部分として構成されねばならない。この例は、どこで実行するかの制約をもたないが、SBB322又は324のようなシステムビルディングブロック(SBB)の構成要素であるCPUである。この場合、たとえCPUがSBBの子供であっても、そのconfigハンドルは、ハードウェア根ノード304を指す。しかしながら、I/Oバスは、そのI/Oプロセッサを所有する区画以外の区画が所有することはできない。この場合に、I/Oバスを表わす構成ツリーノードは、I/Oプロセッサを指すconfigハンドルを有する。ハードウェア構成を支配するルールは、プラットホーム特有のものであるから、この情報は、configハンドルによりオペレーティングシステムインスタンスに与えられる。各ハードウェア要素は、「親和力(affinity)」ハンドルも有する。この親和力ハンドルは、configハンドルと同じであるが、要素の最良の性能を得る構成を表わす。例えば、CPU又はメモリは、コンピュータシステムのどこででも構成できるようにするconfigハンドル(ハードウェア根ノード304を指す)を有するが、最適な性能のためには、CPU又はメモリは、それらが一部分であるところのシステムビルディングブロックを使用するように構成されねばならない。その結果、configポインタは、ハードウェア根ノード304を指すが、親和力ポインタは、ノード322又は324のようなSBBノードを指す。いかなる要素の親和力もプラットホーム特有のもので、ファームウェアにより決定される。ファームウェアは、「最適」な自動構成を作るように求めるときに子の情報を使用することができる。
【0029】
又、各ノードは、ノードの形式及び状態を指示する多数のフラグも含む。これらのフラグは、表わされる要素が「ホットスワップ可能」な要素でありそしてその親及び兄弟とは独立してパワーダウンできることを指示するnode hotswapフラグを含む。しかしながら、このノードの全ての子供は、この要素がパワーダウンする場合にはパワーダウンしなければならない。子供がこの要素と独立してパワーダウンできる場合には、それに対応するノードにおいてこのビットをセットしなければならない。別のフラグは、node unavailableフラグであり、これは、セットされると、ノードにより表わされる要素が使用のために現在入手できないことを指示する。
2つのフラグnode hardware及びnode templeteはノードの形式を指示する。又、ノードが初期化された区画を表わすか又は現在の一次CPUであるCPUを表わすかを指示するために、node initialized及びnode cpu primaryのような更に別のフラグを設けることもできる。
【0030】
構成ツリー300は、オペレーティングシステムがバスを検知せずにバス及びデバイス構成テーブルを形成できるようにするデバイスコントローラのレベルまで拡張できる。しかしながら、ツリーは任意のレベルで終了してもよい。但し、それより下の全ての要素を独立して構成できない場合である。システムソフトウェアは、ツリーにより与えられないバス及びデバイス情報を検知することが依然として要求される。
コンソールプログラムは、システムの各要素に構成の制約がもしあればそれを実行及び実施する。一般に、要素は、制約なしに指定可能である(例えば、CPUは、制約をもたない)、又は別の要素の一部分としてのみ構成可能である(例えば、デバイスアダプタは、そのバスの一部分としてのみ構成可能である)。上記のように、CPU、メモリ及びI/Oデバイスを独特のソフトウェアエンティティへとグループ編成したものである区画は、最小要件も有する。例えば、区画のための最小ハードウェア要件は、少なくとも1つのCPUと、あるプライベートメモリ(プラットホームに従属する最小のもので、コンソールメモリを含む)と、物理的な非共用コンソールポートを含むI/Oバスとである。
【0031】
区画のための最小要素要件は、テンプレート根ノード308に含まれた情報によって与えられる。テンプレート根ノード308は、ノード316、318及び320を含み、これは、コンソールプログラム及びオペレーティングシステムインスタンスを実行することのできる区画を形成するために設けなければならないハードウェア要素を表わす。構成エディタは、新たな区画を形成するためにどんな形式及びどれほど多くのリソースを使用できねばならないかを決定するための基礎としてこの情報を使用することができる。
新たな区画の形成中に、テンプレートサブツリーは、「ウオーキング」され、そしてテンプレートサブツリーの各ノードごとに、新たな区画により所有される同じ形式及びサブ形式のノードがあって、コンソールプログラムをロードし且つオペレーティングシステムインスタンスをブートすることができねばならない。テンプレートツリーに同じ形式及びサブ形式のノードが2つ以上ある場合には、新たな区画にも多数のノードがなければならない。コンソールプログラムは、コンソールプログラムをロードしそして初期化オペレーションを試みる前に、テンプレートを使用して、新たな区画が最小要件を有することを確認する。
【0032】
構成ツリーノードの特定の実施に関する詳細な例を以下に示す。これは、単に説明上のものに過ぎず、これに限定されるものではない。各HWRPBは、現在の構成と、区画に対する要素の指定とを与える構成ツリーを指さねばならない。HWRPBの構成ポインタ(CONFIGフィールドにおける)は、構成ツリーを指すのに使用される。CONFIGフィールドは、ツリーに対するメモリプールのサイズと、メモリの初期チェック和とを含む64バイトヘッダを指す。ヘッダの直後に、ツリーの根ノードがある。ツリーのヘッダ及び根ノードは、ページ整列される。
構成ツリーに割り当てられるメモリの全サイズ(バイト)は、ヘッダの第1のクオドワードに位置される。このサイズは、ハードウェアページサイズの倍数となるように保証される。ヘッダの第2のクオドワードは、チェック和に指定される。構成ツリーを検査するために、オペレーティングシステムインスタンスは、ツリーをそのローカルアドレス空間にマップする。オペレーティングシステムインスタンスは、全てのアプリケーションに許された読み取りアクセスでこのメモリをマップするので、特権のないアプリケーションが、それがアクセスしてはならないコンソールデータへのアクセスを得るのを防止するための何らかの構成を設けねばならない。メモリを適当に割り当てることによってアクセスが制限される。例えば、メモリはページ整列されそして全ページに割り当てられてもよい。通常は、オペレーティングシステムインスタンスは、構成ツリーの第1ページをマップし、ツリーサイズを得、そして構成ツリーの使用のために割り当てられたメモリを再マップする。全サイズは、ツリーへの動的な変化に対してコンソールにより使用される付加的なメモリを含むことができる。
【0033】
好ましくは、構成ツリーノードは固定のヘッダで形成され、そしてその固定のヘッダに続いて形式特有の情報を任意に含む。サイズフィールドは、ノードの全長を含み、ノードは、この例では64バイトの倍数で割り当てられ、そして必要に応じてパッドが付けられる。ノードの固定ヘッダにおけるフィールドを以下に一例として説明する。
Figure 0004634548
Figure 0004634548
上記定義において、形式定義「unit」は、適当なビット長さをもつ無符号の整数である。上述したように、ノードは、ハンドルにより位置決めされ、識別される(上記定義では、typedef GCT HANDLEにより識別される)。ここに例示するハンドルは、構成ツリーのベースからノードまでの符号付き32ビットオフセットである。値は、コンピュータシステムの全ての区画にわたって独特である。即ち、ある区画において得られるハンドルは、全ての区画において、ノードをルックアップするために、又はコンソールコールバックへの入力として有効でなければならない。magicフィールドは、ノードが実際に有効なノードであることを指示する所定のビットパターンを含む。
【0034】
ツリー根ノードは、システム全体を表す。そのハンドルは常にゼロである。即ち、それは、常に、configヘッダに続く構成ツリーに割り当てられたメモリの第1の物理的な位置に配置される。これは、次の定義を有する。
Figure 0004634548
根ノードにおけるフィールドは、次のように定義される。
【0035】
lock
このフィールドは、ツリーの構造体への変更を禁止しようとするソフトウェアと、ソフトウェア構成とによって単純なロックとして使用される。この値が―1(全てのビットがオン)であるときには、ツリーがロック解除され、そしてこの値が0以上であるときには、ツリーがロックされる。このフィールドは、原子オペレーションを用いて変更される。ロックルーチンの発呼者は区画IDを送り、これはロックフィールドに書き込まれる。これは、欠陥追跡を助成しそしてクラッシュ中に回復するのに使用できる。
transient level
このフィールドは、ツリー更新の始めに増加される。
【0036】
current level
このフィールドは、ツリー更新の完了時に更新される。
console req
このフィールドは、区画のベースメモリセグメントにおいてコンソールに対して要求されるメモリ(バイト)を特定する。
min alloc
このフィールドは、メモリ断片の最小サイズと、割り当て単位を保持する(断片サイズは、割り当ての倍数でなければならない)。これは、2の累乗でなければならない。
min align
このフィールドは、メモリ断片に対する整列要求を保持する。これは、2の累乗でなければならない。
【0037】
base alloc
このフィールドは、区画のベースメモリセグメントとして要求される最小メモリ(バイト)(console reqを含む)を特定する。これは、区画に対してコンソール、コンソール構造体及びオペレーティングシステムがどこでロードされるかである。これは、minalloc及びminallocの倍数以上でなければならない。
base align
このフィールドは、区画のベースメモリセグメントに対する整列要求を保持する。これは、2の累乗でなければならず、そして少なくともmin alignの整列を有していなければならない。
【0038】
max phys address
このフィールドは、現在パワーオン及び使用可能でないメモリサブシステムを含むシステムに存在し得る計算された最大の物理的アドレスを保持する。
mem size
このフィールドは、現在システムにある全メモリを保持する。
platform type
このフィールドは、HWRPBのフィールドから得たプラットホームの形式を記憶する。 platform name
このフィールドは、ツリー根ノードのベースからプラットホームの名前を表わすストリングまでの整数オフセットをあらわす。
【0039】
primary instance
このフィールドは、第1のオペレーティングシステムインスタンスの区画IDを保持する。
first tree
このフィールドは、ツリー根ノードから新たなノードに使用されるメモリプールの第1の空きバイトまでのオフセットを保持する。
high limit
このフィールドは、構成ツリー内に有効なノードを配置できるところの最上位アドレスを保持する。これは、ハンドルが適正なものであることを確認するためにコールバックにより使用される。
【0040】
lookaside
このフィールドは、削除されていて再請求することのできるノードのリンクされたリストのハンドルである。コミュニティ又は区画が削除されたときには、ノードがこのリストにリンクされ、そして新たな区画又はコミュニティを形成すると、空きプールからの割り当ての前にこのリストが探索される。
available
このフィールドは、first treeフィールドにより指示された空きプールに残っているバイト数を保持する。
max partitions
このフィールドは、現在使用できるハードウェアリソースの量に基づいてプラットホームにより計算される区画の最大数を保持する。
【0041】
partitions
このフィールドは、根ノードのベースからハンドルのアレーまでのオフセットを保持する。各区画IDは、このアレーへのインデックスとして使用され、そして区画ノードハンドルは、インデックスされた位置に記憶される。新たな区画が形成されたときに、このアレーを検査し、対応する区画ノードハンドルをもたない第1の区画IDを見つけ、この区画IDは新たな区画に対するIDとして使用される。
communities
このフィールドも、根ノードのベースからハンドルのアレーまでのオフセットを保持する。各コミュニティIDは、このアレーへのインデックスとして使用され、そしてコミュニティノードハンドルがこのアレーに記憶される。新たなコミュニティが形成されると、このアレーを検査して、対応するコミュニティノードハンドルをもたない第1のコミュニティIDを見つけ、このコミュニティIDは新たなコミュニティに対するIDとして使用される。区画以上の多くのコミュニティが存在することはなく、従って、アレーは、区画の最大数に基づくサイズとされる。
【0042】
max platform partition
このフィールドは、たとえ付加的なハードウェアが追加されても(潜在的にインスワップされる)プラットホームに同時に存在し得るプラットホームの最大数を保持する。
max fragments
このフィールドは、メモリ記述子を分割できるところの断片のプラットホーム定義最大数を保持する。これは、メモリ記述子ノードにおける断片のアレーサイズを決めるのに使用される。
max desc
このフィールドは、プラットホームのメモリ記述子の最大数を保持する。
【0043】
APMP id
このフィールドは、システムソフトウェアによってセットされて不揮発性RAMにセーブされるシステムIDを保持する。
APMP id pad
このフィールドは、APMD IDのパッディングバイトを保持する。
bindings
このフィールドは、「バインディング」のアレーに対するオフセットを保持する。各バインディングエントリは、ハードウェアノードの形式、親でなければならないノードの形式、構成バインディング、及びノード形式に対する親和力バインディングを記述する。バインディングは、ノード形式がいかに関係しているか及び構成及び親和力ルールを決定するためにソフトウェアにより使用される。
【0044】
コミュニティは、区画間のリソースの共用の基礎を与える。ハードウェア要素は、コミュニティのいずれの区画にも指定できるが、メモリのようなデバイスの実際の共用は、コミュニティ内で生じるだけである。コミュニティノード310は、APMPデータベースと称する制御区分のポインタを含み、これは、オペレーティングシステムインスタンスがインスタンス間でメモリ及び通信を共用する目的でコミュニティにおけるアクセス及び会員資格を制御できるようにする。APMPデータベース及びコミュニティの形成は、以下に詳細に述べる。コミュニティに対する構成IDは、コンソールプログラムにより指定された符号付き16ビット整数値である。ID値は、プラットホームにおいて形成できる区画の最大数より決して大きくならない。
【0045】
ノード312又は314のような区画ノードは、コンソールプログラムの独立コピー及びオペレーティングシステムの独立コピーを実行することのできるハードウェアの集合をあらわす。このノードに対する構成IDは、コンソールにより指定される符号月6ビット整数値である。このIDは、プラットホームにおいて形成できる区画の最大数より決して大きくならない。ノードは、次の定義を有する。
Figure 0004634548
定義されたフィールドは、次の定義を有する。
【0046】
hwrpb
このフィールドは、この区画に対するハードウェア再スタートパラメータブロックの物理的なアドレスを保持する。HWRPBの対する変化を最小にするために、HWRPBは、区画のポインタ又は区画IDを含まない。むしろ、区画がHWRPBのポインタを含む。従って、システムソフトウェアは、HWRPBの物理的アドレスを含む区画に対する区画ノードをサーチすることにより、それが実行される区画の区画IDを決定することができる。
incarnation
このフィールドは、区画の一次CPUが区画においてブート又は再スタート動作を実行するたびに増加される値を保持する。
【0047】
priority
このフィールドは、区画の優先順位を保持する。
os type
このフィールドは、区画にロードされるオペレーティングシステムの形式を指示する値を保持する。
partition reserved
このフィールドは、将来の使用のために指定される。
instance name format
このフィールドは、インスタンス名ストリングのフォーマットを示す値を保持する。
【0048】
instance name
このフィールドは、instance name formatフィールドを使用して解釈されるフォーマット化ストリングを保持する。このフィールドの値は、区画において実行されているオペレーティングシステムインスタンスに高レベル経路名を与える。このフィールドは、システムソフトウェアによりロードされ、そしてパワーサイクルにわたってセーブされない。このフィールドは、パワーアップ時及び区画形成及び削除時にクリアされる。
ノード322又は324のようなシステムビルディングブロックノードは、図2に示すようなモジュラー設計のシステムプラットホームにより使用されるハードウェア又は概念的グループ構成の任意の断片をあらわす。QBB(クオドビルディングブロック)は、SBBの特定例であって、図1のユニット100、102、104及び106のようなユニットに対応する。SBBノード322及び324の子供は、入力/出力プロセッサノード326及び340を含む。
【0049】
ノード328ないし332及び342ないし346のようなCPUノードは、SMP動作に対して一次CPUとして動作できると仮定する。CPUが一次として動作できない稀なケースにおいては、SMP動作において一次CPUとして使用できないことを示すSUBTYPEコードを有する。この情報は、新たな区画を形成するリソースを構成するときに重要である。又、CPUノードは、CPUが現在どこで実行するかについての情報を搬送する。ある区画の一次CPUは、NODE FLAGフィールドのNODE CPU PRIMARYフラグをセットする。CPUノードは、次の定義を有する。
Figure 0004634548
ノード334又は348のようなメモリサブシステムノードは、物理的メモリコントローラと、それらコントローラが与えるメモリの指定とを表わすノードを一緒にグループ構成にする「擬似」ノードである。このノードの子供は、コンソールが一緒に動作する(インターリーブされて)ように構成した1つ以上のメモリコントローラノード(例えば、ノード336及び350)と、メモリの物理的な連続範囲を示す1つ以上の物理的な記述ノード(例えば、ノード338及び352)とで構成される。
【0050】
メモリコントローラノード(例えば、ノード336又は350)は、物理的なハードウェア要素を表わすのに使用され、そしてその所有者は、通常、エラー及び初期化を取り扱う区画である。メモリコントローラは、初期化、テスト及びエラーに対する特定のオペレーティングシステムインスタンスを必要とするので、コミュニティに指定することはできない。しかしながら、メモリ記述子ノードにより定義されるメモリ記述は、異なる区画又はコミュニティがメモリ記述子内の特定のメモリ範囲を所有できるようにする「断片」に分割することができる。メモリは、同時に共用することができるか又は「プライベート」エリアに分割できるという点で他のハードウェアリソースとは異なる。各メモリ記述子ノードは、メモリを区画間で分割できると共に、区画(コミュニティによって所有された)間で共用できるようにするサブセット範囲のリストを含む。メモリ記述子ノード(例えば、ノード338又は352)は、次のように定義される。
【0051】
Figure 0004634548
mem flagフィールドは、メモリ記述子ノードのベースから、次の定義をもつGCT MEM DESC構造体のアレーまでのオフセットを保持する。
【0052】
Figure 0004634548
メモリ記述ノード(ノード338又は352)における断片の数は、プラットホームファームウェアにより制限される。これは、メモリ区分の上限を形成し、そして構成ツリーの無制限成長を制限する。ソフトウェアは、ツリー根ノード302(上記した)におけるmax fragmentsフィールドにより、又は値を返送するための適当なコンソールコールバックを呼び出すことにより、断片の最大数を決定することができる。各断片は、configバインディングと、メモリ記述子及びメモリサブシステムノードの所有権とが許す場合には、いかなる区画に指定することもできる。各断片は、基本的物理アドレスと、サイズと、所有者フィールドと、使用の形式を指示するフラグとを含む。
【0053】
共用メモリアクセスを許すために、メモリサブシステムの親ノード及びメモリ記述子ノードは、コミュニティにより所有されねばならない。メモリ記述子内の断片は、コミュニティ(共用)によるか又はコミュニティ内の任意の区画によって所有される。
断片は、ツリー根ノード302に与えられる最小割り当てサイズ及び指定をもつことができる。区画に対する基本的メモリ(コンソール及びオペレーティングシステムがロードされるところの断片)は、他の断片よりも大きな割り当て及び指定をもつことができる(上記のツリー根ノード定義を参照)。メモリ記述子ノードの所有者フィールドがある区画である場合には、その区画でしか断片を所有することができない。
【0054】
図4は、所有権のパースペクティブから見たときの図3の構成ツリーを示す。
ある区画のコンソールプログラムは、その区画の一次CPUが実行を開始するときにその区画において実行されているオペレーティングシステムインスタンスに区画リソースの所有権及び制御を譲る。「所有権」の概念は、ハードウェアリソース及びCPUがソフトウェア区画及びコミュニティにいかに指定されるかを決定する。構成ツリーは、図4に示す所有権ポインタを有し、これは、区画(排他的アクセス)及びコミュニティ(共用アクセス)のようなソフトウェアへのハードウェアデバイスのマッピングを決定する。オペレーティングシステムインスタンスは、構成ツリーの情報を使用して、それがどのハードウェアリソースに対してアクセス及び再構成制御を有するかを決定する。
【0055】
所有者をもたない受動的なハードウェアリソースは、所有権が確立されるまで使用することができない。構成ツリーを変更することにより所有権が確立されると、オペレーティングシステムインスタンスは、リソースの使用を開始することができる。あるインスタンスが初期要求を行うと、所有するオペレーティングシステムがリソースの使用を停止するようにさせるか、又はオペレーティングシステムインスタンスが実行されていない区画においてコンソールプログラムがリソースの使用を停止する動作をとることにより、所有権を変更することができる。次いで、構成ツリーは、リソースの所有権を別のオペレーティングシステムインスタンスへ移行するように変更される。オペレーティングシステムがハードウェアリソースの使用を停止するようにさせるに必要な動作は、オペレーティングシステムに特有のもので、変更により影響を受けるオペレーティングシステムインスタンスの再ブートを必要とする。
【0056】
所有されたアクティブな状態から非所有のインアクティブな状態へのリソースの移行を管理するために、ツリーの各ノードには、2つのフィールドが与えられる。「owner」フィールドは、リソースの所有者を表し、所有するソフトウェア区画又はコミュニティのハンドルが設けられる。APMPシステムのパワーアップ時に、ハードウェアノードの「owner」フィールドは、不揮発性RAMの内容からロードされて、初期構成を確立する。
リソースの所有者を変更するために、ハードウェア要素の「owner」フィールドと、configハンドルにより要素に結合されたハードウェア要素の子孫の「owner」フィールドとにおいてハンドル値が変更される。「current owner」フィールドは、リソースの現在のユーザを表わす。「owner」及び「current owner」フィールドが同じ非ゼロ値を保持するときには、そのリソースが所有されそしてアクティブとなる。リソースの所有者のみがリソースの指定を解除することができる(「owner」フィールドをゼロにセットする)。ナルの「owner」及び「current owner」フィールドをもつリソースは、非所有であり、インアクティブである。ナルの「owner」及び「current owner」フィールドを有するリソースのみが新たな区画又はコミュニティに指定される。
【0057】
リソースが指定解除されるときには、所有者は、「owner」フィールド又は「owner」及び「current owner」の両フィールドを指定解除するように決定することができる。この決定は、区画において実行される所有のオペレーティングシステムインスタンスが、所有権の指定解除の前に、リソースの使用を停止できる機能に基づく。所有権を引き継ぐために再ブートが必要とされる場合は、「owner」フィールドがクリアされるが、「current owner」フィールドは変更されない。所有のオペレーティングシステムインスタンスが再ブートされるときには、コンソールプログラムは、初期化中に所有者をもたないリソースに対していかなる「current owner」フィールドもクリアすることができる。
【0058】
初期化中に、コンソールプログラムは、それが所有者であり且つ「current owner」フィールドがナルであるところのいかなるノードについても「owner」フィールドに合致するように「current owner」フィールドを変更する。システムソフトウェアは、それが現在所有者であるところのハードウェアしか使用してはならない。コミュニティにより所有されたリソースを指定解除する場合には、状態間の移行を管理するのはシステムソフトウェアの役割である。ある実施形態では、リソースを別の区画にロードすることができる。この状態において、「owner」及び「current owner」フィールドは、両方とも有効であるが、等しくはない。以下のテーブルは、考えられるリソース状態と、「owner」及び「current owner」フィールドの値とを要約するものである。
【0059】
Figure 0004634548
CPUは能動的なデバイスであり、そしてCPUの共用は、CPUがその所有者でない区画のコンテクストにおいて実行し得ることを意味するので、CPUの所有権は、受動的なリソースの所有権とは異なる。構成ツリーにおけるCPUノードは、CPUが通常どの区画により所有されるかそしてCPUがどの区画で現在実行しているかを指示する2つのフィールドを備えている。「owner」フィールドは、CPUの公称所有権、又はより詳細にはシステムパワーアップ時にCPUが最初に実行するところの区画を示す値を含む。
【0060】
初期の所有権が確立されるまで(即ち、「owner」フィールドが非指定である場合は)、CPUがマスターコンソールにより指令されたHWRPBに入れられるが、CPUに対するHWRPBavailableビットは、いかなるHWRPBでも送られない。この組み合わせは、CPUがSMPオペレーションにおいていかなるオペレーティングインスタンスに加わることも防止する。CPUの所有権が確立されると(「owner」フィールドに有効区画ハンドルが満たされると)、CPUは、もし必要であれば、所有する区画へと移動し、その区画に関連したHWRPBの「available」ビットをセットし、そしてその区画において実行されているインスタンスのSMPオペレーションに加わるか又はSMPモードにおいてコンソールプログラムに加わるように要求する。HWRPBにおける「present」ビット及び「available」ビットの組み合わせは、CPUがSMPオペレーションに使用できることをオペレーティングシステムインスタンスに通知し、そしてオペレーティングシステムインスタンスは、これらのビットを使用して、適当なCPUごとのデータ構造体を構築すると共に、SMPオペレーションに加わることを要求するメッセージをCPUに送信する。
【0061】
CPUは、HWRPBの「available」ビットをセットするときに、構成ツリーの対応するCPUノードにおける「current owner」フィールドに値も入力する。この「current owner」フィールドの値は、CPUが「active」のHWRPBビットをセットしそしてSMPオペレーションに加わることのできる区画のハンドルである。CPUの「current owner」フィールドは、コンソールプログラムによってのみセットされる。CPUがある区画から別の区画へ移動するとき、又は非指定状態へ停止されるときは、「available」ビットがHWRPBにおいてクリアされるのと同時に、「current owner」フィールドがクリアされる(又は新たなハンドル値へと変更される)。「current owner」フィールドは、システムソフトウェアによって直接書きこまれてはならず、そしてどのHWRPBがCPUに対して「available」ビットをセットしたかを表わすだけである。
【0062】
ランタイム中に、オペレーティングシステムインスタンスは、CPUの公称所有権を変更せずに、CPUを別の区画に一時的に「ローン」することができる。HWRPBの「present」及び「available」ビットを用いた所有権の従来のSMP概念は、原子的オペレーションにおいてHWRPB及び構成ツリーを変更することによりCPUの現在実行コンテクストを表わすのに使用される。「current owner」フィールドは、更に、1つの区画のシステムソフトウェアにより、どの区画においてCPUが現在実行しているかを決定するのに使用することができる(他のインスタンスは、構成ツリーを検査することにより特定のCPUの位置を決定することができる)。
又、CPUを指定解除し、そしていかなるHWRPBにおいても「available」ビットがセットされず且つCPUの構成ツリーノードにおける「current owner」フィールドがクリアされた状態へとCPUを復帰させることができる。これは、CPUの実行を停止し、そしてコンソールプログラムが構成ツリーノードの「owner」フィールド、「current owner」フィールド及び「available」HWRPBビットをクリアするようにさせることにより行われる。次いで、CPUは、コンソールモードで実行し、そして有効な区画ハンドルが書き込まれるのを待機する「owner」フィールドをポーリングする。次いで、システムソフトウェアは、新たな所有者を確立することができ、そしてCPUは、新たな区画において実行を開始する。
【0063】
例示的な所有権ポインタが図4に矢印で示されている。図3の同様のノードに対応する図4の各ノードには、対応する番号が与えられる。例えば、図3においてノード306と示されたソフトウェア根ノードは、図4ではノード406として示されている。図4に示すように、コミュニティ410は、ソフトウェア根406により「所有」される。同様に、システムビルディングブロック1及び2(422及び425)は、コミュニティ410により所有される。同様に、区画412及び414も、コミュニティ410により所有されて示されている。
区画412は、CPU428―432及びI/Oプロセッサ426を所有する。メモリコントローラ436は、区画1(412)の一部分でもある。同様に、区画2(414)は、CPU442―446、I/Oプロセッサ440及びメモリコントローラ450を所有する。
【0064】
システムの共通メモリ即ち共用メモリは、メモリサブシステム434及び448と、メモリ記述子438及び452とで構成される。これらは、コミュニティ410により所有される。従って、図4は、オペレーティングシステムインスタンスに対して表れるときのシステムのレイアウトを示す。
オペレーティングシステムの特徴
上述したように、ここに示すコンピュータシステムは、異なる区画における多数の異なるオぺレーティングシステムで動作することができる。しかしながら、従来のオペレーティングシステムは、そのシステムがいかに構成されているかに基づいて本発明のシステムに合致させるように幾つかの観点において変更を行う必要がある。ここに示す実施形態の幾つかの変更例を以下に示す。
【0065】
1.インスタンスは、コンソールを動作するための区画内の「一次」CPUを選択するメカニズムを含ませるように変更されると共に、他のインスタンスからの通信のターゲットとなることが必要である。一次CPUの選択は、裁定メカニズム又は他の従来の装置を用いて従来のやり方で行うことができる。
2.各インスタンスは、そのインスタンスが実行される区画に使用できるリソースを示す構成データブロックを形成する役目を果たすコンソールプログラムと通信及び協働できるようにする変更を必要とする。例えば、インスタンスは、そのインスタンスによってどんなインスタンスが使用できるかを決定するためにその基礎となるハードウェアを検知してはならない。むしろ、インスタンスがどんなリソースにアクセスすることが許されたかを示す構成データブロックが通過された場合には、指定のリソースと共に動作することが必要となる。
【0066】
3.インスタンスは、任意の物理的アドレスでスタートすることができ、そしてその特定のアドレスで実行される他のオペレーティングシステムとの競合を回避するために特定の物理的アドレスを指定できないようにする必要がある。
4.インスタンスは、メモリが区画間で共用されるシステム構成の一部分である場合に、多数の任意の物理的ホールをそのアドレス空間にサポートできることが必要である。更に、インスタンスは、メモリの「ホットインスワップ」をサポートするためにそのアドレス空間において物理的ホールを取り扱う必要がある。
5.インスタンスは、メッセージを通すと共に、新たなりソースが区画及びインスタンスに使用できるという通知を受け取る必要がある。より詳細には、新たなリソースをサーチするためのインスタンスを通知するプロトコルが必要とされる。さもなくば、インスタンスは、リソースが到着しそして使用の準備ができることが決して分からない。
【0067】
6.インスタンスは、インスタンスがメモリを共用しないシステムに使用される場合にその「プライベートメモリ」内で完全に実行できることが必要である。或いは又、インスタンスは、そのインスタンスがメモリを共用するシステムの一部分である場合にコンピュータ内で実行される他のインスタンスとデータを通信又は共用するための物理的な「共用メモリ」を使用できることが必要である。このような共用メモリシステムでは、インスタンスは、構成ツリーにおいて識別された物理的な「共用メモリ」を、その仮想アドレス空間と、そのオペレーティングシステムインスタンス内で実行される「プロセス」の仮想アドレス空間とにマッピングできることが必要である。
【0068】
7.各インスタンスは、コンピュータシステム内の他のCPUとコンタクトしてそれと通信するための何らかのメカニズムを必要とする。
8.インスタンスは、たとえCPUがその区画に現在指定されなくても、そのオペレーションに合致する他のCPUを確認できることも必要である。例えば、インスタンスは、そのインスタンスが実行されている区画にCPUが再指定された場合に、そのCPUと共に動作できるかどうかを決定するために、コンソール改定数及びクロック速度のようなCPUパラメータを確認できることが必要である。
構成ツリーの変更
各コンソールプログラムは、例えば、新たなコミュニティ又は区画を形成するか又はメモリ断片の所有権を変更することにより、関連するオペレーティングシステムインスタンスがAPMPシステムの構成を変更できるようにする多数のコールバック機能を与える。更に、他のコールバック機能は、コミュニティ又は区画を除去したり、或いは新たに形成された区画においてオペレーションをスタートしたりする能力も与える。
【0069】
しかしながら、コールバック機能は、実行されているオペレーティングシステムインスタンスに何ら変化を生じさせない。構成ツリーに生じる変化は、その変化により影響される各インスタンスによって作用されねばならない。構成ツリーが変更されるときにインスタンスにおいて行なわねばならない動作の形式は、変化の形式及びオペレーティングシステムインスタンスの能力に基づく。例えば、入力/出力プロセッサをある区画から別の区画へ移動する場合に、両区画を再ブートする必要がある。一方、断片のメモリ割り当てを変更することは、再ブートの必要なくオペレーティングシステムインスタンスによって取り扱われる。
APMPシステムの構成は、コミュニティ及び区画の形成と、未指定の要素の指定とを伴う。ある要素がある区画から別の区画へ移動されるときには、現在所有者がリソースの所有者としてそれ自身を除去し、そしてリソースの新たな所有者を指示する。次いで、新たな所有者がリソースを使用することができる。ある区画で実行されるインスタンスがある要素を解除するときには、そのインスタンスはその要素をもはやアクセスしてはならない。この簡単な手順は、インスタンスからの要素の盲目的な盗用(blind stealing)を許すのに必要な複雑な同期と、再構成中にインスタンスをブートする際に考えられる競合状態とを排除する。
【0070】
構成ツリーノードは、いったん初期化されると、決して削除又は除去されず、即ちそれらのハンドルは常に有効である。従って、ハードウェアノードアドレスは、ソフトウェアによってキャッシュ処理することができる。区画又はコミュニティを削除することを意図するコールバック機能は、実際には、その関連ノードを削除したり又はツリーからそれを除去したりすることはなく、むしろ、ノードにUNAVAILABLEというフラグを立てると共に、ソフトウェア要素により所有されたハードウェアリソースの所有権フィールドをクリアする。
構成ツリーへの変更を同期させるために、ツリーの根ノードは、2つのカウンタ(transient level及びcurrent level)を維持する。transient levelは、ツリーへの更新の開始に増加され、そしてcurrent levelカウンタは、更新が完了したときに増加される。ソフトウェアは、これらのカウンタを使用して、ツリーへの変更がいつ生じたか又は生じるかを決定することができる。更新がコンソールによって完了したときに、APMPシステムの全てのCPUに割り込みを発生することができる。この割り込みを使用して、システムソフトウェアがその状態をツリーへの変更に基づいて更新するようにすることができる。
【0071】
APMPコンピュータシステムの形成
図5は、ここに示す適応的区画化マルチプロセッサ(APMP)コンピュータシステムの編成を全体的に示すフローチャートである。このルーチンはステップ500でスタートし、そしてステップ502へ進み、マスターコンソールプログラムがスタートされる。APMPコンピュータシステムがパワーアップ時に形成される場合には、マスターコンソールが動作されるCPUは、裁定又は他のハードウェアメカニズムのような所定のメカニズムによって選択される。APMPコンピュータシステムが、既に動作中のハードウェアにおいて形成される場合は、(非存在の)システムに加わろうと試みる第1区画のCPUは、以下に述べるようにマスターコンソールプログラムを実行する。
【0072】
次いで、ステップ504において、マスターコンソールプログラムは、ハードウェアを検知し、そして上述したように、ステップ506において構成ツリーを形成する。パワーアップ時にAPMPシステムに2つ以上の区画が存在する場合には、各区画が初期化され、そしてそのコンソールプログラムがスタートされる(ステップ508)。
最終的に、オペレーティングシステムインスタンスは、ステップ510に示されたように、少なくとも1つの区画においてブートされる。ブートすべき第1のオペレーティングシステムインスタンスは、以下に述べるように、APMPデータベースを形成しそしてエンティティを充填する。APMPデータベースは、システムにおけるアクティブなオペレーティングシステムインスタンスの状態に関する情報を記憶する。次いで、ルーチンは、ステップ512で終了する。インスタンスは、APMPシステムに加入する必要がないことに注意されたい。インスタンスは、ブートより充分に後の時間に加入すべきか否かを選択することができる。加入しないインスタンスは、「共用セット」を形成する。共用セットに加わると決定した第1のインスタンスは、それを形成しなければならない。単一のAPMPシステムにおいて動作する多数の共用セットがあり、各共用セットは、それ自身のAPMPデータベースを有する。
【0073】
新たなAPMPシステムを形成するか又は既存のAPMPシステムに加わるかの判断
APMPコンピュータシステムを動作しているプラットホーム上で実行されるオペレーティングシステムインスタンスは、必ずしもAPMPコンピュータシステムのメンバーでなくてもよい。インスタンスは、ブートの後にいつでもAPMPシステムのメンバーになるよう試みることができる。これは、ブート時に自動的に行われてもよいし、又はオペレータコマンドが加入を明確に開始した後に行われてもよい。オペレーティングシステムがブート時にロードされた後に、オペレーティングシステム初期化ルーチンが呼び出され、そして記憶されたパラメータを検査して、それが即座の加入を指定するかどうか調べ、もしそうであれば、システムは、APMPコンピュータシステムの一部分である加入ルーチンを実行する。オペレータコマンドは、同じルーチンの実行を生じる。
【0074】
APMPデータベース
本発明によるリソースのソフトウェア割り当てをサポートする重要なデータ構造体は、共用セットのメンバーであるオペレーティングシステムインスタンスを追跡するAPMPデータベースである。APMPコンピュータシステムを設定しようと試みる第1のオペレーティングシステムインスタンスは、APMPデータベースを初期化し、従って、初期の共用セットに対する本発明のソフトウェアリソース割り当てを形成し又はインスタンス生成する。共用セットの一部分になろうとするその後のインスタンスは、その共用セットに関連したAPMPデータベースに登録することにより加入する。APMPデータベースは、共用セットの共用リソースを管理するのに必要な集中情報を含む共用データ構造体である。又、APMPデータベースは、APMPコンピュータシステムが回復不能なエラーに応答して再形成されるときにも初期化される。
より詳細には、各APMPデータベースは3部分構造体である。第1部分は、APMPコンピュータシステムを形成するための基本的同期構造体と、データベースのアドレスマップ情報と、第2部分を形成するサービス特有セグメントに対するオフセットとを含む固定サイズヘッダ部分である。第2部分は、各潜在的なインスタンスに1つのブロックが指定されるデータブロックのアレーである。データブロックは、「ノードブロック」と称する。第3部分は、コンピュータシステムのサブファシリティの各々により使用されるセグメントへと分割される。各サブファシリティは、それ自身のセグメントの内容及びそこへの同期アクセスについて責任を負う。
【0075】
APMPデータベースの最初のヘッダ部分は、加入するオペレーティングシステムインスタンスによりマップされるAPMPデータベースの第1部分である。ヘッダの部分は、インスタンスが共用セットに加入する前にアクセスされ、そして実際には、APMPコンピュータシステムが存在することをインスタンスが知る前にアクセスされる。
ヘッダ区分は、次のものを含む。
1.メンバーシップ及び形成同期クオドワード
2.コンピュータシステムのソフトウェアバージョン
3.状態情報、形成時間、インカーネーションカウント、等
4.メンバーシップマスクに対するポインタ(オフセット)
5.クラッシュインスタンス、クラッシュ確認ビット、等
6.各サービスに対するビットを含む有効化マスク
7.全APMPデータベースに対するメモリマッピング情報(ページフレーム番号情報)
8.サービスセグメントの各々を示すオフセット/長さ対(ページ及びオフセット全ページへと丸められたバイト長さ)であって、
共用メモリサービス、
CPU通信サービス、
メンバーシップサービス(もし必要であれば)、
ロッキングサービス、
を含むもの。
【0076】
ノードブロックのアレーは、システム区画ID(現在プラットホームにおいて考えられるインスタンス当たり1つ)によりインデックスされ、そして各ブロックは、次のものを含む。
インスタンスソフトウェアバージョン
割り込み理由マスク
インスタンス状態
インスタンスインカーネーション
インスタンスハードビート
インスタンスメンバーシップタイムスタンプ
弟インスタンスid及びインアクティブ時間;兄インスタンスid
インスタンス有効化終了ビット
APMPデータベースは、共用メモリに記憶される。N個の物理的に隣接するページの最初の固定部分は、ハードウェアの最初の区画化の間に加入するために第1インスタンスにより割り当てられた2つのメモリ範囲の一方の最初のNページを占有する。インスタンスは、構成ツリーにおけるこれら範囲の物理的なスタートアドレスを記憶するようにコンソールに指令する。2つの範囲を割り当てる目的は、ハードウェアメモリ欠陥の場合にフェイルオーバーを許すことである。メモリマネージメントは、物理的メモリをAPMPデータベースに対する仮想アドレス空間へマッピングする役目を果たす。
【0077】
オペレーティングシステムインスタンスによって行われる詳細な動作が図6に示されている。より詳細には、オペレーティングシステムインスタンスは、それが共用セットのメンバーになろうとするときに、非存在のシステムに「加入」しようと試みる第1のインスタンスである場合に、APMPコンピュータシステムを形成するよう準備しなければならない。APMPシステムが既に存在するかどうかをインスタンスが決定するために、インスタンスは、上記のように共用メモリの状態を検査できねばならない。更に、競合する形成試みを防止するために、APMPシステム及び共用セットに同時に加入しようと試みる他のインスタンスとの同期を取ることができねばならない。その後、メモリのある領域が、ブートのために第1の即ち一次のオペレーティングシステムインスタンスにより初期化されそしてこのメモリ領域をAPMPデータベースに使用することができる。
【0078】
APMPデータベースヘッダのマッピング
全てのオペレーティングシステムインスタンスによって行われる最初の動作の目標は、APMPデータベースのヘッダ部分をマップし、そして原始的なインスタンス間割り込み処理を初期化して、形成又は加入を判断するための基礎を整えることである。使用するルーチンは図6に示され、ステップ600から始まる。各インスタンスにより行われる第1の動作(ステップ602)は、上記のようにAPMPデータベースの初期セグメントをマップするためにメモリマネージメントに関与することである。このときには、第2のデータベース区分におけるノードブロックのアレーもマップされる。メモリマネージメントは、APMPデータベースの最初のセグメント及び第2セグメントを一次オペレーティングシステムのアドレス空間へマップし、そしてスタートアドレス及び長さを返送する。次いで、インスタンスは、構成ツリーにおけるセグメントの位置及びサイズを記憶するようにコンソールに通知する。
【0079】
次いで、ステップ604において、APMPデータベースの初期仮想アドレスを使用して、初期化ルーチンが、現在インスタンスに指定されたノードブロックにおいて割り込み理由マスクをゼロにすることができるようにする。
次いで、このノードブロック及び他のノードブロックフィールドにおいてインスタンスのハートビートフィールドにゼロの初期値が記憶される。ある場合に、新たなAPMPコンピュータシステムを形成しようと試みるインスタンスは、以前にAPMPシステムのメンバーであり、APMPシステムから引き出すものではない。このインスタンスが、他のインスタンスがそれを除去する前に再ブートする場合は、そのビットがシステムメンバーシップマップにおいて依然「オン」である。他の例外的な又はエラーのケースは、システムメンバーシップマスクに「廃物」が記憶される事態を招く。
【0080】
次いで、ステップ608において、APMPデータベースの仮想アドレス(VA)は、プロセッサ間割り込みハンドラーにより検査されるプライベートセルに記憶される。ハンドラーは、このセルを検査して、行うべき作業に対しAPMPデータベースヘッダにおけるインスタンスごとの割り込み理由マスクをテストすべきかどうか決定する。このセルがゼロである場合には、APMPデータベースがマップされず、そしてハンドラーによってそれ以上何も行われない。上述したように、このマスクを含む全APMPデータベースは、アドレスが記憶されるまでハンドラーが何も行なわないように初期化される。更に、クロック割り込みハンドラーは、同じプライベートセルを検査して、適当なノードブロックにおいてこのインスタンスに対しインスタンス特有のハートビートフィールドを増加すべきかどうか決定することができる。プライベートセルがゼロの場合には、割り込みハンドラーは、ハートビートフィールドを増加しない。
【0081】
この点において、ルーチンが終了し(ステップ610)、APMPデータベースヘッダがアクセス可能となり、加入インスタンスは、ヘッダを検査して、APMPコンピュータシステムが存在しないかどうか、ひいては、インスタンスがそれを形成しなければならないかどうか、或いはインスタンスが既に存在するAPMPシステムに加わるかどうかを決定する。
APMPヘッダがマップされたときには、そのヘッダが検査されて、APMPコンピュータシステムがアップでそして機能するかどうかを決定し、もしそうでなければ、現在インスタンスがAPMPデータベースを初期化しそしてAPMPコンピュータシステムを形成しなければならないかどうかを決定する。既存のAPMPシステムに加わるという問題は、例えば、APMPコンピュータシステムがあるときに形成されたが現在はメンバーを有していない場合、或いはAPMPシステムがエラーの後に再形成される場合には更に困難なものとなる。この場合には、APMPデータベースメモリの状態が前もって分からず、簡単なメモリテストでは不充分である。おそらく現存するAPMPシステムに加わろうと試みるインスタンスは、APMPシステムが存在するか否かを決定できねばならず、そしてもし存在しなければ、そのインスタンスは、他のインスタンスからの干渉を受けずに新たなAPMPシステムを形成できねばならない。この干渉は、同じインスタンス又は別のインスタンスにおいて実行されるスレッドから生じ得る。
【0082】
このような干渉を防止するために、先ず、APMPデータベースをロックし、そしてAPMPヘッダを検査して、機能するAPMPコンピュータシステムが存在するかどうか決定することにより、形成/加入の判断がなされる。適切に機能しているAPMPシステムが存在する場合には、インスタンスがシステムに加わり、そしてAPMPデータベースのロックを解除する。或いは又、APMPシステムが存在しないか、又はAPMPシステムは存在するが、機能していない場合には、インスタンスは、それ自身がメンバーとして新たなAPMPシステムを形成し、そしてAPMPデータベースのロックを解除する。
APMPシステムが移行中であると考えられる場合には、インスタンスは、APMPシステムが再び動作するか又はデッド状態になるまで待機し、そして上記のように進行する。システムを形成できない場合には、加入が失敗となる。
【0083】
新たなAPMPコンピュータシステムの形成
新たなAPMPシステムを形成しなければならないと仮定すれば、形成インスタンスは、APMPデータベースの残りを割り当て、ヘッダを初期化しそしてシステムサービスを呼び出すという役割を果たす。APMPデータベースが上記のようにロックされたと仮定すれば、APMPシステムを初期化するために、形成インスタンスにより次のステップがとられる(これらのステップは、図7A及び7Bに示す)。
ステップ702 形成インスタンスは、APMPシステム状態及びそのノードブロック状態を「初期化」にセットする。
ステップ704 形成インスタンスは、ヘッダにおける長さフィールドのアドレスで各システムサービスのサイズルーチンをコールする。
【0084】
ステップ706 得られた長さフィールドが加算され、そして形成インスタンスは、メモリマネージメントをコールして、新たなマッピングを形成そして古いマッピングを削除することにより全APMPデータベースに対するスペースを割り当てる。
ステップ708 形成インスタンスは、各システムサービスセグメントの開始までオフセットを満たす。
ステップ710 各サービスに対する初期化ルーチンは、APMPデータベースの仮想アドレス、サービスセグメント及びセグメント長さでコールされる。
ステップ712 形成インスタンスは、メンバーシップマスクを初期化してそれ自身を唯一のメンバーにすると共に、インカーネーションカウントを増加する。次いで、形成時間、ソフトウェアバージョン及び他の形成パラメータをセットする。
【0085】
ステップ714 次いで、インスタンスは、それ自体を自分の兄弟としてセットする(以下に述べるハートビート監視目的で)。
ステップ716 次いで、インスタンスは、そのインスタンス状態を「メンバー」として及びAPMPシステム状態を「動作」として満たす。
ステップ718 最終的に、インスタンスは、APMPデータベースのロックを解除する。
次いで、ルーチンは、ステップ720で終わる。
既存のAPMPコンピュータシステムへの加入
インスタンスがAPMPデータベースをロックしたと仮定すれば、既存のAPMPシステムのメンバーとなるためにインスタンスにより次のステップが取られる(図8A及び8B)。
【0086】
ステップ802 インスタンスは、そのインスタンス名が独特であることを保証するためにチェックを行う。別の現在メンバーがインスタンスの提案する名前を有する場合には、加入が拒絶される。
ステップ804 インスタンスは、APMPシステム状態及びそのノードブロック状態を「インスタンス加入」にセットする。
ステップ806 インスタンスは、APMPデータベースの変数部分をそのローカルアドレス空間にマップするためにメモリ管理ルーチンをコールする。
ステップ808 インスタンスは、APMPデータベースの仮想アドレス、そのセグメント及びそのセグメント長さで各システムサービスのシステム加入ルーチンをコールする。
【0087】
ステップ810 全てのシステムサービス加入ルーチンが成功を報告する場合には、インスタンス加入ルーチンが継続する。いずれかのシステムサービス加入ルーチンが失敗した場合には、インスタンス加入ルーチンは、新たなAPMPコンピュータシステムをスタートしそしておそらくは形成しなければならない。
ステップ812 ステップ810で成功が得られたと仮定すれば、インスタンスはそれ自身をシステムメンバーシップマスクに追加する。
ステップ814 インスタンスは、以下に述べるように、兄を選択して、そのインスタンスの健全さを監視する。
ステップ816 インスタンスは、そのインスタンス状態を「メンバー」として満たし、そしてローカルメンバーシップフラグをセットする。
【0088】
ステップ818 インスタンスは、構成データベースのロックを解除する。
次いで、ルーチンは、ステップ820で終了となる。
インアクティビティ、時間切れ又はクラッシュのいずれかによるインスタンスの損失は、APMPデータベースにおいて実施される「ハートビート」メカニズムにより検出される。インスタンスは、最小チェック及びクリーンアップを行うように試み、そしてインスタンスクラッシュ中にAPMPシステムの残りに通知する。これが可能でない場合には、システムサービスは、ソフトウェアハートビートメカニズムによりインスタンスの消失を検出する。特に、「ハートビート」フィールドは、各アクティブなインスタンスに対してAPMPデータベースに割り当てられる。このフィールドは、所定値より短い時間間隔、例えば、2ミリ秒ごとに、対応するインスタンスにより書き込まれる。
【0089】
いかなるインスタンスも、他のインスタンスのハートビートフィールドにおいて検査を行い、ある特定の目的で直接的な決定を行うことができる。インスタンスは、別のインスタンスのハートビートフィールドを、2ミリ秒の時間間隔で分離して2回読み取ることにより、そのハートビートフィールドを読み取る。2つの読み取り間でハートビートが増加されない場合には、インスタンスがインアクティブ(終了、コントロールPで停止、又はクロック割り込み優先順位レベル以上で保留)とみなされる。インスタンスが所定時間にわたりインアクティブに保たれる場合には、インスタンスがデッド又は無関心とみなされる。
更に、全てのインスタンスを監視するために特殊な構成が使用される。というのは、特にAPMPシステムが大きくなるにつれて、各インスタンスごとに他の各インスタンスを監視することができないからである。この構成は、「兄―弟」方式を使用する。より詳細には、インスタンスがAPMPシステムに加わるときに、APMPデータベースのロックを解除する前に、現在メンバーの1つをその兄として取り上げ、そして加入するインスタンスにわたって監視する。加入するインスタンスは、先ず、その選択された兄の現在の弟に対して兄の義務を仮定して、それ自身を、選択されたインスタンスの新たな弟として指定する。これとは逆に、インスタンスが依然として動作しながらAPMPコンピュータシステムから退出して、退出処理を実行できる一方、APMPデータベースのロックを保持するときには、その兄の義務をその現在の兄に指定した後に、そのハートビートの増加を停止する。
【0090】
クロックの刻みごとに、各インスタンスは、それ自身のハートビートを増加した後に、その弟のハートビートを読み取り、そしてそれを最後のクロックの刻みにおいて読み取った値と比較する。新たな値が大きいか、又は弟のIDが変化した場合には、その弟がアクティブであるとみなす。しかしながら、弟のID及びそのハートビート値が同じである場合は、その弟がインアクティブとみなされ、現在インスタンスは、その弟の弟も監視し始める。この責任の累積は、所定の最大値まで続けられ、1つのインスタンスの欠陥がその弟の欠陥の欠落を生じないよう確保する。弟もハートビートを増加し始める場合には、全ての付加的な責任がドロップされる。
メンバーインスタンスがデッド又は無関心と判断され、そして停止またはクラッシュの意図をAPMPコンピュータシステムに通知しなかった場合には、そのインスタンスがAPMPシステムから除去される。これは、例えば、インスタンスの原子的割り込みマスクの「バグチェック」ビットをセットしそしてIP割り込みをインスタンスの全てのCPUに送信することにより行われる。その結果、共用メモリは、IP割り込みのハードウェア優先順位のもとでのみアクセスされる。これは、インスタンスのCPUがIP割り込みより低い優先順位で実行しようと試みる場合に、IP割り込みが最初に生じ、従って、CPUが「バグチェック」ビットを見た後に、それより優先順位の低いスレッドを実行できるよう保証する。これは、インスタンスがデッドと判断されたときに他の目的で再割り当てされているメモリのような共用リソースをオペレーティングシステムインスタンスがクラッシュしそしてタッチしないように確保する。付加的な又は別のメカニズムとして、コンソールコールバック(もし存在すれば)を呼び出して、インスタンスを除去することもできる。更に、好ましい実施形態によれば、インスタンスが警報なしにAPMPコンピュータシステムから消え又はドロップしたときには、残りのインスタンスは、ある公正なチェックを行って、それらが継続できるかどうか決定する。これらのチェックは、APMPデータベースの全てのページが依然アクセスでき、即ちメモリ欠陥がなかったことを照合することを含む。
【0091】
加入後のリソースの指定
CPUは、APMPシステムのパワーアップ寿命における所与の時間にせいぜい1つの所有者区画をもつことができる。しかしながら、その所有権の反映及びそれを制御する役目を果たすエンティティは、リソース自体が受けた構成及び状態移行、それが存在する区画、及びその区画内で実行されるインスタンスの結果として変化し得る。
CPUの所有権は、そのときリソースを管理するエンティティにより指令される多数の方法、多数の構造で指示される。ほとんどの基本的なケースでは、CPUが非指定の状態にあり、CPUと同じ共用セットに存在する全ての区画に使用できる。最終的に、そのCPUは、オペレーティングシステムインスタンスを実行してもしなくてもよい特定の区画に指定される。いずれにせよ、区画は、その所有権を構成ツリー構造を介して多の全ての区画に反映すると共に、HWRPBのCPUごとのグラグフィールドにおけるAVAILABLEビットを介してその区画で実行される全てのオペレーティングシステムインスタンスに反映する。
【0092】
所有する区画が、そこで実行されるオペレーティングシステムインスタンスをもたない場合には、そのコンソールが、その中のリソースに対する移行事象に応答し及びそれを開始する役目を果たす。コンソールは、リソースが、これを別の区画へ移動できるか又は非指定の状態へ復帰できる状態にあるかどうかを決定する。
しかしながら、区画においてインスタンスが現在実行されている場合に、コンソールは、リソースの移行を開始する責任を放棄し、そして構成変化が生じるときに実行中の一次インスタンスにそれを通知する責任を果たす。これは、依然、基礎となるハードウェア移行を容易にするが、リソース移行の制御は、オペレーティングシステムインスタンスまで1レベル上げられる。責任の移行は、一次CPUがシステムブートにおいてコンソールモードの外部でその第1命令を実行するときに行われる。
【0093】
オペレーティングシステムインスタンスは、情報の最も効率的な使用を内部で促進する多数の仕方で所有権状態情報を維持することができる。例えば、インスタンス特有の情報を内部及び全体の両方で反映する(APMPデータベースを共用する他のメンバーに)状態ビットベクトルのハイアラーキーを使用することができる。
内部の表示は、厳密に、インスタンスの使用に対するものである。これらは、ブート時間に、基礎的な構成ツリー及びHWRPB情報から形成されるが、オペレーティングシステムインスタンスの寿命にわたり厳密なソフトウェア構成として維持される。これらは、インスタンスに使用できる区画リソースのソフトウェア観点を表わし、そしてソフトウェアルールセットを介して、構成を、物理的な制約により指示されたもののサブセットに更に制限する。しかし、区画内の全てのリソースは、オペレーティングシステムの呼び出しがもはや生きたエンティティでなくなるまで、状態移行を指令するコンソールメカニズムを用いて、インスタンスにより所有され且つ管理される。この状態は、再ブートなしに復帰するおそれなく一次CPUを停止して再びコンソールモードへ戻すことにより指示される。
【0094】
CPUリソースの所有権は、決してインスタンスを越えて延びることはない。
各個々のインスタンスの状態情報は、読取専用の判断実行目的でAPMPデータベースにおいて複写されるが、他のインスタンスは、別のCPUリソースに対し状態移行事象を強制することができない。各インスタンスは、それ自身のリソースセットを理解しそして制御する責任を果たし、そのリソースに対する外部要求を受け取るが、リソースを転送できるようにする判断を行うことしかできない。
このような各CPUが動作状態になると、CPUごとのフラグにおけるAVAILABLEビットをセットしない。AVAILABLEビットがセットされないと、SMPオペレーションに加わるようにCPUをスタートさせるか又はそのように予想するよう試みるインスタンスは存在しない。むしろ、CPUは、コンソールモードにおいて、有効な区画が指定されるのを待機する構成ツリーの所有者フィールドをポーリングする。有効な区画が一次コンソールにより所有者として指定されると、CPUは、その区画においてオペレーションを開始する。
【0095】
ランタイム中に、current ownerフィールドは、CPUが実行する区画を反映する。HWRPBのCPUごとのフラグにおけるAVAILABLEビットは、オペレーティングシステムインスタンスとのSMPオペレーションに対してCPUが実際に使用できるか又は実行できるかの最終的な指示子を保持し、そして従来のSMPシステムの場合と同じ意味を有する。
インスタンスは、APMPコンピュータシステムの多数の再構成特徴に関与するために共用セットのメンバーである必要はないことに注意されたい。インスタンスは、そのリソースをAPMPシステムの別のインスタンスへ転送して、共用セットの一部分でないインスタンスが、共用セットの一部分であるインスタンスへリソースを転送できるようにする。同様に、共用セットの一部分でないインスタンスは、共用セットの一部分であるインスタンスからリソースを受け取ることができる。
【0096】
共用メモリ
コンソール構成ツリーに記録されたソフトウェア構成により、あるメモリは、コミュニティの全てのインスタンスの間で共用とマークされる。あるメモリは、オペレーティングシステムのインスタンスにより実行できる区画に対してプライベートとマークされる。他の全てのメモリは、非所有とマークされる。構成は、ソフトウェアによって定義されるので、区画及び区画の相対的なサイズを動的に変更することができる。
物理的なハードウェアシステム内の全てのメモリは、構成ツリー内の所有者フィールドが関連される。メモリは区画によって所有することができ、この場合、メモリは、その区画内で実行されるオペレーティングシステム又はコンソールソフトウェアによりプライベートメモリとして使用される。これは、「プライベート」メモリと称される。或いは又、メモリはコミュニティによって所有することもでき、この場合、メモリはコミュニティ内の全てのインスタンスに対して共用され、このようなメモリは「共用」メモリと称される。又、メモリは、区画又はコミュニティにより所有されないように構成することもできる。このような「非所有」メモリは、ハードウェアが「ホットアウトスワッピング」を許す場合にはシステムの他部分が動作を継続する間にパワーダウンされそしてホットアウトスワッピングされる。
【0097】
メモリは、共用メモリ領域の使用によりコミュニティのインスタンス間で共用することができる。共用メモリ領域は、いかなるインスタンスによって形成することもできる。タグは、多数のインスタンスによる同じ領域へのアクセスを整合するように特定される。仮想サイズ及び物理的サイズが特定される。仮想サイズは、物理的サイズと同じサイズであってもよいしそれより大きくてもよい。共用メモリは、コールバックルーチンにより初期化される。領域が初期化される間に他のインスタンスがその領域にマッピングされるのを阻止するために初期化中にロックが保持される。共用メモリ領域が1つのインスタンスによって形成されると、他のインスタンスをその領域にマッピングし取り付けることができる。仮想的に領域の一部分であるがそれに関連した物理的なメモリをもたないページを指示するために、ゼロページテーブルエントリが使用される。メモリ領域データ構造体は、どのインスタンスが領域に取り付けられるかを記録する。インスタンスは、共用メモリ領域に取り付けられるときにコールバックルーチンを指定しなければならない。このルーチンは種々の理由で呼び出され、即ちシステムの初期化又は遮断中、又は別のインスタンスが領域に取り付けられるか又はそこから取り外されるとき、或いは取り付けられたインスタンスがクラッシュした(順序ずれした状態で取り外された)ときに呼び出される。コールバックの理由に基づき、例えば、遮断中に、コールバックルーチンは、共用メモリ領域へのアクセスを阻止することが期待される。
【0098】
インスタンスは、より物理的なメモリを領域に取り付けることを要求できる。この要求を発するインスタンスのみが、最初に、これらの新たなページをマップする。別のインスタンスがこれらのページをアクセスするよう試みるときには、アクセス違反ハンドラーが制御権を得(そのインスタンスは、そのメモリ領域に関連したゼロページテーブルエントリ(PTE)を有するので)、そしてアクセス違反ハンドラーは、新たなページでマッピング領域を更新する。インスタンスが領域をマッピングしないときは、APMPデータベースに取り外しが記録される。全てのインスタンスが領域から取り外されると、それを削除し、そして共用メモリに解放される全てのページがページリストを空きにする。又、共用メモリ領域データ構造体は、どのインスタンスが領域内のページに未解決のI/Oを有するかも記録する。オペレーティングシステムインスタンスは、それらの個々の基準カウンタが領域内のI/Oビットをいつセット及びクリアすべきかを知るようにそれらカウンタを記録する。インスタンスは、領域内のページに対して未解決のI/Oを有する場合には共用メモリ領域をマップ解除しそしてそこから取り外すことができない。
【0099】
共用メモリAPIは、ユーザモードアプリケーションによって呼び出すことのできる1組のルーチンであって、これは共用メモリをアプリケーションのアドレススペースへとマップする。共用メモリ領域が上記のように形成されるときは、それに関連した形成インスタンスが、オペレーティングシステムのデータ構造体が共用メモリ領域にいかに関連するかを追跡する。インスタンスが共用メモリ領域のデータ構造体を形成すると、そのインスタンスが領域に取り付けられる。次いで、共用メモリマッピングAPIルーチンが呼び出されるときに、通常のオペレーティングシステムメカニズムを使用して、アプリケーションアドレススペースが共用メモリへとマッピングされる。ローカルオペレーティングシステムデータ構造体がクリーンアップされると、インスタンスが領域から取り外される。全体的区分は、共用メモリ領域と1対1の形態で関連される。
【0100】
インスタンスは、領域に関連されるべき「コンテクスト変数」を特定することができる。別のインスタンスが領域への取り付けを試みそして同じコンテクストを特定しない場合には、エラーが返送される。コンテクスト変数のこの特定は、例えば、バージョン番号をアプリケーションに関連付けするのに使用される。更に、インスタンスは、ある領域に対して記憶されるインスタンスプライベートデータと関連付けされるべきプライベートコンテクスト変数を特定することもできる。コールバックルーチンが呼び出されるときには、インスタンスは、プライベートコンテクスト変数を得ることにより領域に関する付加的な情報を収集することができる。プライベートコンテクストは、例えば、ポート番号を記憶するのに使用される。
【0101】
共用メモリは、インスタンスプライベートメモリとして使用するためにオペレーティングシステムインスタンスによって借りることができる。共用メモリは、共用メモリAPIの使用により借りることができる。共用メモリは、ローカルインスタンスのみによって形成し、次いで、使用することができる。この技術は、共用とマークされた全てのメモリがコミュニティメンバーインスタンスによって使用されるのではない場合に有用である。余分な共用メモリは、空きメモリのプールされたソースである。換言すれば、共用メモリは、共用メモリ領域の形成によって借りることができる。共用メモリ領域のページは、種々の目的でローカルオペレーティングシステムにより使用することができる。
プライベートメモリは、CPU(1つ又は複数)がメモリに最も速くアクセスするインスタンスによって所有されるように構成できる。この設計の共用メモリでは、メモリのハードウェア特性に基づき共用メモリの内部データ構造をグループで編成することにより、非均一なメモリアクセスが受け入れられる。これらの内部データ構造は、共通特性区画と称される。共用メモリAPIは、メモリ特性を発呼者により特定できるようにする。これらの特性は、「近」又は「遠」のような非均一なメモリアクセス特性として表すことができる。
【0102】
PFNデータベースは、ページフレーム番号(PFN)データベースエントリの大きなアレーを使用してプライベートメモリ及び共用メモリ並びに再構成メモリを受け入れる。別のインスタンスに対してプライベートであるページを記述する仮想アレーの背後に物理的なメモリは存在せず、又、システムから欠落するメモリボードによりサポートされるメモリ位置に対応するものもないし、物理的なメモリアドレスホールに対応するものもない。PFNデータベースのレイアウトは、物理的メモリの特定の粒度を示唆する。即ち、メモリの各ブロックに存在すべきPFNデータベースに対して整数の物理的ページを割り当てそして消費するために、物理的なメモリは、以下に述べる粒度をもたねばならない。物理的メモリの粒度は、整数のページ及び整数のPFNデータベースエントリを含む最小量のメモリとして選択される。これは、クオドワードにおけるメモリページサイズ及びページフレーム番号データベースエントリの最小公倍数により与えられる。
【0103】
上記のように、形成インスタンス、より詳細には、APMPコンピュータシステムの初期化プログラムは、構成ツリーを歩き、そしてその関連コミュニティの共用メモリに対してマネージメント構造体を構築する。一般に、4つのハイアラーキアクセスモードは、メモリアクセス制御を与える。これらのアクセスモードは、最大特権から最小特権へ、カーネル、実行、スーパーバイザー及びユーザである。更に、個々のページレベルにおいてメモリ保護が特定され、この場合に、ページは、4つのアクセスモードの各々に対してアクセス不能、読み取り専用、又は読み取り/書き込みである。アクセス可能なページは、データ又は命令アクセスのみを有するように制限することができる。メモリマネージメントソフトウェアは、各仮想ページが物理的メモリ内のどこにあるかを追跡するマッピング情報のテーブル(ページテーブル)を維持する。あるプロセスは、メモリマネージメントユニットを介して、このマッピング情報を、仮想アドレスから物理的アドレスへと変換したときに使用する。仮想アドレススペースは、再配置、共用及び保護ページの単位に分割され、これらはページと称される。オペレーティングシステムインスタンスは、仮想−物理的マッピングテーブルを制御し、そして仮想メモリアドレススペースのインアクティブな部分を外部記憶媒体にセーブする。
【0104】
メモリマネージメントは、説明上、仮想アドレスを物理的アドレスに変換するためのクオドワードページテーブルエントリを使用する。各ページテーブルエントリ(PTE)は、ページ境界を指すページフレーム番号(PFN)を含み、仮想アドレスのページ内バイト指示子と連結されて、物理的アドレスを形成する。
物理的アドレス変換は、多レベルページ構造体におけるエントリをアクセスすることにより実行される。ページテーブルベースレジスタ(PTBR)は、最高レベルページテーブルの物理的PFNを含む。仮想アドレスのビットは、上位レベルページテーブルをインデックスするのに使用され、ベース下位レベルページテーブルの物理的PFNを得ると共に、最下位レベルでは、参照されるページの物理的PFNを得る。このPFNは、仮想アドレスのページ内バイト指示子と連結されて、アクセスされる位置の物理的アドレスを得る。
【0105】
上述したように、インスタンスは、必ずしもシステムブート時ではなく、いつでもコミュニティのオペレーションに加わるように判断することができる。インスタンスがAPMPシステムに加わるように判断すると、ルーチンDB MAP initialをコールし、これは、構成ツリーのコミュニティノードからAPMPデータベースページを得て、APMPデータベースの初期部片をマップする。構成ツリーがAPMPデータベースページをまだ含まない場合に、インスタンスは、APMPデータベースに対して使用されるべき共用メモリページを選択する。インスタンスは、コンソールコードを呼び出して、構成ツリーに非同期的に書き込む。APMPデータベースの初期断片をマッピングした後に、上記のように、インスタンスがAPMPシステムを形成するかそれに加わるかが決定される。
【0106】
インスタンスがAPMPシステムの形成者である場合には、そのインスタンスがルーチンDB allocateを呼び出し、APMPデータベースに対してページを割り当てると共に、MMAPデータ構造体内のマッピング情報を初期化する。以下に詳細に述べるMMAPデータ構造体は、共用メモリのマッピングを記述するのに使用される。ルーチンDB allocateは、APMPデータベースの初期断片をマップ解除しない。インスタンスがAPMPシステムの参加者である場合には、そのインスタンスは、ルーチンDB Map continueをコールし、APMPデータベースをマップする。ルーチンDB Map continueは、APMPデータベースの初期断片をマップ解除しない。APMPデータベースがマップされ、そして参加するインスタンスのコードが、初期APMPデータベースではなく、新たにマップされたAPMPデータベースを参照するように切り換わった場合には、初期APMPデータベースは、ルーチンDB unmapを呼び出すことによりマップ解除される。このルーチンは、インスタンスがAPMPシステムを出るときにAPMPデータベースをマップ解除するために呼び出すこともできる。
【0107】
APMPデータベースは、全てのインスタンスに対して同じ仮想位置に配置される必要はない。というのは、これは、所与の範囲の仮想アドレスが使用できない場合にインスタンスがAPMPシステムに参加するのを防止するからである。この融通性は、異なる仮想アドレススペースレイアウトを有する異なるオペレーティングシステムが新たなAPMPシステムに容易に共存できるようにする。
DB Map initialルーチンは、APMPデータベースの初期断片をマップし、初期APMPデータベースの長さを受け入れ、そして初期APMPデータベースの仮想アドレスを返送する。更に、DB Map initialは、マップされたページをテストして、そのページが共用メモリからのものであるよう確保すると共に、不良ページをマークする。
【0108】
DB allocateルーチンは、初期のAPMPデータベースの全アドレス、初期のAPMPデータベースの長さ、及び全APMPデータベースの長さを受け入れる。このルーチンは、仮想アドレスを全APMPデータベースに返送する。このルーチンは、全APMPデータベースをマップするに充分なインスタンスアドレススペースを割り当て、そしてこのスペースの始めにAPMPデータベースの初期断片を再マップする。より多くのAPMPデータベースページが共用メモリから必要に応じてマップされる。これらページはテストされ、そして不良ページに遭遇した場合に、それが使用されたとマークされる。APMPデータベースページの残りは、適当なページテーブルエントリにマップされる。隣接ページは、APMPデータベースPFNリストに対して割り当てられる。APMPデータベースのPFNは、未使用のエントリがゼロ化された状態でPFNリストページに記憶される。全APMPデータベースに対して充分な隣接ページが使用できる場合には、PFNリストページは使用されない。共用ページは、構成ツリーから直接割り当てられ、そして初期APMPデータベースページの直後にページから取り出される。
DB Map continueルーチンは、発呼者がAPMPシステムの形成者でない場合に全APMPデータベースをマップする。このルーチンは、初期APMPデータベースの仮想アドレス及び初期APMPデータベースの長さを受け入れる。このルーチンは、全APMPデータベースのスタート仮想アドレス及び全APMPデータベースの長さを返送する。
【0109】
各オペレーティングシステムインスタンスは、構成ツリーのメモリ特徴に焦点を合わせたメモリ構成情報機能を含む。MEM CONFIG INFOルーチンは、構成ツリーフィールドMAX DESC及びMAX FRAGMENTSを読み取りそして最大数のメモリ記述子ノード及び記述子ノード当たりの最大数のメモリ断片を返送することにより基本的なメモリ構成情報を返送する。MEM CONFIG PFNルーチンは、どの区画が所与のPFNを所有するか決定する。このルーチンはページフレーム番号を受け入れ、そしてそれがどんな形式のページであるか、即ちページが共用であるか、特定区画に対してプライベートであるか、入力/出力(I/O)ページであるか、又は非所有メモリであるかの指示を返送する。更に、ページがプライベートであるか又はI/Oデバイスをアクセスするのに使用される場合には、ルーチンは、どの区画がこのPFNを所有するかの指示を返送し、そしてページが共用である場合には、どのコミュニティがPFNを所有するかの指示を返送する。SHMEM CONFIG DESCルーチンは、構成ツリーにおけるメモリ記述子に関する共用メモリ情報を返送する。メモリ記述子ノードが見つかると、このルーチンは、共用とマークされた断片に対してメモリ断片をサーチし、そして各断片に対するPFN及びページカウントを返送バッファに満たす。共用とマークされたメモリ断片がない場合には、断片カウントがゼロにセットされる。
【0110】
SHMEM CONFIG ALLルーチンは、共用メモリを含む全てのメモリ記述子ノードに関する情報を返送する。このルーチンは、ループにおいてSHMEM CONFIG DESCを呼び出して、全ての共用メモリページ範囲を得る。入力アーギュメントは、最大数のメモリ記述子ノードと、記述子ノード当たり最大数のメモリ断片とを含む。このルーチンは、共用メモリ範囲を記述する構造体のアレーから全数の共用メモリ断片を返送する。
SHMEM CONFIG AMAPルーチンは、構成ツリーにおいてAPMP PFN範囲を設定する。APMP PFN範囲が既に設定された場合には、それが情報を返送する。このルーチンは、APMPデータベースに使用するための第1のPFNと、APMPページの数とを返送する。このルーチンは、コミュニティノード内の値を読み取り、そしてその値がゼロである場合には、SHMEM CONFIG DESCルーチンを呼び出すことにより、共用メモリの第1の隣接範囲、ここに示す実施形態では8メガバイト、を得る。次いで、コンソールディスパッチルーチンを呼び出して、この範囲をコミュニティノードにおいてセットする。APMPページ範囲の設定に競合があった場合には、構成ツリーに設定された範囲が読み取られ、発呼者へ返送される。
【0111】
APMPデータベースSHMEMにおける共用メモリマネージメントデータ構造体は、バージョン数、SHMEM構造体の固定部分のサイズ、共用メモリが有効であるかどうか、初期化が進行中であるかどうか、デバッグ構造フォーマットが使用されるかどうか、全ての共用メモリ共通特性区画内の全てのページがテストされたかどうか、そして最大数の共用メモリ共通特性区画があるかどうかを示すフラグを備えている。更に、このデータ構造体は、有効な共用メモリ共通特性区画の全数、1つの共用メモリ共通特性区画構造体のサイズ、共用メモリデータ構造体の開始から共用メモリ共通特性区画アレーまでのオフセット、共用メモリデータ構造体の開始から共用メモリロック構造体までのオフセット、共用メモリロックハンドル、及びAPMPシステム内にサポートされた共用メモリ領域の最大数も含む。又、このデータ構造体は、有効な共用メモリ領域の全数、及び共用メモリデータ構造体の開始から共用メモリ領域タグアレーまでのオフセットも含む。共用メモリ領域構造体のサイズ、及び共用メモリマネージメントデータ構造体の開始から共用メモリ領域アレーまでのオフセットも含まれる。
【0112】
インスタンスプライベートメモリデータセルは、APMPデータベースにおける共用メモリマネージメントエリアに関する情報を含む。この情報は、共用メモリデータ構造体の開始を指すポインタと、共用メモリデータ構造体に関連して述べたものと同じ記述子、即ち共用メモリ共通特性区画の最大数、各共用メモリ共通特性区画におけるメモリ断片の最大数、1つの共用メモリ共通特性区画構造体のサイズ、APMPデータベース内の共用メモリ共通特性区画アレーを指すポインタ、共用メモリリストのポインタ、及びAPMPデータベース内の共用メモリ領域タグアレーのポインタを含む。更に、共用メモリ領域の最大数、1つの共用メモリ領域構造体のサイズ、APMPデータベース内の共用メモリ領域アレーを指すポインタ、及びプライベートメモリ内の共用メモリ記述子アレーを指すポインタも含まれる。
【0113】
共用メモリ共通特性区画(CPP)構成エリアが初期化されるときには、APMPデータベースページが除外される。共用メモリ共通特性区画は、共用メモリを、共通特性を有する区画へと区画化することによりホットスワッピング及び非均一メモリアクセスをサポートする。フラグ及びルーチンを使用して、例えば、CPPがどの非均一メモリアクセスユニットにあるか、又はCPPがどのホットスワップ可能なユニットにあるかを、そのユニット内のメモリページの範囲及び位置と共に指示する。APMPシステムのメンバーである各インスタンスは、それが接続される各共用メモリCPPに関するデータをそれ自身のプライベートメモリに維持する。共用メモリ共通特性区画データ構造体へのアクセスを同期するためにロック構造体が使用される。区画が共用メモリCPPに接続されるとき、区画が共用メモリCPPから切断されるとき、ページが共用メモリCPPから割り当てられるとき、又はページが共用メモリCPPに対して割り当て解除されるときに、ロックが保持される。各共用メモリCPPは、空きページリスト、不良ページリスト、及び非テストページリストを有する。ページは、空きページ及び非テストページリストから割り当てることができ、そして空きページリスト及び不良ページリストへと割り当て解除される。共用メモリCPPページリストリンクは、ページに対するPFNデータベースエントリ内に維持される。
【0114】
共用メモリロックは、SHM TAGアレーと、有効SHM REG構造体の関連リストとを同期すると共に、空きSHM REG構造体のリストへのアクセスを同期するために使用される。SHMEMロックは、SHM TAGアレーを読み取り又は書き込みする間、有効SHM REG構造体のリストを操作する間又は空きSHM REGリストを操作する間に保持されねばならない。共用メモリロックは、次のようにランク付けされる。最も高次のロックは、IPL8SMPスピンロック、それに続いてSHM CPPロック、次いで、SHM REGロック、そして最後に、SHMEMロックである。例えば、SHMEMロックを保持する間に、SHM REGロック、SHM CPPロック及び/又はSMPスピンロックをこの順序で収集することができる。共用メモリに関する情報を得るためにカーネルモードから共用メモリマネージメント機能を呼び出すことができる。SHMEMロックは、デッドロックが生じないように他のロックに対してランクを有する。
【0115】
B.マルチプロセッサコンピュータシステムにおけるリソースの移動(図9−10E
本発明の特徴によれば、オペレーティングシステムの多数のインスタンスは、単一マルチプロセッサコンピュータにおいて協働的に実行され、ここでは、単一の物理的マシンがソフトウェアにより多数の区画に分割され、各区画は、オペレーティングシステムの個別のコピー又はインスタンスを実行する能力を有する。各個々のインスタンスは、独立して実行するために必要なリソースを有するが、これらインスタンスは、リソースをある区画から別の区画へ移動するように協働する。本発明のこの特徴の原理によれば、移動は、システムアドミニストレータの介在なしに「オンザフライ」でオペレーティングシステムインスタンスの制御のもとで開始及び実行することができる。或いは又、システムアドミニストレータがシステムを再構成することもできる。
【0116】
1つの実施形態によれば、リソースの移動は、「プッシュ」モデルのもとで行われ、ここでは、リソースがその所有区画によって制御され、そしてリソースが別の区画へ移動する前にその区画により解除されねばならない。このモデルによれば、リソースを必要とする第1のオペレーティングシステムインスタンスは、先ず、第2インスタンスからリソースを要求する。この要求に応答して、第2のインスタンスは、それがリソースを予備とすることができるかどうか決定し、もしそうであれば、リソースをアイドル状態にし始める。リソースは、第2インスタンスがリソースの使用を停止したときに転送される。又、「プッシュ」モデルによれば、リソース移動の要求は、オペレータが第2インスタンスにおいてプログラムを実行することにより開始されるか、又は要求を開始するポリシーマネージメントソフトウェアによって開始される。
【0117】
リソースのランタイム移動
APMPシステムが実行された後に、1つの区画に最初に割り当てられたリソースは、別の区画へ移動することができる。この移動は、システムアドミニストレータの制御のもとで行うこともできるし、又はシステムアドミニストレータを関与させずにオペレーティングインスタンスにより開始することもできる。移動は、所有するオペレーティングシステムインスタンスがリソースの使用を停止するか又はコンソールプログラムがリソースの使用を停止する動作を行うことにより達成される。次いで、構成ツリーは、リソースの所有権を別のオペレーティングシステムインスタンスへ転送するように変更される。オペレーティングシステムインスタンスがリソースの使用を停止するようにさせるに必要な動作は、オペレーティングシステムに特有のものである。
【0118】
一般に、いなかるリソースも、付加的なシステム制約によって移動が防止されない限り移動することができる。例えば、APMPシステムのCPUは、それが現在第1区画における一次CPUでなく且つ分散割り込みハンドリングのようなオペレーティングシステム制約により結合されていなければ、第1区画から第2区画へ移動することができる。いつそしてどこにCPUが移動するかのポリシーは、厳密に、CPUが実行するオペレーティングシステムコードによる。
メモリも、第1区画から第2区画へ移動することができる。メモリが第1区画によりプライベートに所有される場合には、単純な仕方で移動できる。メモリが2つの区画間に共用される場合には、メモリが移動の前に全ての区画により完全にロード解除されたことを保証するために、ある付加的な段階が必要となる。
【0119】
移動は、全APMPシステムの再ブートを伴わずに行われるのが好ましいが、あるリソースの移動は、変化の形式及びオペレーティングシステムの能力に基づき、リソース移動に関与する1つ又は両方の区画の再ブートを必要とする。例えば、1つの区画から別の区画への入力/出力プロセッサの移動は、両区画を再ブートすることを必要とする。しかしながら、1つ以上のメモリ断片のメモリ割り当ての変更は、再ブートを必要とせずに、オペレーティングシステムコードによって取り扱われる。
移動プロセスは、新たな所有者がリソースの使用を開始できる前に元のリソース所有者が先ずリソースを解除しなければならないという点で「プッシュ」モデルのもとで動作する。このプッシュ移動プロセスの1つの実施形態における基本的な段階が図9のフローチャートに示されていると共に、図10A−10Eに概略的に示されている。
【0120】
図9において、リソース移動動作はステップ900で始まり、そしてステップ902へ進み、ここで、リソースを必要とするオペレーティングシステムインスタンス(例えば、オペレーティングシステムインスタンス2)が、別のオペレーティングシステム、例えば、オペレーティングシステムインスタンス1からのリソースの使用を要求する。プロセス間割り込み、共通メモリ又はいずれかのメカニズムのような多数の従来の公知のメカニズムによってプロセス間通信を行うことができる。同じ動作段階が、図10Aにも示されている。図10Aは、区画1(1000)及び区画2(1002)の2つの区画より成る例示的システムを示す。各区画1000及び1002は、ボックス1006及び1016として各々概略的に示されたコンソールプログラムを含む。又、各区画1000及び1002は、オペレーティングシステムインスタンス1(1008)及びオペレーティングシステムインスタンス2(1018)で示されたオペレーティングシステムインスタンスも含む。区画1(1000)は、矢印1011で概略的に示すようにオペレーティングシステムインスタンス1(1008)により使用されるリソース1010も含む。移動プロセスの第1ステップにおいて、オペレーティングシステムインスタンス2(1018)は、リソース1010を使用するために、矢印1014で概略的に示された要求をオペレーティングシステムインスタンス1(1008)へ行う。
【0121】
本発明に使用されるプッシュモデルによれば、オペレーティングシステムインスタンス1(1008)は、オペレーティングシステムインスタンス2(1018)への要求されたリソース1010の転送に合意しなければならない。オペレーティングシステムインスタンス1(1008)が合意した場合には、ステップ904に示すようにリソース1010を静止させる。プロセスの次のステップが図10Bにも概略的に示されており、ここでは、図10Aと共通の要素が同じ参照番号で示されている。例えば、区画1は、図10A及び10Bの両方に1000で示されている。図10Bに示すように、オペレーティングシステムインスタンス1(1008)がリソースの移動に合意する場合には、オペレーティングシステムインスタンス1(1008)は、破線矢印1020で概略的に示すようにリソース1010の使用を静止即ち停止する。
【0122】
次いで、オペレーティングシステムインスタンス1(1008)は、ステップ906に示すように、リソースの所有権の意図された変更をコンソール1(1006)に通知する。移動プロセスのこのステップが図10Cに示されている。このステップにおいては、オペレーティングシステムインスタンス1(1008)は、矢印1022で概略的に示すように所有権の転送が要求されたことをコンソール1(1006)に通知する。特に、オペレーティングシステムインスタンス1(1008)は、以下に述べるように、構成ツリー1012においてリソース1010のowner及びcurrent ownerフィールドを変更するようにコンソール1(1006)に通知する。
次いで、ステップ908において、コンソール1(1006)は、リソースの新たな所有者を指示するように構成ツリー1012を変更する。このステップは図10Dに概略的に示されており、コンソール1(1006)は、矢印1026で概略的に示すように構成ツリー1012を変更する。この変更は、矢印1028で概略的に示すように、区画1(1000)から区画2(1002)へリソース1010を効果的に移動し、リソースは、要素1024で概略的に示すように区画2(1002)に新たに現れる。
【0123】
最終的に、ステップ910において、コンソール1(1006)に関連するオペレーティングシステムインスタンス1(1008)は、コンソール2(1016)に関連するオペレーティングシステムインスタンス2(1018)に転送を通知し、従って、オペレーティングシステムインスタンス2(1018)はリソースの使用を開始できる。このルーチンは、ステップ912で終了する。プロセスにおけるこの最終段階は、図10Eに示されており、オペレーティングシステムインスタンス1(1008)は、リソース1024が今や使用できることをオペレーティングシステムインスタンス2(1018)に通知する。このオペレーションは、矢印1030により概略的に示され、既知の従来のプロセス間通信を伴う。オペレーティングシステムインスタンス2(1018)は、次いで、矢印1032で概略的に示すようにリソース1024を使用することができる。
【0124】
既に述べたように、所有されたアクティブな状態から非所有のインアクティブな状態へのリソースの転送を管理するために構成ツリーの各ノードにはowner及びcurrent ownerフィールドが設けられている。リソースを所有するオペレーティングシステムインスタンスだけが、ownerフィールドをゼロにセットすることによりリソースを指定解除できる。ナルのowner及びcurrent ownerフィールドを有するリソースだけが新たな区画及びコミュニティに指定され得る。リソース移動中には、いずれかのインスタンスが構成の不正確な観点を得るのを防止するためにHWRPB及び構成ツリーが一斉に且つ原子的に変更される。同様に、HWRPB及び構成ツリーに対する原子的及び整合された変更により「ホットスワップ」を付随させることもできる。
【0125】
リソースが指定解除されるときには、所有するオペレーティングシステムは、ownerフィールドを指定解除するか又はowner及びcurrent ownerの両方のフィールドを指定解除するかを選択することができる。どのフィールドを指定解除するかの判断は、所有するオペレーティングシステムが所有権の指定解除の前にリソースの使用を停止できる能力に基づいている。所有権を放棄するために再ブートが必要な場合には、ownerフィールドがクリアされるが、current ownerフィールドは不変である。所有するオペレーティングシステムインスタンスが再ブートするときには、初期化中にナルのownerフィールドを有するリソースに対してcurrent ownerフィールドをクリアするように区画のコンソールプログラムを指定することができる。
【0126】
コミュニティの一部分であるオペレーティングシステムインスタンス間にリソースが共用される場合には、オペレーティングシステムインスタンスは、リソースを指定解除するために協働しなければならない。この指定解除は、コミュニティの一部分であるインスタンスによって管理される。
リソースの所有権は、構成ツリーを変更することにより変更される。構成ツリーが変更されるときには、あるルールに従わねばならない。これは、次のものを含む。
1)構成ツリーノードの構成(config)フィールドがツリーハードウェア根ノードを指す場合には、それに対応するリソースは、コミュニティ又は区画とは独立して指定され得る。
【0127】
2)そのノードの構成フィールドがツリーハードウェアの根ノードを指さない場合には、リソースが区画に指定されるときに、対応するツリーノードの全ての子孫を変更してそれらが同じ区画に指定されるようにすると共に、構成ノードに対して変更されつつあるツリーノードからの親チェーン内の全てのツリーノードも同じ区画又はコミュニティ所有者をもたねばならない。構成ノードは、変更されつつあるノードの祖先であって、親ポインタをたどることにより到達できねばならない。
ハードウェアノードの所有権がコミュニティに与えられるときには、全ての子孫がコミュニティ、コミュニティの区画により所有されるか、又は非所有でなければならない。構成ポインタがハードウェアの根でない場合には、構成ノードに対して変更されつつあるノードからの親チェーン内の全てのノードも、同じコミュニティ所有者をもたねばならない。構成ノードは、親ノードをたどることにより到達し得る変更されたノードの祖先でなければならない。
【0128】
ハードウェア要素、例えばCPUは、独立して自由に動作することができる。この場合に、構成ポインタはハードウェアの根を特定する。しかしながら、これらの要素は、独立して動作できない他の要素で構成されることもある。例えば、PCIバスのI/Oコントローラは、PCIバスから分離できねばならない。
メモリのようなあるハードウェア要素は、多数の区画により共用できる。これは、コミュニティを指す所有者フィールドにより表される。従って、コミュニティ内の区画は、要素へのアクセスを共有できる。共用されるハードウェア要素の子孫は、子孫である所有者を特定できる。例えば、メモリサブシステムは、コミュニティにより所有できる。この場合、メモリのハードウェア特徴を表し、エラーの取り扱いを含むメモリコントローラは、コミュニティ内の区画によって所有され、メモリ記述子ノードは、コミュニティによって所有され、そしてその断片は、コミュニティ(共用)及び区画(プライベート)の両方により所有される。
【0129】
別の実施形態
他の移動形態も考えられる。例えば、システムマネージャーは、リソースを静止しそしてリソースを「非指定」状態に入れるように第1のオペレーティングシステムインスタンスに指令することができる。ある時間の後に、第2のインスタンスは、リソースに対する必要性を見つけ、非指定リソースのプールからそれを移動することができる。或いは又、システムマネージャーは、リソースを割り当てるように第2のインスタンスに指令することができる。或いは又、システムポリシーは、あるリソースを一方的に静止させて第2のインスタンスへ転送させるバッチジョブを第1インスタンスにおいて所定の時間に実行させてもよい。これら後者の両方の例においては、リソースに関するインスタンス間の明確な通信はないが、リソースの全体的な使用を整合するある程度の人間の介在又はポリシーが明らかに存在する。
【0130】
更に別の解決策では、インスタンスは、リソースを必要とするときに、非指定のプールからリソースを割り当てることができる。インスタンスは、リソースで終了となると、それを非指定のプールに返送する。プールが空の場合には、インスタンスは、そのときに存在するリソース割り当てで動作しなければならない。従って、共通のプールを有するが、インスタンス間には要求/解除プロトコルが必要とされない。特定の機能を達成するのに使用される特定の命令のような他の特徴、及び本発明の概念に対する他の変更は、特許請求の範囲によって包含されることが意図される。
C.融通性のあるリソース共用レベルをもつソフトウェア区画化のマルチプロセッサシステム(図11−15)
本発明の更に別の特徴によれば、オペレーティングシステムの多数のインスタンスは、全てのプロセッサ及びリソースが互いに電気的に接続された単一のマルチプロセッサコンピュータにおいて協働的に実行される。多数の物理的プロセッサ及びリソースを伴う単一の物理的マシンがソフトウェアによって多数の区画に細分化され、各区画は、オペレーティングシステムの個別のコピー又はインスタンスを実行する能力を有する。各区画は、それ自身の物理的リソース、及び共用と指示されたリソースにアクセスする。1つの実施形態によれば、区画化は、構成ツリーのような構成データ構造体を用いてリソースを指定することにより実行される。
【0131】
ソフトウェアは、CPU、メモリ及びI/Oポートをある区画に指定することによりそれらを論理的に区画化するので、多数の区画間に共用として指示されるリソースは、全部でもよいし、若干でもよいし、又は皆無でもよい。各個々のオペレーティングインスタンスには、一般に、それが独立して実行するために必要なリソースが指定され、これらリソースは、「プライベート」と称される。他のリソース、特にメモリは、2つ以上のインスタンスに指定されそして共用され得る。共用メモリはキャッシュコヒレントであり、従って、インスタンスは緊密に接続され、そして分散型ロックマネージャー及びクラスター相互接続部のような単一のインスタンスに通常割り当てられるリソースを共用することができる。
CPU及びメモリのような新たに加えられるリソースは、異なる区画に動的に指定することができ、そして構成の変更によりマシン内で実行されるオペレーティングシステムのインスタンスにより使用することができる。
【0132】
上記コンピュータシステムを使用して、構成ツリーを適当に操作するだけで、種々のシステム構成を得ることができる。図11は、本発明のコンピュータシステムがマシンにおいてインスタンス生成されるときにどんな構造的記述に似ているかを示す外観図である。この例は、3つの区画1101、1102及び1104に区画化された9個のCPUのSMPマシン1100である。各区画は、1つ以上のCPU(グループ1106、1108及び1110)と、幾つかのプライベートI/Oリソース(1112、1114及び1116と示された)とを有していて、オペレーティングシステムのインスタンス(1118、1120及び1122と概略的に示された)を実行する。オペレーティングシステムは、同じオペレーティングシステムの3つのコピー又は3つの異なるオペレーティングシステムである。このシステムのメモリは、キャッシュコヒレントな共用メモリである。共通メモリ1124は、各オペレーティングシステムインスタンスに対して1つづつの、プライベートメモリの3つのセグメント1126、1128及び1130に区画化され、そしてその残り1132は、協働して使用するための3つの全てのオペレーティングシステムインスタンスに対する共用メモリである。
【0133】
図11に概略的に示すような構成は、図3及び4に示された構成ツリーにおける適当なエントリーにより形成することができる。形成されたものは、単一のコンピュータ内の3つの物理的に独立したコンピュータと同等である。この構造体は、本発明のコンピュータシステムの1つの実施形態の基礎であり、即ちオペレーティングシステムの多数の独立したインスタンスが単一のコンピュータにおいて協働して実行されるものである。本発明のコンピュータシステムは、単一のコンピュータにおいて共用メモリを経て通信する1組の整合された異種オペレーティングシステムである。このようなシステムにおけるオペレーティングシステムのインスタンスは、同じコンピュータシステム内の他のオペレーティングシステムインスタンスとクラスター化することもできるし、又は他のコンピュータシステム内のオペレーティングシステムインスタンスとクラスター化することもできる。
【0134】
本発明のコンピュータシステムにおけるオペレーティングシステムのインスタンスは、SMP構成である。CPUの数はインスタンスの定義の一部部であり、そして構成ツリーのエントリによって決定される。本発明のシステムのインスタンスは、完全なオペレーティングシステムであるから、全てのアプリケーションは、慣例的な単一インスタンスコンピュータにおける場合と同様に振る舞う。例えば、既存の単一システムアプリケーションは、本発明のコンピュータシステムではインスタンスに変化を伴うことなく実行される。既存のクラスターアプリケーションも、システム内のオペレーティングシステムにおいてクラスター化されたインスタンスに変化を伴うことなく実行される。システムは、慣例的な単一システムビューのSMPシステムよりも利用性が高い。というのは、オペレーティングシステムの多数のインスタンスがシステムにおいて実行されるからである。その結果、単一のインスタンスに欠陥が生じても、その欠陥を生じさせたハードウェア又はソフトウェアエラーにも関わらず、他のインスタンスが実行を続けることができる。
【0135】
このようなシステムでは、メモリ1124は、プライベート区分(1126、1128及び1130)及び共用区分(1132)へと論理的に区画化される。各オペレーティングシステムインスタンスは、最小限、それ自身のプライベートメモリ区分を有する。所有するオペレーティングシステムインスタンスの指令による以外は、他のインスタンスがこの物理的メモリ区分にマップすることはできない。オペレーティングシステムのインスタンス(1118、1120及び1112)に対して共用メモリ1124のある部分を使用して互いに通信することができ、そして共用メモリの残り部分をアプリケーションに対して使用することができる。
本発明のシステムにおいて、I/Oサブシステムは、拡張可能でもある。システムには、各インスタンスごとに1つづつ、多数の「一次」CPUがあるので、I/Oワークロードの負荷バランスは良好である。加えて、I/Oコントローラは、SMPシステムにおいて二次CPUへのI/Oの分配をサポートし、I/Oワークロードを更にバランスすることができる。
【0136】
図11には、3つの別々のオペレーティングシステムインスタンスがあるが、インスタンス間の協働が予想される。このような協働は、次の3つの広い分類又は計算モデルにおいて定義することができる。
1)「何も共用しない」−オペレーティングシステムインスタンスは、いかなるリソースも共用せず、互いに干渉せずに協働するよう合意する。
2)「部分的共用(何かを共用する)」−オペレーティングシステムインスタンスは、協働すると共に、メモリ又は記憶装置のようなある限定されたリソースを共用するように合意する。
3)「全てを共用する」−オペレーティングシステムインスタンスは、それらがネットワークに対し単一の凝集したエンティティを表すような点まで、完全に協働しそして全ての使用可能なリソースを共用するよう合意する。
【0137】
例えば、オペレーティングシステムインスタンスは、ユーザに対しオープンVMSクラスターとして現れる。
たとえあるオペレーティングシステムインスタンスがリソースを共用しても、1つ以上のオペレーティングシステムインスタンスは、他の全てから完全にソフトウェア分離した状態で実行することができる。いかなるリソースも共用せずに存在するインスタンスは、独立インスタンスと称され、共用メモリの使用には全く参加しない。より詳細には、基本的なオペレーティングシステムも、そのアプリケーションも、共用メモリにアクセスしない。本発明のコンピュータシステムは、独立したインスタンスのみで構成することができ、このようなシステムは、慣例的なメインフレーム型の区画化に類似している。
【0138】
図12は、「何も共用しない」計算モデルをサポートするために本発明のシステムをいかに構成できるかを示す。この例では、3つの区画1206、1210及び1214が単一のマシン1200内に形成されており、その各々はオペレーティングシステムのインスタンスを実行する。使用可能な12個のCPUは、この例では1206、1210及び1214と示された区画間で任意に等しく分割されている。使用可能なメモリは、プライベートメモリに分割され、そしてインスタンスに指定されている。図12においては、プライベートメモリ部分1216、1218及び1220が示されている。各インスタンスのコード及びデータの両方は、そのインスタンスに指定されたプライベートメモリに記憶される。メモリ1216、1218及び1220は、図12では等しく分割されて示されているが、本発明のアーキテクチャーは、インスタンス間でのメモリの任意の分割をサポートする。従って、ある区画が大きなメモリを必要としそして別の区画が限定されたメモリしか必要としない場合には、システムは、使用可能なメモリを最大限に使用するようにその両方を受け入れることができる。
【0139】
又、各区画は、I/O部分1204、1208及び1212として示されたプライベートI/Oコントローラ/ディスクも有している。メモリが任意に分割されるのと同様に、I/O回路についても同じことが言える。図12に示す「何も共用しない」構成では、使用可能なI/Oリソースは、各区画に対してプライベートであるが、均一に分割されなくてもよい。区画1206、1210及び1214は、マシン内の物理的リンク1202を経て互いにネットワークすることができ、そしてこのリンクは、マシンから他のコンピュータへと延長することができる。
形成されたものは、互いにネットワークされた3つの物理的に別々のマシンと同等である。従来のコンピュータシステムと本発明のシステムとの間の相違は、3つの物理的なボックスではなく、1つのボックスしかないことである。又、マシンが配備されるまで各区画の厳密な構成を決定する必要がない。本発明のシステムの別の独特の特徴は、マシンの配備後に区画の数/サイズを動的に構成できることである。
【0140】
図13は、区画がメモリを共用する部分共用モデルとして構成された本発明のシステムを示す。図13において、図12の要素に対応する要素は、対応する番号で示されている。例えば、図12のマシン1200は、図13ではマシン1300として示されている。前記のように、各区画1306、1310及び1314は、そのインスタンスのコード及びデータが記憶されるそれ自身のプライベートメモリ区分1316、1318及び1320を有する。しかしながら、この構成では、共用メモリ区分1322もあり、全てのインスタンス1306、1310及び1314によりアクセスできるデータ及び/又はコードがここに記憶される。又、3つのインスタンス1306、1310及び1314は、相互接続部1302によって互いにネットワークされる。
【0141】
図13に示された構成の効果は、大きな共用キャッシュメモリ(例えば、データベース又はファイルシステム)を形成して多数のインスタンスによって一緒に使用できることである。又、このシステムは、オペレーティングシステムのインスタンスがこの構成をデアクチベートし又はそこから退出することができ、そして再びそこに加わるときに、依然アクティブなキャッシュメモリへと再マップできることである。キャッシュメモリが大きくなるにつれて、既存のメモリへと再マップするこの能力は、非常に重要なものとなる。というのは、非常に大きなキャッシュメモリの全てのエントリをプライベートメモリスペースにロードするのに非常に時間がかかるからである。
図14は、「全てを共用する」コンピュータシステムとして動作するよう構成された本発明のシステムを示す。図13の場合と同様に、図12及び13の同様の要素に対応する図14の要素は、対応する番号が与えられている。各区画1406、1410及び1414は、ここでも、そのインスタンスのコード及びデータが記憶されるそれ自身のプライベートメモリ1416、1418及び1420を有している。又、データが記憶される共用メモリ区分1422もある。3つのインスタンスは、相互接続部1402により互いにネットワークされるが、記憶相互接続部1424及びクラスター相互接続部1426もある。全てを共用するコンピュータシステムを構成する場合には、次の効果が得られる。
【0142】
1)分散型ロックマネージャー(図示せず)は、共用メモリ1422を使用してそのロックキャッシュ(図示せず)を記憶し、ロック性能を高めることができる。
2)クラスター相互接続部1428は、独立したハードウェアを使用するのに代わって、共用メモリ1422内に配置され、これにより、インスタンス1406、1410及び1414がクラスター化される場合にクラスター通信性能を高めることができる。
3)非常に特殊な機能に対して区画を形成することができる。例えば、I/Oコントローラ(図示せず)をもたずに区画を形成することができ、それを効果的に「計算エンジン」とすることができる。
【0143】
本発明のシステムでは、図12、13及び14に示す3つの全ての計算モデルを区画の適当な構成により単一のコンピュータボックス内で実行することができる。即ち、ある区画は、「何も共用しない」コンピュータとして動作できる。別の区画グループは、「部分的に共用した」コンピュータシステムとして動作することができ、そして更に別の区画グループは、「全てを共用する」コンピュータシステムとして動作することができる。更に、所与のインスタンスが1組のインスタンスとの「部分的に共用した」構成において動作すると同時に、別の(そして完全に個別の)1組のインスタンスとの「全てを共用する」構成において動作するようにすることもできる。
本発明のアーキテクチャーのもとで動作する計算モデル又はモデルの組合せに関わりなく、リソースを動的に再割り当てする能力は、いずれのオペレーティングシステムインスタンスの完全性にも影響することなく可能となる。特に、CPU及びメモリを区画間で移動する能力がサポートされる。
【0144】
従って、システムは、ビジネスのニーズが成長又は変化するときにアプリケーションの要求に適合するようにシステムマネージャーがリソースを指定できるので、システムリソースをより直線的に拡張するという能力を与える。CPUは、本発明のコンピュータ構成に追加されるときに、オペレーティングシステムのいかなるインスタンスに指定することもできそしてシステムのオペレーション中に後で再指定することもでき、従って、リソースを指定する「試行錯誤」方法は有効な戦略となる。特に、システムマネージャーは、リソースの最も効率的な組合せが見つかるまで、オペレーティングシステムのインスタンス間でCPUを移動することができる。オペレーティングシステムの全てのインスタンス及びそれらのアプリケーションは、CPUが移動されるときに実行を継続する。最終的に、インスタンスにわたる割り込みの分配が多数のI/O構成の可能性を与え、例えば、システムのI/Oワークロードは、あるI/Oトラフィックが特定のインスタンスにおいて行われるように区画化することができる。
又、本発明のシステムは、システムが動作している間にリソースを転送することもできる。従って、CPUのような要素は、システム電力がオンに保持されそしてハードウェアシステムの他部分が動作を続ける間に、あるインスタンスから別のインスタンスへ移動できる。これは図15に示されている。図13及び14と同様に、図12、13及び14の同様の要素に対応する図15の要素は、対応する番号が与えられている。図15は、矢印1528及び1530で各々概略的に示されたように、CPU2及び3とCPU8及び9のインスタンス1510への移動を示している。この移動は、8個のCPUをもつインスタンス1510を形成する。このような構成では、インスタンスは「全てを共用する」構成で動作することを要求されず、インスタンスは、いずれのリソース共用レベルで動作することもでき、リソースの移動を完全にサポートする。
【0145】
本発明のシステムは、ある区画において実行されるオペレーティングシステムインスタンスが他の区画に影響を及ぼすことなく停止され得るという性質により個々のI/Oサブシステムを静止させることができる。一般に、スワップされる要素を除いてハードウェアが実行を続ける場合に、ソフトウェアは、できるだけ多くのインスタンス及びそれらのアプリケーションを実行状態に保つ。又、本発明は、システムが動作しそして電力が供給される間にシステムにリソースを追加できるようにするハードウェア特徴である「ホットインスワッピング」もサポートする。ホットインスワッピングの例は、付加的なメモリである。特定の区画のオペレーティングシステムインスタンスが付加的なメモリを動的にマッピングできると仮定すれば、システムは、ホットインスワップされるメモリを、マシンに継続するアクティブな計算環境へと吸収することができる。
【0146】
D.マルチプロセッサコンピュータシステムにおける仮想リソースハンドリング(図16−18)
本発明の更に別の特徴によれば、オペレーティングシステムの多数のインスタンスは、全てのプロセッサ及びリソースが電気的に互いに接続された単一のマルチプロセッサコンピュータにおいて協働して実行される。多数の物理的プロセッサ及びリソースをもつ単一の物理的マシンは、ソフトウェアにより適応式に多数の区画に細分化され、その各々は、オペレーティングシステムの個別のコピー又はインスタンスを実行する能力を有する。各区画は、それ自身の物理的リソース及び共用と指示されたリソースにアクセスする。1つの実施形態によれば、リソースの区画化は、ある構成内にリソースを指定することにより実行される。
【0147】
より詳細には、ソフトウェアは、CPU、メモリ及びI/Oポートを一緒に指定することによりそれらを論理的及び適応式に区画化する。次いで、オペレーティングシステムのインスタンスが区画にロードされる。異なる時間に、異なるオペレーティングシステムインスタンスが所与の区画にロードされる。システムマネージャーが指令するこの区画化は、ソフトウェア機能であり、ハードウェアの境界は必要とされない。各個々のインスタンスは、それが独立して実行するのに必要なリソースを有する。CPU及びメモリのようなリソースは、異なる区画に動的に指定することができ、そして構成を変更することによりマシン内で実行されるオペレーティングシステムのインスタンスによって使用することができる。区画それ自身も、構成ツリーを変更することによりシステムを再ブートすることなく変更することができる。これにより得られる適応式に区画化されたマルチプロセッサ(APMP)システムは、拡張性及び高い性能の両方を示す。
【0148】
個々の各インスタンスは、システムの全ての処理リソースの別々の記録を維持する。各インスタンスは、そのインスタンスに対する各動作状態に基づいてプロセッサを分類する。好ましい実施形態では、インスタンスは、各CPUが動作についてそのインスタンスに適合するかどうか、そのインスタンスの制御下にあるかどうか、そしてそのインスタンス内のSMPオペレーションに使用できるかどうかの記録を維持する。これらの異なる動作状態は、システムのCPUのハイアラーキ分類を表し、そしてシステムは、付加的な分類に適応できる。使用できる付加的な状態は、プロセッサがインスタンスに最初に加わるときに直ちに処理アクティビティを開始するように選択されたかどうかを指示する。
好ましい実施形態では、異なる分類の動作状態のいずれかにあるCPUのメンバーシップが、各分類ごとにビットベクトルを維持する各インスタンスによって記録され、各ビットベクトルの少なくとも1つのビットは、その分類における1つのCPUのメンバーシップ状態に対応する。通常、各ビットベクトルは、各CPUごとに1ビットを有し、例えば、当該インスタンスによるCPU制御を表すビットベクトルは、第1の対応するCPUがそのインスタンスの制御下にある場合には、その第1ビットが第1アサーションレベルにセットされる。CPUがそのインスタンスの制御下にない場合には、第1ビットは第2のアサーションレベルにセットされる。各CPUを表すビットにより、このビットベクトルは、各CPUに対しどれがインスタンスの制御下にあるかを示す指示を与える。同様に、他のビットベクトルも、各CPUの指示を与え、これらの指示は、例えば、どのCPUが動作についてインスタンスに適合するか、どれがSMP動作についてインスタンスに使用できるか、そしてどれが初期化の直後にSMP処理アクティビティに加われるかを示す。このように、各インスタンスは、全ての処理リソースを個々に追跡できると共に、インスタンスに対してそれらの動作状態がどんなものであるかを追跡できる。
【0149】
別の実施形態では、システムのインスタンスに対する処理リソースの動作状態を示す指示が、全てのインスタンスにアクセスできる記憶エリアに維持される。特に、異なるインスタンスの各々とプロセッサとの適合性に関する情報が与えられる。これは、所与のプロセッサが特定のインスタンスへの転送に適しているかどうか各インスタンスが識別できるようにする。
仮想リソースマネージメント
本発明の好ましい実施形態では、コンピュータシステムのCPUリソースは、各インスタンスに対して特定のハイアラーキーに構成される。即ち、システムのCPUは、各インスタンスにより識別され、そして各インスタンスは、CPUをそれ自身の使用又はそれらの潜在的な使用に基づいて分類する。これは、以下に詳細に説明する。
【0150】
好ましい実施形態においては、各インスタンスは、システムにおけるCPUの記録を維持し、それらを、3つのセット、即ち「潜在的」セット、「構成」セット及び「アクティブ」セットの1つに各々分類する。所与のインスタンスの見地から、潜在的セットは、任意の時間におそらくそのインスタンスにおいて実行できる全てのCPUをカバーする。これは、通常、インスタンス及び/又はそれが実行される区画と適合しないようにする構成又は改定レベルのものを除いてシステムの全てのCPUを含む。各インスタンスは、それに適合するシステム内のCPUを決定し、そしてそれらを潜在的セットに含ませる。
構成セットは、所与のインスタンスに対しそのインスタンスの制御下にある全てのCPUを含む。即ち、構成セットは、インスタンスにより制御(又は管理)されるCPUであって、SMPオペレーションに現在関与しているか又は将来関与し得る全てのCPUを含む。CPUの制御がインスタンスによって得られると(そのインスタンスが実行される区画に対するHWRPBのCPUごとのビットにおいてそのCPUの「current owner」ビットをセットすることにより指示される)、新たなインスタンスとのオペレーションに対してそれ自身を初期化する周期が存在する。この周期中に、CPUはSMPオペレーションに関与しないが、尚もそのインスタンスの構成セットの一部分である。初期化が完了すると、CPUは、SMPオペレーションに加わるよう要求する。それが加わると、新たなCPUは、アクティブなセットの一部分ともみなされる。アクティブなセットは、インスタンスのSMPオペレーションに関与する全てのCPUを含む。アクティブモードのCPUは、そのインスタンスのスケジューリングモデルの一部分として命令待ち行列から命令を引き出すことができる。
【0151】
図16は、多数の区画1600、1602及び1604を概略的に示すと共に各区画のインスタンスがCPUをいかにセットへと編成するか示している。この例は、8個の異なるCPUのみを使用するが、いかなる数のCPUでシステムを形成してもよいことが当業者に明らかであろう。図16の例では、各インスタンスは、CPU0−7の各々を潜在的セットとして識別している。従って、これらはシステム内の全てのCPUを表すか、又はシステム内の他のCPUがどのインスタンスとも適合しないかのいずれかである。もちろん、2つのインスタンスが異なる適合性要件を有すると仮定すれば、CPUが1つのインスタンスの潜在的セットにあるが、別のインスタンスの潜在的セットにはないような他の例も存在する。
【0152】
区画1600、1602、1604におけるインスタンスの構成セットは、各インスタンスごとに異なる。所与の時間にCPUリソースの制御権をもつことができるのは1つのインスタンスだけであるから、常にこのようにならねばならない。図示されたように、CPU0、CPU2、CPU3及びCPU7は、区画1600において実行されるインスタンスの構成セットにある。CPU1及びCPU5は、区画1602において実行されるインスタンスの構成セットにある。更に、CPU4及びCPU6は、区画1604において実行されるインスタンスの構成セットにある。従って、これらのCPUは、これらの異なるインスタンスにより各々制御される。
区画1600、1602、1604で各々実行される3つのインスタンスのアクティブセットにおけるCPUは、区画1600のインスタンスの唯一の構成セットであるCPU2を除いて、これらインスタンスの構成セットにおけるものと同じである。この場合に、CPU2は、区画1600のインスタンスの制御へと最近移動されており、そしてSMPオペレーションに加わる前に初期化段階を通ろうとしていると仮定する。実際の処理アクティビティにおいてシステムの他のCPUに加わると、区画1600のインスタンスに対するアクティブなセットの一部分となる。
【0153】
好ましい実施形態では、各インスタンスは、ビットのグループ即ち「ビットベクトル」を経てCPUにおける所有権の状態を追跡する。各インスタンスのビットベクトルは、そのインスタンスの潜在的セット、構成セット及びアクティブなセットの各々におけるCPUの関与を追跡するのに使用される。その例が、区画1600において実行されるインスタンスの潜在的セット、構成セット及びアクティブなセットの各々に対するビットベクトルを概略的に示した図17に示されている。
図17に示すように、当該ビットグループの各々に対し、ビットのアサーションレベルは、インスタンスによって確認される3つの指示されたセットの1つにおいてそのビットにより表されるCPUの相対的なメンバーシップを指示する。所与のビットベクトルにおける各ビットは、そのセットに対するCPUの1つの状態を表す。図17のビットベクトルの各々は、異なるセットに対応し、そして所与の1つのビットにより表される特定のCPUは、この図において、ビットの表示の上の「CPU#」ラベルで指示される。従って、図17に示されたインスタンスの場合に、CPUの各々は、インスタンスの潜在的セットのメンバーである。これは、区画1600(図16)におけるインスタンスの「潜在的セット」の見出しの下に示されたCPUのリストに対応する。同様に、CPU0、2、3及び7は、インスタンスの構成セットのメンバーであるから、図17のこれらのCPUに対応するビットは各々「1」にセットされ、一方、他のビットは「0」にセットされる。最終的に、アクティブなセットは、CPU0、3及び7に各々対応するビットを有し、これらは「1」にセットされ、他のビットは「0」にセットされる。これは、CPU0、2、3及び7が区画1600のインスタンスの構成セットにあり、一方、CPU0、3及び7のみがそのアクティブなセットにあることを指示する。
【0154】
図17に示すビットベクトルは、8個のCPUを表すように制限される。しかしながら、これは、説明を簡略化するために過ぎない。当業者であれば、コンピュータシステムは、おそらく、更に多くのCPUを有し、そして現在、好ましい実施形態では、64個までのCPUを許すように各ビットグループに64個の異なるビットが使用されるが、もっと多くを追加できることが明らかであろう。更に、システムのインスタンスに対するCPUの動作状態を追跡するための別の方法も存在し、これらの別の方法も、本発明の範囲内とみなされることが当業者に明らかであろう。
上記したCPUの分類は、システムのインスタンスに対するCPUセットのハイアラーキー的分割を与える。この点において、異なるオペレーションレベルが各インスタンスにより独立して確認され、そして将来、付加的なレベルを追加することができる。所与のインスタンスの構成セットのメンバーであるCPUは、そのインスタンスが実行される区画が構成ツリーにおいてcurrent ownerとして指示されるところのCPUに対応する。アクティブなセットのメンバーであるものは、当該インスタンスにより現在所有されているとして指示されるだけでなく、SMPに加わるようにも使用できる。従って、本発明は、どの処理リソースがその使用のために現在得られるかを各インスタンスに指示するだけでなく、インスタンスへ転送できる他のどんなプロセッサがシステム全体にあるかも指示することにより、各インスタンスの情報ベースを拡張する。これは、例えば、インスタンスが、プロセッサを制御すると分かっている他のインスタンスからプロセッサを選択的に要求できるようにする。
【0155】
本発明の別の実施形態では、各インスタンスは、システムのCPUリソースを分類するために付加的なセットを使用する。この付加的なセットは、「オートスタート」セットと称されるもので、インスタンスが構成セットに入った後に処理アクティビティを直ちにスタートできるようにするプロセッサを識別する。通常は、CPUが新たな区画に移動されるときに、それが新たなインスタンスによって停止され、次いで、処理アクティビティを再開するまでにインスタンスからの特定のスタート命令を待機しなければならない。しかしながら、オートスタートセットのプロセッサは、新たなインスタンスによって停止されず、初期化の際にSMP処理に加わるように直ちに要求する。
図18は、異なるCPUが所与のインスタンスのビットベクトルにより異なるセットでいかに識別されるかを示すという点で図17に類似している。又、図18は、オートスタートセットにあるプロセッサを識別するのに使用されるビットベクトルを概略的に示す。図示されたように、オートスタートセットは、他のいずれのセットのサブセットでなく、それ故、構成セット又はアクティブなセットのいずれとも異なる設定を有する。例えば、CPU0はアクティブなセットであり、従って、SMP処理に現在関与しているが、これはオートスタートセットのメンバーではなく、従って、インスタンスに最初に加わるときに停止され、そしてSMP処理に加わることができる前に特定のスタート命令を必要とする。一方、CPU5は、現在、構成セットでもアクティブなセットでもなく、オートスタートセット内にあると識別される。従って、CPU5がシステムの別のインスタンスによって現在制御される間に、図18のセットが示されたところのインスタンスの制御へと移動されるべき場合には、インスタンスによって停止されずに、必要な初期化を受け、次いで、進行中の処理アクティビティに加わるように試みる。
【0156】
別の実施形態においては、各インスタンスごとにそのインスタンスのローカルであるところの上記セットにより与えられる情報は、システムの全てのインスタンスに全体的に使用することもできる。全てのインスタンスに対する全てのセット情報を共用メモリの中央アレーに配置することにより、全てのインスタンスには、どのプロセッサがどのインスタンスに適合するかに関わりなく情報へのアクセスが与えられる。この情報が与えられると、所与のインスタンスからの特定の要求に応答しなかったプロセッサのプッシュ移動を、そのプロセッサが適合すると分かっているインスタンスへ向けることができる。従って、プロセッサが適合しないインスタンスへ移動される状態が回避される。更に、もし必要であれば、付加的なリソースを要求するインスタンスは、目標とする要求ではなくて、一般的なブロードキャスト要求としてそれを行うことができ、そして要求側インスタンスに適合すると分かっているリソースのみを移動するためにその要求に応じる別のインスタンスに依存することができる。この実施形態の変形は、各インスタンスの潜在的セットに関する情報のみを全体的なアレーとして与える。従って、各インスタンスは、それ自身のリソースの状態を決定するためにそれ自身のローカルセット情報を有し、そしてシステム内の全てのインスタンスに関する適合性情報に対して全体的アレーをアクセスする。
【0157】
E.マルチプロセッサシステムにおけるメモリの動的な共用(図1−8b)
本発明の更に別の特徴によれば、オペレーティングシステムの多数のインスタンスは、全てのプロセッサ及びリソースが互いに電気的に接続された単一のマルチプロセッサコンピュータにおいて協働して実行される。多数の物理的プロセッサ及びリソースをもつ単一の物理的マシンは、ソフトウェアにより多数の区画へ適応式に分割され、各区画は、オペレーティングシステムの個別のコピー又はインスタンスを実行する能力を有する。各区画は、それ自身の物理的リソース及び共用と示されたリソースにアクセスする。1つの実施形態によれば、リソースの区画化は、構成内にリソースを指定することにより実行される。
より詳細には、ソフトウェアは、CPU、メモリ及びI/Oポートを一緒に指定することによりそれらを論理的に且つ適応式に区画化する。オペレーティングシステムのインスタンスは、次いで、区画にロードされる。異なる時間に、異なるオペレーティングシステムインスタンスが所与の区画にロードされる。システムマネージャーが指令するこの区画化は、ソフトウェア機能であり、ハードウェアの境界は必要とされない。各個々のインスタンスは、独立して実行するために必要なリソースを有する。CPU及びメモリのようなリソースは、異なる区画に動的に指定することができ、そして構成を変更することによりマシン内で実行されるオペレーティングシステムのインスタンスによって使用することができる。又、区画それ自身は、構成ツリーを変更することによりシステムを再ブートせずに変更することができる。それにより得られる適応式に区画化されたマルチプロセッサ(APMP)システムは、拡張性及び高い性能の両方を示す。
【0158】
オペレーティングシステムの単一コピー又はインスタンスに対する実行環境を「区画」と称する。コミュニティは、リソースを共用できる区画のグループである。メモリは、特定の区画に対してプライベートであってもよいし、コミュニティ内の区画によって共用されてもよい。APMPコンピュータシステムが形成されるときには、形成インスタンスが構成ツリーを読み取り、そしてコミュニティにより所有されるメモリを含む共用リソースのためのマネージメント構造体を構築する。単一のシステムは、構成ツリー内に自分の表示を各々有する1つ以上のコミュニティをもつことができる。
構成ソフトウェアは、APMPコンピュータシステムに対する同期ポイントとなるように共用メモリページのグループを選択する。これらのページは、他のインスタンスがAPMPコンピュータシステムのアクティブなメンバーであるかどうかを決定するのに使用される情報を含む。これら同期ページの位置の指示が構成ツリー内に記憶される。あるインスタンスがAPMPコンピュータシステムに加わるときには、それが構成ツリー内の情報を使用して、共用ページへのマップを行う。共用ページの内容から、インスタンスは、それがアクティブなAPMPコンピュータシステムに加わるか又はAPMPコンピュータシステムを形成するかを決定することができる。インスタンスがAPMPコンピュータシステムを形成する場合には、構成ツリーを変更することによりAPMPコンピュータシステムを同期するのに使用されるページを構成することができる。このように、同期ポイントとして既に使用された物理的メモリは、システムから除去することができる。
【0159】
共用メモリは、メモリのハードウェア特性に基づいて、共通特性区画と称するグループに編成することができる。共用メモリは、1つ以上のオペレーティングシステムインスタンスにより同時にマップすることのできる領域へ指定される。又、共用メモリは、1つ以上のオペレーティングシステムインスタンスにおいて実行されるアプリケーションによってマップすることもできる。共用メモリは、インスタンスのプライベートメモリとして使用するためにオペレーティングシステムインスタンスによって「借りる」こともできる。更に、プライベートメモリの場合には、CPUがメモリに最も速くアクセスするインスタンスによりプライベートメモリを所有できるようにすることにより、非均一なメモリアクセスが受け入れられる。
【0160】
F.共用メモリをもつマルチプロセッサシステムのメモリの再構成(図19−21)
本発明の更に別の特徴によれば、オペレーティングシステムの多数のインスタンスは、全てのプロセッサ及びリソースが互いに電気的に接続された単一のマルチプロセッサコンピュータにおいて協働して実行される。多数の物理的プロセッサ及びリソースをもつ単一の物理的マシンは、ソフトウェアにより多数の区画へ適応式に分割され、各区画は、オペレーティングシステムの個別のコピー又はインスタンスを実行する能力を有する。各区画は、それ自身の物理的リソース及び共用と示されたリソースにアクセスする。1つの実施形態によれば、リソースの区画化は、構成内にリソースを指定することにより実行される。
【0161】
より詳細には、ソフトウェアは、CPU、メモリ及びI/Oポートを一緒に指定することによりそれらを論理的に且つ適応式に区画化する。オペレーティングシステムのインスタンスは、次いで、区画にロードされる。異なる時間に、異なるオペレーティングシステムインスタンスが所与の区画にロードされる。システムマネージャーが指令するこの区画化は、ソフトウェア機能であり、ハードウェアの境界は必要とされない。各個々のインスタンスは、独立して実行するために必要なリソースを有する。CPU及びメモリのようなリソースは、異なる区画に動的に指定することができ、そして構成を変更することによりマシン内で実行されるオペレーティングシステムのインスタンスによって使用することができる。又、区画それ自身は、構成ツリーを変更することによりシステムを再ブートせずに変更することができる。それにより得られる適応式に区画化されたマルチプロセッサ(APMP)システムは、拡張性、融通性及び高い性能を示す。
【0162】
メモリは、ソフトウェア制御のもとで区画又はコミュニティへ或いはそこから再構成することができ、そしてハードウェアホットインスワッピング又はアウトスワッピングがサポートされる。一般に、メモリは、プライベート、共用又は非所有の3つの状態の1つにある。メモリは、それが単一のシステム区画によって「所有」される場合にプライベートである。メモリは、それがコミュニティにより所有される場合に共用である。コミュニティは、リソースを共用する1つ以上の区画の集合である。さもなくば、非所有である。メモリは、3つのいずれかの状態の間で直接再構成することができる。例えば、メモリは、ある区画のプライベートから別の区画のプライベートへ、又はコミュニティにおける共用からある区画のプライベートへと再構成することができる。メモリは、これをアウトスワップ又はインスワップできる前に、オペレーティングシステムインスタンス及びコンソールソフトウェアによって非所有状態に入れられ、これはシステム構成ツリーに反映される。ページフレーム番号データベースは、インスワップすることのできる全ての考えられるメモリを含むサイズにされ、そして追加されるメモリページは、ページフレーム番号データベースエントリーページとして使用することができる。従って、新たなメモリを容易に受け入れることができる。上記のように、メモリをアウトスワップするためには、メモリが非所有状態になければならない。アウトスワップされるべきメモリが共用状態又はプライベート状態にある場合には、アウトスワッピングを許すためにそれが非所有状態に入れられる。
【0163】
メモリの再構成
ページフレーム番号(PFN)データベース設計は、ソフトウェア制御のもとでメモリをオペレーティングシステムインスタンスへ又はそこから再構成することができる。プライベートメモリは、共用されるように再構成することができ、共用メモリは、プライベートとなるように再構成することができ、そして1つの区画に対してプライベートなメモリは、別の区画に対してプライベートとなるように再構成することができる。又、プライベートであるか又は共用であるメモリは、非所有となるように再構成することができる。メモリ再構成は、ハードウェアホットインスワッピング又はホットアウトスワッピングをサポートすることができる。メモリが構成ツリーにおいて「非所有」状態にあるときには、それをインスタンスのプライベートメモリへと再構成することもできるし、又はコミュニティにおける共用メモリの一部分として再構成することもできる。新たなメモリがシステムへとインスワップされるときには、メモリは最初に非所有状態に入れられる。更に、メモリは、それがシステムからアウトスワップできるまでに、非所有状態になければならない。それ故、メモリのホットスワッピングをサポートするためには、オペレーティングシステムインスタンス及びコンソールソフトウェアは、メモリを非所有状態へ及び非所有状態から再構成しなければならない。メモリを再構成するときには、ページの範囲は、説明上、8メガバイト(MB)整列される(システムページサイズ平方分割8バイト)。ページの範囲は、8MBの倍数のサイズであり、システムから再構成されるべき範囲内のページが使用される場合には、他の制約が、以下に述べるように適用される。
【0164】
新たなメモリは、いつでもシステムに追加することができる。というのは、PFNデータベースは、インスワップすることのできる全ての考えられるメモリを含むサイズにされ、そして新たなページは、PFNデータベースエントリページを形成するように常に使用できるからである。システムからメモリを除去するために、ページの範囲がプライベートであるか、共用であるか又は非所有であるかが最初に決定される。メモリが既に非所有とマークされている場合には、それが除去されると考えられる。
プライベートメモリを除去するためには、空きページリストに類似したページフレーム番号の除去ページリストが、メモリの除去をサポートするために確立される。いずれかのときに、ページをオンラインで除去できないと決定された場合には、システムを遮断し、ページをコンソールソフトウェアで非所有として構成し、そしてオペレーティングシステムインスタンスを再スタートさせることができる。コンソールが範囲内の全ての又は幾つかのページを使用する場合には、コンソールは、それ自身を異なる組のページへと再配置する。この再配置は、種々の方法で行うことができる。例えば、コンソールは、そのページを、区画が所有する別の種類のページにコピーし、次いで、他の組のページにおいて実行を開始することができる。或いは又、別の区画内の別のコンソールが区画を分解し、ページの範囲を「非所有」に再指定し、次いで、メモリを伴わずに区画を再形成することができる。更に、全システムを遮断し、メモリを除去し、そしてシステムを再スタートさせることができる。除去動作は、除去ページリストから、空き、ゼロ化又は不良ページリストへとページを移動することにより、いつでも断念することができる。
【0165】
除去されるべきページの範囲がプライベートメモリである場合には、全てのページを除去できるか又は除去動作が断念されるまで、次の段階が繰り返される。このプロセスが図19のフローチャートに示されている。図19のフローチャートに示されたプロセスに入る前に、メモリの除去を許すに充分なメモリがあるかどうか決定される。容易に使用できる予備メモリの量を指示するために、通常、システムパラメータ、即ち流動的ページカウントが使用される。この流動的ページカウントが小さ過ぎ、即ち除去を受け入れるには不充分な流動的ページしかシステムにない場合には、ユーザへエラーが返送され、さもなくば、除去されるべき範囲の各ページが、図19に示すステップで述べるように検査される。
プロセスは、ステップ1900で始まり、そしてそこからステップ1902へ進み、除去されるべきページ範囲内の第1の非除去ページが位置決めされる。ステップ1902から、プロセスはステップ1904へ進み、そこで、除去されるべきページ(1つ又は複数)が保留中の入力/出力オペレーションを有しそしてこれらページがスキップされるかどうか決定され、それらのI/Oオペレーションが完了すると、ページを除去に対して再考慮することができる。ページが保留中のI/Oを有する場合には、動作がステップ1902へ復帰し、そこで、第1の非除去ページが位置決めされ、そしてそこから上記のようにステップ1904へ進む。システムが他の作業を実行できるようにするために、システムは、この点でストールし、I/Oが完了するのを待機する。
【0166】
現在の非除去ページが保留中のI/Oを有していない場合には、プロセスは、ステップ1904からステップ1906へ進み、そこで、ページが空きページリストにあるか、ゼロ化ページリストにあるか、非テストページリストにあるか、又は不良ページリストにあるかを決定する。メモリページのいずれかがこれらリストのいずれかにある場合には、ステップ1908においてリストからページが除去されそして除去ページリストに入れられる。空きページは、再構成される範囲の一部分でもある空きページへコピーページがコピーされないように、最初に処理される。ステップ1908から、プロセスはステップ1926へ進み、そこで、全てのページが除去ページリストに入れられたかどうか決定され、そしてもしそうであれば、プロセスはステップ1928で終了となる。一方、全てのページが除去ページリストに入れられない場合には、プロセスはステップ1902へ戻り、そしてそこから上記のように進む。もし所望ならば、永久的なループ動作を回避するために、繰り返しの数を制限しそしてエラー回復メカニズムを実行するように選択することもできる。
【0167】
空き、ゼロ化、非テスト又は不良ページリストにページがない場合には、プロセスはステップ1906からステップ1910へ進み、そこで、変更ページリストにページがあるかどうか決定される。変更ページリストにページがない場合には、プロセスはステップ1914へ進む。一方、変更ページリストにページがある場合には、プロセスはステップ1912へ進み、そこで、ページがシステムページファイルのような補助記憶部に書き込まれる。ステップ1912から、プロセスはステップ1926へ進み、そしてそこから上記のように進む。一方、プロセスがステップ1910からステップ1914へ進んだ場合には、ステップ1914において、いずれかのページがプロセスページであるかどうか、即ちアプリケーションが実行されるページであるかどうか決定される。各プロセスは、多数のスレッドを有するので、各プロセスは、他のプロセスから離れたそれ自身のページテーブルを有する。いずれかのページがプロセスページである場合には、プロセスページテーブルへのアクセスを得るためにプロセスのコンテクスト内で実行するメカニズムを与えるASTがプロセスに送られ、このASTは、ページテーブルへのアクセスを同期させるために必要に応じてプロセスを単一スレッドにセットする。ページには新たなページフレーム番号が割り当てられ、そしてページの内容が新たなページフレーム番号にコピーされる。古いページフレーム番号は、ステップ1916においてインスタンスの除去ページリストに入れられる。ステップ1916から、プロセスはステップ1926へ進み、そしてそこから、上記のように進む。
【0168】
ステップ1914において、どのページもプロセスページでないことが決定された場合には、プロセスはステップ1918へ進み、そこで、いずれかのページが全体的区分の一部分であるかどうか、即ち多数のプロセスにより同時にアクセスされた1組のプライベートページであるかどうかが決定される。いずれかのページが全体的区分の一部分である場合には、プロセスはステップ1918からステップ1920へ進む。ステップ1920において、全体的区分の名前がユーザに表示され、したがって、ユーザは、メモリを解放するためにどのアプリケーションを遮断すべきか決定することができる。或いは又、ページがどこにマップされるかを追跡することのできるオペレーティングシステムは、その区分にマップされた全てのプロセスを保留し、全てのページをコピーし、全てのプロセスページテーブルエントリーを変更し、そして古いページフレーム番号を除去ページリストに入れることができる。ステップ1920から、プロセスは、ステップ1926へ進み、そしてそこから上記のように進むことができる。ステップ1918において、全体的区分の一部分であるページがないことが決定された場合には、プロセスはステップ1922へ進み、そこで、いずれかのページがシステムアドレススペースにマップされるかどうか決定される。どのページもシステムアドレススペースにマップされない場合には、プロセスはステップ1922からステップ1926へ進み、そしてそこから上記のように進む。
【0169】
一方、システムアドレススペースへマップされるページがある場合には、プロセスはステップ1924へ進み、そこで読み取り専用のページがコピーされる。コピーされると、ページは除去ページリストに入れられる。読み取り/書き込みページは、インスタンス内の全てのCPUが実行を一時的に阻止され、それらがページの内容を変更しない間だけ、コピーされる。一度に1ページがコピーされそしてコピーされたページが除去ページリストに入れられる。ステップ1924における移動の後に、プロセスはステップ1926へ進み、そしてそこから上記のように進む。
共用メモリを除去するために、ページフレーム番号の新たなリストが、各共用メモリ共通特性区画データ構造体内に確立され、即ちAPMPデータベース内の各SHM CPP構造体内に確立される。このリストは、共通特性区画除去ページリストと称する。これらのリストは、除去される準備のできた全てのページの場所を一時的に保持する。8MB範囲内の全てのページが適当な除去ページリストに配置されたときだけ、ページを除去することができる。任意の時点に、共用セット(メモリのようなリソースを共用するインスタンスのセット)が動作する間にページが除去できないと決定された場合には、共用セットを分解し、ページを非所有とマークし、そして共用セットを再形成することができる。ページを、共通特性区画除去ページリストから、ページの手前の状態に基づいて空きページ又は不良ページリストへ移動し、即ちそれが空きページリストにあった場合には空きページリストへそして不良ページリストにあった場合には不良ページリストへ移動することにより、除去動作をいつでも断念することができる。
【0170】
共用メモリを除去するプロセスが図20のフローチャートに示されており、このプロセスはステップ2000で始まり、そしてそこからステップ2002へ進み、除去されるべきページ範囲の第1の非除去ページが位置決めされる。ステップ2002から、プロセスはステップ2004へ進み、そこで、除去されるべきページ範囲内のいずれかのページが保留中のI/Oを有するかどうかが決定される。保留中のI/Oを有するページはスキップされ、そしてプロセスはステップ2002へ復帰し、上記のように第1の非除去ページが位置決めされる。システムが他の作業を行えるようにするために、システムはこの時点でストールし、I/Oの完了を待機する。
保留中のI/Oを有するページがない場合には、プロセスはステップ2004からステップ2006へ進み、そこで、いずれかのページがAPMPデータベースの一部分であるかどうかの決定がなされる。いずれかのページがAPMPデータベースの一部分である場合には、ステップ2008においてエラーがユーザへ返送される。このような場合には、異なるページにおいてAPMPデータベースで共用セットを再形成しなければならない。これは、共用セットを分解し、古いAPMPデータベースページを非所有とマークし、新たな組のAPMPデータベースページを選択し、次いで、共用セットを再形成することにより達成することができる。このプロセスは、ステップ2008から進み、ステップ2030において終了となる。
これらのページを記述するページフレーム番号データベースエントリページはマップ解除されそして共通特性区画空きページリストへ解放され、共用メモリを記述するPMAPアレーは変化を反映するように更新され、そしてコンソールが呼び出されてページが非所有とマークされる。ステップ2028からプロセスはステップ2030へ進んで終了となる。ステップ2026において、共用メモリ共通特性区画除去ページリストに全てのページが存在しないとプロセスが決定すると、プロセスはステップ2026からステップ2002へ戻り、そしてそこから上記のように進む。ステップ2006において、どのページもAPMPデータベースの一部分でないとプロセスが決定すると、プロセスはステップ2010へ進み、そこで、いずれかのページが空き、不良又は非テストページリストにあるかどうか決定され、もしそうである場合には、ページが除去されそしてステップ2012において共通特性区画除去ページリストに入れられる。ステップ2012からプロセスはステップ2026へ進み、そしてそこから上記のように進む。
【0171】
ステップ2010において、どのページも空き、不良又は非テストページリストにないことが決定されると、プロセスはステップ2014へ進み、そこで、いずれかのページが共用メモリページフレーム番号データベースページであるかどうか決定され、そしてもしそうであれば、プロセスはステップ2016へ進む。ステップ2016において、ページの範囲が、共通特性区画除去ページリストにない共用メモリ共通特性区画内に残された唯一のページを含むと仮定すれば、共用メモリ共通特性区画がそのコミュニティから除去される。ステップ2016において、共用メモリ共通特性区画は無効とマークされ、従って、そこからページを割り当てる試みはなされない。共用メモリを記述するPMAPアレーは、メモリの除去を反映するように更新される。他の共用メモリAPMPデータベース構造体は、共用メモリ共通特性区画の除去を反映するように更新され、そしてコンソールが呼び出されて、ページが非所有とマークされる。或いは又、PFNデータベースページが、除去ページリストにない共用メモリ共通特性区画内に残された唯一のページでない場合には、ユーザにエラーが返送され、この場合には、ユーザは、共用セットを分解し、ページを非所有とマークし、そして共用セットを再形成することができる。これらのページをコピーするために、そのページを含む共用メモリ共通特性区画は、一時的に無効とマークされ、そしてPFNデータベースページのマッピングは、読み取り専用とマークされる。次いで、あるインスタンスが共通特性区画から割り当てられた新たな組のページへそれらのページをコピーすることができる。次いで、全てのインスタンスは、それらのマッピングを古いページから新たなページへと変更し、そして古いページを共通特性区画除去ページリストに入れることができる。次いで、プロセスは、ステップ2016からステップ2026へ進み、そしてそこから上記のように進む。
【0172】
ステップ2014において、あるページが共用メモリページフレーム番号データベースページでないと決定された場合には、プロセスはステップ2018へ進み、そこで、いずれかのページが、システムスペースへマップされた共用メモリ領域の一部分であるかどうか決定され、もしそうであれば、プロセスはステップ2020へ進み、そこで、共用メモリ領域コールバックルーチンが呼び出され、除去されるべく使用されるメモリを含む。コールバックルーチンは、アプリケーションを遮断するか、又は新たな共用メモリ領域を形成して新たな領域を使用し始める。それとは別に、又はコールバックルーチンに関連して、コンソールを通して共用メモリ領域のタグを表示することができる。これは、共用メモリを使用しているアプリケーションを遮断するようにユーザが助成できるようにする。ステップ2020から、プロセスはステップ2026へ進み、そしてそこから上記のように進む。
【0173】
ステップ2018において、どのページも、システムスペースにマップされた共用メモリ領域の一部分でないことが決定されると、プロセスはステップ2022へ進み、そこで、いずれかのページが共用メモリの全体的区分の一部分であるかどうか、即ち1つ以上のプロセスのアドレススペースへの1組の共用ページマッピングであるかどうか、従って、全てのプロセスが同じページにアクセスできるかどうか決定される。共用メモリの全体的区分の一部分である幾つかのページが存在する場合には、プロセスはステップ2024へ進み、そこで、この全体的区分をマップした全てのインスタンスにおいてコールバックルーチンが呼び出される。全体的区分へマップされた全てのプロセスは保留することができ、このとき、コードは、1組のページから別の組へ全てのデータをコピーし、全てのプロセスページテーブルエントリを変更し、全体的区分のデータ構造体を変更し、そして古いページフレーム番号を共通特性区画除去ページリストに入れることができる。或いは又、全体的区分へマップする各プロセスは、遮断することが通知されるか、又は全体的区分の名前を表示して、除去オペレーションを助成するためにどのアプリケーションを遮断すべきかユーザが決定できるようにする。ステップ2024から、プロセスはステップ2026へ進み、そしてそこから上記のように進む。
【0174】
I/Oが共用メモリへと開始された場合に、共用メモリの全てのI/Oが完了するのを確かめるまでメモリが別の目的で再使用されないよう確保するために、I/Oデバイスは、I/Oが完了したときにインスタンスに割り込み、次いで、システムは、I/Oが完了したことを記録する。或いは又、インスタンスの区画内の全てのI/Oバスがリセットされたときに、I/Oが完了する。プライベートメモリにおけるSHM DESC構造体では、I/O基準カウントを意味するI/Orefcntと称するフィールドがある。共用メモリ領域当たりに1つのSHM DESC構造体がある。
APMPデータベースにおけるSHM REG構造体では、「取り付けられたビットマスク」と称するビットマスクがある。共用メモリ領域当たり1つのSHM REG構造体がある。取り付けられたビットマスクは、APMPシステムの各インスタンス当たり1つのビットを含む。取り付けられたビットマスクのビットがセットされた場合には、対応するインスタンスが領域に取り付けられる。
【0175】
コンソールにより維持される構成ツリー構造体においては、コンソールコールバックルーチンを呼び出すことによりセット又はクリアすることのできる区画ノードにIDフィールドが存在する。区画のI/Oバスがリセットされた後のシステムブート中に、インスタンスの区画ノードにおけるこのフィールドがクリアされる。
共用セットがクリアされるときには、
1)このコミュニティ内の他の全てのインスタンスの区画ノードを通るループを形成する。
2)IDフィールドが非ゼロであり、そして構成ツリー内に指示された区画において実行されるインスタンスがない場合には、その区画に接続された全てのI/Oバスをリセットする。
【0176】
3)このインスタンスの区画ノードにおけるIDフィールドをID(APMPデータベースが再形成されるたびに増加する数)にセットする。
インスタンスが共用セットに加わるときには、
1)インスタンスの区画ノードにおけるIDフィールドを現在IDにセットする。
共用セットの退出中に、
1)全ての共用メモリ領域から取り外されるルーチンをコールする。
2)構成ツリーのインスタンス区画ノードにおけるIDフィールドをクリアする。
I/Oが開始されるときには、I/Oが実行される各ページに対してルーチンshim reg increfがコールされる。I/Oが完了したときに、各ページごとにルーチンshim reg decrefがコールされる。
【0177】
Figure 0004634548
【0178】
Figure 0004634548
タグが、供給されたタグに合致するような共用メモリのSHM REG構造体をサーチする。
このようなSHM REG構造体が見つからない場合には、
−新たなSHM REG構造体を割り当てる。
【0179】
−SHM REGロックを得る。
−SHM REG構造体の「init in progress」ビットをセットする。
−領域に対する共用メモリページを割り当てる。
−SHM REG構造体の「init in progress」ビットをクリアする。
−SHM REGロックを解除する。
このインスタンスに対するSHM REG取付されたビットマスクのビットをセットする。
供給される仮想マッピング情報を用いて共用メモリ領域へマップする。
ルーチンshm reg delate:
入力:共用メモリ領域id
この領域のプライベートメモリにおいてSHM DESCアドレスを得る。
【0180】
I/Orefcntフィールドが非ゼロの場合には、エラーを返送する。
共用メモリ領域をマップ解除する。
この領域の共用メモリにおいてSHM REGアドレスを得る。
このインスタンスのSHM REG取付されたビットマップにおいてビットをクリアする。
取り付けられたビットマスクが、セットされたビットをより多く有する場合には、復帰する。
SHM REG取付されたビットマスクがセットされたビットをもたない場合には、
−SHM REGロックを得る。
【0181】
−SHM REG構造体の「delete in progress」ビットをセットする。
−全ての共用メモリページを適当な共用メモリ空きページリストへ割り当て解除する。
−「delete in progress」ビットをクリアする。
−SHM REGロックを解除する。
−SHM REGデータ構造体をクリーンアップする。
システムクラッシュ中に:
全てのI/Oバスをリセットする。
インスタンスの区画ノードにおけるIDフィールドをクリアする。
別のインスタンスに割り込むシステムコードをコールし、インスタンスがクラッシュしたことを指示する(他のインスタンスの割り込みハンドラーは、shmem APMPDB recoverをコールする)。
【0182】
クラッシュダンプを開始する。
ハートビート監視中に:
インスタンスのハートがある時間中にビートしない場合に、インスタンスがデッドが宣言され、共用セットから除去される。
SHM REG同期ロックを得、必要に応じてロックをブレークする。ロックがデッドインスタンスにより保持される場合には:
初期化が進行中であること又は領域が削除中であることをSHM REG構造体が指示する場合に、shm reg deleteをコールする。
ルーチンshmem APMPDB recoverが他のインスタンスの少なくとも1つにおいてコールされる。この場合に、インスタンスの区画ノードのIDフィールドがクリアされる。
【0183】
Figure 0004634548
APMPデータベースにおいて全てのSHM REG構造体を通るループを形成する。
クラッシュインスタンスが領域に取り付けられた場合に、
1)インスタンスの区画ノードにおけるIDフィールドが非ゼロの場合には、これは、インスタンスが停止されたのであって、クラッシュされたのではないことを指示する。I/Oデバイスは、依然、共用メモリに書き込みする。
このインスタンスを取付状態にしそして共用メモリ領域をそのままにして次のSHM REG構造体へとループ形成する。インスタンスが共用セットに再び加わるときに、I/Oバスをリセットした後に、取り付けられたビットをクリアする。これは、共用メモリ領域が領域に取り付けられた最後のインスタンスである場合にそれを削除する。
【0184】
2)インスタンスの区画ノードにおけるIDフィールドがクリアの場合:
取り付けられたビットマスクにおいてインスタンスのビットをクリアする。
取り付けられたビットマスクが、セットされたビットをもたない場合:
shm reg deleteをコールする。
次のSHM REG構造体へループする。
全てのSHM REG構造体が処理された後に、更なる共用メモリ回復コードを実行する。
Figure 0004634548
【0185】
共用メモリにおけるAPMPデータベースへマップする。
他の共用メモリコミュニティ参加コードを実行する。
APMPデータベースにおける全てのSHM REG構造体を通るループを形成する。
このインスタンスが領域に取り付けられる場合には:
−取り付けられたビットマスクにおいてこのインスタンスのビットをクリアする。
取り付けられたビットマスクが、セットされたビットをそれ以上もたない場合には:
−shm reg deleteをコールする。
【0186】
次のSHM REG構造体へループする。
全てのSHM REG構造体が処理された後に、復帰する。
初期のAPMPデータベースページを選択するために、ルーチンshmem config APMPDBは、APMPDB map initialによってコールされて、APMPDBページの初期セットを選択する。
データ構造体:
構成ツリーにおけるコミュニティノードは、APMPDB INFOと称する64ビットフィールドを含み、これは、APMPDBページ情報を記憶するのに使用される。第1の32ビットAPMPDB INFO〔31:0〕は、APMPDBページの低PFNである。第2の32ビットAPMPDB INFO〔63:32〕は、APMPDBページのページカウントである。
【0187】
各インスタンスは、「共用メモリアレー」と称するアレーをプライベートメモリに保持する。このアレーの各エレメントは、共用メモリPFN及びページカウントを含む。全アレーは、このインスタンスが一部分であるところのコミュニティが所有する全ての共用メモリを記述する。
構成ツリーは、共用メモリに対するテストされたメモリビットマップを含む。
構成ツリーがある範囲のメモリに対してビットマップを含まない場合には、メモリがテストされそしてそれが良好となる。ある範囲のメモリに対してビットマップが存在する場合には、ビットマップの各ビットは、共用メモリのページが良好であるか不良であるかを指示する。
MAX APMPDB PAGESの値は、システムを初期化するのに必要なページの最大数にセットされる。この数は、共用メモリの粒度より小さくなければならない。MAX APMPDB PAGESは、APMPデータベースの初期化に対して隣接する良好なメモリが見つかる機会を高めるためには、小さい数でなければならない。
【0188】
Figure 0004634548
このルーチンは、構成ツリーの多数のコピーがコンソールによって維持される場合には更に複雑になる。
【0189】
1.コミュニティノードからAPMPDB INFOを読み取る。
2.APMPDB INFOがold APMPDB infoに等しくない場合には、エラーを返送する。
3.new APMPDB INFOを原子的命令でAPMPDB INFOへ記憶する。
ルーチンSHMEM config APMPDBは、APMPデータベースを構成するのに使用される。ルーチンは、第1のAPMPデータベースページフレーム番号と、APMPデータベースに対して指定されたページ数とを与える。
このルーチンは、次のように進行する。
(1)構成ツリー内のコミュニティノードを指すポインタを得る。
【0190】
(2)構成ツリーを横切って共用メモリアレーを形成する。共用メモリが存在しない場合には、エラーを返送する。
(3)APMPDB INFOフィールドを読み取る。
(4)APMPDB INFOフィールドが非ゼロの場合には、
PAGESをAPMPDB INFOにセットする。
共用メモリアレーをサーチして、ページPFNないしPFN+PAGES−1が共用メモリにあることを確保する。
これらのページが共用メモリアレーにある場合には:
テストされるメモリビットマップが存在すれば、ビットマップをチェックして、これらページが不良とマークされないよう確保する。
【0191】
全てのページが良好であれば、set APMPDB INFOをコールして、PFN及びPAGESをAPMPDB INFOフィールドに書き込む。
SET APMPDB INFOがエラーを返送する場合は、上記(2)に復帰する。
SET APMPDB INFOが成功を返送する場合には、PFN及びPAGESを発呼者に返送する。
いずれかのページが共用メモリにないか又は不良である場合には、
SET APMPDB INFOをコールして、APMPDB INFOフィールドをクリアする。
【0192】
SET APMPDB INFOがエラーを返送する場合は、上記(2)に復帰する。
SET APMPDB INFOが成功を返送する場合には、新たなAPMPDBページを選択するために(5)へ進む。
(5)PAGESをMAX APMPDB PAGESにセットする。
(6)共用メモリアレーを通るループを形成する。アレーの各エレメントに対し、
(6.1)PFNをその範囲の最小共用メモリPFNにセットする。
(6.2)テストされたメモリビットマップが存在する場合には、ビットマップをチェックして、これらのページが不良とマークされないように確保する。
【0193】
(6.3)全てのページが良好な場合には、
SET APMPDB INFOをコールして、PFNページをAPMPDBフィールドに書き込む。
SET APMPDB INFOがエラーを返送する場合は、上記(2)に復帰する。
SET APMPDB INFOが成功を返送する場合には、PFN及びPAGESを発呼者へ返送する。
(6.4)範囲内で不良ページに遭遇した場合には、
PFNを最も高い番号の不良PFN+1にセットする。
PFN+PAGES−1が依然共用メモリアレーエレメント内にある場合には、 (6.2)へ復帰する。
【0194】
PFN+PAGES−1がこの共用メモリアレーエレメントにより示された範囲より大きい場合には、次の共用メモリアレーエレメントへ移動する。
(6.5)共用メモリアレーエレメントが残されていない場合には、エラーを返送する。
例示的なページフレーム番号データベースレイアウトが図21のメモリマップにより示されている。この説明上の例では、システムは、64メガバイトのプライベートメモリ及び64メガバイトの共用メモリを各々含む2つのインスタンスA及びBを備えている。メモリは、8キロバイトページとして構成され、インスタンスAのプライベートメモリは、ページフレーム番号(PFN)0からPFN1BFF(16進)へと延びる。64メガバイトの共用メモリは、PFN2000からPFN3FFFまで延びる。インスタンスBのプライベートメモリは、PFN800000からPFN801FFFまで延びる。インスタンスAのPFNデータベースを保持するのに使用されるメモリは、インスタンスAのプライベートメモリから到来し(0−1FFF)、インスタンスBのPFNデータベースを保持するのに使用されるメモリは、インスタンスBのプライベートメモリから到来し(2000−3FFF)、そして共用メモリのPFNデータベースを保持するのに使用されるメモリは、共用メモリから到来する(800000−801FFF)。インスタンスAは、インスタンスBのメモリに対するPFNデータベースエントリにアクセスすることができない。というのは、図示されたように、このメモリ領域がインスタンスAのシステムスペースへとマップされないからである。同様に、インスタンスBは、インスタンスAのメモリに対するPFNデータベースエントリにアクセスすることができない。というのは、このメモリ領域がインスタンスBのシステムスペースへとマップされないからである。インスタンスA及びBの両方は、共用ページを共用メモリのためのPFNデータベースエントリへとマップする。インスタンスは、プライベートメモリページテーブルで共用ページへマップする。というのは、プライベートメモリ及び共用メモリのPFNデータベースエントリは、同じページテーブルのページによってマップされるからである。上記のように、物理的メモリの粒度は、PFNデータベースのエントリサイズ及びメモリページサイズの最小公倍数として選択される。ここに示す例では、メモリページサイズは8キロバイトであり、そして物理的メモリの粒度は、ページサイズを平方して8(バイト)で分割したもの即ち8MBに等しい。16、32及び64KBのページサイズは、各々、32、128及び512MBの物理的メモリ粒度を形成する。
【0195】
G.マルチプロセッサコンピュータシステムの欠陥回復(図22−32)
本発明の更に別の特徴によれば、オペレーティングシステムの多数のインスタンスは、全てのプロセッサ及びリソースが電気的に互いに接続された単一のマルチプロセッサコンピュータにおいて協働して実行される。多数の物理的プロセッサ及びリソースをもつ単一の物理的マシンは、ソフトウェアにより適応式に多数の区画に細分化され、その各々は、オペレーティングシステムの個別のコピー又はインスタンスを実行する能力を有する。各区画は、それ自身の物理的リソース及び共用と指示されたリソースにアクセスする。1つの実施形態によれば、リソースの区画化は、ある構成内にリソースを指定することにより実行される。
より詳細には、ソフトウェアは、CPU、メモリ及びI/Oポートを一緒に指定することによりそれらを論理的及び適応式に区画化する。次いで、オペレーティングシステムのインスタンスが区画にロードされる。異なる時間に、異なるオペレーティングシステムインスタンスが所与の区画にロードされる。システムマネージャーが指令するこの区画化は、ソフトウェア機能であり、ハードウェアの境界は必要とされない。各個々のインスタンスは、それが独立して実行するのに必要なリソースを有する。CPU及びメモリのようなリソースは、異なる区画に動的に指定することができ、そして構成を変更することによりマシン内で実行されるオペレーティングシステムのインスタンスによって使用することができる。区画それ自身も、構成ツリーを変更することによりシステムを再ブートすることなく変更することができる。これにより得られる適応式に区画化されたマルチプロセッサ(APMP)システムは、拡張性及び高い性能の両方を示す。
【0196】
本発明において、個々の各インスタンスは、システムの全ての処理リソースの別々の記録を維持する。各インスタンスは、そのインスタンスに対する各動作状態に基づいてプロセッサを分類する。好ましい実施形態では、インスタンスは、各CPUが動作についてそのインスタンスに適合するかどうか、そのインスタンスの制御下にあるかどうか、そしてそのインスタンス内のSMPオペレーションに使用できるかどうかの記録を維持する。これらの異なる動作状態は、システムのCPUのハイアラーキ分類を表し、そしてシステムは、付加的な分類に適応できる。
好ましい実施形態では、異なる分類の動作状態のいずれかにあるCPUのメンバーシップが、各分類ごとにビットベクトルを維持する各インスタンスによって記録され、各ビットベクトルの少なくとも1つのビットは、その分類における1つのCPUのメンバーシップ状態に対応する。通常、各セットは、各CPUごとに1ビットを有し、例えば、インスタンスによるCPU制御を表すビットベクトルは、第1の対応するCPUがそのインスタンスの制御下にある場合には、その第1ビットが第1アサーションレベルにセットされる。CPUがそのインスタンスの制御下にない場合には、第1ビットは第2のアサーションレベルにセットされる。各CPUを表すビットにより、このビットベクトルは、各CPUに対しどれがインスタンスの制御下にあるかを示す指示を与える。同様に、他のビットベクトルも、各CPUの指示を与え、これらの指示は、例えば、どのCPUが動作についてインスタンスに適合するか、又はどれがSMP動作についてインスタンスに使用できるかを示す。このように、各インスタンスは、全ての処理リソースを個々に追跡できると共に、インスタンスに対してそれらの動作状態がどんなものであるかを追跡できる。
【0197】
又、本発明は、インスタンス欠陥状態においてプロセッサを第1インスタンスから第2インスタンスへと自動的に移動するための手段も含む。このような移動は、移動プロセッサによる命令の実行を使用することができる。移動が開始されると、移動プロセッサは、その現在ハードウェア状態を記憶し、そして以前の実行中に第2インスタンス内に保持したハードウェア状態をロードすることができる。従って、プロセッサは、第2インスタンスにおいてそれが以前に退出したところから動作を再開する。プロセッサが移動することろのインスタンスにハードウェア状態が記憶されていない場合には、それが初期化状態に入れられる。
本発明の好ましい実施形態では、システムは、第1インスタンス内の欠陥に応答して、そのインスタンスで実行されているオペレーティングシステムを遮断するだけでなく、先ず、処理リソースを第1インスタンスから行先インスタンスへ移動させる。即ち、第1インスタンスに関連した所与のリソースに対する制御がオペレータの介在なしに第2インスタンスへ転送される。システムは、第1インスタンスの欠陥の前に処理デューティをもたず、第1インスタンスをバックアップするように働くインスタンスを有することができる。各CPUは、行先インスタンスへ移動し、そして好ましくは、第1インスタンスで行われていた同じ機能を引き継ぐ。各インスタンスは、CPU IDにより編成されたアレーに行先インスタンスIDを記憶するのが好ましい。従って、第1インスタンス内に欠陥が発生すると、第1インスタンスの制御下にある各プロセッサは、それに関連したアレーエレメントを見つけて、それが移動するところのインスタンスのIDを決定することができる。
【0198】
欠陥後の第1インスタンスからのプロセッサの移動は、二次プロセッサのみを伴う。そのインスタンスの一次プロセッサは、二次の全てがそれ自体を移動するように確保するか、又は個別の移動ルーチンを呼び出して、SMP処理アクティビティに全く参加しないいずれかのプロセッサを移動するように確保する。次いで、一次プロセッサは、第1インスタンスにより制御されるメモリの全てのデータを新たなメモリ位置に記憶し、その後、それ自身を遮断する。第1インスタンスの一次CPUが遮断すると、コンソールプログラムは、そのことを識別し、そして第1インスタンスの一次CPUが「コンソール」モードにあることを指示する共用メモリのフラグをセットする。次いで、コンソールは、システムの他のインスタンスの各々に割り込みを送って、それらがフラグの設定に気付くようにする。その間に、バックアップインスタンスにおいて処理が再開される。ある場合には、欠陥が生じたインスタンスから移動するCPUは、異なる行先インスタンスへ移動することができる。異なるリソースに対して異なる行先インスタンスを許す場合には、インスタンスの1つに欠陥が生じた後にシステムのリソースを再分配する上で融通性が与えられる。
【0199】
リソースのランタイム移動
本発明では、CPUは、多数の区画によりシリアルな形態で共用することができる。コンピュータシステムのCPUは、そのときに存在する区画内の一次CPUではなく且つ分散型割り込みハンドリングのようなシステム制約により束縛されていなければ、ある区画から別の区画へ移動することができる。いつそしてどこにCPUが移動されるかのポリシーは、CPUが実行するオペレーティングシステムコードに厳密に依存する。好ましい実施形態では、CPUは、「PALMIGRATE」命令を実行することにより移動する。
PAL MIGRATE命令は、CPUをインスタンス間で移動させる1組のステップを呼び出す。この移動方法は、CPUの移動を要求する他のアクティビティと共に使用され、そして一般に、多数のHWRPB間にコンテクストスイッチを伴う。CPUが特定のインスタンスから離れるように移動するときは、CPUが実行されたインスタンスに関連したHWRPBにそのコンテクストが記憶される。このように、CPUが、以前に動作していたインスタンスへ移動して戻る場合には、CPUがその動作を迅速に再開できるようにコンテクストが再記憶される。PAL移動の段階が図22A−22Bに示されている。
【0200】
CPUによるPAL MIGRATE命令の実行は、ステップ2200に示すように移動ルーチンをスタートさせる。ステップ2202においてCPUの現在ハードウェア状態がセーブされ、その後、CPUは行先区画を位置決めし、そしてそれが有効な行先であるかどうか決定する(ステップ2204)。有効化プロセスが失敗に終わると、元のハードウェア状態がステップ2205において回復され、そしてCPUは元の区画内でオペレーションを再開する。CPUが行先区画を首尾良く有効化すると、ステップ2206において、構成ツリーのCPUノードのcurrent ownerフィールドがクリアされ、そしてその利用性ビットがCPUごとのフラグにおいてクリアされる(ステップ2208)。次いで、ステップ2210において、CPUキャッシュがクリアされる。
【0201】
CPUに対するプラットホーム特有の状態がステップ2212において初期化され(図22B)、そしてステップ2214において、CPUに対する利用性ビットがCPUごとのフラグにおいてクリアされる。次いで、構成ツリーのCPUノードにおいてcurrent ownerフィールドがセットされ(ステップ2216)、CPUが移動した区画のIDを表す。次いで、CPUにはハードウェアコンテクストが与えられる(ステップ2218)。CPUに対して以前のハードウェア状態が存在する(即ちその区画において以前に動作したことがある)場合には、そのコンテクストが回復される。その区画に伴う以前のハードウェア状態がない(即ちCPUがその区画で実行したことがない)か、或いは以前のハードウェア状態がもはや有効でない場合には、CPUの状態が初期化される。最終的に、ステップ2220においてCPUの実行が再開される。実行は、その区画のCPUにより実行される最後の移動命令に続く命令において続けられるか、或いは初期化される場合には、コンソール初期化ルーチンにおいて二次プロセッサとしてスタートする。図22Bに示すように、実行が再開された後にプロセスが終了する。
【0202】
プロセッサが移動するたびに、行先区画のコンソールは、新たに移動されるCPUを受け入れねばならない。図23は、移動を完了するために行先区画においてコンソールが行うステップを示す。このルーチンは、ステップ2300で始まり、そしてステップ2302へ進み、そこで、コンソールは、STARTREQメッセージを、CPUごとのスロットにおける移動されたCPUのTXバッファに入れ、そしてHWRPBのTXRDYビットをセットする。次いで、コンソールは、ステップ2304に示すように、割り込みにより区画の一次CPUに通知する。移動されたCPUは、HWRPBのRXRDYビットをポールし、ステップ2306に示すように、オペレーションを開始するためにSTARTのようなコマンドを待機する。このルーチンは、ステップ2308で終了する。
【0203】
システム欠陥に続くリソース再割り当て
本発明の好ましい実施形態は、欠陥が生じたインスタンスに対する欠陥回復手段を含む。システムの各区画は互いに他の区画とは独立して機能するので、1つの区画の欠陥が他の区画に影響を及ぼすことはないが、その影響を受ける区画のオペレーティングシステムインスタンス及びその区画で実行されるアプリケーションに対して回復を必要とする。しかしながら、欠陥は、その影響を受けるインスタンスによって検出されたときでも、区画が再ブートされそしてその全てのリソースが再初期化されるので、修正に著しい時間を要する。この時間中に、区画の処理タスクは保留され、そしてリソースは、インスタンスの回復を待機する間アイドル状態のままとなる。実際に、インスタンスは、それ自身を再ブートできないこともあり、この場合には、リソースが不定にアイドル状態となる。
【0204】
本発明の好ましい実施形態では、システムは、1つのインスタンスに欠陥が生じた後にシステムの効率を最大にする助けをするように構成される。各主な区画に対し、バックアップ区画が形成され、それに対応する主たる区画と同じ基本的構造が与えられる。これが図24に概略的に示されており、主たる区画2400は、一次CPU2404及び多数の二次CPU2408をもつように示されている。バックアップ区画2402は、区画2400とは完全に独立して機能し、それ自身の一次CPU2406及びそれ自身のオペレーティングシステムインスタンスを有する。同様に、区画2402は、それ自身のHWRPB、コンソールプログラムのコピー、メモリ及びI/O接続を有し、そして構成ツリーにおける独立したノードを表す。しかしながら、最初、バックアップ区画2402のインスタンスは、主たる区画2400のインスタンスがシステムにアクティブに関与している間に、処理デューティをもたない。又、全てのインスタンスにアクセスできる情報が記憶される共用メモリ2410の領域も図示されている。
【0205】
各インスタンスは、1つのインスタンスに欠陥が生じた後にCPU移動に対して特に使用される情報のコピーを維持する。この情報は、システムの各CPUに対して与えられる識別コード(ID)を含み、各IDは、現在ホストインスタンスが欠陥モードに入るときに、関連するCPUが移動すべきところの行先インスタンス(又は区画)を識別する。この情報の構成が図25に概略的に示されており、メモリのID部分の異なる区分が各々行先IDを含むものとして示されている。隣接するCPU識別は、各行先IDを適当なCPUに関連付ける。従って、欠陥が検出されたときに、適当なメモリ位置を検査して、所与のCPUに対するターゲットインスタンスを決定し、そしてこの情報を用いて、新たなインスタンスへの制御された移動を受けることができる。例えば、図24に示す区画の構成では、区画2400の二次CPUの全部ではないまでもその多くが、それらのターゲットとして指定されたバックアップ区画(区画2402)を有することができる。従って、区画2400のインスタンスが欠陥を受けた場合には、これらのCPUが区画2400から区画2402へ移動する。しかしながら、当業者に明らかなように、ある状況においては、区画2400の1つ以上のCPUを異なる区画へ一緒に送信することが所望される。更に、インスタンスの仮想リソース機能では、新たに得られるCPUは、例えば、上記のオートスタートセットを使用することにより、アクティブなセットに自動的に入ることができる。
【0206】
インスタンスの欠陥中に、システムは、欠陥の生じたインスタンスのリソースの使用損失を最小にし、そしてある場合には、欠陥の生じた区画のインスタンスとで行われる全てのオペレーションを新たなインスタンス及び区画へできるだけ迅速に転送するよう試みるように構成された一連の段階をたどる。これらの段階が図26A及び26Bのフローチャートに一般的に示されている。
検出された欠陥に続く事象のシーケンスは、図26Aに示すスタートステップ2600で始まる。欠陥が検出された後に、欠陥が生じたオペレーティングシステムインスタンスは、アクティブなセットにある全てのCPUの実行コンテクストの制御権を得る(ステップ2602)。残りのシステム遮断手順がその区画の一次CPUにより遂行される一方、二次CPUは、それらの移動に必要な手順を行う。ステップ2604において、一次CPUは、欠陥の生じたインスタンスのアクティブな二次CPUに、その各々がその処理コンテクストをシステム共用メモリの選択された領域へダンプするように命令し、その後、それらは、移動プロセスを開始するように命令される。全てのアクティブな二次CPUがそれらの処理コンテクストをダンプすると、一次CPUは、次の動作に進む(ステップ2606)。二次CPUの幾つかは、アクティブモードでないことがあるので、一次CPUは、各々の二次が欠陥回復プロセスを進めていることを確認しなければならない。構成セットにはあるが、当該インスタンスのアクティブセットにはないような二次CPUが存在する場合には、一次CPUは、ステップ2608において個別の移動機能を呼び出し、停止したCPUをいずれかの識別された行先区画へ移動する。
【0207】
欠陥回復プロセスが図26Bにおいて続けられ、図26Aと26Bとの継続部は、接続ノードAで示されている。ステップ2610において、一次は、欠陥インスタンスにより制御されるメモリに記憶されたデータをダンプし、それを新たな位置へコピーする。図26Bのステップ2612で示すように、欠陥インスタンスの一次CPUは、次いで、コンソール「コールバック」命令を送信し、これは、コンソールモードに入ったことを指示し、そしてコンソールプログラムが多数の異なるタスクを実行するようにさせる。これらタスクの1つは、システムインカーネーションカウントを増加することであり、このカウントは、構成ツリーに変化があるたびに変更される。又、コンソールは、プロセッサ間割り込み(IPINT)の発生を開始し、これは、他の全てのインスタンスがインカーネーションカウントを見て、それが変化したことに気付き、そして構成ツリーを検査して、プロセスにおける欠陥インスタンスの状態の変化を識別するようにさせる。更に、コンソールは、一次の遮断を見ると(即ちコンソールモードに入ると)、現在インスタンスの機能へ復帰するおそれなく、一次CPUに対するCPUごとのデータビットにおいて適当な状態コードをセットする。一次CPUがコンソールモードに入り、そしてコンソールが上記状態コードをセットするようにさせる段階がステップ2614に示されている。この点において、区画は完全にディスエイブルされ、そして欠陥ステップが完了となる。
【0208】
二次CPU(アクティブセットの)は、一次CPUにより欠陥移動を開始するよう命令されると、図27に一般的に示された一連のステップを行う。第1に、二次CPUは、一次CPUにより指令されたときに、その処理コンテクストをダンプする(ステップ2700)。次いで、フェイルオーバーIDを含むメモリアレーの適当な部分をポールし、それがどこに移動すべきかを決定する(ステップ2702)。ターゲットIDが検索されると、プロセッサは、それを現在区画のIDと比較する(ステップ2704)。ある場合には、区画に欠陥が生じた場合にCPUを移動しないことが所望される。このような場合に、当該CPUに対してロードされたターゲットIDは、現在区画のIDとなる。従って、CPUが、ステップ2704において、ターゲットID及び現在区画のIDが同じであると決定した場合には、それが単にコンソールモードに入り、そしてプロセスは終了となる。しかしながら、ターゲットIDが現在IDと異なる場合に、CPUは、与えられた移動方法の1つを使用して新たな区画への移動を受け、その後、プロセスが完了となる。
【0209】
上記実施形態の1つの変形においては、割り込みハンドラーが、欠陥の特定アプリケーションを通知することでチャージされる。この別の実施形態では、IPINTハンドラーは、特定事象の通知に対して特定アプリケーションが「登録」を行うようにする登録プロセスを与える。このメカニズムを使用して、いかなるアプリケーションにも、構成ツリーの変更を通知することができ、そして欠陥が生じたことを決定することができる。アプリケーションが、欠陥インスタンス上で実行されたアプリケーションのコピーであった場合には、これがバックアップインスタンス上のアプリケーションに対するトリガーを与え、欠陥インスタンス上で実行されたアプリケーションに代わって処理アクティビティを開始する。
H.マルチプロセッサコンピュータシステムにおけるリソースの永久所有権指定(図28−29)
本発明の更に別の特徴によれば、オペレーティングシステムの多数のインスタンスは、全てのプロセッサ及びリソースが電気的に互いに接続された単一のマルチプロセッサコンピュータにおいて協働して実行される。多数の物理的プロセッサ及びリソースをもつ単一の物理的マシンは、ソフトウェアにより適応式に多数の区画に細分化され、その各々は、オペレーティングシステムの個別のコピー又はインスタンスを実行する能力を有する。各区画は、それ自身の物理的リソース及び共用と指示されたリソースにアクセスする。1つの実施形態によれば、リソースの区画化は、ある構成内にリソースを指定することにより実行される。
【0210】
より詳細には、ソフトウェアは、CPU、メモリ及びI/Oポートを一緒に指定することによりそれらを論理的及び適応式に区画化する。次いで、オペレーティングシステムのインスタンスが区画にロードされる。異なる時間に、異なるオペレーティングシステムインスタンスが所与の区画にロードされる。システムマネージャーが指令するこの区画化は、ソフトウェア機能であり、ハードウェアの境界は必要とされない。各個々のインスタンスは、それが独立して実行するのに必要なリソースを有する。CPU及びメモリのようなリソースは、異なる区画に動的に指定することができ、そして構成を変更することによりマシン内で実行されるオペレーティングシステムのインスタンスによって使用することができる。区画それ自身も、構成ツリーを変更することによりシステムを再ブートすることなく変更することができる。これにより得られる適応式に区画化されたマルチプロセッサ(APMP)システムは、拡張性及び高い性能の両方を示す。
【0211】
本発明は、プロセッサを第1区画から第2区画へ移動するための手段を含むことができる。このような移動は、移動に対する黙従(及びプロセッサが動作しているところのオペレーティングシステムインスタンスの黙従)が確保されるように移動プロセッサによる命令の実行を要求する。移動が開始されるときは、移動プロセッサがその現在ハードウェア状態を記憶し、そして第2区画内での以前の実行中にそれが保持したハードウェア状態をロードする。従って、プロセッサは第2区画においてそれが以前に退出したところから動作を再開する。プロセッサが移動するところの区画のハードウェア状態が記憶されていない場合には、それが初期化状態に入れられる。
本発明のシステムは、全システムの再ブートを必要とせずにプロセッサをある区画から別の区画へ移動できるようにする区画間の相互接続を有する。現在区画において実行されるソフトウェア、又はその区画にある一次プロセッサは、移動されるべきプロセッサに、それが移動オペレーションを開始する要求を与えることができる。このような移動は、それが存在するところのオペレーティングシステムの割り込みを伴ったり伴わなかったりして行うことができる。即ち、プロセッサは、システムの他部分が動作を続ける間に単に静止されて再指定されるか、又はその区画内のリソースが停止され、コンソールプログラムが呼び出されて、移動を整合する。
【0212】
システムのプロセッサを追跡するために、各区画は、各プロセッサが各々関連した区画を識別するフラグを含む1組のハードウェアフラグを有する。又、ハードウェアフラグは、SMPオペレーションにおいて所与のプロセッサがいつ使用できるかも指示する。プロセッサが移動されるたびにこれらのフラグを更新することにより、各プロセッサの現在状態が分かり、そしてシステムの必要な再ブートに使用するためにハードウェアフラグ内に保持される。
好ましい実施形態では、CPUに、これを区画の特定の1つに結び付ける永久所有権指定も与えられる。これは、CPUをシステム初期化中に各区画に各々関連付けできるようにする。所与のCPUに対する所有権指定は、不揮発性メモリにおける特定のメモリ位置の内容により指示される。システムが初期化されるときには、所有者フィールドに指示される有効所有者区画をもたないCPUは、再指定が実行されるまで任意の区画に指定される。又、CPUが再指定の命令を受け取る場合は、CPUの永久所有権も変化し得る。システムが初期化されると、CPUの移動が第2のメモリ位置の内容の変化によって生じ、これは、CPUの一時的所有権を有する区画を指示し、そして不揮発性メモリに配置される。
【0213】
リソースの永久指定
本発明では、CPUが多数の区画によりシリアル形態で共用される。コンピュータシステムのいかなるCPUも、そのときそれが存在する区画の一次CPUではなく且つ分散型割り込みハンドリングのようなシステム制約により束縛されていなければ、ある区画から別の区画へ移動することができる。しかしながら、所与のCPUの「現在所有者」がオンザフライで変化する間に、特定区画でCPUを識別する「永久所有者」も確立されるが、この永久所有権もシステム内で変化し得る。
システムにおけるCPUの所有権は、CPUノード構造体を区画ノード構造体に関連付ける構成ツリーによって確立される。一次CPUは、これがオペレーションを初期化するときに、現在ハードウェア構成及び記憶されたソフトウェア構成情報から構成ツリーを形成する。各CPUは、区画に指定される(即ち所有される)か、非指定(即ち非所有)である。CPUに関する所有権情報は、構成ツリーにおけるCPUノードの所有者フィールドの内容に基づく。システムにおけるCPUの初期指定に関する詳細が図28に示されている。
【0214】
システムは初期化され、そしてプロセスはステップ2800においてスタートする。構成ツリーが作られるときには、適当なCPUノードの所有者フィールドが検査される(ステップ2802)。所有者フィールドに、特定区画を指示するコードが満たされる場合には(ステップ2804にテスト状態で示す)、CPUがその区画において初期化される(ステップ2806)。その後、CPUそれ自体は、その利用性ビットをセットし(ステップ2808)、そしてその区画のSMPオペレーションに加わるよう要求する(ステップ2810)。これで、指定プロセスが完了となる。
ステップ2804において、所与の区画によるCPUの所有権を指示する有効コードがないことが決定された場合には、CPUは、コンソールにより指令されてHWRPBコンテクストに加わる(ステップ2805)。即ち、任意の区画に加わるようにコンソールにより指令される。しかしながら、CPUは、その利用性ビットをセットせず、その結果、SMPオペレーションに加わることが期待されない。次いで、待機状態に入り、その間にそれ自身のフィールドをポールし続ける(ステップ2807及び2809)。所有者フィールドに有効区画のコードが満たされると、CPUはその区画を位置決めし、そして必要に応じて、そこに移動する(ステップ2811)。次いで、利用性ビットをセットし(ステップ2808)、そして新たな区画においてSMPオペレーションに加わるように要求する(ステップ2810)。この区画は、その所有者フィールドに変化が生じるまでこのCPUの「永久所有者」を維持する。
【0215】
CPUの永久所有権は、コンソールによる相互作用で変更し得る。このプロセスは、図29のフローチャートに示されており、ステップ2900で始まる。ステップ2902において、当該CPUが動作している区画のオペレーティングシステムインスタンスは、DEASSIGNのHALT REQUESTEDコードでHALT命令を実行する。即ち、CPUが指定解除されるべきであることを指示する停止コードがCPUごとのSTATE GLAGSフィールドのHALT REQUESTEDビットにロードされる。CPUは、このコードに多数の仕方で応答する。これは、CPUノードにおいてそのcurrentフィールドをクリアし(ステップ2904)そしてcurrent ownerフィールドをクリアする(ステップ2906)。又、その利用性ビットもクリアする(ステップ2908)。次いで、CPUは、そのownerフィールドを検査し、有効区画コードがそこに入るのを待機する。即ち、CPUは図28のステップ2802へ進み、上記の指定プロセスを受ける。これは、図28及び29の両方に示された接続部「A」で指示される。
【0216】
又、二次CPUがコンソールI/Oモードにあるときは、その区画の一次CPUがDEASSIGNメッセージを二次CPUのRXバッファに送信することによってもその指定解除を開始することができる。これにより、CPUは図29に示す1組のステップを開始する。
CPUの永久所有権特性は、システムを最初に作動するのに特に有用な重要な情報を与える。構成ツリーが作られるときには、各CPUの永久所有権を使用して区画が作られる。その後、current ownerフィールド(所与のCPUを制御する区画を指定する)を用いて、各CPUが所与の時間にどこで動作するかが追跡される。しかしながら、永久所有権情報は、システムを将来再編成したり又はシステムを将来再初期化するのに使用できるように保持される。従って、永久所有権データはnvRAM(即ち不揮発性メモリ)に記憶され、一方、一時的所有権データは揮発性メモリに記憶される。
【0217】
I.マルチプロセッサコンピュータシステムにおけるプロセッサの移動(図22A−27)
本発明の更に別の特徴によれば、オペレーティングシステムの多数のインスタンスは、全てのプロセッサ及びリソースが電気的に互いに接続された単一のマルチプロセッサコンピュータにおいて協働して実行される。多数の物理的プロセッサ及びリソースをもつ単一の物理的マシンは、ソフトウェアにより適応式に多数の区画に細分化され、その各々は、オペレーティングシステムの個別のコピー又はインスタンスを実行する能力を有する。各区画は、それ自身の物理的リソース及び共用と指示されたリソースにアクセスする。1つの実施形態によれば、リソースの区画化は、ある構成内のリソースを指定することにより実行される。
【0218】
より詳細には、ソフトウェアは、CPU、メモリ及びI/Oポートを一緒に指定することによりそれらを論理的及び適応式に区画化する。次いで、オペレーティングシステムのインスタンスが区画にロードされる。異なる時間に、異なるオペレーティングシステムインスタンスが所与の区画にロードされる。システムマネージャーが指令するこの区画化は、ソフトウェア機能であり、ハードウェアの境界は必要とされない。各個々のインスタンスは、それが独立して実行するのに必要なリソースを有する。CPU及びメモリのようなリソースは、異なる区画に動的に指定することができ、そして構成を変更することによりマシン内で実行されるオペレーティングシステムのインスタンスによって使用することができる。区画それ自身も、構成ツリーを変更することによりシステムを再ブートすることなく変更することができる。これにより得られる適応式に区画化されたマルチプロセッサ(APMP)システムは、拡張性及び高い性能の両方を示す。
【0219】
本発明は、プロセッサを第1区画から第2区画へ移動するための手段を含むことができる。このような移動は、移動に対する黙従(及びプロセッサが動作しているところのオペレーティングシステムインスタンスの黙従)が確保されるように移動プロセッサによる命令の実行を要求する。移動が開始されるときは、移動プロセッサがその現在ハードウェア状態を記憶し、そして第2区画内での以前の実行中にそれが保持したハードウェア状態をロードする。従って、プロセッサは第2区画においてそれが以前に退出したところから動作を再開する。プロセッサが移動するところの区画のハードウェア状態が記憶されていない場合には、それが初期化状態に入れられる。
本発明のシステムは、全システムの再ブートを必要とせずにプロセッサをある区画から別の区画へ移動できるようにする区画間の相互作用を有する。現在区画において実行されるソフトウェア、又はその区画にある一次プロセッサは、移動されるべきプロセッサに、それが移動オペレーションを開始する要求を与えることができる。このような移動は、それが存在するところのオペレーティングシステムの割り込みを伴ったり伴わなかったりして行うことができる。即ち、プロセッサは、システムの他部分が動作を続ける間に単に静止されて再指定されるか、又はその区画内のリソースが停止され、コンソールプログラムが呼び出されて、移動を整合する。
【0220】
システムのプロセッサを追跡するために、各区画は、各プロセッサが各々関連した区画を識別するフラグを含む1組のハードウェアフラグを有する。又、ハードウェアフラグは、SMPオペレーションにおいて所与のプロセッサがいつ使用できるかも指示する。プロセッサが移動されるたびにこれらのフラグを更新することにより、各プロセッサの現在状態が分かり、そしてシステムの必要な再ブートに使用するためにハードウェアフラグ内に保持される。
リソースのランタイム移動
オペレーティングシステムインスタンスがクラッシュするときには、その区画においてアクティブなCPUが、再ブート時に同じインスタンスの一部分であり続ける。CPUは、それらの公称の「所有者」へ自動的に移動するのではない。又、ある区画により「所有」されたCPUは、クラッシュ又は再ブートしているオペレーティングシステムインスタンスへ移動して戻ることはない。HWRPBにおけるCPUごとのフラグの利用性ビットは、現在所有権を指示する。これは構成ツリーにおけるCPUノードのcurrent ownerフィールドにも反映される。
【0221】
オペレーティングシステムは、そのクラッシュロジックの一部分として二次CPUの自動的な移動を実施する。即ち、二次CPUがそのクラッシュロジックの終わりに到達しそして通常待機状態に入るときには、オペレーティングシステムは、CPUがむしろ予め定められた区画へ移動するようにさせるポリシーを実施することができる。これは、一次アプリケーション区画がフェイルしたときにウオームバックアップ区画においてCPUを直ちに使用できるような指令ウオームフェイルオーバーシステムを実施することができる。
J.マルチプロセッサコンピュータシステムにおける異なるプロセッサ状態からのプロセッサ移動(図30A−32B)
本発明の更に別の特徴によれば、オペレーティングシステムの多数のインスタンスは、全てのプロセッサ及びリソースが電気的に互いに接続された単一のマルチプロセッサコンピュータにおいて協働して実行される。多数の物理的プロセッサ及びリソースをもつ単一の物理的マシンは、ソフトウェアにより適応式に多数の区画に細分化され、その各々は、オペレーティングシステムの個別のコピー又はインスタンスを実行する能力を有する。各区画は、それ自身の物理的リソース及び共用と指示されたリソースにアクセスする。1つの実施形態によれば、リソースの区画化は、ある構成内のリソースを指定することにより実行される。
【0222】
より詳細には、ソフトウェアは、CPU、メモリ及びI/Oポートを一緒に指定することによりそれらを論理的及び適応式に区画化する。次いで、オペレーティングシステムのインスタンスが区画にロードされる。異なる時間に、異なるオペレーティングシステムインスタンスが所与の区画にロードされる。システムマネージャーが指令するこの区画化は、ソフトウェア機能であり、ハードウェアの境界は必要とされない。各個々のインスタンスは、それが独立して実行するのに必要なリソースを有する。CPU及びメモリのようなリソースは、異なる区画に動的に指定することができ、そして構成を変更することによりマシン内で実行されるオペレーティングシステムのインスタンスによって使用することができる。区画それ自身も、構成ツリーを変更することによりシステムを再ブートすることなく変更することができる。これにより得られる適応式に区画化されたマルチプロセッサ(APMP)システムは、拡張性及び高い性能の両方を示す。
【0223】
本発明は、プロセッサを第1区画から第2区画へ移動するための手段を含むことができる。このような移動は、移動に対する黙従(及びプロセッサが動作しているところのオペレーティングシステムインスタンスの黙従)が確保されるように移動プロセッサによる命令の実行を要求する。移動が開始されるときは、移動プロセッサがその現在ハードウェア状態を記憶し、そして第2区画内での以前の実行中にそれが保持したハードウェア状態をロードする。従って、プロセッサは第2区画においてそれが以前に退出したところから動作を再開する。プロセッサが移動するところの区画のハードウェア状態が記憶されていない場合には、それが初期化状態に入れられる。
本発明のシステムは、全システムの再ブートを必要とせずにプロセッサをある区画から別の区画へ移動できるようにする区画間の相互作用を有する。現在区画において実行されるソフトウェア、又はその区画にある一次プロセッサは、移動されるべきプロセッサに、それが移動オペレーションを開始する要求を与えることができる。このような移動は、プロセッサがその現在区画においてオペレーティングシステムインスタンスの制御下で動作されるとき、又は停止状態にあってシステムコンソールプログラムの制御下で動作されるときに行われる。又、プロセッサは、新たな区画に再指定されるまで、不定に指定解除されてもよく、即ち指定区画が与えられなくてもよい。
【0224】
リソースのランタイム移動
CPU移動は、移動が求められたときのCPUの状態と、移動が行われる方法とに基づいて異なる1組の段階で構成される。CPU移動の好ましい方法を以下に詳細に説明する。これらの方法は、1)その区画のオペレーティングシステムインスタンスのもとで動作するCPUの直接移動、2)コンソールモードで現在動作しているCPUの直接移動、及び3)非指定状態を経て移行させることによるCPUの移動をカバーする。
CPUがオペレーティングシステムの指令のもとで動作しているときは、移動プロセスを「停止」移動と称する。というのは、PAL MIGRATE命令を経て再指定の前にCPUを停止しなければならないからである。停止移動に必要な段階が図30A及び30Bに示されている。
【0225】
ステップ3000で始まって、移動ルーチンはステップ3002へ進み、そこで、移動CPUは、一次CPUからの移動命令に応答して、特殊なHALT MIGRATEコードをHWRPBのREASON FOR HALT per−CPUフィールドに入れる。次いで、ステップ3004において、CPUは、行先区画IDをREASON FOR HALTフィールドに入れる。次いで、CPUは、HALT命令を実行する(ステップ3006)。オペレーティングシステムは、CPUの動作を静止し、そしてHALTの実行の前にCPUのSMP関与を停止させる役目を果たす。これらのサブステップの実際の実行は、オペレーティングシステム特有のもので、従来型のものである。
CPUがREASON FOR HALT per−CPUフィールドのHALT MIGRATEコードでHALTを実行するときには、ステップ3008に示すように制御がコンソールHALTエントリポイントへ移行する。次いで、コンソールは、REASON FOR HALT per−CPUフィールドから行先の区画IDを得(ステップ3010)、そしてステップ3012に示すように、REASON FOR HALTフィールドをクリアする。次いで、コンソールは、HALT MIGRATEオペレーションが有効かどうかをステップ3014において決定する。もし有効であれば、コンソールは、ステップ3016において構成ツリーのCPUノードにおけるcurrent ownerフィールドをクリアし、そしてステップ3018においてPAL MIGRATE命令を実行し、その後、ルーチンはステップ3020で終了となる。ステップ3014において、HALT MIGRATEオペレーションが有効でない(例えば無効の区画IDが特定された)ことをコンソールが決定すると、コンソールは、図30Cのステップを実行する。
【0226】
図30Cに示すように、HALT MIGRATEオペレーションが無効であるというコンソールによる決定は、先ず、REASON FOR HALT per−CPUフィールドをクリアし(ステップ3022)、そして現在区画にHALT状態を保持する。ステップ3024において、コンソールは、CPUごとのスロットにおいてCPUのTXバッファにSTARTREQメッセージを入れそしてステップ3026において、HWRPBにおけるTXRDYビットをセットする。次いで、コンソールは、ステップ3028に示すように、割り込みにより区画の一次CPUに通知する。次いで、コンソールは、ステップ3030に示すように、RXRDYビットをHWRPBにポールし、オペレーションを開始するためのSTART、DEASSIGN又はMIGRATEのようなコマンドを待機する。これで、ルーチンが終了となる。HALT MIGRATEオペレーションが有効化されないときは、コンソールは、CPUごとのフラグにおける利用性ビットをクリアせず、そして構成ツリーのCPUノードにおけるcurrent ownerフィールドをクリアしない。
【0227】
CPUが既にコンソールモードにあるときには、それを移動するステップが、上記のものとは若干相違する。コンソールI/Oモードにあって、利用性ビットがセットされ且つ構成ツリーのcurrent ownerフィールドがセットされたCPUは、CPUごとのRXバッファをポールし、オペレーティングシステムを実行している一次CPUからのコマンドを待機する。このCPUの移動に続くステップが図31に示されている。
ここに示す方法は、ステップ3100で始まり、そしてステップ3102へ進み、そこで、一次は、移動されるべきCPUのRXバッファにMIGRATEコマンドを入れる。次いで、一次は、CPUのRXRDYビットをセットして、それに移動命令の存在を警告する(ステップ3104)。次いで、移動するCPUのcurrent ownerフィールドがコンソールによってクリアされ、その再指定の準備をする(ステップ3106)。次いで、PAL MIGRATE命令(図22A−22B)がコールされ(ステップ3108)、その後、プロセスはステップ3020で終了となる。
【0228】
CPUがそのオペレーティングシステムインスタンスのもとで動作するときには、行先区画の即時指定を要求しない(上記の停止移動のように)CPUの移動方法は、先ず、CPUを指定解除し、その後、それを異なる区画に再指定することである。この方法は、図32A及び32Bに示されている。この方法は、図32Aのステップ3200において開始され、そしてステップ3202へ進み、ここで、移動するCPUが存在する区画の一次CPUは、移動するCPUのRXバッファにDEASSIGN(指定解除)コードを入れる。次いで、CPUは、一次CPUにより、それが行うHALT命令を実行するように指令される(ステップ3204)。HALTが実行されるときにDEASSIGNコードが存在することは、CPUが、構成ツリーのownerフィールドと、AVAILABLE(利用性)ビット及びcurrent ownerフィールドとをクリアするようにさせる。次いで、CPUは、コンソールI/Oモードにおいて、コンソールにより指令されてHWRPBコンテクストに加わる動作を実行する。
【0229】
指令解除されて、CPUは、そのownerフィールドを連続的にポールする(ステップ3208及び3210)。ownerフィールドに有効区画に対するコードが満たされると、CPUは、その区画を位置決めし、そしてもし必要ならば、そこに移動する(図32Bのステップ3212)。次いで、その利用性ビットをセットし(ステップ3214)、そして新たな区画においてSPMオペレーションに加わるよう要求する(ステップ3216)。この区画は、そのownerフィールドに変更がなされるまでこのCPUの「永久所有者」のままである。オペレーティングシステムインスタンスがクラッシュするときには、その区画においてアクティブなCPUが、再ブートの際に同じインスタンスの一部分であり続ける。CPUは、それらの公称「所有者」へ自動的に移動しない。又、区画により「所有」されたCPUも、クラッシュ又は再ブートするオペレーティングシステムインスタンスへ移動して戻ることはない。HWRPBのCPUごとのフラグにおける利用性ビットは、現在所有権を指示する。これは、構成ツリーにおけるCPUノードのcurrent ownerフィールドに反映される。
【0230】
オペレーティングシステムは、そのクラッシュロジックの一部分として二次CPUの自動的な移動を実行する。即ち、二次CPUがそのクラッシュロジックの終わりに到達し、そして通常待機状態に入るときに、オペレーティングシステムは、CPUがむしろ予め定められた区画へ移動するようにさせるポリシーを実施することができる。これは、一次のアプリケーション区画がフェイルするときにウオームバックアップ区画においてCPUが直ちに使用できるような指令されたウオームフェイルオーバーシステムを実施することができる。
K.マルチプロセッサシステムにおける通信(図33A−34B)
本発明の更に別の特徴によれば、オペレーティングシステムの多数のインスタンスは、全てのプロセッサ及びリソースが電気的に互いに接続された単一のマルチプロセッサコンピュータにおいて協働して実行される。多数の物理的プロセッサ及びリソースをもつ単一の物理的マシンは、ソフトウェアにより適応式に多数の区画に細分化され、その各々は、オペレーティングシステムの個別のコピー又はインスタンスを実行する能力を有する。各区画は、それ自身の物理的リソース及び共用と指示されたリソースにアクセスする。1つの実施形態によれば、リソースの区画化は、ある構成内のリソースを指定することにより実行される。
【0231】
より詳細には、ソフトウェアは、CPU、メモリ及びI/Oポートを一緒に指定することによりそれらを論理的及び適応式に区画化する。次いで、オペレーティングシステムのインスタンスが区画にロードされる。異なる時間に、異なるオペレーティングシステムインスタンスが所与の区画にロードされる。システムマネージャーが指令するこの区画化は、ソフトウェア機能であり、ハードウェアの境界は必要とされない。各個々のインスタンスは、それが独立して実行するのに必要なリソースを有する。CPU及びメモリのようなリソースは、異なる区画に動的に指定することができ、そして構成を変更することによりマシン内で実行されるオペレーティングシステムのインスタンスによって使用することができる。区画それ自身も、構成ツリーを変更することによりシステムを再ブートすることなく変更することができる。これにより得られる適応式に区画化されたマルチプロセッサ(APMP)システムは、拡張性及び高い性能の両方を示す。
【0232】
本発明のこの特徴では、ここのインスタンスは、インスタンス間通信を行うことができる。即ち、第1の区画で実行される第1インスタンスは、第2の区画で実行される第2インスタンスと通信することができる。この通信は、システムの共用メモリを使用し、そして1つのインスタンスが、システムのどこかで実行されている別のインスタンスにアクティブに信号送信できるようにする。2つの好ましい通信方法は、単一ビット通知によるものと、パケット化データ転送によるものである。
単一ビット通知は、多数の所定の事象がシステムの全てのインスタンスに分かるという事実を利用するもので、それ故、事象当たり1ビットで表すことができる。従って、各インスタンスには、共用メモリにおいてそれ自身の通知ビットベクトルが関連され、これは、所定の事象の異なる1つを各々表すビットの組である。第1インスタンスは、共用メモリにおいて第2区画のビットベクトルをアクセスしそしてその事象に対応するビットの値を変更することにより、所定事象の1つが発生したことを第2インスタンスに通知することができる。次いで、第1インスタンスは、割り込みにより第2インスタンスに信号を送り、それがビットベクトルを検査するようにさせる。変更されたビットが見つかると、ビットベクトルにおけるそのビットの位置をインデックスとして使用して、そのビットにより表された事象に適した処理ルーチンを開始するルーチンコール命令をメモリにおいて探索する。
【0233】
パケット化されたデータの通過も、共用メモリを使用するが、第1インスタンスが先ず必要なメモリの量を決定しそして共用メモリにそのスペースを割り当てることを含む。又、共用メモリには、各インスタンスに対するパケット処置待ち行列のリストヘッドも配置される。第1インスタンスは、それが共用メモリにパケット化データを記憶した後に、第2インスタンスに対するパケット処理待ち行列リストヘッドを探索し、そしてリストヘッドにパケット化データに関する必要な情報を入れる。次いで、第1インスタンスは、上記のような単一ビット通知を使用して、パケット化データを検索する準備ができたことを第2インスタンスに通知する。換言すれば、第1インスタンスは、第2インスタンスにより処理される準備がなされているパケット化データの事象に対応する第2インスタンス通知ビットベクトルのビットをセットする。次いで、割り込みによって第2インスタンスに警告を与え、ビットベクトルをチェックして、事象を確認する。第2インスタンスは、次いで、そのパケット処理待ち行列を処理して、パケット化されたデータを検索する。好ましくは、パケットデータ内の要素IDは、適当な処理ルーチン(即ち、正しいデータフォーマットを使用するもの)のコール機能を見つけることのできるメモリ位置へのインデックスとして第2インスタンスによって使用される。
【0234】
メモリの再構成
ページフレーム番号(PFN)データベース設計は、ソフトウェア制御のもとでメモリをオペレーティングシステムインスタンスへと又はそこから再構成できるようにする。プライベートメモリは、共用されるように再構成され、共用メモリは、プライベートとなるように再構成され、そして1つの区画に対してプライベートなメモリは、別の区画に対してプライベートとなるよう再構成され得る。又、プライベートであるか又は共用されるメモリは、非所有となるように再構成され得る。メモリ再構成は、ハードウェアホットインスワッピング又はホットアウトスワッピングをサポートすることができる。メモリは、それが構成ツリーにおいて「非所有」状態にあるときは、インスタンスのプライベートメモリへと再構成することもできるし、又はコミュニティにおける共用メモリの一部分として再構成することもできる。新たなメモリがシステムへとインスワプされるときには、メモリが最初に非所有状態に入れられる。それ故、メモリホットスワッピングをサポートするために、オペレーティングシステムインスタンス及びコンソールソフトウェアは、メモリを非所有状態へと及びその状態から再構成しなければならない。メモリを再構成するときには、ページの範囲が、説明上、整列された8メガバイト(MB)(システムページサイズ平方分割8バイト)である。ページの範囲は、8MBの倍数のサイズであり、そしてシステムから再構成されるべき範囲内のページが使用される場合には、他の制約が以下に述べるように適用される。
【0235】
PFNデータベースは、インスワップすることのできる全ての考えられるメモリを含むサイズにされるので、新たなメモリをいつでもシステムに追加できると共に、常に新たなページを使用してPFNデータベースエントリページを作り上げることができる。システムからメモリを除去するために、先ず、ページの範囲がプライベートであるか、共用であるか、又は非所有であるかが決定される。メモリが既に非所有とマークされた場合には、それが除去されるとみなされる。
プライベートメモリを除去するために、空きページリストと同様のページフレーム番号の除去ページリストが、メモリからの除去をサポートするために確立される。ページをオンラインで除去できないことが任意の時間に決定された場合には、システムを遮断することができ、ページをコンソールソフトウェアで非所有と構成することができ、そしてオペレーティングシステムインスタンスを再スタートすることができる。コンソールがその範囲内の幾つかの又は全てのページを使用する場合に、コンソールは、それ自身を異なる組のページへと再配置する。この再配置は、多数の方法で行うことができる。例えば、コンソールは、そのページを、区画により所有される別の種類のページへコピーし、次いで、他のページでの実行を開始することができる。或いは又、別の区画内の別のコンソールが区画を分解し、ページの範囲を「非所有」に再指定し、次いで、メモリを伴わずに区画を再形成することができる。更に、全システムを遮断し、メモリを除去しそしてシステムを再スタートすることができる。除去動作は、ページを除去ページリストから空き、ゼロ化又は不良ページリストへ移動することによりいつでも断念することができる。
除去されるべきページの範囲がプライベートメモリの場合には、全てのページを除去できるか又は除去オペレーションを断念するまで、次の段階が繰り返される。このプロセスが図33A−33Bに示されている。図33A−33Bのフローチャートに示されたプロセスに入る前に、メモリの除去を許すに充分なメモリがあるかどうか決定される。容易に使用できる予備メモリの量を指示するためにシステムパラメータ即ち流動的ページカウントが通常使用される。この流動的ページカウントが低過ぎ、即ち除去を受け入れるに充分な流動的ページがシステムにない場合には、ユーザにエラーが返送され、さもなくば、除去されるべき範囲の各ページが図33A−33Bに示すステップで説明するように検査される。
【0236】
このプロセスはステップ3300で始まり、そしてそこからステップ3302へ進み、そこで、除去されるべきページ範囲内の第1の非除去ページが探索される。ステップ3302から、プロセスはステップ3304へ進み、そこで、除去されるべきページ(1つ又は複数)が保留中の入力/出力オペレーションを有し且つこれらのページがスキップされるかどうか決定され、即ちそれらのオペレーションが完了すると、それらのページを除去に対して再考慮することができる。ページが保留中のI/Oを有する場合には、オペレーションがステップ3302へ復帰し、そこで、第1の非除去ページが探索され、そしてそこから上記のようにステップ3304へ進む。システムが他の作業を実行できるように、システムは、この点においてストールし、I/Oが完了するのを待機するよう希望する。
【0237】
現在の非除去ページが保留中のI/Oを有していない場合には、プロセスは、ステップ3304からステップ3306へ進み、そこで、ページが空きページリストにあるか、ゼロ化ページリストにあるか、非テストページリストにあるか、又は不良ページリストにあるかを決定する。メモリページのいずれかがこれらリストのいずれかにある場合には、ステップ3308においてリストからページが除去されそして除去ページリストに入れられる。空きページは、再構成される範囲の一部分でもある空きページへコピーページがコピーされないように、最初に処理される。ステップ3308から、プロセスはステップ3326へ進み、そこで、全てのページが除去ページリストに入れられたかどうか決定され、そしてもしそうであれば、プロセスはステップ3328で終了となる。一方、全てのページが除去ページリストに入れられない場合には、プロセスはステップ3302へ戻り、そしてそこから上記のように進む。もし所望ならば、永久的なループ動作を回避するために、繰り返しの数を制限しそしてエラー回復メカニズムを実行するように選択することもできる。
【0238】
空き、ゼロ化、非テスト又は不良ページリストにページがない場合には、プロセスはステップ3306からステップ3310へ進み、そこで、変更ページリストにページがあるかどうか決定される。変更ページリストにページがない場合には、プロセスはステップ3314へ進む。一方、変更ページリストにページがある場合には、プロセスはステップ3312へ進み、そこで、ページがシステムページファイルのような補助記憶部に書き込まれる。ステップ3312から、プロセスはステップ3326へ進み、そしてそこから上記のように進む。一方、プロセスがステップ3310からステップ3314へ進んだ場合には、ステップ3314において、いずれかのページがプロセスページであるかどうか、即ちアプリケーションが実行されるページであるかどうか決定される。各プロセスは、多数のスレッドを有するので、各プロセスは、他のプロセスから離れたそれ自身のページテーブルを有する。いずれかのページがプロセスページである場合には、プロセスページテーブルへのアクセスを得るためにプロセスのコンテクスト内で実行するメカニズムを与えるASTがプロセスに送られ、このASTは、ページテーブルへのアクセスを同期させるために必要に応じてプロセスを単一スレッドにセットする。ページには新たなページフレーム番号が割り当てられ、そしてページの内容が新たなページフレーム番号にコピーされる。古いページフレーム番号は、ステップ3316においてインスタンスの除去ページリストに入れられる。ステップ3316から、プロセスはステップ3326へ進み、そしてそこから、上記のように進む。
【0239】
ステップ3314において、どのページもプロセスページでないことが決定された場合には、プロセスはステップ3318へ進み、そこで、いずれかのページが全体的区分の一部分であるかどうか、即ち多数のプロセスにより同時にアクセスされた1組のプライベートページであるかどうかが決定される。いずれかのページが全体的区分の一部分である場合には、プロセスはステップ3318からステップ3320へ進む。ステップ3320において、全体的区分の名前がユーザに表示され、従って、ユーザは、メモリを解放するためにどのアプリケーションを遮断すべきか決定することができる。或いは又、ページがどこにマップされるかを追跡することのできるオペレーティングシステムは、その区分にマップされた全てのプロセスを保留し、全てのページをコピーし、全てのプロセスページテーブルエントリーを変更し、そして古いページフレーム番号を除去ページリストに入れることができる。ステップ3320から、プロセスは、ステップ3326へ進み、そしてそこから上記のように進むことができる。ステップ3318において、全体的区分の一部分であるページがないことが決定された場合には、プロセスはステップ3322へ進み、そこで、いずれかのページがシステムアドレススペースにマップされるかどうか決定される。どのページもシステムアドレススペースにマップされない場合には、プロセスはステップ3322からステップ3326へ進み、そしてそこから上記のように進む。
【0240】
一方、システムアドレススペースへマップされるページがある場合には、プロセスはステップ3324へ進み、そこで読み取り専用のページがコピーされる。コピーされると、ページは除去ページリストに入れられる。読み取り/書き込みページは、インスタンス内の全てのCPUが実行を一時的に阻止され、それらがページの内容を変更しない間だけ、コピーされる。一度に1ページがコピーされそしてコピーされたページが除去ページリストに入れられる。ステップ3324における移動の後に、プロセスはステップ3326へ進み、そしてそこから上記のように進む。
共用メモリを除去するために、ページフレーム番号の新たなリストが、各共用メモリ共通特性区画データ構造体内に確立され、即ちAPMPデータベース内の各SHM CPP構造体内に確立される。このリストは、共通特性区画除去ページリストと称する。これらのリストは、除去される準備のできた全てのページの場所を一時的に保持する。8MB範囲内の全てのページが適当な除去ページリストに配置されたときだけ、ページを除去することができる。任意の時点に、共用セット(メモリのようなリソースを共用するインスタンスのセット)が動作する間にページが除去できないと決定された場合には、共用セットを分解し、ページを非所有とマークし、そして共用セットを再形成することができる。ページを、共通特性区画除去ページリストから、ページの手前の状態に基づいて空きページ又は不良ページリストへ移動し、即ちそれが空きページリストにあった場合には空きページリストへそして不良ページリストにあった場合には不良ページリストへ移動することにより、除去動作をいつでも断念することができる。
【0241】
共用メモリを除去するプロセスが図34A−34Bのフローチャートに示されており、このプロセスはステップ3400で始まり、そしてそこからステップ3402へ進み、除去されるべきページ範囲の第1の非除去ページが位置決めされる。ステップ3402から、プロセスはステップ3404へ進み、そこで、除去されるべきページ範囲内のいずれかのページが保留中のI/Oを有するかどうかが決定される。保留中のI/Oを有するページはスキップされ、そしてプロセスはステップ3402へ復帰し、上記のように第1の非除去ページが位置決めされる。システムが他の作業を行えるようにするために、システムはこの時点でストールし、I/Oの完了を待機する。
保留中のI/Oを有するページがない場合には、プロセスはステップ3404からステップ3406へ進み、そこで、いずれかのページがAPMPデータベースの一部分であるかどうかの決定がなされる。いずれかのページがAPMPデータベースの一部分である場合には、ステップ3408においてエラーがユーザへ返送される。このような場合には、異なるページにおいてAPMPデータベースで共用セットを再形成しなければならない。これは、共用セットを分解し、古いAPMPデータベースページを非所有とマークし、新たな組のAPMPデータベースページを選択し、次いで、共用セットを再形成することにより達成することができる。このプロセスは、ステップ3408から進み、ステップ3430において終了となる。
【0242】
これらのページを記述するページフレーム番号データベースエントリページはマップ解除されそして共通特性区画空きページリストへ解放され、共用メモリを記述するPMAPアレーは変化を反映するように更新され、そしてコンソールが呼び出されてページが非所有とマークされる。ステップ3428からプロセスはステップ3430へ進んで終了となる。ステップ3426において、共用メモリ共通特性区画除去ページリストに全てのページが存在しないとプロセスが決定すると、プロセスはステップ3426からステップ3402へ戻り、そしてそこから上記のように進む。ステップ3406において、どのページもAPMPデータベースの一部分でないとプロセスが決定すると、プロセスはステップ3410へ進み、そこで、いずれかのページが空き、不良又は非テストページリストにあるかどうか決定され、もしそうである場合には、ページが除去されそしてステップ3412において共通特性区画除去ページリストに入れられる。ステップ3412からプロセスはステップ3426へ進み、そしてそこから上記のように進む。
【0243】
ステップ3410において、どのページも空き、不良又は非テストページリストにないことが決定されると、プロセスはステップ3414へ進み、そこで、いずれかのページが共用メモリページフレーム番号データベースページであるかどうか決定され、そしてもしそうであれば、プロセスはステップ3416へ進む。ステップ3416において、ページの範囲が、共通特性区画除去ページリストにない共用メモリ共通特性区画内に残された唯一のページを含むと仮定すれば、共用メモリ共通特性区画がそのコミュニティから除去される。ステップ3416において、共用メモリ共通特性区画は無効とマークされ、従って、そこからページを割り当てる試みはなされない。共用メモリを記述するPMAPアレーは、メモリの除去を反映するように更新される。他の共用メモリAPMPデータベース構造体は、共用メモリ共通特性区画の除去を反映するように更新され、そしてコンソールが呼び出されて、ページが非所有とマークされる。或いは又、PFNデータベースページが、除去ページリストにない共用メモリ共通特性区画内に残された唯一のページでない場合には、ユーザにエラーが返送され、この場合には、ユーザは、共用セットを分解し、ページを非所有とマークし、そして共用セットを再形成することができる。これらのページをコピーするために、そのページを含む共用メモリ共通特性区画は、一時的に無効とマークされ、そしてPFNデータベースページのマッピングは、読み取り専用とマークされる。次いで、あるインスタンスが共通特性区画から割り当てられた新たな組のページへそれらのページをコピーすることができる。次いで、全てのインスタンスは、それらのマッピングを古いページから新たなページへと変更し、そして古いページを共通特性区画除去ページリストに入れることができる。次いで、プロセスは、ステップ3416からステップ3426へ進み、そしてそこから上記のように進む。
【0244】
ステップ3414において、あるページが共用メモリページフレーム番号データベースページでないと決定された場合には、プロセスはステップ3418へ進み、そこで、いずれかのページが、システムスペースへマップされた共用メモリ領域の一部分であるかどうか決定され、もしそうであれば、プロセスはステップ3420へ進み、そこで、共用メモリ領域コールバックルーチンが呼び出され、除去されるべく使用されるメモリを含む。コールバックルーチンは、アプリケーションを遮断するか、又は新たな共用メモリ領域を形成して新たな領域を使用し始める。それとは別に、又はコールバックルーチンに関連して、コンソールを通して共用メモリ領域のタグを表示することができる。これは、共用メモリを使用しているアプリケーションを遮断するようにユーザが助成できるようにする。ステップ3420から、プロセスはステップ3426へ進み、そしてそこから上記のように進む。
【0245】
ステップ3418において、どのページも、システムスペースにマップされた共用メモリ領域の一部分でないことが決定されると、プロセスはステップ3422へ進み、そこで、いずれかのページが共用メモリの全体的区分の一部分であるかどうか、即ち1つ以上のプロセスのアドレススペースへの1組の共用ページマッピングであるかどうか、従って、全てのプロセスが同じページにアクセスできるかどうか決定される。共用メモリの全体的区分の一部分である幾つかのページが存在する場合には、プロセスはステップ3424へ進み、そこで、この全体的区分をマップした全てのインスタンスにおいてコールバックルーチンが呼び出される。全体的区分へマップされた全てのプロセスは保留することができ、このとき、コードは、1組のページから別の組へ全てのデータをコピーし、全てのプロセスページテーブルエントリを変更し、全体的区分のデータ構造体を変更し、そして古いページフレーム番号を共通特性区画除去ページリストに入れることができる。或いは又、全体的区分へマップする各プロセスは、遮断することが通知されるか、又は全体的区分の名前を表示して、除去オペレーションを助成するためにどのアプリケーションを遮断すべきかユーザが決定できるようにする。ステップ3424から、プロセスはステップ3426へ進み、そしてそこから上記のように進む。
【0246】
I/Oが共用メモリへと開始された場合に、共用メモリの全てのI/Oが完了するのを確かめるまでメモリが別の目的で再使用されないよう確保するために、I/Oデバイスは、I/Oが完了したときにインスタンスに割り込み、次いで、システムは、I/Oが完了したことを記録する。或いは又、インスタンスの区画内の全てのI/Oバスがリセットされたときに、I/Oが完了する。プライベートメモリにおけるSHM DESC構造体では、I/O基準カウントを意味するI/Orefcntと称するフィールドがある。共用メモリ領域当たりに1つのSHM DESC構造体がある。
APMPデータベースにおけるSHM REG構造体では、「取り付けられたビットマスク」と称するビットマスクがある。共用メモリ領域当たり1つのSHM REG構造体がある。取り付けられたビットマスクは、APMPシステムの各インスタンス当たり1つのビットを含む。取り付けられたビットマスクのビットがセットされた場合には、対応するインスタンスが領域に取り付けられる。
【0247】
コンソールにより維持される構成ツリー構造体においては、コンソールコールバックルーチンを呼び出すことによりセット又はクリアすることのできる区画ノードにIDフィールドが存在する。区画のI/Oバスがリセットされた後のシステムブート中に、インスタンスの区画ノードにおけるこのフィールドがクリアされる。
共用セットがクリアされるときには、
1)このコミュニティ内の他の全てのインスタンスの区画ノードを通るループを形成する。
2)IDフィールドが非ゼロであり、そして構成ツリー内に指示された区画において実行されるインスタンスがない場合には、その区画に接続された全てのI/Oバスをリセットする。
【0248】
3)このインスタンスの区画ノードにおけるIDフィールドをID(APMPデータベースが再形成されるたびに増加する数)にセットする。
インスタンスが共用セットに加わるときには、
1)インスタンスの区画ノードにおけるIDフィールドを現在IDにセットする。
共用セットの退出中に、
1)全ての共用メモリ領域から取り外されるルーチンをコールする。
2)構成ツリーのインスタンス区画ノードにおけるIDフィールドをクリアする。
I/Oが開始されるときには、I/Oが実行される各ページに対してルーチンshim reg increfがコールされる。I/Oが完了したときに、各ページごとにルーチンshim reg decrefがコールされる。
【0249】
Figure 0004634548
【0250】
Figure 0004634548
タグが、供給されたタグに合致するような共用メモリのSHM REG構造体をサーチする。
このようなSHM REG構造体が見つからない場合には、
−新たなSHM REG構造体を割り当てる。
【0251】
−SHM REGロックを得る。
−SHM REG構造体の「init in progress」ビットをセットする。
−領域に対する共用メモリページを割り当てる。
−SHM REG構造体の「init in progress」ビットをクリアする。
−SHM REGロックを解除する。
このインスタンスに対するSHM REG取付されたビットマスクのビットをセットする。
供給される仮想マッピング情報を用いて共用メモリ領域へマップする。
ルーチンshm reg delate:
入力:共用メモリ領域id
この領域のプライベートメモリにおいてSHM DESCアドレスを得る。
【0252】
I/Orefcntフィールドが非ゼロの場合には、エラーを返送する。
共用メモリ領域をマップ解除する。
この領域の共用メモリにおいてSHM REGアドレスを得る。
このインスタンスのSHM REG取付されたビットマップにおいてビットをクリアする。
取り付けられたビットマスクが、セットされたビットをより多く有する場合には、復帰する。
SHM REG取付されたビットマスクがセットされたビットをもたない場合には、
−SHM REGロックを得る。
【0253】
−SHM REG構造体の「delete in progress」ビットをセットする。
−全ての共用メモリページを適当な共用メモリ空きページリストへ割り当て解除する。
−「delete in progress」ビットをクリアする。
−SHM REGロックを解除する。
−SHM REGデータ構造体をクリーンアップする。
システムクラッシュ中に:
全てのI/Oバスをリセットする。
インスタンスの区画ノードにおけるIDフィールドをクリアする。
別のインスタンスに割り込むシステムコードをコールし、インスタンスがクラッシュしたことを指示する(他のインスタンスの割り込みハンドラーは、shmem APMPDB recoverをコールする)。
【0254】
クラッシュダンプを開始する。
ハートビート監視中に:
インスタンスのハートがある時間中にビートしない場合に、インスタンスがデッドと宣言され、共用セットから除去される。
SHM REG同期ロックを得、必要に応じてロックをブレークする。ロックがデッドインスタンスにより保持される場合には:
初期化が進行中であること又は領域が削除中であることをSHM REG構造体が指示する場合に、shm reg deleteをコールする。
ルーチンshmem APMPDB recoverが他のインスタンスの少なくとも1つにおいてコールされる。この場合に、インスタンスの区画ノードのIDフィールドがクリアされる。
【0255】
Figure 0004634548
APMPデータベースにおいて全てのSHM REG構造体を通るループを形成する。
クラッシュインスタンスが領域に取り付けられた場合に、
1)インスタンスの区画ノードにおけるIDフィールドが非ゼロの場合には、これは、インスタンスが停止されたのであって、クラッシュされたのではないことを指示する。I/Oデバイスは、依然、共用メモリに書き込みする。
このインスタンスを取付状態にしそして共用メモリ領域をそのままにして次のSHM REG構造体へとループ形成する。インスタンスが共用セットに再び加わるときに、I/Oバスをリセットした後に、取り付けられたビットをクリアする。これは、共用メモリ領域が領域に取り付けられた最後のインスタンスである場合にそれを削除する。
【0256】
2)インスタンスの区画ノードにおけるIDフィールドがクリアの場合:
取り付けられたビットマスクにおいてインスタンスのビットをクリアする。
取り付けられたビットマスクが、セットされたビットをもたない場合:
shm reg deleteをコールする。
次のSHM REG構造体へループする。
全てのSHM REG構造体が処理された後に、更なる共用メモリ回復コードを実行する。
Figure 0004634548
【0257】
共用メモリにおけるAPMPデータベースへマップする。
他の共用メモリコミュニティ参加コードを実行する。
APMPデータベースにおける全てのSHM REG構造体を通るループを形成する。
このインスタンスが領域に取り付けられる場合には:
−取り付けられたビットマスクにおいてこのインスタンスのビットをクリアする。
取り付けられたビットマスクが、セットされたビットをそれ以上もたない場合には:
−shm reg deleteをコールする。
【0258】
次のSHM REG構造体へループする。
全てのSHM REG構造体が処理された後に、復帰する。
初期のAPMPデータベースページを選択するために、ルーチンshmem config APMPDBは、APMPDB map initialによってコールされて、APMPDBページの初期セットを選択する。
データ構造体:
構成ツリーにおけるコミュニティノードは、APMPDB INFOと称する64ビットフィールドを含み、これは、APMPDBページ情報を記憶するのに使用される。第1の32ビットAPMPDB INFO〔31:0〕は、APMPDBページの低PFNである。第2の32ビットAPMPDB INFO〔63:32〕は、APMPDBページのページカウントである。
【0259】
各インスタンスは、「共用メモリアレー」と称するアレーをプライベートメモリに保持する。このアレーの各エレメントは、共用メモリPFN及びページカウントを含む。全アレーは、このインスタンスが一部分であるところのコミュニティが所有する全ての共用メモリを記述する。
構成ツリーは、共用メモリに対するテストされたメモリビットマップを含む。
構成ツリーがある範囲のメモリに対してビットマップを含まない場合には、メモリがテストされそしてそれが良好となる。ある範囲のメモリに対してビットマップが存在する場合には、ビットマップの各ビットは、共用メモリのページが良好であるか不良であるかを指示する。
MAX APMPDB PAGESの値は、システムを初期化するのに必要なページの最大数にセットされる。この数は、共用メモリの粒度より小さくなければならない。MAX APMPDB PAGESは、APMPデータベースの初期化に対して隣接する良好なメモリが見つかる機会を高めるためには、小さい数でなければならない。
【0260】
Figure 0004634548
このルーチンは、構成ツリーの多数のコピーがコンソールによって維持される場合には更に複雑になる。
【0261】
1.コミュニティノードからAPMPDB INFOを読み取る。
2.APMPDB INFOがold APMPDB infoに等しくない場合には、エラーを返送する。
3.new APMPDB INFOを原子的命令でAPMPDB INFOへ記憶する。
ルーチンSHMEM config APMPDBは、APMPデータベースを構成するのに使用される。ルーチンは、第1のAPMPデータベースページフレーム番号と、APMPデータベースに対して指定されたページ数とを与える。
このルーチンは、次のように進行する。
(1)構成ツリー内のコミュニティノードを指すポインタを得る。
【0262】
(2)構成ツリーを横切って共用メモリアレーを形成する。共用メモリが存在しない場合には、エラーを返送する。
(3)APMPDB INFOフィールドを読み取る。
(4)APMPDB INFOフィールドが非ゼロの場合には、
PAGESをAPMPDB INFOにセットする。
共用メモリアレーをサーチして、ページPFNないしPFN+PAGES−1が共用メモリにあることを確保する。
これらのページが共用メモリアレーにある場合には:
テストされるメモリビットマップが存在すれば、ビットマップをチェックして、これらページが不良とマークされないよう確保する。
【0263】
全てのページが良好であれば、set APMPDB INFOをコールして、PFN及びPAGESをAPMPDB INFOフィールドに書き込む。
SET APMPDB INFOがエラーを返送する場合は、上記(2)に復帰する。
SET APMPDB INFOが成功を返送する場合には、PFN及びPAGESを発呼者に返送する。
いずれかのページが共用メモリにないか又は不良である場合には、
SET APMPDB INFOをコールして、APMPDB INFOフィールドをクリアする。
【0264】
SET APMPDB INFOがエラーを返送する場合は、上記(2)に復帰する。
SET APMPDB INFOが成功を返送する場合には、新たなAPMPDBページを選択するために(5)へ進む。
(5)PAGESをMAX APMPDB PAGESにセットする。
(6)共用メモリアレーを通るループを形成する。アレーの各エレメントに対し、
(6.1)PFNをその範囲の最小共用メモリPFNにセットする。
(6.2)テストされたメモリビットマップが存在する場合には、ビットマップをチェックして、これらのページが不良とマークされないように確保する。
【0265】
(6.3)全てのページが良好な場合には、
SET APMPDB INFOをコールして、PFNページをAPMPDBフィールドに書き込む。
SET APMPDB INFOがエラーを返送する場合は、上記(2)に復帰する。
SET APMPDB INFOが成功を返送する場合には、PFN及びPAGESを発呼者へ返送する。
(6.4)範囲内で不良ページに遭遇した場合には、
PFNを最も高い番号の不良PFN+1にセットする。
PFN+PAGES−1が依然共用メモリアレーエレメント内にある場合には、 (6.2)へ復帰する。
【0266】
PFN+PAGES−1がこの共用メモリアレーエレメントにより示された範囲より大きい場合には、次の共用メモリアレーエレメントへ移動する。
(6.5)共用メモリアレーエレメントが残されていない場合には、エラーを返送する。
例示的なページフレーム番号データベースレイアウトが図11のメモリマップにより示されている。この説明上の例では、システムは、64メガバイトのプライベートメモリ及び64メガバイトの共用メモリを各々含む2つのインスタンスA及びBを備えている。メモリは、8キロバイトページとして構成され、インスタンスAのプライベートメモリは、ページフレーム番号(PFN)0からPFN1BFF(16進)へと延びる。64メガバイトの共用メモリは、PFN2000からPFN3FFFまで延びる。インスタンスBのプライベートメモリは、PFN800000からPFN801FFFまで延びる。インスタンスAのPFNデータベースを保持するのに使用されるメモリは、インスタンスAのプライベートメモリから到来し(0−1FFF)、インスタンスBのPFNデータベースを保持するのに使用されるメモリは、インスタンスBのプライベートメモリから到来し(2000−3FFF)、そして共用メモリのPFNデータベースを保持するのに使用されるメモリは、共用メモリから到来する(800000−801FFF)。インスタンスAは、インスタンスBのメモリに対するPFNデータベースエントリにアクセスすることができない。というのは、図示されたように、このメモリ領域がインスタンスAのシステムスペースへとマップされないからである。同様に、インスタンスBは、インスタンスAのメモリに対するPFNデータベースエントリにアクセスすることができない。というのは、このメモリ領域がインスタンスBのシステムスペースへとマップされないからである。インスタンスA及びBの両方は、共用ページを共用メモリのためのPFNデータベースエントリへとマップする。インスタンスは、プライベートメモリページテーブルで共用ページへマップする。というのは、プライベートメモリ及び共用メモリのPFNデータベースエントリは、同じページテーブルのページによってマップされるからである。上記のように、物理的メモリの粒度は、PFNデータベースのエントリサイズ及びメモリページサイズの最小公倍数として選択される。ここに示す例では、メモリページサイズは8キロバイトであり、そして物理的メモリの粒度は、ページサイズを平方して8(バイト)で分割したもの即ち8MBに等しい。16、32及び64KBのページサイズは、各々、32、128及び512MBの物理的メモリ粒度を形成する。
【0267】
L.マルチプロセッサシステムにおける共用メモリ領域の回復(図19−21)
本発明の更に別の特徴によれば、オペレーティングシステムの多数のインスタンスは、全てのプロセッサ及びリソースが電気的に互いに接続された単一のマルチプロセッサコンピュータにおいて協働して実行される。多数の物理的プロセッサ及びリソースをもつ単一の物理的マシンは、ソフトウェアにより適応式に多数の区画に細分化され、その各々は、オペレーティングシステムの個別のコピー又はインスタンスを実行する能力を有する。各区画は、それ自身の物理的リソース及び共用と指示されたリソースにアクセスする。1つの実施形態によれば、リソースの区画化は、ある構成内にリソースを指定することにより実行される。
【0268】
より詳細には、ソフトウェアは、CPU、メモリ及びI/Oポートを一緒に指定することによりそれらを論理的及び適応式に区画化する。次いで、オペレーティングシステムのインスタンスが区画にロードされる。異なる時間に、異なるオペレーティングシステムインスタンスが所与の区画にロードされる。システムマネージャーが指令するこの区画化は、ソフトウェア機能であり、ハードウェアの境界は必要とされない。各個々のインスタンスは、それが独立して実行するのに必要なリソースを有する。CPU及びメモリのようなリソースは、異なる区画に動的に指定することができ、そして構成を変更することによりマシン内で実行されるオペレーティングシステムのインスタンスによって使用することができる。区画それ自身も、構成ツリーを変更することによりシステムを再ブートすることなく変更することができる。これにより得られる適応式に区画化されたマルチプロセッサ(APMP)システムは、拡張性、柔軟性及び高い性能を示す。
【0269】
メモリは、ソフトウェア制御のもとで区画又はコミュニティへ或いはそこから再構成することができ、そしてハードウェアホットインスワッピング又はアウトスワッピングがサポートされる。一般に、メモリは、プライベート、共用又は非所有の3つの状態の1つにある。メモリは、それが単一のシステム区画によって「所有」される場合にプライベートである。メモリは、それがコミュニティによって所有される場合に共用である。コミュニティ又は共用セットは、リソースを共用する1つ以上の区画の集合である。さもなくば、非所有である。メモリは、3つのいずれかの状態の間で直接再構成することができる。例えば、メモリは、ある区画のプライベートから別の区画のプライベートへ、又はコミュニティにおける共用からある区画のプライベートへと再構成することができる。メモリは、これをアウトスワップ又はインスワップできる前に、オペレーティングシステムインスタンス及びコンソールソフトウェアによって非所有状態に入れられ、これはシステム構成ツリーに反映される。ページフレーム番号データベースは、インスワップすることのできる全ての考えられるメモリを含むサイズにされ、そして追加されるメモリページは、ページフレーム番号データベースエントリーページとして使用することができる。従って、新たなメモリを容易に受け入れることができる。上記のように、メモリをアウトスワップするためには、メモリが非所有状態になければならない。アウトスワップされるべきメモリが共用状態又はプライベート状態にある場合は、アウトスワッピングを許すためにそれが非所有状態に入れられる。
【0270】
インスタンスは、共用メモリであるところの特性を領域に指定することにより共用メモリの領域を形成することができる。共用メモリの領域は、形成インスタンスと同じ共用セット内のいかなるインスタンスに取り付けることもできる。あるインスタンスが共用メモリ領域に取り付けられそしてフェイルした場合には、その後のシステム使用に対して共用メモリページが得られるよう確保するためにメモリが回復される。インスタンスの欠陥は、説明上、長い時間周期にわたってインスタンスが動作停止したり、インスタンスがクラッシュしたり、又はその他インスタンスが非応答になったりすることにより明らかになる。インスタンスが共用メモリ領域に取り付けられそしてフェイルした場合には、共用セットの別のインスタンスが、そのフェイルしたインスタンスがもはや共用メモリ領域に取り付けられないことを指示することにより、共用メモリ領域を回復する。フェイルするインスタンスが共用メモリ領域の同期ロックを保持しそして共用メモリ領域を初期化又は削除している場合には、その領域内の共用メモリページを解放することにより共用メモリ領域が回復される。同様に、フェイルするインスタンスが共用メモリ領域に取り付けられた唯一のインスタンスである場合にも、その領域内の共用メモリページを解放することにより共用メモリ領域が回復される。インスタンスがフェイルするときに共用セット内に他のインスタンスがない場合は、共用セットが後で再形成されたときに共用メモリページが自動的に回復される。入力/出力(I/O)がインスタンスのフェイル中に共用メモリ領域内のいずれかのページへ進行中である場合には、その影響を受ける共用メモリ領域内の共用メモリページが、別の共用メモリ領域による解放及び再使用を、それが安全に行われるまで受けないよう確保することにより、共用メモリ回復メカニズムが共用メモリの崩壊を防止する。
上記実施形態のソフトウェア実施体は、コンピュータ読み取り可能な媒体のような有形媒体、例えば、図1のディスケット142、CD−ROM147、ROM115又は固定ディスク152に固定されるか、或いは媒体191を経てネットワーク195に接続された通信アダプタ190のようなモデム又は他のインターフェイスデバイスを介してコンピュータシステムに送信可能な一連のコンピュータ命令より成る。媒体191は、光学又はアナログ通信ラインを含む(これに限定されないが)有形媒体であってもよいし、或いはマイクロ波、赤外線又は他の送信技術を含む(これに限定されないが)ワイヤレス技術で実施することもできる。これはインターネットであってもよい。一連のコンピュータ命令は、本発明に関して既に述べた機能の全部又は一部分を実施する。当業者であれば、このようなコンピュータ命令は、多数のコンピュータアーキテクチャー又はオペレーティングシステムと共に使用される多数のプログラミング言語で書き込めることが明らかであろう。更に、このような命令は、半導体、磁界、光学又は他のメモリデバイスを含む(これに限定されないが)現在又は将来のメモリ技術を用いて記憶することもできるし、或いは光学、赤外線、マイクロ波又は他の送信技術を含む(これに限定されないが)現在又は将来の通信技術を用いて送信することもできる。このようなコンピュータプログラム製品は、印刷物又は電子的ドキュメンテーションを付随する取り外し可能な媒体、例えば、収縮包装されたソフトウェアとして配布されるか、又はコンピュータシステムで例えばシステムROM又は固定ディスクに予めロードされるか、或いはサーバーや電子ブルティンボードからネットワーク例えばインターネット又はワールドワイドウェブを経て配布されることが意図される。
【0271】
以上、本発明の実施形態を詳細に説明したが、本発明の精神及び範囲から逸脱せずに種々の変更及び修正を行っても本発明の幾つかの効果が達成されることが当業者に明らかであろう。例えば、上記の説明は、特定のハードウェアシステム及びオペレーティングシステムに向けられたが、他のハードウェア及びオペレーティングシステムソフトウェアを上記と同様に使用することもできる。特定の機能を達成するのに使用される特定の命令のような他の特徴、並びに本発明の概念に対する他の変更は、特許請求の範囲によって包含されるものとする。
【図面の簡単な説明】
【図1】多数のシステムビルディングブロックを示したハードウェアプラットホームの概略ブロック図である。
【図2】本発明の原理に基づいて構成されたAPMPコンピュータシステムの概略図であって、多数の区画を示す図である。
【図3】ハードウェアリソース構成及びソフトウェア構成、並びにそれらの構成要素を子供及び兄弟ポインタと共に示す構成ツリーの概略図である。
【図4】所有権ポインタによりソフトウェアインスタンスへのハードウェアの指定を示すように再構成した図3の構成ツリーの概略図である。
【図5】本発明の原理に基づいてAPMPコンピュータシステムを形成するための例示的ルーチンにおける段階を示すフローチャートである。
【図6】APMPシステム及びその構成に関連した情報を維持するAPMPシステムマネージメントデータベースのエントリを形成するための例示的ルーチンにおける段階を示すフローチャートである。
【図7A】本発明の原理基づいてAPMPコンピュータシステムを形成するための例示的ルーチンにおける段階を示すフローチャートの一部分である。
【図7B】本発明の原理基づいてAPMPコンピュータシステムを形成するための例示的ルーチンにおける段階を示すフローチャートの一部分である。
【図8A】既に形成されたAPMPコンピュータシステムに加わるためにオペレーティングシステムインスタンスがたどる例示的ルーチンにおける段階を示すフローチャートの一部分である。
【図8B】既に形成されたAPMPコンピュータシステムに加わるためにオペレーティングシステムインスタンスがたどる例示的ルーチンにおける段階を示すフローチャートの一部分である。
【図9】1つの区画から別の区画へリソースを移動する段階を一般的に示す図である。
【図10A】1つの区画から別の区画へリソースを移動する段階をグラフ的に示すブロック図である。
【図10B】1つの区画から別の区画へリソースを移動する段階をグラフ的に示すブロック図である。
【図10C】1つの区画から別の区画へリソースを移動する段階をグラフ的に示すブロック図である。
【図10D】1つの区画から別の区画へリソースを移動する段階をグラフ的に示すブロック図である。
【図10E】1つの区画から別の区画へリソースを移動する段階をグラフ的に示すブロック図である。
【図11】本発明のシステム全体を示すブロック回路図である。
【図12】何も共用しないコンピュータシステムとして動作する本発明のコンピュータシステムのブロック回路図である。
【図13】部分的に共用するコンピュータシステムとして動作する本発明のコンピュータシステムのブロック回路図である。
【図14】全てを共用するコンピュータシステムとして動作する本発明のコンピュータシステムのブロック回路図である。
【図15】本発明のコンピュータシステムにおいてCPUの移動を示すブロック回路図である。
【図16】本発明のコンピュータシステムの多数の各区画において実行されるインスタンスにより使用されるCPUセットを示すと共に、これらのインスタンスに対するシステムのCPUの分類を示す図である。
【図17】システムのどのCPUが区画において実行されるインスタンスの種々のセットにあるかを示すのに使用される区画及び1組のメモリ位置を示す概略図である。
【図18】図17と同様であるが、本発明の別の実施形態に対する付加的な組を示す図である。
【図19】システムからプライベートメモリを除去するときにオペレーティングシステムインスタンスがたどるルーチンの段階を例示するフローチャートである。
【図20】システムから共用メモリを除去するときにオペレーティングシステムインスタンスがたどるルーチンの段階を例示するフローチャートである。
【図21】本発明によるPFNデータベースのメモリマップを示す図である。
【図22A】「PAL」型移動のもとである区画から別の区画へ移動するCPUがたどるルーチンの段階を例示するフローチャートである。
【図22B】「PAL」型移動のもとである区画から別の区画へ移動するCPUがたどるルーチンの段階を例示するフローチャートである。
【図23】CPUが移動するところの区画においてソフトウェアがたどるルーチンの段階を例示するフローチャートである。
【図24】第1区画と、第1区画内に欠陥が生じた際に第1区画のリソースが移動されるバックアップ区画とを示す図である。
【図25】ローカルインスタンスに欠陥が生じたときに制御遮断の一部分として区画から移動されるリソースの行先区画を決定するためにローカルインスタンスによって使用されるターゲットインスタンスIDのアレーを示す図である。
【図26A】第1区画のインスタンスに欠陥が生じた後にリソースを再配置するためにたどる一般的手順を示すフローチャートである。
【図26B】第1区画のインスタンスに欠陥が生じた後にリソースを再配置するためにたどる一般的手順を示すフローチャートである。
【図27】欠陥が生じたインスタンスから移動するCPUがたどる手順を示すフローチャートである。
【図28】本発明のCPUの永久所有権の初期指定中にたどる段階を示すフローチャートである。
【図29】本発明のCPUの永久所有権の変更中にたどる段階を示すフローチャートである。
【図30A】CPUが「HALT」型移動のもとで移動するときにシステムがたどるルーチンの段階を例示するフローチャートである。
【図30B】CPUが「HALT」型移動のもとで移動するときにシステムがたどるルーチンの段階を例示するフローチャートである。
【図30C】CPUが「HALT」型移動のもとで移動するときにシステムがたどるルーチンの段階を例示するフローチャートである。
【図31】停止状態にあるCPUが移動するときにシステムがたどるルーチンの段階を例示するフローチャートである。
【図32A】指定解除した後に再指定することによりCPUが移動されるときにシステムがたどるルーチンの段階を例示するフローチャートである。
【図32B】指定解除した後に再指定することによりCPUが移動されるときにシステムがたどるルーチンの段階を例示するフローチャートである。
【図33A】単一ビット通知を用いて1つのインスタンスから他のインスタンスへ通信するために2つのオペレーティングシステムがたどるルーチンの段階を例示するフローチャートである。
【図33B】単一ビット通知を用いて1つのインスタンスから他のインスタンスへ通信するために2つのオペレーティングシステムがたどるルーチンの段階を例示するフローチャートである。
【図34A】パケット化データ転送を使用して1つのインスタンスから他のインスタンスへ通信するために2つのオペレーティングシステムがたどるルーチンの段階を例示するフローチャートである。
【図34B】パケット化データ転送を使用して1つのインスタンスから他のインスタンスへ通信するために2つのオペレーティングシステムがたどるルーチンの段階を例示するフローチャートである。
【符号の説明】
100−106 システムビルディングブロック(SBB)
108−114 CPU
116 ポート
118 I/Oプロセッサ
120 メモリスロット
200 APMPコンピュータシステム
202、204、206 区画
208、210、212 オペレーティングシステムインスタンス
213、215、217 コンソールプログラム
230 コミュニティ
300 構成ツリー
1000 区画1
1002 区画2
1006 コンソール1
1016 コンソール2
1008 オペレーティングシステムインスタンス1
1010、1024 リソース
1012 構成ツリー
1018 オペレーティングシステムインスタンス2

Claims (17)

  1. プロセッサ、メモリ及びI/O回路を含む複数のシステムリソースを有するコンピュータシステムにおいて、
    各プロセッサが全てのメモリ及び少なくともあるI/O回路に電気的にアクセスするように、プロセッサ、メモリ及びI/O回路を電気的に相互接続するための相互接続メカニズムと、
    複数の区画に上記システムリソースを分割するためのソフトウェアメカニズムと、
    複数の上記区画のそれぞれにおいて実行される少なくとも1つのオペレーティングシステムのインスタンスと、
    それぞれのプロセッサと前記複数のインスタンスの1つとの関連を定義するための複数のプロセッサのそれぞれに対する指示情報を記憶するプロセッサ指示情報記憶装置と、を備え、前記指示情報の内で所定のインスタンスのための指示情報のセットのそれぞれが、対応する複数の前記プロセッサが前記指示情報のセットによって表わされる特定の動作状態を有するかを示す複数の指示情報を含み、その動作状態は、前記プロセッサが前記所定のインスタンスと合致するタイプである潜在的な状態、前記プロセッサが前記所定のインスタンスの制御下にあるかどうかを示す構成状態、前記プロセッサが前記所定のインスタンスにより対称マルチプロセシング動作のために利用可能であるかどうかを示すアクティブ状態、を含み、
    前記所定のインスタンスのための前記指示情報のセットと異なる指示情報のセットは、前記異なる指示情報のセットのそれぞれの指示情報が、前記所定のインスタンスと関連するプロセッサと異なるプロセッサに関連する指示情報であり、前記異なる指示情報のセットのそれぞれの指示情報が、その指示情報と関連するプロセッサが前記インスタンスからの特別な開始命令を必要とすることなく、前記インスタンスの制御に移された後に所定のインスタンスによる処理アクティビティを開始することが許されるべきかどうかを示す指示情報であることを特徴とするコンピュータシステム。
  2. 上記指示情報は、第1インスタンスに関連したメモリビットによるものであり、前記メモリビットの第1の特定の設定は、プロセッサが第1インスタンスの制御下にあることを指示する請求項1に記載のコンピュータシステム。
  3. 前記モリビットの第2の設定は前記第1インスタンスの制御下にはない請求項2に記載のコンピュータシステム。
  4. 前記プロセッサ指示情報記憶装置は、それぞれが異なるインスタンスに関連付けられ、その異なるインスタンスによって検査可能である、前記プロセッサがそれに関連するインスタンスの制御下にあるかどうかをそれぞれが示す、複数の指示情報を記憶する請求項1に記載のコンピュータシステム。
  5. それぞれの指示情報は、モリビットの第1の特定の設定が、前記ロセッサが前記メモリビットと関連する前記区画の制御下にあることを示すものである前記メモリビットを含む請求項4に記載のコンピュータシステム。
  6. 前記指示情報のそれぞれのセットは、前記メモリ中の複数のビットを含み、その複数のビットは前記所定のインスタンスに制御されるビットベクトルとして編成されることを特徴とする請求項1に記載のコンピュータシステム。
  7. 前記指示情報は、前記メモリのビットによるものであり、そのビットは前記第1のインスタンスに制御されるビットベクトルの一部であることを特徴とする請求項に記載のコンピュータシステム。
  8. 前記オペレーティングシステムインスタンスの少なくとも2つは異なるオペレーティングシステムであることを特徴とする請求項1に記載のコンピュータシステム。
  9. 前記コンピュータシステムは、前記区画のどれが前記コンピュータシステムの一部であるのかに関する情報を含む構成データベースを含むことを特徴とする請求項1に記載のコンピュータシステム。
  10. マスターコンソールが、前記コンピュータシステムのパワーアップ時に前記構成データベースを生成する手段を含むことを特徴とする請求項9に記載のコンピュータシステム。
  11. 前記ソフトウェアメカニズムは、前記システムリソースを、それぞれが少なくとも1つのプロセッサ、いくつかのメモリ、及び幾つかのI/O回路を含む、複数の区画に分割するためのメカニズムを含むことを特徴とする請求項1に記載のコンピュータシステム。
  12. プロセッサ、メモリ及びI/O回路を含む複数のシステムリソースを有するようにコンピュータシステムを構成させる方法において、
    (a)各プロセッサが全てのメモリ及び少なくともあるI/O回路に電気的にアクセスするように、プロセッサ、メモリ、及びI/O回路を電気的に相互接続する段階;
    (b)少なくとも1つのプロセッサ、あるメモリ及びあるI/O回路を各々含む複数の区画に上記システムリソースを分割する段階;
    (c)複数の上記区画において少なくとも1つのオペレーティングシステムインスタンスを実行する段階;
    (d)各インスタンスごとに、前記システムに存在するプロセッサの記録を維持し、前記プロセッサが前記インスタンスと合致することを示す潜在的な状態、前記プロセッサが前記インスタンスの制御下にあるかどうかを示す構成状態、前記プロセッサが対称マルチプロセシング動作のために前記区画に利用可能であるかどうかを示すアクティブ状態を含む、前記インスタンスに関する前記プロセッサの複数の異なる動作状態を認識する段階であって、前記インスタンスからの特別な開始命令を必要とすることなく、前記インスタンスの制御に移された後、所定のインスタンスによる処理アクティビティを開始するように選択された状態を認識することを含む段階を備えたことを特徴とする方法。
  13. (f)第1インスタンスとの関連性及び第1インスタンスに対する動作状態を定義するために第1リソースに対する指示情報を前記メモリ記憶し、上記指示情報は、前記プロセッサを使用すべきかどうかを決定し、そしてビットマスクを用いて前記メモリ内容を変更するやり方で上記指示情報を変更するように、第1インスタンスにより使用される;
    という段階を更に備えた請求項12に記載の方法。
  14. 段階(c)は、(c1)前記複数の区画で少なくとも2つの異なるオペレーティングシステムインスタンスを実行させる段階であって、前記2つの異なるインスタンスは異なるオペレーティングシステムである段階を含むことを特徴とする請求項12に記載の方法。
  15. (e)前記区画のどれが前記コンピュータシステムの一部であるのかに関する情報を含む構成データベースを生成する段階を含むことを特徴とする請求項12に記載の方法。
  16. 段階(e)は、(e1)前記コンピュータシステムのパワーアップ時に前記構成データベースを生成する段階を含むことを特徴とする請求項15に記載の方法。
  17. 前記システムを複数の区画に分割する段階は、前記システムを、それぞれが少なくとも1つのプロセッサ、いくつかのメモリ、及び幾つかのI/O回路を含む、複数の区画に分割する段階を含むことを特徴とする請求項12に記載の方法。
JP35066198A 1997-11-04 1998-11-04 マルチプロセッサコンピュータシステム及びその動作方法 Expired - Fee Related JP4634548B2 (ja)

Applications Claiming Priority (24)

Application Number Priority Date Filing Date Title
US6425097P 1997-11-04 1997-11-04
US9525698A 1998-06-10 1998-06-10
US9518898A 1998-06-10 1998-06-10
US09/095188 1998-06-10
US09/095,265 US6260068B1 (en) 1998-06-10 1998-06-10 Method and apparatus for migrating resources in a multi-processor computer system
US09/095,543 US6647508B2 (en) 1997-11-04 1998-06-10 Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation
US09/095264 1998-06-10
US09/090,027 US6226734B1 (en) 1998-06-10 1998-06-10 Method and apparatus for processor migration from different processor states in a multi-processor computer system
US09/095266 1998-06-10
US09/090027 1998-06-10
US09/095256 1998-06-10
US09/095265 1998-06-10
US09/095,277 US20020016891A1 (en) 1998-06-10 1998-06-10 Method and apparatus for reconfiguring memory in a multiprcessor system with shared memory
US09/095521 1998-06-10
US09/095,521 US6542926B2 (en) 1998-06-10 1998-06-10 Software partitioned multi-processor system with flexible resource sharing levels
US09/095543 1998-06-10
US09/095368 1998-06-10
US60/064250 1998-06-10
US09/095277 1998-06-10
US09/095,266 US6199179B1 (en) 1998-06-10 1998-06-10 Method and apparatus for failure recovery in a multi-processor computer system
US09/095379 1998-06-10
US09/095,368 US6633916B2 (en) 1998-06-10 1998-06-10 Method and apparatus for virtual resource handling in a multi-processor computer system
US09/095,264 US6332180B1 (en) 1998-06-10 1998-06-10 Method and apparatus for communication in a multi-processor computer system
US09/095,379 US6381682B2 (en) 1998-06-10 1998-06-10 Method and apparatus for dynamically sharing memory in a multiprocessor system

Publications (2)

Publication Number Publication Date
JP2000132530A JP2000132530A (ja) 2000-05-12
JP4634548B2 true JP4634548B2 (ja) 2011-02-16

Family

ID=27583701

Family Applications (1)

Application Number Title Priority Date Filing Date
JP35066198A Expired - Fee Related JP4634548B2 (ja) 1997-11-04 1998-11-04 マルチプロセッサコンピュータシステム及びその動作方法

Country Status (2)

Country Link
EP (1) EP0917056B1 (ja)
JP (1) JP4634548B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9910789B2 (en) 2012-11-12 2018-03-06 International Business Machines Corporation Electrical and optical memory access

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8179809B1 (en) 1999-08-23 2012-05-15 Oracle America, Inc. Approach for allocating resources to an apparatus based on suspendable resource requirements
US8019870B1 (en) 1999-08-23 2011-09-13 Oracle America, Inc. Approach for allocating resources to an apparatus based on alternative resource requirements
US7103647B2 (en) 1999-08-23 2006-09-05 Terraspring, Inc. Symbolic definition of a computer system
US6597956B1 (en) 1999-08-23 2003-07-22 Terraspring, Inc. Method and apparatus for controlling an extensible computing system
US8032634B1 (en) 1999-08-23 2011-10-04 Oracle America, Inc. Approach for allocating resources to an apparatus based on resource requirements
US7463648B1 (en) 1999-08-23 2008-12-09 Sun Microsystems, Inc. Approach for allocating resources to an apparatus based on optional resource requirements
US6779016B1 (en) 1999-08-23 2004-08-17 Terraspring, Inc. Extensible computing system
US7703102B1 (en) 1999-08-23 2010-04-20 Oracle America, Inc. Approach for allocating resources to an apparatus based on preemptable resource requirements
US8234650B1 (en) 1999-08-23 2012-07-31 Oracle America, Inc. Approach for allocating resources to an apparatus
US7007276B1 (en) * 1999-09-28 2006-02-28 International Business Machines Corporation Method, system and program products for managing groups of partitions of a computing environment
US7051188B1 (en) 1999-09-28 2006-05-23 International Business Machines Corporation Dynamically redistributing shareable resources of a computing environment to manage the workload of that environment
CA2382017C (en) * 1999-09-28 2007-06-26 International Business Machines Corporation Workload management in a computing environment
US6986137B1 (en) 1999-09-28 2006-01-10 International Business Machines Corporation Method, system and program products for managing logical processors of a computing environment
US6587938B1 (en) * 1999-09-28 2003-07-01 International Business Machines Corporation Method, system and program products for managing central processing unit resources of a computing environment
US6651125B2 (en) * 1999-09-28 2003-11-18 International Business Machines Corporation Processing channel subsystem pending I/O work queues based on priorities
US6714980B1 (en) 2000-02-11 2004-03-30 Terraspring, Inc. Backup and restore of data associated with a host in a dynamically changing virtual server farm without involvement of a server that uses an associated storage device
US20020103889A1 (en) * 2000-02-11 2002-08-01 Thomas Markson Virtual storage layer approach for dynamically associating computer storage with processing hosts
US7093005B2 (en) 2000-02-11 2006-08-15 Terraspring, Inc. Graphical editor for defining and creating a computer system
US6990663B1 (en) * 2000-06-08 2006-01-24 International Business Machines Corporation Hypervisor virtualization of OS console and operator panel
JP4712279B2 (ja) * 2000-06-20 2011-06-29 テラスプリング・インコーポレーテッド 拡張可能コンピューティングシステムの制御方法および装置
US6665777B2 (en) * 2000-07-26 2003-12-16 Tns Holdings, Inc. Method, apparatus, network, and kit for multiple block sequential memory management
US6985951B2 (en) * 2001-03-08 2006-01-10 International Business Machines Corporation Inter-partition message passing method, system and program product for managing workload in a partitioned processing environment
US7380001B2 (en) 2001-05-17 2008-05-27 Fujitsu Limited Fault containment and error handling in a partitioned system with shared resources
US7073002B2 (en) 2003-03-13 2006-07-04 International Business Machines Corporation Apparatus and method for controlling resource transfers using locks in a logically partitioned computer system
US7085862B2 (en) * 2003-03-13 2006-08-01 International Business Machines Corporation Apparatus and method for controlling resource transfers in a logically partitioned computer system by placing a resource in a power on reset state when transferring the resource to a logical partition
US7039820B2 (en) 2003-04-24 2006-05-02 International Business Machines Corporation Method for detecting and powering off unused I/O slots in a computer system
US8271976B2 (en) * 2004-06-30 2012-09-18 Microsoft Corporation Systems and methods for initializing multiple virtual processors within a single virtual machine
JP4982971B2 (ja) 2004-09-29 2012-07-25 ソニー株式会社 情報処理装置、プロセス制御方法、並びにコンピュータ・プログラム
US8621458B2 (en) * 2004-12-21 2013-12-31 Microsoft Corporation Systems and methods for exposing processor topology for virtual machines
US7783807B2 (en) 2006-03-14 2010-08-24 International Business Machines Corporation Controlling resource transfers in a logically partitioned computer system
US8766995B2 (en) 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
US8884972B2 (en) 2006-05-25 2014-11-11 Qualcomm Incorporated Graphics processor with arithmetic and elementary function units
US8869147B2 (en) 2006-05-31 2014-10-21 Qualcomm Incorporated Multi-threaded processor with deferred thread output control
US8644643B2 (en) 2006-06-14 2014-02-04 Qualcomm Incorporated Convolution filtering in a graphics processor
US8766996B2 (en) 2006-06-21 2014-07-01 Qualcomm Incorporated Unified virtual addressed register file
US7844709B2 (en) * 2006-09-20 2010-11-30 International Business Machines Corporation Method and apparatus for managing central processing unit resources of a logically partitioned computing environment without shared memory access
EP2207252B1 (en) * 2009-01-07 2013-07-03 ABB Research Ltd. Substation automation device and system
US9710273B2 (en) 2014-11-21 2017-07-18 Oracle International Corporation Method for migrating CPU state from an inoperable core to a spare core

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997004388A1 (en) * 1995-07-19 1997-02-06 Unisys Corporation Partitionable array processor with independently running sub-arrays

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1293819C (en) * 1986-08-29 1991-12-31 Thinking Machines Corporation Very large scale computer
EP0321694B1 (en) * 1987-12-21 1995-06-07 Bull HN Information Systems Inc. Method for a Data processing system using incompatible central processing unit/operating system combinations
US5237566A (en) * 1989-03-30 1993-08-17 Ungermann-Bass, Inc. Network hub for maintaining node bandwidth in a single-node network
CA2100540A1 (en) * 1992-10-19 1994-04-20 Jonel George System and method for performing resource reconfiguration in a computer system
US5574914A (en) * 1993-01-04 1996-11-12 Unisys Corporation Method and apparatus for performing system resource partitioning

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997004388A1 (en) * 1995-07-19 1997-02-06 Unisys Corporation Partitionable array processor with independently running sub-arrays

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9910789B2 (en) 2012-11-12 2018-03-06 International Business Machines Corporation Electrical and optical memory access

Also Published As

Publication number Publication date
JP2000132530A (ja) 2000-05-12
EP0917056A2 (en) 1999-05-19
EP0917056A3 (en) 2000-08-09
EP0917056B1 (en) 2008-01-09

Similar Documents

Publication Publication Date Title
JP4634548B2 (ja) マルチプロセッサコンピュータシステム及びその動作方法
US6247109B1 (en) Dynamically assigning CPUs to different partitions each having an operation system instance in a shared memory space
US6199179B1 (en) Method and apparatus for failure recovery in a multi-processor computer system
US6260068B1 (en) Method and apparatus for migrating resources in a multi-processor computer system
US6381682B2 (en) Method and apparatus for dynamically sharing memory in a multiprocessor system
US6226734B1 (en) Method and apparatus for processor migration from different processor states in a multi-processor computer system
US6332180B1 (en) Method and apparatus for communication in a multi-processor computer system
US6647508B2 (en) Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation
US6542926B2 (en) Software partitioned multi-processor system with flexible resource sharing levels
US6633916B2 (en) Method and apparatus for virtual resource handling in a multi-processor computer system
US20020016891A1 (en) Method and apparatus for reconfiguring memory in a multiprcessor system with shared memory
US11627041B2 (en) Dynamic reconfiguration of resilient logical modules in a software defined server
JP4299473B2 (ja) マルチパーティション・コンピュータシステム
US8327113B2 (en) Method, system, and apparatus for dynamic reconfiguration of resources
US20240143204A1 (en) Techniques for implementing fault domain sets
EP3356936B1 (en) Network attached memory using selective resource migration
US8914606B2 (en) System and method for soft partitioning a computer system
US20050044301A1 (en) Method and apparatus for providing virtual computing services
EP0323013A2 (en) Method of operating a multiprocessor system employing a shared virtual memory
Milojicic et al. Global memory management for a multi computer system
JP2000215189A (ja) 多数のオペレーティングシステムインスタンス及びソフトウェア制御式リソース割り当てを伴うマルチプロセッサコンピュータアーキテクチャ
DE69838969T2 (de) Multiprozessor-Rechnersystem und Verfahren zu seinem Betrieb
Cardoza et al. Overview of digital UNIX cluster system architecture
Stoller An implementation of the schizophrenic workstation
Abdel-Shafi Reliable parallel computing on clusters of multiprocessors

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20051024

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20051024

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080623

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080924

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080929

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100127

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100427

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100506

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100527

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100628

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101028

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101119

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees