JP2003177962A - キャッシュ装置および方法 - Google Patents

キャッシュ装置および方法

Info

Publication number
JP2003177962A
JP2003177962A JP2001375378A JP2001375378A JP2003177962A JP 2003177962 A JP2003177962 A JP 2003177962A JP 2001375378 A JP2001375378 A JP 2001375378A JP 2001375378 A JP2001375378 A JP 2001375378A JP 2003177962 A JP2003177962 A JP 2003177962A
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.)
Granted
Application number
JP2001375378A
Other languages
English (en)
Other versions
JP4043225B2 (ja
Inventor
Masami Nakajima
雅美 中島
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2001375378A priority Critical patent/JP4043225B2/ja
Priority to US10/214,230 priority patent/US6963953B2/en
Publication of JP2003177962A publication Critical patent/JP2003177962A/ja
Application granted granted Critical
Publication of JP4043225B2 publication Critical patent/JP4043225B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 キャッシュメモリのヒット率を向上させて、
キャッシュメモリ間のデータ共有率を低減する。 【解決手段】 あるキャッシュ装置は制御対象のキャッ
シュメモリにおいて、対応のプロセッサが最も頻繁にア
クセスするデータが格納される責任領域のデータが更新
されて、該データが他のキャッシュメモリに格納されて
いる状態“SO”を示すときは、他のキャッシュメモリ
を制御するキャッシュ装置は自己が制御するキャッシュ
メモリの責任領域外の該データを“SN”→“I”(無
効)にする。それゆえに、複数キャッシュメモリ間にお
いて、同一アドレスで指定されるデータが共有されてい
る場合には、該アドレスを自己の責任領域に含むプロセ
ッサに対応のキャッシュメモリを除く他のキャッシュメ
モリにおいて該データを無効にできるから、データの共
有率を低くできる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明はマルチプロセッサ
システムで各プロセッサに対応して設けられたキャッシ
ュメモリの内容を制御するキャッシュ装置および方法に
関し、特に所定のプロトコルに従いキャッシュメモリの
内容を制御するキャッシュ装置および方法に関する。
【0002】
【従来の技術および発明が解決しようとする課題】マル
チプロセッサシステムでは対象とする処理を高速に実行
できる。具体的には対象とする処理を並列に実行可能な
複数個のタスクに分割して、各プロセッサは割当てられ
たタスクを実行することで並列に処理が進行する。この
とき、各プロセッサが実行するタスク間で変数などのデ
ータを共有する場合には、プロセッサ間でデータ通信が
行なわれる。このように各プロセッサ間(タスク間)で
共有されて、後述する共有メモリに記憶されるデータを
共有データという。
【0003】マルチプロセッサシステムにおいて、プロ
セッサ間のデータ通信が頻繁に行なわれる場合はプロセ
ッサ間で共有されるメモリ(以下、共有メモリという)
を介しての通信が適している。共有メモリと各プロセッ
サとの間の結合方式を考えるとき、最もハードウェア構
造が単純で経済的な結合方式として、共有メモリにアク
セスするためのバスを複数プロセッサ間で共有する共有
バス方式がある。共有バス上でのデータ通信についての
競合(以下、バス競合という)を生じなければ共有メモ
リへのアクセスに関するコストも低い。しかし、プロセ
ッサ数が増加するとバス競合が起こりデータ通信のオー
バーヘッドが増大する。バス競合を大幅に緩和する方法
としてスヌープキャッシュが提案され、現在多くのマル
チプロセッサシステムで実用化されている。
【0004】マルチプロセッサシステムでは、各プロセ
ッサが共有データへのアクセスのために共有メモリに直
接アクセスすると共有バスのトラフィックが増大してし
まう。そこで、プロセッサごとにプライベートなキャッ
シュメモリを設けて共有メモリから読出した共有データ
を該キャッシュメモリに書込んで(コピーして)、以
降、該共有データについてアクセス要求があったときに
は共有メモリではなくて該キャッシュメモリをアクセス
することにより、上述のバス競合を緩和することができ
る。
【0005】マルチプロセッサシステムにおいては、主
記憶装置などの共有メモリの内容が複数のキャッシュメ
モリ上にコピーされるため、主記憶装置とキャッシュメ
モリ間の内容不一致に加え複数のキャッシュメモリ間で
の内容の不一致が生じキャッシュコヒーレンス(キャッ
シュメモリに書込まれた共有データについての一貫性)
が維持できなくなる。スヌープキャッシュは、この問題
点を共有バスの特徴を生かして解決するものである。共
有バスを利用するマルチプロセッサシステムでは、デー
タ通信が1本の共有バスを介して行なわれるので、共有
バス上のデータの流れを観測していれば、システムの挙
動がほとんど把握できる。スヌープキャッシュはキャッ
シュメモリについて能動的に共有バスのトランザクショ
ンを監視(snoop)することにより、該キャッシュメモ
リの内容に影響を及ぼすトランザクションを検出すると
キャッシュコヒーレンスを維持するため所定処理して、
内容の一致を保証する方法であって、内容の一致を保証
するための一連のデータの取扱い方をキャッシュ一致プ
ロトコルと呼ぶ。キャッシュ一致プロトコルは、内容を
一致させる時期(ライトスルーのときかライトバックの
ときか)と方法(内容を無効化するか更新するか)によ
って分類される。
【0006】内容を一致させる時期をライトスルー時と
するキャッシュ一致プロトコルをライトスルーキャッシ
ュと呼ぶ。ライトスルーキャッシュは最も簡単なキャッ
シュ一致プロトコルで、キャッシュメモリの各ライン
(以下、キャッシュラインと呼ぶ)は有効(V:vali
d)と無効(I:invalid)の2状態しか持たず、したが
って、該キャッシュラインの状態を示すタグ(以下、状
態タグという)も1ビット割当てれば済む。ライトスル
ーキャッシュに従えば、制御は簡単であるが、データ書
込が行なわれるたびに共有バスが利用されるので、共有
バスのトラフィックは増大する。なお、ここでは、キャ
ッシュラインは、キャッシュメモリの1回のアドレス指
定によるアクセス単位である。
【0007】次に、ライトバックの時期において内容を
無効化する方式に分類されるキャッシュ一致プロトコル
であるライトバックキャッシュについて基本プロトコル
を説明し、該ライトバックキャッシュに含まれるSymmet
ryプロトコル、Illinoisプロトコル、およびBerkeleyプ
ロトコルについて説明する。
【0008】まず、基本プロトコルについて説明する。
ライトバックキャッシュでは、キャッシュメモリのキャ
ッシュラインの状態タグには有効(V)および無効
(I)のいずれかの状態を示すビットの他に該キャッシ
ュラインの内容と共有メモリの内容と一致(C:Clea
n)および不一致(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 Ex
clusive)状態が生じ、この場合は共有バスを利用する
ことなく書込を行なうことができる。他のプロセッサが
あるプロセッサのキャッシュメモリから状態タグが“D
E”のキャッシュラインを読出す場合、前述した無効化
型の基本プロトコル同様、該キャッシュラインの内容
は、一度、共有メモリに書き戻された後、読込まれるの
で、該キャッシュラインの状態タグは“CS”となる。
この3状態Fireflyプロトコルに従えば、共有メモリと
キャッシュメモリとの間で内容の一致を頻繁にとること
になるから、Dirtyの状態は複数のキャッシュメモリに
おいて生ずることはなく、したがってオーナーシップな
どを考慮する必要はない。
【0016】次に、4状態Fireflyプロトコルについて
説明する。このプロトコルでは、他のプロセッサがある
プロセッサのキャッシュメモリから状態タグが“DE”
のキャッシュラインを読出すときに、Berkeleyプロトコ
ルと同様に共有メモリに該キャッシュラインについての
書き戻しをせずに、直接該キャッシュラインは他のプロ
セッサに対して転送される。このため、Dirty状態のコ
ピーが複数のキャッシュメモリにおいて存在することと
なり、オーナーシップの考え方が必要となる。このため
Berkeleyプロトコルと同様に4状態のプロトコルが必要
とされる。
【0017】次に、Dragonプロトコルについて説明す
る。Dragonプロトコルは、状態タグが“CS”であるキ
ャッシュラインへのデータの書込時に、共有メモリの内
容を更新しないので、やはりDirty状態のコピーが複数
のキャッシュメモリにおいて存在する。そこで、Berkel
eyプロトコルと同様に、キャッシュラインは“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 shar
ingという課題を有する。False sharingについて以下に
説明する。2つのプロセッサ間でのデータのやり取りを
想定する。2つのプロセッサのうちの一方プロセッサで
実行されていたプログラム(タスク)が他方プロセッサ
に移動したとすると、以降、一方プロセッサでは、この
タスクに関する変数を使うことはない。しかしながら、
更新型プロトコルではキャッシュラインは無効化される
ことはないため、変数のデータが書込まれているキャッ
シュラインはキャッシュメモリから追い出されるまで有
効である。このため、他方プロセッサがそのタスクの実
行時に該変数のキャッシュラインにデータを書込むと、
必要ないのに、共有バスを使用して一方プロセッサのキ
ャッシュメモリにおける対応のキャッシュラインのデー
タ(一方プロセッサでは使われないデータ)を更新しな
ければならない。
【0025】これと似た状況は、以下のようなケースで
も生じる。一方プロセッサが使うローカル変数があるキ
ャッシュラインの上半分の領域に格納され、他方プロセ
ッサが使用するローカル変数が該キャッシュラインの下
半分領域に格納されているとした場合、更新型プロトコ
ルでは変数に書込が行なわれるたびに、意味のないデー
タの更新を行なわなければならない。このように、キャ
ッシュラインが意味なく共有されることをFalse sharin
gという。更新型プロトコルでは特に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 sharin
gを削減することが望まれる。具体的には、あるプロセ
ッサが頻繁にアクセスする変数のアドレスがわかってい
れば、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、C
CおよびCD、共有バス2、および共有メモリ4を含む
主記憶装置3を備える。このマルチプロセッサシステム
1ではキャッシュスヌープが採用されている。ここで
は、キャッシュラインと区別するために、共有メモリ4
の1回のアドレス指定によりアクセスされる領域をメモ
リラインと呼ぶ。
【0108】共有メモリ4上に各メモリラインが、マル
チプロセッサシステム1内のいずれのプロセッサから頻
繁にアクセスされるかが予めわかっていると想定して、
共有メモリ4上においてあるプロセッサが最も頻繁にア
クセスするデータが格納される領域を、該プロセッサの
責任領域と呼ぶ。本実施の形態1では、図2に示される
ように共有メモリ4上において、先頭からプロセッサP
A、PB、PCおよびPDのそれぞれについての連続し
た責任領域10A、10B、10Cおよび10Dが順に
割付けられている。
【0109】キャッシュ装置CA、CB、CCおよびC
Dそれぞれは同様の構成を有するので、ここではキャッ
シュ装置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の状態タグ1
6で示されるべき状態を、図1に示されるプロトコルに
従って決定する。責任領域判定部12は、アクセス要求
があったとき該アクセス要求に基づいて指定されるアド
レスが対応するプロセッサの責任領域内か外かを判定す
る。
【0113】キャッシュ一致プロトコルに従いキャッシ
ュライン18の状態が、すなわち対応の状態タグ16の
値がどのように遷移するかが図1に示される。図1を参
照してキャッシュライン18の状態タグ16はデフォル
トとして“I”(invalid)をとり、該キャッシュライ
ン18へのアクセスの態様(アクセス要求の種類)に従
い“EO”(Exclusive owner)、“SO”(Shared ow
ner)および“SN”(Shared non-owner)のいずれか
の状態に遷移する。
【0114】状態タグ16が“I”であるとき、対応の
キャッシュライン18の内容は保証されないことを示
す。状態タグ16が“SO”であるとき、対応のキャッ
シュライン18の内容(コピー)は複数のプロセッサ
(キャッシュメモリ6)間で共有されている状態であ
り、該キャッシュライン18のオーナーは対応のキャッ
シュメモリ6であることを示す。状態タグ16が“E
O”であるとき、対応のキャッシュライン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の別)を判定して、
判定結果を示すアクセス種別情報をライン状態管理部1
1に与える。このときキャッシュ制御管理部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”→“S
O”に更新される。キャッシュ装置CBのキャッシュ制
御管理部8は、キャッシュ装置CAからの応答信号とと
もにコピーを受信して、受信したコピーをキャッシュメ
モリ6の先ほどアドレスヒットしたキャッシュライン1
8に書込む。このとき、状態更新処理が行なわれるの
で、該キャッシュライン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もプロセッサP
Aおよび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”→“E
O”となる。他のキャッシュメモリで共有されている該
キャッシュライン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は、不要となったものであり、たとえばL
RU(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
の回路構成を簡単にして小型化できる。具体的には図1
3に示されるように下位2ビットが“00”の場合は責
任領域10A、“01”の場合は責任領域10B、“1
0”の場合は責任領域10Cおよび“11”の場合は責
任領域10Dとそれぞれ判定できる。
【0142】(実施の形態3)責任領域判定部12は、
図14に示されるようなアドレス変換回路40を有して
もよい。本実施の形態では責任領域10A、10B、1
0Cおよび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および1
0Dの配置例が示される。
【0143】(実施の形態4)本実施の形態では、プロ
セッサがあるアドレスについてのアクセス要求を出力し
たとき、該アドレスが責任領域内に該当するか否かは後
述の主記憶装置31が有する後述の複数のレジスタ32
に格納された値に基づいて判断される。本実施の形態で
は、これらレジスタ32それぞれには予め決められた値
が格納されていると想定する。
【0144】図16は、本実施の形態4に係るマルチプ
ロセッサシステム1Aの構成図である。マルチプロセッ
サシステム1Aはマルチプロセッサシステム1の主記憶
装置3に代替して主記憶装置31を備える。図16で
は、プロセッサPCおよびPDおよびキャッシュ装置C
CおよびCDは省略されているけれども、キャッシュ装
置CCおよびCDも図16のキャッシュ装置CAおよび
CBと同様な構成を有する。図16のキャッシュ装置C
AおよびCBは同様な構成を有する。キャッシュ装置C
A(CB)は、キャッシュコントローラ5において責任
領域判定部12に代替して責任領域判定部23を有する
が、他の構成は前述したものと同様である。主記憶装置
31では、共有メモリ4のページごとに個別にレジスタ
32が設けられる。レジスタ32の値が“00”であれ
ば、対応のページは責任領域10Aであり、同様に“0
1”であれば責任領域10Bであり、“10”であれば
責任領域10Cであり、“11”であれば責任領域10
Dであることが示される。
【0145】図16では、キャッシュコントローラ5は
キャッシュ間通信線/システムバス22を介して他のキ
ャッシュ装置および主記憶装置31に接続される。キャ
ッシュコントローラ5のキャッシュ制御管理部8は対応
のプロセッサから共有メモリ4のアドレスについてのア
クセス要求を入力して、該アドレスに基づいて共有メモ
リ4を参照する。この参照時に該アドレスに対応のレジ
スタ32の内容が読出されて、システムバス21を介し
て責任領域判定部23に与えられる。責任領域判定部2
3は与えられた内容を共有メモリ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ならびにアクセス回数カウンタCP
A、CPB、CPCおよびCPD、レジスタ制御部34
およびプロセッサ判定部35を備える。アクセス回数カ
ウンタCPA、CPB、CPCおよびCPDそれぞれは
プロセッサPA、PB、PCおよびPDそれぞれに対応
して設けられている。これらのアクセス回数カウンタは
同様な構成を有して対応のページについてアクセスされ
たとき、対応のアクセス要求に基づいて判定された該ア
クセス要求元のプロセッサに対応して設けられたアクセ
ス回数カウンタのみ値がインクリメントされる。したが
って、あるページに対応のアクセス回数カウンタCP
A、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)本実施の形態に係る図1
8のマルチプロセッサシステム1Cでも、前述のマルチ
プロセッサシステム1Aと同様に、あるプロセッサが共
有メモリ4のあるアドレスを参照したときに、該アドレ
スが自己の責任領域に該当するか否かは、ページ毎に設
けられたレジスタ32の値に基づいて判定される。
【0160】図18のマルチプロセッサシステム1C
は、マルチプロセッサシステム1Aの構成に追加して割
込みコントローラ36、レジスタ書込みコントローラ3
7および割込みコントローラ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、C
CB、CCCおよびCCDそれぞれは同様な構成を有す
るので、キャッシュ装置CCAを例示して説明する。
【0166】図20に示されるようにキャッシュ装置C
CAはキャッシュメモリ6、キャッシュコントローラ5
0および3つのキャッシュコントローラ51を含む。キ
ャッシュメモリ6は責任領域10Aについて設定された
専用のキャッシュ領域6A、同様に責任領域10Bにつ
いての専用のキャッシュ領域6B、同様に責任領域10
Cについての専用のキャッシュ領域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に係る責任領域における“E
O”状態のキャッシュラインについて書き込みするとき
の状態遷移を模式的に示す図である。
【図11】 実施の形態1に係る責任領域における“S
O”状態のキャッシュラインについて書き込みするとき
の状態遷移を模式的に示す図である。
【図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 アクセス回数
カウンタ。
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06F 15/177 682 G06F 15/177 682K

