JP2000347935A - 圧縮メイン・メモリの仮想非圧縮キャッシュ - Google Patents

圧縮メイン・メモリの仮想非圧縮キャッシュ

Info

Publication number
JP2000347935A
JP2000347935A JP2000135299A JP2000135299A JP2000347935A JP 2000347935 A JP2000347935 A JP 2000347935A JP 2000135299 A JP2000135299 A JP 2000135299A JP 2000135299 A JP2000135299 A JP 2000135299A JP 2000347935 A JP2000347935 A JP 2000347935A
Authority
JP
Japan
Prior art keywords
data segment
index
uncompressed
segment
compressed
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.)
Granted
Application number
JP2000135299A
Other languages
English (en)
Other versions
JP3399520B2 (ja
Inventor
D Benbenisuto Caroline
カロライン・ディ・ベンベニスト
Peter A Franaszek
ペーター・エイ・フラナゼク
T Robinson John
ジョン・ティ・ロビンソン
O Schulz Charles
チャールズ・オー・シュルツ
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
Publication of JP2000347935A publication Critical patent/JP2000347935A/ja
Application granted granted Critical
Publication of JP3399520B2 publication Critical patent/JP3399520B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 【課題】 メイン・メモリの圧縮を実装し、圧縮単位が
メモリ・セグメントであるコンピュータ・システムのキ
ャッシュ・ミス操作でデータ・アクセス待ち時間を短縮
するシステム及び方法を提供すること。 【解決手段】 方法は、圧縮したデータ・セグメント及
び非圧縮データ・セグメントを記憶するためメイン・メ
モリに共通メモリ領域を提供するステップ、メイン・メ
モリに形成し、キャッシュ・ミス操作で非圧縮データ・
セグメント及び圧縮データ・セグメントの両方を見つけ
るエントリを持ち、各エントリがメイン・メモリのデー
タ・セグメントを見つけ、且つデータ・セグメントのス
テータスを示すインデックスを含むディレクトリ構造に
アクセスするステップ、及びキャッシュ・ミス操作でア
クセスするデータ・セグメントのステータス指標をチェ
ックし、ステータスに従って共通メモリ領域から圧縮デ
ータ・セグメントか非圧縮データ・セグメントのいずれ
かを処理するステップを含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、メイン・メモリの
圧縮を実装するコンピュータ・システムに関し、特に、
圧縮したメイン・メモリ・システムの各ライン(または
ライン・セット)の圧縮解除に伴う遅延により発生し得
る待ち時間を少なくする仮想非圧縮キャッシュに関す
る。
【0002】
【従来の技術】比較的大量のメイン・メモリを持つコン
ピュータ・システムでは、メモリのコストがシステム全
体のコストのかなりの部分を占めることがある。そのた
め、メイン・メモリの内容を圧縮した形で維持するコン
ピュータ・システム・アーキテクチャが検討されてい
る。このようなアーキテクチャを設計する1方法は、圧
縮の単位としてキャッシュ・ラインまたはキャッシュ・
ラインのセットを使用してメモリを圧縮することであ
る。キャッシュ・ラインはキャッシュ内に圧縮されない
形で維持し、キャッシュからメイン・メモリに記憶する
前に圧縮し、メイン・メモリからの読出しを実行する結
果になるキャッシュ・ミスのときに圧縮解除する。この
ような方法が効を奏するにはいくつかの問題を解決しな
ければならない。例えば、圧縮なしにメイン・メモリに
記憶するキャッシュ・ラインは、一定の大きさに固定す
るが、メモリ圧縮を行うと、占有する空間の大きさが違
ってくる。P. Franaszekによる米国特許第576153
6号、System and Method for Reducing Memory Fragme
ntation by Assigning Remainders to Share Memory Bl
ocks on a Best Fit Basis、及び同じくP.Franaszekに
よる米国特許第5864859号、System and Method
of Compression and Decompression using Store Addre
ssingに説明されているように、サイズの異なるキャッ
シュ・ラインをメイン・メモリに効率よく記憶しそこか
らアクセスする手法が知られている。
【0003】もう1つの問題は、メモリ・アクセス待ち
時間が増えることである。その原因として、圧縮を行わ
ないシステムと比べて2つのソースが考えられる。ま
ず、圧縮したラインは占有する空間の大きさが異なるの
で、圧縮したラインを記憶するため使用する空間は動的
に割当て、圧縮したラインの位置をディレクトリを使っ
て見つける必要がある。このようなディレクトリ・アク
セスでは待ち時間が長くなることがあるが、増加した待
ち時間は、C.Benveniste、P.Franaszek、J.Robinso
n、C.Schultzによる米国特許出願第256572号、"
Directory Cache for Indirectly Addressed Main Memo
ry"に述べられているように、高速なディレクトリ・エ
ントリ・メモリにキャッシュを維持することで短縮でき
る。メモリ・アクセス待ち時間が増加するもう1つのソ
ースは、圧縮と圧縮解除による。つまり、圧縮によりメ
イン・メモリからデータを読出す時間が長くなることが
ある(メイン・メモリの内容が圧縮されない従来のシス
テムに比べて)。これは、一般にはこのような読出しに
キャッシュ・ラインやキャッシュ・ライン・セットの圧
縮解除が必要だからである。同様に、メイン・メモリに
データを記憶するとき、データ圧縮のため所要時間が長
くなることがある。キャッシュ・ラインのセットを圧縮
単位として使用する場合、メイン・メモリへの記憶内容
も圧縮解除を伴うことがある。つまり、1つのキャッシ
ュ・ラインを記憶するため、最初に、記憶されているラ
インに関連する残りの(メイン・メモリから読出され
た)キャッシュ・ラインを圧縮解除し、その後にのみラ
インのセットを単位として圧縮し記憶する必要のある場
合がある。共有ディレクトリとともに、並列性を利用し
て圧縮と圧縮解除を高速にする手法は、P.Franaszek、
J.Robinson、J.Thomasによる米国特許第572922
8号、PARALLEL COMPRESSION AND DECOMPRESSION USING
A COOPERATIVE DICTIONARYに見られ、この問題を軽減す
るのに役立つが、しかしそれでもメイン・メモリ圧縮を
行わないシステムに比べて、メモリ・アクセス待ち時間
の増加による性能の低下が起こり得る。
【0004】圧縮と圧縮解除によるメモリ・アクセス待
ち時間の増加の問題を解決する1つの方法は、最近アク
セスされたキャッシュ・ライン(またはキャッシュ・ラ
インのセット)を圧縮しない形で記憶したメイン・メモ
リのパーティションを取っておくことである。このよう
な方法の1例(パーティションは"非圧縮キャッシュ"と
呼ばれる)は、Hovis、Haselhorst、Kerchberger、Brow
n、Luickによる米国特許第5812817号、COMPRESS
ION ARCHITECTURE FOR SYSTEM MEMORY APPLICATIONに見
られる。しかしこのメイン・メモリ分割法には大きな問
題が予想される。つまり、非圧縮パーティションに記憶
される各キャッシュ・ライン(またはキャッシュ・ライ
ン・セット)はメイン・メモリに2回記憶される。1回
目は圧縮された形、2回目は非圧縮形式でパーティショ
ンに記憶される。従ってこの方法では、複数のラインを
2回記憶するために全体のメモリ圧縮効果が減少し得
る。
【0005】仮想メモリを使用する最も新しいコンピュ
ータ・オペレーティング・システムでは、メイン・メモ
リ記憶割当ての単位、及び仮想アドレスを実アドレスに
変換する基準はページである。つまり仮想アドレスはペ
ージ・テーブルを使って実アドレスに変換される(且つ
メイン・メモリに記憶される)。ページを圧縮単位とし
メイン・メモリを非圧縮領域と圧縮領域に分割するが、
ページの複製は行わない(つまり各ページは圧縮されて
記憶されるか圧縮されずに記憶されるかのいずれかであ
り、両方ではない)別の方法が、M.Kjelso、M.Gooc
h、S.Jonesによる記事"Performance Evaluation of Co
mputer Architectures with Main MemoryData Compress
ion"、Journal of Systems Architecture 45(1999)、
pages 571-590で説明されている。
【0006】このようなアプローチには、圧縮時間と非
圧縮時間に関して、典型的なページ・サイズが比較的大
きい(例えば4096バイト)という欠点がある。従っ
てこのタイプの設計では、圧縮したパーティションに記
憶されたページにマップされるキャッシュ・ミスがあっ
た場合、メモリ・アクセス待ち時間がかなり長くなる。
【0007】従って、この問題を回避するため、メイン
・メモリのページをメモリから読出すときに圧縮解除す
る際の遅延、及びメイン・メモリに記憶するときにペー
ジを圧縮する際の遅延による(従来の非圧縮メモリに比
べて)過剰なメモリ・アクセス待ち時間を少なくするこ
とを目的に圧縮単位が比較的小さい、つまり各ページが
複数のセグメントに分けられ、各セグメントを個別に圧
縮し圧縮解除できる圧縮メイン・メモリを実装したコン
ピュータ・システムを提供することが強く望まれる。
【0008】また、処理時間を短縮し、メモリを分割す
るのではなく更に効率よく使用すること、つまり圧縮の
場合も非圧縮の場合も、全てのセグメントに使用する記
憶域を一貫した形で管理することが求められる。
【0009】
【発明が解決しようとする課題】本発明の目的は、過剰
なメモリ・アクセス待ち時間を短縮するため、ページを
それぞれ個別に圧縮、圧縮解除できる複数のセグメント
に分割する等、圧縮単位を小さくした圧縮メイン・メモ
リを実装したコンピュータ・システム・アーキテクチャ
を提供することである。例えば、ページ・サイズが40
96バイトのとき、各ページをそれぞれ1024バイト
の4セグメントに分けると、圧縮されたメイン・メモリ
・データにマップされるキャッシュ・ミスが発生した場
合、圧縮解除に伴うメモリ待ち時間は、圧縮単位として
ページ全体を使用する場合に比べて約4分の1に短縮さ
れる。
【0010】本発明の他の目的は、過剰なメモリ・アク
セス待ち時間を短縮するため、それぞれ個別に且つ一貫
した形で処理できる圧縮データ・セグメントと非圧縮デ
ータ・セグメントの両方を記憶するため、圧縮メイン・
メモリを実装したコンピュータ・システム・アーキテク
チャを提供することである。
【0011】本発明の他の目的は、非圧縮データ・セグ
メントを記憶する仮想非圧縮キャッシュと、前にメイン
・メモリからアクセスした非圧縮データ・セグメント項
目を追跡する仮想非圧縮キャッシュ管理システムを含
む、先に説明したようなコンピュータ・システム・アー
キテクチャを提供することである。つまり、データ・セ
グメントを圧縮領域または非圧縮領域に記憶する分割メ
モリ方式ではなく、全てのデータ・セグメントを一貫し
て扱い、メモリにランダムに配置した仮想非圧縮キャッ
シュを含む非圧縮セグメントのセットをブロックを使っ
て記憶する。
【0012】本発明の好適な実施例に従って、メイン・
メモリを圧縮するコンピュータ・システムでデータ・ア
クセス時間を短縮するシステムを提供する。圧縮単位は
メモリ・セグメントであり、システムは非圧縮データと
圧縮データ・セグメントを記憶する共通メモリ領域と、
メイン・メモリに記憶し、キャッシュ・ミス操作のとき
非圧縮データ・セグメントと圧縮データ・セグメントの
両方を見つけ、且つそれぞれデータ・セグメントのステ
ータスを示すエントリを持つディレクトリ手段と、前記
ディレクトリ・エントリにアクセスし、キャッシュ・ミ
ス・イベントのときにアクセスするデータ・セグメント
のステータス指標をチェックし、ステータス指標に従っ
て共通メモリ領域からのデータ・セグメントの処理を可
能にする制御手段とを含み、共通メモリ領域に非圧縮デ
ータ・セグメント記憶域を設けることでデータ検索待ち
時間を短縮する。
【0013】
【発明の実施の形態】図1に、圧縮メイン・メモリを使
用した代表的なコンピュータ・システム100の全体構
造を示す。中央処理装置(CPU)102は、キャッシ
ュ104との間でデータを読み書きする。キャッシュ・
ミスとキャッシュ記憶の結果、圧縮メイン・メモリ10
8に対する読み書きが圧縮コントローラ106によって
実行される。
【0014】図2に、図1のキャッシュ104、圧縮
(compression)コントローラ106、圧縮メイン・メ
モリ108の構造を詳しく示す。圧縮メイン・メモリ1
08は、従来のRAMメモリM210を使って実装し、
メモリM210はディレクトリD220と複数の固定サ
イズ・ブロック230を記憶するため使用する。キャッ
シュ240は、従来通り、キャッシュ・ライン(のセッ
ト)248に対してキャッシュ・ディレクトリ245を
使って実装する。圧縮コントローラ260は、圧縮デー
タ(compressed data)の読出しに使用する圧縮解除器
(decompressor)262、データの圧縮と書込みに使用
する圧縮器264、非圧縮データを一時的に保持するた
め使用する複数のメモリ・バッファ266、及び制御ロ
ジック268を含む。各キャッシュ・ラインは、所定の
実メモリ・アドレス250に関連付ける。ただし従来の
メモリとは異なりアドレス250はメモリM210のア
ドレスを参照するのではなく、ディレクトリD220に
対するディレクトリ・インデックス270を求めるため
使用する。各ディレクトリ・エントリは、関連付けられ
たキャッシュ・ラインを検索できる情報(詳しくは図3
に示す)を含む。D220のディレクトリ・エントリに
より参照される圧縮されたデータの単位は、キャッシュ
・ライン248に関連付けることができる。あるいはま
た圧縮単位を比較的大きくしてもよい。つまりキャッシ
ュ・ラインのセット(セグメント)をまとめて圧縮でき
る。簡単のため以下の例では、圧縮されたデータの単位
がキャッシュ・ライン248に対応するとする。アドレ
スA1 271に関連付けられたライン1のディレクト
リ・エントリ221は、圧縮されたラインをディレクト
リ・エントリ内に全て記憶できる程度まで圧縮されたラ
インに対応する。アドレスA2 272に関連付けられ
たライン2のディレクトリ・エントリ222は、第1の
完全ブロック231と部分的に埋められた第2のブロッ
ク232を使って圧縮したフォーマットで記憶されたラ
インに対応する。最後に、アドレスA3 273とA4
274に関連付けられたライン3とライン4のディレ
クトリ・エントリ223及び224は、複数の完全ブロ
ック(ライン3にブロック233及び234、ライン4
にブロック235)を使って圧縮したフォーマットで記
憶されたラインに対応する。圧縮された2つのラインの
残りはブロック236で組み合わせられる。
【0015】図3に、ディレクトリ・エントリ・フォー
マットの例を示す。この例の場合、図2のブロック23
0はサイズが256バイトで、図2のキャッシュ・ライ
ン248のサイズは1024バイトと仮定する。つまり
ラインは4つのブロックを使って非圧縮フォーマットで
記憶できる。この例のディレクトリ・エントリのサイズ
は16バイトであり、第1バイトは複数のフラグを含
む。第1バイト305の内容により、ディレクトリ・エ
ントリの残りのフォーマットが決まる。フラグ(ビッ
ト)301はラインを圧縮フォーマットで記憶するか非
圧縮フォーマットで記憶するかを指定する。非圧縮フォ
ーマットで記憶する場合、ディレクトリ・エントリの残
りはライン1 310に対応すると解釈され、4つの3
2ビット・アドレスにより、ラインを含む4つのブロッ
クのメモリ内のアドレスが与えられる。圧縮フォーマッ
トで記憶する場合、フラグ・ビット302は、ディレク
トリ・エントリ内に圧縮ライン全体を記憶するかどうか
を示す。全体の場合、ディレクトリ・エントリのフォー
マットはライン3 330に対応し、最大120ビット
の圧縮データが記憶される。全体でない場合、120ビ
ットを超える圧縮ラインでは、ライン1 310または
ライン2 320に示すフォーマットを使用できる。ラ
イン1 310フォーマットの場合、別のフラグ・ビッ
ト303が、圧縮ラインを記憶するため使用するブロッ
クの数を指定し、1つ乃至4つの30ビット・アドレス
でブロックの位置を指定し、最後に、最後のブロック
(32バイト単位)に、フラグメント、つまり残りがブ
ロックの最初と最後のどちらに記憶されているかを示す
ビットとともに記憶される圧縮ラインのフラグメントま
たは残りのサイズは、4つのフラグメント情報ビット3
04により与えられる。ディレクトリ・エントリ・フォ
ーマット320は、圧縮ラインの一部が(圧縮解除待ち
時間を短縮するために)ディレクトリ・エントリに記憶
される別のフォーマットを示す。その場合、圧縮ライン
の残りの部分を記憶するため使用する最初と最後のブロ
ックまでのアドレスだけがディレクトリ・エントリに記
憶され、間のブロック(がある場合)は、リンク・リス
ト方式により見つけられる。つまり圧縮ラインを記憶す
るため使用する各ブロックが必要なら所定の圧縮ライン
を記憶するため使用する次のブロックのアドレスを含む
ポインタ・フィールドを持つ。
【0016】圧縮メイン・メモリ・システムと圧縮メイ
ン・メモリ・ディレクトリ構造の例について説明した
が、本発明の動作の1つの方法について、ここで詳しく
説明する。先に述べた通り、圧縮単位はキャッシュ・ラ
インで構成するか、ともに圧縮、圧縮解除できるキャッ
シュ・ライン・セットで構成してもよい。例えば、キャ
ッシュ・ラインのサイズを64バイトとすると、連続し
た16のキャッシュ・ラインのセットを1024バイト
の実メモリ・アドレス境界に揃えて、圧縮単位を形成す
ることができる。曖昧さを避けるため、圧縮単位(今述
べた通り1つのキャッシュ・ラインで構成するか、キャ
ッシュ・ラインのセットで構成できる)をセグメントと
呼ぶ。従って、D220の各ディレクトリ・エントリ
(図2)は、圧縮セグメントまたは非圧縮セグメントを
記憶するため使用するブロックのステータスと位置を与
える。
【0017】前記のように、最近使用された複数のセグ
メントを非圧縮フォーマットで維持すると、圧縮と圧縮
解除による余分なメモリ待ち時間が短縮される。最近使
用された項目のリストを維持するため使用できるソフト
ウェアによる手法やハードウェアによる実装の方法は少
なくない。実装方法の例として、FIFO(先入れ先出
し)リスト、LRU(最長時間未使用)スタック等があ
る。ここで詳述している通り、FIFOリストをハード
ウェアで実装する場合、FIFOは、仮想非圧縮キャッ
シュに現在存在する非圧縮データ・セグメントのディレ
クトリ・インデックス(図2の270)のリストで構成
する。つまり、FIFOのディレクトリ・インデックス
により参照される各セグメントは、非圧縮フォーマット
で記憶され、そのようなセグメント全ての集合は、仮想
非圧縮キャッシュを形成する。
【0018】図4に、FIFO410を使用して仮想非
圧縮キャッシュを管理する拡張制御ロジック420とと
もに、圧縮コントローラ260(図2)を拡張してFI
FO装置410を追加する方法の本発明による1実施例
を示す。FIFO装置はシフト・レジスタを使って実装
するか、FIFOの現在の項目数を与えるレジスタとと
もに、FIFOのヘッドとテールを指し示すレジスタを
持つメモリ・アレイとしても実装できる(FIFOは最
初は空である)。周知の通り、FIFOの操作は、1)
項目の挿入(FIFOのヘッドでの)と、2)項目の削
除(FIFOのテールでの)を含む。FIFOが一杯に
なると、つまり現在の項目数がFIFOのサイズと同じ
とき、新しい項目を挿入するにはテールの項目も削除す
る必要がある。
【0019】FIFOを実装して使用するとき、FIF
Oのヘッドとテールを除外すると、FIFOの内容は線
形スキャンでしか見つけられない。セグメントにアクセ
スするときは、そのセグメントのディレクトリ・インデ
ックスが現在FIFOにあるかどうかを素早く判定する
ことが望ましい。FIFOの線形スキャンは時間がかか
ることがあるので、図3に関して説明したディレクトリ
・エントリ・フォーマットを拡張することで、仮想非圧
縮キャッシュ内のセグメントのメンバーシップに関して
セグメントのステータスを示す、つまりFIFOにディ
レクトリ・インデックスが含まれるかどうかを示すこと
ができる。これは、例えば図3のディレクトリ・フォー
マットでは、FIFOにより参照されるセグメントは全
て、非圧縮フォーマットで記憶されることがわかるの
で、フラグ・ビットを追加せずに行える。非圧縮フラグ
(ビット)301(図3)を非圧縮に設定した場合、残
りのフラグはこの場合では使用されず、従って他の用途
に使用できる。例えば、図3のフラグ・ビット302
は、設定されたとき、またセグメントが非圧縮とマーク
されたとき、ディレクトリ・インデックスがFIFOに
あることを示すと解釈でき、クリアされたとき、またセ
グメントが非圧縮とマークされたときは、ディレクトリ
・インデックスがFIFOにないことを示すと解釈でき
る。これはその後"IN−FIFO"フラグ・ビットと呼
ばれる。これは拡張した例としてのみ説明している。同
様な拡張は、他のディレクトリ・エントリ・フォーマッ
トでも可能である。
【0020】図5に、仮想非圧縮キャッシュを管理する
拡張制御ロジック420の制御の流れ500を示す。図
5の方法の流れ500に示すロジックは、実メモリ・ア
ドレスAの何らかのキャッシュ・ラインで(例えば図2
のキャッシュ240の)キャッシュ・ミスに応答して生
じることを理解する必要がある。最初のステップ505
で実メモリ・アドレスAはディレクトリ・エントリ・イ
ンデックスK(以下"エントリK"と呼び、このエントリ
により参照されるセグメントは以下"セグメントK"と呼
ぶ)に変換される。仮想非圧縮キャッシュの非圧縮セグ
メントの他に、他の特定のセグメントも非圧縮フォーマ
ットで記憶される。これは例えば、セグメント内のデー
タが圧縮されないことがわかる場合があるからである。
従ってステップ510で、ディレクトリ・エントリKの
フラグ・ビット301(図3)を調べ、セグメントKが
圧縮されているか判定する。セグメントが圧縮されてい
ないと判定された場合、制御はステップ530に進み、
エントリKの"IN−FIFO"フラグ・ビット(フラグ
・ビット302等)がインデックスが現在FIFOに記
憶されていることを示すかどうか判定する。ステップ5
30で、インデックスが現在FIFOに記憶されている
ことをフラグ・ビットが示す場合、処理は完了し(アク
セスされているセグメントはすでに仮想非圧縮キャッシ
ュにある)、プロセスはそのキャッシュ・ミス・イベン
トで終了する。他の場合、ステップ530で、インデッ
クスがFIFOに現在記憶されていないことをフラグ・
ビットが示す場合、つまり非圧縮セグメントが仮想非圧
縮キャッシュにない場合、プロセスはステップ535に
進み、キャッシュ・ミスが読出しアクセスかどうかを判
定する。読出し操作(データは変更されない)の場合に
は、圧縮されないセグメントを仮想非圧縮キャッシュに
追加しても性能の改良はないので、読出しアクセスのと
き、仮想キャッシュ管理処理はそのキャッシュ・ミス・
イベントで完了する。しかし、書込みアクセスではセグ
メントのデータが変更され、その場合はラインが圧縮可
能になることがある。従って、キャッシュ・ミスの書込
みアクセス・イベントの場合、制御はステップ540に
進み、FIFOが一杯かどうか判定する。FIFOが一
杯でない場合、ステップ542でFIFOにディレクト
リ・インデックスKを挿入し、ステップ543でその対
応するディレクトリ・エントリに"IN−FIFO"フラ
グ・ビットを設定する。ステップ540でFIFOが一
杯と判定されると、制御はステップ541に進み、2つ
の並列操作シーケンスを開始する。第1シーケンスはス
テップ542と543で、前記のように、ディレクトリ
・インデックスKをFIFOに挿入し(ステップ54
2)、その対応するディレクトリ・エントリに"IN−
FIFO"フラグ・ビットを設定する(ステップ54
3)必要がある。第2シーケンスはステップ525、5
26、527及び528を含み、FIFOから項目を削
除し、仮想非圧縮キャッシュからセグメントを削除す
る。
【0021】特にステップ525乃至528は、仮想非
圧縮キャッシュからセグメントを次のように論理的に削
除する。まずステップ525で、FIFOのテールで項
目を削除することでディレクトリ・インデックスK'が
見つかる。次にステップ526で、エントリK'を見つ
けて読出し、エントリK'の"IN−FIFO"フラグ・
ビットがクリアされる。次にステップ527で仮想非圧
縮キャッシュ・メモリからセグメントK'を読出す。最
後にステップ528でこのセグメントを圧縮し、メモリ
に戻す。あるいはまた、新しく書込まれたデータを圧縮
できない場合は、前記のように、セグメントは圧縮しな
いままで、そのインデックスはFIFOに記憶しない。
【0022】ステップ510(図5)に戻り、セグメン
トKが圧縮されていることがディレクトリ・エントリK
から判定されると、制御はステップ515に進み、FI
FOが一杯かどうかを判定する。FIFOが一杯でない
場合、仮想非圧縮キャッシュから別のセグメントを削除
することなくセグメントKを仮想非圧縮キャッシュに追
加できる。これは、ステップ521、522及び523
を含むシーケンスを実行することによって実行される。
まずステップ521でメモリからセグメントKを読出
し、圧縮解除し、非圧縮フォーマットでメモリに戻す。
次にステップ522でFIFOのヘッドにディレクトリ
・インデックスKを挿入する。最後にステップ523で
エントリKの"IN−FIFO"フラグ・ビットを設定す
る。
【0023】ステップ515でFIFOが一杯と判定さ
れた場合、先に述べたステップの組み合わせを実行す
る。特にステップ520で、2つのステップ・シーケン
スを並列に開始する。第1シーケンスは前記のようにス
テップ525、526、527及び528を含み、FI
FOのテールにより参照されるセグメントを仮想非圧縮
キャッシュから論理的に削除し(ステップ525)、エ
ントリK'の"IN−FIFO"フラグ・ビットをクリア
する(ステップ526)。仮想非圧縮キャッシュ・メモ
リからセグメントK'を読出し(ステップ527)、セ
グメントを圧縮してメモリに戻す(ステップ528)。
第2シーケンスは前記のようにステップ521、52
2、523を含み、仮想非圧縮キャッシュにセグメント
Kを論理的に追加する。ディレクトリ・インデックスK
はFIFOのヘッドである。つまり、メモリからセグメ
ントKを読出し、セグメントを圧縮解除し、セグメント
を非圧縮フォーマットでメモリに戻す(ステップ52
1)。ディレクトリ・インデックスKをFIFOのヘッ
ドに挿入し(ステップ522)、エントリKの"IN−
FIFO"フラグ・ビットを設定する(ステップ52
3)。
【0024】前記のように、複数のセグメントを非圧縮
フォーマットで維持すると全体の圧縮量が少なくなり、
良好なヒット率を得るにはそのようなセグメントが比較
的少数あればよい。つまり、圧縮解除に伴って増える待
ち時間が大幅に短縮される。非圧縮セグメントを比較的
少数しか維持しないので(メイン・メモリ全体のサイズ
に比べて)、圧縮に対するその影響は無視することがで
きる。最近使用された複数のセグメントを非圧縮フォー
マットで維持することは、特に、メイン・メモリのすぐ
上のメモリ・キャッシュのライン・サイズ"S"がセグメ
ント・サイズ"T"(つまりメイン・メモリの圧縮単位)
より小さいときに(メモリ性能を高める上で)有益であ
る。例えばSを64バイト、Tを1024バイトとす
る。1024バイトのセグメントの64バイト・ライン
のいくつかまたは全てを短時間で参照する(読出しや書
込み)ことはごく一般的である。圧縮されていない10
24バイトのメイン・メモリ・セグメントの64バイト
・セクションはそれぞれ非圧縮フォーマットでアクセス
できるので、この参照セットに圧縮解除は必要ない。
【0025】本発明について、特に好適実施例を参照し
て説明したが、当業者には、特許請求の範囲によっての
み制限される本発明の主旨と範囲から逸脱することな
く、形式、詳細の面で前記及び他の変更が可能なことは
理解されよう。
【0026】例えば、FIFOリスト以外の機構により
仮想非圧縮キャッシュを管理できる。例えばLRU(最
長時間未使用)スタック・データ構造をFIFOの代わ
りに使用でき、FIFOリストを使用する前記の実施例
があれば、必要な変更は容易である。
【0027】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0028】(1)メイン・メモリを圧縮し、圧縮単位
がメモリ・セグメントであるコンピュータ・システムの
データ・アクセス時間を短縮するシステムであって、非
圧縮データ・セグメントと圧縮データ・セグメントを記
憶する共通メモリ領域と、メイン・メモリに記憶され、
キャッシュ・ミス操作で非圧縮データ・セグメントと圧
縮データ・セグメントの両方を見つけるエントリを持
ち、CPUで生成される実メモリ・アドレスが1または
それ以上の物理メモリ位置に変換され、各エントリが前
記データ・セグメントのステータスを示す、ディレクト
リ手段と、前記ディレクトリ・エントリにアクセスし、
前記キャッシュ・ミス・イベントでアクセスするデータ
・セグメントのステータス指標をチェックし、前記ステ
ータス指標に従って前記共通メモリ領域から前記データ
・セグメントの処理を可能にし、よってデータ・セグメ
ントを圧縮しない形で前記共通メモリ領域に維持するこ
とでデータ検索待ち時間を短縮する、制御手段と、を含
む、システム。 (2)前記制御手段は、各インデックスが前にアクセス
され現在は前記共通メモリ領域に記憶されている非圧縮
データ・セグメントに対応し、所定量のインデックスを
含むインデックス・セットを維持する手段を含む、前記
(1)記載のシステム。 (3)前記インデックス・セット維持手段は、前記共通
メモリ領域から最近アクセスされた非圧縮データ・セグ
メントを判定するFIFOリストを含む、前記(2)記
載のシステム。 (4)前記インデックス・セット維持手段は、前記共通
メモリ領域から最近アクセスされた非圧縮データ・セグ
メントを判定する最長時間未使用スタックを含む、前記
(2)記載のシステム。 (5)前記ディレクトリ・インデックスの前記ステータ
ス指標は、セグメントが圧縮されていないかどうかを示
すため設定する第1フラグ・ビットを含む、前記(2)
記載のシステム。 (6)前記ディレクトリ・インデックスの前記ステータ
ス指標は、非圧縮データ・セグメントが前記インデック
ス・セットに含まれるかどうかを示すため設定される第
2フラグ・ビットを含み、前記制御手段は、データ・セ
グメントが圧縮されていないかどうかを示す前記第1フ
ラグ・ビットをチェックし、非圧縮データ・セグメント
の確認後、前記第2フラグ・ビットをチェックし、該非
圧縮データ・セグメントのアクセス・ステータスを判定
する、前記(2)記載のシステム。 (7)前記制御手段は、更に、前記インデックス・セッ
トのインデックスの現在量が所定限度に達しているかど
うかを判定し、前記インデックス・セットが所定限度に
達していないとき、前記データ・セグメントは、書込み
アクセスのキャッシュ・ミス・イベントで非圧縮データ
・セグメントと判定され、前記制御手段は、前記インデ
ックス・セットの非圧縮データ記憶域に書込む該非圧縮
データ・セグメントに対応する新しいインデックスを追
加し、該追加追加するインデックスに関連付けられる前
記ディレクトリ・インデックスに前記第2フラグ・ビッ
トを設定する、手段を含む、前記(6)記載のシステ
ム。 (8)前記インデックス・セットが所定限度に達し、前
記データ・セグメントが書込みアクセスのキャッシュ・
ミス・イベントで非圧縮データ・セグメントと判定され
たとき、前記制御手段は前記インデックス・セットから
非圧縮データ・セグメントを指し示すインデックスを削
除すると同時に、削除する該インデックスに関連付けら
れた前記ディレクトリ・エントリの前記第2フラグ・ビ
ットをクリアし、該削除されたインデックスを、前記共
通メモリの非圧縮データ記憶域に書込む該非圧縮データ
・セグメントの新しいインデックスと置き換え、該置き
換えられた新しいインデックスに関連付けられる前記デ
ィレクトリ・エントリの前記第2フラグ・ビットを設定
する、前記(7)記載のシステム。 (9)前記制御手段は、前記共通メモリ領域に記憶する
ため非圧縮データ・セグメントを圧縮する手段を含み、
更に、前記削除されるインデックスが指し示す共通メモ
リから非圧縮データ・セグメントを読出し、前記共通メ
モリ領域に圧縮データ・セグメントとして記憶するため
該読出した非圧縮データ・セグメントを圧縮する手段を
含む、前記(8)記載のシステム。 (10)前記制御手段は、非圧縮データ・セグメントを
前記共通メモリ領域に記憶するため圧縮解除する手段を
含み、前記インデックス・セットが所定限度に達してい
ないことが判定され、前記データ・セグメントが圧縮デ
ータ・セグメントと判定されたとき、前記制御手段は、
該圧縮データを読出し、該読出したデータ・セグメント
を前記共通メモリ領域に非圧縮データ・セグメントとし
て記憶するため圧縮解除し、該非圧縮データ・セグメン
トに対応する新しいインデックスを前記インデックス・
セットに追加し、該追加するインデックスに関連付けら
れる前記ディレクトリ・エントリに第2フラグ・ビット
を設定する、前記(9)記載のシステム。 (11)前記インデックス・セットが所定限度に達して
いることが判定され、前記データ・セグメントが圧縮デ
ータ・セグメントと判定されたとき、前記制御手段は、
前記インデックス・セットから非圧縮データ・セグメン
トを指し示すインデックスを削除すると同時に、削除し
た該インデックスに関連付けられた前記ディレクトリ・
インデックスの前記第2フラグ・ビットをクリアし、前
記圧縮データ・セグメントを読出し、該読出した圧縮デ
ータ・セグメントを前記共通メモリ領域に非圧縮データ
・セグメントとして記憶するため圧縮解除し、該非圧縮
データ・セグメントに対応する新しいインデックスを前
記インデックス・セットに追加し、該追加するインデッ
クスに関連付けられる前記ディレクトリ・インデックス
に前記第2フラグ・ビットを設定する、前記(10)記
載のシステム。 (12)前記制御手段は、更に、前記削除したインデッ
クスが指し示す共通メモリから非圧縮データ・セグメン
トを読出し、該読出した非圧縮データ・セグメントを圧
縮データ・セグメントとして前記共通メモリ領域に記憶
するため圧縮する、前記(11)記載のシステム。 (13)メモリのページにメモリ・セグメントが含まれ
る、前記(1)記載のシステム。 (14)メイン・メモリを圧縮し、圧縮単位がメモリ・
セグメントであるコンピュータ・システムのキャッシュ
・ミス操作でデータ・アクセス待ち時間を短縮する方法
であって、圧縮データ・セグメントと非圧縮データ・セ
グメントを記憶するためメイン・メモリに共通メモリ領
域を提供するステップと、前記メイン・メモリに形成
し、キャッシュ・ミス操作のとき非圧縮データ・セグメ
ントと圧縮データ・セグメントの両方を見つけるエント
リを持ち、CPUで生成される実メモリ・アドレスが1
またはそれ以上の物理メモリ位置に変換され、各エント
リが前記メイン・メモリのデータ・セグメントを見つ
け、且つ該データ・セグメントのステータスを示すイン
デックスを含む、ディレクトリ構造にアクセスするステ
ップと、キャッシュ・ミス操作でアクセスするデータ・
セグメントのステータス指標をチェックし、該ステータ
スに従って前記共通メモリ領域から圧縮データ・セグメ
ントか非圧縮データ・セグメントのいずれかを処理し、
データ・セグメントを圧縮しない形で前記共通メモリ領
域に維持することでデータ検索待ち時間を短縮するステ
ップと、を含む、方法。 (15)各インデックスが、前にアクセスされ現在は前
記共通メモリ領域に記憶されている非圧縮データ・セグ
メントに対応し、所定量の該インデックスを含むインデ
ックス・セットを維持するステップを含む、前記(1
4)記載の方法。 (16)キャッシュ・ミス操作でアクセスするデータ・
セグメントの前記ステータス指標チェック・ステップは
セグメントが圧縮されていないかどうかを示す第1フラ
グ・ビットをチェックするステップを含む、前記(1
5)記載の方法。 (17)前記第1フラグ・ビットのステータスは、キャ
ッシュ・ミス操作でアクセスする非圧縮データ・セグメ
ントを示すとき、前記インデックス・セットに非圧縮デ
ータ・セグメントが含まれるかどうかを示す第2フラグ
・ビットをチェックするステップを含む、前記(16)
記載の方法。 (18)キャッシュ・ミス・イベントで非圧縮データ・
セグメントを判定したとき、現在のキャッシュ・ミス・
イベントで前記非圧縮データ・セグメントの書込みアク
セスが必要かどうかを判定するステップと、書込みアク
セスのキャッシュ・イベントを判定したとき、前記イン
デックス・セットのインデックスの現在量が所定限度に
達しているかどうかを判定するステップと、を含む、前
記(17)記載の方法。 (19)書込みアクセスのキャッシュ・ミス・イベント
で前記インデックス・セットが所定限度に達していない
とき、前記インデックス・セットに新しいインデックス
を追加し、該追加するインデックスは前記メイン・メモ
リの非圧縮データ記憶域に書込む前記非圧縮データ・セ
グメントに対応し、該追加するインデックスに関連付け
られるディレクトリ・インデックスに前記第2フラグ・
ビットを設定する、前記(18)記載の方法。 (20)前記インデックス・セットが所定限度に達し、
書込みアクセスのキャッシュ・ミス・イベントで前記デ
ータ・セグメントが非圧縮データ・セグメントと判定さ
れたとき、前記インデックス・セットから、前記共通メ
モリ領域の非圧縮データ・セグメントを指し示すインデ
ックスを削除するのとほぼ同時に、該削除したインデッ
クスに関連付けられた前記ディレクトリ・インデックス
の前記第2フラグ・ビットをクリアするステップと、前
記削除したインデックスを、前記共通メモリの非圧縮デ
ータ記憶域に書込む前記非圧縮データ・セグメントの新
しいインデックスと置き換え、該置き換えた新しいイン
デックスに関連付けられる前記ディレクトリ・エントリ
の前記第2フラグ・ビットを設定するステップとを含
む、前記(19)記載の方法。 (21)前記削除したインデックスが指し示す共通メモ
リから非圧縮データ・セグメントを読出し、前記共通メ
モリ領域に圧縮データ・セグメントとして記憶するため
該読出した非圧縮データ・セグメントを圧縮するステッ
プを含む、前記(20)記載の方法。 (22)キャッシュ・ミス・イベントで圧縮データ・セ
グメントを判定したとき、前記インデックス・セットの
インデックスの現在量が所定限度に達したかどうかを判
定し、キャッシュ・ミス・イベントで前記インデックス
・セットが所定限度に達していないことを判定したと
き、前記圧縮データ・セグメントを読出し、該読出した
圧縮データ・セグメントを前記共通メモリ領域に非圧縮
データ・セグメントとして記憶するため圧縮解除し、該
非圧縮データ・セグメントに対応する新しいインデック
スを前記インデックス・セットに追加し、該追加したイ
ンデックスに関連付けられる前記ディレクトリ・エント
リの前記第2フラグ・ビットを設定するステップと、を
含む、前記(17)記載の方法。 (23)前記インデックス・セットが所定限度に達した
ことを判定したとき、非圧縮データ・セグメントを指し
示すインデックスを前記インデックス・セットから削除
するのとほぼ同時に、該削除したインデックスに関連付
けられた前記ディレクトリ・エントリの前記第2フラグ
・ビットをクリアするステップと、前記圧縮データ・セ
グメントを読出し、該読出した圧縮データ・セグメント
を前記共通メモリ領域に非圧縮データ・セグメントとし
て記憶するため圧縮解除し、該圧縮解除したデータ・セ
グメントに対応する新しいインデックスを前記インデッ
クス・セットに追加し、該追加したインデックスに関連
付けられる前記ディレクトリ・エントリの前記第2フラ
グ・ビットを設定するステップとを含む、前記(22)
記載の方法。 (24)前記削除したインデックスが指し示す共通メモ
リから非圧縮データ・セグメントを読出し、該読出した
非圧縮データ・セグメントを前記共通メモリ領域に圧縮
データ・セグメントとして記憶するため圧縮するステッ
プを含む、前記(23)記載の方法。 (25)CPUを持ち、CPUで生成された実メモリ・
アドレスを圧縮メイン・メモリ構造の1またはそれ以上
の物理メモリ位置に変換する制御装置を含む圧縮メイン
・メモリ・アーキテクチャを実装したコンピュータ・シ
ステムにおいて、該メイン・メモリ構造に圧縮データ・
セグメントと非圧縮データ・セグメントの両方を記憶し
検索するキャッシュ管理システムであって、前記メイン
・メモリに含まれ、ディレクトリ・エントリをアクセス
するため前記制御装置によりアドレス指定され、キャッ
シュ・ミス操作処理のため各ディレクトリ・エントリに
より前記メイン・メモリから非圧縮データ・セグメント
と圧縮データ・セグメントを検索でき、各ディレクトリ
・エントリがデータ・セグメントのステータスを示す、
ディレクトリ構造と、前記メイン・メモリの最近アクセ
スされた非圧縮データ・セグメントに対応するディレク
トリ・インデックスのリストを維持するFIFO構造
と、を含み、前記制御装置は、キャッシュ・ミス操作の
ためアクセスするデータ・セグメントのステータス指標
をチェックし、該ステータスに従って前記共通メモリ領
域から圧縮データ・セグメントまたは非圧縮データ・セ
グメントのいずれかを処理し、非圧縮データ・セグメン
トを処理するときに対応するディレクトリ・エントリの
前記FIFOリストと該ステータス指標を継続的に更新
する、キャッシュ管理システム。
【図面の簡単な説明】
【図1】圧縮メイン・メモリを実装する代表的なコンピ
ュータ・システムの構造を示す図である。
【図2】従来技術に従った圧縮メイン・メモリ・システ
ムの構成を示す図である。
【図3】図2の圧縮メイン・メモリ・システムに使用す
るディレクトリ・エントリ・フォーマットの例を示す図
である。
【図4】本発明に従った仮想非圧縮キャッシュをFIF
Oで実装する圧縮コントローラの例を示す図である。
【図5】本発明に従った仮想非圧縮キャッシュのFIF
O管理を制御するステップを示す図である。
【符号の説明】
100 コンピュータ・システム 102 中央処理装置(CPU) 104、240 キャッシュ 106 圧縮コントローラ 108 圧縮メイン・メモリ 206 圧縮コントローラ 210 RAMメモリM 220 ディレクトリD 221、223、224 ディレクトリ・エントリ 230 固定サイズ・ブロック 231 完全ブロック 248 キャッシュ・ライン(のセット) 250 実メモリ・アドレス 260 圧縮コントローラ 262 圧縮解除器 264 圧縮器 266 メモリ・バッファ 268 制御ロジック 270 ディレクトリ・インデックス 271 アドレスA1 272 アドレスA2 273 アドレスA3 274 アドレスA4 301、302、303、304 フラグ・ビット 305 第1バイト 310 ライン1 320 ライン2 330 ライン3 410 FIFO 420 拡張制御ロジック
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 12/10 G06F 12/10 E (72)発明者 カロライン・ディ・ベンベニスト アメリカ合衆国、ニューヨーク州ニューヨ ーク、アパートメント 4ビィ、ウエス ト・トゥウェルブス・ストリート 125 (72)発明者 ペーター・エイ・フラナゼク アメリカ合衆国10549、ニューヨーク州マ ウント・キスコ、クロウ・ヒル・ロード 355 (72)発明者 ジョン・ティ・ロビンソン アメリカ合衆国10598、ニューヨーク州ヨ ークタウン・ハイツ、ノース・ディアフィ ールド・アベニュー 3314 (72)発明者 チャールズ・オー・シュルツ アメリカ合衆国06877、コネチカットテ州 リッジフィールド、ロブ・ヒル・ロード 94

Claims (25)

    【特許請求の範囲】
  1. 【請求項1】メイン・メモリを圧縮し、圧縮単位がメモ
    リ・セグメントであるコンピュータ・システムのデータ
    ・アクセス時間を短縮するシステムであって、 非圧縮データ・セグメントと圧縮データ・セグメントを
    記憶する共通メモリ領域と、 メイン・メモリに記憶され、キャッシュ・ミス操作で非
    圧縮データ・セグメントと圧縮データ・セグメントの両
    方を見つけるエントリを持ち、CPUで生成される実メ
    モリ・アドレスが1またはそれ以上の物理メモリ位置に
    変換され、各エントリが前記データ・セグメントのステ
    ータスを示す、ディレクトリ手段と、 前記ディレクトリ・エントリにアクセスし、前記キャッ
    シュ・ミス・イベントでアクセスするデータ・セグメン
    トのステータス指標をチェックし、前記ステータス指標
    に従って前記共通メモリ領域から前記データ・セグメン
    トの処理を可能にし、よってデータ・セグメントを圧縮
    しない形で前記共通メモリ領域に維持することでデータ
    検索待ち時間を短縮する、制御手段と、 を含む、システム。
  2. 【請求項2】前記制御手段は、各インデックスが前にア
    クセスされ現在は前記共通メモリ領域に記憶されている
    非圧縮データ・セグメントに対応し、所定量のインデッ
    クスを含むインデックス・セットを維持する手段を含
    む、請求項1記載のシステム。
  3. 【請求項3】前記インデックス・セット維持手段は、前
    記共通メモリ領域から最近アクセスされた非圧縮データ
    ・セグメントを判定するFIFOリストを含む、請求項
    2記載のシステム。
  4. 【請求項4】前記インデックス・セット維持手段は、前
    記共通メモリ領域から最近アクセスされた非圧縮データ
    ・セグメントを判定する最長時間未使用スタックを含
    む、請求項2記載のシステム。
  5. 【請求項5】前記ディレクトリ・インデックスの前記ス
    テータス指標は、セグメントが圧縮されていないかどう
    かを示すため設定する第1フラグ・ビットを含む、請求
    項2記載のシステム。
  6. 【請求項6】前記ディレクトリ・インデックスの前記ス
    テータス指標は、非圧縮データ・セグメントが前記イン
    デックス・セットに含まれるかどうかを示すため設定さ
    れる第2フラグ・ビットを含み、前記制御手段は、デー
    タ・セグメントが圧縮されていないかどうかを示す前記
    第1フラグ・ビットをチェックし、非圧縮データ・セグ
    メントの確認後、前記第2フラグ・ビットをチェック
    し、該非圧縮データ・セグメントのアクセス・ステータ
    スを判定する、請求項2記載のシステム。
  7. 【請求項7】前記制御手段は、更に、前記インデックス
    ・セットのインデックスの現在量が所定限度に達してい
    るかどうかを判定し、前記インデックス・セットが所定
    限度に達していないとき、前記データ・セグメントは、
    書込みアクセスのキャッシュ・ミス・イベントで非圧縮
    データ・セグメントと判定され、前記制御手段は、前記
    インデックス・セットの非圧縮データ記憶域に書込む該
    非圧縮データ・セグメントに対応する新しいインデック
    スを追加し、該追加追加するインデックスに関連付けら
    れる前記ディレクトリ・インデックスに前記第2フラグ
    ・ビットを設定する、手段を含む、請求項6記載のシス
    テム。
  8. 【請求項8】前記インデックス・セットが所定限度に達
    し、前記データ・セグメントが書込みアクセスのキャッ
    シュ・ミス・イベントで非圧縮データ・セグメントと判
    定されたとき、前記制御手段は前記インデックス・セッ
    トから非圧縮データ・セグメントを指し示すインデック
    スを削除すると同時に、削除する該インデックスに関連
    付けられた前記ディレクトリ・エントリの前記第2フラ
    グ・ビットをクリアし、該削除されたインデックスを、
    前記共通メモリの非圧縮データ記憶域に書込む該非圧縮
    データ・セグメントの新しいインデックスと置き換え、
    該置き換えられた新しいインデックスに関連付けられる
    前記ディレクトリ・エントリの前記第2フラグ・ビット
    を設定する、請求項7記載のシステム。
  9. 【請求項9】前記制御手段は、前記共通メモリ領域に記
    憶するため非圧縮データ・セグメントを圧縮する手段を
    含み、更に、前記削除されるインデックスが指し示す共
    通メモリから非圧縮データ・セグメントを読出し、前記
    共通メモリ領域に圧縮データ・セグメントとして記憶す
    るため該読出した非圧縮データ・セグメントを圧縮する
    手段を含む、請求項8記載のシステム。
  10. 【請求項10】前記制御手段は、非圧縮データ・セグメ
    ントを前記共通メモリ領域に記憶するため圧縮解除する
    手段を含み、前記インデックス・セットが所定限度に達
    していないことが判定され、前記データ・セグメントが
    圧縮データ・セグメントと判定されたとき、前記制御手
    段は、該圧縮データを読出し、該読出したデータ・セグ
    メントを前記共通メモリ領域に非圧縮データ・セグメン
    トとして記憶するため圧縮解除し、該非圧縮データ・セ
    グメントに対応する新しいインデックスを前記インデッ
    クス・セットに追加し、該追加するインデックスに関連
    付けられる前記ディレクトリ・エントリに第2フラグ・
    ビットを設定する、請求項9記載のシステム。
  11. 【請求項11】前記インデックス・セットが所定限度に
    達していることが判定され、前記データ・セグメントが
    圧縮データ・セグメントと判定されたとき、前記制御手
    段は、前記インデックス・セットから非圧縮データ・セ
    グメントを指し示すインデックスを削除すると同時に、
    削除した該インデックスに関連付けられた前記ディレク
    トリ・インデックスの前記第2フラグ・ビットをクリア
    し、前記圧縮データ・セグメントを読出し、該読出した
    圧縮データ・セグメントを前記共通メモリ領域に非圧縮
    データ・セグメントとして記憶するため圧縮解除し、該
    非圧縮データ・セグメントに対応する新しいインデック
    スを前記インデックス・セットに追加し、該追加するイ
    ンデックスに関連付けられる前記ディレクトリ・インデ
    ックスに前記第2フラグ・ビットを設定する、請求項1
    0記載のシステム。
  12. 【請求項12】前記制御手段は、更に、前記削除したイ
    ンデックスが指し示す共通メモリから非圧縮データ・セ
    グメントを読出し、該読出した非圧縮データ・セグメン
    トを圧縮データ・セグメントとして前記共通メモリ領域
    に記憶するため圧縮する、請求項11記載のシステム。
  13. 【請求項13】メモリのページにメモリ・セグメントが
    含まれる、請求項1記載のシステム。
  14. 【請求項14】メイン・メモリを圧縮し、圧縮単位がメ
    モリ・セグメントであるコンピュータ・システムのキャ
    ッシュ・ミス操作でデータ・アクセス待ち時間を短縮す
    る方法であって、 圧縮データ・セグメントと非圧縮データ・セグメントを
    記憶するためメイン・メモリに共通メモリ領域を提供す
    るステップと、 前記メイン・メモリに形成し、キャッシュ・ミス操作の
    とき非圧縮データ・セグメントと圧縮データ・セグメン
    トの両方を見つけるエントリを持ち、CPUで生成され
    る実メモリ・アドレスが1またはそれ以上の物理メモリ
    位置に変換され、各エントリが前記メイン・メモリのデ
    ータ・セグメントを見つけ、且つ該データ・セグメント
    のステータスを示すインデックスを含む、ディレクトリ
    構造にアクセスするステップと、 キャッシュ・ミス操作でアクセスするデータ・セグメン
    トのステータス指標をチェックし、該ステータスに従っ
    て前記共通メモリ領域から圧縮データ・セグメントか非
    圧縮データ・セグメントのいずれかを処理し、データ・
    セグメントを圧縮しない形で前記共通メモリ領域に維持
    することでデータ検索待ち時間を短縮するステップと、 を含む、方法。
  15. 【請求項15】各インデックスが、前にアクセスされ現
    在は前記共通メモリ領域に記憶されている非圧縮データ
    ・セグメントに対応し、所定量の該インデックスを含む
    インデックス・セットを維持するステップを含む、請求
    項14記載の方法。
  16. 【請求項16】キャッシュ・ミス操作でアクセスするデ
    ータ・セグメントの前記ステータス指標チェック・ステ
    ップはセグメントが圧縮されていないかどうかを示す第
    1フラグ・ビットをチェックするステップを含む、請求
    項15記載の方法。
  17. 【請求項17】前記第1フラグ・ビットのステータス
    は、キャッシュ・ミス操作でアクセスする非圧縮データ
    ・セグメントを示すとき、前記インデックス・セットに
    非圧縮データ・セグメントが含まれるかどうかを示す第
    2フラグ・ビットをチェックするステップを含む、請求
    項16記載の方法。
  18. 【請求項18】キャッシュ・ミス・イベントで非圧縮デ
    ータ・セグメントを判定したとき、 現在のキャッシュ・ミス・イベントで前記非圧縮データ
    ・セグメントの書込みアクセスが必要かどうかを判定す
    るステップと、 書込みアクセスのキャッシュ・イベントを判定したと
    き、前記インデックス・セットのインデックスの現在量
    が所定限度に達しているかどうかを判定するステップ
    と、 を含む、請求項17記載の方法。
  19. 【請求項19】書込みアクセスのキャッシュ・ミス・イ
    ベントで前記インデックス・セットが所定限度に達して
    いないとき、前記インデックス・セットに新しいインデ
    ックスを追加し、該追加するインデックスは前記メイン
    ・メモリの非圧縮データ記憶域に書込む前記非圧縮デー
    タ・セグメントに対応し、該追加するインデックスに関
    連付けられるディレクトリ・インデックスに前記第2フ
    ラグ・ビットを設定する、請求項18記載の方法。
  20. 【請求項20】前記インデックス・セットが所定限度に
    達し、書込みアクセスのキャッシュ・ミス・イベントで
    前記データ・セグメントが非圧縮データ・セグメントと
    判定されたとき、 前記インデックス・セットから、前記共通メモリ領域の
    非圧縮データ・セグメントを指し示すインデックスを削
    除するのとほぼ同時に、該削除したインデックスに関連
    付けられた前記ディレクトリ・インデックスの前記第2
    フラグ・ビットをクリアするステップと、 前記削除したインデックスを、前記共通メモリの非圧縮
    データ記憶域に書込む前記非圧縮データ・セグメントの
    新しいインデックスと置き換え、該置き換えた新しいイ
    ンデックスに関連付けられる前記ディレクトリ・エント
    リの前記第2フラグ・ビットを設定するステップとを含
    む、請求項19記載の方法。
  21. 【請求項21】前記削除したインデックスが指し示す共
    通メモリから非圧縮データ・セグメントを読出し、前記
    共通メモリ領域に圧縮データ・セグメントとして記憶す
    るため該読出した非圧縮データ・セグメントを圧縮する
    ステップを含む、請求項20記載の方法。
  22. 【請求項22】キャッシュ・ミス・イベントで圧縮デー
    タ・セグメントを判定したとき、 前記インデックス・セットのインデックスの現在量が所
    定限度に達したかどうかを判定し、キャッシュ・ミス・
    イベントで前記インデックス・セットが所定限度に達し
    ていないことを判定したとき、 前記圧縮データ・セグメントを読出し、該読出した圧縮
    データ・セグメントを前記共通メモリ領域に非圧縮デー
    タ・セグメントとして記憶するため圧縮解除し、該非圧
    縮データ・セグメントに対応する新しいインデックスを
    前記インデックス・セットに追加し、該追加したインデ
    ックスに関連付けられる前記ディレクトリ・エントリの
    前記第2フラグ・ビットを設定するステップと、を含
    む、請求項17記載の方法。
  23. 【請求項23】前記インデックス・セットが所定限度に
    達したことを判定したとき、 非圧縮データ・セグメントを指し示すインデックスを前
    記インデックス・セットから削除するのとほぼ同時に、
    該削除したインデックスに関連付けられた前記ディレク
    トリ・エントリの前記第2フラグ・ビットをクリアする
    ステップと、 前記圧縮データ・セグメントを読出し、該読出した圧縮
    データ・セグメントを前記共通メモリ領域に非圧縮デー
    タ・セグメントとして記憶するため圧縮解除し、該圧縮
    解除したデータ・セグメントに対応する新しいインデッ
    クスを前記インデックス・セットに追加し、該追加した
    インデックスに関連付けられる前記ディレクトリ・エン
    トリの前記第2フラグ・ビットを設定するステップとを
    含む、請求項22記載の方法。
  24. 【請求項24】前記削除したインデックスが指し示す共
    通メモリから非圧縮データ・セグメントを読出し、該読
    出した非圧縮データ・セグメントを前記共通メモリ領域
    に圧縮データ・セグメントとして記憶するため圧縮する
    ステップを含む、請求項23記載の方法。
  25. 【請求項25】CPUを持ち、CPUで生成された実メ
    モリ・アドレスを圧縮メイン・メモリ構造の1またはそ
    れ以上の物理メモリ位置に変換する制御装置を含む圧縮
    メイン・メモリ・アーキテクチャを実装したコンピュー
    タ・システムにおいて、該メイン・メモリ構造に圧縮デ
    ータ・セグメントと非圧縮データ・セグメントの両方を
    記憶し検索するキャッシュ管理システムであって、 前記メイン・メモリに含まれ、ディレクトリ・エントリ
    をアクセスするため前記制御装置によりアドレス指定さ
    れ、キャッシュ・ミス操作処理のため各ディレクトリ・
    エントリにより前記メイン・メモリから非圧縮データ・
    セグメントと圧縮データ・セグメントを検索でき、各デ
    ィレクトリ・エントリがデータ・セグメントのステータ
    スを示す、ディレクトリ構造と、 前記メイン・メモリの最近アクセスされた非圧縮データ
    ・セグメントに対応するディレクトリ・インデックスの
    リストを維持するFIFO構造と、 を含み、前記制御装置は、キャッシュ・ミス操作のため
    アクセスするデータ・セグメントのステータス指標をチ
    ェックし、該ステータスに従って前記共通メモリ領域か
    ら圧縮データ・セグメントまたは非圧縮データ・セグメ
    ントのいずれかを処理し、非圧縮データ・セグメントを
    処理するときに対応するディレクトリ・エントリの前記
    FIFOリストと該ステータス指標を継続的に更新す
    る、 キャッシュ管理システム。
JP2000135299A 1999-05-19 2000-05-09 圧縮メイン・メモリの仮想非圧縮キャッシュ Expired - Fee Related JP3399520B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/315069 1999-05-19
US09/315,069 US6349372B1 (en) 1999-05-19 1999-05-19 Virtual uncompressed cache for compressed main memory

Publications (2)

Publication Number Publication Date
JP2000347935A true JP2000347935A (ja) 2000-12-15
JP3399520B2 JP3399520B2 (ja) 2003-04-21

Family

ID=23222753

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000135299A Expired - Fee Related JP3399520B2 (ja) 1999-05-19 2000-05-09 圧縮メイン・メモリの仮想非圧縮キャッシュ

Country Status (4)

Country Link
US (1) US6349372B1 (ja)
JP (1) JP3399520B2 (ja)
KR (1) KR100337216B1 (ja)
TW (1) TW513634B (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100488851B1 (ko) * 2001-02-13 2005-05-11 인터내셔널 비지네스 머신즈 코포레이션 실 메모리 사용 관리 장치 및 방법
US7039769B2 (en) 2002-05-30 2006-05-02 International Business Machines Corporation Direct addressed shared compressed memory system
JP2008503922A (ja) * 2004-06-16 2008-02-07 エヌイーシー ラボラトリーズ アメリカ インク 組込みシステムのためのメモリ圧縮アーキテクチャ
JP2010092499A (ja) * 2004-09-28 2010-04-22 Sony Computer Entertainment Inc データ処理方法および装置、処理システム、コンピュータ処理システム、コンピュータのネットワークおよび記憶媒体
JP2010140480A (ja) * 2008-12-12 2010-06-24 Nvidia Corp Cpuトラフィックを特殊とマークすることによるデッドロックの回避

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2387653C (en) * 1999-08-13 2006-11-14 Fujitsu Limited File processing method, data processing device and storage medium
US6862662B1 (en) * 2000-03-03 2005-03-01 Micron Technology, Inc. High density storage scheme for semiconductor memory
GB2366643B (en) 2000-05-25 2002-05-01 Siroyan Ltd Methods of compressing instructions for processors
US6636221B1 (en) * 2000-08-02 2003-10-21 Ati International, Srl Graphics processing system with enhanced bus bandwidth utilization and method therefore
US6636223B1 (en) * 2000-08-02 2003-10-21 Ati International. Srl Graphics processing system with logic enhanced memory and method therefore
DE60022186T2 (de) * 2000-08-17 2006-06-08 Texas Instruments Inc., Dallas Unterhaltung einer entfernten Warteschlange unter Benutzung von zwei Zählern in der Verschiebesteuerung mit Hubs und Ports
US6779088B1 (en) * 2000-10-24 2004-08-17 International Business Machines Corporation Virtual uncompressed cache size control in compressed memory systems
US6581131B2 (en) * 2001-01-09 2003-06-17 Hewlett-Packard Development Company, L.P. Method and apparatus for efficient cache mapping of compressed VLIW instructions
US20020138654A1 (en) * 2001-03-21 2002-09-26 Zhigang Liu Apparatus, and associated method, for facilitating deletion of dictionary content pursuant to communication of signaling protocol messages
US7484007B2 (en) * 2002-02-01 2009-01-27 Codekko Inc. System and method for partial data compression and data transfer
US6795897B2 (en) 2002-05-15 2004-09-21 International Business Machines Corporation Selective memory controller access path for directory caching
US6956507B2 (en) 2002-12-12 2005-10-18 International Business Machines Corporation Method and apparatus for morphing memory compressed machines
JP4261299B2 (ja) * 2003-09-19 2009-04-30 株式会社エヌ・ティ・ティ・ドコモ データ圧縮装置、データ復元装置およびデータ管理装置
US7457940B2 (en) * 2004-11-16 2008-11-25 International Business Machines Corporation System and method for managing data
US7840774B2 (en) * 2005-09-09 2010-11-23 International Business Machines Corporation Compressibility checking avoidance
JP2007272336A (ja) * 2006-03-30 2007-10-18 Toshiba Corp 命令処理装置及び命令処理方法
KR101352512B1 (ko) 2007-01-15 2014-01-17 삼성전자주식회사 효율적인 메모리 사용을 위한 스택 관리 장치 및 방법
TWI417722B (zh) 2007-01-26 2013-12-01 Hicamp Systems Inc 階層式不可改變的內容可定址的記憶體處理器
US9601199B2 (en) 2007-01-26 2017-03-21 Intel Corporation Iterator register for structured memory
US7895242B2 (en) * 2007-10-31 2011-02-22 Microsoft Corporation Compressed storage management
US8918588B2 (en) * 2009-04-07 2014-12-23 International Business Machines Corporation Maintaining a cache of blocks from a plurality of data streams
US9330105B1 (en) * 2010-05-07 2016-05-03 Emc Corporation Systems, methods, and computer readable media for lazy compression of data incoming to a data storage entity
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US20130275699A1 (en) * 2012-03-23 2013-10-17 Hicamp Systems, Inc. Special memory access path with segment-offset addressing
US9274951B2 (en) * 2013-05-31 2016-03-01 Altera Corporation Cache memory controller for accelerated data transfer
US10102148B2 (en) 2013-06-13 2018-10-16 Microsoft Technology Licensing, Llc Page-based compressed storage management
US9612833B2 (en) * 2014-02-28 2017-04-04 Intel Corporation Handling compressed data over distributed cache fabric
US10558571B2 (en) * 2014-03-20 2020-02-11 Sybase, Inc. Second level database file cache for row instantiation
US9684625B2 (en) 2014-03-21 2017-06-20 Microsoft Technology Licensing, Llc Asynchronously prefetching sharable memory pages
US9632924B2 (en) 2015-03-02 2017-04-25 Microsoft Technology Licensing, Llc Using memory compression to reduce memory commit charge
US10037270B2 (en) 2015-04-14 2018-07-31 Microsoft Technology Licensing, Llc Reducing memory commit charge when compressing memory
US10387305B2 (en) * 2016-12-23 2019-08-20 Intel Corporation Techniques for compression memory coloring
US10404836B2 (en) * 2016-12-26 2019-09-03 Intel Corporation Managing state data in a compression accelerator
US10049721B1 (en) 2017-03-27 2018-08-14 Micron Technology, Inc. Apparatuses and methods for in-memory operations
KR20190143073A (ko) * 2018-06-20 2019-12-30 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6208273B1 (en) * 1999-01-29 2001-03-27 Interactive Silicon, Inc. System and method for performing scalable embedded parallel data compression

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100488851B1 (ko) * 2001-02-13 2005-05-11 인터내셔널 비지네스 머신즈 코포레이션 실 메모리 사용 관리 장치 및 방법
US7039769B2 (en) 2002-05-30 2006-05-02 International Business Machines Corporation Direct addressed shared compressed memory system
JP2008503922A (ja) * 2004-06-16 2008-02-07 エヌイーシー ラボラトリーズ アメリカ インク 組込みシステムのためのメモリ圧縮アーキテクチャ
JP2010092499A (ja) * 2004-09-28 2010-04-22 Sony Computer Entertainment Inc データ処理方法および装置、処理システム、コンピュータ処理システム、コンピュータのネットワークおよび記憶媒体
JP2010140480A (ja) * 2008-12-12 2010-06-24 Nvidia Corp Cpuトラフィックを特殊とマークすることによるデッドロックの回避
US8392667B2 (en) 2008-12-12 2013-03-05 Nvidia Corporation Deadlock avoidance by marking CPU traffic as special

Also Published As

Publication number Publication date
JP3399520B2 (ja) 2003-04-21
KR20010007058A (ko) 2001-01-26
US6349372B1 (en) 2002-02-19
TW513634B (en) 2002-12-11
KR100337216B1 (ko) 2002-05-17

Similar Documents

Publication Publication Date Title
JP3399520B2 (ja) 圧縮メイン・メモリの仮想非圧縮キャッシュ
US6779088B1 (en) Virtual uncompressed cache size control in compressed memory systems
JP4008826B2 (ja) オンチップキャッシュのデータ圧縮により有効キャッシュサイズを増大させるキャッシュ圧縮エンジンのための装置
US5761536A (en) System and method for reducing memory fragmentation by assigning remainders to share memory blocks on a best fit basis
US8122216B2 (en) Systems and methods for masking latency of memory reorganization work in a compressed memory system
US5875454A (en) Compressed data cache storage system
US6795897B2 (en) Selective memory controller access path for directory caching
US10067881B2 (en) Compression and caching for logical-to-physical storage address mapping tables
US7962700B2 (en) Systems and methods for reducing latency for accessing compressed memory using stratified compressed memory architectures and organization
US6735673B2 (en) Apparatus and methods for cache line compression
JP2831602B2 (ja) 圧縮データ管理装置及び圧縮データ管理方法
CN108459826B (zh) 一种处理io请求的方法及装置
US6449689B1 (en) System and method for efficiently storing compressed data on a hard disk drive
US6606682B1 (en) Cluster-based cache memory allocation
CN108268219B (zh) 一种处理io请求的方法及装置
US7451290B2 (en) Method and mechanism for on-line data compression and in-place updates
US6968424B1 (en) Method and system for transparent compressed memory paging in a computer system
US20030145172A1 (en) Method and system for updating data in a compressed read cache
WO2009033419A1 (fr) Procédé de traitement de mise en antémémoire de données, système et dispositif de mise en antémémoire de données
KR102437775B1 (ko) 효율적인 맵핑을 위한 페이지 캐시 장치 및 방법
US10521122B2 (en) Storage apparatus and method of controlling same
CN111832065A (zh) 使用电路实现的软件和用于密钥-值存储的方法
EP4123463A1 (en) In-memory database (imdb) acceleration through near data processing
US20210311877A1 (en) Key-value store architecture for key-value devices
US6847315B2 (en) Nonuniform compression span

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees