(57)【要約】【課題】計算機の性能の低下を抑制する計算機、半導体装置、制御方法及びプログラムを提供する。【解決手段】計算機１は、第１プロセッサ１０と第２プロセッサ２０とを有し、第１プロセッサ１０と第２プロセッサ２０とによって同一メモリ空間を共有する。第１プロセッサ１０は、プロセッサ２０に割り当てられたメモリ２６内の領域に対するキャッシュコヒーレンスを保証しないノンコヒーレントロード命令（第１ロード処理）を実行する。第２プロセッサ２０は、メモリ２６からのデータの読み出しの履歴を残すキャッシュメモリ２５（リモートキャッシュメモリ）を備える。キャッシュメモリ２５は、ノンコヒーレントロード命令の実行によるメモリ２６からのデータの読み出しの場合には、前記データの読み出しの履歴を残さない。【選択図】図１
2019175006.tif 000002
【特許請求の範囲】
【請求項１】
第１プロセッサと第２プロセッサとを有し、前記第１プロセッサと前記第２プロセッサとによって同一メモリ空間を共有する計算機であって、
前記第１プロセッサは、
前記第２プロセッサに割り当てられたメモリ内の領域に対するキャッシュコヒーレンスを保証しない第１ロード処理を実行し、
前記第２プロセッサは、
前記メモリからのデータの読み出しの履歴を残すリモートキャッシュメモリを備え、
前記リモートキャッシュメモリは、
前記第１ロード処理の実行による前記メモリからのデータの読み出しの場合には、前記データの読み出しの履歴を残さない、
ことを特徴とする計算機。
【請求項２】
前記第１プロセッサは、
前記第１ロード処理の実行によりフィルされる第１キャッシュラインを保持し、前記第１キャッシュラインにノンコヒーレントな領域を示す情報を登録するローカルキャッシュメモリ
を備えることを特徴とする請求項１に記載の計算機。
【請求項３】
前記第１プロセッサは、前記第２プロセッサに割り当てられたメモリ内の領域に対するキャッシュコヒーレンスを保証する第２ロード処理を実行し、
前記ローカルキャッシュメモリは、
前記第２ロード処理の実行によって前記第１キャッシュラインがヒットした場合には、当該ヒットした前記第１キャッシュラインを無効化する、
ことを特徴とする請求項２に記載の計算機。
【請求項４】
前記第１プロセッサは、前記第２プロセッサに割り当てられたメモリ内の領域にデータを書き込むためのストア処理を実行し、
前記ローカルキャッシュメモリは、
前記ストア処理によって前記第１キャッシュラインがヒットした場合には、当該ヒットした前記第１キャッシュラインを無効化する、
ことを特徴とする請求項２に記載の計算機。
【請求項５】
前記第１プロセッサは、
前記第１キャッシュラインを無効化した後に、目的データがフィルされた第２キャッシュラインを保持する、
ことを特徴とする請求項３又は請求項４に記載の計算機。
【請求項６】
前記第１プロセッサは、
前記ノンコヒーレントな領域に対する前記ストア処理によりキャッシュヒットした場合に例外処理を発生させる
ことを特徴とする請求項４に記載の計算機。
【請求項７】
前記ローカルキャッシュメモリは、
前記第２プロセッサが管轄するメモリの内容をノンコヒーレントにキャッシュしている領域を前記ローカルキャッシュメモリからパージする、
ことを特徴とする請求項２から請求項６の何れか１項に記載の計算機。
【請求項８】
複数のプロセッサによって同一メモリ空間を共有する計算機であって、
他のプロセッサに割り当てられたリモートメモリ内の領域に対するキャッシュコヒーレンスを保証しない第１ロード処理を実行する実行部と、
自プロセッサに割り当てられたローカルメモリからのデータの読み出しの履歴を残すキャッシュメモリと、
を備え、
前記キャッシュメモリは、他のプロセッサのキャッシュコヒーレンスを保証しない第１ロード処理の実行による前記ローカルメモリからのデータの読み出しの場合には、前記データの読み出しの履歴を残さない、
ことを特徴とする半導体装置。
【請求項９】
第１プロセッサと第２プロセッサとを有し、前記第１プロセッサと前記第２プロセッサとによって同一メモリ空間を共有する計算機の制御方法であって、
前記第１プロセッサに、前記第２プロセッサに割り当てられたメモリ内の領域に対するキャッシュコヒーレンスを保証しない第１ロード処理を実行させ、
前記第２プロセッサのリモートキャッシュメモリに、前記メモリからのデータの読み出しの履歴が残るが、前記第１ロード処理の実行による前記メモリからのデータの読み出しの場合には、前記データの読み出しの履歴を残させないステップ
を含むことを特徴とする制御方法。
【請求項１０】
第１プロセッサと第２プロセッサとを有し、前記第１プロセッサと前記第２プロセッサとによって同一メモリ空間を共有する計算機の第１プロセッサに実行させるためのプログラムであって、
前記第２プロセッサに割り当てられたメモリ内の領域に対するキャッシュコヒーレンスを保証しない第１ロード命令を含み、
前記第１ロード命令の実行により前記メモリからのデータの読み出し要求を送信させ、
前記読み出し要求には、
前記第２プロセッサのリモートキャッシュメモリに前記データの読み出しの履歴を残させないための情報が含まれる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機、半導体装置、制御方法及びプログラムに関する。
【背景技術】
【０００２】
関連するマルチプロセッサ型の計算機は、一又は複数のコアを備える複数のプロセッサ（半導体装置）が、メモリ空間を共有して各コアが連携して並列処理を実行する。各プロセッサは、夫々に設けられたメモリを管理し、また、他のプロセッサが管轄するメモリの内容にアクセスすることを他のプロセッサに要求する。各プロセッサは、夫々キャッシュを設けることで、各メモリに対する処理の応答性を高めている。
【０００３】
各プロセッサが並列処理を実行するためには、キャッシュコヒーレンス（一貫性）を保証することが必要とされる。キャッシュコヒーレンスを保証する機能をハードウェアで実現する方法が知られている。上記の機能をハードウェアで実現するタイプのプロセッサは、キャッシュコヒーレンスが保証されない事象が生じると、キャッシュコヒーレンスを保証するためにスヌープ動作、無効化動作などの処理を実施する場合がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１１−５２７０３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、プロセッサが実行する処理の中には、データを参照するために実行されるロード処理が含まれる。このようなデータ参照するために実行されるロード処理であれば、必ずしもキャッシュコヒーレンシを必要としない。上記のデータ参照するために実行されるロード処理についてもキャッシュコヒーレンスを保証するための処理が実行されることにより、計算機の性能が低下することがあった。
【０００６】
そこでこの発明は、上述の問題を解決することのできる計算機、半導体装置、制御方法及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００７】
発明の第１の態様によれば、第１プロセッサと第２プロセッサとを有し、前記第１プロセッサと前記第２プロセッサとによって同一メモリ空間を共有する計算機であって、前記第１プロセッサは、前記第２プロセッサに割り当てられたメモリ内の領域に対するキャッシュコヒーレンスを保証しない第１ロード処理を実行し、前記第２プロセッサは、前記メモリからのデータの読み出しの履歴を残すリモートキャッシュメモリを備え、前記リモートキャッシュメモリは、前記第１ロード処理の実行による前記メモリからのデータの読み出しの場合には、前記データの読み出しの履歴を残さない、ことを特徴とする計算機である。
【０００８】
発明の第２の態様によれば、複数のプロセッサによって同一メモリ空間を共有する半導体装置であって、他のプロセッサに割り当てられたリモートメモリ内の領域に対するキャッシュコヒーレンスを保証しない第１ロード処理を実行する実行部と、自プロセッサに割り当てられたローカルメモリからのデータの読み出しの履歴を残すキャッシュメモリと、を備え、前記キャッシュメモリは、他のプロセッサのキャッシュコヒーレンスを保証しない第１ロード処理の実行による前記ローカルメモリからのデータの読み出しの場合には、前記データの読み出しの履歴を残さない、ことを特徴とする半導体装置である。
【０００９】
発明の第３の態様によれば、第１プロセッサと第２プロセッサとを有し、前記第１プロセッサと前記第２プロセッサとによって同一メモリ空間を共有する計算機の制御方法であって、前記第１プロセッサに、前記第２プロセッサに割り当てられたメモリ内の領域に対するキャッシュコヒーレンスを保証しない第１ロード処理を実行させ、前記第２プロセッサのリモートキャッシュメモリに、前記メモリからのデータの読み出しの履歴が残るが、前記第１ロード処理の実行による前記メモリからのデータの読み出しの場合には、前記データの読み出しの履歴を残させないステップを含むことを特徴とする制御方法である。
【００１０】
発明の第４の態様によれば、第１プロセッサと第２プロセッサとを有し、前記第１プロセッサと前記第２プロセッサとによって同一メモリ空間を共有する計算機の第１プロセッサに実行させるためのプログラムであって、前記第２プロセッサに割り当てられたメモリ内の領域に対するキャッシュコヒーレンスを保証しない第１ロード命令を含み、前記第１ロード命令の実行により前記メモリからのデータの読み出し要求を送信させ、前記読み出し要求には、前記第２プロセッサのリモートキャッシュメモリに前記データの読み出しの履歴を残させないための情報が含まれるプログラムである。
【発明の効果】
【００１１】
本発明によれば、これにより計算機の性能の低下を抑制するという効果が得られる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態による計算機の構成図である。
【図２】本実施形態による第１プロセッサのキャッシュメモリの構成図である。
【図３】本実施形態によるキャッシュメモリに格納される制御情報の構成図である。
【図４】本実施形態による他のプロセッサによって参照されている領域を示す情報について説明するための図である。
【図５】本実施形態による第２プロセッサのキャッシュメモリの構成図である。
【図６】本実施形態によるキャッシュメモリに格納される制御情報の構成図である。
【図７】本実施形態による他のプロセッサによって参照されている領域を示す情報について説明するための図である。
【図８】本実施形態のキャッシュ制御について説明するための図である。
【図９】本実施形態のキャッシュ制御について説明するための図である。
【図１０】本実施形態の第１プロセッサ１０（半導体装置）の最小構成を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の一実施形態による計算機を、図面を参照して説明する。以下の説明は、本発明の実施の形態を説明するものであり、本発明が以下の実施形態に限定されるものではない。説明の明確化のため、以下の記載は、適宜、省略及び簡略化がなされている。又、以下の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。
【００１４】
図１は、第１実施形態による計算機の構成図である。
計算機１は、例えば、第１プロセッサ１０と、第２プロセッサ２０と、メモリ１６と、メモリ２６と、ネットワークＮＷとを備える。第１プロセッサ１０と第２プロセッサ２０は、ネットワークＮＷを介して接続されている。ネットワークＮＷは、例えば計算機１内に構成されている。なお、ネットワークＮＷは、計算機１の外部のネットワークを含むものであってもよい。
【００１５】
第１プロセッサ１０にはメモリ１６が、第２プロセッサ２０にはメモリ２６が、夫々個別に接続されている。メモリ１６は第１プロセッサ１０によって管理され、メモリ２６は第２プロセッサ２０によって管理される。第１プロセッサ１０と第２プロセッサ２０は、メモリ１６とメモリ２６を共有メモリとして利用する。メモリ１６とメモリ２６の各記憶領域には、互いに共通するアドレスが割り付けられている。
【００１６】
まず、第１プロセッサ１０について説明する。
第１プロセッサ１０は、例えば、コア１１と、コア１２と、ネットワークオンチップ１３（NOC）と、メモリコントローラ１４と、キャッシュメモリ１５とを備える。
【００１７】
コア１１とコア１２は、プログラムにより規定された命令を逐次実行する。例えば、コア１１とコア１２は、少なくとも市場に流通している一般的なプロセッサ（ＣＰＵ）に内蔵されるコアの機能と同等の機能を持つ。一般的なプロセッサとは、例えば、メモリからデータを読み出すロード命令、メモリにデータを書き込むストア命令、各種条件分岐命令などが含まれるプログラムを実行し、更に、外部からの割り込み、又はソフトウエア処理による割り込みに応じて例外処理を実行するものである。コア１１とコア１２は、少なくとも上記の処理を実行する。これについての詳細な説明は省略する。
【００１８】
なお、実施形態のコア１１とコア１２は、さらに、ノンコヒーレントロード命令を含むプログラムを実行する。ノンコヒーレントロード命令は、第２プロセッサ２０のメモリ２６に格納された情報を取得する。
【００１９】
ネットワークオンチップ１３は、コア１１とキャッシュメモリ１５間と、コア１２とキャッシュメモリ１５間の通信パスを提供する。
【００２０】
メモリコントローラ１４は、メモリ１６にアクセスを行い、メモリ１６に対する書き込み処理、読み出し処理などを実行する。例えば、メモリ１６は、そのインタフェース仕様が、ＤＤＲ（Double-Data-Rate）３、ＤＤＲ４メモリ等のメモリ種別で規定される半導体メモリである。メモリコントローラ１４は、メモリ１６のインタフェース仕様に合致するものである。
【００２１】
キャッシュメモリ１５は、メモリ１６に格納されたデータを読み出し、そのデータ等を一時的に保持する。例えば、キャッシュメモリ１５は、ネットワークオンチップ１３と、メモリコントローラ１４と、ネットワークＮＷとに接続されている。キャッシュメモリ１５は、例えば、キャッシュミス時に、メモリコントローラ１４を介してメモリ１６に格納されているデータ取得し、あるいはネットワークＮＷを通してメモリ２６に格納さているデータを取得して、取得したデータを内部に格納する。
【００２２】
また、キャッシュメモリ１５は、キャッシュ制御の処理のシーケンスの中にライトバック動作を行うシーケンスを有する。キャッシュメモリ１５は、ライトバック動作により、更新されたデータをメモリ１６に書き戻す。
【００２３】
次に、第２プロセッサ２０について説明する。
プロセッサ２０は、第１プロセッサ１０と同様の構成を備える。例えば、第２プロセッサ２０は、コア２１と、コア２２と、ネットワークオンチップ２３と、メモリコントローラ２４と、キャッシュメモリ２５とを備える。コア２１、コア２２、ネットワークオンチップ２３、メモリコントローラ２４及びキャッシュメモリ２５は、上記のコア１１、コア１２、ネットワークオンチップ１３、メモリコントローラ１４及びキャッシュメモリ１５と同様の機能を有する。以下、第１プロセッサ１０を中心に説明するが、第２プロセッサ２０についても同様の処理を実施できる。
【００２４】
［第１プロセッサ１０］
図２を参照して、第１プロセッサ１０のキャッシュメモリの構成について説明する。図２は、本実施形態による第１プロセッサ１０のキャッシュメモリの構成図である。
【００２５】
キャッシュメモリ１５は、データアレイ１５０１、キャッシュ制御部１５０２、及びキャッシュディレクトリ１５０３を備える。
【００２６】
データアレイ１５０１は、キャッシュメモリ１５内で一時的に保持するデータを格納する。
【００２７】
キャッシュ制御部１５０２は、キャッシュメモリ１５内のデータの格納状態を示す制御情報を内在し、その制御情報に基づいてキャッシュメモリ１５内のデータの格納状態を制御する。その制御情報は、一般的なキャッシュメモリにおいて利用されるキャッシュライン（又はキャッシュブロック）に類似するが、その一部が異なる。これについては後述する。
【００２８】
キャッシュ制御部１５０２は、コア１１とコア１２とからの要求を、指示入力１５０４を経て取得して、その要求に応じた結果を、返送出力１５０５を経て要求元に返送する。コア１１とコア１２は、要求元の一例である。
【００２９】
キャッシュ制御部１５０２は、受け付けた要求を、指示入力１５１２を経てデータアレイ１５０１に送り、その要求に対応するデータが、データアレイ１５０１内にあることを検出する。キャッシュ制御部１５０２は、その要求に対応するデータがデータアレイ１５０１内にあるか否かの検出結果を、返送出力１５１３を経て取得する。
【００３０】
キャッシュ制御部１５０２は、メモリ１６をアクセスするための指示を、メモリ指示出力１５０６を経てメモリコントローラ１４に送り、その指示に対応するデータを、メモリ返送入力１５０７を経てメモリコントローラ１４から取得する。
【００３１】
キャッシュ制御部１５０２は、指示１５０８を経てキャッシュディレクトリ１５０３を参照して、要求に対応するデータがメモリ１６内にあるか否かについての情報を、メモリ返送入力１５０７を経て取得する。
【００３２】
キャッシュディレクトリ１５０３は、例えば、メモリ１６のメモリ領域の所定の範囲毎に割り付けられた参照有無情報１５０３１（図４）を、所定の範囲に対応づけて保持している。メモリ１６の全領域に対する所定の範囲は、全領域に渡る。なお、参照有無情報１５０３１については後述する。
【００３３】
なお、キャッシュ制御部１５０２は、第２プロセッサ２０に対するロード及びストアに関する要求を、指示１５０８と指示出力１５１０を経て第２プロセッサ２０に送り、その要求に対応する応答を第２プロセッサ２０から入力１５１１と返送１５０９を経て取得する。
【００３４】
キャッシュ制御部１５０２は、その要求に対応するデータがメモリ１６内にあるか否かの検出結果を、メモリ返送入力１５０７を経て取得する。
【００３５】
なお、キャッシュメモリ１５に対する要求の発行元が第２プロセッサ２０である場合には、キャッシュ制御部１５０２は、第２プロセッサ２０からの要求を、指示入力１５０４を経て取得し、その要求に応じた結果を、返送出力１５０５を経て要求元である第２プロセッサ２０に返送する。
【００３６】
図３と図４を参照して、キャッシュメモリ１５に格納される制御情報の一例について説明する。
【００３７】
図３は、本実施形態によるキャッシュメモリに格納される制御情報の構成図である。この図３に示すキャッシュライン１５０２１は、キャッシュメモリ１５に格納される制御情報の一例である。
【００３８】
キャッシュライン１５０２１は、例えば、有効情報１５０２２、アドレスタグ１５０２３、置き換え情報１５０２４、ノンコヒーレント情報１５０２５等の項目の情報を含む。
【００３９】
有効情報１５０２２には、該当するキャッシュライン１５０２１の有効性を示す情報が登録される。
【００４０】
アドレスタグ１５０２３には、キャッシュラインにキャッシュされたデータが、キャッシュされる前に格納されていたアドレス（元アドレス）に関する情報が登録される。
【００４１】
置き換え情報１５０２４には、このキャッシュライン１５０２１にキャッシュされたデータがその結果に従い置き換えられる情報であることを示す情報が登録される。例えば、置き換えに関する優先度は、ＬＲＵ（Least Recently Used）などのアルゴリズムによって決定される。これに関するアルゴリズムは上記以外のものであって良い。
【００４２】
ノンコヒーレント情報１５０２５には、ノンコヒーレントロード命令によってキャッシュミスが生じたことを示す情報が登録される。例えば、ノンコヒーレントロード命令によってキャッシュミスが生じた場合を１で示し、上記によってキャッシュミスが生じなかった場合を０で示し、ノンコヒーレントロード命令以外の処理に起因するストア処理よってキャッシュミスが生じなかった場合も０で示す。ノンコヒーレント情報１５０２５は、例えば、例えば、キャッシュラインがフィルされる際にセットされる。
【００４３】
なお、第１プロセッサ１０が第２プロセッサ２０に対して通知データリクエストには、例えば、図３に示すキャッシュライン１５０２１の情報が格納されている。この場合、ノンコヒーレント情報１５０２５は、ノンコヒーレントロード命令を明示する情報として利用される。上記のデータリクエストを取得した第２プロセッサ２０は、ノンコヒーレント情報１５０２５を参照することにより、ノンコヒーレントロード命令によるデータリクエストであることを検出する。
【００４４】
図４を参照して、他のプロセッサである第２プロセッサ２０によって参照される領域の識別について説明する。図４は、本実施形態による他のプロセッサによって参照されている領域を示す情報について説明するための図である。参照有無情報１５０３１は、第２プロセッサ２０などの他のプロセッサがメモリ１６のメモリ領域を参照しているか否かをメモリ領域のアクセス単位毎に示す情報である。
【００４５】
キャッシュディレクトリ１５０３は、参照有無情報１５０３１を、メモリ１６のメモリ領域に対応づけて保持している。
【００４６】
なお、他のプロセッサによって参照されていることを示す方式として、多数の実装方式が当然考えられ得る。以下の説明を簡便にするため、メモリ１６全体をキャッシュラインサイズに分割したときのその全ての領域に対して、参照有無情報１５０３１をそれぞれ持つものとする。なお、これに代わり、ページ単位に参照有無情報を持つ方式、参照有無情報をキャッシュ方式、あるいは接続されるプロセッサ全てがキャッシュする最大量をカバーできる程度に圧縮してディレクトリに保持するといった方式は当然に考えうる拡張である。
【００４７】
［第２プロセッサ２０］
次に、図５を参照して、第２プロセッサ２０のキャッシュメモリの構成について説明する。図５は、本実施形態による第２プロセッサ２０のキャッシュメモリの構成図である。
【００４８】
キャッシュメモリ２５は、例えば、データアレイ２５０１、キャッシュ制御部２５０２、及びキャッシュディレクトリ２５０３を備える。
【００４９】
データアレイ２５０１、キャッシュ制御部２５０２、データアレイ２５０１、及びキャッシュディレクトリ２５０３は、前述のキャッシュメモリ１５は、データアレイ１５０１、キャッシュ制御部１５０２、データアレイ１５０１、及びキャッシュディレクトリ１５０３と同様に構成される。
【００５０】
図６と図７を参照して、キャッシュメモリ２５に格納される制御情報の一例について説明する。
【００５１】
図６は、本実施形態によるキャッシュメモリに格納される制御情報の構成図である。この図６に示すキャッシュライン２５０２１は、キャッシュメモリ２５に格納される制御情報の一例である。キャッシュライン２５０２１は、例えば、有効情報２５０２２、アドレスタグ２５０２３、置き換え情報２５０２４、ノンコヒーレント情報２５０２５等の項目の情報を含む。
【００５２】
有効情報２５０２２、アドレスタグ２５０２３、置き換え情報２５０２４、及びノンコヒーレント情報２５０２５は、前述の有効情報１５０２２、アドレスタグ１５０２３、置き換え情報１５０２４、及びノンコヒーレント情報１５０２５と同様に構成される。
【００５３】
図７を参照して、他のプロセッサである第１プロセッサ１０によって参照される領域の識別について説明する。図７は、本実施形態による他のプロセッサによって参照されている領域を示す情報について説明するための図である。参照有無情報２５０３１は、第１プロセッサ２０などの他のプロセッサがメモリ２６のメモリ領域を参照しているか否かをメモリ領域のアクセス単位毎に示す情報である。参照有無情報２５０３１は、前述の参照有無情報１５０３１と同様に構成される。
【００５４】
［各プロセッサの動作］
まず、ロード命令を例示して動作について説明する。
第１プロセッサ１０と第２プロセッサ２０は、ロード命令として、「通常ロード命令」と「ノンコヒーレントロード命令」とを夫々実行する。なお、「ノンコヒーレントロード命令」が第１ロード命令の一例であり、その命令の実行に係る処理が第１ロード処理の一例である。「通常ロード命令」が第２ロード命令の一例であり、その命令の実行に係る処理が第２ロード処理の一例である。
【００５５】
以下、これらを対比して説明する。なお、以下の説明において、上記の各命令を実行するプロセッサをローカル側と定義して、その命令によりローカル側からアクセスされるプロセッサをリモート側と定義する。以下、第１プロセッサ１０がローカル側になり、第２プロセッサ２０がリモート側になる場合について説明する。
【００５６】
（通常ロード命令）
「通常ロード命令」とは、キャッシュメモリのコヒーレント性を保ちながら、リモート側に格納されているデータを取得する命令のことである。
【００５７】
以下、通常ロード命令が第１プロセッサ１０のコア１１で実行されたときの動作について説明する。
【００５８】
まず、第１プロセッサ１０のコア１１は、通常ロード命令を実行する。これにより、コア１１は、通常ロード命令に係るデータの読みだし（ロード）のリクエスト（データリクエスト）を、ネットワークオンチップ１３を通じてキャッシュメモリ１５に伝える。キャッシュメモリ１５は、指示入力１５０４を経て上記のデータリクエストを取得する。このリクエストは、例えば前述の図３の制御情報の形式に形成されている。
【００５９】
キャッシュ制御部１５０２は、このデータリクエストがキャッシュメモリ１５においてキャッシュヒットするものであるか否かを判定する。
【００６０】
キャッシュヒットした場合は、キャッシュ制御部１５０２は、データアレイ１５０１から該当するキャッシュラインに対応するデータを読み出し、返送出力１５１３を経由して返送出力１５０５へデータを返送する。
【００６１】
キャッシュミスした場合、キャッシュ制御部１５０２は、目的アドレスがメモリ２６内にあるということを識別し、指示１５０８と指示出力１５１０とを経て、前述の図３の制御情報を含むデータリクエストを送る。
【００６２】
そのデータリクエストは、ネットワークＮＷを通じて、リモート側の第２プロセッサ２０に到着する。
【００６３】
第２プロセッサ２０のキャッシュメモリ２５は、第１プロセッサ１０から送信されたデータリクエストを取得する。キャッシュメモリ２５のキャッシュ制御部１５０２は、キャッシュメモリ２５内に該当データが含まれているか否かを判定する。
【００６４】
該当データがキャッシュメモリ２５に含まれていた場合、キャッシュ制御部２５０２は、データアレイ２５０１から該当データを読み出す。キャッシュ制御部２５０２は、返送出力２５１３を通してデータを取得して、ターゲット値を、返送出力２５０５を経てネットワークＮＷに出力する。このターゲット値は、該当データが格納された記憶領域の位置（アドレス等）を示す情報である。データリクエストの要求元である第１プロセッサ１０は、この応答を取得する。
【００６５】
これに合わせて、キャッシュ制御部２５０２は、キャッシュディレクトリ２５０３内の該当アドレスの参照有無情報２５０３１に、当該アドレスのデータが参照されていることを示す情報を登録する。これにより、第２プロセッサ２０が管轄するメモリ２６のデータは、第１プロセッサ１０から実際に参照されているものとして識別される。
【００６６】
なお、第２プロセッサ２０側でメモリ２６に対するデータの更新が、キャッシュメモリ２５上の更新を伴うものである場合には、第２プロセッサ２０は、第１プロセッサ１０に対するインバリデート指示を出す。このインバリデート指示はネットワークＮＷを通って第１プロセッサ１０に伝わり、キャッシュメモリ１５においてそのデータのインバリデートが行われる。このインバリデート指示として送信されたパケットにより、ネットワークＮＷのバンド幅が消費される。
【００６７】
該当データがキャッシュメモリ２５に含まれていなかった場合は、キャッシュ制御部２５０２は、データの出力指示を、メモリ指示出力２５０６を経てメモリコントローラ２４に送り、メモリ２６からデータを読み出す。キャッシュ制御部２５０２は、メモリ返送入力２５０７を通してデータを取得して、ターゲット値を、返送出力２５０５を経てネットワークＮＷに出力し、データリクエストの要求元に返送する。
【００６８】
これに合わせて、キャッシュ制御部２５０２は、第２プロセッサ２０側でメモリ２６に対する更新を行い、その更新の結果がキャッシュメモリ２５上の更新を伴うものである場合には第２プロセッサ２０は、第１プロセッサ１０に対するインバリデート指示を出す。インバリデート指示はネットワークＮＷを通って第１プロセッサ１０に伝わり、キャッシュメモリ１５においてそのデータのインバリデートが行われる。このインバリデート指示として送信されたパケットにより、ネットワークＮＷのバンド幅が消費される。
【００６９】
（ノンコヒーレントロード命令）
「ノンコヒーレントロード命令」とは、「通常ロード命令」に比べて、キャッシュメモリのコヒーレント性を保つための処理の一部を省略して、リモート側に格納されているデータを取得する命令のことである。
【００７０】
例えば、このノンコヒーレントロード命令により特定される記憶領域のデータが、メモリ２６内に格納されていると仮定し、ノンコヒーレントロード命令が第１プロセッサ１０のコア１１で実行されたときの動作を詳細に説明する。
【００７１】
まず、コア１１がノンコヒーレントロード命令を実行する。これにより、コア１１は、ノンコヒーレントロード命令に係るデータの読みだし（ノンコヒーレントロード）のリクエスト（データリクエスト）を、ネットワークオンチップ１３を通じてキャッシュメモリ１５に伝える。キャッシュメモリ１５は、指示入力１５０４を経て上記のデータリクエストを取得する。このデータリクエストは、例えば前述の図３の制御情報によって形成されている。
【００７２】
キャッシュ制御部１５０２は、このデータリクエストがキャッシュヒットするものであるか否かを判定する。
【００７３】
キャッシュヒットした場合は、キャッシュ制御部１５０２は、データアレイ１５０１から該当するキャッシュラインに対するデータを読み出し、返送出力１５１３を経由して返送出力１５０５へデータを返送する。
【００７４】
キャッシュミスした場合、キャッシュ制御部１５０２は、目的アドレスがメモリ２６内にあるということを判断し、指示１５０８と指示出力１５１０とを経て、前述の図３の制御情報によるデータリクエストを送る。
【００７５】
そのデータリクエストは、ネットワークＮＷを通じて、リモート側の第２プロセッサ２０に到着する。
【００７６】
第２プロセッサ２０のキャッシュメモリ２５は、第１プロセッサ１０から送信されたデータリクエストを取得する。キャッシュメモリ２５のキャッシュ制御部１５０２は、キャッシュメモリ２５内に該当データが含まれているか否かを判定する。
【００７７】
該当データがキャッシュメモリ２５に含まれていた場合、キャッシュ制御部２５０２は、データアレイ２５０１から該当データを読み出す。キャッシュ制御部２５０２は、返送出力２５１３を通してデータを取得して、ターゲット値を、返送出力２５０５を経てネットワークＮＷに出力し、データリクエストの要求元に返送する。
【００７８】
なお、キャッシュ制御部２５０２は、上記の応答の際に、キャッシュディレクトリ２５０３内の該当アドレスの参照有無情報２５０３１に、当該アドレスのデータが参照されていることを示す情報を登録しない。これにより、第２プロセッサ２０が管轄するメモリ２６の当該アドレスのデータは、第１プロセッサ１０から実際に参照されているものであるが、あたかも参照されていないものとして識別される。
【００７９】
そのため、第２プロセッサ２０側でメモリ２６に対するデータの更新が、キャッシュメモリ２５上の更新を伴うものであったとしても、第１プロセッサ１０に対するインバリデート指示が発行されない。そのため、これに伴う無用なパケットを、ネットワークＮＷ上に送出すること抑制することができ、ネットワークＮＷのバンド幅が消費されることを抑制できる。
【００８０】
該当データがキャッシュメモリ２５に含まれていなかった場合は、メモリ指示出力２５０６は、データの出力指示を、メモリ指示出力２５０６を経てメモリコントローラ２４に送り、メモリ２６からデータを読み出す。キャッシュ制御部２５０２は、メモリ返送入力２５０７を通してデータを取得して、ターゲット値を、返送出力２５０５を経てネットワークＮＷに出力し、データリクエストの要求元に返送する。
【００８１】
なお、この際も、キャッシュ制御部２５０２は、キャッシュディレクトリ２５０３内の該当アドレスの参照有無情報２５０３１に、当該アドレスのデータが参照されていることを示す情報を登録しない。これにより、第２プロセッサ２０が管轄するメモリ２６の当該アドレスのデータは、第１プロセッサ１０から実際に参照されているものであるが、あたかも参照されていないものとして識別される。
【００８２】
そのため、第２プロセッサ２０側でメモリ２６に対するデータの更新が、キャッシュメモリ２５上の更新を伴うものであったとしても、第１プロセッサ１０に対するインバリデート指示が発行されない。そのため、これに伴う無用なパケットを、ネットワークＮＷ上に送出すること抑制することができ、ネットワークＮＷのバンド幅が消費されることを抑制できる。
【００８３】
この後、データリクエストの要求元である第１プロセッサ１０は、この応答を取得する。
【００８４】
図８と図９を参照して、本実施形態のキャッシュ制御について説明する。図８と図９は、本実施形態のキャッシュ制御について説明するための図である。この図は上下に２分されており、図９は、図８の下部に続く。
【００８５】
各図の左側に、第１プロセッサ１０が実行する処理の流れと各段階の処理の結果としてキャッシュメモリ１５に格納されているキャッシュライン１５０２１の状態を示し、その右側に、第２プロセッサ２０が実行する処理の流れと各段階の処理の結果としてキャッシュメモリ２５に格納されているキャッシュライン２５０２１の状態を示す。
【００８６】
なお、キャッシュライン１５０２１における各項目「有効」、「タグ」、「ＵＤＩ」及び「ＮＣＩ」は、前述の有効情報１５０２２、アドレスタグ１５０２３、置き換え情報１５０２４、ノンコヒーレント情報１５０２５に対応する。制御情報２５０２１についても同様である。
【００８７】
なお、メモリ空間は、第１プロセッサ１０と第２プロセッサ２０とに割り付けられていて、第１プロセッサ１０が管轄するメモリ１６には、領域ａ１とａ２が含まれ、第２プロセッサ２０が管轄するメモリ２６には、領域ｂ１とｂ２とｂ３が含まれると仮定する。
【００８８】
図８（ａ１）に示す初期段階では、キャッシュライン１５０２１とキャッシュライン２５０２１５として格納されたデータがないものとする。
【００８９】
第１プロセッサ１０のコア１１は、領域ａ１に対する通常ロード命令を実行する（ステップＳ１０）。キャッシュメモリ１５は、領域ａ１に対応するキャッシュライン１５０２１を登録する（ステップＳ１１）。その結果、通常ロード命令の実行であるため、ノンコヒーレント情報１５０２５に０が登録される（図８（ｂ１））。
【００９０】
次に、第１プロセッサ１０のコア１１は、領域ｂ１に対する通常ロード命令を実行し（ステップＳ２０）、キャッシュメモリ１５に第２プロセッサ２０に対するデータリクエストを送信させる（ステップＳ２１）。第２プロセッサ２０は、これに応答し（ステップＳ２２）、領域ｂ１に対応する制御情報を出力し（ステップＳ２４）、キャッシュメモリ２５の状態を更新する（ステップＳ２３、図８（ｃ２））。その結果、領域ｂ１に対応するキャッシュライン２５０２１５が登録される（図８（ｃ１））。
【００９１】
キャッシュメモリ１５は、第２プロセッサ２０から領域ｂ１の制御情報を取得して、領域ｂ１に対応するキャッシュライン１５０２１を登録し（ステップＳ２５）、コア１１に転送する。その結果、通常ロード命令の実行であるため、領域ｂ１に対応するキャッシュライン１５０２１のノンコヒーレント情報１５０２５に０が登録される。
【００９２】
次に、第１プロセッサ１０のコア１１は、領域ｂ２に対するノンコヒーレントロード命令を実行し（ステップＳ３０）、キャッシュメモリ１５に第２プロセッサ２０に対するデータリクエストを送信させる（ステップＳ３１）。第２プロセッサ２０は、これに応答し（ステップＳ３２）、領域ｂ２の制御情報を出力する（ステップＳ３４）。その結果、領域ｂ２に対応するキャッシュライン１５０２１５が登録される（図８（ｄ１））。なお、キャッシュライン１５０２１は更新されず、領域ｂ２に対応するキャッシュライン２５０２１は登録されない（図８（ｄ２））。
【００９３】
上記の通りキャッシュメモリ２５にはデータの読み出しの履歴が残らない。そのため、第２プロセッサ２０は、上記のデータの読み出しの有無によらずに必要な処理を実施する際に、キャッシュコヒーレンスを保証するための制限に影響されない。この制限に起因するスヌープ、無効化などの処理が発生しない。
【００９４】
なお、キャッシュメモリ１５は、第２プロセッサ２０から領域ｂ２の制御情報を取得して、領域ｂ２に対応するキャッシュライン１５０２１を登録し（ステップＳ３５）、コア１１に転送する。その結果、当該命令がノンコヒーレントロード命令の実行であるため、領域ｂ２に対応するノンコヒーレント情報１５０２５に１が登録され（図８（ｄ１））、この情報からノンコヒーレントな領域の情報として領域ｂ２に対応するキャッシュライン１５０２１が登録されていることを識別できる。
【００９５】
図９に進む。次に、第１プロセッサ１０のコア１１は、領域ｂ２に対するストア命令を実行し（ステップＳ４０）、キャッシュメモリ１５にこれを指示する。キャッシュメモリ１５は、領域ｂ２に対応するキャッシュライン１５０２１にヒットする（図９（e１））。また、そのノンコヒーレント情報１５０２５が１であることから、キャッシュメモリ１５は、ノンコヒーレントな領域に対するデータリクエストであることを検出する。
【００９６】
なお、上記の場合、キャッシュメモリ１５は、ヒットしたキャッシュラインを無効化してもよい。第１プロセッサ１０は、そのキャッシュラインを無効化した後に、目的データがフィルされた他のキャッシュラインを保持するようにしてもよい（ステップＳ４１）。
【００９７】
なお、上記はストア命令の事例であるが、通常ロード命令の場合も同様である。例えば、キャッシュメモリ１５は、通常ロード命令の実行によってキャッシュラインがヒットした場合にも、当該ヒットしたキャッシュラインを無効化してもよい。
【００９８】
また、上記のようにノンコヒーレントな領域ｂ２に対応するキャッシュライン１５０２１にヒットした場合に、キャッシュメモリ１５は、例外処理を発生させてもよい。なお、キャッシュライン２５０２１は、上記の例外処理により異なる結果を取りうるが、図９（ｅ２）に示す例では図８（ｄ２）から更新されていない例を示す。
【００９９】
例えば、ノンコヒーレントな領域としてキャッシュされた領域は、そのデータの参照などを目的とするものであり、関連する処理の中ではこの領域に対するストア処理は発生しないはずである。そのような場合においても、上記の事象が生じることがある。例えば、実行している処理に異常な状態が生じた場合、或いは、同じプロセッサ内の他のコアの処理が干渉した場合などである。上記の場合、キャッシュメモリ１５は、コア１１に対する割り込みを発生させて、上記の通りコア１１に所定の例外処理を実行させてもよい。
【０１００】
この後に、第１プロセッサ１０のコア１１は、上記ステップＳ３０と同様に、領域ｂ３に対するノンコヒーレントロード命令を実行する（ステップＳ５０）ことにより、キャッシュライン１５０２１に、領域ｂ３に関するキャッシュライン１５０２１が追加される（ステップＳ５５、図９（ｆ１））。ステップＳ５１からステップＳ５４の詳細は、前述のステップＳ３１からステップＳ３４を参照する。なお、図９（ｆ２）に示す例では図８（ｄ２）から更新されていない例を示す。
【０１０１】
次に、第１プロセッサ１０のコア１１は、キャッシュメモリ１５に、領域ｂ３に関するパージ（削除）を指示する（ステップＳ６０）。キャッシュメモリ１５は、領域ｂ３に関するキャッシュライン１５０２１を削除する（ステップＳ６１、図９（ｇ１）））。なお、ステップＳ６０の処理の実施は任意に設定できる。
【０１０２】
比較例を挙げて、ステップＳ６０の処理の適用例について説明する。
比較例の場合、参照を目的にノンコヒーレントロード命令の処理が実施されると、そのノンコヒーレントロード命令でフィルされたキャッシュラインがしばらくの間キャッシュメモリに残る。上記の領域に対する書き込みを行う際に、そのキャッシュラインにヒットすると、上記の通り例外処理に繋がってしまう。それを避けるには、当該キャッシュラインがキャッシュメモリからなくなるまで、ストア処理（動作）の実行を待機しなければならない。
【０１０３】
そこで、本実施形態では、参照に関する処理が終わった段階で、コア１１がそのキャッシュラインを削除することにより、当該キャッシュラインがキャッシュメモリ１５になくなる。これにより、当該キャッシュラインがキャッシュメモリ１５になくなるまで待たずに上記の領域に対するストア処理（動作）の実行が可能になる。
【０１０４】
上記の実施形態に示した計算機１は、リモート側のキャッシュメモリ２５に、ノンコヒーレントロード命令の実行によるデータの読み出しの履歴を残さないことにより、第２プロセッサ２０がデータの読み出しの履歴の有無によらずに必要な処理を実施できる。その際に、キャッシュコヒーレンスを保証するための制限に影響されることがなく、この制限に起因するスヌープ、無効化などの処理が発生しない。ノンコヒーレントロード命令による処理は、第１ロード処理の一例である。
【０１０５】
また、第１プロセッサ１０は、ノンコヒーレントロード命令の実行によりフィルされるキャッシュラインを保持し、当該キャッシュラインにノンコヒーレントな領域を示す情報を登録するキャッシュメモリ１５を備える。これにより、当該キャッシュラインにフィルされた情報が、ノンコヒーレントな領域の情報として登録されていることが識別可能になる。
【０１０６】
図１０は、第１プロセッサ１０（半導体装置）の最小構成を示す図である。
第１プロセッサ１０は、複数のプロセッサによって同一メモリ空間を共有する。第１プロセッサ１０は、少なくともコア（実行部）と、キャッシュメモリとを備える。コア１１は、他のプロセッサに割り当てられたリモートメモリ内の領域に対するキャッシュコヒーレンスを保証しないノンコヒーレントロード命令を実行する。キャッシュメモリ１５は、自プロセッサに割り当てられたローカルメモリからのデータの読み出しの履歴を残す。キャッシュメモリ１５は、他のプロセッサのキャッシュコヒーレンスを保証しないノンコヒーレントロード命令の実行による前記ローカルメモリからのデータの読み出しの場合には、前記データの読み出しの履歴を残さない。例えば、このような第１プロセッサ１０と同様の構造を有する第２プロセッサなどを組み合わせることにより、第１プロセッサ１０は、処理能力の低下を抑制することができる。
【０１０７】
また、少なくとも第１プロセッサ１０のコア１１に実行させるためのプログラムは、第２プロセッサ２０に割り当てられたメモリ２６内の領域に対するデータを読み出し、その領域に対するキャッシュコヒーレンスを保証しないノンコヒーレントロード命令を含み、ノンコヒーレントロード命令の実行によりメモリ２６からのデータリクエストを送信させるものであってよい。そのデータリクエストに、第２プロセッサ２０のキャッシュメモリ２５にデータの読み出しの履歴を残させないための情報を含めることで、上記の処理をプログラムの実行によって実現できる。
【０１０８】
なお、ノンコヒーレントロード命令は、アプリケーションレベルのコンピュータプログラムに含まれていてもよく、或いは、上記コンピュータプログラムにより起動される他のコンピュータプログラムに含まれていてもよい。
【０１０９】
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものとする。
【０１１０】
上述の計算機１は内部に、コンピュータを有している。そして、上述した各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【０１１１】
なお、図１における処理部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述した各処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、ホームページ提供環境（あるいは表示環境）を備えたＷＷＷシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【０１１２】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【０１１３】
１・・・計算機、
１０・・・第１プロセッサ（半導体装置）、２０・・・第２プロセッサ（半導体装置）、
１１、１２、２１、２２・・・コア、
１３、２３・・・ネットワークオンチップ、
１４、２４・・・メモリコントローラ、
１５・・・キャッシュメモリ（ローカルキャッシュメモリ）、
２５・・・キャッシュメモリ（リモートキャッシュメモリ）、
１６・・・メモリ（ローカルメモリ）、
２６・・・メモリ（リモートメモリ）、
１５０１、２５０１・・・データアレイ、
１５０２、２５０２・・・キャッシュ制御部、
１５０３、２５０３・・・キャッシュディレクトリ、
１５０２１・・・キャッシュライン（第１キャッシュライン）、
２５０２１・・・キャッシュライン（第２キャッシュライン）、
１５０２２、２５０２２・・・有効情報、
１５０２３、２５０２３・・・アドレスタグ、
１５０２４、２５０２４・・・書き換え情報、
１５０２５、２５０２５・・・ノンコヒーレント情報、
１５０３１、２５０３１・・・参照有無情報
【図１】
2019175006.tif 000003
【図２】
2019175006.tif 000004
【図３】
2019175006.tif 000005
【図４】
2019175006.tif 000006
【図５】
2019175006.tif 000007
【図６】
2019175006.tif 000008
【図７】
2019175006.tif 000009
【図８】
2019175006.tif 000010
【図９】
2019175006.tif 000011
【図１０】
2019175006.tif 000012