(57)【要約】【課題】  メモリシステムを管理する方法および装置を提供する。【解決手段】  本方法は、メモリの内容から複数のチェック値を生成すること、および所定のデータ構造において、複数のチェック値の各チェック値をメモリシステムにおけるそれぞれのページに関連付けることを含む。また、本方法は、メモリシステムにおいて、要求ページと同一の内容を有する候補ページをデータ構造の中で検索することも含み、その際、要求されたページのチェック値を使用して、データ構造の中で検索する。【選択図】図２
2004171547.tif 000002
【特許請求の範囲】
【請求項１】
メモリシステムを管理する方法であって、
メモリの内容から複数のチェック値を生成すること（６８０）、
所定のデータ構造において、該複数のチェック値の各チェック値を前記メモリシステムにおけるそれぞれのページに関連付けること（６８５）、および
前記メモリシステムにおける要求ページと同一の内容を有する候補ページを前記データ構造の中で検索すること（７１５）であって、前記要求ページのチェック値を使用して前記データ構造の中で検索するようにする、検索すること
を含むメモリシステムを管理する方法。
【請求項２】
前記要求ページの前記チェック値が前記候補ページの関連するチェック値と整合することに応じて、バイト単位で前記要求ページを前記候補ページと比較すること（７３０）
をさらに含む請求項１記載のメモリシステムを管理する方法。
【請求項３】
前記要求ページの前記内容と前記候補ページの前記内容とが同一であることに応じて、前記要求ページと前記候補ページとを連結すること（７６０）
をさらに含む請求項２記載のメモリシステムを管理する方法。
【請求項４】
前記チェック値はチェックサム値かまたはハッシュ値である
請求項１〜３のいずれかに記載のメモリシステムを管理する方法。
【請求項５】
前記メモリシステムにおいて、前記データ構造の中で候補ページを検索することを周期的に呼出す
請求項１〜４のいずれかに記載のメモリシステムを管理する方法。
【請求項６】
メモリを管理する方法であって、
選択されたページの内容から計算されるチェック値を前記メモリの複数のページのそれぞれのチェック値と比較すること（７１５）、
整合ページを、前記チェック値と前記整合ページのそれぞれのチェック値とが等しいことに応じて選択すること（７２０）、
前記選択されたページと前記整合ページとを比較すること（７３０）、および
前記選択されたページと前記整合ページとの内容が同一であることに応じて、前記選択されたページと前記整合ページとのうちの一方の仮想アドレスを前記選択されたページと前記整合ページとのうちの他方の物理アドレスにリダイレクトすること（７５５）
を含むメモリを管理する方法。
【請求項７】
メモリサブシステムに対するアクセスを管理する装置であって、
複数のプロセッサ用の記憶域を設けるように適合されたメモリシステム（１２０）と、
該メモリシステムを、各々が前記複数のプロセッサのうちのプロセッサのそれぞれのサブセットに割当てられる複数のパーティション（１２５ａ…ｎ）に分割するように構成され、また、プロセッサの前記サブセットのうちの選択されたプロセッサから仮想アドレスを受取り、パーティションを識別し、前記仮想アドレスを、前記選択されたプロセッサのそれぞれのパーティション内の実アドレスに変換するようにも構成された、仮想圧縮システム（ＶＣＳ、１３０）と
を具備するメモリサブシステムに対するアクセスを管理する装置。
【請求項８】
前記複数のパーティションによってアクセス可能でない前記メモリの利用可能ページのリストを設けるように構成されたフリーページプール（２７０）
をさらに含む請求項７記載のメモリサブシステムに対するアクセスを管理する装置。
【請求項９】
前記メモリシステムのページを前記複数のパーティションのそれぞれのページに関連付けるように構成されたグローバルテーブル（２６０）
をさらに含む請求項７または８に記載のメモリサブシステムに対するアクセスを管理する装置。
【請求項１０】
フレームページテーブルであって、該フレームページテーブルにそれぞれのエントリを有する前記メモリシステムの前記複数のページの各ページに対して構成され、前記フレームページテーブルの各エントリが、該それぞれのエントリが前記複数のパーティションのうちの複数のパーティション間で共有されるということを示すように構成された参照カウンタを含む、フレームページテーブル（２５０）
をさらに含む請求項７〜９のいずれかに記載のメモリサブシステムに対するアクセスを管理する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリシステムを管理する方法および装置に関する。
【背景技術】
【０００２】
シングルユーザデータ処理システムは、通常は、プロセッサと、揮発性メモリ、たとえば命令およびデータを格納するランダムアクセスメモリ（ＲＡＭ）と、何らかの形態の永久記憶装置、たとえば磁気ディスクとからなる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
マルチプロセシング（ＭＰ）データ処理システムは、複数のユーザによって使用されることが多い。
たとえば、ＭＰデータ処理システムで実行している仮想マシンは、各ユーザに対し、システムの資源すべてを単独で制御しているように見せかける。
その結果、ＭＰデータ処理システムで実行している各仮想マシンに対して、揮発性メモリと永久記憶メモリとにおけるそれぞれのパーティションが維持される。
しかしながら、パーティションの各々は、他のパーティション、たとえばオペレーティングシステムカーネルに存在しているデータと同一の何らかのデータを含む場合がある。
結果として、メモリ使用は、通常パーティション間で最適化されず、それによりＭＰデータ処理システムの全体のコストが増大する。
【０００４】
同様に、ブレードサーバ環境かまたは外部大容量記憶アレイを共有するサーバのセットでは、大容量記憶ディスクアレイがブレードサーバまたはサーバ間で分割される場合がある。
ブレードサーバは、従来のサーバでは通常複数の基板上にあるプロセッサ、メモリおよびネットワーク接続等のコンポーネントで占められる、単一回路基板として実施することができるものである。
ブレードサーバは、既存のブレードサーバエンクロージャ内に滑り入るように設計される。
各ブレードサーバにパーティションを割当てることができ、各ブレードサーバがパーティションを実行することができる。
複数のパーティションが、異なるユーザに対して同じオペレーティングシステムおよびアプリケーションを実行する場合がある。
したがって、大容量記憶パーティションの多くが重複する情報を含む可能性がある。
【課題を解決するための手段】
【０００５】
一実施形態は、メモリシステムを管理する方法に関する。
本方法は、メモリの内容から複数のチェック値を生成すること、および所定のデータ構造において、複数のチェック値の各チェック値をメモリシステムにおけるそれぞれのページに関連付けることを含む。
また、本方法は、メモリシステムにおいて、要求ページと同一の内容を有する候補ページをデータ構造の中で検索することも含み、その際、要求されたページのチェック値を使用して、データ構造の中で検索する。
【０００６】
別の実施形態は、メモリサブシステムへのアクセスを管理する装置に関する。
本装置は、複数のプロセッサ用の記憶域を設けるように適合されたメモリシステムと、メモリシステムを複数のパーティションに分割するように構成された仮想圧縮システム（ＶＣＳ０）と、を含む。
各パーティションは、複数のプロセッサのうちのプロセッサのそれぞれのサブセットに割当てられ、また、ＶＣＳは、プロセッサのサブセットのうちの選択されたプロセッサから仮想アドレスを受取るようにも構成される。
さらに、ＶＣＳは、パーティションを識別し、仮想アドレスを、選択されたプロセッサのそれぞれのパーティション内の実アドレスに変換するように構成される。
【０００７】
さらに別の実施形態は、メモリを管理する方法に関する。
本方法は、選択されたページの内容から計算されるチェック値をメモリの複数のページのそれぞれのチェック値と比較すること、および整合ページを、チェック値と整合ページのそれぞれのチェック値とが等しいことに応じて選択することを含む。
また、本方法は、選択されたページと整合ページとを比較すること、および選択されたページと整合ページとの内容が同一であることに応じて、選択されたページと整合ページとのうちの一方の仮想アドレスを選択されたページと整合ページとのうちの他方の物理アドレスにリダイレクトすることも含む。
【０００８】
さらに別の実施形態は、メモリを管理する方法に関する。
本方法は、メモリの選択されたページにデータを書込むこと、および選択されたページのステータスを確定することを含む。
また、本方法は、選択されたページが共有されていることに応じてメモリのフリーページプールに対してページを要求すること、および選択されたページの内容を要求されたページに書込むことも含む。
さらに、本方法は、要求されたページのそれぞれの内容に基づいてハッシュ値を生成すること、およびハッシュ値に基づいて他のページを検索することを含む。
【０００９】
さらに別の実施形態は、メモリを管理する装置に関する。
本装置は、メモリの選択されたページにデータを書込む手段と、選択されたページのステータスを確定する手段とを備える。
また、本装置は、選択されたページが共有されていることに応じてメモリのフリーページプールに対してページを要求する手段と、選択されたページの内容を要求されたページに書込む手段も備える。
さらに、本装置は、要求されたページのそれぞれの内容に基づいてハッシュ値を生成する手段と、ハッシュ値に基づいて他のページを検索する手段とを備える。
【発明の効果】
【００１０】
本発明によれば、メモリシステムを管理する方法および装置が提供される。
【発明を実施するための最良の形態】
【００１１】
実施形態は、メモリシステムを最適化するように構成された仮想圧縮システム（ＶＣＳ）に関する。
詳細には、メモリシステムをパーティションに分割することができ、各パーティションを、装置、プロセス、プロセッサ、プロセッサのセット、仮想マシン等に割当てることができる。
ＶＣＳは、パーティション間のメモリの共通ページを確定することができる。
ＶＣＳは、メモリにおける同一内容のページの仮想アドレスマッピングを再構成して、物理的に共通するページを指す（すなわち共有する）ことができる。
すなわち、仮想圧縮することができる。
メモリの重複するページに対しては、参照を解除する。
すなわち、重複するページに対するいかなるマッピングも除去し、重複するページをＶＣＳによって維持されるフリーページプールに戻す。
したがって、パーティション内のメモリ空間の使用が最適化される。
【００１２】
別の実施形態では、ＶＣＳを、選択されたパーティションに対してパーティションページテーブルを維持するように構成してもよい。
パーティションページテーブルは、仮想アドレスと、選択されたパーティションに対して割当てられるメモリのページの対応する物理アドレスと、に対し、関連性を維持するように構成される。
各関連性に対し、パーティションページテーブルはまた、コピーカウンタ（またはフラグ、セマフォ等）を、選択されたエントリの物理アドレスを他のパーティション／装置／プロセスによって共有してもよいか否かを示すように維持するようにも構成される。
【００１３】
したがって、別の実施形態では、選択されたパーティションに対する書込み中に、パーティションページテーブルを利用することができる。
詳細には、メモリのページへの書込み動作に対し、ＶＣＳは、パーティションページテーブルにアクセスして書込み動作がメモリの既存のページに影響を与えるか否かを判断することができる。
パーティションページテーブルの検索により、メモリのいかなる既存のページも影響を受けないと判断された場合、ＶＣＳは、ＶＣＳによって維持されるフリーページプールに対しフリーページを要求することができる。
フリーページは、フリープールを表すデータ構造（またはリスト）から取出される。
そして、要求されたデータはそのフリーページに書込まれる。
また、ＶＣＳは、新たなページに対応する値でパーティションページテーブルとチェック値テーブルとを更新することができる。
【００１４】
パーティションページテーブルの検索により、１つの仮想ページのみが対応する実ページにマッピングされると判断された場合、要求されたデータは、対応する実ページ内の対応するアドレスに書込まれる。
ＶＣＳはまた、パーティションページテーブルを更新し新たに書込まれたページに対応する値をチェックすることができる。
【００１５】
一方、ＶＣＳは、メモリの２つ以上のページが書込み動作によって影響を受け、メモリの少なくとも１つのページが共有されると判断された場合、フリーページプールからメモリのフリーページを検索し、フリーページプールからこのフリーページを取出すために、フリーページプールを表すデータ構造を更新することができる。
ＶＣＳは、メモリの共有ページからのデータをフリーページにコピーし、その後書込み動作によりページの内容を変更することができる。
そして、ＶＣＳは、新たに変更されたページによりパーティションページテーブルとチェック値テーブルとを更新することができる。
メモリのフリーページがフリーページプールから入手可能でない場合、ＶＣＳを、オペレーティングシステム、ユーザおよび／またはシステム管理者に対し適当な動作を行うよう指示を生成するように構成してもよい。
【００１６】
さらに別の実施形態では、ＶＣＳはチェック値テーブルを維持することができる。
チェック値テーブルを、メモリの物理ページとそれぞれのチェック値との間の検索可能な関連性を維持するように構成してもよい。
チェック値は、メモリの物理ページから生成されるチェックサムまたはハッシュ値であってもよい。
したがって、本発明のさらに別の実施形態では、メモリの重複ページを、書込み動作、周期的初期化等のイベントに応じてチェック値テーブルを利用することにより確定し、最適化してもよい。
他の実施形態では、チェック値を、ネットワーク送信に関連するＣＲＣ値、ディスクコントローラによって生成されるＣＲＣ値等、外部ソースから取得することができる。
【００１７】
詳細には、メモリの選択されたページのチェック値を使用して、チェック値テーブルを検索してもよい。
チェック値テーブル内に整合チェック値が見つかった場合、メモリの選択されたページとメモリの整合ページとの間でバイト単位の比較を行ってもよい。
選択されたページとメモリの整合ページとの間に整合がない場合、ＶＣＳは戻って、選択されたページのパーティションページテーブルにおけるチェック値テーブルの残りの検索を終了してもよい。
一方、メモリの選択されたページとメモリの整合ページとの間に整合がある場合、ＶＣＳは、メモリの選択されたページの参照を解除し、参照を解除したページをフリーページプールに戻してもよい。
また、ＶＣＳは、選択されたページの仮想アドレスとメモリの整合ページの実アドレスとの間の関連性を変更するように更新してもよい。
また、ＶＣＳは、別のパーティション／プロセス／装置がメモリの整合ページを共有していることを示すようにコピーカウンタフィールドをインクリメントすることにより、整合ページを参照するそれぞれのパーティションページテーブルを更新してもよい。
このように、メモリシステムを、パーティションにわたって最適化することができる。
【００１８】
図１は、実施形態を実行し得るシステム１００の例示的なブロック図を示す。
当業者には、図１に示すシステム１００が一般化された概略図を表し、他のコンポーネントを追加してもよく、あるいは既存のコンポーネントを取除くかまたは変更してもよい、ということが容易に明らかとなるはずである。
【００１９】
図１に示すように、システム１００は、処理複合体１１０と、メモリシステム１２０と、仮想圧縮システム（「ＶＣＳ」としてラベル付けされる）１３０と、を含む。
処理複合体１１０は、複数の装置１１５ａ…１１５ｎを含んでもよい。
各装置、たとえば１１５ａを、マイクロプロセッサ、コントローラ、ディスクドライブコントローラ、または、複数のパーティションを管理することができる他の同様の処理装置で実施することができる。
代替的に、処理複合体１１０は、マイクロプロセッサ、コントローラ、ディスクドライブコントローラまたは複数のパーティションを管理することができる他の同様の処理装置等の単一装置であってもよい。
【００２０】
処理複合体１１０を、メモリシステム１２０内の複数パーティションを管理するように構成することができる。
メモリシステム１２０を、キャッシュ、コンピュータシステムのメインメモリ、仮想メモリシステム、記憶ディスク、ディスクアレイ、または、パーティションに分割されるかパーティション、たとえばパーティション１２５ａ…１２５ｎとして共有されることが可能な他の同様の記憶装置として実施することができる。
また、処理複合体１１０を、それぞれのタイプのメモリに対する従来のアドレス指定方式によりメモリシステム１２０にアクセスするように構成してもよい。
【００２１】
処理複合体１１０を、有限サイズの単位、たとえばページ、ブロック、ラインまたは他の同様の単位でメモリシステム１２０にアクセスするように構成することができる。
さらに、アクセスの単位を、データ、パーティション指定および選択されたパーティション内のアドレスを含むように構成することができる。
パーティション指定を、処理複合体１１０により仮想アドレスの一部として提示してもよく、あるいはＶＣＳ１３０においてパーティションを管理するプロセスの一部として維持してもよい。
パーティション指定、たとえば番号と処理複合体１１０によって提示されるアドレスとから、ＶＣＳ１３０は、メモリシステム１２０に提示される物理アドレスを生成し得る。
【００２２】
ＶＣＳ１３０を、処理複合体１１０およびメモリシステム１２０とインタフェースさせてもよい。
一実施形態では、ＶＣＳ１３０を、処理複合体１１０とメモリシステム１２０との間のアドレスバス（図示せず）に配置してもよい。
別の実施形態では、ＶＣＳ１３０を処理複合体１１０と統合してもよい。
さらに別の実施形態では、ＶＣＳ１３０をメモリシステム１２０内に統合してもよい。
さらに、当業者には、あらゆる実施形態をハードウェア、ソフトウェアまたはそれらの組合せで実施してもよい、ということが容易に明らかとなるはずである。
【００２３】
ＶＣＳ１３０を、メモリの単位を特定することによりメモリシステム１２０を最適化するように構成してもよい。
ここで、メモリの単位は、複数のパーティション間で同一の内容を共有する、ページ、ブロック、ライン等であってもよい。
そして、ＶＣＳ１３０は、共通するメモリの単位の仮想アドレスを、単一の共通単位を指すように再構成してもよい。
すなわち、仮想圧縮である。
詳細には、一実施形態において、ＶＣＳ１３０は、イベント（たとえば、書込み）かまたは周期的呼出しに応じてメモリシステム１２０を仮想的に圧縮してもよい。
ＶＣＳ１３０は、メモリの候補単位、たとえばページを選択し、関連するチェック値（たとえば、チェックサム、ハッシュ値等）をメモリのそれぞれのページのチェック値と比較してもよい。
チェックサムが整合する場合、ＶＣＳ１３０は、候補ページと整合ページとのバイト単位の比較を実行してもよい。
ページが同一であると判断される場合、候補ページのパーティションに対するページパーティションテーブル（図示せず）が更新される。
ページパーティションテーブルを、ページの仮想アドレス、すなわち装置／プロセスから受取られたアドレスを、ページの実アドレス、すなわちメモリシステム１２０におけるアドレスに関連付けるように構成してもよい。
したがって、ページパーティションテーブルにおける候補ページに対するエントリは、整合ページの実アドレスによって更新される。
【００２４】
一実施形態では、コピーカウンタを、ページパーティションテーブルの各エントリに関連付けてもよい。
したがって、新たな同一ページが確定された場合、コピーカウンタを、パーティションにわたって整合ページを参照する各エントリに対してインクリメントしてもよい。
【００２５】
図２は、図１に示すＶＣＳ１３０の実施形態２００の例示的なブロック図を示す。
当業者には、図２に示すＶＣＳ１３０が一般化された概略図を表し、他のコンポーネントを追加してもあるいは既存のコンポーネントを取除くかまたは変更してもよい、ということが容易に明らかとなるはずである。
【００２６】
図２に示すように、ＶＣＳ１３０は、プロセッサインタフェース２１０と、コントローラ２２０と、メモリ２３０と、メモリインタフェース２４０と、を有してもよい。
プロセッサインタフェース２１０を、装置（またはプロセッサ、プロセス等）とＶＣＳ１３０との間でコマンド、データおよび／またはアドレスを通信するように適合させてもよい。
プロセッサインタフェース２１０を、装置とメモリシステムとの間のバスまたは他の同様の情報チャネルに接続するように構成することができる。
【００２７】
コントローラ２２０を、ＶＣＳ１３０のための実行エンジンを提供するように構成することができる。
コントローラ２２０を、マイクロプロセッサ、コントローラ、状態機械または他の同様の装置もしくは特定用途向け集積回路（ＡＳＩＣ）として実施することができる。
代替的に、ＶＣＳ１３０の機能を、処理装置またはメモリシステムに統合してもよい。
【００２８】
また、コントローラ２２０を、メモリ２３０とインタフェースするように構成してもよい。
メモリ２３０を、ＶＣＳ１３０のコンピュータプログラム実施形態のための記憶装置であるように構成することができる。
また、メモリ２３０を使用して、データ構造、たとえばテーブル、連結リスト等の格納域を設けることができる。
代替的に、別の実施形態では、データ構造をメモリシステム１２０に格納し維持することもできる。
【００２９】
別の実施形態では、メモリ２３０を、パーティションページテーブル２５０と、チェック値テーブル２６０と、フリーページプール２７０と、を格納するように構成してもよい。
パーティションページテーブル２５０は、ＶＣＳ１３０のためのアドレス変換機構を提供してもよい。
詳細には、パーティションページテーブル２５０は、特定のパーティションに対し仮想アドレスを対応する実アドレスにマッピングし（またはリンクさせ）てもよい。
メモリシステム１２０に生成される各パーティションに対して、パーティションページテーブル２５０を生成し、管理する。
したがって、ＶＣＳ１３０は、プロセッサインタフェース２１０を通して装置から仮想アドレスを受取ってもよい。
ここで、アドレスは、データと、パーティションインジケータと、仮想アドレスと、を有する。
ＶＣＳ１３０は、パーティションインジケータを使用して適当なパーティションページテーブルを選択してもよく、その後仮想アドレスを使用して対応する実アドレスを確定してもよい。
そして、ＶＣＳ１３０は、実アドレスを、メモリインタフェース２４０を通してメモリシステム１２０に転送してもよい。
【００３０】
図３は、実施形態による図２に示すパーティションページテーブル２５０を示す。
当業者には、図３に示すパーティションページテーブル２５０が、一般化した概略図を表し、他のフィールドを追加してもよくあるいは既存のフィールドを取除くかまたは変更してもよい、ということが容易に明らかとなるはずである。
【００３１】
図示するように、パーティションページテーブル２５０は、仮想アドレスフィールド３０５と、実アドレスフィールド３１０と、アドレス有効フィールド３１５と、次テーブルエントリフィールド３２０と、コピーカウンタフィールド３２５と、コピー禁止フィールド３３０と、共有インジケータフィールド３３５と、を含む。
【００３２】
仮想アドレスフィールド３０５は、パーティションによって使用されるメモリのページの仮想アドレスを格納してもよい。
パーティションページテーブル２５０を、仮想アドレスフィールド３０５の値によってインデックス付けしてもよい。
例として、ページパーティションテーブル２５０を連想メモリを用いて実施することができる、それによりいかなる整合値の迅速な指示も可能となる。
【００３３】
実アドレスフィールド３１０は、メモリシステム１２０における対応する実アドレスを格納してもよい。
アドレス有効フィールド３１５の値は、仮想アドレスに対して実アドレスが有効であるか否かの指示を提供してもよい。
次テーブルエントリフィールド３２０の値は、対応する実アドレスを共有する仮想アドレスが他にあるか否かの指示を提供してもよい。
コピーカウンタフィールド３２５の値は、実アドレスを共有する仮想アドレスの指示を提供してもよい。
コピー禁止フィールド３３０の値は、実アドレスが共有されるものであるか否かの指示を提供してもよい。
ページテーブル（または他のいずれか）に、ページを共有する仮想アドレスのすべて（ページテーブルエントリにおける）を特定する共有インジケータフィールド３３５が提供される場合、コピー禁止フィールド３３０が必要となる場合がある。
【００３４】
図２に戻ると、チェック値テーブル２６０は、ＶＣＳ１３０に対しメモリの単位、たとえばページを迅速に特定する機構を提供することができる。
詳細には、メモリの選択されたページのチェック値、たとえばチェックサム、ハッシュ値等を使用して、チェック値テーブルを検索してもよい。
たとえば、チェック値テーブル２６０を、選択されたページのチェックサムがチェック値テーブル２６０に対するインデックスとなるように構成してもよい。
代替的に、チェック値テーブル２６０を、チェック値から計算されるハッシュによってインデックス付けしてもよい。
チェック値テーブル２６０に整合チェックサムが見つかった場合、ＶＣＳ１３０は、選択されたページを整合ページと比較してもよい。
ページが同一である場合、ＶＣＳ１３０は、整合ページの対応する実アドレスにより選択されたページのパーティションページテーブルを更新する。
また、ＶＣＳ１３０は、選択された物理ページの割付を解除するか、または参照を解除し、参照解除した物理ページを、メモリシステム１２０のためにメモリの入手可能なページのリストを維持するように構成されるフリーページプール２７０に戻してもよい。
【００３５】
図４は、実施形態による例示的なチェック値テーブル２６０を示す。
当業者には、図４に示すチェック値テーブル２６０が一般化された概略図を表し、他のフィールドを追加してもよく、あるいは既存のフィールドを取除くかまたは変更してもよい、ということが容易に明らかとなるはずである。
【００３６】
図４に示すように、チェック値テーブル２６０は、チェック値フィールド４０５と、次要素フィールド４１０と、実アドレスフィールド４１５と、を含む。
チェック値フィールド４０５は、メモリにおけるメモリの対応するアクティブなページの各々に対するチェック値を格納してもよい。
チェック値を、チェックサムアルゴリズム、ハッシングアルゴリズムまたは他の同様の技法を使用して生成してもよい。
他の実施形態では、ＶＣＳ１３０は、外部ソースからのチェック値を使用してもよい。
例として、ＶＣＳ１３０は、ＶＣＳ１３０を実行しているシステムによって受取られるデータのパケットの送信に関連するＣＲＣ値を使用してもよい。
別の例として、ＶＣＳ１３０は、大容量記憶装置にデータを書込んでいるディスクコントローラによって生成されるＣＲＣ値を使用してもよい。
【００３７】
次要素フィールド４１０は、チェック値テーブル２６０における、同じチェック値を共有する別のエントリの指示を提供してもよい。
場合によっては、メモリの２つの異なるページが、同一のハッシュ値を生成する可能性がある。
したがって、検索時間を削減するために、チェック値テーブル２６０は、同じハッシュ値を有する他のエントリの指示を提供する。
実アドレスフィールド４１５は、チェック値に関連する対応する実アドレスを提供してもよい。
【００３８】
図５は、さらに別の実施形態による、図２に示すＶＣＳ１３０のコントローラ２２０に対する読出しモード５００の例示的なフローチャートを示す。
当業者には、読出しモード５００が一般化された図を表し、他のステップを追加してもよくもしくは既存のステップを取除くかまたは変更することができる、ということが容易に明らかとなるはずである。
【００３９】
図５に示すように、ステップ５０５において、ＶＣＳ１３０のコントローラ２２０を、アイドル状態にあるように構成する。
ステップ５１０において、コントローラ２２０は、プロセッサインタフェース２１０から読出し要求を受取る。
読出し要求は、データと、パーティション指定と、そのパーティション内のアドレス、すなわち仮想アドレスと、からなる。
【００４０】
ステップ５１５において、コントローラ２２０は、パーティション指定を使用して適当なパーティションページテーブルを選択する。
次に、ステップ５２０において、コントローラ２２０は、仮想アドレスを使用して、選択されたパーティションページテーブルを検索することにより実アドレスを確定する。
【００４１】
ステップ５２５において実アドレスが見つかると、コントローラ２２０は、ステップ５３０において、実アドレスを、メモリインタフェース２２０を通してメモリシステム１２０に転送する。
その後、コントローラ２２０は、ステップ５０５のアイドル状態に戻る。
そうでない場合、コントローラ２２０は、ステップ５３５においてエラーメッセージをプロセッサインタフェース２１０を通して要求側プロセッサに返し、その後ステップ５０５のアイドル状態に戻る。
【００４２】
図６Ａおよび図６Ｂは、あわせて、別の実施形態による図２に示すＶＣＳ１３０のコントローラ２２０に対する書込みモード６００の例示的なフローチャートを示す。
当業者には、書込みモード６００が一般化された図を表し、他のステップを追加してもよくあるいは既存のステップを取除くかまたは変更してもよい、ということが容易に明らかとなるはずである。
【００４３】
図６に示すように、ステップ６０５において、ＶＣＳ１２０のコントローラ２２０を、アイドル状態にあるように構成する。
ステップ６１０において、コントローラ２２０は、装置１１０からのメモリシステム１２０に対する書込み要求をプロセッサインタフェース２１０を通して受取る（またはインタセプトする）。
【００４４】
ステップ６１５において、コントローラ２２０は、受取った書込み要求からパーティションページテーブルを確定する。
次に、ステップ６２０において、書込み要求に関連する仮想アドレスを、選択されたパーティションページテーブル（たとえば、図３に示すパーティションページテーブル２６０）へのインデックスとして使用する。
【００４５】
ステップ６２５において、コントローラ２２０は、要求された仮想アドレスに対して実アドレスが存在するか否かを判断する。
コントローラ２２０は、関連する実アドレスが存在しないと判断した場合、ステップ６３０において、フリーページプール２７０に対しメモリのページを要求することができる。
【００４６】
ステップ６３５において、コントローラ２２０は、メモリシステム１２０によって格納されるために、要求されたページに対し受取ったデータを転送する。
メモリシステム１２０は、要求されたページの実アドレスすなわち物理アドレスを返す。
【００４７】
ステップ６４０において、コントローラ２２０は、選択されたパーティションのページパーティションテーブルを、要求されたページの実アドレスによって更新する。
また、コントローラ２２０は、要求されたページに対するチェック値（たとえば、チェックサムまたはハッシュ値）を生成してもよく、要求されたページの実アドレスおよび関連するチェック値とともに仮想アドレスによりチェック値テーブルを更新してもよい。
その後、コントローラ２２０は、ステップ６０５のアイドル状態に戻る。
【００４８】
任意に、ステップ６４５において、コントローラ２２０は、メモリシステム１２０を仮想的に圧縮するためにコントローラ２２０に対し最適化モードを開始する。
コントローラに対する最適化モードのさらなる詳細は、図７Ａおよび図７Ｂに関して後述する。
その後、コントローラ２２０は、ステップ６０５のアイドル状態に戻る。
【００４９】
図６Ｂを参照すると、コントローラ２２０は、要求された仮想アドレスに対して実アドレスが存在すると判断した場合、ステップ６５０において、要求されたページに対してコピー禁止フィールド３３０が設定されているか否かを判断する。
コピー禁止ビットが設定されている場合、コントローラ２２０は、ステップ６５５において、ページパーティションテーブルを要求された仮想アドレスによって検索することにより、要求されたページの実アドレスを検索することができる。
【００５０】
ステップ６６０において、要求されたデータは、メモリシステム１２０に対する実アドレスとともにメモリシステム１２０に転送される。
ステップ６６５において、コントローラ２２０は、要求されたデータに対するチェック値（たとえば、チェックサムまたはハッシュ値）を生成し、要求されたページの実アドレスおよび関連するチェック値とともに書込み要求の仮想アドレスによりチェック値テーブルを更新する。
代替的に、コントローラ２２０は、外部装置および／またはプロセスから生成されるチェック値を使用してもよい。
その後、コントローラ２２０は、ステップ６４５（図６Ａに示す）に関して説明したようにメモリの最適化を行うことができる。
【００５１】
ステップ６５０に戻ると、コントローラ２２０は、コピー禁止フィールド３３０が設定されていないと判断した場合、ステップ６７０において、ページ、すなわちページの単一コピーの所有者により書込み要求が開始されるか否かを判断する。
実施形態では、コントローラ２２０は、パーティションページテーブル２５０の共有インジケータフィールド３３５（図２および図３に示す）にアクセスする。
コントローラ２２０は、ページの所有者が書込み要求を開始すると判断した場合、ステップ６５５の処理を開始する。
【００５２】
一方、コントローラ２２０は、要求されたページが共有されていると判断した場合、ステップ６７５において、フリーページプール２７０に対してメモリのページを要求する。
ステップ６８０において、コントローラ２２０は、整合ページの内容を要求されたページにコピーし、かつ書込み動作を実行するためにメモリシステム１２０に要求されたデータを転送することができる。
【００５３】
ステップ６８５において、コントローラ２２０は、選択されたパーティションのページパーティションテーブルを、要求されたページの実アドレスで更新する。
コントローラ２２０はまた、要求されたデータに対するチェック値（たとえば、チェックサムまたはハッシュ値）を生成し、要求されたページの実アドレスおよび関連するチェック値とともに書込み要求の仮想アドレスによりチェック値テーブルを更新する。
ステップ６９０において、コントローラ２２０は、整合ページを参照するページのページパーティションテーブルのコピーカウンタフィールド３２５をデクリメントする。
その後、コントローラ２２０は、ステップ６４５（図６Ａに示す）のメモリ最適化に対する処理を開始する。
【００５４】
図７Ａおよび図７Ｂは、あわせて、図２に示すＶＣＳ１３０のコントローラ２２０のための最適化モード７００の例示的なフローチャートを示す。
当業者には、最適化モード７００が一般化された図を表し、他のステップを追加してもよくもしくは既存のステップを取除いても変更してもよい、ということが容易に明らかとなるはずである。
【００５５】
図７Ａに示すように、ステップ７０５において、コントローラ２２０を、アイドル状態にあるように構成される。
ステップ７１０において、コントローラ２２０は、最適化モード７００の呼出しを検出する。
最適化モード５００を、周期的にまたは書込み要求の終結等のイベントにより呼出す。
【００５６】
ステップ７１５において、コントローラ２２０を、ページを選択してメモリシステム１２０に同一ページがあるか否かを判断するように構成する。
詳細には、コントローラ２２０は、変更された未処理ページのすべてまたはサブセットを処理する。
コントローラ２２０は、選択されたページのチェック値を使用してチェック値テーブル２６０を検索する。
選択されたページのチェック値とテーブルのチェック値との間に整合がない場合、ステップ７２５において、コントローラ２２０は、最適化モード７００が完了したか否かを判断する。
最後のページが選択されていない場合、コントローラ２２０はステップ７１５の処理に戻る。
そうでない場合、コントローラは、ステップ７０５のアイドル状態に戻る。
代替的に、新たなメモリ動作が受取られると、最適化を中断する。
【００５７】
一実施形態では、コントローラ２２０は、ページを、そのページに対して書込み動作が実行されることに基づいて選択する。
本発明の別の実施形態では、コントローラ２２０は、ページを、チェック値テーブル２６０のその位置により逐次選択する。
選択プロセスを最適化するページを選択するための他の技法は、本発明の範囲内にある。
【００５８】
ステップ７２０に戻ると、選択されたページのチェック値とテーブルのチェック値との間に整合がある場合、ステップ７３０において、コントローラ２２０は、選択されたページの内容と整合ページの内容とを比較する。
ステップ７３５において、コントローラ２２０は、ステップ７３０における比較に基づいて、選択されたページと整合ページとが同一であるか否かの判断を行う。
【００５９】
選択されたページと整合ページとが同一でない場合、ステップ７４０において、コントローラ２２０は、チェック値テーブル２６０の整合ページの次要素フィールド４１０がエントリを含むか否かを判断する。
詳細には、異なるメモリ内容を含む２つのページが同じチェック値（たとえば、ハッシュ値）を有する場合がある。
検索時間を削減するために、チェック値テーブル２６０は、２つの異なるページをリンクさせてもよい。
【００６０】
整合ページの次要素フィールド４１０がエントリを含まない場合、コントローラ２２０は、上述したようにステップ７２５の処理を開始する。
そうでない場合、ステップ７４５において、コントローラ２２０は、選択されたページの内容と次要素フィールド４１０の値によって指示されるページの内容とを比較する。
その後、コントローラ２２０はステップ７３５の処理に戻る。
【００６１】
コントローラ２２０は、ステップ７３５において、選択されたページと整合ページとが同一であると判断した場合、ステップ７５０において、整合ページに対してコピー禁止ビットが設定されているか否かを判断する。
コピー禁止ビットが設定されている場合、コントローラ２２０はステップ７２５の処理に戻る。
【００６２】
そうでない場合、図７Ｂに関して、コントローラ２２０は、ステップ７５５において適当なテーブルを更新する。
詳細には、コントローラ２２０は、チェック値テーブル２６０の整合ページの実アドレスにより、選択されたページの実アドレスフィールド４１５を更新する。
また、コントローラ２２０は、選択されたページのページパーティションテーブルを整合ページの実アドレスで更新し、アドレス有効フィールド３１５をアドレスが有効であるとマークする。
さらにコントローラ２２０は、コピーカウンタフィールド３２５をインクリメントすることにより、整合ページのページパーティションテーブルを更新する。
【００６３】
ステップ７６０において、コントローラ２２０は、選択されたページの参照を解除するか、または割付を解除して、ステップ７６５において、参照解除したページをフリーページプール２７０に返す。
【００６４】
図８Ａ〜図８Ｃは、それぞれ、あらゆる実施形態を実行してもよい例示的なシステムを示す。
図８Ａに示すように、ＶＣＳ１３０を、ディスク記憶システム（またはプラットフォーム）８００に統合することができる。
大容量記憶システム８００は、ディスクコントローラ８０５と少なくとも１つのディスク８１０とを有する。
ディスクコントローラ８０５を、複数のパーティションをマッピングするように構成することができ、各パーティションは、それぞれのユーザ／装置に対するソフトウェアアプリケーションおよび／またはデータを記憶するためのものである。
ＶＣＳ１３０は、パーティション間で共通データの単一インスタンスを共有することにより、ソフトウェアアプリケーションおよび／またはデータの格納を最適化することができる。
すなわち、ディスク記憶システム８００の仮想圧縮である。
【００６５】
図８Ｂは、実施形態を実行してもよいキャッシュシステム８２０のブロック図を示す。
キャッシュシステム８２０は、キャッシュコントローラ８３０とキャッシュメモリ８４０とを有する。
キャッシュコントローラ８３０を、複数のパーティションにキャッシュサービスを提供するように構成し、そこで各パーティションは命令および／またはデータを格納することができる。
ＶＣＳ１３０の実施形態を利用することにより複数のパーティション間で共通の命令および／またはデータの単一インスタンスを共有することにより、キャッシュメモリ８４０の記憶スペースを最適化することができる。
【００６６】
図８Ｃは、実施形態を実行してもよいコンピュータシステム８５０のブロック図を示す。
コンピュータシステム８５０は、中央処理装置（ＣＰＵ）８６０と、メモリ８７０と、を有する。
ＣＰＵ８６０を、複数のパーティションを実行するように構成してもよく、そこで各パーティションは命令および／またはデータを格納してもよい。
ＶＣＳ１３０の実施形態を利用することにより複数のパーティション間で共通の命令および／またはデータの単一インスタンスを共有することによって、メモリ８７０の記憶スペースを最適化することができる。
コンピュータシステム８５０を、パーソナルコンピュータ、ワークステーションプラットフォーム、サーバプラットフォームまたは他の同様のコンピューティングプラットフォームを用いて実施することができる。
【００６７】
実施形態によっては、コンピュータプログラムとして実行してもよい。
コンピュータプログラムは、アクティブと非アクティブとの両方の種々の形態で存在してもよい。
たとえば、コンピュータプログラムは、ソースコード、オブジェクトコード、実行可能コードまたは他のフォーマットのプログラム命令からなるソフトウェアプログラム（複数可）、ファームウェアプログラム（複数可）またはハードウェア記述言語（ＨＤＬ）ファイルとして存在することができる。
上記のいずれかを、圧縮または非圧縮形態で、記憶装置及び信号を含むコンピュータ読取可能媒体において具体化することができる。
例示的なコンピュータ読取可能記憶装置には、従来のコンピュータシステムＲＡＭ（ランダムアクセスメモリ）、ＲＯＭ（リードオンリメモリ）、ＥＰＲＯＭ（消去可能プログラム可能ＲＯＭ）、ＥＥＰＲＯＭ（電気的消去可能プログラム可能ＲＯＭ）および磁気ディスクまたは光ディスクまたはテープがある。
例示的なコンピュータ読取可能信号は、搬送波を使用して変調されるか否かに係らず、インターネットまたは他のネットワークを介してダウンロードされた信号を含む、本発明をホストまたは実行しているコンピュータシステムがアクセスするように構成されることが可能な信号である。
上述したものの具体的な実施例には、コンピュータプログラムの実行可能ソフトウェアプログラム（複数可）の、ＣＤ  ＲＯＭでの、またはインターネットダウンロードを介する配布が含まれる。
ある意味では、インターネット自体は、抽象的なエンティティとして、コンピュータ読取可能媒体である。
概して、同じことがコンピュータネットワークに対しても当てはまる。
【００６８】
本発明をその例示的な実施形態に関して説明したが、当業者は、発明の真の精神および範囲から逸脱することなしに発明の説明した実施形態に対してあらゆる変更を行うことができるであろう。
本明細書で使用する用語および説明は、単に例示として示すものであり、限定として意味するものではない。
特に、本発明の方法を実施例によって説明したが、本方法のステップを、例示したものと異なる順序で、または同時に実行してもよい。
当業者は、これらおよび他の変形形態が、添付の特許請求の範囲とそれらの等価物とにおいて定義されるような本発明の精神および範囲内にあり得る、ということを認めるであろう。
【産業上の利用可能性】
【００６９】
本発明は、メモリシステムの管理のために利用可能である。
【図面の簡単な説明】
【００７０】
【図１】実施形態を実行し得るシステムの例示的なブロック図である。
【図２】実施形態の詳細なブロック図である。
【図３】別の実施形態によるページパーティションページテーブルの図である。
【図４】実施形態によって利用されるチェック値テーブルの図である。
【図５】実施形態による読出し方法の例示的なフローチャートである。
【図６】図６Ａおよび図６Ｂに対するキーの図である。
【図６Ａ】実施形態による書込みモードの例示的なフローチャートである。
【図６Ｂ】実施形態による書込みモードの例示的なフローチャートである。
【図７】図７Ａおよび図７Ｂに対するキーの図である。
【図７Ａ】実施形態による最適化モードの例示的なフローチャートである。
【図７Ｂ】実施形態による最適化モードの例示的なフローチャートである。
【図８Ａ】あらゆる実施形態のうちの１つの図である。
【図８Ｂ】あらゆる実施形態のうちの１つの図である。
【図８Ｃ】あらゆる実施形態のうちの１つの図である。
【符号の説明】
【００７１】
１００・・・システム、
１１０・・・処理複合体、
１２０・・・メモリシステム、
１３０・・・仮想圧縮システム（ＶＣＳ）、
１１５・・・装置、
１２５・・・パーティション、
２００・・・実施形態、
２１０・・・プロセッサインタフェース、
２３０・・・メモリ、
２５０・・・パーティションページテーブル、
２６０・・・チェック値テーブル、
２７０・・・フリーページプール、
２１０・・・プロセッサインタフェース、
２２０・・・コントローラ、
２４０・・・メモリインタフェース、
３０５・・・仮想アドレス、
３１０・・・実アドレス、
３１５・・・アドレス有効、
３２０・・・次テーブルエントリ、
３２５・・・コピーカウンタ、
３３０・・・コピー禁止、
３３５・・・共有インジケータ、
４０５・・・チェック値、
４１０・・・次要素、
４１５・・・実アドレス、
８０５・・・ディスクコントローラ、
８１０・・・ディスク、
８３０・・・キャッシュコントローラ、
８４０・・・キャッシュ、
８７０・・・メモリ、
【図１】
2004171547.tif 000003
【図２】
2004171547.tif 000004
【図３】
2004171547.tif 000005
【図４】
2004171547.tif 000006
【図５】
2004171547.tif 000007
【図６】
2004171547.tif 000008
【図６Ａ】
2004171547.tif 000009
【図６Ｂ】
2004171547.tif 000010
【図７】
2004171547.tif 000011
【図７Ａ】
2004171547.tif 000012
【図７Ｂ】
2004171547.tif 000013
【図８Ａ】
2004171547.tif 000014
【図８Ｂ】
2004171547.tif 000015
【図８Ｃ】
2004171547.tif 000016