(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、ローカルデータ／リモートデータ双方を登録する汎用キャッシュメモリと，リモートデータのみを登録するリモート専用キャッシュメモリを各ユニットに有する分散共有メモリ型の並列計算機であって、
前記リモート専用キャッシュメモリのタグ情報を用いて、前記汎用キャッシュメモリからリモートデータを追い出すことを特徴とする並列計算機。
【請求項２】
前記リモート専用キャッシュメモリのラインサイズを、前記汎用キャッシュメモリのラインサイズより大きく構成し、前記リモート専用キャッシュメモリのタグに、前記リモート専用キャッシュメモリ中のデータが前記汎用キャッシュメモリに登録されたことを示すビットを、前記汎用キャッシュメモリのラインサイズのデータ群毎に設けたことを特徴とする請求項１記載の並列計算機。
【請求項３】
前記リモート専用キャッシュメモリ中のデータが前記汎用キャッシュメモリに登録されたことを示すビットを用いて、前記汎用キャッシュメモリに登録されたリモートデータのみ前記汎用キャッシュメモリから追い出すことを特徴とする請求項２記載の並列計算機。
【請求項４】
ＣＰＵと、ローカルデータ／リモートデータ双方を登録する汎用キャッシュメモリと，前記汎用キャッシュメモリに登録されている可能性のあるリモートデータのアドレスを記憶するリモート専用タグを各ユニットに有する分散共有メモリ型の並列計算機であって、
前記リモート専用タグの情報を用いて、前記汎用キャッシュメモリからリモートデータを追い出すことを特徴とする並列計算機。
【請求項５】
ＣＰＵと、ローカルデータ／リモートデータ双方を登録する汎用キャッシュメモリと，リモートデータのみを登録するリモート専用キャッシュメモリを各ユニットに有し、前記ＣＰＵ外部に用意したレジスタにより前記ＣＰＵのアドレス空間を拡張した分散共有メモリ型の並列計算機であって、
前記リモート専用キャッシュメモリのタグ情報を用いて、前記汎用キャッシュメモリからリモートデータを追い出すことを特徴とする並列計算機。
【請求項６】
前記レジスタの更新を契機に、前記汎用キャッシュメモリからリモートデータを一括して追い出すことを特徴とする請求項５記載の並列計算機。
【請求項７】
ＣＰＵと、ローカルデータ／リモートデータ双方を登録する汎用キャッシュメモリと，前記汎用キャッシュメモリに登録されている可能性のあるリモートデータのアドレスを記憶するリモート専用タグを各ユニットに有し、前記ＣＰＵ外部に用意したレジスタにより前記ＣＰＵのアドレス空間を拡張した分散共有メモリ型の並列計算機であって、
前記リモート専用タグの情報を用いて、前記汎用キャッシュメモリからリモートデータを追い出すことを特徴とする並列計算機。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、物理的に分散された共有メモリを有する並列計算機に関する。
【０００２】
【従来の技術】
計算機性能の向上のため、多数台のプロセッサを並列動作させる並列計算機が有望視されている。並列計算機ではプロセッサ間の通信手段が必要となる。通信手段としては、ネットワークを通してメッセージを交換するメッセージパッシング方式と、各プロセッサよりアクセスできる共有メモリ領域を用意する共有メモリ方式とがある。メッセージパッシング方式におけるメッセージの交換は、一般にオペレーティングシステムを起動することで実現する。オペレーティングシステムの起動は、特に短いメッセージの通信において、非常に重いオーバヘッドとなる。これに対し、共有メモリを用いる方法では、オペレーティングシステムを起動することなく通信が実現する。このため、共有メモリ方式は、通信におけるプロセッサの負担を軽減できる。
【０００３】
大規模並列計算機の共有メモリ方式として、共有メモリを分割・分散させて用意する、分散共有メモリ方式が有効である。共有メモリを分散させることで、複数のプロセッサによる共有メモリの同時アクセスが可能になり、高度な並列性を持つ処理が実現する。分散共有メモリ方式は、プロセッサと一部の共有メモリとを持つ構成要素(以下、ユニットとする)を、ネットワークで結合する構成が知られている。分散共有メモリシステムとしては、特開平５−８９０５６号公報などが開示されている。
【０００４】
分散共有メモリ型並列計算機構築の課題として、アドレス空間の拡張がある。分散共有メモリ型並列計算機システムに用いるＣＰＵとしては、コストパフォーマンスに優れる汎用のＣＰＵを用いるケースが多い。しかし、汎用のＣＰＵは、主な利用先としてワークステーション程度のマシンを想定しているため、通常は分散共有メモリ型並列計算機に必要なアドレス空間を持ちあわせていない。例えば、６４ビットアーキテクチャのＲＩＳＣ型ＣＰＵでも、ピン数などの制約により、実アドレス空間は現在のところ３２〜４０ビット程度の広さしかない。ところが、各ユニットに５１２ＭＢのメモリを搭載し、１６Ｋ台のユニットをネットワークで結合する分散共有メモリ型並列計算機を構築する場合、各ユニットのメモリを全てアドレス空間にマッピングするには、４３ビットのアドレス空間が必要になる。このような広大なアドレス空間を汎用のＣＰＵでサポートするには、ＣＰＵ外部でアドレスを拡張する機構が必要になる。
【０００５】
別な分散共有メモリ型並列計算機構築の課題として、ネットワーク遅延の隠蔽がある。分散共有メモリ型並列計算機では、ＣＰＵが他ユニット内のデータをアクセスする回数は極めて多い。よって、システムの性能が、ネットワークを介するデータ転送能力によって大きく左右される。ところが、近年のプロセッサの処理速度の向上に比べて、ネットワーク速度の向上は大きくない。このため、ネットワーク遅延時間を隠蔽する技術が高性能な分散共有メモリ型並列計算機を構築する際の鍵となる。
【０００６】
ネットワーク遅延時間を隠蔽する技術として、キャッシュメモリを各ユニットに用意する方式が有効である。キャッシュメモリは、共有メモリの一部の内容を登録する、小容量高速なバッファである。キャッシュメモリを用意する分散型共有メモリとしては、特開平５ー１２８０７１号公報、「Ｔｈｅ  Ｓｔａｎｆｏｒｄ  Ｄａｓｈ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ，ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ，Ｍａｒｃｈ  １９９２  ｐｐ．６３〜７８」などを参考にされたい。
【０００７】
キャッシュメモリを持つ分散共有メモリ型並列計算機では、複数ユニットのキャッシュメモリ間の一致制御が必要になる。例えば、「Ｔｈｅ  Ｓｔａｎｆｏｒｄ  Ｄａｓｈ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ，ＩＥＥＥ  Ｃｏｍｐｕｔｅｒ，Ｍａｒｃｈ  １９９２  ｐｐ．６３〜７８」では、ディレクトリと呼ばれる記憶機構を用意し、各データがどのユニットのキャッシュメモリに登録されているかを常に管理し、その情報を基にキャッシュメモリ間の一致制御を行っている。
【０００８】
しかし、ディレクトリによるキャッシュメモリ一致制御は、ディレクトリの総物量がユニット数の増加に従って増大することや、制御が複雑になる。そこで、ディレクトリを使わずに、ソフトウェアにより一致制御を行う分散共有メモリ型並列計算機が検討されている。
【０００９】
【発明が解決しようとする課題】
前記の通りＣＰＵ外部でアドレスを拡張した場合、ＣＰＵ内蔵のキャッシュメモリ、またはＣＰＵに制御回路を内蔵（メモリ本体はＣＰＵ外付け）するキャッシュメモリは、拡張したアドレスに対応してキャッシュメモリに登録したデータを管理することができないため、拡張アドレスによりアクセスするリモートデータを登録できない。
【００１０】
また、アドレス拡張を行わず、リモートデータをキャッシュメモリに登録した場合、ソフトウェアにより一致制御を実現しようとすると、キャッシュメモリに登録されているリモートデータを一括してキャッシュメモリから追い出す処理（無効化処理）が頻繁に発生する。ところが、汎用のＣＰＵではリモートデータのみを一括してキャッシュメモリから追い出す機構を持たない。このため、キャッシュメモリの全タグを検索し、各登録データがリモートデータであるかローカルデータであるかを判断して、リモートデータであれば追い出すという処理を行わなければならない。この処理は極めて長い時間を要すため、ソフトウェアにより一致制御を行う分散共有メモリ型並列計算機では、性能が出ない。
【００１１】
本発明の目的は、アドレス空間をＣＰＵ外部で拡張している分散共有メモリ型並列計算機において、ＣＰＵ内部で管理するキャッシュメモリにリモートデータが登録できるようにして、性能向上を図ることである。
【００１２】
また、本発明の他の目的は、アドレス拡張の有無に関わらず、ＣＰＵ内部で管理されるキャッシュメモリからリモートデータ全てを高速に追い出し、コヒーレンス制御の速度を向上させることである。
【００１３】
【課題を解決するための手段】
リモートデータのみを登録し、拡張アドレスを用いて登録したリモートデータを管理するキャッシュメモリ（以下、リモートデータバッファとする）を用意し、アドレスの拡張分を変更した際に、リモートデータバッファのタグ情報を用いて、ＣＰＵ内部で管理するキャッシュメモリからリモートデータを追い出す。
【００１４】
【作用】
アドレス空間をＣＰＵ外部で拡張している分散共有メモリ型並列計算機でも、ＣＰＵ内部で管理するキャッシュメモリにリモートデータが登録できるようになる。
【００１５】
また、ＣＰＵ内蔵、またはＣＰＵに制御回路を内蔵するキャッシュメモリから、リモートデータを一括して高速に追い出すことができるようになる。
【００１６】
他の本発明の目的（課題）、構成及び効果は、以下の実施例の記載から自ずと明らかになろう。
【００１７】
【実施例】
（１：第１の実施例）
図１〜７に本発明の第１の実施例を示す。本実施例は、アドレス空間をＣＰＵ外部で拡張する場合に、ＣＰＵ外部に用意したリモートデータ専用キャッシュメモリであるリモートデータバッファを利用して、ＣＰＵ内蔵、またはＣＰＵに制御回路を内蔵するキャッシュメモリにリモートデータの登録を可能にし、かつリモートデータ高速一括無効化を実現した例である。
【００１８】
（１．１：第１の実施例の課題）
本実施例の動作の説明の前に、本実施例における解決すべき課題２点を以下に説明する。なお、本実施例では、各ユニットのローカルメモリを６４ＭＢ、ネットワークで結合する台数を６４台、ＣＰＵがサポートする実アドレス空間を２８ｂｉｔ（＝２５６ＭＢ）とする。また、説明中に使用するＡＣＫとはアクノリッジ信号、ＷＡＣＫとはワードアクノリッジ信号、ＬＡＣＫとはラインアクノリッジ信号である。
【００１９】
第１の課題は、アドレス空間の不足に起因するキャッシュメモリの問題である。
【００２０】
上記の構成の分散共有メモリ型並列計算機で、全ユニットのローカルメモリを各ＣＰＵのアドレス空間上に全て見せるには、６４ＭＢ×６４台＝４ＧＢ（＝３２ｂｉｔ）のアドレス空間が必要になる。これに対してＣＰＵは２５６ＭＢの空間しかサポートしないため、なんらかのアドレス拡張を行い、４ＧＢのメモリを２５６ＭＢの空間にマッピングする必要がある。
【００２１】
図８は、本実施例におけるマッピング方法によるアドレス空間を示している。このアドレス空間は、各ユニット毎に用意される。
【００２２】
各ユニットのプロセッサは、自ユニット内のローカルメモリを、先頭アドレス０ｘ０００００００で大きさ６４ＭＢのローカル領域ｕ１００よりアクセスできる。さらに、各ユニット毎にユニット番号レジスタを持ち、先頭アドレス０ｘ８００００００で大きさ６４ＭＢのグローバル領域ｕ１１０からは、ユニット番号レジスタにより指定する他ユニットのメモリがアクセスできる。例えば、ユニット番号レジスタの値が０である場合には、グローバル領域ｕ１１０からユニット０のローカルメモリがアクセスでき、ユニット番号レジスタの値を６３に変更すれば、今度はグローバル領域ｕ１１０からユニット６３のローカルメモリがアクセスできる。
【００２３】
このようにユニット番号レジスタによりアドレス空間を拡張した場合、ＣＰＵ内蔵のキャッシュメモリ、またはＣＰＵに制御回路を内蔵するキャッシュメモリにリモートデータを登録すると大きな問題が発生する。例えば、ユニット１のＣＰＵが自ユニット内のユニット番号レジスタに０をセットしてアドレス０ｘ８００００００でロードすることにより、第１のユニット０のリモートデータをキャッシュメモリに登録した後に、ユニット番号レジスタに６３をセットしてアドレス０ｘ８００００００でロードすることにより、ユニット６３のリモートデータをキャッシュメモリに登録しようとしても、以前に登録したユニット０のデータが自動的にリプレースされない。このため、ユニット６３のデータへのロードに対して、ユニット０から登録したリモートデータが誤って読めてしまうことになる。よって、アドレスを拡張したグローバル領域ｕ１１０については、ＣＰＵ内蔵のキャッシュメモリ、またはＣＰＵに制御回路を内蔵するキャッシュメモリを使用することができない。
【００２４】
ＣＰＵ内蔵のキャッシュメモリ、またはＣＰＵに制御回路を内蔵するキャッシュメモリを使わずに、拡張したグローバル領域ｕ１１０に対応するキャッシュメモリを新たに外部に用意することは問題解決の１方法である。しかし、ＣＰＵ外部で管理するキャッシュメモリに、ＣＰＵ内蔵のキャッシュメモリ、またはＣＰＵに制御回路を内蔵するキャッシュメモリと同等の高速性を持たせることは困難である。よって、アドレスを拡張した場合にも、ＣＰＵ内蔵のキャッシュメモリ、またはＣＰＵに制御回路を内蔵するキャッシュメモリにリモートデータを登録できる方式が望ましい。
【００２５】
第２の課題は、ソフトウェアによるコヒーレンス制御の問題である。
【００２６】
もし、第１の課題を解決して、ＣＰＵ内蔵のキャッシュメモリ、またはＣＰＵに制御回路を内蔵するキャッシュメモリにリモートデータが登録できた場合、複数のＣＰＵのキャッシュメモリ間の一致制御（以下、コヒーレンス制御）が必要になる。
【００２７】
ディレクトリによる制御の代わりに、ソフトウェアでコヒーレンス制御を行う場合、「同期ポイントで、キャッシュメモリからリモートデータを全て追い出す」という処理で十分であることが分かっている。この点について、以下に説明する。
【００２８】
（１）コヒーレンスは、ＣＰＵ間の同期ポイントでのみとれば十分である。これは、コヒーレンスが必要となる場合、つまりユニット０のＣＰＵが書き込んだ値をユニット６３のＣＰＵが読み出す場合には、必ず同期操作が必要になることに基づく。もしユニット０のＣＰＵとユニット６３のＣＰＵとの間に何らかの同期操作がないと、読み出しと書き込みの順序関係が保証できないため、コヒーレンスをとることは無意味となる。
【００２９】
（２）各ユニットのＣＰＵが同期ポイントで、キャッシュメモリからリモートデータを全て追い出した場合、各データが登録されている可能性のあるキャッシュメモリは、ホームユニット（そのデータをローカルメモリ上に持つユニット）のＣＰＵのキャッシュメモリだけとなる。よって、複数キャッシュメモリ間のデータの不一致は原理的に発生し得なくなる。
【００３０】
同期ポイントでキャッシュメモリからリモートデータのみを全て追い出すための機構は、汎用のＣＰＵではサポートされていない。このため、リモートデータを追い出す処理は、（キャッシュメモリのタグチェック／リモートデータ判定／追い出し処理）の繰返しとなり、極めて長い処理時間が必要になる。汎用のＣＰＵを使った場合にも、高速にリモートデータのみを追い出せる機構の実現が望ましい。
【００３１】
以上の第１及び第２の課題を解決するものとして、本実施例を説明する。まず、本実施例におけるアドレス空間、および本実施例の構成要素について説明する。さらに、図１〜７を用いて本実施例の動作を説明する。なお、図１のユニット０とユニット１０００とは同じ機能を持ち、ネットワーク１００００には、ユニット０、ユニット１０００と同じ機能をもつユニットが多数結合しているものとする。
【００３２】
（１．２：第１の実施例におけるアドレス空間）
本実施例におけるアドレス空間について説明する。アドレス空間は、ユニット番号レジスタ４０により拡張する。拡張したアドレス空間の見え方を図８に示す。このアドレス空間は、各ユニット毎に独立して持つ。なお、各ユニットのローカルメモリは、各ユニット毎の実アドレス０ｘ０００００００〜０ｘ３ＦＦＦＦＦＦに実装する。
【００３３】
ＣＰＵ１０からのアクセスのアドレスが０ｘ０００００００〜０ｘ３ＦＦＦＦＦＦ（ローカル領域ｕ１００）であった場合には、このアクセスはユニット０内のローカルメモリ８０に対するアクセスとなり、ローカルメモリ８０の実アドレス０ｘ０００００００〜０ｘ３ＦＦＦＦＦＦに対するアクセスとなる。
【００３４】
ＣＰＵ１０からのアクセスのアドレスが０ｘ８００００００〜０ｘＢＦＦＦＦＦＦ（グローバル領域ｕ１１０）であった場合には、このアクセスはユニット番号レジスタ４０により指定されるユニットのローカルメモリへのアクセスとみなされる。例えば、ユニット番号レジスタ４０の内容が、ユニット１０００を示す値であれば、ＣＰＵ１０はグローバル領域ｕ１１０からユニット１０００のローカルメモリ１０８０がアクセスできる。ここでグローバル領域ｕ１１０でのアドレスとアクセス先ユニット内での実アドレスとの関係は、（アクセス先ユニット内での実アドレス＝グローバル領域ｕ１１０でのアドレスー０ｘ８００００００）となる。つまり、もしＣＰＵ１０が０ｘ８００００００にアクセスした場合は、ユニット番号レジスタ４０により指定されるユニットのローカルメモリの実アドレス０ｘ０００００００に対するアクセスとなる。
【００３５】
なお、本実施例ではアドレス空間中のグローバル領域ｕ１１０を1面としたが、必ずしも1面である必要はなく、各ユニットのアドレス空間にそれぞれグローバル領域ｕ１１０を複数用意することも可能である。
【００３６】
（１．３：第１の実施例におけるＣＰＵ１０）
次に、図１に記載した本実施例の構成要素について説明する。
【００３７】
ＣＰＵ１０は演算部１００を持ち、ストアスルーのキャッシュメモリ１１０を内蔵する。キャッシュメモリ１１０は実アドレス空間２８ｂｉｔで管理されているものとする。また、キャッシュメモリ１１０のデータ管理単位であるラインサイズは６４Ｂｙｔｅとする。
【００３８】
演算部１００が線ａ１００でアドレス指定およびロード要求を行った場合、キャッシュメモリ１１０は要求アドレスのデータが登録されているかどうかをチェックし、登録されている場合には登録データを線ｄ１０を通して演算部１００に返答する。登録されていなかった場合には、まずキャッシュメモリ１１０に新しいデータを登録するスペースが残っているかどうか判定する。判定の結果、スペースが残っていれば、アドレス／制御バス１２０に線ａ２０を通して、必要なデータを含む６４Ｂｙｔｅのデータのロード要求を出し、データが戻るのを待つ。スペースが残っていなければ、キャッシュメモリ１１０中のデータを６４Ｂｙｔｅ分無効化してから、アドレス／制御バス１２０に線ａ２０を通して、必要なデータを含む６４Ｂｙｔｅのデータのロード要求を出し、データが戻るのを待つ。６４Ｂｙｔｅのデータがデータバス１３０より線ｄ２０を通して戻ってきた際には、キャッシュメモリ１１０はそのデータを登録するとともに、ｄ１０を通して演算部１００に必要なデータを転送し、ロード動作を終了する。
【００３９】
演算部１００が線ａ１００でアドレス指定およびストア要求を行った場合、キャッシュメモリ１１０は要求アドレスのデータが登録されているかどうかをチェックする。登録されていない場合には、アドレス／制御バス１２０に線ａ２０を通して、演算部１００により指定されたデータへのストア要求を外部に伝えるとともに、線ｄ１０に出されている１ワード分のストアデータを、線ｄ２０を通してデータバス１３０に出し、ストア完了を示すＷＡＣＫが戻るのを待つ。データバス１３０より線ｄ２０を通してＷＡＣＫが戻ってくると、ストア動作を終了する。また、キャッシュメモリ１１０に要求アドレスのデータが登録されている場合には、キャッシュ上のデータを線ｄ１０に出されているストアデータに従い更新した後に、アドレス／制御バス１２０に線ａ２０を通して、演算部１００により指定されたデータへのストア要求を外部に伝えるとともに、線ｄ１０に出されているストアデータを、線ｄ２０を通してデータバス１３０に出し、ストア完了を示すＷＡＣＫが戻るのを待つ。データバス１３０より線ｄ２０を通してＷＡＣＫが戻ってくると、ストア動作を終了する。
【００４０】
アドレス／制御バス１２０側より線ａ２０を通じて、キャッシュメモリ１１０に対して、パージ要求トランザクション＋アドレスを通達すると、キャッシュメモリ１１０は指定されたアドレスより登録しているデータが存在した場合には、そのデータを無効化し、データバス１３０に線ｄ２０を通して無効化終了を示すＬＡＣＫを通達する。外部で指定したアドレスのデータを、キャッシュメモリから無効化する機能は、マルチプロセッサ用スヌープキャッシュメモリを持つＣＰＵが一般的にもつ機能である。
【００４１】
（１．４：第１の実施例におけるローカルグローバル判定回路２０）
ローカルグローバル判定回路２０は、ＣＰＵ１０からの要求が同じユニット０内のローカルメモリ８０に対する要求なのか、他のユニットのローカルメモリ（例えばローカルメモリ１０８０）に対する要求なのかを判定する回路である。
【００４２】
ローカルグローバル判定回路２０は、アドレス／制御バス１２０にＣＰＵ１０からのロード／ストア要求が出ている場合には、その要求がローカル領域ｕ１００に対するものであるか、グローバル領域ｕ１１０に対するものであるかを判別し、判別の結果、ローカル領域ｕ１００に対するものであれば、線ａ６０よりメモリ制御回路３０に要求を出す。また、グローバル領域ｕ１１０に対するものであれば、線ａ７０よりリモートデータバッファ６０に対して要求を出す。
【００４３】
ローカルグローバル判定回路２０の内部構成を図２に示す。アドレス／制御バス１２０より線ａ３０を通して入力されるアドレス／制御情報は、アドレスラッチ２００に登録される。アドレスラッチ２００に登録された情報の内、コマンドを表すフィールドは線ｃ２００を通してトランザクション解釈部２１０に送られる。トランザクション解釈部２１０は、アドレスラッチ２００に登録したアドレス／制御情報が、ロード／ストア要求トランザクションであれば線２２０を１にし、他のトランザクションであれば線２２０を０にする。
【００４４】
また、アドレスラッチ２００に記録した情報の内、アドレス最上位ビット２２０は、０であればローカル領域アクセス、１であればグローバル領域アクセスになる（図８：アドレス空間参照）。アドレス最上位ビットの出力ｃ２１０とトランザクション解釈部の出力ｃ２２０とを入力とするａｎｄ回路２４０の出力線ｃ２４０により、アドレスドライバ２６０は、アドレスラッチ２００が登録しているトランザクションがグローバル領域ｕ１１０へのロードあるいはストアであればアクティブとなり、線ａ７０にトランザクションを出力する。また、アドレス最上位ビットの出力ｃ２１０を反転させたものとトランザクション解釈部の出力ｃ２２０とを入力とするａｎｄ回路２３０の出力線ｃ２３０により、アドレスドライバ２５０は、アドレスラッチ２００が登録しているトランザクションがローカル領域ｕ１００へのロードあるいはストアであればアクティブとなり、線ａ６０にトランザクションを出力する。
【００４５】
（１．５：第１の実施例におけるメモリ制御回路３０）
メモリ制御回路３０は、ＣＰＵ１０よりａ６０、ｄ３０を通じて来るアクセス要求と、ネットワークアダプタ回路７０よりａ１２０、ｄ８０を通じて来る他ユニットのＣＰＵからのアクセス要求とを調停し、それぞれをローカルメモリ８０に出すとともに、ローカルメモリ８０の返答をｄ３０，ｄ８０を通してＣＰＵ１０またはネットワークアダプタ回路７０に戻す回路である。
【００４６】
メモリ制御回路３０の内部構成を図３に示す。ローカルグローバル判定回路２０からのアクセス要求は線ａ６０を通してアドレスラッチ３００に、ネットワークアダプタ回路７０からのアクセス要求は線ａ１２０を通してアドレスラッチ３１０に登録される。登録後、アドレスラッチ３００、３１０は、線ｃ３００、ｃ３１０を通じてプライオリティ管理部３２０にローカルメモリ８０のアクセス権を要求する。プライオリティ管理部３２０は、アドレスラッチ３００からの要求を受けると線ｃ３２０を０に、アドレスラッチ３１０からの要求を受けると線ｃ３２０を１にする。アドレスラッチ３００、３１０の双方から要求があった場合には、時間の早い方を選択する。完全に同時に要求が発生した場合には、アドレスラッチ３００からの要求を受け付ける。
【００４７】
セレクタ３３０は、線ｃ３２０が０の場合には線ａ３００を通して得られるアドレスラッチ３００に登録されたアクセス要求を、線ｃ３２０が１の場合には線ａ３１０を通して得られるアドレスラッチ３１０に登録されたアクセス要求を、線ａ３１０を通して、ローカルメモリ８０に出す。
【００４８】
また、要求アクセスがストアの場合のために、セレクタ３４０も、線ｃ３２０が０の場合にはデータバス１３０から線ｄ３０を通して得られるデータ情報を、線ｃ３２０が１の場合にはネットワークアダプタ回路７０から線ｄ８０を通して得られるデータ情報を、線ｄ８０を通して、ローカルメモリ８０に出す。ローカルメモリ８０からのロードデータもしくはWＡＣＫは、線ｄ６０を通して、セレクタ３４０に入る。セレクタ３４０は、線ｃ３２０が０の場合には線ｄ３００を通して返答検出器３５０に、線ｃ３２０が１の場合には線ｄ３１０を通して返答検出器３６０にロードデータもしくはWＡＣＫを出力する。返答検出器３５０、３６０は、ロードデータもしくはＡＣＫの返答を確認すると、ロードデータもしくはＡＣＫを線ｄ３０またはｄ８０を通して、データバス１３０もしくはネットワークアダプタ回路７０にロードデータもしくはWＡＣＫを出力するとともに、線ｃ３４０、ｃ３５０、ｏｒ回路３７０、線ｃ３３０を通して、プライオリティ管理部３２０に返答受信を通知する。通知を受けたプライオリティ管理部３２０は、データバス１３０もしくはネットワークアダプタ回路７０に与えていたアクセス権を解放し、次のアクセス要求に対応する。
【００４９】
（１．６：第１の実施例におけるユニット番号レジスタ４０）
ユニット番号レジスタ４０は、ＣＰＵ１０がグローバル領域ｕ１１０よりアクセスするローカルメモリの所在するユニットの番号をＣＰＵ１０からのＩ／Ｏ領域ストアにより記憶する。つまり、ＣＰＵ１０がグローバル領域ｕ１１０をアクセスした場合は、ユニット番号レジスタ４０が例えばユニット０を記憶していれば、ユニット０のローカルメモリ８０がアクセスでき、ユニット番号レジスタ４０が例えばユニット１０００を記憶していれば、ユニット１０００のローカルメモリ８０がアクセスできる。
【００５０】
ユニット番号レジスタ４０は、線ａ９０を通じてリモートデータバッファ６０に記憶しているユニット番号を伝える。また、記憶しているユニット番号が変更された場合には、変更を線ｃ１０を通して追出制御回路５０に伝える。
【００５１】
ユニット番号レジスタ４０の内部構成を、図４に示す。アドレス／制御バス１２０に、ユニット番号レジスタ４０に対する書き込み要求が出ると、その要求は線ａ４０を通してアドレスデコーダ４１０に伝えられる。アドレスデコーダ４１０は、ユニット番号レジスタ４０への書き込みと判断すると、線ｃ４００を１にする。
【００５２】
データバス１３０に出た書き込みデータは、線ｄ４０、線ｄ４００を通して比較器４２０に入力される。以前にユニット番号レジスタ４０に書き込まれた値はユニット番号ラッチ４００に記憶されている。このユニット番号ラッチ４００に記憶されている値もまた、線ａ４００を通して比較器４２０に入力される。比較器４２０は、２つの入力を比較し、一致していれば線ｃ４１０を１に、不一致であれば０にする。
【００５３】
よって、ユニット番号レジスタ４０に対し、ユニット番号ラッチ４００に既に登録されている値と同じ値を書き込んだ場合、線ｃ４００と線ｃ４１０との双方が１となり、両者を入力とするａｎｄ回路４５０の出力ｃ４３０も１となり、ＷＡＣＫ生成器４３０により書き込みに対するＷＡＣＫが生成され、線ｄ４０を通してデータバス１３０にＷＡＣＫが出力される。
【００５４】
また、ユニット番号レジスタ４０に対し、ユニット番号ラッチ４００に既に登録されている値と異なる値を書き込んだ場合、線ｃ４００は１、線ｃ４１０は０となり、線ｃ４１０を反転した値と線ｃ４００を入力とするａｎｄ回路４４０の出力ｃ４２０が１となる。データバス１３０から線ｄ４０を通して得られる新しいユニット番号データは、線ｃ４２０が１になったことをトリガとして、ユニット番号ラッチ４００に取り込まれる。同時に、ユニット番号レジスタ４０に対し、既に登録されている値と異なる値を書き込まれたことは、線ｃ１０を通して追出制御回路５０にも伝えられる。（後述するが、ユニット番号レジスタ４０に対し、既に登録されている値と異なる値を書き込まれた場合、書き込みに対するＷＡＣＫは、リモートデータをキャッシュメモリ１１０から追い出す処理を行った後、追出制御回路５０より出力される。）
（１．７：第１の実施例における追出制御回路５０）
追出制御回路５０は、ユニット番号レジスタ４０、リモートデータバッファ６０、ネットワークアダプタ回路７０、およびアドレス／制御バス１２０からの要求に応じて、キャッシュメモリ１１０に対してデータ無効化のトランザクションを発行する回路である。
【００５５】
追出制御回路５０は、ユニット番号レジスタ４０より線ｃ１０を通して、ユニット番号の変更が伝えられた場合、もしくはアドレス／制御バス１２０より線ａ５０を通して追出制御回路５０に対するＩ／Ｏライトを検出した場合、線ｃ２０を通してリモートデータバッファ６０に登録データの無効化とともにタグ情報の返答を要求する。さらに線ａ１００より受け取ったタグ情報に従い線ａ５０、アドレス／制御バス１２０、線２０を通してキャッシュメモリ１１０に登録されたリモートデータの無効化を要求する。ＣＰＵ１０より線ｄ２０、データバス１３０、データ線ｄ９０を通して無効化の終了を示すＬACKが返答されると、そのＬＡＣＫからＡＣＫを生成し、線ｃ２０を通じてリモートデータバッファ６０に返答する。リモートデータバッファより線ａ１００を通じて、登録データ無を示すＷＡＣＫが伝えられると、線ｄ９０，データバス１３０、線ｄ２０を通してＣＰＵ１０までＷＡＣＫを返す（このＷＡＣＫは、ＣＰＵ１０のユニット番号レジスタ４０へのＩ／Ｏライト、もしくは追出制御回路５０へのＩ／Ｏライトに対するＷＡＣＫとなる）。
【００５６】
また、リモートデータバッファ６０より線ａ１００を通して、リモートデータの無効化を要求されると、線ａ５０、アドレス／制御バス１２０、線２０を通してキャッシュメモリ１１０に登録されたリモートデータの無効化を要求する。ＣＰＵ１０より線ｄ２０、データバス１３０、データ線ｄ９０を通して無効化の終了を示すＬＡＣＫが返答されると、そのＬＡＣＫからＡＣＫを生成し、線ｃ２０を通じてリモートデータバッファ６０に返答する。
【００５７】
さらに、ネットワークアダプタ回路７０より線ａ１４０を通して、リモートデータの無効化を要求されると、線ａ５０、アドレス／制御バス１２０、線２０を通してキャッシュメモリ１１０に登録されたリモートデータの無効化を要求する。ＣＰＵ１０より線ｄ２０、データバス１３０、データ線ｄ９０を通して無効化の終了を示すＬACKが返答されると、そのＬＡＣＫからＡＣＫを生成し、線ｃ３０を通じてネットワークアダプタ回路７０に返答する。
【００５８】
追出制御回路５０の内部構成を図５に示す。ユニット番号レジスタ４０より線ｃ１０を通してユニット番号の変更が伝えられた場合、および線ａ５０を通してアドレスデコーダ５００に入力されるアドレス／制御バス１２０の情報が追出制御回路５０に対するＩ／Ｏライトであるとアドレスデコーダ５００により検出された場合、その情報は混成器５１０、線ｃ５１０を通して全無効化命令生成器５２０に伝えられる。全無効化命令生成器５２０は、全リモートデータのリモートデータバッファ６０から無効化およびタグ情報の返答を要求する命令を、線ｃ５２０、混合器５３０、線ｃ２０を通してリモートデータバッファ６０に出す。
【００５９】
リモートデータバッファ６０より、キャッシュメモリ１１０より無効化すべきリモートデータのアドレス情報が線ａ１００を通して返答されてきた場合、もしくは、ネットワークアダプタ回路７０より線ａ１４０を通して無効化すべきリモートデータのアドレス情報が送られてきた場合、その要求はプライオリティ管理部５４０に入力される。プライオリティ管理部５４０は無効化処理権を両者のどちらかに与えるとともに（先行した要求に権利を与える。同時であればリモートデータバッファ６０からの要求に権利を与える。）、権利を与えた要求を線ａ５００に対して要求解釈部５５０に伝える。要求解釈部５５０はキャッシュメモリ１１０からデータの追出要求であることを認識し、線ａ５１０を通して追出命令生成器５６０に追出要求アドレス情報を伝える。情報を受けた追出命令生成器５６０は、追出要求トランザクションを生成し、線ａ５０を通してアドレス／制御バス１２０にトランザクションを出力する。このトランザクションに対してＣＰＵ１０より追出処理の終了を意味するＬＡＣＫがデータバス１３０に出されると、このＬＡＣＫが線ｄ９０を通してＬＡＣＫ認識器５７０に伝わる。ＬＡＣＫ認識器５７０は、線ｃ９０を通してＡＣＫ生成器５８０にＡＣＫの生成を要求する。もし、プライオリティ管理部５４０が、リモートデータバッファ６０からの要求に権利を与えていた場合、ＡＣＫ生成器５８０により生成されたＡＣＫは、線ｃ５５０、切替器５９０（線ｃ５３０により切替を制御）、線ｃ５６０、ＡＣＫ検出器６００、線ｃ５８０、混合器５３０、線ｃ２０を通して、リモートデータバッファ６０に返される（リモートデータバッファ６０はＡＣＫを受けると、次の無効化すべきリモートデータのアドレス情報、または無効化すべきリモートデータがないことを示すＷＡＣＫを、線ａ１００を通して送り返してくる）。もし、プライオリティ管理部５４０が、ネットワークアダプタ回路７０からの要求に権利を与えていた場合、ＡＣＫ生成器５８０により生成されたＡＣＫは、線ｃ５５０、切替器５９０、線ｃ５７０、ＡＣＫ検出器６１０、線ｃ３０を通して、ネットワークアダプタ回路７０に返される。ＡＣＫ検出器６００、６１０は、ＡＣＫを検出すると、線ｃ５９０、ｃ６００、ｏｒ回路６３０、線ｃ６１０を通して、プライオリティ管理部５４０に無効化処理権の解放を要求する。
【００６０】
リモートデータバッファ６０より、無効化すべきリモートデータがないことを示すＷＡＣＫが線ａ１００を通して送られてきた場合には、そのＷＡＣＫはプライオリティ管理部５４０をスルーし、要求解釈部５５０に送られる。要求解釈部５５０はＷＡＣＫを受け、線ｃ６２０を通してＷＡＣＫ生成器６２０に対してＷＡＣＫ生成要求を出す。要求を受けたＷＡＣＫ生成器６２０はＷＡＣＫを線ｄ９０を通して、データバス１３０に出力する。
【００６１】
（１．８：第１の実施例におけるリモートデータバッファ６０）
リモートデータバッファ６０は、ＣＰＵ１０がリモートデータをロードした際にデータを登録するリモートデータ専用のキャッシュメモリである。後述するが、リモートデータバッファ６０と、キャッシュメモリ１１０の間には、包含関係を常に成立させるよう、リモートデータバッファ６０と追出制御回路５０とにより制御を行う。すなわち、キャッシュメモリ１１０に存在するリモートデータは、必ずリモートデータバッファ６０にも記録されているように制御する。なお、本実施例ではリモートデータバッファ６０のデータ管理単位であるラインを、便宜上ブロックと記述する。ブロックのサイズは２５６Ｂｙｔｅとする。
【００６２】
まず、リモートデータバッファ６０のタグの構成を図９に示す。タグは、Ｖビットｕ２００、Ｃ０ビットｕ２４０、Ｃ１ビットｕ２３０、Ｃ２ビットｕ２２０、Ｃ３ビットｕ２１０、ユニット番号ｕ２５０、アドレス情報ｕ２６０から構成する。Ｖビットｕ２００は、そのタグに対応するリモートデータバッファの１ブロック（２５６Ｂｙｔｅ）に有効なデータが入っているかどうかを示すビットであり、Ｃ０ビットｕ２４０、Ｃ１ビットｕ２３０、Ｃ２ビットｕ２２０、Ｃ３ビットｕ２１０はリモートデータバッファ１ブロック２５６Ｂｙｔｅを各６４Ｂｙｔｅ（ＣＰＵ１０のキャッシュメモリ１１０のラインサイズに対応）のサイズに割った場合、それぞれの６４Ｂｙｔｅの単位がＣＰＵ１０のキャッシュメモリ１１０に登録されたかどうかを示す。Ｃ０ビットｕ２４０は最下位の６４Ｂｙｔｅがキャッシュメモリ１１０に登録されたかどうかを示し、Ｃ１ビットｕ２３０は次の６４Ｂｙｔｅ，Ｃ２ビットｕ２２０は３番目の６４Ｂｙｔｅ，Ｃ３ビットｕ２１０は最上位の６４Ｂｙｔｅがキャッシュメモリ１１０に登録されたかどうかを示す。ユニット番号ｕ２５０とアドレス情報ｕ２６０は、そのタグに対応するリモートデータバッファ１ブロック２５６Ｂｙｔｅのデータがどのユニットのどのアドレスから登録したものかを記録するフィールドである。ただしアドレス情報ｕ２６０は、アクセス先ユニットのローカルメモリにおける実アドレスの内、下位８ｂｉｔ（リモートデータバッファ１ブロックが２５６Ｂｙｔｅであるため）を切り捨てた値を記憶する。
【００６３】
図１０を用いて、具体的にタグに情報が登録される様子を説明する。初期状態では、全てのタグ情報を０クリアしておく。もしＣＰＵ１０がユニット番号レジスタ４０にユニット番号１０１１００＝０ｘ２Ｃ（ｕ３３０）をセットして、グローバル領域ｕ１１０内のアドレス１００１００１１１１０１０１１１０１１１０１００００００＝０ｘ９３Ｄ７７４０でロードした（ＣＰＵ１０からのロード要求はキャッシュメモリ１１０のラインサイズ６４Ｂｙｔｅであることから、下位６ｂｉｔは０である）場合には、まずユニット番号ｕ３３０がタグ内のユニット番号ｕ３１０に記録され、また、アクセスアドレス０ｘ９３Ｄ７７４０より０ｘ８００００００を引いた値、０ｘ１３Ｄ７７４０をまず生成し（具体的な処理は、上位の２ｂｉｔ（ｕ３６０）を削除する）、さらに下位８ｂｉｔを削除した値ｕ３４０をタグのアドレス情報ｕ３２０に記録する。また、リモートデータバッファ１ブロック２５６Ｂｙｔｅのデータの内、どの６４ＢｙｔｅのデータがＣＰＵ１０によりアクセスされたのかを示す下位７ビット目と８ビット目の情報ｕ３５０より、下から２番目の６４Ｂｙｔｅがアクセスされたことを認識し、Ｃ１ビットｕ３００を１にする。さらに、ＣＰＵ１０がユニット番号１０１１００＝０ｘ２Ｃ（ｕ４３０）で、グローバル領域ｕ１１０内のアドレス１００１００１１１１０１０１１１０１１１１０００００００＝０ｘ９３Ｄ７７８０でロードした場合には、タグに登録されているユニット番号ｕ４１０、アドレス情報ｕ４２０と、アクセス時のユニット番号ｕ４３０、アドレスの内対応するフィールドｕ４４０と比較し、一致したことを確認することで、ＣＰＵ１０が要求しているリモートデータがこのタグに対応するリモートデータバッファ１ブロック中に登録されていることを認識する。更にアクセスアドレスの下位７ビット目と８ビット目の情報ｕ４５０より、下から３番目の６４Ｂｙｔｅがアクセスされたことを認識し、Ｃ２ビットｕ４００を１にする。
【００６４】
登録したリモートデータバッファ１ブロック分のデータをリプレースしなければならない場合には、リモートデータバッファ６０とキャッシュメモリ１１０の間に包含関係を常に成立ために、タグ情報よりキャッシュメモリ１１０に登録されたデータのアドレスを生成し、キャッシュメモリ１１０に対して登録したリモートデータの無効化を要求する。図１０の例では、タグのアドレス情報ｕ５８０にグローバル領域ｕ１１０を生成するための上位２ｂｉｔ（ｕ５００〜ｕ５１０）を付加し、さらにＣ０ビット〜Ｃ３ビットの内、１であるＣ１ビットｕ５７０、Ｃ２ビットｕ５６０からアドレスｕ５２０、ｕ５５０を生成して付加することで、キャッシュメモリ１１０に対して登録したリモートデータの無効化を要求するアドレスを生成する。この処理が終了した後は、タグのＶビット、Ｃ０ビット〜Ｃ３ビットは０とし、次のタグ情報が記録できる状態にする。
【００６５】
次にリモートデータバッファ６０の動作を説明する。リモートデータバッファ６０にローカルグローバル判定回路２０から線ａ７０を通してリモートロード要求が来た場合に、ユニット番号レジスタ４０の示すアクセス先ユニット番号によりアドレスを拡張した上でタグを引き、要求データがバッファに登録されているかどうか検索する。登録されていれば、線ｄ５０、データバス１３０、線ｄ２０を通して、ＣＰＵ１０にデータを６４Ｂｙｔｅ単位（キャッシュメモリ１１０のラインサイズに対応）で返答する。登録されていなければ、線ａ１１０を通して、ネットワークアダプタ回路７０にリモートロード要求を出す。リモートロードを出す際に、返答データを登録するリモートデータバッファのブロックのタグのＣ０ビット〜Ｃ３ビットで１のものがあれば、キャッシュメモリ１１０より相当するデータの無効化を線ａ１００を通じて追出制御回路５０に要求し、線ｃ２０を通してＡＣＫが返答されるのを待ってから、ネットワークアダプタ回路７０にリモートロード要求を出す。リモートロード要求に対して、ネットワークアダプタ回路７０よりデータ２５６Ｂｙｔｅが線ｄ７０を通して返ってくると、リモートデータバッファは返ってきたデータを登録するとともに、ローカルグローバル判定回路２０より要求のあった６４Ｂｙｔｅのデータを、線ｄ５０、データバス１３０、線ｄ２０を通して、ＣＰＵ１０に返答する。
【００６６】
リモートデータバッファ６０にローカルグローバル判定回路２０から線ａ７０を通してリモートストア要求が来た場合に、ユニット番号レジスタ４０の示すアクセス先ユニット番号によりアドレスを拡張した上でタグを引き、要求データがバッファに登録されているかどうか検索する。登録されていればそのデータを更新した上で、線ａ１１０を通して、ネットワークアダプタ回路７０にリモートストア要求を出す。登録されていなければそのまま、線ａ１１０を通して、ネットワークアダプタ回路７０にリモートストア要求を出す。また、ＣＰＵ１０より線ｄ２０、データバス１３０、線ｄ５０を通じて伝わるリモートストアの１ワードデータを線ｄ７０を通してネットワークアダプタ回路７０に伝達する。ネットワークアダプタ回路７０よりＡＣＫが線ｄ７０を通して返ってくると、リモートデータバッファは、線ｄ５０、データバス１３０、線ｄ２０を通して、ＣＰＵ１０にＡＣＫを返答する。
【００６７】
また、追出制御回路５０より、登録データの無効化およびタグ情報の返答の要求が線ｃ２０を通じて通達された場合には、リモートデータバッファ６０はキャッシュメモリ１１０にも登録したデータをタグを検索して選定し（タグのＣ０ビット〜Ｃ３ビットが１であるものを検索する）、６４Ｂｙｔｅ単位で線ａ１００を通してキャッシュメモリ１１０からの追い出しを要求する。線ｃ２０を通して追出制御回路５０よりＡＣＫが返ってきた後、他にキャッシュメモリ１１０に登録されているリモートデータが存在する場合（タグのＣ０ビット〜Ｃ３ビットが１であるものが存在する場合）には、次の追い出しをａ１００を通して要求し、存在しない場合には、線ａ１００を通じて追出制御回路５０のＷＡＣＫを返す。
【００６８】
リモートデータバッファ６０の内部構成を図６に示す。ローカルグローバル判定回路２０より線ａ７０を通してリモートロード要求があった場合、要求のアドレス情報はアドレスラッチ６５０に記憶されるとともに、線ａ６５０を通してトランザクション解釈部６６０に送られる。トランザクション解釈部６６０は、リモートロードであると認識すると、線ａ６７０を通してアドレス情報を比較器７８０〜８００に出す。比較器７８０〜８００は、タグ８１０〜８３０に記憶されているアドレス情報と比較し、一致した場合には線ｃ７７０〜ｃ７９０を１にする。もし一致するものがあった場合、ｏｒ回路７００、線ｃ７６０を通してトランザクション解釈部６６０に１が伝えるとともに、線ｃ７７０〜ｃ７９０を通して一致ブロックがどれであるかの情報をブロック選択部７１０に伝える。トランザクション解釈部６６０は、一致データの存在を認識すると、線ｃ７４０を通してブロック選択部７１０に一致ブロックをアクティブにするための要求を出すとともに、線ｃ７５０を通してタグ制御部６９０にタグ８１０〜８３０の更新の要求を、線ｃ７２０を通してメモリ制御部７５０にメモリ８４０〜８６０の読み出しの要求を出す。ブロック選択部７１０が線ｃ８１０〜ｃ８３０を利用して一致ブロックを活性化することで、メモリバス７７０、線ｄ６９０を通してメモリ制御部７５０に一致ブロックのメモリ８４０〜８６０の内、ロード要求を受けているキャッシュメモリ１１０のラインサイズ６４Ｂｙｔｅ分の情報がでるとともに、タグ制御部６９０により、タグバス７６０、線ｄ６８０を通して一致ブロックのタグ８１０〜８３０が更新される。トランザクション解釈部６６０がデータラッチ７３０に対して線ｃ７１０を利用し要求することで、メモリ制御部７５０に入ったデータは、線ｄ６６０、ｄ５０を通してデータバス１３０に出力される。
【００６９】
ローカルグローバル判定回路２０からのリモートロード要求に対し、比較器７８０〜８００でもし一致するものがなければ、ｏｒ回路７００、線ｃ７６０を通してトランザクション解釈部６６０に０が伝えられる。この場合、トランザクション解釈部６６０は線ｃ７４０を通してブロック選択部７１０にリプレースするブロックの選択を要求する。ブロック選択部７１０は線ｃ７００よりカウンタ７２０に対してカウントアップ要求を出すとともに、カウンタ７２０より線ｄ６５０を通して現在のカウント値を得る。このカウンタ７２０から得たデータをリプレースのための選択ブロック番号とする（カウンタ７２０の幅は、リモートデータバッファ１１０内のブロック数により決定する）。ブロック番号を得たブロック選択部が線ｃ８１０〜ｃ８３０を利用して選択ブロックを活性化するとともに、線ｃ７５０によりトランザクション解釈部からリプレース要求を受けたタグ制御部６９０が、活性化されたブロックのタグ８１０〜８３０内の情報を受け、タグ情報を、線ａ６６０を通して追出要求部６８０に出力するとともに、活性化されたブロックのタグ８１０〜８３０の情報をリセットする（図１０（ｅ）のようにする）。タグ情報を受けた追出要求部６８０は、図１０（ｄ）のように、キャッシュメモリ１１０より追い出すラインのアドレスを生成し、そのアドレス情報を持って線ａ１００を通して追出制御回路５０にラインの追い出し要求を出す。追出制御回路５０より線ｃ２０を通して、追出終了を示すＡＣＫが返答されると、分離器６７０は、ＡＣＫを線ｃ６７０を通して追出要求部６８０に出力する。ＡＣＫを受けた追出要求部６８０は、まだ追い出し要求をすべきラインが残っている場合には、そのラインのアドレス情報を線ａ１００を通して追出制御回路５０に出す。追い出し要求をすべきラインが残っていない場合には、追出要求部６８０は、リプレースの終了をトランザクション解釈部６６０に線ｃ６９０を通して出力する。出力を受けたトランザクション解釈部６６０は、線ｃ６５０を使い、アドレスラッチ６５０に記憶されたリモートロード要求を線ａ１１０を通してネットワークアダプタ回路７０に出力する。ネットワークアダプタ回路７０より線ｄ７０を通してデータ（２５６Ｂｙｔｅ）が返ってくると、線ｃ７２０を通してトランザクション解釈部６６０から制御されるメモリ制御部７５０は、返答データを線ｄ６９０を通してメモリバス７７０に出す。このデータは、メモリ８４０〜８６０の内、線ｃ８１０〜ｃ８３０により活性化されているメモリに記録される。同時に、ロード要求を受けているキャッシュメモリ１１０のラインサイズ６４Ｂｙｔｅ分のデータは、メモリ制御部７５０、データラッチ７３０、線ｄ５０を通してデータバス１３０に出力される。また、タグ制御部６９０により、タグバス７６０、線ｄ６８０を通して一致ブロックのタグ８１０〜８３０が更新される（６４Ｂｙｔｅデータのキャッシングが記録される）。
【００７０】
ローカルグローバル判定回路２０より線ａ７０を通してリモートストア要求があった場合、要求のアドレス情報はアドレスラッチ６５０に記憶されるとともに、線ａ６５０を通してトランザクション解釈部６６０に送られる。トランザクション解釈部６６０は、リモートストアであると認識すると、線ａ６７０を通してアドレス情報を比較器７８０〜８００に出す。比較器７８０〜８００は、タグ８１０〜８３０に記憶されているアドレス情報と比較し、一致した場合には線ｃ７７０〜ｃ７９０を１にする。もし一致するものがあった場合、ｏｒ回路７００、線ｃ７６０を通してトランザクション解釈部６６０に１が伝えるとともに、線ｃ７７０〜ｃ７９０を通して一致ブロックがどれであるかの情報をブロック選択部７１０に伝える。トランザクション解釈部６６０は、一致データの存在を認識すると、線ｃ７４０を通してブロック選択部７１０に一致ブロックをアクティブにするための要求を出すとともに、線ｃ７２０を通してメモリ制御部７５０にメモリ８４０〜８６０の更新の要求を出す。同時にトランザクション解釈部６６０は、線ｃ７１０を通してデータラッチ７３０を制御することで、データバス１３０から線ｄ５０を通して得られるストアデータがデータラッチ７３０に記録されるとともに、メモリ制御部７５０に通知されるようにする。メモリ制御部７５０は、ブロック選択部７１０が線ｃ８１０〜ｃ８３０を利用して一致ブロックを活性化することで、メモリバス７７０、線ｄ６９０を通してメモリ制御部７５０に一致ブロックのメモリのデータを更新する。また、トランザクション解釈部６６０が、アドレスラッチ６５０に対して線ｃ６５０を、データラッチ７３０に対して線ｃ７１０を利用し要求することで、アドレスラッチ６５０に入ったストア要求は線ａ１１０を通して、データラッチ７３０に入ったデータは線ｄ７０を通して、それぞれネットワークアダプタ回路７０に出される。ストアに対するＷＡＣＫがネットワークアダプタ回路７０より線ｄ７０を通してメモリ制御部７５０に返答されると、そのＷＡＣＫは、線ｄ６６０、データラッチ７３０、線ｄ５０を通して、データバス１３０に出される。
【００７１】
ローカルグローバル判定回路２０からのリモートストア要求に対し、比較器７８０〜８００でもし一致するものがなければ、ｏｒ回路７００、線ｃ７６０を通してトランザクション解釈部６６０に０が伝えられる。トランザクション解釈部６６０は、一致データが存在しないことを認識すると、アドレスラッチ６５０に対して線ｃ６５０を、データラッチ７３０に対して線ｃ７１０を利用し要求することで、アドレスラッチ６５０に入ったストア要求は線ａ１１０を通して、データラッチ７３０に入ったデータは線ｄ７０を通して、それぞれネットワークアダプタ回路７０に出される。ストアに対するＷＡＣＫがネットワークアダプタ回路７０より線ｄ７０を通してメモリ制御部７５０に返答されると、そのＷＡＣＫは、線ｄ６６０、データラッチ７３０、線ｄ５０を通して、データバス１３０に出される。
【００７２】
追出制御回路５０より、線ｃ２０を通して全無効化命令がリモートデータに対して出されると、分離器６７０、線ｃ６６０を通して、トランザクション解釈部６６０に全無効化命令が伝わる。トランザクション解釈部６６０は、全無効化命令を受けて、線ｃ７４０を通してブロック選択部７１０にブロック選択要求を出す。ブロック選択要求を受けたブロック選択部７１０は、線ｃ７００を通してカウンタ７２０にカウントアップを要求するとともに、カウンタの値７２０を線ｄ６５０から得て、その値を選択ブロックの番号とする。選択されたブロックに対応する線ｃ８１０〜線ｃ８３０を１にして、タグ８１０〜８３０のうち１つをアクティブにする。アクティブになったタグの情報は、タグバス７６０、線ｄ６８０を通して、タグ制御部６９０（線ｃ７５０を通して、トランザクション解釈部６６０に制御されている）に伝わるとともに、タグ制御部６９０によりリセットされる（図１０（ｅ）のようになる）。タグ制御部６９０は、タグ情報を線ａ６６０を通して追出要求部６８０に伝える。タグ情報を受けた追出要求部６８０は、図１０（ｄ）のように、キャッシュメモリ１１０より追い出すラインのアドレスを生成し、そのアドレス情報を持って線ａ１００を通して追出制御回路５０にラインの追い出し要求を出す。追出制御回路５０より線ｃ２０を通して、追出終了を示すＡＣＫが返答されると、分離器６７０は、ＡＣＫを線ｃ６７０を通して追出要求部６８０に出力する。ＡＣＫを受けた追出要求部６８０は、まだ追い出し要求をすべきラインが残っている場合には、そのラインのアドレス情報を線ａ１００を通して追出制御回路５０に出す。追い出し要求をすべきラインが残っていない場合には、追出要求部６８０は、無効化の終了をトランザクション解釈部６６０に線ｃ６９０を通して出力する。出力を受けたトランザクション解釈部６６０は、再び線ｃ７４０を通してブロック選択部７１０にブロック選択要求を出す。ブロック選択要求を受けたブロック選択部７１０は、線ｃ７００を通してカウンタ７２０にカウントアップを要求するとともに、カウンタの値７２０を線ｄ６５０から得て、その値を選択ブロックの番号とする（これにより、前回処理したのとは別のブロックについて無効化処理を行うことになる）。以下は、前記と同じ手順で順々に各ブロックについて無効化処理を進める。追出要求部６８０は、全てのブロックについて無効化処理が終わったと判断すると、線ａ１００を通してＷＡＣＫを追出制御回路５０に出力する。
【００７３】
（１．９：第１の実施例におけるネットワークアダプタ回路７０）
ネットワークアダプタ回路７０は、ネットワーク１００００とユニット０との接続回路である。
【００７４】
ネットワークアダプタ回路７０は、リモートデータバッファ６０から線ａ１１０、線ｄ７０を通して来るリモートデータロード要求（２５６Ｂｙｔｅ）またはリモートデータストア要求（１ワード）に対して、リモートアクセス要求パケットを生成し、線ｐ１０を通してネットワーク１００００に出す。
【００７５】
また、ネットワークアダプタ回路７０は、ネットワーク１００００より線ｐ２０を通してリモートアクセス返答パケットを受け取ると、パケットを解釈し、線ｄ７０を通してリモートデータバッファ６０に返答データ（２５６Ｂｙｔｅ）またはストアに対するＷＡＣＫを伝える。
【００７６】
さらに、ネットワークアダプタ回路７０は、ネットワーク１００００より線ｐ２０を通して、リモートアクセス要求パケットを受け取ると、これを解釈し、リモートロード要求の場合には、２５６Ｂｙｔｅデータのロード要求を線ａ１２０、線ｄ８０を通してメモリ制御回路３０に出す。また、リモートストア要求の場合には、キャッシュメモリ１１０からのストアワードの無効化を線ａ１４０を通して追出制御回路５０に対して行い、追出制御回路５０から無効化終了を示すＡＣＫが返答されてから、１ワードのストア要求を線ａ１２０、線ｄ８０を通してメモリ制御回路３０に出す。アクセス要求に対する返答がメモリ制御回路３０より線ｄ８０を通して戻ってくると、リモートアクセス返答パケットを生成し、線ｐ１０を通してネットワーク１００００に出す。
【００７７】
ネットワークアダプタ回路７０の内部構成を図７に示す。リモートデータバッファ６０からのリモートロードまたはストア要求を線ａ１１０を通して受けると（ストアの場合には線ｄ７０のストアデータも受ける）、その要求をアクセス要求ラッチ９００に記録する。アクセス要求ラッチ９００は、パケット生成部９５０の使用権をプライオリティ制御部９２０まで線ｃ９００を通して要求する。使用権が取れたことが線ｃ９１０を通して通知されると、アクセス要求ラッチ９００は、リモートアクセス要求を線ａ９００、セレクタ９１０（線ｃ９６０によりプライオリティ制御部９２０に制御される）、線ａ９１０を通して、パケット生成部９５０まで、リモートアクセス要求パケットの生成を要求する。パケット生成部９５０で生成されたリモートアクセス要求パケットは、線ｐ１０を通して、ネットワーク１００００まで送信される。パケット生成部９５０は、パケットを出力すると、線ｃ９４０を通してプライオリティ制御部９２０に処理終了を伝え、パケット生成部９５０の使用権の解放する。
【００７８】
ネットワーク１００００より、線ｐ２０を通してパケット解釈部９６０がリモートアクセス返答パケットを受信すると、パケット解釈部は、パケット情報からリモートロードデータ（２５６Ｂｙｔｅ）またはＷＡＣＫを切出し、線ｄ７０を通して、リモートデータバッファ６０に返答する。
【００７９】
ネットワーク１００００より、線ｐ２０を通してパケット解釈部９６０がリモートアクセス要求パケットを受信すると、パケット解釈部９６０はリモートアクセス要求パケットからアクセス要求情報を切出した後、線ａ９２０を通してアクセス要求情報を出し、リモートアクセスラッチ９７０にアクセス要求情報を記録する。リモートアクセスラッチ９７０はアクセス要求を記録すると、パケット生成部９５０の使用権をプライオリティ制御部９２０まで線ｃ９２０を通して要求する。使用権が取れたことが線ｃ９３０を通して通知されると、リモートアクセスラッチ９７０に記録したアクセス要求がロードの場合には線ａ９３０を通してメモリアクセス部９３０にリモートロード要求（２５６Ｂｙｔｅ）を出す。リモートロード要求を受けたメモリアクセス部９３０は、線ａ１２０を通してローカルメモリ８０に２５６Ｂｙｔｅロード要求を出す。ローカルメモリ８０からデータ２５６Ｂｙｔｅが線ｄ９０を通してメモリアクセス部９３０に戻ってくると、そのデータは線ｄ９００、セレクタ９１０、線ａ９１０を通して、パケット生成部９５０まで伝えられる。パケット生成部９５０はデータ２５６Ｂｙｔｅをもとにリモートアクセス返答パケットを生成し、線ｐ１０を通して、ネットワーク１００００まで送信する。パケット生成部９５０は、パケットを出力すると、線ｃ９４０を通してプライオリティ制御部９２０に処理終了を伝え、パケット生成部９５０の使用権の解放する。リモートアクセスラッチ９７０に記録したアクセス要求がストアの場合には線ａ９４０を通してリモートストアラッチ９４０にストア要求を出すとともに、追出要求部９９０にキャッシュメモリ１１０からストアデータの追出しを要求する。要求を受けた追出要求部９９０は、線ａ１４０を通して追出制御回路５０に追い出し要求を出す。追出制御回路５０より線ｃ３０を通して追い出し処理の終了を意味するＡＣＫが返答されると、ＡＣＫ認識部９８０はＡＣＫを認識し、リモートストアラッチ９４０に線９５０を通じてストア要求のメモリアクセス部９３０への出力を要求する。要求を受けたリモートストアラッチ９４０は、線ａ９５０を通し、メモリアクセス部９３０にリモートストア要求（１ワード）を出す。リモートロード要求を受けたメモリアクセス部９３０は、線ａ１２０を通してローカルメモリ８０に１ワードストア要求を出す。ローカルメモリ８０からＷＡＣＫが線ｄ９０を通してメモリアクセス部９３０に戻ってくると、そのＷＡＣＫは線ｄ９００、セレクタ９１０、線ａ９１０を通して、パケット生成部９５０まで伝えられる。パケット生成部９５０はＷＡＣＫからリモートアクセス返答パケットを生成し、線ｐ１０を通して、ネットワーク１００００まで送信する。パケット生成部９５０は、パケットを出力すると、線ｃ９４０を通してプライオリティ制御部９２０に処理終了を伝え、パケット生成部９５０の使用権の解放する。
【００８０】
（１．１０：第１の実施例におけるローカルメモリ８０）
ローカルメモリ８０は、各ユニットに分割分散された共有メモリであり、同じユニット０内のＣＰＵ１０からもアクセスできるばかりか、他のユニットのＣＰＵ（例えばユニット１０００のＣＰＵ１０１０）からもアクセスできる。
【００８１】
ローカルメモリ８０は、アドレス／制御線ａ１３０よりアドレスが指定され、かつロード要求が指定されると、対応するアドレスのデータを線ｄ６０を通して返答する。また、アドレス／制御線ａ１３０よりアドレスが指定され、かつストア要求が指定されると、線ｄ６０のデータを対応するアドレスに記録し、ストアが終了した後に線ｄ６０を通してストア終了のＷＡＣＫを返答する。
【００８２】
（１．１１：第１の実施例の動作）
図１中、ＣＰＵ１０がローカル領域ｕ１００よりユニット０のローカルメモリ８０のデータをロードまたはストアする場合、グローバル領域ｕ１１０よりユニット１０００のローカルメモリ１０８０のデータをロードまたはストアする場合、ユニット番号レジスタ４０の値を更新した場合、および追出制御回路５０にリモートデータ全無効化を指示した場合の動作について説明する。
【００８３】
（１．１１．１：ＣＰＵ１０がユニット０のローカルメモリ８０のデータをロードした場合）
第１に、ＣＰＵ１０の演算部１００が要求したデータがキャッシュメモリ１１０に存在した場合について説明する。
【００８４】
線ａ１０よりローカル領域ｕ１００内のデータに対するロード要求がキャッシュメモリ１１０に出されると、キャッシュメモリ１１０は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ１１０内にデータが存在した場合には、線ｄ１０を通してキャッシュメモリ１１０より演算部１００にデータが返答される。  第２に、ＣＰＵ１０の演算部１００が要求したデータがキャッシュメモリ１１０に存在しない場合について説明する。
【００８５】
線ａ１０よりローカル領域ｕ１００内のデータに対するロード要求がキャッシュメモリ１１０に出されると、キャッシュメモリ１１０は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ１１０内にデータが存在しない場合には、まずキャッシュメモリ１１０に新しいデータを登録するスペースが残っているかどうか判定する。判定の結果、スペースが残っていれば、線ａ３０より演算部１００が要求しているデータを含む６４Ｂｙｔｅ分のデータのロード要求をアドレス／制御バス１２０に出す。スペースが残っていなければ、キャッシュメモリ１１０中のデータを６４Ｂｙｔｅ分無効化してから、線ａ３０より演算部１００が要求しているデータを含む６４Ｂｙｔｅ分のデータのロード要求をアドレス／制御バス１２０に出す。このロード要求は、アドレス／制御バス１２０より線ａ３０を通じてローカルグローバル判定回路２０に伝わる。ローカルグローバル判定回路２０は、ＣＰＵ１０がローカルメモリ８０に対してロードを発行していることを判定し、線ａ６０を通じてメモリ制御回路３０にロード要求を出す。メモリ制御回路３０は、ロード要求を受け、ローカルメモリ８０に対して線ａ１３０を通じてロード要求を出す。ローカルメモリ８０は、ロード要求に対して対応するデータ６４Ｂｙｔｅを線ｄ６０よりメモリ制御回路３０に戻す。戻されたデータは、線ｄ３０，データバス１３０、線ｄ２０を通してキャッシュメモリ１１０に戻る。戻ったデータは６４Ｂｙｔｅ単位でキャッシュメモリ１１０に登録されるとともに、演算部１００が要求した１ワード分のデータは、線ｄ１０を通して演算部１００に返答される。
【００８６】
（１．１１．２：ＣＰＵ１０がユニット０のローカルメモリ８０のデータをストアした場合）
第１に、ＣＰＵ１０の演算部１００が要求したデータがキャッシュメモリ１１０に存在した場合について説明する。
【００８７】
線ａ１０よりローカル領域ｕ１００内のデータに対するストア要求がキャッシュメモリ１１０に出されると、キャッシュメモリ１１０は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ１１０内にデータが存在した場合には、線ｄ１０より伝わるストアデータに基づいてそのデータを更新するとともに、線ａ３０より演算部１００が要求しているストア要求をアドレス／制御バス１２０に、線ｄ２０よりストアデータ１ワード分をデータバス１３０に出す。このストア要求は、アドレス／制御バス１２０より線ａ３０を通じてローカルグローバル判定回路２０に伝わる。ローカルグローバル判定回路２０は、ＣＰＵ１０がローカルメモリ８０に対してストアを発行していることを判定し、線ａ６０を通じてメモリ制御回路３０にストア要求を出す。メモリ制御回路３０は、ストア要求と線ｄ３０を通してデータバス１３０より得られるストアデータ１ワード分を受け、ローカルメモリ８０に対して線ａ１３０を通じてストア要求を出す。ローカルメモリ８０は、ストア要求に対応してデータを更新した後に、ＷＡＣＫを線ｄ６０を通してメモリ制御回路３０に戻す。戻されたＷＡＣＫは、線ｄ３０，データバス１３０、線ｄ２０を通してキャッシュメモリ１１０に戻る。戻ったＷＡＣＫは、線ｄ１０を通して演算部１００に返答される。
【００８８】
第２に、ＣＰＵ１０の演算部１００が要求したデータがキャッシュメモリ１１０に存在しない場合について説明する。
【００８９】
線ａ１０よりローカル領域ｕ１００内のデータに対するストア要求がキャッシュメモリ１１０に出されると、キャッシュメモリ１１０は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ１１０内にデータが存在しない場合には、線ａ３０より演算部１００が要求しているストア要求をアドレス／制御バス１２０に、線ｄ２０よりストアデータ１ワード分をデータバス１３０に出す。このストア要求は、アドレス／制御バス１２０より線ａ３０を通じてローカルグローバル判定回路２０に伝わる。ローカルグローバル判定回路２０は、ＣＰＵ１０がローカルメモリ８０に対してストアを発行していることを判定し、線ａ６０を通じてメモリ制御回路３０にストア要求を出す。メモリ制御回路３０は、ストア要求と線ｄ３０を通してデータバス１３０より得られるストアデータ１ワード分を受け、ローカルメモリ８０に対して線ａ１３０を通じてストア要求を出す。ローカルメモリ８０は、ストア要求に対応してデータを更新した後に、ＷＡＣＫを線ｄ６０を通してメモリ制御回路３０に戻す。戻されたＷＡＣＫは、線ｄ３０，データバス１３０、線ｄ２０を通してキャッシュメモリ１１０に戻る。戻ったＷＡＣＫは、線ｄ１０を通して演算部１００に返答される。
【００９０】
（１．１１．３：ＣＰＵ１０がユニット１０００のローカルメモリ１０８０のデータをロードした場合）
第１に、ＣＰＵ１０の演算部１００が要求したデータがキャッシュメモリ１１０に存在した場合について説明する。
【００９１】
線ａ１０よりローカル領域ｕ１００内のデータに対するロード要求がキャッシュメモリ１１０に出されると、キャッシュメモリ１１０は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ１１０内にデータが存在した場合には、線ｄ１０を通してキャッシュメモリ１１０より演算部１００にデータが返答される。  第２に、ＣＰＵ１０の演算部１００が要求したデータがキャッシュメモリ１１０に存在せず、リモートデータバッファ６０に存在した場合について説明する。
【００９２】
線ａ１０よりローカル領域ｕ１００内のデータに対するロード要求がキャッシュメモリ１１０に出されると、キャッシュメモリ１１０は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ１１０内にデータが存在しない場合には、まずキャッシュメモリ１１０に新しいデータを登録するスペースが残っているかどうか判定する。判定の結果、スペースが残っていれば、線ａ３０より演算部１００が要求しているデータを含む６４Ｂｙｔｅ分のデータのロード要求をアドレス／制御バス１２０に出す。スペースが残っていなければ、キャッシュメモリ１１０中のデータを６４Ｂｙｔｅ分無効化してから、線ａ３０より演算部１００が要求しているデータを含む６４Ｂｙｔｅ分のデータのロード要求をアドレス／制御バス１２０に出す。このロード要求は、アドレス／制御バス１２０より線ａ３０を通じてローカルグローバル判定回路２０に伝わる。ローカルグローバル判定回路２０は、ＣＰＵ１０がグローバル領域ｕ１１０に対してロードを発行していることを判定し、線ａ７０を通じてリモートデータバッファ６０にロード要求を出す。リモートデータバッファ６０は、ロード要求を受け、線ａ９０を通して得られるユニット番号レジスタ４０の値とともに、バッファリングデータを検索する。検索した結果、要求リモートデータをバッファリングしてることがわかれば、ＣＰＵ１０が要求しているデータ６４Ｂｙｔｅは線ｄ５０、データバス１３０、線ｄ２０を通してキャッシュメモリ１１０に返答されるとともに、リモートデータバッファのタグに要求データのキャッシュメモリ１１０への登録が記録される。戻ったデータは６４Ｂｙｔｅ単位でキャッシュメモリ１１０に登録されるとともに、演算部１００が要求した１ワード分のデータは、線ｄ１０を通して演算部１００に返答される。
【００９３】
第３に、ＣＰＵ１０の演算部１００が要求したデータがキャッシュメモリ１１０に存在せず、リモートデータバッファ６０に存在しない場合について説明する。
【００９４】
線ａ１０よりローカル領域ｕ１００内のデータに対するロード要求がキャッシュメモリ１１０に出されると、キャッシュメモリ１１０は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ１１０内にデータが存在しない場合には、まずキャッシュメモリ１１０に新しいデータを登録するスペースが残っているかどうか判定する。判定の結果、スペースが残っていれば、線ａ３０より演算部１００が要求しているデータを含む６４Ｂｙｔｅ分のデータのロード要求をアドレス／制御バス１２０に出す。スペースが残っていなければ、キャッシュメモリ１１０中のデータを６４Ｂｙｔｅ分無効化してから、線ａ３０より演算部１００が要求しているデータを含む６４Ｂｙｔｅ分のデータのロード要求をアドレス／制御バス１２０に出す。このロード要求は、アドレス／制御バス１２０より線ａ３０を通じてローカルグローバル判定回路２０に伝わる。ローカルグローバル判定回路２０は、ＣＰＵ１０がグローバル領域ｕ１１０に対してロードを発行していることを判定し、線ａ７０を通じてリモートデータバッファ６０にロード要求を出す。リモートデータバッファ６０は、ロード要求を受け、線ａ９０を通して得られるユニット番号レジスタ４０の値とともに、バッファリングデータを検索する。検索した結果、要求リモートデータをバッファリングしていないことがわかれば、リモートデータバッファ６０の１ブロックを無効化する。この際に無効化するブロックのデータの内、キャッシュメモリ１１０にも登録されているデータをタグのＣ０ビットｕ２４０〜Ｃ３ビットｕ２１０より検索し、検索した結果、無効化しなければならないデータの無効化を線ａ１００を通して追出制御回路５０に要求する。追出制御回路５０は要求に従い、線ａ５０、アドレス／制御バス１２０、線ａ２０を通してキャッシュメモリ１１０にデータの無効化要求を出す。キャッシュメモリ１１０は無効化に対応すると、線ｄ２０，データバス１３０、線ｄ９０を通して、追出制御回路５０にＬＡＣＫを出力する。追出制御回路はＬＡＣＫを受けると、線ｃ２０を通してリモートデータバッファ６０にＡＣＫを返答する。リモートデータバッファ６０は、無効化したいデータが存在する間、データの無効化を線ａ１００を通して追出制御回路５０に要求し、線ｃ２０からのＡＣＫを待つ動作を繰り返す。以上の処理により、リモートデータバッファ６０の１ブロックの無効化が完了すると、リモートデータバッファ６０は線ａ１１０を通してネットワークアダプタ回路７０にリモートロード要求を出す。この際に付加するロード要求アドレスは、上位にアクセス先ユニット１０００のユニット番号、下位にアクセス先ユニット１０００におけるローカルメモリ１０８０の実アドレスである。ネットワークアダプタ回路は、要求に従いリモートロード要求パケットを作成し、線ｐ１０を通してネットワークにパケットを出力する。ネットワークはパケットに付加されたアクセス先ユニット１０００のユニット番号に従い、パケットをユニット１０００のネットワークアダプタ回路１０７０に、線ｐ１０２０を通して伝える。パケットを受けたネットワークアダプタ回路１０７０は、パケットを解釈し、ユニット１０からのリモートロード要求であることを認識すると、線ａ１１２０を通して、メモリ制御回路１０３０にロード要求を出す。メモリ制御回路１０３０はロード要求に従い、ローカルメモリ１０８０に対して線ａ１３０を通してロード要求を発行する。ローカルメモリ１０８０は、ロード要求に対してメモリ制御回路１０３０にデータ２５６Ｂｙｔｅ分を返答する。返答されたデータは、線ｄ１０８０を通してネットワークアダプタ回路１０７０に戻る。ネットワークアダプタ回路１０７０は戻ったデータからリモートロード返答パケットを作成し、線ｐ１０１０、ネットワーク１００００、線ｐ２０を通して、ネットワークアダプタ回路７０にデータを戻す。戻ったデータは、線ｄ７０を通してリモートデータバッファ６０に２５６Ｂｙｔｅ分登録する。また、ＣＰＵ１０が要求しているデータ６４Ｂｙｔｅは線ｄ５０、データバス１３０、線ｄ２０を通してキャッシュメモリ１１０に返答されるとともに、リモートデータバッファのタグに要求データのキャッシュメモリ１１０への登録が記録される。戻ったデータは６４Ｂｙｔｅ単位でキャッシュメモリ１１０に登録されるとともに、演算部１００が要求した１ワード分のデータは、線ｄ１０を通して演算部１００に返答される。
【００９５】
（１．１１．４：ＣＰＵ１０がユニット１０００のローカルメモリ１０８０のデータをストアした場合）
第１に、ＣＰＵ１０の演算部１００が要求したデータがキャッシュメモリ１１０に存在した場合について説明する。
【００９６】
線ａ１０よりローカル領域ｕ１００内のデータに対するストア要求がキャッシュメモリ１１０に出されると、キャッシュメモリ１１０は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ１１０内にデータが存在する場合には、線ｄ１０より得られるストアデータに従い登録データを更新するとともに、線ａ３０より演算部１００が要求しているストア要求をアドレス／制御バス１２０に、線ｄ２０よりストアデータ１ワード分をデータバス１３０に出す。このストア要求は、アドレス／制御バス１２０より線ａ３０を通じてローカルグローバル判定回路２０に伝わる。ローカルグローバル判定回路２０は、ＣＰＵ１０がグローバル領域ｕ１１０に対してストアを発行していることを判定し、線ａ７０を通じてリモートデータバッファ６０にストア要求を出す。リモートデータバッファ６０は、ストア要求と線ｄ５０を通してデータバス１３０より得られるストアデータ１ワード分を受け、線ａ９０を通して得られるユニット番号レジスタ４０の値とともに、バッファリングデータを検索する。検索した結果、要求リモートデータをバッファリングしていることが分かれば、リモートデータバッファ６０はバッファリングデータを更新した後にネットワークアダプタ回路７０に線ａ１１０を通してリモートストア要求を、線ｄ９０を通してリモートストアデータ１ワード分を出す。この際に付加するストア要求アドレスは、上位にアクセス先ユニット１０００のユニット番号、下位にアクセス先ユニット１０００におけるローカルメモリ１０８０の実アドレスである。ネットワークアダプタ回路は、要求に従いリモートストア要求パケットを作成し、線ｐ１０を通してネットワークにパケットを出力する。ネットワークはパケットに付加されたアクセス先ユニット１０００のユニット番号に従い、パケットをユニット１０００のネットワークアダプタ回路１０７０に、線ｐ１０２０を通して伝える。パケットを受けたネットワークアダプタ回路１０７０は、パケットを解釈し、ユニット１０からのリモートストア要求であることを認識すると、まず線ａ１１４０を通して追出制御回路１０５０にストアデータを含むラインのキャッシュメモリ１１１０からの追い出しを要求する。要求を受けた追出制御回路１０５０は線ａ１０５０、アドレス／制御バス１１２０、線ａ１０２０を通して、ストアされるデータのキャッシュメモリ１１１０からの無効化を要求する。要求を受けたキャッシュメモリ１１１０は、無効化要求されたデータが登録されているかどうか検索し、存在した場合には無効化処理後、存在しない場合には検索直後に線ｄ１０２０、データバス１１３０、線ｄ１０９０を通して追出制御回路１０５０にＬＡＣＫを返答する。追出制御回路１０５０はＬＡＣＫを受けると、線ｃ１０３０を通してネットワークアダプタ回路１０７０にＡＣＫを返答する。ネットワークアダプタ回路はＡＣＫを受けると、線ａ１１２０、線ｄ１０８０を通して、メモリ制御回路１０３０にストア要求を出す。メモリ制御回路１０３０はストア要求に従い、ローカルメモリ１０８０に対して線ａ１３０、線ｄ１０６０を通してストア要求を発行する。ローカルメモリ１０８０は、ストア要求に対してＷＡＣＫを返答する。返答されたＷＡＣＫは、線ｄ１０８０を通してネットワークアダプタ回路１０７０に戻る。ネットワークアダプタ回路１０７０は戻ったＷＡＣＫからリモートロード返答パケットを作成し、線ｐ１０１０、ネットワーク１００００、線ｐ２０を通して、ネットワークアダプタ回路７０にＷＡＣＫを戻す。戻ったＷＡＣＫは、線ｄ７０、リモートデータバッファ６０、線ｄ５０、データバス１３０、線ｄ２０を通してキャッシュメモリ１１０に返答されるとともに、線ｄ１０を通して演算部１００に返答される。
【００９７】
第２に、ＣＰＵ１０の演算部１００が要求したデータがキャッシュメモリ１１０に存在せず、リモートデータバッファ６０に存在した場合について説明する。
【００９８】
線ａ１０よりローカル領域ｕ１００内のデータに対するストア要求がキャッシュメモリ１１０に出されると、キャッシュメモリ１１０は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ１１０内にデータが存在しない場合には、線ａ３０より演算部１００が要求しているストア要求をアドレス／制御バス１２０に、線ｄ２０よりストアデータ１ワード分をデータバス１３０に出す。このストア要求は、アドレス／制御バス１２０より線ａ３０を通じてローカルグローバル判定回路２０に伝わる。ローカルグローバル判定回路２０は、ＣＰＵ１０がグローバル領域ｕ１１０に対してストアを発行していることを判定し、線ａ７０を通じてリモートデータバッファ６０にストア要求を出す。リモートデータバッファ６０は、ストア要求と線ｄ５０を通してデータバス１３０より得られるストアデータ１ワード分を受け、線ａ９０を通して得られるユニット番号レジスタ４０の値とともに、バッファリングデータを検索する。検索した結果、要求リモートデータをバッファリングしていることが分かれば、リモートデータバッファ６０はバッファリングデータを更新した後にネットワークアダプタ回路７０に線ａ１１０を通してリモートストア要求を、線ｄ９０を通してリモートストアデータ１ワード分を出す。この際に付加するストア要求アドレスは、上位にアクセス先ユニット１０００のユニット番号、下位にアクセス先ユニット１０００におけるローカルメモリ１０８０の実アドレスである。ネットワークアダプタ回路は、要求に従いリモートストア要求パケットを作成し、線ｐ１０を通してネットワークにパケットを出力する。ネットワークはパケットに付加されたアクセス先ユニット１０００のユニット番号に従い、パケットをユニット１０００のネットワークアダプタ回路１０７０に、線ｐ１０２０を通して伝える。パケットを受けたネットワークアダプタ回路１０７０は、パケットを解釈し、ユニット１０からのリモートストア要求であることを認識すると、まず線ａ１１４０を通して追出制御回路１０５０にストアデータを含むラインのキャッシュメモリ１１１０からの追い出しを要求する。要求を受けた追出制御回路１０５０は線ａ１０５０、アドレス／制御バス１１２０、線ａ１０２０を通して、ストアされるデータのキャッシュメモリ１１１０からの無効化を要求する。要求を受けたキャッシュメモリ１１１０は、無効化要求されたデータが登録されているかどうか検索し、存在した場合には無効化処理後、存在しない場合には検索直後に線ｄ１０２０、データバス１１３０、線ｄ１０９０を通して追出制御回路１０５０にＬＡＣＫを返答する。追出制御回路１０５０はＬＡＣＫを受けると、線ｃ１０３０を通してネットワークアダプタ回路１０７０にＡＣＫを返答する。ネットワークアダプタ回路はＡＣＫを受けると、線ａ１１２０、線ｄ１０８０を通して、メモリ制御回路１０３０にストア要求を出す。メモリ制御回路１０３０はストア要求に従い、ローカルメモリ１０８０に対して線ａ１３０、線ｄ１０６０を通してストア要求を発行する。ローカルメモリ１０８０は、ストア要求に対してＷＡＣＫを返答する。返答されたＷＡＣＫは、線ｄ１０８０を通してネットワークアダプタ回路１０７０に戻る。ネットワークアダプタ回路１０７０は戻ったＷＡＣＫからリモートロード返答パケットを作成し、線ｐ１０１０、ネットワーク１００００、線ｐ２０を通して、ネットワークアダプタ回路７０にＷＡＣＫを戻す。戻ったＷＡＣＫは、線ｄ７０、リモートデータバッファ６０、線ｄ５０、データバス１３０、線ｄ２０を通してキャッシュメモリ１１０に返答されるとともに、線ｄ１０を通して演算部１００に返答される。
【００９９】
第３に、ＣＰＵ１０の演算部１００が要求したデータがキャッシュメモリ１１０に存在せず、リモートデータバッファ６０に存在しない場合について説明する。
【０１００】
線ａ１０よりローカル領域ｕ１００内のデータに対するストア要求がキャッシュメモリ１１０に出されると、キャッシュメモリ１１０は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ１１０内にデータが存在しない場合には、線ａ３０より演算部１００が要求しているストア要求をアドレス／制御バス１２０に、線ｄ２０よりストアデータ１ワード分をデータバス１３０に出す。このストア要求は、アドレス／制御バス１２０より線ａ３０を通じてローカルグローバル判定回路２０に伝わる。ローカルグローバル判定回路２０は、ＣＰＵ１０がグローバル領域ｕ１１０に対してストアを発行していることを判定し、線ａ７０を通じてリモートデータバッファ６０にストア要求を出す。リモートデータバッファ６０は、ストア要求と線ｄ５０を通してデータバス１３０より得られるストアデータ１ワード分を受け、線ａ９０を通して得られるユニット番号レジスタ４０の値とともに、バッファリングデータを検索する。検索した結果、要求リモートデータをバッファリングしていないことがわかれば、リモートデータバッファ６０はネットワークアダプタ回路７０に線ａ１１０を通してリモートストア要求を、線ｄ９０を通してリモートストアデータ１ワード分を出す。この際に付加するストア要求アドレスは、上位にアクセス先ユニット１０００のユニット番号、下位にアクセス先ユニット１０００におけるローカルメモリ１０８０の実アドレスである。ネットワークアダプタ回路は、要求に従いリモートストア要求パケットを作成し、線ｐ１０を通してネットワークにパケットを出力する。ネットワークはパケットに付加されたアクセス先ユニット１０００のユニット番号に従い、パケットをユニット１０００のネットワークアダプタ回路１０７０に、線ｐ１０２０を通して伝える。パケットを受けたネットワークアダプタ回路１０７０は、パケットを解釈し、ユニット１０からのリモートストア要求であることを認識すると、まず線ａ１１４０を通して追出制御回路１０５０にストアデータを含むラインのキャッシュメモリ１１１０からの追い出しを要求する。要求を受けた追出制御回路１０５０は線ａ１０５０、アドレス／制御バス１１２０、線ａ１０２０を通して、ストアされるデータのキャッシュメモリ１１１０からの無効化を要求する。要求を受けたキャッシュメモリ１１１０は、無効化要求されたデータが登録されているかどうか検索し、存在した場合には無効化処理後、存在しない場合には検索直後に線ｄ１０２０、データバス１１３０、線ｄ１０９０を通して追出制御回路１０５０にＬＡＣＫを返答する。追出制御回路１０５０はＬＡＣＫを受けると、線ｃ１０３０を通してネットワークアダプタ回路１０７０にＡＣＫを返答する。ネットワークアダプタ回路はＡＣＫを受けると、線ａ１１２０、線ｄ１０８０を通して、メモリ制御回路１０３０にストア要求を出す。メモリ制御回路１０３０はストア要求に従い、ローカルメモリ１０８０に対して線ａ１３０、線ｄ１０６０を通してストア要求を発行する。ローカルメモリ１０８０は、ストア要求に対してＷＡＣＫを返答する。返答されたＷＡＣＫは、線ｄ１０８０を通してネットワークアダプタ回路１０７０に戻る。ネットワークアダプタ回路１０７０は戻ったＷＡＣＫからリモートロード返答パケットを作成し、線ｐ１０１０、ネットワーク１００００、線ｐ２０を通して、ネットワークアダプタ回路７０にＷＡＣＫを戻す。戻ったＷＡＣＫは、線ｄ７０、リモートデータバッファ６０、線ｄ５０、データバス１３０、線ｄ２０を通してキャッシュメモリ１１０に返答されるとともに、線ｄ１０を通して演算部１００に返答される。
【０１０１】
（１．１１．５：ＣＰＵ１０がユニット番号レジスタ４０にストアした場合）Ｉ／Ｏ領域に用意したユニット番号レジスタ４０に対するストア要求が線ａ１０、データ１ワードが線ｄ１０より出されると、キャッシュメモリ１１０をパスして、線ａ３０よりストア要求をアドレス／制御バス１２０に、線ｄ２０よりストアデータ１ワード分をデータバス１３０に出る。このストア要求は、アドレス／制御バス１２０より線ａ４０を通じてユニット番号レジスタ４０に伝わる。ユニット番号レジスタ４０は、ＣＰＵ１０がユニット番号レジスタ４０に対してストアを発行していることを判定し、線ｄ４０よりストアデータを受け取る。受け取ったデータが以前に登録されていたデータと同じかどうか判定し、同じである場合には、ストア要求に対して線ｄ４０、データバス１３０、線ｄ２０、線ｄ１０を通してＷＡＣＫを返答する。同じでない場合には、ユニット番号レジスタは登録データを更新するとともに、線ｃ１０より追出制御回路５０に対してリモートデータ一括無効化要求を出す。リモートデータ一括無効化要求を受けた追出制御回路５０は、リモートデータバッファ６０に対して無効化すべきリモートデータのアドレス要求を線ｃ２０を通して出す。リモートデータバッファ６０は、タグのＣ０〜Ｃ３ビットが１であるブロックを検索し、キャッシュメモリ１１０にリモートデータバッファ６０から登録されたデータのアドレスを、タグのＣ０〜Ｃ３ビットの情報を基に、線ａ１００を通して追出制御回路５０に出す（この際に無効化要求を出したアドレスに対応するＣ０〜Ｃ３ビットは０クリアする）。アドレスをうけた追出制御回路５０は、線ａ５０、アドレス／制御バス１２０、線ａ２０を通してキャッシュメモリ１１０に登録データの無効化を要求する。要求を受けたキャッシュメモリ１１０は、要求データがキャッシュメモリに登録されているかどうか検索し、登録されている場合には無効化処理後、登録されていなければ検索直後に、線ｄ２０、データバス１３０、線ｄ９０を通して、追出制御回路５０にＬＡＣＫを出す。ＬＡＣＫを受けた追出制御回路５０は、線ｃ２０を通してリモートデータバッファ６０にＡＣＫを出力する。ＡＣＫを受けたリモートデータバッファは、まだＣ０〜Ｃ３ビットが１であるものが存在するかどうかを検索し、存在する限りキャッシュメモリ１１０にリモートデータバッファ６０から登録されたデータのアドレスを、タグのＣ０〜Ｃ３ビットの情報を基に、線ａ１００を通して追出制御回路５０に出し、追出制御回路５０によるキャッシュメモリ１１０からのリモートデータの無効化処理を続ける。Ｃ０〜Ｃ３ビットが１であるデータが存在しなくなると、リモートデータバッファ６０は、線ａ１００を通して追出制御回路５０にＷＡＣＫを出力する。ＷＡＣＫを受けた追出制御回路は、線ｄ９０，データバス１３０、線ｄ２０、線ｄ１０を通してＷＡＣＫを返答する。
【０１０２】
（１．１１．６：ＣＰＵ１０が追出制御回路５０にリモートデータ一括無効化要求のストアした場合）
Ｉ／Ｏ領域に用意した追出制御回路５０に対するリモートデータ一括無効化要求のストアが線ａ１０、データ１ワードが線ｄ１０より出されると、キャッシュメモリ１１０をパスして、線ａ３０よりストア要求をアドレス／制御バス１２０に、線ｄ２０よりストアデータ１ワード分をデータバス１３０に出る。このストア要求は、アドレス／制御バス１２０より線ａ４０を通じて追出制御回路５０に伝わる。リモートデータ一括無効化要求を受けた追出制御回路５０は、リモートデータバッファ６０に対して無効化すべきリモートデータのアドレス要求を線ｃ２０を通して出す。リモートデータバッファ６０は、タグのＣ０〜Ｃ３ビットが１であるブロックを検索し、キャッシュメモリ１１０にリモートデータバッファ６０から登録されたデータのアドレスを、タグのＣ０〜Ｃ３ビットの情報を基に、線ａ１００を通して追出制御回路５０に出す（この際に無効化要求を出したアドレスに対応するＣ０〜Ｃ３ビットは０クリアする）。アドレスをうけた追出制御回路５０は、線ａ５０、アドレス／制御バス１２０、線ａ２０を通してキャッシュメモリ１１０に登録データの無効化を要求する。要求を受けたキャッシュメモリ１１０は、要求データがキャッシュメモリに登録されているかどうか検索し、登録されている場合には無効化処理後、登録されていなければ検索直後に、線ｄ２０、データバス１３０、線ｄ９０を通して、追出制御回路５０にＬＡＣＫを出す。ＬＡＣＫを受けた追出制御回路５０は、線ｃ２０を通してリモートデータバッファ６０にＡＣＫを出力する。ＡＣＫを受けたリモートデータバッファは、まだＣ０〜Ｃ３ビットが１であるものが存在するかどうかを検索し、存在する限りキャッシュメモリ１１０にリモートデータバッファ６０から登録されたデータのアドレスを、タグのＣ０〜Ｃ３ビットの情報を基に、線ａ１００を通して追出制御回路５０に出し、追出制御回路５０によるキャッシュメモリ１１０からのリモートデータの無効化処理を続ける。Ｃ０〜Ｃ３ビットが１であるデータが存在しなくなると、リモートデータバッファ６０は、線ａ１００を通して追出制御回路５０にＷＡＣＫを出力する。ＷＡＣＫを受けた追出制御回路は、線ｄ９０，データバス１３０、線ｄ２０、線ｄ１０を通してＷＡＣＫを返答する。
【０１０３】
（２：第２の実施例）
図１〜５、７、１１に本発明の他の実施例を示す。ただし、図１のリモートデータバッファ６０の位置に、図１１に示すリモートデータタグ６５を置く。本実施例は、第１の実施例において、外部に用意したリモートデータ専用キャッシュメモリであるリモートデータバッファ６０の代わりに、キャッシュメモリ１１０に登録されているリモートデータのタグ情報のみ記録しデータ本体は記録しない、データするリモートデータタグ６５を使う例である。本実施例では、ＣＰＵ１０外部にリモートデータ自体を記憶する機構を用意する必要がないので、第１の実施例に比べて物量を削減できる。基本的にその効果、動作は第１の実施例と同じになるので、異なる点のみ以下に説明する。
【０１０４】
（２．１：第２の本実施例におけるリモートデータタグ６５）
リモートデータタグ６５は、キャッシュメモリ１１０に登録されているリモートデータのタグ情報のみ記録し、データ本体は記録しないリモートデータ専用タグである。なお、本実施例ではリモートデータタグ６０のデータ管理単位であるブロックサイズは２５６Ｂｙｔｅとする。リモートデータタグ６５の内容は、第１の実施例のリモートデータバッファ６０のタグ情報と同じである。
【０１０５】
リモートデータバッファ６５の動作を説明する。リモートデータタグ６５にローカルグローバル判定回路２０から線ａ７０を通してリモートロード要求が来た場合に、ユニット番号レジスタ４０の示すアクセス先ユニット番号によりアドレスを拡張した上でタグを引き、要求データがタグに記録されているかどうか検索する。記録されていなければ、返答データを記録するリモートデータタグ（２５６Ｂｙｔｅ分）にＣ０ビット〜Ｃ３ビットで１のものがあれば、キャッシュメモリ１１０より相当するデータの無効化を線ａ１００を通じて追出制御回路５０に要求し、線ｃ２０を通してＡＣＫが返答されるのを待ってから、ネットワークアダプタ回路７０にリモートロード要求を出す。記録されていれば、すぐに線ａ１１０を通してネットワークアダプタ回路７０にリモートロード要求を出す。リモートロード要求に対して、ネットワークアダプタ回路７０よりデータ６４Ｂｙｔｅが線ｄ７０を通して返ってくると、リモートデータタグ６５は返ってきたデータのタグを登録するとともに、ローカルグローバル判定回路２０より要求のあった６４Ｂｙｔｅのデータを、線ｄ５０、データバス１３０、線ｄ２０を通して、ＣＰＵ１０に返答する。
【０１０６】
リモートデータタグ６５にローカルグローバル判定回路２０から線ａ７０を通してリモートストア要求が来た場合に、線ａ１１０を通して、ネットワークアダプタ回路７０にリモートストア要求を出す。また、ＣＰＵ１０より線ｄ２０、データバス１３０、線ｄ５０を通じて伝わるリモートストアの１ワードデータを線ｄ７０を通してネットワークアダプタ回路７０に伝達する。ネットワークアダプタ回路７０よりＡＣＫが線ｄ７０を通して返ってくると、リモートデータタグ６５は、線ｄ５０、データバス１３０、線ｄ２０を通して、ＣＰＵ１０にＡＣＫを返答する。
【０１０７】
また、追出制御回路５０より、登録データの無効化およびタグ情報の返答の要求が線ｃ２０を通じて通達された場合には、リモートデータタグ６５０はキャッシュメモリ１１０に登録したリモートデータをタグを検索して選定し（タグのＣ０ビット〜Ｃ３ビットが１であるものを検索する）、６４Ｂｙｔｅ単位で線ａ１００を通してキャッシュメモリ１１０からの追い出しを要求する。線ｃ２０を通して追出制御回路５０よりＡＣＫが返ってきた後、他にキャッシュメモリ１１０に登録されているリモートデータが存在する場合（タグのＣ０ビット〜Ｃ３ビットが１であるものが存在する場合）には、次の追い出しをａ１００を通して要求し、存在しない場合には、線ａ１００を通じて追出制御回路５０のＷＡＣＫを返す。
【０１０８】
リモートデータタグ６５の内部構成を図１１に示す。内部構成の動作は、第１の実施例リモートデータバッファ６０と同様である（但し、メモリ制御部７５０、メモリバス７７０、メモリ８４０〜８６０が無くなる）。
【０１０９】
（２．２：ネットワークアダプタ回路７０）
基本的に動作、内部構成は第１の実施例と同じであるが、扱うデータの単位が、キャッシュメモリ１１０のラインサイズと同じ６４Ｂｙｔｅとなる。
【０１１０】
ネットワークアダプタ回路７０は、リモートデータバッファ６０から線ａ１１０、線ｄ７０を通して来るリモートデータアクセス要求（６４Ｂｙｔｅ）に対してリモートアクセス要求パケットを生成し、線ｐ１０を通してネットワーク１００００に出す。
【０１１１】
また、ネットワークアダプタ回路７０は、ネットワーク１００００より線ｐ２０を通してリモートアクセス返答パケットを受け取ると、パケットを解釈し、線ｄ７０を通してリモートデータバッファ６０に返答データ（６４Ｂｙｔｅ）を伝える。
【０１１２】
ネットワークアダプタ回路７０は、ネットワーク１００００より線ｐ２０を通して、リモートアクセス要求パケットを受け取ると、要求に従って６４Ｂｙｔｅデータのアクセス要求を線ａ１２０、線ｄ８０を通してメモリ制御回路３０に出す。アクセス要求に対する返答がメモリ制御回路３０より線ｄ８０を通して戻ってくると、リモートアクセス返答パケットを生成し、線ｐ１０を通してネットワーク１００００に出す。
【０１１３】
（２．３：第２の実施例の動作）
（２．３．１：ＣＰＵ１０がユニット１０００のローカルメモリ１０８０のデータをロードした場合）
第１に、ＣＰＵ１０の演算部１００が要求したデータがキャッシュメモリ１１０に存在する場合について説明する。この場合には、第１の実施例と同じである。
【０１１４】
第２に、ＣＰＵ１０の演算部１００が要求したデータがキャッシュメモリ１１０に存在しない場合について説明する。
【０１１５】
線ａ１０よりローカル領域ｕ１００内のデータに対するロード要求がキャッシュメモリ１１０に出されると、キャッシュメモリ１１０は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ１１０内にデータが存在しない場合には、まずキャッシュメモリ１１０に新しいデータを登録するスペースが残っているかどうか判定する。判定の結果、スペースが残っていれば、線ａ３０より演算部１００が要求しているデータを含む６４Ｂｙｔｅ分のデータのロード要求をアドレス／制御バス１２０に出す。スペースが残っていなければ、キャッシュメモリ１１０中のデータを６４Ｂｙｔｅ分無効化してから、線ａ３０より演算部１００が要求しているデータを含む６４Ｂｙｔｅ分のデータのロード要求をアドレス／制御バス１２０に出す。このロード要求は、アドレス／制御バス１２０より線ａ３０を通じてローカルグローバル判定回路２０に伝わる。ローカルグローバル判定回路２０は、ＣＰＵ１０がグローバル領域ｕ１１０に対してロードを発行していることを判定し、線ａ７０を通じてリモートデータタグ６５にロード要求を出す。リモートデータタグ６５は、ロード要求を受け、線ａ９０を通して得られるユニット番号レジスタ４０の値とともに、タグを検索する。要求リモートデータをタグに記録していないことがわかれば、リモートデータタグ６５の１ブロックを無効化する。この際に無効化するブロックのデータの内、キャッシュメモリ１１０にも登録されているデータをタグのＣ０ビットｕ２４０〜Ｃ３ビットｕ２１０より検索し、検索した結果、無効化しなければならないデータの無効化を線ａ１００を通して追出制御回路５０に要求する。追出制御回路５０は要求に従い、線ａ５０、アドレス／制御バス１２０、線ａ２０を通してキャッシュメモリ１１０にデータの無効化要求を出す。キャッシュメモリ１１０は無効化に対応すると、線ｄ２０，データバス１３０、線ｄ９０を通して、追出制御回路５０にＬＡＣＫを出力する。追出制御回路はＬＡＣＫを受けると、線ｃ２０を通してリモートデータタグ６５にＡＣＫを返答する。リモートデータタグ６５は、無効化したいデータが存在する間、データの無効化を線ａ１００を通して追出制御回路５０に要求し、線ｃ２０からのＡＣＫを待つ動作を繰り返す。以上の処理により、リモートデータタグ６５の１ブロックの無効化が完了すると、リモートデータタグ６５は線ａ１１０を通してネットワークアダプタ回路７０にリモートロード要求を出す。この際に付加するロード要求アドレスは、上位にアクセス先ユニット１０００のユニット番号、下位にアクセス先ユニット１０００におけるローカルメモリ１０８０の実アドレスである。ネットワークアダプタ回路は、要求に従いリモートロード要求パケットを作成し、線ｐ１０を通してネットワークにパケットを出力する。ネットワークはパケットに付加されたアクセス先ユニット１０００のユニット番号に従い、パケットをユニット１０００のネットワークアダプタ回路１０７０に、線ｐ１０２０を通して伝える。パケットを受けたネットワークアダプタ回路１０７０は、パケットを解釈し、ユニット１０からのリモートロード要求であることを認識すると、線ａ１１２０を通して、メモリ制御回路１０３０にロード要求を出す。メモリ制御回路１０３０はロード要求に従い、ローカルメモリ１０８０に対して線ａ１３０を通してロード要求を発行する。ローカルメモリ１０８０は、ロード要求に対してメモリ制御回路１０３０にデータ６４Ｂｙｔｅ分を返答する。返答されたデータは、線ｄ１０８０を通してネットワークアダプタ回路１０７０に戻る。ネットワークアダプタ回路１０７０は戻ったデータからリモートロード返答パケットを作成し、線ｐ１０１０、ネットワーク１００００、線ｐ２０を通して、ネットワークアダプタ回路７０にデータを戻す。戻ったデータ６４Ｂｙｔｅは線ｄ５０、データバス１３０、線ｄ２０を通してキャッシュメモリ１１０に返答されるとともに、リモートデータタグ６５に要求データのキャッシュメモリ１１０への登録が記録される。戻ったデータは６４Ｂｙｔｅ単位でキャッシュメモリ１１０に登録されるとともに、演算部１００が要求した１ワード分のデータは、線ｄ１０を通して演算部１００に返答される。
【０１１６】
（２．３．２：ＣＰＵ１０がユニット１０００のローカルメモリ１０８０のデータをストアした場合）
第１に、ＣＰＵ１０の演算部１００が要求したデータがキャッシュメモリ１１０に存在した場合について説明する。
【０１１７】
線ａ１０よりローカル領域ｕ１００内のデータに対するストア要求がキャッシュメモリ１１０に出されると、キャッシュメモリ１１０は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ１１０内にデータが存在した場合には、そのデータを線ｄ１０から得られるストアデータにより更新した後に、線ａ３０より演算部１００が要求しているストア要求をアドレス／制御バス１２０に、線ｄ２０よりストアデータ１ワード分をデータバス１３０に出す。このストア要求は、アドレス／制御バス１２０より線ａ３０を通じてローカルグローバル判定回路２０に伝わる。ローカルグローバル判定回路２０は、ＣＰＵ１０がグローバル領域ｕ１１０に対してストアを発行していることを判定し、線ａ７０を通じてリモートデータタグ６５にストア要求を出す。リモートデータタグ６５は、ストア要求と線ｄ５０を通してデータバス１３０より得られるストアデータ１ワード分を受け、線ａ９０を通して得られるユニット番号レジスタ４０の値とともに、ネットワークアダプタ回路７０に線ａ１１０を通してリモートストア要求を、線ｄ９０を通してリモートストアデータ１ワード分を出す。この際に付加するストア要求アドレスは、上位にアクセス先ユニット１０００のユニット番号、下位にアクセス先ユニット１０００におけるローカルメモリ１０８０の実アドレスである。ネットワークアダプタ回路は、要求に従いリモートストア要求パケットを作成し、線ｐ１０を通してネットワークにパケットを出力する。ネットワークはパケットに付加されたアクセス先ユニット１０００のユニット番号に従い、パケットをユニット１０００のネットワークアダプタ回路１０７０に、線ｐ１０２０を通して伝える。パケットを受けたネットワークアダプタ回路１０７０は、パケットを解釈し、ユニット１０からのリモートストア要求であることを認識すると、まず線ａ１１４０を通して追出制御回路１０５０にストアデータを含むラインのキャッシュメモリ１１１０からの追い出しを要求する。要求を受けた追出制御回路１０５０は線ａ１０５０、アドレス／制御バス１１２０、線ａ１０２０を通して、ストアされるデータのキャッシュメモリ１１１０からの無効化を要求する。要求を受けたキャッシュメモリ１１１０は、無効化要求されたデータが登録されているかどうか検索し、存在した場合には無効化処理後、存在しない場合には検索直後に線ｄ１０２０、データバス１１３０、線ｄ１０９０を通して追出制御回路１０５０にＬＡＣＫを返答する。追出制御回路１０５０はＬＡＣＫを受けると、線ｃ１０３０を通してネットワークアダプタ回路１０７０にＡＣＫを返答する。ネットワークアダプタ回路はＡＣＫを受けると、線ａ１１２０、線ｄ１０８０を通して、メモリ制御回路１０３０にストア要求を出す。メモリ制御回路１０３０はストア要求に従い、ローカルメモリ１０８０に対して線ａ１３０、線ｄ１０６０を通してストア要求を発行する。ローカルメモリ１０８０は、ストア要求に対してＷＡＣＫを返答する。返答されたＷＡＣＫは、線ｄ１０８０を通してネットワークアダプタ回路１０７０に戻る。ネットワークアダプタ回路１０７０は戻ったＷＡＣＫからリモートロード返答パケットを作成し、線ｐ１０１０、ネットワーク１００００、線ｐ２０を通して、ネットワークアダプタ回路７０にＷＡＣＫを戻す。戻ったＷＡＣＫは、線ｄ７０、リモートデータタグ６５、線ｄ５０、データバス１３０、線ｄ２０を通してキャッシュメモリ１１０に返答されるとともに、線ｄ１０を通して演算部１００に返答される。
【０１１８】
第２に、ＣＰＵ１０の演算部１００が要求したデータがキャッシュメモリ１１０に存在しない場合について説明する。
【０１１９】
線ａ１０よりローカル領域ｕ１００内のデータに対するストア要求がキャッシュメモリ１１０に出されると、キャッシュメモリ１１０は要求されたアドレスのデータを登録しているかどうか検索する。検索の結果、キャッシュメモリ１１０内にデータが存在しない場合には、線ａ３０より演算部１００が要求しているストア要求をアドレス／制御バス１２０に、線ｄ２０よりストアデータ１ワード分をデータバス１３０に出す。このストア要求は、アドレス／制御バス１２０より線ａ３０を通じてローカルグローバル判定回路２０に伝わる。ローカルグローバル判定回路２０は、ＣＰＵ１０がグローバル領域ｕ１１０に対してストアを発行していることを判定し、線ａ７０を通じてリモートデータタグ６５にストア要求を出す。リモートデータタグ６５は、ストア要求と線ｄ５０を通してデータバス１３０より得られるストアデータ１ワード分を受け、線ａ９０を通して得られるユニット番号レジスタ４０の値とともに、ネットワークアダプタ回路７０に線ａ１１０を通してリモートストア要求を、線ｄ９０を通してリモートストアデータ１ワード分を出す。この際に付加するストア要求アドレスは、上位にアクセス先ユニット１０００のユニット番号、下位にアクセス先ユニット１０００におけるローカルメモリ１０８０の実アドレスである。ネットワークアダプタ回路は、要求に従いリモートストア要求パケットを作成し、線ｐ１０を通してネットワークにパケットを出力する。ネットワークはパケットに付加されたアクセス先ユニット１０００のユニット番号に従い、パケットをユニット１０００のネットワークアダプタ回路１０７０に、線ｐ１０２０を通して伝える。パケットを受けたネットワークアダプタ回路１０７０は、パケットを解釈し、ユニット１０からのリモートストア要求であることを認識すると、まず線ａ１１４０を通して追出制御回路１０５０にストアデータを含むラインのキャッシュメモリ１１１０からの追い出しを要求する。要求を受けた追出制御回路１０５０は線ａ１０５０、アドレス／制御バス１１２０、線ａ１０２０を通して、ストアされるデータのキャッシュメモリ１１１０からの無効化を要求する。要求を受けたキャッシュメモリ１１１０は、無効化要求されたデータが登録されているかどうか検索し、存在した場合には無効化処理後、存在しない場合には検索直後に線ｄ１０２０、データバス１１３０、線ｄ１０９０を通して追出制御回路１０５０にＬＡＣＫを返答する。追出制御回路１０５０はＬＡＣＫを受けると、線ｃ１０３０を通してネットワークアダプタ回路１０７０にＡＣＫを返答する。ネットワークアダプタ回路はＡＣＫを受けると、線ａ１１２０、線ｄ１０８０を通して、メモリ制御回路１０３０にストア要求を出す。メモリ制御回路１０３０はストア要求に従い、ローカルメモリ１０８０に対して線ａ１３０、線ｄ１０６０を通してストア要求を発行する。ローカルメモリ１０８０は、ストア要求に対してＷＡＣＫを返答する。返答されたＷＡＣＫは、線ｄ１０８０を通してネットワークアダプタ回路１０７０に戻る。ネットワークアダプタ回路１０７０は戻ったＷＡＣＫからリモートロード返答パケットを作成し、線ｐ１０１０、ネットワーク１００００、線ｐ２０を通して、ネットワークアダプタ回路７０にＷＡＣＫを戻す。戻ったＷＡＣＫは、線ｄ７０、リモートデータタグ６５、線ｄ５０、データバス１３０、線ｄ２０を通してキャッシュメモリ１１０に返答されるとともに、線ｄ１０を通して演算部１００に返答される。
【０１２０】
（２．３．３：ＣＰＵ１０がユニット番号レジスタ４０にストアした場合）
Ｉ／Ｏ領域に用意したユニット番号レジスタ４０に対するストア要求が線ａ１０、データ１ワードが線ｄ１０より出されると、キャッシュメモリ１１０をパスして、線ａ３０よりストア要求をアドレス／制御バス１２０に、線ｄ２０よりストアデータ１ワード分をデータバス１３０に出る。このストア要求は、アドレス／制御バス１２０より線ａ４０を通じてユニット番号レジスタ４０に伝わる。ユニット番号レジスタ４０は、ＣＰＵ１０がユニット番号レジスタ４０に対してストアを発行していることを判定し、線ｄ４０よりストアデータを受け取る。受け取ったデータが以前に登録されていたデータと同じかどうか判定し、同じである場合には、ストア要求に対して線ｄ４０、データバス１３０、線ｄ２０、線ｄ１０を通してＷＡＣＫを返答する。同じでない場合には、ユニット番号レジスタは登録データを更新するとともに、線ｃ１０より追出制御回路５０に対してリモートデータ一括無効化要求を出す。リモートデータ一括無効化要求を受けた追出制御回路５０は、リモートデータタグ６５に対して無効化すべきリモートデータのアドレス要求を線ｃ２０を通して出す。リモートデータタグ６５は、タグのＣ０〜Ｃ３ビットが１であるブロックを検索し、キャッシュメモリ１１０にリモートデータタグ６５から登録されたデータのアドレスを、タグのＣ０〜Ｃ３ビットの情報を基に、線ａ１００を通して追出制御回路５０に出す（この際に無効化要求を出したアドレスに対応するＣ０〜Ｃ３ビットは０クリアする）。アドレスをうけた追出制御回路５０は、線ａ５０、アドレス／制御バス１２０、線ａ２０を通してキャッシュメモリ１１０に登録データの無効化を要求する。要求を受けたキャッシュメモリ１１０は、要求データがキャッシュメモリに登録されているかどうか検索し、登録されている場合には無効化処理後、登録されていなければ検索直後に、線ｄ２０、データバス１３０、線ｄ９０を通して、追出制御回路５０にＬＡＣＫを出す。ＬＡＣＫを受けた追出制御回路５０は、線ｃ２０を通してリモートデータタグ６５にＡＣＫを出力する。ＡＣＫを受けたリモートデータタグ６５は、まだＣ０〜Ｃ３ビットが１であるものが存在するかどうかを検索し、存在する限りキャッシュメモリ１１０にリモートデータタグ６５から記録されたデータのアドレスを、タグのＣ０〜Ｃ３ビットの情報を基に、線ａ１００を通して追出制御回路５０に出し、追出制御回路５０によるキャッシュメモリ１１０からのリモートデータの無効化処理を続ける。Ｃ０〜Ｃ３ビットが１であるデータが存在しなくなると、リモートデータタグ６５は、線ａ１００を通して追出制御回路５０にＷＡＣＫを出力する。ＷＡＣＫを受けた追出制御回路は、線ｄ９０，データバス１３０、線ｄ２０、線ｄ１０を通してＷＡＣＫを返答する。
【０１２１】
（２．３．４：ＣＰＵ１０が追出制御回路５０にリモートデータ一括無効化要求のストアした場合）
Ｉ／Ｏ領域に用意した追出制御回路５０に対するリモートデータ一括無効化要求のストアが線ａ１０、データ１ワードが線ｄ１０より出されると、キャッシュメモリ１１０をパスして、線ａ３０よりストア要求をアドレス／制御バス１２０に、線ｄ２０よりストアデータ１ワード分をデータバス１３０に出る。このストア要求は、アドレス／制御バス１２０より線ａ４０を通じて追出制御回路５０に伝わる。リモートデータ一括無効化要求を受けた追出制御回路５０は、リモートデータタグ６５に対して無効化すべきリモートデータのアドレス要求を線ｃ２０を通して出す。リモートデータタグ６５は、タグのＣ０〜Ｃ３ビットが１であるブロックを検索し、キャッシュメモリ１１０にリモートデータタグ６５から登録されたデータのアドレスを、タグのＣ０〜Ｃ３ビットの情報を基に、線ａ１００を通して追出制御回路５０に出す（この際に無効化要求を出したアドレスに対応するＣ０〜Ｃ３ビットは０クリアする）。アドレスをうけた追出制御回路５０は、線ａ５０、アドレス／制御バス１２０、線ａ２０を通してキャッシュメモリ１１０に登録データの無効化を要求する。要求を受けたキャッシュメモリ１１０は、要求データがキャッシュメモリに登録されているかどうか検索し、登録されている場合には無効化処理後、登録されていなければ検索直後に、線ｄ２０、データバス１３０、線ｄ９０を通して、追出制御回路５０にＬＡＣＫを出す。ＬＡＣＫを受けた追出制御回路５０は、線ｃ２０を通してリモートデータタグ６５にＡＣＫを出力する。ＡＣＫを受けたリモートデータタグ６５は、まだＣ０〜Ｃ３ビットが１であるものが存在するかどうかを検索し、存在する限りキャッシュメモリ１１０にリモートデータタグ６５から記録されたデータのアドレスを、タグのＣ０〜Ｃ３ビットの情報を基に、線ａ１００を通して追出制御回路５０に出し、追出制御回路５０によるキャッシュメモリ１１０からのリモートデータの無効化処理を続ける。Ｃ０〜Ｃ３ビットが１であるデータが存在しなくなると、リモートデータタグ６５は、線ａ１００を通して追出制御回路５０にＷＡＣＫを出力する。ＷＡＣＫを受けた追出制御回路は、線ｄ９０，データバス１３０、線ｄ２０、線ｄ１０を通してＷＡＣＫを返答する。
【０１２２】
（３：第３の実施例）
図３、５〜７、１２、１３に本発明の他の実施例として第３の実施例を示す。本実施例は、第１の実施例で示したユニット番号レジスタ４０によるアドレス拡張がない例である。本実施例が解決する課題は、第１の実施例で述べた２つの課題の内、第２の課題である「ソフトウェアによるコヒーレンス制御の問題」として述べたもののみである。本実施例は、アドレス空間が十分に広いＣＰＵ１０を使って分散共有メモリシステムを構築する際にも、第１の実施例で述べた２つの課題の内、第２の課題である「ソフトウェアによるコヒーレンス制御の問題」が依然として解決されないことに対応している。本実施例も基本的にその動作は第１の実施例と同じになるので、異なる点のみ以下に説明する。なお、本実施例でも、第２の実施例と同様にリモートデータバッファ６０の代わりに、キャッシュメモリ１１０に登録されているリモートデータのタグ情報のみ記録しデータ本体は記録しない、データするリモートデータタグ６５（図１１）を使うことも可能である。
【０１２３】
（３．１：第３の実施例におけるアドレス空間）
本実施例におけるアドレス空間について説明する。アドレス空間には、全ユニットのローカルメモリがフラットに見えているとする。拡張したアドレス空間の見え方を図１３に示す。この実アドレス空間は、全ユニット共通である。
【０１２４】
（３．２：第３の実施例におけるローカルグローバル判定回路２５）
図１２に記載した本実施例の構成要素について、第１の実施例と異なる点のみ説明する。  ローカルグローバル判定回路２５は、アドレス空間が第１の実施例と異なるので、ローカル／グローバルの判定方法が異なる。
【０１２５】
ローカルグローバル判定回路２５の内部構成を図１３に示す。アドレス／制御バス１２０より線ａ３０を通して入力されるアドレス／制御情報は、アドレスラッチ２００に登録される。アドレスラッチ２００に登録された情報の内、コマンドを表すフィールドは線ｃ２００を通してトランザクション解釈部２１０に送られる。トランザクション解釈部２１０は、アドレスラッチ２００に登録したアドレス／制御情報が、ロード／ストア要求トランザクションであれば線２２０を１にし、他のトランザクションであれば線２２０を０にする。
【０１２６】
また、アドレスラッチ２００に記録した情報の内、アドレス上位２２５（本実施例では上位６ビット）は線ａ２１５を通して比較器２８５に入力される。比較器２８５には、自ユニット番号記憶器２７５に記憶された自ユニット番号（ユニット０なら０ｘ００、ユニット６３なら０ｘ３Ｆ）も入力されており、両者が一致する場合には、アクセス要求はローカル領域アクセスとして線ｃ２１５は０に、両者が一致しない場合には、アクセス要求はグローバル領域アクセスとして線ｃ２１５は１になる（図１４：アドレス空間参照）。線ｃ２１５とトランザクション解釈部の出力ｃ２２０とを入力とするａｎｄ回路２４０の出力線ｃ２４０により、アドレスドライバ２６０は、アドレスラッチ２００が登録しているトランザクションがグローバル領域ｕ１１０へのロードあるいはストアであればアクティブとなり、線ａ７０にトランザクションを出力する。また、線ｃ２１５を反転させたものとトランザクション解釈部の出力ｃ２２０とを入力とするａｎｄ回路２３０の出力線ｃ２３０により、アドレスドライバ２５０は、アドレスラッチ２００が登録しているトランザクションがローカル領域ｕ１００へのロードあるいはストアであればアクティブとなり、線ａ６０にトランザクションを出力する。
【０１２７】
（３．３：第３の実施例における追出制御回路５０）
基本的に第１の実施例と同じ動作をするが、ユニット番号レジスタ４０がないため、線ｃ１０を通して、ユニット番号の変更が伝えられた場合の処理は発生しなくなる。
【０１２８】
（３．４：第３の実施例におけるリモートデータバッファ６０）
リモートデータバッファ６０の動作も、ユニット番号レジスタ４０によるアドレス拡張がない以外は基本的に第１の実施例と同じである。但しユニット番号レジスタ４０によるアドレス拡張がないため、タグの作りが変更される。
【０１２９】
本実施例のリモートデータバッファ６０のタグの構成を図１５に示す。タグは、Ｖビットｕ２００、Ｃ０ビットｕ２４０、Ｃ１ビットｕ２３０、Ｃ２ビットｕ２２０、Ｃ３ビットｕ２１０、アドレス情報ｕ２６５から構成する。Ｖビットｕ２００は、そのタグに対応するリモートデータバッファの１ブロック（２５６Ｂｙｔｅ）に有効なデータが入っているかどうかを示すビットであり、Ｃ０ビットｕ２４０、Ｃ１ビットｕ２３０、Ｃ２ビットｕ２２０、Ｃ３ビットｕ２１０はリモートデータバッファ１ブロック２５６Ｂｙｔｅを各６４Ｂｙｔｅ（ＣＰＵ１０のキャッシュメモリ１１０のラインサイズに対応）のサイズに割った場合、それぞれの６４Ｂｙｔｅの単位がＣＰＵ１０のキャッシュメモリ１１０に登録されたかどうかを示す。Ｃ０ビットｕ２４０は最下位の６４Ｂｙｔｅがキャッシュメモリ１１０に登録されたかどうかを示し、Ｃ１ビットｕ２３０は次の６４Ｂｙｔｅ，Ｃ２ビットｕ２２０は３番目の６４Ｂｙｔｅ，Ｃ３ビットｕ２１０は最上位の６４Ｂｙｔｅがキャッシュメモリ１１０に登録されたかどうかを示す。アドレス情報ｕ２６５は、そのタグに対応するリモートデータバッファ１ブロック２５６Ｂｙｔｅのデータがどのユニットのどのアドレスから登録したものかを記録するフィールドである。本実施例では、アドレスの上位６ビットがユニットの番号を示している。アドレス情報ｕ２６０は、アクセス先ユニットのローカルメモリにおける実アドレスの内、下位８ｂｉｔ（リモートデータバッファ１ブロックが２５６Ｂｙｔｅであるため）を切り捨てた値を記憶する。
【０１３０】
図１６を用いて、具体的にタグに情報が登録される様子を説明する。初期状態では、全てのタグ情報を０クリアしておく。もしＣＰＵ１０がユニット番号１０１１００＝０ｘ２Ｃ内でのオフセット０１００１１１１０１０１１１０１１１０１００００００＝０ｘ１３Ｄ７７４０をロードしたい場合（ＣＰＵ１０からのロード要求はキャッシュメモリ１１０のラインサイズ６４Ｂｙｔｅであることから、下位６ｂｉｔは０である）、アドレス１０１１０００１００１１１１０１０１１１０１１１０１００００００＝０ｘＢ１３Ｄ７７４０に対してロードをかける。これに対して、アクセスアドレス０ｘＢ１３Ｄ７７４０より下位８ｂｉｔを削除した値ｕ３４５をタグのアドレス情報ｕ３２５に記録する。また、リモートデータバッファ１ブロック２５６Ｂｙｔｅのデータの内、どの６４ＢｙｔｅのデータがＣＰＵ１０によりアクセスされたのかを示す下位７ビット目と８ビット目の情報ｕ３５５より、下から２番目の６４Ｂｙｔｅがアクセスされたことを認識し、Ｃ１ビットｕ３００を１にする。さらに、ＣＰＵ１０がアドレス１０１１０００１００１１１１０１０１１１０１１１０１００００００＝０ｘＢ１３Ｄ７７８０でロードした場合には、アドレス情報ｕ４２５と、アドレスの内対応するフィールドｕ４４５と比較し、一致したことを確認することで、ＣＰＵ１０が要求しているリモートデータがこのタグに対応するリモートデータバッファ１ブロック中に登録されていることを認識する。更にアクセスアドレスの下位７ビット目と８ビット目の情報ｕ４５５より、下から３番目の６４Ｂｙｔｅがアクセスされたことを認識し、Ｃ２ビットｕ４０５を１にする。
【０１３１】
登録したリモートデータバッファ１ブロック分のデータをリプレースしなければならない場合には、リモートデータバッファ６０とキャッシュメモリ１１０の間に包含関係を常に成立ために、タグ情報よりキャッシュメモリ１１０に登録されたデータのアドレスを生成し、キャッシュメモリ１１０に対して登録したリモートデータの無効化を要求する。図１６の例では、タグのアドレス情報ｕ５８５にＣ０ビット〜Ｃ３ビットの内、１であるＣ１ビットｕ５７０、Ｃ２ビットｕ５６５からアドレスｕ５２５、ｕ５５５を生成して付加することで、キャッシュメモリ１１０に対して登録したリモートデータの無効化を要求するアドレスを生成する。この処理が終了した後は、タグのＶビット、Ｃ０ビット〜Ｃ３ビットは０とし、次のタグ情報が記録できる状態にする。
【０１３２】
（３．４：第３の実施例の動作）
ユニット番号レジスタ４０によるアドレス拡張がない点以外は、基本的に動作は第１の実施例と同じである。但し、（１．１１．５：ＣＰＵ１０がユニット番号レジスタ４０にストアした場合）の処理は、ユニット番号レジスタ４０がないので発生しない。
【０１３３】
【発明の効果】
本発明によれば、アドレス空間をＣＰＵ外部で拡張している分散共有メモリ型並列計算機において、ＣＰＵ内部で管理するキャッシュメモリにリモートデータが登録できるようになり、性能が向上する。
【０１３４】
また、アドレス拡張の有無に関わらず、ＣＰＵ内部で管理されるキャッシュメモリからリモートデータ全てを高速に追い出すことができるようになり、コヒーレンス制御の速度が向上する。
【図面の簡単な説明】
【図１】本発明の第１の実施例及び第２の実施例に係る並列計算機全体を示す図である。
【図２】第１の実施例及び第２の実施例のローカルグローバル判定回路２０を示す図である。
【図３】メモリ制御回路３０を示す図である。
【図４】ユニット番号レジスタ４０を示す図である。
【図５】追出制御回路５０を示す図である。
【図６】第１の実施例及び第３の実施例のリモートデータバッファ１１０を示す図である。
【図７】ネットワークアダプタ回路７０を示す図である。
【図８】第１の実施例及び第２の実施例の各ユニット毎のアドレス空間を示す図である。
【図９】第１の実施例及び第２の実施例のリモートデータバッファ１１０のタグ８１０−８３０またはリモートデータタグ１１５のタグ８１５−８３５の内容例を示す図である。
【図１０】第１の実施例及び第２の実施例のリモートデータバッファ１１０のタグ８１０−８３０またはリモートデータタグ１１５のタグ８１５−８３５の内容変化例を示す図である。
【図１１】第２の実施例のリモートデータタグ１１５を示す図である。
【図１２】第３の実施例の並列計算機全体を示す図である。
【図１３】第３の実施例のローカルグローバル判定回路２５を示す図である。
【図１４】第３の実施例の各ユニット毎のアドレス空間を示す図である。
【図１５】第３の実施例のリモートデータバッファ１１０のタグ８１０−８３０またはリモートデータタグ１１５のタグ８１５−８３５の内容例を示す図である。
【図１６】第３の実施例のリモートデータバッファ１１０のタグ８１０−８３０またはリモートデータタグ１１５のタグ８１５−８３５の内容変化例を示す図である。
【符号の説明】
ａ１０−ａ１１４０…アドレス情報および制御情報伝達線、ｃ１０−ｃ１０３０…制御情報伝達線、ｄ１０−ｄ１０９０…データ情報伝達線、ｐ１０、ｐ２０、ｐ１０１０、ｐ１０２０…パケット情報伝達線、２３０、２４０、４４０、４５０…ａｎｄ回路、３７０、６３０、７００…ｏｒ回路、ｕ３００、ｕ３０５、ｕ５７０、ｕ５７５…ｃ１ビット、ｕ４００、ｕ４０５、ｕ５６０、ｕ５６５…ｃ２ビット、ｕ３１０、ｕ４１０…ユニット番号、ｕ３２０、ｕ３２５、ｕ４２０、ｕ４２５、ｕ５８０、ｕ５８５…アドレス情報。
【図１】
0003760482.tif 000002
【図２】
0003760482.tif 000003
【図３】
0003760482.tif 000004
【図４】
0003760482.tif 000005
【図５】
0003760482.tif 000006
【図６】
0003760482.tif 000007
【図７】
0003760482.tif 000008
【図８】
0003760482.tif 000009
【図９】
0003760482.tif 000010
【図１０】
0003760482.tif 000011
【図１１】
0003760482.tif 000012
【図１２】
0003760482.tif 000013
【図１３】
0003760482.tif 000014
【図１４】
0003760482.tif 000015
【図１５】
0003760482.tif 000016
【図１６】
0003760482.tif 000017