(57)【特許請求の範囲】
【請求項１】
キャッシュを具備する複数の中央処理装置と、前記中央処理装置及び入出力装置のいずれかからの要求を処理するメモリコントローラと、前記キャッシュの情報を保持する分散共有メモリとから構成され、前記中央処理装置と前記メモリコントローラとの間をバス接続してなる複数のノードを含む分散共有メモリ型マルチプロセッサシステムであって、
前記複数のノード各々を接続するノード間アドレスバスと、前記複数のノード各々を接続しかつ前記複数のノード間のデータの処理と前記入出力装置からの要求の処理とを行うクロスバーとを有し、
前記メモリコントローラは、前記キャッシュの情報を保持するタグメモリと、前記タグメモリにおけるタグ掃き出し情報を保持するタグスワップバッファと、前記ノードから発行されたリクエストを制御するタグ制御回路と、前記ノード各々にアクセスするリクエストを制御するリクエスト制御部と、前記ノード内のリプライデータを制御するリプライ制御回路とを含み、
前記タグ制御回路は、前記タグメモリ及び前記タグスワップバッファの索引、登録、無効化、コヒーレントリクエストの発行を行う機構を含み、
前記タグメモリ及び前記タグスワップバッファの索引結果を判定する判定回路を含み、
前記判定回路は、前記タグメモリのエリアが無効化対象であり、同一セットアドレスが前記タグスワップバッファに存在することを検出した時に前記タグスワップバッファの情報を無効化しかつ前記タグメモリへの再登録を行うことを特徴とする分散共有メモリ型マルチプロセッサシステム。
【請求項２】
前記タグメモリ及び前記タグスワップバッファは、前記ノード内の前記キャッシュに登録されたアドレス及びステータス情報を保持し、
前記タグスワップバッファは、前記タグメモリのエリアがフルに登録されている状態で新規登録する際に、いずれか１つのエリアをスワップしたアドレス及びステータス情報を保持することを特徴とする請求項１記載の分散共有メモリ型マルチプロセッサシステム。
【請求項３】
前記タグ制御回路は、タグ索引リクエストの受信時に前記タグメモリ及び前記タグスワップバッファを同時に索引し、前記タグメモリ及び前記タグスワップバッファに保持されているアドレスが一致しかつステータス情報が有効の場合にそれぞれ索引結果に応じて登録、更新、無効化、前記バスへのリクエスト発行を行うことを特徴とする請求項１または請求項２記載の分散共有メモリ型マルチプロセッサシステム。
【請求項４】
前記判定回路は、前記タグスワップバッファに有効な情報が存在しかつ前記タグメモリのエリアが空いた時に前記タグスワップバッファから前記タグメモリへの再登録を行うことを特徴とする請求項１から請求項３のいずれか記載の分散共有メモリ型マルチプロセッサシステム。
【請求項５】
前記判定回路は、前記タグメモリのエリアが無効化対象でありかつ同一セットアドレスが前記タグスワップバッファに存在することを判定した時に前記タグスワップバッファの情報を無効化しかつ前記タグメモリに再登録することを特徴とする請求項１から請求項４のいずれか記載の分散共有メモリ型マルチプロセッサシステム。
【請求項６】
前記判定回路は、前記タグスワップバッファ中に複数の同一セットアドレスが存在した時に前記ステータス情報が前記キャッシュの全ての状態のいずれかを示す第１の値のものを優先して再登録することを特徴とする請求項１から請求項５のいずれか記載の分散共有メモリ型マルチプロセッサシステム。
【請求項７】
前記判定回路は、前記タグメモリ及び前記タグスワップバッファからの追い出し対象を前記ステータス情報が前記第１の値よりもシステム内で複数キャッシングしている可能性がある状態及びキャッシングしていない状態のいずれかを示す第２の値を優先することを特徴とする請求項６記載の分散共有メモリ型マルチプロセッサシステム。
【請求項８】
前記判定回路は、前記タグスワップバッファの全てのステータスが前記第１の値でかつ前記タグメモリからのスワップ対象のステータス情報が前記第２の値と判定した時に前記タグスワップバッファに保持しないようにしたことを特徴とする請求項７記載の分散共有メモリ型マルチプロセッサシステム。
【請求項９】
キャッシュを具備する複数の中央処理装置と、前記中央処理装置及び入出力装置のいずれかからの要求を処理するメモリコントローラと、前記キャッシュの情報を保持する分散共有メモリとから構成され、前記中央処理装置と前記メモリコントローラとの間をバス接続してなる複数のノードを含む分散共有メモリ型マルチプロセッサシステムのタグ制御方法であって、
前記複数のノード各々を、ノード間アドレスバスと、前記複数のノード間のデータの処理と前記入出力装置からの要求の処理とを行うクロスバーとによって接続し、
前記キャッシュの情報を保持するタグメモリ及び前記タグメモリにおけるタグ掃き出し情報を保持するタグスワップバッファに、前記ノード内の前記キャッシュに登録されたアドレス及びステータス情報を保持し、
前記タグスワップバッファに、前記タグメモリのエリアがフルに登録されている状態で新規登録する際に、いずれか１つのエリアをスワップしたアドレス及びステータス情報を保持し、
前記タグメモリ及び前記タグスワップバッファの索引結果を判定する際に、前記タグメモリのエリアが無効化対象であり、同一セットアドレスが前記タグスワップバッファに存在することを検出した時に前記タグスワップバッファの情報を無効化しかつ前記タグメモリへの再登録を行うことを特徴とするタグ制御方法。
【請求項１０】
タグ索引リクエストの受信時に前記タグメモリ及び前記タグスワップバッファを同時に索引し、前記タグメモリ及び前記タグスワップバッファに保持されているアドレスが一致しかつステータス情報が有効の場合にそれぞれ索引結果に応じて登録、更新、無効化、前記バスへのリクエスト発行を行うステップを含むことを特徴とする請求項９記載のタグ制御方法。
【請求項１１】
前記索引結果を判定する際に、前記タグスワップバッファに有効な情報が存在しかつ前記タグメモリのエリアが空いた時に前記タグスワップバッファから前記タグメモリへの再登録を行うことを特徴とする請求項１０記載のタグ制御方法。
【請求項１２】
前記索引結果を判定する際に、前記タグメモリのエリアが無効化対象でありかつ同一セットアドレスが前記タグスワップバッファに存在することを判定した時に前記タグスワップバッファの情報を無効化しかつ前記タグメモリに再登録することを特徴とする請求項１０または請求項１１記載のタグ制御方法。
【請求項１３】
前記索引結果を判定する際に、前記タグスワップバッファ中に複数の同一セットアドレスが存在した時に前記ステータス情報が前記キャッシュの全ての状態のいずれかを示す第１の値のものを優先して再登録することを特徴とする請求項１１から請求項１２のいずれか記載のタグ制御方法。
【請求項１４】
前記索引結果を判定する際に、前記タグメモリ及び前記タグスワップバッファからの追い出し対象を前記ステータス情報が前記第１の値よりもシステム内で複数キャッシングしている可能性がある状態及びキャッシングしていない状態のいずれかを示す第２の値を優先することを特徴とする請求項１３記載のタグ制御方法。
【請求項１５】
前記索引結果を判定する際に、前記タグスワップバッファの全てのステータスが前記第１の値でかつ前記タグメモリからのスワップ対象のステータス情報が前記第２の値と判定した時に前記タグスワップバッファに保持しないようにしたことを特徴とする請求項１４記載のタグ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は分散共有メモリ型マルチプロセッサシステム及びそれに用いるタグ制御方法に関し、特に共有メモリマルチプロセッサシステムに用いられるタグ（以下、ＴＡＧとする）の制御方法に関する。
【０００２】
【従来の技術】
従来、共有メモリマルチプロセッサシステムにおいては、複数のプロセッサがシステムメモリのコピーをキャッシュに記憶している。この場合、共有メモリマルチプロセッサシステムには、同じメモリラインの複数のキャッシュに記憶されたデータとメモリとの整合性を維持するためにキャッシュコヒーレント機構が必要となる。
【０００３】
このキャッシュコヒーレント機構を実現するのに、ＴＡＧ（あるいはディレクトリ）を具備している。ＴＡＧは各メモリラインのアドレスやシステムメモリとキャッシュとの状態を記憶する。
【０００４】
近年、コンピュータシステムはシステムメモリへのアクセスを加速させるために搭載されるキャッシュ容量が大幅に大容量化している。また、システムメモリも大幅に大容量化している。ＴＡＧは上記のシステムメモリ及びキャッシュの大容量化に伴って多くの情報を記憶することで、システム全体のスループットが向上する。
【０００５】
【発明が解決しようとする課題】
しかしながら、上述した従来の共有メモリマルチプロセッサシステムでは、システムメモリあるいはキャッシュと同じ容量のＴＡＧを搭載すると、ハードウェア量の増大化あるいはコスト負担増、制御の複雑さが増すため、ＴＡＧとして外付けＲＡＭを用いることが考えられるが、アクセススピードが遅く、その制御が複雑となる。
【０００６】
そこで、本発明の目的は上記の問題点を解消し、バスへの負荷を減らすことができ、キャッシュのヒット率を上げてシステム全体の性能を向上させることができる分散共有メモリ型マルチプロセッサシステム及びそれに用いるタグ制御方法を提供することにある。
【０００７】
【課題を解決するための手段】
本発明による分散共有メモリ型マルチプロセッサシステムは、キャッシュを具備する複数の中央処理装置と、前記中央処理装置及び入出力装置のいずれかからの要求を処理するメモリコントローラと、前記キャッシュの情報を保持する分散共有メモリとから構成され、前記中央処理装置と前記メモリコントローラとの間をバス接続してなる複数のノードを含む分散共有メモリ型マルチプロセッサシステムであって、
前記複数のノード各々を接続するノード間アドレスバスと、前記複数のノード各々を接続しかつ前記複数のノード間のデータの処理と前記入出力装置からの要求の処理とを行うクロスバーとを備え、
前記メモリコントローラは、前記キャッシュの情報を保持するタグメモリと、前記タグメモリにおけるタグ掃き出し情報を保持するタグスワップバッファと、前記ノードから発行されたリクエストを制御するタグ制御回路と、前記ノード各々にアクセスするリクエストを制御するリクエスト制御部と、前記ノード内のリプライデータを制御するリプライ制御回路とを具備し、
前記タグ制御回路は、前記タグメモリ及び前記タグスワップバッファの索引、登録、無効化、コヒーレントリクエストの発行を行う機構を具備し、
前記タグメモリ及び前記タグスワップバッファの索引結果を判定する判定回路を具備し、
前記判定回路は、前記タグメモリのエリアが無効化対象であり、同一セットアドレスが前記タグスワップバッファに存在することを検出した時に前記タグスワップバッファの情報を無効化しかつ前記タグメモリへの再登録を行っている。
【０００８】
本発明によるタグ制御方法は、キャッシュを具備する複数の中央処理装置と、前記中央処理装置及び入出力装置のいずれかからの要求を処理するメモリコントローラと、前記キャッシュの情報を保持する分散共有メモリとから構成され、前記中央処理装置と前記メモリコントローラとの間をバス接続してなる複数のノードを含む分散共有メモリ型マルチプロセッサシステムのタグ制御方法であって、
前記複数のノード各々を、ノード間アドレスバスと、前記複数のノード間のデータの処理と前記入出力装置からの要求の処理とを行うクロスバーとによって接続し、
前記キャッシュの情報を保持するタグメモリ及び前記タグメモリにおけるタグ掃き出し情報を保持するタグスワップバッファに、前記ノード内の前記キャッシュに登録されたアドレス及びステータス情報を保持し、
前記タグスワップバッファに、前記タグメモリのエリアがフルに登録されている状態で新規登録する際に、いずれか１つのエリアをスワップしたアドレス及びステータス情報を保持し、
前記タグメモリ及び前記タグスワップバッファの索引結果を判定する際に、前記タグメモリのエリアが無効化対象であり、同一セットアドレスが前記タグスワップバッファに存在することを検出した時に前記タグスワップバッファの情報を無効化しかつ前記タグメモリへの再登録を行っている。
【０００９】
すなわち、本発明の分散共有メモリ型マルチプロセッサシステムは、キャッシュを具備する複数のＣＰＵ（中央処理装置）と、各ＣＰＵとメモリコントローラとの間をバス接続し、ＣＰＵあるいはＩ／Ｏ（入出力）装置からの要求を処理するメモリコントローラと、分散共有メモリとから各ノードを構成し、上記の各ノードをノード間アドレスバス及びクロスバーを介して接続し、上記のクロスバーが複数のノード間のデータを処理すると同時に、Ｉ／Ｏ装置からの要求を処理する。
【００１０】
各ノードのメモリコントローラは、ノード内の各ＣＰＵに搭載されるキャッシュの情報を保持するタグ（以下、ＴＡＧとする）メモリと、ＴＡＧ掃き出し情報を保持するＴＡＧスワップバッファと、ノード内あるいは他ノードから発行されたリクエストを制御し、ＴＡＧメモリ及びＴＡＧスワップバッファの索引、登録、無効化及びコヒーレントリクエストを発行する機構を具備するＴＡＧ制御回路と、各ノードにアクセスするリクエストを制御するリクエスト制御部と各ノード内のリプライデータを制御するリプライ制御回路とから構成されている。
【００１１】
ＴＡＧメモリ及びＴＡＧスワップバッファは各ノード内のＣＰＵのキャッシュに登録されたアドレス及びステータス情報を保持する。ＴＡＧスワップバッファはＴＡＧメモリのエリアがフルに登録されている状態で新規登録する際に、いずれか１つのエリアをスワップしたアドレス及びステータス情報を保持する。
【００１２】
ＴＡＧ制御回路はＴＡＧ索引リクエストを受信すると、ＴＡＧメモリ及びＴＡＧスワップバッファを同時に索引し、ＴＡＧメモリあるいはＴＡＧスワップバッファに保持されているアドレスが一致し、かつステータス情報が有効（ＰあるいはＳ）の場合、それぞれ索引結果に応じて登録、更新、無効化を行い、ＴＡＧ制御回路はバスへリクエスト発行を行う。
【００１３】
ＴＡＧメモリ及びＴＡＧスワップバッファの索引結果を判定する回路においては、ＴＡＧメモリのエリアが無効化対象であり、同一セットアドレスがＴＡＧスワップバッファに存在することを判定した場合、ＴＡＧスワップバッファの情報を無効化し、ＴＡＧメモリに再登録する。
【００１４】
上記の処理において、ＴＡＧスワップバッファ中に複数の同一セットアドレスが存在した場合、ステータス情報がキャッシュの全ての状態のいずれかを示す“Ｐ”のものを優先して再登録する。ＴＡＧスワップバッファは、各エントリに保持されたステータス情報を基に有効情報の有無を判定し、バッファフル状態であり、かつＴＡＧメモリからのスワップが発生した場合にＴＡＧスワップバッファから読出し、ＴＡＧ制御回路からバスへインバリデイトリクエストを発行する。
【００１５】
ＴＡＧメモリ及びＴＡＧスワップバッファの索引結果を判定する各判定回路においては、それぞれのステータス情報を判定し、ＴＡＧメモリからの追い出し（スワップ）はステータス情報が“Ｐ”よりシステム内で複数キャッシングしている可能性がある状態またはキャッシングしていない状態を示す“Ｓ”を優先する。
【００１６】
上記と同様に、ＴＡＧメモリ及びＴＡＧスワップバッファの索引結果を判定する各判定回路において、ＴＡＧスワップバッファからの追い出し対象をステータス情報が“Ｐ”より“Ｓ”を優先することによって、キャッシュからライトバック処理を低減する。
【００１７】
また、上記と同様に、ＴＡＧスワップバッファの全ステータスが“Ｐ”でかつＴＡＧメモリからのスワップ対象のステータス情報が“Ｓ”と判定した場合には、ＴＡＧスワップバッファに保持することなく、バスにインバリデイトリクエストを発行する。
【００１８】
よって、上述した通り、ＴＡＧメモリ及びＴＡＧスワップバッファを制御することによって、複数のノード間のコヒーレント制御を行うと同時に、ＴＡＧメモリのエントリを有効的に活用することが可能であり、ＣＰＵのキャッシュにステータス情報“Ｍ”で登録されたデータの掃き出し動作を低減することから、キャッシュのヒット率が上がり、また、バスへの負荷を抑えることからシステム全体の性能が向上する。
【００１９】
よって、本発明の分散共有メモリ型マルチプロセッサシステムでは、ＬＳＩ（大規模集積回路）に搭載可能なＴＡＧメモリ及びＴＡＧスワップバッファをフルに活用し、バスへの負荷を減らし、キャッシュのヒット率を上げることから、システム全体の性能が向上する。
【００２０】
近年、メインメモリの容量及びメモリＣＰＵに搭載されるキャッシュの容量は大容量化している。ＴＡＧメモリで全メモリ空間の情報を保持することはハードウェア投資が膨大となる。また、ＴＡＧメモリの容量が増やすことによって、制御が複雑化すると同時に、ハードウェア投資に見合った性能が確保されるとは限らない。
【００２１】
本発明の分散共有メモリ型マルチプロセッサシステムでは、ＴＡＧメモリとＴＡＧメモリからの掃き出し情報を保持するＴＡＧスワップバッファとによって、ＴＡＧスワップバッファに有効な情報があり、ＴＡＧメモリのエリアが空いた際にＴＡＧスワップバッファからの再登録を行う。
【００２２】
ＴＡＧスワップバッファはフル状態となるまでバスへのコヒーレントリクエストを発行しない。また、ＴＡＧスワップバッファ内にＴＡＧへの再登録対象が複数ある場合、ＴＡＧステータスが“Ｓ”より“Ｐ”であるものを優先する。ＴＡＧスワップバッファからバスへのコヒーレントリクエストを発行する場合もステータスが“Ｓ”より“Ｐ”を優先させる機構を具備することによって、各ノード内のバスへの負荷を低減し、ＴＡＧメモリを有効に活用することから、ＣＰＵに搭載されるキャッシュからの掃き出しが低減される。よって、システム全体の性能が向上する。
【００２３】
【発明の実施の形態】
次に、本発明の実施例について図面を参照して説明する。図１は本発明の一実施例による分散共有メモリ型マルチプロセッサシステムの構成を示すブロック図である。図１において、本発明の一実施例による分散共有メモリ型マルチプロセッサシステムはノード（＃０〜＃３）１〜４と、クロスバー５と、Ｉ／Ｏ（入出力）装置６−１〜６−４とから構成されている。
【００２４】
各ノード（＃０〜＃３）１〜４は複数のＣＰＵ（中央処理装置）１１〜１４，……，４１〜４４と、メモリコントローラ１５，……，４５と、分散共有メモリ１６，……，４６とから構成されている。尚、図１においてはノード（＃０，＃３）１，４の構成だけを図示し、他のノード（＃１，＃２）２，３の構成の図示を省略しているが、他のノード（＃１，＃２）２，３の構成もノード（＃０，＃３）１，４の構成と同様である。
【００２５】
ＣＰＵ１１〜１４，……，４１〜４４はそれぞれキャッシュ１１ａ，１２ａ，１３ａ，１４ａ，……，４１ａ，４２ａ，４３ａ，４４ａを具備しており、バス１１０，……，１４０を介してメモリコントローラ１５，……，４５に接続されている。メモリコントローラ１５，……，４５はＣＰＵ１１〜１４，……，４１〜４４あるいはＩ／Ｏ装置６−１〜６−４からの要求を処理する。
【００２６】
クロスバー５は複数のノード１〜４間のデータをデータ線３０１，……，３０４を介して処理すると同時に、複数のＩ／Ｏ装置６−１〜６−４からの要求も処理する。
【００２７】
図２は図１のメモリコントローラ１５の構成を示すブロック図である。図２においては、メモリコントローラ１５の構成のみを図示しているが、ノード（＃１，＃２）２，３のメモリコントローラやノード（＃３）４のメモリコントローラ４５もメモリコントローラ１５と同様の構成となっている。
【００２８】
メモリコントローラ１５はタグ（以下、ＴＡＧとする）メモリ１５１と、ＴＡＧスワップバッファ１５２と、ＴＡＧ制御回路１５３と、リクエスト制御部１５４と、判定回路１５５と、リプライ制御回路部１５６とから構成されている。
【００２９】
図３は図２のＴＡＧメモリ１５１の保持内容を示す図である。図３において、ＴＡＧメモリ１５１にはＣＰＵキャッシュステータスと、コードと、概要とが保持されている。
【００３０】
ＣＰＵキャッシュステータス「Ｍ（Ｍｏｄｉｆｉｅｄ）」は、コードが「１１」で、その概要が「システム内で唯一キャッシングしている。共有メモリのコピーではない。」となっている。ＣＰＵキャッシュステータス「Ｅ（Ｅｘｃｌｕｓｉｖｅ）」は、コードが「１０」で、その概要が「システム内で唯一キャッシングしており、共有メモリのコピーを有している。」となっている。
【００３１】
ＣＰＵキャッシュステータス「Ｓ（Ｓｈａｒｅｄ）」は、コードが「０１」で、その概要が「システム内で複数キャッシングしている可能性があり、共有メモリのコピーを有している。」となっている。ＣＰＵキャッシュステータス「Ｉ（Ｉｎｖａｌｉｄ）」は、コードが「００」で、その概要が「キャッシングしていない」となっている。
【００３２】
図４は図２のＴＡＧスワップバッファ１５２の保持内容を示す図である。図４において、ＴＡＧスワップバッファ１５２にはＴＡＧステータスと、コードと、ＣＰＵキャッシュステータスとが保持されている。
【００３３】
ＴＡＧステータス「Ｐ（Ｐｒｉｖａｔｅ）」は、コードが「１１」で、ＣＰＵキャッシュステータスが「Ｍ／Ｅ／Ｓ／Ｉのいずれかのステータスである。」となっている。ＴＡＧステータス「Ｓ（Ｓｈａｒｅ）」は、コードが「１０」で、ＣＰＵキャッシュステータスが「Ｓ／Ｉのいずれかのステータスである。」となっている。ＴＡＧステータス「Ｕ（Ｕｎｃａｃｈｅｄ）」は、コードが「００」で、ＣＰＵキャッシュステータスが「Ｉ（キャッシングされていない）」となっている。つまり、ＴＡＧステータス「Ｐ」は全てのＣＰＵキャッシュステータスのいずれかを示し、ＴＡＧステータス「Ｓ」は「システム内で複数キャッシングしている可能性があり、共有メモリのコピーを有している」というステータスまたは「キャッシングしていない」というステータスを示している。
【００３４】
これら図２〜図４を参照して、メモリコントローラ１５について詳細に説明する。
【００３５】
ＴＡＧメモリ１５１はノード１内のＣＰＵ１１〜１４に搭載されるキャッシュ１１ａ，１２ａ，１３ａ，１４ａの情報を保持する。ＴＡＧスワップバッファ１５２はＴＡＧ掃き出し情報を保持する。判定回路１５５は他ノード２〜４あるいはＩ／Ｏ装置６−１〜６−４から発行されたリクエスト／リプライを判定する。
【００３６】
ＴＡＧ制御回路１５３は判定回路１５５によって転送先が制御され、ＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２の索引、登録、無効化及びコヒーレントリクエストを発行する機構を具備している。リクエスト制御部１５４は各ノード（＃０〜３）１〜４にアクセスするリクエストを制御する。リプライ制御回路部１５６は各ノード１〜４内のリプライデータを制御する。
【００３７】
各ノード１〜４おけるメモリコントローラ１５，……，４５のＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２は、各ノード１〜４内のＣＰＵ１１〜１４，……，４１〜４４のキャッシュ１１ａ，１２ａ，１３ａ，１４ａ，……，４１ａ，４２ａ，４３ａ，４４ａに登録されたアドレス及びステータス情報を保持する。
【００３８】
ＴＡＧスワップバッファ１５２はＴＡＧメモリ１５１のエリアがフルに登録されている状態で新規登録する際に、いずれか１つのエリアをスワップしたアドレス及びステータス情報を保持する。
【００３９】
ＴＡＧ制御回路１５３はＴＡＧ索引リクエストを受信すると、ＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２を同時に索引し、ＴＡＧメモリ１５１あるいはＴＡＧスワップバッファ１５２に保持されているアドレスが一致し、かつステータス情報（以下、ＴＡＧスワップバッファ１５２のステータス情報は図４を参照）が有効（“Ｐ”あるいは“Ｓ”）の場合、それぞれ索引結果に応じて登録、更新、無効化を行い、必要に応じてバス１１０へリクエスト発行を行う。
【００４０】
図５は図２のＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２の制御機構を示すブロック図である。図５において、ＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２の制御機構はレジスタ１６１と、ＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２の索引結果を判定する判定回路１６２，１６４，１６６と、各判定結果から対象となるデータを選択する選択回路１６３，１６５とから構成され、以下のように制御する。ここで、ＴＡＧメモリ１５１は一般的に設計されるｎＷＡＹ・セット・アソシアティブのメモリである。
【００４１】
判定回路１６２はＴＡＧスワップバッファ１５２の有効エントリ（“Ｐ”あるいは“Ｓ”）がフルの状態であるかを判定し、フルの場合に“１”、フルでない場合に“０”をＴＡＧ制御回路１５３に送信する。
【００４２】
判定回路１６４はＴＡＧ索引リクエスト受信時にＴＡＧスワップバッファ１５２の有効エントリ（ステータスが“Ｐ”あるいは“Ｓ”）と、セットアドレス一致及びキーアドレス一致を判定し、それぞれにおいて一致した場合に“１”、一致しない場合に“０”を送信する。
【００４３】
判定回路１６６はＴＡＧメモリ１５１に登録されているキーアドレス及びステータス情報との一致条件を出力する。また、判定回路１６６は索引リクエストのセットアドレスに対するエリアがフルに使用されているかについても判定する。
【００４４】
選択回路１６３は上記の判定回路１６４の結果から索引リクエストによる更新、無効化処理対象のものを選択する。また、選択回路１６３はＴＡＧスワップバッファ１５２からＴＡＧメモリ１５１への再登録対象あるいはＴＡＧスワップバッファ１５２からの追い出し対象の「アドレス＋ステータス」が複数ある場合にいずれか１つを選択する。
【００４５】
選択回路１６５は上記の判定回路１６６の結果から索引リクエストによる更新、登録、無効化処理対象のものを選択する。また、選択回路１６５はＴＡＧメモリ１５１から追い出し処理が必要な場合（セットアドレスに対するエリアがフルに有効情報“Ｐ”あるいは“Ｓ”が格納されている場合）、ＴＡＧメモリ１５１から追い出し対象のものを選択する。
【００４６】
さらに、選択回路１６５はＴＡＧスワップバッファ１５２からＴＡＧメモリ１５１への再登録対象、あるいはＴＡＧスワップバッファ１５２からの追い出し対象の「アドレス＋ステータス」が複数ある場合にいずれか１つを選択する。
【００４７】
図６は図２のＴＡＧメモリ１５１からの追い出し制御を示すフローチャートである。これら図２と図５と図６とを参照してＴＡＧメモリ１５１からの追い出し制御について説明する。以下、ノード（＃０）１について説明するが、他のノード（＃１〜＃３）２〜４におけるＴＡＧメモリからの追い出し制御もこれと同様である。
【００４８】
メモリコントローラ１５はＴＡＧ索引リクエストに対して、判定回路１６６の結果からアドレス一致せず、セットアドレスに対するエリアに有効情報がフルに格納されている場合で新規登録を必要とする場合（図６ステップＳ１〜Ｓ４）、“Ｓ”のみの場合（図６ステップＳ５）、いずれかをランダムに選択し、それを追い出す（図６ステップＳ６）。
【００４９】
メモリコントローラ１５は“Ｓ”と“Ｐ”とが混在する場合（図６ステップＳ７）、いずれかの“Ｓ”のものを優先して選択し、それを追い出す（図６ステップＳ８）。また、メモリコントローラ１５は“Ｐ”のみの場合（図６ステップＳ９）、いずれかをランダムに選択し、それを追い出す（図６ステップＳ１０）。
【００５０】
図７は図２のＴＡＧスワップバッファ１５２からの追い出し制御を示すフローチャートである。これら図２と図５と図７とを参照してＴＡＧスワップバッファ１５２からの追い出し制御について説明する。以下、ノード（＃０）１について説明するが、他のノード（＃１〜＃３）２〜４におけるＴＡＧスワップバッファからの追い出し制御もこれと同様である。
【００５１】
メモリコントローラ１５は判定回路１６２の結果からＴＡＧスワップバッファ１５２がフルでかつＴＡＧメモリ１５１からの追い出しがある場合（図７ステップＳ１１，Ｓ１２）、ＴＡＧスワップバッファ１５２が“Ｓ”のみであり、ＴＡＧメモリ１５１からの追い出し対象が“Ｓ”あるいは“Ｐ”の場合（図７ステップＳ１３）、ＴＡＧスワップバッファ１５２のいずれかの“Ｓ”を優先して追い出す（図７ステップＳ１４）。
【００５２】
メモリコントローラ１５はＴＡＧスワップバッファ１５２に“Ｓ”と“Ｐ”とが混在しており、ＴＡＧメモリ１５１からの追い出し対象が“Ｓ”あるいは“Ｐ”の場合（図７ステップＳ１５）、ＴＡＧスワップバッファ１５２のいずれかの“Ｓ”を優先して追い出す（図７ステップＳ１６）。
【００５３】
メモリコントローラ１５はＴＡＧスワップバッファ１５２が“Ｐ”のみであり、ＴＡＧメモリ１５１からの追い出し対象が“Ｐ”の場合（図７ステップＳ１７）、ＴＡＧスワップバッファ１５２のいずれかの“Ｐ”を追い出す（図７ステップＳ１８）。尚、メモリコントローラ１５はＴＡＧメモリ１５１からの追い出し対象が“Ｓ”の場合（図７ステップＳ１９）、そのままバス１１０に発行する（図７ステップＳ２０）。
【００５４】
図８は図２のＴＡＧスワップバッファ１５２からＴＡＧメモリ１５１への再登録制御を示すフローチャートである。これら図２と図５と図８とを参照してＴＡＧスワップバッファ１５２からＴＡＧメモリ１５１への再登録制御について説明する。以下、ノード（＃０）１について説明するが、他のノード（＃１〜＃３）２〜４におけるＴＡＧスワップバッファからＴＡＧメモリへの再登録制御もこれと同様である。
【００５５】
メモリコントローラ１５は判定回路１６６によってＴＡＧメモリ１５１が無効化“Ｉ”でかつ判定回路１６４の結果からＴＡＧスワップバッファ１５２にアドレス一致で“Ｓ”あるいは“Ｐ”のものが存在する場合（図８ステップＳ２１，Ｓ２２）、ＴＡＧスワップバッファ１５２に存在する対象が“Ｓ”のみの場合（図８ステップＳ２３）、いずれかの“Ｓ”のものを選択回路１６３で選択してＴＡＧメモリ１５１に再登録する（図８ステップＳ２４）。
【００５６】
メモリコントローラ１５はＴＡＧスワップバッファ１５２に存在する対象が“Ｓ”あるいは“Ｐ”の場合（図８ステップＳ２５）、いずれかの“Ｐ”のものを優先して選択回路１６３で選択してＴＡＧメモリ１５１に再登録する（図８ステップＳ２６）。
【００５７】
よって、上述したように、ＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２を制御することによって、複数のノード間のコヒーレント制御を行うと同時に、ＴＡＧメモリ１５１のエントリを有効的に活用することが可能であり、ＣＰＵ１１〜１４のキャッシュ１１ａ〜１４ａにステータス情報“Ｍ”（以下、キャッシュのステータス情報は図４を参照）で登録されたデータの掃き出し動作を低減するので、キャッシュ１１ａ〜１４ａのヒット率が上がり、またバス１１０への負荷を抑えられるので、システム全体の性能が向上する。
【００５８】
図９〜図１９は図１の分散共有メモリ１６，４６に対するリード処理を示すフローチャートであり、図２０〜図３３は図１の分散共有メモリ１６，４６に対するライト処理を示すフローチャートである。これら図１〜図３３を参照して分散共有メモリ１６，４６に対するリード処理及びライト処理について説明する。
【００５９】
本実施例においてはノード（＃０）１から見ると、自ノードの分散共有メモリ１６に対するリード、他ノード（＃３）４の分散共有メモリ４６に対するリード、自ノードの分散共有メモリ１６に対するライト、他ノード（＃３）４の分散共有メモリ４６に対するライトがある。
【００６０】
尚、他ノード（＃１，＃２）２，３の分散共有メモリに対するリード及びライトは他ノード（＃３）４の分散共有メモリ４６に対するリード及びライトと同様である。また、動作説明に関して、キャッシュ（本実施例では、キャッシュはストアインキャッシュとする）１１ａ〜１４ａと、ＴＡＧメモリ１５１と、ＴＡＧスワップバッファ１５２とに登録、更新、無効化するデータのステータスについては図３及び図４を参照するものとする。
【００６１】
まず、自ノード（＃０）１の分散共有メモリ１６に対するリードについて説明する。この場合、リクエスト発行元をＣＰＵ１１とする。尚、自ノード（＃０）１内のＣＰＵ１２〜１４から発行した場合も、各ＣＰＵ１２〜１４内のキャッシュ制御及びそれらに関連するリクエストの動作はＣＰＵ１１の処理と同様であるものとする。
【００６２】
ＣＰＵ１１において、キャッシュ１１ａにアクセス対象のデータが“Ｍ”で登録されている場合には（図９ステップＳ３１）、キャッシュ１１ａにヒットし、キャッシュ１１ａ内のデータがＣＰＵ１１に返信され（図９ステップＳ３２）、リードリクエストが完了する。
【００６３】
ＣＰＵ１１において、キャッシュ１１ａにアクセス対象のデータが“Ｅ”で登録されている場合には（図９ステップＳ３３）、キャッシュ１１ａにヒットし、キャッシュ１１ａ内のデータがＣＰＵ１１に返信され（図９ステップＳ３２）、リードリクエストが完了する。
【００６４】
ＣＰＵ１１において、キャッシュ１１ａにアクセス対象のデータが“Ｓ”で登録されている場合には（図９ステップＳ３４）、キャッシュ１１ａにヒットし、キャッシュ１１ａ内のデータがＣＰＵ１１に返信され（図９ステップＳ３２）、リードリクエストが完了する。
【００６５】
ＣＰＵ１１において、キャッシュ１１ａにアクセス対象のデータが登録されていない場合には（図９ステップＳ３５）、キャッシュ１１ａがバス１１０にバス獲得要求を発行し（図９ステップＳ３６）、バス１１０が獲得できたら（図９ステップＳ３７）、ラインリードリクエストを発行する（図９ステップＳ３８）。
【００６６】
上記のラインリードリクエストにおいて、バス１１０に接続しているＣＰＵ１２〜１４のキャッシュ１２ａ，１３ａ，１４ａのいずれかでアクセス対象のデータが“Ｍ”で登録されている場合には（図１０ステップＳ３９）、そのキャッシュ１２ａ，１３ａ，１４ａがバス１１０に“Ｍ”で登録されているデータをライトバック（データリプライ）する（図１０ステップＳ４０）。
【００６７】
ライトバックを発行したキャッシュ１２ａ，１３ａ，１４ａは無効化され、“Ｉ”とされる（図１０ステップＳ４１）。上記のライトバックはリクエスト制御部１５４を介して分散共有メモリ１６に送信される（図１０ステップＳ４２）。既に同一ノード（＃０）１内のキャッシュが“Ｍ”の状態であるので、ＴＡＧメモリ１５１あるいはＴＡＧスワップバッファ１５２に登録されているＴＡＧステータは“Ｐ”のままとする（図１０ステップＳ４３）。
【００６８】
キャッシュ１１ａはバス１１０を介して上記のライトバックデータをリプライデータとして受信し、“Ｅ”で登録し、ＣＰＵ１１にデータを返信する（図１０ステップＳ４４）。また、自ノード（＃０）１の分散共有メモリ１６にも上記のライトバックデータが送信され、その内容が更新される。これによって、リード処理が完了する。
【００６９】
上記のラインリードリクエストにおいて、バス１１０に接続しているＣＰＵ１２〜１４のキャッシュ１２ａ，１３ａ，１４ａのいずれかでアクセス対象のデータが“Ｅ”で登録されている場合には（図１１ステップＳ４５）、そのキャッシュ１２ａ，１３ａ，１４ａを“Ｓ”に更新する（図１１ステップＳ４６）。
【００７０】
ラインリードリクエストはリクエスト制御部１５４を介してＴＡＧ制御回路１５３及び分散共有メモリ１６に転送される（図１１ステップＳ４７）。ＴＡＧ制御回路１５３はＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２を索引し（図１１ステップＳ４８）、判定回路１６４あるいは判定回路１６６の出力からアクセス対象のステータスを“Ｓ”に更新する（図１１ステップＳ４９）。
【００７１】
また、ラインリードリクエストによって分散共有メモリ１６から読出されたデータリプライはリプライ制御回路１５６及びバス１１０を介してリクエスト発行元のキャッシュ１１ａに送信され、“Ｓ”で登録され、ＣＰＵ１１にデータを返信し（図１１ステップＳ５０）、リード処理が完了する。
【００７２】
上記のラインリードリクエストにおいて、バス１１０に接続しているＣＰＵ１２〜１４のキャッシュ１２ａ，１３ａ，１４ａのいずれかでアクセス対象のデータが“Ｓ”で登録されている場合には（図１２ステップＳ５１）、そのキャッシュを“Ｓ”に更新する（図１２ステップＳ５２）。
【００７３】
ラインリードリクエストはリクエスト制御部１５４を介してＴＡＧ制御回路１５３及び分散共有メモリ１６に転送される（図１２ステップＳ５３）。ＴＡＧ制御回路１５３はＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２を更新しない（図１２ステップＳ５４）。
【００７４】
また、ラインリードリクエストによって分散共有メモリ１６から読出されたデータリプライはリプライ制御回路１５６及びバス１１０を介してリクエスト発行元のキャッシュ１１ａに送信され、“Ｓ”で登録され、ＣＰＵ１１にデータを返却し（図１２ステップＳ５５）、リード処理が完了する。
【００７５】
上記のラインリードリクエストにおいて、バス１１０に接続しているＣＰＵ１２〜１４のキャッシュ１２ａ，１３ａ，１４ａの全てがアクセス対象のデータを登録していない場合には（図１３ステップＳ５６）、ラインリードリクエストはリクエスト制御部１５４を介してＴＡＧ制御回路１５３及び分散共有メモリ１６に転送される（図１３ステップＳ５７）。
【００７６】
ＴＡＧ制御回路１５３はノード間アドレスバス２００にラインリクエストを発行し、他ノード（＃１〜＃３）２〜４のメモリコントローラに上記のラインリクエストを転送する（図１３ステップＳ５８）。
【００７７】
他ノード（＃１〜＃３）２〜４各々のメモリコントローラのＴＡＧ制御回路は他のノードからのラインリクエストを受信すると（図１４ステップＳ７１）、ＴＡＧメモリ及びＴＡＧスワップバッファを索引する（図１４ステップＳ７２）。以下、各索引結果毎の処理について述べるが、その処理についてはノード（＃３）４を対象として説明する。但し、ノード（＃１，２）２，３でもノード（＃３）４と同様の動作を行うものとする。
【００７８】
上記のノード（＃３）４のＴＡＧメモリ及びＴＡＧスワップバッファの索引結果がアドレス一致でかつ“Ｐ”の場合には（図１４ステップＳ７３）、ＴＡＧ制御制御回路がバス１４０にラインリード＆インバリデイトリクエストを発行し（図１４ステップＳ７４）、ノード（＃３）４のＴＡＧメモリあるいはＴＡＧスワップバッファのアクセス対象を無効化する（図１４ステップＳ７５）。
【００７９】
ノード（＃３）４ではＣＰＵ４１〜４４各々のキャッシュ４１ａ，４２ａ，４３ａ，４４ａを索引し（図１４ステップＳ７６）、索引結果が“Ｍ”の場合（図１４ステップＳ７７）、“Ｍ”を登録しているキャッシュがデータをバス１４０にライトバックし、リクエスト制御部に転送する（図１４ステップＳ７８）。“Ｍ”を登録しているキャッシュは無効化される（図１４ステップＳ７９）。
【００８０】
上記のライトバックはデータリプライとしてデータ線３０４を介してクロスバー５に転送され（図１４ステップＳ８０）、データ線３０１を介してノード（＃０）１のメモリコントローラ１５に転送される。
【００８１】
メモリコントローラ１５の判定回路１５５はデータ線３０１を介して転送されてきたデータリプライをリプライ制御回路１５６及びリクエスト制御部１５４に転送する（図１３ステップＳ５９，Ｓ６０）。リプライ制御回路１５６はデータリプライをバス１１０上のＣＰＵ１１に送信し、キャッシュ１１ａは“Ｅ”を登録する（図１３ステップＳ６１）。データリプライはＣＰＵ１１に返却され、リード処理が完了する。
【００８２】
一方、メモリコントローラ１５のリクエスト制御部１５４はＴＡＧ制御回路１５３にデータリプライを転送し、ＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２を索引する（図１７ステップＳ１０１）。ここで、ＴＡＧメモリ１５１の索引結果が判定回路１６６の結果あるいはＴＡＧスワップバッファ１５２の索引結果を判別する判定回路１６４の出力によって以下の様になる。
【００８３】
ＴＡＧメモリ１５１のアクセス対象エリアに空きエリアが存在した場合には（図１７ステップＳ１０２）、その空きエリアにキーアドレス及びステータス“Ｐ”を登録する（図１７ステップＳ１０３）。
【００８４】
ＴＡＧメモリ１５１のアクセス対象エリアが全て“Ｐ”で登録されていた場合には（図１７ステップＳ１０４）、いずれかのエリアをＴＡＧスワップバッファ１５２に追い出し、替わりにデータリプライのキーアドレス及びステータス“Ｐ”を登録する（図１７ステップＳ１０５）。
【００８５】
ＴＡＧメモリ１５１のアクセス対象エリアが“Ｐ”あるいは“Ｓ”で満たされている場合には（図１７ステップＳ１０６）、いずれかの“Ｓ”をＴＡＧスワップバッファ１５２に追い出し、替わりにデータリプライのキーアドレス及びステータス“Ｐ”を登録する（図１７ステップＳ１０７）。
【００８６】
ＴＡＧメモリ１５１のアクセス対象エリアが全て“Ｓ”で登録されていた場合には（図１７ステップＳ１０８）、いずれかのエリアをＴＡＧスワップバッファ１５２に追い出し、替わりにデータリプライのキーアドレス及びステータス“Ｐ”を登録する（図１７ステップＳ１０９）。
【００８７】
上記の処理において、ＴＡＧスワップバッファ１５２が判定回路１６４の結果からフル状態の場合（図１８ステップＳ１１０）、ＴＡＧスワップバッファ１５２に格納されている全てが“Ｐ”であれば（図１８ステップＳ１１１）、いずれかの“Ｐ”を追い出す（図１８ステップＳ１１２）。ＴＧＡ制御回路１５３は追い出し対象のアドレスでインバリデイトリクエストをバス１１０に発行する（図１８ステップＳ１１３）。以下、上記のインバリデイトリクエストの動作について述べる。
【００８８】
インバリデイトリクエストのアドレスに対して、バス１１０上のキャッシュ１１ａ，１２ａ，１３ａ，１４ａのいずれかで“Ｍ”が登録されている場合には（図１９ステップＳ１２１）、バス１１０にライトバックし、無効化“Ｉ”する（図１９ステップＳ１２２）。ライトバックはリクエスト制御部１５４を介してアクセス対象の分散共有メモリ１６にルーティングされ、そのメモリの内容が更新される（図１９ステップＳ１２３）。
【００８９】
インバリデイトリクエストのアドレスに対して、バス１１０上のキャッシュ１１ａ，１２ａ，１３ａ，１４ａのいずれかで“Ｅ”が登録されている場合には（図１９ステップＳ１２４）、そのキャッシュを無効化“Ｉ”する（図１９ステップＳ１２５）。
【００９０】
インバリデイトリクエストのアドレスに対して、バス１１０上のキャッシュ１１ａ，１２ａ，１３ａ，１４ａのいずれかで“Ｓ”が登録されている場合には（図１９ステップＳ１２６）、そのキャッシュを無効化“Ｉ”する（図１９ステップＳ１２５）。
【００９１】
インバリデイトリクエストのアドレスに対して、バス１１０上のキャッシュ１１ａ，１２ａ，１３ａ，１４ａのいずれにも登録されていない場合には（図１９ステップＳ１２７）、何もしない。
【００９２】
ノード（＃３）４ではＣＰＵ４１〜４４各々のキャッシュ４１ａ，４２ａ，４３ａ，４４ａを索引し（図１４ステップＳ７６）、索引結果が“Ｅ”の場合（図１６ステップＳ８７）、“Ｅ”を登録しているキャッシュを無効化する（図１６ステップＳ８８）。
【００９３】
この場合、メモリコントローラ１５において、データリプライは分散共有メモリ１６から読出され、リプライ制御回路１５６を介してバス１１０に送出される（図１３ステップＳ５９，Ｓ６２）。キャッシュ１１ａはデータリプライを“Ｅ”で登録し、ＣＰＵ１１にデータを返信し（図１３ステップＳ６３）、リード処理が完了する。尚、ＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２に対する制御及び追い出し制御は上述した図１７及び図１８に示す処理と同様である。
【００９４】
ノード（＃３）４ではＣＰＵ４１〜４４各々のキャッシュ４１ａ，４２ａ，４３ａ，４４ａを索引し（図１４ステップＳ７６）、索引結果が“Ｓ“の場合（図１６ステップＳ８９）、“Ｓ”を登録しているキャッシュを無効化する（図１６ステップＳ９０）。
【００９５】
この場合、メモリコントローラ１５において、データリプライは分散共有メモリ１６から読出され、リプライ制御回路１５６を介してバス１１０に送出される（図１３ステップＳ５９，Ｓ６２）。キャッシュ１１ａはデータリプライを“Ｅ”で登録し、ＣＰＵ１１にデータを返信し（図１３ステップＳ６３）、リード処理が完了する。尚、ＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２に対する制御及び追い出し制御は上述した図１７及び図１８に示す処理と同様である。
【００９６】
ノード（＃３）４ではＣＰＵ４１〜４４各々のキャッシュ４１ａ，４２ａ，４３ａ，４４ａを索引し（図１４ステップＳ７６）、いずれのキャッシュにもヒットしない場合（図１６ステップＳ９１）、何もしない。
【００９７】
この場合、メモリコントローラ１５において、データリプライは分散共有メモリ１６から読出され、リプライ制御回路１５６を介してバス１１０に送出される（図１３ステップＳ６２）。キャッシュ１１ａはデータリプライを“Ｅ”で登録し、ＣＰＵ１１にデータを返信し（図１３ステップＳ６３）、リード処理が完了する。尚、ＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２に対する制御及び追い出し制御は上述した図１７及び図１８に示す処理と同様である。
【００９８】
上記のノード（＃３）４のＴＡＧメモリ及びＴＡＧスワップバッファの索引結果がアドレス一致でかつ“Ｓ”の場合（図１５ステップＳ８１）、ＴＡＧ制御制御回路はバス１４０にラインリード＆インバリデイトリクエストを発行する（図１５ステップＳ８２）。ノード（＃３）４のＴＡＧメモリあるいはＴＡＧスワップバッファのアクセス対象は無効化“Ｉ”される（図１５ステップＳ８３）。
【００９９】
ノード（＃３）４のＴＡＧメモリ及びＴＡＧスワップバッファの索引結果が“Ｓ”であることから、バス１４０上のキャッシュ４１ａ，４２ａ，４３ａ，４４ａは“Ｓ”あるいは“Ｉ”であることから、索引結果が“Ｓ”の場合には（図１５ステップＳ８４）、“Ｓ”を登録しているキャッシュを無効化する（図１６ステップＳ９０）。また、索引結果が“Ｉ”の場合には（図１５ステップＳ８５）、何もしない。尚、ノード（＃０）１のＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２の登録、更新、及び追い出し制御は上述した図１７及び図１８に示す処理と同様である。
【０１００】
上記のノード（＃３）４のＴＡＧメモリ及びＴＡＧスワップバッファの索引結果がアドレス一致しないあるいはアドレス一致したが“Ｉ”の場合（有効データと一致条件が成立しなかった）には（図１５ステップＳ８６）、何もしない。尚、ノード（＃０）１のＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２の登録、更新、及び追い出し制御は上述した図１７及び図１８に示す処理と同様である。
【０１０１】
他ノード（＃３）４の分散共有メモリ４６に対するリードについては、ＴＡＧメモリ、ＴＡＧメモリスワップバッファ及びＣＰＵ４１〜４４各々のキャッシュ４１ａ，４２ａ，４３ａ，４４ａに対する制御が上述したノード（＃０）１の処理と同様である。アクセス対象の分散共有メモリ４６はリクエスト発行ノード以外のノードであり、ノード間のデータ転送経路のみが異なる。
【０１０２】
分散共有メモリ４６から読出されたデータはメモリコントローラ４５からデータ線３０４、クロスバー５、データ線３０１を介してメモリコントローラ１５に転送される。このデータは判定回路１５５からリプライ制御回路１５６を介してバス１１０に送信され、リクエスト発行元のキャッシュ１１ａに登録される。
【０１０３】
また、他ノード（＃３）４においてはキャッシュの“Ｍ”から“Ｉ”の無効化がノード（＃０）１あるいは他ノードで発生したかによって、データリプライの経路が変わるのみである。
【０１０４】
次に、自ノード（＃０）１の分散共有メモリ１６に対するライトについて説明する。この場合、リクエスト発行元をＣＰＵ１１とする。尚、自ノード（＃０）１内のＣＰＵ１２〜１４から発行した場合も、各ＣＰＵ１２〜１４内のキャッシュ制御及びそれらに関連するリクエストの動作はＣＰＵ１１の処理と同様であるものとする。
【０１０５】
ＣＰＵ１１において、キャッシュ１１ａにアクセス対象のデータが“Ｍ”で登録されている場合には（図２０ステップＳ１３１）、キャッシュ１１ａにヒットし、キャッシュ１１ａ内のデータが更新され、キャッシュ１１ａのステータスが“Ｍ”のままとされ（図２０ステップＳ１３２）、ライト処理が完了する。
【０１０６】
ＣＰＵ１１において、キャッシュ１１ａにアクセス対象のデータが“Ｅ”で登録されている場合には（図２０ステップＳ１３３）、キャッシュ１１ａにヒットし、キャッシュ１１ａ内のデータが更新され、キャッシュ１１ａのステータスも“Ｍ”に更新され（図２０ステップＳ１３４）、ライト処理が完了する。
【０１０７】
ＣＰＵ１１において、キャッシュ１１ａにアクセス対象のデータが“Ｓ”で登録されている場合には（図２０ステップＳ１３５）、キャッシュ１１ａがバス１１０にバス獲得要求を発行し（図２０ステップＳ１３７）、バス１１０が獲得できたら（図２０ステップＳ１３８）、ラインリード＆インバリデイトリクエストを発行する（図２０ステップＳ１３９）。
【０１０８】
上記のラインリード＆インバリデイトリクエストにおいて、キャッシュ１１ａがライト対象を“Ｓ”でキャッシングしている場合には（図２１ステップＳ１４０）、バス１１０にメモリラインリード＆インバリデイトリクエストを発行する（図２１ステップＳ１４１）。
【０１０９】
バス１１０上のいずれかのストアインキャッシュに“Ｓ”でキャッシングしているものがあれば（図２１ステップＳ１４２）、インバリデイトされ、キャッシュ１１ａの登録が無効化“Ｉ”される（図２１ステップＳ１４３）。
【０１１０】
並行してキャッシュ１１ａから発行されたラインリード＆インバリデイトリクエストをリクエスト制御部１５４を介してＴＡＧ制御回路１５３に転送し、ノード間アドレス共有バス２００に発行する（図２１ステップＳ１４４）。
【０１１１】
転送されたメモリリード＆インバリデイトリクエストによって他のノードではＴＡＧメモリ及びＴＡＧスワップバッファが索引され、アドレス一致でかつ“Ｐ”あるいは“Ｓ”を検出した場合に（図２２ステップＳ１５１）、無効化“Ｉ”し（図２２ステップＳ１５２）、同一ノード内のバスにインバリデイトリクエストを発行する（図２２ステップＳ１５３）。
【０１１２】
続いて、他のノードでは“Ｓ”でキャッシングしているキャッシュの登録を無効化“Ｉ”し（図２２ステップＳ１５４）、メモリリード＆インバリデイトリクエストの完了通知を送信し（図２２ステップＳ１５５）、索引を完了する。
【０１１３】
他のノードではＴＡＧメモリ及びＴＡＧスワップバッファの索引結果が“Ｉ”の場合（図２２ステップＳ１５６）、何もせず、メモリリード＆インバリデイトリクエストの完了通知を送信し（図２２ステップＳ１５５）、索引を完了する。
【０１１４】
ＴＡＧ制御回路１５３は他のノードに発行したメモリリード＆インバリデイトリクエストの完了通知（スヌーププ結果）を受信すると（図２１ステップＳ１４５）、ＴＡＧメモリ１５１あるいはＴＡＧスワップバッファ１５２のいずれかで対象となるエリアを“Ｐ”で登録する（図２１ステップＳ１４６）。
【０１１５】
メモリラインリード＆インバリデイトリクエストのアドレスがマッピングされている分散共有メモリ１６からはリードリプライデータが読出され（図２１ステップＳ１４７）、リプライ制御回路１５６を介してキャッシュ４１ａに返信する（図２１ステップＳ１４８）。
【０１１６】
キャッシュ１１ａはリードリプライデータを受信すると、そのリードリプライデータをライトデータとマージして“Ｍ”で登録し（図２１ステップＳ１４９）、ライト処理を完了する。
【０１１７】
ＣＰＵ１１において、キャッシュ１１ａにアクセス対象のデータがアドレス一致しない、あるいはアドレス一致したが無効化“Ｉ”されている場合には（図２０ステップＳ１３６）、キャッシュ１１ａがバス１１０にバス獲得要求を発行し（図２０ステップＳ１３７）、バス１１０が獲得できたら（図２０ステップＳ１３８）、ラインリード＆インバリデイトリクエストを発行する（図２０ステップＳ１３９）。
【０１１８】
上記のラインリード＆インバリデイトリクエストにおいて、バス１１０に接続しているＣＰＵ１２〜１４のキャッシュ１２ａ，１３ａ，１４ａのいずれかでアクセス対象のデータが“Ｍ”で登録されている場合には（図２３ステップＳ１６１）、そのキャッシュ１２ａ，１３ａ，１４ａがバス１１０に“Ｍ”データをライトバック（データリプライ）する（図２３ステップＳ１６２）。
【０１１９】
ライトバックを発行したキャッシュ１２ａ，１３ａ，１４ａは無効化され、“Ｉ”とされる（図２３ステップＳ１６３）。上記のライトバックはリクエスト制御部１５４を介して分散共有メモリ１６に送信される（図２３ステップＳ１６４）。既に同一ノード（＃０）１内のキャッシュが“Ｍ”の状態であるので、ＴＡＧメモリ１５１あるいはＴＡＧスワップバッファ１５２に登録されているＴＡＧステータスは“Ｐ”のままとする（図２３ステップＳ１６５）。
【０１２０】
キャッシュ１１ａはバス１１０を介して上記のライトバックデータをリプライデータとして受信すると、“Ｍ”で登録してデータを更新し（図２３ステップＳ１６６）、ライト処理を完了する。
【０１２１】
上記のラインリード＆インバリデイトリクエストにおいて、バス１１０に接続しているＣＰＵ１２〜１４のキャッシュ１２ａ，１３ａ，１４ａのいずれかでアクセス対象のデータが“Ｅ”で登録されている場合には（図２４ステップＳ１６７）、そのキャッシュ１２ａ，１３ａ，１４ａを無効化“Ｉ”し（図２４ステップＳ１６８）、ラインリード＆インバリデイトリクエストをリクエスト制御部１５４を介してＴＡＧ制御回路１５３及び分散共有メモリ１６に転送する（図２４ステップＳ１６９）。
【０１２２】
ＴＡＧ制御回路１５３はＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２を索引し（図２４ステップＳ１７０）、判定回路１６４あるいは判定回路１６６の出力からアクセス対象のステータスを“Ｐ”に更新する（図２４ステップＳ１７１）。
【０１２３】
また、ラインリードリクエストによって分散共有メモリ１６から読出されたデータリプライはリプライ制御回路１５６及びバス１１０を介してリクエスト発行元のキャッシュ１１ａに送信され、キャッシュ１１ａがライトデータとマージして“Ｍ”で登録し（図２４ステップＳ１７２）、ライト処理が完了する。
【０１２４】
上記のラインリード＆インバリデイトリクエストにおいて、バス１１０に接続しているＣＰＵ１２〜１４のキャッシュ１２ａ，１３ａ，１４ａのいずれかでアクセス対象のデータが“Ｓ”で登録されている場合には（図２５ステップＳ１７３）、そのキャッシュを無効化“Ｉ”する（図２５ステップＳ１７４）。
【０１２５】
ラインリード＆インバリデイトリクエストはリクエスト制御部１５４を介してＴＡＧ制御回路１５３及び分散共有メモリ１６に転送される（図２５ステップＳ１７５）。また、他ノードのキャッシュが“Ｓ”である可能性があるため、ＴＡＧ制御回路１５３はノード間アドレスバス２００にインバリデイトリクエストを発行する（図２５ステップＳ１７６）。
【０１２６】
インバリデイトリクエストを受信した各々のノードのメモリコントローラは（図２７ステップＳ１９１）、ノード内のバスへインバリデイトリクエストを発行する（図２７ステップＳ１９２）。“Ｓ”で登録されているキャッシュは全て無効化“Ｉ”される（図２７ステップＳ１９３）。キャッシングされていない場合には（図２７ステップＳ１９４）、なにもしない。他ノードのＴＡＧメモリ及びＴＡＧスワップバッファのアクセス対象のエリアは無効化“Ｉ”される（図２７ステップＳ１９５）。
【０１２７】
自ノード（＃０）１内のメモリコントローラ１５のＴＡＧ制御回路１５３はＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２を“Ｐ”に更新する（図２５ステップＳ１７７）。
【０１２８】
また、ラインリード＆インバリデイトリクエストによって分散共有メモリ１６から読出されたデータリプライはリプライ制御回路１５６及びバス１１０を介してリクエスト発行元のキャッシュ１１ａに送信される（図２５ステップＳ１７８）。キャッシュ１１ａはそのデータリプライをライトデータとマージして“Ｍ”で登録し（図２５ステップＳ１７９）、ライト処理が完了する。
【０１２９】
上記のラインリード＆インバリデイトリクエストにおいて、バス１１０に接続しているＣＰＵ１２〜１４のキャッシュ１２ａ，１３ａ，１４ａの全てがアクセス対象のデータを登録していない場合には（図２６ステップＳ１８０）、ラインリード＆インバリデイトリクエストをリクエスト制御部１５４を介してＴＡＧ制御回路１５３及び分散共有メモリ１６に転送する（図２６ステップＳ１８１）。
【０１３０】
ＴＡＧ制御回路１５３はノード間アドレスバス２００にラインリード＆インバリデイトリクエストを発行し（図２６ステップＳ１８２）、他ノード（＃１〜＃３）２〜４のメモリコントローラに上記ラインリクエストを転送する。
【０１３１】
他ノード（＃１〜＃３）２〜４各々のメモリコントローラのＴＡＧ制御回路は他のノードからのラインリクエストを受信すると（図２８ステップＳ２０１）、ＴＡＧメモリ及びＴＡＧスワップバッファを索引する（図２８ステップＳ２０２）。以下、各索引結果毎の処理について述べるが、その処理についてはノード（＃３）４を対象として説明する。但し、ノード（＃１，２）２，３でもノード（＃３）４と同様の動作を行うものとする。
【０１３２】
上記のノード（＃３）４のＴＡＧメモリ及びＴＡＧスワップバッファの索引結果がアドレス一致でかつ“Ｐ”の場合には（図２８ステップＳ２０３）、ＴＡＧ制御回路がバス１４０にインバリデイトリクエストを発行し（図２８ステップＳ２０４）、ノード（＃３）４のＴＡＧメモリあるいはＴＡＧスワップバッファのアクセス対象を無効化“Ｉ”する（図２８ステップＳ２０５）。
【０１３３】
ノード（＃３）４ではＣＰＵ４１〜４４各々のキャッシュ４１ａ，４２ａ，４３ａ，４４ａを索引し（図２８ステップＳ２０６）、索引結果が“Ｍ”の場合（図２８ステップＳ２０７）、“Ｍ”を登録しているキャッシュがデータをバス１４０にライトバックし、リクエスト制御部に転送する（図２８ステップＳ２０８）。“Ｍ”を登録しているキャッシは無効化“Ｉ”される（図２８ステップＳ２０９）。
【０１３４】
上記のライトバックはデータリプライとしてデータ線３０４を介してクロスバー５に転送され（図２８ステップＳ２１０）、データ線３０１を介してノード（＃０）１のメモリコントローラ１５に転送される。
【０１３５】
メモリコントローラ１５の判定回路１５５はデータリプライをリプライ制御回路１５６及びリクエスト制御部１５４に転送する。リプライ制御回路１５６はデータリプライをバス１１０上のＣＰＵ１１に送信する。キャッシュ１１ａはデータリプライとライトデータとをマージして“Ｍ”で登録し（図２６ステップＳ１８３，Ｓ１８４）、ライト処理が完了する。
【０１３６】
尚、上記の処理においてリード動作時のＴＡＧメモリ１５１とＴＡＧスワップバッファ１５２の制御と同様に、リクエスト発行元のＴＡＧ制御回路１５３はデータリプライを受信し、ＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２を索引する（図３１ステップＳ２３１）。ここで、ＴＡＧメモリ１５１の索引結果が判定回路１６６の結果あるいはＴＡＧスワップバッファ１５２の索引結果を判別する判定回路１６４の出力によって以下の様になる。
【０１３７】
ＴＡＧメモリ１５１のアクセス対象エリアに空きエリアが存在した場合には（図３１ステップＳ２３２）、その空きエリアにキーアドレス及びステータス“Ｐ”を登録する（図３１ステップＳ２３３）。
【０１３８】
ＴＡＧメモリ１５１のアクセス対象エリアが全て“Ｐ”で登録されていた場合には（図３１ステップＳ２３４）、いずれかのエリアをＴＡＧスワップバッファ１５２に追い出し、替わりにデータリプライのキーアドレス及びステータス“Ｐ”を登録する（図３１ステップＳ２３５）。
【０１３９】
ＴＡＧメモリ１５１のアクセス対象エリアが“Ｐ”あるいは“Ｓ”で満たされている場合には（図３１ステップＳ２３６）、いずれかの“Ｓ”をＴＡＧスワップバッファ１５２に追い出し、替わりにデータリプライのキーアドレス及びステータス“Ｐ”を登録する（図３１ステップＳ２３７）。
【０１４０】
ＴＡＧメモリ１５１のアクセス対象エリアが全て“Ｓ”で登録されていた場合には（図３１ステップＳ２３８）、いずれかのエリアをＴＡＧスワップバッファ１５２に追い出し、替わりにデータリプライのキーアドレス及びステータス“Ｐ”を登録する（図３１ステップＳ２３９）。
【０１４１】
上記の処理において、ＴＡＧスワップバッファ１５２が判定回路１６２の結果からフル状態の場合（図３２ステップＳ２４０）、ＴＡＧスワップバッファ１５２に格納されている全てが“Ｐ”であれば（図３２ステップＳ２４１）、いずれかの“Ｐ”を追い出す（図３２ステップＳ２４２）。ＴＧＡ制御回路１５３は追い出し対象のアドレスでインバリデイトリクエストをバス１１０に発行する（図３２ステップＳ２４３）。以下、上記のインバリデイトリクエストに対する動作について述べる。
【０１４２】
インバリデイトリクエストのアドレスに対して、バス１１０上のキャッシュ１１ａ，１２ａ，１３ａ，１４ａのいずれかで“Ｍ”が登録されている場合には（図３３ステップＳ２５１）、バス１１０にライトバックし、無効化“Ｉ”する（図３３ステップＳ２５２）。ライトバックはリクエスト制御部１５４を介してアクセス対象の分散共有メモリ１６にルーティングされ、そのメモリの内容が更新される（図３３ステップＳ２５３）。
【０１４３】
インバリデイトリクエストのアドレスに対して、バス１１０上のキャッシュ１１ａ，１２ａ，１３ａ，１４ａのいずれかで“Ｅ”が登録されている場合には（図３３ステップＳ２５４）、そのキャッシュを無効化“Ｉ”する（図３３ステップＳ２５５）。
【０１４４】
インバリデイトリクエストのアドレスに対して、バス１１０上のキャッシュ１１ａ，１２ａ，１３ａ，１４ａのいずれかで“Ｓ”が登録されている場合には（図３３ステップＳ２５６）、そのキャッシュを無効化“Ｉ”する（図３３ステップＳ２５５）。
【０１４５】
インバリデイトリクエストのアドレスに対して、バス１１０上のキャッシュ１１ａ，１２ａ，１３ａ，１４ａのいずれにも登録されていない場合には（図３３ステップＳ２５７）、何もしない。
【０１４６】
ノード（＃３）４ではＣＰＵ４１〜４４各々のキャッシュ４１ａ，４２ａ，４３ａ，４４ａを索引し（図２８ステップＳ２０６）、索引結果が“Ｅ”の場合（図３０ステップＳ２１７）、“Ｅ”を登録しているキャッシュを無効化”Ｉ”する（図３０ステップＳ２１８）。
【０１４７】
この場合、メモリコントローラ１５において、データリプライは分散共有メモリ１６から読出され、リプライ制御回路１５６を介してバス１１０に送出される（図２６ステップＳ１８３，Ｓ１８５）。キャッシュ１１ａはデータリプライとライトデータとをマージして“Ｍ”で登録し（図２６ステップＳ１８６）、ライト処理が完了する。尚、ＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２に対する制御及び追い出し制御は上述した図３１及び図３２に示す処理と同様である。
【０１４８】
ノード（＃３）４ではＣＰＵ４１〜４４各々のキャッシュ４１ａ，４２ａ，４３ａ，４４ａを索引し（図２８ステップＳ２０６）、索引結果が“Ｓ”の場合（図３０ステップＳ２１９）、“Ｓ”を登録しているキャッシュを無効化“Ｉ”する（図３０ステップＳ２２０）。
【０１４９】
この場合、メモリコントローラ１５において、データリプライは分散共有メモリ１６から読出され、リプライ制御回路１５６を介してバス１１０に送出される（図２６ステップＳ１８３，Ｓ１８５）。キャッシュ１１ａはデータリプライとライトデータとをマージして“Ｍ”で登録し（図２６ステップＳ１８６）、ライト処理が完了する。尚、ＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２に対する制御及び追い出し制御は上述した図３１及び図３２に示す処理と同様である。
【０１５０】
ノード（＃３）４ではＣＰＵ４１〜４４各々のキャッシュ４１ａ，４２ａ，４３ａ，４４ａを索引し（図２８ステップＳ２０６）、いずれのキャッシュにもヒットしない場合（図３０ステップＳ２２１）、何もしない。
【０１５１】
この場合、メモリコントローラ１５において、データリプライは分散共有メモリ１６から読出され、リプライ制御回路１５６を介してバス１１０に送出される（図２６ステップＳ１８３，Ｓ１８５）。キャッシュ１１ａはデータリプライとライトデータとをマージして“Ｍ”で登録し（図２６ステップＳ１８６）、ライト処理が完了する。尚、ＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２に対する制御及び追い出し制御は上述した図３１及び図３２に示す処理と同様である。
【０１５２】
上記のノード（＃３）４のＴＡＧメモリ及びＴＡＧスワップバッファの索引結果がアドレス一致でかつ“Ｓ”の場合（図２９ステップＳ２１１）、ＴＡＧ制御制御回路はバス１４０にインバリデイトリクエストを発行する（図２９ステップＳ２１２）。ノード（＃３）４のＴＡＧメモリあるいはＴＡＧスワップバッファのアクセス対象は無効化“Ｉ”される（図２９ステップＳ２１３）。
【０１５３】
ノード（＃３）４のＴＡＧメモリ及びＴＡＧスワップバッファの索引結果が“Ｓ”であることから、バス１４０上のキャッシュ４１ａ，４２ａ，４３ａ，４４ａは“Ｓ”あるいは“Ｉ”であることから、索引結果が“Ｓ”の場合には（図２９ステップＳ２１４）、“Ｓ”を登録しているキャッシュを無効化“Ｉ”する（図３０ステップＳ２２０）。また、索引結果が“Ｉ”の場合には（図２９ステップＳ２１５）、何もしない。尚、ノード（＃０）１のＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２の登録、更新、及び追い出し制御は上述した図３１及び図３２に示す処理と同様である。
【０１５４】
上記のノード（＃３）４のＴＡＧメモリ及びＴＡＧスワップバッファの索引結果がアドレス一致しないあるいはアドレス一致したが“Ｉ”の場合（有効データと一致条件が成立しなかった）には（図２９ステップＳ２１６）、何もしない。尚、ノード（＃０）１のＴＡＧメモリ１５１及びＴＡＧスワップバッファ１５２の登録、更新、及び追い出し制御は上述した図３１及び図３２に示す処理と同様である。
【０１５５】
他ノード（＃３）４の分散共有メモリ４６に対するライトについては、ＴＡＧメモリ、ＴＡＧメモリスワップバッファ及びＣＰＵ４１〜４４各々のキャッシュ４１ａ，４２ａ，４３ａ，４４ａに対する制御が上述したノード（＃０）１の処理と同様である。アクセス対象の分散共有メモリ４６はリクエスト発行ノード以外のノードであり、ノード間のデータ転送経路のみが異なる。
【０１５６】
分散共有メモリ４６から読出されたデータはメモリコントローラ４４からデータ線３０４、クロスバー５、データ線３０１を介してメモリコントローラ１５に転送される。このデータは判定回路１５５からリプライ制御回路１５６を介してバス１１０に送信され、リクエスト発行元のキャッシュ１１ａに登録される。
【０１５７】
また、他ノード（＃３）４においてはキャッシュの“Ｍ”から“Ｉ”の無効化がノード（＃０）１あるいは他ノードで発生したかによって、データリプライの経路が変わるのみである。
【０１５８】
近年、メインメモリの容量及びＣＰＵに搭載されるキャッシュの容量は大容量化している。ＴＡＧメモリで全メモリ空間の情報を保持することはハードウェア投資が膨大となる。また、ＴＡＧメモリの容量を増やすことによって、制御が複雑化すると同時に、ハードウェア投資に見合った性能が確保されるとは限らない。
【０１５９】
本実施例ではＴＡＧメモリ１５１と、ＴＡＧメモリ１５１からの掃き出し情報を保持するＴＡＧスワップバッファ１５２とによって、ＴＡＧスワップバッファ１５２に有効な情報があり、ＴＡＧメモリ１５１のエリアが空いた際にＴＡＧスワップバッファ１５２からの再登録を行っている。
【０１６０】
ＴＡＧスワップバッファ１５２はフル状態となるまで、バス１１０へのコヒーレントリクエストを発行しない。また、ＴＡＧスワップバッファ１５２内にＴＡＧメモリ１５１への再登録対象が複数ある場合、ＴＡＧステータスが“Ｓ”よりも“Ｐ”であるものを優先する。
【０１６１】
ＴＡＧスワップバッファ１５２からバス１１０へのコヒーレントリクエストを発行する場合も、ステータスが“Ｓ”よりも“Ｐ”を優先させる機構を具備することによって、各ノード内のバスへの負荷を低減し、ＴＡＧメモリ１５１を有効に活用することから、ＣＰＵ１１〜１４，……，４１〜４４に搭載されるキャッシュ１１ａ，１２ａ，１３ａ，１４ａ，……，４１ａ，４２ａ，４３ａ，４４ａからの掃き出しが低減される。よって、システム全体の性能が向上する。
【０１６２】
【発明の効果】
以上説明したように本発明は、タグメモリと、タグメモリ１５１からの掃き出し情報を保持するタグスワップバッファとによって、タグスワップバッファに有効な情報があり、タグメモリのエリアが空いた際にタグスワップバッファからの再登録を行うことによって、バスへの負荷を減らすことができ、キャッシュのヒット率を上げてシステム全体の性能を向上させることができるという効果が得られる。
【図面の簡単な説明】
【図１】本発明の一実施例による分散共有メモリ型マルチプロセッサシステムの構成を示すブロック図である。
【図２】図１のメモリコントローラの構成を示すブロック図である。
【図３】図２のＴＡＧメモリの保持内容を示す図である。
【図４】図２のＴＡＧスワップバッファの保持内容を示す図である。
【図５】図２のＴＡＧメモリ及びＴＡＧスワップバッファの制御機構を示すブロック図である。
【図６】図２のＴＡＧメモリからの追い出し制御を示すフローチャートである。
【図７】図２のＴＡＧスワップバッファからの追い出し制御を示すフローチャートである。
【図８】図２のＴＡＧスワップバッファからＴＡＧメモリへの再登録制御を示すフローチャートである。
【図９】図１の分散共有メモリに対するリード処理を示すフローチャートである。
【図１０】図１の分散共有メモリに対するリード処理を示すフローチャートである。
【図１１】図１の分散共有メモリに対するリード処理を示すフローチャートである。
【図１２】図１の分散共有メモリに対するリード処理を示すフローチャートである。
【図１３】図１の分散共有メモリに対するリード処理を示すフローチャートである。
【図１４】図１の分散共有メモリに対するリード処理を示すフローチャートである。
【図１５】図１の分散共有メモリに対するリード処理を示すフローチャートである。
【図１６】図１の分散共有メモリに対するリード処理を示すフローチャートである。
【図１７】図１の分散共有メモリに対するリード処理を示すフローチャートである。
【図１８】図１の分散共有メモリに対するリード処理を示すフローチャートである。
【図１９】図１の分散共有メモリに対するリード処理を示すフローチャートである。
【図２０】図１の分散共有メモリに対するライト処理を示すフローチャートである。
【図２１】図１の分散共有メモリに対するライト処理を示すフローチャートである。
【図２２】図１の分散共有メモリに対するライト処理を示すフローチャートである。
【図２３】図１の分散共有メモリに対するライト処理を示すフローチャートである。
【図２４】図１の分散共有メモリに対するライト処理を示すフローチャートである。
【図２５】図１の分散共有メモリに対するライト処理を示すフローチャートである。
【図２６】図１の分散共有メモリに対するライト処理を示すフローチャートである。
【図２７】図１の分散共有メモリに対するライト処理を示すフローチャートである。
【図２８】図１の分散共有メモリに対するライト処理を示すフローチャートである。
【図２９】図１の分散共有メモリに対するライト処理を示すフローチャートである。
【図３０】図１の分散共有メモリに対するライト処理を示すフローチャートである。
【図３１】図１の分散共有メモリに対するライト処理を示すフローチャートである。
【図３２】図１の分散共有メモリに対するライト処理を示すフローチャートである。
【図３３】図１の分散共有メモリに対するライト処理を示すフローチャートである。
【符号の説明】
１〜４  ノード（＃０〜＃３）
５  クロスバー
６−１〜６−４  Ｉ／Ｏ装置
１１〜１４，４１〜４４  ＣＰＵ
１１ａ，１２ａ，１３ａ，
１４ａ，４１ａ，４２ａ，
４３ａ，４４ａ  キャッシュ
１５，４５  メモリコントローラ
１６，４６  分散共有メモリ
１５１  ＴＡＧメモリ
１５２  ＴＡＧスワップバッファ
１５３  ＴＡＧ制御回路
１５４  リクエスト制御部
１５５，１６２，１６４，
１６６  判定回路
１５６  リプライ制御回路部
１６１  レジスタ
１６３，１６５  選択回路
【図１】
0003678715.tif 000002
【図２】
0003678715.tif 000003
【図３】
0003678715.tif 000004
【図４】
0003678715.tif 000005
【図５】
0003678715.tif 000006
【図６】
0003678715.tif 000007
【図７】
0003678715.tif 000008
【図８】
0003678715.tif 000009
【図９】
0003678715.tif 000010
【図１０】
0003678715.tif 000011
【図１１】
0003678715.tif 000012
【図１２】
0003678715.tif 000013
【図１３】
0003678715.tif 000014
【図１４】
0003678715.tif 000015
【図１５】
0003678715.tif 000016
【図１６】
0003678715.tif 000017
【図１７】
0003678715.tif 000018
【図１８】
0003678715.tif 000019
【図１９】
0003678715.tif 000020
【図２０】
0003678715.tif 000021
【図２１】
0003678715.tif 000022
【図２２】
0003678715.tif 000023
【図２３】
0003678715.tif 000024
【図２４】
0003678715.tif 000025
【図２５】
0003678715.tif 000026
【図２６】
0003678715.tif 000027
【図２７】
0003678715.tif 000028
【図２８】
0003678715.tif 000029
【図２９】
0003678715.tif 000030
【図３０】
0003678715.tif 000031
【図３１】
0003678715.tif 000032
【図３２】
0003678715.tif 000033
【図３３】
0003678715.tif 000034