以下、図面を用いて実施形態を説明する。
図1は、情報処理装置、演算処理装置および情報処理装置の制御方法の一実施形態を示す。図1に示す情報処理装置IPE1は、サーバ等であり、演算処理装置1と、演算処理装置1に接続される記憶装置2とを含む複数のノードND(ND1、ND2)を有する。すなわち、情報処理装置IPE1は、マルチプロセッサシステムとして機能する。記憶装置2は、主記憶装置、または演算処理装置1の外部に接続されるキャッシュメモリ部である。記憶装置2がキャッシュメモリ部の場合、さらに、主記憶装置が記憶装置2に接続される。
演算処理装置1は、演算処理を実行する演算処理部3と、演算処理部3で処理するデータを保持するキャッシュメモリ部4と、キャッシュミス時に記憶装置2に対するメモリアクセス要求を発行するキャッシュメモリ制御部5と、メモリアクセス制御部6とを有する。メモリアクセス制御部6は、メモリアクセス要求に基づいてメモリアクセス処理を実行するとともに、キャッシュコヒーレンシを維持させる処理を実行する。
メモリアクセス制御部6は、メモリ制御部7と、持ち出し先検出部8と、コヒーレンシ制御部9とを有する。メモリ制御部7は、キャッシュメモリ制御部5からのメモリアクセス要求に基づいて、メモリアクセス要求のアクセス対象である対象データと、対象データをキャッシュメモリ部4に持ち出したノードNDを識別するディレクトリ情報とを記憶装置2から読み出す。以下では、対象データを持ち出した他ノードNDは、持ち出しノードNDとも称される。なお、メモリ制御部7は、自ノードNDまたは他ノードNDのキャッシュメモリ制御部5が発行する自ノードNDの記憶装置2に対するメモリアクセス要求に基づいてメモリアクセス処理を実行する。
持ち出し先検出部8は、記憶装置2から読み出された対象データが他ノードNDのキャッシュメモリ部4に持ち出されたか否かを、対象データとともに記憶装置2から読み出したディレクトリ情報に基づいて検出する。持ち出し先検出部8は、記憶装置2から読み出した対象データを持ち出している他のノードNDである持ち出しノードNDをディレクトリ情報に基づいて検出する検出部の一例である。
コヒーレンシ制御部9は、持ち出し先検出部8が持ち出しノードNDを検出した場合、持ち出しノードNDのキャッシュメモリ部4から対象データを追い出させる追い出し要求を持ち出しノードNDに発行する。持ち出しノードNDのキャッシュメモリ制御部5は、追い出し要求に基づいて、キャッシュメモリ部4に保持された対象データをキャッシュメモリ部4から追い出す。例えば、対象データの追い出しは、対象データをキャッシュメモリ部4から読み出した後、キャッシュメモリ制御部5における対象データを保持するエントリのキャッシュステータスを無効(インバリッド)に設定することで実行される。
持ち出しノードNDのキャッシュメモリ制御部5は、キャッシュメモリ部4に保持した対象データを更新(上書き)した場合、更新した対象データを含む応答を追い出し要求の要求元に発行する。一方、持ち出しノードNDのキャッシュメモリ制御部5は、キャッシュメモリ部4に保持された対象データを更新していない場合、対象データをキャッシュメモリ部4から追い出したことを示す情報を含む応答を追い出し要求の要求元に発行する。なお、持ち出しノードNDのキャッシュメモリ制御部5は、キャッシュメモリ部4に保持された対象データを更新していない場合にも、キャッシュメモリ部4から追い出した対象データを含む応答を追い出し要求の要求元に発行してもよい。
コヒーレンシ制御部9は、追い出し要求に対する応答に基づいて、メモリアクセス要求に対する応答をメモリアクセス要求の発行元に発行する。例えば、追い出し要求に対応して持ち出しノードNDが発行した応答に更新された対象データが含まれる場合、メモリアクセス要求に対する応答は、対象データを他ノードNDから追い出したことを示す情報と、更新された対象データとを含む。追い出し要求に対応して持ち出しノードNDから発行された応答に更新された対象データが含まれない場合、メモリアクセス要求に対する応答は、メモリアクセス要求に基づいて記憶装置2から読み出された対象データと、対象データを他ノードNDから追い出したことを示す情報とを含む。持ち出しノードNDが存在しないことを持ち出し先検出部8が検出した場合、メモリアクセス要求に対する応答は、メモリアクセス要求に基づいて記憶装置2から読み出された対象データと、持ち出しノードNDが存在しないことを示す情報とを含む。そして、コヒーレンシ制御部9は、対象データの追い出しに伴い更新したディレクトリ情報の記憶装置2への書き込みを、メモリ制御部7に指示する。
さらに、コヒーレンシ制御部9は、追い出し要求の発行から所定時間が経過するまでに追い出し要求に対する応答を受信しない場合、メモリアクセス要求に対するエラー応答をメモリアクセス要求の発行元に発行する。エラー応答は、持ち出しノードNDからの応答を受信しなかったことを示す情報を含む。例えば、ノードND間を接続する通信経路等で故障が一時的に発生し、追い出し要求が持ち出しノードNDに届かない場合、持ち出しノードNDは、追い出し要求を認識しないため、追い出し要求に対する応答を発行しない。持ち出しノードNDは、対象データをキャッシュメモリ部4から追い出すことなく、演算処理を続ける。所定時間の経過後、コヒーレンシ制御部9は、持ち出しノードNDのキャッシュメモリ部4に保持されている対象データを無効化させる無効化要求を持ち出しノードNDに発行する。
無効化要求の発行時に、通信経路等の故障が解消している場合、持ち出しノードNDは、無効化要求を受信する。持ち出しノードNDのキャッシュメモリ制御部5は、無効化要求に基づいて、キャッシュメモリ部4に保持されている対象データを無効化し、対象データを無効化したことを示す情報を含む応答を、無効化要求を発行したノードNDに発行する。例えば、対象データの無効化は、キャッシュメモリ制御部5における対象データを保持するエントリのキャッシュステータスを無効(インバリッド)に設定することで実行される。
なお、ノードND間を接続する通信経路等で発生した故障が一時的でなく継続している場合、持ち出しノードNDは、無効化要求を受信しないため、対象データを無効化せず、無効化要求に対する応答を発行しない。無効化要求の発行元のコヒーレンシ制御部9は、無効化要求に対する応答を受信せずにタイムアウトが発生した場合、ノードND間での通信に異常が発生したことを、ノードNDの動作を管理する管理装置に通知する。
図2は、図1に示す情報処理装置IPE1の動作の一例を示す。
まず、図2(A)において、ノードND1のキャッシュメモリ制御部5は、ノードND1の記憶装置2に対するメモリアクセス要求MRQを発行する。なお、メモリアクセス要求MRQは、ノードND1、ND2以外のノードNDから発行されてもよい。ノードND1におけるメモリアクセス制御部6内のメモリ制御部7は、メモリアクセス要求MRQに基づいてリード要求RRQを記憶装置2に発行し、メモリアクセス要求MRQに対応する対象データD1とディレクトリ情報DIRとを記憶装置2から読み出す。ノードND1におけるメモリアクセス制御部6内の持ち出し先検出部8は、ディレクトリ情報DIRに基づいて、対象データD1がノードND2に持ち出されていることを検出する。
次に、図2(B)において、ノードND1におけるメモリアクセス制御部6内のコヒーレンシ制御部9は、追い出し要求MORQを持ち出しノードND2に発行する。しかしながら、図2(B)に示す例では、ノードND1、ND2間の通信経路等で発生した一時的な故障により、追い出し要求MORQは、持ち出しノードND2に届かない。この場合、追い出し要求を認識しない持ち出しノードND2は、対象データを用いて演算処理を実行し、対象データを更新するおそれがある。なお、ノードND1、ND2間の通信経路等で発生した故障は一時的であるため、図2(B)の後に解消されるものとする。
次に、図2(C)において、ノードND1におけるメモリアクセス制御部6内のコヒーレンシ制御部9は、追い出し要求MORQの発行から所定時間(例えば、数ミリ秒から数十ミリ秒)が経過しても追い出し要求に対する応答を受信しない。このため、ノードND1のコヒーレンシ制御部9は、タイムアウトを検出し、図2(A)のメモリアクセス要求MRQに対するエラー応答ERESをメモリアクセス要求MRQの発行元であるノードND1のキャッシュメモリ制御部5に発行する。すなわち、コヒーレンシ制御部9は、追い出し要求をリトライすることなく、エラー応答ERESを発行する。これにより、追い出し要求をリトライする場合に比べて、メモリアクセス要求に対する応答が遅れることを抑止することができる。また、ノードND1のメモリアクセス制御部6は、エラー情報ERRを追加したディレクトリ情報DIRを記憶装置2に書き込む。例えば、ノードND2では、対象データD1を用いた演算処理が実行され、対象データD1は、データD1’に更新される。なお、ノードND1のメモリアクセス制御部6は、ノードND1、ND2以外のノードNDからメモリアクセス要求MRQを受信した場合、メモリアクセス要求MRQの発行元にエラー応答ERESを発行する。
次に、図2(D)において、ノードND1のコヒーレンシ制御部9は、持ち出しノードND2のキャッシュメモリ部4に保持されている対象データD1’を無効化させる無効化要求IVRQを持ち出しノードND2に発行する。ノードND1、ND2間の通信経路等で発生した故障は解消されているため、持ち出しノードND2は、無効化要求IVRQを受信する。持ち出しノードND2のメモリアクセス制御部6は、無効化要求IVRQに基づいて、キャッシュメモリ部4に保持された対象データD1’をキャッシュメモリ部4内で無効化する処理をキャッシュメモリ制御部5に実行させる。そして、持ち出しノードND2のメモリアクセス制御部6は、無効化要求IVRQに対応して、対象データD1’を無効化させたことを示す情報を含む応答IVRESをノードND1のコヒーレンシ制御部9に発行する。
以上の動作により、通信経路等で発生した一時的な故障により、追い出し要求MORQが持ち出しノードND2に届かない場合にも、持ち出しノードND2のキャッシュメモリ部4に保持された対象データD1’(またはD1)を無効化することができる。これにより、ノードND1以外に対象データD1を持ち出しているノードNDはなくなるため、情報処理装置IPE1のキャッシュコヒーレンシを維持することができる。この結果、情報処理装置IPE1のRAS(Reliability、Availability、Serviceability)性能の低下を抑止することができる。
なお、図2(B)および図2(C)において、ノードND1のコヒーレンシ制御部9は、追い出し要求MORQを発行後、所定時間が経過したことに基づいて、ノードND1が追い出し要求MORQを再度発行するとする(追い出し要求MORQのリトライ)。この場合、ノードND1のコヒーレンシ制御部9は、リトライに対する応答を待ってからメモリアクセス要求MRQに対する応答(正常応答またはエラー応答)を発行するため、メモリアクセス要求MRQに対する応答が図2に示す動作に比べて遅れてしまう。この結果、情報処理装置IPE1の処理性能は、図2に示す動作に比べて低下する。
以上、図1および図2に示す実施形態では、ノードND間を接続する通信経路等で故障が一時的に発生した場合にも、メモリアクセス要求に対する対象データであって、自ノードND以外のノードNDに持ち出しているデータを無効化することができる。この結果、ノードND間を接続する通信経路等で故障が一時的に発生した場合にも、キャッシュコヒーレンシを維持することができる。また、追い出し要求をリトライすることなく、自ノードND以外のノードNDに持ち出しているデータを無効化できるため、メモリアクセス要求に対する応答が遅れることを抑止することができ、情報処理装置IPE1の処理性能の低下を抑止することができる。
図3は、情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す。図3に示す情報処理装置IPE2は、サーバ等であり、システムバスSBUSを介して互いに接続されたCPU(Central Processing Unit)等の複数のプロセッサ100Aと、各プロセッサ100Aに接続された記憶装置200とを有する。以下では、互いに接続されたプロセッサ100Aおよび記憶装置200は、ノードとも称される。記憶装置200は、主記憶装置、または演算処理装置の外部に接続されるキャッシュメモリ部である。記憶装置200がキャッシュメモリ部の場合、主記憶装置が記憶装置200にさらに接続される。
各プロセッサ100Aは、キャッシュメモリ部10、キャッシュメモリ制御部12、複数のプロセッサコア部14およびシステム制御部16を有する。例えば、各ノードのプロセッサコア部14は、ノード内の記憶装置200に格納されたプログラムを実行することで、演算処理およびメモリアクセス処理を実行する。プロセッサ100Aは、演算処理装置の一例であり、プロセッサコア部14は、演算処理部の一例である。システム制御部16は、メモリアクセス要求に基づいてメモリアクセス処理を実行するとともに、キャッシュコヒーレンシを維持する処理を実行するメモリアクセス制御部の一例である。
各プロセッサ100Aは、自ノードの記憶装置200にアクセスする以外に、システムバスSBUSを介して他ノードの記憶装置200にアクセス可能である。また、情報処理装置IPE2は、例えば、MESI(Modified, Exclusive, Shared, Invalid)プロトコルの手法を用いて、キャッシュコヒーレンシを維持する制御を実行する。すなわち、情報処理装置IPE2は、cc−NUMA(cache-coherent NonUniform Memory Access)アーキテクチャを採用したマルチプロセッサシステムとして機能する。
MESIプロトコルにおいて、”Modified”は、キャッシュメモリ部10に保持されたデータが更新され(書き替えられ)、記憶装置200に記憶されたデータと異なる状態を示す。”Exclusive”は、アクセス対象のデータが複数のプロセッサ100Aのキャッシュメモリ部10のいずれか1つのみに保持され、データが更新されていない状態を示す。”Shared”は、アクセス対象のデータが複数のプロセッサ100Aのキャッシュメモリ部10に保持され、データが更新されていない状態を示す。”Invalid”は、キャッシュメモリ部10に保持されたデータが無効であることを示す。以下では、Modified状態、Exclusive状態、Shared状態およびInvalid状態は、それぞれM状態、E状態、S状態およびI状態とも称される。
キャッシュメモリ部10は、例えば、セットアソシアティブ方式を採用しており、複数のウェイを有する。各ウェイは、タグ領域およびデータ領域を含む複数のエントリ(キャッシュライン)を有する。タグ領域は、例えば、アドレスの上位ビット群とキャッシュステータスとを保持する領域を有する。この場合、エントリは、アドレスの中位ビット群により選択され、キャッシュライン内のデータは、アドレスの下位ビット群により選択される。例えば、各キャッシュラインに保持されるデータのサイズは、記憶装置200に保持されたデータのアクセス単位である128バイトである。キャッシュステータスを保持する領域には、M状態、E状態、S状態またはI状態を示す情報が設定される。
キャッシュメモリ制御部12は、プロセッサコア部14からリードコマンドを受信した場合、リードコマンドに含まれるアドレスに対応するデータがキャッシュメモリ部10に保持されているか否かを判定する。なお、プロセッサコア部14は、データをプロセッサコア部14に読み出すロード命令等の命令を実行した場合、リードコマンドを発行する。データがキャッシュメモリ部10に保持されている場合(キャッシュヒット)、キャッシュメモリ制御部12は、キャッシュメモリ部10からデータを読み出し、読み出したデータをプロセッサコア部14に出力する。
一方、データがキャッシュメモリ部10に保持されていない場合(キャッシュミス)、キャッシュメモリ制御部12は、記憶装置200に対するメモリアクセス要求をシステム制御部16に発行し、システム制御部16からのデータの受信を待つ。データをプロセッサコア部14に読み出すロード命令等に基づきキャッシュメモリ制御部12が発行するメモリアクセス要求は、共有型のメモリアクセス要求とも称される。すなわち、共有型のメモリアクセス要求は、記憶装置200に保持されたデータを参照する場合に発行される。NUMAアーキテクチャを採用したマルチプロセッサシステムでは、メモリアクセス要求を発行してからデータを受信するまでの時間は、同じノード内の記憶装置200にアクセスする場合と、他ノード内の記憶装置200にアクセスする場合とで異なる。メモリアクセス要求を発行してからデータの受信が完了するまでの処理は、トランザクションと称される。
キャッシュメモリ制御部12は、システム制御部16を介して記憶装置200のいずれかから読み出されたデータをキャッシュメモリ部10に格納するとともにプロセッサコア部14に出力し、タグ領域にアドレスの上位ビット群とキャッシュステータスとを格納する。キャッシュメモリ制御部12は、記憶装置200から読み出したデータが他ノードのキャッシュメモリ部10に保持されていない場合、タグ領域のキャッシュステータスをE状態に設定する。キャッシュメモリ制御部12は、記憶装置200から読み出したデータが他ノードのキャッシュメモリ部10に保持されている場合、タグ領域のキャッシュステータスをS状態に設定する。なお、他ノードのキャッシュメモリ部10の状態は、データとともに記憶装置200から読み出されるディレクトリ情報に基づいて、システム制御部16により判定される。すなわち、情報処理装置IPE2は、ディレクトリ方式により、キャッシュコヒーレンシを維持する制御を実行する。ディレクトリ情報については、図4で説明される。
キャッシュメモリ制御部12は、プロセッサコア部14からライトコマンドを受信した場合、ライトコマンドに含まれるアドレスに対応するデータがキャッシュメモリ部10に保持されているか否かを判定する。なお、プロセッサコア部14は、データをプロセッサコア部14から出力するストア命令等の命令を実行した場合、ライトコマンドを発行する。ライトコマンドに含まれるアドレスに対応するデータがキャッシュメモリ部10に保持されている場合(キャッシュヒット)、キャッシュメモリ制御部12は、キャッシュメモリ部10に保持されているデータを上書きする。そして、キャッシュメモリ制御部12は、キャッシュステータスをE状態またはS状態からM状態に変更する。なお、キャッシュステータスをS状態からM状態に変更する場合、キャッシュメモリ制御部12は、他ノードのキャッシュメモリ部10に保持されている対象データを無効化するキャッシュ無効化要求を他ノードに発行する。これにより、一方のノードのキャッシュメモリ部10がS状態でデータを保持し、他方のノードのキャッシュメモリ部10がM状態でデータを保持することが抑止され、キャッシュコヒーレンシが維持される。
一方、データがキャッシュメモリ部10に保持されていない場合(キャッシュミス)、キャッシュメモリ制御部12は、記憶装置200に対するメモリアクセス要求をシステム制御部16に発行し、システム制御部16からのデータの受信を待つ。データをプロセッサコア部14から出力するストア命令等に基づきキャッシュメモリ制御部12が生成するメモリアクセス要求は、排他型のメモリアクセス要求とも称される。すなわち、排他型のメモリアクセス要求は、記憶装置200に保持されたデータを書き替える場合に生成される。
キャッシュメモリ制御部12は、システム制御部16からデータを受信した場合、受信したデータにライトコマンドに含まれるライトデータをマージし、マージしたデータをキャッシュメモリ部10に格納するとともに、タグ領域にアドレスの上位ビットを格納する。また、キャッシュメモリ制御部12は、タグ領域のキャッシュステータスをM状態に設定する。なお、アクセス対象のデータを記憶装置200に保持しているノードにおいて排他型のメモリアクセス要求を受信したシステム制御部16は、対象データを保持する他ノードのキャッシュメモリ部10に、対象データを無効化させるキャッシュ無効化要求を発行する。
キャッシュメモリ制御部12は、キャッシュメモリ部10のエントリに空きがない場合、エントリのいずれかに保持されたデータをキャッシュメモリ部10から追い出し、記憶装置200から読み出すデータを格納するエントリを確保する。データを追い出すエントリは、LRU(Least Recently Used)手法等を用いて決められる。キャッシュメモリ部10上で書き替えられたM状態のデータをキャッシュメモリ部10から追い出す場合、キャッシュメモリ制御部12は、追い出したデータを記憶装置200に書き戻すためのメモリアクセス要求をシステム制御部16に発行する。
さらに、キャッシュメモリ制御部12は、システム制御部16を介して他ノードのプロセッサ100Aからデータ返送要求を受けた場合、データ返送要求に含まれるアドレスに対応するデータがキャッシュメモリ部10に保持されているか否かを判定する。キャッシュメモリ制御部12は、データ返送要求に含まれるアドレスに対応するデータが更新されることなくキャッシュメモリ部10に保持されている場合、キャッシュメモリ部10からデータを追い出す。そして、キャッシュメモリ制御部12は、データを追い出したことを示す情報を含む応答を、データ返送要求を発行したプロセッサ100Aに発行する。データ返送要求は、キャッシュメモリ部10からデータを追い出させる追い出し要求の一例である。
キャッシュメモリ制御部12は、データ返送要求に含まれるアドレスに対応するデータがキャッシュメモリ部10上で更新されている場合、キャッシュメモリ部10からデータを追い出したデータを含む応答を、データ返送要求を発行したプロセッサ100Aに発行する。キャッシュメモリ制御部12は、データ返送要求に含まれるアドレスに対応するデータがキャッシュメモリ部10上に存在しない場合、データが存在しないことを示すエラー情報を含む応答を、データ返送要求を発行したプロセッサ100Aに発行する。
キャッシュメモリ制御部12は、システム制御部16を介して他ノードのプロセッサ100Aからキャッシュ無効化要求を受けた場合、キャッシュ無効化要求に含まれるアドレスに対応するデータがキャッシュメモリ部10に保持されているか否かを判定する。キャッシュメモリ制御部12は、キャッシュ無効化要求に含まれるアドレスに対応するデータがキャッシュメモリ部10に保持されている場合、キャッシュメモリ部10に保持されたデータを無効化する。そして、キャッシュメモリ制御部12は、データを無効化したことを示す情報を含む応答を、キャッシュ無効化要求を発行したプロセッサ100Aに発行する。キャッシュ無効化要求は、キャッシュメモリ部10に保持されているデータを無効化させる無効化要求の一例である。
キャッシュメモリ制御部12は、キャッシュ無効化要求に含まれるアドレスに対応するデータがキャッシュメモリ部10上に存在しない場合、データが存在しないことを示すエラー情報を含む応答を、キャッシュ無効化要求を発行したプロセッサ100Aに発行する。以下では、データ返送要求およびキャッシュ無効化要求は、コヒーレンシ制御要求とも称される。
システム制御部16は、プロセッサインタフェース18、応答調停部20、エントリ決定部22、制御要求発行部24、複数の要求処理エントリ26およびメモリ制御部28を有する。
プロセッサインタフェース18は、キャッシュメモリ制御部12およびシステムバスSBUSに接続され、各ノードのキャッシュメモリ制御部12との間での通信を制御する。プロセッサインタフェース18は、自ノードのキャッシュメモリ制御部12および他ノードのプロセッサ100Aから受信するメモリアクセス要求を調停により選択し、選択した順にメモリアクセス要求をエントリ決定部22に出力する。
なお、プロセッサインタフェース18は、受信したメモリアクセス要求に含まれるアドレスが、他ノードの記憶装置200に割り当てられている場合、システムバスSBUSを介して他ノードにメモリアクセス要求を発行する。プロセッサインタフェース18は、メモリアクセス要求に基づいて応答調停部20から出力されるデータおよび応答を受信し、受信したデータおよび応答をメモリアクセス要求の発行元に発行する。
また、プロセッサインタフェース18は、自ノードのキャッシュメモリ部10に保持しているデータに対応する排他型のメモリアクセス要求を他ノードのプロセッサ100Aから受信した場合、自ノードのキャッシュメモリ制御部12に、データ返送要求を発行する。自ノードのキャッシュメモリ部10がメモリアクセス要求に対応するデータを保持しているか否かは、ディレクトリ情報により判定される。プロセッサインタフェース18は、自ノードのキャッシュメモリ制御部12から更新されたデータを受信した場合、メモリアクセス要求の発行元のプロセッサ100Aに更新されたデータを出力し、記憶装置200に更新されたデータを書き込む。
プロセッサインタフェース18は、システムバスSBUSを介して他ノードのプロセッサ100Aからコヒーレンシ制御要求(データ返送要求またはキャッシュ無効化要求)を受信した場合、受信したコヒーレンシ制御要求をキャッシュメモリ制御部12に発行する。プロセッサインタフェース18は、コヒーレンシ制御要求に対応してキャッシュメモリ制御部12から発行される応答をコヒーレンシ制御要求の発行元のプロセッサ100Aに発行する。
さらに、プロセッサインタフェース18は、制御要求発行部24から出力されるコヒーレンシ制御要求を受信した場合、受信したコヒーレンシ制御要求を、システムバスSBUSを介して他ノードのプロセッサ100Aに発行する。プロセッサインタフェース18は、システムバスSBUSを介して他ノードのプロセッサ100Aからコヒーレンシ制御要求に対する応答を受信した場合、受信した応答をコヒーレンシ制御要求の発行元の要求処理エントリ26に出力する。
応答調停部20は、要求処理エントリ26のステートマシン32から出力されるメモリアクセス要求に対する応答およびデータを受信し、受信した応答を調停し、調停した順に、応答およびデータをプロセッサインタフェース18に出力する。
エントリ決定部22は、プロセッサインタフェース18から受信したメモリアクセス要求を処理するために使用する要求処理エントリ26を、LRUまたはラウンドロビン等の手法を用いて決定する。エントリ決定部22は、使用を決定した要求処理エントリ26にメモリアクセス要求を転送する。
制御要求発行部24は、要求処理エントリ26から出力されるコヒーレンシ制御要求を保持するコヒーレンシ制御要求キューCRQUEを有する。制御要求発行部24は、コヒーレンシ制御要求キューCRQUEに保持されたコヒーレンシ制御要求を調停することにより選択する。そして、制御要求発行部24は、選択したコヒーレンシ制御要求を、プロセッサインタフェース18およびシステムバスSBUSを介して、宛先のプロセッサ100Aに発行する。
要求処理エントリ26は、アクセス要求バッファ30、ステートマシン32、データバッファ34、ディレクトリバッファ36およびタイマ38を有する。システム制御部16が有する要求処理エントリ26の数は、8個、16個または32個等である。ステートマシン32は、データ返送要求およびキャッシュ無効化要求を発行する制御要求発行部の一例である。
アクセス要求バッファ30は、エントリ決定部22から受信したメモリアクセス要求に含まれるアドレスおよび要求元ID(Identification)等の情報を保持し、保持している情報をステートマシン32に出力する。
ディレクトリバッファ36は、ステートマシン32から記憶装置200に発行されるリード要求に基づいて記憶装置200から読み出されるディレクトリ情報を保持する。
データバッファ34は、ステートマシン32から記憶装置200に発行されるリード要求に基づいて記憶装置200から読み出されるデータを保持する。また、データバッファ34は、ステートマシン32が他ノードのプロセッサ100Aに発行するデータ返送要求に対する応答に含まれるデータ(更新されたデータ)を保持する。
タイマ38は、データ返送要求が他ノードに発行されてから、データ返送要求に対する応答を他ノードから受信するまでの時間を計測する。タイマ38は、計測している時間が予め設定された時間を越えた場合、タイムアウトの発生を示すエラー情報をステートマシン32に通知する。
ステートマシン32は、持ち出し先検出部40とプロセッサ番号記憶部42とを有する。なお、持ち出し先検出部40とプロセッサ番号記憶部42とは、要求処理エントリ26内であってステートマシン32の外部に配置されてもよい。持ち出し先検出部40は、記憶装置200からデータとともに出力されるディレクトリ情報を解析し、記憶装置200から出力されたデータが他ノードのキャッシュメモリ部10に格納されているか否かを検出する。持ち出し先検出部40は、記憶装置200から読み出した対象データを持ち出している他のノードNDである持ち出しノードNDをディレクトリ情報に基づいて検出する検出部の一例である。
記憶装置200から出力されたデータが他ノードのキャッシュメモリ部10に持ち出されている場合、持ち出し先検出部40は、データを持ち出しているプロセッサ100Aをデータ返送要求の宛先に決定する。そして、持ち出し先検出部40は、データ返送要求の宛先に決定されたプロセッサ100Aを識別するプロセッサ番号をプロセッサ番号記憶部42に格納する。なお、プロセッサ番号のプロセッサ番号記憶部42への格納は、ステートマシン32により実行されてもよい。プロセッサ番号記憶部42は、データを持ち出しているプロセッサ100Aを識別するプロセッサ番号を記憶する識別情報記憶部の一例である。プロセッサ番号は、データを持ち出しているプロセッサ100Aを識別する識別情報の一例である。
ステートマシン32は、記憶装置200に対するメモリアクセス要求(リード要求またはライト要求)の発行と、他ノードのプロセッサ100Aに対するコヒーレンシ制御要求の発行と、発行した要求に対する応答とを制御する。例えば、ステートマシン32は、アクセス要求バッファ30から受信するメモリアクセス要求に基づいて、リード要求またはライト要求を、メモリ制御部28を介して記憶装置200に出力する。
ステートマシン32は、持ち出し先検出部40によりデータが他ノードのプロセッサ100Aに持ち出されていないと検出された場合、記憶装置200から出力されたデータとともに応答を応答調停部20に出力し、要求処理エントリ26を開放する。一方、ステートマシン32は、持ち出し先検出部40によりデータが他ノードのプロセッサ100Aに持ち出されていると検出された場合、データを持ち出しているプロセッサ100Aにデータ返送要求を発行し、タイマ38を起動する。
ステートマシン32は、データ返送要求に対する応答が、他ノードのプロセッサ100Aが更新したデータを含む場合、応答に含まれる更新されたデータを応答調停部20に出力し、ディレクトリバッファ36に保持されたディレクトリ情報を更新する。そして、ステートマシン32は、更新したディレクトリ情報を更新されたデータとともに記憶装置200に書き込むためにライト要求をメモリ制御部28に出力し、要求処理エントリ26を開放する。
ステートマシン32は、データ返送要求に対する応答を受信する前に、タイマ38が所定時間の計測を完了してタイムアウトを検出した場合、エラーの発生を示すエラー応答を応答調停部20に出力する。そして、ステートマシン32は、ディレクトリバッファ36に保持されたディレクトリ情報にエラー情報を書き込み、エラー情報を書き込んだディレクトリ情報を記憶装置200に書き込むためにライト要求をメモリ制御部28に出力する。なお、データ返送要求の発行に基づいて、タイマ38が計測する所定時間は、例えば、数ミリ秒から数十ミリ秒である。
さらに、ステートマシン32は、タイムアウトが発生した場合、プロセッサ番号記憶部42が記憶するプロセッサ番号により識別されるプロセッサ100Aに、制御要求発行部24を介してキャッシュ無効化要求を発行する。ステートマシン32は、キャッシュ無効化要求に対する応答を処理した後、要求処理エントリ26を開放する。
メモリ制御部28は、要求処理エントリ26から出力されるリード要求またはライト要求を保持するメモリ要求キューMRQUEを有する。メモリ制御部28は、メモリ要求キューMRQUEに保持されたリード要求またはライト要求を調停することにより選択し、選択したリード要求またはライト要求を記憶装置200に順に出力する。
記憶装置200は、複数のSDRAM(Synchronous Dynamic Random Access Memory)等を含み、プロセッサコア部14で処理するデータとディレクトリ情報とを保持する記憶領域を有する。記憶装置200は、プロセッサコア部14が実行するプログラムを保持する記憶領域を有してもよい。
図4は、図3に示す記憶装置200およびキャッシュメモリ部10に保持されるデータの一例を示す。図4に示す例では、プロセッサ100Aおよび記憶装置200を有する2つのノードND1、ND2がシステムバスSBUSを介して互いに接続されている。
ノードND1の記憶装置200は、アドレスA0、A1、A2、A3、A4、...が割り当てられ、ノードND2の記憶装置200は、アドレスB0、B1、B2、B3、B4、...が割り当てられる。各記憶装置200は、アドレス毎にディレクトリ情報を記憶するディレクトリ領域と、データを記憶するデータ領域とを有する。例えば、各データ領域は、128バイトであり、キャッシュメモリ部10のキャッシュラインのサイズと等しいが、図4では、データは4ビットで表す。
ディレクトリ領域は、ディレクトリ情報を記憶する。各ディレクトリ領域は、キャッシュメモリ部10へのデータの持ち出し情報を記憶するESI領域と、データの持ち出し先のプロセッサ100Aを識別するプロセッサ番号を記憶するCPU領域と、エラー情報を記憶するERR領域とを有する。ESI領域において、符号I(Invalid)は、データが自ノードのキャッシュメモリ部10のみに持ち出されていることを示し、符号E(Exclusive)は、データが他ノードのいずれかのキャッシュメモリ部10のみに持ち出されていることを示す。符号S(Shared)は、データが複数のノードのキャッシュメモリ部10に持ち出されていることを示す。
ノードND1のキャッシュメモリ部10のディレクトリ領域から、次のことが分かる。アドレスA0のデータ”0000”およびアドレスA1のデータ”0001”は、ノードND1のキャッシュメモリ部10のみに持ち出されている。アドレスA2のデータ”1111”およびアドレスA3のデータ”1101”は、ノードND2のキャッシュメモリ部10のみに持ち出されている。アドレスA4のデータ”1010”は、ノードND1、ND2のキャッシュメモリ部10に持ち出されている。また、ノードND2のキャッシュメモリ部10のディレクトリ領域から、アドレスB0のデータ”0111”は、ノードND1、ND2のキャッシュメモリ部10に持ち出されていることが分かる。
各キャッシュメモリ部10は、128バイトのデータを記憶するデータ領域と、データ領域に対応するタグ領域とを含む複数のエントリを有する。タグ領域は、アドレスを記憶するAD領域と、キャッシュステータスを記憶するMESI領域とを有する。なお、セットアソシアティブ方式のキャッシュメモリ部10では、AD領域には、アドレスの上位ビット群が格納されるが、図4では、説明を分かりやすくするために、AD領域に記憶装置200のアドレスが格納されるとする。MESI領域には、M状態、E状態、S状態またはI状態を示す情報が格納される。
ノードND1のキャッシュメモリ部10のタグ領域から、次のことが分かる。アドレスA0のデータ”0000”は、ノードND1のキャッシュメモリ部10のみが保持する(E状態)。アドレスA1のデータ”0110”は、ノードND1の記憶装置200に記憶されているデータに対して更新されており、ノードND1のキャッシュメモリ部10のみが保持する(M状態)。アドレスB0のデータ”0111”およびアドレスA4のデータ”1010”は、他ノードのキャッシュメモリ部10と共有されている(S状態)。
ノードND2のキャッシュメモリ部10のタグ領域から、次のことが分かる。アドレスA2のデータ”1111”は、ノードND2のキャッシュメモリ部10のみが保持する(E状態)。アドレスA3のデータ”0101”は、ノードND1の記憶装置200に記憶されているデータに対して更新されており、ノードND2のキャッシュメモリ部10のみが保持する(M状態)。アドレスB0のデータ”0111”およびアドレスA4のデータ”1010”は、他ノードのキャッシュメモリ部10と共有されている(S状態)。
各プロセッサ100Aのシステム制御部16は、メモリアクセス要求に基づいてデータとともに記憶装置200から読み出されるディレクトリ情報が”S”または”E”を含む場合、データが他ノードに持ち出されていると判定する。例えば、ノードND1のプロセッサ100Aは、アドレスA2に対する共有型または排他型のメモリアクセス要求に基づいて記憶装置200から読み出されるディレクトリ情報に基づいて、データがノードND2のプロセッサ100Aに持ち出されていると判定する。そして、ノードND1のプロセッサ100Aは、ノードND2のプロセッサ100Aに、アドレスA2に対するデータ返送要求を発行する。アドレス返送要求を受けたノードND2のプロセッサ100Aは、データを更新していないため(E状態)、キャッシュメモリ部10からデータを追い出し、データを追い出したことを示す情報を含む応答をノードND1のプロセッサ100Aに発行する。
なお、アドレスA2に対する共有型のメモリアクセス要求が発行された場合、ノードND2のプロセッサ100Aは、データを追い出さずに、キャッシュステータスをS状態に変更し、データを共有することを示す情報を含む応答をノードND1に発行してもよい。この場合、ノードND1のプロセッサ100Aは、記憶装置200のアドレスA2のESI領域(ディレクトリ情報)をE状態からS状態に書き替える。
また、ノードND1のプロセッサ100Aは、アドレスA3に対する共有型または排他型のメモリアクセス要求に基づいて記憶装置200から読み出されるディレクトリ情報に基づいて、データがノードND2のプロセッサ100Aに持ち出されていると判定する。そして、ノードND1のプロセッサ100Aは、ノードND2のプロセッサ100Aに、アドレスA3に対するデータ返送要求を発行する。アドレス返送要求を受けたノードND2のプロセッサ100Aは、キャッシュメモリ部10内でデータを更新しているため(M状態)、キャッシュメモリ部10からデータを追い出し、追い出したデータを含む応答をノードND1のプロセッサ100Aに発行する。
さらに、ノードND1のプロセッサ100Aは、アドレスA4に対する排他型のメモリアクセス要求を受けた場合、ディレクトリ情報に基づいて、データがノードND2のプロセッサ100Aに持ち出されていると判定する。そして、ノードND1のプロセッサ100Aは、ノードND2のプロセッサ100Aに、アドレスA4に対するデータ返送要求を発行する。アドレス返送要求を受けたノードND2のプロセッサ100Aはデータを更新していないため(S状態)、キャッシュメモリ部10からデータを追い出し、データを追い出したことを示す情報を含む応答をノードND1のプロセッサ100Aに発行する。なお、ノードND1のプロセッサ100Aは、アドレスA4に対する共有型のメモリアクセス要求を受けた場合、アドレスA4に対するデータ返送要求の発行を抑止する。すなわち、共有型のメモリアクセス要求に対するディレクトリ情報がS状態を示す場合、データは他ノードに持ち出されていないと判定される。
一方、ノードND1のプロセッサ100Aは、アドレスA1に対する排他型または共有型のメモリアクセス要求をノードND2のプロセッサ100Aから受けた場合、ディレクトリ情報に基づいて、データが自ノードのキャッシュメモリ部10に持ち出されていると判定する。そして、ノードND1のプロセッサ100Aは、自ノードのキャッシュメモリ制御部12に、アドレスA1に対するデータ返送要求を発行する。アドレス返送要求を受けたキャッシュメモリ制御部12は、データを更新しているため(M状態)、キャッシュメモリ部10からデータを追い出し、追い出したデータを含む応答をノードND2のプロセッサ100Aに発行する。そして、ノードND1のプロセッサ100Aは、ノードND1のキャッシュメモリ部10から返送されたデータを記憶装置200に書き込む。また、ノードND1のプロセッサ100Aは、記憶装置200のアドレスA1のESI領域(ディレクトリ情報)をI状態からE状態に書き替え、CPU領域に”2”を格納する。
ノードND1のプロセッサ100Aは、アドレスA0に対する共有型のメモリアクセス要求をノードND2のプロセッサ100Aから受けた場合、E状態のデータを追い出すことなく応答として発行する。そして、ノードND1のプロセッサ100Aは、タグ領域のキャッシュステータスをE状態からS状態に変更する。この場合、ノードND1のプロセッサ100Aは、データを共有することを示す情報を含む応答をノードND2のプロセッサ100Aに発行する。また、ノードND1のプロセッサ100Aは、記憶装置200のアドレスA0のESI領域(ディレクトリ情報)をI状態からS状態に書き替え、CPU領域に”1、2”を格納する。
ノードND2のプロセッサ100Aは、アドレスB0に対する排他型のメモリアクセス要求を受けた場合、ディレクトリ情報に基づいて、データがノードND1のプロセッサ100Aに持ち出されていると判定する。そして、ノードND2のプロセッサ100Aは、ノードND1のプロセッサ100Aに、アドレスB0に対するデータ返送要求を発行する。アドレス変換要求を受けたノードND1のプロセッサ100Aは、データを更新していないため(S状態)、キャッシュメモリ部10からデータを追い出し、データを追い出したことを示す情報を含む応答をノードND2のプロセッサ100Aに発行する。なお、データが更新されている場合、追い出したデータをノードND2のプロセッサ100Aに応答として発行する。
図5は、図3に示すシステム制御部16の動作の一例を示す。すなわち、図5は、情報処理装置の制御方法の一例を示す。図5に示す処理は、キャッシュメモリ制御部12がキャッシュミスを判定し、システム制御部16に共有型または排他型のメモリアクセス要求を出力したことに基づいて開始される。なお、システム制御部16は、メモリアクセス要求を、自ノードのキャッシュメモリ制御部12から受信し、あるいは、他ノードのプロセッサ100Aのキャッシュメモリ制御部12から受信する。
まず、ステップS10において、プロセッサインタフェース18は、受信したメモリアクセス要求を調停により選択し、選択したメモリアクセス要求をエントリ決定部22に出力する。
次に、ステップS20において、エントリ決定部22は、メモリアクセス要求を処理する要求処理エントリ26を、空いている要求処理エントリ26の中から選択し、選択した要求処理エントリ26のアクセス要求バッファ30にメモリアクセス要求を転送する。
次に、ステップS30において、ステートマシン32は、アクセス要求バッファ30に保持されたメモリアクセス要求に基づいて、メモリ制御部28を介して記憶装置200にリード要求を発行する。
次に、ステップS40において、ステートマシン32は、リード要求に基づいて記憶装置200から読み出されるデータおよびディレクトリ情報を受信する。ステートマシン32は、受信したデータをデータバッファ34に格納し、受信したディレクトリ情報をディレクトリバッファ36に格納する。
次に、ステップS50において、ステートマシン32は、ディレクトリバッファ36に格納したディレクトリ情報に基づいて、記憶装置200から読み出したデータが他ノードに持ち出されているか否かを判定する。データが他ノードに持ち出されている場合、処理はステップS60に移行され、データが他ノードに持ち出されていない場合、処理はステップS110に移行される。
ステップS60において、ステートマシン32は、データを持ち出している他ノードのプロセッサ100Aにデータ返送要求を発行する。次に、ステップS70において、ステートマシン32は、データ返送要求を発行したプロセッサ100Aを識別するプロセッサ番号をプロセッサ番号記憶部42に格納する。なお、ステップS10で排他型のメモリアクセス要求を受信し、ステップS40で読み出したディレクトリ情報がS状態の場合、他ノードのプロセッサ100Aは、データを更新していない。このため、ステートマシン32は、データを持ち出している他ノードのプロセッサ100Aに、データ返送要求の代わりにキャッシュ無効化要求を発行してもよい。
次に、ステップS80において、ステートマシン32は、タイマ38によるタイムアウトが発生する前に、データ返送要求に対する応答を受信した場合、処理をステップS90に移行する。ステートマシン32は、データ返送要求に対する応答を受信する前にタイマ38によるタイムアウトが発生した場合、処理をステップS100に移行する。例えば、タイムアウトは、ノード間の通信経路等の一時的な故障により、データ返送要求が通信経路の途中で失われた場合に発生する。データ返送要求が届かなかったプロセッサ100Aは、データ返送要求の対象データを返送することなく参照し続けるおそれがあり、対象データを更新するおそれがある。対象データが更新された場合、情報処理装置IPE2のキャッシュコヒーレンシは維持されなくなる。
ステップS90において、ステートマシン32は、データ返送要求に対する応答に含まれるデータをデータバッファ34に格納し、処理をステップS110に移行する。返送されたデータは、データを持ち出した他ノードのプロセッサ100Aにより更新されたデータ(書き替えられたデータ)である。なお、データを持ち出した他ノードのプロセッサ100Aがデータを更新していない場合、ステップS90の処理は省略されてもよい。
ステップS100において、ステートマシン32は、ディレクトリバッファ36に保持されているディレクトリ情報にタイムアウトが発生したことを示すエラー情報を書き込み、処理をステップS110に移行する。
ステップS110において、ステートマシン32は、データバッファ34が保持しているデータとともに応答を応答調停部20に出力する。応答調停部20は、ステートマシン32から受信したデータを含む応答を、メモリアクセス要求の要求元に発行する。なお、ステートマシン32は、データを持ち出したプロセッサ100Aによりデータが更新されている場合、更新されたデータを、応答調停部20を介してメモリアクセス要求の要求元に発行する。ステートマシン32は、タイムアウト等のエラーが発生した場合、エラーの発生を示すエラー応答を、応答調停部20を介してメモリアクセス要求の要求元に発行する。
ステートマシン32は、タイムアウトが発生した場合にも、データ返送要求をリトライすることなく、エラー応答をメモリアクセス要求の要求元に発行する。これにより、メモリアクセス要求の要求元のプロセッサ100Aは、エラー応答に関係する処理以外の処理を実行することができる。これに対して、メモリアクセス要求をリトライする場合、ステートマシン32は、リトライ用のメモリアクセス要求の応答を待った後、応答をメモリアクセス要求の発行元に発行する。このため、メモリアクセス要求の発行元のプロセッサ100Aの処理効率は、リトライしない場合に比べて低下する。
次に、ステップS120において、ステートマシン32は、データを持ち出したプロセッサ100Aによりデータが更新されている場合またはディレクトリ情報を更新した場合、記憶装置200にライト要求を発行する。そして、ステートマシン32は、データおよびディレクトリ情報を記憶装置200に書き込む。ステップS80でタイムアウトが発生した場合、タイムアウトの発生を示すエラー情報を含むディレクトリ情報が記憶装置200に書き込まれる。
次に、ステップS130において、ステートマシン32は、トランザクションの後処理を実行する。トランザクションの後処理は、データ返送要求に対する応答が所定時間内に受信されなかった場合に、データの持ち出し先のプロセッサ100Aのキャッシュメモリ部10が保持しているメモリアクセス要求の対象データを無効にするために実行される。トランザクションの後処理については、図6で説明される。次に、ステップS200において、ステートマシン32は、ステートマシン32が含まれる要求処理エントリ26を開放し、処理を終了する。
図6は、図5に示すステップS130の処理の一例を示す。まず、ステップS131において、ステートマシン32は、ディレクトリバッファ36に保持されているディレクトリ情報が、タイムアウトの発生を示すエラー情報を含むか否かを判定する。ディレクトリ情報がタイムアウトの発生を示すエラー情報を含む場合、処理はステップS132に移行され、ディレクトリ情報がタイムアウトの発生を示すエラー情報を含まない場合、処理は終了する。
ステップS132において、ステートマシン32は、プロセッサ番号記憶部42からプロセッサ番号を読み出す。プロセッサ番号記憶部42に記憶されたプロセッサ番号は、図5に示すステップS60で発行したデータ返送要求の宛先のプロセッサ100Aを示し、データ返送要求に対する応答を受信することなくタイムアウトが発生したエラー対象のプロセッサ100Aを示す。
次に、ステップS133において、ステートマシン32は、データ返送要求の宛先のプロセッサ100Aにキャッシュ無効化要求を発行する。ここで、ノード間の通信経路等の一時的な故障により、メモリアクセス要求が通信経路の途中で失われた場合、一時的な故障が回復していればキャッシュ無効化要求は、データ返送要求の宛先のプロセッサ100Aに届く。データ返送要求の宛先のプロセッサ100Aは、キャッシュ無効化要求の受信に基づいて、対象データをキャッシュメモリ部10から追い出し、対象データを追い出したことを示す情報を含む応答をキャッシュ無効化要求の発行元のプロセッサ100Aに発行する。
次に、ステップS134において、ステートマシン32は、データ返送要求の発行先のプロセッサ100Aからキャッシュ無効化要求に対する応答を受信し、処理を終了する。すなわち、データ返送要求に対する応答がない場合に、キャッシュ無効化要求を発行することで、情報処理装置IPE2のキャッシュコヒーレンシを維持することができる。なお、ステートマシン32は、キャッシュ無効化要求に対する正常な応答を受信しない場合、プロセッサ100Aを管理するために情報処理装置IPE2に搭載される管理装置等にエラーの発生を通知する。
以上、図3から図6に示す実施形態においても、図1に示す実施形態と同様に、ノードND間を接続する通信経路等で故障が一時的に発生した場合にも、キャッシュコヒーレンシを維持することができる。また、要求処理エントリ26は、データ返送要求に対するタイムアウトが発生した場合に、データ返送要求をリトライすることなく、エラー応答をメモリアクセス要求の要求元に発行する。これにより、メモリアクセス要求の要求元のプロセッサ100Aは、エラー応答に関係する処理以外の処理を実行することができ、データ返送要求をリトライすることで応答の受信が遅れる場合に比べて、処理性能を向上することができる。
さらに、図3から図6に示す実施形態では、データ返送要求の宛先のプロセッサ100Aを識別するプロセッサ番号を記憶するプロセッサ番号記憶部42を有する。これにより、データ返送要求を発行した後、タイムアウトの発生後に、キャッシュ無効化要求を発行する場合にも、プロセッサ番号記憶部42を参照することで、データ返送要求の宛先のプロセッサ100Aにキャッシュ無効化要求を発行することができる。
この結果、情報処理装置IPE2のキャッシュコヒーレンシを維持しつつ、情報処理装置IPE2の処理性能およびRAS性能の低下を抑止することができる。
図7は、情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す。図3に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図7に示す情報処理装置IPE3は、サーバ等であり、図3に示す情報処理装置IPE2のプロセッサ100Aの代わりにプロセッサ100Bを有する。プロセッサ100Bは、図3に示すシステム制御部16の代わりにシステム制御部16Bを有する。システム制御部16Bは、図3に示す複数の要求処理エントリ26の代わりに複数の要求処理エントリ26Bを有する。情報処理装置IPE3のその他の構成は、図3に示す情報処理装置IPE2の構成と同様である。
要求処理エントリ26Bは、アクセス要求バッファ30、ステートマシン32B、データバッファ34、ディレクトリバッファ36、タイマ38およびエラー検出部44を有する。ステートマシン32Bは、図3に示すステートマシン32にエラー種記憶部46を追加している。なお、持ち出し先検出部40、プロセッサ番号記憶部42およびエラー種記憶部46は、要求処理エントリ26B内であって、ステートマシン32Bの外部に配置されてもよい。
エラー検出部44は、記憶装置200から読み出したディレクトリ情報と、データ返送要求に対する応答とに基づいて、ディレクトリ情報が矛盾していることを検出した場合、ディレクトリ矛盾エラーを示すエラー情報をステートマシン32Bに通知する。
例えば、記憶装置200から読み出したディレクトリ情報に誤りがあり、ディレクトリ情報に示されるデータの持ち出し先のプロセッサ100Bが、実際にはデータを持ち出していない場合がある。この場合、データ返送要求を受信したプロセッサ100Bは、対象データをキャッシュメモリ部10に保持してないことを示すエラー応答(ディレクトリ矛盾)を発行する。記憶装置200に保持されているディレクトリ情報が誤っている可能性がある場合、ステートマシン32Bは、ノード外の全てのプロセッサ100Bにキャッシュ無効化要求を発行し、対象データをキャッシュメモリ部10から追い出すことが望ましい。記憶装置200に保持されているディレクトリ情報に誤りがあり、データの持ち出し先の判別が困難な場合、ノード外へのデータの持ち出しを一旦解除することで、キャッシュコヒーレンシが維持されなくなることを抑止することができる。
ステートマシン32Bは、データ返送要求に対する応答を受信する前にタイムアウトが発生した場合、エラー種記憶部46にタイムアウトの発生を示すエラー情報を格納する。また、ステートマシン32Bは、エラー検出部44によりディレクトリ矛盾エラーが検出された場合、エラー種記憶部46にディレクトリ矛盾エラーの発生を示すエラー情報を格納する。
図8は、図7に示すシステム制御部の動作の一例を示す。図5と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。ステップS10、S20、S30、S40の処理は、図5に示すステップS10、S20、S30、S40の処理と同じである。
ステップS40の処理の後、ステップS42において、ステートマシン32Bは、エラー種記憶部46に格納された情報に基づいて、ディレクトリ矛盾エラーが発生したか否かを判定する。ディレクトリ矛盾エラーが発生した場合、処理はステップS98に移行され、ディレクトリ矛盾エラーが発生していない場合、処理は、ステップS50に移行される。
ステップS50、S60、S70、S90、S100、S110、S120、S200の処理は、図5に示すステップS50、S60、S70、S90、S100、S110、S120、S200の処理と同一または同様である。
記憶装置200から読み出されたデータが他ノードのプロセッサ100Bに持ち出されている場合、ステートマシン32Bは、ステップS70の後にステップS82を実行する。ステップS82において、ステートマシン32Bは、タイマ38によるタイムアウトまたはディレクトリ矛盾エラーが発生した場合、処理をステップS98に移行する。ステートマシン32Bは、タイマ38によるタイムアウトおよびディレクトリ矛盾エラーのいずれも発生していない場合、処理をステップS90に移行する。
ステップS98において、ステートマシン32Bは、タイムアウトの発生を示す情報またはディレクトリ矛盾エラーの発生を示す情報をエラー種記憶部46に格納し、処理をステップS100に移行する。ステップS100では、ステートマシン32は、ディレクトリバッファ36に保持されているディレクトリ情報にタイムアウトの発生またはディレクトリ矛盾エラーの発生を示すエラー情報を書き込み、処理をステップS110に移行する。
この後、ステートマシン32Bは、図5と同様にステップS110、S120の処理を実行する。ステップS120の後、ステップS140において、ステートマシン32は、トランザクションの後処理を実行する。ステップS140の処理の例は、図9に示される。
図9は、図8に示すステップS140の処理の一例を示す。図6と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。ステップS144、S145、S146の処理は、図5に示すステップS131、S132、S133の処理と同一または同様である。
まず、ステップS141において、ステートマシン32Bは、ディレクトリバッファ36に保持されているディレクトリ情報が、タイムアウトの発生を示すエラー情報を含むか否かを判定する。ディレクトリ情報がタイムアウトの発生を示すエラー情報を含む場合、処理はステップS142に移行され、ディレクトリ情報がタイムアウトの発生を示すエラー情報を含まない場合、処理は終了する。
ステップS142において、ステートマシン32Bは、エラー種記憶部46からエラー情報を読み出す。次に、ステップS143において、ステートマシン32Bは、エラー情報がディレクトリ矛盾エラーの発生を示す場合、処理をステップS147に移行し、エラー情報がタイムアウトの発生を示す場合、処理をステップS144に移行する。
ステップS147において、ステートマシン32Bは、全てのプロセッサ100Bにキャッシュ無効化要求を発行する。次に、ステップS148において、ステートマシン32Bは、データ返送要求の発行先の全てのプロセッサ100Bからキャッシュ無効化要求に対する応答を受信し、処理を終了する。すなわち、ディレクトリ矛盾エラーが発生した場合に、全てのプロセッサ100Bに対象データを削除させることで、情報処理装置IPE3のキャッシュコヒーレンシを維持することができる。なお、ステートマシン32Bは、キャッシュ無効化要求に対する正常な応答を受信しない場合、プロセッサ100Bを管理するために情報処理装置IPE3に搭載される管理装置等にエラーの発生を通知する。
以上、図7から図9に示す実施形態においても、図1から図6に示す実施形態と同様にノードND間を接続する通信経路等で故障が一時的に発生した場合にも、キャッシュコヒーレンシを維持することができる。また、データ返送要求をリトライせずにキャッシュ無効化要求を他ノードNDに発行するため、メモリアクセス要求に対する応答が遅れることを抑止することができ、情報処理装置IPE3の処理性能の低下を抑止することができる。プロセッサ番号記憶部42を参照することで、データ返送要求の宛先のプロセッサ100Dを検出し、検出したプロセッサ100Dにキャッシュ無効化要求を発行することができる。
さらに、図7から図9に示す実施形態では、ディレクトリ矛盾エラーが発生した場合に、全てのプロセッサ100Bに対象データを削除させることで、情報処理装置IPE3のキャッシュコヒーレンシを維持することができる。この結果、情報処理装置IPE3のキャッシュコヒーレンシを維持しつつ、情報処理装置IPE3の処理性能およびRAS性能の低下を抑止することができる。
図10は、情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す。図3に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図10に示す情報処理装置IPE4は、サーバ等であり、図3に示す情報処理装置IPE2のプロセッサ100Aの代わりにプロセッサ100Cを有する。プロセッサ100Cは、図3に示すキャッシュメモリ制御部12およびシステム制御部16の代わりにキャッシュメモリ制御部12Cおよびシステム制御部16Cを有する。システム制御部16Cは、図3に示すプロセッサインタフェース18および複数の要求処理エントリ26の代わりにプロセッサインタフェース18Cおよび複数の要求処理エントリ26Cを有する。また、システム制御部16Cは、図3に示すシステム制御部16に対してロスト予防検出部48を追加している。情報処理装置IPE4のその他の構成は、図3に示す情報処理装置IPE2の構成と同様である。
要求処理エントリ26Cは、アクセス要求バッファ30、ステートマシン32C、データバッファ34、ディレクトリバッファ36およびタイマ38を有する。ステートマシン32Cは、図3に示すプロセッサ番号記憶部42の代わりにプロセッサ番号記憶部43を有し、図3に示すステートマシン32に予防フラグ50を追加している。なお、持ち出し先検出部40、プロセッサ番号記憶部43および予防フラグ50は、要求処理エントリ26C内であって、ステートマシン32Cの外部に配置されてもよい。
各プロセッサ100Cのキャッシュメモリ制御部12Cは、記憶装置200から読み出してキャッシュメモリ部10に格納するデータが何らかの原因により失われた場合、情報処理装置IPE4にとって致命的なエラーとなるかを、メモリアクセス要求毎に判断する。そして、致命的なエラーになる場合、データが失われることを予防するロスト予防情報を付加したメモリアクセス要求をシステム制御部16Cに発行する。なお、ロスト予防情報をメモリアクセス要求に付加するか否かは、プロセッサコア部14が実行するプログラムにより判断させてもよい。
プロセッサインタフェース18Cは、図3に示すプロセッサインタフェース18の機能に加えて、調停により選択したメモリアクセス要求をロスト予防検出部48に転送する機能を有する。
ロスト予防検出部48は、プロセッサインタフェース18から転送されるメモリアクセス要求をデコードし、メモリアクセス要求に含まれるロスト予防情報を検出する。ロスト予防検出部48は、対象データが失われることを予防するロスト予防情報をメモリアクセス要求が含むかを検出する第1の検出部の一例である。ロスト予防検出部48は、メモリアクセス要求がロスト予防情報を含む場合、エントリ決定部22が決定したメモリアクセス要求を処理するために使用する要求処理エントリ26に含まれるステートマシン32Cにロスト予防情報を出力する。例えば、メモリアクセス要求は、パケットとしてキャッシュメモリ制御部12Cにより生成され、メモリアクセス要求の宛先のプロセッサ100Cのプロセッサインタフェース18に転送される。メモリアクセス要求パケットの例は、図11に示される。なお、ロスト予防検出部48の機能は、エントリ決定部22に含まれていてもよい。
ステートマシン32Cは、メモリアクセス要求の受信とともに、ロスト予防検出部48からロスト予防情報を受信した場合、予防フラグ50をセットする。すなわち、ステートマシン32Cは、ロスト予防情報を付加したメモリアクセス要求を受信した場合、予防フラグ50をセットする。ステートマシン32Cは、予防フラグ50をセットする場合、メモリアクセス要求の発行元のプロセッサ100Cを示すプロセッサ番号をプロセッサ番号記憶部43に格納する。一方、ステートマシン32Cは、メモリアクセス要求にロスト予防情報が含まれない場合、予防フラグ50をリセットする。
その後、ステートマシン32Cは、記憶装置200からデータを読み出し、他ノードのプロセッサ100Cのキャッシュメモリ部10がデータを持ち出している場合、データを返送させる処理を実行する。そして、ステートマシン32Cは、メモリアクセス要求の発行元のプロセッサ100Cにデータを含む応答を発行し、ディレクトリ情報およびデータを更新した場合、記憶装置200に書き込む。
さらに、ステートマシン32Cは、予防フラグ50がセットされている場合、プロセッサ番号記憶部43に保持されたプロセッサ番号に基づいて、メモリアクセス要求の発行元のプロセッサ100Cにデータ返送要求を発行してデータを取り戻す。これにより、データの消失により致命的なエラーが発生するおそれがある場合に、自ノードの記憶装置200から読み出したデータが他ノードのプロセッサ100Cで処理された後に取り戻すことができる。データを予め取り戻しておくことで、ノード間の通信経路等の一時的な故障によりデータ返送要求およびキャッシュ無効化要求を発行する頻度を上述した実施形態に比べて下げることができる。この結果、情報処理装置IPE4のキャッシュコヒーレンシを維持しつつ、情報処理装置IPE4のRAS性能の低下を抑止することができる。
図11は、メモリアクセス要求パケットの一例を示す。メモリアクセス要求パケットは、制御部とデータ部とを有する。制御部は、メモリアクセス要求パケットが有効の場合、バリッドVを示す情報がセットされる。データ部は、命令コード、メモリアクセス要求の要求元のプロセッサ100CのID、メモリアクセスアドレスおよびロスト予防情報が格納される領域を有する。
命令コードの領域には、「共有型」または「排他型」を示す情報が格納される。例えば、ロスト予防情報の領域は、1ビットであり、論理1の場合、ロスト予防タイプのメモリアクセス要求であることを示し、論理0の場合、通常のメモリアクセス要求であることを示す。
図12は、図10に示すシステム制御部16Cの動作の一例を示す図である。図5と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。ステップS10、S20、S30、S40、S50、S60、S90、S110、S120、S200の処理は、図5に示すステップS10、S20、S30、S40、S50、S60、S90、S110、S120、S200の処理と同一または同様である。
ステップS20の処理の後、ステップS24において、ステートマシン32Cは、メモリアクセス要求がロスト予防情報を含むか否かを判定する。メモリアクセス要求がロスト予防情報を含む場合、処理はステップS25に移行され、メモリアクセス要求がロスト予防情報を含まない場合、処理はステップS27に移行される。
ステップS25において、ステートマシン32Cは、予防フラグ50を”1”にセットする。次に、ステップS26において、ステートマシン32Cは、ロスト予防情報を含むメモリアクセス要求を発行したプロセッサ100Cを識別するプロセッサ番号をプロセッサ番号記憶部43に格納する。ステップS27において、ステートマシン32Cは、予防フラグ50を”0”にリセットする。
ステップS30、S40の実行後、ステップS50において、データを他ノードのプロセッサ100Cに持ち出している場合、ステップS60において、ステートマシン32Cは、データを持ち出している他ノードのプロセッサ100Cにデータ返送要求を発行する。次に、ステップS90において、ステートマシン32Cは、データ返送要求に対する応答に含まれるデータをデータバッファ34に格納し、処理をステップS110に移行する。なお、データを持ち出した他ノードのプロセッサ100Cがデータを更新していない場合、ステップS26の処理は省略されてもよい。
この後、ステートマシン32Cは、図5と同様にステップS110、S120の処理を実行する。ステップS120の後、ステップS150において、ステートマシン32Cは、トランザクションの後処理を実行する。ステップS150の処理の例は、図13に示される。
図13は、図12に示すステップS150の処理の一例を示す。まず、ステップS151において、ステートマシン32Cは、予防フラグ50が”1”にセットされているか否かを判定する。予防フラグ50が”1”にセットされている場合、処理はステップS152に移行され、予防フラグ50が”0”にリセットされている場合、処理は終了する。
ステップS152において、ステートマシン32Cは、プロセッサ番号記憶部43からプロセッサ番号を読み出す。プロセッサ番号記憶部43に記憶されたプロセッサ番号は、ロスト予防情報を含むメモリアクセス要求を発行したプロセッサ100Cを示す。
次に、ステップS153において、ステートマシン32Cは、ロスト予防情報を含むメモリアクセス要求の発行元のプロセッサ100Cにデータ返送要求を発行する。次に、ステップS154において、ステートマシン32Cは、データ返送要求の発行先(すなわち、メモリアクセス要求の発行元)のプロセッサ100Cからデータ返送要求に対する応答を受信する。次に、ステップS155において、ステートマシン32Cは、データ返送要求に対する応答に含まれるデータが更新されている場合またはディレクトリ情報を更新した場合、記憶装置200にライト要求を発行する。そして、ステートマシン32は、データおよびディレクトリ情報を記憶装置200に書き込み処理を終了する。
以上、図10から図13に示す実施形態では、データの消失により致命的なエラーが発生するおそれがある場合に、自ノードの記憶装置200から読み出したデータが他ノードのプロセッサ100Cで処理された後に取り戻すことができる。データを予め取り戻しておくことで、ノード間の通信経路等の一時的な故障によりデータ返送要求およびキャッシュ無効化要求を発行する頻度を上述した実施形態に比べて下げることができる。また、要求処理エントリ26Cは、メモリアクセス要求の発行元のプロセッサ100Cを識別するプロセッサ番号を記憶するプロセッサ番号記憶部43を有する。これにより、データを持ち出しているノードへのデータ返送要求に対する応答を受信した後、プロセッサ番号記憶部43を参照することで、データ返送要求を発行するメモリアクセス要求の発行元のプロセッサ100Cを検出することができる。そして、要求処理エントリ26Cは、検出したプロセッサ100Cにデータ返送要求を発行することができる。この結果、情報処理装置IPE4のキャッシュコヒーレンシを維持しつつ、情報処理装置IPE4のRAS性能の低下を抑止することができる。
図14は、情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す。図3および図10に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図14に示す情報処理装置IPE5は、サーバ等であり、図3に示す情報処理装置IPE2のプロセッサ100Aの代わりにプロセッサ100Dを有する。プロセッサ100Dは、図3に示すキャッシュメモリ制御部12およびシステム制御部16の代わりにキャッシュメモリ制御部12Cおよびシステム制御部16Dを有する。システム制御部16Dは、図3に示すプロセッサインタフェース18および複数の要求処理エントリ26の代わりにプロセッサインタフェース18Cおよび複数の要求処理エントリ26Dを有する。また、システム制御部16Dは、図10に示すロスト予防検出部48を有する。
キャッシュメモリ制御部12Cは、図10に示すキャッシュメモリ制御部12Cと同様に、ロスト予防情報を付加したメモリアクセス要求をシステム制御部16Dに発行する機能を有する。プロセッサインタフェース18Cは、図10に示すプロセッサインタフェース18Cと同様に、調停により選択したメモリアクセス要求をロスト予防検出部48に転送する機能を有する。情報処理装置IPE5のその他の構成は、図3に示す情報処理装置IPE2の構成と同様である。
要求処理エントリ26Dは、アクセス要求バッファ30、ステートマシン32D、データバッファ34、ディレクトリバッファ36およびタイマ38を有する。ステートマシン32Dは、図3に示すステートマシン32に、プロセッサ番号記憶部43をおよび予防フラグ50を追加している。プロセッサ番号記憶部43は、図10に示すプロセッサ番号記憶部43と同様に、メモリアクセス要求の発行元のプロセッサ100Dを識別するプロセッサ番号を保持する。予防フラグ50は、図10に示す予防フラグ50と同様に、ロスト予防情報を付加したメモリアクセス要求を受信した場合にセットされる。なお、持ち出し先検出部40、プロセッサ番号記憶部42、43および予防フラグ50は、要求処理エントリ26D内であって、ステートマシン32Dの外部に配置されてもよい。
ステートマシン32Dは、図3に示すステートマシン32の機能に加えて、図10に示すステートマシン32Cの機能を有する。すなわち、ステートマシン32Dは、予防フラグ50がセットされている場合、プロセッサ番号記憶部43に保持されたプロセッサ番号に基づいて、メモリアクセス要求の発行元のプロセッサ100Dにデータ返送要求を発行してデータを取り戻す処理を実行する。
図15は、図14に示すシステム制御部16Dの動作の一例を示す図である。図5および図12と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。ステップS10からステップS40までの処理は、図12に示すステップS10からステップS40までの処理と同一または同様である。ステップS50からステップS120までの処理は、図5に示すステップS50からステップS120までの処理と同一または同様である。
ステップS120の後、ステップS160において、ステートマシン32Dは、トランザクションの後処理を実行する。ステップS160の処理の例は、図16に示される。
図16は、図15に示すステップS160の処理の一例を示す。図6および図13と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。
まず、ステップS161において、ステートマシン32Dは、ディレクトリバッファ36に保持されているディレクトリ情報が、タイムアウトの発生を示すエラー情報を含むか否かを判定する。ディレクトリ情報がタイムアウトの発生を示すエラー情報を含む場合、処理はステップS162に移行され、ディレクトリ情報がタイムアウトの発生を示すエラー情報を含まない場合、処理はステップS165に移行される。
ステップS162からステップS164までの処理は、図6に示すステップS132からステップS134に示す処理と同じである。ステップS165からステップS169までの処理は、図13に示すステップS151からステップS155に示す処理と同じである。すなわち、ステートマシン32Dは、データ返送要求に対する応答を受信する前にタイムアウトが発生し、ディレクトリバッファ36にエラー情報を書き込んだ場合、データ返送要求の宛先のプロセッサ100Dにキャッシュ無効化要求を発行する。また、ステートマシン32Dは、メモリアクセス要求がロスト予防情報を含む場合、メモリアクセス要求の発行元のプロセッサ100Dにデータ返送要求を発行し、メモリアクセス要求に基づいて転送したデータを取り戻す処理を実行する。
なお、データ返送要求に対する応答を受信する前にタイムアウトが発生した場合、メモリアクセス要求の発行元のプロセッサ100Dは、データを含む応答を受信せず、エラーを示す応答を受信する。この場合、メモリアクセス要求の発行元のプロセッサ100Dは、メモリアクセス要求に対するデータの演算処理等を実行していないため、ステートマシン32Dは、予防フラグ50の値に拘わらず、ステップS165からステップS169までの処理を省略する。
以上、図14から図16に示す実施形態においても、図1から図6および図10から図13に示す実施形態と同様の効果を得ることができる。すなわち、ノードND間を接続する通信経路等で故障が一時的に発生した場合にも、キャッシュコヒーレンシを維持することができる。また、データ返送要求をリトライせずにキャッシュ無効化要求を他ノードNDに発行するため、メモリアクセス要求に対する応答が遅れることを抑止することができる。さらに、データの消失により致命的なエラーが発生するおそれがある場合に、自ノードの記憶装置200から読み出したデータが他ノードのプロセッサ100Dで処理された後に取り戻すことができる。データを予め取り戻しておくことで、ノード間の通信経路等の一時的な故障によりデータ返送要求およびキャッシュ無効化要求を発行する頻度を図1に示す実施形態に比べて下げることができる。また、プロセッサ番号記憶部42を参照することで、データ返送要求の宛先のプロセッサ100Dを検出し、検出したプロセッサ100Dにキャッシュ無効化要求を発行することができる。さらに、プロセッサ番号記憶部43を参照することで、メモリアクセス要求の発行元のプロセッサ100Dを検出し、検出したプロセッサ100Dにデータ返送要求を発行することができる。この結果、情報処理装置IPE5のキャッシュコヒーレンシを維持しつつ、情報処理装置IPE5の処理性能およびRAS性能の低下を抑止することができる。
図17は、情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す。図3、図7および図10に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図17に示す情報処理装置IPE6は、サーバ等であり、システムバスSBUSを介して互いに接続された複数のプロセッサ100Eと、各プロセッサ100Eに接続された記憶装置200とを有する。プロセッサ100Eのシステム制御部16Eは、図14に示す複数の要求処理エントリ26Dの代わりに複数の要求処理エントリ26Eを有する。要求処理エントリ26Eは、アクセス要求バッファ30、ステートマシン32E、データバッファ34、ディレクトリバッファ36、エラー検出部44およびタイマ38を有する。ステートマシン32Eは、図14に示すステートマシン32Dに、エラー種記憶部46を追加している。なお、持ち出し先検出部40、プロセッサ番号記憶部42、43、エラー種記憶部46および予防フラグ50は、要求処理エントリ26E内であって、ステートマシン32Eの外部に配置されてもよい。情報処理装置IPE6のその他の構成は、図14に示す情報処理装置IPE5の構成と同様である。
ステートマシン32Eは、図7に示すステートマシン32Bの機能に加えて、図10に示すステートマシン32Cの機能を有する。すなわち、ステートマシン32Eは、メモリアクセス要求を契機に発行したデータ返送要求に対する応答を受信する前にタイムアウトが発生した場合、データ返送要求の発行先のプロセッサ100Eにキャッシュ無効化要求を発行する。また、ステートマシン32Eは、データ返送要求に対する応答がディレクトリ矛盾を示す場合、全てのプロセッサ100Eにキャッシュ無効化要求を発行する。さらに、ステートマシン32Eは、予防フラグ50がセットされている場合、プロセッサ番号記憶部43に保持されたプロセッサ番号に基づいて、メモリアクセス要求の発行元のプロセッサ100Eにデータ返送要求を発行してデータを取り戻す処理を実行する。
図18は、図17に示すシステム制御部16Eの動作の一例を示す図である。図8および図12と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。ステップS10からステップS40までの処理は、図12に示すステップS10からステップS40までの処理と同一または同様である。ステップS42からステップS120までの処理は、図8に示すステップS42からステップS120までの処理と同一または同様である。
ステップS120の後、ステップS180において、ステートマシン32Eは、トランザクションの後処理を実行する。ステップS180の処理の例は、図19に示される。
図19は、図18に示すステップS180の処理の一例を示す。図9および図13と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。
まず、ステップS181において、ステートマシン32Eは、ディレクトリバッファ36に保持されているディレクトリ情報が、タイムアウトの発生またはディレクトリ矛盾の発生を示すエラー情報を含むか否かを判定する。ディレクトリ情報がタイムアウトの発生またはディレクトリ矛盾の発生を示すエラー情報を含む場合、処理はステップS182に移行される。ディレクトリ情報がタイムアウトの発生またはディレクトリ矛盾の発生を示すエラー情報を含まない場合、処理はステップS189に移行される。
ステップS182からステップS188までの処理は、図9に示すステップS142からステップS148に示す処理と同じである。ステップS189からステップS193までの処理は、図13に示すステップS151からステップS155に示す処理と同じである。すなわち、ステートマシン32Eは、データ返送要求に対する応答を受信する前にタイムアウトが発生し、ディレクトリバッファ36にエラー情報を書き込んだ場合、データ返送要求の宛先のプロセッサ100Eにキャッシュ無効化要求を発行する。また、ステートマシン32Eは、データ返送要求に対する応答がディレクトリ矛盾を示す場合、全てのプロセッサ100Eにキャッシュ無効化要求を発行する。さらに、ステートマシン32Eは、メモリアクセス要求がロスト予防情報を含む場合、メモリアクセス要求の発行元のプロセッサ100Eにデータ返送要求を発行し、メモリアクセス要求に基づいて転送したデータを取り戻す処理を実行する。
なお、データ返送要求に対する応答を受信する前にタイムアウトが発生し、またはデータ返送要求に対する応答がディレクトリ矛盾を示す場合、メモリアクセス要求の発行元のプロセッサ100Eは、データを含む応答を受信せず、エラーを示す応答を受信する。この場合、メモリアクセス要求の発行元のプロセッサ100Eは、メモリアクセス要求に対応するデータの演算処理等を実行していないため、ステートマシン32Eは、予防フラグ50の値に拘わらず、ステップS189からステップS193までの処理を省略する。
以上、図17から図19に示す実施形態においても、図1から図16に示す実施形態と同様の効果を得ることができる。すなわち、ノードND間を接続する通信経路等で故障が一時的に発生した場合にも、キャッシュコヒーレンシを維持することができる。また、データ返送要求をリトライせずにキャッシュ無効化要求を他ノードNDに発行するため、メモリアクセス要求に対する応答が遅れることを抑止することができる。データの消失により致命的なエラーが発生するおそれがある場合に、自ノードの記憶装置200から読み出したデータが他ノードのプロセッサ100Eで処理された後に取り戻すことができる。データを予め取り戻しておくことで、ノード間の通信経路等の一時的な故障によりデータ返送要求およびキャッシュ無効化要求を発行する頻度を図1に示す実施形態に比べて下げることができる。さらに、ディレクトリ矛盾エラーが発生した場合に、全てのプロセッサ100Eに対象データを削除させることで、情報処理装置IPE6のキャッシュコヒーレンシを維持することができる。この結果、情報処理装置IPE6のキャッシュコヒーレンシを維持しつつ、情報処理装置IPE6の処理性能およびRAS性能の低下を抑止することができる。また、プロセッサ番号記憶部42を参照することで、データ返送要求の宛先のプロセッサ100Eを検出し、検出したプロセッサ100Eにキャッシュ無効化要求を発行することができる。さらに、プロセッサ番号記憶部43を参照することで、メモリアクセス要求の発行元のプロセッサ100Eを検出し、検出したプロセッサ100Eにデータ返送要求を発行することができる。この結果、情報処理装置IPE6のキャッシュコヒーレンシを維持しつつ、情報処理装置IPE6の処理性能およびRAS性能の低下を抑止することができる。
図20は、図1から図19に示す実施形態が適用されるサーバの一例を示す。図20に示すサーバSV1は、プロセッサと記憶装置とを含む所定数のマザーボードMBを有する。各マザーボードMBは、ノードに対応する。プロセッサは、図1、図3、図7、図10、図14、図17に示す演算処理装置1、プロセッサ100A、100B、100C、100D、100Eのいずれかである。プロセッサは、キャッシュメモリ部10、キャッシュメモリ制御部12(または12C)および複数のプロセッサコア部14を含むプロセッサ部と、システム制御部とを有する。キャッシュメモリ部10は、図1に示すキャッシュメモリ部4に対応し、キャッシュメモリ制御部12は、図1に示すキャッシュメモリ制御部5に対応し、プロセッサコア部14は、図1に示す演算処理部3に対応する。システム制御部は、図1、図3、図7、図10、図14、図17に示すメモリアクセス制御部6、システム制御部16、16B、16C、16D、16Eのいずれかである。システム制御部は、システムバスSBUSを介して互いに接続される。サーバSV1は、情報処理装置の一例である。
図21は、サーバの別の例を示す。図21に示すサーバSV2は、複数のプロセッサとシステム制御部と記憶装置200とを含むマザーボードMBを有する。プロセッサは、図3、図7、図10、図14、図17に示すキャッシュメモリ部10、キャッシュメモリ制御部12(または12C)および複数のプロセッサコア部14を含む。また、プロセッサは、図1に示す演算処理部3、キャッシュメモリ部4およびキャッシュメモリ制御部5を有してもよい。システム制御部は、複数のプロセッサに共通に設けられる。システム制御部は、図1、図3、図7、図10、図4、図17に示すメモリアクセス制御部6、システム制御部16、16B、16C、16D、16Eのいずれかと同様の構成を有する。但し、システム制御部のプロセッサインタフェースは、システムバスを介することなく各プロセッサのキャッシュメモリ制御部に接続される。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。