(57)【特許請求の範囲】
【請求項１】
複数のノードを含むレイテンシ短縮システムにおいて、
前記ノードは、
複数のプロセッサと、
共有メモリと、
前記共有メモリにおける特定の記憶領域を処理対象とする第１リクエストを処理する間に、前記第１リクエストとは異なる、前記特定の記憶領域を処理対象とする第２リクエストに応じて、前記第２リクエストをリトライすることなく受け付けるとともに、前記複数のプロセッサのうち、前記第２リクエストを実施した第１プロセッサを特定する制御情報を作成する作成手段と、
前記第１リクエストに対するリプライデータを送信するのに応じて、前記制御情報に基づき、前記第１プロセッサに、前記第２リクエストに対するリプライとして、前記リプライデータを送信する送信手段と
を備えることを特徴とするレイテンシ短縮システム。
【請求項２】
前記ノードはキャッシュを備え、
前記送信手段は、前記第１リクエストに対して前記キャッシュまたは前記共有メモリからデータを受け取ったときに、前記第１プロセッサを前記制御情報に基づき決定する
ことを特徴とする請求項１記載のレイテンシ短縮システム。
【請求項３】
前記ノードは、リクエストの種別を判別する判別手段を備え、
前記判別手段により、前記第１リクエスト及び前記第２リクエストが、他ノードのキャッシュと共有して有効データを保持する旨を示すＳｈａｒｅｄリクエストと判別された場合には、前記作成手段が該他のノードをリクエストの発行元と特定するための制御情報を作成し、
前記判別手段により前記第１リクエストまたは前記第２リクエストが前記Ｓｈａｒｅｄリクエスト以外であると判別された場合には、前記作成手段は前記他のノードをリクエストの発行元と特定する制御情報を作成しない
ことを特徴とする請求項２記載のレイテンシ短縮システム。
【請求項４】
前記ノードのそれぞれは、
自ノードおよび他ノードの共有メモリを管理するディレクトリと、
前記ディレクトリを検索して有効なキャッシュがあるか否かを判断するディレクトリ制御部と、
前記他ノードに有効なキャッシュがあった場合に、スヌープを生成し、自ノードを特定する制御情報とともに有効なキャッシュを有する当該他ノードに対して、前記スヌープを発行するメッセージ発行・生成回路と、
を備えることを特徴とする請求項２または３に記載のレイテンシ短縮システム。
【請求項５】
前記スヌープを受信した前記他ノードは、前記有効なキャッシュからデータを読み出し、前記スヌープとともに受信した前記制御情報により特定される前記自ノードに対して前記データを送信することを特徴とする請求項４記載のレイテンシ短縮システム。
【請求項６】
前記他ノードは、前記有効なキャッシュから前記データを読み出すと、前記スヌープの発行元である前記自ノードに対してレスポンスを返却することを特徴とする請求項５記載のレイテンシ短縮システム。
【請求項７】
共有メモリにおける特定の記憶領域を処理対象とする第１リクエストを処理する間に、前記第１リクエストとは異なる、前記特定の記憶領域を処理対象とする第２リクエストに応じて、前記第２リクエストをリトライすることなく受け付けるとともに、複数のプロセッサのうち、前記第２リクエストを実施した第１プロセッサを特定する制御情報を作成する作成ステップと、
前記第１リクエストに対するリプライデータを送信するのに応じて、前記制御情報に基づき、前記第１プロセッサに、前記第２リクエストに対するリプライとして、前記リプライデータを送信する送信ステップと
を含むことを特徴とするレイテンシ短縮方法。
【請求項８】
前記送信ステップにおいて、前記第１リクエストに対してキャッシュまたは前記共有メモリからデータを受け取ったときに、前記第１プロセッサを前記制御情報に基づき決定することを特徴とする請求項７記載のレイテンシ短縮方法。
【請求項９】
リクエストの種別を判別する判別ステップを備え、
前記判別ステップにおいて、前記第１リクエスト及び前記第２リクエストが他ノードのキャッシュと共有して有効データを保持する旨を示すＳｈａｒｅｄリクエストと判別された場合には、前記作成ステップにおいて、該他のノードをリクエストの発行元と特定するための制御情報を作成し、
前記判別ステップにおいて、前記第１リクエストまたは前記第２リクエストが前記Ｓｈａｒｅｄリクエスト以外であると判別された場合には、前記作成ステップにおいて、前記他のノードをリクエストの発行元と特定する制御情報を作成しない
ことを特徴とする請求項７または８記載のレイテンシ短縮方法。
【請求項１０】
自ノードおよび他ノードの共有メモリを管理するディレクトリを検索して有効なキャッシュがあるか否かを判断する判断ステップと、
前記他ノードに有効なキャッシュがあった場合に、スヌープを生成するスヌープ生成ステップと、
前記制御情報とともに有効なキャッシュを有する当該他ノードに対して、前記スヌープを発行する発行ステップと、
を有することを特徴とする請求項８または９記載のレイテンシ短縮方法。
【請求項１１】
前記スヌープを受信した前記他ノードは、前記有効なキャッシュからデータを読み出し、前記スヌープとともに受信した前記制御情報により特定される前記自ノードに対して前記データを送信する第２送信ステップを有することを特徴とする請求項１０記載のレイテンシ短縮方法。
【請求項１２】
前記他ノードは、前記有効なキャッシュから前記データを読み出すと、前記スヌープの発行元である前記自ノードに対してレスポンスを返却する返却ステップを有することを特徴とする請求項１１記載のレイテンシ短縮方法。
【請求項１３】
共有メモリにおける特定の記憶領域を処理対象とする第１リクエストを処理する間に、前記第１リクエストとは異なる、前記特定の記憶領域を処理対象とする第２リクエストに応じて、前記第２リクエストをリトライすることなく受け付けるとともに、複数のプロセッサのうち、前記第２リクエストを実施した第１プロセッサを特定する制御情報を作成する作成機能と、
前記第１リクエストに対するリプライデータを送信するのに応じて、前記制御情報に基づき、前記第１プロセッサに、前記第２リクエストに対するリプライとして、前記リプライデータを送信する送信機能と
を実行させることを特徴とするレイテンシ短縮プログラム。
【請求項１４】
前記送信機能において、前記第１リクエストに対してキャッシュまたは前記共有メモリからデータを受け取ったときに、前記第１プロセッサを前記制御情報に基づき決定することを特徴とする請求項１３記載のレイテンシ短縮プログラム。
【請求項１５】
リクエストの種別を判別する判別処理を実行させ、
前記判別処理において、前記第１リクエスト及び前記第２リクエストが他ノードのキャッシュと共有して有効データを保持する旨を示すＳｈａｒｅｄリクエストと判別された場合には、前記作成機能において、該他のノードをリクエストの発行元と特定するための制御情報を作成し、
前記判別処理において、前記第１リクエストまたは前記第２リクエストが前記Ｓｈａｒｅｄリクエスト以外であると判別された場合には、前記作成機能において、前記他のノードをリクエストの発行元と特定する制御情報を作成しないことを特徴とする請求項１３または１４記載のレイテンシ短縮プログラム。
【請求項１６】
複数のノードの共有メモリを管理するディレクトリを検索して有効なキャッシュがあるか否かを判断する判断処理と、
前記複数のノードのうちの他ノードに有効なキャッシュがあった場合に、スヌープを生成するスヌープ生成処理と、
自ノードを特定する制御情報とともに、前記有効なキャッシュを有する前記他ノードに対して、前記スヌープを発行する発行処理と、
を実行させることを特徴とする請求項１４または１５記載のレイテンシ短縮プログラム。
【請求項１７】
前記他ノードにおいて、
前記スヌープを受信した場合に、前記有効なキャッシュからデータを読み出し、前記スヌープとともに受信した前記制御情報により特定される前記自ノードに対して前記データを送信する第２送信処理を
第２のコンピュータに実行させることを特徴とする請求項１６記載のレイテンシ短縮プログラム。
【請求項１８】
前記他ノードにおいて、
前記有効なキャッシュから前記データを読み出すと、前記スヌープの発行元である前記自ノードに対してレスポンスを返却する返却処理を
前記第２のコンピュータに実行させることを特徴とする請求項１７記載のレイテンシ短縮プログラム。
【請求項１９】
共有メモリにおける特定の記憶領域を処理対象とする第１リクエストを処理する間に、前記第１リクエストとは異なる、前記特定の記憶領域を処理対象とする第２リクエストに応じて、前記第２リクエストをリトライすることなく受け付けるとともに、複数のプロセッサのうち、前記第２リクエストを実施した第１プロセッサを特定する制御情報を作成する作成手段と、
前記第１リクエストに対するリプライデータを送信するのに応じて、前記制御情報に基づき、前記第１プロセッサに、前記第２リクエストに対するリプライとして、前記リプライデータを送信する送信手段と
を備えることを特徴とするノード。
【請求項２０】
キャッシュを備え、
前記送信手段は、前記第１リクエストに対して前記キャッシュまたは前記共有メモリからデータを受け取ったときに、前記第１プロセッサを前記制御情報に基づき決定することを特徴とする請求項１９記載のノード。
【請求項２１】
リクエストの種別を判別する判別手段を備え、
前記判別手段により、前記第１リクエスト及び前記第２リクエストが、他ノードのキャッシュと共有して有効データを保持する旨を示すＳｈａｒｅｄリクエストと判別された場合には、前記作成手段が該他のノードをリクエストの発行元と特定するための制御情報を作成し、
前記判別手段により前記第１リクエストまたは前記第２リクエストが前記Ｓｈａｒｅｄリクエスト以外であると判別された場合には、前記作成手段は前記他のノードをリクエストの発行元と特定する制御情報を記憶手段に作成しないことを特徴とする請求項２０記載のノード。
【請求項２２】
自ノードおよび他ノードの共有メモリを管理するディレクトリと、
前記ディレクトリを検索して有効なキャッシュがあるか否かを判断するディレクトリ制御部と、
前記他ノードに有効なキャッシュがあった場合に、スヌープを生成し、前記制御情報とともに前記有効なキャッシュを有する他ノードに対して、前記スヌープを発行するメッセージ発行・生成回路と、
を備えることを特徴とする請求項２０または２１記載のノード。
【請求項２３】
前記スヌープを受信した場合は、前記有効なキャッシュからデータを読み出し、前記スヌープとともに受信した前記制御情報により特定されるノードに対して前記データを送信することを特徴とする請求項２２記載のノード。
【請求項２４】
前記有効なキャッシュから前記データを読み出すと、前記スヌープの発行元であるノードに対してレスポンスを返却することを特徴とする請求項２３記載のノード。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はレイテンシ短縮システム、レイテンシ短縮方法、および、レイテンシ短縮プログラムに関し、特に、トラフィックを低減させることが可能なレイテンシ短縮システム、レイテンシ短縮方法、および、レイテンシ短縮プログラムに関する。
【背景技術】
【０００２】
一般的に、キャッシュの制御方法として、Invalidateリクエストに基づき他プロセッサのキャッシュをInvalidate(無効化)し、自身のキャッシュだけが有効データを保持するようにするものと、Sharedリクエストに基づき他プロセッサのキャッシュと共有して複数のキャッシュで有効データを保持するようにするものが知られている。
【０００３】
Invalidateリクエストは、自身以外のプロセッサのキャッシュを無効化し、自身のキャッシュにだけ有効なデータを保持するためのリクエストであるため、Invalidateリクエスト処理中に受信した別のプロセッサからの同じアドレスに対するInvalidateもしくはSharedリクエストは一緒に処理してはいけない。これは、一緒に処理してしまうと複数のプロセッサに互いに異なるデータがそれぞれ有効であるとして存在してしまい、コヒーレンシ違反となるためである。
【０００４】
これを避けるため、Invalidateリクエストを処理している間は、別のプロセッサから送られてくる同じアドレスのInvalidateおよびSharedリクエストに対してそのリクエストの発行元にリトライ指示を出し、発行元に当該リクエストの出し直しを促すことで1つずつ順番に処理することが行われる。
【０００５】
次に、Invalidateリクエストの処理について図５を参照してさらに詳細に説明する。（また、特許文献１にも、共有メモリを含む多数マルチプロセッサノードがクロスバースイッチを介して互いに接続されるようなシステムが開示されている。）
図５に示すシステムは、共有メモリを含む多数のマルチプロセッサノード（以下、ノードと呼ぶ）100,200,300から構成される。以下の説明では、共有メモリを単にメモリと呼ぶことにする。
【０００６】
ノード100,200,300は、グローバルスイッチ・ディレクトリ制御部150,250,350を介して接続されている。各ノード100,200,300は、プロセッサ101,102,201,202,301,302とローカルスイッチ110,210,310とメモリ・ディレクトリ制御部120,220,320とメモリ140,240,340とディレクトリ130,160,230,260,330,360とグローバルスイッチ・ディレクトリ制御部150,250,350とから構成される。
【０００７】
ノード200,300のプロセッサ201,202,301からノード100のメモリ140に対する同一アドレスのリクエストが発行されると、そのリクエストはグローバルスイッチ・ディレクトリ制御部250,350を介してグローバルスイッチ・ディレクトリ制御部150に送られる。グローバルスイッチ・ディレクトリ制御部150は３個のリクエストのうち、最初に受信したCPU201からのリクエストを受け付けて処理を行い、残りのCPU202,301からのリクエストは最初のリクエストの処理が完了するまではグローバルスイッチ・ディレクトリ制御部150とグローバルスイッチ・ディレクトリ制御部250,350との間でリトライされ続けている。
【０００８】
一方、Sharedリクエストは、複数のプロセッサのキャッシュで有効なデータを持つことが出来るリクエストなので、Sharedリクエスト処理中に別のプロセッサから同じアドレスに対するSharedリクエストが受信された場合にそれらを一緒に処理してもコヒーレンシ違反にならないため、それらは同時に処理される。しかしながら、別のプロセッサからのInvalidateリクエストに対してはコヒーレンシ違反となるため、その場合にはやはりリクエストの再発行処理が行われる。
【０００９】
以上のように、Sharedリクエスト処理中に、別のプロセッサからの同一アドレスに対するSharedリクエストを受信した場合にはリクエストの同時処理が可能であるが、実際には、複数あるプロセッサからはInvalidateおよびSharedリクエストが不定期なタイミングで次々と発行されるので、制御も非常に複雑である。
【００１０】
そこで、一般的に、制御を簡単化するために、InvalidateおよびSharedリクエストを区別せずに、リクエスト処理中は同一アドレスに関わるリクエストに対しリトライ指示を出し、発行元にリクエストを再発行させる事で、1つずつ順番に処理するという方法がとられていた。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００３−１５０５７３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、近年マルチコア化により発行元の数が増えたことで、リクエスト間のアドレス競合の発生頻度が高まり、上述したようなリクエスト処理方法では、大きな性能低下を招くようになってきた。
【００１３】
本発明の目的は、上述の問題点を解決したレイテンシ短縮システム、レイテンシ短縮方法、および、レイテンシ短縮プログラムを提供することにある。
【課題を解決するための手段】
【００１４】
本発明のレイテンシ短縮システムは、複数のノードを含むレイテンシ短縮システムにおいて、ノードは、共有メモリと、記憶手段と、複数の発行元から共有メモリの同一アドレスに対して同時にリクエストが発行された場合に、該リクエストを発行した発行元を特定する制御情報を記憶手段に登録する登録手段と、同時に発行されたリクエストのうち、最初に発行されたリクエストに対して当該リクエストの発行元にデータを返信するとき、当該発行元を制御情報に基づいて決定する送信手段と、を備えることを特徴とする。
【００１５】
本発明のレイテンシ短縮方法は、 それぞれ共有メモリおよび記憶手段を備える複数のノードを含むレイテンシ短縮システムにおいて、複数の発行元から共有メモリの同一アドレスに対して同時にリクエストが発行された場合に、該リクエストを発行した発行元を特定する制御情報を記憶手段に登録する登録ステップと、同時に発行されたリクエストのうち、最初に発行されたリクエストに対して当該リクエストの発行元にデータを返信するとき、当該発行元を制御情報に基づいて決定する第１送信ステップと、を含むことを特徴とする。
【００１６】
本発明のレイテンシ短縮プログラムは、第１のコンピュータに、リクエストの種別を判別する判別処理を実行させ、判別処理において、リクエストが他ノードのキャッシュと共有して有効データを保持する旨を示すSharedリクエストと判別された場合には、登録処理において、該他のノードをリクエストの発行元と特定するための制御情報を記憶手段に登録し、判別処理において、リクエストがSharedリクエスト以外であると判別された場合には、登録処理において、他のノードをリクエストの発行元と特定する制御情報を記憶手段に登録せず、リクエストのうち、最初に発行されたリクエストの処理が完了するまでの間、残りのリクエストが当該残りのリクエストの発行元間でリトライされるようにすることを特徴とする。
【００１７】
本発明のノードは、共有メモリと、記憶手段と、複数の発行元から共有メモリの同一アドレスに対して同時にリクエストが発行された場合に、該リクエストを発行した発行元を特定する制御情報を記憶手段に登録する登録手段と、同時に発行されたリクエストのうち、最初に発行されたリクエストに対して当該リクエストの発行元にデータを返信するとき、当該発行元を制御情報に基づいて決定する送信手段と、を備えることを特徴とする。
【発明の効果】
【００１８】
本発明には、複数プロセッサからのSharedリクエストを同時に処理することで、レイテンシ短縮およびリトライ削減を図りトラフィックを低減することができるという効果がある。
【図面の簡単な説明】
【００１９】
【図１】本発明の本実施形態におけるレイテンシ短縮システムの全体図である。
【図２】グローバルスイッチ・ディレクトリ制御部のブロック図である。
【図３−Ａ】対象アドレスのメモリが存在するノードのグローバルスイッチ・ディレクトリ制御部においてリクエストを受信した場合の動作を示すフローチャートである。
【図３−Ｂ】対象アドレスのメモリが存在するノードのグローバルスイッチ・ディレクトリ制御部においてリクエストを受信した場合の動作を示すフローチャートである。
【図４】対象アドレスのメモリが存在しないノードのグローバルスイッチ・ディレクトリ制御部においてスヌープを受信した場合の動作を示すフローチャートである。
【図５】関連技術におけるレイテンシ短縮システムの全体図である。
【発明を実施するための形態】
【００２０】
次に、本発明における第１の実施形態について図面を参照して説明する。
【００２１】
図1に、本発明の第１の実施形態におけるレイテンシ短縮システム１０の全体図を示す。
【００２２】
本実施形態のレイテンシ短縮システム１０の全体図は、グローバルスイッチ・ディレクトリ制御部(150, 250, 350)の構成のみが上述の図５のシステムと異なる。
【００２３】
レイテンシ短縮システム１０は、図５のシステムと同様、共有メモリを含む多数のマルチプロセッサノード（以下、ノードと呼ぶ）100,200および300から構成される。以下の説明では、共有メモリのことを単にメモリと呼ぶことにする。
【００２４】
ノード100,200,および300は、それぞれグローバルスイッチ・ディレクトリ制御部150,250および350を介して相互に接続されている。
【００２５】
ノード100は、プロセッサ101,102とローカルスイッチ110とメモリ・ディレクトリ制御部120とメモリ140とディレクトリ130,160とグローバルスイッチ・ディレクトリ制御部150とから構成され、ノード200は、プロセッサ201,202とローカルスイッチ210とメモリ・ディレクトリ制御部220とメモリ240とディレクトリ230,260とグローバルスイッチ・ディレクトリ制御部250とから構成され、ノード300は、プロセッサ301,302とローカルスイッチ310とメモリ・ディレクトリ制御部320とメモリ340とディレクトリ330,360とグローバルスイッチ・ディレクトリ制御部350とから構成される。
【００２６】
本実施形態におけるレイテンシ短縮システム１０の各構成要素の説明を行う前に、本発明の基本概念について通常使用されている技術と対比させながら説明する。
【００２７】
まず、通常使用されている技術を用いるレイテンシ短縮システムのリクエスト処理について詳述する。
【００２８】
プロセッサ201,202および301から同一アドレスに対するSharedリクエストが発行されると、そのリクエストは、ローカルスイッチ210および310からグローバルスイッチ・ディレクトリ制御部250,350を介して、メモリが存在するノード100のグローバル・ディレクトリ制御部150に送られる。ここで、グローバル・ディレクトリ制御部150へのリクエストの到着順は、プロセッサ201からのもの、プロセッサ202からのもの、プロセッサ301からものの順であったとする。
【００２９】
グローバル・ディレクトリ制御部150はプロセッサ201からのリクエストを受信すると、メモリ140にリクエストを発行しかつディレクトリ160を索引し、キャッシュにM（Modified）またはE（Exclusive）(MESIプロトコル)でデータを持っているプロセッサがあればスヌープを発行する。（キャッシュがSI（Shared Invalid）の場合は、スヌープを発行してもキャッシュからデータが転送されないので、スヌープは発行せずメモリからデータを読み出す）本ケースは有効なキャッシュがない場合でありスヌープは発行していない。
【００３０】
グローバル・ディレクトリ制御部150は、プロセッサ201からのリクエスト処理が完了するまでは、後続の、プロセッサ202およびプロセッサ301からのリクエストは受け付けずリトライし続ける。そして、プロセッサ201からのリクエストに対する処理が終了し、グローバル・ディレクトリ制御部150がプロセッサ201にリプライデータを返却したところで、グローバル・ディレクトリ制御部150は、後続の、プロセッサ202およびプロセッサ301からのリクエストで早く到着した方を受信して処理し、処理を完了したら、最後のリクエストを受信して処理を行う。
【００３１】
以上の説明から分かるように、本システムでは、メモリに全く同じデータを３回読みに行っていることになる。
【００３２】
これに対し、本実施形態のレイテンシ短縮システム１０では以下のようにリクエスト処理が行われる。
【００３３】
プロセッサ201,202および301から同一アドレスに対してSharedリクエストが発行されると、そのリクエストは、ローカルスイッチ210および310からグローバルスイッチ・ディレクトリ制御部250および350を介して、メモリが存在するノード100のグローバル・ディレクトリ制御部150に送られる。ここで、グローバル・ディレクトリ制御部150へのリクエストの到着順は、プロセッサ201からのもの、プロセッサ202からのもの、プロセッサ301からのものの順であったとする。
【００３４】
グローバル・ディレクトリ制御部150は、プロセッサ201からのリクエストの処理が完了するまでに、後続の、プロセッサ202およびプロセッサ301からのリクエストを受け付けた場合は、リトライせずにリクエストの発行元情報(プロセッサ201,202,301)を覚えておき、メモリからリクエストに対するリプライデータを受信したら、発行元情報にある、当該リクエストの発行元プロセッサにそのリプライデータをブロードキャストする。
【００３５】
このように、上述した図５のシステムでは３つのリクエストに対して３回メモリまで読みに行っていたのに対し、本実施形態では1回読みに行くだけで済み、レイテンシを短縮することができる。
【００３６】
本実施形態において、スヌープが発行された場合のリクエスト処理は以下のようになる。
【００３７】
プロセッサ301のキャッシュがEM（Exclusive Modified）でデータを保持しており、プロセッサ201および202から、同一アドレスにあるデータに対するSharedリクエストが発行されると、そのリクエストはローカルスイッチ210からグローバルスイッチ・ディレクトリ制御部250を介して、メモリが存在するノード100のグローバル・ディレクトリ制御部150に送られる。ここで、グローバル・ディレクトリ制御部150への当該リクエストの到着順は、プロセッサ201からのもの、プロセッサ202からのものの順であったとする。
【００３８】
グローバル・ディレクトリ制御部150は、プロセッサ201からのリクエストを受信すると、メモリに140にリクエストを発行しかつディレクトリ(160)を索引しスヌープを発行する。
【００３９】
プロセッサ201からのリクエストを受信してから、メッセージ格納バッファから読み出されるまでに、後続のプロセッサ202からのリクエストを受け付けた場合は、そのプロセッサ202を発行元情報(プロセッサ201,202)に登録し、CPU301に対するスヌープと一緒に発行元情報を持ち回るようにする。そして、CPU301のキャッシュからデータ転送がなされた場合に、グローバルスイッチ・ディレクトリ制御部350から発行元情報に登録されているプロセッサ201,202に対してデータをブロードキャストする。
【００４０】
このように、図５のシステムではプロセッサ202からのリクエストはプロセッサ201の処理が完了するまで処理されなかったのに対して、本実施形態では同時に処理が行われるためレイテンシを短縮することができる。
【００４１】
次に、本実施形態のレイテンシ短縮システム１０の各構成要素について詳述する。
【００４２】
ノード100,200および300は全て同じ構成であるため、1つのノード100について各部の説明を行うことにする。
【００４３】
ローカルスイッチ110は、プロセッサ101および102とメモリ・ディレクトリ制御部120とグローバルスイッチ・ディレクトリ制御部150とに接続される。ローカルスイッチ110は、発行されるリクエスト、スヌープ、スヌープに対する応答(以下、レスポンスと呼ぶ)、および、リクエストに対する応答(以下、リプライと呼ぶ)をあて先に基づいてルーティングする。
【００４４】
メモリ・ディレクトリ制御部120は、メモリ140へのアクセスを要求する全リクエストを受信し、メモリ140へのアクセスを行い、ディレクトリ130を索引して、有効なキャッシュがある場合は、対象となるプロセッサに対してスヌープ処理を行う。そして、メモリ・ディレクトリ制御部120は、レスポンスおよびメモリからのデータが揃ったところでリプライとしてリクエスト発行元へ返却する。
【００４５】
ディレクトリ130および160はプロセッサのキャッシュの状態を管理するものである。メモリ・ディレクトリ制御部120と接続されているディレクトリ130の管理対象は、ノード100内のプロセッサ101,102と他のプロセッサを示すグローバルスイッチ・ディレクトリ制御部150とである。グローバルスイッチ・ディレクトリ制御部150と接続されているディレクトリ160の管理対象は、他ノード200および300のプロセッサ201,202,301および302である。
【００４６】
グローバルスイッチ・ディレクトリ制御部150は、他ノード200および300のグローバルスイッチ・ディレクトリ制御部250および350と接続され、リクエスト、スヌープ、レスポンスおよびリプライをあて先に従ってルーティングする。また、他ノード200および300からのリクエストおよびローカルスイッチ110からのスヌープを受信したとき、グローバルスイッチ・ディレクトリ制御部150はディレクトリ160を索引し、有効なデータをもつキャッシュがあった場合は、グローバルスイッチ・ディレクトリ制御部150はそのプロセッサに対してスヌープ処理を行う。
【００４７】
次に、グローバルスイッチ・ディレクトリ制御部150,250および350がアドレス競合したSharedリクエストを登録し処理する制御について詳細に説明する。
【００４８】
図２に示すように、グローバルスイッチ・ディレクトリ制御部150,250および350は、対象アドレスのメモリが存在する場合に機能する領域１と、対象アドレスのメモリが存在しない場合に機能する領域２とから構成される。
【００４９】
グローバルスイッチ・ディレクトリ制御部150の領域１は、調停回路150-1、アドレス一致回路150-2、登録判定回路150-3、制御レジスタ１150-4、メッセージ格納バッファ150-5、受付可能判定レジスタ150-6、発行元登録レジスタ150-7、発行元登録レジスタ150-8、リトライバッファ150-9、メッセージ発行・生成回路150-10、調停回路150-11、および、メッセージブロードキャスト回路150-12を備える。
【００５０】
また、グローバルスイッチ・ディレクトリ制御部150の領域２は、調停回路350-1、制御レジスタ350-2、メッセージ格納バッファ350-3、発行元情報登録レジスタ350-4、メッセージ発行・生成回路350-5、および、メッセージブロードキャスト回路350-5を備える。
【００５１】
まず、ノードに対象アドレスのメモリが存在する場合に機能する領域１の動作について説明する。
【００５２】
調停回路150-1は、順不同で送信されるローカルスイッチ110からのメッセージと他ノード200および300からのメッセージとを調停し、どちらのメッセージを処理するかを決定する。
【００５３】
アドレス一致回路150-2は、調停回路150-1で選ばれたメッセージのアドレスをメッセージ格納バッファ150-5に登録されている有効なリクエストまたはスヌープのアドレスとアドレス比較する。そして、一致した場合は、一致結果および一致したエントリの受付可能判定レジスタ150-6の値を読み出し登録判定回路150-3に通知する。
【００５４】
登録判定回路150-3は、リクエストを対象としてアドレス一致回路150-2から通知されるアドレス一致結果および受付可能判定情報を基に登録の可否を判定する。受付可能判定情報は受付可能判定レジスタ150-6に格納されている。受付可能判定情報については以下で詳述する。
【００５５】
アドレス一致なしの場合、登録判定回路150-3はリクエストをメッセージ格納バッファ150-5に登録し、発行元の情報を発行元登録レジスタ150-7,150-8に登録する。一方、アドレス一致ありの場合は、受付可能判定情報内の受付可能フラグが1（受付可能）でかつリクエストの種別がSharedリクエストならば、登録判定回路150-3は発行元の情報を発行元登録レジスタ150-7または発行元登録レジスタ150-8に追加登録する。
【００５６】
なお、発行元情報を発行元登録レジスタ150-7および発行元登録レジスタ150-8のどちらに登録するかは、受付可能判定情報内の発行元登録レジスタ指示フラグに従って決められる。それ以外のケースに関しては全てリトライバッファ150-9に格納されリトライが行われる。
【００５７】
制御レジスタ150-4は、メッセージ格納バッファ150-5に格納された各リクエストまたはスヌープを処理する際に必要となる制御フラグがエントリ数分用意されている。すなわち、制御レジスタ150-4には、エントリ有効フラグ、発行要求フラグ、レスポンス受信フラグ、リプライデータ受信フラグ、リプライ発行済みフラグ、ライトバック受信フラグおよびデータ転送フラグなどの制御情報が上記制御フラグとして格納されている。
【００５８】
なお、フラグ類はエントリValidが0になる時に全てクリアされる。
【００５９】
メッセージ格納バッファ150-5は、リクエスト、スヌープ、レスポンスデータおよびリプライデータを格納するバッファである。
【００６０】
受付可能判定レジスタ150-6は、受付可能判定情報を格納している。受付可能判定情報には、受付可能フラグ、Sharedリクエストフラグ、登録期間フラグおよび発行元登録レジスタ指示フラグの4種類が含まれる。
【００６１】
受付可能フラグは、後続のSharedリクエストを受付可能であるかどうかを示すものである。受付可能フラグは、Sharedリクエストフラグが1で、かつ、登録期間フラグが1の場合に、1となる。
【００６２】
Sharedリクエストフラグは、リクエストがSharedリクエストか否かを示すフラグである。Sharedリクエストフラグは、リクエスト登録時における種別確認の結果、Sharedリクエストであれば1となる。
【００６３】
登録期間フラグは、後続のリクエストの受付可能期間を示している。リクエストの受信から、転送データありレスポンスとライトバックデータとリプライデータとのいずれかを受信するまでの期間に1となる。
【００６４】
発行元登録レジスタ指示フラグは、発行元登録レジスタ150-7と発行元登録レジスタ150-8とのどちらに発行元情報を登録するかを示す情報である。発行元登録レジスタ指示フラグは、リクエストに対してスヌープが発行された場合に1となり、発行元登録レジスタ150-8への登録を示すことになる。一方、発行元登録レジスタ指示フラグが0の場合は、発行元登録レジスタ150-7への登録が行われる。
【００６５】
発行元登録レジスタ150-7および発行元登録レジスタ150-8は、リクエストの発行元を登録しておくものである。発行元登録レジスタ150-7および発行元登録レジスタ150-8は複数の１ビット格納部を有し、これらの１ビット格納部はシステム内の複数のプロセッサと一対一対応し、リクエストを受信した際にメッセージ中の発行元情報により示されるプロセッサに対応する１ビット格納部の内容が１になる。
【００６６】
なお、受付可能判定レジスタ150-6の発行元登録レジスタ指示フラグの値に基づいて登録するレジスタが決定されるが、レジスタへの登録方法に違いはない。
【００６７】
発行元登録レジスタ150-7および発行元登録レジスタ150-8はいずれもエントリValidが0になる時に全てクリアされる。
【００６８】
リトライバッファ150-9は、登録判定回路150-3の結果がリトライとなった場合にリクエストを格納し、このとき、発行元に対してリトライ指示を行う。
【００６９】
メッセージ発行生成回路150-10は、制御レジスタ150-4の発行要求フラグから発行するエントリを決定する。そして、メッセージ発行生成回路150-10は、選ばれたエントリの制御レジスタ150-4とメッセージ格納バッファ150-5と発行元登録レジスタ150-7と発行元登録レジスタ150-8との情報を読み出し、ディレクトリ160の索引および更新と制御レジスタ150-4の情報とから、発行するメッセージがリクエスト、スヌープ、レスポンス、リプライのいずれであるかを特定し生成する。
【００７０】
調停回路150-11は、順不同で送られてくるメッセージ発行・生成回路からの他ノード200,300行きの通常のメッセージとリトライバッファ150-9からのリトライのメッセージとを調停し、どちらのメッセージを処理するかを決定するものである。
【００７１】
メッセージ・ブロードキャスト回路150-12は、メッセージ発行・生成回路150-10で生成されたメッセージおよび発行元情報（発行元登録レジスタ150-7および発行元登録レジスタ150-8の情報から条件により選択される）を基に、リプライまたはリプライデータの際に発行元情報を参照し登録された全プロセッサに対してリプライまたはリプライデータをブロードキャストする。
【００７２】
次に、ノードに対象アドレスのメモリが存在しない場合に機能する領域２の動作について説明する。
【００７３】
調停回路350-1は、順不同で送られてくるローカルスイッチ310からのメッセージと他ノード100,200からのメッセージとを調停し、どちらのメッセージを処理するか決定する。
【００７４】
制御レジスタ350-2には、メッセージ格納バッファ350-3に格納されたスヌープを処理する際に必要となる制御フラグがエントリ数分用意されている。制御レジスタ350-2には、エントリ有効フラグ、発行要求フラグ、レスポンス受信フラグおよびデータ転送フラグなどの制御情報が制御フラグとして格納されている。
【００７５】
メッセージ格納バッファ350-3は、スヌープおよびレスポンスデータを格納するバッファである。
【００７６】
発行元登録レジスタ350-4は、リクエストの発行元を登録しておくものであり、スヌープと一緒に持ちまわられる発行元情報を登録する。
【００７７】
メッセージ発行・生成回路350-5は、制御レジスタ350-2の発行要求フラグに基づいて発行するエントリを決定する。そして、メッセージ発行・生成回路350-5は、選ばれたエントリの制御レジスタ350-2、メッセージ格納バッファ350-3、および、発行元登録レジスタ350-4の情報を読み出し、発行するメッセージがスヌープかレスポンスのいずれであるかを特定し生成する。
【００７８】
メッセージブロードキャスト回路350-6は、メッセージ発行・生成回路350-5で生成されたメッセージと発行元情報（発行元登録レジスタ350-4の値）を基に、データ転送の際に発行元情報を参照し、登録された全プロセッサに対してデータをブロードキャストする。
【００７９】
なお、図1のプロセッサ101,102,201,202,301,302、ローカルスイッチ110,210,310、メモリ・ディレクトリ制御部120,220,320、メモリ140,240,340、およびディレクトリ130,160,230.260,330,360は周知であるため、その詳細な説明は省略する。
【００８０】
次に、本実施形態の動作について図面を参照して説明する。
【００８１】
図１のグローバルスイッチ・ディレクトリ制御部150,250,350の動作について、図３−Ａ、図３−Ｂおよび図４のフローチャートを参照して説明する。
【００８２】
図３−ＡおよびＢは、対象アドレスのメモリが存在するノードのグローバルスイッチ・ディレクトリ制御部150においてリクエストを受信した場合の動作である。
【００８３】
他ノード200,300からのリクエストを受信すると、調停回路150-1は、種別を参照し、InvalidateリクエストかSharedリクエストかを判別する（図３−ＡのS0）。
【００８４】
Invalidateリクエストの場合は、図５のシステムと同様、アドレス一致回路150-2にてアドレス比較が行われる。そして、登録判定回路150-3は、一致なしの場合は、メッセージ格納バッファ150-5へリクエストを登録して処理を行い、一致ありの場合は、リトライバッファ150-9へリクエストを登録しリトライとする（図３−ＡのS26）。
【００８５】
Sharedリクエストの場合は（図３−ＡのS1）、アドレス一致回路150-2にてアドレス比較が行われる（図３−ＡのS2）。一致なしの場合、登録判定回路150-3は、メッセージ格納バッファ150-5にリクエストを登録し、発行元登録レジスタ150-７の発行元に対応する１ビット格納部の内容を1にして、制御レジスタ150-4のエントリ有効フラグと発行要求フラグとを1にする（図３−ＡのS3）。
【００８６】
メッセージ発行・生成回路150-10は、発行要求フラグが1になっているエントリの中から発行するエントリを決定し、そのエントリについての制御レジスタ150-4とメッセージ格納バッファ150-5と発行元登録レジスタ150-7と発行元登録レジスタ150-8とに格納された値を読み出し、読み出しが完了したら制御レジスタ150-4の発行要求フラグを0にする。
【００８７】
メッセージ生成・発行回路150-10は、読み出した情報からリクエストを生成してメモリへ発行し、ディレクトリ160を索引する（図３−ＡのS4）。メッセージ生成・発行回路150-10は、ディレクトリ160の索引結果から有効なキャッシュがあるかどうかを判別する（図３−ＡのS5）。
【００８８】
そして、有効なキャッシュがない場合、メッセージ生成・発行回路150-10は、メモリからのリプライデータを待ち（図３−ＡのS6）、リプライデータを受信したら、リプライデータをメッセージ格納バッファ150-5に登録し、制御レジスタ150-4のリプライデータ受信フラグと発行要求フラグとを1にする。
【００８９】
メッセージ発行・生成回路150-10は、発行要求フラグが1になっているエントリの中から発行するエントリを決定し、そのエントリについての制御レジスタ150-4とメッセージ格納バッファ150-5と発行元登録レジスタ150-7と発行元登録レジスタ150-8とに格納された値を読み出し、読み出しが完了したら制御レジスタ150-4の発行要求フラグを0にする。
【００９０】
メッセージ生成・発行回路150-10は、読み出した情報からリプライデータを生成し、かつ、発行元情報として発行元登録レジスタ150-7の値をメッセージブロードキャスト回路150-12に通知し、制御レジスタ150-4のエントリ有効フラグを0にする。
【００９１】
メッセージ発行・生成回路150-10からリプライデータおよび発行元情報を受信したメッセージブロードキャスト回路150-12は、発行元情報に登録されている全プロセッサにリプライデータをブロードキャストする（図３−ＡのS7）。
【００９２】
ディレクトリ160の索引結果から有効なキャッシュがあった場合は（図３−ＡのS8）、メッセージ発行・生成回路150-10はスヌープを生成して有効なキャッシュへ発行する。その際に、発行元登録レジスタ150-7の値を一緒に持ち回るようにする（図３−ＡのS8）。
【００９３】
そして、スヌープを発行したらキャッシュからのレスポンスを待ち（図３−ＡのS9）、レスポンスを受信したら制御レジスタ150-4のレスポンス受信フラグを1にし、さらにはレスポンスの種別から、キャッシュからデータ転送されたものかどうかを判定する（図３−ＢのS10）。
【００９４】
レスポンスの判定結果からデータ転送なしの場合には、メモリからのリプライデータを待ち（図３−ＢのS11）、リプライデータを受信したら、リプライデータをメッセージ格納バッファ150-5に登録し、制御レジスタ150-4のリプライデータ受信フラグと発行要求フラグとを1にする。
【００９５】
メッセージ発行・生成回路150-10は、発行要求フラグが1になっているエントリの中から発行するエントリを決定し、そのエントリの制御レジスタ150-4とメッセージ格納バッファ150-5と発行元登録レジスタ150-7と発行元登録レジスタ150-8とに格納された値を読み出す。そして、メッセージ発行・生成回路150-10は、読み出しが完了したら制御レジスタ150-4の発行要求フラグを0にする。
【００９６】
メッセージ生成・発行回路150-10は、読み出した情報からリプライデータを生成し、かつ、発行元情報として発行元登録レジスタ150-7と発行元登録レジスタ150-8との対応する各１ビット格納部内の値の論理和をとったものをメッセージブロードキャスト回路150-12に通知し、制御レジスタ150-4のエントリ有効フラグを0にする。
【００９７】
メッセージ発行・生成回路150-10からリプライデータおよび発行元情報を受信したメッセージブロードキャスト回路150-12は、発行元情報に登録されている全プロセッサにリプライデータをブロードキャストする（図３−ＢのS12）。
【００９８】
レスポンスの判定結果から、データ転送があったと判定された場合は（図３−ＢのS10）、制御レジスタ150-4の発行要求フラグとデータ転送フラグとを1にし、さらにライトバックデータもあった場合はライトバック受信フラグを1にする。
【００９９】
また、スヌープに対するレスポンスを受信する前に、メモリからリプライデータを受信した場合は、制御レジスタ150-4のリプライデータ受信フラグおよびメッセージ格納バッファ150-5にデータを登録しておく。
【０１００】
メッセージ発行・生成回路150-10は、発行要求フラグが1になっているエントリの中から発行するエントリを決定し、そのエントリの制御レジスタ150-4とメッセージ格納バッファ150-5と発行元登録レジスタ150-7と発行元登録レジスタ150-8とを読み出し、読み出しが完了したら発行要求フラグを0にする。
【０１０１】
メッセージ生成・発行回路150-10は、読み出した情報からライトバック受信フラグ（図４のS13）とリプライデータ受信フラグ（図４のS14）とを参照し、ライトバック受信フラグが0、リプライデータ受信フラグが0の場合は、リプライを生成しかつ発行元情報として発行元登録レジスタ150-7の値をメッセージブロードキャスト回路150-12に通知する。そして、メッセージ発行・生成回路150-10は制御レジスタ150-4のリプライ発行済みフラグを1にする。
【０１０２】
メッセージ発行・生成回路150-10からのリプライおよび発行元情報を受信したメッセージブロードキャスト回路150-12は、発行元情報に登録されている全プロセッサにリプライをブロードキャストする（図３−ＢのS15）。
【０１０３】
さらに、メモリからのリプライデータを待ち（図３−ＢのS16）、リプライデータを受信したら制御レジスタ150-4のリプライ発行済みフラグを参照する。リプライ発行済みフラグが1の場合は、発行元登録レジスタ150-8を参照し（図３−ＢのS17）、発行元登録レジスタ150-8に登録されたプロセッサがない場合は制御レジスタ150-4のエントリ有効フラグを0にする。
【０１０４】
また、発行元登録レジスタ150-8に登録されたプロセッサがある場合は、リプライデータをメッセージ格納バッファ150-5に登録し、制御レジスタ150-4のリプライデータ受信フラグおよび発行要求フラグを1にする。メッセージ発行・生成回路150-10は発行要求フラグが1になっているエントリから発行するエントリを決定し、そのエントリの制御レジスタ150-4とメッセージ格納バッファ150-5と発行元登録レジスタ150-7と発行元登録レジスタ150-8とに格納された値を読み出し、読み出しが完了したら制御レジスタ150-4の発行要求フラグを0にする。
【０１０５】
メッセージ生成・発行回路150-10は、読み出した情報からリプライデータを生成する。そして、メッセージ生成・発行回路150-10は，発行元情報として発行元登録レジスタ150-8の値をメッセージブロードキャスト回路150-12に通知し、制御レジスタ150-4のエントリ有効フラグを0にする。メッセージ発行・生成回路150-10からのリプライデータと発行元情報を受信したメッセージブロードキャスト回路150-12は、発行元情報に登録されている全プロセッサにリプライデータをブロードキャストする(図３−ＢのS18)。
【０１０６】
次に、ライトバック受信フラグが0、リプライデータ受信フラグが1の場合は、メッセージ発行・生成回路150-10は、リプライおよびリプライデータの2種類を生成する。そして、メッセージ発行・生成回路150-10は、リプライに関しては発行元登録レジスタ150-7の値を、リプライデータに関しては発行元登録レジスタ150-8の値をメッセージブロードキャスト回路150-12に通知し、制御レジスタ150-4のエントリ有効フラグを0にする。
【０１０７】
ただし、発行元登録レジスタ150-8に何も登録されていない場合は、リプライデータは生成されない。
【０１０８】
メッセージ発行・生成回路150-10からのリプライおよびリプライデータと対応した発行元情報を受信したブロードキャスト回路150-12は、発行元情報に登録されている全プロセッサにリプライおよびリプライデータをブロードキャストする（図４のS19）。
【０１０９】
次に、ライトバック受信フラグが1の場合は（図３−ＢのS13）、リプライおよびリプライデータライトバックデータを使用の２種類を生成し、リプライに関しては発行元登録レジスタ150-7の値を、リプライデータに関しては発行元登録レジスタ150-8の値をメッセージブロードキャスト回路150-12に通知する。こちらも、発行元登録レジスタ150-8に何も登録されていない場合は、リプライデータは生成されない。
【０１１０】
メッセージ発行・生成回路150-10からのリプライおよびリプライデータと対応した発行元情報を受信したメッセージブロードキャスト回路150-12は、発行元情報に登録されている全プロセッサにリプライおよびリプライデータをブロードキャストする。
【０１１１】
メモリに対するライトバックリクエストの発行は、Sharedリクエストに対するリプライデータ受信後に行われ、ライトバックに対するリプライを受信したところで制御レジスタ150-4のエントリ有効フラグが0にされる（図３−ＢのS20）。
【０１１２】
Sharedリクエストの場合に、アドレス一致回路150-2にてアドレス比較を行い（図３−ＡのS2）、一致があった場合は一致したエントリの受付可能判定レジスタ150-6の値を抽出する。そして、受付可能判定レジスタの中の受付可能フラグから受付可能かどうか判定（図３−ＡのS21）し、受付不可の場合はリトライバッファ150-9にメッセージを登録しリトライにする（図３−ＡのS22）。
【０１１３】
一方、受付可能な場合は、発行元登録レジスタ指示フラグを参照し（図３−ＡのS23）、発行元登録レジスタ指示フラグが0の場合は発行元登録レジスタ150-7の発行元に対応するビットを１にし（図３−ＡのS24）、発行元登録レジスタ指示フラグが1の場合は発行元登録レジスタ150-8の発行元に対応するビットを１にする（図３−ＡのS25）。
【０１１４】
図４は、対象アドレスのメモリが存在しないノードのグローバルスイッチ・ディレクトリ制御部250においてスヌープを受信した場合の動作である。
【０１１５】
スヌープを受信すると、調停回路350-1がスヌープメッセージをメッセージ格納バッファ350-3に登録するとともに、一緒に持ちまわった発行元情報を発行元登録レジスタ350-4に登録する。そして、調停回路350-1は、制御レジスタ350-2のエントリ有効フラグおよび発行要求フラグを1にする（図４のS1）。
【０１１６】
メッセージ発行・生成回路350-5は、制御レジスタ350-2を参照し、発行要求フラグが1になっているエントリから発行するエントリを決定する。そして、メッセージ発行・生成回路350-5は、そのエントリの制御レジスタ350-2とメッセージ格納バッファ350-3と発行元登録レジスタ350-4との内容を読み出し、読み出しが完了したら制御レジスタ350-2の発行要求フラグを0にする。
【０１１７】
メッセージ発行・生成回路350-5は、読み出した情報から新たにスヌープを生成し、ローカルスイッチ110を介して有効なデータを持つキャッシュに発行する（図４のS2）。
【０１１８】
スヌープを発行したら、キャッシュからのレスポンスを待ち（図４のS3）、レスポンスを受信したら、調停回路350-1は制御レジスタ350-2のレスポンス受信フラグを1、データ転送ありの場合はデータ転送フラグを1にし、発行要求フラグを1にする。
【０１１９】
メッセージ発行・生成回路350-5は、発行要求フラグが1になっているエントリから発行するエントリを決定し、その制御レジスタ350-2とメッセージ格納バッファ350-3と発行元登録レジスタ350-4 との内容を読み出し、読み出しが完了したら発行要求フラグを0にする。
【０１２０】
メッセージ発行・生成回路350-5は、読み出した値から制御レジスタ350-2のデータ転送フラグを参照し（図４のS4）、データ転送なしの場合はレスポンスを生成してスヌープ発行元へ返却し、制御レジスタ350-2のエントリ有効フラグを0にする（図４のS5）。
【０１２１】
データ転送フラグが1の場合は、メッセージ発行・生成回路350-5がレスポンスおよびデータの２種類を生成し、当該レスポンスをスヌープ発行元へ、当該データを発行元登録レジスタ350-4の値と一緒にブロードキャスト回路350-6へ通知し、制御レジスタ350-2のエントリ有効フラグを0にする。
【０１２２】
メッセージ発行・生成回路350-5からのレスポンスとデータ、対応する発行元情報を受信したメッセージブロードキャスト回路350-6は、発行元情報に登録されている全プロセッサにデータをブロードキャストする（図４のS6）。
【０１２３】
このように、本実施形態では、リトライせずに、発行元情報を登録しておき複数のメッセージを纏めて処理できるようにしたため、レイテンシを短縮することができる。
【符号の説明】
【０１２４】
１００，２００，３００    ノード
１０１，１０２，２０１，２０２，３０１，３０２  プロセッサ
１１０，２１０，３１０  ローカルスイッチ
１２０，２２０，３２０  メモリ・ディレクトリ制御部
１３０，２３０，３３０  ディレクトリ
１４０，２４０，３４０  メモリ
１５０，２５０，３５０  グローバルスイッチ・ディレクトリ制御部
１６０，２６０，３６０  ディレクトリ
１５０−１  調停回路
１５０−２  アドレス一致回路
１５０−３  登録判定回路
１５０−４  制御レジスタ
１５０−５  メッセージ格納バッファ
１５０−６  受付可能判定レジスタ
１５０−７  発行元登録レジスタ
１５０−８  発行元登録レジスタ
１５０−９  リトライバッファ
１５０−１０  メッセージ発行・生成回路
１５０−１１  調停回路
１５０−１２  メッセージブロードキャスト回路
３５０−１  調停回路
３５０−２  制御レジスタ
３５０−３  メッセージ格納バッファ
３５０−４  発行元登録レジスタ
３５０−５  メッセージ発行・生成回路
３５０−６  メッセージブロードキャスト回路
【図１】
0005571327.tif 000002
【図２】
0005571327.tif 000003
【図３−Ａ】
0005571327.tif 000004
【図３−Ｂ】
0005571327.tif 000005
【図４】
0005571327.tif 000006
【図５】
0005571327.tif 000007