(57)【要約】【課題】複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムにおいて、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにし、メモリ・セクタが圧縮データを記憶する装置を提供すること。【解決手段】この装置は、装置を相互接続ネットワークに結合するためのネットワーク・アダプタと、メモリ・セクタの集合を記憶するためのメモリと、メモリを管理するための制御ロジックとを含み、制御ロジックはメモリ圧縮器／圧縮解除器を含む。メモリは、少なくとも１つのホストの実アドレスを装置内のアドレスに変換するためのディレクトリをさらに含む。各ホストが使用するいくつかのメモリ・セクタを管理するための方法と、少なくとも１つのホストが指定する実アドレスをその装置の実アドレスに変換するための方法も提供する。【選択図】  図５
2004355124.tif 000002
【特許請求の範囲】
【請求項１】
各ホストが関連の実アドレス空間を１つずつ有する複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムにおいて、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにし、メモリ・セクタが圧縮データを記憶する装置であって、
装置を相互接続ネットワークに結合するためのネットワーク・アダプタと、
メモリ・セクタの集合を記憶するためのメモリであって、少なくとも１つのホストの実アドレスを圧縮データが記憶される装置内のアドレスに変換するためのディレクトリを含むメモリと、
メモリを管理するための制御ロジックであって、メモリ圧縮器／圧縮解除器を含む制御ロジックとを具備する装置。
【請求項２】
３次記憶装置をさらに具備する、請求項１に記載の装置。
【請求項３】
メモリが直接マップ領域と未圧縮領域とをさらに具備する、請求項１に記載の装置。
【請求項４】
１組のレジスタであって、各ホストに認可された最大数のセクタを記憶するための複数のしきい値レジスタと、各ホストが使用するいくつかのセクタを記憶するための複数のカウンタ・レジスタとを含む１組のレジスタをさらに具備する、請求項１に記載の装置。
【請求項５】
少なくとも１つのホストのしきい値レジスタの値と少なくとも１つのホストのカウンタ・レジスタの値とを比較して、カウンタ・レジスタの値がしきい値レジスタを超えているかどうかを判定するための比較器をさらに具備する、請求項４に記載の装置。
【請求項６】
少なくとも１つのホストの実アドレスが、少なくとも１つのホストのＩＤと、装置の所望のメモリ・セグメントと、所望のセグメントのオフセットとを具備する、請求項１に記載の装置。
【請求項７】
実アドレスが種々の装置内の割振り済みセグメントをさらに具備する、請求項６に記載の装置。
【請求項８】
制御ロジックがレジスタのマトリックスをさらに具備し、マトリックスの各行がそれぞれ異なるホストＩＤに対応し、各列がそれぞれ異なるセグメント番号に対応し、それにより、少なくとも１つのホストのＩＤと所望のメモリ・セグメントによって決定される特定のレジスタの内容が、結果的に装置が管理する実アドレスになるオフセットに連結される、請求項６に記載の装置。
【請求項９】
制御ロジックがレジスタのアレイをさらに具備し、そのアレイが装置のいくつかのメモリ・セグメントに対応するいくつかのレジスタを含み、各レジスタがサポートされる各ホストごとに１つのビットを具備し、それにより、その１つのビットが１に等しい場合に、所望のメモリ・セグメントが、結果的に装置が管理する実アドレスになるオフセットに連結され、その１つのビットが０に等しい場合に、少なくとも１つのホストがそのセグメントへのアクセスを拒否される、請求項１に記載の装置。
【請求項１０】
制御ロジックが、装置の各管理メモリ・セグメントごとに１つの行を含み、第１の列がキーを含み、第２の列が値を含む連想メモリをさらに具備し、そのキーが所望のメモリ・セグメントについて複数のホストが提供する開始実アドレスであり、その値が装置内のセグメントの開始実アドレスであり、それにより、少なくとも１つのホストの探索キーによって決定される値が、結果的に装置が管理する実アドレスになるオフセットに連結される、請求項１に記載の装置。
【請求項１１】
コンピュータ・システムが複数の装置をさらに具備し、その装置が、装置の数、複数の装置のそれぞれのアドレス、複数の装置のそれぞれに割り振られたいくつかのセグメント、記憶されたデータの圧縮率などの他の装置の情報を含む、請求項１に記載の装置。
【請求項１２】
メモリが複数のディレクトリをさらに具備し、各ディレクトリが複数のホストのうちの各ホストのそれぞれ異なる実アドレス空間に対応する、請求項１に記載の装置。
【請求項１３】
メモリがホストＩＤ／ディレクトリ変換テーブルをさらに具備し、少なくとも１つのホストが生成するホストＩＤを使用して、複数のディレクトリのうち少なくとも１つのホストに対応するディレクトリを選択し、そのディレクトリが少なくとも１つのホストの実アドレスを装置の物理アドレスに変換する、請求項１２に記載の装置。
【請求項１４】
相互接続ネットワークにより接続されるホストと、各装置がメモリ・セクタの集合を含む複数の装置であって、相互接続ネットワークに結合され、ホストが複数の装置間でメモリ・セクタの集合を共用できるようにし、メモリ・セクタが圧縮データを記憶する複数の装置とを具備するコンピュータ・システム。
【請求項１５】
ホストの実アドレスの連続サブセットが複数の装置にわたって分散される、請求項１４に記載のコンピュータ・システム。
【請求項１６】
複数の装置のうちの少なくとも１つの装置が、装置の数、複数の装置のそれぞれのアドレス、複数の装置のそれぞれに割り振られたいくつかのセグメント、記憶されたデータの圧縮率などの他の装置の情報を含む、請求項１４に記載のコンピュータ・システム。
【請求項１７】
複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムであって、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにするための装置を含み、メモリ・セクタが圧縮データを記憶するコンピュータ・システムにおいて、各ホストが使用するいくつかのメモリ・セクタを管理するための方法であって、
各ホストに認可すべき最大数のセクタを決定するステップと、
少なくとも１つのホストに認可された最大数のセクタを記憶するためのしきい値レジスタを少なくとも１つのホストに割り振るステップと、
少なくとも１つのホストが使用するいくつかのセクタを記憶するためのカウンタ・レジスタを少なくとも１つのホストに割り振るステップと、
少なくとも１つのホストのしきい値レジスタの値と少なくとも１つのホストのカウンタ・レジスタの値とを比較して、カウンタ・レジスタの値がしきい値レジスタを超えているかどうかを判定するステップとを具備する方法。
【請求項１８】
少なくとも１つのホストのＩＤにより、少なくとも１つのホストの関連のしきい値レジスタとカウンタ・レジスタを選択するステップをさらに具備する、請求項１７に記載の方法。
【請求項１９】
少なくとも１つのホストが解放動作を実行するときに、少なくとも１つのホストが解放する１組の実アドレスが使用するいくつかのセクタ分だけカウンタ・レジスタを減分するステップをさらに具備する、請求項１７に記載の方法。
【請求項２０】
カウンタ・レジスタの値がしきい値レジスタを超えている場合に、使用するセクタの数が認可されているセクタの数を超えていることを少なくとも１つのホストに信号で知らせるステップをさらに具備する、請求項１７に記載の方法。
【請求項２１】
カウンタ・レジスタの値がしきい値レジスタを超えている場合に、少なくとも１つのホストが使用するセクタの数を削減するステップをさらに具備する、請求項１７に記載の方法。
【請求項２２】
少なくとも１つのホストが書込み動作を実行するときに、書き込むべきメモリ・ラインを圧縮するステップと、そのメモリ・ラインが使用するいくつかのセクタ分だけカウンタ・レジスタを増分するステップとをさらに具備する、請求項１７に記載の方法。
【請求項２３】
カウンタ・レジスタの値がしきい値レジスタを超えている場合に、少なくとも１つのホストによる書込み動作を防止するステップをさらに具備する、請求項２２に記載の方法。
【請求項２４】
書込み動作が失敗したことを少なくとも１つのホストに通知するステップをさらに具備する、請求項２３に記載の方法。
【請求項２５】
複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムであって、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにするための装置を含み、メモリ・セクタが圧縮データを記憶するコンピュータ・システムにおいて、少なくとも１つのホストが指定する実アドレスをその装置の実アドレスに変換するための方法であって、
ホスト指定の実アドレスを使用して装置の所望の実アドレスを少なくとも１つのホストにより要求するステップと、
ホスト指定の実アドレスを使用して装置内のデータ保持位置を識別するステップと、
データ保持位置の内容を使用して第１の値を決定するステップと、
結果的に装置の実アドレスになるオフセットに第１の値を連結するステップとを具備する方法。
【請求項２６】
ホスト指定の実アドレスをホストＩＤと、セグメント番号と、オフセットに分解するステップをさらに具備する、請求項２５に記載の方法。
【請求項２７】
データ保持位置がレジスタのマトリックスであり、マトリックスの各行が少なくとも１つのホストのそれぞれ異なるホストＩＤに対応し、各列がそれぞれ異なるセグメント番号に対応する、請求項２６に記載の方法。
【請求項２８】
識別ステップが、少なくとも１つのホストのホストＩＤを使用してマトリックスの１つの行を選択し、セグメント番号を使用してマトリックスの１つの列を選択することにより、マトリックス内の１つのレジスタを識別することをさらに具備する、請求項２７に記載の方法。
【請求項２９】
決定ステップが、識別されたレジスタの内容を第１の値として提供することをさらに具備する、請求項２８に記載の方法。
【請求項３０】
データ保持位置がレジスタのアレイであり、そのアレイが装置のいくつかのセグメントに対応するいくつかのレジスタを含む、請求項２５に記載の方法。
【請求項３１】
各レジスタが、サポートされる各ホストごとに１つのビットを具備し、サポートされるホストがそのセグメントへのアクセスを許可されている場合にそのビットが１に設定され、サポートされるホストがそのセグメントへのアクセスを許可されていない場合にそのビットが０に設定される、請求項３０に記載の方法。
【請求項３２】
識別ステップが、アレイのうち、ホスト指定の実アドレスから抽出したセグメント番号に対応するレジスタを識別することをさらに具備する、請求項３１に記載の方法。
【請求項３３】
決定ステップが、
少なくとも１つのホストによって提供されるホストＩＤに対応する、識別されたレジスタ内の１つのビットをチェックするステップと、
その１つのビットが１に等しい場合に、セグメント番号を第１の値として提供するステップとをさらに具備する、請求項３２に記載の方法。
【請求項３４】
決定ステップが、
少なくとも１つのホストによって提供されるホストＩＤに対応する、識別されたレジスタ内の１つのビットをチェックするステップと、
その１つのビットが０に等しい場合に、そのセグメントがアクセス不能であることを示し、少なくとも１つのホストに送られるエラー信号を生成するステップとをさらに具備する、請求項３２に記載の方法。
【請求項３５】
データ保持位置が、装置の各管理セグメントごとに１つの行を含み、第１の列がキーを含み、第２の列が第２の値を含む連想メモリであり、そのキーが所望のセグメントについて複数のホストが提供する開始実アドレスであり、その第２の値が装置内のセグメントの開始実アドレスである、請求項２５に記載の方法。
【請求項３６】
ホスト指定のアドレスを探索キーとオフセットに分解するステップをさらに具備する、請求項３５に記載の方法。
【請求項３７】
識別ステップが、少なくとも１つのホストの探索キーを使用して連想メモリの１つの行を識別することをさらに具備する、請求項３６に記載の方法。
【請求項３８】
決定ステップが、識別された行に対応する第２の値を第１の値として提供することをさらに具備する、請求項３７に記載の方法。
【請求項３９】
複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムであって、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにするための装置を含み、メモリ・セクタが圧縮データを記憶するコンピュータ・システムにおいて、マシンによって読取り可能であり、各ホストが使用するいくつかのメモリ・セクタを管理するための方法ステップを実行するためにマシンによって実行可能な複数命令からなるプログラムを具体的に実施するプログラム記憶装置であって、その方法ステップが、
各ホストに認可すべき最大数のセクタを決定するステップと、
少なくとも１つのホストに認可された最大数のセクタを記憶するためのしきい値レジスタを少なくとも１つのホストに割り振るステップと、
少なくとも１つのホストが使用するいくつかのセクタを記憶するためのカウンタ・レジスタを少なくとも１つのホストに割り振るステップと、
少なくとも１つのホストのしきい値レジスタの値と少なくとも１つのホストのカウンタ・レジスタの値とを比較して、カウンタ・レジスタの値がしきい値レジスタを超えているかどうかを判定し、カウンタ・レジスタの値がしきい値レジスタを超える場合に、少なくとも１つのホストの書込み動作を拒否するステップとを具備するプログラム記憶装置。
【請求項４０】
複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムであって、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにするための装置を含み、メモリ・セクタが圧縮データを記憶するコンピュータ・システムにおいて、マシンによって読取り可能であり、少なくとも１つのホストが指定する実アドレスをその装置の実アドレスに変換するための方法ステップを実行するためにマシンによって実行可能な複数命令からなるプログラムを具体的に実施するプログラム記憶装置であって、その方法ステップが、
ホスト指定の実アドレスを使用して装置の所望の実アドレスを少なくとも１つのホストにより要求するステップと、
ホスト指定の実アドレスを使用して装置内のデータ保持位置を識別するステップと、
データ保持位置の内容を使用して第１の値を決定するステップと、
結果的に装置の実アドレスになるオフセットに第１の値を連結するステップとを具備するプログラム記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ・アーキテクチャに関し、より具体的には、複数のホストがメモリ・セクタの集合を共用できるようにし、そのメモリ・セクタを使用して圧縮データを記憶するネットワーク接続装置に関する。この装置は、以下、「直接アドレス指定共用圧縮メモリ・システム」（ＳＣＭＳ）と呼ぶ。
【０００２】
本発明は、ホストによって生成された実アドレスをＳＣＭＳによって管理される実アドレスに変換するための方法であって、次にその実アドレスが圧縮メモリ管理システムによって物理アドレスに変換される方法と、メモリ内容保護を確実にするための方法と、種々のホスト間でメモリの内容を共用するためのメカニズムと、複数のＳＣＭＳにわたって１つのホストの実アドレス空間の連続部分を分散させるための方法と、各ホストに対して所与の数のメモリ・セクタを保証できることを確実にするための方法とを含む。
【０００３】
【従来の技術】
コンピュータ編成において新たに発展したものの１つは、コンピュータ・システムのメイン・メモリでデータ圧縮を使用することである。実メモリ、すなわち、メモリに記憶されたデータに対応する１組のプロセッサ・アドレスは、通常、固定数の連続プロセッサ・アドレスに対応する、いくつかのペアワイズ・ディスジョイント・セグメントに分割される。ペアワイズ・ディスジョイントにより、各実アドレスがこのようなセグメントのうちの唯一無二のセグメントに属することになる。このようなセグメントはメモリ・ラインと呼ぶ。メモリ・ラインは圧縮の単位である。圧縮メモリに記憶されたメモリ・ラインは圧縮され、可変数の記憶場所に記憶され、その数はその内容がどの程度十分に圧縮しているかによって決まる。インターナショナル・ビジネス・マシン（ＩＢＭ）コーポレーションでは、メイン・メモリの内容が圧縮されるコンピュータ・システムに関するいくつかの特許を有する。このようなシステムの例は、１９９８年３月１７日にＦｒａｎａｓｚｅｋ他に交付され、「Ｐａｒａｌｌｅｌ  ｃｏｍｐｒｅｓｓｉｏｎ  ａｎｄ  ｄｅｃｏｍｐｒｅｓｓｉｏｎ  ｕｓｉｎｇ  ａ  ｃｏｏｐｅｒａｔｉｖｅ  ｄｉｃｔｉｏｎａｒｙ」という名称の米国特許第５７２９２２８号、１９９８年６月２日にＦｒａｎａｓｚｅｋに交付され、「Ｓｙｓｔｅｍａｎｄ  ｍｅｔｈｏｄ  ｆｏｒ  ｒｅｄｕｃｉｎｇ  ｍｅｍｏｒｙ  ｆｒａｇｍｅｎｔａｔｉｏｎ  ｂｙ  ａｓｓｉｇｎｉｎｇ  ｒｅｍａｉｎｄｅｒｓ  ｔｏ  ｓｈａｒｅｍｅｍｏｒｙ  ｂｌｏｃｋｓ  ｏｎ  ａ  ｂｅｓｔ  ｆｉｔ  ｂａｓｉｓ」という名称の米国特許第５７６１５３６号、１９９９年１月２６日にＦｒａｎａｓｚｅｋに交付され、「Ｓｙｓｔｅｍａｎｄ  ｍｅｔｈｏｄ  ｏｆ  ｃｏｍｐｒｅｓｓｉｏｎ  ａｎｄ  ｄｅｃｏｍｐｒｅｓｓｉｏｎ  ｕｓｉｎｇ  ｓｔｏｒｅ  ａｄｄｒｅｓｓｉｎｇ」という名称の米国特許第５８６４８５９号に開示されている。
【０００４】
図１は、このようなデータ圧縮機能を有する例示的なシステムを示している。図１の中央演算処理装置（ＣＰＵ）１０２は、１つまたは複数のキャッシュ１０４にデータを読み込み、そこからデータを書き出す。キャッシュ・ミスおよびストアの結果、圧縮コントローラ１０６により圧縮メイン・メモリ１１０からの読取りおよびそこへの書込みが行われる。圧縮メイン・メモリ１１０は、データ部分１０８とディレクトリ１０７（圧縮変換テーブルＣＴＴとしても知られている）という２つの部分に分割される。データ部分１０８は、ペアワイズ・ディスジョイント・セクタ、すなわち、固定サイズ間隔の物理的記憶場所に分割される。たとえば、１つのセクタは、連続物理アドレスを有する２５６の物理バイトから構成される可能性がある。１つの圧縮メモリ・ラインの内容は、可能な最小数の物理セクタに記憶される。１つの圧縮ラインを含む物理セクタは、連続物理アドレスを有する必要がなく、圧縮メイン・メモリ１１０のデータ部分１０８内のどこにでも位置することができる。１つのバイトの実アドレスとそれを含む物理セクタのアドレスとの変換は、ディレクトリまたはＣＴＴ１０７を介して実行される。
【０００５】
図２は、圧縮メモリ２１０の動作をより十分に理解するためにさらに詳細を含んでいる。プロセッサ・キャッシュ２４０は、未圧縮キャッシュ・ライン２４１とキャッシュ・ディレクトリ２４２とを含み、そのキャッシュ・ディレクトリは各キャッシュ・ラインの実アドレスを記憶する。例示のため、１つのキャッシュ・ラインは１つのメモリ・ライン（圧縮の単位）と同じサイズを有するものと想定する。キャッシュ・ミスが発生すると、そのミスを引き起こした実アドレス２７０を提供することにより、キャッシュは対応するラインをメモリから要求する。この実アドレスは、ｌｏｇ２（）が２を底とする対数である場合にそのライン内のアドレスのオフセットであるｌｏｇ２（ライン長）個の最下位ビットと、サポートされる実アドレス範囲の各ラインごとに１つのライン項目を含むディレクトリ２２０内のインデックスとして使用する残りのビットという２つの部分に分割される。図２のアドレスＡ１（２７１）はライン項目１（２２１）に対応し、アドレスＡ２（２７２）はライン項目２（２２２）に対応し、アドレスＡ３（２７３）はライン項目３（５１３）に対応し、アドレスＡ４（２７４）はライン項目４（５１４）に対応する。圧縮メイン・メモリに圧縮データを記憶するための種々の方法を示すために、この例では種々のアドレスを使用する。この例では、アドレスＡ１を有するラインが非常に十分に圧縮している（たとえば、すべてゼロから構成されるライン）。このようなラインはＣＴＴ項目２２１に完全に記憶され、メモリ・セクタを必要としない。アドレスＡ２のラインはあまり十分に圧縮しておらず、２つのメモリ・セクタ２３１および２３２を必要とし、これらはデータ・セクション２３０に記憶される。ライン項目２２２は、メモリ・セクタ２３１および２３２を指すポインタを含む。メモリ・セクタ２３２の最後の部分は未使用であることに留意されたい。アドレスＡ３を有するラインは、３つのメモリ・セクタ２３３、２３４、２３５を必要とする。セクタ２３５内に未使用のまま残っている空間は、実アドレスＡ４を有する圧縮ラインの部分を記憶するのに十分な長さであり、次にそれがセクタ２３６と、２３５の一部とを使用する。アドレスＡ４およびＡ３のラインはルームメートと呼ばれる。
【０００６】
圧縮器２６１は、キャッシュ内のダーティ・ラインをメモリにライトバックするときに使用する。キャッシュ・ライトバックが行われると、ダーティ・ラインは圧縮される。それがライトバック以前に使用していたのと同じ量のメモリに収まる場合、それは所定の位置に記憶される。そうではない場合、それは適切な数のセクタに書き込まれる。必要なセクタの数が減少した場合、未使用セクタはフリーセクタ・リストに追加される。必要なセクタの数が増加した場合、それらはフリーセクタ・リストから取り出される。
【０００７】
図３は、ディレクトリまたはＣＴＴ２２０内の項目について可能な編成を示している。３通りのライン編成を例示する。項目１（３０６）は、１組のフラグ（３０１）と、４つのセクタのアドレスとを含む。ライン・サイズが１０２４バイトであり、メモリ・セクタ・サイズが２５６である場合、そのラインは多くても４つのセクタを必要とする。項目２（３０７）は、１組のフラグと、そのラインが使用する最初のセクタのアドレスと、圧縮ラインの先頭と、そのラインが使用する最後のセクタのアドレスとを含む。そのラインが３つ以上のメモリ・セクタを必要とする場合、そのセクタはポインタのリンク・リストによって接続される（すなわち、各メモリ・セクタは次のセクタのアドレスを含む）。項目３は、１組のフラグと、１２０ビット以下に圧縮している高圧縮ラインとを含む。この例のフラグは、そのラインが圧縮フォーマットで記憶されているかまたは未圧縮であるかを示すフラグ３０２と、そのラインが高圧縮性であり、そのディレクトリ項目に完全に記憶されるかどうかを示すフラグ３０３と、そのラインがいくつのセクタを使用するかを示すフラグ３０４（２ビット）と、フラグメント情報、すなわち、最後に使用するセクタのどの部分がそのラインによって占有されるか（この情報はルームメート化に使用する）を含むフラグ３０５（４ビット）にすることができる。上記の圧縮メモリ編成に依拠するメモリ圧縮を備えたシステムで達成可能な最大圧縮比はディレクトリのサイズによって決まり、すなわち、実アドレスの最大数はそのディレクトリ内のディレクトリ項目の数に等しくなる。
【０００８】
関連分野では、たとえば、「Ｐａｒｔｉｔｉｏｎｅｄｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  ｐｒｏｇｒａｍｍｉｎｇ  ｓｙｓｔｅｍ」という名称の米国特許第４５６４９０３号においてＲ．Ｒ．Ｇｕｙｅｔｔｅ他により、未圧縮メモリを区分化するための方法が教示されている。この特許は、主記憶装置（ＭＳ）を共用する複数のＣＰＵと、複数の入出力装置をＭＳに接続するための入出力処理手段とを有するマルチプロセッサ（ＭＰ）システムのための制御方法を教示するものであり、この制御方法により、ＭＰは、ＵＰＳが同じアーキテクチャまたはＭＰとは異なるアーキテクチャを有するユニプロセッサ（ＵＰ）システム上でのみ実行するように設計されていても、ＭＰ内の複数のＣＰＵ上で同時にユニプロセッサ・プログラミング・システム（ＵＰＳ）を実行することができる。この特許は、ＭＰシステム内に含まれる非圧縮メモリのための装置および方法を教示するものである。しかし、ＭＰシステムの一部ではない圧縮メモリのための装置および方法や、種々のコンピュータ・システムによって共用され、それらのコンピュータ・システムのいずれの一部でもない圧縮メモリのための装置および方法を教示するものではない。
【０００９】
区分化については、たとえば、１９８９年６月２７日にＧ．Ｈ．Ｂｅａｎ他に交付され、「Ｌｏｇｉｃａｌ  ｒｅｓｏｕｒｃｅ  ｐａｒｔｉｔｉｏｎｉｎｇ  ｏｆ  ａ  ｄａｔａ  ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍ」という名称の米国特許第４８４３５４１号にも教示されている。この特許は、データ処理システム内のゲスト操作をゲストに割り当てられたシステム・リソースに制限する方法を教示するものであり、システム内のリソースとしては、１つまたは複数の実ＣＰＵと、システム主記憶装置（ＭＳ）と、任意選択のシステム拡張記憶装置（ＥＳ）と、それぞれの入出力装置を備えた複数の入出力装置制御ユニットをシステムに接続するために入出力プロセッサを使用する複数の入出力チャネルと、ソフトウェアを含むホスト・ハイパーバイザ（ホスト）であって、同時かつ独立してシステム内で動作可能な複数のソフトウェア制御プログラム（ゲスト）を監視し、ゲストが同じタイプまたは種々のタイプの制御プログラムにすることができるホストと、ホストおよびゲストへの入出力装置を表すためのサブチャネル（ＳＣＨ）とを含み、各ゲストが割り当てられたサブセット（区分）のシステム・リソースに制限される。しかし、この特許は、種々のホスト間でネットワーク接続圧縮メモリを共用することを教示するものではない。
【００１０】
当技術分野で教示されている区分化は、コンピュータ上で実行されるソフトウェア・コンポーネントが認識する実アドレスをコンピュータが管理する実アドレスに変換するための方法を具備する。このようなソフトウェア・コンポーネントは、同じオペレーティング・システムまたは種々のオペレーティング・システムの複数のイメージにすることができ、したがって、論理／実アドレス変換を実行することができる。区分化では、このようなソフトウェア・コンポーネントが生成する実アドレスを論理アドレスとして扱い、後続の論理／実変換を実行する。ハードウェアがメモリ圧縮をサポートしていない場合、実アドレスは物理アドレスと同等のものである。しかし、メモリが圧縮されている場合、実アドレスは物理アドレスと同等のものではなく、後続の変換が必要である。従来の区分化は、特定の区分で実行されるソフトウェア・コンポーネントが他の区分で実行されるソフトウェア・コンポーネントのメモリの内容にアクセスするのを防止する保護メカニズムも含む。
【００１１】
しかし、当技術分野で教示されている区分化は、データを使用するソフトウェア・コンポーネントが実行されるコンピュータ・システムから物理的に分離した装置内でメモリ・リソースを共用する方法ならびにセキュリティ・メカニズムに対処するものではなく、したがって、共用およびセキュリティ・メカニズムはコンピュータ・システムによって制御されず、実際にはこのようなコンピュータ・システムにとって透過になる。
【００１２】
【発明が解決しようとする課題】
本発明は、複数のホストがネットワークにより接続されるコンピュータ・システムにおいて、同じくネットワークに接続され、ホストの論理実メモリを拡張し、そのメモリの内容を圧縮形式で維持する機能を提供するネットワーク接続装置を提供する。本発明のネットワーク接続装置は、直接アドレス指定共用圧縮メモリ・システム（以下、ＳＣＭＳと呼ぶ）である。ＳＣＭＳは、その内部実メモリ空間をセグメントと呼ばれる隣接実アドレス範囲に分割し、その物理メモリをセクタと呼ばれる隣接物理アドレス範囲の共通プールに分割する。ホストは、このようなデバイスからのセグメントを割り振り、その内部メモリをアドレス指定するように、すなわち、実アドレスによりその内容をアドレス指定することができる。ＳＣＭＳは、ホストが提供するメモリ・アドレスを内部実アドレスに変換し、その実アドレスは、圧縮メモリ・ディレクトリ（ＣＴＴ）によって、圧縮データが実際に記憶されるセクタの物理アドレスに変換される。セグメントは、可変数の物理セクタに動的に関連づけられる。１つのセグメント内に記憶されたデータの圧縮率が減少すると、そのセグメントに関連づけられた物理セクタの数が増加し、逆もまた同じである。本発明は、特に、共通プールからメモリ・セグメントへの物理セクタの割当てを管理するための装置および方法を提供するが、これはメモリ圧縮をサポートしていない同様のデバイスまたはメモリ圧縮をサポートしている通常のコンピュータにも存在しないものと思われる。
【００１３】
【課題を解決するための手段】
本発明の一実施形態によれば、複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムにおいて、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにし、メモリ・セクタが圧縮データを記憶する装置が提供される。この装置は、装置を相互接続ネットワークに結合するためのネットワーク・アダプタと、メモリ・セクタの集合を記憶するためのメモリと、メモリを管理するための制御ロジックとを含み、制御ロジックはメモリ圧縮器／圧縮解除器を含む。メモリは、少なくとも１つのホストの実アドレスを装置内のアドレスに変換するためのディレクトリをさらに含む。
【００１４】
他の実施形態では、この装置の制御ロジックはレジスタのマトリックスをさらに含み、マトリックスの各行はそれぞれ異なるホストＩＤに対応し、各列はそれぞれ異なるセグメント番号に対応し、それにより、少なくとも１つのホストのＩＤと所望のセグメントによって決定される特定のレジスタの内容は、結果的に装置の実アドレスになるオフセットに連結される。
【００１５】
さらに他の実施形態では、この装置の制御ロジックはレジスタのアレイを含み、そのアレイは装置のいくつかのセグメントに対応するいくつかのレジスタを含み、各レジスタがサポートされる各ホストごとに１つのビットを具備し、それにより、その１つのビットが１に等しい場合に、所望のセグメントは結果的に装置の実アドレスになるオフセットに連結され、その１つのビットが０に等しい場合に、少なくとも１つのホストはそのセグメントへのアクセスを拒否される。
【００１６】
本発明のさらに他の実施形態では、この装置の制御ロジックは、装置の各管理セグメントごとに１つの行を含み、第１の列がキーを含み、第２の列が値を含む連想メモリを含み、そのキーは所望のセグメントについて複数のホストが提供する開始実アドレスであり、その値は装置内のセグメントの開始実アドレスであり、それにより、少なくとも１つのホストの探索キーによって決定される値は、結果的に装置の実アドレスになるオフセットに連結される。
【００１７】
他の実施形態によれば、相互接続ネットワークにより接続されるホストと、各装置がメモリ・セクタの集合を含む複数の装置とを含み、複数の装置が相互接続ネットワークに結合され、ホストが複数の装置間でメモリ・セクタの集合を共用できるようにし、メモリ・セクタが圧縮データを含む、コンピュータ・システムが提供される。ホストの実アドレスの連続サブセットが複数の装置にわたって分散される。
【００１８】
本発明のさらに他の実施形態では、複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムであって、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにするための装置を含み、メモリ・セクタが圧縮データを記憶するコンピュータ・システムにおいて、各ホストが使用するいくつかのメモリ・セクタを管理するための方法が提供される。この方法は、各ホストに認可すべき最大数のセクタを決定するステップと、少なくとも１つのホストに認可された最大数のセクタを記憶するためのしきい値レジスタを少なくとも１つのホストに割り振るステップと、少なくとも１つのホストが使用するいくつかのセクタを記憶するためのカウンタ・レジスタを少なくとも１つのホストに割り振るステップと、少なくとも１つのホストのしきい値レジスタの値と少なくとも１つのホストのカウンタ・レジスタの値とを比較して、カウンタ・レジスタの値がしきい値レジスタを超えているかどうかを判定するステップとを含む。
【００１９】
この方法は、カウンタ・レジスタの値がしきい値レジスタを超えている場合に少なくとも１つのホストによる書込み動作を防止するステップと、書込み動作が失敗したことをこのような１つまたは複数のホストのそれぞれに通知するステップとをさらに含む。
【００２０】
本発明のさらに他の実施形態によれば、複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムであって、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにするための装置を含み、メモリ・セクタが圧縮データを記憶するコンピュータ・システムにおいて、少なくとも１つのホストが指定する実アドレスをその装置の実アドレスに変換するための方法が提供される。この方法は、ホスト指定の実アドレスを使用して装置の所望の実アドレスを少なくとも１つのホストにより要求するステップと、ホスト指定の実アドレスを使用して装置内のデータ保持位置を識別するステップと、データ保持位置の内容を使用して第１の値を決定するステップと、結果的に装置の実アドレスになるオフセットに第１の値を連結するステップとを含む。
【００２１】
本発明の上記その他の目的、特徴、および利点は、添付図面に関連して考慮したときに以下の詳細な説明からより明らかになるだろう。
【００２２】
【発明の実施の形態】
本発明の好ましい実施形態の説明では、ネットワークのオペレーティング・システムが、Ｗｉｎｄｏｗｓ（Ｒ）９５、Ｗｉｎｄｏｗｓ（Ｒ）９８、Ｗｉｎｄｏｗｓ（Ｒ）ＮＴ、Ｗｉｎｄｏｗｓ（Ｒ）２０００、Ｌｉｎｕｘ、ＡＩＸ（Ｒ）およびＵＮＩＸ（Ｒ）のその他のすべてのバージョン、ＭａｃＯＳ（Ｒ）、ＩＢＭＯＳ／４００（Ｒ）などのページ・オペレーティング・システムであると想定する。当業者であれば、本発明が非ページ・オペレーティング・システムにどのように適合できるかが容易に分かるだろう。
【００２３】
ページ・オペレーティング・システムでは、仮想アドレス空間、すなわち、プログラムによってアドレス指定可能なアドレスの集合がページに分割され、そのページが固定長を有する連続仮想アドレスの集合になっている。通常、１ページは４ＫＢを含む。１つのプログラムの仮想アドレス空間は使用可能な物理メモリよりかなり大きいものにすることができる。オペレーティング・システムはこの特徴をサポートする１組の機能を提供し、その機能は一括して仮想メモリ・マネージャと呼ぶ。物理メモリより大きい仮想アドレス空間をサポートするために、仮想メモリ・マネージャは、メモリ内と、３次記憶装置上、通常はハード・ディスク上の両方に仮想ページを記憶する。ある仮想ページにアクセスし、その仮想ページがメイン・メモリ内にない場合、それはディスクから読み取られる（ページイン動作）。ディスクから読取り中のページについて使用可能な物理空間がまったくない場合、他の仮想ページがディスクに書き込まれ（ページアウト動作）、その空間は解放される。仮想ページがディスクから読み取られると、その仮想ページには開始実アドレス（すなわち、プロセッサから認識されるアドレス）が割り当てられる。実メモリ（プロセッサのアドレス空間）は、論理ページと同じサイズを有する連続するペアワイズ・ディスジョイント実アドレス範囲の集合に分割される。これらはページ・フレームと呼ばれる。このため、論理ページがメモリから読み取られると、その論理ページはページ・フレーム内に記憶される。論理ページと実ページとの変換は、ページ・テーブルと呼ばれるページに分割されたディレクトリ構造に依拠する。各論理ページは、ページ・テーブル項目と呼ばれる、ページ・テーブル内の固有の項目を有し、その項目はそのページを含むページ・フレームの開始実アドレスを含むかまたは論理ページが３次記憶装置上にある場合はディスク上の位置を含む。フリー・ページ・フレームは、（Ｗｉｎｄｏｗｓ（Ｒ）ＮＴおよびＷｉｎｄｏｗｓ（Ｒ）２０００では）ページ・フレーム番号データベースと呼ばれる別個のデータ構造を使用して管理される。
【００２４】
図４は、本発明の特徴を有するネットワークのアーキテクチャを示している。複数のコンピュータ・ホスト４０１は、相互接続ネットワーク４０２を介してメモリ圧縮をサポートするＳＣＭＳ（直接アドレス指定共用圧縮メモリ・システム）４０３に接続されている。コンピュータ・ホスト４０１は、たとえば、パーソナル・コンピュータ、ワークステーション、対称型マルチプロセッサ（ＳＭＰ）マシン、非一様メモリ・アクセス・マシン（ＮＵＭＡ）、キャッシュ専用マシン（ＣＯＭＡ）、ストレージ・サーバ、ＳＰノードなどにすることが可能である。
【００２５】
ＳＣＭＳ４０３は、メモリ圧縮をサポートし、メモリ圧縮／圧縮解除、実アドレスと物理アドレスとの変換、保護（たとえば、あるホストが他のホストに割り振られたメモリ・アクセスにアクセスするのを防止する）、ロード・バランシング、パフォーマンス分離（すなわち、あるホスト４０１の行動が他のホストに及ぼす影響を最小限にする）などを含む、コンピュータ・ホスト４０１がフリー・メモリ・セクタの集合を共用するために必要なサービスを提供する。
【００２６】
図５は、ＳＣＭＳ４０３の一般的なアーキテクチャを示している。ＳＣＭＳ４０３は、デバイスの集合５０１とメモリ５０２とを含む。デバイスの集合５０１は、ネットワーク・アダプタ５０３と、メモリ５０２の管理のための制御ロジック５０４と、３次記憶装置５０５とを含む。メモリ５０２の管理のための制御ロジック５０４は、メモリ圧縮器／圧縮解除器、レジスタ、ディレクトリまたはＣＴＴ項目を収容するためのキャッシュ、メモリからのアドレス指定、読取り、および書込みのための回路、バッファなどをさらに具備する。３次記憶装置５０５としては、ＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨメモリ・カード、ハード・ディスクを含む。また、好ましい実施形態のＳＣＭＳ４０３は、１つまたは複数のホスト４０１と１つまたは複数のハード・ディスクを共用する。
【００２７】
メモリ５０２は、前述のように、メモリ・ディレクトリ領域５０６（圧縮変換テーブルとしても知られ、以下、ＣＴＴと呼ぶ）と、直接マップ領域５０７（たとえば、レジスタからのオフセットとしてアドレスが計算される場所）と、未圧縮領域５０８と、メモリ・セクタのプール５０９に論理的に分割されている。本発明の精神では、このような領域はそれぞれ、１つのアドレス範囲全体に及ぶ必要はないが、複数のアドレス範囲にわたって拡散することができ、その場合、このような各領域は複数の領域と見なすこともできる。
【００２８】
好ましい実施形態のＳＣＭＳ４０３は、ホスト４０１の実メモリ空間の拡張部分として動作する。より具体的には、ホスト４０１は、ある範囲の実アドレスに対応するようＳＣＭＳ４０３に指示することができる。ホスト４０１がその実アドレスの範囲内の記憶場所にアクセスする（そこで読取りまたは書込みを行う）必要がある場合、ホストは所望の動作を実行するようＳＣＭＳ４０３に要求する。好ましい実施形態では、ＳＣＭＳのハードウェアの複雑さを妥当なものに保持するために、メモリ５０２は最高Ｈ通りのホストに対応することができる。ＳＣＭＳを使用することを希望するホストはそれに登録し、ＳＣＭＳが現在、Ｈ個未満のホストに対応している場合、ＳＣＭＳは要求側ホストにたとえば０〜Ｈ−１の範囲の固有のＩＤを割り当て、登録プロセスが完了する。
【００２９】
好ましい実施形態のホスト４０１は、事前定義された細分性で、すなわち、以後、セグメントと呼ぶ固定数の連続実アドレスを含む単位で、ＳＣＭＳ内の実メモリ・アドレス範囲を割り振ることができる。セグメント・サイズはＬで示し、ＳＣＭＳがサポートするセグメント数はＳで示す。たとえば、Ｈ＝１６かつＬ＝１Ｇｂである場合に、３２Ｇｂの実メモリをサポートするＳＣＭＳについて検討する。この例では、ＳＣＭＳが対応する実メモリ空間は３２個のセグメントに分割され、したがって、各ホスト４０１は１〜１７個のセグメントを割り振ることができる（残りのＨ−１個のホストが１つのセグメントのみを使用する場合）。一実施形態のＳＣＭＳは、使用するリソースが多すぎることにより、あるホストが他のホストのパフォーマンスに過度に影響するのを防止するために、個々のホストが割り振ることができるセグメントの数を最大値Ｎに制限する。たとえば、ＳＣＭＳは、ホストが使用するセグメントの数を８に制限することが可能である。ホストはＳＣＭＳからセグメントを要求することができ、複数のセグメントが使用可能であって、ホストがそのセグメント限界に達していない場合、そのホストには１つのセグメントが認可される。また、ホストはセグメントを解放することができ、そのセグメントはその後、フリー・セグメントのプールに追加される。
【００３０】
好ましい実施形態では、あるホストが１つのメモリ・セグメントを割り振ると、ＳＣＭＳは対応する実アドレス範囲をそのホストに通知する。この実施形態では、６４ビットのアドレス指定と想定すると、そのアドレスのうちのｌｏｇ２（Ｈ）個の最上位ビットがホストＩＤになり、この例では、Ｈ＝１６である場合、４個の最上位ビットがホストを識別する。次のｌｏｇ２（Ｎ）個のビット（この例では３）がそのアドレスを含むセグメントを識別し、ｌｏｇ２（Ｌ）個の最下位ビット（この例では３０）がそのセグメント内のオフセットになる。この方式では、多数のアドレス・ビットの値（この例では２７）を指定しない。これらは、たとえば、ホスト４０１が複数のＳＣＭＳに登録され、同じＩＤが割り当てられている場合に使用することができる。この場合、以下に説明するように、未指定のビットを使用して、種々のＳＣＭＳで割り振られたセグメント間を区別することができる。
【００３１】
前述のように、メモリ圧縮をサポートするシステムにおける実アドレスと物理アドレスとの変換は、ＣＴＴと呼ばれるディレクトリに依拠する。本発明の精神では、ＳＣＭＳのＣＴＴ５０６は複数の連続部分に分割され、そのそれぞれは１つのセグメントに関する実／物理変換を実行するために使用する。したがって、連続部分の数はＳＣＭＳが管理するセグメントの最大数に等しくなり、各連続部分のサイズは、１つのセグメントをアドレス指定するのに必要なＣＴＴ項目の数を収容できるものになる。好ましい実施形態では、ＣＴＴのサイズは、初期プログラム・ロードＩＰＬ時（すなわち、マシンがブートしている間）に決定される。たとえば、ＳＣＭＳが１６Ｇｂの物理メモリを含み、３２Ｇｂの実メモリをサポートし、圧縮の単位が１Ｋである場合、ＣＴＴは３２×２２０個の項目を含むことになり、それが３２個の連続部分に分割され、そのそれぞれが異なる１つのセグメントに対応する２２０個の項目を含む。
【００３２】
メモリ圧縮をサポートする通常のコンピュータ、メモリ・サーバの機能を提供するデバイス、メモリ圧縮をサポートしないデバイスには見られない本発明の１つの特徴は、各ホストがどのくらいの物理メモリを使用するかを制御する方針をサポートするのに必要なハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方である。この特徴については図６に関連して説明する。あるホストが１つのセグメントを要求すると、そのホストは、そのセグメントに割り振られるかまたは予約された保証数の物理セクタであると解釈可能ないくつかの物理セクタも要求することができる。予約セクタの総数がセクタの総数を超えない場合、その要求を認可することができる。
【００３３】
ＳＣＭＳは、しきい値６０１とカウンタ６０２とを含む１組のレジスタを含む。各ホストに認可される物理セクタの最大数は固有のしきい値レジスタに記憶され、そのホストが使用する物理セクタの数は固有のカウンタ・レジスタに記憶される。書込みまたはメモリ解放動作がホストから出されると、そのホストＩＤ６０３を使用して、関連のしきい値およびカウンタを選択する。この動作が解放である場合、カウンタは、ホストが解放する１組の実アドレスが使用する物理セクタの数だけ減分される。この動作が書込みである場合、圧縮器／圧縮解除器（６０４）は、書込み動作が影響する各メモリ・ラインが書込み動作前に使用する物理セクタの数だけカウンタを削減する。次に圧縮器は各ラインを圧縮し、そのラインが使用する物理セクタの数だけカウンタを増分する。比較器６０５はしきい値の値とカウンタの値とを比較する。その値がしきい値を超えている場合、比較器６０５は、そのホストがそれに割り振られたクオータの物理セクタを超えていることを示す比較結果６０６を発生する。そうではない場合、比較器は、しきい値を超えていないことを示す比較結果を発生する。
【００３４】
比較結果６０６は、その使用セグメント数がしきい値を超えているときに１つのホスト（または複数のホスト）に信号で知らせるために（ソフトウェアまたはハードウェア）メカニズムが使用し、しきい値は予約セクタのカウンタ付近であるがそれ未満になるようソフトウェアで設定することができる。これにより、あるホストがその限界に近づいたときにそのセクタの使用を削減できるようにするメカニズムが可能になる。あるホストがそのセクタを正常に削減しない場合、ホストによるＳＣＭＳへのストア動作（書込み）の結果、その使用セクタがその予約セクタを超える可能性がある状況が発生する場合もある。このような場合、いくつかのオプションが可能である。
（１）ＳＣＭＳは、書込み動作が完了するのを防止し、そのホストに信号でエラーを知らせることができる。これにより、使用セクタ数がしきい値以下に低下する時点まで、そのホスト、たとえばホスト０からの後続の書込みが履行されるのを防止する。さらに、ホスト０の圧縮比がどれほど劣化しても、他のホストが動作を続行できるようにする。
（２）依然として十分な数の未使用セクタがＳＣＭＳで使用可能であると想定して、ＳＣＭＳは書込み動作を履行することができる。また、ＳＣＭＳはそのホストにもう一度、信号でエラーを知らせることになり、それはそのセクタ使用量を削減するための最優先メッセージとして解釈することができる。この場合、他のホストは動作を続行することができるが、ホスト０の圧縮比が劣化し続けた場合に最終的にセクタを使い果たす可能性があることが露呈する。
【００３５】
図７は、ホストが指定する実アドレスをどのようにしてＳＣＭＳ実アドレスに変換するかという変換の好ましい実施形態を示している。ホスト指定の実アドレス７０１は、ホストＩＤ７０２と、セグメント番号７０３と、オフセット７０４に分解され、いくつかのビットは無視される。図５に示すようにＳＣＭＳの制御ロジック５０４は、レジスタのマトリックス７０５、すなわち、データ保持位置を含む。マトリックス７０５の各行はそれぞれ異なるホストＩＤに対応し、このため、マトリックス７０５はＨ個の行を含む。マトリックスの各列はそれぞれ異なるセグメント番号に対応し、したがって、このマトリックスはＬ個の列を含む。ホストＩＤ７０２はマトリックスの行７０６を選択するために使用し、セグメント番号７０３は列７０７を選択するために使用する。列７０７と行７０６が相俟ってレジスタ７０９を一意に識別する。レジスタ７０９の内容、すなわち、所望のセグメントをアドレス指定するために使用するＣＴＴの部分の開始点は、レジスタ７０９に含まれるビットをオフセット・ビット７０４に連結することにより、マトリックス７０５の外部にあるレジスタ７１０内のオフセット７０４と結合される。この時点でレジスタ７１０はＳＣＭＳ実アドレス、言い換えれば、メモリ５０２が管理する所望のデータの実アドレスを含んでいる。
【００３６】
他の実施形態では、ホストＩＤはアドレスの一部ではないが、たとえば、ネットワーク・アダプタから入手される。この実施形態については図８に関連して説明することになるが、この実施形態では、ホスト４０１から提供されるアドレス８０１の事前定義部分８０２、すなわち、セグメント番号を使用して、所望のセグメントを指定し（したがって、この部分の長さはｌｏｇ２（Ｓ）ビットである）、アドレス８０１の最下位ビット８０３はオフセットになる。当業者であれば、セグメント番号を含むアドレス８０１の事前定義部分８０２の事前指定位置は隣接ビットで構成される必要はなく、これらのビットはオフセット８０３が使用する部分以外のアドレス８０１のどこにでも配置できることが分かるだろう。ホストＩＤ８０５は所望のアドレスから別個に提供される。図５に示すようにＳＣＭＳの制御ロジック５０４は、セグメントあたり１つのレジスタを含むレジスタのアレイ８０４（データ保持位置）を含み、各レジスタはサポートしているホストあたり１つのビットを含む。あるホストが１つのセグメントを割り振ると、それは、レジスタ内の対応するビットを「１」に設定することにより、どのホストがそのセグメントに対して読取りおよび書込みを実行できるかを指定し、残りのビットは「０」に設定される。読取り／書込み動作時には、セグメント番号８０２を使用してレジスタ・アレイ８０４内の１つのレジスタを選択し、ホストＩＤ８０５に対応する項目のビットをチェックする。このビットが「１」に設定されている場合、アドレス８０７を使用できるようにする許可信号８０６が生成される。アドレス８０７はセグメント番号８０２とオフセット８０３から構成される。このビットが「０」に設定されている場合、エラー信号が生成され、要求側ホストに送られる。この方法により、ホストが他のホストが使用するメモリ・セグメントからの読取りまたはそのメモリ・セグメントへの書込みを行うのを防止する保護メカニズムが得られる。また、複数のホスト４０１がメモリ空間の一部を共用する共用メモリ環境でアクセス制御を行うためのメカニズムも提供される。
【００３７】
図６の方法により、制御ロジック５０４は、各ホストごとに１つのカウンタを含むことになり、そのカウンタはそのホストが使用するセグメントの数を含み、１つのホストが許容数を超える数のセグメントを割り振るのを防止する。図８の保護メカニズムを取り入れるために図６の方式を変更する方法は、当業者にとって明白になるだろう。
【００３８】
本発明は、レジスタのアレイ８０４を使用せずに、図７に示す方法を使用して保護メカニズムを構築するための方法も提供する。図７に示すようにアドレスのホストＩＤ部分も図８のように別個に提供される場合（たとえば、ネットワーク・アダプタから得られるホスト・ネットワーク・アドレスをホストＩＤに変換する変換テーブルを使用する）、あるセグメントへの排他的アクセスは、アドレス８０１の一部である図７のホストＩＤ７０２とそのアドレスとは別個の図８のホストＩＤ８０５とを比較することにより、容易に実現される。不一致がある場合、そのアドレスは無効であり、エラー・メッセージが生成される。セグメントの共用をサポートするために、あるセグメントが割り振られ、それを共用するホストＩＤが指定されると、ＳＣＭＳは、指定されたホストに対応する変換マトリックス７０５の行で未使用項目を見つけ、その項目を空にし、割り振られたセグメントの開始点のアドレスをすべての項目にコピーする。この手法により、同じセクタを共用するホストごとに異なる実アドレスが得られる。ＳＣＭＳ制御ロジックは、すでに使用されているセグメントの開始アドレスを変換マトリックス７０５の項目に書き込むことを許可しないので、したがって、上記の方法によって所望の保護メカニズムが提供される。
【００３９】
ホストＩＤがアドレスの一部ではないが、別個に提供される場合、別個に提供されるホストＩＤ（この時点ではもはやアドレス７０１の一部ではない）を介して変換マトリックスの行が選択され、セグメント番号７０３を使用して列が選択されるように、図７の方法を変更することができる。この方法も自動的に保護メカニズムを提供するものであり、前の段落で記述したようにセクタへの共用アクセスを制御するために使用することができる。
【００４０】
他の実施形態では、あるセグメントを要求するホスト４０１はそのセグメント用の開始実アドレスも指定し、それはセグメント境界上に位置合せされる。この実施形態では、ＳＣＭＳは、同じ開始アドレスが指定される２つの異なるセグメントをホスト４０１が割り振ることができないことを保証するロジックを含む。図９は、ホストが提供する実アドレスとＳＣＭＳ実アドレスとの変換プロセスを示している。この場合、図５の制御ロジック５０４は、連想メモリ９０４（データ保持位置）を含む。連想メモリ９０４は、各管理セグメント（現在割り振られていないものを含む）あたり１つの行と、２つの列を含む。第１の列９０５は、割り振られたセグメントについてホスト４０１が提供する開始実アドレスであるキーを含む。第２の列９０６は、ＳＣＭＳの実メモリ空間内のセグメントの開始実アドレスである値を含む。
【００４１】
ホスト４０１によってアドレス９０１が提供されると、そのアドレスは、最下位ビットから構成されるセグメント内のオフセット９０３と、連想メモリ９０４用の探索キーとして使用する最上位ビット９０２という２つの部分に分割される。１つの行、たとえば行９０７がそのキー・フィールドに探索キーと同じ値を含む場合、連想メモリ９０４は値フィールド９０８の内容を返す。次に値９０８はレジスタ９０９でオフセット９０３と結合され、ＳＣＭＳ実アドレスを生成する。図９の変換メカニズムと図８の保護メカニズムを結合する方法は、当業者にとって明白になるだろう。
【００４２】
ＳＣＭＳが多数のセグメントを管理する場合、図７の変換マトリックス７０５、図８のレジスタ８０４、図９の連想メモリ９０４、および上記のようにそれらから得られるものは、図５の制御ロジック５０４内のレジスタとして実現するには潜在的に高価であると思われる。好ましい実施形態では、構成要素７０５、８０４、９０４に含まれる情報がメモリ５０２に記憶される。制御ロジック５０４は、容易に使用可能になるように、前記情報のサブセットのみが記憶されるキャッシュを含む。このようなキャッシュは、最後に使用したセグメント情報をキャッシュ内に維持するなど、既知のキャッシュ管理方針によって管理することができる。
【００４３】
本発明では、複数のＳＣＭＳにわたってホストの実メモリ空間を拡散する方法も教示する。図１０は、ホスト１００１が相互接続ネットワーク１００２により複数のＳＣＭＳ１００３に接続され、そのホストの実メモリ空間の一部が複数のＳＣＭＳにわたって拡散され、各メモリ１００４がある範囲の実アドレスを含む例を示している。図９の方法を使用すると、ホスト１００１の実メモリ空間の連続サブセットが複数のＳＣＭＳ１００３にわたって分散されることを保証することができる。
【００４４】
好ましい実施形態では、１つのＳＣＭＳが、たとえば、その番号と、それぞれの個別ＳＣＭＳのアドレスと、各ＳＣＭＳごとに割り振られたセグメントの数と圧縮率情報とを含む、同じネットワークに接続された他のＳＣＭＳ上の情報も含む。
【００４５】
本発明は、ハードウェア、ソフトウェア、ファームウェア、専用プロセッサ、またはそれらの組合せという様々な形態で実現可能であることを理解されたい。一実施形態では、本発明は、プログラム記憶装置上に具体的に実施されたアプリケーション・プログラムとしてソフトウェアで実現することができる。このアプリケーション・プログラムは、適当なアーキテクチャを具備するマシンにアップロードし、そのマシンによって実行することができる。好ましくは、このマシンは、１つまたは複数の中央演算処理装置（ＣＰＵ）、１つのランダム・アクセス・メモリ（ＲＡＭ）、入出力（Ｉ／Ｏ）インタフェース（複数も可）などのハードウェアを有するコンピュータ・プラットフォーム上で実現される。このコンピュータ・プラットフォームは、オペレーティング・システムと、マイクロ命令コードも含む。本明細書に記載した様々なプロセスおよび機能は、オペレーティング・システムを介して実行されるこのマイクロ命令コードの一部またはアプリケーション・プログラムの一部のいずれか（あるいはこれらの組合せ）にすることができる。さらに、このコンピュータ・プラットフォームには、追加のデータ記憶装置および印刷装置などの様々な他の周辺装置を接続することもできる。
【００４６】
添付図面に示す構成上のシステム構成要素および方法ステップの一部はソフトウェアで実現できるので、システム構成要素（またはプロセス・ステップ）間の実際の接続は、本発明をプログラミングする方法に応じて異なってくる可能性があることをさらに理解されたい。本明細書に記載した本発明の教示を考慮すれば、当業者は、本発明の上記および同様の実現例または構成を企図することができるだろう。
【００４７】
図１１は、ホスト・システムがどのようにメモリ参照をＳＣＭＳへの要求に変換するかを示している。ステップ１１０１では、ホスト・システムは、実アドレスがネットワーク接続装置に記憶された時期を識別する。好ましい実施形態の論理／物理アドレス変換は、ＳＣＭＳに記憶されたアドレスを識別するための備えを含む。この実施形態では、ページ・テーブル項目内の適切なフラグを使用して、ホストの主記憶装置に記憶されたページと外部に記憶されたページとを区別する。その場合、外部に記憶されたページは、メモリ参照をネットワーク接続装置への要求に変換するドライバまたはハードウェア装置によりアクセスされる。この変換は、ＳＣＭＳに記憶されたアドレスのディレクトリ１１０３でデータを含むＳＣＭＳのネットワーク・アドレスを見つけるステップ１１０２と、ステップ１１０２で識別されたＳＣＭＳに対して要求を出すステップ１１０４から構成されることになるだろう。
【００４８】
他の実施形態では、ＳＣＭＳに記憶されたページは、ホストのメモリによってサポートされる実アドレスの範囲に属さない実アドレスを有する。たとえば、ホストがメモリ圧縮をサポートしていない場合、ホストのメモリによってサポートされる実アドレスはゼロから物理メモリ・サイズに等しい最大値までの範囲になる。ホストが圧縮をサポートしている場合、実アドレスの範囲は実／物理変換メカニズムによって決定され、前記変換メカニズムが静的ディレクトリ（ＣＴＴ）に依拠する場合、実アドレスの範囲は前記ディレクトリのサイズによって決定される。最新のオペレーティング・システムでは、ホスト内でサポートされる実アドレスの範囲外の実アドレスが出されると、例外が発生し、割込みが発生する。この実施形態では、この特定の割込みが発生したときに呼び出されるオペレーティング・システム・モジュールは、動作１１０２および１１０４を実行するコードを含む。
【００４９】
本発明の直接アドレス指定共用圧縮メモリ・システム（ＳＣＭＳ）のさらに他の実施形態では、ＳＣＭＳは、各ＣＴＴがそれぞれ異なる実アドレス空間に対応するＣＴＴの集合を含む。この実施形態では、複数のホスト間で共用されないアドレス空間を多くても１つのホストに関連づけることができる。新しいホストが非共用アドレス空間を要求し、実アドレス空間が使用可能である場合、ＳＣＭＳの制御ロジックは、対応するＣＴＴによって使用可能な実アドレス空間をそのホストに割り当て、そのアドレス空間をそのホストのＩＤに関連づける。そのホストのメモリ動作がＳＣＭＳを対象としている場合、ＳＣＭＳはホストＩＤを対応するＣＴＴのアドレスに変換し、ホストが提供する実アドレスをＣＴＴを使用して物理アドレスに変換する。
【００５０】
この実施形態の一例については図１２に関連して説明する。ＳＣＭＳ１２０２は、とりわけ、ＣＴＴの集合１２０７と、共用可能なメモリ・セクタの集合１２０９、１２１０をさらに含むメモリ１２１１とを含む。動作時にホスト１２０１は、ＳＣＭＳ１２０２に対してメモリ動作を出し、アドレス１２０３を送信する。ＳＣＭＳは、アドレス１２０３からホストが生成した実アドレス１２０６とホストＩＤ１２０４を取り出す。次にこのホストＩＤ１２０４は、ホストＩＤ／ＣＴＴ変換テーブル１２０５を使用してＣＴＴの集合１２０７から１つのＣＴＴを選択するために使用する。ＳＣＭＳは、ホストＩＤ／ＣＴＴ変換テーブル１２０５を使用して、ホスト１２０１に関連するＣＴＴ１２０８を選択する。選択したＣＴＴ１２０８を使用して、ホスト１２０６が生成した実アドレスを、対応するデータを含む物理アドレスに変換する。この例では、アドレス１２０６を含むメモリ・ラインは、２つのメモリ・セクタ１２０９および１２１０を使用して記憶される。
【００５１】
当業者であれば、前述の本発明の他の特徴とこの特徴とをどのように結合するかが分かるだろう。たとえば、ＳＣＭＳでは、ホストＩＤとＣＴＴとのマッピングを多対一のマッピングにすることにより、ＣＴＴ集合１２０７内の１つのＣＴＴに関連する同一セグメントを複数のホストで共用することができる。この場合、複数のホストＩＤを単一ＣＴＴにマッピングすることにより、ホストＩＤ／ＣＴＴ変換テーブルを使用して、複数のホストＩＤをマッピングする。当業者であれば、単一セグメントが使用するメモリの物理的な量、ホストが生成するアドレスと１つのセグメント内の実アドレスとの追加変換などを制御する方針が本発明のこの特徴にどのように適用されるかも分かるだろう。
【００５２】
本発明の所与の好ましい実施形態に関連して本発明を示し説明してきたが、当業者であれば、特許請求の範囲で定義した本発明の精神および範囲を逸脱せずに形態および詳細について様々な変更が可能であることが分かるだろう。
【００５３】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００５４】
（１）各ホストが関連の実アドレス空間を１つずつ有する複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムにおいて、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにし、メモリ・セクタが圧縮データを記憶する装置であって、
装置を相互接続ネットワークに結合するためのネットワーク・アダプタと、
メモリ・セクタの集合を記憶するためのメモリであって、少なくとも１つのホストの実アドレスを圧縮データが記憶される装置内のアドレスに変換するためのディレクトリを含むメモリと、
メモリを管理するための制御ロジックであって、メモリ圧縮器／圧縮解除器を含む制御ロジックとを具備する装置。
（２）３次記憶装置をさらに具備する、上記（１）に記載の装置。
（３）メモリが直接マップ領域と未圧縮領域とをさらに具備する、上記（１）に記載の装置。
（４）１組のレジスタであって、各ホストに認可された最大数のセクタを記憶するための複数のしきい値レジスタと、各ホストが使用するいくつかのセクタを記憶するための複数のカウンタ・レジスタとを含む１組のレジスタをさらに具備する、上記（１）に記載の装置。
（５）少なくとも１つのホストのしきい値レジスタの値と少なくとも１つのホストのカウンタ・レジスタの値とを比較して、カウンタ・レジスタの値がしきい値レジスタを超えているかどうかを判定するための比較器をさらに具備する、上記（４）に記載の装置。
（６）少なくとも１つのホストの実アドレスが、少なくとも１つのホストのＩＤと、装置の所望のメモリ・セグメントと、所望のセグメントのオフセットとを具備する、上記（１）に記載の装置。
（７）実アドレスが種々の装置内の割振り済みセグメントをさらに具備する、上記（６）に記載の装置。
（８）制御ロジックがレジスタのマトリックスをさらに具備し、マトリックスの各行がそれぞれ異なるホストＩＤに対応し、各列がそれぞれ異なるセグメント番号に対応し、それにより、少なくとも１つのホストのＩＤと所望のメモリ・セグメントによって決定される特定のレジスタの内容が、結果的に装置が管理する実アドレスになるオフセットに連結される、上記（６）に記載の装置。
（９）制御ロジックがレジスタのアレイをさらに具備し、そのアレイが装置のいくつかのメモリ・セグメントに対応するいくつかのレジスタを含み、各レジスタがサポートされる各ホストごとに１つのビットを具備し、それにより、その１つのビットが１に等しい場合に、所望のメモリ・セグメントが、結果的に装置が管理する実アドレスになるオフセットに連結され、その１つのビットが０に等しい場合に、少なくとも１つのホストがそのセグメントへのアクセスを拒否される、上記（１）に記載の装置。
（１０）制御ロジックが、装置の各管理メモリ・セグメントごとに１つの行を含み、第１の列がキーを含み、第２の列が値を含む連想メモリをさらに具備し、そのキーが所望のメモリ・セグメントについて複数のホストが提供する開始実アドレスであり、その値が装置内のセグメントの開始実アドレスであり、それにより、少なくとも１つのホストの探索キーによって決定される値が、結果的に装置が管理する実アドレスになるオフセットに連結される、上記（１）に記載の装置。
（１１）コンピュータ・システムが複数の装置をさらに具備し、その装置が、装置の数、複数の装置のそれぞれのアドレス、複数の装置のそれぞれに割り振られたいくつかのセグメント、記憶されたデータの圧縮率などの他の装置の情報を含む、上記（１）に記載の装置。
（１２）メモリが複数のディレクトリをさらに具備し、各ディレクトリが複数のホストのうちの各ホストのそれぞれ異なる実アドレス空間に対応する、上記（１）に記載の装置。
（１３）メモリがホストＩＤ／ディレクトリ変換テーブルをさらに具備し、少なくとも１つのホストが生成するホストＩＤを使用して、複数のディレクトリのうち少なくとも１つのホストに対応するディレクトリを選択し、そのディレクトリが少なくとも１つのホストの実アドレスを装置の物理アドレスに変換する、上記（１２）に記載の装置。
（１４）相互接続ネットワークにより接続されるホストと、各装置がメモリ・セクタの集合を含む複数の装置であって、相互接続ネットワークに結合され、ホストが複数の装置間でメモリ・セクタの集合を共用できるようにし、メモリ・セクタが圧縮データを記憶する複数の装置とを具備するコンピュータ・システム。
（１５）ホストの実アドレスの連続サブセットが複数の装置にわたって分散される、上記（１４）に記載のコンピュータ・システム。
（１６）複数の装置のうちの少なくとも１つの装置が、装置の数、複数の装置のそれぞれのアドレス、複数の装置のそれぞれに割り振られたいくつかのセグメント、記憶されたデータの圧縮率などの他の装置の情報を含む、上記（１４）に記載のコンピュータ・システム。
（１７）複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムであって、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにするための装置を含み、メモリ・セクタが圧縮データを記憶するコンピュータ・システムにおいて、各ホストが使用するいくつかのメモリ・セクタを管理するための方法であって、
各ホストに認可すべき最大数のセクタを決定するステップと、
少なくとも１つのホストに認可された最大数のセクタを記憶するためのしきい値レジスタを少なくとも１つのホストに割り振るステップと、
少なくとも１つのホストが使用するいくつかのセクタを記憶するためのカウンタ・レジスタを少なくとも１つのホストに割り振るステップと、
少なくとも１つのホストのしきい値レジスタの値と少なくとも１つのホストのカウンタ・レジスタの値とを比較して、カウンタ・レジスタの値がしきい値レジスタを超えているかどうかを判定するステップとを具備する方法。
（１８）少なくとも１つのホストのＩＤにより、少なくとも１つのホストの関連のしきい値レジスタとカウンタ・レジスタを選択するステップをさらに具備する、上記（１７）に記載の方法。
（１９）少なくとも１つのホストが解放動作を実行するときに、少なくとも１つのホストが解放する１組の実アドレスが使用するいくつかのセクタ分だけカウンタ・レジスタを減分するステップをさらに具備する、上記（１７）に記載の方法。
（２０）カウンタ・レジスタの値がしきい値レジスタを超えている場合に、使用するセクタの数が認可されているセクタの数を超えていることを少なくとも１つのホストに信号で知らせるステップをさらに具備する、上記（１７）に記載の方法。
（２１）カウンタ・レジスタの値がしきい値レジスタを超えている場合に、少なくとも１つのホストが使用するセクタの数を削減するステップをさらに具備する、上記（１７）に記載の方法。
（２２）少なくとも１つのホストが書込み動作を実行するときに、書き込むべきメモリ・ラインを圧縮するステップと、そのメモリ・ラインが使用するいくつかのセクタ分だけカウンタ・レジスタを増分するステップとをさらに具備する、上記（１７）に記載の方法。
（２３）カウンタ・レジスタの値がしきい値レジスタを超えている場合に、少なくとも１つのホストによる書込み動作を防止するステップをさらに具備する、上記（２２）に記載の方法。
（２４）書込み動作が失敗したことを少なくとも１つのホストに通知するステップをさらに具備する、上記（２３）に記載の方法。
（２５）複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムであって、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにするための装置を含み、メモリ・セクタが圧縮データを記憶するコンピュータ・システムにおいて、少なくとも１つのホストが指定する実アドレスをその装置の実アドレスに変換するための方法であって、
ホスト指定の実アドレスを使用して装置の所望の実アドレスを少なくとも１つのホストにより要求するステップと、
ホスト指定の実アドレスを使用して装置内のデータ保持位置を識別するステップと、
データ保持位置の内容を使用して第１の値を決定するステップと、
結果的に装置の実アドレスになるオフセットに第１の値を連結するステップとを具備する方法。
（２６）ホスト指定の実アドレスをホストＩＤと、セグメント番号と、オフセットに分解するステップをさらに具備する、上記（２５）に記載の方法。
（２７）データ保持位置がレジスタのマトリックスであり、マトリックスの各行が少なくとも１つのホストのそれぞれ異なるホストＩＤに対応し、各列がそれぞれ異なるセグメント番号に対応する、上記（２６）に記載の方法。
（２８）識別ステップが、少なくとも１つのホストのホストＩＤを使用してマトリックスの１つの行を選択し、セグメント番号を使用してマトリックスの１つの列を選択することにより、マトリックス内の１つのレジスタを識別することをさらに具備する、上記（２７）に記載の方法。
（２９）決定ステップが、識別されたレジスタの内容を第１の値として提供することをさらに具備する、上記（２８）に記載の方法。
（３０）データ保持位置がレジスタのアレイであり、そのアレイが装置のいくつかのセグメントに対応するいくつかのレジスタを含む、上記（２５）に記載の方法。
（３１）各レジスタが、サポートされる各ホストごとに１つのビットを具備し、サポートされるホストがそのセグメントへのアクセスを許可されている場合にそのビットが１に設定され、サポートされるホストがそのセグメントへのアクセスを許可されていない場合にそのビットが０に設定される、上記（３０）に記載の方法。
（３２）識別ステップが、アレイのうち、ホスト指定の実アドレスから抽出したセグメント番号に対応するレジスタを識別することをさらに具備する、上記（３１）に記載の方法。
（３３）決定ステップが、
少なくとも１つのホストによって提供されるホストＩＤに対応する、識別されたレジスタ内の１つのビットをチェックするステップと、
その１つのビットが１に等しい場合に、セグメント番号を第１の値として提供するステップとをさらに具備する、上記（３２）に記載の方法。
（３４）決定ステップが、
少なくとも１つのホストによって提供されるホストＩＤに対応する、識別されたレジスタ内の１つのビットをチェックするステップと、
その１つのビットが０に等しい場合に、そのセグメントがアクセス不能であることを示し、少なくとも１つのホストに送られるエラー信号を生成するステップとをさらに具備する、上記（３２）に記載の方法。
（３５）データ保持位置が、装置の各管理セグメントごとに１つの行を含み、第１の列がキーを含み、第２の列が第２の値を含む連想メモリであり、そのキーが所望のセグメントについて複数のホストが提供する開始実アドレスであり、その第２の値が装置内のセグメントの開始実アドレスである、上記（２５）に記載の方法。
（３６）ホスト指定のアドレスを探索キーとオフセットに分解するステップをさらに具備する、上記（３５）に記載の方法。
（３７）識別ステップが、少なくとも１つのホストの探索キーを使用して連想メモリの１つの行を識別することをさらに具備する、上記（３６）に記載の方法。
（３８）決定ステップが、識別された行に対応する第２の値を第１の値として提供することをさらに具備する、上記（３７）に記載の方法。
（３９）複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムであって、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにするための装置を含み、メモリ・セクタが圧縮データを記憶するコンピュータ・システムにおいて、マシンによって読取り可能であり、各ホストが使用するいくつかのメモリ・セクタを管理するための方法ステップを実行するためにマシンによって実行可能な複数命令からなるプログラムを具体的に実施するプログラム記憶装置であって、その方法ステップが、
各ホストに認可すべき最大数のセクタを決定するステップと、
少なくとも１つのホストに認可された最大数のセクタを記憶するためのしきい値レジスタを少なくとも１つのホストに割り振るステップと、
少なくとも１つのホストが使用するいくつかのセクタを記憶するためのカウンタ・レジスタを少なくとも１つのホストに割り振るステップと、
少なくとも１つのホストのしきい値レジスタの値と少なくとも１つのホストのカウンタ・レジスタの値とを比較して、カウンタ・レジスタの値がしきい値レジスタを超えているかどうかを判定し、カウンタ・レジスタの値がしきい値レジスタを超える場合に、少なくとも１つのホストの書込み動作を拒否するステップとを具備するプログラム記憶装置。
（４０）複数のホストが相互接続ネットワークにより接続されるコンピュータ・システムであって、相互接続ネットワークに結合され、複数のホストがメモリ・セクタの集合を共用できるようにするための装置を含み、メモリ・セクタが圧縮データを記憶するコンピュータ・システムにおいて、マシンによって読取り可能であり、少なくとも１つのホストが指定する実アドレスをその装置の実アドレスに変換するための方法ステップを実行するためにマシンによって実行可能な複数命令からなるプログラムを具体的に実施するプログラム記憶装置であって、その方法ステップが、
ホスト指定の実アドレスを使用して装置の所望の実アドレスを少なくとも１つのホストにより要求するステップと、
ホスト指定の実アドレスを使用して装置内のデータ保持位置を識別するステップと、
データ保持位置の内容を使用して第１の値を決定するステップと、
結果的に装置の実アドレスになるオフセットに第１の値を連結するステップとを具備するプログラム記憶装置。
【図面の簡単な説明】
【図１】圧縮メイン・メモリをサポートする従来のコンピュータ・システムの構造を示す図である。
【図２】図１に示す圧縮メイン・メモリをサポートする従来のコンピュータ・システムのメモリ・システムの詳細構造を示す図である。
【図３】図１に示す圧縮メイン・メモリをサポートする従来のコンピュータ・システムにおけるメモリ・ディレクトリの構造を示す図である。
【図４】本発明による直接アドレス指定共用圧縮メモリ・システム（ＳＣＭＳ）を使用するネットワークのアーキテクチャを示す図である。
【図５】本発明によるＳＣＭＳのブロック図である。
【図６】本発明によるＳＣＭＳにおいて各ホストが使用するセクタの数を追跡するために使用する制御ロジックの構造を示す図である。
【図７】ホストからのアドレスをＳＣＭＳが管理する実アドレスに変換するための方法であって、変換マトリックスに依拠する方法を示す図である。
【図８】保護ビットのアレイを使用してＳＣＭＳ内で保護を可能にし、セグメントへのアクセスを制御するための方法を示す図である。
【図９】ホストからのアドレスをＳＣＭＳが管理する実アドレスに変換するための方法であって、連想メモリに依拠する方法を示す図である。
【図１０】ホスト・システムの実アドレス空間の一部が複数のＳＣＭＳにわたって拡散されるネットワークのアーキテクチャを示す図である。
【図１１】メモリ参照をＳＣＭＳへの要求に変換するための方法を示す図である。
【図１２】本発明により複数のメモリ・ディレクトリ（ＣＴＴ）を含むＳＣＭＳの一実施形態を示す図である。
【符号の説明】
５０１  デバイスの集合
５０２  メモリ
５０３  ネットワーク・アダプタ
５０４  制御ロジック
５０５  ３次記憶装置
５０６  メモリ・ディレクトリ領域
５０７  直接マップ領域
５０８  未圧縮領域
５０９  メモリ・セクタのプール
【図１】
2004355124.tif 000003
【図２】
2004355124.tif 000004
【図３】
2004355124.tif 000005
【図４】
2004355124.tif 000006
【図５】
2004355124.tif 000007
【図６】
2004355124.tif 000008
【図７】
2004355124.tif 000009
【図８】
2004355124.tif 000010
【図９】
2004355124.tif 000011
【図１０】
2004355124.tif 000012
【図１１】
2004355124.tif 000013
【図１２】
2004355124.tif 000014