JP3808058B2 - Apparatus for allowing a plurality of hosts to share a set of memory sectors storing compressed data - Google Patents

Apparatus for allowing a plurality of hosts to share a set of memory sectors storing compressed data Download PDF

Info

Publication number
JP3808058B2
JP3808058B2 JP2003149410A JP2003149410A JP3808058B2 JP 3808058 B2 JP3808058 B2 JP 3808058B2 JP 2003149410 A JP2003149410 A JP 2003149410A JP 2003149410 A JP2003149410 A JP 2003149410A JP 3808058 B2 JP3808058 B2 JP 3808058B2
Authority
JP
Japan
Prior art keywords
host
memory
address
segment
real address
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
JP2003149410A
Other languages
Japanese (ja)
Other versions
JP2004355124A (en
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2003149410A priority Critical patent/JP3808058B2/en
Publication of JP2004355124A publication Critical patent/JP2004355124A/en
Application granted granted Critical
Publication of JP3808058B2 publication Critical patent/JP3808058B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)
  • Memory System (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータ・アーキテクチャに関し、より具体的には、複数のホストがメモリ・セクタの集合を共用できるようにし、そのメモリ・セクタを使用して圧縮データを記憶するネットワーク接続装置に関する。この装置は、以下、「直接アドレス指定共用圧縮メモリ・システム」(SCMS)と呼ぶ。
【0002】
本発明は、ホストによって生成された実アドレスをSCMSによって管理される実アドレスに変換するための方法であって、次にその実アドレスが圧縮メモリ管理システムによって物理アドレスに変換される方法と、メモリ内容保護を確実にするための方法と、種々のホスト間でメモリの内容を共用するためのメカニズムと、複数のSCMSにわたって1つのホストの実アドレス空間の連続部分を分散させるための方法と、各ホストに対して所与の数のメモリ・セクタを保証できることを確実にするための方法とを含む。
【0003】
【従来の技術】
コンピュータ編成において新たに発展したものの1つは、コンピュータ・システムのメイン・メモリでデータ圧縮を使用することである。実メモリ、すなわち、メモリに記憶されたデータに対応する1組のプロセッサ・アドレスは、通常、固定数の連続プロセッサ・アドレスに対応する、いくつかのペアワイズ・ディスジョイント・セグメントに分割される。ペアワイズ・ディスジョイントにより、各実アドレスがこのようなセグメントのうちの唯一無二のセグメントに属することになる。このようなセグメントはメモリ・ラインと呼ぶ。メモリ・ラインは圧縮の単位である。圧縮メモリに記憶されたメモリ・ラインは圧縮され、可変数の記憶場所に記憶され、その数はその内容がどの程度十分に圧縮しているかによって決まる。インターナショナル・ビジネス・マシン(IBM)コーポレーションでは、メイン・メモリの内容が圧縮されるコンピュータ・システムに関するいくつかの特許を有する。このようなシステムの例は、1998年3月17日にFranaszek他に交付され、「Parallel compression and decompression using a cooperative dictionary」という名称の米国特許第5729228号、1998年6月2日にFranaszekに交付され、「Systemand method for reducing memory fragmentation by assigning remainders to sharememory blocks on a best fit basis」という名称の米国特許第5761536号、1999年1月26日にFranaszekに交付され、「Systemand method of compression and decompression using store addressing」という名称の米国特許第5864859号に開示されている。
【0004】
図1は、このようなデータ圧縮機能を有する例示的なシステムを示している。図1の中央演算処理装置(CPU)102は、1つまたは複数のキャッシュ104にデータを読み込み、そこからデータを書き出す。キャッシュ・ミスおよびストアの結果、圧縮コントローラ106により圧縮メイン・メモリ110からの読取りおよびそこへの書込みが行われる。圧縮メイン・メモリ110は、データ部分108とディレクトリ107(圧縮変換テーブルCTTとしても知られている)という2つの部分に分割される。データ部分108は、ペアワイズ・ディスジョイント・セクタ、すなわち、固定サイズ間隔の物理的記憶場所に分割される。たとえば、1つのセクタは、連続物理アドレスを有する256の物理バイトから構成される可能性がある。1つの圧縮メモリ・ラインの内容は、可能な最小数の物理セクタに記憶される。1つの圧縮ラインを含む物理セクタは、連続物理アドレスを有する必要がなく、圧縮メイン・メモリ110のデータ部分108内のどこにでも位置することができる。1つのバイトの実アドレスとそれを含む物理セクタのアドレスとの変換は、ディレクトリまたはCTT107を介して実行される。
【0005】
図2は、圧縮メモリ210の動作をより十分に理解するためにさらに詳細を含んでいる。プロセッサ・キャッシュ240は、未圧縮キャッシュ・ライン241とキャッシュ・ディレクトリ242とを含み、そのキャッシュ・ディレクトリは各キャッシュ・ラインの実アドレスを記憶する。例示のため、1つのキャッシュ・ラインは1つのメモリ・ライン(圧縮の単位)と同じサイズを有するものと想定する。キャッシュ・ミスが発生すると、そのミスを引き起こした実アドレス270を提供することにより、キャッシュは対応するラインをメモリから要求する。この実アドレスは、log2()が2を底とする対数である場合にそのライン内のアドレスのオフセットであるlog2(ライン長)個の最下位ビットと、サポートされる実アドレス範囲の各ラインごとに1つのライン項目を含むディレクトリ220内のインデックスとして使用する残りのビットという2つの部分に分割される。図2のアドレスA1(271)はライン項目1(221)に対応し、アドレスA2(272)はライン項目2(222)に対応し、アドレスA3(273)はライン項目3(513)に対応し、アドレスA4(274)はライン項目4(514)に対応する。圧縮メイン・メモリに圧縮データを記憶するための種々の方法を示すために、この例では種々のアドレスを使用する。この例では、アドレスA1を有するラインが非常に十分に圧縮している(たとえば、すべてゼロから構成されるライン)。このようなラインはCTT項目221に完全に記憶され、メモリ・セクタを必要としない。アドレスA2のラインはあまり十分に圧縮しておらず、2つのメモリ・セクタ231および232を必要とし、これらはデータ・セクション230に記憶される。ライン項目222は、メモリ・セクタ231および232を指すポインタを含む。メモリ・セクタ232の最後の部分は未使用であることに留意されたい。アドレスA3を有するラインは、3つのメモリ・セクタ233、234、235を必要とする。セクタ235内に未使用のまま残っている空間は、実アドレスA4を有する圧縮ラインの部分を記憶するのに十分な長さであり、次にそれがセクタ236と、235の一部とを使用する。アドレスA4およびA3のラインはルームメートと呼ばれる。
【0006】
圧縮器261は、キャッシュ内のダーティ・ラインをメモリにライトバックするときに使用する。キャッシュ・ライトバックが行われると、ダーティ・ラインは圧縮される。それがライトバック以前に使用していたのと同じ量のメモリに収まる場合、それは所定の位置に記憶される。そうではない場合、それは適切な数のセクタに書き込まれる。必要なセクタの数が減少した場合、未使用セクタはフリーセクタ・リストに追加される。必要なセクタの数が増加した場合、それらはフリーセクタ・リストから取り出される。
【0007】
図3は、ディレクトリまたはCTT220内の項目について可能な編成を示している。3通りのライン編成を例示する。項目1(306)は、1組のフラグ(301)と、4つのセクタのアドレスとを含む。ライン・サイズが1024バイトであり、メモリ・セクタ・サイズが256である場合、そのラインは多くても4つのセクタを必要とする。項目2(307)は、1組のフラグと、そのラインが使用する最初のセクタのアドレスと、圧縮ラインの先頭と、そのラインが使用する最後のセクタのアドレスとを含む。そのラインが3つ以上のメモリ・セクタを必要とする場合、そのセクタはポインタのリンク・リストによって接続される(すなわち、各メモリ・セクタは次のセクタのアドレスを含む)。項目3は、1組のフラグと、120ビット以下に圧縮している高圧縮ラインとを含む。この例のフラグは、そのラインが圧縮フォーマットで記憶されているかまたは未圧縮であるかを示すフラグ302と、そのラインが高圧縮性であり、そのディレクトリ項目に完全に記憶されるかどうかを示すフラグ303と、そのラインがいくつのセクタを使用するかを示すフラグ304(2ビット)と、フラグメント情報、すなわち、最後に使用するセクタのどの部分がそのラインによって占有されるか(この情報はルームメート化に使用する)を含むフラグ305(4ビット)にすることができる。上記の圧縮メモリ編成に依拠するメモリ圧縮を備えたシステムで達成可能な最大圧縮比はディレクトリのサイズによって決まり、すなわち、実アドレスの最大数はそのディレクトリ内のディレクトリ項目の数に等しくなる。
【0008】
関連分野では、たとえば、「Partitioned multiprocessor programming system」という名称の米国特許第4564903号においてR.R.Guyette他により、未圧縮メモリを区分化するための方法が教示されている。この特許は、主記憶装置(MS)を共用する複数のCPUと、複数の入出力装置をMSに接続するための入出力処理手段とを有するマルチプロセッサ(MP)システムのための制御方法を教示するものであり、この制御方法により、MPは、ユニプロセッサ・プログラミング・システム(UPSが同じアーキテクチャまたはMPとは異なるアーキテクチャを有するユニプロセッサ(UP)システム上でのみ実行するように設計されていても、MP内の複数のCPU上で同時にUSを実行することができる。この特許は、MPシステム内に含まれる非圧縮メモリのための装置および方法を教示するものである。しかし、MPシステムの一部ではない圧縮メモリのための装置および方法や、種々のコンピュータ・システムによって共用され、それらのコンピュータ・システムのいずれの一部でもない圧縮メモリのための装置および方法を教示するものではない。
【0009】
区分化については、たとえば、1989年6月27日にG.H.Bean他に交付され、「Logical resource partitioning of a data processing system」という名称の米国特許第4843541号にも教示されている。この特許は、データ処理システム内のゲスト操作をゲストに割り当てられたシステム・リソースに制限する方法を教示するものであり、システム内のリソースとしては、1つまたは複数の実CPUと、システム主記憶装置(MS)と、任意選択のシステム拡張記憶装置(ES)と、それぞれの入出力装置を備えた複数の入出力装置制御ユニットをシステムに接続するために入出力プロセッサを使用する複数の入出力チャネルと、ソフトウェアを含むホスト・ハイパーバイザ(ホスト)であって、同時かつ独立してシステム内で動作可能な複数のソフトウェア制御プログラム(ゲスト)を監視し、ゲストが同じタイプまたは種々のタイプの制御プログラムにすることができるホストと、ホストおよびゲストへの入出力装置を表すためのサブチャネル(SCH)とを含み、各ゲストが割り当てられたサブセット(区分)のシステム・リソースに制限される。しかし、この特許は、種々のホスト間でネットワーク接続圧縮メモリを共用することを教示するものではない。
【0010】
当技術分野で教示されている区分化は、コンピュータ上で実行されるソフトウェア・コンポーネントが認識する実アドレスをコンピュータが管理する実アドレスに変換するための方法を具備する。このようなソフトウェア・コンポーネントは、同じオペレーティング・システムまたは種々のオペレーティング・システムの複数のイメージにすることができ、したがって、論理/実アドレス変換を実行することができる。区分化では、このようなソフトウェア・コンポーネントが生成する実アドレスを論理アドレスとして扱い、後続の論理/実変換を実行する。ハードウェアがメモリ圧縮をサポートしていない場合、実アドレスは物理アドレスと同等のものである。しかし、メモリが圧縮されている場合、実アドレスは物理アドレスと同等のものではなく、後続の変換が必要である。従来の区分化は、特定の区分で実行されるソフトウェア・コンポーネントが他の区分で実行されるソフトウェア・コンポーネントのメモリの内容にアクセスするのを防止する保護メカニズムも含む。
【0011】
しかし、当技術分野で教示されている区分化は、データを使用するソフトウェア・コンポーネントが実行されるコンピュータ・システムから物理的に分離した装置内でメモリ・リソースを共用する方法ならびにセキュリティ・メカニズムに対処するものではなく、したがって、共用およびセキュリティ・メカニズムはコンピュータ・システムによって制御されず、実際にはこのようなコンピュータ・システムにとって透過になる。
【0012】
【発明が解決しようとする課題】
本発明は、複数のホストがネットワークにより接続されるコンピュータ・システムにおいて、同じくネットワークに接続され、ホストの論理実メモリを拡張し、そのメモリの内容を圧縮形式で維持する機能を提供するネットワーク接続装置を提供する。本発明のネットワーク接続装置は、直接アドレス指定共用圧縮メモリ・システム(以下、SCMSと呼ぶ)である。SCMSは、その内部実メモリ空間をセグメントと呼ばれる隣接実アドレス範囲に分割し、その物理メモリをセクタと呼ばれる隣接物理アドレス範囲の共通プールに分割する。ホストは、このようなデバイスからのセグメントを割り振り、その内部メモリをアドレス指定するように、すなわち、実アドレスによりその内容をアドレス指定することができる。SCMSは、ホストが提供するメモリ・アドレスを内部実アドレスに変換し、その実アドレスは、圧縮メモリ・ディレクトリ(CTT)によって、圧縮データが実際に記憶されるセクタの物理アドレスに変換される。セグメントは、可変数の物理セクタに動的に関連づけられる。1つのセグメント内に記憶されたデータの圧縮率が減少すると、そのセグメントに関連づけられた物理セクタの数が増加し、逆もまた同じである。本発明は、特に、共通プールからメモリ・セグメントへの物理セクタの割当てを管理するための装置および方法を提供するが、これはメモリ圧縮をサポートしていない同様のデバイスまたはメモリ圧縮をサポートしている通常のコンピュータにも存在しないものと思われる。
【0013】
【課題を解決するための手段】
本発明の一実施形態によれば、複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムにおいて、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにし、メモリ・セクタが圧縮データを記憶する装置が提供される。この装置は、装置を相互接続ネットワークに結合するためのネットワーク・アダプタと、メモリ・セクタの集合を記憶するためのメモリと、メモリを管理するための制御ロジックとを含み、制御ロジックはメモリ圧縮器/圧縮解除器を含む。メモリは、少なくとも1つのホストの実アドレスを装置内のアドレスに変換するためのディレクトリをさらに含む。
【0014】
他の実施形態では、この装置の制御ロジックはレジスタのマトリックスをさらに含み、マトリックスの各行はそれぞれ異なるホストIDに対応し、各列はそれぞれ異なるセグメント番号に対応し、それにより、少なくとも1つのホストのIDと所望のセグメントによって決定される特定のレジスタの内容は、結果的に装置の実アドレスになるオフセットに連結される。
【0015】
さらに他の実施形態では、この装置の制御ロジックはレジスタのアレイを含み、そのアレイは装置のいくつかのセグメントに対応するいくつかのレジスタを含み、各レジスタがサポートされる各ホストごとに1つのビットを具備し、それにより、その1つのビットが1に等しい場合に、所望のセグメントは結果的に装置の実アドレスになるオフセットに連結され、その1つのビットが0に等しい場合に、少なくとも1つのホストはそのセグメントへのアクセスを拒否される。
【0016】
本発明のさらに他の実施形態では、この装置の制御ロジックは、装置の各管理セグメントごとに1つの行を含み、第1の列がキーを含み、第2の列が値を含む連想メモリを含み、そのキーは所望のセグメントについて複数のホストが提供する開始実アドレスであり、その値は装置内のセグメントの開始実アドレスであり、それにより、少なくとも1つのホストの探索キーによって決定される値は、結果的に装置の実アドレスになるオフセットに連結される。
【0017】
他の実施形態によれば、相互接続ネットワークにより接続されるホストと、各装置がメモリ・セクタの集合を含む複数の装置とを含み、複数の装置が相互接続ネットワークに結合され、ホストが複数の装置間でメモリ・セクタの集合を共用できるようにし、メモリ・セクタが圧縮データを含む、コンピュータ・システムが提供される。ホストの実アドレスの連続サブセットが複数の装置にわたって分散される。
【0018】
本発明のさらに他の実施形態では、複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムであって、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにするための装置を含み、メモリ・セクタが圧縮データを記憶するコンピュータ・システムにおいて、各ホストが使用するいくつかのメモリ・セクタを管理するための方法が提供される。この方法は、各ホストに認可すべき最大数のセクタを決定するステップと、少なくとも1つのホストに認可された最大数のセクタを記憶するためのしきい値レジスタを少なくとも1つのホストに割り振るステップと、少なくとも1つのホストが使用するいくつかのセクタを記憶するためのカウンタ・レジスタを少なくとも1つのホストに割り振るステップと、少なくとも1つのホストのしきい値レジスタの値と少なくとも1つのホストのカウンタ・レジスタの値とを比較して、カウンタ・レジスタの値がしきい値レジスタを超えているかどうかを判定するステップとを含む。
【0019】
この方法は、カウンタ・レジスタの値がしきい値レジスタを超えている場合に少なくとも1つのホストによる書込み動作を防止するステップと、書込み動作が失敗したことをこのような1つまたは複数のホストのそれぞれに通知するステップとをさらに含む。
【0020】
本発明のさらに他の実施形態によれば、複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムであって、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにするための装置を含み、メモリ・セクタが圧縮データを記憶するコンピュータ・システムにおいて、少なくとも1つのホストが指定する実アドレスをその装置の実アドレスに変換するための方法が提供される。この方法は、ホスト指定の実アドレスを使用して装置の所望の実アドレスを少なくとも1つのホストにより要求するステップと、ホスト指定の実アドレスを使用して装置内のデータ保持位置を識別するステップと、データ保持位置の内容を使用して第1の値を決定するステップと、結果的に装置の実アドレスになるオフセットに第1の値を連結するステップとを含む。
【0021】
本発明の上記その他の目的、特徴、および利点は、添付図面に関連して考慮したときに以下の詳細な説明からより明らかになるだろう。
【0022】
【発明の実施の形態】
本発明の好ましい実施形態の説明では、ネットワークのオペレーティング・システムが、Windows(R)95、Windows(R)98、Windows(R)NT、Windows(R)2000、Linux、AIX(R)およびUNIX(R)のその他のすべてのバージョン、MacOS(R)、IBMOS/400(R)などのページ・オペレーティング・システムであると想定する。当業者であれば、本発明が非ページ・オペレーティング・システムにどのように適合できるかが容易に分かるだろう。
【0023】
ページ・オペレーティング・システムでは、仮想アドレス空間、すなわち、プログラムによってアドレス指定可能なアドレスの集合がページに分割され、そのページが固定長を有する連続仮想アドレスの集合になっている。通常、1ページは4KBを含む。1つのプログラムの仮想アドレス空間は使用可能な物理メモリよりかなり大きいものにすることができる。オペレーティング・システムはこの特徴をサポートする1組の機能を提供し、その機能は一括して仮想メモリ・マネージャと呼ぶ。物理メモリより大きい仮想アドレス空間をサポートするために、仮想メモリ・マネージャは、メモリ内と、3次記憶装置上、通常はハード・ディスク上の両方に仮想ページを記憶する。ある仮想ページにアクセスし、その仮想ページがメイン・メモリ内にない場合、それはディスクから読み取られる(ページイン動作)。ディスクから読取り中のページについて使用可能な物理空間がまったくない場合、他の仮想ページがディスクに書き込まれ(ページアウト動作)、その空間は解放される。仮想ページがディスクから読み取られると、その仮想ページには開始実アドレス(すなわち、プロセッサから認識されるアドレス)が割り当てられる。実メモリ(プロセッサのアドレス空間)は、論理ページと同じサイズを有する連続するペアワイズ・ディスジョイント実アドレス範囲の集合に分割される。これらはページ・フレームと呼ばれる。このため、論理ページがメモリから読み取られると、その論理ページはページ・フレーム内に記憶される。論理ページと実ページとの変換は、ページ・テーブルと呼ばれるページに分割されたディレクトリ構造に依拠する。各論理ページは、ページ・テーブル項目と呼ばれる、ページ・テーブル内の固有の項目を有し、その項目はそのページを含むページ・フレームの開始実アドレスを含むかまたは論理ページが3次記憶装置上にある場合はディスク上の位置を含む。フリー・ページ・フレームは、(Windows(R)NTおよびWindows(R)2000では)ページ・フレーム番号データベースと呼ばれる別個のデータ構造を使用して管理される。
【0024】
図4は、本発明の特徴を有するネットワークのアーキテクチャを示している。複数のコンピュータ・ホスト401は、相互接続ネットワーク402を介してメモリ圧縮をサポートするSCMS(直接アドレス指定共用圧縮メモリ・システム)403に接続されている。コンピュータ・ホスト401は、たとえば、パーソナル・コンピュータ、ワークステーション、対称型マルチプロセッサ(SMP)マシン、非一様メモリ・アクセス・マシン(NUMA)、キャッシュ専用マシン(COMA)、ストレージ・サーバ、SPノードなどにすることが可能である。
【0025】
SCMS403は、メモリ圧縮をサポートし、メモリ圧縮/圧縮解除、実アドレスと物理アドレスとの変換、保護(たとえば、あるホストが他のホストに割り振られたメモリ・セクタにアクセスするのを防止する)、ロード・バランシング、パフォーマンス分離(すなわち、あるホスト401の行動が他のホストに及ぼす影響を最小限にする)などを含む、コンピュータ・ホスト401がフリー・メモリ・セクタの集合を共用するために必要なサービスを提供する。
【0026】
図5は、SCMS403の一般的なアーキテクチャを示している。SCMS403は、デバイスの集合501とメモリ502とを含む。デバイスの集合501は、ネットワーク・アダプタ503と、メモリ502の管理のための制御ロジック504と、3次記憶装置505とを含む。メモリ502の管理のための制御ロジック504は、メモリ圧縮器/圧縮解除器、レジスタ、ディレクトリまたはCTT項目を収容するためのキャッシュ、メモリからのアドレス指定、読取り、および書込みのための回路、バッファなどをさらに具備する。3次記憶装置505としては、ROM、EPROM、FLASHメモリ・カード、ハード・ディスクを含む。また、好ましい実施形態のSCMS403は、1つまたは複数のホスト401と1つまたは複数のハード・ディスクを共用する。
【0027】
メモリ502は、前述のように、メモリ・ディレクトリ領域506(圧縮変換テーブルとしても知られ、以下、CTTと呼ぶ)と、直接マップ領域507(たとえば、レジスタからのオフセットとしてアドレスが計算される場所)と、未圧縮領域508と、メモリ・セクタのプール509に論理的に分割されている。本発明の精神では、このような領域はそれぞれ、1つのアドレス範囲全体に及ぶ必要はないが、複数のアドレス範囲にわたって拡散することができ、その場合、このような各領域は複数の領域と見なすこともできる。
【0028】
好ましい実施形態のSCMS403は、ホスト401の実メモリ空間の拡張部分として動作する。より具体的には、ホスト401は、ある範囲の実アドレスのサービスを提供するようSCMS403に指示することができる。ホスト401がその実アドレスの範囲内の記憶場所にアクセスする(そこで読取りまたは書込みを行う)必要がある場合、ホストは所望の動作を実行するようSCMS403に要求する。好ましい実施形態では、SCMSのハードウェアの複雑さを妥当なものに保持するために、メモリ502は最高H通りのホストにサービスを提供することができる。SCMSを使用することを希望するホストはそれに登録し、SCMSが現在、H個未満のホストにサービスを提供している場合、SCMSは要求側ホストにたとえば0〜H−1の範囲の固有のIDを割り当て、登録プロセスが完了する。
【0029】
好ましい実施形態のホスト401は、事前定義された細分性で、すなわち、以後、セグメントと呼ぶ固定数の連続実アドレスを含む単位で、SCMS内の実メモリ・アドレス範囲を割り振ることができる。セグメント・サイズはLで示し、SCMSがサポートするセグメント数はSで示す。たとえば、H=16かつL=1Gbである場合に、32Gbの実メモリをサポートするSCMSについて検討する。この例では、SCMSがサービスを提供する実メモリ空間は32個のセグメントに分割され、したがって、各ホスト401は1〜17個のセグメントを割り振ることができる(残りのH−1個のホストが1つのセグメントのみを使用する場合)。一実施形態のSCMSは、使用するリソースが多すぎることにより、あるホストが他のホストのパフォーマンスに過度に影響するのを防止するために、個々のホストが割り振ることができるセグメントの数を最大値Nに制限する。たとえば、SCMSは、ホストが使用するセグメントの数を8に制限することが可能である。ホストはSCMSからセグメントを要求することができ、複数のセグメントが使用可能であって、ホストがそのセグメント限界に達していない場合、そのホストには1つのセグメントが認可される。また、ホストはセグメントを解放することができ、そのセグメントはその後、フリー・セグメントのプールに追加される。
【0030】
好ましい実施形態では、あるホストが1つのメモリ・セグメントを割り振ると、SCMSは対応する実アドレス範囲をそのホストに通知する。この実施形態では、64ビットのアドレス指定と想定すると、そのアドレスのうちのlog2(H)個の最上位ビットがホストIDになり、この例では、H=16である場合、4個の最上位ビットがホストを識別する。次のlog2(N)個のビット(この例では3)がそのアドレスを含むセグメントを識別し、log2(L)個の最下位ビット(この例では30)がそのセグメント内のオフセットになる。この方式では、多数のアドレス・ビットの値(この例では27)を指定しない。これらは、たとえば、ホスト401が複数のSCMSに登録され、同じIDが割り当てられている場合に使用することができる。この場合、以下に説明するように、未指定のビットを使用して、種々のSCMSで割り振られたセグメント間を区別することができる。
【0031】
前述のように、メモリ圧縮をサポートするシステムにおける実アドレスと物理アドレスとの変換は、CTTと呼ばれるディレクトリに依拠する。本発明の精神では、SCMSのCTT506は複数の連続部分に分割され、そのそれぞれは1つのセグメントに関する実/物理変換を実行するために使用する。したがって、連続部分の数はSCMSが管理するセグメントの最大数に等しくなり、各連続部分のサイズは、1つのセグメントをアドレス指定するのに必要なCTT項目の数を収容できるものになる。好ましい実施形態では、CTTのサイズは、初期プログラム・ロードIPL時(すなわち、マシンがブートしている間)に決定される。たとえば、SCMSが16Gbの物理メモリを含み、32Gbの実メモリをサポートし、圧縮の単位が1Kである場合、CTTは32×220個の項目を含むことになり、それが32個の連続部分に分割され、そのそれぞれが異なる1つのセグメントに対応する220個の項目を含む。
【0032】
メモリ圧縮をサポートする通常のコンピュータ、メモリ・サーバの機能を提供するデバイス、メモリ圧縮をサポートしないデバイスには見られない本発明の1つの特徴は、各ホストがどのくらいの物理メモリを使用するかを制御する方針をサポートするのに必要なハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方である。この特徴については図6に関連して説明する。あるホストが1つのセグメントを要求すると、そのホストは、そのセグメントに割り振られるかまたは予約された保証数の物理セクタであると解釈可能ないくつかの物理セクタも要求することができる。予約セクタの総数がセクタの総数を超えない場合、その要求を認可することができる。
【0033】
SCMSは、しきい値601とカウンタ602とを含む1組のレジスタを含む。各ホストに認可される物理セクタの最大数は固有のしきい値レジスタに記憶され、そのホストが使用する物理セクタの数は固有のカウンタ・レジスタに記憶される。書込みまたはメモリ解放動作がホストから出されると、そのホストID603を使用して、関連のしきい値およびカウンタを選択する。この動作が解放である場合、カウンタは、ホストが解放する1組の実アドレスが使用する物理セクタの数だけ減分される。この動作が書込みである場合、圧縮器/圧縮解除器(604)は、書込み動作が影響する各メモリ・ラインが書込み動作前に使用する物理セクタの数だけカウンタを削減する。次に圧縮器は各ラインを圧縮し、そのラインが使用する物理セクタの数だけカウンタを増分する。比較器605はしきい値の値とカウンタの値とを比較する。その値がしきい値を超えている場合、比較器605は、そのホストがそれに割り振られたクオータの物理セクタを超えていることを示す比較結果606を発生する。そうではない場合、比較器は、しきい値を超えていないことを示す比較結果を発生する。
【0034】
比較結果606は、その使用セグメント数がしきい値を超えているときに1つのホスト(または複数のホスト)に信号で知らせるために(ソフトウェアまたはハードウェア)メカニズムが使用し、しきい値は予約セクタのカウンタ付近であるがそれ未満になるようソフトウェアで設定することができる。これにより、あるホストがその限界に近づいたときにそのセクタの使用を削減できるようにするメカニズムが可能になる。あるホストがそのセクタを正常に削減しない場合、ホストによるSCMSへのストア動作(書込み)の結果、その使用セクタがその予約セクタを超える可能性がある状況が発生する場合もある。このような場合、いくつかのオプションが可能である。
(1)SCMSは、書込み動作が完了するのを防止し、そのホストに信号でエラーを知らせることができる。これにより、使用セクタ数がしきい値以下に低下する時点まで、そのホスト、たとえばホスト0からの後続の書込みが履行されるのを防止する。さらに、ホスト0の圧縮比がどれほど劣化しても、他のホストが動作を続行できるようにする。
(2)依然として十分な数の未使用セクタがSCMSで使用可能であると想定して、SCMSは書込み動作を履行することができる。また、SCMSはそのホストにもう一度、信号でエラーを知らせることになり、それはそのセクタ使用量を削減するための最優先メッセージとして解釈することができる。この場合、他のホストは動作を続行することができるが、ホスト0の圧縮比が劣化し続けた場合に最終的にセクタを使い果たす可能性があることが露呈する。
【0035】
図7は、ホストが指定する実アドレスをどのようにしてSCMS実アドレスに変換するかという変換の好ましい実施形態を示している。ホスト指定の実アドレス701は、ホストID702と、セグメント番号703と、オフセット704に分解され、いくつかのビットは無視される。図5の制御ロジック504は、レジスタのマトリックス705、すなわち、データ保持位置を含む。マトリックス705の各行はそれぞれ異なるホストIDに対応し、このため、マトリックス705はH個の行を含む。マトリックスの各列はそれぞれ異なるセグメント番号に対応し、したがって、このマトリックスはL個の列を含む。ホストID702はマトリックスの行706を選択するために使用し、セグメント番号703は列707を選択するために使用する。列707と行706が相俟ってレジスタ709を一意に識別する。レジスタ709の内容、すなわち、所望のセグメントをアドレス指定するために使用するCTTの部分の開始点は、レジスタ709に含まれるビットをオフセット・ビット704に連結することにより、マトリックス705の外部にあるレジスタ710内のオフセット704と結合される。この時点でレジスタ710はSCMS実アドレス、言い換えれば、メモリ502が管理する所望のデータの実アドレスを含んでいる。
【0036】
他の実施形態では、ホストIDはアドレスの一部ではないが、たとえば、ネットワーク・アダプタから入手される。この実施形態については図8に関連して説明することになるが、この実施形態では、ホスト401から提供されるアドレス801の事前定義部分802、すなわち、セグメント番号を使用して、所望のセグメントを指定し(したがって、この部分の長さはlog(S)ビットである)、アドレス801の最下位ビット803はオフセットになる。当業者であれば、セグメント番号を含むアドレス801の事前定義部分802の事前指定位置は隣接ビットで構成される必要はなく、これらのビットはオフセット803が使用する部分以外のアドレス801のどこにでも配置できることが分かるだろう。ホストID805は所望のアドレスから別個に提供される。図5の制御ロジック504は、セグメントあたり1つのレジスタを含むレジスタのアレイ804(データ保持位置)を含み、各レジスタはサポートしているホストあたり1つのビットを含む。あるホストが1つのセグメントを割り振ると、それは、レジスタ内の対応するビットを「1」に設定することにより、どのホストがそのセグメントに対して読取りおよび書込みを実行できるかを指定し、残りのビットは「0」に設定される。読取り/書込み動作時には、セグメント番号802を使用してレジスタ・アレイ804内の1つのレジスタを選択し、ホストID805に対応する項目のビットをチェックする。このビットが「1」に設定されている場合、アドレス807を使用できるようにする許可信号806が生成される。アドレス807はセグメント番号802とオフセット803から構成される。このビットが「0」に設定されている場合、エラー信号が生成され、要求側ホストに送られる。この方法により、ホストが他のホストが使用するメモリ・セグメントからの読取りまたはそのメモリ・セグメントへの書込みを行うのを防止する保護メカニズムが得られる。また、複数のホスト401がメモリ空間の一部を共用する共用メモリ環境でアクセス制御を行うためのメカニズムも提供される。
【0037】
図6の方法により、制御ロジック504は、各ホストごとに1つのカウンタを含むことになり、そのカウンタはそのホストが使用するセグメントの数を含み、1つのホストが許容数を超える数のセグメントを割り振るのを防止する。図8の保護メカニズムを取り入れるために図6の方式を変更する方法は、当業者にとって明白になるだろう。
【0038】
本発明は、レジスタのアレイ804を使用せずに、図7に示す方法を使用して保護メカニズムを構築するための方法も提供する。図7に示すようにアドレスのホストID部分も図8のように別個に提供される場合(たとえば、ネットワーク・アダプタから得られるホスト・ネットワーク・アドレスをホストIDに変換する変換テーブルを使用する)、あるセグメントへの排他的アクセスは、アドレス801の一部である図7のホストID702とそのアドレスとは別個の図8のホストID805とを比較することにより、容易に実現される。不一致がある場合、そのアドレスは無効であり、エラー・メッセージが生成される。セグメントの共用をサポートするために、あるセグメントが割り振られ、それを共用するホストIDが指定されると、SCMSは、指定されたホストに対応する変換マトリックス705の行で未使用項目を見つけ、その項目を空にし、割り振られたセグメントの開始点のアドレスをすべての項目にコピーする。この手法により、同じセクタを共用するホストごとに異なる実アドレスが得られる。SCMS制御ロジックは、すでに使用されているセグメントの開始アドレスを変換マトリックス705の項目に書き込むことを許可しないので、したがって、上記の方法によって所望の保護メカニズムが提供される。
【0039】
ホストIDがアドレスの一部ではないが、別個に提供される場合、別個に提供されるホストID(この時点ではもはやアドレス701の一部ではない)を介して変換マトリックスの行が選択され、セグメント番号703を使用して列が選択されるように、図7の方法を変更することができる。この方法も自動的に保護メカニズムを提供するものであり、前の段落で記述したようにセクタへの共用アクセスを制御するために使用することができる。
【0040】
他の実施形態では、あるセグメントを要求するホスト401はそのセグメント用の開始実アドレスも指定し、それはセグメント境界上に位置合せされる。この実施形態では、SCMSは、同じ開始アドレスが指定される2つの異なるセグメントをホスト401が割り振ることができないことを保証するロジックを含む。図9は、ホストが提供する実アドレスとSCMS実アドレスとの変換プロセスを示している。この場合、図5の制御ロジック504は、連想メモリ904(データ保持位置)を含む。連想メモリ904は、各管理セグメント(現在割り振られていないものを含む)あたり1つの行と、2つの列を含む。第1の列905は、割り振られたセグメントについてホスト401が提供する開始実アドレスであるキーを含む。第2の列906は、SCMSの実メモリ空間内のセグメントの開始実アドレスである値を含む。
【0041】
ホスト401によってアドレス901が提供されると、そのアドレスは、最下位ビットから構成されるセグメント内のオフセット903と、連想メモリ904用の探索キーとして使用する最上位ビット902という2つの部分に分割される。1つの行、たとえば行907がそのキー・フィールドに探索キーと同じ値を含む場合、連想メモリ904は値フィールド908の内容を返す。次に値908はレジスタ909でオフセット903と結合され、SCMS実アドレスを生成する。図9の変換メカニズムと図8の保護メカニズムを結合する方法は、当業者にとって明白になるだろう。
【0042】
SCMSが多数のセグメントを管理する場合、図7の変換マトリックス705、図8のレジスタ804、図9の連想メモリ904、および上記のようにそれらから得られるものは、図5の制御ロジック504内のレジスタとして実現するには潜在的に高価であると思われる。好ましい実施形態では、構成要素705、804、904に含まれる情報がメモリ502に記憶される。制御ロジック504は、容易に使用可能になるように、前記情報のサブセットのみが記憶されるキャッシュを含む。このようなキャッシュは、最後に使用したセグメント情報をキャッシュ内に維持するなど、既知のキャッシュ管理方針によって管理することができる。
【0043】
本発明では、複数のSCMSにわたってホストの実メモリ空間を拡散する方法も教示する。図10は、ホスト1001が相互接続ネットワーク1002により複数のSCMS1003に接続され、そのホストの実メモリ空間の一部が複数のSCMSにわたって拡散され、各メモリ1004がある範囲の実アドレスを含む例を示している。図9の方法を使用すると、ホスト1001の実メモリ空間の連続サブセットが複数のSCMS1003にわたって分散されることを保証することができる。
【0044】
好ましい実施形態では、1つのSCMSが、同じネットワークに接続された他のSCMS上の情報(たとえば、それらのSCMSと、それぞれの個別SCMSのアドレスと、各SCMSごとに割り振られたセグメントの数と圧縮率情報)も含む。
【0045】
本発明は、ハードウェア、ソフトウェア、ファームウェア、専用プロセッサ、またはそれらの組合せという様々な形態で実現可能であることを理解されたい。一実施形態では、本発明は、プログラム記憶装置上に具体的に実施されたアプリケーション・プログラムとしてソフトウェアで実現することができる。このアプリケーション・プログラムは、適当なアーキテクチャを具備するマシンにアップロードし、そのマシンによって実行することができる。好ましくは、このマシンは、1つまたは複数の中央演算処理装置(CPU)、1つのランダム・アクセス・メモリ(RAM)、入出力(I/O)インタフェース(複数も可)などのハードウェアを有するコンピュータ・プラットフォーム上で実現される。このコンピュータ・プラットフォームは、オペレーティング・システムと、マイクロ命令コードも含む。本明細書に記載した様々なプロセスおよび機能は、オペレーティング・システムを介して実行されるこのマイクロ命令コードの一部またはアプリケーション・プログラムの一部のいずれか(あるいはこれらの組合せ)にすることができる。さらに、このコンピュータ・プラットフォームには、追加のデータ記憶装置および印刷装置などの様々な他の周辺装置を接続することもできる。
【0046】
添付図面に示す構成上のシステム構成要素および方法ステップの一部はソフトウェアで実現できるので、システム構成要素(またはプロセス・ステップ)間の実際の接続は、本発明をプログラミングする方法に応じて異なってくる可能性があることをさらに理解されたい。本明細書に記載した本発明の教示を考慮すれば、当業者は、本発明の上記および同様の実現例または構成を企図することができるだろう。
【0047】
図11は、ホスト・システムがどのようにメモリ参照をSCMSへの要求に変換するかを示している。ステップ1101では、ホスト・システムは、実アドレスがネットワーク接続装置に記憶された時期を識別する。好ましい実施形態の論理/物理アドレス変換は、SCMSに記憶されたアドレスを識別するための備えを含む。この実施形態では、ページ・テーブル項目内の適切なフラグを使用して、ホストの主記憶装置に記憶されたページと外部に記憶されたページとを区別する。その場合、外部に記憶されたページは、メモリ参照をネットワーク接続装置への要求に変換するドライバまたはハードウェア装置によりアクセスされる。この変換は、SCMSに記憶されたアドレスのディレクトリ1103でデータを含むSCMSのネットワーク・アドレスを見つけるステップ1102と、ステップ1102で識別されたSCMSに対して要求を出すステップ1104から構成されることになるだろう。
【0048】
他の実施形態では、SCMSに記憶されたページは、ホストのメモリによってサポートされる実アドレスの範囲に属さない実アドレスを有する。たとえば、ホストがメモリ圧縮をサポートしていない場合、ホストのメモリによってサポートされる実アドレスはゼロから物理メモリ・サイズに等しい最大値までの範囲になる。ホストが圧縮をサポートしている場合、実アドレスの範囲は実/物理変換メカニズムによって決定され、前記変換メカニズムが静的ディレクトリ(CTT)に依拠する場合、実アドレスの範囲は前記ディレクトリのサイズによって決定される。最新のオペレーティング・システムでは、ホスト内でサポートされる実アドレスの範囲外の実アドレスが出されると、例外が発生し、割込みが発生する。この実施形態では、この特定の割込みが発生したときに呼び出されるオペレーティング・システム・モジュールは、動作1102および1104を実行するコードを含む。
【0049】
本発明の直接アドレス指定共用圧縮メモリ・システム(SCMS)のさらに他の実施形態では、SCMSは、各CTTがそれぞれ異なる実アドレス空間に対応するCTTの集合を含む。この実施形態では、複数のホスト間で共用されないアドレス空間を多くても1つのホストに関連づけることができる。新しいホストが非共用アドレス空間を要求し、実アドレス空間が使用可能である場合、SCMSの制御ロジックは、対応するCTTによって使用可能な実アドレス空間をそのホストに割り当て、そのアドレス空間をそのホストのIDに関連づける。そのホストのメモリ動作がSCMSを対象としている場合、SCMSはホストIDを対応するCTTのアドレスに変換し、ホストが提供する実アドレスをCTTを使用して物理アドレスに変換する。
【0050】
この実施形態の一例については図12に関連して説明する。SCMS1202は、とりわけ、CTTの集合1207と、共用可能なメモリ・セクタの集合1209、1210をさらに含むメモリ1211とを含む。動作時にホスト1201は、SCMS1202に対してメモリ動作を出し、アドレス1203を送信する。SCMSは、アドレス1203からホストが生成した実アドレス1206とホストID1204を取り出す。次にこのホストID1204は、ホストID/CTT変換テーブル1205を使用してCTTの集合1207から1つのCTTを選択するために使用する。SCMSは、ホストID/CTT変換テーブル1205を使用して、ホスト1201に関連するCTT1208を選択する。選択したCTT1208を使用して、ホスト1206が生成した実アドレスを、対応するデータを含む物理アドレスに変換する。この例では、アドレス1206を含むメモリ・ラインは、2つのメモリ・セクタ1209および1210を使用して記憶される。
【0051】
当業者であれば、前述の本発明の他の特徴とこの特徴とをどのように結合するかが分かるだろう。たとえば、SCMSでは、ホストIDとCTTとのマッピングを多対一のマッピングにすることにより、CTT集合1207内の1つのCTTに関連する同一セグメントを複数のホストで共用することができる。この場合、複数のホストIDを単一CTTにマッピングすることにより、ホストID/CTT変換テーブルを使用して、複数のホストIDをマッピングする。当業者であれば、単一セグメントが使用するメモリの物理的な量、ホストが生成するアドレスと1つのセグメント内の実アドレスとの追加変換などを制御する方針が本発明のこの特徴にどのように適用されるかも分かるだろう。
【0052】
本発明の所与の好ましい実施形態に関連して本発明を示し説明してきたが、当業者であれば、特許請求の範囲で定義した本発明の精神および範囲を逸脱せずに形態および詳細について様々な変更が可能であることが分かるだろう。
【図面の簡単な説明】
【図1】圧縮メイン・メモリをサポートする従来のコンピュータ・システムの構造を示す図である。
【図2】図1に示す圧縮メイン・メモリをサポートする従来のコンピュータ・システムのメモリ・システムの詳細構造を示す図である。
【図3】図1に示す圧縮メイン・メモリをサポートする従来のコンピュータ・システムにおけるメモリ・ディレクトリの構造を示す図である。
【図4】本発明による直接アドレス指定共用圧縮メモリ・システム(SCMS)を使用するネットワークのアーキテクチャを示す図である。
【図5】本発明によるSCMSのブロック図である。
【図6】本発明によるSCMSにおいて各ホストが使用するセクタの数を追跡するために使用する制御ロジックの構造を示す図である。
【図7】ホストからのアドレスをSCMSが管理する実アドレスに変換するための方法であって、変換マトリックスに依拠する方法を示す図である。
【図8】保護ビットのアレイを使用してSCMS内で保護を可能にし、セグメントへのアクセスを制御するための方法を示す図である。
【図9】ホストからのアドレスをSCMSが管理する実アドレスに変換するための方法であって、連想メモリに依拠する方法を示す図である。
【図10】ホスト・システムの実アドレス空間の一部が複数のSCMSにわたって拡散されるネットワークのアーキテクチャを示す図である。
【図11】メモリ参照をSCMSへの要求に変換するための方法を示す図である。
【図12】本発明により複数のメモリ・ディレクトリ(CTT)を含むSCMSの一実施形態を示す図である。
【符号の説明】
501 デバイスの集合
502 メモリ
503 ネットワーク・アダプタ
504 制御ロジック
505 3次記憶装置
506 メモリ・ディレクトリ領域
507 直接マップ領域
508 未圧縮領域
509 メモリ・セクタのプール
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a computer architecture, and more particularly to a network connection apparatus that allows a plurality of hosts to share a set of memory sectors and stores compressed data using the memory sectors. This device is hereinafter referred to as a “direct addressed shared compressed memory system” (SCMS).
[0002]
The present invention is a method for converting a real address generated by a host into a real address managed by SCMS, the method in which the real address is then converted into a physical address by a compressed memory management system, and memory contents A method for ensuring protection; a mechanism for sharing memory contents between different hosts; a method for distributing consecutive portions of a host's real address space across multiple SCMS; And a method for ensuring that a given number of memory sectors can be guaranteed.
[0003]
[Prior art]
One new development in computer organization is the use of data compression in the main memory of a computer system. Real memory, ie, a set of processor addresses corresponding to data stored in the memory, is usually divided into a number of pair-wise disjoint segments corresponding to a fixed number of consecutive processor addresses. With pairwise disjoint, each real address belongs to one and only one of these segments. Such a segment is called a memory line. A memory line is a unit of compression. The memory lines stored in the compressed memory are compressed and stored in a variable number of storage locations, the number depending on how well the contents are compressed. International Business Machines (IBM) Corporation has several patents relating to computer systems in which the contents of main memory are compressed. An example of such a system was issued to Francaszek et al. On March 17, 1998, US Pat. No. 5,729,228 entitled “Parallel compression and decompression using a cooperative dictionary”, and issued to Franaszek on June 2, 1998. U.S. Pat.No. 5,761,536, entitled `` System and method for reducing memory fragmentation by assigning remainders to share memory blocks on a best fit basis '', was issued to Franaszek on January 26, 1999, and `` System and method of compression and decompression using ''. U.S. Pat. No. 5,864,859, entitled "Store Addressing".
[0004]
FIG. 1 shows an exemplary system having such a data compression function. The central processing unit (CPU) 102 of FIG. 1 reads data into one or more caches 104 and writes data therefrom. As a result of cache misses and stores, the compression controller 106 reads from and writes to the compressed main memory 110. The compressed main memory 110 is divided into two parts: a data part 108 and a directory 107 (also known as a compression translation table CTT). The data portion 108 is divided into pair-wise disjoint sectors, ie, physical storage locations with fixed size intervals. For example, a sector may consist of 256 physical bytes with consecutive physical addresses. The contents of one compressed memory line are stored in the smallest possible number of physical sectors. A physical sector containing one compressed line need not have a contiguous physical address and can be located anywhere within the data portion 108 of the compressed main memory 110. The conversion between the real address of one byte and the address of the physical sector including it is executed via the directory or CTT 107.
[0005]
FIG. 2 includes further details to better understand the operation of the compressed memory 210. The processor cache 240 includes an uncompressed cache line 241 and a cache directory 242 that stores the actual address of each cache line. For purposes of illustration, assume that one cache line has the same size as one memory line (unit of compression). When a cache miss occurs, the cache requests the corresponding line from memory by providing the real address 270 that caused the miss. This real address is log 2 Log that is the offset of the address in the line when () is a logarithm with base 2. 2 It is divided into two parts: (line length) least significant bits and the remaining bits used as an index in the directory 220 containing one line entry for each line of the supported real address range. The address A1 (271) in FIG. 2 corresponds to the line item 1 (221), the address A2 (272) corresponds to the line item 2 (222), and the address A3 (273) corresponds to the line item 3 (513). , Address A4 (274) corresponds to line item 4 (514). Various addresses are used in this example to illustrate various methods for storing compressed data in the compressed main memory. In this example, the line with address A1 is very well compressed (eg, a line consisting of all zeros). Such a line is completely stored in the CTT entry 221 and does not require a memory sector. The line at address A2 is not very well compressed and requires two memory sectors 231 and 232, which are stored in the data section 230. Line item 222 includes pointers to memory sectors 231 and 232. Note that the last portion of memory sector 232 is unused. The line with address A3 requires three memory sectors 233, 234, 235. The space left unused in sector 235 is long enough to store the portion of the compressed line with real address A4, which then uses sector 236 and a portion of 235. To do. The lines at addresses A4 and A3 are called roommates.
[0006]
The compressor 261 is used when the dirty line in the cache is written back to the memory. When a cache writeback is performed, the dirty line is compressed. If it fits in the same amount of memory that it was using before write back, it is stored in place. If not, it is written to the appropriate number of sectors. When the number of required sectors is reduced, unused sectors are added to the free sector list. If the number of required sectors increases, they are taken from the free sector list.
[0007]
FIG. 3 shows a possible organization for items in the directory or CTT 220. Three types of line organization are illustrated. Item 1 (306) includes a set of flags (301) and the addresses of four sectors. If the line size is 1024 bytes and the memory sector size is 256, the line requires at most 4 sectors. Item 2 (307) includes a set of flags, the address of the first sector used by the line, the beginning of the compressed line, and the address of the last sector used by the line. If the line requires more than two memory sectors, the sectors are connected by a linked list of pointers (ie, each memory sector contains the address of the next sector). Item 3 includes a set of flags and a high compression line compressed to 120 bits or less. The flag in this example shows a flag 302 indicating whether the line is stored in a compressed format or uncompressed, and whether the line is highly compressible and fully stored in the directory entry. Flag 303, flag 304 (2 bits) indicating how many sectors the line uses, and fragment information, ie which part of the last used sector is occupied by the line (this information is roommate Flag 305 (4 bits) including (used for conversion). The maximum compression ratio achievable with a system with memory compression that relies on the above compressed memory organization depends on the size of the directory, i.e., the maximum number of real addresses is equal to the number of directory items in that directory.
[0008]
In a related field, for example, in US Pat. No. 4,564,903 entitled “Partitioned multiprocessor programming system” R. Guyette et al. Teach a method for partitioning uncompressed memory. This patent teaches a control method for a multiprocessor (MP) system having a plurality of CPUs sharing a main memory (MS) and an input / output processing means for connecting the plurality of input / output devices to the MS. With this control method, MP is Uniprocessor programming system ( UPS ) Are designed to run only on uniprocessor (UP) systems that have the same architecture or a different architecture than the MP, but can run simultaneously on multiple CPUs in the MP U P S Can be executed. This patent teaches an apparatus and method for uncompressed memory contained within an MP system. However, it teaches an apparatus and method for compressed memory that is not part of an MP system, and an apparatus and method for compressed memory that is shared by various computer systems and is not part of any of those computer systems. Not what you want.
[0009]
Regarding segmentation, for example, G. H. U.S. Pat. No. 4,843,541 issued to Bean et al. And entitled "Logical resource partitioning of a data processing system". This patent teaches a method for restricting guest operations in a data processing system to system resources assigned to the guest, which includes one or more real CPUs and system main memory. Multiple I / Os that use an I / O processor to connect a device (MS), optional system expansion storage (ES), and multiple I / O control units with respective I / O devices to the system A host and hypervisor (host) that contains software and monitors multiple software control programs (guests) that can run in the system simultaneously and independently, and the guests can control the same or different types Sub-chapters to represent hosts that can be programmed and I / O devices to hosts and guests And a le (SCH), is limited to a system resource subsets (categories) of each guest is assigned. However, this patent does not teach sharing network-connected compressed memory between different hosts.
[0010]
The partitioning taught in the art comprises a method for converting a real address recognized by a software component running on a computer into a real address managed by the computer. Such software components can be multiple images of the same operating system or different operating systems, and thus can perform logical / real address translation. In partitioning, a real address generated by such a software component is treated as a logical address, and subsequent logical / real conversion is executed. If the hardware does not support memory compression, the real address is equivalent to the physical address. However, if the memory is compressed, the real address is not equivalent to the physical address and requires subsequent translation. Traditional partitioning also includes a protection mechanism that prevents software components running in one partition from accessing the contents of the memory of software components running in other partitions.
[0011]
However, the partitioning taught in the art addresses methods and security mechanisms for sharing memory resources within a device that is physically separate from the computer system on which the software components that use the data are executed. Thus, sharing and security mechanisms are not controlled by the computer system and are actually transparent to such a computer system.
[0012]
[Problems to be solved by the invention]
In a computer system in which a plurality of hosts are connected via a network, the present invention provides a network connection device that provides a function of expanding a logical real memory of a host and maintaining the contents of the memory in a compressed format. I will provide a. The network connection device of the present invention is a direct addressing shared compressed memory system (hereinafter referred to as SCMS). SCMS divides its internal real memory space into adjacent real address ranges called segments, and divides its physical memory into a common pool of adjacent physical address ranges called sectors. The host can allocate segments from such devices and address its internal memory, ie address its contents with real addresses. SCMS converts a memory address provided by the host into an internal real address, which is converted by a compressed memory directory (CTT) into the physical address of the sector where the compressed data is actually stored. A segment is dynamically associated with a variable number of physical sectors. As the compression rate of data stored within a segment decreases, the number of physical sectors associated with that segment increases, and vice versa. The present invention particularly provides an apparatus and method for managing the allocation of physical sectors from a common pool to memory segments, which supports similar devices that do not support memory compression or memory compression. It seems that it does not exist even in a normal computer.
[0013]
[Means for Solving the Problems]
According to one embodiment of the present invention, in a computer system in which multiple hosts are connected by an interconnect network, the multiple hosts are coupled to the interconnect network, allowing the multiple hosts to share a set of memory sectors, An apparatus is provided in which sectors store compressed data. The device includes a network adapter for coupling the device to an interconnect network, a memory for storing a collection of memory sectors, and control logic for managing the memory, the control logic being a memory compressor / Includes decompressor. The memory further includes a directory for translating at least one host real address to an address in the device.
[0014]
In other embodiments, the control logic of the device further includes a matrix of registers, each row of the matrix corresponding to a different host ID, and each column corresponding to a different segment number, whereby the at least one host's The contents of a particular register determined by the ID and the desired segment are concatenated to an offset that results in the actual address of the device.
[0015]
In yet another embodiment, the control logic of the device includes an array of registers, the array includes a number of registers corresponding to a number of segments of the device, one for each host on which each register is supported. A desired segment is concatenated to an offset that results in a real address of the device when that bit is equal to 1, and at least 1 when that bit is equal to 0. One host is denied access to the segment.
[0016]
In yet another embodiment of the present invention, the control logic of the device includes an associative memory that includes one row for each management segment of the device, the first column includes a key, and the second column includes a value. The key is a starting real address provided by multiple hosts for the desired segment, and its value is the starting real address of the segment in the device, thereby a value determined by the search key of at least one host Are concatenated to an offset that results in the real address of the device.
[0017]
According to another embodiment, a host connected by an interconnect network and a plurality of devices, each device including a collection of memory sectors, the devices are coupled to the interconnect network, A computer system is provided that allows a collection of memory sectors to be shared between devices, wherein the memory sectors contain compressed data. A contiguous subset of the host's real address is distributed across multiple devices.
[0018]
In yet another embodiment of the invention, a computer system in which multiple hosts are connected by an interconnect network, coupled to the interconnect network, allowing the multiple hosts to share a set of memory sectors. There is provided a method for managing a number of memory sectors used by each host in a computer system including a device for storing the compressed data. The method includes determining a maximum number of sectors to be granted to each host, and allocating to at least one host a threshold register for storing the maximum number of sectors granted to at least one host; Allocating to at least one host a counter register for storing a number of sectors for use by at least one host, at least one host threshold register value and at least one host counter register And determining whether the value in the counter register exceeds the threshold register.
[0019]
The method includes the steps of preventing a write operation by at least one host when the value of the counter register exceeds the threshold register and indicating that the write operation has failed for one or more such hosts. And further notifying each of them.
[0020]
According to yet another embodiment of the present invention, a computer system in which multiple hosts are connected by an interconnect network, coupled to the interconnect network, such that the multiple hosts can share a set of memory sectors. There is provided a method for translating a real address specified by at least one host into a real address of the device in a computer system including a device for storing the compressed data in a memory sector. The method uses a host-specified real address to request a desired real address of the device by at least one host, and uses the host-specified real address to identify a data holding location in the device. Determining the first value using the contents of the data holding position and concatenating the first value to an offset that results in a real address of the device.
[0021]
These and other objects, features and advantages of the present invention will become more apparent from the following detailed description when considered in conjunction with the accompanying drawings.
[0022]
DETAILED DESCRIPTION OF THE INVENTION
In the description of the preferred embodiment of the present invention, the network operating system is Windows (R) 95, Windows (R) 98, Windows (R) NT, Windows (R) 2000, Linux, AIX (R) and UNIX ( Assume that all other versions of R) are page operating systems such as MacOS®, IBMOS / 400®. Those skilled in the art will readily understand how the present invention can be adapted to non-page operating systems.
[0023]
In the page operating system, a virtual address space, that is, a set of addresses that can be addressed by a program is divided into pages, and the page is a set of continuous virtual addresses having a fixed length. Normally, one page contains 4KB. The virtual address space of one program can be much larger than the available physical memory. The operating system provides a set of functions that support this feature, which are collectively referred to as a virtual memory manager. To support a virtual address space that is larger than physical memory, the virtual memory manager stores virtual pages both in memory and on tertiary storage, usually on a hard disk. If a virtual page is accessed and the virtual page is not in main memory, it is read from disk (page-in operation). If there is no physical space available for the page being read from the disk, another virtual page is written to the disk (page out operation) and that space is freed. When a virtual page is read from disk, the virtual page is assigned a starting real address (ie, an address recognized by the processor). The real memory (processor address space) is divided into a set of contiguous pairwise disjoint real address ranges having the same size as the logical page. These are called page frames. Thus, when a logical page is read from memory, the logical page is stored in the page frame. The conversion between logical pages and real pages relies on a directory structure divided into pages called page tables. Each logical page has a unique entry in the page table, called a page table entry, that contains the starting real address of the page frame that contains the page, or the logical page is on tertiary storage. Includes the position on the disc. Free page frames are managed using a separate data structure called the page frame number database (in Windows (R) NT and Windows (R) 2000).
[0024]
FIG. 4 illustrates a network architecture having features of the present invention. A plurality of computer hosts 401 are connected to an SCMS (Direct Addressed Shared Compression Memory System) 403 that supports memory compression via an interconnect network 402. The computer host 401 is, for example, a personal computer, a workstation, a symmetric multiprocessor (SMP) machine, a non-uniform memory access machine (NUMA), a cache dedicated machine (COMA), a storage server, an SP node, etc. It is possible to
[0025]
SCMS 403 supports memory compression, memory compression / decompression, conversion between real and physical addresses, protection (for example, memory allocated from one host to another sector Computer host 401 free memory sectors, including load balancing, performance isolation (ie, minimizing the impact of one host 401's actions on other hosts), etc. Provide the services necessary to share a set of
[0026]
FIG. 5 shows the general architecture of SCMS 403. The SCMS 403 includes a device set 501 and a memory 502. The device set 501 includes a network adapter 503, control logic 504 for managing the memory 502, and a tertiary storage device 505. The control logic 504 for the management of the memory 502 includes a memory compressor / decompressor, a cache to accommodate registers, directories or CTT items, circuits for addressing, reading and writing from the memory, buffers, etc. Is further provided. The tertiary storage device 505 includes ROM, EPROM, FLASH memory card, and hard disk. The SCMS 403 of the preferred embodiment also shares one or more hard disks with one or more hosts 401.
[0027]
As described above, the memory 502 includes a memory directory area 506 (also known as a compression conversion table, hereinafter referred to as CTT) and a direct map area 507 (for example, a place where an address is calculated as an offset from a register). Are logically divided into an uncompressed area 508 and a memory sector pool 509. In the spirit of the present invention, each such region need not span an entire address range, but can be spread over multiple address ranges, in which case each such region is considered a plurality of regions. You can also.
[0028]
The SCMS 403 of the preferred embodiment operates as an extension of the real memory space of the host 401. More specifically, the host 401 has a range of real addresses. Provide services The SCMS 403 can be instructed to do so. When the host 401 needs to access a storage location within its real address range (where it reads or writes), the host requests the SCMS 403 to perform the desired operation. In the preferred embodiment, memory 502 can be stored on up to H hosts in order to maintain reasonable SCMS hardware complexity. Provide service can do. Hosts wishing to use SCMS register with it, and SCMS is currently serving less than H hosts Provide service If so, the SCMS assigns a unique ID in the range of 0 to H-1, for example, to the requesting host and the registration process is complete.
[0029]
The host 401 of the preferred embodiment can allocate real memory address ranges in SCMS with a predefined granularity, that is, in units containing a fixed number of consecutive real addresses, hereinafter referred to as segments. The segment size is indicated by L, and the number of segments supported by SCMS is indicated by S. For example, consider SCMS that supports 32 Gb real memory when H = 16 and L = 1 Gb. In this example, SCMS is Provide service The real memory space is divided into 32 segments, so each host 401 can allocate 1-17 segments (if the remaining H-1 hosts use only one segment). In one embodiment, SCMS maximizes the number of segments an individual host can allocate in order to prevent one host from overly affecting the performance of other hosts due to too many resources. Limit to N. For example, SCMS can limit the number of segments used by a host to eight. A host can request a segment from SCMS, and if multiple segments are available and the host has not reached its segment limit, the host is granted one segment. The host can also release the segment, which is then added to the free segment pool.
[0030]
In the preferred embodiment, when a host allocates a memory segment, SCMS informs the host of the corresponding real address range. In this embodiment, assuming 64-bit addressing, log of that address 2 (H) most significant bits are host IDs. In this example, if H = 16, the four most significant bits identify the host. Next log 2 (N) bits (3 in this example) identify the segment containing the address and log 2 The (L) least significant bits (30 in this example) are the offset within that segment. In this method, a large number of address bit values (27 in this example) are not specified. These can be used, for example, when the host 401 is registered in a plurality of SCMSs and assigned the same ID. In this case, as will be described below, unspecified bits can be used to distinguish between segments allocated in different SCMS.
[0031]
As mentioned above, the conversion between real and physical addresses in systems that support memory compression relies on a directory called CTT. In the spirit of the present invention, the SCMS CTT 506 is divided into a plurality of consecutive parts, each of which is used to perform a real / physical conversion on one segment. Thus, the number of consecutive parts will be equal to the maximum number of segments managed by SCMS, and the size of each consecutive part will be able to accommodate the number of CTT entries needed to address one segment. In the preferred embodiment, the size of the CTT is determined at the initial program load IPL (ie, while the machine is booting). For example, if SCMS includes 16Gb physical memory, supports 32Gb real memory, and the unit of compression is 1K, CTT is 32 × 2 20 2 items, which are divided into 32 consecutive parts, each corresponding to one different segment 20 Contains items.
[0032]
One feature of the present invention not found in ordinary computers that support memory compression, devices that provide memory server functionality, and devices that do not support memory compression is how much physical memory each host uses. A hardware component and / or software component required to support the controlling strategy. This feature will be described with reference to FIG. When a host requests a segment, the host can also request several physical sectors that can be interpreted as a guaranteed number of physical sectors allocated or reserved for the segment. If the total number of reserved sectors does not exceed the total number of sectors, the request can be granted.
[0033]
The SCMS includes a set of registers that include a threshold 601 and a counter 602. The maximum number of physical sectors granted to each host is stored in a unique threshold register, and the number of physical sectors used by that host is stored in a unique counter register. When a write or memory release operation is issued from the host, its host ID 603 is used to select the associated threshold and counter. If this operation is release, the counter is decremented by the number of physical sectors used by the set of real addresses released by the host. If this operation is a write, the compressor / decompressor (604) decrements the counter by the number of physical sectors that each memory line affected by the write operation uses before the write operation. The compressor then compresses each line and increments the counter by the number of physical sectors used by that line. The comparator 605 compares the threshold value with the counter value. If the value exceeds the threshold, the comparator 605 generates a comparison result 606 indicating that the host has exceeded the quota's physical sector allocated to it. Otherwise, the comparator generates a comparison result indicating that the threshold has not been exceeded.
[0034]
The comparison result 606 is used by a (software or hardware) mechanism to signal one host (or multiple hosts) when the number of segments used exceeds the threshold, and the threshold is reserved. It can be set by software so that it is close to the sector counter but less than that. This allows a mechanism that allows a host to reduce its sector usage when it approaches its limit. When a certain host does not reduce the sector normally, a situation in which the used sector may exceed the reserved sector may occur as a result of the store operation (write) to the SCMS by the host. In such cases, several options are possible.
(1) The SCMS can prevent the write operation from being completed and inform the host of the error by a signal. This prevents subsequent writes from that host, eg, host 0, from being implemented until the number of used sectors drops below the threshold. Furthermore, no matter how much the compression ratio of the host 0 deteriorates, other hosts can continue to operate.
(2) Assuming that a sufficient number of unused sectors are still available for SCMS, SCMS can perform the write operation. SCMS will also signal the host again with an error, which can be interpreted as a top priority message to reduce the sector usage. In this case, other hosts can continue to operate, but reveal that they may eventually run out of sectors if the compression ratio of host 0 continues to deteriorate.
[0035]
FIG. 7 shows a preferred embodiment of the conversion of how to convert a real address specified by the host into an SCMS real address. The host-specified real address 701 is decomposed into a host ID 702, a segment number 703, and an offset 704, and some bits are ignored. FIG. System of The control logic 504 includes a matrix of registers 705, ie, data holding locations. Each row of the matrix 705 corresponds to a different host ID, and thus the matrix 705 includes H rows. Each column of the matrix corresponds to a different segment number, and thus the matrix includes L columns. Host ID 702 is used to select matrix row 706 and segment number 703 is used to select column 707. Together, column 707 and row 706 uniquely identify register 709. The contents of register 709, ie the starting point of the portion of the CTT used to address the desired segment, is the register that is external to matrix 705 by concatenating the bits contained in register 709 to offset bits 704. Combined with offset 704 within 710. At this point, the register 710 contains the SCMS real address, in other words, the real address of the desired data managed by the memory 502.
[0036]
In other embodiments, the host ID is not part of the address, but is obtained, for example, from a network adapter. This embodiment will be described with reference to FIG. 8, but in this embodiment, the predefined segment 802 of the address 801 provided by the host 401, ie, the segment number, is used to define the desired segment. Specified (and therefore the length of this part is log 2 (S) bit), the least significant bit 803 of the address 801 is an offset. A person skilled in the art does not need the pre-specified position of the predefined part 802 of the address 801 including the segment number to be composed of adjacent bits, and these bits are placed anywhere in the address 801 other than the part used by the offset 803. You will see what you can do. The host ID 805 is provided separately from the desired address. FIG. System of The control logic 504 includes an array of registers 804 (data holding locations) containing one register per segment, each register containing one bit per supported host. When a host allocates a segment, it specifies which hosts can read and write to that segment by setting the corresponding bit in the register to “1” and the remaining bits Is set to “0”. During a read / write operation, segment number 802 is used to select one register in register array 804 and check the bit of the item corresponding to host ID 805. If this bit is set to “1”, a permission signal 806 is generated that allows the address 807 to be used. The address 807 includes a segment number 802 and an offset 803. If this bit is set to “0”, an error signal is generated and sent to the requesting host. This method provides a protection mechanism that prevents a host from reading from or writing to a memory segment used by another host. A mechanism for performing access control in a shared memory environment in which a plurality of hosts 401 share a part of the memory space is also provided.
[0037]
With the method of FIG. 6, the control logic 504 will include one counter for each host, which includes the number of segments used by that host, and one host contains more segments than allowed. Prevent allocation. It will be clear to those skilled in the art how to modify the scheme of FIG. 6 to incorporate the protection mechanism of FIG.
[0038]
The present invention also provides a method for building a protection mechanism using the method shown in FIG. 7 without using an array of registers 804. If the host ID portion of the address is also provided separately as shown in FIG. 7 (eg, using a translation table that converts the host network address obtained from the network adapter into a host ID), as shown in FIG. Exclusive access to a segment is easily realized by comparing the host ID 702 of FIG. 7 that is part of the address 801 with the host ID 805 of FIG. 8 that is separate from the address. If there is a mismatch, the address is invalid and an error message is generated. To support segment sharing, when a segment is allocated and the host ID that shares it is specified, SCMS finds an unused entry in the row of the transformation matrix 705 corresponding to the specified host, and Empty the entry and copy the address of the starting point of the allocated segment to all entries. By this method, a different real address is obtained for each host sharing the same sector. Since the SCMS control logic does not allow writing the start address of a segment that is already in use to an entry in the translation matrix 705, the above method thus provides the desired protection mechanism.
[0039]
If the host ID is not part of the address but is provided separately, a row of the translation matrix is selected via the separately provided host ID (which is no longer part of the address 701 at this point) and the segment The method of FIG. 7 can be modified so that a column is selected using the number 703. This method also automatically provides a protection mechanism and can be used to control shared access to sectors as described in the previous paragraph.
[0040]
In other embodiments, a host 401 requesting a segment also specifies a starting real address for that segment, which is aligned on a segment boundary. In this embodiment, the SCMS includes logic that ensures that the host 401 cannot allocate two different segments with the same starting address. FIG. 9 shows the conversion process between the real address provided by the host and the SCMS real address. In this case, the control logic 504 in FIG. 5 includes an associative memory 904 (data holding position). The associative memory 904 includes one row and two columns for each management segment (including those not currently allocated). First column 905 includes a key that is the starting real address provided by host 401 for the allocated segment. The second column 906 contains values that are the starting real addresses of the segments in the SCMS real memory space.
[0041]
When the address 901 is provided by the host 401, the address is divided into two parts: an offset 903 in the segment composed of the least significant bits and a most significant bit 902 used as a search key for the associative memory 904. The If a row, eg, row 907, contains the same value as the search key in its key field, associative memory 904 returns the contents of value field 908. The value 908 is then combined with the offset 903 in register 909 to generate the SCMS real address. It will be clear to those skilled in the art how to combine the transformation mechanism of FIG. 9 and the protection mechanism of FIG.
[0042]
When SCMS manages a large number of segments, the transformation matrix 705 of FIG. 7, the register 804 of FIG. 8, the associative memory 904 of FIG. 9, and what is obtained from them as described above is in the control logic 504 of FIG. It seems to be potentially expensive to implement as a register. In the preferred embodiment, information contained in components 705, 804, 904 is stored in memory 502. The control logic 504 includes a cache in which only a subset of the information is stored so that it can be easily used. Such a cache can be managed by a known cache management policy, such as keeping the last used segment information in the cache.
[0043]
The present invention also teaches a method for spreading the host's real memory space across multiple SCMS. FIG. 10 shows an example in which a host 1001 is connected to a plurality of SCMSs 1003 by an interconnection network 1002, a part of the host real memory space is spread over a plurality of SCMSs, and each memory 1004 includes a range of real addresses. ing. Using the method of FIG. 9, it can be ensured that a contiguous subset of the real memory space of the host 1001 is distributed across multiple SCMSs 1003.
[0044]
In a preferred embodiment, one SCMS is Information on other SCMSs connected to the same network ( For example, These SCMS of number And the address of each individual SCMS, the number of segments allocated to each SCMS, and compression rate information )Also Including.
[0045]
It should be understood that the present invention can be implemented in various forms: hardware, software, firmware, special purpose processor, or a combination thereof. In one embodiment, the present invention can be implemented in software as an application program specifically implemented on a program storage device. This application program can be uploaded to a machine having an appropriate architecture and executed by the machine. Preferably, the machine has hardware such as one or more central processing units (CPU), one random access memory (RAM), input / output (I / O) interface (s), etc. Realized on a computer platform. The computer platform also includes an operating system and microinstruction code. The various processes and functions described herein can be either part of this microinstruction code or part of an application program (or a combination thereof) that is executed through the operating system. . In addition, various other peripheral devices may be connected to the computer platform such as an additional data storage device and a printing device.
[0046]
Since some of the structural system components and method steps shown in the accompanying drawings can be implemented in software, the actual connections between system components (or process steps) will vary depending on how the invention is programmed. It should be further understood that this is possible. Given the teachings of the present invention described herein, one of ordinary skill in the related art will be able to contemplate these and similar implementations or configurations of the present invention.
[0047]
FIG. 11 shows how the host system translates memory references into requests to SCMS. In step 1101, the host system identifies when the real address is stored in the network connection device. The logical / physical address translation of the preferred embodiment includes provisions for identifying addresses stored in the SCMS. In this embodiment, the appropriate flag in the page table entry is used to distinguish between pages stored in the host main storage and pages stored externally. In that case, the externally stored page is accessed by a driver or hardware device that converts the memory reference into a request to the network connection device. This translation consists of step 1102 for finding the network address of the SCMS containing the data in the directory 1103 of the address stored in the SCMS, and step 1104 for making a request to the SCMS identified in step 1102. right.
[0048]
In other embodiments, pages stored in SCMS have real addresses that do not belong to the range of real addresses supported by the host's memory. For example, if the host does not support memory compression, the real addresses supported by the host memory range from zero to a maximum value equal to the physical memory size. If the host supports compression, the real address range is determined by the real / physical translation mechanism, and if the translation mechanism relies on a static directory (CTT), the real address range is determined by the directory size. Is done. In modern operating systems, if a real address is issued that is outside the range of real addresses supported in the host, an exception occurs and an interrupt is generated. In this embodiment, the operating system module that is called when this particular interrupt occurs includes code that performs operations 1102 and 1104.
[0049]
In yet another embodiment of the direct addressed shared compressed memory system (SCMS) of the present invention, the SCMS includes a set of CTTs, each CTT corresponding to a different real address space. In this embodiment, an address space that is not shared among a plurality of hosts can be associated with at most one host. If a new host requests a non-shared address space and the real address space is available, the SCMS control logic assigns the host a real address space that can be used by the corresponding CTT and assigns the address space to the host's Associate with ID. If the memory operation of the host is intended for SCMS, the SCMS converts the host ID into a corresponding CTT address, and converts the real address provided by the host into a physical address using the CTT.
[0050]
An example of this embodiment will be described with reference to FIG. SCMS 1202 includes, among other things, a set of CTTs 1207 and a memory 1211 that further includes a set of shareable memory sectors 1209, 1210. In operation, the host 1201 issues a memory operation to the SCMS 1202 and transmits an address 1203. The SCMS takes out the real address 1206 and the host ID 1204 generated by the host from the address 1203. Next, this host ID 1204 is used to select one CTT from the set of CTTs 1207 using the host ID / CTT conversion table 1205. The SCMS uses the host ID / CTT conversion table 1205 to select the CTT 1208 associated with the host 1201. Using the selected CTT 1208, the real address generated by the host 1206 is converted into a physical address including the corresponding data. In this example, the memory line containing address 1206 is stored using two memory sectors 1209 and 1210.
[0051]
One skilled in the art will know how to combine this feature with the other features of the present invention described above. For example, in SCMS, the same segment related to one CTT in the CTT set 1207 can be shared by a plurality of hosts by making the mapping between the host ID and the CTT a many-to-one mapping. In this case, by mapping a plurality of host IDs to a single CTT, a plurality of host IDs are mapped using the host ID / CTT conversion table. Those skilled in the art will understand how this feature of the present invention is governed by the policy of controlling the physical amount of memory used by a single segment, additional translations between host-generated addresses and real addresses within a segment, etc. You will also find that it applies to.
[0052]
While the invention has been shown and described in connection with a given preferred embodiment of the invention, those skilled in the art will understand the form and details without departing from the spirit and scope of the invention as defined in the claims. You will see that various changes are possible.
[Brief description of the drawings]
FIG. 1 illustrates the structure of a conventional computer system that supports compressed main memory.
FIG. 2 is a diagram showing a detailed structure of a memory system of a conventional computer system that supports the compressed main memory shown in FIG. 1;
FIG. 3 is a diagram showing the structure of a memory directory in a conventional computer system that supports the compressed main memory shown in FIG. 1;
FIG. 4 illustrates the architecture of a network using a direct addressing shared compressed memory system (SCMS) according to the present invention.
FIG. 5 is a block diagram of SCMS according to the present invention.
FIG. 6 illustrates the structure of control logic used to track the number of sectors used by each host in SCMS according to the present invention.
FIG. 7 is a diagram showing a method for converting an address from a host into a real address managed by the SCMS and relying on a conversion matrix;
FIG. 8 illustrates a method for enabling protection within SCMS using an array of protection bits and controlling access to a segment.
FIG. 9 is a diagram showing a method for converting an address from a host into a real address managed by SCMS and relying on an associative memory;
FIG. 10 illustrates a network architecture in which a portion of the real address space of the host system is spread across multiple SCMSs.
FIG. 11 illustrates a method for converting a memory reference to a request to SCMS.
FIG. 12 illustrates one embodiment of an SCMS that includes multiple memory directories (CTT) in accordance with the present invention.
[Explanation of symbols]
501 Device set
502 memory
503 Network adapter
504 Control logic
505 tertiary storage
506 Memory directory area
507 Direct map area
508 Uncompressed area
509 Memory sector pool

Claims (5)

数のホストが相互接続ネットワークにより接続され、各ホストがそれぞれに関連する実アドレス空間を有するコンピュータ・システムにおいて、前記相互接続ネットワークに結合され、前記複数のホストが圧縮データを記憶するメモリ・セクタの集合を共用できるようにするための装置であって、
前記装置を前記相互接続ネットワークに結合するためのネットワーク・アダプタと、
前記メモリ・セクタの集合を記憶するためのメモリであって、少なくとも1つのホストの実アドレスを圧縮データが記憶される前記装置内のアドレスに変換するためのディレクトリを含むメモリと、
前記メモリを管理するための制御ロジックであって、メモリ圧縮器/圧縮解除器を含む制御ロジックとを具備し、
前記少なくとも1つのホストの前記実アドレスが、該少なくとも1つのホストのIDと、前記装置の所望のメモリ・セグメントのセグメント番号と、該所望のメモリ・セグメント内のオフセットとから成り、
前記制御ロジックがレジスタのマトリックスをさらに具備し、該マトリックスの各行がそれぞれ異なるホストIDに対応し、各列がそれぞれ異なるセグメント番号に対応し、それにより、前記少なくとも1つのホストの前記実アドレスのうち、前記少なくとも1つのホストのIDと前記所望のメモリ・セグメントのセグメント番号によって決定される特定のレジスタの内容を前記オフセットと連結して前記装置が管理する実アドレスを生成する、装置。
Multiple hosts are connected by an interconnection network, in a computer system having a real address space that each host associated with each coupled to the interconnection network, the memory sectors of the plurality of host stores the compressed data A device for enabling sharing of a set of
And a network adapter for coupling the device to the interconnection network,
A memory for storing a set of said memory sectors, the memory containing a directory for converting address within the device the compressed data the real address of the at least one host is stored,
A control logic for managing the memory, and a control logic including a memory compressor / decompressor,
The real address of the at least one host comprises an ID of the at least one host, a segment number of a desired memory segment of the device, and an offset within the desired memory segment;
The control logic further comprises a matrix of registers, wherein each row of the matrix corresponds to a different host ID and each column corresponds to a different segment number, so that of the real address of the at least one host A device that concatenates the contents of a specific register determined by the ID of the at least one host and a segment number of the desired memory segment with the offset to generate a real address managed by the device.
前記複数のホストの各々に関連して、当該各ホストの使用可能な実アドレス空間の上限を表すものとして当該各ホストに認可されたセクタの最大数を記憶するための1つのしきい値レジスタと、当該各ホストが使用するセクタの数を記憶するための1つのカウンタ・レジスタとをそれぞれ含む1組のレジスタをさらに具備する、請求項1に記載の装置。 In connection with each of the plurality of hosts, one threshold value register for storing the maximum number of the sector to which the approved in each host as representing the upper limit of the real address space available for each host When, further comprising a set of registers including the one counter register for storing the number of sectors to which the each host uses each device of claim 1. 少なくとも1つのホストに関連する前記しきい値レジスタの値と少なくとも1つのホストに関連する前記カウンタ・レジスタの値とを比較して、該のカウンタ・レジスタの値がしきい値レジスタの値を超えているかどうかを判定するための比較器をさらに具備する、請求項に記載の装置。By comparing the value of the counter register associated with the values and the at least one host in the threshold register associated with at least one host, the value of the counter register of the threshold value register value The apparatus according to claim 2 , further comprising a comparator for determining whether or not. 前記メモリが複数のディレクトリをさらに具備し、各ディレクトリが前記複数のホストのうちの各ホストのそれぞれ異なる実アドレス空間に対応する、請求項1に記載の装置。The apparatus of claim 1, wherein the memory further comprises a plurality of directories, each directory corresponding to a different real address space of each host of the plurality of hosts. 前記メモリがホストID/ディレクトリ変換テーブルをさらに具備し、少なくとも1つのホストが生成するホストIDを使用して、前記複数のディレクトリのうち当該少なくとも1つのホストに対応するディレクトリを選択し、当該ディレクトリが当該少なくとも1つのホストの実アドレスを前記装置の物理アドレスに変換する、請求項に記載の装置。 Wherein the memory further comprises a host ID / directory conversion table, using a host ID of at least one host generates, select the directory that corresponds to the at least one host of the plurality of directories and the directory converting the real address of the at least one host to a physical address of the device, according to claim 4.
JP2003149410A 2003-05-27 2003-05-27 Apparatus for allowing a plurality of hosts to share a set of memory sectors storing compressed data Expired - Fee Related JP3808058B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003149410A JP3808058B2 (en) 2003-05-27 2003-05-27 Apparatus for allowing a plurality of hosts to share a set of memory sectors storing compressed data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003149410A JP3808058B2 (en) 2003-05-27 2003-05-27 Apparatus for allowing a plurality of hosts to share a set of memory sectors storing compressed data

Publications (2)

Publication Number Publication Date
JP2004355124A JP2004355124A (en) 2004-12-16
JP3808058B2 true JP3808058B2 (en) 2006-08-09

Family

ID=34045521

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003149410A Expired - Fee Related JP3808058B2 (en) 2003-05-27 2003-05-27 Apparatus for allowing a plurality of hosts to share a set of memory sectors storing compressed data

Country Status (1)

Country Link
JP (1) JP3808058B2 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4715723B2 (en) * 2006-10-31 2011-07-06 日本電気株式会社 Memory management device
US10503661B2 (en) * 2014-05-21 2019-12-10 Qualcomm Incorporated Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
US11240334B2 (en) * 2015-10-01 2022-02-01 TidalScale, Inc. Network attached memory using selective resource migration
US10191850B2 (en) * 2016-03-31 2019-01-29 Qualcomm Incorporated Providing memory bandwidth compression using multiple last-level cache (LLC) lines in a central processing unit (CPU)-based system
US11023135B2 (en) 2017-06-27 2021-06-01 TidalScale, Inc. Handling frequently accessed pages
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
US11175927B2 (en) 2017-11-14 2021-11-16 TidalScale, Inc. Fast boot

Also Published As

Publication number Publication date
JP2004355124A (en) 2004-12-16

Similar Documents

Publication Publication Date Title
US7039769B2 (en) Direct addressed shared compressed memory system
US10423435B1 (en) Page swapping in virtual machine environment
US8627040B2 (en) Processor-bus-connected flash storage paging device using a virtual memory mapping table and page faults
US7620766B1 (en) Transparent sharing of memory pages using content comparison
US8453015B2 (en) Memory allocation for crash dump
US7206915B2 (en) Virtual space manager for computer having a physical address extension feature
US4742450A (en) Method to share copy on write segment for mapped files
US5899994A (en) Flexible translation storage buffers for virtual address translation
US9811465B2 (en) Computer system and cache control method
US5765201A (en) Changing page size in storage media of computer system
US6877158B1 (en) Logical partitioning via hypervisor mediated address translation
US20040117594A1 (en) Memory management method
US20030110205A1 (en) Virtualized resources in a partitionable server
US20090164715A1 (en) Protecting Against Stale Page Overlays
US8694563B1 (en) Space recovery for thin-provisioned storage volumes
KR100515229B1 (en) Method and system of managing virtualized physical memory in a multi-processor system
TW567413B (en) Apparatus, method and computer program product for privatizing operating system data
US10268592B2 (en) System, method and computer-readable medium for dynamically mapping a non-volatile memory store
EP3163451B1 (en) Memory management method and device, and memory controller
US5293622A (en) Computer system with input/output cache
US6457107B1 (en) Method and apparatus for reducing false sharing in a distributed computing environment
JP3808058B2 (en) Apparatus for allowing a plurality of hosts to share a set of memory sectors storing compressed data
WO2013023090A2 (en) Systems and methods for a file-level cache
JPS6184755A (en) Data processing system
US8041851B2 (en) Generic DMA memory space mapping

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20030527

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050622

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050908

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051209

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: 20060509

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060516

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: 20100526

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees