(57)【要約】【課題】下位キャッシュメモリに対するロード要求に対して適切なステートで要求元に応答し、演算処理装置の処理性能を向上させる。【解決手段】データを保持するＬ１キャッシュメモリを備え、演算処理を行うとともに要求を出力する複数のＣＰＵコアと、複数のＣＰＵコアに接続されるＬ２キャッシュメモリを有し、Ｌ２キャッシュメモリは、複数のＣＰＵコアが備えるＬ１キャッシュメモリのいずれもが保持しない対象データを要求する要求が、他のＣＰＵコアにも対象データの保持を許容するロード要求である場合、対象データが非排他的データである旨を表示する非排他情報と対象データとを要求を送信したＣＰＵコアに応答し、他のＣＰＵコアには対象データの保持を許容しないロード要求である場合、対象データが排他的データである旨を表示する排他情報と対象データとを要求を送信したＣＰＵコアに応答する。【選択図】図１
2014048829.tif 000002
【特許請求の範囲】
【請求項１】
データを保持する第１のキャッシュメモリを備え、演算処理を行うとともに要求を出力する複数の演算処理部と、
前記複数の演算処理部のいずれかから受信した、前記複数の演算処理部が備える第１のキャッシュメモリのいずれもが保持しない対象データを要求する要求が、前記要求を送信した演算処理部以外の演算処理部にも前記対象データの保持を許容するロード要求である場合、前記対象データが非排他的データである旨を表示する非排他情報と前記対象データとを前記要求を送信した演算処理部に応答し、前記要求を送信した演算処理部以外の演算処理部には前記対象データの保持を許容しないロード要求である場合、前記対象データが排他的データである旨を表示する排他情報と前記対象データとを前記要求を送信した演算処理部に応答する第２のキャッシュメモリを有することを特徴とする演算処理装置。
【請求項２】
前記第２のキャッシュメモリは、
前記対象データの前記第１のキャッシュメモリにおける保持状態を表示する第１の保持状態情報と、前記対象データの前記第２のキャッシュメモリにおける保持状態を表示する第２の保持状態情報とを対象データに対応させて記憶する記憶部を有し、前記記憶部に保持した第１の保持状態情報と第２の保持状態情報とに基づいて、対象データに対応する非排他情報又は排他情報を、前記要求を送信した演算処理部に応答することを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記第２のキャッシュメモリはさらに、
前記第２のキャッシュメモリでヒットした対象データを要求するロード要求をデコードする第１のデコード部と、
前記第２のキャッシュメモリでヒットした対象データに対応する第１の保持状態情報と第２の保持状態情報をデコードする第２のデコード部と、
前記第１のデコード部の第１のデコード結果及び前記第２のデコード部の第２のデコード結果に基づいて、前記要求を送信した演算処理部に応答する応答生成部を有することを特徴とする請求項２記載の演算処理装置。
【請求項４】
前記対象データを要求する要求が、前記要求を送信した演算処理部以外の演算処理部にも前記対象データの保持を許容するロード要求である場合、
前記対象データと、前記対象データに対応する非排他情報とを、前記第２のキャッシュメモリから前記要求を送信した演算処理部が有する第１のキャッシュメモリに予め応答するプリフェッチ要求であることを特徴とする請求項１〜３の何れか１項に記載の演算処理装置。
【請求項５】
前記対象データを要求する要求が、前記要求を送信した演算処理部以外の演算処理部には前記対象データの保持を許容しないロード要求である場合、
前記対象データと、前記対象データに対応する排他情報とを、前記第２のキャッシュメモリから前記要求を送信した演算処理部が有する第１のキャッシュメモリに予め応答するプリフェッチ要求であることを特徴とする請求項１〜４の何れか１項に記載の演算処理装置。
【請求項６】
データを保持する第１のキャッシュメモリを備えるとともに演算処理を行う複数の演算処理部と、前記複数の演算処理部に接続される第２のキャッシュメモリとを有する演算処理装置の制御方法において、
前記複数の演算処理部のいずれかが要求を出力し、
前記第２のキャッシュメモリが、前記複数の演算処理部のいずれかから受信した、前記複数の演算処理部が備える第１のキャッシュメモリのいずれもが保持しない対象データを要求する要求が、前記要求を送信した演算処理部以外の演算処理部にも前記対象データの保持を許容するロード要求である場合、前記対象データが非排他的データである旨を表示する非排他情報と前記対象データとを前記要求を送信した演算処理部に応答し、前記要求を送信した演算処理部以外の演算処理部には前記対象データの保持を許容しないロード要求である場合、前記対象データが排他的データである旨を表示する排他情報と前記対象データとを前記要求を送信した演算処理部に応答することを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
ＭＥＳＩ（Modified、Exclusive、Shared、Invalid）ステートを採用したようなクリーンな状態で排他権を移譲できるキャッシュシステムがある。ＭＥＳＩ方式における各ステートは、以下の通りである。Ｍ（Modified）ステートは、他の要求元は保持しておらず、キャッシュメモリが排他権付でデータを保持していることを示す。このデータは、下位キャッシュメモリ（又はメモリ）と異なるデータである。この状態から任意にストアを行ってデータを変更することができ、データを変更してもＭステートのままである。Ｉステートになるときに下位キャッシュメモリ（又はメモリ）を保持していたデータで更新しなければならない（ライトバック）。
【０００３】
Ｅ（Exclusive）ステートは、他の要求元は保持しておらず、キャッシュメモリが排他権付でデータを保持していることを示す。このデータは、下位キャッシュメモリ（又はメモリ）と異なるデータである。この状態から任意にストアを行ってデータを変更することができ、データを変更するとＭステートに変わる。Ｓ（Shared）ステートは、キャッシュメモリが排他権なしでデータを保持していることを示す。このデータは、下位キャッシュメモリ（又はメモリ）と同じ内容である。要求元が複数である場合、複数の要求元が同時にＳステート（共有状態）となることができる。ストアを行うためには排他権を獲得し、Ｅステートにならなければならない。Ｉ（Invalid）ステートは、キャッシュメモリがデータを保持していないことを示す。
【０００４】
このようなキャッシュシステムにおいて、あるデータブロックがＬ２（Ｌｅｖｅｌ−２）キャッシュメモリにＥステート又はＭステートで保持されており、どの要求元にも保持されていないとき、ある要求元からロード要求があった場合には要求元に「Ｅステートで応答する」、「Ｓステートで応答する」の２通りの方式がある。以下、演算部及びＬ１（Ｌｅｖｅｌ−１）キャッシュメモリをそれぞれ有する複数の演算処理部としてのＣＰＵコアを備え、各コアがＬ２（Ｌｅｖｅｌ−２）キャッシュメモリを共有するシステムを例に説明する。要求元が各ＣＰＵコアであり、要求先がＬ２キャッシュメモリである。なお、以降の説明において、下位キャッシュメモリはＥステートを保持した状態であるとする。
【０００５】
図１６（Ａ）は、最初に上位キャッシュメモリであるコア０（Ｃｏｒｅ-０）のＬ１キャッシュメモリがロード要求（ＬＤ要求）を行い、それに対して下位キャッシュメモリであるＬ２キャッシュメモリがＥステートで応答する例を示している。そして、次に、別の要求元であるコア１（Ｃｏｒｅ-１）のＬ１キャッシュメモリが同じキャッシュラインにロード要求を発行すると、最初の要求元のコア０との間でＳステートで応答するスヌープ（ｓｎｏｏｐ）トランザクションが行われた後、データを共有する。この例では、スヌープトランザクションが発生するため、性能的に不利となる。
【０００６】
図１７（Ａ）は、最初に上位キャッシュメモリであるコア０のＬ１キャッシュメモリがロード要求を行い、それに対して下位キャッシュメモリであるＬ２キャッシュメモリがＳステートで応答する例を示している。この場合には、図１６（Ａ）に示した例と異なり、次に別の要求元が同じキャッシュラインにロード要求を発行しても、最初の要求元との間でのスヌープトランザクションが発生せず、すぐにデータを共有することができる。図１６（Ａ）に示した例と比較して性能的に有利となる。
【０００７】
図１８にフロー図を示すように、図１６（Ａ）に示した例では、図１８（Ａ）の時刻Ｔ１０１において演算器にデータが供給されるが、図１７（Ａ）に示した例では、時刻Ｔ１０１より前の図１８（Ｂ）の時刻Ｔ１０２において演算器にデータが供給される。なお、図１８（Ａ）及び図１８（Ｂ）において、Core-0 L1-pipeはコア０のＬ１キャッシュメモリのパイプライン処理を示し、Core-1 L1-pipeはコア１のＬ１キャッシュメモリのパイプライン処理を示す。また、L1-pipeはＬ２キャッシュメモリのパイプライン処理を示す。
【０００８】
しかし、図１６（Ｂ）に示すように、最初にコア０のＬ１キャッシュメモリがロード要求を行い、それに対してＬ２キャッシュメモリがＥステートで応答する場合には、次にそのコア０が同じキャッシュラインにストア要求（ＳＴ要求）を発行すると、コア０はＥステートでデータを保持しているので直ちにストア処理を実行することができる。それに対して、図１７（Ｂ）に示すように、最初にコア０のＬ１キャッシュメモリがロード要求を行い、それに対してＬ２キャッシュメモリがＳステートで応答する場合には、次にそのコア０が同じキャッシュラインにストア要求を発行すると、コア０自体はデータをＳステートで保持しているのでストア要求を発行する必要がある。
【０００９】
このように、それぞれ性能面からのトレードオフが存在するが、「どのコアも所持していない」状態において、あるコアがロード要求した場合には、そのコアのみが使用すると推定して「Ｅステートで応答する」設計とするのが一般的である。
【００１０】
プロセッサのデータ書き込み時にキャッシュメモリの変更フラグをセットし、プロセッサからのデータ読み出し時にキャッシュメモリの変更フラグのリセットを指示されるキャッシュメモリを有し、その変更フラグをリセットさせる特定の命令を設けたキャッシュメモリの制御方式が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平４−４８３５８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
どのコアも保持していない状態で、あるコアからロード要求があったときにＥステートで応答するとして設計した場合に問題になるのは、以下のようなケースである。複数のコアから何度も参照される場合において、リプレースされ一旦、どのコアも保持していない状態になるケースである。あるコアが保持していればＳステートで応答されるために問題は発生しないが、コアでのキャッシュのリプレースが頻繁である場合に次のようなケースが発生する。図１９及び図２０を参照して説明する。
【００１３】
図１９（Ａ）に示すように、最初のコア０からのロード要求に対してＥステートで応答し、次に、別のコア１が同じキャッシュラインにロード要求を発行すると、最初のコアとの間でスヌープトランザクションが行われた後、データを共有する。さらに、別のコア２が同じキャッシュラインにロード要求を発行すると、既にコア０とコア１との２個のコア間で共有状態にあるのでコア２に対してもＳステートで応答する。このように、最初の１回だけスヌープトランザクションが発生して、それ以降は発生しないケースを想定すると、それほど問題はあらわれなく性能低下も少ない。
【００１４】
また、図１９（Ｂ）に示すように、最初のコア０からのロード要求に対してＥステートで応答し、データが演算に使用された後、同一インデックスの新規要求が発生するとリプレースが行われ、所持状態ではなくなる（Ｉステートとなる）。このように、どのコアも所持していない状態でコア２がロード要求を発行すると、どのコアも所持していないのでＥステートで応答される。このような場合にも、スヌープトランザクションが発生しないので性能低下は発生しない。
【００１５】
それに対して、図２０に示すように、最初のコア０からのロード要求に対してＥステートで応答し、次に、別のコア１が同じキャッシュラインにロード要求を発行すると、最初のコアとの間でスヌープトランザクションが行われた後、データを共有する。そして、コア２が同じキャッシュラインにロード要求を発行する前に、データブロックを参照してから十分時間が経過したことによりリプレースによる無効化が発生した場合には、コア２に対してＥステートで応答することになる。したがって、この状態で別のコア０やコア１から同じキャッシュラインにロード要求が発生すると、再びスヌープトランザクションが発生することになる。したがって、図１９（Ａ）及び図１９（Ｂ）に示した例と比較して性能が低下する。前述のような異なる動作の発生条件はタイミング依存であり、このような些細なタイミングやＣＰＵの動作条件による性能低下は一般的に余り好ましいものではない。
【００１６】
１つの側面では、本発明の目的は、下位キャッシュメモリに対するロード要求に対して適切なステートで要求元に応答し、演算処理装置の処理性能を向上させることにある。
【課題を解決するための手段】
【００１７】
演算処理装置の一態様は、データを保持する第１のキャッシュメモリを備え、演算処理を行うとともに要求を出力する複数の演算処理部と、第２のキャッシュメモリを有する。第２のキャッシュメモリは、複数の演算処理部が備える第１のキャッシュメモリのいずれもが保持しない対象データを要求する要求が、要求を送信した演算処理部以外の演算処理部にも対象データの保持を許容するロード要求である場合、対象データが非排他的データである旨を表示する非排他情報と対象データとを要求を送信した演算処理部に応答する。また、第２のキャッシュメモリは、複数の演算処理部が備える第１のキャッシュメモリのいずれもが保持しない対象データを要求する要求が、要求を送信した演算処理部以外の演算処理部には対象データの保持を許容しないロード要求である場合、対象データが排他的データである旨を表示する排他情報と対象データとを前記要求を送信した演算処理部に応答する。
【発明の効果】
【００１８】
発明の一態様においては、下位キャッシュメモリに対するロード要求に対して適切なステートで要求元に応答することができ、処理を削減し演算処理装置の処理性能を向上させることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施形態における演算処理装置の構成例を示す図である。
【図２】本実施形態におけるタグメモリに保持されるデータの構成例を示す図である。
【図３】本実施形態におけるヒット判定部の構成例を示す図である。
【図４】本実施形態における応答制御の例を示す図である。
【図５】本実施形態における応答制御の例を示す図である。
【図６】本実施形態における応答判定部の構成例を示す図である。
【図７Ａ】本実施形態における応答判定部の動作例を示す図である。
【図７Ｂ】本実施形態における応答判定部の動作例を示す図である。
【図７Ｃ】本実施形態における応答判定部の動作例を示す図である。
【図８】本実施形態を適用する処理の一例を示す図である。
【図９】本実施形態におけるロード要求ＬＤ（Ｓ）及びロード要求ＬＤ（Ｅ）の実装例を示す図である。
【図１０】本実施形態におけるロード要求ＬＤ（Ｓ）及びロード要求ＬＤ（Ｅ）の他の実装例を示す図である。
【図１１】本実施形態における動作の一例を示す図である。
【図１２】図１１（Ａ）に示す例の動作フローを示す図である。
【図１３】図２０に示す例の動作フローを示す図である。
【図１４】図２０に示す例の動作フローを示す図である。
【図１５】本実施形態におけるロード要求ＬＤ（Ｓ）及びロード要求ＬＤ（Ｅ）の他の実装例を示す図である。
【図１６】最初の要求元からのロード要求に対してＥステートで応答する例を示す図である。
【図１７】最初の要求元からのロード要求に対してＳステートで応答する例を示す図である。
【図１８】図１６（Ａ）及び図１７（Ａ）に示す例の動作フローを示す図である。
【図１９】最初の要求元からのロード要求に対してＥステートで応答する例を示す図である。
【図２０】最初の要求元からのロード要求に対してＥステートで応答する例を示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態を図面に基づいて説明する。
【００２１】
図１は、本発明の実施形態における演算処理装置の構成例を示す図である。本実施形態における演算処理装置は、演算部及びＬ１（Ｌｅｖｅｌ−１）キャッシュメモリ１２をそれぞれ有する複数の演算処理部としてのＣＰＵ（Central Processing Unit）コア１１（１１−０〜１１−ｎ）と、各コア１１で共有されるＬ２（Ｌｅｖｅｌ−２）キャッシュメモリ１３を有する。Ｌ２キャッシュメモリ１３は、複数の要求受信部１４、プライオリティ制御部１５、タグ制御部（パイプライン）１６、タグメモリ（ＴＡＧ−ＲＡＭ）１７、ヒット判定部１８、応答判定部１９、応答ステート発行部２０、応答データ発行部２１、スヌープ発行部２２、及びデータメモリ（ＤＡＴＡ−ＲＡＭ）２３を有する。
【００２２】
要求受信部１４（１４−０〜１４−ｎ）は、各コア１１（１１−０〜１１−ｎ）に対応して設けられ、ロード要求やストア要求等のコア１１からの要求を受信する。要求受信部１４の各々で受信された要求は、プライオリティ制御部１５に送られる。プライオリティ制御部１５は、例えばＬＲＵ（Least Recently Used）アルゴリズム等に従ってタグ制御部（パイプライン）１６に投入する要求を選択して出力する。タグ制御部（パイプライン）１６は、タグメモリ１７に対してタグ（ＴＡＧ）の読み出しを指示するとともに、ヒット判定部１８での処理によって得られたタグヒット（ＴＡＧ  ＨＩＴ）情報を受ける。また、タグ制御部（パイプライン）１６は、そのタグヒット情報及びプライオリティ制御部１５から供給された要求を応答判定部１９に出力する。
【００２３】
タグメモリ１７には、データメモリ２３に保持されているデータに係るタグデータが保持されている。また、タグデータは、各キャッシュメモリのステートに関する情報やどのコア１１のＬ１キャッシュメモリ１２がデータを保持しているかを示す情報を含む。タグメモリ１７に保持されるデータの構成例を図２に示す。各タグデータは、アドレスタグ１０１、Ｌ２キャッシュメモリのステート情報（Ｌ２−ＳＴＡＴＥ）１０２、Ｌ１キャッシュメモリのステート情報（Ｌ１−ＳＴＡＴＥ）１０３、及びＬ１キャッシュメモリのデータ所持情報（Ｌ１−ＰＲＥＳＥＮＣＥ）１０４を有する。
【００２４】
アドレスタグ１０１は、データメモリ２３に保持されているデータのアドレスに係るタグ情報である。Ｌ２キャッシュメモリのステート情報（Ｌ２−ＳＴＡＴＥ）１０２は、Ｌ２キャッシュメモリのステートを示す２ビットの情報である。本実施形態では、値“０”（00b）がＩステートを示し、値“１”（01b）がＳステートを示し、値“２”（10b）がＭステートを示し、値“３”（11b）がＥステートを示すものとする。
【００２５】
また、Ｌ１キャッシュメモリのステート情報（Ｌ１−ＳＴＡＴＥ）１０３は、Ｌ１キャッシュメモリのステートに関する情報を示す２ビットの情報である。本実施形態では、値“０”（00b）がどのコアも所持していないこと（Ｉ）を示し、値“１”（01b）が１つのコアがＳステートで所持していること（Ｓ）を示し、値“２”（10b）が２つ以上のコアがＳステートで所持していること（ＳＨＭ）を示し、値“３”（11b）が１つのコアがＥステートで所持していること（Ｅ）を示すものとする。Ｌ１キャッシュメモリのデータ所持情報（Ｌ１−ＰＲＥＳＥＮＣＥ）１０４は、どのコアがデータを所持しているかを示す情報である。本実施形態では、８個のコアに対する８ビットを有し、各ビットを１つのコアに対応させて、そのコアがデータを所持している場合には値を“１”とし、所持していない場合には値を“０”とする。したがって、Ｌ１キャッシュメモリのステート情報（Ｌ１−ＳＴＡＴＥ）１０３及びデータ所持情報（Ｌ１−ＰＲＥＳＥＮＣＥ）１０４との組み合わせにより、どのコアがデータを所持しているかを一意に表現することが可能である。
【００２６】
ヒット判定部１８は、プライオリティ制御部１５から供給された要求に基づくパイプラインアドレスとタグメモリ１７から読み出されたタグデータとを比較して、Ｌ２キャッシュメモリにパイプラインアドレスに対応するデータがあるか否かのヒット判定を行う。図３は、ヒット判定部１８の構成例を示す図である。なお、図３に示す例ではＷＡＹ０〜ＷＡＹ７までの８ウェイ構成の場合を一例として示している。
【００２７】
供給された要求に基づくパイプラインアドレスのＬ２キャッシュインデックス１１２に基づいて、タグメモリ１７から各ウェイのアドレスタグ１０１、Ｌ２キャッシュメモリのステート情報（Ｌ２−ＳＴＡＴＥ）１０２、Ｌ１キャッシュメモリのステート情報（Ｌ１−ＳＴＡＴＥ）１０３及びデータ所持情報（Ｌ１−ＰＲＥＳＥＮＣＥ）１０４が出力される。
【００２８】
各ウェイのＬ２キャッシュメモリのステート情報（Ｌ２−ＳＴＡＴＥ）１０２が論理和演算回路（ＯＲ回路）１１５により演算され、ステート情報（Ｌ２−ＳＴＡＴＥ）１０２の値が“０”（00b）以外、すなわちＩステート以外であれば出力が“１”となる。すなわち、有効なデータを所持しているウェイに対応するＯＲ回路１１５が値“１”を出力する。また、各ウェイのアドレスタグ１０１とパイプラインアドレスのＬ２キャッシュタグ１１１とがアドレス比較部１１６により比較され、それらが一致する場合に値“１”を出力する。そして、ＯＲ回路１１５の出力とアドレス比較部１１６の出力が、論理積演算回路（ＡＮＤ回路）１１７により演算され、その演算結果がウェイ情報として出力される。すなわち、キャッシュヒットとなったウェイに対応するＡＮＤ回路１１７の出力のみが値“１”となる。
【００２９】
ＯＲ回路１１８は、各ＡＮＤ回路１１７の出力を論理和演算し、その演算結果を信号ＴＡＧ  ＨＩＴとして出力する。また、ＡＮＤ回路１１９及びＯＲ回路１２０によりキャッシュヒットとなったウェイのＬ２キャッシュメモリのステート情報（Ｌ２−ＳＴＡＴＥ）１０２が選択され、ヒットしたＬ２キャッシュメモリのステート情報（Ｌ２−ＳＴＡＴＥ）として出力される。同様に、ＡＮＤ回路１２１及びＯＲ回路１２２によりキャッシュヒットとなったウェイのＬ１キャッシュメモリのステート情報（Ｌ１−ＳＴＡＴＥ）１０３が選択され、ヒットしたＬ１キャッシュメモリのステート情報（Ｌ１−ＳＴＡＴＥ）として出力される。また、ＡＮＤ回路１２３及びＯＲ回路１２４によりキャッシュヒットとなったウェイのＬ１キャッシュメモリのデータ所持情報（Ｌ１−ＰＲＥＳＥＮＣＥ）１０４が選択され、ヒットしたＬ１キャッシュメモリのデータ所持情報（Ｌ１−ＰＲＥＳＥＮＣＥ）として出力される。
【００３０】
図１に戻り、応答判定部１９は、タグ制御部（パイプライン）１６から供給されるタグヒット情報及び要求に応じて、スヌープ要求の発行や応答ステートの発行を制御する。応答判定部１９は、例えば図４に示すようにロード要求に対してＬ２キャッシュメモリがヒットした場合には、タグヒット情報に基づいて他のコアのステートを確認する。応答判定部１９は、他のコアのステートがＥステートである場合、スヌープ応答ステートがＳステートであれば要求コアの応答ステートをＳステートに更新し、スヌープ応答ステートがＭステートであれば要求コアの応答ステートをＥステートに更新する。また、応答判定部１９は、他のコアのステートがＥステートである場合、要求コアの応答ステートをＳステートに更新する。
【００３１】
また、応答判定部１９は、他のコアのステートがＩステートである場合、発行されたロード要求がＬＤ（Ｓ）であるかＬＤ（Ｅ）であるかを確認する。その結果、応答判定部１９は、発行されたロード要求が、他のコアに対象データの保持を許容するロード要求であるＬＤ（Ｓ）である場合には要求コアの応答ステートをＳステートに更新し、他のコアに対象データの保持を許容しないロード要求であるＬＤ（Ｅ）である場合には要求コアの応答ステートをＥステートに更新する。このように本実施形態では、図５に示すようにコア１１からロード要求が発行されたとき、どのコアもデータを所持していない、すなわち各コアのステートがＩステートである場合には、ロード要求の種別によって要求コアの応答ステートを更新する。つまり、どのコアもデータを所持していない状態でＬＤ（Ｓ）のロード要求が発行された場合には、要求コアの応答ステートをＳステートに更新し、ＬＤ（Ｅ）のロード要求が発行された場合には、要求コアの応答ステートをＥステートに更新する。
【００３２】
図６は、応答判定部１９の構成例を示す図である。応答判定部１９は、タグステートデコード部１３１、要求コードデコード部１３２、更新タグステート生成部１３３、応答ステート生成部１３４、及びスヌープ要求生成部１３５を有する。
【００３３】
タグステートデコード部１３１は、タグ制御部（パイプライン）１６から供給されるタグヒット情報のＬ２キャッシュメモリのステート情報（Ｌ２−ＳＴＡＴＥ）、Ｌ１キャッシュメモリのステート情報（Ｌ１−ＳＴＡＴＥ）及びデータ所持情報（Ｌ１−ＰＲＥＳＥＮＣＥ）を受信する。タグステートデコード部１３１は、それらをデコードし、デコード結果を更新タグステート生成部１３３、応答ステート生成部１３４、及びスヌープ要求生成部１３５に出力する。要求コードデコード部１３２は、タグ制御部（パイプライン）１６から供給される要求に含まれる要求種別コード（ＲＥＱ−ＣＯＤＥ）を受信してデコードし、デコード結果を更新タグステート生成部１３３、応答ステート生成部１３４、及びスヌープ要求生成部１３５に出力する。
【００３４】
更新タグステート生成部１３３は、タグステートデコード部１３１及び要求コードデコード部１３２からのデコード結果に基づいて、図７Ａ及び図７Ｂに示す動作例に従ってタグ応答の有無を判断し、タグ更新指示とタグ更新後のステートを決めてタグメモリ１７にステート更新情報として出力する。また、応答ステート生成部１３４は、タグステートデコード部１３１及び要求コードデコード部１３２からのデコード結果に基づいて、図７Ａ及び図７Ｃに示す動作例に従ってコア応答の有無を判断し、応答指示と応答ステート（データの有無を含め）を決めて出力する。また、スヌープ要求生成部１３５は、タグステートデコード部１３１及び要求コードデコード部１３２からのデコード結果に基づいて、図７Ａ及び図７Ｃに示す動作例に従ってデータを所持するコアに対するスヌープ要求の有無を判断し、スヌープ指示とスヌープ要求種を出力する。
【００３５】
応答ステート発行部２０は、応答判定部１９からの応答指示及び応答ステートに基づき、応答ステートバスを介してコア１１に応答ステートを発行する。また、応答データ発行部２１は、応答判定部１９からの応答指示及び応答ステートに基づき、ヒット判定部１８からのウェイ情報に応じてデータメモリ２３から出力されたデータを、応答データバスを介してコア１１に応答データとして発行する。スヌープ発行部２２は、応答判定部１９からのスヌープ指示及びスヌープ要求種に基づき、スヌープ要求バスを介してコア１１にスヌープ要求を発行する。
【００３６】
なお、Ｌ２キャッシュメモリ１３でキャッシュミスとなった場合には主記憶又は他ＣＰＵへ要求を発行して応答を受信し、Ｌ２キャッシュメモリ１３へ登録する動作が発生するが、それにかかわる構成要素については省略している。
【００３７】
前述したように、本実施形態ではロード要求において、Ｓステートでの応答を要求するロード要求ＬＤ（Ｓ）と、Ｅステートでの応答を要求するロード要求ＬＤ（Ｅ）とが用いられる。ロード要求ＬＤ（Ｓ）及びロード要求ＬＤ（Ｅ）は、ソフトウェアによる指示によって実現される。例えば、ソフトウェアはそのデータブロックを変更（ストア）するか否かを知っているため、コンパイラ等により変更の可能性が低いロード要求をＬＤ（Ｓ）とし、それ以外のロード要求をＬＤ（Ｅ）とすることで適切な指示を行うことができる。
【００３８】
以下、ロード要求ＬＤ（Ｓ）及びロード要求ＬＤ（Ｅ）の実装例を説明する。以下の説明では、図８に示すプログラムに、本実施形態におけるロード要求ＬＤ（Ｓ）及びロード要求ＬＤ（Ｅ）を適用する例を示す。図８に示す処理は、命令Ｐ１１によりアドレスＡのデータブロックをレジスタＲ０に格納し、命令Ｐ１２によりアドレスＢのデータブロックをレジスタＲ１に格納する。そして、命令Ｐ１３によりレジスタＲ０及びレジスタＲ１に格納された値を乗算して、結果をレジスタＲ２に格納し、命令Ｐ１４によりレジスタＲ２に格納された値をアドレスＣのデータブロックに書き込む処理を繰り返し行うループ処理である。ここで、アドレスＡは、各コア（スレッド）から共通に何度も参照されるアドレスであり、アドレスＢ及びＣは同じキャッシュラインのアドレスであって各コア（スレッド）専用に使用されるアドレスであるものとする。なお、各アドレスＡ、Ｂ、Ｃは、ループ処理を繰り返す度に更新されるものとし、各アドレスＡ、Ｂ、ＣのデータはＬ１キャッシュメモリ１２では所持してしないが、Ｌ２キャッシュメモリ１３はＥステートで所持しているものとする。
【００３９】
図９は、ロード要求ＬＤ（Ｓ）及びロード要求ＬＤ（Ｅ）を新たに定義して実装した例である。命令Ｐ２１による各コア（スレッド）から共通に何度も参照されるアドレスＡに対するロード要求ではＬＤ（Ｓ）を用い、ロード後にストアが発生する、命令Ｐ２２によるアドレスＢに対するロード要求ではＬＤ（Ｅ）を用いる。なお、命令Ｐ２３及び命令Ｐ２４は、前述した命令Ｐ１３及び命令Ｐ１４にそれぞれ対応する。このようにすることで、何度も参照されるアドレスＡに対するロード要求にはＳステートで応答されるので、スヌープ処理やキャッシュステートの排他権移譲処理等の発生を抑制し、演算処理装置の処理性能を向上させることができる。
【００４０】
図１０は、ロード要求ＬＤ（Ｓ）及びロード要求ＬＤ（Ｅ）を新たに定義して実装した他の例である。図１０に示す例は、さらにディスティネーションレジスタを指定せずに要求できるようにしたものである。命令Ｐ３１による各コア（スレッド）から共通に何度も参照されるアドレスＡに対するロード要求では、ディスティネーションレジスタが指定されていないＬＤ（Ｓ）を用いる。この命令Ｐ３１が実行されると、アドレスＡのデータブロックがＳステートでＬ１キャッシュメモリ１２に保持される。次に、命令Ｐ３２によりアドレスＡに対するロード要求が行われるが、Ｌ１キャッシュメモリ１２でキャッシュヒットするため、Ｌ１キャッシュメモリのステートは更新されず、Ｓステートのままである。その後、ロード後にストアが発生する、命令Ｐ３３によるアドレスＢに対するロード要求ではＬＤ（Ｅ）を用いる。なお、命令Ｐ３４及び命令Ｐ３５は、前述した命令Ｐ１３及び命令Ｐ１４にそれぞれ対応する。このようにすることで、何度も参照されるアドレスＡに対するロード要求にはＳステートで応答されるので、スヌープ処理やキャッシュステートの排他権移譲処理等の発生を抑制し、演算処理装置の処理性能を向上させることができる。
【００４１】
なお、前述した説明では、ロード要求ＬＤ（Ｓ）及びロード要求ＬＤ（Ｅ）を新たに設ける例を示したが、応答を指定しないロード要求ＬＤに対してはＥステートで応答するような構成では、ロード要求ＬＤ（Ｓ）だけを新たに設けるようにしても良い。
【００４２】
前述のようにストアの可能性が低いロード要求をＬＤ（Ｓ）として扱い、Ｓステートで応答するようにする。これにより、図１１（Ａ）に示すようにリプレース後であってもＳステートで応答するため、次に別のコアが同じキャッシュラインにロード要求、又はロード要求ＬＤ（Ｓ）を発行しても、最初のコアとの間でスヌープトランザクションが発生せず、すぐデータを共有することができる。また、ストアの可能性が低いロード要求以外のロード要求をＬＤ（Ｅ）として扱い、Ｅステートで応答するようにする。これにより、図１１（Ｂ）に示すように次にそのコアが同じキャッシュラインにストア要求を発行すると、そのコアはＥステートでデータを保持しているので直ぐにストア処理を実行することができ、性能低下を抑制することができる。
【００４３】
図１２は、図１１（Ａ）に示した例の動作フローを示す図であり、図１３及び図１４は、図２０に示した例の動作フローを示す図である。なお、図１２〜図１４において、Core-0 L1-pipeはコア０のＬ１キャッシュメモリのパイプライン処理を示し、Core-1 L1-pipeはコア１のＬ１キャッシュメモリのパイプライン処理を示す。また、L1-pipeはＬ２キャッシュメモリのパイプライン処理を示す。図１２に示す動作フローと図１３及び図１４に示す動作フローとの比較から明らかなように、本実施形態ではスヌープ処理やキャッシュステートの排他権移譲処理が削減され、処理性能が向上する。
【００４４】
図１５は、ロード要求ＬＤ（Ｓ）及びロード要求ＬＤ（Ｅ）の他の実装例を示す図である。図１０に示した実装例における命令Ｐ３１は、アドレスＡのデータブロックをＬ１キャッシュメモリ１２に格納するものであり、これはいわゆるＬ１キャッシュプリフェッチと同様である。したがって、Ｌ１キャッシュプリフェッチ（Ｌ１−ＰＦ）が命令セットで定義されている場合には、Ｌ１−ＰＦによってロード要求ＬＤ（Ｓ）を表現することができる。ここで、Ｌ１−ＰＦは、コアがロード処理又はストア処理を行う前にＬ２キャッシュメモリのデータをＬ１キャッシュメモリに格納することで性能向上させるために多用される。
【００４５】
Ｌ１−ＰＦには、参照用にのみプリフェッチを要求するＬ１−ＰＦ（Ｓ）とストア用にプリフェッチを要求するＬ１−ＰＦ（Ｅ）とがある。したがって、Ｌ１−ＰＦ（Ｓ）を本実施形態におけるロード要求ＬＤ（Ｓ）として使用することができ、あらためてロード要求ＬＤ（Ｓ）を定義する必要がなく、命令コードの追加変更せずに本実施形態を実現できる。なお、Ｌ１−ＰＦ（Ｓ）をロード要求ＬＤ（Ｓ）として使用する場合には、応答判定部１９の要求コードデコード部１３２が、Ｌ１−ＰＦ（Ｓ）をロード要求ＬＤ（Ｓ）として解釈するようにすれば良い。
【００４６】
図１５においては、命令Ｐ４１により各コア（スレッド）から共通に何度も参照されるアドレスＡのデータブロックをＬ１キャッシュメモリ１２にプリフェッチする。このとき、Ｌ１キャッシュメモリ１２は、アドレスＡのデータブロックをＳステートで保持する。次に、命令Ｐ４２によりアドレスＢのデータブロックをＬ１キャッシュメモリ１２にプリフェッチする。このとき、Ｌ１キャッシュメモリ１２は、アドレスＢのデータブロックをＥステートで保持する。なお、命令Ｐ４２は省略可能である。次に、命令Ｐ４３によりアドレスＡに対するロード要求が行われるが、Ｌ１キャッシュメモリ１２でキャッシュヒットするため、Ｌ１キャッシュメモリのステートは更新されず、Ｓステートのままである。その後、ロード後にストアが発生する、命令Ｐ４４によるアドレスＢに対するロード要求を発行する。なお、命令Ｐ４５及び命令Ｐ４６は、前述した命令Ｐ１３及び命令Ｐ１４にそれぞれ対応する。このようにしても、何度も参照されるアドレスＡに対するロード要求にはＳステートで応答されるので、スヌープ処理やキャッシュステートの排他権移譲処理等の発生を抑制し、演算処理装置の処理性能を向上させることができる。
【００４７】
なお、プリフェッチ要求は、Ｌ２キャッシュメモリのレイテンシを隠蔽して性能向上を図るために用いられる。したがって、Ｌ２キャッシュメモリのレイテンシを考慮し、命令Ｐ４１（命令Ｐ４２を加える場合には命令Ｐ４２）と命令Ｐ４３との間隔を数命令分（例えば２０命令程度分）あけるようにしても良い。
【００４８】
また、Ｌ１−ＰＦを用いて、ロード要求ＬＤ（Ｓ）及びロード要求ＬＤ（Ｅ）を表現する場合、ロード要求ＬＤ（Ｅ）をＬ１−ＰＦ以外のロード要求のみで実現する方法と、Ｌ１−ＰＦ（Ｅ）を加えて実現する方法がある。しかし、Ｌ１−ＰＦ（Ｅ）はストアすることを考慮してＥステートでデータ保持することが好ましいため、ロード要求ＬＤ（Ｅ）をＬ１−ＰＦ以外のロード要求のみで実現するほうが好適である。なお、Ｌ１−ＰＦはソフトウェア指定のＬ１−ＳＷ（ソフトウェア）−ＰＦを想定するのが好適だが、ハードウェアがメモリアクセスアドレスのパターンを検出して自動発生させるＬ１−ＨＷ（ハードウェア）−ＰＦであっても適応可能である。
【００４９】
本実施形態によれば、下位のキャッシュメモリに対するロード要求に対してＥステートで応答するか、Ｓステートで応答するかを適切に選択して要求元に応答することで、スヌープ処理やキャッシュステートの排他権移譲処理の発生を抑制し、演算処理装置の処理性能を向上させることができる。なお、前述した本実施形態は、ＭＥＳＩ方式のキャッシュシステムに限らず、クリーンな状態で排他権を移譲できるキャッシュシステムに対して適用可能である。例えば、ＭＯＥＳＩ方式やＭＯＷＥＳＩ方式等のキャッシュシステムに対しても適用可能である。
【００５０】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００５１】
１１  ＣＰＵコア
１２  Ｌ１（Ｌｅｖｅｌ−１）キャッシュメモリ
１３  Ｌ２（Ｌｅｖｅｌ−２）キャッシュメモリ
１４  要求受信部
１５  プライオリティ制御部
１６  タグ制御部（パイプライン）
１７  タグメモリ（ＴＡＧ−ＲＡＭ）
１８  ヒット判定部
１９  応答判定部
２０  応答ステート発行部
２１  応答データ発行部
２２  スヌープ発行部２２
２３  データメモリ（ＤＡＴＡ−ＲＡＭ）
【図１】
2014048829.tif 000003
【図２】
2014048829.tif 000004
【図３】
2014048829.tif 000005
【図４】
2014048829.tif 000006
【図５】
2014048829.tif 000007
【図６】
2014048829.tif 000008
【図７Ａ】
2014048829.tif 000009
【図７Ｂ】
2014048829.tif 000010
【図７Ｃ】
2014048829.tif 000011
【図８】
2014048829.tif 000012
【図９】
2014048829.tif 000013
【図１０】
2014048829.tif 000014
【図１１】
2014048829.tif 000015
【図１２】
2014048829.tif 000016
【図１３】
2014048829.tif 000017
【図１４】
2014048829.tif 000018
【図１５】
2014048829.tif 000019
【図１６】
2014048829.tif 000020
【図１７】
2014048829.tif 000021
【図１８】
2014048829.tif 000022
【図１９】
2014048829.tif 000023
【図２０】
2014048829.tif 000024