Claims (17)

    【特許請求の範囲】
  1. 【請求項1】 複数プロセッサにより共有されてアクセ
    スされる共有メモリがバスを介して接続されるととも
    に、前記複数プロセッサのそれぞれについて設けられた
    キャッシュメモリを制御するための該プロセッサに対応
    したキャッシュ装置であって、 前記キャッシュメモリは前記共有メモリからアドレスが
    指定されて読出されたデータと指定された前記アドレス
    とを含む情報が一時的に格納されるデータ領域を複数有
    し、 前記キャッシュ装置は、前記バスを介して相互に入出力
    し、 前記キャッシュメモリの対応する前記プロセッサの所定
    アドレス空間に該当する前記アドレスで指定される前記
    データが更新されたと検出したとき、該データが他の前
    記キャッシュメモリに格納されている場合には、該デー
    タを指定するための前記アドレスを含む無効化要求を前
    記バスを介して出力し、 前記無効化要求を前記バスを介して入力したとき、前記
    キャッシュメモリの入力した前記無効化要求の前記アド
    レスが格納される前記データ領域の内容を無効にし、 前記所定アドレス空間は前記共有メモリにおいて、前記
    複数のプロセッサのそれぞれに対応して個別に割当てら
    れて、前記複数プロセッサのうち対応する前記プロセッ
    サにより最も頻繁にアクセスされるデータが格納される
    ことを特徴とする、キャッシュ装置。
  2. 【請求項2】 前記キャッシュ装置は、さらに、 前記データを更新するための更新要求を入力したとき、
    入力した前記更新要求の前記アドレスが対応の前記プロ
    セッサの所定アドレス空間に該当すると検出したとき、
    前記キャッシュメモリの入力した前記更新要求の前記ア
    ドレスが格納される前記データ領域の内容を入力した前
    記更新要求に基づいて更新し、 対応の前記プロセッサにより前記キャッシュメモリの他
    の前記プロセッサの前記所定アドレス空間に該当する前
    記アドレスで指定される前記データが更新されたことを
    検出したとき、更新後の前記データと該データを指定す
    るための前記アドレスとを含む前記更新要求を前記バス
    を介して出力することを特徴とする、請求項1に記載の
    キャッシュ装置。
  3. 【請求項3】 前記プロセッサごとに、該プロセッサに
    対応の前記所定アドレス空間は、前記共有メモリにおい
    て連続していることを特徴とする、請求項1に記載のキ
    ャッシュ装置。
  4. 【請求項4】 前記プロセッサごとに、該プロセッサに
    対応の前記所定アドレス空間は、所定規則に従い前記共
    有メモリに割当てられることを特徴とする、請求項1に
    記載のキャッシュ装置。
  5. 【請求項5】 前記キャッシュメモリにおいて前記デー
    タが更新されるごとに、前記共有メモリの該データも更
    新されることを特徴とする、請求項1に記載のキャッシ
    ュ装置。
  6. 【請求項6】 対応の前記プロセッサにより前記キャッ
    シュメモリの他の前記プロセッサの前記所定アドレス空
    間に格納される前記データが参照された場合に、該デー
    タに対応の前記データ領域の内容が前記無効であるとき
    は、該データを指定するための前記アドレスを含むコピ
    ー要求を前記バスを介して出力し、 前記コピー要求を前記バスを介して入力して、入力した
    前記コピー要求の前記アドレスが対応の前記プロセッサ
    の前記所定アドレス空間に該当すると検出したとき、前
    記キャッシュメモリの入力した前記コピー要求の前記ア
    ドレスが格納される該データ領域の内容を読出して、読
    出結果を前記バスを介して前記コピー要求を出力した前
    記キャッシュ装置に出力することを特徴とする、請求項
    1に記載のキャッシュ装置。
  7. 【請求項7】 前記読出結果が、読出された前記内容が
    前記無効であることを示すときは、 前記コピー要求を出力した前記キャッシュ装置および前
    記コピー要求を入力した前記キャッシュ装置のそれぞれ
    は、前記共有メモリから前記コピー要求の前記アドレス
    で指定される前記データを読出して前記キャッシュメモ
    リに格納することを特徴とする、請求項6に記載のキャ
    ッシュ装置。
  8. 【請求項8】 前記キャッシュ装置は、さらに、 前記共有メモリの前記所定アドレス空間ごとに対応して
    設けられたレジスタを参照し、 前記レジスタには対応の前記所定アドレス空間が割当て
    られた前記プロセッサを示すためのプロセッサ割当て情
    報が格納されることを特徴とする、請求項1項に記載の
    キャッシュ装置。
  9. 【請求項9】 前記キャッシュ装置は、入力した前記ア
    ドレスは、対応の前記プロセッサの前記所定アドレス空
    間に該当するか否かを、前記レジスタの参照結果に基づ
    いて、判別することを特徴とする、請求項8に記載のキ
    ャッシュ装置。
  10. 【請求項10】 前記レジスタは、前記共有メモリのペ
    ージ単位に設けられることを特徴とする、請求項8に記
    載のキャッシュ装置。
  11. 【請求項11】 前記レジスタの内容は任意に可変設定
    されることを特徴とする、請求項8に記載のキャッシュ
    装置。
  12. 【請求項12】 前記レジスタの内容は、前記複数プロ
    セッサにおけるプログラム処理により設定されることを
    特徴とする、請求項11に記載のキャッシュ装置。
  13. 【請求項13】 前記レジスタの内容は、前記複数プロ
    セッサのそれぞれについて該レジスタに対応の前記所定
    アドレス空間をアクセスした回数をカウントするカウン
    タの内容に基づいて設定されることを特徴とする、請求
    項11に記載のキャッシュ装置。
  14. 【請求項14】 複数プロセッサにより共有されてアク
    セスされる共有メモリがバスを介して接続されるととも
    に、前記複数プロセッサのそれぞれについて設けられた
    キャッシュメモリを制御するための該プロセッサに対応
    したキャッシュ装置であって、 前記キャッシュメモリは前記共有メモリからアドレスが
    指定されて読出されたデータと指定された前記アドレス
    とを含む情報が一時的に格納されるデータ領域を複数個
    有して、 前記キャッシュ装置は前記バスを介して相互に入出力
    し、前記キャッシュメモリの複数個の前記データ領域の
    うち、格納する前記アドレスが該キャッシュメモリに対
    応の前記プロセッサのための所定アドレス空間に該当す
    る1つ以上の前記データ領域をアクセスするための専用
    アクセス部と、残りの1つ以上の前記データ領域をアク
    セスするための非専用アクセス部とを有し、 前記専用アクセス部は、 前記データを更新するための更新要求を入力したとき、
    入力した前記更新要求の前記アドレスが前記所定アドレ
    ス空間に該当すると検出したとき、前記キャッシュメモ
    リの入力した前記更新要求の前記アドレスが格納される
    前記データ領域の内容を入力した前記更新要求に基づい
    て更新し、 前記非専用アクセス部は、 対応の前記プロセッサにより前記残りデータ領域の前記
    データが更新されたことを検出したとき、更新後の前記
    データと該データを指定するための前記アドレスとを含
    む前記更新要求を前記バスを介して出力し、 前記所定アドレス空間は、前記共有メモリにおいて前記
    複数のプロセッサのそれぞれに対応して個別に割当てら
    れて、前記複数プロセッサのうち対応する前記プロセッ
    サにより最も頻繁にアクセスされるデータが格納される
    ことを特徴とする、キャッシュ装置。
  15. 【請求項15】 前記専用アクセス部は、 前記データを更新するための更新要求を入力したとき、
    入力した前記更新要求の前記アドレスが前記所定アドレ
    ス空間に該当すると検出したとき、前記キャッシュメモ
    リの入力した前記更新要求の前記アドレスが格納される
    前記データ領域の内容を入力した前記更新要求に基づい
    て更新し、 前記非専用アクセス部は、 対応の前記プロセッサにより前記残りデータ領域の前記
    データが更新されたことを検出したとき、更新後の前記
    データと該データを指定するための前記アドレスとを含
    む前記更新要求を前記バスを介して出力することを特徴
    とする、請求項14に記載のキャッシュ装置。
  16. 【請求項16】 複数プロセッサにより共有されてアク
    セスされる共有メモリがバスを介して接続されるととも
    に、前記複数プロセッサのそれぞれについて設けられた
    キャッシュメモリを制御するための該プロセッサに対応
    したキャッシュ装置におけるキャッシュ方法であって、 前記キャッシュメモリは前記共有メモリからアドレスが
    指定されて読出されたデータと指定された前記アドレス
    とを含む情報が一時的に格納されるデータ領域を複数有
    し、 前記キャッシュ装置は、前記バスを介して相互に入出力
    し、 前記キャッシュ方法は、 前記キャッシュメモリの対応する前記プロセッサの所定
    アドレス空間に該当する前記アドレスで指定される前記
    データが更新されたと検出されたとき、該データが他の
    前記キャッシュメモリに格納されている場合には、該デ
    ータを指定するための前記アドレスを含む無効化要求を
    前記バスを介して出力し、 前記無効化要求を前記バスを介して入力したとき、前記
    キャッシュメモリの入力した前記無効化要求の前記アド
    レスが格納される前記データ領域の内容を無効にし、 前記所定アドレス空間は前記共有メモリにおいて、前記
    複数のプロセッサのそれぞれに対応して個別に割当てら
    れて、前記複数プロセッサのうち対応する前記プロセッ
    サにより最も頻繁にアクセスされるデータが格納される
    ことを特徴とする、キャッシュ方法。
  17. 【請求項17】 前記キャッシュ方法は、さらに、 前記データを更新するための更新要求が入力されたと
    き、入力した前記更新要求の前記アドレスが対応の前記
    プロセッサの所定アドレス空間に該当すると検出された
    とき、前記キャッシュメモリの入力した前記更新要求の
    前記アドレスが格納される前記データ領域の内容を入力
    した前記更新要求に基づいて更新して、 対応の前記プロセッサにより前記キャッシュメモリの他
    の前記プロセッサの前記所定アドレス空間に該当する前
    記アドレスで指定される前記データが更新されたことが
    検出されたとき、更新後の前記データと該データを指定
    するための前記アドレスとを含む前記更新要求を前記バ
    スを介して出力することを特徴とする、請求項16に記
    載のキャッシュ方法。
