JPH10301849A - キャッシュ・コヒーレンシを維持する方法及び装置 - Google Patents
キャッシュ・コヒーレンシを維持する方法及び装置Info
- Publication number
- JPH10301849A JPH10301849A JP10097457A JP9745798A JPH10301849A JP H10301849 A JPH10301849 A JP H10301849A JP 10097457 A JP10097457 A JP 10097457A JP 9745798 A JP9745798 A JP 9745798A JP H10301849 A JPH10301849 A JP H10301849A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- level
- line
- level cache
- cache line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache 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)
Abstract
(57)【要約】
【課題】 マルチプロセッサ・コンピュータ・システム
におけるキャッシュ・コヒーレンシを維持する方法が、
より下位のキャッシュのために無用なバス・トランザク
ションを実行せずに、上流キャッシュ内のセクタが変更
されたことを示す新しい状態を提供する。 【解決手段】 これらの新しい「U」状態によって、キ
ャッシュ・ライン内のどのセクタが変更されたか、また
はキャッシュ・ラインがキャッシュ可能ライトスルー操
作を受けたかどうかを示すことができる。このプロトコ
ルは、従来技術の「MESI」キャッシュ・コヒーレン
シ・プロトコルの改良として実施される。この新しいプ
ロトコルは、「割振り及びゼロ化」命令を処理する際に
特に有用であり、メモリから古いデータを先にフェッチ
せずにキャッシュ内のデータが変更(ゼロ・アウト)さ
れる。所与のキャッシュ・ライン内に2つのセクタしか
ない実施例では、3つの新しい状態を設けてどのセクタ
が変更されたか、または第1のレベルのキャッシュのキ
ャッシュ・ラインに対してキャッシュ可能ライトスルー
操作が行われたかどうかを示す。
におけるキャッシュ・コヒーレンシを維持する方法が、
より下位のキャッシュのために無用なバス・トランザク
ションを実行せずに、上流キャッシュ内のセクタが変更
されたことを示す新しい状態を提供する。 【解決手段】 これらの新しい「U」状態によって、キ
ャッシュ・ライン内のどのセクタが変更されたか、また
はキャッシュ・ラインがキャッシュ可能ライトスルー操
作を受けたかどうかを示すことができる。このプロトコ
ルは、従来技術の「MESI」キャッシュ・コヒーレン
シ・プロトコルの改良として実施される。この新しいプ
ロトコルは、「割振り及びゼロ化」命令を処理する際に
特に有用であり、メモリから古いデータを先にフェッチ
せずにキャッシュ内のデータが変更(ゼロ・アウト)さ
れる。所与のキャッシュ・ライン内に2つのセクタしか
ない実施例では、3つの新しい状態を設けてどのセクタ
が変更されたか、または第1のレベルのキャッシュのキ
ャッシュ・ラインに対してキャッシュ可能ライトスルー
操作が行われたかどうかを示す。
Description
【0001】
【発明の属する技術分野】本発明は、一般にはコンピュ
ータ・システムに関し、具体的にはスヌープ操作を上流
であるより上位レベルのキャッシュに転送する必要があ
るかどうかを判断するキャッシュ・コヒーレンシ・プロ
トコルに係わる。
ータ・システムに関し、具体的にはスヌープ操作を上流
であるより上位レベルのキャッシュに転送する必要があ
るかどうかを判断するキャッシュ・コヒーレンシ・プロ
トコルに係わる。
【0002】
【従来の技術】従来のマルチプロセッサ・コンピュータ
・システム10の基本構造を図1に示す。コンピュータ
・システム10は、いくつかの処理装置を有することが
でき、そのうちの2つの処理装置12a及び12bが図
示されている。処理装置は、入出力(I/O)装置14
(表示モニタ、キーボード、グラフィカル・ポインタ
(マウス)、永続記憶装置(ハードウェア・ディスク)
など)、処理装置がプログラム命令を実行するために使
用するメモリ・デバイス16(ランダム・アクセス・メ
モリ、またはRAM)、及び、コンピュータに最初に電
源を入れたときに周辺装置の1つ(通常は永続記憶装
置)からオペレーティング・システムを探し出してロー
ドすることを主な目的とするファームウェア18を含む
様々な周辺装置に接続されている。処理装置12a及び
12bは、汎用相互接続線またはバス20、あるいはダ
イレクト・メモリ・アクセス・チャネル(図示せず)を
含む様々な手段によって周辺装置と通信する。コンピュ
ータ・システム10は、たとえばモデムやプリンタなど
に接続するためのシリアル・ポートやパラレル・ポート
など、図示されていない多くの追加の構成要素を有する
ことができる。当業者ならさらに、図1のブロック図に
図示されている構成要素と共に使用可能な他の構成要素
もあることがわかるであろう。たとえば、ビデオ表示モ
ニタを制御するためにディスプレイ・アダプタを使用し
たり、メモリ16にアクセスするためにメモリ・コント
ローラを使用することができる。コンピュータは3個以
上の処理装置を有することもできる。
・システム10の基本構造を図1に示す。コンピュータ
・システム10は、いくつかの処理装置を有することが
でき、そのうちの2つの処理装置12a及び12bが図
示されている。処理装置は、入出力(I/O)装置14
(表示モニタ、キーボード、グラフィカル・ポインタ
(マウス)、永続記憶装置(ハードウェア・ディスク)
など)、処理装置がプログラム命令を実行するために使
用するメモリ・デバイス16(ランダム・アクセス・メ
モリ、またはRAM)、及び、コンピュータに最初に電
源を入れたときに周辺装置の1つ(通常は永続記憶装
置)からオペレーティング・システムを探し出してロー
ドすることを主な目的とするファームウェア18を含む
様々な周辺装置に接続されている。処理装置12a及び
12bは、汎用相互接続線またはバス20、あるいはダ
イレクト・メモリ・アクセス・チャネル(図示せず)を
含む様々な手段によって周辺装置と通信する。コンピュ
ータ・システム10は、たとえばモデムやプリンタなど
に接続するためのシリアル・ポートやパラレル・ポート
など、図示されていない多くの追加の構成要素を有する
ことができる。当業者ならさらに、図1のブロック図に
図示されている構成要素と共に使用可能な他の構成要素
もあることがわかるであろう。たとえば、ビデオ表示モ
ニタを制御するためにディスプレイ・アダプタを使用し
たり、メモリ16にアクセスするためにメモリ・コント
ローラを使用することができる。コンピュータは3個以
上の処理装置を有することもできる。
【0003】対称マルチプロセッサ(SMP)コンピュ
ータでは、すべての処理装置は一般に同じである。すな
わち、すべての処理装置が命令及びプロトコルの共通の
セットまたはサブセットを使用して動作し、一般に同じ
アーキテクチャを有する。典型的なアーキテクチャは図
1に示す通りである。処理装置は、複数のレジスタと、
コンピュータを動作させるためにプログラム命令を実行
する実行ユニットとを含むプロセッサ・コア22を含
む。処理装置の例としては、インターナショナル・ビジ
ネス・マシーンズ・コーポレイション(IBM)が販売
するPowerPCTMプロセッサがある。処理装置は、
高速メモリ・デバイスを使用して実装された命令キャッ
シュ24やデータ・キャッシュ26などの1つまたは複
数のキャッシュも有することができる。キャッシュは、
メモリ16から値をロードする長いステップを回避する
ことによって処理を高速化することを目的として、プロ
セッサによって繰り返しアクセスされる可能性がある値
を一時的に記憶するために一般に使用される。これらの
キャッシュは、単一の集積チップ28上にプロセッサ・
コアと一体にパッケージされているときは、「オンボー
ド」キャッシュと呼ばれる。各キャッシュには、プロセ
ッサ・コアとキャッシュ・メモリとの間のデータの転送
を管理するキャッシュ・コントローラ(図示せず)が付
随している。
ータでは、すべての処理装置は一般に同じである。すな
わち、すべての処理装置が命令及びプロトコルの共通の
セットまたはサブセットを使用して動作し、一般に同じ
アーキテクチャを有する。典型的なアーキテクチャは図
1に示す通りである。処理装置は、複数のレジスタと、
コンピュータを動作させるためにプログラム命令を実行
する実行ユニットとを含むプロセッサ・コア22を含
む。処理装置の例としては、インターナショナル・ビジ
ネス・マシーンズ・コーポレイション(IBM)が販売
するPowerPCTMプロセッサがある。処理装置は、
高速メモリ・デバイスを使用して実装された命令キャッ
シュ24やデータ・キャッシュ26などの1つまたは複
数のキャッシュも有することができる。キャッシュは、
メモリ16から値をロードする長いステップを回避する
ことによって処理を高速化することを目的として、プロ
セッサによって繰り返しアクセスされる可能性がある値
を一時的に記憶するために一般に使用される。これらの
キャッシュは、単一の集積チップ28上にプロセッサ・
コアと一体にパッケージされているときは、「オンボー
ド」キャッシュと呼ばれる。各キャッシュには、プロセ
ッサ・コアとキャッシュ・メモリとの間のデータの転送
を管理するキャッシュ・コントローラ(図示せず)が付
随している。
【0004】処理装置は、オンボード(一次)キャッシ
ュ24及び26をサポートするため二次キャッシュ(L
2)と呼ばれるキャッシュ30などの追加のキャッシュ
を備えることができる。言い換えると、キャッシュ30
はメモリ16とオンボード・キャッシュとの間の媒介と
して機能し、オンボード・キャッシュよりもはるかに大
量の情報(命令及びデータ)を記憶することができる
が、アクセス・ペナルティは長い。たとえば、キャッシ
ュ30は、256キロバイトまたは512キロバイトの
記憶容量を有するチップとすることができ、プロセッサ
は64キロバイトの合計記憶容量を持つオンボード・キ
ャッシュを有するIBM PowerPC TM604シリ
ーズのプロセッサとすることができる。キャッシュ30
はバス20に接続され、メモリ16からプロセッサ・コ
ア22への情報のロードはすべてキャッシュ30を介し
て行わなければならない。図1には二次キャッシュ階層
しか図示されていないが、多くのレベル(L3、L4、
など)の直列接続されたキャッシュを備えたマルチレベ
ル・キャッシュ階層を設けることもできる。
ュ24及び26をサポートするため二次キャッシュ(L
2)と呼ばれるキャッシュ30などの追加のキャッシュ
を備えることができる。言い換えると、キャッシュ30
はメモリ16とオンボード・キャッシュとの間の媒介と
して機能し、オンボード・キャッシュよりもはるかに大
量の情報(命令及びデータ)を記憶することができる
が、アクセス・ペナルティは長い。たとえば、キャッシ
ュ30は、256キロバイトまたは512キロバイトの
記憶容量を有するチップとすることができ、プロセッサ
は64キロバイトの合計記憶容量を持つオンボード・キ
ャッシュを有するIBM PowerPC TM604シリ
ーズのプロセッサとすることができる。キャッシュ30
はバス20に接続され、メモリ16からプロセッサ・コ
ア22への情報のロードはすべてキャッシュ30を介し
て行わなければならない。図1には二次キャッシュ階層
しか図示されていないが、多くのレベル(L3、L4、
など)の直列接続されたキャッシュを備えたマルチレベ
ル・キャッシュ階層を設けることもできる。
【0005】SMPコンピュータでは、コヒーレントな
メモリ・システムを備えること、すなわち、すべてのプ
ロセッサについて各個別の記憶場所への書込みが何らか
の順序で順次化されるようにすることが重要である。た
とえば、値1、2、3、4をとるように1シーケンスの
操作によってメモリ内の場所が変更されるものとする。
キャッシュ・コヒーレント・システムでは、すべてのプ
ロセッサが、所与の場所への書込みを前記の順序で行わ
れるように守る。しかし、1つの処理要素がその記憶場
所への書込みをミスすることがある。その記憶場所を読
み取る所与の処理要素が1、3、4というシーケンスに
遭遇し、値2に加えられた更新を読取り損なうことがあ
る。これらの特性を実装するシステムを「コヒーレン
ト」と言う。実質的には、すべてのコヒーレンシ・プロ
トコルはキャッシュ・ブロックのサイズの粒度に対して
のみ作用する。すなわち、コヒーレンシ・プロトコルは
データの移動と書込み許可をキャッシュ・ブロック単位
で制御し、個々の記憶場所ごとに別々に制御するわけで
はない。
メモリ・システムを備えること、すなわち、すべてのプ
ロセッサについて各個別の記憶場所への書込みが何らか
の順序で順次化されるようにすることが重要である。た
とえば、値1、2、3、4をとるように1シーケンスの
操作によってメモリ内の場所が変更されるものとする。
キャッシュ・コヒーレント・システムでは、すべてのプ
ロセッサが、所与の場所への書込みを前記の順序で行わ
れるように守る。しかし、1つの処理要素がその記憶場
所への書込みをミスすることがある。その記憶場所を読
み取る所与の処理要素が1、3、4というシーケンスに
遭遇し、値2に加えられた更新を読取り損なうことがあ
る。これらの特性を実装するシステムを「コヒーレン
ト」と言う。実質的には、すべてのコヒーレンシ・プロ
トコルはキャッシュ・ブロックのサイズの粒度に対して
のみ作用する。すなわち、コヒーレンシ・プロトコルは
データの移動と書込み許可をキャッシュ・ブロック単位
で制御し、個々の記憶場所ごとに別々に制御するわけで
はない。
【0006】当業者に周知の、キャッシュ・コヒーレン
シを実現するためのプロトコル及び技法がいくつかあ
る。コヒーレンシを維持するためのそれらのすべての機
構の中心にあるのは、プロトコルによって、所与の時点
で所与の記憶場所(キャッシュ・ブロック)への書込み
を行うことができる「許可」を1つのプロセッサだけが
持てるようにするという必要条件である。この必要条件
の結果として、処理要素が記憶場所への書込みを試みる
ときは常に、まず、その場所への書込みを行いたいとい
うことを他のすべての処理要素に通知し、他のすべての
処理要素から許可を受け取ってから書込みを行わなけれ
ばならない。重要な問題は、書込みが行われる前に開始
プロセッサがシステム内の他のすべてのプロセッサに書
込みを通知しなければならないということである。さら
に、ブロックが所与の処理装置の一次キャッシュ内にあ
る場合、そのブロックはその処理装置の二次キャッシュ
及び三次キャッシュにも存在する。この特性は包含と呼
ばれ、当業者には周知である。以下では、本発明に関係
するキャッシュにこの包含の原理が適用されるものとす
る。
シを実現するためのプロトコル及び技法がいくつかあ
る。コヒーレンシを維持するためのそれらのすべての機
構の中心にあるのは、プロトコルによって、所与の時点
で所与の記憶場所(キャッシュ・ブロック)への書込み
を行うことができる「許可」を1つのプロセッサだけが
持てるようにするという必要条件である。この必要条件
の結果として、処理要素が記憶場所への書込みを試みる
ときは常に、まず、その場所への書込みを行いたいとい
うことを他のすべての処理要素に通知し、他のすべての
処理要素から許可を受け取ってから書込みを行わなけれ
ばならない。重要な問題は、書込みが行われる前に開始
プロセッサがシステム内の他のすべてのプロセッサに書
込みを通知しなければならないということである。さら
に、ブロックが所与の処理装置の一次キャッシュ内にあ
る場合、そのブロックはその処理装置の二次キャッシュ
及び三次キャッシュにも存在する。この特性は包含と呼
ばれ、当業者には周知である。以下では、本発明に関係
するキャッシュにこの包含の原理が適用されるものとす
る。
【0007】システムにおけるキャッシュ・コヒーレン
シを実現するために、プロセッサは共通の汎用相互接続
線(すなわちバス20)を介して通信する。プロセッサ
は、記憶場所の読取りまたは書込みを行いたいことを示
すメッセージをこの相互接続線で渡す。相互接続線上に
操作が送り込まれると、他のすべてのプロセッサはその
操作を「スヌープ」(監視)し、それらのキャッシュの
状態が要求された操作を行うことができる状態であるか
どうかを決定し、できる場合にはどのような条件下で行
えるかを決定する。バス・トランザクションを受け入
れ、メモリ・コヒーレンシを維持するためにスヌープと
フォローアップ処置を必要とするいくつかのバス・トラ
ンザクションがある。スヌープ操作は、特定のバス信号
のアサートによって生成される適格なスヌープ要求の受
信によってトリガされる。
シを実現するために、プロセッサは共通の汎用相互接続
線(すなわちバス20)を介して通信する。プロセッサ
は、記憶場所の読取りまたは書込みを行いたいことを示
すメッセージをこの相互接続線で渡す。相互接続線上に
操作が送り込まれると、他のすべてのプロセッサはその
操作を「スヌープ」(監視)し、それらのキャッシュの
状態が要求された操作を行うことができる状態であるか
どうかを決定し、できる場合にはどのような条件下で行
えるかを決定する。バス・トランザクションを受け入
れ、メモリ・コヒーレンシを維持するためにスヌープと
フォローアップ処置を必要とするいくつかのバス・トラ
ンザクションがある。スヌープ操作は、特定のバス信号
のアサートによって生成される適格なスヌープ要求の受
信によってトリガされる。
【0008】この通信は、キャッシュを備えたシステム
では、メモリの所与のブロックの最も最近の有効コピー
がシステム・メモリ16からシステム内の(前述のよう
な)1つまたは複数のキャッシュに移動している可能性
があるために必要なものである。プロセッサ(たとえば
12a)がそのプロセッサのキャッシュ階層内にない記
憶場所にアクセスを試みた場合、その記憶場所の実際の
(現行)値が入っているブロックの正しいバージョン
は、システム・メモリ16内にあるか、または別の処理
装置(たとえば処理装置12b)内の1つまたは複数の
キャッシュ内にある可能性がある。正しいバージョンが
システム内の他の1つまたは複数のキャッシュにある場
合、システム・メモリではなく、システム内のその1つ
または複数のキャッシュから正しい値を入手する必要が
ある。
では、メモリの所与のブロックの最も最近の有効コピー
がシステム・メモリ16からシステム内の(前述のよう
な)1つまたは複数のキャッシュに移動している可能性
があるために必要なものである。プロセッサ(たとえば
12a)がそのプロセッサのキャッシュ階層内にない記
憶場所にアクセスを試みた場合、その記憶場所の実際の
(現行)値が入っているブロックの正しいバージョン
は、システム・メモリ16内にあるか、または別の処理
装置(たとえば処理装置12b)内の1つまたは複数の
キャッシュ内にある可能性がある。正しいバージョンが
システム内の他の1つまたは複数のキャッシュにある場
合、システム・メモリではなく、システム内のその1つ
または複数のキャッシュから正しい値を入手する必要が
ある。
【0009】たとえば、プロセッサ(たとえば12a)
がメモリ内の記憶場所を読み取ろうと試みる場合を考え
てみる。プロセッサはまず、そのプロセッサ自体の一次
キャッシュ(24または26)をポーリングする。その
ブロックが一次キャッシュにない場合、要求は二次キャ
ッシュ(30)に転送される。そのブロックが二次キャ
ッシュにない場合、それより下位のキャッシュがあれば
その下位キャッシュ(たとえば三次キャッシュ)に要求
が転送される。ブロックがその下位キャッシュにもない
場合、要求は処理のために汎用相互接続線(20)上に
流される。汎用相互接続線上に操作が流されると、他の
すべての処理装置がその操作をスヌープし、それぞれの
キャッシュにそのブロックがあるかどうかを判断する。
処理装置によって要求されたそのデータのブロックを所
与の処理装置がその一次キャッシュ内に持っており、そ
のデータが変更されている場合、包含の原理により二次
キャッシュ及びそれより下位レベルのキャッシュもその
ブロックのコピーを持っている(しかし、そのプロセッ
サのキャッシュ内のコピーが変更されているためそれら
のコピーは陳腐化している可能性がある)。したがっ
て、処理装置の下位レベルのキャッシュ(たとえば三次
キャッシュ)がこの読取り操作をスヌープした場合、要
求されたブロックがより上位レベルのキャッシュ内にあ
り、変更されていると判断する。これが起こると、三次
キャッシュは、その記憶場所の実際の値がメモリ階層の
最上部の一次キャッシュ内にあり、開始処理装置の読取
り要求の処理に使用できるようにするためにそれを取り
出さなければならないため、その操作を後でもう一度
「再試行」しなければならないことをその処理装置に対
して通知するメッセージを汎用相互接続線上に送る。
がメモリ内の記憶場所を読み取ろうと試みる場合を考え
てみる。プロセッサはまず、そのプロセッサ自体の一次
キャッシュ(24または26)をポーリングする。その
ブロックが一次キャッシュにない場合、要求は二次キャ
ッシュ(30)に転送される。そのブロックが二次キャ
ッシュにない場合、それより下位のキャッシュがあれば
その下位キャッシュ(たとえば三次キャッシュ)に要求
が転送される。ブロックがその下位キャッシュにもない
場合、要求は処理のために汎用相互接続線(20)上に
流される。汎用相互接続線上に操作が流されると、他の
すべての処理装置がその操作をスヌープし、それぞれの
キャッシュにそのブロックがあるかどうかを判断する。
処理装置によって要求されたそのデータのブロックを所
与の処理装置がその一次キャッシュ内に持っており、そ
のデータが変更されている場合、包含の原理により二次
キャッシュ及びそれより下位レベルのキャッシュもその
ブロックのコピーを持っている(しかし、そのプロセッ
サのキャッシュ内のコピーが変更されているためそれら
のコピーは陳腐化している可能性がある)。したがっ
て、処理装置の下位レベルのキャッシュ(たとえば三次
キャッシュ)がこの読取り操作をスヌープした場合、要
求されたブロックがより上位レベルのキャッシュ内にあ
り、変更されていると判断する。これが起こると、三次
キャッシュは、その記憶場所の実際の値がメモリ階層の
最上部の一次キャッシュ内にあり、開始処理装置の読取
り要求の処理に使用できるようにするためにそれを取り
出さなければならないため、その操作を後でもう一度
「再試行」しなければならないことをその処理装置に対
して通知するメッセージを汎用相互接続線上に送る。
【0010】処理装置からの要求が取り出されると、三
次キャッシュは一次キャッシュから変更されたデータを
取り出し、本発明に特に関係のない実施態様の厳密な詳
細に応じて、それを三次キャッシュまたはメイン・メモ
リあるいはその両方で使用可能にするプロセスを開始す
る。より上位のキャッシュからブロックを取り出すため
に、三次キャッシュはキャッシュ間接続を介してより上
位のキャッシュにメッセージを送り、ブロックの取り出
しを要求する。これらのメッセージは、一次キャッシュ
に達するまで処理装置の階層を伝播し、それによって、
ブロックは最下位レベル(三次キャッシュまたはメイン
・メモリ)に達するまで階層を下方に移動し、開始処理
装置からの要求を処理することができるようになる。
次キャッシュは一次キャッシュから変更されたデータを
取り出し、本発明に特に関係のない実施態様の厳密な詳
細に応じて、それを三次キャッシュまたはメイン・メモ
リあるいはその両方で使用可能にするプロセスを開始す
る。より上位のキャッシュからブロックを取り出すため
に、三次キャッシュはキャッシュ間接続を介してより上
位のキャッシュにメッセージを送り、ブロックの取り出
しを要求する。これらのメッセージは、一次キャッシュ
に達するまで処理装置の階層を伝播し、それによって、
ブロックは最下位レベル(三次キャッシュまたはメイン
・メモリ)に達するまで階層を下方に移動し、開始処理
装置からの要求を処理することができるようになる。
【0011】開始処理装置は、最終的に読取り要求を汎
用相互接続線上に再提示する。しかし、この時点で処理
装置の一次キャッシュから変更されたデータが取り出さ
れており、開始プロセッサからの読取り要求は満たされ
ることになる。この事例を一般に「スヌープ・プッシ
ュ」と呼ぶ。汎用相互接続線上で読取り要求がスヌープ
され、それによって処理装置が「ブロック」を階層の最
下部まで「プッシュ」して、開始処理装置によって行わ
れた読取り要求が満たされる。
用相互接続線上に再提示する。しかし、この時点で処理
装置の一次キャッシュから変更されたデータが取り出さ
れており、開始プロセッサからの読取り要求は満たされ
ることになる。この事例を一般に「スヌープ・プッシ
ュ」と呼ぶ。汎用相互接続線上で読取り要求がスヌープ
され、それによって処理装置が「ブロック」を階層の最
下部まで「プッシュ」して、開始処理装置によって行わ
れた読取り要求が満たされる。
【0012】留意すべき重要な点は、プロセッサがブロ
ックの読取りまたは書込みを行いたい場合、キャッシュ
・コヒーレンシを維持するためにプロセッサはその希望
をシステム内の残りの処理装置に伝えなければならない
ことである。これを実現するために、キャッシュ・コヒ
ーレンシ・プロトコルはキャッシュ階層の各レベル内の
各ブロックに、ブロックの現在の「状態」を示す状況標
識を関連づける。この状態情報を使用して、汎用相互接
続線とキャッシュ間接続線上のメッセージ・トラフィッ
クを少なくするコヒーレンシ・プロトコルにおける特定
の最適化が可能になる。この機構の一例として、処理装
置が読取りを実行するとき、処理装置はその読取りを後
で取り出さなければならないかどうかを示すメッセージ
を受け取る。読取り操作を取り出さない場合、メッセー
ジには通常、処理装置が他の処理装置もまだそのブロッ
クのアクティブ・コピーを持っているかどうかを判断す
ることができるようにする情報も含まれる(これは、他
の最下位キャッシュにそれらのキャッシュが再試行しな
い読取りについて「共用」または「非共用」標識を提供
させることによって行われる)。したがって、処理装置
はシステム内の他のプロセッサがブロックのコピーを持
っているかどうかを判断することができる。他の処理装
置がブロックのアクティブ・コピーを持っていない場
合、読取りを行う処理装置はそのブロックの状態を「排
他的」としてマークする。ブロックが排他的としてマー
クされた場合、システム内の他の処理装置はそのブロッ
クのコピーを持っていないため、その処理装置はシステ
ム内の他の処理装置に伝えなくてもブロックを後で書き
込むことができるようにすることできる。したがって、
一般に、プロセッサは読み書きの意図を相互接続線上に
流してからでなくても、場所の読取りまたは書込みを行
うことができる。しかし、これは他のプロセッサがその
ブロックに関心がないことがコヒーレンシ・プロトコル
によって保証された場合にのみ起こる。
ックの読取りまたは書込みを行いたい場合、キャッシュ
・コヒーレンシを維持するためにプロセッサはその希望
をシステム内の残りの処理装置に伝えなければならない
ことである。これを実現するために、キャッシュ・コヒ
ーレンシ・プロトコルはキャッシュ階層の各レベル内の
各ブロックに、ブロックの現在の「状態」を示す状況標
識を関連づける。この状態情報を使用して、汎用相互接
続線とキャッシュ間接続線上のメッセージ・トラフィッ
クを少なくするコヒーレンシ・プロトコルにおける特定
の最適化が可能になる。この機構の一例として、処理装
置が読取りを実行するとき、処理装置はその読取りを後
で取り出さなければならないかどうかを示すメッセージ
を受け取る。読取り操作を取り出さない場合、メッセー
ジには通常、処理装置が他の処理装置もまだそのブロッ
クのアクティブ・コピーを持っているかどうかを判断す
ることができるようにする情報も含まれる(これは、他
の最下位キャッシュにそれらのキャッシュが再試行しな
い読取りについて「共用」または「非共用」標識を提供
させることによって行われる)。したがって、処理装置
はシステム内の他のプロセッサがブロックのコピーを持
っているかどうかを判断することができる。他の処理装
置がブロックのアクティブ・コピーを持っていない場
合、読取りを行う処理装置はそのブロックの状態を「排
他的」としてマークする。ブロックが排他的としてマー
クされた場合、システム内の他の処理装置はそのブロッ
クのコピーを持っていないため、その処理装置はシステ
ム内の他の処理装置に伝えなくてもブロックを後で書き
込むことができるようにすることできる。したがって、
一般に、プロセッサは読み書きの意図を相互接続線上に
流してからでなくても、場所の読取りまたは書込みを行
うことができる。しかし、これは他のプロセッサがその
ブロックに関心がないことがコヒーレンシ・プロトコル
によって保証された場合にのみ起こる。
【0013】上述のキャッシュ・コヒーレンシ技法は、
「MESI」と呼ばれる特定のプロトコルで実施され、
これを図2に示す。このプロトコルでは、キャッシュ・
ブロックは、「M」(変更済み)、「E」(排他的)、
「S」(共用)、または「I」(無効)の4つの状態の
うちの1つを取ることができる。MESIプロトコルで
は、各キャッシュ項目(たとえば32バイト・セクタ)
は、項目がとることができる4つの状態のうちの状態を
示す2ビットを持つ。状態は、要求プロセッサが求める
項目の初期状態及びアクセスのタイプに応じて変化する
ことができ、要求プロセッサのキャッシュ内の項目につ
いて特定の状態が設定される。たとえば、セクタが「変
更済み」状態の場合、アドレスされたセクタは変更され
たセクタを持っているキャッシュ内でのみ有効であり、
変更されたデータはまだシステム・メモリに書き戻され
ていない。セクタが「排他的」の場合、それはそのセク
タのみにあり、システム・メモリと整合している。セク
タが「共用」の場合、そのキャッシュ内と少なくとも1
つの他のキャッシュ内で有効であり、すべての共用セク
タはシステム・メモリと整合している。最後に、セクタ
が無効な場合、アドレスされたセクタはキャッシュ内に
ないことを示す。図2に示すように、セクタが「変更済
み」、「共用」、または「無効」状態のいずれかである
場合、特定のバス・トランザクションに応じて状態間を
移行することができる。「排他的」状態のセクタは他の
いずれの状態にも移行することができるが、セクタはま
ず「無効」になってからでなければ「排他的」になるこ
とができない。
「MESI」と呼ばれる特定のプロトコルで実施され、
これを図2に示す。このプロトコルでは、キャッシュ・
ブロックは、「M」(変更済み)、「E」(排他的)、
「S」(共用)、または「I」(無効)の4つの状態の
うちの1つを取ることができる。MESIプロトコルで
は、各キャッシュ項目(たとえば32バイト・セクタ)
は、項目がとることができる4つの状態のうちの状態を
示す2ビットを持つ。状態は、要求プロセッサが求める
項目の初期状態及びアクセスのタイプに応じて変化する
ことができ、要求プロセッサのキャッシュ内の項目につ
いて特定の状態が設定される。たとえば、セクタが「変
更済み」状態の場合、アドレスされたセクタは変更され
たセクタを持っているキャッシュ内でのみ有効であり、
変更されたデータはまだシステム・メモリに書き戻され
ていない。セクタが「排他的」の場合、それはそのセク
タのみにあり、システム・メモリと整合している。セク
タが「共用」の場合、そのキャッシュ内と少なくとも1
つの他のキャッシュ内で有効であり、すべての共用セク
タはシステム・メモリと整合している。最後に、セクタ
が無効な場合、アドレスされたセクタはキャッシュ内に
ないことを示す。図2に示すように、セクタが「変更済
み」、「共用」、または「無効」状態のいずれかである
場合、特定のバス・トランザクションに応じて状態間を
移行することができる。「排他的」状態のセクタは他の
いずれの状態にも移行することができるが、セクタはま
ず「無効」になってからでなければ「排他的」になるこ
とができない。
【0014】プロセッサの高速化したときにSMPパフ
ォーマンスを維持する際の難点の一つは、システム・メ
モリ・バスの負荷の増大である。その影響を緩和する1
つの方法は、バス幅と、1回のトランザクションごとの
データ伝送量(伝送バースト・サイズ)を増やすことで
ある。残念ながら、この伝送サイズはシステムのキャッ
シュ・ライン・サイズとコヒーレンシ・サイズになり、
ほとんどの縮小命令セット・コンピュータ(RISC)
プロセッサがそうであるように、キャッシュ制御命令が
ある場合にはソフトウェア・モデルに影響を与える。ソ
フトウェアへの影響を防止するために、プロセッサとシ
ステム・バスの間にセクタ化キャッシュが実装される。
セクタ化キャッシュはメモリ及びシステム伝送サイズと
同じライン・サイズを持ち、セクタ・サイズはプロセッ
サ・キャッシュ・ライン・サイズと同じである。この構
成によって、ソフトウェア影響問題は解決されるが、包
含性とコヒーレンシを維持しようとする下位レベルのキ
ャッシュについてはいくつかの設計上の問題が生じる。
ォーマンスを維持する際の難点の一つは、システム・メ
モリ・バスの負荷の増大である。その影響を緩和する1
つの方法は、バス幅と、1回のトランザクションごとの
データ伝送量(伝送バースト・サイズ)を増やすことで
ある。残念ながら、この伝送サイズはシステムのキャッ
シュ・ライン・サイズとコヒーレンシ・サイズになり、
ほとんどの縮小命令セット・コンピュータ(RISC)
プロセッサがそうであるように、キャッシュ制御命令が
ある場合にはソフトウェア・モデルに影響を与える。ソ
フトウェアへの影響を防止するために、プロセッサとシ
ステム・バスの間にセクタ化キャッシュが実装される。
セクタ化キャッシュはメモリ及びシステム伝送サイズと
同じライン・サイズを持ち、セクタ・サイズはプロセッ
サ・キャッシュ・ライン・サイズと同じである。この構
成によって、ソフトウェア影響問題は解決されるが、包
含性とコヒーレンシを維持しようとする下位レベルのキ
ャッシュについてはいくつかの設計上の問題が生じる。
【0015】第1に、より上位のキャッシュ(一次)
が、アロケート・アンド・ゼロ命令と呼ぶ特定の命令
(PowerPCTM命令セットの「DCBZ」)を実行
するときは常に、メモリから古いデータをフェッチせず
にそれ自体のキャッシュに入っているデータを変更する
(ゼロにする)。この操作は、一般に新しいプロセスに
メモリ領域を割振りし直すときに行われる。下位レベル
・キャッシュもそれ自体のキャッシュ・ラインを割り振
り、ゼロにする必要があるが、下位レベルのキャッシュ
はより大きなキャッシュ・ラインを有する。このプロシ
ージャを実施する従来の方法は、メモリからより大きな
ラインを読取り、次にそのプロセッサ・キャッシュ・ラ
インに対応する部分をゼロにするものである。しかしこ
の手法は、いずれにしても再割り振りしようとしている
メモリからのデータの読み取りを回避するという操作の
目的全体を損なう。さらに、プロセッサは、きわめて短
い期間に、下位レベルのキャッシュ内のより大きなキャ
ッシュ・ラインの残りの部分に入ることになる(下位レ
ベルのキャッシュはそうであるとは見なすことができな
いが)追加のキャッシュ・ラインのアロケート・アンド
・ゼロを行う可能性が高い。したがって、第1の問題
は、上位レベルの(たとえば一次)キャッシュ内では有
効であるが下位レベルのキャッシュ(たとえば二次また
は三次)ではまだ有効になっていないセクタを追跡する
ことである。
が、アロケート・アンド・ゼロ命令と呼ぶ特定の命令
(PowerPCTM命令セットの「DCBZ」)を実行
するときは常に、メモリから古いデータをフェッチせず
にそれ自体のキャッシュに入っているデータを変更する
(ゼロにする)。この操作は、一般に新しいプロセスに
メモリ領域を割振りし直すときに行われる。下位レベル
・キャッシュもそれ自体のキャッシュ・ラインを割り振
り、ゼロにする必要があるが、下位レベルのキャッシュ
はより大きなキャッシュ・ラインを有する。このプロシ
ージャを実施する従来の方法は、メモリからより大きな
ラインを読取り、次にそのプロセッサ・キャッシュ・ラ
インに対応する部分をゼロにするものである。しかしこ
の手法は、いずれにしても再割り振りしようとしている
メモリからのデータの読み取りを回避するという操作の
目的全体を損なう。さらに、プロセッサは、きわめて短
い期間に、下位レベルのキャッシュ内のより大きなキャ
ッシュ・ラインの残りの部分に入ることになる(下位レ
ベルのキャッシュはそうであるとは見なすことができな
いが)追加のキャッシュ・ラインのアロケート・アンド
・ゼロを行う可能性が高い。したがって、第1の問題
は、上位レベルの(たとえば一次)キャッシュ内では有
効であるが下位レベルのキャッシュ(たとえば二次また
は三次)ではまだ有効になっていないセクタを追跡する
ことである。
【0016】第2の問題は、たとえばグラフィック・デ
バイス・ドライバ(ビデオ表示モニタなど)などによっ
て一般的に使用されるキャッシュ可能ライトスルー操作
を効率的にサポートする方法である。この場合、大量の
データが参照されることが多いが、変更される量はわず
かに過ぎない。変更されたデータはプロセッサの外部に
あるグラフィック装置に適時に見えるようになる必要が
あり、したがってキャッシュ可能ライトスルー・プロト
コルが使用される。このプロトコルは、包含を維持する
ために、変更されたデータを含むラインをすべてのレベ
ルのキャッシュで割り振る必要があるが、キャッシュの
整合性を維持するのに部分ライン書込み機能(コストが
かかる複雑な機能)を必要とすることになるライトスル
ー操作のため、または、ラインを次に参照するときにラ
インを再度フェッチする必要があるためパフォーマンス
に悪影響を与えることになる書き込み時のラインのフラ
ッシュと無効化のために、実施が複雑になる。
バイス・ドライバ(ビデオ表示モニタなど)などによっ
て一般的に使用されるキャッシュ可能ライトスルー操作
を効率的にサポートする方法である。この場合、大量の
データが参照されることが多いが、変更される量はわず
かに過ぎない。変更されたデータはプロセッサの外部に
あるグラフィック装置に適時に見えるようになる必要が
あり、したがってキャッシュ可能ライトスルー・プロト
コルが使用される。このプロトコルは、包含を維持する
ために、変更されたデータを含むラインをすべてのレベ
ルのキャッシュで割り振る必要があるが、キャッシュの
整合性を維持するのに部分ライン書込み機能(コストが
かかる複雑な機能)を必要とすることになるライトスル
ー操作のため、または、ラインを次に参照するときにラ
インを再度フェッチする必要があるためパフォーマンス
に悪影響を与えることになる書き込み時のラインのフラ
ッシュと無効化のために、実施が複雑になる。
【0017】したがって、無用なバス操作を回避するた
めに、そのレベルで未定義のまま、所与のキャッシュ・
レベルの上流でキャッシュラインが割り振られて有効で
あることを示す方法を考案することが望ましい。さら
に、そのような上流の変更済みセクタに対するスヌープ
・ヒットが発生するまれな場合をこの方法によって効率
的に処理することができればさらに有利であろう。
めに、そのレベルで未定義のまま、所与のキャッシュ・
レベルの上流でキャッシュラインが割り振られて有効で
あることを示す方法を考案することが望ましい。さら
に、そのような上流の変更済みセクタに対するスヌープ
・ヒットが発生するまれな場合をこの方法によって効率
的に処理することができればさらに有利であろう。
【0018】
【発明が解決しようとする課題】したがって、本発明の
目的は、セクタ化された下位レベル・キャッシュを有す
るマルチプロセッサ・システムにおいてキャッシュ・コ
ヒーレンシを維持する改良された方法を提供することで
ある。
目的は、セクタ化された下位レベル・キャッシュを有す
るマルチプロセッサ・システムにおいてキャッシュ・コ
ヒーレンシを維持する改良された方法を提供することで
ある。
【0019】本発明の他の目的は、キャッシュ・ライン
に対するゼロ割振り操作のパフォーマンスを向上させる
方法を提供することである。
に対するゼロ割振り操作のパフォーマンスを向上させる
方法を提供することである。
【0020】本発明の他の目的は、複雑な部分書込み機
能を備えずに、さらにライトスルー・キャッシュ操作を
サポートする方法を提供することである。
能を備えずに、さらにライトスルー・キャッシュ操作を
サポートする方法を提供することである。
【0021】
【課題を解決するための手段】上記の目的は、マルチプ
ロセッサ・コンピュータ・システムにおけるキャッシュ
・コヒーレンシを維持する方法であって、一般に、第1
の値を処理装置の第1のレベルのキャッシュ内のキャッ
シュ・ライン・ブロックと、処理装置の第2のレベルの
キャッシュ内のキャッシュ・ラインのセクタとにロード
し、次に処理装置の第1のレベルのキャッシュ内のキャ
ッシュ・ライン・ブロック内の値を変更するステップ
と、第2のレベルのキャッシュ内のキャッシュ・ライン
が上流で変更されたことを第2のレベルのキャッシュで
表示するステップとを含む方法で達成される。この表示
は、第2のレベルのキャッシュ内のキャッシュ・ライン
のセクタを変更せずに行われる。このプロシージャは、
処理装置の第1のキャッシュ・レベルのキャッシュ・ラ
インブロックをゼロ化するアロケート・アンド・ゼロ
(DCBZ)命令に応答して実行することができる。表
示ステップは、第2のレベルのキャッシュ内のキャッシ
ュ・ライン内の複数のセクタのうちのどのセクタが、変
更された第1のレベルのキャッシュ内のキャッシュ・ラ
イン・ブロックに対応するかの表示を含む。所与のキャ
ッシュ・ライン内に2つのセクタしかない実施例では、
どのセクタが変更されたか、または第1のレベルのキャ
ッシュのキャッシュ・ラインに対していずれかのキャッ
シュ可能ライトスルー操作が実行されたかどうかを示す
ために3つの新しい状態を設ける。この新しいプロトコ
ルでは、無用なバス操作を実行せずに、より上位のレベ
ルで有効であるセクタを正しく追跡することができ、キ
ャッシュ可能ライトスルー操作がより効率的にサポート
される。
ロセッサ・コンピュータ・システムにおけるキャッシュ
・コヒーレンシを維持する方法であって、一般に、第1
の値を処理装置の第1のレベルのキャッシュ内のキャッ
シュ・ライン・ブロックと、処理装置の第2のレベルの
キャッシュ内のキャッシュ・ラインのセクタとにロード
し、次に処理装置の第1のレベルのキャッシュ内のキャ
ッシュ・ライン・ブロック内の値を変更するステップ
と、第2のレベルのキャッシュ内のキャッシュ・ライン
が上流で変更されたことを第2のレベルのキャッシュで
表示するステップとを含む方法で達成される。この表示
は、第2のレベルのキャッシュ内のキャッシュ・ライン
のセクタを変更せずに行われる。このプロシージャは、
処理装置の第1のキャッシュ・レベルのキャッシュ・ラ
インブロックをゼロ化するアロケート・アンド・ゼロ
(DCBZ)命令に応答して実行することができる。表
示ステップは、第2のレベルのキャッシュ内のキャッシ
ュ・ライン内の複数のセクタのうちのどのセクタが、変
更された第1のレベルのキャッシュ内のキャッシュ・ラ
イン・ブロックに対応するかの表示を含む。所与のキャ
ッシュ・ライン内に2つのセクタしかない実施例では、
どのセクタが変更されたか、または第1のレベルのキャ
ッシュのキャッシュ・ラインに対していずれかのキャッ
シュ可能ライトスルー操作が実行されたかどうかを示す
ために3つの新しい状態を設ける。この新しいプロトコ
ルでは、無用なバス操作を実行せずに、より上位のレベ
ルで有効であるセクタを正しく追跡することができ、キ
ャッシュ可能ライトスルー操作がより効率的にサポート
される。
【0022】
【発明の実施の形態】本発明は、図1のシステムのよう
なマルチプロセッサ・システムにおいてキャッシュ・コ
ヒーレンシを維持する方法を対象とするが、本発明は必
ずしも従来のコンピュータ・システムではないコンピュ
ータ・システムにも適用可能である。すなわち、コンピ
ュータ・システムは図1に図示されていない新しいハー
ドウェア構成要素を含んでいたり、既存の構成要素のた
めの新規な相互接続アーキテクチャを有していてもよ
い。したがって、当業者なら、本発明は図に示す汎用シ
ステムには限定されないことがわかるであろう。
なマルチプロセッサ・システムにおいてキャッシュ・コ
ヒーレンシを維持する方法を対象とするが、本発明は必
ずしも従来のコンピュータ・システムではないコンピュ
ータ・システムにも適用可能である。すなわち、コンピ
ュータ・システムは図1に図示されていない新しいハー
ドウェア構成要素を含んでいたり、既存の構成要素のた
めの新規な相互接続アーキテクチャを有していてもよ
い。したがって、当業者なら、本発明は図に示す汎用シ
ステムには限定されないことがわかるであろう。
【0023】次に図3を参照すると、本発明のキャッシ
ュ・コヒーレンシ・プロトコルの一実施例を示す状態図
が図示されている。このプロトコルは、図2に示す従来
技術のMESIプロトコルと同じ4つの状態(変更済
み、排他的、共用、及び無効)を含む点ではMESIプ
ロトコルと類似しているが、以下で詳述する上流の未定
義セクタの3つの新しい「U」状態も含む。この新しい
プロトコルを本明細書では「U−MESI」プロトコル
と呼ぶ。従来技術のプロトコルと同様に、この4つのM
−E−S−I状態は、要求プロセッサが求める項目の初
期状態とアクセスのタイプに基づいて変化することがで
きる。この4つの状態が変化する方式は、従来技術のM
ESIプロトコルと一般には同じであるが、以下で述べ
るような異なる点がある。
ュ・コヒーレンシ・プロトコルの一実施例を示す状態図
が図示されている。このプロトコルは、図2に示す従来
技術のMESIプロトコルと同じ4つの状態(変更済
み、排他的、共用、及び無効)を含む点ではMESIプ
ロトコルと類似しているが、以下で詳述する上流の未定
義セクタの3つの新しい「U」状態も含む。この新しい
プロトコルを本明細書では「U−MESI」プロトコル
と呼ぶ。従来技術のプロトコルと同様に、この4つのM
−E−S−I状態は、要求プロセッサが求める項目の初
期状態とアクセスのタイプに基づいて変化することがで
きる。この4つの状態が変化する方式は、従来技術のM
ESIプロトコルと一般には同じであるが、以下で述べ
るような異なる点がある。
【0024】図の実施例では、U−MESIプロトコル
は2つのセクタを備えたキャッシュ・ラインを有するキ
ャッシュに合わせて適合化されている。この実施例で
は、(1)2つのセクタのうちの第1のセクタ(「奇
数」セクタ)が変更される場合、(2)2つのセクタの
うちの第2のセクタ(「偶数」セクタ)が変更される場
合、及び(3)どちらのセクタも変更されない場合(両
方ともキャッシュ可能ライトスルー読み取り操作の結果
として共用される)の3つの事例が可能であるため3つ
の「U」状態がある。本明細書では、これらの状態のう
ちの第1の状態を「UIM」と呼び、第2の状態を
「UMI」と呼び、第3の状態を「USS」と呼ぶ。U−M
ESIプロトコルのこの実施例では、各キャッシュ項目
は項目がとることができる7つの状態(従来の4つの状
態と、3つの新しい「U」状態)のうちの1つの状態を
示す3ビットを有する。キャッシュ・ライン内の2つ以
上のセクタがある場合は、追加の「U」状態(及びキャ
ッシュ項目内の追加のビット)が必要になる。
は2つのセクタを備えたキャッシュ・ラインを有するキ
ャッシュに合わせて適合化されている。この実施例で
は、(1)2つのセクタのうちの第1のセクタ(「奇
数」セクタ)が変更される場合、(2)2つのセクタの
うちの第2のセクタ(「偶数」セクタ)が変更される場
合、及び(3)どちらのセクタも変更されない場合(両
方ともキャッシュ可能ライトスルー読み取り操作の結果
として共用される)の3つの事例が可能であるため3つ
の「U」状態がある。本明細書では、これらの状態のう
ちの第1の状態を「UIM」と呼び、第2の状態を
「UMI」と呼び、第3の状態を「USS」と呼ぶ。U−M
ESIプロトコルのこの実施例では、各キャッシュ項目
は項目がとることができる7つの状態(従来の4つの状
態と、3つの新しい「U」状態)のうちの1つの状態を
示す3ビットを有する。キャッシュ・ライン内の2つ以
上のセクタがある場合は、追加の「U」状態(及びキャ
ッシュ項目内の追加のビット)が必要になる。
【0025】表1に、最上位(L1)操作にかかわるキ
ャッシュ遷移を示す。
ャッシュ遷移を示す。
【表1】
【0026】表1の第1項では、L1キャッシュのキャ
ッシュ・ライン内の偶数セクタ(第2のセクタ)に対し
てDCBZ操作(書込みタイプの操作)が行われると、
それに対応する「I」(無効)状態のより下位レベルの
キャッシュが「UIM」に遷移する。すなわち、第2のセ
クタだけが変更済みとして示される。表1の第2項で
は、L1キャッシュのキャッシュ・ライン内の奇数セク
タ(第1のセクタ)に対してDCBZ操作が行われる
と、それに対応する「I」(無効)状態のより下位のキ
ャッシュが「UMI」に遷移する。すなわち、第1のセク
タだけが変更済みとして示される。
ッシュ・ライン内の偶数セクタ(第2のセクタ)に対し
てDCBZ操作(書込みタイプの操作)が行われると、
それに対応する「I」(無効)状態のより下位レベルの
キャッシュが「UIM」に遷移する。すなわち、第2のセ
クタだけが変更済みとして示される。表1の第2項で
は、L1キャッシュのキャッシュ・ライン内の奇数セク
タ(第1のセクタ)に対してDCBZ操作が行われる
と、それに対応する「I」(無効)状態のより下位のキ
ャッシュが「UMI」に遷移する。すなわち、第1のセク
タだけが変更済みとして示される。
【0027】同じラインの奇数セクタに前にDCBZ操
作が行われ、それに対応するより下位のキャッシュが
「UMI」状態であるときに偶数セクタにDCBZ操作が
行われるか(表1の第3項)、または同じラインの偶数
セクタに前にDCBZ操作が行われ、対応するより下位
のキャッシュが「UIM」状態のときに第2のセクタに対
してDCBZ操作が行われた場合(表1の第4項)、下
位レベルのキャッシュは「M」(変更済み)状態に状態
遷移して、そのライン全体が変更されたことを示す。し
かし、所与のラインについて前に1つのDCBZだけが
行われ、下位レベルのキャッシュのそのラインが
「UIM」または「UMI」状態であり、他方の(無効)ラ
インに対して「変更を意図した読取りまたは書込み」
(RWITM)操作を受ける場合、下位レベルのキャッ
シュ・ラインは「I」(無効)になり、変更されたセク
タ(Mセクタ)はより上位のキャッシュからフラッシュ
される。
作が行われ、それに対応するより下位のキャッシュが
「UMI」状態であるときに偶数セクタにDCBZ操作が
行われるか(表1の第3項)、または同じラインの偶数
セクタに前にDCBZ操作が行われ、対応するより下位
のキャッシュが「UIM」状態のときに第2のセクタに対
してDCBZ操作が行われた場合(表1の第4項)、下
位レベルのキャッシュは「M」(変更済み)状態に状態
遷移して、そのライン全体が変更されたことを示す。し
かし、所与のラインについて前に1つのDCBZだけが
行われ、下位レベルのキャッシュのそのラインが
「UIM」または「UMI」状態であり、他方の(無効)ラ
インに対して「変更を意図した読取りまたは書込み」
(RWITM)操作を受ける場合、下位レベルのキャッ
シュ・ラインは「I」(無効)になり、変更されたセク
タ(Mセクタ)はより上位のキャッシュからフラッシュ
される。
【0028】表1の第6項で、対象ブロックに対するL
1「ヒット」が発生し、より下位のキャッシュが
「USS」状態の場合、それらはその状態のままである。
すなわち、無効であるかのように扱われ、キャッシュさ
れない。ブロックに対してキャッシュ可能/ライトスル
ー読取り操作が行われた場合(表1の第7項)であっ
て、より下位のキャッシュが対応する「I」(無効)状
態のブロックを持っている場合、それらのキャッシュは
「USS」状態に遷移する。最後に、表1の第8項に示す
ように、上記で示されていない他のすべてのL1操作は
通常の遷移を受ける。すなわち従来技術のMESIプロ
トコルに従う。
1「ヒット」が発生し、より下位のキャッシュが
「USS」状態の場合、それらはその状態のままである。
すなわち、無効であるかのように扱われ、キャッシュさ
れない。ブロックに対してキャッシュ可能/ライトスル
ー読取り操作が行われた場合(表1の第7項)であっ
て、より下位のキャッシュが対応する「I」(無効)状
態のブロックを持っている場合、それらのキャッシュは
「USS」状態に遷移する。最後に、表1の第8項に示す
ように、上記で示されていない他のすべてのL1操作は
通常の遷移を受ける。すなわち従来技術のMESIプロ
トコルに従う。
【0029】表2に、システム・バス・スヌープ・トラ
ンザクションが「U」状態のキャッシュにどのように影
響するかを示す。
ンザクションが「U」状態のキャッシュにどのように影
響するかを示す。
【表2】
【0030】「U」状態では、キャッシュは処置を行わ
なければならないと認識しているが、スヌープを上流に
転送して適切な処置を判断しなければならない。表2に
は、「U」状態の1つに対するスヌープ・ヒットが発生
するまれな場合だけが示されている。これらの状況で
は、より下位のキャッシュは上流キャッシュの内容をフ
ラッシュして「I」(無効)状態に移行し、「再試行」
応答を出す。ただし、「USS」状態に対する読取りスヌ
ープ・ヒットが起こった場合は、コヒーレンシ応答は
「共用」になる。
なければならないと認識しているが、スヌープを上流に
転送して適切な処置を判断しなければならない。表2に
は、「U」状態の1つに対するスヌープ・ヒットが発生
するまれな場合だけが示されている。これらの状況で
は、より下位のキャッシュは上流キャッシュの内容をフ
ラッシュして「I」(無効)状態に移行し、「再試行」
応答を出す。ただし、「USS」状態に対する読取りスヌ
ープ・ヒットが起こった場合は、コヒーレンシ応答は
「共用」になる。
【0031】上述のU−MESIプロトコルによって、
前述の問題が両方とも解決される。すなわち、無用なバ
ス操作を実行せずにより上位のレベルで有効なセクタが
追跡され、キャッシュ可能ライトスルー操作が効率的に
サポートされる。その結果、メモリ帯域幅が増大し、ア
ドレス帯域幅が解放されると共に、バイト書込みが可能
になる。
前述の問題が両方とも解決される。すなわち、無用なバ
ス操作を実行せずにより上位のレベルで有効なセクタが
追跡され、キャッシュ可能ライトスルー操作が効率的に
サポートされる。その結果、メモリ帯域幅が増大し、ア
ドレス帯域幅が解放されると共に、バイト書込みが可能
になる。
【0032】まとめとして、本発明の構成に関して以下
の事項を開示する。
の事項を開示する。
【0033】(1)第1のキャッシュ・レベルが第2の
キャッシュ・レベルの上流にある、各処理装置が少なく
とも第1及び第2のレベルのキャッシュを含むキャッシ
ュ階層を有する複数の処理装置を有するマルチプロセッ
サ・コンピュータ・システムにおいてキャッシュ・コヒ
ーレンシを維持する方法であって、第1の値を処理装置
の第1のレベルのキャッシュ内のキャッシュ・ライン・
ブロックと、処理装置の第2のレベルのキャッシュ内の
キャッシュ・ラインのセクタとにロードするステップ
と、処理装置の第1のレベルのキャッシュ内のキャッシ
ュ・ライン・ブロック内の値を変更するステップと、第
2のレベルのキャッシュ内のキャッシュ・ラインのセク
タが上流で変更されたことを第2のレベルのキャッシュ
で表示するステップとを含む方法。 (2)前記変更ステップが、処理装置の第1のレベルの
キャッシュのキャッシュ・ライン・ブロックをゼロ・ア
ウトするステップを含む、上記(1)に記載の方法。 (3)他の少なくとも1つの値を、第2のレベルのキャ
ッシュ内のキャッシュ・ラインのセクタに対応する第1
のレベルのキャッシュの他のキャッシュ・ライン・ブロ
ックにロードするステップをさらに含む、上記(1)に
記載の方法。 (4)第1の値に対応するメモリ・ブロックにアクセス
する要求に関する第2の処理装置からの照会に応答する
ステップをさらに含む、上記(1)に記載の方法。 (5)表示する前記ステップが第2のレベルのキャッシ
ュ内のキャッシュ・ラインのセクタを変更せずに行われ
る、上記(1)に記載の方法。 (6)表示する前記ステップが、第2のレベルのキャッ
シュ内のキャッシュ・ライン内の複数のセクタ内のどの
セクタが変更された第1のレベルのキャッシュ内のキャ
ッシュ・ライン・ブロックに対応するかを示す表示を含
む、上記(1)に記載の方法。 (7)第2のレベルのキャッシュ内のキャッシュ・ライ
ンがセクタを2つしか持たず、表示する前記ステップが
2つのセクタのうちのどのセクタが変更された第1のレ
ベルのキャッシュ内のキャッシュ・ライン・ブロックに
対応するかを示す表示を含む、上記(1)に記載の方
法。 (8)表示する前記ステップが、第1のレベルのキャッ
シュのキャッシュ・ラインに対して行われたキャッシュ
可能ライトスルー操作の表示を含む、上記(1)に記載
の方法。 (9)上流の変更されたキャッシュ・ラインにアクセス
する試みに応答して、第1のレベルのキャッシュのキャ
ッシュ・ラインが無効であることを表示するステップを
さらに含む、上記(7)に記載の方法。 (10)上流の変更されたキャッシュ・ラインにアクセ
スする試みに応答して、第1のレベルのキャッシュのキ
ャッシュ・ラインが無効であることを表示するステップ
をさらに含む、上記(6)に記載の方法。 (11)表示する前記ステップが、第1のレベルのキャ
ッシュのキャッシュ・ラインに対して行われたキャッシ
ュ可能ライトスルー操作の表示を含む、上記(10)に
記載の方法。 (12)メモリ・デバイスと、前記メモリ・デバイスに
接続されたバスと、前記バスに接続され、各処理装置が
少なくとも第1のレベルのキャッシュと第2のレベルの
キャッシュとを有し、各前記キャッシュが複数のキャッ
シュ・ラインを有し、前記第2のレベルのキャッシュ内
の各前記キャッシュ・ラインが複数のセクタを有し、各
前記処理装置が前記第2のレベルのキャッシュ内の所与
のキャッシュ・ラインの所与のセクタが上流で変更され
るときそれを示す表示を提供する手段をさらに有する複
数の処理装置とを含むコンピュータ・システム。 (13)各前記処理装置がさらに、前記表示を転送する
ことによって前記所与のセクタに対応するメモリ・ブロ
ックにアクセスする要求に関する他の処理装置からの照
会に応答する、上記(12)に記載のコンピュータ・シ
ステム。 (14)各前記処理装置が前記所与のセクタを変更する
ことなく前記表示を提供する、上記(12)に記載のコ
ンピュータ・システム。 (15)前記第1のレベルのキャッシュ内の各前記キャ
ッシュ・ラインが複数のセクタを有し、前記第2のレベ
ルのキャッシュ内の各前記キャッシュ・ラインが前記第
1のレベルのキャッシュ内の各前記キャッシュ・ライン
よりも多くのセクタを有する、上記(12)に記載のコ
ンピュータ・システム。 (16)前記表示を提供する前記手段が、前記第2のレ
ベルのキャッシュ内の前記キャッシュ・ライン内の前記
複数のセクタ内のどのセクタが、変更された前記第1の
レベルのキャッシュ内のブロックに対応するかを表示す
る手段を含む、上記(12)に記載のコンピュータ・シ
ステム。 (17)前記表示を提供する前記手段が、前記第1のレ
ベルのキャッシュのキャッシュ・ラインに対していずれ
かのキャッシュ可能ライトスルー操作が行われるときそ
れを示す手段を含む、上記(12)に記載のコンピュー
タ・システム。 (18)前記表示を提供する前記手段が、前記第1のレ
ベルのキャッシュの前記キャッシュ・ラインにアクセス
する試みに応答して、前記第2のレベルのキャッシュの
前記所与のキャッシュ・ラインに対応する前記第2のレ
ベルのキャッシュのキャッシュ・ラインが無効であるこ
とを示す手段をさらに含む、上記(12)に記載のコン
ピュータ・システム。 (19)前記表示を提供する前記手段が、前記第1のレ
ベルのキャッシュの前記キャッシュ・ラインに対してい
ずれかのキャッシュ可能ライトスルー操作が行われると
きそれを表示する手段をさらに含む、上記(18)に記
載のコンピュータ・システム。
キャッシュ・レベルの上流にある、各処理装置が少なく
とも第1及び第2のレベルのキャッシュを含むキャッシ
ュ階層を有する複数の処理装置を有するマルチプロセッ
サ・コンピュータ・システムにおいてキャッシュ・コヒ
ーレンシを維持する方法であって、第1の値を処理装置
の第1のレベルのキャッシュ内のキャッシュ・ライン・
ブロックと、処理装置の第2のレベルのキャッシュ内の
キャッシュ・ラインのセクタとにロードするステップ
と、処理装置の第1のレベルのキャッシュ内のキャッシ
ュ・ライン・ブロック内の値を変更するステップと、第
2のレベルのキャッシュ内のキャッシュ・ラインのセク
タが上流で変更されたことを第2のレベルのキャッシュ
で表示するステップとを含む方法。 (2)前記変更ステップが、処理装置の第1のレベルの
キャッシュのキャッシュ・ライン・ブロックをゼロ・ア
ウトするステップを含む、上記(1)に記載の方法。 (3)他の少なくとも1つの値を、第2のレベルのキャ
ッシュ内のキャッシュ・ラインのセクタに対応する第1
のレベルのキャッシュの他のキャッシュ・ライン・ブロ
ックにロードするステップをさらに含む、上記(1)に
記載の方法。 (4)第1の値に対応するメモリ・ブロックにアクセス
する要求に関する第2の処理装置からの照会に応答する
ステップをさらに含む、上記(1)に記載の方法。 (5)表示する前記ステップが第2のレベルのキャッシ
ュ内のキャッシュ・ラインのセクタを変更せずに行われ
る、上記(1)に記載の方法。 (6)表示する前記ステップが、第2のレベルのキャッ
シュ内のキャッシュ・ライン内の複数のセクタ内のどの
セクタが変更された第1のレベルのキャッシュ内のキャ
ッシュ・ライン・ブロックに対応するかを示す表示を含
む、上記(1)に記載の方法。 (7)第2のレベルのキャッシュ内のキャッシュ・ライ
ンがセクタを2つしか持たず、表示する前記ステップが
2つのセクタのうちのどのセクタが変更された第1のレ
ベルのキャッシュ内のキャッシュ・ライン・ブロックに
対応するかを示す表示を含む、上記(1)に記載の方
法。 (8)表示する前記ステップが、第1のレベルのキャッ
シュのキャッシュ・ラインに対して行われたキャッシュ
可能ライトスルー操作の表示を含む、上記(1)に記載
の方法。 (9)上流の変更されたキャッシュ・ラインにアクセス
する試みに応答して、第1のレベルのキャッシュのキャ
ッシュ・ラインが無効であることを表示するステップを
さらに含む、上記(7)に記載の方法。 (10)上流の変更されたキャッシュ・ラインにアクセ
スする試みに応答して、第1のレベルのキャッシュのキ
ャッシュ・ラインが無効であることを表示するステップ
をさらに含む、上記(6)に記載の方法。 (11)表示する前記ステップが、第1のレベルのキャ
ッシュのキャッシュ・ラインに対して行われたキャッシ
ュ可能ライトスルー操作の表示を含む、上記(10)に
記載の方法。 (12)メモリ・デバイスと、前記メモリ・デバイスに
接続されたバスと、前記バスに接続され、各処理装置が
少なくとも第1のレベルのキャッシュと第2のレベルの
キャッシュとを有し、各前記キャッシュが複数のキャッ
シュ・ラインを有し、前記第2のレベルのキャッシュ内
の各前記キャッシュ・ラインが複数のセクタを有し、各
前記処理装置が前記第2のレベルのキャッシュ内の所与
のキャッシュ・ラインの所与のセクタが上流で変更され
るときそれを示す表示を提供する手段をさらに有する複
数の処理装置とを含むコンピュータ・システム。 (13)各前記処理装置がさらに、前記表示を転送する
ことによって前記所与のセクタに対応するメモリ・ブロ
ックにアクセスする要求に関する他の処理装置からの照
会に応答する、上記(12)に記載のコンピュータ・シ
ステム。 (14)各前記処理装置が前記所与のセクタを変更する
ことなく前記表示を提供する、上記(12)に記載のコ
ンピュータ・システム。 (15)前記第1のレベルのキャッシュ内の各前記キャ
ッシュ・ラインが複数のセクタを有し、前記第2のレベ
ルのキャッシュ内の各前記キャッシュ・ラインが前記第
1のレベルのキャッシュ内の各前記キャッシュ・ライン
よりも多くのセクタを有する、上記(12)に記載のコ
ンピュータ・システム。 (16)前記表示を提供する前記手段が、前記第2のレ
ベルのキャッシュ内の前記キャッシュ・ライン内の前記
複数のセクタ内のどのセクタが、変更された前記第1の
レベルのキャッシュ内のブロックに対応するかを表示す
る手段を含む、上記(12)に記載のコンピュータ・シ
ステム。 (17)前記表示を提供する前記手段が、前記第1のレ
ベルのキャッシュのキャッシュ・ラインに対していずれ
かのキャッシュ可能ライトスルー操作が行われるときそ
れを示す手段を含む、上記(12)に記載のコンピュー
タ・システム。 (18)前記表示を提供する前記手段が、前記第1のレ
ベルのキャッシュの前記キャッシュ・ラインにアクセス
する試みに応答して、前記第2のレベルのキャッシュの
前記所与のキャッシュ・ラインに対応する前記第2のレ
ベルのキャッシュのキャッシュ・ラインが無効であるこ
とを示す手段をさらに含む、上記(12)に記載のコン
ピュータ・システム。 (19)前記表示を提供する前記手段が、前記第1のレ
ベルのキャッシュの前記キャッシュ・ラインに対してい
ずれかのキャッシュ可能ライトスルー操作が行われると
きそれを表示する手段をさらに含む、上記(18)に記
載のコンピュータ・システム。
【図1】従来技術のマルチプロセッサ・コンピュータ・
システムのブロック図である。
システムのブロック図である。
【図2】従来技術のキャッシュ・コヒーレンシ・プロト
コル(MESI)を示す状態図である。
コル(MESI)を示す状態図である。
【図3】本発明のキャッシュ・コヒーレンシ・プロトコ
ルを示す状態図である。
ルを示す状態図である。
12 処理装置 14 入出力装置 16 システム・メモリ 18 ファームウェア 20 バス 22 プロセッサ・コア 24 一次キャッシュ 30 二次キャッシュ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョン・スチィーブン・ダッドソン アメリカ合衆国78660 テキサス州フラジ ャービル ベル・ロック・サークル 1205 (72)発明者 ジェリー・ドン・ルイス アメリカ合衆国78681 テキサス州ラウン ド・ロック アローヘッド・サークル 3409
Claims (19)
- 【請求項1】第1のキャッシュ・レベルが第2のキャッ
シュ・レベルの上流にある、各処理装置が少なくとも第
1及び第2のレベルのキャッシュを含むキャッシュ階層
を有する複数の処理装置を有するマルチプロセッサ・コ
ンピュータ・システムにおいてキャッシュ・コヒーレン
シを維持する方法であって、 第1の値を処理装置の第1のレベルのキャッシュ内のキ
ャッシュ・ライン・ブロックと、処理装置の第2のレベ
ルのキャッシュ内のキャッシュ・ラインのセクタとにロ
ードするステップと、 処理装置の第1のレベルのキャッシュ内のキャッシュ・
ライン・ブロック内の値を変更するステップと、 第2のレベルのキャッシュ内のキャッシュ・ラインのセ
クタが上流で変更されたことを第2のレベルのキャッシ
ュで表示するステップとを含む方法。 - 【請求項2】前記変更ステップが、処理装置の第1のレ
ベルのキャッシュのキャッシュ・ライン・ブロックをゼ
ロ・アウトするステップを含む、請求項1に記載の方
法。 - 【請求項3】他の少なくとも1つの値を、第2のレベル
のキャッシュ内のキャッシュ・ラインのセクタに対応す
る第1のレベルのキャッシュの他のキャッシュ・ライン
・ブロックにロードするステップをさらに含む、請求項
1に記載の方法。 - 【請求項4】第1の値に対応するメモリ・ブロックにア
クセスする要求に関する第2の処理装置からの照会に応
答するステップをさらに含む、請求項1に記載の方法。 - 【請求項5】表示する前記ステップが第2のレベルのキ
ャッシュ内のキャッシュ・ラインのセクタを変更せずに
行われる、請求項1に記載の方法。 - 【請求項6】表示する前記ステップが、第2のレベルの
キャッシュ内のキャッシュ・ライン内の複数のセクタ内
のどのセクタが変更された第1のレベルのキャッシュ内
のキャッシュ・ライン・ブロックに対応するかを示す表
示を含む、請求項1に記載の方法。 - 【請求項7】第2のレベルのキャッシュ内のキャッシュ
・ラインがセクタを2つしか持たず、表示する前記ステ
ップが2つのセクタのうちのどのセクタが変更された第
1のレベルのキャッシュ内のキャッシュ・ライン・ブロ
ックに対応するかを示す表示を含む、請求項1に記載の
方法。 - 【請求項8】表示する前記ステップが、第1のレベルの
キャッシュのキャッシュ・ラインに対して行われたキャ
ッシュ可能ライトスルー操作の表示を含む、請求項1に
記載の方法。 - 【請求項9】上流の変更されたキャッシュ・ラインにア
クセスする試みに応答して、第1のレベルのキャッシュ
のキャッシュ・ラインが無効であることを表示するステ
ップをさらに含む、請求項7に記載の方法。 - 【請求項10】上流の変更されたキャッシュ・ラインに
アクセスする試みに応答して、第1のレベルのキャッシ
ュのキャッシュ・ラインが無効であることを表示するス
テップをさらに含む、請求項6に記載の方法。 - 【請求項11】表示する前記ステップが、第1のレベル
のキャッシュのキャッシュ・ラインに対して行われたキ
ャッシュ可能ライトスルー操作の表示を含む、請求項1
0に記載の方法。 - 【請求項12】メモリ・デバイスと、 前記メモリ・デバイスに接続されたバスと、 前記バスに接続され、各処理装置が少なくとも第1のレ
ベルのキャッシュと第2のレベルのキャッシュとを有
し、各前記キャッシュが複数のキャッシュ・ラインを有
し、前記第2のレベルのキャッシュ内の各前記キャッシ
ュ・ラインが複数のセクタを有し、各前記処理装置が前
記第2のレベルのキャッシュ内の所与のキャッシュ・ラ
インの所与のセクタが上流で変更されるときそれを示す
表示を提供する手段をさらに有する複数の処理装置とを
含むコンピュータ・システム。 - 【請求項13】各前記処理装置がさらに、前記表示を転
送することによって前記所与のセクタに対応するメモリ
・ブロックにアクセスする要求に関する他の処理装置か
らの照会に応答する、請求項12に記載のコンピュータ
・システム。 - 【請求項14】各前記処理装置が前記所与のセクタを変
更することなく前記表示を提供する、請求項12に記載
のコンピュータ・システム。 - 【請求項15】前記第1のレベルのキャッシュ内の各前
記キャッシュ・ラインが複数のセクタを有し、 前記第2のレベルのキャッシュ内の各前記キャッシュ・
ラインが前記第1のレベルのキャッシュ内の各前記キャ
ッシュ・ラインよりも多くのセクタを有する、請求項1
2に記載のコンピュータ・システム。 - 【請求項16】前記表示を提供する前記手段が、前記第
2のレベルのキャッシュ内の前記キャッシュ・ライン内
の前記複数のセクタ内のどのセクタが、変更された前記
第1のレベルのキャッシュ内のブロックに対応するかを
表示する手段を含む、請求項12に記載のコンピュータ
・システム。 - 【請求項17】前記表示を提供する前記手段が、前記第
1のレベルのキャッシュのキャッシュ・ラインに対して
いずれかのキャッシュ可能ライトスルー操作が行われる
ときそれを示す手段を含む、請求項12に記載のコンピ
ュータ・システム。 - 【請求項18】前記表示を提供する前記手段が、前記第
1のレベルのキャッシュの前記キャッシュ・ラインにア
クセスする試みに応答して、前記第2のレベルのキャッ
シュの前記所与のキャッシュ・ラインに対応する前記第
2のレベルのキャッシュのキャッシュ・ラインが無効で
あることを示す手段をさらに含む、請求項12に記載の
コンピュータ・システム。 - 【請求項19】前記表示を提供する前記手段が、前記第
1のレベルのキャッシュの前記キャッシュ・ラインに対
していずれかのキャッシュ可能ライトスルー操作が行わ
れるときそれを表示する手段をさらに含む、請求項18
に記載のコンピュータ・システム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/839545 | 1997-04-14 | ||
US08/839,545 US6374330B1 (en) | 1997-04-14 | 1997-04-14 | Cache-coherency protocol with upstream undefined state |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10301849A true JPH10301849A (ja) | 1998-11-13 |
JP3627037B2 JP3627037B2 (ja) | 2005-03-09 |
Family
ID=25280022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP09745798A Expired - Fee Related JP3627037B2 (ja) | 1997-04-14 | 1998-04-09 | キャッシュ・コヒーレンシを維持する方法及びコンピュータ・システム |
Country Status (3)
Country | Link |
---|---|
US (2) | US6374330B1 (ja) |
JP (1) | JP3627037B2 (ja) |
CN (1) | CN1142502C (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2339472A2 (en) | 2009-12-25 | 2011-06-29 | Fujitsu Limited | Arithmetic processing unit, information processing device, and cache memory control method |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6345339B1 (en) * | 1998-02-17 | 2002-02-05 | International Business Machines Corporation | Pseudo precise I-cache inclusivity for vertical caches |
US6378048B1 (en) * | 1998-11-12 | 2002-04-23 | Intel Corporation | “SLIME” cache coherency system for agents with multi-layer caches |
JP3550092B2 (ja) * | 1998-12-10 | 2004-08-04 | 富士通株式会社 | キャッシュ装置及び制御方法 |
US6636950B1 (en) * | 1998-12-17 | 2003-10-21 | Massachusetts Institute Of Technology | Computer architecture for shared memory access |
US6918009B1 (en) * | 1998-12-18 | 2005-07-12 | Fujitsu Limited | Cache device and control method for controlling cache memories in a multiprocessor system |
US6338124B1 (en) | 1999-08-04 | 2002-01-08 | International Business Machines Corporation | Multiprocessor system bus with system controller explicitly updating snooper LRU information |
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 |
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 |
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 |
US6343344B1 (en) | 1999-08-04 | 2002-01-29 | International Business Machines Corporation | System bus directory snooping mechanism for read/castout (RCO) address transaction |
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 |
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 |
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 |
US6754779B1 (en) * | 1999-08-23 | 2004-06-22 | Advanced Micro Devices | SDRAM read prefetch from multiple master devices |
US6405289B1 (en) * | 1999-11-09 | 2002-06-11 | International Business Machines Corporation | Multiprocessor system in which a cache serving as a highest point of coherency is indicated by a snoop response |
US6345342B1 (en) * | 1999-11-09 | 2002-02-05 | International Business Machines Corporation | Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line |
US6349369B1 (en) * | 1999-11-09 | 2002-02-19 | International Business Machines Corporation | Protocol for transferring modified-unsolicited state during data intervention |
US6374333B1 (en) * | 1999-11-09 | 2002-04-16 | International Business Machines Corporation | Cache coherency protocol in which a load instruction hint bit is employed to indicate deallocation of a modified cache line supplied by intervention |
US6345344B1 (en) * | 1999-11-09 | 2002-02-05 | International Business Machines Corporation | Cache allocation mechanism for modified-unsolicited cache state that modifies victimization priority bits |
US6321306B1 (en) * | 1999-11-09 | 2001-11-20 | International Business Machines Corporation | High performance multiprocessor system with modified-unsolicited cache state |
US6345343B1 (en) * | 1999-11-09 | 2002-02-05 | International Business Machines Corporation | Multiprocessor system bus protocol with command and snoop responses for modified-unsolicited cache state |
US6810467B1 (en) * | 2000-08-21 | 2004-10-26 | Intel Corporation | Method and apparatus for centralized snoop filtering |
US7069391B1 (en) * | 2000-08-30 | 2006-06-27 | Unisys Corporation | Method for improved first level cache coherency |
US6865645B1 (en) | 2000-10-02 | 2005-03-08 | International Business Machines Corporation | Program store compare handling between instruction and operand caches |
US6757785B2 (en) | 2001-11-27 | 2004-06-29 | International Business Machines Corporation | Method and system for improving cache performance in a multiprocessor computer |
EP1552396B1 (en) * | 2002-10-04 | 2013-04-10 | Callahan Cellular L.L.C. | Data processing system having a hierarchical memory organization and method for operating the same |
US7380059B2 (en) | 2003-05-16 | 2008-05-27 | Pillar Data Systems, Inc. | Methods and systems of cache memory management and snapshot operations |
US7168070B2 (en) * | 2004-05-25 | 2007-01-23 | International Business Machines Corporation | Aggregate bandwidth through management using insertion of reset instructions for cache-to-cache data transfer |
US7536513B2 (en) * | 2005-03-31 | 2009-05-19 | International Business Machines Corporation | Data processing system, cache system and method for issuing a request on an interconnect fabric without reference to a lower level cache based upon a tagged cache state |
US7512742B2 (en) * | 2006-01-17 | 2009-03-31 | International Business Machines Corporation | Data processing system, cache system and method for precisely forming an invalid coherency state indicating a broadcast scope |
GB2442984B (en) | 2006-10-17 | 2011-04-06 | Advanced Risc Mach Ltd | Handling of write access requests to shared memory in a data processing apparatus |
WO2008047180A1 (en) * | 2006-10-20 | 2008-04-24 | Freescale Semiconductor, Inc. | System and method for fetching an information unit |
US8924653B2 (en) * | 2006-10-31 | 2014-12-30 | Hewlett-Packard Development Company, L.P. | Transactional cache memory system |
CN101595462B (zh) | 2007-01-31 | 2012-04-25 | 高通股份有限公司 | 用以减少多级高速缓冲存储器层级中的掷出的设备和方法 |
US8218811B2 (en) | 2007-09-28 | 2012-07-10 | Uti Limited Partnership | Method and system for video interaction based on motion swarms |
US9047197B2 (en) * | 2007-10-23 | 2015-06-02 | Oracle America, Inc. | Non-coherent store instruction for fast inter-strand data communication for processors with write-through L1 caches |
US8131953B2 (en) * | 2007-12-17 | 2012-03-06 | International Business Machines Corporation | Tracking store ordering hazards in an out-of-order store queue |
US8112604B2 (en) | 2007-12-17 | 2012-02-07 | International Business Machines Corporation | Tracking load store ordering hazards |
US8423721B2 (en) | 2008-04-30 | 2013-04-16 | Freescale Semiconductor, Inc. | Cache coherency protocol in a data processing system |
US8762652B2 (en) * | 2008-04-30 | 2014-06-24 | Freescale Semiconductor, Inc. | Cache coherency protocol in a data processing system |
US8706974B2 (en) * | 2008-04-30 | 2014-04-22 | Freescale Semiconductor, Inc. | Snoop request management in a data processing system |
US20110202727A1 (en) * | 2010-02-18 | 2011-08-18 | Qualcomm Incorporated | Apparatus and Methods to Reduce Duplicate Line Fills in a Victim Cache |
US9274971B2 (en) * | 2012-11-27 | 2016-03-01 | International Business Machines Corporation | Low latency data exchange |
US9250954B2 (en) * | 2013-01-17 | 2016-02-02 | Xockets, Inc. | Offload processor modules for connection to system memory, and corresponding methods and systems |
US9684603B2 (en) * | 2015-01-22 | 2017-06-20 | Empire Technology Development Llc | Memory initialization using cache state |
US9892039B2 (en) * | 2015-04-21 | 2018-02-13 | Oracle International Corporation | Non-temporal write combining using cache resources |
US20180095884A1 (en) * | 2016-09-30 | 2018-04-05 | Intel Corporation | Mass storage cache in non volatile level of multi-level system memory |
US10620846B2 (en) * | 2016-10-26 | 2020-04-14 | ScaleFlux, Inc. | Enhancing flash translation layer to improve performance of databases and filesystems |
CN106502920B (zh) * | 2016-11-08 | 2019-09-24 | 郑州云海信息技术有限公司 | 一种基于mesi的缓存方法、装置和处理器 |
ES2895266T3 (es) * | 2016-12-12 | 2022-02-18 | Intel Corp | Aparatos y métodos para una arquitectura de procesador |
US10282296B2 (en) * | 2016-12-12 | 2019-05-07 | Intel Corporation | Zeroing a cache line |
CN114297100B (zh) * | 2021-12-28 | 2023-03-24 | 摩尔线程智能科技(北京)有限责任公司 | 用于缓存的写策略调整方法、缓存装置及计算设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0461926B1 (en) * | 1990-06-15 | 1998-09-02 | Compaq Computer Corporation | Multilevel inclusion in multilevel cache hierarchies |
US5671391A (en) * | 1994-01-10 | 1997-09-23 | Ncr Corporation | Coherent copyback protocol for multi-level cache memory systems |
US5715428A (en) * | 1994-02-28 | 1998-02-03 | Intel Corporation | Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system |
US5577227A (en) * | 1994-08-04 | 1996-11-19 | Finnell; James S. | Method for decreasing penalty resulting from a cache miss in multi-level cache system |
US5623632A (en) * | 1995-05-17 | 1997-04-22 | International Business Machines Corporation | System and method for improving multilevel cache performance in a multiprocessing 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 |
US5737751A (en) * | 1996-03-26 | 1998-04-07 | Intellectual Business Machines Corporation | Cache memory management system having reduced reloads to a second level cache for enhanced memory performance in a data processing system |
US5778422A (en) * | 1996-04-04 | 1998-07-07 | International Business Machines Corporation | Data processing system memory controller that selectively caches data associated with write requests |
US5787469A (en) * | 1996-09-06 | 1998-07-28 | Intel Corporation | System and method for exclusively writing tag during write allocate requests |
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 |
-
1997
- 1997-04-14 US US08/839,545 patent/US6374330B1/en not_active Expired - Fee Related
- 1997-12-17 US US08/992,788 patent/US6021468A/en not_active Expired - Fee Related
-
1998
- 1998-03-23 CN CNB981056814A patent/CN1142502C/zh not_active Expired - Fee Related
- 1998-04-09 JP JP09745798A patent/JP3627037B2/ja not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2339472A2 (en) | 2009-12-25 | 2011-06-29 | Fujitsu Limited | Arithmetic processing unit, information processing device, and cache memory control method |
US8856478B2 (en) | 2009-12-25 | 2014-10-07 | Fujitsu Limited | Arithmetic processing unit, information processing device, and cache memory control method |
Also Published As
Publication number | Publication date |
---|---|
US6374330B1 (en) | 2002-04-16 |
CN1142502C (zh) | 2004-03-17 |
CN1196530A (zh) | 1998-10-21 |
US6021468A (en) | 2000-02-01 |
JP3627037B2 (ja) | 2005-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3627037B2 (ja) | キャッシュ・コヒーレンシを維持する方法及びコンピュータ・システム | |
JP3888769B2 (ja) | データ供給方法及びコンピュータ・システム | |
JP3254433B2 (ja) | 再試行されるスヌープ・ヒットに対してコヒーレンシ状態を最終的な状態に向かって進める方法 | |
KR100885277B1 (ko) | 캐시에서의 라인들을 추론적으로 무효화하는 방법 및 시스템 | |
US5551005A (en) | Apparatus and method of handling race conditions in mesi-based multiprocessor system with private caches | |
JP3431824B2 (ja) | アクセス方法及び処理装置 | |
US5715428A (en) | Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system | |
US5325504A (en) | Method and apparatus for incorporating cache line replacement and cache write policy information into tag directories in a cache system | |
JP3714617B2 (ja) | キャッシュ階層で首尾一貫性を維持する方法、コンピュータ・システム、及び処理ユニット | |
JP3007872B2 (ja) | マルチプロセッサ・データ処理システム内でキャッシュ・コヒーレンシを維持するキャッシュ・コヒーレンシ・プロトコルを提供する方法及び装置 | |
US5940856A (en) | Cache intervention from only one of many cache lines sharing an unmodified value | |
JP3434462B2 (ja) | 割振り解除方法およびデータ処理システム | |
US5797026A (en) | Method and apparatus for self-snooping a bus during a boundary transaction | |
US5940864A (en) | Shared memory-access priorization method for multiprocessors using caches and snoop responses | |
US6574714B2 (en) | Efficient instruction cache coherency maintenance mechanism for scalable multiprocessor computer system with write-back data cache | |
KR19980079663A (ko) | Smp 버스의 최근 판독 상태에서의 캐시 라인들의 공유 개입 방법 | |
JP2000250884A (ja) | 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム | |
US6615321B2 (en) | Mechanism for collapsing store misses in an SMP computer system | |
JPH0721085A (ja) | メモリとi/o装置の間で転送されるデータをキャッシュするためのストリーミングキャッシュおよびその方法 | |
US5996049A (en) | Cache-coherency protocol with recently read state for data and instructions | |
JPH11328024A (ja) | 垂直キャッシュのための擬似精細i―キャッシュ包含性 | |
US7464227B2 (en) | Method and apparatus for supporting opportunistic sharing in coherent multiprocessors | |
US6336169B1 (en) | Background kill system bus transaction to optimize coherency transactions on a multiprocessor system bus | |
JPH11328016A (ja) | 命令キャッシュとデ―タ・キャッシュ間のコヒ―レンシを維持する方法および装置 | |
JP3007871B2 (ja) | アーキテクチャ操作を管理する方法及び装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040401 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041116 |
|
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: 20071217 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081217 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |