(57)【特許請求の範囲】
【請求項１】
物理メモリの主メモリ用第１領域およびミラー・メモリ用第２領域を有するデータ処理システムでメモリ枯渇状態を処理する方法であって、
前記第２領域が前記第１領域の少なくとも一部をミラーリングしている間に前記第１領域のメモリ枯渇状態を検出するステップと、
前記メモリ枯渇状態に応答して、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に非活動化するステップと、
前記メモリ枯渇状態が除去されるように、前記第２領域の少なくとも一部を用いて前記第１領域を増補するステップと、
前記第１領域と前記第２領域との間のメモリ・ミラーリングが少なくとも部分的に非活動化された後に、メモリの必要が減ったことを判定するステップと、
メモリの必要が減ったことの前記判定に応答して、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に再活動化するステップと、
を含む方法。
【請求項２】
前記データ処理システムが、実メモリを物理メモリの前記第１領域に圧縮し、
メモリ枯渇状態を検出する前記ステップが、前記第１領域が実メモリに関する現在の要求に対応するのに十分な使用可能容量を有しないことを判定するステップを含み、
前記第１領域を増補する前記ステップが、前記要求された実メモリの少なくとも一部を前記第２領域の前記少なくとも一部に圧縮するステップを含む
請求項１に記載の方法。
【請求項３】
前記メモリ枯渇状態に応答して、前記メモリ枯渇状態に関するデータを記録するステップと、
その後、メモリ圧縮に関する圧縮比をセットするために前記データを使用するステップと
をさらに含む、請求項２に記載の方法。
【請求項４】
前記データ処理システムが、１つまたは複数のミラー・モード・ビットに従ってメモリ・アクセスを前記第１領域または前記第２領域に向けるミラー・モード・コントローラを有し、
前記第１領域を増補する前記ステップが、前記１つまたは複数のミラー・モード・ビットの少なくとも１つを変更するステップを含む
請求項１に記載の方法。
【請求項５】
物理メモリの主メモリ用第１領域およびミラー・メモリ用第２領域と、
前記第２領域が前記第１領域の少なくとも一部をミラーリングしている間に前記第１領域のメモリ枯渇状態を検出する検出論理と、
１つまたは複数のミラー・モード・ビットに従ってメモリ・アクセスを前記第１領域または前記第２領域に向けるミラー・モード・コントローラと、
前記メモリ枯渇状態に応答して、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に非活動化し、前記メモリ枯渇状態が除去されるように、前記１つまたは複数のミラー・モード・ビットの少なくとも１つを変更することにより前記第２領域の少なくとも一部を用いて前記第１領域を増補する、構成論理と
を含むデータ処理システム。
【請求項６】
前記データ処理システムが、実メモリを物理メモリの前記第１領域に圧縮し、
前記検出論理が、前記第１領域が実メモリに関する現在の要求に対応するのに十分な使用可能容量を有しないことを判定することによって前記メモリ枯渇状態を検出するメモリ・コントローラを含み、
前記構成論理が、前記実メモリの少なくとも一部を前記第２領域の前記少なくとも一部に圧縮するように前記メモリ・コントローラを構成することによって前記第１領域を増補するメモリ・マネージャを含む
請求項５に記載のデータ処理システム。
【請求項７】
前記メモリ枯渇状態に応答して、前記メモリ・マネージャが、前記メモリ枯渇状態に関するデータを記録し、
前記メモリ・マネージャが、その後、メモリ圧縮に関する圧縮比をセットするために前記データを使用する
請求項６に記載のデータ処理システム。
【請求項８】
前記第１領域と前記第２領域との間のメモリ・ミラーリングが少なくとも部分的に非活動化された後に、前記構成論理が、メモリの必要が減ったことを判定し、
メモリの必要が減ったことの前記判定に応答して、前記構成論理が、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に再活動化する
請求項５に記載のデータ処理システム。
【請求項９】
メモリ・コントローラと、物理メモリの主メモリ用第１領域およびミラー・メモリ用第２領域と、１つまたは複数のミラー・モード・ビットに従ってメモリ・アクセスを前記第１領域または前記第２領域に向けるミラー・モード・コントローラとを有し、コンピュータ使用可能媒体に担持されたコンピュータ可読命令により動作するデータ処理システムでメモリ枯渇状態を処理するプログラムであって、
前記コンピュータ可読命令により実施されるメモリ・マネージャと、
前記第２領域が前記第１領域の少なくとも一部をミラーリングしている間に生じる前記第１領域のメモリ枯渇状態に応答して、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に非活動化する、前記メモリ・マネージャ内の非活動化命令と、
前記メモリ枯渇状態が除去されるように、前記１つまたは複数のミラー・モード・ビットの少なくとも１つを変更することにより、前記メモリ・コントローラに、前記第２領域の少なくとも一部を用いて前記第１領域を増補させる、前記メモリ・マネージャ内の増補命令と
を含むプログラム。
【請求項１０】
前記データ処理システムが、実メモリを物理メモリの前記第１領域に圧縮し、前記メモリ・コントローラが、前記第１領域が実メモリに関する現在の要求に対応するのに十分な使用可能容量を有しないことを判定することによって前記メモリ枯渇状態を検出し、
前記メモリ・マネージャが、前記実メモリの少なくとも一部を前記第２領域の前記少なくとも一部に圧縮するように前記メモリ・コントローラを構成することによって前記第１領域を増補する
請求項９に記載のプログラム。
【請求項１１】
前記メモリ枯渇状態に応答して、前記メモリ・マネージャが、前記メモリ枯渇状態に関するデータを記録し、
前記メモリ・マネージャが、その後、メモリ圧縮に関する圧縮比をセットするために前記データを使用する
請求項１０に記載のプログラム。
【請求項１２】
前記第１領域と前記第２領域との間のメモリ・ミラーリングが少なくとも部分的に非活動化された後に、前記メモリ・マネージャが、メモリの必要が減ったことを判定し、
メモリの必要が減ったことの前記判定に応答して、前記メモリ・マネージャが、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に再活動化する
請求項９に記載のプログラム。
【請求項１３】
物理メモリの主メモリ用第１領域およびミラー・メモリ用第２領域を有するデータ処理システムでメモリ枯渇状態を処理するメモリ管理システムであって、
前記第２領域が前記第１領域の少なくとも一部をミラーリングしている間に前記第１領域のメモリ枯渇状態を検出する検出論理と、
１つまたは複数のミラー・モード・ビットに従ってメモリ・アクセスを前記第１領域または前記第２領域に向けるミラー・モード・コントローラと、
前記メモリ枯渇状態に応答して、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に非活動化し、前記メモリ枯渇状態が除去されるように、前記１つまたは複数のミラー・モード・ビットの少なくとも１つを変更することにより前記第２領域の少なくとも一部を用いて前記第１領域を増補する、構成論理と
を含むメモリ管理システム。
【請求項１４】
前記データ処理システムが、実メモリを物理メモリの前記第１領域に圧縮し、
前記検出論理が、前記第１領域が実メモリに関する現在の要求に対応するのに十分な使用可能容量を有しないことを判定することによって前記メモリ枯渇状態を検出するメモリ・コントローラを含み、
前記構成論理が、前記実メモリの少なくとも一部を前記第２領域の前記少なくとも一部に圧縮するように前記メモリ・コントローラを構成することによって前記第１領域を増補するメモリ・マネージャを含む
請求項１３に記載のメモリ管理システム。
【請求項１５】
前記メモリ枯渇状態に応答して、前記メモリ・マネージャが、前記メモリ枯渇状態に関するデータを記録し、
前記メモリ・マネージャが、その後、メモリ圧縮に関する圧縮比をセットするために前記データを使用する
請求項１４に記載のメモリ管理システム。
【請求項１６】
前記第１領域と前記第２領域との間のメモリ・ミラーリングが少なくとも部分的に非活動化された後に、前記構成論理が、メモリの必要が減ったことを判定し、
メモリの必要が減ったことの前記判定に応答して、前記構成論理が、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に再活動化する
請求項１３に記載のメモリ管理システム。
【請求項１７】
物理メモリの主メモリ用第１領域およびミラー・メモリ用第２領域と、
前記第２領域が前記第１領域の少なくとも一部をミラーリングしている間に前記第１領域のメモリ枯渇状態を検出する検出論理と、
前記メモリ枯渇状態に応答して、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に非活動化し、前記メモリ枯渇状態が除去されるように、前記第２領域の少なくとも一部を用いて前記第１領域を増補し、前記第１領域と前記第２領域との間のメモリ・ミラーリングが少なくとも部分的に非活動化された後に、メモリの必要が減ったことを判定し、メモリの必要が減ったことの前記判定に応答して、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に再活動化する、構成論理と
を含むデータ処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、全般的にはデータ処理システムに関し、具体的には、メモリ・ミラーリング（mirroring）をサポートするデータ処理システムに関する。さらに具体的には、本発明は、メモリ・ミラーリングをサポートするデータ処理システムでメモリを管理するシステムに関する。
【０００２】
【従来の技術】
データ処理システムの分野で、高可用性データ処理システムに使用することができる設計特徴が、メモリ・ミラーリングである。メモリ・ミラーリングでは、システム・メモリの冗長コピーが維持される。たとえば、２バンクのランダム・アクセス・メモリ（ＲＡＭ）を有するシステムが、メモリ・ミラーリングを有する場合に、第１バンク（たとえばバンクＡ）を主バンクとして使用することができ、第２バンク（たとえばバンクＢ）をバックアップ・バンクまたはミラー・バンクとして使用することができる。ミラー・バンクは、主バンクに含まれるデータの余分なコピーのリポジトリとして働く。主バンクＡでのエラーの場合に、システムは、主バンクＡの代わりにミラー・バンクＢを使用することによって、サービスの中断を回避する。その後、バンクＡがサービスを必要とすることを示すエラー・メッセージを生成することができる。
【０００３】
しかし、メモリ・ミラーリングに関連する不利益は、インストールされたメモリのうちで一般的な使用に利用可能な部分が減ることである。たとえば、上の例では、バンクＡが一般的な使用に利用可能であるが、バンクＢはそうではない。主メモリのすべてをミラー・メモリにミラーリングする時には、システムが全ミラーリングを有すると言うが、この場合には、インストールされたメモリの半分だけが、一般的な使用に利用可能である。その代わりに、部分ミラーリングを実施することができる。たとえば、４バンクのメモリ（たとえばバンクＡないしＤ）を有するシステムを、バンクＡをバンクＢにミラーリングするが、バンクＣおよびＤにミラーリングしないように構成することができる。部分ミラーリングによって、インストールされたメモリのうちのより多くの比率の一般的な使用がもたらされるが、メモリ・エラーに対する保護が減る。
【０００４】
一般的な使用のためのより多くのみかけ上のメモリを有するミラーリングされたシステム（ならびにミラーリングされないシステム）を提供するのに使用することができるもう１つの設計特徴が、メモリ圧縮である。メモリ圧縮を有する通常のシステムは、システムのインストールされたメモリ（すなわち物理メモリ）を使用して、大量のみかけ上のメモリ（すなわち実メモリ）をサポートする圧縮エンジンを有する。たとえば、システムに３２ＭＢの物理メモリが含まれ、圧縮エンジンが２：１の圧縮比をもたらすように構成される場合に、この圧縮エンジンは、６４ＭＢの実メモリを報告する。その結果、３２ＭＢのインストールされたメモリを有するシステムが、全ミラーリングおよび２：１の圧縮比のメモリ圧縮を有する場合に、圧縮の効果とミラーリングの効果が相殺される。すなわち、このシステムは、物理メモリ・サイズと等しい実メモリ・サイズを有する。
【０００５】
しかし、メモリ圧縮に関連する危険は、構成された圧縮比を、あるタイプのデータについて得ることができない場合があることである。たとえば、データが、ソフトウェアによって既に圧縮されている場合（たとえば、データがＪＰＥＧ（Joint Photographic Experts Group）ファイルである場合）、圧縮エンジンは、２：１の比をもたらすのに十分なだけそのファイルをさらに圧縮することができない可能性がある。さらに、圧縮エンジンが、所望の圧縮率の達成に失敗し、実質的にすべての実メモリが必要である場合には、システムは、必要な量の実メモリを提供することができなくなる可能性がある。システムが、要求された実メモリのすべてをサポートするのに十分な物理メモリを有しない時には、そのシステムが、メモリ枯渇と称する状態をこうむっていると言う。しかし、メモリ枯渇は、圧縮なしのシステムでも、たとえばシステムが単に要求された処理を実行するのに不十分な物理メモリを有する場合に、発生する可能性がある。
【０００６】
従来のシステムでは、物理メモリの枯渇が、クリティカルなシステム問題である。その問題は、通常は、マスク不能割込み（ＮＭＩ）または機械検査の形などの適当な高優先順位イベントを介して知らされる。その結果、従来のシステムでは、メモリ圧縮とメモリ・ミラーリングが一緒に使用される時に、一般に、メモリ・エラーに起因するシステム障害のリスクが減るが、メモリ枯渇に起因するシステム障害のリスクが増える。
【０００７】
【発明が解決しようとする課題】
その結果、特にメモリ圧縮を使用するシステムで、メモリ枯渇に起因するシステム障害のリスクを減らす方法が必要である。
【０００８】
【課題を解決するための手段】
本発明によれば、メモリ枯渇状態が、物理メモリの第１領域および第２領域を有するデータ処理システムで処理される。本発明による１特定の方法では、メモリ枯渇状態は、第２領域が第１領域の少なくとも一部をミラーリングしている間に検出される。メモリ枯渇状態に応答して、メモリ・ミラーリングが、少なくとも部分的に非活動化される。メモリ枯渇状態が、その後、第２領域の少なくとも一部を用いて第１領域を増補することによって除去される。
【０００９】
例示的実施形態では、データ処理システムが、実メモリを物理メモリの第１領域に圧縮し、メモリ枯渇状態が、第１領域が実メモリに関する現在の要求に対応するのに十分な使用可能容量を有しない時に検出される。メモリ枯渇状態は、実メモリの少なくとも一部を第２領域に圧縮することによって除去される。
【００１０】
【発明の実施の形態】
ここで図面、具体的には図１および図２を参照すると、本発明の比較的複雑でない例示的実施形態による、ミラーリングをサポートするメモリ・サブシステムを有するデータ処理システム内の物理メモリと実メモリの間の関係を示す２つのブロック図が示されている。具体的に言うと、これらの図は、等しい容量の２バンクのメモリ、バンクＡ１０およびバンクＢ１２を有するデータ処理システムに関する。図１では、データ処理システムが、バンクＡ１０が主バンクとして働き、バンクＢ１２がバンクＡ１０のミラーとして働く形で構成されている。さらに、このデータ処理システムは、メモリ圧縮をサポートし、メモリ・サブシステムが、主バンク（すなわちバンクＡ１０）のアドレス空間を超える、実メモリ１４のアドレス空間を報告するようになっている。
【００１１】
主メモリおよび実メモリの間の関係をより正確に説明するために、本明細書では、下記の記号を下記の形で使用する。
Ｘは、物理的な主メモリのサイズである。
Ｘ（ｍ）は、ミラーとして働く物理メモリのサイズである。
Ｒは、メモリ・サブシステムが達成しようとする圧縮比である（実メモリ：主メモリとして表される）。
Ｒｘは、メモリ・サブシステムによって報告される実メモリのサイズである。
図１では、Ｒが２：１に等しく、ＸがＸ1に等しく、その結果、Ｒｘが２×Ｘ1に等しい。また、Ｘ（ｍ）はＸ2に等しい。
【００１２】
図２を参照すると、図１のデータ処理システムに関するが、メモリ・サブシステムが再構成され、その結果、バンクＢ１２が、ミラー・メモリではなく主メモリとして働くようになっているデータ処理システムのブロック図が示されている。本発明によれば、そのような再構成を、下で詳細に説明するように、メモリ枯渇状態の発生時に自動的に実行することができる。この例示的実施形態では、再構成の結果として、Ｒが１：１に等しく、ＸがＸ1＋Ｘ2に等しく、その結果、Ｒｘが１×（Ｘ1＋Ｘ2）に等しい。また、Ｘ（ｍ）は０に等しい。したがって、ミラーリングの消失を犠牲にして、実メモリの必要をサポートするために追加の物理メモリが割り振られている。
【００１３】
図３を参照すると、本発明による、メモリ枯渇状態を処理するための機構を有する、わずかに複雑な例示的なデータ処理システム２０のブロック図が示されている。図からわかるように、データ処理システム２０には、ホスト・バス２６を介してメモリ・サブシステム２４と通信するシステム・プロセッサ２２が含まれる。メモリ・サブシステム２４には、Ｌ３キャッシュ３２をサポートするキャッシュおよびメモリ・コントローラ（ＣＭＣ）３０が含まれる。さらに、ＣＭＣ３０は、直接におよびミラー・モード・コントローラ（ＭＭＣ）５０を介しての両方で、インストールされたランダム・アクセス・メモリ（ＲＡＭ）の４つのバンクすなわちバンク０  ４０、バンク１  ４１、バンク２  ４２、およびバンク３４３と通信する。データ処理システム２０の他の構成要素（図示せず）は、ＰＣＩ（peripheral component interconnect）バス５２を介してメモリ・サブシステム２４と通信することができる。
【００１４】
ＭＭＣ５０には、メモリ・サブシステム２４のミラーリング特性を変更するためにシステム・プロセッサ２２が書き込み、読み取ることができる３ビットのラッチが含まれる。このラッチは、通常の入出力ポートに見える。
【００１５】
図４も参照すると、そのラッチの２ビットが、バンク選択ビットである。バンク選択ビットをセットまたはクリアして、図４に示されたビット・パターンを達成することによって、システム・プロセッサ２２が、バンク３  ４３を使用する方法を変更することができる。したがって、バンク３  ４３は、可変アドレッシングを有すると言う。具体的に言うと、バンク選択ビット０および１の少なくとも１つがクリアされている時に、バンク３  ４３は、主バンクの１つのミラー・バンクとして働く。したがって、そのような構成によって、部分ミラーリングが実施される。対照的に、バンク選択ビット０および１の両方がセットされている時には、ミラーリングが非活動化され、バンク３  ４３は、もう１つの主バンク、たとえば４バンク・アレイの上位バンクとして働く。
【００１６】
図５も参照すると、ラッチの第３ビットは、ミラー読取ビットであり、このビットは、クリアされた時に、メモリ読取に主バンクを使用させ、セットされた時に、メモリ読取に、対応する主バンクの代わりにミラー・バンクを使用させる。ここで、バンク１  ４１およびバンク２  ４２が空白であり、バンク０  ４０およびバンク３  ４３の容量が等しい場合に、図３に示されたシステムが、図１および図２に関して説明したシステムに似るかそれと一致することに留意されたい。
【００１７】
メモリ・サブシステム２４の動作は、メモリ・マネージャ６０によって管理され、メモリ・マネージャ６０は、この例示的実施形態では、オペレーティング・システムの一部として実施される。したがって、メモリ・マネージャ６０は、他のオペレーティング・システム・コンポーネントと共に、システム・ブート処理中にＲＡＭにロードされる。
【００１８】
図６を参照すると、データ処理システム２０内でメモリ枯渇状態を処理するための、本発明による例示的処理の高水準論理流れ図が示されている。この処理は、ブロック７０で開始され、データ処理システム２０がパワー・アップされる。その後、ブロック７２に示されているように、ブート処理の一部として、メモリ・サブシステム２４を初期化する。初期化処理の一部として、ＣＭＣ３０が、インストールされている物理メモリの量を判定し、メモリ・マネージャ６０が、デフォルト構成に従ってＭＭＣ５０内のバンク選択ビットおよびミラー読取ビットを構成する。現在の例示的処理では、ＭＭＣ５０が、バンク０  ４０がバンク３４３にミラーリングされる部分的ミラーリング用に構成される。
【００１９】
この初期化処理中に、圧縮比も決定することができる。１実施形態では、その比が、過去の圧縮性能に基づいて決定され、その結果、初期化された圧縮比を、経時的に自動的に調整して、１つまたは複数の前の動作サイクル中に実際に達成された圧縮比によりよく一致するようにすることができる。現在の例では、圧縮比に２：１がセットされる。
【００２０】
メモリ・サブシステムを初期化した後に、データ処理システム２０は、ブロック７４に示されているように通常動作を開始し、メモリ・サブシステムは、初期化処理で構成された形で動作する。通常動作中には、組合せ論理によって、各メモリ・バンクのチップ選択信号および出力イネーブル信号の生成が制御される。この論理では、上位メモリ・アドレス線、バンク選択ビット、システム読取書込線、およびミラー読取ビットを使用して、必要な信号およびタイミングを生成する。ミラー・モードでは、ミラーリングされる主バンク（この場合はバンク０  ４０）へのすべての書込が、対応するミラー・バンク（この場合はバンク３  ４３）にも書き込まれる。さらに、ＣＭＣ３０が、必要に応じた未使用メモリの割振りおよび実メモリから物理メモリへの正しいマッピングなどの作業のための使用状況テーブルを維持する。
【００２１】
データは、ＲＡＭよりもＬ３キャッシュ３２からより高速に読み取ることができるので、処理中に、ＣＭＣ３０が、Ｌ３キャッシュ３２を使用して、最近アクセスされたデータを得る。しかし、要求されたデータがＬ３キャッシュ３２内にない時（すなわち、キャッシュ・ミスがある時）には、ＲＡＭにアクセスする必要がある。具体的に言うと、この例示的実施形態では、キャッシュ・ミスによって、ＣＭＣ３０が、データの圧縮されたブロックをＲＡＭから読み取り、データを伸長し、そのデータをＬ３キャッシュにロードする。キャッシュ・フラッシュ動作の場合、書き込まれるデータが、圧縮され、ＲＡＭに書き込まれる。ＣＭＣ３０のメモリ使用状況テーブルが、それ相応に更新される。
【００２２】
ブロック７６に示されているように、システム・プロセッサ２２が命令を実行する間に、メモリ・マネージャ６０が、メモリ・サブシステム２４を監視して、メモリ枯渇状態が存在するかどうか（すなわち、主メモリに、実メモリに関する現在の要求に対応するのに十分な使用可能容量が欠けているかどうか）を検出する。たとえば、ＣＭＣ３０を、たとえば追加の実メモリの要求または既存のメモリ内容の変更に起因して、実メモリの圧縮された内容を保管するのに十分な物理メモリがない時に、マスク不能割込みまたは機械検査を生成するように構成することができる。その代わりに、実メモリに関する現行の要求によって、未使用物理メモリの残り容量がある閾値未満になる時に、メモリ枯渇状態が存在すると判定することができる。
【００２３】
メモリ枯渇状態が検出されない場合には、処理は、ブロック７４に戻る矢印によって示されているように、ミラーリングを用いて継続される。しかし、メモリ枯渇状態が検出される場合には、処理はブロック８０に進み、ここで、メモリ・マネージャ６０が、構成された圧縮比を実際に達成された圧縮比により近く調整するために適合させる際に使用するために、そのメモリ枯渇状態に関する情報を記録する。具体的に言うと、この例示的処理では、メモリ・マネージャ６０が、新しい圧縮比を計算し、その圧縮比を不揮発性ストレージに保管する。このデータについて許容可能な記憶媒体には、制限なしに、不揮発性（たとえばバッテリ・バックアップ式）ＲＡＭ（すなわちＮＶＲＡＭ）、相補型金属酸化膜半導体（ＣＭＯＳ）ＲＡＭ、フラッシュ・メモリ、磁気ディスク、および光ディスクが含まれる。しかし、代替実施形態では、他のタイプの枯渇情報を保管することができる。
【００２４】
メモリ枯渇状態を検出した後に、メモリ・マネージャ６０は、ブロック８２および８４に示されているように、ＣＭＣ３０およびＭＭＣ５０も再構成し（両方のバンク選択ビットをセットすることを含む）て、ミラーリングを非活動化し、バンク３  ４３をミラー・バンクから主バンクに、好ましくは４バンク・アレイの上位バンクとして変換する。その結果、使用可能な主メモリの量が拡張され、これによって、メモリ枯渇状態が除去される。その後、ブロック８６に示されているように、システム・プロセッサ２２が、拡張された主メモリを使用して、通常動作を再開する。
【００２５】
また、ブロック８８に示されているように、通常動作を再開した後に、メモリ・マネージャ６０が、状態を監視して、拡張された主メモリがまだ必要であるかどうかを判定する。そうである場合には、ブロック８６に戻る矢印によって示されるように、処理が継続される。しかし、バンク３  ４３がもはや主バンクとして必要でなくなる点まで実メモリ要求が減った場合には、ブロック９０に示されているように、メモリ・マネージャ６０が、ＣＭＣ３０およびＭＭＣ５０を再構成して、ミラーリングを再活動化する。ミラーリングを再活動化する処理では、ミラー・バンクに、データを再移植して、対応する主バンクと一致させる。この再移植は、ソフトウェアまたはハードウェアによって実行することができる。システム・プロセッサ２２は、その後、ブロック７４に戻る矢印によって示されるように、通常動作を再開する。
【００２６】
上で説明したように、本発明は、ミラー・バンクを主バンクに動的に再構成することによって、メモリ枯渇状態を処理する。さらに、メモリの必要が十分に減った後に、ミラーリングを再活動化する。さらに、メモリ圧縮を提供するデータ処理システムでは、本発明は、特定のデータ処理システムでどれだけの圧縮が実際に実現されたかに基づく、始動圧縮比の自動調整を提供する。
【００２７】
１つまたは複数の例示的実施形態に関して本発明を具体的に図示し、説明してきたが、当業者は、本発明の趣旨および範囲から逸脱せずに、形態および詳細のさまざまな変更を行えることを理解するであろう。たとえば、全ミラーリングおよび部分的ミラーリングを用いる特定の例示的実施形態を提示した。しかし、異なる数のメモリ・バンクおよび異なるミラーリング特性を有する代替実施形態も、Ｎウェイ・ミラーリングを有するデータ処理システム（すなわち、１つまたは複数の主メモリ・バンクからのデータの複数のミラー・コピーを有するデータ処理システム）を含めて、サポートされる。したがって、本発明は、メモリ枯渇状態を除去するためのミラーリングの部分的非活動化もサポートする。たとえば、あるシステムが、当初、ミラーリングに複数のメモリ・バンクを使用するように構成される場合に、そのシステムは、１つのミラー・バンクを主バンクとして再構成し、残りのミラー・バンクについてミラーリングをアクティブのままにすることによって、メモリ枯渇状態に応答することができる。さらに、例示的実施形態では、メモリ圧縮が提供されるが、本発明は、圧縮なしのシステムでも有利に使用することができる。
【００２８】
また、あるアーキテクチャを使用して例示的実施形態を示したが、本発明は、他のアーキテクチャと共に使用することもできる。たとえば、本発明を、制限なしに、汎用パーソナル・コンピュータ、マルチプロセッサ・システム、ミニコンピュータ、およびメインフレーム・コンピュータを含むデータ処理システムで実施することができる。
【００２９】
さらに、本発明のさまざまな動作を、メモリ・マネージャ６０、ＣＭＣ３０、およびＭＭＣ５０を含むさまざまな構成要素によって実行されるものとして説明した。しかし、当業者は、ある程度まで、本発明に従って実行される動作を、これらの構成要素の間で異なる形で分配できることを諒解するであろう。さらに、ハードウェア、ソフトウェア、ファームウェア、もしくはこれらの組合せとしてのある構成要素の実施を、本発明の趣旨から逸脱せずに変更することができる。
【００３０】
たとえば、メモリ・マネージャ６０を、部分的にまたは全体的に、ハードウェア、ファームウェア、またはこれらの組合せとして実施することができる。同様に、割込みなどの信号を生成するメモリ・コントローラをソフトウェアによって処理させるのではなく、ミラーリングを制御するハードワイヤード論理を有するデータ処理システムに、メモリ枯渇状態を検出するハードワイヤード検出論理ならびに、必要な時に自動的にミラーリングを使用不可にし、ミラー・バンクを主バンクに変換する形で検出論理に配線された構成論理を含めることができる。
【００３１】
本発明の諸態様を、本発明の機能を指示するソフトウェアを実行するコンピュータ・システムに関して説明したが、本発明を、その代わりに、データ処理システムと共に使用されるプログラム製品として実施できることを理解されたい。本発明の機能を定義するプログラムを、さまざまな信号担持媒体を介してデータ処理システムに送達することができ、この信号担持媒体には、制限なしに、書換不能記憶媒体（たとえばＣＤ−ＲＯＭ）、書換可能記憶媒体（たとえばフロッピ・ディスケットまたはハード・ディスク）、および、ディジタルネットワークおよびアナログ・ネットワークなどの通信媒体が含まれる。したがって、そのような信号担持媒体は、本発明の機能を指示するコンピュータ可読命令を担持するかエンコードする時に、本発明の代替実施形態を表すことを理解されたい。
【００３２】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３３】
（１）物理メモリの第１領域および第２領域を有するデータ処理システムでメモリ枯渇状態を処理する方法であって、
前記第２領域が前記第１領域の少なくとも一部をミラーリングしている間にメモリ枯渇状態を検出するステップと、
前記メモリ枯渇状態に応答して、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に非活動化するステップと、
前記メモリ枯渇状態が除去されるように、前記第２領域の少なくとも一部を用いて前記第１領域を増補するステップと
を含む方法。
（２）前記データ処理システムが、実メモリを物理メモリの前記第１領域に圧縮し、
メモリ枯渇状態を検出する前記ステップが、前記第１領域が実メモリに関する現在の要求に対応するのに十分な使用可能容量を有しないことを判定するステップを含み、
前記第１領域を増補する前記ステップが、前記要求された実メモリの少なくとも一部を前記第２領域の前記少なくとも一部に圧縮するステップを含む
上記（１）に記載の方法。
（３）前記メモリ枯渇状態に応答して、前記メモリ枯渇状態に関するデータを記録するステップと、
その後、メモリ圧縮に関する圧縮比をセットするために前記データを使用するステップと
をさらに含む、上記（２）に記載の方法。
（４）前記データ処理システムが、１つまたは複数のミラー・モード・ビットに従ってメモリ・アクセスを前記第１領域または前記第２領域に向けるミラー・モード・コントローラを有し、
前記第１領域を増補する前記ステップが、前記１つまたは複数のミラー・モード・ビットの少なくとも１つを変更するステップを含む
上記（１）に記載の方法。
（５）メモリ・ミラーリングが少なくとも部分的に非活動化された後に、メモリの必要が減ったことを判定するステップと、
それに応答して、ミラーリングを少なくとも部分的に再活動化するステップとをさらに含む、上記（１）に記載の方法。
（６）データ処理システムであって、
物理メモリの第１領域および第２領域と、
前記第２領域が前記第１領域の少なくとも一部をミラーリングしている間にメモリ枯渇状態を検出する検出論理と、
前記メモリ枯渇状態に応答して、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に非活動化し、前記メモリ枯渇状態が除去されるように、前記第２領域の少なくとも一部を用いて前記第１領域を増補する、構成論理と
を含むデータ処理システム。
（７）前記データ処理システムが、実メモリを物理メモリの前記第１領域に圧縮し、
前記検出論理が、前記第１領域が実メモリに関する現在の要求に対応するのに十分な使用可能容量を有しないことを判定することによって前記メモリ枯渇状態を検出するメモリ・コントローラを含み、
前記構成論理が、前記実メモリの少なくとも一部を前記第２領域の前記少なくとも一部に圧縮するように前記メモリ・コントローラを構成することによって前記第１領域を増補するメモリ・マネージャを含む
上記（６）に記載のデータ処理システム。
（８）前記メモリ枯渇状態に応答して、前記メモリ・マネージャが、前記メモリ枯渇状態に関するデータを記録し、
前記メモリ・マネージャが、その後、メモリ圧縮に関する圧縮比をセットするために前記データを使用する
上記（７）に記載のデータ処理システム。
（９）前記データ処理システムが、さらに、１つまたは複数のミラー・モード・ビットに従ってメモリ・アクセスを前記第１領域または前記第２領域に向けるミラー・モード・コントローラを含み、
前記構成論理が、前記１つまたは複数のミラー・モード・ビットの少なくとも１つを変更することによって前記第１領域を増補する
上記（６）に記載のデータ処理システム。
（１０）メモリ・ミラーリングが少なくとも部分的に非活動化された後に、前記構成論理が、メモリの必要が減ったことを判定し、
それに応答して、前記構成論理が、ミラーリングを少なくとも部分的に再活動化する
上記（６）に記載のデータ処理システム。
（１１）メモリ・コントローラと、物理メモリの第１領域および第２領域とを有するデータ処理システムでメモリ枯渇状態を処理するプログラム製品であって、
メモリ・マネージャをエンコードするコンピュータ使用可能媒体と、
前記第２領域が前記第１領域の少なくとも一部をミラーリングしている間に生じるメモリ枯渇状態に応答して、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に非活動化する、前記メモリ・マネージャ内の非活動化命令と、
前記メモリ枯渇状態が除去されるように、前記メモリ・コントローラに、前記第２領域の少なくとも一部を用いて前記第１領域を増補させる、前記メモリ・マネージャ内の増補命令と
を含むプログラム製品。
（１２）前記データ処理システムが、実メモリを物理メモリの前記第１領域に圧縮し、前記メモリ・コントローラが、前記第１領域が実メモリに関する現在の要求に対応するのに十分な使用可能容量を有しないことを判定することによって前記メモリ枯渇状態を検出し、
前記メモリ・マネージャが、前記実メモリの少なくとも一部を前記第２領域の前記少なくとも一部に圧縮するように前記メモリ・コントローラを構成することによって前記第１領域を増補する
上記（１１）に記載のプログラム製品。
（１３）前記メモリ枯渇状態に応答して、前記メモリ・マネージャが、前記メモリ枯渇状態に関するデータを記録し、
前記メモリ・マネージャが、その後、メモリ圧縮に関する圧縮比をセットするために前記データを使用する
上記（１２）に記載のプログラム製品。
（１４）前記データ処理システムが、さらに、１つまたは複数のミラー・モード・ビットに従ってメモリ・アクセスを前記第１領域または前記第２領域に向けるミラー・モード・コントローラを含み、
前記メモリ・マネージャが、前記１つまたは複数のミラー・モード・ビットの少なくとも１つを変更することによって前記第１領域を増補する
上記（１１）に記載のプログラム製品。
（１５）メモリ・ミラーリングが少なくとも部分的に非活動化された後に、前記メモリ・マネージャが、メモリの必要が減ったことを判定し、
それに応答して、前記メモリ・マネージャが、ミラーリングを少なくとも部分的に再活動化する
上記（１１）に記載のプログラム製品。
（１６）物理メモリの第１領域および第２領域を有するデータ処理システムでメモリ枯渇状態を処理するメモリ管理システムであって、
前記第２領域が前記第１領域の少なくとも一部をミラーリングしている間にメモリ枯渇状態を検出する検出論理と、
前記メモリ枯渇状態に応答して、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に非活動化し、前記メモリ枯渇状態が除去されるように、前記第２領域の少なくとも一部を用いて前記第１領域を増補する、構成論理と
を含むメモリ管理システム。
（１７）前記データ処理システムが、実メモリを物理メモリの前記第１領域に圧縮し、
前記検出論理が、前記第１領域が実メモリに関する現在の要求に対応するのに十分な使用可能容量を有しないことを判定することによって前記メモリ枯渇状態を検出するメモリ・コントローラを含み、
前記構成論理が、前記実メモリの少なくとも一部を前記第２領域の前記少なくとも一部に圧縮するように前記メモリ・コントローラを構成することによって前記第１領域を増補するメモリ・マネージャを含む
上記（１６）に記載のメモリ管理システム。
（１８）前記メモリ枯渇状態に応答して、前記メモリ・マネージャが、前記メモリ枯渇状態に関するデータを記録し、
前記メモリ・マネージャが、その後、メモリ圧縮に関する圧縮比をセットするために前記データを使用する
上記（１７）に記載のメモリ管理システム。
（１９）前記メモリ管理システムが、さらに、１つまたは複数のミラー・モード・ビットに従ってメモリ・アクセスを前記第１領域または前記第２領域に向けるミラー・モード・コントローラを含み、
前記構成論理が、前記１つまたは複数のミラー・モード・ビットの少なくとも１つを変更することによって前記第１領域を増補する
上記（１６）に記載のメモリ管理システム。
（２０）メモリ・ミラーリングが少なくとも部分的に非活動化された後に、前記構成論理が、メモリの必要が減ったことを判定し、
それに応答して、前記構成論理が、ミラーリングを少なくとも部分的に再活動化する
上記（１６）に記載のメモリ管理システム。
（２１）データ処理システムであって、
物理メモリの第１領域および第２領域と、
前記第２領域が前記第１領域の少なくとも一部をミラーリングしている間にメモリ枯渇状態を検出する検出手段と、
前記メモリ枯渇状態に応答して、前記第１領域と前記第２領域との間のメモリ・ミラーリングを少なくとも部分的に非活動化し、前記メモリ枯渇状態が除去されるように、前記第２領域の少なくとも一部を用いて前記第１領域を増補する、構成手段と
を含むデータ処理システム。
【図面の簡単な説明】
【図１】本発明の例示的実施形態による、ミラーリングを使用可能にされた、物理メモリと実メモリの間の関係を示すブロック図である。
【図２】本発明の例示的実施形態による、ミラーリングを使用不可にされた、物理メモリと実メモリの間の関係を示すブロック図である。
【図３】メモリ枯渇状態を処理するための、本発明による機構を有する例示的データ処理システムのブロック図である。
【図４】本発明の例示的実施形態による、ミラーリングを構成するためのメモリ・バンク選択ビットの可能な設定を示す表である。
【図５】本発明の例示的実施形態による、ミラーリングを構成するためのミラー・モード読取ビットの可能な設定を示す表である。
【図６】メモリ枯渇状態を処理するための、本発明による例示的処理の高水準論理流れ図である。
【符号の説明】
７２  メモリ・サブシステムを初期化するステップ
７４  ミラーリングを用いて動作するステップ
７６  枯渇状態を検出したかどうかを判定するステップ
８０  枯渇データを記録するステップ
８２  ミラーリングを非活動化するステップ
８４  バックアップ・バンクを主バンクに変換するステップ
８６  拡張された主メモリを用いて動作するステップ
８８  拡張された主メモリがまだ必要かどうかを判定するステップ
９０  ミラーリングを再活動化するステップ
【図１】
0003697194.tif 000002
【図２】
0003697194.tif 000003
【図３】
0003697194.tif 000004
【図４】
0003697194.tif 000005
【図５】
0003697194.tif 000006
【図６】
0003697194.tif 000007