(57)【特許請求の範囲】
【請求項１】
複数のノードを有する情報処理装置の各ノードでそれぞれのメモリを管理する制御回路であって、
アクセス要求を処理するための資源を複数備え、アクセス要求元のノードから自ノードのメモリへのアクセス要求を受信すると、前記複数の資源のうちから１つの資源を確保し、確保した前記１つの資源を用いて、前記アクセス要求によるアクセス先のデータについての前記複数のノードのいずれかによる更新状態を含む管理情報を参照し、いずれかのノードが前記アクセス先のデータを更新している場合には、前記データを更新しているノードに更新されたデータの返送要求を送信するとともに第１の時間の計時を開始し、前記更新されたデータの返送要求に対する応答を受信する前に前記第１の時間が経過した場合に、前記アクセス要求元のノードにエラー応答を返信するとともに第２の時間の計時を開始し、前記第２の時間が経過する前に前記更新されたデータの返送要求に対する応答を受信した場合には、前記受信した応答を破棄し、前記第２の時間が経過した場合に、前記１つの資源を解放する制御回路。
【請求項２】
第１のタイマと、
第２のタイマと、をさらに備え、
前記第１のタイマにより前記第１の時間を計時し、前記第２のタイマにより前記第２の時間を計時する請求項１に記載の制御回路。
【請求項３】
タイマを備え、
前記タイマにより前記第１の時間を計時し、前記第１の時間の経過後、前記タイマを再設定することで前記第２の時間を計時する請求項１に記載の制御回路。
【請求項４】
前記制御回路は、
前記アクセス要求を受け付けるインタフェース部と、
前記受け付けたアクセス要求を処理するための資源をそれぞれ有する複数のエントリと、
前記受け付けたアクセス要求に対して前記複数のエントリの１つを割り当てる使用エントリ決定部と、をさらに備える請求項１から３のいずれか１項に記載の制御回路。
【請求項５】
複数のノードを有する情報処理装置であって、
前記複数のノードのそれぞれは、
メモリと、
前記メモリを管理する制御回路と、を備え、
前記制御回路は、
アクセス要求を処理するための資源を複数備え、アクセス要求元のノードから自ノードのメモリへのアクセス要求を受信すると、前記複数の資源のうちから１つの資源を確保し、確保した前記１つの資源を用いて、前記アクセス要求によるアクセス先のデータについての前記複数のノードのいずれかによる更新状態を含む管理情報を参照し、いずれかのノードが前記アクセス先のデータを更新している場合には、前記データを更新しているノードに更新されたデータの返送要求を送信するとともに第１の時間の計時を開始し、前記更新されたデータの返送要求に対する応答を受信する前に前記第１の時間が経過した場合に、前記アクセス要求元のノードにエラー応答を返信するとともに第２の時間の計時を開始し、前記第２の時間が経過する前に前記更新されたデータの返送要求に対する応答を受信した場合には、前記受信した応答を破棄し、前記第２の時間が経過した場合に、前記１つの資源を解放する情報処理装置。
【請求項６】
複数のノードを有する情報処理装置の制御方法であって、
アクセス要求元のノードから自ノードのメモリへのアクセス要求を受信すると、前記アクセス要求を処理するための複数の資源のうちから１つの資源を確保し、確保した前記１つの資源を用いて、前記アクセス要求によるアクセス先のデータについての前記複数のノードのいずれかによる更新状態を含む管理情報を参照し、いずれかのノードが前記アクセス先のデータを更新している場合には、前記データを更新しているノードに更新されたデータの返送要求を送信するとともに第１の時間の計時を開始し、前記更新されたデータの返送要求に対する応答を受信する前に前記第１の時間が経過した場合に、前記アクセス要求元のノードにエラー応答を返信するとともに第２の時間の計時を開始し、前記第２の時間が経過する前に前記更新されたデータの返送要求に対する応答を受信した場合には、前記受信した応答を破棄し、前記第２の時間が経過した場合に、前記１つの資源を解放する、情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御回路、情報処理装置、および情報処理装置の制御方法に関する。
【背景技術】
【０００２】
ディレクトリ方式のキャッシュ一貫性（コヒーレンシ）制御を用いたマルチプロセッサシステムとして、ｃａｃｈｅ−ｃｏｈｅｒｅｎｔ  ＮｏｎＵｎｉｆｏｒｍ  Ｍｅｍｏｒｙ
Ａｃｃｅｓｓ（ｃｃ−ＮＵＭＡ）を例示できる。ｃｃ−ＮＵＭＡで例示されるマルチプロセッサシステムにおいては、ノードと呼ばれるサブシステムごとにメモリが設けられる。
【０００３】
それぞれのノードは、プロセッサ等の演算部、制御部等を有し、例えば要求元として、所望のデータが保存されるメモリを管理するノード（以下、要求先のノード）にアクセスする。要求先のノードは、Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＤＲＡＭ）などのメモリに格納されたデータブロックそれぞれに付随する形でキャッシュ持ち出し情報であるディレクトリを保持する。ディレクトリとは、ノードが管理するメモリのデータブロックをどのノードが持ち出してキャッシュに保持しているか等を示す情報である。そして、要求先のノードは、要求に応答するためのメモリアクセスの際に、ディレクトリを読み出してキャッシュ一貫性をチェックする。キャッシュ一貫性があるとは、複数のノードのキャッシュ間でデータの不一致が生じていないことをいう。以上のような制御をディレクトリ方式のキャッシュ一貫性制御という。
【０００４】
例えば、要求先のノードは、ディレクトリを読み出した結果、他のノード（以下、更新ノード）がアクセス対象のメモリのデータを更新している場合には、更新ノードからアクセス対象のメモリのデータを取得し、要求元のノードからの要求に対する処理を実行する。そして、要求先のノードは、取得したデータをメモリに書き戻す。このようなディレクトリ方式のキャッシュ一貫性制御では、要求先のノードが更新ノードへのデータ取得要求に対する応答を待っている状態でタイムアウト時間の経過を検出することがある。すると、要求先のノードは、要求元のノードに対してエラーを通知するとともに、要求を処理するために確保しておいた資源の解放などの処理を実行する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８―３２０８２７号公報
【特許文献２】特開２００７−４８３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、タイムアウト時間の設定が適切でない場合、要求先のノードがエラー応答や資源の解放を行った後に更新ノードから返送データ等の応答を受け取る事象が発生し、受けとった応答の処理が問題となる場合がある。そこで、エラー応答後、あるいは資源の解放後に応答を受けとらないようにするため、応答待ち処理に対するタイムアウト時間が長く設定されることがある。しかし、タイムアウト時間が長く設定されると、システムの性能低下につながるおそれもある。したがって、応答待ちに対するタイムアウト時間を適切に設定することは、装置の性能とトレードオフの関係にあり困難な問題となる。
【０００７】
開示の実施形態は、複数ノードを有する情報処理装置において、データを更新しているノードからの応答がタイムアウト時間よりも遅延した場合でも、情報処理装置を適切に動
作させるとともに、情報処理装置の性能低下を低減することを目的とする。
【課題を解決するための手段】
【０００８】
開示の技術の一側面は、複数のノードを有する情報処理装置の各ノードでそれぞれのメモリを管理する制御回路によって例示される。この制御回路は、アクセス要求元のノードから自ノードのメモリへのアクセス要求を受信すると、受信したアクセス要求を処理するための資源を確保し、受信したアクセス要求によるアクセス先のデータついての前記複数のノードのいずれかによる更新状態を含む管理情報を参照する。いずれかのノードが前記アクセス先のデータを更新している場合には、制御回路は、データを更新しているノードに更新されたデータの返送要求を送信するとともに第１の時間の計時を開始する。そして、更新されたデータの返送要求に対する応答を受信する前に第１の時間が経過した場合に、制御回路は、前記アクセス要求元のノードにエラー応答を返信するとともに第２の時間の計時を開始する。そして、第２の時間が経過した場合に、制御回路は資源を解放する。
【発明の効果】
【０００９】
本制御回路によれば、複数ノードを有する情報処理装置において、データを更新しているノードからの応答がタイムアウト時間よりも遅延した場合でも、情報処理装置を適切に動作させるとともに、情報処理装置の性能低下を低減することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態のマルチプロセッサシステムの構成を例示する図である。
【図２】比較例のマルチプロセッサシステムの構成を例示する図である。
【図３】比較例においてデータがノード外に持ち出されていなかった場合の処理を例示する図である。
【図４】比較例においてデータがノード外に持ち出されていた場合の処理を例示する図である。
【図５】比較例において返送要求先のノードが故障していた場合の処理例である。
【図６】比較例において返送要求先のノードが故障していた場合の処理例である。
【図７】比較例において返送要求先のノードが故障していた場合の処理例である。
【図８】比較例において返送要求先のノードが故障していた場合の処理例である。
【図９】実施の形態１におけるシステムコントローラの詳細構成を例示する図である。
【図１０】実施の形態１のマルチプロセッサによる処理を例示する図である。
【図１１】実施の形態１のマルチプロセッサによる処理を例示する図である。
【図１２】実施の形態１のマルチプロセッサによる処理を例示する図である。
【図１３】実施の形態１のマルチプロセッサによる処理を例示する図である。
【図１４】実施の形態２に係るシステムコントローラの構成を例示する図である。
【図１５】実施の形態２のマルチプロセッサによる処理を例示する図である。
【図１６】実施の形態２のマルチプロセッサによる処理を例示する図である。
【図１７】実施の形態３に係るシステムコントローラの構成を例示する図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、一実施の形態に係るマルチプロセッサシステム１について説明する。以下の実施の形態の構成は例示であり、マルチプロセッサシステム１は実施の形態の構成には限定されない。
【００１２】
図１に、本実施の形態のマルチプロセッサシステム１の構成を例示する。マルチプロセッサシステム１は、Ｎｏｄｅ＃１からＮｏｄｅ＃３の３つのノードを有する。例えば、Ｎｏｄｅ＃１は、プロセッサ（Ｐｒｅｃｅｓｓｏｒ）＃１、システムコントローラ（Ｓｙｓｔｅｍ  Ｃｏｎｔｏｒｏｌｌｅｒ）＃１、メモリ（Ｍｅｍｏｒｙ）＃１を有する。Ｎｏｄ
ｅ＃２、Ｎｏｄｅ＃３の構成も、Ｎｏｄｅ＃１と同様である。すなわち、Ｎｏｄｅ＃ｋは、プロセッサ（Ｐｒｅｃｅｓｓｏｒ）＃ｋ、システムコントローラ（Ｓｙｓｔｅｍ  Ｃｏｎｔｏｒｏｌｌｅｒ）＃ｋ、メモリ（Ｍｅｍｏｒｙ）＃ｋを有する。ここで、ｋは整数１、２、３、・・・、ｎである。すなわち、本実施の形態においてノード数が３個に限定される訳ではなく、正の整数ｎであるとする。各ノード＃ｋにおいて、それぞれのシステムコントローラ＃ｋは、プロセッサ＃１乃至＃ｎ等のいずれかから、メモリ＃ｋへのアクセス要求を受け取り、アクセス要求にしたがった処理を実行する。各システムコントローラ＃ｋは、ディレクトリ方式のキャッシュ一貫性制御を実行する。
【００１３】
［比較例］
＜比較例の構成図＞
図２は、比較例のマルチプロセッサシステム３０１の構成を例示する図である。比較例のマルチプロセッサシステム３０１は、ディレクトリ方式のキャッシュ一貫性制御を実行する。図２においては、ノード＃１のシステムコントローラ＃１の構成が例示されている。ただし、ノード＃２、＃３、・・・、＃ｎのシステムコントローラ＃２、＃３、・・・、＃ｎも、システムコントローラ＃１と同様の構成である。
【００１４】
図２のように、システムコントローラ＃１は、プロセッサインタフェース２１、メモリリクエストキュー２２、メモリデータバッファ２３、データ返送リクエストキュー２４、返送データバッファ２５、およびタイマ２６を有する。プロセッサインタフェース２１は、プロセッサ＃１乃至＃ｎのいずれかからメモリ＃１へのアクセス要求を受け、アクセス要求に対応する処理を実行する。そして、プロセッサインタフェース２１は、処理を完了すると、アクセス要求に対する応答データをアクセス要求元のプロセッサ＃１乃至＃ｎに返信する。以下、アクセス要求元をリクエスタともいう。
【００１５】
メモリリクエストキュー２２は、メモリ＃１へのＲｅａｄ／Ｗｒｉｔｅ要求の待ち行列を保持する先入れ先出しの記憶手段である。メモリデータバッファ２３は、Ｒｅａｄ要求に対するメモリ＃１からの応答データ、ディレクトリ等を保持する一時的な記憶手段である。
【００１６】
データ返送リクエストキュー２４は、ノード＃１以外のノード、すなわち他のノード＃２乃至＃ｎのプロセッサ＃２乃至＃ｎへのデータの返送要求の待ち行列を保持し、先入れ先出しの制御でデータの返送要求を発行する。データの返送要求とは、他のノード＃２乃至＃ｎのプロセッサ＃２乃至＃ｎのうち、メモリ＃１のデータをキャッシュしているプロセッサ＃ｋからデータを取得するための要求である。ここで、メモリ＃１のデータをキャッシュしているプロセッサ＃ｋが、キャッシュしているデータを更新している場合がある。そこで、データ返送リクエストキュー２４は、他のノード＃２乃至＃ｎのうち、データを更新しているプロセッサ＃ｋからデータを取得するのである。すなわち、システムコントローラ＃１は、プロセッサインタフェース２１を介して、メモリ＃１上のデータに対するアクセス要求を受け付けると、メモリ＃１上のデータをキャッシュしている他のノード＃２乃至＃ｎのプロセッサ＃２乃至＃ｎから、更新されたデータを取得する。そして、更新されたデータをメモリ＃１に反映した後、アクセス要求に対応する処理を実行する。
【００１７】
返送データバッファ２５は、データの返送要求に対するプロセッサ＃２乃至＃ｎからの応答データを保持する一時的な記憶手段である。タイマ２６は、データ返送リクエストキュー２４からいずれかのプロセッサにデータ返送リクエストが送信されたときに起動され、計測を開始する計時手段である。タイマ２６による計時時間が所定の設定時間に達すると、タイムアウトが発生する。タイムアウトが発生すると、データ返送要求の対象となったメモリ＃１上のデータへのアクセス要求を発行したプロセッサにエラー応答が通知される。
【００１８】
＜比較例の処理＞
図３、４に、図２のマルチプロセッサシステム３０１によるディレクトリ方式のキャッシュ一貫性制御の方法を例示する。ディレクトリ方式の制御では、ノード外からいずれかのメモリ（例えば、メモリ＃１）にアクセス要求があって、例えばアクセス対象のデータがノード外のプロセッサ（例えば、プロセッサ＃３）にキャッシュされた場合に、キャッシュされている状態が記録される。すなわち、システムコントローラ＃１は、データをキャッシュしたプロセッサ＃３を一意に識別できる情報（プロセッサ＃３の物理ＩＤなど）をディレクトリに書き込んで保持する。また、システムコントローラ＃１は、メモリ＃１へのアクセス要求を受けるたびに、アクセス対象のデータに対応するディレクトリを読み出し、そのデータがノード外に持ち出されているか否かを確認する。このような処理は、他のノードのシステムコントローラ＃２、＃３等でも同様に実行される。
【００１９】
そしてノード外に持ち出されているかどうかにより、以下の２つの応答が行なわれる。なお、いずれかのメモリのデータがいずれかのプロセッサにキャッシュされていることを、データがプロセッサに持ち出されている、ともいう。
【００２０】
＜＜データがノード外に持ち出されていなかった場合＞＞
図３は、データがノード外に持ち出されていなかった場合の処理を例示する。ノード＃２のシステムコントローラ＃２は、リクエスト元のプロセッサ＃１（以下、リクエスタともいう）からアクセス要求を受け付け、アクセス要求に対応するディレクトリ情報をメモリ＃２から読み出し、確認する（処理Ａ１）。図３の例では、メモリ＃２上のデータが最新であることが保証された場合が想定されている。
【００２１】
ノード＃２のシステムコントローラ＃２は、メモリ＃２からアクセス要求対象のデータを取得し、取得したデータで要求元のプロセッサ＃１に応答する（処理Ａ２）。
【００２２】
＜＜アクセスデータがノード外に持ち出されていた場合＞＞
図４は、データがノード外に持ち出されていた場合の処理を例示する。図４で処理Ｂ１は、処理Ａ１と同様であり、ノード＃２のシステムコントローラ＃２は、リクエスト元のプロセッサ＃１からアクセス要求を受け付け、アクセス要求に対応するディレクトリ情報をメモリ＃２から読み出し、確認する（処理Ｂ１）。図４の例では、メモリ＃２上のデータが最新でないことが確認された場合が想定されている。
【００２３】
ノード＃２のシステムコントローラ＃２は、持ち出し先のプロセッサ＃３に対してデータ返送要求を発行する（処理Ｂ２）。持ち出し先のプロセッサ＃３は、ノード＃２のシステムコントローラ＃２にデータを返送する。ノード＃２のシステムコントローラ＃２は、返送されたデータを取得する（処理Ｂ３）。
【００２４】
ノード＃２のシステムコントローラ＃２は、更新されたデータでアクセス要求に対応する処理を実行し、要求元のプロセッサ＃１に応答する。例えば、プロセッサ＃１の要求がメモリ＃１のデータの読み出し要求である場合、更新されたデータをプロセッサ＃１に送信する。そして、ノード＃２のシステムコントローラ＃２は、取得したデータでメモリ＃２のデータとディレクトリを更新し、最新の状態にする（処理Ｂ４）。
【００２５】
各ノード＃ｋのシステムコントローラ＃ｋは、複数ノード間でキャッシュ一貫性制御のため、図３または図４で示したやりとりを実行する。ところで、ノード＃ｋのシステムコントローラ＃ｋが何らかのリクエスト系トランザクションを持ち出し先のプロセッサに発行した後、持ち出し先のプロセッサ、または通信経路で故障が生じた場合、通常はデータが消失する。その結果、要求元ノードのプロセッサはアクセス要求に対応する応答データ
を受け取れない。
【００２６】
図５は、返送要求先のノード＃３が故障していた場合の処理例である。この例ではリクエスト元のプロセッサがノード＃1のプロセッサ＃１、リクエスト先のノードがノード＃
２、持ち出し先のプロセッサがノード＃３のプロセッサ＃３である。図５で、処理Ｃ１、Ｃ２は、図４の処理Ｂ１、Ｂ２と同様である。ただし、ノード＃３のプロセッサ＃３が故障していることが仮定されている。
【００２７】
処理Ｃ３で、システムコントローラ＃２内のタイマ２６は、一定期間待っても持ち出し先のプロセッサ＃３から応答データが受け取れないため、タイムアウトを検出する。システムコントローラ＃２は、通信経路またはノード＃３で故障が発生したと判断してトランザクションを打ち切る。そして、システムコントローラ＃２は、処理Ｃ４で、リクエスト元ノード（すなわち、ノード＃１）のプロセッサ＃１に対してアクセスエラー応答を行い、システム動作を継続する。またシステムコントローラ＃２はトランザクションが占有していた資源を解放する。さらに、システムコントローラ＃２は、持ち出し先であるプロセッサ＃３に持ち出されて更新されたデータを破棄した上で、更新前のデータによってメモリ＃２のデータとディレクトリを更新する。この更新の結果、メモリ＃２が最新化する。
【００２８】
図６から図８は、比較例のマルチプロセッサシステム３０１において生じる問題を例示する。図５と同様、ノード＃２のシステムコントローラ＃２は、リクエスト元のプロセッサ＃１から１つ目のアクセス要求を受け付ける（処理Ｄ１）。次に、システムコントローラ＃２は、プロセッサ＃１からのアクセス要求を処理するための資源１を確保する（処理Ｄ２）。ここで、資源１は、例えば、図２に例示するメモリリクエストキュー２２、メモリデータバッファ２３、データ返送リクエストキュー２４、返送データバッファ２５等のエントリである。
【００２９】
次に、システムコントローラ＃２は、メモリ＃２からディレクトリを読み出し、確認する（処理Ｄ３）。処理Ｄ３の例では、メモリ＃２上のデータが最新でないことが確認された場合が想定されている。そこで、システムコントローラ＃２は、持ち出し先のプロセッサ＃３に対してデータ返送要求を発行する（処理Ｄ４）。処理Ｄ５からＤ８は、図５の処理Ｃ３、Ｃ４と同様である。すなわち、タイムアウトが発生し、システムコントローラ＃２は、プロセッサ＃１に対してアクセスエラー応答を行い、トランザクションが占有していた資源１を解放する。なお、処理Ｄ６、Ｄ７、Ｄ８以降の処理は、図７に例示される。
【００３０】
次に、システムコントローラ＃２は、ノード＃４のプロセッサ＃４から２つ目のアクセス要求を受け付ける（処理Ｄ９）。ここで、２つ目のアクセス要求は、１つ目のアクセス要求と同一アドレスに対するアクセス要求であると仮定する。
【００３１】
処理Ｄ１０、Ｄ１１は、１つ目のアクセス要求に対する処理Ｄ２、Ｄ３と同様である。すなわち、システムコントローラ＃２は、資源１を確保し、メモリ＃２のディレクトリを確認する。ところが図８の例では、処理Ｄ１２において、１つの目のアクセス要求を処理するために発行した持ち出し先へのデータ返送要求（処理Ｄ４のデータ返送要求）に対して、返送データが持ち出し先のプロセッサ＃３から遅延して応答される。また、１つ目のアクセス要求に対する処理で確保された資源１と、２つ目のアクセス要求に対する処理で確保された資源１が同一の資源であると仮定する。システムコントローラ＃２は、処理Ｄ８において資源１を解放している。したがって、２つ目のアクセス要求（プロセッサ＃４からのアクセス要求）を処理するために資源１が利用され得る（処理Ｄ１０）。しかし、処理Ｄ１２では、２つ目のアクセス要求を処理している途中に、１つ目のアクセス要求処理時に発行されたデータ返送要求に対して、持ち出し先プロセッサ＃３から遅れてデータが返送される。すると、システムコントローラ＃２は、１つ目のアクセス要求に対して遅
れて返送されたデータを２つめのアクセス要求のリクエスタ（プロセッサ＃４）に返してしまう（処理Ｄ１３）。このため、本来廃棄されるはずのデータが２つめのアクセス要求のリクエスタ（プロセッサ＃４）に返送され、データ化けが発生する。なお、正常な処理としては、処理Ｄ１３の例では、システムコントローラ＃２は、メモリ＃２から読み出したデータを２つ目のアクセス要求のリクエスタ（プロセッサ＃４）に送信するはずであったのである。
【００３２】
以上のような誤動作は、例えばタイムアウト時間の設定が誤った場合に生じ得る。つまり、処理が打ち切られた後に応答パケットを受け取る事象が発生する。すると、処理Ｄ１３、Ｄ１４のように、マルチプロセッサシステム３０１では、メモリ＃２上のデータ化けのような誤動作が発生することがあり得る。
【００３３】
一方、データ化けが起きないように余裕を持ったタイムアウト時間の設定を行うために、例えば持ち出し先プロセッサ＃３からデータが返送される処理Ｄ１２のタイミングまで時間設定を伸ばす場合を考える。このようにすれば、データ化けは発生しなくなるが、２つ目のリクエスタ（プロセッサ＃４）から受け付けた２つ目のアクセス要求（処理Ｄ９）が最初のアクセス要求（処理Ｄ１）と同一のアドレスであった場合、最初のアクセス要求のメモリへのディレクトリの更新や１つ目のリクエスタへのデータ応答が完了するまで、２つ目のアクセス要求（Ｄ処理９）を待たせなければならない。つまり、同一アドレス宛などアクセス要求の処理順序が決まっている場合、タイマ２６のタイムアウト時間の設定が伸ばされた分だけ、システム性能が低下する。
【００３４】
タイマ２６のタイムアウト、すなわちタイムアウト時間の計時によって他ノードからの応答待ち処理を打ち切るような制御方法が採用される場合、タイムアウト時間はシステムの様々な故障ケースを網羅して決定されることとなり、複数の故障ケースでの条件を満たすタイムアウト時間を設定することは困難な場合が多い。すなわち、図６から図８に例示した処理のように、マルチプロセッサシステム３０１において、データ化けのような誤動作を発生させることなく性能低下も起きないようにすることは困難な問題である。
【００３５】
［実施の形態１］
以下、図９から図１３を参照して、実施の形態１に係るマルチプロセッサシステム１を例示する。実施の形態１のマルチプロセッサシステム１は、応答待ちのタイムアウト時間を適切に設定出来なかった場合に発生するデータ化けのような誤動作を防ぎつつ、システム性能の低下を抑制するエラー制御処理を例示する。マルチプロセッサシステム１は複数のノードを有する情報処理装置の一例である。
【００３６】
＜実施の形態１の構成＞
図９は、実施の形態１におけるマルチプロセッサシステム１のシステムコントローラの詳細構成を例示する図である。図９では、図２のマルチプロセッサシステム３０１とは異なり、データ返送監視用のタイマ２６とは独立して資源解放監視タイマ（以後、ポストタイマ２７と呼ぶ。）を設けている。マルチプロセッサシステム１は、上記比較例のマルチプロセッサシステム３０１で発生するデータ化けのような誤動作を防ぎつつ、システム性能の低下を抑制できるエラー制御方式を実現する。システムコントローラは、各ノードでそれぞれのメモリを管理する制御回路の一例である。
【００３７】
図９に例示したシステムコントローラの各構成要素は、ハードウェアのデジタル回路である。システムコントローラは、図９に例示したプロセッサインタフェース２１、メモリリクエストキュー２２、メモリデータバッファ２３、データ返送リクエストキュー２４、返送データバッファ２５、タイマ２６、ポストタイマ２７等の各構成要素を有する。また、システムコントローラは、これらの構成要素を制御する制御回路を有し、以下に述べる
処理を実行する。システムコントローラの制御回路は、集積回路（ＩＣ）、その他のデジタル回路である。また、システムコントローラの少なくとも一部にアナログ回路が含まれても良い。集積回路は、Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ（ＬＳＩ）、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ（ＡＳＩＣ），プログラマブルロジックデバイス（ＰＬＤ）を含む。ＰＬＤは、例えば、Ｆｉｅｌｄ-Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（ＦＰＧＡ）を含む。シス
テムコントローラは、プロセッサと集積回路との組み合わせであっても良い。組み合わせは、例えば、マイクロコントローラ（ＭＣＵ）、ＳｏＣ（Ｓｙｓｔｅｍ-ｏｎ-ａ-ｃｈｉ
ｐ）、システムＬＳＩ、チップセットなどと呼ばれる。タイマ２６は第１のタイマの一例である。ポストタイマ２７は第２のタイマの一例である。
【００３８】
マルチプロセッサシステム１は、データ返送要求時にタイマ２６が第１の所定時間を計時し、タイムアウトが発生すると、プロセッサインタフェース２１にタイムアウトが通知される。プロセッサインタフェース２１は、タイムアウトの通知を受けると、アクセス要求元のプロセッサにエラー応答を返す。
【００３９】
ただし、実施の形態１では、タイマ２６によるタイムアウトの通知とともに、ポストタイマ２７が起動される。そして、ポストタイマ２７が第２の所定時間を計時してタイムアウトが発生するまでの時間、メモリリクエストキュー２２、メモリデータバッファ２３、データ返送リクエストキュー２４、返送データバッファ２５において、資源（例えば、資源１と呼ぶ）は確保されたままとなる。なお、資源１はプロセッサ＃１乃至＃ｎのいずれかであるアクセス要求元（以下、第１のリクエスタと呼ぶ）のプロセッサからのアクセス要求を処理するために確保されたものである。そして、資源１は、ポストタイマ２７による第２の所定時間計時後に解放される。仮に、第２の所定時間計時前に、第１のリクエスタ以外のプロセッサ（以下、第２のリクエスタと呼ぶ）から２つ目のアクセス要求が、１つ目のアクセス要求と同一のメモリアドレスをアクセス先としてプロセッサインタフェース２１で受け付けられたとする。２つ目のアクセス要求が受け付けられたとき、１つ目のアクセス要求に対する資源１は確保されたままであるので、２つ目のアクセス要求に対する資源２は、資源１と重複することがない。したがって、実施の形態１のシステムコントローラは、比較例のマルチプロセッサシステム３０１で述べたようなデータ化けを防止できる。
【００４０】
さらに、実施の形態１では、１つ目のアクセス要求を処理するためにデータ返送要求がプロセッサ＃２乃至＃ｎに対して行われる。そして、タイマ２６による第１の時間経過後（タイムアウト後）、ポストタイマ２７による第２の所定時間計時前までの間に、返送データバッファ２５が返送データを受信した場合、受信された返送データが破棄される。したがって、第１の時間経過によるタイムアウトによってエラー応答とメモリの更新がなされた後、遅れて返送された返送データが１つ目のアクセス要求を処理するために確保されている資源１によって処理されることがない。その結果、ポストタイマ２７による第２の所定時間計時前までの間に資源１が遅れて返送された返送データを処理することによる誤動作の発生が抑止される。第１の時間は、タイマ２６がタイムアウトする時間であり、データ返送要求を待つ処理のタイムアウト時間ということができる。
【００４１】
＜実施の形態１の処理＞
以下、図１０から図１３により、実施の形態１のマルチプロセッサ１による処理を説明する。以下の処理は、アクセス要求の対象であるメモリのアクセス先アドレスのデータがノード外に持ち出されていた場合の処理である。まず、図１０における処理Ｐ１乃至Ｐ５は、図６の処理Ｄ１乃至Ｄ５と同様である。また、図１１における処理Ｐ６乃至Ｐ７は、図７における処理Ｄ６乃至Ｄ７と同様である。なお、図１０から図１３は、システムコントローラ＃２の処理を例示する。ただし、これらの処理は、システムコントローラ＃ｋに
共通に処理ということができる。
【００４２】
処理Ｐ１は、アクセス要求元のノードから自ノードのメモリへのアクセス要求を受信することの一例である。処理Ｐ２は、アクセス要求を処理するための資源を確保することの一例である。処理Ｐ３では、システムコントローラ＃２は、メモリ＃２からアクセス要求先のデータとディレクトリを読み出し、読み出したデータが他のノードのプロセッサによって持ち出され、持ち出し先で更新されているか否かを判定する。処理Ｐ３は、アクセス要求によるアクセス先のデータついての前記複数のノードのいずれかによる更新状態を含む管理情報を参照することの一例である。ディレクトリは更新状態を含む管理情報の一例である。処理Ｐ４では、データ持出先のノード＃３のプロセッサ＃３にデータ返送要求が送信されるとともに、タイマ２６が起動される。処理Ｐ４は、第１の時間の計時を開始することの一例である。処理Ｐ５は、更新されたデータの返送要求に対する応答を受信する前に前記第１の時間が経過した場合を例示する。処理Ｐ６は、アクセス要求元のノードにエラー応答を返信することの一例である。
【００４３】
実施の形態１では、リクエスタであるプロセッサ＃１へのアクセスエラー応答（処理Ｐ６）後、さらに、ディレクトリの更新（処理Ｐ７）により、メモリ＃２上のデータが最新となった後に、ポストタイマ２７が起動される（処理Ｐ８）。タイマ１が第１所定時間を計時し、タイムアウトを検出した後、ポストタイマ２７は、処理Ｐ１で受け付けた１つ目のアクセス要求を処理するための資源１をさらに確保を継続する確保時間を計時する。処理Ｐ８は、第２の時間の計時を開始することの一例である。
【００４４】
そして、システムコントローラ＃２が２つ目のアクセス要求を受け付ける（処理Ｐ９）。２つ目のアクセス要求は、例えば、プロセッサ＃４からのものであり、1つ目のアクセ
ス要求と同じアドレスへなされる読み出し要求であるとする。すると、システムコントローラ＃２は、資源を獲得する（処理Ｐ１０）。すなわち、システムコントローラ＃２は、処理Ｐ９で受け付けたアクセス要求を処理するため、メモリリクエストキュー２２、メモリデータバッファ２３、データ返送リクエストキュー２４、データ返送バッファ２５、タイマ２６、ポストタイマ２７などの資源を獲得する。この例で獲得した資源は、資源２と呼ぶことにする。
【００４５】
次に、処理が図１２に移動する。システムコントローラ＃２は、資源２のメモリリクエストキュー２２から、アクセス要求に対応するディレクトリの情報（以下、単にディレクトリという）をメモリ＃２に対し要求し、メモリ＃２よりディレクトリを資源２のメモリデータバッファ２３に受け取る（処理Ｐ１１）。そして、例えば、受け取ったディレクトリからメモリ上のデータが最新であることが判明する。すると、システムコントローラ＃２は、２つ目のリクエスタであるプロセッサ＃４へメモリ＃２から読み出したデータを応答する（処理Ｐ１２）。
【００４６】
次に、システムコントローラ＃２は、資源２のメモリリクエストキュー２２のデータでプロセッサ＃４に応答したことを基に、メモリ＃２のディレクトリを更新する（処理Ｐ１３）。さらに、システムコントローラ＃２は、資源２を解放する（処理Ｐ１４）。
【００４７】
ここで、例えば、持ち出し先プロセッサ＃３から、１つ目のアクセス要求時のデータ返送要求に対して、資源１のデータ返送バッファ２５に遅れてデータが返送されてきたとする。すると、システムコントローラ＃２は、ポストタイマ２７の起動から第２の所定時間が経過していないため、応答データ（応答パケットとも呼ぶ）を破棄する（処理Ｐ１５）。処理Ｐ１５は、第２のタイマによる計時時間が第２の所定時間に達する前に前記更新されたデータの返送要求に対する応答を受信した場合に前記受信した応答を破棄することの一例である。
【００４８】
破棄により古いデータが使用されることはなくなる。そして、システムコントローラ＃２は、資源１のポストタイマ２７の起動から第２の所定時間が経過したとき、資源１を解放する（図１３、処理Ｐ１６）。処理Ｐ１６は、第２の時間が経過した場合に、前記資源を解放することの一例である。
【００４９】
比較例のマルチプロセッサ３０１では、図７のディレクトリ更新（処理Ｄ７）の後に、システムコントローラ＃２が資源１を解放していた（図７の処理Ｄ８）。一方、実施の形態１では、システムコントローラ＃２はポストタイマ２７を起動し、ポストタイマ２７の起動から第２の所定時間が経過するまで資源１の解放を抑止する。資源１が解放されない状態で次のアクセス要求があったとしても、システムコントローラ＃２は別の資源（図１２では資源２）を確保し、処理を行うことになる。
【００５０】
また、実施の形態１において、マルチプロセッサシステム１のシステムコントローラ＃２は、ポストタイマ２７の起動から第２の所定時間経過するまでに何らかのデータを受け取った場合は、そのデータを破棄する（処理Ｐ１５）。すなわち、実施の形態１では、タイマ２６とは独立したポストタイマ２７を導入し、予期できないタイミングで応答データが遅延して受信された場合でも、ポストタイマ２７の起動から一定時間経過するまでは以下の処理が実行される。
（１）システムコントローラ＃２は、１つ目のアクセス要求を処理するために行われたメモリ＃２へのデータ返送要求に対する返送データを受け取ったとしても、受け取ったデータを破棄する。
（２）２つ目のアクセス要求があっても、１つ目のアクセス要求時に確保された資源（資源１）が使用されずに、別資源（資源２）が使用される。
【００５１】
したがって、実施形態１のシステムコントローラでは、以上の（１）（２）の処理により、比較例のマルチプロセッサ３０１で発生していたように、資源１が古いデータで書き替えられることによるデータ化けが防止できる。
【００５２】
また、実施の形態１のマルチプロセッサ１では、比較例のマルチプロセッサ３０１で問題点となる性能低下の問題を抑制できる。つまり、実施の形態１では、図１１の処理Ｐ７のタイミングでメモリへのディレクトリの更新が完了する。そのため次のアクセス要求が新たなリクエスタ（例えば、プロセッサ＃４）からメモリ＃２の同一アドレスに対してあった場合でも、システムコントローラ＃２は、２つ目のアクセス要求（処理Ｐ９）のタイミングで、新たなリクエスタからのアクセス要求に対する処理を開始することができる。なお、比較例のマルチプロセッサシステム３０１では、誤動作防止のため、２つ目のアクセス要求は、例えば図８の処理Ｄ１３まで待たせることになる。したがって、実施の形態１では、マルチプロセッサシステム３０１と比較してシステム性能の低下が抑制される。実施の形態１では、タイマ２６とポストタイマ２７の併用によって、以上の処理を実現できる。
【００５３】
［実施の形態２］
図１４から図１６を参照して、実施の形態２に係るマルチプロセッサシステム１を説明する。実施の形態２では、システムコントローラの他の構成例と制御シーケンス例とが示される。
【００５４】
＜実施の形態２の構成＞
図１４に実施の形態２に係るシステムコントローラ＃２の構成を例示する。ただし、他のシステムコントローラ＃ｋ（ｋ＝１、３、・・・・、ｎ）も図１４と同様である。図１４のように、実施の形態２では、システムコントローラ＃２は、プロセッサインタフェー
ス２１、使用エントリ決定部３０、複数（ｍ個）の要求処理エントリ、メモリリクエストキュー２２、データ返送リクエストキュー２４、応答調停部３１を有する。すなわち、図１４では、図９と比較して、使用エントリ決定部３０、複数（ｍ個）の要求処理エントリ、ディレクトリバッファ３３、および応答調停部３１が例示される。ただし、実施の形態２のシステムコントローラの他の構成要素および各構成要素を制御する制御回路は、図９での説明と同様であるので、詳細な説明を省略する。すなわち、図１４に例示したシステムコントローラの各構成は、ハードウェアのデジタル回路である。プロセッサインタフェース２１の処理は、図９の場合と同様である。プロセッサインタフェース２１は、インタフェース部の一例である。
【００５５】
また、各要求処理エントリは、エントリ制御部３２、ディレクトリバッファ３３、メモリデータバッファ２３、返送データバッファ２５、タイマ２６、ポストタイマ２７、およびポストタイマ制御部２８を有する。すなわち、実施の形態２では、複数（ｍ個）のエントリが並列的に動作する。要求処理エントリは受け付けたアクセス要求を処理するための資源をそれぞれ有する複数のエントリの一例である。尚、メモリデータバッファ２３、返送データバッファ２５は２つに分けずに１つのバッファに統合しても良い。
【００５６】
システムコントローラ＃２のプロセッサインタフェース２１は、複数のプロセッサ＃１乃至＃ｎからメモリ＃２へのアクセス要求を受け付けて調停し、処理が完了した順に、アクセス要求元のプロセッサ＃１乃至＃ｎに応答を行う。
【００５７】
使用エントリ決定部３０は、受信したメモリ＃２へのアクセス要求を処理するため、要求処理エントリを１つ選択し、選択したエントリにおいて資源を確保し、選択した要求処理エントリにアクセス要求を転送する。使用エントリ決定部３０は、受け付けたアクセス要求に対して前記複数のエントリの１つを割り当てる使用エントリ決定部の一例である。
【００５８】
メモリリクエストキュー２２は、各要求処理エントリからのメモリ＃２へのＲｅａｄ／Ｗｒｉｔｅ要求を調停し、順にメモリ＃２に対して発行する。データ返送リクエストキュー２４は、各要求処理エントリからのデータ返送要求を調停し、順にノード外の宛先プロセッサ＃２乃至＃ｎに発行する。
【００５９】
応答調停部３１は、各要求処理エントリのエントリ制御部３２からリクエスタに発行される応答とデータバッファのデータを関係づける。そして、応答調停部３１は、要求処理エントリ間の調停を行って、関係づけた応答とデータとを順番にプロセッサインタフェース２１に転送する。
【００６０】
エントリ制御部３２は、各要求処理エントリにおいて、メモリ＃２へのＲｅａｄ／Ｗｒｉｔｅ要求の発行、メモリ＃２のデータを持ち出しているプロセッサ＃２乃至＃ｎへのデータ返送要求の発行、および応答調停部３１への応答を行う。
【００６１】
ディレクトリバッファ３３は、メモリ＃２から応答されたディレクトリの情報を格納するバッファである。メモリデータバッファ２３は、メモリ＃２から応答されたＲｅａｄデータを格納するバッファである。返送データバッファ２５は、ノード外のプロセッサ＃２乃至＃ｎからの返送データを格納するバッファである。
【００６２】
タイマ２６は、エントリ制御部３２のデータ返送要求発行と同時に起動されるタイマである。タイマ起動から第1の所定時間以内に返送データを受信できない場合、プロセッサ
インタフェース２１およびポストタイマ２７に対してタイムアウトが通知される。
【００６３】
ポストタイマ２７は、タイマ２６からのタイムアウト通知により起動されるタイマであ
る。ポストタイマ制御部２８は、ポストタイマ２７の起動から第２の所定時間以内に返送データを受信した場合は、受信した返送データを破棄する。また、ポストタイマ制御部２８は、ポストタイマ２７の起動から一定時間経過後に要求処理エントリ内のリソースを解放する。
【００６４】
＜実施の形態２の処理＞
図１５および図１６に、実施の形態２におけるシステムコントローラ（例えばノード＃２のシステムコントローラ＃２）の動作シーケンスを例示する。システムコントローラ＃２は、例えばノード＃１のプロセッサ＃１からメモリへのアクセス要求（要求１とする）を受信する（Ｓ１）。Ｓ１の処理は、アクセス要求元のノードから自ノードのメモリへのアクセス要求を受信することの一例である。
【００６５】
システムコントローラ＃２は要求１と同一アドレスへのメモリへのアクセス要求（要求０とする）が存在するか否かを確認する（Ｓ２）。Ｓ２で、要求０が存在する場合、システムコントローラは要求０で獲得しているエントリ（エントリ０とする）のポストタイマ２７が起動しているかを確認する（Ｓ３）。Ｓ３でポストタイマ２７が起動していない場合、システムコントローラ＃２はエントリ０の処理が終わるのを待つ（Ｓ４）。Ｓ４でのエントリ０の処理には、メモリ＃２上のディレクトリとデータの更新が含まれる。Ｓ４で処理が完了すると、システムコントローラ＃２はＳ５の処理へ進める。なお、Ｓ３でポストタイマ２７が起動している場合も、システムコントローラ＃２はＳ５の処理へ進める。なお、Ｓ３でポストタイマ２７が起動している場合が、１つ目のリクエスタからのアクセス要求時にエラー応答がなされ、ポストタイマ２７が第２所定時間を計時するまで、１つ目のアクセス要求処理のための資源が確保されている場合に相当する。したがって、図１５のシーケンスによれば、複数のリクエスタからのアクセス要求が同一のメモリのアドレスになされても、適正に処理が実行される。
【００６６】
そして、システムコントローラ＃２は空きエントリから1つを選んで獲得する（Ｓ５）
。なお、システムコントローラ＃２はエントリ１の資源を確保する。Ｓ５の処理は、アクセス要求を処理するための資源を確保することの一例である。ここではエントリ１が選ばれたとする。次に、システムコントローラ＃２はメモリ＃２からディレクトリと読み出し対象のデータを読み出す（Ｓ６）。さらに、システムコントローラ＃２は取得したディレクトリと読み出し対象のデータをエントリ１のディレクトリバッファ３３、メモリデータバッファ２３にそれぞれ格納する（Ｓ７）。以下、図１６により説明を継続する。
【００６７】
システムコントローラ＃２はエントリ１のディレクトリバッファ３３のディレクトリ情報をデコードしてメモリ上のデータが最新か確認する（Ｓ８）。Ｓ８の処理は、アクセス要求によるアクセス先のデータついての前記複数のノードのいずれかによる更新状態を含む管理情報を参照することの一例である。ディレクトリは、更新状態を含む管理情報の一例である。Ｓ８の判定で、メモリ＃２上のデータが最新でない場合、システムコントローラ＃２はデータを持ち出しているノード外プロセッサ（例えば、ノード＃３のプロセッサ＃３）にデータ返送要求を発行する（Ｓ９）。Ｓ９の処理は、いずれかのノードが前記アクセス先のデータを更新している場合には、前記データを更新しているノードに更新されたデータの返送要求を送信することの一例である。次に、システムコントローラ＃２はエントリ１のタイマ２６を起動する（Ｓ１０）。Ｓ１０の処理は、第１の時間の計時を開始することの一例である。
【００６８】
そして、システムコントローラ＃２は、タイマ２６が第１の所定時間を計時し、タイムアウトする前に、返送データを受け取ったか否かを判定する（Ｓ１１）。Ｓ１１で返送データを受け取った場合、システムコントローラ＃２は持出し先のプロセッサ＃３から返送データを受け取り、エントリ１のメモリデータバッファ２３および返送データバッファ２
５に上書きして、データを更新する（Ｓ１２）。さらに、システムコントローラ＃２は、エントリ１のタイマ２６を停止する（Ｓ１３）。そして、システムコントローラ＃２は、Ｓ１４の処理に進む。Ｓ８の判定で、メモリ＃２上のデータが最新の場合も、システムコントローラ＃２はＳ１４の処理に進む。
【００６９】
そして、システムコントローラ＃２は、アクセス要求元のプロセッサ＃１にエントリ１のメモリデータバッファ２３に格納されているデータによって応答する（Ｓ１４）。さらに、システムコントローラ＃２は、ディレクトバッファ３３を更新し、メモリ＃２にディレクトバッファ３３とメモリデータバッファ２３のデータを書き込む。すなわち、システムコントローラ＃２は、メモリ＃２上のディレクトリの情報とデータを更新する（Ｓ１５）。さらに、システムコントローラ＃２は、エントリ１の資源を開放して処理を完了する。
【００７０】
一方、Ｓ１１の判定で、システムコントローラ＃２が持出し先のプロセッサ＃３から返送データを受け取れない場合、タイマ２６が第1の所定時間を計時し、タイムアウトを検
出する（Ｓ１７）。Ｓ１７は、更新されたデータの返送要求に対する応答を受信する前に前記第１の時間が経過した場合の一例である。
【００７１】
すると、システムコントローラ＃２は、アクセス要求元のプロセッサ＃１にアクセスエラー応答を発行する（Ｓ１８）。Ｓ１８の処理は、アクセス要求元のノードにエラー応答を返信することの一例である。さらに、システムコントローラ＃２は、メモリ＃２にデータを書き込む。すなわち、システムコントローラは、メモリ＃２上のディレクトリとデータを更新する（Ｓ１９）。すなわち、システムコントローラは、持出しプロセッサ＃３によるデータ更新前のデータが最新のデータとなるように、ディレクトリを更新する。
【００７２】
そして、システムコントローラ＃２は、エントリ１のポストタイマ２７を起動する（Ｓ２０）。Ｓ２０の処理は第２の時間の計時を開始することの一例である。次に、システムコントローラ＃２はエントリ１のポストタイマ２７の起動から第２の所定時間経過する前に持出し先のプロセッサ＃３から返送データを受け取ったか否かを判定する（Ｓ２１）。Ｓ２１で返送データを受け取った場合には、システムコントローラ＃２は、返送データを破棄する（Ｓ２２）。Ｓ２２の処理は、第２の時間が経過する前に前記更新されたデータの返送要求に対する応答を受信した場合に前記受信した応答を破棄することの一例である。
【００７３】
そして、エントリ１のポストタイマ２７の起動から第２の所定時間経過したときに、ポストタイマ２７は、第２の所定時間経過が経過したことをポストタイマ制御部２８に通知する（Ｓ２３）。そして、ポストタイマ制御部２８は、エントリ１の資源を開放して処理を完了する（Ｓ２４）。Ｓ２４の処理は、第２の時間が経過した場合に、前記資源を解放することの一例である。尚、システムコントローラ＃２は、マルチプロセッサシステム１の信頼性を高める目的で、Ｓ２２で返送データを破棄する代わりに動作継続不能なエラーとして持出し先のプロセッサ＃３の動作を停止させるように制御しても良い。
【００７４】
以上述べたように、実施形態２のシステムコントローラによっても、実施形態１で述べたのと同様、以下の処理が実行される。
（１）システムコントローラは、該当資源（資源１）が１つ目のアクセス要求を処理するために行われたメモリへのデータ返送要求に対する返送データを受け取ったとしてもそのデータを破棄する。
（２）２つ目のアクセス要求があっても、１つ目のアクセス要求時に確保された資源（資源１）が使用されずに、別資源（資源２）が使用される。
【００７５】
したがって、実施の形態２のマルチプロセッサ１は、応答待ちのタイムアウト時間の設定を誤った場合に発生するデータ化けのような誤動作の発生を防ぎ、かつシステム性能の低下も防ぐことができる。すなわち、実施の形態２のマルチプロセッサ１は、予期しないタイミングで応答される応答パケット遅延が発生した場合にも同じアドレスへの再アクセス処理を待たせない仕組みを実現する。また、実施の形態２のマルチプロセッサ１は、アクセスエラー応答と同時にポストタイマ２７を起動し、ポストタイマ２７の起動から一定時間経過するまでは応答パケットを破棄することで予期しないタイミングでのアクセス応答によるデータ化けを防止する。また、実施の形態２のマルチプロセッサ１は、ポストタイマ２７が一定時間経過後に初めて資源を解放することで、データ化けのような致命的な誤動作を防止とシステム性能低下の防止というトレードオフの関係を両立させる。実施の形態１では、タイマ２６とポストタイマ２７の併用によって、以上の処理を実現できる。
【００７６】
さらに、実施の形態２のマルチプロセッサ１は、複数個の要求処理エントリを有し、各要求処理エントリは、エントリ制御部３２、ディレクトリバッファ３３、メモリデータバッファ２３、返送データバッファ２５、タイマ２６、ポストタイマ２７、およびポストタイマ制御部２８等の資源を有する。したがって、実施の形態２では、複数（ｍ個）のエントリが並列的に動作して、データ化けのような誤動作の防止とシステム性能低下の防止を両立することができる。システムコントローラは、複数のエントリを持つことで、互いに依存関係のないアクセス要求を並列して処理できる。
【００７７】
［実施の形態３］
上記実施の形態１および実施の形態２では、タイマ２６とポストタイマ２７の２つのタイマにより、データ返送要求に対するタイムアウト検出のための第１の時間の計時、資源確保の期間としての第２の時間の計時を実行した。しかし、第１の時間および第２の時間を同一のタイマ２６で計時してもよい。実施の形態３では、ポストタイマ２７を用いないで、実施の形態１および実施の形態２と同様の処理を実行するマルチプロセッサシステム１について説明する。実施の形態３の他の構成要素は、実施の形態１あるいは実施の形態２と同様である。そこで、実施の形態１あるいは実施の形態２と同一の構成要素については、同一の符号を付してその説明を省略する。
【００７８】
図１７に実施の形態３に係るマルチプロセッサシステム１を例示する。図１７には、図９と同様、システムコントローラ＃１の詳細が例示されている。実施の形態３に係るシステムコントローラ＃１は、実施の形態１と同様、プロセッサインタフェース２１、メモリリクエストキュー２２、メモリデータバッファ２３、データ返送リクエストキュー２４、返送データバッファ２５、タイマ２６等の各構成と、各構成を制御する制御回路を有する。ただし、実施の形態３では、ポストタイマ２７は設けられていない。ポストタイマ２７に代えて、実施の形態３に係るシステムコントローラ＃１は、監視回路２９を有する。
【００７９】
システムコントローラ＃１は、実施の形態１および実施の形態２と同様、アクセス要求元のノードから自ノードのメモリへのアクセス要求を受信すると、受信したアクセス要求を処理するための資源（メモリリクエストキュー２２、メモリデータバッファ２３、データ返送リクエストキュー２４、返送データバッファ２５、タイマ２６等）を確保する。
【００８０】
監視回路２９は、タイマ２６が第１の時間を計時し、タイムアウトを検出すると、タイマ２６に第２の時間を設定し、タイマ２６を再起動する。また、監視回路２９は、タイマ２６が第２の時間によりタイムアウトすると、確保されていた資源を解放する。また、監視回路２９は、タイムアウトするまでの間、返送データバッファ２５に、返送データが受信されると、破棄するように、返送データバッファ２５に返送データ送受信抑止制御を実行する。例えば、監視回路２９は、返送データバッファ２５のイネーブル端子がディスエーブルとなるように、制御信号を返送データバッファ２５に通知すればよい。
【００８１】
以上のような実施の形態３の構成によれば、実施の形態１、２のようなポストタイマ２７をシステムコントローラ＃１が有していない場合でも、実施の形態１、２と同様の制御実行できる。ポストタイマ２７の代わりに、監視回路２９を設けることで、タイマの数を削減できる。
【００８２】
なお、上記実施の形態３では、実施の形態１と同様、要求処理エントリを有しないシステムコントローラによる処理を説明した。しかし、実施の形態３の構成を実施の形態２に適用できることは容易に理解できる。すなわち、タイマ２６によって、データ返送要求に対する応答のタイムアウトを検知し、さらに、監視回路２９がタイマ２６に第２の時間を設定して再起動すればよい。このような構成によって、実施の形態２においても、ポストタイマ２７を用いないで、タイマ２６と監視回路２９とによってデータ返送の遅延に伴う誤動作を抑止する処理が実行可能となる。
【００８３】
［変形例］
上記実施の形態１から実施の形態３では、なお、図１、図９、図１４のように、システムコントローラと、プロセッサとが別体で、例えば異なるチップに形成されている。しかしながら、システムコントローラと、プロセッサとが一体で形成されてもよい。例えば、システムコントローラの処理を実行するハードウェア回路、プロセッサインタフェース２１、メモリリクエストキュー２２、メモリデータバッファ２３、データ返送リクエストキュー２４、返送データバッファ２５、タイマ２６、ポストタイマ２７、ポストタイマ制御部２８等がプロセッサ内に含まれるようにしてもよい。
【符号の説明】
【００８４】
１、３０１    マルチプロセッサシステム
２１            プロセッサインタフェース
２２            メモリリクエストキュー
２３            メモリデータバッファ
２４            データ返送リクエストキュー
２５            返送データバッファ
２６            タイマ
２７            ポストタイマ
２８            ポストタイマ制御部
２９            監視回路
３０            使用エントリ決定部
３１            応答調停部
３２            エントリ制御部
【図１】
0006578992.tif 000002
【図２】
0006578992.tif 000003
【図３】
0006578992.tif 000004
【図４】
0006578992.tif 000005
【図５】
0006578992.tif 000006
【図６】
0006578992.tif 000007
【図７】
0006578992.tif 000008
【図８】
0006578992.tif 000009
【図９】
0006578992.tif 000010
【図１０】
0006578992.tif 000011
【図１１】
0006578992.tif 000012
【図１２】
0006578992.tif 000013
【図１３】
0006578992.tif 000014
【図１４】
0006578992.tif 000015
【図１５】
0006578992.tif 000016
【図１６】
0006578992.tif 000017
【図１７】
0006578992.tif 000018