JP2003150444A - キャッシュメモリシステム - Google Patents

キャッシュメモリシステム

Info

Publication number
JP2003150444A
JP2003150444A JP2001353440A JP2001353440A JP2003150444A JP 2003150444 A JP2003150444 A JP 2003150444A JP 2001353440 A JP2001353440 A JP 2001353440A JP 2001353440 A JP2001353440 A JP 2001353440A JP 2003150444 A JP2003150444 A JP 2003150444A
Authority
JP
Japan
Prior art keywords
cache
data
request
cache memory
processor
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.)
Withdrawn
Application number
JP2001353440A
Other languages
English (en)
Inventor
Mitsuru Sato
充 佐藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2001353440A priority Critical patent/JP2003150444A/ja
Publication of JP2003150444A publication Critical patent/JP2003150444A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 読み出し書き込みの無駄な繰り返しを避けた
キャッシュメモリシステムを提供する。 【解決手段】 共通バスに接続された複数のキャッシュ
メモリ間でのデータの一貫性管理を行う複数のキャッシ
ュコントローラを備え、共通バスからのリクエストに対
する応答処理直後のデータが無効になるキャッシュブロ
ックに対して書き込みコマンドがあると、その書き込み
コマンドに応答してそのキャッシュブロックのデータを
更新した後に、所定時間経過後に、又は所定時刻に、リ
クエストに対する処理を実行するようにしたことを特徴
とするキャッシュメモリシステム。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、並列計算機におけ
るメモリアクセスレイテンシを隠蔽するために用いられ
るキャシュメモリシステムに関する。
【0002】
【従来の技術】計算機におけるキャッシュメモリは、メ
モリアクセスレイテンシを隠蔽する技術として、広く用
いられている。キャッシュメモリはメインメモリに比べ
て高速・小容量のメモリで構成されていて、通常はプロ
セッサ内に設けられ、プロセッサがアクセスしたデータ
を一時保存する。
【0003】一般に計算機で行なわれる演算は時間的局
所性(一度アクセスしたデータは再びアクセスされやす
い)という特徴を持っているので、キャッシュメモリに
保存されたデータを参照する機会は多い。そのため、低
速なメインメモリをアクセスする代わりに高速なキャッ
シュメモリを利用できれば、それだけ演算を高速に進め
ることができる。
【0004】プロセッサ内のキャッシュメモリからの読
み出しに関しては、上記のように、キャッシュメモリに
はメインメモリのコピーを持たせれば良いので管理は簡
単である。しかしプロセッサからその中のキャッシュメ
モリへの書き込みの場合は、キャッシュメモリのデータ
とメインメモリのデータの一貫性管理という問題が発生
する。
【0005】プロセッサからその中のキャッシュメモリ
へのデータ書き込みが発生した場合のデータの一貫性管
理のための処理は2通りに分けられる。
【0006】ひとつは、キャッシュメモリへの書き込み
が発生するたびにメインメモリのデータを更新するとい
う手法(ライトスルー方式)である。この手法を用いる
と、書き込みの場合にはキャッシュメモリが用いられな
いことになり、メモリアクセスレイテンシを隠蔽すると
いうキャッシュメモリの効果がなくなる。
【0007】他方は、キャッシュメモリのデータだけを
更新し、メインメモリの内容は更新しない手法(ライト
バック方式)である。この手法を用いると、メインメモ
リとキャッシュメモリとの内容が食い違うことになり、
余計な状態管理が必要となる。しかし、キャッシュメモ
リのメモリアクセスレイテンシ隠蔽の効果は非常に高い
ことが知られており、プロセッサからその中のキャッシ
ュメモリへのデータの書き込みの場合にもキャッシュメ
モリを利用することが高性能実現のためには必須である
ことから、後者のライトバック方式が一般に用いられて
いる。
【0008】ライトバック方式では、キャッシュメモリ
の内容がプロセッサによって更新されているかを常に管
理しておく必要がある。そして、キャッシュメモリが一
杯になり、データがキャッシュから追い出されるとき
は、そのデータがメインメモリと食い違っているかを検
査し、もし食い違っていればメインメモリの内容を最新
の状態に更新する必要がある。
【0009】単一プロセッサの場合は、上記のようにキ
ャッシュメモリとメインメモリとの間だけでの一貫性管
理をやっていれば充分であった。しかし並列計算機にな
ると、各プロセッサがキャッシュメモリを持つことにな
り、今度はキャッシュメモリ間の一貫性管理という問題
が発生する。この並列計算機における一貫性管理の従来
技術を図12によって説明する。
【0010】図12は従来の並列計算機におけるキャッ
シュメモリシステムを説明するブロック図である。図1
2においては、4つのプロセッサ121〜124がバス
125を介してメインメモリ126に接続されている。
プロセッサ121内にはキャッシュメモリが搭載されて
おり、キャッシュメモリ内部にはa,b,cという3つ
のデータ格納領域があるものとする。このa,b,c各
々のデータ格納領域には、メインメモリ126の任意の
位置(アドレス番地)に対応するデータを格納できるも
のとする。そのため、キャッシュメモリ内部には、a,
b,cの各データ格納領域内に保存されているデータが
メインメモリのどの位置(アドレス番地)に対応するか
を表わすためのアドレス記憶領域A,B,Cも持ってい
る。同様に、プロセッサ122内のキャッシュメモリに
はd,e,fというデータ格納領域と各々に対応したア
ドレス記憶領域D,E,Fがあり、プロセッサ123内
にはg,h,iというデータ格納領域と各々に対応した
アドレス記憶領域G,H,Iがあり、プロセッサ124
内にはj,k,lというデータ格納領域と各々に対応し
たアドレス記憶領域J,K,Lがある。
【0011】このような並列計算機では、プロセッサ1
21,122,123,124のキャッシュメモリのう
ち、どれか2つ以上のキャッシュメモリがメインメモリ
126の同じアドレス番地に対応するデータを格納して
いる場合、それらのデータ格納領域の内容は一致してい
なくてはならない。この制約を満たすためにプロセッサ
間で情報交換を行ない、データ格納領域の内容に食い違
いが生じないようにデータの管理を行なうことを並列計
算機におけるキャッシュメモリの一貫性の管理と言う。
【0012】並列計算機において、キャッシュメモリの
一貫性管理を行なわないと、次のような問題が生じる。
たとえばプロセッサ121がメインメモリ126からア
ドレス番地Xに対応するデータを読み出し、それをキャ
ッシュメモリ内のbに格納したとする。この時、bには
メインメモリのアドレスX番地に対応するデータのコピ
ーが格納され、BにはXという番地が記憶される。同様
に、プロセッサ122もメインメモリ126から同じア
ドレス番地Xに対応するデータを読み出し、それをキャ
ッシュメモリ内のeに格納したとする。この場合も同様
に、EにはXという番地が記憶される。この状態でプロ
セッサ121がメインメモリ126のアドレス番地Xに
対応するデータを更新しようとしたとする。プロセッサ
121内のbには、アドレス番地Xに対応するデータが
すでに存在するため、プロセッサ121のキャッシュメ
モリはアドレス番地Xに対応するデータ、すなわちbに
格納されているデータのみを更新し、実際にはメインメ
モリ126までデータを更新しにいかない。そしてこれ
以降、プロセッサ121がメインメモリ126のアドレ
ス番地Xに対応するデータを読み出そうとすると、この
更新したbからデータを読み出すことになる。一方、同
様にプロセッサ122がアドレス番地Xに対応するデー
タを読み出そうとすると、プロセッサ121がすでにデ
ータを更新しているにも関わらず、自分のキャッシュメ
モリ内のeに格納されているデータを読み出してしまう
ため、プロセッサ121が更新する前にメインメモリ1
26から読み出したデータを読むことになってしまう。
すると、プロセッサ121とプロセッサ122では、同
じメインメモリのアドレス番地Xに対応するデータを読
み出しているにも関わらず、違うデータを読むというこ
とになり、共有メモリ計算機の前提が崩れてしまうこと
になる。
【0013】このような状態を避けるために、並列計算
機上のキャッシュメモリでは従来から一貫性管理を行な
っている。
【0014】たとえば、無効化要求をベースとした従来
の一貫性管理手法では、上記のようにプロセッサ121
がメインメモリ126のアドレス番地Xに対応するデー
タを更新しようとすると、まず他のキャッシュメモリに
あるメインメモリ126のアドレス番地Xに対応するデ
ータを消去しようとする。具体的には、プロセッサ12
1のキャッシュメモリが共有バス125を通じてプロセ
ッサ122、プロセッサ123、プロセッサ124に無
効化要求を送る。各プロセッサのキャッシュメモリは、
それぞれ自分がアドレス番地Xに対応するデータを持っ
ているかどうか、キャッシュメモリ内のアドレス記憶領
域を検索する。もし見つかれば、キャッシュメモリは対
応するデータ格納領域に格納されているデータを無効化
する。この場合は、プロセッサ122のキャッシュメモ
リがEにXという値を持っていたので、eに格納されて
いるデータを無効化することになる。次いで、たとえば
プロセッサ122からのメインメモリのアドレス番地X
に対応するデータの読み出し要求が発生すると、プロセ
ッサ122は最新のデータを保有しているキャッシュメ
モリ(この場合はプロセッサ121のキャッシュメモリ
内のb)から最新のデータを読み出す。そしてキャッシ
ュメモリ内d,e,fのどこか空いている場所に格納
し、対応するアドレス記憶領域にXという番地を記憶す
る。このように、データを更新する前に、同じアドレス
番地に対応するデータのコピーを保持している領域を無
効化してしまうことによって、同じアドレス番地に対応
しているのに違うデータを読んでしまうという状況を避
けることが可能になる。
【0015】従来の他の一貫性管理手法としては、更新
要求をベースとした手法もある。これは、たとえばプロ
セッサ121がメインメモリ126のアドレス番地Xに
対応するデータを更新しようとすると、キャッシュメモ
リ内のbに格納されているデータを更新するだけでな
く、プロセッサ122〜124のキャッシュメモリにも
同じ更新データを送るというものである。データを受け
取ったプロセッサ122〜124のキャッシュメモリで
は、それぞれキャッシュメモリ内のアドレス記憶領域を
検索し、メインメモリ126のアドレス番地Xに対応す
るデータを持っているか調べる。この場合プロセッサ1
22のキャッシュメモリ内のEにXという値が保存され
ているので、プロセッサ122のキャッシュメモリはe
にプロセッサ121から送られてきた更新データを格納
する。この方法を用いても、同様に一貫性の管理は可能
になる。
【0016】しかし更新要求をベースとした方式では、
・同一のプロセッサが連続して何度もデータを更新する
場合には、無駄な更新要求が発生する。
【0017】・既にデータを参照しなくなったプロセッ
サに対してもいつまでも更新要求を送り続けてしまう。
という問題がある。これらの問題のために、更新要求を
ベースとした方式では、プロセッサ間の帯域を無駄に使
ってしまいがちである。そのため、実際のシステムで
は、更新要求をベースとした方式はあまり用いられてい
ない。
【0018】いずれの方式にしても、プロセッサからデ
ータを更新し、その更新されたデータを他のプロセッサ
でも参照しようとすると、何らかの一貫性管理方式が必
要になる。
【0019】この一貫性管理方式は、通常状態と要求の
組合わせで決まっている。たとえば、データの状態が共
有状態で、要求が自プロセッサからの書き込み要求であ
れば、他のキャッシュメモリのデータを無効化する。こ
のように、現在の状態と要求の組合わせに対する次の状
態とアクションを記述することによって、一貫性管理方
式を表現することが可能になる。
【0020】
【発明が解決しようとする課題】上記の従来の無効化要
求をベースとした方式(無効化型)にしても、更新要求
をベースとした方式(更新型)にしても、どちらもプロ
セッサの読み出し/書き込み動作が行なわれてから一貫
性管理を行なう。そのため、どちらも一貫性管理の動作
が後からついてくる形になり、時には無駄な動きを繰り
返す場合がある。
【0021】たとえば、無効化要求をベースとした方式
を用いる共有メモリ型並列計算機システムにおいて、プ
ロセッサ121と他のプロセッサ122が、特定のデー
タXをお互い更新しあうという場面を考える。
【0022】まず、プロセッサ121はメインメモリ1
26からデータXを読み出し、キャッシュメモリbに格
納する。
【0023】次に、プロセッサ121はキャッシュメモ
リb上のデータXを更新しようとするが、その前にプロ
セッサ122からの(データXに対する)読み出し要求
が起こったとする。すると、キャッシュメモリbあるい
はメインメモリ126はプロセッサ122に対してデー
タXを供給し、キャッシュメモリbとキャッシュメモリ
eでデータXを共有する。
【0024】その後プロセッサ121によるキャッシュ
メモリb内のデータXの更新が行なわれると、一貫性を
管理するためプロセッサ122、123,123内のキ
ャッシュメモリe,h,kに対してデータXの無効化要
求が発生する。プロセッサ122、123又は124が
データXの最新の値を参照するためには、もう一度読み
出し要求を発行し、キャッシュメモリbに格納されてい
る最新の値を対応するキャッシュメモリに読み出さなく
てはならない。
【0025】これは、一貫性管理を最新データの読み出
し時点での状態を基準にして行なっているからである。
プロセッサ121が後にキャッシュメモリbの内容を更
新することが明らかになっていれば、プロセッサ121
内のキャッシュメモリbの読み出し→プロセッサ121
内のキャッシュメモリbの更新→プロセッサ122内の
キャッシュメモリeの読み出しという3段階で済むとこ
ろを、上記従来例ではプロセッサ121内のキャッシュ
メモリbの読み出し→プロセッサ122内のキャッシュ
メモリeの読み出し→プロセッサ121内のキャッシュ
メモリbの無効化→プロセッサ121内のキャッシュメ
モリbの更新→プロセッサ122内のキャッシュメモリ
eの読み出しとなっており、使用しないデータを1つの
キャッシュメモリまたはメインメモリから読み出して他
のキャッシュメモリに書き込む動作とそのキャッシュメ
モリの無効化という無駄な処理を繰り返すことになると
いう問題がある。
【0026】上記と同様の問題が、たとえば、共有メモ
リを用いた排他処理でも頻繁に発生する。共有メモリを
用いた排他処理とは、同時にはひとりしか扱えない共有
資源、たとえばモニタやキーボードなどを、メモリ変数
を用いて管理する手法である。ここでは、メインメモリ
126のアドレス番地Xにあるデータを用いてモニタ1
27を管理する場合を考える。ここで用いる管理手法
は、いずれかのプロセッサがモニタ127を使用中であ
ればアドレス番地Xに対応するデータを“1”とし、ど
のプロセッサも使用していなければアドレス番地Xに対
応するデータは“0”にするという方法である。
【0027】たとえば、プロセッサ121がモニタ12
7を使用する時には、プロセッサ121はメモリ変数が
“0”であることを確認するため、まずメインメモリ1
26からアドレス番地Xに対応するデータを読み出す。
プロセッサからの読み出しが発生すると、プロセッサ1
21のキャッシュメモリは、自分の空いているデータ格
納領域(ここではaが空いているものとする)にデータ
を格納する。同時に、aに対応するアドレス記憶領域A
にアドレス番地Xを記憶する。値が“0”であれば、プ
ロセッサ121はモニタ127を使用するため、メモリ
変数に“1”を書き込もうとする。書き込み要求が発生
すると、プロセッサ121のキャッシュメモリは一貫性
管理のため、プロセッサ122,123,124にメイ
ンメモリ126のアドレス番地Xの無効化要求を送る。
プロセッサ122,123,124の各キャッシュメモ
リは、自分のアドレス記憶領域を検査し、アドレス番地
Xのデータを保持していればそれを無効化する。このよ
うにして、プロセッサ121がメモリ変数を“1”にし
ている状態で、他のプロセッサがモニタ127を使用し
ようとした場合には、次のような動作が行なわれる。モ
ニタ127を使用しようとするプロセッサは、メインメ
モリ126からアドレス番地Xに対応するデータを読み
出そうとする。すると最新のデータを持っているプロセ
ッサ121のキャッシュメモリがメインメモリ126の
代わりに返答する。すなわち、プロセッサ121のキャ
ッシュメモリのaから、そのプロセッサに最新のデータ
“1”が送られる。新たにモニタ127を使用しようと
したプロセッサは、アドレス番地Xに対応するデータが
“1”であるため、他のプロセッサが使用中であること
を知る。そこで、使用中のプロセッサがモニタ127を
解放するまで待つことになる。
【0028】プロセッサ121がモニタ127を使用し
なくなると、プロセッサ121はメモリ変数を“0”に
更新しようとする。すなわち、プロセッサ121のキャ
ッシュメモリがプロセッサ122,123,124にメ
インメモリ126のアドレス番地Xに対応するデータの
無効化要求を送り、自分のキャッシュメモリaのデータ
を“0”に更新する。これにより、モニタ127は他の
プロセッサにより使用可能な状態であるアンロック状態
となる。この状態で、他のプロセッサ、たとえばプロセ
ッサ122がモニタ127の使用状態を調べるため、メ
モリ変数を読み出したとする。すると、先ほどと同様
に、最新のデータを持っているプロセッサ121のキャ
ッシュメモリが返答を返す。すなわち、プロセッサ12
1のキャッシュメモリのaに格納されている“0”とい
う値が、プロセッサ122のキャッシュメモリに送られ
る。プロセッサ122のキャッシュメモリは、空いてい
るデータ格納領域に送られてきたデータを格納する。
今、プロセッサ122のキャッシュメモリの中ではdが
空いていたものとすると、プロセッサ122のキャッシ
ュメモリは送られてきたデータをdに格納し、対応する
アドレス記憶領域Dにアドレス番地Xの値を記憶する。
モニタ127を使用しようと待っていたプロセッサが1
22だけでない場合には、同じことが他のプロセッサに
も起こる。たとえばプロセッサ123もモニタ127を
使用しようと待っていた場合には、プロセッサ123か
らもメモリ変数チェックのため、メインメモリ126の
アドレス番地Xに対応するデータの読み出し要求が発生
する。今度は最新のデータを引き継いだプロセッサ12
2のキャッシュメモリのdから、アドレス番地Xに対応
するデータ“0”が送られる。プロセッサ123のキャ
ッシュメモリは、自分の空いているデータ格納領域(こ
の場合gが空いていたものとする)に“0”という値を
格納し、対応するアドレス記憶領域(この場合はG)に
アドレス番地Xを記憶する。
【0029】先にメモリ変数の値を読み出したプロセッ
サ122は、今度は自分がモニタ127を使用するため
メモリ変数に“1”を書き込もうとする。すなわち、プ
ロセッサ122のキャッシュメモリはプロセッサ12
1,123,124の各キャッシュメモリにアドレス番
地Xの無効化要求を送り、dに格納されているデータの
値を“1”に更新する。先ほど“0”という値を読み出
したプロセッサ123のキャッシュメモリのgは、ここ
で無効化される。プロセッサ123も同様にモニタ12
7を使用するためメモリ変数の値を更新しようとする
が、先ほど読み出したgが無効化されているためデータ
をもう一度読み直す必要がある。すると、プロセッサ1
22のdから最新の値“1”を受け取ることになり、モ
ニタ127を使用することができず、また待ち状態に入
る。プロセッサ123から見ると、いったん“0”とい
う値を受け取ったものの、それは即座に無効化されるた
め使用できず、即座に別の値“1”を受け取ることにな
る。したがって値“0”の読み出しは無駄な読み出しで
あったということになる。
【0030】このように、共有メモリを用いた排他制御
の場合でも、上記と同様の使用しないデータの読み出し
と無効化処理を繰り返すという問題がある。
【0031】
【課題を解決するための手段】本発明では、上記の問題
を解決するために、以下の手段を用いる。
【0032】まず、一貫性管理のためのプロトコルを改
良し、プロセッサからの要求をその都度処理するのでは
なく、将来を予測し最適な方法を用いることができるよ
うにする。
【0033】具体的には、本発明の第1の態様により、
共通バスに接続されたキャッシュメモリ間で同一データ
を有するようにする一貫性管理を行う複数のキャッシュ
コントローラを備える並列計算機において、キャッシュ
コントローラに対応するキャッシュメモリ内で共通バス
からのリクエストに対する応答処理の直後にその応答処
理により供給したデータが無効になることが予め明らか
なキャッシュブロックに対して書き込みコマンドが発行
されると、その書き込みコマンドに応答してそのキャッ
シュブロックのデータを更新した後に、上記リクエスト
に対する処理を実行するようにしたことを特徴とするキ
ャッシュメモリシステムが提供される。
【0034】本発明の第2の態様により、上記第1の態
様において、キャッシュコントローラの各々は、リクエ
ストを保持しているキャッシュブロックに対して書き込
みコマンドが発行されると、書き込みコマンドに応答し
てそのキャッシュブロックのデータを更新する前であっ
ても、リクエストの受信から所定時間をカウントした後
に上記クエストに対する処理を実行するようにしたキャ
ッシュメモリシステムが提供される。
【0035】本発明の第3の態様により、上記第1の態
様において、キャッシュコントローラの各々は、リクエ
ストを保持しているキャッシュブロックに対して書き込
みコマンドが発行されると、書き込みコマンドに応答し
てそのキャッシュブロックのデータを更新する前であっ
ても、リクエストを発行したプロセッサが指定した所定
時刻までに上記リクエストに対する処理を実行するよう
にしたキャッシュメモリシステムが提供される。
【0036】本発明の第4の態様により、上記第1から
第3の態様のいずれかにおいて、キャッシュメモリコン
トローラの各々は、書き込みコマンドに応答してそのキ
ャッシュブロックのデータの更新が終了する前にさらに
他のプロセッサからリクエストが発生した場合、そのリ
クエストをキャッシュブロックに記憶させ、書き込みコ
マンドに応答してそのキャッシュブロックのデータを更
新した後に、複数のリクエストに対する処理を実行する
ようにしたことを特徴とするキャッシュメモリシステム
が提供される。
【0037】本発明の第5の態様により、上記第1から
第3の態様のいずれかにおいて、キャッシュメモリコン
トローラの各々は、書き込みコマンドに応答してそのキ
ャッシュブロックのデータの更新が終了する前にさらに
他のプロセッサからリクエストが発生した場合、そのリ
クエストをキャッシュブロックに記憶させ、書き込みコ
マンドに応答してそのキャッシュブロックのデータを更
新した後に、複数のリクエストのうち最新のリクエスト
から順番に処理を実行するようにしたことを特徴とする
キャッシュメモリシステムが提供される。
【0038】
【発明の実施の形態】実施の形態1: (請求項1に対応する実施の形態)図1は本実施の形態
1において適用される共有メモリ型並列計算機における
キャッシュメモリシステムの構成を示すブロック図であ
る。図1において、プロセッサ1がキャッシュメモリ2
及びキャッシュコントローラ3を介して共有メモリバス
4に接続されている。プロセッサ1、キャッシュメモリ
2及びキャッシュコントローラ3を含むユニット5をプ
ロセッサと称する場合もある。複数のユニット5が共有
メモリバス4に接続されている。以下の説明では各ユニ
ット5がプロセッサ1、キャッシュメモリ2及びキャッ
シュコントローラ3を備えているとする。
【0039】共有メモリバス4はシステム全体で1本で
あり、全てのキャッシュメモリ及びメインメモリに対す
るアクセスはこの共有メモリバス4を経由して行われ
る。
【0040】プロセッサ1からキャッシュコントローラ
3に対しては「コマンド」が発行される。この「コマン
ド」は読み出し命令や書き込み命令など、プロセッサ1
からキャッシュメモリ2に対して行なわれる命令であ
る。一方、キャッシュコントローラ3からプロセッサ1
に対しては、「レスポンス」が発行される。この「レス
ポンス」にはキャッシュメモリ2から読み出されたデー
タや、キャッシュメモリ2への書き込みの確認(Acknow
ledge)が含まれる。
【0041】キャッシュコントローラ3から共有メモリ
バス4を介して他のキャッシュコントローラ又はメモリ
コントローラ7に対しては、「リクエスト」が発行され
る。この「リクエスト」にはキャッシュメモリ2と他の
キャッシュメモリとの間の読み出し/書き込みの要求等
に加えて、キャッシュメモリ2を制御するための無効化
要求や排他的読み出し要求などが追加されている。「リ
クエスト」を受け取ったキャッシュコントローラ3ある
いはメモリコントローラ7からは、「リプライ」が返さ
れる。これは、読み出し要求に応答して読み出されたデ
ータ等である。
【0042】図2は本発明の実施の形態1によるキャッ
シュメモリ内部の構造を示す図である。図2において、
キャッシュメモリ2は複数バイトをまとめたキャッシュ
ブロック21、22、23、……2nの各単位毎にデー
タが読み書きされる。このキャッシュブロックごとに、
データ、アドレス及び状態の保持部と、リクエスト情報
保持部を有している。リクエスト情報保持部には、有効
か無効かを表わすビットとともに、どのキャッシュメモ
リからどういうリクエストが来たかを表わす情報が記さ
れている。なお、本実施例では説明を簡単にするため、
フルアソシアティブキャッシュを例に用いている。
【0043】キャッシュメモリ2の状態としては、周知
の状態MESI(M: Modified, E: Exclusive, S: Sh
ared, I: Invalid)に、本発明の実施の形態1によりR
(R: Reserved )状態が追加されている。M、E、
S、Iの間の状態遷移および各状態におけるキャッシュ
メモリとその周辺の反応は、Intel 社のPentium Pro
(登録商標) のキャッシュメモリと同じとする。すな
わち、無効化をベースとしたスヌープキャッシュ・プロ
トコルを用いる(プロトコルの詳細については、説明が
煩雑になるのでここでは省略する)。
【0044】本実施の形態1で、従来のキャッシュメモ
リシステムと異なっているのは、プロセッサ1からキャ
ッシュコントローラ3に送出されるコマンドに「将来の
書き込みのための読み出し」コマンドが追加されている
ことである。このコマンドをRsvコマンドと呼ぶこと
にする(なお、通常の読み出しコマンドをRead、書き込
みコマンドをWrite と表記する)。
【0045】図3は本実施の形態1によるプロセッサ1
からRsv コマンドが発行された場合のキャッシュコ
ントローラ3の動作を説明するフローチャートである。
【0046】図3において、ステップS31でキャッシ
ュコントローラ3はプロセッサ1からRsvコマンドを
受け取ると、ステップS32にて、キャッシュメモリ2
の内部のアドレス部を検索し、「将来の書き込みのため
の読み出し」コマンドに対応するデータがキャッシュ内
部にある否かを調べる。
【0047】ステップS32で該当データがキャッシュ
メモリ2内に見つかったと判定した場合は、ステップS
33でそのデータの状態は無効状態Iかそれ以外の状態
M/E/S/Rかを判定する。
【0048】ステップS32で該当データが見つからな
かった場合、又はステップS33で状態がI(無効)の
場合は、ステップS34にて共有メモリバス4に対して
排他的読み出しリクエストを発行する。この排他的読み
出しリクエストは、通常の排他的読み出しリクエストと
同様に処理される。
【0049】次いでステップS35にて上記排他的読み
出しリクエストに応答して返ってきたリプライデータは
キャッシュメモリ2に格納され、そのデータの発行元の
キャッシュメモリのアドレスがセットされ、タグ(状
態)はR状態とされる。
【0050】ステップS33で、キャッシュメモリ2内
の該当データの状態がM/E/S/Rの何れかの場合は、
ステップS36に進み、キャッシュメモリ2内の該当デ
ータの状態がSかどうかが判定される。
【0051】状態がSの場合は、ステップS37にてキ
ャッシュコントローラ3は共有メモリバス4に対して無
効化リクエストを発行する。この無効化リクエストに応
答してキャッシュメモリ2の無効化が完了すると、無効
化したキャッシュメモリの内部のデータがレスポンスと
してプロセッサ1に返され、キャッシュメモリ2の状態
がRに変更される。
【0052】ステップS36の判定で、該当データの状
態がM/E/Rのいずれかの場合は、そのままキャッシ
ュメモリ2の内部のデータがレスポンスとしてプロセッ
サ1に返され、状態がM/Eの場合はその状態がRに変
更される。メモリバスに対しては何も行なわない。
【0053】このようにして作られたR状態のデータに
対して、外部からリクエストが来ると、そのリクエスト
はキャッシュ内部のリクエスト情報保持部に一担記録さ
れる(この時、リクエスト情報保持部の有効/無効ビッ
トが有効にセットされる)。なお、本実施の形態1で
は、既にリクエスト情報保持部に有効なリクエストが登
録されていると、同じデータ(アドレス)に対するリク
エストがやってきてもリトライさせる。
【0054】図4は図3で説明したようにして作られた
R状態のキャッシュメモリのデータに対して、外部から
コマンドが発行された場合のキャッシュコントローラ3
の動作を説明するフローチャートである。
【0055】図4において、キャッシュメモリ2内の1
つのキャッシュブロック、例えばキャッシュブロック2
1は共有メモリバス4からリクエストを受け取る。ステ
ップS42にてキャッシュブロック21の状態がR状態
かどうかを判定する。R状態であればステップ43に進
み、リクエスト情報保持部にそのリクエストを登録す
る。R状態でなければそのリクエストは登録することな
く、従来と同様にステップS49にてそのリクエストに
応じた処理をする。次いでステップS44で外部からキ
ャッシュメモリ2内のR状態のデータに対してコマンド
が発行されると、ステップS45にてそのコマンドはRe
ad又はRsvか否かを判定する。
【0056】この判定の結果、コマンドがRead又はRs
vコマンド(将来の書き込みのための読み出しコマン
ド)であれば、ステップS46にてキャッシュメモリ2
に格納されているデータはそのままプロセッサ1に返さ
れ、状態Rは変更されない。
【0057】ステップS45の判定結果がWrite コマン
ドの場合は、ステップS47に進んでキャッシュメモリ
2内部のデータが更新され、状態はM状態に変更され
る。
【0058】次いでステップS48にて、リクエスト情
報部にリクエストが存在すれば、ステップS46にて、
M状態のキャッシュメモリに対してリクエスト情報に書
かれているリクエストが来たと判断してそのリクエスト
に応じた処理をする。リクエスト情報保持部にリクエス
トがなければ何もしないで処理を終了する。
【0059】図3及び図4により説明した本発明の実施
の形態1をまとめると次のようになる。
【0060】説明のため、キャッシュプロトコルをME
SI(Modified, Exclusive, Shared, Invalid)の4
状態を用い、一貫性管理に無効化を用いるプロトコルを
ベースとする。また、共有メモリバス4を共有した共有
メモリバス型の並列計算機であると仮定する。
【0061】このシステムでは、各キャッシュメモリが
メモリバス4をスヌープしている。そして自分のキャッ
シュメモリに保持しているデータに対するアクセスが発
生すると、キャッシュメモリの状態に応じてさまざまな
処理を行なう。このバススヌープのための信号線とし
て、共有メモリバス4にHIT, HITM 信号線を追加す
る。あるキャッシュメモリがメモリアクセスを発生した
場合、他のキャッシュメモリがクリーンなデータ(メモ
リと内容が一致しているデータ)を持っている場合には
HIT 線をアサート(assert)する。他のキャッシュメモ
リがダーティなデータ(プロセッサが書き込みを行なっ
て、メモリと内容が食い違っているデータ)を持ってい
る場合はHITM線をアサートする。このHIT 線、HITM線
の状態によって、どのキャッシュメモリがリプライを返
すかや、メモリアクセスを発行したキャッシュメモリが
格納するデータの状態などを決定する。
【0062】具体的な処理に関しては、Intel 社のPent
ium Pro Bus (登録商標)のプロトコルを参照のこと。
【0063】従来のシステムでは、プロセッサからキャ
ッシュに対しては読み出しと書き込みの2種類しかコマ
ンドがなかった。
【0064】本実施の形態1では、これに加えて、プロ
セッサから「将来の書き込みのための読み出し」コマン
ドを設ける。さらに、キャッシュメモリには、将来書き
込まれる予定であることを示すビットを新たに設け、状
態をMESIからRMESIの5状態に拡張する。R状
態は、この「将来書き込まれる予定」を表わすReserved
状態である。プロセッサでは、プログラムの実行を自動
的に解析、あるいはプログラムが明示的に指定すること
によって、このコマンドを発行することができる。
【0065】この場合のキャッシュメモリの処理は以下
のようになる。
【0066】プロセッサ1から通常の読み出し/書き込
みが発生した場合は、従来の処理と同様の処理を行な
う。
【0067】プロセッサ1から「将来の書き込みのため
の読み出し」コマンドRsvが発行されると、キャッシ
ュメモリ2は従来の書き込みコマンドが来た場合と同様
に、共有メモリバス4に対して排他的読み出しコマンド
(Read & Invalidate )を発行する。そして返ってきた
結果をキャッシュメモリ2に格納する。この時、従来の
方式ではキャッシュメモリ2の状態をE状態に設定す
る。しかし本実施の形態1では、プロセッサ1からコマ
ンドRsvが発行された場合はキャッシュメモリ2の状
態をR状態に設定する。
【0068】R状態のデータに対して、プロセッサ1か
ら書き込みコマンドが発行されると、M状態に変化す
る。以降の処理は従来のシステムと同様である。なお、
R状態は将来的に必ずM状態に遷移しなくてはならな
い。言い換えると、プロセッサは将来確実に「書き込
み」コマンドを発行する補償がなければ、「将来の書き
込みのための読み出し」コマンドRsvを発行してはな
らない。
【0069】R状態に設定されたデータに対するメモリ
アクセスが発生すると、M状態のメモリを持っている場
合と同様に、R状態のメモリを持っているキャッシュメ
モリはHITM線をアサートし、データリプライの権利を得
る。しかし、M状態の場合とは違い、データに対するリ
プライをすぐには返さない。プロセッサから書き込みコ
マンドが発行され、R状態がM状態に変化したときには
じめて、読み出し要求に対するリプライを返答する。こ
のリプライには、書き込まれた最新のデータを返す。
【0070】この方法にはいくつかオプションが考えら
れる。
【0071】たとえば、R状態のメモリに対してプロセ
ッサから書き込みコマンドが発生しても、すぐにはリプ
ライを返さず、プロセッサからのアクセスアドレスが変
化した時にはじめてリプライを返す方法が考えられる。
これはPentium Pro (登録商標)プロトコルのWrite Co
mbine と同様の手法で、プロセッサから同じデータブロ
ックに対して連続して書き込みが行なわれるのを吸収す
る手法である。
【0072】また、R状態のデータに対して書き込みが
行なわれ、リプライを返すとき、R状態のデータを持っ
ていたキャッシュメモリが自分のデータを無効化する手
法も考えられる。これはオーナーの移動であり、無効化
プロトコルを用いたキャッシュシステムで、複数のプロ
セッサが同じデータに対して書き込みを行なう場合に有
効な手法である。 実施の形態2: (請求項2に対応する実施の形態)図1に示した実施の
形態1と同様のシステムを考える。ただし、本実施の形
態においてはキャッシュメモリ2の内部にカウンタを追
加する。
【0073】図5は、本実施の形態2によりカウンタが
追加されたキャッシュメモリの内部構造を示す図であ
る。
【0074】実施の形態1ではキャッシュメモリの状態
としてMESIに加えてRという「状態」を用いてい
た。しかし本実施の形態2では、Rは状態ではなくて単
独のビットとして用いる。すなわち、R+[MESI]
である。[MESI]は、Rビットがセットされる前の
状態を保持するためである。[MESI]とは状態が
M、E、S、Iのいずれかであるという意味である。
【0075】また、実施の形態1の場合は、プロセッサ
からRsv コマンドが発行されると、そのデータに対
しては必ず次にWrite コマンドが発行されなければなら
なかった。これに対して、本実施の形態2ではその制約
はない。その代わり、タイマを用いた時間制御を行な
う。
【0076】本実施の形態においても、プロセッサから
Rsv コマンドが発行された場合のキャッシュコント
ローラの動作は実施の形態1とほぼ同様である。
【0077】図6は本実施の形態2によるプロセッサ1
からRsv コマンドが発行された場合のキャッシュコ
ントローラ3の動作を説明するフローチャートである。
【0078】図6において、図3と異なるところは、ス
テップS63においてR状態かどうかを判定しないこ
と、ステップS66における判定では状態Sと状態M又
はEとに分けられ、したがって状態Rは判定しないこ
と、ステップS65及びステップS68にて状態をRに
セットする代わりにRビットをセットすることである。
【0079】図6において、ステップS61でキャッシ
ュコントローラ3はプロセッサ1からRsvコマンドを
受け取ると、ステップS62にて、キャッシュメモリ2
の内部のアドレス部を検索し、「将来の書き込みのため
の読み出し」コマンドに対応するデータがキャッシュ内
部にある否かを調べる。
【0080】ステップS62で該当データがキャッシュ
メモリ2内に見つかったと判定した場合は、ステップS
63でそのデータの状態は無効状態Iかそれ以外の状態
M/E/Sかを判定する。Rビットの状態はこの判定には
無関係である。
【0081】ステップS62で該当データが見つからな
かった場合、又はステップS63で状態がI(無効)の
場合は、ステップS64にて共有メモリバス4に対して
排他的読み出しリクエストを発行する。この排他的読み
出しリクエストは、通常の排他的読み出しリクエストと
同様に処理される。
【0082】次いでステップS65にて上記排他的読み
出しリクエストに応答して返ってきたリプライデータは
キャッシュメモリ2に格納され、そのデータの発行元の
キャッシュメモリのアドレスがセットされるとともに、
Rビットをセットする。
【0083】ステップS63で、キャッシュメモリ2内
の該当データの状態がM/E/Sの何れかの場合は、ステ
ップS66に進み、キャッシュメモリ2内の該当データ
の状態がSかどうかが判定される。
【0084】状態がSの場合は、ステップS67にてキ
ャッシュコントローラ3は共有メモリバス4に対して無
効化リクエストを発行する。この無効化リクエストに応
答してキャッシュメモリ2の無効化が完了すると、無効
化したキャッシュメモリの内部のデータがレスポンスと
してプロセッサ1に返され、キャッシュメモリ2の状態
がRに変更される。
【0085】ステップS66の判定で、該当データの状
態がM/Eのいずれかの場合は、ステップS68にてそ
のままキャッシュメモリ2の内部のデータがレスポンス
としてプロセッサ1に返され、Rビットがセットされ
る。
【0086】このようにして作られたRビットがセット
された状態に対して、外部からリクエストが来ると、図
4に示したフローチャートと同様の動作によりキャッシ
ュコントローラ3が動作する。すなわち、図4のステッ
プS41における「R状態」を、本実施の形態2におい
ては「Rビットがセットされた状態」と置き換えればよ
い。
【0087】ただし、本実施の形態においては、外部か
らリクエストが来ると、そのリクエストはキャッシュメ
モリ2の内部のリクエスト保持部に記録され、それと同
時に、キャッシュメモリ内部に設けられたカウンタがカ
ウントを開始する。
【0088】図7は本実施の形態2におけるカウンタに
よる動作を説明するフローチャートである。図7におい
て、ステップS71にてカウンタは外部からのリクエス
トを契機として所定時間をカウントしてタイムアウトす
ると、ステップS72にてRビットをクリアし、ステッ
プS73にてリクエスト情報保持部に他のリクエストが
あるかを判定し、あればステップS74にてRビットを
クリアした状態のキャッシュメモリにリクエストが来た
と判断してそのリクエストに応じた処理をしてカウンタ
動作を終了する。ステップS73の判定でリクエスト情
報保持部にリクエストがなければカウンタ動作を終了す
る。
【0089】上記の実施の形態2をまとめると以下のよ
うになる。
【0090】実施の形態1では、プロセッサは将来確実
に「書き込み」コマンドを発行する補償がなければ、
「将来の書き込みのための読み出し」コマンドRsvを
発行してはならないという制約が課せられていた。
【0091】しかし一般的には、将来確実に書き込みを
行なうことを保証することは困難である。このため、将
来的に書き込みを行なうことが確実ではなくても、書き
込みを行なう可能性が高い場合に「将来の書き込みのた
めの読み出し」コマンドが発行できるようにプロトコル
を変更することを考える。
【0092】まず、図5に示したように、キャッシュメ
モリに一定時間の経過を測定するタイマを用意する。さ
らに、Rビットがセットされているデータに対して他の
キャッシュメモリから読み出し要求が発生すると、この
タイマを起動するようにする。
【0093】一定時間が経過する前に、プロセッサから
書き込みコマンドが発行され、キャッシュメモリの状態
がRビットのセット状態からM状態へ遷移した場合に
も、上記と同様にタイマを起動する。
【0094】一定時間経過後、プロセッサから書き込み
コマンドがない場合には、書き込みがなされないものと
見なして、キャッシュメモリの状態をE状態とし、従来
のプロトコルと同様の処理を行なう。この場合の処理と
しては、 1.キャッシュメモリの状態をS状態にしてリプライを
行なう。
【0095】2.キャッシュメモリの状態をI(無効
化)にして、リプライを行なう。
【0096】3.コマンドをリトライさせ、キャッシュ
メモリからリプライするようにする。という方法が考え
られる。 (請求項3に対応する実施の形態)上記手法は、Rビッ
トがセットされたデータを持っているキャッシュメモリ
がタイムアウトを設定しているが、逆にリクエストを発
行した読み出し側のプロセッサがタイムアウトを設定す
ることも可能である。
【0097】まずシステムにグローバルタイムが存在す
ると仮定する。これは、全てのキャッシュメモリが参照
できて、どのキャッシュメモリから参照しても同じ時刻
を差すものである。これを用いると、キャッシュメモリ
Aから見て時刻tの瞬間は、キャッシュBから見ても時
刻tとなる。
【0098】次に、キャッシュメモリからのメモリ読み
出しコマンドを拡張して、指定時刻(デッドライン)を
搭載できるようにする。このデッドラインは、読み出し
側がデータを欲しいタイミングを示す。すなわち、たと
えば10クロック後にこのデータを参照することが分かっ
ていれば、デッドラインを現在時刻+10として読み出し
コマンドを発行する。従来の読み出しコマンドは、これ
が全て現在時刻+0で発行されるのに相当する。
【0099】キャッシュメモリからメモリアクセスを発
行する場合、必ずこのデッドラインを付加することにす
る。デッドラインが不明な場合は、デッドラインは現在
時刻とする(この場合は従来のメモリアクセスと同じで
ある)。
【0100】Rビットがセットされたデータを保持して
いるキャッシュメモリが、他のキャッシュメモリからデ
ッドラインつきの読み出しリクエストを受け取ると、現
在時刻を参照して、以下の動作を行なう。
【0101】・プロセッサから書き込みが行なわれれ
ば、キャッシュメモリの状態をM状態にして通常のメモ
リアクセス動作を行なう。
【0102】・デッドラインに達してもプロセッサから
書き込みがなければ、キャッシュメモリの状態をE状態
にして通常のメモリアクセスを行なう。
【0103】これは上記手法で、Rビットがセットされ
たデータを持っている側が起動していたタイマを、デー
タ要求側が起動することに相当する。したがって、リプ
ライ時のオプションも、上記手法と同様に考えられる。 実施の形態3: (請求項4及び5に対応する実施の形態)本実施の形態
3においても、図1に示した実施の形態1と同様のシス
テムを考える。ただし、本実施の形態3においては、実
施の形態1とは違い、キャッシュ内部のリクエスト情報
保持部の代わりに、リクエスト・キュー兼プロセッサビ
ットマップを用意する。
【0104】図8は本実施の形態3によるキャッシュメ
モリの内部構造を示す図である。
【0105】図8に示すように、各キャッシュメモリブ
ロック内のリクエスト・キュー兼プロセッサビットマッ
プは、個々のエントリが図2に示した実施の形態1のリ
クエスト情報保持部と同様の情報を保持できるようにな
っている。それと同時に、単一のリクエストではなく、
プロセッサビットマップとしても用いることができる構
造になっている。
【0106】すなわち、各Q/Bビットの後のエントリ
に単一のリクエストを保持する場合は、Q/Bビットを
例えば“0”にし、そのQ/Bビットの後のエントリ領
域をどのキャッシュからのリクエストか、及びリクエス
トの種類等を保持するために使う。このモードをBモー
ド(Broadcast)と称する。
【0107】また、各Q/Bビットの後のエントリに複
数のリクエストを保持する場合は、Q/Bビットを例え
ば“1”にし、複数のビットを複数のプロセッサにそれ
ぞれ対応させ、リクエストを発行したプロセッサを表わ
すビットを“1”とするビットマップとする。このモー
ドをQモード(待ち行列)と称する。
【0108】共有メモリバス4を流れるリクエスト又は
リプライにも変更を施す。リクエストには、「Rsv
コマンドに対応する読み出しリクエスト」を追加する。
リプライには、キャッシュ内部のリクエスト・キュー兼
プロセッサビットマップを付加できるようにする。
【0109】図9は本実施の形態3において、プロセッ
サからRsv コマンドが発行された場合のキャッシュ
コントローラの動作を説明するフローチャートである。
このフローチャートで図3に示した実施の形態1と異な
るところは、ステップS93にてRsvコマンドに対応
する読み出しリクエストを発行する点である。ステップ
S93において、他のキャッシュメモリにR状態のデー
タがなければ図3のステップS34と同じく排他的読み
出しリクエストを発行する。
【0110】その他の動作は図3で説明したものと同じ
なのでここでは説明を省略する。
【0111】図10は本実施の形態3において、R状態
のデータに対して、外部からリクエストが到着した場合
のキャッシュコントローラの動作を説明するフローチャ
ートである。
【0112】図10において、ステップS101にて、
着目しているプロセッサに対応するキャッシュメモリ内
のR状態のデータに対して書き込み又は読み出しのリク
エストが外部から到着すると、ステップS102にてそ
のリクエストは書き込みリクエストか読み出しリクエス
トかが判定される。
【0113】到着したリクエストが書き込みリクエス
ト、すなわち、次に書き込むための読み出しリクエスト
である「Rsv コマンドに対応する読み出しリクエス
ト」であった場合は、ステップS103にて、リクエス
ト・キュー兼プロセッサビットマップ内のリクエスト・
キューが空かどうかを判定する。空であれば、ステップ
S104にてリクエスト・キューの先頭に今回のリクエ
ストをQモードで登録して処理を終了する。
【0114】リクエスト・キューが空でなければステッ
プS105にてリクエスト・キュー兼プロセッサビット
マップ内にBモードのエントリが存在するかどうかを判
定する。
【0115】Bモードのエントリが存在していれば、そ
れ以降のリクエスト・キューは無効になるので、登録さ
れず、そのコマンドを発行したプロセッサはステップS
106にてリトライをする。
【0116】ステップS105にて、キャッシュメモリ
内のリクエスト・キュー兼プロセッサビットマップのQ
/BビットがBモードであるエントリが登録されていな
ければ、ステップS107にてこのリクエストはリクエ
スト・キュー兼プロセッサビットマップのリクエストキ
ューの最後にQモードで追加登録される。この場合は、
リクエスト情報として保持される。すなわち、Q/Bビ
ットをQモードにし、どのプロセッサから来たか、どう
いうリクエストかを保持する。
【0117】ステップS102の判定で、リクエストが
通常の読み出しリクエストであった場合、ステップS1
08にてリクエスト・キュー兼プロセッサビットマップ
の最後のエントリがBモードかどうかが判定される。
【0118】最後のエントリのQ/BビットがBモード
の場合は、ステップS109にて最後のエントリに到着
した今回のリクエストを生成した発行元のプロセッサに
対応するビットが“1”にされる。
【0119】最後のエントリのQ/BビットがBモード
ではない場合すなわちQモードの場合は、ステップS1
10にて新たにエントリが生成される。そしてこのエン
トリのQ/BビットはBモードにされ、到着したリクエ
ストを生成したプロセッサに対応するビットが“1”に
される。
【0120】図11は図10で説明したようにして作ら
れたR状態のデータに対して、外部からコマンドが発行
された場合のキャッシュコントローラ3の動作を説明す
るフローチャートである。この動作のステップS111
からステップS115までは実施の形態1の場合の図4
におけるステップS44からステップS48とほぼ同様
である。
【0121】図11において、ステップS111にて外
部からキャッシュメモリ2内のR状態のデータに対して
コマンドが発行されると、ステップS112にてそのコ
マンドはRead又はRsvか否かを判定する。
【0122】この判定の結果、コマンドがRead又はRs
vコマンドであれば、ステップS113にてキャッシュ
メモリ2に格納されているデータはそのままプロセッサ
1に返され、状態Rは変更されない。
【0123】ステップS112の判定結果がWrite コマ
ンドの場合は、ステップS114にてキャッシュメモリ
内部のデータが更新され、状態がM状態に変化する。こ
の時、リクエスト・キュー兼プロセッサビットマップ
(図8)に有効なデータがあれば、最初のエントリを取
り出す。
【0124】次いでステップS115にて、リクエスト
・キューの先頭にリクエストがあるかどうかを判定す
る。リクエストがなければ処理を終了し、リクエストが
あればステップS116に進んでリクエスト・キューの
先頭のエントリのQ/BビットはQモードかBモードか
を判定する。BモードであればステップS117にてビ
ットが“1”になっている(すなわち、登録されてい
る)プロセッサに対して更新されたデータを読み出しに
要求に対するリプライとして一斉に送信して処理を終了
する。
【0125】ステップS116の判定でQモードであれ
ばステップS118にてM状態のキャッシュメモリに対
して、リクエスト情報保持部に書かれているリクエスト
が来たと判断してそのリクエストに応じた処理をする。
【0126】次いでステップS119にてリクエスト・
キューに2番目以降のエントリがあるかを判定し、あれ
ばリクエスト・キューの2番目以降のエントリをリプラ
イに追加して送信すし、それらのリクエストに応じた処
理を順次行う。
【0127】上記の実施の形態3をまとめると以下のよ
うになる。 (請求項4に対応する実施の形態)R状態のデータに対
して読み出しリクエストが発生すると、そのリクエスト
に対するリプライを待たせるというのが本実施の形態3
の特徴である。リプライを待たせる分、同じデータに対
する複数のリクエストが重なる可能性が高くなることが
考えられる。特に、本実施の形態3を適用する領域とし
て、ロック用メモリなど、多くのプロセッサが共有する
データが考えられるので、複数のプロセッサが同時に同
じデータを参照することは、高い確率で存在するものと
思われる。
【0128】一般的に、メモリバスプロトコルで同じデ
ータに対するアクセスは、複数行なわれることはない。
それは、同時に実行しようとすると先のアクセスが後の
アクセスを無効化したり、後のアクセスを実行すること
によって一貫性が保てなくなったりするからである。
【0129】そのため、たとえばここで例に挙げている
Intel 社のPentium Pro Bus(登録商標)では、各キャ
ッシュメモリがそれぞれ、現在処理中のメモリアドレス
を記憶しておき、同じデータに対するアクセスははじめ
からバスに発行しないよう制御している。他の手法とし
ては、処理中のデータに対するアクセスが発行される
と、処理中のユニットがリトライ信号を出して、アクセ
スをやり直させるという方法もある。
【0130】しかし、リプライを待たせることによっ
て、このデータに対する後続のリクエストがいくつも処
理できずにたまってしまうことは、要求元のキャッシュ
メモリ(同じアドレスのアクセスははじめから発行しな
い場合)あるいはバス(処理中のユニットがリトライさ
せる場合)に大きな負担をかけることになる。そこで、
データを待たせるのであれば、ひとつだけでなく複数個
のリクエストを待たせる方式を考える。
【0131】まず、データの書き手が次々に移動してい
く場合を考える。すなわち、プロセッサAが書き、次に
プロセッサBが書き、次にプロセッサCが書くという場
合である。この場合、データをA→B→Cの順に遷移し
ていけば最も効率よく処理することができる。
【0132】そこで、各キャッシュメモリにリクエスト
・キューを設ける。このキューはR状態のデータに対す
る各プロセッサからのリクエストを並べておくものであ
る。たとえば、プロセッサAがR状態のデータを保持し
ているとして、プロセッサBからの読み出しリクエスト
が到着すると、キューの先頭にプロセッサBを入れる。
さらにプロセッサCからのリクエストが到着すると、プ
ロセッサBの次に入れる。
【0133】R状態のデータに対して書き込みが行なわ
れ、M状態に遷移したとき、プロセッサAはキューの先
頭にあるプロセッサBに対してリプライを行なう。この
時一緒に、プロセッサCがキューに並んでいるという情
報も送る。すると、プロセッサBではプロセッサCを最
初からキューの先頭に登録する。したがって、プロセッ
サBでR状態のデータを持っているところにプロセッサ
Cからの読み出しリクエストが発生したのと同様な状況
を実現することになる。
【0134】このように、キューを持ち回ることによっ
て、リクエストが出てきた順にデータが遷移することに
なる。この場合も、データが移動した場合のキャッシュ
メモリの動作についていくつかのやり方が考えられる
が、効率よくデータを移動するためには、R状態のデー
タに対する書き込みが行なわれ、リプライを待っていた
キャッシュメモリにリプライを送るときには、キャッシ
ュメモリを無効化するという方式をとるのがよい。 (請求項5に対応する実施の形態)しかし、複数のリク
エストが発生する場合は、データが移動する場合だけで
はない。他によくあるパターンとしては、ひとつのプロ
セッサが書いたデータを多くのプロセッサで参照する場
合である。
【0135】この場合をサポートするため、次の構造を
考える。まず各キャッシュメモリに、リクエスト・キュ
ーの代わりに、どのプロセッサ(キャッシュメモリ)か
らリクエストが来たかを記録する領域を設ける。R状態
のデータに対して読み出しリクエストが来ると、どのキ
ャッシュメモリからのリクエストかを調べ、この領域に
登録する。
【0136】プロセッサからの書き込みが行なわれ、デ
ータがR状態からM状態に遷移したとき、どのキャッシ
ュメモリからリクエストがあったかを調べ、リクエスト
があったキャッシュメモリ全てに新しいデータを送る。
すなわち、複数のリクエストに対するリプライを一度に
行なってしまう。
【0137】このリプライのやり方としては、ブロード
キャスト/マルチキャストを使ったり、ひとつひとつリ
プライを返すやり方などが考えられる。 (付記6に対応する実施の形態)並列処理では、このど
ちらのパターンも多く用いられる。したがって、どちら
か片方だけでなく、両方に対して効率よく処理できるこ
とが望ましい。
【0138】そこで、リクエスト・キューとどのプロセ
ッサから来たかを登録する領域の両方を持たせ、両方の
方式に対応できるシステムが考えられる。
【0139】この場合、キャッシュメモリから出すコマ
ンドを区別する必要がある。すなわち、プロセッサから
「将来の書き込みのための読み出し」コマンドが発行さ
れた場合、「将来の書き込みのための読み出し」リクエ
ストを発行することとする。R状態のデータを持ったキ
ャッシュメモリは、「将来の書き込みのための読み出
し」リクエストを受け取るとリクエスト・キューに登録
し、そうでない一般的な読み出しリクエストが発行され
た場合は、どのプロセッサから来たかを登録する領域に
登録する。
【0140】同じデータに対して両者が重なった場合
は、どちらかを無効とするやり方も考えられるが、リク
エスト・キューのエントリを工夫して共用できるように
する方法も考えられる。 (付記1) 複数のプロセッサと、該プロセッサのそれ
ぞれに対応し、共通バスに接続された複数のキャッシュ
メモリと、該キャッシュメモリのそれぞれに対応し、該
キャッシュメモリ間で同一データを有するようにする一
貫性管理を行う複数のキャッシュコントローラとを備え
る並列計算機において、前記キャッシュメモリの各々
は、複数のキャッシュブロックを備えており、前記キャ
ッシュコントローラの各々は、該キャッシュコントロー
ラに対応するキャッシュメモリ内で前記共通バスからの
リクエストに対する応答処理の直後にその応答処理によ
り供給したデータが無効になることが予め明らかなキャ
ッシュブロックに対して書き込みコマンドが発行される
と、該書き込みコマンドに応答して該キャッシュブロッ
クのデータを更新した後に、前記リクエストに対する処
理を実行するようにしたことを特徴とするキャッシュメ
モリシステム。 (付記2) 前記キャッシュコントローラの各々は、前
記リクエストを保持しているキャッシュブロックに対し
て書き込みコマンドが発行されると、前記書き込みコマ
ンドに応答して該キャッシュブロックのデータを更新す
る前であっても、前記書き込みコマンドの受信から所定
時間をカウントした後に前記リクエストに対する処理を
実行するようにしたことを特徴とする付記1記載のキャ
ッシュメモリシステム。 (付記3) 前記キャッシュコントローラの各々は、前
記リクエストを保持しているキャッシュブロックに対し
て書き込みコマンドが発行されると、前記書き込みコマ
ンドに応答して該キャッシュブロックのデータを更新す
る前であっても、前記リクエストを発行したプロセッサ
が指定した所定時刻になった後に前記リクエストに対す
る処理を実行するようにしたことを特徴とする付記1記
載のキャッシュメモリシステム。 (付記4) 前記キャッシュメモリコントローラの各々
は、前記書き込みコマンドに応答して該キャッシュブロ
ックのデータの更新が終了する前にさらに他のプロセッ
サからリクエストが発生した場合、該リクエストを前記
キャッシュブロックに記憶させ、前記書き込みコマンド
に応答して該キャッシュブロックのデータを更新した後
いん、前記複数のリクエストに対する処理を実行するよ
うにしたことを特徴とする付記1から3のいずれか一項
に記載のキャッシュメモリシステム。 (付記5) 前記キャッシュメモリコントローラの各々
は、前記書き込みコマンドに応答して該キャッシュブロ
ックのデータの更新が終了する前にさらに他のプロセッ
サからリクエストが発生した場合、該リクエストを前記
キャッシュブロックに記憶させ、前記書き込みコマンド
に応答して該キャッシュブロックのデータを更新した後
に、前記複数のリクエストのうち最新のリクエストから
順番に処理を実行するようにしたことを特徴とする付記
1から3のいずれか一項に記載のキャッシュメモリシス
テム。 (付記6) データの性質に応じて、付記4と付記5の
いずれかに記載のキャッシュメモリシステム。
【0141】
【発明の効果】以上の説明から明らかなように、本発明
によれば、プロセッサからの要求をその都度処理するの
ではなく、将来を予測し最適な方法を用いるようにした
ので、キャッシュメモリに対する無駄な無効化と無駄な
書き込みの繰り返しがなくなり、従来のプロトコルでは
無駄なメモリアクセスが発生していた、ロックメモリ等
の競合の場合でも、効率よくメモリアクセスを行なうこ
とができるという効果が得られる。
【図面の簡単な説明】
【図1】本発明の実施の形態1において適用される共有
メモリ型並列計算機におけるキャッシュメモリシステム
の構成を示すブロック図である。
【図2】本発明の実施の形態1によるキャッシュメモリ
内部の構造を示す図である。
【図3】本発明の実施の形態1によるプロセッサ1から
Rsv コマンドが発行された場合のキャッシュコント
ローラ3の動作を説明するフローチャートである。
【図4】図3で説明したようにして作られたR状態のキ
ャッシュメモリのデータに対して、外部からコマンドが
発行された場合のキャッシュコントローラ3の動作を説
明するフローチャートである。
【図5】本発明の実施の形態2によりカウンタが追加さ
れたキャッシュメモリの内部構造を示す図である。
【図6】本発明の実施の形態2によるプロセッサ1から
Rsv コマンドが発行された場合のキャッシュコント
ローラ3の動作を説明するフローチャートである。
【図7】本発明の実施の形態2におけるカウンタによる
動作を説明するフローチャートである。
【図8】本発明の実施の形態3によるキャッシュメモリ
の内部構造を示す図である。
【図9】本発明の実施の形態3において、プロセッサか
らRsv コマンドが発行された場合のキャッシュコン
トローラの動作を説明するフローチャートである。
【図10】本発明の実施の形態3において、R状態のデ
ータに対して、外部からリクエストが到着した場合のキ
ャッシュコントローラの動作を説明するフローチャート
である。
【図11】図10で説明したようにして作られたR状態
のデータに対して、外部からコマンドが発行された場合
のキャッシュコントローラ3の動作を説明するフローチ
ャートである。
【図12】従来の並列計算機におけるキャッシュメモリ
システムを説明するブロック図である。
【符号の説明】
1…プロセッサ 2…キャッシュメモリ 3…キャッシュコントローラ 4…共有メモリバス 21〜2n…キャッシュブロック
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 15/177 682 G06F 15/177 682J

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 複数のプロセッサと、該プロセッサのそ
    れぞれに対応し、共通バスに接続された複数のキャッシ
    ュメモリと、該キャッシュメモリのそれぞれに対応し、
    該キャッシュメモリ間で同一データを有するようにする
    一貫性管理を行う複数のキャッシュコントローラとを備
    える並列計算機において、前記キャッシュメモリの各々
    は、複数のキャッシュブロックを備えており、前記キャ
    ッシュコントローラの各々は、該キャッシュコントロー
    ラに対応するキャッシュメモリ内で前記共通バスからの
    リクエストに対する応答処理の直後にその応答処理によ
    り供給したデータが無効になることが予め明らかなキャ
    ッシュブロックに対して書き込みコマンドが発行される
    と、該書き込みコマンドに応答して該キャッシュブロッ
    クのデータを更新した後に、前記リクエストに対する処
    理を実行するようにしたことを特徴とするキャッシュメ
    モリシステム。
  2. 【請求項2】 前記キャッシュコントローラの各々は、
    前記リクエストを保持しているキャッシュブロックに対
    して書き込みコマンドが発行されると、前記書き込みコ
    マンドに応答して該キャッシュブロックのデータを更新
    する前であっても、前記リクエストの受信から所定時間
    をカウントした後に前記リクエストに対する処理を実行
    するようにしたことを特徴とする請求項1記載のキャッ
    シュメモリシステム。
  3. 【請求項3】 前記キャッシュコントローラの各々は、
    前記リクエストを保持しているキャッシュブロックに対
    して書き込みコマンドが発行されると、前記書き込みコ
    マンドに応答して該キャッシュブロックのデータを更新
    する前であっても、前記リクエストを発行したプロセッ
    サが指定した所定時刻までに前記リクエストに対する処
    理を実行するようにしたことを特徴とする請求項1記載
    のキャッシュメモリシステム。
  4. 【請求項4】 前記キャッシュメモリコントローラの各
    々は、前記書き込みコマンドに応答して該キャッシュブ
    ロックのデータの更新が終了する前にさらに他のプロセ
    ッサからリクエストが発生した場合、該リクエストを前
    記キャッシュブロックに記憶させ、前記書き込みコマン
    ドに応答して該キャッシュブロックのデータを更新した
    後に、前記複数のリクエストに対する処理を実行するよ
    うにしたことを特徴とする請求項1から3のいずれか一
    項に記載のキャッシュメモリシステム。
  5. 【請求項5】 前記キャッシュメモリコントローラの各
    々は、前記書き込みコマンドに応答して該キャッシュブ
    ロックのデータの更新が終了する前にさらに他のプロセ
    ッサからリクエストが発生した場合、該リクエストを前
    記キャッシュブロックに記憶させ、前記書き込みコマン
    ドに応答して該キャッシュブロックのデータを更新した
    後に、前記複数のリクエストのうち最新のリクエストか
    ら順番にリクエストに対する処理を実行するようにした
    ことを特徴とする請求項1から3のいずれか一項に記載
    のキャッシュメモリシステム。
JP2001353440A 2001-11-19 2001-11-19 キャッシュメモリシステム Withdrawn JP2003150444A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001353440A JP2003150444A (ja) 2001-11-19 2001-11-19 キャッシュメモリシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001353440A JP2003150444A (ja) 2001-11-19 2001-11-19 キャッシュメモリシステム

Publications (1)

Publication Number Publication Date
JP2003150444A true JP2003150444A (ja) 2003-05-23

Family

ID=19165454

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001353440A Withdrawn JP2003150444A (ja) 2001-11-19 2001-11-19 キャッシュメモリシステム

Country Status (1)

Country Link
JP (1) JP2003150444A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100825721B1 (ko) 2005-12-08 2008-04-29 한국전자통신연구원 객체 기반 스토리지 시스템에서 사용자 파일 관리자 내의시간 기반 캐쉬 일관성 유지 시스템 및 방법
JP2009223511A (ja) * 2008-03-14 2009-10-01 Fujitsu Microelectronics Ltd キャッシュメモリシステム、データ処理装置および記憶装置
US8397031B2 (en) 2008-01-28 2013-03-12 Nec Computertechno, Ltd. Apparatus, processor and method of cache coherency control

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100825721B1 (ko) 2005-12-08 2008-04-29 한국전자통신연구원 객체 기반 스토리지 시스템에서 사용자 파일 관리자 내의시간 기반 캐쉬 일관성 유지 시스템 및 방법
US8397031B2 (en) 2008-01-28 2013-03-12 Nec Computertechno, Ltd. Apparatus, processor and method of cache coherency control
JP2009223511A (ja) * 2008-03-14 2009-10-01 Fujitsu Microelectronics Ltd キャッシュメモリシステム、データ処理装置および記憶装置

Similar Documents

Publication Publication Date Title
US10310979B2 (en) Snoop filter for cache coherency in a data processing system
JP4966205B2 (ja) 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測
KR100318789B1 (ko) 멀티프로세서 데이타 처리 시스템에서의 캐쉬를 관리하는시스템과 방법
US9170946B2 (en) Directory cache supporting non-atomic input/output operations
US7194586B2 (en) Method and apparatus for implementing cache state as history of read/write shared data
US7395376B2 (en) Method, apparatus, and computer program product for a cache coherency protocol state that predicts locations of shared memory blocks
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
JP5445581B2 (ja) コンピュータシステム、制御方法、記録媒体及び制御プログラム
JP3661764B2 (ja) 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム
US20070005899A1 (en) Processing multicore evictions in a CMP multiprocessor
JPH11506852A (ja) 多数のバスマスタと共用レベル2キャッシュとを備える多レベルキャッシュシステムでのキャッシュスヌーピングオーバーヘッドの低減
KR19990072598A (ko) 최적화된캐시동작을독립적으로구현하는캐시일관성프로토콜
JPH09223118A (ja) スヌープキャッシュメモリ制御システム
US6934814B2 (en) Cache coherence directory eviction mechanisms in multiprocessor systems which maintain transaction ordering
JPH10154100A (ja) 情報処理システム及び装置及びその制御方法
JP2007004802A (ja) データ処理装置におけるスヌープ・オペレーションの管理
CN112955876A (zh) 具有对写入操作的改进处理的用于数据处理网络的i/o相干请求节点
US7024520B2 (en) System and method enabling efficient cache line reuse in a computer system
US5987544A (en) System interface protocol with optional module cache
JP2000330965A (ja) マルチプロセッサシステム及びそのメモリアクセストランザクションの転送方法
US20040193809A1 (en) Reducing latency of a snoop tenure
EP2354953B1 (en) Information processing device and memory control device
US6944721B2 (en) Asynchronous non-blocking snoop invalidation
JP2003150444A (ja) キャッシュメモリシステム
JP2000267935A (ja) キヤッシュメモリ装置

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20050201