JP4652344B2 - 圧縮されたキャッシュラインのワース・オブ・インフォメーションを利用したマルチプロセッサ計算システム及び当該システムに利用可能なプロセッサ - Google Patents

圧縮されたキャッシュラインのワース・オブ・インフォメーションを利用したマルチプロセッサ計算システム及び当該システムに利用可能なプロセッサ Download PDF

Info

Publication number
JP4652344B2
JP4652344B2 JP2006549516A JP2006549516A JP4652344B2 JP 4652344 B2 JP4652344 B2 JP 4652344B2 JP 2006549516 A JP2006549516 A JP 2006549516A JP 2006549516 A JP2006549516 A JP 2006549516A JP 4652344 B2 JP4652344 B2 JP 4652344B2
Authority
JP
Japan
Prior art keywords
cache line
information
cache
compressed
compression
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006549516A
Other languages
English (en)
Other versions
JP2007520813A (ja
Inventor
ニューバーン,クリス
フッガハリ,ラム
ハム,ハーバート
アドル−タバタバイ,アリ−レザ
グルーム,アンワー
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2007520813A publication Critical patent/JP2007520813A/ja
Application granted granted Critical
Publication of JP4652344B2 publication Critical patent/JP4652344B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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

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)
  • Multi Processors (AREA)

Description

