(57)【要約】【課題】ノードの処理状態にしたがって主記憶アクセスの先行を許しマルチプロセッサシステムの性能を向上させる。【解決手段】データ読み出しアクセスを全ノードで同期して選択し順序付けするだけでなく、データ書き戻し完了通知も全ノードで同期して選択し順序付けすることで、全ノードで観測されるデータ読み出しの順序とデータ書き戻しの完了順序を一意にする。各ノードにおいて、順序付けされたデータ読み出しアクセスと順序付けされたデータ書き戻し完了通知の対象アドレスを比較し、データ書き戻しの完了に追い越される同一アドレスのデータ読み出しを検出することで、データ読み出しとデータ書き戻しの順序を決定する。このとき、データ書き戻しの完了に追い越された同一アドレスのデータ読み出しアクセスを送信したノードへデータの読み直しを促すコヒーレンシ応答を送信することで、データのコヒーレンシを維持する。【選択図】図６
2006323432.tif 000002
【特許請求の範囲】
【請求項１】
ノード間リンクで互いに接続された複数のノードがデータを共有する主記憶共有型マルチプロセッサシステムであって、
前記ノードが、キャッシュメモリを備える1個以上のプロセッサと主記憶とチップセットと、前記プロセッサと前記チップセットを接続するフロントサイドバスと、前記主記憶と前記チップセットを接続する主記憶バスを備え、
前記チップセットが、フロントサイドバス制御ユニットとコヒーレンシ制御ユニットと主記憶バス制御ユニットとノード間リンク制御ユニットと、前記フロントサイドバスに接続されたプロセッサが備えるキャッシュモリのデータキャッシュ状態を保持するキャッシュタグを備え、
前記フロントサイドバス制御ユニットが、前記フロントサイドバスを介してプロセッサから受信したデータ読み出しアクセスとデータ書き戻しアクセスとキャッシュスヌープ応答を前記コヒーレンシ制御ユニットに送信する回路と、前記コヒーレンシ制御ユニットから受信したキャッシュスヌープアクセスをプロセッサへ前記フロントサイドバスを介して送信する回路と、前記コヒーレンシ制御ユニットから受信したデータリプライ通知にしたがい前記ノード間リンク制御ユニットから受信した読み出しデータをプロセッサへ前記フロントサイドバスを介して送信する回路を備え、
前記主記憶バス制御ユニットが、前記ノード間リンク制御ユニットから受信したデータ読み出しアクセスとデータ書き戻しアクセスを主記憶へ前記主記憶バスを介して送信する回路と、前記データ書き戻しアクセスの主記憶への送信に合わせてデータ書き戻し完了通知を前記ノード間リンク制御ユニットへ送信する回路と、前記主記憶バスを介して主記憶から受信した読み出しデータを前記ノード間リンク制御ユニットへ送信する回路を備え、
前記ノード間リンク制御ユニットが、前記コヒーレンシ制御ユニットから受信したデータ読み出しアクセスと前記主記憶バス制御ユニットから受信したデータ書き戻し完了通知を全ノードへ前記ノード間リンクを介してブロードキャスト送信する回路と、前記コヒーレンシ制御ユニットから受信したデータ書き戻しアクセスとデータ読み直しアクセスと前記主記憶バス制御ユニットから受信した読み出しデータを対象アドレスのデータを格納する主記憶を備えるノードへ前記ノード間リンクを介して送信する回路と、前記コヒーレンシ制御ユニットから受信したコヒーレンシ応答をデータ読み出しアクセスを送信したコヒーレンシ制御ユニットを備えるノードへ前記ノード間リンクを介して送信する回路と、前記ノード間リンクを介して全ノードから受信したデータ読み出しアクセスを全ノードで同期して選択し順序付けする回路と、前記ノード間リンクを介して全ノードから受信したデータ書き込み完了通知を全ノードで同期して選択し順序付けする回路と、前記順序付けされたデータ読み出しアクセスの対象アドレスと前記順序付けされたデータ書き込み完了通知の対象アドレスを比較してデータ読み出しアクセスに比較結果を付加する回路と、前記比較結果の付加されたデータ読み出しアクセスを前記コヒーレンシ制御ユニットと前記主記憶バス制御ユニットへ送信する回路と、前記順序付けされたデータ書き込み完了通知を前記コヒーレンシ制御ユニットへ送信する回路と、前記ノード間リンクを介して全ノードから受信した読み出しデータを前記フロントサイドバス制御ユニットへ送信する回路と、前記ノード間リンクを介して全ノードから受信したデータ書き戻しアクセスとデータ読み直しアクセスを前記主記憶バス制御ユニットへ送信する回路と、前記ノード間リンクを介して全ノードから受信したコヒーレンシ応答を前記コヒーレンシ制御ユニットへ送信する回路を備え、
前記コヒーレンシ制御ユニットが、前記フロントサイドバス制御ユニットから受信したデータ読み出しアクセスと書き戻しアクセスを前記ノード間リンク制御ユニットに送信する回路と、前記ノード間リンク制御ユニットから受信した前記比較結果の付加されたデータ読み出しアクセスの対象アドレスから前記キャッシュタグを参照して前記フロントサイドバスに接続されたプロセッサのデータキャッシュ状態を判定する回路と、前記データキャッシュ状態の判定にしたがいキャッシュスヌープアクセスを前記フロントサイドバス制御ユニットへ送信する回路と、前記データキャッシュ状態と前記フロントサイドバス制御ユニットから受信したキャッシュスヌープ応答を合わせてコヒーレンシ応答を生成し前記ノード間リンク制御ユニットへ送信する回路と、前記ノード間リンク制御ユニットから受信したコヒーレンシ応答にしたがいデータリプライ通知を生成して前記フロントバス制御ユニットへ送信しデータ読み直しアクセスを生成して前記ノード間リンク制御ユニットへ送信する回路と、前記ノード間リンク制御ユニットから受信したデータ書き戻し完了通知にしたがい送信したデータ書き戻しを完了する回路を備えることを特徴とする主記憶共有型マルチプロセッサシステム。
【請求項２】
前記ノード間リンクはクロスバスイッチであり、
各ノードのチップセットの前記ノード間リンク制御ユニットにそれぞれ具備する前記データ読み出しアクセスと前記データ書き戻し完了通知を全ノードへブロードキャスト送信する回路、前記データ読み出しアクセスを順序付けする回路、及び前記データ書き戻し完了通知を順序付けする回路に代えて、前記クロスバスイッチに、全ノードから受信したデータ読み出しアクセスを順序付けする回路と、全ノードから受信したデータ書き戻し完了通知を順序付けする回路と、前記順序付けされたデータ読み出しアクセスを全ノードへブロードキャスト転送する回路と、前記順序付けされたデータ書き戻し完了通知を全ノードへブロードキャスト転送する回路を備えることを特徴とする請求項１記載の主記憶共有型マルチプロセッサシステム。
【請求項３】
前記ノード間リンクはバスであり、
ノードのチップセットの前記ノード間リンク制御ユニットにそれぞれ具備する前記データ読み出しアクセスと前記データ書き戻し完了通知を全ノードへブロードキャスト送信する回路、前記データ読み出しアクセスを順序付けする回路、及び前記データ書き戻し完了通知を順序付けする回路に代えて、バスのアイドル状態を検知してデータ読み出しアクセスをバスへ送信する回路と、バスのアイドル状態を検知してデータ書き戻し完了通知をバスへ送信する回路と、バスのビジー状態を検知してデータ読み出しアクセスをバスから受信する回路と、バスのビジー状態を検知してデータ書き戻し完了通知をバスから受信する回路を備えることを特徴とする請求項１記載の主記憶共有型マルチプロセッサシステム。
【請求項４】
キャッシュメモリを備える１個以上のプロセッサと1個以上の主記憶とチップセットを備える複数のノードがデータを共有する主記憶共有型マルチプロセッサシステムにおけるデータのコヒーレンシ制御方法であって、
システム上に同一の主記憶アドレスに対するデータ読み出しアクセスとデータ書き戻しアクセスが発行され、対象とする主記憶へ前記データ読み出しアクセスが送信され書き戻し前のデータが読み出された後、対象とする主記憶へ前記データ書き戻しアクセスが送信されるとき、
前記データ書き戻しアクセスの完了後に前記データ読み出しアクセスに対するプロセッサが備えるキャッシュメモリのデータキャッシュ状態が確認されるノードが存在する場合に、
前記データ書き戻しアクセスの完了を全ノードで同期して観測し、前記データ読み出しアクセスが前記データ書き戻しアクセスの完了に追い越されたノードが前記データ読み出しアクセスを発行したノードへデータの読み直しを促すコヒーレンシ応答を送信する動作を実行し、
前記データ読み出しアクセスを発行したノードが前記コヒーレンシ応答を受信し、プロセッサへリトライを要求することなく、前記書き戻し前のデータを破棄して対象とする主記憶へデータ読み直しアクセスを発行することで、対象とする主記憶から書き戻しデータを読み直す動作を実行することを特徴とする主記憶共有型マルチプロセッサシステムにおけるデータのコヒーレンシ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主記憶を共有する密結合型のマルチプロセッサシステムおよびそのデータのコヒーレンシ制御技術に適用して有効な技術に関する。
【背景技術】
【０００２】
各々がキャッシュメモリを備える複数のプロセッサが主記憶を共有する密結合型のマルチプロセッサシステムでは、主記憶上の同一アドレスのデータが複数のプロセッサ上のキャッシュメモリに分散して存在することになる。このとき、同一キャッシュラインに割り当てられる別の主記憶アドレスのデータを読み込むときに更新データを主記憶へ書き戻す方式では、複数のプロセッサ上のキャッシュメモリに分散したデータは個別に更新され、主記憶上の同一アドレスのデータとは異なる可能性がある。このため、任意のプロセッサから主記憶へデータ読み出しアクセスが発生した場合、各プロセッサ上のキャッシュメモリおよび主記憶のデータの時系列的な一意性（コヒーレンシ）を保証することが必須である。
【０００３】
従来、各々がキャッシュメモリを備える複数のプロセッサが主記憶を共有する密結合型のマルチプロセッサシステムにおけるデータのコヒーレンシ制御方式として、Ｍ．Ｓ．Ｐａｐａｍａｃｒｏｓａｎｄ  Ｊ．Ｈ．Ｐａｔｅｌ，“Ａ  Ｌｏｗ−ｏｖｅｒｈｅａｄ  Ｃｏｈｅｒｅｎｃｅ  Ｓｏｌｕｔｉｏｎ  ｆｏｒ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒｓ  ｗｉｔｈ  Ｐｒｉｖａｔｅ  Ｃａｃｈｅ  Ｍｅｍｏｒｉｅｓ，”Ｐｒｏｃ．ｔｈｅ  １１ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｈｏｓｉｕｍ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ，１９８４，ｐｐ．３４８−３５４（非特許文献１）などに記載されている技術が知られており、データのキャッシュ状態を（１）Ｉｎｖａｌｉｄ（対象キャッシュメモリのデータは無効）、（２）Ｓｈａｒｅｄ−Ｕｎｍｏｄｉｆｉｅｄ（主記憶と同一のデータが他のプロセッサが備えるキャッシュメモリにも存在）、（３）Ｅｘｃｌｕｓｉｖｅ−Ｕｎｍｏｄｉｆｉｅｄ（主記憶と同一のデータが対象キャッシュメモリにのみ存在）、（４）Ｅｘｃｌｕｓｉｖｅ−Ｍｏｄｉｆｉｅｄ（更新データが対象キャッシュメモリにのみ存在）の４つで管理する。プロセッサから発行されたデータ読み出しアクセスは、密結合型マルチプロセッサシステムを構成する全ノードが備えるプロセッサ上のキャッシュメモリのデータキャッシュ状態を確認して最新データがキャッシュメモリに存在するか主記憶に存在するか判断し最新データを取得するため、全ノードへブロードキャスト転送される。また、キャッシュラインのデータが更新されているときに同一キャッシュラインに割り当てられる別の主記憶アドレスのデータを読み込む場合には、プロセッサからデータ書き戻しアクセスが発行され、更新データが主記憶へ転送される。
【０００４】
このとき、従来技術には、あるノードのプロセッサから発行されたデータ読み出しアクセスと別のノードから発行されたデータ書き戻しアクセスが密結合型マルチプロセッサシステム上ですれ違うことによりデータのコヒーレンシに矛盾が発生する問題が存在する。
問題の第１の対策として、データ書き戻しアクセスを密結合型マルチプロセッサシステム上に発行する前に同一アドレスを対象とするデータ読み出しアクセスが発行されているか確認し、発行されている場合にはデータ読み出しアクセスを発行したプロセッサへ書き戻しデータを送信するとともにデータを主記憶へ書き戻すことで、すれ違いを発生させない方法がある。しかし、第１の対策には、システム性能の低下を招くという技術的課題がある。  問題の第２の対策として、特開平１０−１６１９３０号公報（特許文献１）には、主記憶へ発行されたデータ書き戻しアクセスの完了を通知する手段を備える密結合型マルチプロセッサシステムが提案されている。データ書き戻しの完了を通知する手段により、データ書き戻しアクセスを発行したノードは主記憶データの更新が保証されるタイミングを正確に認識することができる。第２の対策では、ノード間でデータ読み出しアクセスとデータ書き戻しアクセスのすれ違いの発生を許すとともにシステム性能の劣化を防いでいる。
【０００５】
【非特許文献１】Ｍ．Ｓ．Ｐａｐａｍａｃｒｏｓａｎｄ  Ｊ．Ｈ．Ｐａｔｅｌ，“Ａ  Ｌｏｗ−ｏｖｅｒｈｅａｄ  Ｃｏｈｅｒｅｎｃｅ  Ｓｏｌｕｔｉｏｎ  ｆｏｒ  Ｍｕｌｔｉｐｒｏｃｅｓｓｏｒｓ  ｗｉｔｈ  Ｐｒｉｖａｔｅ  Ｃａｃｈｅ  Ｍｅｍｏｒｉｅｓ，”Ｐｒｏｃ．ｔｈｅ  １１ｔｈ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｓｙｍｐｈｏｓｉｕｍ  ｏｎ  Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ，１９８４，ｐｐ．３４８−３５４
【０００６】
【特許文献１】特開平１０−１６１９３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
前記第２の対策では、同一ノードへ転送されるデータ読み出しアクセスとデータ書き戻しアクセスの順序が入れ替わることがないため、各ノードにおいて処理状態にしたがってデータ読み出しアクセスを進めることやデータ書き戻しアクセスを進めることはできない。このとき、主記憶へのデータ読み出しアクセスは通常長い時間を要するため、もし上記事項を解決して主記憶へのデータ読み出しアクセスを先行して行い得るようにすれば、システム性能の大幅な向上につながる。
そこで本発明の目的は、各ノードにおいて処理状態にしたがってデータ読み出しアクセスとデータ書き戻しアクセスを進めることにより発生するすれ違いを許しながらデータのコヒーレンシを維持することが可能な主記憶共有型マルチプロセッサシステムおよびコヒーレンシ制御方法を提供することにある。
【０００８】
上記本発明の目的を達成する上での具体的な課題を以下に示す。
本発明の第１の課題は、データ読み出しアクセスを全ノードで同期して選択し順序付けするだけでなく、データ書き戻し完了通知も全ノードで同期して選択し順序付けすることで、全ノードで観測されるデータ読み出しの順序とデータ書き戻しの完了順序を一意にすることにある。
本発明の第２の課題は、順序付けされたデータ読み出しアクセスと順序付けされたデータ書き戻し完了通知の対象アドレスを比較し、データ書き戻しの完了に追い越される同一アドレスのデータ読み出しを検出することで、各ノードでのデータ読み出しとデータ書き戻しの順序を決定することにある。
本発明の第３の課題は、データ書き戻しの完了に追い越された同一アドレスのデータ読み出しアクセスを送信したノードへデータの読み直しを促すコヒーレンシ応答を送信することで、データのコヒーレンシを維持することにある。
【課題を解決するための手段】
【０００９】
本発明の第１の課題は、各ノードに、データ読み出しアクセスだけでなくデータ書き戻し完了通知も全ノードへブロードキャスト送信する手段を設け、さらに受信したデータ読み出しアクセスとデータ書き戻し完了通知をそれぞれ全ノードで同期して選択する手段を設けることで解決できる。
本発明の第２の課題は、各ノードに、順序付けされたデータ読み出しアクセスと順序付けされたデータ書き戻し完了通知の対象アドレスを比較する手段を設け、さらに比較結果をデータ読み出しアクセスに付加する手段を設けることで解決できる。
本発明の第３の課題は、各ノードに、比較結果の付加されたデータ読み出しアクセスを送信したノードへデータの読み直しを促すコヒーレンシ応答を送信する手段を設け、さらにデータの読み直しを促すコヒーレンシ応答を受信してデータ読み直しアクセスを送信する手段を設けることで解決できる。
データ書き戻し完了通知を全ノードへブロードキャスト送信し、データ書き戻し完了通知が順序付けされた後でデータ読み出しとデータ書き戻しの順序を決定することで、ノードにおいて処理状態にしたがってデータ読み出しとデータ書き戻しを進めることにより発生するすれ違いを検出できる。このため、主記憶へのデータ読み出しアクセスを先行させることによりシステム性能を向上させることが可能になる。
【発明の効果】
【００１０】
本発明の主記憶共有型マルチプロセッサによれば、各ノードにおいて処理状態にしたがってデータ読み出しアクセスとデータ書き戻しアクセスを進めることにより発生するすれ違いを許しながらデータのコヒーレンシを維持することが可能になるという効果が得られる。
本発明の主記憶共有型マルチプロセッサによれば、各ノードにおいて処理状態にしたがったデータ読み出しアクセスとデータ書き戻しアクセスを進めることができるため、主記憶へのデータ読み出しアクセスを先行させることによりシステム性能を向上させることが可能になるという効果が得られる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の主記憶共有型マルチプロセッサシステムを図面に示した実施の形態を参照して詳細に説明する。
【００１２】
図１に、本発明における主記憶共有型マルチプロセッサシステムの概略構成を示す。
ノード１−１００〜１−１０１は、ノード間リンク１−２００〜１−２２０を介してノード間でデータの送受信を行なう。本実施例で想定しているノード間リンクは、データ読み出しアクセスおよびデータ書き込み完了通知を全ノードへブロードキャスト送信するブロードキャストリンク１−２００、コヒーレンシ応答を対象ノードへ送信するコヒーレンシリンク１−２１０、データ書き戻しアクセスおよびデータ読み直しアクセスおよび読み出しデータを対象ノードへ送信する１対１リンク１−２２０で構成する。
【００１３】
ノード１−１００は、キャッシュメモリを備えるプロセッサ１−３００〜１−３０１、フロントサイドバス１−４００、主記憶１−５００〜１−５０１、主記憶バス１−６００、チップセット１−７００で構成する。ノード１−１０１は、ノード１００と同じ構成であるため、ここでは説明を省略する。また、本実施例では、ノードが２個のプロセッサおよび２個の主記憶を備える例を示しているが、プロセッサの個数および主記憶の個数は２個に限定されない。ノードの個数についても２個に限定されない。
【００１４】
チップセット１−７００は、フロントサイドバス１−４００を介してプロセッサとの間でデータの送受信を行なうフロンサイドバス制御ユニット２−１００、主記憶バス１−６００を介して主記憶との間でデータの送受信を行なう主記憶バス制御ユニット３−１００、ノード間リンク１−２００〜１−２２０を介して他ノードとの間でデータの送受信を行なうノード間リンク制御ユニット４−１００、プロセッサ１−３００〜１−３０１のキャッシュメモリのデータキャッシュ状態を保持するキャッシュタグ１−８００を参照してデータ読み出しアクセスおよびデータ書き戻しアクセスのデータのコヒーレンシを維持するコヒーレンシ制御ユニット５−１００で構成する。
【００１５】
図２に、フロントサイドバス制御ユニット２−１００の構成を示す。
フロントサイドバス制御ユニット２−１００は、主記憶アクセス転送回路２−１１０、書き戻しデータ転送回路２−１２０、キャッシュスヌープアクセス転送回路２−１３０、読み出しデータ転送回路２−１４０、主記憶アクセス分配回路２−１５０、アドレスアクセス制御回路２−１６０、データアクセス制御回路２−１７０で構成する。主記憶アクセス転送回路２−１１０は、コヒーレンシ制御ユニット５−１００へ送信するデータ読み出しアクセスとデータ書き戻しアクセスとキャッシュスヌープ応答をプロセッサ１−３００〜１−３０１からフロントサイドバス１−４００を介して受信し保持する。書き戻しデータ転送回路２−１２０は、ノード間リンク制御ユニット４−１００へ送信する書き戻しデータをプロセッサ１−３００〜１−３０１からフロントサイドバス１−４００を介して受信し保持する。キャッシュスヌープアクセス転送回路２−１３０は、フロントサイドバス１−４００を介してプロセッサ１−３００〜１−３０１へ送信するキャッシュスヌープアクセスをコヒーレンシ制御ユニット５−１００から受信し保持する。読み出しデータ転送回路２−１４０は、フロントサイドバス１−４００を介してプロセッサ１−３００〜１−３０１へ送信する読み出しデータをノード監視リンク制御ユニットから受信し保持する。主記憶アクセス分配回路２−１５０は、主記憶アクセス転送回路２−１１０からコヒーレンシ制御ユニット５−１００へ送信するデータ読み出しアクセス、データ書き込みアクセス、キャッシュスヌープ応答を個別の信号線に分配する。アドレスアクセス制御回路２−１６０は、主記憶アクセスをプロセッサ１−３００〜１−３０１から受信するか、キャッシュスヌープアクセスをプロセッサ１−３００〜１−３０１へ送信するか制御する。データアクセス制御回路２−１７０は、データ書き戻しアクセスに伴う書き戻しデータをプロセッサ１−３００〜１−３０１から受信するか、コヒーレンシ制御ユニット５−１００受信するデータリプライ通知にしたがってデータ読み出しアクセスに対する読み出しデータをプロセッサ１−３００〜１−３０１へ送信するか制御する。
【００１６】
図３に、主記憶バス制御ユニット３−１００の構成を示す。
主記憶バス制御ユニット３−１００は、データ読み出しアクセス転送回路３−１１０、データ読み直しアクセス転送回路３−１２０、データ書き戻しアクセス転送回路３−１３０、読み出しデータ転送回路３−１４０、主記憶アクセス制御回路３−１５０で構成する。データ読み出しアクセス転送回路３−１１０は、主記憶バス１−６００を介して主記憶１−５００〜１−５０１へ送信するデータ読み出しアクセスをノード間リンク制御ユニット４−１００から受信し保持する。データ読み直しアクセス転送回路３−１２０は、主記憶バス１−６００を介して主記憶１−５００〜１−５０１へ送信するデータ読み直しアクセスをノード間リンク制御ユニット４−１００から受信し保持する。データ書き戻しアクセス転送回路３−１３０は、主記憶バス１−６００を介して主記憶１−５００〜１−５０１へ送信するデータ書き戻しアクセスをノード間リンク制御ユニット４−１００から受信し保持する。読み出しデータ転送回路３−１４０は、ノード間制御ユニット４−１００に送信するデータ読み出しアクセスまたはデータ読み直しアクセスに対する読み出しデータを主記憶１−５００〜１−５０１から主記憶バス１−６００を介して受信し保持する。主記憶アクセス制御回路３−１５０は、データ読み出しアクセス、データ読み直しアクセス、データ書き戻しアクセスのどれを主記憶１−５００〜１−５０１へ送信するか制御し、データ読み出しアクセスまたはデータ読み直しアクセスを主記憶１−５００〜１−５０１へ送信した場合には主記憶１−５００〜１−５０１から受信する読み出しデータを読み出しデータ転送回路３−１４０に保持させ、さらにデータ書き戻しアクセスを主記憶１−５００〜１−５０１へ送信した場合にはデータ書き戻し完了通知をノード間リンク制御ユニット４−１００へ送信する。
【００１７】
図４に、ノード間リンク制御ユニット４−１００の構成を示す。ノード間リンク制御ユニット４−１００は、ブロードキャストリンク送信制御部４−２００、ブロードキャストリンク受信制御部４−３００、コヒーレンシリンク送信制御部４−４００、コヒーレンシリンク受信制御部４−５００、１対１リンク送信制御部４−６００、１対１リンク受信制御部４−７００で構成する。
【００１８】
図５に、ブロードキャストリンク送信制御部４−２００の構成を示す。ブロードキャストリンク送信制御部４−２００は、データ読み出しアクセス転送回路４−２１０、データ書き戻し完了通知転送回路４−２２０、ブロードキャスト転送制御回路４−２３０で構成する。データ読み出しアクセス転送回路４−２１０は、ブロードキャストリンク１−２００を介して全ノード１−１００〜１−１０１へ送信するデータ読み出しアクセスをコヒーレンシ制御ユニット５−１００から受信し保持する。データ書き戻し完了通知転送回路４−２２０は、ブロードキャストリンク１−２００を介して全ノード１−１００〜１−１０１へ送信するデータ書き戻し完了通知を主記憶バス制御ユニット３−１００から受信し保持する。ブロードキャスト転送制御回路４−２３０は、データ読み出しアクセス、データ書き戻し完了通知のどちらを全ノード１−１００〜１−１０１へ送信するか制御する。
本発明では、ブロードキャストリンク１−２００を介してデータ書き戻し完了通知を全ノード１−１００〜１−１０１へ送信する制御をするブロードキャスト転送制御回路４−２３０が新規である。
【００１９】
図６に、ブロードキャストリンク受信制御部４−３００の構成を示す。ブロードキャストリンク受信制御部４−３００は、データ読み出しアクセス受信回路４−３１０〜４−３１１、データ書き戻し完了通知受信回路４−３２０〜４−３２１、データ読み出しアクセス送信回路４−３３０、データ読み出しアクセス順序付け回路４−３４０、データ書き戻し完了通知順序付け回路４−３５０、データ読み出し−データ書き戻し追い越し検出回路４−３６０で構成する。データ読み出しアクセス受信回路４−３１０〜４−３１１は、データ読み出しアクセスを各ノード１−１００〜１−１０１からブロードキャストリンク１−２００を介して受信し保持する。データ書き戻し完了通知受信回路４−３２０〜４−３２１は、データ書き戻し完了通知を各ノード１−１００〜１−１０１からブロードキャストリンク１−２００を介して受信し保持する。データ読み出しアクセス送信回路４−３３０は、コヒーレンシ制御ユニット５−１００、主記憶バス制御ユニット３−１００へ送信する順序付けされたデータ読み出しアクセスを受信し保持する。データ読み出しアクセス順序付け回路４−３４０は、どのノード１−１００〜１−１０１から受信したデータ読み出しアクセスをコヒーレンシ制御ユニット５−１００、主記憶バス制御ユニット３−１００へ送信するか全ノード１−１００〜１−１０１で同期して選択し順序付けする。データ書き戻し完了通知順序付け回路４−３５０は、どのノード１−１００〜１−１０１から受信したデータ書き戻し完了通知をコヒーレンシ制御ユニット５−１００へ送信するか全ノード１−１００〜１−１０１で同期して選択し順序付けする。データ読み出し−データ書き戻し追い越し検出回路４−３６０は、データ読み出しアクセス送信回路４−３３０が保持する順序付けされたデータ読み出しアクセスの対象アドレスと順序付けされたデータ書き戻しアクセスの対象アドレスを比較して保持する順序付けされたデータ読み出しアクセスに比較結果を付加する。
【００２０】
本発明では、各ノード１−１００〜１−１０１から受信したデータ書き戻し完了通知を全ノードで同期して選択し順序付けし全ノード１−１００〜１−１０１で観測されるデータ書き戻しの完了順序を一意にするデータ書き戻し完了通知順序付け回路４−３５０が新規である。また、順序付けされたデータ読み出しアクセスと順序付けされたデータ書き戻し完了通知の対象アドレスを比較しデータ書き戻しの完了に追い越される同一アドレスのデータ読み出しを検出するデータ読み出し−データ書き戻し追い越し検出回路４−３６０が新規である。
【００２１】
図７に、コヒーレンシリンク送信制御部４−４００の構成を示す。コヒーレンシリンク送信制御部４−４００は、コヒーレンシ応答転送回路４−４１０、コヒーレンシ応答制御回路４−４２０〜４−４２１で構成する。コヒーレンシ応答転送回路４−４１０は、コヒーレンシリンク１−２１０を介して対象ノード１−１００〜１−１０１へ送信するコヒーレンシ応答をコヒーレンシ制御ユニット５−１００から受信し保持する。コヒーレンシ応答制御回路４−４２０〜４−４２１は、コヒーレンシ応答を対象ノード１−１００〜１−１０１へ送信する。
【００２２】
図８に、１対１リンク送信制御部４−６００の構成を示す。１対１リンク送信制御部４−６００は、主記憶アクセス転送回路４−６１０、読み出しデータ転送回路４−６２０、１対１転送制御回路４−６３０〜４−６３１で構成する。主記憶アクセス転送回路４−６１０は、１対１リンク１−２２０を介して対象ノード１−１００〜１−１０１へ送信するデータ読み直しアクセスまたはデータ書き戻しアクセスをコヒーレンシ制御ユニット５−１００から受信し書き戻しデータをフロントサイドバス制御ユニット２−１００から受信し保持する。読み出しデータ転送回路４−６２０は、１対１リンク１−２２０を介して対象ノード１−１００〜１−１０１へ送信する読み出しデータを主記憶バス制御ユニット３−１００から受信し保持する。１対１転送制御回路４−６３０〜４−６３１は、主記憶アクセス、読み出しデータのどちらを対象ノード１−１００〜１−１０１へ送信するか制御する。
【００２３】
図９に、１対１リンク受信制御部４−７００の構成を示す。１対１リンク受信制御部４−７００は、１対１アクセス受信回路４−７１０〜４−７１１、読み出しデータ制御回路４−７２０、主記憶アクセス制御回路４−７２１で構成する。１対１アクセス受信回路４−７１０〜４−７１１は、読み出しデータ、データ読み直しアクセス、データ書き戻しアクセスを各ノード１−１００〜１−１０１から１対１リンク１−２２０を介して受信し保持する。読み出しデータ制御回路４−７２０は、どのノード１−１００〜１−１０１から受信した読み出しデータをフロントサイドバス制御ユニット２−１００へ送信するか制御する。主記憶アクセス制御回路４−７２１は、どのノード１−１００〜１−１０１から受信したデータ読み直しアクセスまたはデータ書き戻しアクセスを主記憶バス制御ユニット３−１００へ送信するか制御する。
【００２４】
図１０に、コヒーレンシ制御ユニット５−１００の構成を示す。コヒーレンシ制御ユニット５−１００は、データ読み出しアクセス転送回路５−１１０、データ書き戻しアクセス転送回路５−１２０、キャッシュスヌープアクセス転送回路５−１３０、主記憶アクセス分配回路５−１４０、コヒーレンシ制御回路５−１５０、データ書き戻しアクセス制御回路５−１６０、キャッシュスヌープアクセス制御回路５−１７０で構成する。データ読み出しアクセス転送回路５−１１０は、ノード間リンク制御ユニット４−１００へ送信するデータ読み出しアクセスとデータ読み直しアクセスをフロントサイドバス制御ユニット２−１００から受信し保持する。データ書き戻しアクセス転送回路５−１２０は、ノード間リンク制御ユニット４−１００へ送信するデータ書き戻しアクセスをフロントサイドバス制御ユニット２−１００から受信し保持する。キャッシュスヌープアクセス転送回路５−１３０は、フロントサイドバス制御ユニット２−１００へ送信するキャッシュスヌープアクセスに対するデータ読み出しアクセスをノード間リンク制御ユニット４−１００から受信し保持する。主記憶アクセス分配回路５−１４０は、データ読み出しアクセス転送回路５−１１０とデータ書き戻し転送回路５−１２０からノード間リンク制御ユニット４−１００に送信するデータ読み出しアクセスを個別の信号線に、データ読み直しアクセスとデータ書き戻しアクセスを同一の信号線に分配する。コヒーレンシ制御回路５−１５０は、ノード間リンク制御ユニット４−１００からデータ読み出しアクセスに対するコヒーレンシ応答を受信してノード間リンク制御ユニット４−１００からフロントサイドバス制御ユニット２−１００へ送信される読み出しデータのコヒーレンシが維持されているか判断しデータリプライ通知をフロントサイドバス制御ユニット２−１００へ送信する。また、コヒーレンシ制御回路５−１５０は、ノード間リンク制御ユニット４−１００から受信したデータ読み出しアクセスに対するコヒーレンシ応答がデータ読み直しを促している場合にはデータ読み直しアクセスをノード間制御ユニット４−１００へ送信する。データ書き戻しアクセス制御回路５−１６０は、ノード間リンク制御ユニット４−１００からデータ書き戻しアクセスに対するデータ書き戻し完了通知を受信するまでフロントサイドバスユニット２−１００から受信した同一アドレスに対する主記憶アクセスのノード間リンク制御ユニット４−１００への送信を抑止する。キャッシュスヌープ制御ユニット５−１００は、ノード間リンク制御ユニット４−１００から受信したデータ読み出しアクセスの対象アドレスからキャッシュタグ１−８００を参照してプロセッサ１−３００〜１−３０１のキャッシュメモリをスヌープする必要があるか判断しキャッシュスヌープアクセスをフロントサイドバス制御ユニット２−１００へ送信する。また、キャッシュスヌープ制御ユニット５−１００は、キャッシュタグ１−８００を参照した結果、フロントサイドバス制御ユニット２−１００から受信したキャッシュスヌープ応答、ノード間リンク制御ユニット４−１００で付加された比較結果から読み出しデータのコヒーレンシを維持するためのコヒーレンシ応答をノード間リンク制御ユニット４−１００へ送信する。
【００２５】
本発明では、データ読み出しアクセスに対してデータ読み直しが必要である場合にフロンサイドバス１−４００を介してプロセッサ１−３００〜１−３０１にリトライを要求することなくデータ読み直しアクセスを生成するコヒーレンシ制御回路５−１５０が新規である。また、ノード間リンク制御ユニット４−１００で付加された比較結果から読み出しデータのコヒーレンシを維持するためのコヒーレンシ応答を生成するキャッシュスヌープアクセス制御回路５−１７０が新規である。
次に、本実施の形態の主記憶共有型マルチプロセッサシステムおよびデータのコヒーレンシ制御方法の動作例を説明する。
【００２６】
図１１のタイムチャートを参照し、ノード１−１００が備えるプロセッサからノード１−１００が備える主記憶のアドレスを対象とするデータ読み出しアクセスが発行され、ノード１−１００が備えるプロセッサ上のキャッシュメモリとノード１−１０１が備えるプロセッサ上のキャッシュメモリに対象アドレスのデータが存在しない場合の動作を説明する。
【００２７】
ノード１−１００では、フロントサイドバス制御ユニット２−１００がフロントサイドバス１−４００を介してプロセッサから受信したデータ読み出しアクセスをコヒーレンシ制御ユニット５−１００へ送信する。コヒーレンシ制御ユニット５−１００はフロントサイドバス制御ユニット２−１００から受信したデータ読み出しアクセスをノード間リンク制御ユニット４−１００へ送信する。ノード間リンク制御ユニットはコヒーレンシ制御ユニット５−１００から受信したデータ読み出しアクセスをノード１−１００とノード１−１０１へブロードキャストリンク１−２００を介してブロードキャスト送信する。
【００２８】
ノード１−１００では、ノード間リンク制御ユニット４−１００がブロードキャストリンク１−２００を介してノード１−１００から受信したデータ読み出しアクセスを主記憶バス制御ユニット３−１００とコヒーレンシ制御ユニット５−１００へ送信する。主記憶バス制御ユニット３−１００はノード間リンク制御ユニット４−１００から受信したデータ読み出しアクセスを主記憶へ主記憶バス１−６００を介して送信する。その後、主記憶バス制御ユニット３−１００は主記憶バス１−６００を介して主記憶から受信した読み出しデータをノード間リンク制御ユニット４−１００へ送信する。ノード間リンク制御ユニット４−１００は主記憶バス制御ユニットから受信した読み出しデータをノード１−１００へ１対１リンク１−２２０を介して送信する。また、コヒーレンシ制御ユニット５−１００はノード間リンク制御ユニット４−１００から受信したデータ読み出しアクセスの対象アドレスからキャッシュタグを参照しノード１−１００が備えるプロセッサ上のキャッシュメモリに対象アドレスのデータが存在しないことを示すコヒーレンシ応答をノード間リンク制御ユニット４−１００へ送信する。ノード間リンク制御ユニット４−１００はコヒーレンシ制御ユニット５−１００から受信したコヒーレンシ応答をノード１−１００へコヒーレンシリンク１−２１０を介して送信する。
一方、ノード１−１０１では、ノード間リンク制御ユニット４−１０１がブロードキャストリンク１−２００を介してノード１−１００から受信したデータ読み出しアクセスをコヒーレンシ制御ユニット５−１０１へ送信する。コヒーレンシ制御ユニット５−１０１はノード間リンク制御ユニット４−１０１から受信したデータ読み出しアクセスの対象アドレスからキャッシュタグを参照しノード１−１０１が備えるプロセッサ上のキャッシュメモリに対象アドレスのデータが存在しないことを示すコヒーレンシ応答をノード間リンク制御ユニット４−１０１へ送信する。ノード間リンク制御ユニット４−１０１はコヒーレンシ制御ユニット５−１００から受信したコヒーレンシ応答をノード１０１へコヒーレンシリンク１−２１０を介して送信する。
【００２９】
ノード１−１００では、ノード間リンク制御ユニット４−１００が１対１リンク１−２２０を介してノード１−１０１から受信した読み出しデータをフロントサイドバス制御ユニット２−１００へ送信する。また、ノード間リンク制御ユニット４−１００はコヒーレンシリンク１−２１０を介してノード１−１００から受信したコヒーレンシ応答をコヒーレンシ制御ユニット５−１００へ送信する。さらに、ノード間リンク制御ユニット４−１００はコヒーレンシリンク１−２１０を介してノード１−１０１から受信したコヒーレンシ応答をコヒーレンシ制御ユニット５−１００へ送信する。コヒーレンシ制御ユニット５−１００はノード間リンク制御ユニットから受信したノード１−１００のコヒーレンシ応答とノード１−１０１のコヒーレンシ応答を集計しデータリプライ通知をフロントサイドバス制御ユニット２−１００へ送信する。フロントサイドバス制御ユニット２−１００はコヒーレンシ制御ユニット５−１００から受信したデータリプライ通知にしたがいノード間リンク制御ユニット４−１００から受信した読み出しデータをプロセッサへフロントサイドバス１−４００を介して送信する。
このとき、図１１のタイムチャートはノード１−１００と比較してノード１−１０１のデータ読み出しアクセスが遅れる場合を示している。また、図１２のタイムチャートはノード１−１００において主記憶バス制御ユニット３−１００と比較してコヒーレンシ制御ユニット５−１００のデータ読み出しアクセスが遅れる場合を示している。主記憶へのデータ読み出しアクセスを先行させることで、プロセッサの主記憶を高速化できる。
【００３０】
図１３のタイムチャートを参照し、ノード１−１００が備えるプロセッサからノード１−１００が備える主記憶のアドレスを対象とするデータ読み出しアクセスが発行され、ノード１−１００が備えるプロセッサ上のキャッシュメモリには対象アドレスのデータは存在しないが、ノード１−１０１が備えるプロセッサ上のキャッシュメモリには対象アドレスの更新データが存在し、ノード１−１０１が備えるプロセッサからノード１−１００が備える主記憶へデータ書き戻しアクセスが発行されるときに、ノード間リンク制御ユニットがデータ書き戻し完了通知に追い越されるデータ読み出しアクセスを検出する回路を備えていない場合の動作を説明する。
【００３１】
ノード１−１００では、フロントサイドバス制御ユニット２−１００がフロントサイドバス１−４００を介してプロセッサから受信したデータ読み出しアクセスをコヒーレンシ制御ユニット５−１００へ送信する。コヒーレンシ制御ユニット５−１００はフロントサイドバス制御ユニット２−１００から受信したデータ読み出しアクセスをノード間リンク制御ユニット４−１００へ送信する。ノード間リンク制御ユニットはコヒーレンシ制御ユニット５−１００から受信したデータ読み出しアクセスをノード１−１００とノード１−１０１へブロードキャストリンク１−２００を介してブロードキャスト送信する。
【００３２】
一方、ノード１−１０１では、フロントサイドバス制御ユニット２−１０１がフロントサイドバス１−４０１を介してプロセッサから受信したデータ書き戻しアクセスをコヒーレンシ制御ユニット５−１０１へ送信する。コヒーレンシ制御ユニット５−１０１はフロントサイドバス制御ユニット２−１０１から受信したデータ書き戻しアクセスをノード間リンク制御ユニット４−１０１へ送信する。ノード間リンク制御ユニット４−１０１はコヒーレンシ制御ユニット５−１０１から受信したデータ書き戻しアクセスをノード１−１００へ１対１リンク１−２０２を介して送信する。
【００３３】
ノード１−１００では、ノード間リンク制御ユニット４−１００がブロードキャストリンク１−２００を介してノード１−１００から受信したデータ読み出しアクセスを主記憶バス制御ユニット３−１００とコヒーレンシ制御ユニット５−１００へ送信する。また、ノード間リンク制御ユニット４−１００は１対１リンク１−２０２を介してノード１−１０１から受信したデータ書き戻しアクセスを主記憶バス制御ユニット３−１００へ送信する。主記憶バス制御ユニット３−１００はノード間リンク制御ユニット４−１００から受信したデータ読み出しアクセスを主記憶へ主記憶バス１−６００を介して送信する。その後、主記憶バス制御ユニット３−１００は主記憶バス１−６００を介して主記憶から受信した読み出しデータをノード間リンク制御ユニット４−１００へ送信する。また、主記憶バス制御ユニット３−１００はノード間リンク制御ユニット４−１００から受信したデータ書き戻しアクセスを主記憶へ主記憶バス１−６００を介して送信しデータ買戻し完了通知をノード間リンク制御ユニット４−１００へ送信する。ノード間リンク制御ユニット４−１００は主記憶バス制御ユニット３−１００から受信した読み出しデータをノード１−１００へ１対１リンク１−２２０を介して送信する。また、ノード間リンク制御ユニット４−１００は主記憶バス制御ユニット３−１００から受信したデータ書き戻し完了通知をノード１−１００とノード１−１０１へブロードキャストリンク１−２００を介してブロードキャスト送信する。コヒーレンシ制御ユニット５−１００はノード間リンク制御ユニット４−１００から受信したデータ読み出しアクセスの対象アドレスからキャッシュタグを参照しノード１−１００が備えるプロセッサ上のキャッシュメモリに対象アドレスのデータが存在しないことを示すコヒーレンシ応答をノード間リンク制御ユニット４−１００へ送信する。ノード間リンク制御ユニット４−１００はコヒーレンシ制御ユニット５−１００から受信したコヒーレンシ応答をノード１−１００へコヒーレンシリンク１−２１０を介して送信する。
【００３４】
一方、ノード１−１０１では、ノード間リンク制御ユニット４−１０１がブロードキャストリンク１−２００を介してノード１−１００から受信したデータ書き戻し完了通知をコヒーレンシ制御ユニット５−１０１へ送信する。また、ノード間リンク制御ユニット４−１０１がブロードキャストリンク１−２００を介してノード１−１００から受信したデータ読み出しアクセスをコヒーレンシ制御ユニット５−１０１へ送信する。コヒーレンシ制御ユニット５−１０１はノード間リンク制御ユニット４−１０１から受信したデータ書き戻し完了通知にしたがいデータ書き戻しアクセスを完了する。また、コヒーレンシ制御ユニット５−１０１はノード間リンク制御ユニット４−１０１から受信したデータ読み出しアクセスの対象アドレスからキャッシュタグを参照する。このとき、データ書き戻しアクセスは送信された後であるため、コヒーレンシ制御ユニット５−１０１はノード１−１０１が備えるプロセッサ上のキャッシュメモリに対象アドレスのデータが存在しないことを示すコヒーレンシ応答をノード間リンク制御ユニット４−１０１へ送信する。ノード間リンク制御ユニット４−１０１はコヒーレンシ制御ユニット５−１０１から受信したコヒーレンシ応答をノード１０１へコヒーレンシリンク１−２１０を介して送信する。
【００３５】
ノード１−１００では、ノード間リンク制御ユニット４−１００が１対１リンク１−２２０を介してノード１−１０１から受信した読み出しデータをフロントサイドバス制御ユニット２−１００へ送信する。また、ノード間リンク制御ユニット４−１００はコヒーレンシリンク１−２１０を介してノード１−１００から受信したコヒーレンシ応答をコヒーレンシ制御ユニット５−１００へ送信する。さらに、ノード間リンク制御ユニット４−１００はコヒーレンシリンク１−２１０を介してノード１−１０１から受信したコヒーレンシ応答をコヒーレンシ制御ユニット５−１００へ送信する。コヒーレンシ制御ユニット５−１００はノード間リンク制御ユニットから受信したノード１−１００のコヒーレンシ応答とノード１−１０１のコヒーレンシ応答を集計しデータリプライ通知をフロントサイドバス制御ユニット２−１００へ送信する。フロントサイドバス制御ユニット２−１００はコヒーレンシ制御ユニット５−１００から受信したデータリプライ通知にしたがいノード間リンク制御ユニット４−１００から受信した読み出しデータをプロセッサへフロントサイドバス１−４００を介して送信する。このとき、プロセッサへ送信された読み出しデータは書き戻し前のデータでありデータのコヒーレンシに矛盾が発生する。
【００３６】
図１４のタイムチャートを参照し、ノード１−１００が備えるプロセッサからノード１−１００が備える主記憶のアドレスを対象とするデータ読み出しアクセスが発行され、ノード１−１００が備えるプロセッサ上のキャッシュメモリには対象アドレスのデータは存在しないが、ノード１−１０１が備えるプロセッサ上のキャッシュメモリには対象アドレスの更新データが存在し、ノード１−１０１が備えるプロセッサからノード１−１００が備える主記憶へデータ書き戻しアクセスが発行されるときに、ノード間リンク制御ユニットがデータ書き戻し完了通知に追い越されるデータ読み出しアクセスを検出回路を備える場合の動作を説明する。
【００３７】
ノード１−１００では、フロントサイドバス制御ユニット２−１００がフロントサイドバス１−４００を介してプロセッサから受信したデータ読み出しアクセスをコヒーレンシ制御ユニット５−１００へ送信する。コヒーレンシ制御ユニット５−１００はフロントサイドバス制御ユニット２−１００から受信したデータ読み出しアクセスをノード間リンク制御ユニット４−１００へ送信する。ノード間リンク制御ユニットはコヒーレンシ制御ユニット５−１００から受信したデータ読み出しアクセスをノード１−１００とノード１−１０１へブロードキャストリンク１−２００を介してブロードキャスト送信する。
一方、ノード１−１０１では、フロントサイドバス制御ユニット２−１０１がフロントサイドバス１−４０１を介してプロセッサから受信したデータ書き戻しアクセスをコヒーレンシ制御ユニット５−１０１へ送信する。コヒーレンシ制御ユニット５−１０１はフロントサイドバス制御ユニット２−１０１から受信したデータ書き戻しアクセスをノード間リンク制御ユニット４−１０１へ送信する。ノード間リンク制御ユニット４−１０１はコヒーレンシ制御ユニット５−１０１から受信したデータ書き戻しアクセスをノード１−１００へ１対１リンク１−２０２を介して送信する。
【００３８】
ノード１−１００では、ノード間リンク制御ユニット４−１００がブロードキャストリンク１−２００を介してノード１−１００から受信したデータ読み出しアクセスを主記憶バス制御ユニット３−１００とコヒーレンシ制御ユニット５−１００へ送信する。また、ノード間リンク制御ユニット４−１００は１対１リンク１−２０２を介してノード１−１０１から受信したデータ書き戻しアクセスを主記憶バス制御ユニット３−１００へ送信する。主記憶バス制御ユニット３−１００はノード間リンク制御ユニット４−１００から受信したデータ読み出しアクセスを主記憶へ主記憶バス１−６００を介して送信する。その後、主記憶バス制御ユニット３−１００は主記憶バス１−６００を介して主記憶から受信した読み出しデータをノード間リンク制御ユニット４−１００へ送信する。また、主記憶バス制御ユニット３−１００はノード間リンク制御ユニット４−１００から受信したデータ書き戻しアクセスを主記憶へ主記憶バス１−６００を介して送信しデータ買戻し完了通知をノード間リンク制御ユニット４−１００へ送信する。ノード間リンク制御ユニット４−１００は主記憶バス制御ユニット３−１００から受信した読み出しデータをノード１−１００へ１対１リンク１−２２０を介して送信する。また、ノード間リンク制御ユニット４−１００は主記憶バス制御ユニット３−１００から受信したデータ書き戻し完了通知をノード１−１００とノード１−１０１へブロードキャストリンク１−２００を介してブロードキャスト送信する。コヒーレンシ制御ユニット５−１００はノード間リンク制御ユニット４−１００から受信したデータ読み出しアクセスの対象アドレスからキャッシュタグを参照しノード１−１００が備えるプロセッサ上のキャッシュメモリに対象アドレスのデータが存在しないことを示すコヒーレンシ応答をノード間リンク制御ユニット４−１００へ送信する。ノード間リンク制御ユニット４−１００はコヒーレンシ制御ユニット５−１００から受信したコヒーレンシ応答をノード１−１００へコヒーレンシリンク１−２１０を介して送信する。
【００３９】
一方、ノード１−１０１では、ノード間リンク制御ユニット４−１０１がブロードキャストリンク１−２００を介してノード１−１００から受信したデータ書き戻し完了通知をコヒーレンシ制御ユニット５−１０１へ送信する。このとき、ノード間リンク制御ユニット４−１０１はブロードキャストリンク１−２００を介して受信したデータ読み出しアクセスをデータ書き戻し完了通知が追い越したことをアドレス比較回路で検出し比較結果を付加したデータ読み出しアクセスをコヒーレンシ制御ユニット５−１０１へ送信する。コヒーレンシ制御ユニット５−１０１はノード間リンク制御ユニット４−１０１から受信したデータ書き戻し完了通知にしたがいデータ書き戻しアクセスを完了する。また、コヒーレンシ制御ユニット５−１０１はノード間リンク制御ユニット４−１０１から受信した比較結果が付加されたデータ読み出しアクセスからデータ書き戻し完了通知に追い越されたことを検知しデータの読み直しを促すコヒーレンシ応答をノード間リンク制御ユニット４−１０１へ送信する。ノード間リンク制御ユニット４−１０１はコヒーレンシ制御ユニット５−１０１から受信したコヒーレンシ応答をノード１０１へコヒーレンシリンク１−２１０を介して送信する。
【００４０】
ノード１−１００では、ノード間リンク制御ユニット４−１００が１対１リンク１−２２０を介してノード１−１０１から受信した読み出しデータをフロントサイドバス制御ユニット２−１００へ送信する。また、ノード間リンク制御ユニット４−１００はコヒーレンシリンク１−２１０を介してノード１−１００から受信したコヒーレンシ応答をコヒーレンシ制御ユニット５−１００へ送信する。さらに、ノード間リンク制御ユニット４−１００はコヒーレンシリンク１−２１０を介してノード１−１０１から受信したコヒーレンシ応答をコヒーレンシ制御ユニット５−１００へ送信する。コヒーレンシ制御ユニット５−１００はノード間リンク制御ユニットから受信したノード１−１００のコヒーレンシ応答とノード１−１０１のコヒーレンシ応答を集計し読み直しデータをプロセッサへ送信するよう促すデータリプライ通知をフロントサイドバス制御ユニット２−１００へ送信し、データ読み直しアクセスをノード間リンク制御ユニット４−１００へ送信する。フロントサイドバス制御ユニット２−１００はコヒーレンシ制御ユニット５−１００から受信したデータリプライ通知にしたがいノード間リンク制御ユニット４−１００から受信した読み出しデータを破棄する。ノード間リンク制御ユニット４−１００はコヒーレンシ制御ユニット５−１００から受信したデータ読み直しアクセスをノード１−１００へ１対１リンクを介して送信する。
【００４１】
ノード１−１００では、ノード間リンク制御ユニット４−１００が１対１リンク１−２２０を介してノード１−１００から受信したデータ読み直しアクセスを主記憶バス制御ユニット３−１００へ送信する。主記憶バス制御ユニット３−１００はノード間リンク制御ユニット４−１００から受信したデータ読み直しアクセスを主記憶へ主記憶バス１−６００を介して送信する。その後、主記憶バス制御ユニット３−１００は主記憶バス１−６００を介して主記憶から受信した読み直しデータをノード間リンク制御ユニット４−１００へ送信する。ノード間リンク制御ユニット４−１００は主記憶バス制御ユニット３−１００から受信した読み直しデータをノード１−１００へ１対１リンク１−２２０を介して送信する。
【００４２】
ノード１−１００では、ノード間リンク制御ユニット４−１００が１対１リンク１−２２０を介してノード１−１０１から受信した読み直しデータをフロントサイドバス制御ユニット２−１００へ送信する。フロントサイドバス制御ユニット２−１００はノード間リンク制御ユニット４−１００から受信した読み直しデータをプロセッサへフロントサイドバス１−４００を介して送信する。このとき、プロセッサへ送信された読み出しデータは書き戻し後のデータでありデータのコヒーレンシが維持される。
以上が、本発明に係わる実施の形態である。
（実施の形態の変形例１）
本発明の別の変形例では、ノード間リンクをクロスバスイッチで構成する。
クロスバスイッチは、全ノード１−１００〜１−１０１から受信したデータ読み出しアクセス、データ書き戻し完了通知を順序付けする回路、順序付けされたデータ読み出しアクセス、データ書き戻し完了通知を全ノード１−１００〜１−１０１へブロードキャスト転送する回路で構成する。
ノード間リンクをクロスバスイッチで構成する場合、ノード間リンク制御ユニット４−１００のブロードキャストリンク送信制御部４−２００においてデータ読み出しアクセス、データ書き戻し完了通知のブロードキャスト転送を制御する回路は必要ない。また、ノード間リンク制御ユニット４−１００のブロードキャストリンク受信制御部４−３００においてデータ読み出しアクセス、データ書き戻し完了通知を順序付ける回路は必要ない。
（実施の形態の変形例２）
本発明の別の変形例では、ノード間リンクをバスで構成する。
バスは、データ読み出しアクセス、データ書き戻し完了通知を受信した順序で全ノード１−１００〜１−１０１へ送信する。
ノード間リンクをバスで構成する場合、ノード間リンク制御ユニット４−１００のブロードキャストリンク送信制御部４−２００は、バスのアイドル状態を検知してデータ読み出しアクセス、データ書き戻し完了通知をバスへ送信する回路を備える。また、ノード間リンク制御ユニット４−１００のブロードキャストリンク受信制御部４−３００は、バスのビジー状態を検知してデータ読み出しアクセス、データ書き戻し完了通知をバスから受信する回路を備える。
さらに、ノード間リンクをバスで構成する場合、ノード間リンク制御ユニット４−１００のブロードキャストリンク送信制御部４−２００においてデータ読み出しアクセス、データ書き戻し完了通知のブロードキャスト転送を制御する回路は必要ない。また、ノード間リンク制御ユニット４−１００のブロードキャストリンク受信制御部４−３００においてデータ読み出しアクセス、データ書き戻し完了通知を順序付ける回路は必要ない。
【産業上の利用可能性】
【００４３】
本発明の主記憶共有型マルチプロセッサおよびデータのコヒーレンシ制御方法は、各ノードにおいて処理状態にしたがったデータ読み出しアクセスとデータ書き戻しアクセスを進めることができ、主記憶へのデータ読み出しアクセスを先行させることができるため、密結合型マルチプロセッサシステム性能の向上に広く利用される可能性がある。
【図面の簡単な説明】
【００４４】
【図１】本発明の実施の形態における主記憶共有型マルチプロセッサシステムの構成を示す図である。
【図２】本発明の実施の形態におけるチップセットが備えるフロントサイドバス制御ユニットの構成を示す図である。
【図３】本発明の実施の形態におけるチップセットが備える主記憶バス制御ユニットの構成を示す図である。
【図４】本発明の実施の形態におけるチップセットが備えるノード間リンク制御ユニットの構成を示す図である。
【図５】本発明の実施の形態におけるノード間リンク制御ユニットのブロードキャストリンク送信制御部の構成を示す図である。
【図６】本発明の実施の形態におけるノード間リンク制御ユニットのブロードキャストリンク受信制御部の構成を示す図である。
【図７】本発明の実施の形態におけるノード間リンク制御ユニットのコヒーレンシリンク送信制御部の構成を示す図である。
【図８】本発明の実施の形態におけるノード間リンク制御ユニットの１対１リンク送信制御部の構成を示す図である。
【図９】本発明の実施の形態におけるノード間リンク制御ユニットの１対１リンク受信制御部の構成を示す図である。
【図１０】本発明の実施の形態におけるチップセットが備えるコヒーレンシ制御ユニットの構成を示す図である。
【図１１】本発明の実施の形態における主記憶共有型マルチプロセッサシステムおよびデータのコヒーレンシ制御方法の動作例を示すタイミングチャートである。
【図１２】本発明の実施の形態における主記憶共有型マルチプロセッサシステムおよびデータのコヒーレンシ制御方法の動作例を示すタイミングチャートである。
【図１３】従来の主記憶共有型マルチプロセッサシステムおよびデータのコヒーレンシ制御方法の技術的課題を示すタイミングチャートである。
【図１４】本発明の実施の形態における主記憶共有型マルチプロセッサシステムおよびデータのコヒーレンシ制御方法による技術的課題の解決を示すタイミングチャートである。
【符号の説明】
【００４５】
１−１００〜１−１０１…ノード、
１−２００…ブロードキャストリンク、
１−２１０…コヒーレンシリンク、
１−２２０…１対１リンク、
１−３００〜１−３０１…プロセッサ、
１−４００〜１−４０１…フロントサイドバス、
１−５００〜１−５０１…主記憶、
１−６００〜１−６０１…主記憶バス、
１−７００〜１−７０１…チップセット、
２−１００〜２−１０１…フロントサイドバス制御ユニット、
２−１１０…主記憶アクセス転送回路、
２−１２０…書き戻しデータ転送回路、
２−１３０…キャッシュスヌープアクセス転送回路、
２−１４０…読み出しデータ転送回路、
２−１５０…主記憶アクセス分配回路、
２−１６０…アドレスアクセス制御回路、
２−１７０…データアクセス制御回路、
３−１００〜３−１０１…主記憶バス制御ユニット、
３−１１０…データ読み出しアクセス転送回路、
３−１２０…データ読み直しアクセス転送回路、
３−１３０…データ書き戻しアクセス転送回路、
３−１４０…読み出しデータ転送回路、
３−１５０…主記憶アクセス制御回路、
４−１００〜４−１０１…ノード間リンク制御ユニット、
４−２００…ブロードキャストリンク送信制御部、
４−２１０…データ読み出しアクセス転送回路、
４−２２０…データ書き戻し完了通知転送回路、
４−２３０…ブロードキャスト転送制御回路、
４−３００…ブロードキャストリンク受信制御部、
４−３１０〜４−３１１…データ読み出しアクセス受信回路、
４−３２０〜４−３２１…データ書き戻し完了通知受信回路、
４−３３０…データ読み出しアクセス送信回路、
４−３４０…データ読み出しアクセス順序付け回路、
４−３５０…データ書き戻し完了通知順序付け回路、
４−３６０…データ読み出し−データ書き戻し追い越し検出回路、
４−４００…コヒーレンシリンク送信制御部、
４−４１０…コヒーレンシ応答転送回路、
４−４２０〜４−４２１…コヒーレンシ応答制御回路、
４−５００…コヒーレンシリンク受信制御部、
４−６００…１対１リンク送信制御部、
４−６１０…主記憶アクセス転送回路、
４−６２０…読み出しデータ転送回路、
４−６３０〜４−６３１…１対１転送制御回路、
４−７００…１対１リンク受信制御部、
４−７１０〜４−７１１…１対１アクセス受信回路、
４−７２０…読み出しデータ制御回路、
４−７２１…主記憶アクセス制御回路、
５−１００〜５−１０１…コヒーレンシ制御ユニット、
５−１１０…データ読み出しアクセス転送回路、
５−１２０…データ書き戻しアクセス転送回路、
５−１３０…キャッシュスヌープアクセス転送回路、
５−１４０…主記憶アクセス分配回路、
５−１５０…コヒーレンシ制御回路、
５−１６０…データ書き戻しアクセス制御回路、
５−１７０…キャッシュスヌープアクセス制御回路。
【図１】
2006323432.tif 000003
【図２】
2006323432.tif 000004
【図３】
2006323432.tif 000005
【図４】
2006323432.tif 000006
【図５】
2006323432.tif 000007
【図６】
2006323432.tif 000008
【図７】
2006323432.tif 000009
【図８】
2006323432.tif 000010
【図９】
2006323432.tif 000011
【図１０】
2006323432.tif 000012
【図１１】
2006323432.tif 000013
【図１２】
2006323432.tif 000014
【図１３】
2006323432.tif 000015
【図１４】
2006323432.tif 000016