JP2004171547A - メモリシステムを管理する方法および装置 - Google Patents

メモリシステムを管理する方法および装置 Download PDF

Info

Publication number
JP2004171547A
JP2004171547A JP2003375096A JP2003375096A JP2004171547A JP 2004171547 A JP2004171547 A JP 2004171547A JP 2003375096 A JP2003375096 A JP 2003375096A JP 2003375096 A JP2003375096 A JP 2003375096A JP 2004171547 A JP2004171547 A JP 2004171547A
Authority
JP
Japan
Prior art keywords
page
memory
memory system
check value
partition
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.)
Withdrawn
Application number
JP2003375096A
Other languages
English (en)
Inventor
Blaine D Gaither
ブライネ・ディー・ガイサー
Benjamin D Osecky
ベンジャミン・ディー・オセッキー
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2004171547A publication Critical patent/JP2004171547A/ja
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】 メモリシステムを管理する方法および装置を提供する。
【解決手段】 本方法は、メモリの内容から複数のチェック値を生成すること、および所定のデータ構造において、複数のチェック値の各チェック値をメモリシステムにおけるそれぞれのページに関連付けることを含む。また、本方法は、メモリシステムにおいて、要求ページと同一の内容を有する候補ページをデータ構造の中で検索することも含み、その際、要求されたページのチェック値を使用して、データ構造の中で検索する。
【選択図】図2

Description

