(57)【要約】【課題】複数のＣＰＵノードが相互に接続された情報処理装置において、複数のＣＰＵノード間のデータ転送に係るレイテンシを短くする。【解決手段】キャッシュメモリと、メモリが記憶する対象データをキャッシュメモリにロードするロード要求を発行する演算処理部と、受信したロード要求に対応する処理を行うキャッシュ制御部と、キャッシュ制御部からの要求に対応する対象データとそれが最新であるかを示す情報を含むヘッダ情報とをメモリに対して要求するとともにメモリが応答したヘッダ情報を受信するメモリ管理部と、キャッシュメモリへのデータの書き込み制御を管理するとともに、要求に基づいてメモリが応答した対象データを受信するデータ管理部を有し、メモリ管理部を介さずに、メモリからＣＰＵノードが有するデータ管理部に要求されたデータを送信するようにし、データ転送に係るレイテンシを短くする。【選択図】図１
2014048830.tif 000002
【特許請求の範囲】
【請求項１】
主記憶装置に接続する演算処理装置において、
キャッシュメモリと、
前記主記憶装置が記憶する対象データを前記キャッシュメモリにロードするロード要求を発行する演算処理部と、
前記演算処理部から受信したロード要求に対応する処理を行う制御部と、
前記制御部からの要求に対応する対象データと、対象データが最新であるかを示す情報を含むヘッダ情報とを、前記主記憶装置に対して要求するとともに、前記主記憶装置に対する要求に基づいて前記主記憶装置が応答したヘッダ情報を受信するメモリ管理部と、
前記ロード要求により取得したデータの前記キャッシュメモリへの書き込み制御を管理するとともに、前記主記憶装置に対する要求に基づいて前記主記憶装置が応答した対象データを受信するデータ管理部を有することを特徴とする演算処理装置。
【請求項２】
前記メモリ管理部は、前記主記憶装置が応答した前記ヘッダ情報が他の演算処理装置のキャッシュメモリに最新の対象データがあることを示す場合には、当該他の演算処理装置に対して対象データとヘッダ情報を要求するとともに、前記他の演算処理装置に対する要求に基づいて前記他の演算処理装置が応答したヘッダ情報を受信し、
前記データ管理部は、前記他の演算処理装置に対する要求に基づいて前記他の演算処理装置が応答した対象データを受信することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記ヘッダ情報に複数のフラグを有し、
前記データ管理部は、前記メモリ管理部から供給される前記ヘッダ情報の前記複数のフラグの値が所定の組み合わせである場合に、当該ヘッダ情報に対応する前記対象データの前記キャッシュメモリへの書き込みを指示することを特徴とする請求項１又は２記載の演算処理装置。
【請求項４】
前記データ管理部は、前記メモリ管理部から供給される前記ヘッダ情報を保持する第１の保持部と、
前記主記憶装置が応答した対象データを保持する第２の保持部と、
前記第１の保持部に保持された前記ヘッダ情報の前記複数のフラグの値が所定の組み合わせであるか否かを判定する判定回路と、
前記判定回路での判定結果に応じて、前記第２の保持部に保持された前記対象データを出力する出力回路とを有することを特徴とする請求項３記載の演算処理装置。
【請求項５】
前記メモリ管理部は、前記対象データ及び前記ヘッダ情報をともに格納する第１のエントリと、前記対象データを格納せずに前記ヘッダ情報を格納する第２のエントリとを有し、
前記ロード要求を発行した演算処理装置に接続された前記主記憶装置が、当該ロード要求により要求される対象データを有している場合には、当該ロード要求について前記第２のエントリを割り当てることを特徴とする請求項１〜４の何れか１項に記載の演算処理装置。
【請求項６】
キャッシュメモリと、
主記憶装置が記憶する対象データを前記キャッシュメモリにロードするロード要求を発行する演算処理部と、
前記演算処理部から受信したロード要求に対応する処理を行う制御部と、
前記制御部からの要求に対応する対象データと、対象データが最新であるかを示す情報を含むヘッダ情報とを、前記主記憶装置に対して要求するとともに、前記主記憶装置に対する要求に基づいて前記主記憶装置が応答したヘッダ情報を受信するメモリ管理部と、
前記ロード要求により取得したデータの前記キャッシュメモリへの書き込み制御を管理するとともに、前記主記憶装置に対する要求に基づいて前記主記憶装置が応答した対象データを受信するデータ管理部を有する演算処理装置と、
前記演算処理装置に接続され、前記演算処理装置の前記メモリ管理部からの要求に対して前記対象データを前記演算処理装置の前記データ管理部に送信し、前記ヘッダ情報を前記演算処理装置の前記メモリ管理部に送信する主記憶装置とを備えることを特徴とする情報処理装置。
【請求項７】
主記憶装置に接続し、キャッシュメモリを有する演算処理装置の制御方法において、
前記演算処理装置が有する演算処理部が、前記主記憶装置が記憶する対象データを前記キャッシュメモリにロードするロード要求を発行し、
前記演算処理装置が有する制御部が、前記演算処理部から受信したロード要求に対応する処理を行い、
前記演算処理装置が有するメモリ管理部が、前記制御部からの要求に対応する対象データと、対象データが最新であるかを示す情報を含むヘッダ情報とを、前記主記憶装置に対して要求するとともに、前記主記憶装置に対する要求に基づいて前記主記憶装置が応答したヘッダ情報を受信し、
前記演算処理装置が有するデータ管理部が、前記ロード要求により取得したデータの前記キャッシュメモリへの書き込み制御を管理するとともに、前記主記憶装置に対する要求に基づいて前記主記憶装置が応答した対象データを受信することを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、情報処理装置、及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
複数の演算処理装置としてのＣＰＵ（Central Processing Unit）ノードが相互に接続され、各ＣＰＵノードに属する主記憶装置としてのメモリを複数のＣＰＵノードの各々が共用する情報処理装置がある（例えば、特許文献１、２参照）。以下、図１４に示すような演算処理部（ＣＯＲＥ部）が発行したロード要求を受けるキャッシュ制御部等で構成されたｃｃＮＵＭＡ（cache coherent Non Uniform Memory Access、分散共有メモリ）方式のノード間データ転送方式について考える。
【０００３】
図１４において、ＣＰＵノード１０（１０Ａ、１０Ｂ、１０Ｃ）の各々は、ロード要求等を発行する演算処理部（ＣＯＲＥ部）１１及び二次キャッシュ部１２を有する。なお、演算処理部（ＣＯＲＥ部）１１には、一次キャッシュメモリが含まれている。二次キャッシュ部１２は、キャッシュ制御部１３、キャッシュメモリ部１４、キャッシュデータ管理部１５、メモリ管理部１６、及びリモート管理部１７を有する。
【０００４】
キャッシュ制御部１３は、あらかじめ決められた優先順位に基づいて１つの要求を選択し、選択した要求に対応した処理を行う。キャッシュメモリ部１４は、主記憶領域であるメモリ１８に格納されているデータブロックを保持する二次キャッシュメモリである。キャッシュデータ管理部１５は、要求元のＣＰＵノード１０の資源でキャッシュメモリへの書き込みに係るアドレスやデータの管理を行う。メモリ管理部１６は、ホームとして管理する主記憶領域であるメモリ１８の情報を管理している。リモート管理部１７は、他のＣＰＵノードのメモリ管理部１６からの要求を受け、その要求に対して自ＣＰＵノードのキャッシュメモリにヒットしたときにデータブロックを送信する。
【０００５】
演算処理部（ＣＯＲＥ部）１１により主記憶領域にロード要求が発生した場合、キャッシュ制御部１３は、要求されたデータブロックがどのＣＰＵノード１０に属するメモリ１８に格納されているかを、システムで定められたアドレス空間定義を基に判断する。例えば、アドレス空間定義のあるアドレスフィールドにＣＰＵ−ＩＤを割り当て、そのＣＰＵ−ＩＤに基づいて、どのＣＰＵノード１０に属するメモリ１８に格納されているかを判断する。また、各データブロックはキャッシュラインサイズ単位で管理されており、メモリ１８のすべてのデータブロックはディレクトリ情報（ヘッダ情報）を有する。ディレクトリ情報には、データブロックが最新のものであるか否かを示す情報やどのＣＰＵノード１０のキャッシュメモリに存在しているかを示す情報などを含む。
【０００６】
図１４に示した情報処理装置でのデータ転送経路について説明する。以下に説明する例では、ＣＰＵ−Ａノード１０Ａの演算処理部（ＣＯＲＥ部）１１により主記憶領域にロード要求が発生したものとする。なお、以下に示す図１５〜図１７においては、データ転送に携る機能部を図示し、その他の機能部については図示を省略している。
【０００７】
図１５は、ロード要求を発行したＣＰＵ−Ａノード１０Ａに属するメモリ１８Ａにデータを有していた場合の転送経路を示す図である。ロード要求Ｒ１０１は、キャッシュ制御部１３Ａによりキャッシュデータ管理部１５Ａに送信され、キャッシュデータ管理部１５Ａにおける資源が確保される。また、ロード要求Ｒ１０１は、キャッシュ制御部１３Ａによりメモリ管理部１６Ａを経由してメモリ１８Ａにデータ及びディレクトリ情報を要求する（Ｒ１０２）。その要求に対する応答としてメモリ１８Ａから送信されたディレクトリ情報を含むヘッダ情報Ｉ１０１及びデータＤ１０１を、メモリ管理部１６Ａを経由してキャッシュデータ管理部１５Ａが受信する（Ｉ１０２、Ｄ１０２）。そして、キャッシュデータ管理部１５Ａからキャッシュ制御部１３ＡにデータＤ１０３が送られる。
【０００８】
図１６は、ロード要求を発行したＣＰＵ−Ａノード１０Ａに属するメモリ１８Ａに最新データを保有しておらず、ＣＰＵ−Ｂノード１０Ｂに属するメモリ１８Ｂに最新データを保有しているとキャッシュ制御部１３Ａが判断した場合の転送経路を示す図である。ロード要求Ｒ２０１は、キャッシュ制御部１３Ａによりキャッシュデータ管理部１５Ａに送信され、キャッシュデータ管理部１５Ａにおける資源が確保される。そして、キャッシュデータ管理部１５ＡからＣＰＵ−Ｂノード１０Ｂにロード要求Ｒ２０２が送信され、キャッシュ制御部１３Ｂを経由してメモリ管理部１６Ｂが受信する（Ｒ２０３）。ＣＰＵ−Ｂノード１０Ｂのメモリ管理部１６Ｂは、メモリ１８Ｂにデータ及びディレクトリ情報を要求する（Ｒ２０４）。その要求に対する応答としてメモリ１８Ｂから送信されたディレクトリ情報を含むヘッダ情報Ｉ２０１及び最新のデータＤ２０１をメモリ管理部１６Ｂが受信する。さらに、メモリ管理部１６ＢからＣＰＵ−Ａノード１０Ａにヘッダ情報Ｉ２０２及びデータＤ２０２に送信されキャッシュデータ管理部１５Ａが受信する。そして、キャッシュデータ管理部１５Ａからキャッシュ制御部１３ＡにデータＤ２０３が送られる。
【０００９】
図１７は、ロード要求を発行したＣＰＵ−Ａノード１０Ａに属するメモリ１８Ａにデータを有するとキャッシュ制御部１３Ａが判断したが、メモリ１８Ａからのディレクトリ情報により他のＣＰＵ−Ｂノード１０Ｂのキャッシュメモリに最新のデータがある場合の転送経路を示す図である。ロード要求Ｒ３０１は、キャッシュ制御部１３Ａによりキャッシュデータ管理部１５Ａに送信され、キャッシュデータ管理部１５Ａにおける資源が確保される。また、ロード要求Ｒ３０１は、キャッシュ制御部１３Ａによりメモリ管理部１６Ａを経由してメモリ１８Ａにデータ及びディレクトリ情報を要求する（Ｒ３０２）。その要求に対する応答として、メモリ管理部１６Ａが、メモリ１８Ａからヘッダ情報Ｉ３０１及び最新のデータが他のＣＰＵ−Ｂノード１０Ｂにあるという情報Ｒ３０３を受け取る。そして、キャッシュ制御部１３Ｂ等により、ＣＰＵ−Ｂノード１０Ｂのキャッシュメモリにあるデータをリモート管理部１７Ｂに要求する（Ｒ３０４，Ｒ３０５）。それによって、リモート管理部１７Ｂから送信されたヘッダ情報Ｉ３０２及びデータＤ３０１を、ＣＰＵ−Ａノード１０Ａのメモリ管理部１６Ａを経由して、キャッシュデータ管理部１５Ａが受信する（Ｉ３０４、Ｄ３０２）。そして、キャッシュデータ管理部１５Ａからキャッシュ制御部１３ＡにデータＤ３０３が送られる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平９−１９８３０９号公報
【特許文献２】特開２００３−４４４５５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
前述した情報処理装置での転送経路は、メモリ１８又はリモート管理部１７からメモリ管理部１６に送信し、メモリ管理部１６からキャッシュデータ管理部１５に送信するためにデータ転送に係るレイテンシが長くなり無駄であった。また、同じＣＰＵノード１０内でもメモリ１８のデータをメモリ管理部１６にも送信していたため、キャッシュデータ管理部１５とデータの分のメモリ管理部１６の資源が必要であった。
１つの側面では、本発明の目的は、複数のＣＰＵノードが相互に接続された情報処理装置において、ＣＰＵノードが有するメモリ管理部を介さずに、メモリからＣＰＵノードが有するデータ管理部に要求されたデータを送信することにより、複数のＣＰＵノード間のデータ転送に係るレイテンシを短くすることにある。
【課題を解決するための手段】
【００１２】
演算処理装置の一態様は、キャッシュメモリと、主記憶装置が記憶する対象データをキャッシュメモリにロードするロード要求を発行する演算処理部と、演算処理部から受信したロード要求に対応する処理を行う制御部と、制御部からの要求に対応する対象データと、対象データが最新であるかを示す情報を含むヘッダ情報とを、主記憶装置に対して要求するとともに、主記憶装置に対する要求に基づいて主記憶装置が応答したヘッダ情報を受信するメモリ管理部と、ロード要求により取得したデータのキャッシュメモリへの書き込み制御を管理するとともに、主記憶装置に対する要求に基づいて主記憶装置が応答した対象データを受信するデータ管理部を有する。
【発明の効果】
【００１３】
複数のＣＰＵノードが相互に接続された情報処理装置において、ＣＰＵノードが有するメモリ管理部を介さずに、メモリからＣＰＵノードが有するデータ管理部に要求されたデータを送信することにより、複数のＣＰＵノードが相互に接続された情報処理装置において、データ転送に係るレイテンシを短くすることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施形態における情報処理装置でのデータ転送経路の例を示す図である。
【図２】本実施形態における情報処理装置でのデータ転送経路の例を示す図である。
【図３】本実施形態におけるキャッシュデータ管理部の構成例を説明するための図である。
【図４】本実施形態における書き込みタイミング制御を説明するための図である。
【図５】本実施形態におけるヘッダ情報及びデータの例を示す図である。
【図６】本実施形態におけるフラグの値と状態との対応を示す図である。
【図７】本実施形態におけるリード要求からキャッシュメモリへの書き込みまでの動作例を示すフローチャートである。
【図８】本実施形態におけるメモリ管理部の構成例を示す図である。
【図９】本実施形態における資源獲得処理の例を示すフローチャートである。
【図１０】図１に示すデータ転送経路でのデータ転送の流れを示す図である。
【図１１】図２に示すデータ転送経路でのデータ転送の流れを示す図である。
【図１２】図１４に示す情報処理装置でのデータ転送経路の例を示す図である。
【図１３】図１２に示すデータ転送経路でのデータ転送の流れを示す図である。
【図１４】複数のＣＰＵノードが相互接続された情報処理装置の構成例を示す図である。
【図１５】図１４に示す情報処理装置でのデータ転送経路の例を示す図である。
【図１６】図１４に示す情報処理装置でのデータ転送経路の例を示す図である。
【図１７】図１４に示す情報処理装置でのデータ転送経路の例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施形態を図面に基づいて説明する。
【００１６】
本発明の一実施形態における情報処理装置の構成は、図１４に示した情報処理装置と同様である。すなわち、複数のＣＰＵノード１０（１０Ａ、１０Ｂ、１０Ｃ）が相互に接続され、ＣＰＵノード１０の各々は、ロード要求等を発行する演算処理部（ＣＯＲＥ部）１１及び二次キャッシュ部１２を有する。二次キャッシュ部１２は、キャッシュ制御部１３、キャッシュメモリ部１４、キャッシュデータ管理部１５、メモリ管理部１６、及びリモート管理部１７を有する。
【００１７】
キャッシュ制御部１３は、あらかじめ決められた優先順位に基づいて１つの要求を選択し、選択した要求に対応した処理を行う。キャッシュメモリ部１４は、二次キャッシュメモリであり、主記憶領域であるメモリ１８に格納されているデータブロックを保持する。キャッシュデータ管理部１５は、キャッシュメモリ部１４を含むキャッシュメモリへの書き込みに係るアドレスやデータの管理を行う。メモリ管理部１６は、ホームとして管理する主記憶領域であるメモリ１８の情報を管理している。リモート管理部１７は、他のＣＰＵノードのメモリ管理部１６からの要求を受け、その要求に対して自ＣＰＵノードのキャッシュメモリにヒットしたときにデータブロックを送信する。
【００１８】
図１５及び図１７に示したデータ転送では、メモリ１８又はリモート管理部１７からメモリ管理部１６にデータを送信し、そのデータをメモリ管理部１６からキャッシュデータ管理部１５に送信する。本実施形態におけるデータ転送では、図１及び図２に示すようにメモリ管理部１６を介さずに、メモリ１８又はリモート管理部１７からキャッシュデータ管理部１５にデータを送信する。なお、ディレクトリ情報を含むヘッダ情報は、図１５及び図１７に示した例と同様に、メモリ１８又はリモート管理部１７からメモリ管理部１６に送信し、メモリ管理部１６からキャッシュデータ管理部１５に送信する。
【００１９】
図１及び図２は、本実施形態における情報処理装置でのデータ転送経路の例を示す図である。図１及び図２においては、データ転送に携る機能部を図示し、その他の機能部については図示を省略している。また、ＣＰＵ−Ａノード１０Ａの演算処理部（ＣＯＲＥ部）１１により主記憶領域にロード要求が発生したものとする。
【００２０】
図１は、本実施形態においてロード要求を発行したＣＰＵ−Ａノード１０Ａに属するメモリ１８Ａにデータを有していた場合の転送経路を示す図である。ロード要求Ｒ１１は、キャッシュ制御部１３Ａによりキャッシュデータ管理部１５Ａに送信され、キャッシュデータ管理部１５Ａにおける資源が確保される。また、ロード要求Ｒ１１は、キャッシュ制御部１３Ａによりメモリ管理部１６Ａを経由してメモリ１８Ａにデータ及びディレクトリ情報を要求する（Ｒ１２）。その要求Ｒ１２に対する応答として、メモリ１８Ａから送信されるデータＤ１１を、メモリ管理部１６Ａを介さずに、キャッシュデータ管理部１５Ａが受信する。メモリ１８Ａから送信されるディレクトリ情報を含むヘッダ情報Ｉ１１は、メモリ管理部１６Ａを経由してキャッシュデータ管理部１５Ａに送信される（Ｉ１２）。そして、キャッシュデータ管理部１５Ａからキャッシュ制御部１３ＡにデータＤ１２が送られる。
【００２１】
また、図２は、本実施形態においてロード要求を発行したＣＰＵ−Ａノード１０Ａに属するメモリ１８Ａにデータを有するとキャッシュ制御部１３Ａが判断したが、メモリ１８Ａからのディレクトリ情報により他のＣＰＵ−Ｂノード１０Ｂのキャッシュメモリに最新のデータがある場合の転送経路を示す図である。ロード要求Ｒ２１は、キャッシュ制御部１３Ａによりキャッシュデータ管理部１５Ａに送信され、キャッシュデータ管理部１５Ａにおける資源が確保される。また、ロード要求Ｒ２１が、キャッシュ制御部１３Ａによりメモリ管理部１６Ａを経由して送信され、メモリ１８Ａにデータ及びディレクトリ情報を要求する（Ｒ２２）。その要求に対する応答として、メモリ管理部１６Ａが、メモリ１８Ａからヘッダ情報Ｉ２１及び最新のデータが他のＣＰＵ−Ｂノード１０Ｂにあるという情報Ｒ２３を受け取る。
【００２２】
そして、キャッシュ制御部１３Ｂ等により、ＣＰＵ−Ｂノード１０Ｂのキャッシュメモリにあるデータをリモート管理部１７Ｂに要求する（Ｒ２４，Ｒ２５）。この要求に対する応答として、リモート管理部１７ＢからＣＰＵ−Ａノード１０Ａに送信されるデータＤ２１を、メモリ管理部１６Ａを介さずに、キャッシュデータ管理部１５Ａが受信する。リモート管理部１７ＢからＣＰＵ−Ａノード１０Ａに送信されるディレクトリ情報を含むヘッダ情報Ｉ２１は、メモリ管理部１６Ａを経由してキャッシュデータ管理部１５Ａに送信される（Ｉ２４）。そして、キャッシュデータ管理部１５Ａからキャッシュ制御部１３ＡにデータＤ２２が送られる。
【００２３】
本実施形態では、図１及び図２に示したようにメモリ管理部１６を介さずに、メモリ１８又はリモート管理部１７からキャッシュデータ管理部１５にデータを送信するので、データ転送に係るレイテンシを短くすることができる。また、同じＣＰＵノード１０内のキャッシュデータ管理部１５及びメモリ管理部１６において、同じデータブロックを保持する必要がなく、データブロックの保持に要する資源を削減することができ、回路面積（ＣＰＵチップ面積）や消費電力を縮小させることが可能になる。
【００２４】
図１及び図２に示したデータ転送経路でのデータ転送を可能にする、本実施形態におけるキャッシュデータ管理部の構成例について説明する。図３は、本実施形態におけるキャッシュデータ管理部の構成例を説明するための図である。図３において、１３はロード要求を発行するＣＰＵノード１０のキャッシュ制御部であり、１５はロード要求を発行するＣＰＵノード１０のキャッシュデータ管理部である。１８はキャッシュ制御部１３がロード要求により要求されたデータが格納されていると判断したメモリであり、１６はそのメモリ１８が属しているＣＰＵノード１０のメモリ管理部である。１７はディレクトリ情報により最新のデータがあるとされたキャッシュメモリを有するＣＰＵノード１０のリモート管理部である。
【００２５】
キャッシュデータ管理部１５は、ヘッダ管理部２２、データ部２３、セレクト回路２４、及びデータパス制御部２５を有する。メモリ１８（他のＣＰＵノードのメモリ管理部１６）、リモート管理部１７からのデータは、キャッシュデータ管理部１５に対して常に送信され、その書き込みタイミングはＩＤによって制御される。
【００２６】
ＩＤによる書き込みタイミングを、図４を参照して説明する。ここで、パケットの制御情報であるヘッダ情報は、図５（Ａ）に示すように、応答ステータス、制御フラグＤ、Ｒ、Ｍ、ＩＤ及びノード間通信の際には要求ＣＰＵ−ＩＤを含んでいる。ＩＤは要求の識別子であり、キャッシュ管理部ＩＤ及びメモリ管理部ＩＤを含むフォーマットである。図４に示すようにロード要求に係る動作では、まずキャッシュデータ管理部１５からメモリ管理部１６にキャッシュデータ管理部ＩＤが送信される（Ｓ１１）。
【００２７】
次に、メモリ管理部１６が、キャッシュデータ管理部ＩＤ及びメモリ管理部ＩＤをメモリ１８に送信する（Ｓ１２）。それに対して、メモリ１８が、キャッシュデータ管理部ＩＤ及びメモリ管理部ＩＤをメモリ管理部１６に送信し（Ｓ１３）、メモリ管理部１６が、キャッシュデータ管理部ＩＤ及びメモリ管理部ＩＤをキャッシュデータ管理部１５に送信する（Ｓ１４）。また、最新のデータが他のＣＰＵノードにある場合、メモリ管理部１６が、メモリ１８からキャッシュデータ管理部ＩＤ及びメモリ管理部ＩＤを受信した後、キャッシュデータ管理部ＩＤ及びメモリ管理部ＩＤを他のＣＰＵノードのリモート管理部１７に送信する（Ｓ１５）。それに対して、リモート管理部１７が、キャッシュデータ管理部ＩＤ及びメモリ管理部ＩＤをメモリ管理部１６及びキャッシュデータ管理部１５に送信する（Ｓ１６、Ｓ１７）。
【００２８】
このようにメモリ１８から送信されるＩＤのタイミングとリモート管理部１７から送信されるＩＤのタイミングが異なるため、ＩＤでキャッシュデータ管理部１５へのデータの書き込みタイミングを制御する。キャッシュデータ管理部１５ではＩＤで指示されているエントリに対して簡単な２ポートライト処理部２２でメモリ１８（他のＣＰＵノードのメモリ管理部１６）若しくはリモート管理部１７からのデータを受信しデータ部２３に書き込みを行う。また、キャッシュデータ管理部１５ではＩＤで指示されているエントリに対して簡単な２ポートライト処理部２１でメモリ管理部１６若しくはリモート管理部１７からのヘッダ情報を受信しヘッダ管理部２２に書き込みを行う。
【００２９】
また、本実施形態におけるデータの書き込みでは、図５（Ｂ）に示すデータのヘッダに含まれる２つのフラグＤ及びｄによりキャッシュデータ管理部１５への書き込みを指示している。リモート管理部１７もしくはメモリ管理部１６からの応答データパケットがデータ付きであることを示すフラグＤ、もしくはメモリ１８からの応答データパケットがデータ付きであることを示すフラグｄが立っている（値が“１”）とき、メモリ１８（他のＣＰＵノードのメモリ管理部１６）、リモート管理部１７からのデータをＩＤで指示されたキャッシュデータ管理部１５のエントリに書き込む。
【００３０】
ここで、データが有効である最新のデータである場合には、転送の終了を知らせる必要がある。そこで、本実施形態では、例えばキャッシュデータ管理部１５のデータ部２３が保持している最新のデータのキャッシュメモリへの書き込みは、ヘッダ管理部２２に保持されているヘッダ情報のフラグＤ、Ｒ、Ｍを参照して行う。フラグＤはデータを有することを示し、フラグＲはメモリ管理部１６で資源をとり、リモート管理部１７から完了応答が送信され、キャッシュデータ管理部１５にメモリ管理部１６の処理完了を示し、フラグＭはリモート管理部１７からの応答を示す。フラグＤ、Ｒ、Ｍの値と状態の対応を図６に示す。
【００３１】
キャッシュデータ管理部１５は、フラグＤ、Ｒ、Ｍの状態をセレクト回路２４で判断し、（Ｄ，Ｒ，Ｍ）＝（１，０，０）又は（１，１，１）であるときに、送信されてきたデータを最新データとしてデータ有効指示を受信した状態を示す。ここで、（Ｄ，Ｒ，Ｍ）＝（１，０，０）はメモリ１８からの有効な最新のデータを表し、（Ｄ，Ｒ，Ｍ）＝（１，１，１）はリモード管理部１７からの有効な最新データを表している。これらのフラグＤ，Ｒ，Ｍを設けることで、メモリ１８からの最新データ及びリモード管理部１７からの最新データの判別ができ、キャッシュメモリに書き込むことができる。このデータ有効指示状態及びキャッシュ制御部１３からの要求指示がデータパス制御部２５に送信され、必要なデータがキャッシュデータ管理部１５のデータ部２３からキャッシュメモリに書き込まれる。
【００３２】
リード要求からキャッシュメモリへの書き込みまでのフラグに焦点を当てた動作のフローチャートを図７に示す。図７に示す例は、ＣＰＵ−Ａノード１０Ａによりリード要求が発行されたときを示している。
【００３３】
リード要求が発行されると、ＣＰＵ−Ａノード１０Ａのキャッシュ制御部１３Ａは、Ｌ＝＝Ｈであるか否かを判断する（Ｓ１０１）。ここで、Ｌ＝＝Ｈは、自ＣＰＵノードに属しているメモリ１８に要求されたデータが格納されていることを示す。すなわち、ステップＳ１０１にて、キャッシュ制御部１３Ａは、要求されるデータがメモリ１８Ａに格納されているか否かを判断する。ステップＳ１０１での判断の結果、Ｌ＝＝Ｈである場合には、ＣＰＵ−Ａノード１０Ａのメモリ管理部１６の資源が確保され（Ｓ１０２）、メモリ１８Ａにディレクトリを確認しにいく（Ｓ１０３）。そして、メモリ１８からフラグｄ＝１にして、キャッシュデータ管理部１５Ａにデータが送信される（Ｓ１０４）。
【００３４】
次に、メモリ管理部１６Ａは、ヘッダ情報に含まれるディレクトリ情報に基づいて、メモリ１８Ａに最新のデータがあるか否かを判断する（Ｓ１０５）。ステップＳ１０５での判断の結果、メモリ１８Ａに最新のデータがあると判断した場合には、メモリ管理部１６Ａは、フラグ（Ｄ，Ｒ，Ｍ）＝（１，０，０）としてヘッダ情報を送信する（Ｓ１０６）。そして、キャッシュデータ管理部１５Ａは、ヘッダ情報のフラグが（Ｄ，Ｒ，Ｍ）＝（１，０，０）であることをセレクト回路２４により判断し（Ｓ１０７）、キャッシュメモリへの書き込みを行う。
【００３５】
ステップＳ１０５での判断の結果、メモリ１８Ａに最新のデータがないと判断した場合には、ＣＰＵ−Ａノード１０Ａ以外のリモート管理部１７Ｂ（１７Ｃ）からフラグＤ＝１、Ｍ＝１にして、キャッシュデータ管理部１５Ａにデータが送信される（Ｓ１０８）。次に、リモート管理部１７Ｂ（１７Ｃ）からＣＰＵ−Ａノード１０Ａのメモリ管理部１６Ａに完了応答を出し、資源を解放させる（Ｓ１０９）。メモリ管理部１６Ａは、Ｒ＝１にしてキャッシュデータ管理部１５Ａにデータが送信される（Ｓ１１０）。そして、キャッシュデータ管理部１５Ａは、ヘッダ情報のフラグが（Ｄ，Ｒ，Ｍ）＝（１，１，１）であることをセレクト回路２４により判断し（Ｓ１１１）、キャッシュメモリへの書き込みを行う。
【００３６】
ステップＳ１０１での判断の結果、Ｌ＝＝Ｈでない場合には、ステップＳ１１２に進む。ここでは、要求されるデータがメモリ１８Ａに格納されておらず、ＣＰＵ−Ｂノード１８Ｂに属しているメモリ１８Ｂにあるものとする。ステップＳ１１２にて、ＣＰＵ−Ｂノード１０Ｂのメモリ管理部１６の資源が確保され（Ｓ１１２）、メモリ１８Ｂにディレクトリを確認しにいく（Ｓ１１３）。そして、メモリ管理部１６Ｂは、ヘッダ情報に含まれるディレクトリ情報に基づいて、メモリ１８Ｂに最新のデータがあるか否かを判断する（Ｓ１１４）。ステップＳ１１４での判断の結果、メモリ１８Ｂに最新のデータがあると判断した場合には、メモリ管理部１６Ｂは、フラグ（Ｄ，Ｒ，Ｍ）＝（１，０，０）としてヘッダ情報を送信する（Ｓ１１５）。そして、キャッシュデータ管理部１５Ａは、ヘッダ情報のフラグが（Ｄ，Ｒ，Ｍ）＝（１，０，０）であることをセレクト回路２４により判断し（Ｓ１１６）、キャッシュメモリへの書き込みを行う。
【００３７】
ステップＳ１１４での判断の結果、メモリ１８Ｂに最新のデータがないと判断した場合には、ＣＰＵ−Ｃノード１０Ｃのリモート管理部１７ＣからフラグＤ＝１、Ｍ＝１にして、キャッシュデータ管理部１５Ａにデータが送信される（Ｓ１１７）。次に、リモート管理部１７ＣからＣＰＵ−Ａノード１０Ａのメモリ管理部１６Ａに完了応答を出し、資源を解放させる（Ｓ１１８）。メモリ管理部１６Ａは、Ｒ＝１にしてキャッシュデータ管理部１５Ａにデータが送信される（Ｓ１１９）。そして、キャッシュデータ管理部１５Ａは、ヘッダ情報のフラグが（Ｄ，Ｒ，Ｍ）＝（１，１，１）であることをセレクト回路２４により判断し（Ｓ１２０）、キャッシュメモリへの書き込みを行う。
【００３８】
本実施形態では、要求元ＣＰＵノード（ＣＰＵ（Ｌ））とデータを持っているとされるＣＰＵノード（ＣＰＵ（Ｈ））が同一である場合（Ｌ＝＝Ｈ）の要求について、メモリ管理部１６はデータ格納部３２を省略することが可能である。ｃｃＮＵＭＡ方式では広大な主記憶領域を多数のＣＰＵノードが共有できるが、処理性能を十分に上げるためには自ＣＰＵノードに属しているローカルの主記憶領域へアクセスするようにソフトをチューニングすることが好ましい。実際にｃｃＮＵＭＡ構成をサポートしたＯＳ（オペレーションシステム）や開発環境はＭＰＯ（Memory Placement Optimization）と呼ばれる機能を実装しており、ローカルの主記憶領域へアクセスするようにプログラミングされる。
【００３９】
自ＣＰＵノードに属していないリモートメモリへのアクセス比が大きいとされる用途としてデータベース処理ソフトがあるが、統計的にローカル要求比：リモート要求比は１：１程度である。したがって、一般的なｃｃＮＵＭＡ構成使用時のローカル要求比：リモート要求比は１：１又はそれよりもローカル要求比が高いことを前提にしても問題がない。本実施形態における技術を適用することによって、要求元ＣＰＵノード（ＣＰＵ（Ｌ））とデータを持っているとされるＣＰＵノード（ＣＰＵ（Ｈ））が同一である場合の要求は、メモリ管理部１６のデータ資源を経由することなくキャッシュデータ管理部１５へデータ転送が行われる。したがって、要求元ＣＰＵノード（ＣＰＵ（Ｌ））とデータを持っているとされるＣＰＵノード（ＣＰＵ（Ｈ））が同一である場合の要求はメモリ管理部１６のデータ資源を使用しない。一方で、要求元ＣＰＵノード（ＣＰＵ（Ｌ））とデータを持っているとされるＣＰＵノード（ＣＰＵ（Ｈ））が同一でない場合の要求は、メモリ管理部１６のデータ資源を経由することになる。
【００４０】
本実施形態におけるメモリ管理部の構成例を図８に示す。メモリ管理部１６は、ヘッダ管理部３１、データ部３２、ＩＤデコード部３３、３５、及びヘッダ制御部３４、３６を有する。データをどのエントリが受信するかの制御は、ＩＤによって行われる。例えば、ＩＤが０〜７については要求元ＣＰＵノード（ＣＰＵ（Ｌ））とデータを持っているとされるＣＰＵノード（ＣＰＵ（Ｈ））が同一でない場合のデータを受信するエントリとする。そして例えば、ＩＤが８〜１５を要求元ＣＰＵノード（ＣＰＵ（Ｌ））とデータを持っているとされるＣＰＵノード（ＣＰＵ（Ｈ））が同一である場合のメモリ管理部１６が受信せずにキャッシュデータ管理部１５へデータをバイパスするエントリとする。そのときに単純にデータ部３２のＩＤが８〜１５のエントリは削除する。また、エントリの有効数をカウントする機能については、H_DATA_USE_CTR（データ有）、H_NODATA_USE_CTR（データ無）の二つに分けて、それぞれカウントさせることで資源を溢れさせないようにすることができる。
【００４１】
ここで、本実施形態においてメモリ管理部は、前述のようにヘッダ管理部及びデータ部の両方を備えたエントリ（データ部付きエントリ）と、ヘッダ管理部のみを備えたエントリ（データ部無しエントリ）で構成できる。要求元ＣＰＵノード（ＣＰＵ（Ｌ））とデータを持っているとされるＣＰＵノード（ＣＰＵ（Ｈ））が同一である場合の要求をデータ部無しエントリへ振り分け、同一でない場合の要求をデータ部付きエントリへ振り分けるように制御する。さらに、要求元ＣＰＵノード（ＣＰＵ（Ｌ））とデータを持っているとされるＣＰＵノード（ＣＰＵ（Ｈ））が同一である場合の要求では、メモリ管理部１６におけるデータ部無しエントリが空いてないときはデータ部付きエントリに割り当てるようにしても良い。
【００４２】
獲得資源についてのフローチャートを図９に示す。ここで、要求元ＣＰＵノード（ＣＰＵ（Ｌ））と最新データを保有しているＣＰＵノード（ＣＰＵ（Ｈ））が同一ではない場合をＬ！＝Ｈ、要求元ＣＰＵノード内からのリード要求をＬ−ＲＥＱ、要求元ＣＰＵノード以外からのリード要求をＲ−ＲＥＱとする。キャッシュ制御部１５は、送信先情報について管理しており、その情報からリード要求に対してＬ−ＲＥＱ又はＲ−ＲＥＱを生成しているため、Ｌ−ＲＥＱであるかＲ−ＬＥＱであるかが判別できる。さらにヘッダ情報内のアドレスをデコードすることにより、要求元ＣＰＵノード（ＣＰＵ（Ｌ））と最新データを保有しているＣＰＵノード（ＣＰＵ（Ｈ））が同一であるか否かが特定できる。
【００４３】
キャッシュ制御部１５は、リード要求が要求元ＣＰＵノード内からのリード要求Ｌ−ＲＥＱであるか否かを判断する（Ｓ２０１）。その結果、リード要求がＬ−ＲＥＱでない場合には、キャッシュ制御部１５は、メモリ管理部にデータ部付きエントリの資源を獲得する（Ｓ２０２）。一方、リード要求がＬ−ＲＥＱである場合には、キャッシュ制御部１５は、アドレスをデコードし、要求元ＣＰＵノード（ＣＰＵ（Ｌ））と最新データを保有しているＣＰＵノード（ＣＰＵ（Ｈ））が同一であるか否かを判断する（Ｓ２０３）。要求元ＣＰＵノード（ＣＰＵ（Ｌ））と最新データを保有しているＣＰＵノード（ＣＰＵ（Ｈ））が同一でない場合には、キャッシュ制御部１５は、キャッシュデータ管理部のデータ資源を獲得する（Ｓ２０４）。
【００４４】
リード要求がＬ−ＲＥＱであり、要求元ＣＰＵノード（ＣＰＵ（Ｌ））と最新データを保有しているＣＰＵノード（ＣＰＵ（Ｈ））が同一である場合には、キャッシュ制御部１５は、メモリ管理部にデータ部無しエントリが空いているか否かを判断する（Ｓ２０４）。メモリ管理部にデータ部無しエントリが空いていれば、キャッシュ制御部１５は、キャッシュデータ管理部のデータ資源及びメモリ管理部のデータ部無しエントリの資源を獲得する（Ｓ２０５）。一方、メモリ管理部にデータ部無しエントリが空いていなければ、キャッシュ制御部１５は、メモリ管理部のデータ部付きエントリが空いていれば、そのエントリの資源を獲得する（Ｓ２０６）。
【００４５】
データ部付きエントリとデータ部無しエントリ比率は、用途により最適値が異なるが、一般的なリモート要求比率が最大とされる１：１程度とすれば大部分の処理において、性能を低下させずにＣＰＵチップ面積や消費電力の低減が実現可能となる。
【００４６】
図１０及び図１１に、それぞれ図１及び図２に示したデータ転送経路でのデータ転送の流れを示す。ここで、図１２に示すデータ転送経路について説明する。図１２に示す転送経路は、ＣＰＵ−Ａノード１０Ａのキャッシュ制御部１５Ａが、ロード要求Ｒ３１を発行したＣＰＵ−Ａノード１０Ａに属しているメモリ１８Ａにデータを有しておらず、ＣＰＵ−Ｂノード１８Ｂに属しているメモリ１８Ｂにデータがあると判断した場合の転送経路である。さらに、メモリ１８Ｂからのディレクトリ情報により、メモリ１８Ｂにあるデータが最新ではなく、ＣＰＵ−Ｃノード１０Ｃのキャッシュメモリに最新データがあった場合に、メモリ管理部１６Ｂだけではなく、キャッシュデータ管理部１５Ａにもデータを転送する転送経路である。
【００４７】
ロード要求Ｒ３１は、キャッシュ制御部１３Ａによりキャッシュデータ管理部１５Ａに送信され、キャッシュデータ管理部１５Ａにおける資源が確保される。そして、キャッシュデータ管理部１５ＡからＣＰＵ−Ｂノード１０Ｂにロード要求Ｒ３２が送信され、キャッシュ制御部１３Ｂを経由してメモリ管理部１６Ｂが受信する。ＣＰＵ−Ｂノード１０Ｂのメモリ管理部１６Ｂは、メモリ１８Ｂにデータ及びディレクトリ情報を要求する（Ｒ３３３）。その要求に対する応答として、メモリ管理部１６Ｂが、メモリ１８Ｂからヘッダ情報Ｉ３１及び最新のデータが他のＣＰＵ−Ｃノード１０Ｃにあるという情報Ｒ３３を受け取る。
【００４８】
そして、キャッシュ制御部１３Ｃ等により、ＣＰＵ−Ｃノード１０Ｃのキャッシュメモリにあるデータをリモート管理部１７Ｃに要求する（Ｒ３５，Ｒ３６）。それによって、リモート管理部１７Ｃから送信されたヘッダ情報Ｉ３２は、ＣＰＵ−Ｂノード１０Ｂのメモリ管理部１６Ｂを経由して、ＣＰＵ−Ａノード１０Ａのキャッシュデータ管理部１５Ａに送信される（Ｉ３４）。リモート管理部１７Ｃから送信されたデータＤ３１はＣＰＵ−Ａノード１０Ａのキャッシュデータ管理部１５Ａに送信され、データＤ３２はＣＰＵ−Ｂノード１０Ｂのメモリ管理部１６Ｂに送信される。そして、キャッシュデータ管理部１５Ａからキャッシュ制御部１３ＡにデータＤ３３が送られる。図１３に、図１２に示したデータ転送経路でのデータ転送の流れを示す。図１１と図１３とを比較すると、ＣＰＵ−Ａノード１０Ａのキャッシュデータ管理部１５Ａが他のＣＰＵノードのリモート管理部からのデータを受信するときの制御は同じ制御で実現することができる。したがって、図１２に示すようなデータ転送経路が実現可能であるキャッシュデータ管理部１５と同様の論理構成で、本実施形態におけるキャッシュデータ管理部を実現することができる。なお、図１０、図１１、及び図１４において、Ｍ＿ＲＥＱはＭｏｖｅ  ｉｎ要求である。
【００４９】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００５０】
１０  ＣＰＵノード
１１  演算処理部（ＣＯＲＥ部）
１２  二次キャッシュ部
１３  キャッシュ制御部
１４  キャッシュメモリ部
１５  キャッシュデータ管理部
１６  メモリ管理部
１７  リモート管理部
１８  メモリ
【図１】
2014048830.tif 000003
【図２】
2014048830.tif 000004
【図３】
2014048830.tif 000005
【図４】
2014048830.tif 000006
【図５】
2014048830.tif 000007
【図６】
2014048830.tif 000008
【図７】
2014048830.tif 000009
【図８】
2014048830.tif 000010
【図９】
2014048830.tif 000011
【図１０】
2014048830.tif 000012
【図１１】
2014048830.tif 000013
【図１２】
2014048830.tif 000014
【図１３】
2014048830.tif 000015
【図１４】
2014048830.tif 000016
【図１５】
2014048830.tif 000017
【図１６】
2014048830.tif 000018
【図１７】
2014048830.tif 000019