JP2001375378A 2001-12-10 2001-12-10 キャッシュ装置および方法 Expired - Fee Related JP4043225B2 (ja)

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 true JP2003177962A (ja) 2003-06-27
JP4043225B2 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)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007193784A (ja) * 2006-01-17 2007-08-02 Internatl Business Mach Corp <Ibm> 同報通信範囲を示す無効な整合状態を正確に形成するためのデータ処理システム、キャッシュ・システム、および方法
JP2012038236A (ja) * 2010-08-11 2012-02-23 Toshiba Corp マルチコアプロセッサシステムおよびマルチコアプロセッサ
JP2012242855A (ja) * 2011-05-13 2012-12-10 Canon Inc データ処理装置及びデータ処理方法
JP2020532795A (ja) * 2017-08-31 2020-11-12 レール ビジョン リミテッドRail Vision Ltd 複数計算における高スループットのためのシステムおよび方法

Families Citing this family (18)

* Cited by examiner, † Cited by third party
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 シャープ株式会社 データ処理装置
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
KR101748441B1 (ko) * 2010-10-08 2017-06-19 삼성전자주식회사 거짓 공유 검출 장치 및 방법
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
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
WO2023133830A1 (zh) * 2022-01-14 2023-07-20 华为技术有限公司 共享存储系统、装置和用于无效缓存数据的方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
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 マルチプロセッサシステム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007193784A (ja) * 2006-01-17 2007-08-02 Internatl Business Mach Corp <Ibm> 同報通信範囲を示す無効な整合状態を正確に形成するためのデータ処理システム、キャッシュ・システム、および方法
JP2012038236A (ja) * 2010-08-11 2012-02-23 Toshiba Corp マルチコアプロセッサシステムおよびマルチコアプロセッサ
JP2012242855A (ja) * 2011-05-13 2012-12-10 Canon Inc データ処理装置及びデータ処理方法
US9256439B2 (en) 2011-05-13 2016-02-09 Canon Kabushiki Kaisha Parallel processing of two-dimensional data, storage of plural data of the processing results in a cache line and transfer of the data to a memory as in the cache line
JP2020532795A (ja) * 2017-08-31 2020-11-12 レール ビジョン リミテッドRail Vision Ltd 複数計算における高スループットのためのシステムおよび方法

