JP2007519100A - コンピューターシステム、方法、装置 - Google Patents
コンピューターシステム、方法、装置 Download PDFInfo
- Publication number
- JP2007519100A JP2007519100A JP2006547349A JP2006547349A JP2007519100A JP 2007519100 A JP2007519100 A JP 2007519100A JP 2006547349 A JP2006547349 A JP 2006547349A JP 2006547349 A JP2006547349 A JP 2006547349A JP 2007519100 A JP2007519100 A JP 2007519100A
- Authority
- JP
- Japan
- Prior art keywords
- line
- cache
- data
- computer system
- word
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
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)
Abstract
ある実施例によると、コンピューターシステムが開示される。コンピューターシステムは、中央演算処理装置(CPU)、CPUに結合されたキャッシュメモリー及びキャッシュメモリーに結合されたキャッシュ制御部を有する。キャッシュメモリーは、追加データを格納する複数の圧縮可能なキャッシュラインを有する。キャッシュ制御部は、キャッシュラインへの各アクセスの後、キャッシュラインを圧縮キャッシュラインに圧縮する前に、キャッシュラインを順序付けする。
Description
本発明は、コンピューターシステムに関し、より詳細には、本発明は中央演算処理装置(CPU)キャッシュに関する。
現在、種々の方法が、ランダムアクセスメモリー(RAM)のようなコンピューターシステムの主記憶装置の内容を圧縮するために利用されている。
これらの方法は、同一の性能を提供するために必要な物理記憶空間の量を減少させる。例えば、メモリーが2:1の比を用いて圧縮される場合、メモリーは2倍のデータ量を同一のコストで、又は同一のデータ量を半分のコストで格納し得る。
これらの方法は、同一の性能を提供するために必要な物理記憶空間の量を減少させる。例えば、メモリーが2:1の比を用いて圧縮される場合、メモリーは2倍のデータ量を同一のコストで、又は同一のデータ量を半分のコストで格納し得る。
このような方法の1つに、ニューヨーク州アーモンク市のIBM(インターナショナル・ビジネス・マシンズ)社により開発されたメモリー拡張技術(MXT)がある。MXTは、インストールされている主記憶装置の有効容量を2倍にするメモリーシステムアーキテクチャーを用い、システムメモリーのコストを解決する。論理集中型の圧縮器及び伸長器ハードウェアエンジンは、データが共有キャッシュと主記憶装置の間を移動する時に、圧縮と伸長を同時に行う。圧縮器は、データブロックをアルゴリズムの許容範囲で小さく符号化する。
しかしながら、現在、キャッシュに格納されているデータを圧縮する方法はない。キャッシュデータを圧縮する能力を有することは、結果として主記憶の圧縮と同様の効果を得るだろう(例えば、同一の性能を提供するために必要なキャッシュ空間の量を削減する)。
本発明は、以下の詳細な説明及び本発明の種々の実施例の図からより完全に理解されるだろう。図は、しかしながら、本発明を特定の実施例に限定するものと見なされるべきではなく、単に説明及び理解のためである。
キャッシュのデータを圧縮する方法が開示される。以下の説明では、多くの詳細事項が説明される。しかしながら、当業者は、本発明がそのような特定の詳細にかかわらず実施されて良いことを理解するだろう。他の例では、既知の構造及び装置は、本発明の不明瞭さを回避するため、詳細ではなくブロック図の形式で示される。
本願明細書における「ある実施例」又は「実施例」という表現は、実施例と関連付けられて説明される特定の機能、構造、又は特徴が、本発明の少なくとも1つの実施例に包含されるということを意味する。本願明細書における「ある実施例では」という表現は、必ずしも全て同一の実施例を参照するものではない。
図1は、コンピューターシステム100の実施例を示すブロック図である。コンピューターシステム100は、バス105と結合された中央演算処理装置(CPU)102を有する。ある実施例では、CPU102は、カリフォルニア州サンタクララのインテル社から入手可能なPentium(登録商標) II系プロセッサー、Pentium(登録商標) IIIプロセッサー及びPentium(登録商標) IVを含むPentium(登録商標)系プロセッサーの1つである。代案として、他のCPUが利用されて良い。
チップセット107も、バス105と結合される。チップセット107は、メモリーコントローラハブ(MCH)110を有する。MCH110は、主記憶装置115と結合されたメモリー制御部112を有して良い。主記憶装置115は、データ及び命令シーケンス及びCPU102又はシステム100に含まれる他の装置により実行され得るデータ信号により表されるコードを格納する。
ある実施例では、主記憶装置115は、ダイナミックランダムアクセスメモリー(DRAM)を有するが、主記憶装置115は、他のメモリー種類を用いて実施されても良い。複数のCPU及び/又は複数のシステムメモリーのような追加装置はまた、バス105と結合されて良い。
ある実施例では、MCH110は、入出力制御ハブ(ICH)140とハブインターフェースを経由して結合される。ICH140は、コンピューターシステム110内の入出力(I/O)装置にインターフェースを提供する。例えば、ICH140は、オレゴン州ポートランドのPCI−SIG(PCI Special Interest Group)により開発されたPCIバスv2.1と結合されて良い。
圧縮キャッシュ
ある実施例によると、キャッシュメモリー103は、プロセッサー102内に存在し、メモリー115にも格納されるデータ信号を格納する。キャッシュ103は、アクセスの局所性を利用してプロセッサー103によるメモリーアクセスを高速化する。別の実施例では、キャッシュ103は、プロセッサー103の外部に存在する。
ある実施例によると、キャッシュメモリー103は、プロセッサー102内に存在し、メモリー115にも格納されるデータ信号を格納する。キャッシュ103は、アクセスの局所性を利用してプロセッサー103によるメモリーアクセスを高速化する。別の実施例では、キャッシュ103は、プロセッサー103の外部に存在する。
更に別の実施例によると、キャッシュ103は、圧縮キャッシュラインを有し、同一の大きさの空間内で追加データの格納を可能にする。図2は、キャッシュ103の物理構造の実施例を示す。ある実施例では、キャッシュ103は、512セット、4ウェイのセットアソシアティブキャッシュである。しかしながら、この分野の通常の知識を有する者は、他の大きさを有するキャッシュが本発明の範囲から逸脱することなく実施され得ることを理解するだろう。
タグは、セットの各ラインに関連付けられる。更に、圧縮ビットは、各タグに関連付けられる。圧縮ビットは、対応するキャッシュラインが圧縮データを有するか否かを示す。圧縮ビットが設定されている場合、キャッシュラインの物理メモリーは、2つの圧縮コンパニオンラインを有する。コンパニオンラインは、コンパニオンビットだけが異なるアドレスを有する2つのライン(例えば、行配列に配置された2つの連続するメモリーライン)である。
ある実施例では、コンパニオンビットは、コンパニオンラインが隣接するラインであるように選択される。しかしながら、如何なるビットもコンパニオンビットに選択され得る。他の実施例では、圧縮表示を、MESI状態ビットのような、キャッシュラインの状態を符号化する他のビットと共に符号化し、この空間のオーバーヘッドを全て除去することが可能であって良い。
圧縮ビットが設定されていない場合、キャッシュラインの物理メモリーは、1つの非圧縮ラインを有する。図2の塗り潰された圧縮ビットは、圧縮キャッシュラインを示す。図3は、キャッシュ103の論理構造の実施例を示す。図3に示されるように、キャッシュラインは、2:1の圧縮方法に従い圧縮されている。例えば、セット0の2番目のラインは圧縮され、従って1つというより2つのキャッシュラインを格納する。
ある実施例では、各キャッシュラインは、圧縮されていない場合、64バイトのデータを有する。従って、各キャッシュラインは、圧縮されている場合、128バイトのデータを有する。以上に説明された圧縮方法の効果は、各キャッシュタグが可変長の論理キャッシュラインの位置を示すことである。結果として、キャッシュ103は、物理的大きさを増加させることなく、2倍のデータ量を格納し得る。
再び図1を参照すると、キャッシュ制御部104は、キャッシュ103と結合され、キャッシュ103の動作を管理する。特に、キャッシュ制御部104は、キャッシュ103のルックアップ動作を実行する。ある実施例によると、アドレスを物理セット及びウェイに位置付けるために利用されるハッシュ関数は、一般のキャッシュ制御部で利用されるものから変更される。ある実施例では、ハッシュ関数は、コンパニオンラインが同一のセットに位置付けられるよう構成される。従って、コンパニオンラインは、1つのアドレスタグを利用する単一のライン(例えばウェイ)に一緒に圧縮されて良い。
図4Aは、非圧縮キャッシュで利用されるメモリーアドレスの例を示す。従来のキャッシュでは、アドレスは、タグ、セット及びオフセット部に分割される。セット部は、ライン内のセットの1つを選択するために利用される。同様に、オフセット部は、ライン内のバイトを選択するために利用されるアドレスの下位ビットである。
図4Bは、圧縮キャッシュ内の検索のために利用されるメモリーアドレスの例を示す。図4Bは、コンパニオンラインを同一のセットに位置付けるために利用されるコンパニオンビットの実施例を示す。コンパニオンビットは、ラインが圧縮されていない場合に利用される。従って、ラインが圧縮されていない場合、コンパニオンビットは2つの圧縮コンパニオンラインのどちらが利用されるべきかを示す。
ある実施例では、セット選択に利用されるアドレスビット部は、コンパニオンビットがセット選択とバイトオフセットビットの間に位置するよう、1つ左にシフトされる。このように、コンパニオンビットとセット選択ビットが重なり合わないので、コンパニオンラインは、同一のキャッシュセットに位置する。コンパニオンビットは、もはやセット選択ビットの一部ではなく、タグの一部になるが、実際のタグの大きさは増加しない。従来の非圧縮キャッシュでは、コンパニオンビットは、アドレスの一部であり、セット選択で利用され、アドレスが奇数又は偶数キャッシュセットにハッシュされるかを決定する。
図5は、圧縮キャッシュのタグアレイエントリーの実施例を示す。タグアレイエントリーは、コンパニオンビット(例えばアドレスタグビットの一部として)及び圧縮ビットを有する。圧縮ビットは、圧縮キャッシュ103のタグを従来の非圧縮キャッシュのタグより1ビット長くする。圧縮ビットは、ラインが圧縮されているか否かを示す。
特に、圧縮ビットは、コンパニオンビットの処理方法を特定する。圧縮ビットがラインは圧縮されていると示す場合、ラインは圧縮された対なので、コンパニオンビットは、オフセットの一部として扱われる。圧縮ビットが圧縮を示さない場合、コンパニオンビットは、タグアレイの一部と見なされ、オフセットの一部として無視される。
図6は、キャッシュ制御部104の実施例を示すブロック図である。キャッシュ制御部104は、セット及びウェイ選択ロジック610、バイト選択ロジック620及び圧縮ロジック630を有する。セット及びウェイ選択ロジック610は、キャッシュ103内のキャッシュラインを選択するために利用される。図7は、圧縮キャッシュのセット及びウェイ選択ロジック610の実施例を示す。
図7を参照すると、セット及びウェイ選択ロジック610は、タグアレイからの入力を受信し受信したアドレスに基づきキャッシュラインを選択するタグ比較ロジック710を有する。タグ比較ロジック710は、キャッシュラインが圧縮データを有するか否かを考慮する。キャッシュラインは可変データサイズを有するので、タグ比較ロジック710も特定のラインが圧縮されているか否かに依存して長さが変わる。従って、タグ整合は、圧縮ビットを考慮する。
図8は、非排他的論理和(XNOR)ゲート1からn、ORゲート及びANDゲートを有するタグ比較ロジック710の実施例を示す。XNORゲート及びANDゲートは、従来の非圧縮キャッシュに含まれ、対応するものが見付かるまで、アドレスをタグアレイ内のタグエントリーと比較するために利用される。ORゲートは、ラインの圧縮状態に基づきコンパニオンビットを選択するために利用される。
アドレスのコンパニオンビットは、圧縮ビットが設定されているか否かに基づき、選択的に無視される。以上に説明されたように、圧縮ビットが設定されている場合、キャッシュラインは両方のコンパニオンを有するので、アドレスのコンパニオンビットは、タグ整合の間無視される。圧縮ビットが設定されていない場合、アドレスのコンパニオンビットは、タグのコンパニオンビットと比較される。
等価演算子の「XNORの結果」の構成は、従って、ORゲートを利用し選択的にコンパニオンビットを無視する。ある実施例では、タグのコンパニオンビットは、圧縮ビットが設定されている(例えば、「don’t care」である)場合、タグのコンパニオンビットは他の用途に利用され得る。例えば、ラインが圧縮されている場合、このビットは圧縮形式ビットとして用いられ、2つの異なる圧縮アルゴリズムの間の選択に利用されて良い。別の例では、コンパニオンビットは、圧縮ライン内のコンパニオンラインの順序を符号化するために利用され得る。
他の実施例では、各キャッシュラインは、セクターが共に圧縮され得る場合のみ、同一の物理キャッシュラインに格納された2つのセクターに分けられる。タグエントリーでは、コンパニオンビット及び圧縮ビットは、図9に示されるようにセクター存在表示になる。この実施例では、コンパニオンビットはセクター表示(例えば上位又は下位)であり、従ってセクターIDとして改称されている。
従って、「01」は下位セクター(圧縮されていない)を示し、「10」は上位セクター(圧縮されていない)を示し、及び「11」は両方のセクター(2:1圧縮)を示す。また、この構成では、物理キャッシュラインサイズは、論理セクターサイズと等しい。非圧縮の場合、ラインの各セクターは、同一のセット内の異なる物理ライン(例えば、同一のセットの異なるウェイ)に格納される。
少なくとも2:1で圧縮可能な場合、各ラインの2つのセクターは、(例えば、1つのウェイ内の)単一の物理キャッシュラインに格納される。重要なことに、これは、所与の論理ラインの異なる論理セクターが非圧縮時に同時に異なるウェイに格納され得る従来のセクター分けされたキャッシュ構成と異なる。
ある実施例では、未使用符号(「00」)は、MESI状態を符号化する他のビットと結合された場合、タグビットコストを低下する可能性のある無効なエントリーを示すために利用される。これは単に補助的な符号化なので、セクター存在ビットは、タグ整合を検出する若干異なるロジックを必要とする。図10は、セクター存在ビットを利用するタグ比較ロジック710の別の実施例を示す。
再び図6を参照すると、バイト選択ロジック620は、ライン内のアドレス指定されたデータを選択する。ある実施例によると、バイト選択ロジック620は、圧縮ビットに依存する。図11は、バイト選択ロジック620の実施例を示す。バイト選択ロジック620は、選択されたキャッシュラインを必要な場合に伸長する伸長器1110を有する。入力マルチプレクサは、伸長されたキャッシュラインと非圧縮キャッシュラインの間で、圧縮ビットに基づき選択する。
ある実施例では、オフセットの範囲は、ラインが圧縮されているか否かに依存する。ラインが圧縮されている場合、アドレスのコンパニオンビットは、オフセットの高位のビットとして利用される。ラインが圧縮されていない場合、伸長器1110はバイパスされ、アドレスのコンパニオンビットはオフセットに利用されない。選択されたラインは、圧縮データを格納できるよう、物理ラインサイズの2倍のサイズを有するバッファに有せられる。
代案の実施例は、コンパニオンビットを利用し、伸長されたワードの半分のどちらを、物理ラインサイズと同じ長さのバッファに格納するか選択するよう選んで良い。しかしながら、ライン全体のバッファリングは、キャッシュへのライト後にデータを変更及び再圧縮する場合に便利である。
再び図6を参照すると、圧縮ロジック630は、キャッシュラインを圧縮するために利用される。ある実施例では、キャッシュラインは、Lempel−Ziv圧縮アルゴリズムに従い圧縮されている。しかしながら、他の実施例では、キャッシュラインを圧縮するために他の圧縮アルゴリズム(例えば、WK、X―Match、符号ビット圧縮、ラン長圧縮、等)が利用されて良い。
圧縮ロジック630はまた、何時ラインが圧縮されるべきかを決定するために利用されて良い。 ある実施例によると、機を見て圧縮が行われ、何時ラインが圧縮されるべきかが決定されて良い。機を見て圧縮する場合、キャッシュミスの発生時、要求されるキャッシュラインは、メモリー115からフェッチされ、キャッシュ103は、コンパニオンラインがキャッシュに存在する場合、2つのコンパニオンを1つのラインに圧縮しようとする。コンパニオンラインがキャッシュ103に存在しない場合、又は2つのコンパニオンが2:1で圧縮可能でない場合、キャッシュ103は標準の置換アルゴリズムを利用しフェッチされたラインのために空間を作る。
その他の場合、キャッシュ103は存在するコンパニオンのキャッシュラインを再利用し、新たに圧縮されたコンパニオンの対を格納するので、置換を回避する。留意すべきは、タグ整合演算子は、第2のキャッシュアクセスを行うことなくコンパニオンラインが存在するか否かを検査するよう、簡単に変更されることである。例えば、コンパニオンビットを除くアドレスタグビットの全てが整合する場合、コンパニオンラインは存在する。
別の実施例では、プリフェッチ方式が利用され、ラインが圧縮されるべきかどうかを判定する。プリフェッチ方式では、機を見た方法はプリフェッチを追加することにより高機能化される。要求−フェッチされたラインのコンパニオンが存在しない場合、キャッシュはコンパニオンをプリフェッチし、2つのコンパニオンを1つのラインに圧縮しようとする。
2つのコンパニオンラインが2:1に圧縮可能でない場合、キャッシュ103は、プリフェッチされたライン(従ってバス帯域を消費する)の廃棄又は非圧縮プリフェッチラインのキャッシュへの格納(従ってセット内で置換されるべき2つのラインの合計になる可能性がある)の何れかの選択を有する。ある実施例では、ハードウェアは、どれだけの空間的局所性及びプログラムの待ち時間の許容範囲があるかに基づき、これら方法の間を適切に切り替え得る。
別の実施例では、犠牲者圧縮方式が利用され、ラインが圧縮されるべきかどうかを判定する。犠牲者圧縮の場合、強制退去させられようとしている(例えば、犠牲者)ラインを圧縮しようとする。犠牲者がまだ圧縮されてなくそのコンパニオンが存在する場合、キャッシュ103は、犠牲者をコンパニオンと一緒に圧縮しようとすることにより、犠牲者にキャッシュ内に残る機会を与える。犠牲者が既に圧縮されており、そのコンパニオンが存在しないか、又は犠牲者とそのコンパニオンが2:1で圧縮可能でない場合、犠牲者は強制退去させられる。その他の場合、キャッシュ103は存在するコンパニオンのキャッシュラインを再利用し、圧縮されたコンパニオンの対を格納するので、強制退去を回避する。
データが書き込まれる時、ラインの圧縮可能性は変化して良い。コンパニオンの圧縮された対へのライトは、その対をもはや圧縮可能でなくさせる。圧縮キャッシュラインが非圧縮になる場合、3つの方法が採られて良い。第1の方法は、別のラインを単に強制退去させ、展開の結果得られた余分のラインのために空間を作る方法である。これは、セット内の全てのラインが圧縮されている場合、2つのコンパニオンラインを強制退去させる。
第2の方法は、書き込まれたラインのコンパニオンを強制退去させる方法である。第3の方法は、書き込まれたラインを強制退去させる方法である。これらの方法のどれを利用するかという選択は、圧縮キャッシュ103とプロセッサーに最も近い次のキャッシュとの間の相互作用に依存する(例えば、L3が圧縮キャッシュである場合、L3及びL2の相互作用に依存する)。
圧縮キャッシュがL3キャッシュを包含し及びL2がライトバックキャッシュであるとすると、始めの2つの方法は、L2キャッシュ内の強制退去させられたラインの無効化を含み、複数段の包含を維持する。これは、L2又はL1内の最近アクセスされたキャッシュラインを強制退去させる危険を有する。第3の方法は、L2無効化を必要とせず、書き込まれているラインはL2から強制退去させられているので、最近アクセスされたキャッシュラインをL2から強制退去させる危険を有さない。
以上に説明された機構は、同一のセットに位置付けられコンパニオンビットのみが異なる如何なる2つのキャッシュラインも、1つのキャッシュラインに一緒に圧縮することが可能である。ある実施例では、この機構はセット位置付け機能を変更し、隣接メモリーラインが一緒に圧縮されるようコンパニオンビットを選択し、空間的局所性を利用する。
圧縮のためのキャッシュラインの再順序付け
以上に説明されたキャッシュ圧縮の機構は、キャッシュの空間的時間的資源の要求を低減するために有効な技術である。しかしながら、シリアルアルゴリズムが利用されキャッシュラインデータを圧縮する場合はいつでも、ラインはアクセスの前に伸長されなければならないので、キャッシュラインをアクセスする時の待ち時間の増加がしばしば起こるだろう。例えば、Lempel−Ziv及びWilson−Kaplanのような圧縮アルゴリズムは、圧縮データへのランダムアクセスを妨げる。従って、圧縮キャッシュライン内のデータは、シリアルにのみアクセスされ得る。
以上に説明されたキャッシュ圧縮の機構は、キャッシュの空間的時間的資源の要求を低減するために有効な技術である。しかしながら、シリアルアルゴリズムが利用されキャッシュラインデータを圧縮する場合はいつでも、ラインはアクセスの前に伸長されなければならないので、キャッシュラインをアクセスする時の待ち時間の増加がしばしば起こるだろう。例えば、Lempel−Ziv及びWilson−Kaplanのような圧縮アルゴリズムは、圧縮データへのランダムアクセスを妨げる。従って、圧縮キャッシュライン内のデータは、シリアルにのみアクセスされ得る。
図12は、キャッシュラインにおけるリードオフセットの実施例を示す。キャッシュラインへの第1のリードアクセスでは、キャッシュライン内のダブルワード(32ビットワード)3がアクセスされる。しかしながら、3番目のダブルワードをアクセスする前に、ダブルワード0−3は伸長されなければならない。続くリードアクセスでは、ダブルワード4がアクセスされる。この例では、ダブルワード4をアクセスする前に、ダブルワード0−4は伸長されなければならない。方法がクロック周期毎に1つのダブルワードを伸長する場合、4番目のダブルワードをアクセスする時間は4周期を要する。ダブルワードをアクセスする度に4以上のダブルワードを伸長しなければならないことは、非効率であり処理時間の浪費になる。
ある実施例によると、キャッシュラインは、各アクセスの後、圧縮の前に、アクセス待ち時間を減少させるために再順序付けされる。例えば、再順序付け方法は、どのワードがラインへの次のアクセスでアクセスされるか(例えば、重要なワード)を予測し、この予測されたワードをブロックの先頭に置き、アクセス待ち時間を最小限に抑える。
本願明細書で説明された実施例は、キャッシュ圧縮システムに重点を置くが、この分野の通常の知識を有する者は、説明された機構はバストランザクション又はメモリーブロック内のワードの再順序付けにも拡大して適用されることを理解するだろう。このようなシステムの例は、ブロック順序に複数のバストランザクションを要求する大きいブロック転送方式、及びデータが重要なチャンクに最初に送信されないメモリーシステムのシリアル圧縮方式を包含する。このようなシステムでは、重要なワードのアクセスにおけるアクセス時間はまた、データブロック内の重要なワードの位置にほぼ比例する。
この分野の通常の知識を有する者は、説明された機構はまた、他のデータ変換システムに適用されて良いことを理解するだろう。このようなデータ変換システムのある実施例は、疎記憶域を密記憶域、レジスター又はキャッシュラインに圧縮/解凍する収集分散動作を有する。このような実施例では、大きなデータブロックは、実際にリードされるワードをほんのわずかしか有さなくて良い。最適化は、キャッシュを汚さず又は帯域を消費しないよう、この大きなデータブロックから少数の重要ワードのリード(及びキャッシュライン内の圧縮)のみ行う、「収集」動作を可能にする。いくつかの特定のメモリーシステム(例えば、ネットワークに適用される記憶装置のホスト−バスアダプター)は、この変換を利用する。データブロックのメモリーへの書き込み処理及び大きなデータブロックのデータの解凍は、「分散」動作と称される。
ある実施例では、再順序付け方式は、各キャッシュライン内の次にアクセスされるワードは予測可能であるという前提に基づく。2つの運用規則がある。第1に、シーケンシャルアクセスでは、次にアクセスされるワードは、最後にアクセスされたワードに直ぐ隣接する次のワードである。第2に、非シーケンシャルアクセスでは、特定のプログラムレベルのアクセスされたデータ構造インスタンスは、キャッシュライン内に固定のオフセットを有して残る。結果として、このデータ構造インスタンスへのアクセスは、キャッシュライン内の同一のアクセスオフセットで現れる。
再順序付け方式は、種々の順列を可能にする。ある実施例では、ダブルワード又はオフセットへのキャッシュラインの回転が利用される。特に、キャッシュラインはリードアクセス時にラインへ回転され、アクセスされたワード又はチャンクはラインの先頭へ移動させられる。図13は、回転方式を利用するキャッシュラインの実施例を示す。ダブルワード3のリードでは、ラインは、最初のダブルワードとしてダブルワード3へ回転する。続くダブルワード1のリードでは、ラインは、ダブルワード1が最初のダブルワードとなるよう回転する。
図14は、回転方式を利用するキャッシュラインの実施例を示す。この実施例では、プロセッサーはダブルワード3を、次にライン内でダブルワード4をリードする。回転により、ダブルワード4への第2のアクセスは、ラインのオフセット1を有する。結果として、回転方式により3周期の節約が実現される。
ある実施例では、回転方式の順列は、ラインにオフセットとして記録される。このように、64バイトのライン内のライン当たり4ビットのダブルワードに関する回転は、オフセットに組み込まれる。他の実施例では、キャッシュラインはチャンクにより回転されて良い(例えば2ダブルワード)。このように、ライン当たり3ビットのチャンクに関する回転は、オフセットに組み込まれる。圧縮キャッシュでは、圧縮ラインは、圧縮ライン内のビットを用いて符号化される順列方式を用い回転される。
ある実施例では、回転はラインが圧縮された時に生じる(例えば、メモリーから届く、また圧縮がメモリー転送と重複して良い、重要なチャンクが最初にある順序でラインが圧縮される)。この方式の利点は、順列データを格納する如何なる追加テーブルも要求されないことである。
代案として、順列を記録するタグアレイと同時に、順列インデックスの配列を有する方式がある。この方式の利点は、再順序付けの圧縮を必要としない点である。バス又は相互接続トランザクションでは、エージェントの送信は、通信ブロック内の順序を特定する。他の実施例では、回転はキャッシュへのトランザクションのライト又は最初のリードで生じる。
別の再順序付け順列は、最後にアクセスされたダブルワードを先頭へ移動し、同時にラインの残りのライン順序を維持する。更に別の実施例では、キャッシュラインは、最後にアクセスされたダブルワードがライン内の2番目のダブルワードの位置になるよう回転される。更に別の実施例では、ラインの圧縮された対を有し、最後にアクセスされたダブルワードが、圧縮された対の先頭へ移動させられる。他の実施例では、キャッシュラインは、最近に利用されたダブルワードの順序に基づき順列を特徴付けて良い。
また、本発明の多くの代案及び変更は、以上の説明から、この分野の通常の知識を有する者には明らかである。示された如何なる特定の実施例も例であり、本発明を限定する者ではない。従って、種々の実施例の詳細に関する参照は、本発明として考えられる特徴に言及したものであり、請求の範囲を限定するものではない。
Claims (39)
- コンピューターシステムであって、
中央演算処理装置(CPU)、
前記CPUと結合され、追加データを格納する複数の圧縮可能なキャッシュラインを有するキャッシュメモリー、及び
前記キャッシュメモリーと結合され、キャッシュラインへの各アクセスの後、前記キャッシュラインを圧縮キャッシュラインに圧縮する前に、前記キャッシュラインを再順序付けするキャッシュ制御部、
を有する、コンピューターシステム。 - 前記キャッシュ制御部は、次にアクセスされるキャッシュライン内のワードを予測し、予測されたワードを前記キャッシュラインの先頭に位置させる再順序付け方式を実行する、請求項1記載のコンピューターシステム。
- 前記キャッシュライン内の前記予測されたワードは、関連したオフセットを有する、請求項2記載のコンピューターシステム。
- 前記再順序付け方式は、アクセスされたワードがキャッシュラインの先頭に移動させられるようキャッシュラインを回転する段階を有する、請求項2記載のコンピューターシステム。
- 前記キャッシュラインは、圧縮される時に回転される、請求項4記載のコンピューターシステム。
- インデックスの配列は、キャッシュラインの回転順列を記録するために格納される、請求項4記載のコンピューターシステム。
- 前記再順序付け方式は、キャッシュラインの最後にアクセスされたワードを、キャッシュラインの先頭に移動し、同時にキャッシュラインの残りのライン順序を維持する段階を有する、請求項2記載のコンピューターシステム。
- 前記再順序付け方式は、最後にアクセスされたワードがキャッシュラインの2番目のワードに位置するようキャッシュラインを回転する段階を有する、請求項2記載のコンピューターシステム。
- 前記再順序付け方式は、キャッシュラインで最近利用されたワード順序に基づく、請求項2記載のコンピューターシステム。
- 前記キャッシュ制御部は、1つ以上のデータラインを圧縮データラインに圧縮する圧縮ロジック、及び前記圧縮データラインを伸長する伸長ロジックを有する、請求項1記載のコンピューターシステム。
- 前記CPUと結合されたメモリー制御部を更に有し、前記メモリー制御部は、
1つ以上のデータラインを圧縮データラインに圧縮する圧縮ロジック、
前記データの圧縮ラインを伸長する伸長ロジック、及び
ラインへの各アクセスの後、データラインを圧縮データラインに圧縮する前に、データラインを再順序付けするロジック、
を有する、請求項2記載のコンピューターシステム。 - 前記メモリー制御部と結合され、圧縮データラインを送信及び受信するバス、及び
前記バスと結合された主記憶装置、
を更に有する、請求項11記載のコンピューターシステム。 - 方法であって、
第1のデータラインにアクセスする段階、
次にアクセスされる前記データライン内の第1のワードを予測する段階、
前記第1のワードを前記データラインの先頭に位置させる段階、
前記第1のデータラインを圧縮データラインの形式に圧縮する段階、
を有する、方法。 - 前記データライン内の前記第1のワードが位置する場所を示すオフセットをデータラインに格納する段階を更に有する、請求項13記載の方法。
- 前記第1のワードをデータラインの先頭に位置する段階は、前記第1のワードがデータラインの先頭に位置するよう、データラインを回転する段階を有する、請求項13記載の方法。
- データラインの回転順列を記録するために、インデックスの配列を格納する段階を有する、請求項15記載の方法。
- 前記第1のワードをデータラインの先頭に位置する段階は、データラインの最後にアクセスされたワードがデータラインの先頭に位置するよう、データラインを回転し、同時にキャッシュラインの残りのライン順序が維持する段階を有する、請求項13記載の方法。
- 前記第1のワードをデータラインの先頭に位置する段階は、最後にアクセスされたワードがキャッシュラインの2番目のワードに位置するよう、キャッシュラインを回転する段階を有する、請求項13記載の方法。
- 装置であって、
1つ以上のデータラインを圧縮データラインに圧縮する圧縮ロジック、及び
ラインへの各アクセスの後、データラインを圧縮データラインへ圧縮する前に、データラインを再順序付けするロジック、
を有する、装置。 - 圧縮データラインを伸長する伸長ロジックを更に有する、請求項19記載の装置。
- 前記データラインを再順序付けするロジックは、次にアクセスされるデータライン内のワードを予測し、予測されたワードをデータラインの先頭に位置させる再順序付け方式を実行する、請求項19記載の装置。
- 前記データライン内の前記予測されたワードは、関連したオフセットを有する、請求項21記載の装置。
- 前記再順序付け方式は、アクセスされたワードがデータラインの先頭に移動させられるようデータラインの回転する段階を有する、請求項21記載の装置。
- 前記キャッシュラインは、圧縮される時に回転される、請求項23記載の装置。
- コンピューターシステムであって、
中央演算処理装置(CPU)、
前記CPUと結合され、複数のキャッシュラインの1つ以上を圧縮キャッシュラインに圧縮する圧縮ロジック及びラインへの各アクセスの後、データのラインをデータの圧縮ラインに圧縮する前に、データのラインを再順序付けするロジックを有するメモリー制御部、及び
前記メモリー制御部と結合された主記憶装置、
を有する、コンピューターシステム。 - 前記キャッシュ制御部は、圧縮キャッシュラインを伸長する伸長ロジックを更に有する、請求項25記載のコンピューターシステム。
- 前記キャッシュ制御部は、次にアクセスされるデータライン内のワードを予測し、予測されたワードをデータラインの先頭に位置させる再順序付け方式を実行する、請求項25記載のコンピューターシステム。
- 前記データライン内の前記予測されたワードは、関連したオフセットを有する、請求項27記載のコンピューターシステム。
- コンピューターシステムであって、
1つ以上のデータラインを圧縮データラインに圧縮する圧縮ロジック、及び
ラインへの各アクセスの後、データラインを圧縮データラインへ圧縮する前に、データラインを再順序付けするロジック、を有する、
コントロールハブ/スイッチを有するコンピューターシステム。 - 前記コントロールハブ/スイッチは、圧縮キャッシュラインを伸長する伸長ロジックを更に有する、請求項29記載のコンピューターシステム。
- 前記ヒントロジックは、圧縮データラインからヒント情報を抽出する、請求項30記載のコンピューターシステム。
- コンピューターシステムであって、
1つ以上のデータラインを圧縮データラインに圧縮する圧縮ロジック、及び
ラインへの各アクセスの後、データラインを圧縮データラインへ圧縮する前に、データラインを再順序付けするロジック、を有する、
バス制御部を有するコンピューターシステム。 - 前記コントロールハブ/スイッチは、圧縮キャッシュラインを伸長する伸長ロジックを更に有する、請求項32記載のコンピューターシステム。
- 前記ヒントロジックは、圧縮データラインからヒント情報を抽出する、請求項33記載のコンピューターシステム。
- 装置であって、
1つ以上のデータブロックを圧縮データブロックに変換する変換ロジック、及び
ブロックへの各アクセスの後、データブロックを圧縮データブロックへ圧縮する前に、データブロックを再順序付けするロジック、
を有する、装置。 - 圧縮データブロックを伸長する伸長ロジックを更に有する、請求項35記載の装置。
- 前記データブロックを再順序付けするロジックは、次にアクセスされるデータブロック内のワードを予測し、予測されたワードをブロックの先頭に位置させる再順序付け方式を実行する、請求項35記載の装置。
- 前記ブロック内の前記予測されたワードは、関連したオフセットを有する、請求項37記載の装置。
- 前記データ変換ロジックは、収集/分散動作を実行する、請求項21記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/747,470 US7162583B2 (en) | 2003-12-29 | 2003-12-29 | Mechanism to store reordered data with compression |
PCT/US2004/043233 WO2005066797A1 (en) | 2003-12-29 | 2004-12-21 | A mechanism to store reordered data with compression |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007519100A true JP2007519100A (ja) | 2007-07-12 |
Family
ID=34700747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006547349A Pending JP2007519100A (ja) | 2003-12-29 | 2004-12-21 | コンピューターシステム、方法、装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7162583B2 (ja) |
JP (1) | JP2007519100A (ja) |
CN (1) | CN100538664C (ja) |
WO (1) | WO2005066797A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007520813A (ja) * | 2004-01-15 | 2007-07-26 | インテル コーポレイション | 圧縮されたキャッシュラインのワース・オブ・インフォメーションを利用したマルチプロセッサ計算システム及び当該システムに利用可能なプロセッサ |
JP2016509324A (ja) * | 2013-03-07 | 2016-03-24 | クアルコム,インコーポレイテッド | キャッシュメモリアクセスを高速化するためのキャッシュメモリフィルの重要ワード優先順序付け、ならびに関連するプロセッサベースのシステムおよび方法 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3989472B2 (ja) * | 2004-07-30 | 2007-10-10 | シャープ株式会社 | 画像データ処理回路およびそれを備えてなる画像処理装置 |
US8271748B2 (en) * | 2008-08-12 | 2012-09-18 | Intel Corporation | Generating and/or receiving, at least one data access request |
US10196662B2 (en) | 2012-08-10 | 2019-02-05 | Mello Biotechnology, Inc. | Composition for producing microRNA precursors as drugs for enhancing wound healing and production method of the microRNA precursors |
US10572378B2 (en) | 2014-03-20 | 2020-02-25 | Hewlett Packard Enterprise Development Lp | Dynamic memory expansion by data compression |
US9361228B2 (en) | 2014-08-05 | 2016-06-07 | Qualcomm Incorporated | Cache line compaction of compressed data segments |
CN104166630B (zh) * | 2014-08-06 | 2017-06-20 | 哈尔滨工程大学 | 一种面向内容中心网络中基于预测的最优化缓存放置方法 |
JP7010548B2 (ja) * | 2015-05-21 | 2022-01-26 | ゼロポイント テクノロジーズ アーベー | ハイブリッドデータ圧縮および解凍のための方法、デバイス、およびシステム |
US9904635B2 (en) * | 2015-08-27 | 2018-02-27 | Samsung Electronics Co., Ltd. | High performance transaction-based memory systems |
FR3041796B1 (fr) * | 2015-09-24 | 2017-10-20 | Stmicroelectronics Rousset | Stockage et lecture d'un code d'authentification de message dans une memoire externe |
US10061644B2 (en) * | 2015-11-02 | 2018-08-28 | Qualcomm Incorporated | Systems and methods for implementing error correcting code in a memory |
US10120581B2 (en) * | 2016-03-30 | 2018-11-06 | Qualcomm Incorporated | Generating compressed data streams with lookback pre-fetch instructions for pre-fetching decompressed data from a lookback buffer |
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 |
US10067706B2 (en) | 2016-03-31 | 2018-09-04 | Qualcomm Incorporated | Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system |
US10176090B2 (en) | 2016-09-15 | 2019-01-08 | Qualcomm Incorporated | Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems |
CN111176583B (zh) | 2019-12-31 | 2021-03-30 | 北京百度网讯科技有限公司 | 一种数据写入方法、装置和电子设备 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5389922A (en) | 1993-04-13 | 1995-02-14 | Hewlett-Packard Company | Compression using small dictionaries with applications to network packets |
US6075470A (en) * | 1998-02-26 | 2000-06-13 | Research In Motion Limited | Block-wise adaptive statistical data compressor |
US6324621B2 (en) | 1998-06-10 | 2001-11-27 | International Business Machines Corporation | Data caching with a partially compressed cache |
US6678805B1 (en) * | 2000-05-25 | 2004-01-13 | Microsoft Corporation | Structure organization for improved cache performance |
US6735673B2 (en) | 2002-01-10 | 2004-05-11 | Hewlett-Packard Development Company, L.P. | Apparatus and methods for cache line compression |
US6640283B2 (en) * | 2002-01-16 | 2003-10-28 | Hewlett-Packard Development Company, L.P. | Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size |
US6847315B2 (en) * | 2003-04-17 | 2005-01-25 | International Business Machines Corporation | Nonuniform compression span |
TWI227409B (en) * | 2003-06-05 | 2005-02-01 | Carry Computer Eng Co Ltd | Storage device capable of enhancing transmission speed |
TWI220959B (en) * | 2003-06-05 | 2004-09-11 | Carry Computer Eng Co Ltd | Storage device with optimized compression management mechanism |
US7188227B2 (en) * | 2003-09-30 | 2007-03-06 | International Business Machines Corporation | Adaptive memory compression |
US7243204B2 (en) * | 2003-11-25 | 2007-07-10 | International Business Machines Corporation | Reducing bus width by data compaction |
US7636810B2 (en) * | 2003-11-26 | 2009-12-22 | Intel Corporation | Method, system, and apparatus for memory compression with flexible in-memory cache |
-
2003
- 2003-12-29 US US10/747,470 patent/US7162583B2/en not_active Expired - Fee Related
-
2004
- 2004-12-21 WO PCT/US2004/043233 patent/WO2005066797A1/en active Application Filing
- 2004-12-21 JP JP2006547349A patent/JP2007519100A/ja active Pending
- 2004-12-21 CN CNB2004800391283A patent/CN100538664C/zh not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007520813A (ja) * | 2004-01-15 | 2007-07-26 | インテル コーポレイション | 圧縮されたキャッシュラインのワース・オブ・インフォメーションを利用したマルチプロセッサ計算システム及び当該システムに利用可能なプロセッサ |
JP4652344B2 (ja) * | 2004-01-15 | 2011-03-16 | インテル コーポレイション | 圧縮されたキャッシュラインのワース・オブ・インフォメーションを利用したマルチプロセッサ計算システム及び当該システムに利用可能なプロセッサ |
JP2016509324A (ja) * | 2013-03-07 | 2016-03-24 | クアルコム,インコーポレイテッド | キャッシュメモリアクセスを高速化するためのキャッシュメモリフィルの重要ワード優先順序付け、ならびに関連するプロセッサベースのシステムおよび方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100538664C (zh) | 2009-09-09 |
WO2005066797A1 (en) | 2005-07-21 |
CN1902602A (zh) | 2007-01-24 |
US20050144386A1 (en) | 2005-06-30 |
US7162583B2 (en) | 2007-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7162584B2 (en) | Mechanism to include hints within compressed data | |
JP4009310B2 (ja) | コンピューターシステム、キャッシュ制御部、方法 | |
US7243191B2 (en) | Compressing data in a cache memory | |
US6879266B1 (en) | Memory module including scalable embedded parallel data compression and decompression engines | |
Tremaine et al. | IBM memory expansion technology (MXT) | |
US8161206B2 (en) | Method and system for storing memory compressed data onto memory compressed disks | |
JP2007519100A (ja) | コンピューターシステム、方法、装置 | |
USRE43483E1 (en) | System and method for managing compression and decompression of system memory in a computer system | |
KR100337216B1 (ko) | 압축형 메인 메모리를 위한 가상 비압축 캐쉬 | |
US7493445B2 (en) | Cache memory system and control method of the cache memory system | |
US6353871B1 (en) | Directory cache for indirectly addressed main memory | |
US10140211B2 (en) | Cache device and method for storing tag data and cache data in cache device | |
US6587923B1 (en) | Dual line size cache directory | |
US20050071566A1 (en) | Mechanism to increase data compression in a cache | |
Keramidas et al. | Dynamic dictionary-based data compression for level-1 caches | |
Kesavan et al. | Comparative Study on Data Compression Techniques in Cache to Promote Performance | |
US7966452B2 (en) | Cache architecture for a processing unit providing reduced power consumption in cache operation | |
Sardashti et al. | Memory Compression | |
Angeline et al. | Vlsi Design of Cache Compression in Microprocessor Using Pattern Matching Technique | |
EP1913479A2 (en) | Cache architecture for a processing unit providing reduced power consumption in cache operation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090825 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100209 |