JPH10254773A - アクセス方法、処理装置およびコンピュータ・システム - Google Patents
アクセス方法、処理装置およびコンピュータ・システムInfo
- Publication number
- JPH10254773A JPH10254773A JP10034835A JP3483598A JPH10254773A JP H10254773 A JPH10254773 A JP H10254773A JP 10034835 A JP10034835 A JP 10034835A JP 3483598 A JP3483598 A JP 3483598A JP H10254773 A JPH10254773 A JP H10254773A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- reserved
- caches
- value
- write
- 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【課題】 処理装置がマルチレベル・キャッシュを有す
るマルチプロセッサ・コンピュータ・システムにおい
て、ロード/予約命令を処理する方法を提供すること。 【解決手段】 本発明は、メモリ装置から全てのキャッ
シュに値をロードし、この値が上位キャッシュからキャ
ストアウトされる時にのみ予約バス動作を上位レベル・
キャッシュから次の下位レベル・キャッシュに送り、そ
の後、予約バス動作を送った後に、上位キャッシュから
この値をキャストアウトすることによって、コンピュー
タ・メモリ中の値にアクセスする方法を提供する。すな
わち、この値が任意の所与のキャッシュからキャストア
ウトされるとき、その所与のキャッシュから次の下位レ
ベル・キャッシュに予約バス動作が送られるが、この予
約バス動作は全ての下位キャッシュに送られるわけでは
ない。アドレスに書き込むこのような試みに応答して、
ブロックの予約済みのマークが除去される。
るマルチプロセッサ・コンピュータ・システムにおい
て、ロード/予約命令を処理する方法を提供すること。 【解決手段】 本発明は、メモリ装置から全てのキャッ
シュに値をロードし、この値が上位キャッシュからキャ
ストアウトされる時にのみ予約バス動作を上位レベル・
キャッシュから次の下位レベル・キャッシュに送り、そ
の後、予約バス動作を送った後に、上位キャッシュから
この値をキャストアウトすることによって、コンピュー
タ・メモリ中の値にアクセスする方法を提供する。すな
わち、この値が任意の所与のキャッシュからキャストア
ウトされるとき、その所与のキャッシュから次の下位レ
ベル・キャッシュに予約バス動作が送られるが、この予
約バス動作は全ての下位キャッシュに送られるわけでは
ない。アドレスに書き込むこのような試みに応答して、
ブロックの予約済みのマークが除去される。
Description
【0001】
【発明の属する技術分野】本発明は一般にコンピュータ
・システムに関し、さらに詳細には、コンピュータ・プ
ロセッサで使用するキャッシュを動作させる命令を処理
する方法に関する。
・システムに関し、さらに詳細には、コンピュータ・プ
ロセッサで使用するキャッシュを動作させる命令を処理
する方法に関する。
【0002】
【従来の技術】従来のマルチプロセッサ・コンピュータ
・システム10の基本構造を図1に示す。コンピュータ
・システム10は、プログラム命令を実行するために処
理装置で使用する入出力(I/O)装置14(表示モニ
タ、キーボード、永続記憶装置など)、メモリ装置16
(動的ランダム・アクセス・メモリ、すなわちDRAM
など)、ならびにコンピュータが最初にオンになった時
には必ず周辺装置の1つ(通常は永続記憶装置)からオ
ペレーティング・システムを探索しロードすることを主
な目的とするファームウェア18を含めて、様々な周辺
装置に接続された複数の処理装置12a、12b、およ
び12cを有する。処理装置12aないし12cは、バ
ス20を含めた様々な手段によって周辺装置と通信す
る。コンピュータ・システム10は、図示はしていない
が、たとえばモデムやプリンタなどへの接続用であるシ
リアル・ポートおよび並列ポートなど、多くの追加の構
成要素を有することができる。当業者なら、図1のブロ
ック・ダイアグラムに示すものと共に使用することがで
きるその他の構成要素が存在することをさらに理解する
であろう。例えば、ディスプレイ・アダプタを使用する
とビデオ表示モニタを制御することができ、メモリ・コ
ントローラを使用するとメモリ16にアクセスすること
ができる。コンピュータはまた、4台以上の処理装置を
有することもできる。
・システム10の基本構造を図1に示す。コンピュータ
・システム10は、プログラム命令を実行するために処
理装置で使用する入出力(I/O)装置14(表示モニ
タ、キーボード、永続記憶装置など)、メモリ装置16
(動的ランダム・アクセス・メモリ、すなわちDRAM
など)、ならびにコンピュータが最初にオンになった時
には必ず周辺装置の1つ(通常は永続記憶装置)からオ
ペレーティング・システムを探索しロードすることを主
な目的とするファームウェア18を含めて、様々な周辺
装置に接続された複数の処理装置12a、12b、およ
び12cを有する。処理装置12aないし12cは、バ
ス20を含めた様々な手段によって周辺装置と通信す
る。コンピュータ・システム10は、図示はしていない
が、たとえばモデムやプリンタなどへの接続用であるシ
リアル・ポートおよび並列ポートなど、多くの追加の構
成要素を有することができる。当業者なら、図1のブロ
ック・ダイアグラムに示すものと共に使用することがで
きるその他の構成要素が存在することをさらに理解する
であろう。例えば、ディスプレイ・アダプタを使用する
とビデオ表示モニタを制御することができ、メモリ・コ
ントローラを使用するとメモリ16にアクセスすること
ができる。コンピュータはまた、4台以上の処理装置を
有することもできる。
【0003】対称マルチプロセッサ(SMP)コンピュ
ータでは、全ての処理装置12aないし12cは一般に
同一である。すなわち、それらは全て共通した命令およ
びプロトコルのセットまたはサブセットを使用して動作
し、一般に同様のアーキテクチャを有する。通常のアー
キテクチャを図2に示す。処理装置12は、プログラム
命令を実行してコンピュータを動作させる複数のレジス
タおよび実行装置を有するプロセッサ22を含む。この
プロセッサはまた、命令キャッシュ24やデータ・キャ
ッシュ26などのキャッシュも有することができる。こ
れらのキャッシュは、プロセッサのレジスタおよび実行
装置と一体化してパッケージされている場合には「オン
ボード」と呼ばれる。一般にキャッシュは、プロセッサ
から繰り返しアクセスされる可能性のある値を一時的に
記憶し、メモリ16からそれらの値をロードする長い段
階を避けることにより、処理を高速化するするために使
用する。
ータでは、全ての処理装置12aないし12cは一般に
同一である。すなわち、それらは全て共通した命令およ
びプロトコルのセットまたはサブセットを使用して動作
し、一般に同様のアーキテクチャを有する。通常のアー
キテクチャを図2に示す。処理装置12は、プログラム
命令を実行してコンピュータを動作させる複数のレジス
タおよび実行装置を有するプロセッサ22を含む。この
プロセッサはまた、命令キャッシュ24やデータ・キャ
ッシュ26などのキャッシュも有することができる。こ
れらのキャッシュは、プロセッサのレジスタおよび実行
装置と一体化してパッケージされている場合には「オン
ボード」と呼ばれる。一般にキャッシュは、プロセッサ
から繰り返しアクセスされる可能性のある値を一時的に
記憶し、メモリ16からそれらの値をロードする長い段
階を避けることにより、処理を高速化するするために使
用する。
【0004】処理装置12は、キャッシュ28などの追
加のキャッシュを含むことができる。キャッシュ28
は、オンボード(レベル1)・キャッシュ24および2
6をサポートするので、レベル2(L2)キャッシュと
呼ばれる。換言すれば、キャッシュ28はメモリ16と
オンボード・キャッシュの間の中間物として働き、アク
セスが長くなる不利はあるものの、オンボード・キャッ
シュよりはるかに大量の情報(命令およびデータ)を記
憶することができる。例えば、キャッシュ28は、25
6または512キロバイトの記憶容量を有するチップと
し、プロセッサ12は、全記憶容量が64キロバイトの
オンボード・キャッシュを有するIBMPowerPC
TM604シリーズ・プロセッサとすることができる。キ
ャッシュ28はバス20に接続され、メモリ16からプ
ロセッサ12への全ての情報のロードはキャッシュ28
を通過しなければならない。図2には2レベルのキャッ
シュ階層のみを示すが、多数のレベルのキャッシュを直
列に接続したマルチレベル・キャッシュ階層を形成する
こともできる。
加のキャッシュを含むことができる。キャッシュ28
は、オンボード(レベル1)・キャッシュ24および2
6をサポートするので、レベル2(L2)キャッシュと
呼ばれる。換言すれば、キャッシュ28はメモリ16と
オンボード・キャッシュの間の中間物として働き、アク
セスが長くなる不利はあるものの、オンボード・キャッ
シュよりはるかに大量の情報(命令およびデータ)を記
憶することができる。例えば、キャッシュ28は、25
6または512キロバイトの記憶容量を有するチップと
し、プロセッサ12は、全記憶容量が64キロバイトの
オンボード・キャッシュを有するIBMPowerPC
TM604シリーズ・プロセッサとすることができる。キ
ャッシュ28はバス20に接続され、メモリ16からプ
ロセッサ12への全ての情報のロードはキャッシュ28
を通過しなければならない。図2には2レベルのキャッ
シュ階層のみを示すが、多数のレベルのキャッシュを直
列に接続したマルチレベル・キャッシュ階層を形成する
こともできる。
【0005】SMPコンピュータでは、コヒーレント・
メモリ・システムを提供する、すなわち個々の各メモリ
位置への書込みを、全てのプロセッサについて何らかの
順序で直列化することが重要である。例えば、一連の書
込みによってメモリ中の位置が修正され、値1、2、
3、4を取るものとする。キャッシュ・コヒーレント・
システムでは、所与の位置への書込みが示した順序で起
こるのを全てのプロセッサが観察することになる。しか
し、1つの処理エレメントがこのメモリ位置への書込み
を見落とす可能性もある。このメモリ位置を読み取る所
与の処理エレメントは、値2への更新を見落としてシー
ケンス1、3、4を見る可能性がある。これらの特性を
実施したシステムを、「コヒーレント」であるという。
事実上全てのコヒーレンシ・プロトコルが、キャッシュ
・ブロックのサイズの細分性までしか動作しないことに
留意されたい。すなわち、コヒーレンシ・プロトコル
は、個々の各メモリ位置について別々にではなく、デー
タの動きおよびデータに関する書込み許可をキャッシュ
・ブロックごとに制御する。
メモリ・システムを提供する、すなわち個々の各メモリ
位置への書込みを、全てのプロセッサについて何らかの
順序で直列化することが重要である。例えば、一連の書
込みによってメモリ中の位置が修正され、値1、2、
3、4を取るものとする。キャッシュ・コヒーレント・
システムでは、所与の位置への書込みが示した順序で起
こるのを全てのプロセッサが観察することになる。しか
し、1つの処理エレメントがこのメモリ位置への書込み
を見落とす可能性もある。このメモリ位置を読み取る所
与の処理エレメントは、値2への更新を見落としてシー
ケンス1、3、4を見る可能性がある。これらの特性を
実施したシステムを、「コヒーレント」であるという。
事実上全てのコヒーレンシ・プロトコルが、キャッシュ
・ブロックのサイズの細分性までしか動作しないことに
留意されたい。すなわち、コヒーレンシ・プロトコル
は、個々の各メモリ位置について別々にではなく、デー
タの動きおよびデータに関する書込み許可をキャッシュ
・ブロックごとに制御する。
【0006】キャッシュ・コヒーレンスを達成するため
の、当業者には周知のプロトコルおよび技術がいくつか
ある。これら全てのコヒーレンシ維持機構の中心となる
のは、それらのプロトコルにより、ただ1つのプロセッ
サだけが任意の所与の時点で所与のメモリ位置(キャッ
シュ・ブロック)に書き込む「許可」を得ることができ
るという要件である。この要件の結果として、処理エレ
メントは、メモリ位置への書き込みを試みる時には必
ず、まず他の全ての処理エレメントに対してそれがその
位置への書込みを望んでいることを通知し、他の全ての
処理エレメントから書込みを実行する許可を受けなけれ
ばならない。重要な点は、書込みが行われる前にプロセ
ッサを初期設定することによって、システム中の他の全
てのプロセッサにその書込みを通知しなければならない
点である。
の、当業者には周知のプロトコルおよび技術がいくつか
ある。これら全てのコヒーレンシ維持機構の中心となる
のは、それらのプロトコルにより、ただ1つのプロセッ
サだけが任意の所与の時点で所与のメモリ位置(キャッ
シュ・ブロック)に書き込む「許可」を得ることができ
るという要件である。この要件の結果として、処理エレ
メントは、メモリ位置への書き込みを試みる時には必
ず、まず他の全ての処理エレメントに対してそれがその
位置への書込みを望んでいることを通知し、他の全ての
処理エレメントから書込みを実行する許可を受けなけれ
ばならない。重要な点は、書込みが行われる前にプロセ
ッサを初期設定することによって、システム中の他の全
てのプロセッサにその書込みを通知しなければならない
点である。
【0007】キャッシュ・コヒーレンスがマルチレベル
階層中でどのように実施されるかをさらに例示するため
に、図4について考える。図4は、それぞれL1キャッ
シュ(40b、41b、42b)、L2キャッシュ(4
0c、41c、42c)、およびL3キャッシュ(40
d、41d、42d)を有するプロセッサ(40a、4
1a、42a)からなる3つの処理装置(40、41、
42)を有するSMPコンピュータ・システムを示す図
である。この階層では、各下位レベルのキャッシュ(す
なわちL3キャッシュはL2より「低い」)は次の上位
レベルのキャッシュよりもサイズが大きく、アクセス時
間が長い。さらに、絶対に必要というわけではないが、
下位レベルのキャッシュは、上位レベルのキャッシュ中
に存在する全てのブロックのコピーを含むのが普通であ
る。例えば、あるブロックが所与の処理装置のL2キャ
ッシュ中に存在する場合、その処理装置に対するL3キ
ャッシュもまたそのブロックのコピー(未更新の可能性
もある)を有することを意味する。さらに、あるブロッ
クが所与の処理装置のL1キャッシュ中に存在する場
合、それはその処理装置のL2およびL3キャッシュ中
にも存在する。この特性は包含と呼ばれ、当業者には周
知である。この後は、この包含の原理を本発明に関係す
るキャッシュに適用するものとする。
階層中でどのように実施されるかをさらに例示するため
に、図4について考える。図4は、それぞれL1キャッ
シュ(40b、41b、42b)、L2キャッシュ(4
0c、41c、42c)、およびL3キャッシュ(40
d、41d、42d)を有するプロセッサ(40a、4
1a、42a)からなる3つの処理装置(40、41、
42)を有するSMPコンピュータ・システムを示す図
である。この階層では、各下位レベルのキャッシュ(す
なわちL3キャッシュはL2より「低い」)は次の上位
レベルのキャッシュよりもサイズが大きく、アクセス時
間が長い。さらに、絶対に必要というわけではないが、
下位レベルのキャッシュは、上位レベルのキャッシュ中
に存在する全てのブロックのコピーを含むのが普通であ
る。例えば、あるブロックが所与の処理装置のL2キャ
ッシュ中に存在する場合、その処理装置に対するL3キ
ャッシュもまたそのブロックのコピー(未更新の可能性
もある)を有することを意味する。さらに、あるブロッ
クが所与の処理装置のL1キャッシュ中に存在する場
合、それはその処理装置のL2およびL3キャッシュ中
にも存在する。この特性は包含と呼ばれ、当業者には周
知である。この後は、この包含の原理を本発明に関係す
るキャッシュに適用するものとする。
【0008】図4に示すようなシステム中でキャッシュ
・コヒーレンシを実施するために、プロセッサは共通の
汎用相互接続(43)を介して通信する。プロセッサは
この相互接続を介して、それがメモリ位置の読取りまた
は書込みを望んでいることを示すメッセージを渡す。あ
る動作が相互接続上に置かれたとき、他の全てのプロセ
ッサはこの動作を「スヌープ」し、それらのキャッシュ
の状態が要求された動作を進行させることができるかど
うか、かつそうである場合には、それがどのような条件
下であるかを決定する。
・コヒーレンシを実施するために、プロセッサは共通の
汎用相互接続(43)を介して通信する。プロセッサは
この相互接続を介して、それがメモリ位置の読取りまた
は書込みを望んでいることを示すメッセージを渡す。あ
る動作が相互接続上に置かれたとき、他の全てのプロセ
ッサはこの動作を「スヌープ」し、それらのキャッシュ
の状態が要求された動作を進行させることができるかど
うか、かつそうである場合には、それがどのような条件
下であるかを決定する。
【0009】キャッシュを有するシステムでは、メモリ
の所与のブロックの最も最近の有効なコピーが、システ
ム・メモリ44からシステム中の1つまたは複数のキャ
ッシュに移動している可能性があるので、この通信は必
要である。プロセッサ(例えば40a)がそのキャッシ
ュ階層(40b、40c、40d)内に存在しないメモ
リ位置へのアクセスを試みた場合には、そのメモリ位置
の実際の値を含むブロックの正しいバージョンは、シス
テム・メモリ44中か、または処理装置41および42
中の1つまたは複数のキャッシュ中のどちらかにある可
能性がある。正しいバージョンがシステム中の他の1つ
または複数のキャッシュ中にある場合には、システム・
メモリではなくシステム中のキャッシュから正しい値を
得ることが必要である。
の所与のブロックの最も最近の有効なコピーが、システ
ム・メモリ44からシステム中の1つまたは複数のキャ
ッシュに移動している可能性があるので、この通信は必
要である。プロセッサ(例えば40a)がそのキャッシ
ュ階層(40b、40c、40d)内に存在しないメモ
リ位置へのアクセスを試みた場合には、そのメモリ位置
の実際の値を含むブロックの正しいバージョンは、シス
テム・メモリ44中か、または処理装置41および42
中の1つまたは複数のキャッシュ中のどちらかにある可
能性がある。正しいバージョンがシステム中の他の1つ
または複数のキャッシュ中にある場合には、システム・
メモリではなくシステム中のキャッシュから正しい値を
得ることが必要である。
【0010】例えば、プロセッサ、例えば40aがメモ
リ中の位置のある読取りを試みるものと考える。このプ
ロセッサはまずそれ自体のL1キャッシュ(40b)を
ポーリングする。そのブロックがL1キャッシュ(40
b)中に存在しない場合には、要求はL2キャッシュ
(40c)に送られる。そのブロックがL2キャッシュ
中に存在しない場合は、変更はL3キャッシュ(40
d)に転送される。そのブロックがL3キャッシュ(4
0d)中にも存在しない場合には、要求は汎用相互接続
(43)に提示され、処理される。動作が汎用相互接続
上に置かれた後、他の全ての処理装置はその動作を「ス
ヌープ」し、そのブロックがそれ自体のキャッシュ中に
存在するかどうかを判定する。所与の処理装置、例えば
42が処理装置40から要求されたデータをそのL1キ
ャッシュ(42a)中に有し、そのデータが包含の原理
によって修正されている場合には、L2キャッシュ(4
2c)とL3キャッシュ(42d)もそのブロックのコ
ピーを有する(ただし、プロセッサのキャッシュ中のコ
ピーが修正されているので、それらのコピーは未更新で
ある)。したがって、処理装置42のL3キャッシュ
(42d)は、読取り動作をスヌープする時に、要求さ
れたブロックが上位レベル・キャッシュ中に存在し、修
正されていると判定することになる。これが起こった
時、そのメモリ位置の実際の値はメモリ階層の最上位の
L1キャッシュにあり、処理装置40の読取り要求てら
処理するのにそれを利用可能にするためにはこれを取り
出さなければならないので、L3キャッシュ42dは汎
用相互接続上にメッセージを置き、処理装置40に対し
てその動作を後で再度「再試行」しなければならないと
通知する。
リ中の位置のある読取りを試みるものと考える。このプ
ロセッサはまずそれ自体のL1キャッシュ(40b)を
ポーリングする。そのブロックがL1キャッシュ(40
b)中に存在しない場合には、要求はL2キャッシュ
(40c)に送られる。そのブロックがL2キャッシュ
中に存在しない場合は、変更はL3キャッシュ(40
d)に転送される。そのブロックがL3キャッシュ(4
0d)中にも存在しない場合には、要求は汎用相互接続
(43)に提示され、処理される。動作が汎用相互接続
上に置かれた後、他の全ての処理装置はその動作を「ス
ヌープ」し、そのブロックがそれ自体のキャッシュ中に
存在するかどうかを判定する。所与の処理装置、例えば
42が処理装置40から要求されたデータをそのL1キ
ャッシュ(42a)中に有し、そのデータが包含の原理
によって修正されている場合には、L2キャッシュ(4
2c)とL3キャッシュ(42d)もそのブロックのコ
ピーを有する(ただし、プロセッサのキャッシュ中のコ
ピーが修正されているので、それらのコピーは未更新で
ある)。したがって、処理装置42のL3キャッシュ
(42d)は、読取り動作をスヌープする時に、要求さ
れたブロックが上位レベル・キャッシュ中に存在し、修
正されていると判定することになる。これが起こった
時、そのメモリ位置の実際の値はメモリ階層の最上位の
L1キャッシュにあり、処理装置40の読取り要求てら
処理するのにそれを利用可能にするためにはこれを取り
出さなければならないので、L3キャッシュ42dは汎
用相互接続上にメッセージを置き、処理装置40に対し
てその動作を後で再度「再試行」しなければならないと
通知する。
【0011】処理装置40からの要求を再試行した後、
L3キャッシュ(42d)は、L1キャッシュから修正
データを取り出し、本発明には特に関連のない実施態様
の厳密な詳細に応じて、それをL3キャッシュ42dま
たは主メモリ44あるいはその両方で利用可能にする処
理を開始する。上位レベルのキャッシュからブロックを
取り出すために、L3キャッシュ(42d)は、キャッ
シュ間接続(42x、42y)を介して上位レベルのキ
ャッシュ(42c、42d)にメッセージを送信し、ブ
ロックの検索を要求する。これらのメッセージはL1キ
ャッシュに到達するまで処理装置階層を上に向かって伝
播し、そのブロックを階層中を下に向かって最下位レベ
ル(L3キャッシュまたは主メモリ)まで移動させて、
処理装置40からの要求を処理できるようにする。
L3キャッシュ(42d)は、L1キャッシュから修正
データを取り出し、本発明には特に関連のない実施態様
の厳密な詳細に応じて、それをL3キャッシュ42dま
たは主メモリ44あるいはその両方で利用可能にする処
理を開始する。上位レベルのキャッシュからブロックを
取り出すために、L3キャッシュ(42d)は、キャッ
シュ間接続(42x、42y)を介して上位レベルのキ
ャッシュ(42c、42d)にメッセージを送信し、ブ
ロックの検索を要求する。これらのメッセージはL1キ
ャッシュに到達するまで処理装置階層を上に向かって伝
播し、そのブロックを階層中を下に向かって最下位レベ
ル(L3キャッシュまたは主メモリ)まで移動させて、
処理装置40からの要求を処理できるようにする。
【0012】処理装置40(具体的にはそのL3キャッ
シュ40d)は、最終的に汎用相互接続上に読取り要求
を表示する。しかし、この時点で修正データは処理装置
42のL1キャッシュから取り出されており、プロセッ
サ40からの読取り要求は満たされることになる。以上
に述べたシナリオは一般に「スヌープ・プッシュ」と呼
ばれる。読取り要求は汎用相互接続上でスヌープされ、
それにより処理装置42がブロックを階層の最下位まで
「プッシュ」して、処理装置40からの読取り要求を満
たす。
シュ40d)は、最終的に汎用相互接続上に読取り要求
を表示する。しかし、この時点で修正データは処理装置
42のL1キャッシュから取り出されており、プロセッ
サ40からの読取り要求は満たされることになる。以上
に述べたシナリオは一般に「スヌープ・プッシュ」と呼
ばれる。読取り要求は汎用相互接続上でスヌープされ、
それにより処理装置42がブロックを階層の最下位まで
「プッシュ」して、処理装置40からの読取り要求を満
たす。
【0013】留意すべき重要な点は、プロセッサが、ブ
ロックの読取りまたは書込みを行おうとする場合に、キ
ャッシュ・コヒーレンスを維持するためにその要求をシ
ステム中の他の処理装置に通信しなければならない点で
ある。これを達成するために、キャッシュ・コヒーレン
ス・プロトコルは、各キャッシュ階層レベルの各ブロッ
クに、ブロックの現在の「状態」を示す状況標識を関連
付ける。この状態情報を使用してある程度のコヒーレン
シ・プロトコルの最適化を行い、汎用相互接続(43)
およびキャッシュ間接続(40x、40y、41x、4
1y、42x、42y)上のメッセージ・トラフィック
を減少させることができる。この機構の一例として、処
理装置は、読取りの実行時に、その読取りを後で再試行
しなければならないか否かを示すメッセージを受け取
る。読取り動作を再試行しない場合には、このメッセー
ジは通常、他のいずれかの処理装置も活動状態のままの
ブロックのコピーを有するかどうかを処理装置が判定で
きるようにする情報も含んでいる(これは他の最下位レ
ベルのキャッシュが、それが再試行しない任意の読取り
についての「共用」または「非共用」指示を与えるよう
にすることで実施される)。したがって、処理装置はシ
ステム中の他のいずれかのプロセッサがブロックのコピ
ーを有するかどうかを判定することができる。他の処理
装置が活動状態のブロックのコピーをもたない場合に
は、読取り中の処理装置はブロックの状態を「排他的」
とマークする。ブロックが排他的とマークされた場合に
は、他の処理装置がブロックのコピーをもたないので、
最初にシステム中のその他の処理装置に通信せずに、後
で処理装置にブロックの書込みを行わせても差し支えな
い。したがって一般に、プロセッサはある位置の読取り
または書込みを、最初にこの意図を相互接続上に通信せ
ずに行うことができる。ただしこれは、その他のプロセ
ッサがそのブロックに関心を持たないことをコヒーレン
シ・プロトコルが保証している場合にのみ起こる。マル
チレベル・キャッシュ・コヒーレンシ・プロトコルの厳
密な働きに関するいくつかの詳細については、簡略にす
るためにこの考察では省略した。しかし、本発明に関係
のある本質的な面については記載した。記載していない
面は、当業者には周知である。
ロックの読取りまたは書込みを行おうとする場合に、キ
ャッシュ・コヒーレンスを維持するためにその要求をシ
ステム中の他の処理装置に通信しなければならない点で
ある。これを達成するために、キャッシュ・コヒーレン
ス・プロトコルは、各キャッシュ階層レベルの各ブロッ
クに、ブロックの現在の「状態」を示す状況標識を関連
付ける。この状態情報を使用してある程度のコヒーレン
シ・プロトコルの最適化を行い、汎用相互接続(43)
およびキャッシュ間接続(40x、40y、41x、4
1y、42x、42y)上のメッセージ・トラフィック
を減少させることができる。この機構の一例として、処
理装置は、読取りの実行時に、その読取りを後で再試行
しなければならないか否かを示すメッセージを受け取
る。読取り動作を再試行しない場合には、このメッセー
ジは通常、他のいずれかの処理装置も活動状態のままの
ブロックのコピーを有するかどうかを処理装置が判定で
きるようにする情報も含んでいる(これは他の最下位レ
ベルのキャッシュが、それが再試行しない任意の読取り
についての「共用」または「非共用」指示を与えるよう
にすることで実施される)。したがって、処理装置はシ
ステム中の他のいずれかのプロセッサがブロックのコピ
ーを有するかどうかを判定することができる。他の処理
装置が活動状態のブロックのコピーをもたない場合に
は、読取り中の処理装置はブロックの状態を「排他的」
とマークする。ブロックが排他的とマークされた場合に
は、他の処理装置がブロックのコピーをもたないので、
最初にシステム中のその他の処理装置に通信せずに、後
で処理装置にブロックの書込みを行わせても差し支えな
い。したがって一般に、プロセッサはある位置の読取り
または書込みを、最初にこの意図を相互接続上に通信せ
ずに行うことができる。ただしこれは、その他のプロセ
ッサがそのブロックに関心を持たないことをコヒーレン
シ・プロトコルが保証している場合にのみ起こる。マル
チレベル・キャッシュ・コヒーレンシ・プロトコルの厳
密な働きに関するいくつかの詳細については、簡略にす
るためにこの考察では省略した。しかし、本発明に関係
のある本質的な面については記載した。記載していない
面は、当業者には周知である。
【0014】本発明に関係のあるマルチレベル・キャッ
シュ構造のもう1つの面は、追い出し(eviction)と呼
ばれる動作である。任意のキャッシュ中のブロックは、
「セット」と呼ばれるブロック群に分割される。セット
とは、所与のメモリ・ブロックが常駐することのできる
ブロックの集合である。任意の所与のメモリ・ブロック
について、事前設定されたマッピング機能に応じて、そ
のブロックをマップすることができる固有のセットがキ
ャッシュ中に存在する。セット中のブロック数は、キャ
ッシュのアソシアティビティと呼ばれる(例えば2ウェ
イ・セット・アソシエイティブとは、任意の所与のメモ
リ・ブロックについて、このメモリ・ブロックをマップ
することのできるブロックがキャッシュ中に2個存在す
ることを意味する)。ただし、主メモリ中の異なるいく
つかのブロックが任意の所与のセットにマップすること
ができる。
シュ構造のもう1つの面は、追い出し(eviction)と呼
ばれる動作である。任意のキャッシュ中のブロックは、
「セット」と呼ばれるブロック群に分割される。セット
とは、所与のメモリ・ブロックが常駐することのできる
ブロックの集合である。任意の所与のメモリ・ブロック
について、事前設定されたマッピング機能に応じて、そ
のブロックをマップすることができる固有のセットがキ
ャッシュ中に存在する。セット中のブロック数は、キャ
ッシュのアソシアティビティと呼ばれる(例えば2ウェ
イ・セット・アソシエイティブとは、任意の所与のメモ
リ・ブロックについて、このメモリ・ブロックをマップ
することのできるブロックがキャッシュ中に2個存在す
ることを意味する)。ただし、主メモリ中の異なるいく
つかのブロックが任意の所与のセットにマップすること
ができる。
【0015】所与のキャッシュに関するセット中の全て
のブロックが満杯であり、そのキャッシュが満杯のセッ
トにマップされるメモリ位置への要求を受け取った場合
には、それが読取り要求であれ書込み要求であれ、キャ
ッシュは現在セット中にあるブロックの1つを「追い出
さ」なければならない。キャッシュは、当業者には周知
のいくつかの手段(LRU、ランダム、疑似LRUな
ど)の1つにより追い出すブロックを選択する。選択し
たブロック中のデータが修正されている場合、そのデー
タは、別のキャッシュ(L1またはL2キャッシュの場
合)または主メモリ(L3キャッシュの場合)になる可
能性があるメモリ階層中の下位から2番目のレベルに書
き込まれる。包含の原理により、下位の階層レベルは、
書き込まれた修正データを保持することができるブロッ
クを既に有していることになることに留意されたい。し
かし、選択したブロック中のデータが修正されていない
場合、そのブロックは単に放棄され、下位から2番目の
階層レベルには書き込まれない。1つの階層レベルから
ブロックを除去するこの処理は、「追い出し」として知
られる。この処理の最後には、キャッシュが(汎用相互
接続43、またはキャッシュ間接続40x、40y、4
1x、41y、42x、42y上で)動作をスヌープし
たとき、そのブロックはキャッシュ中に見つからないこ
とになるので、そのキャッシュはもはや追い出されたブ
ロックのコピーをもたず、追い出されたブロックに対す
るコヒーレンシ・プロトコルにも能動的には関与しな
い。
のブロックが満杯であり、そのキャッシュが満杯のセッ
トにマップされるメモリ位置への要求を受け取った場合
には、それが読取り要求であれ書込み要求であれ、キャ
ッシュは現在セット中にあるブロックの1つを「追い出
さ」なければならない。キャッシュは、当業者には周知
のいくつかの手段(LRU、ランダム、疑似LRUな
ど)の1つにより追い出すブロックを選択する。選択し
たブロック中のデータが修正されている場合、そのデー
タは、別のキャッシュ(L1またはL2キャッシュの場
合)または主メモリ(L3キャッシュの場合)になる可
能性があるメモリ階層中の下位から2番目のレベルに書
き込まれる。包含の原理により、下位の階層レベルは、
書き込まれた修正データを保持することができるブロッ
クを既に有していることになることに留意されたい。し
かし、選択したブロック中のデータが修正されていない
場合、そのブロックは単に放棄され、下位から2番目の
階層レベルには書き込まれない。1つの階層レベルから
ブロックを除去するこの処理は、「追い出し」として知
られる。この処理の最後には、キャッシュが(汎用相互
接続43、またはキャッシュ間接続40x、40y、4
1x、41y、42x、42y上で)動作をスヌープし
たとき、そのブロックはキャッシュ中に見つからないこ
とになるので、そのキャッシュはもはや追い出されたブ
ロックのコピーをもたず、追い出されたブロックに対す
るコヒーレンシ・プロトコルにも能動的には関与しな
い。
【0016】対称マルチプロセッサのもう1つの面は、
本発明にとって重要である。対称マルチプロセッサで
は、システム中の様々なプロセッサの動作を同期させ、
1つのタスクを処理するプロセッサ間の協働を可能にす
る手段を提供することが必要である。これを達成するた
めに、最新の大部分のプロセッサはその命令セットに同
期を処理する明示命令を含んでいる。具体的に言うと、
PowerPCTMの命令セットは、「Iwrx」および
「stcx」と呼ばれる2つの命令を提供する。これら
の命令は、32ビットの実施態様で「Iwarx」およ
び「stwcx」、64ビットの実施態様では「Ida
rx」および「stdcx」となる2つの形態をとる。
以下では、どちらの実施態様に対する命令を示すにも
「Iwarx」および「stwcx」を使用する(Id
arxおよびstdcx命令は、Idarxおよびst
dcxが8バイトの数量に作用し、Iwarxおよびs
twcxが4バイトの数量に作用することを除けば、基
本的に同様の意味を有する)。これらの命令は、同期基
本命令を構築する働きをする。
本発明にとって重要である。対称マルチプロセッサで
は、システム中の様々なプロセッサの動作を同期させ、
1つのタスクを処理するプロセッサ間の協働を可能にす
る手段を提供することが必要である。これを達成するた
めに、最新の大部分のプロセッサはその命令セットに同
期を処理する明示命令を含んでいる。具体的に言うと、
PowerPCTMの命令セットは、「Iwrx」および
「stcx」と呼ばれる2つの命令を提供する。これら
の命令は、32ビットの実施態様で「Iwarx」およ
び「stwcx」、64ビットの実施態様では「Ida
rx」および「stdcx」となる2つの形態をとる。
以下では、どちらの実施態様に対する命令を示すにも
「Iwarx」および「stwcx」を使用する(Id
arxおよびstdcx命令は、Idarxおよびst
dcxが8バイトの数量に作用し、Iwarxおよびs
twcxが4バイトの数量に作用することを除けば、基
本的に同様の意味を有する)。これらの命令は、同期基
本命令を構築する働きをする。
【0017】Iwarx命令は、メモリの位置合せされ
た4バイト・ワードをプロセッサのレジスタにロードす
る。さらに、Iwarxは、アクセスされたメモリのワ
ードを含むメモリのブロックに「予約」を置く。ほとん
どの実施態様では、予約は、キャッシュ・コヒーレンシ
・プロトコルで使用するブロック・サイズと同じサイズ
のブロックに置かれる。予約は、ブロックのアドレスと
フラグを含む。Iwarx命令が参照されたメモリのワ
ードをうまく読み取った時に、このフラグは活動状態に
なり、ブロックのアドレスがロードされる。予約が有効
(フラグが活動状態)である場合には、プロセッサおよ
びメモリ階層は、予約が存在するブロックに書込みを行
う可能性がある動作がないか、協働してシステム全体を
監視しなければならない。このような書込みが発生した
場合、予約中のフラグはリセットされる。予約フラグ
は、stwcx命令の挙動を制御するために使用され
る。
た4バイト・ワードをプロセッサのレジスタにロードす
る。さらに、Iwarxは、アクセスされたメモリのワ
ードを含むメモリのブロックに「予約」を置く。ほとん
どの実施態様では、予約は、キャッシュ・コヒーレンシ
・プロトコルで使用するブロック・サイズと同じサイズ
のブロックに置かれる。予約は、ブロックのアドレスと
フラグを含む。Iwarx命令が参照されたメモリのワ
ードをうまく読み取った時に、このフラグは活動状態に
なり、ブロックのアドレスがロードされる。予約が有効
(フラグが活動状態)である場合には、プロセッサおよ
びメモリ階層は、予約が存在するブロックに書込みを行
う可能性がある動作がないか、協働してシステム全体を
監視しなければならない。このような書込みが発生した
場合、予約中のフラグはリセットされる。予約フラグ
は、stwcx命令の挙動を制御するために使用され
る。
【0018】stwcx命令はIwarxの片割れであ
る。stwcx命令は、最初に予約フラグが有効である
かどうか判定する。有効である場合には、stwcx命
令は指定されたメモリの4バイト・ワードへの記憶を実
行し、記憶が成功したことを示すように条件コード・レ
ジスタをセットし、予約フラグをリセットする。反対
に、予約中の予約フラグが有効でない場合には、stw
cx命令はメモリへの記憶を実行せず、記憶が失敗した
ことを示すように条件コード・レジスタをセットする。
stwcx命令は、予約フラグの状況を条件として記憶
が行われることからしばしば「条件付き記憶」と呼ばれ
る。
る。stwcx命令は、最初に予約フラグが有効である
かどうか判定する。有効である場合には、stwcx命
令は指定されたメモリの4バイト・ワードへの記憶を実
行し、記憶が成功したことを示すように条件コード・レ
ジスタをセットし、予約フラグをリセットする。反対
に、予約中の予約フラグが有効でない場合には、stw
cx命令はメモリへの記憶を実行せず、記憶が失敗した
ことを示すように条件コード・レジスタをセットする。
stwcx命令は、予約フラグの状況を条件として記憶
が行われることからしばしば「条件付き記憶」と呼ばれ
る。
【0019】Iwarx/stwcx命令シーケンスの
基礎となる一般的な概念は、Iwarxが実行された時
点からstwcxが完了するまでの間に他のプロセッサ
がそのメモリ位置を更新していないことを保証しなが
ら、1つのプロセッサに、メモリ位置の読取り、何らか
の方法によるその位置の修正、およびメモリへの新しい
値の記憶を行わせることである。このようなシーケンス
は、プロセッサがその位置を読取り、修正し、その後別
のプロセッサがその位置に書き込むことによって割り込
まれることなく新しい値を書き込むことができたので、
通常は「アトミックな読取り/修正/書込み」シーケン
スと呼ばれる。Iwarx/stwcx動作シーケンス
は、割込み不可能な1つのシーケンスとして起こるので
はなく、プロセッサがIwarxを実行しその後にうま
くstwcxを完了することができることから、プログ
ラマは、読取り/修正/書込みシーケンスが実際にアト
ミックであるかのように行われたことを保証される。こ
のIwarx/stwcxシーケンスのアトミック特性
を使用して、当業者には周知のいくつかの同期基本命令
を実施することができる。
基礎となる一般的な概念は、Iwarxが実行された時
点からstwcxが完了するまでの間に他のプロセッサ
がそのメモリ位置を更新していないことを保証しなが
ら、1つのプロセッサに、メモリ位置の読取り、何らか
の方法によるその位置の修正、およびメモリへの新しい
値の記憶を行わせることである。このようなシーケンス
は、プロセッサがその位置を読取り、修正し、その後別
のプロセッサがその位置に書き込むことによって割り込
まれることなく新しい値を書き込むことができたので、
通常は「アトミックな読取り/修正/書込み」シーケン
スと呼ばれる。Iwarx/stwcx動作シーケンス
は、割込み不可能な1つのシーケンスとして起こるので
はなく、プロセッサがIwarxを実行しその後にうま
くstwcxを完了することができることから、プログ
ラマは、読取り/修正/書込みシーケンスが実際にアト
ミックであるかのように行われたことを保証される。こ
のIwarx/stwcxシーケンスのアトミック特性
を使用して、当業者には周知のいくつかの同期基本命令
を実施することができる。
【0020】キャッシュ・コヒーレンシの説明およびI
warx/stwcx命令の意味から、対称マルチプロ
セッサ・システムのこれら2つの面の間には強い関係が
あることが理解されよう。キャッシュ・コヒーレンシ・
プロトコルは、所与のメモリ位置への全ての書込みを全
てのプロセッサが観察する一定の順序で直列化すること
により、プロセッサがいつあるメモリ位置に書き込むこ
とができるかを制御しようとするものである。この目的
を達成するために、キャッシュ・コヒーレンシ・プロト
コルは、メモリ位置への書込みを望むプロセッサが書込
みを実行する前に、書込みの実行を望んでいることを他
の全てのプロセッサに通知し(他のいずれかがそのブロ
ックに関心を持つ場合)、それらの他のプロセッサから
許可を得ることを要求する。すなわち、全てのメモリ位
置への書込みについての情報が、書込みが試みられる時
にシステム全体に通信される。それとは対照的に、Iw
arx/stwcx命令は、Iwarxが実行された後
で、Iwarxの後で行われ、Iwarxによってロー
ドされたメモリ位置を更新する可能性のある任意の書込
みがプロセッサ中の予約フラグを無効にし、それにより
stwcxがメモリに記憶するのを妨げることを保証し
ようとする。これらの目的はともに、メモリ位置への書
込みがいつ行われるかを判定できることに依拠してい
る。実際に、Iwarx/stwcx命令の意味のほと
んどの実施態様は、既存のキャッシュ・コヒーレンシ・
プロトコルが、実際にIwarx/stwcxシーケン
スが確実にアトミックになるようにするのを助けること
に依拠している。現在の事実上全ての実施態様では、キ
ャッシュ・コヒーレンシ・アルゴリズムで使用するブロ
ック・サイズと同じサイズのメモリの位置合せされたブ
ロックに対して予約が有効となる。このブロックは予約
グラニュールと呼ばれる。この構成により、Iwarx
/stwcx命令の意味を実施する機構が、システム全
体に通信されたメッセージをキャッシュ・コヒーレンシ
のために再利用し、それによってIwarx/stwc
x命令の意味を維持するのを助けることも可能になる。
この実施態様の結果として、予約グラニュール内の任意
の位置に対して行われる任意の書込みは、Iwarx命
令によってロードされた特定の位置をこの書込みが改変
しない場合でも、予約を取り消すことになる。予約フラ
グをリセットする際のこの精度の不足は、Iwarx/
stwcx命令の意味を実施する手段としてキャッシュ
・コヒーレンシ・メッセージの再利用を可能にする実施
態様で生じる典型的なトレードオフである。
warx/stwcx命令の意味から、対称マルチプロ
セッサ・システムのこれら2つの面の間には強い関係が
あることが理解されよう。キャッシュ・コヒーレンシ・
プロトコルは、所与のメモリ位置への全ての書込みを全
てのプロセッサが観察する一定の順序で直列化すること
により、プロセッサがいつあるメモリ位置に書き込むこ
とができるかを制御しようとするものである。この目的
を達成するために、キャッシュ・コヒーレンシ・プロト
コルは、メモリ位置への書込みを望むプロセッサが書込
みを実行する前に、書込みの実行を望んでいることを他
の全てのプロセッサに通知し(他のいずれかがそのブロ
ックに関心を持つ場合)、それらの他のプロセッサから
許可を得ることを要求する。すなわち、全てのメモリ位
置への書込みについての情報が、書込みが試みられる時
にシステム全体に通信される。それとは対照的に、Iw
arx/stwcx命令は、Iwarxが実行された後
で、Iwarxの後で行われ、Iwarxによってロー
ドされたメモリ位置を更新する可能性のある任意の書込
みがプロセッサ中の予約フラグを無効にし、それにより
stwcxがメモリに記憶するのを妨げることを保証し
ようとする。これらの目的はともに、メモリ位置への書
込みがいつ行われるかを判定できることに依拠してい
る。実際に、Iwarx/stwcx命令の意味のほと
んどの実施態様は、既存のキャッシュ・コヒーレンシ・
プロトコルが、実際にIwarx/stwcxシーケン
スが確実にアトミックになるようにするのを助けること
に依拠している。現在の事実上全ての実施態様では、キ
ャッシュ・コヒーレンシ・アルゴリズムで使用するブロ
ック・サイズと同じサイズのメモリの位置合せされたブ
ロックに対して予約が有効となる。このブロックは予約
グラニュールと呼ばれる。この構成により、Iwarx
/stwcx命令の意味を実施する機構が、システム全
体に通信されたメッセージをキャッシュ・コヒーレンシ
のために再利用し、それによってIwarx/stwc
x命令の意味を維持するのを助けることも可能になる。
この実施態様の結果として、予約グラニュール内の任意
の位置に対して行われる任意の書込みは、Iwarx命
令によってロードされた特定の位置をこの書込みが改変
しない場合でも、予約を取り消すことになる。予約フラ
グをリセットする際のこの精度の不足は、Iwarx/
stwcx命令の意味を実施する手段としてキャッシュ
・コヒーレンシ・メッセージの再利用を可能にする実施
態様で生じる典型的なトレードオフである。
【0021】キャッシュ・コヒーレンシとIwarx/
stwcxシーケンスの実施態様がどのように関係する
かをさらに理解するために、Iwarx/stwcxを
サポートするのに必要な追加の構成が明示された1つの
処理装置を示す図5を参照されたい(図4にはこれらを
明示していないが、図4の処理装置もこれらと同様の構
成を含むことに留意されたい)。図5の各キャッシュご
とに、1つの予約装置(50a、50b、50c)があ
る。これらの装置はアドレス(50d、50e、50
f)およびフラグ(50g、50h、50i)の予約を
両方とも含む。これらの装置は、予約グラニュールのア
ドレス(50d、50e、50f)内の任意の書込み動
作を求めてそれぞれのバス(51、52、53)をスヌ
ープし、そのような動作が検出されたときフラグ(50
g、50h、50i)を無効にする。このように、予約
装置はキャッシュ・コヒーレンシ方式の当事者である。
予約装置はバスを監視し、キャッシュ自体と同様にバス
・トランザクションに応答する。
stwcxシーケンスの実施態様がどのように関係する
かをさらに理解するために、Iwarx/stwcxを
サポートするのに必要な追加の構成が明示された1つの
処理装置を示す図5を参照されたい(図4にはこれらを
明示していないが、図4の処理装置もこれらと同様の構
成を含むことに留意されたい)。図5の各キャッシュご
とに、1つの予約装置(50a、50b、50c)があ
る。これらの装置はアドレス(50d、50e、50
f)およびフラグ(50g、50h、50i)の予約を
両方とも含む。これらの装置は、予約グラニュールのア
ドレス(50d、50e、50f)内の任意の書込み動
作を求めてそれぞれのバス(51、52、53)をスヌ
ープし、そのような動作が検出されたときフラグ(50
g、50h、50i)を無効にする。このように、予約
装置はキャッシュ・コヒーレンシ方式の当事者である。
予約装置はバスを監視し、キャッシュ自体と同様にバス
・トランザクションに応答する。
【0022】従来技術では、予約装置のアドレスおよび
フラグは2つの一般的な方法の1つでセットされる。一
方の極端では、そのメモリ階層の任意のキャッシュにそ
のブロックが存在しないメモリ位置にプロセッサがIw
arxを発行しようと試みた場合に、先に述べたよう
に、読取り動作は階層の最上位にあるプロセッサから階
層中の各キャッシュを通って最終的に汎用相互接続まで
伝播されて、処理される。しかし、先の例とは異なり、
読取りがIwarxに関するものであること、および予
約装置がアドレスおよびフラグをセットする必要がある
ことをキャッシュ中の予約装置に通知するために、これ
らの読取り動作には特殊なタグが付けられる。もう一方
の極端では、プロセッサはL1キャッシュに既存のブロ
ック内のメモリ位置にIwarxを発行することができ
る。この状況は、「Iwarxヒット」と呼ばれる。こ
の場合、プロセッサの予約装置はその予約アドレスおよ
びフラグ(それぞれ50dおよび50g)をセットし、
Iwarx予約(以下RESERVEとする)と呼ばれ
る特殊なバス動作をL1キャッシュとL2キャッシュ
(51)の間の接続に発行することになる。L2キャッ
シュは、その予約のアドレスを含むRESERVEメッ
セージを受け取り、その予約アドレス(50e)および
フラグ(50h)をセットすることになる。さらに、L
2キャッシュはRESERVEメッセージをL3キャッ
シュに転送し、ここでL2キャッシュが行った動作が繰
り返され、この時点で、全ての予約装置が適切にセット
されることになる。L1からL3にRESERVEメッ
セージを伝播する処理には任意の時間がかかる可能性が
あり、一般に、キャッシュ間接続(51および52)の
可用性、および個々の実施態様に固有の細部によって決
まることに留意されたい。
フラグは2つの一般的な方法の1つでセットされる。一
方の極端では、そのメモリ階層の任意のキャッシュにそ
のブロックが存在しないメモリ位置にプロセッサがIw
arxを発行しようと試みた場合に、先に述べたよう
に、読取り動作は階層の最上位にあるプロセッサから階
層中の各キャッシュを通って最終的に汎用相互接続まで
伝播されて、処理される。しかし、先の例とは異なり、
読取りがIwarxに関するものであること、および予
約装置がアドレスおよびフラグをセットする必要がある
ことをキャッシュ中の予約装置に通知するために、これ
らの読取り動作には特殊なタグが付けられる。もう一方
の極端では、プロセッサはL1キャッシュに既存のブロ
ック内のメモリ位置にIwarxを発行することができ
る。この状況は、「Iwarxヒット」と呼ばれる。こ
の場合、プロセッサの予約装置はその予約アドレスおよ
びフラグ(それぞれ50dおよび50g)をセットし、
Iwarx予約(以下RESERVEとする)と呼ばれ
る特殊なバス動作をL1キャッシュとL2キャッシュ
(51)の間の接続に発行することになる。L2キャッ
シュは、その予約のアドレスを含むRESERVEメッ
セージを受け取り、その予約アドレス(50e)および
フラグ(50h)をセットすることになる。さらに、L
2キャッシュはRESERVEメッセージをL3キャッ
シュに転送し、ここでL2キャッシュが行った動作が繰
り返され、この時点で、全ての予約装置が適切にセット
されることになる。L1からL3にRESERVEメッ
セージを伝播する処理には任意の時間がかかる可能性が
あり、一般に、キャッシュ間接続(51および52)の
可用性、および個々の実施態様に固有の細部によって決
まることに留意されたい。
【0023】予約装置をセットすることができる方法が
もう1つある。この状況は、ブロックが完全にではなく
部分的にキャッシュ階層から追い出されているときに起
こる。例えば、プロセッサが、L1キャッシュには存在
しないがL2キャッシュには(したがって包含の原理に
よりL3キャッシュにも)存在するブロックにあるアド
レスに対してIwarx命令を実行するものとする。こ
の場合プロセッサは、Iwarxに関する読取りとマー
クされた読取りをL2キャッシュに発行することにな
る。L2キャッシュは、それがそのブロックのコピーを
有するかどうか判定し、このブロックを直接プロセッサ
に戻す。ブロックがプロセッサに戻った後、プロセッサ
はその予約アドレスおよびフラグを更新する。L2キャ
ッシュもまた、その予約をセットし、RESERVEバ
ス動作をL3キャッシュに送信してその予約をL3キャ
ッシュに通知する。このシナリオは、前記で述べた2つ
の場合を組み合わせたものにすぎない。一般に、Iwa
rx指示を伴うプロセッサからの読取りは、その読取り
を満たすブロックのコピーを有するキャッシュに出会う
まで階層中を下方に伝播され、予約装置をセットする。
その後キャッシュはRESERVEバス動作を残りの階
層中を下方に伝播して、残りの予約装置をセットする。
もう1つある。この状況は、ブロックが完全にではなく
部分的にキャッシュ階層から追い出されているときに起
こる。例えば、プロセッサが、L1キャッシュには存在
しないがL2キャッシュには(したがって包含の原理に
よりL3キャッシュにも)存在するブロックにあるアド
レスに対してIwarx命令を実行するものとする。こ
の場合プロセッサは、Iwarxに関する読取りとマー
クされた読取りをL2キャッシュに発行することにな
る。L2キャッシュは、それがそのブロックのコピーを
有するかどうか判定し、このブロックを直接プロセッサ
に戻す。ブロックがプロセッサに戻った後、プロセッサ
はその予約アドレスおよびフラグを更新する。L2キャ
ッシュもまた、その予約をセットし、RESERVEバ
ス動作をL3キャッシュに送信してその予約をL3キャ
ッシュに通知する。このシナリオは、前記で述べた2つ
の場合を組み合わせたものにすぎない。一般に、Iwa
rx指示を伴うプロセッサからの読取りは、その読取り
を満たすブロックのコピーを有するキャッシュに出会う
まで階層中を下方に伝播され、予約装置をセットする。
その後キャッシュはRESERVEバス動作を残りの階
層中を下方に伝播して、残りの予約装置をセットする。
【0024】このようにして、適切な予約情報を有する
Iwarx命令の結果として階層中の全ての予約装置が
ロードされ、予約グラニュールに書込みを行うトランザ
クションを求めてスヌープを開始することができる。こ
れにより、予約装置は予約フラグをリセットし、その予
約のメモリ位置が修正されている可能性がある場合には
stwcx命令が完了しないようにすることができる。
Iwarx命令の結果として階層中の全ての予約装置が
ロードされ、予約グラニュールに書込みを行うトランザ
クションを求めてスヌープを開始することができる。こ
れにより、予約装置は予約フラグをリセットし、その予
約のメモリ位置が修正されている可能性がある場合には
stwcx命令が完了しないようにすることができる。
【0025】キャッシュ・コヒーレンシと予約装置の間
の相互作用を説明するために、L1キャッシュ中に存在
する位置に対してプロセッサがIwarxを実行する、
前記で論じた第2の場合について考えてみる。プロセッ
サはその予約をセットし、RESERVEバス動作をL
1キャッシュとL2キャッシュ(51)の間のキャッシ
ュ間接続上に提示する。前記で論じたように、RESE
RVEバス動作が最下位レベルのキャッシュに伝播され
るまでに任意の時間がかかる可能性がある。予約グラニ
ュール内の書込み動作は、L1キャッシュで予約がなさ
れた後、RESERVEバス動作がL3キャッシュに伝
播される前に、汎用相互接続上で起こる可能性がある。
この場合、L3キャッシュは予約を通知されておらず、
システムが正しく機能しない可能性があるように見える
ことになる。しかし実際にはそのようにはならない。そ
の代わり、最下位レベルのキャッシュは、コヒーレンシ
を保証するために、バス上で観察された書込みについて
の情報を階層の最上部に伝播してコヒーレンシを保証す
る必要がある。これによりL1予約装置に書込みが通知
され、その結果L1予約装置は予約フラグをリセットす
ることになる。一般に、キャッシュ・コヒーレンシは、
全ての書込み(予約を有するブロックに対して起こるも
のも含めて)についての情報が、任意の処理装置のキャ
ッシュ階層を、存在するブロックのコピーを有する最上
位の階層レベルまで伝播されることを必要とする。した
がって、書込みについての情報はブロックのコピーが存
在するレベルまで伝播されて、別のプロセッサが予約グ
ラニュールへの書込みを実行するとき、その時点でL3
キャッシュがまだ予約を通知されていない場合でもプロ
セッサの予約フラグをリセットすることができるように
なる。
の相互作用を説明するために、L1キャッシュ中に存在
する位置に対してプロセッサがIwarxを実行する、
前記で論じた第2の場合について考えてみる。プロセッ
サはその予約をセットし、RESERVEバス動作をL
1キャッシュとL2キャッシュ(51)の間のキャッシ
ュ間接続上に提示する。前記で論じたように、RESE
RVEバス動作が最下位レベルのキャッシュに伝播され
るまでに任意の時間がかかる可能性がある。予約グラニ
ュール内の書込み動作は、L1キャッシュで予約がなさ
れた後、RESERVEバス動作がL3キャッシュに伝
播される前に、汎用相互接続上で起こる可能性がある。
この場合、L3キャッシュは予約を通知されておらず、
システムが正しく機能しない可能性があるように見える
ことになる。しかし実際にはそのようにはならない。そ
の代わり、最下位レベルのキャッシュは、コヒーレンシ
を保証するために、バス上で観察された書込みについて
の情報を階層の最上部に伝播してコヒーレンシを保証す
る必要がある。これによりL1予約装置に書込みが通知
され、その結果L1予約装置は予約フラグをリセットす
ることになる。一般に、キャッシュ・コヒーレンシは、
全ての書込み(予約を有するブロックに対して起こるも
のも含めて)についての情報が、任意の処理装置のキャ
ッシュ階層を、存在するブロックのコピーを有する最上
位の階層レベルまで伝播されることを必要とする。した
がって、書込みについての情報はブロックのコピーが存
在するレベルまで伝播されて、別のプロセッサが予約グ
ラニュールへの書込みを実行するとき、その時点でL3
キャッシュがまだ予約を通知されていない場合でもプロ
セッサの予約フラグをリセットすることができるように
なる。
【0026】しかし、ブロックが部分的または完全にメ
モリ階層から追い出されている場合、キャッシュ・コヒ
ーレンシ・プロトコルは、存在するブロックのコピーを
有する最上位のキャッシュ・レベルより上位のレベルに
は書込みについての情報を伝播しない(ブロックの追い
出しによりどの予約フラグの妥当性も改変されない)。
この場合には、プロセッサの予約フラグをリセットする
ため、他の何らかの機構が書込みについての情報を、階
層中を上方にプロセッサまで伝播しなければならない。
これが予約装置の役割である。あるブロックが所与のレ
ベルのキャッシュ階層から追い出されている場合は、そ
のキャッシュはもはやコヒーレンシ・プロトコルに関与
しないが、予約は引き続き関与する。予約装置は、活動
状態の予約を有するブロックへの書込みを検出した場合
には、Iwarx/stwcx命令の意味が確実に保持
されるように、予約フラグをリセットし、書込みについ
ての情報を上位の階層レベルに伝播することになる。し
かし、所与のキャッシュ階層レベルからブロックが追い
出されるまでは、コヒーレンシ機構により少なくともこ
の階層レベルまでは書込みについての情報が伝播される
ことが保証されるので、予約装置を使用する必要はな
い。従来技術のシステムは、Iwarxヒットに応じて
RESERVEバス動作を階層全体を下方に伝播すると
き、絶対に必要となる前に、書込みをスヌープできる状
態に予約装置をしておく働きをするだけである。予約装
置は、ブロックが所与のキャッシュ階層レベルから除去
された後でのみ書込みをスヌープしなければならない。
厳密に言えば、ブロックが追い出される前に予約装置を
セットする必要はない。
モリ階層から追い出されている場合、キャッシュ・コヒ
ーレンシ・プロトコルは、存在するブロックのコピーを
有する最上位のキャッシュ・レベルより上位のレベルに
は書込みについての情報を伝播しない(ブロックの追い
出しによりどの予約フラグの妥当性も改変されない)。
この場合には、プロセッサの予約フラグをリセットする
ため、他の何らかの機構が書込みについての情報を、階
層中を上方にプロセッサまで伝播しなければならない。
これが予約装置の役割である。あるブロックが所与のレ
ベルのキャッシュ階層から追い出されている場合は、そ
のキャッシュはもはやコヒーレンシ・プロトコルに関与
しないが、予約は引き続き関与する。予約装置は、活動
状態の予約を有するブロックへの書込みを検出した場合
には、Iwarx/stwcx命令の意味が確実に保持
されるように、予約フラグをリセットし、書込みについ
ての情報を上位の階層レベルに伝播することになる。し
かし、所与のキャッシュ階層レベルからブロックが追い
出されるまでは、コヒーレンシ機構により少なくともこ
の階層レベルまでは書込みについての情報が伝播される
ことが保証されるので、予約装置を使用する必要はな
い。従来技術のシステムは、Iwarxヒットに応じて
RESERVEバス動作を階層全体を下方に伝播すると
き、絶対に必要となる前に、書込みをスヌープできる状
態に予約装置をしておく働きをするだけである。予約装
置は、ブロックが所与のキャッシュ階層レベルから除去
された後でのみ書込みをスヌープしなければならない。
厳密に言えば、ブロックが追い出される前に予約装置を
セットする必要はない。
【0027】従来技術のシステムでは、Iwarx命令
がプロセッサによって実行され、キャッシュ階層中のブ
ロックが発見されると必ず、RESERVEバス動作が
残りの階層中を下方に伝播されることに留意されたい。
これは、そのブロックに対する未解決の予約をプロセッ
サが既に有する場合でも起こる。例として、Iwarx
/stwcxで実施されるテスト/テスト/セットと呼
ばれる一般的な同期基本命令は、最初にメモリ中のある
位置に対してIwarxを行う。この位置が非ゼロの値
を有する場合には、プロセッサはIwarxまで分岐を
戻り、その値がゼロになるまで再度読み取る。Iwar
xがゼロを戻した後、プロセッサはstwcx命令によ
ってその値を1に変更しようとの試みを続ける。これが
うまくいけば、プロセッサはゼロを読み取り、それを1
に変更し、それを再度アトミック的に書き戻すことがで
きたわけである。この手順は、先に論じたアトミックな
読取り/修正/書込みシーケンスであり、その他のプロ
セッサが進行しないようにするロックをセットする(他
のプロセッサはこの時点で1を読み取るが、それ自体が
ゼロを読み取り、その後それをうまくアトミック的に1
に修正するまで先に進むことができない)。概して、所
与のプロセッサは、他のいずれかのプロセッサが既にロ
ックを有するので、Iwarxが1を戻すと同時に「ス
ピン」することになる。この場合、Iwarxが1を戻
すごとに、RESERVE動作は階層全体を下方に汎用
相互接続上まで伝播される(通常は、ロックのメモリ位
置を有するブロックはL1キャッシュ中で見つかること
になる)。RESERVEバス動作の同報通信を繰り返
すことは、「Iwarxストーム」と呼ばれる。これに
より深刻な性能低下が生じ、従来技術のシステムが制限
される。したがって、システム・バスのトラフィックを
減少させ、システム全体のパフォーマンスを高めるよう
にIwarx/stwcx意味を実施する、より効率的
な方法を考案することが望ましい。予約バス動作を、キ
ャッシュ階層の深さ全体を下方に伝送する必要がなくな
れば特に有利である。
がプロセッサによって実行され、キャッシュ階層中のブ
ロックが発見されると必ず、RESERVEバス動作が
残りの階層中を下方に伝播されることに留意されたい。
これは、そのブロックに対する未解決の予約をプロセッ
サが既に有する場合でも起こる。例として、Iwarx
/stwcxで実施されるテスト/テスト/セットと呼
ばれる一般的な同期基本命令は、最初にメモリ中のある
位置に対してIwarxを行う。この位置が非ゼロの値
を有する場合には、プロセッサはIwarxまで分岐を
戻り、その値がゼロになるまで再度読み取る。Iwar
xがゼロを戻した後、プロセッサはstwcx命令によ
ってその値を1に変更しようとの試みを続ける。これが
うまくいけば、プロセッサはゼロを読み取り、それを1
に変更し、それを再度アトミック的に書き戻すことがで
きたわけである。この手順は、先に論じたアトミックな
読取り/修正/書込みシーケンスであり、その他のプロ
セッサが進行しないようにするロックをセットする(他
のプロセッサはこの時点で1を読み取るが、それ自体が
ゼロを読み取り、その後それをうまくアトミック的に1
に修正するまで先に進むことができない)。概して、所
与のプロセッサは、他のいずれかのプロセッサが既にロ
ックを有するので、Iwarxが1を戻すと同時に「ス
ピン」することになる。この場合、Iwarxが1を戻
すごとに、RESERVE動作は階層全体を下方に汎用
相互接続上まで伝播される(通常は、ロックのメモリ位
置を有するブロックはL1キャッシュ中で見つかること
になる)。RESERVEバス動作の同報通信を繰り返
すことは、「Iwarxストーム」と呼ばれる。これに
より深刻な性能低下が生じ、従来技術のシステムが制限
される。したがって、システム・バスのトラフィックを
減少させ、システム全体のパフォーマンスを高めるよう
にIwarx/stwcx意味を実施する、より効率的
な方法を考案することが望ましい。予約バス動作を、キ
ャッシュ階層の深さ全体を下方に伝送する必要がなくな
れば特に有利である。
【0028】
【発明が解決しようとする課題】したがって、本発明の
一目的は、マルチプロセッサ・コンピュータ・システム
においてキャッシュ・エントリの予約を処理するため
の、改善された方法を提供することである。
一目的は、マルチプロセッサ・コンピュータ・システム
においてキャッシュ・エントリの予約を処理するため
の、改善された方法を提供することである。
【0029】本発明の別の目的は、ロード/予約(Iw
arx)命令からのバス・トラフィックを減少させる方
法を提供することである。
arx)命令からのバス・トラフィックを減少させる方
法を提供することである。
【0030】本発明の別の目的は、既存の機構を利用し
てパフォーマンスの向上を達成する方法を提供すること
である。
てパフォーマンスの向上を達成する方法を提供すること
である。
【0031】
【課題を解決するための手段】前述の目的は、マルチプ
ロセッサ・コンピュータ・システムの処理装置で使用す
るために、メモリ装置からの値にアクセスする方法によ
って達成される。この方法は一般に、メモリ装置から全
ての前記キャッシュに値をロードする段階と、この値を
受け取った最上位キャッシュを予約済みとしてマークす
る段階と、この値を最上位キャッシュからキャストアウ
トすべきとき、予約バス動作を最上位キャッシュから第
2レベルのキャッシュに送る段階と、予約バス動作を第
2レベルのキャッシュに送った後で、最上位キャッシュ
からこの値をキャストアウトする段階とを含む。この手
順は、マルチレベル・キャッシュ・アーキテクチャの全
てのキャッシュに対して使用することが好ましい。すな
わち、この値が任意の所与のキャッシュからキャストア
ウトされるとき、その所与のキャッシュから次の最下位
レベルのキャッシュ(すなわちバスのより近くにある隣
接するキャッシュ)に予約バス動作が送られるが、この
予約バス動作は全ての下位キャッシュに送られるわけで
はない。予約バス動作を送った後、この値はその所与の
キャッシュからキャストアウトされる。コンピュータ・
システム内のその他の任意のプロセッサによる、その値
に関連するメモリ装置のアドレスに書き込む試みは、全
ての上位レベル・キャッシュに転送される。アドレスに
書き込むこのような任意の試みに応答して、ブロックの
予約済みのマークが除去される。
ロセッサ・コンピュータ・システムの処理装置で使用す
るために、メモリ装置からの値にアクセスする方法によ
って達成される。この方法は一般に、メモリ装置から全
ての前記キャッシュに値をロードする段階と、この値を
受け取った最上位キャッシュを予約済みとしてマークす
る段階と、この値を最上位キャッシュからキャストアウ
トすべきとき、予約バス動作を最上位キャッシュから第
2レベルのキャッシュに送る段階と、予約バス動作を第
2レベルのキャッシュに送った後で、最上位キャッシュ
からこの値をキャストアウトする段階とを含む。この手
順は、マルチレベル・キャッシュ・アーキテクチャの全
てのキャッシュに対して使用することが好ましい。すな
わち、この値が任意の所与のキャッシュからキャストア
ウトされるとき、その所与のキャッシュから次の最下位
レベルのキャッシュ(すなわちバスのより近くにある隣
接するキャッシュ)に予約バス動作が送られるが、この
予約バス動作は全ての下位キャッシュに送られるわけで
はない。予約バス動作を送った後、この値はその所与の
キャッシュからキャストアウトされる。コンピュータ・
システム内のその他の任意のプロセッサによる、その値
に関連するメモリ装置のアドレスに書き込む試みは、全
ての上位レベル・キャッシュに転送される。アドレスに
書き込むこのような任意の試みに応答して、ブロックの
予約済みのマークが除去される。
【0032】
【発明の実施の形態】本発明は、図4や図5のシステム
などのマルチプロセッサ・システムにおいてキャッシュ
予約を処理する方法を対象とするが、本発明は、必ずし
も従来通りではない、すなわち新しいハードウェア構成
要素を含む、あるいは既存の構成要素用の新規な相互接
続アーキテクチャを有するコンピュータ・システムにも
適用できる。したがって、本発明は図面に示す汎用シス
テムに限定されるものではないことを、当業者なら理解
するであろう。
などのマルチプロセッサ・システムにおいてキャッシュ
予約を処理する方法を対象とするが、本発明は、必ずし
も従来通りではない、すなわち新しいハードウェア構成
要素を含む、あるいは既存の構成要素用の新規な相互接
続アーキテクチャを有するコンピュータ・システムにも
適用できる。したがって、本発明は図面に示す汎用シス
テムに限定されるものではないことを、当業者なら理解
するであろう。
【0033】上記に説明したように、従来技術では、L
ARX命令のターゲットが任意のキャッシュ・レベルで
見つかると、階層全ての下位レベルにRESERVEバ
ス動作が渡され、予約グラニュールに対して試みられた
あらゆる書込みがキャッシュ階層中を上方に上位レベル
まで伝播されることが保証される。本発明では、さらに
高いパフォーマンスを達成するようにこの方針が改変さ
れる。具体的に言うと、予約グラニュールに対応するブ
ロックをあるレベル(例えばレベルN)から割振り解除
しなければならない場合、そのことが予約バス動作によ
りその次の下位レベル(N+1)に通知される。次の下
位レベルには、ブロックが除去されてコヒーレンシ・プ
ロトコルが書込み動作の転送を停止する前にそのレベル
の予約装置が確実に動作しているようにするために、ブ
ロックの除去が完了する前に通知される。予約バス動作
は次の下位レベルに、このブロックに書込みを試みる全
てのトランザクションを上位レベル(N)に転送しなけ
ればならないと通知する。書込みの試みは、キャッシュ
・コヒーレンシのためではなく、Iwarx/stwc
x命令の意味を維持するために転送する必要がある。
ARX命令のターゲットが任意のキャッシュ・レベルで
見つかると、階層全ての下位レベルにRESERVEバ
ス動作が渡され、予約グラニュールに対して試みられた
あらゆる書込みがキャッシュ階層中を上方に上位レベル
まで伝播されることが保証される。本発明では、さらに
高いパフォーマンスを達成するようにこの方針が改変さ
れる。具体的に言うと、予約グラニュールに対応するブ
ロックをあるレベル(例えばレベルN)から割振り解除
しなければならない場合、そのことが予約バス動作によ
りその次の下位レベル(N+1)に通知される。次の下
位レベルには、ブロックが除去されてコヒーレンシ・プ
ロトコルが書込み動作の転送を停止する前にそのレベル
の予約装置が確実に動作しているようにするために、ブ
ロックの除去が完了する前に通知される。予約バス動作
は次の下位レベルに、このブロックに書込みを試みる全
てのトランザクションを上位レベル(N)に転送しなけ
ればならないと通知する。書込みの試みは、キャッシュ
・コヒーレンシのためではなく、Iwarx/stwc
x命令の意味を維持するために転送する必要がある。
【0034】さらに、本発明では、予約バス動作はキャ
ッシュ階層の深さ全体を下方に伝送されない。従来技術
とは異なり、予約バス動作の受信側は、予約グラニュー
ルの追い出しによってそれが必要となるまで、次の最下
位レベルにこれを伝送しない。この手法はコヒーレンシ
のために絶対に必要というわけではないが、最適化の働
きをする。この新規なプロトコルを従来技術のプロトコ
ルと組み合わせることができる。何らかの階層レベルで
従来技術のプロトコルを採用する場合、先に論じたよう
に、次の最下位レベルに予約グラニュールのアドレス
を、そのレベルで必要となる前に通知するだけである。
これによりプロトコルの適切な動作が妨げられることは
なく、絶対に必要となる前に、RESERVEバス動作
が残りの階層中を下方に単に伝播されるだけである。
ッシュ階層の深さ全体を下方に伝送されない。従来技術
とは異なり、予約バス動作の受信側は、予約グラニュー
ルの追い出しによってそれが必要となるまで、次の最下
位レベルにこれを伝送しない。この手法はコヒーレンシ
のために絶対に必要というわけではないが、最適化の働
きをする。この新規なプロトコルを従来技術のプロトコ
ルと組み合わせることができる。何らかの階層レベルで
従来技術のプロトコルを採用する場合、先に論じたよう
に、次の最下位レベルに予約グラニュールのアドレス
を、そのレベルで必要となる前に通知するだけである。
これによりプロトコルの適切な動作が妨げられることは
なく、絶対に必要となる前に、RESERVEバス動作
が残りの階層中を下方に単に伝播されるだけである。
【0035】予約は、上位レベルにはもはや存在せず、
したがってキャッシュ・コヒーレンシ・プロトコルによ
って保護されないブロック上に保持されるので、予約動
作は基本的に、下位の階層レベルに予約抹消(killin
g)動作を上方に転送するよう明示的に指令しなければ
ならない場合にのみ、キャッシュ階層の下位レベルまで
下方に伝送される。さらに、予約動作の受信側は、予約
グラニュールのキャストアウト、処分(Victiruzatio
n)、またはスヌープ・プッシュによりこの動作を伝送
しなければならなくなるまで、下方に下位レベルに伝送
しない。これらの段階については、図3のフローチャー
トに関連してさらに説明することができる。
したがってキャッシュ・コヒーレンシ・プロトコルによ
って保護されないブロック上に保持されるので、予約動
作は基本的に、下位の階層レベルに予約抹消(killin
g)動作を上方に転送するよう明示的に指令しなければ
ならない場合にのみ、キャッシュ階層の下位レベルまで
下方に伝送される。さらに、予約動作の受信側は、予約
グラニュールのキャストアウト、処分(Victiruzatio
n)、またはスヌープ・プッシュによりこの動作を伝送
しなければならなくなるまで、下方に下位レベルに伝送
しない。これらの段階については、図3のフローチャー
トに関連してさらに説明することができる。
【0036】プロセッサがロード/予約命令で読み取る
値に最初にアクセスしたとき、その値は最上位レベル・
キャッシュまでの全てのキャッシュ・レベルに置かれる
(30)。キャッシュ中の対応するブロックは予約済み
としてマークされる(32)。その後プロセッサは、ロ
ード/予約のキャッシュ値と関係があることもあれば関
係がないこともある、その他の命令を実行する(3
4)。その値が最上位レベル・キャッシュから追い出さ
れる場合には(36)、予約バス動作がすぐ下のレベル
に送られる(38)が、すぐ下のレベルのみである(つ
まり下位レベルのキャッシュ全てにではない)。そうで
ない場合には、その値がキャストアウトされるまで、プ
ロセッサは他の命令の実行を続ける。予約バス動作が次
の下位レベル・キャッシュに伝送された後、ブロックを
最上位レベルのキャッシュから割振り解除することがで
きる(40)。その後、その下位レベルのキャッシュ
は、キャッシュおよび予約されたアドレス上でのスヌー
プのためにバスを監視することになる。このブロックに
書き込む試みがなされた場合(42)、それは最上位レ
ベル・キャッシュに転送され(44)、そこで予約が除
去されることになる。
値に最初にアクセスしたとき、その値は最上位レベル・
キャッシュまでの全てのキャッシュ・レベルに置かれる
(30)。キャッシュ中の対応するブロックは予約済み
としてマークされる(32)。その後プロセッサは、ロ
ード/予約のキャッシュ値と関係があることもあれば関
係がないこともある、その他の命令を実行する(3
4)。その値が最上位レベル・キャッシュから追い出さ
れる場合には(36)、予約バス動作がすぐ下のレベル
に送られる(38)が、すぐ下のレベルのみである(つ
まり下位レベルのキャッシュ全てにではない)。そうで
ない場合には、その値がキャストアウトされるまで、プ
ロセッサは他の命令の実行を続ける。予約バス動作が次
の下位レベル・キャッシュに伝送された後、ブロックを
最上位レベルのキャッシュから割振り解除することがで
きる(40)。その後、その下位レベルのキャッシュ
は、キャッシュおよび予約されたアドレス上でのスヌー
プのためにバスを監視することになる。このブロックに
書き込む試みがなされた場合(42)、それは最上位レ
ベル・キャッシュに転送され(44)、そこで予約が除
去されることになる。
【0037】SMPシステムで2レベルを超えるキャッ
シュを有する処理装置を使用する場合には、条件付き段
階42からの分岐「no」で示すように、前述の段階が
下位レベルにも適用される。例えば、値がL2キャッシ
ュからキャストアウトされる前(L1キャッシュからは
既にキャストアウトされた後)には、書込みスヌープは
起こらない可能性がある。この場合、段階36でのブロ
ックのキャストアウトの検査が、L2キャッシュに適用
される。予約バス動作(38)はL2キャッシュからL
3キャッシュに伝送され、その後このブロックがL2キ
ャッシュから割振り解除される(40)。このアドレス
に関して起こる書込みスヌープ・ヒットは、L3キャッ
シュからL2およびL1キャッシュの両方に転送される
ことになる。この手順は、直列に接続した任意の数のキ
ャッシュに適用することができる。
シュを有する処理装置を使用する場合には、条件付き段
階42からの分岐「no」で示すように、前述の段階が
下位レベルにも適用される。例えば、値がL2キャッシ
ュからキャストアウトされる前(L1キャッシュからは
既にキャストアウトされた後)には、書込みスヌープは
起こらない可能性がある。この場合、段階36でのブロ
ックのキャストアウトの検査が、L2キャッシュに適用
される。予約バス動作(38)はL2キャッシュからL
3キャッシュに伝送され、その後このブロックがL2キ
ャッシュから割振り解除される(40)。このアドレス
に関して起こる書込みスヌープ・ヒットは、L3キャッ
シュからL2およびL1キャッシュの両方に転送される
ことになる。この手順は、直列に接続した任意の数のキ
ャッシュに適用することができる。
【0038】本発明は、予約動作のためのシステム・バ
ス・トラフィックを著しく減少させることができる。I
warx/stwcx命令が非常にしばしば実行される
SMPシステムでは、本発明によりシステム全体のパフ
ォーマンスをさらに高めることができる。さらに、この
改善は、既存の機構であるキャッシュ・コヒーレンシ・
プロトコルを使って予約されるブロックへの権限を決定
することにより達成される。所与のレベルのキャッシュ
が権限を放棄した場合のみ、LARX予約を送ることが
必要になる。
ス・トラフィックを著しく減少させることができる。I
warx/stwcx命令が非常にしばしば実行される
SMPシステムでは、本発明によりシステム全体のパフ
ォーマンスをさらに高めることができる。さらに、この
改善は、既存の機構であるキャッシュ・コヒーレンシ・
プロトコルを使って予約されるブロックへの権限を決定
することにより達成される。所与のレベルのキャッシュ
が権限を放棄した場合のみ、LARX予約を送ることが
必要になる。
【0039】まとめとして、本発明の構成に関して以下
の事項を開示する。
の事項を開示する。
【0040】(1)マルチプロセッサ・コンピュータ・
システムの、少なくとも第1および第2のキャッシュを
有する処理装置で使用するために、メモリ装置からの値
にアクセスする方法であって、メモリ装置から全ての前
記キャッシュに値をロードする段階と、この値を受け取
った第1キャッシュを予約済みとしてマークする段階
と、この値が第1キャッシュからキャストアウトされる
とき、予約バス動作を第1キャッシュから第2キャッシ
ュに送る段階と、前記の予約バス動作を第2キャッシュ
に送った後で、第1キャッシュからこの値をキャストア
ウトする段階とを含む方法。 (2)第2キャッシュが、コンピュータ・システム内の
他の任意の処理装置による、その値に関連するメモリ装
置のアドレスに書き込む試みを第1キャッシュに転送す
る段階をさらに含む、上記(1)に記載の方法。 (3)処理装置が第3キャッシュを有するシステムにお
いて、この値が第2キャッシュからキャストアウトされ
るとき、第2キャッシュから第3キャッシュに予約バス
動作を送る段階と、前記の予約バス動作を第3キャッシ
ュに送った後で、この値を第2キャッシュからキャスト
アウトする段階とをさらに含む、上記(1)に記載の方
法。 (4)処理装置が第1および第2のキャッシュに加えて
複数のキャッシュを有し、全てのキャッシュが処理装置
のプロセッサとコンピュータ・システムのバスの間で直
列に接続されるシステムにおいて、この値が任意の所与
のキャッシュからキャストアウトされるとき、その所与
のキャッシュからバスにより近い側の隣接するキャッシ
ュに予約バス動作を送る段階と、前記の予約バス動作を
隣接するキャッシュに送った後で、その所与のキャッシ
ュから値をキャストアウトする段階とをさらに含む、上
記(1)に記載の方法。 (5)第1キャッシュが処理装置のプロセッサに接続さ
れ、第2キャッシュがさらにコンピュータ・システムの
バスに接続されている上記(1)に記載の方法。 (6)第1キャッシュが予約済みとしてマークされたま
まであることを条件として、処理装置が、メモリ装置に
新しい値を記憶する段階をさらに含む、上記(1)に記
載の方法。 (7)メモリ装置のアドレスに書き込む試みがキャッシ
ュ・コヒーレンシ・プロトコルを使用して検出される上
記(2)に記載の方法。 (8)アドレスに書き込む任意の試みに応答して、キャ
ッシュの予約済みのマークを除去する段階をさらに含
む、上記(2)に記載の方法。 (9)第3キャッシュが、コンピュータ・システム内の
他の任意の処理装置による、その値に関連するメモリ装
置のアドレスに書き込む任意の試みを第2キャッシュに
転送する段階をさらに含む、上記(3)に記載の方法。 (10)第2キャッシュが、他の任意の処理装置によ
る、そのアドレスに書き込む任意の試みを第1キャッシ
ュに転送する段階をさらに含む、上記(9)に記載の方
法。 (11)プロセッサと、前記プロセッサに値を提供する
複数のキャッシュとを含み、前記キャッシュが、複数の
レベルに配列され、予約済みのブロックが上位レベル・
キャッシュからキャストアウトされる前に上位レベル・
キャッシュから次の下位レベル・キャッシュに予約バス
動作を送るように適合されているコンピュータ用の処理
装置。 (12)前記キャッシュが、前記プロセッサと一体にパ
ッケージされた1つまたは複数のオンボード・キャッシ
ュを含む上記(11)に記載の処理装置。 (13)前記の各キャッシュが、別の処理装置による、
前記ブロックに関連するメモリ装置のアドレスに書き込
む任意の試みを全ての上位レベル・キャッシュに転送す
る上記(11)に記載の処理装置。 (14)前記の各キャッシュが、前記アドレスに書き込
む任意の試みに応答して、前記の予約済みブロックを非
予約状態に変更する上記(13)に記載の処理装置。 (15)前記アドレスに書き込む任意の試みがキャッシ
ュ・コヒーレンシ・プロトコルを使用して検出される上
記(14)に記載の処理装置。 (16)メモリ装置と、前記メモリ装置に接続されたバ
スと、複数のレベルに配列された複数のキャッシュをそ
のうちの少なくとも1つが有する、前記バスにそれぞれ
に接続された複数の処理装置とを含み、前記キャッシュ
が、予約済みのブロックが上位レベル・キャッシュから
キャストアウトされる前に上位レベル・キャッシュから
次の下位レベル・キャッシュに予約バス動作を送るよう
に適合されているマルチプロセッサ・コンピュータ・シ
ステム。 (17)前記の各処理装置が複数のレベルに配列された
複数のキャッシュを有し、前記のキャッシュがすべて、
予約済みのブロックが上位レベル・キャッシュからキャ
ストアウトされる前に上位レベル・キャッシュから次の
下位レベル・キャッシュに予約バス動作を送るように適
合されている上記(16)に記載のコンピュータ・シス
テム。 (18)前記の各キャッシュが、別の処理装置による、
前記ブロックに関連するメモリ装置のアドレスに書き込
む任意の試みを全ての上位レベル・キャッシュに転送す
る上記(16)に記載のコンピュータ・システム。 (19)前記の各キャッシュが、前記アドレスに書き込
む任意の試みに応答して、前記の予約済みブロックを非
予約状態に変更する上記(18)に記載のコンピュータ
・システム。 (20)前記アドレスに書き込む任意の試みがキャッシ
ュ・コヒーレンシ・プロトコルを使用して検出される上
記(19)に記載のコンピュータ・システム。
システムの、少なくとも第1および第2のキャッシュを
有する処理装置で使用するために、メモリ装置からの値
にアクセスする方法であって、メモリ装置から全ての前
記キャッシュに値をロードする段階と、この値を受け取
った第1キャッシュを予約済みとしてマークする段階
と、この値が第1キャッシュからキャストアウトされる
とき、予約バス動作を第1キャッシュから第2キャッシ
ュに送る段階と、前記の予約バス動作を第2キャッシュ
に送った後で、第1キャッシュからこの値をキャストア
ウトする段階とを含む方法。 (2)第2キャッシュが、コンピュータ・システム内の
他の任意の処理装置による、その値に関連するメモリ装
置のアドレスに書き込む試みを第1キャッシュに転送す
る段階をさらに含む、上記(1)に記載の方法。 (3)処理装置が第3キャッシュを有するシステムにお
いて、この値が第2キャッシュからキャストアウトされ
るとき、第2キャッシュから第3キャッシュに予約バス
動作を送る段階と、前記の予約バス動作を第3キャッシ
ュに送った後で、この値を第2キャッシュからキャスト
アウトする段階とをさらに含む、上記(1)に記載の方
法。 (4)処理装置が第1および第2のキャッシュに加えて
複数のキャッシュを有し、全てのキャッシュが処理装置
のプロセッサとコンピュータ・システムのバスの間で直
列に接続されるシステムにおいて、この値が任意の所与
のキャッシュからキャストアウトされるとき、その所与
のキャッシュからバスにより近い側の隣接するキャッシ
ュに予約バス動作を送る段階と、前記の予約バス動作を
隣接するキャッシュに送った後で、その所与のキャッシ
ュから値をキャストアウトする段階とをさらに含む、上
記(1)に記載の方法。 (5)第1キャッシュが処理装置のプロセッサに接続さ
れ、第2キャッシュがさらにコンピュータ・システムの
バスに接続されている上記(1)に記載の方法。 (6)第1キャッシュが予約済みとしてマークされたま
まであることを条件として、処理装置が、メモリ装置に
新しい値を記憶する段階をさらに含む、上記(1)に記
載の方法。 (7)メモリ装置のアドレスに書き込む試みがキャッシ
ュ・コヒーレンシ・プロトコルを使用して検出される上
記(2)に記載の方法。 (8)アドレスに書き込む任意の試みに応答して、キャ
ッシュの予約済みのマークを除去する段階をさらに含
む、上記(2)に記載の方法。 (9)第3キャッシュが、コンピュータ・システム内の
他の任意の処理装置による、その値に関連するメモリ装
置のアドレスに書き込む任意の試みを第2キャッシュに
転送する段階をさらに含む、上記(3)に記載の方法。 (10)第2キャッシュが、他の任意の処理装置によ
る、そのアドレスに書き込む任意の試みを第1キャッシ
ュに転送する段階をさらに含む、上記(9)に記載の方
法。 (11)プロセッサと、前記プロセッサに値を提供する
複数のキャッシュとを含み、前記キャッシュが、複数の
レベルに配列され、予約済みのブロックが上位レベル・
キャッシュからキャストアウトされる前に上位レベル・
キャッシュから次の下位レベル・キャッシュに予約バス
動作を送るように適合されているコンピュータ用の処理
装置。 (12)前記キャッシュが、前記プロセッサと一体にパ
ッケージされた1つまたは複数のオンボード・キャッシ
ュを含む上記(11)に記載の処理装置。 (13)前記の各キャッシュが、別の処理装置による、
前記ブロックに関連するメモリ装置のアドレスに書き込
む任意の試みを全ての上位レベル・キャッシュに転送す
る上記(11)に記載の処理装置。 (14)前記の各キャッシュが、前記アドレスに書き込
む任意の試みに応答して、前記の予約済みブロックを非
予約状態に変更する上記(13)に記載の処理装置。 (15)前記アドレスに書き込む任意の試みがキャッシ
ュ・コヒーレンシ・プロトコルを使用して検出される上
記(14)に記載の処理装置。 (16)メモリ装置と、前記メモリ装置に接続されたバ
スと、複数のレベルに配列された複数のキャッシュをそ
のうちの少なくとも1つが有する、前記バスにそれぞれ
に接続された複数の処理装置とを含み、前記キャッシュ
が、予約済みのブロックが上位レベル・キャッシュから
キャストアウトされる前に上位レベル・キャッシュから
次の下位レベル・キャッシュに予約バス動作を送るよう
に適合されているマルチプロセッサ・コンピュータ・シ
ステム。 (17)前記の各処理装置が複数のレベルに配列された
複数のキャッシュを有し、前記のキャッシュがすべて、
予約済みのブロックが上位レベル・キャッシュからキャ
ストアウトされる前に上位レベル・キャッシュから次の
下位レベル・キャッシュに予約バス動作を送るように適
合されている上記(16)に記載のコンピュータ・シス
テム。 (18)前記の各キャッシュが、別の処理装置による、
前記ブロックに関連するメモリ装置のアドレスに書き込
む任意の試みを全ての上位レベル・キャッシュに転送す
る上記(16)に記載のコンピュータ・システム。 (19)前記の各キャッシュが、前記アドレスに書き込
む任意の試みに応答して、前記の予約済みブロックを非
予約状態に変更する上記(18)に記載のコンピュータ
・システム。 (20)前記アドレスに書き込む任意の試みがキャッシ
ュ・コヒーレンシ・プロトコルを使用して検出される上
記(19)に記載のコンピュータ・システム。
【図1】従来技術のマルチプロセッサ・コンピュータ・
システムを示すブロック図である。
システムを示すブロック図である。
【図2】オンボードの命令キャッシュおよびデータ・キ
ャッシュと第2レベルのキャッシュを備えたプロセッサ
を有する、従来技術の処理装置を示すブロック図であ
る。
ャッシュと第2レベルのキャッシュを備えたプロセッサ
を有する、従来技術の処理装置を示すブロック図であ
る。
【図3】ロード/記憶動作に対するキャッシュ・エント
リの予約に関連する段階を示すフローチャートである。
リの予約に関連する段階を示すフローチャートである。
【図4】マルチレベル・キャッシュ階層を有する従来の
対称マルチプロセッサ・システムを示すブロック図であ
る。
対称マルチプロセッサ・システムを示すブロック図であ
る。
【図5】Iwarx命令およびstwcx命令をサポー
トするのに必要な構成を詳細に示す、従来の処理装置の
ブロック図である。
トするのに必要な構成を詳細に示す、従来の処理装置の
ブロック図である。
30 最上位レベル・キャッシュに値がロードされる 32 キャッシュ・ブロックを予約する 34 その他の命令を実行する 36 ブロックはキャストアウトされるか 38 予約バス動作が次の下のレベルに送られる 40 キャッシュ・ブロックをキャストアウトする 42 書込みスヌープ・ヒットがあるか 44 全ての上位キャッシュ・レベルに書込みトランザ
クションを転送する
クションを転送する
フロントページの続き (72)発明者 ジョン・スチーヴン・ドドソン アメリカ合衆国78660 テキサス州プフリ ューガーヴィル ベル・ロック・サークル 1205 (72)発明者 ジェリー・ドン・ルイス アメリカ合衆国78681 テキサス州ラウン ド・ロック アロウヘッド・サークル 3409 (72)発明者 デレク・エドワード・ウィリアムス アメリカ合衆国78728 テキサス州オース チン シングル・トレース 14723
Claims (20)
- 【請求項1】マルチプロセッサ・コンピュータ・システ
ムの、少なくとも第1および第2のキャッシュを有する
処理装置で使用するために、メモリ装置からの値にアク
セスする方法であって、 メモリ装置から全ての前記キャッシュに値をロードする
段階と、 この値を受け取った第1キャッシュを予約済みとしてマ
ークする段階と、 この値が第1キャッシュからキャストアウトされると
き、予約バス動作を第1キャッシュから第2キャッシュ
に送る段階と、 前記の予約バス動作を第2キャッシュに送った後で、第
1キャッシュからこの値をキャストアウトする段階とを
含む方法。 - 【請求項2】第2キャッシュが、コンピュータ・システ
ム内の他の任意の処理装置による、その値に関連するメ
モリ装置のアドレスに書き込む試みを第1キャッシュに
転送する段階をさらに含む、請求項1に記載の方法。 - 【請求項3】処理装置が第3キャッシュを有するシステ
ムにおいて、 この値が第2キャッシュからキャストアウトされると
き、第2キャッシュから第3キャッシュに予約バス動作
を送る段階と、 前記の予約バス動作を第3キャッシュに送った後で、こ
の値を第2キャッシュからキャストアウトする段階とを
さらに含む、請求項1に記載の方法。 - 【請求項4】処理装置が第1および第2のキャッシュに
加えて複数のキャッシュを有し、全てのキャッシュが処
理装置のプロセッサとコンピュータ・システムのバスの
間で直列に接続されるシステムにおいて、 この値が任意の所与のキャッシュからキャストアウトさ
れるとき、その所与のキャッシュからバスにより近い側
の隣接するキャッシュに予約バス動作を送る段階と、 前記の予約バス動作を隣接するキャッシュに送った後
で、その所与のキャッシュから値をキャストアウトする
段階とをさらに含む、請求項1に記載の方法。 - 【請求項5】第1キャッシュが処理装置のプロセッサに
接続され、第2キャッシュがさらにコンピュータ・シス
テムのバスに接続されている請求項1に記載の方法。 - 【請求項6】第1キャッシュが予約済みとしてマークさ
れたままであることを条件として、処理装置が、メモリ
装置に新しい値を記憶する段階をさらに含む、請求項1
に記載の方法。 - 【請求項7】メモリ装置のアドレスに書き込む試みがキ
ャッシュ・コヒーレンシ・プロトコルを使用して検出さ
れる請求項2に記載の方法。 - 【請求項8】アドレスに書き込む任意の試みに応答し
て、キャッシュの予約済みのマークを除去する段階をさ
らに含む、請求項2に記載の方法。 - 【請求項9】第3キャッシュが、コンピュータ・システ
ム内の他の任意の処理装置による、その値に関連するメ
モリ装置のアドレスに書き込む任意の試みを第2キャッ
シュに転送する段階をさらに含む、請求項3に記載の方
法。 - 【請求項10】第2キャッシュが、他の任意の処理装置
による、そのアドレスに書き込む任意の試みを第1キャ
ッシュに転送する段階をさらに含む、請求項9に記載の
方法。 - 【請求項11】プロセッサと、 前記プロセッサに値を提供する複数のキャッシュとを含
み、 前記キャッシュが、複数のレベルに配列され、予約済み
のブロックが上位レベル・キャッシュからキャストアウ
トされる前に上位レベル・キャッシュから次の下位レベ
ル・キャッシュに予約バス動作を送るように適合されて
いるコンピュータ用の処理装置。 - 【請求項12】前記キャッシュが、前記プロセッサと一
体にパッケージされた1つまたは複数のオンボード・キ
ャッシュを含む請求項11に記載の処理装置。 - 【請求項13】前記の各キャッシュが、別の処理装置に
よる、前記ブロックに関連するメモリ装置のアドレスに
書き込む任意の試みを全ての上位レベル・キャッシュに
転送する請求項11に記載の処理装置。 - 【請求項14】前記の各キャッシュが、前記アドレスに
書き込む任意の試みに応答して、前記の予約済みブロッ
クを非予約状態に変更する請求項13に記載の処理装
置。 - 【請求項15】前記アドレスに書き込む任意の試みがキ
ャッシュ・コヒーレンシ・プロトコルを使用して検出さ
れる請求項14に記載の処理装置。 - 【請求項16】メモリ装置と、 前記メモリ装置に接続されたバスと、 複数のレベルに配列された複数のキャッシュをそのうち
の少なくとも1つが有する、前記バスにそれぞれに接続
された複数の処理装置とを含み、 前記キャッシュが、予約済みのブロックが上位レベル・
キャッシュからキャストアウトされる前に上位レベル・
キャッシュから次の下位レベル・キャッシュに予約バス
動作を送るように適合されているマルチプロセッサ・コ
ンピュータ・システム。 - 【請求項17】前記の各処理装置が複数のレベルに配列
された複数のキャッシュを有し、前記のキャッシュがす
べて、予約済みのブロックが上位レベル・キャッシュか
らキャストアウトされる前に上位レベル・キャッシュか
ら次の下位レベル・キャッシュに予約バス動作を送るよ
うに適合されている請求項16に記載のコンピュータ・
システム。 - 【請求項18】前記の各キャッシュが、別の処理装置に
よる、前記ブロックに関連するメモリ装置のアドレスに
書き込む任意の試みを全ての上位レベル・キャッシュに
転送する請求項16に記載のコンピュータ・システム。 - 【請求項19】前記の各キャッシュが、前記アドレスに
書き込む任意の試みに応答して、前記の予約済みブロッ
クを非予約状態に変更する請求項18に記載のコンピュ
ータ・システム。 - 【請求項20】前記アドレスに書き込む任意の試みがキ
ャッシュ・コヒーレンシ・プロトコルを使用して検出さ
れる請求項19に記載のコンピュータ・システム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/815647 | 1997-03-13 | ||
| US08/815,647 US5895495A (en) | 1997-03-13 | 1997-03-13 | Demand-based larx-reserve protocol for SMP system buses |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH10254773A true JPH10254773A (ja) | 1998-09-25 |
| JP3431824B2 JP3431824B2 (ja) | 2003-07-28 |
Family
ID=25218403
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP03483598A Expired - Fee Related JP3431824B2 (ja) | 1997-03-13 | 1998-02-17 | アクセス方法及び処理装置 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US5895495A (ja) |
| JP (1) | JP3431824B2 (ja) |
| KR (1) | KR100259433B1 (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4767361B2 (ja) * | 2008-03-31 | 2011-09-07 | パナソニック株式会社 | キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム |
Families Citing this family (81)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6436104B2 (en) | 1996-01-26 | 2002-08-20 | Cordis Corporation | Bifurcated axially flexible stent |
| US6078991A (en) * | 1997-04-14 | 2000-06-20 | International Business Machines Corporation | Method and system for speculatively requesting system data bus for sourcing cache memory data within a multiprocessor data-processing system |
| US6418537B1 (en) | 1997-12-07 | 2002-07-09 | Conexant Systems, Inc. | Accurate timing calibration for each of multiple high-speed clocked receivers using a single DLL |
| US6065077A (en) * | 1997-12-07 | 2000-05-16 | Hotrail, Inc. | Apparatus and method for a cache coherent shared memory multiprocessing system |
| US6633945B1 (en) | 1997-12-07 | 2003-10-14 | Conexant Systems, Inc. | Fully connected cache coherent multiprocessing systems |
| US6516442B1 (en) | 1997-12-07 | 2003-02-04 | Conexant Systems, Inc. | Channel interface and protocols for cache coherency in a scalable symmetric multiprocessor system |
| US6292705B1 (en) | 1998-09-29 | 2001-09-18 | Conexant Systems, Inc. | Method and apparatus for address transfers, system serialization, and centralized cache and transaction control, in a symetric multiprocessor system |
| US6128706A (en) * | 1998-02-03 | 2000-10-03 | Institute For The Development Of Emerging Architectures, L.L.C. | Apparatus and method for a load bias--load with intent to semaphore |
| US6430657B1 (en) * | 1998-10-12 | 2002-08-06 | Institute For The Development Of Emerging Architecture L.L.C. | Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock |
| US6446166B1 (en) | 1999-06-25 | 2002-09-03 | International Business Machines Corporation | Method for upper level cache victim selection management by a lower level cache |
| US6405285B1 (en) | 1999-06-25 | 2002-06-11 | International Business Machines Corporation | Layered local cache mechanism with split register load bus and cache load bus |
| US6427204B1 (en) | 1999-06-25 | 2002-07-30 | International Business Machines Corporation | Method for just in-time delivery of instructions in a data processing system |
| US6425090B1 (en) | 1999-06-25 | 2002-07-23 | International Business Machines Corporation | Method for just-in-time delivery of load data utilizing alternating time intervals |
| US6393553B1 (en) | 1999-06-25 | 2002-05-21 | International Business Machines Corporation | Acknowledgement mechanism for just-in-time delivery of load data |
| US6430683B1 (en) | 1999-06-25 | 2002-08-06 | International Business Machines Corporation | Processor and method for just-in-time delivery of load data via time dependency field |
| US6505277B1 (en) * | 1999-06-25 | 2003-01-07 | International Business Machines Corporation | Method for just-in-time delivery of load data by intervening caches |
| US6397300B1 (en) | 1999-06-25 | 2002-05-28 | International Business Machines Corporation | High performance store instruction management via imprecise local cache update mechanism |
| US6397320B1 (en) | 1999-06-25 | 2002-05-28 | International Business Machines Corporation | Method for just-in-time delivery of load data via cycle of dependency |
| US6463507B1 (en) | 1999-06-25 | 2002-10-08 | International Business Machines Corporation | Layered local cache with lower level cache updating upper and lower level cache directories |
| US6434667B1 (en) | 1999-06-25 | 2002-08-13 | International Business Machines Corporation | Layered local cache with imprecise reload mechanism |
| US6385694B1 (en) | 1999-06-25 | 2002-05-07 | International Business Machines Corporation | High performance load instruction management via system bus with explicit register load and/or cache reload protocols |
| US6418513B1 (en) | 1999-06-25 | 2002-07-09 | International Business Machines Corporation | Queue-less and state-less layered local data cache mechanism |
| US6779036B1 (en) | 1999-07-08 | 2004-08-17 | International Business Machines Corporation | Method and apparatus for achieving correct order among bus memory transactions in a physically distributed SMP system |
| US6469988B1 (en) | 1999-07-08 | 2002-10-22 | Conexant Systems, Inc. | Low-level circuit implementation of signal flow graphs for real-time signal processing of high-speed digital signals |
| US6442597B1 (en) * | 1999-07-08 | 2002-08-27 | International Business Machines Corporation | Providing global coherence in SMP systems using response combination block coupled to address switch connecting node controllers to memory |
| US6467012B1 (en) | 1999-07-08 | 2002-10-15 | International Business Machines Corporation | Method and apparatus using a distributed system structure to support bus-based cache-coherence protocols for symmetric multiprocessors |
| US6606686B1 (en) * | 1999-07-15 | 2003-08-12 | Texas Instruments Incorporated | Unified memory system architecture including cache and directly addressable static random access memory |
| US6535958B1 (en) * | 1999-07-15 | 2003-03-18 | Texas Instruments Incorporated | Multilevel cache system coherence with memory selectively configured as cache or direct access memory and direct memory access |
| US6343344B1 (en) | 1999-08-04 | 2002-01-29 | International Business Machines Corporation | System bus directory snooping mechanism for read/castout (RCO) address transaction |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| US6591348B1 (en) | 1999-09-09 | 2003-07-08 | International Business Machines Corporation | Method and system for resolution of transaction collisions to achieve global coherence in a distributed symmetric multiprocessor system |
| US6587930B1 (en) | 1999-09-23 | 2003-07-01 | International Business Machines Corporation | Method and system for implementing remstat protocol under inclusion and non-inclusion of L1 data in L2 cache to prevent read-read deadlock |
| US6725307B1 (en) | 1999-09-23 | 2004-04-20 | International Business Machines Corporation | Method and system for controlling data transfers with physical separation of data functionality from address and control functionality in a distributed multi-bus multiprocessor system |
| US6457085B1 (en) | 1999-11-04 | 2002-09-24 | International Business Machines Corporation | Method and system for data bus latency reduction using transfer size prediction for split bus designs |
| US6542949B1 (en) | 1999-11-08 | 2003-04-01 | International Business Machines Corporation | Method and apparatus for increased performance of a parked data bus in the non-parked direction |
| US6529990B1 (en) | 1999-11-08 | 2003-03-04 | International Business Machines Corporation | Method and apparatus to eliminate failed snoops of transactions caused by bus timing conflicts in a distributed symmetric multiprocessor system |
| US6684279B1 (en) | 1999-11-08 | 2004-01-27 | International Business Machines Corporation | Method, apparatus, and computer program product for controlling data transfer |
| US6535941B1 (en) | 1999-11-08 | 2003-03-18 | International Business Machines Corporation | Method and apparatus for avoiding data bus grant starvation in a non-fair, prioritized arbiter for a split bus system with independent address and data bus grants |
| US7529799B2 (en) | 1999-11-08 | 2009-05-05 | International Business Machines Corporation | Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system |
| US6516379B1 (en) | 1999-11-08 | 2003-02-04 | International Business Machines Corporation | Method and apparatus for transaction pacing to reduce destructive interference between successive transactions in a distributed symmetric multiprocessor system |
| US6606676B1 (en) | 1999-11-08 | 2003-08-12 | International Business Machines Corporation | Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system |
| US6523076B1 (en) | 1999-11-08 | 2003-02-18 | International Business Machines Corporation | Method and apparatus for synchronizing multiple bus arbiters on separate chips to give simultaneous grants for the purpose of breaking livelocks |
| US6654912B1 (en) * | 2000-10-04 | 2003-11-25 | Network Appliance, Inc. | Recovery of file system data in file servers mirrored file system volumes |
| US6748501B2 (en) * | 2000-12-30 | 2004-06-08 | International Business Machines Corporation | Microprocessor reservation mechanism for a hashed address system |
| JP2004110367A (ja) * | 2002-09-18 | 2004-04-08 | Hitachi Ltd | 記憶装置システムの制御方法、記憶制御装置、および記憶装置システム |
| US7263593B2 (en) * | 2002-11-25 | 2007-08-28 | Hitachi, Ltd. | Virtualization controller and data transfer control method |
| JP2004220450A (ja) | 2003-01-16 | 2004-08-05 | Hitachi Ltd | ストレージ装置、その導入方法、及びその導入プログラム |
| JP4386694B2 (ja) * | 2003-09-16 | 2009-12-16 | 株式会社日立製作所 | 記憶システム及び記憶制御装置 |
| JP2005202893A (ja) * | 2004-01-19 | 2005-07-28 | Hitachi Ltd | 記憶デバイス制御装置、ストレージシステム、プログラムを記録した記録媒体、情報処理装置、及びストレージシステムの制御方法 |
| US7437541B2 (en) * | 2004-07-08 | 2008-10-14 | International Business Machiens Corporation | Atomically updating 64 bit fields in the 32 bit AIX kernel |
| JP4646574B2 (ja) * | 2004-08-30 | 2011-03-09 | 株式会社日立製作所 | データ処理システム |
| US7197604B2 (en) * | 2004-10-14 | 2007-03-27 | International Business Machines Corporation | Processor, data processing system and method for synchronzing access to data in shared memory |
| US7200717B2 (en) * | 2004-10-14 | 2007-04-03 | International Business Machines Corporation | Processor, data processing system and method for synchronizing access to data in shared memory |
| JP2006127028A (ja) * | 2004-10-27 | 2006-05-18 | Hitachi Ltd | 記憶システム及び記憶制御装置 |
| US7305522B2 (en) * | 2005-02-12 | 2007-12-04 | International Business Machines Corporation | Victim cache using direct intervention |
| US7305523B2 (en) * | 2005-02-12 | 2007-12-04 | International Business Machines Corporation | Cache memory direct intervention |
| US8347037B2 (en) * | 2008-10-22 | 2013-01-01 | International Business Machines Corporation | Victim cache replacement |
| US8209489B2 (en) * | 2008-10-22 | 2012-06-26 | International Business Machines Corporation | Victim cache prefetching |
| US8117397B2 (en) * | 2008-12-16 | 2012-02-14 | International Business Machines Corporation | Victim cache line selection |
| US8225045B2 (en) * | 2008-12-16 | 2012-07-17 | International Business Machines Corporation | Lateral cache-to-cache cast-in |
| US8499124B2 (en) * | 2008-12-16 | 2013-07-30 | International Business Machines Corporation | Handling castout cache lines in a victim cache |
| US8489819B2 (en) * | 2008-12-19 | 2013-07-16 | International Business Machines Corporation | Victim cache lateral castout targeting |
| US8949540B2 (en) * | 2009-03-11 | 2015-02-03 | International Business Machines Corporation | Lateral castout (LCO) of victim cache line in data-invalid state |
| US8285939B2 (en) * | 2009-04-08 | 2012-10-09 | International Business Machines Corporation | Lateral castout target selection |
| US8327073B2 (en) * | 2009-04-09 | 2012-12-04 | International Business Machines Corporation | Empirically based dynamic control of acceptance of victim cache lateral castouts |
| US8312220B2 (en) * | 2009-04-09 | 2012-11-13 | International Business Machines Corporation | Mode-based castout destination selection |
| US8347036B2 (en) * | 2009-04-09 | 2013-01-01 | International Business Machines Corporation | Empirically based dynamic control of transmission of victim cache lateral castouts |
| US9189403B2 (en) * | 2009-12-30 | 2015-11-17 | International Business Machines Corporation | Selective cache-to-cache lateral castouts |
| US9411725B2 (en) * | 2012-03-22 | 2016-08-09 | Intel Corporation | Application-reserved cache for direct I/O |
| US11068407B2 (en) | 2018-10-26 | 2021-07-20 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a load-reserve instruction |
| US10884740B2 (en) | 2018-11-08 | 2021-01-05 | International Business Machines Corporation | Synchronized access to data in shared memory by resolving conflicting accesses by co-located hardware threads |
| US11119781B2 (en) | 2018-12-11 | 2021-09-14 | International Business Machines Corporation | Synchronized access to data in shared memory by protecting the load target address of a fronting load |
| US11106608B1 (en) | 2020-06-22 | 2021-08-31 | International Business Machines Corporation | Synchronizing access to shared memory by extending protection for a target address of a store-conditional request |
| US11693776B2 (en) | 2021-06-18 | 2023-07-04 | International Business Machines Corporation | Variable protection window extension for a target address of a store-conditional request |
| US12596490B2 (en) * | 2024-03-13 | 2026-04-07 | Nvidia Corporation | Memory management using a register |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0348628A3 (en) * | 1988-06-28 | 1991-01-02 | International Business Machines Corporation | Cache storage system |
| US5155832A (en) * | 1989-07-05 | 1992-10-13 | Hewlett-Packard Company | Method to increase performance in a multi-level cache system by the use of forced cache misses |
| JPH0697449B2 (ja) * | 1989-09-20 | 1994-11-30 | 株式会社日立製作所 | 多重化共有メモリ制御方法、多重化共有メモリシステムおよび共有メモリ拡張方法 |
| CA2044689A1 (en) * | 1990-06-15 | 1991-12-16 | Roger E. Tipley | Multilevel inclusion in multilevel cache hierarchies |
| US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
| US5426754A (en) * | 1992-05-26 | 1995-06-20 | International Business Machines Corporation | Cross-interrogate method and means for combined scaler and vector processing system |
| US5553310A (en) * | 1992-10-02 | 1996-09-03 | Compaq Computer Corporation | Split transactions and pipelined arbitration of microprocessors in multiprocessing computer systems |
| US5262109A (en) * | 1992-10-19 | 1993-11-16 | James River Ii, Inc. | Method and apparatus for forming multilaminate film |
| JP2500101B2 (ja) * | 1992-12-18 | 1996-05-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 共用変数の値を更新する方法 |
| JP2541771B2 (ja) * | 1993-01-29 | 1996-10-09 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 原子的メモリ参照方法及びシステム |
| US5524233A (en) * | 1993-03-31 | 1996-06-04 | Intel Corporation | Method and apparatus for controlling an external cache memory wherein the cache controller is responsive to an interagent communication for performing cache control operations |
| US5655103A (en) * | 1995-02-13 | 1997-08-05 | International Business Machines Corporation | System and method for handling stale data in a multiprocessor system |
| 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 |
-
1997
- 1997-03-13 US US08/815,647 patent/US5895495A/en not_active Expired - Fee Related
- 1997-10-29 KR KR1019970055774A patent/KR100259433B1/ko not_active Expired - Fee Related
-
1998
- 1998-02-17 JP JP03483598A patent/JP3431824B2/ja not_active Expired - Fee Related
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4767361B2 (ja) * | 2008-03-31 | 2011-09-07 | パナソニック株式会社 | キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム |
Also Published As
| Publication number | Publication date |
|---|---|
| JP3431824B2 (ja) | 2003-07-28 |
| KR100259433B1 (ko) | 2000-06-15 |
| US5895495A (en) | 1999-04-20 |
| KR19980079441A (ko) | 1998-11-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3431824B2 (ja) | アクセス方法及び処理装置 | |
| US7827354B2 (en) | Victim cache using direct intervention | |
| US7032074B2 (en) | Method and mechanism to use a cache to translate from a virtual bus to a physical bus | |
| US5652859A (en) | Method and apparatus for handling snoops in multiprocessor caches having internal buffer queues | |
| US5551005A (en) | Apparatus and method of handling race conditions in mesi-based multiprocessor system with private caches | |
| US6021468A (en) | Cache coherency protocol with efficient write-through aliasing | |
| TWI391821B (zh) | 在互連結構上發佈請求而無參照基於標籤快取狀態的低階快取之處理單元及資料處理系統與方法 | |
| US8332588B2 (en) | Performing a partial cache line storage-modifying operation based upon a hint | |
| US8108619B2 (en) | Cache management for partial cache line operations | |
| US6625698B2 (en) | Method and apparatus for controlling memory storage locks based on cache line ownership | |
| US6438660B1 (en) | Method and apparatus for collapsing writebacks to a memory for resource efficiency | |
| US7305523B2 (en) | Cache memory direct intervention | |
| US20080086602A1 (en) | Processor, Data Processing System and Method Supporting a Shared Global Coherency State | |
| US8024527B2 (en) | Partial cache line accesses based on memory access patterns | |
| US8117401B2 (en) | Interconnect operation indicating acceptability of partial data delivery | |
| EP0608622A1 (en) | Multiprocessor system with multilevel caches | |
| JP3661764B2 (ja) | 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム | |
| JPH07253928A (ja) | 2重化キャッシュ・スヌープ機構 | |
| US7549025B2 (en) | Efficient marking of shared cache lines | |
| US7290094B2 (en) | Processor, data processing system, and method for initializing a memory block to an initialization value without a cache first obtaining a data valid copy | |
| US6178484B1 (en) | DCBST with ICBI mechanism to maintain coherency of bifurcated data and instruction caches | |
| US7464227B2 (en) | Method and apparatus for supporting opportunistic sharing in coherent multiprocessors | |
| US20050273563A1 (en) | System and method for canceling write back operation during simultaneous snoop push or snoop kill operation in write back caches | |
| US8255635B2 (en) | Claiming coherency ownership of a partial cache line of data | |
| US5978886A (en) | Method and apparatus for duplicating tag systems to maintain addresses of CPU data stored in write buffers external to a cache |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080523 Year of fee payment: 5 |
|
| LAPS | Cancellation because of no payment of annual fees |