JP4043225B2 - キャッシュ装置および方法 - Google Patents
キャッシュ装置および方法 Download PDFInfo
- Publication number
- JP4043225B2 JP4043225B2 JP2001375378A JP2001375378A JP4043225B2 JP 4043225 B2 JP4043225 B2 JP 4043225B2 JP 2001375378 A JP2001375378 A JP 2001375378A JP 2001375378 A JP2001375378 A JP 2001375378A JP 4043225 B2 JP4043225 B2 JP 4043225B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- data
- processor
- address
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 55
- 230000015654 memory Effects 0.000 claims description 380
- 238000012545 processing Methods 0.000 description 27
- 238000004891 communication Methods 0.000 description 24
- 230000007704 transition Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 22
- 230000008569 process Effects 0.000 description 16
- 230000000694 effects Effects 0.000 description 11
- 238000006243 chemical reaction Methods 0.000 description 9
- 238000012546 transfer Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 7
- 241000254158 Lampyridae Species 0.000 description 6
- 230000004044 response Effects 0.000 description 5
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 239000012141 concentrate Substances 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 208000033748 Device issues Diseases 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
Description
【発明の属する技術分野】
この発明はマルチプロセッサシステムで各プロセッサに対応して設けられたキャッシュメモリの内容を制御するキャッシュ装置および方法に関し、特に所定のプロトコルに従いキャッシュメモリの内容を制御するキャッシュ装置および方法に関する。
【0002】
【従来の技術および発明が解決しようとする課題】
マルチプロセッサシステムでは対象とする処理を高速に実行できる。具体的には対象とする処理を並列に実行可能な複数個のタスクに分割して、各プロセッサは割当てられたタスクを実行することで並列に処理が進行する。このとき、各プロセッサが実行するタスク間で変数などのデータを共有する場合には、プロセッサ間でデータ通信が行なわれる。このように各プロセッサ間(タスク間)で共有されて、後述する共有メモリに記憶されるデータを共有データという。
【0003】
マルチプロセッサシステムにおいて、プロセッサ間のデータ通信が頻繁に行なわれる場合はプロセッサ間で共有されるメモリ(以下、共有メモリという)を介しての通信が適している。共有メモリと各プロセッサとの間の結合方式を考えるとき、最もハードウェア構造が単純で経済的な結合方式として、共有メモリにアクセスするためのバスを複数プロセッサ間で共有する共有バス方式がある。共有バス上でのデータ通信についての競合(以下、バス競合という)を生じなければ共有メモリへのアクセスに関するコストも低い。しかし、プロセッサ数が増加するとバス競合が起こりデータ通信のオーバーヘッドが増大する。バス競合を大幅に緩和する方法としてスヌープキャッシュが提案され、現在多くのマルチプロセッサシステムで実用化されている。
【0004】
マルチプロセッサシステムでは、各プロセッサが共有データへのアクセスのために共有メモリに直接アクセスすると共有バスのトラフィックが増大してしまう。そこで、プロセッサごとにプライベートなキャッシュメモリを設けて共有メモリから読出した共有データを該キャッシュメモリに書込んで(コピーして)、以降、該共有データについてアクセス要求があったときには共有メモリではなくて該キャッシュメモリをアクセスすることにより、上述のバス競合を緩和することができる。
【0005】
マルチプロセッサシステムにおいては、主記憶装置などの共有メモリの内容が複数のキャッシュメモリ上にコピーされるため、主記憶装置とキャッシュメモリ間の内容不一致に加え複数のキャッシュメモリ間での内容の不一致が生じキャッシュコヒーレンス(キャッシュメモリに書込まれた共有データについての一貫性)が維持できなくなる。スヌープキャッシュは、この問題点を共有バスの特徴を生かして解決するものである。共有バスを利用するマルチプロセッサシステムでは、データ通信が1本の共有バスを介して行なわれるので、共有バス上のデータの流れを観測していれば、システムの挙動がほとんど把握できる。スヌープキャッシュはキャッシュメモリについて能動的に共有バスのトランザクションを監視(snoop)することにより、該キャッシュメモリの内容に影響を及ぼすトランザクションを検出するとキャッシュコヒーレンスを維持するため所定処理して、内容の一致を保証する方法であって、内容の一致を保証するための一連のデータの取扱い方をキャッシュ一致プロトコルと呼ぶ。キャッシュ一致プロトコルは、内容を一致させる時期(ライトスルーのときかライトバックのときか)と方法(内容を無効化するか更新するか)によって分類される。
【0006】
内容を一致させる時期をライトスルー時とするキャッシュ一致プロトコルをライトスルーキャッシュと呼ぶ。ライトスルーキャッシュは最も簡単なキャッシュ一致プロトコルで、キャッシュメモリの各ライン(以下、キャッシュラインと呼ぶ)は有効(V:valid)と無効(I:invalid)の2状態しか持たず、したがって、該キャッシュラインの状態を示すタグ(以下、状態タグという)も1ビット割当てれば済む。ライトスルーキャッシュに従えば、制御は簡単であるが、データ書込が行なわれるたびに共有バスが利用されるので、共有バスのトラフィックは増大する。なお、ここでは、キャッシュラインは、キャッシュメモリの1回のアドレス指定によるアクセス単位である。
【0007】
次に、ライトバックの時期において内容を無効化する方式に分類されるキャッシュ一致プロトコルであるライトバックキャッシュについて基本プロトコルを説明し、該ライトバックキャッシュに含まれるSymmetryプロトコル、Illinoisプロトコル、およびBerkeleyプロトコルについて説明する。
【0008】
まず、基本プロトコルについて説明する。ライトバックキャッシュでは、キャッシュメモリのキャッシュラインの状態タグには有効(V)および無効(I)のいずれかの状態を示すビットの他に該キャッシュラインの内容と共有メモリの内容と一致(C:Clean)および不一致(D:Dirty)のいずれかの状態を示すビットが必要とされる。I(無効)であるキャッシュラインについては、一致または不一致の情報は意味をなさないので、結局キャッシュラインの状態はI(無効)、C(共有メモリの内容と一致)およびD(共有メモリの内容と不一致)の3状態のいずれかとなる。ここで、キャッシュラインの状態がI(無効)とは、該キャッシュラインの内容が保証されない状態をいう。
【0009】
次に、Symmetryプロトコルについて説明する。あるプログラム(タスク)でのみ用いられる変数は、通常スタック領域に置かれ、特定のプロセッサのみによりアクセスされる。このため、該変数に対応のキャッシュラインは特定のプロセッサのキャッシュメモリにのみ置かれることになる。上述した基本プロトコルでは、このような変数に最初に書込を行なったときに、他のキャッシュメモリに該変数のコピーが存在しなくても該コピーを無効化するための信号を発生させる必要がある。このことは、キャッシュラインの状態タグに、他のキャッシュメモリに該キャッシュライン(変数)のコピーが存在するかどうかを示すビットを付け加えることにより回避できる。このようなビットが付け加えられたにより、状態タグは対応のキャッシュラインについてE(Exclusive:他のキャッシュメモリにコピーは存在しない)およびS(Shared:他のキャッシュメモリにコピーが存在するかもしれない)のいずれかの状態が加わる。
【0010】
次に、Illinoisプロトコルについて説明する。アクセス要求がありキャッシュメモリに該アクセス要求に対応のアドレスに一致するキャッシュラインが存在しないとき(キャッシュミスヒットが起きたとき)、Symmetryプロトコルは、常に共有メモリからデータを読出すのに対し、Illinoisプロトコルはキャッシュミスヒットの起きたキャッシュラインの内容のコピーを他のキャッシュメモリが持っていた場合は、該他のキャッシュメモリから該コピーをキャッシュミスヒットを起こしたキャッシュメモリに転送することになっている。一般には、共有メモリよりもキャッシュメモリの方が高速動作するので、Illinoisプロトコルに従う方法は良さそうに見えるが、コピーを持っている他のキャッシュメモリが複数個存在するときに、どのキャッシュメモリからコピーを転送すべきかを決定することが困難である。
【0011】
また、マルチプロセッサシステムにおける所定プロセッサが、状態タグが‘D’のキャッシュラインを有していたときに、他のプロセッサが共有バスを介して該キャッシュラインをアクセスしようとした場合、所定プロセッサはまず該キャッシュラインを共有メモリに転送した後、該キャッシュラインの状態タグを“C”に更新した後に、他のプロセッサに対して該キャッシュラインの内容を転送する。このとき、Symmetryプロトコルでは、該キャッシュラインが共有メモリに書込まれた後、共有メモリから他のプロセッサに該キャッシュラインが転送されるが、Illinoisプロトコルでは、所定プロセッサのキャッシュメモリの内容が共有メモリに書き戻されるときに、他のプロセッサの対応のキャッシュラインには、同時にデータが書込まれる。
【0012】
次に、Berkeleyプロトコルについて説明する。上述した所定プロセッサがデータを書込んで対応の状態タグが“D”となったキャッシュラインに対して、他のプロセッサが読出を行なうと、該キャッシュラインの内容は共有メモリを介することなく、直接に、他のプロセッサに転送される。この結果、該キャッシュラインの状態はDirtyであって、かつ該キャッシュラインのコピーは複数のキャッシュメモリで共有されているので、状態タグは“DS”(Dirty Shared)を示す。ところが、状態タグが“DS”であるキャッシュラインのコピーが複数のキャッシュメモリにおいて存在すると、さらなる他のプロセッサが同一キャッシュラインの読出を行なったとき、どのプロセッサから該さらなる他のプロセッサに該キャッシュラインを供給するか判定することが必要になる。そこで、各キャッシュラインについて、いずれのプロセッサ(または該プロセッサに対応のキャッシュメモリ)が最終的にその責任を持つかを決めておくことにする。このように、キャッシュラインについて責任を持つキャッシュメモリまたは共有メモリは、そのキャッシュラインのオーナーであると言い、オーナーの権利のことをオーナーシップと呼ぶ。オーナーは、他から要求があった場合にキャッシュラインを要求元に供給し、共有メモリへの書き戻しについても最終的な責任を負う。オーナーは対応のキャッシュラインがキャッシュメモリから追い出される場合や無効化される場合、責任を持って他のキャッシュメモリにオーナーシップを渡すか共有データに該キャッシュラインの内容を書き戻して、デフォルトのオーナーである共有メモリに対してオーナーシップを戻してやる責任を負う。
【0013】
次に、内容を一致させる方法が更新することによりなされる更新型スヌープキャッシュプロトコルについて説明する。
【0014】
更新型スヌープキャッシュプロトコルは、あるキャッシュメモリのキャッシュラインに書込んだデータにより、他のキャッシュメモリにおけるコピーを更新してしまうことにより内容の一致をとるものである。
【0015】
更新型スヌープキャッシュプロトコルは3状態Fireflyプロトコル、4状態FireflyプロトコルおよびDragonプロトコルに分類される。3状態Firelyプロトコルは、更新型スヌープキャッシュプロトコルで最も単純なものである。3状態Fireflyプロトコルはプロセッサが、状態タグが“CS”(Clean Shared)のキャッシュラインに書込を行なうと、他のプロセッサのキャッシュメモリについての対応のコピーを更新するとともに共有メモリの内容も更新してしまう。したがって、この場合、キャッシュラインの状態タグは“CS”であり、“DS”はありえない。また、状態タグが“CE”のキャッシュラインに対して書込を行なうとDE(Dirty Exclusive)状態が生じ、この場合は共有バスを利用することなく書込を行なうことができる。他のプロセッサがあるプロセッサのキャッシュメモリから状態タグが“DE”のキャッシュラインを読出す場合、前述した無効化型の基本プロトコル同様、該キャッシュラインの内容は、一度、共有メモリに書き戻された後、読込まれるので、該キャッシュラインの状態タグは“CS”となる。この3状態Fireflyプロトコルに従えば、共有メモリとキャッシュメモリとの間で内容の一致を頻繁にとることになるから、Dirtyの状態は複数のキャッシュメモリにおいて生ずることはなく、したがってオーナーシップなどを考慮する必要はない。
【0016】
次に、4状態Fireflyプロトコルについて説明する。このプロトコルでは、他のプロセッサがあるプロセッサのキャッシュメモリから状態タグが“DE”のキャッシュラインを読出すときに、Berkeleyプロトコルと同様に共有メモリに該キャッシュラインについての書き戻しをせずに、直接該キャッシュラインは他のプロセッサに対して転送される。このため、Dirty状態のコピーが複数のキャッシュメモリにおいて存在することとなり、オーナーシップの考え方が必要となる。このためBerkeleyプロトコルと同様に4状態のプロトコルが必要とされる。
【0017】
次に、Dragonプロトコルについて説明する。Dragonプロトコルは、状態タグが“CS”であるキャッシュラインへのデータの書込時に、共有メモリの内容を更新しないので、やはりDirty状態のコピーが複数のキャッシュメモリにおいて存在する。そこで、Berkeleyプロトコルと同様に、キャッシュラインは“SO”、“EO”、“EN”および“SN”の4状態をとり得る。状態タグが“SN”または“SO”であるキャッシュラインへのデータの書込に際しては、共有メモリの内容は更新されない。さらに、4状態Fireflyプロトコルと同様に、状態タグが“SN”のキャッシュラインに対して、他のプロセッサがアクセス要求してキャッシュミスヒットを起こした場合も、共有メモリへの書き戻しは行なわれないので、状態タグが“SO”のキャッシュラインを有するキャッシュメモリから該キャッシュラインの内容が要求元に供給される。Dragonプロトコルでは、状態タグが“SO”となったキャッシュラインの状態が変化するのは、該キャッシュラインを共有する複数のキャッシュメモリのいずれかにおいて、該キャッシュラインがキャッシュメモリから追い出された場合であり、このときにのみ共有メモリに対して該キャッシュラインの内容が書き戻される。
【0018】
ここで、上述した各プロトコルについて比較する。共有バスおよび共有メモリを有し、スヌープキャッシュに従うマルチプロセッサシステムにおいて、プロセッサ間の共有データの取扱い方(プロトコル)が共有バスの使用頻度を決定し、該システムのパフォーマンスに大きな影響を及ぼす。これまで提案されている上述したいずれのプロトコルも一長一短があり、すべてのタイプの共有データに対して適しているわけではなく、マルチプロセッサシステムで実行されるプログラムの性質を考慮した上で更新型プロトコルおよび無効化型プロトコルのいずれが適しているかを考察しなければならない。
【0019】
たとえば、プロセッサのアクセス形態に注目して更新型プロトコルと無効化型プロトコルとを比較した場合は次のようである。ローカル変数など、1つのプロセッサが連続してアクセスする傾向が顕著である変数に対しては無効化型プロトコルが有効であって、多くのプロセッサにより頻繁にデータ交換が行なわれるような変数に対しては更新型プロトコルが有効である。
【0020】
たとえばキャッシュメモリに関するヒット率とプロセッサ間のデータの共有率に注目して更新型プロトコルと無効化型プロトコルを比較した場合は次のようである。ここでヒット率はキャッシュヒットする割合いい、キャッシュヒットとは必要とするデータがキャッシュメモリに有効に存在する状態をいい、キャッシュミスヒットとは必要とするデータがキャッシュメモリに有効に存在しない状態をいう。
【0021】
キャッシュメモリを有するマルチプロセッサシステムの効率を決める重要な要因にキャッシュメモリについてのヒット率とキャッシュメモリ(プロセッサ)間のデータの共有率がある。ヒット率が高いほどキャッシュミスヒットによる共有バスのアクセスが少なく、共有率が低いほど共有データに対するライト時のキャッシュヒット(ライトヒットという)によるバスアクセスが少なく、いずれにしてもバス競合が減少し効率が良い。この観点から無効化型プロトコルと更新型プロトコルを比較してみると、明らかに更新型プロトコルの方がヒット率を高くするが、共有率も高くしてしまう。
【0022】
また、ピンポン効果に注目して更新型プロトコルと無効化型プロトコルを比較する。無効化型プロトコルでは、2つのプロセッサが頻繁に読み書きを行なうキャッシュラインが共有された場合には、2つのプロセッサのうち一方プロセッサが対応のキャッシュメモリのキャッシュラインに書込を行なうと、他方プロセッサのキャッシュメモリの対応のキャッシュライン(コピー)は無効化される。次に、他方プロセッサが対応のキャッシュメモリにおいて該キャッシュライン(コピー)に書込を行なうと、一方プロセッサのキャッシュメモリの対応のキャッシュラインは、まず共有メモリに書き戻され、次に他方プロセッサに転送されて他方プロセッサのキャッシュメモリに書込まれ、さらに他方プロセッサが該キャッシュラインに書込を行なうことにより、一方プロセッサの該キャッシュラインに関して無効化が行なわれる。これは、無効化型プロトコルの最も厄介で効率の悪い部分である。
【0023】
詳述すると、2つのプロセッサが共有するキャッシュラインについて互いに書込あるいは読出を行なうと、このような効率の悪い操作が書込あるいは読出の都度行なわれて、読出あるいは書込の対象とされるキャッシュラインは両方のプロセッサに対応のキャッシュメモリ上を互いに無効化されながら、行き来しなければならない。このような状態をピンポン効果と呼ぶ。ピンポン効果は、2つのプログラム(タスク)が互いにかつ頻繁にデータをやり取りする、言わば本格的な並列プログラム処理では必ず発生してしまう。これに対して更新型プロトコルは、キャッシュラインに書込んだデータで対応のコピー全てを更新してしまうので、ピンポン効果が生じることはない。
【0024】
上述した更新型プロトコルではFalse sharingという課題を有する。False sharingについて以下に説明する。2つのプロセッサ間でのデータのやり取りを想定する。2つのプロセッサのうちの一方プロセッサで実行されていたプログラム(タスク)が他方プロセッサに移動したとすると、以降、一方プロセッサでは、このタスクに関する変数を使うことはない。しかしながら、更新型プロトコルではキャッシュラインは無効化されることはないため、変数のデータが書込まれているキャッシュラインはキャッシュメモリから追い出されるまで有効である。このため、他方プロセッサがそのタスクの実行時に該変数のキャッシュラインにデータを書込むと、必要ないのに、共有バスを使用して一方プロセッサのキャッシュメモリにおける対応のキャッシュラインのデータ(一方プロセッサでは使われないデータ)を更新しなければならない。
【0025】
これと似た状況は、以下のようなケースでも生じる。一方プロセッサが使うローカル変数があるキャッシュラインの上半分の領域に格納され、他方プロセッサが使用するローカル変数が該キャッシュラインの下半分領域に格納されているとした場合、更新型プロトコルでは変数に書込が行なわれるたびに、意味のないデータの更新を行なわなければならない。このように、キャッシュラインが意味なく共有されることをFalse sharingという。更新型プロトコルでは特にFalse sharingが生じているときに共有バスにおける無駄なトラフィックが増加する。
【0026】
このような理由からメモリ領域ごと(変数ごとやワークエリアごと)に適したキャッシュメモリについてのキャッシュ一致プロトコルの種類は異なるといえる。共有バスのトラフィックを減らすことができれば、バス競合を抑制して接続可能なプロセッサ数が増え、システム全体の性能が高まる。そこで従来、多くのシステムでは、キャッシュ一致プロトコルが1種類に固定されているが、上述したような理由により、メモリ領域ごとに動的にキャッシュ一致プロトコルを切換制御することで共有バスのトラフィックを減少させてパフォーマンスを向上させるための工夫がなされている。たとえば、無効化型プロトコルと更新型プロトコルを以下のように混在して用いる方法が提案されている。
【0027】
たとえばCompetitive snoopという方法がある。これは、最初は更新型プロトコルを適用しておき、キャッシュラインの内容が更新される回数をカウントし、所定回数を超えると無効化型プロトコルに変更する方法である。この方法は、ある程度無駄なデータ更新を回避できるが、頻繁にプロセッサ間でデータ交換を行なっている最中にデータが無効化されてしまう場合があり、性能についての改善効果は大きいと言えない。
【0028】
また、プロセッサごとに適用するプロトコルの種類を選択する方法がある。この方法は、プログラム(タスク)の実行中に、該プログラムの性質に応じて無効化型プロトコルと更新型プロトコルとを切換えることができるならば、より良い効果を得ることができるということに注目した方法である。具体的には、キャッシュメモリを制御する機構を更新型プロトコルおよび無効化型プロトコルのそれぞれについて個別に構築して、プログラム実行時にいずれか一方の機構を用いるように切換えるという方法が想定される。しかしながら、この方法は、タスク実行中の各時点で無効化型プロトコルと更新型プロトコルのどちらが有効かはシステム全体で1つに決めるべきものではなく、むしろ各キャッシュメモリごと(各プロセッサごと)に決定すべきものであること、および無効化型プロトコルと更新型プロトコルの間で切換えている途中に発生するであろう共有データに対する書込動作に関してもコンシステンシーが保証されなければならないことの課題を有する。特に、スヌープキャッシュにおいては分散型の制御を行なうがゆえに、後者の課題が解消されなければならない。上述したような課題を解消するために次のような方策がとられる。
【0029】
各キャッシュメモリに1つの属性情報を割当てる。この属性情報は、「無効化モード」および「更新モード」のいずれか一方を示す。あるキャッシュメモリにおいて共有データに対するライトヒットが発生したときに、他のキャッシュメモリに存在するコピーは、他のキャッシュメモリの属性情報が「無効化モード」を示すとき無効化され、「更新モード」を示すとき更新されるとする。明らかに、この方法は「無効化モード」と「更新モード」の任意の組合せに対してコンシステンシを保証するので、キャッシュメモリを制御するための機構が実際に実現できれば、上述した前者の課題は解決される。すなわち、無効化型プロトコルと更新型プロトコルの両者が同時に共存することになる。さらに、この機構に関して、各キャッシュメモリの属性情報を切換える操作と共有データに対する書込とは排他的に制御されるという条件を満足すれば上述した後者の問題も解決される。
【0030】
スヌープキャッシュのような分散型の制御を行なう場合において上述した排他的制御が満たされているならば、キャッシュメモリ間の同期をとることなく属性情報の切換ができる、すなわちプログラム実行時のダイナミックな属性の切換が可能となる。ただし、同じメモリに対してプロセッサごとにプロトコルを変更する利点は少ない。
【0031】
ここで、共有メモリのページごとにキャッシュ一致プロトコルの種類を選択する方法について述べる。「細粒度並列実行支援機構」(松本、p91〜98(計算機アーキテクチャ研究報告会No77−12、情報処理学会、1998.7.14)では、ページごとに動的にキャッシュ一致プロトコルの種類を切換えることができれば、プロトコルが1種類に固定されることによる短所をなくすことができるとの技術が示されている。
【0032】
該文献に開示の技術では、動的なプロトコル切換のために、アドレスごとにプロトコルのタイプを表わす情報を付加したのでは、その情報のための記憶領域や管理のハードウェアがかなりの量となり効率的でないので、一定の記憶領域ごとにプロトコルのタイプを表わす情報を付加し管理する。ここでは実現の容易さからページ管理機構に注目し、共有メモリのページごとにその情報を付加することにする。このページに属するデータはどのタイプのプロトコルを使ってアクセスするかを示す情報である。プロセッサが共有メモリをアクセスする際に、このアクセスはどのタイプのプロトコルで処理しなければならないかを示すため、該プロトコルのタイプを示すビットを外部に出力するための信号線をプロセッサごとに設ける。また、キャッシュメモリから共有バス上にアクセス要求が出力されるとき、つまり共有バスを介してデータ通信が必要なときには、共有バスにもプロトコルのタイプを示す信号線が出力され、他のプロセッサにおいては、キャッシュメモリに関してこの信号線における信号に基づいてプロトコルを選択しながら共有バスをスヌープ(監視)する。コンパイラによるアクセスパターンについての解析やプログラマによるプロトコルタイプの指示などによって、変数やワークエリアをそれに適したプロトコルのタイプを持つ共有メモリにおけるページに割当てる。
【0033】
上述の「細粒度並列実行支援機構」で開示される技術では、プロセッサごとに無効化型プロトコルと更新型プロトコルについての選択をすることはできないから、よりきめ細やかなキャッシュの制御は到底できない。
【0034】
上述した背景によれば、マルチプロセッサシステムでプロセッサ間のデータ受け渡しが頻繁に生じるケースでは、更新型プロトコルが非常に適している。更新型プロトコルが有する課題は、False sharingである。そこで、更新型プロトコルを基本にしFalse sharingを削減することが望まれる。具体的には、あるプロセッサが頻繁にアクセスする変数のアドレスがわかっていれば、False sharingを減らし、かつキャッシュメモリについてのヒット率を高めることができる。
【0035】
文献“高速並列処理ワークステーション(TOP−1)”(p1456〜1457:情報処理学会第38回(昭和64年前期)全国大会)においても、更新型プロトコルと無効化型プロトコルをともに用いることについての示唆はなされているけれども、上述したようなFalse sharingを回避するための示唆は何らなされていないので、結果として共有バスのバス競合を回避することはできない。
【0036】
特開2001−109662号公報では、マルチプロセッサシステムにおけるキャッシュメモリへのアクセス性能を高めるために、キャッシュメモリ上のデータを、ブロック単位でその状態を細分化して管理することが示されている。該公報に示される方法によってもFalse sharingを抑制することはできないから、結果として無駄な共有バス利用を回避することはできない。
【0037】
それゆえにこの発明の目的は、キャッシュメモリ間のデータの共有率を低下させることのできるキャッシュ装置および方法を提供することである。
【0038】
この発明の他の目的は、キャッシュメモリについてヒット率を向上させることのできるキャッシュ装置および方法を提供することである。
【0039】
【課題を解決するための手段】
この発明のある局面に係るキャッシュ装置は、複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに、複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するための該プロセッサに対応して備えられる。このキャッシュメモリは共有メモリからアドレスが指定されて読出されたデータと指定されたアドレスとを含む情報が一時的に格納されるデータ領域を複数有する。キャッシュ装置は、バスを介して相互に入出力する。
【0040】
キャッシュ装置は、キャッシュメモリの対応するプロセッサの所定アドレス空間に該当するアドレスで指定されるデータが更新されたと検出したとき、該データが他のキャッシュメモリに格納されている場合には、該データを指定するためのアドレスを含む無効化要求をバスを介して出力する。そして、無効化要求をバスを介して他のキャッシュ装置から入力したとき、キャッシュメモリの入力した無効化要求のアドレスが格納されるデータ領域の内容を無効にする。
【0041】
なお、この所定アドレス空間は共有メモリにおいて、複数のプロセッサのそれぞれに対応して個別に割当てられて、複数プロセッサのうち対応するプロセッサにより最も頻繁にアクセスされるデータが格納される。
【0042】
したがって、あるキャッシュ装置は制御対象のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータが更新されて、該データが他のキャッシュメモリに格納されているときは、無効化要求をバスを介して出力するので、他のキャッシュメモリを制御するキャッシュ装置は該無効化要求をバス介して入力して、自己が制御するキャッシュメモリ(他のキャッシュメモリ)の該データのデータ領域の内容を無効にする。
【0043】
それゆえに、複数キャッシュメモリ間において、同一アドレスで指定されるデータが共有されている場合には、該アドレスを自己の所定アドレス空間に含むプロセッサに対応のキャッシュメモリを除く他のキャッシュメモリ全てにおいて、該アドレスのデータ領域の内容(アクセスされる可能性の低い内容)を無効にできるから、複数キャッシュメモリ間のデータ共有率を低くできる。このことから、従来のようなピンポン効果またはfalse sharingも回避できる、言いかえるとバスの通信量およびバスに関する消費電力なども削減できる。また、データ共有率を低減しながらも各キャッシュメモリにおいて対応プロセッサの所定アドレス空間のデータは常に最新の状態となるように更新されるから高めのヒット率を得ることもできる。
【0044】
またデータ領域の情報には対応のデータについて、該データの複数種類の状態を示す状態タグがさらに含まれて、複数種類の状態には、該データが複数のキャッシュメモリで共有されている状態が含まれてもよい。したがって、キャッシュ装置はデータの状態タグに基づいて該データが他のキャッシュメモリに格納されているか否か検出できる。
【0045】
上述のキャッシュ装置は、さらに次の特徴を有してもよい。つまり、データを更新するための更新要求を入力したとき、入力した更新要求のアドレスが対応のプロセッサの所定アドレス空間に該当すると検出したとき、キャッシュメモリの入力した更新要求のアドレスが格納されるデータ領域の内容を入力した更新要求に基づいて更新する。そして、対応のプロセッサによりキャッシュメモリの他のプロセッサの所定アドレス空間に該当するアドレスで指定されるデータが更新されたことを検出したとき、更新後のデータと該データを指定するためのアドレスとを含む更新要求をバスを介して出力する。
【0046】
したがって、あるキャッシュ装置は制御対象のキャッシュメモリにおいて、他のプロセッサの所定アドレス空間のデータが更新されたと検出したときは、更新要求をバスを介して出力するので、他のプロセッサに対応のキャッシュ装置は該更新要求を入力して、自己が制御するキャッシュメモリの該データを同様に更新する。
【0047】
それゆえに、複数プロセッサのそれぞれに対応のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータは、すなわち該プロセッサにより最も頻繁にアクセスされ得るデータは常に最新の状態となるように更新されるから、全てのキャッシュメモリにおいてデータのヒット率は高くなる。
【0048】
この発明に係るキャッシュ装置は次のように構成されてもよい。つまり、キャッシュ装置は複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するための該プロセッサに対応して備えられる。キャッシュメモリは共有メモリからアドレスが指定されて読出されたデータと指定されたアドレスとを含む情報が一時的に格納されるデータ領域を複数有する。キャッシュ装置は、バスを介して相互に入出力する。
【0049】
キャッシュ装置は、データを更新するための更新要求を入力したとき、入力した更新要求のアドレスが対応のプロセッサの所定アドレス空間に該当すると検出されたときは、キャッシュメモリの入力した更新要求のアドレスが格納されるデータ領域の内容を入力した更新要求に基づいて更新する。そして、キャッシュ装置は、対応のプロセッサによりキャッシュメモリの他のプロセッサの所定アドレス空間に該当するアドレスで指定されるデータが更新されたことが検出されたときは、更新後のデータと該データを指定するためのアドレスとを含む更新要求をバスを介して出力する。
【0050】
なお、この所定アドレス空間は、共有メモリにおいて、複数のプロセッサのそれぞれに対応して個別に割当てられて、複数プロセッサのうち対応するプロセッサにより最も頻繁にアクセスされるデータが格納される。
【0051】
したがって、あるキャッシュ装置は制御対象のキャッシュメモリにおいて、他のプロセッサの所定アドレス空間のデータが更新されたと検出しときは、更新要求をバスを介して出力するので、他のプロセッサに対応のキャッシュ装置は該更新要求を入力して、自己が制御するキャッシュメモリの該データを同様に更新する。
【0052】
それゆえに、複数プロセッサのそれぞれに対応のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータは、すなわち該プロセッサにより最も頻繁にアクセスされ得るデータは常に最新の状態となるように更新されるから、全てのキャッシュメモリにおいてデータのヒット率は高くなる。これに伴い、ミスヒットに起因して共有メモリからキャッシュメモリへデータが転送されるのを回避できるので、バスの通信量を少なくできる。
【0053】
上述のキャッシュ装置は、更新要求をバスを介して入力するか、または対応するプロセッサから入力するので、対応のプロセッサの所定アドレス空間のデータが他のプロセッサにより更新された場合でも、対応のプロセッサの所定アドレス空間のデータが該プロセッサにより更新された場合でも、対応のプロセッサにより最も頻繁にアクセスされ得るデータを常に最新の状態となるように更新できる。
【0054】
上述のキャッシュ装置に対応のプロセッサごとに、該プロセッサに対応の所定アドレス空間は、共有メモリにおいて連続していてもよい。
【0055】
したがって、プロセッサ毎の所定アドレス空間を一意に特定できるから、キャッシュ装置はあるデータのアドレスが対応プロセッサの所定アドレス空間に該当するか否かを簡単に検出できる。
【0056】
上述のキャッシュ装置に対応のプロセッサごとに、該プロセッサに対応の所定アドレス空間は、所定規則に従い共有メモリに割当てられてもよい。
【0057】
したがって、キャッシュ装置はあるデータのアドレスが対応プロセッサの所定アドレス空間に該当するか否かを所定規則に基づいて検出できる。
【0058】
上述のキャッシュ装置が制御するキャッシュメモリにおいてデータが更新されるごとに、共有メモリの該データも更新されるようにしてもよい。
【0059】
したがって、キャッシュメモリと共有メモリの内容の一致はライトスルーにより行われるから、常に両者の内容を一致させることができる。
【0060】
上述のキャッシュ装置は、次の特徴を有してもよい。つまりキャッシュ装置は対応のプロセッサによりキャッシュメモリの他のプロセッサの所定アドレス空間に格納されるデータが参照された場合に、該データに対応のデータ領域の内容が無効であるときは、該データを指定するためのアドレスを含むコピー要求をバスを介して出力する。そして、コピー要求をバスを介して入力して、入力したコピー要求のアドレスが対応のプロセッサの所定アドレス空間に該当すると検出したときは、キャッシュメモリの入力したコピー要求のアドレスが格納される該データ領域の内容を読出して、読出結果をバスを介してコピー要求を出力したキャッシュ装置に出力する。
【0061】
したがって、あるプロセッサにより他のプロセッサの所定アドレス空間のデータが参照されたとき、該データが無効であったとしても、この他のプロセッサに対応のキャッシュメモリの所定アドレス空間のデータが該プロセッサに対して参照のために供給される。それゆえに、データが供給されたプロセッサでは処理を中断させることなく実行できる。
【0062】
また、前述の複数種類の状態には上記の無効の状態が含まれてもよい。したがって、キャッシュ装置はデータの状態タグに基づいて無効か否かを検出できる。
【0063】
また、上記の読出結果が、読出された内容が無効であることを示すときは、コピー要求を出力したキャッシュ装置およびコピー要求を入力したキャッシュ装置のそれぞれは、共有メモリからコピー要求のアドレスで指定されるデータを読出してキャッシュメモリに格納するようにしてもよい。
【0064】
したがって、あるプロセッサにより他のプロセッサの所定アドレス空間のデータの参照されたとき、あるプロセッサに対応のキャッシュメモリおよび他のプロセッサに対応のキャッシュメモリにおいて該データが無効であったとしても、該データは速やかに共有メモリから両キャッシュメモリのそれぞれに転送される。
【0065】
それゆえに、あるプロセッサではキャッシュメモリを介して参照すべきデータが供給されるので処理を中断させることなく実行できる。また他のプロセッサでは、自己の所定アドレス空間のデータが対応のキャッシュメモリに格納されることになって、その後の該データについてのヒット率を高くできる。
【0066】
上述のキャッシュ装置は、共有メモリの所定アドレス空間ごとに対応して設けられたレジスタを参照するようにしてもよい。このレジスタには対応の所定アドレス空間が割当てられたプロセッサを示すためのプロセッサ割当て情報が格納される。
【0067】
したがって、キャッシュ装置はあるデータのアドレスが対応プロセッサの所定アドレス空間に該当するか否かを、該所定アドレス空間アドレス空間のレジスタのプロセッサ割当て情報に基づいて検出できる。
【0068】
上述のキャッシュ装置は、アドレスが、対応のプロセッサの所定アドレス空間に該当するか否かを、レジスタの参照結果に基づいて判別してもよい。
【0069】
上述のレジスタは、共有メモリのページ単位に設けられてもよいから、プロセッサ毎の所定アドレス空間の割り当てをページ単位で任意に行うことができる。
【0070】
上述のレジスタは、共有メモリのアドレス単位に設けられてもよいから、プロセッサ毎の所定アドレス空間の割り当てをアドレス単位で任意に行うことができる。
【0071】
上述のレジスタの内容は任意に可変設定されてもよいから、複数プロセッサにおいて実行される処理内容に応じて、最適となるようにレジスタ内容を設定できる。
【0072】
上述のレジスタの内容は、複数プロセッサにおけるプログラムに従う処理により設定されてもよい。たとえば、このプログラム中で各所定アドレス空間に関する情報を宣言しておくことで、所定アドレス空間が該プログラムの処理内容に対応して最適となるように予め確保できるから、該処理を高速に(効率よく)実行できる。
【0073】
上述のレジスタの内容は、複数プロセッサのそれぞれについて該レジスタに対応の所定アドレス空間をアクセスした回数をカウントするカウンタの内容に基づいて設定されてもよい。
【0074】
上述のレジスタの内容は、複数プロセッサにおけるプログラムに従い実行される処理の内容に応じて設定されるカウンタの内容に基づいて設定できる。それゆえに、プログラムの実行中に動的に各プロセッサに対応の所定アドレス空間が該プログラムの処理内容に対応して最適となるように確保できる。
【0075】
この発明のさらなる他の局面に係るキャッシュ装置は、複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに、複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するために該プロセッサに対応して備えられる。
【0076】
キャッシュメモリは共有メモリからアドレスが指定されて読出されたデータと指定されたアドレスとを含む情報が一時的に格納されるデータ領域を複数個有しする。キャッシュ装置はバスを介して相互に入出力する。キャッシュ装置は、複数個のデータ領域のうち格納するアドレスが該キャッシュメモリに対応のプロセッサのための所定アドレス空間に該当する1つ以上のデータ領域をアクセスするための専用アクセス部と、残りの1つ以上のデータ領域をアクセスする非専用アクセス部とを有する。
【0077】
専用アクセス部は、キャッシュメモリが設けられたプロセッサの所定アドレス空間に該当するアドレスで指定されるデータが更新されたと検出したとき、該データが他のキャッシュメモリに格納されている場合には、該データを指定するためのアドレスを含む無効化要求をバスを介して出力する。非専用アクセス部は、無効化要求をバスを介して入力したとき、残りデータ領域の入力した無効化要求のアドレスが格納されるデータ領域の内容を無効にする。この所定アドレス空間は共有メモリにおいて、複数のプロセッサのそれぞれに対応して個別に割当てられて、複数プロセッサのうち対応するプロセッサにより最も頻繁にアクセスされるデータが格納される。
【0078】
したがって、あるキャッシュ装置の専用アクセス部は制御対象のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータが更新されて、該データが他のキャッシュメモリに格納されているときは、無効化要求をバスを介して出力するので、他のキャッシュメモリを制御するキャッシュ装置の非専用アクセス部は該無効化要求をバス介して入力して、自己が制御するキャッシュメモリ(他のキャッシュメモリ)の該データのデータ領域の内容を無効にできる。
【0079】
それゆえに、複数キャッシュメモリ間において、同一アドレスで指定されるデータが共有されている場合には、該アドレスを自己の所定アドレス空間に含むプロセッサに対応のキャッシュメモリを除く他のキャッシュメモリ全てにおいて該アドレスのデータ領域の内容を無効にできるから、複数キャッシュメモリ間のデータの共有率を低くできる。このことから、従来のようなピンポン効果またはfalse sharingも回避できる、言いかえるとバスの通信量およびバスに関する消費電力なども削減できる。
【0080】
上述のキャッシュ装置は次のような特徴を有してもよい。つまり、専用アクセス部は、データを更新するための更新要求を入力したとき、入力した更新要求のアドレスが所定アドレス空間に該当すると検出したとき、キャッシュメモリの入力した更新要求のアドレスが格納されるデータ領域の内容を入力した更新要求に基づいて更新する。そして、非専用アクセス部は、対応のプロセッサにより残りデータ領域のデータが更新されたことを検出したとき、更新後のデータと該データを指定するためのアドレスとを含む更新要求をバスを介して出力する。
【0081】
したがって、あるキャッシュ装置の非専用アクセス部は制御対象のキャッシュメモリにおいて、他のプロセッサの所定アドレス空間のデータが更新されたと検出したときは、更新要求をバスを介して出力するので、他のプロセッサに対応のキャッシュ装置の専用アクセス部は該更新要求を入力して、自己が制御するキャッシュメモリの該データを同様に更新できる。
【0082】
それゆえに、複数プロセッサのそれぞれに対応のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータは、すなわち該プロセッサにより最も頻繁にアクセスされ得るデータは常に最新の状態となるように更新されるから、全てのキャッシュメモリにおいてデータのヒット率は高くなる。
【0083】
この発明に係るキャッシュ装置は次のように構成されてもよい。つまり、キャッシュ装置は複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに、複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するための該プロセッサに対応して備えられる。
【0084】
キャッシュメモリは前記共有メモリからアドレスが指定されて読出されたデータと指定されたアドレスとを含む情報が一時的に格納されるデータ領域を複数個有する。キャッシュ装置はバスを介して相互に入出力する。キャッシュ装置は専用アクセス部と非専用アクセス部とを有する。
【0085】
専用アクセス部は、キャッシュメモリの複数個のデータ領域のうち、格納するアドレスが該キャッシュメモリに対応のプロセッサのための所定アドレス空間に該当する1つ以上のデータ領域をアクセスし、非専用アクセス部は残りの1つ以上のデータ領域をアクセスする。
【0086】
専用アクセス部は、データを更新するための更新要求を入力したとき、入力した更新要求のアドレスが対応のプロセッサのための所定アドレス空間に該当すると検出したとき、キャッシュメモリの入力した更新要求のアドレスが格納されるデータ領域の内容を入力した更新要求に基づいて更新する。非専用アクセス部は、対応のプロセッサにより残りデータ領域のデータが更新されたことを検出したとき、更新後のデータと該データを指定するためのアドレスとを含む更新要求をバスを介して出力する。なお、所定アドレス空間は、共有メモリにおいて複数のプロセッサのそれぞれに対応して個別に割当てられて、複数プロセッサのうち対応するプロセッサにより最も頻繁にアクセスされるデータが格納される。
【0087】
したがって、あるキャッシュ装置の非専用アクセス部は制御対象のキャッシュメモリにおいて、他のプロセッサの所定アドレス空間のデータが更新されたと検出しときは、更新要求をバスを介して出力するので、他のプロセッサに対応のキャッシュ装置の専用アクセス部は該更新要求を入力して、自己が制御するキャッシュメモリの該データを同様に更新できる。
【0088】
それゆえに、複数プロセッサのそれぞれに対応のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータは、すなわち該プロセッサにより最も頻繁にアクセスされ得るデータは常に最新の状態となるように更新されるから、全てのキャッシュメモリにおいてデータのヒット率は高くなる。これに伴い、ミスヒットに起因して共有メモリからキャッシュメモリへデータが転送されるのを回避できるので、バスの通信量を少なくできる。
【0089】
また、各キャッシュメモリでは対応のプロセッサの所定アドレス空間のデータについてのアクセス処理が集中するけれども、各キャッシュ装置の専用アクセス部は対応プロセッサの所定アドレス空間についての制御に集中できるから、各キャッシュ装置はキャッシュメモリについて高速に制御できる。
【0090】
この発明のさらなる他の局面に係るキャッシュ方法はキャッシュ装置に適用される。このキャッシュ装置は複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに、複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するために該プロセッサに対応して備えられる。
【0091】
キャッシュメモリは共有メモリからアドレスが指定されて読出されたデータと指定されたアドレスとを含む情報が一時的に格納されるデータ領域を複数有する。キャッシュ装置は、バスを介して相互に入出力する。
【0092】
キャッシュ方法では、キャッシュメモリの対応するプロセッサの所定アドレス空間に該当するアドレスで指定されるデータが更新されたと検出されたとき、該データが他のキャッシュメモリに格納されている場合には、該データを指定するためのアドレスを含む無効化要求がバスを介して出力される。そして、無効化要求がバスを介して入力されたとき、キャッシュメモリの入力した無効化要求のアドレスが格納されるデータ領域の内容は無効される。
【0093】
なお、所定アドレス空間は共有メモリにおいて、複数のプロセッサのそれぞれに対応して個別に割当てられて、複数プロセッサのうち対応するプロセッサにより最も頻繁にアクセスされるデータが格納される。
【0094】
したがって、あるキャッシュ装置では制御対象のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータが更新されて、該データが他のキャッシュメモリに格納されているときは、無効化要求がバスを介して出力されるので、他のキャッシュメモリを制御するキャッシュ装置では該無効化要求はバス介して入力されて、自己が制御するキャッシュメモリ(他のキャッシュメモリ)の該データのデータ領域の内容は無効にされる。
【0095】
それゆえに、複数キャッシュメモリ間において、同一アドレスで指定されるデータが共有されている場合には、該アドレスを自己の所定アドレス空間に含むプロセッサに対応のキャッシュメモリを除く他のキャッシュメモリ全てにおいて該アドレスのデータ領域の内容を無効にできるから、複数キャッシュメモリ間のデータの共有率を低くできる。このことから、従来のようなピンポン効果またはfalse sharingも回避できる、言いかえるとバスの通信量およびバスに関する消費電力なども削減できる。
【0096】
上述のキャッシュ方法はさらに次のような特徴を有してもよい。つまり、キャッシュ方法によれば、データを更新するための更新要求が入力されたとき、入力された更新要求のアドレスが対応のプロセッサの所定アドレス空間に該当すると検出されたとき、キャッシュメモリの入力した更新要求のアドレスが格納されるデータ領域の内容は入力した更新要求に基づいて更新される。そして、対応のプロセッサによりキャッシュメモリの他のプロセッサの所定アドレス空間に該当するアドレスで指定されるデータが更新されたことが検出されたとき、更新後のデータと該データを指定するためのアドレスとを含む更新要求はバスを介して出力される。
【0097】
したがって、あるキャッシュ装置の制御対象のキャッシュメモリにおいて、他のプロセッサの所定アドレス空間のデータが更新されたと検出しときは、更新要求をバスを介して出力するので、他のプロセッサに対応のキャッシュ装置では該更新要求が入力されて、該キャッシュ装置が制御するキャッシュメモリの該データは同様に更新される。
【0098】
それゆえに、複数プロセッサのそれぞれに対応のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータは、すなわち該プロセッサにより最も頻繁にアクセスされ得るデータは常に最新の状態となるように更新されるから、全てのキャッシュメモリにおいてデータのヒット率は高くなる。これに伴い、ミスヒットに起因して共有メモリからキャッシュメモリへデータが転送されるのを回避できるので、バスの通信量を少なくできる。
【0099】
この発明に係るキャッシュ方法は、キャッシュ装置に適用されて次のように構成されてもよい。このキャッシュ装置は複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するために該プロセッサに対応して備えられる。
【0100】
このキャッシュメモリは共有メモリからアドレスが指定されて読出されたデータと指定されたアドレスとを含む情報が一時的に格納されるデータ領域を複数有する。キャッシュ装置は、バスを介して相互に入出力する。
【0101】
キャッシュ方法によれば、データを更新するための更新要求が入力されたとき、入力された更新要求のアドレスが対応のプロセッサの所定アドレス空間に該当すると検出されたとき、キャッシュメモリの入力した更新要求のアドレスが格納されるデータ領域の内容は入力した更新要求に基づいて更新される。そして、対応のプロセッサによりキャッシュメモリの他のプロセッサの所定アドレス空間に該当するアドレスで指定されるデータが更新されたことが検出されたとき、更新後のデータと該データを指定するためのアドレスとを含む更新要求はバスを介して出力される。
【0102】
なお、所定アドレス空間は、共有メモリにおいて、複数のプロセッサのそれぞれに対応して個別に割当てられて、複数プロセッサのうち対応するプロセッサにより最も頻繁にアクセスされるデータが格納される。
【0103】
したがって、あるキャッシュ装置の制御対象のキャッシュメモリにおいて、他のプロセッサの所定アドレス空間のデータが更新されたと検出しときは、更新要求をバスを介して出力するので、他のプロセッサに対応のキャッシュ装置では該更新要求が入力されて、該キャッシュ装置が制御するキャッシュメモリの該データは同様に更新される。
【0104】
それゆえに、複数プロセッサのそれぞれに対応のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータは、すなわち該プロセッサにより最も頻繁にアクセスされ得るデータは常に最新の状態となるように更新されるから、全てのキャッシュメモリにおいてデータのヒット率は高くなる。これに伴い、ミスヒットに起因して共有メモリからキャッシュメモリへデータが転送されるのを回避できるので、バスの通信量を少なくできる。
【0105】
【発明の実施の形態】
以下、この発明の各実施の形態について図面を参照し詳細に説明する。各実施の形態ではマルチプロセッサシステムは4つのプロセッサを含むとしているが、含まれるプロセッサ台数は2台以上であれば、これに限定されない。
【0106】
(実施の形態1)
図1には、この発明の実施の形態1におけるキャッシュ一致プロトコルに従う状態遷移が示されて、図2には、本実施の形態1におけるマルチプロセッサシステムの概略構成が示されて、図3には、本実施の形態1におけるキャッシュ装置の構成が周辺部と関連づけて示される。
【0107】
図2においてマルチプロセッサシステム1はそれぞれがCPU(中央処理装置)を含むプロセッサPA、PB、PCおよびPD、これらプロセッサのそれぞれに対して接続されたキャッシュ装置CA、CB、CCおよびCD、共有バス2、および共有メモリ4を含む主記憶装置3を備える。このマルチプロセッサシステム1ではキャッシュスヌープが採用されている。ここでは、キャッシュラインと区別するために、共有メモリ4の1回のアドレス指定によりアクセスされる領域をメモリラインと呼ぶ。
【0108】
共有メモリ4上に各メモリラインが、マルチプロセッサシステム1内のいずれのプロセッサから頻繁にアクセスされるかが予めわかっていると想定して、共有メモリ4上においてあるプロセッサが最も頻繁にアクセスするデータが格納される領域を、該プロセッサの責任領域と呼ぶ。本実施の形態1では、図2に示されるように共有メモリ4上において、先頭からプロセッサPA、PB、PCおよびPDのそれぞれについての連続した責任領域10A、10B、10Cおよび10Dが順に割付けられている。
【0109】
キャッシュ装置CA、CB、CCおよびCDそれぞれは同様の構成を有するので、ここではキャッシュ装置CAについて説明する。図3を参照して、キャッシュ装置CAは、キャッシュコントローラ5およびキャッシュメモリ6を含む。キャッシュコントローラ5はプロセッサIF(インターフェイスの略)7、キャッシュメモリ6をアクセスするキャッシュ制御管理部8、バスIF9、ライン状態管理部11、責任領域判定部12およびキャッシュIF13を含む。共有バス2は、キャッシュ装置間のデータ通信のためのキャッシュ間通信線20と各キャッシュ装置と主記憶装置3間の通信のためのシステムバス21を含む。
【0110】
キャッシュメモリ6は複数のキャッシュライン18を有する。キャッシュライン18はタグ14とデータ15を含む。タグ14は該キャッシュライン18の図1に示されるプロトコルに従う状態を示す状態タグ16と該キャッシュライン18に対応のアドレスを示すアドレスタグ17を含む。キャッシュメモリ6がアクセス要求に基づいてキャッシュ制御管理部8によりアドレス指定されるとき、指定されたアドレスに一致するアドレスを示すアドレスタグ17が存在することを、アドレスヒットと呼び、存在しないことをアドレスミスヒットと呼ぶ。
【0111】
プロセッサIF7は対応のプロセッサPAとキャッシュコントローラ5とを接続する。バスIF9はキャッシュコントローラ5とシステムバス21とを接続する。キャッシュIF13はキャッシュコントローラ5とキャッシュ間通信線20とを接続する。キャッシュ制御管理部8はプロセッサIF7を介したプロセッサAからのアクセス要求またはキャッシュIF13を介した他のプロセッサからのアクセス要求があったとき、与えられる情報に基づいてキャッシュメモリ6の該アクセス要求に基づいて指定されるアドレスタグ17に対応のキャッシュライン18の内容をアクセス(参照(読出)または書込)する。
【0112】
ライン状態管理部11は、アクセス要求があったとき該アクセス要求に基づいて指定されるアドレスタグ17に対応のキャッシュライン18の状態タグ16で示されるべき状態を、図1に示されるプロトコルに従って決定する。責任領域判定部12は、アクセス要求があったとき該アクセス要求に基づいて指定されるアドレスが対応するプロセッサの責任領域内か外かを判定する。
【0113】
キャッシュ一致プロトコルに従いキャッシュライン18の状態が、すなわち対応の状態タグ16の値がどのように遷移するかが図1に示される。図1を参照してキャッシュライン18の状態タグ16はデフォルトとして“I”(invalid)をとり、該キャッシュライン18へのアクセスの態様(アクセス要求の種類)に従い“EO”(Exclusive owner)、“SO”(Shared owner)および“SN”(Shared non-owner)のいずれかの状態に遷移する。
【0114】
状態タグ16が“I”であるとき、対応のキャッシュライン18の内容は保証されないことを示す。状態タグ16が“SO”であるとき、対応のキャッシュライン18の内容(コピー)は複数のプロセッサ(キャッシュメモリ6)間で共有されている状態であり、該キャッシュライン18のオーナーは対応のキャッシュメモリ6であることを示す。状態タグ16が“EO”であるとき、対応のキャッシュライン18の内容(コピー)は複数のプロセッサ(キャッシュメモリ6)間で共有されていない状態であり、該キャッシュライン18のオーナーは対応するキャッシュメモリ6であることを示す。状態タグ16が“SN”であるとき、対応のキャッシュライン18の内容(コピー)は複数のプロセッサ(キャッシュメモリ6)間で共有されている状態であり、該キャッシュライン18のオーナーは対応のキャッシュメモリ6ではなく、他のキャッシュメモリ6または共有メモリ4であることを示す。
【0115】
プロセッサが出力するアクセス要求が自己の責任領域内を対象としてなされたときは、状態は図1の“責任領域をアクセスする場合”において遷移するが、自己の責任領域以外を対象としてなされたときは、図1の“責任領域以外をアクセスする場合”において遷移する。図1を参照してキャッシュライン18についてアクセスの態様は、該キャッシュライン18のキャッシュ装置に接続されたプロセッサから該キャッシュライン18についての読出および書込を示すアクセスpRおよびpW、ならびに該キャッシュライン18について共有バス2を経由して他のプロセッサ(他のキャッシュコントローラ5)による読出および書込を示すアクセスbRおよびbWに分類される。図1では、アクセスp(R/W)はアクセスpRまたはpWを示し、アクセスb(R/W)はアクセスbRまたはbWを示し、アクセスpR/b(R/W)はアクセスpRまたはbRまたはbWを示し、アクセスp(R/W)/bRはアクセスpRまたはbWまたはbRを示す。
【0116】
図4〜図12には図1の状態遷移に従い動作した場合に、アクセスの対象となるキャッシュライン18の状態タグ16の値がどのように遷移するかが模式的に示されている。
【0117】
ここで、図3のライン状態管理部11を用いたキャッシュライン18の状態タグ16の更新処理について説明する。キャッシュ制御管理部8はプロセッサIF7またはキャッシュIF13からアクセス要求を入力すると、該アクセス要求に含まれるアドレスを責任領域判定部12に与えるとともに、該アクセス要求の種別(アクセスpR、pW、bR、bWの別)を判定して、判定結果を示すアクセス種別情報をライン状態管理部11に与える。このときキャッシュ制御管理部8は入力したアクセス要求に基づいてキャッシュメモリ6をアクセスして、アドレスヒットすれば、アドレスヒットしたキャッシュライン18の状態タグ16を読出してライン状態管理部11に与える。責任領域判定部12は、与えられるアドレスは対応のプロセッサの責任領域内に該当するか責任領域外に該当するか判定して、判定結果を示す領域判定情報をキャッシュ制御管理部8に出力する。キャッシュ制御管理部8は責任領域判定部12から与えられた領域判定情報を入力してライン状態管理部11に与えるので、ライン状態管理部11はキャッシュ制御管理部8から与えられたアクセス種別情報、状態タグ16および領域判定情報に基づいて、図1に従い遷移すべき次の状態を決定して、決定した状態を示す状態データをキャッシュ制御管理部8に与える。キャッシュ制御管理部8は与えられた状態データをアドレスヒットしたキャッシュライン18に対応の状態タグ16に書込んで、該状態タグ16の値を更新をする。以下、これを状態更新処理と呼ぶ。このときキャッシュ制御管理部8は、該キャッシュライン18のデータ15をアクセス要求に基づいてアクセス(読出または書込)する。なお、キャッシュ制御管理部8は、状態データが予め読み出されていた状態タグ16の値と一致するときは、状態タグ16の更新は省略するようにしてもよい。
【0118】
また、キャッシュ制御管理部8はキャッシュIF13からアクセス要求を入力したときは、入力した該アクセス要求のアドレスについての責任領域判定部12の領域判定情報に基づいて、自己あてのものであるか否か判定する。具体的には、領域判定情報が責任領域内を示すときは自己宛てのものと判定し、責任領域外を示すときは自己宛てのものでないと判定する。
【0119】
図1で示されるキャッシュ一致プロトコルに従う具体的動作を説明する。まず、プロセッサが所定のアドレスについてのアクセス要求を出力した場合について図4〜図12を参照しながら説明する。
【0120】
責任領域のアドレスを参照(読出し)する場合において、プロセッサPAは責任領域10Aのアドレスを参照するアクセス要求をキャッシュ装置CAに出力したとする。このアクセス要求はプロセッサIF7を介してキャッシュ制御管理部8に与えられる。このとき、アクセス要求に基づいてアドレスヒットしたキャッシュライン18の状態タグ16が“I”を示すとき、キャッシュ制御管理部8はバスIF9およびシステムバス21を介して共有メモリ4の責任領域10Aから、アクセス要求のアドレスに対応のメモリラインを読出して、キャッシュメモリ6の先ほどアドレスヒットしたキャッシュライン18に書込む。このとき、前述したような状態更新処理が行なわれるので、該キャッシュライン18の状態タグ16は“I”→“EO”に更新される(図4参照)。ここで、共有メモリ4から読出されてキャッシュメモリ6のキャッシュライン18に書込まれた内容を“コピー”と呼ぶ。
【0121】
次に、責任領域以外のアドレスが参照される場合について説明する。プロセッサPBが自己の責任領域10B以外の領域に該当のアドレスを参照するためのアクセス要求、たとえば、プロセッサPAの責任領域10Aのアドレスを参照するアクセス要求を出力したと想定する。このとき、該アクセス要求はキャッシュ装置CBに出力されるので、キャッシュ装置CBのキャッシュ制御管理部8は、キャッシュメモリ6の該アクセス要求に基づいてアドレスヒットしたキャッシュライン18の状態タグ16を読出す。読出された状態タグ16は“I”であるとする。キャッシュ制御管理部8は、読出された状態タグ16は“I”を示して、かつ責任領域判定部12から入力する領域判定情報は責任領域外を示すので、該アクセス要求のアドレスに対応のコピーを要求することを指示するコピーリクエスト信号をキャッシュIF13を介して出力する。
【0122】
このコピーリクエスト信号はキャッシュ間通信線20を介して送信されるので、他のキャッシュ装置CA、CCおよびCDそれぞれのキャッシュ制御管理部8は、該コピーリクエスト信号をキャッシュIF13を介して受信する。受信したコピーリクエスト信号で示されるアドレスが自己の責任領域内に該当すると判断したキャッシュ装置の、すなわちキャッシュ装置CAのキャッシュ制御管理部8は、受信したコピーリクエスト信号のアドレスに基づいてアドレスヒットするか否か、すなわちキャッシュメモリ6にコピーが存在するか否か判定する。もし、アドレスヒットして、コピーの状態タグ16が“EO”であればり、キャッシュ装置CAのキャッシュ制御管理部8は該コピー(データ15)を読出して、読出されたコピーとともに該コピーリクエスト信号に対する応答信号を要求元のキャッシュ装置CBに送信する。
【0123】
このとき、キャッシュ装置CAでは、受信したコピーリクエスト信号をアクセス要求として処理するので、コピーに対応のキャッシュライン18の状態タグ16は前述した状態更新処理により“EO”→“SO”に更新される。キャッシュ装置CBのキャッシュ制御管理部8は、キャッシュ装置CAからの応答信号とともにコピーを受信して、受信したコピーをキャッシュメモリ6の先ほどアドレスヒットしたキャッシュライン18に書込む。このとき、状態更新処理が行なわれるので、該キャッシュライン18の状態タグ16は“I”→“SN”に更新される(図5参照)。
【0124】
プロセッサPBが責任領域10B以外、たとえばプロセッサPCの責任領域10Cのアドレスを参照するアクセス要求を出力したと想定する。このとき、該アクセス要求はキャッシュ装置CBに与えられるので、キャッシュ装置CBのキャッシュ制御管理部8は、キャッシュメモリ6の該アクセス要求に基づいてアドレスヒットしたキャッシュライン18の状態タグ16を読出す。読出された状態タグ16は“I”を示すとする。キャッシュ制御管理部8は、読出された状態タグ16は“I”を示して、かつ責任領域判定部12から入力する領域判定情報は責任領域外を示すので、コピーリクエスト信号を出力する。
【0125】
このコピーリクエスト信号はキャッシュ間通信線20を介して送信されるので、他のキャッシュ装置CA、CCおよびCDそれぞれのキャッシュ制御管理部8は、該コピーリクエスト信号を受信する。キャッシュ装置CCのみが該アドレスは自己宛てのものと判断するので、キャッシュ装置CCのキャッシュ制御部8は、受信したコピーリクエスト信号で示されるアドレスに基づいてアドレスヒットするか否か、すなわち対応のキャッシュメモリ6にコピーが存在するか否か判定する。このとき、キャッシュ制御部8はコピーが存在しないと判定したとすると、コピーが存在しない旨の応答信号を要求元のキャッシュ装置CBに送信する。
【0126】
キャッシュ装置CBのキャッシュ制御管理部8は該応答信号を受信したとき、先ほど入力したアクセス要求のアドレスに基づいて、共有メモリ4をアクセスして読出したメモリライン(コピー)を、対応のキャッシュメモリ16の先ほどアドレスヒットしたキャッシュライン18に書込む。このとき、前述の状態更新処理が行なわれるので、コピーが書込まれたキャッシュライン18の状態タグ16は“I”→“SN”に更新される。一方、キャッシュ装置CCのキャッシュ制御管理部8は応答信号を送信すると、キャッシュ装置CBの場合と同様にして、共有メモリ4から読出したコピーを、対応のキャッシュメモリ16の先ほどアドレスヒットしたキャッシュライン18に書込む。このとき、前述の状態更新処理が行なわれるので、コピーが書込まれたキャッシュライン18の状態タグ16は “I”→“SO”に更新される(図6参照)。
【0127】
次に、プロセッサが所定アドレスへの書込のためのアクセス要求を出力した場合について説明する。まず、プロセッサPAが責任領域10Aのアドレスに対応し、かつ状態タグ16が“I”のキャッシュライン18に書込むためのアクセス要求を出力した場合を想定する。この場合には、キャッシュ装置CAのキャッシュ制御管理部8は該アクセス要求をプロセッサIF7を介して入力すると、入力したアクセス要求に基づいてアドレスヒットしたキャッシュライン18にデータ15を書込む。このとき、データ15が書込まれたキャッシュライン18について前述の状態更新処理が行なわれる。その結果、該キャッシュライン18の状態タグ16は“I”→“EO”に更新される(図7参照)。この場合のアクセス要求に関しては共有バス2は使用されていない。
【0128】
次に、プロセッサPBが責任領域10B以外のアドレスに、たとえば責任領域10Aのアドレスに書込むためのアクセス要求を出力した場合について説明する。該アクセス要求を入力したキャッシュ装置CBはキャッシュメモリ6の該アクセス要求に基づいてアドレスヒットしたキャッシュライン18にデータ15を書込む。このとき、該キャッシュライン18の状態タグ16が“I”であるとする。状態更新処理が行なわれて、この状態タグ16は“I”→“SN”に更新される。その後、キャッシュ制御管理部8は責任領域判定部12から与えられた領域判定情報が“責任領域外”を示すので、該データの更新を要求するために、入力したアクセス要求をキャッシュ間通信線20を介して送信すると、他のキャッシュ装置はこれを受信する。
【0129】
他のキャッシュ装置のうちキャッシュ装置CAでのみアドレスヒットしたとする。キャッシュ装置CAのキャッツシュ制御管理部8はアドレスヒットしたキャッシュライン18に該アクセス要求に基づいてデータ15を書込む。このとき、キャッシュ装置CAにおいても状態更新処理が行なわれる。データ書込が行なわれたキャッシュライン18の状態タグ16が“I”であったとすれば、該状態タグ16は“I”→“SO”に更新される(図8参照)。
【0130】
上述の場合において、キャッシュ装置CAでアドレスヒットしたキャッシュライン18に対応の状態タグ16が“I”ではなくて“SO”であった場合は、プロセッサPAおよびPBの他にも該キャッシュライン18のコピーを共有しているプロセッサが存在することを示す。たとえば、プロセッサPCもプロセッサPAおよびPBとともに該コピーを共有しているとすれば、キャッシュ装置CCにおいてもアドレスヒットして、アドレスヒットしたキャッシュライン18について状態更新処理が行なわれるから、対応の状態タグ16は“SN”→“I”に更新される(図9参照)。
【0131】
図5、図6、図8および図9のように、その後も他のプロセッサ(たとえば、プロセッサPB)で参照される可能性の高い変数(キャッシュライン18)の状態は“SN”とされる。それゆえに、責任領域内に該当の変数が他のプロセッサで参照される場合にキャッシュヒット率は向上して、共有バス2の利用を回避できる。また、図9の場合には責任領域内のデータについての共有率を低減することができる。
【0132】
プロセッサPAが責任領域10Aに該当のアドレスにデータを書込むためのアクセス要求を出力した場合について説明する。このとき、該アクセス要求に基づいてアドレスヒットしたキャッシュライン18の状態タグ16が“EO”であったとする。この場合には、共有バス2は使用されず、該キャッシュライン18にデータ15が書込まれて、対応の状態タグ16は状態更新処理により“EO”のままである(図10参照)。
【0133】
上述した図10の例では、アクセス要求に従いデータ15が書込まれるキャッシュライン18の状態タグ16は“EO”であったが、“SO”であった場合について次に説明する。このとき、該キャッシュライン18のコピーをプロセッサPBが共有していたとする。この場合には、キャッシュ装置CAでは該キャッシュライン18にデータ15が書込まれるとともに、対応の状態タグ16は状態更新処理により“SO”→“EO”となる。他のキャッシュメモリで共有されている該キャッシュライン18のコピーの無効を要求するために、このアクセス要求は、キャッシュ装置CAからキャッシュ間通信線20を介して送信される。キャッシュ装置CBのキャッシュ制御管理部8は該アクセス要求をキャッシュ間通信線20を介して受信して、受信したアクセス要求に基づいてアドレスヒットしたキャッシュライン18に、受信したアクセス要求に基づきデータ15を書込む。このとき、該キャッシュライン18に対応の状態タグ16は状態更新処理により“SN”→“I”に更新されるのでデータの共有状態は解消される(図11参照)。
【0134】
次に、プロセッサPBが責任領域10B以外の領域、たとえば責任領域10Aに該当のアドレスに書込むためのアクセス要求を出力した場合について説明する。このとき該アクセス要求に基づいてアドレスヒットしたキャッシュライン18のコピーはキャッシュ装置CA、CBおよびCCにより共有されており、このコピー(キャッシュライン18)の状態タグ16はキャッシュ装置CBとCCでは“SN”であり、キャッシュ装置CAでは“SO”あったと想定する。
【0135】
この場合は、キャッシュ装置CBではプロセッサPBから入力したアクセス要求に基づいてアドレスヒットしたキャッシュライン18についてデータ15が書込まれる。該キャッシュライン18は、その後もプロセッサPBにより参照される可能性が高いので、該キャッシュライン18の状態タグ16は状態更新処理により“SN”のままとされる。また、このアクセス要求はキャッシュ装置CBからキャッシュ間通信線20を経由して送信されて、他のキャッシュ装置それぞれにおいて受信される。キャッシュ装置CAおよびCCそれぞれでは、受信したアクセス要求に基づいアドレスヒットした対応のコピー(キャッシュライン18)は更新されるとともに、状態更新処理により該コピーに対応の状態タグ16も更新される。その結果、キャッシュ装置CAではコピーに対応の状態タグ16は“SO”のままであるが、キャッシュ装置CCでは該コピーは参照される可能性が低いので“SN”→“I”に更新されて、データ共有率は低下する(図12参照)。なお、図12ではキャッシュ装置CBのコピーの状態タグ16は“SN”のままとしているが、キャッシュメモリ6間におけるデータ(コピー)の共有率をより低減させるために、キャッシュ装置CCのコピーと同様に“I”に更新されるとしてもよい。
【0136】
各キャッシュ装置により責任領域内のキャッシュライン18がキャッシュメモリ6から追い出される場合は、ライトバック方式に従い次のように行なわれる。該キャッシュライン18の状態タグ16が“EO”である場合は、該キャッシュライン18の内容は共有メモリ4に書き戻されて、状態タグ16が“SO”の場合は、その内容は共有メモリ4に書き戻されるとともに、他のキャッシュメモリ6それぞれにおいて共有されているコピー(キャッシュライン18)の状態タグ16は“SN”→“I”に更新される。追い出されるキャッシュライン18は、不要となったものであり、たとえばLRU(least recently used)に従い特定されてもよい。
【0137】
このように頻繁にアクセスされる、すなわち責任領域内のキャッシュライン18はライトバック方式にて処理されるから、ライトスルー方式に比較して共有メモリ4のアクセス頻度(共有バス2の利用頻度)を低減できる。
【0138】
ここでは、プロセッサの責任領域それぞれは共有メモリ4上の連続したアドレス空間に配置されているから、各プロセッサがあるアドレスについてアクセスしたときに、どのプロセッサの責任領域であるかは、該アドレスの上位2ビットで判断できるから責任領域判定部12の構成を簡単化できるとともに判定を速やかに行うことができる。あるプロセッサが頻繁にアクセスする領域を共有メモリ4上で連続させるための処理は、オペレーティングシステムなどのような変数のアドレスを決めるソフトウェアやプログラマーにより行なわれる。
【0139】
本実施の形態では、上述したように、あるプロセッサの責任領域内のキャッシュライン18は、他のプロセッサによって対応のコピーについて書込がなされた場合には、直ちに更新されるので、その後アクセスする可能性が高い責任領域内のキャッシュライン18に対してはヒット率が向上する。また、キャッシュライン18(コピー)が複数のキャッシュ装置間で共有されている場合に、あるコピーにデータ15の書込みが行われると、書込みがなされた該コピーを自己の責任領域内に置くプロセッサについてのみ該コピー(キャッシュライン18)は有効とされて、他のプロセッサについては該コピーは無効(“I”)とされる。このように、その後アクセスされる可能性の低い責任領域以外のキャッシュライン18(コピー)は無効化されるので、データの共有率を下げることができる。したがって、従来のようなピンポン効果やFalse Sharingなどのような共有バス2を介した無駄な通信が削減でき、共有バス2に関する消費電力も低減できる。
【0140】
(実施の形態2)
実施の形態1では責任領域10A、10B、10Cおよび10Dのそれぞれは、共有メモリ4の連続したアドレス空間に設定されていたが、図13に示されるように設定されてもよい。
【0141】
図13では共有メモリ4においてメモリラインのグループ19が複数個連続して配置されている。グループ19のそれぞれでは先頭から責任領域10A、10B、10Cおよび10Dのメモリラインが順に並んでいる。図13のような責任領域の並びが採用される場合には、プロセッサがあるアドレスについてのアクセス要求を出力した場合には、責任領域判定部12は該アドレスが自己の責任領域に該当するか否か、または該アドレスがいずれの責任領域に該当するか否かを該アドレスの下位2ビットで判定できるから、責任領域判定部12の回路構成を簡単にして小型化できる。具体的には図13に示されるように下位2ビットが“00”の場合は責任領域10A、“01”の場合は責任領域10B、“10”の場合は責任領域10Cおよび“11”の場合は責任領域10Dとそれぞれ判定できる。
【0142】
(実施の形態3)
責任領域判定部12は、図14に示されるようなアドレス変換回路40を有してもよい。本実施の形態では責任領域10A、10B、10Cおよび10Dは図14に示されるアドレス変換回路40によって変換されて決定された共有メモリ4のアドレス(領域)に配置される。図14において、ビットa_2,ビットa_1およびビットa_0はアドレス変換回路40に入力される変換前のアドレスの下位3ビットを示し、ビットa′_2、ビットa′_1およびビットa′_0はアドレス変換回路40から出力される変換後のアドレスの下位3ビットを示す。プロセッサがあるアドレスのアクセス要求を出力したときに、該アドレスがいずれのプロセッサの責任領域に該当するかは、図14に示されるアドレス変換回路40によって変換されたアドレスの下位2ビットを用いて判断される。図15には図14のアドレス変換回路40を用いた場合の共有メモリ4における責任領域10A、10B、10Cおよび10Dの配置例が示される。
【0143】
(実施の形態4)
本実施の形態では、プロセッサがあるアドレスについてのアクセス要求を出力したとき、該アドレスが責任領域内に該当するか否かは後述の主記憶装置31が有する後述の複数のレジスタ32に格納された値に基づいて判断される。本実施の形態では、これらレジスタ32それぞれには予め決められた値が格納されていると想定する。
【0144】
図16は、本実施の形態4に係るマルチプロセッサシステム1Aの構成図である。マルチプロセッサシステム1Aはマルチプロセッサシステム1の主記憶装置3に代替して主記憶装置31を備える。図16では、プロセッサPCおよびPDおよびキャッシュ装置CCおよびCDは省略されているけれども、キャッシュ装置CCおよびCDも図16のキャッシュ装置CAおよびCBと同様な構成を有する。図16のキャッシュ装置CAおよびCBは同様な構成を有する。キャッシュ装置CA(CB)は、キャッシュコントローラ5において責任領域判定部12に代替して責任領域判定部23を有するが、他の構成は前述したものと同様である。主記憶装置31では、共有メモリ4のページごとに個別にレジスタ32が設けられる。レジスタ32の値が“00”であれば、対応のページは責任領域10Aであり、同様に“01”であれば責任領域10Bであり、“10”であれば責任領域10Cであり、“11”であれば責任領域10Dであることが示される。
【0145】
図16では、キャッシュコントローラ5はキャッシュ間通信線/システムバス22を介して他のキャッシュ装置および主記憶装置31に接続される。キャッシュコントローラ5のキャッシュ制御管理部8は対応のプロセッサから共有メモリ4のアドレスについてのアクセス要求を入力して、該アドレスに基づいて共有メモリ4を参照する。この参照時に該アドレスに対応のレジスタ32の内容が読出されて、システムバス21を介して責任領域判定部23に与えられる。責任領域判定部23は与えられた内容を共有メモリ4のページ毎に図示されない内部メモリに記憶する。したがって、責任領域判定部23は、アクセス要求のアドレスは対応プロセッサの責任領域に該当するか否か、またはいずれの責任領域に該当するかを内部メモリの記憶内容に基づいて判定することができる。
【0146】
ここでは、レジスタ32は共有メモリ4のページごとに設けられているから、共有メモリ4において各プロセッサの責任領域をページごとに配置できる。言い換えると、各プロセッサの責任領域を連続させなければならない、各プロセッサの責任領域を所定順序付けして並べなければならないという制約がなくなるから、マルチプロセッサシステム1Aで実行されるソフトウェア設計についての自由度は向上する。
【0147】
なお、ここでは、レジスタ32は、ページ単位に設けられるとしたが、共有メモリ4のメモリライン単位、またはアドレス単位で設けられるようにしてもよい。
【0148】
(実施の形態5)
上述した実施の形態4でレジスタ32の内容は予め決められており固定であるとしているが、本実施の形態では可変に設定される。
【0149】
本実施の形態では、マルチプロセッサシステム1でプログラムが実行されている期間において、レジスタ32に対応のページ(メモリライン、アドレス)を最も多くアクセスしたプロセッサが検出されると、該レジスタ32の値は検出されたプロセッサの責任領域を示す値に更新される。
【0150】
図17の本実施の形態5に係るマルチプロセッサシステム1Bでは、プロセッサPCおよびPDおよびキャッシュ装置CCおよびCDの図示は省略されているが、キャッシュ装置CCおよびCDも図17のキャッシュ装置CAおよびCBのそれぞれと同様の構成を有する。マルチプロセッサシステム1Bは主記憶装置3に代替して主記憶装置33を有する。
【0151】
キャッシュ装置CA(CB)では、図1の責任領域判定部12に代替して責任領域判定部24を有するが、他の構成は前述と同様である。また、各キャッシュ装置はキャッシュ間通信線/システムバス22を介して他のキャッシュ装置および主記憶装置33と通信する。
【0152】
主記憶装置33は、図17に示されるように、共有メモリ4、共有メモリ4のページごとに設けられたレジスタ32ならびにアクセス回数カウンタCPA、CPB、CPCおよびCPD、レジスタ制御部34およびプロセッサ判定部35を備える。アクセス回数カウンタCPA、CPB、CPCおよびCPDそれぞれはプロセッサPA、PB、PCおよびPDそれぞれに対応して設けられている。これらのアクセス回数カウンタは同様な構成を有して対応のページについてアクセスされたとき、対応のアクセス要求に基づいて判定された該アクセス要求元のプロセッサに対応して設けられたアクセス回数カウンタのみ値がインクリメントされる。したがって、あるページに対応のアクセス回数カウンタCPA、CPB、CPCおよびCPDのうち、該ページについて最も頻繁にアクセスしたプロセッサに対応するものの値が最大となる。
【0153】
レジスタ制御部34は定期的に共有メモリ4のページごとのレジスタ32の値を更新する。具体的には、レジスタ制御部34はあるページのレジスタ32の値を更新する場合には、該ページに対応のアクセス回数カウンタCPA、CPB、CPCおよびCPDそれぞれの値を読出してプロセッサ判定部35に与えるので、プロセッサ判定部35は与えられたこれら値に基づいて、最大値であるアクセス回数カウンタに対応のプロセッサを判定して判定結果をレジスタ制御部34に与える。レジスタ制御部34は与えられた判定結果に基づいて、該ページに対応のレジスタ32の内容を更新する。その結果、該レジスタ32の値は、対応するページを最も頻繁にアクセスするプロセッサの責任領域であることを示す。
【0154】
なお、レジスタ32のレジスタ制御部34による値の更新と、対応ページのアクセス、すなわち該レジスタ32の参照とは排他的に行なわれる。
【0155】
ここでは、レジスタ32、アクセス回数カウンタCPA、CPB、CPCおよびCPDは共有メモリ4のページ単位に設けられるとしているが、メモリライン単位またはアドレス単位に設けられてもよい。
【0156】
このように、本実施の形態では、レジスタ32の値は動的に更新されるのでキャッシュライン18のプロトコル(状態遷移)を動的に変更することができる。レジスタ32の値が動的に更新されることにより、マルチプロセッサシステム1Bで実行される処理(プログラム)の内容に応じて責任領域を割付けることが可能となるから、各プロセッサでは自己の責任領域のデータを用いた処理が集中的に実行されて、データの共有は回避される。それゆえに、False Sharingの発生も抑制でき、共有バス2を介したデータ転送も回避できる。結果としてマルチプロセッサシステム1Bでは処理を高速に実行できる。
【0157】
(実施の形態6)
本実施の形態では、上述したレジスタ32には、マルチプロセッサシステム1AにおいてプロセッサPA、PB、PCおよびPDでプログラムが実行されることにより値が書込まれきてもよい。具体的には、該プログラム中に各プロセッサに対応の責任領域に関する情報を宣言しておくことで、該プログラム実行中には宣言された該情報に基づいて、各レジスタ23に値が書込まれる。ここでも、レジスタ23についての値の書込と、該レジスタ23の参照とは排他的に行なわれる。
【0158】
このように、プログラム中で各責任領域に関する情報を宣言しておくことで、予め責任領域を該プログラムの内容に対応して最適となるように確保できるから、プログラムに従う処理を高速に(効率よく)実行できる。
【0159】
(実施の形態7)
本実施の形態に係る図18のマルチプロセッサシステム1Cでも、前述のマルチプロセッサシステム1Aと同様に、あるプロセッサが共有メモリ4のあるアドレスを参照したときに、該アドレスが自己の責任領域に該当するか否かは、ページ毎に設けられたレジスタ32の値に基づいて判定される。
【0160】
図18のマルチプロセッサシステム1Cは、マルチプロセッサシステム1Aの構成に追加して割込みコントローラ36、レジスタ書込みコントローラ37および割込みコントローラ36と各プロセッサとを接続する割込み制御線38を備える。割込みコントローラ36は、与えられる割込み信号39を入力すると、割込み制御線38を経由していずれかのプロセッサに与える。割込み信号39はマルチプロセッサシステム1Cが搭載されたチップ外、または図示されない周辺回路、またはプロセッサ(ソフトウェア処理)から割込みコントローラ36に出力される。
【0161】
動作において、割込み制御線38を経由して割込み信号39が与えられたプロセッサは、それまでに実行していた処理を中断して、所定の割込み処理に分岐する。この割込み処理は主記憶装置31の任意のレジスタ32に値を書込むための処理である。プロセッサは割込み処理を実行すると、任意のレジスタ32に書込む値を決定して、決定された値を示すレジスタデータ41をレジスタ書込みコントローラ37に与える。レジスタ書込みコントローラ37はレジスタデータ41を入力して、任意のレジスタ32に書込む。ここでも、レジスタ32についての値の書込と、該レジスタ32の参照とは排他的に行なわれる。
【0162】
(実施の形態8)
実施の形態1における図12の説明においては、状態タグ16が“SN”のキャッシュライン18へのデータ15の書込みがなされた場合には、状態タグ16が“SO”のコピーのみ有効とされて、他のコピーについては状態タグ16を“I”にして、データが共有されることを回避するようにしていたが、次のようにしてもよい。つまり、複数のプロセッサにより書き換えられる可能性の高い変数が使用されている場合には、状態タグ16が“SN”の該変数のキャッシュライン18(コピー)にデータ15が書込まれた場合には、共有バス2を使い、状態タグ16が“SO”または“SN”の他のコピー(キャッシュライン18)のデータ15も同様に更新する。
【0163】
このように状態遷移させた場合には、複数のプロセッサにより書き換えられる可能性の高い変数を用いた処理を容易に行うことができる。
【0164】
(実施の形態9)
本実施の形態では、上述した各実施の形態において、各キャッシュ装置は対応のキャッシュメモリ6から共有メモリ4へのキャッシュラインの転送をライトスルーで行なう。このようにした場合には、キャッシュメモリ6の内容は共有メモリ4の内容と常に同じになるように保証される。
【0165】
(実施の形態10)
本実施の形態のキャッシュ装置は、図19に示される構成を有する。図20には本実施の形態にかかるマルチプロセッサシステム1Dの概略構成が示される。図20のマルチプロセッサシステム1Dはマルチプロセッサシステム1Aのキャッシュ装置CA、CB、CCおよびCDに代替して、キャッシュ装置CCA、CCB、CCCおよびCCDを有するが、他の構成は同様である。キャッシュ装置CCA、CCB、CCCおよびCCDそれぞれは同様な構成を有するので、キャッシュ装置CCAを例示して説明する。
【0166】
図20に示されるようにキャッシュ装置CCAはキャッシュメモリ6、キャッシュコントローラ50および3つのキャッシュコントローラ51を含む。キャッシュメモリ6は責任領域10Aについて設定された専用のキャッシュ領域6A、同様に責任領域10Bについての専用のキャッシュ領域6B、同様に責任領域10Cについての専用のキャッシュ領域6C、および同様に責任領域10Dについての専用のキャッシュ領域6Dを含む。キャッシュ領域6Aについてキャッシュコントローラ50が設けられて、キャッシュ領域6B、6Cおよび6Dそれぞれについてキャッシュコントローラ51が設けられている。
【0167】
この場合、各プロセッサの責任領域ごとにキャッシュライン18が保存されるキャッシュ領域が決定されて、キャッシュライン18ごとに責任領域か、それ以外かが決定されるので、これに従えば図1の状態遷移は図21のように変更される。図21の状態遷移に従う場合にも、キャッシュメモリのヒット率を向上させ、データの共有率を低減することができる。図21の状態“IO”は無効(I)でかつオーナーであることを示し、状態“IN”は無効(I)であってオーナーでないことを示す。
【0168】
図19のキャッシュ装置CAAではキャッシュ領域6Aのキャッシュライン18はすべて図21の左側の“責任領域をアクセスする場合”のプロトコルに従い状態遷移し、それ以外のキャッシュ領域6B、6Cおよび6Dそれぞれにおいてキャッシュライン18はすべて図21の右側の“責任領域以外をアクセスする場合”のプロトコルに従い状態遷移する。他のキャッシュ装置でも同様である。したがって、キャッシュコントローラ50は図21の左側の“責任領域をアクセスする場合”の状態遷移を実現するための回路構成でよいから、キャッシュコントローラ5に比較すると構成を簡単化できる。また、キャッシュコントローラ51は図21の右側の“責任領域以外をアクセスする場合”の状態遷移を実現するためのより簡単化された回路構成でよい。
【0169】
このように各キャッシュメモリ6では対応のプロセッサの責任領域のデータについてのアクセス処理が集中するけれども、各キャッシュ装置のキャッシュコントローラ50は対応プロセッサの責任領域についての制御に集中できるから、各キャッシュ装置はキャッシュメモリ6について、ヒット率を向上させ、データの共有率を低減させる制御を高速に行うことができる。
【0170】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【0171】
【発明の効果】
この発明によれば、複数プロセッサのそれぞれに対応のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータは、すなわち該プロセッサにより最も頻繁にアクセスされ得るデータは常に最新の状態となるように更新されるから、全てのキャッシュメモリにおいてデータのヒット率は高くなる。
【0172】
また、複数キャッシュメモリ間において、同一アドレスで指定されるデータが共有されている場合には、該アドレスを自己の所定アドレス空間に含むプロセッサに対応のキャッシュメモリを除く他のキャッシュメモリ全てにおいて該アドレスのデータ領域の内容を無効にできるから、複数キャッシュメモリ間のデータの共有率を低くできる。
【図面の簡単な説明】
【図1】 実施の形態1に係るキャッシュ一致プロトコルの状態遷移図である。
【図2】 実施の形態1に係るマルチプロセッサシステムの構成図である。
【図3】 実施の形態1に係るキャッシュ装置の構成図である。
【図4】 実施の形態1に係る責任領域の“I”状態のキャッシュラインについて読出すときの状態遷移を模式的に示す図である。
【図5】 実施の形態1に係る責任領域以外における“I”状態のキャッシュラインについて読出すときの状態遷移を模式的に示す図である。
【図6】 実施の形態1に係る責任領域以外における“I”状態のキャッシュラインについて読出すときの状態遷移を模式的に示す図である。
【図7】 実施の形態1に係る責任領域の“I”状態のキャッシュラインについて書き込みするときの状態遷移を模式的に示す図である。
【図8】 実施の形態1に係る責任領域以外における“I”状態の共有されてないキャッシュラインについて書き込みするときの状態遷移を模式的に示す図である。
【図9】 実施の形態1に係る責任領域以外における“I”状態の共有されたキャッシュラインについて書き込みするときの状態遷移を模式的に示す図である。
【図10】 実施の形態1に係る責任領域における“EO”状態のキャッシュラインについて書き込みするときの状態遷移を模式的に示す図である。
【図11】 実施の形態1に係る責任領域における“SO”状態のキャッシュラインについて書き込みするときの状態遷移を模式的に示す図である。
【図12】 実施の形態1に係る責任領域以外における“SN”状態のキャッシュラインについて書き込みするときの状態遷移を模式的に示す図である。
【図13】 実施の形態2に係るラインごとに並んだ責任領域を示す図である。
【図14】 実施の形態3に係るアドレス変換回路を示す図である。
【図15】 実施の形態3に係る変換されたアドレスに対する責任領域をの並びを示す図である。
【図16】 実施の形態4に係るマルチプロセッサシステムの構成図である。
【図17】 実施の形態5に係るマルチプロセッサシステムの構成図である。
【図18】 実施の形態7に係るマルチプロセッサシステムの構成図である。
【図19】 実施の形態10に係るキャッシュ装置の構成図である。
【図20】 実施の形態10に係るマルチプロセッサシステムの構成図である。
【図21】 実施の形態10に係るキャッシュ一致プロトコルの状態遷移図である。
【符号の説明】
1A,1B,1C,1D マルチプロセッサシステム、2 共有バス、3,31,33 主記憶装置、4 共有メモリ、5,50,51 キャッツシュコントローラ、6A,6B,6C,6D キャッシュ領域、8 キャッシュ制御管理部、10A,10B,10C,10D 責任領域、11 ライン状態管理部、12,23,24 責任領域判定部、14 タグ、15 データ、16 状態タグ、17 アドレスタグ、18 キャッシュライン、32 レジスタ、34 レジスタ制御部、35 プロセッサ判定部、36 割込みコントローラ、37 レジスタ書込みコントローラ、38 割込み制御線、40 アドレス変換回路、PA,PB,PC,PD プロセッサ、CPA,CPB,CPC,CPD アクセス回数カウンタ。
Claims (17)
- 複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに、前記複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するための該プロセッサに対応したキャッシュ装置であって、
前記キャッシュメモリは前記共有メモリからアドレスが指定されて読出されたデータと指定された前記アドレスとを含む情報が一時的に格納されるデータ領域を複数有し、
前記キャッシュ装置は、前記バスを介して相互に入出力し、
前記キャッシュメモリの対応する前記プロセッサの所定アドレス空間に該当する前記アドレスで指定される前記データが更新されたと検出したとき、該データが他の前記キャッシュメモリに格納されている場合には、該データを指定するための前記アドレスを含む無効化要求を前記バスを介して出力し、
前記無効化要求を前記バスを介して入力したとき、前記キャッシュメモリの入力した前記無効化要求の前記アドレスが格納される前記データ領域の内容を無効にし、
前記所定アドレス空間は前記共有メモリにおいて、前記複数のプロセッサのそれぞれに対応して個別に割当てられて、前記複数プロセッサのうち対応する前記プロセッサにより最も頻繁にアクセスされるデータが格納されることを特徴とする、キャッシュ装置。 - 前記キャッシュ装置は、さらに、
前記データを更新するための更新要求を入力したとき、入力した前記更新要求の前記アドレスが対応の前記プロセッサの所定アドレス空間に該当すると検出したとき、前記キャッシュメモリの入力した前記更新要求の前記アドレスが格納される前記データ領域の内容を入力した前記更新要求に基づいて更新し、
対応の前記プロセッサにより前記キャッシュメモリの他の前記プロセッサの前記所定アドレス空間に該当する前記アドレスで指定される前記データが更新されたことを検出したとき、更新後の前記データと該データを指定するための前記アドレスとを含む前記更新要求を前記バスを介して出力することを特徴とする、請求項1に記載のキャッシュ装置。 - 前記プロセッサごとに、該プロセッサに対応の前記所定アドレス空間は、前記共有メモリにおいて連続していることを特徴とする、請求項1に記載のキャッシュ装置。
- 前記プロセッサごとに、該プロセッサに対応の前記所定アドレス空間は、所定規則に従い前記共有メモリに割当てられることを特徴とする、請求項1に記載のキャッシュ装置。
- 前記キャッシュメモリにおいて前記データが更新されるごとに、前記共有メモリの該データも更新されることを特徴とする、請求項1に記載のキャッシュ装置。
- 対応の前記プロセッサにより前記キャッシュメモリの他の前記プロセッサの前記所定アドレス空間に格納される前記データが参照された場合に、該データに対応の前記データ領域の内容が前記無効であるときは、該データを指定するための前記アドレスを含むコピー要求を前記バスを介して出力し、
前記コピー要求を前記バスを介して入力して、入力した前記コピー要求の前記アドレスが対応の前記プロセッサの前記所定アドレス空間に該当すると検出したとき、前記キャッシュメモリの入力した前記コピー要求の前記アドレスが格納される該データ領域の内容を読出して、読出結果を前記バスを介して前記コピー要求を出力した前記キャッシュ装置に出力することを特徴とする、請求項1に記載のキャッシュ装置。 - 前記読出結果が、読出された前記内容が前記無効であることを示すときは、
前記コピー要求を出力した前記キャッシュ装置および前記コピー要求を入力した前記キャッシュ装置のそれぞれは、前記共有メモリから前記コピー要求の前記アドレスで指定される前記データを読出して前記キャッシュメモリに格納することを特徴とする、請求項6に記載のキャッシュ装置。 - 前記キャッシュ装置は、さらに、
前記共有メモリの前記所定アドレス空間ごとに対応して設けられたレジスタを参照し、
前記レジスタには対応の前記所定アドレス空間が割当てられた前記プロセッサを示すためのプロセッサ割当て情報が格納されることを特徴とする、請求項1項に記載のキャッシュ装置。 - 前記キャッシュ装置は、入力した前記アドレスは、対応の前記プロセッサの前記所定アドレス空間に該当するか否かを、前記レジスタの参照結果に基づいて、判別することを特徴とする、請求項8に記載のキャッシュ装置。
- 前記レジスタは、前記共有メモリのページ単位に設けられることを特徴とする、請求項8に記載のキャッシュ装置。
- 前記レジスタの内容は任意に可変設定されることを特徴とする、請求項8に記載のキャッシュ装置。
- 前記レジスタの内容は、前記複数プロセッサにおけるプログラム処理により設定されることを特徴とする、請求項11に記載のキャッシュ装置。
- 前記レジスタの内容は、前記複数プロセッサのそれぞれについて該レジスタに対応の前記所定アドレス空間をアクセスした回数をカウントするカウンタの内容に基づいて設定されることを特徴とする、請求項11に記載のキャッシュ装置。
- 複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに、前記複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するための該プロセッサに対応したキャッシュ装置であって、
前記キャッシュメモリは前記共有メモリからアドレスが指定されて読出されたデータと指定された前記アドレスとを含む情報が一時的に格納されるデータ領域を複数個有して、
前記キャッシュ装置は前記バスを介して相互に入出力し、前記キャッシュメモリの複数個の前記データ領域のうち、格納する前記アドレスが該キャッシュメモリに対応の前記プロセッサのための所定アドレス空間に該当する1つ以上の前記データ領域をアクセスするための専用アクセス部と、残りの1つ以上の前記データ領域をアクセスするための非専用アクセス部とを有し、
前記専用アクセス部は、
前記データを更新するための更新要求を入力したとき、入力した前記更新要求の前記アドレスが前記所定アドレス空間に該当すると検出したとき、前記キャッシュメモリの入力した前記更新要求の前記アドレスが格納される前記データ領域の内容を入力した前記更新要求に基づいて更新し、
前記非専用アクセス部は、
対応の前記プロセッサにより前記残りデータ領域の前記データが更新されたことを検出したとき、更新後の前記データと該データを指定するための前記アドレスとを含む前記更新要求を前記バスを介して出力し、
前記所定アドレス空間は、前記共有メモリにおいて前記複数のプロセッサのそれぞれに対応して個別に割当てられて、前記複数プロセッサのうち対応する前記プロセッサにより最も頻繁にアクセスされるデータが格納されることを特徴とする、キャッシュ装置。 - 前記専用アクセス部は、
前記データを更新するための更新要求を入力したとき、入力した前記更新要求の前記アドレスが前記所定アドレス空間に該当すると検出したとき、前記キャッシュメモリの入力した前記更新要求の前記アドレスが格納される前記データ領域の内容を入力した前記更新要求に基づいて更新し、
前記非専用アクセス部は、
対応の前記プロセッサにより前記残りデータ領域の前記データが更新されたことを検出したとき、更新後の前記データと該データを指定するための前記アドレスとを含む前記更新要求を前記バスを介して出力することを特徴とする、請求項14に記載のキャッシュ装置。 - 複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに、前記複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するための該プロセッサに対応したキャッシュ装置におけるキャッシュ方法であって、
前記キャッシュメモリは前記共有メモリからアドレスが指定されて読出されたデータと指定された前記アドレスとを含む情報が一時的に格納されるデータ領域を複数有し、
前記キャッシュ装置は、前記バスを介して相互に入出力し、
前記キャッシュ方法は、
前記キャッシュメモリの対応する前記プロセッサの所定アドレス空間に該当する前記アドレスで指定される前記データが更新されたと検出されたとき、該データが他の前記キャッシュメモリに格納されている場合には、該データを指定するための前記アドレスを含む無効化要求を前記バスを介して出力し、
前記無効化要求を前記バスを介して入力したとき、前記キャッシュメモリの入力した前記無効化要求の前記アドレスが格納される前記データ領域の内容を無効にし、
前記所定アドレス空間は前記共有メモリにおいて、前記複数のプロセッサのそれぞれに対応して個別に割当てられて、前記複数プロセッサのうち対応する前記プロセッサにより最も頻繁にアクセスされるデータが格納されることを特徴とする、キャッシュ方法。 - 前記キャッシュ方法は、さらに、
前記データを更新するための更新要求が入力されたとき、入力した前記更新要求の前記アドレスが対応の前記プロセッサの所定アドレス空間に該当すると検出されたとき、前記キャッシュメモリの入力した前記更新要求の前記アドレスが格納される前記データ領域の内容を入力した前記更新要求に基づいて更新して、
対応の前記プロセッサにより前記キャッシュメモリの他の前記プロセッサの前記所定アドレス空間に該当する前記アドレスで指定される前記データが更新されたことが検出されたとき、更新後の前記データと該データを指定するための前記アドレスとを含む前記更新要求を前記バスを介して出力することを特徴とする、請求項16に記載のキャッシュ方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001375378A JP4043225B2 (ja) | 2001-12-10 | 2001-12-10 | キャッシュ装置および方法 |
US10/214,230 US6963953B2 (en) | 2001-12-10 | 2002-08-08 | Cache device controlling a state of a corresponding cache memory according to a predetermined protocol |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001375378A JP4043225B2 (ja) | 2001-12-10 | 2001-12-10 | キャッシュ装置および方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003177962A JP2003177962A (ja) | 2003-06-27 |
JP4043225B2 true JP4043225B2 (ja) | 2008-02-06 |
Family
ID=19183762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001375378A Expired - Fee Related JP4043225B2 (ja) | 2001-12-10 | 2001-12-10 | キャッシュ装置および方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6963953B2 (ja) |
JP (1) | JP4043225B2 (ja) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1221898C (zh) * | 2002-08-13 | 2005-10-05 | 国际商业机器公司 | 刷新网络代理高速缓存服务器对象的系统和方法 |
US7111004B2 (en) * | 2003-06-18 | 2006-09-19 | International Business Machines Corporation | Method, system, and program for mirroring data between sites |
JP4471947B2 (ja) * | 2005-04-28 | 2010-06-02 | Necエレクトロニクス株式会社 | データ処理装置及びデータ処理方法 |
JP4250162B2 (ja) * | 2005-09-16 | 2009-04-08 | シャープ株式会社 | データ処理装置 |
US7512742B2 (en) * | 2006-01-17 | 2009-03-31 | International Business Machines Corporation | Data processing system, cache system and method for precisely forming an invalid coherency state indicating a broadcast scope |
US20080104323A1 (en) * | 2006-10-26 | 2008-05-01 | Colglazier Daniel J | Method for identifying, tracking, and storing hot cache lines in an smp environment |
US8510509B2 (en) * | 2007-12-18 | 2013-08-13 | International Business Machines Corporation | Data transfer to memory over an input/output (I/O) interconnect |
US7958314B2 (en) * | 2007-12-18 | 2011-06-07 | International Business Machines Corporation | Target computer processor unit (CPU) determination during cache injection using input/output I/O) hub/chipset resources |
US8032709B2 (en) * | 2008-02-22 | 2011-10-04 | International Business Machines Corporation | System, method and computer program product for handling shared cache lines in a multi-processor environment |
JP5121896B2 (ja) * | 2010-08-11 | 2013-01-16 | 株式会社東芝 | マルチコアプロセッサシステムおよびマルチコアプロセッサ |
KR101748441B1 (ko) * | 2010-10-08 | 2017-06-19 | 삼성전자주식회사 | 거짓 공유 검출 장치 및 방법 |
JP5706754B2 (ja) | 2011-05-13 | 2015-04-22 | キヤノン株式会社 | データ処理装置及びデータ処理方法 |
US20130227221A1 (en) * | 2012-02-29 | 2013-08-29 | Advanced Micro Devices, Inc. | Cache access analyzer |
US8930627B2 (en) | 2012-06-14 | 2015-01-06 | International Business Machines Corporation | Mitigating conflicts for shared cache lines |
US8996810B2 (en) * | 2012-12-10 | 2015-03-31 | Facebook, Inc. | System and method of detecting cache inconsistencies |
US20150363322A1 (en) * | 2014-06-13 | 2015-12-17 | Qualcomm Incorporated | Systems, methods, and computer programs for providing client-filtered cache invalidation |
CN104391750B (zh) * | 2014-11-26 | 2018-05-04 | 浪潮(北京)电子信息产业有限公司 | 一种基于软件定义的混合异构主机系统 |
US10250715B2 (en) | 2016-06-30 | 2019-04-02 | Salesforce.Com, Inc. | Dynamic adjustment of boxcarring of action requests from component-driven cloud applications |
EP3676710A4 (en) * | 2017-08-31 | 2021-07-28 | Rail Vision Ltd | SYSTEM AND METHOD FOR IMPROVING THE FLOW RATE IN MANY CALCULATIONS |
EP4068104A1 (en) * | 2021-03-30 | 2022-10-05 | ABB Schweiz AG | Method for controlling an opc ua server, opc ua server, control circuit, computer program, and computer-readable medium |
US11687459B2 (en) * | 2021-04-14 | 2023-06-27 | Hewlett Packard Enterprise Development Lp | Application of a default shared state cache coherency protocol |
CN117529899A (zh) * | 2022-01-14 | 2024-02-06 | 华为技术有限公司 | 共享存储系统、装置和用于无效缓存数据的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0343567A3 (en) * | 1988-05-25 | 1991-01-09 | Hitachi, Ltd. | Multi-processing system and cache apparatus for use in the same |
US5394555A (en) * | 1992-12-23 | 1995-02-28 | Bull Hn Information Systems Inc. | Multi-node cluster computer system incorporating an external coherency unit at each node to insure integrity of information stored in a shared, distributed memory |
JPH08202622A (ja) * | 1995-01-31 | 1996-08-09 | Fujitsu Ltd | 分散型メモリ構成のキャッシュ制御方法 |
US6449699B2 (en) * | 1999-03-29 | 2002-09-10 | International Business Machines Corporation | Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems |
JP3897218B2 (ja) | 1999-10-08 | 2007-03-22 | 富士通株式会社 | キャッシュ装置及び制御方法 |
JP2001282764A (ja) * | 2000-03-30 | 2001-10-12 | Hitachi Ltd | マルチプロセッサシステム |
-
2001
- 2001-12-10 JP JP2001375378A patent/JP4043225B2/ja not_active Expired - Fee Related
-
2002
- 2002-08-08 US US10/214,230 patent/US6963953B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2003177962A (ja) | 2003-06-27 |
US6963953B2 (en) | 2005-11-08 |
US20030110360A1 (en) | 2003-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4043225B2 (ja) | キャッシュ装置および方法 | |
JP3269967B2 (ja) | キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム | |
US5715428A (en) | Apparatus for maintaining multilevel cache hierarchy coherency in a multiprocessor computer system | |
US6345342B1 (en) | Cache coherency protocol employing a read operation including a programmable flag to indicate deallocation of an intervened cache line | |
JP3309425B2 (ja) | キャッシュ制御装置 | |
US7237068B2 (en) | Computer system employing bundled prefetching and null-data packet transmission | |
US5692149A (en) | Block replacement method in cache only memory architecture multiprocessor | |
KR102531264B1 (ko) | 오버라이드 가능한 무효화를 갖는 판독 트랜잭션 | |
JP4477688B2 (ja) | キャッシュメモリアクセスを管理する方法と装置 | |
US7577794B2 (en) | Low latency coherency protocol for a multi-chip multiprocessor system | |
US6502171B1 (en) | Multiprocessor system bus with combined snoop responses explicitly informing snoopers to scarf data | |
JP2010507160A (ja) | データ処理装置の共有メモリへの書込みアクセス要求の処理 | |
JP2010517184A (ja) | スヌープ要求キャッシュを用いたスヌープ・フィルタリング | |
JPH08185359A (ja) | メモリサブシステム | |
JPH02141845A (ja) | マルチプロセッサシステムにおいて中央処理ユニットにより主メモリからデータブロックを読み取る方法 | |
JPH09223118A (ja) | スヌープキャッシュメモリ制御システム | |
JP2008108256A (ja) | コンピュータシステムの複数のプロセッサを結合するスイッチングシステムのデータストレージ | |
JPH10320283A (ja) | マルチプロセッサ・データ処理システム内でキャッシュ・コヒーレンシを維持するキャッシュ・コヒーレンシ・プロトコルを提供する方法及び装置 | |
JPH10154100A (ja) | 情報処理システム及び装置及びその制御方法 | |
US8332592B2 (en) | Graphics processor with snoop filter | |
JP2001282764A (ja) | マルチプロセッサシステム | |
JP4577729B2 (ja) | ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法 | |
US5987544A (en) | System interface protocol with optional module cache | |
US6345344B1 (en) | Cache allocation mechanism for modified-unsolicited cache state that modifies victimization priority bits | |
JP3068469B2 (ja) | 2次レベルキャッシュメモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041208 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071023 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20071106 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071113 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101122 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111122 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111122 Year of fee payment: 4 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111122 Year of fee payment: 4 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111122 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121122 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121122 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131122 Year of fee payment: 6 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |