JPH04233048A - 多重レベルキャッシュの制御方法及び装置 - Google Patents

多重レベルキャッシュの制御方法及び装置

Info

Publication number
JPH04233048A
JPH04233048A JP3170565A JP17056591A JPH04233048A JP H04233048 A JPH04233048 A JP H04233048A JP 3170565 A JP3170565 A JP 3170565A JP 17056591 A JP17056591 A JP 17056591A JP H04233048 A JPH04233048 A JP H04233048A
Authority
JP
Japan
Prior art keywords
level cache
cache
controller
way
data
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
Application number
JP3170565A
Other languages
English (en)
Inventor
Roger E Tipley
ロガー・イー・ティプレイ
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.)
Compaq Computer Corp
Original Assignee
Compaq Computer 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 Compaq Computer Corp filed Critical Compaq Computer Corp
Publication of JPH04233048A publication Critical patent/JPH04233048A/ja
Pending 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
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means

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)
  • Oscillators With Electromechanical Resonators (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータシステム
のマイクロプロセッサ・キャッシュサブシステムに関し
、特に第2レベルキャッシュコントローラが両方のキャ
ッシュのために主にスヌープ関連操作を受け持てるよう
に、コンピュータシステムの第1及び第2レベル間の多
重レベル包含を達成する多重レベルキャッシュの制御方
法及び装置に関する。
【0002】
【従来の技術】パーソナルコンピュータ業界は、活発で
、新しい技術革新が発生するので発展し続ける成長分野
である。この技術革新の推進力は、より高速より強力な
コンピュータの絶え間無い要望である。パーソナルコン
ピュータの速度の主要なボトルネックは、歴史的にデー
タがメモリからアクセスする速度、即ちメモリアクセス
タイムである。かなり高速のプロセッササイクル時間を
持つマイクロプロセッサは、かなり低速のメモリアクセ
スタイムを考慮に入れてメモリアクセス中に通常ウェイ
トステートを使用して遅らせる。それ故、メモリアクセ
スタイムは、コンピュータの性能を向上させる研究の主
要領域の1つである。
【0003】高速プロセッササイクル時間と、低速メモ
リアクセスタイムのギャップを埋めるために、キャッシ
ュメモリが開発された。キャッシュは、主メモリから頻
繁にアクセスされるコード及びデータのコピーを記憶す
るために用いる、小容量の非常に高速の高価なゼロウェ
イトステートメモリである。マイクロプロセッサは、主
メモリ抜きで非常に高速のメモリとアクセスでき、従っ
てメモリアクセス中に挿入されなければならないウェイ
トステートの数を減少できる。プロセッサがメモリから
のデータを要求し、そのデータがキャッシュにある時に
は、キャッシュ読出ヒットが実行されて、メモリアクセ
スからのデータがウェイトステートを発生しないでキャ
ッシュからプロセッサに戻される。もしデータがキャッ
シュにない場合には、キャッシュ読出ミスが実行されて
、メモリ要求がシステムに送られて、キャッシュを持た
ない通常の動作と同様にデータが主メモリから読出され
る。キャッシュミスにおいては、主メモリから読出され
るデータは、プロセッサに供給されると共に、このデー
タが再びプロセッサによって要求されるかもしれない統
計的見込みによって、キャッシュにも書込まれる。
【0004】効率的キャッシュは、全メモリアクセス中
で発生するキャッシュヒットの百分率である、高ヒット
率が得られる。キャッシュが高ヒットを持つ時には、メ
モリアクセスの殆どがゼロウェイトステートで動作する
。高ヒット率の正味の効果は、相当少ないヒットミスに
発生するウェイトステートが、大多数のゼロウェイトス
テートキャッシュヒットアクセスで平均化されて、アク
セス毎に殆どゼロウェイトステートに近い平均となる。 勿論、キャッシュは通常マイクロプロセッサのローカル
バスに配置されるので、キャッシュヒットは、システム
バスを使用しないで局所的に実行できる。それ故、局所
キャッシュ以外に動作するプロセッサは、極めて低いバ
ス利用となる。これは、プロセッサで使用されるシステ
ムバス利用率を減少し、他のバスマスタに多くの利用率
を提供することとなる。
【0005】キャッシュの他の重要な特徴は、プロセッ
サは、システムバスを制御しない時に、ローカルキャッ
シュ以外で操作でき、従ってコンピュータシステムの効
率を増加させることである。マイクロプロセッサキャッ
シュを持たないシステムにおいては、システムバスを制
御しない間プロセッサがアイドル状態に留まらなければ
ならない。これは、プロセッサがその時点有用な作業を
しないので、コンピュータシステムの全体の効率を下げ
させる。しかし、もしプロセッサがローカルバスに配置
されたキャッシュを含むならば、キャッシュから必要な
コード及びデータを取り出して有用な作業を形成しなが
ら、他の装置がシステムバスを使って、システム効率を
増加させることとなる。
【0006】キャッシュ性能は、ヒット率及びキャッシ
ュメモリアクセスタイムを含む多くのファクタに依存す
る。ヒット率は、いかに効率良くキャッシュが最も頻繁
に用いられるコード及びデータのコピーを維持できるか
の測定値であり、殆どキャッシュの容量の関数である。 大容量のキャッシュは、より少量のキャッシュより高い
ヒット率を持っている。しかし、キャッシュ容量の増加
は恐らくキャッシュメモリアクセスタイムの劣化に繋が
る。しかし、大容量キャッシュのためのキャッシュデザ
インは、デザインの制限ファクタが最小CPUアクセス
タイムになるように、恐らく最高速アクセスタイムのキ
ャッシュメモリを用いて達成できる。この方法において
、より大容量のキャッシュは、デザインの制限ファクタ
が最小CPUアクセスタイムであるので、より小容量の
キャッシュのメモリアクセスタイムに関する恐らくより
遅いキャッシュメモリアクセスタイムによって、不利に
ならない。
【0007】キャッシュ性能の他の重要な配慮は、キャ
ッシュに用いられるキャッシュの構成及びキャッシュ管
理ポリシーである。キャッシュは、通常直接マップ或は
セットアソシアティブ相対位置で構成される。直接マッ
プ相対位置においては、コンピュータの物理アドレス空
間が多数の等しいページに分割され、各ページがキャッ
シュの容量と等しい。キャッシュは、多数のセットに分
割され、各セットがある数のラインを持っている。主メ
モリの各ページは、キャッシュのラインの数と等価であ
り、各ページからの各ラインがキャッシュの同様に配置
されたラインに対応する。直接マップキャッシュの重要
な特性は、主メモリのページからの各メモリライン、即
ちページオフセットがキャッシュの等価的に配置された
ライン即ちページオフセットにのみ存在する。この制限
によって、キャッシュは、メモリアドレスの下位アドレ
スビットがメモリアドレスのページオフセットとして予
め決定されているので、上位アドレスビットの何ビット
か(タグと称する)を参照して、各メモリアドレスから
のデータのコピーがキャッシュにあるかを決定する必要
がある。
【0008】直接マップキャッシュは、主メモリの概念
的ページに容量が等価であるメモリの1つのバンクとし
て構成され、一方、セットアソシアティブキャッシュは
、各々が主メモリの概念的ページに容量等価であるメモ
リの、複数のバンク即ち複数のウエイを含む。従って、
主メモリのページオフセットは、キャッシュのウエイの
数に等しい、キャッシュの多数の位置にマップできる。 例えば、4ウエイセットアソシアティブキャッシュにお
いては、主メモリからのページオフセット即ちラインが
キャッシュのいずれかの4ウエイでの等価ページオフセ
ット位置に存在できる。
【0009】セットアソシアティブキャッシュは、通常
、読出ミスが発生した時にデータを満たすべきバンク或
はウエイを決定する入れ換えアルゴリズムを含む。多く
のセットアソシアティブキャッシュは、最近殆どアクセ
スしなかったウエイに新規なデータを配置する最近最小
使用(LRU)アルゴリズムの幾つかの形式を使用して
いる。これは、統計的に、最近頻繁に使用或はアクセス
して、データをプロセッサに供給したウエイが将来再び
必要そうなものだからである。それ故、LRUアルゴリ
ズムは、置換ブロックがキャッシュによって殆ど要求さ
れそうもないデータであることを保証する。
【0010】キャッシュ管理は、通常キャッシュコント
ローラとして参照される装置によって形成される。この
キャッシュコントローラは、キャッシュにおける各セッ
ト毎に関連(連想)したエントリ(入口)を保持するデ
ィレクトリを含む。このエントリは、通常3つの成分、
即ちキャッシュセットにおいて、タグ、タグ有効ビット
及び各ライン数に等しい多数のライン有効ビットを持つ
。タグは、主メモリのページ数として作用し、キャッシ
ュの各セットに存在するデータのコピーの元が記憶され
る、主メモリの特定のページの上位アドレスビットを保
持する。タグ有効ビットの状態は、キャッシュの各セッ
トにおけるデータが有効か無効かを決定する。もしタグ
有効ビットがクリアされているならば、全セットが無効
とみなされる。もしタグ有効ビットが真であるならば、
セット内の個別のラインは、各ライン有効ビットの状態
に依存して有効か無効かが考慮される。
【0011】主要なキャッシュ管理ポリシーは、キャッ
シュコヒーレンシの保存である。キャッシュコヒーレン
シは、キャッシュにおけるどのコピーデータがその位置
のデータの所有に同一で(或は実際所有し)なければら
ない要求を参照する。位置のデータの所有は、通常、各
メモリ位置に存在するデータの最近版を持つ各位置とし
て定義される。データの所有は、主メモリにおける未修
飾の位置或はライトバックキャッシュの修飾位置のいず
れかである。個別のバスマスタがメモリをアクセスでき
るコンピュータシステムにおいては、直接メモリアクセ
ス(DMA)コントローラ、ネットワーク或はディスク
インタフェースカード或はビデオグラフィックカードの
ようなバスマスタが、キャッシュに複製される主メモリ
位置の内容を変化させる可能性がある。これが起こった
時には、キャッシュはステイル或は無効データを保持す
る。キャッシュコヒーレンシを維持するためには、キャ
ッシュコントローラにとって、もし他のバスマスタが主
メモリをアクセスしたかどうかを解るために、プロセッ
サがシステムバスを所有していない時に、システムバス
をモニターする必要がある。このバスをモニターする方
法はスヌーピングとして参照される。
【0012】キャッシュコントローラは、前のプロセッ
サ書込が主メモリを更新すべきキャッシュ内のデータの
コピーを変化させる恐れがあるゆえに、ライトバックキ
ャッシュデザインにおいて、バスマスタによるメモリ読
出中にシステムバスをモニタしなければならない。これ
は、読出スヌーピングとして参照される。キャッシュが
主メモリ内でまだ更新されていないデータを含む読出ス
ヌープヒットでは、キャッシュコントローラが通常各デ
ータを主メモリに供給し、要求されるバスマスタが通常
キャッシュコントローラから主メモリへのルートを通っ
てこのデータを読出し、これがスナーフィングと参照さ
れる。勿論、キャッシュコントローラは、バスマスタが
キャッシュに存在するメモリ位置を書き換えるかもしれ
ないので、メモリ書込中にシステムバスをモニタしなけ
ればならない。これは書込スヌーピングと参照される。 書込スヌープヒットでは、キャッシュエントリがキャッ
シュコントローラによって、キャッシュディレクトリに
、このエントリがもはや修正されない意味の無効とマー
クされ、或はキャッシュが主メモリに沿って更新される
。それ故、バスマスタがライトバックキャッシュデザイ
ンにおいて主メモリに書込或は読出し、或はライトスル
ーキャッシュデザインにおいて主メモリに書込んだ時に
、キャッシュコントローラは、システムアドレスをラッ
チし、アクセスされる主メモリ位置もキャッシュに存在
するかを解るために、メモリアクセスが発生したページ
オフセット位置に対応するタグディレクトリ内のキャッ
シュ早見表を形成しなければならない。もし、この位置
からのデータのコピーがキャッシュに存在するならば、
キャッシュコントローラが読出或は書込スヌープヒット
が発生したかに依存して最適な作用を実行する。これは
、互換(両立)性のないデータが主メモリ及びキャッシ
ュに記憶されるのを防止し、従ってキャッシュコヒーレ
ンシが保存される。
【0013】キャッシュコヒーレンシの他の考慮は、メ
モリへのプロセッサ書込の取り扱いである。プロセッサ
が主メモリに書込む時には、勿論この位置からのデータ
のコピーがキャッシュに存在するか否かを決定するため
に、メモリ位置が検査されなければならない。もし、プ
ロセッサ書込ヒットがライトバックキャッシュデザイン
において発生したならば、キャッシュ位置が新規なデー
タに更新され、主メモリも程なく或は要求が起こった時
に新規なデータに更新されてもよい。ライトスルーキャ
ッシュデザインにおいては、主メモリ位置が通常プロセ
ッサ書込ヒットのキャッシュ位置に関連して更新される
。もしプロセッサ書込ミスが発生したならば、キャッシ
ュコントローラは、キャッシュがこのデザインに影響し
ないので、ライトスルーキャッシュデザインの書込ミス
を無視してもよい。これの代りに、キャッシュコントロ
ーラは、書込/置換(ライト・アロケート)を形成して
もよく、従って、データを主メモリに通過するに加えて
、キャッシュ内の新規なラインを入れ換える。ライトバ
ックキャッシュデザインにおいては、プロセッサ書込ミ
スが起こった時に、キャッシュコントローラが通常キャ
ッシュ内の新規なラインを入れ換える。これは、通常書
込データをキャッシュに供給する前或は一緒に主メモリ
からのラインを満たす残りのエントリを読むことを伴う
。主メモリは、要求が起こった後の時に更新される。
【0014】キャッシュは、通常マイクロプロセッサと
個別にデザインされる。キャッシュは、マイクロプロセ
ッサのローカルバスに配置され、コンピュータシステム
のデザイン中にプロセッサ及びシステムバス間にインタ
フェースされる。しかし、高トランジスタ密度コンピュ
ータチップの開発によっては、多くのプロセッサが現在
メモリアクセスタイムに関して性能のゴールを目指して
、キャッシュを内蔵してデザインされている。これらプ
ロセッサに内蔵されたキャッシュは、通常小容量、例え
ば8Kバイトの容量である。より小容量の内蔵キャッシ
ュは、通常大容量の外付けキャッシュより高速であり、
高速プロセッササイクルタイム及び大容量のキャッシュ
のかなり低速アクセスタイム間のギャップが減少してい
る。
【0015】キャッシュ内蔵プロセッサを用いたコンピ
ュータシステムにおいては、外部、第2レベル・キャッ
シュがしばしばシステムに追加されてメモリアクセスタ
イムを更に改良する。第2レベル・キャッシュは、内蔵
キャッシュより大容量であり、内蔵キャッシュと協働し
た時に、内蔵キャッシュで得られるヒット率より更に増
大したヒット率が得られる。
【0016】多重レベル・キャッシュと協働するシステ
ムにおいては、プロセッサがメモリからデータを要求し
た時に、内蔵即ち第1レベル・キャッシュがまずデータ
のコピーの有無を検査する。もしそうであれば、第1レ
ベル・キャッシュヒットが発生して、第1レベル・キャ
ッシュが適切データをプロセッサに供給する。もし第1
レベル・キャッシュミスが発生したならば、第2レベル
・キャッシュが検査される。もし第2レベル・キャッシ
ュヒットが発生したならば、データが第2レベル・キャ
ッシュからプロセッサに供給される。もし第2レベル・
キャッシュミスが発生したならば、データが主メモリか
ら取り出される。書込操作は、恐らく可能な前述の操作
を組み合わせ、一致させて同様に形成される。
【0017】
【発明が解決しようする課題】多重レベル・キャッシュ
システムにおいては、各キャッシュ毎にキャッシュコヒ
ーレンシを保持するために、他のバスマスタによるメモ
リ書込中にシステムバスをスヌープすることが必要であ
る。マイクロプロセッサがシステムバスを制御しない時
には、第1レベル及び第2レベル・キャッシュコントロ
ーラがメモリ書込毎にアドレスをラッチし、このアドレ
スをそのキャッシュディレクトリ内のタグに対して検査
することが要求される。これは、内蔵キャッシュのキャ
ッシュコントローラのスヌープ努力によって割り込みが
頻繁に掛けられるので、この時間中に内蔵キャッシュの
手続作業にプロセッサの効率がかなり割かれることにな
る。それ故、内蔵キャッシュのキャッシュコントローラ
がメモリ書込毎にシステムバスをスヌープする要求は、
プロセッサがシステムバスを制御しないまま、内蔵キャ
ッシュ以外の効果的操作を妨害するので、システムを格
下げする。
【0018】多重レベルのヒエラルヒーが多重プロセッ
サに存在する多くの例においては、多重レベル包含と参
照される特性がヒエラルヒーに要望される。多重レベル
包含は、第2レベル・キャッシュが第1レベル即ち内蔵
キャッシュ内にあるデータのコピーを持つことを保証す
ることを言う。これの発生時には、第2レベル・キャッ
シュが第1レベル・キャッシュの複製を保持する。多重
レベル包含は、多重プロセッサシステムの殆ど用いられ
て、キャッシュコヒーレンシの問題を防止する。多重レ
ベル包含が多重プロセッサシステムに導入される時には
、高次レベルキャッシュが低次レベルキャッシュをキャ
ッシュコヒーレンシの問題から遮蔽し、従って、多重レ
ベル包含が導入されないならば低次レベル・キャッシュ
で発生する不要な八つ当たり検査及び無効化を防止する
【0019】
【課題を解決するための手段】本発明は、コンピュータ
システムの第1及び第2レベル・キャッシュ間での多重
レベル包含を達成する方法を含む。多重レベル包含は、
第2レベル・キャッシュのキャッシュコントローラが2
つのキャッシュのための義務を引き継ぐので、プロセッ
サがシステムバスを制御しない間発生するメモリ書込毎
に、システムバスをスヌープする第1レベル・キャッシ
ュのキャッシュコントローラの必要性を省略する。これ
は、第1レベル・キャッシュコントローラを不要とし、
従って、マイクロプロセッサがシステムバスを制御しな
い時に第1レベル・キャッシュ抜きでマイクロプロセッ
サを効率良く操作できる。第2レベル・キャッシュは、
第1レベル・キャッシュのウエイ数より等しいか多いウ
エイ数を持つことが好ましい。第1及び第2レベル・キ
ャッシュは、本発明の好ましい実施例において、4ウエ
イセットアソシアティブキャッシュである。この実施例
においては、第1レベル・キャッシュのキャッシュウエ
イと第2レベル・キャッシュのキャッシュウエイとが1
対1に対応している。第1レベル・キャッシュラインが
主メモリから満たされる間には、第1レベル・キャッシ
ュコントローラは、第2レベル・キャッシュコントロー
ラに、第2レベル・キャッシュコントローラがデータを
対応の第2レベル・キャッシュウエイに置き換えるよう
にデータが入れ換えられる特定の第1レベル・キャッシ
ュウエイを通信(転送)する。第2レベル・キャッシュ
コントローラがデータのコピーを第1レベル・キャッシ
ュコントローラに転送する時には、第2レベル・キャッ
シュコントローラが第1レベル・キャッシュコントロー
ラに、どの第2レベル・キャッシュウエイからデータが
くるかを知らせる。第1レベル・キャッシュコントロー
ラは、通常の入れ換えアルゴリズムを無視し、対応の第
1レベル・キャッシュウエイを満たす。この方法で、第
1及び第2レベル・キャッシュがそれら自身「ウエイ基
準」上に位置合わせされる。このウエイ位置合わせは、
第2レベル・キャッシュコントローラがデータを第1レ
ベル・キャッシュの異なったウエイに配置されるのを防
止し、実行中第1レベル・キャッシュに存在するデータ
を不用意に捨てるのを防止する。
【0020】本発明による第1レベル・キャッシュのキ
ャッシュ構成は、ライトスルーアーキテクチャーである
。プロセッサ書込において、情報が書込ヒット或は書込
ミスの発生の如何に拘わらず好ましく第1レベル・キャ
ッシュに書込まれ、情報を第2レベル・キャッシュに書
込む外部書込バスサイクルが始まる。第1レベル・キャ
ッシュは特定の第1レベル・キャッシュウエイを送り、
データが第2レベル・キャッシュコントローラに配置さ
れて、第2レベル・キャッシュコントローラがそのデー
タを対応の第2レベル・キャッシュウエイに送り、従っ
てウエイの位置合わせが保存される。好ましい実施例に
よれば、第2レベル・キャッシュがライトバックキャッ
シュであるが、もし要望されたならばライトスルーキャ
ッシュもできる。
【0021】第2レベル・キャッシュコントローラは、
第1レベル・キャッシュに存在するデータのコピーを記
憶するために、第2レベル・キャッシュにおいて、デー
タの各ラインに関する包含ビットを用いる。第1レベル
・キャッシュの位置が置換された時には、メモリからの
第2レベル・キャッシュ置換と同時に、或は第2レベル
・キャッシュから直接、第2レベル・キャッシュコント
ローラは、このデータのコピーが第1レベル・キャッシ
ュに複製されたことを示す、第2レベル・キャッシュに
おけるその位置のための包含ビットをセットする。これ
が発生した時には、第1レベル・キャッシュの同じ位置
に対応する第2レベル・キャッシュの位置以外の全位置
が第2レベル・キャッシュコントローラによってクリア
されて、これらの位置に保持されるデータが第1レベル
・キャッシュに存在しないことを示す。
【0022】第2レベル・キャッシュコントローラは、
プロセッサがシステムバスを制御しない時に、両方のキ
ャッシュのための主要なスヌープ義務を形成する。第2
レベル・キャッシュにおいて、書込スヌープヒットが発
生した時には、包含ビットが第2レベル・キャッシュコ
ントローラによって読まれて、第1レベル・キャッシュ
コントローラがメモリアクセスをスヌープしなければな
らないかどうかが解る。もし包含ビットがセットされて
いないならば、第1レベル・キャッシュコントローラが
何も指示されない。もし包含ビットがセットされている
ならば、第2レベル・キャッシュコントローラが第1レ
ベル・キャッシュコントローラにその特定のメモリアク
セスを指示する。この方法において、第2レベル・キャ
ッシュコントローラが第1レベル・キャッシュでの書込
スヌープヒットの実発生を確認するまで、第1レベル・
キャッシュコントローラはスヌープ義務を無視できる。 これは、プロセッサがシステムバスを制御しない時に、
プロセッサが第1レベル・キャッシュを無視して効率良
く操作できる。
【0023】
【実施例】本発明の良好な理解は、添付図面を参照して
以下の詳細な説明を読んだときに展開できる。  図1
を参照すると、コンピュータシステムSが示される。本
発明と直接関連しないコンピュータシステムの詳細の殆
どは、明確化のため省略する。コンピュータシステムS
は、マイクロプロセッサ20と同じチップ22に好まし
く配置される第1レベル・キャッシュC1に接続される
マイクロプロセッサ20を備える。チップ22は、C1
キャッシュに接続されて、C1キャッシュの操作を制御
するC1キャッシュコントローラ30を備える。マイク
ロプロセッサ20、第1レベル・キャッシュC1及び第
1レベル・キャッシュコントローラ30は、ローカルプ
ロセッサバス25を経由して、システムバス24に接続
される。ローカルプロセッサバス25には第2レベル・
キャッシュC2が接続される。これらローカルプロセッ
サバス25及び第2レベル・キャッシュC2には、第2
レベル・キャッシュコントローラ32が接続される。シ
ステムバス24には、本発明の実施例によれば、4ギガ
バイトの容量のRAM26及び知的バスマスタ28が接
続される。このRAM26は、RAM26の操作を制御
するシステムメモリコントローラ(図示略)を含む。R
AM26及びシステムメモリコントローラ(図示略)は
以後主メモリ26として参照する。システムバス24は
、データバス及び32ビットアドレスバスを含み、アド
レスバスが主メモリ26において、230の32ビット
(ダブルワード)のいずれもアクセスできるアドレスビ
ットA2〜A31を備える。バスマスタ28は、DMA
コントローラ、ハードディスクインタフェース、ローカ
ル領域ネットワークインタフェース(LAN)或はビデ
オグラフィックプロセッサシステムのような、プロセッ
サシステムがホールド状態の時に、システムバス24を
制御するどの形式でもよい。
【0024】C1及びC2キャッシュは、これらキャッ
シュの1つにおいて、特定のウエイに配置されたデータ
のコピーが、他のキャッシュにおいて、所定の対応ウエ
イにのみ配置できるように「ウエイ基準」上に位置合わ
せされる。このウエイ位置合わせは、C2キャッシュが
C1キャッシュの少なくとも同じ数のキャッシュウエイ
を持つことを要求する。もし、C1及びC2キャッシュ
が同数のウエイを持つならば、C1キャッシュのキャッ
シュウエイと、C2キャッシュのキャッシュウエイとが
1対1に対応する。もしC2キャッシュがC1キャッシ
ュのそれより多いのキャッシュウエイを持つならば、C
1キャッシュの各キャッシュウエイがC2キャッシュの
1本或はそれ以上のキャッシュウエイに各々対応する。 しかし、2つのC1キャッシュウエイが1つのC2キャ
ッシュに対応できない。これは、各メモリアドレスがC
1及びC2キャッシュの各々において、1つのみの位置
を持つ事実からの要求項目である。従って、もし2つの
C1キャッシュウエイが単一のC2キャッシュウエイに
対応するならば、C2キャッシュに存在できない、C1
キャッシュに存在するメモリアドレス位置があることに
なる。各C2キャッシュウエイ位置は、各C2キャッシ
ュウエイ位置に対応する複数のC1キャッシュウエイの
各々に存在する2つのメモリアドレスを保持できない。
【0025】各キャッシュの実際の容量が本発明の目的
にとって重要でない。しかし、C2キャッシュは、多重
レベル包含を達成するために、少なくともC1キャッシ
ュより大きくなければならず、好ましくは、C2キャッ
シュがC1キャッシュより少なくとも4倍の容量を持っ
て、改良したキャッシュヒット率を形成する。本発明の
好ましい実施例においては、C1キャッシュが8kバイ
トの容量であり、C2キャッシュが512kバイトの容
量が好ましい。この実施例においては、C1及びC2キ
ャッシュが各々4ウエイセットアソシアティブキャッシ
ュである。本発明の別の実施例においては、C1及びC
2キャッシュが各々2ウエイセットアソシアティブキャ
ッシュである。
【0026】図2及び図3を参照すると、各キャッシュ
コントローラ30及び32を伴って、2ウエイセットア
ソシアティブ組織に形成されたC1及びC2キャッシュ
が示される。次の説明は、キャッシュメモリ、キャッシ
ュディレクトリ及び主メモリ26間の関係と同様に、2
ウエイ・セットアソシアティブキャッシュの構造及び操
作の導入形成を意図する。C1及びC2キャッシュは、
複雑であるが好ましい実施例の4ウエイ・セットアソシ
アティブキャッシュの簡単な例として、2ウエイ・セッ
トアソシアティブキャッシュ組織で説明される。2ウエ
イ・セットアソシアティブ組織に発生しない4ウエイ・
セットアソシアティブキャッシュに合わせた、特殊なキ
ャッシュコントローラ・デザインの考慮は、以下の説明
で注目される。
【0027】C1キャッシュは、各々が4kバイトの容
量である2つのバンク即ちウエイのメモリA1及びB1
を含む。キャッシュウエイA1及びB1は、128セッ
トに構成され、各セットが8つのライン58のメモリ記
憶を含む。各ラインは、32ビットのダブルワード即ち
4バイトのメモリである。主メモリ26は、4kバイト
のページ容量を持つ220ページが概念的に構成され、
各ページがC1キャッシュウエイA1及びB1と等価で
ある。主メモリ26における概念的ページは、キャッシ
ュウエイA1及びB1の各々と同じライン数である、1
024ラインを含む。主メモリ26及びC1キャッシュ
間の転送ユニットが一ラインである。
【0028】主メモリ26の各々からの特定のライン位
置即ちページ・オフセットは、キャッシュウエイA1及
びB1における同様に配置されたラインにマップされる
。例えば、図2に示すように、主メモリ26の各ページ
からの隠れたページ・オフセットは、キャッシュウエイ
A1及びB1の各々における等価に配置され隠れたライ
ンオフセットにマップされる。この方法において、主メ
モリ26からの特定のページ・オフセットメモリ位置は
、C1キャッシュの2つの位置の1つにのみマップされ
、これらの位置が各キャッシュウエイA1及びB1であ
る。
【0029】各キャッシュウエイA1及びB1は、各々
ディレクトリDA1及びディレクトリDB1として参照
されるキャッシュディレクトリを含み、これらがC1キ
ャッシュのC1キャッシュコントローラ30に配置され
る。ディレクトリDA1及びDB1は、各キャッシュウ
エイA1及びB1の128セットのために、エントリ6
0及び62を含む。各セット毎のキャッシュディレクト
リエントリは、図示のように、3つの成分、即ちタグ、
タグ有効ビット及び8つのライン有効ビットを持つ。ラ
イン有効ビットの数は、各セットのライン数と等しい。 タグ領域の20ビットは、キャッシュの各セットに存在
するデータのコピーの主メモリアドレス位置の上位アド
レスビット、即ちA12〜A31を保持する。上位アド
レスビットは、キャッシュの各セットのデータが配置さ
れる適切な4kバイトの概念的ページをアドレスする。 主メモリアドレス位置からの残りのアドレスビット、即
ちA2〜A11は、C1キャッシュの128セットの内
1つを選択するために使用される7ビット即ちA5〜A
11を備えたセットアドレス領域と、選択されたセット
の8ラインの内、個別ラインを選択するために使用され
る3ビット即ちA2〜A4を備えたラインアドレス領域
とに分割される。それ故、低位アドレスビットA2〜A
11は、C1キャッシュの各ウエイA1及びB1におけ
るライン位置の1つを直接選択する「キャッシュアドレ
ス」として役割を果たす。
【0030】マイクロプロセッサがメモリ読出サイクル
を始める時には、アドレスビットA5〜A11が128
セットの1つを選択するために使用され、アドレスビッ
トA2〜A4が、選択セットからの各ディレクトリDA
1及びDB1の各エントリ内の各ライン有効ビットの1
つを選択するために使用される。下位アドレスビットA
2〜A11は、勿論C1キャッシュの適切なラインを選
択するために使用される。キャッシュコントローラは、
要求されたメモリアドレスの上位アドレスビットタグ領
域を、各キャッシュウエイA1及びB1用の選択セット
の選択されたディレクトリエントリに記憶された各タグ
と比較する。同時に、両者のタグ有効及びライン有効ビ
ットが検査される。もし上位アドレスビットがタグの1
つと一致し、もしタグ有効ビット及び適切なライン有効
ビットが、タグが一致した所の各キャッシュウエイディ
レクトリのために各々セットされていたならば、結果は
キャッシュヒットであり、対応のキャッシュウエイがデ
ータの選択されたラインをデータバスに駆動させるよう
に指示する。
【0031】ミスは2ウエイのいずれかで発生すること
ができる。第1は、ラインミスと呼ばれ、要求されたメ
モリアドレスの上位アドレスビットが、選択されたセッ
トのディレクトリDA1或はDB1のタグの1つと一致
した時に発生し、各タグ有効ビットがセットされるが、
要求されたデータが存在する各ライン有効ビット(或は
複数ライン有効ビット)がクリアされる。第2は、タグ
ミスと呼ばれ、要求されたメモリアドレスの上位アドレ
スビットが、要求されたデータが配置された所の選択さ
れたセットのディレクトリDA1或はDB1の各タグに
一致しなかった時に発生し、即ち各ディレクトリDA1
或はDB1用の各タグ有効ビットがクリアされない。
【0032】C1キャッシュコントローラ30は、新規
なデータをどのキャッシュウエイA1或はB1に配置す
るかを決定する置換(入れ換え)アルゴリズムを含む。 使用されたこの置換アルゴリズムは、プロセッサによっ
てデータが最近殆ど使用されなかったキャッシュウエイ
に、新規なデータを配置させる最近最小使用(LRU)
アルゴリズムである。これは、最近頻繁に使用されるウ
エイが統計的に将来も再び必要とするであろうウエイだ
からである。C1キャッシュは、キャッシュ内の各セッ
ト毎にLRUビットを保持するディレクトリ70を含み
、LRUビットがプロセッサによって最近最もアクセス
されたキャッシュウエイから離れて指標される。それ故
、もしプロセッサで要求されたデータがウエイA1に存
在するならば、LRUビットがB1に向けられる。もし
プロセッサで要求されたデータがウエイB1に存在する
ならば、LRUビットがA1に向けられる。
【0033】好ましい実施例の4ウエイ・セットアソシ
アティブC1キャッシュ構成においては、より凝ったL
RU或はシュードLRU置換アルゴリズムがC1キャッ
シュコントローラ30に使用できる。置換アルゴリズム
の選択は本発明にとって筋違いであるが、選択した実施
例に使用される特定のキャッシュを最適にするために、
LRU或はシュードLRUアルゴリズムが選択されるこ
とが暗示される。好ましい実施例の4ウエイ・セットア
ソシアティブキャッシュ構成において、C1キャッシュ
コントローラ30に使用できる1つの置換アルゴリズム
は、次のように操作されるシュードLRUアルゴリズム
である。4ウエイ・セットアソシアティブC1キャッシ
ュは、W0、W1、W2及びW3として参照されるメモ
リの4ウエイを含んでいる。X0、X1及びX2として
参照される3ビットは、C1キャッシュコントローラ3
0に配置され、4ウエイC1キャッシュにおける各ウエ
イの各セット用に形成される。これらビットはLRUビ
ットと呼ばれ、ヒット毎或はC1キャッシュに配置され
る毎に更新される。もし各セットにおける最近アクセス
がウエイW0或はW1に対してであるならば、X0が1
即ち論理H値にセットされる。もし、最近アクセスがウ
エイW2或はW3に対してであるならば、X0が0即ち
論理L値にセットされる。もし、X0が1にセットされ
、ウエイW0及びウエイW1間の最近アクセスがウエイ
W0に対してであるならば、X1が1にセットされ、そ
うでなければX1が0にセットされる。もし、X0が0
にセットされ、ウエイW2及びウエイW3間の最近アク
セスウエイW2に対してであるならば、X2が0にセッ
トされる。
【0034】シュードLRU置換メカニズムは、次の方
法で動作する。ラインが4ウエイC1キャッシュに配置
されなければならない時には、C1キャッシュコントロ
ーラ30がX0ビットを使用して各ウエイW0、W1、
W2及びW3をまず選択し、最近殆ど使用されない特定
のライン候補位置が配置される。その後、C1キャッシ
ュコントローラ30は、X1及びX2ビットを用いて、
最近殆ど使用されないライン位置を2つの選択キャッシ
ュウエイW0及びW1又はW2及びW3のどれが保持し
ているかを決定し、このライン位置が置換用にマークさ
れる。
【0035】C1キャッシュコントローラ30は、C2
キャッシュコントローラ32に対するそのLRU情報を
、本発明によるC1及びC2キャッシュ読出ミス及びプ
ロセッサ書込上で放送する。この方法において、C2キ
ャッシュコントローラ32は、読出ミスで主メモリ26
から或はプロセッサ書込でプロセッサ20から受信する
データのコピーを、C1キャッシュコントローラがその
データのコピーを配置したC1キャッシュウエイに対応
するC2キャッシュウエイに配置させることができ、従
って、多重レベルの包含が達成できる。加えて、C1キ
ャッシュコントローラ30は、C1キャッシュ読出ミス
及びC2キャッシュ読出ヒットにおいて、LRU置換ア
ルゴリズムを無視して、C1キャッシュコントローラ3
0が、C2キャッシュコントローラ32から受信したデ
ータのコピーを、読出ヒットが発生したC2キャッシュ
ウエイに対応するC1キャッシュウエイに配置させる。
【0036】C1キャッシュコントローラ30は、新規
なデータをどのキャッシュウエイA1或はB1に配置す
るかを決定する置換(入れ換え)アルゴリズムを含む。 使用されたこの置換アルゴリズムは、プロセッサによっ
てデータが最近殆ど使用されなかったキャッシュウエイ
に、新規なデータを配置させる最近最小使用(LRU)
アルゴリズムである。これは、最近頻繁に使用されるウ
エイが統計的に将来も再び必要とするであろうウエイだ
からである。C1キャッシュは、キャッシュ内の各セッ
ト毎にLRUビットを保持するディレクトリ70を含み
、LRUビットがプロセッサによって最近最もアクセス
されたキャッシュウエイから離れて指標される。それ故
、もしプロセッサで要求されたデータがウエイA1に存
在するならば、LRUビットがB1に向けられる。もし
プロセッサで要求されたデータがウエイB1に存在する
ならば、LRUビットがA1に向けられる。
【0037】好ましい実施例の4ウエイ・セットアソシ
アティブC1キャッシュ構成においては、より凝ったL
RU或はシュードLRU置換アルゴリズムがC1キャッ
シュコントローラ30に使用できる。置換アルゴリズム
の選択は本発明にとって筋違いであるが、選択した実施
例に使用される特定のキャッシュを最適にするために、
LRU或はシュードLRUアルゴリズムが選択されるこ
とが暗示される。好ましい実施例の4ウエイ・セットア
ソシアティブキャッシュ構成において、C1キャッシュ
コントローラ30に使用できる1つの置換アルゴリズム
は、次のように操作されるシュードLRUアルゴリズム
である。4ウエイ・セットアソシアティブC1キャッシ
ュは、W0、W1、W2及びW3として参照されるメモ
リの4ウエイを含んでいる。X0、X1及びX2として
参照される3ビットは、C1キャッシュコントローラ3
0に配置され、4ウエイC1キャッシュにおける各ウエ
イの各セット用に形成される。これらビットはLRUビ
ットと呼ばれ、ヒット毎或はC1キャッシュに配置され
る毎に更新される。もし各セットにおける最近アクセス
がウエイW0或はW1に対してであるならば、X0が1
即ち論理H値にセットされる。もし、最近アクセスがウ
エイW2或はW3に対してであるならば、X0が0即ち
論理L値にセットされる。もし、X0が1にセットされ
、ウエイW0及びウエイW1間の最近アクセスがウエイ
W0に対してであるならば、X1が1にセットされ、そ
うでなければX1が0にセットされる。もし、X0が0
にセットされ、ウエイW2及びウエイW3間の最近アク
セスウエイW2に対してであるならば、X2が0にセッ
トされる。
【0038】シュードLRU置換メカニズムは、次の方
法で動作する。ラインが4ウエイC1キャッシュに配置
されなければならない時には、C1キャッシュコントロ
ーラ30がX0ビットを使用して各ウエイW0、W1、
W2及びW3をまず選択し、最近殆ど使用されない特定
のライン候補位置が配置される。その後、C1キャッシ
ュコントローラ30は、X1及びX2ビットを用いて、
最近殆ど使用されないライン位置を2つの選択キャッシ
ュウエイW0及びW1又はW2及びW3のどれが保持し
ているかを決定し、このライン位置が置換用にマークさ
れる。
【0039】C1キャッシュコントローラ30は、C2
キャッシュコントローラ32に対するそのLRU情報を
、本発明によるC1及びC2キャッシュ読出ミス及びプ
ロセッサ書込上で放送する。この方法において、C2キ
ャッシュコントローラ32は、読出ミスで主メモリ26
から或はプロセッサ書込でプロセッサ20から受信する
データのコピーを、C1キャッシュコントローラがその
データのコピーを配置したC1キャッシュウエイに対応
するC2キャッシュウエイに配置させることができ、従
って、多重レベルの包含が達成できる。加えて、C1キ
ャッシュコントローラ30は、C1キャッシュ読出ミス
及びC2キャッシュ読出ヒットにおいて、LRU置換ア
ルゴリズムを無視して、C1キャッシュコントローラ3
0が、C2キャッシュコントローラ32から受信したデ
ータのコピーを、読出ヒットが発生したC2キャッシュ
ウエイに対応するC1キャッシュウエイに配置させる。
【0040】2ウエイ・セットアソシアティブC2キャ
ッシュは、2ウエイ・セットアソシアティブC1キャッ
シュのそれと同様の方法で構成される。好ましい実施例
においては、C2キャッシュが512kバイトのキャッ
シュデータRAMを備える。図3を参照すると、C2キ
ャッシュにおける各キャッシュウエイA2及びA2は、
256kバイトの容量であり、8つのライン、各々に8
192セットを含んでいる。C2キャッシュのライン容
量は、1つの32ビット、ダブルワードで、C1キャッ
シュのそれと同一である。4ギガバイトの主メモリ26
は、214概念的ページに構成され、各概念的ページが
256kバイトの容量である。C2キャッシュ用の主メ
モリ26の概念的ページの数は、C2キャッシュ用の概
念的ページ容量がC1キャッシュのそれより大きいので
、C1キャッシュのそれより小さい。C1キャッシュと
同様に、主メモリ26における各ライン位置即ちページ
オフセットは、キャッシュウエイA2及びB2の各々の
同様に配置されたラインにマップされる。
【0041】C2キャッシュ32は、キャッシュウエイ
ディレクトリDA2及びDB2を含む。これらキャッシ
ュウエイディレクトリDA2及びDB2は、C1キャッ
シュディレクトリDA1及びDB1のエントリにおける
20ビットタグ領域と対照的に、14ビットタグ領域を
含むセットエントリを持っている。14ビットタグ領域
は、キャッシュの各セットが配置される主メモリ26に
おける適切な256kバイトの概念的ページをアドレス
する上位アドレスビット、即ちA18〜A31を保持す
る。残りのアドレスビット即ちA2〜A17は、C2キ
ャッシュにおける8192セットの内1つを選択するた
めに用いる13ビット即ちA5〜A17を備えたセット
アドレス領域と、選択されたセットにおける8ラインの
1つを選択するために用いる3ビット即ちA2〜A4を
備えたラインアドレス領域とに分割される。それ故、C
2キャッシュにおいて、低位アドレスビットA2〜A1
7は、C2キャッシュの各ウエイA2及びB2における
ライン位置の1つを直接選択する「キャッシュアドレス
」としての役割を果たす。
【0042】本発明によるC2キャッシュコントローラ
32は、C2キャッシュがC1及びC2キャッシュ読出
ミス及びプロセッサ書込において新規なデータのみを受
信するので、通常置換アルゴリズムを要求せず、これら
の場合、C2キャッシュコントローラがC1キャッシュ
コントローラからのウエイ位置を受信し、対応のC2キ
ャッシュウエイを満たさなければならない。それ故、C
2キャッシュコントローラ32は、各C2キャッシュウ
エイのデータ位置が、C1キャッシュのデータのウエイ
位置によって決定されるので、置換アルゴリズムを必要
としない。しかし、もしC2キャッシュがC1キャッシ
ュより多くのウエイを持つならば、C2キャッシュコン
トローラ32は、置換アルゴリズムの使用が要求される
であろう。この例においては、C1キャッシュウエイが
2つ或はそれ以上のウエイに対応する。従って、C1キ
ャッシュコントローラ30がC2キャッシュコントロー
ラ32に向かってC1キャッシュウエイ位置を知らせた
時には、C2キャッシュコントローラ32は、C1キャ
ッシュウエイ位置に対応する複数(多重)のC2キャッ
シュウエイ間で、受信データをどこに配置するかを決定
するために、置換アルゴリズムを必要とする。
【0043】2ウエイ・セットアソシアティブC1及び
C2キャッシュは、C1キャッシュにおけるウエイA1
及びB1がC2キャッシュにおけるウエイA2及びB2
と各々1対1の対応となるように「ウエイ基準」で位置
合わせされる。この方法において、C1キャッシュウエ
イA1或はB1における各ライン位置に配置された、主
メモリ26からのページオフセットは、対応のC2キャ
ッシュウエイA2或はB2における1つのみの位置を各
々持っている。これと反対に、C2キャッシュウエイA
2或はB2における各ライン位置は、対応のC1キャッ
シュウエイA1或はB1における1つのみの位置を各々
持っている。しかし、C2キャッシュがC1キャッシュ
の64倍の容量なので、C2キャッシュウエイA2或は
B2は、対応のC1キャッシュウエイA1或はB1にお
ける単一ライン即ちページオフセットに対して64のデ
ータのラインを保持することができる。それ故、本発明
によるC2キャッシュコントローラ32は、各ラインの
各々毎に包含ビット80を含む。これは、C2キャッシ
ュコントローラ32が、各C2キャッシュラインからの
データのコピーも対応のC1キャッシュライン位置に存
在するか否かを記憶させることができる。
【0044】包含ビット80の使用は、C2キャッシュ
コントローラ32は、単一C1キャッシュウエイ位置に
対応する各C2キャッシュウエイA2或はB2における
64のラインデータのどれがそのC1キャッシュ位置に
複製されたデータのコピーを保持しているかを覚えるこ
とができる。例えば、もし、C2キャッシュにおけるラ
インが、C1キャッシュにも配置した主メモリ26から
のデータのコピーを受信したならば、或はC2キャッシ
ュにおけるラインが、C1キャッシュに配置したデータ
のコピーを供給するならば、各C2キャッシュライン用
の包含ビットが真で、即ち論理H値にセットされて、こ
の論理H値は、各C2キャッシュラインが、各C1キャ
ッシュ位置に複製されたデータのコピーを保持すること
を示す。上記操作に伴う各C1キャッシュ位置に対応す
るC2キャッシュにおける他の63のライン位置は、そ
れらの包含ビットがクリアされて、それらに保持された
データのコピーがいずれもC1キャッシュ位置に複製さ
れていないことを示す。これは、上記に述べた操作の1
つが新規なデータを各C1キャッシュ位置に配置させる
前に、これら他の63ライン位置の1つが各C1キャッ
シュ位置に既に複製されたデータを保持し、それ故、こ
れら63位置の1つがその包含ビットをセットさせるの
で重要である。これら他の63のC2キャッシュ位置の
1つがその包含ビットをセットしない唯一の例は、上記
操作を伴いその包含ビットがセットされた各C2キャッ
シュライン位置が、操作の実行前に各C1キャッシュ位
置に複製されたデータのコピーを保持する時であり、そ
れ故、それ故、その包含ビットが既にセットされている
【0045】図4を参照すると、本発明によるC1及び
C2キャッシュの操作を説明したフローチャートが示さ
れる。これらの操作の幾つかは同時に発生するが、フロ
ーチャート様式は、操作の説明を単純化するために選択
されることが理解される。段階100は、コンピュター
システムSが動作即ち電源が投入されたことを示す。幾
つかのコンピュターシステムにおいては、メモリ読出或
は書込前にシステムバス24の制御を持つことが要求さ
れる。しかし、好ましい実施例によるシステムSにおい
ては、メモリ読出或は書込時に、プロセッサ20がシス
テムバス24を制御せず、むしろプロセッサ20がC1
キャッシュ及びC2キャッシュを除外して操作でき、C
1及びC2キャッシュ読出ミス或はプロセッサ書込が発
生するまでシステムバス24の使用が要求されない。
【0046】段階102において、プロセッサ20が主
メモリ読出を意図した時には、C1キャッシュコントロ
ーラ30がまずC1キャッシュを検査(チェック)して
、段階104において、要求された主メモリデータのコ
ピーがC1キャッシュに存在するか否かを決定する。 もし、要求されたデータのコピーがC1キャッシュに存
在しないならば、段階106において、C1キャッシュ
読出ミスが発生し、読出操作がC2キャッシュに通過し
、C2キャッシュコントローラ32が段階108におい
て、C2キャッシュを検査する。もし、要求されたデー
タのコピーがC2キャッシュに存在しないならば、段階
110において、C2キャッシュ読出ミスが発生し、操
作がシステムメモリコントローラに移って、主メモリ2
6から必要なデータを読み出す。
【0047】主メモリ26は、段階112において、要
求されたデータをC1キャッシュ、C2キャッシュ及び
プロセッサ20に供給し、C1キャッシュコントローラ
30が段階114において、特定の置換アルゴリズムに
従ってそのデータをキャッシュウエイA1或はB1に配
置させる。このデータは、プロセッサ20によって近い
将来再び要求されることが統計的に予想されるので、C
1キャッシュに配置させる。この期間中のC1キャッシ
ュコントローラ30は、段階118において、C2キャ
ッシュコントローラ32に、データが配置された特定の
C1キャッシュウエイA1或はB1を知らせ、C2キャ
ッシュコントローラ32は、段階120において、対応
のC2キャッシュウエイA2或はB2にそのデータを配
置させることができる。C2キャッシュコントローラ3
2は、段階122において、データが記憶された各C2
キャッシュメモリ位置の包含ビットをセットして、この
位置のデータのコピーがC1キャッシュにも存在するこ
とを示す。勿論、C2キャッシュコントローラ32は、
段階124において、C1キャッシュにおける同一のペ
ージオフセット位置に対応する他の63のキャッシュ位
置の包含ビットを各々クリアして、これらの位置のデー
タのコピーがC1キャッシュに存在しないことを示す。 メモリ読出の完了時には、コンピュータシステムは、

0048】操作の途中でC1及びC2キャッシュ読出ミ
スが起こり、コンピュータシステムSが最初ターンオン
される時にも、C1及びC2キャッシュの両方がエンプ
ティであるので、C1及びC2キャッシュミスが保証さ
れる。コンピュータシステムSのパワーオン後すぐに起
こるプロセッサメモリ読出の大部分はC1及びC2のキ
ャッシュミスとなる。なぜなら、C1及びC2キャッシ
ュはこの時エンプティであるからである。このように、
C1及びC2キャッシュはデータで満たされ、C1キャ
ッシュの特定のウェイA1又はB1にあるデータがC2
キャッシュのキャッシュウェイA2又はB2にあること
が保証されるウェイにそれらが一列に並べられる。 加うるに、コンピュータシステムSがしばらくオペレー
トされC1及びC2キャッシュ読出ミスが起こる時、C
1及びC2キャッシュのデータでラインが上述のように
満たされ、ウェイの位置合わせが保持される。
【0049】プロセッサ20が段階102でメインメモ
リ読出を初期化し、C2キャッシュコントローラ32が
、段階106でC1キャッシュミスが起こった後に、段
階108でC2キャッシュをチェックし、かつ、必要な
データのコピーがC2キャッシュ内にある時、C2キャ
ッシュヒットが段階130で起こる。C2キャッシュコ
ントローラ32は必要なデータを段階132でプロセッ
サ20に供給し、また、このデータはプロセッサ20で
すぐにまた必要とされるであろうという統計的見地から
、このデータは段階134でC1キャッシュに供給され
る。C2キャッシュコントローラ32は、C1キャッシ
ュコントローラに、データが段階136でC2キャッシ
ュにある特定のC2キャッシュウェイA2又はB2につ
いて知らせるので、C1キャッシュコントローラ30は
段階138でデータをC1キャッシュウェイA1又はB
1に置くことができる。これはC1キャッシュコントロ
ーラ30がノーマルLRUアルゴリズムを無視すること
を要求する。なぜなら、置換アルゴリズムは、その中に
データを置く異なったC1キャッシュウェイA1又はB
1を選ぶであろうからである。このように、C1及びC
2キャッシュは、C2キャッシュコントローラ32がC
2キャッシュのウェイ間でデータを変換することなく、
そのウェイの位置合わせを維持する。C2キャッシュコ
ントローラ32は、段階140において、必要なデータ
が配置されたC2キャッシュ位置の包含ビットをセット
し、これはこのデータのコピーもまたC1キャッシュに
あることを意味する。C2キャッシュコントローラ32
は、同じページオフセット位置に相当するC2キャッシ
ュメモリ位置の他の63個の包含ビットをクリアするが
、これはこれらの位置内のデータのコピーがC1キャッ
シュにはないことを意味する。コンピュータシステムS
はメモリ読出で終わり、段階100に戻る。
【0050】プロセッサ20が段階102でメモリ読出
を初期化し、リクエストされたデータのコピーがそこに
あるかどうかを判定するために段階104でC1キャッ
シュの内容をチェックし、さらに要求されたデータのコ
ピーがC1キャッシュにある時、C1キャッシュヒット
は段階150で起こる。C1キャッシュコントローラ3
0は要求されたデータを、段階152でプロセッサ20
に供給し、コンピュータシステムSのオペレーションは
段階100に戻る。多重レベル包含はキャッシュサブシ
ステムにあるので、C2キャッシュは、C1キャッシュ
コントローラ30がプロセッサ20に提供したデータの
コピーを持つことが保証され、C1キャッシュ読出ヒッ
トが起こった時のC1キャッシュコントローラ30から
C2キャッシュコントローラ32へのデータの移し変え
は必要ではない。
【0051】好適な具体例では、C1キャッシュのキャ
ッシュ構造が書込スルー構造で、C2キャッシュのキャ
ッシュ構造が書込バック構造であることが好ましい。し
かし、C1及びC2キャッシュに他のキャッシュ構造を
用いることも考えられる。プロセッサ20がメモリ書込
オペレーションを実行した時、プロセッサ書込がC1書
込ヒットか書込ミスかにかかわらず、データはC1キャ
ッシュに書込まれる。さらに、プロセッサはそれぞれの
データをC2キャッシュに書込むために初期外部書込バ
スサイクルを書込む。これが起こると、C1キャッシュ
コントローラ30は、データが置かれた特定のC1キャ
ッシュウェイを知らせて、C2キャッシュコントローラ
32はそのデータを対応のC2キャッシュウェイに配置
させる。それゆえ、C1及びC2キャッシュは書込ミス
を割当てる(アロケートする)。C1及びC2の両方に
書込ミスが割当てられるか、両方に書込ミスが割り当て
られないかのどちらかが好ましい。もしC1キャッシュ
に書込が割り当てられず、C2キャッシュに書込が割当
てられると、デザインはさらに複雑となる。C2キャッ
シュコントローラ32はLRUアルゴリズムを要求し、
C2キャッシュコントローラLRUアルゴリズムがC1
キャッシュで複製されるデータのコピーを含んだ特定の
C2キャッシュウェイを選択するかを保証する必要が生
じ、LRUアルゴリズムは打ち勝ち、多重レベル包含が
保証される。
【0052】図5では、段階200において、インテリ
ジェントバスマスタ28がシステムバス24の制御を得
た時に、C2キャッシュコントローラ32は、バスマス
タ28が書込バックキャッシュの時にメインメモリ26
に書込又は読出を実行するかを、段階202でシステム
バス24を見るすなわちスヌープし、もしそうであれば
、メモリ位置がアクセスされる。C2キャッシュコント
ローラ32は、C1及びC2キャッシュの両方にスヌー
プ作業を実行する。なぜなら、C2キャッシュは、多重
レベル包含のためにC1キャッシュにあるすべてのデー
タのコピーを持つことが保証されるからである。
【0053】もしバスマスタ28が段階204でメイン
メモリ26に書込み、書込スヌープヒットが段階206
でC2キャッシュに起こると、C2キャッシュコントロ
ーラ32は、C1キャッシュコントローラ30が段階2
08でメモリアクセスをスヌープしなければならないか
をみるために、包含ビットを各C2キャッシュ毎にチェ
ックする。もし包含ビットが段階208でセットされな
ければ、書込まれるメモリ位置からのデータのコピーは
C1キャッシュになく、C1キャッシュコントローラ3
0が解放される。この場合、C2キャッシュは段階21
0でデータの新しいコピーを受け取り、C2キャッシュ
コントローラ32は段階202でそのスヌープ作業に帰
る。もし、C2キャッシュメモリ位置の包含ビットが段
階206のスヌープビットの後に段階208でセットさ
れると、C2キャッシュコントローラは、段階212で
特定のメモリアクセルをスヌープするために、C1キャ
ッシュコントローラ30を指示する。段階214では、
C1及びC2キャッシュは各々新しいデータのコピーを
受け取り、C2キャッシュコントローラ32は段階20
2でそのスヌープ(サイクル)作業に帰る。もし、バス
マスタ28が段階204でメモリ位置に書込む後に、段
階206でスヌープミスが起こると、C2キャッシュコ
ントローラ32は段階202でそのスヌープサイクルに
帰る。C2キャッシュコントローラ32は、バスマスタ
28がシステムバス24の制御を辞めるまで段階202
でシステムバス24をスヌープし続ける。
【0054】もしバスマスタ28が段階204でメイン
メモリ位置を読み、読出スヌープヒットが段階220で
C2キャッシュに起こると、C2キャッシュコントロー
ラ32は、それが各メモリ位置のオーナーであるかどう
かを判定するために、段階222でC2キャッシュ位置
をチェックする。もしそうでなければ、メインメモリ2
6又は他のソースがデータ要求を提供し、C2キャッシ
ュコントローラ32は段階202でスヌープ作業に戻る
。もしC2キャッシュコントローラ32がメモリ位置の
オーナーであれば、C2キャッシュコントローラ32は
、要求されたデータを段階224でメインメモリ26に
供給する。バスマスタ28は、データがデータバスに置
かれた時に、このデータを段階226で読むが、これは
スナーフィングといわれる。C2キャッシュコントロー
ラ32は段階202でそのスヌープ(作業)デュティに
帰る。もしバスマスタ28が段階204でメモリ位置を
読んだ後に、スヌープミスが段階220で起こったなら
ば、C2キャッシュコントローラ32は段階202でそ
のスヌープ作業に帰る。
【0055】このように、C1キャッシュコントローラ
30は、C2キャッシュコントローラ32が、C1キャ
ッシュでのデータのスヌープヒットが実際に起こること
を判定するまで、そのスヌープ作業を無視することがで
きる。これはプロセッサ20を、C1キャッシュ24が
システムバス24にコントローラされていない間に、C
1キャッシュを用いてより効果的に稼働することを可能
にする。なぜなら、C1キャッシュコントローラ30は
、C1キャッシュヒットが起こった時に、従来のように
すべてのメモリ書込でなく、システムバス24のみをス
ヌープさせればよいからである。
【0056】本発明の前の開示及び記載は、例示及び説
明のためになされたもので、寸法、形状、材料、部品、
回路要素、結線接続及び接点の種々の変更が、記載の回
路及び構成及び操作方法と同様に、本発明の技術的範囲
を逸脱しないでなされてもよい。
【0057】
【発明の効果】以上説明したように、本発明によれば、
多重レベルのキャッシュ間の競合を防止すると共に、通
常小容量の上位キャッシュの低ヒット率に伴う無駄なキ
ャッシュアクセスをなくすることができ、大容量の下位
キャッシュの高ヒット率により高速にデータ処理ができ
る。
【図面の簡単な説明】
【図1】本発明による多重レベル包含を移植した第1及
び第2レベルキャッシュを含むコンピュータシステムの
ブロック図である。
【図2】図1の2ウエイ・セットアソシアティブC1キ
ャッシュの構成図である。
【図3】図1の2ウエイ・セットアソシアティブC2キ
ャッシュの構成図である。
【図4】本発明によるキャッシュ読出ヒット及びミスの
操作を示すフローチャート図である。
【図5】本発明によるスヌープ読出及び書込の操作を示
すフローチャート図である。
【符号の説明】
20  プロセッサ 22  チップ 24  システムバス 26  主メモリ 28  バスマスタ C1  第1レベル・キャッシュ C2  第2レベル・キャッシュ 30  C1キャッシュコントローラ 32  C2キャッシュコントローラ

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】マイクロプロセッサと、システムバスと、
    第1数のウエイを含む第1レベルのセットアソシアティ
    ブキャッシュと、第1レベル・キャッシュコントローラ
    と、前記第1レベル・キャッシュの第1数のウエイより
    等しいか多い第2数のウエイを含む第2レベルのセット
    アソシアティブキャッシュとを有するコンピュータシス
    テムにおいて、多重レベルを達成する方法において、前
    記第1レベル・キャッシュのウエイの各々が前記第2レ
    ベル・キャッシュの少なくとも1つのウエイに対応する
    第2レベル・キャッシュコントローラと、この第2レベ
    ル・キャッシュコントローラに結合されて、前記第2レ
    ベル・キャッシュ内のデータでの包含ビットをセット或
    はクリアする手段と、前記第1及び第2レベル・キャッ
    シュコントローラに各々結合されて、前記第1及び第2
    レベル・キャッシュ間でデータを転送し通信する手段と
    、バスマスタ装置と、RAMとを更に備え、前記第1レ
    ベル・キャッシュコントローラが、第1レベル及び第2
    レベル・キャッシュ読出ミスにおいて、前記第2レベル
    ・キャッシュコントローラに、前記RAMから受信した
    データのコピーが配置される特定の第1レベル・キャッ
    シュウエイを通信させ、前記第2レベル・キャッシュコ
    ントローラが、前記第1レベル及び第2レベル・キャッ
    シュ読出ミスにおいて、前記第1レベル・キャッシュコ
    ントローラによって通信した前記第1レベル・キャッシ
    ュウエイに対応する第2レベル・キャッシュウエイに前
    記RAMからデータのコピーを配置させ、前記第2レベ
    ル・キャッシュコントローラが、第1レベル・キャッシ
    ュ読出ミス及び第2レベル・キャッシュ読出ヒットにお
    いて、前記第1レベル・キャッシュコントローラに、デ
    ータのコピーが配置される特定の第2レベル・キャッシ
    ュウエイを通信させ、前記第1レベル・キャッシュコン
    トローラが、前記第2レベル・キャッシュコントローラ
    から前記プロセッサに転送されたデータのコピーを、対
    応の第1レベル・キャッシュウエイに配置させ、前記第
    2レベル・キャッシュコントローラが、前記データのコ
    ピーの前記第2レベル・キャッシュ位置における包含ビ
    ットをセットし、前記第1レベル・キャッシュコントロ
    ーラがデータのコピーを配置した第1レベル・キャッシ
    ュ位置に対応する位置以外の第2レベル・キャッシュ位
    置における包含ビットを各々クリアする多重レベルキャ
    ッシュの制御方法。
  2. 【請求項2】前記第1レベル・キャッシュコントローラ
    は、受信したデータのコピーをどの前記第1レベル・キ
    ャッシュウエイに配置するかを決定する入れ換えアルゴ
    リズムを含み、前記第1レベル・キャッシュコントロー
    ラが前記第2レベル・キャッシュウエイに対応する前記
    第1レベル・キャッシュウエイに前記データをコピーす
    る段階は、前記第1レベル・キャッシュコントローラが
    第1レベル・キャッシュミス及び第2レベル・キャッシ
    ュヒットの場合にその入れ換えアルゴリズムを無視する
    ことを備えた請求項1記載の方法。
  3. 【請求項3】前記第1レベル・キャッシュコントローラ
    が、プロセッサ書込において、前記第2レベル・キャッ
    シュコントローラに、受信データのコピーが配置された
    特定の第1レベル・キャッシュウエイを通信させ、前記
    第2レベル・キャッシュコントローラが、前記第1レベ
    ル・キャッシュコントローラによって通信された前記第
    1レベル・キャッシュウエイに対応する前記第2レベル
    ・キャッシュウエイに前記受信データのコピーを配置さ
    せる請求項1記載の方法。
  4. 【請求項4】前記第1レベル・キャッシュの1つのウエ
    イより多いものは、前記第1レベル・キャッシュの1つ
    のウエイに対応できる前記第2レベル・キャッシュの1
    つのウエイに対応できない請求項3記載の方法。
  5. 【請求項5】前記第2レベル・キャッシュコントローラ
    が、前記プロセッサが前記システムバスを制御しない時
    に、前記システムバスをスヌープして、前記バスマスタ
    装置がキャッシュされたメモリ位置に書込んでいるかど
    うかを認識し、前記第2レベル・キャッシュコントロー
    ラが、第2レベル・キャッシュ書込スヌープヒットが発
    生した所の第2レベル・キャッシュ位置の包含ビットを
    検査して、書込まれた前記RAM位置からデータのコピ
    ーが前記第1レベル・キャッシュに存在するか否かを決
    定し、前記第2レベル・キャッシュコントローラが、前
    記包含ビットがセットされたならば、前記第1レベル・
    キャッシュコントローラに前記システムバスをスヌープ
    スルように指示する請求項1記載の方法。
  6. 【請求項6】前記第2レベル・キャッシュがライトバッ
    クキャッシュであり、前記第2レベル・キャッシュコン
    トローラが、前記プロセッサが前記システムバスを制御
    しない時に、前記システムバスをスヌープして、前記バ
    スマスタ装置がキャッシュされたメモリ位置を読んでい
    るかを認識し、前記第2レベル・キャッシュコントロー
    ラは、前記第2レベル・キャッシュが第2レベル・キャ
    ッシュ読出スヌープヒットの要求されたメモリ位置に存
    在するデータの更新バージョンを持つか否かを決定し、
    前記第2レベル・キャッシュコントローラは、もし前記
    第2レベル・キャッシュが前記データの更新バージョン
    を持っていたならば、前記要求されたデータを主メモリ
    に供給し、バスコントローラが前記第2レベル・キャッ
    シュコントローラによって供給された前記要求データを
    読む請求項5記載の方法。
  7. 【請求項7】システムバスと、このシステムバスに結合
    されるマイクロプロセッサと、第1数のウエイを含み、
    前記マイクロプロセッサに結合される第1レベル・キャ
    ッシュメモリと、前記第1レベル・キャッシュメモリ、
    前記マイクロプロセッサ及び前記システムバスに結合さ
    れて、ウエイ情報を送る出力及びウエイ情報を受信する
    入力を含む第1レベル・キャッシュコントローラと、前
    記第1レベル・キャッシュの第1数のウエイより等しい
    か多い第2数のウエイを含む、前記第1レベル・キャッ
    シュの容量より等しいか大きい容量の第2レベル・キャ
    ッシュとを備えたコンピュータシステムにおいて、前記
    第1レベル・キャッシュのウエイの各々が前記第2レベ
    ル・キャッシュの少なくとも1つのウエイに対応し、前
    記第1レベル・キャッシュに複製される前記第2レベル
    ・キャッシュのデータの存在を指示する包含情報を含み
    、更に、前記システムバス、前記第2レベル・キャッシ
    ュ、前記マイクロプロセッサ、前記第1レベル・キャッ
    シュコントローラに結合されて、ウエイ情報を受信する
    ために、前記第1レベル・キャッシュコントローラのウ
    エイ情報出力に結合される入力と、ウエイ情報を送信す
    るために、前記第1レベル・キャッシュコントローラの
    ウエイ情報入力に結合される出力とを含む第2レベル・
    キャッシュコントローラと、前記システムバスに結合さ
    れるRAMとを備え、第1レベル及び第2レベル・キャ
    ッシュ読出ミスにおいて、前記第1レベル・キャッシュ
    コントローラがウエイ情報を前記第2レベル・キャッシ
    ュコントローラに通信し、前記第2レベル・キャッシュ
    コントローラが受信データを、受信ウエイ情報に対応す
    る前記第2レベル・キャッシュのウエイに配置させ、第
    1レベル・キャッシュ読出ミス及び第2レベル・キャッ
    シュ読出ヒットにおいて、前記第2レベル・キャッシュ
    コントローラがウエイ情報を前記第1レベル・キャッシ
    ュコントローラに送り、前記第1レベル・キャッシュコ
    ントローラが受信データを、受信ウエイ情報に対応する
    第1レベル・キャッシュのウエイに配置させ、前記第2
    レベル・キャッシュコントローラは、前記第1レベル・
    キャッシュに配置されるデータを含む前記第2レベル・
    キャッシュ位置における包含ビットをセットし、前記デ
    ータが配置された前記第1レベル・キャッシュ位置に対
    応する位置以外の前記第2レベル・キャッシュ位置の包
    含ビットをクリアする、多重レベル包含を達成する多重
    レベルキャッシュの制御装置。
  8. 【請求項8】前記第1レベル・キャッシュコントローラ
    は、受信データのコピーをどの前記第1レベル・キャッ
    シュウエイに配置するかを決定する置換手段を備え、第
    1レベル・キャッシュ読出ミス及び第2レベル・キャッ
    シュ読出ヒットの場合に、前記第1レベル・キャッシュ
    コントローラが前記置換手段を無視する請求項7記載の
    装置。
  9. 【請求項9】前記第1レベル・キャッシュの1つのウエ
    イより多いものは、前記第1レベル・キャッシュの1つ
    のウエイに対応できる前記第2レベル・キャッシュの1
    つのウエイに対応できない請求項7記載の装置。
  10. 【請求項10】プロセッサ書込において、前記第1レベ
    ル・キャッシュコントローラがウエイ情報を前記第2レ
    ベル・キャッシュコントローラに送り、前記第2レベル
    ・キャッシュコントローラが、受信ウエイ情報に対応す
    る第2レベル・キャッシュのウエイに受信データを配置
    させる請求項7記載の装置。
  11. 【請求項11】更に、前記システムバスに結合されるバ
    スマスタ装置を備え、前記第1レベル・キャッシュコン
    トローラは、前記マイクロプロセッサがシステムバスを
    制御しない時に、前記バスマスタ装置が前記第1レベル
    ・キャッシュにキャッシュされるRAM位置に書込んで
    いるかどうかを決定する、前記システムバスをスヌープ
    する手段を含み、前記第2レベル・キャッシュコントロ
    ーラは、更に、前記マイクロプロセッサが前記システム
    バスを制御しない時に、前記バスマスタ装置が前記第2
    レベル・キャッシュにキャッシュされたRAM位置に書
    込んでいるかどうかを決定する、前記システムバスをス
    ヌープする手段と、書込まれた前記RAM位置からデー
    タのコピーが前記第1レベル・キャッシュに存在するか
    否かを決定するために、第2レベル・キャッシュ書込ス
    ヌープヒットが発生した第2レベル・キャッシュ位置の
    包含ビットを検査する手段と、前記第1レベル・キャッ
    シュコントローラに結合されて、前記包含ビットがセッ
    トされたならば、前記第1レベル・キャッシュコントロ
    ーラに前記システムバスをスヌープスルように指示する
    手段を備えた請求項7記載の装置。
  12. 【請求項12】前記第2レベル・キャッシュがライトバ
    ックキャッシュであり、前記第2レベル・キャッシュコ
    ントローラは、前記マイクロプロセッサが前記システム
    バスを制御しない時に、前記システムバスをスヌープし
    て、前記バスマスタ装置が前記第2レベル・キャッシュ
    にキャッシュされたRAM位置を読んでいるかどうかを
    決定する手段と、前記第2レベル・キャッシュが第2レ
    ベル・キャッシュ読出スヌープヒットが発生した時に、
    要求されたメモリ位置に存在するデータの更新バージョ
    ンを含むか否かを決定する手段と、もし前記第2レベル
    ・キャッシュが前記データの更新バージョンを持ってい
    たならば、前記要求されたデータを主メモリに供給する
    手段とを備え、前記バスコントローラが前記第2レベル
    ・キャッシュコントローラによって供給された前記要求
    データを読む請求項11記載の装置。
JP3170565A 1990-06-15 1991-06-15 多重レベルキャッシュの制御方法及び装置 Pending JPH04233048A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US53889490A 1990-06-15 1990-06-15
US538,894 1990-06-15

Publications (1)

Publication Number Publication Date
JPH04233048A true JPH04233048A (ja) 1992-08-21

Family

ID=24148867

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3170565A Pending JPH04233048A (ja) 1990-06-15 1991-06-15 多重レベルキャッシュの制御方法及び装置

Country Status (6)

Country Link
US (1) US5369753A (ja)
EP (1) EP0461926B1 (ja)
JP (1) JPH04233048A (ja)
AT (1) ATE170642T1 (ja)
CA (1) CA2044689A1 (ja)
DE (1) DE69130086T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006040175A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd キャッシュメモリ装置およびキャッシュメモリ制御方法

Families Citing this family (127)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5146473A (en) * 1989-08-14 1992-09-08 International Mobile Machines Corporation Subscriber unit for wireless digital subscriber communication system
DE69225876T2 (de) * 1991-12-24 1998-12-10 Motorola, Inc., Schaumburg, Ill. Cachesteuerungsschaltung
US5724549A (en) * 1992-04-06 1998-03-03 Cyrix Corporation Cache coherency without bus master arbitration signals
US5524212A (en) * 1992-04-27 1996-06-04 University Of Washington Multiprocessor system with write generate method for updating cache
JPH05324468A (ja) * 1992-05-21 1993-12-07 Fujitsu Ltd 階層化キャッシュメモリ
JPH06110781A (ja) * 1992-09-30 1994-04-22 Nec Corp キャッシュメモリ装置
JP2541771B2 (ja) * 1993-01-29 1996-10-09 インターナショナル・ビジネス・マシーンズ・コーポレイション 原子的メモリ参照方法及びシステム
EP0622738B1 (de) * 1993-04-30 1998-08-05 Siemens Nixdorf Informationssysteme Aktiengesellschaft Verfahren zur Ausführung von an einen mehrstufigen Cachespeicher einer Datenverarbeitungsanlage gerichteten Anforderungen und entsprechend gestalteter Cachespeicher
US5640531A (en) * 1993-06-22 1997-06-17 Unisys Corporation Enhanced computer operational system using auxiliary mini-cache for enhancement to general cache
US5544342A (en) * 1993-06-30 1996-08-06 International Business Machines Corporation System and method for prefetching information in a processing system
US5586270A (en) * 1993-09-30 1996-12-17 Intel Corporation Method and apparatus for upgrading a central processing unit and existing memory structure in a computer system
US5636365A (en) * 1993-10-05 1997-06-03 Nec Corporation Hierarchical buffer memories for selectively controlling data coherence including coherence control request means
US5530832A (en) * 1993-10-14 1996-06-25 International Business Machines Corporation System and method for practicing essential inclusion in a multiprocessor and cache hierarchy
US5522057A (en) * 1993-10-25 1996-05-28 Intel Corporation Hybrid write back/write through cache having a streamlined four state cache coherency protocol for uniprocessor computer systems
US5623627A (en) * 1993-12-09 1997-04-22 Advanced Micro Devices, Inc. Computer memory architecture including a replacement cache
US5692154A (en) * 1993-12-20 1997-11-25 Compaq Computer Corporation Circuit for masking a dirty status indication provided by a cache dirty memory under certain conditions so that a cache memory controller properly controls a cache tag memory
US5832534A (en) * 1994-01-04 1998-11-03 Intel Corporation Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories
US5603004A (en) * 1994-02-14 1997-02-11 Hewlett-Packard Company Method for decreasing time penalty resulting from a cache miss in a multi-level cache system
US6006299A (en) * 1994-03-01 1999-12-21 Intel Corporation Apparatus and method for caching lock conditions in a multi-processor system
US5717894A (en) * 1994-03-07 1998-02-10 Dell Usa, L.P. Method and apparatus for reducing write cycle wait states in a non-zero wait state cache system
US5588131A (en) * 1994-03-09 1996-12-24 Sun Microsystems, Inc. System and method for a snooping and snarfing cache in a multiprocessor computer system
JP2778913B2 (ja) * 1994-04-26 1998-07-23 株式会社東芝 マルチプロセッサシステム及びメモリアロケーション方法
US5548742A (en) * 1994-08-11 1996-08-20 Intel Corporation Method and apparatus for combining a direct-mapped cache and a multiple-way cache in a cache memory
US5813031A (en) * 1994-09-21 1998-09-22 Industrial Technology Research Institute Caching tag for a large scale cache computer memory system
US5634073A (en) * 1994-10-14 1997-05-27 Compaq Computer Corporation System having a plurality of posting queues associated with different types of write operations for selectively checking one queue based upon type of read operation
US6006312A (en) * 1995-02-27 1999-12-21 Sun Microsystems, Inc. Cachability attributes of virtual addresses for optimizing performance of virtually and physically indexed caches in maintaining multiply aliased physical addresses
WO1996033462A1 (de) * 1995-04-18 1996-10-24 International Business Machines Corporation Cache-speicher
US5623632A (en) * 1995-05-17 1997-04-22 International Business Machines Corporation System and method for improving multilevel cache performance in a multiprocessing system
US5850534A (en) * 1995-06-05 1998-12-15 Advanced Micro Devices, Inc. Method and apparatus for reducing cache snooping overhead in a multilevel cache system
US5740400A (en) * 1995-06-05 1998-04-14 Advanced Micro Devices Inc. Reducing cache snooping overhead in a multilevel cache system with multiple bus masters and a shared level two cache by using an inclusion field
DE19524023B4 (de) * 1995-06-30 2004-02-05 Fujitsu Siemens Computers Gmbh Multiprozessorsystem mit einer sehr großen Anzahl von Mikroprozessoren
US5778427A (en) * 1995-07-07 1998-07-07 Sun Microsystems, Inc. Method and apparatus for selecting a way of a multi-way associative cache by storing waylets in a translation structure
US5652859A (en) * 1995-08-17 1997-07-29 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues
US5758119A (en) * 1995-08-23 1998-05-26 International Business Machines Corp. System and method for indicating that a processor has prefetched data into a primary cache and not into a secondary cache
US5740399A (en) * 1995-08-23 1998-04-14 International Business Machines Corporation Modified L1/L2 cache inclusion for aggressive prefetch
JP2964926B2 (ja) * 1995-08-29 1999-10-18 富士ゼロックス株式会社 データベース管理装置及び方法
US5712970A (en) * 1995-09-28 1998-01-27 Emc Corporation Method and apparatus for reliably storing data to be written to a peripheral device subsystem using plural controllers
US5809537A (en) * 1995-12-08 1998-09-15 International Business Machines Corp. Method and system for simultaneous processing of snoop and cache operations
US5832250A (en) * 1996-01-26 1998-11-03 Unisys Corporation Multi set cache structure having parity RAMs holding parity bits for tag data and for status data utilizing prediction circuitry that predicts and generates the needed parity bits
US6070233A (en) * 1996-01-26 2000-05-30 Unisys Corporation Processor bus traffic optimization system for multi-level cache utilizing reflection status bit to indicate data inclusion in higher level cache
US5829038A (en) * 1996-06-20 1998-10-27 Intel Corporation Backward inquiry to lower level caches prior to the eviction of a modified line from a higher level cache in a microprocessor hierarchical cache structure
US5835950A (en) * 1996-07-12 1998-11-10 Samsung Electronics Co., Ltd. Self-invalidation method for reducing coherence overheads in a bus-based shared-memory multiprocessor apparatus
US5897656A (en) * 1996-09-16 1999-04-27 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US6049847A (en) * 1996-09-16 2000-04-11 Corollary, Inc. System and method for maintaining memory coherency in a computer system having multiple system buses
US5926830A (en) * 1996-10-07 1999-07-20 International Business Machines Corporation Data processing system and method for maintaining coherency between high and low level caches using inclusive states
US5809526A (en) * 1996-10-28 1998-09-15 International Business Machines Corporation Data processing system and method for selective invalidation of outdated lines in a second level memory in response to a memory request initiated by a store operation
US6202125B1 (en) 1996-11-25 2001-03-13 Intel Corporation Processor-cache protocol using simple commands to implement a range of cache configurations
US5809528A (en) * 1996-12-24 1998-09-15 International Business Machines Corporation Method and circuit for a least recently used replacement mechanism and invalidated address handling in a fully associative many-way cache memory
US5787478A (en) * 1997-03-05 1998-07-28 International Business Machines Corporation Method and system for implementing a cache coherency mechanism for utilization within a non-inclusive cache memory hierarchy
US5895495A (en) * 1997-03-13 1999-04-20 International Business Machines Corporation Demand-based larx-reserve protocol for SMP system buses
US6105112A (en) * 1997-04-14 2000-08-15 International Business Machines Corporation Dynamic folding of cache operations for multiple coherency-size systems
US6061755A (en) * 1997-04-14 2000-05-09 International Business Machines Corporation Method of layering cache and architectural specific functions to promote operation symmetry
US5943684A (en) * 1997-04-14 1999-08-24 International Business Machines Corporation Method and system of providing a cache-coherency protocol for maintaining cache coherency within a multiprocessor data-processing system
US6374330B1 (en) * 1997-04-14 2002-04-16 International Business Machines Corporation Cache-coherency protocol with upstream undefined state
FR2762420B1 (fr) * 1997-04-16 1999-05-21 Thomson Multimedia Sa Methode et dispositif d'obtention d'une selection adaptative d'ensembles de donnees stockes dans une memoire de masse
US5987577A (en) * 1997-04-24 1999-11-16 International Business Machines Dual word enable method and apparatus for memory arrays
US6209072B1 (en) 1997-05-06 2001-03-27 Intel Corporation Source synchronous interface between master and slave using a deskew latch
US5923898A (en) * 1997-05-14 1999-07-13 International Business Machines Corporation System for executing I/O request when an I/O request queue entry matches a snoop table entry or executing snoop when not matched
US6065101A (en) * 1997-06-12 2000-05-16 International Business Machines Corporation Pipelined snooping of multiple L1 cache lines
US5996048A (en) * 1997-06-20 1999-11-30 Sun Microsystems, Inc. Inclusion vector architecture for a level two cache
US6115795A (en) 1997-08-06 2000-09-05 International Business Machines Corporation Method and apparatus for configurable multiple level cache with coherency in a multiprocessor system
US6000015A (en) * 1997-09-16 1999-12-07 Unisys Corporation Processor bus traffic optimization system for multi-level cache utilizing reflection status bit to indicate data inclusion in a higher level cache
US6073212A (en) * 1997-09-30 2000-06-06 Sun Microsystems, Inc. Reducing bandwidth and areas needed for non-inclusive memory hierarchy by using dual tags
US5909697A (en) * 1997-09-30 1999-06-01 Sun Microsystems, Inc. Reducing cache misses by snarfing writebacks in non-inclusive memory systems
US6321297B1 (en) * 1998-01-05 2001-11-20 Intel Corporation Avoiding tag compares during writes in multi-level cache hierarchy
US6253291B1 (en) 1998-02-13 2001-06-26 Sun Microsystems, Inc. Method and apparatus for relaxing the FIFO ordering constraint for memory accesses in a multi-processor asynchronous cache system
US6094605A (en) * 1998-07-06 2000-07-25 Storage Technology Corporation Virtual automated cartridge system
US6405322B1 (en) 1999-04-13 2002-06-11 Hewlett-Packard Company System and method for recovery from address errors
US6510493B1 (en) 1999-07-15 2003-01-21 International Business Machines Corporation Method and apparatus for managing cache line replacement within a computer system
US6353875B1 (en) 1999-08-04 2002-03-05 International Business Machines Corporation Upgrading of snooper cache state mechanism for system bus with read/castout (RCO) address transactions
US6502171B1 (en) * 1999-08-04 2002-12-31 International Business Machines Corporation Multiprocessor system bus with combined snoop responses explicitly informing snoopers to scarf data
US6324617B1 (en) 1999-08-04 2001-11-27 International Business Machines Corporation Method and system for communicating tags of data access target and castout victim in a single data transfer
US6338124B1 (en) 1999-08-04 2002-01-08 International Business Machines Corporation Multiprocessor system bus with system controller explicitly updating snooper LRU information
US6321305B1 (en) 1999-08-04 2001-11-20 International Business Machines Corporation Multiprocessor system bus with combined snoop responses explicitly cancelling master allocation of read data
US6343347B1 (en) 1999-08-04 2002-01-29 International Business Machines Corporation Multiprocessor system bus with cache state and LRU snoop responses for read/castout (RCO) address transaction
US6349367B1 (en) 1999-08-04 2002-02-19 International Business Machines Corporation Method and system for communication in which a castout operation is cancelled in response to snoop responses
US6343344B1 (en) 1999-08-04 2002-01-29 International Business Machines Corporation System bus directory snooping mechanism for read/castout (RCO) address transaction
US6587923B1 (en) * 2000-05-22 2003-07-01 International Business Machines Corporation Dual line size cache directory
US6725341B1 (en) * 2000-06-28 2004-04-20 Intel Corporation Cache line pre-load and pre-own based on cache coherence speculation
US6748492B1 (en) * 2000-08-07 2004-06-08 Broadcom Corporation Deterministic setting of replacement policy in a cache through way selection
US6848024B1 (en) * 2000-08-07 2005-01-25 Broadcom Corporation Programmably disabling one or more cache entries
US6732234B1 (en) * 2000-08-07 2004-05-04 Broadcom Corporation Direct access mode for a cache
US6763433B1 (en) 2000-10-26 2004-07-13 International Business Machines Corporation High performance cache intervention mechanism for symmetric multiprocessor systems
US6629210B1 (en) 2000-10-26 2003-09-30 International Business Machines Corporation Intelligent cache management mechanism via processor access sequence analysis
US6704843B1 (en) 2000-10-26 2004-03-09 International Business Machines Corporation Enhanced multiprocessor response bus protocol enabling intra-cache line reference exchange
US6601144B1 (en) 2000-10-26 2003-07-29 International Business Machines Corporation Dynamic cache management in a symmetric multiprocessor system via snoop operation sequence analysis
US6721856B1 (en) * 2000-10-26 2004-04-13 International Business Machines Corporation Enhanced cache management mechanism via an intelligent system bus monitor
US6631450B1 (en) * 2000-10-26 2003-10-07 International Business Machines Corporation Symmetric multiprocessor address bus protocol with intra-cache line access information
US7093104B2 (en) 2001-03-22 2006-08-15 Sony Computer Entertainment Inc. Processing modules for computer architecture for broadband networks
US6826662B2 (en) 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6809734B2 (en) 2001-03-22 2004-10-26 Sony Computer Entertainment Inc. Resource dedication system and method for a computer architecture for broadband networks
US6526491B2 (en) 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US7231500B2 (en) 2001-03-22 2007-06-12 Sony Computer Entertainment Inc. External data interface in a computer architecture for broadband networks
US6748495B2 (en) 2001-05-15 2004-06-08 Broadcom Corporation Random generator
US6662272B2 (en) 2001-09-29 2003-12-09 Hewlett-Packard Development Company, L.P. Dynamic cache partitioning
US7114038B2 (en) * 2001-12-28 2006-09-26 Intel Corporation Method and apparatus for communicating between integrated circuits in a low power mode
US7100001B2 (en) * 2002-01-24 2006-08-29 Intel Corporation Methods and apparatus for cache intervention
US6983348B2 (en) 2002-01-24 2006-01-03 Intel Corporation Methods and apparatus for cache intervention
US7024519B2 (en) * 2002-05-06 2006-04-04 Sony Computer Entertainment Inc. Methods and apparatus for controlling hierarchical cache memory
US7266587B2 (en) * 2002-05-15 2007-09-04 Broadcom Corporation System having interfaces, switch, and memory bridge for CC-NUMA operation
US20040153611A1 (en) * 2003-02-04 2004-08-05 Sujat Jamil Methods and apparatus for detecting an address conflict
US7287126B2 (en) * 2003-07-30 2007-10-23 Intel Corporation Methods and apparatus for maintaining cache coherency
US7093075B2 (en) * 2003-11-07 2006-08-15 International Business Machines Corporation Location-based placement algorithms for set associative cache memory
US7213107B2 (en) * 2003-12-31 2007-05-01 Intel Corporation Dedicated cache memory
US7236918B2 (en) * 2003-12-31 2007-06-26 International Business Machines Corporation Method and system for selective compilation of instrumentation entities into a simulation model of a digital design
US8224639B2 (en) 2004-03-29 2012-07-17 Sony Computer Entertainment Inc. Methods and apparatus for achieving thermal management using processing task scheduling
US20060089826A1 (en) * 2004-10-21 2006-04-27 International Business Machines Corporation Method, system and program product for defining and recording minimum and maximum count events of a simulation
US7392169B2 (en) * 2004-10-21 2008-06-24 International Business Machines Corporation Method, system and program product for defining and recording minimum and maximum event counts of a simulation utilizing a high level language
US7454325B2 (en) * 2004-12-07 2008-11-18 International Business Machines Corporation Method, system and program product for defining and recording threshold-qualified count events of a simulation by testcases
US7552043B2 (en) * 2005-09-15 2009-06-23 International Business Machines Corporation Method, system and program product for selectively removing instrumentation logic from a simulation model
US7711537B2 (en) * 2006-05-03 2010-05-04 International Business Machines Corporation Signals for simulation result viewing
US7493248B2 (en) * 2006-05-08 2009-02-17 International Business Machines Corporation Method, system and program product supporting phase events in a simulation model of a digital system
US7912694B2 (en) * 2007-01-30 2011-03-22 International Business Machines Corporation Print events in the simulation of a digital system
US7917699B2 (en) 2007-12-21 2011-03-29 Mips Technologies, Inc. Apparatus and method for controlling the exclusivity mode of a level-two cache
US7890699B2 (en) * 2008-01-10 2011-02-15 International Business Machines Corporation Processing unit incorporating L1 cache bypass
KR20100058825A (ko) * 2008-11-25 2010-06-04 삼성전자주식회사 저항체를 이용한 반도체 장치, 이를 이용한 카드 또는 시스템 및 상기 반도체 장치의 구동 방법
US8782374B2 (en) * 2008-12-02 2014-07-15 Intel Corporation Method and apparatus for inclusion of TLB entries in a micro-op cache of a processor
US8453080B2 (en) * 2008-12-16 2013-05-28 International Business Machines Corporation Model build in the presence of a non-binding reference
JP5440067B2 (ja) * 2009-09-18 2014-03-12 富士通株式会社 キャッシュメモリ制御装置およびキャッシュメモリ制御方法
US8504774B2 (en) 2010-10-13 2013-08-06 Microsoft Corporation Dynamic cache configuration using separate read and write caches
US10102129B2 (en) * 2015-12-21 2018-10-16 Intel Corporation Minimizing snoop traffic locally and across cores on a chip multi-core fabric
US10366008B2 (en) * 2016-12-12 2019-07-30 Advanced Micro Devices, Inc. Tag and data organization in large memory caches
US10635766B2 (en) 2016-12-12 2020-04-28 International Business Machines Corporation Simulation employing level-dependent multitype events
US10417135B2 (en) * 2017-09-28 2019-09-17 Intel Corporation Near memory miss prediction to reduce memory access latency
TWI697902B (zh) 2019-01-24 2020-07-01 瑞昱半導體股份有限公司 電子裝置及電子裝置的管理方法
CN112433961B (zh) * 2020-12-02 2022-07-08 海光信息技术股份有限公司 复合缓存目录***及其管理方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464712A (en) * 1981-07-06 1984-08-07 International Business Machines Corporation Second level cache replacement method and apparatus
US4442487A (en) * 1981-12-31 1984-04-10 International Business Machines Corporation Three level memory hierarchy using write and share flags
US4493026A (en) * 1982-05-26 1985-01-08 International Business Machines Corporation Set associative sector cache
US4736293A (en) * 1984-04-11 1988-04-05 American Telephone And Telegraph Company, At&T Bell Laboratories Interleaved set-associative memory
US4823259A (en) * 1984-06-29 1989-04-18 International Business Machines Corporation High speed buffer store arrangement for quick wide transfer of data
US4985829A (en) * 1984-07-31 1991-01-15 Texas Instruments Incorporated Cache hierarchy design for use in a memory management unit
US4774654A (en) * 1984-12-24 1988-09-27 International Business Machines Corporation Apparatus and method for prefetching subblocks from a low speed memory to a high speed memory of a memory hierarchy depending upon state of replacing bit in the low speed memory
US4755930A (en) * 1985-06-27 1988-07-05 Encore Computer Corporation Hierarchical cache memory system and method
US4783736A (en) * 1985-07-22 1988-11-08 Alliant Computer Systems Corporation Digital computer with multisection cache
US5091846A (en) * 1986-10-03 1992-02-25 Intergraph Corporation Cache providing caching/non-caching write-through and copyback modes for virtual addresses and including bus snooping to maintain coherency
US5023776A (en) * 1988-02-22 1991-06-11 International Business Machines Corp. Store queue for a tightly coupled multiple processor configuration with two-level cache buffer storage
US5202972A (en) * 1988-12-29 1993-04-13 International Business Machines Corporation Store buffer apparatus in a multiprocessor system
US5133074A (en) * 1989-02-08 1992-07-21 Acer Incorporated Deadlock resolution with cache snooping
US5072369A (en) * 1989-04-07 1991-12-10 Tektronix, Inc. Interface between buses attached with cached modules providing address space mapped cache coherent memory access with SNOOP hit memory updates
US5136700A (en) * 1989-12-22 1992-08-04 Digital Equipment Corporation Apparatus and method for reducing interference in two-level cache memories
US5253353A (en) * 1990-01-02 1993-10-12 Digital Equipment Corporation System and method for efficiently supporting access to I/O devices through large direct-mapped data caches
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006040175A (ja) * 2004-07-29 2006-02-09 Fujitsu Ltd キャッシュメモリ装置およびキャッシュメモリ制御方法

Also Published As

Publication number Publication date
EP0461926A3 (en) 1992-05-06
EP0461926A2 (en) 1991-12-18
ATE170642T1 (de) 1998-09-15
US5369753A (en) 1994-11-29
EP0461926B1 (en) 1998-09-02
DE69130086D1 (de) 1998-10-08
CA2044689A1 (en) 1991-12-16
DE69130086T2 (de) 1999-01-21

Similar Documents

Publication Publication Date Title
JPH04233048A (ja) 多重レベルキャッシュの制御方法及び装置
US7698508B2 (en) System and method for reducing unnecessary cache operations
US5987571A (en) Cache coherency control method and multi-processor system using the same
EP0945805B1 (en) A cache coherency mechanism
US6345342B1 (en) Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line
US6901495B2 (en) Cache memory system allowing concurrent reads and writes to cache lines to increase snoop bandwith
US5325504A (en) Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system
US7032074B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
US7827354B2 (en) Victim cache using direct intervention
US6408362B1 (en) Data processing system, cache, and method that select a castout victim in response to the latencies of memory copies of cached data
US6343344B1 (en) System bus directory snooping mechanism for read/castout (RCO) address transaction
US6185658B1 (en) Cache with enhanced victim selection using the coherency states of cache lines
US6321306B1 (en) High performance multiprocessor system with modified-unsolicited cache state
JPH036757A (ja) ライトバツクデータキヤツシユメモリ装置
US6029224A (en) Self-contained memory apparatus having diverse types of memory and distributed control
US7117312B1 (en) Mechanism and method employing a plurality of hash functions for cache snoop filtering
US8135910B2 (en) Bandwidth of a cache directory by slicing the cache directory into two smaller cache directories and replicating snooping logic for each sliced cache directory
JP3262519B2 (ja) 第2レベルキャッシュの古いラインの除去によるプロセッサのメモリ性能の強化方法及びシステム
US7325102B1 (en) Mechanism and method for cache snoop filtering
US5809537A (en) Method and system for simultaneous processing of snoop and cache operations
US6950906B2 (en) System for and method of operating a cache
US20030084253A1 (en) Identification of stale entries in a computer cache
US6347363B1 (en) Merged vertical cache controller mechanism with combined cache controller and snoop queries for in-line caches
US6345344B1 (en) Cache allocation mechanism for modified-unsolicited cache state that modifies victimization priority bits
US6349367B1 (en) Method and system for communication in which a castout operation is cancelled in response to snoop responses