(57)【特許請求の範囲】
【請求項１】
データ処理システムにおいて読出コマンドを実行する方法であって、前記データ処理システムは、メインメモリが結合されたシステムバスと、複数のハイレベルキャッシュメモリとを含み、各ハイレベルキャッシュメモリは前記システムバスに結合された第１のポートおよびそれぞれのプロセッサバスに結合された第２のポートを有し、各プロセッサバスはそれぞれのローレベルキャッシュメモリを通してそれぞれのデジタルコンピュータに結合され、各ハイレベルキャッシュメモリは、一致信号を独立して発生するための、第１のポートに結合されかつシステムバスからＲＥＡＤコマンドを受取る、１組の比較アドレスをそれぞれのタグビットとともにストアする第１のタグメモリと、第２のポートに結合されかつプロセッサバスからＲＥＡＤコマンドを受取る、同じ１組の比較アドレスを前記それぞれのタグビットとともにストアする第２のタグメモリとを有し、
前記方法は、
ａ．各ハイレベルキャッシュメモリに、各データ語に対して、各データ語を共有、変更、無効または排他的として識別する４つのそれぞれのタグビットＳ、Ｍ、ＩおよびＥのみをストアするステップと、ビットＳはデータ語が２つ以上のハイレベルキャッシュメモリにストアされているときに真であり、ビットＭはプロセッサバスによりハイレベルキャッシュメモリに結合されたコンピュータの１つによりデータ語が変更されているときに真であり、ビットＩはハイレベルキャッシュメモリのデータ語が使用不能のときに真であり、ビットＥはデータ語が単一のハイレベルキャッシュメモリにストアされているときに真であり、
ｂ．各ローレベルキャッシュメモリに、比較アドレスおよび各データ語に対する３つのそれぞれのタグビットＳ、Ｍ、Ｉのみとともに前記データ語をストアするステップと、
ｃ．各ハイレベルキャッシュメモリにおいてプロセッサバスおよびシステムバスにおいて発生する同一タイプの２つの独立したＲＥＡＤコマンドに対して以下のように応答するステップとを含み、
ｃ１．プロセッサバスにおけるＲＥＡＤコマンドがハイレベルキャッシュメモリにおいて排他的としてタグ付けされたデータ語に対するものであれば、第２の一致信号を用いてデータ語をハイレベルキャッシュメモリから取出し、それをプロセッサバスを介してローレベルキャッシュメモリに共有としてタグ付けされたデータ語として送り、
ｃ２．システムバスにおけるＲＥＡＤコマンドがハイレベルキャッシュメモリにおいて排他的としてタグ付けされたデータ語に対するものであれば、第１の一致信号を用いて、データ語が共有されていることを示すＳＨＡＲＥＤ制御信号をＲＥＡＤコマンドの送り手に対しシステムバスで発生し、同時にハイレベルキャッシュメモリは自身のタグメモリにおいてタグビットを排他的から共有に変え、
ｃ３．システムバスにおけるＲＥＡＤコマンドがハイレベルキャッシュメモリにおいて変更としてタグ付けされたデータ語に対するものであれば、前記第１の一致信号を用いてＲＥＡＤコマンドの実行を遅延させなければならないことを示す第２の制御信号をシステムバスで発生し、前記変更されたデータ語を前記システムバスに送信し、前記変更されたデータ語を前記ハイレベルキャッシュメモリにおいて無効として再度タグ付けする、読出コマンドを実行する方法。
【請求項２】
データ処理システムにおいて書込コマンドを実行する方法であって、前記データ処理システムは、メインメモリが結合されたシステムバスと、複数のハイレベルキャッシュメモリとを含み、各ハイレベルキャッシュメモリは前記システムバスに結合された第１のポートおよびそれぞれのプロセッサバスに結合された第２のポートを有し、各プロセッサバスはそれぞれのローレベルキャッシュメモリを通してそれぞれのデジタルコンピュータに結合され、各ハイレベルキャッシュメモリは、独立して一致信号を発生するための、第１のポートに結合され、１組の比較アドレスをそれぞれのタグビットとともにストアする第１のタグメモリと、第２のポートに結合され、同じ１組の比較アドレスを前記それぞれのタグビットとともにストアする第２のタグメモリとを有し、
前記方法は、
ａ．各ハイレベルキャッシュメモリに、各データ語に対して、各データ語を共有、変更、無効または排他的として識別する４つのそれぞれのタグビットＳ、Ｍ、ＩおよびＥのみをストアするステップと、ビットＳはデータ語が２つ以上のハイレベルキャッシュメモリにストアされているときに真であり、ビットＭはプロセッサバスによりハイレベルキャッシュメモリに結合されたコンピュータの１つによりデータ語が変更されているときに真であり、ビットＩはハイレベルキャッシュメモリのデータ語が使用不能のときに真であり、ビットＥはデータ語が単一のハイレベルキャッシュメモリにストアされているときに真であり、
ｂ．各ローレベルキャッシュメモリに、比較アドレスおよび各データ語に対する３つのそれぞれのタグビットＳ、Ｍ、Ｉのみとともに前記データ語をストアするステップと、
ｃ．１つのコンピュータからのＷＲＩＴＥコマンドに対して、その１つのコンピュータのそれぞれのローレベルキャッシュメモリをアドレス指定し変更されるべきデータ語を得ることによって応答し、Ｓが真であればＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号を、以下のように動作する対応のハイレベルキャッシュメモリにに送るステップと、
ｃ１．対応するハイレベルキャッシュメモリにおいてＳが真であれば、ＷＲＩＴＥ＿ＲＥＱＵＥＳＴ信号をシステムバスに送り、これに応答して他のハイレベルキャッシュメモリおよびその第２のポートのローレベルキャッシュメモリはアドレス指定されたデータ語に対するタグをＩに設定し、ＷＲＩＴＥ  ＧＲＡＮＴ信号が前記１つのコンピュータの前記ローレベルキャッシュメモリに返送されタグはそこでＳからＭに変えられるステップと、
ｃ２．対応するハイレベルキャッシュメモリにおいてＥが真であれば、システムバスでスヌーピングし、アドレスされたデータ語に対するＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号がシステムバスのスヌーピングにより検出されなければ、１つのコンピュータのローレベルキャッシュメモリにＷＲＩＴＥ  ＧＲＡＮＴ信号を返送するステップとを含む、書込コマンドを実行する方法。
【請求項３】
前記システムバスおよび各プロセッサバスは互いに非同期であるそれぞれのクロックに同期化される、請求項２に記載の方法。
【請求項４】
前記ＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号の受信および前記ＷＲＩＴＥ  ＧＲＡＮＴ信号の送信の間に、１つのハイレベルキャッシュメモリは自身の第２のポートから自身が結合された前記プロセッサバスにＲＥＴＲＹ信号を送り別のＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号を受取る、請求項３に記載の方法。
【請求項５】
前記システムバスおよび各プロセッサバスは同じクロックに同期化される、請求項２に記載の方法。
【請求項６】
１つのハイレベルキャッシュメモリは、自身の第２のポートから自身が結合された前記プロセッサバスに前記ＷＲＩＴＥ  ＧＲＡＮＴ信号を、そのプロセッサバスにはＲＥＴＲＹ信号を送らずに送る、請求項５に記載の方法。
【請求項７】
１つのハイレベルキャッシュメモリは、前記ＷＲＩＴＥ  ＧＲＡＮＴ信号が前記１つのハイレベルキャッシュメモリの前記第２のポートから送られたならば、前記データ語に対する前記タグビットを排他的から変更に変える、請求項２に記載の方法。
【請求項８】
１つのハイレベルキャッシュメモリは前記システムバスをスヌーピングし、前記データ語に対する前記タグビットを、もし前記データ語が前記メインメモリから別のハイレベルキャッシュメモリにより読出されたならば、排他的から共有に変える、請求項２に記載の方法。
【請求項９】
１つのハイレベルキャッシュメモリは前記システムバスをスヌーピングし、前記データ語に対する前記タグビットを、もし別のハイレベルキャッシュメモリからの前記データ語に対するＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号が前記システムバスにおいて発生すれば、排他的から無効に変える、請求項２に記載の方法。
【請求項１０】
１つのハイレベルキャッシュメモリにおける前記タグビットは、たとえデータ語が前記１つのハイレベルキャッシュメモリの前記第２のポートに結合されたプロセッサバスの複数のデジタルコンピュータにより読出されていても、そのデータ語を排他的として識別し続ける、請求項２に記載の方法。
【発明の詳細な説明】
発明の背景
本発明は分散データ処理システムにおけるキャッシュメモリの構造および動作に関する。
先行技術では、典型的な分散データ処理システムは、単一のバスと、バスに結合されたメインメモリモジュールと、それぞれのキャッシュメモリを通してバスに結合された複数のデジタルコンピュータとから構成されている。このようなシステムの一例として、インテル（Intel）により最近発表されたペンティアムプロ（Pentium Pro）システムがあり、このシステムでは１つから４つのデジタルコンピュータがそれぞれのキャッシュメモリを通してホストバスに結合されている。１９９５年１０月３０日付のエレクトロニックエンジニアリングタイムス（Electronic Engineering Times）の第１頁を参照されたい。
上記の分散データ処理システムにおけるキャッシュメモリは各々メインメモリよりも高速で動作する。したがって、キャッシュメモリの効果とは性能の向上をもたらすことである。しかしながら、各キャッシュメモリの記憶容量はメインメモリのものよりも小さいため、どの瞬間でも、各キャッシュメモリはメインメモリにストアされたすべてのデータ語のサブセットしかストアすることができない。
特定のキャッシュメモリにどのデータ語があるのかを追跡するために、各データ語は比較アドレスを伴いタグビットをつけてキャッシュメモリにストアされる。この比較アドレスはメインメモリにおける対応のデータ語のアドレスを識別し、タグビットはストアされたデータ語の状態を識別する。上記のペンティアムプロシステムでは、Ｅ、Ｓ、ＭおよびＩという４つのタグビットがある。
タグビットＥは、対応するデータ語が単一のキャッシュメモリにのみストアされているときに真である。タグビットＳは、対応するデータ語が２つ以上のキャッシュメモリにストアされているときに真である。タグＭは対応するデータ語が、キャッシュメモリが結合されたそれぞれのコンピュータにより変更されているときに真である。タグビットＩはデータ語が使用不可能なときに真である。
現在上記のペンティアムプロデータ処理システムの制限は、ホストバスに、限定数のデジタルコンピュータしかそれぞれのキャッシュメモリとともに接続できないことである。この制限が生じる理由は、信号をバスで何らかの予め定められた速度で転送するためにはバスの物理的な長さを限定しなければならないことである。さらなるデジタルコンピュータおよびそれぞれのキャッシュメモリをより多く接続するためにバスの長さを増大させると、バスの動作速度を減少させなければならない。
これと比較して、本発明に従うと、以下のアーキテクチャを有するマルチレベル分散データ処理システムが開示される。そのアーキテクチャとは、メインメモリが結合された単一のシステムバス、および複数のハイレベルキャッシュメキリを有し、各キャッシュメモリはシステムバスに結合された第１のポートとそれぞれのプロセッサバスに結合された第２のポートとを有し、各プロセッサバスはそれぞれのローレベルキャッシュメモリを通してそれぞれのデジタルコンピュータに結合される。このマルチレベル分散データ処理システムを用いると、各プロセッサバスの長さを限定して高速動作を行なわせることができる。同時に、各プロセッサバスのデジタルコンピュータの最大数をペンティアムプロシステム全体におけるコンピュータの最大数と等しくすることができる。
しかしながら、上記のマルチレベル分散データ処理システムにおいて対処する必要のある問題は、各ハイレベルキャッシュメモリが好ましくは、一方はプロセッサバスで生じ他方はシステムバスで生じる２つの異なるＲＥＡＤコマンドに迅速にかつ同時に応答できねばならないことである。プロセッサバスのＲＥＡＤコマンドがハイレベルキャッシュメモリにストアされたデータ語に対するものであれば、ハイレベルキャッシュメモリは好ましくはシステム性能を向上させるためにそのデータ語を迅速にプロセッサバスに与えなければならない。同時に、システムバスのＲＥＡＤコマンドがメインメモリおよびハイレベルキャッシュメモリ双方にストアされたデータ語に対するものであれば、ハイレベルキャッシュメモリはまた、データ語は排他的とは反対に共有されたものであることをＲＥＡＤコマンドの送信元に示す制御信号でシステムバスに迅速に応答しなければならない。同様に、システムバスのＲＥＡＤコマンドが、ハイレベルキャッシュメモリにありかつプロセッサバスのデジタルコンピュータにより変更されたデータ語に対するものであれば、ハイレベルキャッシュメモリは好ましくは、要求されたデータ語が遅延されることをＲＥＡＤコマンドの送信元に示す制御信号でシステムバスに迅速に応答しなければならない。そうすれば、ハイレベルキャッシュメモリは変更されたデータ語をフェッチしそれをシステムバスで送ることができる。
上記のマルチレベル分散データ処理システムではまた、異なるプロセッサバスにある２つのデジタルコンピュータが同じデータ語を変更するＷＲＩＴＥコマンドを実行しようとするときに、問題が生じ得る。このような事象が発生すると、２つのデジタルコンピュータはそれぞれのローレベルキャッシュメモリで同じデータ語に対し異なる変更を行なうことができない。さもなければ、同じデータ語に２つの異なるバージョンが存在してしまう。しかしながら、データ語を変更しようと試みている２つのデジタルコンピュータは異なるプロセッサバスにあるため、この問題を避けるためにこれらのコンピュータは互いのＷＲＩＴＥコマンドをスヌーピングすることができない。
このマルチレベル分散データ処理システムではまた、各ハイレベルキャッシュメモリは、自身が結合されたローレベルキャッシュメモリにおいてどのデータ語が変更されるかを何とかして追跡する必要がある。さもなければ、メインメモリおよび特定のハイレベルキャッシュメモリ双方にストアされたデータ語に対しＲＥＡＤコマンドがシステムバスで発生するごとに、そのハイレベルキャッシュメモリはそれぞれのプロセッサバスのデジタルコンピュータによりそのデータ語が変更されていると推定しなければならない。したがってハイレベルキャッシュメモリは、このＲＥＡＤコマンドに対し、推定上修正されたと考えられるデータ語を取出しそれをシステムバスに転送することにより応答することが必要になる。しかしながら、ハイレベルキャッシュメモリのこのような動作は、もし実際にはデータ語が変更されていないのであれば、データ語をメインメモリから単に読出す場合と比較して非常に時間がかかってしまう。
したがって、本発明の主な目的は、上記の問題が克服されたマルチレベル分散データ処理システムを提供することである。
発明の概要
本発明に従うと、マルチレベル分散データ処理システムにおいて使用するための、２ポートハイレベルキャッシュメモリは、システムバスからのＲＥＡＤコマンドを受取る第１のポートおよびプロセッサバスからのＲＥＡＤコマンドを受取る第２のポート、ならびに第１のポートに結合された第１のタグメモリおよび第２のポートに結合された第２のタグメモリからなり、第１のタグメモリには１組の比較アドレスがストアされ、第２のタグメモリにもまた同じ１組の比較アドレスがストアされ、第１のタグメモリは、第１のタグメモリの比較アドレスと等しいアドレスを有するＲＥＡＤコマンドをシステムバスから受取ったときに第１の一致信号を発生し、第２のタグメモリは、第２のタグメモリの比較アドレスと等しいアドレスを有するＲＥＡＤコマンドをプロセッサバスから受取ったときに、第１の一致信号とは別の第２の一致信号を発生する。
これら２つの別々に発生した一致信号を用いて、ハイレベルキャッシュメモリはプロセッサバスおよびシステムバスで生じる２つの異なるＲＥＡＤコマンドにすばやく応答することができる。プロセッサバスのＲＥＡＤコマンドがハイレベルキャッシュメモリにストアされたデータ語に対するものならば、ハイレベルキャッシュメモリは第１の一致信号を用いてそのデータ語をキャッシュのデータメモリから取出しそれをプロセッサバスで送ることができる。同時に、システムバスのＲＥＡＤコマンドがシステムバスのメインメモリおよびハイレベルキャッシュメモリ双方にある変更されていないデータ語に対するものであれば、ハイレベルキャッシュメモリは第２の一致信号を用いて、データ語が共有されていることを示す制御信号をシステムバスに発生することができる。同様に、システムバスのＲＥＡＤコマンドがメインメモリにはなくハイレベルキャッシュメモリのみにある変更されたデータ語に対するものであれば、ハイレベルキャッシュメモリは第２の一致信号を用いて、ＲＥＡＤコマンドの実行を遅延させねばならないことを示す制御信号をシステムバスに発生することができる。
これと比較して、ハイレベルキャッシュメモリが単一のタグメモリしか有さない場合、プロセッサバスおよびシステムバスで生じる２つの異なるＲＥＡＤコマンドは互いに競合することになるであろう。この競合を解決するために、単一のタグメモリを、プロセッサバスのＲＥＡＤコマンドおよびシステムバスのＲＥＡＤコマンドで時分割しなければならないであろう。しかしながらこのことはシステムの性能を大幅に低下させるであろう。
本発明に従うと、分散データ処理システムはまた、メインメモリが結合されたシステムバス、および複数のハイレベルキャッシュメモリからなり、各ハイレベルキャッシュメモリはシステムバスに結合された第１のポートとそれぞれのプロセッサバスに結合された第２のポートとを有し、各プロセッサバスはそれぞれのローレベルキャッシュメモリを通して複数のデジタルコンピュータに結合される。さらに、本発明に従うと、各ローレベルキャッシュメモリは、各データ語が決して排他的なものではなく、共有された、変更されたまたは無効であるものとして識別するそれぞれのタグビットとともにデータ語をストアし、各ハイレベルキャッシュメモリは各データ語を共有された、変更された、無効であるまたは排他的なものであるとして識別するそれぞれのタグビットとともにデータ語をストアする。
上記の分散データ処理システムを用いると、デジタルコンピュータは、それぞれのローレベルキャッシュメモリに対しアドレッシングし、変更されるべきデータ語を獲得しようとすることによってＷＲＩＴＥコマンドの実行を開始する。アドレッシングされたデータ語がローレベルキャッシュメモリにあり共有タグビットが真であれば、ＷＲＩＴＥ  ＲＥＱＵＥＳＴが、プロセッサバスを介してコンピュータに結合されたハイレベルキャッシュメモリに送られる。このハイレベルキャッシュメモリは次に書込まれるべきデータ語に対する自身のタグビットを検査する。共有タグビットがハイレベルキャッシュメモリにおいて真であれば、他のコンピュータが同じデータ語を変更するのを防止するためにＷＲＩＴＥ  ＲＥＱＵＥＳＴをシステムバスに送る。次に、ハイレベルキャッシュメモリはＷＲＩＴＥ  ＧＲＡＮＴ信号をローレベルキャッシュメモリに返送し、書込まれるべきデータ語に対するタグを共有から変更に変える。他方、ハイレベルキャッシュメモリにおいて排他的タグビットが真であれば、ハイレベルキャッシュメモリはシステムバスに何の信号も送らずにＷＲＩＴＥ  ＧＲＡＮＴ信号をローレベルキャッシュメモリに返送できる。ハイレベルキャッシュメモリは書込まれるべきデータ語に対するタグビットを排他的から変更に変える。
対照的に、排他的タグビットが真であるとしてＷＲＩＴＥコマンドのためのデータ語をローレベルキャッシュメモリにストア可能であれば、そのデータ語を、ハイレベルキャッシュメモリからＷＲＩＴＥ  ＧＲＡＮＴを受取らずにデジタルコンピュータによって変更できる。結果として、別々のプロセッサバスの２つのコンピュータが、それぞれのローレベルキャッシュメモリで同じデータ語に対し異なる変更を行なうことができる。
ハイレベルキャッシュメモリはまた、変更されたデータ語を、そのデータ語に対するタグビットを共有から変更へまたは排他的から変更へと変えることによって追跡する。その後システムバスにＲＥＡＤコマンドが生じれば、ハイレベルキャッシュメモリは要求されたデータ語を、そのデータ語が変更タグを伴いストアされているのでなければ、システムバスに送らない。
【図面の簡単な説明】
図１は、本発明のある好ましい実施例を構成する分散データ処理システムを示す。
図２Ａは、データ語が図１のデータ処理システムのハイレベルキャッシュメモリにストアされるフォーマットを示す。
図２Ｂは、データ語が図１のデータ処理システムのローレベルキャッシュメモリにストアされるフォーマットを示す。
図３は、デジタルコンピュータＰ１が、メインメモリにはあるがＰ１コンピュータのためのローレベルキャッシュメモリまたはハイレベルキャッシュメモリにはないデータ語を読出すときの、図１のデータ処理システムにおいて生じる信号のシーケンスを示す。
図４は、図３のデジタルコンピュータＰ１が以前に読出したのと同じデータ語をデジタルコンピュータＰ２０が読出すときの、図１のデータ処理システムにおいて生じる信号のシーケンスを示す。
図５Ａから５Ｄは、デジタルコンピュータＰ１が図３および４において以前に読出された共有されたデータ語に対するＷＲＩＴＥコマンドを実行するときの、図１のデータ処理システムにおいて生じる信号のシーケンスを示す。
図６は、デジタルコンピュータＰ１が、メインメモリモジュールにはあるがコンピュータＰ１のためのローレベルキャッシュメモリまたはハイレベルキャッシュメモリにはないデータ語を読出すときの、図１のデータ処理システムにおいて生じる信号のシーケンスを示す。
図７は、デジタルコンピュータＰ１が、コンピュータＰ１のための、ハイレベルキャッシュメモリにはあるがローレベルキャッシュメモリにはないデータ語を読出すときの、図１のデータ処理システムにおいて生じる信号のシーケンスを示す。
図８Ａは、図６および７において以前に読出された排他的データ語に対するＷＲＩＴＥコマンドの実行をデジタルコンピュータＰ１が開始するときの、図１のデータ処理システムにおいて生じる信号のシーケンスを示す。
図８Ｂは、デジタルコンピュータＰ１およびＰ２０が同じデータ語を同時に書込もうと試みていないという条件において、図８Ａにおいて開始されたＷＲＩＴＥ動作を終了する信号のシーケンスを示す。
図８Ｂ′および８Ｃ′は、デジタルコンピュータＰ１およびＰ２０が同じデータ語を同時に書込もうとしているという条件において、図８Ａで開始されたＷＲＩＴＥ動作を終了する信号シーケンスを示す。
図９は、図１のシステムにあるハイレベルキャッシュメモリ各々について好ましい回路を示す。
図１０は、図３の信号シーケンス３１および３２中に図９のハイレベルキャッシュメモリにおけるモジュールすべてがいかにして相互作用するかを示す。
図１１は、図４の信号シーケンス３６中に図９のハイレベルキャッシュメモリにおけるすべてのモジュールがいかにして相互作用するかを示す。
図１２は、図５Ａ−５Ｄの信号シーケンス４０、４１、４２および４５中に図９のハイレベルキャッシュメモリにおけるすべてのモジュールがいかにして相互作用するかを示す。
図１３は、図５Ｂおよび５Ｃにおける信号シーケンス４３および４４中に、図９のハイレベルキャッシュメモリにおけるすべてのモジュールがいかにして相互作用するかを示す。
図１４は、図６の信号シーケンス５１、５２、５５および５６中に、図９のハイレベルキャッシュメモリにおけるすべてのモジュールがいかにして相互作用するかを示す。
図１５は、図８Ａおよび８Ｂにおける信号シーケンス６０、６１、６２、７０および７１中、図９のハイレベルキャッシュメモリにおけるすべてのモジュールがいかにして相互作用するかを示す。
図１６は、図８Ａ、８Ｂ′、および８Ｃ′における信号シーケンス６０、６１、６２、および６３中、図９のハイレベルキャッシュメモリにおけるすべてのモジュールがいかにして相互作用するかを示す。
図１７は、図８Ｂ′および８Ｃ′における信号シーケンス８３、８４、８５および８６中、図９のハイレベルキャッシュメモリにおけるすべてのモジュールがいかにして相互作用するかを示す。
図１８は、図９のハイレベルキャッシュメモリ内に含まれるモジュール１０１についてのある好ましい内部構造を示す。
図１９は、図９のハイレベルキャッシュメモリに含まれるモジュール１０１についての代替の好ましい内部構造を示す。
詳細な説明
図１を参照すると、本発明をとり入れた分散データ処理システム１０が示されている。このデータ処理システム１０は、メインメモリモジュール１１と、単一のシステムバス１３に結合された入力／出力モジュール１２とを含む。図１では、システムバスはＳ−ＢＵＳで示され、メインメモリモジュールはＭＭで示され、入力／出カモジュールはＩ／Ｏで示される。
データ処理システム１０にはまた、複数のハイレベルキャッシュメモリ１４が含まれ、各ハイレベルキャッシュメモリはシステムバス１３に結合された第１のポートとそれぞれのプロセッサバス１５に結合された第２のポートとを有する。図１では、各ハイレベルキャッシュメモリはＨＬで示され、各プロセッサバスはＰ−ＢＵＳで示される。
好ましくは、システムバスに結合されるハイレベルキャッシュメモリの数は１から５まで変化する。図１では、第１、第２および第５のハイレベルキャッシュメモリのみが示され、第３および第４のハイレベルキャッシュメモリは図示されていないが一連のドットで示されている。
さらに、データ処理システム１０では、各プロセッサバスはそれぞれのローレベルキャッシュメモリ１６を通して１つ以上のデジタルコンピュータ１７に結合される。図１では、ローレベルキャッシュメモリはＬＬで示され、デジタルコンピュータはＰ１からＰ２０で示される。
好ましくは、各プロセッサバスのデジタルコンピュータの数は１から４である。図１では、コンピュータＰ１−Ｐ４がそれぞれのローレベルキャッシュメモリを通して第１のプロセッサバスに結合され第１のデータ処理クラスタ１８ａを形成するものとして示される。同様に、コンピュータＰ５−Ｐ８はそれぞれのローレベルキャッシュメモリを通して第２のプロセッサバスに結合されて第２のデータ処理クラスタ１８ｂを形成する。他も同様である。
ハイレベルキャッシュメモリ１４には、複数のデータ語がストアされ、各データ語は予め定められたビット数である。各ハイレベルキャッシュメモリではまた、図２Ａに示すように各データ語２０はフォーマット２１でストアされる。このフォーマット２１は比較アドレスＣＡおよび４つのタグビットＥ、Ｓ、ＭおよびＩを含む。一度に真であるタグビットは１つのみである。
タグビットＥは排他的タグビットであり、データ語が単一のハイレベルキャッシュメモリ１４にのみストアされているときに真である。タグビットＳは共有タグビットであり、データ語が２つ以上のハイレベルキャッシュメモリ１４にストアされているときに真である。タグビットＭは変更タグビットであり、データ語がプロセッサバスによりハイレベルキャッシュメモリに結合されたコンピュータの１つにより変更されているときに真である。タグビットＩは無効タグビットであり、ハイレベルキャッシュメモリのデータ語が使用不能であるときに真である。
同様に、ローレベルキャッシュメモリ１６には複数のデータ語がストアされ、各データ語は予め定められたビット数である。しかしながら各ローレベルキャッシュメモリでは、図２Ｂに示すように各データ語２２がフォーマット２３でストアされている。このフォーマット２３は、比較アドレスおよび上記のタグビットＳ、ＭおよびＩの３つのみを含む。排他的ビットであるタグビットＥは常に偽である。
データ語およびタグビットがハイレベルキャッシュメモリおよびローレベルキャッシュメモリにおいてロードされ変更されるプロセスを示すために、図３から図８Ｃ′を提示する。これらの図面は各々、図１のシステムを簡略化して表わしたものであり、５つのデータ処理クラスタのうち２つのみが示されているが、ＲＥＡＤ動作およびＷＲＩＴＥ動作中に生じる種々の信号シーケンスは破線で示される。
図３において、破線３１および３２は、デジタルコンピュータＰ１が、メインメモリにはあるがクラスタ１８ａのためのローレベルキャッシュメモリまたはハイレベルキャッシュメモリにはないデータ語に対するＲＥＡＤコマンドを実行するときに生じる２つの信号シーケンスを識別する。信号シーケンス３１では、ＲＥＡＤコマンドＲＤは最初にデジタルコンピュータＰ１のためのローレベルキャッシュメモリに転送される。次にそのローレベルキャッシュメモリが自身が要求されたデータ語を有していないと判断すると、ＲＥＡＤコマンドＲＤはクラスタ１８ａのためのハイレベルキャッシュメモリにプロセッサバスで送られる。後に、クラスタ１８ａのためのハイレベルキャッシュメモリが自身が要求されたデータ語を有していないと判断すると、ＲＥＡＤコマンドはシステムバスでメインメモリモジュールＭＭに送られる。
これに応答して、メインメモリモジュールは要求されたデータ語を信号シーケンス３２でクラスタ１８ａのためのハイレベルキャッシュメモリに送る。そのデータ語は次にハイレベルキャッシュメモリに排他的であるとしてタグ付けされてストアされるが、これは図３では文字Ｅで示される。その後、データ語はシーケンス３２でデジタルコンピュータＰ１のためのローレベルキャッシュメモリに送られる。しかしながらこのローレベルキャッシュメモリでは、データ語は共有としてタグ付けされ、これは図３では文字Ｓで示される。
次に図４では、図３のデジタルコンピュータＰ１が以前に読出したのと同じデータ語をデジタルコンピュータＰ２０が読出すプロセスが示される。このプロセスを実行するためには、破線３５、３６および３７で識別される３つの信号シーケンスが生じる。
信号シーケンス３５では、ＲＥＡＤコマンドＲＤがデジタルコンピュータＰ２０から、クラスタ１８ｅのためのローレベルキャッシュメモリおよびハイレベルキャッシュメモリを通して、メインメモリモジュールへと送られる。このＲＥＡＤコマンドがシステムバスにある期間中、クラスタ１８ａのためのハイレベルキャッシュメモリはシステムバスをスヌーピングしＲＥＡＤコマンドが内部でストアしたデータ語に対するものであることを検知する。これは図４でスヌーピング３６として示される。
このスヌーピング動作３６に応答して、クラスタ１８ａのためのハイレベルキャッシュメモリはＳＨＡＲＥＤ制御信号３７をシステムバスで送る。この制御信号３７は、クラスタ１８ｅのためのハイレベルキャッシュメモリに対し、要求されたデータ語が共有されていることを示す。同時に、クラスタ１８ａのためのハイレベルキャッシュメモリは、要求されたデータ語に対するタグビットを排他的から共有へと変換し、これはクラスタ１８ａのためのハイレベルキャッシュメモリにおいてはシンボルＥ→Ｓで示される。
次に、要求されたデータ語はメインメモリモジュールからクラスタ１８ｅのためのハイレベルキャッシュメモリへと送られる。このデータ語の経路は信号シーケンス３８で生じる。このデータ語がクラスタ１８ｅのためのハイレベルキャッシュメモリにストアされた後、このデータ語は信号シーケンス３８においてデジタルコンピュータＰ２０のためのローレベルキャッシュメモリへと送られる。クラスタ１８ｅのためのハイレベルキャッシュメモリおよびコンピュータＰ２０のためのローレベルキャッシュメモリ双方において、データ語は共有されるものとしてストアされ、これは上記メモリにおいて文字Ｓで示される。
次に図５Ａから５Ｄにおいて、図３および４において以前に読出された共有されたデータ語に対するＷＲＩＴＥコマンドをデジタルコンピュータＰ１が実行するプロセスが示される。このプロセスを開始するために、図５Ａで破線４０および４１で示された２つの信号が発生する。信号４０は、デジタルコンピュータＰ１のためのローレベルキャッシュメモリからクラスタ１８ａのためのハイレベルキャッシュメモリへと送られるＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号ＷＲである。次にこれに応答して、ＤＥＦＥＲ信号４１が、クラスタ１８ａのためのハイレベルキャッシュメモリからデジタルコンピュータＰ１のためのローレベルキャッシュメモリへと送られる。
その後、ＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号ＷＲ４２がクラスタ１８ａのためのハイレベルキャッシュメモリからシステムバスに送られ、これは図５Ｂに示される。このＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号は、クラスタ１８ｅのためのハイレベルキャッシュメモリによって検知可能なようにシステムバスに置かれる。この検知は図５Ｂではスヌーピング動作４３として示される。
スヌーピング動作４３に応答して、図４のプロセス中に読出されたデータ語に対するタグが、クラスタ１８ｅのためのハイレベルキャッシュメモリにおいて共有から無効へと変えられる。次に、クラスタ１８ｅのためのハイレベルキャッシュメモリはＩＮＶＡＬＩＤＡＴＥコマンドをデジタルコンピュータＰ２０のためのローレベルキャッシュメモリへと送り、これは図５Ｃでは信号４４で示される。このコマンドにより、図４のプロセス中に読出されたデータ語に対するタグは、コンピュータＰ２０のためのローレベルキャッシュメモリにおいて共有から無効へと変えられる。図５Ｃにおけるタグビットの各変更は、シンボルＳ→Ｉで示される。
図５Ｃの動作と同時に、図５Ｄに示されるさらなる動作が生じる。最初に、クラスタ１８ａのためのハイレベルキャッシュメモリは、ＷＲＩＴＥコマンドにより使用されたデータ語に対するタグビットを共有から変更に変える。次にクラスタ１８ａのためのハイレベルキャッシュメモリからコンピュータＰ１のためのローレベルキャッシュメモリへとＷＲＩＴＥ  ＧＲＡＮＴ信号ＷＧが送られ、これは信号４５で示される。これに応答して、このローレベルキャッシュメモリは、ＷＲＩＴＥコマンドが使用したデータ語に対するタグビットを共有から変更に変える。図５Ｄにおけるタグビットの各変更は図５ＤではシンボルＳ→Ｍで示される。
図５Ａ−５Ｄと関連づけて先に述べた信号のシーケンスに基づくと、共有されたデータに対して動作するＷＲＩＴＥコマンドの実行は複雑な動作であることは明らかである。その原因は、シーケンス４０−４５中に送らねばならない信号すべてにある。対照的に、排他的データに対して動作するＷＲＩＴＥコマンドが実行されるときには、この複雑さは大幅に減少する。このことは図６−８Ｃ′と関連づけて以下で述べられる。
図６ではまず、破線５１および５２が、デジタルコンピュータＰ１が最初にデータ語をメインメモリモジュールから読出すときに使用される２つの信号のシーケンスを示す。これらの信号のシーケンス５１および５２はそれぞれ、図３と関連づけて上述した信号シーケンス３１および３２に対応する。図６のＲＥＡＤ動作のため、データ語はメインメモリモジュールからクラスタ１８ａのためのハイレベルキャッシュメモリへと送られ、ここで排他的としてタグ付けされる。これと同じデータ語は次にデジタルコンピュータＰ１のためのローレベルキャッシュメモリに送られ、共有としてタグ付けされる。
その後、図６のプロセス中に読出されたデータ語を、デジタルコンピュータＰ１のためのローレベルキャッシュメモリからは削除するがクラスタ１８ａのためのハイレベルキャッシュメモリで保持することができる。これは、ローレベルキャッシュメモリの記憶容量がハイレベルキャッシュメモリの記憶容量よりも小さく、別のＲＥＡＤコマンドが実行されてローレベルキャッシュメモリにおけるデータが置換えられる場合に生じるであろう。
デジタルコンピュータＰ１のためのローレベルキャッシュメモリにおいて上記の置換えが生じた後、このデジタルコンピュータは再び置換えられたのと同じデータ語を読出すことを試みることができ、このようなＲＥＡＤコマンドの実行は図７で示される。最初に、ＲＥＡＤコマンドはプロセッサＰ１からそのローレベルキャッシュメモリに送られる。次に、ローレベルキャッシュメモリが自身は要求されたデータ語を有さないと判断すると、ＲＥＡＤコマンドは信号５５としてクラスタ１８ａのためのハイレベルキャッシュメモリに送られる。このハイレベルキャッシュメモリは次に、自身は要求されたデータ語を排他的データとしてストアしたと判断し、要求されたデータ語を信号５６としてプロセッサＰ１のためのローレベルキャッシュメモリに返送する。
次に、プロセッサＰ１は、クラスタ１８ａのためのハイレベルキャッシュメモリにストアされた排他的データ語を使用するＷＲＩＴＥコマンドを実行すると仮定する。このＷＲＩＴＥコマンドの実行は２つの異なる方法で生じ得る。一方は図８Ａおよび８Ｂに示され、他方は図８Ａ、８Ｂ′および８Ｃ′に示される。
図８Ａでは、デジタルコンピュータＰ１がＷＲＩＴＥコマンドを実行することにより、ＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号６０はデジタルコンピュータＰ１のためのローレベルキャッシュメモリからクラスタ１８ａのためのハイレベルキャッシュメモリへと送られる。クラスタ１８ａのためのハイレベルキャッシュメモリはＷＲＩＴＥ  ＲＥＱＵＥＳＴを受取ると、書込まれるべきデータ語を排他的データとして内部でストアしていると判断する。この判断に対し、クラスタ１８ａのためのハイレベルキャッシュメモリは、デジタルコンピュータＰ１のためのローレベルキャッシュメモリへとＲＥＴＲＹ信号６１を送る。
上記の信号６０および６１が発生している間、クラスタ１８ａのためのハイレベルキャッシュメモリはまた、その他いずれかのハイレベルキャッシュメモリがＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号をシステムバスで送っているかどうかを調べるために、システムバスをスヌーピングする。このスヌーピング動作は図８Ａでスヌーピング６２として示され、別のハイレベルキャッシュメモリからシステムバスに与えられるかもしれないＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号はＷＲ６３で示される。
デジタルコンピュータＰ１が書込もうとしているものと同じデータ語を使用するＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号がシステムバスで検出されなかった場合、このデータ語に対するタグはクラスタ１８ａのためのハイレベルキャッシュメモリにおいて排他的から変更に変えられる。これは図８ＢではシンボルＥ→Ｍで示される。次にこのＷＲＩＴＥコマンドの実行は図８Ｂの信号シーケンスによって進められ終了する。
逆に、コンピュータＰ１が書込もうとしているものと同じデータ語を使用するＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号がシステムバスで検出されると、そのデータ語に対するタグはクラスタ１８ａのためのハイレベルキャッシュメモリにおいて排他的から無効へと変えられ、これは図８Ｂ′ではシンボルＥ→Ｉで示される。次に図８Ｂ′および８Ｃ′で示される信号のシーケンスによりＷＲＩＴＥが実行され終了する。
実際上の問題として、デジタルコンピュータＰ１が書込もうとしているのと同じデータ語を使用するＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号がシステムバスにおいてスヌーピング動作６２中に発生する可能性は非常に低い。したがって、デジタルコンピュータＰ１からのＷＲＩＴＥコマンドはほぼ常に図８Ｂに示されるように実行される。
図８Ｂでは、デジタルコンピュータＰ１のためのローレベルキャッシュメモリは別のＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号７０をクラスタ１８ａのためのハイレベルキャッシュメモリに戻す。この第２のＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号は図８Ａで生じたＲＥＴＲＹ信号６１に応答して送られる。次にクラスタ１８ａのためのハイレベルキャッシュメモリは、ＷＲＩＴＥ  ＧＲＡＮＴ信号７１をデジタルコンピュータＰ１のためのローレベルキャッシュメモリに返送することによって、ＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号７０および書込まれるべきデータ語に対する変更タグに応答する。
図８Ｂ′では、クラスタ１８ａのためのハイレベルキャッシュメモリは、ＩＮＶＡＬＩＤＡＴＥコマンド６４をデジタルコンピュータＰ１のためのローレベルキャッシュメモリに返送することによって、システムバスで生じたＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号６３に応答する。またシステムバスのＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号６３に応答して、デジタルコンピュータＰ２０によって書込まれるべきデータ語がメインメモリからクラスタ１８ｅのためのハイレベルキャッシュメモリへと送られる別の信号シーケンス６５が生じる。ここでは、受取ったデータ語は変更としてタグ付けされる。次に、同じデータ語がデジタルコンピュータＰ２０のためのローレベルキャッシュメモリへと転送され、ここでもまた変更としてタグ付けされる。
その後、第２のＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号８０がクラスタ１８ａのためのハイレベルキャッシュメモリへと送られる図８Ｃ′の信号シーケンスが生じる。このＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号、および書込まれるべきデータ語に対する無効タグに応答して、クラスタ１８ａのためのハイレベルキャッシュメモリはＤＥＦＥＲ信号８１をデジタルコンピュータＰ１のためのローレベルキャッシュメモリに返送する。次に、クラスタ１８ａのためのハイレベルキャッシュメモリは、デジタルコンピュータＰ１が書込もうとしているデータ語に対するＲＥＡＤコマンド８２をシステムバスで送る。
ＲＥＡＤコマンド８２がシステムバスにある間、そのコマンドはクラスタ１８ｅのためのハイレベルキャッシュメモリにおいて検出され、この検出は図８Ｃ′ではスヌーピング動作８３として示される。次に、クラスタ１８ｅのためのハイレベルキャッシュメモリは、ＲＥＡＤコマンド８２は、自身が信号シーケンス６５中に以前内部でストアしたのと同じデータ語に対するものであると判断する。この判断に対し、クラスタ１８ｅのためのハイレベルキャッシュメモリはＤＥＦＥＲ信号８４をシステムバスでクラスタ１８ａのためのハイレベルキャッシュメモリに送る。このＤＥＦＥＲ信号８４は、ＲＥＡＤ信号８２により要求されたデータはメインメモリ以外のソースから与えられるものであり、したがって遅延されるであろうことを示す。
その後、クラスタ１８ｅのためのハイレベルキャッシュメモリは内部でＲＥＡＤコマンド８２に対するデータ語を取出し、このデータ語を無効として内部でタグ付けする。さらに、クラスタ１８ｅのためのハイレベルキャッシュメモリは、ＩＮＶＡＬＩＤＡＴＥコマンド８５を、デジタルコンピュータＰ２０のためのローレベルキャッシュメモリへと送り、コンピュータＰ２０はここに取出されたデータ語を無効としてタグ付けする。次に、クラスタ１８ｅのためのハイレベルキャッシュメモリは、取出したデータ語をシステムバスでクラスタ１８ａのためのハイレベルキャッシュメモリに送り、これは信号シーケンス８６で示される。クラスタ１８ａのためのハイレベルキャッシュメモリはこのデータ語を受取ると、データ語およびＷＲＩＴＥ  ＧＲＡＮＴ信号をデジタルコンピュータＰ１のためのローレベルキャッシュメモリに送ることによって応答する。
次に図９を参照して、図３から８Ｃ′の信号シーケンスすべてを実行するハイレベルキャッシュメモリのための好ましい回路について述べる。この図９の回路は図示のように相互結合される１２のモジュール９０−１０１からなる。これらモジュール９０−１０１の各々は以下表１で説明するとおりである。
0003919224.tif 000002
0003919224.tif 000003
0003919224.tif 000004
次に、図９のハイレベルキャッシュメモリにおけるすべてのモジュールがいかにして相互に作用するかを説明するために、図１０−１７を設ける。図１０−１７各々は、図９の回路を写したものであるが、図９の回路において図３−８Ｃ′の信号シーケンスがどのようにして生じるかを詳細に示す参照番号を含む。
たとえば、図１０では、参照番号３１ａから３１ｅは、クラスタ１８ａのためのハイレベルキャッシュメモリがいかにして図３のＲＥＡＤコマンド３１を処理するかを示す。最初に、このＲＥＡＤコマンドは参照番号３１ａで示すように入力バッファ９０によりプロセッサバスから受取られる。このＲＥＡＤコマンドは次に、参照番号３１ｂで示すようにタグメモリ９１に送られる。タグメモリ９１は次に、自身が受取ったＲＥＡＤコマンドは、タグメモリ９１にストアされた比較アドレスのいずれとも等しくないアドレスを有するものと判断する。したがって、ＲＥＡＤコマンドはタグメモリ９１によりキュー９９へと送られ、これは参照番号３１ｃで示されている。このキュー９９から、ＲＥＡＤコマンドは参照番号３１ｂで示されるように出力バッファ１００へと送られ、次にこのＲＥＡＤコマンドは参照番号３１ｅで示されるようにシステムバスへと送られる。
同様に図１０では、参照番号３２ａから３２ｇは、図３において読出されたデータ語３２に対しいかにしてクラスタ１８ａのためのハイレベルキャッシュメモリが動作するかを示す。最初に、このデータ語は参照番号３２ａで示されるようにシステムバスから入力バッファ９５により受取られる。次に受取ったデータ語に対するアドレスは比較アドレスとしてタグメモリ９６に書込まれ、対応するタグビットがタグメモリ９６において排他的状態にセットされる。これは参照番号３１ｂで示される。次に受取られたデータ語は参照番号３２ｃで示すように入力バッファ９５からキュー９８に転送される。その後、そのデータ語は参照番号３２ｄで示すようにデータＲＡＭ９２に書込まれる。キュー９８におけるデータ語のアドレスもまた、比較アドレスとしてタグメモリ９１に書込まれ、この比較アドレスに対するタグビットは排他的状態にセットされる。これは参照番号３２ｅで示される。次に、データ語はキュー９８から出力バッファ９３へと参照番号３２ｆで示すように転送され、参照番号３２ｇで示すように、出力バッファからこのデータ語はプロセッサバスに送られる。
図１１では、参照番号３６ａ−３６ｇは、クラスタ１８ａのためのハイレベルキャッシュメモリにおいて図４のスヌーピング動作３６がいかにして発生するかを示す。このスヌーピング動作は、クラスタ１８ｅのためのハイレベルキャッシュメモリがシステムバスで送ったＲＥＡＤコマンド３５を入力バッファ９５が受取ることで開始され、これは参照番号３６ａで示される。次にＲＥＡＤコマンドは参照番号３６ｂで示すように入力バッファ９５からタグメモリ９６へと送られ、タグメモリ９６では、ＲＥＡＤコマンドはタグメモリにストアされた比較アドレスと等しいアドレスを有することを示すＭＡＴＣＨ信号が発生する。このＭＡＴＣＨ信号に応答して、一致した比較アドレスに対するタグビットは参照番号３６ｃで示すように排他的から共有へと変えられる。このＭＡＴＣＨ信号に応答して、タグメモリ９６はまた、参照番号３６ｄおよび３６ｅで示すように、制御回路９７に、ＳＨＡＲＥＤ制御信号をシステムバスで送らせる。さらにタグメモリ９６のＭＡＴＣＨ信号に応答して、このタグメモリにより、一致した比較アドレスは参照番号３６ｆで示すように制御信号とともにキュー回路９８にロードされる。この制御信号および一致した比較アドレスは次に、参照番号３６ｇで示すように、タグメモリ９１にビジーでないときに転送され、タグメモリ９１は、参照番号３６ｈで示すように一致している比較アドレスを排他的から共有に変えることにより制御信号に応答する。
次に図１２は、図５Ａ−５ＤのＷＲＩＴＥ動作中にクラスタ１８ａのためのハイレベルキャッシュメモリにおいて生じる信号のシーケンス４０、４１、４２および４５を示す。最初に、参照番号４０ａで示すように、ＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号ＷＲが入力バッファ９０においてプロセッサバスから受取られる。次に、ＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号はタグメモリ９１に送られＭＡＴＣＨ信号が発生する。このＭＡＴＣＨ信号は、このＷＲＩＴＥ  ＲＥＱＵＥＳＴがタグメモリ９１における比較アドレスと等しいアドレスを有するデータ語に対するものであることを示す。このＭＡＴＣＨ信号および比較アドレスに対する共有タグビットに応答し、タグメモリ９１は、制御回路９５にプロセッサバスでＤＥＦＥＲ信号を送らせ、これは参照番号４１ａおよび４１ｂで示される。ＭＡＴＣＨ信号および一致している比較アドレスに対する共有タグビットに応答して、ＷＲＩＴＥ  ＲＥＱＵＥＳＴがまた参照番号４２ａで示すように回路９９に転送される。このＷＲＩＴＥ  ＲＥＱＵＥＳＴは次に参照番号４２ｂおよび４２ｃで示すように出力バッファ１００を通してシステムバスに送られる。
ＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号４２ｃに応答して、ＷＲＩＴＥ  ＧＲＡＮＴ信号ＷＧがメインメモリモジュールからシステムバスで返送され、このＷＲＩＴＥ  ＧＲＡＮＴ信号は参照番号４５ａで示すように入力バッファ９５にロードされる。次に、参照番号４５ｂで示すようにＷＲＩＴＥ  ＧＲＡＮＴ信号がタグメモリ９６に転送される。タグメモリ９６では、受取ったＷＲＩＴＥ  ＧＲＡＮＴがタグメモリ９６における比較アドレスと等しいアドレスを有するデータ語に対するものであることを示すＭＡＴＣＨ信号が発生される。次にこのＭＡＴＣＨ信号に応答して、一致した比較アドレスに対するタグビットは参照番号４５ｃで示すように共有から変更に変えられる。さらにタグメモリ９６におけるＭＡＴＣＨ信号に応答して、このタグメモリにより、一致している比較アドレスは参照番号４５ｄで示すように制御信号とともにキュー回路９８にロードされる。この制御信号および一致した比較アドレスは次に、参照番号４５ｅで示すようにタグメモリ９１にビジーでないときに転送され、タグメモリ９１は、参照番号４５ｆで示すように一致している比較アドレスに対するタグビットを共有から変更に変えることによりこの制御信号に応答する。次にタグメモリ９１は、参照番号４５ｇおよび４５ｈで示すように、制御回路９４に、プロセッサバスでＷＲＩＴＥ  ＧＲＡＮＴを送らせる。
次に図１３では、参照番号４３ａ−４３ｅおよび４４ａ−４３ｂはそれぞれ、図５Ｂおよび５Ｃにおけるクラスタ１８ｅのためのハイレベルキャッシュメモリによりいかにしてスヌーピング動作４３および無効化動作４４が行なわれるかをそれぞれ示す。最初に、スヌーピング動作は、参照番号４３ａで示すように、図５Ｂでシステムバスで送られたＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号ＷＲを入力バッファ９５にロードすることで開始される。このＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号は次に入力バッファ９５からタグメモリ９５へと送られ、ＭＡＴＣＨ信号が発生される。このＭＡＴＣＨ信号は、ＷＲＩＴＥ  ＲＥＱＵＥＳＴが、タグメモリ９６における比較アドレスと等しいアドレスを有するデータ語に対するものであることを示す。このＭＡＴＣＨ信号に応答して、一致した比較アドレスに対するタグビットはタグメモリ９６において参照番号４３ｃで示すように共有から無効に変えられる。さらにタグメモリ９６のＭＡＴＣＨ信号に応答して、このタグメモリにより、一致した比較アドレスは参照番号４３ｄで示すように制御信号とともにキュー回路９８にロードされる。この制御信号および一致している比較アドレスは次に参照番号４３ｅで示すようにタグメモリ９１にビジーでないときに転送され、タグメモリ９１は制御信号に、参照番号４３ｆで示すように一致している比較アドレスに対するタグビットを共有から無効に変えることによって応答する。次にタグメモリ９１は、参照番号４４ａおよび４４ｂで示すように、制御回路９４にプロセッサバスでＩＮＶＡＬＩＤＡＴＥコマンドを送らせる。
次に図１４では、参照番号５１ａから５１ｅは、図３のＲＥＡＤコマンド５１がクラスタ１８ａのためのハイレベルキャッシュメモリによりいかにして処理されるかを示す。また図１４では、参照番号５２ａから５２ｇは図６で読出されたデータ語５２に対しいかにしてクラスタ１８ａのためのハイレベルキャッシュメモリが動作するかを示す。信号のシーケンス５１ａ−５１ｅは図１０と関連づけて既に述べた信号のシーケンス３１ａ−３１ｅと同一であるため説明は繰返さない。同様に、信号シーケンス５２ａ−５２ｇは図１０と関連づけて先に述べた信号シーケンス３２ａ−３２ｇと同一であるため、その説明を繰返さない。
図１４ではまた、参照番号５５ａ−５５ｂおよび５６ａ−５６ｃはそれぞれ、図７のＲＥＡＤコマンド５５およびデータ語５６に対しいかにしてクラスタ１８ａのためのハイレベルキャッシュメモリが動作するかを示す。最初に、ＲＥＡＤコマンドは参照番号５５ａで示すように入力バッファ９０においてプロセッサバスから受取られる。次にＲＥＡＤコマンドは参照番号５５ｂで示すようにタグメモリ９１に転送され、ＭＡＴＣＨ信号が発生される。このＭＡＴＣＨ信号は、ＲＥＡＤコマンドが、タグメモリ９１における比較アドレスと等しいアドレスを有するデータ語に対するものであることを示す。このＭＡＴＣＨ信号および一致している比較信号に対するタグビットの排他的状態に応答して、制御信号が参照番号５６ａで示されるようにタグメモリ９１からデータＲＡＭ９２へと送られる。この制御信号はアドレッシングされたデータ語をデータＲＡＭ９２から読出し、このデータ語を参照番号５６ｂで示すように出力バッファ９３に送る。次に出力バッファ９３は参照番号５６ｃで示すようにデータ語をプロセッサバスに送る。
図１５では、参照番号６０ａ−６０ｂおよび６１ａ−６１ｂはそれぞれ、図８ａのＷＲＩＴＥ動作中いかにしてＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号およびＲＥＴＲＹ信号がクラスタ１８ａのためのハイレベルキャッシュメモリで生じるかを示す。最初に参照番号６０ａで示すように、ＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号がプロセッサバスから入力バッファ９０にロードされる。次に参照番号６０ｂで示すように、ＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号がタグメモリ９１に送られ、ＭＡＴＣＨ信号が発生される。このＭＡＴＣＨ信号は、ＷＲＩＴＥ  ＲＥＱＵＥＳＴがタグメモリ９１における比較アドレスと等しいアドレスを有するデータ語に対するものであることを示す。このＭＡＴＣＨ信号および一致している比較アドレスに対するタグビットの排他的状態に応答して、タグメモリ９１は、参照番号６１ａおよび６１ｂで示すように制御回路９４にプロセッサバスでＲＥＴＲＹ信号を送らせる。
上記の動作と同時に、図１５のスヌーピング動作６２が実行され、システムバスに存在するかもしれないＷＲＩＴＥ  ＲＥＱＵＥＳＴ（たとえばＷＲＩＴＥ  ＲＥＱＵＥＳＴ６３）が入力バッファ９５にロードされ、これは参照番号６２ａで示される。ＷＲＩＴＥ  ＲＥＱＵＥＳＴが存在すれば、参照番号６２ｂで示すようにＷＲＩＴＥ  ＲＥＱＵＥＳＴは入力バッファ９５からＷＲＩＴＥ制御回路１０１へ送られる。次にＷＲＩＴＥ制御回路１０１は、参照番号６０ｃで示すように、システムバスからのＷＲＩＴＥ  ＲＥＱＵＥＳＴをプロセッサバスで発生したＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号と比較する。ＷＲＩＴＥ制御回路１０１が、プロセッサバスで発生したＷＲＩＴＥ  ＲＥＱＵＥＳＴと同じ書込アドレスを有するＷＲＩＴＥ  ＲＥＱＵＥＳＴはシステムバスにないと判断すれば、ＷＲＩＴＥ制御回路１０１は制御信号６２ｃをタグメモリ９１に送り、制御信号６２ｄをタグメモリ９６に送る。これに応答して、タグメモリ９１は、参照番号６２ｅで示すように、ＷＲＩＴＥ  ＲＥＱＵＥＳＴ６０ａによって書込まれるべきデータ語のタグビットを排他的から変更に変える。タグメモリ９６はまた、参照番号６２ｆで示すように同じやり方で内部でストアしたタグビットを変える。
その後図１５では、参照番号７０ａで示すように別のＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号が入力バッファ９０で受取られる。このＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号は先に送られたＲＥＴＲＹ信号６１ｂに応答してプロセッサバスで発生する。この入力バッファ９０から、ＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号がタグメモリ９１に送られ、ＷＲＩＴＥ  ＲＥＱＵＥＳＴがタグメモリ９１における比較アドレスと等しいアドレスを有するデータ語に対するものであることを示すＭＡＴＣＨ信号が発生される。このＭＡＴＣＨ信号および一致している比較アドレスに対するタグビットの変更された状態に応答して、タグメモリ９１は参照番号７１ａおよび７１ｂで示すように、制御回路９４に、プロセッサバスでＷＲＩＴＥ  ＧＲＡＮＴ信号を送らせる。
図１６では、参照番号６０ａ−６０ｂおよび６１ａ−６１ｂは再び、図８Ａの書込動作中クラスタ１８ａのためのハイレベルキャッシュメモリにおいていかにしてＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号およびＲＥＴＲＹ信号が発生するかを示す。これは図１５の参照番号６０ａ−６０ｂおよび６１ａ−６１ｂで示されるものの繰返しである。しかしながら、図１６はまた、プロセッサバスで発生するＷＲＩＴＥ  ＲＥＱＵＥＳＴと同じアドレスを有するＷＲＩＴＥ  ＲＥＱＵＥＳＴがシステムバスで検出されるスヌーピング動作を示す。これは図８Ｂ′および８Ｃ′で示されるようなクラスタ１８ａのためのハイレベルキャッシュメモリにおいて生じる信号シーケンスに対応する。
最初に図１６のスヌーピング動作において、システムバスのＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号が参照番号６２ａで示すように入力バッファ９５にロードされる。このＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号は次に参照番号６２ｂで示すように入力バッファ９５からＷＲＩＴＥ制御回路１０１へと送られる。次にＷＲＩＴＥ制御回路１０１は、参照番号６０ｃで示すように、システムバスからのＷＲＩＴＥ  ＲＥＱＵＥＳＴをプロセッサバスから受取ったＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号と比較する。ＷＲＩＴＥ制御回路１０１が、システムバスからのＷＲＩＴＥ  ＲＥＱＵＥＳＴが、プロセッサバスからのＷＲＩＴＥ  ＲＥＱＵＥＳＴと同じ書込アドレスを有すると判断すると、ＷＲＩＴＥ制御回路１０１は、参照番号６２ｃ′で示すように制御信号をタグメモリ９１に送る。この制御信号に応答して、タグメモリ９１は参照番号６２ｅ′で示すように書込まれるべきデータ語のタグビットを排他的から無効に変える。
上記の動作と同時に、システムバスで生じたＷＲＩＴＥ  ＲＥＱＵＥＳＴは入力バッファ９５からタグメモリ９６に転送され、ＭＡＴＣＨ信号が発生される。このＭＡＴＣＨ信号は、システムバスのＷＲＩＴＥ  ＲＥＱＵＥＳＴが、タグメモリ９６の比較アドレスを有するデータ語に対するものであることを示す。このＭＡＴＣＨ信号に応答して、一致している比較アドレスに対するタグビットは参照番号６４ａで示すようにタグメモリ９６において排他的から無効に変えられる。次に、タグメモリ９６は参照番号６４ｂで示すようにＩＮＶＡＬＩＤＡＴＥコマンドをキュー回路９８に送り、このＩＮＶＡＬＩＤＡＴＥコマンドは次に参照番号６４ｃおよび６４ｄで示すように出力バッファ９３を介してプロセッサバスに送られる。
その後、参照番号８０ａで示すように別のＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号が入力バッファ９０において受取られる。このＷＲＩＴＥ  ＲＥＱＵＥＳＴは、以前に制御回路９４によって送られたＲＥＴＲＹ信号６１ｂに応答してプロセッサバスで生じるものである。この入力バッファ９０から、ＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号がタグメモリ９１に送られ、ここでＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号８０ｂがタグメモリ９１における比較アドレスを有するデータ語に対するものであることを示すＭＡＴＣＨ信号が発生される。このＭＡＴＣＨ信号、および一致している比較アドレスに対するタグビットに応答して、タグＲＡＭ９１は、参照番号８１ａおよび８１ｂで示されるように制御回路９４にＤＥＦＥＲ信号をプロセッサバスで送らせる。ＭＡＴＣＨ信号および一致している比較アドレスに対するタグビットの無効状態に応答して、タグメモリ９１により、参照番号８２ａで示されるようにＲＥＡＤコマンドがキュー回路９９にロードされる。このＲＥＡＤコマンドは次に、参照番号８２ｂおよび８２ｃで示されるように出力バッファ１００を介してシステムバスに転送される。
このＲＥＡＤコマンド８２ｃは、システムバスでクラスタ１８ｅのためのハイレベルキャッシュメモリに送られ、ここで図１７に示されるような動作が行なわれる。最初に、参照番号８３ａで示すようにＲＥＡＤコマンドは入力バッファ９５で受取られる。次にＲＥＡＤコマンドはタグメモリ９６に転送され、ＲＥＡＤコマンドがタグメモリにおける比較アドレスと一致するアドレスを有するデータ語に対するものであることを示すＭＡＴＣＨ信号が発生される。このＭＡＴＣＨ信号および一致している比較アドレスに対するタグビットの変更された状態に応答して、タグメモリ９６は参照番号８４ａで示されるようにタグビットを変更から無効に変え、タグメモリ９６は参照番号８４ｂおよび８４ｃで示すように、制御回路９７にＤＥＦＥＲ信号をシステムバスで送らせる。さらにタグメモリ９６は参照番号８５ａで示すように３つの動作を生じさせるキュー回路９８に制御信号を送る。始めに、読出されるべきデータ語のアドレスに対するタグビットは、参照番号８５ｂおよび８５ｃで示すようにタグＲＡＭ９１で変更から無効に変えられる。次に読出されるべきデータ語に対するＩＮＶＡＬＩＤＡＴＥコマンドは参照番号８５ｄおよび８５ｅで示すように出力バッファ９３からプロセッサバスに送られる。次に、読出されるべきデータ語は参照番号８６ａおよび８６ｂで示すようにデータＲＡＭ９２から出力バッファ９３に転送される。このデータ語は次に、参照番号８６ｃ、８６ｄ、８６ｅ、８６ｆおよび８６ｇで示すように出力バッファ９３からシステムバスに転送される。
次に図１８を参照して、ハイレベルキャッシュメモリにおけるモジュール１０１に対する好ましい内部構造について述べる。モジュール１０１は書込要求が排他的タグビットを有するデータ語について処理される図１５および１６で生じる信号のシーケンスの多くにおいて用いられる。この図１８のモジュール１０１の実施例は、比較器回路１１０、インバータゲート１１１、１対のＡＮＤゲート１１２および１１３、ならびに４つの同期回路１１４−１１７を含み、これらはすべて図示のとおりに相互接続される。各構成要素１１０−１１７は先行技術において説明されている。たとえば、各同期回路は米国特許第４，８３９，５４１号で説明されたように構成できる。
動作においては、ＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号６０ａはプロセッサバスから入力バッファ９０にロードされる。次にＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号は参照番号６０ｂで示すようにタグメモリ９１に送られ、ＭＡＴＣＨ信号が発生される。このＭＡＴＣＨ信号および一致している比較アドレスに対するタグビットの排他的状態に応答して、タグメモリ９１は参照番号６１ｂで示すようにＲＥＴＲＹ信号がプロセッサバスで送られるようにする。
上記の動作が生じている間、ＷＲＩＴＥ  ＲＥＱＵＥＳＴ６０ａは入力バッファ９０から同期回路１１４に転送され、一致している比較アドレスに対する排他的タグビットはタグメモリ９１から同期回路１１５に転送される。これは参照番号６０ｃで示される。同時に、システムバスに存在し得る何らかのＷＲＩＴＥ  ＲＥＱＵＥＳＴは参照番号６２ａで示すように入力バッファ９５にロードされる。次に比較器１１０は同期回路１１４にあるＷＲＩＴＥ  ＲＥＱＵＥＳＴを入力バッファ９５の内容と比較する。同期回路１１４および入力バッファ９５双方が同じデータ語に対するＷＲＩＴＥ  ＲＥＱＵＥＳＴを含むならば、比較器回路１１０はその出力でＥＱＵＡＬ信号を発生する。
もしＥＱＵＡＬ信号が生じなければ、ＡＮＤゲート１１２は、制御信号を同期回路１１７に送り、同期回路１１７はタグメモリ９１に一致している比較アドレスに対するタグビットを排他的から変更に変えさせ、これは参照番号６２ｃで示される。同じ制御信号がまたタグメモリ９６に送られ、これに応答して、タグメモリ９６は同じやり方で一致している比較アドレスに対するタグビットを変える。これは参照番号６２ｄで示される。逆に、ＥＱＵＡＬ信号が発生すれば、ＡＮＤゲート１１３は制御信号を同期回路１１６に送り、制御回路１１６はタグメモリ９１に一致している比較アドレスに対するタグビットを排他的から無効に変えさせ、これは参照番号６２ｃ′で示される。
その後ＲＥＴＲＹ信号６１ｂに応答して、第２のＷＲＩＴＥ  ＲＥＱＵＥＳＴが参照番号７０ａで示すように入力バッファ９０で受取られる。この第２のＷＲＩＴＥ  ＲＥＱＵＥＳＴは次に参照番号７０ｂで示すようにタグメモリ９１に転送され、これに応答して、ＭＡＴＣＨ信号が発生される。一致している比較アドレスに対するタグビットが制御信号６２ｃにより変更状態に変えられているならば、ＷＲＩＴＥ  ＧＲＡＮＴ信号が参照番号７１ｂで示すようにプロセッサバスで送られる。そうでなくもし一致している比較アドレスに対するタグビットが制御信号６２ｃ′により無効状態に変えられているならば、ＤＥＦＥＲ信号が参照番号８１ｂで示すようにプロセッサバスで送られる。
上記のモジュール１０１の実施例を用いると、プロセッサバスで生じるすべての信号を１つのクロックＣＫ１に同期化させることができ、システムバスで生じるすべての信号をクロックＣＫ１と非同期である別のクロックＣＫ２と同期化させることができる。この２つの非同期のクロックはモジュール１０１において誤動作を生じさせない。なぜなら、比較器１１０および論理ゲート１１１−１１３を通過するすべての信号はただ１つのクロック（システムバスクロックＣＫ２）に同期化されるからである。同様に、これら２つの非同期のクロックはタグメモリ９１の誤動作を生じさせないであろう。なぜなら、受取るすべての信号はただ１つのクロック（プロセッサクロックＣＫ１）に同期化されるからである。
次に代替例として、プロセッサバスで生じるすべての信号およびシステムバスで生じるすべての信号が同じクロックＣＫ１に同期化されると仮定する。この場合、図１８のモジュール１０１に対する内部構造を図１９のように変形できる。この変形により、プロセッサバスにＲＥＴＲＹ信号は送られず、プロセッサバスから第２のＷＲＩＴＥ  ＲＥＱＵＥＳＴは受取られない。その代わりに、第１のＷＲＩＴＥ  ＲＥＱＵＥＳＴ６０ａに応答して、ＷＲＩＴＥ  ＧＲＡＮＴ信号７１ｂまたはＤＥＦＥＲ信号８０ｂいずれかがプロセッサバスに送られる。
最初に図１９で、ＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号６０ａがプロセッサバスから入力バッファ９０にロードされ、ここからＷＲＩＴＥ  ＲＥＱＵＥＳＴ信号がタグメモリ９１に送られる。次にタグメモリ９１が、書込まれるべきデータ語のアドレスと等しい比較アドレスを含むならばＭＡＴＣＨ信号が発生される。このＭＡＴＣＨ信号に応答して、一致している比較アドレスに対するタグは直接ＡＮＤゲート１１２および１１３に送られる。同時に、システムバスに存在し得るＷＲＩＴＥ  ＲＥＱＵＥＳＴは入力バッファ９５にロードされる。次に比較器１１０は入力バッファ９５の内容を入力バッファ９０にあるＷＲＩＴＥ  ＲＥＱＵＥＳＴと比較し、もし入力バッファ９０および９５双方が同じデータ語に対するＷＲＩＴＥ  ＲＥＱＵＥＳＴを含むならばＥＱＵＡＬ信号が発生される。
ＡＮＤゲート１１２がタグメモリ９１から排他的タグビットを受取る間にＥＱＵＡＬ信号が生じなければ、ＡＮＤゲート１１２により、タグビットはタグメモリ９１において排他的から変更に変えられ、ＷＲＩＴＥ  ＧＲＡＮＴ信号がプロセッサバスに送られる。これは参照番号６２ｃおよび７１ｂで示される。逆に、ＡＮＤゲート１１３がタグメモリ９１から排他的タグビットを受取る間にＥＱＵＡＬ信号が発生しなければ、ＡＮＤゲート１１３により排他的タグビットは無効に変えられ、ＤＥＦＥＲ信号がプロセッサバスで送られる。これは参照番号６２ｃ′および８１ｂで示される。
図３−８Ｃ′および１０−１７で示すように、種々の信号のシーケンスは別々に発生すると説明されている。しかしながらこれに加えて、上記の同じ信号のシーケンスの多数の組合せが同時に生じる可能性がある。
たとえば、図４の信号シーケンスが図７の信号シーケンスと同時に発生する可能性がある。この場合、デジタルコンピュータＰ２０は、システムバスのメインメモリからデータ語を読出し（図４）、一方デジタルコンピュータＰ１は同じデータ語をハイレベルキャッシュメモリから読出す（図７）。これを達成するためには、デジタルコンピュータＰ１に結合されたハイレベルキャッシュメモリは、図１１で詳細に表わした信号のシーケンス３６ａ−３６ｈを実施することによりＳＨＡＲＥＤ制御信号をシステムバスで送り、同時に図１４で詳細に示した信号シーケンス５５ａ−５６ｃを実施することによりデータ語をプロセッサバスで送る。タグメモリ９１および９６は互いに並列動作を行なうため、このように動作を同時に行なうことが可能である。
別の例としては、図８Ｃ′におけるスヌーピング動作８３を実施しているハイレベルキャッシュメモリは同時に、図７の信号のシーケンス５５および５６を実施することによりデータ語をデジタルコンピュータＰ１７−Ｐ２０のうち１つに転送することができる。スヌーピング動作中、ハイレベルキャッシュメモリは図１７の信号シーケンス８３ａ−８４ｃで示すようにＤＥＦＥＲ信号をシステムバスで送り、ＲＥＡＤ動作中、データ語は同時に図１４の信号シーケンス５５ａ−５６ｃで示すようにプロセッサバスで送られる。ここでもまた、タグメモリ９１および９６は並列動作を行なっているためこのように動作を同時に行なうことが可能である。
図１から１９の上記の詳細な説明に基づくと、当業者には、本発明の性質および精神から逸脱することなく例示された好ましい方法および回路に多くの変形を施すことが可能であることが明らかになるであろう。したがって、本発明は示された好ましい実施例に限定されるのではなく添付の請求の範囲によって規定されることが理解されるべきである。
【図１】
0003919224.tif 000005
【図２Ａ】
0003919224.tif 000006
【図２Ｂ】
0003919224.tif 000007
【図３】
0003919224.tif 000008
【図４】
0003919224.tif 000009
【図５Ａ】
0003919224.tif 000010
【図５Ｂ】
0003919224.tif 000011
【図５Ｃ】
0003919224.tif 000012
【図５Ｄ】
0003919224.tif 000013
【図６】
0003919224.tif 000014
【図７】
0003919224.tif 000015
【図８Ａ】
0003919224.tif 000016
【図８Ｂ】
0003919224.tif 000017
0003919224.tif 000018
0003919224.tif 000019
【図９】
0003919224.tif 000020
【図１０】
0003919224.tif 000021
【図１１】
0003919224.tif 000022
【図１２】
0003919224.tif 000023
【図１３】
0003919224.tif 000024
【図１４】
0003919224.tif 000025
【図１５】
0003919224.tif 000026
【図１６】
0003919224.tif 000027
【図１７】
0003919224.tif 000028
【図１８】
0003919224.tif 000029
【図１９】
0003919224.tif 000030