以下、図面を用いて実施形態を説明する。
図1は、情報処理装置、演算処理装置および情報処理装置の制御方法の一実施形態を示す。図1に示す情報処理装置IPE1は、サーバ等であり、演算処理装置1と、演算処理装置1に接続される記憶装置2とを含む複数のノードND(ND1、ND2)を有する。すなわち、情報処理装置IPE1は、マルチプロセッサシステムとして機能する。記憶装置2は、主記憶装置、または演算処理装置1の外部に接続されるキャッシュメモリ部である。記憶装置2がキャッシュメモリ部の場合、さらに、記憶装置2に主記憶装置が接続される。
演算処理装置1は、演算処理を実行する演算処理部3と、演算処理部3で処理するデータを保持するキャッシュメモリ部4と、キャッシュミス時に記憶装置2に対するメモリアクセス要求を発行するキャッシュメモリ制御部5と、メモリアクセス制御部6とを有する。なお、キャッシュメモリ制御部5は、他ノードNDの記憶装置2に割り当てられたアドレスに対するデータのキャッシュミスを判定した場合、他ノードNDにメモリアクセス要求を発行する。メモリアクセス制御部6は、メモリアクセス要求に基づいてメモリアクセス処理を実行するとともに、キャッシュコヒーレンシを維持させる処理を実行する。
メモリアクセス制御部6は、アドレス一致検出部7と、エントリ選択部8と、複数の要求処理部9とを有する。各要求処理部9は、アドレス保持部9aと、ディレクトリ保持部9bと、処理制御部9cとを有する。
アドレス一致検出部7は、メモリアクセス要求に含まれるアドレスと、各要求処理部9のアドレス保持部9aに保持されたアドレスとを比較する。メモリアクセス要求は、自ノードNDまたは他ノードNDのキャッシュメモリ制御部5により発行され、メモリアクセス制御部6のアドレス一致検出部7およびエントリ選択部8に転送される。アドレス一致検出部7は、アドレスが一致する場合、一致するアドレスを保持する要求処理部9を識別する情報を、アドレスの検出結果としてエントリ選択部8に出力する。アドレス一致検出部7は、アドレスが一致しない場合、アドレスが一致する要求処理部9が存在しないことを示す情報をアドレスの検出結果としてエントリ選択部8に出力する。なお、アドレス一致検出部7が比較するアドレス保持部9aからのアドレスは、各要求処理部9が前回処理したメモリアクセス要求(すなわち、過去のメモリアクセス要求)に含まれるアドレスである。
エントリ選択部8は、アドレス一致検出部7によりアドレスの一致が検出された場合、アドレスが一致した要求処理部9を再利用するために選択する。エントリ選択部8は、アドレス一致検出部7によりアドレスの一致が検出されない場合、LRU(Least Recently Used)またはラウンドロビン等の手法を用いて要求処理部9の1つを選択する。そして、エントリ選択部8は、選択した要求処理部9に、メモリアクセス処理を実行させるためにメモリアクセス要求を転送する。
各要求処理部9において、アドレス保持部9aは、エントリ選択部8から転送されるメモリアクセス要求に含まれるアドレスを保持し、保持しているアドレスをアドレス一致検出部7および処理制御部9cに出力する。なお、アドレス保持部9aがアドレス一致検出部7に出力するアドレスは、エントリ選択部8から転送されたメモリアクセス要求を保持する前に保持していた過去のメモリアクセス要求に含まれるアドレスである。過去のメモリアクセス要求に含まれるアドレスをアドレス一致検出部7に出力するために、アドレス保持部9aに保持されたアドレスは、メモリアクセス要求に対するメモリアクセス処理の完了後も消去されることなく保持される。
ディレクトリ保持部9bは、メモリアクセス要求に基づいて記憶装置2から読み出されたディレクトリ情報を保持する。ディレクトリ情報は、メモリアクセス要求のアクセス対象である対象データを、他ノードNDのキャッシュメモリ部4に持ち出したことを示す情報を含む。例えば、ディレクトリ情報は、対象データを持ち出した他ノードNDである持ち出しノードNDを識別する情報を含む。ディレクトリ保持部9bに保持されるディレクトリ情報は、後述するデータ返送要求に対応して他ノードNDからデータが返送され、他ノードNDへのデータの持ち出し状況が変化した場合、更新される。ディレクトリ保持部9bに保持されるディレクトリ情報は、更新された場合に記憶装置2に書き戻されるため、記憶装置2が保持するディレクトリ情報と等しい。
処理制御部9cは、アドレス一致検出部7によるアドレスの一致の検出に基づいてエントリ選択部8から転送されるメモリアクセス要求を受信した場合、ディレクトリ保持部9b内のディレクトリ情報に基づいて持ち出しノードNDが存在するか否かを検出する。すなわち、メモリアクセス制御部6は、アドレス一致検出部7がアドレスの一致を検出した場合、記憶装置2からディレクトリ情報を読み出すことなく、ディレクトリ保持部9bに保持されているディレクトリ情報を再利用して、持ち出しノードNDを判定する。ディレクトリ保持部9bに保持されているディレクトリ情報を再利用することにより、記憶装置2へのアクセスの頻度を下げることができ、メモリアクセス要求に対するメモリアクセスのレイテンシの増加を抑止することができる。この結果、アドレスの一致を検出しない場合に比べて演算処理装置1および情報処理装置IPE1の性能を向上することができる。
処理制御部9cは、持ち出しノードNDが存在する場合、持ち出しノードNDに対象データの返送を要求するデータ返送要求を発行し、持ち出しノードNDから対象データを返送させる。処理制御部9cは、持ち出しノードNDから返送された対象データを含む応答を、メモリアクセス要求の発行元のキャッシュメモリ制御部5に発行する。これにより、アドレス一致検出部7がアドレスの一致を検出し、かつ、対象データが他ノードNDに持ち出されている場合、記憶装置2にアクセスすることなくメモリアクセス要求に対する応答をメモリアクセス要求の発行元に発行することができる。
処理制御部9cは、メモリアクセス要求に対するメモリアクセス処理の結果に基づいて、ディレクトリ保持部9bに保持されたディレクトリ情報を更新し、更新したディレクトリ情報を記憶装置2に書き戻し、メモリアクセス処理を完了する。処理制御部9cは、メモリアクセス処理を完了後、アドレス保持部9aに保持されたアドレスおよびディレクトリ保持部9bに保持されたディレクトリ情報を、消去することなく保持する。これにより、メモリアクセス制御部6は、メモリアクセス要求に含まれるアドレスを保持するために各要求処理部9に設けられるアドレス保持部9aを利用して、アドレス一致検出部7によりアドレスの一致を検出することができる。さらに、メモリアクセス制御部6は、ディレクトリ情報を保持するために各要求処理部9に設けられるディレクトリ保持部9bを利用することで、アドレスの一致時に記憶装置2にアクセスすることなく、持ち出しノードNDの有無を判定することができる。このように、アドレス保持部9aおよびディレクトリ保持部9bを利用して持ち出しノードNDの有無を判定することで、ディレクトリキャッシュ部等を新たに設けて持ち出しノードNDの有無を判定する場合に比べて、回路規模の増加を抑えることができる。
一方、処理制御部9cは、アドレス一致検出部7がアドレスの一致を検出しない場合、記憶装置2からディレクトリ情報を読み出し、読み出したディレクトリ情報をディレクトリ保持部9bに格納する。処理制御部9cは、ディレクトリ保持部9bに格納したディレクトリ情報を用いて持ち出しノードNDを検出する。処理制御部9cは、記憶装置200からディレクトリ情報とともにデータを読み出してもよい。
なお、メモリアクセス制御部6がアドレス一致検出部7を持たない場合、処理制御部9cは、メモリアクセス要求毎に記憶装置2からディレクトリ情報を読み出し、記憶装置2から読み出したディレクトリ情報を用いて持ち出しノードNDを検出する。この場合、図1に示すメモリアクセス制御部6に比べて、メモリアクセス要求に対するメモリアクセスのレイテンシは増加する。
以上、図1に示す実施形態では、メモリアクセス制御部6は、記憶装置2からディレクトリ情報を読み出すことなく、持ち出しノードNDを検出することができる。また、アドレス一致検出部7がアドレスの一致を検出し、かつ、対象データが他ノードNDに持ち出されている場合、記憶装置2にアクセスすることなくメモリアクセス要求に対する応答をメモリアクセス要求の発行元に発行することができる。さらに、ディレクトリキャッシュ等を設けることなく、アドレス保持部9aおよびディレクトリ保持部9bを利用して、アドレスの一致を検出することができ、対象データが他ノードNDに持ち出されているかを検出することができる。したがって、回路規模の増加を抑えて記憶装置2へのアクセスの頻度を低減することができ、メモリアクセス要求に対するメモリアクセスのレイテンシの増加を抑止することができる。この結果、メモリアクセス制御部6がアドレス一致検出部7を持たない場合に比べて演算処理装置1および情報処理装置IPE1の性能を向上することができる。
図2は、情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す。図2に示す情報処理装置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は、ディレクトリ方式により、キャッシュコヒーレンシを維持する制御を実行する。ディレクトリ情報は、メモリアクセス要求のアクセス対象である対象データをキャッシュメモリ部10に持ち出した他ノードである持ち出しノードを識別する情報を含む。ディレクトリ情報の例については、図3で説明される。
キャッシュメモリ制御部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は、以下の処理を実行する。すなわち、システム制御部16は、対象データを保持する他ノードのキャッシュメモリ部10に、対象データを無効化させるキャッシュ無効化要求、または、対象データをキャッシュメモリ部10から追い出して記憶装置200に書き戻させるデータ返送要求を発行する。
キャッシュメモリ制御部12は、キャッシュメモリ部10のエントリに空きがない場合、エントリのいずれかに保持されたデータをキャッシュメモリ部10から追い出し、記憶装置200から読み出すデータを格納するエントリを確保する。データを追い出すエントリは、LRUまたはラウンドロビン等の手法を用いて決められる。キャッシュメモリ部10上で書き替えられたM状態のデータをキャッシュメモリ部10から追い出す場合、キャッシュメモリ制御部12は、追い出したデータを記憶装置200に書き戻すためのメモリアクセス要求をシステム制御部16に発行する。
さらに、キャッシュメモリ制御部12は、システム制御部16を介して他ノードのプロセッサ100Aからデータ返送要求を受けた場合、データ返送要求に含まれるアドレスに対応するデータがキャッシュメモリ部10に保持されているか否かを判定する。キャッシュメモリ制御部12は、データ返送要求に含まれるアドレスに対応するデータが更新されることなくキャッシュメモリ部10に保持されている場合、キャッシュメモリ部10からデータを追い出す。そして、キャッシュメモリ制御部12は、データを追い出したことを示す情報を含む応答を、データ返送要求を発行したプロセッサ100Aに発行する。
キャッシュメモリ制御部12は、データ返送要求に含まれるアドレスに対応するデータがキャッシュメモリ部10上で更新されている場合、キャッシュメモリ部10からデータを追い出したデータを含む応答を、データ返送要求を発行したプロセッサ100Aに発行する。キャッシュメモリ制御部12は、データ返送要求に含まれるアドレスに対応するデータがキャッシュメモリ部10上に存在しない場合、データが存在しないことを示すエラー情報を含む応答を、データ返送要求を発行したプロセッサ100Aに発行する。
キャッシュメモリ制御部12は、システム制御部16を介して他ノードのプロセッサ100Aからキャッシュ無効化要求を受けた場合、キャッシュ無効化要求に含まれるアドレスに対応するデータがキャッシュメモリ部10に保持されているか否かを判定する。キャッシュメモリ制御部12は、キャッシュ無効化要求に含まれるアドレスに対応するデータがキャッシュメモリ部10に保持されている場合、キャッシュメモリ部10に保持されたデータを無効化する。そして、キャッシュメモリ制御部12は、データを無効化したことを示す情報を含む応答を、キャッシュ無効化要求を発行したプロセッサ100Aに発行する。
キャッシュメモリ制御部12は、キャッシュ無効化要求に含まれるアドレスに対応するデータがキャッシュメモリ部10上に存在しない場合、データが存在しないことを示すエラー情報を含む応答を、キャッシュ無効化要求を発行したプロセッサ100Aに発行する。以下では、データ返送要求およびキャッシュ無効化要求は、コヒーレンシ制御要求とも称される。
システム制御部16は、プロセッサインタフェース18、応答調停部20、エントリ決定部22、再利用制御部23、制御要求発行部24、複数の要求処理エントリ26およびメモリ制御部28を有する。
プロセッサインタフェース18は、キャッシュメモリ制御部12およびシステムバスSBUSに接続され、各ノードのキャッシュメモリ制御部12との間での通信を制御する。プロセッサインタフェース18は、自ノードのキャッシュメモリ制御部12および他ノードのプロセッサ100Aから受信するメモリアクセス要求を調停により選択し、選択した順にメモリアクセス要求をエントリ決定部22および再利用制御部23に出力する。
なお、プロセッサインタフェース18は、受信したメモリアクセス要求に含まれるアドレスが、他ノードの記憶装置200に割り当てられている場合、システムバスSBUSを介して他ノードにメモリアクセス要求を発行する。プロセッサインタフェース18は、メモリアクセス要求に基づいて応答調停部20から出力されるデータおよび応答を受信し、受信したデータおよび応答をメモリアクセス要求の発行元に発行する。
また、プロセッサインタフェース18は、自ノードの記憶装置200に割り当てられたアドレスを含む排他型のメモリアクセス要求を他ノードのプロセッサ100Aから受信した場合、自ノードのキャッシュメモリ制御部12に、データ返送要求を発行する。キャッシュメモリ制御部12は、キャッシュメモリ部10が排他型のメモリアクセス要求に対応するデータを保持している場合、データをキャッシュメモリ部10から追い出し、追い出したデータをプロセッサインタフェース18に出力する。プロセッサインタフェース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は、再利用制御部23からエントリ番号ENを受信した場合、メモリアクセス要求を処理するために使用する要求処理エントリ26をエントリ番号ENで識別される要求処理エントリ26に決定する。すなわち、エントリ決定部22は、エントリ番号ENで識別される要求処理エントリ26に保持されている情報を再利用可能であると判定する。
エントリ決定部22は、使用を決定した要求処理エントリ26にメモリアクセス要求を転送する。エントリ決定部22は、要求処理エントリ26の再利用が可能と判定した場合、使用を決定した再利用する要求処理エントリ26内の再利用フラグRFLGをセットする指示を、メモリアクセス要求とともにアクセス要求バッファ30に出力する。エントリ決定部22は、アドレス一致検出部ADETによりアドレスの一致が検出された要求処理エントリ26を選択するエントリ選択部の一例である。
再利用制御部23は、アドレス一致検出部ADETを有する。アドレス一致検出部ADETは、プロセッサインタフェース18から受信したメモリアクセス要求に含まれるアドレスを、各要求処理エントリ26のアクセス要求バッファ30に保持されたアドレスと比較する。アドレス一致検出部ADETは、アドレスの比較に基づいて、メモリアクセス要求に含まれるアドレスと同じアドレスを保持する要求処理エントリ26を検出した場合、検出した要求処理エントリ26を示すエントリ番号ENをエントリ決定部22に出力する。アドレス一致検出部ADETは、メモリアクセス要求に含まれるアドレスと同じアドレスを保持する要求処理エントリ26を検出しない場合、無効なエントリ番号ENをエントリ決定部22に出力する。
制御要求発行部24は、要求処理エントリ26から出力されるコヒーレンシ制御要求を保持するコヒーレンシ制御要求キューCRQUEを有する。制御要求発行部24は、コヒーレンシ制御要求キューCRQUEに保持されたコヒーレンシ制御要求を調停することにより選択する。そして、制御要求発行部24は、選択したコヒーレンシ制御要求を、プロセッサインタフェース18およびシステムバスSBUSを介して、宛先のプロセッサ100Aに発行する。
要求処理エントリ26は、アクセス要求バッファ30、ステートマシン32、データバッファ34およびディレクトリバッファ36を有する。システム制御部16が有する要求処理エントリ26の数は、8個、16個または32個等である。要求処理エントリ26は、メモリアクセス要求に基づいてメモリアクセス処理を実行するとともに、キャッシュコヒーレンシを維持する処理を実行する要求処理部の一例である。ステートマシン32は、エントリ決定部22により要求処理エントリ26が選択された場合、ディレクトリバッファ36に保持されたディレクトリ情報を用いて持ち出しノードを検出し、検出した持ち出しノードにデータ返送要求を発行する処理制御部の一例である。
アクセス要求バッファ30は、アドレス情報保持部AHLDおよび再利用フラグRFLGを有する。アドレス情報保持部AHLDは、エントリ決定部22から供給されるメモリアクセス要求に含まれるアドレスおよび要求元ID(Identification)等の情報を保持し、保持している情報をステートマシン32に出力する。また、アドレス情報保持部AHLDは、保持しているアドレスを再利用制御部23に出力する。アドレス情報保持部AHLDは、メモリアクセス要求に含まれるアドレスを保持するアドレス保持部の一例である。
再利用フラグRFLGは、エントリ決定部22からの指示に基づいてセットまたはリセットされる。再利用フラグRFLGは、アドレス一致検出部ADETがアドレスの一致を検出した場合に、アドレスの一致を示すアドレス一致情報が設定されるアドレス一致情報保持部の一例である。
ディレクトリバッファ36は、ステートマシン32から記憶装置200に発行されるリード要求に基づいて記憶装置200から読み出されるディレクトリ情報を保持する。ディレクトリバッファ36に保持されるディレクトリ情報は、他ノードへのデータの持ち出し状況が変化した場合にステートマシン32により更新され、更新されたディレクトリ情報は、記憶装置200に書き戻される。ディレクトリバッファ36は、メモリアクセス要求に基づいて記憶装置200から読み出されたディレクトリ情報を保持するディレクトリ保持部の一例である。
データバッファ34は、ステートマシン32から記憶装置200に発行されるリード要求に基づいて記憶装置200から読み出されるデータを保持する。また、データバッファ34は、ステートマシン32が他ノードのプロセッサ100Aに発行するデータ返送要求に対する応答に含まれるデータ(更新されたデータ)を保持する。データバッファ34が保持するデータは、メモリアクセス要求に対するメモリアクセス処理に基づいてステートマシン32から出力される応答とともに、応答調停部20を介してメモリアクセス要求の発行元に出力される。データバッファ34は、メモリアクセス要求に基づいて記憶装置200から読み出されたデータを保持するデータ保持部の一例である。
ステートマシン32は、持ち出し先検出部38を含み、記憶装置200に対するメモリアクセス要求(リード要求またはライト要求)の発行と、他ノードのプロセッサ100Aに対するコヒーレンシ制御要求の発行と、発行した要求に対する応答とを制御する。例えば、ステートマシン32は、アクセス要求バッファ30から受信するメモリアクセス要求に基づいて、リード要求またはライト要求を、メモリ制御部28を介して記憶装置200に出力する。ステートマシン32の動作は、再利用フラグRFLGがリセットされている場合と、再利用フラグRFLGがセットされている場合とで異なる。
ステートマシン32は、再利用フラグRFLGがリセットされている場合、ディレクトリバッファ36およびデータバッファ34を初期化することで、要求処理エントリ26を初期状態に設定する。すなわち、ステートマシン32は、アクセス要求バッファ30にメモリアクセス要求の情報が格納されたことに基づいて(エントリ決定部22が要求処理エントリ26を選択したことに基づいて)、要求処理エントリ26を初期状態に設定する。換言すれば、ステートマシン32は、再利用フラグRFLGがリセットされている場合、メモリアクセス要求に対する処理の完了時ではなく、メモリアクセス要求の開始時に、要求処理エントリ26を初期状態に設定する。なお、ステートマシン32は、再利用フラグRFLGがセットされている場合、ディレクトリバッファ36およびデータバッファ34を初期化せず、要求処理エントリ26は、前回のメモリアクセス要求に対する処理結果を保持する。
ステートマシン32は、再利用フラグRFLGがリセットされている場合、メモリアクセス要求に基づいて、メモリ制御部28を介して記憶装置200にリード要求を発行し、記憶装置200からディレクトリ情報およびデータを読み出す。記憶装置200から読み出したディレクトリ情報は、ディレクトリバッファ36に格納され、記憶装置200から読み出したデータは、データバッファ34に格納される。持ち出し先検出部38は、ディレクトリバッファ36に格納されたディレクトリ情報を解析し、記憶装置200から出力されたデータが他ノードのキャッシュメモリ部10に格納されているか否かを検出する。すなわち、持ち出し先検出部38は、記憶装置200から出力されたデータを持ち出している他ノードを検出する。
以上が、再利用フラグRFLGがリセットされている場合のステートマシン32の動作である。
これに対して、ステートマシン32は、再利用フラグRFLGがセットされている場合、記憶装置200にリード要求を発行せず、前回のメモリアクセス要求に対する処理時にディレクトリバッファ36に格納されたディレクトリ情報に基づいて動作する。すなわち、持ち出し先検出部38は、初期化させずにディレクトリバッファ36に保持されているディレクトリ情報を用いて、メモリアクセス要求の対象のデータが他ノードに持ち出されているか否かを判定する。換言すれば、ステートマシン32は、再利用フラグRFLGがセットされている場合、ディレクトリバッファ36およびデータバッファ34の初期化を抑止し、記憶装置200へのリード要求の発行を抑止する。
メモリアクセス要求の対象のデータが他ノードに持ち出されているか否かを判定した後のステートマシン32の動作は、以下に示すように、再利用フラグRFLGのリセット/セットに拘わらず同様である。
持ち出し先検出部38は、記憶装置200から出力されたデータが他ノードのキャッシュメモリ部10に持ち出されている場合、データを持ち出しているプロセッサ100Aをデータ返送要求の宛先に決定する。ステートマシン32は、制御要求発行部24を介して、持ち出し先検出部38が決定したプロセッサ100Aにデータ返送要求を発行する。
ステートマシン32は、データ返送要求を発行したプロセッサ100Aからの応答が、他ノードのプロセッサ100Aにより更新されたデータ(すなわち、書き替えられたデータ)を含む場合、更新されたデータをデータバッファ34に格納する。ステートマシン32は、メモリアクセス要求に対する応答をデータバッファ34に格納されたデータとともに、応答調停部20を介してメモリアクセス要求の発行元に発行する。ステートマシン32は、ディレクトリバッファ36に保持されたディレクトリ情報を更新し、更新したディレクトリ情報を更新されたデータとともに記憶装置200に書き込むためにライト要求をメモリ制御部28に出力する。そして、ステートマシン32は、メモリアクセス要求に対するトランザクションの完了に基づいて、ステートマシン32を含む要求処理エントリ26を開放する。
一方、ステートマシン32は、持ち出し先検出部38によりデータが他ノードのプロセッサ100Aに持ち出されていないと検出された場合、データバッファ34が保持するデータとともに応答を調停応答部20に出力する。
メモリ制御部28は、要求処理エントリ26から出力されるリード要求またはライト要求を保持するメモリ要求キューMRQUEを有する。メモリ制御部28は、メモリ要求キューMRQUEに保持されたリード要求またはライト要求を調停することにより選択し、選択したリード要求またはライト要求を記憶装置200に順に出力する。
記憶装置200は、複数のSDRAM(Synchronous Dynamic Random Access Memory)等を含み、プロセッサコア部14で処理するデータとディレクトリ情報とを保持する記憶領域を有する。記憶装置200は、プロセッサコア部14が実行するプログラムを保持する記憶領域を有してもよい。
図3は、図2に示す記憶装置200およびキャッシュメモリ部10に保持されるデータの一例を示す。図3に示す例では、プロセッサ100Aおよび記憶装置200を有する2つのノードND1、ND2がシステムバスSBUSを介して互いに接続されている。
ノードND1の記憶装置200は、アドレスA0、A1、A2、A3、A4、...が割り当てられ、ノードND2の記憶装置200は、アドレスB0、B1、B2、B3、B4、...が割り当てられる。各記憶装置200は、アドレス毎にディレクトリ情報を記憶するディレクトリ領域と、データを記憶するデータ領域とを有する。例えば、各データ領域は、128バイトであり、キャッシュメモリ部10のキャッシュラインのサイズと等しいが、図3では、データは4ビットで表す。
ディレクトリ領域は、ディレクトリ情報を記憶する。各ディレクトリ領域は、キャッシュメモリ部10へのデータの持ち出し情報を記憶するESI領域と、データを持ち出した他ノードのプロセッサ100Aを識別するプロセッサ番号を記憶するCPU領域と、エラー情報を記憶するERR領域とを有する。ESI領域において、符号I(Invalid)は、データが他ノードのキャッシュメモリ部10に持ち出されていないことを示し、符号E(Exclusive)は、データが他ノードのいずれかのキャッシュメモリ部10のみに持ち出されていることを示す。なお、ESI領域が符号Iを保持する場合、システム制御部16は、データが自ノードのキャッシュメモリ部10に持ち出されているか否かを、自ノードのキャッシュメモリ制御部12に問い合わせることで判定可能である。符号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領域には、アドレスの上位ビット群が格納されるが、図3では、説明を分かりやすくするために、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に対する共有型または排他型のメモリアクセス要求を受信した場合、ディレクトリ情報に基づいて、データがノード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に対する共有型または排他型のメモリアクセス要求を受信した場合、ディレクトリ情報に基づいて、データがノード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のアドレスA1のESI領域(ディレクトリ情報)をI状態からS状態に書き替え、CPU領域に”1、2”を格納する。
ノードND2のプロセッサ100Aは、アドレスB0に対する排他型のメモリアクセス要求を受けた場合、ディレクトリ情報に基づいて、データがノードND1のプロセッサ100Aに持ち出されていると判定する。そして、ノードND2のプロセッサ100Aは、ノードND1のプロセッサ100Aに、アドレスB0に対するデータ返送要求を発行する。アドレス変換要求を受けたノードND1のプロセッサ100Aは、データを更新していないため(S状態)、キャッシュメモリ部10からデータを追い出し、データを追い出したことを示す情報を含む応答をノードND2のプロセッサ100Aに発行する。なお、データが更新されている場合、追い出したデータをノードND2のプロセッサ100Aに応答として発行する。
図4は、図2に示す要求処理エントリ26において、メモリアクセス要求に対する処理を実行する場合の状態の変化の一例を示す。図4に示す例では、プロセッサ100Aのシステム制御部16は、4つの要求処理エントリ26(26a、26b、26c、26d)を有し、まず、アドレスA3に対するメモリアクセス要求MRQを受信するとする。図4(A)に示す初期状態において、各要求処理エントリ26のデータバッファ34およびディレクトリバッファ36は、図3に示すノードND1の記憶装置200が保持する情報と同じ情報を保持している。各要求処理エントリ26のアクセス要求バッファ30のアドレス情報保持部AHLDは、前回のメモリアクセス要求に含まれるアドレス(A1、A2、A3またはA4)を保持している。各要求処理エントリ26のアクセス要求バッファ30の再利用フラグRFLGは、”0”にリセットされている。
図4において、破線枠で示す要求処理エントリ26は、メモリアクセス要求に対する処理を完了して開放されていることを示し、太枠で示す要求処理エントリ26は、メモリアクセス要求に対する処理を実行中であることを示す。要求処理エントリ26は、開放されている場合にも、メモリアクセス要求の処理で使用した情報を保持し続ける。要求処理エントリ26中の太枠で示す要素は、情報が書き替えられたことを示す。なお、実際の動作では、複数の要求処理エントリ26がメモリアクセス要求に対する処理を実行中である場合があるが、図4では、説明を分かりやすくするため、1つの要求処理エントリ26がメモリアクセス要求に対する処理を実行するとする。
要求処理エントリ26aは、以前に処理したアドレスA1に対するメモリアクセス要求の処理結果を保持し、要求処理エントリ26bは、以前に処理したアドレスA2に対するメモリアクセス要求の処理結果を保持している。要求処理エントリ26cは、以前に処理したアドレスA3に対するメモリアクセス要求の処理結果を保持し、要求処理エントリ26dは、以前に処理したアドレスA4に対するメモリアクセス要求の処理結果を保持している。
まず、図2に示す再利用制御部23のアドレス一致検出部ADETは、メモリアクセス要求MRQに含まれるアドレスA3を要求処理エントリ26a、26b、26c、26dのアドレス情報保持部AHLDが保持するアドレスと比較する。そして、アドレス一致検出部ADETは、メモリアクセス要求MRQに含まれるアドレスA3が、要求処理エントリ26cのアドレス情報保持部AHLDが保持するアドレスA3と一致することを検出する。アドレス一致検出部ADETは、アドレスが一致する要求処理エントリ26cを示すエントリ番号ENをエントリ決定部22に出力する。
エントリ決定部22は、エントリ番号ENに基づいて、要求処理エントリ26cにメモリアクセス要求MRQを処理させることを決定し、要求処理エントリ26cにメモリアクセス要求MRQと再利用フラグRFLGをセットする指示とを出力する。すなわち、エントリ決定部22は、アドレスの一致が検出された要求処理エントリ26cを選択する。
次に、図4(B)において、要求処理エントリ26cは、エントリ決定部22からの再利用フラグRFLGをセットする指示に基づいて、再利用フラグRFLGを”1”にセットする。要求処理エントリ26cは、再利用フラグRFLGがセットされたため、今回のメモリアクセス要求MRQの対象データおよびディレクトリ情報が、前回のメモリアクセス要求MRQに対する処理により保持済みであると判断する。そして、要求処理エントリ26cは、ディレクトリバッファ36が保持するディレクトリ情報”E 2”に基づいて、アドレスA3のデータ”1101”がノードND2のキャッシュメモリ部10のみに持ち出されていると判断する。
このように、要求処理エントリ26cは、記憶装置200からディレクトリ情報を読み出すことなく、ディレクトリバッファ36に保持されたディレクトリ情報に基づいて、データを持ち出している他ノードを判定することができる。したがって、記憶装置200へのリード要求の発行からディレクトリ情報を読み出すまでのメモリアクセスサイクルを省略することができる。この後、要求処理エントリ26cは、データを持ち出しているノードND2のプロセッサ100Aにデータ返送要求を発行する。ノードND2のキャッシュメモリ部10は、図3にM状態で示されるように、アドレスA3のデータ”1101”をデータ”0101”に更新している。このため、ノードND2のプロセッサ100Aは、データ返送要求に基づいて、更新済みのデータ”0101”をキャッシュメモリ部10から追い出し、追い出したデータ”0101”を含む応答をノードND1のプロセッサ100Aに発行する。なお、ノードND2のキャッシュメモリ部10において、データ”0101”が追い出されたエントリは、I状態に設定される。
次に、図4(C)において、要求処理エントリ26cは、データ返送要求に対応してノードND2から受信した応答に含まれるデータ”0101”をデータバッファ34に書き込む。ノードND2のキャッシュメモリ部10からアドレスA3に対応するデータ”0101”が追い出されたため、データを持ち出している他ノードNDは存在しない。このため、要求処理エントリ26cは、ディレクトリバッファ36内のディレクトリ情報を”E 2”から”I”に更新する。そして、要求処理エントリ26cは、更新されたデータ”0101”を含む応答をメモリアクセス要求の発行元に発行する。
要求処理エントリ26cは、データバッファ34に書き込んだ更新後のデータおよびディレクトリバッファ36に書き込んだディレクトリ情報を、記憶装置200に書き戻す。そして、要求処理エントリ26cにおけるメモリアクセス要求に対する処理が完了する。但し、開放された要求処理エントリ26cは、処理の結果を保持し続ける。すなわち、要求処理エントリ26cは、開放された後も、アクセス要求バッファ30のアドレス情報保持部AHLDにアドレスA3を保持し、データバッファ34にデータ”0101”を保持し、ディレクトリバッファ36にディレクトリ情報”I”を保持し続ける。
なお、再利用制御部23は、メモリアクセス要求に含まれるアドレスを保持する要求処理エントリ26が存在しない場合、無効なエントリ番号ENをエントリ決定部22に出力する。エントリ決定部22は、無効なエントリ番号ENを受信した場合、メモリアクセス要求を処理するために使用する要求処理エントリ26を、LRUまたはラウンドロビン等の手法を用いて決定する。
例えば、プロセッサ100Aのシステム制御部16は、アドレスA5に対するメモリアクセス要求MRQを受信し、エントリ決定部22は、無効なエントリ番号ENに基づいて要求処理エントリ26cの使用を決定したとする。この場合、図4(D)において、要求処理エントリ26cは、エントリ決定部22からの再利用フラグRFLGをセットする指示を受けないことに基づいて、再利用フラグRFLGを”0”にリセットする。そして、使用が決定された要求処理エントリ26は、メモリアクセス要求に含まれるアドレスに基づいて記憶装置200にアクセスし、記憶装置200から読み出されるデータおよびディレクトリ情報をデータバッファ34およびディレクトリバッファ36に格納する。そして、要求処理エントリ26は、ディレクトリ情報に基づいて、データの他ノードへの持ち出しを判定する。
例えば、図3に示すノードND1の記憶装置200におけるアドレスA1、A2、A3、A4を含むメモリアクセス要求が繰り返し発行される場合、図4に示す要求処理エントリ26a、26b、26c、26dが順に再利用される。この場合、ディレクトリ情報およびデータを記憶装置200から読み出すためのリード要求を記憶装置200に発行することなく、メモリアクセス要求に対するメモリアクセス処理を実行することができる。このように、プロセッサコア14が実行するプログラムが、ループ処理等を実行し、同じアドレスに対するメモリアクセス処理を繰り返し実行する場合、記憶装置200へのアクセスの頻度を、より効果的に下げることができる。
図5は、図2に示すシステム制御部16の動作の一例を示す。すなわち、図5は、情報処理装置の制御方法の一例を示す。図5に示す処理は、キャッシュメモリ制御部12がキャッシュミスを判定し、システム制御部16にメモリアクセス要求を出力したことに基づいて開始される。なお、システム制御部16は、メモリアクセス要求を、自ノードのキャッシュメモリ制御部12から受信し、あるいは、他ノードのプロセッサ100Aのキャッシュメモリ制御部12から受信する。
まず、ステップS10において、プロセッサインタフェース18は、メモリアクセス要求を受信し、受信したメモリアクセス要求を調停により選択し、選択したメモリアクセス要求をエントリ決定部22および再利用制御部23に出力する。
次に、ステップS20において、エントリ決定部22および再利用制御部23は、メモリアクセス要求の処理に使用する要求処理エントリ26を決定する決定処理を実行する。ステップS20では、要求処理エントリ26が既に保持している情報を再利用するか、使用していない要求処理エントリ26を新たに使用するかが決定される。決定処理の例は、図6に示される。
次に、ステップS30において、エントリ決定部22は、ステップS20で使用を決定した要求処理エントリ26のアクセス要求バッファ30にメモリアクセス要求を転送する。また、エントリ決定部22は、ステップS20で要求処理エントリ26を再利用することが決定された場合、再利用フラグRFLGをセットさせる指示を出力する。
次に、ステップS40において、システム制御部16は、メモリアクセス要求の対象のデータが他ノードに持ち出されているか否かの判定に使用する情報を取得する前処理を実行する。データ持ち出し判定の前処理の例は、図7に示される。
次に、ステップS50において、ステートマシン32は、ディレクトリバッファ36が保持するディレクトリ情報に基づいて、メモリアクセス要求の対象のデータが他ノードに持ち出されているか否かを判定する。データが他ノードに持ち出されている場合、処理はステップS60に移行され、データが他ノードに持ち出されていない場合、処理はステップS80に移行される。
なお、ステップS50によるデータの他ノードに持ち出されているか否かの判定は、ディレクトリバッファ36に保持されたディレクトリ情報に基づいて実行され、データバッファ34に保持されたデータは参照されない。このため、ディレクトリバッファ36に保持されたディレクトリ情報が再利用されればよく、データバッファ34に保持されたデータは、前回のトランザクションの完了に基づいて消去されてもよい。しかしながら、データバッファ34に保持されたデータを再利用しない場合、記憶装置200へのメモリアクセスが発生する場合がある。例えば、要求処理エントリ26の再利用が決定され、かつデータが他ノードに持ち出されていない場合、ステートマシン32は、メモリアクセス要求に対する応答データを得るために、記憶装置200にアクセスする。したがって、データバッファ34に保持されたデータをトランザクションの完了後に消去せずに保持することで、記憶装置200からのデータの読み出し処理を省略することができ、記憶装置2へのアクセスの頻度を低減することができる。
ステップS60において、ステートマシン32は、データを持ち出している他ノードのプロセッサ100Aにデータ返送要求を発行する。次に、ステップS70において、ステートマシン32は、データ返送要求の発行先のプロセッサ100Aからデータ返送要求に対する応答を受信し、応答にデータが含まれる場合、返送されたデータをデータバッファ34に保持する。
次に、ステップS80において、ステートマシン32は、データバッファ34が保持しているデータとともに応答を応答調停部20に出力する。応答調停部20は、ステートマシン32から受信したデータを含む応答を、メモリアクセス要求の要求元に発行する。
次に、ステップS90において、ステートマシン32は、データを持ち出したプロセッサ100Aによりデータが更新されている場合またはディレクトリ情報を更新した場合、記憶装置200にライト要求を発行する。そして、ステートマシン32は、データおよびディレクトリ情報を記憶装置200に書き込むことで更新する。
次に、ステップS100において、ステートマシン32は、メモリアクセス要求の処理を実行したステートマシン32を含む要求処理エントリ26を開放し、処理を終了する。
図6は、図5に示すステップS20の処理の一例を示す。まず、ステップS21において、再利用制御部23のアドレス一致検出部ADETは、メモリアクセス要求MRQに含まれるアドレスを各要求処理エントリ26のアドレス情報保持部AHLDが保持するアドレスと比較する。アドレス一致検出部ADETは、メモリアクセス要求MRQに含まれるアドレスと同じアドレスを保持する要求処理エントリ26を検出した場合、検出した要求処理エントリ26を示すエントリ番号ENをエントリ決定部22に出力する。アドレス一致検出部ADETは、メモリアクセス要求に含まれるアドレスと同じアドレスを保持する要求処理エントリ26が存在しない場合、無効なエントリ番号ENをエントリ決定部22に出力する。
次に、ステップS22において、エントリ決定部22は、アドレス一致検出部ADETからのエントリ番号ENに基づいて、メモリアクセス要求に含まれるアドレスと同じアドレスを保持する要求処理エントリ26が存在する場合、処理をステップS24に移行する。エントリ決定部22は、メモリアクセス要求MRQに含まれるアドレスと同じアドレスを保持する要求処理エントリ26が存在しない場合、処理をステップS26に移行する。
ステップS24において、エントリ決定部22は、アドレスが一致した要求処理エントリ26をメモリアクセス要求の処理に再利用することを決定する。次に、ステップS25において、エントリ決定部22は、再利用を決定した要求処理エントリ26の再利用フラグRFLGをセットすることを決定し、処理を終了する。なお、エントリ決定部22は、再利用フラグRFLGをセットすることを決定した場合、図4に示したステップS30において、再利用する要求処理エントリ26に、メモリアクセス要求とともに再利用フラグRFLGをセットする指示を示す情報を転送する。
一方、ステップS26において、エントリ決定部22は、使用されていない要求処理エントリ26の1つをメモリアクセス要求の処理に使用することを決定し、処理を終了する。
図7は、図5に示すステップS40の処理の一例を示す。まず、ステップS41において、エントリ決定部22からメモリアクセス要求とともに再利用フラグRFLGのセットを指示されたステートマシン32は、再利用フラグRFLGを”1”にセットする。一方、エントリ決定部22からメモリアクセス要求とともに再利用フラグRFLGのセットを指示されなかったステートマシン32は、再利用フラグRFLGを”0”にリセットする。
次に、ステップS42において、ステートマシン32は、再利用フラグRFLGが”1”にセットされている場合、記憶装置200にアクセスすることなくディレクトリバッファ36およびデータバッファ34に保持された情報を再利用するため、処理を終了する。一方、ステートマシン32は、再利用フラグRFLGが”0”にリセットされている場合、記憶装置200にアクセスし、ディレクトリ情報およびデータを記憶装置200から読み出すため、処理をステップS43に移行する。
ステップS43において、ステートマシン32は、ディレクトリバッファ36およびデータバッファ34を初期化する。次に、ステップS44において、ステートマシン32は、アクセス要求バッファ30に保持されたメモリアクセス要求に基づいて、メモリ制御部28を介して記憶装置200にリード要求を発行する。次に、ステップS45において、ステートマシン32は、記憶装置200から読み出したディレクトリ情報をディレクトリバッファ36に格納し、記憶装置200から読み出されたデータをデータバッファ34に格納し、処理を終了する。
以上、図2から図7に示す実施形態においても、図1に示す実施形態と同様の効果を得ることができる。すなわち、アドレス一致検出部ADETがアドレスの一致を検出した場合、要求処理エントリ26は、記憶装置200からディレクトリ情報を読み出すことなく、持ち出しノードを検出することができる。また、アドレスの一致時に対象データが他ノードNDに持ち出されている場合、記憶装置200にアクセスすることなくメモリアクセス要求に対する応答をメモリアクセス要求の発行元に発行することができる。さらに、ディレクトリキャッシュ等を設けることなく、アドレスの一致を検出することができ、対象データが他ノードNDに持ち出されているかを検出することができる。したがって、回路規模の増加を抑えて記憶装置200へのアクセスの頻度を低減することができ、メモリアクセス要求に対するメモリアクセスのレイテンシの増加を抑止することができる。この結果、システム制御部16がアドレス一致検出部ADETを持たない場合に比べて演算処理装置100Aおよび情報処理装置IPE2の性能を向上することができる。
さらに、図2から図7に示す実施形態では、各要求処理エントリ26は、メモリアクセス要求のアクセス対象である対象データを保持するとともに、メモリアクセス要求に対するトランザクションの完了後に対象データを保持し続けるデータバッファ34を有する。これにより、アドレス一致検出部ADETがアドレスの一致を検出し、かつ対象データの持ち出しがない場合、記憶装置200にアクセスすることなく、データバッファ34に保持されたデータを応答としてメモリアクセス要求の発行元に発行することができる。この結果、記憶装置2へのアクセスの頻度をさらに低減することができる。
ステートマシン32は、再利用フラグRFLGに設定された情報に基づいて、データの持ち出し先を検出するディレクトリ情報の格納先を決定することができる。すなわち、ステートマシン32は、ディレクトリバッファ36に保持されたディレクトリ情報を用いてデータの持ち出し先を検出するか、記憶装置200から読み出すディレクトリ情報を用いてデータの持ち出し先を検出するかを判断することができる。
図8は、情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す。図2に示した実施形態で説明した要素と同一または同様の要素については、同一の符号を付し、これ等については、詳細な説明は省略する。
図8に示す情報処理装置IPE3は、サーバ等であり、図2に示す情報処理装置IPE2のプロセッサ100Aの代わりにプロセッサ100Bを有する。プロセッサ100Bは、図2に示すシステム制御部16の代わりにシステム制御部16Bを有する。システム制御部16Bは、図2に示す再利用制御部23および複数の要求処理エントリ26の代わりに再利用制御部23Bおよび複数の要求処理エントリ26Bを有する。情報処理装置IPE3のその他の構成は、図2に示す情報処理装置IPE2の構成と同様である。
要求処理エントリ26Bは、図2に示す要求処理エントリ26にエラー検出部40および再利用抑止フラグ42を追加している。エラー検出部40は、要求処理エントリ26がメモリアクセス要求に対するメモリアクセス処理を実行する過程で発生するエラーを検出する。エラー検出部40は、エラーを検出した場合、再利用抑止フラグ42をセットする。再利用抑止フラグ42は、エラー検出部40がエラーを検出した場合にエラーの検出を示すエラー検出情報が格納されるエラー検出情報保持部の一例である。
例えば、エラー検出部40は、データバッファ34に保持されたデータの誤りを、データに含まれるエラー検出コードを用いて検出する。例えば、エラー検出部40は、ECC(Error Checking and Correction)手法を用いて、データの誤りを検出および訂正する。また、エラー検出部は、記憶装置200から読み出したディレクトリ情報と、データ返送要求に対する応答とに基づいて、ディレクトリ情報に矛盾(ディレクトリ矛盾エラー)が発生したことを検出する。例えば、ディレクトリ情報を用いて検出したデータの持ち出しノードにデータ返送要求を発行し、持ち出しノードからの応答が「データを持ち出していない」ことを示す場合、ディレクトリ矛盾エラーが検出される。さらに、エラー検出部40は、メモリアクセス要求に含まれるアドレスが自ノードの記憶装置200に割り当てられたアドレスの範囲に含まれない場合、アドレス例外エラーを検出する。また、エラー検出部40は、データ返送要求を発行してから応答を受信するまでの期間が所定期間を超えた場合、タイムアウトエラーを検出する。
再利用制御部23Bは、再利用抑止フラグ42がセットされている要求処理エントリ26Bのアドレス情報保持部AHLDに保持されたアドレスを、アドレス一致検出部ADETによるアドレスの一致検出の対象から除外する。換言すれば、再利用制御部23Bは、再利用抑止フラグ42がリセットされている要求処理エントリ26Bのアドレス情報保持部AHLDに保持されたアドレスを用いてアドレスの一致を検出する。
エラー検出部40がエラーを検出した場合、データバッファ34に保持されたデータまたはディレクトリバッファ36に保持されたディレクトリ情報等が正しくないおそれがあり、不定値となる。このため、エラーが発生した要求処理エントリ26Bを再利用した場合、メモリアクセス要求に対するメモリアクセス処理が正常に実行されないおそれがある。このため、エントリ決定部22は、再利用抑止フラグ42の設定値に基づいて、エラーが検出された要求処理エントリ26の再利用を抑止する。
図9は、図8に示すシステム制御部16Bの動作の一例を示す。すなわち、図9は、情報処理装置の制御方法の一例を示す。図9に示す処理は、キャッシュメモリ制御部12がキャッシュミスを判定し、システム制御部16Bにメモリアクセス要求を出力したことに基づいて開始される。図5と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。図9では、図5に示すステップS20の代わりにステップS20Bが実行され、図5に示すステップS90とステップS100との間にステップS95が追加される。図9におけるその他の処理は、図5と同様である。
ステップS20Bでは、システム制御部16Bは、メモリアクセス要求に対する処理を実行する要求処理エントリ26Bの再利用抑止フラグ42がセットされている場合、要求処理エントリ26Bの再利用を抑止する。ステップS20Bの例は、図10に示される。
ステップS95では、メモリアクセス要求に対する処理を実行する要求処理エントリ26Bは、エラー検出部40によるエラーの検出と、再利用抑止フラグ42の設定を実行する。ステップS95の例は、図11に示される。
図10は、図9に示すステップS20Bの処理の一例を示す。図6と同一または同様の処理については、同じ符号を付し、詳細な説明は省略する。図10では、図6に示すステップS22とステップS24との間にステップS23が追加される。図10におけるその他の処理は、図6と同様である。
ステップS23では、エントリ決定部22は、再利用抑止フラグ42が”1”にセットされていることに基づいて、再利用制御部23Bから無効なエントリ番号ENを受信した場合、処理をステップS26に移行する。これにより、エラー検出部40がエラーを検出した場合に、要求処理エントリ26Bが保持する情報が再利用されることを抑止することができ、誤った情報の再利用により、メモリアクセス要求に対する処理が正常に実行されないことを抑止することができる。この結果、エラー検出部40によるエラーの検出を実行しない場合に比べて、プロセッサ100Bおよび情報処理装置IPE3の信頼性を向上することができる。
一方、エントリ決定部22は、再利用抑止フラグ42が”0”にリセットされていることに基づいて、再利用制御部23Bからエントリ番号ENを受信した場合、処理をステップS24に移行する。ステップS24、S25の処理は、図6に示すステップS24、S25の処理と同じである。すなわち、アドレスの一致を検出した要求処理エントリ26Bが実行した前回のメモリアクセス処理でエラーが検出されなかった場合、要求処理エントリ26が保持する情報が再利用される。
ここで、再利用制御部23Bは、ステップS22でアドレスの一致を検出した要求処理エントリ26Bの再利用抑止フラグ42が”1”にセットされている場合、無効なエントリ番号ENをエントリ決定部22に出力する。再利用制御部23Bは、ステップS22でアドレスの一致を検出した要求処理エントリ26Bの再利用抑止フラグ42が”0”にセットされている場合、アドレスの一致を検出した要求処理エントリ26Bのエントリ番号ENをエントリ決定部22に出力する。
図11は、図9に示すステップS95の処理の一例を示す。まず、ステップS96において、エラー検出部40は、データバッファ34に保持されたデータ、ディレクトリバッファ36に保持されたディレクトリ情報およびステートマシン32からの制御ステート等の情報に基づいて、エラーの発生をチェックする。
次に、ステップS97において、エラー検出部40は、エラーを検出した場合、処理をステップS98に移行し、エラーを検出しない場合、処理をステップS99に移行する。
ステップS98において、エラー検出部40は、再利用抑止フラグ42を”1”にセットし、処理を終了する。ステップS99において、エラー検出部40は、再利用抑止フラグ42を”0”にリセットし、処理を終了する。
以上、図8から図11に示す実施形態においても、図1から図7に示す実施形態と同様の効果を得ることができる。すなわち、アドレス一致検出部ADETがアドレスの一致を検出した場合、要求処理エントリ26Bは、記憶装置200からディレクトリ情報を読み出すことなく、持ち出しノードを検出することができる。また、アドレスの一致時に対象データが他ノードNDに持ち出されている場合、記憶装置200にアクセスすることなくメモリアクセス要求に対する応答をメモリアクセス要求の発行元に発行することができる。さらに、ディレクトリキャッシュ等を設けることなく、アドレスの一致を検出することができ、対象データが他ノードNDに持ち出されているかを検出することができる。したがって、回路規模の増加を抑えて記憶装置200へのアクセスの頻度を低減することができ、メモリアクセス要求に対するメモリアクセスのレイテンシの増加を抑止することができる。この結果、システム制御部16Bがアドレス一致検出部ADETを持たない場合に比べて演算処理装置100Bおよび情報処理装置IPE3の性能を向上することができる。また、各要求処理エントリ26Bがデータバッファ34を有することにより、アドレスが一致し、かつ対象データの持ち出しがない場合、データバッファ34に保持されたデータを応答としてメモリアクセス要求の発行元に発行することができる。この結果、記憶装置2へのアクセスの頻度をさらに低減することができる。
さらに、図8から図11に示す実施形態では、エラー検出部40がエラーを検出した場合に、要求処理エントリ26Bが保持する情報が再利用されることを抑止することができる。このため、エラーが発生した要求処理エントリ26が保持する誤った情報が再利用されることを抑止することができ、メモリアクセス要求に対する処理が正常に実行されないことを抑止することができる。この結果、エラー検出部40によるエラーの検出を実行しない場合に比べて、プロセッサ100Bおよび情報処理装置IPE3の信頼性を向上することができる。
図12は、図1から図11に示す実施形態が適用されるサーバの一例を示す。図12に示すサーバSV1は、プロセッサと記憶装置とを含む所定数のマザーボードMBを有する。各マザーボードMBは、ノードに対応する。プロセッサは、図1、図2、図8に示す演算処理装置1、プロセッサ100A、100Bのいずれかである。プロセッサは、キャッシュメモリ部10、キャッシュメモリ制御部12および複数のプロセッサコア部14を含むプロセッサ部と、システム制御部とを有する。キャッシュメモリ部10は、図1に示すキャッシュメモリ部4に対応し、キャッシュメモリ制御部12は、図1に示すキャッシュメモリ制御部5に対応し、プロセッサコア部14は、図1に示す演算処理部3に対応する。システム制御部は、図1、図2、図8に示すメモリアクセス制御部6、システム制御部16、16Bのいずれかである。システム制御部は、システムバスSBUSを介して互いに接続される。サーバSV1は、情報処理装置の一例である。
図13は、サーバの別の例を示す。図13に示すサーバSV2は、複数のプロセッサとシステム制御部と記憶装置200とを含むマザーボードMBを有する。プロセッサは、図2、図8に示すキャッシュメモリ部10、キャッシュメモリ制御部12(または12C)および複数のプロセッサコア部14を含む。また、プロセッサは、図1に示す演算処理部3、キャッシュメモリ部4およびキャッシュメモリ制御部5を有してもよい。システム制御部は、複数のプロセッサに共通に設けられる。システム制御部は、図1、図2、図8に示すメモリアクセス制御部6、システム制御部16、16Bのいずれかと同様の構成を有する。但し、システム制御部のプロセッサインタフェースは、システムバスを介することなく各プロセッサのキャッシュメモリ制御部に接続される。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。