この発明は一般にキャッシュメモリを用いたコンピュータシステムに関し、より詳しくはいずれかまたは全てのローカルキャッシュメモリ内に存在する共有データの複数コピーを有するマルチプロセッサコンピュータシステムに関する。一般的な単一プロセッサ計算機システムのアーキテクチャは、ノイマンモデルの計算法のある変形と考えられる。このモデルによれば、命令とデータが同一メモリ内に記憶され、プロセッサがそのメモリから1つづつ命令をフェッチして、各命令で指定された演算を実行する。instruction.プロセッサの速度が速まるにつれ、主コンピュータメモリのアクセス時間をプロセッサの計算速度ともっと適切に整合させる方法が必要とされてきた。memory,これは一般に主メモリよりはるかに速いアクセス時間を有するが、主メモリよりも何倍も高価につくことがある。従って、実用上の考慮から、通常キャッシュメモリは主メモリよりはるかに小さい。(CPU)との間に存在する。CPU,プロセッサはより速く動作を再開できる。プロセッサがシャキャッシュ内にコピーされていない主メモリのロケーションへアクセスしようとするときには(キャッシュ'ミス')、主メモリへのアクセスが行われなければならない。この場合、読出データはプロセッサとキャッシュ両方に送られ、その後同じメモリロケーションへアクセスする試みがキャッシュヒットになるようにする。して、プロセッサの実効メモリアクセス時間は、キャッシュメモリの速いアクセス時間と主メモリの遅いアクセス時間との中間値に減少される。通常キャッシュメモリは主メモリより1等級(マグニチュード)以上小さいので、キャッシュメモリの制御するコンピュータサブシステムは、どのメモリロケーションがどのキャッシュロケーションに対応しているのかを判定する方法(マッピング機能)、及びすでに満杯のキャッシュ内へ新たなメモリロケーションを書き込む場合に、どのキャッシュロケーションにオーバライト(重ね書き)すべきかを判定する方法(キャッシュ交換アルゴリズム)を備えていなければならない。ratio'(キャッシュヒットをもたらすメモリアクセス要求の割合)が得られる。obtained.キャッシュ性能の別の重要な側面は、所望なメモリロケーションが該当処理装置のキャッシュメモリ内にも存在するかどうかを処理装置が判定するために辿らねばならない手順である。かかるキャッシュメモリの探索をできるだけ速く効率的に行うための多くの手法が、当該分野に存在する。使用すべき的確な手法は、キャッシュ自体の個々の実効方式、特にマッピング機能に依存する。function.しかし一般的には、'タグディレクトリ'または'タグストア'と呼ばれる構成が、キャッシュの速い探索を可能にするものとして提供されている。store,各々がキャッシュメモリの1ブロックと対応した複数のエントリからなるテーブルである。従来、キャッシュブロックは幾つかの主メモリワードを含んでおり、キャッシュへのアクセスは全てこの基本のキャッシュブロックサイズを単位として行われている。タグストアの各エントリは、キャッシュ内のいずれか1つのキャッシュブロックを指定するのに充分なビットを含んでいる。主メモリからの1データブロックがキャッシュブロック内へマッピングされるとき、そのキャッシュブロックに対応したタグストアのエントリに、主メモリにおけるデータブロックのアドレスの高位ビットがロードされる。完全連想式のキャッシュ設計では、キャッシュのサーチして所望の主メモリロケーションを探索したい場合、プロセッサは所望のアドレスをタグストア内のエントリと比較する。合致が認められると、対応したワードが複数のワードキャッシュブロック内から選ばれる。直接マッピング式のキャッシュ設計では、対象アドレスの最下位ビットがタグストアへのインデックスとして使われる。アドレスの残りの高位ビットがタグストアのエントリと比較され、キャッシュヒットを判定する。locations,その限定数のエントリ毎に並列に比較が行われてキャッシュヒットを判定する。hit.CPUモジュールの平均メモリアクセス時間を減らすのに有効な別の向上策は、キャッシュメモリをマルチレベルの階層構造に編成し、最も小さく最も速い一次キャッシュメモリがCPUに最も近く位置し、徐々に遅く且つ大きくなる二次キャッシュメモリがプロセッサと主メモリ間のデータバスに沿って位置するように構成することである。このような構成は、非常に速いメモリ装置の高コストと比較的低コストなメモリ装置の遅いアクセス時間との折哀を表している。速く最も小さい一次キャッシュメモリでキャッシュミスが生じると、CPUは階層内で次に下位のキャッシュメモリにアクセスし、そこでの大きいメモリサイズはキャッシュヒットのより大きい確立を示唆している。そこでもキャッシュミスが生じると、CPUは階層内でさらに下位の二次キャッシュメモリにアクセスし、キャッシュ構造のどこかのレベルでキャッシュヒットが生じるまで、あるいは主メモリへのアクセスが開始されるまで、上記のプロセスが繰り返される。repeated.しかし、キャッシュメモリの使用の結果システム効率が高くなるにつれ、データ一貫性(コヒーレンス)の問題が生じる。キャッシュロケーションがそれの対応する主メモリロケーションと同じ値を保持していることが保証されねばならない。データの一貫性を維持するための一つの方法は、該当メモリロケーションへのメモリ書込アクセスが要求される度に、キャッシュメモリ内に含まれるデータの変更値をキャッシュメモリ(キャッシュ内に存在する場合)とそれに対応した主メモリロケーションの両方へ書き込むことである。method,'書込配分でない'ライトスルー(write−through)方式と呼ばれている。ライトスルー方式は代替的に、そのメモリロケーションがキャッシュ内に存在していない書込トランザクションのメモリロケーションを割り当てることもでき、この場合ライトスルー方式は書込割当機能を用いる。データの一貫性を維持する別の方法はライトバック(write−back)方式で、この方式では対応のキャッシュロケーションをオーバーライトしなければならなくなるまで、変更データ値は遅い主メモリに書き込まれない。これら両方式を比べた得失として、ライトスルー方式では各書込アクセス毎に主メモリに更新するのにメモリサブシステムのレベルで大きいバンド幅を必要とする一方、ライトバック方式ではキャッシュの一貫性の複雑さが増大する。充分なバンド幅を持つシステムでは、ライトスルー方式の方がその単純さのため好ましいことが多い。最近における処理装置のコスト低下が、ノイマン型マシン編成からさらに急速な発展を容易とし、共通のシステムバスを介して共通の主メモリスペースへアクセスを行いながら、複数のプロセッサが相互に同時に動作する方式が出現してきた。各プロセッサは、プロセッサとシステムバス間に存在する各自のプライベートキャッシュを備えることができる。このようなマルチプロセッサシステムでは、キャッシュメモリの使用がシングルプロセッサシステムの場合よりシステム性能にとってより重要となる。共有メモリへアクセスするため共通のシステムバスを使用する際、各プロセッサが別のプロセッサと競合状態になるからである。1つのメモリロケーション内に記憶されている値が、いずれかまたは全てのプロセッサのプライベートキャッシュメモリ内へ以前に複製されているかもしれないため、データ一貫性の問題も一層深刻になる。only,他のいずれかのローカルキャッシュメモリ内におけるそのメモリロケーションのコピーもその1つのプロセッサによってなされた変更を反映することを、システムがなんとか保証しなければならない。本発明は、時分割式のシステムバスを介して共通のメモリスペースを共有する複数のCPUモジュールを備えたマルチプロセッサコンピュータシステムに係わる。共通のメモリスペースは、各々が共有システムメモリの一部を含む複数のメモリモジュールとして実現できる。CPUモジュールは、命令の実行を行うプロセッサと、プライベートなキャッシュメモリ装置と、CPUモジュールの効率的な制御及びCPUモジュールとシステム内の他の構成要素との調整のために付加可能なサポート用ハードウェアを具備する。bus,次の4種類のトランザクションのうち1つをバスに対して開始できる:空(nul1)、読取、書込及びデータ読出。これらのトランザクションの1つがバス上で行われている間の時間を、バスサイクルと呼ぶ。空トランザクションはいずれのモジュールもバスに要求を出していないときに生じ、全てのモジュールによって無視される。modules.読取トランザクションは、CPUがメモリモジュールに対してメモリデータを戻す要求を送った場合に生じる。書込トランザクションは、CPUがメモリモジュールに対して新たなメモリデータを書き込む要求を送った場合に生じる。データ読出トランザクションは、前の読取トランザクションに応じてメモリモジュールがデータをCPUへ戻すときに生じる。各モジュール間でのシステムバスの使用をめぐる競合は、システムバスの実行方式に特有で、仲裁プロトコルの分野で周知な何らかの方法で仲裁される。Queue)PUモジュールの間に導入し得ることを示唆している。この機構は、読取トランザクションに応じてメモリから戻されてきたデータ値を保持する。読出データのキューイングは、主メモリへのアクセスが行われている間、データが戻ってくるのをただ待つ代わりに、プロセッサが他のタスクを行えるようにすることによってシステムの性能を高める。読出データキューは、複数のエントリを含む先入れ先出し(FIFO)キューで、各エントリはデータフィールドと有効ビットを含んでいる。CPUモジュールがデータ読出トランザクションを介して主メモリからデータを受け取るとき、そのデータは読出データキューの一端に置かれ、有効ビットがそのエントリにセットされる。CPUが送られてきたデータをそのキャッシュメモリ内に受け入れる準備が整うと、最初の有効エントリがキューの他端から取り出され、有効ビットがクリアされる。Queue)と呼ばれる別のFIFO機構を、システムバスとCPUモジュールとの間に導入することもできる。インバリデートキューも、各々が少なくともアドレスフィールドと有効ビットを具備し'インバリデート'と称する複数のエントリを含んでいる。CPUが、一貫性トランザクションのためにシステムバスをモニターする。前記ライトスルー方式を採用したシステムでは、CPUがシステムバス上における書込トランザクションをモニターする。システムバス上でいずれかのデータ書込トランザクションが検出されると、そのトランザグションのアドレスがCPUモジュールのインバリデートキューの一端に置かれ、有効ビットがセットされる。CPUがインバリデートを処理可能になると、最初の有効エントリがインバリデートキューの他端から取り出され、有効ビットがクリアされる。cleared.書込トランザクションのアドレスがキャッシュ構造の内容に照らしてチェックされ、存在すれば、そのアドレスに対応したエントリは無効としてマーク表示される。して、CPUが古くなったデータ値を使うことが妨がれる。outdated.マルチプロセッサシステムでのキャッシュの一貫性に対する要求は、複雑である。マルチプロセッサシステムにおけるキャッシュの一貫性の一側面は、各キャッシュメモリがシステムバス上に生じたトランザクションを同じ順序で処理すれば維持される。システムバス上に現れたインバリデートの順序は、それらを保存するFIFOキューによって保つことができる。データ読出トランザクションの順序も、それらのFIFOキューによって保持できる。残念ながら、システムバスに現れた際における。データ読出トランザクションに対するインバリデートの順序、同じく逆にインバリデートに対するデータ読出トランザクションの順序は、別個の読出データ及びインバリデートキューを用いても通常保存できない。queue.上記したようなキューを用いずにキャッシュの一貫性を維持する別の方法も、当該分野において存在する。個々のプロセッサモジュール間における直接交信の手段を与える追加のハードウェアをシステムに含めたり;データの一貫性を保存する専用のコマンドをCPUの命令セットに含めたり;あるいは主メモリと個々の各プライベートキャッシュメモリとの間に直接交信の手段を確立したりすることが可能である。別の代替法では、どのデータが各々のキャッシュメモリ内に存在するかをシステムが追跡し続けられるように包括的なディレクトリを構成し、必要に応じてシステムがキャッシュメモリ内のデータを無効にし、データの一貫性を維持するようにもできる。consistency.しかし、上記の方法のいずれかを実施する際、システムコストまたはシステム性能のどちらかで、ある程度の犠牲が余儀なくされる。プロセッサ同士間もしくはキャッシュメモリと主メモリ間に交信路を形成する場合、さらに包括的なキャッシュディレクトリを含める場合、上記の犠牲は主に経済的な面で現れる一方、命令セットを変更してデータの一貫性を保存しようとすると、システム性能が犠牲にされることとなろう。sacrificed.データの一貫性を保存するため、検出された全ての書込トランザクションを処理する別の方式は、CPU(プロセッサ)のバス飽和を引き起こすことになろう。システムバス上のどの書込トランザクションについても各CPUでインバリデートの処理を行えば、マルチプロセッサシステムの全計算時間のかなりの量がそれで占められてしまう。it.従って、プロセッサバスがオーバロードしないように、プライベートプロセッサバスに送られるインバリデートバスの数を、“選別(フィルタリング)する”効率的な手段を実施するのが有利である。該当プロセッサのキャッシュ内に存在するメモリアドレスに対応したインバリデータだけを、プライベートプロセッサバスへ送るのが有利である。bus.本発明は、マルチプロセッサシステム内のCPUモジュールが、そのCPUモジュールのキャッシュメモリ内のデータに影響を及ぼさない書込トランザクションを“選別出力”するのを可能とした方法及び装置を提供する。これによって、マルチプロセッサシステム内で発生される過度なインバリデートトラヒックのため、システムの効率が著しく減少されることはない。reduced.本発明に従って設計されるマルチプロセッサコンピュータシステムは、共通のシステムバスにインタフェースされた複数のCPUモジュールを具備する。これらのモジュールが、コンピュータの主メモリを形成すると共に時間分割式システムバスにインタフェースされた複数のメモリモジュールへのアクセスを共有する。CPUモジュールは各々、中央プロセッサの他、キャッシュメモリの機能を制御するのに必要なハードウェアと共に、主メモリ内の情報の一部の部分集合を記憶するのに使われるローカルキャッシュメモリを具備している。本発明の一実施例において、ローカルキャッシュメモリは、一次キャッシュとそれより大きい二次つまりバックアップキャッシュで構成された階層構造を有する。一次キャッシュメモリに含まれるデータはバックアップキャッシュメモリ内に含まれたデータの部分集合といてもよいし、あるいは各キャッシュメモリ内のデータ集合(セット)を相互に排他的にしてもよい。前者の場合、各プロセッサモジュールの一次及びバックアップキャッシュメモリ内におけるコピー間でもデータの一貫性を保持する必要があるため、データ一貫性の問題がさらに複雑化する。complicated.各CPUモジュール内のプロセッサバスが、CPUからメモリインタフェースへ至り、主メモリまたはキャッシュメモリからデータを読み取ったり、そこへデータを書き込むためのデータ路を与える。プロセッサバスは、要求されたキャッシュインバリデート(無効要求)を実行するのにも使われる。各CPUモジュール内のメモリインタフェースが、ローカルプロセッサバスを共通の時分割式システムバスに接続する。is,システム内における複数のCPUモジュール間でのバス競合を処理するのに使われ仲裁プロトコルにも寄与する。system.本発明では、プロセッサバスの他、メモリインタフェースとキャッシュコントローラロジック間での直接交信のため専用のデータ路が設けられている。以下、この専用データ路をインバリデートバス(I−バス)と称し、このバスがプロセッサバスと共にメモリインタフェースの一部と見なされる。(filtering)は、各CPUモジュールのメモリインタフェースで行われる。メモリインタフェースが、他のCPUモジュールからのメモリ書込について、共通のシステムバスをモニターする。書込トランザクションが検出されると、メモリインタフェースがIバスを介してキャッシュコントローラと交信し、書込トランザクションが該当CPUモジュールのキャッシュメモリ階層にコピーされたメモリロケーションを含んでいるかどうかを判定する。書込ロケーションがCPUモジュールのキャッシュメモリ内のどこにも存在しないと、書込トランザクションは無視され、どのインバリデートもキャッシュコントローラつまりCPUモジュールに送られず、プロセッサバスはCPUモジュールによって利用可能な状態に留まる。CPUモジュールのキャッシュメモリ内にコピーされていると、メモリインタフェースがプロセッサバスを介して書込トランザクションの情報を送り、キャッシュコントローラ及びCPUモジュールによって受け取られ、インバリデートとして処理される。invalidated.本発明の前記及びその他の特徴は、添付の図面を参照した好ましい実施例の説明から一層明かとなろう。drawings.図面は発明の好ましい実施例を示し、各図中同じ部材は同じ参照番号で表してある。本発明によるマルチプロセッサベースのコンピュータシステム8の全体構成が、第1図に示してある。システムの共有主メモリを構成する多数(N個)のメモリモジュール10が、当該分野で周知なように、バスの実行方式に依存した手段によって共通のシステム12にインタフェースされたものとして表してある。実際上、メモリモジュール10の数Nは、主メモリの所望な実行方式に応じて1以上の任意の数とし得る。本発明は2つ以上のプロセッサモジュール14を用いた計算機システムを意図しているが、分かりやすくするため2つだけが図示してある。shown.第2図は、2つのCPUモジュール14を有する同様なマルチプロセッサコンピュータシスム8を示す。CPU装置20からなる2レベルの階層キャッシュメモリ構造と、バックアップキャッシュ/キャッシュコントローラ装置22を使用する。各CPUモジュール14は、システムバス12へのアクセスに関する仲裁プロトコルに寄与するメモリインタフェース装置24も具備している。プロセッサバス30が、CPU20とバックアップキャッシュ/キャッシュコントローラ装置22の間、及びCPU20と各CPUモジュール14のメモリインタフェース装置24の間での交信用データ路を与える。システム用の共有主メモリは、同じくシステムバス12にインタフェースされた複数のメモリモジュール10の形で実施される。このような主メモリに係わる実行及びインタフェース方式は、当該分野で周知である。CPUモジュール14は、2レベルのキャッシュメモリ階層を用いたCPUの典型例である。hierarchy.第2図に示したマルチプロセッサコンピュータシステム8におけるキャッシュメモリの無効化は、次のように行われる。bus12をモニターし、そこに現れる各書込トランザクションを検出する。各書込トランザクション毎に、メモリインタフェース装置24が適切な無効化情報(書込アクセスのアドレスを含む)を、それぞれの各CPUモジュール14内のプロセッサバス30を介してCPU20とバックアップキャッシュ/キャッシュコントローラ装置22の両方に送る。22.本発明では、CPUモジュール内の異なる構成を開示する。1図のCPUモジュール14の1つを示している。CPUモジュール14は、第2図に示した典型的なマルチプロセッサシステムと同様、CPU/一次キャッシュ装置20、キャッシュコントローラ/バックアップキャッシュ装置22、メモリインタフェース装置24、これら3つの装置を相互に接続するプロセッサバス30で構成されている。CPU/一次キャッシュ装置20内には、複数のエントリのテーブルを与える一次キャッシュタグストア44が含まれており、各エントリが一次キャッシュメモリ内の1ブロックのデータと対応している。ここで、本発明の一特徴は、一次キャッシュタグストア44のコピー40がキャッシュコントローラ装置22に含まれている点にある。第3図に示された別の特徴は、メモリインタフェース装置24とキャッシュコントローラ/バックアップキャッシュ装置22の間の追加のデータ路46が設けられていることである。この追加のデータ路46は、インバリデートバス(I−バス)と称する専用バスである。bus).本発明のシステムにおけるキャッシュメモリの無効化は、次のように行われる。24が通常の方法でシステムバス12をモニターし、書込トランザクションをモニターする。書込トランザクションが検出されると、メモリインタフェース装置24が書込アクセスのアドレスを、インバリデートバス46を介してキャッシュコントローラ/バックアップキャッシュ装置22に送る。キャッシュコントローラ/バックアップキャッシュ装置22は、書込トランザクションに含まれているロケーションが一次キャッシュタグストア44またはバックアップキャッシュタグストア42のどちらかに存在しているかどうかを、バックアップキャッシュタグストア42と一次キャッシュタグストアのコピー40に問い合わせる。書込アクセスのロケーションがいずれかのキャッシュタグストア内に存在すれば、メモリインタフェース装置24がプロセッサバス30上にインバリデート(無効要求)を出力し、これがCPU/一次キャッス装置20またはキャッシュコントローラ/バックアップキャッシュ装置22のいずれか、あるいは両方によって通常の方法で処理される。書込トランザクションに含まれているロケーションがいずれのキャッシュメモリにも存在しなければ、それ以上の措置を講じる必要は何等なく、プロセッサバス30は自由な状態のままである。free.別の実施例(図示せず)では、キャッシュコントローラ装置がCPUに直接に付設され、バックアップつまり二次キャッシュ装置は使われない。exampleバス46はCPUに直接接続され、前述したように機能して、無効要求をプロセッサバス30へ選別出力する。30.本発明の原理、好ましい実施例及び形態を、以上の明細書において説明した。ここに開示した特定の形態は制限するものでなく例示と見なされるので、本発明はそれらの形態に制限されるものと解釈されるべきでない。発明の精神を逸脱することなく、各種の変形及び変更が当業者にとっては可能であろう。DRAWINGS第1図は共有の主メモリを構成する複数のメモリモジュールと複数のCPUモジュールを含み、これら全てが共通のシステムバスにインタフェースされているマルチプロセッサコンピュータシステムのブロック図;第2図は同様なマルチプロセッサコンピュータシステムのブロック図で、各々2レベルの階層キャッシュメモリを有し、共通のシステムバスにインタフェースされた2つのCPUモジュールを示す;及び第3図は本発明に従って編成された第1図のCPUモジュールの1つのブロック図である。8......コンピュータシステム、10......主メモリを構成するメモリモジュール、12......システムバス、14......プロセッサ(CPUモジュール)、20......CPU(中央処理装置)、22......キャッシュコントローラ(及び二次キャッシュメモリ)、24......メモリインタフェース、30......プロセッサバス、40......一次キャッシュタグストアのコピー、42......二次キャッシュタグストア、44......一次キャッシュメモリ及びそのタグストア、46......インバリデートバス。ことを特徴とするコンピュータシステム。