発明の詳細な説明
[発明の技術分野]
本発明の技術分野は、一般に計算システムに関し、より詳細には、圧縮されたキャッシュラインのワース・オブ・インフォメーション(worth of information)を利用したマルチプロセッサ計算システム及び当該マルチプロセッサ計算システムに利用可能なプロセッサに関する。
[背景]
図1は、1)プロセッサ101と、2)キャッシュ102と、3)メモリコントローラ103と、4)システムメモリ104とを有する基本的な計算システムのアーキテクチャの一部を示す。プロセッサ101は、データの各要素に対して各種処理を実行する命令を実行することによって、ソフトウェアルーチンを実現する。これらの命令及びデータ要素は、キャッシュ1022及び/又はシステムメモリ104に格納されている。プロセッサ101が特定の命令又はデータ要素を必要とするとき、それをシステムメモリ104からリクエストする前に、所望の命令又はデータ要素に対してキャッシュ102を検索する。
一般に、キャッシュ102は、システムメモリ104より「高速である」と考えられている。すなわち、プロセッサ101は、システムメモリ104に存在する命令又はデータ要素より、キャッシュ102に存在する命令又はデータ要素に対する待機時間の方が短い。このキャッシュ102とシステムメモリ104との間の待機時間の相違は、典型的には、システムメモリが実現されるものより(DRAMセルなど)、キャッシュ102(SRAMセルなど)が本来的により高速なメモリセルにより実現されている結果として生じるものである。
格納スペースのビット当たり、SRAMタイプキャッシュ102は、DRAMタイプシステムメモリ104より高価である。従って、図1の計算システムのアーキテクチャは、より頻繁に使用される命令及びデータ要素をキャッシュ102に格納し、あまり頻繁には使用されない命令及びデータ要素をシステムメモリ104に格納するよう構成されることによって、コストとパフォーマンスの両方を最適化しようとするものである。より頻繁に使用される命令及びデータ要素をキャッシュに格納することによって、プロセッサは、命令/データがシステムメモリ104からフェッチされるのを待機する無駄な時間の形式の許容される「タイミング・ペナルティ・ヒット(timing penalty hit)」を耐えるべきである。なぜなら、プロセッサにより必要とされる命令/データのかなりの割合が、キャッシュ102において検出されるであろうという理由からである。
「キャッシュヒット」(すなわち、必要とされる命令又はデータ要素がキャッシュ102において検出されるインスタンス)の割合を向上させるため、「時間ロカリティ(temporal locality)」及び「空間ロカリティ(spatial locality)」が関係する。時間ロカリティは、1つの命令又はデータ要素は、それがすでに使用された直後に使用される傾向があるという概念である。空間ロカリティは、メモリにおいて互いに近接して配置されている(すなわち、類似したアドレスを有する)命令及びデータ要素は、ほぼ同時に使用される傾向がある。時間ロカリティは、システムメモリ104からキャッシュ102に最初に転送された後少なくともしばらくの期間、命令及びデータ要素をキャッシュ102に保持することによる措置が可能である。
空間ロカリティは、システムメモリ104からフェッチされる必要がある何れか1つの命令又はデータ要素に近接する(例えば、「取り囲む」など)コンテンツを有するシステムメモリ102からのデータブロック(すなわち、複数の命令又はデータ要素)によりキャッシュ102がロードされるよう構成することによる措置が可能である。例えば、アドレスXにある命令がシステムメモリ104から必要とされる場合、当該必要とされる命令のみをシステムメモリ104からキャッシュ102に転送する代わりに、アドレスXに関連する複数のアドレスに対応するコンテンツブロックが、システムメモリ104からキャッシュ102に転送される。
図2は、第1の連続するコンテンツ「ブロック」105(複数のシステムメモリアドレスを介し参照される)が1つのキャッシュライン107にロードされ、第2の連続するコンテンツ「ブロック」106(異なる複数のシステムメモリアドレスを介し参照される)が他の1つのキャッシュライン108にロードされることを示すことによって、上記状況を示そうとするものである。簡単化のため、図2は、キャッシュ204を単一の構成として示している。しかしながら、異なるレベルのキャッシュによる各種計算システムが構成される。例えば、多くのタイプの計算システムは、2つのレベルのキャッシュ(レベル1(L1)キャッシュとレベル2(L2)キャッシュ)を有し、第1レベルキャッシュ(L1)は、第2レベルキャッシュ(L2)より短いプロセッサ待機時間に対応している。L1キャッシュは、最も頻繁に使用されるデータ要素及び命令を格納するよう想定され、L2キャッシュは、L1キャッシュ内のものより頻繁には使用されないが、システムメモリ内のものより頻繁に使用されるデータ要素及び命令を格納するよう想定される。
従来、2つのキャッシュレベルは、システムメモリと比較してより高速なメモリタイプにより実現されている(例えば、L1とL2の何れのキャッシュもSRAMメモリセルにより実現されるなど)。しかしながら、L1キャッシュはプロセッサと同じ半導体ダイ上に一体化され、L2キャッシュはプロセッサと異なる半導体ダイにより実現される。「オンチップ」キャッシュへのアクセスは、「オフチップ」キャッシュへのアクセスより高速であり、L1キャッシュへのアクセスは、L2キャッシュへのアクセスより少ないプロセッサ待機時間に対応する。
メモリコントローラ103は、キャッシュによって満足されないデータに対するリクエストをプロセッサ101から受け付け、当該リクエストのためにサーブするプロセスをシステムメモリ104において管理するためのものである。キャッシュに存在しないデータに対するロードリクエスト、メモリに戻される必要があるデータのキャッシュからのイビクトなど、多数の各種タイプのリクエストが存在するかもしれない。典型的には、メモリコントローラは、多数のリクエストが発行され、より短い平均遅延によりパラレルにサービス可能となるように、リクエストをパイプラインすることが可能である。メモリコントローラは、あるメモリ技術のディテールとインタフェースをとるためのものであり、モジュラー形式によりプロセッサからシステムメモリを分離する。メモリコントローラは、例えば、同一ダイ上でプロセッサと一体化されてもよいし、あるいは、チップセット内で分離されてもよい。
システムメモリは、典型的には、特定タイプのシステムメモリ(EDO RAM、SDRAM、DDRなど)により実現される。
[詳細な説明]
・キャッシュラインのワース・オブ・インフォメーションの圧縮
問題を明確にするため、キャッシュラインは、キャッシュ内の格納スペースの基本単位である。例えば、多くのアプリケーションでは、一意的なタグ及びセットアドレスが、計算システムのキャッシュ内の1つのキャッシュラインを具体的に特定するのに利用される。従って、キャッシュラインは、特定の電気回路要素(SRAMセルなど)により実現される。他方、「キャッシュラインのワース・オブ・インフォメーション(worth of information)」又は「ライン・オブ・インフォメーション(line of information)」とは、キャッシュラインを充填し得る情報量(データ要素又は命令など)である。ここで、図2の説明に戻って、「ブロック」105に格納されている情報量は、ブロック105のコンテンツがキャッシュライン107を充填するため、キャッシュラインとのワース・オブ・インフォメーションに対応する。
図3aは、通常、キャッシュラインのペアを占有する整列されたシステムメモリ304のブロック305と309のペアを1つのキャッシュライン307に圧縮するため(すなわち、キャッシュラインのワース・オブ・インフォメーションの情報が、1つのキャッシュラインに圧縮される)、空間ロカリティの概念を拡張するアプローチを示す。図3aにおいて、通常、キャッシュラインペアを占有する他の整列されたメモリブロック306と310のペアのコンテンツが、第2の1つのキャッシュライン308を占有するため圧縮される第2の例もまた観察される。圧縮は、メッセージ自体の実質的なコンテンツに影響を与えることなく(すなわち、命令又はデータ要素を表すのに利用される「ナンバー」を再度キャプチャする可能性を排除することなく)、情報(命令又はデータ要素など)を洗うのに必要とされるデータ量を低減する技術である。整列されたブロックのペアを1つのキャッシュラインに圧縮可能となることは、キャッシュの有効サイズが増大するため、計算システムのパフォーマンスをより高速にする(従って、より低速なキャッシュレベル又はシステムメモリへのアクセス遅延を増大させるのに可能性が低下する)。さらない、以下でより詳細に説明されるように、計算システムの帯域幅は、すでにアクセスした他の情報により圧縮されるため、情報へのアクセスを抑制することによって向上させることができる。
一実施例では、図3a及び4aを参照するに、1)キャッシュラインのワース・オブ・インフォメーションが、整列した連続するメモリブロックを表し、2)キャッシュラインのワース・オブ・インフォメーションのペアの情報コンテンツが、1つのキャッシュラインに圧縮可能である場合、プロセッサのキャッシュコントローラ410には、2つのキャッシュラインのワース・オブ・インフォメーションを圧縮する圧縮/解凍ロジック411が搭載される。利用される圧縮のタイプは、Lempel−Ziv、Wilson−Kaplan、X−Match又はおそらく他の既知の又は専用のタイプの圧縮などの各種形式を採用するものであってもよい。
一実施例では、コンパニオンブロック(companion block)が整列しているということは、コンパニオンブロックに係る最下位アドレスが、当該コンパニオンブロックの結合された複数のサイズとなることを意味する。例えば、各キャッシュラインのワース・オブ・インフォメーションが64バイトである場合、2つの連続するキャッシュラインのワース・オブ・インフォメーション(すなわち、Nにおける第1のものは、「下位の」キャッシュラインのワース・オブ・インフォメーションと呼ばれ、N+64における第2のものは、「上位」のキャッシュラインのワース・オブ・インフォメーションと呼ばれる)のベースアドレスNは、128により割り切れる(すなわち、N/128の剰余が0となる)。さらなる例として、図3aを参照するに、ブロック305はNのベースアドレスによりアドレス指定可能であり、ブロック309はN+64のアドレスによりアドレス指定可能である。
便宜上、整列された連続するキャッシュラインのワース・オブ・インフォメーションは、互いの「コンパニオン」と呼ばれる。従って、上述された記載に基づき、コンパニオンキャッシュラインのワース・オブ・インフォメーションのペアは、その実質的なコンテンツが圧縮可能である場合、圧縮/解凍ロジック411により圧縮される。同様に、圧縮/解凍ロジック411は、コンテンツをもはや1つのキャッシュラインに圧縮可能にしないキャッシュラインのコンテンツへの書き込みが行われる場合、圧縮されたキャッシュラインのワース・オブ・インフォメーションを2つの別々のコンパニオンキャッシュラインのワース・オブ・インフォメーションに解凍することが可能である。
キャッシュラインのワース・オブ・インフォメーションのペアが圧縮されると、それらは、もはや圧縮可能とみなされなくされる圧縮された情報への書き込みが行われるまで、(例えば、キャッシュに格納されている間、1つのタグ及びセットアドレスにより参照されることによって)計算システム全体によって1つのキャッシュラインのワース・オブ・インフォメーションとして扱われる。圧縮不可とみなされると、当該情報は、コンパニオンキャッシュラインペアに分割される。従って、プロセッサ401がキャッシュ402から特定のキャッシュラインのワース・オブ・インフォメーションに継続的にアクセスする場合、プロセッサ401は、キャッシュラインペアに等しい情報が実際に読み込まれているとしても、1つのキャッシュラインのみを継続的に読み込む。例えば、キャッシュラインのワース・オブ・インフォメーションを圧縮/解凍可能なキャッシュを有するプロセッサにおいて、インスタンス化可能な一例となる圧縮/解凍ロジックの実現形態に関する詳細は、当該詳細な説明のためのものである。
情報が1つのキャッシュラインのワース・オブ・インフォメーションに圧縮されると、当該1つのキャッシュラインのワース・オブ・インフォメーションは、1)キャッシュ(アルレベルのキャッシュを含む)に対する読み書き、2)システムメモリに対する読み書き、及び3)キャッシュラインのワース・オブ・インフォメーションをトランスポートするため構成される任意の構成(例えば、システムメモリへのアクセスを制御するメモリコントローラとプロセッサとの間のキャッシュライン・オブ・インフォメーションをトランスポートするフロントサイドバス又はポイント・ツー・ポイントリンク、マルチプロセッサ環境では、キャッシュされた情報を共有するプロセッサペアなど)などの任意の「通常の」圧縮されていないキャッシュライン・オブ・インフォメーションとして扱われるかもしれない。
キャッシュラインの圧縮されたワース・オブ・インフォメーションの可能な移転の例として、図4aを参照するに、キャッシュラインのワース・オブ・インフォメーションが、キャッシュ402からイビクトされ(例えば、それが、キャッシュ402に継続的に格納される価値があるとみなされるのに十分頻繁には使用されなかったため)、システムメモリ404に移転される状況を検討する。ここで、キャッシュラインの圧縮されたワース・オブ・インフォメーションは、1つのキャッシュラインのワース・オブ・インフォメーションを格納することが可能な1つのブロックのシステムメモリアドレッシングスペースに格納することが可能である。例えば、図3bは、圧縮されたキャッシュライン307のコンテンツが、キャッシュ302と402からイビクトされた後、図3aのブロック305と309の実質的なコンテンツに関して、システムメモリ304の使用を示す。図3bは、キャッシュ302と402からのイビクト及びシステムメモリ304と404への格納により、キャッシュライン307のコンテンツがメモリブロック305のみを占有するため格納されることを示す。これは、明らかに対照的に、図3aに示される圧縮前に存在した同一の情報量を格納するためのシステムメモリを利用することである。
2つのキャッシュラインのワース・オブ・データが、1つのキャッシュラインのワース・オブ・データにより通常占有されるスペースに格納される可能性があっても、システムメモリにコンパクトな形式により格納されるとき、圧縮されたキャッシュについて真であるように、これは、システムの物理的メモリの容量の有効な増大を意味するものではない。これは、システムメモリにおいて、アドレススペースがコンパクト化されないという理由である。アドレススペースのコンパクト化は、ページテーブルへの変更を要し、従って、ここで提供されるスキームが回避可能なオペレーティングシステムのサポートを必要とする。
すなわち、圧縮後、ブロック305のみが、圧縮前にブロック305及び309に先に格納されたものの情報コンテンツを格納するのに必要とされる。図3bはまた、イビクトにより、圧縮されたキャッシュライン308のコンテンツが、ブロック306及び310が圧縮前に同一の情報を格納するのに使用されたとしても、ブロック306のみを占有するため、システムメモリ304において復元されることを示す。図3bの「圧縮されたコンテンツ」ブロック305と306の1つが、プロセッサ401により再び必要とされる場合、それは、1つのキャッシュラインのワース・オブ・インフォメーションとしてメモリコントローラ403aによってシステムメモリ304と404から読み出され、メモリコントローラ403aからプロセッサ401に移転され(再び、1つのキャッシュラインのワース・オブ・インフォメーションとして)、プロセッサのキャッシュ402に書き込まれる(再び、1つのキャッシュラインのワース・オブ・インフォメーションとして)。
・メモリコントローラ
シングルプロセッサ環境に関して、メモリコントローラは、圧縮/解凍動作が行われていることをほとんど認識することなく動作可能である。すなわち、例えば、プロセッサ401は、圧縮されているキャッシュラインのワース・オブ・インフォメーションと、圧縮されていないものとを「追跡」及び処理してもよく、対照的に、メモリコントローラは、プロセッサ401により割り当てられた識別子又はラベルに従って、データブロックを単に読み書きするよう構成される。
しかしながら、システムメモリの何れのブロックが圧縮されたキャッシュラインのワース・オブ・インフォメーションに対応するコンテンツを格納するのに使用されるか(及び/又はシステムメモリの何れのブロックが圧縮されていないキャッシュラインのワース・オブ・インフォメーションに対応するコンテンツを格納するのに使用されるか)を考慮するより高度なメモリコントローラ403aは、計算システム内のシステムメモリの利用をより効率的にするため、システムメモリへのアクセス要求を低減することが可能であるかもしれない。例えば、第2データブロックを読むことを拒絶することによって、それの実質的なコンテンツが圧縮された第1のデータブロックから読み出されたところであるため、システムメモリに対して実行される要求は、効果的に低減される。
より詳細な例として、プロセッサが情報をそれのキャッシュラインに圧縮可能なマルチプロセッサ環境を検討する。ここで、第1プロセッサ(例えば、図4aのプロセッサ401など)は、情報をキャッシュラインに圧縮し、その後、システムメモリ404に格納するため、キャッシュ402からそれをイビクトする。マルチプロセッサシステムにおける第2プロセッサ(図4aには図示せず)が、第1プロセッサの圧縮処理を知ることなく、圧縮された情報の両方のコンパニオンに格納されている情報をシステムメモリ404から読み出されることを所望する場合、メモリコントローラ403aは、第2プロセッサからの読み出しリクエストのペア(すなわち、第1のリクエストは第1コンパニオンに対するものであり、第2リクエストは第2コンパニオンに対するものである)を受信することに応答して、圧縮されたキャッシュラインのワース・オブ・インフォメーションを読み出視線用となるのに「十分スマート」なものであるよう構成されてもよい。ここで、圧縮されたキャッシュラインのワース・オブ・インフォメーションは、第2プロセッサにより行われた両方のリクエストを満たすのに十分なものとなるであろう。
・圧縮マップ
図4bは、メモリコントローラ403aによってそれのシステムメモリ404内の圧縮された情報の有無を認識するのに利用可能な圧縮マップ412と呼ばれる情報ボディに対する3つの実施例412a、412b及び412cを提供する。まず、「基本実施例」412aを参照するに、圧縮マップ412aは、システムメモリ404内の各情報ブロックについて、当該ブロックの対応するキャッシュラインのワース・オブ・インフォメーションが、圧縮形式又は非圧縮形式によりシステムメモリ404に現在格納されているか否か特定するビットマップとしてシステムメモリ404に格納されてもよいということに留意されたい。
典型的な実現形態では、アドレスカラムは、圧縮マップに実際には含まれない(例えば、当該マップがメモリ全体をカバーしている場合など)。図4bは、読者が圧縮マップの構成及び構造を容易に理解できるように、実施例412a、412b及び412cのそれぞれのアドレスカラムを示す。具体的には、図3bに示されるシステムメモリに基づき、すぐ後で説明される具体例に関して、ビットにはアクティブ値「1」が与えられている(その他には非アクティブ値「0」は与えられていない)。また、圧縮マップは、特定のシステムメモリブロックに対応する位置(データフィールドなど)において特定の値を有するよう構成されるデータ構造として実現されてもよい。
図4bの圧縮マップの実施例412aは、図3bにおいて観察されたシステムメモリに適用するため示される。具体的には、図3bのシステムメモリは、圧縮前にブロック305及び309に存在した情報の圧縮に対応する情報をブロック305に格納する。図3aのブロック305及び309の情報は共に圧縮されているため、図4aの圧縮マップ412aは、ブロック305と309のそれぞれについての表示(「1」)を提供する。同様に、図3aのブロック306と310の情報は共に圧縮されているため(ブロック306に)、図4bの圧縮マップ412aは、ブロック305と309のそれぞれについての表示を提供する。図4aを参照するに、圧縮マップ412aは、システムメモリ自体404に格納可能であるということに留意されたい。
図4bの「より精巧な」圧縮マップの実施例412bは、1)キャッシュラインのワース・オブ・インフォメーションの実質的なコンテンツを提供する情報(インスタンス414などの選択ケースにおいてなど)、2)圧縮形式により格納されている各キャッシュラインのワース・オブ・インフォメーションについて使用される圧縮タイプの表示の形式による付加情報と共に、実施例412aに関して上述されたようなビットマップ情報を含む。
前者の付加情報414は、a)圧縮されていないキャッシュラインのワース・オブ・インフォメーションを有するシステムメモリのブロックのコンテンツ、及び/又はb)圧縮形式によりシステムメモリにすでに格納されているキャッシュラインのワース・オブ・インフォメーションの「先頭に」適用可能な極端な圧縮形式に対応する(実施例412bは、上述の1つのインスタンスを示す)。例えば、あるシステムメモリブロックに格納されているキャッシュラインのワース・オブ・インフォメーションが「すべてゼロ」である場合、圧縮マップ412bのあるブロック位置に1つの「ゼロ」(ゼロ414など)が格納されてもよい。同様の表示が、何れかのタイプの定数(「すべて1」など)について利用されてもよい。ここで、メモリコントローラは、ある定数を有するキャッシュラインを特定するロジック(総和ロジック(例えば、すべてゼロの総和はゼロとなるであろうなど)など)を有することが予想されるであろう。
後者の付加情報415は、特定タイプの圧縮を示す。ここで、異なるタイプの圧縮(Lempel−Ziv、Wilson−Kaplan、X−Matchなど)が利用可能であるということを思い起こされたい。ある計算システム内には1つのみのタイプの圧縮が存在するだけでなく(例えば、Lemple−Zivのみを使用する1つのシステムなど)、1つのシステムが異なるタイプの圧縮を実現可能である実施例もまた構成されてもよい(例えば、Lempel−Ziv、Wilson−Kaplan、X−Match及びおそらく他の圧縮アルゴリズムの何れかを利用可能な1つのシステムなど)。
圧縮マップの実施例412aと412bの何れもが、キャッシュラインのワース・オブ・インフォメーションを格納可能なシステムメモリの各整列されたブロックに対する圧縮/非圧縮状態を提供するビットを示す。対照的に、実施例412cは、整列されたシステムメモリブロックの各ペアの圧縮/非圧縮状態を表すのに1ビットしか使用しない。ここで、2:1以外の圧縮比(4:1など)が利用可能であり、実施例412cのアプローチに従って実現される圧縮マップのサイズは、圧縮比が増大するに従ってより小さくなるということに留意することは価値あることである。すなわち、2:1の圧縮について、メモリブロックのすべての整列されたペアを表すためのビットが使用され、4:1の圧縮比が使用される場合には、4つの整列されたメモリブロックのすべてのグループについてのビットが存在することとなる。また、実施例412bのより精巧な情報が、実施例412cに付加可能であるということに留意されたい。
圧縮マップの他の実施例は、フラットビットベクトルではなく、選択的な階層的スキームを利用可能である。フラットビットベクトルは、メモリにすべてのブロックについて1ビットを有することが必要である。圧縮がメモリのある領域のみに選択的に適用可能であり、これにより、圧縮されるメモリの領域のみをカバーするように圧縮マップが構成可能である。同様に、付加領域が圧縮されても、メモリ領域の一部のみしか実際には圧縮は行われなかった(これまで)。完全に又は部分的に圧縮された領域をカバーする圧縮マップの様々な選択が、リンクトリストとして一緒にリンク可能であり、あるいは、メモリのより小さな領域及びサブ領域を徐々にカバーするある階層のデータ構造に作用することが可能である。
コンパニオンのペアの圧縮状態は、コンパニオンの実質的なコンテンツが1つのキャッシュラインのワース・オブ・インフォメーションに「圧縮可能」であるというものであることを思い起こし、異なる圧縮スキームを介し異なる数学的技術が利用されることにより、ある圧縮技術はあるコンパニオンのペアを圧縮可能であるとみなし、他の圧縮スキームは同一のコンパニオンを圧縮可能とみなさないかもしれない(例えば、コンパニオンのペアの実質的なコンテンツは、Wilson−KaplanやX−MatchではなくLempel−Zivにより圧縮可能であるかもしれない)。また、より多くのコンパニオンが、1つのタイプの圧縮のみを提供する計算システムと比較して、異なるタイプの圧縮を「提供する」計算システムにおいて圧縮されるかもしれない。図4bのエンハンスされたビットマップの実施例412bの圧縮タイプの表示415は、このようなシステムにおいて利用可能である(それが、圧縮タイプ「A」がブロック305と309に使用され、圧縮タイプ「B」がブロック306と310に使用されたことを示すことに留意して)。従って、図4aの圧縮/解凍ロジック411は、実施例に応じて単一又は複数のタイプの圧縮を実行可能であると理解されるべきである。
また、図4aから、圧縮マップがシステムメモリ404に格納可能であるということに留意されたい。一実施例では、メモリコントローラ403aは、1以上のシステムメモリの圧縮/解凍状態をチェックするため、適切な時点においてシステムメモリ412から圧縮マップ412の一部をフェッチするよう構成される。
圧縮マップ412の一部をフェッチするため、システムメモリ404へのアクセスに関する効率性のペナルティを低減するため、メモリコントローラ403aが、圧縮マップキャッシュ413を有するよう構成されることに留意されたい。圧縮マップキャッシュ413は、圧縮マップの1以上の直近にフェッチされた部分を含む。通常のキャッシュと同様に、圧縮マップ情報は、システムメモリ404にイビクトされる前に、圧縮マップキャッシュ413において継続的に更新されるようにしてもよい。図5a〜5dに関して以下でより詳細に説明されるように、圧縮マップキャッシュ413は、圧縮マップ情報が所望されるときに参照される。所望される情報が圧縮マップキャッシュ413において検出されない場合、当該情報は、システムメモリ404に存在する圧縮マップ412からフェッチされる。
図4cは、圧縮マップ412より動作するよう構成されるメモリコントローラ403bが、1つのプロセッサ420を有する計算システムにおいてだけでなく、キャッシュされた情報を圧縮/解凍する能力を有しない1以上のプロセッサ(プロセッサ420やおそらく図4cには図示されない他のプロセッサなど)により実現されてもよい。従って、図4cのメモリコントローラ403bは、圧縮動作を認識している計算システム内の主要な(そしておそらく唯一の)コンポーネントであることが可能である。図4cの図は、図4aと対照的に、メモリコントローラ403b自体には、キャッシュラインを圧縮及び解凍するのに利用される適切な圧縮/解凍ロジック416が再度搭載可能であることを示すプロセッサ420がこのようなロジックを欠落していることに留意されたい)。圧縮/解凍ロジック416は、1以上のタイプの圧縮/解凍技術をサポートするものであってもよい。
メモリコントローラ403bはさらに、図4aを参照して上述されたような圧縮マップキャッシュ413を有するようにしてもよい。圧縮/解凍処理の認識を維持しないプロセッサとの動作において、メモリコントローラ403bは、プロセッサへの/からの圧縮されていないキャッシュラインのワース・オブ・データを提供/受付する。プロセッサが圧縮されたキャッシュラインにより動作不可となる環境において動作しているメモリコントローラ403bによって実行可能な具体的な方法が、以下においてより詳細に説明される。
図4dは、圧縮マップ412が、関連しないメモリ一において「バーチャルな」方法により実現されるのではなく、システムメモリ404の「物理的な」連続するアドレッシング範囲内に格納されるようにしてもよい(例えば、ソフトウェアにより管理されるリンクリスト技術によって)。物理的アドレッシングスペースにおいて圧縮マップ412を実現することによって、オペレーティングシステム(OS)は、圧縮/処理を意識することなく動作可能であり、システムメモリの何れの位置が圧縮マップ412について使用されるべきか管理又は認識するための命令を実行することによって、OSがダウンすることを救済する。また、かなりの程度のオーバヘッドが、OSに通知することから回避される。
システムメモリのアドレッシングスペースの物理的範囲において実現されるよう圧縮マップを構成することによって、圧縮マップは、それのオペレーティングシステムではなく計算システムのハードウェアによって管理及び制御可能とすべきである。上述のように、これは、圧縮マップに関するオーバヘッドにより実質的に取り除かれるように、OSを「解放」すべきである。一実施例では、BIOS(Basic Input Output System)430は、システムメモリの何れの物理的アドレス範囲が、レジスタ431と432のペアに書き込みすることによって、圧縮マップ412に使用されるべきか示す。例えば、第1アドレスは、圧縮マップのスタートアドレスを規定するレジスタ431に格納され、第2アドレスは、圧縮マップのエンドアドレスを規定するレジスタ432に格納されるようにしてもよい。
あるいは、圧縮マップのサイズはレジスタ431と432の一方に格納され、スタート又はエンドアドレスはレジスタ431と432の他方に格納される(圧縮マップのサイズは、2:1、4:1又は他の圧縮アスペクト比が使用されるか否かに応じて可変とされてもよい)。レジスタ431と432のロード処理の後、ハードウェアは、レジスタ431及び432を介し特定されるアドレッシングスペースへの非圧縮マップ情報の格納を避けることが可能であり、同様に、圧縮マップを同一のアドレッシングスペースにのみ向けることを避けることができる。あるいは、レジスタ431と432はプロセッサに配置されてもよい。
圧縮マップが複数のローカルメモリに物理的に分散化されている場合、又は圧縮マップの各部分が物理的に連続するメモリに配置されることが要求されていない圧縮マップスキームが利用される場合、複数のレジスタペアが、BIOSから圧縮マップが存在するハードウェアに通信するのに使用されてもよい。
また、オペレーティングシステムから隠され、ページ処理されていない連続する物理的アドレス範囲において圧縮マップを格納することは、オペレーティングシステムが物理的メモリからバーチャルメモリにページをスワップし、再び戻すときに発生する可能性があるバーチャルアドレスの変更及びページフォルトを処理する必要なく、圧縮マップが物理的アドレスを用いて参照されることを許可すべきであるということに留意することは重要である。これは、当該スキームがOSのサポートの必要を回避し、ソフトウェアに透過である他の方法である。
・圧縮マップの利用
上述のように、圧縮マップは、メインメモリに格納されているあるキャッシュラインのワース・オブ・インフォメーションが、圧縮されているか、又は圧縮されていないか表す。様々な実施例において、それは、メモリの圧縮状態を変更するメモリの各書き込みにより更新される。圧縮マップは、少なくとも以下の3つの目的のため、すなわち、1)非重複的スキームにより圧縮された上位のキャッシュラインのワース・オブ・インフォメーションのターゲットアドレスを効果的に変更するため、2)システムから読み出されたキャッシュラインのワース・オブ・インフォメーションが、解凍を実行するメモリコントローラによって解凍されるべきか、あるいはされないべきか決定するため、3)各コンパニオンに対するリクエストが認識され、当該コンパニオンが圧縮されていた場合、システムメモリアクセスを抑制するため、利用することが可能である。上記のそれぞれは、システムメモリへの書き込み及び読み出しに関して、以下においてより十分に説明される。
・システムメモリの書き込み
図5aは、キャッシュラインのワース・オブ・インフォメーションをシステムメモリのブロックに書き込むためのメモリコントローラメソッド551と552のペアを示す。図5aのメソッド551と552のそれぞれは、圧縮マップを呼び出す。第1の方法551によると、メモリコントローラ551によって、圧縮されたキャッシュラインのワース・オブ・インフォメーションが受信される(例えば、プロセッサから送信されるとき)。圧縮されたキャッシュラインのワース・オブ・インフォメーションは、圧縮フォーマットによるものとしてメモリコントローラに特定されることが前提とされている(例えば、アクティブ化されたライン又はコントロールヘッダの設定ビットによって)。圧縮されたキャッシュラインのワース・オブ・インフォメーションの受付により、メモリコントローラは、受け付けたキャッシュラインのワース・オブ・インフォメーションが圧縮されていることを反映させるため、圧縮マップを更新する(502)。図4bの実施例412〜412c又はその変形の何れかが、圧縮マップを実現するのに利用可能である。
図4aを参照するに、更新502を実行するため、メモリコントローラ403aは、圧縮マップキャッシュ413を参照する。受け付けた圧縮されたキャッシュラインのワース・オブ・インフォメーションが関連付けされているシステムメモリブロックと相関する圧縮マップのセクションが、圧縮マップキャッシュ413内に配置されている場合、圧縮マップキャッシュ413のみが更新される(システムメモリ404の圧縮マップ412へのアクセスを回避するため)。圧縮マップの適切な部分が圧縮マップキャッシュ413内に存在しない場合、適切な部分がシステムメモリ404からフェッチされ、更新される(502)。
また、メモリコントローラ403bが圧縮された情報によりキャッシュラインを使用していないプロセッサに接続されている実施例では(図4cに示されるものなど)、1)ボックス501において、圧縮されていないキャッシュラインのワース・オブ・インフォメーションのみが受け付けられ、2)ボックス501と502の間で、メモリコントローラ403bが、受け付けたキャッシュラインのワース・オブ・インフォメーションがそれのコンパニオンにより圧縮可能であると判断し(例えば、メモリコントローラ403bのインバウンド又はアウトバウンドキューにおけるそれのコンパニオンの実質的なコンテンツを参照することによって)、3)ボックス503の実行前に、メモリコントローラ403bが、それのコンパニオンにより受け付けたキャッシュラインのワース・オブ・インフォメーションを圧縮するように、プロセス501は若干変更される。
2つのコンパニオンのキャッシュラインのワース・オブ・インフォメーションは、メインメモリの整列されたアドレススペースのブロックペアに対応することを思い起こされたい。ここで、整列されたブロックペアの組み合わせは、一方のコンパニオンがマクロブロックの「下位半分」を占有し、他方がマクロブロックの「上位半分」を占有する場合、それらがそれぞれ圧縮されていないとき、メモリスペースのより大きな「マクロブロック」としてみなすことができる。当該コンパニオンが圧縮されると、マクロブロック全体の実質的なコンテンツは、より小さなコンパニオンブロックの1つのみに用いられるアドレッシング情報により参照可能である(例えば、マクロブロックの下位半分に用いられるアドレッシング情報など)。圧縮されていないとき、マクロブロックの上位及び下位半分は、別々にアドレス指定可能である。
例えば、図3a及び3bを簡単に参照すると、ブロック305と309の組み合わせは、ブロック305がマクロブロックの「下位半分」に対応し(なぜなら、それがブロック305と309のペアの下位アドレッシングスペースを用いて参照されるため)、ブロック309がマクロブロックの「上位半分」に対応する場合(なぜなら、それはペアブロック305と309の上位のアドレッシングスペースを用いて参照されるため)、情報のマクロブロックとしてみなすことができる。圧縮されていないとき、「下位半分」305は別々にアドレス指定可能であり、「上位半分」309は別々にアドレス指定可能である。圧縮されているとき、両半分の組み合わされたコンテンツは、下位半分305をアドレス指定することによってアクセス可能である。
メモリコントローラは、任意の圧縮されていないキャッシュラインのワース・オブ・インフォメーションについて、それがマクロブロックの何れか半分を占有していると仮定され、それの対応するコンパニオンがマクロブロックの何れか半分は占有していると仮定されるか認識するよう構成されるべきである。例えば、図3b及び4bを簡単に参照すると、メモリコントローラは、上位半分309にアドレス指定される圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、下位半分305にアドレス指定される圧縮されていないキャッシュラインのワース・オブ・インフォメーションのコンパニオンラインとなることを認識するよう構成されるであろう。このような認識は、何れのブロックが互いにコンパニオンであるか規定する整列スキームの数学に基づく直接的なものである。簡単化のため、マクロブロックの下位半分は、以降において下位ブロックと呼ばれ、マクロブロックの上位半分は、上位ブロックと呼ばれる。
2:1の圧縮比について、マクロブロックの上位及び下位ブロックの使用に関して、それの実質的コンテンツが圧縮されるとき、実施例のペアが可能である。図5aを参照するに、「非重複」と呼ばれる第1実施例では、システムメモリに書き込まれる圧縮されたキャッシュラインの情報が、メモリコントローラ又はプロセッサによって圧縮されたか否かに関係なく、圧縮されたキャッシュラインのワース・オブ・インフォメーションの書き込み503は、対応するマクロブロックの下位ブロックのみのアドレススペースへの書き込みに関するものである。図3a及び3bは、当初説明されたように、図3aのブロック305と309が一緒に圧縮されている場合、図3bの下位ブロックのみが書き込まれるため(もちろん、あるいは上位ブロックのみが書き込み可能である)、「非重複」アプローチを示す。
図5bの方法555に関して以下でより詳細に説明されるように、「非重複」アプローチによると、メモリコントローラは、読み出し前に圧縮マップを参照する。なぜなら、下位ブロックに圧縮された上位ブロックに対するリクエストが(例えば、圧縮処理を認識していないシステムコンポーネントによって)、下位ブロックからの読み出しによってのみ満たすことが可能となるためである(すなわち、当該リクエストにおいて指定されるターゲットは、読み出しがリクエストを満たすのに実行されるシステムメモリの位置と異なる)。
「重複」と呼ばれる他の第2の実施例では、圧縮されたキャッシュラインの書き込み503は、適用可能なコンパニオンセットのすべてのブロックのアドレススペースへの書き込みに関する(例えば、2:1圧縮について適応可能なコンパニオンセットの下位と上位両方のブロックなど)。例えば、2:1圧縮アプローチについて、図3aのブロック305及び309が一緒に圧縮される場合、図3bのブロック305と309の両方が、同一の圧縮された情報により書き込みされる。重複アプローチは、メモリコントローラが、上位ブロックの情報に対するリクエストが受け付けられるとき、情報の下位の圧縮されたブロックから情報を抽出する必要を回避することを可能にする(「非重複」実施例に関して上述されるように)。
また、圧縮マップは、「上位」の情報ブロックに対するリクエストについては参照される必要はない。図3bが重複アプローチを反映するよう変更される場合、上位ブロック309は、シェード処理され、さらに、上位ブロック309のコンテンツが下位ブロック305に格納されているものと同一の圧縮されているコンテンツとなることは理解されるであろう。同様に、上位ブロック310は、シェード処理され、さらに、上位ブロック310のコンテンツが、下位ブロック306に格納されているものと同一の圧縮されているコンテンツとなることが理解されるであろう。
図5aの第2のメモリコントローラの書き込み方法552では、圧縮されていないキャッシュラインが、圧縮を実行可能なプロセッサから受け付けられる(504)。また、受け付けた圧縮されていないキャッシュラインは、何れの人にとっても「圧縮不可」であるとみなされる。従って、圧縮マップは、更新され(505)(例えば、圧縮されていないキャッシュラインの対応するブロックを表す位置において圧縮マップに「0」を書き込むことによって)、システムメモリに書き込まれる(506)。
書き込み方法552はまた、メモリコントローラが圧縮/解凍を実行するシステムにおける書き込みプロセスを表すよう若干変更することができる(例えば、プロセッサが圧縮をサポートしない図4cに示されるシステムなど)。また、直前の説明と異なり、受け付けられた圧縮されていないキャッシュラインが、圧縮可能か圧縮不可かはわかっていない。このようなケースでは、ボックス504と505の間に、メモリコントローラの圧縮/解凍ロジック416は、受け付けたキャッシュラインが圧縮可能ではないと決定する(例えば、メモリコントローラの入力キュー又は出力キューにおいて見つけられるようなそれのコンパニオンのコンテンツと共にそれのコンテンツを解析することによって)。それが圧縮可能であるとみなされた場合、それはそれのコンパニオンにより圧縮され、書き込み506は圧縮された情報の書き込みとなる。
・システムメモリの読み出し
図5bは、3つのメモリコントローラメソッド553、554及び555を示す。第1の読み出しメソッド実施例553は、図4cに示されるものなど、メモリコントローラがキャッシュラインの圧縮及び解凍を実行し、メモリコントローラが通信するプロセッサが、圧縮された情報をサポートするキャッシュラインを使用しない実施形態に関するものである。また、システムメモリから読み出される(507)何れかのキャッシュラインのワース・オブ・インフォメーションについて、メモリコントローラは、読み出される情報が圧縮されているか確認するため、圧縮マップを参照する(508)(圧縮マップへの参照508は、読み出し(507)後のものとして示されるが、あるいは、読み出し(507)とパラレルに及び/又は読み出し(507)前に実行されてもよいということに留意されたい)。読み出されたキャッシュラインのワース・オブ・インフォメーションが圧縮されている場合、メモリコントローラはそれを解凍する(509,510)。読み出されたキャッシュラインのワース・オブ・インフォメーションが圧縮されていない場合、メモリコントローラは、それを解凍しようとはしない(509,510)。
メモリコントローラが、圧縮されたキャッシュラインのワース・オブ・インフォメーションの存在を認識するコンポーネントを有する計算システムにたまたま存在する場合、メモリコントローラは、圧縮/解凍ロジックなしに実現されてもよい(例えば、図4aの環境は、図4cの環境よりむしろ適用可能である)。そうである場合、メモリコントローラは、実際の解凍を実行するのではなく、読み出された情報が圧縮されているか、あるいは解凍されているか単に表示するため(例えば、キャッシュラインのワース・オブ・インフォメーションに添付されるヘッダ内の値を調整することによって)構成されるべきである。このようなメモリコントローラについて読み出しプロセスを表すため、図5bの方法553のボックス510は、読み出された情報が圧縮されているという表示を提供することに対応すべきであり(例えば、ヘッダ又はアクティブ化されたラインにおいて)、ボックス511は、読み出された情報が圧縮されていないという表示を提供することに対応すべきである。
方法554と555は、圧縮/解凍ロジックを有しないメモリコントローラ又は圧縮/解凍ロジックを有するメモリコントローラによって実行されてもよい。すでに簡単に指摘された第2の読み出し方法554は、すでに読み出された圧縮されたキャッシュラインのワース・オブ・インフォメーションのコンパニオンについて、第2のシステムメモリへの読み出しを生成することを回避するのに「十分スマート」なものとなるよう構成されるメモリコントローラに関する。当該方法によると、メモリコントローラが互いにコンパニオンとなるキャッシュラインのワース・オブ・インフォメーションに対する中断中の読み出しリクエストが存在すると認識する場合、圧縮マップが参照される(512,514)。圧縮マップが、これらのコンパニオンが一緒に圧縮されていることを明らかにする場合、メモリコントローラのみが、両方のリクエストを満足するため、システムメモリから圧縮されたキャッシュラインを読み出す(518)。
圧縮マップが当該コンパニオンが一緒に圧縮されていないことを明らかにする場合、メモリコントローラは、当該リクエストを満足するため、それらの対応する情報の下位及び上位ブロックとは別に両方のキャッシュラインのワース・オブ・インフォメーションを読み出す(2:1の圧縮スキームについて)。互いにコンパニオンとなるキャッシュラインのワース・オブ・インフォメーションに対する中断中の読み出しリクエストが存在しない場合、メモリコントローラは、通常のメモリコントローラと同様に動作し、各リクエストを満たすようにシステムメモリからの別々の読み出しを単に実行する(513)。
「保留中の」リクエストとは、物理的メモリコンポーネントが、当該リクエストを発したメモリコントローラにまだ実際に応答していないことを意味するということに留意することは重要である。しかしながら、物理的メモリコンポーネントがすでに第1のものに応答していたとしても(すなわち、第1リクエストがもはや「保留中」でない)、メモリコントローラが第2のリクエストを止めることは可能である。例えば、メモリコントローラが、第1リクエストの結果から提供可能な(例えば、メモリコントローラから)第2リクエストのデータを提供する圧縮情報に対する第2リクエストを止めるよう構成可能である。従って、リクエストを止める可能性は、図5bの方法554によって説明されたものを超えた状況に拡張可能である。
メモリコントローラが解凍を実行するよう構成されるケースでは、メモリコントローラは、1)方法554が読み出し前に大部分実行され、2)方法553が読み出し後に大部分実行され、3)方法554の読み出し518、517及び513の何れかはまた、方法553と554を一緒に「接続する」ため、読み出し507に対応する場合、読み出しメソッド553と554の両方を一緒に連続的なフローにより実行するようにしてもよい。方法553と554がこのように接続される場合、メモリ読み出し前に圧縮マップ514への参照が行われた場合には、参照508は「スキップ」されてもよい(すなわち、実行されない)ということに留意されたい。これは、方法553が示す照会509への回答が、と以外読み出しが読み出し前に実行される参照514から収集可能となる前に実行されるべきであるためである。
方法555は、図5aに関して上述された「非重複」書き込みアプローチを実現するのに利用可能な書き込み方法に対応する。ここで、圧縮マップは、リクエストされたキャッシュラインのワース・オブ・インフォメーションのターゲットアドレスが、コンパニオンペア519とい521の上位ブロックに対応する場合に参照される。リクエストされたキャッシュラインのワース・オブ・インフォメーションが圧縮されている場合、圧縮されているキャッシュラインが、下位ブロック522と520から読み出される。リクエストされたキャッシュラインのワース・オブ・インフォメーションが圧縮されていない場合、読み出しリクエストにおいて指定されるターゲットブロックから、圧縮されていないリクエストされたキャッシュラインのワース・オブ・インフォメーションが読み出される。読み出しリクエストに指定されたターゲットブロックが上位ブロックでない場合、メモリコントローラは単に、下位ブロック519と520に対応するアドレッシングによって、システムメモリから圧縮されている又は圧縮されていないキャッシュラインのワース・オブ・インフォメーションを読み出す(すなわち、圧縮マップへの参照は不要となる)。
方法554と同様に、方法555は、解凍も実行するメモリコントローラによって実行されるメモリの読み出しのための方法553と合成されてもよい。ここで、メソッド555の読み出し523と520の何れかが、2つの方法555と553を一緒に接続するため、メソッド553の読み出し507としてみなすことが可能である。メソッド555の実行がメモリ読み出し507まえに圧縮マップ参照521を通過する場合、照会509への回答が参照521から収集可能であるため、圧縮マップ参照508をスキップすることができる。図5aに関して説明されるような重複スキームの利用は、ターゲットアドレスの変更が照会522に対する「イエス」の回答によっては有効とされないため、方法555に対する必要性を削除する。
・圧縮マップキャッシュルックアップ
図5cは、図5bに関して上述された圧縮マップ508、514及び521への参照に関する3つの方法556、557及び558を提供する。特に、方法556は、図5bの圧縮マップ参照508、514及び521の何れかを実現するのに利用可能なプロセスのより詳細な図を示す。方法556は、システムメモリに存在する圧縮マップとメモリコントローラの圧縮マップのキャッシュの新規な特徴により適用されたとしても、基本的なキャッシュ/システムメモリ読み出しプロセスに対応する。すなわち、圧縮マップ556を参照するため、メモリコントローラはまず、それのオンボード圧縮マップキャッシュ413を参照する(525)。
圧縮マップキャッシュ413は、システムメモリ404に格納されている圧縮マップ412の全体の一部しか含まないため、キャッシュラインの情報が圧縮マップキャッシュ526に検出される場合(すなわち、「ヒット」)、圧縮マップへの参照は完了される。あるブロックの情報が圧縮マップキャッシュに検出されない場合(すなわち、「ミス」)、当該情報は、システムメモリ526に存在する完全な圧縮マップからフェッチされる(すなわち、システムメモリへの読み出しが実行される)。
圧縮マップミスは、システムメモリの読み出し527が結果として実行されるため、効率性のペナルティに対応する。方法557と558は、対応するメモリの読み出し516〜518、520及び523に先行する図5bの圧縮マップ参照514と521の何れかに対する圧縮マップキャッシュミスに関するタイミングペナルティヒットを軽減するため、メモリコントローラによって実行可能な方法に対応する。方法557と558の何れもが、解凍を実行し(例えば、それは、図4cに示されるような圧縮されたキャッシュラインを使用しないプロセッサと動作するため)、従って、キャッシュラインのすべてのシステムメモリの読み出しについて図5bの方法を実行する。
方法557は、メモリコントローラが、第1のメモリ読み出しリクエストを満たすため、システムメモリからのキャッシュラインのワース・オブ・インフォメーションの読み出し530と重複する期間において、第2のメモリ読み出しリクエストを満たす処理においてメモリ読み出し514と521の前に行われる圧縮マップキャッシュ531への参照を実行するよう構成されてもよいということを示す。すなわち、ある程度の並列性により異なるリクエストのメモリ読み出し530と予めのメモリ読み出しキャッシュルックアップ531を実行することは、キャッシュルックアップ531がミスであるとわかると、タイミングペナルティヒットを軽減するのを助けるべきである。ここで、メモリ読み出しとキャッシュルックアップとの間の時間的な重複の程度は(部分的又はそうでないものなど)、実現形態に応じて可変とされてもよい。
パイプライメモリコントローラとシステムメモリの特定のケースでは(複数のシステムメモリ読み出しリクエストをパラレルにサービス可能とするため)、第1リクエストをサービスルするためのキャッシュラインのワース・オブ・インフォメーション530の読み出しは、圧縮マップルックアップ531がミスとなる場合に必要とされる圧縮マップ情報532の読み出しとパラレルに継続されてもよい。方法557は、フローチャート形式(ラベル530、531及び532におけるサブスクリプト「1」)とガントチャート形式(ラベル530、531及び532におけるサブスクリプト「2」)の両方においてこのような状況を示す。
方法558は、図5aに関して上述された「非重複」した実施例に適用可能である。それは、参照514と520の実行におけるキャッシュミスのケースにおいて、予測が利用可能であり(「圧縮」又は「非圧縮」)、解凍が必要かチェックするために圧縮マップ508の以降の参照が、当該予測の有効性をチェックするのに利用されることを示す。方法558に従って、キャッシュルックアップがミス532となる場合、リクエストされたキャッシュラインの状態が、圧縮又は非圧縮であると予測される。第1実施例では、状態は控えめに圧縮されていないと予測される。他の実施例では、圧縮マップのコンテンツの最近の履歴が、圧縮状態又は非圧縮状態を予測するための基礎として利用される。その後、キャッシュラインが、当該予測に従ってフェッチされる。
例えば、リクエストされたキャッシュラインのワース・オブ・インフォメーションが上位ブロックに対応し、圧縮状態にあると予測される場合、キャッシュラインのワース・オブ・インフォメーションは、下位ブロックのアドレスから読み出される(533)。他方、キャッシュラインのワース・オブ・インフォメーションの予測された状態が非圧縮である場合、キャッシュラインのワース・オブ・インフォメーションは、上位ブロックのアドレスから読み出される(533)。その後、圧縮マップの適切な部分がシステムメモリ534からフェッチされる(ミス532は、圧縮マップが適用可能なキャッシュラインのワース・オブ・インフォメーションの情報を含んでいないことを示すため)。その後、適切な圧縮マップ情報が、予測が正しかったか確認するためチェックされる(535)。正しかった場合、残りの読み出しリクエストプロセスが実行される。さらなる実施例では、他のリクエストの圧縮マップキャッシュ更新が、照会532の実行後、ボックス534の実行前におこなわれるようにしてもよい。そうである場合、ボックス534は、代わりに圧縮マップへの「リルック(re−look)」に対応するようにしてもよく、ヒットの場合、圧縮マップ情報のシステムメモリへのフェッチが一緒に排除される。
・メモリコントローラの実施例
図6a〜6cは、各メモリコントローラの実施例603が、圧縮マップキャッシュ613a、613b及び613cを含む様々なメモリコントローラの実施例603a、603b及び603cを示している。実施例613aは、圧縮又は解凍ロジック回路を有しない。実施例613bは、解凍回路616bを有する。実施例613cは、圧縮ロジック回路616dと、解凍ロジック回路616cとを有する。各実施例613a、603b及び603cについて、バス/ポイント・ツー・ポイントリンクインタフェース601は、1)メモリ読み出し及びメモリ書き込みに対するリクエストが受け付けられ、2)当該リクエストに対するレスポンスが与えられるメモリコントローラのインタフェースに対応する。リクエストはバス(フロントサイドマルチドロップバスなど)を介し受け付け及びレスポンスされ、及び/又はポイント・ツー・ポイントリンク(リクエストを受け付ける第1インバウンドリンクト、レスポンスを送信する第2アウトバウンドリンクなど)を介し受け付け及びレスポンスされるため、インタフェース601は、バス及び/又はポイント・ツー・ポイントリンクとのインタフェースであってもよい。
各実施例603a、603b及び603cのリクエスト/レスポンスキュー602は、インバウンド方法にリクエストをキュー処理する(例えば、第1のリクエストキューに)。各実施例603a、603b及び603cのスケジューラロジック回路623は、これらのリクエストのサービス提供をスケジューリングする。各実施例603a、603b及び603cのメモリリクエストキュー604は、スケジューラロジック回路623によってスケジューリングされたリクエストをキュー処理する。各実施例603a、603b及び603cのメモリインタフェース605は、メモリコントローラが接続される特定のタイプのメモリに対して情報の読み書きを行う。各実施例603a、603b及び603cのリクエスト/レスポンスキュー602はまた、リクエストに対するレスポンスをアウトバウンド方向にキュー処理する(例えば、第2のレスポンスキューに)。
各種実施例では、上述の更新又は参照502、505、514及び521は、スケジューラロジック回路によって(又は他の適切な位置から)実行されてもよい。各実施例603a、603b及び603cについて、圧縮マップキャッシュ613への入力612は、第1の例では、外部メモリから圧縮マップに圧縮マップ情報を供給する入力としてみなすことができる(圧縮マップキャッシュミスの場合など)。さらに、入力612は、システムメモリからのキャッシュラインのワース・オブ・インフォメーションの読み出しに関して実行される圧縮マップ情報への参照としてみなすことができる。
ここで、図5bの方法553の上記説明から、例えば、実施例603bと603cが適用するなど、メモリコントローラが解凍を実行可能である場合、圧縮マップが参照される(508)ということを思い起こされたい。読み出されたデータが圧縮されている場合、マルチプレクサ618は、解凍ロジック回路616bと616cの出力を選択する(解凍ロジック回路への入力が、メモリインタフェース605bと605cのデータパス出力に従っているということに留意して)。読み出されたデータが圧縮されていない場合、マルチプレクサは、解凍ロジック回路が当該方法に従って呼び出されることなく、メモリインタフェース605bと605cからのデータパスを選択する。
図6cは、圧縮ロジック回路616dと解凍ロジック回路616cを含む実施例を示す。メモリリクエストキュー604cに接続された圧縮ロジック回路616dが示される。また、メモリリクエストキュー604cにおいて観察(又は参照)される何れかの圧縮可能なコンパニオンラインのワース・オブ・インフォメーションが、システムメモリへの書き込み前に一緒に圧縮することが可能である。ライン617は、さらにシステムメモリへの書き込みを待機する何れらのキャッシュラインのワース・オブ・インフォメーションが、それのコンパニオンがリクエストキュー又はレスポンスキューに配置(又は参照)されたとしても、それのコンパニオンにより圧縮されてもよい。さらに、又はその代わりに、圧縮ロジック回路は、リクエスト/レスポンスキュー602bと603cに接続されてもよい。
・マルチプロセッサシステム及びキャッシュコヒーレンシルール
マルチプロセッサシステム
図7は、複数のキャッシュラインのワース・オブ・データの1つのキャッシュラインへの圧縮を容易にするよう調整されるマルチプロセッサ計算システムのアーキテクチャを示す。圧縮されたキャッシュラインのワース・オブ・データを送受信可能であり、圧縮マップ情報を維持するメモリコントローラは(図4aに上述されるような)、図7に開示される特定のマルチプロセッサアーキテクチャに一体化されるようにしてもよい。図7のアプローチによると、圧縮/解凍ロジック707と707は、計算システム内において圧縮が命令/データ要素の異なるタイプの転送中に適用可能となるように、計算サブシステム711と711の「ハブ」710と710の内部に配置される。圧縮を利用する一例となる計算システムの転送がさらに、図8a〜8cに関して以下でさらに説明される。
処理コア(処理コア701など)は、命令を実行するためのロジック回路としてみなされ、プロセッサ(プロセッサ716など)は、処理コア(処理コア701など)と、圧縮/解凍ハブ(ハブ710など)と、キャッシュコントローラ(キャッシュコントローラ705とを有する回路としてみなされる。図に関係なく、プロセッサ又はCPU(Central Processing Unit)は、典型的には、処理コアと、少なくとも1つのキャッシュを制御するキャッシュコントローラ回路とを有する(キャッシュを有するシステムでは)。図7の図は、圧縮/解凍ハブがプロセッサの一部となることを仮定している。しかしながら、他の図は、ハブ又はそれの構成部分の何れかをプロセッサと独立したコンポーネントとしてみなすよう選択するかもしれない。
図8aは、1)処理コア(処理コア701など)からの圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、それがキャッシュ(キャッシュ702など)にわたされるとき、それのコンパニオンにより圧縮され(801)、2)処理コア(処理コア701など)又はキャッシュ(キャッシュ702など)からの圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、それがシステムメモリ(システムメモリ704など)にわたされるとき、圧縮されてもよく(802)、3)処理コア(処理コア701)又はキャッシュ(キャッシュ702など)からの圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、それが他の計算サブシステム(計算システム711など)にわたされるとき、圧縮されてもよい(803)ということを示す。
上記第2のケースの例として、圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、キャッシュコントローラ705から圧縮/解凍ハブ710を介し、その後、圧縮/解凍ハブ710を介しシステムメモリコントローラ703にわたされるように(それが、システムメモリ704に書き込み可能となるように)、キャッシュ702からイビクトされる場合、圧縮されていないイビクトされたキャッシュラインのワース・オブ・インフォメーションは、圧縮/解凍ハブ710がそれのコンパニオンにアクセスする場合、それのコンパニオンにより圧縮され(802)、キャッシュラインのペアのワース・オブ・インフォメーションが、1つのキャッシュラインのワース・オブ・インフォメーションに圧縮することができる。
上記第3のケースの例として、圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、キャッシュ702からイビクトされ、システムメモリ704ではなくシステムメモリ704に格納される場合(キャッシュコントローラ705から圧縮/解凍ハブ710と710を介しシステムメモリコントローラ703にわたされるように)、計算サブシステム711から計算サブシステム711への転送が行われる。ここで、イビクトされたキャッシュラインのワース・オブ・インフォメーションが、ハブ710又は710において圧縮されるかもしれない(再び、ハブがイビクトされたキャッシュラインのコンパニオンにアクセスし、これら2つが圧縮可能である場合)。何れかのケースでは、イビクトされたキャッシュラインのワース・オブ・インフォメーションは、計算サブシステム711と711との間のそれの転送の一部として圧縮されるとみなされる。従って、図8aに示されるように、イビクトされたキャッシュラインのワース・オブ・インフォメーションは、それの対応する計算ユニットのシステムメモリ802への転送の一部として圧縮されてもよく、あるいは、それの計算サブシステム803の外部への転送の一部として圧縮されてもよい。
図7に観察される計算システムでは、各圧縮/解凍ハブは、圧縮/解凍ロジック回路707と707と、コンパニオンが圧縮されるのを可能にするため、非圧縮及び圧縮されたコンパニオンペアが同一の圧縮/解凍ハブに同時に存在することを希望して、それが直近に受信したキャッシュラインのワース・オブ・インフォメーションを一時的にキュー処理するバッファ712と712とを有する。
図8bは、同様に、システムメモリから読み出された圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、圧縮/解凍ハブを介しその途中でそれが存在する計算サブシステムのキャッシュ804又は他の計算サブシステム805にわたされるとき、それのコンパニオンにより圧縮可能であるということを示す。例えば、システムメモリ704から読み出された圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、キャッシュ702の途中で圧縮/解凍ハブ710によりそれのコンパニオンにより圧縮されてもよく、あるいは、計算サブシステム711から計算サブシステム711へのそれの転送の一部として、圧縮/解凍ハブ710と710の何れかによって圧縮されてもよい。
図8cは、I/Oコンポーネント(磁気ディスク格納ユニット又はネットワークインタフェースなど)から送信される圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、キャッシュ806、システムメモリ807又は他の計算サブシステム808の途中でそれのコンパニオンにより圧縮可能であることを示す(特定のシステムメモリブロックが、それのコンパニオンが認識可能となるように、I/Oユニットからの情報に関連付けされるべきであるということに留意して)。例えば、I/Oインタフェース708において受信されるキャッシュラインのワース・オブ・インフォメーションは、キャッシュ702、システムメモリ704又は計算サブシステム711の途中で圧縮/解凍ハブ710によってそれの対応するコンパニオンにより圧縮されてもよい。
計算サブシステム711と711はまた、通信可能に接続される。ここで、これらのサブシステムを互いに接続するのに利用される構成709は、双方向ポイント・ツー・ポイントリンク、反対方向の一方向ポイント・ツー・ポイントリンクのペア又はバスとして実現されてもよい。より多くの計算サブシステムが、計算サブシステムの各ペア間に他の通信構成を単に追加することによって追加することが可能である。I/Oインタフェース708と708の何れかなどのI/Oインタフェースが、I/Oコンポーネントに接続されるバス又はポイント・ツー・ポイントリンクにより実現されてもよい。複数のI/Oコンポーネントが、何れか1つの圧縮/解凍ハブに接続されてもよい。
システム処理の経路を介し、圧縮及び非圧縮キャッシュラインのワース・オブ・インフォメーションが、両方のタイプの情報(すなわち、圧縮されている情報と圧縮されていない情報)を受け付け可能な上記システムコンポーネントにインタフェースを介しわたされ、圧縮されていないキャッシュラインのワース・オブ・インフォメーションのみが、圧縮されていない情報を受付することのみ可能な上記システムコンポーネントにわたされる。例えば、処理コア701、701及びI/Oコンポーネント(図7には図示せず)が圧縮されていないキャッシュラインのワース・オブ・インフォメーションを受け付ける(及び協調する)ことのみ可能な実現形態を検討する。
この場合、圧縮されていないキャッシュラインのワース・オブ・インフォメーションのみが、処理コア及びI/Oユニットにわたされる。キャッシュ7021,2、キャッシュコントローラ7051,2、システムメモリコントローラ7031,2及びシステムメモリ7041,2がそれぞれ非圧縮及び圧縮キャッシュラインのワース・オブ・インフォメーションを受け付け可能であると仮定すると、非圧縮及び圧縮キャッシュラインのワース・オブ・インフォメーションが、これらの装置にわたされる。ここで、圧縮又は非圧縮情報の何れかを受け付け可能なシステムコンポーネントに少なくとも送信される各キャッシュラインのワース・オブ・インフォメーションについて、あるタイプの識別子がそれが圧縮されているか否かを特定するためそれに関連付けされるであろう。
基本的な実施例によると、システムに送信中のキャッシュラインのワース・オブ・インフォメーションには、当該キャッシュラインのワース・オブ・インフォメーションが「圧縮されているか」又は「圧縮されていないか」特定するヘッダ情報が添付されている(例えば、圧縮されている場合にはアクティブに設定され、又は圧縮されていない場合には非アクティブに設定されているヘッダ内のビット、又はヘッダ情報の一部の特別な符号化など)。キャッシュラインのワース・オブ・インフォメーションがシステムの基本的なコンポーネント(例えば、キャッシュ、キャッシュコントローラ、メモリコントローラ、圧縮/解凍ハブなど)の内部にある間には、それはバッファ/キュー処理又は格納される傾向にある。キャッシュラインのワース・オブ・インフォメーションがバッファ/キュー処理又は格納されている間には、キャッシュラインのワース・オブ・インフォメーションが「圧縮されている」か、又は「圧縮されていない」か特定するため、ビット又は符号化された値が設定されてもよい。
当該ビット又は符号化された値は、キュー処理又は格納されている間、キャッシュラインのワース・オブ・インフォメーションに添付されるヘッダの一部であってもよく、あるいは、それの格納又はバッファ/キュー位置に参照されるようにしてもよい。一実施例では、当該ビット又は符号化された値は、誤り訂正符号(ECC)フィールド(典型的には、情報グループ(ヘッダ情報の一部としてなど)に「従う」)に配置される。他のECCフィールドのアプリケーションでは、システムメモリのECCフィールドは、圧縮マップへの「バックアップ」として利用される。ここで各種実施例では、ECC情報はシステムメモリにすべてのデータと共に格納される。
おそらく、より効果的な圧縮への参照は、システムメモリに格納されている特定のキャッシュラインのワース・オブ・インフォメーション(部分的に又は全体的に)適用可能なECCフィールド内に、特定のキャッシュラインのワース・オブ・インフォメーションが「圧縮されている」か、又は「圧縮されていない」かについて記録することによって、完全に回避することが可能である(例えば、方法553の参照508など)。ここでは、単にメモリから当該情報及びそれに関連するECC情報を読み出す場合、キャッシュラインのワース・オブ・インフォメーションの状態(圧縮されているか、又は圧縮されていないか)が利用可能である。これは、圧縮マップのキャッシュミスをサービスするためのさらなる遅延が回避されるという点において、対応するデータの読み出しフェッチが完了するまでに、まだサービスが完了していない圧縮マップキャッシュへのミスが存在するとき、特に効果的である。
図9は、圧縮/解凍ハブ910の「データパス」構成の実施例を示す。図9の実施例は、圧縮された情報901を送受信しないシステムコンポーネント通信するインタフェースと、圧縮された情報と圧縮されていない情報902の両方を送受信可能なシステムコンポーネントと通信するインタフェースに分割されたものとみなすことができる。例えば、(処理コア701と701及びI/Oコンポーネント(図7には図示せず)は受信(協調)することしか可能ではない実現形態)図9のハブ構成が図7のハブ710に対応する直前に接続された例と整合して、インタフェース901が、計算サブシステム711が接続されるI/Oコンポーネント及び処理コア701と通信するのに利用される(例えば、リンク又はバス914はリンク又はバス714に対応し、又はリンク又はバス908はリンク又はバス708に対応する)。同様に、1)計算サブシステム711、2)キャッシュコントローラ705、及び3)システムメモリコントローラ703と通信するため、インタフェース902が利用される(例えば、リンク又はバス909はリンク又はバス709に対応し、リンク又はバス913はリンク又はバス713に対応し、リンク又はバス917はリンク又はバス717に対応する)。
図9のデータパス構成によると、何れかのシステムコンポーネントソースから送信され、圧縮されたキャッシュラインのワース・オブ・インフォメーションを受け付け可能なシステムコンポーネントターゲットに送信される受け付けられた圧縮されていないキャッシュラインのワース・オブ・インフォメーションがバッファ912に入力される(図7のバッファ712に対応するものとして具体例としてみなすことが可能である)。圧縮されていないキャッシュラインのワース・オブ・インフォメーションとのコンパニオンがまた、バッファ912内の圧縮されていないキャッシュラインのワース・オブ・インフォメーションの保留中にバッファ912にたまたま存在し、コンパニオンが互いに圧縮可能である場合、それらは圧縮ロジック回路907aによって共に圧縮される。
コンパニオンがバッファ912内の圧縮されていないキャッシュラインのワース・オブ・インフォメーションの保留中にバッファ912において観察されない場合、圧縮ロジック回路がデータパス920によりバイパスされる。圧縮が実行されるか否かに応じて、マルチプレクサ905の何れのチャネルが選択されるか決定する。マルチプレクサ905から転送されると、圧縮された又は圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、インタフェース902に転送され、適切なターゲットシステムコンポーネントに送信される。再び、上述のプロセスでは、当初受け付けられた圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、圧縮された情報を送信する又は送信しないソースから受け付けられてもよい。前者のケースでは、データパス922aが使用される。後者のケースでは、データパス921が使用される。ターゲットシステムコンポーネントが圧縮されている又は圧縮されていない情報を受け付け可能であるとき、インタフェース902が、ハブ910からの排出ポイントとして利用される。
また、図9のデータパス構成に従って、圧縮されたキャッシュラインのワース・オブ・インフォメーションを送信可能なシステムコンポーネントソースから送信され(すなわち、インタフェース902において受信される)、圧縮されたキャッシュラインのワース・オブ・インフォメーションを受け付け不可なシステムコンポーネントターゲットに送信される(すなわち、インタフェース901から送信される)受け付けたキャッシュラインのワース・オブ・インフォメーションが、それが圧縮されているか否か確認するためチェックされる。圧縮されている場合、圧縮されているキャッシュラインのワース・オブ・インフォメーションは、データパス922bを介し解凍ロジック回路907bに送信され、解凍される。
圧縮されていない場合、圧縮されていないキャッシュラインのワース・オブ・インフォメーションは、データパス922cを介しわたされるように解凍ロジック回路907bにバイパスされる。解凍が行われる場合、解凍ロジック回路907bからの結果として得られる圧縮されていないキャッシュラインのワース・オブ・インフォメーションは、インタフェース901を介しターゲットシステムコンポーネントに転送される。解凍が行われていない場合、当初受け付けた圧縮されていないキャッシュラインのワース・オブ・インフォメーションは、インタフェース901を介しターゲットシステムコンポーネントに転送される。圧縮が行われている否かに応じて、マルチプレクサ906の何れのチャネルが選択されるか決定される。
図7に戻って、実現形態に応じて、キャッシュコントローラ705及び/又はメモリコントローラ703はまた、圧縮及び解凍を実行するための自らのロジック回路を有するものであってもよく、又はそうでなくてもよい。キャッシュラインのワース・オブ・インフォメーションのターゲットシステムコンポーネントが、圧縮回路を有しないシステムメモリコントローラ又はキャッシュコントローラである状況について、ハブの圧縮論理ロジック回路(図9の圧縮ロジック回路907aなど)は、それがキャッシュ又はシステムメモリにそれぞれ格納される前に、情報を圧縮するのに利用可能である。
この場合、キャッシュ又はシステムメモリに圧縮形式によりキャッシュラインのワース・オブ・インフォメーションを格納する可能性を向上させるため、対応するキャッシュ又はシステムメモリに書き込みを行うため、キャッシュコントローラ又はシステムメモリコントローラに送信されたキャッシュラインのワース・オブ・インフォメーションのコピーが、ある期間バッファ912に「保持される」。また、キャッシュラインのワース・オブ・インフォメーションへのコンパニオンが、1)キャッシュラインのワース・オブ・インフォメーションのコピーが、バッファ912と区別される前に、当該コンパニオンがバッファ912に出現し、2)それへの書き込みのため、コンパニオンが同一のキャッシュ又はシステムメモリコンポーネントに送信され、3)コンパニオンがキャッシュラインのワース・オブ・インフォメーションにより圧縮可能である場合、圧縮ロジック回路907aによるキャッシュラインのワース・オブ・インフォメーションのコピーと、キャッシュ又はシステムメモリに格納されている圧縮結果により圧縮することが可能である。
さらに、圧縮されていないキャッシュラインのワース・オブ・インフォメーションのソースシステムコンポーネントが、圧縮回路を有しないシステムメモリコントローラ又はキャッシュコントローラである状況について(すなわち、圧縮されていないキャッシュラインのワース・オブ・インフォメーションが、圧縮回路を有しない対応するコントローラを有するシステムメモリ又はキャッシュから読み出される)、圧縮されていないキャッシュラインのワース・オブ・インフォメーションとのコンパニオンがまた、ソースキャッシュ又はシステムメモリから読み出されてもよく、読み出された圧縮されていないキャッシュラインのワース・オブ・インフォメーションとそれの読み出されたコンパニオンの両方が、バッファ912に格納される。それらが圧縮可能である場合、それらはその後に圧縮ロジック回路907aによって圧縮される。それらが圧縮可能でない場合、圧縮されていないキャッシュラインのワース・オブ・インフォメーションは、圧縮ロジック回路907aをバイパスし、当該コンパニオンがバッファ912から消去される。さらなる実施例では、コンパニオンの読み出しは実行されず、圧縮されていないキャッシュラインのワース・オブ・インフォメーションのターゲットが、圧縮された情報を受け付けないターゲットである場合、圧縮の可能性は利用されない。
上述の圧縮方法(「バッファへのコピーの保持」、「コンパニオンの読み出し」)が、圧縮回路を有しないメモリコントローラ及び/又はキャッシュコントローラを有するシステムにおいて利用可能であったとしても、これら同一の方法が、圧縮回路を有するメモリコントローラ及び/又はキャッシュコントローラを有するシステムにおいて利用可能であるということは想定することができる。そうすることによってパフォーマンスの効果はほとんど得られないと仮定すると、しかしながら、これらの方法は、キャッシュコントローラ及び/又はメモリコントローラが実際には圧縮回路を有する場合には、システムの能力から「低下される」かもしれない。さらに、各種実施例では、その対応するキャッシュ及び/又はシステムメモリコンポーネントに圧縮された情報を格納可能なメモリコントローラ及び/又はキャッシュコンとr−らは。圧縮されたキャッシュラインへの新たな情報の「書き込み」が、圧縮されたキャッシュラインをもはや圧縮可能にしない状況に対処するため、解凍回路及びサポート回路を有するよう構成される。
システムメモリコントローラの実現形態に関して、様々なマルチプロセッサシステムの実施例では、システムメモリコントローラコンポーネントは、図4a〜6cに関して上述された実施例など、圧縮マップ情報をシステムメモリに格納する従来のものではないメモリコントローラである。しかしながら、圧縮マップが実現される方法は、各種形態を取りうる。例えば、第1のアプローチによると(「集中化アプローチ」と呼ばれる)、システム全体の圧縮マップは、単一の情報本体としてみなされ、第2アプローチでは(「分散化アプローチ」と呼ばれる)、メモリマップはシステム全体の圧縮マップにまとまって対応する個別のものとしてみなされる。マルチプロセッサの集中化された圧縮マップ環境では、プロセッサ自体のキャッシュは、圧縮マップの「キャッシュされた部分」を格納するのに利用可能である(また、圧縮マップキャッシュは、所望の場合には、メモリコントローラから一緒に消去されてもよい)。
さらに、従来のマルチプロセッサキャッシュコヒーレンシ技術(各キャッシュライン及びプロセッサ/バス間のエージェント通信要求について、特定のMESI状態を規定するルールなど)が、圧縮マップのキャッシュされた部分のコンテンツを管理するだけでなく、それに行われた変更を通信するのに利用可能である。典型的には、マルチプロセッサシステムの各プロセッサについて、メモリコントローラとそれ自身の関連するシステムメモリリソースが存在する。また、マルチプロセッサ集中化アプローチにおける圧縮マップ情報は、システム内の異なるシステムメモリリソースに格納されてもよく、圧縮マップ情報は、システム内の何れのシステムメモリが、圧縮マップが圧縮又は非圧縮されていると認識するシステムメモリの特定ブロックに関するかさらに特定するため、図4bの実施例412aと412bから拡張されるべきである。
マルチプロセッサ分散化圧縮マップ環境では、システム内の各メモリコントローラは、圧縮マップの一部を維持するよう構成可能である。ここで、各コントローラの圧縮マップは、アクセスを制御するためのシステムメモリリソースの各種ブロックの圧縮/解凍状態を特定する。従って、圧縮マップ実施例412aと412bは、分散化アプローチに適している。さらに、圧縮マップのキャッシュ部分がプロセッサのキャッシュに格納されていない場合、メモリコントローラは、圧縮マップキャッシュを有するよう構成されてもよい。
図10は、圧縮されているキャッシュラインのワース・オブ・インフォメーションと圧縮されていないキャッシュラインのワース・オブ・インフォメーションの両方を格納可能なキャッシュからのキャッシュラインのワース・オブ・インフォメーションを参照するのに使用されるアドレスビットのマップの実施例を示す。下位ビット1000は、キャッシュライン内のバイトオフセットを決定する。次に最も下位のビット1001は、1)圧縮されたキャッシュラインエントリの場合、一緒に圧縮されたコンパニオンから選択するため、又は2)圧縮されていないキャッシュラインエントリの場合、キャッシュタグの一部として利用される。次に最も下位のビット1002は、キャッシュにおける設定を選択する設定ビットである。最後に、アドレスの上位ビット1003は、タグビットを指定する。
圧縮された情報を保持する構成へのスヌープ(snoop)は、キャッシュ内のオフセットを考慮しないものとして決定するアドレスビット100の直前のビットを処理し、これにより、圧縮されているマクロブロックの上位半分又は下位半分についてマッチングする。例えば、ラインサイズが74バイトであり(従って、ビット0〜7がオフセット1000について使用される)、2:1の圧縮が利用される場合、ビット9(図10は、選択ビット10001として示す)は、圧縮された情報により特定のキャッシュラインを選択する。所望のアドレスと格納されているブロックとの間の比較は、ビット9を無視するであろう。4:1の圧縮が代わりに使用される場合、ビット9と10は無視される。
キャッシュコヒーレンシルール
使用されるマルチプロセッサアーキテクチャ環境の正確なタイプに関係なく、キャッシュコヒーレンシルールが使用されるべきである。複数のプロセッサがそれらが共有するデータを変更することが可能であるとき、最も「直近の」データを追跡することが重要であり、そうでない場合には、プロセッサは偶然に「ステール(stale)」情報により動作するかもしれない。キャッシュコヒーレンシルールを実現することによって、マルチプロセッサ環境内のプロセッサは、計算システム内のデータ要素の状態を互いに協力して通知し、それらに適切に反応する。図7は、以下で説明されるようなキャッシュコヒーレンシルールを実現するためのロジック回路(ロジックゲートを有する回路など)を含む各圧縮/解凍ハブ710と710に関するキャッシュコヒーレンシルールロジック715と715を示す。キャッシュコヒーレンシルールロジックが圧縮は部の一部であるか否かは、実施例毎に可変とされる。キャッシュコヒーレンシルールロジックは、適用可能なキャッシュコヒーレンシルールが有効化できるように、ある方法によりそれのプロセッサの対応するプロセッサに接続されるべきである(そうでない場合、対応するプロセッサの外部インタフェースも(圧縮/解凍ハブなど)。
MESI(Modified,Exclusive,Shared,Invalid)と呼ばれるキャッシュコヒーレンシをサポートするための周知の状態セットは、キャッシュライン内の情報に適用可能な4つの可能な状態を記述する。Modified状態(M)は、キャッシュラインのコンテンツが、システムメモリ内の対応するブロックのコンテンツとは異なることを意味する。Exclusive状態(E)は、キャッシュラインのコンテンツが、システム内の1つのキャッシュからのみ利用可能であることを意味する。Shared状態(S)は、キャッシュラインのコンテンツが、システムの他のキャッシュに存在するかもしれないことを意味する。Invalid(I)とラベル付けされたキャッシュラインのコンテンツは、それのコンテンツが潜在的にストールであり、利用可能でないとみなされるべきであることを意味する。
一般に、プロセッサが動作すると、それらは対応するキャッシュラインのコンテンツを変更し、次に、当該コンテンツの状態を変更させるかもしれない。従って。キャッシュコヒーレンシルールは、特定の状態の割当てに関するだけでなく、キャッシュライン状態が、それのコンテンツにより実行される動作に応じてどのように変更するか規定する状態遷移を規定する。図11〜14は、キャッシュラインレベルにおける圧縮を有するマルチプロセッサ計算システムにおいて利用可能なあるキャッシュコヒーレンシ状態遷移を説明する。ここで、圧縮されたキャッシュラインのワース・オブ・インフォメーションには、M、E、S又はI状態の何れかが与えられることが理解されるべきである。
図11は、圧縮されたキャッシュラインのワース・オブ・インフォメーションが新たな情報により書き込まれる状況の状態遷移テーブルの実施例を示し、キャッシュラインのワース・オブ・インフォメーションは、それの圧縮された状態を維持することが可能である(すなわち、新たに書き込まれた情報が、コンテンツに圧縮不可とみなさなかった)。図11の状態遷移テーブルに従って、コンテンツが圧縮されたままとすることを可能にする圧縮されたキャッシュラインのコンテンツの変更は、それが以前にあった状態に関係なく(例えば、M、E、S又はI)、Modified状態(M)に圧縮されたキャッシュラインに到達させる。
図12は、圧縮されたキャッシュラインのワース・オブ・インフォメーションが新たな情報により書き込みされるが、当該キャッシュがそれの圧縮された状態を維持することができない(すなわち、新たに書き込まれた情報は、コンテンツをそれを構成するコンパニオンのキャッシュラインのワース・オブ・インフォメーションに分割する)状況の状態遷移テーブルの実施例を示す。図12の状態遷移テーブルによると、再び、元の圧縮されたキャッシュラインのワース・オブ・インフォメーションの状態とは関係なく(すなわち、X=「考慮しない」)、生成される2つのコンパニオンは、初期的にはModified(M)状態におかれる。
図13は、単一のコンパニオンラインのペアが、単一の圧縮されたキャッシュラインを一緒になって構成するよう圧縮されるときに利用される状態遷移テーブルの実施例を示す。ここで、第1及び第2コンパニオンがすでにキャッシュに存在し、コンパニオンのペアを圧縮可能とみなされるようにするキャッシュラインの1つのコンテンツに変更が書き込まれると仮定する。ここで、書き込まれるキャッシュラインのコンテンツへのコンパニオンの状態がM又はS状態にある場合、結果として生成される圧縮されたキャッシュラインのワース・オブ・インフォメーションは、M状態におかれる。書き込み前のコンパニオンの状態がS状態である場合、S状態のコンパニオンに関してRFO(Request For Ownership)が成功しなければ、圧縮は行われるべきでない。すなわち、他のエンティティが何を利用しても、コンパニオンの状態はそれを変更するそれの可能性を「放棄する」ことを可能にする(例えば、それをS状態にするため)。
図14は、コンパニオンラインのペアが1つの圧縮されたキャッシュラインのワース・オブ・インフォメーションを構成するよう圧縮されるときに使用される状態遷移テーブルの他の実施例を示す。ここで、1)キャッシュラインのワース・オブ・インフォメーションが、フェッチされたキャッシュラインのワース・オブ・インフォメーションがフェッチされたキャッシュにすでに存在するコンパニオンを有する外部リソースからフェッチされ(例えば、他の計算ユニットからのキャッシュ又はシステムメモリなど)、及び2)コンパニオンペアが圧縮可能であるということが仮定される。図14の状態遷移テーブルに従って、コンパニオンが読み出し前にいる状態に関係なく(すなわち、X=「考慮せず」)、圧縮されたキャッシュラインのワース・オブ・インフォメーションの状態はMである。また、M状態のコンパニオンについて、それについてのRFOが成功しない場合、圧縮は行われるべきではないということに留意されたい。
図15は、RFOか生じるキャッシュコヒーレンシルールを示す。RFOは、他のプロセッサ(及び/又は計算システム内の他のコンポーネント)に要求元のプロセッサが自らの排他的使用のため特定のアイテムを使用しようとすることを知らせる特定の情報アイテムに対するプロセッサによるリクエストである。従って、図15の方法では、第1プロセッサ1501は、RFOによって自らの排他的使用のため圧縮されたキャッシュラインのワース・オブ・インフォメーションをリクエストする(1501)。これに対して、リクエストされた圧縮されたキャッシュラインのワース・オブ・インフォメーションが、他の(すなわち、第2の)プロセッサに関するキャッシュ内に配置されている場合、第2プロセッサは、圧縮されているキャッシュラインのワース・オブ・インフォメーションを第1プロセッサに転送し、圧縮されているキャッシュラインのワース・オブ・インフォメーションを自らのキャッシュ1502内においてInvalid状態(I)にラベル付けする。
・圧縮/解凍情報のキャッシュ可能性
上述のシステムの実施例が、キャッシュラインのワース・オブ・インフォメーションを圧縮及び解凍することが可能なキャッシュコントローラを使用可能であるため、図16〜20に関する説明は、圧縮/解凍処理が可能なキャッシュコントローラの実施例に関する。図16Aは、従来のキャッシュにおいて実現される一例となるメモリアドレスを示す。従来のキャッシュでは、アドレスは、タグ、セット及びオフセットコンポーネントにより分割される。セットコンポーネントは、ラインセットの1つを選択するのに使用される。同様に、オフセットコンポーネントは、ライン内のバイトを選択するのに使用されるアドレスの下位ビットである。図16Bは、圧縮された情報により動作可能なキャッシュ(以降、「圧縮されたキャッシュ」と呼ぶ)内の検索のために実現されるメモリアドレスの一実施例を示す。図16Bは、情報のコンパニオンラインを同一のセットにマッピングするのに用いられるコンパニオンビットの実現形態を示す。コンパニオンビットは、1ラインの情報が圧縮されないインスタンスにおいて使用される。従って、1ラインの情報が圧縮されていない場合、コンパニオンビットは、2つの圧縮されたコンパニオンラインの情報の何れが利用されるべきか示す。
一実施例では、セット選択に使用されるアドレスビットのウィンドウは、セット選択とバイトオフセットビットとの間にコンパニオンビットが存在するように、1つずつ左にシフトされる。このようにして、コンパニオンビットとセット選択ビットは重複しないため、コンパニオンラインは、同一のキャッシュセットにマッピングする。ここで、実際のタグサイズは拡大しないが、もはやセット選択ビットの一部ではないコンパニオンビットがタグの一部となる。従来の圧縮されていないキャッシュでは、コンパニオンビットはアドレスの一部であり、アドレスが基数又は偶数キャッシュセットにハッシュされるか判断するため、セット選択に利用される。
図17は、圧縮されたキャッシュのタグアレイエントリの一実施例を示す。タグアレイエントリは、コンパニオンビット(アドレスタグビットの一部としてなど)及び圧縮ビットとを有する。圧縮ビットは、圧縮されたキャッシュタグを従来の圧縮されていないキャッシュのタグより大きな1ビットにする。圧縮ビットは、1ラインの情報が圧縮されているか示す。特に、圧縮ビットは、コンパニオンビットの処理方法を特定する。圧縮ビットが1ラインの情報が圧縮されていると示す場合、コンパニオンビットは、当該ラインが圧縮されたペアであるため、オフセットの一部として扱われる。圧縮ビットが非圧縮を示す場合、コンパニオンビットは、タグアレイの一部とみなされ、オフセットの一部として無視される。
図18は、キャッシュコントローラ1804の一実施例を示すブロック図である。キャッシュコントローラ1804は、設定及び方向選択ロジック1810と、バイト選択ロジック1820と、圧縮ロジック1830とを有する。設定及び方向選択ロジック1810は、圧縮されたキャッシュ内のキャッシュラインを選択するのに利用される。図19は、圧縮されたキャッシュにおける設定及び方向選択ロジック1810の一実施例を示す。図19を参照するに、設定及び方向選択ロジック1810は、受け付けたアドレスに基づきキャッシュラインを選択するため、タグアレイから入力を受け付けるタグ比較ロジック1910を有する。タグ比較ロジック1910は、キャッシュラインが圧縮されたデータを保持するか考慮する。
キャッシュラインが可変的なデータサイズを保持することが可能であるため、タグ比較ロジック1910はまた、特定のラインが圧縮されているか否かに応じて可変長となる。従って、タグの一致は圧縮ビットを考慮する。少なくとも2:1により圧縮可能であるとき、各ラインの2つのセクタが、1つの物理的キャッシュラインに格納される(すなわち、1方向に)。圧縮されていないとき、与えられた論理ラインの異なる論理セクタが、異なる方向に同時に格納可能であるため、これが従来のセクタ化されたキャッシュ構成と異なることに留意することが重要である。
図18によると、バイト選択ロジック1820は、1つのライン内のアドレス指定されたデータを選択する。一実施例によると、バイト選択ロジック1820は、圧縮ビットに依存する。図20は、バイト選択ロジック1820の一実施例を示す。バイト選択ロジック1820は、必要に応じて、選択されたキャッシュラインを解凍するデコンプレッサ2010を有する。入力マルチプレクサは、圧縮ビットに応じて、解凍されたキャッシュラインのワース・オブ・インフォメーションと圧縮されていないキャッシュラインのワース・オブ・インフォメーションとの間で選択を行う。一実施例では、オフセットの範囲は、当該ラインの情報が圧縮されているかに依存する。
当該ラインの情報が圧縮されている場合、アドレスのコンパニオンビットは、オフセットの上位ビットとして使用される。当該ラインの情報が圧縮されていない場合、デコンプレッサ2010はバイパスされ、アドレスのコンパニオンビットは、オフセットについては使用されない。選択されたラインは、圧縮されたデータを調整するため、物理的ラインのサイズの2倍のサイズを有するバッファに保持される。他の実施例は、物理的ラインのサイズと同一の長さを有するバッファに格納すべき解凍されたワードの何れか半分を選択するため、コンパニオンビットを使用することを選択するものであってもよい。しかしながら、ライン全体の情報のバッファリングは、キャッシュへの書き込み後にデータを変更及び再圧縮するのに便利である。
圧縮ロジック1830はまた、1ラインの情報が圧縮されるべきときを決定するのに利用されてもよい。一実施例によると、日和見主義的な圧縮が、1ラインの情報が圧縮されるべきときを決定するのに利用される。上述の機構は、設定マッピング関数を変更し、隣接するメモリラインの情報が一緒に圧縮されるのを可能にするように、コンパニオンビットを選択する。これは、空間ロカリティを利用する。
・結びのコメント
本発明の実施例は、半導体チップ内だけでなく、マシーン可読媒体内においてもまた実現可能であるということに留意されたい。例えば、上述の構成は、半導体装置を設計するのに用いられる設計ツールに関するマシーン可読媒体内に格納及び/又は埋め込まれてもよい。例えば、VHSIC VHDL(Hardware Description Language)言語、Verilog言語又はSPICE言語によりフォーマット化された回路記述を含む。いくつかの回路記述の例として、動作レベル記述、RTL(Register Transfer Level)記述、ゲートレベルネットリスト及びトランジスタレベルネットリストがあげられる。マシーン可読媒体はまた、GDS−IIファイルなどのレイアウト情報を有する媒体を含むものであってもよい。さらに、ネットリストファイル又は半導体チップ構成の他のマシーン可読媒体は、上述の教示の方法を実行するため、シミュレーション環境において利用されてもよい。
従って、本発明の実施例は、ある形式の処理コア(コンピュータの中央演算ユニット(CPU)など)により実行されるソフトウェアプログラムとして利用又はサポートするものであってもよく、あるいは、マシーン可読媒体により又はその内部において実現されてもよい。マシーン可読媒体は、マシーン(コンピュータなど)により読み出し可能な形式により情報を格納又は送信するための任意の機構を含む。例えば、マシーン可読媒体は、ROM(Read Only Memory)、RAM(Random Access Memory)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリ装置、電気、光、音響又は他の形式の伝搬信号(搬送波、赤外線信号、デジタル信号など)などを含む。
本明細書において、本発明は、それの具体的な実施例を参照して説明された。しかしながら、添付された請求項に記載されるような本発明のより広範な趣旨及び範囲から逸脱することなく、様々な変更及び改良が可能であるということは、明らかであろう。従って、本明細書及び図面は、限定的な意味ではなく例示的なものとしてみなされるべきである。
図1は、計算システムのアーキテクチャの一部を示す。 図2は、システムメモリからのコンテンツブロックが、1つのキャッシュラインにロードされることを示す。 図3aは、システムメモリコンテンツの整列されたブロックが、1つのキャッシュラインに圧縮可能な改良されたアプローチを示す。 図3bは、圧縮されたキャッシュラインがキャッシュからイビクトされ、システムメモリに格納された後、実質的なシステムメモリのコンテンツの一例となる結果として得られるマップを示す。 図4aは、圧縮されたキャッシュラインを利用可能なシングルプロセッサアーキテクチャの一部を示す。 図4bは、圧縮されたそれのシステムメモリ内のブロックを追跡するため、システムメモリコントローラによって利用可能な圧縮マップを示す。 図4cは、圧縮マップキャッシュ及び圧縮/解凍ロジックを有するメモリコントローラを示す。 図4dは、圧縮マップに対して物理的システムメモリの割当てを特定するレジスタスペースを有するメモリコントローラを示す。 図5aは、キャッシュラインのシステムメモリへの書き込み中、メモリコントローラによって利用可能な2つの方法を示す。 図5bは、キャッシュラインのシステムメモリからの読み出し中、メモリコントローラによって利用可能な3つの方法を示す。 図5cは、圧縮マップのコンテンツの参照に関する3つの方法を示す。 図6aは、メモリコントローラの第1実施例を示す。 図6bは、メモリコントローラの第2実施例を示す。 図6cは、メモリコントローラの第3実施例を示す。 図7は、圧縮されたキャッシュラインのワース・オブ・インフォメーションを利用可能なマルチプロセッサ計算システムを示す。 図8aは、圧縮されたキャッシュラインのワース・オブ・インフォメーションにより動作可能な図7のマルチプロセッサ計算システムなどのマルチプロセッサ計算システム内で行われる圧縮に関する各種転送を示す。 図8bは、圧縮されたキャッシュラインのワース・オブ・インフォメーションにより動作可能な図7のマルチプロセッサ計算システムなどのマルチプロセッサ計算システム内で行われる圧縮に関する各種転送を示す。 図8cは、圧縮されたキャッシュラインのワース・オブ・インフォメーションにより動作可能な図7のマルチプロセッサ計算システムなどのマルチプロセッサ計算システム内で行われる圧縮に関する各種転送を示す。 図9は、圧縮/解凍ハブ内のデータパスについての構成の実施例を示す。 図10は、圧縮されたキャッシュラインのワース・オブ・インフォメーションと圧縮されていないキャッシュラインのワース・オブ・インフォメーションの両方を格納可能なキャッシュからのキャッシュラインのワース・オブ・インフォメーションを参照するのに利用されるアドレスビットのマップの実施例を示す。 図11は、キャッシュコヒーレンシルールの第1セットの実施例を示す。 図12は、キャッシュコヒーレンシルールの第2セットの実施例を示す。 図13は、キャッシュコヒーレンシルールの第3セットの実施例を示す。 図14は、キャッシュコヒーレンシルールの第4セットの実施例を示す。 図15は、圧縮されたキャッシュラインのワース・オブ・インフォメーションのオーナーシップに対するリクエストに関する方法の実施例を示す。 図16aは、キャッシュに実現される従来のメモリアドレスを示す。 図16bは、キャッシュラインのワース・オブ・インフォメーションを圧縮/解凍することが可能なキャッシュにより実現されるメモリアドレスの一実施例を示す。 図17は、キャッシュラインのワース・オブ・インフォメーションを圧縮/解凍可能なキャッシュに対するタグアレイエントリの一実施例を示す。 図18は、キャッシュコントローラの一実施例を示すブロック図である。 図19は、キャッシュラインのワース・オブ・インフォメーションを圧縮/解凍可能なキャッシュにおける設定及び方向選択機構の一実施例を示す。 図20は、バイト選択ロジックの一実施例を示す。

Claims (13)

  1. CPU(Central Processing Unit)コアと、各キャッシュラインが追加的なデータを格納するための圧縮されたキャッシュラインを形成するよう圧縮可能な複数のキャッシュラインを有するキャッシュメモリと、キャッシュコヒーレンシルールロジック回路と、圧縮/解凍ロジックとを有するCPUと、
    前記CPUに接続されるメモリコントローラであって、システムメモリのデータブロックに対応するキャッシュラインが圧縮形式であるかと、圧縮形式により格納される各キャッシュラインのついて用いられる圧縮タイプとを示す圧縮マップを有するメモリコントローラと、
    を有するコンピュータシステム。
  2. 前記キャッシュコヒーレンシルールロジック回路は、少なくとも1つのキャッシュコヒーレンシルールに従ってキャッシュラインのワース・オブ・インフォメーションをラベル付けし、
    前記少なくとも1つのキャッシュコヒーレンシルールは、
    a)前記キャッシュラインのワース・オブ・インフォメーションが、当該圧縮されたキャッシュラインのワース・オブ・インフォメーションが圧縮されたままであることを可能にする新たな情報により書き込まれた圧縮されたキャッシュラインのワース・オブ・インフォメーションである場合、前記圧縮されたキャッシュラインのワース・オブ・インフォメーションをそれの以前の状態に関係なくModified状態に維持することと、
    b)前記キャッシュラインのワース・オブ・インフォメーションが、新たな情報により書き込み後は圧縮されたままとすることができない圧縮されたキャッシュラインのワース・オブ・インフォメーションから得られた圧縮されていないキャッシュラインのワース・オブ・インフォメーションである場合、該圧縮されていないキャッシュラインのワース・オブ・インフォメーションをModified状態であるとしてラベル付けすることと、
    c)前記キャッシュラインのワース・オブ・インフォメーションが、圧縮されていないキャッシュラインのワース・オブ・インフォメーションと該圧縮されていないキャッシュラインのワース・オブ・インフォメーションのコンパニオンとを圧縮することによって生成される圧縮されたキャッシュラインのワース・オブ・インフォメーションである場合、前記圧縮されたキャッシュラインのワース・オブ・インフォメーションをModified状態であるとしてラベル付けすることと、
    から構成されるから選択されることを特徴とする、請求項1記載のコンピュータシステム
  3. 前記圧縮マップは、前記システムメモリにおける整列された各ブロックの状態を提供するビットを含む、請求項1記載のコンピュータシステム。
  4. 前記圧縮/解凍ロジックは、キャッシュラインデータが前記CPUコアから前記キャッシュメモリにわたされると、前記キャッシュラインデータをコンパニオンキャッシュラインにより圧縮するよう動作可能である、請求項1記載のコンピュータシステム。
  5. 前記圧縮/解凍ロジックは、キャッシュラインデータが前記システムメモリにわたされる前に、前記キャッシュラインデータをコンパニオンキャッシュラインにより圧縮するよう動作可能である、請求項1記載のコンピュータシステム。
  6. 前記圧縮/解凍ロジックは、キャッシュラインデータが第2のCPUにわたされる前に、前記キャッシュラインデータをコンパニオンキャッシュラインにより圧縮するよう動作可能である、請求項1記載のコンピュータシステム。
  7. 前記CPUはさらに、キャッシュラインデータが前記圧縮/解凍ロジックにおいて圧縮される前に、前記キャッシュラインデータを一時的に格納するバッファを有する、請求項1記載のコンピュータシステム。
  8. 圧縮されていないキャッシュラインデータを送受信するコンポーネントと通信する第1インタフェースと、
    圧縮されたキャッシュラインデータを送受信するコンポーネントと通信する第2インタフェースと、
    をさらに有する、請求項1記載のコンピュータシステム。
  9. 1以上の圧縮されたキャッシュラインを形成するため、複数のキャッシュラインの1以上を圧縮するステップと、
    システムメモリのデータブロックに対応するキャッシュラインが圧縮形式であることを示し、圧縮形式により格納される各キャッシュラインに用いられる圧縮タイプを示すメモリコントローラ内の圧縮マップを更新するステップと、
    を有する方法。
  10. 前記圧縮されたキャッシュラインをキャッシュメモリに格納するステップをさらに有する、請求項9記載の方法。
  11. 前記圧縮マップを更新するステップは、前記データブロックに係る状態ビットを更新することを含む、請求項9記載の方法。
  12. キャッシュラインを圧縮する前に、前記キャッシュラインに対応するデータをバッファするステップをさらに有する、請求項9記載の方法。
  13. 前記圧縮されたキャッシュラインを前記システムメモリに送信するステップをさらに有する、請求項12記載の方法。
JP2006549516A 2004-01-15 2005-01-10 圧縮されたキャッシュラインのワース・オブ・インフォメーションを利用したマルチプロセッサ計算システム及び当該システムに利用可能なプロセッサ Expired - Fee Related JP4652344B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/759,922 US7257693B2 (en) 2004-01-15 2004-01-15 Multi-processor computing system that employs compressed cache lines' worth of information and processor capable of use in said system
PCT/US2005/000797 WO2005071550A2 (en) 2004-01-15 2005-01-10 Multi-processor computing system that employs compressed cache lines’ worth of information and processor capable of use in said system

Publications (2)

Publication Number Publication Date
JP2007520813A JP2007520813A (ja) 2007-07-26
JP4652344B2 true JP4652344B2 (ja) 2011-03-16

Family

ID=34749798

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006549516A Expired - Fee Related JP4652344B2 (ja) 2004-01-15 2005-01-10 圧縮されたキャッシュラインのワース・オブ・インフォメーションを利用したマルチプロセッサ計算システム及び当該システムに利用可能なプロセッサ

Country Status (4)

Country Link
US (1) US7257693B2 (ja)
JP (1) JP4652344B2 (ja)
CN (1) CN100524251C (ja)
WO (1) WO2005071550A2 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7103685B1 (en) * 2004-01-16 2006-09-05 Xilinx, Inc. Bitstream compression with don't care values
JP4164452B2 (ja) * 2004-02-02 2008-10-15 キヤノン株式会社 情報処理方法及び装置
US7482954B1 (en) 2005-02-25 2009-01-27 Xilinx, Inc. Bitstream compression for a programmable device
US20060279561A1 (en) * 2005-04-19 2006-12-14 Semiconductor Energy Laboratory Co., Ltd. Display device
US8504791B2 (en) 2007-01-26 2013-08-06 Hicamp Systems, Inc. Hierarchical immutable content-addressable memory coprocessor
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
US8407428B2 (en) 2010-05-20 2013-03-26 Hicamp Systems, Inc. Structured memory coprocessor
US7444596B1 (en) * 2007-11-29 2008-10-28 International Business Machines Corporation Use of template messages to optimize a software messaging system
JP5188348B2 (ja) * 2008-09-25 2013-04-24 三菱電機株式会社 データアクセス装置
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9477605B2 (en) * 2013-07-11 2016-10-25 Advanced Micro Devices, Inc. Memory hierarchy using row-based compression
US11132300B2 (en) 2013-07-11 2021-09-28 Advanced Micro Devices, Inc. Memory hierarchy using page-based compression
US9292449B2 (en) * 2013-12-20 2016-03-22 Intel Corporation Cache memory data compression and decompression
WO2015199574A1 (en) * 2014-06-27 2015-12-30 Emc Corporation Techniques for automatically freeing space in a log-structured storage system
US9361228B2 (en) 2014-08-05 2016-06-07 Qualcomm Incorporated Cache line compaction of compressed data segments
US9612971B2 (en) 2014-08-19 2017-04-04 Qualcomm Incorporated Supplemental write cache command for bandwidth compression
US9858196B2 (en) 2014-08-19 2018-01-02 Qualcomm Incorporated Power aware padding
WO2016175842A1 (en) * 2015-04-30 2016-11-03 Hewlett Packard Enterprise Development Lp Retrieve data block from determined devices
US10025956B2 (en) * 2015-12-18 2018-07-17 Intel Corporation Techniques to compress cryptographic metadata for memory encryption
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
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
US9996471B2 (en) * 2016-06-28 2018-06-12 Arm Limited Cache with compressed data and tag
US10176090B2 (en) * 2016-09-15 2019-01-08 Qualcomm Incorporated Providing memory bandwidth compression using adaptive compression in central processing unit (CPU)-based systems
US10445261B2 (en) * 2016-12-30 2019-10-15 Intel Corporation System memory having point-to-point link that transports compressed traffic
US11016888B2 (en) * 2018-12-20 2021-05-25 Ebay Inc. Compressed cache using dynamically stacked roaring bitmaps
US11068204B2 (en) * 2019-05-22 2021-07-20 Macronix International Co., Ltd. Memory device with multiple physical spaces, multiple non-volatile memory arrays, multiple main data, multiple metadata of multiple types of commands, and access method thereof
US20220197799A1 (en) * 2020-12-23 2022-06-23 Intel Corporation Instruction and Micro-Architecture Support for Decompression on Core
US11868244B2 (en) * 2022-01-10 2024-01-09 Qualcomm Incorporated Priority-based cache-line fitting in compressed memory systems of processor-based systems
US11829292B1 (en) 2022-01-10 2023-11-28 Qualcomm Incorporated Priority-based cache-line fitting in compressed memory systems of processor-based systems

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247638A (en) * 1990-06-18 1993-09-21 Storage Technology Corporation Apparatus for compressing data in a dynamically mapped virtual data storage subsystem
JP2002536863A (ja) * 1999-01-29 2002-10-29 イントラクティブ シリコン インコーポレイテッド 拡張可能な埋込み型のパラレルデータを圧縮及び圧縮解除するためのシステムと方法
US20030131184A1 (en) * 2002-01-10 2003-07-10 Wayne Kever Apparatus and methods for cache line compression
JP2003216494A (ja) * 2002-01-16 2003-07-31 Hewlett Packard Co <Hp> オンチップキャッシュのデータ圧縮により有効キャッシュサイズを増大させるキャッシュ圧縮エンジンのための装置
US20030217237A1 (en) * 2002-05-15 2003-11-20 Internation Business Machines Corporation Selective memory controller access path for directory caching
JP2007517331A (ja) * 2003-12-29 2007-06-28 インテル コーポレイション コンピューターシステム、方法、装置
JP2007519100A (ja) * 2003-12-29 2007-07-12 インテル コーポレイション コンピューターシステム、方法、装置

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54128638A (en) * 1978-03-30 1979-10-05 Toshiba Corp Control system for cash memory
JPS586514A (ja) * 1981-07-06 1983-01-14 Mitsubishi Electric Corp デイスク制御装置
US5237675A (en) * 1990-06-04 1993-08-17 Maxtor Corporation Apparatus and method for efficient organization of compressed data on a hard disk utilizing an estimated compression factor
US5206939A (en) * 1990-09-24 1993-04-27 Emc Corporation System and method for disk mapping and data retrieval
JPH0573413A (ja) * 1991-09-12 1993-03-26 Mitsubishi Electric Corp キヤツシユメモリ・データ制御装置
JPH06332622A (ja) * 1993-03-22 1994-12-02 Hitachi Ltd 情報処理装置
JP2831602B2 (ja) * 1995-01-13 1998-12-02 富士通株式会社 圧縮データ管理装置及び圧縮データ管理方法
US5732202A (en) * 1995-02-13 1998-03-24 Canon Kabushiki Kaisha Data processing apparatus, data processing method, memory medium storing data processing program, output device, output control method and memory medium storing control program therefor
JP3426385B2 (ja) * 1995-03-09 2003-07-14 富士通株式会社 ディスク制御装置
US5875454A (en) * 1996-07-24 1999-02-23 International Business Machiness Corporation Compressed data cache storage system
US6115787A (en) * 1996-11-05 2000-09-05 Hitachi, Ltd. Disc storage system having cache memory which stores compressed data
US6199126B1 (en) * 1997-09-23 2001-03-06 International Business Machines Corporation Processor transparent on-the-fly instruction stream decompression
US6092071A (en) * 1997-11-04 2000-07-18 International Business Machines Corporation Dedicated input/output processor method and apparatus for access and storage of compressed data
US6324621B2 (en) * 1998-06-10 2001-11-27 International Business Machines Corporation Data caching with a partially compressed cache
US20010054131A1 (en) * 1999-01-29 2001-12-20 Alvarez Manuel J. System and method for perfoming scalable embedded parallel data compression
US6819271B2 (en) * 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US6289420B1 (en) * 1999-05-06 2001-09-11 Sun Microsystems, Inc. System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem
US6449689B1 (en) * 1999-08-31 2002-09-10 International Business Machines Corporation System and method for efficiently storing compressed data on a hard disk drive
US6507895B1 (en) * 2000-03-30 2003-01-14 Intel Corporation Method and apparatus for access demarcation
US6523102B1 (en) * 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
US6557083B1 (en) * 2000-06-30 2003-04-29 Intel Corporation Memory system for multiple data types
US6480938B2 (en) * 2000-12-15 2002-11-12 Hewlett-Packard Company Efficient I-cache structure to support instructions crossing line boundaries
US6825847B1 (en) * 2001-11-30 2004-11-30 Nvidia Corporation System and method for real-time compression of pixel colors
US20030233534A1 (en) * 2002-06-12 2003-12-18 Adrian Bernhard Enhanced computer start-up methods
US6775751B2 (en) * 2002-08-06 2004-08-10 International Business Machines Corporation System and method for using a compressed main memory based on degree of compressibility
US8111928B2 (en) * 2003-02-13 2012-02-07 Ati Technologies Ulc Method and apparatus for compression of multi-sampled anti-aliasing color data
US7162669B2 (en) * 2003-06-10 2007-01-09 Hewlett-Packard Development Company, L.P. Apparatus and method for compressing redundancy information for embedded memories, including cache memories, of integrated circuits
US7636810B2 (en) * 2003-11-26 2009-12-22 Intel Corporation Method, system, and apparatus for memory compression with flexible in-memory cache

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5247638A (en) * 1990-06-18 1993-09-21 Storage Technology Corporation Apparatus for compressing data in a dynamically mapped virtual data storage subsystem
JP2002536863A (ja) * 1999-01-29 2002-10-29 イントラクティブ シリコン インコーポレイテッド 拡張可能な埋込み型のパラレルデータを圧縮及び圧縮解除するためのシステムと方法
US20030131184A1 (en) * 2002-01-10 2003-07-10 Wayne Kever Apparatus and methods for cache line compression
JP2003216494A (ja) * 2002-01-16 2003-07-31 Hewlett Packard Co <Hp> オンチップキャッシュのデータ圧縮により有効キャッシュサイズを増大させるキャッシュ圧縮エンジンのための装置
US20030217237A1 (en) * 2002-05-15 2003-11-20 Internation Business Machines Corporation Selective memory controller access path for directory caching
JP2007517331A (ja) * 2003-12-29 2007-06-28 インテル コーポレイション コンピューターシステム、方法、装置
JP2007519100A (ja) * 2003-12-29 2007-07-12 インテル コーポレイション コンピューターシステム、方法、装置

Also Published As

Publication number Publication date
US20050160234A1 (en) 2005-07-21
US7257693B2 (en) 2007-08-14
JP2007520813A (ja) 2007-07-26
CN100524251C (zh) 2009-08-05
CN1934541A (zh) 2007-03-21
WO2005071550A2 (en) 2005-08-04
WO2005071550A3 (en) 2005-12-08

Similar Documents

Publication Publication Date Title
JP4652344B2 (ja) 圧縮されたキャッシュラインのワース・オブ・インフォメーションを利用したマルチプロセッサ計算システム及び当該システムに利用可能なプロセッサ
US7512750B2 (en) Processor and memory controller capable of use in computing system that employs compressed cache lines&#39; worth of information
US11803486B2 (en) Write merging on stores with different privilege levels
KR102518095B1 (ko) 스토리지 장치 및 시스템
US8443152B2 (en) Cache memory capable of adjusting burst length of write-back data in write-back operation
JP4044067B2 (ja) シリアルフラッシュメモリにおけるxipのための優先順位に基づくフラッシュメモリ制御装置及びこれを用いたメモリ管理方法、これによるフラッシュメモリチップ
US11023410B2 (en) Instructions for performing multi-line memory accesses
JPS61156346A (ja) 記憶階層の先取り装置
JP4218820B2 (ja) ダイレクトマップドキャッシュとフルアソシアティブバッファとを含んだキャッシュシステム、その制御方法及び記録媒体
US11921650B2 (en) Dedicated cache-related block transfer in a memory system
CN116134475A (zh) 计算机存储器扩展设备及其操作方法
US20180285268A1 (en) Method and apparatus for reducing write congestion in non-volatile memory based last level caches
US5524225A (en) Cache system and method for providing software controlled writeback
US7657667B2 (en) Method to provide cache management commands for a DMA controller
JP2001249846A (ja) キャッシュメモリ装置及びデータ処理システム
US12001345B2 (en) Victim cache that supports draining write-miss entries
JP2554761B2 (ja) データ転送パス制御方式
US20120151150A1 (en) Cache Line Fetching and Fetch Ahead Control Using Post Modification Information
TW202331713A (zh) 用於儲存和存取在記憶體單元中的資料運算元之方法
JPS6136263B2 (ja)

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100426

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101116

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101215

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131224

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees