(57)【特許請求の範囲】
【請求項１】
それぞれプロセッサを有する複数のプロセッサユニットと、
上記複数のプロセッサユニットにより共有される複数のメモリユニットと、
上記複数のプロセッサユニットと上記複数のメモリユニットとの間でアドレス若しくはデータ、又はその双方を送付する第１の相互結合網と、
上記複数のプロセッサユニットを相互に接続する第２の相互結合網とを有し、
上記複数のプロセッサユニットの各々は、キャッシュメモリと、上記第１の相互結合網を介して受理したキャッシュ検査を要するメモリアクセス要求に応答して、該キャッシュメモリの状態を基に、キャッシュ検査報告を上記第２の相互結合網に送付するキャッシュ検査報告手段とを有し、
上記第２の相互結合網は、上記複数のプロセッサユニットから受理した上記キャッシュ検査報告を集計して、上記キャッシュ検査を要するメモリアクセス要求の発行元である上記複数のプロセッサユニットのいずれかの上記キャッシュメモリの状態を定める情報を発生するキャッシュ検査報告集計手段と、該情報を上記キャッシュ検査を要するメモリアクセス要求の発行元に送付する手段を有することを特徴とするマルチプロセッサシステム。
【請求項２】
上記第１の相互結合網は、上記第２の相互結合網との間にキャッシュ検査を要するメモリアクセス要求の発行元を通知する手段を有し、
上記第２の相互結合網は、上記キャッシュ検査報告集計手段が発生する上記情報を上記メモリアクセス要求の発行元を通知する手段により指定される上記複数のプロセッサユニットのいずれかに送付することを特徴とする請求項１に記載のマルチプロセッサシステム。
【請求項３】
上記第１の相互結合網は、並列に上記アドレス若しくは上記データ、又はその双方を、上記複数のプロセッサユニット若しくはそのいずれか、又は上記複数のメモリユニットのいずれかに送付する手段を有する請求項１又は請求項２のいずれかに記載のマルチプロセッサシステム。
【請求項４】
上記第１の相互結合網は、上記キャッシュ検査を要するメモリアクセス要求を、上記複数のプロセッサユニット又は上記複数のメモリユニットのいずれかに送付する手段を有し、
上記複数のプロセッサユニット及び上記複数のメモリユニットが上記キャッシュ検査を要するメモリアクセス要求を受理する順序が一致することを特徴とする請求項３記載のマルチプロセッサシステム。
【請求項５】
上記第２の相互結合網は、上記複数のプロセッサユニットのいずれが存在しているかを識別する手段を有し、
上記キャッシュ検査報告集計手段は、上記識別する手段を用いて、上記キャッシュ検査を要するメモリアクセス要求の発行元の上記キャッシュメモリの状態を定める上記情報を発生することを特徴とする請求項１乃至請求項３のいずれかに記載のマルチプロセッサシステム。
【請求項６】
上記識別する手段は、上記マルチプロセッサの立ち上げ時に、上記複数のプロセッサユニットから送付される存在信号により設定されることを特徴とする請求項５に記載のマルチプロセッサシステム。
【請求項７】
上記複数のプロセッサユニットは、
複数の上記プロセッサと、
複数の上記キャッシュメモリと、
上記複数のプロセッサのいずれのプロセッサが存在しているかを識別する識別手段とを有し、
上記キャッシュ検査報告手段は、上記複数のキャッシュメモリの状態を基に、該複数のキャッシュメモリのキャッシュ検査報告を集計して上記第２の相互結合網へ送付する手段を有し、
上記複数のプロセッサは、上記キャッシュ検査を要するメモリアクセス要求に応答して、上記複数のキャッシュメモリの状態を基に、上記複数のキャッシュメモリのキャッシュ検査報告を上記キャッシュ検査報告手段に送付し、
上記キャッシュ検査報告手段は、上記複数のキャッシュメモリのキャッシュ検査報告と上記識別手段とを用いて、上記プロセッサユニットのキャッシュ検査報告を発生することを特徴とする請求項１乃至請求項４のいずれかに記載のマルチプロセッサシステム。
【請求項８】
上記複数のプロセッサユニットの各々は、上記キャッシュ検査を要するメモリアクセス要求を受理した順序で、上記キャッシュメモリの状態を上記第２の相互結合網に送付し、
上記第２の相互結合網は、上記メモリアクセス要求の発行元の上記キャッシュメモリの状態を定める上記情報を上記メモリアクセス要求の発行元を通知する手段により指定される上記複数のプロセッサユニットのいずれかに、上記メモリアクセス要求の発行元の通知と同じ順序で送付することを特徴とする請求項２に記載のマルチプロセッサシステム。
【請求項９】
上記複数のプロセッサユニットは、上記キャッシュ検査を要するメモリアクセス要求に応答して、最新のデータを上記キャッシュ検査を要するメモリアクセス要求の発行元に送付する手段を有し、
上記複数のメモリユニットは、上記メモリアクセス要求に応答して上記複数のメモリユニットが保持するデータを上記キャッシュ検査を要するメモリアクセス要求の発行元へ送付する動作を抑止する手段を有し、
上記第２の相互結合網は、上記キャッシュ検査を要するメモリアクセス要求の発行元の上記キャッシュメモリの状態を定める上記情報により、上記複数のメモリユニットのいずれかに、上記プロセッサユニットへのデータ転送の抑止を通知する手段を有する請求項１乃至請求項８いずれかに記載のマルチプロセッサシステム。
【請求項１０】
上記複数のプロセッサユニットは、上記キャッシュ検査を要するメモリアクセス要求に応答して、最新のデータを上記キャッシュ検査を要するメモリアクセス要求の発行元に送付する手段と、
上記第２の相互結合網により通知された、上記キャッシュ検査を要するメモリアクセス要求の発行元の上記キャッシュメモリの状態を定める上記情報に応じて、上記プロセッサユニットから送付された上記最新のデータと、上記メモリユニットから送付されたデータとを選択する手段とを備える請求項１乃至請求項９のいずれかに記載のマルチプロセッサシステム。
【請求項１１】
上記第１の相互結合網は、共有バスであることを特徴とする請求項１乃至請求項１０のいずれかに記載のマルチプロセッサシステム。
【請求項１２】
上記第２の相互結合網は、内部のビジー状態を上記第１の相互結合網に通知する手段
を有し、
上記第１の相互結合網は、上記第２の相互結合網のビジー状態により、上記キャッシュ検査を要するメモリアクセス要求を上記複数のプロセッサユニット及び上記複数のメモリユニットに送付することを抑止する手段を有する請求項１乃至請求項１０いずれかに記載のマルチプロセッサシステム。
【請求項１３】
上記第２の相互結合網は、上記キャッシュ検査を要するメモリアクセス要求の発行元の上記キャッシュメモリの状態を定める上記情報を発生する際に、キャッシュ状態の一貫性が保証されていないことを検出し、その一貫性が保証されない場合には上記複数のプロセッサユニットのいずれかにエラー報告を送付する手段を有する請求項１乃至請求項１２のいずれかに記載のマルチプロセッサシステム。
【請求項１４】
上記第２の相互結合網は、上記メモリアクセス要求の発行元を通知する手段により上記複数のプロセッサユニットのいずれかが指定される以前に、上記複数のプロセッサユニットから上記キャッシュメモリの状態を受け取った際に、上記複数のプロセッサユニットのいずれかにエラー通知を送付する手段を備える請求項２記載のマルチプロセッサシステム。
【請求項１５】
上記第１の結合網又は上記第２の相互結合網は、集積回路に実装されることを特徴とする請求項１乃至請求項１４のいずれかに記載のマルチプロセッサシステム。
【請求項１６】
上記複数のプロセッサユニットのいずれか、又は上記複数のメモリユニットのいずれかが、上記第１の相互結合網、又は上記第２の相互結合網と独立に着脱可能であることを特徴とする請求項１乃至請求項１５のいずれかに記載のマルチプロセッサシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は計算機システム、特に、複数のプロセッサを接続するマルチプロセッサシステムに関する。
【０００２】
【従来の技術】
従来の多くの主記憶共有型マルチプロセッサにおいては、数台のプロセッサユニットとメモリユニットをバスで接続し、プロセッサユニット内のキャッシュ内容の一貫性を保証するために、スヌープキャッシュ方式を採用するのが一般的である。こういった計算機システムは、”Ｂｅｎ  Ｃａｔａｎｚａｒｏ，  ”Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒ  Ｓｙｓｔｅｍ  Ａｒｃｈｉｔｅｃｔｕｒｅｓ”，  Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，  １９９４”（参考文献１と呼ぶ）、あるいは、“Ｄｏｎ  Ａｎｄｅｒｓｏｎ／Ｔｏｍ  Ｓｈａｎｌｅｙ、”ＰＥＮＴＩＵＭ  ＰＲＯＣＥＳＳＯＲ  ＳＹＳＴＥＭ  ＡＲＣＨＩＴＥＣＴＵＲＥ  Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ“，ＭＩＮＤＳＨＡＲＥ，ＩＮＣ．，１９９５”（参考文献２と呼ぶ）などにその例を見ることができる。これらの従来例においては、複数のプロセッサユニットおよびメモリユニットは１本のバスで接続されている。またプロセッサユニット間はコヒーレンシ報告バスで接続されており、コヒーレンシ報告バスは、１本の共用通知線および１本のダーティ通知線から成る。動作フローは以下の通りである。尚、他キャッシュの状態検査を必要とするメモリアクセス要求をここではコヒーレントリード要求と呼ぶ。またコヒーレントリード要求に応答して各々のキャッシュが該当するキャッシュラインの状態をコヒーレントリード要求元に返答することをここではコヒーレンシ報告と呼ぶ。
【０００３】
（１）  いずれかのデータを要求するプロセッサユニットがコヒーレントリード要求をプロセッサユニットおよび主記憶を接続するバスに送出する。
【０００４】
（２）  各プロセッサユニットはバス上にコヒーレントリード要求を観測した場合、プロセッサユニット間を接続するコヒーレンシ報告バスに対して返答を行う。各プロセッサユニットは、例えば当該データをクリーン状態で保持していた場合は、共用通知線をアサートする。例えば当該データをダーティで保持していた場合は、ダーティ通知線をアサートする。要求元プロセッサユニットでは、所定のサイクルに共用通知線およびダーティ通知線を検査する。所定のサイクルとは、各従来例によって異なり、参考文献１の例ではコヒーレントリード要求をバス上に送付してから固定サイクル後、参考文献２の例では、メモリからのデータリターンが返答されるまでとなっている。もし共用通知線がアサートされている場合は、少なくとも１つのプロセッサユニットがデータを共用していると判断し、自キャッシュの次状態を決定する。もしダーティ通知線がアサートされている場合は、少なくとも１つのプロセッサユニットが最新のデータを保持していると判断し、自キャッシュの次状態およびデータ送付元を決定する。このように、複数のプロセッサユニットからのコヒーレンシ報告を基に自キャッシュの状態あるいは最新データの送付元を決定する処理をここではコヒーレンシ報告の集計と呼ぶ。
【０００５】
（３）  メモリユニットがその要求が指定するデータをコヒーレントリード要求元のプロセッサユニットに送付する。
【０００６】
（３’）  いずれかのプロセッサユニットが、その要求が指定するデータを更新済みであるときには、メモリユニットに代わってそのプロセッサユニットがコヒーレントリード要求元のプロセッサユニットにデータを送信する。
【０００７】
このようにバスによるｗｉｒｅｄ論理を用いて複数のプロセッサからの状態報告の集計を行う方式をここではバス集計方式と呼ぶ。
【０００８】
また特開平７−２８１９５６号公報（参考文献３と呼ぶ）においては、コヒーレントリード要求が同時に複数個オーバラップして実行される場合のコヒーレンシ報告集計方式について開示している。この従来例においては、複数のプロセッサユニットと１つのメモリユニットが１本のバスで接続されており、各プロセッサユニットとメモリユニットは別々のコヒーレンシ報告線により接続されている。コヒーレントリード時の動作フローは以下のようになる。
【０００９】
（１）  いずれかのデータを要求するプロセッサユニットがコヒーレントリード要求をプロセッサユニットおよびメモリユニットを接続するバスに送出する。
【００１０】
（２）  各プロセッサがメモリユニットに対して、コヒーレンシ報告線を経由してコヒーレンシ報告を送付する。メモリユニットにおいては、各プロセッサから送付されたコヒーレンシ報告を集計し、コヒーレントリード要求元キャッシュの次状態を決定する。
【００１１】
（３）  メモリユニットがその要求が指定するデータをコヒーレントリード要求元のプロセッサユニットに送付する。これと同時にバス上に設けられた状態報告線によりコヒーレントリード要求元プロセッサユニットに対しキャッシュの次状態の通知を行う。
【００１２】
（３’）  いずれかのプロセッサユニットが、その要求が指定するデータを更新済みであるときには、主記憶に代わってそのプロセッサユニットがコヒーレントリード要求元のプロセッサユニットにデータを送信する。
【００１３】
このような方式をここではユニット集中集計方式と呼ぶ。
【００１４】
ところで、スヌープキャッシュ方式を実現するにあたって上記従来例ではコヒーレントリード要求を各プロセッサユニットおよびメモリユニットを接続するバスにより配布することを前提としている。これは少数台のプロセッサを安価に接続するためには有効な手段ではあるが、プロセッサユニット数、あるいは、主記憶ユニット数が増加すると、バスのトラフィックが増加し性能向上が困難となる。また、大規模なマルチプロセッサシステムを構成する際には、ドライブするべきユニット数が増加し、かつ、物理的な広がりが大きくなるため動作周波数を向上させることが困難となる。そこで、特開平９−１３８７８２号公報（参考文献４と呼ぶ）ではバスの代わりに、並列にアドレスおよびデータが転送可能な相互結合網（具体的にはクロスバ網）を用いてスヌープ処理を行う方法が開示されている。この従来例においては、コヒーレントリード要求の配布方法については開示しているが、コヒーレンシ報告の送付方法、および、集計方法に関しては開示していない。
【００１５】
【発明が解決しようとする課題】
上記従来例のうち、バス集計方式に関しては、コヒーレンシ報告をバスで行うため、動作周波数を向上することが困難である。また、コヒーレントリード要求が同時に複数個オーバラップして実行されるようなシステムにおいては、コヒーレンシ報告の集計が完了するまで、次のコヒーレンシ報告を送付することができないため、オーバラップ可能なコヒーレントリード要求数が限定される。ユニット集中集計方式に関しては、主記憶容量を複数個設けた場合、および、スループットを高めるために主記憶制御ユニットが複数個設けた場合に対応できない。
【００１６】
さらにいずれの従来例においても、上記に述べたクロスバ網などの相互結合網を利用したスヌープ方式には適用することができない。
【００１７】
本発明の目的は、複数のプロセッサユニット、および、複数のメモリユニットを備えるマルチプロセッサシステムにおいて、コヒーレントリード要求が同時に複数個オーバラップして実行される場合に、オーバラップ可能なコヒーレントリード要求の数を限定することなく、コヒーレンシ報告の集計を行う機構を提供することである。
【００１８】
本発明のより具体的な目的は、並列にアドレスおよびデータが転送可能な相互結合網を介して複数のプロセッサユニット、および、複数のメモリユニットが接続されるマルチプロセッサシステムにおいて、コヒーレントリード要求が同時に複数個オーバラップして実行される場合に、オーバラップ可能なコヒーレントリード要求の数を限定することなく、コヒーレンシ報告の集計を行う機構を提供することである。
【００１９】
本発明の他のより具体的な目的は、プロセッサユニットと上記コヒーレンシ報告の集計を行う機構間のピン数をできるだけ少なく実現することである。
【００２０】
【課題を解決するための手段】
本願発明の上記目的を達成するために、複数のプロセッサユニットの間にコヒーレンシ報告を転送するための第２の相互結合網を設け、該第２の相互結合網は全てのプロセッサユニットからのコヒーレンシ報告を集計し、コヒーレントリード要求元プロセッサユニットに集計結果を送付する。
【００２１】
本願発明の他の目的を達成するために、プロセッサおよびメモリユニットを結合する第１の相互結合網から、コヒーレンシ報告の集計に必要な情報をコヒーレントリード発行時にコヒーレンシ報告集計を行う機構が得る手段を設ける。
【００２２】
【発明の実施の形態】
以下、本発明に係わるマルチプロセッサシステムを図面に示したいくつかの実施の形態を参照してさらに詳細に説明する。なお、以下においては、同じ参照番号は同じものもしくは類似のものを表わすものとする。また、発明の第２の実施の形態以降においては、発明の第１の実施の形態との相違点を主に説明するに止める。
【００２３】
＜発明の実施の形態１＞
（１）装置の構成
図１は、本発明になるマルチプロセッサシステムの全体構成で、２つのプロセッサボード１０−０〜１、２つのメモリボード６０−０〜１、入出力装置等の周辺装置を含むユニット（図示せず）、および、これらを接続するＳＣ（Ｓｙｓｔｅｍ  Ｃｏｎｎｅｃｔｉｏｎ）ボード３０から構成される。メモリボード６０−０〜１の各々は、プログラムおよびデータを保持する主記憶６１、および、主記憶制御回路７０を備え、主記憶６１は主記憶制御回路７０によりＳＣボード３０と接続される。２つのメモリボード６０−０〜１は６４Ｂ単位にインタリーブされている。このインタリーブ単位はプロセッサボード１０−０〜１内キャッシュ１２のラインサイズにより定まる。プロセッサボード１０−０〜１の各々は、プログラム命令を主記憶６１から順次読み出し、順次それらの命令を実行するＣＰＵコア１１と、主記憶６１の一部分の写しを格納するキャッシュ１２と、これを制御するキャッシュ制御回路２０、とを備える。キャッシュ制御回路２０は、キャッシュ１２のアクセスを制御するキャッシュアクセス制御回路２１を備え、トランザクション送信回路２２、および、トランザクション受信回路２３により、ＳＣボード３０と接続される。ＳＣボード３０は、プロセッサボード１０−０〜１間、あるいは、プロセッサボード１０−０〜１−メモリボード６０−０〜１間でアドレスおよびデータを通信するためのクロスバユニット４０、および、本発明で特徴的なユニットであるコヒーレンシ報告集計ユニット５０から構成される。クロスバユニット４０とプロセッサボード１０−０〜１、あるいは、メモリボード６０−０〜１は８Ｂ幅の１対１の信号線Ｌ１００−０〜３およびＬ４００−０〜３で接続される。また、コヒーレンシ報告集計ユニット５０とプロセッサボード１０−０〜１も１対１の信号線Ｌ１０１−０〜１、Ｌ５００−０〜１により接続される。この信号線Ｌ１０１−０〜１、Ｌ５００−０〜１は後述するコヒーレンシ報告、および、その制御線であり、片道（３ビット＋若干の制御線）である。コヒーレンシ報告集計ユニット５０とメモリボード６０−０〜１の各々は後述するメモリデータ転送を制御する信号線Ｌ５０１−０〜１により接続される。クロスバユニット４０とコヒーレンシ報告集計ユニット５０は、集計機能に必要な信号を伝達するための信号線Ｌ４５０、Ｌ５４０により接続される。クロスバユニット４０は、スヌープ処理のためのマルチキャスト機能を持つ。クロスバユニット４０内を通るアドレスおよびデータの１単位をここではＳＣトランザクション、あるいは、単にトランザクションと呼ぶ。
【００２４】
本実施の形態においては、クロスバユニット４０のポート０とコヒーレンシ報告集計ユニット５０のポート０には、プロセッサボード１０−０が接続される。同様に、クロスバユニット４０のポート１とコヒーレンシ報告集計ユニット５０のポート１には、プロセッサボード１０−１が接続される。メモリボード６０−０、および、メモリボード６０−１は、クロスバユニット４０およびコヒーレンシ報告集計ユニット５０のポート２、３にそれぞれ接続される。
【００２５】
以下では、まずメモリアクセスの動作概要を図９、および、図１０を用いて説明し、この動作フローの各々のステップの詳細動作を図１〜図８を用いて説明する。
【００２６】
（２）動作概要
以下では、ＣＰＵコア１１によるメモリロードあるいはストア命令実行時で、キャッシュ１２がミスした場合のシステム動作概要を説明する。尚、キャッシュ１２がヒットした場合の動作は一般的なキャッシュを持つプロセッサシステムと同様である。本実施の形態において、キャッシュ１２はストアイン方式を採用する。またキャッシュラインの取り得る状態は、「ダーティ」、「クリーン」、「共有」、「無効」の４状態とする。これは一般にＭＥＳＩプロトコルと呼ばれるものと同一である。「ダーティ」、あるいは、「クリーン」の状態をあるキャッシュラインが示している場合、このラインは他のキャッシュ１２からはキャッシングされていないことが保証される。「クリーン」あるいは「共有」の状態をあるキャッシュラインが示している場合、このライン内のデータは主記憶６１上のデータと一致していることが保証される。各キャッシュライン状態の遷移に関しては、例えば参考文献２を参照されたい。但し、本実施の形態では次の点がこの参考文献記載のものと異なる。すなわち、他プロセッサボード１０−０〜１からのコヒーレントリード要求に対して「ダーティ」状態でヒットした場合、自キャッシュ１２の次状態を「共有」ではなく「無効」にし、主記憶６１には書き戻さない。
【００２７】
プロセッサボード１０−０においてキャッシュミスが発生した場合の動作概要を最新のデータが主記憶中にある場合、および、プロセッサボード１０−１内キャッシュ１２にある場合に分けて図９、および、図１０を用いて説明する。
【００２８】
まず図９を用いて最新のデータが主記憶中にある場合（この場合を動作ケース１と呼ぶ）について説明する。このケースにおいては、プロセッサボード１０−０内のＣＰＵコア１１がロード命令を発行し、そのデータがプロセッサボード１０−０およびプロセッサボード１０−１のキャッシュ１２には存在しないことを仮定する。まずプロセッサボード１０−０内のＣＰＵコア１１はメモリロード要求をキャッシュアクセス制御回路２１に対して送付する（ステップＡ）。キャッシュアクセス制御回路２１がキャッシュミスと判断し（ステップＢ）、トランザクション送信回路２２がコヒーレントリード要求としてデータリードトランザクションをクロスバユニット４０に対して送付する（ステップＣ）。クロスバユニット４０ではこれを全プロセッサボード１０−０〜１、および、指定されたメモリボード６０−０に対してマルチキャストする（ステップＤ）。コヒーレントリード要求を受け取ったプロセッサボード１０−０〜１の各々は（ステップＥ）、内部のキャッシュ１２の状態を検査し、検査結果をコヒーレンシ報告ＣＳＲ  （Ｃｏｈｒｅｎｃｙ  Ｓｔａｔｕｓ  Ｒｅｐｏｒｔ）としてコヒーレンシ報告集計ユニット５０に送付する（ステップＦ）。コヒーレンシ報告集計ユニット５０は、全てのコヒーレンシ報告を受け取った時点でこれを集計し、その集計結果ＣＳＳ（Ｃｏｈｅｒｅｎｃｙ  Ｓｔａｔｕｓ  Ｓｕｍｍａｒｙ）をコヒーレントリード要求元プロセッサボード１０−０へ送付する（ステップＨ）。またこれと同時にメモリボード６０−０に対してメモリデータの転送許可通知を送付する（ステップＨ）。ステップＥ／Ｆと並行して、コヒーレントリード要求を受け取ったメモリボード６０−０は、内部の主記憶６１をアクセスする。コヒーレンシ報告集計ユニット５０から転送許可通知を受けたら、得られたデータをデータトランザクションとして、クロスバユニット４０へ送付する（ステップＩ）。クロスバユニット４０はデータトランザクションをコヒーレントリード要求元のプロセッサボード１０−０へ送付する（ステップＪ）。ＣＳＳおよびメモリデータを受け取ったプロセッサボード１０−０は、データおよび状態をキャッシュ１２へ登録し、またデータをＣＰＵコア１１へ返答する（ステップＬ）。
【００２９】
次に図１０を用いて最新のデータが他プロセッサボード１０−０〜１内キャッシュ１２にある場合（この場合を動作ケース２と呼ぶ）について説明する。このケースにおいては、プロセッサボード１０−０内のＣＰＵコア１１がストア命令を発行し、そのデータがプロセッサボード１０−１のキャッシュ１２内に「ダーティ」で存在することを仮定する。まずプロセッサボード１０−０内のＣＰＵコア１１はストア要求をキャッシュアクセス制御回路２１に対して送付する（ステップＡ）。キャッシュアクセス制御回路２１がキャッシュミスと判断し（ステップＢ）、トランザクション送信回路２２がコヒーレントリード要求としてデータリード−無効トランザクションをクロスバユニット４０に対して送付する（ステップＣ）。クロスバユニット４０ではこれを全プロセッサボード１０−０〜１、および、指定されたメモリボード６０−０に対してマルチキャストする（ステップＤ）。コヒーレントリード要求を受け取ったプロセッサボード１０−１（ステップＥ）において内部のキャッシュ１２を検査した結果、最新のデータを保持しているとキャッシュアクセス制御回路２１が判断した場合、その結果をＣＳＲとしてコヒーレンシ報告集計ユニット５０に送付する（ステップＦ）。さらに、キャッシュ１２から読み出した最新のデータをデータトランザクションとして、クロスバユニット４０へ送付する（ステップＧ）。クロスバユニット４０はデータトランザクションをコヒーレントリード要求元であるプロセッサボード１０−０に送付する（ステップＪ）。プロセッサボード１０−０におけるステップＥ／Ｆの動作は動作ケース１の場合と同様である。全プロセッサボード１０−０〜１からＣＳＲを受け取ったコヒーレンシ報告集計ユニット５０は、ＣＳＲを集計し集計結果をＣＳＳとしてプロセッサボード１０−０に送付する。さらに、コヒーレンシ報告集計ユニット５０は、集計結果ＣＳＳにより主記憶６１からのデータ転送が不要と判断できるため、データ転送抑止通知をメモリボード６０−０に対して送付する（ステップＨ）。コヒーレントリード要求を受け取ったメモリボード６０−０は、データ転送抑止通知が到着しているため、データトランザクションをクロスバユニット４０に送付することなく処理を完了する（ステップＩ）。ＣＳＳおよびデータを受け取ったプロセッサボード１０−０は動作ケース１と同様に、キャッシュ１２に対してデータおよび状態を登録し、かつ、ＣＰＵコア１１からのストアデータを格納する（ステップＬ）。
【００３０】
キャッシュ１２内データの主記憶６１に対する書き戻しは、キャッシュラインの置換時、あるいは、命令による強制的なフラッシュにより行われる。この動作に関しては、従来技術と差がないため、必要な回路および説明を省略する。
【００３１】
（３）動作の詳細
以下では、キャッシュミス時の動作の詳細を、図９における動作ケース１および図１０における動作ケース２に関して説明する。文章中の各項番のうちアルファベット部は、図９、あるいは、図１０の各ステップと対応している。以下で特に動作ケースの指示がない動作内容については、共通の動作となる。
【００３２】
（３−Ａ）キャッシュアクセス
図２を用いてキャッシュアクセス時の動作を説明する。ＣＰＵコア１１内において実行中の命令がメモリアクセス命令、すなわちデータロード命令、あるいは、データストア命令であった場合、キャッシュ制御回路２０内のキャッシュアクセス制御回路２１に対して、信号線Ｌ１１０を経由してアドレスを、信号線Ｌ１１１を経由してアクセス種類、および、トランザクション識別子ＴＸＩＤを送付する。ここで、アクセス種類とは命令ロード、データロード、データストアの区別を指す。
【００３３】
動作ケース１においては、ＣＰＵコア１１はアクセス種類としてデータロードを信号線Ｌ１１１を経由してキャッシュアクセス制御回路２１に送付する。
【００３４】
動作ケース２においては、ＣＰＵコア１１はアクセス種類としてデータストアを信号線Ｌ１１１を経由してキャッシュアクセス制御回路２１に送付する。
【００３５】
（３−Ｂ）キャッシュミス判定
図２を用いてキャッシュミス判定時の動作を説明する。キャッシュアクセス制御回路２１においては、送付されたアドレスを基にキャッシュ１２を信号線Ｌ２１２を経由してアクセスし、キャッシュラインの状態を調べる。もし、指定されたアドレスに対応するキャッシュラインが存在しないか、存在してもその状態が有効でなかったらキャッシュ１２がミスしたと判定し、信号線Ｌ２１４を経由してアドレスを、信号線Ｌ２１５を経由してトランザクション種類を、信号線Ｌ２１３を経由してトランザクション識別子ＴＸＩＤ、および、自ポート番号０をトランザクション送信回路２２に送付する。トランザクション種類は、ＣＰＵコア１１から信号線Ｌ１１１経由で送付されたアクセス種により定められ、命令ロードの場合は命令リード、データロードの場合はデータリード、データストアの場合はデータリード−無効化となる。キャッシュ１２の検査方法に関しては従来のキャッシュ制御方式と同様の技術であるため、ここでは説明を省略する。
【００３６】
動作ケース１においては、ＣＰＵコア１１からのアクセス種がデータロードであるため、トランザクション種はデータリードとなる。
【００３７】
動作ケース２においては、  ＰＵコアからのアクセス種がデータロードであるため、トランザクション種はデータリード−無効化となる。
【００３８】
（３−Ｃ）ＳＣトランザクション発行
図３および図５を用いてＳＣトランザクションの発行動作について説明する。キャッシュアクセス制御回路２１から送付されたトランザクション種およびアドレスを基にコヒーレントリード要求となるＳＣトランザクションを生成し、ＳＣボード内クロスバユニット４０に対して発行する。ＳＣトランザクションのフォーマットを図５に示す。ＳＣトランザクションはデータ線Ｌ１００−０〜３をヘッダサイクルＴ０、アドレスサイクルＴ１、データサイクルＴ２に分けて使用する。ヘッダサイクルＴ０はクロスバユニット４０に対する指示を示しており、配布モードを示すヘッダ種Ｔ３、配布先を示すヘッダポート番号Ｔ４から成る。尚、ヘッダサイクルＴ０はクロスバユニット４０に対する指示を示しており、クロスバユニット４０から各ボード１０−０〜１、６０−０〜１に対しては出力されない。アドレスサイクルＴ１はプロセッサボード１０−０〜１、あるいは、メモリボード６０−０〜１に対する指示を示しており、各フィールドの意味としては、ＴＸ種Ｔ５は信号線Ｌ２１５を経由して指示されたトランザクション種、アドレスＴ６は信号線Ｌ２１４を経由して指示されたアドレス、ポート番号Ｔ７およびＴＸＩＤ  Ｔ８は信号線Ｌ２１３を経由して指示されたものである。データサイクルＴ２中のデータはメモリボード６０−０〜１からのデータリターン時、あるいはプロセッサボード１０−０〜１からのプロセッサボード間転送時に送付されるべきデータを保持しており、６４Ｂデータを送付する際は、８サイクルを要する。ただし、本実施の形態ではクロスバユニット４０と各ボードを接続する信号線Ｌ１００−０〜３、Ｌ４００−０〜３の幅は片道８Ｂである。コヒーレントリード要求を送付する場合は、データサイクルＴ２は不要である。
【００３９】
トランザクション送信回路２２では、信号線Ｌ２１５を経由して指示されたトランザクション種を用い、ヘッダ生成回路においてヘッダ種Ｔ３を生成する。これはトランザクション種に対して一意に定まるものであり、表１の関係がある。
【００４０】
【表１】
0003864509.tif 000002
【００４１】
トランザクション種がデータリード、あるいは、データリード−無効化の場合、ヘッダポート番号Ｔ４としてアクセスを行うメモリボード６０−０〜１のポート番号を生成する必要がある。これはメモリボード６０−０〜１のインタリーブ方法、および、アクセスするアドレスにより定まる。本実施の形態においては６４Ｂ毎にインタリーブしているため、アドレスの下位７ビット目が０の場合ポート番号２を、アドレスの下位７ビット目が１の場合、ポート番号３を示す。この変換は信号線Ｌ２１４を経由してアドレスを受けた主記憶ポート番号生成回路２２０により行われ、生成されたヘッダポート番号Ｔ４はヘッダ生成回路２２１によりヘッダ種Ｔ３とマージされ、信号線Ｌ２２１を経由してヘッダサイクルＴ０を保持するレジスタ２２６に格納される。
【００４２】
アドレスサイクルＴ１を保持するレジスタ２２５には、信号線Ｌ２１５を経由して通知されたトランザクション種、信号線Ｌ２１４を経由して通知されたアドレス、信号線Ｌ２１３を経由して通知されたポート番号およびＴＸＩＤ、がマージされて格納される。
【００４３】
ヘッダサイクルＴ０、アドレスサイクルＴ１が揃ったところで、ヘッダサイクルＴ０、アドレスサイクルＴ１の順にセレクタ２２７は選択して信号線Ｌ１００−ｉ（ｉ＝０，１）、ＳＣトランザクションとしてクロスバユニット４０に送出する。
【００４４】
またコヒーレントリード要求のアドレスサイクルＴ１の送付時には、ＴＸＩＤＴ８、および、アドレスＴ６をトランザクション受信回路２３へも信号線Ｌ２２０を経由して送付する。トランザクション受信回路２３では、受け取ったＴＸＩＤ  Ｔ８、および、アドレスＴ６をリードデータキュー２３０のＴＸＩＤフィールド２３１、および、ＡＤＤＲフィールド２３１へそれぞれ格納する。
【００４５】
動作ケース１においてトランザクション種がデータリードであるため、ヘッダサイクルＴ０におけるヘッダ種Ｔ３はＭＭＣとなる。動作ケース２においてトランザクション種がデータリード−無効化であるため、ヘッダサイクルＴ０におけるヘッダ種Ｔ３は同様にＭＭＣとなる。またいずれの動作ケースにおいてもアクセスするアドレスの下位７ビット目が０の場合を仮定し、ヘッダサイクルＴ０におけるヘッダポート番号Ｔ４は２となる。
【００４６】
（３−Ｄ）マルチキャスト
プロセッサボード１０−０からＳＣトランザクションを受け取ったクロスバユニット４０は、これをヘッダサイクルＴ０の指示に従い、プロセッサボード１０−０〜１、あるいは、メモリボード６０−０〜１へ送付する。以下ではマルチキャスト時の動作について説明する。
【００４７】
図６はクロスバユニット４０の内部構造を示している。ＩＮＱ  ４０１−０〜２はプロセッサボード１０−０〜１、メモリボード６０−０〜１の各々から送付されたＳＣトランザクションを一時的に格納するキューである。図６においては、図面の都合上３ポートしか図示していない。ＩＮＱＣＴＬ  ４０２−０〜２はＩＮＱ  ４０１−０〜２内に存在するＳＣトランザクションのヘッダサイクルＴ０をデコードし、ヘッダ種Ｔ３が１対１転送を指示している場合、出力ポート４０３−０〜２のアービタＡＲＢ４０４−０〜２へ調停要求を送付する。また、ヘッダ種Ｔ３がマルチキャスト転送を指示している場合、本発明で特徴的なマルチキャストアービタＭＣＡＲＢ  ４０６へ調停要求を送付する。  信号線Ｌ４０２〜２はＩＮＱＣＴＬ  ４０２−０〜２からの調停要求を送付するのに使用される。ＭＣＡＲＢ  ４０６はマルチキャスト転送のためのアービタである。ＭＣＱ４０８はＭＣＡＲＢ  ４０６の調停結果を保持するキューであり、調停順序に応じてｉｎ−ｏｒｄｅｒで管理される。ＭＣＤＱ４０９はＭＣＡＲＢ  ４０６の調停結果により選択されたＳＣトランザクションのアドレスサイクルＴ１およびデータサイクルＴ２を保持するキューであり、ＭＣＱ４０８と連動して管理される。ＩＤ送付回路４１０は、ＭＣＱ４０８の内容を基にコヒーレンシ報告集計ユニット５０に対して、ＣＳＳを送付すべきポート番号を送付する。ＡＲＢ４０４−０〜２は各ＩＮＱＣＴＬ  ４０２−０〜２、および、ＭＣＡＲＢ  ４０６からの調停要求を調停する回路である。信号線Ｌ４０３〜２およびＬ４０９はＩＮＱ  ４０１−０〜２、および、ＭＣＤＱ４０９からＳＣトランザクションのアドレスサイクルＴ１およびデータサイクルＴ２を送付するのに使用される。
【００４８】
以下で動作ケース１におけるコヒーレントリード要求の送付動作について説明する。まず、プロセッサボード１０−０が接続されている入力ポート４００−０にＳＣトランザクションが到着し、ＩＮＱ４０１−０へ格納される。ＩＮＱＣＴＬ４０２−０はＩＮＱ４０１−０の先頭からＳＣトランザクションのヘッダサイクルＴ０を解釈する。この場合ヘッダサイクルＴ０はＭＭＣであり、ヘッダポート番号Ｔ４は指定すべきメモリボード６０−０〜１の接続されているポート番号すなわち「２」を示している。ヘッダ種Ｔ３がＭＭＣであることを解釈すると、ＩＮＱＣＴＬ４０２−０は信号線Ｌ４０２−０を経由して、調停要求、ヘッダ種Ｔ３、および、ヘッダポート番号Ｔ４をＭＣＡＲＢ  ４０６へ送付する。ＭＣＡＲＢ  ４０６では、他ＩＮＱＣＴＬ  ４０２−１〜２からの調停要求との調停を行い、ＩＮＱＣＴＬ４０２−０からの調停要求が勝利した場合、ＳＣトランザクションの配付先、勝利したポート番号、ヘッダポート番号Ｔ４、ＩＤ送付の有無をＭＣＱ４０８へ格納する。この場合ＳＣトランザクションの配付先はポート０、ポート１、ポート２であり、勝利したポート番号は０、ヘッダポート番号Ｔ４は２、ＩＤ送付の有無は１である。ＩＤ送付の有無はヘッダ種Ｔ３がＭＭＣの時のみ「１」であり、これ以外の場合「０」である。セレクタ４０７はＭＣＡＲＢ４０６の調停結果を受け取り、調停結果の示す入力ポート、すなわち、入力ポート４００−０から信号線Ｌ４０３−０を経由して送付されたアドレスサイクルＴ１を選択し、ＭＣＤＱ４０９へ格納する。
【００４９】
コヒーレンシ報告集計ユニット５０からのビジー信号５４０がアサートされていない場合、ＭＣＱ４０８の先頭に格納されているＳＣトランザクション配付先のＡＲＢ４０４−０〜２へ信号線Ｌ４０８を経由して調停要求を送付する。またＭＣＤＱ４０９は先頭のＳＣトランザクションを信号線Ｌ４０９経由で各出力ポート４０３−０〜２へ送付する。コヒーレンシ報告集計ユニット５０からのビジー信号５４０がアサートされている場合、ＭＣＱ４０８からの調停要求の送付は行わない。各ＡＲＢ４０４−０〜２では受け取った調停要求を調停し、ＭＣＱ４０８からの調停要求が勝利した場合、セレクタ４０５−０〜２を制御し、ＭＣＤＱ４０９から信号線Ｌ４０９を経由して送付されたＳＣトランザクションを、信号線Ｌ４００−０〜２経由で送付先であるプロセッサボード１０−０、プロセッサボード１０−１、メモリボード６０−０へ送付する。もしＭＣＱ４０８からの調停要求が敗北した場合、各ＡＲＢ４０４−０〜２において次の調停機会では、必ずＭＣＱ４０８からの調停要求が勝利するように制御する。全ＡＲＢにおいて調停が勝利したらＭＣＱ４０８、および、ＭＣＤＱ４０９は先頭をデキューする。上記制御により、コヒーレントリード要求は、ＭＣＡＲＢ  ４０６において計算機システム内での順序が付けられ、この順に従い各プロセッサボード１０−０〜１、あるいは、メモリボード６０−０〜１に送付される。ただし、その到着時刻は必ずしも同時でなくても構わない。
【００５０】
コヒーレンシ報告集計ユニット５０からのビジー信号５４０がアサートされていない場合、ＭＣＱ４０８の先頭エントリにおけるＩＤ送付の有無の情報に従い、ＩＤ送付回路４１０はＭＣＱ４０８内の勝利したポート番号、および、ヘッダポート番号Ｔ４を信号線４５０を経由してコヒーレンシ報告集計ユニット５０へ送付する。コヒーレンシ報告集計ユニット５０からのビジー信号５４０がアサートされている場合、この送付は行わない  。
【００５１】
動作ケース２においても動作ケース１と同様の動作を行う。
【００５２】
（３−Ｅ）スヌープアドレス受信
図４はトランザクション受信回路の内部構造を示している。ＴＸデコーダ２３６はクロスバユニット４０から送付されるＳＣトランザクションの解釈を行い、受け取ったＳＣトランザクションがコヒーレントリード要求の場合、スヌープアドレスキュー２３５にこれを格納する。受け取ったＳＣトランザクションがデータリターンあるいはプロセッサボード間転送であった場合に、リードデータキュー２３０はＳＣトランザクション中のデータサイクルＴ２を格納する。また（３−Ｃ）で述べたように、リードデータキュー２３０はトランザクション送信回路２２から送付されたＴＸＩＤおよびアドレスを格納し、さらにコヒーレンシ報告集計ユニット５０から送付されたコヒーレンシ報告の集計結果ＣＳＳを格納し、データ到着制御を行う。この動作は（３−Ｋ）で詳しく述べる。
【００５３】
動作ケース１におけるスヌープアドレス受信時、クロスバユニット４０より信号線Ｌ４００−ｉ（ｉ＝０，１）を経由してＳＣトランザクションを受け取った各プロセッサボード１０−ｉは、これをＴＸデコーダ２３６で解釈する。ＳＣトランザクション中アドレスサイクルＴ１のＴＸ種Ｔ５がデータリードであるため、  ＴＸデコーダ２３６は信号線Ｌ２３７経由でＳＣトランザクションをスヌープアドレスキュー２３５に送付し、これを格納する。スヌープアドレスキュー２３５はｉｎ−ｏｒｄｅｒで管理され、キューの先頭から信号線Ｌ２３１を経由して、キャッシュアクセス制御回路２１へコヒーレントリード要求を送付する。
【００５４】
動作ケース２におけるスヌープアドレス受信時も、ＳＣトランザクション中アドレスサイクルＴ１のＴＸ種Ｔ５がデータリード−無効化であるため、動作内容は上記と同様である。
【００５５】
（３−Ｆ）コヒーレンシ報告発行
図２を用いてコヒーレンシ報告発行動作の内、キャッシュアクセスの動作を説明する。信号線Ｌ２３１を経由してコヒーレントリード要求を受け取ったキャッシュアクセス制御回路２１は、信号線Ｌ２１２を用いてキャッシュ１２をアクセスし、キャッシュラインの状態を信号線Ｌ１２０経由で得る。またキャッシュラインの状態はトランザクション送信回路２２にも送付される。この際、キャッシュアクセス制御回路２１はトランザクション種を信号線Ｌ２１５経由でトランザクション送信回路２２に送付する。キャッシュアクセス制御回路２１では、コヒーレントリード要求中のトランザクション種、および、得られたキャッシュラインの状態により、もし必要があればキャッシュラインの状態の更新を行う。更新が必要な場合とは、例えばトランザクション種がデータリード−無効化であり、キャッシュライン状態が「無効」以外であった場合は、キャッシュラインの状態を「無効」に更新する。トランザクション種がデータリードで、キャッシュラインの状態が「クリーン」の場合、キャッシュラインの状態を「共有」に更新する。トランザクション種がデータリードで、キャッシュラインの状態が「ダーティ」の場合、キャッシュラインの状態を「無効」に更新する。キャッシュ状態更新の具体的な動作については従来のスヌープキャッシュと同様の制御であるため、詳細な説明は省略する。
【００５６】
次に図３を用いてコヒーレンシ報告の発行動作を説明する。トランザクション送信回路２２においてコヒーレンシ報告生成回路２２２は、上述のようにキャッシュ１２から信号線Ｌ１２０経由でキャッシュラインの状態を受け取り、キャッシュアクセス制御回路２１から信号線Ｌ２１５経由でトランザクション種を受け取る。これらを基に表２に従いコヒーレンシ報告ＣＳＲを生成する。
【００５７】
【表２】
0003864509.tif 000003
【００５８】
生成したコヒーレンシ報告ＣＳＲはコヒーレンシ報告格納用レジスタ２２３に格納され、信号線Ｌ１０１−ｉ（ｉ＝０，１）を経由して、コヒーレンシ報告集計ユニット５０に送付される。
【００５９】
動作ケース１において、プロセッサボード１０−０の動作としては、コヒーレンシ報告生成回路２２２が受け取るキャッシュの状態は「無効」であり、トランザクション種はデータリードであるため、生成するコヒーレンシ報告はＤＯＮＥとなる。プロセッサボード１０−１の動作も同様である。
【００６０】
動作ケース２において、プロセッサボード１０−０の動作としては、コヒーレンシ報告生成回路２２２が受け取るキャッシュの状態は「無効」であり、トランザクション種はデータリード−無効化であるため、生成するコヒーレンシ報告はＤＯＮＥとなる。プロセッサボード１０−１の動作としては、コヒーレンシ報告生成回路２２２が受け取るキャッシュラインの状態は「ダーティ」であり、トランザクション種はデータリード−無効化であるため、生成するコヒーレンシ報告はＤＩＲＴＹとなる。
【００６１】
（３−Ｇ）データトランザクション発行
キャッシュアクセス制御回路２１において、コヒーレントリード要求に対してキャッシュラインの状態が「ダーティ」であった場合、プロセッサボード１０−０〜１間でのデータ転送のためのＳＣトランザクションを生成し、クロスバユニット４０経由で、コヒーレントリード要求元プロセッサボード１０−０〜１に送付する必要がある。
【００６２】
図２において、（３−Ｆ）で述べたようにスヌープアドレスキュー２３５から信号線Ｌ２３１経由でコヒーレントリード要求を受け付けたキャッシュアクセス制御回路２１は、キャッシュ１２をアクセスし、キャッシュライン状態を信号線Ｌ１２０経由で得る。キャッシュライン状態が「ダーティ」であった場合、キャッシュアクセス制御回路２１は、信号線Ｌ２３１経由でトランザクション種としてプロセッサボード間転送をトランザクション送信回路２２に送付する。また、コヒーレントリード要求のアドレス部分を信号線Ｌ２１４経由で、コヒーレントリード要求中のポート番号およびＴＸＩＤを信号線Ｌ２１３経由でトランザクション送信回路２２に送付する。
【００６３】
トランザクション送信回路２２では、（３−Ｃ）で述べた手順に従い、信号線Ｌ１００−ｉ（ｉ＝０，１）経由でクロスバユニット４０に対してプロセッサボード間転送トランザクションを送付する。ただし、以下の点が（３−Ｃ）の手順と異なる。まず、ヘッダ生成回路２２１においてヘッダポート番号を信号線Ｌ２１３を経由して送付されたポート番号とする。また、信号線Ｌ１２０経由でキャッシュから送付されたデータをレジスタ２２４に格納し、ＳＣトランザクションのアドレスサイクルＴ１の後にデータサイクルＴ２として付加する。
【００６４】
上記動作は、動作ケース１のプロセッサボード１０−１での動作となる。
【００６５】
（３−Ｈ）コヒーレンシ報告集計
図７を用いてコヒーレンシ報告集計の動作を説明する。コヒーレンシ報告集計ユニット５０において、ＣＳＲＱ５０３−０〜１は各プロセッサボード１０−０〜１から送付されたコヒーレンシ報告ＣＳＲを一時的に格納するキューであり、ｉｎ−ｏｒｄｅｒで管理される。ＤＩＤＱ５０１はコヒーレンシ報告の集計結果ＣＳＳを送付すべきポート番号を格納しているキューであり、ＭＩＤＱ５０２はデータ転送の許可あるいは抑止通知を送付すべきポート番号を格納しているキューである。ＤＩＤＱ５０１およびＭＩＤＱ５０２はｉｎ−ｏｒｄｅｒで管理される。集計回路５０７はＣＳＲＱ５０３−０〜１の内容を集計する回路であり、発火回路５０６により起動される。抑止信号生成回路５０８は集計回路によって得られたＣＳＳを基にメモリボード６０−０〜１に対してデータ転送許可通知、あるいは、抑止通知を送付する。
【００６６】
以下で動作フローを説明する。コヒーレンシ報告集計ユニット５０は、まず（３−Ｄ）で述べた様に、クロスバユニット４０から信号線Ｌ４５０経由で集計したＣＳＳの送付先ポート番号、および、データ転送抑止に使用するメモリボードポート番号を受け取り、これをＤＩＤＱ５０１およびＭＩＤＱ５０２にそれぞれ格納する。次に（３−Ｆ）で述べた様に、プロセッサボード１０−０〜１の各々から信号線Ｌ１０１−０〜１経由でコヒーレンシ報告ＣＳＲを受け取り、各々のポートに対応するＣＳＲＱ５０３−０〜１に格納する。ＣＳＲＱ５０３−０〜１の先頭に有効なＣＳＲが存在しているか否かが信号線Ｌ５０３−０〜１を経由して発火回路５０６に通知される。また、どのポートにプロセッサボード１０−０〜１が接続されているかを示す集計マスク５０５の内容が、信号線Ｌ５０５を経由して発火回路５０６に通知される。集計マスク５０５の各々のビットは、各ポートに対応し、「１」の場合はそのポートにプロセッサボード１０−０〜１が接続されていることを示す。本実施の形態においては、集計マスクのビットはいずれも「１」である。発火回路５０６においては、集計マスクが「１」であるポートの全てにおいて、対応するＣＳＲＱ５０３−０〜１の先頭にＣＳＲが存在することが信号線Ｌ５０３−０〜１で通知された場合、ＣＳＲの集計が可能であると判断し、信号線Ｌ５０６を用い集計回路５０７を起動する。集計回路５０７には信号線Ｌ５０３−０〜１を経由してＣＳＲＱ５０３−０〜１からＣＳＲが送付される。また集計マスク５０５の内容が信号線Ｌ５０５を経由して送付される。さらに信号線Ｌ５１１を経由してＤＩＤＱ５０１から送付先ポート番号の存在が通知される。集計回路５０７は、表３の条件に従いＣＳＲの集計を行いＣＳＳの生成を行う。ただし、集計マップ５０１のビットが「０」であるポートに対するＣＳＲは、全て「ＤＯＮＥ」であるとみなす。
【００６７】
【表３】
0003864509.tif 000004
【００６８】
集計回路５０７は、さらにＣＳＳが生成された時点で、信号線Ｌ５１１を経由して送付されたＤＩＤＱ５０１の先頭の内容が有効であるか否かを調べ、もし有効でなければＣＳＳをＥＲＲに置き換える。集計回路５０７は、生成したＣＳＳを信号線Ｌ５０７を経由してＤｅＭＵＸ５０４（デマルチプレクサ）へ送付する。またＤＩＤＱ５０１はその先頭の内容を信号線Ｌ５１１を経由して送付先ポート番号をＤｅＭＵＸ５０４へ送付する。ＤｅＭＵＸ５０４は通知された送付先ポート番号に従い、ＣＳＳを信号線Ｌ５００−０〜１を経由してプロセッサボード１０−０〜１へ送付する。また集計回路５０７は生成したＣＳＳを信号線Ｌ５０７を経由して抑止信号生成回路５０８へ送付する。抑止信号生成回路５０８は、ＣＳＳがＤＩＲＴＹの場合、抑止通知を、それ以外の場合転送許可通知を、信号線Ｌ５０８を経由してＤｅＭＵＸ５１０に送付する。ＭＩＤＤＱ５０２はその先頭のメモリボードポート番号を信号線Ｌ５０２を経由してＤｅＭＵＸ５１０へ送付する。ＤｅＭＵＸ５１０は指定されたメモリポート番号の示すメモリボード６０−０〜１に対して、抑止通知あるいは転送許可通知を信号線Ｌ５０１−０〜１経由で送付する。
【００６９】
キャッシュ１２アクセスの遅延などの理由であるプロセッサボード１０−ｉ（ｉ＝０，１）からのＣＳＲの到着が遅れた場合、他プロセッサボード１０−ｊ（ｊ＝０，１）に対応するＣＳＲＱ５０３−ｊ（ｊ＝０，１）がオーバフローする可能性がある。このオーバフローを避けるためにコヒーレンシ報告集計ユニット５０から各々のプロセッサボード１０−０〜１に対してＣＳＲＱ５０３−０〜１のビジーを伝える方法が考えられる。しかしこの場合コヒーレンシ報告集計ユニット５０のピン数およびプロセッサボード１０−０〜１のピン数が増大する。そこで本実施の形態では、まずＤＩＤＱ５０１およびＭＩＤＱ５０２のキュー長を、ＣＳＲＱ５０３−０〜１のキュー長に比べて同じか少なくしておき、ＤＩＤＱ５０１がオーバフローしそうな場合は、ビジーをクロスバユニット４０に通知し、コヒーレントリード要求のマルチキャストを抑止する。こうすることで同時に存在し得るＣＳＲの最大数をＤＩＤＱ５０１に登録されている数に制限できるためＣＳＲＱ５０３−０〜１のオーバフローを避けることができる。この方式を採用することでクロスバユニット４０とコヒーレンシ報告集計ユニット５０の間に１本のビジー信号Ｌ５４０のみが必要となり、全てのＣＳＲＱ５０３−０〜１のビジー線が不要となる。動作としては、ビジー制御回路５００がＤＩＤＱ５０１に登録されている数を管理し、オーバフローしそうな場合はビジー信号Ｌ５４０をアサートする。ビジー信号Ｌ５４０アサート時の動作は（３−Ｄ）で説明したようにマルチキャストを抑止する。
【００７０】
集計マスク５０５の設定については、種々の方式があり得る。本実施の形態では、システムの立ち上げ時にプロセッサボード１０−０〜１の各々が一定期間信号線Ｌ１０１−０〜１を経由して固定パターン、例えばＤＯＮＥをコヒーレンシ報告集計ユニット５０に送付しておき、コヒーレンシ報告集計ユニット５０内のマスク生成回路５０４では、これを観測して指定された固定パターン、例えばＤＯＮＥを送付しているプロセッサボード１０−０〜１に対応する集計マスク５０４のビットに「１」を設定し、これ以外のビットには「０」を設定する。これ以外にも、集計マスクを保持しているレジスタをあるＩ／Ｏ空間にマッピングしておき、ＣＰＵコア１１がこのＩ／Ｏ空間に対して書き込みを行うことで、設定を行うといった方式があり得る。
【００７１】
動作ケース１において上記動作は、クロスバユニット４０の送付内容によりＤＩＤＱ５０１には「０」が、ＭＩＤＱ５０２には「２」が格納される。プロセッサボード１０−０〜１から送付されるＣＳＲが全てＤＯＮＥであり、集計回路５０７により生成されるＣＳＳはＤＯＮＥとなる。これをプロセッサボード１０−０に送付する。また転送許可信号をメモリボード６０−０に対して送付する。
【００７２】
動作ケース２において上記動作は、クロスバユニット４０の送付内容によりＤＩＤＱには「０」が、ＭＩＤＱには「２」が格納される。プロセッサボード１０−０から送付されるＣＳＲはＤＯＮＥであり、プロセッサボード１０−１から送付されるＣＳＲはＤＩＲＴＹであるため、集計回路５０７により生成されるＣＳＳはＤＩＲＴＹとなる。これをプロセッサボード１０−０に送付する。また転送抑止信号をメモリボード６０−０に対して送付する。
【００７３】
本実施の形態では、クロスバユニット４０は、ＣＳＳの送付先ポート番号及びデータ転送抑止に使用するメモリポート番号をコヒーレンシ報告集計ユニット５０へ送付していた。上記ポート番号は、各プロセッサボード１０−０〜１がコヒーレントリードトランザクション中のアドレスサイクルＴ１を基に生成し、生成した上記ポート番号をＣＳＲの送付時に各プロセッサボード１０−０〜１がコヒーレンシ報告集計ユニット５０へ信号線Ｌ１０１−０〜１を経由して送付することは可能である。しかし、この場合、信号線Ｌ１０１−０〜１が増加するためコヒーレンシ報告集計ユニット５０のピン数が増加する。そこで、本実施の形態では、上記ポート番号をコヒーレントリードトランザクションの送付時に、クロスバユニット４０から送付している。これにより、コヒーレンシ報告集計ユニット５０のピン数を削減することができる。
【００７４】
（３−Ｉ）データトランザクション発行／データ転送抑止
図８を用いてメモリボード６０−０〜１におけるデータトランザクション発行およびデータ転送抑止の動作を説明する。メモリボード６０−０〜１は主記憶６１と主記憶制御回路７０を備え、主記憶制御回路７０内にはコヒーレントリードのためのアドレスおよびデータを保持するコヒーレントリードキュー７０１と、命令リードのためのアドレスおよびデータを保持する命令リードキュー７０６を備える。コヒーレントリードキュー７０１と命令リードキュー７０６はそれぞれＳＣトランザクションを受けた順にｉｎ−ｏｒｄｅｒで処理される。コヒーレントリードキュー７０１と命令リードキュー７０６が分かれているのは、コヒーレントリードに関してはデータのプロセッサボード１０−０〜１への転送を抑止可能とするためである。
【００７５】
主記憶制御回路７０内のＴＸデコーダ７００は信号線Ｌ４００−ｉ（ｉ＝０，１）経由でクロスバユニット４０からＳＣトランザクションを受け取り、ＴＸ種Ｔ５をデコードし、もしデータリードあるいはデータリード−無効化であればコヒーレントリードキュー７０１に、アドレスサイクルＴ１中のアドレスＴ６、ポート番号Ｔ７、ＴＸＩＤＴ８を、ＡＤＤＲフィールド７０３、ＤＩＤフィールド７１４、ＴＸＩＤフィールド７０２、それぞれ格納する。ＴＸ種Ｔ５が命令リードであれば命令リードキュー７０６に、アドレスサイクルＴ１中のアドレスＴ６、ポート番号Ｔ７、ＴＸＩＤＴ８を、ＡＤＤＲフィールド７０８、ＤＩＤフィールド７１５、ＴＸＩＤフィールド７０７に、それぞれ格納する。コヒーレントリードキュー７０１は先頭からＡＤＤＲを信号線Ｌ７１３経由で調停／セレクタ７１０へ送付し、調停に勝利した場合、主記憶６１に信号線Ｌ７１０経由でＡＤＤＲを送付し、主記憶６１をアクセスする。アクセスした結果得られたデータは信号線Ｌ６１０経由でコヒーレントリードキュー７０１に送付され、該当するエントリに格納される。これと並行して主記憶制御回路７０は、コヒーレンシ報告集計ユニット５０から信号線Ｌ５０１−ｉ（ｉ＝０，１）を経由して抑止通知あるいは転送許可通知を受け取り、コヒーレントリードキュー７０１のＥＮフィールド７０５に順次格納する。コヒーレントリードキュー７０１の先頭エントリのＤＡＴＡフィールド７０４、および、ＥＮフィールド７０５が有効になったら、トランザクション生成回路７１１へコヒーレントリードキュー７０１の先頭エントリの内容を信号線Ｌ７０１を経由して送付する。トランザクション生成回路７１１においては、ＥＮフィールド７０５がもし抑止である場合は、コヒーレントリードキュー７０１からデキューするのみで、データをプロセッサボード１０−０〜１に対して送付しない。もしＥＮフィールド７０５が転送許可である場合は、コヒーレントリードキュー７０１の内容によりＳＣトランザクションを生成する。この際、ヘッダサイクルＴ０におけるヘッダ種Ｔ３はＳＵ、ヘッダポート番号Ｔ４はＤＩＤフィールド７１４の内容となる。アドレスサイクルＴ１のＴＸ種Ｔ５はデータリターン、アドレスＴ６はＡＤＤＲフィールド７０３の内容、ポート番号Ｔ７はＤＩＤフィールド７１４の内容、ＴＸＩＤＴ８はＴＸＩＤフィールド７０２の内容、となる。データサイクルＴ２はＤＡＴＡフィールド７０４の内容を８サイクルに分けて送付する。トランザクション生成回路７１１は生成したＳＣトランザクションを調停／セレクタ７１３へ信号線Ｌ７１１を経由して送付し、調停／セレクタ７１３は調停に勝利したＳＣトランザクションを、信号線Ｌ１００−ｉ（ｉ＝０，１）経由で主記憶制御回路７０からクロスバユニット４０へ送付する。命令リードキュー７０６の動作については、ＥＮフィールド７０５が存在せず、したがって、データリターンの抑止がないこと以外はコヒーレントリードキュー７０１の動作と同じである。
【００７６】
動作ケース１の場合はＴＸ種Ｔ５がデータリードである。またコヒーレンシ報告集計ユニット５０からは転送許可通知が送付されるため、ＳＣトランザクションとしてデータリターンをクロスバユニット４０へ送付する。
【００７７】
動作ケース２の場合はＴＸ種Ｔ５がデータリード−無効化である。またコヒーレンシ報告集計ユニット５０からは転送抑止通知が送付されるため、ＳＣトランザクションを送付せず、コヒーレントリードキューのデキューのみを行う。
【００７８】
（３−Ｊ）１対１転送
以下では図６を用いて、動作ケース１においてメモリボード６０−０からプロセッサボード１０−０へのデータリターントランザクション処理時のクロスバユニット４０の動作について説明する。クロスバユニット４０は信号線Ｌ１００−２を経由してＳＣトランザクションをメモリボード６０−０から受け取り、ＩＮＱ４０１−２へ格納する。ＩＮＱＣＴＬ４０２−２はＩＮＱ４０１−２の先頭エントリに関して、ヘッダサイクルＴ０の解釈を行い、ヘッダ種Ｔ３がＳＵである場合、ヘッダサイクルＴ０のヘッダポート番号Ｔ４により指定される出力ポート０４０３−０に対応するＡＲＢ４０４−０へ信号線Ｌ４０２−２を経由して調停要求を送付する。ＡＲＢ４０４−０では調停処理を行い、もしＩＮＱＣＴＬ４０２−２からの要求が勝利した場合、ＡＲＢ４０４−０はセレクタ４０５−０へ調停結果を信号線Ｌ４０４−０を経由して通知し、セレクタ４０５−０はＩＮＱ４０１−２から信号線Ｌ４０３−２を経由して送付されるアドレスサイクルＴ１およびデータサイクルＴ２を選択し、信号線Ｌ４００−０を経由してプロセッサボード１０−０へＳＣトランザクションを送付する。
【００７９】
動作ケース２におけるプロセッサボード間転送時も、ＳＣトランザクションの発行元がプロセッサボード１０−１であり、ＳＣトランザクションを受け付ける入力ポートが入力ポート４００−１であることを除けば、上記と同様のフローとなる。
【００８０】
尚、命令リード時に送付されるＳＣトランザクションにおいてヘッダ種Ｔ３はＱＭとなるが、この送付動作もここで説明したヘッダ種Ｔ３がＳＵ時の動作と同様である。
【００８１】
（３−Ｋ）データ／状態受信
以下では図４を用いてプロセッサボード１０−０〜１におけるデータおよびＣＳＳの受信制御について説明する。トランザクション受信回路２３内のリードデータキュー２３０は、データのリターンおよびＣＳＳの到着を待ち合わせるためのキューである。リードデータキュー２３０におけるＴＸＩＤフィールド２３１およびＡＤＤＲフィールド２３２はコヒーレントリード要求発行時にトランザクション送信回路２２から送付されるＴＸＩＤおよびアドレスを格納する。またＤＡＴＡフィールド２３３はデータリターントランザクションあるいはプロセッサボード間転送トランザクションのデータサイクルＴ２を格納する。ＣＳＳフィールド２３４はＣＳＳを格納する。ＴＸＩＤフィールド、ＡＤＤＲフィールド、ＣＳＳフィールドの格納はｉｎ−ｏｒｄｅｒで行う。ＤＡＴＡフィールドの格納はｏｕｔ−ｏｆ−ｏｒｄｅｒで行い、格納すべきエントリはＴＸＩＤをキーとして検索する。リードデータキューのデキューはｉｎ−ｏｒｄｅｒで行う。
【００８２】
動作ケース１におけるデータ／ＣＳＳ受信動作について説明する。トランザクション受信回路２３は、信号線Ｌ４００ｉ−ｉ（ｉ＝０，１）を経由して送付されたＳＣトランザクションを、ＴＸデコーダ２３６において解釈し、Ｔｘ種Ｔ５がデータリターンであるため、アドレスサイクルＴ１内ＴＸＩＤＴ８の内容と同一のＴＸＩＤフィールド２３１の内容を持つリードデータキュー２３０のエントリへ、ＳＣトランザクションのデータサイクルＴ２を信号線Ｌ２３６を経由して格納する。またこれとは非同期にトランザクション受信回路２３はコヒーレンシ報告集計ユニット５０から信号線Ｌ５００−ｉ（ｉ＝０，１）経由で送付されたＣＳＳを受け取り、これを順次リードデータキュー２３０のＣＳＳフィールド２３４へ格納する。ここで、ＣＳＳの到着はコヒーレントリード要求の発行順に返答されることを期待しており、データリターンは、コヒーレントリード要求の発行順序とは無関係に返答されても構わない。リードデータキュー２３０の先頭において、ＤＡＴＡフィールド２３３およびＣＳＳフィールド２３４が有効となった場合、このエントリの内容を全て、信号線Ｌ２３０経由でキャッシュアクセス制御回路２１へ送付する。
【００８３】
動作ケース２においては、ＴＸ種Ｔ５がデータリターンではなくプロセッサボード間転送であるが、動作は上記と同様である。
【００８４】
（３−Ｌ）キャッシュ登録／ＣＰＵコア返答
図２においてトランザクション受信回路２３から信号線Ｌ２３０経由でリターンデータを受け取ったキャッシュアクセス制御回路２１では、ＡＤＤＲフィールドの示すアドレスを用いてキャッシュ１２へデータおよびキャッシュ状態を格納する。格納するキャッシュ状態は、もしＣＳＳフィールドがＤＯＮＥであった場合は「クリーン」、ＳＨＡＲＥＤであった場合は「共有」、ＤＩＲＴＹであった場合は「ダーティ」である。また、ＣＰＵコア１１に対してＴＸＩＤ、および、リターンデータを信号線Ｌ２１０を経由して送付する。この動作は従来のスヌープキャッシュの制御とほぼ同一であるため、詳細な説明は省略する。
【００８５】
図１１は実施の形態１の実装図を示している。１つのプロセッサボード１０−ｉ（ｉ＝０，１）は１枚のボード上に実装される。また１つのメモリボード６０−ｉ（ｉ＝０，１）も１枚のボード上に実装される。またクロスバユニット４０とコヒーレンシ報告集計ユニット５０は、同じＳＣボード上に実装される。これらボードをバックプレーン８０へ挿入することで計算機システムを構築する。プロセッサボード１０−０〜１、あるいは、メモリボード６０−０〜１はＳＣボード３０のポート数が許す限りは増設可能であり、また最小限のシステムまでは縮退が可能である。
【００８６】
＜発明の実施の形態１の変形＞
（１）実施の形態１では、キャッシュ１２の制御方式としてストアイン方式を前提としたが、これをストアスルーにしても構わない。この場合、キャッシュの状態としてＤＩＲＴＹ状態が存在しなくなることを除けば、動作フロー自体は同じである。
【００８７】
（２）実施の形態１では、プロセッサボード１０−０〜１、および、メモリボード６０−０〜１の数をそれぞれ２としているが、これはさらに多数台のボードを接続しても構わない。この場合、クロスバユニット４０およびコヒーレンシ報告集計ユニット５０において入力ポートおよび出力ポートに関わる回路を増やすことで実現できる。
【００８８】
（３）実施の形態１では、クロスバユニット４０およびコヒーレンシ報告集計ユニット５０を同一のボードに実装しているが、これを別々のボードに実装しても構わない。また、クロスバユニット４０あるいはコヒーレンシ報告集計ユニット５０のいずれか、あるいは、両方をバックプレーン上に実装しても構わない。
【００８９】
（４）実施の形態１では、コヒーレントリード要求を発行したプロセッサボード１０−ｉ（ｉ＝０，１）以外のプロセッサボード１０−ｊ（ｊ＝０，１）が最新のデータを保持していた場合、メモリボード６０−０〜１からのデータ転送を抑止していた。これは、コヒーレンシ報告の集計完了がメモリボード６０−０〜１における主記憶のアクセスより早いことを前提としている。もしコヒーレンシ報告の集計が設計上早く行うことができない場合、それだけメモリボード６０−０〜１からのデータリターントランザクション送付が遅延してしまう。これを避けるには、メモリボード６０−０〜１においてはデータ転送の抑止を行わず、そのままデータトランザクションをプロセッサボード１０−０〜１へ送付する。プロセッサボード１０−０〜１においては、メモリボード６０−０〜１からのデータリターンによるデータ、および、他プロセッサボード１０−０〜１からのプロセッサボード間転送によるデータの双方をトランザクション受信回路２３中のリードデータキュー内ＤＡＴＡフィールドに保持する。ＣＳＳが到着した時点で、ＣＳＳがＤＩＲＴＹであればプロセッサボード間転送によるデータを有効とし、それ以外の場合はデータリターンによるデータを有効とする、という方式が考えられる。
【００９０】
＜発明の実施の形態２＞
実施の形態１は、各プロセッサボード１０−０〜１中にＣＰＵコア１１が１つしかない例であった。この場合、計算機システム全体におけるＣＰＵコア１１の数を増加させるためには、クロスバユニット４０およびコヒーレンシ報告集計ユニット５０のポート数を増加させる必要がある。しかし、ピン数、および、ゲート数の制約によりポート数の増加は限度がある。そこで１つのプロセッサボード１０−０〜１に複数のＣＰＵコア１１を搭載する場合を考える。
【００９１】
（１）装置の構成
図１２および図１３を用いて実施の形態２におけるプロセッサボード１０−０〜１の構成を説明する。図１２においてＣＰＵコア１１、キャッシュ制御回路２０、キャッシュ１２をまとめてプロセッサユニット１３−０〜１と呼び、プロセッサボード１０−０〜１はこのプロセッサユニット１３−０〜１を２つ備え、プロセッサユニット１３−０〜１とＳＣボード間にＳＣインタフェース回路２４を設けたことが実施の形態１と異なる。図１３においてＳＣインタフェース回路２４は、各プロセッサユニット１３−０〜１からのＳＣトランザクションを受け付けるＴＸＱ２４０−０〜１、ＣＳＲをプロセッサボード１０−０〜１内部で集計するためのローカル集計回路２４４、コヒーレンシ報告集計ユニット５０からのＣＳＳをプロセッサユニットのどちらに送付するかを示すＳＲＣＱ２４８を備える。ローカル集計回路２４４に関連する構成要素として、各々のプロセッサユニット１３−０〜１からのＣＳＲを格納するＬＣＳＲＱ２４２−０〜１、および、各々のプロセッサユニット１３−０〜１が存在するか否かを示すローカル集計マップ２４３を備える。ローカル集計マップはどのプロセッサユニット１３−０〜１が実装されているかを対応するビットにより示す。このような構成により、ＳＣボード３０のポート数を増やすことなく、ＣＰＵコア１１の台数を増加させることができる。以下では、コヒーレントリード要求の処理において実施の形態１と異なる点についてのみ述べ、同じ動作を行うものについては説明を省略する。
【００９２】
（３−Ｃ）ＳＣトランザクション発行
実施の形態１において、ＳＣトランザクション中のＴＸＩＤＴ８はＣＰＵコア１１から信号線Ｌ１１１を経由して送付されるものであった。本実施の形態においては、これをＣＰＵコア１１から送付されるＴＸＩＤに自プロセッサユニット識別子ＰＵＩＤを付加する。ＰＵＩＤはプロセッサユニット１３−０〜１のプロセッサボード１０−０〜１内における実装位置によって定まる。ＰＵＩＤはトランザクション送信回路２２においてアドレスサイクルＴ１を生成する際にＴＸＩＤＴ８に付加される。
【００９３】
また実施の形態１においては、ＳＣトランザクションが生成された後に信号線Ｌ１００−ｉ（ｉ＝０，１）を経由してクロスバユニット４０に送付していたが、これを本実施の形態では、信号線Ｌ１３０−０〜１を経由してＳＣインタフェース回路２４に送付する。ＳＣインタフェース回路２４は、受け取ったＳＣトランザクションを対応するＴＸＱ２４０−０〜１に格納する。ＴＸＱ２４０−０〜１の各々の先頭からＳＣトランザクションが読み出され、これが調停／セレクタ２４５へ送付される。調停／セレクタ２４５はＳＣトランザクションの調停を行い、勝利した方を信号線Ｌ１００−ｉ（ｉ−０，１）を経由してクロスバユニット４０へ送付する。またＳＣトランザクションをクロスバユニット４０へ送付した際に、このアドレスサイクルＴ１中のＴＸＩＤ中のＰＵＩＤを信号線Ｌ２４５経由でＳＲＣＱ２４８に格納する。これは、後述するＣＳＳの到着時に返答すべきプロセッサユニット１３−０〜１を特定するためである。
【００９４】
（３−Ｅ）スヌープアドレス受信
実施の形態１においては、クロスバユニット４０が信号線Ｌ４００−ｉ（ｉ＝０，１）を経由して送付したＳＣトランザクションを直接トランザクション受信回路２３が受信していたが、本実施の形態においては、これをＳＣインタフェース回路２４が受信する。ＳＣインタフェース回路２４においては、受信制御回路２４６においてアドレスサイクルＴ１を解釈し、ＴＸ種Ｔ５がコヒーレントリード要求であった場合は、信号線Ｌ１３２−０〜１を経由してプロセッサユニット１３−０〜１の各々に対してＳＣトランザクションを送付する。
【００９５】
（３−Ｆ）コヒーレンシ報告発行
実施の形態１では生成したＣＳＲをコヒーレンシ報告集計ユニット５０のみで集計していたが、これをそのまま適用すると、コヒーレンシ報告集計ユニット５０内にプロセッサユニット１３−ｉ（ｉは任意の整数）対応にＣＳＲＱ５０３−ｉ（ｉは任意の整数）を持つ必要が生じるため、コヒーレンシ報告集計ユニット５０に実装可能なゲート数によりＣＰＵコア１１数の増加に制限が生じる。そこで本実施の形態においては、まずプロセッサボード１０−０〜１単位にＣＳＲの集計を行い、集計結果をさらにコヒーレンシ報告集計ユニット５０へ送付し、全体の集計を行う。表３に示した集計アルゴリズムは、任意個のＣＳＳに対して、どのＣＳＳから集計アルゴリズムを適用しても結果は変わらないという性質を持つ。この性質を利用することでプロセッサボード１０−０〜１内でローカルにＣＳＳの集計が可能となる。
【００９６】
実施の形態１ではトランザクション送信回路２２が生成したＣＳＳを信号線Ｌ１０１−ｉ（ｉ＝０，１）を経由してコヒーレンシ報告集計ユニット５０に送付していたが、これを信号線Ｌ１３０−０〜１を経由してＳＣインタフェース回路２４に送付する。ＳＣインタフェース回路２４では受け取ったＣＳＲをＬＣＳＲＱ２４２−０〜１に格納する。ＬＣＳＲＱ２４２−０〜１はｉｎ−ｏｒｄｅｒで制御される。ＬＣＳＲＱ２４２−０〜１の各々の先頭から、内容をローカル集計回路２４４に送付する。ローカル集計回路２４４においては、ローカル集計マップ２４３が「０」であるビットに対応するＬＣＳＲＱ２４２−０〜１の内容は常にＤＯＮＥであるとみなし、表３のアルゴリズムに基づいて集計を行う。生成したＣＳＳはプロセッサボード１０−０〜１単位のＣＳＲとして信号線Ｌ１０１−ｉ（ｉ＝０，１）を経由してコヒーレンシ報告集計ユニット５０へ送付する。
【００９７】
（３−Ｇ）データトランザクション発行
実施の形態１における動作ケース２の場合のプロセッサボード１０−１においては、ＳＣトランザクションが生成された後に信号線Ｌ１００−１を経由してクロスバユニット４０に送付していたが、これを本実施の形態では、信号線Ｌ１３０−０〜１を経由してＳＣインタフェース回路２４に送付するよう変更する。ＳＣインタフェース回路２４は、受け取ったＳＣトランザクションを対応するＴＸＱ２４０−０〜１に格納する。ＴＸＱ２４０−０〜１の各々からクロスバユニット４０へのＳＣトランザクション発行は本実施の形態における（３−Ｃ）の動作と同様である。ただし、ＰＵＩＤのＳＲＣＱ２４８への送付は行わない。
【００９８】
（３−Ｋ）データ／状態受信
実施の形態１におけるプロセッサボード１０−０において、クロスバユニット４０からのＳＣトランザクションは信号線Ｌ４００−０を経由して直接トランザクション受信回路２３により受信されたが、本実施の形態においてはまずＳＣインタフェース回路２４によりＳＣトランザクションが受信され、受信制御回路２４６によりアドレスサイクルＴ１が解釈される。アドレスサイクルＴ１中のＴＸ種Ｔ５がデータリターン、あるいは、プロセッサ間転送の場合、ＴＸＩＤＴ８中のＰＵＩＤが指定するプロセッサユニット１３−０〜１へ、信号線Ｌ１３２−０〜１を経由してＳＣトランザクションを送付する。
【００９９】
また実施の形態１においては、コヒーレンシ報告集計ユニット５０からのＣＳＳは信号線Ｌ５００−ｉ（ｉ＝０，１）を経由して直接トランザクション受信回路２３により受信されたが、本実施例においてはまずＳＣインタフェース回路２４によりＣＳＳが受信され、ＳＲＣＱ２４８の先頭の内容が指示するプロセッサユニット１３−０〜１に対して、信号線Ｌ１３３−０〜１を経由してＣＳＳを送付する。
【０１００】
データおよびＣＳＳを受け取ったプロセッサユニット１３−０〜１の動作は、実施の形態１におけるプロセッサボード１０−０〜１の動作と同様である。
【０１０１】
＜発明の実施の形態３＞
実施の形態１においては、クロスバユニット４０から送付されたコヒーレントリード要求の順序に従い、コヒーレンシ報告集計ユニット５０では全てのＣＳＲの到着後にＣＳＲの集計および送付を行っていた。これに対して実施の形態３においては、「ＣＳＳの確定後にＣＳＲの集計を行い」、「コヒーレントリード要求の順序とは無関係にＣＳＳの送付を行う」点が異なる。すなわち、コヒーレンシ報告集計の性質を考えると、少なくとも１つのプロセッサボード１０−０〜１からのＣＳＲがＳＨＡＲＥＤであれば、他のＣＳＲの結果に依らずＣＳＳはＳＨＡＲＥＤと確定する。また１つのプロセッサボード１０−０〜１からのＣＳＲがＤＩＲＹＴであれば他のＣＳＲの内容に依らずＣＳＳはＤＩＲＴＹと確定する。ただし、この場合実施の形態１で示した不正なＣＳＲの組合せがないことを前提としている。そこで、まず不正なＣＳＲの組合せがないことを前提にＣＳＳが確定次第ＣＳＳをプロセッサボード１０−０〜１に送付する。全ＣＳＲの到着後不正なＣＳＲの組合せが検出された場合は、ＣＳＳが既に発行されている／いないに関わらずＥＲＲをＣＳＳとして、プロセッサボード１０−０〜１に送付する。これにより、実施の形態１においては、あるプロセッサボード１０−ｉ（ｉ＝０，１）のコヒーレンシ報告が大きく遅延した場合、全てのＣＳＳの発行が遅れるのに対して、この実施の形態では他の後続のＣＳＳの発行は遅延したＣＳＲに依らず行えるため、データのＣＰＵコア１１へのリターンを早めることができる。尚、各プロセッサボード１０−０〜１からのコヒーレンシ報告集計ユニット５０へのＣＳＲの送付は実施の形態１と同様に、コヒーレントリード要求の順序に従う。
【０１０２】
（１）装置の構成
実施の形態３においては、実施の形態１とはコヒーレンシ報告集計ユニット５０の構成が異なる。図１４にコヒーレンシ報告集計ユニット５０の内部構成を示す。コヒーレンシ報告集計ユニット５０は、出力ポート対応にポート集計回路５２５−０〜１を有する。ポート集計回路５２５−０〜１は、ＣＳＲテーブル５２６および集計回路５３０を備え、ＣＳＲテーブル５２６は、ＴＸＩＤフィールド５２７、ＭＩＤフィールド５２８、入力ポートの各々に対応するＣＳＲフィールド５２９−０〜１を備える。また、入力ポート側にはプロセッサボード１０−０〜１からのＣＳＲをどのポート集計回路に格納するかを指示するための、ＤＩＤＱ５２１−０〜１を備える。以下では、コヒーレントリード要求の処理において実施の形態１と異なる点についてのみ述べる。
【０１０３】
（３−Ｆ）コヒーレンシ報告発行
実施の形態１においては、プロセッサボード１０−０〜１からコヒーレンシ報告集計ユニット５０へは信号線Ｌ１０１−０〜１を経由してＣＳＲのみを送付していた。これに対し実施の形態３においては、ＴＸＩＤをＣＳＲに付加して送付する。すなわち、コヒーレンシ報告生成回路２２２においては、実施の形態１と同様にＣＳＲを生成した後、信号線Ｌ２１３を経由して送付されるＴＸＩＤを取り込み（取り込む線に関しては図示していない）、これをＣＳＲに付加し、信号線Ｌ１０１−０〜１を経由してコヒーレンシ報告集計ユニット５０に送付する。
【０１０４】
（３−Ｈ）コヒーレンシ報告集計
コヒーレンシ報告集計ユニット５０は、まず実施の形態１の（３−Ｄ）で述べたように、クロスバユニット４０から信号線Ｌ４５０経由で集計すべきＣＳＲの送付先ポート番号、および、データ転送抑止に使用するメモリボードポート番号を受け取り、まずメモリボードポート番号は送付先ポート番号の指定するポート集計回路５２５−０〜１内のＣＳＲテーブル５２６内ＭＩＤフィールド５２８に格納する。また送付先ポート番号はＤＩＤＱ５２１−０〜１の各々に格納する。次に実施の形態３の（３−Ｆ）で述べたように、プロセッサボード１０−０〜１の各々から信号線Ｌ１０１−０〜１を経由してＣＳＲおよびＴＸＩＤを受け取り、各入力ポートに対応するＤＩＤＱ５２１−０〜１の指示するポート集計回路５２５−０〜１内のＣＳＲテーブル５２６の入力ポートに対応するＣＳＲフィールド５２９−０〜１、および、ＴＸＩＤフィールド５２７へ格納する。ＣＳＲテーブル５２６はｅｎｑｕｅｕｅ，  ｄｅｑｕｅｕｅはｉｎ−ｏｒｄｅｒで管理し、集計およびＣＳＳの送付はｏｕｔ−ｏｆ−ｏｒｄｅｒで管理する。集計回路５３０は、ＣＳＲテーブル５２６の全エントリを検査し、表４に従いＣＳＳの生成を行う。
【０１０５】
【表４】
0003864509.tif 000005
【０１０６】
集計回路５３０は、生成したＣＳＳおよびＴＸＩＤフィールド５２７中のＴＸＩＤを信号線Ｌ５００−０〜１を経由して、対応するプロセッサボード１０−０〜１へ送付する。また、実施の形態１と同様に生成したＣＳＳを基にメモリボード６０−０〜１に対する抑止通知、あるいは、転送可能通知を生成し、これにＴＸＩＤフィールド５２７中のＴＸＩＤを付加して、ＣＳＳを生成したエントリのＭＩＤフィールド５２８が指示するメモリボード６０−０〜１へ信号線Ｌ５３０−０〜１、調停／セレクタ５３１〜５３２、信号線Ｌ５０１−０〜１を経由して発行する。もし複数のエントリにおいてＣＳＳが確定したら、ＣＳＲテーブル５２６の先頭に近いものから優先してＣＳＳの発行を行う。また集計回路５３０は、ＣＳＲエントリ５２６の先頭において全てのＣＳＲフィールド５２９−０〜１が有効であるか否かを検査し、もし有効であった場合は、不正なＣＳＲの組合せがないか検査する。不正なＣＳＲの組合せとは、ＤＩＲＴＹのＣＳＲが存在しており、かつ、その他のＣＳＲがＤＯＮＥ以外の場合である。不正なＣＳＲの組合せを検出した場合、対応するプロセッサボード１０−０〜１へＣＳＳとしてＥＲＲを信号線Ｌ５００−０〜１を経由して送付し、当該エントリをデキューする。また不正なＣＳＲの組合せが存在しない場合、当該エントリをデキューする。
【０１０７】
（３−Ｉ）データトランザクション発行／データ転送抑止
実施の形態１においては、図８においてメモリボード６０−ｉ（ｉ＝０，１）は信号線Ｌ５０１−ｉ（ｉ＝０，１）を経由してコヒーレンシ報告集計ユニット５０から、コヒーレントリードトランザクションを受け取った順に、転送許可あるいは転送抑止通知を受け取っていた。本実施の形態では、転送許可あるいは転送抑止通知はコヒーレントリードトランザクションの到着順とは無関係に到着する代わりに、対応するトランザクションのＴＸＩＤが付加される。したがって、主記憶制御回路７０においては、信号線Ｌ５０１−ｉ（ｉ＝０，１）経由で転送許可あるいは転送抑止通知を受け取った際に、付加されているＴＸＩＤを基にコヒーレントリードキュー７０１を検索し、ＴＸＩＤフィールド７０２に同じ内容を持つエントリに対して、そのＥＮフィールド７０５に転送許可あるいは転送抑止通知を格納する。
【０１０８】
（３−Ｋ）データ／状態受信
実施の形態１においては、図４においてトランザクション受信回路２３は信号線Ｌ５００−ｉ（ｉ＝０，１）を経由してコヒーレンシ報告集計ユニット５０から、コヒーレントリードトランザクションを受け取った順に、ＣＳＳを受け取っていた。本実施の形態では、ＣＳＳはコヒーレントリードトランザクションの発行順とは無関係に到着する代わりに、対応するトランザクションのＴＸＩＤが付加される。したがって、トランザクション受信回路２３においては、信号線Ｌ５００−ｉ（ｉ＝０，１）経由でＣＳＳを受け取った際に、付加されているＴＸＩＤを基にリードデータキュー２３０を検索し、ＴＸＩＤフィールド２３１に同じ内容を持つエントリに対して、そのＣＳＳフィールド２３４にＣＳＳを格納する。
【０１０９】
また実施の形態１においては信号線Ｌ２３０を経由してリードデータキュー２３０の先頭エントリからその内容をキャッシュアクセス制御回路２１へ送付していたが、本実施の形態においては、ＤＡＴＡフィールド２３３、および、ＣＳＳフィールド２３４がｏｕｔ−ｏｆ−ｏｒｄｅｒで有効となるため、両方が揃ったエントリからその内容を信号線Ｌ２３０を経由してキャッシュアクセス制御回路２１へ送付する。
【０１１０】
＜実施の形態３の変形例＞
（１）実施の形態３において、プロセッサボード１０−０〜１からコヒーレンシ報告集計ユニット５０へのＣＳＲの送付の際、ＴＸＩＤを付加して送付していた。これは、クロスバユニット４０においてはヘッダサイクルＴ０で得られる情報のみしかコヒーレンシ報告集計ユニット５０には送付していないため、アドレスサイクルＴ１に含まれるＴＸＩＤについては、プロセッサボード１０−０〜１から送付している。しかしＴＸＩＤを送付するためには、このための信号線をプロセッサボード１０−０〜１とコヒーレンシ報告集計ユニット５０の間に設けるか、あるいは、複数サイクルをかけてＣＳＳおよびＴＸＩＤを送付する必要がある。これを避けるためには、クロスバユニット４０（図６）におけるＩＤ送付回路４１０においてＭＣＤＱ４０９内のアドレスサイクルＴ１を解釈し、ＴＸＩＤＴ８を信号線Ｌ４５０を経由して送付する方法が考えられる。この場合、必要となる信号線の追加はクロスバユニット４０とコヒーレンシ報告ユニットに限定されるため、ピン数の増加を抑えることができる。
【０１１１】
＜発明の実施の形態４＞  （バス結合）
実施の形態１は、コヒーレントリード要求、および、データリターン、プロセッサボード間転送がクロスバユニット４０という「並列にトランザクションを送付可能な相互結合網」を用いて転送している。本実施の形態においては、これをバスに置き換えた場合について述べる。この構成により、メモリボード６０−０〜１が複数存在するような計算機システムにおいて、コヒーレントリード要求が同時に複数個オーバラップ可能なマルチプロセッサシステムを安価に提供できる。
【０１１２】
（１）装置の構成
図１５は実施の形態４における計算機システムの全体構成である。実施の形態１ではクロスバユニット４０を用いていたのと異なり、プロセッサボード１０−０〜１の各々、および、メモリボード６０−０〜１の各々をバス３１で接続している。コヒーレンシ報告集計ユニット５０とプロセッサボード１０−０〜１、あるいは、メモリボード６０−０〜１との接続形態は実施の形態と同様であるが、実施の形態１ではクロスバユニット４０とコヒーレンシ報告集計ユニット５０が接続されていたのに対して、バス３１とコヒーレンシ報告集計ユニット５０が信号線Ｌ３１０で接続されている点が異なる。図１６は本実施の形態におけるコヒーレンシ報告集計ユニット５０の内部構成を示している。実施の形態１とは異なり、コヒーレンシ報告集計ユニット５０はＤＩＤＱ５０１およびＭＩＤＱ５０２を登録するためにＴＸ種デコーダ５４０、および、主記憶ポート番号生成回路５５０を備える。また、プロセッサボード１０−０〜１においてトランザクション送信回路２２（図３）は、ヘッダ生成回路２２１、主記憶ポート番号生成回路２２０、ヘッダサイクルＴ０を保持するレジスタ２２６が必要なくなるが、これに関しては図示していない。またバス３１を用いたことによりバスアービタが必要となるが、これについては従来技術で実現可能であるため、図示および説明を省略する。
【０１１３】
（３−Ｃ）ＳＣトランザクション発行
実施の形態１と比較して、ヘッダサイクルＴ０の生成に関する動作が全て不要となる。
【０１１４】
（３−Ｈ）コヒーレンシ報告集計
実施の形態１と比較して、ＤＩＤＱ５０１およびＭＩＤＱ５０２の格納方法が異なる。実施の形態１ではクロスバユニット４０に送付されるヘッダサイクルＴ０内の情報を用いて、クロスバユニット４０がＣＳＳを送付すべきポート番号および抑止信号を送付すべきメモリボード６０−０〜１のポート番号を決定し、コヒーレンシ報告集計ユニット５０に対して送付していた。本実施の形態においては、クロスバユニット４０の代わりにバスを用いているためヘッダサイクルＴ０が存在しない。したがってバス上のアドレスサイクルＴ１の一部を用いて上記情報を得る必要がある。
【０１１５】
バス３１上にトランザクションが送付された場合、コヒーレンシ報告集計ユニット５０はこれを検出し、信号線Ｌ３１０を経由してトランザクションにおけるアドレスサイクルＴ１中のＴＸ種Ｔ５、アドレスＴ６、ポート番号Ｔ７を取り込む。主記憶ポート番号生成回路５５０は、信号線Ｌ３１０を経由してアドレスＴ６を取り込み、実施の形態１における（３−Ｃ）の処理と同様にアドレスからメモリボード６０−０〜１のポート番号を生成する。ＴＸ種デコーダはＴＸ種Ｔ５をデコードし、ＴＸ種Ｔ５がコヒーレントリード要求である、すなわち、データリードあるいはデータリード−無効化であることを検出すると、信号線Ｌ３１０経由でポート番号をＤＩＤＱ５０１に格納し、上記で得たメモリボードポート番号を信号線Ｌ５５０を経由してＭＩＤＱへ格納する。
【０１１６】
ＣＳＲの集計、抑止信号の送付動作に関しては、実施の形態１と同様である。
【０１１７】
【発明の効果】
本発明によれば、複数のプロセッサユニット、および、複数のメモリユニットを備えるマルチプロセッサシステムにおいて、コヒーレントリード要求が同時に複数個オーバラップして実行される場合に、オーバラップ可能なコヒーレントリード要求の数を限定することなく、コヒーレンシ報告の集計を行うことができる。
【０１１８】
さらに、本発明のよれば、並列にアドレスおよびデータが転送可能な相互結合網を介して複数のプロセッサユニット、および、複数のメモリユニットが接続されるマルチプロセッサシステムにおいて、コヒーレントリード要求が同時に複数個オーバラップして実行される場合に、オーバラップ可能なコヒーレントリード要求の数を限定することなく、コヒーレンシ報告の集計を行うことができる。
【０１１９】
さらに本発明によれば、プロセッサユニットと上記コヒーレンシ報告の集計を行う機構間のピン数をできるだけ少なくすることができる。
【図面の簡単な説明】
【図１】本発明によるマルチプロセッサシステムの概略ブロック図。
【図２】図１の装置に使用するプロセッサボードの概略ブロック図。
【図３】図２の装置に使用するトランザクション送信回路の概略ブロック図。
【図４】図１の装置に使用するトランザクション受信回路の概略ブロック図。
【図５】図１の装置に使用するトランザクションフォーマット。
【図６】図１の装置に使用するクロスバユニットの概略ブロック図。
【図７】図１の装置に使用するコヒーレンシ報告集計ユニットの概略ブロック図。
【図８】図１の装置に使用するメモリボードの概略ブロック図。
【図９】動作ケース１におけるコヒーレンシ動作フロー図。
【図１０】動作ケース２におけるコヒーレンシ動作フロー図。
【図１１】図１の装置の概略実装図。
【図１２】図１の装置に使用するプロセッサボードの概略ブロック図。
【図１３】図１の装置に使用するＳＣインタフェース回路の概略ブロック図。
【図１４】図１の装置に使用するコヒーレンシ報告集計ユニットの概略ブロック図。
【図１５】本発明によるマルチプロセッサシステムの概略ブロック図。
【図１６】図１５の装置に使用するコヒーレンシ報告集計ユニットの概略ブロック図。
【符号の説明】
１０−０〜１…プロセッサボード０〜１
２０…キャッシュ制御回路
３０…ＳＣボード
４０…クロスバユニット
５０…コヒーレンシ報告集計ユニット
６０−０〜１…メモリボード０〜１
７０…主記憶制御回路。
【図１】
0003864509.tif 000006
【図２】
0003864509.tif 000007
【図３】
0003864509.tif 000008
【図４】
0003864509.tif 000009
【図５】
0003864509.tif 000010
【図６】
0003864509.tif 000011
【図７】
0003864509.tif 000012
【図８】
0003864509.tif 000013
【図９】
0003864509.tif 000014
【図１０】
0003864509.tif 000015
【図１１】
0003864509.tif 000016
【図１２】
0003864509.tif 000017
【図１３】
0003864509.tif 000018
【図１４】
0003864509.tif 000019
【図１５】
0003864509.tif 000020
【図１６】
0003864509.tif 000021