Also Published As

Publication number Publication date
US20030110360A1 (en) 2003-06-12
US6963953B2 (en) 2005-11-08
JP4043225B2 (ja) 2008-02-06

Similar Documents

Publication Publication Date Title
JP4043225B2 (ja) キャッシュ装置および方法
JP3269967B2 (ja) キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム
US6631448B2 (en) Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol
US6631447B1 (en) Multiprocessor system having controller for controlling the number of processors for which cache coherency must be guaranteed
JP4848771B2 (ja) キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム
EP0817071B1 (en) A multiprocessing system configured to detect and efficiently provide for migratory data access patterns
US5897657A (en) Multiprocessing system employing a coherency protocol including a reply count
JP5221565B2 (ja) スヌープ要求キャッシュを用いたスヌープ・フィルタリング
US5848254A (en) Multiprocessing system using an access to a second memory space to initiate software controlled data prefetch into a first address space
US5950226A (en) Multiprocessing system employing a three-hop communication protocol
EP0390538A2 (en) Hierarchical cache memory apparatus
US8533401B2 (en) Implementing direct access caches in coherent multiprocessors
JPH03253963A (ja) マルチプロセツサ・システム
JP2010507160A (ja) データ処理装置の共有メモリへの書込みアクセス要求の処理
JPH10143482A (ja) エフィシェントな書込み動作を実行するマルチプロセッサ・システム
JPH10149342A (ja) プリフェッチ動作を実行するマルチプロセス・システム
JP2007199999A (ja) マルチプロセッサシステム及びその動作方法
JPH10154100A (ja) 情報処理システム及び装置及びその制御方法
JP2001282764A (ja) マルチプロセッサシステム
US8332592B2 (en) Graphics processor with snoop filter
US7159079B2 (en) Multiprocessor system
US20020112128A1 (en) Mechanism for collapsing store misses in an SMP computer system
KR100841129B1 (ko) 멀티-인터페이스 캐시들 내의 조인트 캐시 일관성 상태들을 위한 방법 및 장치
JP3068469B2 (ja) 2次レベルキャッシュメモリシステム
US7234028B2 (en) Power/performance optimized cache using memory write prevention through write snarfing

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