(57)【特許請求の範囲】
【請求項１】
複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに、前記複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するための該プロセッサに対応したキャッシュ装置であって、
前記キャッシュメモリは前記共有メモリからアドレスが指定されて読出されたデータと指定された前記アドレスとを含む情報が一時的に格納されるデータ領域を複数有し、
前記キャッシュ装置は、前記バスを介して相互に入出力し、
前記キャッシュメモリの対応する前記プロセッサの所定アドレス空間に該当する前記アドレスで指定される前記データが更新されたと検出したとき、該データが他の前記キャッシュメモリに格納されている場合には、該データを指定するための前記アドレスを含む無効化要求を前記バスを介して出力し、
前記無効化要求を前記バスを介して入力したとき、前記キャッシュメモリの入力した前記無効化要求の前記アドレスが格納される前記データ領域の内容を無効にし、
前記所定アドレス空間は前記共有メモリにおいて、前記複数のプロセッサのそれぞれに対応して個別に割当てられて、前記複数プロセッサのうち対応する前記プロセッサにより最も頻繁にアクセスされるデータが格納されることを特徴とする、キャッシュ装置。
【請求項２】
前記キャッシュ装置は、さらに、
前記データを更新するための更新要求を入力したとき、入力した前記更新要求の前記アドレスが対応の前記プロセッサの所定アドレス空間に該当すると検出したとき、前記キャッシュメモリの入力した前記更新要求の前記アドレスが格納される前記データ領域の内容を入力した前記更新要求に基づいて更新し、
対応の前記プロセッサにより前記キャッシュメモリの他の前記プロセッサの前記所定アドレス空間に該当する前記アドレスで指定される前記データが更新されたことを検出したとき、更新後の前記データと該データを指定するための前記アドレスとを含む前記更新要求を前記バスを介して出力することを特徴とする、請求項１に記載のキャッシュ装置。
【請求項３】
前記プロセッサごとに、該プロセッサに対応の前記所定アドレス空間は、前記共有メモリにおいて連続していることを特徴とする、請求項１に記載のキャッシュ装置。
【請求項４】
前記プロセッサごとに、該プロセッサに対応の前記所定アドレス空間は、所定規則に従い前記共有メモリに割当てられることを特徴とする、請求項１に記載のキャッシュ装置。
【請求項５】
前記キャッシュメモリにおいて前記データが更新されるごとに、前記共有メモリの該データも更新されることを特徴とする、請求項１に記載のキャッシュ装置。
【請求項６】
対応の前記プロセッサにより前記キャッシュメモリの他の前記プロセッサの前記所定アドレス空間に格納される前記データが参照された場合に、該データに対応の前記データ領域の内容が前記無効であるときは、該データを指定するための前記アドレスを含むコピー要求を前記バスを介して出力し、
前記コピー要求を前記バスを介して入力して、入力した前記コピー要求の前記アドレスが対応の前記プロセッサの前記所定アドレス空間に該当すると検出したとき、前記キャッシュメモリの入力した前記コピー要求の前記アドレスが格納される該データ領域の内容を読出して、読出結果を前記バスを介して前記コピー要求を出力した前記キャッシュ装置に出力することを特徴とする、請求項１に記載のキャッシュ装置。
【請求項７】
前記読出結果が、読出された前記内容が前記無効であることを示すときは、
前記コピー要求を出力した前記キャッシュ装置および前記コピー要求を入力した前記キャッシュ装置のそれぞれは、前記共有メモリから前記コピー要求の前記アドレスで指定される前記データを読出して前記キャッシュメモリに格納することを特徴とする、請求項６に記載のキャッシュ装置。
【請求項８】
前記キャッシュ装置は、さらに、
前記共有メモリの前記所定アドレス空間ごとに対応して設けられたレジスタを参照し、
前記レジスタには対応の前記所定アドレス空間が割当てられた前記プロセッサを示すためのプロセッサ割当て情報が格納されることを特徴とする、請求項１項に記載のキャッシュ装置。
【請求項９】
前記キャッシュ装置は、入力した前記アドレスは、対応の前記プロセッサの前記所定アドレス空間に該当するか否かを、前記レジスタの参照結果に基づいて、判別することを特徴とする、請求項８に記載のキャッシュ装置。
【請求項１０】
前記レジスタは、前記共有メモリのページ単位に設けられることを特徴とする、請求項８に記載のキャッシュ装置。
【請求項１１】
前記レジスタの内容は任意に可変設定されることを特徴とする、請求項８に記載のキャッシュ装置。
【請求項１２】
前記レジスタの内容は、前記複数プロセッサにおけるプログラム処理により設定されることを特徴とする、請求項１１に記載のキャッシュ装置。
【請求項１３】
前記レジスタの内容は、前記複数プロセッサのそれぞれについて該レジスタに対応の前記所定アドレス空間をアクセスした回数をカウントするカウンタの内容に基づいて設定されることを特徴とする、請求項１１に記載のキャッシュ装置。
【請求項１４】
複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに、前記複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するための該プロセッサに対応したキャッシュ装置であって、
前記キャッシュメモリは前記共有メモリからアドレスが指定されて読出されたデータと指定された前記アドレスとを含む情報が一時的に格納されるデータ領域を複数個有して、
前記キャッシュ装置は前記バスを介して相互に入出力し、前記キャッシュメモリの複数個の前記データ領域のうち、格納する前記アドレスが該キャッシュメモリに対応の前記プロセッサのための所定アドレス空間に該当する１つ以上の前記データ領域をアクセスするための専用アクセス部と、残りの１つ以上の前記データ領域をアクセスするための非専用アクセス部とを有し、
前記専用アクセス部は、
前記データを更新するための更新要求を入力したとき、入力した前記更新要求の前記アドレスが前記所定アドレス空間に該当すると検出したとき、前記キャッシュメモリの入力した前記更新要求の前記アドレスが格納される前記データ領域の内容を入力した前記更新要求に基づいて更新し、
前記非専用アクセス部は、
対応の前記プロセッサにより前記残りデータ領域の前記データが更新されたことを検出したとき、更新後の前記データと該データを指定するための前記アドレスとを含む前記更新要求を前記バスを介して出力し、
前記所定アドレス空間は、前記共有メモリにおいて前記複数のプロセッサのそれぞれに対応して個別に割当てられて、前記複数プロセッサのうち対応する前記プロセッサにより最も頻繁にアクセスされるデータが格納されることを特徴とする、キャッシュ装置。
【請求項１５】
前記専用アクセス部は、
前記データを更新するための更新要求を入力したとき、入力した前記更新要求の前記アドレスが前記所定アドレス空間に該当すると検出したとき、前記キャッシュメモリの入力した前記更新要求の前記アドレスが格納される前記データ領域の内容を入力した前記更新要求に基づいて更新し、
前記非専用アクセス部は、
対応の前記プロセッサにより前記残りデータ領域の前記データが更新されたことを検出したとき、更新後の前記データと該データを指定するための前記アドレスとを含む前記更新要求を前記バスを介して出力することを特徴とする、請求項１４に記載のキャッシュ装置。
【請求項１６】
複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに、前記複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するための該プロセッサに対応したキャッシュ装置におけるキャッシュ方法であって、
前記キャッシュメモリは前記共有メモリからアドレスが指定されて読出されたデータと指定された前記アドレスとを含む情報が一時的に格納されるデータ領域を複数有し、
前記キャッシュ装置は、前記バスを介して相互に入出力し、
前記キャッシュ方法は、
前記キャッシュメモリの対応する前記プロセッサの所定アドレス空間に該当する前記アドレスで指定される前記データが更新されたと検出されたとき、該データが他の前記キャッシュメモリに格納されている場合には、該データを指定するための前記アドレスを含む無効化要求を前記バスを介して出力し、
前記無効化要求を前記バスを介して入力したとき、前記キャッシュメモリの入力した前記無効化要求の前記アドレスが格納される前記データ領域の内容を無効にし、
前記所定アドレス空間は前記共有メモリにおいて、前記複数のプロセッサのそれぞれに対応して個別に割当てられて、前記複数プロセッサのうち対応する前記プロセッサにより最も頻繁にアクセスされるデータが格納されることを特徴とする、キャッシュ方法。
【請求項１７】
前記キャッシュ方法は、さらに、
前記データを更新するための更新要求が入力されたとき、入力した前記更新要求の前記アドレスが対応の前記プロセッサの所定アドレス空間に該当すると検出されたとき、前記キャッシュメモリの入力した前記更新要求の前記アドレスが格納される前記データ領域の内容を入力した前記更新要求に基づいて更新して、
対応の前記プロセッサにより前記キャッシュメモリの他の前記プロセッサの前記所定アドレス空間に該当する前記アドレスで指定される前記データが更新されたことが検出されたとき、更新後の前記データと該データを指定するための前記アドレスとを含む前記更新要求を前記バスを介して出力することを特徴とする、請求項１６に記載のキャッシュ方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はマルチプロセッサシステムで各プロセッサに対応して設けられたキャッシュメモリの内容を制御するキャッシュ装置および方法に関し、特に所定のプロトコルに従いキャッシュメモリの内容を制御するキャッシュ装置および方法に関する。
【０００２】
【従来の技術および発明が解決しようとする課題】
マルチプロセッサシステムでは対象とする処理を高速に実行できる。具体的には対象とする処理を並列に実行可能な複数個のタスクに分割して、各プロセッサは割当てられたタスクを実行することで並列に処理が進行する。このとき、各プロセッサが実行するタスク間で変数などのデータを共有する場合には、プロセッサ間でデータ通信が行なわれる。このように各プロセッサ間（タスク間）で共有されて、後述する共有メモリに記憶されるデータを共有データという。
【０００３】
マルチプロセッサシステムにおいて、プロセッサ間のデータ通信が頻繁に行なわれる場合はプロセッサ間で共有されるメモリ（以下、共有メモリという）を介しての通信が適している。共有メモリと各プロセッサとの間の結合方式を考えるとき、最もハードウェア構造が単純で経済的な結合方式として、共有メモリにアクセスするためのバスを複数プロセッサ間で共有する共有バス方式がある。共有バス上でのデータ通信についての競合（以下、バス競合という）を生じなければ共有メモリへのアクセスに関するコストも低い。しかし、プロセッサ数が増加するとバス競合が起こりデータ通信のオーバーヘッドが増大する。バス競合を大幅に緩和する方法としてスヌープキャッシュが提案され、現在多くのマルチプロセッサシステムで実用化されている。
【０００４】
マルチプロセッサシステムでは、各プロセッサが共有データへのアクセスのために共有メモリに直接アクセスすると共有バスのトラフィックが増大してしまう。そこで、プロセッサごとにプライベートなキャッシュメモリを設けて共有メモリから読出した共有データを該キャッシュメモリに書込んで（コピーして）、以降、該共有データについてアクセス要求があったときには共有メモリではなくて該キャッシュメモリをアクセスすることにより、上述のバス競合を緩和することができる。
【０００５】
マルチプロセッサシステムにおいては、主記憶装置などの共有メモリの内容が複数のキャッシュメモリ上にコピーされるため、主記憶装置とキャッシュメモリ間の内容不一致に加え複数のキャッシュメモリ間での内容の不一致が生じキャッシュコヒーレンス（キャッシュメモリに書込まれた共有データについての一貫性）が維持できなくなる。スヌープキャッシュは、この問題点を共有バスの特徴を生かして解決するものである。共有バスを利用するマルチプロセッサシステムでは、データ通信が１本の共有バスを介して行なわれるので、共有バス上のデータの流れを観測していれば、システムの挙動がほとんど把握できる。スヌープキャッシュはキャッシュメモリについて能動的に共有バスのトランザクションを監視（snoop）することにより、該キャッシュメモリの内容に影響を及ぼすトランザクションを検出するとキャッシュコヒーレンスを維持するため所定処理して、内容の一致を保証する方法であって、内容の一致を保証するための一連のデータの取扱い方をキャッシュ一致プロトコルと呼ぶ。キャッシュ一致プロトコルは、内容を一致させる時期（ライトスルーのときかライトバックのときか）と方法（内容を無効化するか更新するか）によって分類される。
【０００６】
内容を一致させる時期をライトスルー時とするキャッシュ一致プロトコルをライトスルーキャッシュと呼ぶ。ライトスルーキャッシュは最も簡単なキャッシュ一致プロトコルで、キャッシュメモリの各ライン（以下、キャッシュラインと呼ぶ）は有効（Ｖ：valid）と無効（Ｉ：invalid）の２状態しか持たず、したがって、該キャッシュラインの状態を示すタグ（以下、状態タグという）も１ビット割当てれば済む。ライトスルーキャッシュに従えば、制御は簡単であるが、データ書込が行なわれるたびに共有バスが利用されるので、共有バスのトラフィックは増大する。なお、ここでは、キャッシュラインは、キャッシュメモリの１回のアドレス指定によるアクセス単位である。
【０００７】
次に、ライトバックの時期において内容を無効化する方式に分類されるキャッシュ一致プロトコルであるライトバックキャッシュについて基本プロトコルを説明し、該ライトバックキャッシュに含まれるSymmetryプロトコル、Illinoisプロトコル、およびBerkeleyプロトコルについて説明する。
【０００８】
まず、基本プロトコルについて説明する。ライトバックキャッシュでは、キャッシュメモリのキャッシュラインの状態タグには有効（Ｖ）および無効（Ｉ）のいずれかの状態を示すビットの他に該キャッシュラインの内容と共有メモリの内容と一致（Ｃ：Clean）および不一致（Ｄ：Dirty）のいずれかの状態を示すビットが必要とされる。Ｉ（無効）であるキャッシュラインについては、一致または不一致の情報は意味をなさないので、結局キャッシュラインの状態はＩ（無効）、Ｃ（共有メモリの内容と一致）およびＤ（共有メモリの内容と不一致）の３状態のいずれかとなる。ここで、キャッシュラインの状態がＩ（無効）とは、該キャッシュラインの内容が保証されない状態をいう。
【０００９】
次に、Symmetryプロトコルについて説明する。あるプログラム（タスク）でのみ用いられる変数は、通常スタック領域に置かれ、特定のプロセッサのみによりアクセスされる。このため、該変数に対応のキャッシュラインは特定のプロセッサのキャッシュメモリにのみ置かれることになる。上述した基本プロトコルでは、このような変数に最初に書込を行なったときに、他のキャッシュメモリに該変数のコピーが存在しなくても該コピーを無効化するための信号を発生させる必要がある。このことは、キャッシュラインの状態タグに、他のキャッシュメモリに該キャッシュライン（変数）のコピーが存在するかどうかを示すビットを付け加えることにより回避できる。このようなビットが付け加えられたにより、状態タグは対応のキャッシュラインについてＥ（Exclusive：他のキャッシュメモリにコピーは存在しない）およびＳ（Shared：他のキャッシュメモリにコピーが存在するかもしれない）のいずれかの状態が加わる。
【００１０】
次に、Illinoisプロトコルについて説明する。アクセス要求がありキャッシュメモリに該アクセス要求に対応のアドレスに一致するキャッシュラインが存在しないとき（キャッシュミスヒットが起きたとき）、Symmetryプロトコルは、常に共有メモリからデータを読出すのに対し、Illinoisプロトコルはキャッシュミスヒットの起きたキャッシュラインの内容のコピーを他のキャッシュメモリが持っていた場合は、該他のキャッシュメモリから該コピーをキャッシュミスヒットを起こしたキャッシュメモリに転送することになっている。一般には、共有メモリよりもキャッシュメモリの方が高速動作するので、Illinoisプロトコルに従う方法は良さそうに見えるが、コピーを持っている他のキャッシュメモリが複数個存在するときに、どのキャッシュメモリからコピーを転送すべきかを決定することが困難である。
【００１１】
また、マルチプロセッサシステムにおける所定プロセッサが、状態タグが‘Ｄ’のキャッシュラインを有していたときに、他のプロセッサが共有バスを介して該キャッシュラインをアクセスしようとした場合、所定プロセッサはまず該キャッシュラインを共有メモリに転送した後、該キャッシュラインの状態タグを“Ｃ”に更新した後に、他のプロセッサに対して該キャッシュラインの内容を転送する。このとき、Symmetryプロトコルでは、該キャッシュラインが共有メモリに書込まれた後、共有メモリから他のプロセッサに該キャッシュラインが転送されるが、Illinoisプロトコルでは、所定プロセッサのキャッシュメモリの内容が共有メモリに書き戻されるときに、他のプロセッサの対応のキャッシュラインには、同時にデータが書込まれる。
【００１２】
次に、Berkeleyプロトコルについて説明する。上述した所定プロセッサがデータを書込んで対応の状態タグが“Ｄ”となったキャッシュラインに対して、他のプロセッサが読出を行なうと、該キャッシュラインの内容は共有メモリを介することなく、直接に、他のプロセッサに転送される。この結果、該キャッシュラインの状態はDirtyであって、かつ該キャッシュラインのコピーは複数のキャッシュメモリで共有されているので、状態タグは“ＤＳ”（Dirty Shared）を示す。ところが、状態タグが“ＤＳ”であるキャッシュラインのコピーが複数のキャッシュメモリにおいて存在すると、さらなる他のプロセッサが同一キャッシュラインの読出を行なったとき、どのプロセッサから該さらなる他のプロセッサに該キャッシュラインを供給するか判定することが必要になる。そこで、各キャッシュラインについて、いずれのプロセッサ（または該プロセッサに対応のキャッシュメモリ）が最終的にその責任を持つかを決めておくことにする。このように、キャッシュラインについて責任を持つキャッシュメモリまたは共有メモリは、そのキャッシュラインのオーナーであると言い、オーナーの権利のことをオーナーシップと呼ぶ。オーナーは、他から要求があった場合にキャッシュラインを要求元に供給し、共有メモリへの書き戻しについても最終的な責任を負う。オーナーは対応のキャッシュラインがキャッシュメモリから追い出される場合や無効化される場合、責任を持って他のキャッシュメモリにオーナーシップを渡すか共有データに該キャッシュラインの内容を書き戻して、デフォルトのオーナーである共有メモリに対してオーナーシップを戻してやる責任を負う。
【００１３】
次に、内容を一致させる方法が更新することによりなされる更新型スヌープキャッシュプロトコルについて説明する。
【００１４】
更新型スヌープキャッシュプロトコルは、あるキャッシュメモリのキャッシュラインに書込んだデータにより、他のキャッシュメモリにおけるコピーを更新してしまうことにより内容の一致をとるものである。
【００１５】
更新型スヌープキャッシュプロトコルは３状態Fireflyプロトコル、４状態FireflyプロトコルおよびDragonプロトコルに分類される。３状態Firelyプロトコルは、更新型スヌープキャッシュプロトコルで最も単純なものである。３状態Fireflyプロトコルはプロセッサが、状態タグが“ＣＳ”（Clean Shared）のキャッシュラインに書込を行なうと、他のプロセッサのキャッシュメモリについての対応のコピーを更新するとともに共有メモリの内容も更新してしまう。したがって、この場合、キャッシュラインの状態タグは“ＣＳ”であり、“ＤＳ”はありえない。また、状態タグが“ＣＥ”のキャッシュラインに対して書込を行なうとＤＥ（Dirty Exclusive）状態が生じ、この場合は共有バスを利用することなく書込を行なうことができる。他のプロセッサがあるプロセッサのキャッシュメモリから状態タグが“ＤＥ”のキャッシュラインを読出す場合、前述した無効化型の基本プロトコル同様、該キャッシュラインの内容は、一度、共有メモリに書き戻された後、読込まれるので、該キャッシュラインの状態タグは“ＣＳ”となる。この３状態Fireflyプロトコルに従えば、共有メモリとキャッシュメモリとの間で内容の一致を頻繁にとることになるから、Dirtyの状態は複数のキャッシュメモリにおいて生ずることはなく、したがってオーナーシップなどを考慮する必要はない。
【００１６】
次に、４状態Fireflyプロトコルについて説明する。このプロトコルでは、他のプロセッサがあるプロセッサのキャッシュメモリから状態タグが“ＤＥ”のキャッシュラインを読出すときに、Berkeleyプロトコルと同様に共有メモリに該キャッシュラインについての書き戻しをせずに、直接該キャッシュラインは他のプロセッサに対して転送される。このため、Dirty状態のコピーが複数のキャッシュメモリにおいて存在することとなり、オーナーシップの考え方が必要となる。このためBerkeleyプロトコルと同様に４状態のプロトコルが必要とされる。
【００１７】
次に、Dragonプロトコルについて説明する。Dragonプロトコルは、状態タグが“ＣＳ”であるキャッシュラインへのデータの書込時に、共有メモリの内容を更新しないので、やはりDirty状態のコピーが複数のキャッシュメモリにおいて存在する。そこで、Berkeleyプロトコルと同様に、キャッシュラインは“ＳＯ”、“ＥＯ”、“ＥＮ”および“ＳＮ”の４状態をとり得る。状態タグが“ＳＮ”または“ＳＯ”であるキャッシュラインへのデータの書込に際しては、共有メモリの内容は更新されない。さらに、４状態Fireflyプロトコルと同様に、状態タグが“ＳＮ”のキャッシュラインに対して、他のプロセッサがアクセス要求してキャッシュミスヒットを起こした場合も、共有メモリへの書き戻しは行なわれないので、状態タグが“ＳＯ”のキャッシュラインを有するキャッシュメモリから該キャッシュラインの内容が要求元に供給される。Dragonプロトコルでは、状態タグが“ＳＯ”となったキャッシュラインの状態が変化するのは、該キャッシュラインを共有する複数のキャッシュメモリのいずれかにおいて、該キャッシュラインがキャッシュメモリから追い出された場合であり、このときにのみ共有メモリに対して該キャッシュラインの内容が書き戻される。
【００１８】
ここで、上述した各プロトコルについて比較する。共有バスおよび共有メモリを有し、スヌープキャッシュに従うマルチプロセッサシステムにおいて、プロセッサ間の共有データの取扱い方（プロトコル）が共有バスの使用頻度を決定し、該システムのパフォーマンスに大きな影響を及ぼす。これまで提案されている上述したいずれのプロトコルも一長一短があり、すべてのタイプの共有データに対して適しているわけではなく、マルチプロセッサシステムで実行されるプログラムの性質を考慮した上で更新型プロトコルおよび無効化型プロトコルのいずれが適しているかを考察しなければならない。
【００１９】
たとえば、プロセッサのアクセス形態に注目して更新型プロトコルと無効化型プロトコルとを比較した場合は次のようである。ローカル変数など、１つのプロセッサが連続してアクセスする傾向が顕著である変数に対しては無効化型プロトコルが有効であって、多くのプロセッサにより頻繁にデータ交換が行なわれるような変数に対しては更新型プロトコルが有効である。
【００２０】
たとえばキャッシュメモリに関するヒット率とプロセッサ間のデータの共有率に注目して更新型プロトコルと無効化型プロトコルを比較した場合は次のようである。ここでヒット率はキャッシュヒットする割合いい、キャッシュヒットとは必要とするデータがキャッシュメモリに有効に存在する状態をいい、キャッシュミスヒットとは必要とするデータがキャッシュメモリに有効に存在しない状態をいう。
【００２１】
キャッシュメモリを有するマルチプロセッサシステムの効率を決める重要な要因にキャッシュメモリについてのヒット率とキャッシュメモリ（プロセッサ）間のデータの共有率がある。ヒット率が高いほどキャッシュミスヒットによる共有バスのアクセスが少なく、共有率が低いほど共有データに対するライト時のキャッシュヒット（ライトヒットという）によるバスアクセスが少なく、いずれにしてもバス競合が減少し効率が良い。この観点から無効化型プロトコルと更新型プロトコルを比較してみると、明らかに更新型プロトコルの方がヒット率を高くするが、共有率も高くしてしまう。
【００２２】
また、ピンポン効果に注目して更新型プロトコルと無効化型プロトコルを比較する。無効化型プロトコルでは、２つのプロセッサが頻繁に読み書きを行なうキャッシュラインが共有された場合には、２つのプロセッサのうち一方プロセッサが対応のキャッシュメモリのキャッシュラインに書込を行なうと、他方プロセッサのキャッシュメモリの対応のキャッシュライン（コピー）は無効化される。次に、他方プロセッサが対応のキャッシュメモリにおいて該キャッシュライン（コピー）に書込を行なうと、一方プロセッサのキャッシュメモリの対応のキャッシュラインは、まず共有メモリに書き戻され、次に他方プロセッサに転送されて他方プロセッサのキャッシュメモリに書込まれ、さらに他方プロセッサが該キャッシュラインに書込を行なうことにより、一方プロセッサの該キャッシュラインに関して無効化が行なわれる。これは、無効化型プロトコルの最も厄介で効率の悪い部分である。
【００２３】
詳述すると、２つのプロセッサが共有するキャッシュラインについて互いに書込あるいは読出を行なうと、このような効率の悪い操作が書込あるいは読出の都度行なわれて、読出あるいは書込の対象とされるキャッシュラインは両方のプロセッサに対応のキャッシュメモリ上を互いに無効化されながら、行き来しなければならない。このような状態をピンポン効果と呼ぶ。ピンポン効果は、２つのプログラム（タスク）が互いにかつ頻繁にデータをやり取りする、言わば本格的な並列プログラム処理では必ず発生してしまう。これに対して更新型プロトコルは、キャッシュラインに書込んだデータで対応のコピー全てを更新してしまうので、ピンポン効果が生じることはない。
【００２４】
上述した更新型プロトコルではFalse sharingという課題を有する。False sharingについて以下に説明する。２つのプロセッサ間でのデータのやり取りを想定する。２つのプロセッサのうちの一方プロセッサで実行されていたプログラム（タスク）が他方プロセッサに移動したとすると、以降、一方プロセッサでは、このタスクに関する変数を使うことはない。しかしながら、更新型プロトコルではキャッシュラインは無効化されることはないため、変数のデータが書込まれているキャッシュラインはキャッシュメモリから追い出されるまで有効である。このため、他方プロセッサがそのタスクの実行時に該変数のキャッシュラインにデータを書込むと、必要ないのに、共有バスを使用して一方プロセッサのキャッシュメモリにおける対応のキャッシュラインのデータ（一方プロセッサでは使われないデータ）を更新しなければならない。
【００２５】
これと似た状況は、以下のようなケースでも生じる。一方プロセッサが使うローカル変数があるキャッシュラインの上半分の領域に格納され、他方プロセッサが使用するローカル変数が該キャッシュラインの下半分領域に格納されているとした場合、更新型プロトコルでは変数に書込が行なわれるたびに、意味のないデータの更新を行なわなければならない。このように、キャッシュラインが意味なく共有されることをFalse sharingという。更新型プロトコルでは特にFalse sharingが生じているときに共有バスにおける無駄なトラフィックが増加する。
【００２６】
このような理由からメモリ領域ごと（変数ごとやワークエリアごと）に適したキャッシュメモリについてのキャッシュ一致プロトコルの種類は異なるといえる。共有バスのトラフィックを減らすことができれば、バス競合を抑制して接続可能なプロセッサ数が増え、システム全体の性能が高まる。そこで従来、多くのシステムでは、キャッシュ一致プロトコルが１種類に固定されているが、上述したような理由により、メモリ領域ごとに動的にキャッシュ一致プロトコルを切換制御することで共有バスのトラフィックを減少させてパフォーマンスを向上させるための工夫がなされている。たとえば、無効化型プロトコルと更新型プロトコルを以下のように混在して用いる方法が提案されている。
【００２７】
たとえばCompetitive snoopという方法がある。これは、最初は更新型プロトコルを適用しておき、キャッシュラインの内容が更新される回数をカウントし、所定回数を超えると無効化型プロトコルに変更する方法である。この方法は、ある程度無駄なデータ更新を回避できるが、頻繁にプロセッサ間でデータ交換を行なっている最中にデータが無効化されてしまう場合があり、性能についての改善効果は大きいと言えない。
【００２８】
また、プロセッサごとに適用するプロトコルの種類を選択する方法がある。この方法は、プログラム（タスク）の実行中に、該プログラムの性質に応じて無効化型プロトコルと更新型プロトコルとを切換えることができるならば、より良い効果を得ることができるということに注目した方法である。具体的には、キャッシュメモリを制御する機構を更新型プロトコルおよび無効化型プロトコルのそれぞれについて個別に構築して、プログラム実行時にいずれか一方の機構を用いるように切換えるという方法が想定される。しかしながら、この方法は、タスク実行中の各時点で無効化型プロトコルと更新型プロトコルのどちらが有効かはシステム全体で１つに決めるべきものではなく、むしろ各キャッシュメモリごと（各プロセッサごと）に決定すべきものであること、および無効化型プロトコルと更新型プロトコルの間で切換えている途中に発生するであろう共有データに対する書込動作に関してもコンシステンシーが保証されなければならないことの課題を有する。特に、スヌープキャッシュにおいては分散型の制御を行なうがゆえに、後者の課題が解消されなければならない。上述したような課題を解消するために次のような方策がとられる。
【００２９】
各キャッシュメモリに１つの属性情報を割当てる。この属性情報は、「無効化モード」および「更新モード」のいずれか一方を示す。あるキャッシュメモリにおいて共有データに対するライトヒットが発生したときに、他のキャッシュメモリに存在するコピーは、他のキャッシュメモリの属性情報が「無効化モード」を示すとき無効化され、「更新モード」を示すとき更新されるとする。明らかに、この方法は「無効化モード」と「更新モード」の任意の組合せに対してコンシステンシを保証するので、キャッシュメモリを制御するための機構が実際に実現できれば、上述した前者の課題は解決される。すなわち、無効化型プロトコルと更新型プロトコルの両者が同時に共存することになる。さらに、この機構に関して、各キャッシュメモリの属性情報を切換える操作と共有データに対する書込とは排他的に制御されるという条件を満足すれば上述した後者の問題も解決される。
【００３０】
スヌープキャッシュのような分散型の制御を行なう場合において上述した排他的制御が満たされているならば、キャッシュメモリ間の同期をとることなく属性情報の切換ができる、すなわちプログラム実行時のダイナミックな属性の切換が可能となる。ただし、同じメモリに対してプロセッサごとにプロトコルを変更する利点は少ない。
【００３１】
ここで、共有メモリのページごとにキャッシュ一致プロトコルの種類を選択する方法について述べる。「細粒度並列実行支援機構」（松本、ｐ９１〜９８（計算機アーキテクチャ研究報告会Ｎｏ７７−１２、情報処理学会、１９９８．７．１４）では、ページごとに動的にキャッシュ一致プロトコルの種類を切換えることができれば、プロトコルが１種類に固定されることによる短所をなくすことができるとの技術が示されている。
【００３２】
該文献に開示の技術では、動的なプロトコル切換のために、アドレスごとにプロトコルのタイプを表わす情報を付加したのでは、その情報のための記憶領域や管理のハードウェアがかなりの量となり効率的でないので、一定の記憶領域ごとにプロトコルのタイプを表わす情報を付加し管理する。ここでは実現の容易さからページ管理機構に注目し、共有メモリのページごとにその情報を付加することにする。このページに属するデータはどのタイプのプロトコルを使ってアクセスするかを示す情報である。プロセッサが共有メモリをアクセスする際に、このアクセスはどのタイプのプロトコルで処理しなければならないかを示すため、該プロトコルのタイプを示すビットを外部に出力するための信号線をプロセッサごとに設ける。また、キャッシュメモリから共有バス上にアクセス要求が出力されるとき、つまり共有バスを介してデータ通信が必要なときには、共有バスにもプロトコルのタイプを示す信号線が出力され、他のプロセッサにおいては、キャッシュメモリに関してこの信号線における信号に基づいてプロトコルを選択しながら共有バスをスヌープ（監視）する。コンパイラによるアクセスパターンについての解析やプログラマによるプロトコルタイプの指示などによって、変数やワークエリアをそれに適したプロトコルのタイプを持つ共有メモリにおけるページに割当てる。
【００３３】
上述の「細粒度並列実行支援機構」で開示される技術では、プロセッサごとに無効化型プロトコルと更新型プロトコルについての選択をすることはできないから、よりきめ細やかなキャッシュの制御は到底できない。
【００３４】
上述した背景によれば、マルチプロセッサシステムでプロセッサ間のデータ受け渡しが頻繁に生じるケースでは、更新型プロトコルが非常に適している。更新型プロトコルが有する課題は、False sharingである。そこで、更新型プロトコルを基本にしFalse sharingを削減することが望まれる。具体的には、あるプロセッサが頻繁にアクセスする変数のアドレスがわかっていれば、False sharingを減らし、かつキャッシュメモリについてのヒット率を高めることができる。
【００３５】
文献“高速並列処理ワークステーション（ＴＯＰ−１）”（ｐ１４５６〜１４５７：情報処理学会第３８回（昭和６４年前期）全国大会）においても、更新型プロトコルと無効化型プロトコルをともに用いることについての示唆はなされているけれども、上述したようなFalse sharingを回避するための示唆は何らなされていないので、結果として共有バスのバス競合を回避することはできない。
【００３６】
特開２００１−１０９６６２号公報では、マルチプロセッサシステムにおけるキャッシュメモリへのアクセス性能を高めるために、キャッシュメモリ上のデータを、ブロック単位でその状態を細分化して管理することが示されている。該公報に示される方法によってもFalse sharingを抑制することはできないから、結果として無駄な共有バス利用を回避することはできない。
【００３７】
それゆえにこの発明の目的は、キャッシュメモリ間のデータの共有率を低下させることのできるキャッシュ装置および方法を提供することである。
【００３８】
この発明の他の目的は、キャッシュメモリについてヒット率を向上させることのできるキャッシュ装置および方法を提供することである。
【００３９】
【課題を解決するための手段】
この発明のある局面に係るキャッシュ装置は、複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに、複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するための該プロセッサに対応して備えられる。このキャッシュメモリは共有メモリからアドレスが指定されて読出されたデータと指定されたアドレスとを含む情報が一時的に格納されるデータ領域を複数有する。キャッシュ装置は、バスを介して相互に入出力する。
【００４０】
キャッシュ装置は、キャッシュメモリの対応するプロセッサの所定アドレス空間に該当するアドレスで指定されるデータが更新されたと検出したとき、該データが他のキャッシュメモリに格納されている場合には、該データを指定するためのアドレスを含む無効化要求をバスを介して出力する。そして、無効化要求をバスを介して他のキャッシュ装置から入力したとき、キャッシュメモリの入力した無効化要求のアドレスが格納されるデータ領域の内容を無効にする。
【００４１】
なお、この所定アドレス空間は共有メモリにおいて、複数のプロセッサのそれぞれに対応して個別に割当てられて、複数プロセッサのうち対応するプロセッサにより最も頻繁にアクセスされるデータが格納される。
【００４２】
したがって、あるキャッシュ装置は制御対象のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータが更新されて、該データが他のキャッシュメモリに格納されているときは、無効化要求をバスを介して出力するので、他のキャッシュメモリを制御するキャッシュ装置は該無効化要求をバス介して入力して、自己が制御するキャッシュメモリ（他のキャッシュメモリ）の該データのデータ領域の内容を無効にする。
【００４３】
それゆえに、複数キャッシュメモリ間において、同一アドレスで指定されるデータが共有されている場合には、該アドレスを自己の所定アドレス空間に含むプロセッサに対応のキャッシュメモリを除く他のキャッシュメモリ全てにおいて、該アドレスのデータ領域の内容（アクセスされる可能性の低い内容）を無効にできるから、複数キャッシュメモリ間のデータ共有率を低くできる。このことから、従来のようなピンポン効果またはfalse  sharingも回避できる、言いかえるとバスの通信量およびバスに関する消費電力なども削減できる。また、データ共有率を低減しながらも各キャッシュメモリにおいて対応プロセッサの所定アドレス空間のデータは常に最新の状態となるように更新されるから高めのヒット率を得ることもできる。
【００４４】
またデータ領域の情報には対応のデータについて、該データの複数種類の状態を示す状態タグがさらに含まれて、複数種類の状態には、該データが複数のキャッシュメモリで共有されている状態が含まれてもよい。したがって、キャッシュ装置はデータの状態タグに基づいて該データが他のキャッシュメモリに格納されているか否か検出できる。
【００４５】
上述のキャッシュ装置は、さらに次の特徴を有してもよい。つまり、データを更新するための更新要求を入力したとき、入力した更新要求のアドレスが対応のプロセッサの所定アドレス空間に該当すると検出したとき、キャッシュメモリの入力した更新要求のアドレスが格納されるデータ領域の内容を入力した更新要求に基づいて更新する。そして、対応のプロセッサによりキャッシュメモリの他のプロセッサの所定アドレス空間に該当するアドレスで指定されるデータが更新されたことを検出したとき、更新後のデータと該データを指定するためのアドレスとを含む更新要求をバスを介して出力する。
【００４６】
したがって、あるキャッシュ装置は制御対象のキャッシュメモリにおいて、他のプロセッサの所定アドレス空間のデータが更新されたと検出したときは、更新要求をバスを介して出力するので、他のプロセッサに対応のキャッシュ装置は該更新要求を入力して、自己が制御するキャッシュメモリの該データを同様に更新する。
【００４７】
それゆえに、複数プロセッサのそれぞれに対応のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータは、すなわち該プロセッサにより最も頻繁にアクセスされ得るデータは常に最新の状態となるように更新されるから、全てのキャッシュメモリにおいてデータのヒット率は高くなる。
【００４８】
この発明に係るキャッシュ装置は次のように構成されてもよい。つまり、キャッシュ装置は複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するための該プロセッサに対応して備えられる。キャッシュメモリは共有メモリからアドレスが指定されて読出されたデータと指定されたアドレスとを含む情報が一時的に格納されるデータ領域を複数有する。キャッシュ装置は、バスを介して相互に入出力する。
【００４９】
キャッシュ装置は、データを更新するための更新要求を入力したとき、入力した更新要求のアドレスが対応のプロセッサの所定アドレス空間に該当すると検出されたときは、キャッシュメモリの入力した更新要求のアドレスが格納されるデータ領域の内容を入力した更新要求に基づいて更新する。そして、キャッシュ装置は、対応のプロセッサによりキャッシュメモリの他のプロセッサの所定アドレス空間に該当するアドレスで指定されるデータが更新されたことが検出されたときは、更新後のデータと該データを指定するためのアドレスとを含む更新要求をバスを介して出力する。
【００５０】
なお、この所定アドレス空間は、共有メモリにおいて、複数のプロセッサのそれぞれに対応して個別に割当てられて、複数プロセッサのうち対応するプロセッサにより最も頻繁にアクセスされるデータが格納される。
【００５１】
したがって、あるキャッシュ装置は制御対象のキャッシュメモリにおいて、他のプロセッサの所定アドレス空間のデータが更新されたと検出しときは、更新要求をバスを介して出力するので、他のプロセッサに対応のキャッシュ装置は該更新要求を入力して、自己が制御するキャッシュメモリの該データを同様に更新する。
【００５２】
それゆえに、複数プロセッサのそれぞれに対応のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータは、すなわち該プロセッサにより最も頻繁にアクセスされ得るデータは常に最新の状態となるように更新されるから、全てのキャッシュメモリにおいてデータのヒット率は高くなる。これに伴い、ミスヒットに起因して共有メモリからキャッシュメモリへデータが転送されるのを回避できるので、バスの通信量を少なくできる。
【００５３】
上述のキャッシュ装置は、更新要求をバスを介して入力するか、または対応するプロセッサから入力するので、対応のプロセッサの所定アドレス空間のデータが他のプロセッサにより更新された場合でも、対応のプロセッサの所定アドレス空間のデータが該プロセッサにより更新された場合でも、対応のプロセッサにより最も頻繁にアクセスされ得るデータを常に最新の状態となるように更新できる。
【００５４】
上述のキャッシュ装置に対応のプロセッサごとに、該プロセッサに対応の所定アドレス空間は、共有メモリにおいて連続していてもよい。
【００５５】
したがって、プロセッサ毎の所定アドレス空間を一意に特定できるから、キャッシュ装置はあるデータのアドレスが対応プロセッサの所定アドレス空間に該当するか否かを簡単に検出できる。
【００５６】
上述のキャッシュ装置に対応のプロセッサごとに、該プロセッサに対応の所定アドレス空間は、所定規則に従い共有メモリに割当てられてもよい。
【００５７】
したがって、キャッシュ装置はあるデータのアドレスが対応プロセッサの所定アドレス空間に該当するか否かを所定規則に基づいて検出できる。
【００５８】
上述のキャッシュ装置が制御するキャッシュメモリにおいてデータが更新されるごとに、共有メモリの該データも更新されるようにしてもよい。
【００５９】
したがって、キャッシュメモリと共有メモリの内容の一致はライトスルーにより行われるから、常に両者の内容を一致させることができる。
【００６０】
上述のキャッシュ装置は、次の特徴を有してもよい。つまりキャッシュ装置は対応のプロセッサによりキャッシュメモリの他のプロセッサの所定アドレス空間に格納されるデータが参照された場合に、該データに対応のデータ領域の内容が無効であるときは、該データを指定するためのアドレスを含むコピー要求をバスを介して出力する。そして、コピー要求をバスを介して入力して、入力したコピー要求のアドレスが対応のプロセッサの所定アドレス空間に該当すると検出したときは、キャッシュメモリの入力したコピー要求のアドレスが格納される該データ領域の内容を読出して、読出結果をバスを介してコピー要求を出力したキャッシュ装置に出力する。
【００６１】
したがって、あるプロセッサにより他のプロセッサの所定アドレス空間のデータが参照されたとき、該データが無効であったとしても、この他のプロセッサに対応のキャッシュメモリの所定アドレス空間のデータが該プロセッサに対して参照のために供給される。それゆえに、データが供給されたプロセッサでは処理を中断させることなく実行できる。
【００６２】
また、前述の複数種類の状態には上記の無効の状態が含まれてもよい。したがって、キャッシュ装置はデータの状態タグに基づいて無効か否かを検出できる。
【００６３】
また、上記の読出結果が、読出された内容が無効であることを示すときは、コピー要求を出力したキャッシュ装置およびコピー要求を入力したキャッシュ装置のそれぞれは、共有メモリからコピー要求のアドレスで指定されるデータを読出してキャッシュメモリに格納するようにしてもよい。
【００６４】
したがって、あるプロセッサにより他のプロセッサの所定アドレス空間のデータの参照されたとき、あるプロセッサに対応のキャッシュメモリおよび他のプロセッサに対応のキャッシュメモリにおいて該データが無効であったとしても、該データは速やかに共有メモリから両キャッシュメモリのそれぞれに転送される。
【００６５】
それゆえに、あるプロセッサではキャッシュメモリを介して参照すべきデータが供給されるので処理を中断させることなく実行できる。また他のプロセッサでは、自己の所定アドレス空間のデータが対応のキャッシュメモリに格納されることになって、その後の該データについてのヒット率を高くできる。
【００６６】
上述のキャッシュ装置は、共有メモリの所定アドレス空間ごとに対応して設けられたレジスタを参照するようにしてもよい。このレジスタには対応の所定アドレス空間が割当てられたプロセッサを示すためのプロセッサ割当て情報が格納される。
【００６７】
したがって、キャッシュ装置はあるデータのアドレスが対応プロセッサの所定アドレス空間に該当するか否かを、該所定アドレス空間アドレス空間のレジスタのプロセッサ割当て情報に基づいて検出できる。
【００６８】
上述のキャッシュ装置は、アドレスが、対応のプロセッサの所定アドレス空間に該当するか否かを、レジスタの参照結果に基づいて判別してもよい。
【００６９】
上述のレジスタは、共有メモリのページ単位に設けられてもよいから、プロセッサ毎の所定アドレス空間の割り当てをページ単位で任意に行うことができる。
【００７０】
上述のレジスタは、共有メモリのアドレス単位に設けられてもよいから、プロセッサ毎の所定アドレス空間の割り当てをアドレス単位で任意に行うことができる。
【００７１】
上述のレジスタの内容は任意に可変設定されてもよいから、複数プロセッサにおいて実行される処理内容に応じて、最適となるようにレジスタ内容を設定できる。
【００７２】
上述のレジスタの内容は、複数プロセッサにおけるプログラムに従う処理により設定されてもよい。たとえば、このプログラム中で各所定アドレス空間に関する情報を宣言しておくことで、所定アドレス空間が該プログラムの処理内容に対応して最適となるように予め確保できるから、該処理を高速に（効率よく）実行できる。
【００７３】
上述のレジスタの内容は、複数プロセッサのそれぞれについて該レジスタに対応の所定アドレス空間をアクセスした回数をカウントするカウンタの内容に基づいて設定されてもよい。
【００７４】
上述のレジスタの内容は、複数プロセッサにおけるプログラムに従い実行される処理の内容に応じて設定されるカウンタの内容に基づいて設定できる。それゆえに、プログラムの実行中に動的に各プロセッサに対応の所定アドレス空間が該プログラムの処理内容に対応して最適となるように確保できる。
【００７５】
この発明のさらなる他の局面に係るキャッシュ装置は、複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに、複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するために該プロセッサに対応して備えられる。
【００７６】
キャッシュメモリは共有メモリからアドレスが指定されて読出されたデータと指定されたアドレスとを含む情報が一時的に格納されるデータ領域を複数個有しする。キャッシュ装置はバスを介して相互に入出力する。キャッシュ装置は、複数個のデータ領域のうち格納するアドレスが該キャッシュメモリに対応のプロセッサのための所定アドレス空間に該当する１つ以上のデータ領域をアクセスするための専用アクセス部と、残りの１つ以上のデータ領域をアクセスする非専用アクセス部とを有する。
【００７７】
専用アクセス部は、キャッシュメモリが設けられたプロセッサの所定アドレス空間に該当するアドレスで指定されるデータが更新されたと検出したとき、該データが他のキャッシュメモリに格納されている場合には、該データを指定するためのアドレスを含む無効化要求をバスを介して出力する。非専用アクセス部は、無効化要求をバスを介して入力したとき、残りデータ領域の入力した無効化要求のアドレスが格納されるデータ領域の内容を無効にする。この所定アドレス空間は共有メモリにおいて、複数のプロセッサのそれぞれに対応して個別に割当てられて、複数プロセッサのうち対応するプロセッサにより最も頻繁にアクセスされるデータが格納される。
【００７８】
したがって、あるキャッシュ装置の専用アクセス部は制御対象のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータが更新されて、該データが他のキャッシュメモリに格納されているときは、無効化要求をバスを介して出力するので、他のキャッシュメモリを制御するキャッシュ装置の非専用アクセス部は該無効化要求をバス介して入力して、自己が制御するキャッシュメモリ（他のキャッシュメモリ）の該データのデータ領域の内容を無効にできる。
【００７９】
それゆえに、複数キャッシュメモリ間において、同一アドレスで指定されるデータが共有されている場合には、該アドレスを自己の所定アドレス空間に含むプロセッサに対応のキャッシュメモリを除く他のキャッシュメモリ全てにおいて該アドレスのデータ領域の内容を無効にできるから、複数キャッシュメモリ間のデータの共有率を低くできる。このことから、従来のようなピンポン効果またはfalse  sharingも回避できる、言いかえるとバスの通信量およびバスに関する消費電力なども削減できる。
【００８０】
上述のキャッシュ装置は次のような特徴を有してもよい。つまり、専用アクセス部は、データを更新するための更新要求を入力したとき、入力した更新要求のアドレスが所定アドレス空間に該当すると検出したとき、キャッシュメモリの入力した更新要求のアドレスが格納されるデータ領域の内容を入力した更新要求に基づいて更新する。そして、非専用アクセス部は、対応のプロセッサにより残りデータ領域のデータが更新されたことを検出したとき、更新後のデータと該データを指定するためのアドレスとを含む更新要求をバスを介して出力する。
【００８１】
したがって、あるキャッシュ装置の非専用アクセス部は制御対象のキャッシュメモリにおいて、他のプロセッサの所定アドレス空間のデータが更新されたと検出したときは、更新要求をバスを介して出力するので、他のプロセッサに対応のキャッシュ装置の専用アクセス部は該更新要求を入力して、自己が制御するキャッシュメモリの該データを同様に更新できる。
【００８２】
それゆえに、複数プロセッサのそれぞれに対応のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータは、すなわち該プロセッサにより最も頻繁にアクセスされ得るデータは常に最新の状態となるように更新されるから、全てのキャッシュメモリにおいてデータのヒット率は高くなる。
【００８３】
この発明に係るキャッシュ装置は次のように構成されてもよい。つまり、キャッシュ装置は複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに、複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するための該プロセッサに対応して備えられる。
【００８４】
キャッシュメモリは前記共有メモリからアドレスが指定されて読出されたデータと指定されたアドレスとを含む情報が一時的に格納されるデータ領域を複数個有する。キャッシュ装置はバスを介して相互に入出力する。キャッシュ装置は専用アクセス部と非専用アクセス部とを有する。
【００８５】
専用アクセス部は、キャッシュメモリの複数個のデータ領域のうち、格納するアドレスが該キャッシュメモリに対応のプロセッサのための所定アドレス空間に該当する１つ以上のデータ領域をアクセスし、非専用アクセス部は残りの１つ以上のデータ領域をアクセスする。
【００８６】
専用アクセス部は、データを更新するための更新要求を入力したとき、入力した更新要求のアドレスが対応のプロセッサのための所定アドレス空間に該当すると検出したとき、キャッシュメモリの入力した更新要求のアドレスが格納されるデータ領域の内容を入力した更新要求に基づいて更新する。非専用アクセス部は、対応のプロセッサにより残りデータ領域のデータが更新されたことを検出したとき、更新後のデータと該データを指定するためのアドレスとを含む更新要求をバスを介して出力する。なお、所定アドレス空間は、共有メモリにおいて複数のプロセッサのそれぞれに対応して個別に割当てられて、複数プロセッサのうち対応するプロセッサにより最も頻繁にアクセスされるデータが格納される。
【００８７】
したがって、あるキャッシュ装置の非専用アクセス部は制御対象のキャッシュメモリにおいて、他のプロセッサの所定アドレス空間のデータが更新されたと検出しときは、更新要求をバスを介して出力するので、他のプロセッサに対応のキャッシュ装置の専用アクセス部は該更新要求を入力して、自己が制御するキャッシュメモリの該データを同様に更新できる。
【００８８】
それゆえに、複数プロセッサのそれぞれに対応のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータは、すなわち該プロセッサにより最も頻繁にアクセスされ得るデータは常に最新の状態となるように更新されるから、全てのキャッシュメモリにおいてデータのヒット率は高くなる。これに伴い、ミスヒットに起因して共有メモリからキャッシュメモリへデータが転送されるのを回避できるので、バスの通信量を少なくできる。
【００８９】
また、各キャッシュメモリでは対応のプロセッサの所定アドレス空間のデータについてのアクセス処理が集中するけれども、各キャッシュ装置の専用アクセス部は対応プロセッサの所定アドレス空間についての制御に集中できるから、各キャッシュ装置はキャッシュメモリについて高速に制御できる。
【００９０】
この発明のさらなる他の局面に係るキャッシュ方法はキャッシュ装置に適用される。このキャッシュ装置は複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに、複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するために該プロセッサに対応して備えられる。
【００９１】
キャッシュメモリは共有メモリからアドレスが指定されて読出されたデータと指定されたアドレスとを含む情報が一時的に格納されるデータ領域を複数有する。キャッシュ装置は、バスを介して相互に入出力する。
【００９２】
キャッシュ方法では、キャッシュメモリの対応するプロセッサの所定アドレス空間に該当するアドレスで指定されるデータが更新されたと検出されたとき、該データが他のキャッシュメモリに格納されている場合には、該データを指定するためのアドレスを含む無効化要求がバスを介して出力される。そして、無効化要求がバスを介して入力されたとき、キャッシュメモリの入力した無効化要求のアドレスが格納されるデータ領域の内容は無効される。
【００９３】
なお、所定アドレス空間は共有メモリにおいて、複数のプロセッサのそれぞれに対応して個別に割当てられて、複数プロセッサのうち対応するプロセッサにより最も頻繁にアクセスされるデータが格納される。
【００９４】
したがって、あるキャッシュ装置では制御対象のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータが更新されて、該データが他のキャッシュメモリに格納されているときは、無効化要求がバスを介して出力されるので、他のキャッシュメモリを制御するキャッシュ装置では該無効化要求はバス介して入力されて、自己が制御するキャッシュメモリ（他のキャッシュメモリ）の該データのデータ領域の内容は無効にされる。
【００９５】
それゆえに、複数キャッシュメモリ間において、同一アドレスで指定されるデータが共有されている場合には、該アドレスを自己の所定アドレス空間に含むプロセッサに対応のキャッシュメモリを除く他のキャッシュメモリ全てにおいて該アドレスのデータ領域の内容を無効にできるから、複数キャッシュメモリ間のデータの共有率を低くできる。このことから、従来のようなピンポン効果またはfalse  sharingも回避できる、言いかえるとバスの通信量およびバスに関する消費電力なども削減できる。
【００９６】
上述のキャッシュ方法はさらに次のような特徴を有してもよい。つまり、キャッシュ方法によれば、データを更新するための更新要求が入力されたとき、入力された更新要求のアドレスが対応のプロセッサの所定アドレス空間に該当すると検出されたとき、キャッシュメモリの入力した更新要求のアドレスが格納されるデータ領域の内容は入力した更新要求に基づいて更新される。そして、対応のプロセッサによりキャッシュメモリの他のプロセッサの所定アドレス空間に該当するアドレスで指定されるデータが更新されたことが検出されたとき、更新後のデータと該データを指定するためのアドレスとを含む更新要求はバスを介して出力される。
【００９７】
したがって、あるキャッシュ装置の制御対象のキャッシュメモリにおいて、他のプロセッサの所定アドレス空間のデータが更新されたと検出しときは、更新要求をバスを介して出力するので、他のプロセッサに対応のキャッシュ装置では該更新要求が入力されて、該キャッシュ装置が制御するキャッシュメモリの該データは同様に更新される。
【００９８】
それゆえに、複数プロセッサのそれぞれに対応のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータは、すなわち該プロセッサにより最も頻繁にアクセスされ得るデータは常に最新の状態となるように更新されるから、全てのキャッシュメモリにおいてデータのヒット率は高くなる。これに伴い、ミスヒットに起因して共有メモリからキャッシュメモリへデータが転送されるのを回避できるので、バスの通信量を少なくできる。
【００９９】
この発明に係るキャッシュ方法は、キャッシュ装置に適用されて次のように構成されてもよい。このキャッシュ装置は複数プロセッサにより共有されてアクセスされる共有メモリがバスを介して接続されるとともに複数プロセッサのそれぞれについて設けられたキャッシュメモリを制御するために該プロセッサに対応して備えられる。
【０１００】
このキャッシュメモリは共有メモリからアドレスが指定されて読出されたデータと指定されたアドレスとを含む情報が一時的に格納されるデータ領域を複数有する。キャッシュ装置は、バスを介して相互に入出力する。
【０１０１】
キャッシュ方法によれば、データを更新するための更新要求が入力されたとき、入力された更新要求のアドレスが対応のプロセッサの所定アドレス空間に該当すると検出されたとき、キャッシュメモリの入力した更新要求のアドレスが格納されるデータ領域の内容は入力した更新要求に基づいて更新される。そして、対応のプロセッサによりキャッシュメモリの他のプロセッサの所定アドレス空間に該当するアドレスで指定されるデータが更新されたことが検出されたとき、更新後のデータと該データを指定するためのアドレスとを含む更新要求はバスを介して出力される。
【０１０２】
なお、所定アドレス空間は、共有メモリにおいて、複数のプロセッサのそれぞれに対応して個別に割当てられて、複数プロセッサのうち対応するプロセッサにより最も頻繁にアクセスされるデータが格納される。
【０１０３】
したがって、あるキャッシュ装置の制御対象のキャッシュメモリにおいて、他のプロセッサの所定アドレス空間のデータが更新されたと検出しときは、更新要求をバスを介して出力するので、他のプロセッサに対応のキャッシュ装置では該更新要求が入力されて、該キャッシュ装置が制御するキャッシュメモリの該データは同様に更新される。
【０１０４】
それゆえに、複数プロセッサのそれぞれに対応のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータは、すなわち該プロセッサにより最も頻繁にアクセスされ得るデータは常に最新の状態となるように更新されるから、全てのキャッシュメモリにおいてデータのヒット率は高くなる。これに伴い、ミスヒットに起因して共有メモリからキャッシュメモリへデータが転送されるのを回避できるので、バスの通信量を少なくできる。
【０１０５】
【発明の実施の形態】
以下、この発明の各実施の形態について図面を参照し詳細に説明する。各実施の形態ではマルチプロセッサシステムは４つのプロセッサを含むとしているが、含まれるプロセッサ台数は２台以上であれば、これに限定されない。
【０１０６】
（実施の形態１）
図１には、この発明の実施の形態１におけるキャッシュ一致プロトコルに従う状態遷移が示されて、図２には、本実施の形態１におけるマルチプロセッサシステムの概略構成が示されて、図３には、本実施の形態１におけるキャッシュ装置の構成が周辺部と関連づけて示される。
【０１０７】
図２においてマルチプロセッサシステム１はそれぞれがＣＰＵ（中央処理装置）を含むプロセッサＰＡ、ＰＢ、ＰＣおよびＰＤ、これらプロセッサのそれぞれに対して接続されたキャッシュ装置ＣＡ、ＣＢ、ＣＣおよびＣＤ、共有バス２、および共有メモリ４を含む主記憶装置３を備える。このマルチプロセッサシステム１ではキャッシュスヌープが採用されている。ここでは、キャッシュラインと区別するために、共有メモリ４の１回のアドレス指定によりアクセスされる領域をメモリラインと呼ぶ。
【０１０８】
共有メモリ４上に各メモリラインが、マルチプロセッサシステム１内のいずれのプロセッサから頻繁にアクセスされるかが予めわかっていると想定して、共有メモリ４上においてあるプロセッサが最も頻繁にアクセスするデータが格納される領域を、該プロセッサの責任領域と呼ぶ。本実施の形態１では、図２に示されるように共有メモリ４上において、先頭からプロセッサＰＡ、ＰＢ、ＰＣおよびＰＤのそれぞれについての連続した責任領域１０Ａ、１０Ｂ、１０Ｃおよび１０Ｄが順に割付けられている。
【０１０９】
キャッシュ装置ＣＡ、ＣＢ、ＣＣおよびＣＤそれぞれは同様の構成を有するので、ここではキャッシュ装置ＣＡについて説明する。図３を参照して、キャッシュ装置ＣＡは、キャッシュコントローラ５およびキャッシュメモリ６を含む。キャッシュコントローラ５はプロセッサＩＦ（インターフェイスの略）７、キャッシュメモリ６をアクセスするキャッシュ制御管理部８、バスＩＦ９、ライン状態管理部１１、責任領域判定部１２およびキャッシュＩＦ１３を含む。共有バス２は、キャッシュ装置間のデータ通信のためのキャッシュ間通信線２０と各キャッシュ装置と主記憶装置３間の通信のためのシステムバス２１を含む。
【０１１０】
キャッシュメモリ６は複数のキャッシュライン１８を有する。キャッシュライン１８はタグ１４とデータ１５を含む。タグ１４は該キャッシュライン１８の図１に示されるプロトコルに従う状態を示す状態タグ１６と該キャッシュライン１８に対応のアドレスを示すアドレスタグ１７を含む。キャッシュメモリ６がアクセス要求に基づいてキャッシュ制御管理部８によりアドレス指定されるとき、指定されたアドレスに一致するアドレスを示すアドレスタグ１７が存在することを、アドレスヒットと呼び、存在しないことをアドレスミスヒットと呼ぶ。
【０１１１】
プロセッサＩＦ７は対応のプロセッサＰＡとキャッシュコントローラ５とを接続する。バスＩＦ９はキャッシュコントローラ５とシステムバス２１とを接続する。キャッシュＩＦ１３はキャッシュコントローラ５とキャッシュ間通信線２０とを接続する。キャッシュ制御管理部８はプロセッサＩＦ７を介したプロセッサＡからのアクセス要求またはキャッシュＩＦ１３を介した他のプロセッサからのアクセス要求があったとき、与えられる情報に基づいてキャッシュメモリ６の該アクセス要求に基づいて指定されるアドレスタグ１７に対応のキャッシュライン１８の内容をアクセス（参照（読出）または書込）する。
【０１１２】
ライン状態管理部１１は、アクセス要求があったとき該アクセス要求に基づいて指定されるアドレスタグ１７に対応のキャッシュライン１８の状態タグ１６で示されるべき状態を、図１に示されるプロトコルに従って決定する。責任領域判定部１２は、アクセス要求があったとき該アクセス要求に基づいて指定されるアドレスが対応するプロセッサの責任領域内か外かを判定する。
【０１１３】
キャッシュ一致プロトコルに従いキャッシュライン１８の状態が、すなわち対応の状態タグ１６の値がどのように遷移するかが図１に示される。図１を参照してキャッシュライン１８の状態タグ１６はデフォルトとして“Ｉ”（invalid）をとり、該キャッシュライン１８へのアクセスの態様（アクセス要求の種類）に従い“ＥＯ”（Exclusive owner）、“ＳＯ”（Shared owner）および“ＳＮ”（Shared non-owner）のいずれかの状態に遷移する。
【０１１４】
状態タグ１６が“Ｉ”であるとき、対応のキャッシュライン１８の内容は保証されないことを示す。状態タグ１６が“ＳＯ”であるとき、対応のキャッシュライン１８の内容（コピー）は複数のプロセッサ（キャッシュメモリ６）間で共有されている状態であり、該キャッシュライン１８のオーナーは対応のキャッシュメモリ６であることを示す。状態タグ１６が“ＥＯ”であるとき、対応のキャッシュライン１８の内容（コピー）は複数のプロセッサ（キャッシュメモリ６）間で共有されていない状態であり、該キャッシュライン１８のオーナーは対応するキャッシュメモリ６であることを示す。状態タグ１６が“ＳＮ”であるとき、対応のキャッシュライン１８の内容（コピー）は複数のプロセッサ（キャッシュメモリ６）間で共有されている状態であり、該キャッシュライン１８のオーナーは対応のキャッシュメモリ６ではなく、他のキャッシュメモリ６または共有メモリ４であることを示す。
【０１１５】
プロセッサが出力するアクセス要求が自己の責任領域内を対象としてなされたときは、状態は図１の“責任領域をアクセスする場合”において遷移するが、自己の責任領域以外を対象としてなされたときは、図１の“責任領域以外をアクセスする場合”において遷移する。図１を参照してキャッシュライン１８についてアクセスの態様は、該キャッシュライン１８のキャッシュ装置に接続されたプロセッサから該キャッシュライン１８についての読出および書込を示すアクセスｐＲおよびｐＷ、ならびに該キャッシュライン１８について共有バス２を経由して他のプロセッサ（他のキャッシュコントローラ５）による読出および書込を示すアクセスｂＲおよびｂＷに分類される。図１では、アクセスｐ（Ｒ／Ｗ）はアクセスｐＲまたはｐＷを示し、アクセスｂ（Ｒ／Ｗ）はアクセスｂＲまたはｂＷを示し、アクセスｐＲ／ｂ（Ｒ／Ｗ）はアクセスｐＲまたはｂＲまたはｂＷを示し、アクセスｐ（Ｒ／Ｗ）／ｂＲはアクセスｐＲまたはｂＷまたはｂＲを示す。
【０１１６】
図４〜図１２には図１の状態遷移に従い動作した場合に、アクセスの対象となるキャッシュライン１８の状態タグ１６の値がどのように遷移するかが模式的に示されている。
【０１１７】
ここで、図３のライン状態管理部１１を用いたキャッシュライン１８の状態タグ１６の更新処理について説明する。キャッシュ制御管理部８はプロセッサＩＦ７またはキャッシュＩＦ１３からアクセス要求を入力すると、該アクセス要求に含まれるアドレスを責任領域判定部１２に与えるとともに、該アクセス要求の種別（アクセスｐＲ、ｐＷ、ｂＲ、ｂＷの別）を判定して、判定結果を示すアクセス種別情報をライン状態管理部１１に与える。このときキャッシュ制御管理部８は入力したアクセス要求に基づいてキャッシュメモリ６をアクセスして、アドレスヒットすれば、アドレスヒットしたキャッシュライン１８の状態タグ１６を読出してライン状態管理部１１に与える。責任領域判定部１２は、与えられるアドレスは対応のプロセッサの責任領域内に該当するか責任領域外に該当するか判定して、判定結果を示す領域判定情報をキャッシュ制御管理部８に出力する。キャッシュ制御管理部８は責任領域判定部１２から与えられた領域判定情報を入力してライン状態管理部１１に与えるので、ライン状態管理部１１はキャッシュ制御管理部８から与えられたアクセス種別情報、状態タグ１６および領域判定情報に基づいて、図１に従い遷移すべき次の状態を決定して、決定した状態を示す状態データをキャッシュ制御管理部８に与える。キャッシュ制御管理部８は与えられた状態データをアドレスヒットしたキャッシュライン１８に対応の状態タグ１６に書込んで、該状態タグ１６の値を更新をする。以下、これを状態更新処理と呼ぶ。このときキャッシュ制御管理部８は、該キャッシュライン１８のデータ１５をアクセス要求に基づいてアクセス（読出または書込）する。なお、キャッシュ制御管理部８は、状態データが予め読み出されていた状態タグ１６の値と一致するときは、状態タグ１６の更新は省略するようにしてもよい。
【０１１８】
また、キャッシュ制御管理部８はキャッシュＩＦ１３からアクセス要求を入力したときは、入力した該アクセス要求のアドレスについての責任領域判定部１２の領域判定情報に基づいて、自己あてのものであるか否か判定する。具体的には、領域判定情報が責任領域内を示すときは自己宛てのものと判定し、責任領域外を示すときは自己宛てのものでないと判定する。
【０１１９】
図１で示されるキャッシュ一致プロトコルに従う具体的動作を説明する。まず、プロセッサが所定のアドレスについてのアクセス要求を出力した場合について図４〜図１２を参照しながら説明する。
【０１２０】
責任領域のアドレスを参照（読出し）する場合において、プロセッサＰＡは責任領域１０Ａのアドレスを参照するアクセス要求をキャッシュ装置ＣＡに出力したとする。このアクセス要求はプロセッサＩＦ７を介してキャッシュ制御管理部８に与えられる。このとき、アクセス要求に基づいてアドレスヒットしたキャッシュライン１８の状態タグ１６が“Ｉ”を示すとき、キャッシュ制御管理部８はバスＩＦ９およびシステムバス２１を介して共有メモリ４の責任領域１０Ａから、アクセス要求のアドレスに対応のメモリラインを読出して、キャッシュメモリ６の先ほどアドレスヒットしたキャッシュライン１８に書込む。このとき、前述したような状態更新処理が行なわれるので、該キャッシュライン１８の状態タグ１６は“Ｉ”→“ＥＯ”に更新される（図４参照）。ここで、共有メモリ４から読出されてキャッシュメモリ６のキャッシュライン１８に書込まれた内容を“コピー”と呼ぶ。
【０１２１】
次に、責任領域以外のアドレスが参照される場合について説明する。プロセッサＰＢが自己の責任領域１０Ｂ以外の領域に該当のアドレスを参照するためのアクセス要求、たとえば、プロセッサＰＡの責任領域１０Ａのアドレスを参照するアクセス要求を出力したと想定する。このとき、該アクセス要求はキャッシュ装置ＣＢに出力されるので、キャッシュ装置ＣＢのキャッシュ制御管理部８は、キャッシュメモリ６の該アクセス要求に基づいてアドレスヒットしたキャッシュライン１８の状態タグ１６を読出す。読出された状態タグ１６は“Ｉ”であるとする。キャッシュ制御管理部８は、読出された状態タグ１６は“Ｉ”を示して、かつ責任領域判定部１２から入力する領域判定情報は責任領域外を示すので、該アクセス要求のアドレスに対応のコピーを要求することを指示するコピーリクエスト信号をキャッシュＩＦ１３を介して出力する。
【０１２２】
このコピーリクエスト信号はキャッシュ間通信線２０を介して送信されるので、他のキャッシュ装置ＣＡ、ＣＣおよびＣＤそれぞれのキャッシュ制御管理部８は、該コピーリクエスト信号をキャッシュＩＦ１３を介して受信する。受信したコピーリクエスト信号で示されるアドレスが自己の責任領域内に該当すると判断したキャッシュ装置の、すなわちキャッシュ装置ＣＡのキャッシュ制御管理部８は、受信したコピーリクエスト信号のアドレスに基づいてアドレスヒットするか否か、すなわちキャッシュメモリ６にコピーが存在するか否か判定する。もし、アドレスヒットして、コピーの状態タグ１６が“ＥＯ”であればり、キャッシュ装置ＣＡのキャッシュ制御管理部８は該コピー（データ１５）を読出して、読出されたコピーとともに該コピーリクエスト信号に対する応答信号を要求元のキャッシュ装置ＣＢに送信する。
【０１２３】
このとき、キャッシュ装置ＣＡでは、受信したコピーリクエスト信号をアクセス要求として処理するので、コピーに対応のキャッシュライン１８の状態タグ１６は前述した状態更新処理により“ＥＯ”→“ＳＯ”に更新される。キャッシュ装置ＣＢのキャッシュ制御管理部８は、キャッシュ装置ＣＡからの応答信号とともにコピーを受信して、受信したコピーをキャッシュメモリ６の先ほどアドレスヒットしたキャッシュライン１８に書込む。このとき、状態更新処理が行なわれるので、該キャッシュライン１８の状態タグ１６は“Ｉ”→“ＳＮ”に更新される（図５参照）。
【０１２４】
プロセッサＰＢが責任領域１０Ｂ以外、たとえばプロセッサＰＣの責任領域１０Ｃのアドレスを参照するアクセス要求を出力したと想定する。このとき、該アクセス要求はキャッシュ装置ＣＢに与えられるので、キャッシュ装置ＣＢのキャッシュ制御管理部８は、キャッシュメモリ６の該アクセス要求に基づいてアドレスヒットしたキャッシュライン１８の状態タグ１６を読出す。読出された状態タグ１６は“Ｉ”を示すとする。キャッシュ制御管理部８は、読出された状態タグ１６は“Ｉ”を示して、かつ責任領域判定部１２から入力する領域判定情報は責任領域外を示すので、コピーリクエスト信号を出力する。
【０１２５】
このコピーリクエスト信号はキャッシュ間通信線２０を介して送信されるので、他のキャッシュ装置ＣＡ、ＣＣおよびＣＤそれぞれのキャッシュ制御管理部８は、該コピーリクエスト信号を受信する。キャッシュ装置ＣＣのみが該アドレスは自己宛てのものと判断するので、キャッシュ装置ＣＣのキャッシュ制御部８は、受信したコピーリクエスト信号で示されるアドレスに基づいてアドレスヒットするか否か、すなわち対応のキャッシュメモリ６にコピーが存在するか否か判定する。このとき、キャッシュ制御部８はコピーが存在しないと判定したとすると、コピーが存在しない旨の応答信号を要求元のキャッシュ装置ＣＢに送信する。
【０１２６】
キャッシュ装置ＣＢのキャッシュ制御管理部８は該応答信号を受信したとき、先ほど入力したアクセス要求のアドレスに基づいて、共有メモリ４をアクセスして読出したメモリライン（コピー）を、対応のキャッシュメモリ１６の先ほどアドレスヒットしたキャッシュライン１８に書込む。このとき、前述の状態更新処理が行なわれるので、コピーが書込まれたキャッシュライン１８の状態タグ１６は“Ｉ”→“ＳＮ”に更新される。一方、キャッシュ装置ＣＣのキャッシュ制御管理部８は応答信号を送信すると、キャッシュ装置ＣＢの場合と同様にして、共有メモリ４から読出したコピーを、対応のキャッシュメモリ１６の先ほどアドレスヒットしたキャッシュライン１８に書込む。このとき、前述の状態更新処理が行なわれるので、コピーが書込まれたキャッシュライン１８の状態タグ１６は “Ｉ”→“ＳＯ”に更新される（図６参照）。
【０１２７】
次に、プロセッサが所定アドレスへの書込のためのアクセス要求を出力した場合について説明する。まず、プロセッサＰＡが責任領域１０Ａのアドレスに対応し、かつ状態タグ１６が“Ｉ”のキャッシュライン１８に書込むためのアクセス要求を出力した場合を想定する。この場合には、キャッシュ装置ＣＡのキャッシュ制御管理部８は該アクセス要求をプロセッサＩＦ７を介して入力すると、入力したアクセス要求に基づいてアドレスヒットしたキャッシュライン１８にデータ１５を書込む。このとき、データ１５が書込まれたキャッシュライン１８について前述の状態更新処理が行なわれる。その結果、該キャッシュライン１８の状態タグ１６は“Ｉ”→“ＥＯ”に更新される（図７参照）。この場合のアクセス要求に関しては共有バス２は使用されていない。
【０１２８】
次に、プロセッサＰＢが責任領域１０Ｂ以外のアドレスに、たとえば責任領域１０Ａのアドレスに書込むためのアクセス要求を出力した場合について説明する。該アクセス要求を入力したキャッシュ装置ＣＢはキャッシュメモリ６の該アクセス要求に基づいてアドレスヒットしたキャッシュライン１８にデータ１５を書込む。このとき、該キャッシュライン１８の状態タグ１６が“Ｉ”であるとする。状態更新処理が行なわれて、この状態タグ１６は“Ｉ”→“ＳＮ”に更新される。その後、キャッシュ制御管理部８は責任領域判定部１２から与えられた領域判定情報が“責任領域外”を示すので、該データの更新を要求するために、入力したアクセス要求をキャッシュ間通信線２０を介して送信すると、他のキャッシュ装置はこれを受信する。
【０１２９】
他のキャッシュ装置のうちキャッシュ装置ＣＡでのみアドレスヒットしたとする。キャッシュ装置ＣＡのキャッツシュ制御管理部８はアドレスヒットしたキャッシュライン１８に該アクセス要求に基づいてデータ１５を書込む。このとき、キャッシュ装置ＣＡにおいても状態更新処理が行なわれる。データ書込が行なわれたキャッシュライン１８の状態タグ１６が“Ｉ”であったとすれば、該状態タグ１６は“Ｉ”→“ＳＯ”に更新される（図８参照）。
【０１３０】
上述の場合において、キャッシュ装置ＣＡでアドレスヒットしたキャッシュライン１８に対応の状態タグ１６が“Ｉ”ではなくて“ＳＯ”であった場合は、プロセッサＰＡおよびＰＢの他にも該キャッシュライン１８のコピーを共有しているプロセッサが存在することを示す。たとえば、プロセッサＰＣもプロセッサＰＡおよびＰＢとともに該コピーを共有しているとすれば、キャッシュ装置ＣＣにおいてもアドレスヒットして、アドレスヒットしたキャッシュライン１８について状態更新処理が行なわれるから、対応の状態タグ１６は“ＳＮ”→“Ｉ”に更新される（図９参照）。
【０１３１】
図５、図６、図８および図９のように、その後も他のプロセッサ（たとえば、プロセッサＰＢ）で参照される可能性の高い変数（キャッシュライン１８）の状態は“ＳＮ”とされる。それゆえに、責任領域内に該当の変数が他のプロセッサで参照される場合にキャッシュヒット率は向上して、共有バス２の利用を回避できる。また、図９の場合には責任領域内のデータについての共有率を低減することができる。
【０１３２】
プロセッサＰＡが責任領域１０Ａに該当のアドレスにデータを書込むためのアクセス要求を出力した場合について説明する。このとき、該アクセス要求に基づいてアドレスヒットしたキャッシュライン１８の状態タグ１６が“ＥＯ”であったとする。この場合には、共有バス２は使用されず、該キャッシュライン１８にデータ１５が書込まれて、対応の状態タグ１６は状態更新処理により“ＥＯ”のままである（図１０参照）。
【０１３３】
上述した図１０の例では、アクセス要求に従いデータ１５が書込まれるキャッシュライン１８の状態タグ１６は“ＥＯ”であったが、“ＳＯ”であった場合について次に説明する。このとき、該キャッシュライン１８のコピーをプロセッサＰＢが共有していたとする。この場合には、キャッシュ装置ＣＡでは該キャッシュライン１８にデータ１５が書込まれるとともに、対応の状態タグ１６は状態更新処理により“ＳＯ”→“ＥＯ”となる。他のキャッシュメモリで共有されている該キャッシュライン１８のコピーの無効を要求するために、このアクセス要求は、キャッシュ装置ＣＡからキャッシュ間通信線２０を介して送信される。キャッシュ装置ＣＢのキャッシュ制御管理部８は該アクセス要求をキャッシュ間通信線２０を介して受信して、受信したアクセス要求に基づいてアドレスヒットしたキャッシュライン１８に、受信したアクセス要求に基づきデータ１５を書込む。このとき、該キャッシュライン１８に対応の状態タグ１６は状態更新処理により“ＳＮ”→“Ｉ”に更新されるのでデータの共有状態は解消される（図１１参照）。
【０１３４】
次に、プロセッサＰＢが責任領域１０Ｂ以外の領域、たとえば責任領域１０Ａに該当のアドレスに書込むためのアクセス要求を出力した場合について説明する。このとき該アクセス要求に基づいてアドレスヒットしたキャッシュライン１８のコピーはキャッシュ装置ＣＡ、ＣＢおよびＣＣにより共有されており、このコピー（キャッシュライン１８）の状態タグ１６はキャッシュ装置ＣＢとＣＣでは“ＳＮ”であり、キャッシュ装置ＣＡでは“ＳＯ”あったと想定する。
【０１３５】
この場合は、キャッシュ装置ＣＢではプロセッサＰＢから入力したアクセス要求に基づいてアドレスヒットしたキャッシュライン１８についてデータ１５が書込まれる。該キャッシュライン１８は、その後もプロセッサＰＢにより参照される可能性が高いので、該キャッシュライン１８の状態タグ１６は状態更新処理により“ＳＮ”のままとされる。また、このアクセス要求はキャッシュ装置ＣＢからキャッシュ間通信線２０を経由して送信されて、他のキャッシュ装置それぞれにおいて受信される。キャッシュ装置ＣＡおよびＣＣそれぞれでは、受信したアクセス要求に基づいアドレスヒットした対応のコピー（キャッシュライン１８）は更新されるとともに、状態更新処理により該コピーに対応の状態タグ１６も更新される。その結果、キャッシュ装置ＣＡではコピーに対応の状態タグ１６は“ＳＯ”のままであるが、キャッシュ装置ＣＣでは該コピーは参照される可能性が低いので“ＳＮ”→“Ｉ”に更新されて、データ共有率は低下する（図１２参照）。なお、図１２ではキャッシュ装置ＣＢのコピーの状態タグ１６は“ＳＮ”のままとしているが、キャッシュメモリ６間におけるデータ（コピー）の共有率をより低減させるために、キャッシュ装置ＣＣのコピーと同様に“Ｉ”に更新されるとしてもよい。
【０１３６】
各キャッシュ装置により責任領域内のキャッシュライン１８がキャッシュメモリ６から追い出される場合は、ライトバック方式に従い次のように行なわれる。該キャッシュライン１８の状態タグ１６が“ＥＯ”である場合は、該キャッシュライン１８の内容は共有メモリ４に書き戻されて、状態タグ１６が“ＳＯ”の場合は、その内容は共有メモリ４に書き戻されるとともに、他のキャッシュメモリ６それぞれにおいて共有されているコピー（キャッシュライン１８）の状態タグ１６は“ＳＮ”→“Ｉ”に更新される。追い出されるキャッシュライン１８は、不要となったものであり、たとえばＬＲＵ（least  recently  used）に従い特定されてもよい。
【０１３７】
このように頻繁にアクセスされる、すなわち責任領域内のキャッシュライン１８はライトバック方式にて処理されるから、ライトスルー方式に比較して共有メモリ４のアクセス頻度（共有バス２の利用頻度）を低減できる。
【０１３８】
ここでは、プロセッサの責任領域それぞれは共有メモリ４上の連続したアドレス空間に配置されているから、各プロセッサがあるアドレスについてアクセスしたときに、どのプロセッサの責任領域であるかは、該アドレスの上位２ビットで判断できるから責任領域判定部１２の構成を簡単化できるとともに判定を速やかに行うことができる。あるプロセッサが頻繁にアクセスする領域を共有メモリ４上で連続させるための処理は、オペレーティングシステムなどのような変数のアドレスを決めるソフトウェアやプログラマーにより行なわれる。
【０１３９】
本実施の形態では、上述したように、あるプロセッサの責任領域内のキャッシュライン１８は、他のプロセッサによって対応のコピーについて書込がなされた場合には、直ちに更新されるので、その後アクセスする可能性が高い責任領域内のキャッシュライン１８に対してはヒット率が向上する。また、キャッシュライン１８（コピー）が複数のキャッシュ装置間で共有されている場合に、あるコピーにデータ１５の書込みが行われると、書込みがなされた該コピーを自己の責任領域内に置くプロセッサについてのみ該コピー（キャッシュライン１８）は有効とされて、他のプロセッサについては該コピーは無効（“Ｉ”）とされる。このように、その後アクセスされる可能性の低い責任領域以外のキャッシュライン１８（コピー）は無効化されるので、データの共有率を下げることができる。したがって、従来のようなピンポン効果やFalse Sharingなどのような共有バス２を介した無駄な通信が削減でき、共有バス２に関する消費電力も低減できる。
【０１４０】
（実施の形態２）
実施の形態１では責任領域１０Ａ、１０Ｂ、１０Ｃおよび１０Ｄのそれぞれは、共有メモリ４の連続したアドレス空間に設定されていたが、図１３に示されるように設定されてもよい。
【０１４１】
図１３では共有メモリ４においてメモリラインのグループ１９が複数個連続して配置されている。グループ１９のそれぞれでは先頭から責任領域１０Ａ、１０Ｂ、１０Ｃおよび１０Ｄのメモリラインが順に並んでいる。図１３のような責任領域の並びが採用される場合には、プロセッサがあるアドレスについてのアクセス要求を出力した場合には、責任領域判定部１２は該アドレスが自己の責任領域に該当するか否か、または該アドレスがいずれの責任領域に該当するか否かを該アドレスの下位２ビットで判定できるから、責任領域判定部１２の回路構成を簡単にして小型化できる。具体的には図１３に示されるように下位２ビットが“００”の場合は責任領域１０Ａ、“０１”の場合は責任領域１０Ｂ、“１０”の場合は責任領域１０Ｃおよび“１１”の場合は責任領域１０Ｄとそれぞれ判定できる。
【０１４２】
（実施の形態３）
責任領域判定部１２は、図１４に示されるようなアドレス変換回路４０を有してもよい。本実施の形態では責任領域１０Ａ、１０Ｂ、１０Ｃおよび１０Ｄは図１４に示されるアドレス変換回路４０によって変換されて決定された共有メモリ４のアドレス（領域）に配置される。図１４において、ビットａ＿２，ビットａ＿１およびビットａ＿０はアドレス変換回路４０に入力される変換前のアドレスの下位３ビットを示し、ビットａ′＿２、ビットａ′＿１およびビットａ′＿０はアドレス変換回路４０から出力される変換後のアドレスの下位３ビットを示す。プロセッサがあるアドレスのアクセス要求を出力したときに、該アドレスがいずれのプロセッサの責任領域に該当するかは、図１４に示されるアドレス変換回路４０によって変換されたアドレスの下位２ビットを用いて判断される。図１５には図１４のアドレス変換回路４０を用いた場合の共有メモリ４における責任領域１０Ａ、１０Ｂ、１０Ｃおよび１０Ｄの配置例が示される。
【０１４３】
（実施の形態４）
本実施の形態では、プロセッサがあるアドレスについてのアクセス要求を出力したとき、該アドレスが責任領域内に該当するか否かは後述の主記憶装置３１が有する後述の複数のレジスタ３２に格納された値に基づいて判断される。本実施の形態では、これらレジスタ３２それぞれには予め決められた値が格納されていると想定する。
【０１４４】
図１６は、本実施の形態４に係るマルチプロセッサシステム１Ａの構成図である。マルチプロセッサシステム１Ａはマルチプロセッサシステム１の主記憶装置３に代替して主記憶装置３１を備える。図１６では、プロセッサＰＣおよびＰＤおよびキャッシュ装置ＣＣおよびＣＤは省略されているけれども、キャッシュ装置ＣＣおよびＣＤも図１６のキャッシュ装置ＣＡおよびＣＢと同様な構成を有する。図１６のキャッシュ装置ＣＡおよびＣＢは同様な構成を有する。キャッシュ装置ＣＡ（ＣＢ）は、キャッシュコントローラ５において責任領域判定部１２に代替して責任領域判定部２３を有するが、他の構成は前述したものと同様である。主記憶装置３１では、共有メモリ４のページごとに個別にレジスタ３２が設けられる。レジスタ３２の値が“００”であれば、対応のページは責任領域１０Ａであり、同様に“０１”であれば責任領域１０Ｂであり、“１０”であれば責任領域１０Ｃであり、“１１”であれば責任領域１０Ｄであることが示される。
【０１４５】
図１６では、キャッシュコントローラ５はキャッシュ間通信線／システムバス２２を介して他のキャッシュ装置および主記憶装置３１に接続される。キャッシュコントローラ５のキャッシュ制御管理部８は対応のプロセッサから共有メモリ４のアドレスについてのアクセス要求を入力して、該アドレスに基づいて共有メモリ４を参照する。この参照時に該アドレスに対応のレジスタ３２の内容が読出されて、システムバス２１を介して責任領域判定部２３に与えられる。責任領域判定部２３は与えられた内容を共有メモリ４のページ毎に図示されない内部メモリに記憶する。したがって、責任領域判定部２３は、アクセス要求のアドレスは対応プロセッサの責任領域に該当するか否か、またはいずれの責任領域に該当するかを内部メモリの記憶内容に基づいて判定することができる。
【０１４６】
ここでは、レジスタ３２は共有メモリ４のページごとに設けられているから、共有メモリ４において各プロセッサの責任領域をページごとに配置できる。言い換えると、各プロセッサの責任領域を連続させなければならない、各プロセッサの責任領域を所定順序付けして並べなければならないという制約がなくなるから、マルチプロセッサシステム１Ａで実行されるソフトウェア設計についての自由度は向上する。
【０１４７】
なお、ここでは、レジスタ３２は、ページ単位に設けられるとしたが、共有メモリ４のメモリライン単位、またはアドレス単位で設けられるようにしてもよい。
【０１４８】
（実施の形態５）
上述した実施の形態４でレジスタ３２の内容は予め決められており固定であるとしているが、本実施の形態では可変に設定される。
【０１４９】
本実施の形態では、マルチプロセッサシステム１でプログラムが実行されている期間において、レジスタ３２に対応のページ（メモリライン、アドレス）を最も多くアクセスしたプロセッサが検出されると、該レジスタ３２の値は検出されたプロセッサの責任領域を示す値に更新される。
【０１５０】
図１７の本実施の形態５に係るマルチプロセッサシステム１Ｂでは、プロセッサＰＣおよびＰＤおよびキャッシュ装置ＣＣおよびＣＤの図示は省略されているが、キャッシュ装置ＣＣおよびＣＤも図１７のキャッシュ装置ＣＡおよびＣＢのそれぞれと同様の構成を有する。マルチプロセッサシステム１Ｂは主記憶装置３に代替して主記憶装置３３を有する。
【０１５１】
キャッシュ装置ＣＡ（ＣＢ）では、図１の責任領域判定部１２に代替して責任領域判定部２４を有するが、他の構成は前述と同様である。また、各キャッシュ装置はキャッシュ間通信線／システムバス２２を介して他のキャッシュ装置および主記憶装置３３と通信する。
【０１５２】
主記憶装置３３は、図１７に示されるように、共有メモリ４、共有メモリ４のページごとに設けられたレジスタ３２ならびにアクセス回数カウンタＣＰＡ、ＣＰＢ、ＣＰＣおよびＣＰＤ、レジスタ制御部３４およびプロセッサ判定部３５を備える。アクセス回数カウンタＣＰＡ、ＣＰＢ、ＣＰＣおよびＣＰＤそれぞれはプロセッサＰＡ、ＰＢ、ＰＣおよびＰＤそれぞれに対応して設けられている。これらのアクセス回数カウンタは同様な構成を有して対応のページについてアクセスされたとき、対応のアクセス要求に基づいて判定された該アクセス要求元のプロセッサに対応して設けられたアクセス回数カウンタのみ値がインクリメントされる。したがって、あるページに対応のアクセス回数カウンタＣＰＡ、ＣＰＢ、ＣＰＣおよびＣＰＤのうち、該ページについて最も頻繁にアクセスしたプロセッサに対応するものの値が最大となる。
【０１５３】
レジスタ制御部３４は定期的に共有メモリ４のページごとのレジスタ３２の値を更新する。具体的には、レジスタ制御部３４はあるページのレジスタ３２の値を更新する場合には、該ページに対応のアクセス回数カウンタＣＰＡ、ＣＰＢ、ＣＰＣおよびＣＰＤそれぞれの値を読出してプロセッサ判定部３５に与えるので、プロセッサ判定部３５は与えられたこれら値に基づいて、最大値であるアクセス回数カウンタに対応のプロセッサを判定して判定結果をレジスタ制御部３４に与える。レジスタ制御部３４は与えられた判定結果に基づいて、該ページに対応のレジスタ３２の内容を更新する。その結果、該レジスタ３２の値は、対応するページを最も頻繁にアクセスするプロセッサの責任領域であることを示す。
【０１５４】
なお、レジスタ３２のレジスタ制御部３４による値の更新と、対応ページのアクセス、すなわち該レジスタ３２の参照とは排他的に行なわれる。
【０１５５】
ここでは、レジスタ３２、アクセス回数カウンタＣＰＡ、ＣＰＢ、ＣＰＣおよびＣＰＤは共有メモリ４のページ単位に設けられるとしているが、メモリライン単位またはアドレス単位に設けられてもよい。
【０１５６】
このように、本実施の形態では、レジスタ３２の値は動的に更新されるのでキャッシュライン１８のプロトコル（状態遷移）を動的に変更することができる。レジスタ３２の値が動的に更新されることにより、マルチプロセッサシステム１Ｂで実行される処理（プログラム）の内容に応じて責任領域を割付けることが可能となるから、各プロセッサでは自己の責任領域のデータを用いた処理が集中的に実行されて、データの共有は回避される。それゆえに、False Sharingの発生も抑制でき、共有バス２を介したデータ転送も回避できる。結果としてマルチプロセッサシステム１Ｂでは処理を高速に実行できる。
【０１５７】
（実施の形態６）
本実施の形態では、上述したレジスタ３２には、マルチプロセッサシステム１ＡにおいてプロセッサＰＡ、ＰＢ、ＰＣおよびＰＤでプログラムが実行されることにより値が書込まれきてもよい。具体的には、該プログラム中に各プロセッサに対応の責任領域に関する情報を宣言しておくことで、該プログラム実行中には宣言された該情報に基づいて、各レジスタ２３に値が書込まれる。ここでも、レジスタ２３についての値の書込と、該レジスタ２３の参照とは排他的に行なわれる。
【０１５８】
このように、プログラム中で各責任領域に関する情報を宣言しておくことで、予め責任領域を該プログラムの内容に対応して最適となるように確保できるから、プログラムに従う処理を高速に（効率よく）実行できる。
【０１５９】
（実施の形態７）
本実施の形態に係る図１８のマルチプロセッサシステム１Ｃでも、前述のマルチプロセッサシステム１Ａと同様に、あるプロセッサが共有メモリ４のあるアドレスを参照したときに、該アドレスが自己の責任領域に該当するか否かは、ページ毎に設けられたレジスタ３２の値に基づいて判定される。
【０１６０】
図１８のマルチプロセッサシステム１Ｃは、マルチプロセッサシステム１Ａの構成に追加して割込みコントローラ３６、レジスタ書込みコントローラ３７および割込みコントローラ３６と各プロセッサとを接続する割込み制御線３８を備える。割込みコントローラ３６は、与えられる割込み信号３９を入力すると、割込み制御線３８を経由していずれかのプロセッサに与える。割込み信号３９はマルチプロセッサシステム１Ｃが搭載されたチップ外、または図示されない周辺回路、またはプロセッサ（ソフトウェア処理）から割込みコントローラ３６に出力される。
【０１６１】
動作において、割込み制御線３８を経由して割込み信号３９が与えられたプロセッサは、それまでに実行していた処理を中断して、所定の割込み処理に分岐する。この割込み処理は主記憶装置３１の任意のレジスタ３２に値を書込むための処理である。プロセッサは割込み処理を実行すると、任意のレジスタ３２に書込む値を決定して、決定された値を示すレジスタデータ４１をレジスタ書込みコントローラ３７に与える。レジスタ書込みコントローラ３７はレジスタデータ４１を入力して、任意のレジスタ３２に書込む。ここでも、レジスタ３２についての値の書込と、該レジスタ３２の参照とは排他的に行なわれる。
【０１６２】
（実施の形態８）
実施の形態１における図１２の説明においては、状態タグ１６が“ＳＮ”のキャッシュライン１８へのデータ１５の書込みがなされた場合には、状態タグ１６が“ＳＯ”のコピーのみ有効とされて、他のコピーについては状態タグ１６を“Ｉ”にして、データが共有されることを回避するようにしていたが、次のようにしてもよい。つまり、複数のプロセッサにより書き換えられる可能性の高い変数が使用されている場合には、状態タグ１６が“ＳＮ”の該変数のキャッシュライン１８（コピー）にデータ１５が書込まれた場合には、共有バス２を使い、状態タグ１６が“ＳＯ”または“ＳＮ”の他のコピー（キャッシュライン１８）のデータ１５も同様に更新する。
【０１６３】
このように状態遷移させた場合には、複数のプロセッサにより書き換えられる可能性の高い変数を用いた処理を容易に行うことができる。
【０１６４】
（実施の形態９）
本実施の形態では、上述した各実施の形態において、各キャッシュ装置は対応のキャッシュメモリ６から共有メモリ４へのキャッシュラインの転送をライトスルーで行なう。このようにした場合には、キャッシュメモリ６の内容は共有メモリ４の内容と常に同じになるように保証される。
【０１６５】
（実施の形態１０）
本実施の形態のキャッシュ装置は、図１９に示される構成を有する。図２０には本実施の形態にかかるマルチプロセッサシステム１Ｄの概略構成が示される。図２０のマルチプロセッサシステム１Ｄはマルチプロセッサシステム１Ａのキャッシュ装置ＣＡ、ＣＢ、ＣＣおよびＣＤに代替して、キャッシュ装置ＣＣＡ、ＣＣＢ、ＣＣＣおよびＣＣＤを有するが、他の構成は同様である。キャッシュ装置ＣＣＡ、ＣＣＢ、ＣＣＣおよびＣＣＤそれぞれは同様な構成を有するので、キャッシュ装置ＣＣＡを例示して説明する。
【０１６６】
図２０に示されるようにキャッシュ装置ＣＣＡはキャッシュメモリ６、キャッシュコントローラ５０および３つのキャッシュコントローラ５１を含む。キャッシュメモリ６は責任領域１０Ａについて設定された専用のキャッシュ領域６Ａ、同様に責任領域１０Ｂについての専用のキャッシュ領域６Ｂ、同様に責任領域１０Ｃについての専用のキャッシュ領域６Ｃ、および同様に責任領域１０Ｄについての専用のキャッシュ領域６Ｄを含む。キャッシュ領域６Ａについてキャッシュコントローラ５０が設けられて、キャッシュ領域６Ｂ、６Ｃおよび６Ｄそれぞれについてキャッシュコントローラ５１が設けられている。
【０１６７】
この場合、各プロセッサの責任領域ごとにキャッシュライン１８が保存されるキャッシュ領域が決定されて、キャッシュライン１８ごとに責任領域か、それ以外かが決定されるので、これに従えば図１の状態遷移は図２１のように変更される。図２１の状態遷移に従う場合にも、キャッシュメモリのヒット率を向上させ、データの共有率を低減することができる。図２１の状態“ＩＯ”は無効（Ｉ）でかつオーナーであることを示し、状態“ＩＮ”は無効（Ｉ）であってオーナーでないことを示す。
【０１６８】
図１９のキャッシュ装置ＣＡＡではキャッシュ領域６Ａのキャッシュライン１８はすべて図２１の左側の“責任領域をアクセスする場合”のプロトコルに従い状態遷移し、それ以外のキャッシュ領域６Ｂ、６Ｃおよび６Ｄそれぞれにおいてキャッシュライン１８はすべて図２１の右側の“責任領域以外をアクセスする場合”のプロトコルに従い状態遷移する。他のキャッシュ装置でも同様である。したがって、キャッシュコントローラ５０は図２１の左側の“責任領域をアクセスする場合”の状態遷移を実現するための回路構成でよいから、キャッシュコントローラ５に比較すると構成を簡単化できる。また、キャッシュコントローラ５１は図２１の右側の“責任領域以外をアクセスする場合”の状態遷移を実現するためのより簡単化された回路構成でよい。
【０１６９】
このように各キャッシュメモリ６では対応のプロセッサの責任領域のデータについてのアクセス処理が集中するけれども、各キャッシュ装置のキャッシュコントローラ５０は対応プロセッサの責任領域についての制御に集中できるから、各キャッシュ装置はキャッシュメモリ６について、ヒット率を向上させ、データの共有率を低減させる制御を高速に行うことができる。
【０１７０】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０１７１】
【発明の効果】
この発明によれば、複数プロセッサのそれぞれに対応のキャッシュメモリにおいて、対応のプロセッサの所定アドレス空間のデータは、すなわち該プロセッサにより最も頻繁にアクセスされ得るデータは常に最新の状態となるように更新されるから、全てのキャッシュメモリにおいてデータのヒット率は高くなる。
【０１７２】
また、複数キャッシュメモリ間において、同一アドレスで指定されるデータが共有されている場合には、該アドレスを自己の所定アドレス空間に含むプロセッサに対応のキャッシュメモリを除く他のキャッシュメモリ全てにおいて該アドレスのデータ領域の内容を無効にできるから、複数キャッシュメモリ間のデータの共有率を低くできる。
【図面の簡単な説明】
【図１】  実施の形態１に係るキャッシュ一致プロトコルの状態遷移図である。
【図２】  実施の形態１に係るマルチプロセッサシステムの構成図である。
【図３】  実施の形態１に係るキャッシュ装置の構成図である。
【図４】  実施の形態１に係る責任領域の“Ｉ”状態のキャッシュラインについて読出すときの状態遷移を模式的に示す図である。
【図５】  実施の形態１に係る責任領域以外における“Ｉ”状態のキャッシュラインについて読出すときの状態遷移を模式的に示す図である。
【図６】  実施の形態１に係る責任領域以外における“Ｉ”状態のキャッシュラインについて読出すときの状態遷移を模式的に示す図である。
【図７】  実施の形態１に係る責任領域の“Ｉ”状態のキャッシュラインについて書き込みするときの状態遷移を模式的に示す図である。
【図８】  実施の形態１に係る責任領域以外における“Ｉ”状態の共有されてないキャッシュラインについて書き込みするときの状態遷移を模式的に示す図である。
【図９】  実施の形態１に係る責任領域以外における“Ｉ”状態の共有されたキャッシュラインについて書き込みするときの状態遷移を模式的に示す図である。
【図１０】  実施の形態１に係る責任領域における“ＥＯ”状態のキャッシュラインについて書き込みするときの状態遷移を模式的に示す図である。
【図１１】  実施の形態１に係る責任領域における“ＳＯ”状態のキャッシュラインについて書き込みするときの状態遷移を模式的に示す図である。
【図１２】  実施の形態１に係る責任領域以外における“ＳＮ”状態のキャッシュラインについて書き込みするときの状態遷移を模式的に示す図である。
【図１３】  実施の形態２に係るラインごとに並んだ責任領域を示す図である。
【図１４】  実施の形態３に係るアドレス変換回路を示す図である。
【図１５】  実施の形態３に係る変換されたアドレスに対する責任領域をの並びを示す図である。
【図１６】  実施の形態４に係るマルチプロセッサシステムの構成図である。
【図１７】  実施の形態５に係るマルチプロセッサシステムの構成図である。
【図１８】  実施の形態７に係るマルチプロセッサシステムの構成図である。
【図１９】  実施の形態１０に係るキャッシュ装置の構成図である。
【図２０】  実施の形態１０に係るマルチプロセッサシステムの構成図である。
【図２１】  実施の形態１０に係るキャッシュ一致プロトコルの状態遷移図である。
【符号の説明】
１Ａ，１Ｂ，１Ｃ，１Ｄ  マルチプロセッサシステム、２  共有バス、３，３１，３３  主記憶装置、４  共有メモリ、５，５０，５１  キャッツシュコントローラ、６Ａ，６Ｂ，６Ｃ，６Ｄ  キャッシュ領域、８  キャッシュ制御管理部、１０Ａ，１０Ｂ，１０Ｃ，１０Ｄ  責任領域、１１  ライン状態管理部、１２，２３，２４  責任領域判定部、１４  タグ、１５  データ、１６  状態タグ、１７  アドレスタグ、１８  キャッシュライン、３２  レジスタ、３４  レジスタ制御部、３５  プロセッサ判定部、３６  割込みコントローラ、３７  レジスタ書込みコントローラ、３８  割込み制御線、４０  アドレス変換回路、ＰＡ，ＰＢ，ＰＣ，ＰＤ  プロセッサ、ＣＰＡ，ＣＰＢ，ＣＰＣ，ＣＰＤ  アクセス回数カウンタ。
【図１】
0004043225.tif 000002
【図２】
0004043225.tif 000003
【図３】
0004043225.tif 000004
【図４】
0004043225.tif 000005
【図５】
0004043225.tif 000006
【図６】
0004043225.tif 000007
【図７】
0004043225.tif 000008
【図８】
0004043225.tif 000009
【図９】
0004043225.tif 000010
【図１０】
0004043225.tif 000011
【図１１】
0004043225.tif 000012
【図１２】
0004043225.tif 000013
【図１３】
0004043225.tif 000014
【図１４】
0004043225.tif 000015
【図１５】
0004043225.tif 000016
【図１６】
0004043225.tif 000017
【図１７】
0004043225.tif 000018
【図１８】
0004043225.tif 000019
【図１９】
0004043225.tif 000020
【図２０】
0004043225.tif 000021
【図２１】
0004043225.tif 000022