本発明は、メモリシステムを管理する方法および装置に関する。
シングルユーザデータ処理システムは、通常は、プロセッサと、揮発性メモリ、たとえば命令およびデータを格納するランダムアクセスメモリ(RAM)と、何らかの形態の永久記憶装置、たとえば磁気ディスクとからなる。
マルチプロセシング(MP)データ処理システムは、複数のユーザによって使用されることが多い。
たとえば、MPデータ処理システムで実行している仮想マシンは、各ユーザに対し、システムの資源すべてを単独で制御しているように見せかける。
その結果、MPデータ処理システムで実行している各仮想マシンに対して、揮発性メモリと永久記憶メモリとにおけるそれぞれのパーティションが維持される。
しかしながら、パーティションの各々は、他のパーティション、たとえばオペレーティングシステムカーネルに存在しているデータと同一の何らかのデータを含む場合がある。
結果として、メモリ使用は、通常パーティション間で最適化されず、それによりMPデータ処理システムの全体のコストが増大する。
同様に、ブレードサーバ環境かまたは外部大容量記憶アレイを共有するサーバのセットでは、大容量記憶ディスクアレイがブレードサーバまたはサーバ間で分割される場合がある。
ブレードサーバは、従来のサーバでは通常複数の基板上にあるプロセッサ、メモリおよびネットワーク接続等のコンポーネントで占められる、単一回路基板として実施することができるものである。
ブレードサーバは、既存のブレードサーバエンクロージャ内に滑り入るように設計される。
各ブレードサーバにパーティションを割当てることができ、各ブレードサーバがパーティションを実行することができる。
複数のパーティションが、異なるユーザに対して同じオペレーティングシステムおよびアプリケーションを実行する場合がある。
したがって、大容量記憶パーティションの多くが重複する情報を含む可能性がある。
一実施形態は、メモリシステムを管理する方法に関する。
本方法は、メモリの内容から複数のチェック値を生成すること、および所定のデータ構造において、複数のチェック値の各チェック値をメモリシステムにおけるそれぞれのページに関連付けることを含む。
また、本方法は、メモリシステムにおいて、要求ページと同一の内容を有する候補ページをデータ構造の中で検索することも含み、その際、要求されたページのチェック値を使用して、データ構造の中で検索する。
別の実施形態は、メモリサブシステムへのアクセスを管理する装置に関する。
本装置は、複数のプロセッサ用の記憶域を設けるように適合されたメモリシステムと、メモリシステムを複数のパーティションに分割するように構成された仮想圧縮システム(VCS0)と、を含む。
各パーティションは、複数のプロセッサのうちのプロセッサのそれぞれのサブセットに割当てられ、また、VCSは、プロセッサのサブセットのうちの選択されたプロセッサから仮想アドレスを受取るようにも構成される。
さらに、VCSは、パーティションを識別し、仮想アドレスを、選択されたプロセッサのそれぞれのパーティション内の実アドレスに変換するように構成される。
さらに別の実施形態は、メモリを管理する方法に関する。
本方法は、選択されたページの内容から計算されるチェック値をメモリの複数のページのそれぞれのチェック値と比較すること、および整合ページを、チェック値と整合ページのそれぞれのチェック値とが等しいことに応じて選択することを含む。
また、本方法は、選択されたページと整合ページとを比較すること、および選択されたページと整合ページとの内容が同一であることに応じて、選択されたページと整合ページとのうちの一方の仮想アドレスを選択されたページと整合ページとのうちの他方の物理アドレスにリダイレクトすることも含む。
さらに別の実施形態は、メモリを管理する方法に関する。
本方法は、メモリの選択されたページにデータを書込むこと、および選択されたページのステータスを確定することを含む。
また、本方法は、選択されたページが共有されていることに応じてメモリのフリーページプールに対してページを要求すること、および選択されたページの内容を要求されたページに書込むことも含む。
さらに、本方法は、要求されたページのそれぞれの内容に基づいてハッシュ値を生成すること、およびハッシュ値に基づいて他のページを検索することを含む。
さらに別の実施形態は、メモリを管理する装置に関する。
本装置は、メモリの選択されたページにデータを書込む手段と、選択されたページのステータスを確定する手段とを備える。
また、本装置は、選択されたページが共有されていることに応じてメモリのフリーページプールに対してページを要求する手段と、選択されたページの内容を要求されたページに書込む手段も備える。
さらに、本装置は、要求されたページのそれぞれの内容に基づいてハッシュ値を生成する手段と、ハッシュ値に基づいて他のページを検索する手段とを備える。
本発明によれば、メモリシステムを管理する方法および装置が提供される。
実施形態は、メモリシステムを最適化するように構成された仮想圧縮システム(VCS)に関する。
詳細には、メモリシステムをパーティションに分割することができ、各パーティションを、装置、プロセス、プロセッサ、プロセッサのセット、仮想マシン等に割当てることができる。
VCSは、パーティション間のメモリの共通ページを確定することができる。
VCSは、メモリにおける同一内容のページの仮想アドレスマッピングを再構成して、物理的に共通するページを指す(すなわち共有する)ことができる。
すなわち、仮想圧縮することができる。
メモリの重複するページに対しては、参照を解除する。
すなわち、重複するページに対するいかなるマッピングも除去し、重複するページをVCSによって維持されるフリーページプールに戻す。
したがって、パーティション内のメモリ空間の使用が最適化される。
別の実施形態では、VCSを、選択されたパーティションに対してパーティションページテーブルを維持するように構成してもよい。
パーティションページテーブルは、仮想アドレスと、選択されたパーティションに対して割当てられるメモリのページの対応する物理アドレスと、に対し、関連性を維持するように構成される。
各関連性に対し、パーティションページテーブルはまた、コピーカウンタ(またはフラグ、セマフォ等)を、選択されたエントリの物理アドレスを他のパーティション/装置/プロセスによって共有してもよいか否かを示すように維持するようにも構成される。
したがって、別の実施形態では、選択されたパーティションに対する書込み中に、パーティションページテーブルを利用することができる。
詳細には、メモリのページへの書込み動作に対し、VCSは、パーティションページテーブルにアクセスして書込み動作がメモリの既存のページに影響を与えるか否かを判断することができる。
パーティションページテーブルの検索により、メモリのいかなる既存のページも影響を受けないと判断された場合、VCSは、VCSによって維持されるフリーページプールに対しフリーページを要求することができる。
フリーページは、フリープールを表すデータ構造(またはリスト)から取出される。
そして、要求されたデータはそのフリーページに書込まれる。
また、VCSは、新たなページに対応する値でパーティションページテーブルとチェック値テーブルとを更新することができる。
パーティションページテーブルの検索により、1つの仮想ページのみが対応する実ページにマッピングされると判断された場合、要求されたデータは、対応する実ページ内の対応するアドレスに書込まれる。
VCSはまた、パーティションページテーブルを更新し新たに書込まれたページに対応する値をチェックすることができる。
一方、VCSは、メモリの2つ以上のページが書込み動作によって影響を受け、メモリの少なくとも1つのページが共有されると判断された場合、フリーページプールからメモリのフリーページを検索し、フリーページプールからこのフリーページを取出すために、フリーページプールを表すデータ構造を更新することができる。
VCSは、メモリの共有ページからのデータをフリーページにコピーし、その後書込み動作によりページの内容を変更することができる。
そして、VCSは、新たに変更されたページによりパーティションページテーブルとチェック値テーブルとを更新することができる。
メモリのフリーページがフリーページプールから入手可能でない場合、VCSを、オペレーティングシステム、ユーザおよび/またはシステム管理者に対し適当な動作を行うよう指示を生成するように構成してもよい。
さらに別の実施形態では、VCSはチェック値テーブルを維持することができる。
チェック値テーブルを、メモリの物理ページとそれぞれのチェック値との間の検索可能な関連性を維持するように構成してもよい。
チェック値は、メモリの物理ページから生成されるチェックサムまたはハッシュ値であってもよい。
したがって、本発明のさらに別の実施形態では、メモリの重複ページを、書込み動作、周期的初期化等のイベントに応じてチェック値テーブルを利用することにより確定し、最適化してもよい。
他の実施形態では、チェック値を、ネットワーク送信に関連するCRC値、ディスクコントローラによって生成されるCRC値等、外部ソースから取得することができる。
詳細には、メモリの選択されたページのチェック値を使用して、チェック値テーブルを検索してもよい。
チェック値テーブル内に整合チェック値が見つかった場合、メモリの選択されたページとメモリの整合ページとの間でバイト単位の比較を行ってもよい。
選択されたページとメモリの整合ページとの間に整合がない場合、VCSは戻って、選択されたページのパーティションページテーブルにおけるチェック値テーブルの残りの検索を終了してもよい。
一方、メモリの選択されたページとメモリの整合ページとの間に整合がある場合、VCSは、メモリの選択されたページの参照を解除し、参照を解除したページをフリーページプールに戻してもよい。
また、VCSは、選択されたページの仮想アドレスとメモリの整合ページの実アドレスとの間の関連性を変更するように更新してもよい。
また、VCSは、別のパーティション/プロセス/装置がメモリの整合ページを共有していることを示すようにコピーカウンタフィールドをインクリメントすることにより、整合ページを参照するそれぞれのパーティションページテーブルを更新してもよい。
このように、メモリシステムを、パーティションにわたって最適化することができる。
図1は、実施形態を実行し得るシステム100の例示的なブロック図を示す。
当業者には、図1に示すシステム100が一般化された概略図を表し、他のコンポーネントを追加してもよく、あるいは既存のコンポーネントを取除くかまたは変更してもよい、ということが容易に明らかとなるはずである。
図1に示すように、システム100は、処理複合体110と、メモリシステム120と、仮想圧縮システム(「VCS」としてラベル付けされる)130と、を含む。
処理複合体110は、複数の装置115a…115nを含んでもよい。
各装置、たとえば115aを、マイクロプロセッサ、コントローラ、ディスクドライブコントローラ、または、複数のパーティションを管理することができる他の同様の処理装置で実施することができる。
代替的に、処理複合体110は、マイクロプロセッサ、コントローラ、ディスクドライブコントローラまたは複数のパーティションを管理することができる他の同様の処理装置等の単一装置であってもよい。
処理複合体110を、メモリシステム120内の複数パーティションを管理するように構成することができる。
メモリシステム120を、キャッシュ、コンピュータシステムのメインメモリ、仮想メモリシステム、記憶ディスク、ディスクアレイ、または、パーティションに分割されるかパーティション、たとえばパーティション125a…125nとして共有されることが可能な他の同様の記憶装置として実施することができる。
また、処理複合体110を、それぞれのタイプのメモリに対する従来のアドレス指定方式によりメモリシステム120にアクセスするように構成してもよい。
処理複合体110を、有限サイズの単位、たとえばページ、ブロック、ラインまたは他の同様の単位でメモリシステム120にアクセスするように構成することができる。
さらに、アクセスの単位を、データ、パーティション指定および選択されたパーティション内のアドレスを含むように構成することができる。
パーティション指定を、処理複合体110により仮想アドレスの一部として提示してもよく、あるいはVCS130においてパーティションを管理するプロセスの一部として維持してもよい。
パーティション指定、たとえば番号と処理複合体110によって提示されるアドレスとから、VCS130は、メモリシステム120に提示される物理アドレスを生成し得る。
VCS130を、処理複合体110およびメモリシステム120とインタフェースさせてもよい。
一実施形態では、VCS130を、処理複合体110とメモリシステム120との間のアドレスバス(図示せず)に配置してもよい。
別の実施形態では、VCS130を処理複合体110と統合してもよい。
さらに別の実施形態では、VCS130をメモリシステム120内に統合してもよい。
さらに、当業者には、あらゆる実施形態をハードウェア、ソフトウェアまたはそれらの組合せで実施してもよい、ということが容易に明らかとなるはずである。
VCS130を、メモリの単位を特定することによりメモリシステム120を最適化するように構成してもよい。
ここで、メモリの単位は、複数のパーティション間で同一の内容を共有する、ページ、ブロック、ライン等であってもよい。
そして、VCS130は、共通するメモリの単位の仮想アドレスを、単一の共通単位を指すように再構成してもよい。
すなわち、仮想圧縮である。
詳細には、一実施形態において、VCS130は、イベント(たとえば、書込み)かまたは周期的呼出しに応じてメモリシステム120を仮想的に圧縮してもよい。
VCS130は、メモリの候補単位、たとえばページを選択し、関連するチェック値(たとえば、チェックサム、ハッシュ値等)をメモリのそれぞれのページのチェック値と比較してもよい。
チェックサムが整合する場合、VCS130は、候補ページと整合ページとのバイト単位の比較を実行してもよい。
ページが同一であると判断される場合、候補ページのパーティションに対するページパーティションテーブル(図示せず)が更新される。
ページパーティションテーブルを、ページの仮想アドレス、すなわち装置/プロセスから受取られたアドレスを、ページの実アドレス、すなわちメモリシステム120におけるアドレスに関連付けるように構成してもよい。
したがって、ページパーティションテーブルにおける候補ページに対するエントリは、整合ページの実アドレスによって更新される。
一実施形態では、コピーカウンタを、ページパーティションテーブルの各エントリに関連付けてもよい。
したがって、新たな同一ページが確定された場合、コピーカウンタを、パーティションにわたって整合ページを参照する各エントリに対してインクリメントしてもよい。
図2は、図1に示すVCS130の実施形態200の例示的なブロック図を示す。
当業者には、図2に示すVCS130が一般化された概略図を表し、他のコンポーネントを追加してもあるいは既存のコンポーネントを取除くかまたは変更してもよい、ということが容易に明らかとなるはずである。
図2に示すように、VCS130は、プロセッサインタフェース210と、コントローラ220と、メモリ230と、メモリインタフェース240と、を有してもよい。
プロセッサインタフェース210を、装置(またはプロセッサ、プロセス等)とVCS130との間でコマンド、データおよび/またはアドレスを通信するように適合させてもよい。
プロセッサインタフェース210を、装置とメモリシステムとの間のバスまたは他の同様の情報チャネルに接続するように構成することができる。
コントローラ220を、VCS130のための実行エンジンを提供するように構成することができる。
コントローラ220を、マイクロプロセッサ、コントローラ、状態機械または他の同様の装置もしくは特定用途向け集積回路(ASIC)として実施することができる。
代替的に、VCS130の機能を、処理装置またはメモリシステムに統合してもよい。
また、コントローラ220を、メモリ230とインタフェースするように構成してもよい。
メモリ230を、VCS130のコンピュータプログラム実施形態のための記憶装置であるように構成することができる。
また、メモリ230を使用して、データ構造、たとえばテーブル、連結リスト等の格納域を設けることができる。
代替的に、別の実施形態では、データ構造をメモリシステム120に格納し維持することもできる。
別の実施形態では、メモリ230を、パーティションページテーブル250と、チェック値テーブル260と、フリーページプール270と、を格納するように構成してもよい。
パーティションページテーブル250は、VCS130のためのアドレス変換機構を提供してもよい。
詳細には、パーティションページテーブル250は、特定のパーティションに対し仮想アドレスを対応する実アドレスにマッピングし(またはリンクさせ)てもよい。
メモリシステム120に生成される各パーティションに対して、パーティションページテーブル250を生成し、管理する。
したがって、VCS130は、プロセッサインタフェース210を通して装置から仮想アドレスを受取ってもよい。
ここで、アドレスは、データと、パーティションインジケータと、仮想アドレスと、を有する。
VCS130は、パーティションインジケータを使用して適当なパーティションページテーブルを選択してもよく、その後仮想アドレスを使用して対応する実アドレスを確定してもよい。
そして、VCS130は、実アドレスを、メモリインタフェース240を通してメモリシステム120に転送してもよい。
図3は、実施形態による図2に示すパーティションページテーブル250を示す。
当業者には、図3に示すパーティションページテーブル250が、一般化した概略図を表し、他のフィールドを追加してもよくあるいは既存のフィールドを取除くかまたは変更してもよい、ということが容易に明らかとなるはずである。
図示するように、パーティションページテーブル250は、仮想アドレスフィールド305と、実アドレスフィールド310と、アドレス有効フィールド315と、次テーブルエントリフィールド320と、コピーカウンタフィールド325と、コピー禁止フィールド330と、共有インジケータフィールド335と、を含む。
仮想アドレスフィールド305は、パーティションによって使用されるメモリのページの仮想アドレスを格納してもよい。
パーティションページテーブル250を、仮想アドレスフィールド305の値によってインデックス付けしてもよい。
例として、ページパーティションテーブル250を連想メモリを用いて実施することができる、それによりいかなる整合値の迅速な指示も可能となる。
実アドレスフィールド310は、メモリシステム120における対応する実アドレスを格納してもよい。
アドレス有効フィールド315の値は、仮想アドレスに対して実アドレスが有効であるか否かの指示を提供してもよい。
次テーブルエントリフィールド320の値は、対応する実アドレスを共有する仮想アドレスが他にあるか否かの指示を提供してもよい。
コピーカウンタフィールド325の値は、実アドレスを共有する仮想アドレスの指示を提供してもよい。
コピー禁止フィールド330の値は、実アドレスが共有されるものであるか否かの指示を提供してもよい。
ページテーブル(または他のいずれか)に、ページを共有する仮想アドレスのすべて(ページテーブルエントリにおける)を特定する共有インジケータフィールド335が提供される場合、コピー禁止フィールド330が必要となる場合がある。
図2に戻ると、チェック値テーブル260は、VCS130に対しメモリの単位、たとえばページを迅速に特定する機構を提供することができる。
詳細には、メモリの選択されたページのチェック値、たとえばチェックサム、ハッシュ値等を使用して、チェック値テーブルを検索してもよい。
たとえば、チェック値テーブル260を、選択されたページのチェックサムがチェック値テーブル260に対するインデックスとなるように構成してもよい。
代替的に、チェック値テーブル260を、チェック値から計算されるハッシュによってインデックス付けしてもよい。
チェック値テーブル260に整合チェックサムが見つかった場合、VCS130は、選択されたページを整合ページと比較してもよい。
ページが同一である場合、VCS130は、整合ページの対応する実アドレスにより選択されたページのパーティションページテーブルを更新する。
また、VCS130は、選択された物理ページの割付を解除するか、または参照を解除し、参照解除した物理ページを、メモリシステム120のためにメモリの入手可能なページのリストを維持するように構成されるフリーページプール270に戻してもよい。
図4は、実施形態による例示的なチェック値テーブル260を示す。
当業者には、図4に示すチェック値テーブル260が一般化された概略図を表し、他のフィールドを追加してもよく、あるいは既存のフィールドを取除くかまたは変更してもよい、ということが容易に明らかとなるはずである。
図4に示すように、チェック値テーブル260は、チェック値フィールド405と、次要素フィールド410と、実アドレスフィールド415と、を含む。
チェック値フィールド405は、メモリにおけるメモリの対応するアクティブなページの各々に対するチェック値を格納してもよい。
チェック値を、チェックサムアルゴリズム、ハッシングアルゴリズムまたは他の同様の技法を使用して生成してもよい。
他の実施形態では、VCS130は、外部ソースからのチェック値を使用してもよい。
例として、VCS130は、VCS130を実行しているシステムによって受取られるデータのパケットの送信に関連するCRC値を使用してもよい。
別の例として、VCS130は、大容量記憶装置にデータを書込んでいるディスクコントローラによって生成されるCRC値を使用してもよい。
次要素フィールド410は、チェック値テーブル260における、同じチェック値を共有する別のエントリの指示を提供してもよい。
場合によっては、メモリの2つの異なるページが、同一のハッシュ値を生成する可能性がある。
したがって、検索時間を削減するために、チェック値テーブル260は、同じハッシュ値を有する他のエントリの指示を提供する。
実アドレスフィールド415は、チェック値に関連する対応する実アドレスを提供してもよい。
図5は、さらに別の実施形態による、図2に示すVCS130のコントローラ220に対する読出しモード500の例示的なフローチャートを示す。
当業者には、読出しモード500が一般化された図を表し、他のステップを追加してもよくもしくは既存のステップを取除くかまたは変更することができる、ということが容易に明らかとなるはずである。
図5に示すように、ステップ505において、VCS130のコントローラ220を、アイドル状態にあるように構成する。
ステップ510において、コントローラ220は、プロセッサインタフェース210から読出し要求を受取る。
読出し要求は、データと、パーティション指定と、そのパーティション内のアドレス、すなわち仮想アドレスと、からなる。
ステップ515において、コントローラ220は、パーティション指定を使用して適当なパーティションページテーブルを選択する。
次に、ステップ520において、コントローラ220は、仮想アドレスを使用して、選択されたパーティションページテーブルを検索することにより実アドレスを確定する。
ステップ525において実アドレスが見つかると、コントローラ220は、ステップ530において、実アドレスを、メモリインタフェース220を通してメモリシステム120に転送する。
その後、コントローラ220は、ステップ505のアイドル状態に戻る。
そうでない場合、コントローラ220は、ステップ535においてエラーメッセージをプロセッサインタフェース210を通して要求側プロセッサに返し、その後ステップ505のアイドル状態に戻る。
図6Aおよび図6Bは、あわせて、別の実施形態による図2に示すVCS130のコントローラ220に対する書込みモード600の例示的なフローチャートを示す。
当業者には、書込みモード600が一般化された図を表し、他のステップを追加してもよくあるいは既存のステップを取除くかまたは変更してもよい、ということが容易に明らかとなるはずである。
図6に示すように、ステップ605において、VCS120のコントローラ220を、アイドル状態にあるように構成する。
ステップ610において、コントローラ220は、装置110からのメモリシステム120に対する書込み要求をプロセッサインタフェース210を通して受取る(またはインタセプトする)。
ステップ615において、コントローラ220は、受取った書込み要求からパーティションページテーブルを確定する。
次に、ステップ620において、書込み要求に関連する仮想アドレスを、選択されたパーティションページテーブル(たとえば、図3に示すパーティションページテーブル260)へのインデックスとして使用する。
ステップ625において、コントローラ220は、要求された仮想アドレスに対して実アドレスが存在するか否かを判断する。
コントローラ220は、関連する実アドレスが存在しないと判断した場合、ステップ630において、フリーページプール270に対しメモリのページを要求することができる。
ステップ635において、コントローラ220は、メモリシステム120によって格納されるために、要求されたページに対し受取ったデータを転送する。
メモリシステム120は、要求されたページの実アドレスすなわち物理アドレスを返す。
ステップ640において、コントローラ220は、選択されたパーティションのページパーティションテーブルを、要求されたページの実アドレスによって更新する。
また、コントローラ220は、要求されたページに対するチェック値(たとえば、チェックサムまたはハッシュ値)を生成してもよく、要求されたページの実アドレスおよび関連するチェック値とともに仮想アドレスによりチェック値テーブルを更新してもよい。
その後、コントローラ220は、ステップ605のアイドル状態に戻る。
任意に、ステップ645において、コントローラ220は、メモリシステム120を仮想的に圧縮するためにコントローラ220に対し最適化モードを開始する。
コントローラに対する最適化モードのさらなる詳細は、図7Aおよび図7Bに関して後述する。
その後、コントローラ220は、ステップ605のアイドル状態に戻る。
図6Bを参照すると、コントローラ220は、要求された仮想アドレスに対して実アドレスが存在すると判断した場合、ステップ650において、要求されたページに対してコピー禁止フィールド330が設定されているか否かを判断する。
コピー禁止ビットが設定されている場合、コントローラ220は、ステップ655において、ページパーティションテーブルを要求された仮想アドレスによって検索することにより、要求されたページの実アドレスを検索することができる。
ステップ660において、要求されたデータは、メモリシステム120に対する実アドレスとともにメモリシステム120に転送される。
ステップ665において、コントローラ220は、要求されたデータに対するチェック値(たとえば、チェックサムまたはハッシュ値)を生成し、要求されたページの実アドレスおよび関連するチェック値とともに書込み要求の仮想アドレスによりチェック値テーブルを更新する。
代替的に、コントローラ220は、外部装置および/またはプロセスから生成されるチェック値を使用してもよい。
その後、コントローラ220は、ステップ645(図6Aに示す)に関して説明したようにメモリの最適化を行うことができる。
ステップ650に戻ると、コントローラ220は、コピー禁止フィールド330が設定されていないと判断した場合、ステップ670において、ページ、すなわちページの単一コピーの所有者により書込み要求が開始されるか否かを判断する。
実施形態では、コントローラ220は、パーティションページテーブル250の共有インジケータフィールド335(図2および図3に示す)にアクセスする。
コントローラ220は、ページの所有者が書込み要求を開始すると判断した場合、ステップ655の処理を開始する。
一方、コントローラ220は、要求されたページが共有されていると判断した場合、ステップ675において、フリーページプール270に対してメモリのページを要求する。
ステップ680において、コントローラ220は、整合ページの内容を要求されたページにコピーし、かつ書込み動作を実行するためにメモリシステム120に要求されたデータを転送することができる。
ステップ685において、コントローラ220は、選択されたパーティションのページパーティションテーブルを、要求されたページの実アドレスで更新する。
コントローラ220はまた、要求されたデータに対するチェック値(たとえば、チェックサムまたはハッシュ値)を生成し、要求されたページの実アドレスおよび関連するチェック値とともに書込み要求の仮想アドレスによりチェック値テーブルを更新する。
ステップ690において、コントローラ220は、整合ページを参照するページのページパーティションテーブルのコピーカウンタフィールド325をデクリメントする。
その後、コントローラ220は、ステップ645(図6Aに示す)のメモリ最適化に対する処理を開始する。
図7Aおよび図7Bは、あわせて、図2に示すVCS130のコントローラ220のための最適化モード700の例示的なフローチャートを示す。
当業者には、最適化モード700が一般化された図を表し、他のステップを追加してもよくもしくは既存のステップを取除いても変更してもよい、ということが容易に明らかとなるはずである。
図7Aに示すように、ステップ705において、コントローラ220を、アイドル状態にあるように構成される。
ステップ710において、コントローラ220は、最適化モード700の呼出しを検出する。
最適化モード500を、周期的にまたは書込み要求の終結等のイベントにより呼出す。
ステップ715において、コントローラ220を、ページを選択してメモリシステム120に同一ページがあるか否かを判断するように構成する。
詳細には、コントローラ220は、変更された未処理ページのすべてまたはサブセットを処理する。
コントローラ220は、選択されたページのチェック値を使用してチェック値テーブル260を検索する。
選択されたページのチェック値とテーブルのチェック値との間に整合がない場合、ステップ725において、コントローラ220は、最適化モード700が完了したか否かを判断する。
最後のページが選択されていない場合、コントローラ220はステップ715の処理に戻る。
そうでない場合、コントローラは、ステップ705のアイドル状態に戻る。
代替的に、新たなメモリ動作が受取られると、最適化を中断する。
一実施形態では、コントローラ220は、ページを、そのページに対して書込み動作が実行されることに基づいて選択する。
本発明の別の実施形態では、コントローラ220は、ページを、チェック値テーブル260のその位置により逐次選択する。
選択プロセスを最適化するページを選択するための他の技法は、本発明の範囲内にある。
ステップ720に戻ると、選択されたページのチェック値とテーブルのチェック値との間に整合がある場合、ステップ730において、コントローラ220は、選択されたページの内容と整合ページの内容とを比較する。
ステップ735において、コントローラ220は、ステップ730における比較に基づいて、選択されたページと整合ページとが同一であるか否かの判断を行う。
選択されたページと整合ページとが同一でない場合、ステップ740において、コントローラ220は、チェック値テーブル260の整合ページの次要素フィールド410がエントリを含むか否かを判断する。
詳細には、異なるメモリ内容を含む2つのページが同じチェック値(たとえば、ハッシュ値)を有する場合がある。
検索時間を削減するために、チェック値テーブル260は、2つの異なるページをリンクさせてもよい。
整合ページの次要素フィールド410がエントリを含まない場合、コントローラ220は、上述したようにステップ725の処理を開始する。
そうでない場合、ステップ745において、コントローラ220は、選択されたページの内容と次要素フィールド410の値によって指示されるページの内容とを比較する。
その後、コントローラ220はステップ735の処理に戻る。
コントローラ220は、ステップ735において、選択されたページと整合ページとが同一であると判断した場合、ステップ750において、整合ページに対してコピー禁止ビットが設定されているか否かを判断する。
コピー禁止ビットが設定されている場合、コントローラ220はステップ725の処理に戻る。
そうでない場合、図7Bに関して、コントローラ220は、ステップ755において適当なテーブルを更新する。
詳細には、コントローラ220は、チェック値テーブル260の整合ページの実アドレスにより、選択されたページの実アドレスフィールド415を更新する。
また、コントローラ220は、選択されたページのページパーティションテーブルを整合ページの実アドレスで更新し、アドレス有効フィールド315をアドレスが有効であるとマークする。
さらにコントローラ220は、コピーカウンタフィールド325をインクリメントすることにより、整合ページのページパーティションテーブルを更新する。
ステップ760において、コントローラ220は、選択されたページの参照を解除するか、または割付を解除して、ステップ765において、参照解除したページをフリーページプール270に返す。
図8A〜図8Cは、それぞれ、あらゆる実施形態を実行してもよい例示的なシステムを示す。
図8Aに示すように、VCS130を、ディスク記憶システム(またはプラットフォーム)800に統合することができる。
大容量記憶システム800は、ディスクコントローラ805と少なくとも1つのディスク810とを有する。
ディスクコントローラ805を、複数のパーティションをマッピングするように構成することができ、各パーティションは、それぞれのユーザ/装置に対するソフトウェアアプリケーションおよび/またはデータを記憶するためのものである。
VCS130は、パーティション間で共通データの単一インスタンスを共有することにより、ソフトウェアアプリケーションおよび/またはデータの格納を最適化することができる。
すなわち、ディスク記憶システム800の仮想圧縮である。
図8Bは、実施形態を実行してもよいキャッシュシステム820のブロック図を示す。
キャッシュシステム820は、キャッシュコントローラ830とキャッシュメモリ840とを有する。
キャッシュコントローラ830を、複数のパーティションにキャッシュサービスを提供するように構成し、そこで各パーティションは命令および/またはデータを格納することができる。
VCS130の実施形態を利用することにより複数のパーティション間で共通の命令および/またはデータの単一インスタンスを共有することにより、キャッシュメモリ840の記憶スペースを最適化することができる。
図8Cは、実施形態を実行してもよいコンピュータシステム850のブロック図を示す。
コンピュータシステム850は、中央処理装置(CPU)860と、メモリ870と、を有する。
CPU860を、複数のパーティションを実行するように構成してもよく、そこで各パーティションは命令および/またはデータを格納してもよい。
VCS130の実施形態を利用することにより複数のパーティション間で共通の命令および/またはデータの単一インスタンスを共有することによって、メモリ870の記憶スペースを最適化することができる。
コンピュータシステム850を、パーソナルコンピュータ、ワークステーションプラットフォーム、サーバプラットフォームまたは他の同様のコンピューティングプラットフォームを用いて実施することができる。
実施形態によっては、コンピュータプログラムとして実行してもよい。
コンピュータプログラムは、アクティブと非アクティブとの両方の種々の形態で存在してもよい。
たとえば、コンピュータプログラムは、ソースコード、オブジェクトコード、実行可能コードまたは他のフォーマットのプログラム命令からなるソフトウェアプログラム(複数可)、ファームウェアプログラム(複数可)またはハードウェア記述言語(HDL)ファイルとして存在することができる。
上記のいずれかを、圧縮または非圧縮形態で、記憶装置及び信号を含むコンピュータ読取可能媒体において具体化することができる。
例示的なコンピュータ読取可能記憶装置には、従来のコンピュータシステムRAM(ランダムアクセスメモリ)、ROM(リードオンリメモリ)、EPROM(消去可能プログラム可能ROM)、EEPROM(電気的消去可能プログラム可能ROM)および磁気ディスクまたは光ディスクまたはテープがある。
例示的なコンピュータ読取可能信号は、搬送波を使用して変調されるか否かに係らず、インターネットまたは他のネットワークを介してダウンロードされた信号を含む、本発明をホストまたは実行しているコンピュータシステムがアクセスするように構成されることが可能な信号である。
上述したものの具体的な実施例には、コンピュータプログラムの実行可能ソフトウェアプログラム(複数可)の、CD ROMでの、またはインターネットダウンロードを介する配布が含まれる。
ある意味では、インターネット自体は、抽象的なエンティティとして、コンピュータ読取可能媒体である。
概して、同じことがコンピュータネットワークに対しても当てはまる。
本発明をその例示的な実施形態に関して説明したが、当業者は、発明の真の精神および範囲から逸脱することなしに発明の説明した実施形態に対してあらゆる変更を行うことができるであろう。
本明細書で使用する用語および説明は、単に例示として示すものであり、限定として意味するものではない。
特に、本発明の方法を実施例によって説明したが、本方法のステップを、例示したものと異なる順序で、または同時に実行してもよい。
当業者は、これらおよび他の変形形態が、添付の特許請求の範囲とそれらの等価物とにおいて定義されるような本発明の精神および範囲内にあり得る、ということを認めるであろう。
本発明は、メモリシステムの管理のために利用可能である。
実施形態を実行し得るシステムの例示的なブロック図である。 実施形態の詳細なブロック図である。 別の実施形態によるページパーティションページテーブルの図である。 実施形態によって利用されるチェック値テーブルの図である。 実施形態による読出し方法の例示的なフローチャートである。 図6Aおよび図6Bに対するキーの図である。 実施形態による書込みモードの例示的なフローチャートである。 実施形態による書込みモードの例示的なフローチャートである。 図7Aおよび図7Bに対するキーの図である。 実施形態による最適化モードの例示的なフローチャートである。 実施形態による最適化モードの例示的なフローチャートである。 あらゆる実施形態のうちの1つの図である。 あらゆる実施形態のうちの1つの図である。 あらゆる実施形態のうちの1つの図である。
符号の説明
100・・・システム、
110・・・処理複合体、
120・・・メモリシステム、
130・・・仮想圧縮システム(VCS)、
115・・・装置、
125・・・パーティション、
200・・・実施形態、
210・・・プロセッサインタフェース、
230・・・メモリ、
250・・・パーティションページテーブル、
260・・・チェック値テーブル、
270・・・フリーページプール、
210・・・プロセッサインタフェース、
220・・・コントローラ、
240・・・メモリインタフェース、
305・・・仮想アドレス、
310・・・実アドレス、
315・・・アドレス有効、
320・・・次テーブルエントリ、
325・・・コピーカウンタ、
330・・・コピー禁止、
335・・・共有インジケータ、
405・・・チェック値、
410・・・次要素、
415・・・実アドレス、
805・・・ディスクコントローラ、
810・・・ディスク、
830・・・キャッシュコントローラ、
840・・・キャッシュ、
870・・・メモリ、

Claims (10)

  1. メモリシステムを管理する方法であって、
    メモリの内容から複数のチェック値を生成すること(680)、
    所定のデータ構造において、該複数のチェック値の各チェック値を前記メモリシステムにおけるそれぞれのページに関連付けること(685)、および
    前記メモリシステムにおける要求ページと同一の内容を有する候補ページを前記データ構造の中で検索すること(715)であって、前記要求ページのチェック値を使用して前記データ構造の中で検索するようにする、検索すること
    を含むメモリシステムを管理する方法。
  2. 前記要求ページの前記チェック値が前記候補ページの関連するチェック値と整合することに応じて、バイト単位で前記要求ページを前記候補ページと比較すること(730)
    をさらに含む請求項1記載のメモリシステムを管理する方法。
  3. 前記要求ページの前記内容と前記候補ページの前記内容とが同一であることに応じて、前記要求ページと前記候補ページとを連結すること(760)
    をさらに含む請求項2記載のメモリシステムを管理する方法。
  4. 前記チェック値はチェックサム値かまたはハッシュ値である
    請求項1〜3のいずれかに記載のメモリシステムを管理する方法。
  5. 前記メモリシステムにおいて、前記データ構造の中で候補ページを検索することを周期的に呼出す
    請求項1〜4のいずれかに記載のメモリシステムを管理する方法。
  6. メモリを管理する方法であって、
    選択されたページの内容から計算されるチェック値を前記メモリの複数のページのそれぞれのチェック値と比較すること(715)、
    整合ページを、前記チェック値と前記整合ページのそれぞれのチェック値とが等しいことに応じて選択すること(720)、
    前記選択されたページと前記整合ページとを比較すること(730)、および
    前記選択されたページと前記整合ページとの内容が同一であることに応じて、前記選択されたページと前記整合ページとのうちの一方の仮想アドレスを前記選択されたページと前記整合ページとのうちの他方の物理アドレスにリダイレクトすること(755)
    を含むメモリを管理する方法。
  7. メモリサブシステムに対するアクセスを管理する装置であって、
    複数のプロセッサ用の記憶域を設けるように適合されたメモリシステム(120)と、
    該メモリシステムを、各々が前記複数のプロセッサのうちのプロセッサのそれぞれのサブセットに割当てられる複数のパーティション(125a…n)に分割するように構成され、また、プロセッサの前記サブセットのうちの選択されたプロセッサから仮想アドレスを受取り、パーティションを識別し、前記仮想アドレスを、前記選択されたプロセッサのそれぞれのパーティション内の実アドレスに変換するようにも構成された、仮想圧縮システム(VCS、130)と
    を具備するメモリサブシステムに対するアクセスを管理する装置。
  8. 前記複数のパーティションによってアクセス可能でない前記メモリの利用可能ページのリストを設けるように構成されたフリーページプール(270)
    をさらに含む請求項7記載のメモリサブシステムに対するアクセスを管理する装置。
  9. 前記メモリシステムのページを前記複数のパーティションのそれぞれのページに関連付けるように構成されたグローバルテーブル(260)
    をさらに含む請求項7または8に記載のメモリサブシステムに対するアクセスを管理する装置。
  10. フレームページテーブルであって、該フレームページテーブルにそれぞれのエントリを有する前記メモリシステムの前記複数のページの各ページに対して構成され、前記フレームページテーブルの各エントリが、該それぞれのエントリが前記複数のパーティションのうちの複数のパーティション間で共有されるということを示すように構成された参照カウンタを含む、フレームページテーブル(250)
    をさらに含む請求項7〜9のいずれかに記載のメモリサブシステムに対するアクセスを管理する装置。
JP2003375096A 2002-11-15 2003-11-05 メモリシステムを管理する方法および装置 Withdrawn JP2004171547A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/294,718 US20040098544A1 (en) 2002-11-15 2002-11-15 Method and apparatus for managing a memory system

Publications (1)

Publication Number Publication Date
JP2004171547A true JP2004171547A (ja) 2004-06-17

Family

ID=32297031

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003375096A Withdrawn JP2004171547A (ja) 2002-11-15 2003-11-05 メモリシステムを管理する方法および装置

Country Status (3)

Country Link
US (1) US20040098544A1 (ja)
JP (1) JP2004171547A (ja)
DE (1) DE10338031A1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6848034B2 (en) * 2002-04-04 2005-01-25 International Business Machines Corporation Dense server environment that shares an IDE drive
US7680833B1 (en) * 2002-11-22 2010-03-16 Bmc Software, Inc. System and method for database structure comparison
US7900017B2 (en) 2002-12-27 2011-03-01 Intel Corporation Mechanism for remapping post virtual machine memory pages
US7467381B2 (en) * 2003-12-16 2008-12-16 Intel Corporation Resource partitioning and direct access utilizing hardware support for virtualization
US7904678B1 (en) * 2004-02-27 2011-03-08 Symantec Operating Corporation Technique for recovering mirror consistency in cooperative virtual storage
CN100478916C (zh) * 2004-09-24 2009-04-15 上海贝尔阿尔卡特股份有限公司 内存管理系统及方法
US20060288130A1 (en) 2005-06-21 2006-12-21 Rajesh Madukkarumukumana Address window support for direct memory access translation
US7472252B2 (en) * 2005-08-15 2008-12-30 Microsoft Corporation Merging identical memory pages
US7890669B2 (en) * 2005-11-25 2011-02-15 Hitachi, Ltd. Computer system for sharing I/O device
US8526049B2 (en) * 2006-03-31 2013-09-03 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for display list management
US8447936B2 (en) * 2006-06-30 2013-05-21 Microsoft Corporation Module state management in a virtual machine environment
US8214828B2 (en) * 2006-06-30 2012-07-03 Microsoft Corporation Module state management in a virtual machine environment
KR101490327B1 (ko) 2006-12-06 2015-02-05 퓨전-아이오, 인크. 뱅크 인터리브를 이용한 솔리드-스테이트 스토리지의 명령 관리 장치, 시스템 및 방법
US8161353B2 (en) 2007-12-06 2012-04-17 Fusion-Io, Inc. Apparatus, system, and method for validating that a correct data segment is read from a data storage device
US8151082B2 (en) * 2007-12-06 2012-04-03 Fusion-Io, Inc. Apparatus, system, and method for converting a storage request into an append data storage command
US7685401B2 (en) * 2006-12-27 2010-03-23 Intel Corporation Guest to host address translation for devices to access memory in a partitioned system
US8782371B2 (en) 2008-03-31 2014-07-15 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for memory management for rasterization
US8234655B2 (en) 2008-07-29 2012-07-31 International Business Machines Corporation Detection of duplicate memory pages across guest operating systems on a shared host
US8817032B2 (en) * 2008-08-29 2014-08-26 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for framebuffer management
US8854680B2 (en) * 2008-09-11 2014-10-07 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for optimal memory allocation units
US8861014B2 (en) * 2008-09-30 2014-10-14 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for optimized printer throughput in a multi-core environment
US8924961B2 (en) * 2008-10-29 2014-12-30 Dell Products L.P. Virtual machine scheduling methods and systems
US8706947B1 (en) * 2010-09-30 2014-04-22 Amazon Technologies, Inc. Virtual machine memory page sharing system
US8499114B1 (en) 2010-09-30 2013-07-30 Amazon Technologies, Inc. Virtual machine memory page sharing system
US9069477B1 (en) * 2011-06-16 2015-06-30 Amazon Technologies, Inc. Reuse of dynamically allocated memory
US9043612B2 (en) * 2013-03-12 2015-05-26 International Business Machines Coropration Protecting visible data during computerized process usage
US10025702B1 (en) * 2014-12-10 2018-07-17 Amazon Technologies, Inc. Browser capable of saving and restoring content item state

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6856320B1 (en) * 1997-11-25 2005-02-15 Nvidia U.S. Investment Company Demand-based memory system for graphics applications
US6330709B1 (en) * 1998-03-30 2001-12-11 International Business Machines Corporation Virtual machine implementation for shared persistent objects
US6219772B1 (en) * 1998-08-11 2001-04-17 Autodesk, Inc. Method for efficient memory allocation of small data blocks
US6594665B1 (en) * 2000-02-18 2003-07-15 Intel Corporation Storing hashed values of data in media to allow faster searches and comparison of data
US6789156B1 (en) * 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units

Also Published As

Publication number Publication date
DE10338031A1 (de) 2004-06-03
US20040098544A1 (en) 2004-05-20

Similar Documents

Publication Publication Date Title
JP2004171547A (ja) メモリシステムを管理する方法および装置
JP4372671B2 (ja) 時間的に近接して記憶システムに書き込まれたデータユニットを示すコンテンツアドレスの生成方法およびその装置
US7162571B2 (en) Methods and apparatus for parsing a content address to facilitate selection of a physical storage location in a data storage system
US8074047B2 (en) System and method for content replication detection and elimination in main memory
KR101786871B1 (ko) 원격 페이지 폴트 처리 장치 및 그 방법
US7263576B2 (en) Methods and apparatus for facilitating access to content in a data storage system
US7472253B1 (en) System and method for managing table lookaside buffer performance
US7493465B2 (en) Method and system for extended memory with user mode input/output operations
US5991847A (en) Data pattern caching for speeding up write operations
US8095772B2 (en) Large memory pages for shared libraries
US7290114B2 (en) Sharing data in a user virtual address range with a kernel virtual address range
US20100205344A1 (en) Unified cache structure that facilitates accessing translation table entries
US20070156763A1 (en) Storage management system and method thereof
US7159070B2 (en) Methods and apparatus for caching a location index in a data storage system
US20160253267A1 (en) Systems and Methods for Storage of Data in a Virtual Storage Device
US7529906B2 (en) Sharing memory within an application using scalable hardware resources
CN113032335A (zh) 文件访问方法、装置、设备及存储介质
US7500073B1 (en) Relocation of virtual-to-physical mappings
US20080229333A1 (en) Method, System And Storage Medium For Implementing A Message Board Cache System
US7549035B1 (en) System and method for reference and modification tracking
US20130198230A1 (en) Information processing apparatus, distributed processing system, and distributed processing method
US20170286010A1 (en) Method and apparatus for enabling larger memory capacity than physical memory size
US11625179B2 (en) Cache indexing using data addresses based on data fingerprints
CN116680233A (zh) 一种文件访问方法、系统、电子设备及机器可读存储介质
US7444636B2 (en) Method and system of determining attributes of a functional unit in a multiple processor computer system

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20070109