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 PDFInfo
- 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
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上で同時にUPSを実行することができる。この特許は、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、すなわち、セグメント番号を使用して、所望のセグメントを指定し(したがって、この部分の長さはlog2(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
[0005]
FIG. 2 includes further details to better understand the operation of the
[0006]
The
[0007]
FIG. 3 shows a possible organization for items in the directory or
[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
[0025]
[0026]
FIG. 5 shows the general architecture of
[0027]
As described above, the
[0028]
The
[0029]
The
[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
[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
[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
[0034]
The
(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,
(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
[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
[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
[0037]
With the method of FIG. 6, the
[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
[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
[0040]
In other embodiments, a
[0041]
When the
[0042]
When SCMS manages a large number of segments, the
[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
[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
[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
[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.
[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.
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)
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 |
-
2003
- 2003-05-27 JP JP2003149410A patent/JP3808058B2/en not_active Expired - Fee Related
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 |