JP2017117203A - 情報処理装置、演算処理装置および情報処理装置の制御方法 - Google Patents

情報処理装置、演算処理装置および情報処理装置の制御方法 Download PDF

Info

Publication number
JP2017117203A
JP2017117203A JP2015251903A JP2015251903A JP2017117203A JP 2017117203 A JP2017117203 A JP 2017117203A JP 2015251903 A JP2015251903 A JP 2015251903A JP 2015251903 A JP2015251903 A JP 2015251903A JP 2017117203 A JP2017117203 A JP 2017117203A
Authority
JP
Japan
Prior art keywords
unit
memory access
request
data
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2015251903A
Other languages
English (en)
Other versions
JP6613874B2 (ja
Inventor
雅紀 日下田
Masaki Higeta
雅紀 日下田
秀和 小佐野
Hidekazu Osano
秀和 小佐野
隆宏 野尻
Takahiro Nojiri
隆宏 野尻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015251903A priority Critical patent/JP6613874B2/ja
Publication of JP2017117203A publication Critical patent/JP2017117203A/ja
Application granted granted Critical
Publication of JP6613874B2 publication Critical patent/JP6613874B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】回路規模の増加を抑えて記憶装置へのアクセスの頻度を低減する情報処理装置を提供する。
【解決手段】複数のノード内の演算処理装置1のメモリアクセス制御部6は、メモリアクセス要求のアドレスと要求処理部9に保持されたメモリアクセス要求のアドレスとの一致を検出するアドレス一致検出部7と、アドレスの一致が検出された要求処理部を選択するエントリ選択部8と、を有する。要求処理部は、アドレス保持部9aと、メモリアクセス要求の対象データを持ち出した他ノードである持ち出しノードを識別するディレクトリ情報を保持するディレクトリ保持部9bと、エントリ選択部による選択に基づいてディレクトリ保持部に保持されたディレクトリ情報を用いて持ち出しノードが存在するかを検出し、持ち出しノードが存在する場合、持ち出しノードに対象データの返送を要求するデータ返送要求を発行する処理制御部9cと、を有する。
【選択図】図1

Description

本発明は、情報処理装置、演算処理装置および情報処理装置の制御方法に関する。
近時、演算処理装置と主記憶装置とをそれぞれ有する複数のノードを互いに接続し、複数のノードの主記憶装置を演算処理装置で共有するマルチプロセッサシステムが提案されている。この種のマルチプロセッサシステムでは、自ノードの主記憶装置に保持されたデータを他ノードに持ち出したことを示すディレクトリ情報を保持することで、キャッシュメモリの更新状態が管理される。これにより、主記憶装置が保持するデータと各ノードのキャッシュメモリが保持するデータとの整合性または一貫性(キャッシュコヒーレンシ)が維持される。
また、主記憶装置から読み出したディレクトリ情報をアドレスに対応付けて保持するディレクトリキャッシュをシステムコントローラ等に設けることで、主記憶装置へのアクセスの頻度を低減し、アクセス効率を向上する手法が提案されている。この種のシステムコントローラは、ディレクトリキャッシュに保持された情報にエラーを検出した場合、ディレクトリ情報を用いずに、全ての演算処理部にスヌープ要求を発行するブロードキャストを実行する(例えば、特許文献1参照)。あるいは、この種のシステムコントローラは、ディレクトリキャッシュに保持された情報にエラーを検出した場合、ディレクトリキャッシュのその後のアクセスをキャッシュミスと判定する(例えば、特許文献2参照)。
さらに、複数のノードのそれぞれに設けられ、データを転送するパケットをノード間で送受信する制御装置は、演算処理装置から受ける2つのデータが同じデータペイロードに含まれる場合、一方のデータのみをバッファに保持する(例えば、特許文献3参照)。
国際公開第2012/124094号 特開2003−162447号公報 国際公開第2010/052753号
ディレクトリキャッシュは、ディレクトリ情報を保持する領域以外に、アクセスアドレスの一部を保持するタグ領域等を有しており、データ用のキャッシュメモリと同様の回路規模を有する。このため、ディレクトリキャッシュを採用する場合、主記憶装置へのアクセスの頻度は低減するが、回路規模が増加してしまう。
1つの側面では、本件開示の情報処理装置、演算処理装置および情報処理装置の制御方法は、回路規模の増加を抑えて記憶装置へのアクセスの頻度を低減することを目的とする。
一つの観点によれば、データを記憶する記憶装置と、記憶装置に接続され、演算処理を実行する演算処理部と演算処理において処理するデータを保持するキャッシュメモリ部とキャッシュミスの発生時にメモリアクセス要求を発行するキャッシュメモリ制御部と演算処理部が発行したメモリアクセス要求に基づいてメモリアクセス処理と記憶装置が記憶するデータとキャッシュメモリ部が保持するデータとの整合性を維持する処理とを実行する複数の要求処理部を含むメモリアクセス制御部とを有する演算処理装置とを含むノードを複数有する情報処理装置において、メモリアクセス制御部は、メモリアクセス要求に含まれるアドレスが複数の要求処理部のいずれかに保持されたメモリアクセス要求に含まれるアドレスと一致するかを検出するアドレス一致検出部と、アドレス一致検出部によりアドレスの一致が検出された要求処理部を選択するエントリ選択部を有し、複数の要求処理部の各々は、メモリアクセス要求に含まれるアドレスを保持するアドレス保持部と、メモリアクセス要求に基づいて記憶装置から読み出された情報であって、メモリアクセス要求のアクセス対象である対象データを持ち出した他ノードである持ち出しノードを識別するディレクトリ情報を保持するディレクトリ保持部と、エントリ選択部により選択された場合、ディレクトリ保持部に保持されたディレクトリ情報を用いて持ち出しノードが存在するかを検出し、持ち出しノードが存在する場合、持ち出しノードに対象データの返送を要求するデータ返送要求を発行する処理制御部を有する。
別の観点によれば、情報処理装置が有する複数のノードの各々に記憶装置とともに設けられ、演算処理を実行する演算処理部と演算処理において処理するデータを保持するキャッシュメモリ部とキャッシュミスの発生時にメモリアクセス要求を発行するキャッシュメモリ制御部と演算処理部が発行したメモリアクセス要求に基づいてメモリアクセス処理と記憶装置が記憶するデータとキャッシュメモリ部が保持するデータとの整合性を維持する処理とを実行する複数の要求処理部を含むメモリアクセス制御部とを有する演算処理装置において、メモリアクセス制御部は、メモリアクセス要求に含まれるアドレスが複数の要求処理部のいずれかに保持されたメモリアクセス要求に含まれるアドレスと一致するかを検出するアドレス一致検出部と、アドレス一致検出部によりアドレスの一致が検出された要求処理部を選択するエントリ選択部を有し、複数の要求処理部の各々は、メモリアクセス要求に含まれるアドレスを保持するアドレス保持部と、メモリアクセス要求に基づいて記憶装置から読み出された情報であって、メモリアクセス要求のアクセス対象である対象データを持ち出した他ノードである持ち出しノードを識別するディレクトリ情報を保持するディレクトリ保持部と、エントリ選択部により選択された場合、ディレクトリ保持部に保持されたディレクトリ情報を用いて持ち出しノードが存在するかを検出し、持ち出しノードが存在する場合、持ち出しノードに対象データの返送を要求するデータ返送要求を発行する処理制御部を有する。
さらなる別の観点によれば、データを記憶する記憶装置と、記憶装置に接続され、演算処理を実行する演算処理部と演算処理において処理するデータを保持するキャッシュメモリ部とキャッシュミスの発生時にメモリアクセス要求を発行するキャッシュメモリ制御部と演算処理部が発行したメモリアクセス要求に基づいてメモリアクセス処理と記憶装置が記憶するデータとキャッシュメモリ部が保持するデータとの整合性を維持する処理とを実行する複数の要求処理部を含むメモリアクセス制御部とを有する演算処理装置とを含むノードを複数有する情報処理装置の制御方法において、メモリアクセス制御部が有するアドレス一致検出部が、メモリアクセス要求に含まれるアドレスが複数の要求処理部のいずれかに保持されたメモリアクセス要求に含まれるアドレスと一致するかを検出し、メモリアクセス制御部が有するエントリ選択部が、アドレス一致検出部によりアドレスの一致が検出された要求処理部を選択し、複数の要求処理部の各々が有するアドレス保持部が、メモリアクセス要求に含まれるアドレスを保持し、複数の要求処理部の各々が有するディレクトリ保持部が、メモリアクセス要求に基づいて記憶装置から読み出された情報であって、メモリアクセス要求のアクセス対象である対象データを持ち出した他ノードである持ち出しノードを識別するディレクトリ情報を保持し、複数の要求処理部の各々が有する処理制御部が、エントリ選択部により選択された場合、ディレクトリ保持部に保持されたディレクトリ情報を用いて持ち出しノードが存在するかを検出し、持ち出しノードが存在する場合、持ち出しノードに対象データの返送を要求するデータ返送要求を発行する。
本件開示の情報処理装置、演算処理装置および情報処理装置の制御方法は、回路規模の増加を抑えて記憶装置へのアクセスの頻度を低減することができる。
情報処理装置、演算処理装置および情報処理装置の制御方法の一実施形態を示す図である。 情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す図である。 図2に示す記憶装置およびキャッシュメモリ部に保持されるデータの一例を示す図である。 図2に示す要求処理エントリにおいて、メモリアクセス要求に対する処理を実行する場合の状態の変化の一例を示す図である。 図2に示すシステム制御部の動作の一例を示す図である。 図5に示すステップS20の処理の一例を示す図である。 図5に示すステップS40の処理の一例を示す図である。 情報処理装置、演算処理装置および情報処理装置の制御方法の別の実施形態を示す図である。 図8に示すシステム制御部の動作の一例を示す図である。 図9に示すステップS20Bの処理の一例を示す図である。 図9に示すステップS95の処理の一例を示す図である。 図1から図11に示す実施形態が適用されるサーバの一例を示す図である。 サーバの別の例を示す図である。
以下、図面を用いて実施形態を説明する。
図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のいずれかと同様の構成を有する。但し、システム制御部のプロセッサインタフェースは、システムバスを介することなく各プロセッサのキャッシュメモリ制御部に接続される。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
1…演算処理装置;2…記憶装置;3…演算処理部;4…キャッシュメモリ部;5…キャッシュメモリ制御部;6…メモリアクセス制御部;7…アドレス一致検出部;8…エントリ選択部;9…要求処理部;9a…アドレス保持部;9b…ディレクトリ保持部;9c…処理制御部;10…キャッシュメモリ部;12…キャッシュメモリ制御部;14…プロセッサコア部;16、16B…システム制御部;18…プロセッサインタフェース;20…応答調停部;22…エントリ決定部;23…再利用制御部;24…制御要求発行部;26、26B…要求処理エントリ;28…メモリ制御部;30…アクセス要求バッファ;32…ステートマシン;34…データバッファ;36…ディレクトリバッファ;38…持ち出し先検出部;40…エラー検出部;42…再利用抑止フラグ;100A、100B…プロセッサ;200…記憶装置;ADET…アドレス一致検出部;AHLD…アドレス情報保持部;CRQUE…コヒーレンシ制御要求キュー;IPE1、IPE2、IPE3…情報処理装置;MB…マザーボード;MRQUE…メモリ要求キュー;ND(ND1、ND2)…ノード;RFLG…再利用フラグ;SBUS…システムバス;SV1、SV2…サーバ

Claims (8)

  1. データを記憶する記憶装置と、前記記憶装置に接続され、演算処理を実行する演算処理部と前記演算処理において処理するデータを保持するキャッシュメモリ部とキャッシュミスの発生時にメモリアクセス要求を発行するキャッシュメモリ制御部と前記演算処理部が発行したメモリアクセス要求に基づいてメモリアクセス処理と前記記憶装置が記憶するデータと前記キャッシュメモリ部が保持するデータとの整合性を維持する処理とを実行する複数の要求処理部を含むメモリアクセス制御部とを有する演算処理装置とを含むノードを複数有する情報処理装置において、
    前記メモリアクセス制御部は、
    メモリアクセス要求に含まれるアドレスが前記複数の要求処理部のいずれかに保持されたメモリアクセス要求に含まれるアドレスと一致するかを検出するアドレス一致検出部と、
    前記アドレス一致検出部によりアドレスの一致が検出された要求処理部を選択するエントリ選択部を有し、
    前記複数の要求処理部の各々は、
    メモリアクセス要求に含まれるアドレスを保持するアドレス保持部と、
    メモリアクセス要求に基づいて前記記憶装置から読み出された情報であって、メモリアクセス要求のアクセス対象である対象データを持ち出した他ノードである持ち出しノードを識別するディレクトリ情報を保持するディレクトリ保持部と、
    前記エントリ選択部により選択された場合、前記ディレクトリ保持部に保持されたディレクトリ情報を用いて前記持ち出しノードが存在するかを検出し、前記持ち出しノードが存在する場合、前記持ち出しノードに対象データの返送を要求するデータ返送要求を発行する処理制御部を有することを特徴とする情報処理装置。
  2. 前記複数の要求処理部の各々はさらに、メモリアクセス要求に基づいて前記記憶装置から読み出されたデータを保持するデータ保持部を有し、
    前記エントリ選択部により選択された要求処理部の処理制御部は、前記持ち出しノードを検出しない場合、前記データ保持部に保持されたデータを含む応答をメモリアクセス要求の発行元に発行することを特徴とする請求項1記載の情報処理装置。
  3. 前記複数の要求処理部の各々はさらに、
    メモリアクセス要求に対するメモリアクセス処理で発生したエラーを検出するエラー検出部と、
    前記エラー検出部によりエラーが検出されたことを示すエラー検出情報が格納されるエラー検出情報保持部を有し、
    前記アドレス一致検出部は、エラー検出情報を保持したエラー検出情報保持部を含む要求処理部のアドレス保持部に保持されたアドレスをアドレスの一致検出の対象から除外することを特徴とする請求項1または請求項2記載の情報処理装置。
  4. 前記複数の要求処理部の各々は、メモリアクセス要求に対するメモリアクセス処理の完了後に、前記アドレス保持部に保持されたアドレスと、前記ディレクトリ保持部に保持されたディレクトリ情報とを消去することなく保持することを特徴とする請求項1ないし請求項3のいずれか1項記載の情報処理装置。
  5. 前記エントリ選択部は、前記アドレス一致検出部がアドレスの一致を検出しない場合、メモリアクセス処理を実行していない要求処理部のいずれか1つを選択し、
    前記アドレス一致検出部がアドレスの一致を検出しないことに基づいて前記エントリ選択部により選択された要求処理部の処理制御部は、メモリアクセス要求に基づいて前記記憶装置からディレクトリ情報を読み出し、読み出したディレクトリ情報を前記ディレクトリ保持部に格納し、前記ディレクトリ保持部に格納したディレクトリ情報を用いて前記持ち出しノードを検出することを特徴とする請求項1ないし請求項4のいずれか1項記載の情報処理装置。
  6. 前記複数の要求処理部の各々はさらに、前記アドレス一致検出部がアドレスの一致を検出した場合に、アドレスの一致を示すアドレス一致情報が設定されるアドレス一致情報保持部を有し、
    前記エントリ選択部により選択された要求処理部は、前記アドレス一致情報保持部に設定されたアドレス一致情報に基づいて、前記ディレクトリ保持部または前記記憶装置のいずれかからディレクトリ情報を読み出すことを特徴とする請求項5記載の情報処理装置。
  7. 情報処理装置が有する複数のノードの各々に記憶装置とともに設けられ、演算処理を実行する演算処理部と前記演算処理において処理するデータを保持するキャッシュメモリ部とキャッシュミスの発生時にメモリアクセス要求を発行するキャッシュメモリ制御部と前記演算処理部が発行したメモリアクセス要求に基づいてメモリアクセス処理と前記記憶装置が記憶するデータと前記キャッシュメモリ部が保持するデータとの整合性を維持する処理とを実行する複数の要求処理部を含むメモリアクセス制御部とを有する演算処理装置において、
    前記メモリアクセス制御部は、
    メモリアクセス要求に含まれるアドレスが前記複数の要求処理部のいずれかに保持されたメモリアクセス要求に含まれるアドレスと一致するかを検出するアドレス一致検出部と、
    前記アドレス一致検出部によりアドレスの一致が検出された要求処理部を選択するエントリ選択部を有し、
    前記複数の要求処理部の各々は、
    メモリアクセス要求に含まれるアドレスを保持するアドレス保持部と、
    メモリアクセス要求に基づいて前記記憶装置から読み出された情報であって、メモリアクセス要求のアクセス対象である対象データを持ち出した他ノードである持ち出しノードを識別するディレクトリ情報を保持するディレクトリ保持部と、
    前記エントリ選択部により選択された場合、前記ディレクトリ保持部に保持されたディレクトリ情報を用いて前記持ち出しノードが存在するかを検出し、前記持ち出しノードが存在する場合、前記持ち出しノードに対象データの返送を要求するデータ返送要求を発行する処理制御部を有することを特徴とする演算処理装置。
  8. データを記憶する記憶装置と、前記記憶装置に接続され、演算処理を実行する演算処理部と前記演算処理において処理するデータを保持するキャッシュメモリ部とキャッシュミスの発生時にメモリアクセス要求を発行するキャッシュメモリ制御部と前記演算処理部が発行したメモリアクセス要求に基づいてメモリアクセス処理と前記記憶装置が記憶するデータと前記キャッシュメモリ部が保持するデータとの整合性を維持する処理とを実行する複数の要求処理部を含むメモリアクセス制御部とを有する演算処理装置とを含むノードを複数有する情報処理装置の制御方法において、
    前記メモリアクセス制御部が有するアドレス一致検出部が、メモリアクセス要求に含まれるアドレスが前記複数の要求処理部のいずれかに保持されたメモリアクセス要求に含まれるアドレスと一致するかを検出し、
    前記メモリアクセス制御部が有するエントリ選択部が、前記アドレス一致検出部によりアドレスの一致が検出された要求処理部を選択し、
    前記複数の要求処理部の各々が有するアドレス保持部が、メモリアクセス要求に含まれるアドレスを保持し、
    前記複数の要求処理部の各々が有するディレクトリ保持部が、メモリアクセス要求に基づいて前記記憶装置から読み出された情報であって、メモリアクセス要求のアクセス対象である対象データを持ち出した他ノードである持ち出しノードを識別するディレクトリ情報を保持し、
    前記複数の要求処理部の各々が有する処理制御部が、前記エントリ選択部により選択された場合、前記ディレクトリ保持部に保持されたディレクトリ情報を用いて前記持ち出しノードが存在するかを検出し、前記持ち出しノードが存在する場合、前記持ち出しノードに対象データの返送を要求するデータ返送要求を発行することを特徴とする情報処理装置の制御方法。
JP2015251903A 2015-12-24 2015-12-24 情報処理装置、演算処理装置および情報処理装置の制御方法 Expired - Fee Related JP6613874B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015251903A JP6613874B2 (ja) 2015-12-24 2015-12-24 情報処理装置、演算処理装置および情報処理装置の制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015251903A JP6613874B2 (ja) 2015-12-24 2015-12-24 情報処理装置、演算処理装置および情報処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2017117203A true JP2017117203A (ja) 2017-06-29
JP6613874B2 JP6613874B2 (ja) 2019-12-04

Family

ID=59234628

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015251903A Expired - Fee Related JP6613874B2 (ja) 2015-12-24 2015-12-24 情報処理装置、演算処理装置および情報処理装置の制御方法

Country Status (1)

Country Link
JP (1) JP6613874B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060230237A1 (en) * 2005-04-07 2006-10-12 Fujitsu Limited Method and system for maintaining cache coherence of distributed shared memory system
JP2007004833A (ja) * 2006-10-10 2007-01-11 Fujitsu Ltd マルチプロセッサ装置及びそのメモリアクセス方法
US20090327616A1 (en) * 2008-06-30 2009-12-31 Patrick Conway Snoop filtering mechanism
WO2010100679A1 (ja) * 2009-03-06 2010-09-10 富士通株式会社 コンピュータシステム、制御方法、記録媒体及び制御プログラム
US20150067269A1 (en) * 2012-12-17 2015-03-05 Inspur Electronic Information Industry Co., Ltd Method for building multi-processor system with nodes having multiple cache coherency domains

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060230237A1 (en) * 2005-04-07 2006-10-12 Fujitsu Limited Method and system for maintaining cache coherence of distributed shared memory system
JP2006293550A (ja) * 2005-04-07 2006-10-26 Fujitsu Ltd キャッシュコヒーレンス管理装置およびキャッシュコヒーレンス管理方法
JP2007004833A (ja) * 2006-10-10 2007-01-11 Fujitsu Ltd マルチプロセッサ装置及びそのメモリアクセス方法
US20090327616A1 (en) * 2008-06-30 2009-12-31 Patrick Conway Snoop filtering mechanism
JP2011527037A (ja) * 2008-06-30 2011-10-20 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド スヌープフィルタリングメカニズム
WO2010100679A1 (ja) * 2009-03-06 2010-09-10 富士通株式会社 コンピュータシステム、制御方法、記録媒体及び制御プログラム
US20120005439A1 (en) * 2009-03-06 2012-01-05 Fujitsu Limited Computer system having a cache memory and control method of the same
US20150067269A1 (en) * 2012-12-17 2015-03-05 Inspur Electronic Information Industry Co., Ltd Method for building multi-processor system with nodes having multiple cache coherency domains
JP2015530651A (ja) * 2012-12-17 2015-10-15 インスパー・エレクトロニック・インフォメーション・インダストリー・コーポレーション・リミテッド マルチプロセサシステムおよびマルチプロセサシステムの構成方法

Also Published As

Publication number Publication date
JP6613874B2 (ja) 2019-12-04

Similar Documents

Publication Publication Date Title
US11803486B2 (en) Write merging on stores with different privilege levels
US7827354B2 (en) Victim cache using direct intervention
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
JP4474570B2 (ja) キャッシュコヒーレンシ制御方法
US7447845B2 (en) Data processing system, processor and method of data processing in which local memory access requests are serviced by state machines with differing functionality
US8301843B2 (en) Data cache block zero implementation
JP4119380B2 (ja) マルチプロセッサシステム
CN106897230B (zh) 用于处理原子更新操作的装置和方法
EP2105838B1 (en) Cache control apparatus, information processing apparatus, and cache control method
JP5286796B2 (ja) メモリ制御装置
US9606923B2 (en) Information processing device with shared memory, memory order guarantee method using counters fence instructions in relation to cache-oriented requests, and recording medium storing program
EP2339472B1 (en) Arithmetic processing unit, information processing device, and cache memory control method
JP3550092B2 (ja) キャッシュ装置及び制御方法
JP5021978B2 (ja) マルチプロセッサシステム及びその動作方法
JP2020003959A (ja) 情報処理装置、演算処理装置及び情報処理装置の制御方法
US7353341B2 (en) System and method for canceling write back operation during simultaneous snoop push or snoop kill operation in write back caches
JP6613874B2 (ja) 情報処理装置、演算処理装置および情報処理装置の制御方法
US20180335829A1 (en) Processing device and control method of processing device
JP2001043133A (ja) マルチプロセッサ・システムにおいてライトスルー・ストア・オペレーションでキャッシュ・コヒーレンシを維持するための方法およびシステム
TWI243999B (en) Apparatus and related method for maintaining read caching data of south bridge with north bridge
JP6583046B2 (ja) 制御装置、情報処理装置および情報処理装置の制御方法
JP6493187B2 (ja) 情報処理装置、演算処理装置および情報処理装置の制御方法
JP6631317B2 (ja) 演算処理装置、情報処理装置および情報処理装置の制御方法
JP4948141B2 (ja) バス制御装置
EP3332329A1 (en) Device and method for prefetching content to a cache memory

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7426

Effective date: 20170803

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20170803

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20170804

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20180219

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20180219

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180912

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190409

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190531

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191008

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191021

R150 Certificate of patent or registration of utility model

Ref document number: 6613874

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees